JP5182672B2 - パターンマッチングによる高性能raid6システムアーキテクチャ - Google Patents

パターンマッチングによる高性能raid6システムアーキテクチャ Download PDF

Info

Publication number
JP5182672B2
JP5182672B2 JP2009543044A JP2009543044A JP5182672B2 JP 5182672 B2 JP5182672 B2 JP 5182672B2 JP 2009543044 A JP2009543044 A JP 2009543044A JP 2009543044 A JP2009543044 A JP 2009543044A JP 5182672 B2 JP5182672 B2 JP 5182672B2
Authority
JP
Japan
Prior art keywords
data block
syndrome
new
data
block
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
Application number
JP2009543044A
Other languages
English (en)
Other versions
JP2010514066A (ja
Inventor
ゴパール、ヴィンドー
ウォルリッチ、ギルバート
ヤップ、カーク
フェグハーリー、ワッジ
ブラニッチ、ジョン
オッタヴィ、ロバート
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2010514066A publication Critical patent/JP2010514066A/ja
Application granted granted Critical
Publication of JP5182672B2 publication Critical patent/JP5182672B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Detection And Correction Of Errors (AREA)

Description

本開示は、RAID(redundant array of independent disks)システムに関し、特に、RAID6システムの計算速度を上げることに関する。
RAID(redundant array of independent disks)は、信頼性、容量、または、性能を高める目的から複数の物理的ハードディスクドライブを1つの論理ドライブに統合する。したがって、複数の物理的ハードディスクドライブの代わりに、オペレーティングシステムが単一の論理ドライブを監視する。当業者には知られているように、RAIDレベルと呼ばれる標準的な方法は数多く存在し、それらは、RAIDシステムにおいて物理的ハードディスクドライブにデータを分散させるというものである。
例えば、レベル0のRAIDシステムでは、データをブロックに分解し、それぞれのブロックを別々のハードディスクドライブに書き込むことによって、データはハードディスクドライブの物理的配列にわたってストライプ化される。多くのハードディスクドライブに負荷を分散させることによって入出力(I/O)性能は向上する。レベル0のRAIDはI/0性能を向上させはするものの、1つのハードディスクドライブが故障すると、データのすべてが失われてしまうので、冗長性を提供することはない。
レベル5のRAIDシステムは、少なくとも3つのハードディスクドライブ全体でデータおよびパリティ情報の両方をストライプ化することによってハイレベルな冗長性を提供する。データのストライプ化とパリティ分散とを組み合わせることによって故障した際のリカバリを提供することができる。レベル6のRAIDシステムは、2つのディスクが故障した場合もリカバリを可能にすることによってレベル5のRAIDシステムよりさらにハイレベルな冗長性を提供できる。レベル6のRAIDシステムでは、データに対してPシンドロームおよびQシンドロームと呼ばれる2つのシンドロームが生成され、RAIDシステム内のハードディスクドライブに格納される。Pシンドロームは、ストライプ(データブロック(ストリップ)、Pシンドロームブロック、および、Qシンドロームブロック)におけるデータのパリティ情報を単に計算することによって生成される。ディスクドライブが故障した場合にQシンドロームを生成するには、ガロアフィールド乗算を必要とし、複雑である。ディスクのリカバリ動作の間に実行されるデータ、および/または、Pおよび/またはQシンドロームをリカバリするための再生方式は、ガロア乗算および逆演算のどちらも必要とする。
再生は、一般的に、計算用ルックアップテーブルを用いるか、または、特定の多項式に限定された複数のガロアフィールド乗算を用いて行われる。
請求される内容の実施形態の特徴は、以下の詳細な説明を図面を参照しながら読み進めていくにつれ明らかになろう。図面における同様の参照符号は同様の部分を示す。
ハードディスクアレイにおいてストライプ化されたデータブロック(ストリップ)と、PおよびQシンドロームとを含む各ストライプからなる複数のストライプを表すRAID6アレイの一実施形態を示すブロック図である。
本発明の原理に従う、計算を加速させる加速部を有するシステムの一実施形態を含むシステムのブロック図である。
図2に示された加速部におけるデータ処理部の一実施形態を示すブロック図である。
図3に示されたデータ処理部におけるデータ処理経路のいずれか1つのためのコンフィギュレーションレジスタの一実施形態を示すブロック図である。
図3に示されたデータ処理部におけるデータ処理経路のいずれか1つのためのステータスレジスタの一実施形態を示すブロック図である。
図2に示された加速部、および、図3に示されたデータ処理部を用い、PおよびQシンドロームを並列計算する方法の一実施形態を示す。
図1に示されたRAID6アレイにおいて部分的PおよびQシンドローム計算を行う方法の一実施形態を示す。
図1に示されたRAID6アレイにおける2つのデータディスクの損失をリカバリする方法の一実施形態を示す。
図2に示された加速部で実行されてよい比較検査を実行する方法の一実施形態を示す。
図2に示される加速部で実行されてよい結果非ゼロチェックを実行する方法の一実施形態を示す。
本発明の原理に従う、RAID6計算を加速させる加速部の一実施形態を含むシステムのブロック図である。
以下の詳細な説明は、請求項の内容の例示的実施形態を参照しながら説明されるが、多くの変形例、修正、および、変更がなされうることは当業者にとって明らかであろう。したがって、請求される内容は広く検討され、添付の請求項の範囲に記載されるとおりに定義されることが意図される。
図1は、ハードディスク150アレイ上でストライプ化されたデータブロック(ストリップ)と、PおよびQシンドロームとを含む各ストライプからなる複数のストライプを表すRAID6アレイ100の一実施形態を示すブロック図である。図示された実施形態では、RAIDアレイは、3つのデータディスクと、2つのシンドローム(P、Q)ディスクとを含む5つのハードディスク150を有する。データは、各ハードディスクに分散されたPおよびQシンドロームによるブロックレベルのストライプ化を用い、ラウンドロビン方式でRAID6アレイに書き込まれる。逐次データ、例えば、複数のブロックに分割たファイルは、複数のブロックの1つが3つのデータディスク102()におけるデータブロック102、104、106のいずれかに格納されるように水平ストライプ0などのストライプに分散される。水平ストライプ0におけるデータブロック102、104、106について計算されるPおよびQシンドロームは、Pブロック130、および、Qブロック132にそれぞれ格納される。PおよびQシンドロームブロックは、異なるハードディスク150のそれぞれのストライプに格納される。一実施形態では、ストライプにおける各ブロックは512バイトである。
Pシンドロームは、排他的論理和(XOR)演算を実行することにより生成されうる。XORは、オペランドのうちの1つのみが論理値「1」を有する場合、結果として論理値「1」となる2つのオペランドに対する論理演算である。例えば、値「11001010」を有する第1のオペランドと、値「10000011」を有する第2のオペランドとのXORの結果は、値「01001001」となる。第1のオペランドを格納するハードドライブが故障した場合、第2のオペランドと上記結果とのXOR演算の実行により第1のオペランドはリカバリされうる。
Pシンドロームは、
Figure 0005182672
(XOR)演算を用いてストライプ全体にわたって計算されたデータ(D)の単純なパリティである。n個のデータディスクを有するシステムでは、Pシンドロームの生成は、以下の方程式1によって表される。
Figure 0005182672
Qシンドロームの計算は、ガロアフィールド多項式(g)を用いた乗算()を必要とする。8ビット(バイト)ガロアフィールド多項式に対する非常に高性能な算術演算が行われる。多項式は、加算、減算、乗算、および、負でない整数の指数を用いて有限個の定数および変数を組み合わせた式である。1つの原始多項式は、X+X+X+X+1であり、16進法における1Dで示されてよい。多項式に対するガロアフィールド(GF)演算は、GF(2^8)算術とも呼ばれる。データディスクを有するシステムでは、Qシンドロームの生成は、以下の方程式2によって表される。
Figure 0005182672
バイト毎のガロアフィールド演算がストライプベースで実行され、ブロックにおける各バイトは、互いに別々に計算される。バイト毎のガロアフィールド演算は、255(2^8−1)ものデータディスクに対応できる。
図2は、本発明の原理に従う、計算を加速させる加速部200の一実施形態を含むシステムのブロック図である。
システムは、作業要求210を格納するメモリ202と、作業要求210を処理するステートマシン(マイクロエンジン)204とを有する。ステートマシン204は、共有メモリ206を介して加速部208に対し命令を発する。ステートマシン204から実行される命令に基づき、加速部208は、8ビットのガロアフィールド多項式に対し算術演算を実行してよい。
一実施形態では、ステートマシン204は、例えば、インテル社から購入できるIXP(登録商標)2400プロセッサなどのプロセッサ内の複数のマイクロエンジンのうちの1つであってよい。加速部208は、ステートマシン(マイクロエンジン)204から、8ビットガロアフィールド多項式の計算をオフロードする。
メモリ202および共有メモリ206は、DRAM(ダイナミックランダムアクセスメモリ)、SRAM(スタティックRAM)、SDRAM(シンクロナスDRAM)、DDR2(Double Data Rate2)RAM、または、RDRAM(Rambus Dynamic Random Access Memory)、あるいは、他のいかなるタイプのメモリであってよい。
加速部208は、データに対し演算を実行するデータ処理部218を有する。メモリに格納された作業要求210に基づき、ステートマシン204は、RAIDアレイ演算の計算処理を加速部208にオフロードしてよい。一実施形態では、RAIDアレイは、図示されるようなRAID6アレイ100であってよい。加速部208は、制御レジスタ212、ステータスレジスタ214、および、加速部ステートマシン216も有する。
図3は、図2に示される加速部208におけるデータ処理部218の一実施形態を示すブロック図である。図示される実施形態では、データ処理部218は、2つの論理演算ユニット(ALU)314、316を有する。ALUは、オペランドに対し、数値および論理演算を実行する。それぞれのALU314および316で実行される論理または数値演算は、当該ALU314および316に対応付けられたコンフィギュレーションレジスタ212(図2)によって設定可能である。
一実施形態では、各ALU314および316は、バイト毎に数値および論理演算を実行してよい。各ALU314および316は、XORアレイと、比較およびゼロチェック関数とを有してよく、データ処理部218を介し、データのシングルパスでPシンドロームまたはQシンドロームの計算を別々に行ってよい。
一実施形態では、ALU314および316のそれぞれは、64ビット(8バイト)データ経路を有し、8つの設定可能なガロアフィールド(GF)バイトスライスを含む。各GFバイトスライスは、8バイトデータ経路における1つのバイトを処理する。ALU314および316のそれぞれは、64ビットデータ経路内の8バイトを同時に処理する。これによって、ディスクブロックの演算は、各ディスクブロックからの適切なバイトを用いて並列に実行されることができる。ALU314および316のそれぞれは、512バイトまで格納できる個別の蓄積バッファ306および308を有する。ALU314、316は、GF(8)バイト乗算器322を共有する。蓄積バッファ314および316は、処理部218におけるALU314、316および乗算器322による演算の中間結果を格納するのに用いられてよい。
データ処理部218は、2つの別々のデータ処理経路を有する。一方のデータ処理経路は、蓄積バッファ306およびALU314を有する。もう一方のデータ処理経路は、蓄積バッファ308およびALU316を有する。
2つのデータ処理経路は、乗算器322を共有する。データ処理経路が両方とも同時に一般的な乗算・累積関数を実行する必要がある場合、乗算器322の使用はALU314と316との間で切り替えられる。スループットは減少するものの、加速部208は、共有メモリ206からのデータのシングルパスに対する単一の一般的乗算・累積によるダブルディスクリカバリを可能とする。
加速部208は、例えば、PおよびQシンドロームを計算し、データリカバリを実行するなどの格納用途においてパフォーマンスをほとんどロスせずに単一の乗算器322を効率的に用いる。しかしながら、加速部208の使用は、格納用途に限定されない。加速部208は、8ビットフィールドを形成する8ビット多項式を含む計算に用いられてよい。さらに、ALU314および316のそれぞれは、各自の多項式を個別に処理してよい。
データ処理部218は、複数のマルチプレクサを有する。各マルチプレクサは、セレクタの状態に基づき、2つ以上の入力についての情報を単一の出力にエンコード(または多重化)する。例えば、マルチプレクサ302および304は、データソースの選択が蓄積バッファ306および308のそれぞれに格納されるようにできる。データソースは、共有メモリ206(図2)から受け取ったプッシュデータ、または、ALU314、316または乗算器322から出力された中間結果であってよい。マルチプレクサ310、312は、ALU314、316それぞれへのオペランドの1つに対するソースの選択を可能にする。オペランドのソースは、蓄積バッファ306および蓄積バッファ308のいずれかでよい。
マルチプレクサ318は、乗算器322についてのオペランドの1つを選択できる。オペランドのソースは、ALU314またはALU316における演算結果、共有メモリから受け取ったプッシュデータ、および、蓄積バッファ306または蓄積バッファ308に格納されたデータのいずれかでよい。
マルチプレクサ320は、乗算器322による乗算演算を実行すべく、複数の多項式(POLY1、POLY2)の選択肢の1つが用いられることを可能にする。多項式は、プログラム可能であり、ALU314、316のそれぞれを介しての各処理経路は、異なるプログラム可能な多項式を有してよい。例えば、一実施形態では、POLY1は、ALU314に関連したプログラム可能多項式であってよく、POLY2は、ALU316に関連したプログラム可能多項式であってよい。マルチプレクサ324は、乗算器322による乗算演算を実行すべく、複数の乗算係数(M1、M2)の選択肢の1つが用いられることを可能にする。例えば、乗算係数M1は、ALU314を介した処理経路に関連してよく、乗算係数M2は、ALU316を介した処理経路に関連してよい。
マルチプレクサ328、332は、ALU314、316のそれぞれから出力された現在の演算の結果、または、乗算器322から出力されたXOR330の選択を可能にする。データ処理経路(ALU314またはALU316を含む)の1つの結果は、共有メモリに戻されるべき最終結果、または、蓄積バッファ306、308のそれぞれに格納されるべき中間結果であってよい。
64ビットXOR330およびマルチプレクサ326は、データ処理経路内の計算がデータ処理経路内で実行されるべき乗算演算およびXOR演算を含むようにできる。さまざまなマルチプレクサを介しての出力の選択に基づき、各データ処理経路は、ALU演算(ALU314、316)、乗算演算(乗算器322)、および/または、排他論理和(XOR)演算(XOR330)を含んでよい。
図2に関連して採り上げられたコンフィギュレーションレジスタ212は、図3に示された個別のデータ処理経路のそれぞれについてのコンフィギュレーションレジスタを含む。
図4は、図3に示されたデータ処理部218におけるデータ処理経路のいずれか1つのためのコンフィギュレーションレジスタ400の一実施形態を示すブロック図である。一実施形態では、コンフィギュレーションレジスタ400は、データ処理経路を管理する、すなわち、加速機能を管理するのに用いられうる32ビットを有する。図示される実施形態では、コンフィギュレーションレジスタ400は、1つ以上の予約済みビット402を含んでよい。
コンフィギュレーションレジスタ400は、演算後にステータスレジスタの内容が保存されたか消去されたかを示す1ビットを含みうる保存ステータスフィールド404を含む。例えば、保存ステータスフィールド404は、単一のビットであってよく、ステータスを保存するために論理値「1」に設定されるか、または、消去される、すなわち、次の演算の前にステータスレジスタの内容を消去するために論理値「0」に設定され、その結果、次の演算によってステータスはアップデートされうる。
コンフィギュレーションレジスタ400におけるソースフィールド406は、マルチプレクサ310、312を介し、ALU314、316についてのデータソースを選択するよう設定されてよい。例えば、ALU314で実行されるべき演算についてのデータソースは、蓄積バッファ306または蓄積バッファ308であってよい。一実施形態では、ソースフィールド406は、マルチプレクサ310、312を介してALUオペランドのソースを選択するよう設定されるかまたは消去される1ビットを有してよい。
コンフィギュレーションレジスタ400における蓄積フィールド408は、データ処理部218を介したデータ処理経路の結果がそれぞれの蓄積バッファに戻されるべきかどうかを選択する。
コンフィギュレーションレジスタ400における計算モードフィールド410は、各データ処理経路が異なる演算を実行するように設定されることを可能にする。計算モードフィールド410の状態は、マルチプレクサ328、332から蓄積バッファ306、308、および/または、マルチプレクサ334までのデータ経路を制御するのに用いられてよい。一実施形態では、計算モードフィールド410は、8つの演算のうちの1つが選択されるようにできる3ビットを有する。これらの演算は、関連する計算モードおよび結果と共に以下の表1に示される。
Figure 0005182672
モード100、101、110、および、111のXOR演算は、64ビットXOR330によって実行される。例えば、モード100では、マルチプレクサ326は、64'h0を選択し、データ処理経路は、64ビットXOR330から出力された演算(M・データ)の結果を用いて乗算器322においてGF8乗算演算を実行する。表1に記載された他のモードについては後ほど詳しく説明する。
コンフィギュレーションレジスタ400は、各データ処理経路が乗算器322における乗算演算を実行するために異なる乗算係数およびガロアフィールド(GF)多項式を設定できるようにする。乗算器332を介した経路は、両方のデータ処理経路によって共有される、すなわち、ALU314およびALU316からマルチプレクサ320、324まで通じている経路によって、乗算器は、処理経路の1つに対して選択されるべき現在の演算のために利用されることできるようになる。
乗算係数フィールド412は、複数の乗算係数(M)のうちの1つが設定されることを可能にする。それぞれのデータ処理経路に対して設定される乗算係数(M1、M2)は、現在の演算のために乗算器322を使用中しているそれぞれのデータ処理経路のマルチプレクサ324を介して入力される。一実施形態では、乗算係数フィールドは、8ビットを有する。
GF多項式フィールド414は、データ処理経路に対して複数の多項式のうちの1つが設定されることを可能にする。一実施形態では、GF多項式フィールドは、8ビットを有する。それぞれのデータ処理経路に対して設定されるGF多項式(POLY1、POLY2)は、現在の演算のために乗算器322を使用しているそれぞれのデータ処理経路のマルチプレクサ320を介して入力される。一実施形態では、GF多項式フィールド414は、「1D」(16進法(hex))に設定される。しかしながら、GF多項式フィールド414は、他のGF多項式が設定されるようにすることもできる。
加速部208は、任意のGF(2^8)多項式フィールドを処理してよく、共通に使用される発生器1D(hex)に対して電力効率良く動作するよう最適化される。加速部208は、1サイクルにつき8バイト処理する単一の乗算器322による、任意の係数を用いた乗算の高速実装を可能にする。スループットは、8バイトに対して乗算を並行して行うことにより向上する。
図3に関連して採り上げられた特殊な乗算器と、命令とによって、加速部208は、加速部208と共有メモリ206との間のデータ移動を重複させることによる部分的な(ランダムな)書き込みの性能を高めることができる。
複数の経路は、データの無駄なマルチパス、すなわち、異なる演算を実行するために同じデータを共有メモリ206からデータ処理部218に送ることも削減する。
加速部208は、大掛かりな追加ロジックを加えなくてもハイパフォーマンスを提供することができる。一実施形態では、メモリサイズを最小限にすべく蓄積バッファ306、308が選ばれる。単一の大きな乗算器322は、記憶用途におけるパフォーマンスロスをあまりせずに効率良く用いられる。加速部208は、8ビットフィールドを形成するいかなる8ビット多項式もサポートするという点において、柔軟性も有する。さらに、ALU314、316のそれぞれは、異なる多項式を個別に処理してよい。
図5は、図3に示されたデータ処理部218におけるデータ処理経路のいずれか1つのためのステータスレジスタ500の一実施形態を示すブロック図である。データ処理部218におけるALU314、316それぞれを介した各データ処理経路は、ステータスレジスタ500をそれぞれ有する。図示された一実施形態では、ステータスレジスタ500は、結果ゼロチェックフィールド502と、第1の非ゼロの結果バイトのバイトアドレスを格納するバイトアドレスフィールド504とを有する。結果ゼロチェックフィールド502は、1の演算結果に基づき設定されるかまたは削除される1ビットフィールドであってよい。バイトアドレスフィールド504は、512バイトデータブロック内の1バイトのアドレスを格納するために9ビットを有してよい。
一実施形態では、図2に示された加速部208は、RAID6ストライプ書き込み動作のためのPおよびQシンドロームの計算を加速させる。PおよびQシンドロームは、共有メモリ206に格納されるストライプを構成するデータブロックにおいて、加速部208で並列に計算される。ストライプを構成するデータブロックは、共有メモリ206から加速部208に供給される。一方のデータ処理経路は、ストライプを構成するPシンドロームを計算するよう設定されたALU314、316それぞれを有し、もう一方のデータ処理経路は、同じストライプを構成するQシンドロームを計算するよう設定されたALU314、316それぞれを有する。
上述のごとく、Pシンドロームは、n個のデータディスクドライブに格納されるべきストライプにおけるデータブロックに対しXOR演算を実行することによって計算され、以下の方程式1によって表される。
Figure 0005182672
図1を参照すると、ストライプは、同じサイズのデータブロック102、104、106のグループを有し、これをストリップと称してよい。各ストライプに対し、Pシンドローム130、Qシンドローム132という2つのチェックサムがある。PおよびQシンドロームは、各ストライプのデータブロックにおけるデータバイト全体にわたって計算されてよい。
PおよびQシンドロームは、因数分解を用いて計算されてよい。各係数gは、8ビット多項式である。一般的な乗算も、加速部206を用いて、1サイクルスループット(8バイト)のシングルパスで効率よく実行されることができる。Qシンドロームは、以下の方程式2に示すように、n個のディスクドライブに格納されるべき()データブロックに乗算器322のガロアフィールド(GF)多項式(g)を乗じ、乗算演算の結果にXOR330のXOR演算を実行することによって計算される。
Figure 0005182672
本発明の一実施形態では、PおよびQシンドロームは、同じデータに対して同時に計算される。加速部208を介してのデータのシングルパスで実行される2つの計算により、データ移動は最適化され、システムバスの帯域幅(すなわち、共有メモリ206との行き来)も節約される。このように、加速部208は、PおよびQシンドロームの計算能力を向上させる。
図6は、図2に示された加速部208と、図3に示されたデータ処理部218とを用い、PおよびQシンドロームを同時に計算する方法の一実施形態を示す。
上述のごとく、PおよびQシンドロームは、複数のハードディスクにわたるストライプにおけるデータブロックに対して計算される。一実施形態では、ストライプにおける各データブロック(ストリップ)は、512バイトを格納しうる。
ブロック600では、データ処理経路のそれぞれは、加速部208における各コンフィギュレーションレジスタ400にコンフィギュレーションデータを格納することによって構成される。ALU314を介した第1のデータ処理経路は、Pシンドロームを計算するよう設定され、ALU316を介した第2のデータ処理経路は、同じデータに対して同時にQシンドロームを計算するよう設定されてよい。
各データ処理経路に設けられた加速部コンフィギュレーションレジスタ400のそれぞれは、まず、データを共有メモリ206(図2)からそれぞれの蓄積バッファ306、308に移動させるよう設定される。計算モードフィールド410は、NULLに設定され、蓄積フィールド408は、「1」に設定されることにより蓄積バッファ306、308にプッシュデータが蓄積され、保存ステータスビットは「1」に設定されることにより、各ステータスレジスタ500の内容が保存される。各コンフィギュレーションレジスタ400における他のすべてのフィールドがデフォルト値に設定される場合、GF多項式フィールド414は1D(hex)のデフォルト値に設定され、乗算係数フィールド412は、デフォルト値0に設定され、蓄積バッファソースフィールド408は、ALU314、316に対応付けられたそれぞれの蓄積バッファ306、308に設定される。
一実施形態では、加速部のコンフィギュレーションレジスタ400に、共有メモリ206に格納されたコンフィギュレーションレジスタをロードする命令は、アクセラレータステートマシン216によって実行される。処理はブロック602に進む。
ブロック602では、各データ処理経路は、共有メモリ206(図2)からのデータブロックを蓄積バッファ306、308のそれぞれに格納するよう、コンフィギュレーションレジスタ400のそれぞれを介して設定されている。アクセラレータステートマシン216は、共有メモリ206からデータを移動し、当該データを蓄積バッファ306、308に格納するよう、両データ処理経路に書き込み命令を発する。蓄積バッファ306、308に格納されたデータは、ストライプにおける第1のディスクドライブの第1のデータブロックである。コンフィギュレーションレジスタ400の状態に基づき、共有メモリ206から供給されたプッシュデータは、ALU314、316に入る。コンフィギュレーションレジスタ400における計算モードフィールド410がNULLなので、ALU314、316では、演算は実行されない。変更されていないデータは、ALU314、316を出て、マルチプレクサ328、332を通り抜け、マルチプレクサ302、304へと戻されて蓄積バッファ306、308に格納される。処理はブロック604へと進む。
ブロック604では、ストライプの構成要素である第1のデータブロックが蓄積バッファ306、308に格納された後、それぞれのデータ処理経路に設けられたコンフィギュレーションレジスタ400は、PおよびQシンドロームの計算を実行するよう設定される。一実施形態では、コンフィギュレーションレジスタの状態に基づき、ALU314は、ストライプに対してPシンドロームの演算を実行するよう設定され、ALU316は、ストライプに対してQシンドロームの演算を実行するよう設定される。
ALU314がPシンドロームを計算するよう設定される場合、対応するコンフィギュレーションレジスタ400内では、計算モードフィールド410は、「XOR」に設定され、蓄積フィールド408は、蓄積に設定され、保存ステータスフィールド404は、「保存」に設定される。上述のごとく、コンフィギュレーションレジスタ400内の他のすべてのフィールドは、デフォルト値に設定される。
ALU316がQシンドロームを計算するよう設定される場合、対応するコンフィギュレーションレジスタ400では、計算モードフィールド410は、「XOR前データ乗算」に設定され、蓄積フィールド408は蓄積に設定され、保存ステータスフィールド404は、保存ステータスに設定される。処理は、ブロック606へと進む。
ブロック606において、各ALU314、316は、それぞれのコンフィギュレーションレジスタ400の状態に基づき、2つのオペランドに対して設定された演算を実行する。第1のオペランドは、蓄積バッファ306、308のそれぞれに格納される。他のオペランドは、共有メモリ206からプッシュデータを介して送られる。各ALU314、316によって実行される演算の結果は、蓄積バッファ306、308のそれぞれに格納される。
例えば、Pシンドロームを計算すべく、ALU314は、マルチプレクサ310を介し、蓄積バッファ306が受け取って蓄積バッファ306内に格納されたデータと、共有メモリ206から読み出されたプッシュデータとにXOR演算を実行する。蓄積バッファ306に格納されたデータ(オペランド)は、ストライプにおける第1のディスクドライブの第1のストリップであってよい。共有メモリ206から送られた他のデータ(オペランド)は、ストライプにおける第2のディスクドライブの第2のストリップであってよい。コンフィギュレーションレジスタ400における蓄積フィールド408が蓄積に設定されている場合、ALU314における演算結果は、マルチプレクサ328および302を介して蓄積バッファ306に再び格納される。処理はブロック608へと進む。
ブロック608では、他のストリップ(最後のストリップ以外)が存在する場合、ストライプに対してさらなるPまたはQ計算の実行が必要であり、処理はブロック606へと進む。ない場合、処理は、ブロック610へと進む。
ブロック610では、PおよびQシンドロームのどちらも、ストライプの最後のストリップ以外に対しては計算済みである。PシンドロームおよびQシンドロームは、オペランドの1つとしての最後のストリップからのデータを有するストライプに対して計算される。もう一方のオペランドは、蓄積バッファ306、308に格納されている他のストリップに対して実行された計算の結果である。Pシンドロームの計算結果は、マルチプレクサ328、334を介し、両方のデータ処理経路で共有されている「Pull」FIFO(先入れ先出し)メモリ(図示せず)に送られる。Q演算の結果は、蓄積バッファ308に格納される。処理は、ブロック612へと進む。
ブロック612では、PullFIFOに格納されたストライプに対して計算されたPシンドロームは、共有メモリ206に移動する。処理は、ブロック614へと進む。
ブロック614では、Qシンドロームを計算するALU316に対応付けられた蓄積バッファ308は、PullFIFOにQシンドロームを送出する。処理は、ブロック616へと進む。
ブロック616では、PullFIFOに格納されたQシンドロームは、共有メモリ206へと移される。ストライプについてのQシンドロームおよびPシンドロームはどちらも、共有メモリ206から供給されたストライプについてのデータのシングルパスによって計算されている。結果(PおよびQ)は、共有メモリ206に戻される。
図7は、図1に示されたRAID6アレイ100で部分的なPおよびQ計算を実行する方法の一実施形態を示す。部分的なPおよびQ計算は、ストライプにおけるデータが、当該ストライプを構成する1つのデータディスクに格納された単一のデータブロック(D)でのみ変更されている場合に実行される。したがって、入力は、ストライプについてのP、Qの古い値である。出力は、D、P、Qの古い値と、Dの新しい値とに基づく。以下の方程式3および4は、PおよびQシンドロームの新しい値を計算する演算を定義する。
Figure 0005182672

Figure 0005182672
は、新しいPシンドロームおよび新しいQシンドロームを計算するために方程式3および方程式4の両方で用いられる。したがって、この式は、Pnewを一旦計算してからQnewを計算するために用いられる。加速部206は、コンフィギュレーションレジスタ400を介してこの計算を実行するよう設定される。
ブロック700において、両方のデータ処理経路は、それぞれのコンフィギュレーションレジスタ400内に適切なビットを設定することにより、それぞれの蓄積バッファ306、308におけるデータブロックDの古い値を格納するよう設定される。計算モードフィールド410は、NULLに設定され、蓄積フィールド408は、蓄積バッファ306、308に結果を再び格納するよう「1」に設定され、保存ステータスビットは、ステータスレジスタ214の内容を保存するよう「1」に設定される。データ処理経路のそれぞれに設けられたコンフィギュレーションレジスタ400における他のすべてのフィールドがデフォルト値に設定される場合、GF多項式フィールド414はデフォルト値1D(hex)に設定され、乗算係数フィールド412は、デフォルト値'0に設定され、蓄積ソースフィールド408は、ALU314、316にそれぞれ対応付けられた蓄積バッファ306、308に設定される。ステートマシン216によって実行される命令は、共有メモリ206に格納されたコンフィギュレーションレジスタをロードして各コンフィギュレーションレジスタ400におけるフィールドを初期化する。処理はブロック702へと進む。
ブロック702では、各データ処理経路は、それぞれのコンフィギュレーションレジスタ400を介し、共有メモリ206からのデータブロックを蓄積バッファ306、308のそれぞれに格納するよう設定されている。アクセラレータステートマシン216は、両方のデータ処理経路に書き込み命令を発し、データを共有メモリ206から移動させて蓄積バッファ306、308に格納させる。蓄積バッファ306、308に格納されたデータは、古いデータブロックである。コンフィギュレーションレジスタ400の状態に基づき、共有メモリ206から供給されたプッシュデータは、ALU314、316に入る。コンフィギュレーションレジスタ400における計算モードフィールド410はNULLなので、ALU314、316では演算は実行されない。変更されていないデータは、ALU314、316を出て、マルチプレクサ328、332を通り抜け、マルチプレクサ302、304へと戻されて蓄積バッファ306、308に格納される。処理はブロック704へと進む。
ブロック704では、それぞれのデータ処理経路に設けられたコンフィギュレーションレジスタ400は、新しいデータブロックについての新しいPおよびQシンドロームを計算するよう設定される。一実施形態では、各コンフィギュレーションレジスタ400の状態に基づき、ALU314は、Pシンドロームを計算するよう設定され、ALU316は、Qシンドロームを計算するよう設定される。
ALU314が新しいPシンドロームの部分結果を計算するよう設定される場合、それぞれのコンフィギュレーションレジスタ400のフィールドは以下のように設定される:計算モードフィールド410は、「XOR」に設定され、蓄積フィールド408は、蓄積に設定され、保存ステータスフィールド404は、保存に設定される。コンフィギュレーションレジスタ400における他のすべてのフィールドは、上述のごとくデフォルト値に設定される。
ALU316が新しいQシンドロームの部分結果を計算するよう設定される場合、それぞれのコンフィギュレーションレジスタ400のフィールドは以下のように設定される:計算モードフィールド410は、「XOR後データ乗算」に設定され、蓄積フィールド408は、蓄積に設定され、保存ステータスフィールド404は、保存ステータスに設定され、乗算係数フィールド412は、ALU316によって実行されるべき乗算演算のための乗算係数を格納するよう設定される。処理は、ブロック706へと進む。
ブロック706では、ALU314、316のそれぞれは、それぞれのコンフィギュレーションレジスタ400の状態に基づき、設定された演算を2つのデータ入力に対して実行する。一方のデータ入力(古いデータ)は、蓄積バッファ306、308のそれぞれに格納され、他方のデータ入力(新しいデータ)は、共有メモリ206からALU314、316内へ送られる。ALU314、316それぞれによって実行された演算の結果は、各蓄積バッファ306、308に格納される。ALU314は、蓄積バッファ306に格納された古いデータと、「プッシュデータ」を介して送られる新しいデータとに対してXOR演算を実行する。ALU316も、蓄積バッファ308に格納された古いデータと、共有メモリ206からの「プッシュデータ」を介して送られる新しいデータとに対してXOR演算を実行する。乗算器322は、ALU316からマルチプレクサ318を介して受け取ったXOR演算の結果をマルチプレクサ324の出力から供給された乗算係数で乗じる。設定された演算を実行した後、蓄積バッファ306は、
Figure 0005182672
の結果を格納し、蓄積バッファ308は、
Figure 0005182672
の結果を格納する。処理は、ブロック708へと進む。
ブロック708では、Pの計算に関連するコンフィギュレーションレジスタ400は、蓄積バッファ306内に格納された部分結果を用いて新しいPシンドローム(Pnew)を計算するよう設定される。Pnewを計算すべく、コンフィギュレーションレジスタ400内のフィールドは、以下のように設定される:計算モードフィールド410は、XORに設定され、蓄積フィールド408は、蓄積するよう「1」に設定され、保存ステータスビットは、ステータスを保存するよう「1」に設定される。
ALU316を含むもう一方のデータ処理経路に設けられたコンフィギュレーションレジスタ400におけるフィールドは、以下のように設定される:計算モードフィールド410は、NULLに設定され、蓄積フィールド408は、蓄積しないよう「0」に設定され、保存ステータスビットは、ステータスレジスタの内容を保存するよう「1」に設定される。処理は、ブロック710へと進む。
ブロック710では、古いPが共有メモリ206からALU314、316へと送られる。古いP、および、蓄積バッファ306、308に格納された前の演算結果は、ALU314、316に入力される。ALU314における演算結果、すなわち、
Figure 0005182672
(蓄積バッファ306の内容)は、新しいP(Pnew)であり、マルチプレクサ334を介してPullFIFOに送られ、蓄積バッファ306に戻される。ALU316内ではNULL演算が実行され、その結果が蓄積バッファ308に戻されるので、蓄積バッファ308に格納されたデータは、変更されていない。処理は、ブロック712へと進む。
ブロック712において、PullFIFOに格納された新しいP(Pnew)は、共有メモリ206に格納される。処理は、ブロック714へと進む。
ブロック714において、ALU316を含むデータ処理経路に対応付けられたコンフィギュレーションレジスタ400は、蓄積バッファ308に格納された部分結果を用いて新しいQ(Qnew)を計算するよう設定される。Pシンドロームの計算に関わるコンフィギュレーションレジスタ400は、以下のように設定される:計算モードフィールド410は、NULLに設定され、蓄積フィールド408は、蓄積しないよう'0'に設定され、保存ステータスビットは、ステータスレジスタの内容を保存するよう「1」に設定される。Qシンドロームの計算に関わるコンフィギュレーションレジスタ400は、新たなQシンドロームを計算するよう設定され、フィールドは以下のように設定される:計算モードフィールド410は、XORに設定され、蓄積フィールド408は、蓄積するよう「1」に設定され、保存ステータスビットは、ステータスを保存するよう「1」に設定される。処理は、ブロック716へと進む。
ブロック716では、古いQが共有メモリ206からプッシュデータを介して送られる。古いQと、蓄積バッファ306、308に格納された前の演算結果とは、ALU314、316に入力される。ALU316における演算結果、すなわち、
Figure 0005182672
(蓄積バッファ308の内容)は、新しいQ(Qnew)であり、PullFIFOに転送され、蓄積バッファ308に戻される。ALU314ではNULL演算が実行され、その結果が蓄積バッファ306に戻されるので、蓄積バッファ306に格納されたデータは変更されていない。ブロック714の実行後、データは同時に実行されるブロック712および716に転送される。したがって、新しいPが共有メモリ206に移動する間に新しいQが計算される。これによって、加速部から演算結果を出力する時間が短縮される。処理は、ブロック718へと進む。
ブロック718では、PullFIFOに格納された新しいQ(newQ)がFIFOから読み出され、共有メモリ206に格納される。
図8は、図1に示されたRAID6アレイにおける2つのデータディスクの損失をリカバリする方法の実施形態を示す。例えば、n個のデータディスクが存在し、そのうちのデータディスクD0およびD1が故障した場合、データディスクD0およびD1は、残りのディスクに以下の方程式5、および、方程式6による計算を実行することによってリカバリしうる。
Figure 0005182672
通常、D0は、最初に計算される。D1は、D0を用いて以下のように計算される。
Figure 0005182672
しかしながら、これにはデータのツーパスが必要である。上述のごとく、上記方程式5および6を用いたD0およびD1の計算には乗算器が必要である。2つのディスクが同時に故障する可能性は低く、加速部208に第2の乗算器322を追加するには付加的なコストがかかるので、パフォーマンスの上げ幅から見てそれは妥当ではないだろう。したがって、データのシングルパスによって2つのデータディスクのリカバリを可能とすべく、単一の乗算器が2つのデータ処理経路で共有される。乗算器の共有は、乗算器322を使用中の特定のデータ処理経路について、マルチプレクサ320による多項式(P)と、マルチプレクサ324による乗算係数(M)とを選択することによって実現されうる。
図3に示されるデータ処理部218を用いた一実施形態では、6つのデータディスクD0からD5までを有し、そのうちのD4およびD5が故障している。この場合、D4およびD5は、D0からD3、PおよびQを用い、データのシングルパスによってリカバリされてよい。
D4は、集合{D0,D1,D2,D3,P,Q}と、乗算係数{m0,m1,m2,m3,mP,mQ}との線形結合として計算されてよい。一実施形態では、集合における各データブロックは、512バイトを有してよく、各乗算係数は、1バイトであって、データブロック全体に適用される。したがって、D4およびD5をリカバリするために以下の演算が実行される。
Figure 0005182672
ブロック800では、各データ処理経路に対してALU314、316が設定される。ALU314に対応付けられたコンフィギュレーションレジスタ400は、以下のように設定される:計算モードフィールド410が、NULLに設定され、蓄積フィールド408は、蓄積するよう設定される。もう一方のデータ処理経路におけるALU316に対応付けられたコンフィギュレーションレジスタ400は、以下のように設定される:計算モードフィールド410は、GF8 MULに設定され、蓄積フィールド408は、GF8 MUL演算の結果を蓄積するよう設定される。処理は、ブロック802へと進む。
ブロック802において、各データ処理経路は、設定された演算を共有メモリから受け取ったデータのブロック対して実行する。ALU314におけるNULL演算の結果は、蓄積バッファ306に格納されている受け取ったデータブロックのままである。データブロックへのGF8乗算の結果は、蓄積バッファ308に格納される。処理は、ブロック804へと進む。
ブロック804において、次のデータブロックの乗算係数(M)は、ALU316のコンフィギュレーションレジスタ400における乗算係数フィールド412に格納される。両方のコンフィギュレーションレジスタ400に格納された演算(ALU314に格納されたXOR、および、ALU316に格納されたXOR前データ乗算)は、蓄積バッファ306、308のそれぞれに格納された前の演算結果と、共有メモリ206から送られた新しいブロックとに対して実行される。処理は、ブロック806へと進む。
ブロック806では、送り出されるべき他のデータブロックがある場合、処理は、ブロック804へと進む。ない場合、処理は、ブロック808へと進む。
ブロック808において、蓄積バッファ306、308は、以下の演算の結果を格納する。
蓄積バッファ308=
Figure 0005182672
蓄積バッファ306=
Figure 0005182672
ALU314を含むデータ処理経路に対応付けられたコンフィギュレーションレジスタ400は、Pに対する乗算係数によって設定される。Pブロックは、ALU314、316の両方に送り込まれる。蓄積バッファ306、308は、以下の演算の結果を格納する。蓄積バッファ308=
Figure 0005182672
蓄積バッファ306=
Figure 0005182672
ブロック810において、ALU316を含むデータ処理経路に対応付けられたコンフィギュレーションレジスタ400は、Qに対する乗算係数によって設定され、ALU314を含むデータ処理経路に対応付けられたコンフィギュレーションレジスタ400は、当該演算結果を蓄積しないよう設定される。Qデータは、ALU314、316の両方に送り込まれる。ALU316における演算結果、すなわち、
Figure 0005182672
(蓄積バッファ308の内容)は、PullFIFOに転送され、蓄積バッファ308に戻されるリカバリ済みD4である。それぞれのALUに設定された演算がQブロックに対して実行された後、蓄積バッファ306、308は、以下の演算の結果を格納する。 蓄積バッファ308=
Figure 0005182672
蓄積バッファ306=
Figure 0005182672
処理は、ブロック812へと進む。ブロック812において、D4のリカバリ済みデータは、再び共有メモリ206に格納される。処理は、ブロック814へと進む。
ブロック814において、ALU314を含むデータ処理経路に対応付けられたコンフィギュレーションレジスタ400は、XORおよび蓄積に設定され、ALU316を含むデータ処理経路に対応付けられたコンフィギュレーションレジスタ400は、データ処理経路からの結果が蓄積バッファに戻されないように設定される。D4データは、ALU314、316の両方に送り込まれる。ALU314における演算の結果、すなわち、
Figure 0005182672
(蓄積バッファ306の内容)は、PullFIFOに転送され、蓄積バッファ306に戻されるリカバリ済みD5である。すなわち、以下の演算が実行される。
Figure 0005182672
結果は、蓄積バッファ306に格納される。ブロック816では、データディスクD5のリカバリ済みデータが共有メモリに戻される。
図6から8に関連して説明したダブルディスク故障のリカバリを実行する方法、部分的なPおよびQのアップデート、および、PおよびQシンドロームの計算に加えて、加速部は、リカバリ動作を実行するようコンフィギュレーションレジスタを設定することにより、データディスクとPディスクとのダブルディスク故障、または、データディスクとQディスクとのダブルディスク故障のリカバリを加速するためにも用いられてよい。PおよびQディスクの両方が故障した場合、PおよびQディスクは、図7に関連して説明された方法を用いてリカバリされてよい。
加速部は、P、Q、および、データディスクのリカバリと、RAID6システムのPおよびQシンドロームの計算とに関する動作以外のデータ処理動作を加速するのにも用いられてよい。
図9は、図2に示された加速部で実行されうる比較検査を実行する方法の一実施形態を示す。比較機能は、2つのデータブロック(AおよびB)を比較し、データブロックAがデータブロックBと等しいかどうかを検査する。図9は、図2および3と関連付けて説明される。
ブロック900において、ALU314のコンフィギュレーションレジスタ400は、比較演算を実行するよう設定される。ALU314用のコンフィギュレーションレジスタ400の計算モードフィールド410は、XORに設定され、蓄積フィールド408は、その結果を蓄積するよう設定される。ALU316用のコンフィギュレーションレジスタ400の計算モードフィールド410は、NULLに設定され、その結果は蓄積されない。処理は、ブロック902へと進む。
ブロック902では、第1のデータブロックからのデータ(Aデータ)は、蓄積バッファ306にロードされる。処理は、ブロック904へと進む。
ブロック904では、第2のデータブロックからのデータ(Bデータ)は、共有メモリ206から加速部208内に送り込まれ、蓄積バッファ306に格納されたAデータを用い、XOR演算がバイト毎に行われる。処理はブロック906へと進む。
ブロック906では、BデータがALU314を介して送られた後、ALU314に対応付けられたステータスレジスタ500が読み出される。ALU314に対応付けられたステータスレジスタ500における結果ゼロチェックフィールド502の状態は、不一致が検出されたかどうかを示している。また、データブロックにおける最初の不一致バイトのバイトアドレスは、ステータスレジスタ500におけるバイトアドレスフィールド504に格納されてよい。
図10は、図2に示された加速部208で実行されうる結果非ゼロチェックを実行する方法の一実施形態を示す。
ブロック1000において、ALU314用のコンフィギュレーションレジスタ400は、結果非ゼロチェック演算を実行するよう設定される。ALU314用のコンフィギュレーションレジスタ400の計算モードフィールド410は、NULLに設定され、保存ステータスフィールド404はステータスをアップデートするよう設定され、蓄積フィールド408は、結果を蓄積しないよう設定される。ALU316用のコンフィギュレーションレジスタ400の計算モードフィールド410も、NULLに設定され、その結果は蓄積されない。処理は、ブロック1002へと進む。
ブロック1002において、データブロックのデータは、共有メモリからALU314、316の両方に送り込まれ、バイト毎にNULL演算が実行されるので、蓄積バッファ306にはデータが格納されない。
ブロック1004において、ALU314、316を介してデータが送り込まれた後、ALU314に対応付けられたステータスレジスタ500が読み出される。ALU314に対応付けられたステータスレジスタ500における結果ゼロチェックフィールド502の状態は、結果非ゼロが検出されたかどうかを示す。また、ブロックにおける最初の結果非ゼロ結果のバイトのバイトアドレスは、ステータスレジスタ500におけるバイトアドレスフィールド504に格納されてよい。
他の実施形態では、一方のデータ処理経路におけるALUは、結果非ゼロチェックを実行し、もう一方のデータ処理経路におけるALUは、比較検査を実行するよう設定されてよい。2つの演算が同じデータブロックに対して同時に行われてよい。
拡張バイトサーチ機能は、PKCS(Public Key Cryptography Systems)およびRNG(乱数発生器)で役立ち、例えば、ゼロバイトを探すか、または、00×01形式のメッセージ開始時における可変パターンを見つけるのに役立つ。後者の場合、可変パターンの位置は、適格なメッセージボディの開始を示す。マイクロエンジン204で実行される場合、適格なメッセージボディの開始を見つけるには非常に時間がかかり、大きなコード空間を要する。
図11は、本発明の原理に従うRAID6計算を加速させる加速部の一実施形態を含むシステムのブロック図である。
システム1100は、ホスト中央処理装置(CPU)1101、メモリコントローラハブ(MCH)1102、および、I/Oコントローラハブ(ICH)1104を有する。MCH1102は、CPU1101とメモリ202との間の通信を制御するメモリコントローラ1106を有する。CPU1101およびMCH1102は、システムバス1116を介して通信する。
ホストCPU1101は、シングルコアのインテル(登録商標)PentiumIV(登録商標)プロセッサ、シングルコアのインテル(登録商標)Celeron(登録商標)プロセッサ、インテル(登録商標)XScaleプロセッサなどの複数のプロセッサのいずれか1つ、または、インテル(登録商標)Pentium D(登録商標)、インテル(登録商標)Xeon(登録商標)プロセッサなどのマルチコアプロセッサ、または、インテル(登録商標)Core(登録商標)Duoプロセッサ、あるいは、他のいかなるタイプのプロセッサであってよい。
メモリ202は、DRAM(ダイナミックRAM)、SRAM(スタティックRAM)、SDRAM(シンクロナスDRAM)、DDR2(Double Data Rate 2)RAM、または、RDRAM(Rambus DRAM)、あるいは、他のいかなるタイプのメモリであってよい。
ICH1104は、DMI(ダイレクトメディアインターフェース)のようなチップ間高速インターコネクト1114を用いてMCH1102に結合されてよい。DMIは、2つの単方向レーンによって2ギガビット/秒の並列転送速度をサポートする。
ICH1104は、当該ICH1104に結合されるRAIDアレイ100のRAID計算を加速させる加速部208を有してよい。ICH1104は、シリアルストレージプロトコルを用い、ストレージプロトコルインターコネクト1118を介してRAIDアレイ100と通信してよい。フレームに含まれるコマンド、データ、および、ステータス情報は、標準的なシリアルアタッチドストレージプロトコルスイートを用い、ストレージプロトコルインターコネクト1118を介してICH1104とRAIDアレイ100との間で交換されてよい。
シリアルストレージプロトコルスイートは数多く存在し、例えば、SAS(Serial Attached Small Computer System Interface)、および、SATA(Serial Advanced Technology Attachment)などである。SATAプロトコルのバージョンは、Serial ATA Working Groupにより2003年1月7に発表された「Serial ATA: High Speed Serialized AT Attachment」改訂版1.0aに記載されている。SASプロトコルのバージョンは、ANSI(米国規格協会)によって2003年9月18日に発表された「情報技術−Serial Attached SCSI− 1.1」ワーキングドラフト、INCITS(情報技術規格国際委員会)の米国標準規格、プロジェクトT10/1562−D、改訂版1に記載されている。FC(ファイバーチャネル)プロトコルのバージョンは、2005年8月9日に発表されたANSI(米国規格協会)標準FC−FS−2(Fibre Channel Physical and Signaling Interface−2)仕様書に記載されている。
当業者であれば、本発明の実施形態に含まれる方法は、コンピュータ使用可能媒体を含むコンピュータプログラム製品において実現できることが理解できよう。例えば、このようなコンピュータ使用可能媒体は、CD ROMディスクのようなリードオンリーメモリデバイス、または、従来のROMデバイス、あるいは、コンピュータ可読プログラムコードを格納したコンピュータディスケットからなる。
これまで特定の実施形態に関連して本発明を説明してきたが、添付の請求項に含まれる本発明の実施形態の範囲に逸脱せずに、形態および詳細におけるさまざまな変更がなされうることが当業者には理解できよう。

Claims (15)

  1. 装置であって、
    データブロックを受け取る第1のデータ処理経路と、
    前記データブロックを受け取る第2のデータ処理経路と、
    を備え、
    前記第1のデータ処理経路は、前記データブロックを格納する第1の蓄積バッファ、および、前記データブロックに対し第1の演算を実行する第1の論理演算ユニットを有し、
    前記第2のデータ処理経路は、前記データブロックを格納する第2の蓄積バッファ、および、前記データブロックに対し第2の演算を実行する第2の論理演算ユニットを有し、
    前記第1のデータ処理経路と前記第2のデータ処理経路とで、前記データブロックに対し乗算演算を実行する乗算器を共有し、
    前記第1の論理演算ユニットは、第1のプログラム可能な多項式を有し、
    前記第2の論理演算ユニットは、第2のプログラム可能な多項式を有し、
    前記第1のデータ処理経路および前記第2のデータ処理経路が前記データブロックを同時に処理することにより、第1の結果データブロックおよび第2の結果データブロックを、前記第1のデータ処理経路と前記第2のデータ処理経路とを通じての前記データブロックのシングルパスで提供
    前記データブロックは、RAIDストライプにおけるデータブロックであり、
    前記RAIDストライプが、新しいデータブロックに対してアップデートされる場合には、
    前記第1の演算は、
    前記RAIDストライプの古いデータブロック及び前記新しいデータブロックを用いて、新しいPシンドロームの一部を計算する演算と、
    前記新しいPシンドロームの前記一部及び古いPシンドロームブロックを用いて、前記新しいPシンドロームを計算する演算と、
    を含み、
    前記第2の演算は、
    前記古いデータブロック及び前記新しいデータブロックを用いて、新しいQシンドロームの一部を計算する演算と、
    前記新しいQシンドロームの前記一部及び古いQシンドロームブロックを用いて、前記新しいQシンドロームを計算する演算と、
    を含み、
    前記新しいPシンドロームの一部を計算する演算と、前記新しいQシンドロームの一部を計算する演算とは、同時に実行され、
    前記新しいPシンドロームの一部を計算する演算及び前記新しいQシンドロームの一部を計算する演算が実行された後、前記新しいPシンドロームを計算する演算が実行され、
    前記新しいPシンドロームを計算する演算が実行された後、前記新しいQシンドロームを計算する演算が実行され、
    前記新しいQシンドロームを計算する演算が実行される間に、前記新しいPシンドロームが共有メモリに移される、
    装置。
  2. 前記RAIDストライプについてのPシンドローム及びQシンドロームを計算する場合には、
    前記第1の演算は、前記RAIDストライプについてのPシンドロームを計算する演算であり
    前記第2の演算は、前記RAIDストライプについてのQシンドロームを計算する演算である
    請求項1に記載の装置。
  3. 前記RAIDストライプにおける第1のデータブロック及び第2のデータブロックをリカバリする場合には、
    前記RAIDストライプは、PシンドロームブロックとQシンドロームブロックとを有し、
    前記第2の演算は、
    前記RAIDストライプにおける他のデータブロックを用いて、前記第1のデータブロックの第1の部分を計算する演算と、
    前記第1のデータブロックの前記第1の部分及び前記Pシンドロームブロックを用いて、前記第1のデータブロックの第2の部分を計算する演算と、
    前記第1のデータブロックの前記第2の部分及び前記Qシンドロームブロックを用いて、リカバリされた前記第1のデータブロックを計算する演算と、
    を含み、
    前記第1の演算は、
    前記RAIDストライプにおける他のデータブロックを用いて、前記第2のデータブロックの第1の部分を計算する演算と、
    前記第2のデータブロックの前記第1の部分及び前記Pシンドロームブロックを用いて、前記第2のデータブロックの第2の部分を計算する演算と、
    前記第2のデータブロックの前記第2の部分及びリカバリされた前記第1のデータブロックを用いて、リカバリされた前記第2のデータブロックを計算する演算と、
    を含み、
    前記第1のデータブロックの前記第1の部分を計算する演算と、前記第2のデータブロックの前記第1の部分を計算する演算とが同時に実行され、
    前記第1のデータブロックの前記第2の部分を計算する演算と、前記第2のデータブロックの前記第2の部分を計算する演算とが同時に実行され、
    リカバリされた前記第1のデータブロックを計算する演算が実行された後、リカバリされた前記第2のデータブロックを計算する演算が実行される、
    請求項1に記載の装置。
  4. 前記第1の論理演算ユニットに関連する第1の乗算係数および前記第2の論理演算ユニットに関連する第2の乗算係数のいずれか一方を選択するマルチプレクサをさらに備える、
    請求項1から請求項までの何れか一項に記載の装置。
  5. 前記第1の演算は、第1のデータブロックと第2のブロックに対して実行され、
    前記第1のデータブロックおよび前記第2のブロックは、RAIDレベル6ストライプに含まれ、結果は、他のブロックへの次の演算のために前記第1の蓄積バッファに格納される、
    請求項1から請求項までの何れか一項に記載の装置。
  6. 方法であって、
    第1のデータ処理経路における第1の蓄積バッファにデータブロックを格納する段階と、
    第2のデータ処理経路における第2の蓄積バッファに前記データブロックを格納する段階と、
    第1の演算部を用い、前記データブロックに対して第1の演算を実行する段階と、
    第2の演算部を用い、前記データブロックに対して第2の演算を実行する段階と、
    有し、
    前記第1のデータ処理経路と前記第2のデータ処理経路とで乗算器を共有し、
    前記第1の演算部は、第1のプログラム可能な多項式を有し、
    前記第2の演算部は、第2のプログラム可能な多項式を有し、
    前記第1のデータ処理経路および前記第2のデータ処理経路が前記データブロックを同時に処理することにより、第1の結果データブロックおよび第2の結果データブロックを、前記第1のデータ処理経路と前記第2のデータ処理経路とを通じての前記データブロックのシングルパスで提供
    前記データブロックは、RAIDストライプにおけるデータブロックであり、
    前記RAIDストライプが、新しいデータブロックに対してアップデートされる場合には、
    前記第1の演算を実行する段階は、
    前記RAIDストライプの古いデータブロック及び前記新しいデータブロックを用いて、新しいPシンドロームの一部を計算する演算を実行する段階と、
    前記新しいPシンドロームの前記一部及び古いPシンドロームブロックを用いて、前記新しいPシンドロームを計算する演算を実行する段階と、
    を含み、
    前記第2の演算を実行する段階は、
    前記古いデータブロック及び前記新しいデータブロックを用いて、新しいQシンドロームの一部を計算する演算を実行する段階と、
    前記新しいQシンドロームの前記一部及び古いQシンドロームブロックを用いて、前記新しいQシンドロームを計算する演算を実行する段階と、
    を含み、
    前記新しいPシンドロームの一部を計算する演算を実行する段階と、前記新しいQシンドロームの一部を計算する演算を実行する段階とは、同時に実行され、
    前記新しいPシンドロームの一部を計算する演算を実行する段階及び前記新しいQシンドロームの一部を計算する演算を実行する段階の後、前記新しいPシンドロームを計算する演算を実行する段階が実行され、
    前記新しいPシンドロームを計算する演算を実行する段階の後、前記新しいQシンドロームを計算する演算を実行する段階が実行され、
    前記新しいQシンドロームを計算する演算を実行する段階が実行されている間に、前記新しいPシンドロームが共有メモリに移される、
    方法。
  7. 前記RAIDストライプについてのPシンドローム及びQシンドロームを計算する場合には、
    前記第1の演算は、前記RAIDストライプについてのPシンドロームを計算する演算であり
    前記第2の演算は、前記RAIDストライプについてのQシンドロームを計算する演算である
    請求項に記載の方法。
  8. 前記RAIDストライプにおける第1のデータブロック及び第2のデータブロックをリカバリする場合には、
    前記RAIDストライプは、PシンドロームブロックとQシンドロームブロックとを有し、
    前記第2の演算を実行する段階は、
    前記RAIDストライプにおける他のデータブロックを用いて、前記第1のデータブロックの第1の部分を計算する演算を実行する段階と、
    前記第1のデータブロックの前記第1の部分及び前記Pシンドロームブロックを用いて、前記第1のデータブロックの第2の部分を計算する演算を実行する段階と、
    前記第1のデータブロックの前記第2の部分及び前記Qシンドロームブロックを用いて、リカバリされた前記第1のデータブロックを計算する演算を実行する段階と、
    を含み、
    前記第1の演算を実行する段階は、
    前記RAIDストライプにおける他のデータブロックを用いて、前記第2のデータブロックの第1の部分を計算する演算を実行する段階と、
    前記第2のデータブロックの前記第1の部分及び前記Pシンドロームブロックを用いて、前記第2のデータブロックの第2の部分を計算する演算を実行する段階と、
    前記第2のデータブロックの前記第2の部分及びリカバリされた前記第1のデータブロックを用いて、リカバリされた前記第2のデータブロックを計算する演算を実行する段階と、
    を含み、
    前記第1のデータブロックの前記第1の部分を計算する演算を実行する段階と、前記第2のデータブロックの前記第1の部分を計算する演算を実行する段階とが同時に実行され、
    前記第1のデータブロックの前記第2の部分を計算する演算を実行する段階と、前記第2のデータブロックの前記第2の部分を計算する演算を実行する段階とが同時に実行され、
    リカバリされた前記第1のデータブロックを計算する演算を実行する段階の後、リカバリされた前記第2のデータブロックを計算する演算を実行する段階が実行される、
    請求項に記載の方法。
  9. 前記第1の演算部に関連する第1の乗算係数および前記第2の演算部に関連する第2の乗算係数のいずれか一方を選択する段階をさらに備える、
    請求項から請求項までの何れか一項に記載の方法。
  10. 前記第1の演算を実行する段階は、前記第1の蓄積バッファに格納された前記データブロックと、前記第1のデータ処理経路が受け取った第2のデータブロックとに対してXOR演算を実行する段階を含む
    請求項から請求項までの何れか一項に記載の方法。
  11. 前記第1の演算を実行する段階は、受け取られた前記データブロックに対してNULL演算を実行する段階を含む
    請求項から請求項10までの何れか一項に記載の方法。
  12. 前記第1の演算は、第1のデータブロックと第2のブロックに対して実行され、
    前記第1のデータブロックおよび前記第2のブロックは、RAIDレベル6ストライプに含まれ、結果は、他のブロックへの次の演算のために前記第1の蓄積バッファに格納される、
    請求項から請求項11までの何れか一項に記載の方法。
  13. コンピュータに、
    請求項から請求項12までの何れか一項に記載の方法を実行させるための、
    プログラム。
  14. システムであって、
    複数のSASディスクドライブを有するRAIDシステムと、
    前記RAIDシステムに関するデータを処理する加速部と、
    を備え、
    前記加速部は、
    データブロックを受け取る第1のデータ処理経路と、
    前記データブロックを受け取る第2のデータ処理経路と、
    を備え、
    前記第1のデータ処理経路は、前記データブロックを格納する第1の蓄積バッファ、および、前記データブロックに対し第1の演算を実行する第1の論理演算ユニットを有し、
    前記第2のデータ処理経路は、前記データブロックを格納する第2の蓄積バッファ、および、前記データブロックに対し第2の演算を実行する第2の論理演算ユニットを有し、
    前記第1のデータ処理経路と前記第2のデータ処理経路とで、前記データブロックに対し乗算演算を実行する乗算器を共有し、
    前記第1の論理演算ユニットは、第1のプログラム可能な多項式を有し、
    前記第2の論理演算ユニットは、第2のプログラム可能な多項式を有し、
    前記第1のデータ処理経路および前記第2のデータ処理経路が前記データブロックを同時に処理することにより、第1の結果データブロックおよび第2の結果データブロックを、前記第1のデータ処理経路と前記第2のデータ処理経路とを通じての前記データブロックのシングルパスで提供
    前記データブロックは、RAIDストライプにおけるデータブロックであり、
    前記RAIDストライプが、新しいデータブロックに対してアップデートされる場合には、
    前記第1の演算は、
    前記RAIDストライプの古いデータブロック及び前記新しいデータブロックを用いて、新しいPシンドロームの一部を計算する演算と、
    前記新しいPシンドロームの前記一部及び古いPシンドロームブロックを用いて、前記新しいPシンドロームを計算する演算と、
    を含み、
    前記第2の演算は、
    前記古いデータブロック及び前記新しいデータブロックを用いて、新しいQシンドロームの一部を計算する演算と、
    前記新しいQシンドロームの前記一部及び古いQシンドロームブロックを用いて、前記新しいQシンドロームを計算する演算と、
    を含み、
    前記新しいPシンドロームの一部を計算する演算と、前記新しいQシンドロームの一部を計算する演算とは、同時に実行され、
    前記新しいPシンドロームの一部を計算する演算及び前記新しいQシンドロームの一部を計算する演算が実行された後、前記新しいPシンドロームを計算する演算が実行され、
    前記新しいPシンドロームを計算する演算が実行された後、前記新しいQシンドロームを計算する演算が実行され、
    前記新しいQシンドロームを計算する演算が実行される間に、前記新しいPシンドロームが共有メモリに移される、
    システム。
  15. 前記加速部は、前記第1の論理演算ユニットに関連する第1の乗算係数および前記第2の論理演算ユニットに関連する第2の乗算係数のいずれか一方を選択するマルチプレクサをさらに備える、
    請求項14に記載のシステム。
JP2009543044A 2006-12-19 2007-12-06 パターンマッチングによる高性能raid6システムアーキテクチャ Expired - Fee Related JP5182672B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/642,315 2006-12-19
US11/642,315 US7664915B2 (en) 2006-12-19 2006-12-19 High performance raid-6 system architecture with pattern matching
PCT/US2007/086672 WO2008079624A1 (en) 2006-12-19 2007-12-06 High performance raid-6 system architecture with pattern matching

Publications (2)

Publication Number Publication Date
JP2010514066A JP2010514066A (ja) 2010-04-30
JP5182672B2 true JP5182672B2 (ja) 2013-04-17

Family

ID=39529025

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009543044A Expired - Fee Related JP5182672B2 (ja) 2006-12-19 2007-12-06 パターンマッチングによる高性能raid6システムアーキテクチャ

Country Status (5)

Country Link
US (1) US7664915B2 (ja)
EP (1) EP2115562B1 (ja)
JP (1) JP5182672B2 (ja)
CN (1) CN101611376B (ja)
WO (1) WO2008079624A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4935367B2 (ja) * 2007-01-19 2012-05-23 富士通株式会社 Raid装置及びガロア体の積演算処理方法
US7930586B1 (en) * 2008-02-07 2011-04-19 At&T Intellectual Property Ii, L.P. Error rate reduction for memory arrays
WO2010034167A1 (zh) * 2008-09-28 2010-04-01 北京大学深圳研究生院 一种集成电路的处理器结构
JP5502883B2 (ja) * 2008-11-19 2014-05-28 エルエスアイ コーポレーション Raid情報のメモリ効率検査
US9270698B2 (en) 2008-12-30 2016-02-23 Intel Corporation Filter for network intrusion and virus detection
US8255773B2 (en) * 2009-06-29 2012-08-28 Sandisk Technologies Inc. System and method of tracking error data within a storage device
JP5544897B2 (ja) * 2010-01-22 2014-07-09 富士通株式会社 記憶装置、制御装置および記憶装置の制御方法
US8239625B2 (en) * 2010-01-24 2012-08-07 Freescale Semiconductor, Inc. Parity generator for redundant array of independent discs type memory
US8341457B2 (en) * 2010-03-11 2012-12-25 Lsi Corporation System and method for optimizing redundancy restoration in distributed data layout environments
CN102609221B (zh) * 2012-02-07 2015-07-08 无锡众志和达数据计算股份有限公司 一种硬件raid5/6存储系统及数据处理方法
CN103034559B (zh) * 2012-12-18 2016-06-08 无锡众志和达数据计算股份有限公司 基于rdma架构设计的pq检验模块及检验方法
US9594634B2 (en) 2014-06-02 2017-03-14 Intel Corporation Techniques to efficiently compute erasure codes having positive and negative coefficient exponents to permit data recovery from more than two failed storage units
US9509773B2 (en) * 2014-09-10 2016-11-29 Futurewei Technologies, Inc. Array-based computations on a storage device
US10423487B2 (en) * 2016-08-19 2019-09-24 Samsung Electronics Co., Ltd. Data protection offloads using SSD peering
CN107450852B (zh) * 2017-07-31 2020-03-31 郑州云海信息技术有限公司 一种存储空间处理方法、装置和设备

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0716145B2 (ja) * 1988-11-02 1995-02-22 日本電気株式会社 ディジタルトランスバーサルフィルタ
JP3418718B2 (ja) * 1996-03-19 2003-06-23 富士通株式会社 磁気テープ装置の制御装置及びその再同期信号検出方法
GB9707861D0 (en) * 1997-04-18 1997-06-04 Certicom Corp Arithmetic processor
US5978954A (en) * 1997-11-25 1999-11-02 Palmchip Corporation On-the-fly error detection and correction buffer processor
US6247157B1 (en) * 1998-05-13 2001-06-12 Intel Corporation Method of encoding data signals for storage
JP2000259359A (ja) 1999-03-04 2000-09-22 Toshiba Corp Raid装置および記録媒体
US6396548B1 (en) * 1999-10-29 2002-05-28 Koninklijke Philips Electronics N.V. System and method for multimode operation of a digital filter with shared resources
JP3386427B2 (ja) * 2000-01-28 2003-03-17 シャープ株式会社 高位合成方法並びに高位合成方法の実施に使用される記録媒体
US6594796B1 (en) * 2000-06-30 2003-07-15 Oak Technology, Inc. Simultaneous processing for error detection and P-parity and Q-parity ECC encoding
US7020811B2 (en) * 2001-04-24 2006-03-28 Sun Microsystems, Inc. System and method for verifying error detection/correction logic
JP4054182B2 (ja) * 2001-09-25 2008-02-27 株式会社東芝 仮想的なraid装置を有するクラスタシステム及び同システム用のコンピュータ
US6748488B2 (en) * 2001-09-28 2004-06-08 Sun Microsystems, Inc. Storage array having multiple erasure correction and sub-stripe writing
US6883131B2 (en) * 2001-09-28 2005-04-19 Sun Microsystems, Inc. XOR processing incorporating error correction code data protection
JP2003288762A (ja) * 2003-02-14 2003-10-10 Fujitsu Ltd 磁気テープ装置の制御装置
JP2003317400A (ja) * 2003-02-14 2003-11-07 Fujitsu Ltd 磁気テープ装置の制御装置
US7698625B2 (en) * 2003-08-26 2010-04-13 Adaptec, Inc. System for improving parity generation and rebuild performance
JP2005316762A (ja) * 2004-04-28 2005-11-10 Toshiba Corp ディスク記憶装置及びraid構築方法
JP2006178926A (ja) * 2004-10-18 2006-07-06 Hitachi Ltd 複数のオブジェクトベースのストレージ装置を使用したストレージ装置、システム、および方法
US20060123271A1 (en) * 2004-11-19 2006-06-08 International Business Machines Corporation RAID environment incorporating hardware-based finite field multiplier for on-the-fly XOR
JP2006171957A (ja) * 2004-12-14 2006-06-29 Fujitsu Ltd ストレージ制御装置および方法
US7343546B2 (en) * 2004-12-23 2008-03-11 Intel Corporation Method and system for syndrome generation and data recovery
WO2007012920A1 (en) * 2005-07-27 2007-02-01 Adaptec, Inc. Method and system for improving the performance of reed-solomon parity operations in redundant array of inexpensive disks
US7607068B2 (en) * 2006-08-31 2009-10-20 Intel Corporation Apparatus and method for generating a Galois-field syndrome

Also Published As

Publication number Publication date
JP2010514066A (ja) 2010-04-30
EP2115562B1 (en) 2013-01-23
US7664915B2 (en) 2010-02-16
EP2115562A4 (en) 2011-12-21
WO2008079624A1 (en) 2008-07-03
CN101611376A (zh) 2009-12-23
EP2115562A1 (en) 2009-11-11
US20080148025A1 (en) 2008-06-19
CN101611376B (zh) 2012-06-20

Similar Documents

Publication Publication Date Title
JP5182672B2 (ja) パターンマッチングによる高性能raid6システムアーキテクチャ
US20230336191A1 (en) Accelerated erasure coding system and method
US10268544B2 (en) Using parity data for concurrent data authentication, correction, compression, and encryption
US7797612B2 (en) Storage accelerator
US6918007B2 (en) Memory controller interface with XOR operations on memory read to accelerate RAID operations
US7669107B2 (en) Method and system for increasing parallelism of disk accesses when restoring data in a disk array system
US8583984B2 (en) Method and apparatus for increasing data reliability for raid operations
CN102096609B (zh) 可编程循环冗余校验(crc)计算的指令集架构
US10877843B2 (en) RAID systems and methods for improved data recovery performance
US8194855B2 (en) Method and apparatus for implementing processor instructions for accelerating public-key cryptography
US20080040415A1 (en) Raid environment incorporating hardware-based finite field multiplier for on-the-fly xor
US20080022150A1 (en) Method and system for improved buffer utilization for disk array parity updates
US20090319804A1 (en) Scalable and Extensible Architecture for Asymmetrical Cryptographic Acceleration
US20090006512A1 (en) NORMAL-BASIS TO CANONICAL-BASIS TRANSFORMATION FOR BINARY GALOIS-FIELDS GF(2m)
WO2007012920A1 (en) Method and system for improving the performance of reed-solomon parity operations in redundant array of inexpensive disks
US20150100819A1 (en) Method of Recovering Data in a Storage Device
CN109918225B (zh) 基于飞腾平台的raid6数据恢复优化方法
TWI285377B (en) Storage device parity computation
US8380767B2 (en) Polynomial-basis to normal-basis transformation for binary Galois-Fields GF(2m)
JP2002278707A (ja) ディスクコントローラ
KR101970864B1 (ko) 총 플래시 어레이 기반 오픈스택 클라우드 블록 스토리지에서의 패리티 데이터 중복제거 방법
JP2010239404A (ja) 冗長符号生成方法及び装置、データ復元方法及び装置、並びにraid記憶装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111108

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120207

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120214

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120307

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120314

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120409

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120605

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121005

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20121009

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20121030

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130104

R150 Certificate of patent or registration of utility model

Ref document number: 5182672

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160125

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees