JP2004520643A - メモリシステムでの待ち時間を減じるための方法および装置 - Google Patents

メモリシステムでの待ち時間を減じるための方法および装置 Download PDF

Info

Publication number
JP2004520643A
JP2004520643A JP2002547003A JP2002547003A JP2004520643A JP 2004520643 A JP2004520643 A JP 2004520643A JP 2002547003 A JP2002547003 A JP 2002547003A JP 2002547003 A JP2002547003 A JP 2002547003A JP 2004520643 A JP2004520643 A JP 2004520643A
Authority
JP
Japan
Prior art keywords
buffer
memory
data
address
column
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2002547003A
Other languages
English (en)
Inventor
ナギ・ナシーフ・メクヒール
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mosaid Technologies Inc
Original Assignee
Mosaid Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mosaid Technologies Inc filed Critical Mosaid Technologies Inc
Priority claimed from PCT/CA2001/001686 external-priority patent/WO2002044904A2/en
Publication of JP2004520643A publication Critical patent/JP2004520643A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

メモリコントローラは最後に用いたアドレスおよび関係するデータを格納するバッファを制御するが、バッファに格納したデータは、メインメモリに格納されたデータの列の一部(列ヘッドデータ)である。CPUにより実行されるメモリアクセスにて、バッファ及びメインメモリが同時にアクセスされる。バッファが要求されたアドレスを含まないなら、バッファは直ちに関係する列ヘッドデータをキャッシャメモリに与える。一方、同じ列アドレスは、バッファ内で見つかった要求されたアドレスに対応するメインメモリバンク内でアクティブにされる。バッファが列ヘッドデータを与えた後、要求されたデータの残りが直ちにメインメモリによりCPUに与えられる。

Description

【技術分野】
【0001】
この発明は、一般にコンピュータシステムにおける中央処理ユニット(CPU)とメインメモリ間でデータを転送するための方法に関する。より詳しくは、この発明は、待ち時間を隠す機構を用いることにより、メインメモリへのアクセスで待ち時間を最小にするための種々の実行を開示する。
【背景技術】
【0002】
マイクロプロセッサの速度および演算パワーは、技術の進歩に従って継続的に増しつつある。演算パワーでのその増大は、データの転送および、マイクロプロセッサおよびメインメモリ間のプロセッサ速度での命令に依存する。不幸にも、現在のメモリシステムは、そのデータをプロセッサに対して要求されるような速度で与えることはできない。
【0003】
プロセッサは、速度の遅いメモリシステムに対して待ち状態にすることにより、待たなくてはならず、そのため、プロセッサは自身の規格速度よりもかなり遅い速度にてプロセッサを実行させている。この問題は、システムの全体的な特性を低下させる。この傾向は、プロセッサ速度とメモリ速度との間のギャップが大きくなっているために、悪化させている。プロセッサにおけるいかなる特性改善もシステム全体の重要な特性が得られなくなるポイントにまもなく到達しようとしている。メモリシステムはそのため、システムの特性を限定する要素となっている。
【0004】
Amdahlの法則によれば、システムの特性改善は、改善できないシステムの部分によって制限される。この理由は次の例で示される。
プロセッサの時間の50%がメモリアクセスに使用され、残りの50%が内部の演算サイクルで使用されるなら、Amdahlの法則は、プロセッサの速度が10倍に増しても、システムの特性は単に1.82倍しか増大しないと述べている。Amdahlの法則は、コンピュータシステムの部分を強化することにより、得られた速度上昇は、次式により与えられる。
【数1】
Figure 2004520643
【0005】
強化された部分:強化が用いた時間の比率
強化された速度上昇:強化された部分を、元の部分の特性と比較した時の速度上昇
【0006】
この例のように、プロセッサは、内部演算が時間の50%しか占められていないので、プロセッサの強化された速度は、その時間の50%について利点となる。
【0007】
Amdahlの法則は、上記の数値を採用すると次式のようになる。
【数2】
Figure 2004520643
【0008】
強化されたプロセッサが元のプロセッサに比べて10倍であっても、その強化は、時間の50%についてのみ適用されないためである。速度上昇の計算は、元のシステムの特性と比較して1.818倍の全体的な特性強化が得られる。
【0009】
もし、強化されたプロセッサが、元のプロセッサの速度の100倍ならば、Amdahlの法則は、次式のようになる。
【数3】
Figure 2004520643
【0010】
このことは、システムの特性は、メモリへのおよびメモリからの50%のデータアクセスにより制限されることを意味する。明白なように、メインメモリシステムの速度に対してプロセッサの速度が増大するにつれ、利点が減少する傾向がある。
【0011】
この問題を解決するためにキャッシュメモリを使用しており、プロセッサによりアクセスされそうなデータを、プロセッサ速度に対応する高速のキャッシュメモリに移動している。第1レベルのキャッシュ(L1キャッシュ)および第2レベルのキャッシュ(L2キャッシュ)からなるキャッシュの階層を形成するために種々のアプローチが提案されてきた。理想的には、プロセッサにより最もアクセスされそうなデータは最速のキャッシュレベルに格納すべきである。レベル1(L1)およびレベル2(L2)の双方のキャッシュは、ダイナミックランダムアクセスメモリ(DRAM)を上回る利点の故に、スタティックランダムアクセスメモリ(SRAM)技術によって形成される。キャッシュの設計及びキャッシュが何を目標とするかの問題で最も重要なことは、プロセッサにより次に要求されるデータがキャッシュシステムに高い確率で格納されることである。キャッシュにてこの要求されたデータの選出の確率を高めるために、または“的中する”キャッシュを持つために、2つの主な法則:一次的な位置および空間的な位置が機能する。
【0012】
一次的な位置とは、最も平均的なプロセッサ動作のために、プロセッサにより次に要求されるデータが高い確率で直ぐに要求されるという概念である。空間的な位置とは、プロセッサにより次に要求されるデータが、現在アクセスされているデータの次に高い確率でアクセスされるという概念である。
【0013】
キャッシュの階層は、それゆえ、現在アクセスされているメインメモリデータから伝送すると共に、物理的に近接するデータから転送することにより、これらの2つの概念の利点を取るものである。
【0014】
しかしながら、キャッシュメモリシステムは、高速のプロセッサをより低速なメインメモリから完全に切離すことはできない。プロセッサにより要求されたアドレスおよび関係したデータは、キャッシュ内には見つからず、キャシュ“ミス”とよばれる事態が発生する。このようなキャッシュミスにおいては、プロセッサは、データを得るためにより低速なメインキャッシュをアクセスする。これらのミスは、プロセッサの時間の一部を示しており、これは、システム全体の特性改善を制限する。
【0015】
このキャッシュミス問題を対処するために、レベル2のキャッシュはしばしば全体的なキャッシュ階層を備える。レベル2のキャッシュの目的は、レベル1のキャッシュを用いずに、高速アクセスのためにプロセッサで利用できるデータ量を拡大することである。レベル2のキャッシュは、典型的にプロセッサ自身と同じチップ上に形成される。レベル2のキャッシュは、オフチップ(つまり、プロセッサおよびレベル1のキャッシュと同じダイ(die)上にない)なので、より大きくなり、レベル1のキャッシュとメインメモリの速度の間の速度で実行する。しかしながら、レベル1およびレベル2のキャッシュの使用を適正にし、そして、キャッシュメモリシステムとメインメモリシステムとの間でデータの一貫性を維持して、最新のデータがプロセッサで使用できるようにするために、キャッシュおよびメインメモリの双方は、常にアップデートされなくてはならない。もし、プロセッサメモリのアクセスがリードアクセスなら、このことは、プロセッサがメモリからデータまたはコードをリードする必要があることを意味する。もしこの要求されたデータまたはコードがキャッシュで見つからないならば、そのキャッシュコンテンツはアップデートされなくてはならず、一般的に同じキャッシュコンテンツを要求する処理は、メインメモリからのデータまたはコードで置き換えられなくてはならない。キャッシュコンテンツとメインメモリのコンテンツとの間で一貫性を確実にするために、2つの技術:ライトスルーおよびライトバックが用いられる。
【0016】
ライトスルーの技術は、書き込まれていたデータがキャッシュ内で見つかったとき、キャッシュおよびメインメモリの双方にデータを書き込む。この技術は、キャッシュコンテンツまたはメインメモリのいずれのデータがアクセスされようと、アクセスされたデータは同一であることを確実にする。ライトバックの技術は、メモリへの書き込みアクセス時に、キャッシュにのみデータを書き込む。キャッシュ内のデータとメインメモリ内のデータとの間で一貫性を確実にするために、これらのキャッシュコンテンツが上書きの時、特定のキャッシュ位置のキャッシュコンテンツがメインメモリに書き込まれる。しかしながら、キャッシュコンテンツがメモリ書き込みのアクセスにより置き替えられない時は、キャッシュコンテンツはメインメモリに書き込まれない。特定のキャッシュ位置のキャッシュコンテンツがメモリへの書き込みアクセスによって置き換えられていないなら、キャッシュコンテンツはメインメモリに書き込まれない。特定のキャッシュ位置のキャッシュコンテンツがメモリへの書き込みアクセスによって置きかえられたかを決定するために、フラッグのビットが用いられる。もし、キャッシュコンテンツがメモリへの書き込みアクセスにより置き換えられたなら、そのフラッグのビットがセットされるか、または“ダーティ”とみなされる。そのため、特定のキャッシュ位置のフラッグビットが“ダーティ”なら、新しいデータで上書きされる前に、そのキャッシュ位置のキャッシュコンテンツがメインメモリに書換えられなくてはならない。
【0017】
キャッシュの的中率を増すための別のアプローチは、その結合率を増すことにある。結合率とは、キャッシュアクセスの間にサーチされた(つまり的中のためにチェックされた)キャッシュ内のライン数のことである。一般に、結合率がより高いと、キャッシュの的中率はより高くなる。直接にマップされるキャッシュシステムは、1:1のマッピングを持ち、それにより、キャッシュのアクセスの間に、唯一のラインが的中のためにチェックされる。スペクトラムの他方の端部にて、十分に関係したキャッシュが、典型的にコンテンツアドレス可能メモリ(CAM)を用いて実行され、これにより、すべてのキャッシュライン(およびそれゆえ、すべてのキャッシュ位置)がサーチされ、そして、単一のキャッシュアクセスの間に同時に比較される。種々のレベルの結合率が実行される。
【0018】
最終的にシステム全体の特性の改善を狙ったキャッシュ特性を改善するこれらのアプローチにも拘わらず、キャッシュ特性は、サイズ、結合率および速度のようなパラメータを変えることによる段階まで改善されるのみであることに気付くべきである。より低速なメインメモリを改善するための試みよりも、キャッシュシステムまたはシステムの高速メモリの改善を狙ったこのアプローチは、最後には飽和点に到達し、キャッシュの改善を通じたシステム全体の特性を改善する別のあらゆる試みも、システムの特性改善のレベルを低下を発生させる。おそらく、キャッシュがメインメモリと同程度に大きいなら、メインメモリの特性は、システム全体の特性での要因として排除され得るが、シリコンチップエリアの条件では、法外に高価となる。結果として、最小サイズのキャッシュでシステムの最大特性を得る方法が必要とされる。
【0019】
プロセッサとメインメモリ間の速度の不適合は、近年、メインメモリの特性に重く依存するマルチメディアのような新しいアプリケーションのソフトウエアで問題になりつつある。不幸にも、メインメモリの特性は、このようなアプリケーションでの頻度の高いランダムなデータアクセスにより、制限される。キャッシュシステムはそれゆえ、このようなアプリケーションに使用された時、より効果が少なくなる。
【0020】
プロセッサとメインメモリ間の速度の不適合を軽減するために、メインメモリの特性を改善する多数の試みが行われてきた。これらは、メインメモリの速度にいくらかの改善をもたらした。DRAMへの初期の改善策は、DRAMからアクセスサイクルにつき、複数ビットを得るものであり(一続きの(nibble)モード、又はより広いデータの固定出力)、内部的に種々のDRAMの動作をパイプライン処理するか、データを断片化し、これにより、いくつかのアクセス(ページモード、高速ページモード、拡張されたデータ出力(EDO)モード)に対して、いくつかの動作を排除している。
【0021】
ページモードは、DRAM内の列アドレスをラッチし、それをアクティブに維持することを含み、これにより、センスアンプに格納されるべきデータのページを有効的に排除している。高速ページモードでの行アドレスストロボ(CAS)信号により、行アドレスがその後、ストロボ化されるページモードと違って、列アドレスストロボ(RAS)信号がアクティブにされると同時に、行アドレスバッファがアクティブにされ、そして、明白なラッチとして作用し、行アドレスストロボの前に内部行データのフェッチを生じさせる。データ出力バッファのイネーブル化は、CASがアクティブにされた時に達成される。新しい列をアクセスするために要求される列アドレスアクティブ化時間が同列上に留まることりより、排除されるので、これらの異なるページモードは、それゆえ、純粋なランダムアクセスモードに比べより高速である。
【0022】
これに続く改善は、拡張されたデータ出力モードまたはEDOモードを通じて、およびバーストEDOモードにて実現されている。バーストEDOモードは、各サイクルで新しいアドレスを与えることなく、連続的なデータのページがDRAMから復元されることを可能にする。しかしながら、バーストEDOモードは連続的な情報のページを要求するグラフィックのアプリケーションでの使用に適するが、完全にサポートできるランダムアクセスを要求するメインメモリのアプリケーションに対してはより有用性が欠ける。
【0023】
DRAM設計でのこのような改善は、より高い帯域幅でのアクセスを提供するが、それらは次の問題を呈する。
いくつかの散らばったメモリアクセスは、同じアクティブな列内でマッピングせず、それにより、高速ページモードの使用から利益を排除するので、プロセッサは新しいDRAMをより高い帯域幅で完全に用いることはできない。
新しいDRAMの設計はいくつかのバンクを持ってもよいが、高いページの的中率を持つためには、散らばったメモリアクセスを持つ典型的なプロセッサの環境に対しては十分な個数でない。
現在のプロセッサおよびシステムは、DRAMへのメモリアクセスを遮り、これにより、これらのアクセスを局所的に低減する(第1および第2のレベルの)大きいキャッシュを使用し、このことが、更にアクセスを分散させ、そして、結果、ページの的中率を減じる。
【0024】
システムの特性を改善するには、キャッシュシステムは無能であり、このことが、メインのDRAMメモリシステムの特性改善に更なる努力を必要とさせている。これらの努力の1つは、SDRAM(同期したDRAM)を用いることである。SDRAMは、高速のページモードを使用するアクセスに対する高い帯域幅を与えるために、多数のバンクおよび同期したバスを使用する。多数のSDRAMバンクを備えることで、1つ以上のアクティブな列がプロセッサに、メモリの異なる部位からの高速なアクセスを与える。しかしながら、高速ページモードが使用されるためには、これらのアクセスは、バンクのアクティブな列内に存在しなくてはならない。さらには、メモリの帯域幅を増すために、単に複数のバンクへのアクセスすることへの依存は、バンク(この中にメモリが分割される)の数に基づき全体的に制限されることになる。
【0025】
一般的に、制限されたバンク数、メインメモリ内の既にアクティブにされた列へのアクセスを遮る外部キャッシュシステム、および、アクセスされたデータの劣る空間的な位置、これらのすべてが、SDRAMからの特性の利益を制限する。
【0026】
別の努力は、キャッシュDRAM(CDRAM)を用いることである。この設計は、DRAM内にSRAMに基づくキャッシュを組み込む。大きいブロックのデータは、その結果、単一のクロックサイクル内で、キャッシュからDRAMのアレーに、または、DRAMからキャッシュに転送され得る。しかしながら、この設計は、外部の遮断するキャッシュ、およびデータ位置の低さにより引き起こされる、DRAM内のキャッシュの的中率の低さの問題に直面する。キャッシュのタグ、コンパレータおよびコントローラを要求することにより、内部キャッシュを制御し動作させるために、外部キャッシュに複雑さをも追加する。DRAMに対して最適化された半導体製造プロセスにて、SRAMをDRAMに統合させるために、多くのダイ(die)エリアの状況のためにかなりなコスト増となる。
【0027】
より新しい設計では、プロセッサとDRAMをマージさせることであり、遮断するキャッシュ問題を排除し、プロセッサに完全なDRAMの帯域幅を与えている。このアプローチは、現在のプログラミングモデルにより使用された、散らばったメモリアクセスの性質のために、システムに複雑さを増し、低速と高速の技術を混合し、プロセッサのためのスペースを制限し、そして、高いDRAMの帯域幅を完全に用いることができない。
【0028】
NECの新規な仮想チャンネルDRAM設計は、完全に結合した16のチャンネルを用いており、これは、種々のソースによる使用のために、複数のコードおよびデータのストリームをトラックするように、高速のSRAMで形成される(非特許文献1)。本質的に、仮想チャンネルのDRAMは、ページモードの概念の拡張を示しており、1つのバンク/1つのページの限定が除去されている。結果として、多数のチャンネル(またはページ)が他のチャンネルから独立したバンク内に開放され得る。CPUは、例えば、仮想チャンネルのDRAMバンク内にランダムに配置された161kのチャンネルまでアクセスできる。結果として、ページ配分に対する繰返しのコンフリクトを生じさせることなく、複数のデバイス間のデータの移動が持続され得る。この仮想チャンネルのメモリは、各チャンネルに対応するメインメモリ位置がCPUによりトラックされることを要求し、これにより、その制御機能を複雑化する。更に、そのCPUは、そのチャンネルへのデータの有効的なプリフェッチのために、予測的なスキームを要求する。仮想チャンネルのDRAMはデータをチャンネルに転送するために高速ページモードを用いることを要求し、そして、VCDRAMは、最終的に、キャッシュDRAMのように、関係するバッファにより消費される追加的なダイエリアのために高価となる。更に、備えられたキャッシュの量は、キャッシュ/DRAMの比が通常固定されているので、いくつかのアプリケーションでは適切でないかもしれない。例えば、メインメモリがアップグレードされる時、追加的なキャッシュは必要とされず、そのため、システムのコストは無駄に高価となる。
【0029】
近年、解決に向けたものとして、DRAMの帯域幅を最大化するために、物理的なメモリアドレスを再マッピングするためのソフトウエアコンパイラを用いたようなソフトウエアが提案されている。これは、予知できる動作を有する特定のアプリケーションに対しては有利であるが、それはソフトウエアを交換することを要求し、それにより、複雑な問題を生じる。これらの努力は、高いレベルのアプローチを用い、そのため、ソフトウエアをハードウエアに合わせるために、アプリケーションのソースコードが修正される。このアプローチは、高価で時間を消費するだけでなく、すべてのソフトウエアに適用できない。
【0030】
上述から、それゆえ何が要求されるのかというと、単純化されたメモリ制御機構に基づく解決であり、メインメモリに対し、簡単で、コストが有効で標準のDRAMを用い、広範囲なソフトウエアの書換えまたは複雑なアドレスのスキームを必要としないものである。このような解決は、理想的には、一時的および空間的な位置の双方の利点をとるべきである。最近アクセスされたデータは容易にアクセスできるのみならず、そのような最近にアクセスされたデータの接近した位置のデータも容易にアクセスできるべきである。
【非特許文献1】NEC Electronics Inc. Product Number Search「μPD4565161」
【発明の開示】
【課題を解決するための手段】
【0031】
上述した問題への解決は、高速ページモードおよび高速のバッファまたはキャッシュの概念の双方の利点をもつ方法および装置に見出される。メモリコントローラは、最も最近に使用されたアドレスおよび関係したデータを格納するバッファを制御するが、そのバッファに格納されたデータは、メインメモリに格納されたデータの列の部分のみ(列ヘッドデータと記す)である。CPUにより実行されたメモリアクセスにおいて、バッファおよびメインメモリの双方が同時にアクセスされる。もし、そのバッファが要求されたアドレスを含むなら、そのバッファは直ちに、関係した列ヘッドデータをキャッシュメモリに急きょ与えることを開始する。一方、同じ列アドレスが、そのバッファ内で見出された要求されたアドレスに対応するメインメモリバンク内で能動化される。そのバッファが列ヘッドデータを与えた後、急きょ要求されたデータの残りはメインメモリによってCPUに供給される。この方法では、小さい容量のバッファメモリが、より大きな量のL2キャッシュとなる機能を与えることができる。
【0032】
第1の態様では、この発明は、メモリシステムからデータを回復する方法を提供し、前記方法は、
(a)メモリ位置のデータコンテンツに対するリード要求を受け取り、
(b)前記データコンテンツの一部のために、前記メモリシステムのバッファ部を検索し、
(c)前記データコンテンツの前記一部が前記バッファに格納されている場合に、前記バッファから前記一部を回復し、一方、同時に、前記メモリシステムのメインメモリ部から前記データコンテンツの残りの一部を回復し、
(d)前記データコンテンツの前記部分が前記バッファに格納されていない場合に、メインメモリから前記データコンテンツの前記一部および前記残りの一部を回復することを含む。
【0033】
第2の態様では、この発明は、列ヘッドをラッチするために列ヘッドバッファ回路を提供し、列ヘッドは、メモリバンクに格納されたメモリの列の部分であり、前記ラッチする回路は、
各列ヘッド登録部は、メモリバンク内の列ヘッドに対応し、前記列ヘッド登録部を多数含む列ヘッドバッファと、
列ヘッドバッファ内に含まれる列ヘッド登録部の物理的アドレスをラッチする列アドレスラッチの多数と、
列ヘッド登録部を、到来する要求された列アドレスと比較するための列アドレスコンパレータとを備え、
到来する要求された列アドレスが前記多数のアドレスラッチの1つに適合する時、前記バッファ回路は、メモリコントローラによって要求される、到来の列アドレスを、前記多数の列アドレスラッチと比較し、アドレスラッチの適合に対応する列ヘッドデータ登録部は、前記メモリコントローラに送信される。
【0034】
第3の態様では、この発明は、メモリバッファのサブシステムを提供し、これは、
多数のバッファ登録部をもつ少なくとも1つのバッファバンクと、
前記バッファのサブシステムを制御するバッファコントローラとを備え、
各バッファ登録部は、
メインメモリバンク内の位置に対応するメモリアドレスを含むアドレス領域と、
メインメモリバンクアドレスに位置する第1のnバイトのデータを含むデータ領域とを含み、
前記メインメモリバンクアドレスに位置する前記データがCPUにより要求された時、前記第1のnバイトのデータは、前記バッファのサブシステムにより、前記CPUに与えられ、一方、前記データの残りは、メインメモリバンク内で前記メモリアドレスから回復される。
【0035】
第4の態様では、この発明はメモリシステムを提供し、これは、
メインメモリの少なくとも1つのバンクと、
メモリコントローラと、
バッファと、および
バッファコントローラとを備え、
前記メモリコントローラは、メインメモリの少なくとも1つのバンクにて制御し、
前記バッファは、多数のバッファ登録部を含み、
各バッファ登録部は、アドレス部分とデータ部分を含み、
前記データ部分は、メインメモリの少なくとも1つのバンク内に第1のデータ部分を備え、前記アドレス部分は、メモリ位置を参照するアドレスを備える。
【発明を実施するための最良の形態】
【0036】
添付した図面に関連して以下の詳細な記述を読むことにより、本発明をより理解することができるであろう。
【0037】
図1を参照すると、この発明の論議をコンテクストに導入する目的のために、通常のCPU−メインメモリシステム10が示されている。このシステムは、一般に、組み込みのレベル1のキャッシュ17を有するCPU15、キャッシュおよびメインメモリコントローラ20、レベルL2のキャッシュ25およびメインメモリ30からなる。ホストデータバス16は、CPUとメインメモリ30とレベルL2のキャッシュ25との間のデータを転送する。ホストアドレスバス18は、メモリコントローラ20およびレベルL2のキャッシュ25にアドレス情報を与える。同様に、データバス21およびアドレスバス22は、コントローラバス23を通じ、キャッシュおよびメモリコントローラ20の制御に基づき、レベルL2のキャッシュをホストバデータス16およびアドレスバス18に接続する。メインメモリ30は、メモリデータバス26を通じホストデータバス16に結合され、そして、アドレスバス27および制御バス28を通じコントローラ20からアドレスおよび制御情報を受け取る。
【0038】
典型的なリード/ライトデータの動作では、CPU15はリードデータ情報を例えばメモリコントローラ20に出力し、そして、アドレス位置を与え、これをコントローラは列および行のアドレスおよびメモリ制御信号に変換する。コントローラ20は、また、レベル2のキャッシュに対し、アドレスおよび制御情報を発生する。データがレベル1のキャッシュに見当たらない場合は、そのコントローラ20は、所望のデータをメインメモリだけでなく、レベル2のキャッシュに対して探す。もし、レベル2のキャッシュにデータが見つかった場合、そのデータは、データバス21を通じてホストデータバス16に供給され、そのデータは次にCPU15に戻す。そのデータは、再度要求されることを予測して、同時にレベル1のキャッシュに書き込まれる。もしそのデータがレベル1のキャッシュまたはレベル2のキャッシュに見当たらない場合(つまり、レベル1およびレベル2のキャッシュの双方でキャッシュミスが発生した時)、コントローラ20は、ページモードアクセスを用い、メインメモリ30からデータを直接にアクセスするように仕向ける。メモリデータバス26を通じデータがCPU15に転送されるのと同時に、CPUが再度そのデータを要求することを予測して、そのデータはレベル1のキャッシュ17にもコピーされる。
【0039】
上述したように、レベル1およびレベル2のキャッシュおよびメモリコントローラからなるこのような通常のシステムは、パフォーマンスを低下させる兆候を示す。今日のアプリケーションは、より高速およびランダム性を要求し、それにより、キャッシュミスおよびメインメモリアクセスを頻繁に発生させる。
【0040】
図2Aおよび2Bを参照すると、この発明の実施例に基づく待ち時間を隠すバッファ100が示される。このバッファは、図1のCPU−メインメモリシステムと共に使用され得る。
【0041】
そのバッファ100は、少なくとも1つのバッファバンク110とバッファコントローラからなる。この発明の実施例に基づく各バッファバンクは、N通りの組みで結合したキャッシュメモリで構成され、そのキャッシュメモリは、多数のラインを含む。各バッファは、要求されたアドレスを、バッファバンクに格納されたアドレスと比較するコンパレータ13を持つ。各ラインは、組みのアドレス部150、タグのアドレス部160、最後に使用されたMRUフラグビット180およびデータ部170を含む。組みの部分150は、バッファラインに格納されたメインメモリアドレス位置の下位の命令ビットに関するものである。タグ部160は、バッファラインに格納されたメインメモリアドレス位置の上位の命令ビットに関するものである。大部分の組みの結合したキャッシュシステムのように、典型的にバッファコントローラは、上位の命令タグビットをアドレスするために、組みのビットを使用する。MRUフラグビット180は、新しいアドレス登録部が挿入された時、どのバッファ登録部を取替えるべきでないかを決定するために使用される。そのデータ部は、組みおよびタグのビットにより特定されたメモリアドレスに関係したデータ(列ヘッド)を含む。1つの実施例では、列ヘッドは、メインメモリ内の列のデータにおける所望のデータビット数の部分のみ含む。たとえば、データの列ヘッドおよびその残りがメインメモリに格納されようとする時、バッファバンク110は、典型的な64バイトキャッシュラインの最初の4データワードを格納する。その結果、バッファバンクは、キャッシュラインの1/4または全キャッシュラインのいくつかの部分を格納する。
【0042】
MRUフラグ180に関しては、MRUフラグビットの組みを有するバッファバンク登録部は、最も最近に使用された登録部であり、取り返るべきでない。これは、一時的な位置の参照は、この登録部がアクセスされるべき次の登録部であることを示すためである。次に要求されたアドレスに対して、バッファは、MRUフラッグビットの組みを持たない登録部に対してサーチされる。バッファ登録部がアクセスされた後で、MRUフラグビットが、特定のバッファ登録部に対してセットされるので、もし、古いバッファ登録部がそれのMRUフラグビットの組みを持つなら、この古いバッファ登録部は、その後、それのMRUフラグビットをリセットし、新しいバッファ登録部を、組みのMRUフラグビットを有する単なる登録部としてそのままにする。バッファ内の各関連する組みに対して、1つのMRUフラグビットがアクティブになり得る。
【0043】
バッファバンクの動作を示すために、1つの例が与えられる。バッファバンクは、デコードされたメモリアドレスをメインメモリコントローラから受け取る。このメモリアドレスの低い命令ビットは、どのバッファバンクおよび、前記バンク内のどの組みが適合するかを決定するために用いられる。メモリアドレスの高い命令ビットはコンパレータ130に与えられる。選択されたバッファラインのタグ領域もコンパレータ130に与えられる。もし、適合するものがあれば、バッファラインに格納の要求されたメモリアドレスは、適合する。その結果は、バッファコントローラに報告され、そしてデータはバッファ内でアクセスされる。
【0044】
図2Bを参照すると、バッファコントローラ10が図示されている。第1のグループの信号190は、バッファバンクから与えられ、選択されたバッファラインがそのMRUの組みであるかそうでないかに拘わりなく、アドレスコンパレータの出力(アドレスの適合、不適合に拘わらない)を含むことができる。第2のグループの信号200は、メインメモリコントローラから与えられる。これらは、メモリアクセスがリードまたはライトに拘わりなく、また、要求された列がアクティブまたはそうでないに拘わりなく、メモリアクセス要求の存在を示すような信号を含むことができる。
【0045】
第3のグループの信号210は、バッファコントローラにより発生され、バッファバンクに供給される。これらは、バッファバンクへのリードまたはライト信号、およびMRUビットのセッティングを含むことができる。第4のグループの信号220は、バッファコントローラにより発生され、メモリコントローラに供給される。これらは、メモリコントローラに対してメインメモリ内の特定の列をラッチするよう指令する信号、メインメモリ内の位置にデータを書き込む信号、または、指定されたオフセットでメインメモリ内の位置にアクセスする信号を含むことができる。
【0046】
上述したバッファは、図1で示したCPUメモリシステムの種々の部品で置き換え可能である。図3A、3B、3Cおよび3Dを参照すると、待ち時間を隠すバッファの可能性ある配置が示されている。
【0047】
図3Aは、図1のすべての要素に、メモリコントローラ120の外部に位置する待ち時間を隠すバッファ100を備えたものからなる。当業者には周知なごとく、図3Aの各ブロックは、個別のチップまたはモジュール上に形成できる。例えば、メインメモリは、典型的に、メインメモリDIMMモジュール(Dual Inline Memory Module)を用いて作製され、そして、CPUおよびレベル1のキャツシュは典型的に、単一のモノシリックのマイクロプロセッサ内に形成される。典型的に個別のチップであるメモリコントローラは、通常、個別のチップとしてレベル2のキャッシュを含むチップセット内のマイクロプロセッサと一体に集積化される。図3Aに示された実施例では、待ち時間を隠すバッファは、前記チップセットに対して統合化された別のチップ上に形成され、場合によっては、レベル2のキャッシュを置き替えるか、またはレベル2のキャッシュと関連して用いられる。図3Bは、DRAMに基づくメインメモリと同一のチップ上にバッファが集積化されている別の可能性のある実施例を示す。図3Cは、レベル1のキャッシュおよびCPUと同一のチップ上にバッファが集積化されている実施例を示す。最後に、図3Dは、メモリコントローラに集積化されたバッファを備え、レベル2のキャッシュを完全に置き換えた好ましい実施例を示す。これらの4つの実施例が示されているが、当業者は、ここで開示されたバッファの利点および概念を採用して、他の可能な結合を想到できるであろう。
【0048】
図4は図3Dに対応するこの発明の好ましい実施例のより詳細な図面を示す。図4から理解されるように、複数のバッファバンク110は、メモリコントローラ20に集積化されている。図4では単一のコンパレータ130が示されているが、各バッファバンク110はそれに関係したコンパレータを持つことに注目すべきである。
【0049】
この発明の好ましい実施例にに基づくメモリコントローラ20は、アドレスデコーダ230、メインメモリおよびキャッシュコントローラ240、バッファバンク110、コンパレータ130およびバッファコントローラ120を備える。アドレスデコーダ230は、要求されたアドレス(MemAddr)およびメモリアクセス信号(MemAcc)をCPUから受け取る。そのアドレスデコーダ230は、要求されたメモリアドレスから次に、メインメモリ内の要求されたアドレスの列アドレスおよひ行アドレスを決定する。
【0050】
要求されたメモリアドレスは、また、バッファ110に送出する。理解されるように、要求されたメモリアドレスの一部(SET)は、バッファバンク110を参照するために用いられる。要求された同じメモリアドレスの他の部分(TAG)は、コンパレータ130に送出される。コンパレータ130は、要求されたタグの分野を、バッファ130内のセット位置に格納されたタグと比較する。もし、要求されたアドレスのタグが、キャッシュ内のセット位置でのタグに適合するなら、バッファの的中が起きる。その位置が適合しないなら、バッファミスが起きる。セットの分野がバッファ110内のタグの分野をインデックスするために用いられる。バッファ110は、N通りの組みの関係するキャッシュメモリを用いて実行されるので、この検索および比較動作はすべてのN個のバッファで同時に起きる。行ったN回の比較がコンパレータ130からバッファ的中(BUFFER HIT)が生じる。比較結果によるバッファ的中はバッファ制御ブロック120に入力され、このブロックは制御信号バッファO/E、バッファR/WおよびCTRLを発生してメインメモリ及びキャッシュコントローラのブロック240に供給する。もし的中があれば、コンパレータ130は、バッファ的中ラインを経由してメインメモリおよびキャッシュコントローラ240へ的中を示す。
【0051】
メインメモリ及びキャッシュコントローラ240は、バッファコントローラ120から制御信号(CTRL)を、そして、CPUからMemAce信号を受け取る。メインメモリおよびキャッシュコントローラ240は、受信した制御信号に基づき、メインメモリを能動化してアクセスするために、要求された信号を発生する。これらの要求された信号は、/RAS(列アドレスストローブ)、/CAS(行アドレスストローブ)および/CS(チップセレクト)の信号を含む。これらの信号は、当業者には周知である。
【0052】
図5を参照すると、図4のメモリコントローラは、存在する2つ以上の信号:列ラッチ(ROW LATCH)および列的中(ROW HIT)を備えている。列ラッチは、メインメモリおよびキャッシュコントローラ240により発生され、アドレスデコーダ230に供給され、現在アクセスされている別の行が認識するまでそのアドレスデコーダ230をラッチし/能動化させるように指示する。アドレスデコーダ230により発生され、そして、メインメモリおよびキャッシュコントローラ240に供給される行的中信号は、メインメモリおよびキャッシュコントローラ240に対し、要求された行が既にラッチされたことを示す。図4および5のメモリコントローラは、共にメモリシステムとして使用できることに注目すべきであり、そのメモリシステムは、レベル2(L2)キャッシュを備えていてもいなくてもよい。
【0053】
説明のために、バッファ登録部のデータは、要求されたメモリアドレスで格納された最初の数バイトであることに気付くべきである。そのため、CPUにはこのデータが与えられるが、要求されたメモリアドレス内のデータの残りは、メインメモリ/キャッシュから回復される。
【0054】
これとは別に、バッファ登録部のデータが、メモリシステムのキャッシュ内のキャッシュラインを十分に満たしてもよい。それにより、バッファ的中時(要求されたメモリアドレスがバッファ内に見つかったとき)、そのバッファは、キャッシュライン全体をキャッシュに与える。このプロセスを援助するために、要求された列アドレス(要求されたアドレスからデコードされた)のラッチ動作は背後で行われてもよい。明確にするために、バッファ的中の有無に関係なく、列アドレスはメインメモリにラッチされてもよい。この構成により、次に要求されたアドレスがバッファになく、先に要求されたアドレスとして同じ列にあるなら、関係のある列はすでにアクティブになっており、これにより、通常、メインメモリアクセスに関係するセットアップおよびアクティブ化の時間を節約できる。この列のラッチ動作を用いる方法は、図5のメモリコントローラを使用するが、このラッチ動作を用いない方法は、図4のメモリコントローラを使用することに気付くべきである。理解できるように、図5のコントローラは2つの特別な信号、列的中および列ラッチを有する。その列的中は、メインメモリ/キャッシュコントローラ240に、(要求されたメモリアドレスを通じて)要求された列が既にラッチされていることを示す。列ラッチ信号は、メインメモリシステム内の特定の列をラッチする必要性をアドレスデコーダ230に、知らせることに役立つ。
【0055】
図6を参照すると、図4のメモリシステムの動作を示したフローチャートが示されている。メモリアクセスに対する初期的なステップは、簡略化の観点でフローチャートから省略されている。要求されたメモリアドレスの受け取り、メモリアドレスをデコードしそしてメモリアクセス要求を受け取るステップは当業者には周知であり、困難を要しない。理解されるように、このプロセスは、要求されたアドレスがバッファ内に見つかったか否かを決定する判定300でスタートする。
【0056】
次に判定310が実行される。これは、メモリアクセスがリードまたはライトのアクセスなのかを決定する。そのアクセスがメモリライトなら、ステップS320に進む。ステップS320は、メインメモリへのライトを実行する。図示されるように、このステップにはバッファは含まれない。これとは別のように、メインメモリにライトされるべきデータをバッファ登録部に書き込むよう選択してもよい。これは、バッファをアクセスする際に要求される通常のステップを含み、そのステップについては後で詳しく述べる。
【0057】
メモリアクセスがリードアクセスなら、そのバッファが利用され、一時的に上述したような並列処理が実行される。2つ以上の矢印が次の動作に供給される時、次の動作を開始する前に2つ以上の先行する動作を完了しなくてはならない。理解されるように、ステップS330、340および350は、ステップS360、370および380と共に並行に実行される。ステップS330、340および350は、メインメモリアクセスに関する。リード動作のために、周知でかつ確立された方法により、メインメモリがアクセスされ(ステップS330)、そのデータは要求されたメモリアドレスを用いて回復され(ステップS340)、そして、回復したデータはCPUに送出される(ステップS350)。3つのすべてのステップは当業者には周知である。ステップS360、370および380は、リードデータのバッファへのコピーに関する。最初、MRUビットがセットされていないバッファ登録部を選出する(ステップS360)。そのMRUビットの非アクティブな特性は、最後にアクセスされたバッファ登録部でないことを意味し、そのため、上書きしてもよい。このようなバッファが選出されると、当該データがバッファ登録部に書き込まれる(ステップS370)。このデータは、セットおよびタグ領域の適した位置にメモリアドレスを含み、メインメモリからデータが読み出される。このステップの後、この登録部に対するMRUビットは、次のメモリアクセスでバッファ登録部が上書きされるのを防止するために、セットされる。
【0058】
バッファ登録部のデータ部に書き込まれたデータは、要求された一部であることに注目すべきである。そのため、バッファがデータの最初の32バイトのみをバッファリングするように構成されているなら、(ステップS340にて)メインメモリから読み出されたデータの全量および一部が、バッファ登録部に書き込まれる。もしバッファがキャッシュライン全体を格納できるように構成されているなら、情報の全量は、メインメモリからのデータから引き出され、バッファ登録部に格納される。
【0059】
再度、図6を参照する。(ステップS300の判定から)要求されたメモリアドレスがバッファ内にあるなら、ステップS390にて、メモリアクセスがリードかライトなのかが判定される。メモリリードなら、上述した一時的な並行処理が有利に採用される。ステップS400、410および420は、バッファで実行される動作およびバッファにより実行される動作であり、一方、ステップS430、440および450は、そのバッファによる処理と同時に又は並行して、メモリにより実行されるステップである。
【0060】
理解されるように、ステップS400は、関係あるバッファ登録部のリードに関する。これは、バッファ登録部のデータ部に格納されたデータのリードを含む。この後、ステップS410にてバッファ登録部からリードされたデータをCPUに送出する。最後に、前記バッファ登録部に対するMRUビットがセットされる。
【0061】
上述と同様に、メインメモリ内の対応するアドレス位置が要求されたメモリアドレスを用いてアクセスされる(ステップS430)。データの残りは、次に、予め設定したオフセットを用いてメインメモリからリードされる。バツファがデータの最初の32バイトを格納できるように設計されているなら、メインメモリのデータリードは、32バイト後からであり、これは通常、メモリリードの開始である。これにより、もし、メモリリードがポイントXからであるなら、メインメモリリードは、X+32バイトから、バッファからCPUに送出されるデータに対する量となる。通常、バッファがそのデータをCPUへ送出した時間により、メインメモリをアクセスするのに要するセットアップ時間を超えてしまう。
【0062】
このことは従って、CPUがバッファからのデータ受信を完了した時、メインメモリから到来する要求されたデータの残りは、丁度、CPUに到着している。ステップS450では、そのデータを実際に送出し、このステップは、メインメモリアクセスに対して実行される最後のステップとなる。
【0063】
一方、メモリアクセスがライトアクセスならば、ステップS460、470および490が実行される。図6からわかるように、ステップS460および470はステップS480および490と並列に実行される。ステップS460では、書き込まれるべきデータが、関係するバッファ登録部に書き込まれる。この結果、要求されたアドレスに対応して見つかったバッファ登録部は、データが供給されたCPUにより上書きされる。バッファ登録部が次のメモリアクセスで上書きされるのを防止するために、この後、バッファ登録部のMRUビットがセットされる。これらのステップに呼応して、ステップS480および490はメインメモリに関係する。ステップS480ではメインメモリがアクセスされる。このステップにおいて、メインメモリをアクセスするために、関係があり、必要な信号が発生される。ステップS440にて同じデータをリードする時に反して、メインメモリにデータを書き込む時はオフセットを必要としないことに注目すべきである。これに対する理由は、完全なデータがメインメモリに書き込まれる時はオフセットは必要ないからである。メインメモリおよびバッファの双方に書き込むことにより、古いデータの出力が回避される。
【0064】
上述したプロセスは、バッファが要求されたデータの始まりの部分のみをバッファリングするように設計された時に、最良の結果を生む。しかしながら、上記方法を避けるために、キャッシュライン全部を格納することを用いることはできないことは言うまでもない。キャッシュライン全部を格納するバッファは、上述した方法の利点をもつことができる。
【0065】
上記方法の概念に追加された工夫は、ラッチされたアクティブの列を維持することにある。要求されたアドレスは、メインメモリにおける列に関する。第2の要求されたアドレスが到来した時に前記列が既にアクティブなら、かつ、第2の要求されたアドレスが同じ列に関するなら、データの回復はより早くなる。要求された列をアクセスするためのセットアップ時間が省略されるからである。列は既にアクティブである。バッファと結合されると、ラッチされた列を維持することの概念は、加速されたメモリアクセス速度の条件で多くの利点を与える。
【0066】
図7を参照すると、図5のメモリコントローラを用いて実行できるプロセスのステップを示したフローチャートが示される。アクセスのリードのために用いられるべきこのプロセスは、上述に関する、列ラッチの概念を用いる。ステップS500で開始し、メモリアクセスが初期化される。このステップは、要求されたメモリアクセスを受け取り、そしてメモリアクセスがリードアクセスであると決定することを含む。次にステップS510が実行される。このステップは、要求されたメモリアクセスをデコードし、そして、要求されたアドレスがどの列にあるかを決定することを含む。この時点で、プロセスは、バッファが与える一時的な並行処理の利点をもつ。ステップS520および530は同時に実行される。これにより、要求された列が既にアクティブなのかどうか、および、要求されたアドレスがバッファ内にあるかどうかのチェックがなされる。
【0067】
もし、バッファが要求されたデータの始まりの部分、つまり列のヘッドのみをバッファリングするのであれば、図7のフローチャートの左のほとんど、および右のほとんどの分岐が容易に実行される。ステップS530および520の判定で共に“Y”の場合、ステップS540、550、560、570、580、590および600が並列に実行される。これにより、データの最初の部分はバッファ登録部から回復され(ステップS540)、そして、CPUに送出させる(ステップS550)。ステップS550は、列アドレスが非アクティブなら、より高速に達成される。メインメモリのアクセスに関係する通常のアクティブ化の時間が回避される。理想的にはこのメインメモリのアクセスは高速ページモード(FPM)を用いて実行される。要求されたデータの残りは、メインメモリから回復される(ステップS570)。しかしながら、この回復は、CPUへ既に送出したデータを補うために(ステップS580)、上述と同じようような方法でオフセットを用いて実行される。一方、バッファに対し、アクセスされたバッファ登録部はそのセットされたMRUビットをもつ。メインメモリに対しては、アクティブな列が次のメモリアクセスのためにアクティブを維持する。ステップS530の判定で“Y”となり、一方、ステップS520での判定で“N”であったなら、ステップS540、550および590がバッファにより実行され、一方、ステップS610、620、630および640は、バッファを有するメインメモリシステムにより実行され、そのメインメモリシステムは並列動作する。メインメモリシステムのために、ステップS610では、周知のランダムアクセス技術を用いて、メインメモリをアクセスする。これは、適した/CAS /RAS 及び /CS 信号を適した時間に送出する。ステップS620では、バッファによりステップS550にて既にCPUに供給されたデータを補償するために、行オフセットを用いてメインメモリから要求されたデータの残りを回復する。ステップS630では、これにより、この回復されたデータをCPUに送出する。ステップS640では、列アドレスがアクセスされてアクティブにされた時、次のメモリアクセスの予想時に、列アドレスのアクティブ状態を維持する。
【0068】
ステップS520の判定で“Y”となり、ステップS530では“N”であれば、バッファはステップS650、660および670を実行し、一方、メインメモリシステムはステップS560、570、580および600を実行する。そのため、要求されたデータがバッファ内に存在しないなら、その後、バッファ内に入れられなければならない。ステップS650では、取替えるためにバッファ登録部を選択する。これは、MRUがセットされていないバッファ登録部の選択を含む。これが実行されている間、メインメモリシステムは、(上述したステップS560および570を参照)要求されたデータを、オフセットなしでメインメモリから回復する。要求されたデータの第1の部分を送出していない時、そのオフセットは用いられない。そのため、その部分を補償する必要がない。
【0069】
一旦、メインメモリからデータが回復されると、回復されたデータの第1の部分は、その後、選択されたバッファ登録部に格納される(ステップS660)。その後、MRUビットは、次のメモリアクセスで上書きされないように、このバッファ登録部にセットされる。
【0070】
ステップS520および530の判定で共に“N”であったなら、メインメモリシステムは、ステップS610、620、630および640を実行し、一方、バッファはステップS650、660および670を実行する。バッファは、データを回復するためにアクセスされなず、そこに書き込まれたデータを持つだけなので、その後のステップS620では、補償するものがないので、メインメモリシステムはオフセットを用いない。
【0071】
図7中の接続AおよびBは、上述したステップのほとんどは並列に実行されるが、いくつかのステップはほかのものより先に実行されることを示すために用いられることに気付くべきである。例として、ステップS550が実行された後、ステップS590、580および600が並列に実行される(接続Bを参照)。もし、他方、ステップS520の判定で“N”となり、ステップS530の判定で“Y”であったなら、ステップS550の後にステップS590、630および640が並列に実行される(接続Bを参照)。これとは別に、ステップS520の判定で“Y”となり、ステップS530の判定で“N”であったなら、接続Aが示すように、ステップS580および600がステップS660および670と並列に実行される。
【0072】
図8を参照すると、書き込み動作のためのステップが示される。そのプロセスは、メモリアクセスの初期化で始まる(ステップS680)。上述から気付くように、これは、要求されたアドレスをデコードし、CPUからライト命令を受け取り、そして要求されたアドレスをメモリデコーダとバッファに送出することを含む。次に、メインメモリシステムは、ステップS690、700および710を実行し、これと並列に、バッファはステップS720、730(もし要求あれば)、740、750および760を実行する。
【0073】
メインメモリシステムのために、ステップS690にて、FPMを用いるが、あるいは用いずに、メインメモリをアクセスする。ステップS700では、データがメインメモリに書き込まれ、そしてステップS710にて、次のメモリアクセスのために、アクセスされた列のアクティブ状態が維持される。(アクティブな列の個数は、システム設計者の判断にまかされることに気づくべきである。そのような設計者は、DRAMバンクにつき、1列のみをアクティブにするか、バンクにつき、複数のアクティブの列を持つように希望してもよい。)バッファに対する最初のステップであるステップS1において、要求されたアドレスがバッファ内にあるかの判定がなされる。もし要求されたアドレスがバッファ内にあるなら、データがバッファ登録部に書き込まれる(ステップS740)。他方、要求されたアドレスがバッファ内に無い時は、バッファ登録部が取替えられる。そのため、ステップS750では、取替えられるべきバッファが選択される。これは、MRUビットがセットされていないバッファ登録部の選択を伴う。その後、取替えられるべきこのバッファ登録部が一旦、選択されると、データがそれに書き込まれる(ステップS740)。ステップS740にて書き込まれるバッファ登録部は、要求されたアドレスがバッファ内にあるかに依存する。もし存在するなら、データは選択されたバッファ登録部に書き込まれる。もし存在しなければ、取替えられる、または上書きされるバッファ登録部が選択される。その後、データがバッファ登録部に一旦書き込まれると、前記バッファ登録部に対してMRUをセットする。そのデータは、バッファおよびメインメモリの双方に書き込まれ、両者でデータを一致させる。この例では、データの始めの部分(つまり列ヘッド)のみがバッファに書き込まれることに気付くべきであり、このことはこの例に対してバッファがいかにして形成されるかを示す。
【0074】
図8に示したライトプロセスはまた、バッファが一杯のキャッシュラインをバッファリングするように形成された場合にも適用できる。この例と上述した例との唯一の差異は、プロセッサキャッシュライン全部がバッファ内に蓄えられる点である。
【0075】
バッファがキャッシュライン全部をバッファリングする時のリードアクセスに対して、いくつかの可能性が存在する。上述で気付くように、もし、アクセス後に列アクティブを維持するプロセスが用いられるなら、図5の特別な列的中および列ラッチを有するメモリコントローラが使用される。図9および図10は、図7に示したプロセスに似る2つの可能なプロセスを示す。図9および図10の方法は、要求されたアドレスがバッファ内およびアクティブな列内に見つかったなら、デフォールト位置を持つ点で異なる。図9において、もし要求されたアドレスがアクティブな列内とバッファ内に見つかったなら、データはバッファから回復される。図10において、同じことが事実なら、次にメインメモリがアクセスされる。
【0076】
図9および図10を参照すると、バッファがキャツシュライン全部をバッファリングするために形成されているなら、および、列ラッチの概念が用いられるなら、リード動作のための2つの似たプロセスが示されている。これらの2つのプロセスは、要求されたアドレスがバッファとアクティブな列の双方に存在する時のみ、異なる。
【0077】
図9を参照すると、周知の方法および上述した他のプロセス内でのメモリアクセスの実行と同様な方法により、メモリアクセスがステップS770にて実行される。要求されたメモリアドレスは次にステップS780にてデコードされる。次のステップS790および800にて並列に実行される。要求されたアドレスがバッファ内にあるかを見るために、バッファがチェックされ(ステップS790)、そして、要求されたアドレスがアクティブな列内にあるかを見るために、アクティブな列がチェックされる。これらのチェックに基づき、一連の判定がなされる。判定のステップS810は、要求されたアドレスがバッファおよびアクティブな列の双方にあるかがチェックされる。“Y”と判定されたなら、その後、2つの分岐(一方がステップS820で他方がステップS830、840、850および860)が並列に実行される。ステップS820では、ステップS800で見つかった列のアクティブ状態が維持されることに注目する。ステップS830、840、850および860は、バッファ内で並列に実行される。ステップS830では、バッファへのアクセスが実行される。ステップS840は、バッファから要求されたデータを、前記要求されたアドレスに対応するバッファ登録部から実際に回復する。その後、この回復されたデータは、CPUに送出される(ステップS850)。前記バッファ登録部が次のメモリアクセスで上書きされないように、そのバッファ登録部で見つかったMRUビットは、ステップS860にてセットされる。
【0078】
もしステップS810の判定で“N”となったなら、次にステップS870の判定がなされる。ステップS870は、要求されたアドレスがアクティブな列内にあり、バッファ内に無いかを判定する。もし、その場合、メインメモリのステップS880、890、900および910の実行と並列に、バッファがステップS920、930、940および940を実行する。メインメモリシステムに対しては、ステップS880にて、高速ページモードを用いてメインメモリにアクセスする。これは、要求されたアドレスが既にアクティブにある列内にある時に実行される。次のステップS890は、メインメモリからデータを回復する。ステップS900は、回復したデータをCPUに送出する一方、ステップS910は列のアクティブ状態を維持する。バッファに対しては、そのプロセスの部分は、バッファ内に回復したデータを格納するために実行される。ステップS920は、取替えられるバッファ登録部を選択する。一旦、バッファ登録部が選択されると、ステップS890にて回復されたデータは、選択されたバッファ登録部に格納さ(ステップS930)、これにより、選択されたバッファ登録部の古いコンテンツに対して上書きされる。次のステップS940は、次のデータアクセスでこの特定のバッファ登録部が上書きされないように、MRUビットをセットする。しかしながら、接続CはステップS890の実行後のみ、ステップS930が実行されることに気付くべきである。データがメインメモリから回復された(ステップS890)後のみ、データがバッファ登録部に書き込まれる(ステップS930)。
【0079】
もしステップS870にて“N”となったなら、判定のステップS950に進む。この判定は、要求されたアドレスがアクティブな列内にあるかを決定する。もし、その決定が真実なら、メインメモリシステムによるステップS1000、1002、1004および1006の実行と並列に、バッファは、ステップS960、970、980および990を実行する。バッファにおいて、ステップS960でバッファへのアクセスが行われる。ステップS970は、バッファから要求されたデータを実際に回復し、一方、ステップS980では要求され、回復されたデータをCPUに送出する。バッファに対して先の分岐で実行されたように、ステップS990は、バッファ登録部が次のデータアクセスで上書きされないように、MRUビットがセットされる。MRUビットをセットするステップはまた、別のバッファ登録部に対して先に行ったMRUビットのセットを解除することを含むことは明白である。このように、単一のバッファ登録部が、セットされたMRUビットを持つ。同様に、メインメモリ内の列をアクティブにするステップ(ステップS1000)も、先にアクティブであった列を非アクティブにすることを含む。このように、一度に最小の列がアクティブにされる。列がアクティブにされた後、ステップS1002にあるように、メインメモリからデータがアクセスされる。このデータは、その後、CPUに送出され(ステップS1004)、そして、列のアクティブ状態が維持される(ステップS1006)。メインメモリシステムの形態に依存して、メインメモリシステム全体の中で1つの列のみがアクティブにされてもよく、または、(複数のバンクメインメモリシステムに対して)メインメモリバンクにつき1つの列がアクティブにされる。最終の末端ユーザーの要求に依存して、異なる形態が採用されてもよい。
【0080】
再度、ステップS870の判定で“N”であれば、メインメモリシステムおよびバッファシステムは、一連のステップを並列に実行する。メインメモリシステムがステップS1040、1050、1060および1070を実行する一方、バッファに対しては、ステップS1010、1020および1030が実行される。バッファに対するステップS1010は、MRUビットがセットされていないバッファ登録部の選出を含む。このバッファ登録部のコンテンツは、回復されるべき新しいデータに置きかえられる。ステップS1050にてメインメモリシステムによりデータが回復され、ステップS1020は、その回復されたデータを選択されたバッファ登録部に書き込むことを含む。ステップS1030では、選択されたバッファ登録部に対し、MRUビットをセットする。
【0081】
メインメモリシステムに対しては、ステップS1040にて、要求されたアドレスに格納されたメインメモリのデータをアクセスする。このメモリアクセスは、FPMが使用できず、要求された列がアクティブでない時、周知のランダムアクセス方法を用いて実行される。ステップS1050は、メインメモリがステップS1040にてアクセスされた後、メインメモリからデータを回復することを含む。この回復されたデータは、ステップS1060にてCPUに送出される。このデータは、ステップS1020にて選択されたバッファ登録部に書き込まれたデータと同じか、それの一部である。次にステップS1070は、(ステップS1040にて)アクセスされた列を、アクティブとして設定し、これにより、次のメモリアクセスで、もし可能なら、FPMの使用が可能になる。
【0082】
上記した接続Cと同様に、接続Dは、ステップS1020は、ステップS1050が実行された後にのみ実行され得ることを示す。これにより、ステップS1050が実行された後のみ、ステップS1020および分岐した他のその後のステップが実行される。(ステップS1050で)データが回復された後のみ、同じデータがバッファ登録部に書き込まれる(ステップS1020)。
【0083】
図10においては、第1の判定(ステップS810)で“Y”となった場合に実行されるステップを除き、フローチャート中のすべてのステップは図9のものと同じである。もし、その場合、つまり、要求されたアドレスがバッファおよびアクティブな列の双方にある場合、バッファがステップS1120を実行する一方、メインメモリはステップS1080、1090、1100および1110を実行する。
【0084】
メインメモリシステムに対し、ステップS1080では、FPMを用い、メインメモリにアクセスされる。これは、ステップS810の判断にて、要求されたアドレスがアクティブな列にあると決定された時に実行される。データを実際に回復するステップS1090は、ステップS1080の後に実行される。ステップS1100では、回復されたデータがCPUに送出され、ステップS1110では、今アクセスされた列のアクティブ状態が維持される。バッファに対しては、ステップS1120にて、要求されたアドレスに対応するバッファ登録部に対してMRUビットをセットする。このことを効果的に言うと、バッファ登録部は、そのコンテンツがリードされなくても、あるいは修正されなくても、アクセスされた最後のものである。
【0085】
上述した装置およびプロセスに対する他の多くの形態が可能である。レベル2のキャッシュを使用でき、それへのアクセスは、上述した概要のプロセスに適用できる。
【0086】
上述した発明を理解した人は、ここで述べた原理を用いて別の設計を計画することができる。添付した請求の範囲内に収まるこのようなすべての設計は、本発明の一部である。
【図面の簡単な説明】
【0087】
【図1】従来技術によるCPUメモリシステムの概略ブロック図
【図2A】この発明に基づくバッファバンクの概略図
【図2B】図2Aのバッファバンクを制御するバッファコントローラのブロック図
【図3A】メモリコントローラから分離してバッファシステムを実行するメモリシステムのブロック図
【図3B】メインメモリの一部としてバッファシステムを実行するメモリシステムのブロック図
【図3C】CPUの一部としてバッファシステムを実行するメモリシステムのブロック図
【図3D】メモリコントローラの一部としてバッファシステムを実行するメモリシステムのブロック図
【図4】この発明の実施のための詳細ブロック図
【図5】図4に示した実施の変形例である詳細ブロック図
【図6】この発明の第1の態様に基づくメモリアクセスの方法におけるステップを示したフローチャート
【図7】この発明の第2の態様に基づくメモリアクセスの方法におけるステップを示したフローチャート
【図8】図7に示した方法で使用されるべきライトアクセス法のためのステップを示したフローチャート
【図9】この発明の第3の態様に基づくメモリアクセスの方法におけるステップを示したフローチャート
【図10】図9に示した方法の変形例におけるステップを示したフローチャート
【符号の説明】
【0088】
10 CPUメインメモリシステム
15 マイクロプロセッサ
17 L1キャッシュ
20 キャッシュ及びメインコントローラ
25 L2キャシュ
30 メインメモリ
100 待ち時間を隠すバッファ
110 バッファバンク

Claims (15)

  1. メモリシステムからデータを回復する方法であってこの方法は、
    (a)メモリ位置のデータコンテンツに対するリード要求を受け取り、
    (b)前記データコンテンツの一部のために、前記メモリシステムのバッファ部を検索し、
    (c)前記データコンテンツの前記一部が前記バッファに格納されている場合に、前記バッファから前記一部を回復し、一方、同時に、前記メモリシステムのメインメモリ部から前記データコンテンツの残りの一部を回復し、
    (d)前記データコンテンツの前記部分が前記バッファに格納されていない場合に、メインメモリから前記データコンテンツの前記一部および前記残りの一部を回復することを含む。
  2. 請求項1の方法であって、更に以下のステップを含む。
    (e)前記コンテンツの前記一部が前記バッファ内に格納されていないなら、前記バッファ内に、回復されたデータの前記一部および前記残りの一部を格納する。
  3. 回復されたデータのコンテンツの前記一部が、前記バッファ内の登録部に取り替わる請求項2記載の方法。
  4. メモリ位置へのデータ書き込み要求が受信されたなら、前記データはメインメモリ内のメモリ位置に書き込まれ、そして前記データの一部が前記バッファに書き込まれる請求項2記載の方法。
  5. 前記一部が前記バッファ内の登録部に取り替わる請求項4記載の方法。
  6. 前記データは、前記メモリ位置と前記バッファとに同時に書き込まれる請求項4記載の方法。
  7. 前記メモリ位置へのリード要求が受信される毎に、メインメモリ内の前記メモリ位置を含むメモリ列がラッチされる請求項1記載の方法。
  8. 最後にアクセスされた前記バッファ内の登録部がマークされ、これにより、前記バッファ内のただ1つの登録部が、いずれかの時間にマークされる請求項1記載の方法。
  9. 最後にアクセスされた前記バッファ内の登録部がマークされ、これにより、前記バッファ内のただ1つの登録部が、いずれかの時間にマークされ、そして、前記一部が、前記バッファ内のマークされた登録部以外の登録部に取り替わる請求項5記載の方法。
  10. 前記メインメモリ内の各メモリバンク内の特定のアクティブな列を維持することを更に含み、前記特定の列は、各メモリバンク内で最後にアクセスされた列である請求項1記載の方法。
  11. 列ヘッドをラッチするための列ヘッドバッファ回路であって、この列ヘッドは、メモリバンクに格納されたメモリ列の一部であり、前記ラッチする回路は、
    各列ヘッド登録部は、メモリバンク内の列ヘッドに対応し、前記列ヘッド登録部を多数含む列ヘッドバッファと、
    列ヘッドバッファ内に含まれる列ヘッド登録部の物理的アドレスをラッチする列アドレスラッチの多数と、
    列ヘッド登録部を、到来する要求された列アドレスと比較するための列アドレスコンパレータとを備え、
    到来する要求された列アドレスが前記多数のアドレスラッチの1つに適合する時、前記バッファ回路は、メモリコントローラによって要求される、到来る列アドレスを、前記多数の列アドレスラッチと比較し、アドレスラッチの適合に対応する列ヘッドデータ登録部は、前記メモリコントローラに送信される。
  12. 前記機構は、メモリバンク毎のラッチされた少なくとも1つの列アドレスをメモリコントローラに送出することにより、メモリバンク毎の少なくとも1つの列アドレスをアクティブに保つ請求項11に記載のバッファ回路。
  13. 前記バッファ回路は、前記メモリコントローラを通じ、少なくとも1つのメモリバンクをアクティブに保つ請求項11記載のバッファ回路。
  14. メモリバッファのサブシステムであって、
    多数のバッファ登録部をもつ少なくとも1つのバッファバンクと、
    前記バッファのサブシステムを制御するバッファコントローラとを備え、
    各バッファ登録部は、
    メインメモリバンク内の位置に対応するメモリアドレスを含むアドレス領域と、
    メインメモリバンクアドレスに位置する第1のnバイトのデータを含むデータ領域とを含み、
    前記メインメモリバンクアドレスに位置する前記データがCPUにより要求された時、前記第1のnバイトのデータは、前記バッファのサブシステムにより、前記CPUに与えられ、一方、前記データの残りは、メインメモリバンク内で前記メモリアドレスから回復される。
  15. メモリシステムであって、
    メインメモリの少なくとも1つのバンクと、
    メモリコントローラと、
    バッファと、および
    バッファコントローラとを備え、
    前記メモリコントローラは、メインメモリの少なくとも1つのバンクにて制御し、
    前記バッファは、多数のバッファ登録部を含み、
    各バッファ登録部は、アドレス部分とデータ部分を含み、
    前記データ部分は、メインメモリの少なくとも1つのバンク内に第1のデータ部分を備え、前記アドレス部分は、メモリ位置を参照するアドレスを備える。
JP2002547003A 2000-11-30 2001-11-28 メモリシステムでの待ち時間を減じるための方法および装置 Pending JP2004520643A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CA2327134A CA2327134C (en) 2000-11-30 2000-11-30 Method and apparatus for reducing latency in a memory system
PCT/CA2001/001686 WO2002044904A2 (en) 2000-11-30 2001-11-28 Method and apparatus for reducing latency in a memory system

Publications (1)

Publication Number Publication Date
JP2004520643A true JP2004520643A (ja) 2004-07-08

Family

ID=4167774

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002547003A Pending JP2004520643A (ja) 2000-11-30 2001-11-28 メモリシステムでの待ち時間を減じるための方法および装置

Country Status (3)

Country Link
EP (1) EP1350168A2 (ja)
JP (1) JP2004520643A (ja)
CA (1) CA2327134C (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009537921A (ja) * 2006-05-22 2009-10-29 インターナショナル・ビジネス・マシーンズ・コーポレーション リモート・プリフェッチ・バッファを提供するためのシステム及び方法
JP2013149091A (ja) * 2012-01-19 2013-08-01 Renesas Electronics Corp メモリ制御装置及び制御方法並びに情報処理装置
JP2016006662A (ja) * 2015-08-04 2016-01-14 ルネサスエレクトロニクス株式会社 メモリ制御装置及び制御方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009537921A (ja) * 2006-05-22 2009-10-29 インターナショナル・ビジネス・マシーンズ・コーポレーション リモート・プリフェッチ・バッファを提供するためのシステム及び方法
JP2013149091A (ja) * 2012-01-19 2013-08-01 Renesas Electronics Corp メモリ制御装置及び制御方法並びに情報処理装置
JP2016006662A (ja) * 2015-08-04 2016-01-14 ルネサスエレクトロニクス株式会社 メモリ制御装置及び制御方法

Also Published As

Publication number Publication date
CA2327134A1 (en) 2002-05-30
CA2327134C (en) 2010-06-22
EP1350168A2 (en) 2003-10-08

Similar Documents

Publication Publication Date Title
US7318123B2 (en) Method and apparatus for accelerating retrieval of data from a memory system with cache by reducing latency
US6442666B1 (en) Techniques for improving memory access in a virtual memory system
US6381671B1 (en) Semiconductor integrated circuit and data processing system
US6757784B2 (en) Hiding refresh of memory and refresh-hidden memory
US5353426A (en) Cache miss buffer adapted to satisfy read requests to portions of a cache fill in progress without waiting for the cache fill to complete
US7200713B2 (en) Method of implementing off-chip cache memory in dual-use SRAM memory for network processors
US6587920B2 (en) Method and apparatus for reducing latency in a memory system
JP6859361B2 (ja) 中央処理ユニット(cpu)ベースシステムにおいて複数のラストレベルキャッシュ(llc)ラインを使用してメモリ帯域幅圧縮を行うこと
KR19980079433A (ko) 비포함 캐쉬 메모리 계층 구조에서 사용하기 위한 캐쉬 일관성 메카니즘 구현 방법 및 시스템
JP2000507010A (ja) 画素エンジン・データ・キャッシング機構
US20060059309A1 (en) Cache memory system and control method of the cache memory system
US11921650B2 (en) Dedicated cache-related block transfer in a memory system
JP2008129712A (ja) 情報処理装置およびデータ検索方法
JP2021530028A (ja) 記憶システムをメインメモリとして使用するための方法および装置
CN115481054A (zh) 数据处理方法、装置及***、***级soc芯片及计算机设备
US7596661B2 (en) Processing modules with multilevel cache architecture
JP2004520643A (ja) メモリシステムでの待ち時間を減じるための方法および装置
US7149848B2 (en) Computer system cache controller and methods of operation of a cache controller
JP2004240616A (ja) メモリコントローラ及びメモリアクセス制御方法
US8493398B2 (en) Dynamic data type aligned cache optimized for misaligned packed structures
US6694408B1 (en) Scalable replacement method and system in a cache memory
JP2006285727A (ja) キャッシュメモリ装置
JPH08221323A (ja) キャッシュメモリ方式
JPH04369061A (ja) キャッシュメモリの制御方式
JP2000148587A (ja) 記憶装置および記憶領域の決定方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041125

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070123

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070423

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070604

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070724