(57)【要約】  プロセッサ、メインメモリ用の複数のキャッシュモジュール、および記憶ドライブを含むデータアクセスシステム。キャッシュモジュールは、ＦＬＣコントローラおよびメインメモリキャッシュを含む。複数のキャッシュモジュールは、メインメモリとして機能する。プロセッサは、読み取り／書き込み要求（物理アドレスを有する）をキャッシュモジュールに送信する。キャッシュモジュールは、２つ以上のステージを含み、各ステージは、ＦＬＣコントローラおよびＤＲＡＭ（関連付けられたコントローラを有する）を含む。第１のステージのＦＬＣモジュールが、物理アドレスを含まない場合、要求は、第２のステージのＦＬＣモジュールに回送される。第２のステージのＦＬＣモジュールが、物理アドレスを含まない場合、要求は、記憶ドライブに回送され、パーティションが、メインメモリ用に予約される。第１のステージのＦＬＣモジュールは、高速度、より低い電力で動作する一方、第２のステージのＦＬＣは、低コストの実装である。複数のＦＬＣモジュールが、並列にプロセッサに接続され得る。
2021530028.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと共に使用するためのデータ記憶およびアクセスシステムであって、
プロセッサキャッシュを有するプロセッサであって、前記プロセッサが、データのデータ要求を生成するように構成されている、プロセッサ、
メインメモリとして機能し、かつ前記データ要求を受信するように構成されたＦＬＣキャッシュシステムであって、前記ＦＬＣシステムが、
第１のＦＬＣコントローラおよび第１のメモリを有する第１のＦＬＣモジュールであって、前記第１のＦＬＣモジュールが、前記プロセッサからの前記データ要求を受信する、第１のＦＬＣモジュールと、
第２のＦＬＣコントローラおよび第２のメモリを有する第２のＦＬＣモジュールであって、前記第２のＦＬＣモジュールが、前記第１のＦＬＣモジュールが前記プロセッサによって要求された前記データを有していないことに応答して、前記第１のＦＬＣモジュールから前記データ要求を受信する、第２のＦＬＣモジュールと、を備える、ＦＬＣキャッシュシステム、
ユーザファイル記憶部分およびメインメモリ部分を有し、前記第２のＦＬＣモジュールが要求された前記データを有していないことに応答して前記データ要求を受信するように、構成された記憶ドライブ、を備える、システム。
【請求項２】
前記データ要求が、物理アドレスを含み、第１のＦＬＣコントローラが、前記物理アドレスを第１の仮想アドレスに書き換えるように構成されたループアップテーブルを含む、請求項１に記載のシステム。
【請求項３】
前記第１のＦＬＣコントローラルックアップテーブルが前記物理アドレスを含まない場合に、前記第１のＦＬＣコントローラが、前記物理アドレスを有する前記データ要求を前記第２のＦＬＣコントローラに回送するように構成されている、請求項２に記載のシステム。
【請求項４】
前記第２のＦＬＣコントローラが、前記物理アドレスを第２の仮想アドレスに書き換えるように構成されたループアップテーブルを含む、請求項３に記載のシステム。
【請求項５】
前記第２のＦＬＣコントローラルックアップテーブルが前記物理アドレスを含まない場合に、前記第２のＦＬＣコントローラが、前記物理アドレスを有する前記データ要求を前記記憶ドライブに回送するように構成されている、請求項４に記載のシステム。
【請求項６】
前記第１のＦＬＣモジュールが、前記第２のＦＬＣモジュールよりも、高速であり、かつ消費電力がより少ない、請求項１に記載のシステム。
【請求項７】
前記第１のメモリが、ＤＲＡＭであり、かつ第１のメモリコントローラを含み、前記第２のメモリが、ＤＲＡＭであり、かつ第２のメモリコントローラを含む、請求項１に記載のシステム。
【請求項８】
前記記憶ドライブが、磁気ディスクドライバ、ソリッドステートメモリ、またはハイブリッドドライブである、請求項１に記載のシステム。
【請求項９】
前記ＤＲＡＭが、シリアルＤＲＡＭである、請求項１に記載のシステム。
【請求項１０】
前記第１のＦＬＣモジュールが、前記第２のＦＬＣモジュールの少なくとも２倍の速さである、請求項１に記載のシステム。
【請求項１１】
前記第１のＦＬＣモジュールおよび前記第２のＦＬＣモジュールが、将来アクセスされることが予想されるアドレスに記憶されたデータの予測フェッチを実行するように構成されている、請求項１に記載のシステム。
【請求項１２】
データアクセスシステムを動作させる方法であって、前記データアクセスシステムが、プロセッサキャッシュを有するプロセッサと、記憶ドライブと、第１のＦＬＣコントローラおよび第１のＤＲＡＭを含む第１のＦＬＣモジュールと、第２のＦＬＣコントローラおよび第２のＤＲＡＭを含む第２のＦＬＣモジュールと、を備え、
前記プロセッサで、物理アドレスを含む、データの要求を生成することと、
データの前記要求を前記第１のＦＬＣモジュールに提供することと、
前記第１のＦＬＣコントローラが前記物理アドレスを含むかどうかを判定することと、
前記第１のＦＬＣコントローラが前記物理アドレスを含むことに応答して、前記第１のＤＲＡＭから前記データを取り出し、前記データを前記プロセッサに提供することと、
前記第１のＦＬＣコントローラが前記物理アドレスを含まないことに応答して、データの前記要求および前記物理アドレスを前記第２のＦＬＣモジュールに回送することと、
前記第２のＦＬＣコントローラが前記物理アドレスを含むかどうかを判定することと、
前第２のＦＬＣコントローラが前記物理アドレスを含むこと応答して、前記第２のＤＲＡＭから前記データを含むキャッシュラインを取り出し、前記キャッシュラインを前記第１のＦＬＣモジュールに提供することと、を含む、方法。
【請求項１３】
前記第１のＦＬＣコントローラが前記物理アドレスを含むかどうかを判定することが、前記判定にかかる時間を低減するために、前記第１のＦＬＣコントローラ内の、アドレスエントリを記憶するアドレスキャッシュにアクセスすることを含む、請求項１２に記載の方法。
【請求項１４】
前記第２のＦＬＣコントローラが前記物理アドレスを含まないことに応答して、データの前記要求および前記物理アドレスを前記記憶ドライブに回送することをさらに含む、請求項１２に記載の方法。
【請求項１５】
前記記憶ドライブが、メインメモリとして予約された前記記憶ドライブの一部分から前記データを取り出し、前記データを前記第２のＦＬＣモジュールに提供することをさらに含む、請求項１４に記載の方法。
【請求項１６】
前記第１のＦＬＣコントローラが前記物理アドレスを含むこと、および前記プロセッサへの前記データの前記提供に応答して、前記データを含むキャッシュラインの最近の使用を反映するステータスレジスタを更新することをさらに含む、請求項１２に記載の方法。
【請求項１７】
前記第２のＤＲＡＭから前記データを取り出し、前記データを前記第１のＦＬＣモジュールに提供することが、前記物理アドレスを前記第１のＦＬＣコントローラに記憶すること、および前記データを前記第１のＤＲＡＭに記憶することをさらに含む、請求項１２に記載の方法。
【請求項１８】
前記第１のＤＲＡＭが利用可能な空間を有していない場合には、前記第１のＤＲＡＭから最も過去に使用されたデータを削除して、前記データのための空間を作成する、請求項１７に記載の方法。
【請求項１９】
プロセッサで使用するためのデータ記憶およびアクセスシステムであって、
プロセッサキャッシュを有するプロセッサであって、前記プロセッサが、第１のデータの第１のデータ要求と、第２のデータの第２のデータ要求と、を生成するように構成されている、プロセッサと、
メインメモリキャッシュとして機能し、かつ前記第１のデータの前記第１のデータ要求を受信するように構成された、前記プロセッサと通信する第１のＦＬＣキャッシュシステムと、
メインメモリキャッシュとして機能し、かつ前記第２のデータの前記第２のデータ要求を受信するように構成された、前記プロセッサと通信する第２のＦＬＣキャッシュシステムと、
ユーザファイル記憶部分およびメインメモリパーティションを有し、記憶ドライブの前記メインメモリパーティションがメインメモリとして機能するように、構成された記憶ドライブと、を備える、システム。
【請求項２０】
システムバスをさらに備え、前記プロセッサが、各ＦＬＣキャッシュシステムに割り当てられたアドレスがインターリーブされるように、前記システムバスを介して前記第１のＦＬＣキャッシュシステムおよび前記第２のＦＬＣキャッシュシステムと通信する、請求項１９に記載のシステム。
【請求項２１】
前記第１のデータが、前記第１のＦＬＣキャッシュシステムに含まれない場合には、前記第１のデータ要求が、前記記憶ドライブの前記メインメモリパーティションから前記第１のデータを取り出すために、前記記憶ドライブに送信され、
前記第２のデータが、前記第２のＦＬＣキャッシュシステムに含まれない場合には、前記第２のデータ要求が、前記記憶ドライブの前記メインメモリパーティションから前記第１のデータを取り出すために、前記記憶ドライブに送信される、請求項１９に記載のシステム。
【請求項２２】
前記第１のＦＬＣキャッシュシステムが、第１のＦＬＣモジュールおよび第２のＦＬＣモジュールを備え、前記第２のＦＬＣキャッシュシステムが、第３のＦＬＣモジュールおよび第４のＦＬＣモジュールを備える、請求項１９に記載のシステム。
【請求項２３】
前記ＦＬＣモジュールの各々が、ＦＬＣコントローラおよびメモリを備える、請求項２２に記載のシステム。
【請求項２４】
各前記ＦＬＣモジュールが、専用かつ一意のルックアップテーブルを維持する、請求項２３に記載のシステム。
【請求項２５】
プロセッサと共に使用するためのデータ記憶およびアクセスシステムであって、
メインメモリキャッシュとして機能し、かつ処理デバイスからデータ要求を受信するように構成されたＦＬＣキャッシュシステムであって、前記プロセッサデバイスが、プロセッサキャッシュを有する、ＦＬＣキャッシュシステムを備え、前記ＦＬＣシステムが、
第１のＦＬＣコントローラおよび第１のキャッシュメモリを有する第１のＦＬＣモジュールであって、前記第１のＦＬＣモジュールが、前記プロセッサから前記データ要求を受信する、第１のＦＬＣモジュール、
第２のＦＬＣコントローラおよび第２のキャッシュメモリを有する第２のＦＬＣモジュールであって、前記第２のＦＬＣモジュールが、
前記第１のＦＬＣモジュールが前記プロセッサによって要求された前記データを有していないことに応答して、前記第２のＦＬＣモジュールが、前記第１のＦＬＣモジュールから前記データ要求を受信することと、
前記第２のＦＬＣモジュールが前記プロセッサによって要求された前記データを有していないことに応答して、前記第２のＦＬＣモジュールが、前記データ要求を、メインメモリとして作用する一部分を有して構成された記憶ドライブに送信することと、のように構成されている、第２のＦＬＣモジュール、を備える、システム。
【請求項２６】
ユーザファイル記憶部分およびメインメモリ部分を有し、前記第２のＦＬＣモジュールから応答された前記データ要求を受信し、前記要求されたデータを前記第２のＦＬＣモジュールに提供するように、構成された記憶ドライブをさらに備える、請求項２５に記載のシステム。
【請求項２７】
前記記憶ドライブが、ネットワーク接続を介してアクセスされる、請求項２５に記載のシステム。
【請求項２８】
前記第２のＦＬＣモジュールの容量が、前記第１のＦＬＣモジュールの容量よりも少なくとも８倍大きい、請求項２５に記載のシステム。
【請求項２９】
前記第１のＦＬＣモジュールおよび前記第２のＦＬＣモジュールが、データをキャッシュラインに記憶し、サイズが、前記キャッシュラインが、オペレーティングシステムページサイズと同じである、請求項２５に記載のシステム。
【請求項３０】
前記第１のＦＬＣコントローラルックアップテーブルが、少なくとも４ＫＢのキャッシュラインサイズを用いたセット連想であり、前記第２のＦＬＣコントローラルックアップテーブルが、完全連想である、請求項２５に記載のシステム。
【請求項３１】
前記第１のＦＬＣモジュールが、第１のＤＲＡＭを含み、前記第２のＦＬＣモジュールが、第２のＤＲＡＭを含み、前記第１のＤＲＡＭおよび第２のＤＲＡＭが、シングルレベルセルタイプのＤＲＡＭである、請求項２５に記載のシステム。
【請求項３２】
前記第１のメモリが、ＤＲＡＭであり、かつ第１のメモリコントローラを含み、前記第２のメモリが、ＤＲＡＭであり、かつ第２のメモリコントローラを含む、請求項３１に記載のシステム。
【請求項３３】
前記第１のＦＬＣモジュールおよび前記第２のＦＬＣモジュールが、将来アクセスされることが予想されるアドレスに記憶されたデータの予測フェッチを実行するように構成されている、請求項２５に記載のシステム。
【請求項３４】
第１のキャッシュメモリおよび前記第２のキャッシュメモリが、ＤＲＡＭを備え、１つ以上の故障したセクションが使用からロックアウトされるように構成されている、請求項２５に記載のシステム。
【請求項３５】
第１のキャッシュメモリおよび前記第２のキャッシュメモリが、ＤＲＡＭを備え、メモリの１つ以上のセクションが、メモリの残りのセクションの健全性チェック中に一時的に使用不能状態に置かれるように構成されている、請求項２５に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
発明者
セハト  スタルジャ（ＳＥＨＡＴ  ＳＵＴＡＲＤＪＡ）
１．優先権主張。
【０００２】
この出願は、２０１８年６月１８日に出願された米国仮特許出願第６２／６８６，３３３号の優先権および利益を主張し、その内容は、その全体が参照によって本明細書に組み込まれる。
【０００３】
２．技術分野
本開示は、集積回路およびコンピュータシステム、より具体的にはコンピュータのメインメモリに関する。
【背景技術】
【０００４】
３．背景技術
コンピューティングデバイス（サーバ、ＰＣ、携帯電話、タブレットなど）は通常、プロセッサまたはシステムオンチップ（ＳｏＣ）を含む。図１は、プロセッサまたはＳｏＣ１２と、１つ以上のダイナミックランダムアクセスメモリ（ＤＲＡＭ）１４からなるメインメモリと、を含むデバイス１０の例を示す。ＤＲＡＭ１４は、ＳｏＣ１２に接続されているがＳｏＣ１２から分離された１つ以上の集積回路として実装できる。デバイス１０はまた、ＳｏＣ１２のポート１７に接続された１つ以上の記憶ドライブ１６を含むことができる。記憶ドライブ１６は、フラッシュメモリ、ソリッドステートドライブ、ハードディスクドライブ、および／またはハイブリッドドライブを含むことができる。ハイブリッドドライブは、ソリッドステートメモリを有するソリッドステートドライブと、回転する記憶媒体を有するハードディスクドライブと、を含む。
【０００５】
ＳｏＣ１２は、１つ以上の画像処理デバイス２０、システムバス２２、およびメモリコントローラ２４を含むことができる。画像処理デバイス２０の各々は、例えば、中央プロセッサ（または中央処理装置（ＣＰＵ））２８を有する制御モジュール２６、グラフィックプロセッサ（またはグラフィック処理装置（ＧＰＵ））３０、ビデオレコーダ３２、カメラ画像信号プロセッサ（ＩＳＰ）３４、ギガビット（Ｇｂ）Ｅｔｈｅｒｎｅｔ（登録商標）インターフェース３６などのＥｔｈｅｒｎｅｔ（登録商標）インターフェース、ユニバーサルシリアルバス（ＵＳＢ）インターフェース３８およびシリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）インターフェース４０などのシリアルインターフェース、および周辺コンポーネント相互接続エクスプレス（ＰＣＩｅ）インターフェース４２を含むことができる。画像処理デバイス２０は、システムバス２２およびメモリコントローラ２４を介してＤＲＡＭ１４にアクセスする。ＤＲＡＭ１４は、メインメモリとして使用される。例えば、画像処理デバイス２０のうちの１つは、ＤＲＡＭ１４のうちの１つにおける対応する物理ロケーションにアクセスするときに、メモリコントローラ２４に物理アドレスを提供する。画像処理デバイス２０はまた、システムバス２２を介して記憶ドライブ１６にアクセスすることができる。
【０００６】
ＳｏＣ１２および／またはメモリコントローラ２４は、ＳｏＣ１２の１つ以上のアクセスポート４４を介してＤＲＡＭ１４に接続できる。ＤＲＡＭ１４は、ユーザデータ、システムデータ、および／またはプログラムを記憶する。ＳｏＣ１２は、第１のデータを使用してプログラムを実行して、第２のデータを生成することができる。第１のデータは、プログラムの実行前にＤＲＡＭ１４に記憶できる。ＳｏＣ１２は、プログラムの実行中および／または実行に続いて、第２のデータをＤＲＡＭ１４に記憶することができる。ＤＲＡＭ１４は、高帯域幅インターフェースおよびビット当たりのコストが低いメモリ記憶容量を有することができ、幅広い用途を扱うことができる。
【０００７】
ＳｏＣ１２は、レベル０（Ｌ０）キャッシュ、レベル１（Ｌ１）キャッシュ、レベル２（Ｌ２）キャッシュ、またはレベル３（Ｌ３）キャッシュのうちの１つ以上を含むことができるキャッシュメモリを含む。Ｌ０〜Ｌ３キャッシュは、画像処理デバイス２０の対応するものに近接してＳｏＣ１２上に配置されている。示された例では、制御モジュール２６は、中央プロセッサ２８およびＬ１〜Ｌ３キャッシュ５０を含む。中央プロセッサ２８は、Ｌ０キャッシュ５２を含む。中央プロセッサ２８はまた、キャッシュ５０、５２へのアクセスを制御することができるメモリ管理ユニット（ＭＭＵ）５４を含む。
【０００８】
キャッシュのレベルが上がるにつれて、キャッシュのアクセス遅延および記憶容量が増加する。例えば、Ｌ１キャッシュは通常、Ｌ２キャッシュおよびＬ３キャッシュよりも小さい記憶容量を有する。ただし、Ｌ１キャッシュは通常、Ｌ２キャッシュおよびＬ３キャッシュよりも低遅延である。
【０００９】
ＳｏＣ１２内のキャッシュは通常、スタティックランダムアクセスメモリ（ＳＲＡＭ）として実装されている。キャッシュが画像処理デバイス２０に極近接しているため、キャッシュは、画像処理デバイス２０と同じクロック周波数で動作することができる。したがって、キャッシュは、ＤＲＡＭ１４よりも短い遅延期間を呈する。
【００１０】
ＳｏＣ１２のキャッシュの数およびサイズは、用途に依存する。例えば、エントリレベルのハンドセット（または携帯電話）は、Ｌ３キャッシュが含まない場合があり、パーソナルコンピュータよりも小さいサイズのＬ１キャッシュおよびＬ２キャッシュを有し得る。同様に、ＤＲＡＭ１４の各々の数およびサイズは、用途に依存する。例えば、携帯電話は現在、４〜１２ギガバイト（ＧＢ）のＤＲＡＭを有し、パーソナルコンピュータは現在、８〜３２ＧＢのＤＲＡＭを有し、サーバは現在、３２ＧＢ〜５１２ＧＢのＤＲＡＭを有する。一般に、ＤＲＡＭチップの数が増加するにつれて、メインメモリが大規模となってコストが増加する。
【００１１】
ＤＲＡＭのコストに加えて、同じ量の記憶容量に対してＤＲＡＭのパッケージサイズを減少させることが、ますます困難になっている。また、デバイスに組み込まれるＤＲＡＭのサイズおよび数が増加すると、ＤＲＡＭの静電容量が増加し、ＤＲＡＭと関連付けられた導電素子の数および／または長さが増加し、ＤＲＡＭと関連付けられたバッファリングが増加する。加えて、ＤＲＡＭの静電容量が増加するにつれて、ＤＲＡＭの動作周波数が減少し、ＤＲＡＭの遅延期間が増加する。
【００１２】
動作中、プログラムおよび／またはデータは、必要に応じて、ＤＲＡＭ１４からＳｏＣ１２のキャッシュに転送される。これらの転送は、（ｉ）キャッシュと、（ｉｉ）対応するプロセッサおよび／または画像処理デバイスと、の間のデータ交換と比較して高遅延である。この理由で、ＤＲＡＭ１４へのアクセスは、より大きいＬ３キャッシュでＳＯＣを構築することによって、最小限に抑えられる。Ｌ３キャッシュがますます大きくなっているにもかかわらず、年々コンピューティングシステムは、ますます多くのＤＲＡＭ（より大きなメインメモリ）を必要とし続けている。他のすべてが等しい場合、大きいメインメモリを有するコンピュータほど、小さいメインメモリを有するコンピュータよりも性能が良好である。今日のオペレーティングシステムでは、４ＧＢのメインメモリを有する最新のＰＣは、最速かつ最良のプロセッサが備えられていても、実際は極度に性能が低い。次に、コンピュータのメインメモリサイズが経時的に増加し続ける理由について説明する。
【００１３】
起動中に、プログラムが、記憶ドライブ１６からＤＲＡＭ１４に転送できる。例えば、中央プロセッサ２８は、起動中に記憶ドライブ１６からＤＲＡＭ１４にプログラムを転送することができる。プログラムがＤＲＡＭに完全にロードされた場合にのみ、中央プロセッサ２８は、ＤＲＡＭに記憶された命令を実行することができる。ＣＰＵが一度に１つずつプログラムを実行する必要があり、かつＣＰＵが新たなプログラムを立ち上げる前に前のプログラムを強制終了する間にユーザが待機しようとする場合、コンピュータシステムには、実際には極小規模のメインメモリが必要である。しかしながら、このことは、新たなプログラムを立ち上げてその場でプログラムを切り替えるときの瞬時の応答時間にもはや慣れている消費者には受け入れられない。この理由で、年々コンピュータが、常により多くのＤＲＡＭを必要とし、ＤＲＡＭ企業が、優先してより大きなＤＲＡＭを製造することが確立されている。
【発明の概要】
【００１４】
先行技術の欠点を克服し、かつ追加の利点を提供するために、プロセッサで使用するためのデータ記憶およびアクセスシステムが開示されている。プロセッサは、データのデータ要求を生成するように構成されており、データ要求は、物理アドレスを含み得る。この実施形態では、ＦＬＣキャッシュシステムを使用してコンピュータのメインメモリを仮想化することにより、メインメモリが、フラッシュメモリなどのはるかに低コストのメモリデバイスからなり得るようになり、かつコンピュータを、以前に可能であったよりもはるかに小さい容量のＤＲＡＭを使用して構築できる。ＦＬＣシステムは、第１のＦＬＣコントローラおよび第１のメモリを有する第１のＦＬＣモジュールを備え、第１のＦＬＣモジュールが、プロセッサからデータ要求を受信するようになっている。第２のＦＬＣモジュールは、第２のＦＬＣコントローラおよび第２のメモリを含む。第１のＦＬＣモジュールは、第１のＦＬＣモジュールがプロセッサによって要求されたデータを有していないことに応答して、第１のＦＬＣモジュールからデータ要求を受信する。記憶ドライブが、提供され、ユーザファイル記憶部分／パーティションおよびメインメモリ部分／パーティションを有して構成されている。第２のＦＬＣモジュールが、第１のＦＬＣモジュールによって要求されたデータを有していない場合、記憶ドライブは、データ要求を受信する。２ステージＦＬＣシステムを採用することによって、第１のＦＬＣモジュールが、自由に、プロセッサ要求にほぼ役立ち得るようになると同時に、第２のＦＬＣモジュールが、第１のＦＬＣモジュールの性能に影響を与えることなく記憶ドライブからデータを出し入れすることを自由にされる。
【００１５】
一実施形態では、データ要求は、物理アドレスを含み、第１のＦＬＣコントローラは、第１のＦＬＣコントローラが物理アドレスエントリを含む場合に、物理アドレスを第１の仮想アドレスに書き換えるように構成されたループアップテーブルを含む。第１のＦＬＣコントローラは、第１のＦＬＣコントローラルックアップテーブルが物理アドレスエントリを含まない場合には、物理アドレスを有するデータ要求を第２のＦＬＣコントローラに回送するように構成されている。物理アドレスおよび物理アドレスエントリという用語は、本明細書では交換可能に使用され得る。第２のＦＬＣコントローラは、物理アドレスを第２の仮想アドレスに書き換えるように構成されたループアップテーブルを含み得る。さらに、第２のＦＬＣコントローラは、第２のＦＬＣコントローラルックアップテーブルが物理アドレスを含まない場合に、物理アドレスを有するデータ要求を記憶ドライブに回送するように構成されている。
【００１６】
一実施形態では、第１のＦＬＣモジュールは、従来のＤＲＡＭメインメモリのものよりもビット当たりのコストが高くなるという犠牲を払って、第２のＦＬＣモジュールよりも著しく速いアクセス時間、より低遅延、および消費電力がより少ないために最適化されている。ただし、第１のＦＬＣモジュールのメモリ容量が、第２のＦＬＣモジュールよりもはるかに小さいため、コストの増加は、実際には無視でき、より重要なことに、メインメモリを記憶ドライブに移動することによって、大幅なコスト削減がすでに達成されている。一構成では、第１のメモリは、カスタムメイドのＤＲＡＭであり、第１のメモリコントローラを含み、第２のメモリは、既製のコモディティＤＲＡＭからなり、第２のメモリコントローラを含む。実際のメインメモリが、物理的に記憶ドライブにあるようになったため、記憶ドライブは、適度に高速なソリッドステートメモリを使用することが好ましい。第２のＦＬＣモジュールへのミスがあると、ＤＲＡＭを使用するときに従来のメインメモリアクセスよりも１０００倍遅くなり、その影響は、最小限に抑えられなければならない。この理由で、ＦＬＣ完全連想の、かつ大規模なキャッシュライン技術が、提案されており、ミス率を無視できるように保持するための基本である。第１のＦＬＣモジュールおよび第２のＦＬＣモジュールは、これに加えて、将来アクセスされることが予想されるアドレスに記憶されたデータの予測フェッチを実行するように構成され得る。その上、ＦＬＣモジュールはまた、プロセッサまたはソフトウェアからヒント（命令）を取得して、現在記憶ドライブに在設されている最終メインメモリから第１のＦＬＣモジュールおよび／または第２のＦＬＣモジュールへのデータのプリフェッチを実行するように構成され得る。一実施形態では、処理デバイス上で実行中のソフトウェアは、次にどのようなデータ（コードを含む）が必要であるかを知ることができ、必要なときに必要なデータがそこにあるように、そのデータをＤＲＡＭキャッシュにプリフェッチするようにＦＬＣシステムに命令を提供することができる。そのデータは、標準速度ＦＬＣまたは高速度ＦＬＣにキャッシュされ得る。一実施形態では、数千のキャッシュラインが、プリフェッチされる。正確なプリフェッチは、１００％のヒット率につながり得る。
【００１７】
また、本明細書には、データアクセスシステムを動作させる方法が、開示されている。この実施形態では、データアクセスシステムは、プロセッサキャッシュと、記憶ドライブと、第１のＦＬＣコントローラおよび第１のＤＲＡＭを含む第１のＦＬＣモジュールと、第２のＦＬＣコントローラおよび第２のＤＲＡＭを含む第２のＦＬＣモジュールと、を有するプロセッサを備える。この方法は、プロセッサで、物理アドレスを含むデータの要求を生成することと、データの要求を第１のＦＬＣモジュールに提供することと、を含む。第１のＦＬＣモジュールで、第１のＦＬＣコントローラが物理アドレスエントリを含むかどうかを判定することと、第１のＦＬＣコントローラが物理アドレスエントリを含むことに応答して、第１のＤＲＡＭからデータを取り出し、データをプロセッサに提供すること。これに代えて、第１のＦＬＣコントローラが物理アドレスエントリを含まないことに応答して、データの要求および物理アドレスを第２のＦＬＣモジュールに回送すること。第２のＦＬＣモジュールにおいて、第２のＦＬＣコントローラが物理アドレスエントリを含むかどうかを判定することと、第２のＦＬＣコントローラが物理アドレスエントリを含むことに応答して、第２のＤＲＡＭからデータを取り出し（要求されたデータに関連する完全なキャッシュラインエントリの形式で）、要求されたキャッシュラインデータ（キャッシュラインに記憶されたデータ）を第１のＦＬＣモジュールに提供すること。
【００１８】
この方法は、第２のＦＬＣコントローラが物理アドレスを含まないことに応答して、データの要求（要求されたデータに対応するキャッシュラインの形態で）および物理アドレスを記憶ドライブに回送することをさらに含み得る。この方法はまた、記憶ドライブが、追加のメインメモリとして予約された記憶ドライブの一部分からデータを取り出し、次いでデータ（キャッシュライン）を第２のＦＬＣモジュールに提供することを含み得る。加えて、第１のＦＬＣコントローラが物理アドレスを含むことと、プロセッサへのデータの提供と、に応答して、ＦＬＣコントローラは、データを含むキャッシュラインの最近の使用を反映するステータスレジスタを更新する。
【００１９】
一実施形態では、第２のＤＲＡＭからデータを取り出し、データを第１のＦＬＣモジュールに提供することは、物理アドレスを第１のＦＬＣコントローラに記憶し、データを第１のＤＲＡＭに記憶することをさらに含む。第１のＤＲＡＭが利用可能な空き空間を有していない場合には、第１のＤＲＡＭおよび第１のＦＬＣアドレスルックアップエントリテーブルから最も過去に使用されたデータを削除して、新たなデータのための空間を作成する。さらに別の実施形態では、ＦＬＣモジュールは、ＤＲＡＭの一部分を将来のプロセッサ要求のために予備的に利用可能にし得る。第１のＦＬＣモジュールはまた、第１のＦＬＣモジュールのＤＲＡＭの一部分を予備的にクリーンにすることができることにより、オンデマンドで、第１のＦＬＣモジュールは、キャッシュラインに記憶されたエントリを消去して、新たなプロセッサ要求のための新たなエントリ用の空白を作成することができる。これは、ダーティキャッシュラインを第２のＦＬＣモジュールに書き戻すことによって行われる。オペレーティングシステムからのヒント（プリフェッチ要求）により、不要になったプログラム／データをＦＬＣ  ＤＲＡＭからさらに消去できる。これにより、時間および電力が節減される。さらに、そのことは、使用されなくなったプログラム／データがＳＳＤにパージされるたびに、ＳＳＤへの誤った書き込みを防止する。一実施形態では、第２のステージのＤＲＡＭ（本明細書ではＤＲＡＭ−ＳＳと呼ばれる）は、第１のステージのＤＲＡＭよりも約８倍大きい。一実施形態では、第２のステージのＤＲＡＭの一部分は、第１のステージのＤＲＡＭの全部または一部分を第２のステージのＤＲＡＭに移動するための空白を作成するために、クリーン（空）として予備的に維持される。一実施形態では、第２のステージのＤＲＡＭの少なくとも１０パーセントは、データのプリフェッチのために、または第１のステージのＤＲＡＭ内容物を第２のステージに移動するために、クリーンまたはオンデマンドでクリーンに維持される。一実施形態では、第１のステージのＤＲＡＭのサイズの少なくとも半分は、第２のステージのＤＲＡＭで空またはクリーン可能として維持される。一実施形態では、第２のステージのＤＲＡＭは、第１のステージのＤＲＡＭよりも少なくとも４倍大きい。一実施形態では、第２のステージのＤＲＡＭは、第１のステージのＤＲＡＭよりも少なくとも８倍大きい。一実施形態では、第２のステージのＤＲＡＭは、第１のステージのＤＲＡＭよりも少なくとも１６倍大きい。
【００２０】
また、本明細書には、プロセッサキャッシュを有するプロセッサを含むいくつかの要素を有するデータ記憶およびアクセスシステムが、開示されている。プロセッサは、第１のデータの第１のデータ要求を生成するように構成されている。また、このシステムの一部は、プロセッサと通信する第１のＦＬＣキャッシュシステムである。第１のＦＬＣキャッシュシステムは、極めて高いヒット率（９９．９％）の超高速メインメモリキャッシュ（第２のＦＬＣキャッシュシステムよりも高速）として機能するように構成されており、第１のデータの第１のデータ要求を受信する。一実施形態では、第１のＦＬＣキャッシュ（ＨＳ）は、第２のＦＬＣキャッシュ（ＳＳ）の少なくとも２倍の速度である。一実施形態では、第１のＦＬＣキャッシュ（ＨＳ）は、第２のＦＬＣキャッシュ（ＳＳ）の少なくとも４倍の速度である。第１のＦＬＣキャッシュシステムはまた、プロセッサが必要とする数万の独立したスレッドを記録するために設計されている。第２のＦＬＣキャッシュシステムが提供され、第２のＦＬＣキャッシュシステムは、第１のＦＬＣと通信し、第１のＦＬＣのセカンダリ（バックアップ）メインメモリキャッシュとして機能し、第２のデータの第２のデータ要求を受信するように構成されている。記憶ドライブは、記憶ドライブのメインメモリパーティションが実際のメインメモリとして機能するように、ユーザファイル記憶パーティションおよびメインメモリパーティションを有して構成されている。これに代えて、別個かつ専用の記憶ドライブが、実際のメインメモリとして使用されてもよい。さらに、好ましくは、記憶ドライブのメインメモリパーティションは、高信頼性用に構成されている。ＮＡＮＤフラッシュベースの記憶ドライブについて、メインメモリパーティションは、好ましくは、従来のトリプルまたはクアッドレベルセル（ＴＬＣ／ＱＬＣ）ではなく、シングルレベルセル（ＳＬＣ）を有して構成されている。
【００２１】
このシステムは、プロセッサがシステムバスを介して独立したＦＬＣキャッシュモジュールの複数のスライスと通信するシステムバスをさらに含み得る。一構成では、プロセッサによって要求された第１のデータが、第１のスライスＦＬＣキャッシュシステムに含まれない場合には、第１のデータ要求が、記憶ドライブに送信されて、記憶ドライブのメインメモリパーティションから第１のデータを取り出し、プロセッサによって要求されたさらに異なる第１のデータが、第２のスライスＦＬＣキャッシュシステムに含まれない場合には、第１のデータ要求が、記憶ドライブに送信されて、記憶ドライブのメインメモリパーティションから第１のデータを取り出す。第１のスライスＦＬＣキャッシュシステムが、第１のステージＦＬＣモジュールおよび第２のステージＦＬＣモジュールから構成され得、かつ第２のスライスＦＬＣキャッシュシステムは、第１のステージＦＬＣモジュールおよび第２のステージＦＬＣモジュールからなり得ることが想到される。加えて、ＦＬＣモジュールの各々は、専用のＦＬＣコントローラ、アドレスルックアップテーブル、およびメモリを含むとよい。
【００２２】
本開示の適用可能なさらなる領域は、詳細な説明、特許請求の範囲、および図面から明らかになるであろう。詳細な説明および特定の例は、例示のみの目的で意図されており、開示の範囲を限定することを意図するものではない。
【００２３】
本発明の他のシステム、方法、特徴、および長所は、以下の図および詳細な説明を検討すると、当業者に明らかであるか、または明らかになるであろう。そのようなすべての追加のシステム、方法、特徴、および利点は、この説明内に含まれ、本発明の範囲内にあり、付随する特許請求の範囲によって保護されることが意図されている。
【００２４】
図中の構成要素は、必ずしも一定の縮尺であるとは限らず、代わりに本発明の原理を例示することに重点が置かれている。図中、同様の参照番号は、異なるビュー全体にわたって対応する部分を指す。
【図面の簡単な説明】
【００２５】
【図１】先行技術によるデバイスの機能ブロック図である。
【図２】本開示の実施形態に従うデータアクセスシステムの機能ブロック図である。
【図３】図２のデータアクセスシステムのＤＲＡＭおよび記憶ドライブのエントリを例示する機能ブロック図である。
【図４】図２のデータアクセスシステムを動作させる方法を例示している。
【図５Ａ】カスケードされたＦＬＣシステムの例示的な実施形態のブロック図である。
【図５Ｂ】ＦＣＬコントローラの例示的な実施形態のブロック図である。
【図６】２つ以上のＦＬＣモジュールを有するカスケードされたＦＬＣモジュールのブロック図である。
【図７】図５Ａに示されているようなカスケードされたＦＬＣモジュールの例示的な動作方法の動作フロー図である。
【図８】２つ以上の別個のＦＬＣモジュールを有する分割ＦＬＣモジュールシステムのブロック図である。
【図９】図８に示されているような分割ＦＬＣモジュールの例示的な動作方法の動作フロー図である。
【図１０】バイパス経路を有するカスケードされたＦＬＣシステムの例示的な実施形態の例示的なブロック図である。
【図１１】図８に示されているような分割ＦＬＣモジュールの例示的な動作方法の動作フロー図である。
【図１２】バイパス経路およびキャッシュ不能なデータ経路を有するカスケードされたＦＬＣシステムの例示的な実施形態の例示的なブロック図である。
【図１３】図１２の実施形態の例示的な動作方法の動作フローチャートを提供する。
【発明を実施するための形態】
【００２６】
図面において、参照番号は、類似および／または同一の要素を識別するために再使用され得る。
【００２７】
説明
以下の例のうちの少なくともいくつかは、ファイナルレベルキャッシュ（ＦＬＣ）モジュールおよび記憶ドライブを含む。ＦＬＣモジュールは、メインメモリキャッシュとして使用され、記憶ドライブは、ユーザファイルの物理的記憶装置として使用され、また、記憶ドライブの一部分は、ＦＬＣモジュールによる実際のメインメモリとしての使用のためにパーティション化される。これは、実際のメインメモリがＤＲＡＭからなる従来のコンピュータとは対照的である。データはまず、ＦＬＣモジュールのＤＲＡＭから読み取られるか、またはＤＲＡＭへ書き込まれることが試行され、物理記憶ドライブのメインメモリ部分が、ＦＬＣモジュールからのミスが起ったときに最終手段のバックアップを提供する。ＦＬＣモジュール内のルックアップテーブルは、本明細書ではコンテンツ連想メモリ（ＣＡＭ）と呼ばれる。ＦＬＣモジュールのＦＬＣコントローラは、以下に記載された様々なＣＡＭ技術を使用して、ＦＬＣモジュール内のメモリおよび記憶ドライブへのアクセスを制御する。ＣＡＭ技術および他の開示された特徴は、メモリアクセスレートを最大化し、かつ電力消費を最小限に抑えながら、デバイス内のＤＲＡＭの必要な記憶能力を低減する。デバイスは、モバイルコンピューティングデバイス、デスクトップコンピュータ、サーバ、ネットワークデバイス、または無線ネットワークデバイスであり得る。デバイスの例として、コンピュータ、携帯電話、タブレット、カメラなどが挙げられるが、これらに限定されない。以下の例でのＤＲＡＭは、一般にメインメモリとして使用されずに、現在記憶ドライブの一部分にロケートされたはるかに遅いメインメモリのキャッシュとして使用される。したがって、記憶ドライブのパーティションは、メインメモリであり、ＤＲＡＭは、メインメモリのキャッシュである。
【００２８】
図２は、処理デバイス７２、システムバス７４、ＦＬＣモジュール７６、および記憶ドライブ７８を含むデータアクセスシステム７０を示す。データアクセスシステム７０は、例えば、コンピュータ、携帯電話、タブレット、サーバ、および／または他のデバイスに実装され得る。処理デバイス７２は、例えば、中央プロセッサ（または中央処理装置（ＣＰＵ））、グラフィックプロセッサ（またはグラフィック処理装置（ＧＰＵ））、ビデオレコーダ、カメラ信号プロセッサ（ＩＳＰ）、ギガビット（Ｇｂ）ＥｔｈｅｒｎｅｔインターフェースなどのＥｔｈｅｒｎｅｔインターフェース、ユニバーサルシリアルバス（ＵＳＢ）インターフェースおよびシリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）インターフェースなどのシリアルインターフェース、および周辺コンポーネント相互接続エクスプレス（ＰＣＩｅ）インターフェースおよび／または他の画像処理デバイスを含み得る。処理デバイス７２は、１つ以上のモジュールに実装され得る。一例として、処理モジュール７２の第１のものが、レベル０（Ｌ０）キャッシュ、レベル１（Ｌ１）キャッシュ、レベル２（Ｌ２）キャッシュ、またはレベル３（Ｌ３）キャッシュのうちの１つ以上などのキャッシュメモリを含むものとして示されている。示された例では、第１の処理デバイスは、中央プロセッサ７３およびＬ１〜Ｌ３キャッシュ７５を含み得る。中央プロセッサ７３は、Ｌ０キャッシュ７７を含み得る。中央プロセッサ７３はまた、プロセッサキャッシュ７５、７７へのアクセスを制御することができるメモリ管理ユニット（ＭＭＵ）７９を含み得る。ＭＭＵ７９はまた、プロセッサキャッシュのメモリアドレストランスレータと見なされ得る。ＭＭＵは、ＣＰＵ仮想アドレスをシステム物理アドレスに書き換える役割を果たす。ほとんどの最新のＣＰＵは、物理アドレスキャッシュを使用し、つまり、Ｌ０／Ｌ１／Ｌ２／Ｌ３キャッシュは、物理アドレス指定される。ＣＰＵからのキャッシュミスも、物理アドレスを使用してシステムバスに向かう。
【００２９】
処理デバイスによって実行されるものとして以下に記載されたタスクは、例えば、中央プロセッサ７３および／またはＭＭＵ７９によって実行され得る。
【００３０】
処理デバイス７２は、システムバス７４を介してＦＬＣモジュール７６に接続されている。処理デバイス７２は、（ｉ）処理デバイス７２とシステムバス７４との間、および（ｉｉ）システムバス７４と記憶ドライブ７８との間のバスおよびインターフェースを介して記憶ドライブ７８に接続されている。インターフェースは、例えば、Ｅｔｈｅｒｎｅｔインターフェース、シリアルインターフェース、ＰＣＩｅインターフェースおよび／または組み込みマルチメディアコントローラ（ｅＭＭＣ）インターフェースを含み得る。記憶ドライブ７８は、処理デバイス７２および／またはＦＬＣコントローラ８０から離れた領域の任意の箇所にロケートされ得る。記憶ドライブ７８は、１つ以上のネットワーク（例えば、ＷＬＡＮ、インターネットネットワーク、またはリモート記憶ネットワーク（またはクラウド））を介して、処理デバイス７２および／またはＦＬＣコントローラ８０と通信し得る。
【００３１】
ＦＬＣモジュール７６は、ＦＬＣコントローラ８０、ＤＲＡＭコントローラ８２、およびＤＲＡＭ  ＩＣ８４を含む。ＤＲＡＭ  ＩＣおよびＤＲＡＭという用語は、交換可能に使用される。ＤＲＡＭとして理解するために参照されるが、任意のタイプのＲＡＭ、ＳＲＡＭ、ＤＲＡＭ、または本明細書に記載されているように振る舞うが異なる名称である任意の他のメモリを含む他のタイプのメモリが使用できる。ＤＲＡＭ  ＩＣ８４は、主に仮想および一時的な記憶装置として使用される一方、記憶ドライブ７８は、物理的および永続的な記憶装置として使用される。これは、一般に、ＤＲＡＭ  ＩＣ内のロケーションが、プロセッサモジュールによって生成される物理アドレスと静的な／固定の関係を有していないことを意味する。記憶ドライブ７８は、メインメモリとして使用するために予約されたパーティションを含み得る一方、記憶ドライブの残りの部分は、ユーザファイルを記憶するための従来の記憶ドライブ空間として使用される。これは、コンピュータがＤＲＡＭ内の物理的なメインメモリ空間を切らしたときに行われる先行技術のデマンドページング動作とは異なる。その場合、ＤＲＡＭからのデータ／プログラムの大きなブロックが、ハードディスクドライブとの間で転送される。これにはまた、ＭＭＵおよびオペレーティングシステムによって行われる物理アドレス割り当ての割り付け解除および再割り付けが伴い、これは、オペレーティングシステム（ＯＳ）が十分な情報を有しておらず、またメインメモリに記憶されたデータ／プログラムの相対的な重要性に関する正確な情報も有していないため、遅いプロセスである。処理デバイス７２は、それらが単一のメインメモリデバイスであるかのように、ＤＲＡＭ  ＩＣ８４と記憶ドライブ７８のメインメモリパーティションとをアドレス指定する。ユーザは、コンピュータの動作中にＲＡＭに記憶されたファイルを見ることができないのと同じように、記憶ドライブのメインメモリパーティションに記憶されたデータまたはファイルへのアクセス権を有しておらず、このデータまたはファイルを見ることができない。データの読み取りおよび／または書き込み中に、処理デバイス７２は、アクセス要求をＦＬＣコントローラ８０に送信する。ＦＬＣコントローラ８０は、ＤＲＡＭコントローラ８２を介してＤＲＡＭ  ＩＣ８４にアクセスし、および／または記憶ドライブ７８にアクセスする。ＦＬＣコントローラ８０は、記憶ドライブに、直接（破線で示されているように）またはシステムバス７４を介してアクセスし得る。プロセッサおよびプログラマの観点から、メインメモリとして指定された記憶パーティションへのアクセスが、Ｉ／Ｏ動作としてではなく、プロセッサのネイティブロードおよびストア動作を介して行われる。
【００３２】
データアクセスシステム７０の様々な例が、本明細書に記載されている。第１の例では、ＦＬＣモジュール７６は、処理デバイス７２、システムバス７４、および記憶ドライブ７８とは別個のＳｏＣに実装されている。別の実施形態では、要素は、異なる集積回路上にある。第２の例では、処理デバイス７２のうちの１つは、ＣＰＵが実装された処理デバイスである。処理デバイス７２のうちの１つは、ＦＬＣモジュール７６および記憶ドライブ７８とは別個のＳｏＣに実装され得る。別の例として、処理デバイス７２およびシステムバス７４は、ＦＬＣモジュール７６および記憶ドライブ７８とは別個のＳｏＣに実装されている。別の例では、処理デバイス７２、システムバス７４、およびＦＬＣモジュール７６は、記憶ドライブ７８とは別個のＳｏＣに実装されている。データアクセスシステム７０の他の例は、以下に開示されている。
【００３３】
ＤＲＡＭ  ＩＣ８４は、最終レベルキャッシュとして使用され得る。ＤＲＡＭ  ＩＣ８４は、様々な記憶容量を有し得る。例えば、ＤＲＡＭ  ＩＣ８４は、携帯電話アプリケーション用に１〜２ＧＢの記憶容量、パーソナルコンピュータアプリケーション用に４〜８ＧＢの記憶容量、およびサーバアプリケーション用に１６〜６４ＧＢの記憶容量を有し得る。
【００３４】
記憶ドライブ７８は、ＮＡＮＤフラッシュＳＳＤ、または抵抗変化型ＲＡＭおよび相変化メモリなどの他の不揮発性メモリを含み得る。記憶ドライブ７８は、ＤＲＡＭ  ＩＣ８４よりも多くの記憶容量を有し得る。例えば、記憶ドライブ７８は、ＤＲＡＭ  ＩＣ８４よりも８〜１６倍大きい記憶装置を含み得る。ＤＲＡＭ  ＩＣ８４は、高速度ＤＲＡＭを含み得、記憶ドライブ７８は、将来においてさえ、低タスク遅延スイッチング時間が重要である場合、超低コストおよび低速度ＤＲＡＭからなり得る。最終的には、新しいクラスの大容量シリアル／シーケンシャルラージページＤＲＡＭ（ランダムアクセス性が制限されている）が、最終的なメインメモリ用に構築できる。そのようなシリアルＤＲＡＭデバイスは、ダイサイズが従来のＤＲＡＭよりも少なくとも２倍小さい可能性があるため、従来のＤＲＡＭよりも少なくとも２倍の費用対効果があり得る。一実施形態では、シリアルＤＲＡＭは、１つのキャッシュライン（４ＫＢ）などの、一度に取り出せるか、または書き込める最小ブロック（チャンク）サイズを有するが、他の実施形態では、最小ブロックサイズが、確立できる。したがって、データは、任意のロケーションに対してではなく、特定のブロックとの間でのみ、読み取られるか、または書き込まれる。そのようなシリアルＤＲＡＭは、超高速度シリアルインターフェースと共にさらにパッケージ化されて、大容量のＤＲＡＭをプロセッサデバイスから遠くにマウントできるようにし、これにより、プロセッサが、過熱を心配することなく最大限の能力を発揮し得る。示されているように、記憶ドライブ７８の一部分は、メインメモリとして作用するようにパーティション化され、したがって、ＦＬＣ  ＤＲＡＭ８４の拡張としてＦＬＣコントローラ８０によって利用される。
【００３５】
ＤＲＡＭ  ＩＣ８４に記憶されたキャッシュラインは、最も最近、最も頻繁にアクセスされた、および／または関連付けられた最高の優先度レベルを有するデータであり得る。ＤＲＡＭ  ＩＣ８４に記憶されたキャッシュラインは、固定されたキャッシュラインを含む。固定されたキャッシュラインは、ＤＲＡＭ  ＩＣ８４に常に保持されるデータを指す。固定されたキャッシュラインが長期間アクセスされていなくても、固定されたキャッシュラインは、他のキャッシュラインによって追い出せない。ただし、固定されたキャッシュラインは、更新され（書き込まれ）得る。一実施形態では、欠陥ＤＲＡＭセル（およびそれに対応するキャッシュライン）は、ＦＬＣアドレスルックアップエンジンがキャッシュラインエントリをその欠陥ＤＲＡＭロケーションに割り当てるのを防止するために欠陥セル（単数または複数）を有するＤＲＡＭアドレスエントリを削除することによって、ＦＬＣシステムからロックアウト（マップアウト）され得る欠陥ＤＲＡＭエントリは通常、デバイスの製造中に発見される。さらに別の実施形態では、オペレーティングシステムは、マップアウト機能を使用して、ＤＲＡＭの一部分を、この部分がプロセッサによって通常動作に使用できない一時的な状態にし得る。そのような機能により、オペレーティングシステムは、システムが実際のアプリケーションを実行しながら、マップアウトされたＤＲＡＭセクションの健全性を一度に１つのセクションをチェックするコマンドを発行できるようになる。弱いセルを有するＤＲＡＭのセクションが見つかった場合、オペレーティングシステムは次いで、弱いセル（単数または複数）を含むキャッシュラインを予備的に無効にし、いわゆる「弱いキャッシュライン」を使用中止に移行させ得る。一実施形態では、ＦＬＣエンジンは、ソフトウェアでのＤＲＡＭ診断の実行からプロセッサをオフロードするためのハードウェア診断機能を含むことができる。
【００３６】
いくつかの例示的な実施形態では、ＤＲＡＭ  ＩＣ８４に記憶されたデータは、頻繁に使用され（例えば、所定期間にわたって所定回数よりも多くアクセスされ）ないソフトウェアアプリケーション、フォント、ソフトウェアコード、代替コード、および異なる話し言葉をサポートするためのデータなどを含まない。これは、ＤＲＡＭ  ＩＣ８４のサイズ要件を最小限に抑えることを支援することができる。非常にまれにしか使用されない、またはまったく使用されないソフトウェアコードは、ＦＬＣに関する限り、「ガベージコード」と見なすことができ、このソフトウェアコードは、起動プロセス中にＦＬＣによってロードされないことが可能であり、例えばＦＬＣによってパージさせるためにこのソフトウェアコードが一度だけロードされて使用され、その後にそれ以上ロードされたことがなく、したがって、ＤＲＡＭ  ＩＣ８４の空間を真に有用なデータ／プログラムのために解放する場合である。ＤＲＡＭ  ＩＣ８４のサイズが減少するにつれて、ＤＲＡＭ性能が、向上し、電力消費、静電容量、およびバッファリングが、減少する。静電容量およびバッファリングが減少するにつれて、遅延が、減少する。また、消費電力が小さくなることによって、対応するデバイスのバッテリ寿命が増加する。当然、システム全体の性能は、ＤＲＡＭ  ＩＣ８４が大きくなるに従って向上するが、このことは、コストおよび電力の増加の犠牲を伴う。
【００３７】
ＦＬＣコントローラ８０は、処理デバイス７２から要求を受信することに応答してＣＡＭ手法を実行する。ＣＡＭ技術は、処理デバイス７２によって提供される要求の第１の物理アドレスを仮想アドレスに変換することを含む。これらの仮想アドレスは、処理デバイス７２によって最初に生成され、かつ処理デバイス７２によって第１の物理アドレスにマッピングされた仮想アドレスとは独立し、および異なっている。ＤＲＡＭコントローラ８２は、ＦＬＣコントローラ８０によって生成された仮想アドレスをＤＲＡＭアドレスに変換（またはマッピング）する。ＤＲＡＭアドレスがＤＲＡＭ  ＩＣ８４内にない場合、ＦＬＣコントローラ８０は、（ｉ）記憶ドライブ７８からデータをフェッチするか、または（ｉｉ）処理デバイス７２のうちの対応する１つに対して、キャッシュミスが発生したことを示し（または信号伝達し）得る。記憶ドライブ７８からデータをフェッチすることは、ＦＬＣコントローラ８０によって受信された第１の物理アドレスを第２の物理アドレスにマッピングして、記憶ドライブ７８内のデータにアクセスすることを含み得る。キャッシュミスは、物理アドレスを仮想アドレスに書き換えている間に、ＦＬＣコントローラ８０によって検出され得る。
【００３８】
次いで、ＦＬＣコントローラ８０は、ＦＬＣコントローラ８０がデータのために記憶ドライブ７８にアクセスするときに、処理デバイス７２のうちの１つにキャッシュミスについて信号伝達し得る。これは、第１の／元の物理アドレスを記憶アドレスにマッピングすることにより第１の（元の）物理アドレスに基づいて記憶ドライブ７８内のデータにアクセスし、次いで、マッピングされた記憶アドレスに基づいて記憶ドライブ７８にアクセスすることを含み得る。
【００３９】
ＣＡＭ手法を使用して、第１の物理アドレスをＦＬＣコントローラの仮想アドレスにマッピングする。ＣＡＭ手法は、完全連想アドレス書き換えを提供する。これは、プロセッサの物理アドレスを、ＦＬＣコントローラ８０のディレクトリに記憶されたすべての仮想アドレスエントリと論理的に比較することを含み得る。セット連想アドレス書き換えは、はるかに高いミス率をもたらし、その見返りにプロセッサ性能が低下するため、回避するのがよい。初期起動後に完全連想かつ大容量のキャッシュラインアーキテクチャ（ＦＬＣ）を有するＤＲＡＭ  ＩＣ８４内にロケートされているデータのヒット率は、ＤＲＡＭ  ＩＣ８４のサイズによっては９９．９％の高さにもなり得る。一般に、ＤＲＡＭ  ＩＣ８４は、プロセッサおよび／または処理デバイスのアイドル時間を最小限に抑えながら、１００％近くの中期（数分）の平均ヒット率を保証するサイズにするとよい。例えば、このことは、携帯電話アプリケーション用の１〜２ＧＢのＤＲＡＭ  ＩＣ、パーソナルコンピュータアプリケーション用の４〜８ＧＢのＤＲＡＭ  ＩＣ、およびサーバアプリケーション用の１６〜６４ＧＢのＤＲＡＭ  ＩＣを使用して実現され得る。
【００４０】
図３は、データアクセスシステム７０のＤＲＡＭ  ＩＣ８４および記憶ドライブ７８のエントリを示す。ＤＲＡＭ  ＩＣ８４は、ＤＲＡＭエントリ００−ＸＹを含み得る。記憶ドライブ７８は、ドライブエントリ００−ＭＮを有し得る。ＤＲＡＭエントリ００−ＸＹの各々のアドレスは、ドライブエントリ００−ＭＮの１つ以上のアドレスにマッピングされ得る。ただし、ＤＲＡＭのサイズは、記憶デバイスのサイズよりも小さいため、記憶デバイスのごく一部しか、所与の時間にＤＲＡＭエントリにマッピングできない。真のＣＡＭプロセスの代わりに非衝突フリールックアッププロセスが使用される場合、ＤＲＡＭの一部分はまた、キャッシュ不能なデータに、ならびにＦＬＣコントローラの完全なアドレスルックアップテーブルの記憶に使用できる。ＤＲＡＭエントリ００−ＸＹに記憶されたデータは、他のメタデータを含み得る。
【００４１】
ＤＲＡＭエントリ００−ＸＹの各々は、例えば、４ＫＢの記憶容量を有し得る。ドライブエントリ００−ＭＮの各々はまた、４ＫＢの記憶粒度を有し得る。データが、ＤＲＡＭエントリ００−ＸＹのうちの１つから読み取られるか、または１つに書き込まれ、ＤＲＡＭエントリ００−ＸＹのうちの１つが、いっぱいであり、および／または要求と関連付けられたデータのすべてを有してはいない場合、ドライブエントリ００−ＭＮのうちの対応する１つが、アクセスされる。したがって、ＤＲＡＭ  ＩＣ８４および記憶ドライブ７８は、４ＫＢのメモリブロックに分割される。ＤＲＡＭ  ＩＣ８４内のメモリの各ブロックは、記憶ドライブ７８内にそれぞれ１つ以上のメモリブロックを有し得る。メモリのこのマッピングおよび分割は、図２の処理デバイス７２に対して透過的であり得る。
【００４２】
動作中、処理デバイス７２のうちの１つは、データのブロック（またはデータのブロックの一部分）に対する要求信号を生成し得る。データのブロックが、ＤＲＡＭ  ＩＣ８４内にロケートされていない場合、ＦＬＣコントローラ８０は、記憶ドライブ７８内のデータのブロックにアクセスし得る。ＦＬＣコントローラ８０が、記憶ドライブ７８からのデータにアクセスしている間、ＦＬＣコントローラ８０は、データを要求した処理デバイスに警告信号（バスエラー信号など）を返信し得る。警告信号は、ＦＬＣコントローラ８０が、低速の記憶デバイスからデータにアクセスする過程にあり、かつその結果、システムバス７４が、しばらくの間、データを処理デバイス７２に転送する準備ができていないことを示し得る。バスエラー信号が使用される場合、バスエラー信号の伝送は、ＦＬＣモジュール７６から処理デバイスおよび／または処理デバイス７２のＳｏＣへの「バスアボート」と呼ばれ得る。次いで、処理デバイス７２は、ＦＬＣ記憶トランザクションの準備ができるのを待つ間に他のタスクを実行し得る。次いで、他のプロセッサタスクは、例えば、処理デバイスのＳｏＣ内の１つ以上のキャッシュ（例えば、Ｌ０〜Ｌ３キャッシュ）にすでに記憶されているデータと、ＦＬＣ  ＤＲＡＭにすでに記憶されている他のデータと、を使用することによって続行し得る。このことはまた、プロセッサおよび／または処理デバイスのアイドル時間を最小限に抑える。
【００４３】
シーケンシャルアクセスが実行される場合、ＦＬＣコントローラ８０および／またはＤＲＡＭコントローラ８２は、将来アクセスされることが予想されるアドレスに記憶されたデータの予測フェッチを実行し得る。このことは、起動中におよび／または起動に続いて行われ得る。ＦＬＣコントローラ８０および／またはＤＲＡＭコントローラ８２は、データおよび／またはソフトウェアの使用を追跡し、実行されるコードの間近の行を評価し、メモリアクセスパターンを追跡し、およびこの情報に基づいて、アクセスされることが予想されるデータの次のアドレスを予測し得る。次のアドレスは、ＤＲＡＭ  ＩＣ８４および／または記憶ドライブ７８のアドレスであり得る。例として、ＦＬＣコントローラ８０および／またはＤＲＡＭコントローラ８２は、データの要求を事前に受信することとは独立して、および／または受信せずに、記憶ドライブ７８に記憶されたデータにアクセスし、データをＤＲＡＭ  ＩＣ８４に転送し得る。
【００４４】
上述の例は、ネットワーク内のサーバ（「クラウド」と呼ばれ得る）を介して実装され得る。サーバの各々は、ＦＬＣモジュール（例えば、ＦＬＣモジュール７６）を含み、互いに通信し得る。サーバは、ＤＲＡＭおよび／またはＤＲＡＭ  ＩＣに格納されたメモリと、記憶ドライブを共有し得る。サーバの各々は、ネットワークを介して他のサーバ内のＤＲＡＭおよび／または記憶ドライブにアクセスし得る。ＦＬＣモジュールの各々は、図２のＦＬＣモジュールと同様に動作し得るが、また、クラウドを介して他のサーバの各々内のＤＲＡＭおよび／またはメモリにアクセスし得る。サーバとクラウドの間で伝送される信号は、伝送の前に暗号化され、サーバおよび／またはクラウドのネットワークデバイスに到着すると復号化され得る。サーバはまた、クラウド内のメモリを共有し、および／またはメモリにアクセスし得る。例として、サーバのうちの１つのＦＬＣコントローラによって生成された仮想アドレスは、ＦＬＣコントローラのＦＬＣモジュールのＤＲＡＭ、サーバのうちの１つの記憶ドライブ、その他のサーバのうちの１つのＦＬＣモジュールのＤＲＡＭ、その他のサーバのうちの１つの記憶ドライブ、またはクラウドの記憶デバイスにおける物理アドレスに対応し得る。キャッシュミスが発生した場合、サーバのうちの１つのＦＬＣコントローラおよび／または処理デバイスは、その他のＦＬＣモジュール、記憶ドライブ、および／または記憶デバイス内のＤＲＡＭおよび／またはメモリにアクセスし得る。つまり、記憶デバイスは、クラウドまたはネットワークにアクセス可能であり得る。これにより、クラウドにロケートされた記憶ドライブ利用される場合、コンピューティングデバイスのサイズおよびコストが低減され、その結果、コンピューティングデバイスは記憶ドライブを必要としない。クラウドまたはネットワーク内の記憶ドライブをアクセス可能にすることは、記憶ドライブをＤＲＡＭキャッシュおよびプロセッサとコロケートさせるよりも遅い場合があるが、それにより、記憶ドライブが、いくつかの異なる処理デバイスおよびＤＲＡＭキャッシュ間で共有できるようになる。例示的な一環境では、自動車は、車両の周りに配置された多数のプロセッサを有し得、各々が、ＤＲＡＭキャッシュシステムを有して構成され得る。各プロセッサがＳＳＤドライブを有する代わりに、単一のＳＳＤドライブが、処理デバイスのすべての間で共有され得る。本明細書に開示された非常に高いヒット率では、ＳＳＤドライブがアクセスされることは稀である。そのような配置には、コストの低下、小さい全体サイズ、およびメンテナンスの容易化の利点がある。
【００４５】
上述の例はまた、複数のチップを有するマルチチップモジュール、スイッチ、およびプライマリＦＬＣモジュールを有するプライマリチップを含むデータアクセスシステムに実装され得る。マルチチップモジュールは、スイッチを介してプライマリチップモジュールに接続されている。ＦＬＣモジュールの各々は、図２のＦＬＣモジュールと同様に動作し得るが、また、スイッチを介してその他の各チップ内のＤＲＡＭおよび／またはメモリにアクセスし得る。例として、チップのうちの１つのＦＬＣコントローラによって生成された仮想アドレスは、ＦＬＣコントローラのＦＬＣモジュールのＤＲＡＭ、チップのうちの１つの記憶ドライブ、その他のチップのうちの１つのＦＬＣモジュールのＤＲＡＭ、その他のチップのうちの１つの記憶ドライブ、またはクラウドの記憶デバイスにおける物理アドレスに対応し得る。キャッシュミスが発生した場合、チップのうちの１つのＦＬＣコントローラおよび／または処理デバイスは、その他のＦＬＣモジュール、記憶ドライブ、および／または記憶デバイス内のＤＲＡＭおよび／またはメモリにアクセスし得る。
【００４６】
例として、マルチチップモジュール内のセカンダリＤＲＡＭの各々と、プライマリチップ内のプライマリＤＲＡＭと、は１ＧＢの記憶容量を有し得る。プライマリチップ内の記憶ドライブは、例えば、６４ＧＢの記憶容量を有し得る。別の例として、データアクセスシステムは、自動車で使用され得る。プライマリチップは、例えば、中央コントローラ、モジュール、プロセッサ、エンジン制御モジュール、トランスミッション制御モジュール、および／またはハイブリッド制御モジュールであり得る。プライマリチップを使用して、スロットル位置、スパークタイミング、燃料タイミング、トランスミッションギア間の遷移など、関連システムの対応する態様を制御し得る。マルチチップモジュール内のセカンダリチップは各々、照明システム、エンターテインメントシステム、空調システム、排気システム、ナビゲーションシステム、オーディオシステム、ビデオシステム、ブレーキシステム、ステアリングシステムなどの特定の車両システムと関連付けられ、対応するシステムの態様を制御するために使用され得る。
【００４７】
さらに別の例として、上述の例はまた、ホスト（またはＳｏＣ）およびハイブリッドドライブを含むデータアクセスシステムに実装され得る。ホストは、中央プロセッサまたは他の処理デバイスを含み、インターフェースを介してハイブリッドドライブと通信し得る。インターフェースは、例えば、ＧＥインターフェース、ＵＳＢインターフェース、ＳＡＴＡインターフェース、ＰＣＩｅインターフェース、または他の好適なインターフェースであり得る。ハイブリッドドライブは、第１の記憶ドライブおよび第２の記憶ドライブを含む。第１の記憶ドライブは、ＦＬＣモジュール（例えば、図２のＦＬＣモジュール７６）を含む。ＦＬＣモジュールのＦＬＣコントローラは、ＦＬＣモジュールおよび第２の記憶ドライブのＤＲＡＭからデータを読み取り、および／またはデータを書き込むかどうかを決定するときに、ＣＡＭ手法を実行する。
【００４８】
さらなる例として、上述の例はまた、ＳｏＣ、第１の高速度ＤＲＡＭキャッシュ（第２のＤＲＡＭキャッシュよりも高速）、第２のより大きいＤＲＡＭキャッシュ（第１のＤＲＡＭキャッシュよりも大きい）、および不揮発性メモリ（記憶ドライブ）を含む記憶システムに実装され得る。ＳｏＣは、第１のＤＲＡＭ、第２のＤＲＡＭ、および不揮発性メモリから分離されている。第１のＤＲＡＭは、優先度が高いデータおよび／または頻繁にアクセスされるデータを記憶し得る。データアクセス要求の高い割合が、第１のＤＲＡＭに記憶されたデータに向けられ得る。例として、データアクセス要求の９９％以上が、第１のＤＲＡＭに記憶されたデータに向けられ得、データアクセス要求の残りの０．９％以下が、第２のＤＲＡＭに記憶されたデータに、およびデータの０．１未満が、不揮発性メモリ（記憶ドライブ内のメインメモリパーティションに向けられ得る。低優先度および／または低頻度でアクセスされるデータは、第２のＤＲＡＭおよび／または不揮発性メモリに記憶され得る。例として、ユーザは、第１のＤＲＡＭ（高速度ＤＲＡＭ）に記憶された複数のＷｅｂブラウザを開くようにし得る。一方、第２のＤＲＡＭは、多数のアイドル状態のアプリケーション（アイドル状態のＷｅｂブラウザタブなど）、または低デューティサイクル動作するアプリケーションを記憶するために、はるかに高容量を有する。したがって、第２のＤＲＡＭは、コモディティＤＲＡＭを使用することによって低コストのために最適化されるのがよく、そのため、第２のＤＲＡＭは、コモディティＤＲＡＭの性能しか得られず、第２のＤＲＡＭはまた、第１のＤＲＡＭよりも長い遅延を呈する。第２のＤＲＡＭに収まらない真に古いアプリケーションのコンテンツは、その場合に不揮発性メモリに記憶される。その上、ディープハイバネーションの前に、第１のＤＲＡＭおよび／または第２のＤＲＡＭのダーティキャッシュラインの内容のみを不揮発性メモリに書き込むことができる。ディープハイバネーションからウェイクアップすると、すぐに必要な内容のみが、第２のＦＬＣ  ＤＲＡＭキャッシュおよび第１のＦＬＣ  ＤＲＡＭキャッシュに戻される。その結果、ディープハイバネーションからのウェイクアップ時間は、従来のＤＲＡＭメインメモリソリューションを使用するコンピュータよりも桁違いに速くなり得る。
【００４９】
ＳｏＣは、１つ以上の制御モジュール、インターフェースモジュール、キャッシュ（またはＦＬＣ）モジュール、およびグラフィックモジュールを含み得る。キャッシュモジュールは、図２のＦＬＣモジュールと同様に動作し得る。制御モジュールは、インターフェースモジュールを介してキャッシュモジュールに接続されている。キャッシュモジュールは、それぞれの階層レベルに基づいて、第１のＤＲＡＭ、第２のＤＲＡＭ、および不揮発性メモリにアクセスするように構成されている。制御モジュールの各々は、それぞれのＬ１キャッシュ、Ｌ２キャッシュ、およびＬ３キャッシュを含み得る。制御モジュールの各々はまた、Ｌ４キャッシュまたは他の高レベルキャッシュなどの、１つ以上の追加のキャッシュを含み得る。ＳｏＣと第１のＤＲＡＭとの間に多くの信号線（または導電要素）が存在し得る。これにより、ＳｏＣと第１のＤＲＡＭとの間でデータをすばやくパラレルおよび／またはシリアル転送することができる。ＳｏＣと第１のＤＲＡＭとの間のデータ転送は、（ｉ）ＳｏＣと第２のＤＲＡＭとの間、および（ｉｉ）ＳｏＣと不揮発性メモリとの間のデータ転送よりも速い。
【００５０】
第１のＤＲＡＭは、Ｌ３キャッシュ、Ｌ４キャッシュ、および／または最高レベルキャッシュと同じかそれよりも高い階層レベルを有する第１の部分を有し得る。第１のＤＲＡＭの第２の部分は、第２のＤＲＡＭおよび／または不揮発性メモリと同じかまたはそれよりも低い階層レベルを有し得る。第２のＤＲＡＭは、第１のＤＲＡＭよりも高い階層レベルを有し得る。不揮発性メモリは、第２のＤＲＡＭと同じかそれよりも高い階層レベルを有し得る。制御モジュールは、例えば、キャッシングの必要性に基づいて、第１のＤＲＡＭ、第２のＤＲＡＭ、および／または不揮発性メモリの各々の部分またはすべての階層レベルを変更し得る。
【００５１】
制御モジュール、インターフェースモジュールに接続されたグラフィックモジュール、および／またはインターフェースモジュールに接続された他のデバイス（ＳｏＣの内部または外部）は、要求信号をキャッシュモジュールに送信して、データを第１のＤＲＡＭ、第２のＤＲＡＭ、および／または不揮発性メモリに記憶し、および／またはそれら内のデータにアクセスし得る。キャッシュモジュールは、第１のＤＲＡＭ、第２のＤＲＡＭ、および不揮発性メモリへのアクセスを制御し得る。例として、制御モジュール、グラフィックモジュール、および／または、インターフェースモジュールに接続された他のデバイスは、ＳｏＣに接続されたＤＲＡＭの数および／またはサイズを認識しない場合がある。
【００５２】
キャッシュモジュールは、制御モジュール、グラフィックモジュール、および／または、インターフェースモジュールに接続された他のデバイスから受信された第１のプロセッサの物理アドレスおよび／または要求を、第１のＤＲＡＭおよび第２のＤＲＡＭ、および／または不揮発性メモリの記憶アドレスの仮想アドレスに変換し得る。キャッシュモジュールは、第１のプロセッサの物理アドレスを第１のＤＲＡＭおよび第２のＤＲＡＭの仮想アドレスに変換するため、および／または第１のプロセッサの物理アドレスを記憶アドレスに変換するための１つ以上のルックアップテーブル（例えば、完全セット連想ルックアップテーブル）を記憶し得る。その結果、キャッシュモジュールと、第１のＤＲＡＭ、第２のＤＲＡＭ、および不揮発性メモリ（記憶ドライブのメインメモリパーティション）のうちの１つ以上と、が制御モジュール、グラフィックモジュール、および／または、インターフェースモジュールに接続された他のデバイスに対して単一のメモリ（メインメモリ）として動作し得る。グラフィックモジュールは、制御モジュールおよび／またはＳｏＣから、ディスプレイおよび／または他のビデオデバイスへのビデオデータの出力を制御し得る。
【００５３】
制御モジュールは、（ｉ）キャッシュモジュールと、（ｉｉ）Ｌ１キャッシュ、Ｌ２キャッシュ、およびＬ３キャッシュと、の間で、データ、データセット、プログラム、および／またはそれらの部分をスワップ（または転送）し得る。キャッシュモジュールは、第１のＤＲＡＭ、第２のＤＲＡＭ、および不揮発性メモリのうちの２つ以上の間で、データ、データセット、プログラム、および／またはそれらの部分をスワップ（または転送）し得る。このことは、制御モジュールとは独立して、および／または制御モジュールから転送を実行するための制御信号を受信せずに実行され得る。第１のＤＲＡＭ、第２のＤＲＡＭ、および不揮発性メモリのうちの１つ以上におけるデータ、データセット、プログラム、および／またはそれらの部分の記憶ロケーションは、対応する優先度レベル、使用の頻度、アクセスの頻度、および／または、データ、データセット、プログラム、および／またはそれらの部分と関連付けられた他のパラメータに基づき得る。データ、データセット、プログラム、および／またはそれらの部分の転送は、データのブロックを転送することを含み得る。データのブロックの各々は、所定のサイズを有し得る。例として、第２のＤＲＡＭから第１のＤＲＡＭへのデータのスワップは、複数の転送イベントを含み得、各転送イベントは、データのブロック（例えば、４ＫＢのデータ）を転送することを含む。
【００５４】
最良の性能のために、第１のＤＲＡＭのキャッシュモジュールは、大きいキャッシュラインサイズに対して完全連想でなければならない（ＦＬＣキャッシュソリューション）。ただし、はるかに高いミス率を許容できるアプリケーションについて、これに代えて、セット連想アーキテクチャが、第１レベルのＤＲＡＭキャッシュのみに使用され得る。しかし、それでも、キャッシュコントローラエントリテーブルの数を低減するために、第１のＤＲＡＭのキャッシュモジュールは、依然として大きいキャッシュラインサイズを有する。第２レベルのＤＲＡＭキャッシュに関しては、完全連想かつ大容量のキャッシュラインキャッシュが、使用され、それは、何か他のものでは不揮発性メインメモリの寿命が縮め得るためである。
【００５５】
第１のＤＲＡＭは、第１の所定の量の記憶容量（例えば、０．２５ＧＢ、０．５ＧＢ、１ＧＢ、４ＧＢ、または８ＧＢ）を有し得る。０．５ＧＢの第１のＤＲＡＭは、通常のＬ２キャッシュよりも５１２倍大きい。第２のＤＲＡＭは、第２の所定の量の記憶容量（例えば、非サーバベースのシステムについては２〜８ＧＢ以上、または１６〜６４ＧＢ以上のサーバベースのシステム）を有し得る。不揮発性メモリは、第３の所定の量の記憶容量（例えば、１６〜２５６ＧＢ以上）を有し得る。不揮発性メモリとして、フラッシュメモリまたは磁気抵抗ランダムアクセスメモリ（ＭＲＡＭ）などのソリッドステートメモリ、および／または回転磁気媒体が挙げられ得る。不揮発性メモリとして、ＳＳＤおよびＨＤＤが挙げられ得る。記憶システムは、第２のＤＲＡＭおよび不揮発性メモリ（記憶ドライブのメインメモリパーティション）を有するが、第２のＤＲＡＭおよび不揮発性メモリのいずれも記憶システムに含まれないことが可能である。
【００５６】
さらなる例として、上述の例はまた、ＳｏＣおよびＤＲＡＭ  ＩＣを含む記憶システムに実装され得る。ＳｏＣは、リングバスを介してＤＲＡＭ  ＩＣにアクセスする複数の制御モジュール（またはプロセッサ）を含み得る。リングバスは、アクセス遅延を最小限に抑える双方向バスであり得る。コストが性能よりも重要である場合、リングバスは、単方向バスであり得る。中間デバイスは、制御モジュールとリングバスとの間、および／またはリングバスとＤＲＡＭ  ＩＣとの間にロケートされ得る。例えば、上述のキャッシュモジュールは、制御モジュールとリングバスとの間、またはリングバスとＤＲＡＭ  ＩＣとの間にロケートされ得る。
【００５７】
制御モジュールは、ＤＲＡＭ  ＩＣを共有し、および／またはＤＲＡＭ  ＩＣの指定された部分を有し得る。例えば、ＤＲＡＭ  ＩＣの第１の部分は、第１の制御モジュールのキャッシュとして割り付けられ得る。ＤＲＡＭ  ＩＣの第２の部分は、第２の制御モジュールのキャッシュとして割り付けられ得る。ＤＲＡＭ  ＩＣの第３の部分は、第３の制御モジュールのキャッシュとして割り付けられ得る。ＤＲＡＭ  ＩＣの第４の部分は、キャッシュとして割り付けられないことが可能である。
【００５８】
さらなる例として、上述の例はまた、サーバシステムに実装され得る。サーバシステムは、記憶システムと呼ばれ、複数のサーバを含み得る。サーバは、ネットワーク（またはクラウド）を介して互いに通信するそれぞれの記憶システムを含む。記憶システムのうちの１つ以上が、クラウドにロケートされ得る。記憶システムの各々は、それぞれのＳｏＣを含み得る。
【００５９】
ＳｏＣは、それぞれ、第１のＤＲＡＭ、第２のＤＲＡＭ、ソリッドステート不揮発性メモリ、不揮発性メモリ、およびＩ／Ｏポートを有し得る。Ｉ／Ｏポートは、周辺コンポーネント相互接続エクスプレス（ＰＣＩｅ）チャネルなどのそれぞれのＩ／Ｏチャネル、および周辺コンポーネント相互接続エクスプレス（ＰＣＩｅ）チャネルなどのそれぞれのネットワークインターフェースを介してクラウドと通信し得る。Ｉ／Ｏポート、Ｉ／Ｏチャネル、およびネットワークインターフェースは、Ｅｔｈｅｒｎｅｔポート、チャネル、およびネットワークインターフェースであり、所定の速度（例えば、１ギガビット／秒（Ｇｂ／ｓ）、１０Ｇｂ／ｓ、５０Ｇｂ／ｓなど）でデータを転送し得る。ネットワークインターフェースのうちのいくつかは、クラウドにロケートされ得る。複数の記憶システムの接続により、低コストの、分散型の、かつスケーラブルなサーバシステムが提供される。開示された記憶システムおよび／またはサーバシステムのうちの複数は、互いに通信し、ネットワーク（またはクラウド）に含まれ得る。
【００６０】
ソリッドステート不揮発性メモリは各々、例えば、ＮＡＮＤフラッシュメモリおよび／または他のソリッドステートメモリを含み得る。不揮発性メモリは各々、ソリッドステートメモリおよび／または回転磁気媒体を含み得る。不揮発性メモリは各々、ＳＳＤおよび／またはＨＤＤを含み得る。
【００６１】
サーバシステムのアーキテクチャは、ＤＲＡＭをキャッシュとして提供する。ＤＲＡＭは、それぞれのＳｏＣのＬ４キャッシュおよび／または最高レベルキャッシュとして割り付けられ、高帯域幅および大きな記憶容量を有する。スタック型ＤＲＡＭとして、例えば、ＤＤＲ３メモリ、ＤＤＲ４メモリ、低電力ダブルデータレートタイプ４（ＬＰＤＤＲ４）メモリ、ワイドＩ／Ｏ２メモリ、ＨＭＣメモリ、および／または他の好適なＤＲＡＭが挙げられ得る。ＳｏＣの各々は、１つ以上の制御モジュールを有し得る。制御モジュールは、それぞれのリングバスを介して対応するＤＲＡＭと通信する。リングバスは、双方向バスであり得る。これにより、制御モジュールと対応するＤＲＡＭとの間に高帯域幅および最小の遅延が提供される。
【００６２】
制御モジュールの各々は、同じまたは異なるＳｏＣ内の制御モジュール、ＤＲＡＭのうちのいずれか、ソリッドステート不揮発性メモリのいずれか、および／または不揮発性メモリのいずれかに記憶されたデータおよび／またはプログラムにアクセスし得る。
【００６３】
ＳｏＣおよび／またはＳｏＣのポートは、媒体アクセスコントローラ（ＭＡＣ）アドレスを有し得る。ＳｏＣの制御モジュール（またはプロセッサ）は、それぞれのプロセッサクラスタアドレスを有し得る。制御モジュールの各々は、対応するＭＡＣアドレスおよびプロセッサクラスタアドレスを使用して、同じＳｏＣ内または別のＳｏＣ内の他の制御モジュールにアクセスし得る。ＳｏＣの制御モジュールの各々は、ＤＲＡＭにアクセスし得る。第１のＳｏＣの制御モジュールは、第２のＳｏＣのＭＡＣアドレスと第２のＳｏＣ内の第２の制御モジュールのプロセッサクラスタアドレスとを有する要求信号を送信することによって、第２のＳｏＣに接続されたＤＲＡＭに記憶されたデータおよび／またはプログラムを要求し得る。
【００６４】
ＳｏＣおよび／またはＳｏＣ内の制御モジュールの各々は、１つ以上のアドレス書き換えテーブルを記憶し得る。アドレス変換テーブルは、ＳｏＣのＭＡＣアドレス、制御モジュールのプロセッサクラスタアドレス、ＤＲＡＭ内のメモリセル、ソリッドステート不揮発性メモリ、および不揮発性メモリのプロセッサ物理アドレス、および／またはＤＲＡＭ内のメモリセル、ソリッドステート不揮発性メモリ、および不揮発性メモリの物理ブロックアドレスの書き換えを含み、および／または提供し得る。一実施形態では、ＤＲＡＭコントローラは、仮想アドレスを形成するＤＲＡＭ行および列アドレスビットを生成する。
【００６５】
一例として、データおよびプログラムは、ソリッドステート不揮発性メモリおよび／または不揮発性メモリに記憶され得る。データおよびプログラムおよび／またはそれらの部分は、ネットワークを介してＳｏＣおよび制御モジュールに配信され得る。制御モジュールによる実行に必要なプログラムおよび／またはデータは、ＤＲＡＭ、ソリッドステート不揮発性メモリ、および／または、制御モジュールがロケートされたＳｏＣの不揮発性メモリにローカルに記憶され得る。次いで、制御モジュールは、ＤＲＡＭ、ソリッドステート不揮発性メモリ、および／または不揮発性メモリから制御モジュール内のキャッシュに対して、実行に必要なプログラムおよび／またはデータにアクセスし、これらを転送し得る。ＳｏＣとネットワークとの間および／またはＳｏＣ間の通信は、無線通信を含み得る。
【００６６】
さらなる例として、上述の例はまた、ＳｏＣを含むサーバシステムに実装され得る。ＳｏＣのうちのいくつかは、それぞれのサーバに組み込まれ得、サーバＳｏＣと呼ばれ得る。ＳｏＣのうちのいくつか（コンパニオンＳｏＣと呼ばれる）は、第１のＳｏＣのサーバに組み込まれ得るか、または第１のＳｏＣのサーバから分離され得る。サーバＳｏＣはそれぞれ、制御モジュールのクラスタ（例えば、中央処理モジュールなど）、クラスタ内リングバス、ＦＬＣモジュール、メモリ制御モジュール、ＦＬＣリングバス、および１つ以上のホッピングバスを含む。ホッピングバスは、（ｉ）チップ間バスメンバおよび対応するポートを介してサーバＳｏＣとコンパニオンＳｏＣとの間で、および（ｉｉ）コンパニオンＳｏＣを通って、延在する。ホッピングバスは、ホッピングバスストップ、アダプタ、または、１つ以上のＳｏＣのノードおよび対応するポート、との間で延在するバスを指し得る。ホッピングバスは、ホッピングバスストップおよび／または１つ以上のＳｏＣを通って延在し得る。ホッピングバスストップとの間のデータの単一の転送は、シングルホップと呼ばれ得る。マルチホップは、伝送デバイスと受信デバイスとの間でデータを転送するときに実行され得る。データは、データが宛先に到達するまで、各クロックサイクルでバスストップ間を移動し得る。本明細書に開示された各バスストップは、モジュールとして実装され、クロック信号に基づいてデバイス間でデータを転送するためのロジックを含み得る。また、本明細書に開示された各バスは、データのシリアルおよび／またはパラレル伝送のための任意の数のチャネルを有し得る。
【００６７】
制御モジュールのクラスタの各々は、クラスタ内リングバスのうちの対応する１つを有する。クラスタ内リングバスは、双方向であり、クラスタの各々内の制御モジュール間の通信を提供する。クラスタ内リングバスは、クラスタ内リングバス上で伝送されるデータ信号に制御モジュールがアクセスするためのリングバスストップを有し得る。リングバスストップは、信号リピータとして、および／またはアクセスノードとして機能し得る。制御モジュールは、リングバスストップを介してクラスタ内リングバスに接続され、およびアクセスし得る。データは、クラスタ内リングバスを周って、リングバスストップのうちの第１のものにおける第１の制御モジュールから、リングバスストップのうちの第２のものにおける第２の制御モジュールに伝送され得る。制御モジュールの各々は、中央処理装置またはプロセッサであり得る。
【００６８】
メモリ制御モジュールの各々は、ＦＬＣモジュールのうちのそれぞれのものへのアクセスを制御し得る。ＦＬＣモジュールは、サーバＳｏＣ上にスタックされ得る。ＦＬＣモジュールの各々は、ＦＬＣ（またはＤＲＡＭ）を含み、本明細書に開示されたＦＬＣモジュールのいずれかとして実装され、およびそれと同様に動作し得る。メモリ制御モジュールは、ＦＬＣリングバス上のそれぞれのリングバスストップでＦＬＣリングバスにアクセスし、リングバスストップとＦＬＣモジュールとの間でデータを転送し得る。これに代えて、ＦＬＣモジュールは、それぞれのリングバスストップでＦＬＣリングバスに直接アクセスし得る。メモリ制御モジュールの各々は、ＦＬＣモジュールのうちのそれぞれの１つのための、ならびに／またはリングバスおよび／もしくはホッピングバスのバスストップのためのメモリクロック信号を生成するメモリクロックを含み得る。バスストップは、リングバスおよび／またはホッピングバスを介して間接的に、またはメモリ制御モジュールから直接、メモリクロック信号を受信し得る。データは、メモリクロック信号に基づいてバスストップを通って循環し得る。
【００６９】
ＦＬＣリングバスは、双方向バスであり、２種類のリングバスストップＳＲＢおよびＳＲＨを有し得る。リングバスストップの各々は、信号リピータとして、および／またはアクセスノードとして機能し得る。リングバスストップＳＲＢは、ホッピングバス以外のデバイスに接続されている。デバイスは、クラスタ間リングバス０、ＦＬＣモジュールおよび／またはメモリ制御モジュール、ならびにグラフィック処理モジュールを含み得る。クラスタ間リングバスは、（ｉ）クラスタ間、および（ｉｉ）交差リングストップ間の接続を提供する。交差リングバスストップは、クラスタ間リングバスへのアクセスを提供し、クラスタ間リングバスを、（ｉ）クラスタと（ｉｉ）リングバスストップとの間で延在するリングバス延在部に接続し得る。リングバスストップは、ＦＬＣリングバス上にある。クラスタ間リングバスおよび交差リングバスストップは、（ｉｉｉ）第１のクラスタと第２のＦＬＣリングバスのリングバスストップとの間、および（ｉｖ）第２のクラスタと第１のＦＬＣリングバスのリングバスストップとの間の接続を提供する。これにより、制御モジュールは、第２のＦＬＣモジュールのＦＬＣにアクセスできるようになり、制御モジュールは、第１のＦＬＣモジュールのＦＬＣにアクセスできるようになる。
【００７０】
クラスタ間リングバスは、チップ内トレースおよびチップ間トレースを含み得る。チップ内トレースは、サーバＳｏＣの内部で、および（ｉ）リングバスストップのうちの１つと（ｉｉ）ポートのうちの１つとの間で、延在する。チップ間トレースは、サーバＳｏＣの外部で、およびポートのそれぞれのペア間で、延在する。
【００７１】
サーバＳｏＣの各々のリングバスストップＳＲＨは、ＦＬＣリングバスおよびホッピングバスのうちの対応するものに接続されている。ホッピングバスの各々は、ホッピングバスのうちの対応する１つへのそれぞれのインターフェースアクセスを提供する複数のホッピングバスストップＳＨＢを有する。ホッピングバスストップＳＨＢは、信号リピータとして、および／またはアクセスノードとして機能し得る。
【００７２】
第１のホッピングバス、リングバスストップ、および第１のホッピングバスストップは、（ｉ）ＦＬＣリングバスと（ｉｉ）サーバＳｏＣの液晶ディスプレイ（ＬＣＤ）インターフェースと、コンパニオンＳｏＣのインターフェースと、の間の接続を提供する。ＬＣＤインターフェースは、ディスプレイに接続され得、ＧＰＭを介して制御され得る。コンパニオンＳｏＣのインターフェースとして、シリアル接続小型コンピュータシステムインターフェース（ＳＡＳ）インターフェースおよびＰＣＩｅインターフェースが挙げられる。コンパニオンＳｏＣのインターフェースは、イメージプロセッサ（ＩＰ）インターフェースであり得る。
【００７３】
インターフェースは、それぞれのポートに接続されており、ポートは、周辺デバイスなどのデバイスに接続され得る。ＳＡＳインターフェースおよびＰＣＩｅインターフェースは、ポートを介してＳＡＳ互換デバイスおよびＰＣＩｅ互換デバイスにそれぞれ接続され得る。例として、記憶ドライブが、ポートに接続され得る。記憶ドライブは、ハードディスクドライブ、ソリッドステートドライブ、またはハイブリッドドライブであり得る。ポートは、画像処理デバイスに接続され得る。画像処理デバイスの例は、上記に開示されている。第４のＳｏＣは、チップ間バスメンバ（デイジーチェーンメンバとも呼ばれる）を介して第３のＳｏＣにデイジーチェーン接続され得る。チップ間バスメンバは、第１のホッピングバスのメンバである。追加のＳｏＣは、第１のホッピングバスに接続されたポートを介して第４のＳｏＣにデイジーチェーン接続され得る。サーバＳｏＣ、制御モジュール、およびＦＬＣモジュールは、ＦＬＣリングバス、第１のホッピングバス、および／または第３のＳｏＣを介して第４のＳｏＣと通信し得る。例として、ＳｏＣは、サウスブリッジチップであり、（ｉ）サーバＳｏｃと（ｉｉ）ポートに接続された周辺デバイスとの間の通信および割り込みの転送を制御し得る。
【００７４】
第２のホッピングバスは、リングバスストップおよび第２のホッピングバスストップを介して、（ｉ）ＦＬＣリングバスと（ｉｉ）サーバＳｏＣ内のインターフェースとの間の接続を提供する。サーバＳｏＣ内のインターフェースは、Ｅｔｈｅｒｎｅｔインターフェース、１つ以上のＰＣＩｅインターフェース、およびハイブリッド（または組み合わせ）インターフェースを含み得る。Ｅｔｈｅｒｎｅｔインターフェースは、１０ＧＥインターフェースであり得、第１のＥｔｈｅｒｎｅｔバスを介してネットワークに接続されている。Ｅｔｈｅｒｎｅｔインターフェースは、第１のＥｔｈｅｒｎｅｔバス、ネットワーク、および第２のＥｔｈｅｒｎｅｔバスを介して第２のＳｏＣと通信し得る。ネットワークは、Ｅｔｈｅｒｎｅｔネットワーク、クラウドネットワーク、および／または他のＥｔｈｅｒｎｅｔ互換ネットワークであり得る。１つ以上のＰＣＩｅインターフェースは、例として、第３世代ＰＣＩｅインターフェースＰＣＩｅ３およびミニＰＣＩｅインターフェース（ｍＰＣＩｅ）を含み得る。ＰＣＩｅインターフェースは、ソリッドステートドライブに接続され得る。ハイブリッドインターフェースは、ＳＡＴＡ互換デバイスおよび／またはＰＣＩｅ互換デバイスとの間で、ＳＡＴＡおよび／またはＰＣＩｅプロトコルに従ってデータを転送するために、ＳＡＴＡおよびＰＣＩｅ互換であり得る。例として、ＰＣＩｅインターフェースは、ソリッドステートドライブまたはハイブリッドドライブなどの記憶ドライブに接続され得る。インターフェースは、サーバＳｏＣの外部のデバイスに接続するためのそれぞれのポートを有する。
【００７５】
第３のホッピングバスは、リングバスストップを介してリングバスに接続され得、ホッピングバスストップを介してＬＣＤインターフェースおよびポートに接続され得る。ＬＣＤインターフェースは、ディスプレイに接続され得、ＧＰＭを介して制御され得る。ポートは、１つ以上のコンパニオンＳｏＣに接続され得る。第４のホッピングバスは、（ｉ）リングバスストップを介してリングバスに、および（ｉｉ）ホッピングバスストップを介してインターフェースに接続され得る。インターフェースは、Ｅｔｈｅｒｎｅｔ、ＰＣＩｅ、およびハイブリッドインターフェースであり得る。インターフェースは、それぞれのポートを有する。
【００７６】
サーバＳｏＣおよび／または他のサーバＳｏＣは、クラスタ間リングバスを介して互いに通信し得る。サーバＳｏＣおよび／または他のサーバＳｏＣは、それぞれのＥｔｈｅｒｎｅｔインターフェースおよびネットワークを介して互いに通信し得る。
【００７７】
コンパニオンＳｏＣは、それぞれの制御モジュールを含み得る。制御モジュールは、ホッピングバスストップを介してインターフェースにアクセスし、および／またはインターフェースへのアクセスを制御し得る。一実施形態では、制御モジュールは、含まれない。制御モジュールは、ホッピングバスストップのうちの対応するもの、および／またはインターフェースのうちの対応するものに接続され、およびそれらと通信し得る。
【００７８】
さらなる例として、上述の例はまた、モバイルデバイスの回路に実装され得る。モバイルデバイスは、コンピュータ、携帯電話、または他の無線ネットワークデバイスであり得る。回路は、ＳｏＣを含む。ＳｏＣは、モバイルＳｏＣと呼ばれ得る。ＳｏＣは、コンパニオンＳｏＣと呼ばれ得る。モバイルＳｏＣは、制御モジュールのクラスタ、クラスタ内リングバス、ＦＬＣモジュール、メモリ制御モジュール、ＦＬＣリングバス、および１つ以上のホッピングバスを含む。ホッピングバスは、（ｉ）チップ間バスメンバおよび対応するポートを介してモバイルＳｏＣとコンパニオンＳｏＣとの間で、および（ｉｉ）コンパニオンＳｏＣを通って延在する。
【００７９】
クラスタ内リングバスは、双方向であり、制御モジュール間の通信を提供する。クラスタ内リングバスは、クラスタ内リングバス上で伝送されるデータ信号への制御モジュールによるアクセスのためのリングバスストップを有し得る。リングバスストップは、信号リピータおよび／またはアクセスノードとして機能し得る。制御モジュールは、リングバスストップを介してクラスタ内リングバスに接続され、およびアクセスし得る。データは、クラスタ内リングバスを周って、リングバスストップのうちの第１のものにある第１の制御モジュールから、リングバスストップのうちの第２のものにある第２の制御モジュールに伝送され得る。データは、データが宛先に到達するまで、各クロックサイクルでバスストップ間を移動し得る。制御モジュールの各々は、中央処理装置またはプロセッサであり得る。
【００８０】
メモリ制御モジュールは、ＦＬＣモジュールへのアクセスを制御し得る。一実施形態では、メモリ制御モジュールは、含まれない。ＦＬＣモジュールは、モバイルＳｏＣ上にスタックされ得る。ＦＬＣモジュールは、ＦＬＣまたはＤＲＡＭであり得、本明細書に開示されたＦＬＣモジュールのいずれかとして実装され、およびそれと同様に動作し得る。メモリ制御モジュールは、ＦＬＣリングバス上のそれぞれのリングバスストップでＦＬＣリングバスにアクセスし、リングバスストップとＦＬＣモジュールとの間でデータを転送し得る。これに代えて、ＦＬＣモジュールは、それぞれのリングバスストップでＦＬＣリングバスに直接アクセスし得る。メモリ制御モジュールは、ＦＬＣモジュール、リングバスおよび／またはホッピングバスのバスストップのためのメモリクロック信号を生成するメモリクロックを含み得る。バスストップは、リングバスおよび／またはホッピングバスを介して間接的に、またはメモリ制御モジュールから直接、メモリクロック信号を受信し得る。データは、メモリクロック信号に基づいてバスストップを通って循環し得る。
【００８１】
ＦＬＣリングバスは、双方向バスであり、２種類のリングバスストップＳＲＢおよびＳＲＨを有し得る。リングバスストップの各々は、信号リピータとして、および／またはアクセスノードとして機能し得る。リングバスストップＳＲＢは、ホッピングバス以外のデバイスに接続されている。デバイスは、ＦＬＣモジュールおよび／またはメモリ制御モジュール、ならびにグラフィック処理モジュールを含み得る。
【００８２】
モバイルのＳｏＣのリングバスストップＳＲＨは、ＦＬＣリングバスとホッピングバスのうちの対応する１つに接続されている。ホッピングバスの各々は、ホッピングバスのうちの対応する１つへのそれぞれのインターフェースアクセスを提供する複数のホッピングバスストップＳＨＢを有する。ホッピングバスストップＳＨＢは、信号リピータとして、および／またはアクセスノードとして機能し得る。
【００８３】
第１のホッピングバス、リングバスストップ、および第１のホッピングバスストップは、（ｉ）ＦＬＣリングバスおよび（ｉｉ）液晶ディスプレイ（ＬＣＤ）インターフェース、ビデオ処理モジュール（ＶＰＭ）、ならびにコンパニオンＳｏＣのインターフェースの間に接続されている。ＬＣＤインターフェースは、サーバＳｏＣ内にあり、ディスプレイに接続され得、ＧＰＭを介して制御され得る。コンパニオンＳｏＣのインターフェースとして、セルラインターフェース、無線ローカルエリアネットワーク（ＷＬＡＮ）インターフェース、および画像信号プロセッサインターフェースが挙げられる。セルラインターフェースは、他のモバイルデバイスおよび／または無線デバイスとの無線通信のための物理層デバイスを含み得る。物理層デバイスは、ロングタームエボリューション（ＬＴＥ）規格および／または第３世代（３Ｇ）、第４世代（４Ｇ）、および／または第５世代（５Ｇ）モバイル通信規格に従って、動作し、および／または信号を伝送および受信し得る。ＷＬＡＮインターフェースは、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ｗｉ−Ｆｉ（登録商標）、および／または他のＷＬＡＮプロトコルに従って動作し、モバイルデバイスのＷＬＡＮ内の他のネットワークデバイスと通信し得る。ＩＳＰインターフェースは、記憶ドライブまたは他の画像処理デバイスなどのコンパニオンＳｏＣの外部の画像処理デバイス（または画像信号処理デバイス）に接続され得る。インターフェースは、それぞれのポートを介してコンパニオンＳｏＣの外部のデバイスに接続され得る。ＩＳＰインターフェースは、モバイルデバイスの外部のデバイスに接続され得る。
【００８４】
コンパニオンＳｏＣは、チップ間バスメンバを介してモバイルＳｏＣに接続され得る。チップ間バスメンバは、第１のホッピングバスのメンバである。追加のＳｏＣが、第１のホッピングバスに接続されたポートを介してコンパニオンＳｏＣにデイジーチェーン接続され得る。モバイルＳｏＣ、制御モジュール、およびＦＬＣモジュールは、ＦＬＣリングバスおよび第１のホッピングバスを介してコンパニオンＳｏＣと通信し得る。
【００８５】
第２のホッピングバスは、リングバスストップおよび第２のホッピングバスストップを介して、（ｉ）ＦＬＣリングバスと（ｉｉ）モバイルＳｏＣ内のインターフェースとの間の接続を提供する。モバイルＳｏＣ内のインターフェースは、Ｅｔｈｅｒｎｅｔインターフェース、１つ以上のＰＣＩｅインターフェース、およびハイブリッド（または組み合わせ）インターフェースを含み得る。Ｅｔｈｅｒｎｅｔインターフェースは、１０ＧＥインターフェースであり得、ポートを介してＥｔｈｅｒｎｅｔネットワークに接続されている。１つ以上のＰＣＩｅインターフェースは、例として、第３世代ＰＣＩｅインターフェースＰＣＩｅ３およびミニＰＣＩｅインターフェース（ｍＰＣＩｅ）を含み得る。ＰＣＩｅインターフェースは、ソリッドステートドライブに接続され得る。ハイブリッドインターフェースは、ＳＡＴＡ互換デバイスおよび／またはＰＣＩｅ互換デバイスとの間で、ＳＡＴＡおよび／またはＰＣＩｅプロトコルに従ってデータを転送するために、ＳＡＴＡおよびＰＣＩｅ互換であり得る。例として、ＰＣＩｅインターフェースは、ポートを介して記憶ドライブに接続され得る。記憶ドライブは、ソリッドステートドライブまたはハイブリッドドライブであり得る。インターフェースは、モバイルＳｏＣの外部のデバイスに接続するためのそれぞれのポートを有する。
【００８６】
コンパニオンＳｏＣ、は制御モジュールを含み得る。制御モジュールは、ホッピングバスストップを介してＶＰＭおよびインターフェースにアクセスし、および／またはそれらへのアクセスを制御し得る。一実施形態では、制御モジュールは、含まれない。制御モジュールは、ホッピングバスストップ、ＶＰＭ、および／またはインターフェースに接続され、およびそれらと通信し得る。
【００８７】
キャッシュラインサイズ
この例示的な実施形態では、４Ｋバイトのキャッシュラインサイズが、選択されている。他の実施形態では、他のキャッシュラインサイズが、利用され得る。このサイズのキャッシュラインを使用することによる１つの利点は、このサイズが、オペレーティングシステムによってアプリケーションまたはプログラムに、最小のメモリ割り付けサイズとして通常割り当てられるメモリページサイズのサイズに適合することである。その結果、４Ｋバイトのキャッシュラインサイズは、オペレーティングメモリの割り付けサイズと整合する。
【００８８】
プロセッサは通常、一度に６４バイトしか、読み取りまたは書き込みを行わない。したがって、例として４Ｋバイトを使用すると、ＦＬＣキャッシュラインサイズは、はるかに大きくなる。その結果、書き込みまたは読み取りの要求がＦＬＣモジュールでのミスをもたらすと、システムはまず、記憶ドライブから４Ｋバイトを丸ごと（すなわち、記憶ドライブパーティション内の最終レベルのメインメモリ）読み取る。それが行われた後、システムは、取り出されたキャッシュラインにプロセッサデータを書き込むことができ、このキャッシュラインは、ＤＲＡＭに記憶される。キャッシュラインは、仮想アドレスによって識別される。キャッシュライン全体が、一度にメモリから引き出される。さらに、キャッシュライン全体は、ＦＬＣ−ＳＳモジュールからＦＬＣ−ＨＳモジュールへなど、回送される。運用システムには、１００，０００またはさらには１００万個以上のキャッシュラインがあり得る。
【００８９】
ＦＬＣモジュールのキャッシングをＣＰＵキャッシュと比較すると、これらの要素は、別個かつ別異のキャッシュである。ＣＰＵ（プロセッサキャッシュ）は、示されているようなプロセッサデバイスの一部であり、先行技術のように構成されている。ＦＬＣモジュールはキャッシュとして動作し、メインメモリとして作用し、ＣＰＵキャッシュとは別個であり、かつ別異する。ＦＬＣモジュールキャッシュは、メインメモリおよび関連付けられたコントローラと同じように、数分間の動作にわたって必要になる可能性があるすべてのデータを追跡する。ただし、ＣＰＵキャッシュは、プロセッサが必要とするか、または次の数マイクロ秒または場合によっては１ミリ秒で使用するもののみを、追跡および記憶する。
【００９０】
完全連想ＦＬＣキャッシュ
完全連想ルックアップは、大量の真にランダムなプロセッサタスク／スレッドを半永久的に（数秒から数分で測定した場合）ＦＬＣキャッシュに常駐させることができる。そうでなければプロセッサが作業している何千ものタスクまたはスレッドが、ＦＬＣキャッシュに保持されるはずである多数のタスク／スレッドを容易に破棄（中断）し得るため、これは基本的な機能である。ただし、完全連想ルックアップは、シリコン領域、電力、またはその両方の点でコストがかかる。したがってまた、完全連想ルックアップテーブル内のエントリ数を最小限に抑えるために、ＦＬＣキャッシュラインサイズが最大化されることは重要である。実際、現在６４ＢであるＣＰＵキャッシュラインサイズをはるかに大きくすることが重要である。同時に、キャッシュラインサイズは、オペレーティングシステム（ＯＳ）に過度の問題を引き起こす可能性があるため、大きすぎないのがよい。最新のＯＳは通常、４ＫＢのページサイズを使用するため、したがって、例示的な一実施形態では、ＦＬＣキャッシュラインサイズは、４ＫＢに設定される。将来、ＯＳページサイズが、１６ＫＢに増加した場合には、ＦＬＣキャッシュラインサイズも、理論的には１６ＫＢとされ得る。
【００９１】
完全連想アドレスルックアッププロセスのエネルギーコストを隠すために、一実施形態では、アドレス書き換えテーブルのためのアドレスキャッシュが、ＦＬＣコントローラに含まれる。アドレスキャッシュが、プロセッサデータをキャッシュしないことに注意することが重要である。代わりに、アドレスキャッシュは、最近確認されたアドレス書き換えと、物理アドレスから仮想アドレスへの書き換えと、のみをキャッシュする。そのため、任意でのアドレスキャッシュは、完全連想である必要がない。５％のミス率でも、完全連想ルックアッププロセスを実行する必要性が少なくとも２０倍低減されるため、アドレスキャッシュ用の単純なセット連想キャッシュで十分である。アドレスキャッシュはこれに加えて、アドレスキャッシュで使用される単純なセット連想キャッシュは、通常１クロックサイクルでアドレスを書き換え得るため、アドレス書き換え遅延の低下をもたらす。これは、ＣＡＭのようなアドレス書き換え動作を実行し得る最速のマルチステージハッシュアルゴリズムよりも、およそ１０〜２０倍高速である。
【００９２】
記憶ドライブのメモリ割り付け
記憶ドライブ７８は、磁気ディスクドライブ、ソリッドステートドライブ、ハイブリッドドライブ、光学ドライブ、または任意の他のタイプの記憶デバイスなどの従来の不揮発性記憶デバイスであり得る。ＦＬＣモジュールと関連付けられたＤＲＡＭ、ならびに記憶ドライブのパーティション化された部分は、メインメモリとして作用する。本明細書に開示された実施形態では、ＤＲＡＭの量は、伝統的な先行技術のコンピューティングシステムよりも小さい。これにより、消費電力の低下、システムコストの低下、および空間要件の低減という利点が提供される。システム動作に追加のメインメモリが必要である場合、記憶ドライブ７８の一部分が、追加のメインメモリとして使用するために割り付けられるか、またはパーティション化（予約）される。記憶ドライブ７８は、記憶ドライブコントローラを有すると理解され、記憶ドライブコントローラは、従来のファイル要求に対する処理デバイス５００からの要求を、またメインメモリの拡張部として予約された記憶ドライブのパーティションに記憶された情報に対するＦＬＣモジュールからの要求を、処理する。
【００９３】
図４は、例示的な一動作方法の例示的な操作方法を例示している。これは、可能な動作方法の１つに過ぎず、そのため、特許請求の範囲から逸脱しない他の方法が想到される。この例示的な動作方法は、図２に示されているようなＦＬＣコントローラシステムを代表する。以下のタスクは、主に図２の例に関して記載されているが、タスクは、本開示内の他の実施形態に適用され得る。タスクは、反復的に、または並列で実行され得る。
【００９４】
この方法は、システムが初期化され得るステップ４０８で開始する。ステップ４１２で、ＦＬＣコントローラは、所有デバイス（プロセッサ）から読み取り要求または書き込み要求の要求を受信する。要求は、プロセッサがデータのロケーションを識別するために使用するか、またはデータが書き込まれる物理アドレスを含む。
【００９５】
決定ステップ４１６で、プロセッサによって提供された物理アドレスが、ＦＬＣコントローラ内にロケートされているかどうかの決定が、行われる。ＦＬＣコントローラのメモリ（ＳＲＡＭ）は、物理アドレスから仮想アドレスへのマップデータを記憶する。物理アドレスがＦＬＣコントローラ内にロケートされていることは、ヒットとして指定されている一方、物理アドレスがＦＬＣコントローラ内に配置されていないことは、ミスとして指定されている。プロセッサの、データ（物理アドレスを含む）の要求は、ＦＬＣコントローラが、ＦＬＣコントローラのメモリ内に物理アドレスエントリを有する場合にのみ、ＦＬＣモジュールによって満たされる。物理アドレスが、ＦＬＣコントローラのメモリ内に記憶されていない場合には、要求は、記憶ドライブに回送されなければならない。
【００９６】
決定ステップ４１６で、物理アドレスが、ＦＬＣコントローラ内で識別された場合には、要求は、ヒットと見なされ、動作は、ステップ４２０に進む。ステップ４２０で、ＦＬＣコントローラは、ＦＬＣコントローラのメモリ、またはＦＬＣコントローラによって使用するために割り付けられた、ＤＲＡＭの一部であるメモリに記憶されたルックアップテーブルを使用するルックアップ動作に基づいて、物理アドレスを仮想アドレスに書き換える。仮想アドレスは、ＦＬＣ  ＤＲＡＭ内の物理アドレスと関連付けられ得る。ＦＬＣコントローラは、（プロセッサからの）物理アドレスを仮想アドレスにマッピングするための１つ以上の書き換えマッピングテーブルを含み得る。図５Ｂは、メモリを有するＦＬＣコントローラを、より詳細に例示している。
【００９７】
物理アドレスを仮想アドレスに書き換えた後、動作は、決定ステップ４２４に進む。決定ステップ４１６で、物理アドレスが、ＦＬＣコントローラ内にロケートされていない場合、ミスが発生しており、動作は、ステップ４２８に進む。ステップ４２８で、ＦＬＣコントローラは、ＦＬＣコントローラ内に、読み取りまたは書き込みされるデータのための、かつまだＦＬＣモジュール（すなわち、ＦＬＣモジュールのＤＲＡＭ）内にない新たな（この場合は空の）キャッシュラインを割り付ける。他の方法では空間が利用できない場合、既存のキャッシュラインが、上書きされ得る。ステップ４２８は、プロセッサによって提供された物理アドレスを含むようにメモリマッピングを更新することにより、ＦＬＣコントローラをその物理アドレスを有するものとして確立することを含む。次に、ステップ４３２で、物理アドレスは、データを取り出すために記憶ドライブによって使用されるアドレスである記憶ドライブアドレスに書き換えられる。この実施形態では、ＦＬＣコントローラは、このステップを実行するが、他の実施形態では、記憶ドライブなどの他のデバイスが、書き換えを実行し得る。記憶ドライブアドレスは、記憶ドライブによって使用されるか、または記憶ドライブによって理解されるアドレスである。一実施形態では、記憶ドライブアドレスは、ＰＣＩ−ｅアドレスである。
【００９８】
ステップ４３６で、ＦＬＣコントローラは、記憶アドレスを、記憶ドライブ、例えば、ＰＣＩ−ｅベースのデバイス、ＮＶＭｅ（不揮発性メモリエクスプレス）タイプのデバイス、ＳＡＴＴＡ  ＳＳＤデバイス、または現在既知であるか、または将来開発される任意の他の記憶ドライブに回送する。上記で議論したように、記憶ドライブは、従来のハードディスクドライブ、ＳＳＤ、またはハイブリッドドライブであり得、記憶ドライブの一部分を従来の意味で使用して、ドキュメント、画像、ビデオなどのファイルを記憶する。記憶ドライブの一部分がまた、ＦＬＣモジュール（単数または複数）のＤＲＡＭによって提供された記憶容量を補うために、メインメモリとして使用およびパーティション化される。
【００９９】
ステップ４４０に進むと、記憶ドライブコントローラ（図示せず）は、プロセッサによって提供された物理アドレスで、記憶ドライブからキャッシュラインを取り出し、キャッシュラインは、ＦＬＣコントローラに提供される。キャッシュラインアドレスによって識別されるキャッシュラインは、要求されたデータを記憶するか、またはデータが書き込まれるロケーションとして指定される。これは、当技術分野で知られている様式で行われ得る。ステップ４４４で、ＦＬＣコントローラは、キャッシュラインをＦＬＣ  ＤＲＡＭに書き込み、キャッシュラインは、物理アドレスに関連付けられ、この関連付けが、ＦＬＣコントローラ内のループアップテーブルに維持されるようになっている。
【０１００】
また、ステップ４４４の一部は、キャッシュラインまたはデータを最も最近使用されたものとして指定するためのＦＬＣステータスレジスタの更新である。ＤＲＡＭまたは別個のレジスタに格納され得るＦＬＣステータスレジスタは、ＦＬＣ  ＤＲＡＭ内のキャッシュラインまたはデータが、プロセッサによって最後に使用されたか、アクセスされたか、または書き込まれたときを追跡するレジスタである。キャッシュメカニズムの一部として、最近使用されたキャッシュラインがキャッシュに保持されるため、最近使用されたデータは、要求されたときにプロセッサで再度すぐに利用可能である。キャッシュラインは、プロセッサによって最も過去に使用されたか、アクセスされたか、または書き込まれ、より最近使用されたキャッシュライン／データ用の余地を確保するために、上書きされる。この配置では、キャッシュは、最も過去に使用された、先出し方式で動作する。ステップ４４４の後、動作は、ステップ４２４に進む。
【０１０１】
決定ステップ４２４で、プロセッサからの要求が、読み取り要求または書き込み要求として評価される。要求が書き込み要求である場合、動作は、ステップ４４８に進み、書き込み要求は、仮想アドレスと共にＦＬＣ  ＤＲＡＭコントローラに送信される。図２に示され、かつ当技術分野で理解されているように、ＤＲＡＭデバイスは、ＤＲＡＭに対する読み取り／書き込み動作を監視するための関連付けられたメモリコントローラを有する。ステップ４５２で、ＤＲＡＭコントローラは、仮想アドレスからＤＲＡＭの行アドレスビットおよび列アドレスビットを生成し、ステップ４５６で、これらを使用してプロセッサ（プロセッサデータ）からＦＬＣ  ＤＲＡＭにデータを書き込む。次いで、ステップ４６０で、ＦＬＣコントローラは、キャッシュラインまたはデータのＦＬＣステータスレジスタを更新して、ＦＬＣ  ＤＲＡＭに書き込まれたばかりのキャッシュライン／データの最近の使用を反映する。物理アドレスは、ＦＬＣコントローラのメモリマッピングへとマッピングされるため、プロセッサによって要求された場合、そのＦＬＣコントローラは今度は、その物理アドレスを所有する。
【０１０２】
これに代えて、決定ステップ４２４で、プロセッサからの要求が、読み取り要求であると決定された場合、動作は、ステップ４６４に進み、ＦＬＣコントローラは、含む読み取り要求を仮想アドレスと共に、ＤＲＡＭコントローラによる処理のためにＦＬＣ  ＤＲＡＭコントローラに送信する。次いで、ステップ４６８で、ＤＲＡＭコントローラは、仮想アドレスからＤＲＡＭの行アドレスビットおよび列アドレスビットを生成し、ステップ４７２で、これらを使用して、ＦＬＣ  ＤＲＡＭからデータを読み取り（取り出し）、データをプロセッサに提供できるようにする。ステップ４７６で、ＦＬＣ  ＤＲＡＭから取り出されたデータは、プロセッサの読み取り要求を満たすためにプロセッサに提供される。次いで、ステップ４８０で、ＦＬＣコントローラは、ＦＬＣ  ＤＲＡＭから読み取られたデータの最近の使用を反映するために、データ（アドレス）のＦＬＣステータスレジスタを更新する。物理アドレスは、ＦＬＣコントローラのメモリマッピングへとマッピングされるため、そのＦＬＣコントローラは、プロセッサによって再度要求された場合に、メモリマッピング内の物理アドレスをすぐに利用可能であるように維持する。
【０１０３】
図４の上述のタスクは、例示的な例であることが意図されており、タスクは、アプリケーションに応じて、重複する期間中に、または異なる順序で、順次に、並列で、同期して、同時に、連続的に実行され得る。また、イベントの例および／またはシーケンスによっては、タスクのうちのいずれかは、実行またはスキップされない場合がある。
【０１０４】
ＦＬＣステータスレジスタの更新
上記で議論したように、ステータスレジスタは、ＦＬＣモジュールに記憶されたキャッシュラインの状態を維持する。キャッシュラインおよびキャッシュラインに記憶されたデータに関するいくつかの態様が追跡され得ることが想到される。そのような一態様は、事前設定された基準に関連する、または他のキャッシュラインに関連する異なるキャッシュラインの相対的な重要度である。一実施形態では、最も最近アクセスされたキャッシュラインが、最も重要度が高いとマークまたは定義される一方、最も過去に使用されたキャッシュラインが、最も重要度が低いとマークまたは定義される。例えば最も過去に使用されたなど、最も重要度が低いとマークされたキャッシュラインは、ＦＬＣから追い出されるか、または上書きされて、ＦＬＣに新たなキャッシュラインを作り出せるようにするか、または新たなデータを記憶できるようにするのに適格となる。このタスクに使用されるステップは、当業者によって理解され、したがって、本明細書では詳細に記載されていない。ただし、従来のＣＰＵキャッシュコントローラとは異なり、ＦＬＣコントローラはこれに加えて、ＣＰＵ／ＧＰＵによって書き込まれたキャッシュラインを追跡する。このことは、読み取りにのみ使用されていたキャッシュラインが、最終的にＦＬＣからパージされたときに、ＦＬＣコントローラが、ＳＳＤなどの記憶ドライブに誤って書き込みを行わないようにするために行われる。このシナリオでは、ＦＬＣコントローラは、書き込まれたＦＬＣキャッシュラインを「ダーティ」とマークする。
【０１０５】
一実施形態では、特定のキャッシュラインは、ロックされたＦＬＣキャッシュラインとして設計され得る。ＦＬＣ内の特定のキャッシュラインは、ＦＬＣからそのようなキャッシュラインが誤ってパージされるのを防止するためにロックされ得る。このことは、そのようなアドレス／データが、取り出しの遅延を許容することができない場合に、ＦＬＣコントローラ内にデータのアドレスを保持するために特に重要であり得、したがって、それが、最も過去に使用された場合でも、ロックされ、したがって、ＦＬＣに維持される。
【０１０６】
また、ロックされたキャッシュラインのためのタイムアウトタイマが実装され得ることが想到される。この構成では、キャッシュラインが、ロックされ得るが、タイマによって追跡される際の特定の期間の間のみである。タイマは、ロック生成から一定時間後、またはキャッシュラインの使用後にリセットし得る。時間は、キャッシュライン、キャッシュラインに記憶されたデータ、またはキャッシュラインに割り当てられたアプリケーションもしくはプログラムに基づいて変動し得る。
【０１０７】
これに加えて、以下の目的で、すなわち、非常に長い非アクティブ期間の後に、ロックされたキャッシュラインをＦＬＣからパージできるようにして、またはロックされたキャッシュラインを最終的にＦＬＣモジュールの次のステージまたはレベルにパージし、かつ同時に、次のＦＬＣステージで、ロックされたステータスビットを継承できるようにして、以前にロックされたキャッシュラインが高速度ＦＬＣモジュールからパージされることから結果として得られるキャッシュライン／データ取り出しの時間ペナルティを最小限に抑えるために、ロックされたキャッシュラインにタイムアウトビットが提供されることが想到される。
【０１０８】
図５Ａは、カスケードされたＦＬＣシステムの例示的な実施形態のブロック図である。これは、カスケードされたＦＬＣシステムの１つの可能な配置にすぎない。特許請求の範囲から逸脱しない他の実施形態が、可能である。この実施形態では、プロセッサ５００が、提供される。処理デバイス５００は一般に、図２に示された処理デバイス７２と同様であり得る。図２の要素の議論は、図５Ａの要素に組み込まれ、繰り返される。処理デバイス５００は、中央処理装置（ＣＰＵ）、グラフィック処理装置（ＧＰＵ）、またはシステムオンチップ（ＳｏＣ）を含むがこれらに限定されない任意の他のタイプの処理システムであり得る。処理デバイス５００は、レベル０、レベル１、レベル２、およびレベル３のキャッシュなどの様々なレベルのプロセッサキャッシュ５１２を含むプロセッサ５０４を含む。メモリ管理モジュール５０８はまた、プロセッサ５０４を様々なレベルのプロセッサキャッシュ５１２にインターフェース接続し、データ要求のためなど、プロセッサを処理デバイス５００の外部の要素にインターフェース接続するために提供される。
【０１０９】
また、図５Ａの実施形態の一部は、記憶ドライブ７８である。記憶ドライブ７８は一般に、図２の記憶ドライブ７８と同様であり、そのため、再度詳細には記載されていない。記憶ドライブ７８として、従来の回転デバイスまたはソリッドステートドライブ、複合ハイブリッドドライブなどのハードディスクドライブが挙げられ得る。記憶ドライブ７８は、入力および出力機能を監視するためのコントローラ（図示せず）を含む。ファイル入力／出力経路５２０は、マルチプレクサ５５４を通して処理デバイス５００を記憶ドライブ７８に接続している。ファイルＩ／Ｏ経路５２０は、従来のシステムで行われ得るようにファイルを記憶ドライブに直接保存するなど、書き込み動作のためにプロセッサが記憶ドライブ７８に直接アクセスするための経路およびメカニズムを提供する。マルチプレクサ５５４は、ＦＬＣ−ＳＳ５３６またはファイルＩ／Ｏ経路５２０からのいずれかの入力を、制御信号入力５５６上の制御信号に応答して、選択的に通過させる双方向スイッチである。
【０１１０】
図２、図５Ａ、図６、図８、図１０、および図１２に示されているようなＦＬＣを有する実施形態では、記憶ドライブは、メインメモリの拡張部（ＲＡＭメモリの拡張部）として割り付けられるか、パーティション化されるか、または予約されたセクションを有する。それゆえ、記憶ドライブ７８の一部分が、従来のフォルダまたはディレクトリ構造でユーザが閲覧可能であるドキュメント、写真、ビデオ、音楽などのユーザファイルの従来の記憶装置に使用される。また、オペレーティングシステム、ドライバ、アプリケーションコード、および処理デバイスによって処理されているアクティブなデータなどの、プロセッサによって使用されるアクティブなプログラムおよび命令を記憶するためのＤＲＡＭメインメモリの拡張部として動作するための、ＦＬＣシステムによって使用するために割り付けられるか、パーティション化されるか、または予約された記憶ドライブ７８の一部分がある。メインメモリは、コンピュータがアクティブに使用している情報を記憶するため、メインメモリは、コンピュータシステムの短期間のデータ記憶装置である。メインメモリという用語は、メインメモリ、プライマリメモリ、システムメモリ、またはＲＡＭ（ランダムアクセスメモリ）を指す。メインメモリに記憶されるが、最も過去に使用されたデータ（オペレーティングシステム、ドライバ、アプリケーションコード、およびアクティブデータ）は、記憶ドライブのメインメモリパーティションに記憶される。図２、図５Ａ、図６、図８、図１０、および図１２の実施形態では、また本明細書に記載された他の実施形態では、システムバスは、図２に示されているように、処理デバイスとＦＬＣモジュールとの間にロケートされ得る。
【０１１１】
記憶ドライブ７８のメインメモリパーティションは、Ｉ／Ｏ動作のためにＲＡＭよりも低速であるが、ＦＬＣモジュールのヒット率は、９９％以上など非常に高いため、記憶ドライブ内のメインメモリパーティションに対するＩ／Ｏが発生することは稀であり、したがって、性能を悪化させない。記憶ドライブ７８および記憶ドライブ７８のメインメモリパーティションについてのこの議論は、他の図に示された記憶ドライブに当てはまる。示され、および記載されたすべての実施形態では、記憶ドライブのメインメモリパーティションの内容は、暗号化され得る。記憶ドライブ７８（不揮発性である）のメインメモリパーティションに記憶された個人情報、インターネット履歴、パスワード、文書、電子メール、画像の閲覧を防止するために暗号化が行われ得る。暗号化により、コンピューティングデバイスを廃棄、リサイクル、または紛失した場合、この機密情報を読み取ることはできない。電源遮断時に記憶されたデータを維持しないＲＡＭとは異なり、記憶ドライブは、電源遮断イベントがあってもデータを維持する。
【０１１２】
図５Ａに示されているように、２つの最終レベルキャッシュ（ＦＬＣ）モジュール５４０、５４２が、カスケード構成で配置されている。各モジュール５４０、５４２は、ＦＬＣステージと呼ばれる。２つのカスケードされたステージを有して示されているが、より多数のステージが、カスケードされ得る。ＦＬＣステージ（モジュール）５４０、５４２の各々は一般に、図２に示されたＦＬＣモジュール７６に類似しており、そのため、これらのユニットは、本明細書では詳細に記載されていない。このカスケード構成では、ＦＬＣモジュール５４０は、標準速度モジュールである他方のＦＬＣモジュール５４２よりも高帯域幅、低遅延、および低電力使用で動作するように構成された高速度（ＨＳ）モジュールである。ＦＬＣ−ＨＳモジュールがＦＬＣ−ＳＳよりも頻繁に利用されることに起因して、ＦＬＣ−ＨＳモジュール５４２の低電力、高速度の態様によって実現される利点が、さらに増大する。ＦＬＣ−ＨＳモジュールは、主に使用されるメモリであり、９９％よりも大きいヒット率を有し、したがって、ほとんどすべてのメインメモリアクセスで速度および電力節減を提供する。ＦＬＣモジュール５４２は、標準速度（ＳＳ）と呼ばれ、高速でありながら、動作速度よりも低コストで最適化されている。高速度ＤＲＡＭよりも標準速度ＤＲＡＭの容量が大きいため、コスト節減が、最大化され、標準速度ＤＲＡＭの量は、これらのＦＬＣの実施形態では、多くの場合８ＧＢまたは１６ＧＢのＲＡＭを搭載している先行技術のコンピュータで利用されるものよりも小さい。例示的なＦＬＣシステムは、４ＧＢのＤＲＡＭ、および３２ＧＢパーティションの記憶ドライブを有し得る。このことは、８〜１６ＧＢのＲＡＭを有する通常のラップトップコンピュータの約２００ドルのコスト節減をもたらす。さらに、メモリアクセスのほとんどは、高速度ＦＬＣモジュールによって正常に処理されるため、標準速度ＦＬＣモジュールは大抵、非アクティブであり、したがって、電力を消費しない。この構成の利点は、以下で論じられている。ＦＬＣ−ＨＳモジュール５４０のメモリ容量は、ＦＬＣ−ＳＳモジュール５４２のメモリ容量よりも小さいことが想到される。一実施形態では、ＦＬＣ−ＳＳモジュールのメモリ量は、ＦＬＣ−ＨＳモジュール内のメモリの量よりも８倍大きい。ただし、いくつかのアプリケーションは、３２倍よりも大きい容量比を許容することさえあり得る。
【０１１３】
ＦＬＣ−ＨＳコントローラおよびＤＲＡＭ−ＨＳの両方が、低消費電力、高帯域幅、低遅延（高速度）に最適化されていることに留意されたい。したがって、両方の要素が、上述の利点を提供する。一方、ＦＬＣ−ＳＳコントローラおよびＤＲＡＭ−ＳＳの両方が、低コストに最適化されている。一構成では、ＦＬＣ−ＨＳコントローラのルックアップテーブルは、ＦＬＣ−ＨＳコントローラ、利用されるＳＲＡＭ、または他の高速度／低電力メモリ内にロケートされる。ただし、ＦＬＣ−ＳＳについて、ルックアップテーブルは、ＤＲＡＭ−ＳＳに記憶され得る。この構成を有することは、ルックアップテーブルをＦＬＣ−ＳＳコントローラに記憶するよりも低速であるが、ＦＬＣ−ＳＳに必要なルックアップテーブル用にＤＲＡＭ−ＳＳの小部分をパーティション化する方が費用効果が高い。一実施形態では、ＤＲＡＭ−ＳＳに記憶されたルックアップテーブルにアクセスする時間ペナルティを低減するために、最も最近確認された（使用された）アドレス書き換えをキャッシュするための、ＤＲＡＭ−ＳＳルックアップテーブルの小さいＳＲＡＭキャッシュが含まれ得る。そのようなアドレスキャッシュは、アドレス書き換えテーブルのみがキャッシュされるため、完全連想である必要はない。５％のミスでも、ＤＲＡＭでアドレス書き換えを行う必要性を、２０分の１に低減するため、ＣＰＵ  Ｌ２およびＬ３キャッシュで使用されるもののようなセット連想キャッシュで十分である。このことは、６４，０００個のルックアップテーブルエントリから１０００個がキャッシュされるなど、ごく小さい割合で達成され得る。アドレスキャッシュはまた、最も過去に使用された／先出しの動作に基づき得る。
【０１１４】
この実施形態では、ＦＬＣモジュール５４０は、ＦＬＣ−ＨＳコントローラ５３２と、関連付けられたメモリコントローラ５４４を有するＤＲＡＭ−ＨＳメモリ５２８と、を含む。ＦＬＣモジュール５４２は、ＦＬＣ−ＳＳコントローラ５３６と、関連付けられたメモリコントローラ５４８を有するＤＲＡＭ−ＳＳメモリ５２４と、を含む。ＦＣＬ−ＨＳコントローラ５３２は、処理デバイス５００に接続している。また、示されているように、ＤＲＡＭ−ＨＳ５２８に、またＦＬＣ−ＳＳコントローラ５３６に接続している。ＦＬＣ−ＳＳコントローラ５３６の出力は、ＤＲＡＭ−ＳＳ５２４に、また記憶ドライブ７８に接続している。
【０１１５】
各ＤＲＡＭ５２８、５２４のコントローラ５４４、５４８は、当技術分野で理解されているように動作して、ＤＲＡＭに対する読み取りおよび書き込みの動作をガイドおよび制御し、そのため、これらの要素および関連した動作は、詳細に記載されていない。ＤＲＡＭとして示されているが、任意のタイプのＲＡＭが、利用され得ることが想到される。コントローラ５４４、５４８とＤＲＡＭ５２８、５２４との間の接続は、これらの要素間の通信を可能にし、データがそれぞれのＤＲＡＭから取り出され、およびそれぞれのＤＲＡＭに記憶されることを可能にする。
【０１１６】
この例示的な実施形態では、ＦＬＣコントローラ５３２、５３６は、ＤＲＡＭ５２８、５２４内のロケーションに対応するアドレスに書き換えられ得る物理メモリアドレスを記憶する１つ以上のルックアップテーブルを含む。例えば、物理アドレスは、仮想アドレスに変換され得、ＤＲＡＭコントローラは、仮想アドレスを使用して、ＤＲＡＭの行アドレスビットおよび列アドレスビットを生成し得る。ＤＲＡＭ５２８、５２４は、キャッシュメモリとして機能する。この実施形態では、ルックアップテーブルは、完全連想であり、したがって、１対１のマッピングを有し、単一のキャッシュブロックへの２つ以上のメモリアドレスマッピング間の競合を引き起こさない任意のキャッシュブロックにデータが記憶されることを許容する。
【０１１７】
図５Ａに示されているように、標準速度ＦＬＣモジュール５４２は、処理デバイス５００に直接接続していない。高速度ＦＬＣモジュール５４０のみを処理デバイス５００に接続させることによって、標準速度ＦＬＣモジュール５４２は、高速度ＦＬＣモジュール５４０に専用である。１つの高速度ＦＬＣモジュールは、１つ以上の標準速度ＦＬＣモジュールを共有し得ることが想到される。この配置は、ＦＬＣ−ＨＳコントローラ５３２内のミスを、処理デバイス５００を通し返して再ルーティングし、必然的に、貴重なシステムバスリソースを消費し、かつ処理デバイス５００に対して追加のオーバーヘッドを作り出す標準速度ＦＬＣモジュール５４２にルーティングする必要があることによって、プロセッサを低速化しない。
【０１１８】
一般に、メモリ読み取りイベントの動作中に、要求されたデータの物理アドレスを有するデータ要求が、処理デバイス５００からＦＬＣ−ＨＳコントローラ５３２に送信される。ＦＬＣ−ＨＳコントローラ５３２は、ＦＬＣ−ＨＳコントローラ５３２によってアクセス可能なメモリアドレスの１つ以上のテーブルを、関連付けられたＤＲＡＭ−ＨＳ５２８に記憶する。ＦＬＣ−ＨＳコントローラ５３２は、ＦＬＣ−ＨＳコントローラ５３２のメモリテーブルが、対応する物理アドレスを含むかどうかを判定する。ＦＬＣ−ＨＳコントローラ５３２が、ＦＬＣ−ＨＳコントローラ５３２のテーブル内に対応するメモリアドレスを含む場合には、ＦＬＣ−ＨＳコントローラ５３２が、（コントローラ５４４を介して）ＤＲＡＭ−ＨＳ５２８からデータを取り出すというヒットが発生し、当該データは、ＦＬＣ−ＨＳコントローラを介して処理デバイス５００に提供し返される。
【０１１９】
これに代えて、ＦＬＣ−ＨＳコントローラ５３２が、適合する物理アドレスを含まない場合、結果はミスであり、要求は、ＦＬＣ−ＳＳコントローラ５３６に回送される。このプロセスは、ＦＬＣ−ＳＳコントローラ５３６で繰り返され、適合する物理アドレスがＦＬＣ−ＳＳコントローラ５３６のメモリアドレスルックアップテーブル内にロケートされている場合、要求されたものは、仮想メモリアドレスに書き換えられるか、または変換され、データは、メモリコントローラ５４８を介してＤＲＡＭ−ＳＳ５２４から引き出される。ＤＲＡＭコントローラは、仮想アドレスからＤＲＡＭの行アドレスビットおよび列アドレスビットを生成する。適合する物理アドレスが、ＦＬＣ−ＳＳコントローラ５３６のメモリアドレスルックアップテーブル内にロケートされている場合には、データ要求および物理アドレスは、ＦＬＣ−ＳＳコントローラ５３６によって記憶ドライブに向けられる。
【０１２０】
要求されたデータが、ＤＲＡＭ−ＨＳ５２８内で利用可能でないが、ＤＲＡＭ−ＳＳから記憶され、および取り出される場合には、取り出されたデータは、ＦＬＣ−ＳＳコントローラ５３６に、次いでＦＬＣ−ＨＳコントローラに、そして次いでプロセッサ５００に転送されることによってプロセッサに提供されるときに、ＤＲＡＭ−ＨＳ内に埋め戻される。データを埋め戻すときに、ＤＲＡＭ−ＳＳまたはＤＲＡＭ−ＨＳ内で空間が利用可能でない場合には、最も過去に使用されたデータまたはキャッシュラインが削除されるか、またはその中のデータが上書きされる。一実施形態では、高速度キャッシュから削除されたデータは、標準速度キャッシュに追加の空間が必要になるまで、標準速度キャッシュ内に残る。いくつかの場合では、データは、高速度ＦＬＣモジュールのみに記憶され、標準速度ＦＬＣモジュールには記憶されないか、またはその逆であり得ることがさらに想到される。
【０１２１】
要求されたデータが、ＤＲＡＭ−ＨＳ５２８内で利用可能でなく、またＤＲＡＭ−ＳＳ５２４内で利用可能でなく、したがって記憶ドライブ７８から取り出された場合には、取り出されたデータは、プロセッサに提供されると、ＤＲＡＭ−ＨＳ、ＤＲＡＭ−ＳＳ、または、その両方内に埋め戻される。したがって、最も最近使用されたデータは、ＤＲＡＭ５２８、５２４に記憶され、時間外に、ＤＲＡＭコンテンツは、最も最近使用されたデータで動的に更新される。最も使用頻度が低いデータは、ＤＲＡＭ５２８、５２４から破棄されるか、またはＤＲＡＭ５２８、５２４内で上書きされて、より最近使用されたデータに空間を作成する。これらの埋め戻し経路は、図５Ａに「第１のステージのキャッシュ置換経路」および「第２のステージのキャッシュ置換経路」として示されている。
【０１２２】
図５Ｂは、ＦＬＣコントローラの例示的な実施形態のブロック図である。これは、ＦＬＣコントローラの基本要素の１つの構成にすぎない。当業者は、追加の要素、データ経路、およびサポート要素が、本明細書に開示されたすべての実施形態のワーキングシステムに存在することを理解するであろう。これらの要素、データ経路、およびサポート要素は、示されておらず、代わりに、開示されたイノベーションをサポートする要素に焦点が当てられている。図５ＢのＦＬＣコントローラ５３２は、図５ＡのＦＬＣコントローラ５３２、または本明細書に開示された他のＦＬＣコントローラを代表する。
【０１２３】
図５Ｂには、プロセッサ（５００、図５Ａ）への入力／出力経路５６４が、示されている。プロセッサＩ／Ｏ経路５６４は、ＦＬＣ論理ユニット状態機械（状態機械）５６０に接続している。状態機械５００は、ＡＳＩＣ、制御ロジック、状態機械、プロセッサ、またはこれらの要素または任意の他の要素の任意の組み合わせなどの、本明細書に記載されるように機能することができる任意のデバイスを含み得る。状態機械５６０は、システムの物理アドレスをＦＬＣ仮想アドレスに変換する。この状態機械は、ハッシュ関数の複数のステージを使用して、完全連想ルックアッププロセスを実行する。これに代えて、状態機械５６０は、この書き換えを実行するためのコンテンツ連想メモリ（ＣＡＭ）であるか、またはこのＣＡＭを使用することができるが、それは高価であろう。
【０１２４】
状態機械５６０は、例えばＳＲＡＭなどの、メモリ５７６に接続している。メモリ５７６は、ＦＬＣコントローラに記憶された物理アドレスを含むルックアップテーブルを記憶する。これらの物理アドレスは、ＦＬＣコントローラ５３２によってアクセス可能なキャッシュラインを識別する仮想アドレスに書き換えできるか、またはマッピングできる。メモリ５７６は、アドレスマップおよび複数のハッシュテーブルを記憶し得る。複数のハッシュテーブルを使用することは、電力消費を低減し、動作遅延を低減する。
【０１２５】
状態機械５６０およびメモリ５７６は協働して、処理デバイスからの物理アドレスを仮想アドレスに書き換える。仮想アドレスは、「ヒット」が発生すると、ヒットＩ／Ｏライン５６８を介してＤＲＡＭに提供される。状態機械５６０が、状態機械５６０のメモリ５７６が物理アドレスエントリを含まないと判断した場合には、ミスが発生している。ミスが発生した場合には、ＦＬＣ論理ユニット状態機械は、記憶ドライブまたは別のＦＬＣコントローラにつながるミスＩ／Ｏライン５７２に、物理アドレスを有する要求を提供する。
【０１２６】
図６は、並列カスケードされたＦＬＣモジュールのブロック図である。図５Ａと比較すると、同一の要素は、同一の参照番号が付されており、再述されない。この実施形態には、１つ以上の追加のＦＬＣモジュール５５０、５５２が、追加されている。この例示的な実施形態では、高速度ＦＬＣモジュール５５０は一般に、高速度ＦＬＣモジュール５４０と同一であり、標準速度ＦＬＣモジュール５５２は一般に、標準速度ＦＬＣモジュール５４２と同一である。示されているように、高速度ＦＬＣモジュール５５０は、処理デバイス５００に接続している一方、標準速度ＦＬＣモジュール５５２は、マルチプレクサ５５４を通して記憶ドライブ７８に接続している。高速度ＦＬＣモジュール５４０、５５０の両方は、システムバスを通してなど、処理デバイス５００に接続している。
【０１２７】
図６の実施形態の動作は一般に、図５Ａおよび図８の実施形態の動作と同様である。図７は、図５Ａの実施形態の動作フロー図を提供する。図６に示された構成は、図５Ａの単一のカスケードされた実施形態に対して多数の利点を有する。よりコストがかかり、より多くの空間を消費するが、複数の並列に配置されたカスケードＦＬＣモジュールを有することは、メモリアドレスを異なる専用のＦＬＣモジュールに分離し、かつ２つ以上のＦＬＣモジュールでの並列メモリ動作を可能にするという利点を提供する一方、図５Ａに関連して上述したようなＦＬＣの複数のステージの利点を、依然として有する。
【０１２８】
図７は、図５Ａに示されているようなカスケードされたＦＬＣモジュールの例示的な動作方法の動作フロー図である。これは、一例の動作方法に過ぎず、当業者によって理解されるように、他の動作方法が、想到される。ステップ７０４で、データの物理アドレスを有する読み取り要求が、処理デバイス（プロセッサ）からＦＬＣ−ＨＳモジュールに、特にＦＬＣ−ＨＳコントローラに、送信される。次いで、決定ステップ７０８で、ＦＬＣ−ＨＳコントローラは、物理アドレスが、ＦＬＣ−ＨＳコントローラのルックアップテーブル内で識別されるかどうかを判定する。決定ステップ７０８の結果は、ヒットまたはミスであり得る。
【０１２９】
ステップ７０８で、物理アドレスが、ロケートされている場合には、結果は、ヒットであり、動作は、ステップ７１２に進む。ステップ７１２で、読み取り要求が、仮想アドレスと共にＤＲＡＭ−ＨＳコントローラに送信される。図２に示され、かつ当技術分野で理解されているように、ＤＲＡＭデバイスは、ＤＲＡＭに対する読み取り／書き込み動作を監視するための関連付けられたメモリコントローラを有する。ステップ７１６で、ＤＲＡＭコントローラは、仮想アドレスからＤＲＡＭの行アドレスビットおよび列アドレスビットを生成し、ステップ７２０でこれらを使用して、ＤＲＡＭ−ＨＳからデータまたはキャッシュラインを読み取る（取り出す）。ステップ７２４で、ＦＬＣ−ＨＳコントローラは、要求を満たすためにデータをプロセッサに提供する。次いで、ステップ７２８で、ＦＬＣ−ＨＳコントローラは、キャッシュライン（アドレスまたはデータ）のＦＬＣステータスレジスタを更新して、キャッシュラインの最近の使用を反映する。一実施形態では、データは、ＤＲＡＭ−ＨＳに書き込まれ、またＦＬＣ−ＳＳモジュールに書き込まれる。
【０１３０】
これに代えて、ステップ７０８で、物理アドレスが、ＦＬＣ−ＨＳ内で識別されない場合には、動作は、ステップ７３２に進み、メモリルックアップテーブルおよびＤＲＡＭ−ＨＳなどの新たな（空の）キャッシュラインが、ＦＬＣ−ＨＳコントローラ内に割り付けられる。物理アドレスが、ＦＬＣ−ＨＳモジュール内で識別されなかったため、キャッシュライン用の空間が、作り出されなければならない。次いで、ステップ７３６で、ＦＬＣ−ＨＳコントローラは、データ要求および物理アドレスを、ＦＬＣ−ＳＳモジュールに回送する。
【０１３１】
ＦＬＣ−ＨＳモジュール内で発生するように、決定ステップ７４０で、物理アドレスが、ＦＬＣ−ＳＳで識別されるかどうかの判定が、行われる。ＦＬＣ−ＳＳコントローラのルックアップテーブルに存在する物理アドレスによって明らかにされるように、物理アドレスが、ＦＬＣ−ＳＳモジュール内にある場合には、動作は、ステップ７４４に進む。ステップ７４４で、読み取り要求が、仮想アドレスと共にＤＲＡＭ−ＳＳコントローラに送信される。ステップ７４８で、ＤＲＡＭ−ＳＳコントローラは、仮想アドレスからＤＲＡＭの行アドレスビットおよび列アドレスビットを生成し、ステップ７５２でこれらを使用して、ＤＲＡＭ−ＳＳからデータまたはキャッシュラインを読み取る（取り出す）。ＦＬＣ−ＨＳの仮想アドレスは、ＦＬＣ−ＳＳの仮想アドレスとは異なるため、物理アドレスから仮想アドレスへの異なる変換が、各ＦＬＣコントローラ内で行われる。
【０１３２】
ステップ７２４で、ＦＬＣ−ＨＳコントローラは、要求されたキャッシュラインをＦＬＣ−ＨＳコントローラに回送し、当該ＦＬＣ−ＨＳコントローラは、それがＦＬＣ−ＨＳモジュールにキャッシュされるように、キャッシュラインを（データと共に）ＤＲＡＭ−ＨＳに提供する。最終的に、データは、ＦＬＣ−ＨＳからプロセッサに提供される。次いで、ステップ７６０で、ＦＬＣ−ＨＳコントローラは、データ（アドレス）のＦＬＣステータスレジスタを更新して、ＦＬＣ−ＨＳに、次いでプロセッサに提供されたデータの最近の使用を反映する。
【０１３３】
ステップ７４０で、物理アドレスが、ＦＬＣ−ＳＳ内で識別されない場合には、ＦＬＣ−ＳＳコントローラでミスが発生しており、動作は、ステップ７６４に進み、新たな（空の）キャッシュラインが、ＦＬＣ−ＳＳコントローラに割り付けられる。物理アドレスが、ＦＬＣ−ＳＳコントローラ内で識別されなかったため、次いでキャッシュライン用の空間が、作り出されなければならない。ステップ７６８で、ＦＬＣ−ＳＳコントローラは、物理アドレスを、例えば、ＰＣＩ−ｅタイプのアドレスなどの記憶ドライブアドレスに書き換える。記憶ドライブアドレスは、キャッシュラインのロケーションを識別するために記憶ドライブによって理解されるか、または記憶ドライブによって使用されるアドレスである。次に、ステップ７７２で、書き換えから結果として得られた記憶ドライブアドレスが、記憶ドライブ、例えば、ＰＣＩ−ｅ、ＮＶＭｅ、またはＳＡＴＡ  ＳＳＤに回送される。ステップ７７６で、記憶ドライブアドレスを使用して、記憶ドライブコントローラは、データを取り出し、取り出されたデータは、ＦＬＣ−ＳＳコントローラに提供される。ステップ７８０で、ＦＬＣ−ＳＳコントローラは、データをＦＬＣ−ＳＳ  ＤＲＡＭに書き込み、ＦＬＣ−ＳＳステータスレジスタを更新する。上記で議論したように、ステータスレジスタを更新することは、キャッシュラインを最近使用されたものとして指定するように行われ、これにより、キャッシュラインが最も過去に使用されたようになるまで上書きされることを防止する。最も過去に使用されたステータスの追跡は、キャッシュラインごとに追跡されるが、最も過去に使用されたステータスが、キャッシュライン内の個々のデータ項目について追跡され得ることが想到されるが、このことは、複雑さおよび追加のオーバーヘッド負荷を追加する。
【０１３４】
一実施形態では、ステップ７６４および７５２で示されているように、キャッシュラインが、記憶ドライブから取り出される。キャッシュライン全体が、ＦＬＣ−ＨＳコントローラに提供される。ＦＬＣ−ＨＳコントローラは、キャッシュライン全体をＤＲＡＭ−ＨＳに記憶する。プロセッサによって要求されたデータは、このキャッシュラインに記憶される。プロセッサ要求を満たすために、ＦＬＣ−ＨＳコントローラは、キャッシュラインからデータを抽出し、データをプロセッサに提供する。このことは、キャッシュラインが、ＤＲＡＭ−ＨＳに書き込まれる前または後に行われ得る。一構成では、キャッシュラインのみが、ＦＬＣ−ＳＳコントローラからＦＬＣ−ＨＳコントローラに提供され、ＦＬＣ−ＨＳコントローラは、プロセッサによって要求されたデータをキャッシュラインから抽出する。別の実施形態では、ＦＬＣ−ＳＳコントローラはまず、要求されたデータを提供し、次いでキャッシュラインをＦＬＣ−ＨＳコントローラに提供する。次いで、ＦＬＣ−ＨＳコントローラは、次いでデータプロセッサを提供し、次いでまたは同時に、キャッシュラインをＦＬＣ−ＨＳに書き込むことができる。抽出されたデータが、まずＦＬＣ−ＨＳコントローラに提供されるため、このことは、より高速であり得る。
【０１３５】
上記に述べたように、ＦＬＣ−ＨＳコントローラの仮想アドレスは、ＦＬＣ−ＳＳコントローラの仮想アドレスと同じではない。各ＦＬＣコントローラ内のルックアップテーブルは、別異し、ルックアップテーブル間に関係はない。その結果、各ＦＬＣコントローラの仮想アドレスセットはまた、一意である。仮想アドレスが、偶然に、仮想アドレス間で同じビットを有し得る可能性があるが、仮想アドレスは、仮想アドレスのそれぞれのＤＲＡＭ（ＤＲＡＭ−ＨＳおよびＤＲＡＭ−ＳＳ）で使用されることが意図されているため、異なる。
【０１３６】
図８は、２つ以上の別個のＦＬＣモジュールを有する分割ＦＬＣモジュールシステムのブロック図である。これは、分割ＦＬＣモジュールシステムの１つの可能な実施形態に過ぎず、特許請求の範囲から逸脱することなく、異なる構成が可能であることが想到される。図５Ａと比較すると、同一の要素は、同一の参照番号が付されており、これらの重複する要素については詳細には再述されない。
【０１３７】
図８に示されているように、ＦＬＣモジュール８０２の第１（ａ）、第２（ｂ）最大ｎ個のステージが並列に提供されて、メモリ要求の並列処理を可能にする。ｎの値は、任意の整数であり得る。第１のＦＬＣモジュール８２０Ａを参照して、ＦＬＣａコントローラ８０４Ａは、処理ユニット５００に接続しているか、または処理ユニット５００と通信して、読み取り要求または書き込み要求を受信する。システムバス（図示せず）は、通信および要求ルーティングが、システムバスを通して行われ得るように、ＦＬＣモジュール８２０と処理デバイス５００との間に在設され得る。ＦＬＣａコントローラ８０４Ａはまた、ＤＲＡＭａ８１２Ａと関連付けられたＤＲＡＭメモリコントローラ８０８Ａに接続している。ＦＬＣａコントローラ８０４Ａはまた、記憶ドライブ７８に直接接続しているか、または記憶ドライブ７８と通信する。他のＦＬＣモジュール８２０Ｂ、８２０ｎの各々は、各要素が、同じ参照番号を共有するが異なる識別子文字を有して、同様に構成されている。例えば、ＦＬＣモジュール８２０Ｂは、ＦＬＣｂコントローラ８０４Ｂ、ＤＲＡＭメモリコントローラ８０８Ｂ、およびＤＲＡＭｂ８１２Ｂを含む。ＦＬＣモジュール８２０Ｂはまた、示されているように、処理デバイス５００および記憶ドライブ７８に接続しているか、または処理デバイス５００および記憶ドライブ７８と通信する。単一の処理デバイス５００で示されているが、追加の処理デバイス（ＧＰＵ／オーディオ処理ユニット／．．．）がまた、ＦＬＣモジュール８２０を利用し得ることが想到される。
【０１３８】
ＦＬＣモジュール８２０のうちの１つ以上が、高速度／低遅延／低電力ＤＲＡＭを有する高速度ＦＬＣモジュールとして構成され得るか、またはＦＬＣモジュールが、標準速度ＤＲＡＭを有する標準速度モジュールであり得る。これにより、異なるＦＬＣモジュールに対する異なる動作速度が可能になる。このことは、ひいては、処理モジュール５００が、重要なデータの読み取り／書き込み要求を高速度ＦＬＣモジュールに向ける一方、重要度が低い読み取り／書き込み要求は、標準速度ＦＬＣモジュールにルーティングされることに対応する。
【０１３９】
一実施形態では、各ＦＬＣスライス（ＦＬＣａ、ＦＬＣｂ、ＦＬＣｃ）は、ＳｏＣバスに接続しており、各ＦＬＣスライスは、処理デバイスによってアドレスが割り当てられる。各ＦＬＣスライスは、個別かつ別異のメモリルックアップテーブルを支援する別異の要素である。バスアドレスルックアップテーブルまたはハッシュテーブルを使用して、メモリアドレスをＦＬＣスライスにマップし得る。一構成では、物理アドレス内の特定のビットは、いずれのＦＬＣスライスがアドレスに割り当てられているかを定義する。別の実施形態では、双方向マルチプレクサ（図示せず）は、ＦＬＣスライスと処理ユニット５００との間に提供されて、各ＦＬＣスライスへのアクセスを制御し得るが、この配置は、動作を低速化するボトルネックを作り出し得る。
【０１４０】
図５Ａおよび図８の実施形態は、図５Ａに示されているように、単一のＦＬＣコントローラ８０４Ａを有する１つ以上のＦＬＣモジュール８２０Ａを有し、かつまた１つ以上のカスケードＦＬＣモジュールを有するシステムが組み立てられ得るように組み合わせられ得ることが想到される。これらの２つの異なる配置を組み合わせる利点は、両方の配置の利点が、達成されることである。ＤＲＡＭにアクセスするためのプロセッサからの複数の経路があり、それにより、システムの速度および帯域幅が増加すると同時に、速度、帯域幅、および消費電力をより少なくなることを向上させる高速度の２ステージのＦＬＣコントローラの利点が提供される。組み合わせられたシステムは、設計のニーズを達成するようにシステムを調整するための任意の様式で配置され得る。
【０１４１】
図９は、図８に示されているような分割ＦＬＣモジュールの例示的な動作方法の動作フロー図である。これは、例示的な一動作方法に過ぎず、当業者によって理解されるように、他の動作方法が、想到される。方法の開始前に、メモリルックアップテーブルが、処理デバイスまたはシステムバスの一部として提供される。ルックアップテーブルは、プロセッサおよびＦＬＣモジュールからのアドレス間の関連付けを記憶するように構成されている。各ＦＬＣモジュールは、この実施形態ではスライスと呼ばれ得、各ＦＬＣスライスは、複数のＦＬＣステージを有し得る。
【０１４２】
この実施形態では、ＦＬＣ容量および帯域幅を増加させるために、複数のＦＬＣスライスが確立される。各ＦＬＣスライスは、システムバスメモリアドレス空間（領域）の一部分に割り付けられる。その上、これらのメモリ領域は、ＦＬＣスライス間でインターリーブされる。インターリーブ粒度は、ＦＬＣキャッシュラインサイズに適合するように設定されて、異なるＦＬＣコントローラスライス内のＦＬＣルックアップテーブルエントリの不要な重複（オーバーラップによる）を防止して、最終的にＦＬＣヒット率を最大化する。
【０１４３】
例示的な一実施形態では、マッピングは、インターリーブされた順序で、ＦＬＣキャッシュラインサイズのアドレスブロックをＦＬＣモジュールに割り当てる。例えば、４ＫＢのキャッシュラインサイズでのＦＬＣ実装について、および４つの異なるＦＬＣ（ＦＬＣａ、ＦＬＣｂ、ＦＬＣｃ、ＦＬＣｄ）の実装について、物理アドレスによる、識別されるメモリの、ＦＬＣへの以下のマッピング（割り当て）は、以下の通りである。
第１の４ＫＢ−ＦＬＣａ
第２の４ＫＢ−ＦＬＣｂ
第３の４ＫＢ−ＦＬＣｃ
第４の４ＫＢ−ＦＬＣｄ
第５の４ＫＢ−ＦＬＣａ
第６の４ＫＢ−ＦＬＣｂ
第７の４ＫＢ−ＦＬＣｃ
第８の４ＫＢ−ＦＬＣｄ
第９の４ＫＢ−ＦＬＣａ
このメモリマッピング割り当て方式は、このパターンに従って続行する。これは、データを異なるＦＬＣモジュールに分離するためのキャッシュライン境界を用いたメモリマッピングと呼ばれ得る。このようにして、処理デバイスによって使用されるメモリアドレスは、ＦＬＣスライス間で分割され、それにより、ボトルネックなしで性能の向上を可能にする並列配置されたＦＬＣシステムを作り出す。これにより、複数の異なるプログラムが１つのＦＬＣモジュールのみを利用するか、またはプログラムのメモリ使用量をすべてのＦＬＣモジュールに分散することができ、これにより、動作速度が向上し、ボトルネックが低減される。
【０１４４】
一実施形態では、各ＦＬＣスライスは、メモリアドレスに対応する。この例示的な動作例では、ＦＬＣａ、ＦＬＣｂ、ＦＬＣｃ、およびＦＬＣｄとして定義された４つのＦＬＣスライスがある。各ＦＬＣスライスは、ＦＬＣスライスを識別する一意のコードを有する。例えば、例示的なメモリアドレスが、ＦＬＣスライス割り当てと共に以下で提供される。
アドレスｘｘｘｘ−００−ｘｘｘｘｘが、ＦＬＣａに割り当てられ、
アドレスｘｘｘｘ−０１−ｘｘｘｘｘが、ＦＬＣｂに割り当てられ
アドレスｘｘｘｘ−１０−ｘｘｘｘｘが、ＦＬＣｃに割り当てられ
アドレスｘｘｘｘ−１１−ｘｘｘｘｘが、ＦＬＣｄに割り当てられ
ここで、ｘは、「０」および「１」の任意の組み合わせである。他の実施形態では、他のアドレス指定マッピング方式が、利用され得る。
【０１４５】
整数のＦＬＣキャッシュラインサイズを有する他のアドレスブロックマッピング方式が、使用され得る。部分的なまたは非整数のブロックサイズでは、異なるＦＬＣスライス内のルックアップテーブルエントリが、重複し得る。このことは致命的ではない場合があるが、それでも、別異のアドレスルックアップテーブルエントリの数の減少をもたらし、最終的にＦＬＣキャッシュヒット性能に影響を与える。
【０１４６】
図９に戻ると、ステップ９１２で、メモリアドレスが、各ＦＬＣモジュールに割り当てられる（この実施形態では、ＦＬＣ１、ＦＬＣ２、ＦＬＣ３であるが、他の実施形態は、より多いか、またはより少ない数のＦＬＣモジュールを有し得る。割り当ては、上述したように、インターリーブ方式で行われ得る。次いで、ステップ９１６で、処理デバイスは、メモリに記憶されたデータの読み取り要求を生成する。他の実施形態では、要求は、書き込み要求であり得る。ステップ９２０で、処理デバイスからのデータ要求が、分析され、メモリマッピングに基づいて、データ要求（物理アドレスを有する）が、適切なＦＬＣにルーティングされる。このことは、システムバスで行われ得る。上記に提供された例示的なメモリアドレスの関連付けに基づいて、物理メモリが、ｘｘｘｘ−００−ｘｘｘｘｘである場合、このアドレスは、ＦＬＣａにマッピングし、アドレスは、ＦＬＣａに割り当てられたプロセッサバスポートにルーティングされる。次いで、動作は、ステップ９２４に進み、そこで、データ要求および物理アドレスに対して、図４の方法が、行われる。メモリアドレスが、ｘｘｘｘ−０１−ｘｘｘｘｘである場合、このアドレスは、ＦＬＣｂにマッピングし、動作は、ステップ９２８に進む。物理メモリアドレスが、ｘｘｘｘ−１０−ｘｘｘｘｘである場合、アドレスは、ＦＬＣｃにマッピングし、動作は、ステップ９３２に進み、そこで、データ要求および物理アドレスに対して、図４の方法が、行われる。物理メモリアドレスが、ｘｘｘｘ−１１−ｘｘｘｘｘである場合、このアドレスは、ＦＬＣｄにマッピングし、動作は、ステップ９３６に進み、そこで、データ要求および物理アドレスに対して、図４の方法が、行われる。図４の方法およびその議論は、図９のこの議論に組み込まれる。
【０１４７】
図１０は、バイパス経路を有するカスケードＦＬＣシステムの例示的な実施形態の例示的なブロック図である。図５Ａと比較すると、同一の要素は、同一の参照番号が付されている。この実施形態では、バイパスモジュール１００４が、高速度ＦＬＣモジュール５４０と処理デバイス５００との間に提供され、それらに接続されている。バイパスモジュール１００４への入力は、処理デバイス５００からの要求を受信する。バイパスモジュール１００４は、プロセッサからの要求を分析し、それをバイパス経路にルーティングされるか、または高速度ＦＬＣモジュール５４０にルーティングされる要求として分類することができる任意のタイプのデバイスであり得る。バイパスモジュール１００４は、状態機械、プロセッサ、制御ロジック、ＡＳＩＣ、任意の他の同様のまたは同等のデバイスを備え得るが、これらに限定されない。
【０１４８】
バイパスモジュール１００４からの第１の出力は、ＦＬＣ−ＨＳコントローラ５３２に接続している。バイパスモジュール１００４からの第２の出力は、マルチプレクサ１００８に接続している。マルチプレクサ１００８はまた、制御入力１０１２上で制御信号を受信する。マルチプレクサ１００８は、制御信号に応答して、特定の時間に入力信号のうちの１つを出力するように構成された任意のタイプのスイッチであり得る。マルチプレクサ１００８の出力は、標準速度ＦＬＣモジュール５４２の標準速度ＦＬＣコントローラ５３６に接続している。
【０１４９】
図１０に示されているようなカスケードされたＦＬＣモジュールに関連するバイパスモジュール１００４およびマルチプレクサ１００８の動作は、以下の図１１で議論される。一般に、バイパスモジュール１００４は、処理デバイス５００からの要求を分析し、要求が、標準速度ＦＬＣモジュール５４２にバイパスされるべきか、または高速度ＦＬＣモジュール５４０に向けられるべき要求として適格であるかどうかを判定する。要求が、バイパスタイプの要求であると判定された場合、要求は、バイパスモジュール１００４によってマルチプレクサ１００８にリダイレクトされ、そこで、マルチプレクサ１００８は、標準速度ＦＬＣモジュール５３６へと選択的に切り替えられる。
【０１５０】
図１１は、図８に示されているような分割ＦＬＣモジュールの例示的な動作方法の動作フロー図である。これは、例示的な一動作方法に過ぎず、当業者によって理解されるように、他の動作方法が、想到される。この方法は、ステップ１１０８で開始し、処理デバイスが、メモリからデータの読み取り要求を生成する。このステップは、プロセッサがＲＡＭなどのメインメモリからデータを要求することに通常あるような従来事項内で行われる。ステップ１１１２で、処理デバイスからの要求は、処理のためにバイパスモジュールに提供される。バイパスモジュールは、要求を処理して、要求が、高速度ＦＬＣモジュールをバイパスするデータとして適格であるか、または分類されるかを判定する。データまたは特定のアドレスは、多様な理由で高速度ＦＬＣモジュールをバイパスするように分類され得る。
【０１５１】
いくつかの実施形態では、バイパスデータは、性能の観点から、高速ＤＲＡＭでの記憶に適格であるほどの頻度では使用されないデータである。他の実施形態では、処理デバイスからの特定の物理アドレスは、バイパスモジュールがバイパス経路にルーティングするバイパスアドレスとして指定される。これは、固定アドレスマッピングと呼ばれ、それによって、特定のアドレスまたはアドレスのブロックが、バイパス経路に向けられる。同様に、バイパスの決定は、プロセッサまたは他のソフトウェア／ハードウェア機能によって指定されたデータ型に基づき得る。
【０１５２】
バイパスの指定はまた、タスクの重要度として定義されたタスクＩＤに基づき得る。タスクの重要度を定義するタスクＩＤは、固定された一連の基準によって設定されるか、またはＤＲＡＭ−ＨＳの利用可能な容量または他の要因に基づいて経時的に変動し得る。ソフトウェアエンジンまたはアルゴリズムはまた、タスクＩＤを指定し得る。バイパスモジュールはまた、特定のタスクＩＤのみが、予約されたＤＲＡＭ−ＨＳメモリ空間に配置できるように、ＤＲＡＭ−ＨＳ内の空間を予約するように構成され得る。バイパスモジュール制御に基づくＤＲＡＭ−ＨＳへのキャッシュの不終了または不必要なブロッキングを回避するために、タスクＩＤまたは指定は、タイムアウトし得、つまり、バイパス指定は、固定またはプログラム可能なタイマ期間の後に終了される。さらに、タスクＩＤを使用して、タスクＩＤごとにＤＲＡＭ−ＨＳキャッシュライン割り付け容量を定義し得る。これは、貪欲なタスク／スレッドが貪欲でないタスク／スレッドをパージすることを防止し、最終的に、よりバランスが取れた全システム性能を可能にするためである。オペレーティングシステムはまた、キャッシュライン割り付け容量テーブルを経時的に変更して、所与の期間中に同時に動作する必要がある同時タスク／スレッドの数を反映し得る。
【０１５３】
例として、アクティブなビデオ再生（動画）を表示する画面表示は、絶えず変化する画面表示を有するが、ビデオを再生していないとき、画面表示は静的である。結果として、バイパスモジュールは、ビデオが画面に１回または２回以上再表示されないために、アクティブなビデオ表示をバイパス経路にバイパスするように構成され得る。ただし、一時停止した動画について、または画面が静止している非ビデオ再生中に、画面をリフレッシュするときに表示データが何度も再利用されるため、表示データは、キャッシュされ（バイパスされない）得る。したがって、ＦＬＣ−ＨＳモジュールが、消費電力がより少ないため、ＦＬＣ−ＨＳモジュールでデータに静的表示を形成させることが最良である。このことを、ソフトウェアまたはハードウェアで行って、画面が繰り返す画面表示であるかどうかを検出することができる。
【０１５４】
一実施形態では、バイパスモジュールは、いずれのデータ（稀に使用されるか、または１回のみ使用される）が、高速度ＦＬＣモジュールから標準速度ＦＬＣモジュールに向けてバイパスされるべきかを経時的に監視するアルゴリズムおよび機械学習エンジンを含む。経時的に、バイパスモジュールの人工知能を有する機械学習能力は、特定のユーザにとって、いずれのデータが、稀に使用されるか、または１回のみ使用されるか、したがって、高速度ＦＬＣモジュールからバイパスされるべきかを判定する。ユーザが、経時的に、そのデータをより頻繁に使用する場合には、バイパスモジュールの機械学習の態様は、挙動の変化に合わせて調整および適応し、性能を最大化するためにキャッシュされる高速度ＦＬＣモジュールにそのデータを向ける。
【０１５５】
一実施形態では、バイパスモジュールは、機械学習を使用せず、またはユーザの挙動に適応せず、代わりに、高速度ＦＬＣモジュール以外にバイパスされるデータまたはアドレスは、固定されているか、ユーザプログラム可能であるか、またはソフトウェア制御される。これは、それほど複雑ではないアプローチである。
【０１５６】
また、処理デバイスは、データをバイパスタイプのデータであるように指定し得ることが想到される。そのため、処理デバイスからバイパスモジュールへの要求（読み取りまたは書き込み）は、バイパスタイプデータとしての指定を含む。これにより、いずれのデータが、ソフトウェア制御の柔軟性を有する高速度ＦＬＣモジュールに記憶されるかを制御するための、さらなるメカニズムが提供される。
【０１５７】
また、データのバイパス指定が、一定期間後にバイパス指定を削除するタイマ機能を有し得るか、または一定期間後にバイパス指定を改新してアクティブのままにしかければならないことが想到および開示される。これにより、バイパス指定が不要になったデータにバイパス指定が適用されることが防止される。
【０１５８】
図１１に戻ると、決定ステップ１１１６で、データがバイパスデータであるかどうかの決定が、行われる。データが、バイパスされるべきではないデータとしてバイパスモジュールによって指定されていない場合には、動作は、ステップ１１２０に進む。ステップ１１２０で、動作は、上述した方法図７を実行した。上述したように、図７の方法ステップは、繰り返されないが、代わりに、アプリケーションのこのセクションに組み込まれる。図７で説明されているように、この時点での方法は、カスケードされたＦＬＣシステムかのように進行する。
【０１５９】
これに代えて、決定ステップ１１１６で、バイパスモジュールが、データをバイパスすべきであると判定した場合には、動作は、ステップ１１２４に進み、物理アドレスを有するデータ要求が、バイパスモジュールからバイパスマルチプレクサにルーティングされる。他の実施形態では、データ要求および物理アドレスは、バイパスマルチプレクサにルーティングされ得る。バイパスマルチプレクサ（ならびに本明細書に開示された他のマルチプレクサ）は、制御信号に応答して、そのマルチプレクサの入力のうちの１つを、この実施形態では標準速度ＦＬＣモジュールに接続しているそのマルチプレクサの出力に渡す方向別マルチプレクサである。バイパスマルチプレクサへの他方の入力は、図１０に示されているように、高速度ＦＬＣコントローラからのものである。
【０１６０】
ステップ１１２８で、バイパスマルチプレクサへの制御信号に応答して、バイパスマルチプレクサは、データ要求および物理アドレスを標準速度ＦＬＣ−ＳＳモジュールにルーティングする。他の実施形態では、バイパスマルチプレクサからのデータ要求および物理アドレスは、異なる高速度ＦＬＣモジュールなどの異なるロケーションに、または直接記憶ドライブに転送され得る。次いで、ステップ１１３２で、データ要求および物理アドレスは、図４に記載された様式で、標準速度ＦＬＣ−ＳＳモジュールによって処理される。このデータは、バイパスデータとして定義されるため、ＤＲＡＭ−ＨＳまたはＦＬＣ−ＨＳコントローラにはキャッシュされない。図４の方法は、図１１のこのセクションに組み込まれる。
【０１６１】
図１２は、バイパス経路およびキャッシュ不能なデータ経路を有するカスケードされたＦＬＣシステムの例示的な実施形態の例示的なブロック図である。図５Ａおよび図１０と比較すると、同一の要素は、同一の参照番号が付されている。この例示的な実施形態は、キャッシュ不能なデータを別個にルーティングするシステムの可能な一構成に過ぎず、そのため、当業者は、他の実施形態および配置に到達し得る。この実施形態には、図１０の構成を超えて、バイパスモジュール１００４と第２のマルチプレクサ１２０８との間に接続しているキャッシュ不能なデータ経路１２０４が追加されている。第２のマルチプレクサ１２０８は、マルチプレクサに制御信号を提供するように構成された制御信号入力１２１２を含む。第２のマルチプレクサ１２０８の制御信号１２１２は、第２のマルチプレクサへの２つの入力のうちのいずれがＤＲＡＭ−ＳＳ５２４への出力であるかを判定する。
【０１６２】
この実施形態では、ＤＲＡＭ−ＳＳ５２４の一部分は、キャッシュ不能なメモリとして予約されるためにパーティション化されている。ＤＲＡＭ−ＳＳのキャッシュ不能なデータパーティションには、キャッシュ不能なデータが、記憶される。そのため、キャッシュ不能なデータパーティションは、従来のプロセッサ／ＤＲＡＭとして動作する。プロセッサが、通常１回閲覧されるビデオファイルなどのキャッシュ不能なデータを要求する場合には、ファイルは、記憶ドライブ７８からファイルＩ／Ｏ経路５２０を介してプロセッサによって取り出され、ＤＲＡＭ−ＳＳのキャッシュ不能なパーティションに提供される。ＤＲＡＭ−ＳＳに新たに記憶されたこのデータは、次いでキャッシュ不能なデータ経路を介して、プロセッサによって小ブロックで取り出され得る。動画などのビデオファイルは、通常は非常に大きく、通常は１回しか視聴されず、したがって、１回のみ使用されるデータをキャッシュしても性能上の利点がないため、キャッシュされない。メモリの一部分をパーティション化することは、当業者によって理解され、そのため、このプロセスは、本明細書では詳細に記載されていない。キャッシュ不能なデータはまた、記憶ドライブ７８に記憶され得る。
【０１６３】
この実施形態では、バイパスモジュール１００４は、読み取り要求を分析し、かつ読み取り要求が、キャッシュ不能なデータとして分類されたデータに対するものであるかどうかを判定するようにさらに構成されている。そうである場合には、処理デバイス５００からのデータ読み取り要求は、キャッシュ不能なデータ経路１２０４を介して第２のマルチプレクサ１２０８にルーティングされる。第２のマルチプレクサ１２０８は、制御信号に応答して、キャッシュ不能なデータ読み取り要求、または標準速度ＦＬＣ−ＳＳコントローラ５３６からの要求のいずれかをＤＲＡＭ−ＳＳ５２４に渡すかどうかを判定する。データは、キャッシュ不能であるため、データがプロセッサに提供された後、データは、ＤＲＡＭ−ＨＳ５２８またはＤＲＡＭ−ＳＳ５２４のいずれにもキャッシュされないが、ＤＲＡＭ−ＳＳのキャッシュ不能なデータパーティションに記憶され得る。
【０１６４】
図１３は、図１２の実施形態の例示的な動作方法の動作フローチャートを提供する。これは、例示的な一動作方法に過ぎず、当業者によって理解されるように、他の動作方法が、想到される。動作方法は、図１１の方法に類似し、キャッシュ不能なデータを処理することに向けられた追加の手順を有する。ステップ１３０４で、処理デバイスは、メモリに記憶されたデータの読み取り要求を生成する。要求は、物理アドレスを含む。次いで、ステップ１３０８で、要求および物理アドレスが、バイパスモジュールに提供されて、要求が、バイパス経路にルーティングされるべきか、または要求が、キャッシュ不能なデータに対する要求であり、したがってキャッシュ不能なデータ経路にルーティングされるべきかを判定する。決定ステップ１３１２で、データ要求が、バイパス経路にルーティングされるべきかどうかの判定がなされる。要求が、バイパスデータタイプの要求であると決定された場合には、動作は、ステップ１３１６に進み、バイパスモジュールは、データ要求および物理アドレスをバイパスモジュールからバイパスマルチプレクサにルーティングする。バイパスマルチプレクサは、２つ以上の入力を受信し、かつ入力のうちの１つを出力に選択的にルーティングすることができる任意のデバイスであり得る。バイパスマルチプレクサは、双方向であるため、マルチプレクサの単一出力での信号は、いずれかの入力経路にルーティングされ得る。入力１０１２上のバイパスマルチプレクサ制御信号は、バイパスマルチプレクサの動作を制御する。
【０１６５】
その後、ステップ１３２０で、バイパスマルチプレクサに提供された制御信号に応答して、物理アドレスを有するデータ要求が、バイパスマルチプレクサからＦＬＣ−ＳＳモジュールにルーティングされる。次いで、ステップ１３２４で、ＦＬＣ−ＳＳモジュールは、図４に記載されているように、データ要求および物理アドレスを処理する。図４の方法は、図１３に組み込まれる。
【０１６６】
これに代えて、決定ステップ１３１２で、バイパス基準が満たされていなかったことが判定された場合には、動作は、要求がキャッシュ可能なメモリ要求であるかどうかが判定される決定ステップ１３２８に進む。キャッシュ可能なメモリ要求は、ＦＬＣモジュールのうちの１つにキャッシュされるデータに対する処理デバイスからの要求である一方、キャッシュ不能なメモリ要求は、キャッシュされないデータに対するものである。要求が、キャッシュ可能なメモリに対するものである場合には、動作は、ステップ１３３２に進み、図７のプロセスは、データ要求および物理アドレスに基づいて実行される。図７の方法は、図１３に組み込まれる。
【０１６７】
これに代えて、ステップ１３２８で、要求されたデータが、キャッシュ不能であると判定された場合には、動作は、ステップ１３３６に進む。ステップ１３３６で、物理アドレスを含むキャッシュ不能なデータ要求が、バイパスモジュールから第２のマルチプレクサにルーティングされる。第２のマルチプレクサは、バイパスマルチプレクサと概して同様に構成され、かつ動作し得る。ステップ１３４０で、第２のマルチプレクサ制御信号に応答して、第２のマルチプレクサからのデータ要求および物理アドレスが、キャッシュ不能なデータ用に予約されたＤＲＡＭ−ＳＳのパーティションに要求を向けるＤＲＡＭ−ＳＳコントローラに提供される。ステップ１３４４で、ＦＬＣ−ＳＳコントローラは、ＤＲＡＭ−ＳＳキャッシュ不能データパーティションからキャッシュ不能データを取り出し、ステップ１３４８で、ＦＬＣ−ＳＳコントローラは、非キャッシュ可能データを処理デバイスに提供する。取り出されたデータは、ＤＲＡＭ−ＨＳキャッシュまたはＤＲＡＭ−ＳＳキャッシュにキャッシュされないが、ＤＲＡＭ−ＳＳのキャッシュ不能なパーティションに維持され得る。そのため、取り出されたデータは、ＦＬＣ−ＳＳモジュールを通して評価可能ではないが、代わりにキャッシュ不能なデータ経路を通してアクセスされる。
【０１６８】
上述した実施形態、要素、または様々な変形例のいずれかを、任意の組み合わせで集めてまたは配置して、新たな実施形態を形成し得ることが想到および開示される。例えば、図６に示されているように、並列ＦＬＣモジュール配置（ＦＬＣスライス）は、ＦＬＣモジュールの２つ以上のステージと組み合わせられ得る。これらの実施形態のいずれも、バイパスモジュール機能および／またはキャッシュ不能なデータ経路を有して集められ、または特許請求され得る。また、ＦＬＣモジュールの３つ以上のステージ（例えば、３つまたは４つのＦＬＣモジュールステージ）が、本明細書に示されているか、または記載された任意の他の要素と組み合わせられ得ることが想到される。
【０１６９】
また、フローチャートおよび動作方法は、順次動作に関連して示され、および議論されているが、様々な動作が並列に行われ得ることが理解および開示されていることが、理解される。これにより、動作速度、帯域幅が増加し、システムの遅延が低減される。
【０１７０】
本開示に記載されている無線通信の態様は、ＩＥＥＥ標準８０２．１１〜２０１２、ＩＥＥＥ標準８０２．１６−２００９、ＩＥＥＥ標準８０２．２０−２００８、および／またはＢｌｕｅｔｏｏｔｈコア仕様ｖ４．０に完全にまたは部分的に準拠して実施できる。様々な実装では、Ｂｌｕｅｔｏｏｔｈコア仕様ｖ４．０は、１つ以上のＢｌｕｅｔｏｏｔｈコア仕様補遺２、３、または４によって修正され得る。様々な実装形態では、ＩＥＥＥ８０２．１１−２０１２は、草案ＩＥＥＥ標準８０２．１１ａｃ、草案ＩＥＥＥ標準８０２．１１ａｄ、および／または草案ＩＥＥＥ標準８０２．１１ａｈによって補完され得る。
【０１７１】
本明細書では、第１、第２、第３などの用語を使用して、様々なチップ、モジュール、信号、要素、および／またはコンポーネントを記載し得るが、これらの項目は、これらの用語によって限定されるものではない。これらの用語は、ある項目を別の項目と区別するためにのみ使用され得る。本明細書で使用される場合の「第１の」、「第２の」などの用語、および他の数値用語は、文脈によって明確に示されない限り、配列または順序を意味しない。したがって、以下で議論される第１の項目は、例示的な例の教示から逸脱することなく、第２の項目と呼ばれ得る。
【０１７２】
また、コンポーネント間の物理的な関係を記載するために様々な用語が使用される。第１の要素が、第２の要素に「接続され」、「係合され」、または「結合され」と呼ばれる場合、第１の要素が、第２の要素に直接接続、係合、配設、適用、もしくは結合され得るか、または介在する要素が、存在し得る。対照的に、要素が、別の要素に「直接接続され」、「直接係合され」、または「直接結合され」と呼ばれる場合、介在する要素が存在しないことが可能である。第１の要素が、第２の要素に「接続され」、「係合され」、または「結合され」と述べることは、第１の要素が、第２の要素に「直接接続され」、「直接係合され」、または「直接結合され」得ることを意味する。要素間の関係を記載するために使用される他の文言は、同様の形式で解釈されるとよい（例えば、「間」対「間に直接」、「隣接して」対「直接隣接して」など）。
【０１７３】
前述の説明は、本質的に単なる例示であり、開示、その適用、または使用を限定することは、決して意図されていない。本開示の広範な教示は、多様な形態で実装できる。したがって、本開示は、特定の例を含むが、図面、明細書、および以下の特許請求の範囲を検討すると他の修正が明らかになるため、開示の真の範囲はそのように限定されるものではない。本明細書で使用される場合、Ａ、Ｂ、およびＣのうちの少なくとも１つの語句は、非排他的論理ＯＲを使用して、論理（Ａ  ＯＲ  Ｂ  ＯＲ  Ｃ）を意味すると解釈されるものであり、「Ａのうちの少なくとも１つ、Ｂのうちの少なくとも１つ、およびＣのうちの少なくとも１つ」を意味すると解釈されるものではない。本開示の原理を変更することなく、方法内の１つ以上のステップが、異なる順序で（または同時に）実行され得ることが、理解されるはずである。
【０１７４】
以下の定義を含むこの出願では、「モジュール」という用語または「コントローラ」という用語は、「回路」という用語に置き換えられ得る。「モジュール」という用語および「コントローラ」という用語は、特定用途向け集積回路（ＡＳＩＣ）、デジタルの、アナログの、または混載のアナログ／デジタルディスクリート回路、デジタルの、アナログの、または混載のアナログ／デジタル集積回路、組み合わせ論理回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、コードを実行するプロセッサ回路（共有、専用、またはグループ）。プロセッサ回路によって実行されるコードを記憶するメモリ回路（共有、専用、またはグループ）、記載された機能性を提供する他の好適なハードウェアコンポーネント、または、システムオンチップなどの、上記のいくつかまたはすべての組み合わせを指し得るか、それらの一部であり得るか、またはそれらを含み得る。
【０１７５】
モジュールまたはコントローラは、１つ以上のインターフェース回路を含み得る。いくつかの例では、インターフェース回路は、ローカルエリアネットワーク（ＬＡＮ）、インターネット、ワイドエリアネットワーク（ＷＡＮ）、またはそれらの組み合わせに接続された有線または無線のインターフェースを含み得る。本開示の任意の所与のモジュールまたはコントローラの機能性は、インターフェース回路を介して接続された複数のモジュールおよび／またはコントローラに分散され得る。例えば、複数のモジュールおよび／またはコントローラは、ロードバランシングを可能にし得る。さらなる例では、サーバ（リモートまたはクラウドとしても知られている）モジュールまたは（リモートまたはクラウド）コントローラは、クライアントモジュールおよび／またはクライアントコントローラに代わっていくつかの機能性を実現し得る。
【０１７６】
上記で使用される場合のコードという用語は、ソフトウェア、ファームウェア、および／またはマイクロコードを含み得、プログラム、ルーチン、関数、クラス、データ構造、および／またはオブジェクトを指し得る。共有プロセッサ回路という用語は、複数のモジュールおよび／またはコントローラからの一部またはすべてのコードを実行する単一のプロセッサ回路を包含する。グループプロセッサ回路という用語は、追加のプロセッサ回路と組み合わせて、１つ以上のモジュールおよび／またはコントローラからの一部またはすべてのコードを実行するプロセッサ回路を包含する。複数のプロセッサ回路への言及は、ディスクリートのダイ上の複数のプロセッサ回路、単一のダイ上の複数のプロセッサ回路、単一のプロセッサ回路の複数のコア、単一のプロセッサ回路の複数のスレッド、または上記の組み合わせを包含する。共有メモリ回路という用語は、複数のモジュールおよび／またはコントローラからの一部またはすべてのコードを記憶する単一のメモリ回路を包含する。グループメモリ回路という用語は、追加のメモリと組み合わせて、１つ以上のモジュールおよび／またはコントローラからの一部またはすべてのコードを記憶するメモリ回路を包含する。
【０１７７】
メモリ回路という用語は、コンピュータ可読媒体という用語のサブセットである。本明細書で使用される場合のコンピュータ可読媒体という用語は、媒体を通って伝搬する一過性の電気信号または電磁信号（搬送波上など）を包含せず、したがって、コンピュータ可読媒体という用語は、有形かつ非一過性と見なされ得る。非一過性の、有形のコンピュータ可読媒体の非限定的な例は、不揮発性メモリ回路（フラッシュメモリ回路、消去可能なプログラム可能な読み取り専用メモリ回路、またはマスク読み取り専用メモリ回路など）、揮発性メモリ回路（静的ランダムアクセスメモリ回路または動的ランダムアクセスメモリ回路など）、磁気記憶媒体（アナログまたはデジタル磁気テープまたはハードディスクドライブなど）、および光記憶媒体（ＣＤ、ＤＶＤ、またはＢｌｕ−ｒａｙ（登録商標）ディスクなど）である。
【０１７８】
本出願に記載された装置および方法は、コンピュータプログラムに具体化された１つ以上の特定の機能を実行するように汎用コンピュータを構成することによって作り出された専用コンピュータによって部分的または完全に実装され得る。上述した機能ブロックおよびフローチャート要素は、熟練した技術者またはプログラマの日常業務によってコンピュータプログラムに書き換えられ得るソフトウェア仕様として作用する。
【０１７９】
コンピュータプログラムは、少なくとも１つの非一過性の、有形のコンピュータ可読媒体上に記憶されたプロセッサ実行可能命令を含む。コンピュータプログラムはまた、記憶されたデータを含むか、またはそれに依存し得る。コンピュータプログラムは、専用コンピュータのハードウェアと相互作用する基本入力／出力システム（ＢＩＯＳ）、専用コンピュータの特定のデバイスと相互作用するデバイスドライバ、１つ以上のオペレーティングシステム、ユーザアプリケーション、バックグラウンドサービス、バックグラウンドアプリケーションなどを包含し得る。
【０１８０】
コンピュータプログラムは、（ｉ）ＨＴＭＬ（ハイパーテキストマークアップ言語）またはＸＭＬ（拡張マークアップ言語）などの解析対象である記述テキスト、（ｉｉ）アセンブリコード、（ｉｉｉ）コンパイラによってソースコードから生成されたオブジェクトコード、（ｉｖ）インタプリタによる実行用のソースコード、（ｖ）ジャストインタイムコンパイラなどによるコンパイルおよび実行用のソースコードを含み得る。例のみとして、ソースコードは、Ｃ、Ｃ＋＋、Ｃ＃、Ｏｂｊｅｃｔｉｖｅ  Ｃ、Ｈａｓｋｅｌｌ、Ｇｏ、ＳＱＬ、Ｒ、Ｌｉｓｐ、Ｊａｖａ（登録商標）、Ｆｏｒｔｒａｎ、Ｐｅｒｌ、Ｐａｓｃａｌ、Ｃｕｒｌ、ＯＣａｍｌ、Ｊａｖａｓｃｒｉｐｔ（登録商標）、ＨＴＭＬ５、Ａｄａ、ＡＳＰ（アクティブサーバページ）、ＰＨＰ、Ｓｃａｌａ、Ｅｉｆｆｅｌ、Ｓｍａｌｌｔａｌｋ、Ｅｒｌａｎｇ、Ｒｕｂｙ、Ｆｌａｓｈ（登録商標）、Ｖｉｓｕａｌ  Ｂａｓｉｃ（登録商標）、Ｌｕａ、およびＰｙｔｈｏｎ（登録商標）を含む言語の構文を使用して書かれ得る。
【０１８１】
特許請求の範囲に列挙された要素のいずれも、要素が、「のための手段」という語句を使用して明示的に列挙されていない限り、または「のための動作」または「のためのステップ」という語句を使用した方法の請求項の場合米国特許法第１１２条（ｆ）の意味の範囲内のミーンズプラスファンクションの要素であることは、意図されていない。
【０１８２】
２０１８年６月１８日に出願された「Ｍｕｌｔｉ−Ｐａｔｈ  ｏｒ  Ｍｕｌｔｉ−Ｓｔａｇｅ  Ｃａｃｈｅ  Ｉｍｐｒｏｖｅｍｅｎｔ」と題された米国仮特許出願第６２／６８６，３３３号は、参照によりその全体が本明細書に組み込まれ、図を含む組み込まれた参照の内容は、この特許出願の一部であると見なされるものである。
【図１】
2021530028.tif 000003
【図２】
2021530028.tif 000004
【図３】
2021530028.tif 000005
【図４】
2021530028.tif 000006
【図５Ａ】
2021530028.tif 000007
【図５Ｂ】
2021530028.tif 000008
【図６】
2021530028.tif 000009
【図７】
2021530028.tif 000010
【図８】
2021530028.tif 000011
【図９】
2021530028.tif 000012
【図１０】
2021530028.tif 000013
【図１１】
2021530028.tif 000014
【図１２】
2021530028.tif 000015
【図１３】
2021530028.tif 000016
【国際調査報告】
2021530028.tif 000017
2021530028.tif 000018
2021530028.tif 000019