(57)【要約】【課題】  タグディレクトリの更新に付随したメインメモリバンド幅損失を低減するディレクトリベースのキャッシュコヒーレンシ方式を提供する。【解決手段】  メモリシステムにおいて、メモリユニットは、データビットおよび関連する情報ビットを含むキャッシュラインを記憶する複数のメモリモジュールを備える。データバスは、メモリモジュールとの間でデータビットの読み出および書き込みを行う。情報バスは、メモリモジュールとの間で情報ビットの読み出しおよび書き込みを行う。メモリコントローラは、メモリユニットへのアクセスを制御し、第１のメモリモジュールからデータバスおよび第１の情報バスを介して第１のキャッシュラインを読み出し、かつ、並列動作で、先に読み出された第２のキャッシュラインの一組の更新された情報ビットを第２の情報バスを介して第２のメモリモジュールに書き込む。【選択図】図４
2004326734.tif 000002
【特許請求の範囲】
【請求項１】
ディレクトリベースのキャッシュコヒーレンシ方式を使用するメモリシステム（３６）であって、
複数のキャッシュラインであって、各キャッシュラインが、複数のデータビットおよび関連する複数の情報ビットを含む、複数のキャッシュラインを記憶する複数のメモリモジュールを備えるメモリユニット（４６）と、
前記メモリモジュールのそれぞれに接続され、前記メモリモジュールからデータビットを読み出し、前記メモリモジュールにデータビットを書き込むように構成されたデータバス（６２）と、
複数の情報バス（６４）であって、前記メモリモジュールのそれぞれに１つずつ接続され、前記メモリモジュールから情報ビットを読み出し、前記メモリモジュールに情報ビットを書き込むように構成された、複数の情報バス（６４）と、
前記メモリユニットへのアクセスを制御するメモリコントローラ（４２）であって、第１のメモリモジュールから前記データバスおよび第１の情報バスを介して第１のキャッシュラインを読み出し、かつ、並列動作で、先に読み出された第２のキャッシュラインの一組の更新された情報ビットを第２の情報バスを介して第２のメモリモジュールに書き込むように構成された、メモリコントローラと、
を備えるメモリシステム。
【請求項２】
前記複数の情報ビットは、
ディレクトリタグビットと、
誤り訂正符号（ＥＣＣ）ビットと、
を含む請求項１に記載のメモリシステム。
【請求項３】
前記メモリユニットは、複数のデュアルインラインメモリモジュール（ＤＩＭＭ）（６８、７０、７２、７４）を備え、各ＤＩＭＭは、複数のランダムアクセスメモリ（ＲＡＭ）デバイス（２４０）を備える、請求項１に記載のメモリシステム。
【請求項４】
前記複数のＲＡＭデバイスは、
データビットを記憶する下位の複数のＲＡＭデバイス（２４２）と、
ＥＣＣビットを記憶する下位の複数のＲＡＭデバイス（２４６、２４８）と、
ディレクトリタグビットを記憶する下位の複数のＲＡＭデバイス（２５０）と、
をさらに備える請求項３に記載のメモリシステム。
【請求項５】
前記メモリモジュールのそれぞれと前記コントローラとの間に接続されたアドレス／制御バス（６４）をさらに備え、該アドレス／制御バスは、
各メモリモジュールに１つずつ接続された複数のＥＣＣ／タグ制御信号線を備え、ＥＣＣ／タグ制御信号線は、ＥＣＣビットおよびディレクトリタグビットをその対応するメモリモジュールに書き込む機能を有効／無効にするように構成される、
請求項１に記載のメモリシステム。
【請求項６】
ディレクトリベースのキャッシュコヒーレンシ方式を使用するメモリシステムのタグディレクトリ更新方法であって、
複数のキャッシュラインであって、各キャッシュラインが、複数のデータビットおよび関連する複数の情報ビットを含む、複数のキャッシュラインを記憶する複数のメモリモジュールを備えるメモリユニット（４６）を設けること、
前記メモリモジュールのそれぞれに接続され、前記メモリモジュールからデータビットを読み出し、前記メモリモジュールにデータビットを書き込むように構成されたデータバス（６２）を設けること、
複数の情報バス（６４）であって、前記複数のメモリモジュールの各メモリモジュールに１つずつ接続され、前記メモリモジュールから情報ビットを読み出し、前記メモリモジュールに情報ビットを書き込むように構成された、複数の情報バス（６４）を設けること、
第１のメモリモジュールから前記メモリバスおよび第１の情報バスを介して第１のキャッシュラインを読み出し、かつ、同時に、先に読み出された第２のキャッシュラインの更新された情報ビットを第２の情報バスを介して第２のメモリモジュールに書き込むこと、
とを含むタグディレクトリ更新方法。
【請求項７】
複数のデュアルインラインメモリモジュール（ＤＩＭＭ）（６８、７０、７２、７４）を備えるメモリユニットを設けることをさらに含み、各ＤＩＭＭは、複数のランダムアクセスメモリ（ＲＡＭ）デバイス（２４０）を備える、
請求項６に記載のタグディレクトリ更新方法。
【請求項８】
前記複数のＲＡＭデバイスを分割することであって、それによって、データビットを記憶する下位の複数のＲＡＭデバイス（２４２）と、ＥＣＣビットを記憶する下位の複数のＲＡＭデバイス（２４６、２４８）と、ディレクトリタグビットを記憶する下位の複数のＲＡＭデバイス（２５０）とを形成する、前記複数のＲＡＭデバイスを分割すること、
をさらに含む請求項７に記載のタグディレクトリ更新方法。
【請求項９】
各メモリモジュールに接続されたアドレス／制御バス（６４）を設けること、
をさらに含む請求項６に記載のタグディレクトリ更新方法。
【請求項１０】
各メモリモジュールに１つずつ接続された複数のＥＣＣ／タグ制御信号線を、前記アドレス／制御バスの一部として設けることをさらに含み、各ＥＣＣ／タグ制御信号線は、ＥＣＣビットおよびディレクトリタグビットをその対応するメモリモジュールに書き込む機能を有効／無効にするように構成される、
請求項９に記載のタグディレクトリ更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、包括的には、コンピュータシステムに関し、詳細には、メモリ階層を利用し、かつ、ディレクトリベースのキャッシュコヒーレンシシステムを使用するコンピュータシステムに関する。
【背景技術】
【０００２】
マイクロプロセッサの速度および性能は、絶えず向上し、一般に、コンピュータシステムのメインメモリの速度および性能の改善を上回ってきた。
その結果、システムのメインメモリは、高速なプロセッサの要求に必ずしもついて行けるとは限らない。
これは、特に、マルチプロセッサシステムまたは分散コンピュータシステムについて当てはまる。
これらのシステムは、複数のプロセッサを利用して並列処理を実行することにより、従来のシングルプロセッサシステムを上回る大幅な性能向上を提供することができる。
より多くのより高速なプロセッサがマルチプロセッサシステムに加えられて、メインメモリへのアクセスを得るために競争するので、プロセッサのメモリアクセス回数は、一般に増加する。
その結果、メインメモリバンド幅は、高性能データ処理システムでは、重大なボトルネックに変わってきた。
【０００３】
このボトルネックを緩和するのに利用される１つの一般的な技法は、メモリ階層を使用することである。
例えば、低速メモリ、中速メモリ、および高速メモリから３段メモリを構成することができる。
低速メモリは、データの低コスト大容量記憶を行う磁気ディスクとすることができる。
中速メモリは、コンピュータシステムのメインメモリとして使用されるダイナミックランダムアクセスメモリ（ＤＲＡＭ）から構成することができる。
高速メモリは、プロセッサのキャッシュメモリとして使用されるスタティックランダムアクセスメモリ（ＳＲＡＭ）を使用することができる。
メモリ階層の背景にある理論は、システムプロセッサが使用する命令およびデータを最高速のメモリにグループ化することである。
このような高速メモリは、通常、利用可能な最も高価なメモリであり、したがって、経済的側面から、高速メモリを相対的に小さくすることが要求される。
【０００４】
システムプロセッサは、動作中、現在実行中のプログラムの変数に高速にアクセスできるように、命令およびデータを、システムの低速なメインメモリから高速なキャッシュメモリに転送する。
キャッシュシステムは、通常、キャッシュラインと呼ばれるデータブロックでデータを転送する。
プロセッサが、キャッシュメモリに含まれていない追加データを要求すると、そのようなデータを含むキャッシュラインが、メインメモリから転送されて、キャッシュメモリ内の選択されたキャッシュラインを取り替える。
どのデータを取り替えるかを決定するのに、さまざまな技法またはアルゴリズムが利用される。
キャッシュメモリに含まれるデータは、メインメモリのデータを複製したものであるので、あるメモリのデータを変更すると、他のメモリも同様に変更しなければならないか、または、他のメモリに変更を記録しなければならない。
例えば、キャッシュメモリのデータが変更されると、メインメモリの対応するデータを同様に変更しなければならない。
キャッシュデータとメインメモリのデータとの間の一貫性を維持する問題は、キャッシュコヒーレンシの維持と呼ばれる。
【０００５】
特に分散システムにおいて、キャッシュコヒーレンシを維持する従来の１つの技法は、ディレクトリベースのキャッシュコヒーレンシ方式である。
ディレクトリベースのコヒーレンシ方式は、キャッシュラインがシステム全体にわたって存在するので、集中タグディレクトリを利用して、キャッシュラインの場所およびステータスを記録する。
例えば、このディレクトリは、どのプロセッサのキャッシュがデータの複製を有するかを記録し、さらに、キャッシュのいずれかがデータの複製を更新したかどうかを記録する。
プロセッサが、データ項目を得るためにメインメモリに対してキャッシュリクエストを作成すると、中央ディレクトリが調べられて、そのデータの最も新しい複製が存在する場所が決定される。
この情報に基づいて、キャッシュラインの最も新しい複製が検索され、その結果、その最も新しい複製を、要求を行ったプロセッサのキャッシュメモリに提供することができる。
その後、中央タグディレクトリは、そのキャッシュラインの新しいステータスを反映するように更新される。
このように、プロセッサによる各キャッシュラインの読み出しには、タグディレクトリの更新（すなわち書き込み）が伴う。
【０００６】
ディレクトリベースのキャッシュコヒーレンシ方式は、拡張可能なマルチプロセッサシステムの構築を支援するが、メインメモリとキャッシュメモリとの間のほとんど絶え間のないキャッシュラインの転送に付随したタグディレクトリの更新によって、貴重なメモリバンド幅が浪費される。
従来のコンピュータシステムの典型例のタグの更新の結果、メインメモリのバンド幅の約５０％が失われる。
しかしながら、タグディレクトリの更新に付随したバンド幅損失は、システムが使用するキャッシュラインのサイズ、採用されたメモリ技術、使用される誤り訂正符号（ＥＣＣ）方式、およびメインメモリのタグディレクトリのレイアウトに応じて変化する。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
多くのコンピュータシステム、特に分散システムは、タグディレクトリの更新に付随したメインメモリバンド幅損失を低減するディレクトリベースのキャッシュコヒーレンシ方式により利益を受けることになる。
【課題を解決するための手段】
【０００８】
本発明の一態様は、ディレクトリベースのキャッシュコヒーレンシ方式を使用するメモリシステムを提供する。
このメモリシステムは、メモリユニット、データバス、複数の情報バスおよびメモリコントローラを備える。
該メモリユニットは、複数のキャッシュラインであって、各キャッシュラインが、複数のデータビットおよび関連する複数の情報ビットを含む、複数のキャッシュラインを記憶する複数のメモリモジュールを備える。
該データバスは、メモリモジュールのそれぞれに接続され、メモリモジュールからデータビットを読み出し、メモリモジュールにデータビットを書き込むように構成される。
複数の情報バスのうちの１つの情報バスは、メモリモジュールのそれぞれに１つずつ接続され、メモリモジュールから情報ビットを読み出し、メモリモジュールに情報ビットを書き込むように構成される。
該メモリコントローラはメモリユニットへのアクセスを制御し、第１のメモリモジュールからデータバスおよび第１の情報バスを介して第１のキャッシュラインを読み出し、かつ、並列動作で、先に読み出された第２のキャッシュラインの一組の更新された情報ビットを第２の情報バスを介して第２のメモリモジュールに書き込むように構成される。
【０００９】
本発明の実施の形態は、図面を参照することによって、より良く理解される。
図面の構成要素は、必ずしも互いに同一縮尺であるとは限らない。
同じ参照符号は、対応する同様の部分を示す。
【発明を実施するための最良の形態】
【００１０】
好ましい実施の形態の以下の詳細な説明では、本出願の一部を形成する添付図面を参照する。
添付図面では、本発明を実践することができる特定の実施の形態を例として示す。
他の実施の形態を利用することができ、構造上の変更または論理的な変更を、本発明の範囲から逸脱することなく行い得ることが理解されるべきである。
したがって、以下の詳細な説明は、限定する意味に取るべきではなく、本発明の範囲は、添付の特許請求の範囲によって画定される。
【００１１】
図１は、メモリ階層を利用し、かつ、ディレクトリベースのキャッシュコヒーレンシ方式を使用するコンピュータシステム３０の一実施の形態の一部をブロック図形式で概略的に示している。
コンピュータシステム３０は、バス３４に接続されたプロセッサ３２、バス３４とバス３８との間に接続されたメインメモリシステム３６、およびバス３８に接続された不揮発性大容量ストレージメモリ５０を含む。
一実施の形態では、大容量ストレージメモリ５０は、磁気ディスクからなる。
プロセッサ３２は、高速のマイクロプロセッサメモリアクセス用のメモリキャッシュ４０を含む。
メモリキャッシュ４０は、一般に、レベル１（Ｌ１）キャッシュとして知られており、通常は、プロセッサ３２の速度で動作する高速メモリからなる。
この高速メモリとしては、例えばＳＲＡＭがある。
メインメモリシステム３６は、リンク４４を介してメインメモリユニット４６に接続されたメモリコントローラ４２を含む。
メインメモリユニット４６は、さらに、タグディレクトリ４８を含む。
メインメモリユニット４６は、一般に、レベル２（Ｌ２）キャッシュとして知られており、通常は、ＤＲＡＭデバイスからなる。
【００１２】
コンピュータシステム３０の起動中、不揮発性大容量ストレージデバイス５０（すなわち磁気ディスク）からのデータが、メインメモリユニット４６に転送される。
一例として、メモリコントローラ４２が、磁気ディスク５０からデータバス３８およびリンク４４を介してメモリユニット４６にデータを転送する。
プロセッサ３２は、実行のためにキャッシュメモリ４０に転送するデータをメインメモリユニット４６から選択する。
メインメモリユニット４６からのデータは、キャッシュラインとして知られているシステム定義のデータブロックでキャッシュメモリ４０に転送される。
メモリキャッシュ４０は、メモリユニット４６のデータのわずかな部分しか保持できないので、プロセッサ３２は、メモリキャッシュ４０に保持するキャッシュラインを、メモリユニット４６からの新しいキャッシュラインと取り替えることを絶えず行っている。
メインメモリユニット４６からメモリキャッシュ４０に書き込まれるキャッシュラインは、そのようなキャッシュラインがメモリユニット４６からの新しいキャッシュラインと取り替えられるまで、双方の場所に存在する。
キャッシュラインが、メモリキャッシュ４０およびメモリユニット４６の双方に存在する時間の間に、いずれかの場所でこのようなキャッシュラインに変更が行われると、前述したようなキャッシュコヒーレンシの問題が生じる。
プロセッサ３２が、キャッシュメモリ４０のキャッシュラインを変更すると、メインメモリユニット４６のキャッシュラインにも、対応する変更を行わなければならない。
【００１３】
本明細書の背景技術の節で解説したように、キャッシュコヒーレンシを維持する１つの技法は、ディレクトリベースのキャッシュコヒーレンシ方式である。
ディレクトリベースのキャッシュコヒーレンシ方式は、キャッシュラインがシステム全体にわたって存在するので、メインメモリユニット（例えば、メインメモリユニット４６）内の集中タグディレクトリ（例えば、タグディレクトリ４８）を利用して、キャッシュラインのステータスおよび場所を記録する。
タグディレクトリ４８は、複数のアドレス指定可能な場所を含む。
アドレス指定可能な各場所は、１つのキャッシュラインに対応し、そのキャッシュラインの複製がシステムのどこに存在するかに関する情報、および、もし更新された複製があれば、どの複製が、そのデータの更新された複製であるかに関する情報を含む。
【００１４】
例えば、プロセッサ３２が、メインメモリユニット４６からのキャッシュライン（読み出しまたは書き込み）を要求すると、メモリコントローラ４２は、要求されたキャッシュラインと共にその対応するディレクトリタグの読み出しを実行し、そのキャッシュラインをプロセッサ３２に送信できるかどうかを決定する。
そのデータをプロセッサ３２に送信できる場合には、メモリコントローラ４２は、リンク４４およびバス３４を介してキャッシュメモリ４０にデータを伝送し、プロセッサ３２をそのキャッシュラインの「オーナ」にする。
次に、コントローラ４２は、リンク４４を介して新しいオーナシップ情報をメインメモリユニット４６に再び書き込み、そのオーナシップ情報をタグディレクトリ４８に記憶する。
したがって、メインメモリユニット４６からキャッシュメモリ４０へのキャッシュラインの各読み出しには、メモリコントローラ４２が、メインメモリ４６に再び書き込みを行って、タグディレクトリ４８の対応するキャッシュラインタグを更新することを伴う。
【００１５】
ディレクトリベースのキャッシュコヒーレンシ方式を使用する従来のメインメモリシステムは、キャッシュコヒーレンシを維持するのに効率的ではあるが、メインメモリシステム３６のバンド幅が低減されることを犠牲にして、コヒーレンシが達成される。
メモリコントローラ４２が、先に読み出した第１のキャッシュラインについてリンク４４を介してタグディレクトリ４８を更新するごとに、プロセッサ３２が要求した第２のキャッシュラインの読み出しが妨げられる。
一実施の形態では、コンピュータシステム３０は、本発明によるディレクトリベースのキャッシュコヒーレンシ方式を使用するメインメモリシステム３６を利用する。
この本発明によるディレクトリベースのキャッシュコヒーレンシ方式は、メモリコントローラが、第１のキャッシュラインの読み出しと、先に読み出した第２のキャッシュラインのディレクトリタグの更新とを同時に行えるようにすることによって、メモリシステムのバンド幅損失を低減するものである。
【００１６】
図２は、ディレクトリベースのキャッシュコヒーレンシ方式を使用する従来のメインメモリシステム６０の一例を示す概略ブロック図である。
このメインメモリシステムは、メモリコントローラ４２、リンク４４、およびメインメモリユニット４６を備える。
リンク４４は、１４４ビット幅のデータバス６２およびアドレス／制御バス６４を備える。
メインメモリユニットは、それぞれ符号６６、６８、７０、および７２が付された第１のデュアルインラインメモリモジュール（ＤＩＭＭ）、第２のＤＩＭＭ、第３のＤＩＭＭ、および第４のＤＩＭＭを備える。
これらの４つのＤＩＭＭのそれぞれは、データバス６２およびアドレス／制御バス６４に接続されている。
この一例の実施の形態では、各ＤＩＭＭが、さらに、３６個の４ビット幅ダブルデータレート（ＤＤＲ（double data rate））ランダムアクセスメモリ（ＲＡＭ）モジュールを含むものと仮定する。
これらのＲＡＭのうちの３２個は、データビットの記憶に用いられ、４個は、例えばタグディレクトリビットおよび誤り訂正符号（ＥＣＣ）ビットといった「情報」ビットの記憶に用いられる。
また、この一例の実施の形態では、メモリシステム６０が、１２８バイトからなるシステム定義のキャッシュラインを有するものと仮定する。
この構成では、メモリユニット４６から１つのキャッシュラインを転送するのに、４サイクルが必要となる。
ディレクトリタグビットおよびＥＣＣビットをどのように配置するかに応じて、メモリコントローラ４２がタグディレクトリビットを更新するのに、最大４サイクルを要することがある。
【００１７】
図３Ａは、メモリユニット４６からキャッシュメモリ４０にキャッシュラインを転送する際の、図２の従来の一例のメインメモリシステム６０の動作を示す一例のタイミング図８０である。
プロセッサ３２が、メモリユニット４６からのキャッシュラインを要求すると、メモリコントローラ４２は、サイクル１において、イネーブル信号を適切なＤＩＭＭに供給し、符号８２に示すように、要求されたキャッシュラインに関連付けられた第１の行アドレス信号（ＲＡＳ（０））を、アドレス／制御バス６４を介してメモリユニット４６に供給する。
この説明例では、要求されたキャッシュラインは、第１のＤＩＭＭ（０）６８に保持されているものと仮定する。
第１のＤＩＭＭ（０）６８が、サイクル２の期間に適切な行アドレスを初期化した後、メモリコントローラ４２は、符号８４に示すように、サイクル３の期間に、要求されたキャッシュラインに関連付けられた第１の列アドレス信号（ＣＡＳ（０））をアドレス／制御バス６４を介して供給する。
第１のＤＩＭＭ（０）６８が、サイクル４の期間に適切な列アドレスを初期化した後、メモリシステム３６が、例えばバースト長４（ＢＬ４）といった効率的なメモリアクセス方式を使用するものと仮定すると、メモリコントローラ４２は、符号８６に示すように、サイクル５〜８の期間に、要求されたキャッシュラインならびにその関連付けられたタグビットおよびＥＣＣビットを読み出す。
【００１８】
符号８８に示すように、サイクル８において、メモリコントローラ４２は、ＣＡＳ（０）を再起動する。
第１のＤＩＭＭ（０）６８が、サイクル９の期間に適切な列アドレスを再初期化している間、メモリコントローラ４２は、先のサイクル５〜８の期間に読み出した、要求されたキャッシュラインのディレクトリタグを変更し、そのキャッシュラインのＥＣＣビットを再計算する。
符号９０に示すように、サイクル１０〜１３の期間に、メモリコントローラは、変更したＥＣＣビットおよびディレクトリタグビットをメモリユニット４６に再び書き込む。
換言すると、サイクル１０〜１３の期間に、メモリコントローラ４２は、要求されたキャッシュラインのＥＣＣビットおよびディレクトリタグビットを更新する。
一例のタイミング図８０から分かるように、キャッシュラインの読み出しおよびＥＣＣ／タグの更新は、連続した動作である。
メモリコントローラ４２が、サイクル９〜１３の期間にＥＣＣ／タグの更新を行っている間は、メモリユニット４６からデータバス６２を介してデータを読み出すことはできず、その結果、メモリシステムのバンド幅が低減される。
【００１９】
図３Ｂは、図２の従来の一例のメインメモリシステム６０の一実施の形態の動作を示す一例のタイミング図９０である。
この図では、各ＤＩＭＭのＲＡＭは、それらが記憶するデータビットとそれらが記憶する情報ビットとに分離されていない。
この実施の形態では、要求されたキャッシュラインのＥＣＣビットおよびディレクトリタグビットを１サイクルで更新できるように、ＲＡＭが構成されている。
プロセッサ３２が、メモリユニット４６からのキャッシュラインを要求すると、メモリコントローラ４２は、サイクル１において、イネーブル信号を適切なＤＩＭＭに供給し、符号１０２に示すように、その特定のキャッシュラインに関連付けられたＲＡＳ（０）を、アドレス／制御バス６４を介してメモリユニット４６に供給する。
先ほどの例と同様に、要求されたキャッシュラインは、第１のＤＩＭＭ（０）６８に保持されているものと仮定する。
第１のＤＩＭＭ（０）６８が、サイクル２の期間に適切な行アドレスを初期化した後、メモリコントローラ４２は、符号１０４に示すように、サイクル３の期間に、要求されたキャッシュラインに関連付けられたＣＡＳ（０）をアドレス／制御バス６４を介して供給する。
第１のＤＩＭＭ（０）６８が、適切な列アドレスを初期化した後、メモリコントローラ４２は、符号１０６に示すように、サイクル５〜８の期間に、要求されたキャッシュラインならびにその関連付けられたＥＣＣビットおよびタグディレクトリビットを読み出す。
【００２０】
符号１０８に示すように、サイクル８において、メモリコントローラ４２は、ＣＡＳ（０）を再起動する。
第１のＤＩＭＭ（０）６８が、サイクル９の期間に適切な列アドレスを再初期化している間、メモリコントローラ４２は、先のサイクル５〜８の期間に読み出した、要求されたキャッシュラインのディレクトリタグを変更し、そのキャッシュラインのＥＣＣビットを再計算する。
符号１１０に示すように、サイクル１０の期間に、メモリコントローラ４２は、更新したタグおよび再計算したＥＣＣビットをメモリユニット４６に再び書き込む。
換言すると、サイクル１０の期間に、メモリコントローラ４２は、要求されたキャッシュラインのＥＣＣビットおよびタグディレクトリビットを更新する。
この一例の実施の形態は、図３Ａの一例の実施の形態と比較すると、データバス６２のメモリバンド幅損失を５サイクルから２サイクルに低減するが、それでもなお、符号１１０のサイクル９〜１０の期間、メモリバンド幅が失われる。
【００２１】
図４は、本発明によるディレクトリベースのキャッシュコヒーレンシ方式を使用するメインメモリシステム１２０の一例の実施の形態の概略ブロック図である。
このメインメモリシステム１２０は、メモリコントローラ４２、メインメモリユニット４６、１２８ビット幅データバス１２２、およびアドレス／制御バス１２４を含む。
メインメモリユニット４６は、第１のＤＩＭＭ６８、第２のＤＩＭＭ７０、第３のＤＩＭＭ７２、および第４のＤＩＭＭ７４をさらに備える。
これらの４つのＤＩＭＭのそれぞれは、データバス１２２およびアドレス／制御バス１２４を介してメモリコントローラ４２に接続されている。
図２の従来のメインメモリシステム６０とは異なり、本発明のメインメモリシステム１２０は、４つの１６ビット幅情報バスをさらに含み、符号１２６、１２８、１３０、および１３２に示すように、ＤＩＭＭ６８、７０、７２、および７４とメモリコントローラ４２とのそれぞれの間に、この４つの情報バスが１つずつ接続される。
この一例の実施の形態では、各ＤＩＭＭは、さらに、３６個の４ビット幅（ＤＤＲ）ＲＡＭを含む。
これらのＲＡＭのうちの３２個は、データの記憶に用いられ、４個は、例えばタグディレクトリビットおよび／またはＥＣＣビットといった情報ビットの記憶に用いられる。
また、この一例の実施の形態では、メインメモリシステム１２０が、１２８バイトからなるシステム定義のキャッシュラインを有し、かつ、ＢＬ４メモリアクセス方式を使用するものと仮定する。
【００２２】
図５は、本発明によるメインメモリシステム１２０の動作を示す一例のタイミング図１４０である。
プロセッサ３２が、第１のＤＩＭＭ（０）６８からの第１のキャッシュラインを要求すると、メモリコントローラ４２は、サイクル１において、符号１４２に示すように、第１のキャッシュラインに関連付けられたＲＡＳ（０）を、アドレス／制御バス１２４を介して第１のＤＩＭＭ（０）６８に供給する。
第１のＤＩＭＭ（０）６８が、サイクル２の期間に適切な行アドレスを初期化した後、メモリコントローラ４２は、符号１４４に示すように、第１のキャッシュラインに関連付けられたＣＡＳ（０）をアドレス／制御バス１２４を介して第１のＤＩＭＭ（０）に供給する。
第１のＤＩＭＭ（０）６８が、サイクル４の期間にＣＡＳ（０）に関連付けられた適切な列アドレスを初期化した後、メモリコントローラ４２は、サイクル５〜８の期間に、符号１４６に示すように、要求された第１のキャッシュラインの１，０２４ビットのデータビットをデータバス１２２を介して読み出し、符号１４８に示すように、要求された第１のキャッシュラインの１２８ビットのＥＣＣ／タグディレクトリビットを第１の情報バス１２６を介して読み出す。
第１のキャッシュラインの読み出し後、メモリコントローラ４２は、第１のキャッシュラインに関連付けられた変更後のタグディレクトリビットに基づいてＥＣＣを計算する。
【００２３】
第１のキャッシュラインが、サイクル５〜８の期間に、データバス１２２および情報バス１２６を介して読み出されている間、メモリコントローラ４２は、符号１５０に示すように、サイクル５において、要求された第２のキャッシュラインに関連付けられたＲＡＳ（１）をアドレス／制御バス１２４を介して第２のＤＩＭＭ（１）７０に供給する。
第２のＤＩＭＭ（１）７０が、サイクル６の期間に適切な行アドレスを初期化した後、符号１５２に示すように、サイクル７において、メモリコントローラ４２は、第２のキャッシュラインに関連付けられたＣＡＳ（１）をアドレス／制御バス１２４を介して第２のＤＩＭＭ（１）７０に供給する。
符号１５４に示すように、サイクル８において、第２のＤＩＭＭ（１）７０が、ＣＡＳ（１）に関連付けられた適切な列アドレスを初期化している間、メモリコントローラ４２は、ＣＡＳ（０）をアドレス／制御バス１２４を介して第１のＤＩＭＭ（０）６８に再び伝送する。
第２のＤＩＭＭ（１）７０が、サイクル８の期間に、ＣＡＳ（１）に関連付けられた適切な列アドレスを初期化した後、メモリコントローラ４２は、サイクル９〜１２の期間に、符号１５６に示すように、要求された第２のキャッシュラインの１，０２４ビットのデータビットをデータバス１２２を介して読み出し、符号１５８に示すように、要求された第２のキャッシュラインの１２８ビットのＥＣＣ／タグディレクトリビットを第２の情報バス１２８を介して読み出す。
第２のキャッシュラインの読み出し後、メモリコントローラ４２は、第２のキャッシュラインに関連付けられた変更後のタグディレクトリビットに基づいてＥＣＣを計算する。
【００２４】
サイクル９において、要求された第２のキャッシュラインが、データバス１２２および情報バス１２８を介して読み出され、かつ、ＣＡＳ（０）が、第１のＤＩＭＭ（０）６８によって再初期化されている間、メモリコントローラ４２は、符号１６０に示すように、要求された第３のキャッシュラインに関連付けられたＲＡＳ（２）をアドレス／制御バス１２４を介して第３のＤＩＭＭ（２）７２に供給する。
第１のＤＩＭＭ（０）６８が、ＣＡＳ（０）に関連付けられた適切な列アドレスを再初期化した後、メモリコントローラ４２は、符号１６２に示すように、第１の情報バス１２６を介して第１のＤＩＭＭ（０）６８に、更新したＥＣＣビットおよびタグディレクトリビットを書き込む。
【００２５】
第３のＤＩＭＭ（２）７２が、サイクル１０の期間に、ＲＡＳ（２）に関連付けられた適切な行アドレスを初期化した後、メモリコントローラ４２は、符号１６４に示すように、第３のキャッシュラインに関連付けられたＣＡＳ（２）をアドレス／制御バス１２４を介して第３のＤＩＭＭ（２）７２に供給する。
サイクル１２において、第３のＤＩＭＭ（２）７２が、ＣＡＳ（２）に関連付けられた適切な列アドレスを初期化している間、メモリコントローラ４２は、符号１６６に示すように、アドレス／制御バス１２４を介して第２のＤＩＭＭ（１）７０にＣＡＳ（１）を再び転送する。
第３のＤＩＭＭ（２）７２が、サイクル１２の期間に、ＣＡＳ（２）に関連付けられた適切な列アドレスを初期化した後、メモリコントローラ４２は、サイクル１３において、符号１６８に示すように、データバス１２２を介して、要求された第３のキャッシュラインの１，０２４ビットのデータビットの読み出しを開始し、符号１７０に示すように、第３の情報バス１３０を介して、要求された第３のキャッシュラインの１２８ビットのＥＣＣ／タグディレクトリビットの読み出しを開始する。
【００２６】
サイクル１３において、要求された第３のキャッシュラインが、データバス１２２および情報バス１３０を介して読み出され、かつ、ＣＡＳ（１）が、第２のＤＩＭＭ（１）７０によって再初期化されている間、メモリコントローラ４２は、符号１７２に示すように、第４のキャッシュラインに関連付けられたＲＡＳ（３）をアドレス／制御バス１２４を介して第４のＤＩＭＭ（３）７４に供給する。
第２のＤＩＭＭ（１）７０が、ＣＡＳ（１）に関連付けられた適切な列アドレスを再初期化した後、メモリコントローラ４２は、符号１７４に示すように、第２の情報バス１２８を介して第２のＤＩＭＭ（１）７０に、更新したＥＣＣビットおよびタグディレクトリビットを書き込む。
【００２７】
プロセッサ３２がキャッシュメモリ４０の内容の更新プロセスを続ける限り、メモリコントローラ４２は、このようにして、ＤＩＭＭ６８、７０、７２、および７４から、要求されたキャッシュを読み出し続け、ＤＩＭＭ６８、７０、７２、および７４に、更新したＥＣＣビットおよびタグディレクトリビットを書き込み続ける。
一例のタイミング図１４０からも分かるように、本発明によるディレクトリベースのキャッシュコヒーレンシ方式を使用するメインメモリシステム１２０は、ＥＣＣビットおよびタグディレクトリビットの更新が行われる、分離した情報バス１２６、１２８、１３０、および１３２を設けることによってメモリバンド幅損失を低減する。
本発明によるメモリシステム１２０は、分離した情報バスを設けることにより、先に読み出したキャッシュラインのＥＣＣ／タグディレクトリビットの更新を同時に行いながら、１つのキャッシュラインを読み出すことができる。
例えば、本発明によるメモリシステム１２０は、サイクル５〜８の期間で先に読み出した、符号１４６および１４８に示すキャッシュラインのＥＣＣ／タグディレクトリビットの更新を、符号１６２に示すように同時に行いながら、サイクル９〜１２の期間に、符号１５６および１５８に示すキャッシュラインを読み出すことができる。
これらの動作を並列に実行することにより、本発明によるメモリシステム１２０は、メモリバンド幅損失を低減する。
【００２８】
本発明の一態様は、例えばメモリシステム１２０といったシングルバスメモリシステムにおける単一誤り訂正（ＳＥＣ（single error correct））と、２重誤り検出（ＤＥＤ（double error detection））と、チップキルの訂正とをサポートするＥＣＣ方式を提供する。
チップキルという用語は、従来どおり、複数のビット誤りがメモリデバイスの幅である場合に、そのメモリの複数のビット誤りを訂正できることを指す。
例えば、チップキル機能をサポートするメモリシステム１２０は、ＤＩＭＭ６８、７０、７２、または７４の４ビット幅ＲＡＭのいずれか１つの障害によって４ビット幅誤りが生じてもその誤りを訂正することができることになる。
したがって、いずれか１つの４ビット幅ＲＡＭに障害が発生しても、メモリシステム１２０は障害を起こさないことになる。
【００２９】
このようなＥＣＣ方式を提供するために、通常のメモリ方式に対して、複数のＤＩＭＭを結合して１つのメモリバスにすることが必要となる。
例えば、ある一定の高級なチップセットは、４つのＤＩＭＭを結合して、１２８ビットのデータビットおよび１６ビットのＥＣＣビットを含む１４４ビットバスにする。
訂正可能なビット数は、通常、メモリシステムがサポートするＥＣＣビットのビット数に依存する。
誤り訂正符号は、共通に使用される誤り検出／訂正プロセスを指し、このプロセスは、一般に、巡回冗長符号（ＣＲＣ）アルゴリズムに基づいている。
ＣＲＣアルゴリズムは、ＥＣＣ符号語の形で受信されたデータが、ＣＲＣ多項式によって正確に割り切れるように作用する。
この受信されたデータは、データビットおよび後尾に追加されたＣＲＣビットを含む。
ＥＣＣ符号語が、ＣＲＣ多項式によって割り切れない場合には、誤りが発生したものとみなされる。
【００３０】
図６は、複数のメモリバスを使用して、チップキルをサポートするＥＣＣ方式を提供する従来のメモリシステム２００の一例を示すブロック図である。
この従来のメモリシステム２００は、第１のＤＩＭＭ（０）２０２、第２のＤＩＭＭ（１）２０４、第３のＤＩＭＭ（２）２０６、および第４のＤＩＭＭ（３）２０８を含む。
これらの４つのＤＩＭＭのそれぞれは、３６個の４ビット幅のＲＡＭを含む。
従来のメモリシステム２００は、さらに、４つの１４４ビット幅メモリバス２１０、２１２、２１４、および２１６を含み、各メモリバスは、それぞれ、１４４ビットのＥＣＣ符号語２１８、２２０、２２２、および２２４を供給する。
各符号語は、１２８ビットのデータビットおよび１６ビットのＥＣＣビットを含む。
ＤＩＭＭ２０２、２０４、２０６、および２０８の各ＲＡＭの４ビットの各ビットは、異なる符号語に寄与する。
換言すると、ＤＩＭＭ２０２、２０４、２０６、および２０８の３６個のＲＡＭのそれぞれの１ビットは、４つの１４４ビット幅メモリバス２１０、２１２、２１４、および２１６のそれぞれに結合される。
したがって、各ＤＩＭＭ２０２、２０４、２０６、および２０８は、符号２２６、２２８、２３０、および２３２にそれぞれ示すように、３６ビット幅メモリバスを介して４つの１４４ビット幅メモリバス２１０、２１２、２１４、および２１６のそれぞれに結合される。
【００３１】
４つのメモリバス２１０、２１２、２１４、および２１６は、４つのＤＩＭＭ２０２、２０４、２０６、および２０８からの５７６ビットへの同時アクセスを提供する。
１つのＥＣＣ符号語につき１２８ビットのデータビットがあるので、従来のメモリシステム２００は、１２８バイトのキャッシュラインを検索するのに２サイクルを要する。
例えばＨａｍｍｉｎｇ／Ｈｓｉａｏ符号といった標準的なＥＣＣ符号は、ＥＣＣ符号の４つの１４４ビット符号語２１８、２２０、２２２、および２２４のそれぞれでＳＥＣ−ＤＥＤを提供する。
ＤＩＭＭ２０２、２０４、２０６、および２０８の各ＲＡＭの各ビットが、異なるＥＣＣ符号語に向かうので、チップキルがサポートされる。
その結果、あるＲＡＭの障害は、ＥＣＣ符号語のそれぞれにおいて単一ビット障害として見え、それにより、訂正を受けることができる。
【００３２】
例えば従来のメモリシステム２００によって示したような従来のメモリシステムは、ＳＥＣ、ＤＥＤ、およびチップキルをサポートするが、いくつかの望ましくない特徴を有する。
第１に、従来のメモリシステムは、キャッシュラインにアクセスするのに、５７６ビット幅のバスを必要とし、その結果、集積回路が多数のピンを有することになり、それに対応して、コストが増加する。
第２に、キャッシュラインを検索するのに、４つのＤＩＭＭにアクセスするので、４個単位のＤＩＭＭの増加量でメモリに追加しなければならない。
第３に、全てのメモリ読み出しの後に、タグディレクトリの更新が続くことがあるので、メモリバンド幅が潜在的に浪費される可能性がある。
最後に、例えばＢＬ４といったある一定の効率的なメモリアクセス方式は、１２８バイトのキャッシュラインサイズではなく２５６バイトをフェッチするので、サポートに無駄が生じ得る。
【００３３】
ある一定のＲＡＭをデータビットの記憶用に指定し、それ以外のＲＡＭを情報ビットの記憶用に指定するように、それぞれのＤＩＭＭ６８、７０、７２、および７４のＲＡＭを構成し、かつ、適したＥＣＣ方式を利用することによって、本発明によるメモリシステム１２０の一実施の形態は、ＳＥＣ、ＤＥＤ、およびチップキルをサポートするＥＣＣ方式を提供すると同時に、通常のメモリシステムに付随する不都合のそれぞれを緩和ないしは除去する。
【００３４】
図７は、メインメモリシステム１２０のメインメモリユニット４６の各ＤＩＭＭが、適したＥＣＣ方式の一実施の形態をサポートするのに利用可能なＲＡＭ構成２４０の一例の実施の形態の説明図である。
このＲＡＭ構成２４０は、合計３６個の４ビット幅（ＤＤＲ）ＲＡＭを含む。
符号２４２に示すように、ＲＡＭ０〜３１は、１２８ビットのデータビットを記憶するように構成される。
符号２４４に示すように、ＲＡＭ３２〜３５は、情報ビットを記憶するように構成される。
２つの情報ＲＡＭ２４６は、３６個のＲＡＭの中の単一ＲＡＭ障害の訂正用、および、ＳＥＣ用のチップキルを提供するＥＣＣビットを記憶するように構成される。
１つの情報ＲＡＭ２４８は、ＤＥＤを提供するＥＣＣビットを記憶するように構成される。
１つの情報ＲＡＭ２５０は、タグディレクトリビットを記憶するように構成される。
【００３５】
通常、チップキル機能に必要なＥＣＣビットのビット数は、メモリチップの幅および使用されるＥＣＣアルゴリズムに依存する。
標準的なＥＣＣ方式では、通常、単一ＲＡＭ障害の訂正を可能にするために、ＲＡＭ構成２４０の３６個の４ビット幅のＲＡＭのそれぞれが、少なくとも５ビットをＥＣＣ符号語に提供することが必要となる。
ＤＤＲ  ＲＡＭを使用する一実施の形態では、各ＲＡＭは、８ビットを提供し、それによって、２８８ビット（３６×８）からなるＥＣＣ符号語を提供する。
この２８８ビットのＥＣＣ符号語は、ＲＡＭ２４６の１６ビットのＥＣＣビットを併せると、標準的なＥＣＣ方式を利用するチップキルの機能をサポートするのに十分である。
一実施の形態では、ＤＥＤ用および２重ＲＡＭ障害用のＥＣＣビットと、タグディレクトリビットとの間で情報ＲＡＭ２４８のビットを分割することによって、ＥＣＣ方式が２重ＲＡＭ障害の検出をさらにサポートできるように、ＲＡＭ構成２４０を変更することができる。
【００３６】
ＥＣＣ方式の上記説明は、３６個のＲＡＭ  ＤＩＭＭ、１２８バイトのキャッシュラインサイズ、および（ＤＤＲ）ＲＡＭの観点からのものであるが、この原理は、（任意の適したビット幅およびデータ転送速度を有する任意の適した個数のＲＡＭを使用する）ＤＩＭＭサイズ、キャッシュラインサイズ、およびメモリ技術のあらゆる変形に適用されることに留意すべきできある。
【００３７】
結論として、第１のキャッシュラインの読み出しと、先に読み出した第２のキャッシュラインのディレクトリタグの更新とを同時に行うことをメモリコントローラに可能にすることによって、本発明によるメインメモリシステム１２０の一実施の形態は、通常のディレクトリベースのキャッシュコヒーレンシ方式により実行されるタグ更新に付随したメモリシステムのバンド幅損失を低減するディレクトリベースのキャッシュコヒーレンシ方式を提供する。
さらに、メインメモリシステム１２０の一実施の形態は、シングルバスメモリシステムにおける単一誤り訂正と、２重誤り検出と、チップキルとをサポートすると共に、１つのＤＩＭＭの増加量でメモリを追加することをサポートする誤り訂正符号方式を提供する。
【００３８】
本明細書では、好ましい実施の形態を説明する目的で、特定の実施の形態を示し説明してきたが、同じ目的を達成するのに適合した多種多様な別の実施態様および／または均等な実施態様を、本発明の範囲から逸脱することなく、図示して説明した特定の実施の形態の代わりに使用できることが当業者には理解されよう。
化学技術、機械技術、電気機械技術、電気技術、およびコンピュータ技術の当業者は、本発明が、非常にさまざまな実施の形態で実施できることを容易に理解するだろう。
この出願は、本明細書で解説した好ましい実施の形態のあらゆる適応またはあらゆる変形をカバーするように意図されている。
したがって、この発明は、特許請求の範囲およびその均等物によってのみ限定されることが明白に意図されている。
【図面の簡単な説明】
【００３９】
【図１】本発明によるコンピュータシステムの一実施の形態を示す概略ブロック図である。
【図２】ディレクトリベースのキャッシュコヒーレンシ方式を使用する従来のメインメモリシステムを示す概略ブロック図である。
【図３Ａ】ディレクトリベースのキャッシュコヒーレンシ方式を使用する従来のメインメモリシステムの動作を示す一例のタイミング図である。
【図３Ｂ】ディレクトリベースのキャッシュコヒーレンシ方式を使用する従来のメインメモリシステムの動作を示す一例のタイミング図である。
【図４】本発明によるディレクトリベースのキャッシュコヒーレンシ方式を使用するメインメモリシステムの一実施の形態を示す概略ブロック図である。
【図５】本発明によるディレクトリベースのキャッシュコヒーレンシ方式を使用するメインメモリシステムの動作を示す一例のタイミング図である。
【図６】従来のメインメモリ誤り訂正符号方式を示す概略ブロック図である。
【図７】本発明による誤り訂正符号方式をサポートするＲＡＭ構成の一例の実施の形態の説明図である。
【符号の説明】
【００４０】
３２・・・プロセッサ、
４０・・・メモリキャッシュ、
３６・・・メインメモリシステム、
４２・・・メモリコントローラ、
４６・・・メインメモリユニット、
４８・・・タグディレクトリ、
５０・・・大容量ストレージメモリ、
２１８，２２０，２２２，２２４・・・１４４ビット符号語、
２４２・・・データＲＡＭ、
２４４・・・情報ＲＡＭ、
２４６・・・ＥＣＣ訂正（チップキル）、
２４８・・・ＥＣＣ検出、
２５０・・・タグディレクトリ、
【図１】
2004326734.tif 000003
【図２】
2004326734.tif 000004
【図３Ａ】
2004326734.tif 000005
【図３Ｂ】
2004326734.tif 000006
【図４】
2004326734.tif 000007
【図５】
2004326734.tif 000008
【図６】
2004326734.tif 000009
【図７】
2004326734.tif 000010