JP2000514941A - バスから収集されたデータに対するパリティ発生フライバルxor - Google Patents

バスから収集されたデータに対するパリティ発生フライバルxor

Info

Publication number
JP2000514941A
JP2000514941A JP10537872A JP53787298A JP2000514941A JP 2000514941 A JP2000514941 A JP 2000514941A JP 10537872 A JP10537872 A JP 10537872A JP 53787298 A JP53787298 A JP 53787298A JP 2000514941 A JP2000514941 A JP 2000514941A
Authority
JP
Japan
Prior art keywords
xor
memory
bus
data
buffer
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.)
Pending
Application number
JP10537872A
Other languages
English (en)
Inventor
クレイマン,スティーブン・アール
Original Assignee
ネットワーク・アプライアンス・インコーポレイテッド
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ネットワーク・アプライアンス・インコーポレイテッド filed Critical ネットワーク・アプライアンス・インコーポレイテッド
Publication of JP2000514941A publication Critical patent/JP2000514941A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1054Parity-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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Bus Control (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Image Processing (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Magnetic Resonance Imaging Apparatus (AREA)
  • Television Signal Processing For Recording (AREA)
  • Catching Or Destruction (AREA)
  • Other Investigation Or Analysis Of Materials By Electrical Means (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 この発明は、実質的な演算資源を消耗することなく、XOR動作を実行するための方法および装置を提供する。特定化されたプロセッサーは、1組のディスクドライブと同じバスに結合され、その特定化されたプロセッサーは、ディスクドライブへのデータ転送およびそこからのデータ転送を検証し、そして、個別の転送を要求することなく、ディスクドライブへ及びそこから転送されるデータに対してXOR動作を行う。特定化されたプロセッサーは、XOR動作のために使用されるXORアキュームレータを維持する。そのXORアキュームレータはXOR動作の結果を記録し、かつ、プロセッサーのコマンドを読み出す。そのXORアキュームレータは、各RAIDストライプのために、選択された組のRAIDストライプのために1組のアキュームレータレジスタを含む。メモリ(アドレス可能な内部メモリ)は、1組のアキュームレータレジスタを各々選択されたRAIDストライプに関係付ける。

Description

【発明の詳細な説明】 フライバイXOR 発明の背景 1.技術分野 この発明は、格納システムに関する。 2.関連した技術の説明 公知の一つの格納システムとしては、データが多数のディスクドライブを横切 て分配され、これらのディスクドライブの一つが、もしくはその格納ブロックの 一つまたは複数がデータを消失したときに備え、修復可能となるように格納され る、“RAID”が公知である。後者の修復用としてデータを格納するためには 、パリティ情報からデータを修復できるようにRAIDシステムはパリティ情報 を伴ってデータを記録する。例えば一つのタイプのRAIDシステムでは、“ス トライプ”として公知のユニットに、4ブロックにデータを、1ブロックにパリ ティ情報を記録するために、5個のディスクが一組として使用される。 その分野で提起された一つは、パリティ情報を記録するRAIDシステムは、 パリティ情報の演算を迅速にかつ頻繁に要求することである。例えばストライプ に書き込む動作は少なくとも一組のパリティ情報が演算されることを要求する。 パリティ情報を演算することはXOR(エクスクルーシィブオア)を実質的に使用 する。これはかなりの演算用リソースのアローケーション、例えばプロセッサー サイクル、キャッシュロケーション、及びメモリアクセスサイクルのごときもの を要求することが出来る。 パリティ情報を演算するための一つの可能な技術は、XOR機能を演算するた めのプロセッサーを制御するためにソフトウエアを用いることである。この技術 は、いくつかの選択的な設計を持ち、例えば、レジスタの競合や不必要な待機を 避けるためにプロセッサーの命令をスケジュールをたてる試みを含み、又、不必 要なメモリの伝達やプロセッサーによる不必要な待機を避けるためにキャッシュ の失敗を減じる。この技術はパリティ情報の演算目標を達成できるが、かなりの 演算用資源(プロセッサーサイクル、キャッシュロケーション、メモリ伝送)を要 求するという欠点を抱える。 パリティ情報を演算するための別の可能な技術は、XOR動作を実行するため に、独立したメモリとともに第二のプロセッサーを採用することである。この第 二のプロセッサーは、DMA動作により、メインメモリ(つまり第1のプロセッ サーにより使用されるメモリ)に結合され、これにより、第1のプロセッサーを 他の仕事に委ねる。この技術はパリティ情報の演算目標を達成できるが、第1の プロセッサーがそのいくつかの負荷を軽減できるとしても、これもまた実質的な メモリの伝送およびシステムバスの使用を要求するという欠点を持つ。 従って、いくつかの演算用資源を消耗したとしても、XOR動作を実行するた めの方法及びシステムを提供することは有利である。その利点は、特定のプロセ ッサーがメモリおよびディスクアクセスがシステムバスに伝送されるとき、それ らのメモリ及びディスクアクセスを再検討し、XOR動作を実行し、これらのX OR動作の結果を記録し、そしてこれらのXOR動作の結果をプロセッサーコマ ンド上に出力する、本発明の実施例により達成される。 発明の概要 この発明は、実質的な演算用リソースを消費することなく、XOR動作を実行 するための方法およびシステムを提供する。特定のプロセッサーが一組のディス クドライブと同じバスに結合され、その特定のプロセッサーは、ディスクドライ ブへのデータ転送およびディスクドライブからのデータ転送を検証し、そして、 個々の転送を要求することなく、ディスクドライブへのデータ転送およびディス クドライブからのデータ転送の際にXOR動作を実行する。 好ましい実施例では、特定のプロセッサーが、XOR動作のために使用される XORアキュームレータを維持し、そのアキュームレータはXOR動作の結果を 記録し、そしてプロセッサーのコマンド上に読み出する。そのXORアキューム レータは、各RAIDストライプのために、選択された一組のRAIDストライ プのために一組のアキュームレータレジスタを含む。メモリ(アドレス可能な内 部メモリのごき)は、一組のアキュームレータレジスタを選択された各々のRA IDストライプに関係させる。 図面の簡単な説明 図1はフライバイXORを実行するためのシステムのブロック図である。 図2はフライバイXORを実行するためのシステムを動作するための方法を示す フローチャートである。 図3は第1のフライバイXOR素子のブロック図である。 図4は第2のフライバイXOR素子のブロック図である。 次の実施例では本発明の好ましい実施例が好ましいプロセスおよびデータ構成 に関して記述されている。しかしながら当業者であればこの明細書の通読後に本 発明の実施例は、プログラム制御下で動作する一つまたはより多くの一般目的の プロセッサー(または特定用途のプロセッサー)を用いて実行でき、又、ここで開 示された好ましいプロセスのステップおよびデータ構造の実行は、過度の経験や 更なる発明を必要としないことが理解されよう。 システム構成 図1はフライバイXORを実行するためのシステムのブロック図を示す。 システム100は少なくとも一つのプロセッサー110、メモリ120、およ びプロセッサー110とメモリ120を結合するためのシステムバス130を含 む。単一のプロセッサー110が示されているが、いくつかの応用に対するむ好 ましい実施例では一つのプロセッサー110より更に多くがシステムバス130 に結合され、そしてプロセッサー130はそれぞれのプロセッサーと協働させる ようにしてもよい。 そのシステム100は更に複数のディスクドライブ140と、ディスクドライ ブ140を制御し、かつ、中位のバス160を用いてディスクドライブ140と システムバス130をデータ結合するために、少なくとも一つのディスクI/O アダプタ150を含む。 好ましい実施例では、中位のバス160は、公知の標準PCIバスとして規格 化されたPCIバスであり、PCIブリッジ170を用いてシステムバス130 に結合される。 好ましい実施例では中位のバス160はPCIバスであったが本発明はPCI バスや他の特定のタイプのバスの使用に制限されない。同様に中位のバス160 はここでは更に32ビットバスとして記述されているが本発明は32ビットバス の使用に制限されず、64ビットバスのような他のビット幅で実行することも可 能である。このような変形は過度の経験や発明を要求しない。 フライバイXOR素子180は、中位のバス160を用いる伝送データからデ ータを収集するために中位のバス160に結合されるそのフライバイXOR素子 180は、XOR動作の部分的および最終の結果をセーブするために、XORバ ッファ190を用いる。 プロセッサー110がメモリ120と一つまたは複数のディスクドライブ14 0との間でデータの転送を開始するとき、そのデータは、システムバス130、 PCIブリッジ170および中位のバス160を使用して転送される。中位のバ ス160を使用してデータが転送されたとき、フライバイXOR素子180はデ ータを(データ転送を妨げることなく)読込み、そしてXORバッファ190内の XORアキュームレータ(図2参照)の一つに加算する。RAIDストライプが全 体あるいは部分的に読出し又は書き込まれたとき、システム100のいかなる部 分から別のリソースを要求することなく、フライバイXOR素子180は流動的 にRAIDストライプに対する一組のパリティ情報を演算する。別のデータ転送 が要求されず、又、プロセッサー110およびメモリ120はこれらのXOR動 作を実行するために要求されない。 プロセッサー110は、読み書きされるRAIDストライプ内の格納ブロック へパリティ情報が書き込まれるように指示されたとき、フライバイXOR素子1 80がXORバッファ190内の一つのXORアキュームレータから蓄積された パリティ情報を読み出す。RAIDストライプ内の一つのディスクドライブがR AIDストライプ内の一つの格納ブロックのすべてもしくは一部を喪失したとき 、RAIDストライプ内のデータを再構成もしくは修復するために、XORバッ ファ190からの蓄積されたパリティ情報も使用され得る。 システム動作 図2はフライバイXORを実行するためのシステム動作の方法のフローチャー トを示す。 フライバイXOR180の動作の方法200は、プロセッサー110、ディス クドライブ140およびフライバイXOR素子180により実行される連続した ステップを含む。 ポイント210では、システム100はRAIDストライプ上でXOR動作を 実行しようとしている。 ステップ221では、プロセッサー110はメモリバッファをメモリ120内 に位置させ、メモリバッファおよびひディスクドライブ140の一つへ転送され たもしくはそこから転送されたDMAにセットアップする。 ステップ222では、プロセッサー110はメモリバッファのメモリアドレス をフライバイXOR素子180へ転送し、そしてそのフライバイXOR素子18 0に対して、メモリバッファへ転送されるデータもしくはメモリバッファから転 送されるデータを認識させる。又、プロセッサー110は、XOR動作の結果を 蓄積するために、XORアキュームレータの一つをバッファ190内に位置させ る。 ステップ223ではDMAの転送が実行される。フライバイXOR素子180 は中位のバス160をモニターし、そしてメモリバッファへの転送またはメモリ バッファからの転送を認識させるように試みる。フライバイXOR素子180が このような転送を認識したとき、転送されたデータをコピーし、それを、(XO R動作を実行することにより)関係したXORアキュームレータバッファ内の蓄 積されたパリティ情報に加算する。認識されたメモリバッファに対するすべての データが転送されたとき、関係したXORアキュームレータバッファはRAID ストライプに対する演算されたパリティを保持する。 ステップ224では、プロセッサー110は、フライバイXOR素子180が 、蓄積されたパリティ情報を、関係するXORアキュームレータバッファからメ モリ110内のメモリバッファまたはディスクドライブ140の一つの格納ブロ ックへ読み出すように指令する。いずれかの場合でフライバイXOR素子180 からの読出しは、プロセッサーの読出しまたはディスクドライブ140の一つ へのDMA転送により実行される。好ましい実施例では蓄積されたパリティ情報 からの読出しは、関係したXORアキュームレータバッファをゼロにリセットさ せる。 ポイント230ではRAID上のXOR動作が完成され、システム100は別 のRAIDストライプを継続でき。 好ましい実施例ではプロセッサー110は、ディスクドライブ140の一つか らメモリ120内のメモリバッファへ実際にデータを転送することなく、XOR 動作を実行できる。この動作は、データが実際にメモリ120に記憶されないこ とを除き、あたかもメモリバッファに転送されるかのように実行されるので、こ こではこの動作を“無”メモリバッファへの転送と称する。無メモリバッファへ 転送できることは都合がよい。即ち、RAIDストライプに対するディスク動作 があるためであり、この動作時、ディスクドライブ140に格納されたとき、R AIDストライプの格納ブロックのいくらかに読み書きするのが望ましいが、全 体のRAIDストライプに対するパリティ情報を演算することは必要である。 例えばRAIDストライプの単一の格納ブロックに書き込むことが望まれると き、前記格納ブロックとパリティ情報格納ブロックの双方に書き込むことが必要 である。公知のRAID格納システムでは、プロセッサーが新しいパリティ情報 を演算できるようには、最初に現在のパリティとデータブロックとをディスクか らメモリへ読み出す必要がある。しかしながらこの発明では、フライバイXOR 素子180を用いてパリティ情報を演算するが、プロセッサー110やメモリ1 20の資源を使用することなく、これらのブロックを無メモリバッファに転送で きる。 更に好ましい実施例では、RAIDストライプの単一の格納ブロックの書き込 みは数ステップで実行される:(1)フライバイXOR素子180を用いてパリテ ィ情報を蓄積できるように、古い格納ブロックデータおよび古いパリティブロッ クデータが無メモリバッファに転送される。(2)フライバイXOR素子180を 用いて格納ブロックを書き込み、同時にパリティ情報を演算できるように、新し い格納ブロックデータが格納ブロックに書き込まれる。(3)蓄積されたパリティ 情報がXORバッファ190からパリティ格納ブロックへ書き込まれる。プロセ ッサー110およびメモリ120の資源はこれらの動作で必要としない。 無メモリバッファへの転送を行うために、ステップ221でプロセッサー11 0はメモリ120内にメモリバッファを位置させず、そしてディスクドライブ1 40の一つとメモリ120により認識されないメモリアドレスとの間に転送され たDMAにデータをセットアップする。ステップ223では、メモリ120が無 メモリバッファへの“転送された”データのいずれをも捕捉することなく、転送 DMA転送が実行され、そしてフライバイXOR素子180が中位バス160を モニターする。 フライバイXOR素子 図3はフライバイXOR素子180のブロック図を示す。第1のフライバイX OR素子180はバスインターフェイス310、タイミング及びコントロール素 子320および連想メモリ(CAM)330および関係する素子を含む。XORバ ッファ190はフライバイXOR素子180に結合され、ランダムアクセスメモ リ(RAM)340、FIFO群350および関係する素子を含む。XORバッフ ァ190は概念的にRAM340を含み、好ましい実施例では、そのRAM34 0は外部RAM回路を用いて実現され、一方、FIFO350および関係する素 子はASIC内のフライバイXOR素子180の他の回路で実現される。 バスインターフェイス310およびタイミング及びコントロール素子320は フライバイXOR素子180と中位のバス160との間にインターフェイスを与 える。そのインターフェイスは中位のバス160により使用される制御信号を伝 達する一組のコントロールパス311、0から31ビットのバスアドレス値を伝 達するバスアドレス(BA)パス312、0から31ビットのバスデータ値を伝達 するバスアドレス(BA)パス313を含む。PCIバスを用いる伝達はコンピュ ータのシステム設計の分野では公知である。 中位バスがPCIバス以外か32ビット幅以外の別の実施例では、バスデータ値 は他のビット認識(0ないし63ビットのごとく)を持ち、そしてPCI以外の他 のバスプロトコルを用いて伝達を行う。 XORバッファ190はランダムアクセスメモリ(RAM)340を含み、その メモリは、一組の32XORアキュームレータバッファを備え、それらの各々 は、4バイト(32ビット)幅、それゆえサイズが4Kバイとなる1024入力長で ある。従って32までの異なるRAIDストライプが、フライバイXOR素子1 80により同時に実行されたXOR蓄積を持てる。 XORバッファ190は更にFIFO群350を含み、RAM340内の一つ の32XORアキュームレータバッファ内でパリティ情報を蓄積できるように、 このFIFO群は、連続したワードのバスデータ値の入力とこれらの連続したワ ード上でXOR動作の実行を行なう。 CAM330は一組の256入力を与え、それらの各々は、RAM340の3 2XORアキュームレータバッファの一つにの5ビットの関係したアドレスを有 する20ビットバスアドレス値に関係づける。そのCAM330は、CAM33 0内の256入力の一つを選択するためのアドレス入力ポート331、CAM3 30により適合されるべき20ビットのタグを与えるための20ビットタグポー ト332、20ビットタグを有するCAM330により関係づけられた5ビット 値を与えるための5ビット値ポート333、ライトコントロール信号を受け取る ためのライトコントロールポート334およびマッチ(整合)コントロール信号を 受け取るためのマッチコントロールポート335を備える。 タイミング及びコントロール素子320は又、マッチコントロールポート33 5からマッチコントロール信号を受け取り、そしてRAM340をアドレスする ために15ビットRAMアドレスパス(RA)を与え、そしてCAM330をコン トロールするためにコントロールパス315に書き込む。 バスアドレスパス312の12から31ビットおよびバスデータパス313の 12から31ビット(このように各ケースで上位20ビット)は、CAMマルチプ レクサ336の入力に結合され、その出力はCAM330のタグポート332に 結合されている。タグポート332は又、20ビット出力を与え、その出力はド ライバー337を用いてバスデータパス313に接続される。バリューポート3 33での関係した5ビット値はXORバッファ190に接続され、又、一対のド ライバ338を用いてバスデータパス313に接続される。 そのXORバッファ190はRAM340を含み、そのRAMは、15ビット RAMアドレス値を受け取るためのRAMアドレスポート341と、このRAM 340内で関係した位置に格納される32ビットRAMデータを与えるためのR AMデータポート342を含む。このRAM340は概念的に32個のXORアキ ュームレータバッファに分割され、それらの個々は1K32ビットワード(つま り4Kバイト)を含み、そして各々は上位RAMアドレス値として5ビットXO Rアキュームレータバッファ数(0ないし31)を持ちRAM340内で一組の 位置を占める。 バリューポート333での関係した5ビット値はRAMアドレスポート341 に結合され、RAM340内のアドレス用ワードに対する上位5ビットを与える 、バスアドレスパスの2ないし11ビット(つまりアドレス用ワードに対する低 位10ビット)はRAM340内のアドレス用ワードに対する低位の10ビット を与え、そしてこれもRAMアドレスポート341に接続される。これにより、 RAM340はRAMアドレスポート341にて15ビットアドレスを受け取り 、そして32ビットデータワードをRAMデータポート342に与える。 RAMデータポート342は、ドライバ351を用いてバスデータパス313 (と同時にFIFO群350の入力)と、FIFOマルチプレクサ352の出力4 と、FIFOレジスタ353の入力部とに接続される。そのFIFO群350は XORオペレータ354に接続される出力部を持ち、そのオペレータは、全32 ビットワード上でXORがパラレル動作を実行するために1組の32XORゲー トを含む。このFIFOマルチプレクサ352はXORオペレータ354の出力 部と“ゼロ”入力部355とに接続される。 ステップ221およびステップ222にあるように新しいRAIDストライプ のためのXORアキュームレータバッファを位置させるために、タイミング及び コントロール素子320は、CAM330にメモリ120内のメモリバッファに 対する20ビットメモリアドレス(又、無メモリバッファに対する20ビットメ モリアドレス)をロードさせ、そして上記20ビットメモリアドレスを32XO Rアキュームレータバッファの一つに対する5ビット識別子に関連づける。バス アドレス312の2〜9ビットはアドレス入力ポート331に接続され、CA M330に対する新しい入力のアドレスを与える。そのCAMマルチプレクサ3 36はタイミング及びコントロール素子320の制御下においてタグポート3 32へ接続するためのバスデータパス313を選択する。そのCAM330は、 バスデータパス313からの12〜31ビットのバスデータ値を、特定化された アドレスの新しい20ビットタグをアドレス入力ポート331に、又、バスデー タパス313からの0〜4ビットのバスデータ値輪新しい5ビット値として挿入 する。プロセッサー110は診断目的のためにCAM330内で選択されたすべ てを読むことが出来る。 ステップ223にて中位のバス160をモニターするためにタイミングおよび コントロール素子320はタグポート332への接続のためにバスアドレスパス 312を選択する。中位バス160上に表れたメモリアドレスの上位20ビット (または無メモリバッファ内のアドレス)がCAM330内の20ビットタグの一 つに整合するとき、CAM330はバスアドレスの12〜31ビットを整合させ 、前記20ビットタグ内の5ビット値に関係付ける。 中位バス160上のデータ値が1ワードづつFIFO群350へ読込まれるよ うに、バスアドレスパス312の2〜11ビットはRAM340内のXORアキ ュームレータバッファ内の個々のワードを選択するために使用されるが、関係し た5ビット値は、RAM340内の32XORアキュームレータバッファの一つ を選択するために用いられる。RAM340内のXORアキュームレータバッフ ァをFIFO群350内のデータに関連づけたデータに基づきXOR動作を実行 できるように、タイミング及びコントロール素子320は、XORオペレータ3 54を通じてFIFO群350内の各ワードを、RAM340からFIFOレジ スタ353に読込まれた対応するワードに関連して連続させる。この後、タイミ ング及びコントロール素子320は、XOR動作の結果がRAM340内の関係 したXORアキュームレータバッファに書き戻されるようにする。 ステップ224にて蓄積されたパリティ情報を読み出すために、タイミングお よびコントロール素子320は、RAMアドレスポート341への接続のために バスアドレスパス312を選択し、RAM340内のXORアキュームレータバ ッファ内の各ワードを順にバスデータパス313に読出し、一方、メモリ120 へまたはディスクドライブ140の一つに対してDMA転送が起きる。ほとんど 一般的には、DMA転送はディスクドライブ140の一つに直接に転送される が、もしプロセッサー110がパリティ情報を演算しなくてはならないとき、メ モリ120に転送できる。プロセッサー110は診断目的のために直接にRAM 340全体を読むこともでき、あるいは他にXORバッファ190内のパリティ 情報を読むかあるいは動作することが望ましい。XORアキュームレータバッフ ァが一様のゼロ値にリセットされるように、タイミング及びコントロール素子3 20は同時にRAM340内のXORアキュームレータバッファ内の各ワードに ゼロ値を書き込む。 XORバッファ190の内容と選択された情報との間でXOR動作を直接に行 えるように、プロセッサー110はまたRAM340内の選択された位置に直接 書き込む。これはステップ223で実行されるXOR動作に似る。しかしながら 、CAM330のバリューポート333からの5ビット値の出力のかわりに、バ スデータパス313の12〜16ビットはRAMアドレスポート341に接続さ れる。 好ましい実施例では、バスアドレスパス312上の値およびバスデータパス3 13は表3−1で示されるように使用される。表3−1ではアドレス範囲の値が 16進法で示され、選択されたビット幅はバスアドレス(BA)パス312および バスデータ(BD)パス313で示される。表3−1 アドレス範囲 レジスタ リード/ライト データ/動作 000000..0000FF PCIバスレジスタリードライト PCIバスプロトコルで指定 010000..0103FF CAM入力 リードライトリード又はライトCAM入力 BA<2:9>CAM入力番号 BD<0:4>XORアキュームレータ番号 BD<12:31>メモリバッファアドレス 100000..10FFFF XORアキュームレータバッファリード XORアキュームレータバッファを リード又はクリア BA<12:16>XORアキュームレータバッファ番号 BD<0:31>結果 100000..10FFFF XORアキュームレータバッファライト XORをXORアキュームレータバッファ に導く BA<12:16>XORアキュームレータバッファ番号 BD<0:31>XORを導くための データ 000000..FFFFFF XORアキュームレータバッファ X フライバイXORリメモリバッファ BA<12:31>整合のための メモリアドレス BD<0:31>フライバイXOR のためのデータ 200000..7FFFFF 無メモリバッファライトフライバイXORリヌルメモリバッファ BA<12:31>整合のための メモリアドレス BD<0:31>フライバイXOR のためのデータ 第2のフライバイXOR素子 図4は第2のフライバイXOR素子のブロック図を示す。 第2のフライバイXOR素子180及びXORバッファ190は第1のフライ バイXOR素子180およびXORバッファ190と同様である。しかしながら 第1のSRAM430CAM330の替わりに使用され、又、第2のSRAM4 40はRAM340の替わりに使用される。第1のXOR素子180およびバッ ファ190に似るが、XORバッファ190は概念的にSRAM430を含み、 好ましい実施例では、SRAM430は外部SRAM回路を使用して実現され、 一方、XORバッファ190の他の素子はASIC内のフライバイXOR素子1 80の他の回路で実現される。 第2のフライバイXOR素子180に対するバスインタフェイス410は第1 のフライバイXOR素子180に対するバスインタフェイス310に同様であ り、第2のフライバイXOR素子180は第1のフライバイXOR素子180に 対するコントロール素子320と同様である。バスインタフェイス410および タイミング及びコントロール素子420は同様にフライバイXOR素子180と 中位バスとの間にインタフェイスを与える。そのインタフェイスは中位バス16 0により制御信号を伝達する1組のコントロールパス411、0〜31のバスア ドレス値を伝達するバスアドレス(BA)パス412、0〜31のバスデータ値を 伝達するバスデータ(BA)パス413を含む。 第1のSRAM430は5ビットワードメモリによる1メガワードを含み、そ して第1のSRAMアドレス入力ポート431、ライトコントロール信号を受け 取るためのライトコントロール入力ポート432および確定コントロール信号と して使用される出力データビットを与えるための確定コントロール出力ポート4 34(SRAM430に対する付加的なデータビット出力)を含む。バスアドレス パス412の2〜21ビットはSRAMマルチプレクサ435の第1の入力部に 接続され、バスアドレスパス412の12〜31ビットはSRAMマルチプレク サ435の第2の入力部に接続され、そしてSRAM435の出力部は第1のS RAM入力ポート431に接続される。 タイミング及びコントロール素子420はまた確定コントロール出力ポート4 34から確定コントロール信号を受信し、そして第2のSRAM440をアドレ スするために15ビットRAMアドレスパス(RA)と、第1のSRAM430を 制御するためのライトコントロールパス415を備える。 XORバッファ190は第2のSRAM440を含み、このSRAMは、15 ビットの第2のSRAMアドレス値を受け取るための第2のSRAMアドレス入 力ポート441および第2のSRAM440内の関係した位置に格納された32 ビットのSRAMデータバリューを受け取るために第2のSRAMデータポート 442を含む。RAM340と同様に第2のSRAM440は概念的に32個の XORアキュームレータバッファに分割され、それらの各々は1K32ビットワ ード(つまり4Kバイト)を含み、そして第2のSRAM440内で1組の位置を 占め、それらの各々は第2のSRAMアドレス値の上位ビットとして5ビットの XORアキュームレータバッファ番号(0〜31)を持つ。 5ビット値を256組の20ビットタグの一つに関係づける替わりに、第1の SRAM430は、各可能な20ビットタグに対する一つの入力、各入力に対す る確定したビットおよび確定したビットの組、5ビット値を有するこれらの入力 に対する確定したビットを持つ。各20ビットタグは、メモリ120(または無 メモリバッファに対するアドレス)内のメモリバッファの可能な上位20ビット アドレスを表す。各5ビット値は可能なXORアキュームレータバッファ数を表 す。 第1のSRAMデータポート433での関係した5ビット値は第2のSRAM アドレスポート441に結合され、そして第2のSRAM440内のワードをア ドレスするための上位5ビット値を与える。バスアドレスパス412の2〜11 ビット(つまり4ビットワードをアドレスするための低位10ビット)は、第2の SRAM440内のワードをアドレスするための低位10ビットを与え、また、 第2のSRAMアドレスポート441に結合される。これにより、第2のSRA M440は、第2のSRAMアドレスポート441で15ビット値を受け取り、 そして32ビットデータワードを第2のSRAMデータポート442に出力する 。 第2のSRAMデータポート42は第1のレジスタ450と、ドライバ451 を用いてバスデータパスバッファ413(およびまた第2のレジスタ452)とに 結合される。第1のレジスタ450および第2のレジスタ452はXORオペレ ータ453の入力部に結合され、このオペレータは全体32ビットワード上でパ ラレルでXOR動作を実行とするための1組の32XORゲートを含む。XOR オペレータ453の出力および“ゼロ”入力454はXORマルチプレクサ45 5の入力部に接続され、そのXORマルチプレクサ455の出力は第2のSRA Mデータポート442に接続される。 ステップ223にて中位のバスをモニターするために、タイミング及びコント ロール素子420はバスアドレスパス412を選択して、第1のSRAMアドレ ス入力ポート431に接続する。確定したビットが上記位置にセットされ、第1 のSRAMデータポート433が20ビットメモリアドレスと関係したXORア キュームレータバッファに対して5ビット値を与えたとき、中位バス160上に 現れるメモリアドレス(または無メモリ内のアドレス)の上位20ビットは第1の SRAM430をアドレスするために用いられる。 関係した5ビット値は第2のSRAM440内の32XORアキュームレータ バッファの一つを選択するために用いられ、一方、バスアドレスパス412の2 〜11ビットは、第2のSRAM440内のXORアキュームレータバッファに ある個々のワードを選択するために用いられる。第2のSRAM440内のデー タ値は第1のレジスタ450へ1ワードづつ読み出され、一方、データ値は中位 バス160から第2のレジスタ452へ1ワードづつコピーされる。XORオペ レータ453は、中位バス160を横切るデータを伴うXORアキュームレータ バッファ内のデータでXOR動作を実行する。XORオペレータ453からの出 力は、SRAMデータポート442を用いて第2のSRAM440に書き戻され る。 第1のフライバイXOR素子180と同様に、ステップ224であるように、 蓄積されたパリティ情報を読み出すために、タイミングおよびコントロール素子 420は、第2のSRAMアドレスポート441を結合するためにバスアドレス パス412を選択し、第2のSRAM440内のXORアキュームレータバッフ ァ内の各ワードを順にバスデータパス413に読出し、一方、DMA転送はメモ リ120かディスクドライブ140の一つに対して起こる。第1のフライバイX OR素子180と同様に、プロセッサー110も、診断目的のために、あるいは もし読み出すかXORバッファ190内のパリティ情報全体で動作させることが 望ましいならば、第2のSRAM440入力を直接に読み出すことが出来る。第 1のフライバイXOR素子180と同様に、タイミングおよびコントロール素子 420は、第2のSRAM440内のXORアキュームレータバッファにある各 ワードへゼロを同時に書き込み、XORアキュームレータバッファを一定のゼロ 値にリセットさせる。 フライバイXOR素子180と同様に、プロセッサー110は第2のSRAM 440内の選択された位置に直接書き込むこともでき、XORバッファ190の 内容と選択された情報との間でXOR動作を直接行う。 第2のフライバイXOR素子180は付随的な特徴を持つ。すなわち、XOR アキュームレータバッファと結合できるメモリ120(又は無メモリバッファ)内 のメモリバッファ数はCAM330内の入力数に制限されないことである。この ことは任意の幅のRAIDストライプを使用でき、これにより、32RAIDス トライプまで同時に使用できる。第2のフライバイXOR素子180は、第1の SRAMデータポート433の幅および第2のSRAM440のサイズを変更す ることにより、XORアキュームレータバッファの個数を変更するために変形す ることが出来る。 好ましい実施例では、バスアドレスパス412およびバスデータパス上の値は 表4−1に示されたように用いられる。表4−1では、アドレス範囲の値は16 進法で示され、選択されたビット範囲はバスアドレス(BA)パス312およびバ スデータ(BD)パス313に対して示されている。表4−1 アドレス範囲 レジスタ リード/ライト データ/動作 000000..0000FF PCIバスレジスタリードライト PCIバスプロトコルで指定 010000..0103FF テーブル入力 リードライトリード又はライトテーブル入力 BA<0:4>CAMアキュームレータ番号 BD<8>テーブル他入力値 BD<12:31>メモリバッファアドレス 100000..10FFFF XORアキュームレータバッファリード XORアキュームレータバッファを リード又はクリア BA<12:16>XORアキュームレータバッファ番号 BD<0:31>結果 100000..10FFFF XORアキュームレータバッファライト XORをXORアキュームレータバッファ に導く BA<12:16>XORアキュームレータバッファ番号 BD<0:31>XORを導くための データ 000000..FFFFFF XORアキュームレータバッファ X フライバイXORリメモリバッファ BA<12:31>整合のための メモリアドレス BD<0:31>フライバイXOR のためのデータ 200000..7FFFFF 無メモリバッファライトフライバイXORリヌルメモリバッファ BA<12:31>整合のための メモリアドレス BD<0:31>フライバイXOR のためのデータ 好ましい実施例 第1のフライバイXOR素子およびその関係したXORバッファ190およ び第20のフライバイXOR素子180およびその関係したXORバッファ19 0は好ましい実施例である。当業者であれば、この明細書の通読後、第1のフラ イバイXOR素子180およびその関係したXORバッファ190はいくつかの 設計拘束に対して好ましく、又、第2のフライバイXOR素子180及びその関 係したXORバッファ190は他の組の設計拘束に対して好ましいことが理解さ れよう。 例えば第1のフライバイXOR素子180およびその関係したXORバッファ 190は、比較的小さいが複雑なCAM330が比較的大きい付加的な外部SR AM430より安価な場合に好ましく、一方、第2のフライバイXOR素子18 0およびその関係したXORバッファ190は、反対の状況あるいはRAIDサ ブシステムに対するストライプが比較的広い場合に好ましい。 別の実施例 好ましい実施例をここで開示したが、本発明の内容、範囲および精神を留めた 種種の変形が可能であり、これらの変形は当業者がこの明細書を通読後、明白に なるであろう。
【手続補正書】 【提出日】平成11年11月19日(1999.11.19) 【補正内容】 明細書 発明の名称 バスから収集されたデータに対するパリティ発生フライバイXOR 発明の背景 1.技術分野 この発明は、格納システムに関する。 2.関連した技術の説明 公知の一つの格納システムとしては、データが多数のディスクドライブを横切 って分配され、これらのディスクドライブの一つが、もしくはその格納ブロック の一つまたは複数がデータを消失したときに備え、修復可能となるように格納さ れる、“RAID”が公知である。後者の修復用としてデータを格納するために は、パリティ情報からデータを修復できるようにRAIDシステムはパリティ情 報を伴ってデータを記録する。例えば一つのタイプのRAIDシステムでは、“ ストライプ”として公知のユニットに、4ブロックにデータを、1ブロックにパ リティ情報を記録するために、5個のディスクが一組として使用される。 その分野で提起された一つの問題は、パリティ情報を記録するRAIDシステ ムは、パリティ情報の演算を迅速にかつ頻繁に要求することである。例えばスト ライプに書き込む動作は少なくとも一組のパリティ情報が演算されることを要求 する。パリティ情報を演算することはXOR(エクスクルーシィブオア)を実質的 に使用する。これはかなりの演算用資源のアローケーション、例えばプロセッサ ーサイクル、キャッシュロケーション、及びメモリアクセスサイクルのごときも のを一般に要求する。 パリティ情報を演算するための一つの可能な技術は、XOR機能を演算するた めのプロセッサーを制御するためにソフトウエアを用いることである。この技術 は、いくつかの選択的な設計を持ち、例えば、レジスタの競合や不必要な待機を 避けるためにプロセッサーの命令にスケジュールをたてる試みを含み、又、不必 要なメモリの伝達やプロセッサーによる不必要な待機を避けるためにキャッシュ の失敗を減じる。この技術はパリティ情報の演算目標を達成できるが、かなりの 演算用資源(プロセッサーサイクル、キャッシュロケーション、メモリ伝送)を要 求するという欠点を抱える。 パリティ情報を演算するための別の可能な技術は、XOR動作を実行するため に、独立したメモリとともに第二のプロセッサーを採用することである。この第 二のプロセッサーは、DMA結合を用いて、メインメモリ(つまり第1のプロセ ッサーにより使用されるメモリ)に結合され、そしてXOR動作のための入力を DMA動作を用いてメモリから引き取り、これにより、第1のプロセッサーを他 の仕事に委ねる。この技術はパリティ情報の演算目標を達成できるが、第1のプ ロセッサーがそのいくつかの負荷を軽減できるとしても、これもまた実質的なメ モリの伝送およびシステムバスの使用を要求するという欠点を持つ。 従って、より少ない演算用資源を消費するが、XOR動作を実行するための方 法及びシステムを提供することは有利である。その利点は、特定のプロセッサー がメモリおよびディスクアクセスがシステムバスに伝送されるとき、それらのメ モリ及びディスクアクセスを再検討し、XOR動作を実行し、これらのXOR動 作の結果を記録し、そしてこれらのXOR動作の結果をプロセッサーコマンド上 に出力する、本発明の実施例により達成される。 発明の概要 この発明は、実質的な演算用資源を消費することなく、XOR動作さを実行す るための方法およびシステムを提供する。特定のプロセッサーが一組のディスク ドライブと同じバスに結合され、その特定のプロセッサーは、ディスクドライブ へのデータ転送およびディスクドライブからのデータ転送を検証し、そして、個 々の転送を要求することなく、ディスクドライブへのデータ転送およびディスク ドライブからのデータ転送の際にXOR動作を実行する。 好ましい実施例では、特定のプロセッサーが、XOR動作のために使用される XORアキュームレータを維持し、そのアキュームレータはXOR動作の結果を 記録し、そしてプロセッサーのコマンド上に読み出す。そのXORアキュームレ ータは、各RAIDストライプのために、選択された一組のRAIDストライプ のために一組のアキュームレータレジスタを含む。メモリ(アドレス可能な内部 メ モリのごき)は、一組のアキュームレータレジスタを選択された各々のRAID ストライプに関係させる。 図面の簡単な説明 図1はフライバイXORを実行するためのシステムのブロック図である。 図2はフライバイXORを実行するためのシステムを動作するための方法を示す フローチャートである。 図3は第1のフライバイXOR素子のブロック図である。 図4は第2のフライバイXOR素子のブロック図である。 次の実施例では本発明の好ましい実施例が好ましいプロセスおよびデータ構成 に関して記述されている。しかしながら当業者であればこの明細書の通読後に本 発明の実施例は、プログラム制御下で動作する一つまたはより多くの一般目的の プロセッサー(または特定用途のプロセッサー)を用いて実行でき、又、ここで開 示された好ましいプロセスのステップおよびデータ構造の実行は、過度の経験や 更なる発明を必要としないことが理解されよう。 システム構成 図1はフライバイXORを実行するためのシステムのブロック図を示す。 システム100は少なくとも一つのプロセッサー110、メモリ120、およ びプロセッサー110とメモリ120を結合するためのシステムバス130を含 む。単一のプロセッサー110が示されているが、いくつかの応用に対する好ま しい実施例では一つのプロセッサー110より更に多くがシステムバス130に 結合され、そしてプロセッサー110はそれぞれのプロセッサーと協働させるよ うにしてもよい。 そのシステム100は更に複数のディスクドライブ140と、ディスクドライ ブ140を制御し、かつ、中位のバス160を用いてディスクドライブ140と システムバス130をデータ結合するために、少なくとも一つのディスクI/O アダプタ150を含む。 好ましい実施例では、中位のバス160は、公知の標準PCIバスとして規格 化されたPCIバスであり、PCIブリッジ170を用いてシステムバス130 に結合される。 好ましい実施例では中位のバス160はPCIバスであったが本発明はPCI バスや他の特定のタイプのバスの使用に制限されない。同様に中位のバス160 はここでは更に32ビットバスとして記述されているが本発明は32ビットバス の使用に制限されず、64ビットバスのような他のビット幅で実行することも可 能である。このような変形は過度の経験や発明を要求しない。 フライバイXOR素子180は、中位のバス160を用いる伝送データからデ ータを収集するために中位のバス160に結合される。そのフライバイXOR素 子180は、XOR動作の部分的および最終の結果をセーブするために、XOR バッファ190を用いる。 プロセッサー110がメモリ120と一つまたは複数のディスクドライブ14 0との間でデータの転送を開始するとき、そのデータは、システムバス130、 PCIブリッジ170および中位のバス160を使用して転送される。中位のバ ス160を使用してデータが転送されたとき、フライバイXOR素子180はデ ータを(データ転送を妨げることなく)読込み、そしてXORバッファ190内の XORアキュームレータ(図2参照)の一つに加算する。RAIDストライプが全 体あるいは部分的に読出し又は書き込まれたとき、システム100のいかなる部 分から別の資源を要求することなく、フライバイXOR素子180は流動的にR AIDストライプに対する一組のパリティ情報を演算する。別のデータ転送が要 求されず、又、プロセッサー110およびメモリ120はこれらのXOR動作を 実行するために要求されない。 プロセッサー110は、読み書きされるRAIDストライプ内の格納ブロック へパリティ情報が書き込まれるように指示されたとき、フライバイXOR素子1 80がXORバッファ190内の一つのXORアキュームレータから蓄積された パリティ情報を読み出す。RAIDストライプ内の一つのディスクドライブがR AIDストライプ内の一つの格納ブロックのすべてもしくは一部を喪失したとき 、RAIDストライプ内のデータを再構成もしくは修復するために、XORバッ ファ190からの蓄積されたパリティ情報も使用され得る。 システム動作 図2はフライバイXORを実行するためのシステム動作の方法のフローチャー トを示す。 フライバイXOR180の動作の方法200は、プロセッサー110、ディス クドライブ140およびフライバイXOR素子180により実行される連続した ステップを含む。 ポイント210では、システム100はRAIDストライプ上でXOR動作を 実行しようとしている。 ステップ221では、プロセッサー110はメモリバッファをメモリ120内 に位置させ、メモリバッファおよびディスクドライブ140の一つへ転送された もしくはそこから転送されたDMAにセットアップする。 ステップ222では、プロセッサー110はメモリバッファのメモリアドレス をフライバイXOR素子180へ転送し、そしてそのフライバイXOR素子18 0に対して、メモリバッファへ転送されるデータもしくはメモリバッファから転 送されるデータを認識させる。又、プロセッサー110は、XOR動作の結果を 蓄積するために、XORアキュームレータの一つをバッファ190内に位置させ る。 ステップ223ではDMAの転送が実行される。フライバイXOR素子180 は中位のバス160をモニターし、そしてメモリバッファへの転送またはメモリ バッファからの転送を認識させるように試みる。フライバイXOR素子180が このような転送を認識したとき、転送されたデータをコピーし、それを、(XO R動作を実行することにより)関係したXORアキュームレータバッファ内の蓄 積されたパリティ情報に加算する。認識されたメモリバッファに対するすべての データが転送されたとき、関係したXORアキュームレータバッファはRAID ストライプに対する演算されたパリティを保持する。 ステップ224では、プロセッサー110は、フライバイXOR素子180が 、蓄積されたパリティ情報を、関係するXORアキュームレータバッファからメ モリ110内のメモリバッファまたはディスクドライブ140の一つの格納ブロ ックへ読み出すように指令する。いずれかの場合でフライバイXOR素子180 からの読出しは、プロセッサーの読出しまたはディスクドライブ140の一つへ の DMA転送により実行される。好ましい実施例では蓄積されたパリティ情報から の読出しは、関係したXORアキュームレータバッファをゼロにリセットさせる 。 ポイント230ではRAID上のXOR動作が完成され、システム100は別 のRAIDストライプを継続できる。 好ましい実施例ではプロセッサー110は、ディスクドライブ140の一つか らメモリ120内のメモリバッファへ実際にデータを転送することなく、XOR 動作を実行できる。この動作は、データが実際にメモリ120に記憶されないこ とを除き、あたかもメモリバッファに転送されるかのように実行されるので、こ こではこの動作を“無”メモリバッファへの転送と称する。無メモリバッファへ 転送できることは都合がよい。即ち、RAIDストライプに対するディスク動作 があるためであり、この動作時、ディスクドライブ140に格納されたとき、R AIDストライプの格納ブロックのいくらかに読み書きするのが望ましいが、全 体のRAIDストライプに対するパリティ情報を演算することは必要である。 例えばRAIDストライプの単一の格納ブロックに書き込むことが望まれると き、前記格納ブロックとパリティ情報格納ブロックの双方に書き込むことが必要 である。公知のRAID格納システムでは、プロセッサーが新しいパリティ情報 を演算できるようには、最初に現在のパリティとデータブロックとをディスクか らメモリへ読み出す必要がある。しかしながらこの発明では、フライバイXOR 素子180を用いてパリティ情報を演算するが、プロセッサー110やメモリ1 20の資源を使用することなく、これらのブロックを無メモリバッファに転送で きる。 更に好ましい実施例では、RAIDストライプの単一の格納ブロックの書き込 みは数ステップで実行される:(1)フライバイXOR素子180を用いてパリテ ィ情報を蓄積できるように、古い格納ブロックデータおよび古いパリティブロッ クデータが無メモリバッファに転送される。(2)フライバイXOR素子180を 用いて格納ブロックを書き込み、同時にパリティ情報を演算できるように、新し い格納ブロックデータが格納ブロックに書き込まれる。(3)蓄積されたパリティ 情報がXORバッファ190からパリティ格納ブロックへ書き込まれる。プロセ ッサー110およびメモリ120の資源はこれらの動作で必要としない。 無メモリバッファへの転送を行うために、ステップ221でプロセッサー11 0はメモリ120内にメモリバッファを位置させず、そしてディスクドライブ1 40の一つとメモリ120により認識されないメモリアドレスとの間に転送され たDMAにデータをセットアップする。ステップ223では、メモリ120が無 メモリバッファへの“転送された”データのいずれをも捕捉することなく、転送 DMA転送が実行され、そしてフライバイXOR素子180が中位バス160を モニターする。 フライバイXOR素子 図3はフライバイXOR素子180のブロック図を示す。第1のフライバイX OR素子180はバスインターフェイス310、タイミング及びコントロール素 子320および連想メモリ(CAM)330および関係する素子を含む。XORバ ッファ190はフライバイXOR素子180に結合され、ランダムアクセスメモ リ(RAM)340、FIFO群350および関係する素子を含む。XORバッフ ァ190は概念的にRAM340を含み、好ましい実施例では、そのRAM34 0は外部RAM回路を用いて実現され、一方、FIFO350および関係する素 子はASIC内のフライバイXOR素子180の他の回路で実現される。 バスインターフェイス310およびタイミング及びコントロール素子320は フライバイXOR素子180と中位のバス160との間にインターフェイスを与 える。そのインターフェイスは中位のバス160により使用される制御信号を伝 達する一組のコントロールパス311、0から31ビットのバスアドレス値を伝 達するバスアドレス(BA)パス312、0から31ビットのバスデータ値を伝達 するバスアドレス(BA)パス313を含む。PCIバスを用いる伝達はコンピュ ータのシステム設計の分野では公知である。 中位バスがPCIバス以外か32ビット幅以外の別の実施例では、バスデータ 値は他のビット認識(0ないし63ビットのごとく)を持ち、そしてPCI以外の 他のバスプロトコルを用いて伝達を行う。 XORバッファ190はランダムアクセスメモリ(RAM)340を含み、その メモリは、一組の32XORアキュームレータバッファを備え、それらの各々は 、4バイト(32ビット)幅、それゆえサイズが4Kバイトとなる1024入力長で あ る。従って32までの異なるRAIDストライプが、フライバイXOR素子18 0により同時に実行されたXOR蓄積を持てる。 XORバッファ190は更にFIFO群350を含み、RAM340内の一つ の32XORアキュームレータバッファ内でパリティ情報を蓄積できるように、 このFIFO群は、連続したワードのバスデータ値の入力とこれらの連続したワ ード上でXOR動作の実行を行なう。 CAM330は一組の256入力を与え、それらの各々は、RAM340内の 32XORアキュームレータバッファの一つにの5ビットの関係したアドレスを 有する20ビットバスアドレス値に関係づける。そのCAM330は、CAM3 30内の256入力の一つを選択するためのアドレス入力ポート331、CAM 330により適合されるべき20ビットのタグを与えるための20ビットタグポ ート332、20ビットタグを有するCAM330により関係づけられた5ビッ ト値を与えるための5ビット値ポート333、ライトコントロール信号を受け取 るためのライトコントロールポート334およびマッチ(整合)コントロール信号 を受け取るためのマッチコントロールポート335を備える。 タイミング及びコントロール素子320は又、マッチコントロールポート33 5からマッチコントロール信号を受け取り、そしてRAM340をアドレスする ために15ビットRAMアドレスパス(RA)を与え、そしてCAM330をコン トロールするためにコントロールパス315に書き込む。 バスアドレスパス312の12から31ビットおよびバスデータパス313の 12から31ビット(このように各ケースで上位20ビット)は、CAMマルチプ レクサ336の入力に結合され、その出力はCAM330のタグポート332に 結合されている。タグポート332は又、20ビット出力を与え、その出力はド ライバー337を用いてバスデータパス313に接続される。バリューポート3 33での関係した5ビット値はXORバッファ190に接続され、又、一対のド ライバ338を用いてバスデータパス313に接続される。 そのXORバッファ190はRAM340を含み、そのRAMは、15ビット RAMアドレス値を受け取るためのRAMアドレスポート341と、このRAM 340内で関係した位置に格納される32ビットRAMデータを与えるためのR AMデータポート342を含む。このRAM340は概念的に32個のXORア キュームレータバッファに分割され、それらの個々は1K32ビットワード(つ まり4Kバイト)を含み、そして各々は上位RAMアドレス値として5ビットX ORアキュームレータバッファ数(0ないし31)を持ちRAM340内で一組 の位置を占める。 バリューポート333での関係した5ビット値はRAMアドレスポート341 に結合され、RAM340内のアドレス用ワードに対する上位5ビットを与える 、バスアドレスパスの2ないし11ビット(つまりアドレス用ワードに対する下 位10ビット)はRAM340内のアドレス用ワードに対する下位の10ビット を与え、そしてこれもRAMアドレスポート341に接続される。これにより、 RAM340はRAMアドレスポート341にて15ビットアドレスを受け取り 、そして32ビットデータワードをRAMデータポート342に与える。 RAMデータポート342は、ドライバ351を用いてバスデータパス313 (と同時にFIFO群350の入力)と、FIFOマルチプレクサ352の出力と 、FIFOレジスタ353の入力部とに接続される。そのFIFO群350はX ORオペレータ354に接続される出力部を持ち、そのオペレータは、全32ビ ットワード上でXORがパラレル動作を実行するために1組の32XORゲート を含む。このFIFOマルチプレクサ352はXORオペレータ354の出力部 と“ゼロ”入力部355とに接続される。 ステップ221およびステップ222にあるように新しいRAIDストライプ のためのXORアキュームレータバッファを位置させるために、タイミング及び コントロール素子320は、CAM330にメモリ120内のメモリバッファに 対する20ビットメモリアドレス(又、無メモリバッファに対する20ビットメ モリアドレス)をロードさせ、そして上記20ビットメモリアドレスを32XO Rアキュームレータバッファの一つに対する5ビット識別子に関連づける。バス アドレスパス312の2〜9ビットはアドレス入力ポート331に接続され、C AM330に対する新しい入力のアドレスを与える。そのCAMマルチプレクサ 336はタイミング及びコントロール素子320の制御下においてタグポート3 32へ接続するためのバスデータパス313を選択する。そのCAM330は、 バス データパス313からの12〜31ビットのバスデータ値を、特定化されたアド レスの新しい20ビットタグをアドレス入力ポート331に、又、バスデータパ ス313からの0〜4ビットのバスデータ値を新しい5ビット値として挿入する 。プロセッサー110は診断目的のためにCAM330内で選択されたすべてを 読むことが出来る。 ステップ223にて中位のバス160をモニターするためにタイミングおよび コントロール素子320はタグポート332への接続のためにバスアドレスパス 312を選択する。中位バス160上に表れたメモリアドレスの上位20ビット (または無メモリバッファ内のアドレス)がCAM330内の20ビットタグの一 つに整合するとき、CAM330はバスアドレスの12〜31ビットを整合させ 、前記20ビットタグ内の5ビット値に関係付ける。 中位バス160上のデータ値が1ワードづつFIFO群350へ読込まれるよ うに、バスアドレスパス312の2〜11ビットはRAM340内のXORアキ ュームレータバッファ内の個々のワードを選択するために使用されるが、関係し た5ビット値は、RAM340内の32XORアキュームレータバッファの一つ を選択するために用いられる。RAM340内のXORアキュームレータバッフ ァをFIFO群350内のデータに関連づけたデータに基づきXOR動作を実行 できるように、タイミング及びコントロール素子320は、XORオペレータ3 54を通じてFIFO群350内の各ワードを、RAM340からFIFOレジ スタ353に読込まれた対応するワードに関連して連続させる。この後、タイミ ング及びコントロール素子320は、XOR動作の結果がRAM340内の関係 したXORアキュームレータバッファに書き戻されるようにする。 ステップ224にて蓄積されたパリティ情報を読み出すために、タイミングお よびコントロール素子320は、RAMアドレスポート341への接続のために バスアドレスパス312を選択し、RAM340内のXORアキュームレータバ ッファ内の各ワードを順にバスデータパス313に読出し、一方、メモリ120 へまたはディスクドライブ140の一つに対してDMA転送が起きる。ほとんど 一般的には、DMA転送はディスクドライブ140の一つに直接に転送されるが 、もしプロセッサー110がパリティ情報を演算しなくてはならないとき、メモ リ 120に転送できる。プロセッサー110は診断目的のために直接にRAM34 0全体を読むこともでき、あるいは他にXORバッファ190内のパリティ情報 を読むかあるいは動作することが望ましい。XORアキュームレータバッファが 一様のゼロ値にリセットされるように、タイミング及びコントロール素子320 は同時にRAM340内のXORアキュームレータバッファ内の各ワードにゼロ 値を書き込む。 XORバッファ190の内容と選択された情報との間でXOR動作を直接に行 えるように、プロセッサー110はまたRAM340内の選択された位置に直接 書き込む。これはステップ223で実行されるXOR動作に似る。しかしながら 、CAM330のバリューポート333からの5ビット値の出力のかわりに、バ スデータパス313の12〜16ビットはRAMアドレスポート341に接続さ れる。 好ましい実施例では、バスアドレスパス312上の値およびバスデータパス3 13は表3−1で示されるように使用される。表3−1ではアドレス範囲の値が 16進法で示され、選択されたビット幅はバスアドレス(BA)パス312および バスデータ(BD)パス313で示される。表3−1 アドレス範囲 レジスタ リード/ライト データ/動作 000000..0000FF PCIバスレジスタリードライト PCIバスプロトコルで指定 010000..0103FF CAM入力 リードライトリード又はライトCAM入力 BA<2:9>CAM入力番号 BD<0:4>XORアキュームレータ番号 BD<12:31>メモリバッファアドレス 100000..10FFFF XORアキュームレータバッファリード XORアキュームレータバッファを リード又はクリア BA<12:16>XORアキュームレータバッファ番号 BD<0:31>結果 100000..10FFFF XORアキュームレータバッファライト XORをXORアキュームレータバッファ に導く BA<12:16>XORアキュームレータバッファ番号 BD<0:31>XORを導くための データ 000000..FFFFFF XORアキュームレータバッファ X フライバイXORリメモリバッファ BA<12:31>整合のための メモリアドレス BD<0:31>フライバイXOR のためのデータ 200000..7FFFFF 無メモリバッファライトフライバイXORリヌルメモリバッファ BA<12:31>整合のためのメモリアドレス BD<0:31>フライバイXOR のためのデータ 第2のフライバイXOR素子 図4は第2のフライバイXOR素子のブロック図を示す。 第2のフライバイXOR素子180及びXORバッファ190は第1のフライ バイXOR素子180およびXORバッファ190と同様である。しかしながら 第1のSRAM430はCAM330の替わりに使用され、又、第2のSRAM 440はRAM340の替わりに使用される。第1のXOR素子180およびバ ッファ190に似るが、XORバッファ190は概念的にSRAM43Oを含み 、好ましい実施例では、SRAM430は外部SRAM回路を使用して実現され 、一方、XORバッファ190の他の素子はASIC内のフライバイXOR素子 180の他の回路で実現される。 第2のフライバイXOR素子180に対するバスインタフェイス410は第1 のフライバイXOR素子180に対するバスインタフェイス310に同様であり 、第2のフライバイXOR素子180は第1のフライバイXOR素子180に対 す るコントロール素子320と同様である。バスインタフェイス410およびタイ ミング及びコントロール素子420は同様にフライバイXOR素子180と中位 バスとの間にインタフェイスを与える。そのインタフェイスは中位バス160に より制御信号を伝達する1組のコントロールパス411、0〜31のバスアドレ ス値を伝達するバスアドレス(BA)パス412、0〜31のバスデータ値を伝達 するバスデータ(BA)パス413を含む。 第1のSRAM430は5ビットワードメモリによる1メガワードを含み、そ して第1のSRAMアドレス入力ポート431、ライトコントロール信号を受け 取るためのライトコントロール入力ポート432および確定コントロール信号と して使用される出力データビットを与えるための確定コントロール出力ポート4 34(SRAM430に対する付加的なデータビット出力)を含む。バスアドレス パス412の2〜21ビットはSRAMマルチプレクサ435の第1の入力部に 接続され、バスアドレスパス412の12〜31ビットはSRAMマルチプレク サ435の第2の入力部に接続され、そしてSRAM435の出力部は第1のS RAM入力ポート431に接続される。 タイミング及びコントロール素子420はまた確定コントロール出力ポート4 34から確定コントロール信号を受信し、そして第2のSRAM440をアドレ スするために15ビットRAMアドレスパス(RA)と、第1のSRAM430を 制御するためのライトコントロールパス415を備える。 XORバッファ190は第2のSRAM440を含み、このSRAMは、15 ビットの第2のSRAMアドレス値を受け取るための第2のSRAMアドレス入 力ポート441および第2のSRAM440内の関係した位置に格納された32 ビットのSRAMデータバリューを受け取るために第2のSRAMデータポート 442を含む。RAM340と同様に第2のSRAM440は概念的に32個の XORアキュームレータバッファに分割され、それらの各々は1K32ビットワ ード(つまり4Kバイト)を含み、そして第2のSRAM440内で1組の位置を 占め、それらの各々は第2のSRAMアドレス値の上位ビットとして5ビットの XORアキュームレータバッファ番号(0〜31)を持つ。 5ビット値を256組の20ビットタグの一つに関係づける替わりに、第1の SRAM430は、各可能な20ビットタグに対する一つの入力、各入力に対す る確定したビットおよび確定したビットの組、5ビット値を有するこれらの入力 に対する確定したビットを持つ。各20ビットタグは、メモリ120(または無 メモリバッファに対するアドレス)内のメモリバッファの可能な上位20ビット アドレスを表す。各5ビット値は可能なXORアキュームレータバッファ数を表 す。 第1のSRAMデータポート433での関係した5ビット値は第2のSRAM アドレスポート441に結合され、そして第2のSRAM440内のワードをア ドレスするための上位5ビット値を与える。バスアドレスパス412の2〜11 ビット(つまり4ビットワードをアドレスするための下位10ビット)は、第2の SRAM440内のワードをアドレスするための下位10ビットを与え、また、 第2のSRAMアドレスポート441に結合される。これにより、第2のSRA M440は、第2のSRAMアドレスポート441で15ビット値を受け取り、 そして32ビットデータワードを第2のSRAMデータポート442に出力する 。 第2のSRAMデータポート42は第1のレジスタ450と、ドライバ451 を用いてバスデータパスバッファ413へ(および第2のレジスタ452へも)結 合される。第1のレジスタ450および第2のレジスタ452はXORオペレー タ453の入力部に結合され、このオペレータは全体32ビットワード上でパラ レルでXOR動作を実行とするための1組の32XORゲートを含む。XORオ ペレータ453の出力および“ゼロ”入力454はXORマルチプレクサ455 の入力部に接続され、そのXORマルチプレクサ455の出力は第2のSRAM データポート442に接続される。 ステップ223にて中位のバスをモニターするために、タイミング及びコント ロール素子420はバスアドレスパス412を選択して、第1のSRAMアドレ ス入力ポート431に接続する。確定したビットが上記位置にセットされ、第1 のSRAMデータポート433が20ビットメモリアドレスと関係したXORア キュームレータバッファに対して5ビット値を与えたとき、中位バス160上に 現れるメモリアドレス(または無メモリ内のアドレス)の上位20ビットは第1の SRAM430をアドレスするために用いられる。 関係した5ビット値は第2のSRAM440内の32XORアキュームレータ バッファの一つを選択するために用いられ、一方、バスアドレスパス412の2 〜11ビットは、第2のSRAM440内のXORアキュームレータバッファに ある個々のワードを選択するために用いられる。第2のSRAM440内のデー タ値は第1のレジスタ450へ1ワードづつ読み出され、一方、データ値は中位 バス160から第2のレジスタ452へ1ワードづつコピーされる。XORオペ レータ453は、中位バス160を横切るデータを伴うXORアキュームレータ バッファ内のデータでXOR動作を実行する。XORオペレータ453からの出 力は、SRAMデータポート442を用いて第2のSRAM440に書き戻され る。 第1のフライバイXOR素子180と同様に、ステップ224であるように、 蓄積されたパリティ情報を読み出すために、タイミングおよびコントロール素子 420は、第2のSRAMアドレスポート441を結合するためにバスアドレス パス412を選択し、第2のSRAM440内のXORアキュームレータバッフ ァ内の各ワードを順にバスデータパス413に読出し、一方、DMA転送はメモ リ120かディスクドライブ140の一つに対して起こる。第1のフライバイX OR素子180と同様に、プロセッサー110も、診断目的のために、あるいは もし読み出すかXORバッファ190内のパリティ情報全体で動作させることが 望ましいならば、第2のSRAM440入力を直接に読み出すことが出来る。第 1のフライバイXOR素子180と同様に、タイミングおよびコントロール素子 420は、第2のSRAM440内のXORアキュームレータバッファにある各 ワードへゼロを同時に書き込み、XORアキュームレータバッファを一定のゼロ 値にリセットさせる。 フライバイXOR素子180と同様に、プロセッサー110は第2のSRAM 440内の選択された位置に直接書き込むこともでき、XORバッファ190の 内容と選択された情報との間でXOR動作を直接行う。 第2のフライバイXOR素子180は付随的な特徴を持つ。すなわち、XOR アキュームレータバッファと結合できるメモリ120(又は無メモリバッファ)内 のメモリバッファ数はCAM330内の入力数に制限されないことである。この ことは任意の幅のRAIDストライプを使用でき、これにより、32RAIDス トライプまで同時に使用できる。第2のフライバイXOR素子180は、第1の SRAMデータポート433の幅および第2のSRAM440のサイズを変更す ることにより、XORアキュームレータバッファの個数を変更するために変形す ることが出来る。 好ましい実施例では、バスアドレスパス412およびバスデータパス上の値は 表4−1に示されたように用いられる。表4−1では、アドレス範囲の値は16 進法で示され、選択されたビット範囲はバスアドレス(BA)パス312およびバ スデータ(BD)パス313に対して示されている。表4−1 アドレス範囲 レジスタ リード/ライト データ/動作 000000..0000FF PCIバスレジスタリードライト PCIバスプロトコルで指定 010000..0103FF テーブル入力 リードライトリード又はライトテーブル入力 BA<0:4>CAMアキュームレータ番号 BD<8>テーブル他入力値 BD<12:31>メモリバッファアドレス 100000..10FFFF XORアキュームレータバッファリード XORアキュームレータバッファを リード又はクリア BA<12:16>XORアキュームレータバッファ番号 BD<0:31>結果 100000..10FFFF XORアキュームレータバッファライト XORをXORアキュームレータバッファ に導く BA<12:16>XORアキュームレータバッファ番号 BD<0:31>XORを導くための データ 000000..FFFFFF XORアキュームレータバッファ X フライバイXORリメモリバッファ BA<12:31>整合のための メモリアドレス BD<0:31>フライバイXOR のためのデータ 200000..7FFFFF 無メモリバッファライトフライバイXORリヌルメモリバッファ BA<12:31>整合のための メモリアドレス BD<0:31>フライバイXOR のためのデータ 好ましい実施例 第1のフライバイXOR素子およびその関係したXORバッファ190および 第20のフライバイXOR素子180およびその関係したXORバッファ190 は好ましい実施例である。当業者であれば、この明細書の通読後、第1のフライ バイXOR素子180およびその関係したXORバッファ190はいくつかの設 計の場合に好ましく、又、第2のフライバイXOR素子180及びその関係した XORバッファ190は他の組の設計の場合に好ましいことが理解されよう。 例えば第1のフライバイXOR素子180およびその関係したXORバッファ 190は、比較的小さいが複雑なCAM330が比較的大きい追加的な外部SR AM430より安価な場合に好ましく、一方、第2のフライバイXOR素子18 0およびその関係したXORバッファ190は、反対の状況あるいはRAIDサ ブシステムに対するストライプが比較的広い場合に好ましい。 別の実施例 好ましい実施例をここで開示したが、本発明の内容、範囲および趣旨を留めた 種々の変形が可能であり、これらの変形は当業者がこの明細書を通読後、明白に なるであろう。 請求の範囲 1.ストライプから少なくとも一つのデータブロックを読出すステップを含み、 前記ストライプは、大容量格納デバイス(140)の各々一つに一つの格納ブロッ クを含み、前記読出しのステップは前記データブロックからのデータをバス(1 30,160)へ転送するステップを含み、そして、前記データブロックを前記 バスに転送する前記ステップを実行する一方、前記転送のステップを妨げること なく、XOR動作(354,453)の結果を蓄積する方法。 2.前記読出しステップはメモリバス(130)を用いて前記データブロックをプ ロセッサー(110)に結合したメモリ(120)へコピーすることを含み、 前記データブロックからのデータを転送する前記ステップは、前記メモリバス よりも第2のバス(160)へデータを転送するステップを含み、そして 前記蓄積ステップは前記データブロックを第2のバスへ転送する前記ステップ に応答する請求の範囲第1項記載の方法。 3.前記読出しステップは前記多数の大容量格納デバイスの一つからのDMA転 送(223)を開始するステップを含み、 前記データブロックを転送する前記ステップは前記DMA転送のステップを含 み、 前記蓄積ステップは前記DMA転送に応答する請求の範囲第1項記載の方法。 4.前記読出しステップは前記多数の大容量格納デバイスの一つから選択された メモリ位置へのDMA転送(223)を開始するステップを含み、そして、 前記選択されたメモリ位置は前記メモリにより無視され、これにより、前記メ モリ内の前記データブロックを格納することなく、前記選択されたメモリ位置へ のDMA転送は前記結果を効果的に蓄積する請求の範囲第1項記載の方法。 5.プロセッサー(110)、メモリ(120)、前記プロセッサーおよび前記メモ リに結合されたメモリバス(130)、多数の大容量格納デバイス(140)および 、前記多数の大容量格納デバイス(140)を前記メモリバスに結合する第2のバ ス(160)を有するシステムにおいて、 少なくとも一つの前記大容量格納デバイスと前記メモリ内のバッファ位置との 間でDMA動作(223)を開始させ、 前記バッファ位置内の多数のアドレスに対する前記第2のバスをモニターし、 前記DMA動作を妨げることなく、前記多数のアドレスに関係したデータをX ORバッファ(190)へコピーし、 前記データに対するXOR動作(354、453)の結果を蓄積する、 ステップを含む方法。 6.前記バッファ位置は前記メモリにより無視され、これにより前記メモリ内の 前記データを格納することなく、前記バッファ位置への前記DMA動作は効果的 に前記結果を蓄積する請求の範囲第5項記載の方法。 7.プロセッサー(110)、前記プロセッサーに結合されたメモリバス(130) 、および前記メモリバスに結合されたメモリ(120)と、 多数の大容量格納デバイス(140)および、前記多数の大容量格納デバイス( 140)を前記メモリバスに結合する第2のバス(160)であって、これにより 、前記第2のバスは前記多数の大容量格納デバイスの一つへ、又はそこから転送 するように配置された第2のバス(160)と、 前記第2のバスに結合された素子(180)であって、前記転送の動作を妨げる ことなく、前記多数の大容量格納デバイスへ、又はそこから転送されたデータを コピーするための手段を備え、又、前記データに対するXOR動作(345、4 53)の結果を蓄積するための手段を含む素子(180)と、 を有するシステム。 8.前記コピーするための手段は、 多数のXORアキュームレータバッファ(340,440)と、 選択されたメモリアドレスの部位を前記多数のXORアキュームレータバッフ ァの一つに整合できるように配置されたデバイスメモリ(330、430)と、 前記メモリと前記第2のバスとに結合され、そして、前記デバイスメモリ内の データおよび前記選択されたメモリアドレスに関係したデータに対してXOR動 作を行うために、および前記XOR動作の結果を前記デバイスメモリに書き込む ために配置されたXORオペレータ(354、453)と、 を含む請求の範囲第7項記載のシステム。 9.前記多数の大容量格納デバイスの一つに結合されたDMA転送素子(310, 320;410,420)を含み、前記DMA転送素子は、前記DMA転送素子 により実行されたDMA転送を認識するための手段、前記DMA転送からのデー タをコピーする手段を含み、蓄積するための前記手段は前記認識するための手段 およびDMA転送に応答する請求の範囲第7項記載のシステム。 10.前記多数の大容量格納デバイスの一つに結合されたDMA転送素子(310 ,320;410,420)を含み、前記選択された大容量格納デバイスの一つ および選択されたメモリ位置からのDMA転送を実施するように配置され、前記 選択されたメモリ位置はメモリにより無視され、これにより、前記メモリ内のデ ータを格納するとなく、前記選択されたメモリ位置へのDMA転送は効果的に 結果を蓄積する請求の範囲第7項記載のシステム。 11.プロセッサー(110)、メモリ(120)、前記プロセッサーおよび前記メ モリに結合されたメモリバス(130)、多数の大容量格納デバイス(140)およ び、前記多数の大容量格納デバイス(140)を前記メモリバスに結合する第2の バス(160)を有するシステムにおいて、 データで実行されたXOR動作(345、453)の結果をそれぞれが持つ多数 のXORアキュームレータバッファ(340、440)と、 多数の入力を持つテーブルであり、各々の入力はメモリアドレスの部位を前記 多数のXORアキュームレータバッファの一つに関係させ、前記メモリアドレス は前記データと結びついているテーブルと、 を含むデータ構造。 【図1】 【図3】
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FI,FR,GB,GR,IE,IT,L U,MC,NL,PT,SE),OA(BF,BJ,CF ,CG,CI,CM,GA,GN,ML,MR,NE, SN,TD,TG),AP(GH,GM,KE,LS,M W,SD,SZ,UG,ZW),EA(AM,AZ,BY ,KG,KZ,MD,RU,TJ,TM),AL,AM ,AT,AU,AZ,BA,BB,BG,BR,BY, CA,CH,CN,CU,CZ,DE,DK,EE,E S,FI,GB,GE,GH,GM,GW,HU,ID ,IL,IS,JP,KE,KG,KP,KR,KZ, LC,LK,LR,LS,LT,LU,LV,MD,M G,MK,MN,MW,MX,NO,NZ,PL,PT ,RO,RU,SD,SE,SG,SI,SK,SL, TJ,TM,TR,TT,UA,UG,US,UZ,V N,YU,ZW

Claims (1)

  1. 【特許請求の範囲】 1.ストライプから少なくとも一つのデータブロックを読出すステップを含み、 前記ストライプは、大容量格納デバイス(140)の各々一つに一つの格納ブロッ クを含み、前記読出しのステップは前記データブロックからのデータをバス(1 30,160)へ転送するステップを含み、そして、前記データブロックを前記 バスに転送する前記ステップを実行する一方、前記転送のステップを妨げること なく、XOR動作(354,453)の結果を蓄積する方法。 2.前記読出しステップはメモリバス(130)を用いて前記データブロックをプ ロセッサー(110)に結合したメモリ(120)へコピーすることを含み、 前記データブロックからのデータを転送する前記ステップは、前記メモリバス よりも第2のバス(160)へデータを転送するステップを含み、そして 前記蓄積ステップは前記データブロックを第2のバスへ転送する前記ステップ に応答する請求の範囲第1項記載の方法。 3.前記読出しステップは前記多数の大容量格納デバイスの一つからのDMA転 送(223)を開始するステップを含み、 前記データブロックを転送する前記ステップは前記DMA転送のステップを含 み、 前記蓄積ステップは前記DMA転送に応答する請求の範囲第1項記載の方法。 4.前記読出しステップは前記多数の大容量格納デバイスの一つから選択された メモリ位置へのDMA転送(223)を開始するステップを含み、そして、 前記選択されたメモリ位置は前記メモリにより無視され、これにより、前記メ モリ内の前記データブロックを格納することなく、前記選択されたメモリ位置へ のDMA転送は前記結果を効果的に蓄積する請求の範囲第1項記載の方法。 5.プロセッサー(110)、メモリ(120)、前記プロセッサーおよび前記メモ リに結合されたメモリバス(130)、多数の大容量格納デバイス(140)および 、前記多数の大容量格納デバイス(140)を前記メモリバスに結合する第2のバ ス(160)を有するシステムにおいて、 少なくとも一つの前記大容量格納デバイスと前記メモリ内のバッファ位置との 間でDMA動作(223)を開始させ、 前記バッファ位置内の多数のアドレスに対する前記第2のバスをモニターし、 前記DMA動作を妨げることなく、前記多数のアドレスに関係したデータをX ORバッファ(190)へコピーし、 前記データに対するXOR動作(354、453)の結果を蓄積する、 ステップを含む方法。 6.前記バッファ位置は前記メモリにより無視され、これにより前記メモリ内の 前記データを格納することなく、前記バッファ位置への前記DMA動作は効果的 に前記結果を蓄積する請求の範囲第5項記載の方法。 7.プロセッサー(110)、前記プロセッサーに結合されたメモリバス(130) 、および前記メモリバスに結合されたメモリ(120)と、 多数の大容量格納デバイス(140)および、前記多数の大容量格納デバイス( 140)を前記メモリバスに結合する第2のバス(160)でありの、これにより 、前記第2のバスは前記多数の大容量格納デバイスの一つへ又、はそこから転送 するように配置された第2のバス(140)と、 前記第2のバスに結合された素子(180)であって、前記転送の動作を妨げる ことなく、前記多数の大容量格納デバイスへ、又はそこから転送されたデータを コピーするための手段を備え、又、前記データに対するXOR動作(345、4 53)の結果を蓄積するための手段をふくむ素子(180)と、 を有するシステム。 8.前記コピーするための手段は、 多数のXORアキュームレータバッファ(340,440)と、 選択されたメモリアドレスの部位を前記多数のXORアキュームレータバッフ ァの一つに整合できるように配置されたデバイスメモリ(330、430)と、 前記メモリと前記第2のバスとに結合され、そして、前記デバイスメモリ内の データおよび前記選択されたメモリアドレスに関係したデータに対してXOR動 作を行うために、および前記XOR動作の結果を前記デバイスメモリに書き込む ために配置されたXORオペレータ(354、453)と、 を含む請求の範囲第7項記載のシステム。 9.前記多数の大容量格納デバイスの一つに結合されたDMA転送素子(31 0,320;410,420)を含み、前記DMA転送素子は、前記DMA転送 素子により実行されたDMA転送を認識するための手段、前記DMA転送からの データをコピーする手段を含み、蓄積するための前記手段は前記認識するための 手段およびDMA転送に応答する請求の範囲第7項記載のシステム。 10.前記多数の大容量格納デバイスの一つに結合されたDMA転送素子(31 0,320;410,420)を含み、前記選択された大容量格納デバイスの一 つおよび選択されたメモリ位置からのDMA転送を実施するように配置され、前 記選択されたメモリ位置はメモリにより無視され、これにより、前記メモリ内の データを格納するとなく、前記記選択されたメモリ位置へのDMA転送は効果的 に結果を蓄積する請求の範囲第7項記載のシステム。 11.プロセッサー(110)、メモリ(120)、前記プロセッサーおよび前記メ モリに結合されたメモリバス(130)、多数の大容量格納デバイス(140)およ び、前記多数の大容量格納デバイス(140)を前記メモリバスに結合する第2の バス(160)を有するシステムにおいて、 データで実行されたXOR動作(345、453)の結果をそれぞれが持つ多数 のXORアキュームレータバッファ(340、440)と、 多数の入力を持つテーブルであり、各々の入力はメモリアドレスの部位を前記 多数のXORアキュームレータバッファの一つに関係させ、前記メモリアドレス は前記データと結びついているテーブルと、 を含むデータ構造。
JP10537872A 1997-02-28 1998-02-27 バスから収集されたデータに対するパリティ発生フライバルxor Pending JP2000514941A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/808,396 US5950225A (en) 1997-02-28 1997-02-28 Fly-by XOR for generating parity for data gleaned from a bus
US08/808,396 1997-02-28
PCT/US1998/003833 WO1998038576A1 (en) 1997-02-28 1998-02-27 Fly-by xor

Publications (1)

Publication Number Publication Date
JP2000514941A true JP2000514941A (ja) 2000-11-07

Family

ID=25198648

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10537872A Pending JP2000514941A (ja) 1997-02-28 1998-02-27 バスから収集されたデータに対するパリティ発生フライバルxor

Country Status (10)

Country Link
US (1) US5950225A (ja)
EP (2) EP0927395B1 (ja)
JP (1) JP2000514941A (ja)
KR (1) KR100352039B1 (ja)
CN (1) CN1242330C (ja)
AT (1) ATE240551T1 (ja)
AU (1) AU6671098A (ja)
DE (1) DE69814579T2 (ja)
HK (1) HK1020624A1 (ja)
WO (1) WO1998038576A1 (ja)

Families Citing this family (129)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US6604118B2 (en) 1998-07-31 2003-08-05 Network Appliance, Inc. File system image transfer
US6161165A (en) * 1996-11-14 2000-12-12 Emc Corporation High performance data path with XOR on the fly
US6457130B2 (en) 1998-03-03 2002-09-24 Network Appliance, Inc. File access control in a multi-protocol file server
US6317844B1 (en) 1998-03-10 2001-11-13 Network Appliance, Inc. File server storage arrangement
US6119244A (en) 1998-08-25 2000-09-12 Network Appliance, Inc. Coordinating persistent status information with multiple file servers
US6343984B1 (en) * 1998-11-30 2002-02-05 Network Appliance, Inc. Laminar flow duct cooling system
EP1912124B8 (en) 1999-10-14 2013-01-09 Bluearc UK Limited Apparatus and system for implementation of service functions
US6370616B1 (en) * 2000-04-04 2002-04-09 Compaq Computer Corporation Memory interface controller for datum raid operations with a datum multiplier
US6728922B1 (en) 2000-08-18 2004-04-27 Network Appliance, Inc. Dynamic data space
US6636879B1 (en) * 2000-08-18 2003-10-21 Network Appliance, Inc. Space allocation in a write anywhere file system
US7072916B1 (en) 2000-08-18 2006-07-04 Network Appliance, Inc. Instant snapshot
US6952797B1 (en) 2000-10-25 2005-10-04 Andy Kahn Block-appended checksums
US20020174295A1 (en) 2001-01-29 2002-11-21 Ulrich Thomas R. Enhanced file system failure tolerance
US7054927B2 (en) 2001-01-29 2006-05-30 Adaptec, Inc. File system metadata describing server directory information
US6862692B2 (en) * 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
US20020138559A1 (en) * 2001-01-29 2002-09-26 Ulrich Thomas R. Dynamically distributed file system
US6990667B2 (en) 2001-01-29 2006-01-24 Adaptec, Inc. Server-independent object positioning for load balancing drives and servers
US6990547B2 (en) * 2001-01-29 2006-01-24 Adaptec, Inc. Replacing file system processors by hot swapping
US6799284B1 (en) 2001-02-28 2004-09-28 Network Appliance, Inc. Reparity bitmap RAID failure recovery
JP4615137B2 (ja) * 2001-03-26 2011-01-19 富士通セミコンダクター株式会社 同期型メモリに対するフライバイ転送を可能にするdma制御システム
US7739614B1 (en) 2001-05-22 2010-06-15 Netapp, Inc. System and method for consolidated reporting of characteristics for a group of directories
US8171414B2 (en) * 2001-05-22 2012-05-01 Netapp, Inc. System and method for consolidated reporting of characteristics for a group of file systems
US7249150B1 (en) * 2001-07-03 2007-07-24 Network Appliance, Inc. System and method for parallelized replay of an NVRAM log in a storage appliance
US6944785B2 (en) * 2001-07-23 2005-09-13 Network Appliance, Inc. High-availability cluster virtual server system
US6757695B1 (en) 2001-08-09 2004-06-29 Network Appliance, Inc. System and method for mounting and unmounting storage volumes in a network storage environment
US6851070B1 (en) 2001-08-13 2005-02-01 Network Appliance, Inc. System and method for managing time-limited long-running operations in a data storage system
US6965989B1 (en) 2001-08-14 2005-11-15 Network Appliance, Inc. System and method for fast reboot of a file server
US6883131B2 (en) * 2001-09-28 2005-04-19 Sun Microsystems, Inc. XOR processing incorporating error correction code data protection
US20030084397A1 (en) * 2001-10-31 2003-05-01 Exanet Co. Apparatus and method for a distributed raid
US6851082B1 (en) 2001-11-13 2005-02-01 Network Appliance, Inc. Concentrated parity technique for handling double failures and enabling storage of more than one parity block per stripe on a storage device of a storage array
US6871317B1 (en) 2001-11-13 2005-03-22 Network Appliance, Inc. Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array
US7346831B1 (en) 2001-11-13 2008-03-18 Network Appliance, Inc. Parity assignment technique for parity declustering in a parity array of a storage system
US8402346B2 (en) * 2001-12-28 2013-03-19 Netapp, Inc. N-way parity technique for enabling recovery from up to N storage device failures
US7640484B2 (en) 2001-12-28 2009-12-29 Netapp, Inc. Triple parity technique for enabling efficient recovery from triple failures in a storage array
US7613984B2 (en) * 2001-12-28 2009-11-03 Netapp, Inc. System and method for symmetric triple parity for failing storage devices
US7073115B2 (en) * 2001-12-28 2006-07-04 Network Appliance, Inc. Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups
US6993701B2 (en) * 2001-12-28 2006-01-31 Network Appliance, Inc. Row-diagonal parity technique for enabling efficient recovery from double failures in a storage array
US7437727B2 (en) * 2002-03-21 2008-10-14 Network Appliance, Inc. Method and apparatus for runtime resource deadlock avoidance in a raid system
US7254813B2 (en) * 2002-03-21 2007-08-07 Network Appliance, Inc. Method and apparatus for resource allocation in a raid system
US7200715B2 (en) 2002-03-21 2007-04-03 Network Appliance, Inc. Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes
US7539991B2 (en) 2002-03-21 2009-05-26 Netapp, Inc. Method and apparatus for decomposing I/O tasks in a raid system
US7107385B2 (en) 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
US7426576B1 (en) 2002-09-20 2008-09-16 Network Appliance, Inc. Highly available DNS resolver and method for use of the same
US7171452B1 (en) 2002-10-31 2007-01-30 Network Appliance, Inc. System and method for monitoring cluster partner boot status over a cluster interconnect
US7457822B1 (en) 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
US8041735B1 (en) 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
US8041761B1 (en) 2002-12-23 2011-10-18 Netapp, Inc. Virtual filer and IP space based IT configuration transitioning framework
US7328364B1 (en) 2003-03-21 2008-02-05 Network Appliance, Inc. Technique for coherent suspension of I/O operations in a RAID subsystem
US7664913B2 (en) * 2003-03-21 2010-02-16 Netapp, Inc. Query-based spares management technique
US7424637B1 (en) 2003-03-21 2008-09-09 Networks Appliance, Inc. Technique for managing addition of disks to a volume of a storage system
US7457982B2 (en) * 2003-04-11 2008-11-25 Network Appliance, Inc. Writable virtual disk of read-only snapshot file objects
US7383378B1 (en) 2003-04-11 2008-06-03 Network Appliance, Inc. System and method for supporting file and block access to storage object on a storage appliance
US7260737B1 (en) 2003-04-23 2007-08-21 Network Appliance, Inc. System and method for transport-level failover of FCP devices in a cluster
US7739543B1 (en) 2003-04-23 2010-06-15 Netapp, Inc. System and method for transport-level failover for loosely coupled iSCSI target devices
US7293152B1 (en) 2003-04-23 2007-11-06 Network Appliance, Inc. Consistent logical naming of initiator groups
US7437530B1 (en) 2003-04-24 2008-10-14 Network Appliance, Inc. System and method for mapping file block numbers to logical block addresses
US7181439B1 (en) * 2003-04-25 2007-02-20 Network Appliance, Inc. System and method for transparently accessing a virtual disk using a file-based protocol
US7437523B1 (en) 2003-04-25 2008-10-14 Network Appliance, Inc. System and method for on-the-fly file folding in a replicated storage system
US7330862B1 (en) 2003-04-25 2008-02-12 Network Appliance, Inc. Zero copy write datapath
US7577692B1 (en) 2003-04-25 2009-08-18 Netapp, Inc. System and method for reserving space to guarantee file writability in a file system supporting persistent consistency point images
US7603553B1 (en) 2003-04-25 2009-10-13 Netapp, Inc. System and method to make file handles opaque to clients
US7523201B2 (en) * 2003-07-14 2009-04-21 Network Appliance, Inc. System and method for optimized lun masking
US7593996B2 (en) 2003-07-18 2009-09-22 Netapp, Inc. System and method for establishing a peer connection using reliable RDMA primitives
US7716323B2 (en) * 2003-07-18 2010-05-11 Netapp, Inc. System and method for reliable peer communication in a clustered storage system
US7055014B1 (en) 2003-08-11 2006-05-30 Network Applicance, Inc. User interface system for a multi-protocol storage appliance
US7647451B1 (en) 2003-11-24 2010-01-12 Netapp, Inc. Data placement technique for striping data containers across volumes of a storage system cluster
TWI259356B (en) * 2004-03-26 2006-08-01 Infortrend Technology Inc Apparatus for checking data coherence, controller and storage system having the same and method therefore is disclosed
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
US7353340B2 (en) * 2005-08-17 2008-04-01 Sun Microsystems, Inc. Multiple independent coherence planes for maintaining coherency
US7529894B2 (en) * 2005-08-17 2009-05-05 Sun Microsystems, Inc. Use of FBDIMM channel as memory channel and coherence channel
US7398360B2 (en) * 2005-08-17 2008-07-08 Sun Microsystems, Inc. Multi-socket symmetric multiprocessing (SMP) system for chip multi-threaded (CMT) processors
US8560503B1 (en) 2006-01-26 2013-10-15 Netapp, Inc. Content addressable storage system
US7509460B2 (en) * 2006-05-04 2009-03-24 Sun Microsystems, Inc. DRAM remote access cache in local memory in a distributed shared memory system
US7844584B1 (en) 2006-06-23 2010-11-30 Netapp, Inc. System and method for persistently storing lock state information
US7979701B1 (en) 2006-09-15 2011-07-12 Netapp, Inc. Cross mapping graphical interface to show encryption relationships between hosts and storage devices
US7822921B2 (en) 2006-10-31 2010-10-26 Netapp, Inc. System and method for optimizing write operations in storage systems
US7613947B1 (en) 2006-11-30 2009-11-03 Netapp, Inc. System and method for storage takeover
US7647526B1 (en) 2006-12-06 2010-01-12 Netapp, Inc. Reducing reconstruct input/output operations in storage systems
US7620669B1 (en) 2006-12-15 2009-11-17 Netapp, Inc. System and method for enhancing log performance
US8209587B1 (en) 2007-04-12 2012-06-26 Netapp, Inc. System and method for eliminating zeroing of disk drives in RAID arrays
US7975102B1 (en) 2007-08-06 2011-07-05 Netapp, Inc. Technique to avoid cascaded hot spotting
US8495417B2 (en) * 2009-01-09 2013-07-23 Netapp, Inc. System and method for redundancy-protected aggregates
US8688798B1 (en) 2009-04-03 2014-04-01 Netapp, Inc. System and method for a shared write address protocol over a remote direct memory access connection
US9646177B2 (en) * 2011-04-29 2017-05-09 Altera Corporation Systems and methods for preventing data remanence in memory systems
US9524107B2 (en) 2014-07-30 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Host-based device drivers for enhancing operations in redundant array of independent disks systems
US10761743B1 (en) 2017-07-17 2020-09-01 EMC IP Holding Company LLC Establishing data reliability groups within a geographically distributed data storage environment
US10817388B1 (en) 2017-07-21 2020-10-27 EMC IP Holding Company LLC Recovery of tree data in a geographically distributed environment
US10880040B1 (en) 2017-10-23 2020-12-29 EMC IP Holding Company LLC Scale-out distributed erasure coding
US10382554B1 (en) 2018-01-04 2019-08-13 Emc Corporation Handling deletes with distributed erasure coding
US10817374B2 (en) 2018-04-12 2020-10-27 EMC IP Holding Company LLC Meta chunks
US10579297B2 (en) 2018-04-27 2020-03-03 EMC IP Holding Company LLC Scaling-in for geographically diverse storage
US11023130B2 (en) 2018-06-15 2021-06-01 EMC IP Holding Company LLC Deleting data in a geographically diverse storage construct
US10936196B2 (en) * 2018-06-15 2021-03-02 EMC IP Holding Company LLC Data convolution for geographically diverse storage
US11436203B2 (en) 2018-11-02 2022-09-06 EMC IP Holding Company LLC Scaling out geographically diverse storage
US10901635B2 (en) 2018-12-04 2021-01-26 EMC IP Holding Company LLC Mapped redundant array of independent nodes for data storage with high performance using logical columns of the nodes with different widths and different positioning patterns
US10931777B2 (en) 2018-12-20 2021-02-23 EMC IP Holding Company LLC Network efficient geographically diverse data storage system employing degraded chunks
US11119683B2 (en) 2018-12-20 2021-09-14 EMC IP Holding Company LLC Logical compaction of a degraded chunk in a geographically diverse data storage system
US10892782B2 (en) 2018-12-21 2021-01-12 EMC IP Holding Company LLC Flexible system and method for combining erasure-coded protection sets
US11023331B2 (en) 2019-01-04 2021-06-01 EMC IP Holding Company LLC Fast recovery of data in a geographically distributed storage environment
US10942827B2 (en) 2019-01-22 2021-03-09 EMC IP Holding Company LLC Replication of data in a geographically distributed storage environment
US10936239B2 (en) 2019-01-29 2021-03-02 EMC IP Holding Company LLC Cluster contraction of a mapped redundant array of independent nodes
US10846003B2 (en) 2019-01-29 2020-11-24 EMC IP Holding Company LLC Doubly mapped redundant array of independent nodes for data storage
US10942825B2 (en) 2019-01-29 2021-03-09 EMC IP Holding Company LLC Mitigating real node failure in a mapped redundant array of independent nodes
US10866766B2 (en) 2019-01-29 2020-12-15 EMC IP Holding Company LLC Affinity sensitive data convolution for data storage systems
US11029865B2 (en) 2019-04-03 2021-06-08 EMC IP Holding Company LLC Affinity sensitive storage of data corresponding to a mapped redundant array of independent nodes
US10944826B2 (en) 2019-04-03 2021-03-09 EMC IP Holding Company LLC Selective instantiation of a storage service for a mapped redundant array of independent nodes
US11113146B2 (en) 2019-04-30 2021-09-07 EMC IP Holding Company LLC Chunk segment recovery via hierarchical erasure coding in a geographically diverse data storage system
US11119686B2 (en) 2019-04-30 2021-09-14 EMC IP Holding Company LLC Preservation of data during scaling of a geographically diverse data storage system
US11121727B2 (en) 2019-04-30 2021-09-14 EMC IP Holding Company LLC Adaptive data storing for data storage systems employing erasure coding
US11748004B2 (en) 2019-05-03 2023-09-05 EMC IP Holding Company LLC Data replication using active and passive data storage modes
US11209996B2 (en) 2019-07-15 2021-12-28 EMC IP Holding Company LLC Mapped cluster stretching for increasing workload in a data storage system
US11449399B2 (en) 2019-07-30 2022-09-20 EMC IP Holding Company LLC Mitigating real node failure of a doubly mapped redundant array of independent nodes
US11023145B2 (en) 2019-07-30 2021-06-01 EMC IP Holding Company LLC Hybrid mapped clusters for data storage
US11228322B2 (en) 2019-09-13 2022-01-18 EMC IP Holding Company LLC Rebalancing in a geographically diverse storage system employing erasure coding
US11449248B2 (en) 2019-09-26 2022-09-20 EMC IP Holding Company LLC Mapped redundant array of independent data storage regions
US11435910B2 (en) 2019-10-31 2022-09-06 EMC IP Holding Company LLC Heterogeneous mapped redundant array of independent nodes for data storage
US11288139B2 (en) 2019-10-31 2022-03-29 EMC IP Holding Company LLC Two-step recovery employing erasure coding in a geographically diverse data storage system
US11119690B2 (en) 2019-10-31 2021-09-14 EMC IP Holding Company LLC Consolidation of protection sets in a geographically diverse data storage environment
US11435957B2 (en) 2019-11-27 2022-09-06 EMC IP Holding Company LLC Selective instantiation of a storage service for a doubly mapped redundant array of independent nodes
US11144220B2 (en) 2019-12-24 2021-10-12 EMC IP Holding Company LLC Affinity sensitive storage of data corresponding to a doubly mapped redundant array of independent nodes
US11231860B2 (en) 2020-01-17 2022-01-25 EMC IP Holding Company LLC Doubly mapped redundant array of independent nodes for data storage with high performance
US11507308B2 (en) 2020-03-30 2022-11-22 EMC IP Holding Company LLC Disk access event control for mapped nodes supported by a real cluster storage system
US11288229B2 (en) 2020-05-29 2022-03-29 EMC IP Holding Company LLC Verifiable intra-cluster migration for a chunk storage system
US11693983B2 (en) 2020-10-28 2023-07-04 EMC IP Holding Company LLC Data protection via commutative erasure coding in a geographically diverse data storage system
US11847141B2 (en) 2021-01-19 2023-12-19 EMC IP Holding Company LLC Mapped redundant array of independent nodes employing mapped reliability groups for data storage
US11625174B2 (en) 2021-01-20 2023-04-11 EMC IP Holding Company LLC Parity allocation for a virtual redundant array of independent disks
US11354191B1 (en) 2021-05-28 2022-06-07 EMC IP Holding Company LLC Erasure coding in a large geographically diverse data storage system
US11449234B1 (en) 2021-05-28 2022-09-20 EMC IP Holding Company LLC Efficient data access operations via a mapping layer instance for a doubly mapped redundant array of independent nodes

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5146588A (en) * 1990-11-26 1992-09-08 Storage Technology Corporation Redundancy accumulator for disk drive array memory
US5469566A (en) * 1992-03-12 1995-11-21 Emc Corporation Flexible parity generation circuit for intermittently generating a parity for a plurality of data channels in a redundant array of storage units
US5335235A (en) 1992-07-07 1994-08-02 Digital Equipment Corporation FIFO based parity generator
US5522050A (en) * 1993-05-28 1996-05-28 International Business Machines Corporation Bus-to-bus bridge for a multiple bus information handling system that optimizes data transfers between a system bus and a peripheral bus
US5603051A (en) * 1995-06-06 1997-02-11 Hewlett-Packard Company Input/output processor with a local memory providing shared resources for a plurality of input/output interfaces on an I/O bus
US5729705A (en) * 1995-07-24 1998-03-17 Symbios Logic Inc. Method and apparatus for enhancing throughput of disk array data transfers in a controller
US5737744A (en) * 1995-10-13 1998-04-07 Compaq Computer Corporation Disk array controller for performing exclusive or operations
US5742752A (en) * 1995-12-29 1998-04-21 Symbios Logic Inc. Method for performing a RAID stripe write operation using a drive XOR command set
US6161165A (en) * 1996-11-14 2000-12-12 Emc Corporation High performance data path with XOR on the fly

Also Published As

Publication number Publication date
HK1020624A1 (en) 2000-05-12
CN1222986A (zh) 1999-07-14
EP1310874A2 (en) 2003-05-14
EP0927395B1 (en) 2003-05-14
ATE240551T1 (de) 2003-05-15
CN1242330C (zh) 2006-02-15
DE69814579D1 (de) 2003-06-18
WO1998038576A1 (en) 1998-09-03
US5950225A (en) 1999-09-07
EP0927395A1 (en) 1999-07-07
KR20000065071A (ko) 2000-11-06
EP1310874A3 (en) 2004-09-22
KR100352039B1 (ko) 2003-01-24
DE69814579T2 (de) 2004-04-01
AU6671098A (en) 1998-09-18

Similar Documents

Publication Publication Date Title
JP2000514941A (ja) バスから収集されたデータに対するパリティ発生フライバルxor
JP3697395B2 (ja) 異なるデータ構造を格納するための方法及び装置
US6484234B1 (en) Method and apparatus for efficiently destaging data from a cache to two or more non-contiguous storage locations
US6748486B2 (en) Method, system, and data structures for superimposing data records in a first data format to memory in a second data format
US5696910A (en) Method and apparatus for tracking transactions in a pipelined bus
US7617372B1 (en) Avoiding copy on first write
US6408369B1 (en) Internal copy for a storage controller
US6463510B1 (en) Apparatus for identifying memory requests originating on remote I/O devices as noncacheable
WO1998038576A9 (en) Fly-by xor
US6636927B1 (en) Bridge device for transferring data using master-specific prefetch sizes
WO1996018141A1 (fr) Systeme informatique
JP3187720B2 (ja) コントローラにおけるディスクアレイデータ転送のスループットを改善する方法及び装置
US4646237A (en) Data handling system for handling data transfers between a cache memory and a main memory
JP3288712B2 (ja) コンテキストデータ検索用のリンクキャッシュ
US5923857A (en) Method and apparatus for ordering writeback data transfers on a bus
US6516343B1 (en) Computer system and method for enhancing memory-to-memory copy transactions by utilizing multiple system control units
EP0979454A1 (en) Method and apparatus for supporting multiple overlapping address spaces on a shared bus
US7073004B2 (en) Method and data processing system for microprocessor communication in a cluster-based multi-processor network
JPH0628261A (ja) データ転送方法及び装置
EP1662400B1 (en) Apparatus with dual writing function, and storage control apparatus
JPS6113633B2 (ja)
JP2636760B2 (ja) マルチプロセッサシステム
CA2252553C (en) Fly-by xor for generating parity for data gleaned from a bus
US6317857B1 (en) System and method for utilizing checksums to recover data
US20030120862A1 (en) Controlling method of storage apparatus, and storage apparatus, disk array device, and disk controller used in the method thereof