(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024029007
(43)【公開日】2024-03-05
(54)【発明の名称】記憶システムをメインメモリとして使用するための方法および装置
(51)【国際特許分類】
G06F 12/0897 20160101AFI20240227BHJP
G06F 12/0893 20160101ALI20240227BHJP
G06F 12/0868 20160101ALI20240227BHJP
【FI】
G06F12/0897
G06F12/0893 100
G06F12/0868 100
【審査請求】有
【請求項の数】24
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023212857
(22)【出願日】2023-12-18
(62)【分割の表示】P 2020571708の分割
【原出願日】2019-06-18
(31)【優先権主張番号】62/686,333
(32)【優先日】2018-06-18
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.SMALLTALK
2.ERLANG
(71)【出願人】
【識別番号】520498550
【氏名又は名称】エフ・エル・シィ・テクノロジー・グループ・インコーポレイテッド
【氏名又は名称原語表記】FLC TECHNOLOGY GROUP INC.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】スタルジャ,セハト
(57)【要約】 (修正有)
【課題】プロセッサ、メインメモリ用の複数のキャッシュモジュール及び記憶ドライブを含むデータアクセスシステムを提供する。
【解決手段】FLCシステムにおいて、最終レベルキャッシュ(FLC)モジュールは、FLCコントローラ532、536及びメインメモリキャッシュを含み、メインメモリとして機能し、2つ以上のステージを含み、各ステージは、FLCコントローラおよびDRAM528、524を含む。第1のステージのFLCモジュール540が、物理アドレスを含まない場合、要求は、第2のステージのFLCモ542ジュールに回送される。第2のステージのFLCモジュールが、物理アドレスを含まない場合、要求は、記憶ドライブ78に回送され、パーティションが、メインメモリ用に予約される。第1のステージのFLCモジュールは、高速度、より低い電力で動作する一方、第2のステージのFLCは、低コストの実装である。
【選択図】
図5A
【特許請求の範囲】
【請求項1】
プロセッサと共に使用するためのデータ記憶およびアクセスシステムであって、
プロセッサキャッシュを有するプロセッサであって、前記プロセッサが、データのデータ要求を生成するように構成されている、プロセッサ、
メインメモリとして機能し、かつ前記データ要求を受信するように構成されたFLCキャッシュシステムであって、前記FLCシステムが、
第1のFLCコントローラおよび第1のメモリを有する第1のFLCモジュールであって、前記第1のFLCモジュールが、前記プロセッサからの前記データ要求を受信する、第1のFLCモジュールと、
第2のFLCコントローラおよび第2のメモリを有する第2のFLCモジュールであって、前記第2のFLCモジュールが、前記第1のFLCモジュールが前記プロセッサによって要求された前記データを有していないことに応答して、前記第1のFLCモジュールから前記データ要求を受信する、第2のFLCモジュールと、を備える、FLCキャッシュシステム、
ユーザファイル記憶部分およびメインメモリ部分を有し、前記第2のFLCモジュールが要求された前記データを有していないことに応答して前記データ要求を受信するように、構成された記憶ドライブ、を備える、システム。
【請求項2】
前記データ要求が、物理アドレスを含み、第1のFLCコントローラが、前記物理アドレスを第1の仮想アドレスに書き換えるように構成されたループアップテーブルを含む、請求項1に記載のシステム。
【請求項3】
前記第1のFLCコントローラルックアップテーブルが前記物理アドレスを含まない場合に、前記第1のFLCコントローラが、前記物理アドレスを有する前記データ要求を前記第2のFLCコントローラに回送するように構成されている、請求項2に記載のシステム。
【請求項4】
前記第2のFLCコントローラが、前記物理アドレスを第2の仮想アドレスに書き換えるように構成されたループアップテーブルを含む、請求項3に記載のシステム。
【請求項5】
前記第2のFLCコントローラルックアップテーブルが前記物理アドレスを含まない場合に、前記第2のFLCコントローラが、前記物理アドレスを有する前記データ要求を前記記憶ドライブに回送するように構成されている、請求項4に記載のシステム。
【請求項6】
前記第1のFLCモジュールが、前記第2のFLCモジュールよりも、高速であり、かつ消費電力がより少ない、請求項1に記載のシステム。
【請求項7】
前記第1のメモリが、DRAMであり、かつ第1のメモリコントローラを含み、前記第2のメモリが、DRAMであり、かつ第2のメモリコントローラを含む、請求項1に記載のシステム。
【請求項8】
前記記憶ドライブが、磁気ディスクドライバ、ソリッドステートメモリ、またはハイブリッドドライブである、請求項1に記載のシステム。
【請求項9】
前記DRAMが、シリアルDRAMである、請求項1に記載のシステム。
【請求項10】
前記第1のFLCモジュールが、前記第2のFLCモジュールの少なくとも2倍の速さである、請求項1に記載のシステム。
【請求項11】
前記第1のFLCモジュールおよび前記第2のFLCモジュールが、将来アクセスされることが予想されるアドレスに記憶されたデータの予測フェッチを実行するように構成されている、請求項1に記載のシステム。
【請求項12】
データアクセスシステムを動作させる方法であって、前記データアクセスシステムが、プロセッサキャッシュを有するプロセッサと、記憶ドライブと、第1のFLCコントローラおよび第1のDRAMを含む第1のFLCモジュールと、第2のFLCコントローラおよび第2のDRAMを含む第2のFLCモジュールと、を備え、
前記プロセッサで、物理アドレスを含む、データの要求を生成することと、
データの前記要求を前記第1のFLCモジュールに提供することと、
前記第1のFLCコントローラが前記物理アドレスを含むかどうかを判定することと、
前記第1のFLCコントローラが前記物理アドレスを含むことに応答して、前記第1のDRAMから前記データを取り出し、前記データを前記プロセッサに提供することと、
前記第1のFLCコントローラが前記物理アドレスを含まないことに応答して、データの前記要求および前記物理アドレスを前記第2のFLCモジュールに回送することと、
前記第2のFLCコントローラが前記物理アドレスを含むかどうかを判定することと、
前第2のFLCコントローラが前記物理アドレスを含むこと応答して、前記第2のDRAMから前記データを含むキャッシュラインを取り出し、前記キャッシュラインを前記第1のFLCモジュールに提供することと、を含む、方法。
【請求項13】
前記第1のFLCコントローラが前記物理アドレスを含むかどうかを判定することが、前記判定にかかる時間を低減するために、前記第1のFLCコントローラ内の、アドレスエントリを記憶するアドレスキャッシュにアクセスすることを含む、請求項12に記載の方法。
【請求項14】
前記第2のFLCコントローラが前記物理アドレスを含まないことに応答して、データの前記要求および前記物理アドレスを前記記憶ドライブに回送することをさらに含む、請求項12に記載の方法。
【請求項15】
前記記憶ドライブが、メインメモリとして予約された前記記憶ドライブの一部分から前記データを取り出し、前記データを前記第2のFLCモジュールに提供することをさらに含む、請求項14に記載の方法。
【請求項16】
前記第1のFLCコントローラが前記物理アドレスを含むこと、および前記プロセッサへの前記データの前記提供に応答して、前記データを含むキャッシュラインの最近の使用を反映するステータスレジスタを更新することをさらに含む、請求項12に記載の方法。
【請求項17】
前記第2のDRAMから前記データを取り出し、前記データを前記第1のFLCモジュールに提供することが、前記物理アドレスを前記第1のFLCコントローラに記憶すること、および前記データを前記第1のDRAMに記憶することをさらに含む、請求項12に記載の方法。
【請求項18】
前記第1のDRAMが利用可能な空間を有していない場合には、前記第1のDRAMから最も過去に使用されたデータを削除して、前記データのための空間を作成する、請求項17に記載の方法。
【請求項19】
プロセッサで使用するためのデータ記憶およびアクセスシステムであって、
プロセッサキャッシュを有するプロセッサであって、前記プロセッサが、第1のデータの第1のデータ要求と、第2のデータの第2のデータ要求と、を生成するように構成されている、プロセッサと、
メインメモリキャッシュとして機能し、かつ前記第1のデータの前記第1のデータ要求を受信するように構成された、前記プロセッサと通信する第1のFLCキャッシュシステムと、
メインメモリキャッシュとして機能し、かつ前記第2のデータの前記第2のデータ要求を受信するように構成された、前記プロセッサと通信する第2のFLCキャッシュシステムと、
ユーザファイル記憶部分およびメインメモリパーティションを有し、記憶ドライブの前記メインメモリパーティションがメインメモリとして機能するように、構成された記憶ドライブと、を備える、システム。
【請求項20】
システムバスをさらに備え、前記プロセッサが、各FLCキャッシュシステムに割り当てられたアドレスがインターリーブされるように、前記システムバスを介して前記第1のFLCキャッシュシステムおよび前記第2のFLCキャッシュシステムと通信する、請求項19に記載のシステム。
【請求項21】
前記第1のデータが、前記第1のFLCキャッシュシステムに含まれない場合には、前記第1のデータ要求が、前記記憶ドライブの前記メインメモリパーティションから前記第1のデータを取り出すために、前記記憶ドライブに送信され、
前記第2のデータが、前記第2のFLCキャッシュシステムに含まれない場合には、前記第2のデータ要求が、前記記憶ドライブの前記メインメモリパーティションから前記第1のデータを取り出すために、前記記憶ドライブに送信される、請求項19に記載のシステム。
【請求項22】
前記第1のFLCキャッシュシステムが、第1のFLCモジュールおよび第2のFLCモジュールを備え、前記第2のFLCキャッシュシステムが、第3のFLCモジュールおよび第4のFLCモジュールを備える、請求項19に記載のシステム。
【請求項23】
前記FLCモジュールの各々が、FLCコントローラおよびメモリを備える、請求項22に記載のシステム。
【請求項24】
各前記FLCモジュールが、専用かつ一意のルックアップテーブルを維持する、請求項23に記載のシステム。
【請求項25】
プロセッサと共に使用するためのデータ記憶およびアクセスシステムであって、
メインメモリキャッシュとして機能し、かつ処理デバイスからデータ要求を受信するように構成されたFLCキャッシュシステムであって、前記プロセッサデバイスが、プロセッサキャッシュを有する、FLCキャッシュシステムを備え、前記FLCシステムが、
第1のFLCコントローラおよび第1のキャッシュメモリを有する第1のFLCモジュールであって、前記第1のFLCモジュールが、前記プロセッサから前記データ要求を受信する、第1のFLCモジュール、
第2のFLCコントローラおよび第2のキャッシュメモリを有する第2のFLCモジュールであって、前記第2のFLCモジュールが、
前記第1のFLCモジュールが前記プロセッサによって要求された前記データを有していないことに応答して、前記第2のFLCモジュールが、前記第1のFLCモジュールから前記データ要求を受信することと、
前記第2のFLCモジュールが前記プロセッサによって要求された前記データを有していないことに応答して、前記第2のFLCモジュールが、前記データ要求を、メインメモリとして作用する一部分を有して構成された記憶ドライブに送信することと、のように構成されている、第2のFLCモジュール、を備える、システム。
【請求項26】
ユーザファイル記憶部分およびメインメモリ部分を有し、前記第2のFLCモジュールから応答された前記データ要求を受信し、前記要求されたデータを前記第2のFLCモジュールに提供するように、構成された記憶ドライブをさらに備える、請求項25に記載のシステム。
【請求項27】
前記記憶ドライブが、ネットワーク接続を介してアクセスされる、請求項25に記載のシステム。
【請求項28】
前記第2のFLCモジュールの容量が、前記第1のFLCモジュールの容量よりも少なくとも8倍大きい、請求項25に記載のシステム。
【請求項29】
前記第1のFLCモジュールおよび前記第2のFLCモジュールが、データをキャッシュラインに記憶し、サイズが、前記キャッシュラインが、オペレーティングシステムページサイズと同じである、請求項25に記載のシステム。
【請求項30】
前記第1のFLCコントローラルックアップテーブルが、少なくとも4KBのキャッシュラインサイズを用いたセット連想であり、前記第2のFLCコントローラルックアップテーブルが、完全連想である、請求項25に記載のシステム。
【請求項31】
前記第1のFLCモジュールが、第1のDRAMを含み、前記第2のFLCモジュールが、第2のDRAMを含み、前記第1のDRAMおよび第2のDRAMが、シングルレベルセルタイプのDRAMである、請求項25に記載のシステム。
【請求項32】
前記第1のメモリが、DRAMであり、かつ第1のメモリコントローラを含み、前記第2のメモリが、DRAMであり、かつ第2のメモリコントローラを含む、請求項31に記載のシステム。
【請求項33】
前記第1のFLCモジュールおよび前記第2のFLCモジュールが、将来アクセスされることが予想されるアドレスに記憶されたデータの予測フェッチを実行するように構成されている、請求項25に記載のシステム。
【請求項34】
第1のキャッシュメモリおよび前記第2のキャッシュメモリが、DRAMを備え、1つ以上の故障したセクションが使用からロックアウトされるように構成されている、請求項25に記載のシステム。
【請求項35】
第1のキャッシュメモリおよび前記第2のキャッシュメモリが、DRAMを備え、メモリの1つ以上のセクションが、メモリの残りのセクションの健全性チェック中に一時的に使用不能状態に置かれるように構成されている、請求項25に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
発明者
セハト スタルジャ(SEHAT SUTARDJA)
1.優先権主張。
【0002】
この出願は、2018年6月18日に出願された米国仮特許出願第62/686,333号の優先権および利益を主張し、その内容は、その全体が参照によって本明細書に組み込まれる。
【0003】
2.技術分野
本開示は、集積回路およびコンピュータシステム、より具体的にはコンピュータのメインメモリに関する。
【背景技術】
【0004】
3.背景技術
コンピューティングデバイス(サーバ、PC、携帯電話、タブレットなど)は通常、プロセッサまたはシステムオンチップ(SoC)を含む。
図1は、プロセッサまたはSoC12と、1つ以上のダイナミックランダムアクセスメモリ(DRAM)14からなるメインメモリと、を含むデバイス10の例を示す。DRAM14は、SoC12に接続されているがSoC12から分離された1つ以上の集積回路として実装できる。デバイス10はまた、SoC12のポート17に接続された1つ以上の記憶ドライブ16を含むことができる。記憶ドライブ16は、フラッシュメモリ、ソリッドステートドライブ、ハードディスクドライブ、および/またはハイブリッドドライブを含むことができる。ハイブリッドドライブは、ソリッドステートメモリを有するソリッドステートドライブと、回転する記憶媒体を有するハードディスクドライブと、を含む。
【0005】
SoC12は、1つ以上の画像処理デバイス20、システムバス22、およびメモリコントローラ24を含むことができる。画像処理デバイス20の各々は、例えば、中央プロセッサ(または中央処理装置(CPU))28を有する制御モジュール26、グラフィックプロセッサ(またはグラフィック処理装置(GPU))30、ビデオレコーダ32、カメラ画像信号プロセッサ(ISP)34、ギガビット(Gb)Ethernet(登録商標)インターフェース36などのEthernet(登録商標)インターフェース、ユニバーサルシリアルバス(USB)インターフェース38およびシリアルアドバンストテクノロジーアタッチメント(SATA)インターフェース40などのシリアルインターフェース、および周辺コンポーネント相互接続エクスプレス(PCIe)インターフェース42を含むことができる。画像処理デバイス20は、システムバス22およびメモリコントローラ24を介してDRAM14にアクセスする。DRAM14は、メインメモリとして使用される。例えば、画像処理デバイス20のうちの1つは、DRAM14のうちの1つにおける対応する物理ロケーションにアクセスするときに、メモリコントローラ24に物理アドレスを提供する。画像処理デバイス20はまた、システムバス22を介して記憶ドライブ16にアクセスすることができる。
【0006】
SoC12および/またはメモリコントローラ24は、SoC12の1つ以上のアクセスポート44を介してDRAM14に接続できる。DRAM14は、ユーザデータ、システムデータ、および/またはプログラムを記憶する。SoC12は、第1のデータを使用してプログラムを実行して、第2のデータを生成することができる。第1のデータは、プログラムの実行前にDRAM14に記憶できる。SoC12は、プログラムの実行中およ
び/または実行に続いて、第2のデータをDRAM14に記憶することができる。DRAM14は、高帯域幅インターフェースおよびビット当たりのコストが低いメモリ記憶容量を有することができ、幅広い用途を扱うことができる。
【0007】
SoC12は、レベル0(L0)キャッシュ、レベル1(L1)キャッシュ、レベル2(L2)キャッシュ、またはレベル3(L3)キャッシュのうちの1つ以上を含むことができるキャッシュメモリを含む。L0~L3キャッシュは、画像処理デバイス20の対応するものに近接してSoC12上に配置されている。示された例では、制御モジュール26は、中央プロセッサ28およびL1~L3キャッシュ50を含む。中央プロセッサ28は、L0キャッシュ52を含む。中央プロセッサ28はまた、キャッシュ50、52へのアクセスを制御することができるメモリ管理ユニット(MMU)54を含む。
【0008】
キャッシュのレベルが上がるにつれて、キャッシュのアクセス遅延および記憶容量が増加する。例えば、L1キャッシュは通常、L2キャッシュおよびL3キャッシュよりも小さい記憶容量を有する。ただし、L1キャッシュは通常、L2キャッシュおよびL3キャッシュよりも低遅延である。
【0009】
SoC12内のキャッシュは通常、スタティックランダムアクセスメモリ(SRAM)として実装されている。キャッシュが画像処理デバイス20に極近接しているため、キャッシュは、画像処理デバイス20と同じクロック周波数で動作することができる。したがって、キャッシュは、DRAM14よりも短い遅延期間を呈する。
【0010】
SoC12のキャッシュの数およびサイズは、用途に依存する。例えば、エントリレベルのハンドセット(または携帯電話)は、L3キャッシュが含まない場合があり、パーソナルコンピュータよりも小さいサイズのL1キャッシュおよびL2キャッシュを有し得る。同様に、DRAM14の各々の数およびサイズは、用途に依存する。例えば、携帯電話は現在、4~12ギガバイト(GB)のDRAMを有し、パーソナルコンピュータは現在、8~32GBのDRAMを有し、サーバは現在、32GB~512GBのDRAMを有する。一般に、DRAMチップの数が増加するにつれて、メインメモリが大規模となってコストが増加する。
【0011】
DRAMのコストに加えて、同じ量の記憶容量に対してDRAMのパッケージサイズを減少させることが、ますます困難になっている。また、デバイスに組み込まれるDRAMのサイズおよび数が増加すると、DRAMの静電容量が増加し、DRAMと関連付けられた導電素子の数および/または長さが増加し、DRAMと関連付けられたバッファリングが増加する。加えて、DRAMの静電容量が増加するにつれて、DRAMの動作周波数が減少し、DRAMの遅延期間が増加する。
【0012】
動作中、プログラムおよび/またはデータは、必要に応じて、DRAM14からSoC12のキャッシュに転送される。これらの転送は、(i)キャッシュと、(ii)対応するプロセッサおよび/または画像処理デバイスと、の間のデータ交換と比較して高遅延である。この理由で、DRAM14へのアクセスは、より大きいL3キャッシュでSOCを構築することによって、最小限に抑えられる。L3キャッシュがますます大きくなっているにもかかわらず、年々コンピューティングシステムは、ますます多くのDRAM(より大きなメインメモリ)を必要とし続けている。他のすべてが等しい場合、大きいメインメモリを有するコンピュータほど、小さいメインメモリを有するコンピュータよりも性能が良好である。今日のオペレーティングシステムでは、4GBのメインメモリを有する最新のPCは、最速かつ最良のプロセッサが備えられていても、実際は極度に性能が低い。次に、コンピュータのメインメモリサイズが経時的に増加し続ける理由について説明する。
【0013】
起動中に、プログラムが、記憶ドライブ16からDRAM14に転送できる。例えば、中央プロセッサ28は、起動中に記憶ドライブ16からDRAM14にプログラムを転送することができる。プログラムがDRAMに完全にロードされた場合にのみ、中央プロセッサ28は、DRAMに記憶された命令を実行することができる。CPUが一度に1つずつプログラムを実行する必要があり、かつCPUが新たなプログラムを立ち上げる前に前のプログラムを強制終了する間にユーザが待機しようとする場合、コンピュータシステムには、実際には極小規模のメインメモリが必要である。しかしながら、このことは、新たなプログラムを立ち上げてその場でプログラムを切り替えるときの瞬時の応答時間にもはや慣れている消費者には受け入れられない。この理由で、年々コンピュータが、常により多くのDRAMを必要とし、DRAM企業が、優先してより大きなDRAMを製造することが確立されている。
【発明の概要】
【0014】
先行技術の欠点を克服し、かつ追加の利点を提供するために、プロセッサで使用するためのデータ記憶およびアクセスシステムが開示されている。プロセッサは、データのデータ要求を生成するように構成されており、データ要求は、物理アドレスを含み得る。この実施形態では、FLCキャッシュシステムを使用してコンピュータのメインメモリを仮想化することにより、メインメモリが、フラッシュメモリなどのはるかに低コストのメモリデバイスからなり得るようになり、かつコンピュータを、以前に可能であったよりもはるかに小さい容量のDRAMを使用して構築できる。FLCシステムは、第1のFLCコントローラおよび第1のメモリを有する第1のFLCモジュールを備え、第1のFLCモジュールが、プロセッサからデータ要求を受信するようになっている。第2のFLCモジュールは、第2のFLCコントローラおよび第2のメモリを含む。第1のFLCモジュールは、第1のFLCモジュールがプロセッサによって要求されたデータを有していないことに応答して、第1のFLCモジュールからデータ要求を受信する。記憶ドライブが、提供され、ユーザファイル記憶部分/パーティションおよびメインメモリ部分/パーティションを有して構成されている。第2のFLCモジュールが、第1のFLCモジュールによって要求されたデータを有していない場合、記憶ドライブは、データ要求を受信する。2ステージFLCシステムを採用することによって、第1のFLCモジュールが、自由に、プロセッサ要求にほぼ役立ち得るようになると同時に、第2のFLCモジュールが、第1のFLCモジュールの性能に影響を与えることなく記憶ドライブからデータを出し入れすることを自由にされる。
【0015】
一実施形態では、データ要求は、物理アドレスを含み、第1のFLCコントローラは、第1のFLCコントローラが物理アドレスエントリを含む場合に、物理アドレスを第1の仮想アドレスに書き換えるように構成されたループアップテーブルを含む。第1のFLCコントローラは、第1のFLCコントローラルックアップテーブルが物理アドレスエントリを含まない場合には、物理アドレスを有するデータ要求を第2のFLCコントローラに回送するように構成されている。物理アドレスおよび物理アドレスエントリという用語は、本明細書では交換可能に使用され得る。第2のFLCコントローラは、物理アドレスを第2の仮想アドレスに書き換えるように構成されたループアップテーブルを含み得る。さらに、第2のFLCコントローラは、第2のFLCコントローラルックアップテーブルが物理アドレスを含まない場合に、物理アドレスを有するデータ要求を記憶ドライブに回送するように構成されている。
【0016】
一実施形態では、第1のFLCモジュールは、従来のDRAMメインメモリのものよりもビット当たりのコストが高くなるという犠牲を払って、第2のFLCモジュールよりも著しく速いアクセス時間、より低遅延、および消費電力がより少ないために最適化されている。ただし、第1のFLCモジュールのメモリ容量が、第2のFLCモジュールよりもはるかに小さいため、コストの増加は、実際には無視でき、より重要なことに、メインメ
モリを記憶ドライブに移動することによって、大幅なコスト削減がすでに達成されている。一構成では、第1のメモリは、カスタムメイドのDRAMであり、第1のメモリコントローラを含み、第2のメモリは、既製のコモディティDRAMからなり、第2のメモリコントローラを含む。実際のメインメモリが、物理的に記憶ドライブにあるようになったため、記憶ドライブは、適度に高速なソリッドステートメモリを使用することが好ましい。第2のFLCモジュールへのミスがあると、DRAMを使用するときに従来のメインメモリアクセスよりも1000倍遅くなり、その影響は、最小限に抑えられなければならない。この理由で、FLC完全連想の、かつ大規模なキャッシュライン技術が、提案されており、ミス率を無視できるように保持するための基本である。第1のFLCモジュールおよび第2のFLCモジュールは、これに加えて、将来アクセスされることが予想されるアドレスに記憶されたデータの予測フェッチを実行するように構成され得る。その上、FLCモジュールはまた、プロセッサまたはソフトウェアからヒント(命令)を取得して、現在記憶ドライブに在設されている最終メインメモリから第1のFLCモジュールおよび/または第2のFLCモジュールへのデータのプリフェッチを実行するように構成され得る。一実施形態では、処理デバイス上で実行中のソフトウェアは、次にどのようなデータ(コードを含む)が必要であるかを知ることができ、必要なときに必要なデータがそこにあるように、そのデータをDRAMキャッシュにプリフェッチするようにFLCシステムに命令を提供することができる。そのデータは、標準速度FLCまたは高速度FLCにキャッシュされ得る。一実施形態では、数千のキャッシュラインが、プリフェッチされる。正確なプリフェッチは、100%のヒット率につながり得る。
【0017】
また、本明細書には、データアクセスシステムを動作させる方法が、開示されている。この実施形態では、データアクセスシステムは、プロセッサキャッシュと、記憶ドライブと、第1のFLCコントローラおよび第1のDRAMを含む第1のFLCモジュールと、第2のFLCコントローラおよび第2のDRAMを含む第2のFLCモジュールと、を有するプロセッサを備える。この方法は、プロセッサで、物理アドレスを含むデータの要求を生成することと、データの要求を第1のFLCモジュールに提供することと、を含む。第1のFLCモジュールで、第1のFLCコントローラが物理アドレスエントリを含むかどうかを判定することと、第1のFLCコントローラが物理アドレスエントリを含むことに応答して、第1のDRAMからデータを取り出し、データをプロセッサに提供すること。これに代えて、第1のFLCコントローラが物理アドレスエントリを含まないことに応答して、データの要求および物理アドレスを第2のFLCモジュールに回送すること。第2のFLCモジュールにおいて、第2のFLCコントローラが物理アドレスエントリを含むかどうかを判定することと、第2のFLCコントローラが物理アドレスエントリを含むことに応答して、第2のDRAMからデータを取り出し(要求されたデータに関連する完全なキャッシュラインエントリの形式で)、要求されたキャッシュラインデータ(キャッシュラインに記憶されたデータ)を第1のFLCモジュールに提供すること。
【0018】
この方法は、第2のFLCコントローラが物理アドレスを含まないことに応答して、データの要求(要求されたデータに対応するキャッシュラインの形態で)および物理アドレスを記憶ドライブに回送することをさらに含み得る。この方法はまた、記憶ドライブが、追加のメインメモリとして予約された記憶ドライブの一部分からデータを取り出し、次いでデータ(キャッシュライン)を第2のFLCモジュールに提供することを含み得る。加えて、第1のFLCコントローラが物理アドレスを含むことと、プロセッサへのデータの提供と、に応答して、FLCコントローラは、データを含むキャッシュラインの最近の使用を反映するステータスレジスタを更新する。
【0019】
一実施形態では、第2のDRAMからデータを取り出し、データを第1のFLCモジュールに提供することは、物理アドレスを第1のFLCコントローラに記憶し、データを第1のDRAMに記憶することをさらに含む。第1のDRAMが利用可能な空き空間を有し
ていない場合には、第1のDRAMおよび第1のFLCアドレスルックアップエントリテーブルから最も過去に使用されたデータを削除して、新たなデータのための空間を作成する。さらに別の実施形態では、FLCモジュールは、DRAMの一部分を将来のプロセッサ要求のために予備的に利用可能にし得る。第1のFLCモジュールはまた、第1のFLCモジュールのDRAMの一部分を予備的にクリーンにすることができることにより、オンデマンドで、第1のFLCモジュールは、キャッシュラインに記憶されたエントリを消去して、新たなプロセッサ要求のための新たなエントリ用の空白を作成することができる。これは、ダーティキャッシュラインを第2のFLCモジュールに書き戻すことによって行われる。オペレーティングシステムからのヒント(プリフェッチ要求)により、不要になったプログラム/データをFLC DRAMからさらに消去できる。これにより、時間および電力が節減される。さらに、そのことは、使用されなくなったプログラム/データがSSDにパージされるたびに、SSDへの誤った書き込みを防止する。一実施形態では、第2のステージのDRAM(本明細書ではDRAM-SSと呼ばれる)は、第1のステージのDRAMよりも約8倍大きい。一実施形態では、第2のステージのDRAMの一部分は、第1のステージのDRAMの全部または一部分を第2のステージのDRAMに移動するための空白を作成するために、クリーン(空)として予備的に維持される。一実施形態では、第2のステージのDRAMの少なくとも10パーセントは、データのプリフェッチのために、または第1のステージのDRAM内容物を第2のステージに移動するために、クリーンまたはオンデマンドでクリーンに維持される。一実施形態では、第1のステージのDRAMのサイズの少なくとも半分は、第2のステージのDRAMで空またはクリーン可能として維持される。一実施形態では、第2のステージのDRAMは、第1のステージのDRAMよりも少なくとも4倍大きい。一実施形態では、第2のステージのDRAMは、第1のステージのDRAMよりも少なくとも8倍大きい。一実施形態では、第2のステージのDRAMは、第1のステージのDRAMよりも少なくとも16倍大きい。
【0020】
また、本明細書には、プロセッサキャッシュを有するプロセッサを含むいくつかの要素を有するデータ記憶およびアクセスシステムが、開示されている。プロセッサは、第1のデータの第1のデータ要求を生成するように構成されている。また、このシステムの一部は、プロセッサと通信する第1のFLCキャッシュシステムである。第1のFLCキャッシュシステムは、極めて高いヒット率(99.9%)の超高速メインメモリキャッシュ(第2のFLCキャッシュシステムよりも高速)として機能するように構成されており、第1のデータの第1のデータ要求を受信する。一実施形態では、第1のFLCキャッシュ(HS)は、第2のFLCキャッシュ(SS)の少なくとも2倍の速度である。一実施形態では、第1のFLCキャッシュ(HS)は、第2のFLCキャッシュ(SS)の少なくとも4倍の速度である。第1のFLCキャッシュシステムはまた、プロセッサが必要とする数万の独立したスレッドを記録するために設計されている。第2のFLCキャッシュシステムが提供され、第2のFLCキャッシュシステムは、第1のFLCと通信し、第1のFLCのセカンダリ(バックアップ)メインメモリキャッシュとして機能し、第2のデータの第2のデータ要求を受信するように構成されている。記憶ドライブは、記憶ドライブのメインメモリパーティションが実際のメインメモリとして機能するように、ユーザファイル記憶パーティションおよびメインメモリパーティションを有して構成されている。これに代えて、別個かつ専用の記憶ドライブが、実際のメインメモリとして使用されてもよい。さらに、好ましくは、記憶ドライブのメインメモリパーティションは、高信頼性用に構成されている。NANDフラッシュベースの記憶ドライブについて、メインメモリパーティションは、好ましくは、従来のトリプルまたはクアッドレベルセル(TLC/QLC)ではなく、シングルレベルセル(SLC)を有して構成されている。
【0021】
このシステムは、プロセッサがシステムバスを介して独立したFLCキャッシュモジュールの複数のスライスと通信するシステムバスをさらに含み得る。一構成では、プロセッサによって要求された第1のデータが、第1のスライスFLCキャッシュシステムに含ま
れない場合には、第1のデータ要求が、記憶ドライブに送信されて、記憶ドライブのメインメモリパーティションから第1のデータを取り出し、プロセッサによって要求されたさらに異なる第1のデータが、第2のスライスFLCキャッシュシステムに含まれない場合には、第1のデータ要求が、記憶ドライブに送信されて、記憶ドライブのメインメモリパーティションから第1のデータを取り出す。第1のスライスFLCキャッシュシステムが、第1のステージFLCモジュールおよび第2のステージFLCモジュールから構成され得、かつ第2のスライスFLCキャッシュシステムは、第1のステージFLCモジュールおよび第2のステージFLCモジュールからなり得ることが想到される。加えて、FLCモジュールの各々は、専用のFLCコントローラ、アドレスルックアップテーブル、およびメモリを含むとよい。
【0022】
本開示の適用可能なさらなる領域は、詳細な説明、特許請求の範囲、および図面から明らかになるであろう。詳細な説明および特定の例は、例示のみの目的で意図されており、開示の範囲を限定することを意図するものではない。
【0023】
本発明の他のシステム、方法、特徴、および長所は、以下の図および詳細な説明を検討すると、当業者に明らかであるか、または明らかになるであろう。そのようなすべての追加のシステム、方法、特徴、および利点は、この説明内に含まれ、本発明の範囲内にあり、付随する特許請求の範囲によって保護されることが意図されている。
【0024】
図中の構成要素は、必ずしも一定の縮尺であるとは限らず、代わりに本発明の原理を例示することに重点が置かれている。図中、同様の参照番号は、異なるビュー全体にわたって対応する部分を指す。
【図面の簡単な説明】
【0025】
【
図1】先行技術によるデバイスの機能ブロック図である。
【
図2】本開示の実施形態に従うデータアクセスシステムの機能ブロック図である。
【
図3】
図2のデータアクセスシステムのDRAMおよび記憶ドライブのエントリを例示する機能ブロック図である。
【
図4】
図2のデータアクセスシステムを動作させる方法を例示している。
【
図5A】カスケードされたFLCシステムの例示的な実施形態のブロック図である。
【
図5B】FCLコントローラの例示的な実施形態のブロック図である。
【
図6】2つ以上のFLCモジュールを有するカスケードされたFLCモジュールのブロック図である。
【
図7】
図5Aに示されているようなカスケードされたFLCモジュールの例示的な動作方法の動作フロー図である。
【
図8】2つ以上の別個のFLCモジュールを有する分割FLCモジュールシステムのブロック図である。
【
図9】
図8に示されているような分割FLCモジュールの例示的な動作方法の動作フロー図である。
【
図10】バイパス経路を有するカスケードされたFLCシステムの例示的な実施形態の例示的なブロック図である。
【
図11】
図8に示されているような分割FLCモジュールの例示的な動作方法の動作フロー図である。
【
図12】バイパス経路およびキャッシュ不能なデータ経路を有するカスケードされたFLCシステムの例示的な実施形態の例示的なブロック図である。
【
図13】
図12の実施形態の例示的な動作方法の動作フローチャートを提供する。
【発明を実施するための形態】
【0026】
図面において、参照番号は、類似および/または同一の要素を識別するために再使用され得る。
【0027】
説明
以下の例のうちの少なくともいくつかは、ファイナルレベルキャッシュ(FLC)モジュールおよび記憶ドライブを含む。FLCモジュールは、メインメモリキャッシュとして使用され、記憶ドライブは、ユーザファイルの物理的記憶装置として使用され、また、記憶ドライブの一部分は、FLCモジュールによる実際のメインメモリとしての使用のためにパーティション化される。これは、実際のメインメモリがDRAMからなる従来のコンピュータとは対照的である。データはまず、FLCモジュールのDRAMから読み取られるか、またはDRAMへ書き込まれることが試行され、物理記憶ドライブのメインメモリ部分が、FLCモジュールからのミスが起ったときに最終手段のバックアップを提供する。FLCモジュール内のルックアップテーブルは、本明細書ではコンテンツ連想メモリ(CAM)と呼ばれる。FLCモジュールのFLCコントローラは、以下に記載された様々なCAM技術を使用して、FLCモジュール内のメモリおよび記憶ドライブへのアクセスを制御する。CAM技術および他の開示された特徴は、メモリアクセスレートを最大化し、かつ電力消費を最小限に抑えながら、デバイス内のDRAMの必要な記憶能力を低減する。デバイスは、モバイルコンピューティングデバイス、デスクトップコンピュータ、サーバ、ネットワークデバイス、または無線ネットワークデバイスであり得る。デバイスの例として、コンピュータ、携帯電話、タブレット、カメラなどが挙げられるが、これらに限定されない。以下の例でのDRAMは、一般にメインメモリとして使用されずに、現在記憶ドライブの一部分にロケートされたはるかに遅いメインメモリのキャッシュとして使用される。したがって、記憶ドライブのパーティションは、メインメモリであり、DRAMは、メインメモリのキャッシュである。
【0028】
図2は、処理デバイス72、システムバス74、FLCモジュール76、および記憶ドライブ78を含むデータアクセスシステム70を示す。データアクセスシステム70は、例えば、コンピュータ、携帯電話、タブレット、サーバ、および/または他のデバイスに実装され得る。処理デバイス72は、例えば、中央プロセッサ(または中央処理装置(CPU))、グラフィックプロセッサ(またはグラフィック処理装置(GPU))、ビデオレコーダ、カメラ信号プロセッサ(ISP)、ギガビット(Gb)EthernetインターフェースなどのEthernetインターフェース、ユニバーサルシリアルバス(USB)インターフェースおよびシリアルアドバンストテクノロジーアタッチメント(SATA)インターフェースなどのシリアルインターフェース、および周辺コンポーネント相互接続エクスプレス(PCIe)インターフェースおよび/または他の画像処理デバイスを含み得る。処理デバイス72は、1つ以上のモジュールに実装され得る。一例として、処理モジュール72の第1のものが、レベル0(L0)キャッシュ、レベル1(L1)キャッシュ、レベル2(L2)キャッシュ、またはレベル3(L3)キャッシュのうちの1つ以上などのキャッシュメモリを含むものとして示されている。示された例では、第1の処理デバイスは、中央プロセッサ73およびL1~L3キャッシュ75を含み得る。中央プロセッサ73は、L0キャッシュ77を含み得る。中央プロセッサ73はまた、プロセッサキャッシュ75、77へのアクセスを制御することができるメモリ管理ユニット(MMU)79を含み得る。MMU79はまた、プロセッサキャッシュのメモリアドレストランスレータと見なされ得る。MMUは、CPU仮想アドレスをシステム物理アドレスに書き換える役割を果たす。ほとんどの最新のCPUは、物理アドレスキャッシュを使用し、つまり、L0/L1/L2/L3キャッシュは、物理アドレス指定される。CPUからのキャッシュミスも、物理アドレスを使用してシステムバスに向かう。
【0029】
処理デバイスによって実行されるものとして以下に記載されたタスクは、例えば、中央プロセッサ73および/またはMMU79によって実行され得る。
【0030】
処理デバイス72は、システムバス74を介してFLCモジュール76に接続されている。処理デバイス72は、(i)処理デバイス72とシステムバス74との間、および(ii)システムバス74と記憶ドライブ78との間のバスおよびインターフェースを介して記憶ドライブ78に接続されている。インターフェースは、例えば、Ethernetインターフェース、シリアルインターフェース、PCIeインターフェースおよび/または組み込みマルチメディアコントローラ(eMMC)インターフェースを含み得る。記憶ドライブ78は、処理デバイス72および/またはFLCコントローラ80から離れた領域の任意の箇所にロケートされ得る。記憶ドライブ78は、1つ以上のネットワーク(例えば、WLAN、インターネットネットワーク、またはリモート記憶ネットワーク(またはクラウド))を介して、処理デバイス72および/またはFLCコントローラ80と通信し得る。
【0031】
FLCモジュール76は、FLCコントローラ80、DRAMコントローラ82、およびDRAM IC84を含む。DRAM ICおよびDRAMという用語は、交換可能に使用される。DRAMとして理解するために参照されるが、任意のタイプのRAM、SRAM、DRAM、または本明細書に記載されているように振る舞うが異なる名称である任意の他のメモリを含む他のタイプのメモリが使用できる。DRAM IC84は、主に仮想および一時的な記憶装置として使用される一方、記憶ドライブ78は、物理的および永続的な記憶装置として使用される。これは、一般に、DRAM IC内のロケーションが、プロセッサモジュールによって生成される物理アドレスと静的な/固定の関係を有していないことを意味する。記憶ドライブ78は、メインメモリとして使用するために予約されたパーティションを含み得る一方、記憶ドライブの残りの部分は、ユーザファイルを記憶するための従来の記憶ドライブ空間として使用される。これは、コンピュータがDRAM内の物理的なメインメモリ空間を切らしたときに行われる先行技術のデマンドページング動作とは異なる。その場合、DRAMからのデータ/プログラムの大きなブロックが、ハードディスクドライブとの間で転送される。これにはまた、MMUおよびオペレーティングシステムによって行われる物理アドレス割り当ての割り付け解除および再割り付けが伴い、これは、オペレーティングシステム(OS)が十分な情報を有しておらず、またメインメモリに記憶されたデータ/プログラムの相対的な重要性に関する正確な情報も有していないため、遅いプロセスである。処理デバイス72は、それらが単一のメインメモリデバイスであるかのように、DRAM IC84と記憶ドライブ78のメインメモリパーティションとをアドレス指定する。ユーザは、コンピュータの動作中にRAMに記憶されたファイルを見ることができないのと同じように、記憶ドライブのメインメモリパーティションに記憶されたデータまたはファイルへのアクセス権を有しておらず、このデータまたはファイルを見ることができない。データの読み取りおよび/または書き込み中に、処理デバイス72は、アクセス要求をFLCコントローラ80に送信する。FLCコントローラ80は、DRAMコントローラ82を介してDRAM IC84にアクセスし、および/または記憶ドライブ78にアクセスする。FLCコントローラ80は、記憶ドライブに、直接(破線で示されているように)またはシステムバス74を介してアクセスし得る。プロセッサおよびプログラマの観点から、メインメモリとして指定された記憶パーティションへのアクセスが、I/O動作としてではなく、プロセッサのネイティブロードおよびストア動作を介して行われる。
【0032】
データアクセスシステム70の様々な例が、本明細書に記載されている。第1の例では、FLCモジュール76は、処理デバイス72、システムバス74、および記憶ドライブ78とは別個のSoCに実装されている。別の実施形態では、要素は、異なる集積回路上にある。第2の例では、処理デバイス72のうちの1つは、CPUが実装された処理デバイスである。処理デバイス72のうちの1つは、FLCモジュール76および記憶ドライブ78とは別個のSoCに実装され得る。別の例として、処理デバイス72およびシステ
ムバス74は、FLCモジュール76および記憶ドライブ78とは別個のSoCに実装されている。別の例では、処理デバイス72、システムバス74、およびFLCモジュール76は、記憶ドライブ78とは別個のSoCに実装されている。データアクセスシステム70の他の例は、以下に開示されている。
【0033】
DRAM IC84は、最終レベルキャッシュとして使用され得る。DRAM IC84は、様々な記憶容量を有し得る。例えば、DRAM IC84は、携帯電話アプリケーション用に1~2GBの記憶容量、パーソナルコンピュータアプリケーション用に4~8GBの記憶容量、およびサーバアプリケーション用に16~64GBの記憶容量を有し得る。
【0034】
記憶ドライブ78は、NANDフラッシュSSD、または抵抗変化型RAMおよび相変化メモリなどの他の不揮発性メモリを含み得る。記憶ドライブ78は、DRAM IC84よりも多くの記憶容量を有し得る。例えば、記憶ドライブ78は、DRAM IC84よりも8~16倍大きい記憶装置を含み得る。DRAM IC84は、高速度DRAMを含み得、記憶ドライブ78は、将来においてさえ、低タスク遅延スイッチング時間が重要である場合、超低コストおよび低速度DRAMからなり得る。最終的には、新しいクラスの大容量シリアル/シーケンシャルラージページDRAM(ランダムアクセス性が制限されている)が、最終的なメインメモリ用に構築できる。そのようなシリアルDRAMデバイスは、ダイサイズが従来のDRAMよりも少なくとも2倍小さい可能性があるため、従来のDRAMよりも少なくとも2倍の費用対効果があり得る。一実施形態では、シリアルDRAMは、1つのキャッシュライン(4KB)などの、一度に取り出せるか、または書き込める最小ブロック(チャンク)サイズを有するが、他の実施形態では、最小ブロックサイズが、確立できる。したがって、データは、任意のロケーションに対してではなく、特定のブロックとの間でのみ、読み取られるか、または書き込まれる。そのようなシリアルDRAMは、超高速度シリアルインターフェースと共にさらにパッケージ化されて、大容量のDRAMをプロセッサデバイスから遠くにマウントできるようにし、これにより、プロセッサが、過熱を心配することなく最大限の能力を発揮し得る。示されているように、記憶ドライブ78の一部分は、メインメモリとして作用するようにパーティション化され、したがって、FLC DRAM84の拡張としてFLCコントローラ80によって利用される。
【0035】
DRAM IC84に記憶されたキャッシュラインは、最も最近、最も頻繁にアクセスされた、および/または関連付けられた最高の優先度レベルを有するデータであり得る。DRAM IC84に記憶されたキャッシュラインは、固定されたキャッシュラインを含む。固定されたキャッシュラインは、DRAM IC84に常に保持されるデータを指す。固定されたキャッシュラインが長期間アクセスされていなくても、固定されたキャッシュラインは、他のキャッシュラインによって追い出せない。ただし、固定されたキャッシュラインは、更新され(書き込まれ)得る。一実施形態では、欠陥DRAMセル(およびそれに対応するキャッシュライン)は、FLCアドレスルックアップエンジンがキャッシュラインエントリをその欠陥DRAMロケーションに割り当てるのを防止するために欠陥セル(単数または複数)を有するDRAMアドレスエントリを削除することによって、FLCシステムからロックアウト(マップアウト)され得る欠陥DRAMエントリは通常、デバイスの製造中に発見される。さらに別の実施形態では、オペレーティングシステムは、マップアウト機能を使用して、DRAMの一部分を、この部分がプロセッサによって通常動作に使用できない一時的な状態にし得る。そのような機能により、オペレーティングシステムは、システムが実際のアプリケーションを実行しながら、マップアウトされたDRAMセクションの健全性を一度に1つのセクションをチェックするコマンドを発行できるようになる。弱いセルを有するDRAMのセクションが見つかった場合、オペレーティングシステムは次いで、弱いセル(単数または複数)を含むキャッシュラインを予備的に
無効にし、いわゆる「弱いキャッシュライン」を使用中止に移行させ得る。一実施形態では、FLCエンジンは、ソフトウェアでのDRAM診断の実行からプロセッサをオフロードするためのハードウェア診断機能を含むことができる。
【0036】
いくつかの例示的な実施形態では、DRAM IC84に記憶されたデータは、頻繁に使用され(例えば、所定期間にわたって所定回数よりも多くアクセスされ)ないソフトウェアアプリケーション、フォント、ソフトウェアコード、代替コード、および異なる話し言葉をサポートするためのデータなどを含まない。これは、DRAM IC84のサイズ要件を最小限に抑えることを支援することができる。非常にまれにしか使用されない、またはまったく使用されないソフトウェアコードは、FLCに関する限り、「ガベージコード」と見なすことができ、このソフトウェアコードは、起動プロセス中にFLCによってロードされないことが可能であり、例えばFLCによってパージさせるためにこのソフトウェアコードが一度だけロードされて使用され、その後にそれ以上ロードされたことがなく、したがって、DRAM IC84の空間を真に有用なデータ/プログラムのために解放する場合である。DRAM IC84のサイズが減少するにつれて、DRAM性能が、向上し、電力消費、静電容量、およびバッファリングが、減少する。静電容量およびバッファリングが減少するにつれて、遅延が、減少する。また、消費電力が小さくなることによって、対応するデバイスのバッテリ寿命が増加する。当然、システム全体の性能は、DRAM IC84が大きくなるに従って向上するが、このことは、コストおよび電力の増加の犠牲を伴う。
【0037】
FLCコントローラ80は、処理デバイス72から要求を受信することに応答してCAM手法を実行する。CAM技術は、処理デバイス72によって提供される要求の第1の物理アドレスを仮想アドレスに変換することを含む。これらの仮想アドレスは、処理デバイス72によって最初に生成され、かつ処理デバイス72によって第1の物理アドレスにマッピングされた仮想アドレスとは独立し、および異なっている。DRAMコントローラ82は、FLCコントローラ80によって生成された仮想アドレスをDRAMアドレスに変換(またはマッピング)する。DRAMアドレスがDRAM IC84内にない場合、FLCコントローラ80は、(i)記憶ドライブ78からデータをフェッチするか、または(ii)処理デバイス72のうちの対応する1つに対して、キャッシュミスが発生したことを示し(または信号伝達し)得る。記憶ドライブ78からデータをフェッチすることは、FLCコントローラ80によって受信された第1の物理アドレスを第2の物理アドレスにマッピングして、記憶ドライブ78内のデータにアクセスすることを含み得る。キャッシュミスは、物理アドレスを仮想アドレスに書き換えている間に、FLCコントローラ80によって検出され得る。
【0038】
次いで、FLCコントローラ80は、FLCコントローラ80がデータのために記憶ドライブ78にアクセスするときに、処理デバイス72のうちの1つにキャッシュミスについて信号伝達し得る。これは、第1の/元の物理アドレスを記憶アドレスにマッピングすることにより第1の(元の)物理アドレスに基づいて記憶ドライブ78内のデータにアクセスし、次いで、マッピングされた記憶アドレスに基づいて記憶ドライブ78にアクセスすることを含み得る。
【0039】
CAM手法を使用して、第1の物理アドレスをFLCコントローラの仮想アドレスにマッピングする。CAM手法は、完全連想アドレス書き換えを提供する。これは、プロセッサの物理アドレスを、FLCコントローラ80のディレクトリに記憶されたすべての仮想アドレスエントリと論理的に比較することを含み得る。セット連想アドレス書き換えは、はるかに高いミス率をもたらし、その見返りにプロセッサ性能が低下するため、回避するのがよい。初期起動後に完全連想かつ大容量のキャッシュラインアーキテクチャ(FLC)を有するDRAM IC84内にロケートされているデータのヒット率は、DRAM
IC84のサイズによっては99.9%の高さにもなり得る。一般に、DRAM IC84は、プロセッサおよび/または処理デバイスのアイドル時間を最小限に抑えながら、100%近くの中期(数分)の平均ヒット率を保証するサイズにするとよい。例えば、このことは、携帯電話アプリケーション用の1~2GBのDRAM IC、パーソナルコンピュータアプリケーション用の4~8GBのDRAM IC、およびサーバアプリケーション用の16~64GBのDRAM ICを使用して実現され得る。
【0040】
図3は、データアクセスシステム70のDRAM IC84および記憶ドライブ78のエントリを示す。DRAM IC84は、DRAMエントリ
00-XYを含み得る。記憶ドライブ78は、ドライブエントリ
00-MNを有し得る。DRAMエントリ
00-XYの各々のアドレスは、ドライブエントリ
00-MNの1つ以上のアドレスにマッピングされ得る。ただし、DRAMのサイズは、記憶デバイスのサイズよりも小さいため、記憶デバイスのごく一部しか、所与の時間にDRAMエントリにマッピングできない。真のCAMプロセスの代わりに非衝突フリールックアッププロセスが使用される場合、DRAMの一部分はまた、キャッシュ不能なデータに、ならびにFLCコントローラの完全なアドレスルックアップテーブルの記憶に使用できる。DRAMエントリ
00-XYに記憶されたデータは、他のメタデータを含み得る。
【0041】
DRAMエントリ
00-XYの各々は、例えば、4KBの記憶容量を有し得る。ドライブエントリ
00-MNの各々はまた、4KBの記憶粒度を有し得る。データが、DRAMエントリ
00-XYのうちの1つから読み取られるか、または1つに書き込まれ、DRAMエントリ
00-XYのうちの1つが、いっぱいであり、および/または要求と関連付けられたデータのすべてを有してはいない場合、ドライブエントリ
00-MNのうちの対応する1つが、アクセスされる。したがって、DRAM IC84および記憶ドライブ78は、4KBのメモリブロックに分割される。DRAM IC84内のメモリの各ブロックは、記憶ドライブ78内にそれぞれ1つ以上のメモリブロックを有し得る。メモリのこのマッピングおよび分割は、
図2の処理デバイス72に対して透過的であり得る。
【0042】
動作中、処理デバイス72のうちの1つは、データのブロック(またはデータのブロックの一部分)に対する要求信号を生成し得る。データのブロックが、DRAM IC84内にロケートされていない場合、FLCコントローラ80は、記憶ドライブ78内のデータのブロックにアクセスし得る。FLCコントローラ80が、記憶ドライブ78からのデータにアクセスしている間、FLCコントローラ80は、データを要求した処理デバイスに警告信号(バスエラー信号など)を返信し得る。警告信号は、FLCコントローラ80が、低速の記憶デバイスからデータにアクセスする過程にあり、かつその結果、システムバス74が、しばらくの間、データを処理デバイス72に転送する準備ができていないことを示し得る。バスエラー信号が使用される場合、バスエラー信号の伝送は、FLCモジュール76から処理デバイスおよび/または処理デバイス72のSoCへの「バスアボート」と呼ばれ得る。次いで、処理デバイス72は、FLC記憶トランザクションの準備ができるのを待つ間に他のタスクを実行し得る。次いで、他のプロセッサタスクは、例えば、処理デバイスのSoC内の1つ以上のキャッシュ(例えば、L0~L3キャッシュ)にすでに記憶されているデータと、FLC DRAMにすでに記憶されている他のデータと、を使用することによって続行し得る。このことはまた、プロセッサおよび/または処理デバイスのアイドル時間を最小限に抑える。
【0043】
シーケンシャルアクセスが実行される場合、FLCコントローラ80および/またはDRAMコントローラ82は、将来アクセスされることが予想されるアドレスに記憶されたデータの予測フェッチを実行し得る。このことは、起動中におよび/または起動に続いて行われ得る。FLCコントローラ80および/またはDRAMコントローラ82は、データおよび/またはソフトウェアの使用を追跡し、実行されるコードの間近の行を評価し、
メモリアクセスパターンを追跡し、およびこの情報に基づいて、アクセスされることが予想されるデータの次のアドレスを予測し得る。次のアドレスは、DRAM IC84および/または記憶ドライブ78のアドレスであり得る。例として、FLCコントローラ80および/またはDRAMコントローラ82は、データの要求を事前に受信することとは独立して、および/または受信せずに、記憶ドライブ78に記憶されたデータにアクセスし、データをDRAM IC84に転送し得る。
【0044】
上述の例は、ネットワーク内のサーバ(「クラウド」と呼ばれ得る)を介して実装され得る。サーバの各々は、FLCモジュール(例えば、FLCモジュール76)を含み、互いに通信し得る。サーバは、DRAMおよび/またはDRAM ICに格納されたメモリと、記憶ドライブを共有し得る。サーバの各々は、ネットワークを介して他のサーバ内のDRAMおよび/または記憶ドライブにアクセスし得る。FLCモジュールの各々は、
図2のFLCモジュールと同様に動作し得るが、また、クラウドを介して他のサーバの各々内のDRAMおよび/またはメモリにアクセスし得る。サーバとクラウドの間で伝送される信号は、伝送の前に暗号化され、サーバおよび/またはクラウドのネットワークデバイスに到着すると復号化され得る。サーバはまた、クラウド内のメモリを共有し、および/またはメモリにアクセスし得る。例として、サーバのうちの1つのFLCコントローラによって生成された仮想アドレスは、FLCコントローラのFLCモジュールのDRAM、サーバのうちの1つの記憶ドライブ、その他のサーバのうちの1つのFLCモジュールのDRAM、その他のサーバのうちの1つの記憶ドライブ、またはクラウドの記憶デバイスにおける物理アドレスに対応し得る。キャッシュミスが発生した場合、サーバのうちの1つのFLCコントローラおよび/または処理デバイスは、その他のFLCモジュール、記憶ドライブ、および/または記憶デバイス内のDRAMおよび/またはメモリにアクセスし得る。つまり、記憶デバイスは、クラウドまたはネットワークにアクセス可能であり得る。これにより、クラウドにロケートされた記憶ドライブ利用される場合、コンピューティングデバイスのサイズおよびコストが低減され、その結果、コンピューティングデバイスは記憶ドライブを必要としない。クラウドまたはネットワーク内の記憶ドライブをアクセス可能にすることは、記憶ドライブをDRAMキャッシュおよびプロセッサとコロケートさせるよりも遅い場合があるが、それにより、記憶ドライブが、いくつかの異なる処理デバイスおよびDRAMキャッシュ間で共有できるようになる。例示的な一環境では、自動車は、車両の周りに配置された多数のプロセッサを有し得、各々が、DRAMキャッシュシステムを有して構成され得る。各プロセッサがSSDドライブを有する代わりに、単一のSSDドライブが、処理デバイスのすべての間で共有され得る。本明細書に開示された非常に高いヒット率では、SSDドライブがアクセスされることは稀である。そのような配置には、コストの低下、小さい全体サイズ、およびメンテナンスの容易化の利点がある。
【0045】
上述の例はまた、複数のチップを有するマルチチップモジュール、スイッチ、およびプライマリFLCモジュールを有するプライマリチップを含むデータアクセスシステムに実装され得る。マルチチップモジュールは、スイッチを介してプライマリチップモジュールに接続されている。FLCモジュールの各々は、
図2のFLCモジュールと同様に動作し得るが、また、スイッチを介してその他の各チップ内のDRAMおよび/またはメモリにアクセスし得る。例として、チップのうちの1つのFLCコントローラによって生成された仮想アドレスは、FLCコントローラのFLCモジュールのDRAM、チップのうちの1つの記憶ドライブ、その他のチップのうちの1つのFLCモジュールのDRAM、その他のチップのうちの1つの記憶ドライブ、またはクラウドの記憶デバイスにおける物理アドレスに対応し得る。キャッシュミスが発生した場合、チップのうちの1つのFLCコントローラおよび/または処理デバイスは、その他のFLCモジュール、記憶ドライブ、および/または記憶デバイス内のDRAMおよび/またはメモリにアクセスし得る。
【0046】
例として、マルチチップモジュール内のセカンダリDRAMの各々と、プライマリチップ内のプライマリDRAMと、は1GBの記憶容量を有し得る。プライマリチップ内の記憶ドライブは、例えば、64GBの記憶容量を有し得る。別の例として、データアクセスシステムは、自動車で使用され得る。プライマリチップは、例えば、中央コントローラ、モジュール、プロセッサ、エンジン制御モジュール、トランスミッション制御モジュール、および/またはハイブリッド制御モジュールであり得る。プライマリチップを使用して、スロットル位置、スパークタイミング、燃料タイミング、トランスミッションギア間の遷移など、関連システムの対応する態様を制御し得る。マルチチップモジュール内のセカンダリチップは各々、照明システム、エンターテインメントシステム、空調システム、排気システム、ナビゲーションシステム、オーディオシステム、ビデオシステム、ブレーキシステム、ステアリングシステムなどの特定の車両システムと関連付けられ、対応するシステムの態様を制御するために使用され得る。
【0047】
さらに別の例として、上述の例はまた、ホスト(またはSoC)およびハイブリッドドライブを含むデータアクセスシステムに実装され得る。ホストは、中央プロセッサまたは他の処理デバイスを含み、インターフェースを介してハイブリッドドライブと通信し得る。インターフェースは、例えば、GEインターフェース、USBインターフェース、SATAインターフェース、PCIeインターフェース、または他の好適なインターフェースであり得る。ハイブリッドドライブは、第1の記憶ドライブおよび第2の記憶ドライブを含む。第1の記憶ドライブは、FLCモジュール(例えば、
図2のFLCモジュール76)を含む。FLCモジュールのFLCコントローラは、FLCモジュールおよび第2の記憶ドライブのDRAMからデータを読み取り、および/またはデータを書き込むかどうかを決定するときに、CAM手法を実行する。
【0048】
さらなる例として、上述の例はまた、SoC、第1の高速度DRAMキャッシュ(第2のDRAMキャッシュよりも高速)、第2のより大きいDRAMキャッシュ(第1のDRAMキャッシュよりも大きい)、および不揮発性メモリ(記憶ドライブ)を含む記憶システムに実装され得る。SoCは、第1のDRAM、第2のDRAM、および不揮発性メモリから分離されている。第1のDRAMは、優先度が高いデータおよび/または頻繁にアクセスされるデータを記憶し得る。データアクセス要求の高い割合が、第1のDRAMに記憶されたデータに向けられ得る。例として、データアクセス要求の99%以上が、第1のDRAMに記憶されたデータに向けられ得、データアクセス要求の残りの0.9%以下が、第2のDRAMに記憶されたデータに、およびデータの0.1未満が、不揮発性メモリ(記憶ドライブ内のメインメモリパーティションに向けられ得る。低優先度および/または低頻度でアクセスされるデータは、第2のDRAMおよび/または不揮発性メモリに記憶され得る。例として、ユーザは、第1のDRAM(高速度DRAM)に記憶された複数のWebブラウザを開くようにし得る。一方、第2のDRAMは、多数のアイドル状態のアプリケーション(アイドル状態のWebブラウザタブなど)、または低デューティサイクル動作するアプリケーションを記憶するために、はるかに高容量を有する。したがって、第2のDRAMは、コモディティDRAMを使用することによって低コストのために最適化されるのがよく、そのため、第2のDRAMは、コモディティDRAMの性能しか得られず、第2のDRAMはまた、第1のDRAMよりも長い遅延を呈する。第2のDRAMに収まらない真に古いアプリケーションのコンテンツは、その場合に不揮発性メモリに記憶される。その上、ディープハイバネーションの前に、第1のDRAMおよび/または第2のDRAMのダーティキャッシュラインの内容のみを不揮発性メモリに書き込むことができる。ディープハイバネーションからウェイクアップすると、すぐに必要な内容のみが、第2のFLC DRAMキャッシュおよび第1のFLC DRAMキャッシュに戻される。その結果、ディープハイバネーションからのウェイクアップ時間は、従来のDRAMメインメモリソリューションを使用するコンピュータよりも桁違いに速くなり得る。
【0049】
SoCは、1つ以上の制御モジュール、インターフェースモジュール、キャッシュ(またはFLC)モジュール、およびグラフィックモジュールを含み得る。キャッシュモジュールは、
図2のFLCモジュールと同様に動作し得る。制御モジュールは、インターフェースモジュールを介してキャッシュモジュールに接続されている。キャッシュモジュールは、それぞれの階層レベルに基づいて、第1のDRAM、第2のDRAM、および不揮発性メモリにアクセスするように構成されている。制御モジュールの各々は、それぞれのL1キャッシュ、L2キャッシュ、およびL3キャッシュを含み得る。制御モジュールの各々はまた、L4キャッシュまたは他の高レベルキャッシュなどの、1つ以上の追加のキャッシュを含み得る。SoCと第1のDRAMとの間に多くの信号線(または導電要素)が存在し得る。これにより、SoCと第1のDRAMとの間でデータをすばやくパラレルおよび/またはシリアル転送することができる。SoCと第1のDRAMとの間のデータ転送は、(i)SoCと第2のDRAMとの間、および(ii)SoCと不揮発性メモリとの間のデータ転送よりも速い。
【0050】
第1のDRAMは、L3キャッシュ、L4キャッシュ、および/または最高レベルキャッシュと同じかそれよりも高い階層レベルを有する第1の部分を有し得る。第1のDRAMの第2の部分は、第2のDRAMおよび/または不揮発性メモリと同じかまたはそれよりも低い階層レベルを有し得る。第2のDRAMは、第1のDRAMよりも高い階層レベルを有し得る。不揮発性メモリは、第2のDRAMと同じかそれよりも高い階層レベルを有し得る。制御モジュールは、例えば、キャッシングの必要性に基づいて、第1のDRAM、第2のDRAM、および/または不揮発性メモリの各々の部分またはすべての階層レベルを変更し得る。
【0051】
制御モジュール、インターフェースモジュールに接続されたグラフィックモジュール、および/またはインターフェースモジュールに接続された他のデバイス(SoCの内部または外部)は、要求信号をキャッシュモジュールに送信して、データを第1のDRAM、第2のDRAM、および/または不揮発性メモリに記憶し、および/またはそれら内のデータにアクセスし得る。キャッシュモジュールは、第1のDRAM、第2のDRAM、および不揮発性メモリへのアクセスを制御し得る。例として、制御モジュール、グラフィックモジュール、および/または、インターフェースモジュールに接続された他のデバイスは、SoCに接続されたDRAMの数および/またはサイズを認識しない場合がある。
【0052】
キャッシュモジュールは、制御モジュール、グラフィックモジュール、および/または、インターフェースモジュールに接続された他のデバイスから受信された第1のプロセッサの物理アドレスおよび/または要求を、第1のDRAMおよび第2のDRAM、および/または不揮発性メモリの記憶アドレスの仮想アドレスに変換し得る。キャッシュモジュールは、第1のプロセッサの物理アドレスを第1のDRAMおよび第2のDRAMの仮想アドレスに変換するため、および/または第1のプロセッサの物理アドレスを記憶アドレスに変換するための1つ以上のルックアップテーブル(例えば、完全セット連想ルックアップテーブル)を記憶し得る。その結果、キャッシュモジュールと、第1のDRAM、第2のDRAM、および不揮発性メモリ(記憶ドライブのメインメモリパーティション)のうちの1つ以上と、が制御モジュール、グラフィックモジュール、および/または、インターフェースモジュールに接続された他のデバイスに対して単一のメモリ(メインメモリ)として動作し得る。グラフィックモジュールは、制御モジュールおよび/またはSoCから、ディスプレイおよび/または他のビデオデバイスへのビデオデータの出力を制御し得る。
【0053】
制御モジュールは、(i)キャッシュモジュールと、(ii)L1キャッシュ、L2キャッシュ、およびL3キャッシュと、の間で、データ、データセット、プログラム、および/またはそれらの部分をスワップ(または転送)し得る。キャッシュモジュールは、第
1のDRAM、第2のDRAM、および不揮発性メモリのうちの2つ以上の間で、データ、データセット、プログラム、および/またはそれらの部分をスワップ(または転送)し得る。このことは、制御モジュールとは独立して、および/または制御モジュールから転送を実行するための制御信号を受信せずに実行され得る。第1のDRAM、第2のDRAM、および不揮発性メモリのうちの1つ以上におけるデータ、データセット、プログラム、および/またはそれらの部分の記憶ロケーションは、対応する優先度レベル、使用の頻度、アクセスの頻度、および/または、データ、データセット、プログラム、および/またはそれらの部分と関連付けられた他のパラメータに基づき得る。データ、データセット、プログラム、および/またはそれらの部分の転送は、データのブロックを転送することを含み得る。データのブロックの各々は、所定のサイズを有し得る。例として、第2のDRAMから第1のDRAMへのデータのスワップは、複数の転送イベントを含み得、各転送イベントは、データのブロック(例えば、4KBのデータ)を転送することを含む。
【0054】
最良の性能のために、第1のDRAMのキャッシュモジュールは、大きいキャッシュラインサイズに対して完全連想でなければならない(FLCキャッシュソリューション)。ただし、はるかに高いミス率を許容できるアプリケーションについて、これに代えて、セット連想アーキテクチャが、第1レベルのDRAMキャッシュのみに使用され得る。しかし、それでも、キャッシュコントローラエントリテーブルの数を低減するために、第1のDRAMのキャッシュモジュールは、依然として大きいキャッシュラインサイズを有する。第2レベルのDRAMキャッシュに関しては、完全連想かつ大容量のキャッシュラインキャッシュが、使用され、それは、何か他のものでは不揮発性メインメモリの寿命が縮め得るためである。
【0055】
第1のDRAMは、第1の所定の量の記憶容量(例えば、0.25GB、0.5GB、1GB、4GB、または8GB)を有し得る。0.5GBの第1のDRAMは、通常のL2キャッシュよりも512倍大きい。第2のDRAMは、第2の所定の量の記憶容量(例えば、非サーバベースのシステムについては2~8GB以上、または16~64GB以上のサーバベースのシステム)を有し得る。不揮発性メモリは、第3の所定の量の記憶容量(例えば、16~256GB以上)を有し得る。不揮発性メモリとして、フラッシュメモリまたは磁気抵抗ランダムアクセスメモリ(MRAM)などのソリッドステートメモリ、および/または回転磁気媒体が挙げられ得る。不揮発性メモリとして、SSDおよびHDDが挙げられ得る。記憶システムは、第2のDRAMおよび不揮発性メモリ(記憶ドライブのメインメモリパーティション)を有するが、第2のDRAMおよび不揮発性メモリのいずれも記憶システムに含まれないことが可能である。
【0056】
さらなる例として、上述の例はまた、SoCおよびDRAM ICを含む記憶システムに実装され得る。SoCは、リングバスを介してDRAM ICにアクセスする複数の制御モジュール(またはプロセッサ)を含み得る。リングバスは、アクセス遅延を最小限に抑える双方向バスであり得る。コストが性能よりも重要である場合、リングバスは、単方向バスであり得る。中間デバイスは、制御モジュールとリングバスとの間、および/またはリングバスとDRAM ICとの間にロケートされ得る。例えば、上述のキャッシュモジュールは、制御モジュールとリングバスとの間、またはリングバスとDRAM ICとの間にロケートされ得る。
【0057】
制御モジュールは、DRAM ICを共有し、および/またはDRAM ICの指定された部分を有し得る。例えば、DRAM ICの第1の部分は、第1の制御モジュールのキャッシュとして割り付けられ得る。DRAM ICの第2の部分は、第2の制御モジュールのキャッシュとして割り付けられ得る。DRAM ICの第3の部分は、第3の制御モジュールのキャッシュとして割り付けられ得る。DRAM ICの第4の部分は、キャッシュとして割り付けられないことが可能である。
【0058】
さらなる例として、上述の例はまた、サーバシステムに実装され得る。サーバシステムは、記憶システムと呼ばれ、複数のサーバを含み得る。サーバは、ネットワーク(またはクラウド)を介して互いに通信するそれぞれの記憶システムを含む。記憶システムのうちの1つ以上が、クラウドにロケートされ得る。記憶システムの各々は、それぞれのSoCを含み得る。
【0059】
SoCは、それぞれ、第1のDRAM、第2のDRAM、ソリッドステート不揮発性メモリ、不揮発性メモリ、およびI/Oポートを有し得る。I/Oポートは、周辺コンポーネント相互接続エクスプレス(PCIe)チャネルなどのそれぞれのI/Oチャネル、および周辺コンポーネント相互接続エクスプレス(PCIe)チャネルなどのそれぞれのネットワークインターフェースを介してクラウドと通信し得る。I/Oポート、I/Oチャネル、およびネットワークインターフェースは、Ethernetポート、チャネル、およびネットワークインターフェースであり、所定の速度(例えば、1ギガビット/秒(Gb/s)、10Gb/s、50Gb/sなど)でデータを転送し得る。ネットワークインターフェースのうちのいくつかは、クラウドにロケートされ得る。複数の記憶システムの接続により、低コストの、分散型の、かつスケーラブルなサーバシステムが提供される。開示された記憶システムおよび/またはサーバシステムのうちの複数は、互いに通信し、ネットワーク(またはクラウド)に含まれ得る。
【0060】
ソリッドステート不揮発性メモリは各々、例えば、NANDフラッシュメモリおよび/または他のソリッドステートメモリを含み得る。不揮発性メモリは各々、ソリッドステートメモリおよび/または回転磁気媒体を含み得る。不揮発性メモリは各々、SSDおよび/またはHDDを含み得る。
【0061】
サーバシステムのアーキテクチャは、DRAMをキャッシュとして提供する。DRAMは、それぞれのSoCのL4キャッシュおよび/または最高レベルキャッシュとして割り付けられ、高帯域幅および大きな記憶容量を有する。スタック型DRAMとして、例えば、DDR3メモリ、DDR4メモリ、低電力ダブルデータレートタイプ4(LPDDR4)メモリ、ワイドI/O2メモリ、HMCメモリ、および/または他の好適なDRAMが挙げられ得る。SoCの各々は、1つ以上の制御モジュールを有し得る。制御モジュールは、それぞれのリングバスを介して対応するDRAMと通信する。リングバスは、双方向バスであり得る。これにより、制御モジュールと対応するDRAMとの間に高帯域幅および最小の遅延が提供される。
【0062】
制御モジュールの各々は、同じまたは異なるSoC内の制御モジュール、DRAMのうちのいずれか、ソリッドステート不揮発性メモリのいずれか、および/または不揮発性メモリのいずれかに記憶されたデータおよび/またはプログラムにアクセスし得る。
【0063】
SoCおよび/またはSoCのポートは、媒体アクセスコントローラ(MAC)アドレスを有し得る。SoCの制御モジュール(またはプロセッサ)は、それぞれのプロセッサクラスタアドレスを有し得る。制御モジュールの各々は、対応するMACアドレスおよびプロセッサクラスタアドレスを使用して、同じSoC内または別のSoC内の他の制御モジュールにアクセスし得る。SoCの制御モジュールの各々は、DRAMにアクセスし得る。第1のSoCの制御モジュールは、第2のSoCのMACアドレスと第2のSoC内の第2の制御モジュールのプロセッサクラスタアドレスとを有する要求信号を送信することによって、第2のSoCに接続されたDRAMに記憶されたデータおよび/またはプログラムを要求し得る。
【0064】
SoCおよび/またはSoC内の制御モジュールの各々は、1つ以上のアドレス書き換
えテーブルを記憶し得る。アドレス変換テーブルは、SoCのMACアドレス、制御モジュールのプロセッサクラスタアドレス、DRAM内のメモリセル、ソリッドステート不揮発性メモリ、および不揮発性メモリのプロセッサ物理アドレス、および/またはDRAM内のメモリセル、ソリッドステート不揮発性メモリ、および不揮発性メモリの物理ブロックアドレスの書き換えを含み、および/または提供し得る。一実施形態では、DRAMコントローラは、仮想アドレスを形成するDRAM行および列アドレスビットを生成する。
【0065】
一例として、データおよびプログラムは、ソリッドステート不揮発性メモリおよび/または不揮発性メモリに記憶され得る。データおよびプログラムおよび/またはそれらの部分は、ネットワークを介してSoCおよび制御モジュールに配信され得る。制御モジュールによる実行に必要なプログラムおよび/またはデータは、DRAM、ソリッドステート不揮発性メモリ、および/または、制御モジュールがロケートされたSoCの不揮発性メモリにローカルに記憶され得る。次いで、制御モジュールは、DRAM、ソリッドステート不揮発性メモリ、および/または不揮発性メモリから制御モジュール内のキャッシュに対して、実行に必要なプログラムおよび/またはデータにアクセスし、これらを転送し得る。SoCとネットワークとの間および/またはSoC間の通信は、無線通信を含み得る。
【0066】
さらなる例として、上述の例はまた、SoCを含むサーバシステムに実装され得る。SoCのうちのいくつかは、それぞれのサーバに組み込まれ得、サーバSoCと呼ばれ得る。SoCのうちのいくつか(コンパニオンSoCと呼ばれる)は、第1のSoCのサーバに組み込まれ得るか、または第1のSoCのサーバから分離され得る。サーバSoCはそれぞれ、制御モジュールのクラスタ(例えば、中央処理モジュールなど)、クラスタ内リングバス、FLCモジュール、メモリ制御モジュール、FLCリングバス、および1つ以上のホッピングバスを含む。ホッピングバスは、(i)チップ間バスメンバおよび対応するポートを介してサーバSoCとコンパニオンSoCとの間で、および(ii)コンパニオンSoCを通って、延在する。ホッピングバスは、ホッピングバスストップ、アダプタ、または、1つ以上のSoCのノードおよび対応するポート、との間で延在するバスを指し得る。ホッピングバスは、ホッピングバスストップおよび/または1つ以上のSoCを通って延在し得る。ホッピングバスストップとの間のデータの単一の転送は、シングルホップと呼ばれ得る。マルチホップは、伝送デバイスと受信デバイスとの間でデータを転送するときに実行され得る。データは、データが宛先に到達するまで、各クロックサイクルでバスストップ間を移動し得る。本明細書に開示された各バスストップは、モジュールとして実装され、クロック信号に基づいてデバイス間でデータを転送するためのロジックを含み得る。また、本明細書に開示された各バスは、データのシリアルおよび/またはパラレル伝送のための任意の数のチャネルを有し得る。
【0067】
制御モジュールのクラスタの各々は、クラスタ内リングバスのうちの対応する1つを有する。クラスタ内リングバスは、双方向であり、クラスタの各々内の制御モジュール間の通信を提供する。クラスタ内リングバスは、クラスタ内リングバス上で伝送されるデータ信号に制御モジュールがアクセスするためのリングバスストップを有し得る。リングバスストップは、信号リピータとして、および/またはアクセスノードとして機能し得る。制御モジュールは、リングバスストップを介してクラスタ内リングバスに接続され、およびアクセスし得る。データは、クラスタ内リングバスを周って、リングバスストップのうちの第1のものにおける第1の制御モジュールから、リングバスストップのうちの第2のものにおける第2の制御モジュールに伝送され得る。制御モジュールの各々は、中央処理装置またはプロセッサであり得る。
【0068】
メモリ制御モジュールの各々は、FLCモジュールのうちのそれぞれのものへのアクセスを制御し得る。FLCモジュールは、サーバSoC上にスタックされ得る。FLCモジ
ュールの各々は、FLC(またはDRAM)を含み、本明細書に開示されたFLCモジュールのいずれかとして実装され、およびそれと同様に動作し得る。メモリ制御モジュールは、FLCリングバス上のそれぞれのリングバスストップでFLCリングバスにアクセスし、リングバスストップとFLCモジュールとの間でデータを転送し得る。これに代えて、FLCモジュールは、それぞれのリングバスストップでFLCリングバスに直接アクセスし得る。メモリ制御モジュールの各々は、FLCモジュールのうちのそれぞれの1つのための、ならびに/またはリングバスおよび/もしくはホッピングバスのバスストップのためのメモリクロック信号を生成するメモリクロックを含み得る。バスストップは、リングバスおよび/またはホッピングバスを介して間接的に、またはメモリ制御モジュールから直接、メモリクロック信号を受信し得る。データは、メモリクロック信号に基づいてバスストップを通って循環し得る。
【0069】
FLCリングバスは、双方向バスであり、2種類のリングバスストップSRBおよびSRHを有し得る。リングバスストップの各々は、信号リピータとして、および/またはアクセスノードとして機能し得る。リングバスストップSRBは、ホッピングバス以外のデバイスに接続されている。デバイスは、クラスタ間リングバス0、FLCモジュールおよび/またはメモリ制御モジュール、ならびにグラフィック処理モジュールを含み得る。クラスタ間リングバスは、(i)クラスタ間、および(ii)交差リングストップ間の接続を提供する。交差リングバスストップは、クラスタ間リングバスへのアクセスを提供し、クラスタ間リングバスを、(i)クラスタと(ii)リングバスストップとの間で延在するリングバス延在部に接続し得る。リングバスストップは、FLCリングバス上にある。クラスタ間リングバスおよび交差リングバスストップは、(iii)第1のクラスタと第2のFLCリングバスのリングバスストップとの間、および(iv)第2のクラスタと第1のFLCリングバスのリングバスストップとの間の接続を提供する。これにより、制御モジュールは、第2のFLCモジュールのFLCにアクセスできるようになり、制御モジュールは、第1のFLCモジュールのFLCにアクセスできるようになる。
【0070】
クラスタ間リングバスは、チップ内トレースおよびチップ間トレースを含み得る。チップ内トレースは、サーバSoCの内部で、および(i)リングバスストップのうちの1つと(ii)ポートのうちの1つとの間で、延在する。チップ間トレースは、サーバSoCの外部で、およびポートのそれぞれのペア間で、延在する。
【0071】
サーバSoCの各々のリングバスストップSRHは、FLCリングバスおよびホッピングバスのうちの対応するものに接続されている。ホッピングバスの各々は、ホッピングバスのうちの対応する1つへのそれぞれのインターフェースアクセスを提供する複数のホッピングバスストップSHBを有する。ホッピングバスストップSHBは、信号リピータとして、および/またはアクセスノードとして機能し得る。
【0072】
第1のホッピングバス、リングバスストップ、および第1のホッピングバスストップは、(i)FLCリングバスと(ii)サーバSoCの液晶ディスプレイ(LCD)インターフェースと、コンパニオンSoCのインターフェースと、の間の接続を提供する。LCDインターフェースは、ディスプレイに接続され得、GPMを介して制御され得る。コンパニオンSoCのインターフェースとして、シリアル接続小型コンピュータシステムインターフェース(SAS)インターフェースおよびPCIeインターフェースが挙げられる。コンパニオンSoCのインターフェースは、イメージプロセッサ(IP)インターフェースであり得る。
【0073】
インターフェースは、それぞれのポートに接続されており、ポートは、周辺デバイスなどのデバイスに接続され得る。SASインターフェースおよびPCIeインターフェースは、ポートを介してSAS互換デバイスおよびPCIe互換デバイスにそれぞれ接続され
得る。例として、記憶ドライブが、ポートに接続され得る。記憶ドライブは、ハードディスクドライブ、ソリッドステートドライブ、またはハイブリッドドライブであり得る。ポートは、画像処理デバイスに接続され得る。画像処理デバイスの例は、上記に開示されている。第4のSoCは、チップ間バスメンバ(デイジーチェーンメンバとも呼ばれる)を介して第3のSoCにデイジーチェーン接続され得る。チップ間バスメンバは、第1のホッピングバスのメンバである。追加のSoCは、第1のホッピングバスに接続されたポートを介して第4のSoCにデイジーチェーン接続され得る。サーバSoC、制御モジュール、およびFLCモジュールは、FLCリングバス、第1のホッピングバス、および/または第3のSoCを介して第4のSoCと通信し得る。例として、SoCは、サウスブリッジチップであり、(i)サーバSocと(ii)ポートに接続された周辺デバイスとの間の通信および割り込みの転送を制御し得る。
【0074】
第2のホッピングバスは、リングバスストップおよび第2のホッピングバスストップを介して、(i)FLCリングバスと(ii)サーバSoC内のインターフェースとの間の接続を提供する。サーバSoC内のインターフェースは、Ethernetインターフェース、1つ以上のPCIeインターフェース、およびハイブリッド(または組み合わせ)インターフェースを含み得る。Ethernetインターフェースは、10GEインターフェースであり得、第1のEthernetバスを介してネットワークに接続されている。Ethernetインターフェースは、第1のEthernetバス、ネットワーク、および第2のEthernetバスを介して第2のSoCと通信し得る。ネットワークは、Ethernetネットワーク、クラウドネットワーク、および/または他のEthernet互換ネットワークであり得る。1つ以上のPCIeインターフェースは、例として、第3世代PCIeインターフェースPCIe3およびミニPCIeインターフェース(mPCIe)を含み得る。PCIeインターフェースは、ソリッドステートドライブに接続され得る。ハイブリッドインターフェースは、SATA互換デバイスおよび/またはPCIe互換デバイスとの間で、SATAおよび/またはPCIeプロトコルに従ってデータを転送するために、SATAおよびPCIe互換であり得る。例として、PCIeインターフェースは、ソリッドステートドライブまたはハイブリッドドライブなどの記憶ドライブに接続され得る。インターフェースは、サーバSoCの外部のデバイスに接続するためのそれぞれのポートを有する。
【0075】
第3のホッピングバスは、リングバスストップを介してリングバスに接続され得、ホッピングバスストップを介してLCDインターフェースおよびポートに接続され得る。LCDインターフェースは、ディスプレイに接続され得、GPMを介して制御され得る。ポートは、1つ以上のコンパニオンSoCに接続され得る。第4のホッピングバスは、(i)リングバスストップを介してリングバスに、および(ii)ホッピングバスストップを介してインターフェースに接続され得る。インターフェースは、Ethernet、PCIe、およびハイブリッドインターフェースであり得る。インターフェースは、それぞれのポートを有する。
【0076】
サーバSoCおよび/または他のサーバSoCは、クラスタ間リングバスを介して互いに通信し得る。サーバSoCおよび/または他のサーバSoCは、それぞれのEthernetインターフェースおよびネットワークを介して互いに通信し得る。
【0077】
コンパニオンSoCは、それぞれの制御モジュールを含み得る。制御モジュールは、ホッピングバスストップを介してインターフェースにアクセスし、および/またはインターフェースへのアクセスを制御し得る。一実施形態では、制御モジュールは、含まれない。制御モジュールは、ホッピングバスストップのうちの対応するもの、および/またはインターフェースのうちの対応するものに接続され、およびそれらと通信し得る。
【0078】
さらなる例として、上述の例はまた、モバイルデバイスの回路に実装され得る。モバイルデバイスは、コンピュータ、携帯電話、または他の無線ネットワークデバイスであり得る。回路は、SoCを含む。SoCは、モバイルSoCと呼ばれ得る。SoCは、コンパニオンSoCと呼ばれ得る。モバイルSoCは、制御モジュールのクラスタ、クラスタ内リングバス、FLCモジュール、メモリ制御モジュール、FLCリングバス、および1つ以上のホッピングバスを含む。ホッピングバスは、(i)チップ間バスメンバおよび対応するポートを介してモバイルSoCとコンパニオンSoCとの間で、および(ii)コンパニオンSoCを通って延在する。
【0079】
クラスタ内リングバスは、双方向であり、制御モジュール間の通信を提供する。クラスタ内リングバスは、クラスタ内リングバス上で伝送されるデータ信号への制御モジュールによるアクセスのためのリングバスストップを有し得る。リングバスストップは、信号リピータおよび/またはアクセスノードとして機能し得る。制御モジュールは、リングバスストップを介してクラスタ内リングバスに接続され、およびアクセスし得る。データは、クラスタ内リングバスを周って、リングバスストップのうちの第1のものにある第1の制御モジュールから、リングバスストップのうちの第2のものにある第2の制御モジュールに伝送され得る。データは、データが宛先に到達するまで、各クロックサイクルでバスストップ間を移動し得る。制御モジュールの各々は、中央処理装置またはプロセッサであり得る。
【0080】
メモリ制御モジュールは、FLCモジュールへのアクセスを制御し得る。一実施形態では、メモリ制御モジュールは、含まれない。FLCモジュールは、モバイルSoC上にスタックされ得る。FLCモジュールは、FLCまたはDRAMであり得、本明細書に開示されたFLCモジュールのいずれかとして実装され、およびそれと同様に動作し得る。メモリ制御モジュールは、FLCリングバス上のそれぞれのリングバスストップでFLCリングバスにアクセスし、リングバスストップとFLCモジュールとの間でデータを転送し得る。これに代えて、FLCモジュールは、それぞれのリングバスストップでFLCリングバスに直接アクセスし得る。メモリ制御モジュールは、FLCモジュール、リングバスおよび/またはホッピングバスのバスストップのためのメモリクロック信号を生成するメモリクロックを含み得る。バスストップは、リングバスおよび/またはホッピングバスを介して間接的に、またはメモリ制御モジュールから直接、メモリクロック信号を受信し得る。データは、メモリクロック信号に基づいてバスストップを通って循環し得る。
【0081】
FLCリングバスは、双方向バスであり、2種類のリングバスストップSRBおよびSRHを有し得る。リングバスストップの各々は、信号リピータとして、および/またはアクセスノードとして機能し得る。リングバスストップSRBは、ホッピングバス以外のデバイスに接続されている。デバイスは、FLCモジュールおよび/またはメモリ制御モジュール、ならびにグラフィック処理モジュールを含み得る。
【0082】
モバイルのSoCのリングバスストップSRHは、FLCリングバスとホッピングバスのうちの対応する1つに接続されている。ホッピングバスの各々は、ホッピングバスのうちの対応する1つへのそれぞれのインターフェースアクセスを提供する複数のホッピングバスストップSHBを有する。ホッピングバスストップSHBは、信号リピータとして、および/またはアクセスノードとして機能し得る。
【0083】
第1のホッピングバス、リングバスストップ、および第1のホッピングバスストップは、(i)FLCリングバスおよび(ii)液晶ディスプレイ(LCD)インターフェース、ビデオ処理モジュール(VPM)、ならびにコンパニオンSoCのインターフェースの間に接続されている。LCDインターフェースは、サーバSoC内にあり、ディスプレイに接続され得、GPMを介して制御され得る。コンパニオンSoCのインターフェースと
して、セルラインターフェース、無線ローカルエリアネットワーク(WLAN)インターフェース、および画像信号プロセッサインターフェースが挙げられる。セルラインターフェースは、他のモバイルデバイスおよび/または無線デバイスとの無線通信のための物理層デバイスを含み得る。物理層デバイスは、ロングタームエボリューション(LTE)規格および/または第3世代(3G)、第4世代(4G)、および/または第5世代(5G)モバイル通信規格に従って、動作し、および/または信号を伝送および受信し得る。WLANインターフェースは、Bluetooth(登録商標)、Wi-Fi(登録商標)、および/または他のWLANプロトコルに従って動作し、モバイルデバイスのWLAN内の他のネットワークデバイスと通信し得る。ISPインターフェースは、記憶ドライブまたは他の画像処理デバイスなどのコンパニオンSoCの外部の画像処理デバイス(または画像信号処理デバイス)に接続され得る。インターフェースは、それぞれのポートを介してコンパニオンSoCの外部のデバイスに接続され得る。ISPインターフェースは、モバイルデバイスの外部のデバイスに接続され得る。
【0084】
コンパニオンSoCは、チップ間バスメンバを介してモバイルSoCに接続され得る。チップ間バスメンバは、第1のホッピングバスのメンバである。追加のSoCが、第1のホッピングバスに接続されたポートを介してコンパニオンSoCにデイジーチェーン接続され得る。モバイルSoC、制御モジュール、およびFLCモジュールは、FLCリングバスおよび第1のホッピングバスを介してコンパニオンSoCと通信し得る。
【0085】
第2のホッピングバスは、リングバスストップおよび第2のホッピングバスストップを介して、(i)FLCリングバスと(ii)モバイルSoC内のインターフェースとの間の接続を提供する。モバイルSoC内のインターフェースは、Ethernetインターフェース、1つ以上のPCIeインターフェース、およびハイブリッド(または組み合わせ)インターフェースを含み得る。Ethernetインターフェースは、10GEインターフェースであり得、ポートを介してEthernetネットワークに接続されている。1つ以上のPCIeインターフェースは、例として、第3世代PCIeインターフェースPCIe3およびミニPCIeインターフェース(mPCIe)を含み得る。PCIeインターフェースは、ソリッドステートドライブに接続され得る。ハイブリッドインターフェースは、SATA互換デバイスおよび/またはPCIe互換デバイスとの間で、SATAおよび/またはPCIeプロトコルに従ってデータを転送するために、SATAおよびPCIe互換であり得る。例として、PCIeインターフェースは、ポートを介して記憶ドライブに接続され得る。記憶ドライブは、ソリッドステートドライブまたはハイブリッドドライブであり得る。インターフェースは、モバイルSoCの外部のデバイスに接続するためのそれぞれのポートを有する。
【0086】
コンパニオンSoC、は制御モジュールを含み得る。制御モジュールは、ホッピングバスストップを介してVPMおよびインターフェースにアクセスし、および/またはそれらへのアクセスを制御し得る。一実施形態では、制御モジュールは、含まれない。制御モジュールは、ホッピングバスストップ、VPM、および/またはインターフェースに接続され、およびそれらと通信し得る。
【0087】
キャッシュラインサイズ
この例示的な実施形態では、4Kバイトのキャッシュラインサイズが、選択されている。他の実施形態では、他のキャッシュラインサイズが、利用され得る。このサイズのキャッシュラインを使用することによる1つの利点は、このサイズが、オペレーティングシステムによってアプリケーションまたはプログラムに、最小のメモリ割り付けサイズとして通常割り当てられるメモリページサイズのサイズに適合することである。その結果、4Kバイトのキャッシュラインサイズは、オペレーティングメモリの割り付けサイズと整合する。
【0088】
プロセッサは通常、一度に64バイトしか、読み取りまたは書き込みを行わない。したがって、例として4Kバイトを使用すると、FLCキャッシュラインサイズは、はるかに大きくなる。その結果、書き込みまたは読み取りの要求がFLCモジュールでのミスをもたらすと、システムはまず、記憶ドライブから4Kバイトを丸ごと(すなわち、記憶ドライブパーティション内の最終レベルのメインメモリ)読み取る。それが行われた後、システムは、取り出されたキャッシュラインにプロセッサデータを書き込むことができ、このキャッシュラインは、DRAMに記憶される。キャッシュラインは、仮想アドレスによって識別される。キャッシュライン全体が、一度にメモリから引き出される。さらに、キャッシュライン全体は、FLC-SSモジュールからFLC-HSモジュールへなど、回送される。運用システムには、100,000またはさらには100万個以上のキャッシュラインがあり得る。
【0089】
FLCモジュールのキャッシングをCPUキャッシュと比較すると、これらの要素は、別個かつ別異のキャッシュである。CPU(プロセッサキャッシュ)は、示されているようなプロセッサデバイスの一部であり、先行技術のように構成されている。FLCモジュールはキャッシュとして動作し、メインメモリとして作用し、CPUキャッシュとは別個であり、かつ別異する。FLCモジュールキャッシュは、メインメモリおよび関連付けられたコントローラと同じように、数分間の動作にわたって必要になる可能性があるすべてのデータを追跡する。ただし、CPUキャッシュは、プロセッサが必要とするか、または次の数マイクロ秒または場合によっては1ミリ秒で使用するもののみを、追跡および記憶する。
【0090】
完全連想FLCキャッシュ
完全連想ルックアップは、大量の真にランダムなプロセッサタスク/スレッドを半永久的に(数秒から数分で測定した場合)FLCキャッシュに常駐させることができる。そうでなければプロセッサが作業している何千ものタスクまたはスレッドが、FLCキャッシュに保持されるはずである多数のタスク/スレッドを容易に破棄(中断)し得るため、これは基本的な機能である。ただし、完全連想ルックアップは、シリコン領域、電力、またはその両方の点でコストがかかる。したがってまた、完全連想ルックアップテーブル内のエントリ数を最小限に抑えるために、FLCキャッシュラインサイズが最大化されることは重要である。実際、現在64BであるCPUキャッシュラインサイズをはるかに大きくすることが重要である。同時に、キャッシュラインサイズは、オペレーティングシステム(OS)に過度の問題を引き起こす可能性があるため、大きすぎないのがよい。最新のOSは通常、4KBのページサイズを使用するため、したがって、例示的な一実施形態では、FLCキャッシュラインサイズは、4KBに設定される。将来、OSページサイズが、16KBに増加した場合には、FLCキャッシュラインサイズも、理論的には16KBとされ得る。
【0091】
完全連想アドレスルックアッププロセスのエネルギーコストを隠すために、一実施形態では、アドレス書き換えテーブルのためのアドレスキャッシュが、FLCコントローラに含まれる。アドレスキャッシュが、プロセッサデータをキャッシュしないことに注意することが重要である。代わりに、アドレスキャッシュは、最近確認されたアドレス書き換えと、物理アドレスから仮想アドレスへの書き換えと、のみをキャッシュする。そのため、任意でのアドレスキャッシュは、完全連想である必要がない。5%のミス率でも、完全連想ルックアッププロセスを実行する必要性が少なくとも20倍低減されるため、アドレスキャッシュ用の単純なセット連想キャッシュで十分である。アドレスキャッシュはこれに加えて、アドレスキャッシュで使用される単純なセット連想キャッシュは、通常1クロックサイクルでアドレスを書き換え得るため、アドレス書き換え遅延の低下をもたらす。これは、CAMのようなアドレス書き換え動作を実行し得る最速のマルチステージハッシュ
アルゴリズムよりも、およそ10~20倍高速である。
【0092】
記憶ドライブのメモリ割り付け
記憶ドライブ78は、磁気ディスクドライブ、ソリッドステートドライブ、ハイブリッドドライブ、光学ドライブ、または任意の他のタイプの記憶デバイスなどの従来の不揮発性記憶デバイスであり得る。FLCモジュールと関連付けられたDRAM、ならびに記憶ドライブのパーティション化された部分は、メインメモリとして作用する。本明細書に開示された実施形態では、DRAMの量は、伝統的な先行技術のコンピューティングシステムよりも小さい。これにより、消費電力の低下、システムコストの低下、および空間要件の低減という利点が提供される。システム動作に追加のメインメモリが必要である場合、記憶ドライブ78の一部分が、追加のメインメモリとして使用するために割り付けられるか、またはパーティション化(予約)される。記憶ドライブ78は、記憶ドライブコントローラを有すると理解され、記憶ドライブコントローラは、従来のファイル要求に対する処理デバイス500からの要求を、またメインメモリの拡張部として予約された記憶ドライブのパーティションに記憶された情報に対するFLCモジュールからの要求を、処理する。
【0093】
図4は、例示的な一動作方法の例示的な操作方法を例示している。これは、可能な動作方法の1つに過ぎず、そのため、特許請求の範囲から逸脱しない他の方法が想到される。この例示的な動作方法は、
図2に示されているようなFLCコントローラシステムを代表する。以下のタスクは、主に
図2の例に関して記載されているが、タスクは、本開示内の他の実施形態に適用され得る。タスクは、反復的に、または並列で実行され得る。
【0094】
この方法は、システムが初期化され得るステップ408で開始する。ステップ412で、FLCコントローラは、所有デバイス(プロセッサ)から読み取り要求または書き込み要求の要求を受信する。要求は、プロセッサがデータのロケーションを識別するために使用するか、またはデータが書き込まれる物理アドレスを含む。
【0095】
決定ステップ416で、プロセッサによって提供された物理アドレスが、FLCコントローラ内にロケートされているかどうかの決定が、行われる。FLCコントローラのメモリ(SRAM)は、物理アドレスから仮想アドレスへのマップデータを記憶する。物理アドレスがFLCコントローラ内にロケートされていることは、ヒットとして指定されている一方、物理アドレスがFLCコントローラ内に配置されていないことは、ミスとして指定されている。プロセッサの、データ(物理アドレスを含む)の要求は、FLCコントローラが、FLCコントローラのメモリ内に物理アドレスエントリを有する場合にのみ、FLCモジュールによって満たされる。物理アドレスが、FLCコントローラのメモリ内に記憶されていない場合には、要求は、記憶ドライブに回送されなければならない。
【0096】
決定ステップ416で、物理アドレスが、FLCコントローラ内で識別された場合には、要求は、ヒットと見なされ、動作は、ステップ420に進む。ステップ420で、FLCコントローラは、FLCコントローラのメモリ、またはFLCコントローラによって使用するために割り付けられた、DRAMの一部であるメモリに記憶されたルックアップテーブルを使用するルックアップ動作に基づいて、物理アドレスを仮想アドレスに書き換える。仮想アドレスは、FLC DRAM内の物理アドレスと関連付けられ得る。FLCコントローラは、(プロセッサからの)物理アドレスを仮想アドレスにマッピングするための1つ以上の書き換えマッピングテーブルを含み得る。
図5Bは、メモリを有するFLCコントローラを、より詳細に例示している。
【0097】
物理アドレスを仮想アドレスに書き換えた後、動作は、決定ステップ424に進む。決定ステップ416で、物理アドレスが、FLCコントローラ内にロケートされていない場
合、ミスが発生しており、動作は、ステップ428に進む。ステップ428で、FLCコントローラは、FLCコントローラ内に、読み取りまたは書き込みされるデータのための、かつまだFLCモジュール(すなわち、FLCモジュールのDRAM)内にない新たな(この場合は空の)キャッシュラインを割り付ける。他の方法では空間が利用できない場合、既存のキャッシュラインが、上書きされ得る。ステップ428は、プロセッサによって提供された物理アドレスを含むようにメモリマッピングを更新することにより、FLCコントローラをその物理アドレスを有するものとして確立することを含む。次に、ステップ432で、物理アドレスは、データを取り出すために記憶ドライブによって使用されるアドレスである記憶ドライブアドレスに書き換えられる。この実施形態では、FLCコントローラは、このステップを実行するが、他の実施形態では、記憶ドライブなどの他のデバイスが、書き換えを実行し得る。記憶ドライブアドレスは、記憶ドライブによって使用されるか、または記憶ドライブによって理解されるアドレスである。一実施形態では、記憶ドライブアドレスは、PCI-eアドレスである。
【0098】
ステップ436で、FLCコントローラは、記憶アドレスを、記憶ドライブ、例えば、PCI-eベースのデバイス、NVMe(不揮発性メモリエクスプレス)タイプのデバイス、SATTA SSDデバイス、または現在既知であるか、または将来開発される任意の他の記憶ドライブに回送する。上記で議論したように、記憶ドライブは、従来のハードディスクドライブ、SSD、またはハイブリッドドライブであり得、記憶ドライブの一部分を従来の意味で使用して、ドキュメント、画像、ビデオなどのファイルを記憶する。記憶ドライブの一部分がまた、FLCモジュール(単数または複数)のDRAMによって提供された記憶容量を補うために、メインメモリとして使用およびパーティション化される。
【0099】
ステップ440に進むと、記憶ドライブコントローラ(図示せず)は、プロセッサによって提供された物理アドレスで、記憶ドライブからキャッシュラインを取り出し、キャッシュラインは、FLCコントローラに提供される。キャッシュラインアドレスによって識別されるキャッシュラインは、要求されたデータを記憶するか、またはデータが書き込まれるロケーションとして指定される。これは、当技術分野で知られている様式で行われ得る。ステップ444で、FLCコントローラは、キャッシュラインをFLC DRAMに書き込み、キャッシュラインは、物理アドレスに関連付けられ、この関連付けが、FLCコントローラ内のループアップテーブルに維持されるようになっている。
【0100】
また、ステップ444の一部は、キャッシュラインまたはデータを最も最近使用されたものとして指定するためのFLCステータスレジスタの更新である。DRAMまたは別個のレジスタに格納され得るFLCステータスレジスタは、FLC DRAM内のキャッシュラインまたはデータが、プロセッサによって最後に使用されたか、アクセスされたか、または書き込まれたときを追跡するレジスタである。キャッシュメカニズムの一部として、最近使用されたキャッシュラインがキャッシュに保持されるため、最近使用されたデータは、要求されたときにプロセッサで再度すぐに利用可能である。キャッシュラインは、プロセッサによって最も過去に使用されたか、アクセスされたか、または書き込まれ、より最近使用されたキャッシュライン/データ用の余地を確保するために、上書きされる。この配置では、キャッシュは、最も過去に使用された、先出し方式で動作する。ステップ444の後、動作は、ステップ424に進む。
【0101】
決定ステップ424で、プロセッサからの要求が、読み取り要求または書き込み要求として評価される。要求が書き込み要求である場合、動作は、ステップ448に進み、書き込み要求は、仮想アドレスと共にFLC DRAMコントローラに送信される。
図2に示され、かつ当技術分野で理解されているように、DRAMデバイスは、DRAMに対する読み取り/書き込み動作を監視するための関連付けられたメモリコントローラを有する。
ステップ452で、DRAMコントローラは、仮想アドレスからDRAMの行アドレスビットおよび列アドレスビットを生成し、ステップ456で、これらを使用してプロセッサ(プロセッサデータ)からFLC DRAMにデータを書き込む。次いで、ステップ460で、FLCコントローラは、キャッシュラインまたはデータのFLCステータスレジスタを更新して、FLC DRAMに書き込まれたばかりのキャッシュライン/データの最近の使用を反映する。物理アドレスは、FLCコントローラのメモリマッピングへとマッピングされるため、プロセッサによって要求された場合、そのFLCコントローラは今度は、その物理アドレスを所有する。
【0102】
これに代えて、決定ステップ424で、プロセッサからの要求が、読み取り要求であると決定された場合、動作は、ステップ464に進み、FLCコントローラは、含む読み取り要求を仮想アドレスと共に、DRAMコントローラによる処理のためにFLC DRAMコントローラに送信する。次いで、ステップ468で、DRAMコントローラは、仮想アドレスからDRAMの行アドレスビットおよび列アドレスビットを生成し、ステップ472で、これらを使用して、FLC DRAMからデータを読み取り(取り出し)、データをプロセッサに提供できるようにする。ステップ476で、FLC DRAMから取り出されたデータは、プロセッサの読み取り要求を満たすためにプロセッサに提供される。次いで、ステップ480で、FLCコントローラは、FLC DRAMから読み取られたデータの最近の使用を反映するために、データ(アドレス)のFLCステータスレジスタを更新する。物理アドレスは、FLCコントローラのメモリマッピングへとマッピングされるため、そのFLCコントローラは、プロセッサによって再度要求された場合に、メモリマッピング内の物理アドレスをすぐに利用可能であるように維持する。
【0103】
図4の上述のタスクは、例示的な例であることが意図されており、タスクは、アプリケーションに応じて、重複する期間中に、または異なる順序で、順次に、並列で、同期して、同時に、連続的に実行され得る。また、イベントの例および/またはシーケンスによっては、タスクのうちのいずれかは、実行またはスキップされない場合がある。
【0104】
FLCステータスレジスタの更新
上記で議論したように、ステータスレジスタは、FLCモジュールに記憶されたキャッシュラインの状態を維持する。キャッシュラインおよびキャッシュラインに記憶されたデータに関するいくつかの態様が追跡され得ることが想到される。そのような一態様は、事前設定された基準に関連する、または他のキャッシュラインに関連する異なるキャッシュラインの相対的な重要度である。一実施形態では、最も最近アクセスされたキャッシュラインが、最も重要度が高いとマークまたは定義される一方、最も過去に使用されたキャッシュラインが、最も重要度が低いとマークまたは定義される。例えば最も過去に使用されたなど、最も重要度が低いとマークされたキャッシュラインは、FLCから追い出されるか、または上書きされて、FLCに新たなキャッシュラインを作り出せるようにするか、または新たなデータを記憶できるようにするのに適格となる。このタスクに使用されるステップは、当業者によって理解され、したがって、本明細書では詳細に記載されていない。ただし、従来のCPUキャッシュコントローラとは異なり、FLCコントローラはこれに加えて、CPU/GPUによって書き込まれたキャッシュラインを追跡する。このことは、読み取りにのみ使用されていたキャッシュラインが、最終的にFLCからパージされたときに、FLCコントローラが、SSDなどの記憶ドライブに誤って書き込みを行わないようにするために行われる。このシナリオでは、FLCコントローラは、書き込まれたFLCキャッシュラインを「ダーティ」とマークする。
【0105】
一実施形態では、特定のキャッシュラインは、ロックされたFLCキャッシュラインとして設計され得る。FLC内の特定のキャッシュラインは、FLCからそのようなキャッシュラインが誤ってパージされるのを防止するためにロックされ得る。このことは、その
ようなアドレス/データが、取り出しの遅延を許容することができない場合に、FLCコントローラ内にデータのアドレスを保持するために特に重要であり得、したがって、それが、最も過去に使用された場合でも、ロックされ、したがって、FLCに維持される。
【0106】
また、ロックされたキャッシュラインのためのタイムアウトタイマが実装され得ることが想到される。この構成では、キャッシュラインが、ロックされ得るが、タイマによって追跡される際の特定の期間の間のみである。タイマは、ロック生成から一定時間後、またはキャッシュラインの使用後にリセットし得る。時間は、キャッシュライン、キャッシュラインに記憶されたデータ、またはキャッシュラインに割り当てられたアプリケーションもしくはプログラムに基づいて変動し得る。
【0107】
これに加えて、以下の目的で、すなわち、非常に長い非アクティブ期間の後に、ロックされたキャッシュラインをFLCからパージできるようにして、またはロックされたキャッシュラインを最終的にFLCモジュールの次のステージまたはレベルにパージし、かつ同時に、次のFLCステージで、ロックされたステータスビットを継承できるようにして、以前にロックされたキャッシュラインが高速度FLCモジュールからパージされることから結果として得られるキャッシュライン/データ取り出しの時間ペナルティを最小限に抑えるために、ロックされたキャッシュラインにタイムアウトビットが提供されることが想到される。
【0108】
図5Aは、カスケードされたFLCシステムの例示的な実施形態のブロック図である。これは、カスケードされたFLCシステムの1つの可能な配置にすぎない。特許請求の範囲から逸脱しない他の実施形態が、可能である。この実施形態では、プロセッサ500が、提供される。処理デバイス500は一般に、
図2に示された処理デバイス72と同様であり得る。
図2の要素の議論は、
図5Aの要素に組み込まれ、繰り返される。処理デバイス500は、中央処理装置(CPU)、グラフィック処理装置(GPU)、またはシステムオンチップ(SoC)を含むがこれらに限定されない任意の他のタイプの処理システムであり得る。処理デバイス500は、レベル0、レベル1、レベル2、およびレベル3のキャッシュなどの様々なレベルのプロセッサキャッシュ512を含むプロセッサ504を含む。メモリ管理モジュール508はまた、プロセッサ504を様々なレベルのプロセッサキャッシュ512にインターフェース接続し、データ要求のためなど、プロセッサを処理デバイス500の外部の要素にインターフェース接続するために提供される。
【0109】
また、
図5Aの実施形態の一部は、記憶ドライブ78である。記憶ドライブ78は一般に、
図2の記憶ドライブ78と同様であり、そのため、再度詳細には記載されていない。記憶ドライブ78として、従来の回転デバイスまたはソリッドステートドライブ、複合ハイブリッドドライブなどのハードディスクドライブが挙げられ得る。記憶ドライブ78は、入力および出力機能を監視するためのコントローラ(図示せず)を含む。ファイル入力/出力経路520は、マルチプレクサ554を通して処理デバイス500を記憶ドライブ78に接続している。ファイルI/O経路520は、従来のシステムで行われ得るようにファイルを記憶ドライブに直接保存するなど、書き込み動作のためにプロセッサが記憶ドライブ78に直接アクセスするための経路およびメカニズムを提供する。マルチプレクサ554は、FLC-SS536またはファイルI/O経路520からのいずれかの入力を、制御信号入力556上の制御信号に応答して、選択的に通過させる双方向スイッチである。
【0110】
図2、
図5A、
図6、
図8、
図10、および
図12に示されているようなFLCを有する実施形態では、記憶ドライブは、メインメモリの拡張部(RAMメモリの拡張部)として割り付けられるか、パーティション化されるか、または予約されたセクションを有する。それゆえ、記憶ドライブ78の一部分が、従来のフォルダまたはディレクトリ構造でユ
ーザが閲覧可能であるドキュメント、写真、ビデオ、音楽などのユーザファイルの従来の記憶装置に使用される。また、オペレーティングシステム、ドライバ、アプリケーションコード、および処理デバイスによって処理されているアクティブなデータなどの、プロセッサによって使用されるアクティブなプログラムおよび命令を記憶するためのDRAMメインメモリの拡張部として動作するための、FLCシステムによって使用するために割り付けられるか、パーティション化されるか、または予約された記憶ドライブ78の一部分がある。メインメモリは、コンピュータがアクティブに使用している情報を記憶するため、メインメモリは、コンピュータシステムの短期間のデータ記憶装置である。メインメモリという用語は、メインメモリ、プライマリメモリ、システムメモリ、またはRAM(ランダムアクセスメモリ)を指す。メインメモリに記憶されるが、最も過去に使用されたデータ(オペレーティングシステム、ドライバ、アプリケーションコード、およびアクティブデータ)は、記憶ドライブのメインメモリパーティションに記憶される。
図2、
図5A、
図6、
図8、
図10、および
図12の実施形態では、また本明細書に記載された他の実施形態では、システムバスは、
図2に示されているように、処理デバイスとFLCモジュールとの間にロケートされ得る。
【0111】
記憶ドライブ78のメインメモリパーティションは、I/O動作のためにRAMよりも低速であるが、FLCモジュールのヒット率は、99%以上など非常に高いため、記憶ドライブ内のメインメモリパーティションに対するI/Oが発生することは稀であり、したがって、性能を悪化させない。記憶ドライブ78および記憶ドライブ78のメインメモリパーティションについてのこの議論は、他の図に示された記憶ドライブに当てはまる。示され、および記載されたすべての実施形態では、記憶ドライブのメインメモリパーティションの内容は、暗号化され得る。記憶ドライブ78(不揮発性である)のメインメモリパーティションに記憶された個人情報、インターネット履歴、パスワード、文書、電子メール、画像の閲覧を防止するために暗号化が行われ得る。暗号化により、コンピューティングデバイスを廃棄、リサイクル、または紛失した場合、この機密情報を読み取ることはできない。電源遮断時に記憶されたデータを維持しないRAMとは異なり、記憶ドライブは、電源遮断イベントがあってもデータを維持する。
【0112】
図5Aに示されているように、2つの最終レベルキャッシュ(FLC)モジュール540、542が、カスケード構成で配置されている。各モジュール540、542は、FLCステージと呼ばれる。2つのカスケードされたステージを有して示されているが、より多数のステージが、カスケードされ得る。FLCステージ(モジュール)540、542の各々は一般に、
図2に示されたFLCモジュール76に類似しており、そのため、これらのユニットは、本明細書では詳細に記載されていない。このカスケード構成では、FLCモジュール540は、標準速度モジュールである他方のFLCモジュール542よりも高帯域幅、低遅延、および低電力使用で動作するように構成された高速度(HS)モジュールである。FLC-HSモジュールがFLC-SSよりも頻繁に利用されることに起因して、FLC-HSモジュール542の低電力、高速度の態様によって実現される利点が、さらに増大する。FLC-HSモジュールは、主に使用されるメモリであり、99%よりも大きいヒット率を有し、したがって、ほとんどすべてのメインメモリアクセスで速度および電力節減を提供する。FLCモジュール542は、標準速度(SS)と呼ばれ、高速でありながら、動作速度よりも低コストで最適化されている。高速度DRAMよりも標準速度DRAMの容量が大きいため、コスト節減が、最大化され、標準速度DRAMの量は、これらのFLCの実施形態では、多くの場合8GBまたは16GBのRAMを搭載している先行技術のコンピュータで利用されるものよりも小さい。例示的なFLCシステムは、4GBのDRAM、および32GBパーティションの記憶ドライブを有し得る。このことは、8~16GBのRAMを有する通常のラップトップコンピュータの約200ドルのコスト節減をもたらす。さらに、メモリアクセスのほとんどは、高速度FLCモジュールによって正常に処理されるため、標準速度FLCモジュールは大抵、非アクティブであ
り、したがって、電力を消費しない。この構成の利点は、以下で論じられている。FLC-HSモジュール540のメモリ容量は、FLC-SSモジュール542のメモリ容量よりも小さいことが想到される。一実施形態では、FLC-SSモジュールのメモリ量は、FLC-HSモジュール内のメモリの量よりも8倍大きい。ただし、いくつかのアプリケーションは、32倍よりも大きい容量比を許容することさえあり得る。
【0113】
FLC-HSコントローラおよびDRAM-HSの両方が、低消費電力、高帯域幅、低遅延(高速度)に最適化されていることに留意されたい。したがって、両方の要素が、上述の利点を提供する。一方、FLC-SSコントローラおよびDRAM-SSの両方が、低コストに最適化されている。一構成では、FLC-HSコントローラのルックアップテーブルは、FLC-HSコントローラ、利用されるSRAM、または他の高速度/低電力メモリ内にロケートされる。ただし、FLC-SSについて、ルックアップテーブルは、DRAM-SSに記憶され得る。この構成を有することは、ルックアップテーブルをFLC-SSコントローラに記憶するよりも低速であるが、FLC-SSに必要なルックアップテーブル用にDRAM-SSの小部分をパーティション化する方が費用効果が高い。一実施形態では、DRAM-SSに記憶されたルックアップテーブルにアクセスする時間ペナルティを低減するために、最も最近確認された(使用された)アドレス書き換えをキャッシュするための、DRAM-SSルックアップテーブルの小さいSRAMキャッシュが含まれ得る。そのようなアドレスキャッシュは、アドレス書き換えテーブルのみがキャッシュされるため、完全連想である必要はない。5%のミスでも、DRAMでアドレス書き換えを行う必要性を、20分の1に低減するため、CPU L2およびL3キャッシュで使用されるもののようなセット連想キャッシュで十分である。このことは、64,000個のルックアップテーブルエントリから1000個がキャッシュされるなど、ごく小さい割合で達成され得る。アドレスキャッシュはまた、最も過去に使用された/先出しの動作に基づき得る。
【0114】
この実施形態では、FLCモジュール540は、FLC-HSコントローラ532と、関連付けられたメモリコントローラ544を有するDRAM-HSメモリ528と、を含む。FLCモジュール542は、FLC-SSコントローラ536と、関連付けられたメモリコントローラ548を有するDRAM-SSメモリ524と、を含む。FCL-HSコントローラ532は、処理デバイス500に接続している。また、示されているように、DRAM-HS528に、またFLC-SSコントローラ536に接続している。FLC-SSコントローラ536の出力は、DRAM-SS524に、また記憶ドライブ78に接続している。
【0115】
各DRAM528、524のコントローラ544、548は、当技術分野で理解されているように動作して、DRAMに対する読み取りおよび書き込みの動作をガイドおよび制御し、そのため、これらの要素および関連した動作は、詳細に記載されていない。DRAMとして示されているが、任意のタイプのRAMが、利用され得ることが想到される。コントローラ544、548とDRAM528、524との間の接続は、これらの要素間の通信を可能にし、データがそれぞれのDRAMから取り出され、およびそれぞれのDRAMに記憶されることを可能にする。
【0116】
この例示的な実施形態では、FLCコントローラ532、536は、DRAM528、524内のロケーションに対応するアドレスに書き換えられ得る物理メモリアドレスを記憶する1つ以上のルックアップテーブルを含む。例えば、物理アドレスは、仮想アドレスに変換され得、DRAMコントローラは、仮想アドレスを使用して、DRAMの行アドレスビットおよび列アドレスビットを生成し得る。DRAM528、524は、キャッシュメモリとして機能する。この実施形態では、ルックアップテーブルは、完全連想であり、したがって、1対1のマッピングを有し、単一のキャッシュブロックへの2つ以上のメモ
リアドレスマッピング間の競合を引き起こさない任意のキャッシュブロックにデータが記憶されることを許容する。
【0117】
図5Aに示されているように、標準速度FLCモジュール542は、処理デバイス500に直接接続していない。高速度FLCモジュール540のみを処理デバイス500に接続させることによって、標準速度FLCモジュール542は、高速度FLCモジュール540に専用である。1つの高速度FLCモジュールは、1つ以上の標準速度FLCモジュールを共有し得ることが想到される。この配置は、FLC-HSコントローラ532内のミスを、処理デバイス500を通し返して再ルーティングし、必然的に、貴重なシステムバスリソースを消費し、かつ処理デバイス500に対して追加のオーバーヘッドを作り出す標準速度FLCモジュール542にルーティングする必要があることによって、プロセッサを低速化しない。
【0118】
一般に、メモリ読み取りイベントの動作中に、要求されたデータの物理アドレスを有するデータ要求が、処理デバイス500からFLC-HSコントローラ532に送信される。FLC-HSコントローラ532は、FLC-HSコントローラ532によってアクセス可能なメモリアドレスの1つ以上のテーブルを、関連付けられたDRAM-HS528に記憶する。FLC-HSコントローラ532は、FLC-HSコントローラ532のメモリテーブルが、対応する物理アドレスを含むかどうかを判定する。FLC-HSコントローラ532が、FLC-HSコントローラ532のテーブル内に対応するメモリアドレスを含む場合には、FLC-HSコントローラ532が、(コントローラ544を介して)DRAM-HS528からデータを取り出すというヒットが発生し、当該データは、FLC-HSコントローラを介して処理デバイス500に提供し返される。
【0119】
これに代えて、FLC-HSコントローラ532が、適合する物理アドレスを含まない場合、結果はミスであり、要求は、FLC-SSコントローラ536に回送される。このプロセスは、FLC-SSコントローラ536で繰り返され、適合する物理アドレスがFLC-SSコントローラ536のメモリアドレスルックアップテーブル内にロケートされている場合、要求されたものは、仮想メモリアドレスに書き換えられるか、または変換され、データは、メモリコントローラ548を介してDRAM-SS524から引き出される。DRAMコントローラは、仮想アドレスからDRAMの行アドレスビットおよび列アドレスビットを生成する。適合する物理アドレスが、FLC-SSコントローラ536のメモリアドレスルックアップテーブル内にロケートされている場合には、データ要求および物理アドレスは、FLC-SSコントローラ536によって記憶ドライブに向けられる。
【0120】
要求されたデータが、DRAM-HS528内で利用可能でないが、DRAM-SSから記憶され、および取り出される場合には、取り出されたデータは、FLC-SSコントローラ536に、次いでFLC-HSコントローラに、そして次いでプロセッサ500に転送されることによってプロセッサに提供されるときに、DRAM-HS内に埋め戻される。データを埋め戻すときに、DRAM-SSまたはDRAM-HS内で空間が利用可能でない場合には、最も過去に使用されたデータまたはキャッシュラインが削除されるか、またはその中のデータが上書きされる。一実施形態では、高速度キャッシュから削除されたデータは、標準速度キャッシュに追加の空間が必要になるまで、標準速度キャッシュ内に残る。いくつかの場合では、データは、高速度FLCモジュールのみに記憶され、標準速度FLCモジュールには記憶されないか、またはその逆であり得ることがさらに想到される。
【0121】
要求されたデータが、DRAM-HS528内で利用可能でなく、またDRAM-SS524内で利用可能でなく、したがって記憶ドライブ78から取り出された場合には、取
り出されたデータは、プロセッサに提供されると、DRAM-HS、DRAM-SS、または、その両方内に埋め戻される。したがって、最も最近使用されたデータは、DRAM528、524に記憶され、時間外に、DRAMコンテンツは、最も最近使用されたデータで動的に更新される。最も使用頻度が低いデータは、DRAM528、524から破棄されるか、またはDRAM528、524内で上書きされて、より最近使用されたデータに空間を作成する。これらの埋め戻し経路は、
図5Aに「第1のステージのキャッシュ置換経路」および「第2のステージのキャッシュ置換経路」として示されている。
【0122】
図5Bは、FLCコントローラの例示的な実施形態のブロック図である。これは、FLCコントローラの基本要素の1つの構成にすぎない。当業者は、追加の要素、データ経路、およびサポート要素が、本明細書に開示されたすべての実施形態のワーキングシステムに存在することを理解するであろう。これらの要素、データ経路、およびサポート要素は、示されておらず、代わりに、開示されたイノベーションをサポートする要素に焦点が当てられている。
図5BのFLCコントローラ532は、
図5AのFLCコントローラ532、または本明細書に開示された他のFLCコントローラを代表する。
【0123】
図5Bには、プロセッサ(500、
図5A)への入力/出力経路564が、示されている。プロセッサI/O経路564は、FLC論理ユニット状態機械(状態機械)560に接続している。状態機械500は、ASIC、制御ロジック、状態機械、プロセッサ、またはこれらの要素または任意の他の要素の任意の組み合わせなどの、本明細書に記載されるように機能することができる任意のデバイスを含み得る。状態機械560は、システムの物理アドレスをFLC仮想アドレスに変換する。この状態機械は、ハッシュ関数の複数のステージを使用して、完全連想ルックアッププロセスを実行する。これに代えて、状態機械560は、この書き換えを実行するためのコンテンツ連想メモリ(CAM)であるか、またはこのCAMを使用することができるが、それは高価であろう。
【0124】
状態機械560は、例えばSRAMなどの、メモリ576に接続している。メモリ576は、FLCコントローラに記憶された物理アドレスを含むルックアップテーブルを記憶する。これらの物理アドレスは、FLCコントローラ532によってアクセス可能なキャッシュラインを識別する仮想アドレスに書き換えできるか、またはマッピングできる。メモリ576は、アドレスマップおよび複数のハッシュテーブルを記憶し得る。複数のハッシュテーブルを使用することは、電力消費を低減し、動作遅延を低減する。
【0125】
状態機械560およびメモリ576は協働して、処理デバイスからの物理アドレスを仮想アドレスに書き換える。仮想アドレスは、「ヒット」が発生すると、ヒットI/Oライン568を介してDRAMに提供される。状態機械560が、状態機械560のメモリ576が物理アドレスエントリを含まないと判断した場合には、ミスが発生している。ミスが発生した場合には、FLC論理ユニット状態機械は、記憶ドライブまたは別のFLCコントローラにつながるミスI/Oライン572に、物理アドレスを有する要求を提供する。
【0126】
図6は、並列カスケードされたFLCモジュールのブロック図である。
図5Aと比較すると、同一の要素は、同一の参照番号が付されており、再述されない。この実施形態には、1つ以上の追加のFLCモジュール550、552が、追加されている。この例示的な実施形態では、高速度FLCモジュール550は一般に、高速度FLCモジュール540と同一であり、標準速度FLCモジュール552は一般に、標準速度FLCモジュール542と同一である。示されているように、高速度FLCモジュール550は、処理デバイス500に接続している一方、標準速度FLCモジュール552は、マルチプレクサ554を通して記憶ドライブ78に接続している。高速度FLCモジュール540、550の両方は、システムバスを通してなど、処理デバイス500に接続している。
【0127】
図6の実施形態の動作は一般に、
図5Aおよび
図8の実施形態の動作と同様である。
図7は、
図5Aの実施形態の動作フロー図を提供する。
図6に示された構成は、
図5Aの単一のカスケードされた実施形態に対して多数の利点を有する。よりコストがかかり、より多くの空間を消費するが、複数の並列に配置されたカスケードFLCモジュールを有することは、メモリアドレスを異なる専用のFLCモジュールに分離し、かつ2つ以上のFLCモジュールでの並列メモリ動作を可能にするという利点を提供する一方、
図5Aに関連して上述したようなFLCの複数のステージの利点を、依然として有する。
【0128】
図7は、
図5Aに示されているようなカスケードされたFLCモジュールの例示的な動作方法の動作フロー図である。これは、一例の動作方法に過ぎず、当業者によって理解されるように、他の動作方法が、想到される。ステップ704で、データの物理アドレスを有する読み取り要求が、処理デバイス(プロセッサ)からFLC-HSモジュールに、特にFLC-HSコントローラに、送信される。次いで、決定ステップ708で、FLC-HSコントローラは、物理アドレスが、FLC-HSコントローラのルックアップテーブル内で識別されるかどうかを判定する。決定ステップ708の結果は、ヒットまたはミスであり得る。
【0129】
ステップ708で、物理アドレスが、ロケートされている場合には、結果は、ヒットであり、動作は、ステップ712に進む。ステップ712で、読み取り要求が、仮想アドレスと共にDRAM-HSコントローラに送信される。
図2に示され、かつ当技術分野で理解されているように、DRAMデバイスは、DRAMに対する読み取り/書き込み動作を監視するための関連付けられたメモリコントローラを有する。ステップ716で、DRAMコントローラは、仮想アドレスからDRAMの行アドレスビットおよび列アドレスビットを生成し、ステップ720でこれらを使用して、DRAM-HSからデータまたはキャッシュラインを読み取る(取り出す)。ステップ724で、FLC-HSコントローラは、要求を満たすためにデータをプロセッサに提供する。次いで、ステップ728で、FLC-HSコントローラは、キャッシュライン(アドレスまたはデータ)のFLCステータスレジスタを更新して、キャッシュラインの最近の使用を反映する。一実施形態では、データは、DRAM-HSに書き込まれ、またFLC-SSモジュールに書き込まれる。
【0130】
これに代えて、ステップ708で、物理アドレスが、FLC-HS内で識別されない場合には、動作は、ステップ732に進み、メモリルックアップテーブルおよびDRAM-HSなどの新たな(空の)キャッシュラインが、FLC-HSコントローラ内に割り付けられる。物理アドレスが、FLC-HSモジュール内で識別されなかったため、キャッシュライン用の空間が、作り出されなければならない。次いで、ステップ736で、FLC-HSコントローラは、データ要求および物理アドレスを、FLC-SSモジュールに回送する。
【0131】
FLC-HSモジュール内で発生するように、決定ステップ740で、物理アドレスが、FLC-SSで識別されるかどうかの判定が、行われる。FLC-SSコントローラのルックアップテーブルに存在する物理アドレスによって明らかにされるように、物理アドレスが、FLC-SSモジュール内にある場合には、動作は、ステップ744に進む。ステップ744で、読み取り要求が、仮想アドレスと共にDRAM-SSコントローラに送信される。ステップ748で、DRAM-SSコントローラは、仮想アドレスからDRAMの行アドレスビットおよび列アドレスビットを生成し、ステップ752でこれらを使用して、DRAM-SSからデータまたはキャッシュラインを読み取る(取り出す)。FLC-HSの仮想アドレスは、FLC-SSの仮想アドレスとは異なるため、物理アドレスから仮想アドレスへの異なる変換が、各FLCコントローラ内で行われる。
【0132】
ステップ724で、FLC-HSコントローラは、要求されたキャッシュラインをFLC-HSコントローラに回送し、当該FLC-HSコントローラは、それがFLC-HSモジュールにキャッシュされるように、キャッシュラインを(データと共に)DRAM-HSに提供する。最終的に、データは、FLC-HSからプロセッサに提供される。次いで、ステップ760で、FLC-HSコントローラは、データ(アドレス)のFLCステータスレジスタを更新して、FLC-HSに、次いでプロセッサに提供されたデータの最近の使用を反映する。
【0133】
ステップ740で、物理アドレスが、FLC-SS内で識別されない場合には、FLC-SSコントローラでミスが発生しており、動作は、ステップ764に進み、新たな(空の)キャッシュラインが、FLC-SSコントローラに割り付けられる。物理アドレスが、FLC-SSコントローラ内で識別されなかったため、次いでキャッシュライン用の空間が、作り出されなければならない。ステップ768で、FLC-SSコントローラは、物理アドレスを、例えば、PCI-eタイプのアドレスなどの記憶ドライブアドレスに書き換える。記憶ドライブアドレスは、キャッシュラインのロケーションを識別するために記憶ドライブによって理解されるか、または記憶ドライブによって使用されるアドレスである。次に、ステップ772で、書き換えから結果として得られた記憶ドライブアドレスが、記憶ドライブ、例えば、PCI-e、NVMe、またはSATA SSDに回送される。ステップ776で、記憶ドライブアドレスを使用して、記憶ドライブコントローラは、データを取り出し、取り出されたデータは、FLC-SSコントローラに提供される。ステップ780で、FLC-SSコントローラは、データをFLC-SS DRAMに書き込み、FLC-SSステータスレジスタを更新する。上記で議論したように、ステータスレジスタを更新することは、キャッシュラインを最近使用されたものとして指定するように行われ、これにより、キャッシュラインが最も過去に使用されたようになるまで上書きされることを防止する。最も過去に使用されたステータスの追跡は、キャッシュラインごとに追跡されるが、最も過去に使用されたステータスが、キャッシュライン内の個々のデータ項目について追跡され得ることが想到されるが、このことは、複雑さおよび追加のオーバーヘッド負荷を追加する。
【0134】
一実施形態では、ステップ764および752で示されているように、キャッシュラインが、記憶ドライブから取り出される。キャッシュライン全体が、FLC-HSコントローラに提供される。FLC-HSコントローラは、キャッシュライン全体をDRAM-HSに記憶する。プロセッサによって要求されたデータは、このキャッシュラインに記憶される。プロセッサ要求を満たすために、FLC-HSコントローラは、キャッシュラインからデータを抽出し、データをプロセッサに提供する。このことは、キャッシュラインが、DRAM-HSに書き込まれる前または後に行われ得る。一構成では、キャッシュラインのみが、FLC-SSコントローラからFLC-HSコントローラに提供され、FLC-HSコントローラは、プロセッサによって要求されたデータをキャッシュラインから抽出する。別の実施形態では、FLC-SSコントローラはまず、要求されたデータを提供し、次いでキャッシュラインをFLC-HSコントローラに提供する。次いで、FLC-HSコントローラは、次いでデータプロセッサを提供し、次いでまたは同時に、キャッシュラインをFLC-HSに書き込むことができる。抽出されたデータが、まずFLC-HSコントローラに提供されるため、このことは、より高速であり得る。
【0135】
上記に述べたように、FLC-HSコントローラの仮想アドレスは、FLC-SSコントローラの仮想アドレスと同じではない。各FLCコントローラ内のルックアップテーブルは、別異し、ルックアップテーブル間に関係はない。その結果、各FLCコントローラの仮想アドレスセットはまた、一意である。仮想アドレスが、偶然に、仮想アドレス間で同じビットを有し得る可能性があるが、仮想アドレスは、仮想アドレスのそれぞれのDRAM(DRAM-HSおよびDRAM-SS)で使用されることが意図されているため、
異なる。
【0136】
図8は、2つ以上の別個のFLCモジュールを有する分割FLCモジュールシステムのブロック図である。これは、分割FLCモジュールシステムの1つの可能な実施形態に過ぎず、特許請求の範囲から逸脱することなく、異なる構成が可能であることが想到される。
図5Aと比較すると、同一の要素は、同一の参照番号が付されており、これらの重複する要素については詳細には再述されない。
【0137】
図8に示されているように、FLCモジュール802の第1(a)、第2(b)最大n個のステージが並列に提供されて、メモリ要求の並列処理を可能にする。nの値は、任意の整数であり得る。第1のFLCモジュール820Aを参照して、FLCaコントローラ804Aは、処理ユニット500に接続しているか、または処理ユニット500と通信して、読み取り要求または書き込み要求を受信する。システムバス(図示せず)は、通信および要求ルーティングが、システムバスを通して行われ得るように、FLCモジュール820と処理デバイス500との間に在設され得る。FLCaコントローラ804Aはまた、DRAMa812Aと関連付けられたDRAMメモリコントローラ808Aに接続している。FLCaコントローラ804Aはまた、記憶ドライブ78に直接接続しているか、または記憶ドライブ78と通信する。他のFLCモジュール820B、820nの各々は、各要素が、同じ参照番号を共有するが異なる識別子文字を有して、同様に構成されている。例えば、FLCモジュール820Bは、FLCbコントローラ804B、DRAMメモリコントローラ808B、およびDRAMb812Bを含む。FLCモジュール820Bはまた、示されているように、処理デバイス500および記憶ドライブ78に接続しているか、または処理デバイス500および記憶ドライブ78と通信する。単一の処理デバイス500で示されているが、追加の処理デバイス(GPU/オーディオ処理ユニット/...)がまた、FLCモジュール820を利用し得ることが想到される。
【0138】
FLCモジュール820のうちの1つ以上が、高速度/低遅延/低電力DRAMを有する高速度FLCモジュールとして構成され得るか、またはFLCモジュールが、標準速度DRAMを有する標準速度モジュールであり得る。これにより、異なるFLCモジュールに対する異なる動作速度が可能になる。このことは、ひいては、処理モジュール500が、重要なデータの読み取り/書き込み要求を高速度FLCモジュールに向ける一方、重要度が低い読み取り/書き込み要求は、標準速度FLCモジュールにルーティングされることに対応する。
【0139】
一実施形態では、各FLCスライス(FLCa、FLCb、FLCc)は、SoCバスに接続しており、各FLCスライスは、処理デバイスによってアドレスが割り当てられる。各FLCスライスは、個別かつ別異のメモリルックアップテーブルを支援する別異の要素である。バスアドレスルックアップテーブルまたはハッシュテーブルを使用して、メモリアドレスをFLCスライスにマップし得る。一構成では、物理アドレス内の特定のビットは、いずれのFLCスライスがアドレスに割り当てられているかを定義する。別の実施形態では、双方向マルチプレクサ(図示せず)は、FLCスライスと処理ユニット500との間に提供されて、各FLCスライスへのアクセスを制御し得るが、この配置は、動作を低速化するボトルネックを作り出し得る。
【0140】
図5Aおよび
図8の実施形態は、
図5Aに示されているように、単一のFLCコントローラ804Aを有する1つ以上のFLCモジュール820Aを有し、かつまた1つ以上のカスケードFLCモジュールを有するシステムが組み立てられ得るように組み合わせられ得ることが想到される。これらの2つの異なる配置を組み合わせる利点は、両方の配置の利点が、達成されることである。DRAMにアクセスするためのプロセッサからの複数の経路があり、それにより、システムの速度および帯域幅が増加すると同時に、速度、帯域
幅、および消費電力をより少なくなることを向上させる高速度の2ステージのFLCコントローラの利点が提供される。組み合わせられたシステムは、設計のニーズを達成するようにシステムを調整するための任意の様式で配置され得る。
【0141】
図9は、
図8に示されているような分割FLCモジュールの例示的な動作方法の動作フロー図である。これは、例示的な一動作方法に過ぎず、当業者によって理解されるように、他の動作方法が、想到される。方法の開始前に、メモリルックアップテーブルが、処理デバイスまたはシステムバスの一部として提供される。ルックアップテーブルは、プロセッサおよびFLCモジュールからのアドレス間の関連付けを記憶するように構成されている。各FLCモジュールは、この実施形態ではスライスと呼ばれ得、各FLCスライスは、複数のFLCステージを有し得る。
【0142】
この実施形態では、FLC容量および帯域幅を増加させるために、複数のFLCスライスが確立される。各FLCスライスは、システムバスメモリアドレス空間(領域)の一部分に割り付けられる。その上、これらのメモリ領域は、FLCスライス間でインターリーブされる。インターリーブ粒度は、FLCキャッシュラインサイズに適合するように設定されて、異なるFLCコントローラスライス内のFLCルックアップテーブルエントリの不要な重複(オーバーラップによる)を防止して、最終的にFLCヒット率を最大化する。
【0143】
例示的な一実施形態では、マッピングは、インターリーブされた順序で、FLCキャッシュラインサイズのアドレスブロックをFLCモジュールに割り当てる。例えば、4KBのキャッシュラインサイズでのFLC実装について、および4つの異なるFLC(FLCa、FLCb、FLCc、FLCd)の実装について、物理アドレスによる、識別されるメモリの、FLCへの以下のマッピング(割り当て)は、以下の通りである。
第1の4KB-FLCa
第2の4KB-FLCb
第3の4KB-FLCc
第4の4KB-FLCd
第5の4KB-FLCa
第6の4KB-FLCb
第7の4KB-FLCc
第8の4KB-FLCd
第9の4KB-FLCa
このメモリマッピング割り当て方式は、このパターンに従って続行する。これは、データを異なるFLCモジュールに分離するためのキャッシュライン境界を用いたメモリマッピングと呼ばれ得る。このようにして、処理デバイスによって使用されるメモリアドレスは、FLCスライス間で分割され、それにより、ボトルネックなしで性能の向上を可能にする並列配置されたFLCシステムを作り出す。これにより、複数の異なるプログラムが1つのFLCモジュールのみを利用するか、またはプログラムのメモリ使用量をすべてのFLCモジュールに分散することができ、これにより、動作速度が向上し、ボトルネックが低減される。
【0144】
一実施形態では、各FLCスライスは、メモリアドレスに対応する。この例示的な動作例では、FLCa、FLCb、FLCc、およびFLCdとして定義された4つのFLCスライスがある。各FLCスライスは、FLCスライスを識別する一意のコードを有する。例えば、例示的なメモリアドレスが、FLCスライス割り当てと共に以下で提供される。
アドレスxxxx-00-xxxxxが、FLCaに割り当てられ、
アドレスxxxx-01-xxxxxが、FLCbに割り当てられ
アドレスxxxx-10-xxxxxが、FLCcに割り当てられ
アドレスxxxx-11-xxxxxが、FLCdに割り当てられ
ここで、xは、「0」および「1」の任意の組み合わせである。他の実施形態では、他のアドレス指定マッピング方式が、利用され得る。
【0145】
整数のFLCキャッシュラインサイズを有する他のアドレスブロックマッピング方式が、使用され得る。部分的なまたは非整数のブロックサイズでは、異なるFLCスライス内のルックアップテーブルエントリが、重複し得る。このことは致命的ではない場合があるが、それでも、別異のアドレスルックアップテーブルエントリの数の減少をもたらし、最終的にFLCキャッシュヒット性能に影響を与える。
【0146】
図9に戻ると、ステップ912で、メモリアドレスが、各FLCモジュールに割り当てられる(この実施形態では、FLC1、FLC2、FLC3であるが、他の実施形態は、より多いか、またはより少ない数のFLCモジュールを有し得る。割り当ては、上述したように、インターリーブ方式で行われ得る。次いで、ステップ916で、処理デバイスは、メモリに記憶されたデータの読み取り要求を生成する。他の実施形態では、要求は、書き込み要求であり得る。ステップ920で、処理デバイスからのデータ要求が、分析され、メモリマッピングに基づいて、データ要求(物理アドレスを有する)が、適切なFLCにルーティングされる。このことは、システムバスで行われ得る。上記に提供された例示的なメモリアドレスの関連付けに基づいて、物理メモリが、xxxx-00-xxxxxである場合、このアドレスは、FLCaにマッピングし、アドレスは、FLCaに割り当てられたプロセッサバスポートにルーティングされる。次いで、動作は、ステップ924に進み、そこで、データ要求および物理アドレスに対して、
図4の方法が、行われる。メモリアドレスが、xxxx-01-xxxxxである場合、このアドレスは、FLCbにマッピングし、動作は、ステップ928に進む。物理メモリアドレスが、xxxx-10-xxxxxである場合、アドレスは、FLCcにマッピングし、動作は、ステップ932に進み、そこで、データ要求および物理アドレスに対して、
図4の方法が、行われる。物理メモリアドレスが、xxxx-11-xxxxxである場合、このアドレスは、FLCdにマッピングし、動作は、ステップ936に進み、そこで、データ要求および物理アドレスに対して、
図4の方法が、行われる。
図4の方法およびその議論は、
図9のこの議論に組み込まれる。
【0147】
図10は、バイパス経路を有するカスケードFLCシステムの例示的な実施形態の例示的なブロック図である。
図5Aと比較すると、同一の要素は、同一の参照番号が付されている。この実施形態では、バイパスモジュール1004が、高速度FLCモジュール540と処理デバイス500との間に提供され、それらに接続されている。バイパスモジュール1004への入力は、処理デバイス500からの要求を受信する。バイパスモジュール1004は、プロセッサからの要求を分析し、それをバイパス経路にルーティングされるか、または高速度FLCモジュール540にルーティングされる要求として分類することができる任意のタイプのデバイスであり得る。バイパスモジュール1004は、状態機械、プロセッサ、制御ロジック、ASIC、任意の他の同様のまたは同等のデバイスを備え得るが、これらに限定されない。
【0148】
バイパスモジュール1004からの第1の出力は、FLC-HSコントローラ532に接続している。バイパスモジュール1004からの第2の出力は、マルチプレクサ1008に接続している。マルチプレクサ1008はまた、制御入力1012上で制御信号を受信する。マルチプレクサ1008は、制御信号に応答して、特定の時間に入力信号のうちの1つを出力するように構成された任意のタイプのスイッチであり得る。マルチプレクサ1008の出力は、標準速度FLCモジュール542の標準速度FLCコントローラ536に接続している。
【0149】
図10に示されているようなカスケードされたFLCモジュールに関連するバイパスモジュール1004およびマルチプレクサ1008の動作は、以下の
図11で議論される。一般に、バイパスモジュール1004は、処理デバイス500からの要求を分析し、要求が、標準速度FLCモジュール542にバイパスされるべきか、または高速度FLCモジュール540に向けられるべき要求として適格であるかどうかを判定する。要求が、バイパスタイプの要求であると判定された場合、要求は、バイパスモジュール1004によってマルチプレクサ1008にリダイレクトされ、そこで、マルチプレクサ1008は、標準速度FLCモジュール536へと選択的に切り替えられる。
【0150】
図11は、
図8に示されているような分割FLCモジュールの例示的な動作方法の動作フロー図である。これは、例示的な一動作方法に過ぎず、当業者によって理解されるように、他の動作方法が、想到される。この方法は、ステップ1108で開始し、処理デバイスが、メモリからデータの読み取り要求を生成する。このステップは、プロセッサがRAMなどのメインメモリからデータを要求することに通常あるような従来事項内で行われる。ステップ1112で、処理デバイスからの要求は、処理のためにバイパスモジュールに提供される。バイパスモジュールは、要求を処理して、要求が、高速度FLCモジュールをバイパスするデータとして適格であるか、または分類されるかを判定する。データまたは特定のアドレスは、多様な理由で高速度FLCモジュールをバイパスするように分類され得る。
【0151】
いくつかの実施形態では、バイパスデータは、性能の観点から、高速DRAMでの記憶に適格であるほどの頻度では使用されないデータである。他の実施形態では、処理デバイスからの特定の物理アドレスは、バイパスモジュールがバイパス経路にルーティングするバイパスアドレスとして指定される。これは、固定アドレスマッピングと呼ばれ、それによって、特定のアドレスまたはアドレスのブロックが、バイパス経路に向けられる。同様に、バイパスの決定は、プロセッサまたは他のソフトウェア/ハードウェア機能によって指定されたデータ型に基づき得る。
【0152】
バイパスの指定はまた、タスクの重要度として定義されたタスクIDに基づき得る。タスクの重要度を定義するタスクIDは、固定された一連の基準によって設定されるか、またはDRAM-HSの利用可能な容量または他の要因に基づいて経時的に変動し得る。ソフトウェアエンジンまたはアルゴリズムはまた、タスクIDを指定し得る。バイパスモジュールはまた、特定のタスクIDのみが、予約されたDRAM-HSメモリ空間に配置できるように、DRAM-HS内の空間を予約するように構成され得る。バイパスモジュール制御に基づくDRAM-HSへのキャッシュの不終了または不必要なブロッキングを回避するために、タスクIDまたは指定は、タイムアウトし得、つまり、バイパス指定は、固定またはプログラム可能なタイマ期間の後に終了される。さらに、タスクIDを使用して、タスクIDごとにDRAM-HSキャッシュライン割り付け容量を定義し得る。これは、貪欲なタスク/スレッドが貪欲でないタスク/スレッドをパージすることを防止し、最終的に、よりバランスが取れた全システム性能を可能にするためである。オペレーティングシステムはまた、キャッシュライン割り付け容量テーブルを経時的に変更して、所与の期間中に同時に動作する必要がある同時タスク/スレッドの数を反映し得る。
【0153】
例として、アクティブなビデオ再生(動画)を表示する画面表示は、絶えず変化する画面表示を有するが、ビデオを再生していないとき、画面表示は静的である。結果として、バイパスモジュールは、ビデオが画面に1回または2回以上再表示されないために、アクティブなビデオ表示をバイパス経路にバイパスするように構成され得る。ただし、一時停止した動画について、または画面が静止している非ビデオ再生中に、画面をリフレッシュするときに表示データが何度も再利用されるため、表示データは、キャッシュされ(バイ
パスされない)得る。したがって、FLC-HSモジュールが、消費電力がより少ないため、FLC-HSモジュールでデータに静的表示を形成させることが最良である。このことを、ソフトウェアまたはハードウェアで行って、画面が繰り返す画面表示であるかどうかを検出することができる。
【0154】
一実施形態では、バイパスモジュールは、いずれのデータ(稀に使用されるか、または1回のみ使用される)が、高速度FLCモジュールから標準速度FLCモジュールに向けてバイパスされるべきかを経時的に監視するアルゴリズムおよび機械学習エンジンを含む。経時的に、バイパスモジュールの人工知能を有する機械学習能力は、特定のユーザにとって、いずれのデータが、稀に使用されるか、または1回のみ使用されるか、したがって、高速度FLCモジュールからバイパスされるべきかを判定する。ユーザが、経時的に、そのデータをより頻繁に使用する場合には、バイパスモジュールの機械学習の態様は、挙動の変化に合わせて調整および適応し、性能を最大化するためにキャッシュされる高速度FLCモジュールにそのデータを向ける。
【0155】
一実施形態では、バイパスモジュールは、機械学習を使用せず、またはユーザの挙動に適応せず、代わりに、高速度FLCモジュール以外にバイパスされるデータまたはアドレスは、固定されているか、ユーザプログラム可能であるか、またはソフトウェア制御される。これは、それほど複雑ではないアプローチである。
【0156】
また、処理デバイスは、データをバイパスタイプのデータであるように指定し得ることが想到される。そのため、処理デバイスからバイパスモジュールへの要求(読み取りまたは書き込み)は、バイパスタイプデータとしての指定を含む。これにより、いずれのデータが、ソフトウェア制御の柔軟性を有する高速度FLCモジュールに記憶されるかを制御するための、さらなるメカニズムが提供される。
【0157】
また、データのバイパス指定が、一定期間後にバイパス指定を削除するタイマ機能を有し得るか、または一定期間後にバイパス指定を改新してアクティブのままにしかければならないことが想到および開示される。これにより、バイパス指定が不要になったデータにバイパス指定が適用されることが防止される。
【0158】
図11に戻ると、決定ステップ1116で、データがバイパスデータであるかどうかの決定が、行われる。データが、バイパスされるべきではないデータとしてバイパスモジュールによって指定されていない場合には、動作は、ステップ1120に進む。ステップ1120で、動作は、上述した方法
図7を実行した。上述したように、
図7の方法ステップは、繰り返されないが、代わりに、アプリケーションのこのセクションに組み込まれる。
図7で説明されているように、この時点での方法は、カスケードされたFLCシステムかのように進行する。
【0159】
これに代えて、決定ステップ1116で、バイパスモジュールが、データをバイパスすべきであると判定した場合には、動作は、ステップ1124に進み、物理アドレスを有するデータ要求が、バイパスモジュールからバイパスマルチプレクサにルーティングされる。他の実施形態では、データ要求および物理アドレスは、バイパスマルチプレクサにルーティングされ得る。バイパスマルチプレクサ(ならびに本明細書に開示された他のマルチプレクサ)は、制御信号に応答して、そのマルチプレクサの入力のうちの1つを、この実施形態では標準速度FLCモジュールに接続しているそのマルチプレクサの出力に渡す方向別マルチプレクサである。バイパスマルチプレクサへの他方の入力は、
図10に示されているように、高速度FLCコントローラからのものである。
【0160】
ステップ1128で、バイパスマルチプレクサへの制御信号に応答して、バイパスマル
チプレクサは、データ要求および物理アドレスを標準速度FLC-SSモジュールにルーティングする。他の実施形態では、バイパスマルチプレクサからのデータ要求および物理アドレスは、異なる高速度FLCモジュールなどの異なるロケーションに、または直接記憶ドライブに転送され得る。次いで、ステップ1132で、データ要求および物理アドレスは、
図4に記載された様式で、標準速度FLC-SSモジュールによって処理される。このデータは、バイパスデータとして定義されるため、DRAM-HSまたはFLC-HSコントローラにはキャッシュされない。
図4の方法は、
図11のこのセクションに組み込まれる。
【0161】
図12は、バイパス経路およびキャッシュ不能なデータ経路を有するカスケードされたFLCシステムの例示的な実施形態の例示的なブロック図である。
図5Aおよび
図10と比較すると、同一の要素は、同一の参照番号が付されている。この例示的な実施形態は、キャッシュ不能なデータを別個にルーティングするシステムの可能な一構成に過ぎず、そのため、当業者は、他の実施形態および配置に到達し得る。この実施形態には、
図10の構成を超えて、バイパスモジュール1004と第2のマルチプレクサ1208との間に接続しているキャッシュ不能なデータ経路1204が追加されている。第2のマルチプレクサ1208は、マルチプレクサに制御信号を提供するように構成された制御信号入力1212を含む。第2のマルチプレクサ1208の制御信号1212は、第2のマルチプレクサへの2つの入力のうちのいずれがDRAM-SS524への出力であるかを判定する。
【0162】
この実施形態では、DRAM-SS524の一部分は、キャッシュ不能なメモリとして予約されるためにパーティション化されている。DRAM-SSのキャッシュ不能なデータパーティションには、キャッシュ不能なデータが、記憶される。そのため、キャッシュ不能なデータパーティションは、従来のプロセッサ/DRAMとして動作する。プロセッサが、通常1回閲覧されるビデオファイルなどのキャッシュ不能なデータを要求する場合には、ファイルは、記憶ドライブ78からファイルI/O経路520を介してプロセッサによって取り出され、DRAM-SSのキャッシュ不能なパーティションに提供される。DRAM-SSに新たに記憶されたこのデータは、次いでキャッシュ不能なデータ経路を介して、プロセッサによって小ブロックで取り出され得る。動画などのビデオファイルは、通常は非常に大きく、通常は1回しか視聴されず、したがって、1回のみ使用されるデータをキャッシュしても性能上の利点がないため、キャッシュされない。メモリの一部分をパーティション化することは、当業者によって理解され、そのため、このプロセスは、本明細書では詳細に記載されていない。キャッシュ不能なデータはまた、記憶ドライブ78に記憶され得る。
【0163】
この実施形態では、バイパスモジュール1004は、読み取り要求を分析し、かつ読み取り要求が、キャッシュ不能なデータとして分類されたデータに対するものであるかどうかを判定するようにさらに構成されている。そうである場合には、処理デバイス500からのデータ読み取り要求は、キャッシュ不能なデータ経路1204を介して第2のマルチプレクサ1208にルーティングされる。第2のマルチプレクサ1208は、制御信号に応答して、キャッシュ不能なデータ読み取り要求、または標準速度FLC-SSコントローラ536からの要求のいずれかをDRAM-SS524に渡すかどうかを判定する。データは、キャッシュ不能であるため、データがプロセッサに提供された後、データは、DRAM-HS528またはDRAM-SS524のいずれにもキャッシュされないが、DRAM-SSのキャッシュ不能なデータパーティションに記憶され得る。
【0164】
図13は、
図12の実施形態の例示的な動作方法の動作フローチャートを提供する。これは、例示的な一動作方法に過ぎず、当業者によって理解されるように、他の動作方法が、想到される。動作方法は、
図11の方法に類似し、キャッシュ不能なデータを処理することに向けられた追加の手順を有する。ステップ1304で、処理デバイスは、メモリに
記憶されたデータの読み取り要求を生成する。要求は、物理アドレスを含む。次いで、ステップ1308で、要求および物理アドレスが、バイパスモジュールに提供されて、要求が、バイパス経路にルーティングされるべきか、または要求が、キャッシュ不能なデータに対する要求であり、したがってキャッシュ不能なデータ経路にルーティングされるべきかを判定する。決定ステップ1312で、データ要求が、バイパス経路にルーティングされるべきかどうかの判定がなされる。要求が、バイパスデータタイプの要求であると決定された場合には、動作は、ステップ1316に進み、バイパスモジュールは、データ要求および物理アドレスをバイパスモジュールからバイパスマルチプレクサにルーティングする。バイパスマルチプレクサは、2つ以上の入力を受信し、かつ入力のうちの1つを出力に選択的にルーティングすることができる任意のデバイスであり得る。バイパスマルチプレクサは、双方向であるため、マルチプレクサの単一出力での信号は、いずれかの入力経路にルーティングされ得る。入力1012上のバイパスマルチプレクサ制御信号は、バイパスマルチプレクサの動作を制御する。
【0165】
その後、ステップ1320で、バイパスマルチプレクサに提供された制御信号に応答して、物理アドレスを有するデータ要求が、バイパスマルチプレクサからFLC-SSモジュールにルーティングされる。次いで、ステップ1324で、FLC-SSモジュールは、
図4に記載されているように、データ要求および物理アドレスを処理する。
図4の方法は、
図13に組み込まれる。
【0166】
これに代えて、決定ステップ1312で、バイパス基準が満たされていなかったことが判定された場合には、動作は、要求がキャッシュ可能なメモリ要求であるかどうかが判定される決定ステップ1328に進む。キャッシュ可能なメモリ要求は、FLCモジュールのうちの1つにキャッシュされるデータに対する処理デバイスからの要求である一方、キャッシュ不能なメモリ要求は、キャッシュされないデータに対するものである。要求が、キャッシュ可能なメモリに対するものである場合には、動作は、ステップ1332に進み、
図7のプロセスは、データ要求および物理アドレスに基づいて実行される。
図7の方法は、
図13に組み込まれる。
【0167】
これに代えて、ステップ1328で、要求されたデータが、キャッシュ不能であると判定された場合には、動作は、ステップ1336に進む。ステップ1336で、物理アドレスを含むキャッシュ不能なデータ要求が、バイパスモジュールから第2のマルチプレクサにルーティングされる。第2のマルチプレクサは、バイパスマルチプレクサと概して同様に構成され、かつ動作し得る。ステップ1340で、第2のマルチプレクサ制御信号に応答して、第2のマルチプレクサからのデータ要求および物理アドレスが、キャッシュ不能なデータ用に予約されたDRAM-SSのパーティションに要求を向けるDRAM-SSコントローラに提供される。ステップ1344で、FLC-SSコントローラは、DRAM-SSキャッシュ不能データパーティションからキャッシュ不能データを取り出し、ステップ1348で、FLC-SSコントローラは、非キャッシュ可能データを処理デバイスに提供する。取り出されたデータは、DRAM-HSキャッシュまたはDRAM-SSキャッシュにキャッシュされないが、DRAM-SSのキャッシュ不能なパーティションに維持され得る。そのため、取り出されたデータは、FLC-SSモジュールを通して評価可能ではないが、代わりにキャッシュ不能なデータ経路を通してアクセスされる。
【0168】
上述した実施形態、要素、または様々な変形例のいずれかを、任意の組み合わせで集めてまたは配置して、新たな実施形態を形成し得ることが想到および開示される。例えば、
図6に示されているように、並列FLCモジュール配置(FLCスライス)は、FLCモジュールの2つ以上のステージと組み合わせられ得る。これらの実施形態のいずれも、バイパスモジュール機能および/またはキャッシュ不能なデータ経路を有して集められ、または特許請求され得る。また、FLCモジュールの3つ以上のステージ(例えば、3つま
たは4つのFLCモジュールステージ)が、本明細書に示されているか、または記載された任意の他の要素と組み合わせられ得ることが想到される。
【0169】
また、フローチャートおよび動作方法は、順次動作に関連して示され、および議論されているが、様々な動作が並列に行われ得ることが理解および開示されていることが、理解される。これにより、動作速度、帯域幅が増加し、システムの遅延が低減される。
【0170】
本開示に記載されている無線通信の態様は、IEEE標準802.11~2012、IEEE標準802.16-2009、IEEE標準802.20-2008、および/またはBluetoothコア仕様v4.0に完全にまたは部分的に準拠して実施できる。様々な実装では、Bluetoothコア仕様v4.0は、1つ以上のBluetoothコア仕様補遺2、3、または4によって修正され得る。様々な実装形態では、IEEE802.11-2012は、草案IEEE標準802.11ac、草案IEEE標準802.11ad、および/または草案IEEE標準802.11ahによって補完され得る。
【0171】
本明細書では、第1、第2、第3などの用語を使用して、様々なチップ、モジュール、信号、要素、および/またはコンポーネントを記載し得るが、これらの項目は、これらの用語によって限定されるものではない。これらの用語は、ある項目を別の項目と区別するためにのみ使用され得る。本明細書で使用される場合の「第1の」、「第2の」などの用語、および他の数値用語は、文脈によって明確に示されない限り、配列または順序を意味しない。したがって、以下で議論される第1の項目は、例示的な例の教示から逸脱することなく、第2の項目と呼ばれ得る。
【0172】
また、コンポーネント間の物理的な関係を記載するために様々な用語が使用される。第1の要素が、第2の要素に「接続され」、「係合され」、または「結合され」と呼ばれる場合、第1の要素が、第2の要素に直接接続、係合、配設、適用、もしくは結合され得るか、または介在する要素が、存在し得る。対照的に、要素が、別の要素に「直接接続され」、「直接係合され」、または「直接結合され」と呼ばれる場合、介在する要素が存在しないことが可能である。第1の要素が、第2の要素に「接続され」、「係合され」、または「結合され」と述べることは、第1の要素が、第2の要素に「直接接続され」、「直接係合され」、または「直接結合され」得ることを意味する。要素間の関係を記載するために使用される他の文言は、同様の形式で解釈されるとよい(例えば、「間」対「間に直接」、「隣接して」対「直接隣接して」など)。
【0173】
前述の説明は、本質的に単なる例示であり、開示、その適用、または使用を限定することは、決して意図されていない。本開示の広範な教示は、多様な形態で実装できる。したがって、本開示は、特定の例を含むが、図面、明細書、および以下の特許請求の範囲を検討すると他の修正が明らかになるため、開示の真の範囲はそのように限定されるものではない。本明細書で使用される場合、A、B、およびCのうちの少なくとも1つの語句は、非排他的論理ORを使用して、論理(A OR B OR C)を意味すると解釈されるものであり、「Aのうちの少なくとも1つ、Bのうちの少なくとも1つ、およびCのうちの少なくとも1つ」を意味すると解釈されるものではない。本開示の原理を変更することなく、方法内の1つ以上のステップが、異なる順序で(または同時に)実行され得ることが、理解されるはずである。
【0174】
以下の定義を含むこの出願では、「モジュール」という用語または「コントローラ」という用語は、「回路」という用語に置き換えられ得る。「モジュール」という用語および「コントローラ」という用語は、特定用途向け集積回路(ASIC)、デジタルの、アナログの、または混載のアナログ/デジタルディスクリート回路、デジタルの、アナログの
、または混載のアナログ/デジタル集積回路、組み合わせ論理回路、フィールドプログラマブルゲートアレイ(FPGA)、コードを実行するプロセッサ回路(共有、専用、またはグループ)。プロセッサ回路によって実行されるコードを記憶するメモリ回路(共有、専用、またはグループ)、記載された機能性を提供する他の好適なハードウェアコンポーネント、または、システムオンチップなどの、上記のいくつかまたはすべての組み合わせを指し得るか、それらの一部であり得るか、またはそれらを含み得る。
【0175】
モジュールまたはコントローラは、1つ以上のインターフェース回路を含み得る。いくつかの例では、インターフェース回路は、ローカルエリアネットワーク(LAN)、インターネット、ワイドエリアネットワーク(WAN)、またはそれらの組み合わせに接続された有線または無線のインターフェースを含み得る。本開示の任意の所与のモジュールまたはコントローラの機能性は、インターフェース回路を介して接続された複数のモジュールおよび/またはコントローラに分散され得る。例えば、複数のモジュールおよび/またはコントローラは、ロードバランシングを可能にし得る。さらなる例では、サーバ(リモートまたはクラウドとしても知られている)モジュールまたは(リモートまたはクラウド)コントローラは、クライアントモジュールおよび/またはクライアントコントローラに代わっていくつかの機能性を実現し得る。
【0176】
上記で使用される場合のコードという用語は、ソフトウェア、ファームウェア、および/またはマイクロコードを含み得、プログラム、ルーチン、関数、クラス、データ構造、および/またはオブジェクトを指し得る。共有プロセッサ回路という用語は、複数のモジュールおよび/またはコントローラからの一部またはすべてのコードを実行する単一のプロセッサ回路を包含する。グループプロセッサ回路という用語は、追加のプロセッサ回路と組み合わせて、1つ以上のモジュールおよび/またはコントローラからの一部またはすべてのコードを実行するプロセッサ回路を包含する。複数のプロセッサ回路への言及は、ディスクリートのダイ上の複数のプロセッサ回路、単一のダイ上の複数のプロセッサ回路、単一のプロセッサ回路の複数のコア、単一のプロセッサ回路の複数のスレッド、または上記の組み合わせを包含する。共有メモリ回路という用語は、複数のモジュールおよび/またはコントローラからの一部またはすべてのコードを記憶する単一のメモリ回路を包含する。グループメモリ回路という用語は、追加のメモリと組み合わせて、1つ以上のモジュールおよび/またはコントローラからの一部またはすべてのコードを記憶するメモリ回路を包含する。
【0177】
メモリ回路という用語は、コンピュータ可読媒体という用語のサブセットである。本明細書で使用される場合のコンピュータ可読媒体という用語は、媒体を通って伝搬する一過性の電気信号または電磁信号(搬送波上など)を包含せず、したがって、コンピュータ可読媒体という用語は、有形かつ非一過性と見なされ得る。非一過性の、有形のコンピュータ可読媒体の非限定的な例は、不揮発性メモリ回路(フラッシュメモリ回路、消去可能なプログラム可能な読み取り専用メモリ回路、またはマスク読み取り専用メモリ回路など)、揮発性メモリ回路(静的ランダムアクセスメモリ回路または動的ランダムアクセスメモリ回路など)、磁気記憶媒体(アナログまたはデジタル磁気テープまたはハードディスクドライブなど)、および光記憶媒体(CD、DVD、またはBlu-ray(登録商標)ディスクなど)である。
【0178】
本出願に記載された装置および方法は、コンピュータプログラムに具体化された1つ以上の特定の機能を実行するように汎用コンピュータを構成することによって作り出された専用コンピュータによって部分的または完全に実装され得る。上述した機能ブロックおよびフローチャート要素は、熟練した技術者またはプログラマの日常業務によってコンピュータプログラムに書き換えられ得るソフトウェア仕様として作用する。
【0179】
コンピュータプログラムは、少なくとも1つの非一過性の、有形のコンピュータ可読媒体上に記憶されたプロセッサ実行可能命令を含む。コンピュータプログラムはまた、記憶されたデータを含むか、またはそれに依存し得る。コンピュータプログラムは、専用コンピュータのハードウェアと相互作用する基本入力/出力システム(BIOS)、専用コンピュータの特定のデバイスと相互作用するデバイスドライバ、1つ以上のオペレーティングシステム、ユーザアプリケーション、バックグラウンドサービス、バックグラウンドアプリケーションなどを包含し得る。
【0180】
コンピュータプログラムは、(i)HTML(ハイパーテキストマークアップ言語)またはXML(拡張マークアップ言語)などの解析対象である記述テキスト、(ii)アセンブリコード、(iii)コンパイラによってソースコードから生成されたオブジェクトコード、(iv)インタプリタによる実行用のソースコード、(v)ジャストインタイムコンパイラなどによるコンパイルおよび実行用のソースコードを含み得る。例のみとして、ソースコードは、C、C++、C#、Objective C、Haskell、Go、SQL、R、Lisp、Java(登録商標)、Fortran、Perl、Pascal、Curl、OCaml、Javascript(登録商標)、HTML5、Ada、ASP(アクティブサーバページ)、PHP、Scala、Eiffel、Smalltalk、Erlang、Ruby、Flash(登録商標)、Visual Basic(登録商標)、Lua、およびPython(登録商標)を含む言語の構文を使用して書かれ得る。
【0181】
特許請求の範囲に列挙された要素のいずれも、要素が、「のための手段」という語句を使用して明示的に列挙されていない限り、または「のための動作」または「のためのステップ」という語句を使用した方法の請求項の場合米国特許法第112条(f)の意味の範囲内のミーンズプラスファンクションの要素であることは、意図されていない。
【0182】
2018年6月18日に出願された「Multi-Path or Multi-Stage Cache Improvement」と題された米国仮特許出願第62/686,333号は、参照によりその全体が本明細書に組み込まれ、図を含む組み込まれた参照の内容は、この特許出願の一部であると見なされるものである。
【手続補正書】
【提出日】2023-12-22
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
プロセッサと共に使用するためのデータ記憶およびアクセスシステムであって、
メインメモリとして機能し、プロセッサキャッシュを有する前記プロセッサからデータ要求を受信するように構成された、ファイナルレベルキャッシュ(FLC)キャッシュシステムを備え、前記FLCキャッシュシステムが、
第1のFLCコントローラおよび第1のメモリを有する第1のFLCモジュールであって、前記第1のFLCモジュールが、前記プロセッサから前記データ要求を受信する、第1のFLCモジュールと、
第2のFLCコントローラおよび第2のメモリを有する第2のFLCモジュールであって、前記第2のFLCモジュールが、前記第1のFLCモジュールが前記プロセッサによって要求された前記データを有していないことに応答して、前記第1のFLCモジュールから前記データ要求を受信し、メインメモリを有する記憶ドライブに前記データ要求を回送し、前記データ要求によって識別される前記データを取り出す、システム。
【請求項2】
前記データ要求が、物理アドレスを含み、前記第1のFLCコントローラが、前記物理アドレスを第1の仮想アドレスに書き換えるように構成された第1のFLCコントローラルックアップテーブルを含む、請求項1に記載のシステム。
【請求項3】
前記第1のFLCコントローラルックアップテーブルが前記物理アドレスを含まない場合に、前記第1のFLCコントローラが、前記物理アドレスを有する前記データ要求を前記第2のFLCコントローラに回送するように構成されている、請求項2に記載のシステム。
【請求項4】
前記第2のFLCコントローラが、前記物理アドレスを第2の仮想アドレスに書き換えるように構成された第2のFLCコントローラルックアップテーブルを含む、請求項3に記載のシステム。
【請求項5】
前記第2のFLCコントローラルックアップテーブルが前記物理アドレスを含まない場合に、前記第2のFLCコントローラが、前記物理アドレスを有する前記データ要求を前記記憶ドライブに回送するように構成されている、請求項4に記載のシステム。
【請求項6】
前記第1のFLCモジュールが、前記第2のFLCモジュールよりも、高速、低消費電力、またはその両方である、請求項1に記載のシステム。
【請求項7】
前記第1のメモリが、DRAMであり、かつ第1のメモリコントローラを含み、前記第2のメモリが、DRAMであり、かつ第2のメモリコントローラを含む、請求項1に記載のシステム。
【請求項8】
前記記憶ドライブは、磁気ディスクドライブ、ソリッドステートメモリ、またはハイブリッドドライブである、請求項1に記載のシステム。
【請求項9】
前記第1のメモリおよび前記第2のメモリの各々が、シリアルDRAMである、請求項1に記載のシステム。
【請求項10】
前記第1のFLCモジュールが、前記第2のFLCモジュールの少なくとも2倍の速さである、請求項1に記載のシステム。
【請求項11】
前記第1のFLCモジュールおよび前記第2のFLCモジュールが、将来アクセスされることが予想されるアドレスに記憶されたデータの予測フェッチを実行するように構成されている、請求項1に記載のシステム。
【請求項12】
データアクセスシステムを動作させる方法であって、前記データアクセスシステムが、第1のファイナルレベルキャッシュ(FLC)コントローラおよび第1のDRAMを含む第1のFLCモジュールと、第2のFLCコントローラおよび第2のDRAMを含む第2のFLCモジュールと、を備え、
プロセッサから、物理アドレスを含む、データの要求を受信することと、
データの前記要求を前記第1のFLCモジュールに提供することと、
前記第1のFLCコントローラが前記物理アドレスを含むかどうかを判定することと、
前記第1のFLCコントローラが前記物理アドレスを含むことに応答して、前記第1のDRAMから前記データを取り出し、前記データを前記プロセッサに提供することと、
前記第1のFLCコントローラが前記物理アドレスを含まないことに応答して、データの前記要求および前記物理アドレスを前記第2のFLCモジュールに回送することと、
前記第2のFLCコントローラが前記物理アドレスを含むがどうかを判定することと、
前記第2のFLCコントローラが前記物理アドレスを含むことに応答して、前記第2のDRAMから前記データを含むキャッシュラインを取り出し、前記キャッシュラインを前記第1のFLCモジュールに提供することと、を含む、方法。
【請求項13】
前記第1のFLCコントローラが前記物理アドレスを含むかどうかを判定することが、前記判定にかかる時間を低減するために、前記第1のFLCコントローラ内の、アドレスエントリを記憶するアドレスキャッシュにアクセスすることを含む、請求項12に記載の方法。
【請求項14】
前記第2のFLCコントローラが前記物理アドレスを含まないことに応答して、データの前記要求および前記物理アドレスを記憶ドライブに回送することをさらに含む、請求項12に記載の方法。
【請求項15】
前記記憶ドライブが、メインメモリとして予約された前記記憶ドライブの一部分から前記データを取り出し、前記データを前記第2のFLCモジュールに提供することをさらに含む、請求項14に記載の方法。
【請求項16】
前記第1のFLCコントローラが前記物理アドレスを含むこと、および前記プロセッサへの前記データの前記提供に応答して、前記データを含むキャッシュラインの最近の使用を反映するステータスレジスタを更新することをさらに含む、請求項12に記載の方法。
【請求項17】
前記第2のDRAMから前記データを取り出し、前記データを前記第1のFLCモジュールに提供することが、前記物理アドレスを前記第1のFLCコントローラに記憶すること、および前記データを前記第1のDRAMに記憶することをさらに含む、請求項12に記載の方法。
【請求項18】
前記第1のDRAMが利用可能な空間を有していない場合には、前記第1のDRAMから最も過去に使用されたデータを削除して、前記データのための空間を作成する、請求項17に記載の方法。
【請求項19】
プロセッサと共に使用するためのデータ記憶およびアクセスシステムであって、
前記プロセッサと通信して第1のデータの第1のデータ要求と、第2のデータの第2のデータ要求とを受信する第1のファイナルレベルキャッシュ(FLC)キャッシュシステムであって、メインメモリキャッシュとして機能し、かつ前記第1のデータの前記第1のデータ要求を受信するように構成された、第1のFLCキャッシュシステムと、
メインメモリキャッシュとして機能し、かつ前記第2のデータの前記第2のデータ要求を受信するように構成された、前記プロセッサと通信する第2のFLCキャッシュシステムと、
メインメモリパーティションを有し、前記メインメモリパーティションがメインメモリとして機能するように、構成された記憶ドライブと、を備える、システム。
【請求項20】
システムバスをさらに備え、前記プロセッサが、各FLCキャッシュシステムに割り当てられたアドレスがインターリーブされるように、前記システムバスを介して前記第1のFLCキャッシュシステムおよび前記第2のFLCキャッシュシステムと通信する、請求項19に記載のシステム。
【請求項21】
前記第1のデータが、前記第1のFLCキャッシュシステムに含まれない場合には、前記第1のデータ要求が、前記記憶ドライブの前記メインメモリパーティションから前記第1のデータを取り出すために、前記記憶ドライブに送信され、
前記第2のデータが、前記第2のFLCキャッシュシステムに含まれない場合には、前記第2のデータ要求が、前記記憶ドライブの前記メインメモリパーティションから前記第1のデータを取り出すために、前記記憶ドライブに送信される、請求項19に記載のシステム。
【請求項22】
前記第1のFLCキャッシュシステムが、第1のFLCモジュールおよび第2のFLCモジュールを備え、前記第2のFLCキャッシュシステムが、第3のFLCモジュールおよび第4のFLCモジュールを備える、請求項19に記載のシステム。
【請求項23】
前記FLCモジュールの各々が、FLCコントローラおよびメモリを備える、請求項22に記載のシステム。
【請求項24】
各前記FLCモジュールが、専用かつ一意のルックアップテーブルを維持する、請求項23に記載のシステム。
【外国語明細書】