JP3606881B2 - 動作時にXor演算を行う高性能データ経路 - Google Patents
動作時にXor演算を行う高性能データ経路 Download PDFInfo
- Publication number
- JP3606881B2 JP3606881B2 JP52256898A JP52256898A JP3606881B2 JP 3606881 B2 JP3606881 B2 JP 3606881B2 JP 52256898 A JP52256898 A JP 52256898A JP 52256898 A JP52256898 A JP 52256898A JP 3606881 B2 JP3606881 B2 JP 3606881B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- disk
- sector
- side memory
- xor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000015654 memory Effects 0.000 claims description 141
- 238000000034 method Methods 0.000 claims description 17
- 239000000835 fiber Substances 0.000 description 27
- LMDZBCPBFSXMTL-UHFFFAOYSA-N 1-ethyl-3-(3-dimethylaminopropyl)carbodiimide Chemical compound CCN=C=NCCCN(C)C LMDZBCPBFSXMTL-UHFFFAOYSA-N 0.000 description 16
- 239000003999 initiator Substances 0.000 description 12
- 230000000875 corresponding effect Effects 0.000 description 9
- 238000012546 transfer Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 7
- 238000012937 correction Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000002596 correlated effect Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000003467 diminishing effect Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1054—Parity-fast hardware, i.e. dedicated fast hardware for RAID systems with parity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本発明は、データ処理システムに用いる可用性の高いディスク・アレイに関し、更に特定すれば、ディスク・アクセス動作中、容認可能な信頼性のあるスループットを維持しつつ、有効性およびエラーのチェック機能を提供する高性能データ経路に関するものである。
多くのシステムおよびその用途において、I/Oレベルに隘路が見られる。用途には、そのデータ記憶装置に対して増々高速化および帯域の拡大を要求しつつあるものがある。速度に加えて、ビデオ・オン・デマンド(VOD:Video on Demand)のような用途では、速度および間隔の双方に関してそのディスク・アクセスがタイムリーであることが必要である。即ち、VODは、中断のない広帯域を要件とする。具体的には、VODに要求される速度は、中断なく維持され、中断のないムービー・クリップが得られるようにしなければならない。
高可用性および高信頼性を備えたディスク・アレイ・システムが開発されている。即ち、安価なディスクの冗長アレイ(RAID:Redundant Array of Inexpensive Disks)として知られているシステムは、多数のディスクならびにデータ分配および訂正技法の使用により、ディスク障害の回復を図る。しかしながら、信頼性を高める技法は、I/O動作の低速化を招く場合が多い。
RAIDシステムの信頼性を維持しつつ、同時にその速度を高めるシステムおよび技法を考案することが望ましい。
発明の概要
本発明は、特にRAIDコントローラにおいて使用するための高性能データ経路を対象とする。高性能データ経路は、XORに基づくパリティ・システムを実装するディスクのアレイに対してデータの読み書きを行う方法の高速化を可能にする。高性能データ経路は、切り替え自在に相互接続されている第1バスおよび第2バスを含む。第1メモリが第1バス上に位置し、第2メモリが第2バス上に位置する。XORエンジンが、第1および第2バスに切り替え自在に接続可能となっている。XORエンジンを用いて、第1および第2バスを介して第1および第2メモリ間で受け渡しされるデータをバッファ内のデータとXOR演算を行い、結果を再度バッファに戻す。2つのメモリの内、一方をホスト側メモリと呼び、他方をディスク側メモリと呼ぶ。ホスト側メモリは、書き込み用データをステージし、ディスク側メモリは、ディスクから受け取ったデータをステージして読み出しを完了する。また、2つのメモリはキャッシュとして用いることができるという利点もある。
高性能データ経路は、ディスクの冗長アレイに対するデータの読み出しおよび書き込み双方を実行する際に有用である。ディスク群は相互に関連付けられており、当該ディスクの1つのセクタが、群内の他のディスクの各々のセクタに対応する。群内のディスクの1つのセクタは、対応するデータ・セクタ内の対応する複数のワードのXOR演算した結果かる成るパリティを保持する。高性能データ経路を通じてディスクからの読み出しを実行する場合、動作中に対応するワードのXORを演算する。即ち、データがXORエンジンを通過する際にXORを演算する。これを利用すると、全てのディスクが読み出しに応答し終わる前に、データをホスト・コンピュータに送達することが可能となる。最終ディスクからの欠落したデータは、XORエンジンにおいて、本質的に動作時に再生される。また、データはホスト側メモリ内のステージ領域から、高性能データ経路内に別個に備えられたディスク側メモリに移動するので、これらのXORを同時にXORエンジン内で演算するため、ディスクに対する書き込み動作も高速化する。このように、ホスト側メモリからディスク側メモリへのデータ移動の完了時に、XORバッファは、パリティ・ディスクに移動させるための、XOR演算して得たパリティを含む。
DMAがXORエンジンを制御し、更に追加の機能性を与えることもできる。例えば、DMAは、書き込むデータに対するチェックサムを作成したり、読み出すデータのチェックサムをチェックするために用いることもできる。動作時に処理することにより、DMAおよびXOR動作は、性能低下を招くことなく、完了するという利点がある。
本発明のその他の目的および利点は、図面と関連付けた以下の説明の間に明らかになろう。
【図面の簡単な説明】
図1は、本発明の高性能データ経路を含むRAIDコントローラのブロック図である。
図2は、図1の発明におけるディスク側メモリおよびホスト側メモリ各々と共に使用するメモリ・コントローラおよびメモリのブロック図である。
図3は、本発明の高性能データ経路において用いるためのデータ経路制御エンジンのブロック図である。
図4は、図3のデータ経路制御エンジンに含ませるためのDMAロジックのブロック図である。
好適実施形態の詳細な説明
これより、図1に示すRAIDコントローラに関連付けて、本発明の高性能データ経路の説明を行う。RAIDコントローラは、ディスク・アレイとホスト・コンピュータとの間のI/O動作を監視する。ディスク上のデータは、例えば、RAID3またはRAID5のようなRAIDアルゴリズムにしたがって配列されている。この好適な実施形態のRAIDコントローラは、ファイバ・チャネルと共に用いるために実装されている。ファイバ・チャネル・プロトコルは、ディスク・アレイとのシステム通信のために標準化された。ホスト側ファイバ・チャネル・コントローラ12が、RAIDコントローラのホスト端に備えられ、ホスト・コンピュータとインターフェースする。ハブ14によって、2つ以上のホストを、ホスト側ファイバ・チャネル・コントローラ12に接続することができる。ホスト側ファイバ・チャネル・コントローラはドライバ・ソフトウエアと共に、ホスト側ファイバ・チャネル・プロトコルを実装する。ホスト側ファイバ・チャネル・コントローラは、それ自体と付随するメモリ・システムとの間で2種類のデータ、即ち、制御データおよびユーザ・ディスク・データを移動させる。制御データは、帯域幅要件が比較的緩く、ユーザ・ディスク・データは、帯域幅要件が比較的厳しい。本発明の高性能データ経路は、ユーザ・ディスク・データを伴う動作を高速化するように設計されている。
制御データは、制御構造、少量のFCPデータ(モード・ページ等)、およびファイバ・チャネル・データ(ログイン等)から成る。これはいずれも頻繁にはアクセスされないデータである。このデータの帯域幅要件は比較的緩く、このデータを読み書きするプロセッサの要件は比較的厳しい。その結果、制御データを全て共有メモリ・システムに格納し、ジョブ・プロセッサ24もそれ自体の処理用ソフトウエアのためにこれを用いる。ホスト側ファイバ・チャネル・コントローラ12およびディスク側ファイバ・チャネル・コントローラ16に対する制御データのフェッチは全て、双方向共、標準的なPCIバスである上位バス20を通じて行われる。
ディスク・データは、ホストとディスクとの間を通過するデータである。このデータを読み書きする際には、ジョブ・プロセッサ24は不要である。このデータには、XORを演算し、チェックサムを計算する必要がある。データのワードと、パリティ・セクタ内の対応するワードとのXOR演算を行い、更新したパリティを得る。セクタに対するチェックサムは、当該セクタ内のディスク・データ・ワード全てについて一括してXORを演算することによって決定する。ディスク・データの帯域幅要件は重要である。その結果、本発明の特殊な高性能データ経路は、全てのディスク・データ移動に用いることを想定する。
ディスク側ファイバ・チャネル・コントローラ16は、ディスク側ドライバ・ソフトウエアと共に、ディスク・アレイ間にファイバ・チャネル調停ループ・プロトコルを実装する。ホスト側ファイバ・チャネル・コントローラ12およびディスク側ファイバ・チャネル・コントローラ16は双方共、PCIバス20および本発明の高性能データ経路へのアクセスを有する。ホスト側ファイバ・チャネル・コントローラはホスト・コンピュータとインターフェースし、一方ディスク側ファイバ・チャネル・コントローラは、ディスク・ドライブとインターフェースする。ホスト側ファイバ・チャネル・コントローラおよびディスク側チャネル・コントローラは、ヒューレットパッカード社(Hewlett Packard)のTachyonチップのような、従来のファイバ・コントローラとすればよい。
図のルータ18は、ファイバ・チャネル・システム内に従来からある2系統のファイバ・チャネル・ループのいずれかにディスク側ファイバ・チャネル・コントローラ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を完成するために、プロセッサ・2次キャッシュ、制御用DRAMおよびフラッシュROMもある。RAIDコントローラの起動手順に関するファームウエアは、フラッシュROM内にある。フラッシュROM内のファームウエアは、ジョブ・プロセッサ24で実行する。ジョブ・プロセッサは、固定量のDRAMを含み、この好適な実施形態によれば、8MBであり、ファームウエア、ディスク・キャッシュ追跡構造、およびファイバ・チャネル・コントローラ用制御構造によって用いられる。
ローカル・リソース・ユニット28が、PCI−PCMCIAブリッジ30を介して、PCIバスに接続されている。ローカル・リソース・ユニット28は、環境モニタである。これは、RAIDコントローラによって使用される制御、状態および共有リソースのための収集領域を与える。これらのリソースには、外部コンソール、現場交換型ユニットの状態、およびスタンバイ電力監視のための通信ポスト(communication post)が含まれる。
次に、RAIDコントローラにおける高性能データ経路について説明する。RAIDコントローラの通常動作の間、ディスクI/Oの非同期的な性質を考慮するために、ステージング・メモリが必要となる。全てのディスク動作の完了を待っている間、論理的には関連がある動作であるが物理的には別個のディスク動作をステージする必要がある場合が多い。このため、RAIDコントローラはステージング・メモリを有していなければならない。本発明によれば、第1ホスト側メモリ32および第2ディスク側メモリ34が備えられている。本発明の有利な構造は、ホスト側メモリ32およびディスク側メモリ34が、ステージング・メモリおよびキャッシュ・メモリ双方として二重に機能し得ることである。別個のディスク側およびホスト側キャッシュは、現行の設計でできるだけそれらのソースの近くに配することができる。ディスク・キャッシュ・アルゴリズムやアーキテクチャは、当技術分野では周知である。ホスト側メモリおよびディスク側メモリは、この好適な実施形態によれば、ECC(エラー訂正コード)で保護されたDRAM DIMMである。メモリは各々メモリ・コントローラ36によって制御される。高性能データ経路は、ホスト側メモリ32を動作させるメモリ・コントローラ36に接続するための第1バス38を含む。また、ディスク側メモリ34を動作させるメモリ・コントローラと接続するための第2バス40もある。第1および第2バスは、切替装置42によって、選択的に接続可能である。
切替装置42は、データ経路制御エンジン44にも接続されている。データ経路制御エンジンは、結合型ダイレクト・メモリ・アクセス・ユニット(DMA)およびXORエンジンである。また、データ経路制御エンジンは、チェックサム・エンジンを含んでもよい。切替装置42は、第1バス、第2バスおよびデータ経路制御エンジンを一度に全て接続することができ、あるいは、ホスト側メモリ32またはディスク側メモリ34のいずれかを他のものから分離するために用いることも可能である。データ経路制御エンジン44は、DMA/XORエンジン46およびXORバッファ48を含む。データ転送時にXORを実行する際、ホスト側メモリとディスク側メモリとの間で受け渡される最初のデータは、XORバッファ48にコピーされる。これら2つのメモリ間における後続のデータ転送において、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)が備えられている。2つのコントローラは、通常動作では、各々独立したファイバ・チャネルに接続されている。これらのコントロール間の直接SCSI接続によって、2つのコントローラ間で直接通信が行われる。ピア・ブリッジ60が、この通信を簡便化する。ホスト側メモリ32において可用性の高い書き込みキャッシュを維持するためには、これをミラー(mirror)しなければならない。ピア・プロセッサ内部のメモリを用いて、各RAIDコントローラ毎に書き込みキャッシュをミラーする。2つのピア・コントローラ間に2系統の専用64ビット・データ経路を備え、キャッシュ・データをミラーするために用いる。全ての書き込みデータは、ディスクに書き込む前に、ミラ−処理(mirroring)を受ける。ミラー処理は、書き込みバス38を読み出しバス40から分離して行うことができるので、読み出しバスは、ミラー処理プロセスの間別の動作を扱うことができて有利である。この好適な実施形態によるミラー・データは、一方のコントローラから他方へ送出される。即ち、一方のコントローラは、物理的にピア・コントローラ上に存在するミラーFIFO58にデータを置く。ピア・コントローラは、そのミラーFIFO58からデータを取り出し、それ自体のメモリにそれを置く。この手法によって、受け取る側のコントローラは、データのアドレスに対してある有効性チェックを行い、2つのボード間にファイア・ウオールを構築して、ピア・コントローラ上の許可されていない位置に第1コントローラがデータを書き込もうとした場合に、この第1コントローラを捕まえて、受け取る側のピア・コントローラに何らかの損傷を与えることを防止することができる。
ミラー・キャッシュは、メモリ障害またはプロセッサ障害の場合に保護を与える。かかる障害の場合、ホストのデータは、ミラー・キャッシュ内に保持されで利用可能のままとなっている。
本発明の高性能データ経路は、ディスク群上のデータが相互に関連付けられているディスク・アレイと共に用いる。相互関連には、ディスクの1つにパリティを備えることを含む。パリティ・データは、他のディスクの各々のデータのXORである。ディスクは典型的にストライプ状で、各ディスクのセクタが1つのストライプに属するようになっている。あるストライプに属する複数のセクタは、ここでは、全て互いに対応すると言う。あるストライプのデータ・セクタ全てについて、データ・セクタ同士のXOR演算を行い、当該ストライプに対するパリティ・セクタを生成する。
本発明の高性能データ経路の利点は、RAID動作の完了において一層明確に見ることができる。例えば、RAID3読み出しは、ディスクの相互関連群からの1つのストライプにおける各ディスクからセクタを読むことによって行われる。複数のディスクからの読み出しは、同時に行われる。ディスクからディスク側メモリへのデータの読み出しの間、切替装置42は読み出しバス40を書き込みバス38およびデータ経路制御エンジン44から分離する。データが到達すると、ディスク側メモリ34に書き込まれる。このように、読み出し動作全体の完了を待つ間、データをディスク側メモリ内にステージする。典型的に、RAID3読み出しは、1つのストライプ内のデータ・セクタのみを読み取る。ストライプ内のデータ・セクタ全てが読み取られ、メモリに書き込まれるのを待つことになる。このため、ディスクの1つにエラーが発生したり、あるいは適切な時点に応答できなかった場合に、時として遅延の延長が生ずる可能性がある。また、劣化モードへの遷移(ディスク・ドライブの1つが失われる)があると、そのときにパリティ情報および再生が必要となるので、遅延が著しく長引くことになる。本発明によれば、パリティ・セクタを含むセクタ全てを読み出すが、最後のディスク・ドライブがそのデータのセクタを与えるまで待つ必要がないモードを選択することができる。この「N−1アンド・ゴー」(N−1 and go)モードで動作すると、相互関連群内の最初のN−1個のディスク(Nは、群内のディスク総数)からのデータが、連続的にディスク側メモリからホスト側メモリに移動する。このために、切替装置42は、ディスク側メモリ、ホスト側メモリ、およびデータ経路制御エンジンを相互接続する。データをディスク側メモリからホスト側メモリに移動させると同時に、最初の移動に対するデータのコピーを、XORバッファ48にコピー、即ち、充填する。ディスク側メモリからホスト側メモリに移動させる後続のデータ・セクタ毎に、DMA/XORエンジン46は、当該データと、XORバッファ48内にある対応するデータのワードとのXOR演算を実行する。XOR演算の結果を、XORバッファ内で置換する。XOR演算は、ストライプ内の1つを除いて全ての対応するセクタを移動させるまで、連続的に繰り返される。ジョブ・プロセッサ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は、図2に示すのと同様に構成するとよい。以下この好適な実施態様を具体的に説明するが、当業者は、ここに特許請求する本発明の機能を達成するメモリ・コントローラをいくつでも実現することができよう。本発明のメモリ制御の必要性を満足するためには、従来のメモリ制御技法も実施可能である。このように、本発明は、以下に論ずるこの好適な実施形態のメモリ・コントローラには全く限定されない。この好適な実施形態のメモリ・コントローラを動作させるためのロジックは、メモリ制御ロジック・デバイス70内に収容されている。ロジック・デバイスは、Advanced Micro Devices(アドバンスト マイクロ デバイセズ社)が製造するような、複合プログラム可能ロジック・デバイス(CPLD:Complex Programmable Logic Device)とすればよい。メモリ制御ロジック・デバイス70は、3つの部分、即ち、アドレス・コントローラ、データ経路コントローラ、およびDIMMコントローラで構成されている。アドレス・コントローラは、アドレスおよびそれぞれのバスからのコマンドをラッチする。このアドレス上で、パリティ・チェックを行う。ロジック・デバイス70は、アドレスをデコードし、行および列アドレスを発生し、バースト動作の間CAS(列アドレス・ストローブ)アドレスを増分し、ページ交差(page crossing)を扱う。ロジック・デバイス70のデータ・コントローラ部分は、イニシエータとターゲットとの間の全てのデータ経路制御およびデータ有効ハンドシェーク・プロトコルを担当する。DIMMコントローラ部分は、RAS(行アドレス・ストローブ)、CAS、WE(書き込みイネーブル)、OE(出力イネーブル)、およびDRAMのリフレッシュを扱う。DIMMコントローラは、RASおよびCAS状態機械を内蔵する。CAS機械は、66MHzで動作するコントローラの唯一の部分である。この好適な実施形態では、コントローラの残りの部分は33MHZで動作する。ロジック・デバイスのアドレス・コントローラは、アドレス・レジスタ72と共に動作する。アドレス・レジスタは、パリティ発生器/チェッカを備えた2つのバス・トランシーバから成る。この好適な実施形態では、アドレス・コントローラへの複数の入力の一つをN_X_FRAMEと呼ぶ。N_X_FRAME信号は、現バス・マスタによってアサートされると、アクセスの開始および期間を示す。これは、最後のデータ・フェーズの開始時にディアサートされる。単一ビート(8バイト)動作では、これは1サイクルの間アサートされる。「ビート」ということばは、ここで用いる場合、単一バス・サイクルを意味する。N_X_FRAME信号がラッチされると、ラッチは閉じられ、次のサイクル。ラッチは、動作が完了したときに、再度開かれる。各アドレス上で奇数バイト・パリティをチェックし、N_X_FRAMEがアサートされた後、サイクルは有効となる。読み出し/書き込みビットX_W_NRは、アドレス・フェーズ中、N_X_FRAMEによって1サイクルの間アサートされる。この好適な実施例では、他にもEDAC_CMDと称する同様のビットがある。EDACビットは、起動構成のためのEDACモード・レジスタ書き込み、またはEDAC診断レジスタ読み出しとして動作を定義する。これらの信号は双方とも、N_X_FRAMEがアサートされた最初のサイクルにおいて有効となる。
Xbusアドレス・バスX_ADは、データの下位側32ビットと時間多重化される。これは、1サイクルの間N_X_FRAMEによってアサートされる。アドレス・パリティ・ピンX_PARは、奇数バイト・パリティである。これらは、1サイクルの間N_X_FRAMEによってアサートされる。ビット3:0は、X_ADに対するアドレス・パリティを収容する。N_X_FRAMEがアサートされた後のサイクルで、アドレスがアドレス・レジスタにラッチされたときに、奇数バイト・パリティに対してアドレスをチェックする。1つの奇数バイト・パリティ・エラーがあった場合、アドレス・レジスタ72は、N_X_FRAMEがアサートされた後のサイクルにおいて、アドレス・パリティ・エラー・フラグN_X_ADD_PERRをセットする。バス・アドレスBAは、ロジック・デバイス70によって、アドレス・レジスタ72からアクセスされる。アドレス・レジスタには、メモリ・アクセスを開始するためのアドレスが与えられ、アクセスが完了するまで、このアドレスを増分する。
更に、アドレス・コントローラに関して、65ビート(520バイト)までのバーストを可能にするために、列アドレスはインクリメンタを有する。DRAMページの交差(行アドレスを増分しなければならない場合は、8Kバイト境界)が検出された場合、N_RASがプリチャージされている間に、増分行アドレスを発生する。N_RASはDIMM33に対する行アドレス・ストローブである。これは、N_X_FRAMEの2サイクル後にアサートされ、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がアサートされて3サイクル後にアサートされ、CAS状態機械がアイドル状態に戻るまで、アサートされたままとなっている。ページ交差の間、RAS状態機械は、アイドルを通じてサイクルを逆行し、新たな行アドレスを発生している間に、N_RASをプリチャージする。CBR(RASの前のCAS)リフレッシュのために、RAS機械はCAS状態機械を起動し、次いでN_CASがアサートされて1サイクル後に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μs毎にN_REF_TIMEをアサートする。ロジック・デバイス70は、リフレッシュ状態機械を含み、コントローラの現状態には関係なく、続くサイクルにおいてN_X_REF_REQをアサートして、リフレッシュ・サイクルを要求する。Xbusがアイドルになるまでリフレッシュを許可しないのは、CPLDにプログラムされているアービタによるものである。N_X_REF_GNTを受け取ると、RASおよびCAS状態機械によってCBRリフレッシュ・サイクルが起動される。ディスク側メモリおよびホスト側メモリは同時にリフレッシュされる。リフレッシュが完了するまでN_X_REF_REQはアサート状態に留まる。これによって、XBUSが自由になったときをアービタに知らせる。アービタは、リフレッシュの間、いずれにもバスを付与しない。
ロジック・デバイス70のデータ経路コントローラは、第1データ・レジスタ76、第2データ・レジスタ78、エラー検出/訂正デバイス80、およびデータ・トランシーバ82、ならびにXbusに対するデータ有効ハンドシェーク・インターフェース・プロトコルを制御する。読み出し時、イネーブルされたDIMMから第2データ・レジスタ78にデータをクロック入力する。次に、EDAC80を通過モード(flow−through mode)で用いるために、33MHZクロックの正エッジ上で第1データ・レジスタ76にデータをクロック入力する。EDAC80を通過しデータ・トランシーバ82に設定を行うために1回のサイクル(full cycle)がある。EDAC80は、ECC検出および訂正を動作中に行い、Xbusに対して奇数バイト・パリティを発生する。データは、次のサイクルにおいてXbus上に駆動される。N_RD_XOEは、データ・トランシーバの出力イネーブルである。EDACは、パリティをチェックし、ECCチェック・ビットを発生する。次のサイクルにおいて、データを第2データ・レジスタ78にクロック入力し、後続のサイクルにおいてデータを適切なDIMMに書き込む。
ページ交差の間、ディスク側メモリとホスト側メモリとの間でイニシエータ・レディ信号を制御する際に、プレ・ターゲット・レディ信号を用いてDMA66を補助する。プレ・ターゲット・レディ信号は、メモリがページ境界を交差する用意をしている間、データ転送を保留する。読み出し動作が行われている場合、Xbus上でデータが有効になる前のサイクルで、プレ・ターゲット・レディ信号をアサートする。書き込みメモリと読み出しメモリとの間の移動では、これによって、DMAコントローラは、次のサイクルにおける読み出しのターゲットへのイニシエータ・レディ信号をアサートすることができる。次のサイクルにおいて、ターゲット・レディ信号をアサートし、N_X_FRAMEがディアサートされた後のサイクルまで、アサートされている。(単一ビート動作では、イニシエータ・レディ信号もアサートされている場合、これは1サイクルだけアサートされる。)
書き込み動作では、Xbusからデータを受け入れる用意ができる前のサイクルにおいて、プレ・ターゲット・レディ信号をアサートする。書き込みメモリと読み出しメモリとの間の移動では、これによって、DMAは、次のサイクルにおける書き込みのソースへのイニシエータ・レディ信号をアサートすることができる。ターゲット・レディ信号のアサートおよびディアサートは、読み出しの場合と同じである。
この好適な実施形態のEDAC80は、IDT49C466Aである。これは、64ビット通過エラー検出および訂正ユニットである。これは、修正ハミング・コードを用いて全ての単一ビット・ハードおよびソフト・エラーを訂正し、全ての二重ビット・エラーおよびいくつかの多ビット・エラーを検出する。通過アーキテクチャに別個のシステム・バスおよびメモリ・バスを備えることにより、パイプライン・データ経路が可能になる。
次に図3を参照し、DMA/XORエンジンの動作について、更に詳しく説明する。DMA/XORエンジンは、2つのサブユニットから成る。第1サブユニットはデータ・エンジンであり、第2サブユニットはXORエンジンである。データ・エンジンは、チェックサムの発生/チェック、ディスク側メモリとホスト側メモリとの間、ホスト側メモリからミラーFIFO58、XORバッファ48からディスク側メモリおよびホスト側メモリ、ディスク側メモリおよびホスト側メモリからXORバッファ48へのデータ移動、ならびにディスク側メモリまたはホスト側メモリ、XORバッファあるいはミラーFIFO58のいずれかに対する双方向の即値データ移動を担当する。即値データ移動には、一定数値の所定の移動が予め符号化されている(数を定義するためにアドレスは必要ない)。また、データ・エンジンは、第2ピア・プロセッサ・ミラーFIFO58の状態を監視する。ミラーFIFO58内にデータがある場合、DMA66はそれを表す状態ビットを含む。一旦ピア・シーケンサがそのミラー・データをそのホスト側メモリに移動させたなら、それが終了し、転送の間エラーが発生しなかったことをDMAシーケンサに通知する。
DMA/XORエンジンの第2ユニットは、XORエンジンであり、RAIDパリティ・データを発生し、RAID3パリティ・データをチェックし、ディスク側メモリおよびホスト側メモリからのハードウエア・バス(データおよびアドレス経路)パリティ・エラーをチェックする。XORエンジンは、プログラム可能なロジック・デバイスおよびXORバッファ48で構成されている。XORエンジンは、RAIDデータ状態をデータ・エンジンに戻し、ハードウエア・パリティ・エラーをローカル・リソース・ユニット(LRU)28に戻す。
切替装置42は、3つの別個のスイッチとして実装する。第1スイッチ62は、書き込みバス38を読み出しバス40およびデータ経路制御エンジン44から分離するために用いることができる。第2スイッチ64は、読み出しバス40を書き込みバス38およびデータ経路制御エンジン44から分離するために用いることができる。第3スイッチ68は、XORバッファ48の出力を受け取るように接続されている。第3スイッチ68は、XORバッファ48内にある結果を、他の2つのスイッチの状態に応じて、読み出しバスまたは書き込みバスにロードすることができる。この好適な実施形態では、これらのスイッチは、クロスバー・スイッチ、具体的には、CBT16212スイッチによって実施する。スイッチの状態は、DMA66によって制御される。スイッチの状態は、読み出しバス40、書き込みバス38およびデータ経路制御エンジン44の全てを共に接続するように制御することも可能である。あるいは、スイッチは、これらのデータ経路の1つ以上を他のものから分離するように制御することも可能である。
DMA66は、シーケンサ50によってプログラムされ、そのタスクを完了した時に、シーケンサに状態を戻す。シーケンサ50は、トランシーバ74を介して、フラッシュROM54およびDMA66と通信する。トランシーバ74は、シーケンサからDMA内のレジスタまでのバッファリング経路を与える。シーケンサは、DMAレジスタに対して読み出しおよび書き込みを行う。シーケンサ50は、フラッシュROM54内のプログラムを用いてブート・アップを行う。
DMA66は、読み出し/書き込み動作の形態で、ディスク側メモリまたはホスト側メモリ、ミラーFIFO、あるいはXORエンジンと通信を行う。各セクタの移動毎に、データ・エンジンは自動的に当該データのチェックサムを発生するかあるいはチェックする。また、チェックサムは、XORバッファ48からデータがアンロードされているときにはいつでも発生する。チェックサム・プロセスを開始するには、あるビット(「セクタ開始」ビット)をセットし、セクタ転送の開始を示す。このビットをセットすることにより、チェックサム・ロジックは、チェックサム・シード(seed)の内容と最初のデータ部分とのXOR演算を行う。このビットがセットされていない場合、最初のデータ部分とチェックサム・レジスタの内容とのXOR演算が行われる。セクタ開始ビットは、チェックサム・ロジックを変更することなく、セクタ・サイズを可変とすることができる。状態ビットのレジスタ・セットが読み込まれたときはいつでも、算出されたチェックサムがシーケンサに戻される。チェックサムの発生に関して、チェックサムが発生され、データ・バス上に合流されるときはいつでも、データの伝搬を保留する。このサイクルは、データ・バスを転換(turn around)させ、チェックサムの発生を終了するために用いられる。
DMAは、5つのフィールドを有するCMD/状態レジスタを含む。第1フィールドは、動作が、ディスク側メモリまたはホスト側メモリを伴うデータ移動か、あるいは即値データ、即ち、単一ビート(8バイト)のデータの読み出し/書き込みであるかをDMAに示す。データ移動では、ソース・レジスタ内のソース・アドレスを用いて、CMD/状態レジスタのソース・フィールドによって、データ・ソースを指定しなければならない。ソースがXORバッファ48である場合、XORエンジンはデータをアンロードし、同時に同じデータでそれ自体を再度充填する。これによって、RAID3再生データをXORバッファ48内に留めておくことができるので、最終データ部分に対するチェックを行うことができる。一旦セクタの最終部分が入力されたなら、CMD/状態レジスタのチェック・パリティ・データ・ビットをセットすることにより、これをチェックすることができる。また、CMD/状態内の宛先フィールドおよび宛先レジスタ内のそのアドレスをセットすることにより、宛先も示さなければならない。転送すべきデータ量は、ワード・カウント・フィールドによって示される。
フラッシュROM54は、ブート・コードを格納するために用いられる。この好適な実施形態のフラッシュROMは、512KBx8であり、データ・バスの最上位バイト・レーン上に位置する。
DMAエンジンは、常にイニシエータとして機能し、それ自体がデータを発していない場合でも、イニシエータ・レディ信号を駆動する役を担っている。ディスク側メモリおよびホスト側メモリ、ならびにミラーFIFOは常にターゲットである。書き込みバス38および読み出しバス40は各々、これらのバスが互いに結合された場合でも、それ自体のインターフェース制御信号を有する。ディスク側メモリとホスト側メモリとの間の移動の開始時に、DMAはこれら2つのメモリ・システム間のデータ流の同期を取る。DMAは、イニシエータ・レディ信号およびプレ・ターゲット・レディ信号を通じて、メモリとハンドシェークを行う。メモリがデータを受け取るまたは送る用意ができた場合、データが有効になる1サイクル前にプレ・ターゲット・レディ信号をアサートする。これに応答して、DMAはイニシエータ・レディ信号をアサートする。転送時に双方のメモリを使用している場合、DMAは、双方のプレ・ターゲット・レディ信号を受け取るまで、これらのメモリへのイニシエータ・レディ信号をアサートしない。一旦これらの信号を双方共受け取ったなら、イニシエータ・レディ信号を同時にアサートする。その時に、データはXbus、即ち、読み出しバスおよび書き込みバス上で有効となったと見なされる。
この好適な実施形態によれば、チェックサム以外の他の有効性チェック機構も用いられる。タイム・スタンプは、各データ・セクタの有効性フィールド内に位置する一意の数である。主要なストライプの更新中に、RAID群内の各セクタに、この一意の数を挿入する。主要なストライプの更新とは、RAIDストライプ内の各セクタを充填するデータを書き込むことを意味する。その後セクタにデータを書き込む場合、タイム・スタンプを無効化する。次のストライプの更新時に新たなタイム・スタンプを挿入する。書き込みスタンプは、群内の各ディスク毎に1ビットを与える。あるディスクに書き込みを行うとき、当該ディスクに対するビットの値を反転する。即ち、どちらが現在の値かに応じて、1から0にまたは0から1に変化させる。この好適な実施形態の書き込みスタンプおよびタイム・スタンプ情報に適応するためには、DMAはデータ転送の終了時に動作を保留し、チェックサムおよびスタンプ情報を添付するだけでよい。同時に、イニシエータ・レディ信号が1サイクルの間ディアサートされ、次いでDMAからのスタンプ情報およびXORエンジンからのチェックサム情報を含む8バイトがバス上に来たときに、1サイクルの間アサートされる。この1サイクルの遅延は、チェックサムの発生を完了するために必要である。データをディスク側メモリからホスト側メモリに移動させる場合のような逆方向においては、スタンプ情報を抜き取り、DMA内のスタンプ・レジスタに置く。スタンプ情報は、ホスト側メモリには送られない。このように、この好適な実施形態によれば、ホスト側メモリは各セクタ毎に512バイトを格納し、ディスク側メモリはセクタ当たり520バイトを格納する。
好適なXORバッファ48はFIFOである。FIFO48は1つのセクタを保持する。FIFO48は、3つの経路の1つからロードすることができる。経路の選択は、マルチプレクサ84の動作によって切り替えられる。マルチプレクサ84は、バッファ86によってFIFO48から分離することができる。第1経路は、データ・バスからの直接データを有する。バス・インターフェース88は、XORエンジンにおいて用いるために、バスからデータを取り出す。データは外部で登録され、FIFOに書き込まれる前にパリティがチェックされる。第2経路は、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には再ロードされないことに注意されたい。
図4は、動作中にチェックサムを実行するためのDMAロジックを示す。チェックサム・バッファ92は、チェックサム・データが計算されている際これを保持する。マルチプレクサ94は、チェックサムXORロジック96に、チェックサム・バッファ92内のデータまたはDMAレジスタ内にある初期のシード・データのいずれかを供給する。XORロジック96の他方の入力は、チェックサム処理を受けたデータである。
本発明の高性能データ経路は、RAID読み出し動作を実行するための「N−1アンド・ゴー」モードを可能にする。ドライブの1つが誤動作(struggle)しているか、あるいは動作しない場合、N−1アンド・ゴー・モードは、ホストに対する非常に一定した転送レートを維持することができる。N−1アンド・ゴーは、1つのドライブが誤動作しているかまたは動作不能状態にある状況では迅速であるが、この動作は通常動作よりは低速である。通常の状態でN−1アンド・ゴー動作が遅いのは、XOR動作を扱うためにレイテンシが加わるため、そしてディスク側ファイバ・ループから余分な要求が1つあるからである。データ・セクタからのデータが要求されるだけでなく、パリティ・セクタからのデータも要求される。このモードの利点は、スループットの変動が少ないことである。これが非常に重要な用途では、通常動作に対する速度低下は、容認し得るトレードオフである。
勿論、前述の好適な実施形態に対する種々の変更や改良も当業者には明白であることは理解されよう。かかる変更は、本発明の精神および範囲から逸脱することなく、更にその達成される利点を損なうことなく行うことができる。したがって、かかる変更や改良は、以下の請求の範囲によって包含されることを意図するものである。
Claims (5)
- 1群の相互に関連するディスクからの読み出しを実行する方法において、前記ディスクの1つにおけるデータのセクタが、前記1群の他のディスクの各々におけるセクタに対応し、前記方法が、
前記ディスク群内の1つを除いた全てのディスク上において、対応するセクタを読み出すステップと、
前記1つを除いた全てのディスク内の対応するセクタからのデータをディスク側メモリに書き込むステップと、
前記ディスク側メモリからの対応するセクタのデータを、連続的にホスト側メモリに移動させるステップと、
前記対応するセクタの最初のセクタのデータのコピーを、前記ディスク側メモリからFIFOに充填するステップと、
XORエンジンにおいて、前記ディスク側メモリからの対応するセクタの前記最初のセクタに対応するセクタからのデータと、前記FIFO内の対応するデータとのXOR演算を連続的に行い、前記ディスク群内の1つを除いて全ての対応するセクタのXOR演算を完了するまで、前記FIFO内のデータを前記XOR演算の結果で置換するステップと、
前記FIFO内のデータを前記ホスト側メモリに移動させるステップと、
から成ることを特徴とする方法。 - 請求項1記載の方法において、前記対応するセクタの前記最初のセクタのデータのコピーを充填する前記ステップが、前記ディスク側メモリから前記ホスト側メモリへの前記対応するセクタの前記最初のセクタのデータの移動と同期して行われることを特徴とする方法。
- パリティ・セクタを発生する方法であって、
(a)最初のデータ・セクタを、書き込みバス上のホスト側メモリから前記書き込みバスに接続するようにスイッチされたFIFOに、更に前記書き込みバスに接続された読み出しバスに沿ってディスク側メモリに移動させるステップと、
(b)前記最初のデータ・セクタに対応する複数のデータ・セクタを、接続された書き込みバスと読み出しバスを介して、前記ホスト側メモリから前記ディスク側メモリに連続して移動させるステップと、
(c)XORエンジンにおいて、前記FIFO内のデータと前記ホスト側メモリから移動した対応するデータとのXOR演算を実行し、前記XORの結果で前記FIFO内のデータを置換するステップと、
(d)対応するセクタ全てと前記FIFO内のデータとのXOR演算を終了するまで、ステップ(c)を連続して実行するステップと、
(e)前記FIFOから前記ディスク側メモリにデータを移動させ、該データがパリティ・セクタを構成するステップと、
から成ることを特徴とする方法。 - 請求項3記載の方法であって、更に、前記ディスク側メモリからの前記対応するデータ・セクタおよびパリティ・セクタを、1群の相互に関連するディスク上に書き込むステップを含み、前記ディスクの各々が、前記対応するデータ・セクタおよびパリティ・セクタの中からのセクタの1つを受け取ることを特徴とする方法。
- 請求項3記載の方法であって、更に、前記書き込むステップの前に、前記ディスク側メモリを、前記ホスト側メモリおよび前記XORエンジンから分離するように切り替えるステップを含むことを特徴とする方法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US74931296A | 1996-11-14 | 1996-11-14 | |
US08/749,312 | 1996-11-14 | ||
US08/815,193 US6161165A (en) | 1996-11-14 | 1997-03-11 | High performance data path with XOR on the fly |
US08/815,193 | 1997-03-11 | ||
PCT/US1997/018523 WO1998021656A1 (en) | 1996-11-14 | 1997-10-08 | High performance data path with xor on the fly |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004220367A Division JP2005032265A (ja) | 1996-11-14 | 2004-07-28 | 動作時にxor演算を行う高性能データ経路 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001500654A JP2001500654A (ja) | 2001-01-16 |
JP3606881B2 true JP3606881B2 (ja) | 2005-01-05 |
Family
ID=27115094
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP52256898A Expired - Fee Related JP3606881B2 (ja) | 1996-11-14 | 1997-10-08 | 動作時にXor演算を行う高性能データ経路 |
JP2004220367A Pending JP2005032265A (ja) | 1996-11-14 | 2004-07-28 | 動作時にxor演算を行う高性能データ経路 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004220367A Pending JP2005032265A (ja) | 1996-11-14 | 2004-07-28 | 動作時にxor演算を行う高性能データ経路 |
Country Status (7)
Country | Link |
---|---|
US (1) | US6161165A (ja) |
EP (1) | EP0938704B1 (ja) |
JP (2) | JP3606881B2 (ja) |
AU (1) | AU4820197A (ja) |
CA (1) | CA2268548A1 (ja) |
DE (1) | DE69733076T2 (ja) |
WO (1) | WO1998021656A1 (ja) |
Families Citing this family (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5963962A (en) * | 1995-05-31 | 1999-10-05 | Network Appliance, Inc. | Write anywhere file-system layout |
US6138126A (en) | 1995-05-31 | 2000-10-24 | Network Appliance, Inc. | Method for allocating files in a file system integrated with a raid disk sub-system |
JPH08511368A (ja) * | 1993-06-04 | 1996-11-26 | ネットワーク・アプリアンス・コーポレーション | 不揮発性メモリを用いてraidサブシステムにパリティを形成する方法 |
US5950225A (en) * | 1997-02-28 | 1999-09-07 | Network Appliance, Inc. | Fly-by XOR for generating parity for data gleaned from a bus |
US6665781B2 (en) * | 2000-10-17 | 2003-12-16 | Hitachi, Ltd. | Method and apparatus for data duplexing in storage unit system |
US6988176B2 (en) * | 1997-09-12 | 2006-01-17 | Hitachi, Ltd. | Method and apparatus for data duplexing in storage unit system |
US6516351B2 (en) | 1997-12-05 | 2003-02-04 | Network Appliance, Inc. | Enforcing uniform file-locking for diverse file-locking protocols |
US6622224B1 (en) * | 1997-12-29 | 2003-09-16 | Micron Technology, Inc. | Internal buffered bus for a drum |
US6415355B1 (en) * | 1998-05-11 | 2002-07-02 | Kabushiki Kaisha Toshiba | Combined disk array controller and cache control method for parity generation mode and data restoration mode |
US6279011B1 (en) | 1998-06-19 | 2001-08-21 | Network Appliance, Inc. | Backup and restore for heterogeneous file server environment |
US6119244A (en) * | 1998-08-25 | 2000-09-12 | Network Appliance, Inc. | Coordinating persistent status information with multiple file servers |
US7047357B1 (en) * | 1998-10-01 | 2006-05-16 | Intel Corporation | Virtualized striping controller |
US6460122B1 (en) * | 1999-03-31 | 2002-10-01 | International Business Machine Corporation | System, apparatus and method for multi-level cache in a multi-processor/multi-controller environment |
KR100287190B1 (ko) * | 1999-04-07 | 2001-04-16 | 윤종용 | 선택되는 메모리 모듈만을 데이터 라인에 연결하는 메모리 모듈 시스템 및 이를 이용한 데이터 입출력 방법 |
JP2000305856A (ja) * | 1999-04-26 | 2000-11-02 | Hitachi Ltd | ディスクサブシステム及びこれらの統合システム |
JP2001022529A (ja) * | 1999-06-30 | 2001-01-26 | Internatl Business Mach Corp <Ibm> | ディスクドライブ装置及びその制御方法 |
US6542960B1 (en) * | 1999-12-16 | 2003-04-01 | Adaptec, Inc. | System and method for parity caching based on stripe locking in raid data storage |
JP4434407B2 (ja) * | 2000-01-28 | 2010-03-17 | 株式会社日立製作所 | サブシステム及びこれらの統合システム |
JP4044717B2 (ja) | 2000-03-31 | 2008-02-06 | 株式会社日立製作所 | 記憶サブシステムのデータ二重化方法及びデータ二重化システム |
US6370616B1 (en) * | 2000-04-04 | 2002-04-09 | Compaq Computer Corporation | Memory interface controller for datum raid operations with a datum multiplier |
US6675253B1 (en) * | 2000-04-04 | 2004-01-06 | Hewlett-Packard Development Company, L.P. | Dynamic routing of data across multiple data paths from a source controller to a destination controller |
US7127668B2 (en) * | 2000-06-15 | 2006-10-24 | Datadirect Networks, Inc. | Data management architecture |
WO2002015018A1 (en) * | 2000-08-11 | 2002-02-21 | 3Ware, Inc. | Architecture for providing block-level storage access over a computer network |
US7072916B1 (en) | 2000-08-18 | 2006-07-04 | Network Appliance, Inc. | Instant snapshot |
US6636879B1 (en) | 2000-08-18 | 2003-10-21 | Network Appliance, Inc. | Space allocation in a write anywhere file system |
US6728922B1 (en) | 2000-08-18 | 2004-04-27 | Network Appliance, Inc. | Dynamic data space |
US6665773B1 (en) * | 2000-12-26 | 2003-12-16 | Lsi Logic Corporation | Simple and scalable RAID XOR assist logic with overlapped operations |
US6799284B1 (en) * | 2001-02-28 | 2004-09-28 | Network Appliance, Inc. | Reparity bitmap RAID failure recovery |
US6513098B2 (en) | 2001-05-25 | 2003-01-28 | Adaptec, Inc. | Method and apparatus for scalable error correction code generation performance |
US7093158B2 (en) * | 2002-03-11 | 2006-08-15 | Hewlett-Packard Development Company, L.P. | Data redundancy in a hot pluggable, large symmetric multi-processor system |
US7111228B1 (en) * | 2002-05-07 | 2006-09-19 | Marvell International Ltd. | System and method for performing parity checks in disk storage system |
US6918007B2 (en) * | 2002-09-09 | 2005-07-12 | Hewlett-Packard Development Company, L.P. | Memory controller interface with XOR operations on memory read to accelerate RAID operations |
US20040163027A1 (en) * | 2003-02-18 | 2004-08-19 | Maclaren John M. | Technique for implementing chipkill in a memory system with X8 memory devices |
US7096407B2 (en) * | 2003-02-18 | 2006-08-22 | Hewlett-Packard Development Company, L.P. | Technique for implementing chipkill in a memory system |
KR20060025135A (ko) * | 2003-04-21 | 2006-03-20 | 네트셀 코포레이션 | 재구성 가능한 데이터 경로를 갖는 디스크 어레이 제어기 |
US7254754B2 (en) * | 2003-07-14 | 2007-08-07 | International Business Machines Corporation | Raid 3+3 |
US7379974B2 (en) * | 2003-07-14 | 2008-05-27 | International Business Machines Corporation | Multipath data retrieval from redundant array |
US7533325B2 (en) | 2003-07-14 | 2009-05-12 | International Business Machines Corporation | Anamorphic codes |
US7281177B2 (en) * | 2003-07-14 | 2007-10-09 | International Business Machines Corporation | Autonomic parity exchange |
US7428691B2 (en) * | 2003-11-12 | 2008-09-23 | Norman Ken Ouchi | Data recovery from multiple failed data blocks and storage units |
US7913148B2 (en) * | 2004-03-12 | 2011-03-22 | Nvidia Corporation | Disk controller methods and apparatus with improved striping, redundancy operations and interfaces |
TWI251745B (en) * | 2004-07-27 | 2006-03-21 | Via Tech Inc | Apparatus and related method for calculating parity of redundant array of inexpensive disks |
US20060123312A1 (en) * | 2004-11-19 | 2006-06-08 | International Business Machines Corporation | Method and system for increasing parallelism of disk accesses when restoring data in a disk array system |
TWI285313B (en) * | 2005-06-22 | 2007-08-11 | Accusys Inc | XOR circuit, RAID device capable of recover a plurality of failures and method thereof |
US7797467B2 (en) * | 2005-11-01 | 2010-09-14 | Lsi Corporation | Systems for implementing SDRAM controllers, and buses adapted to include advanced high performance bus features |
US20070233926A1 (en) * | 2006-03-10 | 2007-10-04 | Inventec Corporation | Bus width automatic adjusting method and system |
GB0622224D0 (en) * | 2006-11-08 | 2006-12-20 | Ibm | Apparatus and method for disk read checking |
US8458377B2 (en) * | 2010-03-05 | 2013-06-04 | Lsi Corporation | DMA engine capable of concurrent data manipulation |
WO2012032582A1 (en) * | 2010-09-10 | 2012-03-15 | Hitachi, Ltd. | Storage system and data transfer method of storage system |
FR2991799B1 (fr) * | 2012-06-11 | 2015-05-29 | St Microelectronics Rousset | Adaptation d'un circuit d'antenne pour terminal de communication en champ proche |
US10236043B2 (en) | 2016-06-06 | 2019-03-19 | Altera Corporation | Emulated multiport memory element circuitry with exclusive-OR based control circuitry |
US10372531B2 (en) | 2017-01-05 | 2019-08-06 | Texas Instruments Incorporated | Error-correcting code memory |
US10365967B2 (en) | 2017-08-23 | 2019-07-30 | Toshiba Memory Corporation | On the fly raid parity calculation |
US11662955B2 (en) * | 2021-09-27 | 2023-05-30 | GRAID Technology Inc. | Direct memory access data path for RAID storage |
US11726715B2 (en) | 2021-10-11 | 2023-08-15 | Western Digital Technologies, Inc. | Efficient data path in compare command execution |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4761785B1 (en) * | 1986-06-12 | 1996-03-12 | Ibm | Parity spreading to enhance storage access |
US5163132A (en) * | 1987-09-24 | 1992-11-10 | Ncr Corporation | Integrated controller using alternately filled and emptied buffers for controlling bi-directional data transfer between a processor and a data storage device |
US5206943A (en) * | 1989-11-03 | 1993-04-27 | Compaq Computer Corporation | Disk array controller with parity capabilities |
US5146588A (en) * | 1990-11-26 | 1992-09-08 | Storage Technology Corporation | Redundancy accumulator for disk drive array memory |
US5191584A (en) * | 1991-02-20 | 1993-03-02 | Micropolis Corporation | Mass storage array with efficient parity calculation |
US5345565A (en) * | 1991-03-13 | 1994-09-06 | Ncr Corporation | Multiple configuration data path architecture for a disk array controller |
JPH07122864B2 (ja) * | 1991-07-22 | 1995-12-25 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データ処理システム、データ処理システムに使用するインターフエース回路及びデータ・プロセツサ間の通信方法 |
US5257391A (en) * | 1991-08-16 | 1993-10-26 | Ncr Corporation | Disk controller having host interface and bus switches for selecting buffer and drive busses respectively based on configuration control signals |
EP0529557B1 (en) * | 1991-08-27 | 1997-11-12 | Kabushiki Kaisha Toshiba | Apparatus for preventing computer data destructively read out from storage unit |
US5708668A (en) * | 1992-05-06 | 1998-01-13 | International Business Machines Corporation | Method and apparatus for operating an array of storage devices |
US5335235A (en) * | 1992-07-07 | 1994-08-02 | Digital Equipment Corporation | FIFO based parity generator |
JP3183719B2 (ja) * | 1992-08-26 | 2001-07-09 | 三菱電機株式会社 | アレイ型記録装置 |
US5396620A (en) * | 1993-12-21 | 1995-03-07 | Storage Technology Corporation | Method for writing specific values last into data storage groups containing redundancy |
US5537567A (en) * | 1994-03-14 | 1996-07-16 | International Business Machines Corporation | Parity block configuration in an array of storage devices |
JP3661205B2 (ja) * | 1994-09-09 | 2005-06-15 | 株式会社日立製作所 | ディスクアレイシステムおよびディスクアレイシステムのパリティデータの生成方法 |
EP0727750B1 (en) * | 1995-02-17 | 2004-05-12 | Kabushiki Kaisha Toshiba | Continuous data server apparatus and data transfer scheme enabling multiple simultaneous data accesses |
US5592612A (en) * | 1995-04-28 | 1997-01-07 | Birk; Yitzhak | Method and apparatus for supplying data streams |
US5721839A (en) * | 1995-10-13 | 1998-02-24 | Compaq Computer Corporation | Apparatus and method for synchronously providing a fullness indication of a dual ported buffer situated between two asynchronous buses |
US5737744A (en) * | 1995-10-13 | 1998-04-07 | Compaq Computer Corporation | Disk array controller for performing exclusive or operations |
US5809280A (en) * | 1995-10-13 | 1998-09-15 | Compaq Computer Corporation | Adaptive ahead FIFO with LRU replacement |
US5771359A (en) * | 1995-10-13 | 1998-06-23 | Compaq Computer Corporation | Bridge having a data buffer for each bus master |
US5903906A (en) * | 1996-06-05 | 1999-05-11 | Compaq Computer Corporation | Receiving a write request that allows less than one cache line of data to be written and issuing a subsequent write request that requires at least one cache line of data to be written |
US5937174A (en) * | 1996-06-28 | 1999-08-10 | Lsi Logic Corporation | Scalable hierarchial memory structure for high data bandwidth raid applications |
US5748911A (en) * | 1996-07-19 | 1998-05-05 | Compaq Computer Corporation | Serial bus system for shadowing registers |
US5950225A (en) * | 1997-02-28 | 1999-09-07 | Network Appliance, Inc. | Fly-by XOR for generating parity for data gleaned from a bus |
-
1997
- 1997-03-11 US US08/815,193 patent/US6161165A/en not_active Expired - Lifetime
- 1997-10-08 CA CA002268548A patent/CA2268548A1/en not_active Abandoned
- 1997-10-08 DE DE69733076T patent/DE69733076T2/de not_active Expired - Fee Related
- 1997-10-08 AU AU48201/97A patent/AU4820197A/en not_active Abandoned
- 1997-10-08 WO PCT/US1997/018523 patent/WO1998021656A1/en active IP Right Grant
- 1997-10-08 JP JP52256898A patent/JP3606881B2/ja not_active Expired - Fee Related
- 1997-10-08 EP EP97910943A patent/EP0938704B1/en not_active Expired - Lifetime
-
2004
- 2004-07-28 JP JP2004220367A patent/JP2005032265A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2001500654A (ja) | 2001-01-16 |
EP0938704A1 (en) | 1999-09-01 |
JP2005032265A (ja) | 2005-02-03 |
CA2268548A1 (en) | 1998-05-22 |
AU4820197A (en) | 1998-06-03 |
DE69733076D1 (de) | 2005-05-25 |
WO1998021656A1 (en) | 1998-05-22 |
US6161165A (en) | 2000-12-12 |
DE69733076T2 (de) | 2006-02-23 |
EP0938704B1 (en) | 2005-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3606881B2 (ja) | 動作時にXor演算を行う高性能データ経路 | |
JP3129732B2 (ja) | コピーバックキャッシュを有する記憶装置アレイ | |
US6151641A (en) | DMA controller of a RAID storage controller with integrated XOR parity computation capability adapted to compute parity in parallel with the transfer of data segments | |
US5890207A (en) | High performance integrated cached storage device | |
US6018778A (en) | Disk array controller for reading/writing striped data using a single address counter for synchronously transferring data between data ports and buffer memory | |
US5884055A (en) | Method and apparatus including a shared resource and multiple processors running a common control program accessing the shared resource | |
US5572660A (en) | System and method for selective write-back caching within a disk array subsystem | |
US5987627A (en) | Methods and apparatus for high-speed mass storage access in a computer system | |
US5890219A (en) | Redundant writing of data to cached storage system | |
US5737744A (en) | Disk array controller for performing exclusive or operations | |
JP2981245B2 (ja) | アレイ型ディスク駆動機構システム及び方法 | |
US6289471B1 (en) | Storage device array architecture with solid-state redundancy unit | |
US6049890A (en) | Disk array system and its control method | |
JP2007513435A (ja) | データ組織化を管理するための方法、システム、及びプログラム | |
JP3466558B2 (ja) | データ記憶システム | |
US20030236943A1 (en) | Method and systems for flyby raid parity generation | |
US6370616B1 (en) | Memory interface controller for datum raid operations with a datum multiplier | |
US20190042372A1 (en) | Method and apparatus to recover data stored in persistent memory in a failed node of a computer cluster | |
US20040205269A1 (en) | Method and apparatus for synchronizing data from asynchronous disk drive data transfers | |
JPH06511099A (ja) | 不均一ストライプサイズマッピングスキームを用いたディスク配列操作を実行する方法 | |
JP3256329B2 (ja) | ディスクアレイ装置及びその制御方法 | |
JP3615250B2 (ja) | ディスクアレイ装置 | |
US6915394B1 (en) | Microprocessor interface | |
JP3542577B2 (ja) | ディスクアレイ装置及びその制御方法 | |
JP3234211B2 (ja) | ディスクアレイシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20031218 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20040526 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20040531 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040728 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041006 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081015 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |