(57)【特許請求の範囲】
【請求項１】
データを格納するためのメモリであって、該メモリシステムはシステムバスに結合され、該システムバスはさらに１つ以上のキャッシュに結合され、
メモリと、
該システムバスからアドレス及び制御信号を受け取り、該メモリ及び該システムバス間でのデータの転送を制御するための制御手段であって、個別の読み出しアドレスパス及び個別の書き込みアドレスパスを含むアドレスパスと、個別の読み出し制御パス及び個別の書き込み制御パスを含む制御パスとを有する、制御手段と、
該システムバスと該メモリとの間に結合され、さらに該制御手段に結合され、該制御手段の制御下で該システムバス及び該メモリ間でデータを転送する送信及び受信手段であって、該送信及び受信手段は少なくとも１つの書き込みデータパスを含み、該少なくとも１つの書き込みデータパスは少なくとも１つの書き込み先入れ先出し（FIFO）バッファ手段に結合され、該書き込み先入れ先出し（FIFO）バッファ手段は、データを該メモリ内に格納することを要求するバストランザクションの一部として該システムバスから受け取ったデータを一時的に格納し、これにより、該メモリからのデータの読み出しを要求するバストランザクションの優先的処理を可能にし、キャッシュパージ動作の一部として生じる書き込みトランザクションの間に転送されるデータをバッファし、
該少なくとも１つ書き込みデータパスは少なくとも１つの反射型先入れ先出し（FIFO）バッファ手段にさらに結合され、該反射型先入れ先出し（FIFO）バッファ手段は、コヒーレント読み出しトランザクションの間に該システムバス上に転送されるデータのコピーを格納する、送信及び受信手段と、
を備えた、メモリシステム。
【請求項２】
データを格納するためのメモリシステムであって、
メモリと、
システムバスと該メモリとの間でデータを送信及び受信する回路であって、書き込みデータパスと、読み出しデータパスと、該書き込みデータパス内に配置される書き込み先入れ先出し（FIFO）バッファであって、通常の書き込みトランザクションの間に転送されるデータ及びキャッシュパージ動作の一部として生じる書き込みトランザクションの間に転送されるデータをバッファする書き込み先入れ先出し（FIFO）バッファと、該書き込みデータパス内に配置される反射型先入れ先出し（FIFO）バッファであって、コヒーレント読み出しトランザクションの間に該システムバス上に転送されるデータのコピーを格納する反射型先入れ先出し（FIFO）バッファと、該読み出しデータパス内に配置されるエラー検出及び補正（EDC）回路であって、読み出しトランザクションの間に該メモリから得られたデータ内においてエラーを検出し、検出されたエラーを補正するエラー検出及び補正（EDC）回路とを有する送信及び受信回路と、
該メモリ並びに該送信及び受信回路に制御信号を提供する制御回路と、
を備えた、メモリシステム。
【発明の詳細な説明】
発明の分野
本発明はメモリシステムに関する。詳しくは、様々なバスに接続し、単一プロセッサおよび多重プロセッサアーキテクチャの両方を効率的にサポートするメモリシステムに関する。
発明の背景
ランダムアクセスメモリ（RAM）、特にダイナミックランダムアクセスメモリ（DRAM）の応用範囲の拡大および急速な発展により、メモリ装置の記憶容量はほぼ２年毎に倍増している。さらに、今日では記憶容量が様々に異なるDRAMなどの、様々なタイプのメモリ装置が市販されている。これには、サイズが各々、256k x 1、1M x 1、4M x 1、16M x 1、256k x 4、1M x 4、4M x 4のDRAMが含まれ、また間もなく、256k x 16および1M x 16の記憶容量を有するさらに大きなDRAMも加わる予定である。しかし、様々なプロセッサおよびバスシステムを効率的にサポートし得、様々なタイプのメモリ装置の使用を可能にする主メモリ構造をどのように提供するかという問題は、先行技術によってはいまだ解決されていない。さらに、このような主メモリが提供されるとしても、次の問題は、このようなメモリへのアクセスを様々なプロセッサシステムの必要条件に従って効率的に制御し得るメモリコントローラを提供することである。
様々なプロセッサシステムの必要条件を満たすために、様々なプロセッサをサポートする様々な帯域幅を有する様々な異なるシステムバスが導入されている。これらのバスはまた様々なバスクロック周波数を有し得る。
市販されている１つのバスは、Sun Microsystems Inc.により開発されたＭ−バスと呼ばれるバスである。このバスは相補形金属−酸化物−半導体（CMOS）の技術と適合し得る。Ｍ−バスは通常は２つのレベルに分類される。レベル１は単一プロセッサシステムをサポートする。単一プロセッサシステムの１つの例は一般に図1Aに示される。この例では、バス２がプロセッサ３とメモリコントローラ４との間を接続し、メモリコントローラ４はメモリ５と接続する。単一プロセッサシステムの別の例を図1Bに示す。この例では、プロセッサ６はキャッシュ７に接続し、キャッシュ７がさらにシステムバス８に接続する。レベル２は多重プロセッサシステムをサポートする。多重プロセッサシステム10の１つの例を図1Cに示す。複数のプロセッサ11−12（２つのみを示す）がバス15およびメモリコントローラ16を通して共通の主メモリ17を共有する。各プロセッサ11または12は少くとも１つのローカルキャッシュ13または14に接続する。レベル２のＭ−バスの１つの例は、SPARC M−バスレベル２であり、これは、通常の読出しおよび書込み処理と共に、コヒーレントな無効処理、コヒーレントな読出し処理、コヒーレントな書込みおよび無効処理、およびコヒーレントな読出しおよび無効処理を含む多くの他の処理をサポートし得る。これら後半の処理の各々は、各プロセッサと接続するローカルキャッシュを必要とする。システムバスは、32ビット、64ビット、および128ビットのデータ幅など様々な大きさ、および25MHz、33MHz、40MHz、または50MHzなどの様々なクロック周波数を有し得る。
従来のメモリシステムは、大きさおよびクロック速度が異なる様々なバスをサポートするほどに柔軟ではない。特に、従来のメモリシステムは、各々が少くとも１つのローカルキャッシュに接続し、また共通の主メモリを共有する多くのプロセッサに接続するバスシステムを効率的にサポートしない。
例えば、いくつかのプロセッサシステムでは、コピーバック環境の下でのキャッシュコントローラは、内部でキャッシュラインを消去し、次に主メモリ（DRAM）の読出しを要求し、続いて古いキャッシュラインの主メモリへの書き戻しを可能にする、内部バッファリングを有し得ない。多くの場合、先ず主メモリに書込み次に読出しを行うように要求される。これは、省略されたキャッシュラインが満たされるのを待つためプロセッサの周期に無駄が生じる。従来のメモリシステムは、キャッシュ消去操作をサポートするメカニズムを有しない。さらに、コヒーレントな読出し処理の間、従来のメモリコントローラは処理の監視しか行えず、抑止読出し操作を書込み操作に変換して反射型メモリを提供することができない。
いくつかの従来のメモリコントローラには、FIFOなどのデータバッファリング部が供給され、正常な書込みまたは読出しデータをバッファする。しかし、このようなコントローラの構成は一般には上述のキャッシュ消去または反射型読出し操作をサポートするには適切ではない。さらに、このようなコントローラは、データバッファリング部が前の処理に占領されているときは、主メモリとシステムバスとの間のデータ処理を効率的に行い得ない。さらに、短いバイト処理および長いバースト処理は通常は効率的で信頼性のある方法で実行され得ない。
最後に、従来のメモリシステムは、様々なシステムバスクロック周波数に従ってメモリのタイミング分解能を向上させるほどに柔軟ではない。
これら従来のメモリシステムの例は以下の参考文献に開示されている:1990年９月４日付けの米国特許第4,954,951号;Advanced Micro Devices社の製品仕様書、"4M Configurable Dynamic Memory Controller/Driver"、製品番号AM29C668、1990年３月刊行;SAMSUNG社の製品仕様書、"Dynamic RAM Controllers"、製品番号KS84C31/32、1989年11月刊行;Signetics Fast社の製品仕様書、"Intelligent DRAM Controller"、製品番号FAST 74F1763、1989年３月12日刊行;Signetics Fast社の製品仕様書、"DRAM and Interrupt Vector Controller"、製品番号FAST 74F1761、1989年３月５日刊行；論文"M−Bus Provides Processor−Independent Bus"、Microprocessor Report、1991年８月７日刊行。
発明の要旨
従って、本発明の１つの目的は、様々な大きさおよびクロック周波数を有し得る様々なタイプのシステムバスと共に使用され得る柔軟性を有するメモリシステムを提供することである。
本発明の別の目的は、様々なプロセッサおよびバスシステムをサポートする新規のメモリ構造を有するメモリシステムを提供することである。このメモリ構造は、複数のブロックを含み、ブロックの各々は様々なタイプのメモリチップにより構成され得、また様々なタイプの大きさを有し得る。
本発明のさらに別の目的は、すべてのＭ−バスレベル１およびレベル２の処理タイプ、および、同時にコピーバック操作が行われるコヒーレントの読出しを伴うキャッシュ消去操作を効率的にサポートし得るメモリシステムを提供することである。
本発明のさらに別の目的は、データのためのパリティ発生およびチェック、アドレスのパリティチェックのための追加ビット、および多重プロセッサをサポートするために柔軟性が増大したことによる追加の制御ビットを含む、32、64、および128ビットの大きさのシステムバスをサポートし得るメモリシステムを提供することである。
本発明のさらに別の目的は、様々なバスクロック周波数を有する様々なタイプのシステムバスと接続し得、またメモリのタイミング分解能が向上したメモリシステムを提供することである。
本発明のさらに別の目的は、複数のデータチャンネルを提供して効率的なデータ処理を可能とするメモリシステムを提供することである。
本発明のさらに別の目的は、メモリ内の複数のブロックをサポートし、バスおよびデータの大きさに依存してブロックの１つの中の１つ以上のバンクへの効率的なアクセスを提供するメモリシステムを提供することである。
本発明のさらに別の目的は、システムバスの通信量を低減して、共通の主メモリを共有する多重プロセッサの効率を向上させ得るDRAMコントローラを提供することである。
本発明のこれらの目的によれば、主メモリ、およびシステムバスと主メモリとの間を接続するメモリコントローラを有する高性能のダイナミックメモリシステムが提供される。
主メモリは、複数のバンクを含む少くとも１つのブロックを備える。バンクの各々は所定のメモリ帯域幅を有する。主メモリの各ブロックはDRAMタイプのメモリエレメントにより構成される。
システムバスは、様々な大きさおよび様々なバス周波数を有し得る。システムバスは複数のプロセッサに接続され、プロセッサの各々が少くとも１つのローカルキャッシュと接続し、これにより主メモリがすべてのプロセッサにより共有される。本発明の第１の実施態様においては、システムバスは様々なプロセッサシステムをサポートし得る拡張Ｍ−バスである。
メモリコントローラは、システムバスへのおよびシステムバスからのデータ転送を制御するために、システムバスからのアドレスおよび制御信号を受け取る制御回路を含む。コントローラはまた、データ送受信回路を含み、この場合も制御回路の制御の下で、データをシステムバスへおよびシステムバスから、主メモリへおよび主メモリから送受信する。
制御回路はアドレス信号経路および制御信号経路を含む。アドレス信号経路上には、制御回路には読出しアドレス経路および書込みアドレス経路が設けられている。書込みアドレス経路には２つの書込み経路が設けられている。一方は、システムバスで連続書込みデータ処理が行われるとき、第１のデータ処理アドレスのための経路を提供するために使用される。他方は、第１のアドレスがDPAMで実行されている間に、次のデータ処理アドレスを保持するために使用される。制御信号経路では、制御回路には読出し制御信号経路および書込み制御信号経路が備わる。書込み制御信号経路はさらに、第１のデータ処理制御信号のための第１の経路、および次のデータ処理制御信号を保持するための第２の経路を含む。
制御回路は、主メモリの構成パラメータ、システムバスの大きさ、およびシステムバス周波数増倍率に関するプログラム情報を提供するように構成され、これにより主メモリ内の様々なメモリタイプ、様々な大きさおよび速度を有する様々なタイプのシステムバスがサポートされ、また主メモリのタイミング分解能が向上する。
データ送受信回路には複数のデータチャンネルが含まれ、各々が少くとも１つの書込み先入れ先出し部（書込みFIFO）を有する書込みデータ経路を備える。書込みFIFOはシステムバスから受け取るデータを主メモリに記憶する前に一時的に保持するもので、FIFOに既に保管されているデータを失わずに、すべてのプロセッサがいつでもデータを得ることが可能である。また、書込みデータ経路では、少くとも１つの他の反射型先入れ先出し部（反射型FIFO）が含まれ、プロセッサの１つに接続するローカルキャッシュからデータを要求している別のプロセッサのローカルキャッシュに転送されるシステムバス上のデータを捕え、これにより、データは反射型FIFOおよびデータを要求しているプロセッサのローカルキャッシュに同時に記憶される。各チャンネルは、主メモリのブロックのバンクと同じ、所定の大きさのデータバス帯域幅を有する。
各データチャンネルはまた、システムバスと主メモリとの間に、読出しデータの転送のための読出しデータ経路を含む。読出しデータ経路にはデータ訂正をサポートするために使用されるエラー検出および訂正回路が設けられている。
第２の実施態様においては、２つのデータチャンネルが集積回路の形態の単一のデータチャンネルユニットに接続される。データ送受信回路は２つ以上のこれらデータチャンネルユニットを含み得る。
メモリコントローラの制御回路はまた、適切なデータチャンネルおよびチャンネルユニットを認識および選択し得る制御論理を含む。この選択はシステムバスの大きさ、各データチャンネルの状況、および転送されるデータの大きさに依存する。データバースト書込みの間は、各ユニットのチャンネルは他の方法で操作し得、これにより主メモリ境界内のさらに多くのデータ語を適切なチャンネルに蓄積し得、主メモリへの効率的な転送が可能となる。
第３の実施態様においては、主メモリは複数のブロックに分かれ、各ブロックを各々異なるDRAMタイプの構成とし得る。各ブロックは同一のDRAMタイプの複数のバンクを含む。
主メモリシステムはまた、バス周波数を増加させる周波数乗算器を含み、主メモリのタイミング分解能を向上させるメモリクロックを提供する。周波数乗算器は、プログラム可能メモリコントローラにより生成されるバス周波数乗算ファクターを使用する。
第４の実施態様においては、プログラム可能メモリコントローラは、プログラミング機能を記憶する多くのプログラムレジスタを含む。これらプログラムレジスタの中には、多様な制御用の情報を記憶するコマンドレジスタがある。これらの情報には、主メモリのブロック数および各ブロックの大きさおよびプロセッサのメモリマップにおける位置、バスの大きさ、バス周波数乗算ファクター、およびエラー検出および訂正回路のデータ帯域幅をプログラミングすることが含まれる。タイミング分解能が向上した主メモリ読出しおよび書込み操作のための制御信号のタイミングを記憶するために、タイミングレジスタが設けられている。メモリコントローラはまた、各データチャンネルにおける各FIFOの状況（空白か空白でないか）、およびデータ処理の間に発生するエラー情報、などの各データチャンネルの状況を記憶する状況レジスタを含む。また、全体のメモリマップにおける主メモリのブロックのローカル情報を記憶するために供給される位置プログラムレジスタが含まれ、これはコンパレータに接続し、これにより、入力アドレスが位置プログラムレジスタ内のプログラムされた位置の１つに符合するときメモリ内のブロックの１つを正しく選択することが可能となる。位置プログラムレジスタには、どのプロセッサのアドレスビットがアドレスと符合するかを認識するために使用されるマスクビットを記憶するためのマスクレジスタが接続されている。
上述のおよび他の本発明の特徴および利点は、以下の図面を参照して、後述する実施態様の詳細な説明を研究すれば明かとなる。
【図面の簡単な説明】
図1Aは単一プロセッサシステムの１つの例を示す。
図1Bは単一プロセッサシステムの他の例を示す。
図1Cは、キャッシュを使用する多重プロセッサシステムを一般的に示す。
図２は、本発明により構成される主メモリ構造の１つの実施態様を示す。
図３は、本発明により構成されるメモリコントローラの制御回路の１つの実施態様のブロック図を示す。
図４は、本発明により構成されるメモリコントローラ回路のデータ送受信回路の１つの実施態様のブロック図を示す。
図５は、本発明により構成されるメモリコントローラ回路のデータ送受信回路で使用されるエラー検出および訂正装置（EDC）の１つの実施態様のブロック図を示す。
図6A−6Eは、様々なバスの大きさを有するシステムバスおよび様々な大きさのデータのデータ処理を効率的にサポートする、データ送受信回路の配置の様々な実施態様を示す。
好適な実施態様の詳細な説明
以下に、本発明により構成されるメモリシステムの実施態様について述べる。
メモリシステムはDRAM構造および独自のDRAMコントローラを含む。そのDRAMコントローラは、大規模なメモリ構造、および32、64、または128ビットデータ幅などの様々なバス幅を有し、また25MHz、33MHz、40MHz、または50MHzなどの様々なバスクロック周波数を有するいくつかのバスをサポートするのに適している。メモリシステムはまた、様々なプロセッサシステムに対する高性能および高効率のメモリ動作を行うために、多くのバス処理をサポートするのに適している。このようなプロセッサシステムには、図1Aおよび1Bに示すような単一プロセッサシステム、ならびに図1Cに示すような多重プロセッサシステムが含まれる。DRAMコントローラには、DRAM制御装置（DRAC）およびデータ送受信装置（DSRD）が含まれる。DRACはシステムバスとDRAMとの間のDSRDに接続される。DSRDはシステムバスとDRAMとの間に接続される。システムバスは単一の多重アドレス／データバスで有り得、または複数の個別のアドレスおよびデータバスを含み得る。バスインターフェースは完全に同期され、バスクロックの立ち上がりを使用する。バス信号の定義はＭ−バス標準の拡張であるため、Ｍ−バスは追加のプロセッサシステムをサポートするために使用され得る。
本発明のメモリシステムは、高性能のアドレス／制御経路および少くとも１つの高性能のエラー検出および訂正データ経路よりなる。アドレス／制御経路上、メモリコントローラには多くのバスシステムおよびデータ処理のためのメモリアクセスを効率的に制御するプログラム可能DRACが設けられている。データ経路上、メモリコントローラにはFIFOバッファおよびエラー検出および訂正メカニズム（EDC）を含むDSRDが設けられている。DSRDは、書込み時には高性能データバッファおよびデマルチプレクサとして、また読出し時にはエラーコレクタとして機能する。DRACおよびDSRDは各々集積回路とされ得る。
1.メモリ構造
図２に、本発明により構成されるメモリ構造の１つの実施態様を示す。図２のメモリは複数のDRAMチップを使用して構成される。
図２のメモリは４つのブロック（ブロック０−３）に分けられる。各ブロックは４つのバンク（バンク０−３）を含む。各バンクは39ビット幅（すなわち、32個のデータビットおよび７個のエラーチェックビット）である。バンク０−３は156ビット幅のブロックとして同時にアクセスされ得、これにより最大メモリ性能が得られる。
メモリは、メモリコントローラのメモリ側に接続される12本のアドレスライン（行アドレスおよび列アドレスとして多重化される）を有する。メモリはまた４本のDRAM読出し／書込みラインRW［３−０］（アクセスされたブロックの４−39ビットバンク各々に対して１本）、およびメモリコントローラのメモリ側に接続される各々４本のRAS［3:0］およびCAS［3:0］制御ラインを含む。メモリは初期の書込みサイクルを使用して書き込まれる。すなわち共通の入出力を有するDRAMチップは、各々別の入出力を有するDRAMチップと同じ方法で制御される。このような大規模構成のDRAMを使用するとき存在する実質的なアドレスおよび制御容量を駆動するために、外部バッファが必要とされる。
メモリコントローラチップセット（DSRDおよびDRAC）は、256K x 1または４、1M x 1または４、もしくは4M x 1または４、および16M x 1 DRAMチップのいずれかをサポートするように設計される。コントローラはまた、もっと大きな４メガビットDRAM（256K x 16）およびさらに大きな16メガビットDRAM（1M x 16）も、これらの装置が利用可能になればサポートし得る。メモリシステムの最大全容量は256K x 1 DRAMを使用し単一のブロックを有する４メガバイトから、16M x 1 DRAMを使用し全部で４個のブロックを有する１ギガバイトまで拡張し得る。記憶容量は２進増分で拡張可能である。DRAMチップのタイプは１つのブロックを構成する４つのバンクすべてにおいて同一である。しかし、各ブロックは異なるタイプのDRAMを有し得る。DRAM構造の可能な構成を下記の表１に示す。多重周波数クロック（40または50MHzバスクロックでは２倍、33MHzバスクロックでは３倍、または25MHzバスクロックでは４倍）が入力され、これによりDRAMのタイミングが10ナノ秒（40MHzバスクロックに対しては12.5ナノ秒）の間隔に制御される。
156ビットブロックの各々は、他のブロックのデータラインのそれぞれに接続されるデータラインを有している。適切なブロックは、それのRASおよびCASラインをアサートすることによって選択される。選択されたブロックから得られる156ビットはDSRDを通過し、ここでデータのチェックおよび必要であれば訂正が行われる。エラーチェックビットは除去され、データはバス上に位置づけられる。メモリは32、64、または128ビット幅のデータ経路をサポートし得る。
0003599334.tif 000002
主メモリのブロックの各バンクは、64データビットなどの他の所定のデータ幅によっても構成され得る。
2.バス構造およびその定義
システムバスは、現在市販されているＭ−バスを含む、様々なバスを含み得る。本発明によると、多重プロセッサシステムを効率的にサポートするために、バス信号仕様は、再編成および拡張され得る。１つの実施態様において、信号仕様には、現存する32−、64−、および128ビットデータをサポートするために、データパリティ生成、データのチェックおよびアドレスパリティチェックのための付加ビット、ならびに様々なプロセッサシステムをサポートする制御ビットが設けられている。分離アドレスおよびデータ線は、非多重システムバスアプリケーションをサポートするために提供され得る。信号はまた、Ｍ−バス適合性をサポートするために多重化され得る。信号仕様は、本発明のメモリシステムと協同して、バーストを含むすべてのＭ−バスレベル１およびレベル２のトランザクションタイプをサポートするばかりでなく、バーストトランザクションの早期終了を可能にし、様々なバーストオーダ（連続およびIntel型バースト）のサポートを提供し、様々なプロセッサのバースト長要件（Intel、Motorola、Sparc）のサポートを提供し、そしてFIFOへのキャッシュデータ線の書込みポスティングを可能にする。さらに、読出し／書込みまたはI/O動作は、読出しから書込み、または書込みから読出し等のデータトランザクションの変換を許すために禁止され得る。その結果、バストランザクション速度が向上する。
例えば、システムバスを介して転送された制御信号は、アドレス信号（Ad）、アドレスフェーズを同定するアドレスストローブ信号（AS＊）、データフェーズを同定するデータストローブ信号（DS＊）、アドレス／データパリティ信号（ADP）、およびバストランザクションの早期終了のためのデータバースト最終信号（BLST）を含み得る。さらに、制御信号は、バスインターフェースモードを同定するインターフェースモード信号（IMD）、トランザクションタイプを特定するトランザクションタイプ信号（TYPE）、バストランザクション中に転送されるバイトの数を特定するトランザクションサイズ信号（SIZE）、およびすでに進行しているDRAM読出し／書込みまたはI/Oサイクルを中止するメモリ制御信号（INH）を含み得る。他の制御信号は、抑制されたトランザクションサイクルを他に転送するサイクル信号（TRC）を変換させる変換サイクル信号（TRC）、スヌープウインドを、タイミングレジスタにおいてプログラムされたタイミングインターバルを越えて延長させるスヌープウインド信号（SNW）、バスマスタにトランザクション確認を提供する確認信号（BACK）、バスエラー発生を示すエラー信号（BERR）、および反射読出しトランザクション中のバスを保持する、DRACによって生成されたバス要求信号（BR）を含み得る。さらに他の制御信号は、バスオーナーシップの保持中に、DRAC8によってアサートされるバス話中信号（BB）、バス許諾信号（BG）、およびエラー条件が発生するときに常にアサートされる割り込みアウト信号（INT）。最後に、制御信号は、すべてのバストランザクションを同期させるクロック信号（CLK）、強化タイミングをDRAMに発生させる多重周波数クロック信号（MCLK）、DRAMをリセットするリセットイン信号（RSTIN）、および同定信号（ID）を含み得る。
以下に、これらの制御信号のいくつかについてより詳細に説明する。
IMDは、Ｍ−バスモードまたは一般的なバスモードのような主要メモリシステムに現在連結されてる、バス型またはバスモードを特定するのに使用される。
TYPEは、アドレスフェーズ中のデータトランザクションタイプを特定する。TYPEビットの解釈は、IMDによって決定される。例えば、IMDが、バス型はSPARC型であると示すとき、TYPEビットは、書込み、読出し、コヒーレント無効、コヒーレント読出し、コヒーレント書込みおよび取り消し、およびコヒーレント読出しおよび無効を含む、すべてのデータトランザクションタイプのSPARC M−バスを同定する。IMDが、バス型は一般型であると示すときには、TYPEビットは、書込み、読出し、デフォルトバーストサイズにおける読出し、書込み、デフォルトバーストサイズにおける書込み、連続バーストオーダ、非連続バーストオーダ（Intelプロセッサ等）、ポストされた書込み、デフォルトバーストサイズにポストされた書込み、およびバス上のバイト０の位置を含む、様々なデータトランザクションタイプのＭ−バスまたは一般的アプリケーションを同定する。バイト０は、バス上の最低バイトまたはバス上の最高バイトのいずれかとして発生する。
SIZEビットは、トランザクションサイズ、およびイネーブルされる特定の１つのバイトまたは複数のバイトを特定するのに使用される。トランザクションサイズは、バイト、ハーフワード（２バイト）、ワード、ダブルワード、16バイトのバースト、32バイトのバースト、64バイトのバースト、または128バイトのバーストを含み得る。特定バイトイネーブル情報は、バイトイネーブル、ならびにi486および68040のようなプロセッサと互換性のある誤配置されたデータ転送を提供するために、オリジナルＭ−バス仕様に加えられる。バイトイネーブルのすべての組合せは、同時にアサートされ得る。トランザクションサイズ情報の解釈は、アドレス信号における特定の１つまたはそれ以上のバイトのアドレスの機能であり、それにより、メモリ制御器における１つまたはそれ以上のデータチャンネルの選択、または主要メモリにおけるバンクの１つまたはそれ以上のバイトへのアクセス、または主要メモリによける１つまたはそれ以上のバンクへのアクセスが可能になる。
PMDビットは、パリティ計算アルゴリズムを特定し、パリティ計算に関与する信号を同定する。PMDビットは、全システムバスサイクルにおいて有効である。パリティモードは、ディスエーブルとなったパリティ計算、計算されたアドレスパリティ計算されたデータパリティ、計算されたアドレスおよびデータパリティ、計算された奇数パリティ、または計算された偶数パリティを含む。
BACKビットは、トランザクション確認信号をマスタシステムプロセッサ（すなわち、バスマスタ）に提供する。Ｍ−バスモードにおいて、確認信号は、補正不可能なエラー、有効なデータ転送、およびアイドルサイクルのようなＭ−バス定義を含む。一般的なモードでは、確認信号は、有効なデータ転送、エラー例外、およびアイドルサイクルを含み得る。
ASは、バスマスタによってアサートされ、トランザクションのアドレスフェーズを同定する。
DSは、トランザクションのデータフェーズ中でバスマスタによってアサートされる。DSは、DRACにおいて内部的にパイプラインされ、データが転送されるクロックサイクルの１つ前のクロックサイクルに現れる。データは転送され、BACKは、DSがアサートされる（但し、DRAM制御器が転送を確認し得る場合）クロックサイクル後のすべてのシステムバスサイクルにおいてアサートされる。バスマスタは、DSを使用して、サイクル毎をベースとした追従応答を制御（中止）し得る。
BLSTは、バスマスタによって使用され、早期にバストランザクションを終了する。BLSTは、DSがまたアサートされるクロックサイクル中においてのみ認識される。従って、BLSTは、最終的に所望されるデータ転送の１つ前のシステムバスサイクルとしてアサートされなければならない。
INHは、多重プロセッシング環境におけるキャッシュ制御器によってアサートされ、すでに進行中のDRAM読出し／書込みまたはレジスタI/Oサイクルを中止する。データ転送が開始する前にINHが受け取られると、動作は、すべてのデータが転送される前に中止される。メモリ制御器がバス確認を開始した後にINHが受け取られると、そのINHは無視される。メモリが反射型である場合には、DRAMの読出しは、書込みに変換される。データを保持するスヌープキャッシュから発生するBACK信号は、解釈されて、書込みストロープをFIFO/EDCデータ経路に提供する。禁止された書込みはまた、オーナーシップの読出しに変換され得る。
TRCは、アサートされると、禁止された読出しサイクルを書込みサイクル（反射型）に、または禁止された書込みサイクルを読出しサイクル（オーナーシップの読出し）に変換する。
SNWは、アサートされると、スヌープウインドを、DRAMタイミングレジスタにプログラムされた値から生じるインターバルを越えて延長させる。この信号は、もし使用されないと、永久にディアサートされ得る。
BEERは、バスパリティエラーがデータトランザクションのアドレスまたはデータフェーズ中に発生したことを示す。信号は、非同期的（すなわち、１つまたはそれ以上の後のクロック）にアサートされる。この信号は、エラーが発生する１つ後のサイクルで有効で、解除されるまで有効である。信号は、コマンドレジスタに適切なビットを書き込むことによって解除される。
BRは、反射型読込みトランザクション中にDRACによって発生される。主要メモリシステムによって発生したBRは、システムのバス仲介ロジックに対するオーナーシップのための最高のプライオリティ要求として解釈される。さらなるシステムバストランザクションは、主要メモリへの進行中の書込み（反射型読出しから生じる）が終了するまで停止される。オリジナルのＭ−バス仕様は、２つのキャッシュの間で転送されるデータが同時にDRAMに書き込まれる間に、次のバストランザクションを遅延させる反射型主要メモリの明示的なメカニズムを有さない。要求するキャッシュとキャッシュデータオーナとの間の確認データ転送のより複雑なプロトコルを有するシステムは、BRを使用して、次のトランザクションがDSRD中の反射型データ経路にオーバーライトするのを防止するためにデータストローブを形成し得る。
BGは、BRに応答して外部仲介ロジックによってアサートされ、DRACがバスの認可されたオーナーシップであったことを示す。
BBは、そのバスのオーナーシップの存続のためにDRACによってアサートされる。DRACは、反射型読出し動作中に、主要メモリ書込みトランザクションを完了する際に、バスを必要とし得る。
INTは、エラー条件が発生したときに常にアサート（もしイネーブルされる場合に）されるオープンDRAM出力である。例えば、システムバスパリティエラーまたはメモリーエラーは、アサートされるINTを引き起こし得る。
CLKは、すべてのバスデータトランザクションを同期させる。例えば、最大クロック周波数は、50MHzであり、すべてのデータトランザクションは、クロック信号の立ち上がりにおいてストローブされる。
RSTINは、DRACをリセットするのに使用される。信号は、少なくとも４つのクロックについてアサートされなければならない。
IDビットは、２つの解釈を有する。IMDがＭ−バスモードを示すときには、IDビット解釈は、完全にＭ−バス互換性である。Ｍ−バスモードでは、IDフィールドは、ポートレジスタおよび他のI/OレジスタにアクセスするためのＭ−バスアドレス空間内の様々な形態の空間を選択する。非Ｍ−バスモードで使用されるときには、IDビットは、アドレス信号と連結して使用され、バストランザクションの特性を限定し、I/OレジスタまたはDRAMメモリを選択する。IDビットと、限定された一般的（非Ｍ−バス）動作の固定値との間には、適合が必要である。
第２の実施態様では、システムバス仕様は、SPARC,i860,i486およびMotorola 68040、88000シリーズおよびMIPS R3000およびR4500シリーズを含むさらなるプロセッサシステムをサポートし得るＭ−バス標準（EMバスと呼ばれる）の拡張である。EM−バスでは、Ｍ−バス信号のいくつかが保存され、Ｍ−バス信号のいくつかが再定義され、エンハンスされ、いくつかの新しい信号が加えられる。
すべてのEM−バストランザクションは、アドレスフェーズ、次いでデータフェーズに分離される。アドレスフェーズは、アドレスストローブ信号（AS＊）のアサーションによって同定され、１つのEM−バスサイクル中存続する。データフェーズは、アドレスフェーズに素早く後続し、１つまたはそれ以上のクロックサイクル中存続し得る。データフェーズは、データストローブ（DS＊）のバスマスタアサーション、およびAS＊の同時ディアサーションによって同定される。バスマスタは、DS＊をディアサーションすることによってデータトランザクションを一次的に妨害し得る。DS＊は、その使用を必要としないシステムに永久にアサートされ得る。EM−バス拡張によって、多重アドレスおよびデータバスが可能になるが、それらはＭ−バスのように強制ではない。Ｍ−バスのように、多重によってAD［0:63］を形成するときには、アドレス（およびAD［36:63］を形成する属性）は、AS＊と同時にアサートされ、データは、DS＊と同時にアサートされ得る。
EM−バス信号は、以下の表２において要約される：
0003599334.tif 000003
EXT欄においてＸと記される記号は、Ｍ−バス仕様ではなく、EM−バス仕様において存在する。Ｒ（再定義された）と記される記号は、Ｍ−バスにおいて記載されるが、このEM−バス仕様においては再定義およびエンハンスされる。DM（脱多重化された）と記される記号は、Ｍ−バスにおけるように、同一の機能定義を有するが、EM−バスにおけるデータ線と多重化される必要はない。DRC欄においてＸとして記される信号はすべて、DRAM制御器チップセットへの入力を必要とする。DRC欄において０と記される記号は、メモリシステムの様々なサブシステムにおいて必要とされ得るオプションである。
トランザクションのアドレスフェーズ中では、Ａ［0:35］は、トランザクションアドレスを含む。このアドレスは、AS＊中に有効である。さらに、AP［0:3］は、トランザクションアドレスの最低の32ビットのパリティを反映する。パリティは、Ａ［33:35］にはサポートされない。これらのパリティビットは、AS＊のアサーション中にのみ有効でなければならず、従って、最低の４つのデータパリティビットと多重化され得る。パリティの意味（すなわち、奇数／偶数およびイネーブル／ディスエーブル）は、パリティモードビット、PM［0:2］によって特定される。パリティは、表３に示されるように割当てられる。
0003599334.tif 000004
トランザクションのデータフェーズ中では、Ｄ［0:63］は、トランザクションの最低の64ビットを含む。個々のバイトイネーブルを特定するサイズビットは、トランザクション属性として特定される。データは、DS＊のアサーション中にのみ転送される。Ｄ［0:63］は、アドレスおよびトランザクション信号と多重化され、オリジナルのＭ−バス定義との互換性を維持する。バイト順序規則は、TYPEビットによって定義される。
トランザクションのデータフェーズ中では、Ｄ［64:127］は、トランザクションの上部64データビットを含む。個々のバイトイネーブルを特定するSIZEビットも、トランザクション属性として特定され、データは、再度、DS＊のアサーション中にのみ転送される。Ｄ［64:127］ビットがオプションであることに留意すること。バイト順序規則は、TYPEビットによって定義される。
トランザクションのデータフェーズ中では、DP［0:15］は、データバスのパリティを特定する。パリティの意味（すなわち、奇数／偶数およびイネーブル／ディスエーブル）は、パリティモードビット、PMD［0:2］によって特定される。これらのパリティビットは、DS＊のアサーション中にのみ有効でなければならない。従って、DP［0:3］は、AP［0:3］と多重化され得る。DP［0:15］は、表４および５によって示されるように割り当てられる。
0003599334.tif 000005
0003599334.tif 000006
Ｍ−バス仕様は、すべてのトランザクションのアドレスフェーズにおいて、MAD［36:63］として発生する多数のトランザクション属性を同定する。これに対して、EM−バス延長は、これらのトランザクション属性信号を分割し、それらをエンハンスメントとして特定する。TYPEおよびSIZEの定義は、SPARC以外のプロセッサプロトコルを扱えるように拡張される。Sparcプロセッサに関しては、TYPEおよびSIZEビットは、Ｍ−バス仕様におけるように、それらの解釈を保持する。IntelまたはMotorolaプロセッサに関しては、これらのビットは、各々のバスインターフェースの特異性を扱えるように再定義される。
TYPEおよびSIZEの解釈は、EM−バスIMDビットによって特定される。Ｍ−バス信号AD［0:63］、EM−バスＡ［0:35］およびトランザクション属性の関係は、以下の表６に定義される。
0003599334.tif 000007
これらのトランザクション属性はすべて、AS＊がアドレスフェーズにおいてアサートされる間有効である。
TYPEおよびSIZEの定義はまた、様々なプロセッサバス特性を扱えるように拡張される。これらの拡張された定義は、SPARC、i860、i486およびMotorola 68040、88000シリーズ、およびMIPS R3000およびR4000シリーズを含むプロセッサシステムをサポートする。
アドレスフェーズにおいて、TYPE［5:0］は、トランザクションタイプを特定する。TYPEビット（SPARC M−バス互換性または一般インターフェース）の解釈は、表７および８において示されるように、IMDビットによって決定される。
0003599334.tif 000008
0003599334.tif 000009
一般モード（IMD＝１）のTYPE［5:0］の各ビットの機能を、以下に説明する：
TYPE［０］は、読出しおよび書込みを同定する。０のとき、このビットは、トランザクションが読出しであることを示す。１のときには、このビットは、トランザクションが書込みであることを示す。
TYPE［１］は、連続または非連続バーストのようなバーストオーダを同定する。TYPE［１］＝０のとき、バーストオーダは、連続である。TYPE［１］＝１のとき、バーストオーダは、非連続である。幅Ｎバイト（Ｎ＝4,8または16）のシステムバスであるとすると、SIZE S＞Ｎ（ここで、Ｓ＝kN,k＝2i、ｉは、整数＝＞１、およびNk＜＝128バイト）のすべてのトランザクションがバーストを構成する。
TYPE［２］ビットは、二者択一の解釈を有する。TYPE［２］＝０のとき、バイトにおけるトランザクション長さは、SIZE［2:0］の値によって与えられる。TYPE［２］＝１のとき、トランザクション中にイネーブルされるバイトは、それらの各々のサイズビットが低いとアサートさせるときに特定される（例えば、SIZE［Ｎ］＊は、BYTE［Ｎ］がトランザクションに関与することを意味する）。詳細は、SIZE［7:0］の定義を参照のこと。
TYPE［３］は、小エンジアンおよび大エンジアンを特定する。プロセッサは、２つの方法のうちのいずれかで、バス上のBYTE 0の位置を定義し得る。BYTE 0がバス上の最低バイトとして発生するか（Ｄ［7:0］−エンジアン、TYPE［３］＝０）、またはBYTE 0は、バス上の最高バイトとして発生する（大エンジアン−Ｄ［M:M−７］、ここで、Ｍ＝Bw−1,Bwは、バス幅ビットであり、TYPE［３］＝１）。詳細は、SIZE［7:0］ビットの定義を参照のこと。
TYPE［４］は、書込みポスティングに関連する。TYPE［４］＝１のとき、書込みデータは、書込みfifoにポストされ、そこで、次の読出しが完了するまでとどまる。これは、ドラム読出しが完了した後まで、実際のドラム書込みを延期させるために使用され得、それによって、キャッシュ線フィルの速度が増加する。
TYPE［５］は、デフォルトバーストモードを特定する。TYPE［５］＝０のとき、トランザクションサイズは、SIZE［7:0］によって特定される（これは、TYPE［２］によって解釈される）。TYPE［５］＝１のとき、トランザクションサイズは、コマンドレジスタへプログラムされたデフォルトバーストサイズによって特定される。
SIZE［7:0］は、メモリシステムにデータトランザクションサイズを知らせるために備えられている。アドレスフェーズの間に、SIZE［2:0］は、バストランザクションの間に伝送されるバイト数を指定する。SIZE［7:3］は、バイトイネーブルされ、ミスアラインされたデータ伝送であって、i486および68040プロセッサと互換性のあるデータ伝送を与えるためにオリジナルのＭバス仕様に追加された。SIZEの解釈は表９〜13に示すように、TYPE［２］によって決定される。
0003599334.tif 000010
0003599334.tif 000011
バイトイネーブルとなったバイトのいかなる組み合せも同時にアサートされ得る。通常、プロセッサではバイトイネーブル信号が連続的（continguous）であることを必要とする。無効な組み合せと有効な組み合せとを区別するチェックは行われない。
0003599334.tif 000012
0003599334.tif 000013
0003599334.tif 000014
ID［3:0］。IDビット識別は２つの解釈を有している。IMD＝０の時、表14に示すように、ID解釈は厳密にＭ−バス互換性がある。そこで、IDフィールドは、ポートレジスタまたはその他のI/Oレジスタにアクセスするための、Ｍ−バスアドレス空間の範囲内で様々な構成空間を選択する。非Ｍ−バス適応で用いられた場合（IMD＝１）には、IDビットはアドレス信号と共に用いられ、バストランザクションの特性を規定し、I/Oレジスタまたはdramメモリを選択する。規定された一般的（非Ｍ−バス）動作を行うには、ID［3:0］と、表15に示した固定値とは適合していなければならない。
0003599334.tif 000015
0003599334.tif 000016
パリティモードビットPMD［0:2］は、パリティ計算操作アルゴリズムを指定し、パリティ計算操作に関連する信号を識別する。これらは、全システムバスサイクルの間有効である。これらのビットは表16に示すように規定される。
0003599334.tif 000017
DS＊は、トランザクションのデータフェーズの間にバスマスターによってアサートされる。データは伝送され、DS＊がアサートされる各サイクルの間BACK［0:2］＊は有効である。マスターは、DS＊を用いて、サイクル毎を基準としてスレーブの応答を制御（減速）させ得る。Ｍ−バスはDS＊信号を有していないことに注意されたい。
デフォルトのバースト長は、各トランザクションのアドレスフェーズの間にSIZE［0:3］によって指定される。BLST＊はバスマスターによって用いられて、デフォルトのバースト長が切り離され得、アサートされるサイクルの間にバストランザクションを早期に終了させる。BLST＊は、DS＊もアサートされているサイクルの間識別されるだけである。
DRPA＊は、バスマスターによって提供され、次のメインメモリアクセスが、前回のアクセスと同じDRAMのページで起こるということを示している。メインメモリサブシステムは、この信号を用いて、DRAMアレイへの不要なRASプリチャージを抑制し得る。この信号は、１つのプロセッサシステムの中でのみ用いられる。
BACK［0:2］＊は、Ｍ−バスのMRDY＊、MRTY＊およびMERR＊と同一である。以下の表17および18にその機能をまとめる。
0003599334.tif 000018
0003599334.tif 000019
3.DRAC構造
本発明による構造を有する、DRAMコントローラデバイス（DRAC）50の実施態様を図３に示す。すべてのバストランザクションは、データフェーズの後にアドレス／コントロールフェーズに分割されることを想起されたい。AS＊によって指定されるアドレス／コントロールフェーズの間、コントロール信号は、システムバスを越えてコントロール入力バッファ52を介してDRAC50内に伝送され、パイプラインレジスタ53に記憶される。さらに、アドレス信号AD［35:0］およびアドレスパリティ信号ADP［3:0］は、システムバスからアドレスおよびアドレスパリティ入力バッファ91を介してDRAC50内に伝送され、パイプラインレジスタ92内に同時にクロックされる。
また、アドレス／コントロールフェーズの間、アドレス信号AD［35:0］はトランザクションアドレスを有する。このアドレスは、AS＊のアサーションの間有効なままである。アドレスがDRAC50に入力された後、アドレスパリティは、アドレスパリティチェック回路95によってチェックされる。１パリティビットは、アドレス信号のバイト毎に計算され、アドレスパリティ信号ADP［3:0］のアドレスパリティ４ビットに対してチェックされる。ADP［3:0］は、トランザクションアドレスの最も低い32ビットのパリティを反映している。アドレスパリティは、任意に、データパリティと多重送信され得る。アドレスパリティは、AD［35:0］のビット［35:33］にはサポートされていない。パリティのセンス（つまり、偶数／奇数およびイネーブル／ディスエーブル）はPMDにより指定される。パリティ計算の特性はPMDにより各バスサイクルごとに指定される。
アドレスパリティ誤差が起こると、トランザクションは終了し、バスエラー信号BERRがアサートされる。アドレスバスパリティエラービットは、DRAC50の状態レジスタ76で設定される。BERRは、トランザクションのデータフェーズの間のバスパリティエラー状態を示す。この信号は、同期して（つまり、１クロックまたはそれ以上遅れて）アサートされ、エラーが起こった１クロック後に有効になり、クリアされるまで続く。信号はDRAC50のコマンドレジスタ73に適切なビットを書き込むことによってクリアされる。
システムバスからのすべての同期入力は、クロックの立ち上がり開始時に有効になると考えられる。同期制御入力のいくつかは、バスサイクルのアドレスフェーズの間にAS＊のアサーションによって有効になる。これら後者の制御入力には、バスタイプを識別するための信号IMD、データトランザクションタイプを指定するための信号TYPE、データトランザクションサイズを指定するための信号SIZEが含まれる。
本発明によると、DRAC50のアドレス経路および制御経路は、それぞれ分割され、キャッシュパージ動作がサポートされ得る。アドレス経路には、読み出しトランザクションのための読み出しアドレス経路（すべての標準Ｍ−バス読み出しトランザクションを含む）、および書込みアドレス経路が含まれる。さらに、書込みアドレス経路には、２つの連続した書込みトランザクションアドレスのうち、第一のアドレスのための第一経路、および、２つの連続した書込みトランザクションのうち、第一書込みトランザクションに続く、第二のアドレスのための第二経路が含まれる。書込みアドレスレジスタ112は、第二経路に備えられ、第二アドレス信号を保持する。プロセッサは、通常、アドレスが確認されるまでデータトランザクションアドレスを保持する機構は有していない、ということに言及しておこう。本発明のDRAC50の構成によって、より効率的なデータトランザクションが可能になる。制御経路には、通常および反射読み出し制御信号のための読み出し制御信号経路、および書込み制御信号経路が含まれる。書込み制御信号経路は、また、２つの連続した書込み制御信号のうち第一の信号のための第一経路、および２つの連続した書込み制御信号のうち、第一書込みトランザクションの直後に続く第二トランザクションに伴った第二の信号のための第二経路を含む。書込み制御レジスタ62は、第二経路に備えられ、第二制御信号を保持する。
マルチプレクサ63および113は、それぞれ、通常書込みおよびポストされた書込みアドレス／制御信号からの書込みアドレス／制御信号を選択するのに用いられる。選択された書込み制御信号および書込みアドレス信号は、それぞれ、書込み制御レジスタ65および書込みバーストカウンタ114に伝送される。読み出し制御信号および読み出しアドレス信号は、それぞれ、読み出し制御レジスタ64および読み出しバーストカウンタ116に記憶される。書込みおよび読み出し制御レジスタ64および65の内容は、リフレッシュ制御回路85からリフレッシュ制御信号と共に、制御ソースマルチプレクサ68によって選択される。制御ソースマルチプレクサ68から選択された信号は、状態およびタイミング制御ロジック72に伝送される。読み出しおよび書込みアドレスバーストカウンタ114および116の最上部からのアドレスは、アドレスソースマルチプレクサ121によって、リフレッシュ回路85のリフレッシュアドレスカウンタからのアドレスと共に多重伝送される。DRAM動作のためのアドレスは、これら３つのソースのうちの１つから起こる。特定のソースは、状態およびタイミング制御ロジック72によって決定される。書込みアドレスバーストカウンタ114は、書込みの間と、（１ワード以下のバイトの書込みである）読み出し改変書込みの間と、抑止DRAM書込みの間と、通常書込みから所有権サイクルの読み出しへの転換が可能となるポストされた書込みの間とにアドレスを供給する。読出しアドレスバーストカウンタ116は、通常読み出しの間と、反射読み出しの間とにアドレスを供給する。後者は、メインメモリへの読み出しデータの同期書込みを伴う、通常読み出しからコヒーレント読み出しへの変換である。
読み出しが行われ、ポストされた書込み信号がその前の書込み動作にアサートされると、アドレスパイプラインレジスタ92の内容は、コンパレータ108によって、書込みアドレスレジスタ112のポストされた書込みアドレスと比較される。２つのアドレスが合致すると、ポストされた書込みが読み出し動作を進める。それ以外の場合には、読み出しが終了した後に起こるポストされた書込みと共に即座に入力読み出しが起こる。アドレスバスの最も低い７ビットは、比較から除外される。従って、ポストされた書込みのバーストアドレススパンは、読み出しのバーストアドレススパンと重複する（あるいはこれを含む、あるいはこれに含まれる）一方、DRAM50とのコヒーレントは維持している。
アドレスマルチプレクサ121の出力は、行／列プリマルチプレクサおよび行／列アドレスマルチプレクサを有する、行／列マルチプレクサ125内に流入する。行／列プリマルチプレクサにおいて、アドレス信号は、アドレスブロックコンーパレータ105によって選択されるDRAM構造の内の、アクセスされたブロックにおけるDRAMチップのサイズに応じて、行アドレスと列アドレスに分割される。そして、分割されたアドレスは、RAS/CAS発生回路87の制御の下で、DRAMの実際のアドレスを発生する行／列アドレスマルチプレクサ125内に流入する。
書込みおよび読み出しアドレスカウンタ114および116は、それぞれ２つの重複する部分に分割される。各カウンタの下部はシステムバスへのバーストを制御する。各カウンタの上部はメインメモリへのバーストを制御する。さらに、各カウンタの下部は、アドレスビット２および３で重複し、DRAC50によって選択されたメモリ内のバンクまたは複数のバンクを指定するDSRDにおけるチャンネルを識別するのにこれらのビットが用いられる。カウンタのアドレス出力の解釈は、32−、64−または128−ビットなどのシステムバスのサイズと、32−または64−ビットなどのDSRDにおけるEDCの幅と、データトランザクションサイズ情報とに依存している。
バーストタイプトランザクションは以下のように規定される。Ｎバイト（Ｎ＝４、８または16）の幅のシステムバスを仮定すると、SIZE S＞Ｎのトランザクションであればいずれでもバーストを構成する（ここで、Ｓ＝kN、ｋ＝2i、ｉは整数＝＞１、かつNk＜＝128バイト）。アドレスの最も低いlog2Nビットである、Ａ［log2N−１］:0］のバーストの間、バスは０（アラインメント制約）に固定される。次のlog2kビットである、Ａ［（log2k＋log2N−１）：（log2N）］は、トランザクションのバーストカウンタを形成する。TYPEビットが、バーストのオーダーが連続であると示している時には、このlog2kビットのアドレスを連続的に増加することによって、連続したアドレスが発生される。すべてのlog2kビットが１であるアドレスに到達した後、カウンタはラップアラウンドして０になる。この場合、すべてのlog2kビットが低い。ハイオーダーのアドレスＡ［35:log2k＋log2N］は固定されたままである。
TYPE［１］＝１の場合、バーストカウンタは、Intelプロセッサの非連続特性に従って増加する。最も低いlog2Nビットは再び０（アラインメント制約）に固定される。次のlog2kビットである、Ａ［（log2k＋log2N−１）：（log2N）］が、トランザクションのバーストカウンタを形成する。これらのビットは、以下のように増加する。
An＋２    An＋１    An
An＋２    An＋１    An＊
An＋２    An＋１＊  An
An＋２    An＋１＊  An＊
An＋２＊  An＋１    An
An＋２＊  An＋１    An＊
An＋２＊  An＋１＊  An
An＋２＊  An＋１＊  An＊
本発明によるEMバスの実施態様において、TYPE［１］はバーストのオーダー、つまり、連続または非連続を表わす。
システムバーストが起こると、プログラムされたアドレスでデータ伝送が始まる。通常の動作の間に、システムバスバーストカウンタを、バースト長を法として増加することによって、連続したアドレスが発生される。カウンタのアドレスは、一定のプログラムされたバースト長の最高値に達するとラップアラウンドする。バーストは、プログラムされたバースト長の後に終了し、または、BLSTのアサーションと共に早期に終了し得る。バーストアドレスは、常に連続的に増加するわけではない。
Intel486プロセッサには、アドレスのための特定のバーストオーダーが必要である。このオーダーは、Intelバーストモードを指定することによってサポートされる。Intelの非連続オーダーを用いたバーストの間でさえ、カウンタは、バースト長によって指定されるアドレス境界の外側には増加しない。システムバースト読み出しおよび書込み伝送が、Ｎビットのバス幅（Ｎ＝32、64、または128）を用いるシステムのためにＮビットが配置された境界上で起こる。
DRAC50に、反射読み出しトランザクションおよびコヒーラント読み出しトランザクションを可能にする、出力読み出し要求を中止するよう指示するために、抑止ラインが提供されている。この信号は、マルチ処理環境におけるキャッシュブロックの所有者によってアサートされ、それによって、メインメモリアクセスが抑止されている間に、要求キャッシュにデータを供給し得る。この入力は、マルチ処理環境において用いられ、抑止DRAM読み出し動作を書込み動作に変換し、反射メモリを増加させる。スヌーピングキャッシュが、データの有効コピーを所有していると判断すると、バスを越えてデータを要求キャッシュに供給する。同時に、メインメモリが更新される。
プロセッサがマルチ処理環境にデータを書き込もうとすると、そのローカルキャッシュが、問題のデータラインの状況（キャッシュ可能か、書込み中、ヒットまたはミス）を判断せねばならない。キャッシュ可能なラインに書込み動作が起こった場合には、前もって同一のラインに改変され、有効なコピーのみを有する第二のスヌーピングキャッシュにヒットが起こり得る。DRAMコントローラは、スヌーピングキャッシュが要求キャッシュにデータを供給する時には、出力書込み動作を抑止する。データの有効コピーがスヌーピングキャッシュに存在しない場合には、DRAMへの書込み動作は抑止され、同じアドレスでの読み出し動作に変換され得る。
読み出しまたは書込み動作の間、スヌープウインドウがCASがアサートされるまで伸びる。これらの時間間隔は、その他の全てのDRAMタイミングと共にプログラム可能である。あるいは、システムバスのその他のすべてのデバイスがスヌープサイクルを終了するまでウインドウを伸ばすために、外部入力が提供されている。
メモリリフレッシュ要求は、メインメモリを有するメモリチップの密度と構造に応じて変化する。しかし、行は同一の時間間隔でリフレッシュされなければならない（この場合、読み出し動作の後に消去が行われる）。一定のブロックのすべてのバンクが、特定のアドレスで同時に消去される。
状態およびタイミング制御ロジック72は、データ伝送受信デバイス（DSRD）へのバストランザクションタイプ識別信号（FET）を発生するバス状態回路と、DRSDへのメモリサイクル識別信号（FEDRT）を発生するメモリ状態回路とを有している。
本発明によると、タイミング制御ロジック72は、システムセットアップ、および異なるシステム要求をサポートするための状態情報をプログラムするのに用いられる、いくつかのプログラム可能レジスタを有する。これらのプログラム可能レジスタがよりよく理解できるよう、以下の表を提供する。この表において、最初の欄はビット数を示す。第二の欄はビットの名称を示す。第三の欄はシステムリセットがアサートされた後にビットに指定された数値を示す。第四の欄は、レジスタバイトのアドレスの、最低の４ニブルを示す。最高アドレスは、IMDによって指定されるインターフェースモードに依存する。表に挙げたすべての数値は、２進法または16進法（ｈ）で示されている。全ての信号はアクティブハイである。
各レジスタ（Ｍ−バス指定ポートレジスタを除く）は、アドレス空間において16バイトの間隔で配され、システムバスの幅に関わらず、その内容は、データバスの最低の８ビットにアクセスできるようになっている。
プログラム可能（読み出しおよび書込み）コマンドレジスタ73は、たとえば、それぞれ表19から22に規定する４バイトを有している。
0003599334.tif 000020
RFD［6:0］は、リフレッシュカウンタ除数である。これらのビットはCLKを1MHzまで除算する。
CIEは、コヒーラント無効化確認イネーブルである。このビットがハイに設定されると、Ｍ−バスはコヒーラント無効化サイクルにイネーブルされる。タイプビットがこのサイクルを指定するアドレスフェーズの２クロック後に、BACKが発生される。異なる確認遅延を必要とするシステムでは、CIE＝０の設定をし、確認を行うのに外部PLDを用いなければならない。
0003599334.tif 000021
IEは、システムバスへの割り込みをイネーブルにする。
BLK［1:0］は、２進法でブロックの数を規定する。２進法の数値は、ブロックの数よりも少ないものであり、たとえば、０（ｈ）＝１ブロック、３（ｈ）＝４ブロックである。
ESは、各EDCパケットにおけるデータビット数、またはEDCサイズを指定する。０は32ビットを指定し、一方、１は64ビットを指定する。
SBSは、システムバスにおけるデータビットの数、あるいはシステムバスサイズを指定する。
00は、32ビットを指定し、一方01は64ビットを指定する。同様に、10は128ビットを指定する。
INITは、DRAMメモリおよびそのチェックビットの初期化を開始させる。
0003599334.tif 000022
DFB［1:0］は、キャッシュライン読み出し／書込みのデフォルトのバースト長を示す。これらのビットは、入力SIZEビットと同様の方法で規定される。適切なTYPEビットが、トランザクションのアドレスフェーズの間にアサートされると、バスは、このデフォルト長でバーストトランザクションを行う。これらは以下のように解釈される。
DFB［1:0］  デフォルトのバースト長
00          16バイト
01          32バイト
10          64バイト
11          128バイト
PLL［1:0］は、入力バスクロック（CLK）からMCLKへの乗算因子をプログラムする。PLLビットは以下のように規定される。
PLL［1:0］MCLK
00  使用せず
01  X2（40または50MHzバスクロック）
10  X3（33MHzバスクロック）
11  X4（25MHzバスクロック）
多重周波数クロック入力がバス周波数多重回路により供給され、それにより、システムバスクロック周波数に関わらずメモリ回路が10ns（但し、40MHzのバスに対しては12.5ns）に設定される。この結果は、プログラム可能タイミングレジスタ74により達成される。バス周波数多重回路は、好適にはメモリ制御チップ（図示しない）の内部に組み込まれる、フェーズロックループ（PLL）回路であり得る。この配置において、メモリタイミングは、外部的にではなく、内部的に制御される。
0003599334.tif 000023
ETMEは、DSRD内のエラーログFIFOがフルであることを示す割込みをイネーブルとする。
ERMWは、読出し−修正−書込みサイクルにおいて多重エラーが起こったことを示す割込みをイネーブルとする。
EMEWは、単一のワード内における２以上のエラーを示す割込みをイネーブルとする。
ESEWは、単一のワード内において単一の修正可能なエラーが起こったことを示す割込みをイネーブルとする。
EABPは、アドレスタイプのうちの１つがパリティエラーを有することを示す割込みをイネーブルとする。
EDBPは、データバイトのうちの１つがパリティエラーを有することを示す割込みをイネーブルとする。
EDCは、データパスにおける単一のビットエラーの修正をイネーブルとする。
CBERRは、システムバス上のBERRをアサートする条件をクリアにする。
プログラム可能（読出しおよび書込み）DRAMタイミングレジスタ74は、例えば、エンハンスされたタイミング分解におけるDRAM作動のために様々な制御信号を記憶する、８つのバイトを含む。これらのタイミング信号を、表23および24に定義する。
0003599334.tif 000024
0003599334.tif 000025
全てのタイミング値は、４ビット値に設定されている。時間間隔は、MCLKが100Mhz（40MHzのバスクロックに対しては12.5ns）で作動している場合、正確に10nsと指定されている。全てのタイミングは、tpの1/nに分解され得、その場合、ｎはPLL多重器である（例えば、tp＝20nsの場合に２のPLL多重器を有する50MHzのシステムは、10nsと指定されたDRAMタイミング分解を有し得る）。したがって、タイミング値が制約されない限り、DRAM読出しデータは、バスクロックの20nsの境界よりも、10nsの境界上のDSRDに到達し得る。
以下に、利用可能なプログラム可能時間間隔を定義する。
tARは、アドレス信号の開始とRASアサーションとの間の時間間隔をプログラムする。
tRAMは、RASの開始と多重化されたアドレスとの間の時間間隔をプログラムする。
tMACは、多重化されたアドレスとCASアサーションとの間の時間間隔をプログラムする。
tCPWは、CASパルス幅をプログラムする。
tRPRは、RASプリチャージ幅をプログラムする。
tCPは、CASプリチャージ幅をプログラムする。
tDCは、CASアサーションに対するFIFOデータ遅延をプログラムする。
tRINは、非反射抑止中のRAS完了をプログラムする。
tENRは、読出し上のFESTRBのイネーブル遅延をプログラムする。
tACCは、DRAMアクセス時間（DRAMチップによって決定される）をプログラムする。
tCLZは、出力LOW ZへのDRAM CAS（DRAMチップによって決定される）をプログラムする。
tPは、バスCLK期間をプログラムする。
本発明のDRAC 50はまた、プログラム可能（読出しおよび書込み）ブロック配置レジスタ102を備え、レジスタ102は、例えば、全体のメモリマップ内のDRAMのブロックの位置、および、DRAMの各ブロックのポピュレーションコードまたはサイズを記憶する、８つのバイトを含む。ブロック配置レジスタ102の配置を表25に示す。
0003599334.tif 000026
BA（Ｎ）［35:22］は、全体のメモリマップにおけるメモリのブロックＮの位置を指定する、ブロックＮ位置（０＜＝Ｎ＜＝３）を示す。ブロックＮは、入力されてくるアドレスビットＡ［35:22］がBA（Ｎ）［35:22］ビットに一致した時に選択される。BA（Ｎ）フィールド内のいかなるビットもマスクされ得、したがって、比較においては考慮されない。比較は、コマンドレジスタ内において初期のビットが設定されるまで、開始されない。
Ｐ（Ｎ）［1:0］は、ブロックＮの全バンクにインストールされたDRAMチップのサイズを指定する、ポピュレーションコード（０＜＝Ｎ＜＝３）を示す。ポピュレーションコードは以下のように定義される。
00  深さ256K（すなわち、256K x 1または256K x 4）
01  深さ1M（すなわち、1M x 1または1M x 4）
10  深さ4M（すなわち、4M x 1または4M x 4）
11  深さ16M（すなわち、16M x 1）
プログラム可能（読出しおよび書込み）ブロックマスクレジスタ104は、８つのバイトを有するブロック配置レジスタ102と連動する。ブロックマスクレジスタ104は、例えば、ブロック配置レジスタ102内の特定のビット（単数または複数）をマスクするために使用される。レジスタ102内のマスクされたビットは、メモリマップアドレスの比較において考慮されない。レジスタ104の配置を表26に示す。
0003599334.tif 000027
BM（Ｎ）［35:22］は、メモリマップアドレスの比較中にブロック配置レジスタ内の特定のビットが考慮されるか否かを示す、ブロックＮマスク（０＜＝Ｎ＜＝３）を意味する。マスクの定義を要約すると以下のようになる。
BM（Ｎ）［Ｘ］＝0:BA（Ｎ）［35:22］に対してAD［35:22］を比較する場合、ビットＸを無視する。
BM（Ｎ）［Ｘ］＝1:BA（Ｎ）［35:22］に対してAD［35:22］を比較する場合、ビットＸを含む。
アドレスブロック比較器105は、パイプラインレジスタ92とブロック配置レジスタ102とに連結されることにより、入力さてくるシステムバスアドレスと、配置レジスタ102内に記憶されている４つのブロックの位置とを比較する。一致が起こると、入力されてくるアドレスは書込みアドレスレジスタ112（DSRD内の書込みFIFOが前回の転送から、またはポストされた書込み中に占有されている場合にアドレスを保持する）、または、ステータス制御下の読出しまたは書込みバーストアドレスカウンタ114および116とタイミング制御ロジック72とに転送される。
本発明によると、DRAC 50はまた、DSRDからのステータス情報を記憶する、ステータスレジスタ76を備える。例えばこの情報は、書込みおよび読出しFIFOのステータス、および、作動中に起こったエラーのステータスを含む。ステータスレジスタ76は、ステータスおよびタイミング制御ロジック72が適切なチャネルを選択し、且つ、効果的な様式でシステムの割込みを設定することを可能にする。
DRAC 50は更に、２以上の読出し専用エラーログFIFOを含み得、且つ、ビットレジスタ（FEDC内部の）をチェックし得る。ビットレジスタは各々、EDCシンドロームビットをエラー条件に反映させるシンドロームビット、シンドロームFIFOエンプティフラグビット、および、前回の読出し作動中に存在したEDCチェックビットを反映するチェックビットを各々記憶する、４つのバイトを有し得る。
DRAC 50はまた、Ｍバスポートレジスタ（図示しない）を備え得、それにより、Ｍバス互換性素子のためのベンダコード、Ｍバス互換性素子のための訂正レベル、およびこのポートにおいて存在するベンダ特異性Ｍバス素子を指定する素子の番号を記憶する。DRAC 50は更に、DRAC 50内部の他のレジスタのアドレスを記憶する間接アドレスレジスタ、および最新のエラーのアドレスを記憶するエラー位置レジスタを備え得る。
初期電力投入後、DRAC 50をリセットまたは初期化するために、非対称入力RSTINが使用される。RSTIN信号は、少なくとも４つのクロックサイクルに対してアサートされる。RSTINがアサートされた後、コマンドレジスタ73およびステータスレジスタ76内の全ビットが所定の値に初期化される。RSTINがディアサートされた後、ホストプログラムが、レジスタ73にシステムの正しい値を付与し、且つ、初期化ビット（INIT）を設定する。RSTINは、DRAC 50およびDSRD内でCLKに同期される。メモリ制御器は、全RRAMをクリアすること、およびDSRD内のEDCビットを適切に初期化することにより、応答する。
非多重化システムバスは、アドレスラインのみによってDRAC 50にインターフェースする。DRAC 50内部の制御およびステータスレジスタは、システムのデータバスを介してアクセス可能でなければならない。DRAC 50の制御レジスタのプログラミングおよびステータスの読出しを容易にするために、FEDCとDRAC 50との間に更に８ビットのデータバスが供給される。全てのI/Oトランザクションは、バイト幅に基づき、FEDCを介してDRAC 50に送信される。
以下の３つの信号は、システムバスを制御するために用いられ、それにより、反射メモリの作動が完了しつつある間にFIFOのオーバーフローを防止する。DRAM制御器は、反射メモリシステム内に抑止を受信してから１クロックサイクル後に、BRをアサートすることにより、バスを要求する。システムのアービトレーションロジックはBGをアサートし、それにより、主要メモリ制御器へのバスの使用を認める。主要メモリ制御器は、BBにより応答し、それにより、電流バスマスタがBBに対する保持を開放するとすぐにバスビジー状態を示す。Ｍバス反射メモリシステム内において、BRはアービトレーションロジックにより最高の優先順位を与えられる。
他の選択可能プロトコルを用いることにより、他のシステムが反射メモリをインプリメントし得る。現在の作動が実行されている間に、多くのメモリが次のシステムバス作動をアービトレーションする（重複アービトレーション）。DRAM制御器がBRにより応答する時間を与えるために、反射メモリシステムは、抑止が起こってから１クロック後まで、重複アービトレーションサイクルを開始してはならない。
DRAC 50は、プログラム可能レジスタおよび他の関連するレジスタ内の情報、システムバスからの情報、そしてDSRDのステータス情報を使用することにより、その内部回路およびDSRDに様々な制御信号を供給する。このことは、DRAC 50が、特定のシステムバスおよびプロセッサバスの効率的なサポート、および異なるデータトランザクションの要求に対するサポートを提供することを可能にする。DSRDへの制御信号およびDSRDからのステータス応答は、DSRDインターフェースおよびI/Oバッファ回路128を介して送信される。これらの信号について以下に述べる。
DRAM制御信号は、RAS［3:0］、CAS［3:0］、およびWR［3:0］を含む。RAS［Ｎ］およびCAS［Ｎ］は、外部的にバッファされ、ブロック［Ｎ］に含まれる全てのDRAMメモリバンクに接続されている。書込みイネーブルラインWR［Ｍ］の各々は、外部的にバッファされ、全ての占有されたブロック内のバンク［Ｍ］に接続されている。
採用されている特定の制御アーキテクチャは、ビット幅に基づいて構成されたDRAMおよびニブル幅に基づいて構成されたDRAMを同一の様式で処理する。ビット幅DRAMが用いられる場合、データ入力およびデータ出力ピンは互いに接続されている。ニブル幅DRAMが用いられる場合、そのOEピンは常にアースされている（イネーブルされている）。その後、両タイプのDRAMとも、初期書込みサイクルモードを用いて書き込まれる。このモードは、CASのアサーションの前に、そのR/Wラインが適切なレベルにセットされていることを必要とする。
アドレスに関するRASおよびCAS信号の発生、およびそれらのパルス幅（プリチャージ幅を含む）は、DRAMタイミング制御レジスタ内に適切なビットをセットすることにより、プログラムされ得る。MCLKが100Mhzで作動している場合、これらの値は、10nsの分解にプログラムされ得る。
RAS/CAS信号およびDRACのアドレス信号は各々、RAS/CAS駆動器およびアドレス駆動器に送られる。RAS［3:0］およびCAS［3:0］は、RAS/CAS発生回路87によって生成され、全てのブロックに対するメモリのRASおよびCASタイミングパルスを含む。RAS［Ｎ］およびCAS［Ｎ］は、ブロックＮ内の全てのバンクに接続されている。アドレス信号は、メモリの16Mビットにスパンし得るメモリのために、12ビット多重化行／列アドレスに形成され得る。
4.FEDCユニット構成
本発明によると、メモリ制御器のデータ送信および受信素子（DSRD）は、好適には、複数のデータチャネルを有し、その各々が、FIFO/エラー検出および修正回路（FEDC 30）である。
図４は、本発明による構成を有する、メモリ制御器の一部であるFEDCユニット30の実施態様を示す。FEDCユニット30は、２群のFIFO/エラー検出および修正ロジックアレイ（FEDC）を含み、それにより、２つの32ビットデータチャネルを供給する。これらユニットのうちの２つは、32ビットまたは64ビットのシステムバスを効率的にサポートし得る。FEDC 30は、読出しおよび書込みデータパスを供給する。本実施態様において、FEDC 30は、システムバスにインターフェースする32ビットのデータバスおよび64ビットのデータバスを有し、64ビットのデータバスは更に、DRAMにインターフェースする２つの完全な32ビットデータパスに分割される。DRAM側の32ビットのデータバスは各々、７つのエラーチェックビットに連動する。本発明によると、32、64、および128ビットのシステムバスを効率的にサポートするために、４つのFEDCユニット30が接続され得る。
FEDCユニット30は、制御バッファ175および出力バッファ162を介してDRAC 50に連結され、それにより、DRAC 50からの制御信号を受信し、ステータス信号をDRAC 50に送信する。FEDユニット30はまた、入力および出力バッファアレイ130、162、168、169、170、172、および174を介してシステムバスとDRAMメモリとの間に連結され、それにより、システムバスへおよびシステムバスから、そして、DRAC 50の制御下にあるDRAMへおよびDRAMから、データを送信および受信する。
DSRDとシステムデータバスとの間の全てのデータフローは、バス幅に整合していると考えられる。システムバストランザクションがこれらの整合された境界を交差する時、プロセッサおよびキャッシュ制御器は、トランザクションを複数の作動に分割し、各々の部分に対するアドレスフェーズを発生させる。したがって、これらの誤配置されたトランザクションはバーストであり得ない。
メモリ制御器は、メモリ構成に依存して、所定のメモリ境界上のメモリにデータを記憶する。本実施態様において、メモリ一致は、幅128ビットである。４、８、または16バイトのバーストトランザクションは、16バイトの境界上で一致すると考えられる。この場合、メモリ境界は、幅128ビットのデータである。記憶境界に誤配置されたバーストトランザクションは、バーストの最初のサイクル中に、DSRDと主要メモリとの間において、４、８、または12バイトの転送を含む。更なるメモリが転送されると、メモリアドレスはバースト長内にラップされる。最終のデータ転送は、メモリ転送の最初のサイクル中に省略されたバンクを含む。誤配置の性質は、シーケンスまたはインテルのような、定義されたバースト順序に依存する。
本発明によると、FEDCユニット30は、２つの独立した書込みおよび読出しチャネルを形成する、２群のFEDCアレイを含む。各チャネルは、幅32ビットであり、且つ、メモリ内の１バンクにアクセスし得る。FEDCユニット30内の２つのチャネルまたはFEDCは、同時に２つのバンクにアクセスし得る。全ての書込みデータは、２つのチャネルのうちの１つにステアリングする。２つのチャネルのうちの１つを介したデータパスは、２つのチャネルのバスサイズおよび／またはステータスに依存して、DRAC 50からの制御信号により、データフェーズ中に選択される。バースト書込み中において、全てのデータがDRAMへの転送を蓄積し得るように、２つのチャネルは、交互に作動し得る。
各FEDCまたはデータチャネルは、通常の書込みトランザクション中に使用するための、書込みファーストインファーストアウトバッファ（書込みFIFO）145または147を含む。本発明の利点として、書込みFIFO 145または147もまた、ポストされた書込みトランザクション用に用いられる。ポストされた書込みトランザクションにおいては、記憶すべきデータが書込みFIFO 145または147内にポストされる。この機能は、DRAC 50内のアドレス／制御パスの、分割された構成により達成される。
各FEDCは更に、反射読出しトランザクション中の排他的使用のために、反射ファーストインファーストアウト部材（反射FIFO）146または148を備えている。反射読出しトランザクション中において、主要メモリを更新するためのコヒーレント読出しおよびコピーバックが同時に起こる。各FIFOは、異なる長さのデータバーストをサポートするために、32バイトの深さを有し得る。バスバースト作動は、完全な書込みFIFO深さまでサポートされる。この構成において、FEDCユニット30は、上記したようなDRAC 50のアドレス／制御パスの分割された構成と協働して、ポストされた書込みトランザクション、および、反射読出しトランザクションを可能にし、Ｍバスのレベル１およびレベル２の様々なトランザクションタイプをサポートする。
マルチプロセシング環境におけるオーナーシップ操作のために、書込みを放棄し、且つ、書込みを読みだしに変換するために、書込みFIFO 145および147がクリアされ、それにより、次の書込みサイクルの準備をする。DRAC 50は、FEDC素子30に特別なコマンドを与えることにより、書込みが抑止された時にFIFO 145および147をクリアする。
FIFO 145−148には、特定の制御信号もまた記憶される。これらの信号は、パリティステータス、バンク書込みステータス、およびバーストの最後のステータスを含む。書込み中に、これらのステータスビットおよびFIFOステータス（FIFOエンプティ）は、データフェーズクロックサイクル毎に、FEDCユニット30により、出力バッファ162を介してDRAC 50に報告される。DRAC 50は、このステータス情報を用いることにより、書込みトランザクションを完了する。
書込みトランザクション中において、システムバスデータは、適切な書込みFIFOに転送される前に、FEDCユニット30内部のシステムバスパイプラインレジスタ回路136に記憶される。バイト幅パリティは、レジスタ回路136からFIFOに転送される際に、パリティチェッキングロジック140により、データ上で計算される。このことは、システムバス上を、入力および出力バッファ174を介してFEDCユニット30に、データと同時に適用される、バスパリティに対して、選択的にチェックされる。パリティモードを決定するために、バスパリティモード信号（PMD）がシステムバスから供給される。パリティの計算は、システムバスバイトイネーブルにより認定される。データバスパリティエラーが発生すれば、バスエラー信号（BERR）がアサートされる。
FIFO 145−147または146−148および出力レジスタ回路193からのデータ、およびメモリチェックビットを初期化するために用いられた全てのゼロは、DRAC 50の制御下で多重化されるデータ多重化回路156または157に送られる。選択されたデータ信号は、エラー修正回路により使用される、７つの更なるビットを発生させる、書込み多項式発生回路（WPG）164または166に送られる。各FEDCまたはチャネルが32ビット幅のデータを処理するように配置されていれば、入力および出力バッファ168−169または170−172を介してチャネルから現れる単一のワードの幅は、39ビットである。
本発明によると、FEDCユニット30は、異なるデータ長を有する様々なデータトランザクションをサポートし、データトランザクションは、メモリのバンクのデータビット幅よりも狭いバイトトランザクションを含む。更に含まれるものは、メモリ境界以内の複数のワードトランザクション（１ブロックのメモリのデータ幅よりも狭いサブバーストトランザクション）、１ブロックのメモリのデータビット幅と同一の複数のワードトランザクション、および１ブロックのメモリのデータビット幅を超える複数のワードトランザクションである。
制御信号バッファ175からのバイトイネーブル信号は各々、レジスタ149−152に送信される。これらのイネーブル信号は、その後、バイト（単数または複数）の選択のために、多重化回路156および157に送信される。
１ブロックのメモリ中のバンクのデータ幅よりも狭い幅を有する書込み中に、DRAC 50は、読出し−修正−書込みサイクルを実行する。データはまず入力および出力バッファ168または170を介してメモリのバンクから読出され、パイプラインレジスタ回路179または180を介してパイプライン転送される。その後、読出しデータは、エラー検出および修正回路（EDC）185または188を介して、データ出力レジスタ回路193または194に送信される。EDC 185または188は、読出し−修正−書込みサイクル中に、読出しデータのエラーを検出および修正する。記憶すべきデータバスは、書込みまたは反射FIFO中でバッファされ、データ多重化回路156または157内のバイト選択信号の制御下においてレジスタ回路193または194からの古い読出しデータと結合される。その後、結合された書込みデータは、新しいチェックビットを発生させる、書込み多項式発生回路（WPG）164に送信される。修正された単一のワードは、最終的にDRAC 50からの適切な制御信号の制御下においてメモリに書込まれる。読出しデータにおいてエラーが発生する毎に、検出されたエラー情報は、読出しログFIFO（ログFIFO）200または201内に保存される。エラー情報は、いずれのビットが欠陥を有するかを決定するために用いられ得る。
データサブバーストの書き込みの間に、データはFEDCユニット30内へ通され、そこで、WPG164又は166がそのデータにチェックビットを追加する。メモリ内に１つのブロックが生成されるが、余分な長いワードの全てが書き込まれる訳ではない。オリジナルのサブバーストにおけるワードに対する書き込みストローブ及びデータ出力イネーブルのみがアサートされる。CASが、選択されたブロック全体に対してアサートされる。初期の書き込み周期を用いて、選択されたブロックの適切な部分へデータが書き込まれる。更新されない（書き込みがアサートされない）主メモリブロックの部分が、ダミー読み出し操作を受ける。このダミーデータは破棄される。
ブロックデータビット幅に等しい長さのバーストに対して、データワードがデータバス上を順次パイプラインされ、FEDCユニット30によって脱多重化される。全ての書き込みストローブがアサートされて、初期の書き込みサイクルと同時にブロック帯域幅内の全てのビットを更新する。
バースト長がメモリ境界を越えると、アサートされたブロックのRAS［ｘ］がローに維持され、CAS［ｘ］の再アサーションが順次起こって多数のメモリページを書き込む（つまり、ページモード型アクセスが起こる）。このトランザクションにおいて、アドレスがメモリページ境界に対して誤配置されることがある。これが起こると、書き込みFIFO145〜148に同時に現れるデータが同じメモリページへ行かないこともあり得る。FEDCユニット30から発出される書き込みストローブが各バンクに対応付けられる。内部DRAC50から生じる制御信号によって、書き込みストローブ及びFIFO状態が選択的にイネーブルとされ、書き込みFIFOが選択的にアンクロックされる（unclocked）。これが、長いバーストの中心部をメモリデータ境界へ実質的に再配置する。最終メモリページの書き込みストローブ、FIFO状態及びFIFOアンクロックが同様に選択的にイネーブルとされ、誤配置データの残りの主メモリへの格納を終了する。FIFO空き状態がバースト書き込みの途中で起こると、DRAC50が、より多くのFIFOデータを持って、主メモリへのバーストを終了する。DRAC50はバースト最終指示を受け取ると、アドレスフェーズの間にSIZEビットによって指定されたバースト長に関わらず、現在の周期が終了するとすぐにトランザクションが終了される。
バーストの途中でシステムバスデータパリティエラーが発生すると、パリティエラーよりも前のバースト転送部分からの書き込みFIFO145〜148内部の全てのデータが主メモリに格納される。パリティエラーを含むデータは、ブロック基準で無視される。言い換えると、ブロック内の１つ又はそれ以上のバイトがパリティエラーを含むときは常に、ブロック幅を有するワード全体が破棄される。パリティエラーを含むワードを破棄した後でも、FIFO145〜158は、破棄されたブロック以降に発生したバーストトランザクションの部分からの有効データを含むこともある。この残りのデータは、うまく記憶されている。割り込みが発生され、適当な状態ビットセットが（データパリティエラー割り込みがイネーブルされたとする）、パリティエラーが書き込みFIFO145〜148を通して伝播したことを示す。このエラーは、BERRアサーションの間にすでに予め生じているであろう。
読み出し操作の間、アクセスされたブロックの全てのビットが同時に読み出される。全てのビットがデータパイプラインレジスタ回路179及び180の中へ並列的にストローブされる。２つのチャネル中のデータは、エラー検出及び補正のためにEDC185及び188を通って同時に流れ、さらにデータアウトレジスタ回路193及び194へ流れる。各チャネル中の補正された又は未補正のデータは、各マルチプレクサ195及び196によって選択される。その後、適切なデータがデータアウトマルチプレクサ回路206によって選択され、入力及び出力バッファ130を介してシステムバスに供給される。データが入力及び出力バッファ174を通ってFEDCユニット30から出る際に、バイト幅のパリティがパリティ発生回路176によってデータに追加される。通常の条件下では、データは、補正を必要とせず、データアウトマルチプレクサ206を介してシステムバスへ与えられる。データが補正を必要とする場合、バースト中の全ての残りのデータと共にシステムバス確認が１クロック周期分だけ遅延される。バースト内の多数のワードが、単一のビットエラーを含む場合でも、正しくないデータはシステムバスには到達しない。
主メモリデータ境界を越える読み出しデータバーストの誤配置は、書き込み時と同様に完全にサポートされる。そのように誤配置されたトランザクションは、完全なメモリブロック読み出しから始まる。そのブロックの有理数のみがデータバス上に送られる。メモリアクセスは、１つ又はそれ以上の付加的な完全なブロックがシステムバスにわたって転送されるまで継続する。バーストの最終アクセスは、１つ又はそれ以上の未転送データバンクが残っている当初のブロックへ戻る。バーストライン長が主メモリの帯域幅を越える場合、DRAC50は選択されたブロックのRAS［ｘ］を維持し、CAS［ｘ］を再アサートして、次のブロックを読み出す（ページモード型アクセスが発生する）。
エラーがシステムアクセス又はスクラビング中に発生すると、検出されたエラー情報が、読み出しエラー記録FIFO200及び201に保存される。エラー情報はどのビットが欠陥であるかを決定するために用いられることができる。エラー記録FIFO200及び201はバスに対して規定される最も長いバースト転送の結果を格納するように設計される。エラー記録FIFO200及び201は、規定された最も長いバスバーストにおける連続エラーによっていっぱいになり得る。これが起こると、その後のエラーは記録されない。エラー記録FIFO200及び201は単一バーストからのエラーを捕らえるためにのみ用いられる。次のバーストの前に、それらはホストプロセッサによってクリアされるべきである。
状態マルチプレクサ160は、書き込み及び反射型読み出しFIFOからの状態ビット及びエラー検出回路186からの状態ビットを多重化するために設けられている。多重化された信号は出力バファ162を介してDRAC50へ送られる。
図５は、EDC回路185又は188の一例を示す。EDC185又は188は、読み出しデータを捕えてチェックビットを生成するために用いられる読み出し多項式発生器（RPG）220を備えている。シンドローム発生器222は、主メモリ及びRPG220からのチェックビットを比較する。２つのチェックビットが同じであれば、データ中にエラーは発生していない。比較の結果が２つのチェック信号の差を示す場合は、エラー検出器224がシンドロームをデコードしてエラーのタイプを識別する。適切なエラー状態ビットがDRAC50へ報告される。同様に、割り込みがプロセッサへ発生される。同時に、エラー位置検出器226はシンドローム発生器から信号を受け取り、エラー検出器226からのデコードされた信号に応答してエラーのビット位置を識別する32ビットワードを生成する。エラー補正器228では、これらのデコードされた32ビットが、EDCを通過しない32ビットデータと排他的論理和されて、欠陥ビット位置を反転する。エラーが起こると、シンドローム発生器からのエラー情報が、エラー記録FIFO200又は201へ送られる。
本発明によれば、FEDCユニット30は、集積回路（IC）とすることができる。広いバス帯域幅及びさらに狭い帯域幅を有するシステムバスをサポートするために、多数のICが並列に配置されてFEDC装置又はDSRDを形成することが可能である。
FEDCユニット30内の２つのチャネルの特定の構成は、本発明の原理を示すための一例に過ぎないことはもちろんである。FEDCユニット30は、単一チャネル又は多チャネルに構成することも可能である。さらに、FEDCユニット30の各チャネルも以下に論じるように、異なるデータビット処理能力を有することもある。
5.FEDCユニットの組み合わせ
本発明の重要な特徴の１つは、メモリ制御装置のDSRDが、異なるバスサイズ及びプロセッサシステムを効率的にサポートし、メモリソースを効率的に利用するように容易にセットアップされ得る複数のFEDCユニット30又はデータチャネルを備えていることである。これは、２つ又はそれ以上のFEDCユニット30のチップを組み合わせてFEDC装置を形成することによって達成される。
アドレスフェーズの間に、DRAC50は、アドレス／制御情報を解釈し、データフェーズの各周期の間に各FEDCユニット30の内部で適切なチャネル及びFIFOを選択する。チャネル選択は、バーストの長さ、バースト順序及びシステムバスサイズに依存する。書き込みトランザクションがデータバーストである場合、各FEDCユニット30内のチャネルは交互にクロックされる。つまり、各FEDCユニット30内部の一方のチャネルがデータフェーズの第１の周期上で選択され、他方のチャネルがデータフェーズの次の周期上で選択される。このプロセスは、128個のデータビットが蓄積されるか或いはバーストが終了するまで、入力されるシステムバスからのデータを脱多重化し、格納し続ける。このデータは、その後、DRAM50へ転送される。INH信号が反射型メモリ内でアサートされると、データは、適切な反射型FIFOへルートされる。
システムバス読み出しトランザクションの間、４×32ビットのデータ及び４×７チェックビット（全部で156ビット）が、DRAM50から並列に読み出される。各チャネルは、32ビットのデータを処理する。
図6A及び図6Bは、32ビット又は64ビットのシステムバスを効率的にサポートすることができるFEDC装置31の一例を示す。FEDC装置31は、２つのFEDCユニット32及び33を備えている。各ユニットは、２つのFEDCチャネル34〜35及び36〜37を有している。各チャネルは、32ビットデータを処理することが可能であり、主メモリ10の選択されたブロック12における１つのバンクにアクセスすることができる。FEDC装置31から主メモリのブロック１〜４への接続の一例が示されている。
書き込み及び読み出しバーストカウンタ114及び116からのアドレス信号の一部が、FEDCユニット及びチャンル番号を識別するために用いられる。その結果、データが、異なるデータ長を有するデータトランザクション内の適切な１つのバンク又は複数のバンクをアクセスすることができる。DRAC50は、適切なFEDCユニット及び適切なFEDCチャネルを選択するために選択信号を供給する。アドレス信号中の下位ビットＡ［3:0］及び32ビットシステムバス及び64ビットシステムバスに対するそれらの識別機能がそれぞれ、表28及び表29に挙げられている。
0003599334.tif 000028
0003599334.tif 000029
32ビット及び64ビットのシステムバスに対して、A2＝０はFEDCユニット32を識別し、A2＝１はFEDCユニット33を識別する。A3＝０はチャネル34及び36を識別し、A3＝１はチャネル35及び37を識別する。32ビットバスシステムにおいて、32ビット又はそれ以上のシステムバストランザクションの間、Ａ［1:0］が無視されて全てのバイトがイネーブルとされることができる。64ビットバスシステムにおいて、64又はそれ以上のシステムバストランザクションの間、Ａ［2:0］が無視されて全てのバイトがイネーブルとされることができる。
図6Cは、４つのFEDCユニット39〜42を備えており、128ビットシステムバスをサポートするFEDC装置38を示している。各FEDCユニットは32ビットのデータを処理することができる。Ａ［3:0］の識別機能は表30に挙げられている。
0003599334.tif 000030
この実施例において、A2及びA3の組み合わせは、FEDCユニット39〜42のうち１つを選択するために用いられている。A3＝０及びA2＝０はFEDCユニット39を識別する。A3＝０及びA2＝１はFEDCユニット40を識別する。A3＝１及びA2＝０はFEDCユニット41を識別する。A3＝１及びA2＝１はFEDCユニット42を識別する。128ビット又はそれ以上のシステムバストランザクションの間、Ａ［3:0］が無視されて全てのバイトがイネーブルとされる。
図6D及び図6Eは、２つのFEDCユニット44及び45を備えており64ビット又は128ビットのシステムバス又はそれよりも小さいシステムバスをサポートするFEDC装置43の他の実施例を示している。この実施例において、各FEDCユニット44又は45は、64ビットデータを処理することができる１つのFEDC又は１つのFEDCチャネルのみを備えている。A3＝０はFEDCユニット44を識別し、A3＝１はFEDCユニット45を識別する。図6Dに示されるような64ビットシステムに対して、64ビット又はそれ以上のシステムトランザクションの間、Ａ［2:0］が無視されて、全てのバイトがイネーブルとされる。図6Eに示されるような128ビットシステムバスに対して、128ビット又はそれ以上のシステムトランザクションの間、Ａ［3:0］が無視されて、全てのバイトがイネーブルとされる。
6.多重処理サポート
DRAM制御装置は多重処理環境のための完全なサポートを有している。読み出し操作は、スヌーピングキャッシュが要求するキャッシュへデータを供給する場合に、INHのアサーションによって抑止される。TRC入力がアサートされると、これらの読み出しが反射的であると考えられ、バス上を転送されるデータが反射型書き込みFIFOによって捕らえられる。入力されるBACK信号がDRAC50によって用いられて、FEDCのためにFEDSを生成して、データを反射型書き込みFIFOへストローブする。データがDRAMへ書き込まれるまで、BR信号がDRAM制御装置によってアサートされる。この信号は、以降の読み出しを禁止するために用いられることができる（反射型書き込みFIFOが空になるまで反射型であり得る）。この禁止は２つの方法のうち一方によって発生することができる。転送が完了するまでBR信号が、多重処理バスアービトレーション論理の最高優先順位の要求に他のホストをオフとさせることが可能であるか、或いはスヌーピングキャッシュがバス転送（例えば、自身のデータストローブ）の速度を落とす機構を有することもあるかいずれかである。
書き込み周期の間、INH信号は書き込みをオーナーシップに対する読み出しに変えることによって書き込みを打ち切るために用いられ得る。スヌーピングキャッシュが要求されたライン上のヒットを報告しない場合、システムは、TRCをアサートして、DRAMは打ち切られた書き込みを読み出しに変換する。
DRAM制御装置のアーキテクチャは、多重処理システムにおける全てのプロセッサが主メモリに記憶されるキャッシュライン上の状態と同じであることを必要とする。プロセッサＡからの操作を通る書き込み（キャッシュ不可能）から得られるデータを、スヌーピングプロセッサＢのキャッシュからの修正されたライン（キャッシュ可能）に併合するための準備はされない。
転送がうまく抑止されるべきであれば、データがメモリへ／から転送される前にINH及びTRCがDRAM制御装置へ到着する。メモリ転送を制御するデータストローブの位置は、DRAMタイミングの残りと共にプログラムされることができる。或いは、転送はSNW入力（スヌープウインドウ）を延長することによって配置されることができる。スヌープウインドウを必要としないシステムはSNW信号を永久に非アサートとする。
7.DRACとFEDC装置との間の協同
データトランザクションの間、DRAC50、及び特にDRAC50の状態及びタイミング制御論理72が、FEDC30への多くの制御信号を発生する。これらの制御信号は、以下のパラグラフで論じられる。
トランザクションのアドレスフェーズの間、メモリ動作の認識の後で、DRAC50は、コマンドを解釈して、制御情報をFEDC30へ送る。データフェーズの間、これらの制御信号はDRAC50によって更新され、FEDC30がDRAC50への状態信号に応答し、さらに、DRAC50はシステムバスにわたって複合確認信号に応答する。
例えば、DRAC50によって発生される制御信号は、FIFOトランザクションストローブ信号（FEDS）、動作中の参与のために１つ又はそれ以上のFEDCを選択するFEDCアドレス又はチップ選択信号（FECS）、及びFEDCユニット又はI/Oパスにおける２つのFEDCのうち一方を選択するためのFEDCアドレス信号（FEA）を含んでいる。付加的な信号は、FEDCトランザクション型信号（FET）、FEDCバイトイネーブル信号（FEBE）、及びDRAM周期型信号（FEDRT）を含んでいる。最終的に、DRAC50は、長いバーストストローブイネーブル信号（FESTEN）、FEDC読み出しストローブ信号（FESTRB）、及びI/Oデータイネーブル信号（IODTA）を発生する。
FEDSは、FEDCのFIFOSへの全てのトランザクションの間、データストローブとして働く。
FECSは、個々のFEDCユニットを選択しイネーブルとするために用いられる。それは、データトランザクションにおける参与のために１つ又はそれ以上のFEDCを選択する。
FEAは、特定のバストランザクションを規定するためにFETと共に用いられる。メモリアクセスの間、FEAが各FEDCユニット内のFEDCを選択する。メモリ書き込み上で、FEAは適当な１つのチャネル又は複数のチャネルを、データ長及びバスサイズに応じて選択する。メモリ読み出し上で、FEAはシステムバス上へ正しいデータワードをイネーブルとする。
例えば、長いバーストの書き込みの間、FEAは各FEDCユニット内の１つのチャネルを選択してメモリ境界上のバーストデータを蓄積する。さらに、FEAは各ユニットにおける他方のチャネルを選択してその後のバーストデータを蓄積する。各FEDCユニットにおけるチャネルは、バーストデータがメモリ内に効率的に格納され得るように、交互に配されている。
FETはFEAと共に、トランザクションの性質を指定する。例えば、DRAM読み出し／書き込み動作の間、FETは、読み出しデータ、書き込みデータ、反射型書き込み、クリア書き込みのFIFOを含み得るバストランザクションタイプを規定する。システムバスI/O動作の間、FETビットはDRAC50からFEDC30へのI/Oデータパスを制御するために用いられる。これらのビットはまた、DRAC50におけるI/Oレジスタの読み出し及びFEDC30におけるシンドローム及びチェックビットの読み出しを、FEDC30におけるＭバスポートレジスタの読み出しと共に制御する。
FEBEビットはトランザクションサイズのバージョンとして解釈される。FEBEビットは、多くのFEDC中に分布し、SIZEにおいて、及びトランザクションの長さと共に、個々のバスバイトイネーブルを反射する。これらの信号は、SIZEビットと同一となるようにデコードされる。
FEDCTは、書き込みEDCチェックビット、EDCを有する書き込み、INIT  DRAM及びチェックビット、EDCを有する反射型書き込み、読み出し未補正パス読み出し補正パス読み出しシンドロームFIFOを含む適切なメモリ周期を識別するために用いられる。
FESTENビットは、128ビット境界と交差するメモリバースト転送をサポートするために用いられる。この信号は、FESTRBに資格を与え、32ビット基準でメモリによって返送される状態ビットを有効とするために用いられる。
FESTRBは、メモリ読み出し動作の間は読み出しデータストローブとして、及びメモリ書き込み動作の間はFIFOアンクロック信号として働く。それは、FEDC読み出しデータパイプラインレジスタ177〜180にデータを格納するために用いられる。書き込みの間、この信号はDRAC50によってアサートされて、適切な書き込みFIFOからの次のデータをアクセスする。
IODTAビットは、FEDC30とレジスタ内部DRAC50との間でデータを運ぶ。それらは、I/O動作の間のみ用いられる。メモリ動作の間は、それらは禁止とされる。
FEDCユニット30はまた、DRAC50へ送り返される信号（FEST）を発生して、それ又はトランザクションの状態を知らせる。各FEDCユニット30はある特定のビットをDRAC50へ与える。全てのFEDCユニットが、DRAC入力で接続されるそれぞれのFEST信号を有する。一実施例において、状態情報は、補正され得ないデータエラー（UNC）、２つのビットデータエラー（DBIT）、信号ビットデータエラー（SBIT）、シンドロームFIFOエンプティ（EFE）、及びシンドロームFIFOフル（EFF）を有している。付加的な信号は、早まって終了されたバーストにおける最後の転送である現在のFIFOデータ（BLST）、データパリティエラー（DPE）、現在エンプティであるデータFIFOチャネル０（DFE0）、現在エンプティであるデータFIFOチャネル１（DFE1）、現在エンプティである反射型データFIFOチャネル０（RFE0）、エンプティである反射型データFIFOチャネル１（RFE1）を有している。これらの信号は異なるメモリ周期に対応付けられる。
8.リフレッシュ動作
リフレッシュ要求は、システム中のDRAMチップの密度及び組織によって異なる。しかしながら、行は、同一時間間隔で（およそ16μｓごとに）リフレッシュされなくてはならない（この場合、読み出し動作の後スクラビングが行われる）。リフレッシュ要求は、DRAC50のリフレッシュ回路83の一部である２つの縦続接続されたカウンタ（タイマ）によって発生される。プログラム可能な７ビットカウンタがCLKを分割して、1MHzのクロック信号を生成する。このクロックはさらに４ビットの15を法とするカウンタによって分割され、15usecごとにリフレッシュ要求を発生する。これらのリフレッシュ要求はリフレッシュ回路83におけるリフレッシュ状態制御回路によってメモリ要求に同期してアービトレートされる。システムバス要求はリフレッシュ要求にわたって優先順位を受け取るが、リフレッシュは他のバス要求が発生し得る前に挿入される。
リフレッシュ／初期化アドレスカウンタは、DRAC50のリフレッシュ回路83の一部であり、アドレスソースマルチプレクサ121へ接続される。このカウンタはリフレッシュ要求毎に１行分だけ進められる。列アドレスはリフレッシュアドレスの最上位から二番目の位置を形成する。全ての行がリフレッシュされ、同一の列アドレスでスクラブされた後、列カウンタは進んで、全ての行が、次の列アドレスでリフレッシュされる。行及び列アドレスカウンタはそれぞれ12ビット長のスパニング16Mビットである。
所定ブロックの全ての４つのバンクは、特定のアドレスで同時にスクラブされる。FEDC50内の４つのエラー補正チャネルが並列に用いられる。４つのDRAMブロックのうち１つがスクラブされている間、他の３つのブロックは通常リフレッシュを受けている。２ビットスクラブブロックカウンタは、次のブロックがスクラブされ得るように特定ブロックの全ての行及び列がリフレッシュされた後に進む。スクラビングの間にエラーが検出されると、補正アドレスがリフレッシュアドレスカウンタからエラー位置レジスタへコピーされる。読み出し動作の間、データは常にシステムバスで補正される（EDCがイネーブルである場合）。エラーが発生すると、補正されたデータはメモリアレイへは書き込まれない。データはスクラビング周期の間にのみDRAM内部で補正される。リフレッシュ周期（つまり、エラーチェックのための読み出し）の間にエラーが発生すると、スクラブ周期（つまり、エラーを補正するための読み出し修正書き込み）に変えられる。
メモリの各ブロックが異なるサイズのDRAM構成要素で占められているが、所定ブロック内の全てのバンクは同一サイズ装置でなくてはならない。簡単のため、リフレッシュアドレスカウンタは各ブロックを最大容量（16Mビット）のDRAMSであるかのように処理する。より小さいメモリをリフレッシュする場合、同一アドレス位置が、カウンタが次のロケーションに対して進む前に複数回スクラブされる。スクラブ繰り返しカウントは以下のように示される。
Ｒ＝2(12-M)
ここで、Ｒはこの式における繰り返しカウントであり、Ｍはより小さいメモリサイズの平方根のlog2である。
本発明の好ましい実施例が示され説明されたが、本発明の精神及び範囲を越えずに多くの修正例が可能であることが当業者には明かである。例えば、メモリは異なる数のブロックを有するように構成されることもできる。メモリシステム又は原理はＭバスのかわりにシステムバスと共に用いられることもできる。FEDC30は異なる数のチャネルを用いて構成されることが可能であり、チャネルデータ幅もまたシステム要求に応じて変えることができる。
【図１Ａ】
0003599334.tif 000031
【図１Ｂ】
0003599334.tif 000032
【図１Ｃ】
0003599334.tif 000033
【図２】
0003599334.tif 000034
【図３】
0003599334.tif 000035
【図４】
0003599334.tif 000036
【図５】
0003599334.tif 000037
【図６Ａ】
0003599334.tif 000038
【図６Ｃ】
0003599334.tif 000039
【図６Ｂ】
0003599334.tif 000040
【図６Ｄ】
0003599334.tif 000041
【図６Ｅ】
0003599334.tif 000042