(58)【調査した分野】(Int.Cl.,DB名)
各々が同じメモリリソース中のデータ格納用の同じアドレスを含む複数のベースアドレスレジスタ(BAR)を含むコントローラと、前記同じメモリリソースとを含むソリッドステート装置(SSD)と、
前記SSDに含まれる又は前記SSDの外のSSDドライバと
を含み、
前記SSDドライバは、前記コントローラと組み合わせて、
書き込み動作の実行を有効にするために、前記書き込み動作は選択された第1のキャッシュ属性を有する第1のBARに割り当てられ、
前記書き込み動作の実行中、前記書き込み動作のデータ値は前記SSDに転送される前にプロセッサのローカルな特定のバッファに格納のために割り当てられ、前記特定のバッファは前記選択された第1のキャッシュ属性によって制御され、
読み出し動作の実行を有効にするために、前記読み出し動作は選択された第2のキャッシュ属性を有する第2のBARに割り当てられ、
前記読み出し動作の実行中、前記読み出し動作のデータ値は前記SSDからの転送の後に前記プロセッサのローカルな特定のキャッシュに格納のために割り当てられ、前記特定のキャッシュは前記選択された第2のキャッシュ属性によって制御されることを実施するように構成される、
メモリ動作を実行するための装置。
2次メモリリソース上で読み出し動作又は書き込み動作が実施される場合に中央処理装置(CPU)およびホストコンピューティング装置に設置されたソリッドステート装置(SSD)ドライバに結合される1次メモリリソースを含む前記ホストコンピューティング装置と、
各々が同じ2次メモリリソース中へのデータ格納用の同じアドレスを含む複数のベースアドレスレジスタ(BAR)を含むように構成され、SSDに設置されたコントローラであって、前記書き込み動作又は前記読み出し動作が実施される場合に前記SSDドライバに選択的に結合される前記コントローラと、前記同じ2次メモリリソースとを含む前記SSDと
を含み、
前記複数のBARは、読み出し動作又は書き込み動作の何れかの動作タイプに応じて選択的に前記同じ2次メモリリソースに結合され、
前記SSDドライバは、前記コントローラと組み合わせて、
読み出し動作の実行を有効にするために、前記読み出し動作は選択された第1のキャッシュ属性を有する第1のBARに割り当てられ、
前記読み出し動作の実行中、前記CPUのローカルな特定のキャッシュは、前記CPUによる使用のために前記同じ2次メモリリソースから転送されたデータ値の格納に割り当てられ、前記特定のキャッシュは前記選択された第1のキャッシュ属性によって制御され、
書き込み動作の実行を有効にするために、前記書き込み動作は選択された第2のキャッシュ属性を有する第2のBARに割り当てられ、
前記書き込み動作の実行中、前記CPUに関連付けられた特定のバッファは、前記同じ2次メモリリソースに転送されるデータ値の格納のために前記CPUによる使用に割り当てられ、前記特定のバッファは前記選択された第2のキャッシュ属性によって制御される
ことを実施するように構成され、
前記第1のBARの前記選択された第1のキャッシュ属性、および前記第2のBARの前記選択された第2のキャッシュ属性は、異なるキャッシュ属性タイプである、
メモリ動作の実行用のシステム。
前記ホストコンピューティング装置中の前記特定のキャッシュは前記SSDドライバによって、前記同じ2次メモリリソースから転送されたデータ値の格納に割り当てられ、
前記特定のキャッシュは、有効にされた第1のキャッシュ属性によって制御され、
前記有効にされた第1のキャッシュ属性は前記読み出し動作のためのライトプロテクトである、
請求項8〜9の何れか1項に記載のシステム。
ソリッドステート装置(SSD)に含まれる又は前記SSDの外のSSDドライバが前記SSDに含まれるコントローラと組み合わせてメモリ装置を動作させるための方法であって、
2次メモリリソース中のデータ格納用のアドレスを第1のベースアドレスレジスタ(BAR)にマッピングすることであって、当該マッピングされた前記2次メモリリソースは読み出し動作要求用に第1のキャッシュ属性が設定されることと、
前記第1のキャッシュ属性に設定された前記マッピングされたアドレスを含む前記第1のBARに、要求された読み出し動作を割り当てることにより、前記要求された前記読み出し動作の実行を有効にすることと、
前記有効にされた読み出し動作の実行中、前記SSDからの転送の後に、前記読み出し動作のデータ値を格納のためにホストプロセッサのローカルな特定のキャッシュに割り当てることであって、前記特定のキャッシュは有効にされた第1のキャッシュ属性によって制御されることと、
同じ2次メモリリソース中のデータ格納用のアドレスを第2のBARにマッピングすることであって、当該マッピングされた前記同じ2次メモリリソースは書き込み動作要求用に第2のキャッシュ属性が設定されることと、
前記第2のキャッシュ属性に設定された前記マッピングされたアドレスを含む前記第2のBARに、要求された書き込み動作を割り当てることにより、前記要求された前記書き込み動作の実行を有効にすることと、
前記有効にされた書き込み動作の実行中、前記SSDへの転送の前に、前記書き込み動作のデータ値を格納のために前記ホストプロセッサのローカルな特定のバッファに割り当てることであって、前記特定のバッファは有効にされた第2のキャッシュ属性によって制御されることと
を含み、
前記SSDは前記第1のBAR及び前記第2のBARを含み、
前記有効にされた第1または第2のキャッシュ属性は、選択されていないBARに割り当てられたキャッシュ属性とは異なる、
メモリ装置を動作させるための方法。
前記SSDドライバは、前記第1のキャッシュ属性としてライトプロテクトに設定された前記マッピングされたアドレスを含む前記第1のBARに、前記要求された読み出し動作を割り当て、
前記SSDドライバは、前記第2のキャッシュ属性としてライトコンバイニングに設定された前記マッピングされたアドレスを含む前記第2のBARに、前記要求された書き込み動作を割り当てる
ことをさらに含む、請求項13に記載の方法。
SSDドライバが、前記マッピングされたアドレスを含む前記第1のBARと共に使用するために、前記要求された読み出し動作のために割り当てたライトプロテクトの第1のキャッシュ属性を有効にすることと、
SSDドライバが、前記マッピングされたアドレスを含む前記第2のBARと共に使用するために、前記要求された書き込み動作のために割り当てたライトコンバイニングの第2のキャッシュ属性を有効にすること、
をさらに含み、
前記第1のBARと共に使用するための前記第1のキャッシュ属性と、前記第2のBARと共に使用するための前記第2のキャッシュ属性は異なるキャッシュ属性タイプである、
請求項13〜14のいずれか1項に記載の方法。
【発明を実施するための形態】
【0004】
<詳細な説明>
本開示は、ソリッドステート装置(SSD)のための多重アドレスレジスタに関する装置および方法を含む。例示的な装置は、各々が同じメモリリソース中のデータ格納用の同じアドレスを含む、複数のベースアドレスレジスタ(BAR)を含むコントローラ、および同じメモリリソースを含むSSDを含む。
【0005】
分散コンピューティングアーキテクチャは、分散システムの分散されたコンポーネントを相互接続するインタフェース回路の使用を含み得る。例えばPCIeは、とりわけ、例えばPCI、PCI−XおよびAGP(アクセラレーテッド・グラフィックス・ポート)バス規格を改善し得るシリアルコンピュータ拡張回路(バス)であり得る。このような改善は、より高いシステムバススループット、より低いI/Oピンカウントおよびより小さい物理的なフットプリント、バス装置に対するより良い性能スケール、より詳しいエラー検出および通知メカニズム、および/または本来のホットプラグ機能(native hot-plug function functionality)を含み得る。本明細書に記載した実施形態は分かりやすくするためにPCIeに言及する。しかしながら、当業者が理解するであろうように、他のインタフェースおよび/または相互接続システム(特にPCIなど)も考慮される。
【0006】
例えば、PCIeバスは、共有のアドレス/データ線を用いた高速シリアル相互接続バスであっても良い。従って、PCIeバスは、そのバストポロジにおいて他のPCIバスと異なり得る。例えば、PCIは、PCIホストおよび全ての装置がアドレス/データ/制御ラインの共通セットを共有する共有パラレルバスアーキテクチャを用いることができる。この共有バストポロジのため、PCIバスへのアクセスは、多重のマスタの場合に調停され得、一度に1つの方向の1つのマスタに限定され得る。それに対して、PCIeバスは、すべての装置をルートコンプレックス(もしくはホスト)に接続する別個のシリアルリンクを用いるポイントツーポイントトポロジに基づき得る。
【0007】
本明細書に記載するように、キャッシュ属性は、プロセッサによる動作の性能のために記憶媒体(1つ以上のキャッシュ)中に一時的にデータのコピーを格納するためのいくつかのキャッシングオプションのうちの1つを指す。ある実施形態では、本明細書に記載されているように、プロセッサは中央処理装置(CPU)であり得る。1つ以上のキャッシュは、データのバルク記憶装置(例えば、SSDの不揮発性メモリ中の)よりも、プロセッサにより簡単にアクセス可能であっても良くかつ/またはプロセッサのローカルなキャッシュであっても良い。キャッシュ属性の例は、本分野で知られている他のオプションのうちでもとりわけ、ライトコンバイニング(WC)、ライトプロテクト(WP)、ライトバック(WB)、ライトスルー(WT)、ライトアラウンド(WA)、ストロング・アンキャッシャブル(strong uncacheable、UC)、および/またはアンキャッシャブル(UC−)を含む。
【0008】
二次メモリ(例えば、PCIe周辺メモリ装置の)のいくつかの実施例では、1つのBARの全体の物理メモリリソース領域(SSD中の不揮発性中に設置され得る)への1対1対応のマッピングが行われ得るし、マッピングされた全体の領域には同じキャッシュ属性が割り当てられ得る。従って、SSDマッピングへのこのようなアプローチは、アドレスマッピングへの要求タイプを区別(例えば、要求タイプのうち、読み出し要求を書き込み要求から区別)しないし、場合によっては、SSDは1つのBAR中で1つのマッピング機能しかないため、キャッシングのための異なるプロパティ(キャッシュ属性)を含んでいない。このアプローチは、例えば、物理メモリリソース領域にアクセスするための、様々な要求タイプのうちで1つの要求タイプに偏らされた読み出しもしくは書き込みレイテンシに制限し得る。物理メモリリソース領域は、例えばmmap(ファイルまたは装置をメモリにマッピングできるメモリマップされたファイルI/O呼び出し)を用いてアクセスされ得る。
【0009】
さらに、SSDからアクセスされた(例えば、読み出し動作中)および/またはSSD中への格納のために送信された(例えば、書き込み動作中)データの処理スピードは、プロセッサが容易にアクセスでき、かつ/またはプロセッサのローカルなキャッシュにデータが格納されないような、アンキャッシャブル(UCおよび/またはUC−)であるデータにより削減され得る。例えば、本明細書のうちでもとりわけ
図1に関連付けて図示され記載されるインタフェース(例えばPCIe)回路108のSSD104に関連するコントローラ120は、キャッシュコヒーレンスプロトコルをサポートしなくてもよい。いくつかの例では、メモリマップされたI/Oレジスタもしくはメモリ領域は、インタフェース回路のシステムのデフォルト設定によりアンキャッシャブルにマークされ得るし、かつ/または、インタフェース回路はデータをキャッシュするように構成されなくても良い。
【0010】
他の可能性のうちでもとりわけ、CPUプロセッサのキャッシュコントローラおよび/またはダイナミックランダムアクセスメモリ(DRAM)コントローラは、CPUのプロセッサと組み合わせてキャッシュコヒーレンスプロトコルをサポートするように構成され得る。しかし、コヒーレンスプロトコルをサポートするように構成されていないSSDコントローラ(例えば、PCIe用の)は、SSDのメモリ領域をアンキャッシャブルにマークすることになり得る。SSDコントローラがCPUプロセッサのキャッシュコヒーレントプロトコルに従うことができない場合、SSDメモリアドレス領域中のデータはプロセッサのキャッシュメモリに直接キャッシュされなくなり得る。このことはSSDの性能を限定し得る。SSD中の領域へのアクセスは、例えばDRAMメモリとプロセッサのキャッシュメモリの両方に同時にコピーされるよりもむしろ、まずDRAMメモリにコピーされ、その後、キャッシュ可能なDRAMメモリ領域を経由してDRAMメモリからプロセッサのキャッシュメモリにコピーされることになり得るためである。このようなインタフェース回路は、動作(読み出し動作タイプもしくは書き込み動作タイプなど)の実行中にプロセッサが使用するデータを直接キャッシュすることができるように構成されていない可能性がある。
【0011】
本開示は、例えば、同じ(同一の)物理メモリリソースの読み出しBAR(RD−BAR)および別の書き込みBAR(WR−BAR)の使用を通じて、インタフェース回路108(例えばPCIe回路)の性能についてのこれらの潜在的な限界に対処する。例えば、物理メモリリソースのマッピングは、RD−BARに割り当てられた読み出し要求に対してキャッシュ可能(例えば、他の可能なキャッシュ属性のうちのWP)に設定され得、同時に、WR−BARに割り当てられた書き込み要求に対するマッピングが1つのキャッシュ属性(例えば、他の可能なキャッシュ属性のうちでもとりわけWC)に設定され得る。いくつかの実施形態では、RD−BARに割り当てられたキャッシュ属性は、WR−BARに割り当てられたキャッシュ属性と異なっても良い。
【0012】
データがアンキャッシャブルな実装および/または1つの要求タイプに対して1種類のキャッシュ属性に偏っている実装とは対照的に、本開示は同じ物理メモリリソースが要求タイプに応じて、例えば、WPキャッシャブルであるとして、またはWCアンキャッシャブルであるとして使用され得る。要求タイプに応じて選択可能であるキャッシュ属性は、個々に特定の要求タイプ用の特定のキャッシュ属性が割り当てられた多重(この例では2つ)のBARに、選択的に同じ物理メモリリソースを結合することで有効にされる。そのようにして、プロセッサによって容易にアクセスされ、かつ/またはプロセッサのローカルであるキャッシュ、および/または、特定の動作の実行のために選択されるキャッシュ属性に関連付けられる個々のキャッシュは、他の利点の中でも、例えば処理のために2次メモリ(例えば、NANDフラッシュメモリ)からデータを取得することに関連するこのような動作の実行のレイテンシを削減し得る。
【0013】
本明細書に記載するように、読み出し要求タイプは、物理メモリリソースからのデータの取得(例えば、処理のために)を含み得る読み出し動作タイプの実行のためのコマンドであり得る。書き込み要求タイプは、物理メモリリソースに送信されるデータの蓄積および/または転送(例えば、格納のために)を含み得る書き込み動作タイプの実行のためのコマンドであり得る。読み出し要求はWPキャッシュ属性に関連付けてキャッシュされ得る(例えば、プロセッサに関連付けられた、キャッシュのタイプのうちでもとりわけレベル1(L1)、レベル2(L2)、レベル3(L3)および/またはレベル4(L4)キャッシュを用いて)。書き込み要求はWCキャッシュ属性に関連してアンキャッシャブルであり得る(例えば、プロセッサに関連付けられたバッファを用いて)。また、例えば、より間接的なWCバッファ、DRAM、2次メモリSSDを通る動作よりもむしろ、
図3に関連付けて記載されているように、特定の2次メモリSSD(例えば、PCIe回路中の周辺メモリ装置)にそのコントローラによって指示された書き込み動作のために送信され得る。書き込み要求は、WCキャッシュ属性を用いてアンキャッシャブルなSSDメモリに実行され得る。これは、他にもある理由のうちでもとりわけ、例えば、DRAMメモリコントローラが受信するメモリ要求の数を削減し得、かつ/または、データ書き込み動作をSSDの書き込み粒度をより好ましくし得るためである。
【0014】
異なる要求タイプにより、2つ(または、より多くの)別個のキャッシュ属性が同じ物理メモリリソースに同時に割り当てられることができる。本明細書に記載するように、多重BARの実装は、物理メモリリソースへの直接のアクセスのスピードを上げることができ、かつ/または物理メモリリソースからのデータ取得および/または格納のための物理メモリリソースへのデータ送信の処理速度をあげることができる。
【0015】
以下の本開示の詳細な説明では、本明細書の一部を形成し本開示の1つ以上の実施形態をどのように実施できるかの説明として示された添付図面を参照する。これらの実施形態は、当業者がこの開示の実施形態を実施することができるように十分に詳しく記載されており、処理、電気的および/または構造的変更が行われた他の実施形態が本開示の範囲から逸脱することなく使用され得ることは理解される。本明細書で使用するように、「いくつかの(a number of)」特定のものは、そのようなものの1つ以上を称し得る(例えば、いくつかのメモリアレイは、1つ以上のメモリアレイを称しえる)。「複数の(plurality of)」の語は、そのようなものの1つより多くを称し得る。さらに、「can」および「may」は、本明細書を通して許容の意味(すなわち、可能性を有する、可能である)で使用され、必須である意味(すなわち、必須である(must))で使用されない。「含む(include)」という語とその派生語は「含むがそれに限定しない」という意味である。「結合した(coupled)」および「結合(coupling)」の語は、文脈に応じて、直接的もしくは間接的に物理的にまたはアクセスのために接続されること、ならびに、コマンドおよび/またはデータの移動(送信)を意味する。
【0016】
本明細書での数字は、最初の1つまたは複数の数字は図面番号に対応し残りの数字は図面での要素またはコンポーネントを識別するナンバリング上の慣例に従う。異なる図の間における同様の要素またはコンポーネントは同様の数字の使用によって識別され得る。例えば、110は
図1での「10」を参照する場合があり、同様の要素は
図2では210として参照される場合がある。理解されるであろうように、本明細書での様々な実施形態において示される要素は本開示のいくつかの追加の実施形態を提供できるように、追加、交換および/または除去されることが可能である。加えて、理解されるであろうように、図面で提供される要素の比率および相対的な大きさは本発明の実施形態を説明することが意図されており、限定の意味で取られるべきでない。
【0017】
図1は、本開示のいくつかの実施形態に従う、SSD用の多重アドレスレジスタのためのシステムのブロック図である。
図1に図示するように、システム100はホストコンピューティング装置102を含み得る。様々な実施形態において、ホストコンピューティング装置102は、本明細書に記載するようにいくつかのコンポーネントを含むことができる。システム100は、バス106でホストコンピューティング装置102に接続された少なくとも1つのSSD104も含み得る。様々な実施形態において、SSD104は、本明細書に記載するようにいくつかのコンポーネントを含むことができる。いくつかの実施形態では、本明細書に記載するように、ホストコンピューティング装置102およびバス106は、2次メモリを含むいくつかのメモリ装置の1つを代表する少なくとも1つのSSD104と共にインタフェース回路108(例えば、PCIe回路)として動作し得る。本明細書で使用されるように、ホストコンピューティング装置102、CPU110、CPU110中のいくつかのキャッシュ112、CPU110の外部のいくつかのキャッシュ114、不揮発性メモリ116、バッファ117、SSDドライバ118、少なくとも1つのSSD104、バス106、コントローラ120、複数のBAR122、揮発性メモリ124、および/または不揮発性メモリ126は、個別にもしくは集合的に「装置(apparatus)」としてみなされ得る。
【0018】
明確にするために、本開示に特に関連する部分の構造に重点を置くために、システム100の記載は簡略化されている。例えば、様々な実施形態では、例えば、PCIe回路の周辺メモリ装置の中に、1つ以上のホストコンピューティング装置102および/または2次メモリとして動作する1つ以上のSSD104があり得る。SSD104の物理メモリリソースは、3Dクロスポイントアレイ、DRAMアレイ、SRAMアレイ、STT RAMアレイ、PCRAMアレイ、TRAMアレイ、RRAMアレイ、NANDフラッシュアレイ、および/またはNORフラッシュアレイであり得る。例えば、様々な実施形態では、SSD104の物理メモリリソースは、組み合わせて、揮発性メモリ124および/または不揮発性メモリ126の物理メモリリソースとして動作できる。このような物理メモリリソースは、アクセス線(ワード線もしくはセレクト線として称され得る)に結合された行、およびセンス線(sense lines、データ線もしくはデジット線と称され得る)に結合された列に配置されたメモリセルを含むことができる。いくつかの実施形態では、本明細書に記載するように、物理メモリリソースの複数のメモリアレイは分割され得る。
【0019】
本明細書に記載するように、3Dクロスポイントアレイは、不揮発にデータを格納するように、且つデータのアクセスおよび/または取得のレイテンシを削減するように構成されたSSD用のメモリセルの3次元クロスポイントアレイを意味することが意図される。レイテンシは他の不揮発性メモリ(例えば、NANDフラッシュメモリ)と比較して、揮発性メモリ(例えば、DRAMメモリ)で達成される比較的短いレイテンシに近づくレベルまで、削減され得る。
【0020】
本明細書には「同じ」物理メモリリソースとして明細書で参照されることができる物理メモリリソースの1つの実施形態が説明され(例えば、
図2の228および
図3の328に関連して「SSDメモリリソース」が示され、記載され)ているが、実施形態はそのように限定されない。例えば、
図1の104に示され、
図2、
図3の参照番号に関連付けて記載されたSSDは、個々のいくつかのサブアレイに加えて、複数のメモリアレイおよび/または複数のタイプのメモリアレイを含み得る(例えば、1つ以上のDRAMアレイ、1つ以上のNANDフラッシュアレイ、および/または1つ以上の3Dクロスポイントアレイなど)。メモリアレイおよび/またはメモリアレイの種類の数に関係なく、1つの物理メモリリソースのSSDメモリリソース中に格納されたデータに対するアドレスは、同じ物理メモリリソースに選択的に結合された同じ(同一の)複数のBARに登録される。いくつかの実施例では、不揮発性メモリ126(例えば、NANDフラッシュアレイおよび/または3Dクロスポイントアレイなど)は、複数のBAR中に同じアドレスが登録され得るSSDメモリリソース中の2次メモリであり得る。例えば、いくつかの実施形態では、揮発性メモリ124(例えば、DRAM)のアドレスはBARに登録されない可能性がある。
【0021】
少なくとも1つの実施形態では、ホストコンピューティング装置102は、様々な動作(本明細書に記載した読み出し動作タイプおよび書き込み動作タイプなど)の実行を命令(要求)および/またはその実行に寄与(1つ以上のプロセッサを介して)するためのCPU110を含み得る。様々な実施形態では、本開示は、L1キャッシュに加えて、他の3つのレベル(L2、L3、および/またはL4など)の少なくとも1つのキャッシュの組み合わせを使用する。L1、L2、L3、および/またはL4キャッシュは、速いCPU110とより遅い2次メモリ(例えば周辺メモリ装置のPCIeの)の間の差を縮めるのに個々に寄与する。いくつかの実施形態では、ホストコンピューティング装置102は、CPU110の一部としていくつかの内部キャッシュ112を含むことができる。L1、L2、および/またはL3キャッシュは、(内部キャッシュ112として)CPU中に形成され得る。様々な実施形態では、L2キャッシュもしくはL3キャッシュは内部キャッシュ112の階層中のラストレベルキャッシュ(LLC)であり得る。
【0022】
代替的もしくは追加的に、ホストコンピューティング装置102はCPU110の外部にある外部キャッシュ114をいくつか含むことができる。内部および/または外部キャッシュは、本明細書に記載された読み出し動作タイプなどのいくつかの動作の実行中にCPU110によって使用されるために、SSD104の物理メモリリソースから取得したデータを少なくとも一時的に格納するためのメモリとして構成され得る。例えば、内部キャッシュ112中のL1、L2、および/またはL3キャッシュ階層は、CPU110によって頻繁にかつ/または最近アクセスされたデータを格納できる。CPU110によって要求されたデータが個々の内部キャッシュ階層中で見つからない場合、要求されたデータがキャッシュされているかを判定するために外部キャッシュ114がチェックされる。様々な実施形態では、外部キャッシュ114は1つ以上の様々なタイプのキャッシュを含むことができる。外部キャッシュ114はコンピュータの性能を改善するためのマルチレベル格納ストラテジーに寄与しうる。L4などのキャッシュはCPUの外部に(外部キャッシュ114として)、例えば、他の位置の中でも特に、オフチップおよび/またはマザーボード中に組み込まれて設置され得る。
【0023】
要求されたデータが外部キャッシュ114にキャッシュされていない場合、データを例えば不揮発性メモリ126から取得するために、メモリアクセス要求がSSDドライバ118および/またはSSD中の1つ以上のコントローラ120に送信され得る。いくつかの実施形態では、ホストコンピューティング装置102は追加メモリを含み得る。追加メモリは、例えば、他の種類の揮発性メモリのうちでもとりわけDRAMなどの揮発性メモリ116であり得る。
【0024】
いくつかの実施形態では、ホストコンピューティング装置102は、CPU110の一部としてもしくは外部に、いくつかのバッファ117を含むことができる。バッファ117は、例えば、いくつかの動作(本明細書で記載する書き込み要求タイプなどの)の実行中にCPU110から受信したデータを蓄積して、そのデータをSSD104の物理メモリリソースに転送するように構成されたメモリであり得る。
【0025】
本明細書に記載したように、ホストコンピューティング装置102は、内部キャッシュ112、外部キャッシュ114、バッファ117、および/または揮発性メモリ116を含み得る1次メモリリソースを含み得る。それに対して、SSD104は、2次メモリリソースとしてみなされ、且つ例えば、本明細書に記載したように揮発性メモリ124および/または不揮発性メモリ126の組み合わせを含むことができる同じ物理メモリリソースを含む。
【0026】
いくつかの実施形態において、システム100はSSDドライバ118を含むことができる。SSDドライバ118は、例えばSSD104上に設置された多重BAR122に関連して、少なくとも本明細書に記載した機能を実行できるように構成され得る。いくつかの実施形態では、ホストコンピューティング装置102はSSDドライバ118を含むことができるが、実施形態はそのように限定されない。例えば、SSD104用のSSDドライバ118は、SSD104自身上もしくはシステム100の他の場所に配置され得る。SSDドライバ118がホストコンピューティング装置102上に配置された実施形態では、SSDドライバ118は選択的にCPU110に結合されることができ、さらに、バス106を介して選択的にSSD104に結合されることができる。例えば、少なくとも1つのSSDドライバ118は、本明細書に記載したように多重BAR122、キャッシュ112、114、バッファ117および/またはキャッシュ属性の使用に関連した指示を提供するために、選択的に個々のSSD104(例えば、PCIe回路の周辺メモリ装置)中のコントローラ120に結合されるように構成され得る。いくつかの実施形態ではコントローラ120は、そのコントローラ120が設置されているSSD104用のBAR122を含み得る。さらに、コントローラ120は、本明細書に記載したように、個々のSSD104の同じ物理メモリリソースへのアクセスを制御するように構成され得る。
【0027】
少なくとも1つの実施形態では、本開示は以下のように実装され得る。SSD104は、SSD中の同じ物理メモリリソースのアドレス指定のための2つの別個のBAR122を含むことができる。いくつかの実施形態では、2つの別個のBAR122はSSDのコントローラ120に位置し、かつ/またはSSDのコントローラ120に関連付けられ得る(配置され得る)。様々な実施形態では、同じ物理メモリリソースは不揮発性メモリ126(例えば、他の不揮発性メモリのタイプの中でも、NANDフラッシュメモリおよび/または3Dクロスポイントメモリ)を含む可能性があり、いくつかの実施形態では揮発性メモリ124(例えば、他の揮発性メモリのタイプの中でも、DRAM)を含む可能性がある。
【0028】
システムの初期化の間、同じ物理リソース用のメモリアドレス領域は多重BAR122に登録され得る。例えば、同じ2次メモリリソース中のデータ格納用の同じアドレスは、SSDが初期化されるときにSSD104のコントローラ102中の第1のBARおよび第2のBARに登録され得る。読み出し要求のためにRD−BAR(例えば
図2に関連して記載され、222−1で示されるような)に割り当てられたキャッシュ属性は、WPキャッシャブル(例えば、CPU110に関連付けた内部キャッシュ112および/または外部キャッシュ114中に)に設定され得る。書き込み要求のためにWR−BAR(例えば
図3に関連して記載され、322−2で示されるような)に割り当てられたキャッシュ属性は、例えば、CPU110に関連付けられたライトコンバイニングバッファ(例えば、
図2中の217で図示するような)で用いるためのWCに設定され得る。
【0029】
読み出し動作が要求されると、SSDドライバ118は読み出し要求が発行されたと判定でき、読み出し動作の実行のためのコマンドをRD−BAR222−1用のアドレスを用いて中継できる。例えば、ユーザアプリケーションおよび/またはシステムプログラムを介して書き込み動作が要求された場合は、SSDドライバ118は書き込み要求が発行されたと判定でき、書き込み動作の実行のためのコマンドをWR−BAR322−2用のアドレスを用いて中継できる。
【0030】
例えばSSD104の不揮発性メモリ126から取得された読み出し動作タイプのためのデータはCPU110に関連付けられたキャッシュ(内部キャッシュ112および/または外部キャッシュ114中)にキャッシュされる可能性があるので、データの処理速度は改善され得る。例えば、処理速度は揮発性メモリ(例えば、ホストコンピューティング装置110中に設置されたDRAM116および/またはSSD104に設置されたDRAM126)からプロセッサにデータが提供されるスピードに近くなり得る。CPU110に関連付けられたWCバッファ117を用いた書き込み動作タイプに対する処理速度も同様の改善が達成され得る。
【0031】
図2は、本開示のいくつかの実施形態に従った読み出し動作パスを説明する図である。いくつかの実施形態では、
図2で説明する読み出し動作パス230は、
図1中に参照番号108で示したようなインタフェース(例えばPCIe)回路に実装され得る。従って、
図1中の参照部号と関連付けて記載したように、読み出し動作パス230の実装は、例えば、ホストコンピューティング装置202および少なくとも1つのSSD204を用いて実行され得る。
【0032】
CPU210は、読み出し動作タイプの実行のための要求231をSSDドライバ218に発行できる。SSDドライバ218は、その要求231が読み出し動作タイプの実行のためのものと判定232できるように構成される。このような判定は、同じ2次メモリリソース228中に格納されたデータ上の読み出し動作タイプの実行におけるCPU210による使用のために、特定のSSD204のコントローラ220に関連付けられたRD−BAR222−1が選択242されるように、指示と共にCPU210に中継233され得る。いくつかの実施形態では、コントローラ220に関連付けられたRD−BAR222−1は、装置SSDドライバ218によって選択され得る。
【0033】
特定のSSD204は、コントローラ220に関連付けられたRD−BAR222−1およびWR−BAR(
図2に図示せず)の両方を含むことができる。しかし、SSDドライバ218は、要求された読み出し動作を、例えば、割り当てられたキャッシュ属性としてWPキャッシャブルに設定されマップされたアドレスを含むRD−BAR222−1に割り当てる。SSDメモリリソース228の物理メモリアドレス229のマップされたアドレス244を用いて、データは同じ2次物理メモリリソースから論理パス248中に取得246され得る。本明細書で用いられているように、WPキャッシャブル属性は、CPU210などのプロセッサに関連付けてデータをキャッシュする技術を意味することを意図している。WPキャッシュ属性は、キャッシュされたデータに任意のオーダーで読み出し動作もしくはその一部が実行され得るが、そのデータに書き込み動作が行われないようにキャッシュを制御できる。
【0034】
様々な実施形態において、取得したデータはホストコンピューティング装置202に送信され、読み出し動作タイプの実行の間、少なくとも一時的に1つ以上の内部キャッシュ212(例えば、L1、L2および/またはL3キャッシュ)、CPU210の外部の1つ以上のキャッシュ214(例えば、L4キャッシュ)および/またはCPU210による使用のための1次メモリリソースの揮発性メモリ216(例えばDRAM)中に格納され得る。従って、ホストコンピューティング装置202中の1次メモリリソースの特定のメモリは、CPU210によって使用される同じ2次メモリリソースから転送されたデータ値の格納のために選択されることができる。1次メモリリソース(例えば、内部キャッシュ212および/または外部キャッシュ214)は、例えばWPのような有効にされたキャッシュ属性によって制御され得る。
【0035】
従って、様々な実施形態中で本明細書に記載するように、SSDドライバ218は、動作を実行するために、かつ要求された動作が例えば読み出し動作タイプもしくは書き込み動作タイプであるかを判定するために、CPU210からの要求を受信するように構成され得る。SSDドライバ218は、判定された動作タイプと共に適宜使用するために複数のBARからBARを適切に選択し、複数の動作タイプのうちのどれが要求されているかによって判定された特定のBARに動作を割り当てるようにさらに構成され得る。様々な実施形態では、複数のBARの各々には異なるキャッシュ属性タイプが割り当てられ得る。ここで、個々のBARの異なるキャッシュ属性タイプは要求された動作のタイプに対応し得る。
【0036】
SSDドライバ218は、判定された動作タイプの実行中に、選択されたBARによって使用されるキャッシュ属性を有効にするようにさらに構成され得る。有効にされたキャッシュ属性は選択されたBARに割り当てられる可能性があり、有効にされたキャッシュ属性は選択されていないBARに割り当てられたキャッシュ属性と異なっている可能性がある。例えば、
図2に示し関連して記載したように、第1のBAR(RD−BAR222−1)は、読み出し動作タイプのために選択される可能性があり、有効にされたキャッシュ属性はWPである可能性がある。
図3に示し関連して記載したように、第2のBAR(WR−BAR322−1)は、書き込み動作タイプのために選択される可能性があり、有効にされたキャッシュ属性はWCである可能性がある。
【0037】
このように、第1の動作は、SSDドライバ218により、第1の動作が読み出し動作タイプであることに基づいて第1のBARに選択的に割り当てられ得、第2の動作は、SSDドライバ218により、第2の動作が書き込み動作タイプであることに基づいて第2のBARに選択的に割り当てられ得る。SSDドライバ218は、読み出し動作中に第1のBARと共に使用するために読み出し動作タイプ用に選択される第1のキャッシュ属性(例えばWP)を有効にすることができ、書き込み動作中に第2のBARと共に使用するために書き込み動作タイプ用に選択される第2のキャッシュ属性(例えばWC)を有効にすることができる。第1のBARと共に使用するための第1のキャッシュ属性、および第2のBARと共に使用するための第2のキャッシュ属性は、異なるキャッシュ属性タイプであり得る。
【0038】
このように、複数のBARは、同じ2次メモリリソースに選択的に結合した2つのBARであり得る。しかし、様々な実施形態では、複数のBARは、分割された同じ2次メモリリソース中の複数のパーティションに選択的に結合した2つよりも多いBARであり得る。例えば、セキュリティ上の理由などのために、異なる機能でデータが入手可能になるようにするため、同じ2次メモリリソースは、多数のパーティション(領域)に分割され得る。このような状態では、コントローラ220に関連付けられた2つ(または2つより多く)の異なるBARは、第1のパーティションに選択的に結合され得るし、少なくとも1つのBARは少なくとも1つの他のパーティションに選択的に結合され得る。2つより多くのBARが使用される場合、いくつかの実施形態では、2つより多い異なるキャッシュ属性が割り当てられ得る。例えば、WPおよびWCの代わりもしくはそれらに加えて、WB、WT、WA、UC、および/またはUC−などのキャッシュ属性が少なくとも1つのBARに割り当てられ得る。
【0039】
図3は、本開示のいくつかの実施形態に従った書き込み動作パスを説明する図である。いくつかの実施形態では、
図3で説明する書き込み動作パス340は、
図1中に参照番号108で示したようなインタフェース(例えばPCIe)回路に実装され得る。従って、
図1中の参照部号と関連付けて記載したように、書き込み動作パス340の実装は、例えば、ホストコンピューティング装置302および少なくとも1つのSSD304を用いて実行され得る。
【0040】
CPU310は、例えば書き込み動作タイプの実行のための要求331をSSDドライバ318に発行できる。SSDドライバ318は、その要求331が書き込み動作タイプの実行のためのものと判定332できるように構成される。このような判定は、書き込み動作タイプの実行中にCPU310によって使用される同じ2次メモリリソース328に転送されるデータ値の蓄積および格納のために、ホストコンピューティング装置310のバッファ317が選択334されるような指示と共にCPU310に中継333され得る。いくつかの実施形態では、ホストコンピューティング装置302中のバッファ317は、データの転送のためにCPU310によって使用されるために、装置SSDドライバ318によって選択され得る。
【0041】
バッファ317は、有効にされたWCキャッシュ属性によって制御されるWCバッファであり得る。本明細書で使用するように、WCキャッシュ属性は、書き込みが行われるようにデータを直ちに同じ物理メモリリソースに送信する代わりに、同じ物理メモリリソースに転送するために、データが蓄積されてバーストモードで放出されることを許容する技術を意味することを意図している。例えば、可能な閾値のうちでもとりわけバッファ317のデータ収容能力、1ページのデータ、完全なデータファイルなどの閾値にデータの量(ビット)が達したとき、データはバッファ317から放出され得る。WCキャッシュ属性は、書き込み動作に関して読み出し動作が命令されるように、WCバッファを制御できる。
【0042】
バッファ317からデータが放出される前、放出中もしくは放出後に、SSDドライバ318は、そのコントローラ320により指示された書き込み動作のために、データが特定の2次メモリSSD304(例えば、PCIe回路中の周辺メモリ装置)に送信335されることを決定できる。特定のSSD304は、コントローラ320に関連付けられたWR−BAR322−1およびRD−BAR(
図3に図示せず)の両方を含むことができる。しかし、SSDドライバ318は、要求された書き込み動作を、割り当てられたキャッシュ属性としてWCに設定されマップされたアドレスを含むWR−BAR322−1に割り当てる。SSDメモリリソース328(例えば、揮発性メモリ324および/または不揮発性メモリ326)の物理メモリアドレス329のマップされたアドレス336を用いて、データは論理パス338中でバッファ317からSSDメモリリソース328の意図した物理メモリアドレス329に書き込まれ得る。
【0043】
本開示は、読み出し動作を同じSSDリソースへの書き込み動作と分離することにより、他の周辺コンポーネント・インターコネクト・システムのアプローチ(例えば、中でもPCI、PCIe、PCI−X、およびAGP)と比較して利点を提供できる。バッファおよび/またはキャッシュが例えば閾値に達して、バッファおよび/またはキャッシュ中のより多くのメモリを使用可能にするためにそのデータが送信されるときにのみデータが書き込まれ得るので、データの書き込みはシステムの性能に大きく影響しない可能性がある。さらに、書き込みデータがSSDメモリリソース328に到着したとき、データは最初にSSDの内部揮発性メモリ324(例えば、DRAMおよび/またはスタティックランダムアクセスメモリ(SRAM))書き込みバッファに配置され得るので、不揮発性メモリ326レイテンシは効果的に隠され得る。
【0044】
一方、要求されたデータが取得されて送られてくるまでCPU210の動作が遅れる可能性があるので、SSDメモリリソース228からのデータの読み出しは、システム性能により影響を与え得る。他の周辺コンポーネント・インターコネクトシステムのアプローチでは、アドレス空間用の1つのBARを書き込み動作と共有するため、書き込み動作が読み出されたデータをキャッシュ可能にすることを阻害し得るので、読み出し動作性能も遅延し得る。そのように、読み出し動作のスピードおよび/または効率の改善は、そのようなシステムの性能を引き上げる。従って、本開示は、同じSSD物理メモリリソース用の少なくとも2つのBAR(読み出し動作と書き込み動作で別個のBARが使用される)を提供することにより、別個にキャッシュ可能になるような読み出し動作を可能にすることを記載する。
【0045】
本明細書において特定の実施形態が図示され記載されてきたが、同様の結果を達成するように推定される仕組み(arrangement)は示された特定の実施形態の代用となることが可能であるということを当業者は理解するだろう。この開示は本開示のいくつかの実施形態の適合または変形を網羅することが意図されている。上記記載は説明の方法でなされ、限定の方法でなされたものではないということが理解されるべきである。上記実施形態の組み合わせおよび本明細書に具体的には記載されない他の実施形態が、上記記載を検討することで当業者に明らかになるだろう。本開示のいくつかの実施形態の範囲は上記の構造および方法が使用される他の用途を含む。従って、本開示のいくつかの実施形態の範囲は添付の特許請求の範囲およびそれら特許請求の範囲が権利を与えられる均等物の最大限の範囲を参照して決定されるべきである。
【0046】
前述の詳細な説明において、開示を効率的にする目的で、いくつかの特徴が単一の実施形態にまとめられている。開示のこの方法は本開示の開示される実施形態が各請求項で明確に記載されているものより多くの特徴を使用しなければならないという意図を反映するものとして解釈されるべきでない。むしろ、以下の特許請求の範囲が反映するように、発明の主題は単一の開示の実施形態の全ての特徴より少ないものにある。従って、以下の特許請求の範囲は、各請求項が別個の実施形態としてそれ自身存在する状態で、詳細な説明にここで組みこまれる。