(57)【要約】      （修正有）【課題】ＲＡＩＤシステムの信頼性を維持しつつ、同時にその速度を高めるシステムおよび技法を提供する。【解決手段】動作中にＸＯＲを実行する高性能データ経路を有する。第１メモリを第１バスに接続し、第１バスに選択的に結合される第２バスに、第２メモリを接続する。ＸＯＲを実行するロジックは、バッファ内のデータと、メモリの一方から他方のメモリに受け渡されるデータとのＸＯＲ演算を行うために、第１バスおよび第２バスに接続するように切り替えることができる。結果をバッファ内に置換し、連続的なＸＯＲ演算を可能とする。【選択図】図１
2005032265.tif 000002
【特許請求の範囲】
【請求項１】
ディスクのアレイに対してデータを読み出し及び書き込むための高性能データ経路であって、
第１バスと、
前記第１バスに選択的に接続され、前記第１バスと第２バスとからなる拡張バスを形成する第２バスと、
前記第１バス上のホスト側メモリと、
前記第２バス上のディスク側メモリと、
前記ディスクのアレイに対する読み出し操作又は書き込み操作のいづれの操作においても、前記拡張バスに沿って前記ホスト側およびディスク側メモリ間で受け渡される対応するデータの連続的ＸＯＲ演算を行い、該ＸＯＲ演算の結果を得るように、前記第１および第２バスに切り替え自在に接続可能なＸＯＲエンジンと、
から成ることを特徴とする高性能データ経路。
【請求項２】
請求項１記載のデータ経路であって、更に、前記ホスト側およびディスク側メモリ間で受け渡されるデータを受け取るように切り替え自在に接続されると共に、前記ＸＯＲエンジンに接続されたバッファを備え、前記バッファ内のデータを、前記ＸＯＲエンジンからの、前記ホスト側およびディスク側メモリ間で受け渡されるデータと前記バッファ内のデータとのＸＯＲ演算の結果で置換することを特徴とするデータ経路。
【請求項３】
請求項２記載のデータ経路において、前記バッファがＦＩＦＯを備えることを特徴とするデータ経路。
【請求項４】
請求項１記載のデータ経路であって、前記データ経路はホストと共に用いるためのものであり、更に、前記第１バスに結合され、前記第１バスを前記ホストにインターフェースするインターフェースを備えることを特徴とするデータ経路。
【請求項５】
請求項１記載のデータ経路であって、前記データ経路はディスクアレイと共に用いるためのものであり、更に、前記第２バスに結合され、前記第２バスを前記ディスクアレイにインターフェースするインターフェースを備えることを特徴とするデータ経路。
【請求項６】
請求項４記載のデータ経路において、前記ホスト側メモリが、書き込み用データをステージし、キャッシュとして機能することを特徴とするデータ経路。
【請求項７】
請求項５記載のデータ経路において、前記ディスク側メモリが、読み出しの間に取り出されたデータをステージし、キャッシュとして機能することを特徴とするデータ経路。
【請求項８】
請求項１記載のデータ経路であって、更に、前記第１バスに接続され、前記第１バスを前記第２バスおよび前記ＸＯＲエンジンから分離させるスイッチを備えることを特徴とするデータ経路。
【請求項９】
請求項８記載のデータ経路であって、更に、前記第２バスに接続され、前記第２バスを前記第１バスおよび前記ＸＯＲエンジンから分離させるスイッチを備えることを特徴とするデータ経路。
【請求項１０】
ディスクのアレイに対してデータを読み出し及び書き込むための高性能データ経路であって、
第１バスと、
前記第１バスに選択的に結合される第２バスと、
前記第１バス上のホスト側メモリと、
前記第２バス上のディスク側メモリと、
前記第１バスおよび前記第２バスに切り替え自在に接続可能なＦＩＦＯと、
前記ＦＩＦＯに結合されると共に、前記ディスクのアレイに対する読み出し操作又は書き込み操作のいづれの操作においても、前記第１および第２バスに沿って前記ホスト側およびディスク側メモリ間で受け渡されるデータと、前記ＦＩＦＯ内のデータとのＸＯＲ演算を行い、該ＸＯＲ演算の結果を前記ＦＩＦＯに入力可能とするように、前記第１および第２バスに切り替え自在に接続可能なＸＯＲロジックと、
前記第１バスに接続され、前記第１バスを前記第２バス及び前記ＸＯＲロジックから分離するスイッチと、
から成ることを特徴とする高性能データ経路。
【請求項１１】
請求項１０記載のデータ経路であって、前記データ経路はホストと共に用いるためのものであり、更に、前記第１バスに結合され、前記第１バスを前記ホストにインターフェースするインターフェースを備えることを特徴とするデータ経路。
【請求項１２】
請求項１０記載のデータ経路であって、前記データ経路はディスクアレイと共に用いるためのものであり、更に、前記第２バスに結合され、前記第２バスを前記ディスクアレイにインターフェースするインターフェースを備えることを特徴とするデータ経路。
【請求項１３】
請求項１１記載のデータ経路において、前記ホスト側メモリが、書き込み用データをステージし、キャッシュとして機能することを特徴とするデータ経路。
【請求項１４】
請求項１２記載のデータ経路において、前記ディスク側メモリが、読み出しの間に取り出されたデータをステージし、キャッシュとして機能することを特徴とするデータ経路。
【請求項１５】
請求項１０記載のデータ経路であって、更に、前記第２バスに接続され、前記第２バスを前記第１バスおよび前記ＸＯＲロジックから分離させるスイッチを備えることを特徴とするデータ経路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムに用いる可用性の高いディスク・アレイに関し、更に特定すれば、ディスク・アクセス動作中、容認可能な信頼性のあるスループットを維持しつつ、有効性およびエラーのチェック機能を提供する高性能データ経路に関するものである。
【背景技術】
【０００２】
多くのシステムおよびその用途において、Ｉ／Ｏレベルに隘路が見られる。用途には、そのデータ記憶装置に対して増々高速化および帯域の拡大を要求しつつあるものがある。速度に加えて、ビデオ・オン・デマンド（ＶＯＤ：Video on Demand）のような用途では、速度および間隔の双方に関してそのディスク・アクセスがタイムリーであることが必要である。即ち、ＶＯＤは、中断のない広帯域を要件とする。具体的には、ＶＯＤに要求される速度は、中断なく維持され、中断のないムービー・クリップが得られるようにしなければならない。
【０００３】
高可用性および高信頼性を備えたディスク・アレイ・システムが開発されている。即ち、安価なディスクの冗長アレイ（ＲＡＩＤ：Redundant Array of Inexpensive Disks）として知られているシステムは、多数のディスクならびにデータ分配および訂正技法の使用により、ディスク障害の回復を図る。しかしながら、信頼性を高める技法は、Ｉ／Ｏ動作の低速化を招く場合が多い。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ＲＡＩＤシステムの信頼性を維持しつつ、同時にその速度を高めるシステムおよび技法を考案することが望ましい。
【課題を解決するための手段】
【０００５】
本発明は、特にＲＡＩＤコントローラにおいて使用するための高性能データ経路を対象とする。高性能データ経路は、ＸＯＲに基づくパリティ・システムを実装するディスクのアレイに対してデータの読み書きを行う方法の高速化を可能にする。高性能データ経路は、切り替え自在に相互接続されている第１バスおよび第２バスを含む。第１メモリが第１バス上に位置し、第２メモリが第２バス上に位置する。ＸＯＲエンジンが、第１および第２バスに切り替え自在に接続可能となっている。ＸＯＲエンジンを用いて、第１および第２バスを介して第１および第２メモリ間で受け渡しされるデータをバッファ内のデータとＸＯＲ演算を行い、結果を再度バッファに戻す。２つのメモリの内、一方をホスト側メモリと呼び、他方をディスク側メモリと呼ぶ。ホスト側メモリは、書き込み用データをステージし、ディスク側メモリは、ディスクから受け取ったデータをステージして読み出しを完了する。また、２つのメモリはキャッシュとして用いることができるという利点もある。
【０００６】
高性能データ経路は、ディスクの冗長アレイに対するデータの読み出しおよび書き込み双方を実行する際に有用である。ディスク群は相互に関連付けられており、当該ディスクの１つのセクタが、群内の他のディスクの各々のセクタに対応する。群内のディスクの１つのセクタは、対応するデータ・セクタ内の対応する複数のワードのＸＯＲ演算した結果から成るパリティを保持する。高性能データ経路を通じてディスクからの読み出しを実行する場合、動作中に対応するワードのＸＯＲを演算する。即ち、データがＸＯＲエンジンを通過する際にＸＯＲを演算する。これを利用すると、全てのディスクが読み出しに応答し終わる前に、データをホスト・コンピュータに送達することが可能となる。最終ディスクからの欠落したデータは、ＸＯＲエンジンにおいて、本質的に動作時に再生される。また、データはホスト側メモリ内のステージ領域から、高性能データ経路内に別個に備えられたディスク側メモリに移動するので、これらのＸＯＲを同時にＸＯＲエンジン内で演算するため、ディスクに対する書き込み動作も高速化する。このように、ホスト側メモリからディスク側メモリへのデータ移動の完了時に、ＸＯＲバッファは、パリティ・ディスクに移動させるための、ＸＯＲ演算して得たパリティを含む。
【０００７】
ＤＭＡがＸＯＲエンジンを制御し、更に追加の機能性を与えることもできる。例えば、ＤＭＡは、書き込むデータに対するチェックサムを作成したり、読み出すデータのチェックサムをチェックするために用いることもできる。動作時に処理することにより、ＤＭＡおよびＸＯＲ動作は、性能低下を招くことなく、完了するという利点がある。
【０００８】
本発明のその他の目的および利点は、図面と関連付けた以下の説明の間に明らかになろう。
【発明を実施するための最良の形態】
【０００９】
これより、図１に示すＲＡＩＤコントローラに関連付けて、本発明の高性能データ経路の説明を行う。ＲＡＩＤコントローラは、ディスク・アレイとホスト・コンピュータとの間のＩ／Ｏ動作を監視する。ディスク上のデータは、例えば、ＲＡＩＤ３またはＲＡＩＤ５のようなＲＡＩＤアルゴリズムにしたがって配列されている。この好適な実施形態のＲＡＩＤコントローラは、ファイバ・チャネルと共に用いるために実装されている。ファイバ・チャネル・プロトコルは、ディスク・アレイとのシステム通信のために標準化された。ホスト側ファイバ・チャネル・コントローラ１２が、ＲＡＩＤコントローラのホスト端に備えられ、ホスト・コンピュータとインターフェースする。ハブ１４によって、２つ以上のホストを、ホスト側ファイバ・チャネル・コントローラ１２に接続することができる。ホスト側ファイバ・チャネル・コントローラはドライバ・ソフトウエアと共に、ホスト側ファイバ・チャネル・プロトコルを実装する。ホスト側ファイバ・チャネル・コントローラは、それ自体と付随するメモリ・システムとの間で２種類のデータ、即ち、制御データおよびユーザ・ディスク・データを移動させる。制御データは、帯域幅要件が比較的緩く、ユーザ・ディスク・データは、帯域幅要件が比較的厳しい。本発明の高性能データ経路は、ユーザ・ディスク・データを伴う動作を高速化するように設計されている。
【００１０】
制御データは、制御構造、少量のＦＣＰデータ（モード・ページ等）、およびファイバ・チャネル・データ（ログイン等）から成る。これらはいずれも頻繁にはアクセスされないデータである。このデータの帯域幅要件は比較的緩く、このデータを読み書きするプロセッサの要件は比較的厳しい。その結果、制御データを全て共有メモリ・システムに格納し、ジョブ・プロセッサ２４もそれ自体の処理用ソフトウエアのためにこれを用いる。ホスト側ファイバ・チャネル・コントローラ１２およびディスク側ファイバ・チャネル・コントローラ１６に対する制御データのフェッチは全て、双方向共、標準的なＰＣＩバスである上位バス２０を通じて行われる。
【００１１】
ディスク・データは、ホストとディスクとの間を通過するデータである。このデータを読み書きする際には、ジョブ・プロセッサ２４は不要である。このデータには、ＸＯＲを演算し、チェックサムを計算する必要がある。データのワードと、パリティ・セクタ内の対応するワードとのＸＯＲ演算を行い、更新したパリティを得る。セクタに対するチェックサムは、当該セクタ内のディスク・データ・ワード全てについて一括してＸＯＲを演算することによって決定する。ディスク・データの帯域幅要件は重要である。その結果、本発明の特殊な高性能データ経路は、全てのディスク・データ移動に用いることを想定する。
【００１２】
ディスク側ファイバ・チャネル・コントローラ１６は、ディスク側ドライバ・ソフトウエアと共に、ディスク・アレイ間にファイバ・チャネル調停ループ・プロトコルを実装する。ホスト側ファイバ・チャネル・コントローラ１２およびディスク側ファイバ・チャネル・コントローラ１６は双方共、ＰＣＩバス２０および本発明の高性能データ経路へのアクセスを有する。ホスト側ファイバ・チャネル・コントローラはホスト・コンピュータとインターフェースし、一方ディスク側ファイバ・チャネル・コントローラは、ディスク・ドライブとインターフェースする。ホスト側ファイバ・チャネル・コントローラおよびディスク側チャネル・コントローラは、ヒューレットパッカード社(Hewlett Packard)のＴａｃｈｙｏｎチップのような、従来のファイバ・コントローラとすればよい。
【００１３】
図のルータ１８は、ファイバ・チャネル・システム内に従来からある２系統のファイバ・チャネル・ループのいずれかにディスク側ファイバ・チャネル・コントローラ１６を接続する、システムの機能を表す。ファイバ・チャネル・システムにおいてディスク・アレイに接続するためのこの好適な方法は、"Fail-over Switching System"（フェイル・オーバ切り替えシステム）と題し、１９９６年１１月１４日に出願され、本願と同じ譲受人に譲渡された米国特許出願番号第０８／７４９，３１１号に示されている。尚、その開示内容は、この言及により本願にも含まれるものとする。
【００１４】
バス・ガスケット(bus gasket)２２は、ファイバ・チャネル・コントローラの各々のバスと、ＰＣＩバス２０および本発明の高性能データ経路との間にインターフェースを形成する。ＰＣＩバスは、ＰＣＩブリッジ・インターフェース２６を介して、ジョブ・プロセッサ２４に接続されている。ＰＣＩブリッジ・インターフェース２６は、３２ビットＰＣＩバスを、ジョブ・プロセッサ２４内で用いられている６４ビットの６０Ｘバスとインターフェースするために必要とされる。ジョブ・プロセッサ２４は、マイクロプロセッサを含む。この好適な実施形態によれば、２００ＭＨＺの処理能力を有するMotorola Power PC（モトローラ社のパワーＰＣ）を実装している。ジョブ・プロセッサ２４を完成するために、プロセッサ・２次キャッシュ、制御用ＤＲＡＭおよびフラッシュＲＯＭもある。ＲＡＩＤコントローラの起動手順に関するファームウエアは、フラッシュＲＯＭ内にある。フラッシュＲＯＭ内のファームウエアは、ジョブ・プロセッサ２４で実行する。ジョブ・プロセッサは、固定量のＤＲＡＭを含み、この好適な実施形態によれば、８ＭＢであり、ファームウエア、ディスク・キャッシュ追跡構造、およびファイバ・チャネル・コントローラ用制御構造によって用いられる。
【００１５】
ローカル・リソース・ユニット２８が、ＰＣＩ−ＰＣＭＣＩＡブリッジ３０を介して、ＰＣＩバスに接続されている。ローカル・リソース・ユニット２８は、環境モニタである。これは、ＲＡＩＤコントローラによって使用される制御、状態および共有リソースのための収集領域を与える。これらのリソースには、外部コンソール、現場交換型ユニットの状態、およびスタンバイ電力監視のための通信ポスト(communication post)が含まれる。
【００１６】
次に、ＲＡＩＤコントローラにおける高性能データ経路について説明する。ＲＡＩＤコントローラの通常動作の間、ディスクＩ／Ｏの非同期的な性質を考慮するために、ステージング・メモリが必要となる。全てのディスク動作の完了を待っている間、論理的には関連がある動作であるが物理的には別個のディスク動作をステージする必要がある場合が多い。このため、ＲＡＩＤコントローラはステージング・メモリを有していなければならない。本発明によれば、第１ホスト側メモリ３２および第２ディスク側メモリ３４が備えられている。本発明の有利な構造は、ホスト側メモリ３２およびディスク側メモリ３４が、ステージング・メモリおよびキャッシュ・メモリ双方として二重に機能し得ることである。別個のディスク側およびホスト側キャッシュは、現行の設計でできるだけそれらのソースの近くに配することができる。ディスク・キャッシュ・アルゴリズムやアーキテクチャは、当技術分野では周知である。ホスト側メモリおよびディスク側メモリは、この好適な実施形態によれば、ＥＣＣ（エラー訂正コード）で保護されたＤＲＡＭ  ＤＩＭＭである。メモリは各々メモリ・コントローラ３６によって制御される。高性能データ経路は、ホスト側メモリ３２を動作させるメモリ・コントローラ３６に接続するための第１バス３８を含む。また、ディスク側メモリ３４を動作させるメモリ・コントローラと接続するための第２バス４０もある。第１および第２バスは、切替装置４２によって、選択的に接続可能である。
【００１７】
切替装置４２は、データ経路制御エンジン４４にも接続されている。データ経路制御エンジンは、結合型ダイレクト・メモリ・アクセス・ユニット（ＤＭＡ）およびＸＯＲエンジンである。また、データ経路制御エンジンは、チェックサム・エンジンを含んでもよい。切替装置４２は、第１バス、第２バスおよびデータ経路制御エンジンを一度に全て接続することができ、あるいは、ホスト側メモリ３２またはディスク側メモリ３４のいずれかを他のものから分離するために用いることも可能である。データ経路制御エンジン４４は、ＤＭＡ／ＸＯＲエンジン４６およびＸＯＲバッファ４８を含む。データ転送時にＸＯＲを実行する際、ホスト側メモリとディスク側メモリとの間で受け渡される最初のデータは、ＸＯＲバッファ４８にコピーされる。これら２つのメモリ間における後続のデータ転送において、ＤＭＡ／ＸＯＲエンジンによってデータ・ワードとＸＯＲバッファ４８内の対応するデータワードとのＸＯＲ演算を行う。その度に、ＸＯＲ演算の結果をＸＯＲバッファ４８に入れ換える。相互に関連するＲＡＩＤディスクに対する書き込み動作を実行する際、対応する群内の全データのＸＯＲ演算が終了したときに、パリティ・データがＸＯＲバッファ内に得られる。
【００１８】
シーケンサ５０を用いて、ＤＭＡ／ＸＯＲエンジン４６の動作を制御する。シーケンサは、命令のリストを実行するマイクロプロセッサである。命令は、ジョブ・プロセッサ２４によって与えられる。ＰＣＩブリッジ・インターフェース５２は、シーケンサ５０の６４ビット・バスを、３２ビットＰＣＩバスとインターフェースする。シーケンサ５０は、当該シーケンサ５０の構成および起動時自己検査コードを格納するフラッシュＲＯＭ５４と共に動作する。また、シーケンサ５０は、切替装置４２の状態に関して、ＤＭＡに指示を出す。シーケンサは、この好適な実施形態によれば、１００ＭＨＺまで動作するモトローラ社のパワーＰＣとするとよい。
【００１９】
この好適なＲＡＩＤコントローラには、ピア・コントローラ(peer controller)が備えられている。２つのコントローラは、通常動作では、各々独立したファイバ・チャネルに接続されている。これらのコントロール間の直接ＳＣＳＩ接続によって、２つのコントローラ間で直接通信が行われる。ピア・ブリッジ６０が、この通信を簡便化する。ホスト側メモリ３２において可用性の高い書き込みキャッシュを維持するためには、これをミラー(mirror)しなければならない。ピア・プロセッサ内部のメモリを用いて、各ＲＡＩＤコントローラ毎に書き込みキャッシュをミラーする。２つのピア・コントローラ間に２系統の専用６４ビット・データ経路を備え、キャッシュ・データをミラーするために用いる。全ての書き込みデータは、ディスクに書き込む前に、ミラー処理(mirroring)を受ける。ミラー処理は、書き込みバス３８を読み出しバス４０から分離して行うことができるので、読み出しバスは、ミラー処理プロセスの間別の動作を扱うことができて有利である。この好適な実施形態によるミラー・データは、一方のコントローラから他方へ送出される。即ち、一方のコントローラは、物理的にピア・コントローラ上に存在するミラーＦＩＦＯ５８にデータを置く。ピア・コントローラは、そのミラーＦＩＦＯ５８からデータを取り出し、それ自体のメモリにそれを置く。この手法によって、受け取る側のコントローラは、データのアドレスに対してある有効性チェックを行い、２つのボード間にファイア・ウオールを構築して、ピア・コントローラ上の許可されていない位置に第１コントローラがデータを書き込もうとした場合に、この第１コントローラを捕まえて、受け取る側のピア・コントローラに何らかの損傷を与えることを防止することができる。
【００２０】
ミラー・キャッシュは、メモリ障害またはプロセッサ障害の場合に保護を与える。かかる障害の場合、ホストのデータは、ミラー・キャッシュ内に保持されで利用可能のままとなっている。
【００２１】
本発明の高性能データ経路は、ディスク群上のデータが相互に関連付けられているディスク・アレイと共に用いる。相互関連には、ディスクの１つにパリティを備えることを含む。パリティ・データは、他のディスクの各々のデータのＸＯＲである。ディスクは典型的にストライプ状で、各ディスクのセクタが１つのストライプに属するようになっている。あるストライプに属する複数のセクタは、ここでは、全て互いに対応すると言う。あるストライプのデータ・セクタ全てについて、データ・セクタ同士のＸＯＲ演算を行い、当該ストライプに対するパリティ・セクタを生成する。
【００２２】
本発明の高性能データ経路の利点は、ＲＡＩＤ動作の完了において一層明確に見ることができる。例えば、ＲＡＩＤ３読み出しは、ディスクの相互関連群からの１つのストライプにおける各ディスクからセクタを読むことによって行われる。複数のディスクからの読み出しは、同時に行われる。ディスクからディスク側メモリへのデータの読み出しの間、切替装置４２は読み出しバス４０を書き込みバス３８およびデータ経路制御エンジン４４から分離する。データが到達すると、ディスク側メモリ３４に書き込まれる。このように、読み出し動作全体の完了を待つ間、データをディスク側メモリ内にステージする。典型的に、ＲＡＩＤ３読み出しは、１つのストライプ内のデータ・セクタのみを読み取る。ストライプ内のデータ・セクタ全てが読み取られ、メモリに書き込まれるのを待つことになる。このため、ディスクの１つにエラーが発生したり、あるいは適切な時点に応答できなかった場合に、時として遅延の延長が生ずる可能性がある。また、劣化モードへの遷移（ディスク・ドライブの１つが失われる）があると、そのときにパリティ情報および再生が必要となるので、遅延が著しく長引くことになる。本発明によれば、パリティ・セクタを含むセクタ全てを読み出すが、最後のディスク・ドライブがそのデータのセクタを与えるまで待つ必要がないモードを選択することができる。この「Ｎ−１アンド・ゴー」(N-1 and go)モードで動作すると、相互関連群内の最初のＮ−１個のディスク（Ｎは、群内のディスク総数）からのデータが、連続的にディスク側メモリからホスト側メモリに移動する。このために、切替装置４２は、ディスク側メモリ、ホスト側メモリ、およびデータ経路制御エンジンを相互接続する。データをディスク側メモリからホスト側メモリに移動させると同時に、最初の移動に対するデータのコピーを、ＸＯＲバッファ４８にコピー、即ち、充填する。ディスク側メモリからホスト側メモリに移動させる後続のデータ・セクタ毎に、ＤＭＡ／ＸＯＲエンジン４６は、当該データと、ＸＯＲバッファ４８内にある対応するデータのワードとのＸＯＲ演算を実行する。ＸＯＲ演算の結果を、ＸＯＲバッファ内で置換する。ＸＯＲ演算は、ストライプ内の１つを除いて全ての対応するセクタを移動させるまで、連続的に繰り返される。ジョブ・プロセッサ２４は、常にどのデータおよびパリティがディスクから受け取られたかについて、どのディスクＩ／Ｏが完了したかに基づいて把握している。これは、実行すべき動作のリストをシーケンサ５０に供給する際に用いられる。最後の移動させない(missing)セクタがデータ・セクタである場合、ＸＯＲバッファ４８の内容が、未だ到達していないセクタ内のデータに等しいはずであるので、これをホスト側メモリに移動させる。最後の移動させないセクタがパリティ・セクタである場合、ＸＯＲバッファ４８の内容は不要であり、通常のＲＡＩＤ３データ・セクタ移動は既に完了した。
【００２３】
高性能データ経路による補助を受ける書き込み動作は以下のように行われる。書き込むべきデータをホスト側メモリ３２に書き込む間、書き込みバス３８を読み出しバス４０およびデータ経路制御エンジン４４から分離する。したがって、書き込みの完了を待つ間、ホスト側メモリ内にデータをステージする。ホスト側メモリを、データ経路制御エンジンおよびディスク側メモリと接続するように切り替える。ホスト側メモリからディスク側メモリに、データ・セクタを連続して移動させる。最初のデータ・セクタをコピーし、ＸＯＲバッファ４８に充填する。連続する各データ・セクタ毎に、そのデータ・ワードの、ＸＯＲバッファ４８内の対応するワードとのＸＯＲ演算をＤＭＡ／ＸＯＲエンジン４６内で実行し、得られた結果をＸＯＲバッファ４８に戻す。最後のデータ・セクタのＸＯＲ演算を実行した後、ＸＯＲバッファ４８の内容をディスク側メモリに移動させ、パリティ・セクタとして扱う。ストライプのデータ・セクタおよびパリティ・セクタは既にディスク側メモリ内にあり、ディスク側ファイバ・チャネル・コントローラ１６の制御の下で、それぞれのディスクに書き込むことができる。ディスクへの書き込みは、読み出しバス４０をスイッチ４２によって書き込みバス３８およびデータ経路制御エンジン４４から分離した状態で行う。
【００２４】
ホスト側メモリおよびディスク側メモリに対するメモリ・コントローラ３６は、図２に示すのと同様に構成するとよい。以下この好適な実施態様を具体的に説明するが、当業者は、ここに特許請求する本発明の機能を達成するメモリ・コントローラをいくつでも実現することができよう。本発明のメモリ制御の必要性を満足するためには、従来のメモリ制御技法も実施可能である。このように、本発明は、以下に論ずるこの好適な実施形態のメモリ・コントローラには全く限定されない。この好適な実施形態のメモリ・コントローラを動作させるためのロジックは、メモリ制御ロジック・デバイス７０内に収容されている。ロジック・デバイスは、Advanced Micro Devices（アドバンスト  マイクロ  デバイセズ社）が製造するような、複合プログラム可能ロジック・デバイス（ＣＰＬＤ：Complex Programmable Logic Device）とすればよい。メモリ制御ロジック・デバイス７０は、３つの部分、即ち、アドレス・コントローラ、データ経路コントローラ、およびＤＩＭＭコントローラで構成されている。アドレス・コントローラは、アドレスおよびそれぞれのバスからのコマンドをラッチする。このアドレス上で、パリティ・チェックを行う。ロジック・デバイス７０は、アドレスをデコードし、行および列アドレスを発生し、バースト動作の間ＣＡＳ（列アドレス・ストローブ）アドレスを増分し、ページ交差(page crossing)を扱う。ロジック・デバイス７０のデータ・コントローラ部分は、イニシエータとターゲットとの間の全てのデータ経路制御およびデータ有効ハンドシェーク・プロトコルを担当する。ＤＩＭＭコントローラ部分は、ＲＡＳ（行アドレス・ストローブ）、ＣＡＳ、ＷＥ（書き込みイネーブル）、ＯＥ（出力イネーブル）、およびＤＲＡＭのリフレッシュを扱う。ＤＩＭＭコントローラは、ＲＡＳおよびＣＡＳ状態機械を内蔵する。ＣＡＳ機械は、６６ＭＨｚで動作するコントローラの唯一の部分である。この好適な実施形態では、コントローラの残りの部分は３３ＭＨＺで動作する。ロジック・デバイスのアドレス・コントローラは、アドレス・レジスタ７２と共に動作する。アドレス・レジスタは、パリティ発生器／チェッカを備えた２つのバス・トランシーバから成る。この好適な実施形態では、アドレス・コントローラへの複数の入力の一つをN_X_FRAMEと呼ぶ。N_X_FRAME信号は、現バス・マスタによってアサートされると、アクセスの開始および期間を示す。これは、最後のデータ・フェーズの開始時にディアサートされる。単一ビート（８バイト）動作では、これは１サイクルの間アサートされる。「ビート」ということばは、ここで用いる場合、単一バス・サイクルを意味する。N_X_FRAME信号がラッチされると、ラッチは閉じられ、次のサイクル。ラッチは、動作が完了したときに、再度開かれる。各アドレス上で奇数バイト・パリティをチェックし、N_X_FRAMEがアサートされた後、サイクルは有効となる。読み出し／書き込みビットX_W_NRは、アドレス・フェーズ中、N_X_FRAMEによって１サイクルの間アサートされる。この好適な実施例では、他にもEDAC_CMDと称する同様のビットがある。EDACビットは、起動構成のためのEDACモード・レジスタ書き込み、またはEDAC診断レジスタ読み出しとして動作を定義する。これらの信号は双方と��、N_X_FRAMEがアサートされた最初のサイクルにおいて有効となる。
【００２５】
Xbusアドレス・バスX_ADは、データの下位側３２ビットと時間多重化される。これは、１サイクルの間N_X_FRAMEによってアサートされる。アドレス・パリティ・ピンX_PARは、奇数バイト・パリティである。これらは、１サイクルの間N_X_FRAMEによってアサートされる。ビット３：０は、X_ADに対するアドレス・パリティを収容する。N_X_FRAMEがアサートされた後のサイクルで、アドレスがアドレス・レジスタにラッチされたときに、奇数バイト・パリティに対してアドレスをチェックする。１つの奇数バイト・パリティ・エラーがあった場合、アドレス・レジスタ７２は、N_X_FRAMEがアサートされた後のサイクルにおいて、アドレス・パリティ・エラー・フラグN_X_ADD_PERRをセットする。バス・アドレスBAは、ロジック・デバイス７０によって、アドレス・レジスタ７２からアクセスされる。アドレス・レジスタには、メモリ・アクセスを開始するためのアドレスが与えられ、アクセスが完了するまで、このアドレスを増分する。
【００２６】
更に、アドレス・コントローラに関して、６５ビート（５２０バイト）までのバーストを可能にするために、列アドレスはインクリメンタを有する。ＤＲＡＭページの交差（行アドレスを増分しなければならない場合は、８Ｋバイト境界）が検出された場合、N_RASがプリチャージされている間に、増分行アドレスを発生する。N_RASはＤＩＭＭ３３に対する行アドレス・ストローブである。これは、N_X_FRAMEの２サイクル後にアサートされ、ＣＡＳ状態機械がアイドル状態になった後のサイクルでディアサートされる。ページ交差において、新たな行アドレスを発生している間に、プリチャージのためにこれをディアサートする。N_CASはＤＩＭＭ３３に対する列アドレス・ストローブである。これは、３３ＭＨＺサイクルの半分の間アサートされ、６６ＭＨｚクロックによって駆動される。待ち状態の間、これはプリチャージ（ディアサート）に保持される。この好適な実施形態は、ＤＲＡＭサイズには独立したページ・サイズに対応するように構成されている。好適な実施形態では、メモリ設計は、透過的にページ交差に対応し、読み出しとディスク側メモリおよびホスト側メモリとの間のデータ転送の同期を可能とする。したがって、ページ交差の間、追加の待ち状態の必要はない。
【００２７】
この好適な発明のディスク側メモリおよびホスト側メモリは、非インターリーブＤＩＭＭソケットに挿入する。１６Ｍビットおよび６４ＭビットのＤＲＡＭを用いれば、所望サイズのメモリを構成することができる。この好適な実施形態では、ＤＩＭＭソケットは、３．３ボルトのＤＲＡＭのみがソケットに挿入できるように、電圧による制限を設けている(voltage key)。ＤＩＭＭ３３は、74LVT 16244を用いて、N_RASを除く全ての制御信号及びアドレスをバッファすることが好ましい。各ＤＲＡＭの傍らに、減結合コンデンサが取り付けられている。
【００２８】
ロジック・デバイス７０のＤＩＭＭコントローラは、ＲＡＳ状態機械およびＣＡＳ状態機械を含む。ＲＡＳ状態機械は、リフレッシュおよび読み出し／書き込みアクセス双方を扱う、マスタ状態機械である。読み出し／書き込み動作時に、N_RASは、N_X_FRAMEがアサートされて３サイクル後にアサートされ、ＣＡＳ状態機械がアイドル状態に戻るまで、アサートされたままとなっている。ページ交差の間、ＲＡＳ状態機械は、アイドルを通じてサイクルを逆行し、新たな行アドレスを発生している間に、N_RASをプリチャージする。ＣＢＲ（ＲＡＳの前のＣＡＳ）リフレッシュのために、ＲＡＳ機械はＣＡＳ状態機械を起動し、次いでN_CASがアサートされて１サイクル後にN_RASをアサートする。
【００２９】
ＣＡＳ状態機械は６６ＭＨＺクロックで動作し、ＲＡＳ状態機械によってトリガされる。読み出し／書き込みアクセスの間、N_CASは１５ｎｓ間アサートされ、次いで１５ｎｓ間プリチャージされる。マスタによって待ち状態がアサートされたか、あるいはページ交差が発生した場合、N_CASはプリチャージ状態に留まる。一旦ＣＡＳ状態機械が起動されたなら、これは３３ＭＨＺクロック信号との同期を取るので、N_CASは常に、３３ＭＨＺクロック信号の正エッジと整合する６６ＭＨＺクロック信号の正エッジ上でアサートされる。このように、機械は、３０ｎｓサイクルの後半において、３３ＭＨＺ信号のみをサンプリングする。ＤＩＭＭの各々は、N_WE(3:0)およびN_MOE(3:0)で示す、別個のイネーブル信号を有する。出力イネーブルN_MOEは、読み出し時にN_RASと同じサイクルにおいてアサートされ、ページ交差がなければ、N_RASがアサートされている限りアサートされている。ページ交差の間、N_RASがプリチャージしている間、出力イネーブル信号が切り替えられる。書き込みイネーブル信号N_WEも同様に扱われる。これは、書き込み時にN_RASと同じサイクルにおいてアサートされ、ページ交差がなければ、N_RASがアサートされている限りアサートされている。
【００３０】
ローカル・リソース・ユニット（ＬＲＵ）２８内のタイマは、１５．４μｓ毎にN_REF_TIMEをアサートする。ロジック・デバイス７０は、リフレッシュ状態機械を含み、コントローラの現状態には関係なく、続くサイクルにおいてN_X_REF_REQをアサートして、リフレッシュ・サイクルを要求する。Xbusがアイドルになるまでリフレッシュを許可しないのは、ＣＰＬＤにプログラムされているアービタによるものである。N_X_REF_GNTを受け取ると、ＲＡＳおよびＣＡＳ状態機械によってＣＢＲリフレッシュ・サイクルが起動される。ディスク側メモリおよびホスト側メモリは同時にリフレッシュされる。リフレッシュが完了するまでN_X_REF_REQはアサート状態に留まる。これによって、XBUSが自由になったときをアービタに知らせる。アービタは、リフレッシュの間、いずれにもバスを付与しない。
【００３１】
ロジック・デバイス７０のデータ経路コントローラは、第１データ・レジスタ７６、第２データ・レジスタ７８、エラー検出／訂正デバイス８０、およびデータ・トランシーバ８２、ならびにXbusに対するデータ有効ハンドシェーク・インターフェース・プロトコルを制御する。読み出し時、イネーブルされたＤＩＭＭから第２データ・レジスタ７８にデータをクロック入力する。次に、ＥＤＡＣ８０を通過モード(flow-through mode)で用いるために、３３ＭＨＺクロックの正エッジ上で第１データ・レジスタ７６にデータをクロック入力する。ＥＤＡＣ８０を通過しデータ・トランシーバ８２に設定を行うために１回のサイクル(full cycle)がある。ＥＤＡＣ８０は、ＥＣＣ検出および訂正を動作中に行い、Xbusに対して奇数バイト・パリティを発生する。データは、次のサイクルにおいてXbus上に駆動される。N_RD_XOEは、データ・トランシーバの出力イネーブルである。ＥＤＡＣは、パリティをチェックし、ＥＣＣチェック・ビットを発生する。次のサイクルにおいて、データを第２データ・レジスタ７８にクロック入力し、後続のサイクルにおいてデータを適切なＤＩＭＭに書き込む。
【００３２】
ページ交差の間、ディスク側メモリとホスト側メモリとの間でイニシエータ・レディ信号を制御する際に、プレ・ターゲット・レディ信号を用いてＤＭＡ６６を補助する。プレ・ターゲット・レディ信号は、メモリがページ境界を交差する用意をしている間、データ転送を保留する。読み出し動作が行われている場合、Xbus上でデータが有効になる前のサイクルで、プレ・ターゲット・レディ信号をアサートする。書き込みメモリと読み出しメモリとの間の移動では、これによって、ＤＭＡコントローラは、次のサイクルにおける読み出しのターゲットへのイニシエータ・レディ信号をアサートすることができる。次のサイクルにおいて、ターゲット・レディ信号をアサートし、N_X_FRAMEがディアサートされた後のサイクルまで、アサートされている。（単一ビート動作では、イニシエータ・レディ信号もアサートされている場合、これは１サイクルだけアサートされる。）
書き込み動作では、Xbusからデータを受け入れる用意ができる前のサイクルにおいて、プレ・ターゲット・レディ信号をアサートする。書き込みメモリと読み出しメモリとの間の移動では、これによって、ＤＭＡは、次のサイクルにおける書き込みのソースへのイニシエータ・レディ信号をアサートすることができる。ターゲット・レディ信号のアサートおよびディアサートは、読み出しの場合と同じである。
【００３３】
この好適な実施形態のＥＤＡＣ８０は、IDT49C466Aである。これは、６４ビット通過エラー検出および訂正ユニットである。これは、修正ハミング・コードを用いて全ての単一ビット・ハードおよびソフト・エラーを訂正し、全ての二重ビット・エラーおよびいくつかの多ビット・エラーを検出する。通過アーキテクチャに別個のシステム・バスおよびメモリ・バスを備えることにより、パイプライン・データ経路が可能になる。
【００３４】
次に図３を参照し、ＤＭＡ／ＸＯＲエンジンの動作について、更に詳しく説明する。ＤＭＡ／ＸＯＲエンジンは、２つのサブユニットから成る。第１サブユニットはデータ・エンジンであり、第２サブユニットはＸＯＲエンジンである。データ・エンジンは、チェックサムの発生／チェック、ディスク側メモリとホスト側メモリとの間、ホスト側メモリからミラーＦＩＦＯ５８、ＸＯＲバッファ４８からディスク側メモリおよびホスト側メモリ、ディスク側メモリおよびホスト側メモリからＸＯＲバッファ４８へのデータ移動、ならびにディスク側メモリまたはホスト側メモリ、ＸＯＲバッファあるいはミラーＦＩＦＯ５８のいずれかに対する双方向の即値データ移動を担当する。即値データ移動には、一定数値の所定の移動が予め符号化されている（数を定義するためにアドレスは必要ない）。また、データ・エンジンは、第２ピア・プロセッサ・ミラーＦＩＦＯ５８の状態を監視する。ミラーＦＩＦＯ５８内にデータがある場合、ＤＭＡ６６はそれを表す状態ビットを含む。一旦ピア・シーケンサがそのミラー・データをそのホスト側メモリに移動させたなら、それが終了し、転送の間エラーが発生しなかったことをＤＭＡシーケンサに通知する。
【００３５】
ＤＭＡ／ＸＯＲエンジンの第２ユニットは、ＸＯＲエンジンであり、ＲＡＩＤパリティ・データを発生し、ＲＡＩＤ３パリティ・データをチェックし、ディスク側メモリおよびホスト側メモリからのハードウエア・バス（データおよびアドレス経路）パリティ・エラーをチェックする。ＸＯＲエンジンは、プログラム可能なロジック・デバイスおよびＸＯＲバッファ４８で構成されている。ＸＯＲエンジンは、ＲＡＩＤデータ状態をデータ・エンジンに戻し、ハードウエア・パリティ・エラーをローカル・リソース・ユニット（ＬＲＵ）２８に戻す。
【００３６】
切替装置４２は、３つの別個のスイッチとして実装する。第１スイッチ６２は、書き込みバス３８を読み出しバス４０およびデータ経路制御エンジン４４から分離するために用いることができる。第２スイッチ６４は、読み出しバス４０を書き込みバス３８およびデータ経路制御エンジン４４から分離するために用いることができる。第３スイッチ６８は、ＸＯＲバッファ４８の出力を受け取るように接続されている。第３スイッチ６８は、ＸＯＲバッファ４８内にある結果を、他の２つのスイッチの状態に応じて、読み出しバスまたは書き込みバスにロードすることができる。この好適な実施形態では、これらのスイッチは、クロスバー・スイッチ、具体的には、CBT16212スイッチによって実施する。スイッチの状態は、ＤＭＡ６６によって制御される。スイッチの状態は、読み出しバス４０、書き込みバス３８およびデータ経路制御エンジン４４の全てを共に接続するように制御することも可能である。あるいは、スイッチは、これらのデータ経路の１つ以上を他のものから分離するように制御することも可能である。
【００３７】
ＤＭＡ６６は、シーケンサ５０によってプログラムされ、そのタスクを完了した時に、シーケンサに状態を戻す。シーケンサ５０は、トランシーバ７４を介して、フラッシュＲＯＭ５４およびＤＭＡ６６と通信する。トランシーバ７４は、シーケンサからＤＭＡ内のレジスタまでのバッファリング経路を与える。シーケンサは、ＤＭＡレジスタに対して読み出しおよび書き込みを行う。シーケンサ５０は、フラッシュＲＯＭ５４内のプログラムを用いてブート・アップを行う。
【００３８】
ＤＭＡ６６は、読み出し／書き込み動作の形態で、ディスク側メモリまたはホスト側メモリ、ミラーＦＩＦＯ、あるいはＸＯＲエンジンと通信を行う。各セクタの移動毎に、データ・エンジンは自動的に当該データのチェックサムを発生するかあるいはチェックする。また、チェックサムは、ＸＯＲバッファ４８からデータがアンロードされているときにはいつでも発生する。チェックサム・プロセスを開始するには、あるビット（「セクタ開始」ビット）をセットし、セクタ転送の開始を示す。このビットをセットすることにより、チェックサム・ロジックは、チェックサム・シード(seed)の内容と最初のデータ部分とのＸＯＲ演算を行う。このビットがセットされていない場合、最初のデータ部分とチェックサム・レジスタの内容とのＸＯＲ演算が行われる。セクタ開始ビットは、チェックサム・ロジックを変更することなく、セクタ・サイズを可変とすることができる。状態ビットのレジスタ・セットが読み込まれたときはいつでも、算出されたチェックサムがシーケンサに戻される。チェックサムの発生に関して、チェックサムが発生され、データ・バス上に合流されるときはいつでも、データの伝搬を保留する。このサイクルは、データ・バスを転換(turn around)させ、チェックサムの発生を終了するために用いられる。
【００３９】
ＤＭＡは、５つのフィールドを有するＣＭＤ／状態レジスタを含む。第１フィールドは、動作が、ディスク側メモリまたはホスト側メモリを伴うデータ移動か、あるいは即値データ、即ち、単一ビート（８バイト）のデータの読み出し／書き込みであるかをＤＭＡに示す。データ移動では、ソース・レジスタ内のソース・アドレスを用いて、ＣＭＤ／状態レジスタのソース・フィールドによって、データ・ソースを指定しなければならない。ソースがＸＯＲバッファ４８である場合、ＸＯＲエンジンはデータをアンロードし、同時に同じデータでそれ自体を再度充填する。これによって、ＲＡＩＤ３再生データをＸＯＲバッファ４８内に留めておくことができるので、最終データ部分に対するチェックを行うことができる。一旦セクタの最終部分が入力されたなら、ＣＭＤ／状態レジスタのチェック・パリティ・データ・ビットをセットすることにより、これをチェックすることができる。また、ＣＭＤ／状態内の宛先フィールドおよび宛先レジスタ内のそのアドレスをセットすることにより、宛先も示さなければならない。転送すべきデータ量は、ワード・カウント・フィールドによって示される。
【００４０】
フラッシュＲＯＭ５４は、ブート・コードを格納するために用いられる。この好適な実施形態のフラッシュＲＯＭは、５１２ＫＢｘ８であり、データ・バスの最上位バイト・レーン上に位置する。
【００４１】
ＤＭＡエンジンは、常にイニシエータとして機能し、それ自体がデータを発していない場合でも、イニシエータ・レディ信号を駆動する役を担っている。ディスク側メモリおよびホスト側メモリ、ならびにミラーＦＩＦＯは常にターゲットである。書き込みバス３８および読み出しバス４０は各々、これらのバスが互いに結合された場合でも、それ自体のインターフェース制御信号を有する。ディスク側メモリとホスト側メモリとの間の移動の開始時に、ＤＭＡはこれら２つのメモリ・システム間のデータ流の同期を取る。ＤＭＡは、イニシエータ・レディ信号およびプレ・ターゲット・レディ信号を通じて、メモリとハンドシェークを行う。メモリがデータを受け取るまたは送る用意ができた場合、データが有効になる１サイクル前にプレ・ターゲット・レディ信号をアサートする。これに応答して、ＤＭＡはイニシエータ・レディ信号をアサートする。転送時に双方のメモリを使用している場合、ＤＭＡは、双方のプレ・ターゲット・レディ信号を受け取るまで、これらのメモリへのイニシエータ・レディ信号をアサートしない。一旦これらの信号を双方共受け取ったなら、イニシエータ・レディ信号を同時にアサートする。その時に、データはXbus、即ち、読み出しバスおよび書き込みバス上で有効となったと見なされる。
【００４２】
この好適な実施形態によれば、チェックサム以外の他の有効性チェック機構も用いられる。タイム・スタンプは、各データ・セクタの有効性フィールド内に位置する一意の数である。主要なストライプの更新中に、ＲＡＩＤ群内の各セクタに、この一意の数を挿入する。主要なストライプの更新とは、ＲＡＩＤストライプ内の各セクタを充填するデータを書き込むことを意味する。その後セクタにデータを書き込む場合、タイム・スタンプを無効化する。次のストライプの更新時に新たなタイム・スタンプを挿入する。書き込みスタンプは、群内の各ディスク毎に１ビットを与える。あるディスクに書き込みを行うとき、当該ディスクに対するビットの値を反転する。即ち、どちらが現在の値かに応じて、１から０にまたは０から１に変化させる。この好適な実施形態の書き込みスタンプおよびタイム・スタンプ情報に適応するためには、ＤＭＡはデータ転送の終了時に動作を保留し、チェックサムおよびスタンプ情報を添付するだけでよい。同時に、イニシエータ・レディ信号が１サイクルの間ディアサートされ、次いでＤＭＡからのスタンプ情報およびＸＯＲエンジンからのチェックサム情報を含む８バイトがバス上に来たときに、１サイクルの間アサートされる。この１サイクルの遅延は、チェックサムの発生を完了するために必要である。データをディスク側メモリからホスト側メモリに移動させる場合のような逆方向においては、スタンプ情報を抜き取り、ＤＭＡ内のスタンプ・レジスタに置く。スタンプ情報は、ホスト側メモリには送られない。このように、この好適な実施形態によれば、ホスト側メモリは各セクタ毎に５１２バイトを格納し、ディスク側メモリはセクタ当たり５２０バイトを格納する。
【００４３】
好適なＸＯＲバッファ４８はＦＩＦＯである。ＦＩＦＯ４８は１つのセクタを保持する。ＦＩＦＯ４８は、３つの経路の１つからロードすることができる。経路の選択は、マルチプレクサ８４の動作によって切り替えられる。マルチプレクサ８４は、バッファ８６によってＦＩＦＯ４８から分離することができる。第１経路は、データ・バスからの直接データを有する。バス・インターフェース８８は、ＸＯＲエンジンにおいて用いるために、バスからデータを取り出す。データは外部で登録され、ＦＩＦＯに書き込まれる前にパリティがチェックされる。第２経路は、ＦＩＦＯからそれ自体へのフィードバック経路である。これが必要なのは、ＦＩＦＯデータをバス上にアンロードしつつ、ＦＩＦＯ内にコピーを維持するためである。ＦＩＦＯに至る最後の論理経路は、ＸＯＲ経路である。ＸＯＲロジック９０は、バスからの登録されているデータとＦＩＦＯの内容との排他的ＯＲ演算を行う。ＸＯＲの結果は、古いデータが順次排他的ＯＲロジックに出力されるに連れて、古いデータの後にＦＩＦＯ４８に入力される。こうして、既存のデータは排他的ＯＲの結果で置換される。必要とする経路の選択は、シーケンサによって、ＣＭＤ／状態レジスタ内の適切なビットをセットすることによって行われる。ＸＯＲ  ＦＩＦＯからデータをアンロードしているときはいつでも、ＤＭＡロジックは、発生したチェックサムおよびＤＭＡレジスタ・セット内にある書き込みスタンプおよびタイム・スタンプ情報を付加するようにプログラムすることができる。
【００４４】
ＸＯＲエンジンは、ＲＡＩＤ３ユーザ・データ・パリティ・エラーを検出するために用いることができるという利点がある。ＲＡＩＤ３再生動作の間、ＸＯＲエンジンは、ＤＭＡを介して、最終データ部分を再生するようにプログラムすることができる。データを再度発生したなら、ＦＩＦＯバッファ４８からホスト側メモリにアンロードすることができる。新たなデータを古いデータと比較する場合、アンロード動作の間に、チェック・パリティ・データ・ビットをセットすることができる。これによって、ＸＯＲ  ＦＩＦＯから読み出されつつある新たなデータを、ＦＩＦＯバッファ４８に書き戻すことができる。古いデータが入ってきたときに、ＸＯＲ  ＦＩＦＯ動作によってこのビットをセットすることにより、新たなデータと比較することができる。古いデータと新たなデータとの間で不一致があると、ＣＭＤ／状態レジスタ内において、チェック・サム・エラー・ビットがセットされる。尚、比較の間、ＸＯＲ  ＦＩＦＯには再ロードされないことに注意されたい。
【００４５】
図４は、動作中にチェックサムを実行するためのＤＭＡロジックを示す。チェックサム・バッファ９２は、チェックサム・データが計算されている際これを保持する。マルチプレクサ９４は、チェックサムＸＯＲロジック９６に、チェックサム・バッファ９２内のデータまたはＤＭＡレジスタ内にある初期のシード・データのいずれかを供給する。ＸＯＲロジック９６の他方の入力は、チェックサム処理を受けたデータである。
【００４６】
本発明の高性能データ経路は、ＲＡＩＤ読み出し動作を実行するための「Ｎ−１アンド・ゴー」モードを可能にする。ドライブの１つが誤動作(struggle)しているか、あるいは動作しない場合、Ｎ−１アンド・ゴー・モードは、ホストに対する非常に一定した転送レートを維持することができる。Ｎ−１アンド・ゴーは、１つのドライブが誤動作しているかまたは動作不能状態にある状況では迅速であるが、この動作は通常動作よりは低速である。通常の状態でＮ−１アンド・ゴー動作が遅いのは、ＸＯＲ動作を扱うためにレイテンシが加わるため、そしてディスク側ファイバ・ループから余分な要求が１つあるからである。データ・セクタからのデータが要求されるだけでなく、パリティ・セクタからのデータも要求される。このモードの利点は、スループットの変動が少ないことである。これが非常に重要な用途では、通常動作に対する速度低下は、容認し得るトレードオフである。
【００４７】
勿論、前述の好適な実施形態に対する種々の変更や改良も当業者には明白であることは理解されよう。かかる変更は、本発明の精神および範囲から逸脱することなく、更にその達成される利点を損なうことなく行うことができる。したがって、かかる変更や改良は、以下の請求の範囲によって包含されることを意図するものである。
【図面の簡単な説明】
【００４８】
【図１】図１は、本発明の高性能データ経路を含むＲＡＩＤコントローラのブロック図である。
【図２】図２は、図１の発明におけるディスク側メモリおよびホスト側メモリ各々と共に使用するメモリ・コントローラおよびメモリのブロック図である。
【図３】図３は、本発明の高性能データ経路において用いるためのデータ経路制御エンジンのブロック図である。
【図４】図４は、図３のデータ経路制御エンジンに含ませるためのＤＭＡロジックのブロック図である。
【図１】
2005032265.tif 000003
【図２】
2005032265.tif 000004
【図３】
2005032265.tif 000005
【図４】
2005032265.tif 000006