JP2004326734A - メモリバンド幅損失を低減するディレクトリベースのコヒーレンシ方式 - Google Patents
メモリバンド幅損失を低減するディレクトリベースのコヒーレンシ方式 Download PDFInfo
- Publication number
- JP2004326734A JP2004326734A JP2004043852A JP2004043852A JP2004326734A JP 2004326734 A JP2004326734 A JP 2004326734A JP 2004043852 A JP2004043852 A JP 2004043852A JP 2004043852 A JP2004043852 A JP 2004043852A JP 2004326734 A JP2004326734 A JP 2004326734A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- bits
- directory
- tag
- cache
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches 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)
- Multi Processors (AREA)
- Memory System (AREA)
Abstract
【解決手段】 メモリシステムにおいて、メモリユニットは、データビットおよび関連する情報ビットを含むキャッシュラインを記憶する複数のメモリモジュールを備える。データバスは、メモリモジュールとの間でデータビットの読み出および書き込みを行う。情報バスは、メモリモジュールとの間で情報ビットの読み出しおよび書き込みを行う。メモリコントローラは、メモリユニットへのアクセスを制御し、第1のメモリモジュールからデータバスおよび第1の情報バスを介して第1のキャッシュラインを読み出し、かつ、並列動作で、先に読み出された第2のキャッシュラインの一組の更新された情報ビットを第2の情報バスを介して第2のメモリモジュールに書き込む。
【選択図】図4
Description
その結果、システムのメインメモリは、高速なプロセッサの要求に必ずしもついて行けるとは限らない。
これは、特に、マルチプロセッサシステムまたは分散コンピュータシステムについて当てはまる。
これらのシステムは、複数のプロセッサを利用して並列処理を実行することにより、従来のシングルプロセッサシステムを上回る大幅な性能向上を提供することができる。
より多くのより高速なプロセッサがマルチプロセッサシステムに加えられて、メインメモリへのアクセスを得るために競争するので、プロセッサのメモリアクセス回数は、一般に増加する。
その結果、メインメモリバンド幅は、高性能データ処理システムでは、重大なボトルネックに変わってきた。
例えば、低速メモリ、中速メモリ、および高速メモリから3段メモリを構成することができる。
低速メモリは、データの低コスト大容量記憶を行う磁気ディスクとすることができる。
中速メモリは、コンピュータシステムのメインメモリとして使用されるダイナミックランダムアクセスメモリ(DRAM)から構成することができる。
高速メモリは、プロセッサのキャッシュメモリとして使用されるスタティックランダムアクセスメモリ(SRAM)を使用することができる。
メモリ階層の背景にある理論は、システムプロセッサが使用する命令およびデータを最高速のメモリにグループ化することである。
このような高速メモリは、通常、利用可能な最も高価なメモリであり、したがって、経済的側面から、高速メモリを相対的に小さくすることが要求される。
キャッシュシステムは、通常、キャッシュラインと呼ばれるデータブロックでデータを転送する。
プロセッサが、キャッシュメモリに含まれていない追加データを要求すると、そのようなデータを含むキャッシュラインが、メインメモリから転送されて、キャッシュメモリ内の選択されたキャッシュラインを取り替える。
どのデータを取り替えるかを決定するのに、さまざまな技法またはアルゴリズムが利用される。
キャッシュメモリに含まれるデータは、メインメモリのデータを複製したものであるので、あるメモリのデータを変更すると、他のメモリも同様に変更しなければならないか、または、他のメモリに変更を記録しなければならない。
例えば、キャッシュメモリのデータが変更されると、メインメモリの対応するデータを同様に変更しなければならない。
キャッシュデータとメインメモリのデータとの間の一貫性を維持する問題は、キャッシュコヒーレンシの維持と呼ばれる。
ディレクトリベースのコヒーレンシ方式は、キャッシュラインがシステム全体にわたって存在するので、集中タグディレクトリを利用して、キャッシュラインの場所およびステータスを記録する。
例えば、このディレクトリは、どのプロセッサのキャッシュがデータの複製を有するかを記録し、さらに、キャッシュのいずれかがデータの複製を更新したかどうかを記録する。
プロセッサが、データ項目を得るためにメインメモリに対してキャッシュリクエストを作成すると、中央ディレクトリが調べられて、そのデータの最も新しい複製が存在する場所が決定される。
この情報に基づいて、キャッシュラインの最も新しい複製が検索され、その結果、その最も新しい複製を、要求を行ったプロセッサのキャッシュメモリに提供することができる。
その後、中央タグディレクトリは、そのキャッシュラインの新しいステータスを反映するように更新される。
このように、プロセッサによる各キャッシュラインの読み出しには、タグディレクトリの更新(すなわち書き込み)が伴う。
従来のコンピュータシステムの典型例のタグの更新の結果、メインメモリのバンド幅の約50%が失われる。
しかしながら、タグディレクトリの更新に付随したバンド幅損失は、システムが使用するキャッシュラインのサイズ、採用されたメモリ技術、使用される誤り訂正符号(ECC)方式、およびメインメモリのタグディレクトリのレイアウトに応じて変化する。
このメモリシステムは、メモリユニット、データバス、複数の情報バスおよびメモリコントローラを備える。
該メモリユニットは、複数のキャッシュラインであって、各キャッシュラインが、複数のデータビットおよび関連する複数の情報ビットを含む、複数のキャッシュラインを記憶する複数のメモリモジュールを備える。
該データバスは、メモリモジュールのそれぞれに接続され、メモリモジュールからデータビットを読み出し、メモリモジュールにデータビットを書き込むように構成される。
複数の情報バスのうちの1つの情報バスは、メモリモジュールのそれぞれに1つずつ接続され、メモリモジュールから情報ビットを読み出し、メモリモジュールに情報ビットを書き込むように構成される。
該メモリコントローラはメモリユニットへのアクセスを制御し、第1のメモリモジュールからデータバスおよび第1の情報バスを介して第1のキャッシュラインを読み出し、かつ、並列動作で、先に読み出された第2のキャッシュラインの一組の更新された情報ビットを第2の情報バスを介して第2のメモリモジュールに書き込むように構成される。
図面の構成要素は、必ずしも互いに同一縮尺であるとは限らない。
同じ参照符号は、対応する同様の部分を示す。
添付図面では、本発明を実践することができる特定の実施の形態を例として示す。
他の実施の形態を利用することができ、構造上の変更または論理的な変更を、本発明の範囲から逸脱することなく行い得ることが理解されるべきである。
したがって、以下の詳細な説明は、限定する意味に取るべきではなく、本発明の範囲は、添付の特許請求の範囲によって画定される。
コンピュータシステム30は、バス34に接続されたプロセッサ32、バス34とバス38との間に接続されたメインメモリシステム36、およびバス38に接続された不揮発性大容量ストレージメモリ50を含む。
一実施の形態では、大容量ストレージメモリ50は、磁気ディスクからなる。
プロセッサ32は、高速のマイクロプロセッサメモリアクセス用のメモリキャッシュ40を含む。
メモリキャッシュ40は、一般に、レベル1(L1)キャッシュとして知られており、通常は、プロセッサ32の速度で動作する高速メモリからなる。
この高速メモリとしては、例えばSRAMがある。
メインメモリシステム36は、リンク44を介してメインメモリユニット46に接続されたメモリコントローラ42を含む。
メインメモリユニット46は、さらに、タグディレクトリ48を含む。
メインメモリユニット46は、一般に、レベル2(L2)キャッシュとして知られており、通常は、DRAMデバイスからなる。
一例として、メモリコントローラ42が、磁気ディスク50からデータバス38およびリンク44を介してメモリユニット46にデータを転送する。
プロセッサ32は、実行のためにキャッシュメモリ40に転送するデータをメインメモリユニット46から選択する。
メインメモリユニット46からのデータは、キャッシュラインとして知られているシステム定義のデータブロックでキャッシュメモリ40に転送される。
メモリキャッシュ40は、メモリユニット46のデータのわずかな部分しか保持できないので、プロセッサ32は、メモリキャッシュ40に保持するキャッシュラインを、メモリユニット46からの新しいキャッシュラインと取り替えることを絶えず行っている。
メインメモリユニット46からメモリキャッシュ40に書き込まれるキャッシュラインは、そのようなキャッシュラインがメモリユニット46からの新しいキャッシュラインと取り替えられるまで、双方の場所に存在する。
キャッシュラインが、メモリキャッシュ40およびメモリユニット46の双方に存在する時間の間に、いずれかの場所でこのようなキャッシュラインに変更が行われると、前述したようなキャッシュコヒーレンシの問題が生じる。
プロセッサ32が、キャッシュメモリ40のキャッシュラインを変更すると、メインメモリユニット46のキャッシュラインにも、対応する変更を行わなければならない。
ディレクトリベースのキャッシュコヒーレンシ方式は、キャッシュラインがシステム全体にわたって存在するので、メインメモリユニット(例えば、メインメモリユニット46)内の集中タグディレクトリ(例えば、タグディレクトリ48)を利用して、キャッシュラインのステータスおよび場所を記録する。
タグディレクトリ48は、複数のアドレス指定可能な場所を含む。
アドレス指定可能な各場所は、1つのキャッシュラインに対応し、そのキャッシュラインの複製がシステムのどこに存在するかに関する情報、および、もし更新された複製があれば、どの複製が、そのデータの更新された複製であるかに関する情報を含む。
そのデータをプロセッサ32に送信できる場合には、メモリコントローラ42は、リンク44およびバス34を介してキャッシュメモリ40にデータを伝送し、プロセッサ32をそのキャッシュラインの「オーナ」にする。
次に、コントローラ42は、リンク44を介して新しいオーナシップ情報をメインメモリユニット46に再び書き込み、そのオーナシップ情報をタグディレクトリ48に記憶する。
したがって、メインメモリユニット46からキャッシュメモリ40へのキャッシュラインの各読み出しには、メモリコントローラ42が、メインメモリ46に再び書き込みを行って、タグディレクトリ48の対応するキャッシュラインタグを更新することを伴う。
メモリコントローラ42が、先に読み出した第1のキャッシュラインについてリンク44を介してタグディレクトリ48を更新するごとに、プロセッサ32が要求した第2のキャッシュラインの読み出しが妨げられる。
一実施の形態では、コンピュータシステム30は、本発明によるディレクトリベースのキャッシュコヒーレンシ方式を使用するメインメモリシステム36を利用する。
この本発明によるディレクトリベースのキャッシュコヒーレンシ方式は、メモリコントローラが、第1のキャッシュラインの読み出しと、先に読み出した第2のキャッシュラインのディレクトリタグの更新とを同時に行えるようにすることによって、メモリシステムのバンド幅損失を低減するものである。
このメインメモリシステムは、メモリコントローラ42、リンク44、およびメインメモリユニット46を備える。
リンク44は、144ビット幅のデータバス62およびアドレス/制御バス64を備える。
メインメモリユニットは、それぞれ符号66、68、70、および72が付された第1のデュアルインラインメモリモジュール(DIMM)、第2のDIMM、第3のDIMM、および第4のDIMMを備える。
これらの4つのDIMMのそれぞれは、データバス62およびアドレス/制御バス64に接続されている。
この一例の実施の形態では、各DIMMが、さらに、36個の4ビット幅ダブルデータレート(DDR(double data rate))ランダムアクセスメモリ(RAM)モジュールを含むものと仮定する。
これらのRAMのうちの32個は、データビットの記憶に用いられ、4個は、例えばタグディレクトリビットおよび誤り訂正符号(ECC)ビットといった「情報」ビットの記憶に用いられる。
また、この一例の実施の形態では、メモリシステム60が、128バイトからなるシステム定義のキャッシュラインを有するものと仮定する。
この構成では、メモリユニット46から1つのキャッシュラインを転送するのに、4サイクルが必要となる。
ディレクトリタグビットおよびECCビットをどのように配置するかに応じて、メモリコントローラ42がタグディレクトリビットを更新するのに、最大4サイクルを要することがある。
プロセッサ32が、メモリユニット46からのキャッシュラインを要求すると、メモリコントローラ42は、サイクル1において、イネーブル信号を適切なDIMMに供給し、符号82に示すように、要求されたキャッシュラインに関連付けられた第1の行アドレス信号(RAS(0))を、アドレス/制御バス64を介してメモリユニット46に供給する。
この説明例では、要求されたキャッシュラインは、第1のDIMM(0)68に保持されているものと仮定する。
第1のDIMM(0)68が、サイクル2の期間に適切な行アドレスを初期化した後、メモリコントローラ42は、符号84に示すように、サイクル3の期間に、要求されたキャッシュラインに関連付けられた第1の列アドレス信号(CAS(0))をアドレス/制御バス64を介して供給する。
第1のDIMM(0)68が、サイクル4の期間に適切な列アドレスを初期化した後、メモリシステム36が、例えばバースト長4(BL4)といった効率的なメモリアクセス方式を使用するものと仮定すると、メモリコントローラ42は、符号86に示すように、サイクル5〜8の期間に、要求されたキャッシュラインならびにその関連付けられたタグビットおよびECCビットを読み出す。
第1のDIMM(0)68が、サイクル9の期間に適切な列アドレスを再初期化している間、メモリコントローラ42は、先のサイクル5〜8の期間に読み出した、要求されたキャッシュラインのディレクトリタグを変更し、そのキャッシュラインのECCビットを再計算する。
符号90に示すように、サイクル10〜13の期間に、メモリコントローラは、変更したECCビットおよびディレクトリタグビットをメモリユニット46に再び書き込む。
換言すると、サイクル10〜13の期間に、メモリコントローラ42は、要求されたキャッシュラインのECCビットおよびディレクトリタグビットを更新する。
一例のタイミング図80から分かるように、キャッシュラインの読み出しおよびECC/タグの更新は、連続した動作である。
メモリコントローラ42が、サイクル9〜13の期間にECC/タグの更新を行っている間は、メモリユニット46からデータバス62を介してデータを読み出すことはできず、その結果、メモリシステムのバンド幅が低減される。
この図では、各DIMMのRAMは、それらが記憶するデータビットとそれらが記憶する情報ビットとに分離されていない。
この実施の形態では、要求されたキャッシュラインのECCビットおよびディレクトリタグビットを1サイクルで更新できるように、RAMが構成されている。
プロセッサ32が、メモリユニット46からのキャッシュラインを要求すると、メモリコントローラ42は、サイクル1において、イネーブル信号を適切なDIMMに供給し、符号102に示すように、その特定のキャッシュラインに関連付けられたRAS(0)を、アドレス/制御バス64を介してメモリユニット46に供給する。
先ほどの例と同様に、要求されたキャッシュラインは、第1のDIMM(0)68に保持されているものと仮定する。
第1のDIMM(0)68が、サイクル2の期間に適切な行アドレスを初期化した後、メモリコントローラ42は、符号104に示すように、サイクル3の期間に、要求されたキャッシュラインに関連付けられたCAS(0)をアドレス/制御バス64を介して供給する。
第1のDIMM(0)68が、適切な列アドレスを初期化した後、メモリコントローラ42は、符号106に示すように、サイクル5〜8の期間に、要求されたキャッシュラインならびにその関連付けられたECCビットおよびタグディレクトリビットを読み出す。
第1のDIMM(0)68が、サイクル9の期間に適切な列アドレスを再初期化している間、メモリコントローラ42は、先のサイクル5〜8の期間に読み出した、要求されたキャッシュラインのディレクトリタグを変更し、そのキャッシュラインのECCビットを再計算する。
符号110に示すように、サイクル10の期間に、メモリコントローラ42は、更新したタグおよび再計算したECCビットをメモリユニット46に再び書き込む。
換言すると、サイクル10の期間に、メモリコントローラ42は、要求されたキャッシュラインのECCビットおよびタグディレクトリビットを更新する。
この一例の実施の形態は、図3Aの一例の実施の形態と比較すると、データバス62のメモリバンド幅損失を5サイクルから2サイクルに低減するが、それでもなお、符号110のサイクル9〜10の期間、メモリバンド幅が失われる。
このメインメモリシステム120は、メモリコントローラ42、メインメモリユニット46、128ビット幅データバス122、およびアドレス/制御バス124を含む。
メインメモリユニット46は、第1のDIMM68、第2のDIMM70、第3のDIMM72、および第4のDIMM74をさらに備える。
これらの4つのDIMMのそれぞれは、データバス122およびアドレス/制御バス124を介してメモリコントローラ42に接続されている。
図2の従来のメインメモリシステム60とは異なり、本発明のメインメモリシステム120は、4つの16ビット幅情報バスをさらに含み、符号126、128、130、および132に示すように、DIMM68、70、72、および74とメモリコントローラ42とのそれぞれの間に、この4つの情報バスが1つずつ接続される。
この一例の実施の形態では、各DIMMは、さらに、36個の4ビット幅(DDR)RAMを含む。
これらのRAMのうちの32個は、データの記憶に用いられ、4個は、例えばタグディレクトリビットおよび/またはECCビットといった情報ビットの記憶に用いられる。
また、この一例の実施の形態では、メインメモリシステム120が、128バイトからなるシステム定義のキャッシュラインを有し、かつ、BL4メモリアクセス方式を使用するものと仮定する。
プロセッサ32が、第1のDIMM(0)68からの第1のキャッシュラインを要求すると、メモリコントローラ42は、サイクル1において、符号142に示すように、第1のキャッシュラインに関連付けられたRAS(0)を、アドレス/制御バス124を介して第1のDIMM(0)68に供給する。
第1のDIMM(0)68が、サイクル2の期間に適切な行アドレスを初期化した後、メモリコントローラ42は、符号144に示すように、第1のキャッシュラインに関連付けられたCAS(0)をアドレス/制御バス124を介して第1のDIMM(0)に供給する。
第1のDIMM(0)68が、サイクル4の期間にCAS(0)に関連付けられた適切な列アドレスを初期化した後、メモリコントローラ42は、サイクル5〜8の期間に、符号146に示すように、要求された第1のキャッシュラインの1,024ビットのデータビットをデータバス122を介して読み出し、符号148に示すように、要求された第1のキャッシュラインの128ビットのECC/タグディレクトリビットを第1の情報バス126を介して読み出す。
第1のキャッシュラインの読み出し後、メモリコントローラ42は、第1のキャッシュラインに関連付けられた変更後のタグディレクトリビットに基づいてECCを計算する。
第2のDIMM(1)70が、サイクル6の期間に適切な行アドレスを初期化した後、符号152に示すように、サイクル7において、メモリコントローラ42は、第2のキャッシュラインに関連付けられたCAS(1)をアドレス/制御バス124を介して第2のDIMM(1)70に供給する。
符号154に示すように、サイクル8において、第2のDIMM(1)70が、CAS(1)に関連付けられた適切な列アドレスを初期化している間、メモリコントローラ42は、CAS(0)をアドレス/制御バス124を介して第1のDIMM(0)68に再び伝送する。
第2のDIMM(1)70が、サイクル8の期間に、CAS(1)に関連付けられた適切な列アドレスを初期化した後、メモリコントローラ42は、サイクル9〜12の期間に、符号156に示すように、要求された第2のキャッシュラインの1,024ビットのデータビットをデータバス122を介して読み出し、符号158に示すように、要求された第2のキャッシュラインの128ビットのECC/タグディレクトリビットを第2の情報バス128を介して読み出す。
第2のキャッシュラインの読み出し後、メモリコントローラ42は、第2のキャッシュラインに関連付けられた変更後のタグディレクトリビットに基づいてECCを計算する。
第1のDIMM(0)68が、CAS(0)に関連付けられた適切な列アドレスを再初期化した後、メモリコントローラ42は、符号162に示すように、第1の情報バス126を介して第1のDIMM(0)68に、更新したECCビットおよびタグディレクトリビットを書き込む。
サイクル12において、第3のDIMM(2)72が、CAS(2)に関連付けられた適切な列アドレスを初期化している間、メモリコントローラ42は、符号166に示すように、アドレス/制御バス124を介して第2のDIMM(1)70にCAS(1)を再び転送する。
第3のDIMM(2)72が、サイクル12の期間に、CAS(2)に関連付けられた適切な列アドレスを初期化した後、メモリコントローラ42は、サイクル13において、符号168に示すように、データバス122を介して、要求された第3のキャッシュラインの1,024ビットのデータビットの読み出しを開始し、符号170に示すように、第3の情報バス130を介して、要求された第3のキャッシュラインの128ビットのECC/タグディレクトリビットの読み出しを開始する。
第2のDIMM(1)70が、CAS(1)に関連付けられた適切な列アドレスを再初期化した後、メモリコントローラ42は、符号174に示すように、第2の情報バス128を介して第2のDIMM(1)70に、更新したECCビットおよびタグディレクトリビットを書き込む。
一例のタイミング図140からも分かるように、本発明によるディレクトリベースのキャッシュコヒーレンシ方式を使用するメインメモリシステム120は、ECCビットおよびタグディレクトリビットの更新が行われる、分離した情報バス126、128、130、および132を設けることによってメモリバンド幅損失を低減する。
本発明によるメモリシステム120は、分離した情報バスを設けることにより、先に読み出したキャッシュラインのECC/タグディレクトリビットの更新を同時に行いながら、1つのキャッシュラインを読み出すことができる。
例えば、本発明によるメモリシステム120は、サイクル5〜8の期間で先に読み出した、符号146および148に示すキャッシュラインのECC/タグディレクトリビットの更新を、符号162に示すように同時に行いながら、サイクル9〜12の期間に、符号156および158に示すキャッシュラインを読み出すことができる。
これらの動作を並列に実行することにより、本発明によるメモリシステム120は、メモリバンド幅損失を低減する。
チップキルという用語は、従来どおり、複数のビット誤りがメモリデバイスの幅である場合に、そのメモリの複数のビット誤りを訂正できることを指す。
例えば、チップキル機能をサポートするメモリシステム120は、DIMM68、70、72、または74の4ビット幅RAMのいずれか1つの障害によって4ビット幅誤りが生じてもその誤りを訂正することができることになる。
したがって、いずれか1つの4ビット幅RAMに障害が発生しても、メモリシステム120は障害を起こさないことになる。
例えば、ある一定の高級なチップセットは、4つのDIMMを結合して、128ビットのデータビットおよび16ビットのECCビットを含む144ビットバスにする。
訂正可能なビット数は、通常、メモリシステムがサポートするECCビットのビット数に依存する。
誤り訂正符号は、共通に使用される誤り検出/訂正プロセスを指し、このプロセスは、一般に、巡回冗長符号(CRC)アルゴリズムに基づいている。
CRCアルゴリズムは、ECC符号語の形で受信されたデータが、CRC多項式によって正確に割り切れるように作用する。
この受信されたデータは、データビットおよび後尾に追加されたCRCビットを含む。
ECC符号語が、CRC多項式によって割り切れない場合には、誤りが発生したものとみなされる。
この従来のメモリシステム200は、第1のDIMM(0)202、第2のDIMM(1)204、第3のDIMM(2)206、および第4のDIMM(3)208を含む。
これらの4つのDIMMのそれぞれは、36個の4ビット幅のRAMを含む。
従来のメモリシステム200は、さらに、4つの144ビット幅メモリバス210、212、214、および216を含み、各メモリバスは、それぞれ、144ビットのECC符号語218、220、222、および224を供給する。
各符号語は、128ビットのデータビットおよび16ビットのECCビットを含む。
DIMM202、204、206、および208の各RAMの4ビットの各ビットは、異なる符号語に寄与する。
換言すると、DIMM202、204、206、および208の36個のRAMのそれぞれの1ビットは、4つの144ビット幅メモリバス210、212、214、および216のそれぞれに結合される。
したがって、各DIMM202、204、206、および208は、符号226、228、230、および232にそれぞれ示すように、36ビット幅メモリバスを介して4つの144ビット幅メモリバス210、212、214、および216のそれぞれに結合される。
1つのECC符号語につき128ビットのデータビットがあるので、従来のメモリシステム200は、128バイトのキャッシュラインを検索するのに2サイクルを要する。
例えばHamming/Hsiao符号といった標準的なECC符号は、ECC符号の4つの144ビット符号語218、220、222、および224のそれぞれでSEC−DEDを提供する。
DIMM202、204、206、および208の各RAMの各ビットが、異なるECC符号語に向かうので、チップキルがサポートされる。
その結果、あるRAMの障害は、ECC符号語のそれぞれにおいて単一ビット障害として見え、それにより、訂正を受けることができる。
第1に、従来のメモリシステムは、キャッシュラインにアクセスするのに、576ビット幅のバスを必要とし、その結果、集積回路が多数のピンを有することになり、それに対応して、コストが増加する。
第2に、キャッシュラインを検索するのに、4つのDIMMにアクセスするので、4個単位のDIMMの増加量でメモリに追加しなければならない。
第3に、全てのメモリ読み出しの後に、タグディレクトリの更新が続くことがあるので、メモリバンド幅が潜在的に浪費される可能性がある。
最後に、例えばBL4といったある一定の効率的なメモリアクセス方式は、128バイトのキャッシュラインサイズではなく256バイトをフェッチするので、サポートに無駄が生じ得る。
このRAM構成240は、合計36個の4ビット幅(DDR)RAMを含む。
符号242に示すように、RAM0〜31は、128ビットのデータビットを記憶するように構成される。
符号244に示すように、RAM32〜35は、情報ビットを記憶するように構成される。
2つの情報RAM246は、36個のRAMの中の単一RAM障害の訂正用、および、SEC用のチップキルを提供するECCビットを記憶するように構成される。
1つの情報RAM248は、DEDを提供するECCビットを記憶するように構成される。
1つの情報RAM250は、タグディレクトリビットを記憶するように構成される。
標準的なECC方式では、通常、単一RAM障害の訂正を可能にするために、RAM構成240の36個の4ビット幅のRAMのそれぞれが、少なくとも5ビットをECC符号語に提供することが必要となる。
DDR RAMを使用する一実施の形態では、各RAMは、8ビットを提供し、それによって、288ビット(36×8)からなるECC符号語を提供する。
この288ビットのECC符号語は、RAM246の16ビットのECCビットを併せると、標準的なECC方式を利用するチップキルの機能をサポートするのに十分である。
一実施の形態では、DED用および2重RAM障害用のECCビットと、タグディレクトリビットとの間で情報RAM248のビットを分割することによって、ECC方式が2重RAM障害の検出をさらにサポートできるように、RAM構成240を変更することができる。
さらに、メインメモリシステム120の一実施の形態は、シングルバスメモリシステムにおける単一誤り訂正と、2重誤り検出と、チップキルとをサポートすると共に、1つのDIMMの増加量でメモリを追加することをサポートする誤り訂正符号方式を提供する。
化学技術、機械技術、電気機械技術、電気技術、およびコンピュータ技術の当業者は、本発明が、非常にさまざまな実施の形態で実施できることを容易に理解するだろう。
この出願は、本明細書で解説した好ましい実施の形態のあらゆる適応またはあらゆる変形をカバーするように意図されている。
したがって、この発明は、特許請求の範囲およびその均等物によってのみ限定されることが明白に意図されている。
40・・・メモリキャッシュ、
36・・・メインメモリシステム、
42・・・メモリコントローラ、
46・・・メインメモリユニット、
48・・・タグディレクトリ、
50・・・大容量ストレージメモリ、
218,220,222,224・・・144ビット符号語、
242・・・データRAM、
244・・・情報RAM、
246・・・ECC訂正(チップキル)、
248・・・ECC検出、
250・・・タグディレクトリ、
Claims (10)
- ディレクトリベースのキャッシュコヒーレンシ方式を使用するメモリシステム(36)であって、
複数のキャッシュラインであって、各キャッシュラインが、複数のデータビットおよび関連する複数の情報ビットを含む、複数のキャッシュラインを記憶する複数のメモリモジュールを備えるメモリユニット(46)と、
前記メモリモジュールのそれぞれに接続され、前記メモリモジュールからデータビットを読み出し、前記メモリモジュールにデータビットを書き込むように構成されたデータバス(62)と、
複数の情報バス(64)であって、前記メモリモジュールのそれぞれに1つずつ接続され、前記メモリモジュールから情報ビットを読み出し、前記メモリモジュールに情報ビットを書き込むように構成された、複数の情報バス(64)と、
前記メモリユニットへのアクセスを制御するメモリコントローラ(42)であって、第1のメモリモジュールから前記データバスおよび第1の情報バスを介して第1のキャッシュラインを読み出し、かつ、並列動作で、先に読み出された第2のキャッシュラインの一組の更新された情報ビットを第2の情報バスを介して第2のメモリモジュールに書き込むように構成された、メモリコントローラと、
を備えるメモリシステム。 - 前記複数の情報ビットは、
ディレクトリタグビットと、
誤り訂正符号(ECC)ビットと、
を含む請求項1に記載のメモリシステム。 - 前記メモリユニットは、複数のデュアルインラインメモリモジュール(DIMM)(68、70、72、74)を備え、各DIMMは、複数のランダムアクセスメモリ(RAM)デバイス(240)を備える、請求項1に記載のメモリシステム。
- 前記複数のRAMデバイスは、
データビットを記憶する下位の複数のRAMデバイス(242)と、
ECCビットを記憶する下位の複数のRAMデバイス(246、248)と、
ディレクトリタグビットを記憶する下位の複数のRAMデバイス(250)と、
をさらに備える請求項3に記載のメモリシステム。 - 前記メモリモジュールのそれぞれと前記コントローラとの間に接続されたアドレス/制御バス(64)をさらに備え、該アドレス/制御バスは、
各メモリモジュールに1つずつ接続された複数のECC/タグ制御信号線を備え、ECC/タグ制御信号線は、ECCビットおよびディレクトリタグビットをその対応するメモリモジュールに書き込む機能を有効/無効にするように構成される、
請求項1に記載のメモリシステム。 - ディレクトリベースのキャッシュコヒーレンシ方式を使用するメモリシステムのタグディレクトリ更新方法であって、
複数のキャッシュラインであって、各キャッシュラインが、複数のデータビットおよび関連する複数の情報ビットを含む、複数のキャッシュラインを記憶する複数のメモリモジュールを備えるメモリユニット(46)を設けること、
前記メモリモジュールのそれぞれに接続され、前記メモリモジュールからデータビットを読み出し、前記メモリモジュールにデータビットを書き込むように構成されたデータバス(62)を設けること、
複数の情報バス(64)であって、前記複数のメモリモジュールの各メモリモジュールに1つずつ接続され、前記メモリモジュールから情報ビットを読み出し、前記メモリモジュールに情報ビットを書き込むように構成された、複数の情報バス(64)を設けること、
第1のメモリモジュールから前記メモリバスおよび第1の情報バスを介して第1のキャッシュラインを読み出し、かつ、同時に、先に読み出された第2のキャッシュラインの更新された情報ビットを第2の情報バスを介して第2のメモリモジュールに書き込むこと、
とを含むタグディレクトリ更新方法。 - 複数のデュアルインラインメモリモジュール(DIMM)(68、70、72、74)を備えるメモリユニットを設けることをさらに含み、各DIMMは、複数のランダムアクセスメモリ(RAM)デバイス(240)を備える、
請求項6に記載のタグディレクトリ更新方法。 - 前記複数のRAMデバイスを分割することであって、それによって、データビットを記憶する下位の複数のRAMデバイス(242)と、ECCビットを記憶する下位の複数のRAMデバイス(246、248)と、ディレクトリタグビットを記憶する下位の複数のRAMデバイス(250)とを形成する、前記複数のRAMデバイスを分割すること、
をさらに含む請求項7に記載のタグディレクトリ更新方法。 - 各メモリモジュールに接続されたアドレス/制御バス(64)を設けること、
をさらに含む請求項6に記載のタグディレクトリ更新方法。 - 各メモリモジュールに1つずつ接続された複数のECC/タグ制御信号線を、前記アドレス/制御バスの一部として設けることをさらに含み、各ECC/タグ制御信号線は、ECCビットおよびディレクトリタグビットをその対応するメモリモジュールに書き込む機能を有効/無効にするように構成される、
請求項9に記載のタグディレクトリ更新方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/419,477 US7051166B2 (en) | 2003-04-21 | 2003-04-21 | Directory-based cache coherency scheme for reducing memory bandwidth loss |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004326734A true JP2004326734A (ja) | 2004-11-18 |
JP3786418B2 JP3786418B2 (ja) | 2006-06-14 |
Family
ID=33159315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004043852A Expired - Fee Related JP3786418B2 (ja) | 2003-04-21 | 2004-02-20 | メモリバンド幅損失を低減するディレクトリベースのコヒーレンシ方式 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7051166B2 (ja) |
JP (1) | JP3786418B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009116398A (ja) * | 2007-11-01 | 2009-05-28 | Nec Computertechno Ltd | ノードコントローラ、分散共有メモリ型情報処理装置、キャッシュコヒーレンシ制御方法 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7206962B2 (en) * | 2003-11-25 | 2007-04-17 | International Business Machines Corporation | High reliability memory subsystem using data error correcting code symbol sliced command repowering |
US7991963B2 (en) * | 2007-12-31 | 2011-08-02 | Intel Corporation | In-memory, in-page directory cache coherency scheme |
KR20120019882A (ko) * | 2010-08-27 | 2012-03-07 | 주식회사 하이닉스반도체 | 반도체 집적회로 |
US10204008B2 (en) * | 2012-12-21 | 2019-02-12 | Hewlett Packard Enterprise Development Lp | Memory module having error correction logic |
US9734069B2 (en) * | 2014-12-11 | 2017-08-15 | Intel Corporation | Multicast tree-based data distribution in distributed shared cache |
US10019367B2 (en) | 2015-12-14 | 2018-07-10 | Samsung Electronics Co., Ltd. | Memory module, computing system having the same, and method for testing tag error thereof |
KR102491651B1 (ko) | 2015-12-14 | 2023-01-26 | 삼성전자주식회사 | 비휘발성 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 동작 방법 |
US10120749B2 (en) | 2016-09-30 | 2018-11-06 | Intel Corporation | Extended application of error checking and correction code in memory |
US10558519B2 (en) * | 2017-01-17 | 2020-02-11 | International Business Machines Corporation | Power-reduced redundant array of independent memory (RAIM) system |
US11947841B2 (en) * | 2021-06-15 | 2024-04-02 | Micron Technology, Inc. | Managing address access information |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5113500A (en) * | 1989-08-23 | 1992-05-12 | Unisys Corporation | Multiple cooperating and concurrently operating processors using individually dedicated memories |
US5249284A (en) | 1990-06-04 | 1993-09-28 | Ncr Corporation | Method and system for maintaining data coherency between main and cache memories |
US5313609A (en) | 1991-05-23 | 1994-05-17 | International Business Machines Corporation | Optimum write-back strategy for directory-based cache coherence protocols |
EP0681240B1 (en) | 1994-05-03 | 2001-01-10 | Hewlett-Packard Company | Duplicate cache tag memory system |
US5860153A (en) | 1995-11-22 | 1999-01-12 | Sun Microsystems, Inc. | Memory efficient directory coherency maintenance |
US5991819A (en) * | 1996-12-03 | 1999-11-23 | Intel Corporation | Dual-ported memory controller which maintains cache coherency using a memory line status table |
JP3849951B2 (ja) | 1997-02-27 | 2006-11-22 | 株式会社日立製作所 | 主記憶共有型マルチプロセッサ |
US5867511A (en) * | 1997-04-14 | 1999-02-02 | International Business Machines Corporation | Method for high-speed recoverable directory access |
US5974564A (en) * | 1997-07-31 | 1999-10-26 | Micron Electronics, Inc. | Method for remapping defective memory bit sets to non-defective memory bit sets |
US6073216A (en) * | 1997-11-25 | 2000-06-06 | Intel Corporation | System and method for reliable system shutdown after coherency corruption |
US6587931B1 (en) | 1997-12-31 | 2003-07-01 | Unisys Corporation | Directory-based cache coherency system supporting multiple instruction processor and input/output caches |
US6415364B1 (en) * | 1997-12-31 | 2002-07-02 | Unisys Corporation | High-speed memory storage unit for a multiprocessor system having integrated directory and data storage subsystems |
US6480927B1 (en) | 1997-12-31 | 2002-11-12 | Unisys Corporation | High-performance modular memory system with crossbar connections |
US6260127B1 (en) * | 1998-07-13 | 2001-07-10 | Compaq Computer Corporation | Method and apparatus for supporting heterogeneous memory in computer systems |
US6374332B1 (en) | 1999-09-30 | 2002-04-16 | Unisys Corporation | Cache control system for performing multiple outstanding ownership requests |
US6493843B1 (en) | 1999-10-28 | 2002-12-10 | Hewlett-Packard Company | Chipkill for a low end server or workstation |
US6898738B2 (en) * | 2001-07-17 | 2005-05-24 | Bull Hn Information Systems Inc. | High integrity cache directory |
US7047374B2 (en) * | 2002-02-25 | 2006-05-16 | Intel Corporation | Memory read/write reordering |
-
2003
- 2003-04-21 US US10/419,477 patent/US7051166B2/en not_active Expired - Lifetime
-
2004
- 2004-02-20 JP JP2004043852A patent/JP3786418B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009116398A (ja) * | 2007-11-01 | 2009-05-28 | Nec Computertechno Ltd | ノードコントローラ、分散共有メモリ型情報処理装置、キャッシュコヒーレンシ制御方法 |
Also Published As
Publication number | Publication date |
---|---|
US20040210722A1 (en) | 2004-10-21 |
US7051166B2 (en) | 2006-05-23 |
JP3786418B2 (ja) | 2006-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7650557B2 (en) | Memory scrubbing of expanded memory | |
US12001282B2 (en) | Write control for read-modify-write operations in cache memory | |
US5070502A (en) | Defect tolerant set associative cache | |
US7437597B1 (en) | Write-back cache with different ECC codings for clean and dirty lines with refetching of uncorrectable clean lines | |
JP3620473B2 (ja) | 共有キャッシュメモリのリプレイスメント制御方法及びその装置 | |
JP4447580B2 (ja) | 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ | |
JP3718302B2 (ja) | 命令取り出し方法および装置 | |
US10120750B2 (en) | Cache memory, error correction circuitry, and processor system | |
US20120311248A1 (en) | Cache line lock for providing dynamic sparing | |
US9058290B2 (en) | Memory protection cache | |
JP2010009102A (ja) | キャッシュメモリ、コンピュータシステム、及びメモリアクセス方法 | |
JP3786418B2 (ja) | メモリバンド幅損失を低減するディレクトリベースのコヒーレンシ方式 | |
JP2005302027A (ja) | 自律的エラー回復方法、システム、キャッシュ、およびプログラム・ストレージ装置(メモリ装置のための自律的エラー回復のための方法、システム、およびプログラム) | |
JPH10320280A (ja) | キャッシュに値を格納する方法及びコンピュータ・システム | |
US7392347B2 (en) | Systems and methods for buffering data between a coherency cache controller and memory | |
JP5021978B2 (ja) | マルチプロセッサシステム及びその動作方法 | |
US8244983B2 (en) | Memory control systems with directory caches and methods for operation thereof | |
US6996675B2 (en) | Retrieval of all tag entries of cache locations for memory address and determining ECC based on same | |
JP3239935B2 (ja) | 密結合マルチプロセッサシステムの制御方法、密結合マルチプロセッサシステム及びその記録媒体 | |
JP2504644B2 (ja) | キャッシュを有する2つの異なる中央処理ユニット間でデ―タを転送するための方法及び装置 | |
US6862665B2 (en) | Method, system, and apparatus for space efficient cache coherency | |
US6317857B1 (en) | System and method for utilizing checksums to recover data | |
KR20070074322A (ko) | 메모리 시스템에 있어서 메모리 미러링 방법 | |
JP2000047941A (ja) | ディスクキャッシュ制御装置 | |
JP3716190B2 (ja) | キャッシュメモリにおけるデータアレイの訂正不能障害救済方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051014 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060113 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060124 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060307 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060316 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060317 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100331 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100331 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110331 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120331 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130331 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140331 Year of fee payment: 8 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |