(57)【要約】メモリコントローラは最後に用いたアドレスおよび関係するデータを格納するバッファを制御するが、バッファに格納したデータは、メインメモリに格納されたデータの列の一部(列ヘッドデータ)である。ＣＰＵにより実行されるメモリアクセスにて、バッファ及びメインメモリが同時にアクセスされる。バッファが要求されたアドレスを含まないなら、バッファは直ちに関係する列ヘッドデータをキャッシャメモリに与える。一方、同じ列アドレスは、バッファ内で見つかった要求されたアドレスに対応するメインメモリバンク内でアクティブにされる。バッファが列ヘッドデータを与えた後、要求されたデータの残りが直ちにメインメモリによりＣＰＵに与えられる。
2004520643.tif 000002
【特許請求の範囲】
【請求項１】
メモリシステムからデータを回復する方法であってこの方法は、
(ａ)メモリ位置のデータコンテンツに対するリード要求を受け取り、
(ｂ)前記データコンテンツの一部のために、前記メモリシステムのバッファ部を検索し、
(ｃ)前記データコンテンツの前記一部が前記バッファに格納されている場合に、前記バッファから前記一部を回復し、一方、同時に、前記メモリシステムのメインメモリ部から前記データコンテンツの残りの一部を回復し、
(ｄ)前記データコンテンツの前記部分が前記バッファに格納されていない場合に、メインメモリから前記データコンテンツの前記一部および前記残りの一部を回復することを含む。
【請求項２】
請求項１の方法であって、更に以下のステップを含む。
(ｅ)前記コンテンツの前記一部が前記バッファ内に格納されていないなら、前記バッファ内に、回復されたデータの前記一部および前記残りの一部を格納する。
【請求項３】
回復されたデータのコンテンツの前記一部が、前記バッファ内の登録部に取り替わる請求項２記載の方法。
【請求項４】
メモリ位置へのデータ書き込み要求が受信されたなら、前記データはメインメモリ内のメモリ位置に書き込まれ、そして前記データの一部が前記バッファに書き込まれる請求項２記載の方法。
【請求項５】
前記一部が前記バッファ内の登録部に取り替わる請求項４記載の方法。
【請求項６】
前記データは、前記メモリ位置と前記バッファとに同時に書き込まれる請求項４記載の方法。
【請求項７】
前記メモリ位置へのリード要求が受信される毎に、メインメモリ内の前記メモリ位置を含むメモリ列がラッチされる請求項１記載の方法。
【請求項８】
最後にアクセスされた前記バッファ内の登録部がマークされ、これにより、前記バッファ内のただ１つの登録部が、いずれかの時間にマークされる請求項１記載の方法。
【請求項９】
最後にアクセスされた前記バッファ内の登録部がマークされ、これにより、前記バッファ内のただ１つの登録部が、いずれかの時間にマークされ、そして、前記一部が、前記バッファ内のマークされた登録部以外の登録部に取り替わる請求項５記載の方法。
【請求項１０】
前記メインメモリ内の各メモリバンク内の特定のアクティブな列を維持することを更に含み、前記特定の列は、各メモリバンク内で最後にアクセスされた列である請求項１記載の方法。
【請求項１１】
列ヘッドをラッチするための列ヘッドバッファ回路であって、この列ヘッドは、メモリバンクに格納されたメモリ列の一部であり、前記ラッチする回路は、
各列ヘッド登録部は、メモリバンク内の列ヘッドに対応し、前記列ヘッド登録部を多数含む列ヘッドバッファと、
列ヘッドバッファ内に含まれる列ヘッド登録部の物理的アドレスをラッチする列アドレスラッチの多数と、
列ヘッド登録部を、到来する要求された列アドレスと比較するための列アドレスコンパレータとを備え、
到来する要求された列アドレスが前記多数のアドレスラッチの１つに適合する時、前記バッファ回路は、メモリコントローラによって要求される、到来る列アドレスを、前記多数の列アドレスラッチと比較し、アドレスラッチの適合に対応する列ヘッドデータ登録部は、前記メモリコントローラに送信される。
【請求項１２】
前記機構は、メモリバンク毎のラッチされた少なくとも１つの列アドレスをメモリコントローラに送出することにより、メモリバンク毎の少なくとも１つの列アドレスをアクティブに保つ請求項１１に記載のバッファ回路。
【請求項１３】
前記バッファ回路は、前記メモリコントローラを通じ、少なくとも１つのメモリバンクをアクティブに保つ請求項１１記載のバッファ回路。
【請求項１４】
メモリバッファのサブシステムであって、
多数のバッファ登録部をもつ少なくとも１つのバッファバンクと、
前記バッファのサブシステムを制御するバッファコントローラとを備え、
各バッファ登録部は、
メインメモリバンク内の位置に対応するメモリアドレスを含むアドレス領域と、
メインメモリバンクアドレスに位置する第１のｎバイトのデータを含むデータ領域とを含み、
前記メインメモリバンクアドレスに位置する前記データがＣＰＵにより要求された時、前記第１のｎバイトのデータは、前記バッファのサブシステムにより、前記ＣＰＵに与えられ、一方、前記データの残りは、メインメモリバンク内で前記メモリアドレスから回復される。
【請求項１５】
メモリシステムであって、
メインメモリの少なくとも１つのバンクと、
メモリコントローラと、
バッファと、および
バッファコントローラとを備え、
前記メモリコントローラは、メインメモリの少なくとも１つのバンクにて制御し、
前記バッファは、多数のバッファ登録部を含み、
各バッファ登録部は、アドレス部分とデータ部分を含み、
前記データ部分は、メインメモリの少なくとも１つのバンク内に第１のデータ部分を備え、前記アドレス部分は、メモリ位置を参照するアドレスを備える。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、一般にコンピュータシステムにおける中央処理ユニット(ＣＰＵ)とメインメモリ間でデータを転送するための方法に関する。より詳しくは、この発明は、待ち時間を隠す機構を用いることにより、メインメモリへのアクセスで待ち時間を最小にするための種々の実行を開示する。
【背景技術】
【０００２】
マイクロプロセッサの速度および演算パワーは、技術の進歩に従って継続的に増しつつある。演算パワーでのその増大は、データの転送および、マイクロプロセッサおよびメインメモリ間のプロセッサ速度での命令に依存する。不幸にも、現在のメモリシステムは、そのデータをプロセッサに対して要求されるような速度で与えることはできない。
【０００３】
プロセッサは、速度の遅いメモリシステムに対して待ち状態にすることにより、待たなくてはならず、そのため、プロセッサは自身の規格速度よりもかなり遅い速度にてプロセッサを実行させている。この問題は、システムの全体的な特性を低下させる。この傾向は、プロセッサ速度とメモリ速度との間のギャップが大きくなっているために、悪化させている。プロセッサにおけるいかなる特性改善もシステム全体の重要な特性が得られなくなるポイントにまもなく到達しようとしている。メモリシステムはそのため、システムの特性を限定する要素となっている。
【０００４】
Amdahlの法則によれば、システムの特性改善は、改善できないシステムの部分によって制限される。この理由は次の例で示される。
プロセッサの時間の５０％がメモリアクセスに使用され、残りの５０％が内部の演算サイクルで使用されるなら、Amdahlの法則は、プロセッサの速度が１０倍に増しても、システムの特性は単に１．８２倍しか増大しないと述べている。Amdahlの法則は、コンピュータシステムの部分を強化することにより、得られた速度上昇は、次式により与えられる。
【数１】
2004520643.tif 000003
【０００５】
強化された部分：強化が用いた時間の比率
強化された速度上昇：強化された部分を、元の部分の特性と比較した時の速度上昇
【０００６】
この例のように、プロセッサは、内部演算が時間の５０％しか占められていないので、プロセッサの強化された速度は、その時間の５０％について利点となる。
【０００７】
Amdahlの法則は、上記の数値を採用すると次式のようになる。
【数２】
2004520643.tif 000004
【０００８】
強化されたプロセッサが元のプロセッサに比べて１０倍であっても、その強化は、時間の５０％についてのみ適用されないためである。速度上昇の計算は、元のシステムの特性と比較して１．８１８倍の全体的な特性強化が得られる。
【０００９】
もし、強化されたプロセッサが、元のプロセッサの速度の１００倍ならば、Amdahlの法則は、次式のようになる。
【数３】
2004520643.tif 000005
【００１０】
このことは、システムの特性は、メモリへのおよびメモリからの５０％のデータアクセスにより制限されることを意味する。明白なように、メインメモリシステムの速度に対してプロセッサの速度が増大するにつれ、利点が減少する傾向がある。
【００１１】
この問題を解決するためにキャッシュメモリを使用しており、プロセッサによりアクセスされそうなデータを、プロセッサ速度に対応する高速のキャッシュメモリに移動している。第１レベルのキャッシュ(Ｌ１キャッシュ)および第２レベルのキャッシュ(Ｌ２キャッシュ)からなるキャッシュの階層を形成するために種々のアプローチが提案されてきた。理想的には、プロセッサにより最もアクセスされそうなデータは最速のキャッシュレベルに格納すべきである。レベル１(Ｌ１)およびレベル２(Ｌ２)の双方のキャッシュは、ダイナミックランダムアクセスメモリ(ＤＲＡＭ)を上回る利点の故に、スタティックランダムアクセスメモリ(ＳＲＡＭ)技術によって形成される。キャッシュの設計及びキャッシュが何を目標とするかの問題で最も重要なことは、プロセッサにより次に要求されるデータがキャッシュシステムに高い確率で格納されることである。キャッシュにてこの要求されたデータの選出の確率を高めるために、または“的中する”キャッシュを持つために、２つの主な法則：一次的な位置および空間的な位置が機能する。
【００１２】
一次的な位置とは、最も平均的なプロセッサ動作のために、プロセッサにより次に要求されるデータが高い確率で直ぐに要求されるという概念である。空間的な位置とは、プロセッサにより次に要求されるデータが、現在アクセスされているデータの次に高い確率でアクセスされるという概念である。
【００１３】
キャッシュの階層は、それゆえ、現在アクセスされているメインメモリデータから伝送すると共に、物理的に近接するデータから転送することにより、これらの２つの概念の利点を取るものである。
【００１４】
しかしながら、キャッシュメモリシステムは、高速のプロセッサをより低速なメインメモリから完全に切離すことはできない。プロセッサにより要求されたアドレスおよび関係したデータは、キャッシュ内には見つからず、キャシュ“ミス”とよばれる事態が発生する。このようなキャッシュミスにおいては、プロセッサは、データを得るためにより低速なメインキャッシュをアクセスする。これらのミスは、プロセッサの時間の一部を示しており、これは、システム全体の特性改善を制限する。
【００１５】
このキャッシュミス問題を対処するために、レベル２のキャッシュはしばしば全体的なキャッシュ階層を備える。レベル２のキャッシュの目的は、レベル１のキャッシュを用いずに、高速アクセスのためにプロセッサで利用できるデータ量を拡大することである。レベル２のキャッシュは、典型的にプロセッサ自身と同じチップ上に形成される。レベル２のキャッシュは、オフチップ(つまり、プロセッサおよびレベル１のキャッシュと同じダイ(die)上にない)なので、より大きくなり、レベル１のキャッシュとメインメモリの速度の間の速度で実行する。しかしながら、レベル１およびレベル２のキャッシュの使用を適正にし、そして、キャッシュメモリシステムとメインメモリシステムとの間でデータの一貫性を維持して、最新のデータがプロセッサで使用できるようにするために、キャッシュおよびメインメモリの双方は、常にアップデートされなくてはならない。もし、プロセッサメモリのアクセスがリードアクセスなら、このことは、プロセッサがメモリからデータまたはコードをリードする必要があることを意味する。もしこの要求されたデータまたはコードがキャッシュで見つからないならば、そのキャッシュコンテンツはアップデートされなくてはならず、一般的に同じキャッシュコンテンツを要求する処理は、メインメモリからのデータまたはコードで置き換えられなくてはならない。キャッシュコンテンツとメインメモリのコンテンツとの間で一貫性を確実にするために、２つの技術：ライトスルーおよびライトバックが用いられる。
【００１６】
ライトスルーの技術は、書き込まれていたデータがキャッシュ内で見つかったとき、キャッシュおよびメインメモリの双方にデータを書き込む。この技術は、キャッシュコンテンツまたはメインメモリのいずれのデータがアクセスされようと、アクセスされたデータは同一であることを確実にする。ライトバックの技術は、メモリへの書き込みアクセス時に、キャッシュにのみデータを書き込む。キャッシュ内のデータとメインメモリ内のデータとの間で一貫性を確実にするために、これらのキャッシュコンテンツが上書きの時、特定のキャッシュ位置のキャッシュコンテンツがメインメモリに書き込まれる。しかしながら、キャッシュコンテンツがメモリ書き込みのアクセスにより置き替えられない時は、キャッシュコンテンツはメインメモリに書き込まれない。特定のキャッシュ位置のキャッシュコンテンツがメモリへの書き込みアクセスによって置き換えられていないなら、キャッシュコンテンツはメインメモリに書き込まれない。特定のキャッシュ位置のキャッシュコンテンツがメモリへの書き込みアクセスによって置きかえられたかを決定するために、フラッグのビットが用いられる。もし、キャッシュコンテンツがメモリへの書き込みアクセスにより置き換えられたなら、そのフラッグのビットがセットされるか、または“ダーティ”とみなされる。そのため、特定のキャッシュ位置のフラッグビットが“ダーティ”なら、新しいデータで上書きされる前に、そのキャッシュ位置のキャッシュコンテンツがメインメモリに書換えられなくてはならない。
【００１７】
キャッシュの的中率を増すための別のアプローチは、その結合率を増すことにある。結合率とは、キャッシュアクセスの間にサーチされた(つまり的中のためにチェックされた)キャッシュ内のライン数のことである。一般に、結合率がより高いと、キャッシュの的中率はより高くなる。直接にマップされるキャッシュシステムは、１：１のマッピングを持ち、それにより、キャッシュのアクセスの間に、唯一のラインが的中のためにチェックされる。スペクトラムの他方の端部にて、十分に関係したキャッシュが、典型的にコンテンツアドレス可能メモリ(ＣＡＭ)を用いて実行され、これにより、すべてのキャッシュライン(およびそれゆえ、すべてのキャッシュ位置)がサーチされ、そして、単一のキャッシュアクセスの間に同時に比較される。種々のレベルの結合率が実行される。
【００１８】
最終的にシステム全体の特性の改善を狙ったキャッシュ特性を改善するこれらのアプローチにも拘わらず、キャッシュ特性は、サイズ、結合率および速度のようなパラメータを変えることによる段階まで改善されるのみであることに気付くべきである。より低速なメインメモリを改善するための試みよりも、キャッシュシステムまたはシステムの高速メモリの改善を狙ったこのアプローチは、最後には飽和点に到達し、キャッシュの改善を通じたシステム全体の特性を改善する別のあらゆる試みも、システムの特性改善のレベルを低下を発生させる。おそらく、キャッシュがメインメモリと同程度に大きいなら、メインメモリの特性は、システム全体の特性での要因として排除され得るが、シリコンチップエリアの条件では、法外に高価となる。結果として、最小サイズのキャッシュでシステムの最大特性を得る方法が必要とされる。
【００１９】
プロセッサとメインメモリ間の速度の不適合は、近年、メインメモリの特性に重く依存するマルチメディアのような新しいアプリケーションのソフトウエアで問題になりつつある。不幸にも、メインメモリの特性は、このようなアプリケーションでの頻度の高いランダムなデータアクセスにより、制限される。キャッシュシステムはそれゆえ、このようなアプリケーションに使用された時、より効果が少なくなる。
【００２０】
プロセッサとメインメモリ間の速度の不適合を軽減するために、メインメモリの特性を改善する多数の試みが行われてきた。これらは、メインメモリの速度にいくらかの改善をもたらした。ＤＲＡＭへの初期の改善策は、ＤＲＡＭからアクセスサイクルにつき、複数ビットを得るものであり(一続きの(nibble)モード、又はより広いデータの固定出力)、内部的に種々のＤＲＡＭの動作をパイプライン処理するか、データを断片化し、これにより、いくつかのアクセス(ページモード、高速ページモード、拡張されたデータ出力(ＥＤＯ)モード)に対して、いくつかの動作を排除している。
【００２１】
ページモードは、ＤＲＡＭ内の列アドレスをラッチし、それをアクティブに維持することを含み、これにより、センスアンプに格納されるべきデータのページを有効的に排除している。高速ページモードでの行アドレスストロボ(ＣＡＳ)信号により、行アドレスがその後、ストロボ化されるページモードと違って、列アドレスストロボ(ＲＡＳ)信号がアクティブにされると同時に、行アドレスバッファがアクティブにされ、そして、明白なラッチとして作用し、行アドレスストロボの前に内部行データのフェッチを生じさせる。データ出力バッファのイネーブル化は、ＣＡＳがアクティブにされた時に達成される。新しい列をアクセスするために要求される列アドレスアクティブ化時間が同列上に留まることりより、排除されるので、これらの異なるページモードは、それゆえ、純粋なランダムアクセスモードに比べより高速である。
【００２２】
これに続く改善は、拡張されたデータ出力モードまたはＥＤＯモードを通じて、およびバーストＥＤＯモードにて実現されている。バーストＥＤＯモードは、各サイクルで新しいアドレスを与えることなく、連続的なデータのページがＤＲＡＭから復元されることを可能にする。しかしながら、バーストＥＤＯモードは連続的な情報のページを要求するグラフィックのアプリケーションでの使用に適するが、完全にサポートできるランダムアクセスを要求するメインメモリのアプリケーションに対してはより有用性が欠ける。
【００２３】
ＤＲＡＭ設計でのこのような改善は、より高い帯域幅でのアクセスを提供するが、それらは次の問題を呈する。
いくつかの散らばったメモリアクセスは、同じアクティブな列内でマッピングせず、それにより、高速ページモードの使用から利益を排除するので、プロセッサは新しいＤＲＡＭをより高い帯域幅で完全に用いることはできない。
新しいＤＲＡＭの設計はいくつかのバンクを持ってもよいが、高いページの的中率を持つためには、散らばったメモリアクセスを持つ典型的なプロセッサの環境に対しては十分な個数でない。
現在のプロセッサおよびシステムは、ＤＲＡＭへのメモリアクセスを遮り、これにより、これらのアクセスを局所的に低減する(第１および第２のレベルの)大きいキャッシュを使用し、このことが、更にアクセスを分散させ、そして、結果、ページの的中率を減じる。
【００２４】
システムの特性を改善するには、キャッシュシステムは無能であり、このことが、メインのＤＲＡＭメモリシステムの特性改善に更なる努力を必要とさせている。これらの努力の１つは、ＳＤＲＡＭ(同期したＤＲＡＭ)を用いることである。ＳＤＲＡＭは、高速のページモードを使用するアクセスに対する高い帯域幅を与えるために、多数のバンクおよび同期したバスを使用する。多数のＳＤＲＡＭバンクを備えることで、１つ以上のアクティブな列がプロセッサに、メモリの異なる部位からの高速なアクセスを与える。しかしながら、高速ページモードが使用されるためには、これらのアクセスは、バンクのアクティブな列内に存在しなくてはならない。さらには、メモリの帯域幅を増すために、単に複数のバンクへのアクセスすることへの依存は、バンク(この中にメモリが分割される)の数に基づき全体的に制限されることになる。
【００２５】
一般的に、制限されたバンク数、メインメモリ内の既にアクティブにされた列へのアクセスを遮る外部キャッシュシステム、および、アクセスされたデータの劣る空間的な位置、これらのすべてが、ＳＤＲＡＭからの特性の利益を制限する。
【００２６】
別の努力は、キャッシュＤＲＡＭ(ＣＤＲＡＭ)を用いることである。この設計は、ＤＲＡＭ内にＳＲＡＭに基づくキャッシュを組み込む。大きいブロックのデータは、その結果、単一のクロックサイクル内で、キャッシュからＤＲＡＭのアレーに、または、ＤＲＡＭからキャッシュに転送され得る。しかしながら、この設計は、外部の遮断するキャッシュ、およびデータ位置の低さにより引き起こされる、ＤＲＡＭ内のキャッシュの的中率の低さの問題に直面する。キャッシュのタグ、コンパレータおよびコントローラを要求することにより、内部キャッシュを制御し動作させるために、外部キャッシュに複雑さをも追加する。ＤＲＡＭに対して最適化された半導体製造プロセスにて、ＳＲＡＭをＤＲＡＭに統合させるために、多くのダイ(die)エリアの状況のためにかなりなコスト増となる。
【００２７】
より新しい設計では、プロセッサとＤＲＡＭをマージさせることであり、遮断するキャッシュ問題を排除し、プロセッサに完全なＤＲＡＭの帯域幅を与えている。このアプローチは、現在のプログラミングモデルにより使用された、散らばったメモリアクセスの性質のために、システムに複雑さを増し、低速と高速の技術を混合し、プロセッサのためのスペースを制限し、そして、高いＤＲＡＭの帯域幅を完全に用いることができない。
【００２８】
ＮＥＣの新規な仮想チャンネルＤＲＡＭ設計は、完全に結合した１６のチャンネルを用いており、これは、種々のソースによる使用のために、複数のコードおよびデータのストリームをトラックするように、高速のＳＲＡＭで形成される(非特許文献１)。本質的に、仮想チャンネルのＤＲＡＭは、ページモードの概念の拡張を示しており、１つのバンク／１つのページの限定が除去されている。結果として、多数のチャンネル(またはページ)が他のチャンネルから独立したバンク内に開放され得る。ＣＰＵは、例えば、仮想チャンネルのＤＲＡＭバンク内にランダムに配置された１６１ｋのチャンネルまでアクセスできる。結果として、ページ配分に対する繰返しのコンフリクトを生じさせることなく、複数のデバイス間のデータの移動が持続され得る。この仮想チャンネルのメモリは、各チャンネルに対応するメインメモリ位置がＣＰＵによりトラックされることを要求し、これにより、その制御機能を複雑化する。更に、そのＣＰＵは、そのチャンネルへのデータの有効的なプリフェッチのために、予測的なスキームを要求する。仮想チャンネルのＤＲＡＭはデータをチャンネルに転送するために高速ページモードを用いることを要求し、そして、ＶＣＤＲＡＭは、最終的に、キャッシュＤＲＡＭのように、関係するバッファにより消費される追加的なダイエリアのために高価となる。更に、備えられたキャッシュの量は、キャッシュ／ＤＲＡＭの比が通常固定されているので、いくつかのアプリケーションでは適切でないかもしれない。例えば、メインメモリがアップグレードされる時、追加的なキャッシュは必要とされず、そのため、システムのコストは無駄に高価となる。
【００２９】
近年、解決に向けたものとして、ＤＲＡＭの帯域幅を最大化するために、物理的なメモリアドレスを再マッピングするためのソフトウエアコンパイラを用いたようなソフトウエアが提案されている。これは、予知できる動作を有する特定のアプリケーションに対しては有利であるが、それはソフトウエアを交換することを要求し、それにより、複雑な問題を生じる。これらの努力は、高いレベルのアプローチを用い、そのため、ソフトウエアをハードウエアに合わせるために、アプリケーションのソースコードが修正される。このアプローチは、高価で時間を消費するだけでなく、すべてのソフトウエアに適用できない。
【００３０】
上述から、それゆえ何が要求されるのかというと、単純化されたメモリ制御機構に基づく解決であり、メインメモリに対し、簡単で、コストが有効で標準のＤＲＡＭを用い、広範囲なソフトウエアの書換えまたは複雑なアドレスのスキームを必要としないものである。このような解決は、理想的には、一時的および空間的な位置の双方の利点をとるべきである。最近アクセスされたデータは容易にアクセスできるのみならず、そのような最近にアクセスされたデータの接近した位置のデータも容易にアクセスできるべきである。
【非特許文献１】NEC Electronics Inc. Product Number Search「μPD4565161」
【発明の開示】
【課題を解決するための手段】
【００３１】
上述した問題への解決は、高速ページモードおよび高速のバッファまたはキャッシュの概念の双方の利点をもつ方法および装置に見出される。メモリコントローラは、最も最近に使用されたアドレスおよび関係したデータを格納するバッファを制御するが、そのバッファに格納されたデータは、メインメモリに格納されたデータの列の部分のみ(列ヘッドデータと記す)である。ＣＰＵにより実行されたメモリアクセスにおいて、バッファおよびメインメモリの双方が同時にアクセスされる。もし、そのバッファが要求されたアドレスを含むなら、そのバッファは直ちに、関係した列ヘッドデータをキャッシュメモリに急きょ与えることを開始する。一方、同じ列アドレスが、そのバッファ内で見出された要求されたアドレスに対応するメインメモリバンク内で能動化される。そのバッファが列ヘッドデータを与えた後、急きょ要求されたデータの残りはメインメモリによってＣＰＵに供給される。この方法では、小さい容量のバッファメモリが、より大きな量のＬ２キャッシュとなる機能を与えることができる。
【００３２】
第１の態様では、この発明は、メモリシステムからデータを回復する方法を提供し、前記方法は、
(ａ)メモリ位置のデータコンテンツに対するリード要求を受け取り、
(ｂ)前記データコンテンツの一部のために、前記メモリシステムのバッファ部を検索し、
(ｃ)前記データコンテンツの前記一部が前記バッファに格納されている場合に、前記バッファから前記一部を回復し、一方、同時に、前記メモリシステムのメインメモリ部から前記データコンテンツの残りの一部を回復し、
(ｄ)前記データコンテンツの前記部分が前記バッファに格納されていない場合に、メインメモリから前記データコンテンツの前記一部および前記残りの一部を回復することを含む。
【００３３】
第２の態様では、この発明は、列ヘッドをラッチするために列ヘッドバッファ回路を提供し、列ヘッドは、メモリバンクに格納されたメモリの列の部分であり、前記ラッチする回路は、
各列ヘッド登録部は、メモリバンク内の列ヘッドに対応し、前記列ヘッド登録部を多数含む列ヘッドバッファと、
列ヘッドバッファ内に含まれる列ヘッド登録部の物理的アドレスをラッチする列アドレスラッチの多数と、
列ヘッド登録部を、到来する要求された列アドレスと比較するための列アドレスコンパレータとを備え、
到来する要求された列アドレスが前記多数のアドレスラッチの１つに適合する時、前記バッファ回路は、メモリコントローラによって要求される、到来の列アドレスを、前記多数の列アドレスラッチと比較し、アドレスラッチの適合に対応する列ヘッドデータ登録部は、前記メモリコントローラに送信される。
【００３４】
第３の態様では、この発明は、メモリバッファのサブシステムを提供し、これは、
多数のバッファ登録部をもつ少なくとも１つのバッファバンクと、
前記バッファのサブシステムを制御するバッファコントローラとを備え、
各バッファ登録部は、
メインメモリバンク内の位置に対応するメモリアドレスを含むアドレス領域と、
メインメモリバンクアドレスに位置する第１のｎバイトのデータを含むデータ領域とを含み、
前記メインメモリバンクアドレスに位置する前記データがＣＰＵにより要求された時、前記第１のｎバイトのデータは、前記バッファのサブシステムにより、前記ＣＰＵに与えられ、一方、前記データの残りは、メインメモリバンク内で前記メモリアドレスから回復される。
【００３５】
第４の態様では、この発明はメモリシステムを提供し、これは、
メインメモリの少なくとも１つのバンクと、
メモリコントローラと、
バッファと、および
バッファコントローラとを備え、
前記メモリコントローラは、メインメモリの少なくとも１つのバンクにて制御し、
前記バッファは、多数のバッファ登録部を含み、
各バッファ登録部は、アドレス部分とデータ部分を含み、
前記データ部分は、メインメモリの少なくとも１つのバンク内に第１のデータ部分を備え、前記アドレス部分は、メモリ位置を参照するアドレスを備える。
【発明を実施するための最良の形態】
【００３６】
添付した図面に関連して以下の詳細な記述を読むことにより、本発明をより理解することができるであろう。
【００３７】
図１を参照すると、この発明の論議をコンテクストに導入する目的のために、通常のＣＰＵ−メインメモリシステム１０が示されている。このシステムは、一般に、組み込みのレベル１のキャッシュ１７を有するＣＰＵ１５、キャッシュおよびメインメモリコントローラ２０、レベルＬ２のキャッシュ２５およびメインメモリ３０からなる。ホストデータバス１６は、ＣＰＵとメインメモリ３０とレベルＬ２のキャッシュ２５との間のデータを転送する。ホストアドレスバス１８は、メモリコントローラ２０およびレベルＬ２のキャッシュ２５にアドレス情報を与える。同様に、データバス２１およびアドレスバス２２は、コントローラバス２３を通じ、キャッシュおよびメモリコントローラ２０の制御に基づき、レベルＬ２のキャッシュをホストバデータス１６およびアドレスバス１８に接続する。メインメモリ３０は、メモリデータバス２６を通じホストデータバス１６に結合され、そして、アドレスバス２７および制御バス２８を通じコントローラ２０からアドレスおよび制御情報を受け取る。
【００３８】
典型的なリード／ライトデータの動作では、ＣＰＵ１５はリードデータ情報を例えばメモリコントローラ２０に出力し、そして、アドレス位置を与え、これをコントローラは列および行のアドレスおよびメモリ制御信号に変換する。コントローラ２０は、また、レベル２のキャッシュに対し、アドレスおよび制御情報を発生する。データがレベル１のキャッシュに見当たらない場合は、そのコントローラ２０は、所望のデータをメインメモリだけでなく、レベル２のキャッシュに対して探す。もし、レベル２のキャッシュにデータが見つかった場合、そのデータは、データバス２１を通じてホストデータバス１６に供給され、そのデータは次にＣＰＵ１５に戻す。そのデータは、再度要求されることを予測して、同時にレベル１のキャッシュに書き込まれる。もしそのデータがレベル１のキャッシュまたはレベル２のキャッシュに見当たらない場合(つまり、レベル１およびレベル２のキャッシュの双方でキャッシュミスが発生した時)、コントローラ２０は、ページモードアクセスを用い、メインメモリ３０からデータを直接にアクセスするように仕向ける。メモリデータバス２６を通じデータがＣＰＵ１５に転送されるのと同時に、ＣＰＵが再度そのデータを要求することを予測して、そのデータはレベル１のキャッシュ１７にもコピーされる。
【００３９】
上述したように、レベル１およびレベル２のキャッシュおよびメモリコントローラからなるこのような通常のシステムは、パフォーマンスを低下させる兆候を示す。今日のアプリケーションは、より高速およびランダム性を要求し、それにより、キャッシュミスおよびメインメモリアクセスを頻繁に発生させる。
【００４０】
図２Ａおよび２Ｂを参照すると、この発明の実施例に基づく待ち時間を隠すバッファ１００が示される。このバッファは、図１のＣＰＵ−メインメモリシステムと共に使用され得る。
【００４１】
そのバッファ１００は、少なくとも１つのバッファバンク１１０とバッファコントローラからなる。この発明の実施例に基づく各バッファバンクは、Ｎ通りの組みで結合したキャッシュメモリで構成され、そのキャッシュメモリは、多数のラインを含む。各バッファは、要求されたアドレスを、バッファバンクに格納されたアドレスと比較するコンパレータ１３を持つ。各ラインは、組みのアドレス部１５０、タグのアドレス部１６０、最後に使用されたＭＲＵフラグビット１８０およびデータ部１７０を含む。組みの部分１５０は、バッファラインに格納されたメインメモリアドレス位置の下位の命令ビットに関するものである。タグ部１６０は、バッファラインに格納されたメインメモリアドレス位置の上位の命令ビットに関するものである。大部分の組みの結合したキャッシュシステムのように、典型的にバッファコントローラは、上位の命令タグビットをアドレスするために、組みのビットを使用する。ＭＲＵフラグビット１８０は、新しいアドレス登録部が挿入された時、どのバッファ登録部を取替えるべきでないかを決定するために使用される。そのデータ部は、組みおよびタグのビットにより特定されたメモリアドレスに関係したデータ(列ヘッド)を含む。１つの実施例では、列ヘッドは、メインメモリ内の列のデータにおける所望のデータビット数の部分のみ含む。たとえば、データの列ヘッドおよびその残りがメインメモリに格納されようとする時、バッファバンク１１０は、典型的な６４バイトキャッシュラインの最初の４データワードを格納する。その結果、バッファバンクは、キャッシュラインの１／４または全キャッシュラインのいくつかの部分を格納する。
【００４２】
ＭＲＵフラグ１８０に関しては、ＭＲＵフラグビットの組みを有するバッファバンク登録部は、最も最近に使用された登録部であり、取り返るべきでない。これは、一時的な位置の参照は、この登録部がアクセスされるべき次の登録部であることを示すためである。次に要求されたアドレスに対して、バッファは、ＭＲＵフラッグビットの組みを持たない登録部に対してサーチされる。バッファ登録部がアクセスされた後で、ＭＲＵフラグビットが、特定のバッファ登録部に対してセットされるので、もし、古いバッファ登録部がそれのＭＲＵフラグビットの組みを持つなら、この古いバッファ登録部は、その後、それのＭＲＵフラグビットをリセットし、新しいバッファ登録部を、組みのＭＲＵフラグビットを有する単なる登録部としてそのままにする。バッファ内の各関連する組みに対して、１つのＭＲＵフラグビットがアクティブになり得る。
【００４３】
バッファバンクの動作を示すために、１つの例が与えられる。バッファバンクは、デコードされたメモリアドレスをメインメモリコントローラから受け取る。このメモリアドレスの低い命令ビットは、どのバッファバンクおよび、前記バンク内のどの組みが適合するかを決定するために用いられる。メモリアドレスの高い命令ビットはコンパレータ１３０に与えられる。選択されたバッファラインのタグ領域もコンパレータ１３０に与えられる。もし、適合するものがあれば、バッファラインに格納の要求されたメモリアドレスは、適合する。その結果は、バッファコントローラに報告され、そしてデータはバッファ内でアクセスされる。
【００４４】
図２Ｂを参照すると、バッファコントローラ１０が図示されている。第１のグループの信号１９０は、バッファバンクから与えられ、選択されたバッファラインがそのＭＲＵの組みであるかそうでないかに拘わりなく、アドレスコンパレータの出力(アドレスの適合、不適合に拘わらない)を含むことができる。第２のグループの信号２００は、メインメモリコントローラから与えられる。これらは、メモリアクセスがリードまたはライトに拘わりなく、また、要求された列がアクティブまたはそうでないに拘わりなく、メモリアクセス要求の存在を示すような信号を含むことができる。
【００４５】
第３のグループの信号２１０は、バッファコントローラにより発生され、バッファバンクに供給される。これらは、バッファバンクへのリードまたはライト信号、およびＭＲＵビットのセッティングを含むことができる。第４のグループの信号２２０は、バッファコントローラにより発生され、メモリコントローラに供給される。これらは、メモリコントローラに対してメインメモリ内の特定の列をラッチするよう指令する信号、メインメモリ内の位置にデータを書き込む信号、または、指定されたオフセットでメインメモリ内の位置にアクセスする信号を含むことができる。
【００４６】
上述したバッファは、図１で示したＣＰＵメモリシステムの種々の部品で置き換え可能である。図３Ａ、３Ｂ、３Ｃおよび３Ｄを参照すると、待ち時間を隠すバッファの可能性ある配置が示されている。
【００４７】
図３Ａは、図１のすべての要素に、メモリコントローラ１２０の外部に位置する待ち時間を隠すバッファ１００を備えたものからなる。当業者には周知なごとく、図３Ａの各ブロックは、個別のチップまたはモジュール上に形成できる。例えば、メインメモリは、典型的に、メインメモリＤＩＭＭモジュール(Dual Inline Memory Module)を用いて作製され、そして、ＣＰＵおよびレベル１のキャツシュは典型的に、単一のモノシリックのマイクロプロセッサ内に形成される。典型的に個別のチップであるメモリコントローラは、通常、個別のチップとしてレベル２のキャッシュを含むチップセット内のマイクロプロセッサと一体に集積化される。図３Ａに示された実施例では、待ち時間を隠すバッファは、前記チップセットに対して統合化された別のチップ上に形成され、場合によっては、レベル２のキャッシュを置き替えるか、またはレベル２のキャッシュと関連して用いられる。図３Ｂは、ＤＲＡＭに基づくメインメモリと同一のチップ上にバッファが集積化されている別の可能性のある実施例を示す。図３Ｃは、レベル１のキャッシュおよびＣＰＵと同一のチップ上にバッファが集積化されている実施例を示す。最後に、図３Ｄは、メモリコントローラに集積化されたバッファを備え、レベル２のキャッシュを完全に置き換えた好ましい実施例を示す。これらの４つの実施例が示されているが、当業者は、ここで開示されたバッファの利点および概念を採用して、他の可能な結合を想到できるであろう。
【００４８】
図４は図３Ｄに対応するこの発明の好ましい実施例のより詳細な図面を示す。図４から理解されるように、複数のバッファバンク１１０は、メモリコントローラ２０に集積化されている。図４では単一のコンパレータ１３０が示されているが、各バッファバンク１１０はそれに関係したコンパレータを持つことに注目すべきである。
【００４９】
この発明の好ましい実施例にに基づくメモリコントローラ２０は、アドレスデコーダ２３０、メインメモリおよびキャッシュコントローラ２４０、バッファバンク１１０、コンパレータ１３０およびバッファコントローラ１２０を備える。アドレスデコーダ２３０は、要求されたアドレス(MemAddr)およびメモリアクセス信号(MemAcc)をＣＰＵから受け取る。そのアドレスデコーダ２３０は、要求されたメモリアドレスから次に、メインメモリ内の要求されたアドレスの列アドレスおよひ行アドレスを決定する。
【００５０】
要求されたメモリアドレスは、また、バッファ１１０に送出する。理解されるように、要求されたメモリアドレスの一部(SET)は、バッファバンク１１０を参照するために用いられる。要求された同じメモリアドレスの他の部分(TAG)は、コンパレータ１３０に送出される。コンパレータ１３０は、要求されたタグの分野を、バッファ１３０内のセット位置に格納されたタグと比較する。もし、要求されたアドレスのタグが、キャッシュ内のセット位置でのタグに適合するなら、バッファの的中が起きる。その位置が適合しないなら、バッファミスが起きる。セットの分野がバッファ１１０内のタグの分野をインデックスするために用いられる。バッファ１１０は、Ｎ通りの組みの関係するキャッシュメモリを用いて実行されるので、この検索および比較動作はすべてのＮ個のバッファで同時に起きる。行ったＮ回の比較がコンパレータ１３０からバッファ的中(BUFFER HIT)が生じる。比較結果によるバッファ的中はバッファ制御ブロック１２０に入力され、このブロックは制御信号バッファＯ／Ｅ、バッファＲ／ＷおよびＣＴＲＬを発生してメインメモリ及びキャッシュコントローラのブロック２４０に供給する。もし的中があれば、コンパレータ１３０は、バッファ的中ラインを経由してメインメモリおよびキャッシュコントローラ２４０へ的中を示す。
【００５１】
メインメモリ及びキャッシュコントローラ２４０は、バッファコントローラ１２０から制御信号(CTRL)を、そして、ＣＰＵからMemAce信号を受け取る。メインメモリおよびキャッシュコントローラ２４０は、受信した制御信号に基づき、メインメモリを能動化してアクセスするために、要求された信号を発生する。これらの要求された信号は、/RAS(列アドレスストローブ)、/CAS(行アドレスストローブ)および/CS(チップセレクト)の信号を含む。これらの信号は、当業者には周知である。
【００５２】
図５を参照すると、図４のメモリコントローラは、存在する２つ以上の信号：列ラッチ(ROW LATCH)および列的中(ROW HIT)を備えている。列ラッチは、メインメモリおよびキャッシュコントローラ２４０により発生され、アドレスデコーダ２３０に供給され、現在アクセスされている別の行が認識するまでそのアドレスデコーダ２３０をラッチし／能動化させるように指示する。アドレスデコーダ２３０により発生され、そして、メインメモリおよびキャッシュコントローラ２４０に供給される行的中信号は、メインメモリおよびキャッシュコントローラ２４０に対し、要求された行が既にラッチされたことを示す。図４および５のメモリコントローラは、共にメモリシステムとして使用できることに注目すべきであり、そのメモリシステムは、レベル２(Ｌ２)キャッシュを備えていてもいなくてもよい。
【００５３】
説明のために、バッファ登録部のデータは、要求されたメモリアドレスで格納された最初の数バイトであることに気付くべきである。そのため、ＣＰＵにはこのデータが与えられるが、要求されたメモリアドレス内のデータの残りは、メインメモリ／キャッシュから回復される。
【００５４】
これとは別に、バッファ登録部のデータが、メモリシステムのキャッシュ内のキャッシュラインを十分に満たしてもよい。それにより、バッファ的中時(要求されたメモリアドレスがバッファ内に見つかったとき)、そのバッファは、キャッシュライン全体をキャッシュに与える。このプロセスを援助するために、要求された列アドレス(要求されたアドレスからデコードされた)のラッチ動作は背後で行われてもよい。明確にするために、バッファ的中の有無に関係なく、列アドレスはメインメモリにラッチされてもよい。この構成により、次に要求されたアドレスがバッファになく、先に要求されたアドレスとして同じ列にあるなら、関係のある列はすでにアクティブになっており、これにより、通常、メインメモリアクセスに関係するセットアップおよびアクティブ化の時間を節約できる。この列のラッチ動作を用いる方法は、図５のメモリコントローラを使用するが、このラッチ動作を用いない方法は、図４のメモリコントローラを使用することに気付くべきである。理解できるように、図５のコントローラは２つの特別な信号、列的中および列ラッチを有する。その列的中は、メインメモリ／キャッシュコントローラ２４０に、(要求されたメモリアドレスを通じて)要求された列が既にラッチされていることを示す。列ラッチ信号は、メインメモリシステム内の特定の列をラッチする必要性をアドレスデコーダ２３０に、知らせることに役立つ。
【００５５】
図６を参照すると、図４のメモリシステムの動作を示したフローチャートが示されている。メモリアクセスに対する初期的なステップは、簡略化の観点でフローチャートから省略されている。要求されたメモリアドレスの受け取り、メモリアドレスをデコードしそしてメモリアクセス要求を受け取るステップは当業者には周知であり、困難を要しない。理解されるように、このプロセスは、要求されたアドレスがバッファ内に見つかったか否かを決定する判定３００でスタートする。
【００５６】
次に判定３１０が実行される。これは、メモリアクセスがリードまたはライトのアクセスなのかを決定する。そのアクセスがメモリライトなら、ステップＳ３２０に進む。ステップＳ３２０は、メインメモリへのライトを実行する。図示されるように、このステップにはバッファは含まれない。これとは別のように、メインメモリにライトされるべきデータをバッファ登録部に書き込むよう選択してもよい。これは、バッファをアクセスする際に要求される通常のステップを含み、そのステップについては後で詳しく述べる。
【００５７】
メモリアクセスがリードアクセスなら、そのバッファが利用され、一時的に上述したような並列処理が実行される。２つ以上の矢印が次の動作に供給される時、次の動作を開始する前に２つ以上の先行する動作を完了しなくてはならない。理解されるように、ステップＳ３３０、３４０および３５０は、ステップＳ３６０、３７０および３８０と共に並行に実行される。ステップＳ３３０、３４０および３５０は、メインメモリアクセスに関する。リード動作のために、周知でかつ確立された方法により、メインメモリがアクセスされ(ステップＳ３３０)、そのデータは要求されたメモリアドレスを用いて回復され(ステップＳ３４０)、そして、回復したデータはＣＰＵに送出される(ステップＳ３５０)。３つのすべてのステップは当業者には周知である。ステップＳ３６０、３７０および３８０は、リードデータのバッファへのコピーに関する。最初、ＭＲＵビットがセットされていないバッファ登録部を選出する(ステップＳ３６０)。そのＭＲＵビットの非アクティブな特性は、最後にアクセスされたバッファ登録部でないことを意味し、そのため、上書きしてもよい。このようなバッファが選出されると、当該データがバッファ登録部に書き込まれる(ステップＳ３７０)。このデータは、セットおよびタグ領域の適した位置にメモリアドレスを含み、メインメモリからデータが読み出される。このステップの後、この登録部に対するＭＲＵビットは、次のメモリアクセスでバッファ登録部が上書きされるのを防止するために、セットされる。
【００５８】
バッファ登録部のデータ部に書き込まれたデータは、要求された一部であることに注目すべきである。そのため、バッファがデータの最初の３２バイトのみをバッファリングするように構成されているなら、(ステップＳ３４０にて)メインメモリから読み出されたデータの全量および一部が、バッファ登録部に書き込まれる。もしバッファがキャッシュライン全体を格納できるように構成されているなら、情報の全量は、メインメモリからのデータから引き出され、バッファ登録部に格納される。
【００５９】
再度、図６を参照する。(ステップＳ３００の判定から)要求されたメモリアドレスがバッファ内にあるなら、ステップＳ３９０にて、メモリアクセスがリードかライトなのかが判定される。メモリリードなら、上述した一時的な並行処理が有利に採用される。ステップＳ４００、４１０および４２０は、バッファで実行される動作およびバッファにより実行される動作であり、一方、ステップＳ４３０、４４０および４５０は、そのバッファによる処理と同時に又は並行して、メモリにより実行されるステップである。
【００６０】
理解されるように、ステップＳ４００は、関係あるバッファ登録部のリードに関する。これは、バッファ登録部のデータ部に格納されたデータのリードを含む。この後、ステップＳ４１０にてバッファ登録部からリードされたデータをＣＰＵに送出する。最後に、前記バッファ登録部に対するＭＲＵビットがセットされる。
【００６１】
上述と同様に、メインメモリ内の対応するアドレス位置が要求されたメモリアドレスを用いてアクセスされる(ステップＳ４３０)。データの残りは、次に、予め設定したオフセットを用いてメインメモリからリードされる。バツファがデータの最初の３２バイトを格納できるように設計されているなら、メインメモリのデータリードは、３２バイト後からであり、これは通常、メモリリードの開始である。これにより、もし、メモリリードがポイントＸからであるなら、メインメモリリードは、Ｘ＋３２バイトから、バッファからＣＰＵに送出されるデータに対する量となる。通常、バッファがそのデータをＣＰＵへ送出した時間により、メインメモリをアクセスするのに要するセットアップ時間を超えてしまう。
【００６２】
このことは従って、ＣＰＵがバッファからのデータ受信を完了した時、メインメモリから到来する要求されたデータの残りは、丁度、ＣＰＵに到着している。ステップＳ４５０では、そのデータを実際に送出し、このステップは、メインメモリアクセスに対して実行される最後のステップとなる。
【００６３】
一方、メモリアクセスがライトアクセスならば、ステップＳ４６０、４７０および４９０が実行される。図６からわかるように、ステップＳ４６０および４７０はステップＳ４８０および４９０と並列に実行される。ステップＳ４６０では、書き込まれるべきデータが、関係するバッファ登録部に書き込まれる。この結果、要求されたアドレスに対応して見つかったバッファ登録部は、データが供給されたＣＰＵにより上書きされる。バッファ登録部が次のメモリアクセスで上書きされるのを防止するために、この後、バッファ登録部のＭＲＵビットがセットされる。これらのステップに呼応して、ステップＳ４８０および４９０はメインメモリに関係する。ステップＳ４８０ではメインメモリがアクセスされる。このステップにおいて、メインメモリをアクセスするために、関係があり、必要な信号が発生される。ステップＳ４４０にて同じデータをリードする時に反して、メインメモリにデータを書き込む時はオフセットを必要としないことに注目すべきである。これに対する理由は、完全なデータがメインメモリに書き込まれる時はオフセットは必要ないからである。メインメモリおよびバッファの双方に書き込むことにより、古いデータの出力が回避される。
【００６４】
上述したプロセスは、バッファが要求されたデータの始まりの部分のみをバッファリングするように設計された時に、最良の結果を生む。しかしながら、上記方法を避けるために、キャッシュライン全部を格納することを用いることはできないことは言うまでもない。キャッシュライン全部を格納するバッファは、上述した方法の利点をもつことができる。
【００６５】
上記方法の概念に追加された工夫は、ラッチされたアクティブの列を維持することにある。要求されたアドレスは、メインメモリにおける列に関する。第２の要求されたアドレスが到来した時に前記列が既にアクティブなら、かつ、第２の要求されたアドレスが同じ列に関するなら、データの回復はより早くなる。要求された列をアクセスするためのセットアップ時間が省略されるからである。列は既にアクティブである。バッファと結合されると、ラッチされた列を維持することの概念は、加速されたメモリアクセス速度の条件で多くの利点を与える。
【００６６】
図７を参照すると、図５のメモリコントローラを用いて実行できるプロセスのステップを示したフローチャートが示される。アクセスのリードのために用いられるべきこのプロセスは、上述に関する、列ラッチの概念を用いる。ステップＳ５００で開始し、メモリアクセスが初期化される。このステップは、要求されたメモリアクセスを受け取り、そしてメモリアクセスがリードアクセスであると決定することを含む。次にステップＳ５１０が実行される。このステップは、要求されたメモリアクセスをデコードし、そして、要求されたアドレスがどの列にあるかを決定することを含む。この時点で、プロセスは、バッファが与える一時的な並行処理の利点をもつ。ステップＳ５２０および５３０は同時に実行される。これにより、要求された列が既にアクティブなのかどうか、および、要求されたアドレスがバッファ内にあるかどうかのチェックがなされる。
【００６７】
もし、バッファが要求されたデータの始まりの部分、つまり列のヘッドのみをバッファリングするのであれば、図７のフローチャートの左のほとんど、および右のほとんどの分岐が容易に実行される。ステップＳ５３０および５２０の判定で共に“Ｙ”の場合、ステップＳ５４０、５５０、５６０、５７０、５８０、５９０および６００が並列に実行される。これにより、データの最初の部分はバッファ登録部から回復され(ステップＳ５４０)、そして、ＣＰＵに送出させる(ステップＳ５５０)。ステップＳ５５０は、列アドレスが非アクティブなら、より高速に達成される。メインメモリのアクセスに関係する通常のアクティブ化の時間が回避される。理想的にはこのメインメモリのアクセスは高速ページモード(ＦＰＭ)を用いて実行される。要求されたデータの残りは、メインメモリから回復される(ステップＳ５７０)。しかしながら、この回復は、ＣＰＵへ既に送出したデータを補うために(ステップＳ５８０)、上述と同じようような方法でオフセットを用いて実行される。一方、バッファに対し、アクセスされたバッファ登録部はそのセットされたＭＲＵビットをもつ。メインメモリに対しては、アクティブな列が次のメモリアクセスのためにアクティブを維持する。ステップＳ５３０の判定で“Ｙ”となり、一方、ステップＳ５２０での判定で“Ｎ”であったなら、ステップＳ５４０、５５０および５９０がバッファにより実行され、一方、ステップＳ６１０、６２０、６３０および６４０は、バッファを有するメインメモリシステムにより実行され、そのメインメモリシステムは並列動作する。メインメモリシステムのために、ステップＳ６１０では、周知のランダムアクセス技術を用いて、メインメモリをアクセスする。これは、適した/CAS /RAS 及び /CS 信号を適した時間に送出する。ステップＳ６２０では、バッファによりステップＳ５５０にて既にＣＰＵに供給されたデータを補償するために、行オフセットを用いてメインメモリから要求されたデータの残りを回復する。ステップＳ６３０では、これにより、この回復されたデータをＣＰＵに送出する。ステップＳ６４０では、列アドレスがアクセスされてアクティブにされた時、次のメモリアクセスの予想時に、列アドレスのアクティブ状態を維持する。
【００６８】
ステップＳ５２０の判定で“Ｙ”となり、ステップＳ５３０では“Ｎ”であれば、バッファはステップＳ６５０、６６０および６７０を実行し、一方、メインメモリシステムはステップＳ５６０、５７０、５８０および６００を実行する。そのため、要求されたデータがバッファ内に存在しないなら、その後、バッファ内に入れられなければならない。ステップＳ６５０では、取替えるためにバッファ登録部を選択する。これは、ＭＲＵがセットされていないバッファ登録部の選択を含む。これが実行されている間、メインメモリシステムは、(上述したステップＳ５６０および５７０を参照)要求されたデータを、オフセットなしでメインメモリから回復する。要求されたデータの第１の部分を送出していない時、そのオフセットは用いられない。そのため、その部分を補償する必要がない。
【００６９】
一旦、メインメモリからデータが回復されると、回復されたデータの第１の部分は、その後、選択されたバッファ登録部に格納される(ステップＳ６６０)。その後、ＭＲＵビットは、次のメモリアクセスで上書きされないように、このバッファ登録部にセットされる。
【００７０】
ステップＳ５２０および５３０の判定で共に“Ｎ”であったなら、メインメモリシステムは、ステップＳ６１０、６２０、６３０および６４０を実行し、一方、バッファはステップＳ６５０、６６０および６７０を実行する。バッファは、データを回復するためにアクセスされなず、そこに書き込まれたデータを持つだけなので、その後のステップＳ６２０では、補償するものがないので、メインメモリシステムはオフセットを用いない。
【００７１】
図７中の接続ＡおよびＢは、上述したステップのほとんどは並列に実行されるが、いくつかのステップはほかのものより先に実行されることを示すために用いられることに気付くべきである。例として、ステップＳ５５０が実行された後、ステップＳ５９０、５８０および６００が並列に実行される(接続Ｂを参照)。もし、他方、ステップＳ５２０の判定で“Ｎ”となり、ステップＳ５３０の判定で“Ｙ”であったなら、ステップＳ５５０の後にステップＳ５９０、６３０および６４０が並列に実行される(接続Ｂを参照)。これとは別に、ステップＳ５２０の判定で“Ｙ”となり、ステップＳ５３０の判定で“Ｎ”であったなら、接続Ａが示すように、ステップＳ５８０および６００がステップＳ６６０および６７０と並列に実行される。
【００７２】
図８を参照すると、書き込み動作のためのステップが示される。そのプロセスは、メモリアクセスの初期化で始まる(ステップＳ６８０)。上述から気付くように、これは、要求されたアドレスをデコードし、ＣＰＵからライト命令を受け取り、そして要求されたアドレスをメモリデコーダとバッファに送出することを含む。次に、メインメモリシステムは、ステップＳ６９０、７００および７１０を実行し、これと並列に、バッファはステップＳ７２０、７３０(もし要求あれば)、７４０、７５０および７６０を実行する。
【００７３】
メインメモリシステムのために、ステップＳ６９０にて、ＦＰＭを用いるが、あるいは用いずに、メインメモリをアクセスする。ステップＳ７００では、データがメインメモリに書き込まれ、そしてステップＳ７１０にて、次のメモリアクセスのために、アクセスされた列のアクティブ状態が維持される。（アクティブな列の個数は、システム設計者の判断にまかされることに気づくべきである。そのような設計者は、ＤＲＡＭバンクにつき、１列のみをアクティブにするか、バンクにつき、複数のアクティブの列を持つように希望してもよい。）バッファに対する最初のステップであるステップＳ１において、要求されたアドレスがバッファ内にあるかの判定がなされる。もし要求されたアドレスがバッファ内にあるなら、データがバッファ登録部に書き込まれる(ステップＳ７４０)。他方、要求されたアドレスがバッファ内に無い時は、バッファ登録部が取替えられる。そのため、ステップＳ７５０では、取替えられるべきバッファが選択される。これは、ＭＲＵビットがセットされていないバッファ登録部の選択を伴う。その後、取替えられるべきこのバッファ登録部が一旦、選択されると、データがそれに書き込まれる(ステップＳ７４０)。ステップＳ７４０にて書き込まれるバッファ登録部は、要求されたアドレスがバッファ内にあるかに依存する。もし存在するなら、データは選択されたバッファ登録部に書き込まれる。もし存在しなければ、取替えられる、または上書きされるバッファ登録部が選択される。その後、データがバッファ登録部に一旦書き込まれると、前記バッファ登録部に対してＭＲＵをセットする。そのデータは、バッファおよびメインメモリの双方に書き込まれ、両者でデータを一致させる。この例では、データの始めの部分(つまり列ヘッド)のみがバッファに書き込まれることに気付くべきであり、このことはこの例に対してバッファがいかにして形成されるかを示す。
【００７４】
図８に示したライトプロセスはまた、バッファが一杯のキャッシュラインをバッファリングするように形成された場合にも適用できる。この例と上述した例との唯一の差異は、プロセッサキャッシュライン全部がバッファ内に蓄えられる点である。
【００７５】
バッファがキャッシュライン全部をバッファリングする時のリードアクセスに対して、いくつかの可能性が存在する。上述で気付くように、もし、アクセス後に列アクティブを維持するプロセスが用いられるなら、図５の特別な列的中および列ラッチを有するメモリコントローラが使用される。図９および図１０は、図７に示したプロセスに似る２つの可能なプロセスを示す。図９および図１０の方法は、要求されたアドレスがバッファ内およびアクティブな列内に見つかったなら、デフォールト位置を持つ点で異なる。図９において、もし要求されたアドレスがアクティブな列内とバッファ内に見つかったなら、データはバッファから回復される。図１０において、同じことが事実なら、次にメインメモリがアクセスされる。
【００７６】
図９および図１０を参照すると、バッファがキャツシュライン全部をバッファリングするために形成されているなら、および、列ラッチの概念が用いられるなら、リード動作のための２つの似たプロセスが示されている。これらの２つのプロセスは、要求されたアドレスがバッファとアクティブな列の双方に存在する時のみ、異なる。
【００７７】
図９を参照すると、周知の方法および上述した他のプロセス内でのメモリアクセスの実行と同様な方法により、メモリアクセスがステップＳ７７０にて実行される。要求されたメモリアドレスは次にステップＳ７８０にてデコードされる。次のステップＳ７９０および８００にて並列に実行される。要求されたアドレスがバッファ内にあるかを見るために、バッファがチェックされ(ステップＳ７９０)、そして、要求されたアドレスがアクティブな列内にあるかを見るために、アクティブな列がチェックされる。これらのチェックに基づき、一連の判定がなされる。判定のステップＳ８１０は、要求されたアドレスがバッファおよびアクティブな列の双方にあるかがチェックされる。“Ｙ”と判定されたなら、その後、２つの分岐(一方がステップＳ８２０で他方がステップＳ８３０、８４０、８５０および８６０)が並列に実行される。ステップＳ８２０では、ステップＳ８００で見つかった列のアクティブ状態が維持されることに注目する。ステップＳ８３０、８４０、８５０および８６０は、バッファ内で並列に実行される。ステップＳ８３０では、バッファへのアクセスが実行される。ステップＳ８４０は、バッファから要求されたデータを、前記要求されたアドレスに対応するバッファ登録部から実際に回復する。その後、この回復されたデータは、ＣＰＵに送出される(ステップＳ８５０)。前記バッファ登録部が次のメモリアクセスで上書きされないように、そのバッファ登録部で見つかったＭＲＵビットは、ステップＳ８６０にてセットされる。
【００７８】
もしステップＳ８１０の判定で“Ｎ”となったなら、次にステップＳ８７０の判定がなされる。ステップＳ８７０は、要求されたアドレスがアクティブな列内にあり、バッファ内に無いかを判定する。もし、その場合、メインメモリのステップＳ８８０、８９０、９００および９１０の実行と並列に、バッファがステップＳ９２０、９３０、９４０および９４０を実行する。メインメモリシステムに対しては、ステップＳ８８０にて、高速ページモードを用いてメインメモリにアクセスする。これは、要求されたアドレスが既にアクティブにある列内にある時に実行される。次のステップＳ８９０は、メインメモリからデータを回復する。ステップＳ９００は、回復したデータをＣＰＵに送出する一方、ステップＳ９１０は列のアクティブ状態を維持する。バッファに対しては、そのプロセスの部分は、バッファ内に回復したデータを格納するために実行される。ステップＳ９２０は、取替えられるバッファ登録部を選択する。一旦、バッファ登録部が選択されると、ステップＳ８９０にて回復されたデータは、選択されたバッファ登録部に格納さ(ステップＳ９３０)、これにより、選択されたバッファ登録部の古いコンテンツに対して上書きされる。次のステップＳ９４０は、次のデータアクセスでこの特定のバッファ登録部が上書きされないように、ＭＲＵビットをセットする。しかしながら、接続ＣはステップＳ８９０の実行後のみ、ステップＳ９３０が実行されることに気付くべきである。データがメインメモリから回復された(ステップＳ８９０)後のみ、データがバッファ登録部に書き込まれる(ステップＳ９３０)。
【００７９】
もしステップＳ８７０にて“Ｎ”となったなら、判定のステップＳ９５０に進む。この判定は、要求されたアドレスがアクティブな列内にあるかを決定する。もし、その決定が真実なら、メインメモリシステムによるステップＳ１０００、１００２、１００４および１００６の実行と並列に、バッファは、ステップＳ９６０、９７０、９８０および９９０を実行する。バッファにおいて、ステップＳ９６０でバッファへのアクセスが行われる。ステップＳ９７０は、バッファから要求されたデータを実際に回復し、一方、ステップＳ９８０では要求され、回復されたデータをＣＰＵに送出する。バッファに対して先の分岐で実行されたように、ステップＳ９９０は、バッファ登録部が次のデータアクセスで上書きされないように、ＭＲＵビットがセットされる。ＭＲＵビットをセットするステップはまた、別のバッファ登録部に対して先に行ったＭＲＵビットのセットを解除することを含むことは明白である。このように、単一のバッファ登録部が、セットされたＭＲＵビットを持つ。同様に、メインメモリ内の列をアクティブにするステップ(ステップＳ１０００)も、先にアクティブであった列を非アクティブにすることを含む。このように、一度に最小の列がアクティブにされる。列がアクティブにされた後、ステップＳ１００２にあるように、メインメモリからデータがアクセスされる。このデータは、その後、ＣＰＵに送出され(ステップＳ１００４)、そして、列のアクティブ状態が維持される(ステップＳ１００６)。メインメモリシステムの形態に依存して、メインメモリシステム全体の中で１つの列のみがアクティブにされてもよく、または、(複数のバンクメインメモリシステムに対して)メインメモリバンクにつき１つの列がアクティブにされる。最終の末端ユーザーの要求に依存して、異なる形態が採用されてもよい。
【００８０】
再度、ステップＳ８７０の判定で“Ｎ”であれば、メインメモリシステムおよびバッファシステムは、一連のステップを並列に実行する。メインメモリシステムがステップＳ１０４０、１０５０、１０６０および１０７０を実行する一方、バッファに対しては、ステップＳ１０１０、１０２０および１０３０が実行される。バッファに対するステップＳ１０１０は、ＭＲＵビットがセットされていないバッファ登録部の選出を含む。このバッファ登録部のコンテンツは、回復されるべき新しいデータに置きかえられる。ステップＳ１０５０にてメインメモリシステムによりデータが回復され、ステップＳ１０２０は、その回復されたデータを選択されたバッファ登録部に書き込むことを含む。ステップＳ１０３０では、選択されたバッファ登録部に対し、ＭＲＵビットをセットする。
【００８１】
メインメモリシステムに対しては、ステップＳ１０４０にて、要求されたアドレスに格納されたメインメモリのデータをアクセスする。このメモリアクセスは、ＦＰＭが使用できず、要求された列がアクティブでない時、周知のランダムアクセス方法を用いて実行される。ステップＳ１０５０は、メインメモリがステップＳ１０４０にてアクセスされた後、メインメモリからデータを回復することを含む。この回復されたデータは、ステップＳ１０６０にてＣＰＵに送出される。このデータは、ステップＳ１０２０にて選択されたバッファ登録部に書き込まれたデータと同じか、それの一部である。次にステップＳ１０７０は、(ステップＳ１０４０にて)アクセスされた列を、アクティブとして設定し、これにより、次のメモリアクセスで、もし可能なら、ＦＰＭの使用が可能になる。
【００８２】
上記した接続Ｃと同様に、接続Ｄは、ステップＳ１０２０は、ステップＳ１０５０が実行された後にのみ実行され得ることを示す。これにより、ステップＳ１０５０が実行された後のみ、ステップＳ１０２０および分岐した他のその後のステップが実行される。(ステップＳ１０５０で)データが回復された後のみ、同じデータがバッファ登録部に書き込まれる(ステップＳ１０２０)。
【００８３】
図１０においては、第１の判定(ステップＳ８１０)で“Ｙ”となった場合に実行されるステップを除き、フローチャート中のすべてのステップは図９のものと同じである。もし、その場合、つまり、要求されたアドレスがバッファおよびアクティブな列の双方にある場合、バッファがステップＳ１１２０を実行する一方、メインメモリはステップＳ１０８０、１０９０、１１００および１１１０を実行する。
【００８４】
メインメモリシステムに対し、ステップＳ１０８０では、ＦＰＭを用い、メインメモリにアクセスされる。これは、ステップＳ８１０の判断にて、要求されたアドレスがアクティブな列にあると決定された時に実行される。データを実際に回復するステップＳ１０９０は、ステップＳ１０８０の後に実行される。ステップＳ１１００では、回復されたデータがＣＰＵに送出され、ステップＳ１１１０では、今アクセスされた列のアクティブ状態が維持される。バッファに対しては、ステップＳ１１２０にて、要求されたアドレスに対応するバッファ登録部に対してＭＲＵビットをセットする。このことを効果的に言うと、バッファ登録部は、そのコンテンツがリードされなくても、あるいは修正されなくても、アクセスされた最後のものである。
【００８５】
上述した装置およびプロセスに対する他の多くの形態が可能である。レベル２のキャッシュを使用でき、それへのアクセスは、上述した概要のプロセスに適用できる。
【００８６】
上述した発明を理解した人は、ここで述べた原理を用いて別の設計を計画することができる。添付した請求の範囲内に収まるこのようなすべての設計は、本発明の一部である。
【図面の簡単な説明】
【００８７】
【図１】従来技術によるＣＰＵメモリシステムの概略ブロック図
【図２Ａ】この発明に基づくバッファバンクの概略図
【図２Ｂ】図２Ａのバッファバンクを制御するバッファコントローラのブロック図
【図３Ａ】メモリコントローラから分離してバッファシステムを実行するメモリシステムのブロック図
【図３Ｂ】メインメモリの一部としてバッファシステムを実行するメモリシステムのブロック図
【図３Ｃ】ＣＰＵの一部としてバッファシステムを実行するメモリシステムのブロック図
【図３Ｄ】メモリコントローラの一部としてバッファシステムを実行するメモリシステムのブロック図
【図４】この発明の実施のための詳細ブロック図
【図５】図４に示した実施の変形例である詳細ブロック図
【図６】この発明の第１の態様に基づくメモリアクセスの方法におけるステップを示したフローチャート
【図７】この発明の第２の態様に基づくメモリアクセスの方法におけるステップを示したフローチャート
【図８】図７に示した方法で使用されるべきライトアクセス法のためのステップを示したフローチャート
【図９】この発明の第３の態様に基づくメモリアクセスの方法におけるステップを示したフローチャート
【図１０】図９に示した方法の変形例におけるステップを示したフローチャート
【符号の説明】
【００８８】
１０  ＣＰＵメインメモリシステム
１５  マイクロプロセッサ
１７  Ｌ１キャッシュ
２０  キャッシュ及びメインコントローラ
２５  Ｌ２キャシュ
３０  メインメモリ
１００  待ち時間を隠すバッファ
１１０  バッファバンク
【図１】
2004520643.tif 000006
【図２Ａ】
2004520643.tif 000007
【図２Ｂ】
2004520643.tif 000008
【図３Ａ】
2004520643.tif 000009
【図３Ｂ】
2004520643.tif 000010
【図３Ｃ】
2004520643.tif 000011
【図３Ｄ】
2004520643.tif 000012
【図４】
2004520643.tif 000013
【図５】
2004520643.tif 000014
【図６】
2004520643.tif 000015
【図７】
2004520643.tif 000016
【図８】
2004520643.tif 000017
【図９】
2004520643.tif 000018
【図１０】
2004520643.tif 000019
【国際公開パンフレット】
2004520643.tif 000020
2004520643.tif 000021
2004520643.tif 000022
2004520643.tif 000023
2004520643.tif 000024
2004520643.tif 000025
2004520643.tif 000026
2004520643.tif 000027
2004520643.tif 000028
2004520643.tif 000029
2004520643.tif 000030
2004520643.tif 000031
2004520643.tif 000032
2004520643.tif 000033
2004520643.tif 000034
2004520643.tif 000035
2004520643.tif 000036
2004520643.tif 000037
2004520643.tif 000038
2004520643.tif 000039
2004520643.tif 000040
2004520643.tif 000041
2004520643.tif 000042
2004520643.tif 000043
2004520643.tif 000044
2004520643.tif 000045
2004520643.tif 000046
2004520643.tif 000047
2004520643.tif 000048
2004520643.tif 000049
2004520643.tif 000050
2004520643.tif 000051
2004520643.tif 000052
2004520643.tif 000053
2004520643.tif 000054
2004520643.tif 000055
2004520643.tif 000056
2004520643.tif 000057
2004520643.tif 000058
2004520643.tif 000059
2004520643.tif 000060
2004520643.tif 000061
2004520643.tif 000062
2004520643.tif 000063
2004520643.tif 000064
2004520643.tif 000065
2004520643.tif 000066
2004520643.tif 000067
2004520643.tif 000068
2004520643.tif 000069
2004520643.tif 000070
2004520643.tif 000071
2004520643.tif 000072
2004520643.tif 000073
【国際公開パンフレット（コレクトバージョン）】
2004520643.tif 000074
【国際調査報告】
2004520643.tif 000075
2004520643.tif 000076
2004520643.tif 000077
2004520643.tif 000078
2004520643.tif 000079