(57)【要約】コンピューティングシステムのための効率的なメモリアクセスを実行するためのシステム、装置、及び方法を開示する。外部システムメモリは、最後のレベルのキャッシュとして使用され、様々なタイプのダイナミックランダムアクセスメモリ（ＤＲＡＭ）の１つを含む。メモリコントローラは、受信した同じ単一のメモリ要求に基づいて、タグ要求と別個のデータ要求とを生成する。タグ要求の送信は、データ要求の送信よりも優先される。タグ要求の処理中に、部分的タグ比較が実行される。部分的タグ比較でタグミスが検出された場合、データ要求はキャンセルされ、メモリ要求がメインメモリに送信される。部分的タグ比較で１つまたは複数のタグヒットが検出された場合、データ要求の処理は、全体的タグ比較の結果に依存する。【選択図】図３
2021506033.tif 000002
【特許請求の範囲】
【請求項１】
メモリアクセス要求を受信するための第１のインタフェースと、
キャッシュアクセス要求をＲＡＭキャッシュメモリデバイスに送信するための第２のインタフェースと、
制御ロジックと、
を含む、ランダムアクセスメモリ（ＲＡＭ）キャッシュメモリコントローラであって、
メモリアクセス要求の受信に応答して、前記制御ロジックが、
前記メモリアクセス要求に基づいてキャッシュタグアクセス要求を生成し、
前記メモリアクセス要求に基づいて前記キャッシュタグアクセス要求とは異なるキャッシュデータアクセス要求を生成し、
前記第２のインタフェースを介して前記キャッシュアクセス要求を前記ＲＡＭキャッシュメモリデバイスに送信し、且つ、
前記キャッシュタグアクセス要求を処理することによって生成された情報に基づいて、前記キャッシュデータアクセス要求の送信をスケジュールする
ように構成される、ランダムアクセスメモリ（ＲＡＭ）キャッシュメモリコントローラ。
【請求項２】
前記制御ロジックが、前記キャッシュタグアクセス要求及び前記キャッシュデータアクセス要求のそれぞれに一意の識別子を記憶するようにさらに構成され、前記一意の識別子は、前記キャッシュタグアクセス要求と前記キャッシュデータアクセス要求が同じメモリアクセス要求から生成されることを特定する、請求項１に記載のＲＡＭキャッシュメモリコントローラ。
【請求項３】
前記制御ロジックが、
前記ＲＡＭキャッシュメモリデバイス内の複数の行のうち、前記キャッシュタグアクセス要求のアドレスに対応する所与の行を識別し、且つ、
前記所与の行に記憶されている１つまたは複数のタグの一部分のみを、前記キャッシュタグアクセス要求の前記アドレスのタグの一部分のみと比較する
ように構成される、請求項１に記載のＲＡＭキャッシュメモリコントローラ。
【請求項４】
前記キャッシュデータアクセス要求の送信をスケジュールすることが、前記アドレスの前記タグの一部分のみを比較することに基づいてタグミスを判別することに応答して、前記ＲＡＭキャッシュメモリデバイスへの前記キャッシュデータアクセス要求の送信をキャンセルすることを含む、請求項３に記載のＲＡＭキャッシュメモリコントローラ。
【請求項５】
前記アドレスの前記タグの前記一部分のみを比較することに基づいてタグミスを判別することに応答して、前記制御ロジックが、システムメモリとメインメモリとの１つまたは複数に前記メモリアクセス要求を送信するようにさらに構成される、請求項３に記載のＲＡＭキャッシュメモリコントローラ。
【請求項６】
前記キャッシュデータアクセス要求の送信をスケジュールすることが、前記所与の行の前記１つまたは複数のタグの全体を前記キャッシュタグアクセス要求の前記アドレスの前記タグの全体と比較することに基づいてタグヒットを判別することに応答して、前記第２のインタフェースを介して前記ＲＡＭキャッシュメモリデバイスに前記キャッシュデータアクセス要求を送信することを含む、請求項３に記載のＲＡＭキャッシュメモリコントローラ。
【請求項７】
前記制御ロジックが、前記キャッシュデータアクセス要求によるアクセスから生じる前記タグヒットに対応するタグの位置に基づいて、前記キャッシュデータアクセス要求によってアクセスされる所与の行のデータを識別するようにさらに構成される、請求項６に記載のＲＡＭキャッシュメモリコントローラ。
【請求項８】
プロセッサが、メモリデバイスに記憶されたデータに対するメモリアクセス要求を生成することと、
メモリコントローラが、前記プロセッサから前記メモリアクセス要求を受信することと、
メモリアクセス要求の受信に応答して、
前記メモリコントローラが、前記メモリアクセス要求に基づいてタグアクセス要求を生成することと、
前記メモリコントローラが、前記メモリアクセス要求に基づいて前記タグアクセス要求とは異なるデータアクセス要求を生成することと、
前記メモリコントローラが、前記タグアクセス要求を前記メモリデバイスに送信することと、
前記メモリコントローラが、前記タグアクセス要求を処理することによって生成された情報に基づいて、前記データアクセス要求の送信をスケジュールすることと、
を含む、方法。
【請求項９】
前記メモリコントローラが、前記タグアクセス要求と前記データアクセス要求のそれぞれに一意の識別子を記憶することをさらに含み、前記一意の識別子は、前記タグアクセス要求と前記データアクセス要求が同じメモリアクセス要求から生成されていることを特定する、請求項８に記載の方法。
【請求項１０】
前記メモリデバイス内の複数の行のうち、前記タグアクセス要求のアドレスに対応する所与の行を識別することと、
前記所与の行に記憶されている１つまたは複数のタグの一部分のみを、前記タグアクセス要求の前記アドレスのタグの一部分のみと比較することと、
をさらに含む、請求項９に記載の方法。
【請求項１１】
前記データアクセス要求の送信をスケジュールすることが、前記アドレスの前記タグの前記一部分のみを比較することに基づいてタグミスを判別することに応答して、前記データアクセス要求の前記メモリデバイスへの送信をキャンセルすることを含む、請求項１０に記載の方法。
【請求項１２】
前記アドレスの前記タグの前記一部分のみを比較することに基づいてタグミスを判別することに応答して、前記方法が、システムメモリとメインメモリとの１つまたは複数に前記メモリアクセス要求を送信することをさらに含む、請求項１０に記載の方法。
【請求項１３】
前記データアクセス要求の送信をスケジュールすることが、前記所与の行の前記１つまたは複数のタグの全体を前記キャッシュタグアクセス要求の前記アドレスの前記タグの全体と比較することに基づいてタグヒットを判別することに応答して、前記データアクセス要求を前記メモリデバイスに送信することを含む、請求項１０に記載の方法。
【請求項１４】
前記キャッシュタグアクセス要求によるアクセスから生じる前記タグヒットに対応するタグの位置に基づいて、前記キャッシュデータアクセス要求によってアクセスされる所与の行のデータを識別することをさらに含む、請求項１３に記載の方法。
【請求項１５】
メモリデバイスに記憶されたデータに対するメモリアクセス要求を生成するように構成されたプロセッサと、
前記メモリデバイスに結合されたメモリコントローラと、
を含む、コンピューティングシステムであって、
メモリアクセス要求の受信に応答して、前記メモリコントローラが、
前記メモリアクセス要求に基づいてタグアクセス要求を生成し、
前記メモリアクセス要求に基づいて前記タグアクセス要求とは異なるデータアクセス要求を生成し、
前記タグアクセス要求を前記メモリデバイスに送信し、
前記タグアクセス要求を処理することによって生成される情報に基づいて、前記データアクセス要求の送信をスケジュールする
ように構成される、前記コンピューティングシステム。
【請求項１６】
前記メモリコントローラが、前記タグアクセス要求及び前記データアクセス要求のそれぞれに一意の識別子を記憶するようにさらに構成され、前記一意の識別子は、前記タグアクセス要求と前記データアクセス要求が同じメモリアクセス要求から生成されることを特定する、請求項１５に記載のコンピューティングシステム。
【請求項１７】
前記メモリコントローラが、
前記メモリデバイス内の複数の行のうち、前記タグアクセス要求のアドレスに対応する所与の行を識別し、且つ、
前記所与の行に記憶されている１つまたは複数のタグの一部分のみを、前記タグアクセス要求の前記アドレスのタグの一部分のみと比較する
ように構成される、請求項１６に記載のコンピューティングシステム。
【請求項１８】
前記キャッシュデータアクセス要求の送信をスケジュールすることが、前記アドレスの前記タグの前記一部分のみを比較することに基づいてタグミスを判別することに応答して、前記キャッシュデータアクセス要求の前記メモリデバイスへの送信をキャンセルすることを含む、請求項１７に記載のコンピューティングシステム。
【請求項１９】
前記アドレスの前記タグの前記一部分のみを比較することに基づいてタグミスを判別することに応答して、前記メモリコントローラが、システムメモリとメインメモリとの１つまたは複数に前記メモリアクセス要求を送信するようにさらに構成される、請求項１７に記載のコンピューティングシステム。
【請求項２０】
前記キャッシュデータアクセス要求の送信をスケジュールすることが、前記所与の行の前記１つまたは複数のタグの全体を前記キャッシュタグアクセス要求の前記アドレスの前記タグの全体と比較することに基づいてタグヒットを判別することに応答して、前記キャッシュデータアクセス要求を前記メモリデバイスに送信することを含む、請求項1８に記載のコンピューティングシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
関連技術の説明
半導体製造プロセスの進歩とオンダイ幾何学的寸法の縮小の両方に伴い、半導体チップは、さらなる機能性及び性能を提供する。しかしながら、処理及び集積回路の設計の近代的な技術に関してはいまだに潜在的な利益を制限し得る設計上の問題が生じている。１つの問題は、２次元平面レイアウトチップの連続した世代で単位長さあたりの相互接続遅延が増加し続けていることである。また、個々のチップ間の電気インピーダンスが高いため、待ち時間が長くなる。さらに、チップ外の別のダイに渡る信号は、これらの長い信号経路で寄生容量が増加するため、これらの信号の消費電力を大幅に（例えば１０〜１００倍）増加させる場合がある。従って、オフチップダイナミックランダムアクセスメモリ（ＤＲＡＭ）などのシステムメモリへのメモリアクセス待ち時間は、相当なものである。
【０００２】
別の設計上の問題は、多くのデータにアクセスするほとんどのソフトウェアアプリケーションは通常、メモリにバインドされているため、計算時間は一般にメモリ帯域幅によって決まるということである。オフチップダイナミックランダムアクセスメモリ（ＤＲＡＭ）のメモリアクセス待ち時間は、数百から数千を超えるクロックサイクルに及ぶ可能性があり、プロセッサ設計のコア数の増加により、メモリ帯域幅の問題が顕著になっている。
【０００３】
上記を考慮して、コンピューティングシステムのための効率的なメモリアクセスを実行するための効率的な方法及びシステムが望まれる。
【０００４】
添付図面と共に以下の説明を参照することによって、本明細書に記載される方法及び機構の利点をより良く理解することができよう。
【図面の簡単な説明】
【０００５】
【図１】コンピューティングシステムの一実施形態のブロック図である。
【図２】メモリコントローラの一実施形態のブロック図である。
【図３】メモリアクセス要求をシステムメモリに送信する方法の一実施形態のフロー図である。
【図４】システムメモリのキャッシュストレージ構成のタグアクセス要求を処理する方法の一実施形態のフロー図である。
【図５】システムメモリのキャッシュストレージ構成のタグアクセス要求とは別のデータアクセス要求を処理する方法の他の実施形態のフロー図である。
【０００６】
本発明は、様々な修正及び代替形態を受け入れるが、特定の実施形態を図面中の例によって示し、本明細書で詳細に説明する。しかしながら、図面及びそれに対する詳細な説明は、開示された特定の形態に本発明を限定するものではなく、反対に、本発明は、添付の請求項によって定義される本発明の範囲内に収まる全ての修正、均等物、及び代替物を包含することは、理解されたい。
【発明を実施するための形態】
【０００７】
以下の説明では、本明細書に提示する方法及び機構の完全な理解を提供するために、多くの特定の詳細が述べられている。しかしながら、当業者は、それらの特定の詳細なしに様々な実施形態を実践し得ることを認識するべきである。ある例では、本明細書で説明されるアプローチを曖昧にすることを避けるために、周知の構造、コンポーネント、信号、コンピュータプログラム命令、及び技術を詳細には示していない。説明を簡潔及び明確にするために、図に示される要素は、必ずしも縮尺通りに描かれていないことは理解されよう。例えば、要素のいくつかの寸法は、他の要素に対して誇張されてよい。
【０００８】
コンピューティングシステムのための効率的なメモリアクセスを実行するための様々なシステム、装置、方法、及びコンピュータ可読媒体が開示される。一実施形態では、コンピューティングシステムは、１つまたは複数のコンピューティングリソース及び外部システムメモリを含む。コンピューティングリソースの例には、汎用中央処理装置（ＣＰＵ）、グラフィック処理装置（ＧＰＵ）、加速処理装置（ＡＰＵ：ａｃｃｅｌｅｒａｔｅｄ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）などが含まれる。コンピューティングリソースは、メモリアクセス要求を生成する。様々な実施形態では、所与のコンピューティングリソースは、キャッシュメモリサブシステムを含む。所与のコンピューティングリソースがキャッシュメモリサブシステム内でメモリアクセス要求のミスを判別すると、所与のコンピューティングリソースはメモリアクセス要求を所与のメモリコントローラに送信する。
【０００９】
所与のメモリコントローラは、メモリアクセス要求のターゲットアドレスに関連付けられたメモリデバイスに結合される。コンピューティングシステムに複数のメモリデバイスが含まれている場合、オペレーティングシステムによってアドレス空間が複数のメモリデバイスに分散される。メモリコントローラは、コンピューティングリソースの要求アドレスとメモリデバイス（複数可）の記憶場所を指すアドレスとの間のマッピングをサポートする。ある実施形態では、メモリコントローラは、単一のメモリデバイスに接続される。他の実施形態では、メモリコントローラは、複数のメモリデバイスに接続される。様々な実施形態では、メモリコントローラは、メモリアクセス要求を記憶するための１つまたは複数のキューを含む。ある実施形態では、メモリコントローラは、メモリ読み取り要求を記憶するための読み取りキューと、メモリ書き込み要求を記憶するための別個の書き込みキューとを含む。別の実施形態では、メモリコントローラは、メモリ読み取り要求とメモリ書き込み要求との両方を記憶するための統一されたキューを含む。
【００１０】
さらに別の実施形態では、メモリコントローラは、受信したメモリアクセス要求を記憶するための１つまたは複数のキューと、１つまたは複数のキューから選択されたスケジュールされたメモリアクセス要求を記憶するための別個のキューとを含む。従って、メモリコントローラは、優先順位とターゲットアドレスに基づいて、メモリデバイスへのメモリアクセス要求の順不同の発行をサポートする。ある実施形態では、メモリコントローラは、少なくとも優先順位に基づいて、コンピューティングリソースへの応答の順不同の発行もサポートする。
【００１１】
外部システムメモリは、様々なタイプのダイナミックランダムアクセスメモリ（ＤＲＡＭ）の１つで実装される。ＤＲＡＭは、マイクロプロセッサパッケージ内に少なくともギガバイトの統合メモリを提供する。様々な実施形態では、より多くのＤＲＡＭ、及び／または、オフチップディスクメモリもしくはソリッドステートメモリで実装されたシステムメモリにアクセスする前に、比較的大量の行ベースのメモリストレージが、最後のレベルのキャッシュ（ＬＬＣ）として使用される。様々な実施形態では、ＤＲＡＭに結合されたメモリコントローラは、受信した単一のメモリアクセス要求を２つの別個のメモリアクセス要求に分割する。ある実施形態では、メモリコントローラは、受信したメモリアクセス要求に基づいてタグアクセス要求を生成し、受信したメモリアクセス要求に基づいてタグアクセス要求とは異なるデータアクセス要求を生成する。
【００１２】
ある実施形態では、メモリコントローラは、タグアクセス要求及びデータアクセス要求のそれぞれが同じ受信されたメモリアクセス要求から生成されていることを特定する表示を記憶する。ある実施形態では、表示は、タグアクセス要求及びデータアクセス要求のそれぞれの中に記憶される。ある実施形態では、読み取りキュー及び書き込みキューのそれぞれは、タグキュー及び別個のデータキューに分割される。一実施形態では、表示は、フリーリストから生成された識別子、スレッドもしくはプロセス識別子、コンピューティングソース識別子、ターゲットアドレス、経過時間もしくはタイムスタンプなどの１つまたは複数から生成された一意の識別子である。
【００１３】
様々な実施形態では、メモリコントローラは、タグアクセス要求を処理することによって生成された情報が利用可能になるまで、データアクセス要求の送信を防ぐ。従って、データアクセス要求が送信される場合、タグアクセス要求はデータアクセス要求の前にメモリデバイスに送信される。メモリデバイス内の複数の行のうちの所与の行が読み取られる。所与の行は、タグアクセス要求のターゲットアドレスによって指定される。例えば、ターゲットアドレス内のページインデックスを使用して、所与の行を識別する。ある実施形態では、所与の行は、所与の行の一部分内に１つまたは複数のタグを記憶する。
【００１４】
メモリコントローラは、所与の行に記憶されている１つまたは複数のタグの一部分のみを、タグアクセス要求のターゲットアドレスのタグの一部分のみと比較する。様々な実施形態において、部分的タグ比較は、全体的タグ比較よりも待ち時間がかなり短くなる。一致が検出されない場合、タグミスが発生しており、メモリコントローラはデータアクセス要求のメモリデバイスへの送信をキャンセルする。メモリコントローラは、データアクセス要求を記憶するキューエントリを無効にするか、割り当てを解除する。従って、要求されたデータがＤＲＡＭに実装された最後のレベルのキャッシュにないことが比較的すぐに分かる。例えば、全体的タグ比較ではかなり長い待ち時間の後で分かるのとは対照的に、部分的タグ比較ではかなり短い待ち時間の後で分かる。
【００１５】
タグミスの場合、メモリコントローラは単一のメモリアクセス要求をオフチップシステムメモリ、及び／または、ディスクメモリやソリッドステートメモリなどのメインメモリにも送信する。ある実施形態では、メモリコントローラは、単一のメモリアクセス要求のコピーをキューに維持する。他の実施形態では、メモリコントローラは、タグアクセス要求及び別個のデータアクセス要求のうちの１つまたは複数から単一のメモリアクセス要求を再生成する。
【００１６】
ある実施形態では、部分的タグ比較に基づいて１つまたは複数のタグヒットが発生するとメモリコントローラが判断すると、メモリコントローラは、所与の行の１つまたは複数のタグの全体を、タグアクセス要求のターゲットアドレスのタグの全体と比較する。様々な実施形態において、全体的タグ比較は、部分的タグ比較よりも待ち時間がかなり長くなる。全体的タグ比較の結果、タグミスが発生した場合、メモリコントローラは、部分的タグ比較から判別されたタグミスに使用される上記ステップを実行する。全体的タグ比較の結果、タグヒットが発生した場合、メモリコントローラはデータアクセス要求をメモリデバイスに送信する。
【００１７】
メモリコントローラは、データアクセス要求のアクセスタイプに基づいて、所与の行のデータの読み取りまたは書き込みアクセスを実行する。ある実施形態では、メモリコントローラは、所与の行内のデータの位置を示す所与の行内のタグヒットに対応するタグの位置に基づいて、アクセスする所与の行のデータを識別する。
【００１８】
図１を参照すると、コンピューティングシステム１００の一実施形態の一般的なブロック図が示されている。図に示すように、コンピューティングシステム１００は、各メモリコントローラ１３０とコンピューティングリソース１１０との間に通信ファブリック１２０を含む。図示の実施形態では、コンピューティングリソースは、中央処理装置（ＣＰＵ）１１２、グラフィック処理装置（ＧＰＵ）１１４、及びハブ１１６を含む。ハブ１１６は、マルチメディアエンジン１１８との通信に使用される。単一のメモリコントローラ１３０が示されているが、他の実施形態では、別の数のメモリコントローラがコンピューティングシステム１００で使用される。メモリコントローラ１３０は、通信ファブリック１２０を介してコンピューティングリソース１１０からメモリアクセス要求を受信し、メモリアクセス要求を、オフチップメインメモリ１６２、及び、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）１７０として実装されるシステムメモリの１つまたは複数に送信する。メモリコントローラ１３０はまた、ＤＲＡＭ１７０及びメインメモリ１６２から応答を受信し、その応答をコンピューティングリソース１１０の対応する要求元に送信する。
【００１９】
ある実施形態では、コンピューティングシステム１００のコンポーネントは、システムオンチップ（ＳＯＣ）などの集積回路（ＩＣ）上の個々のダイである。他の実施形態では、コンポーネントは、システムインパッケージ（ＳｉＰ）またはマルチチップモジュール（ＭＣＭ）の個々のダイである。一実施形態では、コンピューティングシステム１００は、モバイルコンピュータ、スマートフォン、スマートウォッチ、もしくはタブレット内のスタンドアロンシステム、デスクトップ、サーバ等である。ＣＰＵ１１２、ＧＰＵ１１４、及びマルチメディアエンジン１１８は、メモリアクセス要求を生成することができるコンピューティングリソースの例である。図示されていないが、他の実施形態では、他のタイプのコンピューティングリソースがコンピューティングリソース１１０に含まれる。
【００２０】
ＣＰＵ１１２の１つまたは複数のプロセッサコアのそれぞれは、所与の選択された命令セットアーキテクチャ（ＩＳＡ）に従って命令を実行する回路を含む。様々な実施形態では、ＣＰＵ１１２のプロセッサコアのそれぞれは、所与のＩＳＡの命令を処理するために使用されるスーパースカラ、マルチスレッドマイクロアーキテクチャを含む。ある実施形態では、ＧＰＵ１１４は、相当な数の並列実行レーンを備えた高並列データマイクロアーキテクチャを含む。一実施形態では、マイクロアーキテクチャは、並列実行レーンに対して単一命令複数データ（ＳＩＭＤ）パイプラインを使用する。マルチメディアエンジン１１８は、マルチメディアアプリケーションのための音声データ及び映像データを処理するためのプロセッサを含む。
【００２１】
一例では、加速処理装置（ＡＰＵ）、ディスプレイコントローラ、オーディオプロセッサなどが、コンピューティングリソース１１０に含まれる追加の候補である。ＡＰＵの例は、ＧＰＵ、ＦＰＧＡ、または他の処理ユニットと同じダイに統合されたＣＰＵであり、消費電力を削減しながら、これらのユニット間のデータ転送速度を向上させる。他の実施形態では、ＡＰＵは、ビデオ処理及び他のアプリケーション固有のアクセラレータを含む。
【００２２】
様々な実施形態では、通信ファブリック１２０は、コンピューティングリソース１１０とメモリコントローラ１３０との間でトラフィックを前後に転送し、且つ、それぞれの通信プロトコルをサポートするためのインタフェースを含む。ある実施形態では、通信ファブリック１２０は、要求及び応答を記憶するためのキュー、内部ネットワークを通して要求を送信する前に受信した要求間の調整を行うための選択ロジック、パケットを構築及びデコードするためのロジック、及び、パケットのルートを選択するためのロジックを少なくとも含む。
【００２３】
ある実施形態では、コンピューティングシステム１００のアドレス空間は、少なくともＣＰＵ１１２、ＧＰＵ１１４、及びハブ１１６と入力／出力周辺機器（図示せず）及び他のタイプのコンピューティングリソース等の１つまたは複数の他のコンポーネントとの間で分割される。どのアドレスがどのコンポーネントにマッピングされるか、従って、ＣＰＵ１１２、ＧＰＵ１１４、及びハブ１１６のどれに特定のアドレスに対するメモリ要求がルーティングされるべきかを決定するために、メモリマップが維持される。ソフトウェアアプリケーションがますます多くのデータにアクセスするにつれて、メモリサブシステムはより多く利用される。待ち時間がより重要になる。相互接続待ち時間を短縮するために、より多くのオンチップメモリストレージが使用される。例えば、コンピューティングリソース１１０内のコンピューティングリソースの１つまたは複数は、各プロセッサコアのメモリ待ち時間を低減するためのキャッシュメモリサブシステムを含む。様々な実施形態では、ＤＲＡＭ１７０の比較的大量の行ベースのメモリストレージが、オフチップシステムメモリ（図示せず）にアクセスする前に最後のレベルのキャッシュ（ＬＬＣ）として使用される。これは、さらなるＤＲＡＭ、または、ディスクメモリもしくはソリッドステートメモリであるメインメモリ１６２であってよい。
【００２４】
様々な実施形態では、ＤＲＡＭ１７０は、データの各ビットを、集積回路内の別個のコンデンサに記憶する。コンデンサは充電または放電できる。これらの２つの状態を使用して、ビットの２つの論理値を表す。ＤＲＡＭ１７０は、ビットごとに単一のトランジスタ及びコンデンサを利用する。オンチップ同期ＲＡＭ（ＳＲＡＭ）で使用される６つのトランジスタと比較して、ＤＲＡＭはより高い密度に達する。ＨＤＤ及びフラッシュメモリとは異なり、ＤＲＡＭ１７０は、不揮発性メモリではなく揮発性メモリである。ＤＲＡＭ１７０は、電源が取り外されると、比較的速くそのデータを失う。
【００２５】
最近、垂直及び水平の両方で単一の回路に統合された能動電子部品の２つ以上の層を含む３次元集積回路（３Ｄ  ＩＣ）が進歩した。システムインパッケージ（ＳｉＰ）またはチップスタックマルチチップモジュール（ＭＣＭ）として知られる３Ｄパッケージは、単一のパッケージに個別のチップを積み重ねることによって空間を節約する。これらの層内のコンポーネントは、垂直方向でも水平方向でも、オンチップ信号伝達を使用して通信する。この信号伝達は、既知の２次元平面レイアウト回路よりも相互接続信号の遅延を低減する。
【００２６】
ある実施形態では、ＤＲＡＭ１７０は、マルチチャネルメモリアーキテクチャを含む。このタイプのアーキテクチャは、それらの間の通信のチャネルを追加することにより、メモリコントローラ１３０へのデータの転送速度を向上させる。ある実施形態では、マルチチャネルアーキテクチャは、複数のメモリモジュール及びマザーボード及び／または複数のチャネルをサポートできるカードを利用する。別の実施形態では、ＤＲＡＭ１７０は、３次元集積回路（３Ｄ  ＩＣ）を利用して、前述のように最後のレベルのキャッシュを提供する。１つまたは複数の行バッファまたは他の同等の構造を含む行ベースのアクセス方式を使用する最後のレベルのキャッシュのための他のメモリ技術が可能であり、企図されている。他のメモリ技術の例には、相変化メモリ、スピントルク伝達抵抗メモリ、メモリスタなどが含まれる。
【００２７】
前述のように、様々な実施形態では、ＤＲＡＭ１７０は、システムメモリにアクセスする前に、最後のレベルのキャッシュ（ＬＬＣ）として使用される。ある実施形態では、メモリコントローラ１３０は、ＤＲＡＭオープン／アクティブ化、プリチャージ、クローズ、及びリフレッシュコマンドなどのＲＡＭトランザクションを処理するための制御ロジックを含む。さらに、メモリコントローラ１３０は、タグ比較などのキャッシュアクセスを処理し、タグ比較に基づいて読み出されたより大きなデータの一部を識別するための制御ロジックを含む。様々な実施形態では、ＤＲＡＭ１７０は、Ｉ／Ｏコントローラ及びバス１６０及びメモリバス１５０を通して、システムメモリ（図示せず）及びメインメモリ１６２のうちの１つまたは複数からデータをフィルされる。要求されたブロックを含む対応するキャッシュフィルラインは、元のメモリアクセス要求を完了するために、ＤＲＡＭ１７０からコンピューティングリソース１１０のキャッシュメモリサブシステムの対応するキャッシュメモリサブシステムに送られる。キャッシュフィルラインは、１つまたは複数のレベルのキャッシュに配置される。
【００２８】
メモリコントローラ１３０への各インタフェースのためのプロトコルの一例は、ダブルデータレート（ＤＤＲ）タイプのプロトコルである。プロトコルは、クロックサイクルごとのデータ転送の数、信号電圧レベル、信号タイミング、信号とクロックの位相、クロック周波数など、情報転送に使用される値を決定する。プロトコルの例には、ＤＤＲ２  ＳＤＲＡＭ、ＤＤＲ３  ＳＤＲＡＭ、ＧＤＤＲ４（グラフィックスダブルデータレート、バージョン４）ＳＤＲＡＭ、及びＧＤＤＲ５（グラフィックスダブルデータレート、バージョン５）ＳＤＲＡＭが含まれる。メモリコントローラ１３０は、メモリチャネルにインタフェースし、対応するプロトコルに従うための制御回路を含む。
【００２９】
図に示すように、ＤＲＡＭ１７０は、複数のメモリアレイバンク１７４Ａ〜１７４Ｂを含む。バンク１７４Ａ〜１７４Ｂの各バンクは、行バッファ１７２Ａ〜１７２Ｂの各行バッファを含む。行バッファ１７２Ａ〜１７２Ｂの各行バッファは、メモリアレイバンク１７４Ａ〜１７４Ｂ内の複数の行のアクセスされた行にデータを記憶する。アクセスされた行は、受信したメモリアクセス要求のＤＲＡＭアドレスによって識別される。ＤＲＡＭ１７０のロジック１３８内の制御ロジックは、ＤＲＡＭ１７０内のデータ及び制御ラインのアクティブ化（オープン）トランザクションやプリチャージなどの複雑なトランザクションを実行して、識別された行に一度アクセスし、クローズトランザクション中に、行バッファに記憶されている修正されたコンテンツを識別された行に一度戻す。アクティブ化／オープン、列アクセス、読み取りアクセス、書き込みアクセス、及びプリチャージ／クローズ等、異なるＤＲＡＭトランザクションのそれぞれは、それぞれ異なる待ち時間を有する。アクティブ化及びプリチャージのトランザクションは、読み取りアクセス及び書き込みアクセスのトランザクションよりも大幅に待ち時間が長くなることが多い。
【００３０】
様々な実施形態では、ＤＲＡＭ１７０は、１つまたは複数のメモリチャネル、１チャネルあたり１つまたは複数のメモリモジュールもしくはデバイス、１メモリモジュールあたり１つまたは複数のランク、１ランクあたり１つまたは複数のバンク、及び、１バンクあたり１つまたは複数の行を含む。通常、各行はデータのページを記憶する。ページのサイズは、設計上の考慮事項に基づいて選択される。ページは、１キロバイト（１ＫＢ）、４キロバイト（４ＫＢ）、または、デザインの選択に基づいた任意のサイズであってよい。
【００３１】
コンピューティングリソース１１０内のキャッシュメモリサブシステム（図示せず）は、データのブロックを記憶するように構成された高速キャッシュメモリを含む。本明細書で使用される場合、「ブロック」は、隣接しているメモリ位置に記憶されたバイトのセットであり、これらは、コヒーレンシ目的のために単位として取り扱われる。本明細書で使用される場合、「キャッシュブロック」、「ブロック」、「キャッシュライン」、及び「ライン」という用語はそれぞれ交換可能である。ある実施形態では、ブロックはまた、キャッシュの割り当て及び割当解除の単位であってよい。ブロックのバイト数は、設計上の選択に応じて変動し、任意のサイズであってよい。さらに、「キャッシュタグ」、「キャッシュラインタグ」、「キャッシュブロックタグ」という用語はそれぞれ交換可能である。様々な実施形態では、キャッシュメモリサブシステムは、キャッシュの階層として実装される。
【００３２】
本明細書で使用される場合、「アクセス」という用語は、対応する要求アドレスの要求されたデータがキャッシュに存在する場合に、キャッシュヒットをもたらすメモリ読み取り要求またはメモリ書き込み要求の動作を行うことを指す。あるいは、要求されたデータがキャッシュに存在しない場合、メモリアクセス要求はキャッシュミスになる。本明細書で使用される場合、「メモリ読み取り要求」は、読み取り要求とも呼ばれ、同様に、「メモリ書き込み要求」は、書き込み要求とも呼ばれる。
【００３３】
要求されたデータがコンピューティングリソース１１０のキャッシュメモリサブシステムで見つからない場合、メモリアクセス要求が生成され、メモリコントローラ１３０に送信される。図に示されるように、メモリコントローラ１３０は、通信ファブリック１２０を介してコンピューティングリソース１１０から受信されたメモリアクセス要求をキューに入れるための要求キュー１３２を含む。メモリコントローラ１３０はまた、ＤＲＡＭ１７０から受信した応答を記憶するための応答キュー１３４を有する。ある実施形態では、要求キュー１３２は、メモリアクセス要求を記憶するための１つまたは複数のキューを含む。他の実施形態では、要求キュー１３２は、メモリ読み取り要求を記憶するための読み取りキューと、メモリ書き込み要求を記憶するための別個の書き込みキューとを含む。別の実施形態では、要求キュー１３２は、メモリ読み取り要求とメモリ書き込み要求との両方を記憶するための統一されたキューを含む。
【００３４】
さらに別の実施形態では、要求キュー１３２は、受信したメモリアクセス要求を記憶するための１つまたは複数のキューと、１つまたは複数のキューから選択されたスケジュールされたメモリアクセス要求を記憶するための別個のキューとを含む。スケジューラ１３６は、ＤＲＡＭ１７０に順不同で発行するために、要求キュー１３２に記憶されたメモリアクセス要求を選択するための１つまたは複数のスケジューリングブロックを含む。従って、メモリコントローラ１３０は、優先順位とターゲットアドレスに基づいて、ＤＲＡＭ１７０へのメモリアクセス要求の順不同の発行をサポートする。
【００３５】
様々な実施形態において、メモリバス１５０は、読み取りモード及び書き込みモードの所与のモード中など、所与の時間の単一方向のデータトラフィックの送信をサポートし、次に、読み取りモードと書き込みモードの他方のモード中など、他方の所与の時間に、反対方向にデータトラフィックを送信する。ある実施形態では、メモリバス１５０は、少なくともコマンドバス及びデータバスを利用し、メモリバス１５０は、データバス上のデータトラフィックをＤＲＡＭ１７０からメモリコントローラ１３０に送信するための読み取りモードをサポートする。さらに、メモリバス１５０は、データバス上のデータトラフィックをメモリコントローラ１３０からＤＲＡＭ１７０に送信するための書き込みモードをサポートする。
【００３６】
ある実施形態では、メモリコントローラ１３０は、少なくとも優先順位に基づいて、コンピューティングリソース１１０への応答の順不同の発行もサポートする。様々な実施形態では、メモリコントローラ１３０のスケジューラ１３６は、サービス品質（ＱｏＳ）または他の優先度情報、経過時間、プロセスもしくはスレッド識別子（ＩＤ）、及び、同じメモリチャネルをターゲットにする、同じランクをターゲットにする、同じバンクをターゲットにする、及び／または、同じページをターゲットにするなど、他の記憶された要求との関係に基づいて、記憶されたメモリアクセス要求の発行をスケジュールする。
【００３７】
様々な実施形態では、ロジック１３８とも呼ばれる、キャッシュコントローラ及びメモリデバイスコントローラロジック１３８は、受信した単一のメモリアクセス要求を２つの別個のメモリアクセス要求に分割する。ある実施形態では、ロジック１３８は、受信したメモリアクセス要求に基づいてタグアクセス要求を生成し、受信したメモリアクセス要求に基づいてタグアクセス要求とは異なるデータアクセス要求を生成する。タグアクセス要求及びデータアクセス要求は、キャッシュタグアクセス要求及びキャッシュデータアクセス要求と呼ぶこともできる。ある実施形態では、要求キュー１３２内の読み取りキュー及び書き込みキューのそれぞれは、タグキュー及び別個のデータキューに分割される。一実施形態では、ロジック１３８は、フリーリストから生成された識別子、スレッドもしくはプロセス識別子、コンピューティングソース識別子、ターゲットアドレス、経過時間もしくはタイムスタンプなどから生成された識別子の１つまたは複数から一意の識別子を生成する。ある実施形態では、ロジック１３８は、生成された一意の識別子をタグアクセス要求及びデータアクセス要求のそれぞれに記憶する。
【００３８】
ある実施形態では、ロジック１３８は、タグアクセス要求を処理することによって生成された情報に基づいて、データアクセス要求の送信をスケジュールする。様々な実施形態では、ロジック１３８は、タグアクセス要求を処理することによって生成された情報が利用可能になるまで、データアクセス要求の送信を防ぐ。従って、データアクセス要求が送信される場合、タグアクセス要求はデータアクセス要求が送信される前にメモリデバイスに送信される。ある実施形態では、ターゲットアドレス内のページインデックスを使用して、バンク１７４Ａ〜１７４Ｂのうちのターゲットとされたバンクの複数の行の所与の行を識別する。ある実施形態では、所与の行は、所与の行の一部分内に１つまたは複数のタグを記憶する。ＤＲＡＭ１７０は、ＲＡＭキャッシュメモリなどの最後のレベルのキャッシュとして使用されるので、メモリデバイスは、ＲＡＭキャッシュメモリデバイスと呼ぶことができる。
【００３９】
様々な実施形態では、ロジック１３８は、所与の行に記憶された１つまたは複数のタグと、タグアクセス要求に記憶された単一メモリアクセス要求のターゲットアドレスのタグとの間の部分的タグ比較を行う。様々な実施形態において、部分的タグ比較は、全体的タグ比較よりも待ち時間がかなり短くなる。一致が検出されない場合、タグミスが発生しており、ロジック１３８はデータアクセス要求のＤＲＡＭ１７０への送信をキャンセルする。メモリコントローラは、データアクセス要求を記憶するキューエントリを無効にするか、割り当てを解除する。従って、全体的タグ比較のかなり長い待ち時間の後で分かるのとは対照的に、部分的タグ比較ではかなり短い待ち時間の後で分かる等、要求されたデータがシステムメモリ内に存在しないことがより早く分かる。タグミスの場合、ロジック１３８はまた、単一メモリアクセス要求をメインメモリ１６２に送信する。ある実施形態では、全体的タグ比較は、部分的タグ比較と同時に始まる。部分的タグ比較で一致が検出されなかった場合、全体的タグ比較はゲートで制御もしくは停止される、または、全体的タグ比較の続行が許可されるが、結果は破棄される。
【００４０】
ある実施形態では、部分的タグ比較に基づいて１つまたは複数のタグヒットが発生するとロジック１３８が判断すると、ロジック１３８は、所与の行の１つまたは複数のタグの全体を、タグアクセス要求のターゲットアドレスのタグの全体と比較する。上記のように、ある実施形態では、全体的タグ比較は、部分的タグ比較と同時に始まる。様々な実施形態では、この全体的タグ比較は、部分的タグ比較よりも待ち時間がかなり長くなる。全体的タグ比較の結果、タグミスが発生した場合、ロジック１３８は、部分的タグ比較から判別されたタグミスに使用される上記のステップを実行する。全体的タグ比較の結果、タグヒットが発生した場合、ロジック１３８はデータアクセス要求をＤＲＡＭ１７０に送信する。ある実施形態では、全体的タグヒット結果を使用して、データアクセス要求の処理によって後に読み取られる行の特定の部分を識別する。例えば、行の特定のキャッシュラインは、タグヒット結果によって識別される。
【００４１】
オフチップディスクメモリ１６２は、データの不揮発性ランダムアクセス二次ストレージを提供し得る。一実施形態では、オフチップディスクメモリ１６２は、１つまたは複数のハードディスクドライブ（ＨＤＤ）を含み得る。ＨＤＤは通常、それぞれが磁気媒体でコーティングされた１つまたは複数の回転ディスクを含む。これらのディスクは、毎分数千回転の速度で回転する。磁気アクチュエータは、回転ディスク上の磁気読み取り／書き込みデバイスの位置決めを行う。別の実施形態では、オフチップディスクメモリ１６２は、ソリッドステートディスク（ＳＳＤ）を利用する。ソリッドステートディスクは、ソリッドステートドライブとも呼ばれてよい。ＳＳＤはＨＤＤインタフェースをエミュレートしてよいが、ＳＳＤはＨＤＤにあるような電気機械デバイスではなく、ソリッドステートメモリを使用して永続データを記憶する。例えば、ＳＳＤにはフラッシュメモリのバンクが含まれる場合がある。
【００４２】
図２を参照すると、メモリコントローラ２００の一実施形態の一般的なブロック図が示されている。図示の実施形態では、メモリコントローラ２００は、通信ファブリックを介したコンピューティングリソースへのインタフェース２１０、受信したメモリアクセス要求及び受信した応答を記憶するキュー２２０、制御ユニット２５０、並びに、少なくともメモリバスのデータバスを介したメモリデバイスへのインタフェース２８０を含む。インタフェース２１０及び２８０のそれぞれは、各通信プロトコルをサポートする。
【００４３】
ある実施形態では、キュー２２０は、受信された読み取り要求に基づいて生成された要求を記憶するための読み取りタグキュー２３２及び読み取りデータキュー２３４を含む。さらに、キュー２２０は、受信された書き込み要求に基づいて生成された要求を記憶するための書き込みタグキュー２３２及び書き込みデータキュー２３４を含む。一実施形態では、キュー２２０は、キュー２３２〜２３８の１つまたは複数から選択されたスケジュールされたメモリアクセス要求を記憶するためのキュー２３９、または、統合されたキューが使用される場合は、統合されたキューを含む。
【００４４】
ある実施形態では、読み取りスケジューラ２５２は、読み取りタグキュー２３２から読み取りタグ要求を順不同で選択するための調整ロジックを含む。読み取りスケジューラ２５２は、サービス品質（ＱｏＳ）または他の優先度情報、経過時間、プロセスもしくはスレッド識別子（ＩＤ）、及び、同じメモリチャネルをターゲットにする、同じランクをターゲットにする、同じバンクをターゲットにする、及び／または、同じページをターゲットにするなど、他の記憶された要求との関係に基づいて、読み取りタグ要求２３２内の記憶されたタグ読み取り要求のメモリデバイスへの順不同の発行をスケジュールする。書き込みスケジューラ２５４は、書き込みタグキュー２３６のための類似の選択ロジックを含む。ある実施形態では、応答スケジューラ２５６は、優先順位に基づいて、メモリデバイスから受信された応答をコンピューティングリソースに順不同で発行するための同様のロジックを含む。
【００４５】
ある実施形態では、制御レジスタ２７０は、現在のモードの表示を記憶する。例えば、オフチップメモリデータバスとメモリデバイスは、所与の時間の読み取りモードまたは書き込みモードをサポートする。従って、トラフィックは現在のモード中に所与の単一方向にルーティングされ、データバスのターンアラウンド待ち時間後に現在のモードが変更されると方向が変わる。様々な実施形態では、制御レジスタ２７０は、読み取りモード中に送信するための読み取り要求の閾値数（読み取りバースト長）を記憶する。
【００４６】
ある実施形態では、キャッシュコントローラロジック２６０は、受信した単一のメモリアクセス要求を２つの別個のメモリアクセス要求に分割する。ある実施形態では、ロジック２６０は、受信したメモリアクセス要求に基づいてタグアクセス要求を生成し、受信したメモリアクセス要求に基づいてタグアクセス要求とは異なるデータアクセス要求を生成する。ある実施形態では、ロジック２６０は、タグアクセス要求及びデータアクセス要求のそれぞれが同じ受信されたメモリアクセス要求から生成されていることを特定する表示を記憶する。ある実施形態では、表示は、タグアクセス要求及びデータアクセス要求のそれぞれの中に記憶される。一実施形態では、表示は、フリーリストから生成された識別子、スレッドもしくはプロセス識別子、コンピューティングソース識別子、ターゲットアドレス、経過時間もしくはタイムスタンプなどの１つまたは複数から生成された一意の識別子である。他の実施形態では、ロジック２６０は、読み取りタグ要求のコンテンツを記憶する読み取りタグキュー２３２のエントリ、及び、それに対応する別個の読み取りデータ要求のコンテンツを記憶する読み取りデータキュー２３４のエントリなど、対応するキューエントリに表示を記憶する。書き込みタグキュー２３６及び書き込みデータキュー２３８は、書き込み要求に対する類似の表示を記憶する。
【００４７】
様々な実施形態では、メモリデバイスロジック２６２は、タグアクセス要求を処理することによって生成された情報が利用可能になるまで、データアクセス要求の送信を防ぐ。従って、データアクセス要求が送信される場合、タグアクセス要求はデータアクセス要求の前にメモリデバイスに送信される。ある実施形態では、ターゲットアドレス内のページインデックスをロジック２６２が使用して、メモリデバイスのターゲットとされたバンクの複数の行のうちの所与の行を識別する。ある実施形態では、所与の行は、所与の行の一部分内に１つまたは複数のタグを記憶する。
【００４８】
様々な実施形態では、ロジック２６２は、所与の行に記憶された１つまたは複数のタグと、タグアクセス要求に記憶された単一メモリアクセス要求のターゲットアドレスのタグとの間の部分的タグ比較を行う。一致が検出されない場合、タグミスが発生しており、ロジック２６２はデータアクセス要求のメモリデバイスへの送信をキャンセルする。ロジック２６２は、アクセスタイプに基づいて、読み取りデータキュー２３４または書き込みデータキュー２３８のいずれかにおけるキューエントリを無効にするか、割り当て解除する。タグミスの場合、ロジック２６２はまた、単一メモリアクセス要求を別個のシステムメモリまたはメインメモリに送信する。ある実施形態では、ロジック２６２は、部分的タグ比較の実行と同時に全体的タグ比較の実行を開始する。部分的タグ比較で一致が検出されなかった場合、全体的タグ比較はゲートで制御もしくは停止される、または、全体的タグ比較の続行が許可されるが、結果は破棄される。
【００４９】
ある実施形態では、部分的タグ比較に基づいて１つまたは複数のタグヒットが発生するとロジック２６２が判断すると、ロジック２６２は、所与の行の１つまたは複数のタグの全体を、タグアクセス要求のターゲットアドレスのタグの全体と比較する。全体的タグ比較の結果、タグミスが発生した場合、ロジック２６２は、部分的タグ比較から判別されたタグミスに使用される上記のステップを実行する。全体的タグ比較の結果、タグヒットが発生した場合、ロジック２６２はデータアクセス要求をＤＲＡＭ１７０に送信する。
【００５０】
次に図３を参照すると、ＤＲＡＭの最後のレベルのキャッシュストレージ構成にメモリアクセス要求を送信する方法３００の一実施形態が示されている。説明の目的のために、この実施形態（及び図４、５）のステップは、順番に示される。しかしながら、記載の方法の様々な実施形態では、記載する要素のうちの１つまたは複数は、同時に実行される、示されるのとは異なる順序で実行される、または、全体的に省略されることに注意されたい。他の追加の要素も必要に応じて実行される。本明細書に記載される様々なシステムまたは装置のいずれも、方法３００を実施するように構成されている。
【００５１】
１つまたは複数のコンピューティングリソースが、コンピュータプログラムまたはソフトウェアアプリケーションを実行する。コンピューティングリソースの例は前述した。コンピューティングリソースはコンピューティングリソース内のキャッシュメモリサブシステム内の所与のメモリアクセス要求のミスを判別する。コンピューティングリソースは、メモリコントローラを介してメモリアクセス要求をＤＲＡＭなどのシステムメモリに送信する。
【００５２】
コンピュータプログラムの実行中に（ブロック３０２）、コンピューティングリソース内でミスしたメモリ要求が検出される（ブロック３０４）。所与のメモリ要求は、少なくとも１つのメモリデバイスに結合されたメモリコントローラに送信され（ブロック３０６）、そこで、タグ要求と別個のデータ要求とに分割される（ブロック３０８）。タグ要求は、メモリデバイスに送信するために他のタグ要求と共にスケジュールされる（ブロック３１０）。タグ要求を処理することによって生成された情報が利用可能になるまで、データ要求は送信されない（ブロック３１２）。タグ要求は、スケジューラによって選択されたときにメモリデバイスに送信される（ブロック３１４）。ある場合では、所与のメモリ要求が唯一のメモリ要求であるため、タグ要求が唯一のタグ要求となる場合がある。このような場合、スケジューリングは複数のタグ要求からの情報を使用しない。ある実施形態では、単一のタグ要求及び単一のデータ要求のみが存在するとき、メモリ要求が読み取り要求であると、データ要求はタグ要求とともに推測的に送信される。最終的に全体的タグミスが発生した場合、読み出したデータは破棄できる。そうでない場合、方法４００及び方法５００の次の説明でさらに記載するように、データ要求を送信する前に部分的タグ比較が行われる。
【００５３】
図４を参照すると、ＤＲＡＭの最後のレベルのキャッシュストレージ構成に対するタグアクセス要求を処理する方法４００の別の実施形態が示されている。図示の例では、タグ要求がメモリデバイスに送信される（ブロック４０２）。前述のように、様々な実施形態では、キャッシュコントローラのロジック（例えば、図２のロジック２６０）は、単一の受信されたメモリ要求からタグ要求及び別個のデータ要求を生成する。次に、キャッシュコントローラロジックは、タグ要求をメモリコントローラのロジック、またはメモリデバイスのロジック（すなわち、図２のロジック２６２）に送信する。メモリコントローラ内のメモリデバイスのロジックは、タグ要求をメモリデバイスに送信する。タグ要求に応答して、タグ要求のアドレスに対応する所与の行が、ＤＲＡＭキャッシュ内で識別される（ブロック４０４）。所与の行は、アクティブ化トランザクションによって開かれる（ブロック４０６）。行からの情報は、行バッファに記憶される（ブロック４０８）。行バッファに記憶された１つまたは複数のタグの一部分が、タグ要求のアドレスのタグの一部分と比較される（部分的タグ比較）（ブロック４１０）。
【００５４】
部分的タグ比較に基づくタグミスが発生しない場合（条件ブロック４１２の「いいえ」分岐）、部分的タグヒットが発生し、別個のデータ要求が処理される（ブロック４１４）。一実施形態では、別個のデータ要求は読み取り要求であり、データ要求は、メモリデバイスに送信されることによって推測的に処理される。ある実施形態では、全体的タグ比較も行われる。ある実施形態では、メモリデバイスのロジックは部分的タグ比較を行い、キャッシュコントローラのロジックは全体的タグ比較を行う。データ要求が書き込み要求の場合、全体的タグ比較が行われるまで、データ要求の処理は行われない。行バッファに記憶されている１つまたは複数のタグ全体が、タグ要求のターゲットアドレスのタグ全体と比較される。様々な実施形態において、全体的タグ比較の待ち時間は、部分的タグ比較の待ち時間よりも長くなる。全体的タグ比較に基づいて全体的タグミスが判別された場合、読み取り要求を送信することによって読み出されたデータは破棄される。データ要求が読み取り要求であり、既にメモリデバイスに送信されている場合、読み出されたデータは破棄され、キャッシュコントローラのロジックは対応するメモリ要求をシステムメモリに送信する。データ要求がまだ送信されていない場合、キャッシュコントローラのロジックはデータ要求をキャンセルし、対応するメモリ要求をシステムメモリに送信する。全体的タグ比較に基づいて全体的タグヒットが判別された場合、データ要求（読み取り要求）を送信することで読み出されたデータは、対応するメモリ要求を処理するためにキャッシュコントローラのロジックに送信される。全体的タグヒットが発生し、データ要求が書き込み要求の場合、データ要求はメモリ要求を処理するためにメモリデバイスに送信される。そうではなく、部分的タグ比較に基づいてタグミスが発生したと判断された場合（条件ブロック４１２の「はい」分岐）、対応するデータ要求のメモリデバイスへの送信はキャンセルされ（ブロック４１６）、メモリ要求はシステムメモリに送信されて（ブロック４１８）、ＤＲＡＭキャッシュにフィルデータを提供する。様々な実施形態では、メモリコントローラのロジックとキャッシュコントローラのロジックとの間の上記の通信が使用され、上記のステップは、データの破棄、データ要求のキャンセル、または要求の処理に使用される。ある実施形態では、メモリデバイスのロジック（すなわち、図２のロジック２６２）は、部分的タグミスの表示をキャッシュコントローラのロジック（すなわち、図２のロジック２６０）に送信し、キャッシュコントローラのロジックは、推測的に読み出されたデータを破棄する、または、データ要求をキャンセルする。他の実施形態では、メモリデバイスのロジックは、推測的に読み出されたデータを破棄し、部分的タグミスの表示をキャッシュコントローラのロジックに送信する。
【００５５】
図５を参照すると、ＤＲＡＭの最後のレベルのキャッシュストレージ構成に対するタグアクセス要求とは別のデータアクセス要求を処理する方法５００の別の実施形態が示されている。タグ要求に対して部分的なタグヒットが判別される（ブロック５０２）。その後、行バッファの１つまたは複数のタグの全体が、タグ要求のアドレスのタグの全体と比較される（ブロック５０４）。全体的タグミスが発生したと判定された場合（条件ブロック５０６の「いいえ」分岐）、メモリ要求がシステムメモリに送信されて、ＤＲＡＭキャッシュにフィルデータを提供する（ブロック５０８）。上記のように、様々な実施形態では、データ要求が読み取り要求であり、既に推測的にメモリデバイスに送信されている場合、読み出されたデータは破棄され、キャッシュコントローラのロジックは対応するメモリ要求をシステムメモリに送信する。データ要求がまだ送信されていない場合、キャッシュコントローラのロジックはデータ要求をキャンセルし、対応するメモリ要求をシステムメモリに送信する。
【００５６】
全体的タグヒットが発生したと判断された場合（条件ブロック５０６の「はい」分岐）、データ要求がメモリデバイスに送信され（ブロック５１０）、データ要求のアドレスに対応するＤＲＡＭキャッシュ内の所与の行が識別される（ブロック５１２）。行バッファの対応するキャッシュラインに対する読み取りまたは書き込みアクセスは、アクセスタイプに基づいて行われ（ブロック５１４）、対応するメタデータが行バッファで更新され（ブロック５１６）、行バッファの情報に対応する行が閉じられる（ブロック５１８）。前述のように、ある実施形態では、データ要求が読み取り要求である場合、データ要求は、全体的タグ比較の完了前に、部分タグ比較に基づいてメモリデバイスに推測的に送信される。このような場合、全体的タグ比較で全体的タグミスが判別されると、読み出されたデータは破棄される。全体的タグ比較により、全体的タグヒットが判別された場合、読み取り要求を処理するために、読み出されたデータがより早く提供される。
【００５７】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、上述の方法及び／または機構を実施する。プログラム命令は、Ｃ言語などの高水準プログラミング言語でハードウェアの振る舞いを記述している。代替として、Ｖｅｒｉｌｏｇなどのハードウェア設計言語（ＨＤＬ）を使用する。プログラム命令は、非一時的なコンピュータ可読記憶媒体に記憶される。多くのタイプの記憶媒体が利用可能である。記憶媒体は、使用中コンピューティングシステムによってアクセス可能で、プログラム命令及び付随するデータをプログラム実行のためにコンピューティングシステムに提供する。コンピューティングシステムは、少なくとも１つまたは複数のメモリと、プログラム命令を実行するように構成された１つまたは複数のプロセッサとを含む。
【００５８】
上記実施形態が、実装態様の非限定的な例にすぎないことを強調しておく。上記の開示を十分に理解すると、多くの変形形態及び修正形態が、当業者に明らかになるであろう。以下の請求項は、全てのそのような変形及び修正を包含すると解釈されることが意図される。
【図１】
2021506033.tif 000003
【図２】
2021506033.tif 000004
【図３】
2021506033.tif 000005
【図４】
2021506033.tif 000006
【図５】
2021506033.tif 000007
【国際調査報告】
2021506033.tif 000008
2021506033.tif 000009
2021506033.tif 000010