(57)【要約】      （修正有）【課題】プロセッサ及び最終レベルキャッシュモジュールを含むデータアクセスシステムを提供する。【解決手段】データアクセスシステム７０において、プロセッサは、第１の物理アドレスにアクセスするための要求を生成する。最終レベルキャッシュモジュール７６は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）８４、最終レベルキャッシュコントローラ８０及びＤＲＡＭコントローラ８２を含む。最終レベルキャッシュコントローラは、プロセッサからの要求を受信し、第１の物理アドレスを第１の仮想アドレスに変換する。ＤＲＡＭコントローラは、第１の仮想アドレスを第２の物理アドレスに変換し、第２の物理アドレスに基づいて、ＤＲＡＭにアクセスするよう。【選択図】図２
2019067417.tif 000002
【特許請求の範囲】
【請求項１】
データアクセス及び格納システムであって、
メインメモリと、
キャッシュコントローラと非プロセッサキャッシュとを有するキャッシュモジュールであって、前記キャッシュモジュールの前記非プロセッサキャッシュは、前記キャッシュコントローラによってアクセスされるよう構成される、キャッシュコントローラと、
プロセッサキャッシュを有し、前記キャッシュコントローラと通信するプロセッサであって、前記プロセッサキャッシュは、前記メインメモリ及び前記非プロセッサキャッシュから分離している、プロセッサと、
を備え、
前記プロセッサは、前記プロセッサによって必要とされ、前記プロセッサキャッシュにキャッシュされていないデータに応答して、前記キャッシュコントローラに対する前記データの要求を生成するよう構成され、
前記キャッシュコントローラは、仮想アドレスを生成しようと試みるよう構成され、前記仮想アドレスは、前記格納システムのアクセスされる物理位置の物理アドレスの前記仮想アドレスへの変換に基づいて生成され、前記仮想アドレスは、前記非プロセッサキャッシュ内の物理位置に対応し、
前記キャッシュモジュールは、前記キャッシュコントローラにおける前記物理アドレスの仮想アドレスへの変換が存在しないという決定に応答して、前記プロセッサによって必要とされる前記データを前記メインメモリ内の前記物理位置から読み出すよう構成される、
データアクセス及び格納システム。
【請求項２】
前記プロセッサによって必要とされる前記データを前記メインメモリ内の前記物理位置から読み出すことは、前記キャッシュモジュールが前記メインメモリ内の前記物理位置から前記データをフェッチしてそれを前記プロセッサに提供することを含む、請求項１に記載のデータアクセス及び格納システム。
【請求項３】
前記プロセッサによって必要とされる前記データを前記メインメモリ内の前記物理位置から読み出すことは、前記キャッシュモジュールが非プロセッサキャッシュのキャッシュミスが発生したことを前記プロセッサに示すことを含む、請求項１に記載のデータアクセス及び格納システム。
【請求項４】
前記非プロセッサキャッシュに格納されるデータは、前記プロセッサによって最近使用されたデータである、請求項１から３の何れか一項に記載のデータアクセス及び格納システム。
【請求項５】
前記メインメモリは、ソリッドステートドライブ（ＳＳＤ）、ハードディスクドライブ（ＨＤＤ）、又はハイブリッドドライブを有する、請求項１から４の何れか一項に記載のデータアクセス及び格納システム。
【請求項６】
前記キャッシュモジュールは、将来前記プロセッサによって要求されると予期されるデータに対して、前記メインメモリに格納されるデータの予測的なフェッチを実行するよう構成される、請求項１から５の何れか一項に記載のデータアクセス及び格納システム。
【請求項７】
前記データの予測的なフェッチは、前記プロセッサからのデータの要求を受信することとは無関係に、前記キャッシュモジュールが前記メインメモリ内に格納されるデータを読み出し、読み出した前記データを前記非プロセッサキャッシュに転送することを含む、請求項６に記載のデータアクセス及び格納システム。
【請求項８】
前記データの予測的なフェッチは、データの要求を受信することとは無関係に、前記キャッシュモジュールが前記非プロセッサキャッシュ内に格納されるデータにアクセスし、読み出した前記データを前記プロセッサキャッシュに転送することを含む、請求項６に記載のデータアクセス及び格納システム。
【請求項９】
前記キャッシュモジュールは、１又は複数のフルセットアソシアティブルックアップテーブル（ｆｕｌｌｙ  ｓｅｔ  ａｓｓｏｃｉａｔｉｖｅ  ｌｏｏｋｕｐ  ｔａｂｌｅ）を有する、請求項１から８の何れか一項に記載のデータアクセス及び格納システム。
【請求項１０】
第１のサーバと第２のサーバとを備え、
前記第１のサーバは、請求項１から９の何れか一項に記載のキャッシュモジュールを有し、
前記第２のサーバは、請求項１から９の何れか一項に記載のメインメモリを有する、
ネットワーク。
【請求項１１】
データアクセスシステムが格納システムとプロセッサキャッシュを有するプロセッサとを備え、前記格納システムがメインメモリとキャッシュモジュールとを有するように、前記キャッシュモジュールがキャッシュコントローラと非プロセッサキャッシュとを含み、前記プロセッサが前記キャッシュモジュールと通信するように、前記データアクセスシステムを動作する方法であって、
前記方法は、
前記プロセッサによって必要とされるデータが前記プロセッサキャッシュにキャッシュされていないことに応答して、前記プロセッサによって必要とされる前記データを読み出すために前記メインメモリのアクセスされる物理位置に対応する物理アドレスを生成する段階と、
前記物理アドレスに基づいて、前記非プロセッサキャッシュ内の物理位置に対応する仮想アドレスを前記キャッシュコントローラで生成する段階と、
前記キャッシュモジュールが、前記キャッシュコントローラによって前記物理アドレスを前記仮想アドレスに変換できないという決定に応答して、前記プロセッサによって必要とされる前記データを前記メインメモリ内の前記物理位置から読み出す段階と、
を備える、方法。
【請求項１２】
前記プロセッサによって必要とされる前記データを前記メインメモリ内の前記物理位置から読み出す前記段階は、前記キャッシュモジュールによって、前記メインメモリ内の前記物理位置からデータをフェッチする段階を含む、請求項１１に記載の方法。
【請求項１３】
前記プロセッサによって必要とされる前記データを前記メインメモリ内の前記物理位置から読み出す前記段階は、前記キャッシュモジュールによって、非プロセッサキャッシュのキャッシュミスが発生したことを前記プロセッサに示す段階を含む、請求項１１に記載の方法。
【請求項１４】
前記非プロセッサキャッシュに格納されるデータは、前記非プロセッサキャッシュに格納されていないデータよりも直近に要求されている、請求項１１から１３の何れか一項に記載の方法。
【請求項１５】
前記メインメモリは、ソリッドステートドライブ（ＳＳＤ）、ハードディスクドライブ（ＨＤＤ）、又はハイブリッドドライブを含む、請求項１１から１４の何れか一項に記載の方法。
【請求項１６】
将来アクセスされると予期される複数のアドレスに格納されるデータの予測的なフェッチを前記キャッシュモジュールで実行する段階をさらに備える、請求項１１から１５の何れか一項に記載の方法。
【請求項１７】
前記データの予測的なフェッチは、データの要求を受信することとは無関係に及び前記キャッシュモジュールで、前記メインメモリ内に格納されるデータにアクセスし、読み出した前記データを前記キャッシュモジュールに転送することを含む、請求項１６に記載の方法。
【請求項１８】
前記データの予測的なフェッチは、データの要求を受信することとは無関係に及び前記キャッシュモジュールで、前記非プロセッサキャッシュ内に格納されるデータにアクセスし、読み出した前記データを前記プロセッサに転送することを含む、請求項１６に記載の方法。
【請求項１９】
前記キャッシュモジュールは、第１のサーバに実装され、
前記メインメモリは、第２のサーバに実装され、
ネットワークは、前記第１のサーバと前記第２のサーバとを含む、
請求項１１から１８の何れか一項に記載の方法。
【請求項２０】
データアクセス及び格納システムであって、
メインメモリと、
キャッシュコントローラと非プロセッサキャッシュとを有するキャッシュモジュールであって、前記非プロセッサキャッシュはメモリとメモリコントローラとを含み、前記キャッシュモジュールは、プロセッサに必要なデータがプロセッサキャッシュにない場合、プロセッサキャッシュコントローラから前記プロセッサに必要なデータの要求を受信するよう構成される、キャッシュモジュールと、
前記キャッシュコントローラと通信するプロセッサモジュールであって、前記プロセッサモジュールは、プロセッサと、前記プロセッサキャッシュコントローラと前記プロセッサキャッシュとを有し、前記プロセッサキャッシュは前記メインメモリ及び前記非プロセッサキャッシュから分離しており、前記プロセッサモジュールは、前記プロセッサに必要なデータが前記プロセッサキャッシュにキャッシュされていないことに応答して、前記プロセッサによって必要とされる前記データが格納される位置に対応する物理アドレスを生成するよう構成される、プロセッサモジュールと、
を備え、
前記キャッシュコントローラは、
仮想アドレスが前記非プロセッサキャッシュ内の物理位置に対応するように、前記プロセッサによって生成される前記物理アドレスの変換に基づいて、前記仮想アドレスを生成しようと試み、
前記物理アドレスを仮想アドレスに変換できるという決定に応答して、前記プロセッサに必要なデータを前記非プロセッサキャッシュから読み出し、
前記物理アドレスを仮想アドレスに変換できないという決定に応答して、前記プロセッサに必要なデータを前記メインメモリから読み出す、
よう構成される、
データアクセス及び格納システム。
【請求項２１】
前記メインメモリから読み出される前記プロセッサに必要なデータは、前記非プロセッサキャッシュにも格納される、請求項２０に記載のデータアクセス及び格納システム。
【請求項２２】
前記データが前記プロセッサによって要求される前に、データの予測的なフェッチが前記メインメモリから前記データを読み出して前記非プロセッサキャッシュに前記データを格納することを含むように、前記キャッシュモジュールは、将来プロセッサに必要なデータであると予期されるデータの予測的なフェッチを実行するよう構成される、請求項２０又は２１に記載のデータアクセス及び格納システム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の相互参照］
本出願は、２０１４年１０月２１日出願の米国特許出願第１４／５１９，８２６号への優先権を主張し、また、２０１３年１０月２１日出願の米国特許仮出願第６１／８９３，６６２号、２０１３年１０月２１日出願の米国特許仮出願第６１／８９３，６７５号、２０１３年１０月２１日出願の米国特許仮出願第６１／８９３，６８３号、及び２０１３年１０月２４日出願の米国特許仮出願第６１／８９５，０４９号の利益を主張する。上記参照された複数の出願の開示全体は、参照によって本明細書に組み込まれる。
【０００２】
本開示は、複数の集積回路に関し、より具体的にはシステムオンチップに関連付けられるキャッシュに関する。
【背景技術】
【０００３】
本明細書において提供される背景技術の説明は、開示の文脈を概して提示することを目的とする。現在名を挙げられた発明者らの研究は、当該研究がこの背景技術において説明される範囲において、出願時に別途従来技術としてみなされ得ない当該説明の複数の態様と共に、明示的にも暗示的にも、本開示に対する従来技術とは認められない。
【０００４】
コンピュータ、携帯電話、タブレット等といった複数のデバイスは、典型的にシステムオンチップ（ＳｏＣ）に含まれる。図１は、ＳｏＣ１２と、１又は複数のダイナミックランダムアクセスメモリ（ＤＲＡＭ）１４とを含むデバイス１０の例を示す。ＤＲＡＭ１４は、ＳｏＣ１２に接続されるが、ＳｏＣ１２とは分離している１又は複数の集積回路として実装され得る。デバイス１０はまた、ＳｏＣ１２の複数のポート１７に接続される１又は複数の記憶ドライブ１６を含み得る。記憶ドライブ１６は、フラッシュメモリ、ソリッドステートドライブ、ハードディスクドライブ、及び／又はハイブリッドドライブを含み得る。ハイブリッドドライブは、ソリッドステートメモリを有するソリッドステートドライブと、回転記憶媒体を有するハードディスクドライブとを含む。
【０００５】
ＳｏＣ１２は、１又は複数の画像処理装置２０、システムバス２２、及び、メモリコントローラ２４を含み得る。画像処理装置２０の各々は、例えば、セントラルプロセッサ（又は中央処理装置（ＣＰＵ））２８を有する制御モジュール２６、グラフィックスプロセッサ（又はグラフィックス処理装置（ＧＰＵ））３０、ビデオ記録装置３２、カメラ画像信号プロセッサ（ＩＳＰ）３４、ギガビット（Ｇｂ）イーサネット（登録商標）インタフェース３６などのイーサネット（登録商標）インタフェース、ユニバーサルシリアルバス（ＵＳＢ）インタフェース３８及びシリアル・アドバンスド・テクノロジ・アタッチメント（ＳＡＴＡ）インタフェース４０などのシリアルインタフェース、並びに、ペリフェラル・コンポーネント・インターコネクト・エクスプレス（ＰＣＩｅ）インタフェース４２を含み得る。画像処理装置２０は、システムバス２２及びメモリコントローラ２４を介して複数のＤＲＡＭ１４にアクセスする。複数のＤＲＡＭ１４はメインメモリとして使用される。例えば、複数の画像処理装置２０のうちの１つは、物理アドレスを、複数のＤＲＡＭ１４のうちの１つにおける対応する物理位置にアクセスするときに、メモリコントローラ２４に提供する。画像処理装置２０はまた、システムバス２２を介して記憶ドライブ１６にアクセスし得る。
【０００６】
ＳｏＣ１２及び／又はメモリコントローラ２４は、ＳｏＣ１２の１又は複数のアクセスポート４４を介して複数のＤＲＡＭ１４に接続され得る。複数のＤＲＡＭ１４は、ユーザデータ、システムデータ、及び／又は複数のプログラムを格納する。ＳｏＣ１２は、第１のデータを使用して複数のプログラムを実行し、第２のデータを生成し得る。第１のデータは、当該複数のプログラムの実行の前に、複数のＤＲＡＭ１４に格納され得る。ＳｏＣ１２は、当該複数のプログラムの実行中、及び／又は実行後、複数のＤＲＡＭ１４中に第２のデータを格納し得る。複数のＤＲＡＭ１４は、高帯域幅インタフェース及びビット単価の安いメモリ記憶容量を有し得、広範囲の用途に対処し得る。
【０００７】
ＳｏＣ１２は、レベル０（Ｌ０）キャッシュ、レベル１（Ｌ１）キャッシュ、レベル２（Ｌ２）キャッシュ、又は、レベル３（Ｌ３）キャッシュのうちの１又は複数を含み得るキャッシュメモリを含む。Ｌ０−Ｌ３キャッシュは、複数の画像処理装置２０のうちの対応する画像処理装置２０に極めて近接して、ＳｏＣ１２上に配置される。図示される例において、制御モジュール２６は、セントラルプロセッサ２８と、Ｌ１−Ｌ３キャッシュ５０とを含む。セントラルプロセッサ２８はＬ０キャッシュ５２を含む。セントラルプロセッサ２８はまた、キャッシュ５０、５２へのアクセスを制御し得るメモリ管理ユニット（ＭＭＵ）５４を含む。
【０００８】
キャッシュのレベルが上がるにつれて、アクセスレイテンシ、及びキャッシュの記憶容量は大きくなる。例えば、Ｌ１キャッシュは、典型的に、Ｌ２キャッシュ及びＬ３キャッシュより小さい記憶容量を有する。しかしながら、Ｌ１キャッシュは、典型的に、Ｌ２キャッシュ及びＬ３キャッシュより小さいレイテンシを有する。
【０００９】
ＳｏＣ１２内の複数のキャッシュは、典型的に、スタティックランダムアクセスメモリ（ＳＲＡＭ）として実装される。複数のキャッシュは画像処理装置２０に極めて近接しているので、複数のキャッシュは、画像処理装置２０と同じクロック周波数で動作し得る。したがって、複数のキャッシュはＤＲＡＭ１４より短いレイテンシ期間を示す。
【００１０】
ＳｏＣ１２中の複数のキャッシュの数及びサイズは、用途に依存する。例えば、ハンドセット（又は携帯電話）はＬ３キャッシュを含まないことがあり、パーソナルコンピュータより小さいサイズのＬ１キャッシュ及びＬ２キャッシュを有し得る。同様に、複数のＤＲＡＭ１４の各々の数及びサイズは、用途に依存する。例えば、複数の携帯電話は、現在１−４ギガバイト（ＧＢ）のＤＲＡＭを有し、複数のパーソナルコンピュータは、現在４−１６ＧＢのＤＲＡＭを有し、複数のサーバは、現在３２ＧＢ−５１２ＧＢのＤＲＡＭを有する。一般的に、ＤＲＡＭの量が増えるにつれてコストは高くなる。
【００１１】
ＤＲＡＭのコストに加えて、同じ記憶容量に対するＤＲＡＭのパッケージサイズを小さくすることがますます困難になってきている。また、デバイス中に組み込まれる複数のＤＲＡＭのサイズ及び数が増えるにつれて、それらのＤＲＡＭのキャパシタンスは増加し、それらのＤＲＡＭと関連付けられる導電素子の数及び／又は長さは増え、それらのＤＲＡＭと関連付けられるバッファリングは増える。加えて、それらのＤＲＡＭのキャパシタンスが増加するにつれて、それらのＤＲＡＭの動作周波数は低下し、それらのＤＲＡＭのレイテンシ期間は大きくなる。
【００１２】
動作中、複数のプログラム及び／又はデータは、必要に応じて、複数のＤＲＡＭ１４からＳｏＣ１２中の複数のキャッシュに転送される。これらの転送は、（ｉ）複数のキャッシュと、（ｉｉ）対応する複数のプロセッサ及び／又は画像処理装置との間のデータ交換と比較してより高いレイテンシを有する。このため、複数のＤＲＡＭ１４へのアクセスは、より長いレイテンシ期間が原因で、典型的に回避される。
【００１３】
起動中、複数のプログラムは、複数の記憶ドライブ１６から複数のＤＲＡＭ１４に転送され得る。例えば、セントラルプロセッサ２８は、起動中、複数のプログラムを記憶ドライブ１６から複数のＤＲＡＭ１４に転送し得る。起動中、セントラルプロセッサ２８は、複数のＤＲＡＭ１４中に格納されるデータにアクセスしようと試み得る。このアクセスの試みと関連付けられるヒットの割合は、最初は０％に近い、又は０％に等しいこともある。しかしながら、ヒットの割合は、起動の終了までには１００％に近づく。
【発明の概要】
【００１４】
データアクセスシステムが提供され、データアクセスシステムは、プロセッサ及び最終レベルキャッシュモジュールを含む。プロセッサは、第１の物理アドレスにアクセスするための要求を生成するよう構成される。最終レベルキャッシュモジュールは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、最終レベルキャッシュコントローラ、及びＤＲＡＭコントローラを含む。最終レベルキャッシュコントローラは、（ｉ）プロセッサからの要求を受信し、（ｉｉ）第１の物理アドレスを第１の仮想アドレスに変換するよう構成される。ＤＲＡＭコントローラは、（ｉ）第１の仮想アドレスを第２の物理アドレスに変換し、（ｉｉ）第２の物理アドレスに基づいてＤＲＡＭにアクセスするよう構成される。
【００１５】
最終レベルキャッシュモジュールのダイナミックランダムアクセスメモリにアクセスするための方法が提供される。当該方法は、第１の物理アドレスにアクセスするための要求をプロセッサによって生成する段階と、最終レベルキャッシュコントローラにおいてプロセッサからの要求を受信する段階と、最終レベルキャッシュコントローラによって第１の物理アドレスを第１の仮想アドレスに変換する段階と、ダイナミックランダムアクセスメモリコントローラによって第１の仮想アドレスを第２の物理アドレスに変換する段階と、第２の物理アドレスに基づいてダイナミックランダムアクセスメモリにアクセスする段階とを含む。
【００１６】
本開示の適用性の更なる領域は、詳細な説明、特許請求の範囲、及び複数の図面から明らかになるであろう。詳細な説明及び複数の特定の例は、例示することのみを目的とし、当該開示の範囲を限定することは意図されていない。
【図面の簡単な説明】
【００１７】
【図１】従来技術による、デバイスの機能ブロック図である。
【００１８】
【図２】本開示の一実施形態による、データアクセスシステムの機能ブロック図である。
【００１９】
【図３】図２のデータアクセスシステムのＤＲＡＭ及び記憶ドライブのエントリを図示する機能ブロック図である。
【００２０】
【図４】図２のデータアクセスシステムを動作させる方法を示す。
【００２１】
複数の図面において、複数の参照番号は、同様の及び／又は同一の複数の要素を特定すべく再利用され得る。
【発明を実施するための形態】
【００２２】
複数の以下の例の少なくともいくつかは、複数の最終レベルキャッシュ（ＦＬＣ）モジュール及び複数の記憶ドライブを含む。複数のＦＬＣモジュールは、仮想記憶域として使用され、複数の記憶ドライブは物理記憶域として使用される。データはまず、物理記憶域からの読み出し、又は物理記憶域への書き込みの前に、仮想記憶域から読み出される、又は仮想記憶域へ書き込まれる。複数のＦＬＣモジュール及び複数の記憶ドライブにおけるメモリは、本明細書において、コンテントアドレサブルメモリ（ＣＡＭ）と称される。複数のＦＬＣモジュールの複数の制御モジュールは、以下に説明される様々なＣＡＭ技術を使用して、複数のＦＬＣモジュール及び複数の記憶ドライブ中のメモリへのアクセスを制御する。複数のＣＡＭ技術及び他の開示される複数の特徴は、メモリアクセス速度を最大化し、且つ消費電力を最小化しながら、デバイス中のＤＲＡＭの、必要とされる記憶容量を低減させる。デバイスは、ネットワークデバイス、又は無線ネットワークデバイスであり得る。複数のデバイスの例は、限定されないが、コンピュータ、携帯電話、タブレット、カメラ等を含む。複数の以下の例におけるＤＲＡＭは、通常、メインメモリとして使用されないが、むしろ、仮想メモリとして、及び／又はキャッシュの最終レベルとして使用される。
【００２３】
図２は、画像処理装置７２、システムバス７４、ＦＬＣモジュール７６、及び記憶ドライブ７８を含むデータアクセスシステム７０を示す。データアクセスシステム７０は、例えば、コンピュータ、携帯電話、タブレット、サーバ、及び／又は他のデバイス中に実装され得る。画像処理装置７２は、例えば、セントラルプロセッサ（又は中央処理装置（ＣＰＵ））、グラフィックスプロセッサ（又はグラフィックス処理装置（ＧＰＵ））、ビデオ記録装置、カメラ画像信号プロセッサ（ＩＳＰ）、ギガビット（Ｇｂ）イーサネット（登録商標）インタフェースなどのイーサネット（登録商標）インタフェース、ユニバーサルシリアルバス（ＵＳＢ）インタフェース及びシリアル・アドバンスド・テクノロジ・アタッチメント（ＳＡＴＡ）インタフェースなどのシリアルインタフェース、ペリフェラル・コンポーネント・インターコネクト・エクスプレス（ＰＣＩｅ）インタフェース、及び／又は他の画像処理装置を含み得る。画像処理装置７２は、１又は複数のモジュール中に実装され得る。一例として、複数の画像処理モジュール７２のうちの第１の画像処理モジュールは、レベル０（Ｌ０）キャッシュ、レベル１（Ｌ１）キャッシュ、レベル２（Ｌ２）キャッシュ、又はレベル３（Ｌ３）キャッシュのうちの１又は複数などのキャッシュメモリを含むように示されている。図示される例において、第１の画像処理装置は、セントラルプロセッサ７３及びＬ１−Ｌ３キャッシュ７５を含み得る。セントラルプロセッサ７３はＬ０キャッシュ７７を含み得る。セントラルプロセッサ７３はまた、キャッシュ７５、７７へのアクセスを制御し得るメモリ管理モジュール（ＭＭＭ）７９を含み得る。画像処理装置によって実行されると以下に説明される複数のタスクは、例えば、セントラルプロセッサ７３及び／又はＭＭＭ７９によって実行され得る。
【００２４】
画像処理装置７２は、システムバス７４を介してＦＬＣモジュール７６に接続される。画像処理装置７２は、（ｉ）画像処理装置７２とシステムバス７４との間、及び、（ｉｉ）システムバス７４と記憶ドライブ７８との間をバス及び複数のインタフェースを介して記憶ドライブ７８に接続される。複数のインタフェースは、例えば、イーサネット（登録商標）インタフェース、シリアルインタフェース、ＰＣＩｅインタフェース、及び／又は、組み込み型マルチメディアコントローラ（ｅｍｂｅｄｄｅｄ  ｍｕｌｔｉ−ｍｅｄｉａ  ｃｏｎｔｒｏｌｌｅｒ）（ｅＭＭＣ）インタフェースを含み得る。記憶ドライブ７８は、画像処理装置７２及び／又はＦＬＣコントローラ８０から離れて世界中どこにでも配置され得る。記憶ドライブ７８は、１又は複数のネットワーク（例えば、ＷＬＡＮ、インターネットネットワーク、又は遠隔ストレージネットワーク（又はクラウド））を介して、画像処理装置７２及び／又はＦＬＣコントローラ８０と通信し得る。
【００２５】
ＦＬＣモジュール７６は、ＦＬＣコントローラ８０、ＤＲＡＭコントローラ８２、及びＤＲＡＭ  ＩＣ８４を含む。ＤＲＡＭ  ＩＣ８４が、主に仮想記憶域として使用される一方で、記憶ドライブ７８は物理記憶域として使用される。複数の画像処理装置７２は、ＤＲＡＭ  ＩＣ８４及び記憶ドライブ７８を、それらがあたかも単一の記憶デバイスであるかのようにアドレシングする。データの読み出し及び／又は書き込みの間、複数の画像処理装置７２はＦＬＣコントローラ８０に複数のアクセス要求を送信する。ＦＬＣコントローラ８０は、ＤＲＡＭコントローラ８２を介してＤＲＡＭ  ＩＣ８４にアクセスし、及び／又は、記憶ドライブ７８にアクセスする。ＦＬＣコントローラ８０は、（破線によって示されるように）直接的に、又はシステムバス７４を介して、記憶ドライブにアクセスし得る。
【００２６】
データアクセスシステム７０の様々な例が本明細書において説明される。第１の例において、ＦＬＣモジュール７６は、画像処理装置７２、システムバス７４、及び記憶ドライブ７８とは分離しているＳｏＣ中に実装される。第２の例において、複数の画像処理装置７２のうちの１つの画像処理装置は、ＣＰＵが実装された画像処理装置である。複数の画像処理装置７２のうちの当該１つの画像処理装置は、ＦＬＣモジュール７６及び記憶ドライブ７８とは分離しているＳｏＣ中に実装され得る。別の例として、画像処理装置７２及びシステムバス７４は、ＦＬＣモジュール７６及び記憶ドライブ７８とは分離しているＳｏＣ中に実装される。別の例において、画像処理装置７２、システムバス７４、及びＦＬＣモジュール７６は、記憶ドライブ７８とは分離しているＳｏＣ中に実装される。データアクセスシステム７０の複数の他の例が以下に開示される。
【００２７】
ＤＲＡＭ  ＩＣ８４は、キャッシュの最終レベルとして使用され得る。ＤＲＡＭ  ＩＣ８４は、様々な記憶容量を有し得る。例えば、ＤＲＡＭ  ＩＣ８４は、携帯電話アプリケーションのために１−４ＧＢの記憶容量、パーソナルコンピュータアプリケーションのために４−３２ＧＢの記憶容量、及び、サーバアプリケーションのために３２ＧＢ−１テラバイト（Ｔ）の記憶容量を有し得る。
【００２８】
記憶ドライブ７８は、フラッシュメモリ（例えば、ＮＡＮＤフラッシュメモリ）、ソリッドステートメモリ、ソリッドステートドライブ（ＳＳＤ）、ハードディスクドライブ（ＨＤＤ）、及び／又は他の不揮発性メモリを含み得る。記憶ドライブ７８は、ハイブリッドドライブであり得、例えば、ソリッドステートメモリ及び回転記憶媒体を含み得る。記憶ドライブ７８は、ＤＲＡＭ  ＩＣ８４より大きい記憶容量を有し得る。例えば、記憶ドライブ７８は、ＤＲＡＭ  ＩＣ８４より４−１６倍大きい記憶容量を含み得る。別の例として、記憶ドライブ７８は、ＤＲＡＭ  ＩＣ８４より１桁大きい記憶容量を有し得る。ＤＲＡＭ  ＩＣ８４は、高速ＤＲＡＭを含み得、記憶ドライブ７８は低速ＤＲＡＭを含み得る。換言すると、ＤＲＡＭ  ＩＣ８４の速度は、記憶ドライブ７８におけるＤＲＡＭの速度より高速である。
【００２９】
ＤＲＡＭ  ＩＣ８４中に格納されるデータは、直近にアクセスされ、最も多くアクセスされ、及び／又は、関連付けられる最も高い優先レベルを有するデータであり得る。ＤＲＡＭ  ＩＣ８４中に格納されるデータは、ロックされているデータを含み得る。ロックされているデータは、ＤＲＡＭ  ＩＣ８４中に常に格納されるデータを指す。ロックされたデータはアップデートされ得る。ＤＲＡＭ  ＩＣ８４中に格納されるデータは、記憶ドライブ７８に格納されるデータより頻繁にアクセスされ、及び／又は、より高い優先レベルを有し得る。
【００３０】
いくつかの例において、ＤＲＡＭ  ＩＣ８４中に格納されるデータは、頻繁には使用（例えば、予め定められた期間にわたって予め定められた回数より多くアクセス）されないソフトウェアアプリケーション、フォント、ソフトウェアコード、代用コード、及び、様々な話し言葉をサポートするデータ等を含まない。これは、ＤＲＡＭ  ＩＣ８４のサイズ要件の最小化の助けとなり得る。頻繁には使用されないソフトウェアコードは、「ガベージコード（ｇａｒｂａｇｅ  ｃｏｄｅ）」と称され得、起動プロセス中は記憶ドライブ７８からＤＲＡＭ  ＩＣ８４へロードされ得ない。起動プロセスは、頻繁に使用されるデータのアップロードのみを含み得る。ＤＲＡＭ  ＩＣ８４のサイズが低減するにつれて、性能は向上し、電力消費、キャパシタンス及びバッファリングは低減する。キャパシタンス及びバッファリングが低減するにつれて、レイテンシは低下する。また、より少ない電力を消費することによって、対応するデバイスのバッテリ寿命は高められる。
【００３１】
ＦＬＣコントローラ８０は、複数の画像処理装置７２からの複数の要求を受信することに応答して、複数のＣＡＭ技術を実行する。複数のＣＡＭ技術は、複数の画像処理装置７２によって提供される複数の要求の第１の物理アドレスを複数の仮想アドレスに変換することを含む。これらの仮想アドレスは、複数の画像処理装置７２によって初めに生成される複数の仮想アドレスとは無関係であり、且つそれらとは異なり、複数の画像処理装置７２によって複数の第１の物理アドレスにマッピングされる。ＤＲＡＭコントローラ８２は、ＦＬＣコントローラ８０によって生成される複数の仮想アドレスを複数の第２の物理アドレスに変換（又はマッピング）する。第２の物理アドレスがＤＲＡＭ  ＩＣ８４中に存在しない場合、ＦＬＣコントローラ８０は、（ｉ）記憶ドライブ７８からデータをフェッチし、又は（ｉｉ）キャッシュミスが発生したことを複数の画像処理装置７２のうちの対応する画像処理装置７２に対して示し（又は信号で伝え）得る。記憶ドライブ７８からデータをフェッチすることは、記憶ドライブ７８中のデータにアクセスすべく、ＦＬＣコントローラ８０によって生成される複数の仮想アドレスを複数の第３の物理アドレスにマッピングすることを含み得る。キャッシュミスは、物理アドレスを仮想アドレスに変換する間にＦＬＣコントローラ８０によって、及び／又は、仮想アドレスを第２の物理アドレスに変換する間にＤＲＡＭコントローラ８２によって、検出され得る。ＤＲＡＭコントローラ８２は、キャッシュミスが発生したことをＦＬＣコントローラ８０に信号で伝え得、その後ＦＬＣコントローラ８０は、キャッシュミスを複数の画像処理装置７２のうちの１つに信号で伝える、又は、データのために記憶ドライブ７８にアクセスし得る。
【００３２】
ＦＬＣコントローラ８０が、キャッシュミスが発生したことを複数の画像処理装置７２のうちの対応する画像処理装置７２に信号で伝える場合、複数の画像処理装置７２うちの対応する画像処理装置７２は、記憶ドライブ７８中のデータにアクセスし得る。このことは、（ｉ）複数の第１の物理アドレスに基づいて記憶ドライブ７８中のデータにアクセスすること、（ｉｉ）初めに生成された複数の仮想アドレスを複数の第３の物理アドレスにマッピングして、その後、複数の第３の物理アドレスに基づいて記憶ドライブ７８にアクセスすること、又は、（ｉｉｉ）複数の第１の物理アドレスを複数の第３の物理アドレスにマッピングして、その後、複数の第３の物理アドレスに基づいて記憶ドライブ７８にアクセスすることを含み得る。当該複数のＣＡＭ技術は、ＤＲＡＭ  ＩＣ８４と記憶ドライブ７８との間のアドレスマッピングを含む。
【００３３】
例えば、当該複数のＣＡＭ技術は、フルセットアソシアティブアドレス変換（ｆｕｌｌ  ｓｅｔ  ａｓｓｏｃｉａｔｉｖｅ  ａｄｄｒｅｓｓ  ｔｒａｎｓｌａｔｉｏｎ）を提供し得る。これは、複数の第１の物理アドレスを、ＦＬＣコントローラ８０のディレクトリ中に格納される全ての仮想アドレスと比較することを含み得る。フルセットアソシアティブアドレス変換は、対応する複数のデータ要求の複数の第１の物理アドレスを複数の第２の仮想アドレス（又はＦＬＣコントローラ８０によって生成される複数の仮想アドレス）に変換すべく、ＦＬＣコントローラ８０によって使用され得る。このことは、複数の仮想アドレスへの変換のために、複数の第１の物理アドレスを第１のディレクトリ中の全てのアドレスと比較して複数の一致を見つけることを含み得る。フルセットアソシアティブアドレス変換はまた、複数の第２の物理アドレスへの変換のために、複数の第２の仮想アドレスを、第２のディレクトリ、ＤＲＡＭ  ＩＣ８４、及び／又は記憶ドライブ７８中の全てのエントリの全てのアドレスと比較して複数の一致を見つけるべく、ＤＲＡＭコントローラ８２によって使用され得る。初期の起動後の、ＤＲＡＭ  ＩＣ８４中に位置しているデータのヒット率は、ＤＲＡＭ  ＩＣ８４のサイズに依存して、１００％に達し得る。ＤＲＡＭ  ＩＣ８４は、プロセッサ及び／又は画像処理装置の最小のアイドル時間で、１００％に近いヒット率を保証するようなサイズにされ得る。例えば、このことは、複数の携帯電話アプリケーションについて１−４ＧＢ  ＤＲＡＭ  ＩＣを、複数のパーソナルコンピュータアプリケーションについて４−３２ＧＢ  ＤＲＡＭ  ＩＣを、複数のサーバアプリケーションについて３２−５００ＧＢ  ＤＲＡＭ  ＩＣを使用して達成され得る。
【００３４】
図２に加えて、図３は、データアクセスシステム７０の、ＤＲＡＭ  ＩＣ８４及び記憶ドライブ７８の複数のエントリを示す。ＤＲＡＭ  ＩＣ８４は、複数のＤＲＡＭエントリ００−ＭＮを含み得る。記憶ドライブ７８は、ドライブエントリ００−ＭＮを有し得る。ＤＲＡＭエントリ００−ＭＮの各々の複数のアドレスは、ドライブエントリ００−ＭＮの１又は複数のアドレスにマッピングされ得る。結果的に、ＤＲＡＭエントリ００−ＭＮのうちの１又は複数の中に格納されるデータの第１の部分は、ドライブエントリ００−ＭＮ中に格納されるデータの第２の部分に対応し得る。ＤＲＡＭエントリ００−ＭＮ中に格納されるデータは、ドライブエントリ００−ＭＮ中に格納されるデータについての情報を提供するメタデータを含み得る。当該情報は、ドライブエントリ００−ＭＮ中に格納されるデータタイプ及び／又はデータの長さを含み得る。
【００３５】
一例として、ＤＲＡＭエントリ００−ＭＮの各々は、例えば、１６ＫＢの記憶容量を有し得る。ドライブエントリ００−ＭＮの各々は、１６ＧＢの記憶容量を有し得る。データが、ＤＲＡＭエントリ００−ＭＮのうちの１つから読み出され、又はＤＲＡＭエントリ００−ＭＮのうちの１つに書き込まれる予定であり、ＤＲＡＭエントリ００−ＭＮのうちの1つが一杯であり、及び／又は、要求に関連付けられるデータの全てを有するわけではない場合、ドライブエントリ００−ＭＮのうちの対応するドライブエントリ００−ＭＮがアクセスされる。したがって、ＤＲＡＭ  ＩＣ８４及び記憶ドライブ７８は、メモリの複数のブロックに分割され得る。ＤＲＡＭ  ＩＣ８４中のメモリの各ブロックは、記憶ドライブ７８中に、それぞれの１又は複数のメモリのブロックを有し得る。このメモリのマッピング及び分割は、図２の複数の画像処理装置７２に対して透過的であり得る。
【００３６】
動作中、複数の画像処理装置７２のうちの1つは、データのブロックの要求信号を生成し得る。データのブロックがＤＲＡＭ  ＩＣ８４中に位置していない場合、ＦＬＣコントローラ８０は、記憶ドライブ７８中のデータのブロックにアクセスし得る。ＦＬＣコントローラ８０が記憶ドライブ７８からのデータにアクセス中である間、ＦＬＣコントローラ８０は、データを要求した画像処理装置に、バスエラー信号（又は警告信号）を送信し返し得る。バスエラー信号は、ＦＬＣコントローラ８０がデータにアクセス中であり、結果的に、システムバス７４は画像処理装置７２へのデータの転送のための準備ができていないということを示し得る。バスエラー信号の送信は、ＦＬＣモジュール７６から画像処理装置及び／又は画像処理装置７２のＳｏＣへの「バスアボート」と称され得る。画像処理装置７２は、バスの準備ができるのを待つ間、複数の他のタスクを実行し得る。当該複数の他のタスクは、例えば、画像処理装置のＳｏＣ中の１又は複数のキャッシュ（例えば、Ｌ０−Ｌ３キャッシュ）の中に既に格納されているデータを使用することを含み得る。このことはまた、プロセッサ及び／又は画像処理装置のアイドル時間を最小化する。
【００３７】
シーケンシャルアクセスが実行される場合、ＦＬＣコントローラ８０及び／又はＤＲＡＭコントローラ８２は、将来アクセスされると予期される複数のアドレスに格納されるデータの予測的なフェッチを実行し得る。このことは、起動中及び／又は起動後に行われ得る。ＦＬＣコントローラ８０及び／又はＤＲＡＭコントローラ８２は、データ及び／又はソフトウェアの使用を追跡し、実行されるべきコードの次の複数のラインを評価し、複数のメモリアクセスパターンを追跡し、この情報に基づいて、アクセスされると予期されるデータの次の複数のアドレスを予測し得る。当該次の複数のアドレスは、ＤＲＡＭ  ＩＣ８４及び／又は記憶ドライブ７８の複数のアドレスであり得る。一例として、以前にデータの要求を受信したこととは無関係に、及び／又は、以前にデータの要求を受信すること無くＦＬＣコントローラ８０及び／又はＤＲＡＭコントローラ８２は、記憶ドライブ７８中に格納されるデータにアクセスし、そのデータをＤＲＡＭ  ＩＣ８４に転送し得る。別の例として、以前にデータの要求を受信したこととは無関係に、及び／又は、以前にデータの要求を受信すること無く、ＦＬＣコントローラ８０及び／又はＤＲＡＭコントローラ８２は、ＤＲＡＭ  ＩＣ８４中に格納されるデータにアクセスし、そのデータをシステムバス７４及び／又は複数の画像処理装置７２のうちの１つに転送し得る。
【００３８】
データアクセスシステム７０の動作が、図４の方法に関して更に説明される。以下の複数のタスクは、主として図２−４における複数の例に関して説明されるが、当該複数のタスクは、本開示における複数の他の例に適用するよう容易に変更され得る。当該複数のタスクは反復して実行され得る。
【００３９】
当該方法は１００において開始する。１０２において、ＦＬＣコントローラ８０は、複数の画像処理装置７２のうちの1つからの要求を受信する。当該要求は、読み出し要求又は書き込み要求であり得る。
【００４０】
１０４において、ＦＬＣコントローラ８０は、受信された要求が読み出し要求かどうかを決定する。要求が読み出し要求である場合はタスク１０６が実行され、そうでない場合はタスク１２２が実行される。１０６において、ＦＬＣコントローラ８０は、受信された要求において提供される第１の物理アドレスを仮想アドレスに変換する。当該仮想アドレスは、ＤＲＡＭ  ＩＣ８４中の物理アドレス、及び／又は、記憶ドライブ７８中の物理アドレスに関連付けられ得る。
【００４１】
１０８において、ＤＲＡＭコントローラ８２は、仮想アドレスを第２の物理アドレスに変換する。ＦＬＣコントローラ８０及び／又はＤＲＡＭコントローラ８２は、複数の第１の物理アドレスを複数の仮想アドレスにマッピングするための、及び、複数の仮想アドレスを複数の第２の物理アドレスにマッピングするための、１又は複数の変換マッピングテーブルを含み得る。当該複数のテーブルは、ＦＬＣコントローラ８０とＤＲＡＭコントローラ８２との間で共有され得る。
【００４２】
１１０において、ＤＲＡＭコントローラ８２は、第２の物理アドレスがＤＲＡＭ  ＩＣ８４中に存在するかどうか、ひいては、データの対応するブロックがＤＲＡＭ  ＩＣ８４の割り当てられたスペース中に存在するかどうかを決定する。第２の物理アドレスがＤＲＡＭ  ＩＣ８４中に存在する場合、タスク１１２が実行され、そうでない場合は、タスク１１４が実行される。
【００４３】
１１２において、及び、第２の物理アドレスに基づいて、ＤＲＡＭコントローラ８２は、ＤＲＡＭ  ＩＣ８４からの受信された要求に関連付けられるデータの１又は複数の第１のブロックを読み出す。データの複数の第１のブロックの各々は、ＤＲＡＭ  ＩＣ８４中の対応する物理アドレスを有し得る。
【００４４】
１１４において、及び、第２の物理アドレスに基づいて、ＦＬＣコントローラ８０は、記憶ドライブ７８からの受信された要求に関連付けられるデータの１又は複数の第２のブロックを読み出す。データの１又は複数の第２のブロックは、データの複数の第１のブロックを含み得る。データの複数の第２のブロックの各々は、記憶ドライブ７８中の対応する物理アドレスを有し得る。記憶ドライブ７８の、データの複数の第２のブロック、及び複数の対応するアドレスは、ＤＲＡＭ  ＩＣ８４の、データの複数の第１のブロック、及び複数の対応するアドレスにそれぞれ対応し得る。
【００４５】
１１６において、ＤＲＡＭ  ＩＣ８４又は記憶ドライブ７８から読み出されたデータは、受信された要求を送信した画像処理装置に転送される。１１８において、１０２において受信された要求について、ＦＬＣコントローラ８０及び／又はＤＲＡＭコントローラ８２は、ＤＲＡＭ  ＩＣ８４及び／又は記憶ドライブ７８から読み出されるべき追加のデータがあるかどうかを決定し得る。読み出されるべき追加のデータがある場合、タスク１１０が実行され、そうでない場合は、当該方法は１２０において終了し得る。タスク１１０へ戻る代わりとして、及び、１０２において受信された要求について、読み出されるべき追加のデータがある場合、及び、変換されるべき別の物理アドレスがある場合、タスク１１８の後にタスク１０６が実行され得る。
【００４６】
１２２において、ＦＬＣコントローラ８０は、受信された要求が書き込み要求かどうかを決定する。受信された要求が書き込み要求である場合、タスク１２６が実行され、そうでない場合は、１２４において当該方法は終了し得る。１２６において、ＦＬＣコントローラ８０は、受信された要求において提供される第１の物理アドレスを仮想アドレスに変換する。仮想アドレスは、ＤＲＡＭ  ＩＣ８４中の物理アドレス、及び／又は、記憶ドライブ７８中の物理アドレスに関連付けられ得る。１２８において、ＤＲＡＭコントローラ８２は、仮想アドレスを第２の物理アドレスに変換する。タスク１２６および１２８は、上述された複数のマッピングテーブルを使用して達成され得る。
【００４７】
１３０において、ＤＲＡＭコントローラ８２は、ＤＲＡＭ  ＩＣ８４中に第２の物理アドレスが存在するかどうか、ひいては、データの対応するブロックが、ＤＲＡＭ  ＩＣ８４中の割り当てられたスペースに書き込まれるべきかどうかを決定する。第２の物理アドレスがＤＲＡＭ  ＩＣ８４中に存在する場合、タスク１３２が実行され、そうでない場合は、タスク１３４が実行される。
【００４８】
１３２において、及び、第２の物理アドレスに基づいて、ＤＲＡＭコントローラ８２は、受信された要求に関連付けられるデータの１又は複数の第１のブロックをＤＲＡＭ  ＩＣ８４に書き込む。データの複数の第１のブロックの各々は、ＤＲＡＭ  ＩＣ８４中の対応する物理アドレスを有し得る。
【００４９】
１３４において、及び、第２の物理アドレスに基づいて、ＦＬＣコントローラ８０は、受信された要求に関連付けられるデータの１又は複数の第２のブロックを記憶ドライブ７８に書き込む。データの１又は複数の第２のブロックは、データの複数の第１のブロックを含み得る。データの複数の第２のブロックの各々は、記憶ドライブ７８中の対応する物理アドレスを有し得る。記憶ドライブ７８の、データの複数の第２のブロック、及び複数の対応するアドレスは、ＤＲＡＭ  ＩＣ８４の、データの複数の第１のブロック、及び複数の対応するアドレスにそれぞれ対応し得る。
【００５０】
１３６において、１０２において受信された要求について、ＦＬＣコントローラ８０及び／又はＤＲＡＭコントローラ８２は、ＤＲＡＭ  ＩＣ８４及び／又は記憶ドライブ７８に書き込まれるべき追加のデータがあるかどうかを決定し得る。書き込まれるべき追加のデータがある場合、タスク１３０が実行され、そうでない場合は、１３８において当該方法は終了し得る。タスク１３０に戻る代わりとして、及び、１０２において受信された要求について、書き込まれるべき追加のデータがある場合、及び、変換されるべき別の物理アドレスがある場合、タスク１２６が、タスク１３６の後に実行され得る。
【００５１】
上述された図４の複数のタスクは、説明のための複数の例であることが意図される。当該複数のタスクは、用途に応じて、シーケンシャルに、同期して、同時に、連続的に、重複する複数の期間中に、又は、異なる順序で、実行され得る。また、その例及び／又はイベントのシーケンスに応じて、当該複数のタスクの任意のものは実行されない、又はスキップされ得る。
【００５２】
複数の上述の例は、ネットワーク中の複数のサーバ（「クラウド」と称され得る）を介して実施され得る。複数のサーバの各々は、ＦＬＣモジュール（例えば、ＦＬＣモジュール７６）を含み、互いに通信し得る。複数のサーバは、ＤＲＡＭ  ＩＣ及び記憶ドライブ中に格納されるＤＲＡＭ及び／又はメモリを共有し得る。複数のサーバの各々は、ネットワークを介して、複数の他サーバ中のＤＲＡＭ及び／又は記憶ドライブにアクセスし得る。複数のＦＬＣモジュールの各々は、図２のＦＬＣモジュールと同様に動作し得るが、クラウドを介して、複数の他サーバの各々におけるＤＲＡＭ及び／又はメモリにもアクセスし得る。複数のサーバとクラウドとの間で送信される複数の信号は、送信前に暗号化され、クラウドのサーバ及び／又はネットワークデバイスに到着すると復号され得る。複数のサーバはまた、クラウド中のメモリを共有、及び／又は、クラウド中のメモリにアクセスし得る。一例として、複数のサーバのうちの１つのサーバーのＦＬＣコントローラによって生成される仮想アドレスは、ＦＬＣコントローラのＦＬＣモジュールのＤＲＡＭ、複数のサーバのうちの1つのサーバの記憶ドライブ、複数の他のサーバのうちの1つのサーバのＦＬＣモジュールのＤＲＡＭ、複数の他のサーバのうちの1つのサーバの記憶ドライブ、又は、クラウドの記憶デバイス中の物理アドレスに対応し得る。複数のサーバのうちの1つのサーバのＦＬＣコントローラ及び／又は画像処理装置は、キャッシュミスが発生した場合は、複数の他のＦＬＣモジュール、複数の記憶ドライブ、及び／又は複数の記憶デバイス中のＤＲＡＭ及び／又はメモリにアクセスし得る。
【００５３】
複数の上述の例はまた、複数のチップを有するマルチチップモジュール、スイッチ、及び、一次ＦＬＣモジュールを有する一次チップを含むデータアクセスシステム中で実施され得る。マルチチップモジュールは、スイッチを介して一次チップモジュールに接続される。複数のＦＬＣモジュールの各々は、図２のＦＬＣモジュールと同様に動作し得るが、スイッチを介して、複数の他のチップの各々におけるＤＲＡＭ及び／又はメモリにもアクセスし得る。一例として、複数のチップのうちの１つのチップのＦＬＣコントローラによって生成される仮想アドレスは、ＦＬＣコントローラのＦＬＣモジュールのＤＲＡＭ、複数のチップのうちの１つのチップの記憶ドライブ、複数の他のチップのうちの1つのチップのＦＬＣモジュールのＤＲＡＭ、複数の他のチップのうちの１つのチップの記憶ドライブ、又は、クラウドの記憶デバイス中の物理アドレスに対応し得る。複数のチップのうちの1つのチップのＦＬＣコントローラ及び／又は画像処理装置は、キャッシュミスが発生した場合は、複数の他のＦＬＣモジュール、複数の記憶ドライブ、及び／又は複数の記憶デバイス中のＤＲＡＭ及び／又はメモリにアクセスし得る。
【００５４】
一例として、マルチチップモジュール中の複数の二次ＤＲＡＭの各々、及び、一次チップ中の一次ＤＲＡＭは、１ＧＢの記憶容量を有し得る。一次チップ中の記憶ドライブは、例えば、６４ＧＢの記憶容量を有し得る。別の例として、データアクセスシステムは自動車車両において使用され得る。一次チップは、例えば、中央コントローラ、モジュール、プロセッサ、エンジン制御モジュール、送信制御モジュール、及び／又はハイブリッド制御モジュールであり得る。一次チップは、スロットル位置、点火時期、給油時期、複数の伝達装置の間の移行等といった関連する複数のシステムの複数の対応する態様を制御すべく使用され得る。マルチチップモジュール中の複数の二次チップは、照明システム、エンターテイメントシステム、空調システム、排気システム、ナビゲーションシステム、オーディオシステム、ビデオシステム、ブレーキシステム、ステアリングシステム等といった特定の車両システムに各々関連付けられ、複数の対応するシステムの複数の態様を制御すべく使用され得る。
【００５５】
更にもう１つの例として、複数の上述の例はまた、ホスト（又はＳｏＣ）及びハイブリッドドライブを含むデータアクセスシステムにおいて実施され得る。ホストは、セントラルプロセッサ又は他の画像処理装置を含み、インタフェースを介してハイブリッドドライブと通信し得る。インタフェースは、例えば、ＧＥインタフェース、ＵＳＢインタフェース、ＳＡＴＡインタフェース、ＰＣＩｅインタフェース、又は他の適したインタフェースであり得る。ハイブリッドドライブは、第１の記憶ドライブ及び第２の記憶ドライブを含む。第１の記憶ドライブは、ＦＬＣモジュール（例えば、図２のＦＬＣモジュール７６）を含む。ＦＬＣモジュールのＦＬＣコントローラは、ＦＬＣモジュールのＤＲＡＭ及び第２の記憶ドライブからデータを読み出す、及び／又はそれらにデータを書き込むべきかどうかを決定するとき、複数のＣＡＭ技術を実行する。
【００５６】
更なる例として、複数の上述の例はまた、ＳｏＣ、第１のＤＲＡＭ（又はキャッシュ）、第２のＤＲＡＭ、及び不揮発性メモリを含む記憶システム中で実施され得る。ＳｏＣは、第１のＤＲＡＭ、ディスクリートＤＲＡＭ、及び不揮発性メモリとは分離している。第１のＤＲＡＭは、高優先度の、及び／又は、頻繁にアクセスされるデータを格納し得る。高い割合のデータアクセス要求が、第１のＤＲＡＭ中に格納されたデータに向けられ得る。一例として、９９％又はそれより多いデータアクセス要求は、第１のＤＲＡＭ中に格納されたデータに向けられ得、残りの１％又はそれより少ないデータアクセス要求は、第２のＤＲＡＭ及び／又は不揮発性メモリ中に格納されたデータに向けられ得る。低優先度の、及び／又は、より低い頻度でアクセスされるデータは、第２のＤＲＡＭ及び／又は不揮発性メモリ中に格納され得る。一例として、ユーザは複数のウェブブラウザを開いていてよい。第２のＤＲＡＭは、高帯域幅インタフェース及びビット単価の安いメモリ記憶容量を有し得、広範囲の用途に対処し得る。第２のＤＲＡＭは、典型的に、キャッシュ又は第１のＤＲＡＭより長いレイテンシ期間を示す。現在使用している、又は最も頻繁に使用されるウェブブラウザのコンテンツは、第１のＤＲＡＭ中に格納され、一方で、他の複数のウェブブラウザのコンテンツは、第２のＤＲＡＭ及び／又は不揮発性メモリ中に格納され得る。
【００５７】
ＳｏＣは、１又は複数の制御モジュール、インタフェースモジュール、キャッシュ（又はＦＬＣ）モジュール、及びグラフィックスモジュールを含み得る。キャッシュモジュールは、図２のＦＬＣモジュールと同様に動作し得る。制御モジュールは、インタフェースモジュールを介してキャッシュモジュールに接続される。キャッシュモジュールは、それぞれの階層レベルに基づいて、第１のＤＲＡＭ、第２のＤＲＡＭ、及び不揮発性メモリにアクセスするよう構成される。複数の制御モジュールの各々は、それぞれのＬ１、Ｌ２、及びＬ３キャッシュを含み得る。複数の制御モジュールの各々はまた、Ｌ４キャッシュ、又は他の最高レベルのキャッシュなどの、１又は複数の追加のキャッシュを含み得る。多くの信号ライン（又は複数の導電素子）がＳｏＣと第１のＤＲＡＭとの間に存在し得る。このことにより、ＳｏＣと第１のＤＲＡＭとの間のデータの迅速なパラレル及び／又はシリアル転送が可能となる。ＳｏＣと第１のＤＲＡＭとの間のデータ転送は、（ｉ）ＳｏＣと第２のＤＲＡＭとの間、及び（ｉｉ）ＳｏＣと不揮発性メモリとの間のデータ転送より迅速である。
【００５８】
第１のＤＲＡＭは、Ｌ３キャッシュ６２２、Ｌ４キャッシュ、及び／又は最高レベルのキャッシュと同じ、又はより高い階層レベルを有する第１の部分を有し得る。第１のＤＲＡＭの第２の部分は、第２のＤＲＡＭ及び／又は不揮発性メモリと同じ、又はより低い階層レベルを有し得る。第２のＤＲＡＭは、第１のＤＲＡＭより高い階層レベルを有し得る。不揮発性メモリは、第２のＤＲＡＭと同じ、又はより高い階層レベルを有し得る。複数の制御モジュールは、例えば、キャッシュに格納することの必要性に基づいて、第１のＤＲＡＭ、第２のＤＲＡＭ、及び／又は、不揮発性メモリの各々の複数の部分又は全ての階層レベルを変更し得る。
【００５９】
複数の制御モジュール、インタフェースモジュールに接続されるグラフィックスモジュール、及び／又は、インタフェースモジュールに接続される（ＳｏＣの内部又は外部の）複数の他のデバイスは、複数の要求信号をキャッシュモジュールに送信して、第１のＤＲＡＭ、第２のＤＲＡＭ、及び／又は不揮発性メモリ中にデータを格納し、及び／又はこれらの中のデータにアクセスし得る。キャッシュモジュールは、第１のＤＲＡＭ、第２のＤＲＡＭ、及び不揮発性メモリへのアクセスを制御し得る。一例として、複数の制御モジュール、グラフィックスモジュール、及び／又は、インタフェースモジュールに接続される複数の他のデバイスは、ＳｏＣに接続される複数のＤＲＡＭの数及び／又はサイズを認識し得ない。
【００６０】
キャッシュモジュールは、複数の制御モジュール、グラフィックスモジュール、及び／若しくはインタフェースモジュールに接続される複数の他のデバイスから受信される複数の要求、並びに／又は複数の第１の論理ブロックアドレスを、（ｉ）第１のＤＲＡＭ、第２のＤＲＡＭ、及び／又は不揮発性メモリの物理ブロックアドレスに、又は（ｉｉ）複数の第２の論理ブロックアドレスに変換し得る。複数の第２の論理ブロックアドレスは、第１のＤＲＡＭ、第２のＤＲＡＭ、及び／又は不揮発性メモリによって複数の物理ブロックアドレスに変換され得る。キャッシュモジュールは、複数の第１の論理ブロックアドレスの複数の第２の論理ブロックアドレスへの変換、及び／又は、複数の第１の論理ブロックアドレスの複数の物理ブロックアドレスへの変換のための１又は複数のルックアップテーブル（例えば、複数のフルセットアソシアティブルックアップテーブル（ｆｕｌｌｙ  ｓｅｔ  ａｓｓｏｃｉａｔｉｖｅ  ｌｏｏｋｕｐ  ｔａｂｌｅ））を格納し得る。結果的に、キャッシュモジュール、並びに、第１のＤＲＡＭ、第２のＤＲＡＭ、及び不揮発性メモリのうちの１又は複数は、複数の制御モジュール、グラフィックスモジュール、及び／又は、インタフェースモジュールに接続される複数の他のデバイスに対して単一のメモリとして動作し得る。グラフィックスモジュールは、複数の制御モジュール及び／又はＳｏＣから、ディスプレイ及び／又は他のビデオデバイスへのビデオデータの出力を制御し得る。
【００６１】
複数の制御モジュールは、データ、複数のデータセット、複数のプログラム、及び／又はそれらの複数の部分を、（ｉ）キャッシュモジュールと、（ｉｉ）Ｌ１キャッシュ、Ｌ２キャッシュ、及びＬ３キャッシュとの間で入れ換え（又は転送）し得る。キャッシュモジュールは、データ、複数のデータセット、複数のプログラム、及び／又はそれらの複数の部分を、第１のＤＲＡＭ、第２のＤＲＡＭ、及び不揮発性メモリのうちの２またはそれより多くのものの間で入れ換え（又は転送）し得る。このことは、転送を実行すべく、複数の制御モジュールとは無関係に、及び／又は、複数の制御モジュールから複数の制御信号を受信することなく実行され得る。第１のＤＲＡＭ、第２のＤＲＡＭ、及び不揮発性メモリのうちの１又は複数における、データ、複数のデータセット、複数のプログラム、及び／又はそれらの複数の部分の記憶位置は、対応する複数の優先レベル、使用頻度、アクセス頻度、及び／又は、データ、複数のデータセット、複数のプログラム、及び／又はそれらの複数の部分に関連付けられる複数の他パラメータに基づき得る。データ、複数のデータセット、複数のプログラム、及び／又はそれらの複数の部分の転送は、データの複数のブロックを転送することを含み得る。データの複数のブロックの各々は、予め定められたサイズを有し得る。一例として、第２のＤＲＡＭから第１のＤＲＡＭへのデータの入れ換えは、複数の転送イベントを含み得る。各転送イベントは、データのブロック（例えば、１６ＫＢのデータ）を転送することを含む。
【００６２】
キャッシュモジュールは、第１のＤＲＡＭをセットアソシアティブキャッシュ、ダイレクトマップドキャッシュ、及び／又は、フルアソシアティブキャッシュとして使用し、対応する複数のキャッシュプロトコルを使用して第１のＤＲＡＭにアクセスし得る。キャッシュモジュールは、最終（又は最高）レベルキャッシュ（ＬＬＣ）コントローラと称され得る。
【００６３】
第１のＤＲＡＭは、第１の予め定められた記憶容量（例えば、０．２５ＧＢ、０．５ＧＢ、１ＧＢ、又は８ＧＢ）を有し得る。０．５ＧＢの第１のＤＲＡＭは、典型的なＬ２キャッシュの５１２倍の大きさである。第２のＤＲＡＭは、（例えば、非サーバベースシステムについて１ＧＢ又はそれより大きい、又はサーバベースシステムについて２５６ＧＢ又はそれより大きい）第２の予め定められた記憶容量を有し得る。不揮発性メモリは、（例えば、２５６ＧＢ又はそれより大きい）第３の予め定められた記憶容量を有し得る。不揮発性メモリは、フラッシュメモリ又は磁気抵抗ランダムアクセスメモリ（ＭＲＡＭ）などのソリッドステートメモリ、及び／又は回転磁気媒体を含み得る。不揮発性メモリは、ＳＳＤ及びＨＤＤを含み得る。記憶システムは、第２のＤＲＡＭ及び不揮発性メモリを有すが、第２のＤＲＡＭ及び不揮発性メモリのどちらも記憶システムに含まれないことがある。
【００６４】
更なる例として、複数の上述の例はまた、ＳｏＣ及びＤＲＡＭ  ＩＣを含む記憶システムにおいて実施され得る。ＳｏＣは、リングバスを介してＤＲＡＭ  ＩＣにアクセスする複数の制御モジュール（又は複数のプロセッサ）を含み得る。リングバスは、複数のアクセスレイテンシを最小化する双方向バスであり得る。性能よりコストが重要である場合は、リングバスは単方向バスであり得る。複数の中間デバイスが、複数の制御モジュールとリングバスとの間に、及び／又は、リングバスとＤＲＡＭ  ＩＣとの間に配置され得る。例えば、上述されたキャッシュモジュールは、複数の制御モジュールとリングバスとの間に、又は、リングバスとＤＲＡＭ  ＩＣとの間に配置され得る。
【００６５】
ＤＲＡＭ  ＩＣは、Ｌ３、Ｌ４、及び／又は最高レベルキャッシュであり得る。複数の制御モジュールは、ＤＲＡＭ  ＩＣを共有し、及び／又は、ＤＲＡＭ  ＩＣの指定された複数の部分を有し得る。例えば、ＤＲＡＭ  ＩＣの第１の部分は、第１の制御モジュールのためのキャッシュとして割り当てられ得る。ＤＲＡＭ  ＩＣの第２の部分は、第２の制御モジュールのためのキャッシュとして割り当てられ得る。ＤＲＡＭ  ＩＣの第３の部分は、第３の制御モジュールのためのキャッシュとして割り当てられ得る。ＤＲＡＭ  ＩＣの第４部分は、キャッシュとしては割り当てられなくてもよい。
【００６６】
更なる例として、複数の上述の例はまた、サーバシステムにおいて実施され得る。サーバシステムは、記憶システムと称され、複数のサーバを含み得る。複数のサーバは、ネットワーク（又はクラウド）を介して互いに通信するそれぞれの記憶システムを含む。複数の記憶システムの１又は複数は、クラウド中に配置され得る。複数の記憶システムの各々は、それぞれのＳｏＣを含み得る。
【００６７】
複数のＳｏＣは、それぞれの第１のＤＲＡＭ、第２のＤＲＡＭ、ソリッドステート不揮発性メモリ、不揮発性メモリ、及びＩ／Ｏポートを有し得る。複数のＩ／Ｏポートは、ペリフェラル・コンポーネント・インターコネクト・エクスプレス（ＰＣＩｅ）チャネルなどのそれぞれのＩ／Ｏチャネル、及び、ペリフェラル・コンポーネント・インターコネクト・エクスプレス（ＰＣＩｅ）チャネルなどのそれぞれのネットワークインタフェースを介してクラウドと通信し得る。複数のＩ／Ｏポート、複数のＩ／Ｏチャネル、及び、複数のネットワークインタフェースは、複数のイーサネット（登録商標）ポート、複数のチャネル、及び複数のネットワークインタフェースであり得、予め定められた速度（例えば、１ギガビット毎秒（Ｇｂ／ｓ）、１０Ｇｂ／ｓ、５０Ｇｂ／ｓ等）でデータを転送し得る。複数のネットワークインタフェースのうちのいくつかは、クラウド中に配置され得る。複数の記憶システムの接続は、低コストで、分散型で、スケーラブルなサーバシステムを提供する。複数の開示された記憶システム及び／又は複数のサーバシステムのうちの複数のものは、互いに通信し、ネットワーク（又はクラウド）中に含まれ得る。
【００６８】
複数のソリッドステート不揮発性メモリはそれぞれ、例えば、ＮＡＮＤフラッシュメモリ及び／又は他のソリッドステートメモリを含み得る。複数の不揮発性メモリはそれぞれ、ソリッドステートメモリ及び／又は回転磁気媒体を含み得る。複数の不揮発性メモリはそれぞれ、ＳＳＤ及び／又はＨＤＤを含み得る。
【００６９】
サーバシステムのアーキテクチャは、複数のＤＲＡＭを複数のキャッシュとして提供する。複数のＤＲＡＭは、それぞれのＳｏＣに、Ｌ３、Ｌ４、及び／又は最高レベルキャッシュとして割り当てられ、高い帯域幅と大きな記憶容量とを有し得る。複数のスタック型ＤＲＡＭは、例えば、ＤＤＲ３メモリ、ＤＤＲ４メモリ、ロー・パワー・ダブル・データ・レート・タイプ・フォー（ＬＰＤＤＲ４）メモリ、ワイド−Ｉ／Ｏ２メモリ、ＨＭＣメモリ、及び／又は他の適したＤＲＡＭを含み得る。複数のＳｏＣの各々は、１又は複数の制御モジュールを有し得る。複数の制御モジュールは、それぞれリングバスを介して、対応するＤＲＡＭと通信する。複数のリングバスは双方向バスであり得る。このことは、複数の制御モジュールと、複数の対応するＤＲＡＭとの間の高帯域幅及び最小レイテンシを提供する。
【００７０】
複数の制御モジュールの各々は、同じ又は異なるＳｏＣの複数の制御モジュール中、複数のＤＲＡＭの何れかの中、複数のソリッドステート不揮発性メモリの何れかの中、及び／又は、複数の不揮発性メモリの何れかの中に格納されるデータ及び／又は複数のプログラムにアクセスし得る。
【００７１】
複数のＳｏＣ及び／又は複数のＳｏＣの複数のポートは、複数の媒体アクセスコントローラ（ＭＡＣ）アドレスを有し得る。複数のＳｏＣの複数の制御モジュール（又は複数のプロセッサ）は、それぞれのプロセッサクラスタアドレスを有し得る。複数の制御モジュールの各々は、対応するＭＡＣアドレス及びプロセッサクラスタアドレスを使用して、同じＳｏＣ中、又は別のＳｏＣ中の他の複数の制御モジュールにアクセスし得る。複数のＳｏＣの複数の制御モジュールの各々は、複数のＤＲＡＭにアクセスし得る。第１のＳｏＣの制御モジュールは、第２のＳｏＣのＭＡＣアドレスと、第２のＳｏＣ中の第２の制御モジュールのプロセッサクラスタアドレスとを有する要求信号を送信することによって、第２のＳｏＣに接続されるＤＲＡＭ中に格納されるデータ及び／又は複数のプログラムを要求し得る。
【００７２】
複数のＳｏＣ及び／又は複数のＳｏＣ中の複数の制御モジュールの各々は、１又は複数のアドレス変換テーブルを格納し得る。複数のアドレス変換テーブルは、複数のＳｏＣのＭＡＣアドレス、複数の制御モジュールのプロセッサクラスタアドレス、複数のＤＲＡＭと複数のソリッドステート不揮発性メモリと複数の不揮発性メモリとの中の複数のメモリセルの論理ブロックアドレス、及び／又は、複数のＤＲＡＭと複数のソリッドステート不揮発性メモリと複数の不揮発性メモリとの中の複数のメモリセルの物理ブロックアドレスのための複数の変換を含み得る、及び／又は提供し得る。
【００７３】
一例として、データ及び複数のプログラムは、複数のソリッドステート不揮発性メモリ及び／又は複数の不揮発性メモリ中に格納され得る。データ及び複数のプログラム、及び／又はそれらの複数の部分は、ネットワークを介して複数のＳｏＣ及び複数の制御モジュールに分配され得る。制御モジュールによる実行のために必要な複数のプログラム及び／又はデータは、制御モジュールが配置されるＳｏＣの複数のＤＲＡＭ、ソリッドステート不揮発性メモリ、及び／又は不揮発性メモリ中にローカルに格納され得る。制御モジュールは、その後、実行のために必要な複数のプログラム及び／又はデータにアクセスし、それらを複数のＤＲＡＭ、ソリッドステート不揮発性メモリ、及び／又は不揮発性メモリから制御モジュール中の複数のキャッシュに転送し得る。複数のＳｏＣとネットワークとの間、及び／又は、複数のＳｏＣの間の通信は、無線通信を含み得る。
【００７４】
更なる例として、複数の上述の例はまた、複数のＳｏＣを含むサーバシステム中でも実施され得る。複数のＳｏＣのうちのいくつかは、それぞれのサーバ中に組み込まれ得、サーバＳｏＣと称され得る。（コンパニオンＳｏＣと称される）複数のＳｏＣのうちのいくつかは、第１のＳｏＣのサーバ中に組み込まれ得る、又は第１のＳｏＣのサーバとは分離され得る。複数のサーバＳｏＣは、それぞれの制御モジュールのクラスタ（例えば、複数の中央処理モジュール）、それぞれのクラスタ内リングバス、それぞれのＦＬＣモジュール、それぞれのメモリ制御モジュール、それぞれのＦＬＣリングバス、及びそれぞれの１又は複数のホッピングバスを含む。複数のホッピングバスは、（ｉ）複数のチップ間バス部材及び複数の対応するポートを介して、複数のサーバＳｏＣと複数のコンパニオンＳｏＣとの間で、及び、（ｉｉ）複数のコンパニオンＳｏＣを通って延びる。ホッピングバスは、複数のホッピングバスストップ、複数のアダプタ、又は複数のノードへと延びるバス、及びこれらから延びるバス、並びに、１又は複数のＳｏＣの複数の対応するポートを指し得る。ホッピングバスは、複数のホッピングバスストップ及び／又は１又は複数のＳｏＣを通って延び得る。ホッピングバスストップへの、又はホッピングバスストップからのデータの単一の転送は、単一ホップと称され得る。複数のホップは、送信デバイスと受信デバイスとの間でデータを転送するとき、実行され得る。データは、データが宛先に到達するまで、クロックサイクル毎に複数のバスストップの間を伝わり得る。本明細書において開示される各バスストップはモジュールとして実装され、クロック信号に基づいて複数のデバイスの間でデータを転送するためのロジックを含み得る。また、本明細書において開示される各バスは、データのシリアル及び／又はパラレル送信のための任意の数のチャネルを有し得る。
【００７５】
複数の制御モジュールの複数のクラスタの各々は、複数のクラスタ内リングバスのうちの対応するクラスタ内リングバスを有する。複数のクラスタ内リングバスは双方向であり、複数のクラスタの各々における複数の制御モジュールの間での通信を提供する。複数のクラスタ内リングバスは、複数の制御モジュールによる、複数のクラスタ内リングバス上で送信される複数のデータ信号へのアクセスのための複数のリングバスストップを有し得る。複数のリングバスストップは、信号反応器及び／又はアクセスノードとして機能し得る。複数の制御モジュールは、複数のリングバスストップを介して複数のクラスタ内リングバスに接続され、これらにアクセスし得る。データは、複数のリングバスストップのうちの第１のリングバスストップにおける第１の制御モジュールから、複数のリングバスストップのうちの第２のリングバスストップにおける第２の制御モジュールへと、クラスタ内リングバスを回って送信され得る。複数の制御モジュールの各々は、中央処理装置又はプロセッサであり得る。
【００７６】
複数のメモリ制御モジュールの各々は、複数のＦＬＣモジュールのうちのそれぞれのＦＬＣモジュールへのアクセスを制御し得る。複数のＦＬＣモジュールは、複数のサーバＳｏＣ上にスタックされ得る。複数のＦＬＣモジュールの各々はＦＬＣ（又はＤＲＡＭ）を含み、本明細書において開示される複数のＦＬＣモジュールのうちの何れかとして実施され、本明細書において開示される複数のＦＬＣモジュールのうちの何れかと同様に動作し得る。複数のメモリ制御モジュールは、複数のＦＬＣリングバス上のそれぞれのリングバスストップにおいてＦＬＣリングバスにアクセスし、複数のリングバスストップと複数のＦＬＣモジュールとの間でデータを転送し得る。或いは、複数のＦＬＣモジュールは、それぞれのリングバスストップにおいてＦＬＣリングバスに直接アクセスし得る。複数のメモリ制御モジュールの各々は、複数のＦＬＣモジュールのうちのそれぞれのＦＬＣモジュールのための、及び／又は、複数のリングバス及び／又は複数のホッピングバスの複数のバスストップのための複数のメモリクロック信号を生成する複数のメモリクロックを含み得る。複数のバスストップは、複数のリングバス及び／又は複数のホッピングバスを介して間接的に、又は、複数のメモリ制御モジュールから直接的に、複数のメモリクロック信号を受信し得る。データは、メモリクロック信号に基づいて、複数のバスストップを通って繰り返され得る。
【００７７】
複数のＦＬＣリングバスは双方向バスであり、２つのタイプのリングバスストップ、ＳＲＢ及びＳＲＨを有し得る。複数のリングバスストップの各々は、信号反応器及び／又はアクセスノードとして機能し得る。複数のリングバスストップＳＲＢは、複数のホッピングバス以外の複数のデバイスに接続される。それらのデバイスは、クラスタ間リングバス０、複数のＦＬＣモジュール及び／又は複数のメモリ制御モジュール、並びに複数のグラフィックス処理モジュールを含み得る。当該クラスタ間リングバスは、（ｉ）複数のクラスタの間、及び（ｉｉ）複数のインターセクションリングストップの間の複数の接続を提供する。複数のインターセクションリングバスストップは、（ｉ）複数のクラスタと、（ｉｉ）複数のリングバスストップとの間に延びる複数のリングバス拡張へのアクセスを提供し、且つ、複数のクラスタ間リングバスを当該複数のリングバス拡張に接続し得る。複数のリングバスストップは複数のＦＬＣリングバス上に存在し得る。クラスタ間リングバス及び複数のインターセクションリングバスストップは、（ｉｉｉ）第１のクラスタと第２のＦＬＣリングバスのリングバスストップとの間、及び、（ｉｖ）第２のクラスタと第１のＦＬＣリングバスのリングバスストップとの間の接続を提供する。このことは、複数の制御モジュールが第２のＦＬＣモジュールのＦＬＣにアクセスすること、及び複数の制御モジュールが第１のＦＬＣモジュールのＦＬＣにアクセスすることを可能にする。
【００７８】
クラスタ間リングバスは、複数のチップ内トレース及び複数のチップ間トレースを含み得る。複数のチップ内トレースは、複数のサーバＳｏＣの内部、及び（ｉ）複数のリングバスストップのうちの１つと、（ｉｉ）複数のポートのうちの１つとの間に延びる。複数のチップ間トレースは、複数のサーバＳｏＣの外部、及び複数のポートのそれぞれのペアの間に延びる。
【００７９】
複数のサーバＳｏＣの各々の複数のリングバスストップＳＲＨは、複数のＦＬＣリングバス及び複数のホッピングバスのうちの対応するものに接続される。複数のホッピングバスの各々は、それぞれのインタフェースに、複数のホッピングバスのうちの対応するホッピングバスへのアクセスを提供する複数のホッピングバスストップＳＨＢを有する。ホッピングバスストップＳＨＢは、信号反応器及び／又はアクセスノードとして機能し得る。
【００８０】
第１のホッピングバス、リングバスストップ、及び複数の第１のホッピングバスストップは、（ｉ）ＦＬＣリングバスと、（ｉｉ）サーバＳｏＣ中の液晶ディスプレイ（ＬＣＤ）インタフェース、及び複数のコンパニオンＳｏＣの複数のインタフェース、との間の複数の接続を提供する。ＬＣＤインタフェースは、ディスプレイに接続され得、ＧＰＭを介して制御され得る。コンパニオンＳｏＣの複数のインタフェースは、シリアル・アタッチド・スモール・コンピュータ・システム・インタフェース（ＳＡＳ）インタフェース及びＰＣＩｅインタフェースを含む。コンパニオンＳｏＣの複数のインタフェースは、複数の画像プロセッサ（ＩＰ）インタフェースである。
【００８１】
複数のインタフェースは、複数の周辺デバイスなどの複数のデバイスに接続され得るそれぞれのポートに接続される。ＳＡＳインタフェース及びＰＣＩｅインタフェースは、複数のポートを介して、ＳＡＳ対応デバイス、及びＰＣＩｅ対応デバイスにそれぞれ接続され得る。一例として、記憶ドライブはポートに接続され得る。記憶ドライブは、ハードディスクドライブ、ソリッドステートドライブ、又はハイブリッドドライブであり得る。複数のポートは複数の画像処理装置に接続され得る。複数の画像処理装置の例は、上述されている。第４のＳｏＣは、（デイジーチェーン部材とも称される）チップ間バス部材を介して第３のＳｏＣにデイジーチェーン接続され得る。チップ間バス部材は、第１のホッピングバスの部材である。追加のＳｏＣは、第１のホッピングバスに接続されるポートを介して第４のＳｏＣにデイジーチェーン接続され得る。サーバＳｏＣ、複数の制御モジュール、及びＦＬＣモジュールは、ＦＬＣリングバス、第１のホッピングバス、及び／又は第３のＳｏＣを介して第４のＳｏＣと通信し得る。一例として、複数のＳｏＣは、サウスブリッジチップであり得、（ｉ）サーバＳｏＣと（ｉｉ）複数のポートに接続される複数の周辺デバイスとの間の通信及び割り込みの転送を制御し得る。
【００８２】
第２のホッピングバスは、（ｉ）ＦＬＣリングバスと（ｉｉ）サーバＳｏＣ中の複数のインタフェースとの間の、リングバスストップ及び複数の第２のホッピングバスストップを介して、複数の接続を提供する。サーバＳｏＣ中の複数のインタフェースは、イーサネット（登録商標）インタフェース、１又は複数のＰＣＩｅインタフェース、及びハイブリッド（又は組み合わせ）インタフェースを含み得る。イーサネット（登録商標）インタフェースは１０ＧＥインタフェースであり得、第１のイーサネット（登録商標）バスを介してネットワークに接続される。イーサネット（登録商標）インタフェースは、第１のイーサネット（登録商標）バス、ネットワーク、及び第２のイーサネット（登録商標）バスを介して第２のＳｏＣと通信し得る。ネットワークは、イーサネット（登録商標）ネットワーク、クラウドネットワーク、及び／又は他のイーサネット（登録商標）対応ネットワークであり得る。１又は複数のＰＣＩｅインタフェースは、例えば、第３世代ＰＣＩｅインタフェース  ＰＣＩｅ３及びミニＰＣＩｅインタフェース（ｍＰＣＩｅ）を含み得る。複数のＰＣＩｅインタフェースは、複数のソリッドステートドライブに接続され得る。ハイブリッドインタフェースは、複数のＳＡＴＡ対応デバイス及び／又は複数のＰＣＩｅ対応デバイスへ、及びこれらから、ＳＡＴＡプロトコル及び／又はＰＣＩｅプロトコルに従ってデータを転送するよう、ＳＡＴＡ互換性及びＰＣＩｅ互換性を有し得る。一例として、ＰＣＩｅインタフェースは、ソリッドステートドライブ又はハイブリッドドライブなどの記憶ドライブに接続され得る。複数のインタフェースは、サーバＳｏＣの外部の複数のデバイスへの接続のためのそれぞれのポートを有する。
【００８３】
第３のホッピングバスは、リングバスストップを介してリングバスに接続され得、ホッピングバスストップを介してＬＣＤインタフェース及びポートに接続され得る。ＬＣＤインタフェースはディスプレイに接続され得、ＧＰＭを介して制御され得る。ポートは１又は複数のコンパニオンＳｏＣに接続され得る。第４のホッピングバスは、（ｉ）リングバスストップを介してリングバスに、及び（ｉｉ）複数のホッピングバスストップを介して複数のインタフェースに接続され得る。複数のインタフェースは、イーサネット（登録商標）、ＰＣＩｅ、及び複数のハイブリッドインタフェースであり得る。複数のインタフェースはそれぞれのポートを有する。
【００８４】
複数のサーバＳｏＣ及び／又は複数の他のサーバＳｏＣは、クラスタ間リングバスを介して互いに通信し得る。複数のサーバＳｏＣ及び／又は複数の他のサーバＳｏＣは、それぞれのイーサネット（登録商標）インタフェース及びネットワークを介して互いに通信し得る。
【００８５】
複数のコンパニオンＳｏＣはそれぞれの制御モジュールを含み得る。複数の制御モジュールは、複数のホッピングバスストップを介して、複数のインタフェースへアクセスし、及び／又は、複数のインタフェースへのアクセスを制御し得る。一実施形態においては、制御モジュールは含まれない。複数の制御モジュールは、複数のホッピングバスストップのうちの対応するホッピングバスストップ、及び／又は、複数のインタフェースのうちの対応するインタフェースに接続され、及びそれらと通信し得る。
【００８６】
更なる例として、複数の上述の例はまた、モバイルデバイスの回路中で実施され得る。モバイルデバイスは、コンピュータ、携帯電話、又は他の無線ネットワークデバイスであり得る。回路は複数のＳｏＣを含む。ＳｏＣはモバイルＳｏＣと称され得る。ＳｏＣは、コンパニオンＳｏＣと称され得る。モバイルＳｏＣは、複数の制御モジュールのクラスタ、クラスタ内リングバス、ＦＬＣモジュール、メモリ制御モジュール、ＦＬＣリングバス、及び１又は複数のホッピングバスを含む。ホッピングバスは、（ｉ）チップ間バス部材及び複数の対応するポートを介してモバイルＳｏＣとコンパニオンＳｏＣとの間で、及び、（ｉｉ）コンパニオンＳｏＣを通って延びる。
【００８７】
クラスタ内リングバスは双方向であり、複数の制御モジュールの間の通信を提供する。クラスタ内リングバスは、複数の制御モジュールによる、クラスタ内リングバス上で送信される複数のデータ信号へのアクセスのための複数のリングバスストップを有し得る。複数のリングバスストップは、信号反応器及び／又はアクセスノードとして機能し得る。複数の制御モジュールは、複数のリングバスストップを介してクラスタ内リングバスに接続され、クラスタ内リングバスにアクセスし得る。データは、複数のリングバスストップのうちの第１のリングバスストップにおける第１の制御モジュールから、複数のリングバスストップのうちの第２のリングバスストップにおける第２の制御モジュールへと、クラスタ内リングバスを回って送信され得る。データは、データが宛先に到達するまで、クロックサイクル毎に複数のバスストップの間を伝わり得る。複数の制御モジュールの各々は、中央処理装置又はプロセッサであり得る。
【００８８】
メモリ制御モジュールはＦＬＣモジュールへのアクセスを制御し得る。一実施形態においては、メモリ制御モジュールは含まれない。ＦＬＣモジュールはモバイルＳｏＣ上にスタックされ得る。ＦＬＣモジュールは、ＦＬＣ又はＤＲＡＭであり得、本明細書において開示される複数のＦＬＣモジュールのうちの何れかとして実施され、本明細書において開示される複数のＦＬＣモジュールのうちの何れかと同様に動作し得る。メモリ制御モジュールは、ＦＬＣリングバス上のそれぞれのリングバスストップにおいてＦＬＣリングバスにアクセスし、リングバスストップとＦＬＣモジュールとの間でデータを転送し得る。或いは、ＦＬＣモジュールは、それぞれのリングバスストップにおいてＦＬＣリングバスに直接アクセスし得る。メモリ制御モジュールは、ＦＬＣモジュール、リングバスの複数のバスストップ、及び／又は複数のホッピングバスのためのメモリクロック信号を生成するメモリクロックを含み得る。複数のバスストップは、リングバス及び／又は複数のホッピングバスを介して間接的に、又は、メモリ制御モジュールから直接的に、メモリクロック信号を受信し得る。データは、メモリクロック信号に基づいて、複数のバスストップを通って繰り返され得る。
【００８９】
ＦＬＣリングバスは双方向バスであり得、２つのタイプのリングバスストップＳＲＢ及びＳＲＨを有し得る。複数のリングバスストップの各々は、信号反応器及び／又はアクセスノードとして機能し得る。複数のリングバスストップＳＲＢは、複数のホッピングバス以外の複数のデバイスに接続される。それらのデバイスは、クラスタ、ＦＬＣモジュール及び／又はメモリ制御モジュール、及びグラフィックス処理モジュールを含み得る。
【００９０】
モバイルＳｏＣの複数のリングバスストップＳＲＨはＦＬＣリングバス、及び複数のホッピングバスのうちの対応するホッピングバスに接続される。複数のホッピングバスの各々は、それぞれのインタフェースに、複数のホッピングバスのうちの対応するホッピングバスへのアクセスを提供する複数のホッピングバスストップＳＨＢを有する。複数のホッピングバスストップＳＨＢは、信号反応器及び／又はアクセスノードとして機能し得る。
【００９１】
第１のホッピングバス、リングバスストップ、及び第１のホッピングバスストップは、（ｉ）ＦＬＣリングバスと、（ｉｉ）液晶ディスプレイ（ＬＣＤ）インタフェース、ビデオ処理モジュール（ＶＰＭ）、及びコンパニオンＳｏＣの複数のインタフェースとの間で接続される。ＬＣＤインタフェースはサーバＳｏＣ中にあり、ディスプレイに接続され得、ＧＰＭを介して制御され得る。コンパニオンＳｏＣの複数のインタフェースは、セルラーインタフェース、無線ローカルエリアネットワーク（ＷＬＡＮ）インタフェース、及び画像信号プロセッサインタフェースを含む。セルラーインタフェースは、複数の他のモバイル及び／又は無線デバイスとの無線通信のための物理層デバイスを含み得る。物理層デバイスは、ロング・ターム・エボリューション（ＬＴＥ）規格、及び／又は、第３世代（３Ｇ）、第４世代（４Ｇ）、及び／又は第５世代（５Ｇ）のモバイル通信規格に従って、動作し、及び／又は、複数の信号を送受信し得る。ＷＬＡＮインタフェースは、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ｗｉ−Ｆｉ（登録商標）、及び／又は、他のＷＬＡＮのプロトコルに従って動作し、モバイルデバイスのＷＬＡＮ中の複数の他のネットワークデバイスと通信し得る。ＩＳＰインタフェースは、記憶ドライブ又は他の画像処理装置などの、コンパニオンＳｏＣの外部の複数の画像処理装置（又は複数の画像信号処理装置）に接続され得る。複数のインタフェースは、それぞれのポートを介してコンパニオンＳｏＣの外部の複数のデバイスに接続され得る。ＩＳＰインタフェースは、モバイルデバイスの外部の複数のデバイスに接続され得る。
【００９２】
コンパニオンＳｏＣは、チップ間バス部材を介してモバイルＳｏＣに接続され得る。チップ間バス部材は第１のホッピングバスの部材である。複数の追加のＳｏＣは、第１のホッピングバスに接続されるポートを介してコンパニオンＳｏＣにデイジーチェーン接続され得る。モバイルＳｏＣ、複数の制御モジュール、及びＦＬＣモジュールは、ＦＬＣリングバス及び第１のホッピングバスを介してコンパニオンＳｏＣと通信し得る。
【００９３】
第２のホッピングバスは、（ｉ）ＦＬＣリングバスと、（ｉｉ）モバイルＳｏＣ中の複数のインタフェースとの間に、リングバスストップ及び複数の第２のホッピングバスストップを介して複数の接続を提供する。モバイルＳｏＣ中の複数のインタフェースは、イーサネット（登録商標）インタフェース、１又は複数のＰＣＩｅインタフェース、及びハイブリッド（又は組み合わせ）インタフェースを含み得る。イーサネット（登録商標）インタフェースは１０ＧＥインタフェースであり得、ポートを介してイーサネット（登録商標）ネットワークに接続される。１又は複数のＰＣＩｅインタフェースは、例えば、第３世代ＰＣＩｅインタフェース  ＰＣＩｅ３及びミニＰＣＩｅインタフェース（ｍＰＣＩｅ）を含み得る。ＰＣＩｅインタフェースはソリッドステートドライブに接続され得る。ハイブリッドインタフェースは、複数のＳＡＴＡ対応デバイス及び／又は複数のＰＣＩｅ対応デバイスへ、及びこれらから、ＳＡＴＡプロトコル及び／又はＰＣＩｅプロトコルに従ってデータを転送するよう、ＳＡＴＡ互換性及びＰＣＩｅ互換性を有し得る。一例として、ＰＣＩｅインタフェースはポートを介して記憶ドライブに接続され得る。記憶ドライブは、ソリッドステートドライブ又はハイブリッドドライブであり得る。複数のインタフェースは、モバイルＳｏＣの外部の複数のデバイスへの接続のためのそれぞれのポートを有する。
【００９４】
コンパニオンＳｏＣは制御モジュールを含み得る。制御モジュールは、複数のホッピングバスストップを介して、ＶＰＭ及び複数のインタフェースへアクセスし、及び／又はこれらへのアクセスを制御し得る。一実施形態においては、制御モジュールは含まれない。制御モジュールは、複数のホッピングバスストップ、ＶＰＭ１１９８、及び／又は複数のインタフェースに接続され、及びこれらと通信し得る。
【００９５】
本開示において説明される複数の無線通信は、ＩＥＥＥ規格８０２．１１−２０１２、ＩＥＥＥ規格８０２．１６−２００９、ＩＥＥＥ規格８０２．２０−２００８、及び／又はＢｌｕｅｔｏｏｔｈ（登録商標）コア仕様ｖ４．０に、完全に又は部分的に準拠して実行され得る。様々な実施例において、Ｂｌｕｅｔｏｏｔｈ（登録商標）コア仕様ｖ４．０は、Ｂｌｕｅｔｏｏｔｈ（登録商標）コア仕様補遺２、３、又は４のうちの１又は複数によって変更され得る。様々な実施例において、ＩＥＥＥ８０２．１１−２０１２は、ドラフトＩＥＥＥ規格８０２．１１ａｃ、ドラフトＩＥＥＥ規格８０２．１１ａｄ、及び／又はドラフトＩＥＥＥ規格８０２．１１ａｈによって捕捉され得る。
【００９６】
第１、第２、第３等の用語が、様々なチップ、モジュール、信号、要素、及び／又はコンポーネントを説明すべく本明細書において使用され得るが、これらの項目はこれらの用語によって限定されるべきではない。これらの用語は、１つの項目を別の項目と区別するためだけに使用され得る。本明細書において使用されるとき、「第１」、「第２」、及び、複数の他の数を表す用語などの複数の用語は、文脈によって明確に示されない限り、順番又は順序を暗示しない。したがって、以下で説明される第１の項目は、例示的な複数の例の教示から逸脱することなく、第２の項目と称され得る。
【００９７】
また、様々な用語が、複数のコンポーネントの間の物理的関係を説明すべく使用される。第１の要素が第２の要素に、「接続」、「係合」、又は「結合」されていると言及されるとき、第１の要素は、第２の要素に直接的に接続、係合、配置、適合、若しくは結合され得る、又は、介在する複数の要素が存在し得る。それとは対照的に、要素が別の要素に、「直接的に接続」、「直接的に係合」、又は「直接的に結合」されていると言及されるとき、介在する要素は存在し得ない。第１の要素が第２の要素に「接続」、「係合」、又は「結合」されると述べることは、第１の要素が第２の要素に、「直接的に接続」、「直接的に係合」、又は「直接的に結合」され得ることを暗示する。複数の要素間の関係を説明すべく使用される複数の他の単語も同様に解釈されるべきである（例えば、「〜の間」に対する「直接〜の間」、「〜に隣接」に対する「直接〜に隣接」等）。
【００９８】
前述の説明は、本質的に専ら例示的なものであり、本開示、その用途、又は使用を限定することは全く意図しない。本開示の広範な教示が、様々な形態で実装され得る。したがって、複数の図面、明細書、および以下の特許請求の範囲を検討すれば、他の複数の変形が明らかになるので、本開示は複数の具体例を含むが、本開示の真の範囲はそのように限定されるべきではない。本明細書において使用されるとき、Ａ、Ｂ、及びＣのうち少なくとも１つ、という表現は、非排他的論理ＯＲを使用して、論理（Ａ又はＢ又はＣ）を意味するものと解釈されるべきであり、「Ａのうち少なくとも１つ、Ｂのうち少なくとも１つ、及び、Ｃのうち少なくとも１つ」を意味するものと解釈されるべきではない。方法内の１又は複数の段階は、本開示の複数の原理を変えることなく異なる順序で（又は同時に）実行され得ることが理解されるべきである。
【００９９】
本出願において、以下の複数の定義を含み、「モジュール」という用語又は「コントローラ」という用語は、「回路」という用語で置き換えられ得る。「モジュール」という用語及び「コントローラ」という用語は、特定用途向け集積回路（ＡＳＩＣ）、デジタル、アナログ、若しくは混成アナログ／デジタルディスクリート回路、デジタル、アナログ、若しくは混成アナログ／デジタル集積回路、組み合わせ論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、コードを実行する（共有、専用、又はグループの）プロセッサ回路、プロセッサ回路によって実行されるコードを格納する（共有、専用、又はグループの）メモリ回路、説明された機能を提供する複数の他の適したハードウェアコンポーネント、又は、システムオンチップなどにおける、上記のうちのいくつか又は全てのものの組み合わせを指すか、これらの一部であるか、又はこれらを含み得る。
【０１００】
モジュール又はコントローラは、１又は複数のインタフェース回路を含み得る。いくつか例において、複数のインタフェース回路は、ローカルエリアネットワーク（ＬＡＮ）、インターネット、ワイドエリアネットワーク（ＷＡＮ），又はそれらの組み合わせに接続される、有線若しくは無線のインタフェースを含み得る。本開示の任意の所与のモジュール又はコントローラの機能は、複数のインタフェース回路を介して接続される複数のモジュール及び／又はコントローラの間に分散され得る。例えば、複数のモジュール及び／又はコントローラは負荷の平均化を可能にし得る。更なる例において、（遠隔若しくはクラウドとしても知られる）サーバモジュール、又は（遠隔若しくはクラウド）コントローラは、クライアントモジュール及び／又はクライアントコントローラに代わって何らかの機能を達成し得る。
【０１０１】
コードという用語は、上記において使用されるように、ソフトウェア、ファームウェア、及び／又はマイクロコードを含み得、複数のプログラム、複数のルーチン、複数の機能、複数のクラス、複数のデータ構造、及び／又は複数のオブジェクトを指し得る。共有プロセッサ回路という用語は、複数のモジュール及び／又はコントローラからのいくつか又は全てのコードを実行する単一のプロセッサ回路を包含する。グループプロセッサ回路という用語は、複数の追加のプロセッサ回路と共に、１又は複数のモジュール及び／又はコントローラからのいくつか又は全てのコードを実行するプロセッサ回路を包含する。複数のプロセッサ回路への言及は、複数の別個のダイ上の複数のプロセッサ回路、単一のダイ上の複数のプロセッサ回路、単一のプロセッサ回路の複数のコア、単一のプロセッサ回路の複数のスレッド、又は上記のものの組み合わせを包含する。共有メモリ回路という用語は、複数のモジュール及び／又はコントローラからのいくつか又は全てのコードを格納する単一のメモリ回路を包含する。グループメモリ回路という用語は、複数の追加のメモリと共に、１又は複数のモジュール及び／又はコントローラからのいくつか又は全てのコードを格納するメモリ回路を包含する。
【０１０２】
メモリ回路という用語は、コンピュータ可読媒体という用語のサブセットである。コンピュータ可読媒体という用語は、本明細書において使用されるとき、（搬送波上などの）媒体を伝播する一時的な電気信号又は電磁信号は包含しない。コンピュータ可読媒体という用語は、したがって、有形且つ非一時的であるとみなされ得る。非一時的な有形のコンピュータ可読媒体の複数の非限定的な例は、（フラッシュメモリ回路、消去可能プログラマブルリードオンリメモリ回路、又はマスクリードオンリメモリ回路などの）不揮発性メモリ回路、（スタティックランダムアクセスメモリ回路又はダイナミックランダムアクセスメモリ回路などの）揮発性メモリ回路、（アナログ若しくはデジタル磁気テープ又はハードディスクドライブなどの）磁気記憶媒体、及び、（ＣＤ、ＤＶＤ、又はブルーレイディスクなどの）光記憶媒体である。
【０１０３】
本出願において説明される複数の装置及び方法は、複数のコンピュータプログラム中に具現化される１又は複数の特定の機能を実行するよう汎用コンピュータを構成することによって作成される専用コンピュータによって部分的又は完全に実装され得る。上述された複数の機能ブロック及び複数のフローチャート要素は、複数のソフトウェア仕様としての役目を果たし、それらは熟練の技術者若しくはプログラマのルーチンワークによって複数のコンピュータプログラムへと変換され得る。
【０１０４】
複数のコンピュータプログラムは、少なくとも１つの非一時的な有形のコンピュータ可読媒体上に格納される複数のプロセッサ実行可能命令を含む。複数のコンピュータプログラムはまた、格納されたデータを含む、又は格納されたデータに依存し得る。複数のコンピュータプログラムは、専用コンピュータのハードウェアと対話する基本入力／出力システム（ＢＩＯＳ）、専用コンピュータの複数の特定のデバイスと対話する複数のデバイスドライバ、１又は複数のオペレーティングシステム、複数のユーザアプリケーション、複数のバックグラウンドサービス、複数のバックグラウンドアプリケーション等を包含し得る。
【０１０５】
複数のコンピュータプログラムは、（ｉ）ＨＴＭＬ（ハイパーテキストマークアップ言語）若しくはＸＭＬ（拡張マークアップ言語）などの解析されるべき記述テキスト、（ｉｉ）アセンブリコード、（ｉｉｉ）コンパイラによってソースコードから生成されるオブジェクトコード、（ｉｖ）インタープリタによる実行のためのソースコード、（ｖ）ジャストインタイムコンパイラによるコンパイル及び実行のためのソースコード等を含み得る。単なる複数の例として、ソースコードは、Ｃ、Ｃ＋＋、Ｃ＃、Ｏｂｊｅｃｔｉｖｅ  Ｃ、Ｈａｓｋｅｌｌ、Ｇｏ、ＳＱＬ、Ｒ、Ｌｉｓｐ、Ｊａｖａ（登録商標）、Ｆｏｒｔｒａｎ、Ｐｅｒｌ、Ｐａｓｃａｌ、Ｃｕｒｌ、ＯＣａｍｌ、Ｊａｖａｓｃｒｉｐｔ（登録商標）、ＨＴＭＬ５、Ａｄａ、ＡＳＰ（ａｃｔｉｖｅ  ｓｅｒｖｅｒ  ｐａｇｅｓ）、ＰＨＰ、Ｓｃａｌａ、Ｅｉｆｆｅｌ、Ｓｍａｌｌｔａｌｋ、Ｅｒｌａｎｇ、Ｒｕｂｙ、Ｆｌａｓｈ（登録商標）、Ｖｉｓｕａｌ  Ｂａｓｉｃ（登録商標）、Ｌｕａ、及びＰｙｔｈｏｎ（登録商標）を含む複数の言語からのシンタックスを使用して書かれ得る。
【０１０６】
要素が、「のための手段」という表現を使用して明示的に記載される場合、又は、「のための動作」若しくは「のための段階」という表現を使用する方法クレームの場合を除いては、本特許請求の範囲において記載される複数の要素の何れも、米国特許法１１２条（ｆ）の意味におけるミーンズ・プラス・ファンクション要素であることは意図されていない。
［項目１］
第１の物理アドレスにアクセスするための要求を生成するプロセッサと、
最終レベルキャッシュモジュールとを備え、
上記最終レベルキャッシュモジュールは、
ダイナミックランダムアクセスメモリと、
（ｉ）上記プロセッサからの上記要求を受信し、（ｉｉ）上記第１の物理アドレスを第１の仮想アドレスに変換する最終レベルキャッシュコントローラと、
（ｉ）上記第１の仮想アドレスを第２の物理アドレスに変換し、（ｉｉ）上記第２の物理アドレスに基づいて上記ダイナミックランダムアクセスメモリにアクセスするダイナミックランダムアクセスメモリコントローラとを有する、
データアクセスシステム。
［項目２］
上記最終レベルキャッシュコントローラは、上記第１の物理アドレスの上記第１の仮想アドレスへのフルセットアソシアティブ変換を実行する、
項目１に記載のデータアクセスシステム。
［項目３］
記憶ドライブを更に備え、
上記記憶ドライブは上記ダイナミックランダムアクセスメモリから分離しており、
上記第２の物理アドレスは上記ダイナミックランダムアクセスメモリ又は上記記憶ドライブ中のアドレスであり、
上記最終レベルキャッシュコントローラは、上記第２の物理アドレスに基づいて、上記ダイナミックランダムアクセスメモリにアクセスするか、又は上記記憶ドライブにアクセスするかを決定する、
項目１又は２に記載のデータアクセスシステム。
［項目４］
上記記憶ドライブは、上記ダイナミックランダムアクセスメモリより大きい記憶容量を有する、
項目３に記載のデータアクセスシステム。
［項目５］
上記記憶ドライブは、上記ダイナミックランダムアクセスメモリより１桁大きい記憶容量を有する、
項目３に記載のデータアクセスシステム。
［項目６］
上記ダイナミックランダムアクセスメモリへの、又は上記ダイナミックランダムアクセスメモリからのデータの転送速度は、上記記憶ドライブへの、又は上記記憶ドライブからのデータの転送速度より高速である、
項目３から５の何れか一項に記載のデータアクセスシステム。
［項目７］
上記記憶ドライブはソリッドステートメモリ又は回転記憶媒体を含む、
項目３から６の何れか一項に記載のデータアクセスシステム。
［項目８］
上記記憶ドライブはダイナミックランダムアクセスメモリを含み、
上記記憶ドライブの上記ダイナミックランダムアクセスメモリは、上記最終レベルキャッシュモジュールの上記ダイナミックランダムアクセスメモリより遅いデータ転送速度を有する、
項目３から７の何れか一項に記載のデータアクセスシステム。
［項目９］
記憶ドライブを更に備え、
上記ダイナミックランダムアクセスメモリは、キャッシュとして実装され、上記記憶ドライブとは分離しており、
上記最終レベルキャッシュコントローラは、（ｉ）上記第１の物理アドレスに基づいて、上記ダイナミックランダムアクセスメモリにアクセスするかどうかを決定し、（ｉｉ）上記第１の物理アドレスについて、キャッシュミスが発生したと決定し、（ｉｉｉ）上記キャッシュミスに基づいて、上記キャッシュミスが発生したことを上記プロセッサに信号で伝える、又は上記記憶ドライブにアクセスする、
項目１に記載のデータアクセスシステム。
［項目１０］
記憶ドライブを更に備え、
上記ダイナミックランダムアクセスメモリは、キャッシュとして実装され、上記記憶ドライブとは分離しており、
上記ダイナミックランダムアクセスメモリコントローラは、（ｉ）上記第１の仮想アドレスに基づいて、上記ダイナミックランダムアクセスメモリにアクセスするかどうかを決定し、（ｉｉ）上記第１の仮想アドレスについて、キャッシュミスが発生したと決定し、（ｉｉｉ）上記キャッシュミスに基づいて、上記キャッシュミスが発生したことを上記最終レベルキャッシュコントローラに信号で伝え、
上記最終レベルキャッシュコントローラは、上記キャッシュミスが発生したことを示す上記信号に応答して上記記憶ドライブにアクセスする、
項目１に記載のデータアクセスシステム。
［項目１１］
上記ダイナミックランダムアクセスメモリはキャッシュとして実装され、
上記ダイナミックランダムアクセスメモリコントローラは、（ｉ）上記第１の仮想アドレスに基づいて、上記ダイナミックランダムアクセスメモリにアクセスするかどうかを決定し、（ｉｉ）上記第１の仮想アドレスについて、キャッシュミスが発生したと決定し、（ｉｉｉ）上記キャッシュミスに基づいて、上記キャッシュミスが発生したことを上記最終レベルキャッシュに示すべく第１の信号を生成し、
上記最終レベルキャッシュコントローラは、上記第１の信号に応答して、上記キャッシュミスが発生したことを上記プロセッサに示すべく第２の信号を生成し、
上記プロセッサは、上記第２の信号に応答して、記憶ドライブにアクセスする、
項目１から８の何れか一項に記載のデータアクセスシステム。
［項目１２］
記憶ドライブを更に備え、
上記記憶ドライブは、上記ダイナミックランダムアクセスメモリとは分離しており、
上記プロセッサは、データを転送するための要求を生成し、
上記要求は、上記第１の物理アドレスを示し、
上記最終レベルキャッシュコントローラは、
上記要求に基づいて、上記第１の物理アドレスを上記第１の仮想アドレスに変換し、
上記最終レベルキャッシュコントローラは、上記第２の物理アドレスに基づいて、（ｉ）上記プロセッサと上記ダイナミックランダムアクセスメモリとの間で上記データを転送するか、又は（ｉｉ）上記プロセッサと上記記憶ドライブとの間で上記データを転送するかを決定する、
項目１に記載のデータアクセスシステム。
［項目１３］
上記プロセッサと上記記憶ドライブとの間で転送される前に、上記データを暗号化する暗号化デバイスを更に備える
項目１２に記載のデータアクセスシステム。
［項目１４］
上記プロセッサは、（ｉ）第２の仮想アドレスを生成し、（ｉｉ）上記第２の仮想アドレスを上記第１の物理アドレスに変換する、
項目１から１３の何れか一項に記載のデータアクセスシステム。
［項目１５］
上記ダイナミックランダムアクセスメモリは第１の部分及び第２の部分を含み、
上記第１の部分は、最終レベルキャッシュとして実装され、
上記第２の部分は、キャッシュとしては実装されず、上記第１の部分より低い階層レベルを有する、
項目１から１４の何れか一項に記載のデータアクセスシステム。
［項目１６］
上記ダイナミックランダムアクセスメモリコントローラは、複数の上記階層レベルに基づいて、上記第１の部分及び上記第２の部分にアクセスする、
項目１５に記載のデータアクセスシステム。
［項目１７］
上記ダイナミックランダムアクセスメモリは、第１の部分及び第２の部分を含み、
上記第１の部分は、仮想メモリとして実装され、
上記第２の部分は、仮想メモリとしては実装されず、上記第１の部分より低い階層レベルを有する、
項目１から１４の何れか一項に記載のデータアクセスシステム。
［項目１８］
記憶ドライブを更に備え、上記記憶ドライブは上記ダイナミックランダムアクセスメモリとは分離しており、上記最終レベルキャッシュコントローラは、
第２のデータを転送するための、上記プロセッサからの第１の複数の物理アドレスを示す複数の要求を受信し、
上記第１の複数の物理アドレスを複数の仮想アドレスに変換し、
上記複数の仮想アドレスを第２の複数の物理アドレスに変換し、
上記第２の複数の物理アドレスに基づいて、（ｉ）上記プロセッサと上記ダイナミックランダムアクセスメモリとの間で、上記第２のデータを転送するか、又は（ｉｉ）上記プロセッサと上記記憶ドライブとの間で、上記第２のデータを転送するかを決定し、
上記第２の複数の物理アドレスのうちのいくつかのアドレスは上記ダイナミックランダムアクセスメモリ中にあり、上記第２の複数の物理アドレスのうちのその他のアドレスは上記記憶ドライブ中にある、
項目１に記載のデータアクセスシステム。
［項目１９］
上記最終レベルキャッシュモジュールはただ１つの集積回路によって実装される、
項目１から１８の何れか一項に記載のデータアクセスシステム。
［項目２０］
記憶ドライブを更に備え、
上記記憶ドライブは上記ダイナミックランダムアクセスメモリとは分離しており、
上記ダイナミックランダムアクセスメモリは第１の複数のエントリを含み、
上記記憶ドライブは、上記第１の複数のエントリにマッピングされる第２の複数のエントリを含み、
上記最終レベルキャッシュコントローラは、上記第１の複数のエントリのうちの１つのエントリにおける残りの記憶容量に基づいて、上記プロセッサと、上記記憶ドライブの上記第２の複数のエントリのうちの１つのエントリとの間でデータを転送し、
上記第２の複数のエントリのうちの上記１つのエントリは、上記第１の複数のエントリのうちの上記１つのエントリにマッピングされる、
項目１に記載のデータアクセスシステム。
［項目２１］
上記ダイナミックランダムアクセスメモリ中の各エントリは、上記記憶ドライブ中の１又は複数のエントリにマッピングされる、
項目２０に記載のデータアクセスシステム。
［項目２２］
上記ダイナミックランダムアクセスメモリ中の１又は複数のエントリは、上記記憶ドライブ中の１又は複数のエントリにマッピングされる、
項目２０又は２１に記載のデータアクセスシステム。
［項目２３］
上記最終レベルキャッシュコントローラは、（ｉ）データの使用頻度、（ｉｉ）上記データの優先レベル、又は（ｉｉｉ）上記データがロックされた状態にあるかどうか、のうち少なくとも１つに基づいて、上記ダイナミックランダムアクセスメモリ中に上記データを格納する、
項目１から２２の何れか一項に記載のデータアクセスシステム。
［項目２４］
最終レベルキャッシュモジュールのダイナミックランダムアクセスメモリにアクセスするための方法であって、
第１の物理アドレスにアクセスするための要求をプロセッサによって生成する段階と、
上記プロセッサからの上記要求を最終レベルキャッシュコントローラにおいて受信する段階と、
上記最終レベルキャッシュコントローラによって上記第１の物理アドレスを第１の仮想アドレスに変換する段階と、
ダイナミックランダムアクセスメモリコントローラによって上記第１の仮想アドレスを第２の物理アドレスに変換する段階と、
上記第２の物理アドレスに基づいて、上記ダイナミックランダムアクセスメモリにアクセスする段階とを備える
方法。
［項目２５］
上記第１の物理アドレスを上記第１の仮想アドレスに変換する段階は、上記第１の物理アドレスの上記第１の仮想アドレスへのフルセットアソシアティブ変換を実行する段階を有する、
項目２４に記載の方法。
［項目２６］
上記第２の物理アドレスに基づいて、上記ダイナミックランダムアクセスメモリにアクセスするか、又は記憶ドライブにアクセスするかを上記最終レベルキャッシュコントローラによって決定する段階を更に備え、
上記記憶ドライブは上記ダイナミックランダムアクセスメモリとは分離しており、
上記第２の物理アドレスは上記ダイナミックランダムアクセスメモリ又は上記記憶ドライブ中のアドレスである、
項目２４又は２５に記載の方法。
［項目２７］
上記記憶ドライブは、上記ダイナミックランダムアクセスメモリより大きい記憶容量を有する、
項目２６に記載の方法。
［項目２８］
上記記憶ドライブは、上記ダイナミックランダムアクセスメモリより１桁大きい記憶容量を有する、
項目２６に記載の方法。
［項目２９］
上記ダイナミックランダムアクセスメモリへの、又は上記ダイナミックランダムアクセスメモリからのデータの転送速度は、上記記憶ドライブへの、又は上記記憶ドライブからのデータの転送速度より高速である、
項目２６から２８の何れか一項に記載の方法。
［項目３０］
上記記憶ドライブはソリッドステートメモリ又は回転記憶媒体を含む、
項目２６から２９の何れか一項に記載の方法。
［項目３１］
上記記憶ドライブはダイナミックランダムアクセスメモリを含み、
上記記憶ドライブの上記ダイナミックランダムアクセスメモリは、上記最終レベルキャッシュモジュールの上記ダイナミックランダムアクセスメモリより遅いデータ転送速度を有する、
項目２６から３０の何れか一項に記載の方法。
［項目３２］
上記第１の物理アドレスに基づいて、上記ダイナミックランダムアクセスメモリにアクセスするかどうかを決定する段階であって、上記ダイナミックランダムアクセスメモリはキャッシュとして実装される、段階と、
上記第１の物理アドレスについて、キャッシュミスが発生したと決定する段階と、
上記キャッシュミスに基づいて、上記キャッシュミスが発生したことを上記プロセッサに信号で伝える、又は記憶ドライブにアクセスする段階であって、上記記憶ドライブは上記ダイナミックランダムアクセスメモリとは分離している、段階とを更に備える
項目２４から３１の何れか一項に記載の方法。
［項目３３］
上記第２の物理アドレスに基づいて、上記ダイナミックランダムアクセスメモリにアクセスするかどうかを決定する段階であって、上記ダイナミックランダムアクセスメモリはキャッシュとして実装される、段階と、
上記第１の仮想アドレスについて、キャッシュミスが発生したと決定する段階と、
上記キャッシュミスに基づいて、上記キャッシュミスが発生したことを上記最終レベルキャッシュコントローラに信号で伝える段階と、
上記キャッシュミスが発生したことを示す上記信号に応答して、記憶ドライブにアクセスする段階であって、上記記憶ドライブは上記ダイナミックランダムアクセスメモリとは分離している、段階とを更に備える
項目２４から３２の何れか一項に記載の方法。
［項目３４］
上記第２の物理アドレスに基づいて、上記ダイナミックランダムアクセスメモリにアクセスするかどうかを決定する段階であって、上記ダイナミックランダムアクセスメモリはキャッシュとして実装される、段階と、
上記第１の仮想アドレスについて、キャッシュミスが発生したと上記ダイナミックランダムアクセスメモリコントローラによって決定する段階と、
上記キャッシュミスに基づいて、上記キャッシュミスが発生したことを上記最終レベルキャッシュに示すべく第１の信号を生成する段階と、
上記第１の信号に応答して、上記キャッシュミスが発生したことを上記プロセッサに示す第２の信号を上記最終レベルキャッシュコントローラにおいて生成する段階と、
上記第２の信号に応答して、記憶ドライブにアクセスする段階であって、上記記憶ドライブは上記ダイナミックランダムアクセスメモリとは分離している、段階とを更に備える
項目２４から３３の何れか一項に記載の方法。
［項目３５］
データを転送するための上記要求を生成する階であって、上記要求は上記第１の物理アドレスを示す、段階と、
上記要求に基づいて、上記第１の物理アドレスを上記第１の仮想アドレスに変換する段階と、
上記第２の物理アドレスに基づいて、（ｉ）上記プロセッサと上記ダイナミックランダムアクセスメモリとの間で上記データを転送するか、又は（ｉｉ）上記プロセッサと記憶ドライブとの間で上記データを転送するかを決定する段階であって、上記記憶ドライブは上記ダイナミックランダムアクセスメモリとは分離している、段階とを更に備える
項目２４から３４の何れか一項に記載の方法。
［項目３６］
上記プロセッサと上記記憶ドライブとの間で転送される前に、上記データを暗号化する段階を更に備える
項目３５に記載の方法。
［項目３７］
上記プロセッサにおいて第２の仮想アドレスを生成する段階と、
上記第２の仮想アドレスを上記第１の物理アドレスに変換する段階とを更に備える
項目２４から３６の何れか一項に記載の方法。
［項目３８］
上記ダイナミックランダムアクセスメモリの複数の部分に、上記複数の部分の複数の階層レベルに基づいてアクセスする段階を更に備え、
上記ダイナミックランダムアクセスメモリは第１の部分及び第２の部分を含み、
上記第１の部分は、最終レベルキャッシュとして実装され、
上記第２の部分は、キャッシュとしては実装されず、上記第１の部分より低い階層レベルを有する、
項目２４から３７の何れか一項に記載の方法。
［項目３９］
上記ダイナミックランダムアクセスメモリの複数の部分に、上記複数の部分の複数の階層レベルに基づいてアクセスする段階を更に備え、
上記ダイナミックランダムアクセスメモリは、第１の部分及び第２の部分を含み、
上記第１の部分は、仮想メモリとして実装され、
上記第２の部分は、仮想メモリとしては実装されず、上記第１の部分より低い階層レベルを有する、
項目２４から３７の何れか一項に記載の方法。
［項目４０］
第２のデータを転送するための、上記プロセッサからの複数の要求を受信する段階であって、上記複数の要求は第１の複数の物理アドレスを示す、段階と、
上記第１の複数の物理アドレスを複数の仮想アドレスに変換する段階と、
上記複数の仮想アドレスを第２の複数の物理アドレスに変換する段階であって、上記第２の複数の物理アドレスのうちのいくつかのアドレスは上記ダイナミックランダムアクセスメモリ中にあり、上記第２の複数の物理アドレスのうちのその他のアドレスは記憶ドライブ中にあり、上記記憶ドライブは上記ダイナミックランダムアクセスメモリとは分離している、段階と、
上記第２の複数の物理アドレスに基づいて、（ｉ）上記プロセッサと上記ダイナミックランダムアクセスメモリとの間で上記第２のデータを転送するか、又は（ｉｉ）上記プロセッサと上記記憶ドライブとの間で上記第２のデータを転送するかを決定する段階とを更に備える
項目２４から３９の何れか一項に記載の方法。
［項目４１］
上記最終レベルキャッシュモジュールはただ１つの集積回路によって実装される、
項目２４から４０の何れか一項に記載の方法。
［項目４２］
上記ダイナミックランダムアクセスメモリの第１の複数のエントリのうちの１つのエントリにおける残りの記憶容量に基づいて、上記プロセッサと、記憶ドライブの第２の複数のエントリのうちの１つのエントリとの間でデータを転送する段階を更に備え、上記記憶ドライブは上記ダイナミックランダムアクセスメモリとは分離しており、上記第２の複数のエントリは上記第１の複数のエントリにマッピングされ、
上記第２の複数のエントリのうちの上記１つのエントリは、上記第１の複数のエントリのうちの上記１つのエントリにマッピングされる、
項目２４から４１の何れか一項に記載の方法。
［項目４３］
上記ダイナミックランダムアクセスメモリ中の各エントリは、上記記憶ドライブ中の１又は複数のエントリにマッピングされる、
項目４２に記載の方法。
［項目４４］
上記ダイナミックランダムアクセスメモリ中の１又は複数のエントリは、上記記憶ドライブ中の１又は複数のエントリにマッピングされる、
項目４２又は４３に記載の方法。
［項目４５］
（ｉ）データの使用頻度、（ｉｉ）上記データの優先レベル、又は、（ｉｉｉ）上記データがロックされた状態にあるかどうか、のうち少なくとも１つに基づいて、上記ダイナミックランダムアクセスメモリ中に上記データを格納する段階を更に備える
項目２４から４４の何れか一項に記載の方法。
【図１】
2019067417.tif 000003
【図２】
2019067417.tif 000004
【図３】
2019067417.tif 000005
【図４】
2019067417.tif 000006
【外国語明細書】
2019067417000001.pdf