(57)【特許請求の範囲】
【請求項１】
１群の相互に関連するディスクからの読み出しを実行する方法において、前記ディスクの１つにおけるデータのセクタが、前記１群の他のディスクの各々におけるセクタに対応し、前記方法が、
前記ディスク群内の１つを除いた全てのディスク上において、対応するセクタを読み出すステップと、
前記１つを除いた全てのディスク内の対応するセクタからのデータをディスク側メモリに書き込むステップと、
前記ディスク側メモリからの対応するセクタのデータを、連続的にホスト側メモリに移動させるステップと、
前記対応するセクタの最初のセクタのデータのコピーを、前記ディスク側メモリからFIFOに充填するステップと、
XORエンジンにおいて、前記ディスク側メモリからの対応するセクタの前記最初のセクタに対応するセクタからのデータと、前記FIFO内の対応するデータとのXOR演算を連続的に行い、前記ディスク群内の１つを除いて全ての対応するセクタのXOR演算を完了するまで、前記FIFO内のデータを前記XOR演算の結果で置換するステップと、
前記FIFO内のデータを前記ホスト側メモリに移動させるステップと、
から成ることを特徴とする方法。
【請求項２】
請求項１記載の方法において、前記対応するセクタの前記最初のセクタのデータのコピーを充填する前記ステップが、前記ディスク側メモリから前記ホスト側メモリへの前記対応するセクタの前記最初のセクタのデータの移動と同期して行われることを特徴とする方法。
【請求項３】
パリティ・セクタを発生する方法であって、
（ａ）最初のデータ・セクタを、書き込みバス上のホスト側メモリから前記書き込みバスに接続するようにスイッチされたFIFOに、更に前記書き込みバスに接続された読み出しバスに沿ってディスク側メモリに移動させるステップと、
（ｂ）前記最初のデータ・セクタに対応する複数のデータ・セクタを、接続された書き込みバスと読み出しバスを介して、前記ホスト側メモリから前記ディスク側メモリに連続して移動させるステップと、
（ｃ）XORエンジンにおいて、前記FIFO内のデータと前記ホスト側メモリから移動した対応するデータとのXOR演算を実行し、前記XORの結果で前記FIFO内のデータを置換するステップと、
（ｄ）対応するセクタ全てと前記FIFO内のデータとのXOR演算を終了するまで、ステップ（ｃ）を連続して実行するステップと、
（ｅ）前記FIFOから前記ディスク側メモリにデータを移動させ、該データがパリティ・セクタを構成するステップと、
から成ることを特徴とする方法。
【請求項４】
請求項３記載の方法であって、更に、前記ディスク側メモリからの前記対応するデータ・セクタおよびパリティ・セクタを、１群の相互に関連するディスク上に書き込むステップを含み、前記ディスクの各々が、前記対応するデータ・セクタおよびパリティ・セクタの中からのセクタの１つを受け取ることを特徴とする方法。
【請求項５】
請求項３記載の方法であって、更に、前記書き込むステップの前に、前記ディスク側メモリを、前記ホスト側メモリおよび前記XORエンジンから分離するように切り替えるステップを含むことを特徴とする方法。
【発明の詳細な説明】
発明の背景
本発明は、データ処理システムに用いる可用性の高いディスク・アレイに関し、更に特定すれば、ディスク・アクセス動作中、容認可能な信頼性のあるスループットを維持しつつ、有効性およびエラーのチェック機能を提供する高性能データ経路に関するものである。
多くのシステムおよびその用途において、I/Oレベルに隘路が見られる。用途には、そのデータ記憶装置に対して増々高速化および帯域の拡大を要求しつつあるものがある。速度に加えて、ビデオ・オン・デマンド（VOD:Video on Demand）のような用途では、速度および間隔の双方に関してそのディスク・アクセスがタイムリーであることが必要である。即ち、VODは、中断のない広帯域を要件とする。具体的には、VODに要求される速度は、中断なく維持され、中断のないムービー・クリップが得られるようにしなければならない。
高可用性および高信頼性を備えたディスク・アレイ・システムが開発されている。即ち、安価なディスクの冗長アレイ（RAID:Redundant Array of Inexpensive Disks）として知られているシステムは、多数のディスクならびにデータ分配および訂正技法の使用により、ディスク障害の回復を図る。しかしながら、信頼性を高める技法は、I/O動作の低速化を招く場合が多い。
RAIDシステムの信頼性を維持しつつ、同時にその速度を高めるシステムおよび技法を考案することが望ましい。
発明の概要
本発明は、特にRAIDコントローラにおいて使用するための高性能データ経路を対象とする。高性能データ経路は、XORに基づくパリティ・システムを実装するディスクのアレイに対してデータの読み書きを行う方法の高速化を可能にする。高性能データ経路は、切り替え自在に相互接続されている第１バスおよび第２バスを含む。第１メモリが第１バス上に位置し、第２メモリが第２バス上に位置する。XORエンジンが、第１および第２バスに切り替え自在に接続可能となっている。XORエンジンを用いて、第１および第２バスを介して第１および第２メモリ間で受け渡しされるデータをバッファ内のデータとXOR演算を行い、結果を再度バッファに戻す。２つのメモリの内、一方をホスト側メモリと呼び、他方をディスク側メモリと呼ぶ。ホスト側メモリは、書き込み用データをステージし、ディスク側メモリは、ディスクから受け取ったデータをステージして読み出しを完了する。また、２つのメモリはキャッシュとして用いることができるという利点もある。
高性能データ経路は、ディスクの冗長アレイに対するデータの読み出しおよび書き込み双方を実行する際に有用である。ディスク群は相互に関連付けられており、当該ディスクの１つのセクタが、群内の他のディスクの各々のセクタに対応する。群内のディスクの１つのセクタは、対応するデータ・セクタ内の対応する複数のワードのXOR演算した結果かる成るパリティを保持する。高性能データ経路を通じてディスクからの読み出しを実行する場合、動作中に対応するワードのXORを演算する。即ち、データがXORエンジンを通過する際にXORを演算する。これを利用すると、全てのディスクが読み出しに応答し終わる前に、データをホスト・コンピュータに送達することが可能となる。最終ディスクからの欠落したデータは、XORエンジンにおいて、本質的に動作時に再生される。また、データはホスト側メモリ内のステージ領域から、高性能データ経路内に別個に備えられたディスク側メモリに移動するので、これらのXORを同時にXORエンジン内で演算するため、ディスクに対する書き込み動作も高速化する。このように、ホスト側メモリからディスク側メモリへのデータ移動の完了時に、XORバッファは、パリティ・ディスクに移動させるための、XOR演算して得たパリティを含む。
DMAがXORエンジンを制御し、更に追加の機能性を与えることもできる。例えば、DMAは、書き込むデータに対するチェックサムを作成したり、読み出すデータのチェックサムをチェックするために用いることもできる。動作時に処理することにより、DMAおよびXOR動作は、性能低下を招くことなく、完了するという利点がある。
本発明のその他の目的および利点は、図面と関連付けた以下の説明の間に明らかになろう。
【図面の簡単な説明】
図１は、本発明の高性能データ経路を含むRAIDコントローラのブロック図である。
図２は、図１の発明におけるディスク側メモリおよびホスト側メモリ各々と共に使用するメモリ・コントローラおよびメモリのブロック図である。
図３は、本発明の高性能データ経路において用いるためのデータ経路制御エンジンのブロック図である。
図４は、図３のデータ経路制御エンジンに含ませるためのDMAロジックのブロック図である。
好適実施形態の詳細な説明
これより、図１に示すRAIDコントローラに関連付けて、本発明の高性能データ経路の説明を行う。RAIDコントローラは、ディスク・アレイとホスト・コンピュータとの間のI/O動作を監視する。ディスク上のデータは、例えば、RAID3またはRAID5のようなRAIDアルゴリズムにしたがって配列されている。この好適な実施形態のRAIDコントローラは、ファイバ・チャネルと共に用いるために実装されている。ファイバ・チャネル・プロトコルは、ディスク・アレイとのシステム通信のために標準化された。ホスト側ファイバ・チャネル・コントローラ12が、RAIDコントローラのホスト端に備えられ、ホスト・コンピュータとインターフェースする。ハブ14によって、２つ以上のホストを、ホスト側ファイバ・チャネル・コントローラ12に接続することができる。ホスト側ファイバ・チャネル・コントローラはドライバ・ソフトウエアと共に、ホスト側ファイバ・チャネル・プロトコルを実装する。ホスト側ファイバ・チャネル・コントローラは、それ自体と付随するメモリ・システムとの間で２種類のデータ、即ち、制御データおよびユーザ・ディスク・データを移動させる。制御データは、帯域幅要件が比較的緩く、ユーザ・ディスク・データは、帯域幅要件が比較的厳しい。本発明の高性能データ経路は、ユーザ・ディスク・データを伴う動作を高速化するように設計されている。
制御データは、制御構造、少量のFCPデータ（モード・ページ等）、およびファイバ・チャネル・データ（ログイン等）から成る。これはいずれも頻繁にはアクセスされないデータである。このデータの帯域幅要件は比較的緩く、このデータを読み書きするプロセッサの要件は比較的厳しい。その結果、制御データを全て共有メモリ・システムに格納し、ジョブ・プロセッサ24もそれ自体の処理用ソフトウエアのためにこれを用いる。ホスト側ファイバ・チャネル・コントローラ12およびディスク側ファイバ・チャネル・コントローラ16に対する制御データのフェッチは全て、双方向共、標準的なPCIバスである上位バス20を通じて行われる。
ディスク・データは、ホストとディスクとの間を通過するデータである。このデータを読み書きする際には、ジョブ・プロセッサ24は不要である。このデータには、XORを演算し、チェックサムを計算する必要がある。データのワードと、パリティ・セクタ内の対応するワードとのXOR演算を行い、更新したパリティを得る。セクタに対するチェックサムは、当該セクタ内のディスク・データ・ワード全てについて一括してXORを演算することによって決定する。ディスク・データの帯域幅要件は重要である。その結果、本発明の特殊な高性能データ経路は、全てのディスク・データ移動に用いることを想定する。
ディスク側ファイバ・チャネル・コントローラ16は、ディスク側ドライバ・ソフトウエアと共に、ディスク・アレイ間にファイバ・チャネル調停ループ・プロトコルを実装する。ホスト側ファイバ・チャネル・コントローラ12およびディスク側ファイバ・チャネル・コントローラ16は双方共、PCIバス20および本発明の高性能データ経路へのアクセスを有する。ホスト側ファイバ・チャネル・コントローラはホスト・コンピュータとインターフェースし、一方ディスク側ファイバ・チャネル・コントローラは、ディスク・ドライブとインターフェースする。ホスト側ファイバ・チャネル・コントローラおよびディスク側チャネル・コントローラは、ヒューレットパッカード社（Hewlett Packard）のTachyonチップのような、従来のファイバ・コントローラとすればよい。
図のルータ18は、ファイバ・チャネル・システム内に従来からある２系統のファイバ・チャネル・ループのいずれかにディスク側ファイバ・チャネル・コントローラ16を接続する、システムの機能を表す。ファイバ・チャネル・システムにおいてディスク・アレイに接続するためのこの好適な方法は、“Fail−over Switching System"（フェイル・オーバ切り替えシステム）と題し、1996年11月14日に出願され、本願と同じ譲受人に譲渡された米国特許出願番号第08/749,311号に示されている。尚、その開示内容は、この言及により本願にも含まれるものとする。
バス・ガスケット（bus gasket）22は、ファイバ・チャネル・コントローラの各々のバスと、PCIバス20および本発明の高性能データ経路との間にインターフェースを形成する。PCIバスは、PCIブリッジ・インターフェース26を介して、ジョブ・プロセッサ24に接続されている。PCIブリッジ・インターフェース26は、32ビットPCIバスを、ジョブ・プロセッサ24内で用いられている64ビットの60Xバスとインターフェースするために必要とされる。ジョブ・プロセッサ24は、マイクロプロセッサを含む。この好適な実施形態によれば、200MHZの処理能力を有するMotorola Power PC（モトローラ社のパワーPC）を実装している。ジョブ・プロセッサ24を完成するために、プロセッサ・２次キャッシュ、制御用DRAMおよびフラッシュROMもある。RAIDコントローラの起動手順に関するファームウエアは、フラッシュROM内にある。フラッシュROM内のファームウエアは、ジョブ・プロセッサ24で実行する。ジョブ・プロセッサは、固定量のDRAMを含み、この好適な実施形態によれば、8MBであり、ファームウエア、ディスク・キャッシュ追跡構造、およびファイバ・チャネル・コントローラ用制御構造によって用いられる。
ローカル・リソース・ユニット28が、PCI−PCMCIAブリッジ30を介して、PCIバスに接続されている。ローカル・リソース・ユニット28は、環境モニタである。これは、RAIDコントローラによって使用される制御、状態および共有リソースのための収集領域を与える。これらのリソースには、外部コンソール、現場交換型ユニットの状態、およびスタンバイ電力監視のための通信ポスト（communication post）が含まれる。
次に、RAIDコントローラにおける高性能データ経路について説明する。RAIDコントローラの通常動作の間、ディスクI/Oの非同期的な性質を考慮するために、ステージング・メモリが必要となる。全てのディスク動作の完了を待っている間、論理的には関連がある動作であるが物理的には別個のディスク動作をステージする必要がある場合が多い。このため、RAIDコントローラはステージング・メモリを有していなければならない。本発明によれば、第１ホスト側メモリ32および第２ディスク側メモリ34が備えられている。本発明の有利な構造は、ホスト側メモリ32およびディスク側メモリ34が、ステージング・メモリおよびキャッシュ・メモリ双方として二重に機能し得ることである。別個のディスク側およびホスト側キャッシュは、現行の設計でできるだけそれらのソースの近くに配することができる。ディスク・キャッシュ・アルゴリズムやアーキテクチャは、当技術分野では周知である。ホスト側メモリおよびディスク側メモリは、この好適な実施形態によれば、ECC（エラー訂正コード）で保護されたDRAM  DIMMである。メモリは各々メモリ・コントローラ36によって制御される。高性能データ経路は、ホスト側メモリ32を動作させるメモリ・コントローラ36に接続するための第１バス38を含む。また、ディスク側メモリ34を動作させるメモリ・コントローラと接続するための第２バス40もある。第１および第２バスは、切替装置42によって、選択的に接続可能である。
切替装置42は、データ経路制御エンジン44にも接続されている。データ経路制御エンジンは、結合型ダイレクト・メモリ・アクセス・ユニット（DMA）およびXORエンジンである。また、データ経路制御エンジンは、チェックサム・エンジンを含んでもよい。切替装置42は、第１バス、第２バスおよびデータ経路制御エンジンを一度に全て接続することができ、あるいは、ホスト側メモリ32またはディスク側メモリ34のいずれかを他のものから分離するために用いることも可能である。データ経路制御エンジン44は、DMA/XORエンジン46およびXORバッファ48を含む。データ転送時にXORを実行する際、ホスト側メモリとディスク側メモリとの間で受け渡される最初のデータは、XORバッファ48にコピーされる。これら２つのメモリ間における後続のデータ転送において、DMA/XORエンジンによってデータ・ワードとXORバッファ48内の対応するデータワードとのXOR演算を行う。その度に、XOR演算の結果をXORバッファ48に入れ換える。相互に関連するRAIDディスクに対する書き込み動作を実行する際、対応する群内の全データのXOR演算が終了したときに、パリティ・データがXORバッファ内に得られる。
シーケンサ50を用いて、DMA/XORエンジン46の動作を制御する。シーケンサは、命令のリストを実行するマイクロプロセッサである。命令は、ジョブ・プロセッサ24によって与えられる。PCIブリッジ・インターフェース52は、シーケンサ50の64ビット・バスを、32ビットPCIバスとインターフェースする。シーケンサ50は、当該シーケンサ50の構成および起動時自己検査コードを格納するフラッシュROM54と共に動作する。また、シーケンサ50は、切替装置42の状態に関して、DMAに指示を出す。シーケンサは、この好適な実施形態によれば、100MHZまで動作するモトローラ社のパワーPCとするとよい。
この好適なRAIDコントローラには、ピア・コントローラ（peer controller）が備えられている。２つのコントローラは、通常動作では、各々独立したファイバ・チャネルに接続されている。これらのコントロール間の直接SCSI接続によって、２つのコントローラ間で直接通信が行われる。ピア・ブリッジ60が、この通信を簡便化する。ホスト側メモリ32において可用性の高い書き込みキャッシュを維持するためには、これをミラー（mirror）しなければならない。ピア・プロセッサ内部のメモリを用いて、各RAIDコントローラ毎に書き込みキャッシュをミラーする。２つのピア・コントローラ間に２系統の専用64ビット・データ経路を備え、キャッシュ・データをミラーするために用いる。全ての書き込みデータは、ディスクに書き込む前に、ミラ−処理（mirroring）を受ける。ミラー処理は、書き込みバス38を読み出しバス40から分離して行うことができるので、読み出しバスは、ミラー処理プロセスの間別の動作を扱うことができて有利である。この好適な実施形態によるミラー・データは、一方のコントローラから他方へ送出される。即ち、一方のコントローラは、物理的にピア・コントローラ上に存在するミラーFIFO58にデータを置く。ピア・コントローラは、そのミラーFIFO58からデータを取り出し、それ自体のメモリにそれを置く。この手法によって、受け取る側のコントローラは、データのアドレスに対してある有効性チェックを行い、２つのボード間にファイア・ウオールを構築して、ピア・コントローラ上の許可されていない位置に第１コントローラがデータを書き込もうとした場合に、この第１コントローラを捕まえて、受け取る側のピア・コントローラに何らかの損傷を与えることを防止することができる。
ミラー・キャッシュは、メモリ障害またはプロセッサ障害の場合に保護を与える。かかる障害の場合、ホストのデータは、ミラー・キャッシュ内に保持されで利用可能のままとなっている。
本発明の高性能データ経路は、ディスク群上のデータが相互に関連付けられているディスク・アレイと共に用いる。相互関連には、ディスクの１つにパリティを備えることを含む。パリティ・データは、他のディスクの各々のデータのXORである。ディスクは典型的にストライプ状で、各ディスクのセクタが１つのストライプに属するようになっている。あるストライプに属する複数のセクタは、ここでは、全て互いに対応すると言う。あるストライプのデータ・セクタ全てについて、データ・セクタ同士のXOR演算を行い、当該ストライプに対するパリティ・セクタを生成する。
本発明の高性能データ経路の利点は、RAID動作の完了において一層明確に見ることができる。例えば、RAID3読み出しは、ディスクの相互関連群からの１つのストライプにおける各ディスクからセクタを読むことによって行われる。複数のディスクからの読み出しは、同時に行われる。ディスクからディスク側メモリへのデータの読み出しの間、切替装置42は読み出しバス40を書き込みバス38およびデータ経路制御エンジン44から分離する。データが到達すると、ディスク側メモリ34に書き込まれる。このように、読み出し動作全体の完了を待つ間、データをディスク側メモリ内にステージする。典型的に、RAID3読み出しは、１つのストライプ内のデータ・セクタのみを読み取る。ストライプ内のデータ・セクタ全てが読み取られ、メモリに書き込まれるのを待つことになる。このため、ディスクの１つにエラーが発生したり、あるいは適切な時点に応答できなかった場合に、時として遅延の延長が生ずる可能性がある。また、劣化モードへの遷移（ディスク・ドライブの１つが失われる）があると、そのときにパリティ情報および再生が必要となるので、遅延が著しく長引くことになる。本発明によれば、パリティ・セクタを含むセクタ全てを読み出すが、最後のディスク・ドライブがそのデータのセクタを与えるまで待つ必要がないモードを選択することができる。この「Ｎ−１アンド・ゴー」（Ｎ−1 and go）モードで動作すると、相互関連群内の最初のＮ−１個のディスク（Ｎは、群内のディスク総数）からのデータが、連続的にディスク側メモリからホスト側メモリに移動する。このために、切替装置42は、ディスク側メモリ、ホスト側メモリ、およびデータ経路制御エンジンを相互接続する。データをディスク側メモリからホスト側メモリに移動させると同時に、最初の移動に対するデータのコピーを、XORバッファ48にコピー、即ち、充填する。ディスク側メモリからホスト側メモリに移動させる後続のデータ・セクタ毎に、DMA/XORエンジン46は、当該データと、XORバッファ48内にある対応するデータのワードとのXOR演算を実行する。XOR演算の結果を、XORバッファ内で置換する。XOR演算は、ストライプ内の１つを除いて全ての対応するセクタを移動させるまで、連続的に繰り返される。ジョブ・プロセッサ24は、常にどのデータおよびパリティがディスクから受け取られたかについて、どのディスクI/Oが完了したかに基づいて把握している。これは、実行すべき動作のリストをシーケンサ50に供給する際に用いられる。最後の移動させない（missing）セクタがデータ・セクタである場合、XORバッファ48の内容が、未だ到達していないセクタ内のデータに等しいはずであるので、これをホスト側メモリに移動させる。最後の移動させないセクタがパリティ・セクタである場合、XORバッファ48の内容は不要であり、通常のRAID3データ・セクタ移動は既に完了した。
高性能データ経路による補助を受ける書き込み動作は以下のように行われる。書き込むべきデータをホスト側メモリ32に書き込む間、書き込みバス38を読み出しバス40およびデータ経路制御エンジン44から分離する。したがって、書き込みの完了を待つ間、ホスト側メモリ内にデータをステージする。ホスト側メモリを、データ経路制御エンジンおよびディスク側メモリと接続するように切り替える。ホスト側メモリからディスク側メモリに、データ・セクタを連続して移動させる。最初のデータ・セクタをコピーし、XORバッファ48に充填する。連続する各データ・セクタ毎に、そのデータ・ワードの、XORバッファ48内の対応するワードとのXOR演算をDMA/XORエンジン46内で実行し、得られた結果をXORバッファ48に戻す。最後のデータ・セクタのXOR演算を実行した後、XORバッファ48の内容をディスク側メモリに移動させ、パリティ・セクタとして扱う。ストライプのデータ・セクタおよびパリティ・セクタは既にディスク側メモリ内にあり、ディスク側ファイバ・チャネル・コントローラ16の制御の下で、それぞれのディスクに書き込むことができる。ディスクへの書き込みは、読み出しバス40をスイッチ42によって書き込みバス38およびデータ経路制御エンジン44から分離した状態で行う。
ホスト側メモリおよびディスク側メモリに対するメモリ・コントローラ36は、図２に示すのと同様に構成するとよい。以下この好適な実施態様を具体的に説明するが、当業者は、ここに特許請求する本発明の機能を達成するメモリ・コントローラをいくつでも実現することができよう。本発明のメモリ制御の必要性を満足するためには、従来のメモリ制御技法も実施可能である。このように、本発明は、以下に論ずるこの好適な実施形態のメモリ・コントローラには全く限定されない。この好適な実施形態のメモリ・コントローラを動作させるためのロジックは、メモリ制御ロジック・デバイス70内に収容されている。ロジック・デバイスは、Advanced Micro Devices（アドバンスト  マイクロ  デバイセズ社）が製造するような、複合プログラム可能ロジック・デバイス（CPLD:Complex Programmable Logic Device）とすればよい。メモリ制御ロジック・デバイス70は、３つの部分、即ち、アドレス・コントローラ、データ経路コントローラ、およびDIMMコントローラで構成されている。アドレス・コントローラは、アドレスおよびそれぞれのバスからのコマンドをラッチする。このアドレス上で、パリティ・チェックを行う。ロジック・デバイス70は、アドレスをデコードし、行および列アドレスを発生し、バースト動作の間CAS（列アドレス・ストローブ）アドレスを増分し、ページ交差（page crossing）を扱う。ロジック・デバイス70のデータ・コントローラ部分は、イニシエータとターゲットとの間の全てのデータ経路制御およびデータ有効ハンドシェーク・プロトコルを担当する。DIMMコントローラ部分は、RAS（行アドレス・ストローブ）、CAS、WE（書き込みイネーブル）、OE（出力イネーブル）、およびDRAMのリフレッシュを扱う。DIMMコントローラは、RASおよびCAS状態機械を内蔵する。CAS機械は、66MHzで動作するコントローラの唯一の部分である。この好適な実施形態では、コントローラの残りの部分は33MHZで動作する。ロジック・デバイスのアドレス・コントローラは、アドレス・レジスタ72と共に動作する。アドレス・レジスタは、パリティ発生器／チェッカを備えた２つのバス・トランシーバから成る。この好適な実施形態では、アドレス・コントローラへの複数の入力の一つを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は、データの下位側32ビットと時間多重化される。これは、１サイクルの間N_X_FRAMEによってアサートされる。アドレス・パリティ・ピンX_PARは、奇数バイト・パリティである。これらは、１サイクルの間N_X_FRAMEによってアサートされる。ビット3:0は、X_ADに対するアドレス・パリティを収容する。N_X_FRAMEがアサートされた後のサイクルで、アドレスがアドレス・レジスタにラッチされたときに、奇数バイト・パリティに対してアドレスをチェックする。１つの奇数バイト・パリティ・エラーがあった場合、アドレス・レジスタ72は、N_X_FRAMEがアサートされた後のサイクルにおいて、アドレス・パリティ・エラー・フラグN_X_ADD_PERRをセットする。バス・アドレスBAは、ロジック・デバイス70によって、アドレス・レジスタ72からアクセスされる。アドレス・レジスタには、メモリ・アクセスを開始するためのアドレスが与えられ、アクセスが完了するまで、このアドレスを増分する。
更に、アドレス・コントローラに関して、65ビート（520バイト）までのバーストを可能にするために、列アドレスはインクリメンタを有する。DRAMページの交差（行アドレスを増分しなければならない場合は、8Kバイト境界）が検出された場合、N_RASがプリチャージされている間に、増分行アドレスを発生する。N_RASはDIMM33に対する行アドレス・ストローブである。これは、N_X_FRAMEの２サイクル後にアサートされ、CAS状態機械がアイドル状態になった後のサイクルでディアサートされる。ページ交差において、新たな行アドレスを発生している間に、プリチャージのためにこれをディアサートする。N_CASはDIMM33に対する列アドレス・ストローブである。これは、33MHZサイクルの半分の間アサートされ、66MHzクロックによって駆動される。待ち状態の間、これはプリチャージ（ディアサート）に保持される。この好適な実施形態は、DRAMサイズには独立したページ・サイズに対応するように構成されている。好適な実施形態では、メモリ設計は、透過的にページ交差に対応し、読み出しとディスク側メモリおよびホスト側メモリとの間のデータ転送の同期を可能とする。したがって、ページ交差の間、追加の待ち状態の必要はない。
この好適な発明のディスク側メモリおよびホスト側メモリは、非インターリーブDIMMソケットに挿入する。16Mビットおよび64MビットのDRAMを用いれば、所望サイズのメモリを構成することができる。この好適な実施形態では、DIMMソケットは、3.3ボルトのDRAMのみがソケットの挿入できるように、電圧による制限を設けている（voltage key）。DIMM33は、74LVT16244を用いて、N_RASを除く全ての制御信号及びアドレスをバッファすることが好ましい。各DRAMの傍らに、減結合コンデンサが取り付けられている。
ロジック・デバイス70のDIMMコントローラは、RAS状態機械およびCAS状態機械を含む。RAS状態機械は、リフレッシュおよび読み出し／書き込みアクセス双方を扱う、マスタ状態機械である。読み出し／書き込み動作時に、N_RASは、N_X_FRAMEがアサートされて３サイクル後にアサートされ、CAS状態機械がアイドル状態に戻るまで、アサートされたままとなっている。ページ交差の間、RAS状態機械は、アイドルを通じてサイクルを逆行し、新たな行アドレスを発生している間に、N_RASをプリチャージする。CBR（RASの前のCAS）リフレッシュのために、RAS機械はCAS状態機械を起動し、次いでN_CASがアサートされて１サイクル後にN_RASをアサートする。
CAS状態機械は66MHZクロックで動作し、RAS状態機械によってトリガされる。読み出し／書き込みアクセスの間、N_CASは15ns間アサートされ、次いで15ns間プリチャージされる。マスタによって待ち状態がアサートされたか、あるいはページ交差が発生した場合、N_CASはプリチャージ状態に留まる。一旦CAS状態機械が起動されたなら、これは33MHZクロック信号との同期を取るので、N_CASは常に、33MHZクロック信号の正エッジと整合する66MHZクロック信号の正エッジ上でアサートされる。このように、機械は、30nsサイクルの後半において、33MHZ信号のみをサンプリングする。DIMMの各々は、N_WE（3:0）およびN_MOE（3:0）で示す、別個のイネーブル信号を有する。出力イネーブルN_MOEは、読み出し時にN_RASと同じサイクルにおいてアサートされ、ページ交差がなければ、N_RASがアサートされている限りアサートされている。ページ交差の間、N_RASがプリチャージしている間、出力イネーブル信号が切り替えられる。書き込みイネーブル信号N_WEも同様に扱われる。これは、書き込み時にN_RASと同じサイクルにおいてアサートされ、ページ交差がなければ、N_RASがアサートされている限りアサートされている。
ローカル・リソース・ユニット（LRU）28内のタイマは、15.4μｓ毎にN_REF_TIMEをアサートする。ロジック・デバイス70は、リフレッシュ状態機械を含み、コントローラの現状態には関係なく、続くサイクルにおいてN_X_REF_REQをアサートして、リフレッシュ・サイクルを要求する。Xbusがアイドルになるまでリフレッシュを許可しないのは、CPLDにプログラムされているアービタによるものである。N_X_REF_GNTを受け取ると、RASおよびCAS状態機械によってCBRリフレッシュ・サイクルが起動される。ディスク側メモリおよびホスト側メモリは同時にリフレッシュされる。リフレッシュが完了するまでN_X_REF_REQはアサート状態に留まる。これによって、XBUSが自由になったときをアービタに知らせる。アービタは、リフレッシュの間、いずれにもバスを付与しない。
ロジック・デバイス70のデータ経路コントローラは、第１データ・レジスタ76、第２データ・レジスタ78、エラー検出／訂正デバイス80、およびデータ・トランシーバ82、ならびにXbusに対するデータ有効ハンドシェーク・インターフェース・プロトコルを制御する。読み出し時、イネーブルされたDIMMから第２データ・レジスタ78にデータをクロック入力する。次に、EDAC80を通過モード（flow−through mode）で用いるために、33MHZクロックの正エッジ上で第１データ・レジスタ76にデータをクロック入力する。EDAC80を通過しデータ・トランシーバ82に設定を行うために１回のサイクル（full cycle）がある。EDAC80は、ECC検出および訂正を動作中に行い、Xbusに対して奇数バイト・パリティを発生する。データは、次のサイクルにおいてXbus上に駆動される。N_RD_XOEは、データ・トランシーバの出力イネーブルである。EDACは、パリティをチェックし、ECCチェック・ビットを発生する。次のサイクルにおいて、データを第２データ・レジスタ78にクロック入力し、後続のサイクルにおいてデータを適切なDIMMに書き込む。
ページ交差の間、ディスク側メモリとホスト側メモリとの間でイニシエータ・レディ信号を制御する際に、プレ・ターゲット・レディ信号を用いてDMA66を補助する。プレ・ターゲット・レディ信号は、メモリがページ境界を交差する用意をしている間、データ転送を保留する。読み出し動作が行われている場合、Xbus上でデータが有効になる前のサイクルで、プレ・ターゲット・レディ信号をアサートする。書き込みメモリと読み出しメモリとの間の移動では、これによって、DMAコントローラは、次のサイクルにおける読み出しのターゲットへのイニシエータ・レディ信号をアサートすることができる。次のサイクルにおいて、ターゲット・レディ信号をアサートし、N_X_FRAMEがディアサートされた後のサイクルまで、アサートされている。（単一ビート動作では、イニシエータ・レディ信号もアサートされている場合、これは１サイクルだけアサートされる。）
書き込み動作では、Xbusからデータを受け入れる用意ができる前のサイクルにおいて、プレ・ターゲット・レディ信号をアサートする。書き込みメモリと読み出しメモリとの間の移動では、これによって、DMAは、次のサイクルにおける書き込みのソースへのイニシエータ・レディ信号をアサートすることができる。ターゲット・レディ信号のアサートおよびディアサートは、読み出しの場合と同じである。
この好適な実施形態のEDAC80は、IDT49C466Aである。これは、64ビット通過エラー検出および訂正ユニットである。これは、修正ハミング・コードを用いて全ての単一ビット・ハードおよびソフト・エラーを訂正し、全ての二重ビット・エラーおよびいくつかの多ビット・エラーを検出する。通過アーキテクチャに別個のシステム・バスおよびメモリ・バスを備えることにより、パイプライン・データ経路が可能になる。
次に図３を参照し、DMA/XORエンジンの動作について、更に詳しく説明する。DMA/XORエンジンは、２つのサブユニットから成る。第１サブユニットはデータ・エンジンであり、第２サブユニットはXORエンジンである。データ・エンジンは、チェックサムの発生／チェック、ディスク側メモリとホスト側メモリとの間、ホスト側メモリからミラーFIFO58、XORバッファ48からディスク側メモリおよびホスト側メモリ、ディスク側メモリおよびホスト側メモリからXORバッファ48へのデータ移動、ならびにディスク側メモリまたはホスト側メモリ、XORバッファあるいはミラーFIFO58のいずれかに対する双方向の即値データ移動を担当する。即値データ移動には、一定数値の所定の移動が予め符号化されている（数を定義するためにアドレスは必要ない）。また、データ・エンジンは、第２ピア・プロセッサ・ミラーFIFO58の状態を監視する。ミラーFIFO58内にデータがある場合、DMA66はそれを表す状態ビットを含む。一旦ピア・シーケンサがそのミラー・データをそのホスト側メモリに移動させたなら、それが終了し、転送の間エラーが発生しなかったことをDMAシーケンサに通知する。
DMA/XORエンジンの第２ユニットは、XORエンジンであり、RAIDパリティ・データを発生し、RAID3パリティ・データをチェックし、ディスク側メモリおよびホスト側メモリからのハードウエア・バス（データおよびアドレス経路）パリティ・エラーをチェックする。XORエンジンは、プログラム可能なロジック・デバイスおよびXORバッファ48で構成されている。XORエンジンは、RAIDデータ状態をデータ・エンジンに戻し、ハードウエア・パリティ・エラーをローカル・リソース・ユニット（LRU）28に戻す。
切替装置42は、３つの別個のスイッチとして実装する。第１スイッチ62は、書き込みバス38を読み出しバス40およびデータ経路制御エンジン44から分離するために用いることができる。第２スイッチ64は、読み出しバス40を書き込みバス38およびデータ経路制御エンジン44から分離するために用いることができる。第３スイッチ68は、XORバッファ48の出力を受け取るように接続されている。第３スイッチ68は、XORバッファ48内にある結果を、他の２つのスイッチの状態に応じて、読み出しバスまたは書き込みバスにロードすることができる。この好適な実施形態では、これらのスイッチは、クロスバー・スイッチ、具体的には、CBT16212スイッチによって実施する。スイッチの状態は、DMA66によって制御される。スイッチの状態は、読み出しバス40、書き込みバス38およびデータ経路制御エンジン44の全てを共に接続するように制御することも可能である。あるいは、スイッチは、これらのデータ経路の１つ以上を他のものから分離するように制御することも可能である。
DMA66は、シーケンサ50によってプログラムされ、そのタスクを完了した時に、シーケンサに状態を戻す。シーケンサ50は、トランシーバ74を介して、フラッシュROM54およびDMA66と通信する。トランシーバ74は、シーケンサからDMA内のレジスタまでのバッファリング経路を与える。シーケンサは、DMAレジスタに対して読み出しおよび書き込みを行う。シーケンサ50は、フラッシュROM54内のプログラムを用いてブート・アップを行う。
DMA66は、読み出し／書き込み動作の形態で、ディスク側メモリまたはホスト側メモリ、ミラーFIFO、あるいはXORエンジンと通信を行う。各セクタの移動毎に、データ・エンジンは自動的に当該データのチェックサムを発生するかあるいはチェックする。また、チェックサムは、XORバッファ48からデータがアンロードされているときにはいつでも発生する。チェックサム・プロセスを開始するには、あるビット（「セクタ開始」ビット）をセットし、セクタ転送の開始を示す。このビットをセットすることにより、チェックサム・ロジックは、チェックサム・シード（seed）の内容と最初のデータ部分とのXOR演算を行う。このビットがセットされていない場合、最初のデータ部分とチェックサム・レジスタの内容とのXOR演算が行われる。セクタ開始ビットは、チェックサム・ロジックを変更することなく、セクタ・サイズを可変とすることができる。状態ビットのレジスタ・セットが読み込まれたときはいつでも、算出されたチェックサムがシーケンサに戻される。チェックサムの発生に関して、チェックサムが発生され、データ・バス上に合流されるときはいつでも、データの伝搬を保留する。このサイクルは、データ・バスを転換（turn around）させ、チェックサムの発生を終了するために用いられる。
DMAは、５つのフィールドを有するCMD/状態レジスタを含む。第１フィールドは、動作が、ディスク側メモリまたはホスト側メモリを伴うデータ移動か、あるいは即値データ、即ち、単一ビート（８バイト）のデータの読み出し／書き込みであるかをDMAに示す。データ移動では、ソース・レジスタ内のソース・アドレスを用いて、CMD/状態レジスタのソース・フィールドによって、データ・ソースを指定しなければならない。ソースがXORバッファ48である場合、XORエンジンはデータをアンロードし、同時に同じデータでそれ自体を再度充填する。これによって、RAID3再生データをXORバッファ48内に留めておくことができるので、最終データ部分に対するチェックを行うことができる。一旦セクタの最終部分が入力されたなら、CMD/状態レジスタのチェック・パリティ・データ・ビットをセットすることにより、これをチェックすることができる。また、CMD/状態内の宛先フィールドおよび宛先レジスタ内のそのアドレスをセットすることにより、宛先も示さなければならない。転送すべきデータ量は、ワード・カウント・フィールドによって示される。
フラッシュROM54は、ブート・コードを格納するために用いられる。この好適な実施形態のフラッシュROMは、512KBx8であり、データ・バスの最上位バイト・レーン上に位置する。
DMAエンジンは、常にイニシエータとして機能し、それ自体がデータを発していない場合でも、イニシエータ・レディ信号を駆動する役を担っている。ディスク側メモリおよびホスト側メモリ、ならびにミラーFIFOは常にターゲットである。書き込みバス38および読み出しバス40は各々、これらのバスが互いに結合された場合でも、それ自体のインターフェース制御信号を有する。ディスク側メモリとホスト側メモリとの間の移動の開始時に、DMAはこれら２つのメモリ・システム間のデータ流の同期を取る。DMAは、イニシエータ・レディ信号およびプレ・ターゲット・レディ信号を通じて、メモリとハンドシェークを行う。メモリがデータを受け取るまたは送る用意ができた場合、データが有効になる１サイクル前にプレ・ターゲット・レディ信号をアサートする。これに応答して、DMAはイニシエータ・レディ信号をアサートする。転送時に双方のメモリを使用している場合、DMAは、双方のプレ・ターゲット・レディ信号を受け取るまで、これらのメモリへのイニシエータ・レディ信号をアサートしない。一旦これらの信号を双方共受け取ったなら、イニシエータ・レディ信号を同時にアサートする。その時に、データはXbus、即ち、読み出しバスおよび書き込みバス上で有効となったと見なされる。
この好適な実施形態によれば、チェックサム以外の他の有効性チェック機構も用いられる。タイム・スタンプは、各データ・セクタの有効性フィールド内に位置する一意の数である。主要なストライプの更新中に、RAID群内の各セクタに、この一意の数を挿入する。主要なストライプの更新とは、RAIDストライプ内の各セクタを充填するデータを書き込むことを意味する。その後セクタにデータを書き込む場合、タイム・スタンプを無効化する。次のストライプの更新時に新たなタイム・スタンプを挿入する。書き込みスタンプは、群内の各ディスク毎に１ビットを与える。あるディスクに書き込みを行うとき、当該ディスクに対するビットの値を反転する。即ち、どちらが現在の値かに応じて、１から０にまたは０から１に変化させる。この好適な実施形態の書き込みスタンプおよびタイム・スタンプ情報に適応するためには、DMAはデータ転送の終了時に動作を保留し、チェックサムおよびスタンプ情報を添付するだけでよい。同時に、イニシエータ・レディ信号が１サイクルの間ディアサートされ、次いでDMAからのスタンプ情報およびXORエンジンからのチェックサム情報を含む８バイトがバス上に来たときに、１サイクルの間アサートされる。この１サイクルの遅延は、チェックサムの発生を完了するために必要である。データをディスク側メモリからホスト側メモリに移動させる場合のような逆方向においては、スタンプ情報を抜き取り、DMA内のスタンプ・レジスタに置く。スタンプ情報は、ホスト側メモリには送られない。このように、この好適な実施形態によれば、ホスト側メモリは各セクタ毎に512バイトを格納し、ディスク側メモリはセクタ当たり520バイトを格納する。
好適なXORバッファ48はFIFOである。FIFO48は１つのセクタを保持する。FIFO48は、３つの経路の１つからロードすることができる。経路の選択は、マルチプレクサ84の動作によって切り替えられる。マルチプレクサ84は、バッファ86によってFIFO48から分離することができる。第１経路は、データ・バスからの直接データを有する。バス・インターフェース88は、XORエンジンにおいて用いるために、バスからデータを取り出す。データは外部で登録され、FIFOに書き込まれる前にパリティがチェックされる。第２経路は、FIFOからそれ自体へのフィードバック経路である。これが必要なのは、FIFOデータをバス上にアンロードしつつ、FIFO内にコピーを維持するためである。FIFOに至る最後の論理経路は、XOR経路である。XORロジック90は、バスからの登録されているデータとFIFOの内容との排他的OR演算を行う。XORの結果は、古いデータが順次排他的ORロジックに出力されるに連れて、古いデータの後にFIFO48に入力される。こうして、既存のデータは排他的ORの結果で置換される。必要とする経路の選択は、シーケンサによって、CMD/状態レジスタ内の適切なビットをセットすることによって行われる。XOR  FIFOからデータをアンロードしているときはいつでも、DMAロジックは、発生したチェックサムおよびDMAレジスタ・セット内にある書き込みスタンプおよびタイム・スタンプ情報を付加するようにプログラムすることができる。
XORエンジンは、RAID3ユーザ・データ・パリティ・エラーを検出するために用いることができるという利点がある。RAID3再生動作の間、XORエンジンは、DMAを介して、最終データ部分を再生するようにプログラムすることができる。データを再度発生したなら、FIFOバッファ48からホスト側メモリにアンロードすることができる。新たなデータを古いデータと比較する場合、アンロード動作の間に、チェック・パリティ・データ・ビットをセットすることができる。これによって、XOR  FIFOから読み出されつつある新たなデータを、FIFOバッファ48に書き戻すことができる。古いデータが入ってきたときに、XOR  FIFO動作によってこのビットをセットすることにより、新たなデータと比較することができる。古いデータと新たなデータとの間で不一致があると、CMD/状態レジスタ内において、チェック・サム・エラー・ビットがセットされる。尚、比較の間、XOR  FIFOには再ロードされないことに注意されたい。
図４は、動作中にチェックサムを実行するためのDMAロジックを示す。チェックサム・バッファ92は、チェックサム・データが計算されている際これを保持する。マルチプレクサ94は、チェックサムXORロジック96に、チェックサム・バッファ92内のデータまたはDMAレジスタ内にある初期のシード・データのいずれかを供給する。XORロジック96の他方の入力は、チェックサム処理を受けたデータである。
本発明の高性能データ経路は、RAID読み出し動作を実行するための「Ｎ−１アンド・ゴー」モードを可能にする。ドライブの１つが誤動作（struggle）しているか、あるいは動作しない場合、Ｎ−１アンド・ゴー・モードは、ホストに対する非常に一定した転送レートを維持することができる。Ｎ−１アンド・ゴーは、１つのドライブが誤動作しているかまたは動作不能状態にある状況では迅速であるが、この動作は通常動作よりは低速である。通常の状態でＮ−１アンド・ゴー動作が遅いのは、XOR動作を扱うためにレイテンシが加わるため、そしてディスク側ファイバ・ループから余分な要求が１つあるからである。データ・セクタからのデータが要求されるだけでなく、パリティ・セクタからのデータも要求される。このモードの利点は、スループットの変動が少ないことである。これが非常に重要な用途では、通常動作に対する速度低下は、容認し得るトレードオフである。
勿論、前述の好適な実施形態に対する種々の変更や改良も当業者には明白であることは理解されよう。かかる変更は、本発明の精神および範囲から逸脱することなく、更にその達成される利点を損なうことなく行うことができる。したがって、かかる変更や改良は、以下の請求の範囲によって包含されることを意図するものである。
【図２】
0003606881.tif 000002
【図１】
0003606881.tif 000003
【図３】
0003606881.tif 000004
【図４】
0003606881.tif 000005