(57)【要約】【課題】  メモリのタイミング分解能をバスクロック周波数に関わらず向上する。【解決手段】  メモリシステムは、主メモリ（１７）及びメモリ制御装置（１６）を備えている。主メモリ（１７）は、複数のバンクを有している少なくとも１つのブロックを備えている。メモリ制御装置（１６）は、複数のデータチャネルを備えており、各データチャネルが主メモリ（１７）における少なくとも１つのバンクをアクセスすることができる。各データチャネルはキャッシュパージ動作及び通常の書き込み動作を効率的にサポートするための書き込みＦＩＦＯバッファ（１４５、１４７）、及び同時のキャッシュコピーバック動作と共にコヒーレント読み出しを効率的にサポートするための反射型書き込みＦＩＦＯバッファ（１４６、１４８）を備えている。【選択図】  図４
2005228359.tif 000002
【特許請求の範囲】
【請求項１】
システムバスに結合されるメモリシステムであって、
少なくとも１つのブロックを含むメモリであって、該少なくとも１つのブロックは複数のバンクを含む、メモリと、
複数のデータチャネルであって、それぞれ、複数のデータビットを該システムバスと該複数のバンクの少なくとも１つとの間で結合するデータチャネルと、
該システムバス及び該複数のデータチャネルに結合され、該システムバスからアドレス及び制御信号を受け取り、該アドレス及び制御信号によって指定される１つ以上のアドレスに応答して該メモリ及び該システムバス間でのデータの転送を制御するためのコントローラであって、該アドレスに基づいて該システムバスと該メモリとの間で該データを転送するために該複数のデータチャネルからある数のデータチャネルを選択し、該選択されるデータチャネルの数は該システムバスのサイズに依存する、コントローラと、
を備えた、メモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
本発明はメモリシステムに関する。詳しくは、様々なバスに接続し、単一プロセッサおよび多重プロセッサアーキテクチャの両方を効率的にサポートするメモリシステムに関する。
【背景技術】
【０００２】
発明の背景
ランダムアクセスメモリ（ＲＡＭ）、特にダイナミックランダムアクセスメモリ（ＤＲＡＭ）の応用範囲の拡大および急速な発展により、メモリ装置の記憶容量はほぼ２年毎に倍増している。さらに、今日では記憶容量が様々に異なるＤＲＡＭなどの、様々なタイプのメモリ装置が市販されている。これには、サイズが各々、２５６ｋｘ １、１Ｍ ｘ １、４Ｍ ｘ １、１６Ｍ ｘ １、２５６ｋ ｘ ４、１Ｍ ｘ ４、４Ｍ ｘ ４のＤＲＡＭが含まれ、また間もなく、２５６ｋ ｘ １６および１Ｍｘ １６の記憶容量を有するさらに大きなＤＲＡＭも加わる予定である。しかし、様々なプロセッサおよびバスシステムを効率的にサポートし得、様々なタイプのメモリ装置の使用を可能にする主メモリ構造をどのように提供するかという問題は、先行技術によってはいまだ解決されていない。さらに、このような主メモリが提供されるとしても、次の問題は、このようなメモリヘのアクセスを様々なプロセッサシステムの必要条件に従って効率的に制御し得るメモリコントローラを提供することである。
【０００３】
様々なプロセッサシステムの必要条件を満たすために、様々なプロセッサをサポートする様々な帯域幅を有する様々な異なるシステムバスが導入されている。これらのバスはまた様々なバスクロック周波数を有し得る。
【０００４】
市販されている１つのバスは、Ｓｕｎ Ｍｉｃｒｏｓｙｓｔｅｍｓ Ｉｎｃ.により開発されたＭ−バスと呼ばれるバスである。このバスは相補形金属−酸化物−半導体（ＣＭＯＳ）の技術と適合し得る。Ｍ−バスは通常は２つのレベルに分類される。レベル１は単一プロセッサシステムをサポートする。単一プロセッサシステムの１つの例は一般に図１Ａに示される。この例では、バス２がプロセッサ３とメモリコントローラ４との間を接続し、メモリコントローラ４はメモリ５と接続する。単一プロセッサシステムの別の例を図１Ｂに示す。この例では、プロセッサ６はキャッシュ７に接続し、キャッシュ７がさらにシステムバス８に接続する。レベル２は多重プロセッサシステムをサポートする。多重プロセッサシステム１０の１つの例を図１Ｃに示す。複数のプロセッサ１１−１２（２つのみを示す）がバス１５およびメモリコントローラ１６を通して共通の主メモリ１７を共有する。各プロセッサ１１または１２は少くとも１つのローカルキャッシュ１３または１４に接続する。レベル２のＭ−バスの１つの例は、ＳＰＡＲＣＭ−バスレベル２であり、これは、通常の読出しおよび書込み処理と共に、コヒーレントな無効処理、コヒーレントな読出し処理、コヒーレントな書込みおよび無効処理、およびコヒーレントな読出しおよび無効処理を含む多くの他の処理をサポートし得る。これら後半の処理の各々は、各プロセッサと接続するローカルキャッシュを必要とする。システムバスは、３２ビット、６４ビット、および１２８ビットのデータ幅など様々な大きさ、および２５ＭＨｚ、３３ＭＨｚ、４０ＭＨｚ、または５０ＭＨｚなどの様々なクロック周波数を有し得る。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来のメモリシステムは、大きさおよびクロック速度が異なる様々なバスをサポートするほどに柔軟ではない。特に、従来のメモリシステムは、各々が少くとも１つのローカルキャッシュに接続し、また共通の主メモリを共有する多くのプロセッサに接続するバスシステムを効率的にサポートしない。
【０００６】
例えば、いくつかのプロセッサシステムでは、コピーバック環境の下でのキャッシュコントローラは、内部でキャッシュラインを消去し、次に主メモリ（ＤＲＡＭ）の読出しを要求し、続いて古いキャッシュラインの主メモリヘの書き戻しを可能にする、内部バッファリングを有し得ない。多くの場合、先ず主メモリに書込み次に読出しを行うように要求される。これは、省略されたキャッシュラインが満たされるのを待つためプロセッサの周期に無駄が生じる。従来のメモリシステムは、キャッシュ消去操作をサポートするメカニズムを有しない。さらに、コヒーレントな読出し処理の間、従来のメモリコントローラは処理の監視しか行えず、抑止読出し操作を書込み操作に変換して反射型メモリを提供することができない。
【０００７】
いくつかの従来のメモリコントローラには、ＦＩＦＯなどのデータバッファリング部が供給され、正常な書込みまたは読出しデータをバッファする。しかし、このようなコントローラの構成は一般には上述のキャッシュ消去または反射型読出し操作をサポートするには適切ではない。さらに、このようなコントローラは、データバッファリング部が前の処理に占領されているときは、主メモリとシステムバスとの間のデータ処理を効率的に行い得ない。さらに、短いバイト処理および長いバースト処理は通常は効率的で信頼性のある方法で実行され得ない。
【０００８】
最後に、従来のメモリシステムは、様々なシステムバスクロック周波数に従ってメモリのタイミング分解能を向上させるほどに柔軟ではない。
【０００９】
これら従来のメモリシステムの例は以下の参考文献に開示されている：１９９０年９月４日付けの米国特許第４,９５４,９５１号；Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ社の製品仕様書、“４Ｍ  Ｃｏｎｆｉｇｕｒａｂｌｅ  Ｄｙｎａｍｉｃ  Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒ／Ｄｒｉｖｅｒ”、製品番号ＡＭ２９Ｃ６６８、１９９０年３月刊行；ＳＡＭＳＵＮＧ社の製品仕様書、“Ｄｙｎａｍｉｃ  ＲＡＭ  Ｃｏｎｔｒｏｌｌｅｒｓ”、製品番号ＫＳ８４Ｃ３１／３２、１９８９年１１月刊行；Ｓｉｇｎｅｔｉｃｓ  Ｆａｓｔ社の製品仕様書、“Ｉｎｔｅｌｌｉｇｅｎｔ  ＤＲＡＭ  Ｃｏｎｔｒｏｌｅｒ”、製品番号ＦＡＳＴ  ７４Ｆ１７６３、１９８９年３月１２日刊行；Ｓｉｇｎｅｔｉｃｓ  Ｆａｓｔ社の製品仕様書、“ＤＲＡＭ  ａｎｄ  Ｉｎｔｅｒｒｕｐｔ  Ｖｅｃｔｏｒ  Ｃｏｎｔｒｏｌｌｅｒ”、製品番号ＦＡＳＴ  ７４Ｆ１７６１、１９８９年３月５日刊行；論文“Ｍ−Ｂｕｓ  Ｐｒｏｖｉｄｅｓ  Ｐｒｏｃｅｓｓｏｒ  −  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｂｕｓ”、Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ｒｅｐｏｒｔ、１９９１年８月７日刊行。
【課題を解決するための手段】
【００１０】
発明の要旨
従って、本発明の１つの目的は、様々な大きさおよびクロック周波数を有し得る様々なタイプのシステムバスと共に使用され得る柔軟性を有するメモリシステムを提供することである。
【００１１】
本発明の別の目的は、様々なプロセッサおよびバスシステムをサポートする新規のメモリ構造を有するメモリシステムを提供することである。このメモリ構造は、複数のブロックを含み、ブロックの各々は様々なタイプのメモリチップにより構成され得、また様々なタイプの大きさを有し得る。
【００１２】
本発明のさらに別の目的は、すべてのＭ−バスレベル１およびレベル２の処理タイプ、および、同時にコピーバック操作が行われるコヒーレントの読出しを伴うキャッシュ消去操作を効率的にサポートし得るメモリシステムを提供することである。
【００１３】
本発明のさらに別の目的は、データのためのパリティ発生およびチェック、アドレスのパリティチェックのための追加ビット、および多重プロセッサをサポートするために柔軟性が増大したことによる追加の制御ビットを含む、３２、６４、および１２８ビットの大きさのシステムバスをサポートし得るメモリシステムを提供することである。
【００１４】
本発明のさらに別の目的は、様々なバスクロック周波数を有する様々なタイプのシステムバスと接続し得、またメモリのタイミング分解能が向上したメモリシステムを提供することである。
【００１５】
本発明のさらに別の目的は、複数のデータチャンネルを提供して効率的なデータ処理を可能とするメモリシステムを提供することである。
【００１６】
本発明のさらに別の目的は、メモリ内の複数のブロックをサポートし、バスおよびデータの大きさに依存してブロックの１つの中の１つ以上のバンクヘの効率的なアクセスを提供するメモリシステムを提供することである。
【００１７】
本発明のさらに別の目的は、システムバスの通信量を低減して、共通の主メモリを共有する多重プロセッサの効率を向上させ得るＤＲＡＭコントローラを提供することである。
【００１８】
本発明のこれらの目的によれば、主メモリ、およびシステムバスと主メモリとの間を接続するメモリコントローラを有する高性能のダイナミックメモリシステムが提供される。
【００１９】
主メモリは、複数のバンクを含む少くとも１つのブロックを備える。バンクの各々は所定のメモリ帯域幅を有する。主メモリの各ブロックはＤＲＡＭタイプのメモリエレメントにより構成される。
【００２０】
システムバスは、様々な大きさおよび様々なバス周波数を有し得る。システムバスは複数のプロセッサに接続され、プロセッサの各々が少くとも１つのローカルキャッシュと接続し、これにより主メモリがすべてのプロセッサにより共有される。本発明の第１の実施態様においては、システムバスは様々なプロセッサシステムをサポートし得る拡張Ｍ−バスである。
【００２１】
メモリコントローラは、システムバスヘのおよびシステムバスからのデータ転送を制御するために、システムバスからのアドレスおよび制御信号を受け取る制御回路を含む。コントローラはまた、データ送受信回路を含み、この場合も制御回路の制御の下で、データをシステムバスヘおよびシステムバスから、主メモリヘおよび主メモリから送受信する。
【００２２】
制御回路はアドレス信号経路および制御信号経路を含む。アドレス信号経路上には、制御回路には読出しアドレス経路および書込みアドレス経路が設けられている。書込みアドレス経路には２つの書込み経路が設けられている。一方は、システムバスで連続書込みデータ処理が行われるとき、第１のデータ処理アドレスのための経路を提供するために使用される。他方は、第１のアドレスがＤＰＡＭで実行されている間に、次のデータ処理アドレスを保持するために使用される。制御信号経路では、制御回路には読出し制御信号経路および書込み制御信号経路が備わる。書込み制御信号経路はさらに、第１のデータ処理制御信号のための第１の経路、および次のデータ処理制御信号を保持するための第２の経路を含む。
【００２３】
制御回路は、主メモリの構成パラメータ、システムバスの大きさ、およびシステムバス周波数増倍率に関するプログラム情報を提供するように構成され、これにより主メモリ内の様々なメモリタイプ、様々な大きさおよび速度を有する様々なタイプのシステムバスがサポートされ、また主メモリのタイミング分解能が向上する。
【００２４】
データ送受信回路には複数のデータチャンネルが含まれ、各々が少くとも１つの書込み先入れ先出し部（書込みＦＩＦＯ）を有する書込みデータ経路を備える。書込みＦＩＦＯはシステムバスから受け取るデータを主メモリに記憶する前に一時的に保持するもので、ＦＩＦＯに既に保管されているデータを失わずに、すべてのプロセッサがいつでもデータを得ることが可能である。また、書込みデータ経路では、少くとも１つの他の反射型先入れ先出し部（反射型ＦＩＦＯ）が含まれ、プロセッサの１つに接続するローカルキャッシュからデータを要求している別のプロセッサのローカルキャッシュに転送されるシステムバス上のデータを捕え、これにより、データは反射型ＦＩＦＯおよびデータを要求しているプロセッサのローカルキャッシュに同時に記憶される。各チャンネルは、主メモリのブロックのバンクと同じ、所定の大きさのデータバス帯域幅を有する。
【００２５】
各データチャンネルはまた、システムバスと主メモリとの間に、読出しデータの転送のための読出しデータ経路を含む。読出しデータ経路にはデータ訂正をサポートするために使用されるエラー検出および訂正回路が設けられている。
【００２６】
第２の実施態様においては、２つのデータチャンネルが集積回路の形態の単一のデータチャンネルユニットに接続される。データ送受信回路は２つ以上のこれらデータチャンネルユニットを含み得る。
【００２７】
メモリコントローラの制御回路はまた、適切なデータチャネルおよびチャンネルユニットを認識および選択し得る制御論理を含む。この選択はシステムバスの大きさ、各データチャンネルの状況、および転送されるデータの大きさに依存する。データバースト書込みの間は、各ユニットのチャンネルは他の方法で操作し得、これにより主メモリ境界内のさらに多くのデータ語を適切なチャンネルに蓄積し得、主メモリヘの効率的な転送が可能となる。
【００２８】
第３の実施態様においては、主メモリは複数のブロックに分かれ、各ブロックを各々異なるＤＲＡＭタイプの構成とし得る。各ブロックは同一のＤＲＡＭタイプの複数のバンクを含む。
【００２９】
主メモリシステムはまた、バス周波数を増加させる周波数乗算器を含み、主メモリのタイミング分解能を向上させるメモリクロックを提供する。周波数乗算器は、プログラム可能メモリコントローラにより生成されるバス周波数乗算ファクターを使用する。
【００３０】
第４の実施態様においては、プログラム可能メモリコントローラは、プログラミング機能を記憶する多くのプログラムレジスタを含む。これらプログラムレジスタの中には、多様な制御用の情報を記憶するコマンドレジスタがある。これらの情報には、主メモリのブロック数および各ブロックの大きさおよびプロセッサのメモリマップにおける位置、バスの大きさ、バス周波数乗算ファクター、およびエラー検出および訂正回路のデータ帯域幅をプログラミングすることが含まれる。タイミング分解能が向上した主メモリ読出しおよび書込み操作のための制御信号のタイミングを記憶するために、タイミングレジスタが設けられている。メモリコントローラはまた、各データチャンネルにおける各ＦＩＦＯの状況（空白か空白でないか）、およびデータ処理の間に発生するエラー情報、などの各データチャンネルの状況を記憶する状況レジスタを含む。また、全体のメモリマップにおける主メモリのブロックのローカル情報を記憶するために供給される位置プログラムレジスタが含まれ、これはコンパレータに接続し、これにより、入力アドレスが位置プログラムレジスタ内のプログラムされた位置の１つに符合するときメモリ内のブロックの１つを正しく選択することが可能となる。位置プログラムレジスタには、どのプロセッサのアドレスビットがアドレスと符合するかを認識するために使用されるマスクビットを記憶するためのマスクレジスタが接続されている。
【００３１】
上述のおよび他の本発明の特徴および利点は、以下の図面を参照して、後述する実施態様の詳細な説明を研究すれば明かとなる。
【発明を実施するための最良の形態】
【００３２】
好適な実施態様の詳細な説明
以下に、本発明により構成されるメモリシステムの実施態様について述べる。
【００３３】
メモリシステムはＤＲＡＭ構造および独自のＤＲＡＭコントローラを含む。そのＤＲＡＭコントローラは、大規模なメモリ構造、および３２、６４、または１２８ビットデータ幅などの様々なバス幅を有し、また２５Ｍｈｚ、３３Ｍｈｚ、４０Ｍｈｚ、または５０Ｍｈｚなどの様々なバスクロック周波数を有するいくつかのバスをサポートするのに適している。メモリシステムはまた、様々なプロセッサシステムに対する高性能および高効率のメモリ動作を行うために、多くのバス処理をサポートするのに適している。このようなプロセッサシステムには、図１Ａおよび１Ｂに示すような単一プロセッサシステム、ならびに図１Ｃに示すような多重プロセッサシステムが含まれる。ＤＲＡＭコントローラには、ＤＲＡＭ制御装置（ＤＲＡＣ）およびデータ送受信装置（ＤＳＲＤ）が含まれる。ＤＲＡＣはシステムバスとＤＲＡＭとの間のＤＳＲＤに接続される。ＤＳＲＤはシステムバスとＤＲＡＭとの間に接続される。システムバスは単一の多重アドレス／データバスで有り得、または複数の個別のアドレスおよびデータバスを含み得る。バスインターフェースは完全に同期され、バスクロックの立ち上がりを使用する。バス信号の定義はＭ−バス標準の拡張であるため、Ｍ−バスは追加のプロセッサシステムをサポートするために使用され得る。
【００３４】
本発明のメモリシステムは、高性能のアドレス/制御経路および少くとも１つの高性能のエラー検出および訂正データ経路よりなる。アドレス／制御経路上、メモリコントローラには多くのバスシステムおよびデータ処理のためのメモリアクセスを効率的に制御するプログラム可能ＤＲＡＣが設けられている。データ経路上、メモリコントローラにはＦＩＦＯバッファおよびエラー検出および訂正メカニズム（ＥＤＣ）を含むＤＳＲＤが設けられている。ＤＳＲＤは、書込み時には高性能データバッファおよびデマルチプレクサとして、また読出し時にはエラーコレクタとして機能する。ＤＲＡＣおよびＤＳＲＤは各々集積回路とされ得る。
【００３５】
１．メモリ構造
図２に、本発明により構成されるメモリ構造の１つの実施態様を示す。図２のメモリは複数のＤＲＡＭチップを使用して構成される。
【００３６】
図２のメモリは４つのブロック（ブロック０−３）に分けられる。各ブロックは４つのバンク（バンク０−３）を含む。各バンクは３９ビット幅（すなわち、３２個のデータビットおよび７個のエラーチェックビット）である。バンク０−３は１５６ビット幅のブロックとして同時にアクセスされ得、これにより最大メモリ性能が得られる。
【００３７】
メモリは、メモリコントローラのメモリ側に接続される１２本のアドレスライン（行アドレスおよび列アドレスとして多重化される）を有する。メモリはまた４本のＤＲＡＭ読出し／書込みラインＲＷ[３−０]（アクセスされたブロックの４−３９ビットバンク各々に対して１本）、およびメモリコントローラのメモリ側に接続される各々４本のＲＡＳ[３：０]およびＣＡＳ[３：０]制御ラインを含む。メモリは初期の書込みサイクルを使用して書き込まれる。すなわち共通の入出力を有するＤＲＡＭチップは、各々別の入出力を有するＤＲＡＭチップと同じ方法で制御される。このような大規模構成のＤＲＡＭを使用するとき存在する実質的なアドレスおよび制御容量を駆動するために、外部バッファが必要とされる。
【００３８】
メモリコントローラチップセット（ＤＳＲＤおよびＤＲＡＣ）は、２５６Ｋ ｘ １または４、１Ｍ ｘ １または４、もしくは４Ｍｘ １または４、および１６Ｍ ｘ １ＤＲＡＭチップのいずれかをサポートするように設計される。コントローラはまた、もっと大きな４メガビットＤＲＡＭ（２５６Ｋ ｘ１６）およびさらに大きな１６メガビットＤＲＡＭ（１Ｍ ｘ １６）も、これらの装置が利用可能になればサポートし得る。メモリシステムの最大全容量は２５６Ｋ ｘ １ＤＲＡＭを使用し単一のブロックを有する４メガバイトから、１６Ｍｘ １ＤＲＡＭを使用し全部で４個のブロックを有する１ギガバイトまで拡張し得る。記憶容量は２進増分で拡張可能である。ＤＲＡＭチップのタイプは１つのブロックを構成する４つのバンクすべてにおいて同一である。しかし、各ブロックは異なるタイプのＤＲＡＭを有し得る。ＤＲＡＭ構造の可能な構成を下記の表１に示す。多重周波数クロック（４０または５０ＭＨｚバスクロックでは２倍、３３ＭＨｚバスクロックでは３倍、または２５ＭＨｚバスクロックでは４倍）が入力され、これによりＤＲＡＭのタイミングが１０ナノ秒（４０ＭＨｚバスクロックに対しては１２．５ナノ秒）の間隔に制御される。
【００３９】
１５６ビットブロックの各々は、他のブロックのデータラインのそれぞれに接続されるデータラインを有している。適切なブロックは、それのＲＡＳおよびＣＡＳラインをアサートすることによって選択される。選択されたブロックから得られる１５６ビットはＤＳＲＤを通過し、ここでデータのチェックおよび必要であれば訂正が行われる。エラーチェックビットは除去され、データはバス上に位置づけられる。メモリは３２、６４、または１２８ビット幅のデータ経路をサポートし得る。
【００４０】
【表１】
2005228359.tif 000003
【００４１】
主メモリのブロックの各バンクは、６４データビットなどの他の所定のデータ幅によっても構成され得る。
【００４２】
２．バス構造およびその定義
システムバスは、現在市販されているＭ−バスを含む、様々なバスを含み得る。本発明によると、多重プロセッサシステムを効率的にサポートするために、バス信号仕様は、再編成および拡張され得る。１つの実施態様において、信号仕様には、現存する３２−、６４−、および１２８ビットデータをサポートするために、データパリティ生成、データのチェックおよびアドレスパリティチェックのための付加ビット、ならびに様々なプロセッサシステムをサポートする制御ビットが設けられている。分離アドレスおよびデータ線は、非多重システムバスアプリケーションをサポートするために提供され得る。信号はまた、Ｍ−バス適合性をサポートするために多重化され得る。信号仕様は、本発明のメモリシステムと協同して、バーストを含むすべてのＭ一バスレベル１およびレベル２のトランザクションタイプをサポートするばかりでなく、バーストトランザクションの早期終了を可能にし、様々なバーストオーダ（連続およびＩｎｔｅｌ型バースト）のサポートを提供し、様々なプロセッサのバースト長要件（Ｉｎｔｅｌ、Ｍｏｔｏｒｏｌａ、Ｓｐａｒｃ）のサポートを提供し、そしてＦＩＦＯへのキャッシュデータ線の書込みポスティングを可能にする。さらに、読出し/書込みまたはＩ／Ｏ動作は、読出しから書込み、または書込みから読出し等のデータトランザクションの変換を許すために禁止され得る。その結果、バストランザクション速度が向上する。
【００４３】
例えば、システムバスを介して転送された制御信号は、アドレス信号（Ａｄ）、アドレスフェーズを同定するアドレスストローブ信号（ＡＳ＊）、データフェーズを同定するデータストローブ信号（ＤＳ＊）、アドレス／データパリティ信号（ＡＤＰ）、およびバストランザクションの早期終了のためのデータバースト最終信号（ＢＬＳＴ）を含み得る。さらに、制御信号は、バスインターフェースモードを同定するインターフェースモード信号（ＩＭＤ）、トランザクションタイプを特定するトランザクションタイプ信号（ＴＹＰＥ）、バストランザクション中に転送されるバイトの数を特定するトランザクションサイズ信号（ＳＩＺＥ）、およびすでに進行しているＤＲＡＭ読出し／書込みまたはＩ／Ｏサイクルを中止するメモリ抑制信号（ＩＮＨ）を含み得る。他の制御信号は、抑制されたトランザクションサイクルを他に転送するサイクル信号（ＴＲＣ）を変換させる変換サイクル信号（ＴＲＣ）、スヌープウインドを、タイミングレジスタにおいてプログラムされたタイミングインターバルを越えて延長させるスヌープウインド信号（ＳＮＷ）、バスマスタにトランザクション確認を提供する確認信号（ＢＡＣＫ）、バスエラー発生を示すエラー信号（ＢＥＲＲ）、および反射読出しトランザクション中のバスを保持する、ＤＲＡＣによって生成されたバス要求信号（ＢＲ）を含み得る。さらに他の制御信号は、バスオーナーシップの保持中に、ＤＲＡＣ８によってアサートされるバス話中信号（ＢＢ）、バス許諾信号（ＢＧ）、およびエラー条件が発生するときに常にアサートされる割り込みアウト信号（ＩＮＴ）。最後に、制御信号は、すべてのバストランザクションを同期させるクロック信号（ＣＬＫ）、強化タイミングをＤＲＡＭに発生させる多重周波数クロック信号（ＭＣＬＫ）、ＤＲＡＭをリセットするリセットイン信号（ＲＳＴＩＮ）、および同定信号（ＩＤ）を含み得る。
【００４４】
以下に、これらの制御信号のいくつかについてより詳細に説明する。
【００４５】
ＩＭＤは、Ｍ−バスモードまたは一般的なバスモードのような主要メモリシステムに現在連結されてる、バス型またはバスモードを特定するのに使用される。
【００４６】
ＴＹＰＥは、アドレスフェーズ中のデータトランザクションタイプを特定する。ＴＹＰＥビットの解釈は、ＩＭＤによって決定される。例えば、ＩＭＤが、バス型はＳＰＡＲＣ型であると示すとき、ＴＹＰＥビットは、書込み、読出し、コヒーレント無効、コヒーレント読出し、コヒーレント書込みおよび取り消し、およびコヒーレント読出しおよび無効を含む、すべてのデータトランザクションタイプのＳＰＡＲＣ  Ｍ−バスを同定する。ＩＭＤが、バス型は一般型であると示すときには、ＴＹＰＥビットは、書込み、読出し、デフォルトバーストサイズにおける読出し、書込み、デフォルトバーストサイズにおける書込み、連続バーストオーダ、非連続バーストオーダ（Ｉｎｔｅｌプロセッサ等）、ポストされた書込み、デフォルトバーストサイズにポストされた書込み、およびバス上のバイト０の位置を含む、様々なデータトランザクションタイプのＭ−バスまたは一般的アプリケーションを同定する。バイト０は、バス上の最低バイトまたはバース上の最高バイトのいずれかとして発生する。
【００４７】
ＳＩＺＥビットは、トランザクションサイズ、およびイネーブルされる特定の１つのバイトまたは複数のバイトを特定するのに使用される。トランザクションサイズは、バイト、ハーフワード（２バイト）、ワード、ダブルワード、１６バイトのバースト、３２バイトのバースト、６４バイトのバースト、または１２８バイトのバーストを含み得る。特定バイトイネーブル情報は、バイトイネーブル、ならびにｉ４８６および６８０４０のようなプロセッサと互換性のある誤配置されたデータ転送を提供するために、オリジナルＭ−バス仕様に加えられる。バイトイネーブルのすべての組合せは、同時にアサートされ得る。トランザクションサイズ情報の解釈は、アドレス信号における特定の１つまたはそれ以上のバイトのアドレスの機能であり、それにより、メモリ制御器における１つまたはそれ以上のデータチャネルの選択、または主要メモリにおけるバンクの１つまたはそれ以上のバイトヘのアクセス、または主要メモリによける１つまたはそれ以上のバンクヘのアクセスが可能になる。
【００４８】
ＰＭＤビットは、パリティ計算アルゴリズムを特定し、パリティ計算に関与する信号を同定する。ＰＭＤビットは、全システムバスサイクルにおいて有効である。パリティモードは、ディスエーブルとなったパリティ計算、計算されたアドレスパリティ計算されたデータパリティ、計算されたアドレスおよびデータパリティ、計算された奇数パリティ、または計算された偶数パリティを含む。
【００４９】
ＢＡＣＫビットは、トランザクション確認信号をマスタシステムプロセッサ（すなわち、バスマスタ）に提供する。Ｍ−バスモードにおいて、確認信号は、補正不可能なエラー、有効なデータ転送、およびアイドルサイクルのようなＭ−バス定義を含む。一般的なモードでは、確認信号は、有効なデータ転送、エラー例外、およびアイドルサイクルを含み得る。
【００５０】
ＡＳは、バスマスタによってアサートされ、トランザクションのアドレスフェーズを同定する。
【００５１】
ＤＳは、トランザクションのデータフェーズ中でバスマスタによってアサートされる。ＤＳは、ＤＲＡＣにおいて内部的にパイプラインされ、データが転送されるクロックサイクルの１つ前のクロックサイクルに現れる。データは転送され、ＢＡＣＫは、ＤＳがアサートされる（但し、ＤＲＡＭ制御器が転送を確認し得る場合）クロックサイクル後のすべてのシステムバスサイクルにおいてアサートされる。バスマスタは、ＤＳを使用して、サイクル毎をベースとした追従応答を制御（中止）し得る。
【００５２】
ＢＬＳＴは、バスマスタによって使用され、早期にバストランザクションを終了する。ＢＬＳＴは、ＤＳがまたアサートされるクロックサイクル中においてのみ認識される。従って、ＢＬＳＴは、最終的に所望されるデータ転送の１つ前のシステムバスサイクルとしてアサートされなければならない。
【００５３】
ＩＮＨは、多重プロセッシング環境におけるキャッシュ制御器によってアサートされ、すでに進行中のＤＲＡＭ読出し／書込みまたはレジスタＩ／０サイクルを中止する。データ転送が開始する前にＩＮＨが受け取られると、動作は、すべてのデータが転送される前に中止される。メモリ制御器がバス確認を開始した後にＩＮＨが受け取られると、そのＩＮＨは無視される。メモリが反射型である場合には、ＤＲＡＭの読出しは、書込みに変換される。データを保持するスヌープキャッシュから発生するＢＡＣＫ信号は、解釈されて、書込みストローブをＦＩＦＯ／ＥＤＣデータ経路に提供する。禁止された書込みはまた、オーナーシップの読出しに変換され得る。
【００５４】
ＴＲＣは、アサートされると、禁止された読出しサイクルを書込みサイクル（反射型）に、または禁止された書込みサイクルを読出しサイクル（オーナーシップの読出し）に変換する。
【００５５】
ＳＮＷは、アサートされると、スヌープウインドを、ＤＲＡＭタイミングレジスタにプログラムされた値から生じるインターバルを越えて延長させる。この信号は、もし使用されないと、永久にディアサートされ得る。
【００５６】
ＢＥＲＲは、バスパリティエラーがデータトランザクションのアドレスまたはデータフェーズ中に発生したことを示す。信号は、非同期的（すなわち、１つまたはそれ以上の後のクロック）にアサートされる。この信号は、エラーが発生する１つ後のサイクルで有効で、解除されるまで有効である。信号は、コマンドレジスタに適切なビットを書き込むことによって解除される。
【００５７】
ＢＲは、反射型読込みトランザクション中にＤＲＡＣによって発生される。主要メモリシステムによって発生したＢＲは、システムのバス仲介ロジックに対するオーナーシップのための最高のプライオリティ要求として解釈される。さらなるシステムバストランザクションは、主要メモリヘの進行中の書込み（反射型読出しから生じる）が終了するまで停止される。オリジナルのＭ−バス仕様は、２つのキャッシュの間で転送されるデータが同時にＤＲＡＭに書き込まれる間に、次のバストランザクションを遅延させる反射型主要メモリの明示的なメカニズムを有さない。要求するキャッシュとキャッシュデータオーナとの間の確認データ転送のより複雑なプロトコルを有するシステムは、ＢＲを使用して、次のトランザクションがＤＳＲＤ中の反射型データ経路にオーバーライトするのを防止するためにデータストローブを形成し得る。
【００５８】
ＢＧは、ＢＲに応答して外部仲介ロジックによってアサートされ、ＤＲＡＣがバスの認可されたオーナーシップであったことを示す。
【００５９】
ＢＢは、そのバスのオーナーシップの存続のためにＤＲＡＣによってアサートされる。ＤＲＡＣは、反射型読出し動作中に、主要メモリ書込みトランザクションを完了する際に、バスを必要とし得る。
【００６０】
ＩＮＴは、エラー条件が発生したときに常にアサート（もしイネーブルされる場合に）されるオープンＤＲＡＭ出力である。例えば、システムバスパリティエラーまたはメモリーエラーは、アサートされるＩＮＴを引き起こし得る。
【００６１】
ＣＬＫは、すべてのバスデータトランザクションを同期させる。例えば、最大クロック周波数は、５０Ｍｈｚであり、すべてのデータトランザクションは、クロック信号の立ち上がりにおいてストローブされる。
【００６２】
ＲＳＴＩＮは、ＤＲＡＣをリセットするのに使用される。信号は、少なくとも４つのクロックについてアサートされなければならない。
【００６３】
ＩＤビットは、２つの解釈を有する。ＩＭＤがＭ−バスモードを示すときには、ＩＤビット解釈は、完全にＭ−バス互換性である。Ｍ−バスモードでは、ＩＤフィールドは、ポートレジスタおよび他のＩ／０レジスタにアクセスするためのＭ−バスアドレス空間内の様々な形態の空間を選択する。非Ｍ−バスモードで使用されるときには、ＩＤビットは、アドレス信号と連結して使用され、バストランザクションの特性を限定し、Ｉ／０レジスタまたはＤＲＡＭメモリを選択する。ＩＤビットと、限定された一般的（非Ｍ−バス）動作の固定値との間には、適合が必要である。
【００６４】
第２の実施態様では、システムバス仕様は、ＳＰＡＲＣ，ｉ８６０，ｉ４８６およびＭｏｔｏｒｏｌａ  ６８０４０、８８０００シリーズおよびＭＩＰＳ  Ｒ３０００およびＲ４５００シリーズを含むさらなるプロセッサシステムをサポートし得るＭ−バス標準（ＥＭバスと呼ばれる）の拡張である。ＥＭ−バスでは、Ｍ−バス信号のいくつかが保存され、Ｍ−バス信号のいくつかが再定義され、エンハンスされ、いくつかの新しい信号が加えられる。
【００６５】
すべてのＥＭ−バストランザクションは、アドレスフェーズ、次いでデータフェーズに分離される。アドレスフェーズは、アドレスストローブ信号（ＡＳ＊）のアサーションによって同定され、１つのＥＭ−バスサイクル中存続する。データフェーズは、アドレスフェーズに素早く後続し、１つまたはそれ以上のクロックサイクル中存続し得る。データフェーズは、データストローブ（ＤＳ＊）のバスマスタアサーション、およびＡＳ＊の同時ディアサーションによって同定される。バスマスタは、ＤＳ＊をディアサーションすることによってデータトランザクションを一次的に妨害し得る。ＤＳ＊は、その使用を必要としないシステムに永久にアサートされ得る。ＥＭ−バス拡張によって、多重アドレスおよびデータバスが可能になるが、それらはＭ−バスのように強制ではない。Ｍ−バスのように、多重によってＡＤ［０：６３］を形成するときには、アドレス（およびＡＤ［３６：６３］を形成する属性）は、ＡＳ＊と同時にアサートされ、データは、ＤＳ＊と同時にアサートされ得る。
【００６６】
ＥＭ−バス信号は、以下の表２において要約される：
【００６７】
【表２】
2005228359.tif 000004
【００６８】
ＥＸＴ欄においてＸと記される記号は、Ｍ−バス仕様ではなく、ＥＭ−バス仕様において存在する。Ｒ（再定義された）と記される記号は、Ｍ−バスにおいて記載されるが、このＥＭ−バス仕様においては再定義およびエンハンスされる。ＤＭ（脱多重化された）と記される記号は、Ｍ−バスにおけるように、同一の機能定義を有するが、ＥＭ−バスにおけるデータ線と多重化される必要はない。ＤＲＣ欄においてＸとして記される信号はすべて、ＤＲＡＭ制御器チップセットヘの入力を必要とする。ＤＲＣ欄において０と記される記号は、メモリシステムの様々なサブシステムにおいて必要とされ得るオプションである。
【００６９】
トランザクションのアドレスフェーズ中では、Ａ［０：３５］は、トランザクションアドレスを含む。このアドレスは、ＡＳ＊中に有効である。さらに、ＡＰ［０：３］は、トランザクションアドレスの最低の３２ビットのパリティを反映する。パリティは、Ａ［３３：３５］にはサポートされない。これらのパリティビットは、ＡＳ＊のアサーション中にのみ有効でなければならず、従って、最低の４つのデータパリティビットと多重化され得る。パリティの意味（すなわち、奇数／偶数およびイネーブル／ディスエーブル）は、パリティモードビット、ＰＭ［０：２］によって特定される。パリティは、表３に示されるように割当てられる。
【００７０】
【表３】
2005228359.tif 000005
【００７１】
トランザクションのデータフェーズ中では、Ｄ［０：６３］は、トランザクションの最低の６４ビットを含む。個々のバイトイネーブルを特定するサイズビットは、トランザクション属性として特定される。データは、ＤＳ＊のアサーション中にのみ転送される。Ｄ［０：６３］は、アドレスおよびトランザクション信号と多重化され、オリジナルのＭ−バス定義との互換性を維持する。バイト順序規則は、ＴＹＰＥビットによって定義される。
【００７２】
トランザクションのデータフェーズ中では、Ｄ［６４：１２７］は、トランザクションの上部６４データビットを含む。個々のバイトイネーブルを特定するＳＩＺＥビットも、トランザクション属性として特定され、データは、再度、ＤＳ＊のアサーション中にのみ転送される。Ｄ［６４：１２７］ビットがオプションであることに留意すること。バイト順序規則は、ＴＹＰＥビットによって定義される。
【００７３】
トランザクションのデータフェーズ中では、ＤＰ［０：１５］は、データバスのパリティを特定する。パリティの意味（すなわち、奇数／偶数およびイネーブル／ディスエーブル）は、パリティモードビット、ＰＭＤ［０：２］によって特定される。これらのパリティビットは、ＤＳ＊のアサーション中にのみ有効でなければならない。従って、ＤＰ［０：３］は、ＡＰ［０：３］と多重化され得る。ＤＰ［０：１５］は、表４および５によって示されるように割り当てられる。
【００７４】
【表４】
2005228359.tif 000006
【００７５】
【表５】
2005228359.tif 000007
【００７６】
Ｍ−バス仕様は、すべてのトランザクションのアドレスフェーズにおいて、ＭＡＤ［３６：６３］として発生する多数のトランザクション属性を同定する。これに対して、ＥＭ−バス延長は、これらのトランザクション属性信号を分割し、それらをエンハンスメントとして特定する。ＴＹＰＥおよびＳＩＺＥの定義は、ＳＰＡＲＣ以外のプロセッサプロトコルを扱えるように拡張される。Ｓｐａｒｃプロセッサに関しては、ＴＹＰＥおよびＳＩＺＥビットは、Ｍ−バス仕様におけるように、それらの解釈を保持する。ＩｎｔｅｌまたはＭｏｔｏｒｏｌａプロセッサに関しては、これらのビットは、各々のバスインターフェースの特異性を扱えるように再定義される。
【００７７】
ＴＹＰＥおよびＳＩＺＥの解釈は、ＥＭ−バスＩＭＤビットによって特定される。Ｍ−バス信号ＡＤ［０：６３］、ＥＭ−バスＡ［０：３５］およびトランザクション属性の関係は、以下の表６に定義される。
【００７８】
【表６】
2005228359.tif 000008
【００７９】
これらのトランザクション属性はすべて、ＡＳ＊がアドレスフェーズにおいてアサートされる間有効である。
【００８０】
ＴＹＰＥおよびＳＩＺＥの定義はまた、様々なプロセッサバス特性を扱えるように拡張される。これらの拡張された定義は、ＳＰＡＲＣ、ｉ８６０、ｉ４８６およびＭｏｔｏｒｏｌａ  ６８０４０、８８０００シリーズ、およびＭＩＰＳ  Ｒ３０００およびＲ４０００シリーズを含むプロセッサシステムをサポートする。
【００８１】
アドレスフェーズにおいて、ＴＹＰＥ［５：０］は、トランザクションタイプを特定する。ＴＹＰＥビット（ＳＰＡＲＣ  Ｍ−バス互換性または一般インターフェース）の解釈は、表７および８において示されるように、ＩＭＤビットによって決定される。
【００８２】
【表７】
2005228359.tif 000009
【００８３】
【表８】
2005228359.tif 000010
【００８４】
一般モード（ＩＭＤ＝１）のＴＹＰＥ［５：０］の各ビットの機能を、以下に説明する：
ＴＹＰＥ［０］は、読出しおよび書込みを同定する。０のとき、このビットは、トランザクションが読出しであることを示す。１のときには、このビットは、トランザクションが書込みであることを示す。
【００８５】
ＴＹＰＥ［１］は、連続または非連続バーストのようなバーストオーダを同定する。ＴＹＰＥ［１］＝０のとき、バーストオーダは、連続である。ＴＹＰＥ［１］＝１のとき、バーストオーダは、非連続である。幅Ｎバイト（Ｎ＝４，８または１６）のシステムバスであるとすると、ＳＩＺＥ  Ｓ＞Ｎ（ここで、Ｓ＝ｋＮ，ｋ＝２ｉ、ｉは、整数＝＞１、およびＮｋ＜＝１２８バイト）のすべてのトランザクションがバーストを構成する。
【００８６】
ＴＹＰＥ［２］ビットは、二者択一の解釈を有する。ＴＹＰＥ［２］＝０のとき、バイトにおけるトランザクション長さは、ＳＩＺＥ［２：０］の値によって与えられる。ＴＹＰＥ［２］＝１のとき、トランザクション中にイネーブルされるバイトは、それらの各々のサイズビットが低いとアサートさせるときに特定される（例えば、ＳＩＺＥ［Ｎ］＊は、ＢＹＴＥ［Ｎ］がトランザクションに関与することを意味する）。詳細は、ＳＩＺＥ［７：０］の定義を参照のこと。
【００８７】
ＴＹＰＥ［３］は、小エンジアンおよび大エンジアンを特定する。プロセッサは、２つの方法のうちのいずれかで、バス上のＢＹＴＥ  ０の位置を定義し得る。ＢＹＴＥ  ０がバス上の最低バイトとして発生するか（Ｄ［７：０］）−小エンジアン、ＴＹＰＥ［３］＝０）、またはＢＹＴＥ  ０は、バス上の最高バイトとして発生する（大エンジアン−Ｄ［Ｍ：Ｍ−７］、ここで、Ｍ＝ＢＷ−１，ＢＷは、バス幅ビットであり、ＴＹＰＥ［３］＝１）。詳細は、ＳＩＺＥ［７：０］ビットの定義を参照のこと。
【００８８】
ＴＹＰＥ［４］は、書込みポスティングに関連する。ＴＹＰＥ［４］＝１のとき、書込みデータは、書込みｆｉｆｏにポストされ、そこで、次の読出しが完了するまでとどまる。これは、ドラム読出しが完了した後まで、実際のドラム書込みを延期させるために使用され得、それによって、キャッシュ線フィルの速度が増加する。
【００８９】
ＴＹＰＥ［５］は、デフォルトバーストモードを特定する。ＴＹＰＥ［５］＝０のとき、トランザクションサイズは、ＳＩＺＥ［７：０］によって特定される（これは、ＴＹＰＥ［２］によって解釈される）。ＴＹＰＥ［５］＝１のとき、トランザクションサイズは、コマンドレジスタヘプログラムされたデフォルトバーストサイズによって特定される。
【００９０】
ＳＩＺＥ［７：０］は、メモリシステムにデータトランザクションサイズを知らせるために備えられている。アドレスフェーズの間に、ＳＩＺＥ［２：０］は、バストランザクションの間に伝送されるバイト数を指定する。ＳＩＺＥ［７：３］は、バイトイネーブルされ、ミスアラインされたデータ伝送であって、ｉ４８６および６８０４０プロセッサと互換性のあるデータ伝送を与えるためにオリジナルのＭバス仕様に追加された。ＳＩＺＥの解釈は表９〜１３に示すように、ＴＹＰＥ［２］によって決定される。
【００９１】
【表９】
2005228359.tif 000011
【００９２】
【表１０】
2005228359.tif 000012
【００９３】
バイトイネーブルとなったバイトのいかなる組み合せも同時にアサートされ得る。通常、プロセッサではバイトイネーブル信号が連続的（ｃｏｎｔｉｎｇｕｏｕｓ）であることを必要とする。無効な組み合せと有効な組み合せとを区別するチェックは行われない。
【００９４】
【表１１】
2005228359.tif 000013
【００９５】
【表１２】
2005228359.tif 000014
【００９６】
【表１３】
2005228359.tif 000015
【００９７】
ＩＤ［３：０］。ＩＤビット識別は２つの解釈を有している。ＩＭＤ＝０の時、表１４に示すように、ＩＤ解釈は厳密にＭ−バス互換性がある。そこで、ＩＤフィールドは、ポートレジスタまたはその他のＩ／０レジスタにアクセスするための、Ｍ−バスアドレス空間の範囲内で様々な構成空間を選択する。非Ｍ−バス適応で用いられた場合（ＩＭＤ＝１）には、ＩＤビットはアドレス信号と共に用いられ、バストランザクションの特性を規定し、Ｉ／０レジスタまたはｄｒａｍメモリを選択する。規定された一般的（非Ｍ−バス）動作を行うには、ＩＤ［３：０］と、表１５に示した固定値とは適合していなければならない。
【００９８】
【表１４】
2005228359.tif 000016
【００９９】
【表１５】
2005228359.tif 000017
【０１００】
パリティモードビットＰＭＤ［０：２］は、パリティ計算操作アルゴリズムを指定し、パリティ計算操作に関連する信号を識別する。これらは、全システムバスサイクルの間有効である。これらのビットは表１６に示すように規定される。
【０１０１】
【表１６】
2005228359.tif 000018
【０１０２】
ＤＳ＊は、トランザクションのデータフェーズの間にバスマスターによってアサートざれる。データは伝送され、ＤＳ＊がアサセートされる各サイクルの間ＢＡＣＫ［０：２］＊は有効であるマスターは、ＤＳ＊を用いて、サイクル毎を基準としてスレーブの応答を制御（減速）させ得る。Ｍ−バスはＤＳ＊信号を有していないことに注意されたい。
【０１０３】
デフォルトのバースト長は、各トランザクションのアドレスフェーズの間にＳＩＺＥ［０：３］によって指定される。ＢＬＳＴ＊はバスマスターによって用いられて、デフォルトのバースト長が切り離され得、アサートされるサイクルの間にバストランザクションを早期に終了させる。ＢＬＳＴ＊は、ＤＳ＊もアサートされているサイクルの間識別されるだけである。
【０１０４】
ＤＲＰＡ＊は、バスマスターによって提供され、次のメインメモリアクセスが、前回のアクセスと同じＤＲＡＭのページで起こるということを示している。メインメモリサブシステムは、この信号を用いて、ＤＲＡＭアレイヘの不要なＲＡＳプリチャージを抑制し得る。この信号は、１つのプロセッサシステムの中でのみ用いられる。
【０１０５】
ＢＡＣＫ［０：２］＊は、Ｍ−バスのＭＲＤＹ＊、ＭＲＴＹ＊およびＭＥＲＲ＊と同一である。以下の表１７および１８にその機能をまとめる。
【０１０６】
【表１７】
2005228359.tif 000019
【０１０７】
【表１８】
2005228359.tif 000020
【０１０８】
３．ＤＲＡＣ構造
本発明による構造を有する、ＤＲＡＭコントロールデバイス（ＤＲＡＣ）５０の実施態様を図３に示す。すべてのバストランザクションは、データフェーズの後にアドレス／コントロールフェーズに分割されることを想起されたい。ＡＳ＊によって指定されるアドレス／コントロールフェーズの間、コントロール信号は、システムバスを越えてコントロール入力バッファ５２を介してＤＲＡＣ５０内に伝送され、パイプラインレジスタ５３に記憶される。さらに、アドレス信号ＡＤ［３５：０］およびアドレスパリティ信号ＡＤＰ［３：０］は、システムバスからアドレスおよびアドレスパリティ入力バッファ９１を介してＤＲＡＣ５０内に伝送され、パイプラインレジスタ９２内に同時にクロックされる。
【０１０９】
また、アドレス／コントロールフェーズの間、アドレス信号ＡＤ［３５：０］はトランザクションアドレスを有する。このアドレスは、ＡＳ＊のアサーションの間有効なままである。アドレスがＤＲＡＣ５０に入力された後、アドレスパリティは、アドレスパリティチェック回路９５によってチェックされる。１パリティビットは、アドレス信号のバイト毎に計算され、アドレスパリティ信号ＡＤＰ［３：０］のアドレスパリティ４ビットに対してチェックされる。ＡＤＰ［３：０］は、トランザクションアドレスの最も低い３２ビットのパリティを反映している。アドレスパリティは、任意に、データパリティと多重送信され得る。アドレスパリティは、ＡＤ［３５：０］のビット［３５：３３］にはサポートされていない。パリティのセンス（つまり、偶数／奇数およびイネーブル／ディスエーブル）はＰＭＤにより指定される。パリティ計算の特性はＰＭＤにより各バスサイクルごとに指定される。
【０１１０】
アドレスパリティ誤差が起こると、トランザクションは終了し、バスエラー信号ＢＥＲＲがアサートされる。アドレスバスパリティエラービットは、ＤＲＡＣ５０の状態レジスタ７６で設定される。ＢＥＲＲは、トランザクションのデータフェーズの間のバスパリティエラー状態を示す。この信号は、同期して（つまり、１クロックまたはそれ以上遅れて）アサートされ、エラーが起こった１クロック後に有効になり、クリアされるまで続く。信号はＤＲＡＣ５０のコマンドレジスタ７３に適切なビットを書き込むことによってクリアされる。
【０１１１】
システムバスからのすべての同期入力は、クロックの立ち上がり開始時に有効になると考えられる。同期制御入力のいくつかは、バスサイクルのアドレスフェーズの間にＡＳ＊のアサーションによって有効になる。これら後者の制御入力には、バスタイプを識別するための信号ＩＭＤ、データトランザクションタイプを指定するための信号ＴＹＰＥ、データトランザクションサイズを指定するための信号ＳＩＺＥが含まれる。
【０１１２】
本発明によると、ＤＲＡＣ５０のアドレス経路および制御経路は、それぞれ分割され、キャッシュパージ動作がサポートされ得る。アドレス経路には、読み出しトランザクションのための読み出しアドレス経路（すべての標準Ｍ−バス読み出しトランザクションを含む）、および書込みアドレス経路が含まれる。さらに、書込みアドレス経路には、２つの連続した書込みトランザクションアドレスのうち、第一のアドレスのための第一経路、および、２つの連続した書込みトランザクションのうち、第一書込みトランザクションに続く、第二のアドレスのための第二経路が含まれる。書込みアドレスレジスタ１１２は、第二経路に備えられ、第二アドレス信号を保持する。プロセッサは、通常、アドレスが確認されるまでデータトランザクションアドレスを保持する機構は有していない、ということに言及しておこう。本発明のＤＲＡＣ５０の構成によって、より効率的なデータトランザクションが可能になる。制御経路には、通常および反射読み出し制御信号のための読み出し制御信号経路、および書込み制御信号経路が含まれる。書込み制御信号経路は、また、２つの連続した書込み制御信号のうち第一の信号のための第一経路、および２つの連続した書込み制御信号のうち、第一書込みトランザクションの直後に続く第二トランザクションに伴った第二の信号のための第二経路を含む。書込み制御レジスタ６２は、第二経路に備えられ、第二制御信号を保持する。
【０１１３】
マルチプレクサ６３および１１３は、それぞれ、通常書込みおよびポストされた書込みアドレス／制御信号からの書込みアドレス／制御信号を選択するのに用いられる。選択された書込み制御信号および書込みアドレス信号は、それぞれ、書込み制御レジスタ６５および書込みバーストカウンタ１１４に伝送される。読み出し制御信号および読み出しアドレス信号は、それぞれ、読み出し制御レジスタ６４および読み出しバーストカウンタ１１６に記憶される。書込みおよび読み出し制御レジスタ６４および６５の内容は、リフレッシュ制御回路８５からリフレッシュ制御信号と共に、制御ソースマルチプレクサ６８によって選択される。制御ソースマルチプレクサ６８から選択された信号は、状態およびタイミング制御ロジック７２に伝送される。読み出しおよび書込みアドレスバーストカウンタ１１４および１１６の最上部からのアドレスは、アドレスソースマルチプレクサ１２１によって、リフレッシュ回路８５のリフレッシュアドレスカウンタからのアドレスと共に多重伝送される。ＤＲＡＭ動作のためのアドレスは、これら３つのソースのうちの１つから起こる。特定のソースは、状態およびタイミング制御ロジック７２によって決定される。書込みアドレスバーストカウンタ１１４は、書込みの間と、（１ワード以下のバイトの書込みである）読み出し改変書込みの間と、抑止ＤＲＡＭ書込みの間と、通常書込みから所有権サイクルの読み出しへの転換が可能となるポストされた書込みの間とにアドレスを供給する。読み出しアドレスバーストカウンタ１１６は、通常読み出しの間と、反射読み出しの間とにアドレスを供給する。後者は、メインメモリヘの読み出しデータの同期書込みを伴う、通常読み出しからコヒーレント読み出しへの変換である。
【０１１４】
読み出しが行われ、ポストされた書込み信号がその前の書込み動作にアサートされると、アドレスパイプラインレジスタ９２の内容は、コンパレータ１０８によって、書込みアドレスレジスタ１１２のポストされた書込みアドレスと比較される。２つのアドレスが合致すると、ポストされた書込みが読み出し動作を進める。それ以外の場合には、読み出しが終了した後に起こるポストされた書込みと共に即座に入力読み出しが起こる。アドレスバスの最も低い７ビットは、比較から除外される。従って、ポストされた書込みのバーストアドレススパンは、読み出しのバーストアドレススパンと重複する（あるいはこれを含む、あるいはこれに含まれる）一方、ＤＲＡＭ５０とのコヒーレントは維持している。
【０１１５】
アドレスマルチプレクサ１２１の出力は、行／列プリマルチプレクサおよび行／列アドレスマルチプレクサを有する、行／列マルチプレクサ１２５内に流入する。行／列プリマルチプレクサにおいて、アドレス信号は、アドレスブロックコンーパレータ１０５によって選択されるＤＲＡＭ構造の内の、アクセスされたブロックにおけるＤＲＡＭチップのサイズに応じて、行アドレスと列アドレスに分割される。そして、分割されたアドレスは、ＲＡＳ／ＣＡＳ発生回路８７の制御の下で、ＤＲＡＭの実際のアドレスを発生する行／列アドレスマルチプレクサ１２５内に流入する。
【０１１６】
書込みおよび読み出しアドレスカウンタ１１４および１１６は、それぞれ２つの重複する部分に分割される。各カウンタの下部はシステムバスヘのバーストを制御する。各カウンタの上部はメインメモリヘのバーストを制御する。さらに、各カウンタの下部は、アドレスビット２および３で重複し、ＤＲＡＣ５０によって選択されたメモリ内のバンクまたは複数のバンクを指定するＤＳＲＤにおけるチャンネルを識別するのにこれらのビットが用いられる。カウンタのアドレス出力の解釈は、３２−、６４−または１２８−ビットなどのシステムバスのサイズと、３２−または６４−ビットなどのＤＳＲＤにおけるＥＤＣの幅と、データトランザクションサイズ情報とに依存している。
【０１１７】
バーストタイプトランザクションは以下のように規定される。Ｎバイト（Ｎ＝４、８または１６）の幅のシステムバスを仮定すると、ＳＩＺＥ  Ｓ＞Ｎのトランザクションであればいずれでもバーストを構成する（ここで、Ｓ＝ｋＮ、ｋ＝２ｉ、ｉは整数＝＞１、かつＮｋ＜＝１２８バイト）。アドレスの最も低いｌｏｇ２Ｎビットである、Ａ［ｌｏｇ２Ｎ−１］：０］のバーストの間、バスは０（アラインメント制約）に固定される。次のｌｏｇ２ｋビットである、Ａ［（ｌｏｇ２ｋ＋ｌｏｇ２Ｎ−１）：（ｌｏｇ２Ｎ）］は、トランザクションのバーストカウンタを形成する。ＴＹＰＥビットが、バーストのオーダーが連続であると示している時には、このｌｏｇ２ｋビットのアドレスを連続的に増加することによって、連続したアドレスが発生される。すべてのｌｏｇ２ｋビットが１であるアドレスに到達した後、カウンタはラップアラウンドして０になる。この場合、すべてのｌｏｇ２ｋビットが低い。ハイオーダーのアドレスＡ［３５：ｌｏｇ２ｋ＋ｌｏｇ２Ｎ］は固定されたままである。
【０１１８】
ＴＹＰＥ［１］＝１の場合、バーストカウンタは、Ｉｎｔｅｌプロセッサの非連続特性に従って増加する。最も低いｌｏｇ２Ｎビットは再び０（アラインメント制約）に固定される。次のｌｏｇ２ｋビットである、Ａ［（ｌｏｇ２ｋ＋ｌｏｇ２Ｎ−１）：（ｌｏｇ２Ｎ）］が、トランザクションのバーストカウンタを形成する。これらのビットは、以下のように増加する。
【０１１９】
Ａｎ＋２        Ａｎ＋１        Ａｎ
Ａｎ＋２        Ａｎ＋１        Ａｎ＊
Ａｎ＋２        Ａｎ＋１＊       Ａｎ
Ａｎ＋２        Ａｎ＋１＊       Ａｎ＊
Ａｎ＋２＊       Ａｎ＋１        Ａｎ
Ａｎ＋２＊       Ａｎ＋１        Ａｎ＊
Ａｎ＋２＊       Ａｎ＋１＊       Ａｎ
Ａｎ＋２＊       Ａｎ＋１＊       Ａｎ＊
本発明によるＥＭバスの実施態様において、ＴＹＰＥ［１］はバーストのオーダー、つまり、連続または非連続を表わす。
【０１２０】
システムバーストが起こると、プログラムされたアドレスでデータ伝送が始まる。通常の動作の間に、システムバスバーストカウンタを、バースト長を法として増加することによって、連続したアドレスが発生される。カウンタのアドレスは、一定のプログラムされたバースト長の最高値に達するとラップアラウンドする。バーストは、プログラムされたバースト長の後に終了し、または、ＢＬＳＴのアサーションと共に早期に終了し得る。バーストアドレスは、常に連続的に増加するわけではない。
【０１２１】
Ｉｎｔｅｌ４８６プロセッサには、アドレスのための特定のバーストオーダーが必要である。このオーダーは、Ｉｎｔｅｌバーストモードを指定することによってサポートされる。Ｉｎｔｅｌの非連続オーダーを用いたバーストの間でさえ、カウンタは、バースト長によって指定されるアドレス境界の外側には増加しない。システムバースト読み出しおよび書込み伝送が、Ｎビットのバス幅（Ｎ＝３２、６４、または１２８）を用いるシステムのためにＮビットが配置された境界上で起こる。
【０１２２】
ＤＲＡＣ５０に、反射読み出しトランザクションおよびコヒーラント読み出しトランザクションを可能にする、出力読み出し要求を中止するよう指示するために、抑止ラインが提供されている。この信号は、マルチ処理環境におけるキャッシュブロックの所有者によってアサートされ、それによって、メインメモリアクセスが抑止されている間に、要求キャッシュにデータを供給し得る。この入力は、マルチ処理環境において用いられ、抑止ＤＲＡＭ読み出し動作を書込み動作に変換し、反射メモリを増加させる。スヌーピングキャッシュが、データの有効コピーを所有していると判断すると、バスを越えてデータを要求キャッシュに供給する。同時に、メインメモリが更新される。
【０１２３】
プロセッサがマルチ処理環境にデータを書き込もうとすると、そのローカルキャッシュが、問題のデータラインの状況（キャッシュ可能か、書込み中、ヒットまたはミス）を判断せねばならない。キャッシュ可能なラインに書込み動作が起こった場合には、前もって同一のラインに改変され、有効なコピーのみを有する第二のスヌーピングキャッシュにヒットが起こり得る。ＤＲＡＭコントローラは、スヌーピングキャッシュが要求キャッシュにデータを供給する時には、出力書込み動作を抑止する。データの有効コピーがスヌーピングキャッシュに存在しない場合には、ＤＲＡＭへの書込み動作は抑止され、同じアドレスでの読み出し動作に変換され得る。
【０１２４】
読み出しまたは書込み動作の間、スヌープウインドウがＣＡＳがアサートされるまで伸びる。これらの時間間隔は、その他の全てのＤＲＡＭタイミングと共にプログラム可能である。あるいは、システムバスのその他のすべてのデバイスがスヌープサイクルを終了するまでウインドウを伸ばすために、外部入力が提供されている。
【０１２５】
メモリリフレッシュ要求は、メインメモリを有するメモリチップの密度と構造に応じて変化する。しかし、行は同一の時間間隔でリフレッシュされなければならない（この場合、読み出し動作の後に消去が行われる）。一定のブロックのすべてのバンクが、特定のアドレスで同時に消去される。
【０１２６】
状態およびタイミング制御ロジック７２は、データ伝送受信デバイス（ＤＳＲＤ）へのバストランザクションタイプ識別信号（ＦＥＴ）を発生するバス状態回路と、ＤＲＳＤへのメモリサイクル識別信号（ＦＥＤＲＴ）を発生するメモリ状態回路とを有している。
【０１２７】
本発明によると、タイミング制御ロジック７２は、システムセットアップ、および異なるシステム要求をサポートするための状態情報をプログラムするのに用いられる、いくつかのプログラム可能レジスタを有する。これらのプログラム可能レジスタがよりよく理解できるよう、以下の表を提供する。この表において、最初の欄はビット数を示す。第二の欄はビットの名称を示す。第三の欄はシステムリセットがアサートされた後にビットに指定された数値を示す。第四の欄は、レジスタバイトのアドレスの、最低の４ニブルを示す。最高アドレスは、ＩＭＤによって指定されるインターフェースモードに依存する。表に挙げたすべての数値は、２進法または１６進法（ｈ）で示されている。全ての信号はアクティブハイである。
【０１２８】
各レジスタ（Ｍ−バス指定ポートレジスタを除く）は、アドレス空間において１６バイトの間隔で配され、システムバスの幅に関わらず、その内容は、データバスの最低の８ビットにアクセスできるようになっている。
【０１２９】
プログラム可能（読み出しおよび書込み）コマンドレジスタ７３は、たとえば、それぞれ表１９から２２に規定する４バイトを有している。
【０１３０】
【表１９】
2005228359.tif 000021
【０１３１】
ＲＦＤ［６：０］は、リフレッシュカウンタ除数である。これらのビットはＣＬＫを１Ｍｈｚまで除算する。
ＣＩＥは、コヒーラント無効化確認イネーブルである。このビットがハイに設定されると、Ｍ−バスはコヒーラント無効化サイクルにイネーブルされる。タイプビットがこのサイクルを指定するアドレスフェーズの２クロック後に、ＢＡＣＫが発生される。異なる確認遅延を必要とするシステムでは、ＣＩＥ＝０の設定をし、確認を行うのに外部ＰＬＤを用いなければならない。
【０１３２】
【表２０】
2005228359.tif 000022
【０１３３】
ＩＥは、システムバスヘの割り込みをイネーブルにする。
ＢＬＫ［１：０］は、２進法でブロックの数を規定する。２進法の数値は、ブロックの数よりも少ないものであり、たとえば、０（ｈ）＝１ブロック、３（ｈ）＝４ブロックである。
ＥＳは、各ＥＤＣパケットにおけるデータビット数、またはＥＤＣサイズを指定する。０は３２ビットを指定し、一方、１は６４ビットを指定する。
ＳＢＳは、システムバスにおけるデータビットの数、あるいはシステムバスサイズを指定する。
００は、３２ビットを指定し、一方０１は６４ビットを指定する。同様に、１０は１２８ビットを指定する。
ＩＮＩＴは、ＤＲＡＭメモリおよびそのチェックビットの初期化を開始させる。
【０１３４】
【表２１】
2005228359.tif 000023
【０１３５】
ＤＦＢ［１：０］は、キャッシュライン読み出し／書込みのデフォルトのバースト長を示す。これらのビットは、入力ＳＩＺＥビットと同様の方法で規定される。適切なＴＹＰＥビットが、トランザクションのアドレスフェーズの間にアサートされると、バスは、このデフォルト長でバーストトランザクションを行う。これらは以下のように解釈される。
ＤＦＢ［１：０］      デフォルトのバースト長
００                  １６バイト
０１                  ３２バイト
１０                  ６４バイト
１１                  １２８バイト
ＰＬＬ［１：０］は、入力バスクロック（ＣＬＫ）からＭＣＬＫへの乗算因子をプログラムする。ＰＬＬビットは以下のように規定される。
ＰＬＬ［１：０］ＭＣＬＫ
００                  使用せず
０１                  Ｘ２（４０または５０ＭＨｚバスクロック）
１０                  Ｘ３（３３ＭＨｚバスクロック）
１１                  Ｘ４（２５ＭＨｚバスクロック）
多重周波数クロック入力がバス周波数多重回路により供給され、それにより、システムバスクロック周波数に関わらずメモリ回路が１０ｎｓ（但し、４０ＭＨｚのバスに対しては１２．５ｎｓ）に設定される。この結果は、プログラム可能タイミングレジスタ７４により達成される。バス周波数多重回路は、好適にはメモリ制御チップ（図示しない）の内部に組み込まれる、フェーズロックループ（ＰＬＬ）回路であり得る。この配置において、メモリタイミングは、外部的にではなく、内部的に制御される。
【０１３６】
【表２２】
2005228359.tif 000024
【０１３７】
ＥＴＭＥは、ＤＳＲＤ内のエラーログＦＩＦＯがフルであることを示す割込みをイネーブルとする。
【０１３８】
ＥＲＭＷは、読出し−修正−書込みサイクルにおいて多重エラーが起こったことを示す割込みをイネーブルとする。
【０１３９】
ＥＭＥＷは、単一のワード内における２以上のエラーを示す割込みをイネーブルとする。
【０１４０】
ＥＳＥＷは、単一のワード内において単一の修正司能なエラーが起こったことを示す割込みをイネーブルとする。
【０１４１】
ＥＡＢＰは、アドレスタイプのうちの１つがパリティエラーを有することを示す割込みをイネーブルとする。
【０１４２】
ＥＤＢＰは、データバイトのうちの１つがパリティエラーを有することを示す割込みをイネーブルとする。
【０１４３】
ＥＤＣは、データパスにおける単一のビットエラーの修正をイネーブルとする。
【０１４４】
ＣＢＥＲＲは、システムバス上のＢＥＲＲをアサートする条件をクリアにする。
【０１４５】
プログラム可能（読出しおよび書込み）ＤＲＡＭタイミングレジスタ７４は、例えば、エンハンスされたタイミング分解におけるＤＲＡＭ作動のために様々な制御信号を記憶する、８つのバイトを含む。これらのタイミング信号を、表２３および２４に定義する。
【０１４６】
【表２３】
2005228359.tif 000025
【０１４７】
【表２４】
2005228359.tif 000026
【０１４８】
全てのタイミング値は、４ピット値に設定されている。時間間隔は、ＭＣＬＫが１００  Ｍｈｚ（４０ＭＨｚのバスクロックに対しては１２．５ｎｓ）で作動している場合、正確に１０ｎｓと指定されている。全てのタイミングは、ｔＰの１／ｎに分解され得、その場合、ｎはＰＬＬ多重器である（例えば、ｔＰ＝２０ｎｓの場合に２のＰＬＬ多重器を有する５０ＭＨｚのシステムは、１０ｎｓと指定されたＤＲＡＭタイミング分解を有し得る）。したがって、タイミング値が制約されない限り、ＤＲＡＭ読出しデータは、バスクロックの２０ｎｓの境界よりも、１０ｎｓの境界上のＤＳＲＤに到達し得る。
【０１４９】
以下に、利用可能なプログラム可能時間間隔を定義する。
【０１５０】
ｔＡＲは、アドレス信号の開始とＲＡＳアサーションとの間の時間間隔をプログラムする。
【０１５１】
ｔＲＡＭは、ＲＡＳの開始と多重化されたアドレスとの間の時間間隔をプログラムする。
【０１５２】
ｔＭＡＣは、多重化されたアドレスとＣＡＳアサーションとの間の時間間隔をプログラムする。
【０１５３】
ｔＣＰＷは、ＣＡＳパルス幅をプログラムする。
【０１５４】
ｔＲＰＲは、ＲＡＳプリチャージ幅をプログラムする。
【０１５５】
ｔＣＰは、ＣＡＳプリチャージ幅をプログラムする。
【０１５６】
ｔＤＣは、ＣＡＳアサ−ションに対するＦＩＦＯデータ遅延をプログラムする。
【０１５７】
ｔＲＩＮは、非反射抑止中のＲＡＳ完了をプログラムする。
【０１５８】
ｔＥＮＲは、読出し上のＦＥＳＴＲＢのイネーブル遅延をプログラムする。
【０１５９】
ｔＡＣＣは、ＤＲＡＭアクセス時間（ＤＲＡＭチップによって決定される）をプログラムする。  
【０１６０】
ｔＣＬＺは、出力ＬＯＷ  ＺへのＤＲＡＭ  ＣＡＳ（ＤＲＡＭチップによって決定される）をプログラムする。
【０１６１】
ｔＰは、バスＣＬＫ期間をプログラムする。
【０１６２】
本発明のＤＲＡＣ  ５０はまた、プログラム可能（読出しおよび書込み）ブロック配置レジスタ１０２を備え、レジスタ１０２は、例えば、全体のメモリマップ内のＤＲＡＭのブロックの位置、および、ＤＲＡＭの各ブロックのポピュレーションコードまたはサイズを記憶する、８つのバイトを含む。ブロック配置レジスタ１０２の配置を表２５に示す。
【０１６３】
【表２５】
2005228359.tif 000027
【０１６４】
ＢＡ（Ｎ）[３５：２２]は、全体のメモリマップにおけるメモリのブロックＮの位置を指定する、ブロックＮ位置（０  ＜  ＝  Ｎ  ＜  ＝  ３）を示す。ブロックＮは、入力されてくるアドレスビットＡ[３５：２２]がＢＡ（Ｎ）[３５：２２]ビットに一致した時に選択される。ＢＡ（Ｎ）フィールド内のいかなるビットもマスクされ得、したがって、比較においては考慮されない。比較は、コマンドレジスタ内において初期のビットが設定されるまで、開始されない。
【０１６５】
Ｐ（Ｎ）[１：０]は、ブロックＮの全バンクにインストールされたＤＲＡＭチップのサイズを指定する、ポピュレーションコード（０  ＜  ＝  Ｎ  ＜  ＝  ３）を示す。ポピュレーションコードは以下のように定義される。
【０１６６】
００  深さ２５６Ｋ（すなわち、２５６Ｋ ｘ １または２５６Ｋ x ４）
０１  深さ１Ｍ（すなわち、１Ｍ ｘ １または１Ｍ ｘ ４）
１０  深さ４Ｍ（すなわち、４Ｍ ｘ １または４Ｍ ｘ ４）
１１  深さ１６Ｍ（すなわち、１６Ｍ ｘ １）
プログラム可能（読出しおよび書込み）ブロックマスクレジスタ１０４は、８つのバイトを有するブロック配置レジスタ１０２と連動する。ブロックマスクレジスタ１０４は、例えば、ブロック配置レジスタ１０２内の特定のビット（単数または複数）をマスクするために使用される。レジスタ１０２内のマスクされたビットは、メモリマップアドレスの比較において考慮されない。レジスタ１０４の配置を表２６に示す。
【０１６７】
【表２６】
2005228359.tif 000028
【０１６８】
ＢＭ（Ｎ）[３５：２２]は、メモリマップアドレスの比較中にブロック配置レジスタ内の特定のビットが考慮されるか否かを示す、ブロックＮマスク（０  ＜
＝  Ｎ  ＜  ＝  ３）を意味する。マスクの定義を要約すると以下のようになる。
ＢＭ（Ｎ）[Ｘ]  ＝  O：ＢＡ（Ｎ）[３５：２２]に対してＡＤ[３５：２２]を比較する場合、ビットXを無視する。
ＢＭ（Ｎ）[Ｘ]＝１：ＢＡ（Ｎ）[３５：２２]に対してＡＤ[３５：２２]を比較する場合、ビットＸを含む。
【０１６９】
アドレスブロック比較器１０５は、パイプラインレジスタ９２とブロック配置レジスタ１０２とに連結されることにより、入力さてくるシステムバスアドレスと、配置レジスタ１０２内に記憶されている４つのブロックの位置とを比較する。一致が起こると、入力されてくるアドレスは書込みアドレスレジスタ１１２（ＤＳＲＤ内の書込みＦＩＦＯが前回の転送から、またはポストされた書込み中に占有されている場合にアドレスを保持する）、または、ステータス制御下の読出しまたは書込みバーストアドレスカウンタ１１４および１１６とタイミング制御ロジック７２とに転送される。
【０１７０】
本発明によると、ＤＲＡＣ  ５０はまた、ＤＳＲＤからのステータス情報を記憶する、ステータスレジスタ７６を備える。例えばこの情報は、書込みおよび読出しＦＩＦＯのステータス、および、作動中に起こったエラーのステータスを含む。ステータスレジスタ７６は、ステータスおよびタイミング制御ロジック７２が適切なチャネルを選択し、且つ、効果的な様式でシステムの割込みを設定することを可能にする。
【０１７１】
ＤＲＡＣ  ５０は更に、２以上の読出し専用エラーログＦＩＦＯを含み得、且つ、ビットレジスタ（ＦＥＤＣ内部の）をチェックし得る。ビットレジスタは各々、ＥＤＣシンドロームビットをエラー条件に反映させるシンドロームビット、シンドロームＦＩＦＯエンプティフラグビット、および、前回の読出し作動中に存在したＥＤＣチェックビットを反映するチェックビットを各々記憶する、４つのバイトを有し得る。
【０１７２】
ＤＲＡＣ  ５０はまた、Ｍパスポートレジスタ（図示しない）を備え得、それにより、Ｍバス互換性素子のためのベンダコード、Ｍバス互換性素子のための訂正レベル、およびこのポートにおいて存在するベンダ特異性Ｍバス素子を指定する素子の番号を記憶する。ＤＲＡＣ  ５０は更に、ＤＲＡＣ  ５０内部の他のレジスタのアドレスを記憶する間接アドレスレジスタ、および最新のエラーのアドレスを記憶するエラー位置レジスタを備え得る。
【０１７３】
初期電力投入後、ＤＲＡＣ  ５０をリセットまたは初期化するために、非対称入力ＲＳＴＩＮが使用される。ＲＳＴＩＮ信号は、少なくとも４つのクロックサイクルに対してアサートされる。ＲＳＴＩＮがアサートされた後、コマンドレジスタ７３およびステータスレジスタ７６内の全ビットが所定の値に初期化される。ＲＳＴＩＮがディアサートされた後、ホストプログラムが、レジスタ７３にシステムの正しい値を付与し、且つ、初期化ビット（ＩＮＩＴ）を設定する。ＲＳＴＩＮは、ＤＲＡＣ  ５０およびＤＳＲＤ内でＣＬＫに同期される。メモリ制御器は、全ＲＲＡＭをクリアすること、およびＤＳＲＤ内のＥＤＣビットを適切に初期化することにより、応答する。
【０１７４】
非多重化システムバスは、アドレスラインのみによってＤＲＡＣ  ５０にインターフェースする。ＤＲＡＣ  ５０内部の制御およびステータスレジスタは、システムのデータバスを介してアクセス可能でなければならない。ＤＲＡＣ  ５０の制御レジスタのプログラミングおよびステータスの読出しを容易にするために、ＦＥＤＣとＤＲＡＣ  ５０との間に更に８ビットのデータバスが供給される。全てのＩ／Ｏトランザクションは、バイト幅に基づき、ＦＥＤＣを介してＤＲＡＣ  ５０に送信される。
【０１７５】
以下の３つの信号は、システムバスを制御するために用いられ、それにより、反射メモリの作動が完了しつつある間にＦＩＦＯのオーバーフローを防止する。ＤＲＡＭ制御器は、反射メモリシステム内に抑止を受信してから１クロックサイクル後に、ＢＲをアサートすることにより、バスを要求する。システムのアービトレーションロジックはＢＧをアサートし、それにより、主要メモリ制御器へのバスの使用を認める。主要メモリ制御器は、ＢＢにより応答し、それにより、電流バスマスタがＢＢに対する保持を開放するとすぐにバスビジー状態を示す。Ｍバス反射メモリシステム内において、ＢＲはアービトレーションロジックにより最高の優先順位を与えられる。
【０１７６】
他の選択可能プロトコルを用いることにより、他のシステムが反射メモリをインプリメントし得る。現在の作動が実行されている間に、多くのメモリが次のシステムバス作動をアービトレーションする（重複アービトレーション）。ＤＲＡＭ制御器がＢＲにより応答する時間を与えるために、反射メモリシステムは、抑止が起こってから１クロック後まで、重複アービトレーションサイクルを開始してはならない。
【０１７７】
ＤＲＡＣ  ５０は、プログラム可能レジスタおよび他の関連するレジスタ内の情報、システムバスからの情報、そしてＤＳＲＤのステータス情報を使用することにより、その内部回路およびＤＳＲＤに様々な制御信号を供給する。このことは、ＤＲＡＣ  ５０が、特定のシステムバスおよびプロセッサバスの効率的なサポート、および異なるデータトランザクションの要求に対するサポートを提供することを可能にする。ＤＳＲＤへの制御信号およびＤＳＲＤからのステータス応答は、ＤＳＲＤインターフェースおよびＩ／Ｏバッファ回路１２８を介して送信される。これらの信号について以下に述べる。
【０１７８】
ＤＲＡＭ制御信号は、ＲＡＳ[３：０]、ＣＡＳ[３：０]、およびＷＲ[３：０]を含む。ＲＡＳ[Ｎ]およびＣＡＳ[Ｎ]は、外部的にバッファされ、ブロック[Ｎ]に含まれる全てのＤＲＡＭメモリバンクに接続されている。書込みイネーブルラインＷＲ[Ｍ]の各々は、外部的にバッファされ、全ての占有されたブロック内のバンク[Ｍ]に接続されている。
【０１７９】
採用されている特定の制御アーキテクチャは、ビット幅に基づいて構成されたＤＲＡＭおよびニブル幅に基づいて構成されたＤＲＡＭを同一の様式で処理する。ビット幅ＤＲＡＭが用いられる場合、データ入力およびデータ出力ピンは互いに接続されている。ニブル幅ＤＲＡＭが用いられる場合、そのＯＥピンは常にアースされている（イネーブルされている）。その後、両タイプのＤＲＡＭとも、初期書込みサイクルモードを用いて書き込まれる。このモードは、ＣＡＳのアサーションの前に、そのＲ／Ｗラインが適切なレベルにセットされていることを必要とする。
【０１８０】
アドレスに関するＲＡＳおよびＣＡＳ信号の発生、およびそれらのパルス幅（プリチャージ幅を含む）は、ＤＲＡＭタイミング制御レジスタ内に適切なビットをセットすることにより、プログラムされ得る。ＭＣＬＫが１００Ｍｈｚで作動している場合、これらの値は、１０ｎｓの分解にプログラムされ得る。
【０１８１】
ＲＡＳ／ＣＡＳ信号およびＤＲＡＣのアドレス信号は各々、ＲＡＳ／ＣＡＳ駆動器およびアドレス駆動器に送られる。ＲＡＳ[３：０]およびＣＡＳ[３：０]は、ＲＡＳ／ＣＡＳ発生回路８７によって生成され、全てのブロックに対するメモリのＲＡＳおよびＣＡＳタイミングパルスを含む。ＲＡＳ[Ｎ]およびＣＡＳ[Ｎ]は、ブロックＮ内の全てのバンクに接続されている。アドレス信号は、メモリの１６Ｍビットにスパンし得るメモリのために、１２ビット多重化行／列アドレスに形成され得る。
【０１８２】
４．ＦＥＤＣユニット構成
本発明によると、メモリ制御器のデータ送信および受信素子（ＤＳＲＤ）は、好適には、複数のデータチャネルを有し、その各々が、ＦＩＦＯ／エラー検出および修正回路（ＦＥＤＣ３０）である。
【０１８３】
図４は、本発明による構成を有する、メモリ制御器の一部であるＦＥＤＣユニット３０の実施態様を示す。ＦＥＤＣユニット３０は、２群のＦＩＦＯ／エラー検出および修正ロジックアレイ（ＦＥＤＣ）を含み、それにより、２つの３２ビットデータチャネルを供給する。これらユニットのうちの２つは、３２ビットまたは６４ビットのシステムバスを効率的にサポートし得る。ＦＥＤＣ  ３０は、読出しおよび書込みデータパスを供給する。本実施態様において、ＦＥＤＣ  ３０は、システムバスにインターフェースする３２ビットのデータバスおよび６４ビットのデータバスを有し、６４ビットのデータバスは更に、ＤＲＡＭにインターフェースする２つの完全な３２ビットデータパスに分割される。ＤＲＡＭ側の３２ビットのデータバスは各々、７つのエラーチェックビットに連動する。本発明によると、３２、６４、および１２８ビットのシステムバスを効率的にサポートするために、４つのＦＥＤＣユニット３０が接続され得る。
【０１８４】
ＦＥＤＣユニット３０は、制御バッファ１７５および出力バッファ１６２を介してＤＲＡＣ５０に連結され、それにより、ＤＲＡＣ  ５０からの制御信号を受信し、ステータス信号をＤＲＡＣ  ５０に送信する。ＦＥＤユニット３０はまた、入力および出力バッファアレイ１３０、１６２、１６８、１６９、１７０、１７２、および１７４を介してシステムバスとＤＲＡＭメモリとの間に連結され、それにより、システムバスヘおよびシステムバスから、そして、ＤＲＡＣ  ５０の制御下にあるＤＲＡＭへおよびＤＲＡＭから、データを送信および受信する。
【０１８５】
ＤＳＲＤとシステムデータバスとの間の全てのデータフローは、バス幅に整合していると考えられる。システムバストランザクションがこれらの整合された境界を交差する時、プロセッサおよびキャシュ制御器は、トランザクションを複数の作動に分割し、各々の部分に対するアドレスフェーズを発生させる。したがって、これらの誤配置されたトランザクションはバーストであり得ない。
【０１８６】
メモリ制御器は、メモリ構成に依存して、所定のメモリ境界上のメモリにデータを記憶する。本実施態様において、メモリ一致は、幅１２８ビットである。４、８、または１６バイトのバーストトランザクションは、１６バイトの境界上で一致すると考えられる。この場合、メモリ境界は、幅１２８ビットのデータである。記憶境界に誤配置されたバーストトランザクションは、バーストの最初のサイクル中に、ＤＳＲＤと主要メモリとの間において、４、８、または１２バイトの転送を含む。更なるメモリが転送されると、メモリアドレスはバースト長内にラップされる。最終のデータ転送は、メモリ転送の最初のサイクル中に省略されたバンクを含む。誤配置の性質は、シーケンスまたはインテルのような、定義されたバースト順序に依存する。
【０１８７】
本発明によると、ＦＥＤＣユニット３０は、２つの独立した書込みおよび読出しチャネルを形成する、２群のＦＥＤＣアレイを含む。各チャネルは、幅３２ビットであり、且つ、メモリ内の１バンクにアクセスし得る。ＦＥＤＣユニット３０内の２つのチャネルまたはＦＥＤＣは、同時に２つのバンクにアクセスし得る。全ての書込みデータは、２つのチャネルのうちの１つにステアリングする。２つのチャネルのうちの１つを介したデータパスは、２つのチャネルのバスサイズおよび／またはステータスに依存して、ＤＲＡＣ  ５０からの制御信号により、データフェーズ中に選択される。バースト書込み中において、全てのデータがＤＲＡＭへの転送を蓄積し得るように、２つのチャネルは、交互に作動し得る。
【０１８８】
各ＦＥＤＣまたはデータチャネルは、通常の書込みトランザクション中に使用するための、書込みファーストインファーストアウトバッファ（書込みＦＩＦＯ）１４５または１４７を含む。本発明の利点として、書込みＦＩＦＯ  １４５または１４７もまた、ポストされた書込みトランザクション用に用いられる。ポストされた書込みトランザクションにおいては、記憶すべきデータが書込みＦＩＦＯ  １４５または１４７内にポストされる。この機能は、ＤＲＡＣ  ５０内のアドレス／制御パスの、分割された構成により達成される。
【０１８９】
各ＦＥＤＣは更に、反射読出しトランザクション中の排他的使用のために、反射ファーストインファーストアウト部材（反射ＦＩＦＯ）１４６または１４８を備えている。反射読出しトランザクション中において、主要メモリを更新するためのコヒーレント読出しおよびコピーバックが同時に起こる。各ＦＩＦＯは、異なる長さのデータバーストをサポートするために、３２バイトの深さを有し得る。バスバースト作動は、完全な書込みＦＩＦＯ深さまでサポートされる。この構成において、ＦＥＤＣユニット３０は、上記したようなＤＲＡＣ  ５０のアドレス／制御パスの分割された構成と協働して、ポストされた書込みトランザクション、および、反射読出しトランザクションを可能にし、Ｍバスのレベル１およびレベル２の様々なトランザクションタイプをサポートする。
【０１９０】
マルチプロセシング環境におけるオーナーシップ操作のために、書込みを放棄し、且つ、書込みを読みだしに変換するために、書込みＦＩＦＯ  １４５および１４７がクリアされ、それにより、次の書込みサイクルの準備をする。ＤＲＡＣ
５０は、ＦＥＤＣ素子３０に特別なコマンドを与えることにより、書込みが抑止された時にＦＩＦＯ  １４５および１４７をクリアする。
【０１９１】
ＦＩＦＯ  １４５−１４８には、特定の制御信号もまた記憶される。これらの信号は、パリティステータス、バンク書込みステータス、およびバーストの最後のステータスを含む。書込み中に、これらのステータスビットおよびＦＩＦＯステータス（ＦＩＦＯエンプティ）は、データフェーズクロックサイクル毎に、ＦＥＤＣユニット３０により、出力バッファ１６２を介してＤＲＡＣ  ５０に報告される。ＤＲＡＣ  ５０は、このステータス情報を用いることにより、書込みトランザクションを完了する。
【０１９２】
書込みトランザクション中において、システムバスデータは、適切な書込みＦＩＦＯに転送される前に、ＦＥＤＣユニット３０内部のシステムバスパイプラインレジスタ回路１３６に記憶される。バイト幅パリティは、レジスタ回路１３６からＦＩＦＯに転送される際に、パリティチェッキングロジック１４０により、データ上で計算される。このことは、システムバス上を、入力および出力バッファ１７４を介してＦＥＤＣユニット３０に、データと同時に適用される、バスパリティに対して、選択的にチェックされる。パリティモードを決定するために、バスパリティモード信号（ＰＭＤ）がシステムバスから供給される。パリティの計算は、システムバスバイトイネーブルにより認定される。データバスパリティエラーが発生すれば、バスエラー信号（ＢＥＲＲ）がアサートされる。
【０１９３】
ＦＩＦＯ  １４５−１４７または１４６−１４８および出力レジスタ回路１９３からのデータ、およびメモリチェックビットを初期化するために用いられた全てのゼロは、ＤＲＡＣ  ５０の制御下で多重化されるデータ多重化回路１５６または１５７に送られる。選択されたデータ信号は、エラー修正回路により使用される、７つの更なるビットを発生させる、書込み多項式発生回路（ＷＰＧ）１６４または１６６に送られる。各ＦＥＤＣまたはチャネルが３２ビット幅のデータを処理するように配置されていれば、入力および出力バッファ１６８−１６９または１７０−１７２を介してチャネルから現れる単一のワードの幅は、３９ビットである。
【０１９４】
本発明によると、ＦＥＤＣユニット３０は、異なるデータ長を有する様々なデータトランザクションをサポートし、データトランザクションは、メモリのバンクのデータビット幅よりも狭いバイトトランザクションを含む。更に含まれるものは、メモリ境界以内の複数のワードトランザクション（１ブロックのメモリのデータ幅よりも狭いサブバーストトランザクション）、１ブロックのメモリのデータビット幅と同一の複数のワードトランザクション、および１ブロックのメモリのデータビット幅を超える複数のワードトランザクションである。
【０１９５】
制御信号バッファ１７５からのバイトイネーブル信号は各々、レジスタ１４９−１５２に送信される。これらのイネーブル信号は、その後、バイト（単数または複数）の選択のために、多重化回路１５６および１５７に送信される。
【０１９６】
１ブロックのメモリ中のバンクのデータ幅よりも狭い幅を有する書込み中に、ＤＲＡＣ５０は、読出し−修正−書込みサイクルを実行する。データはまず入力および出力バッファ１６８または１７０を介してメモリのバンクから読出され、パイプラインレジスタ回路１７９または１８０を介してパイプライン転送される。その後、読出しデータは、エラー検出および修正回路（ＥＤＣ）１８５または１８８を介して、データ出力レジスタ回路１９３または１９４に送信される。ＥＤＣ  １８５または１８８は、読出し−修正−書込みサイクル中に、読出しデータのエラーを検出および修正する。記憶すべきデータバスは、書込みまたは反射ＦＩＦＯ中でバッファされ、データ多重化回路１５６または１５７内のバイト選択信号の制御下においてレジスタ回路１９３または１９４からの古い読出しデータと結合される。その後、結合された書込みデータは、新しいチェックビットを発生させる、書込み多項式発生回路（ＷＰＧ）１６４に送信される。修正された単一のワードは、最終的にＤＲＡＣ  ５０からの適切な制御信号の制御下においてメモリに書込まれる。読出しデータにおいてエラーが発生する毎に、検出されたエラー情報は、読出しログＦＩＦＯ（ログＦＩＦＯ）２００または２０１内に保存される。エラー情報は、いずれのビットが欠陥を有するかを決定するために用いられ得る。
【０１９７】
データサブバーストの書き込みの間に、データはＦＥＤＣユニット３０内へ通され、そこで、ＷＰＧ１６４又は１６６がそのデータにチェックビットを追加する。メモリ内に１つのブロックが生成されるが、余分な長いワードの全てが書き込まれる訳ではない。オリジナルのサブバーストにおけるワードに対する書き込みストローブ及びデータ出力イネーブルのみがアサートされる。ＣＡＳが、選択されたブロック全体に対してアサートされる。初期の書き込み周期を用いて、選択されたブロックの適切な部分ヘデ一夕が書き込まれる。更新されない（書き込みがアサートされない）主メモリブロックの部分が、ダミー読み出し操作を受ける。このダミーデータは破棄される。
【０１９８】
ブロックデータビット幅に等しい長さのバーストに対して、データワードがデータバス上を順次パイプラインされ、ＦＥＤＣユニット３０によって脱多重化される。全ての書き込みストローブがアサートされて、初期の書き込みサイクルと同時にブロック帯域幅内の全てのビットを更新する。
【０１９９】
バースト長がメモリ境界を越えると、アサートされたブロックのＲＡＳ[ｘ]がローに維持され、ＣＡＳ[ｘ]の再アサーションが順次起こって多数のメモリページを書き込む（つまり、ページモード型アクセスが起こる）。このトランザクションにおいて、アドレスがメモリページ境界に対して誤配置されることがある。これが起こると、書き込みＦＩＦＯ１４５〜１４８に同時に現れるデータが同じメモリページヘ行かないこともあり得る。ＦＥＤＣユニット３０から発出される書き込みストローブが各バンクに対応付けられる。内部ＤＲＡＣ５０から生じる制御信号によって、書き込みストローブ及びＦＩＦＯ状態が選択的にイネーブルとされ、書き込みＦＩＦＯが選択的にアンタロックされる（ｕｎｃｌｏｃｋｅｄ）。これが、長いバーストの中心部をメモリデータ境界へ実質的に再配置する。最終メモリページの書き込みストローブ、ＦＩＦＯ状態及びＦＩＦＯアンタロックが同様に選択的にイネーブルとされ、誤配置データの残りの主メモリヘの格納を終了する。ＦＩＦＯ空き状態がバースト書き込みの途中で起こると、ＤＲＡＣ５０が、より多くのＦＩＦＯデータを待って、主メモリヘのバーストを終了する。ＤＲＡＣ５０はバースト最終指示を受け取ると、アドレスフェーズの間にＳＩＺＥビットによって指定されたバースト長に関わらず、現在の周期が終了するとすぐにトランザクションが終了される。
【０２００】
バーストの途中でシステムバスデータパリティエラーが発生すると、パリティエラーよりも前のバースト転送部分からの書き込みＦＩＦＯ１４５〜１４８内部の全てのデータが主メモリに格納される。パリティエラーを含むデータは、ブロック基準で無視される。言い換えると、ブロック内の１つ又はそれ以上のバイトがパリティエラーを含むときは常に、ブロック幅を有するワード全体が破棄される。パリティエラーを含むワードを破棄した後でも、ＦＩＦＯ１４５〜１５８は、破棄されたブロック以降に発生したバーストトランザクションの部分からの有効データを含むこともある。この残りのデータは、うまく記憶されている。割り込みが発生され、適当な状態ビットセットが（データパリティエラー割り込みがイネーブルされたとする）、パリティエラーが書き込みＦＩＦＯ１４５〜１４８を通して伝播したことを示す。このエラーは、ＢＥＲＲアサーションの間にすでに予め生じているであろう。
【０２０１】
読み出し操作の間、アクセスされたブロックの全てのビットが同時に読み出される。全てのビットがデータパイプラインレジスタ回路１７９及び１８０の中へ並列的にストローブされる。２つのチャネル中のデータは、エラー検出及び補正のためにＥＤＣ１８５及び１８８を通って同時に流れ、さらにデータアウトレジスタ回路１９３及び１９４へ流れる。各チャネル中の補正された又は未補正のデータは、各マルチプレクサ１９５及び１９６によって選択される。その後、適切なデータがデータアウトマルチプレクサ回路２０６によって選択され、入力及び出力バッファ１３０を介してシステムバスに供給される。データが入力及び出力バッファ１７４を通ってＦＥＤＣユニット３０から出る際に、バイト幅のパリティがパリティ発生回路１７６によってデータに追加される。通常の条件下では、データは、補正を必要とせず、データアウトマルチプレクサ２０６を介してシステムバスへ与えられる。データが補正を必要とする場合、バースト中の全ての残りのデータと共にシステムバス確認が１クロック周期分だけ遅延される。バースト内の多数のワードが、単一のビットエラーを含む場合でも、正しくないデータはシステムバスには到達しない。
【０２０２】
主メモリデータ境界を越える読み出しデータバーストの誤配置は、書き込み時と同様に完全にサポートされる。そのように誤配置されたトランザクションは、完全なメモリブロック読み出しから始まる。そのブロックの有理数のみがデータバス上に送られる。メモリアクセスは、１つ又はそれ以上の付加的な完全なブロックがシステムバスにわたって転送されるまで継続する。バーストの最終アクセスは、１つ又はそれ以上の未転送データバンクが残っている当初のブロックへ戻る。バーストライン長が主メモリの帯域幅を越える場合、ＤＲＡＣ５０は選択されたブロックのＲＡＳ［ｘ］を維持し、ＣＡＳ［ｘ］を再アサートして、次のブロックを読み出す（ページモード型アクセスが発生する）。
【０２０３】
エラーがシステムアクセス又はスクラビング中に発生すると、検出されたエラー情報が、読み出しエラー記録ＦＩＦＯ２００及び２０１に保存される。エラー情報はどのビットが欠陥であるかを決定するために用いられることができる。エラー記録ＦＩＦＯ２００及び２０１はバスに対して規定される最も長いバースト転送の結果を格納するように設計される。エラー記録ＦＩＦＯ２００及び２０１は、規定された最も長いバスバーストにおける連続エラーによっていっぱいになり得る。これが起こると、その後のエラーは記録されない。エラー記録ＦＩＦＯ２００及び２０１は単一バーストからのエラーを捕らえるためにのみ用いられる。次のバーストの前に、それらはホストプロセッサによってクリアされるべきである。
【０２０４】
状態マルチプレクサ１６０は、書き込み及び反射型読み出しＦＩＦＯからの状態ビット及びエラー検出回路１８６からの状態ビットを多重化するために設けられている。多重化された信号は出力バファ１６２を介してＤＲＡＣ５０へ送られる。
【０２０５】
図５は、ＥＤＣ回路１８５又は１８８の一例を示す。ＥＤＣ１８５又は１８８は、読み出しデータを捕らえてチェックビットを生成するために用いられる読み出し多項式発生器（ＲＰＧ）２２０を備えている。シンドローム発生器２２２は、主メモリ及びＲＰＧ２２０からのチェックビットを比較する。２つのチェックビットが同じであれば、データ中にエラーは発生していない。比較の結果が２つのチェック信号の差を示す場合は、エラー検出器２２４がシンドロームをデコードしてエラーのタイプを識別する。適切なエラー状態ビットがＤＲＡＣ５０へ報告される。同様に、割り込みがプロセッサへ発生される。同時に、エラー位置検出器２２６はシンドローム発生器から信号を受け取り、エラー検出器２２６からのデコードされた信号に応答してエラーのビット位置を識別する３２ビットワードを生成する。エラー補正器２２８では、これらのデコードされた３２ビットが、ＥＤＣを通過しない３２ビットデータと排他的論理和されて、欠陥ビット位置を反転する。エラーが起こると、シンドローム発生器からのエラー情報が、エラー記録ＦＩＦＯ２００又は２０１へ送られる。
【０２０６】
本発明によれば、ＦＥＤＣユニット３０は、集積回路（ＩＣ）とすることができる。広いバス帯域幅及びさらに狭い帯域幅を有するシステムバスをサポートするために、多数のＩＣが並列に配置されてＦＥＤＣ装置又はＤＳＲＤを形成することが可能である。
【０２０７】
ＦＥＤＣユニット３０内の２つのチャネルの特定の構成は、本発明の原理を示すための一例に過ぎないことはもちろんである。ＦＥＤＣユニット３０は、単一チャネル又は多チャネルに構成することも可能である。さらに、ＦＥＤＣユニット３０の各チャネルも以下に論じるように、異なるデータビット処理能力を有することもある。
【０２０８】
５．ＦＥＤＣユニットの組み合わせ
本発明の重要な特徴の１つは、メモリ制御装置のＤＳＲＤが、異なるバスサイズ及びプロセッサシステムを効率的にサポートし、メモリソースを効率的に利用するように容易にセットアップされ得る複数のＦＥＤＣユニット３０又はデータチャネルを備えていることである。これは、２つ又はそれ以上のＦＥＤＣユニット３０のチップを組み合わせてＦＥＤＣ装置を形成することによって達成される。
【０２０９】
アドレスフェーズの間に、ＤＲＡＣ５０は、アドレス／制御情報を解釈し、データフェーズの各周期の間に各ＦＥＤＣユニット３０の内部で適切なチャネル及びＦＩＦＯを選択する。チャネル選択は、バーストの長さ、バースト順序及びシステムバスサイズに依存する。書き込みトランザクションがデータバーストである場合、各ＦＥＤＣユニット３０内のチャネルは交互にクロックされる。つまり、各ＦＥＤＣユニット３０内部の一方のチャネルがデータフェーズの第１の周期上で選択され、他方のチャネルがデータフェーズの次の周期上で選択される。このプロセスは、１２８個のデータビットが蓄積されるか或いはバーストが終了するまで、入力されるシステムバスからのデータを脱多重化し、格納し続ける。このデータは、その後、ＤＲＡＭ５０へ転送される。ＩＮＨ信号が反射型メモリ内でアサートされると、データは、適切な反射型ＦＩＦＯヘルートされる。
【０２１０】
システムバス読み出しトランザクションの間、４×３２ビットのデータ及び４×７チェックビット（全部で１５６ビット）が、ＤＲＡＭ５０から並列に読み出される。各チャネルは、３２ビットのデータを処理する。
【０２１１】
図６Ａ及び図６Ｂは、３２ビット又は６４ビットのシステムバスを効率的にサポートすることができるＦＥＤＣ装置３１の一例を示す。ＦＥＤＣ装置３１は、２つのＦＥＤＣユニット３２及び３３を備えている。各ユニットは、２つのＦＥＤＣチャネル３４〜３５及び３６〜３７を有している。各チャネルは、３２ビットデータを処理することが可能であり、主メモリ１０の選択されたブロック１２における１つのバンクにアクセスすることができる。ＦＥＤＣ装置３１から主メモリのブロック１〜４への接続の一例が示されている。
【０２１２】
書き込み及び読み出しバーストカウンタ１１４及び１１６からのアドレス信号の一部が、ＦＥＤＣユニット及びチャンル番号を識別するために用いられる。その結果、データが、異なるデータ長を有するデータトランザクション内の適切な１つのバンク又は複数のバンクをアクセスすることができる。ＤＲＡＣ５０は、適切なＦＥＤＣユニット及び適切なＦＥＤＣチャネルを選択するために選択信号を供給する。アドレス信号中の下位ビットＡ［３：０］及び３２ビットシステムバス及び６４ビットシステムバスに対するそれらの識別機能がそれぞれ、表２８及び表２９に挙げられている。
【０２１３】
【表２８】
2005228359.tif 000029
【０２１４】
【表２９】
2005228359.tif 000030
【０２１５】
３２ビット及び６４ビットのシステムバスに対して、Ａ２＝０はＦＥＤＣユニット３２を識別し、Ａ２＝１は、ＦＥＤＣユニット３３を識別する。Ａ３＝０はチャネル３４及び３６を識別し、Ａ３＝１はチャネル３５及び３７を識別する。３２ビットバスシステムにおいて、３２ビット又はそれ以上のシステムバストランザクションの間、Ａ［１：０］が無視されて全てのバイトがイネーブルとされることができる。６４ビットバスシステムにおいて、６４又はそれ以上のシステムバストランザクションの間、Ａ［２：０］が無視されて全てのバイトがイネーブルとされることができる。
【０２１６】
図６Ｃは、４つのＦＥＤＣユニット３９〜４２を備えており、１２８ビットシステムバスをサポートするＦＥＤＣ装置３８を示している。各ＦＥＤＣユニットは３２ビットのデータを処理することができる。Ａ［３：０］の識別機能は表３０に挙げられている。
【０２１７】
【表３０】
2005228359.tif 000031
【０２１８】
この実施例において、Ａ２及びＡ３の組み合わせは、ＦＥＤＣユニット３９〜４２のうち１つを選択するために用いられている。Ａ３＝０及びＡ２＝０はＦＥＤＣユニット３９を識別する。Ａ３＝０及びＡ２＝１はＦＥＤＣユニット４０を識別する。Ａ３＝１及びＡ２＝０はＦＥＤＣユニット４１を識別する。Ａ３＝１及びＡ２＝１はＦＥＤＣユニット４２を識別する。１２８ビット又はそれ以上のシステムバストランザクションの間、Ａ［３：０］が無視されて全てのバイトがイネーブルとされる。
【０２１９】
図６Ｄ及び図６Ｅは、２つのＦＥＤＣユニット４４及び４５を備えており６４ビット又は１２８ビットのシステムバス又はそれよりも小さいシステムバスをサポートするＦＥＤＣ装置４３の他の実施例を示している。この実施例において、各ＦＥＤＣユニット４４又は４５は、６４ビットデータを処理することができる１つのＦＥＤＣ又は１つのＦＥＤＣチャネルのみを備えている。Ａ３＝０はＦＥＤＣユニット４４を識別し、Ａ３＝１はＦＥＤＣユニット４５を識別する。図６Ｄに示されるような６４ビットシステムに対して、６４ビット又はそれ以上のシステムトランザクションの間、Ａ［２：０］が無視されて、全てのバイトがイネーブルとされる。図６Ｅに示されるような１２８ビットシステムバスに対して、１２８ビット又はそれ以上のシステムトランザクションの間、Ａ［３：０］が無視されて、全てのバイトがイネーブルとされる。
【０２２０】
６．多重処理サポート
ＤＲＡＭ制御装置は多重処理環境のための完全なサポートを有している。読み出し操作は、スヌーピングキャッシュが要求するキャッシュヘデータを供給する場合に、ＩＮＨのアサーションによって抑止される。ＴＲＣ入力がアサートされると、これらの読み出しが反射的であると考えられ、バス上を転送されるデータが反射型書き込みＦＩＦＯによって捕らえられる。入力されるＢＡＣＫ信号がＤＲＡＣ５０によって用いられて、ＦＥＤＣのためにＦＥＤＳを生成して、データを反射型書き込みＦＩＦＯヘストローブする。データがＤＲＡＭへ書き込まれるまで、ＢＲ信号がＤＲＡＭ制御装置によってアサートされる。この信号は、以降の読み出しを禁止するために用いられることができる（反射型書き込みＦＩＦＯが空になるまで反射型であり得る）。この禁止は２つの方法のうち一方によって発生することができる。転送が完了するまでＢＲ信号が、多重処理バスアービトレーション論理の最高優先順位の要求に他のホストをオフとさせることが可能であるか、或いはスヌーピングキヤッシュがバス転送（例えば、自身のデータストローブ）の速度を落とす機構を有することもあるかいずれかである。
【０２２１】
書き込み周期の間、ＩＮＨ信号は書き込みをオーナーシップに対する読み出しに変えることによって書き込みを打ち切るために用いられ得る。スヌーピングキャッシュが要求されたライン上のヒットを報告しない場合、システムは、ＴＲＣをアサートして、ＤＲＡＭは打ち切られた書き込みを読み出しに変換する。
【０２２２】
ＤＲＡＭ制御装置のアーキテクチャは、多重処理システムにおける全てのプロセッサが主メモリに記憶されるキャッシュライン上の状態と同じであることを必要とする。プロセッサＡからの操作を通る書き込み（キャッシュ不可能）から得られるデータを、スヌーピングプロセッサＢのキャッシュからの修正されたライン（キャッシュ可能）に併合するための準備はされない。
【０２２３】
転送がうまく抑止されるべきであれば、データがメモリヘ／から転送される前にＩＮＨ及びＴＲＣがＤＲＡＭ制御装置へ到着する。メモリ転送を制御するデータストローブの位置は、ＤＲＡＭタイミングの残りと共にプログラムされることができる。或いは、転送はＳＮＷ入力（スヌープウインドウ）を延長することによって配置されることができる。スヌープウインドウを必要としないシステムはＳＮＷ信号を永久に非アサートとする。
【０２２４】
７．ＤＲＡＣとＦＥＤＣ装置との間の協同
データトランザクションの間、ＤＲＡＣ５０、及び特にＤＲＡＣ５０の状態及びタイミング制御論理７２が、ＦＥＤＣ３０への多くの制御信号を発生する。これらの制御信号は、以下のパラグラフで論じられる。
【０２２５】
トランザクションのアドレスフェーズの間、メモリ動作の認識の後で、ＤＲＡＣ５０は、コマンドを解釈して、制御情報をＦＥＤＣ３０へ送る。データフェーズの間、これらの制御信号はＤＲＡＣ５０によって更新され、ＦＥＤＣ３０がＤＲＡＣ５０への状態信号に応答し、さらに、ＤＲＡＣ５０はシステムバスにわたって複合確認信号に応答する。
【０２２６】
例えば、ＤＲＡＣ５０によって発生される制御信号は、ＦＩＦＯトランザクションストローブ信号（ＦＥＤＳ）、動作中の参与のために１つ又はそれ以上のＦＥＤＣを選択するＦＥＤＣアドレス又はチップ選択信号（ＦＥＣＳ）、及びＦＥＤＣユニット又はＩ／Ｏパスにおける２つのＦＥＤＣのうち一方を選択するためのＦＥＤＣアドレス信号（ＦＥＡ）を含んでいる。付加的な信号は、ＦＥＤＣトランザクション型信号（ＦＥＴ）、ＦＥＤＣバイトイネーブル信号（ＦＥＢＥ）、及びＤＲＡＭ周期型信号（ＦＥＤＲＴ）を含んでいる。最終的に、ＤＲＡＣ５０は、長いバーストストローブイネーブル信号（ＦＥＳＴＥＮ）、ＦＥＤＣ読み出しストローブ信号（ＦＥＳＴＲＢ）、及びＩ／Ｏデータイネーブル信号（ＩＯＤＴＡ）を発生する。
【０２２７】
ＦＥＤＳは、ＦＥＤＣのＦＩＦＯＳへの全てのトランザクションの間、データストローブとして働く。
【０２２８】
ＦＥＣＳは、個々のＦＥＤＣユニットを選択しイネーブルとするために用いられる。それは、データトランザクションにおける参与のために１つ又はそれ以上のＦＥＤＣを選択する。
【０２２９】
ＦＥＡは、特定のバストランザクションを規定するためにＦＥＴと共に用いられる。メモリアクセスの間、ＦＥＡが各ＦＥＤＣユニット内のＦＥＤＣを選択する。メモリ書き込み上で、ＦＥＡは適当な１つのチャネル又は複数のチャネルを、データ長及びバスサイズに応じて選択する。メモリ読み出し上で、ＦＥＡはシステムバス上へ正しいデータワードをイネーブルとする。
【０２３０】
例えば、長いバーストの書き込みの間、ＦＥＡは各ＦＥＤＣユニット内の１つのチャネルを選択してメモリ境界上のバーストデータを蓄積する。さらに、ＦＥＡは各ユニットにおける他方のチャネルを選択してその後のバーストデータを蓄積する。各ＦＥＤＣユニットにおけるチャネルは、バーストデータがメモリ内に効率的に格納され得るように、交互に配されている。
【０２３１】
ＦＥＴはＦＥＡと共に、トランザクションの性質を指定する。例えば、ＤＲＡＭ読み出し／書き込み動作の間、ＦＥＴは、読み出しデータ、書き込みデータ、反射型書き込み、クリア書き込みのＦＩＦＯを含み得るバストランザクションタイプを規定する。システムバスＩ／Ｏ動作の間、ＦＥＴビットはＤＲＡＣ５０からＦＥＤＣ３０へのＩ／Ｏデータパスを制御するために用いられる。これらのビットはまた、ＤＲＡＣ５０におけるＩ／Ｏレジスタの読み出し及びＦＥＤＣ３０におけるシンドローム及びチェックビットの読み出しを、ＦＥＤＣ３０におけるＭバスポートレジスタの読み出しと共に制御する。
【０２３２】
ＦＥＢＥビットはトランザクションサイズのバージョンとして解釈される。ＦＥＢＥビットは、多くのＦＥＤＣ中に分布し、ＳＩＺＥにおいて、及びトランザクションの長さと共に、個々のバスバイトイネーブルを反射する。これらの信号は、ＳＩＺＥビットと同一となるようにデコードされる。
【０２３３】
ＦＥＤＣＴは、書き込みＥＤＣチェックビット、ＥＤＣを有する書き込み、ＩＮＩＴ  ＤＲＡＭ及びチェックビット、ＥＤＣを有する反射型書き込み、読み出し未補正パス読み出し補正パス読み出しシンドロームＦＩＦＯを含む適切なメモリ周期を識別するために用いられる。
【０２３４】
ＦＥＳＴＥＮビットは、１２８ビット境界と交差するメモリバースト転送をサポートするために用いられる。この信号は、ＦＥＳＴＲＢに資格を与え、３２ビット基準でメモリによって返送される状態ビットを有効とするために用いられる。  ＦＥＳＴＲＢは、メモリ読み出し動作の間は読み出しデータストローブとして、及びメモリ書き込み動作の間はＦＩＦＯアンクロック信号として働く。それは、ＦＥＤＣ読み出しデータパイプラインレジスタ１７７〜１８０にデータを格納するために用いられる。書き込みの間、この信号はＤＲＡＣ５０によってアサートされて、適切な書き込みＦＩＦＯからの次のデータをアクセスする。
【０２３５】
ＩＯＤＴＡビットは、ＦＥＤＣ３０とレジスタ内部ＤＲＡＣ５０との間でデータを運ぶ。それらは、Ｉ／Ｏ動作の間のみ用いられる。メモリ動作の間は、それらは禁止とされる。
【０２３６】
ＦＥＤＣユニット３０はまた、ＤＲＡＣ５０へ送り返される信号（ＦＥＳＴ）を発生して、それ又はトランザクションの状態を知らせる。各ＦＥＤＣユニット３０はある特定のビットをＤＲＡＣ５０へ与える。全てのＦＥＤＣユニットが、ＤＲＡＣ入力で接続されるそれぞれのＦＥＳＴ信号を有する。一実施例において、状態情報は、補正され得ないデータエラー（ＵＮＣ）、２つのビットデータエラー（ＤＢＩＴ）、信号ビットデータエラー（ＳＢＩＴ）、シンドロームＦＩＦＯエンプティ（ＥＦＥ）、及びシンドロームＦＩＦＯフル（ＥＦＦ）を有している。付加的な信号は、早まって終了されたバーストにおける最後の転送である現在のＦＩＦＯデータ（ＢＬＳＴ）、データパリティエラー（ＤＰＥ）、現在エンプティであるデータＦＩＦＯチャネル０（ＤＦＥ０）、現在エンプティであるデータＦＩＦＯチャネル１（ＤＦＥ１）、現在エンプティである反射型データＦＩＦＯチャネル０（ＲＦＥ０）、エンプティである反射型データＦＩＦＯチャネル１（ＲＦＥ１）を有している。これらの信号は異なるメモリ周期に対応付けられる。
【０２３７】
８.リフレッシュ動作
リフレッシュ要求は、システム中のＤＲＡＭチップの密度及び組織によって異なる。しかしながら、行は、同一時間間隔で（およそ１６mｓごとに）リフレッシュされなくてはならない（この場合、読み出し動作の後スクラビングが行われる）。リフレッシュ要求は、ＤＲＡＣ５０のリフレッシュ回路８３の一部である２つの縦続接続されたカウンタ（タイマ）によって発生される。プログラム可能な７ビットカウンタがＣＬＫを分割して、１ＭＨｚのクロック信号を生成する。このクロックはさらに４ビットの１５を法とするカウンタによって分割され、１５ｕｓｅｃごとにリフレッシュ要求を発生する。これらのリフレッシュ要求はリフレッシュ回路８３におけるリフレッシュ状態制御回路によってメモリ要求に同期してアービトレートされる。システムバス要求はリフレシュ要求にわたって優先順位を受け取るが、リフレッシュは他のバス要求が発生し得る前に挿入される。
【０２３８】
リフレッシュ／初期化アドレスカウンタは、ＤＲＡＣ５０のリフレッシュ回路８３の一部であり、アドレスソースマルチプレクサ１２１へ接続される。このカウンタはリフレッシュ要求毎に１行分だけ進められる。列アドレスはリフレッシュアドレスの最上位から二番目の位置を形成する。全ての行がリフレッシュされ、同一の列アドレスでスクラブされた後、列カウントは進んで、全ての行が、次の列アドレスでリフレッシュされる。行及び列アドレスカウンタはそれぞれ１２ビット長のスパニング１６Ｍビットである。
【０２３９】
所定ブロックの全ての４つのバンクは、特定のアドレスで同時にスクラブされる。ＦＥＤＣ５０内の４つのエラー補正チャネルが並列に用いられる。４つのＤＲＡＭブロックのうち１つがスクラブされている間、他の３つのブロックは通常リフレッシュを受けている。２ビットスクラブブロックカウンタは、次のブロックがスクラブされ得るように特定ブロックの全ての行及び列がリフレッシュされた後に進む。スクラビングの間にエラーが検出されると、補正アドレスがリフレッシュアドレスカウンタからエラー位置レジスタヘコピーされる。読み出し動作の間、データは常にシステムバスで補正される（ＥＤＣがイネーブルである場合）。エラーが発生すると、補正されたデータはメモリアレイヘは書き込まれない。データはスクラビング周期の間にのみＤＲＡＭ内部で補正される。リフレッシュ周期（つまり、エラーチェックのための読み出し）の間にエラーが発生すると、スクラブ周期（つまり、エラーを補正するための読み出し修正書き込み）に変えられる。
【０２４０】
メモリの各ブロックが異なるサイズのＤＲＡＭ構成要素で占められているが、所定ブロック内の全てのバンクは同一サイズ装置でなくてはならない。簡単のため、リフレッシュアドレスカウンタは各ブロックを最大容量（１６Ｍビット）のＤＲＡＭＳであるかのように処理する。より小さいメモリをリフレッシュする場合、同一アドレス位置が、カウンタが次のロケーションに対して進む前に複数回スクラブされる。スクラブ繰り返しカウントは以下のように示される。
【０２４１】
Ｒ＝２（１２−Ｍ）
ここで、Ｒはこの式における繰り返しカウントであり、Ｍはより小さいメモリサイズの平方根のｌｏｇ２である。
【０２４２】
本発明の好ましい実施例が示され説明されたが、本発明の精神及び範囲を越えずに多くの修正例が可能であることが当業者には明かである。例えば、メモリは異なる数のブロックを有するように構成されることもできる。メモリシステム又は原理はＭバスのかわりにシステムバスと共に用いられることもできる。ＦＥＤＣ３０は異なる数のチャネルを用いて構成されることが可能であり、チャネルデータ幅もまたシステム要求に応じて変えることができる。
【図面の簡単な説明】
【０２４３】
【図１Ａ】単一プロセッサシステムの１つの例を示す図
【図１Ｂ】単一プロセッサシステムの他の例を示す図
【図１Ｃ】キャッシュを使用する多重プロセッサシステムを一般的に示す図
【図２】本発明により構成される主メモリ構造の１つの実施態様を示す図
【図３】本発明により構成されるメモリコントローラの制御回路の１つの実施態様のブロック図
【図４】本発明により構成されるメモリコントローラ回路のデータ送受信回路の１つの実施態様のブロック図
【図５】本発明により構成されるメモリコントローラ回路のデータ送受信回路で使用されるエラー検出および訂正装置（ＥＤＣ）の１つの実施態様のブロック図
【図６Ａ】様々なバスの大きさを有するシステムバスおよび様々な大きさのデータのデータ処理を効率的にサポートする、データ送受信回路の配置の様々な実施態様を示す図
【図６Ｂ】様々なバスの大きさを有するシステムバスおよび様々な大きさのデータのデータ処理を効率的にサポートする、データ送受信回路の配置の様々な実施態様を示す図
【図６Ｃ】様々なバスの大きさを有するシステムバスおよび様々な大きさのデータのデータ処理を効率的にサポートする、データ送受信回路の配置の様々な実施態様を示す図
【図６Ｄ】様々なバスの大きさを有するシステムバスおよび様々な大きさのデータのデータ処理を効率的にサポートする、データ送受信回路の配置の様々な実施態様を示す図
【図６Ｅ】様々なバスの大きさを有するシステムバスおよび様々な大きさのデータのデータ処理を効率的にサポートする、データ送受信回路の配置の様々な実施態様を示す図
【図１Ａ】
2005228359.tif 000032
【図１Ｂ】
2005228359.tif 000033
【図１Ｃ】
2005228359.tif 000034
【図２】
2005228359.tif 000035
【図３】
2005228359.tif 000036
【図４】
2005228359.tif 000037
【図５】
2005228359.tif 000038
【図６Ａ】
2005228359.tif 000039
【図６Ｂ】
2005228359.tif 000040
【図６Ｃ】
2005228359.tif 000041
【図６Ｄ】
2005228359.tif 000042
【図６Ｅ】
2005228359.tif 000043