JPH10222314A - 記憶装置アレイシステム - Google Patents

記憶装置アレイシステム

Info

Publication number
JPH10222314A
JPH10222314A JP9033179A JP3317997A JPH10222314A JP H10222314 A JPH10222314 A JP H10222314A JP 9033179 A JP9033179 A JP 9033179A JP 3317997 A JP3317997 A JP 3317997A JP H10222314 A JPH10222314 A JP H10222314A
Authority
JP
Japan
Prior art keywords
data
error correction
buffer
storage devices
bus
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
JP9033179A
Other languages
English (en)
Inventor
Yuji Kiyohara
裕二 清原
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.)
Brother Industries Ltd
Xing Inc
Original Assignee
Brother Industries Ltd
Xing Inc
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 Brother Industries Ltd, Xing Inc filed Critical Brother Industries Ltd
Priority to JP9033179A priority Critical patent/JPH10222314A/ja
Publication of JPH10222314A publication Critical patent/JPH10222314A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

(57)【要約】 【課題】 HDD等の記憶装置を同期運転させる必要が
なく安価に構成でき、また記憶装置の並列台数を自由に
選択できる記憶装置アレイシステムを提供する。 【解決手段】 アレイシステム1は、データを分散記憶
する複数のデータ記憶装置101と、分散記憶されるデ
ータブロック間でエラー訂正演算を行うエラー訂正演算
部106とを有する。該エラー訂正演算部106は、読
み書きされるデータブロックの一部のもの同士を用いて
中間演算を行い、その演算結果をエラー訂正用一時記憶
手段108に記憶するとともに、その記憶された中間演
算結果との間で次のデータブロックあるいはエラー訂正
データとの演算を行い、その結果をエラー訂正用一時記
憶手段108に書き戻す処理を複数回逐次的に実行する
ことで、データのエラー訂正を行い、あるいはエラー訂
正用データの生成を行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ディスクアレイシ
ステム(いわゆるRAIDシステム)等の記憶装置アレ
イシステムに関するものである。
【0002】
【従来の技術】従来より、大容量で高速な記憶装置とし
てディスクアレイ(別名RAID:Redundant Arrays o
f Inexpensive Disksの略)が知られている。ディスク
アレイでは、HDDドライブ(例えばハードディスクド
ライブ:以下、HDDという)を複数台パラレルに同時
動作させて、データ入出力性能の高速化を図っている。
また、ディスクアレイでは、データの信頼性を向上させ
るために、冗長データ(誤り訂正符号あるいはエラー訂
正符号)を付加して記憶しており、ディスク上のデータ
の一部が失われても元のデータを復元することができる
ようになっている。
【0003】例えば、冗長データとしてパリティを使用
する場合、図13(a)に示すように、原データは数ビ
ット単位(例えば、8ビット(1バイト)単位)毎に区
切られてデータブロックB11、B12、‥‥に分割され、
パリティP11、P12、‥‥をそれぞれ付加して、同図
(b)に示すように各HDDに格納される。なお、図で
は、原データは3つのHDD(ディスク1〜3)に分散
・格納されるように描いている。
【0004】パリティは、データブロック中の「1」と
なっているビット数が偶数である場合にパリティを
「1」、奇数の場合に「0」とする奇数パリティと、同
じく偶数である場合にパリティを「0」、奇数の場合に
「1」とする偶数パリティとがあり、例えば、データブ
ロックが「10001010」であったときの偶数パリ
ティは「1」となる。そして、該データブロックの読出
し時に、そのいずれか1つのビットが読み出せなかった
場合に、読み出しに成功した他のビットの値とパリティ
ビットの値とから、その読み出せなかったビットの値を
決定・復元することができる。なお、偶数パリティを使
用すれば、読めなかったビットを除いてデータブロック
中のパリティを含む全てのビットの排他的論理和をとる
ことで、その読めなかったビットの値を直接求めること
ができる。例えば、上記データ「10001010:
1」の、2桁目の「0」が読めなかった場合、上記排他
的論理和xは、 x=1#0#0#1#0#1#0#1=0 (「#」は、排他的論理和演算を表す記号とする)とな
り、上記読めなかったビットの値に等しくなっているこ
とがわかる。なお、パリティの他にも、誤り訂正符号に
は様々なもの(例えばハミング符号、BCH符号あるい
はリードソロモン符号など)が考案されており、もっと
多くの誤りを訂正できるものもある。
【0005】ここで、ディスクアレイにおいて、ひとつ
の記憶装置が障害を起こして、その中のデータが読み出
し不可能になった場合には、その記憶装置を取り外し、
新たな記憶装置を設置する必要が生ずるが、新たな装置
にはデータが入っていないので、ここにデータを書き込
む必要がある。これには、単に外部から全てのデータを
再入力する方法と、残りの記憶装置のデータから誤り訂
正符号により消失したデータを再生して、新たな記憶装
置に書き込む方法がある。後者の方法でデータを再生す
ることをリビルド(再構築)と呼んでいる。
【0006】例えばディスクアレイがレベル3のRAI
Dの場合、元のデータは数ビット単位(例えば1ビット
単位、8ビット単位あるいはワード単位)ごとにブロッ
クに分割され、パリティを付加して各HDDに分散・格
納される。ここで、原データをブロック分割して分散記
憶するための、並列に並べた各HDDの各々の系統を、
第1レーン、第2レーン‥‥等と呼ぶことにする。ま
た、HDDを何台並列に並べるかという数をパラレル数
と呼び、pという変数で表すこととする。ただし、パラ
レル数pには、エラー訂正情報を格納するためのHDD
は含めない。従って、エラー訂正情報としてパリティを
採用した場合は、p+1個のレーンが存在することとな
る。なお、エラー訂正情報用のレーン、すなわちパリテ
ィデータ用のレーンはパリティレーンと呼ぶことにす
る。
【0007】RAIDにおいてエラー訂正を行う方式と
しては、CPUの演算により行う方式と、ハードウェア
により行う方法との2種類がある。図11は、CPUを
用いる場合の例を示している。まず、ホストから送られ
てくるデータを各HDDに書き込む場合、データはホス
トインターフェース401を介して一旦バッファ402
に格納される。CPU400は、図13(a)に示すよ
うに、原データを3つのHDDに格納するために8ビッ
ト(1バイト)毎のデータブロックに切り分ける。
【0008】次いで、同図(b)に示すように、3つの
各データブロックの対応する位置にあるビット同士に排
他的論理和演算を施して奇数パリティを計算する。図に
示した例では、データブロックはそれぞれ「00101
111」、「01111000」、「1110010
0」であり、その第1ビット同士のパリティは0#0#
1=1、第2ビット同士のパリティはパリティは0#1
#1=0、‥‥等となり、8つのすべてのビットについ
て得られるパリティの組は「10110011」とな
る。このようにして求めたパリティデータと3つのデー
タブロックとの、計4つのブロックが4つのHDDに一
斉に書き込まれる。同じ量のデータを単一のHDDに書
く場合と比べると、一つのHDDに対する書き込むデー
タ量が1/3になっているので高速に書き込める。
【0009】次にデータの読出しを行う場合は、パリテ
ィレーン以外の3つのレーンからデータブロックを読み
出して、これを元の順に再配列することにより原データ
が復元される。ここで、3つのレーンのうちどれか1つ
においてデータの読出しが不能となった場合には、パリ
ティレーンからパリティデータを読み出し、これと読め
た2つのデータブロックとの間で、各ビット毎に排他的
論理和演算を行うと、読めなかったデータブロックが復
元できる。図13(c)には、第3レーン(ディスク
3)のデータ読出しが不能となった場合のデータ復元例
を示している。ここで、読出し時にパリティ計算により
データを復元する場合は通常の読出しよりも時間がかか
るので、この時間が問題になる場合は高速なCPUを用
いる必要がある。
【0010】また、ディスクアレイでは、複数のHDD
のうち、通常1つまでのリードエラーはデータ復元が可
能だが、2つ以上のHDDでリードエラーが起きるとデ
ータの復元は不可能となる。従って、1つのHDDでリ
ードエラーが起きたら、もう一つのHDDでエラーが起
きる前に、なるべく早く障害を起こしたHDDのエラー
を復旧する必要がある。そのためにはHDDの交換を行
うのが通常である。あるHDDがリードエラーを起こし
たりドライブ全体が故障した場合は、そのディスクを抜
いて新品のディスクと交換する。新品のディスクには、
予め元のデータを書いてバックアップしておくという方
法もあるが、元のデータのバックアップが常にとられて
いるとは限らないため、通常は、新品のHDD上に、抜
き去ったHDDにあったデータと同じものを誤り訂正符
号を使って再構築する必要がある。このデータの再構築
を一般に「リビルド」と呼んでおり、以下、このデータ
再構築を行うモードを「リビルドモード」と呼ぶ。
【0011】リビルドモードでは、エラーの起きていな
いHDD(いわゆる「生き残っている」HDD)から、
エラーの起きたHDD(いわゆる「死んだ」HDD)の
データを復元して、これを新品のHDDに書くという動
作をする。データの復元は、誤り訂正符号としてパリテ
ィを使用する場合は、前述のように排他的論理和演算で
行う。例えば、図11において、HDD408が故障し
た場合を考えると、HDD408を新品のHDDと交換
してリビルドモードに入ると、CPU400は、HDD
407、409、410の第nセクタを読んで排他的論
理和演算を行い、HDD408に元あったデータを復元
してHDD408に書き戻すという動作を、セクタ番号
nを0から最大セクタ番号までスキャンして全てのセク
タに対し順に行なう。このような、消失データの復元を
CPUにより行う方法は、データの入出力速度がCPU
の処理速度に制限されるので、高速なディスクアレイが
望みなら高速なCPUを用いる必要がある。
【0012】次に、冗長データの生成、消失データの復
元をハードウェアにより行う場合のブロック図を図12
に示している。この回路の中核となるのは、エラー訂正
回路及びパリティジェネレータ500(以下では略して
エラー訂正回路と呼ぶ)で、データを記憶する場合はパ
リティジェネレータ(パリティ生成回路)として働き、
データを読み出す場合にはエラー訂正回路として働くも
のである。まず、データをホストから書き込む場合につ
いて説明すると、ホストインターフェース501を介し
て送信されてくるデータはエラー訂正回路500でパリ
ティデータが付加され、また1バイト毎に分割されてデ
ィスクコントローラ502に入力される。ディスクコン
トローラはこれらをHDD503に書き込む。
【0013】一方、データを読み出す場合は、どのHD
D503に障害が発生しているかをエラー検出手段50
4が監視し、エラー訂正回路500にそれを伝える。エ
ラー訂正回路500は指示されたレーンのデータを復元
するように働く。ここでエラー訂正回路500は、各レ
ーンのデータ信号の排他的論理和を論理IC(EXCLUSIV
E-OR回路)を用いてとるように構成され、該論理ICは
全てのレーンのデータが並列入力される。そして、この
ような論理ICを正しく動作させるためには、全てのレ
ーンのデータが時間的に同時に揃って入力される必要が
ある。従って、HDD503からのデータは時間的にバ
ラバラではなく同期して出力される必要があり、このた
めに複数のHDDを同期して回転させる「スピンドルシ
ンク」という技術が用いられている。これは、HDDに
外部から同期信号を与え、各HDDのスピンドルモータ
をこれに同期させて回転させる手法であり、PLL回路
などを利用して実現する。図12では、同期信号発生器
505が各HDD503に同期信号を与えている。一
方、HDD503にデータを書き込むときは、各HDD
503に対しそれぞれ定められたセクタに同じタイミン
グでデータを書き込む必要があるが、この場合も各HD
D503を同期して回転させる必要が生ずる。
【0014】
【発明が解決しようとする課題】上記従来技術におい
て、CPUでパリティを計算する方式では、データの入
出力速度がCPUの計算能力で制限されるためあまり高
速な出力ができず、これを高速にしようとすると高速な
CPUを使用する必要が生ずることから、装置が高価に
なってしまうという問題がある。一方、エラー訂正をハ
ードウェアで行う従来方式では、エラー訂正回路に入力
数の極めて多い論理ICを使用しなければならないう
え、アレイを構成するすべてのHDDを同期運転する必
要があり、そのためのスピンドルシンク機能を持ったデ
ィスク装置を使用しなければならないことから、同様に
装置が高価なものになる欠点がある。さらに、上記ハー
ドウェアによる従来方式では、データのリビルドを行う
ための方法が全く考慮されていないため、HDDの1つ
が故障した場合は、新しいものと交換した後、全てのデ
ータを外部から入力し直す必要があるという大きな欠点
がある。
【0015】また、ハードウェアによる従来方式では、
次のような事情により、記憶装置の並列台数、ひいては
システムのデータ入出力のデータバス幅を自由に選択で
きない問題がある。すなわち、図12に示すように、エ
ラー訂正回路500へ各記憶装置503からのデータが
並列的に入力され、その後インターフェース(以下、I
/Fと略記する)501を介して外部のホストにデータ
が出力されるようになっているため、記憶装置503の
並列台数を増やす場合は、例えば各記憶装置503から
のデータバス幅が8ビットであると仮定すると、並列台
数が1増える毎にホストへの出力は8ビットずつ増え
る。その結果、ホストへの出力のデータバス幅は、8、
16、24、32、40、48、56、64というよう
に8の倍数として増やす必要がある。しかし一般にコン
ピュータシステムのデータバス幅は、2の累乗倍が扱い
易いことから8、16、32、64、128、256の
いずれかが採用されており、これ以外のデータバス幅を
持つシステムはほとんど存在しないといってよい。
【0016】従って、上記従来のシステムにおいて、記
憶装置503の並列台数によって生ずる24、40、4
8、56といった2の累乗倍から外れたデータバス幅は
使いにくいものになる。ここで、記憶装置の並列台数
は、アレイシステムの入出力速度を決定する重要なファ
クターであり、入出力速度をフレキシブルに設定するた
めには並列台数は自由に選択できるのが望ましいのであ
るが、従来の装置においては上述の事情があるために、
例えば入出力能力から計算すれば並列台数は5でよいの
に、バス幅が40ビットでは使いにくいので、渋々8台
=64ビットで使わざるを得ないといった状況を生じて
しまうのである。
【0017】本発明の課題は、エラー訂正をハードウ
ェアを用いて行うことによりデータの入出力速度を高く
でき、記憶装置を同期運転させる必要がなくエラー訂
正回路も安価に構成可能であり、また、データのリビ
ルド処理が可能であり、さらに、ホストバスのバス幅
を一定にしたまま、要求されるデータの入出力速度に応
じて記憶装置の並列台数を自由に選択することができる
記憶装置アレイシステムを提供することにある。
【0018】
【課題を解決するための手段及び作用・効果】上述の課
題を解決するために、本発明の記憶装置アレイシステム
(以下、単にアレイシステムともいう)は下記のように
構成されることを特徴とする。まず、該アレイシステム
は、下記の要件を備える。 複数のデータ記憶装置:ひとまとまりとして読み書き
されるべき元データを複数のデータブロックに分割した
形で分散記憶するとともに、一部のものが、それらデー
タブロック間で施されるエラー訂正演算により生成され
たエラー訂正用データを記憶するエラー訂正用データ記
憶装置として使用される。なお、各記憶装置は、例えば
ハードディスクドライブ、あるいは光磁気ディスクドラ
イブ等の、ディスク記憶装置により構成することができ
る。 データ読出手段:各データ記憶装置からデータを並列
的に読み出す。 データ書込手段:各データ記憶装置に対しデータを並
列的に書き込む。 エラー訂正用一時記憶手段:上記エラー訂正演算の中
間計算結果を一時格納するために使用される。 エラー訂正演算部:エラー訂正用一時記憶手段の記憶
内容と、各データ記憶装置から読み出された個々のデー
タブロック及びエラー訂正用データの一部のもの、又は
各データ記憶装置へ個々に転送されるデータブロックの
一部のものとの間でエラー訂正演算を行い、その演算結
果を中間演算結果としてエラー訂正用一時記憶手段に書
き戻すことにより、その記憶内容を更新する。
【0019】そして、各データ記憶装置からデータを読
み出してこれを外部へ出力する際には、エラー訂正演算
部が、各データ記憶装置から読み出された個々のデータ
ブロック及びエラー訂正用データのうち自身に新たに入
力されたものと、エラー訂正用一時記憶手段の記憶内容
との間でエラー訂正演算を行う動作を複数回繰り返すこ
とにより、各データ記憶装置から読み出されるデータブ
ロックのエラー訂正がなされる。また、各データ記憶装
置へ外部からデータを書き込む際には、エラー訂正演算
部が、各データ記憶装置へ書き込まれるべき個々のデー
タブロックのうち自身に新たに入力されたものと、エラ
ー訂正用一時記憶手段の記憶内容との間でエラー訂正演
算を行う動作を複数回繰り返すことによりエラー訂正用
データが生成され、これがエラー訂正用データ記憶装置
に書き込まれる。
【0020】上記システム構成によれば、各データ記憶
装置からのデータブロックあるいはエラー訂正用データ
を全て同時に用いてエラー訂正演算を行うのではなく、
その一部のもの同士を用いて中間演算を行い、その演算
結果をエラー訂正用一時記憶手段に記憶するとともに、
その記憶された中間演算結果と次のデータブロックある
いはエラー訂正用データとの間で演算を行い、その演算
結果をエラー訂正用一時記憶手段に書き戻すという処理
を、複数回逐次的に行うことでエラー訂正演算がなされ
る。従って、各レーンからのデータ読出しのタイミング
が必ずしも揃っていなくともエラー訂正演算は逐次的に
行えばよいから、各レーンの記憶装置を同期運転させる
必要がなくなり、ひいては装置を安価に構成することが
できる。また、エラー訂正演算部には、全てのデータを
同時に入力する必要がなくなるため、例えばこれを論理
演算IC等で構成する場合はその入力数を減ずることが
でき、ひいては回路を安価に構成できる。
【0021】次に、各データ記憶装置からのデータは、
セレクタを介していずれか一つのデータ記憶装置からの
もののみがエラー訂正演算部へ入力されるとともに、該
セレクタからのデータは、エラー訂正演算部へ向かうデ
ータバスから分岐するホストバスを介して外部のデータ
転送先にも転送されるように構成できる。この場合、各
データ記憶装置とセレクタとをそれぞれつなぐデータバ
スは、ホストバスと同一のバス幅を有するものとして構
成できる。これにより、データ記憶装置の並列台数が増
減してもホストバスのバス幅は一定となり、結果として
データ記憶装置の並列台数を自由に選択することができ
るようになる。
【0022】なお、エラー訂正演算部は、データブロッ
ク間の排他的論理和演算をエラー訂正演算として行うも
のとして構成できる。この場合は、その結果生成される
エラー訂正用データはパリティデータとなる。なお、エ
ラー訂正用データとしては、ハミング符号、BCH符号
あるいはリードソロモン符号などを使用することもで
き、この場合はエラー訂正演算部は、それら各エラー訂
正用データを生成する回路により構成される。
【0023】上記アレイシステムには、データのリビル
ド機能を付加することができる。具体的には、複数のデ
ータ記憶装置のうち一部のものについて、その記憶され
ているデータの読出しが不能となった場合に、エラー訂
正演算部が、各データ記憶装置から読み出された個々の
データブロック及び/又はエラー訂正用データのうち自
身に新たに入力されたものと、エラー訂正用一時記憶手
段の記憶内容との間でエラー訂正演算を行う動作を複数
回繰り返すことにより、読出し不能となったデータ記憶
装置に記憶されていたデータ内容を復元(リビルト)す
るように構成される。
【0024】また、データ記憶装置からのデータのうち
エラー訂正演算部に最初に入力されるものについて、そ
の入力されるものと同一のデータがエラー訂正演算部か
らエラー訂正用一時記憶手段に出力されるように、該エ
ラー訂正演算部の作動を制御する演算部初期作動制御手
段を設けることができる。これにより、エラー訂正演算
の逐次的な実行を合理的に行うことができる。
【0025】なお、上記アレイシステムは、データ記憶
装置からのデータが、例えばその読出し順にエラー訂正
演算部に逐次入力されるように構成することができる。
【0026】また、各データ記憶装置に対応して、各々
対応するデータ記憶装置から読み出されたデータを一時
蓄積する独立したバッファを設けることができる。この
場合、バッファは、データ記憶装置から該バッファへの
データの書き込みと、該バッファからエラー訂正演算部
へのデータの送り出しとが同時実行可能なものとして構
成することができる。これにより、読出し時のエラー訂
正処理あるいはリビルド処理をさらに高速で行うことが
できる。具体的には、バッファは、第一及び第二のRA
Mと、それらRAMに対するデータの入出力モードを、
第一のRAMへデータを書き込み第二のRAMからデー
タを読み出すモードと、第一のRAMからデータを読出
し第二のRAMへデータを書き込むモードとの間で切り
替える切替手段とを備えたもの(いわゆるダブルバッフ
ァ)により構成することができる。また、バッファは、
2つの入出力バスと、それら入出力バスに対し共通に設
けられたRAMと、そのRAMに対し2つの入出力バス
のいずれかのものを選択的に接続する切替手段とを備え
たものとすることもできる。
【0027】
【発明の実施の形態】以下、本発明の実施の形態を、図
面に示す実施例を参照して説明する。図1は、本発明の
記憶装置アレイシステムの一実施例としての、ディスク
アレイシステム1の構成を示すブロック図である。ディ
スクアレイシステム1は、CPU100、データ記憶装
置としてのハードディスクドライブ(以下、HDDと書
く)101、ディスクコントローラ102、ブロックバ
ッファ(バッファ)104、エラー訂正演算部としての
エラー訂正回路106、DMAコントローラ107及び
エラー訂正用一時記憶手段としてのエラー訂正用バッフ
ァ108等を含んで構成されている。
【0028】CPU100は、ディスクアレイシステム
1全体の制御を司る処理装置であり、ディスクコントロ
ーラ102の制御、バッファ104の切り替え、エラー
訂正回路106への訂正指示などを行う。本ディスクア
レイシステム1ではレーン数は4とされ、そのそれぞれ
に対応してHDD101が設けられている。そして、ホ
ストからのデータは、その第0〜第2レーンの3つのレ
ーンに分散して記憶される。また、ホストからのデータ
から生成したエラー訂正符号はパリティレーンに記憶さ
れる。従って、本実施例でのHDDの並列数は3という
ことになるが、言うまでもなくHDDの並列数は任意に
設定可能である。また、本実施例では、ホストからのデ
ータはHDDにとって扱い易い大きさ(セクタ単位)に
区切って、各HDDに分散して格納されるものとする。
ここで、HDDのセクタ長が512バイトならば、ホス
トからのデータのアクセス単位は512×3バイトとな
る。
【0029】ディスクコントローラ102は、CPUバ
ス115によりCPU100と接続されており、CPU
100の指示によりHDD101を制御してデータの読
み書きを行うものである。なお、ディスクコントローラ
102からブロックバッファ104へつながるバスはア
ドレスバスとデータバスの両方があるが、図では1本の
バスでまとめて示している。また、アドレスバスはディ
スクコントローラ102が与えるものであり、データバ
スはモードにより方向が変わる。なお、以下の説明にお
いては、バスあるいは信号線の符号により、各データな
いし信号そのものを示す場合がある。
【0030】ブロックバッファ104は、2つのバッフ
ァメモリ(RAM)buf0とbuf1を備えたダブル
バッファとして構成されており、それら2つのバッファ
メモリのうち、buf0がディスクコントローラ102
側に接続され、buf1がエラー訂正回路106に接続
されたモードと、これとは逆に接続されたモードとを切
り替える切替手段としてのバススイッチ103を備えて
いる。なお、このバススイッチ103は、アドレスバス
とデータバスの両方合わせたものを一括して、CPU1
00からの指示により切り替える。
【0031】また、ブロックバッファ104のバッファ
メモリbuf0及びbuf1はSRAMなどで構成さ
れ、片方のバッファメモリにディスクコントローラ10
2からのデータが書き込まれている最中に、もう一方の
バッファからエラー訂正回路106にデータを送り出
す、いわゆるパイプライン処理を行うことができるよう
になっている。なお、バッファ104からエラー訂正回
路106側へ出るバスは、アドレスバスとデータバスと
をまとめて示しており、アドレスはDMAコントローラ
107から与えられる一方、データバスは、エラー訂正
回路106との間でモードにより方向が変わる。なお、
メモリの制御に必要なリード信号、ライト信号なども、
アドレス発信元から同様の経路で与えられる。
【0032】以上の構成要素のうち、HDD101、デ
ィスクコントローラ102、バススイッチ103、ブロ
ックバッファ104は、ディスクアレイの各レーンごと
に用意されている。また、モード指示ポート105は、
エラー訂正回路106に対し、動作モードの指示及びど
のレーンのデータを復元するかの指示を行う役割を果た
す。動作モードには、リードモード、ライトモード及び
リビルドモードの3種類があるが詳細は後に説明する。
なお、モード指示ポート105の出力はCPU100か
らの指示により設定される。
【0033】次に、エラー訂正回路106は、各レーン
のブロックバッファ104から送られてきたデータを元
にパリティ演算を行い、欠落したデータを復元したり、
ホストから送られてきたデータに対し、エラー訂正符号
としてのパリティデータを付加する働きをなす。この回
路は3種類の入出力バスを持つ。第1は、ホスト120
とつながる1本のデータバス(以下、ホストバスとい
う)111で、本実施例では16ビットのバスとして構
成されている。第2は、各ブロックバッファ104とつ
ながる4本の内部データバス110であり、それぞれホ
ストバス111と同じ16ビットのバス幅を有する。第
3は、エラー訂正用バッファ108とつながるエラー訂
正用データバス116で、後述する通り、該エラー訂正
用データバス116を介してエラー訂正回路106とエ
ラー訂正用バッファ108との間で、パリティデータ演
算の中間結果あるいはその最終的な復元データ等のやり
取りがなされる。
【0034】そして、モード指示ポート105からの指
示がリードモードになっている場合は、図3(a)に示
すように、内部データバス110は入力(すなわち、ブ
ロックバッファ104→エラー訂正回路106)、ホス
トバス111は出力(すなわち、エラー訂正回路106
→ホスト120)となり、エラー訂正回路106はブロ
ックバッファ104からデータを読み込む。このとき、
モード指示ポート105はエラー訂正回路106に対
し、どのレーンのデータを選択し、また演算すべきかの
指示も同時に出しており、エラー訂正回路106はこれ
に従ってホストバス111へのデータ出力及びエラー訂
正演算を行う。そして、その演算結果はエラー訂正用デ
ータバス116に出力され、エラー訂正用バッファ10
8に格納される。
【0035】一方、モード指示ポート105からの指示
がライトモードになっている場合は、図3(b)に示す
ように、内部データバス110は出力(エラー訂正回路
106→ブロックバッファ104)、ホストバス111
は入力(ホスト→エラー訂正回路106)となり、エラ
ー訂正回路106はホスト120からのデータを読み込
んで、これに対してパリティ演算を行うことによりパリ
ティレーンに対するデータを生成する。
【0036】また、モード指示ポート105からの指示
がリビルドモードの際には、図3(c)に示すように、
内部データバス110は3本が入力(ブロックバッファ
104→エラー訂正回路106)、残り1本が出力(エ
ラー訂正回路106→ブロックバッファ104)とな
り、ホストバス111は出力(エラー訂正回路106→
ホスト)もしくは切断状態になる。このとき、モード指
示ポート105は、モード指示と同時にどのレーンのデ
ータを復元すべきかの指示も出しており、この指示のあ
ったレーンの内部データバス110が出力となる。そし
て、エラー訂正回路106は、内部データバス110の
うち正常なレーンに対応するもののデータを順次読みと
り、これらから復元指示のあったレーンのデータを復元
して、これを内部データバス110の1本に出力する。
なお、ホストバス111が出力になるか切断になるか
は、リビルド動作中にホストからの読み出し要求があっ
たか否かにより、モード指示ポート105により指示さ
れる。そして、ホストからの読み出し要求があった場合
には、その要求データを読み出し、ホストへ出力する序
でに復元データを生成することが可能とされている。一
方、ホスト120からの読み出し要求がない場合は、C
PU100が自発的にデータを読み出してリビルドを行
うが、このときはホストバス111へはデータは出力さ
れない。
【0037】次に、エラー訂正用バッファ108は、パ
リティ演算の中間結果を保存しておくためのものであ
り、エラー訂正用データバス116を介してエラー訂正
回路106からデータを受け取り、またエラー訂正回路
106に自身に記憶されているその中間結果(あるいは
最終結果)を出力する。そして、エラー訂正回路106
は、エラー訂正用バッファ108からの中間結果と、ホ
ストバス111からのデータとの間でエラー訂正演算を
行い、その結果がエラー訂正用バッファ108に返され
る。つまり、エラー訂正用バッファ108の中のメモリ
は、リードを行って直後に新たな値をライトするとい
う、いわゆるREAD MODIFY WRITE動作をすることにな
る。ここで、エラー訂正演算の開始時には、該開始時に
エラー訂正用バッファ108内に記憶されている演算結
果を無効にする、いわゆる初期化のための機構が必要と
なる。この場合、CPU100の指示によりメモリ内容
をクリアする方法も可能であるが、本実施例では、エラ
ー訂正回路106内に、最初に入力されるデータのみは
エラー訂正演算を行わずに、そのままエラー訂正用バッ
ファ108に格納することにより初期化を行う方式が採
用されており、その主体は後述する通り、エラー訂正回
路106内のセレクタ207(後述;図2)がなす。
【0038】DMAコントローラ107は、例えばデュ
アルアドレスタイプのDMAコントローラで構成され、
各バッファ104へ転送アドレスを与えるとともに、ホ
ストにも転送アドレスを指示する役割を果たす。該DM
Aコントローラ107は、CPUバス115でCPU1
00と接続されており、CPU100からの指示により
ダイレクトメモリアクセスを実行する。なお、本実施例
では、図1に示すように、ホストデータバス111の先
にバスアービタが存在するものとしており(例えばホス
ト120内)、DMAコントローラ107は、ホスト1
20に対しバス権要求のREQ信号113を出力し、バ
スアービタがバス権を渡すとACK信号114が返され
てダイレクトメモリアクセスが開始される。
【0039】コマンドバッファ109は、ホスト120
からのコマンドを受け、また、ホスト120にレスポン
スを返すためのメモリであり、ホスト120とCPU1
00からのいずれからでもリード・ライトが可能な共有
メモリとして構成されている。デバイスとしては、デュ
アルポートメモリなどを使用する。
【0040】次に、図2は、エラー訂正回路106の詳
細構造を示す内部ブロック図である。まず、図1の内部
データバス110からのデータは、エラー訂正回路10
6内においてバスバッファ201により一旦受けられる
ようになっている。また、スリーステートバッファ20
2も同バス110に接続されており、内部データバス1
10へデータを出力する際には、このスリーステートバ
ッファ202がバス110を駆動する。そして、バスバ
ッファ201で受けられたデータは、ホストバス111
からのライトデータ212と共にセレクタ203に入
り、モード指示ポート105(図1)からの信号によ
り、各レーンからのリードデータあるいは各レーンへの
ライトデータのうちのいずれか1つが選択されてデータ
バス211へ出力される。該出力されたデータは、復元
データ214と共にセレクタ205に入力され、モード
指示ポート105の信号により選択されて、スリーステ
ートバッファ208へと伝達される。スリーステートバ
ッファ208は出力側がホストバス111へつながって
おり、モード指示ポート105の指示によりホストバス
111へデータ出力をするか否かが決定される。
【0041】またEXCLUSIVE-OR回路(以下、EX−OR
回路と書く)206には、セレクタ203で選択された
各レーンからのデータ211とエラー訂正用バッファ1
08からのフィードバックデータ(復元データ)214
とが入力されるようになっており、両者の排他的論理和
をとることでパリティ演算(すなわち、エラー訂正演
算)を行い、その結果をエラー訂正用バッファ108に
出力する。また、EX−OR回路206に対するエラー
訂正用バッファ108からの入力経路の中間には前述の
セレクタ207が設けられている。このセレクタ207
は、パリティ演算の開始時においてモード指示ポート1
05からの指示を受けることにより、EX−OR回路2
06へのエラー訂正用バッファ108側への入力データ
216を1に固定する。EX−OR演算では、片方の入
力が1の場合、もう片方のデータがそのまま出力され
る。従って、上記セレクタ207は、パリティ演算の開
始時において、エラー訂正用バッファ108に格納され
ている前回の演算結果のフィードバックを無効化し、代
わってEX−OR回路206に対し最初に入力されるデ
ータをそのままエラー訂正用バッファ108に出力させ
る、演算部初期作動制御手段の役割を果たすこととな
る。
【0042】こうしてEX−OR回路206で演算され
たデータは、エラー訂正用バッファ108に分配され
る。エラー訂正用バッファ108は、繰り返しになるが
パリティ演算の途中結果を格納しておくためのものであ
り、その入力はEX−OR回路206から受け、その出
力は、セレクタ207とセレクタ204とセレクタ20
5とに伝達される。セレクタ204は、モード指示ポー
ト105からの指示により、リードモード時には復元デ
ータ214が、ライトモード時にはライトデータ212
あるいはパリティデータ214が、リビルドモード時に
は復元データ214が選択されるように切替えを行う。
そして、セレクタ204で選択されたデータ215は、
スリーステートバッファ202を経て内部データバス1
10へ出力されるが、スリーステートバッファ202の
駆動タイミングもまた、モード指示ポート105から指
示により制御される。
【0043】以下、ディスクアレイシステム1の動作に
ついて説明する。最初に、ディスクアレイからデータを
読み出す場合、すなわちリードモード時の動作につい
て、図1及び図2を用いて説明する。まずホストからコ
マンドバッファ109を介して、CPU100へ「セク
タ番号Sのセクタのデータを読め」という指令が伝えら
れる(図1:)。ここで、セクタとは、ディスクアレ
イ全体の記憶サイズを使いやすい大きさに分割した小領
域で、セクタ番号はその領域の通し番号として定義され
る。なお、HDD101にはアレイシステムを組まずに
単独で使用する場合のセクタが別途定義されており、2
種類のセクタが存在することになるわけであるが、混同
を避けるために単体ディスクのセクタ番号はssで表
し、ディスクアレイ全体のセクタ番号はSで表す。
【0044】CPU100は、分散されたHDD101
上でセクタSがどこに当たるかを換算して、それぞれの
HDD101の読み出し開始セクタ番号ssを求める。
次にCPU100は、バススイッチ103により、ブロ
ックバッファ104をbuf0側がディスクコントロー
ラ102につながるように切り替えておいてから、各レ
ーンのディスクコントローラ102にセクタssに対す
るリードコマンドを送って、HDD101のデータを読
み出させる()。各レーンのHDD101はそれぞれ
で回転待ち時間が異なるため、実際にリードデータが出
てくるタイミングはまちまちとなる。なお、データの転
送は、各レーンごとに図示しないDMAコントローラが
行ってもよいし、CPU100によりプログラム転送を
行ってもよい。また、ディスクリードの成否はディスク
コントローラ102が通知する。
【0045】ブロックバッファ104のbuf0には、
それぞれのレーンのデータが互いに異なるタイミングで
入ってくるが()、CPU100は、各レーンのデー
タを読めた順に以下の手順により処理する。まず、ブロ
ックバッファ104のbuf0側をエラー訂正回路10
6につながるように切り替えるとともに()、図2に
おいて、モード指示ポート105に対しセレクタ203
に当該レーン(例えば図では第0レーンとする)を選択
させ()、セレクタ205にデータバス211を選択
させ()、セレクタ207に「1」を選択させるよう
に指示を出す()。こうしておいてから、図1におい
てDMAコントローラ107に起動をかけると()、
当該レーン(すなわち第0レーン)のデータがホストバ
ス111にダイレクトメモリアクセス(以下、DMAと
いう)により転送されるとともに()、図2において
当該レーンのデータがエラー訂正用バッファ108に格
納される()。そして、そのDMAの完了を持って1
レーンの処理の完了とし、CPU100は次に読めたレ
ーンの処理を同様に行う。但し、2回目以降のDMA転
送では、図2において、セレクタ207にはデータバス
214を選択するように指示する()。これにより、
EX−OR回路106にはエラー訂正用バッファ108
の記憶内容が転送されることとなる。また、パリティレ
ーンのデータが選択された場合には、スリーステートバ
ッファ208を駆動させないようにする。
【0046】図2及び図8(a)のタイミングチャート
を参照して説明すれば、例えば1回目に第1レーン、2
回目にパリティレーン、3回目に第2レーンのデータが
読めたとすると、2回目のDMA転送終了時には、パリ
ティレーンのデータと第1レーンのデータとの排他的論
理和演算の結果(すなわち中間演算結果)がエラー訂正
用バッファ108に入っており、3回目のDMAを実行
することにより、その中間演算結果と第2レーンのデー
タとの排他的論理和演算がEX−OR回路206によっ
てなされる。この演算結果は、パリティ演算の原理に従
い、第0レーンのデータと同一のものとなる。従って、
3回目のDMA転送時には、ホストバス111に第2レ
ーンのデータが出ていくのと同時に、エラー訂正用バッ
ファ108には第0レーンのデータが復元されることと
なる。そして、セレクタ205を復元データ側に切替え
て4回目のDMAを実行すると、ホストバス111には
第0レーンのデータが流れる。結局ホストバス111に
は、第1、第2、第0レーンの順にデータが出力された
ことになる。なお、パリティレーンのリードが最後にな
った場合は、そのレーンの処理は行わないようにする。
【0047】ここで、図1において、どのレーンのデー
タから先に出力されるかは不定であるので、もしデータ
転送先となるホスト120でその出力順にデータが格納
されるようになっている場合は、該ホスト120は、受
け取った各レーンのデータを正しい順番に並べ換えて使
う必要が生ずる。そこで、その不具合を解消するために
本実施例では、ホスト120でのデータの格納アドレス
をDMAコントローラ107が生成し、これがホストア
ドレスバスを通ってホスト120へ送られるようになっ
ている。ホスト120は、データとともにこの格納アド
レスを受けて所定のアドレスに該データを格納すること
で、その並べ換えが不要となる。
【0048】図1へ戻り、ホスト120へのデータの出
力が終了すれば、CPU100はコマンドバッファ10
9に正常終了レスポンスを書き込み、ディスクアレイと
してのセクタリードコマンドが完結する。なお、例えば
2つ以上のHDD101が読出し不能であった場合な
ど、データの読出しが正常に行えなかった場合には、異
常終了レスポンスが返される。この場合、例えば読めた
レーンのデータだけがホスト120に転送されるが、ホ
スト120はこれを廃棄する必要がある。
【0049】そして、図1において、ブロックバッファ
104のbuf0へのリードが完了して、該buf0側
をエラー訂正回路106につながるように切り替えたと
きに、同時にbuf1をディスクコントローラ102に
接続し()、ディスクコントローラ102に次のセク
タのリードコマンドを発行するようにすれば、buf0
のDMA転送と、buf1へのディスクコントローラ1
02からのリードが同時に実行できてパイプライン動作
となるので、全体の読出速度が向上する。
【0050】次に、ディスクアレイへデータを書き込む
場合、すなわちライトモード時の動作について、図4及
び図5を用いて説明する。また、図8(b)は、そのタ
イミングチャートの一例を示している。まず、図4にお
いて、ホストからコマンドバッファ109を介して、C
PU100へ「セクタ番号Sのセクタにデータを書け」
という指令が伝えられる()。するとCPU100
は、ブロックバッファ104をbuf0側がエラー訂正
回路106とつながるように切り替えるとともに
()、モード指示ポート105に対して指示を出すこ
とにより、図5においてセレクタ204にライトデータ
212を選択させ()、セレクタ203にライトデー
タ212を選択させる()。またセレクタ207には
最初のデータ転送時のみ「1」を選択させ()、以降
はエラー訂正バッファ108からのデータを選択させる
((12))。さらに、スリーステートバッファ202には
第0レーンにだけデータを出力させる()。図4に戻
り、CPU100はDMAコントローラ107に指示を
出し()、ホスト120から第0レーンに格納すべき
データを読み出す()。このデータは、第0レーンの
ブロックバッファ104のbuf0に転送されるととも
に()、エラー訂正用バッファ108にも格納される
()。
【0051】次にCPU100は、ブロックバッファ1
04のbuf0側をディスクコントローラ102側に切
り替えて((10))、第0レーンのディスクコントローラ
102にセクタssに対するライトコマンドを送り((1
1))、該レーンのHDD101にデータを書き込む。ま
た、図5において、セレクタ207にフィードバックデ
ータ214を選択させ((12))、スリーステートバッフ
ァ202に第1レーンにだけデータを出力させるように
((13))、指示ポート105に指示を出す。そして、図
4において、さらにDMAコントローラ107に指示を
出し((14))、ホスト120から第1レーンに格納すべ
きデータを読み出す((15))。するとデータは、第1レ
ーンのブロックバッファ104のbuf0に転送される
とともに((16))、図5においてエラー訂正用バッファ
108には、EX−OR回路206による第0レーンの
データと第1レーンのデータとの排他的論理和演算の結
果が格納される((17))。
【0052】そして、CPU100は、ブロックバッフ
ァ104のbuf0側をディスクコントローラ102側
に切り替えるとともに((18))、第1レーンのディスク
コントローラ102にセクタssに対するライトコマン
ドを送って((19) )、該レーンのHDD101にデー
タを書き込む。また、図5において、スリーステートバ
ッファ202が第2レーンにだけデータを出力するよう
に((20))、モード指示ポート105に指示を出す。そ
の後DMAコントローラ107に指示を出し((21))、
ホスト120から第2レーンに格納すべきデータを読み
出す((22))。するとデータは、第2レーンのブロック
バッファ104のbuf0に転送されるとともに((2
3))、エラー訂正用バッファ108のその時点での記憶
内容(すなわち第0レーンのデータと第1レーンのデー
タとの排他的論理和演算の結果)が読み出され((2
4))、図5において、これと第2レーンのデータとの排
他的論理和演算がEX−OR回路206により行われて
((25))、その結果がエラー訂正用バッファ108書き
戻される((26) )。これは、すなわち第0レーン、第
1レーン及び第2レーンの各データの排他的論理和、す
なわちパリティデータとなる。
【0053】図4に戻り、CPU100は、ブロックバ
ッファ104のbuf0側をディスクコントローラ10
2側に切り替え((27))、また、第2レーンのディスク
コントローラ102にセクタssに対するライトコマン
ドを送って((28))、該レーンのHDD101にデータ
を書き込む。そして、図5においてセレクタ204がパ
リティデータ214を選択し((29) )、スリーステー
トバッファ202がパリティレーンにだけデータを出力
するように((30))、モード指示ポート105に指示を
出す。さらに、図4においてDMAコントローラ107
に指示を出し((31))、エラー訂正用バッファ108か
らパリティデータを読み出す((32))。するとデータ
は、パリティレーンのブロックバッファ104のbuf
0に転送される((33))。この状態で、CPU100
は、ブロックバッファ104のbuf0側をディスクコ
ントローラ102側に切り替え((34) )、パリティレ
ーンのディスクコントローラ102にセクタssに対す
るライトコマンドを送って((35))、上記パリティデー
タを該パリティレーンのHDD101に書き込む。そし
て、全てのディスクコントローラ102のコマンド完了
を持って、CPU100はコマンドバッファ109に正
常終了レスポンスを書き込み、ディスクアレイとしての
セクタライトコマンドが完結する。
【0054】最後に、リビルド動作について図6及び図
7を用いて説明する(また、図8(c)は、そのタイミ
ングチャートの一例を示す)。すなわち、図6におい
て、CPU100は、所定のプログラムにより、常時デ
ィスクコントローラ102の実行結果を読み取り、どの
レーンのHDD101が故障して新品のHDDに交換さ
れたかということを監視している。そして、新品のディ
スクを検出した場合に自動的にリビルドモードに入る
(本実施例では、第2レーンのHDDが交換された場合
を例にとる)。まず、CPU100は、ブロックバッフ
ァ104のbuf0をDC102側に切り替え()、
新品でないレーンのディスクコントローラ102に対し
てセクタnのリードコマンドを発行する()。3つの
レーンのデータがバッファのbuf0に読み出されたら
()、読めたレーンから順に以下の処理をする。
【0055】まず、当該レーン(図では第0レーンとす
る)のブロックバッファ104のbuf0側をエラー訂
正回路106につながるように切り替えるとともに
()、図7において、セレクタ203が当該レーンを
選択し、セレクタ207が「1」を選択するように、モ
ード指示ポート105に指示を出す()。こうしてお
いてから、図6においてDMAコントローラ107に起
動をかけると()、当該レーンのデータがエラー訂正
用バッファ108に格納される()。このDMAの完
了を持って1レーンの処理の完了とし、CPU100
は、次に読めたレーンの処理を同様に行う。ただし、2
回目以降のDMAにおいては、セレクタ207にフィー
ドバックデータ214を選択するよう指示する()。
【0056】例えば図7において、第1レーン、パリテ
ィレーン及び第0レーンの順で読めたとすると、3回目
のDMAを行ったときに、EX−OR回路206の出力
は、第2レーンに以前存在していたデータ(復元デー
タ)となる。この復元データはエラー訂正用バッファ1
08に格納され、4回目のDMAでバス214を通って
出力されることとなる。すなわち、モード指示ポート1
05を介してセレクタ204に復元データを選択させ
()、図6において、第2レーンのブロックバッファ
104のbuf0をディスクコントローラ側に切り替え
ると((10))、該buf0に復元データが格納される
((11))。最後に、第2レーンのディスクコントローラ
102に対してセクタnへのライトコマンドを発行して
セクタnのリビルドが完了する。この手順を、全てのn
について(すなわち、全てのセクタについて)実行する
ことで、新品のHDDに元のデータが復元される。
【0057】なお、図1に示すように、以上の処理にお
いて各レーンのブロックバッファ104は、リードモー
ドにおいて、バラバラに到着するディスクからのデータ
を一旦蓄積し、他のレーンがエラー訂正回路106へデ
ータを転送している間に、そのレーンにデータ転送を一
時待機させる役割を果たすが、さらにダブルバッファ構
成になっていることでデータの連続転送速度を向上させ
る効果が達成される。例えば、ホストから「セクタ番号
S1のセクタのデータを読め」という指令が来て、この
実行が完了する前に続けて「セクタ番号S2のセクタの
データを読め」という指令が来たとしよう(ここでは、
コマンドは、実行完了を待たずに何個か続けて同時に発
行できる前提とし、実行待ちのコマンドはCPU100
の持つ図示しないコマンドキューに保存されるものとす
る)。ブロックバッファ104がダブルバッファでなけ
れば、S1のデータをエラー訂正回路106へ転送中
は、次のS2のデータを読もうとしてもブロックバッフ
ァ104が空いていないので不可能である。しかしなが
ら、これを図1に示すようにダブルバッファとすること
で、S1のデータをbuf0に読み込んでエラー訂正回
路106へ転送している間に、これと並行してS2のデ
ータをbuf1に読み込む、いわゆるパイプライン処理
が可能となり、連続読出しの場合のディスクアレイシス
テム1全体の出力転送速度を向上させることができる。
【0058】このようなパイプライン処理は、ライトモ
ードのときも同様に効果を奏することができ、この場合
は連続書込みによりディスクアレイシステム1全体の入
力転送速度を向上させることができる。また、リビルド
モードの場合も、正常なHDD101のリードと、障害
代替記憶装置となるHDD101のへライトとがパイプ
ライン的に同時に行えるのでリビルド速度が向上する。
【0059】また、上記実施例ではバッファ104をダ
ブルバッファ構成としていたが、安価に構成しようとす
るならば、単なるシングルバッファ構成にしてもよい。
この場合はパイプライン処理によるリード/ライト処理
及びリビルド速度の向上については期待できないが、パ
リティ演算手段及びリビルド経路などがハードウェア化
されていることによる処理速度向上の効果は同様に達成
される。
【0060】また、ブロックバッファ104をダブルバ
ッファとする代わりに、図9に示すようなデュアルポー
トメモリを使用する方法もある。この場合は、ブロック
バッファ104が2つの入出力バス104a,104b
と、それらバス104a及び104bに対し共通に設け
られたRAM104eと、そのRAM104eに対し、
上記2つの入出力バス104a,104bのいずれかを
選択的に接続する切替手段としてのバススイッチ104
cとを備えている。バススイッチ104cにはアービタ
104dが接続され、両バス104a,104bへのデ
ータの入出力を指示するためのリード/ライト信号がア
ービタ104dに入力されるようになっている。
【0061】アービタ104dは、バス104a,10
4bのうち、リード/ライト信号の到着の早かったもの
に対しRAM104eが接続されるように、バススイッ
チ104cの切替えを行う。この場合、アービタ104
dは、後着のバスに対してBUSY信号(あるいはWA
IT信号)を返し、先着のバスのアクセスが終了し次
第、バススイッチ104cを該後着のバス側に切り替え
る。これにより、例えば、バス104a,104bのア
クセス速度が同じであれば、両バス104a,104b
はRAM104eに対して交互にアクセスすることとな
る。そして、RAM104eの応答速度が十分早けれ
ば、待ち時間を含めても両側のバス104a,104b
のアクセス速度要求に応じることが十分可能となり、結
果として、HDD101からのデータの読み出し、すな
わちブロックバッファ104へのデータの書き込みと、
エラー訂正回路106へのデータ出力、すなわちブロッ
クバッファ104からのデータの読み出しとを見掛け
上、並列的に実行させることが可能となる。なお、デュ
アルポートメモリとしては、2つの入出力バス104
a,104bがいずれもランダムアクセス型のもの、一
方がランダムアクセスとなり、他方がシーケンシャルア
クセスとなるもの(例えばVRAMなど)、及びいずれ
もシーケンシャルアクセスとなるもの(例えばFIFO
など)のいずれを使用してもよい。
【0062】次に、図2に示すように、エラー訂正回路
106において、EX−OR回路206の出力側とセレ
クタ204とを結ぶデータバス213を設けることがで
きる。該バス213を設けない場合は、リビルドモード
において、最終的な復元データはバッファ108に一旦
蓄積された後、バス214を介してリビルドレーンに
(本実施例では第2レーン)の書き戻されることとな
る。しかしながら、復元データの書戻しを上記バス21
3を用いて行なうようにすれば、最後のDMA転送(本
実施例では3回目、第0レーン)と、上記復元データの
書戻し処理とを同時に行なうことが可能となり、ひいて
はリビルド処理の速度をさらに高めることができる。
【0063】次に、上記実施例では、各レーンのディス
クコントローラ102から専用のデータバスを独立に引
き出し、セレクタ203で切り替えてホストへ出力する
ように構成していたが、該データバスとして、一般的な
汎用バスを用いることも可能である。その一例として、
PCIバスを使用した場合のブロック図を図10(a)
及び(b)に示す。本構成のディスクアレイシステム1
では、ホスト120、ディスクコントローラ102及び
エラー訂正回路106にそれぞれPCIインターフェー
ス(PCII/F)308を設け、PCIバス302を
介してそれらを互いに接続した構成になっている。この
場合、先の実施例にあったセレクタは姿を消している
が、例えばホスト120に設けられたPCIのバスアー
ビタ303がその役割を代替している。
【0064】すなわち、図10(b)に示すように、各
ディスクコントローラ102は、PCII/F301、
HDD101が接続される外部インターフェースとして
のSCSIインターフェース(SCSII/F)30
4、RAM305、CPU306及びそれらを互いに接
続するバス307とを有しており、CPU306は、H
DD101からSCSIインタフェース304を介して
データを読み出してRAM305に転送し、次いでこれ
を読み出してPCII/F301を介してPCIバス3
02へこれを流すように機能する。すなわち、ディスク
コントローラ102はバスマスターとなってホスト12
0へ自主的にデータを転送するのであるが、その際、ど
のデバイスがバスを使用するかの権利はバスアービタ3
03が調停して割り振るようになっている。
【0065】そして、エラー訂正用バッファ108は、
PCIバス302上を流れるデータを、PCII/F3
08を介していわば傍聴する形で取り込む。なお、リー
ド時におけるエラー訂正されたデータのPCIバス30
2への転送、あるいはライト時のパリティデータの転送
(いずれも転送元はエラー訂正用バッファ108とな
る)は、CPU100からの指示を受けることによりD
MAコントローラ107が主体となって行う。この場
合、エラー訂正用バッファ108からの出力データは、
スリーステートバッファ309で駆動されるバイパス用
のバス310を通ってPCII/F308に出力され
る。なお、スリーステートバッファ309に対するデー
タを、バス310に出力するか否かの指示はDMAコン
トローラ107によりなされる。なお、リビルドモード
においては、ホスト120にデータを転送せずにエラー
訂正用バッファ108にだけデータを送る必要が生ずる
が、このときはデータの傍聴を行わずに通常の1対1の
データ転送を行うようにする。
【0066】ここで、PCIの本来の規格では、バス上
のデータは1つのマスターから1つのターゲットへと1
対1で転送されることになっているので、バス上を流れ
るデータを他のデバイス(ここではエラー訂正用バッフ
ァ108)が傍聴するのは特殊な態様であるともいえる
が、例えばPCII/F308を、データ傍聴に適した
ものとなるようCPU100に対しターゲットレディを
返さない構造とし、また、エラー訂正用バッファ108
の入力許容速度を十分速くすることで、PCIバス30
2からのデータ傍聴を支障なく行うことができるのであ
る。なお、上記実施例では、ディスクコントローラ10
2にバスマスターの機能を持たせるために、SCSIイ
ンタフェース304からPCII/F301へのデータ
転送をCPU305により行っているが、これを専用の
LSI(例えばPCII/FのSCSIコントローラ)
を介して行うようにしてもよい。
【0067】なお、データを傍聴するための汎用バスは
SCSIバスであってもよい。この場合、上記構成にお
ける各PCII/FをSCSII/Fで置き換えること
で、ほぼ同様にディスクアレイシステムを構築すること
ができる。
【図面の簡単な説明】
【図1】本発明の記憶装置アレイシステムの一実施例と
してのディスクアレイシステムの構成を、そのリードモ
ード時のデータの流れとともに示すブロック図。
【図2】同じくエラー訂正回路のブロック図。
【図3】各モードにおけるエラー訂正回路へのデータの
流れを示すブロック図。
【図4】図1のシステムにおけるライトモードでのデー
タの流れを示す説明図。
【図5】同じくエラー訂正回路内のデータの流れを示す
説明図。
【図6】図1のシステムにおけるリビルドモードでのデ
ータの流れを示す説明図。
【図7】同じくエラー訂正回路内のデータの流れを示す
説明図。
【図8】各モードにおける処理のタイミングチャートの
一例を示す図。
【図9】バッファをデュアルポートメモリで構成した例
を示すブロック図。
【図10】本発明の変形例のブロック図。
【図11】第1の従来例のブロック図。
【図12】第2の従来例のブロック図。
【図13】ディスクアレイシステムの概念を示す説明
図。
【符号の説明】
1 ディスクアレイシステム(記憶装置アレイシス
テム) 101 ハードディスクドライブ(データ記憶装置) 104 ブロックバッファ(バッファ) 106 エラー訂正回路(エラー訂正演算部) 107 DMAコントローラ(データ読出手段、データ
書込手段) 108 エラー訂正用バッファ(エラー訂正用一時記憶
手段) 203,205 セレクタ 207 セレクタ(演算部初期作動制御手段)

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 ひとまとまりとして読み書きされるべき
    元データを複数のデータブロックに分割した形で分散記
    憶するとともに、一部のものが、それらデータブロック
    間で施されるエラー訂正演算により生成されたエラー訂
    正用データを記憶するエラー訂正用データ記憶装置とし
    て使用される複数のデータ記憶装置と、 前記各データ記憶装置からデータを並列的に読み出すデ
    ータ読出手段と、 前記各データ記憶装置に対しデータを並列的に書き込む
    データ書込手段と、 前記エラー訂正演算の中間計算結果を一時格納するエラ
    ー訂正用一時記憶手段と、 前記エラー訂正用一時記憶手段の記憶内容と、前記各デ
    ータ記憶装置から読み出された個々のデータブロック及
    びエラー訂正用データの一部のもの、又は前記各データ
    記憶装置へ個々に転送されるデータブロックの一部のも
    のとの間でエラー訂正演算を行い、その演算結果を前記
    中間演算結果として前記エラー訂正用一時記憶手段に書
    き戻すことにより、その記憶内容を更新するエラー訂正
    演算部とを備え、 前記各データ記憶装置からデータを読み出してこれを外
    部へ出力する際には、前記エラー訂正演算部が、前記各
    データ記憶装置から読み出された個々のデータブロック
    及びエラー訂正用データのうち自身に新たに入力された
    ものと、前記エラー訂正用一時記憶手段の記憶内容との
    間で前記エラー訂正演算を行う動作を複数回繰り返すこ
    とにより、前記各データ記憶装置から読み出されるデー
    タブロックのエラー訂正がなされ、 前記各データ記憶装置へ外部からデータを書き込む際に
    は、前記エラー訂正演算部が、前記各データ記憶装置へ
    書き込まれるべき個々のデータブロックのうち自身に新
    たに入力されたものと、前記エラー訂正用一時記憶手段
    の記憶内容との間で前記エラー訂正演算を行う動作を複
    数回繰り返すことにより前記エラー訂正用データが生成
    され、これが前記エラー訂正用データ記憶装置に書き込
    まれることを特徴とする記憶装置アレイシステム。
  2. 【請求項2】 前記各データ記憶装置からのデータは、
    セレクタを介していずれか一つのデータ記憶装置からの
    もののみが前記エラー訂正演算部へ入力されるととも
    に、該セレクタからのデータは、前記エラー訂正演算部
    へ向かうデータバスから分岐するホストバスを介して外
    部のデータ転送先にも転送されるようになっており、 前記各データ記憶装置と前記セレクタとをそれぞれつな
    ぐデータバスは、前記ホストバスと同一のバス幅を有し
    ている請求項1記載の記憶装置アレイシステム。
  3. 【請求項3】 前記エラー訂正演算部は、前記データブ
    ロック間の排他的論理和演算を前記エラー訂正演算とし
    て行うものであり、その結果生成される前記エラー訂正
    用データはパリティデータである請求項1又は2に記載
    の記憶装置アレイシステム。
  4. 【請求項4】 前記複数のデータ記憶装置のうち一部の
    ものについてその記憶されているデータの読出しが不能
    となった場合には、前記エラー訂正演算部が、前記各デ
    ータ記憶装置から読み出された個々のデータブロック及
    び/又はエラー訂正用データのうち自身に新たに入力さ
    れたものと、前記エラー訂正用一時記憶手段の記憶内容
    との間で前記エラー訂正演算を行う動作を複数回繰り返
    すことにより、前記読出し不能となったデータ記憶装置
    に記憶されていたデータ内容を復元するようにした請求
    項1ないし3のいずれかに記載の記憶装置アレイシステ
    ム。
  5. 【請求項5】 前記各データ記憶装置からのデータは、
    その読出し順に逐次前記エラー訂正演算部に入力される
    ようになっている請求項1ないし4のいずれかに記載の
    記憶装置アレイシステム。
  6. 【請求項6】 前記各データ記憶装置からのデータのう
    ち前記エラー訂正演算部に最初に入力されるものについ
    て、その入力されるものと同一のデータが前記エラー訂
    正演算部から前記エラー訂正用一時記憶手段に出力され
    るように該エラー訂正演算部の作動を制御する、演算部
    初期作動制御手段が設けられている請求項5記載の記憶
    装置アレイシステム。
  7. 【請求項7】 前記各データ記憶装置に対応して設けら
    れ、各々対応するデータ記憶装置から読み出されたデー
    タを一時蓄積する独立したバッファを備え、 該バッファは、前記データ記憶装置から該バッファへの
    データの書き込みと、該バッファから前記エラー訂正演
    算部へのデータの送り出しとが同時実行可能とされてい
    る請求項1ないし6のいずれかに記載の記憶装置アレイ
    システム。
JP9033179A 1997-01-31 1997-01-31 記憶装置アレイシステム Pending JPH10222314A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9033179A JPH10222314A (ja) 1997-01-31 1997-01-31 記憶装置アレイシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9033179A JPH10222314A (ja) 1997-01-31 1997-01-31 記憶装置アレイシステム

Publications (1)

Publication Number Publication Date
JPH10222314A true JPH10222314A (ja) 1998-08-21

Family

ID=12379297

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9033179A Pending JPH10222314A (ja) 1997-01-31 1997-01-31 記憶装置アレイシステム

Country Status (1)

Country Link
JP (1) JPH10222314A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014507717A (ja) * 2011-01-18 2014-03-27 エルエスアイ コーポレーション より高いレベルの冗長な情報の計算

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014507717A (ja) * 2011-01-18 2014-03-27 エルエスアイ コーポレーション より高いレベルの冗長な情報の計算
US9183140B2 (en) 2011-01-18 2015-11-10 Seagate Technology Llc Higher-level redundancy information computation

Similar Documents

Publication Publication Date Title
JP3181398B2 (ja) アレイ型記録装置
US5373512A (en) Memory controller with parity generator for an I/O control unit
US5720027A (en) Redundant disc computer having targeted data broadcast
US8151014B2 (en) RAID performance using command descriptor block pointer forwarding technique
JP3742494B2 (ja) 大容量記憶装置
JP2000066845A (ja) ディスクアレイ装置
JPH07134635A (ja) ディスクアレイ装置
JP2912299B2 (ja) ディスクアレイ制御装置
JP3661205B2 (ja) ディスクアレイシステムおよびディスクアレイシステムのパリティデータの生成方法
EP0832456A1 (en) Disk array system including a dual-ported staging memory and concurrent redundancy calculation capability
KR100254722B1 (ko) 데이타 기억 시스템,데이타 전송 방법 및 데이타 재구성 방법
JP2011243190A (ja) パリティとミラーリングを用いることなしにraidシステムにおいて高レベルな冗長性、耐故障性、及びパフォーマンスを確立する方法
USRE36448E (en) Memory controller with parity generator for an I/O control unit
JP2857288B2 (ja) ディスクアレイ装置
JP2969251B2 (ja) データ記憶システム及びデータ記憶システムのパリティ発生方法
US5875458A (en) Disk storage device
JPH10222314A (ja) 記憶装置アレイシステム
JPH10143331A (ja) 記憶装置アレイシステム
JPH1166693A (ja) アレイディスク処理装置
JP2857289B2 (ja) ディスクアレイ装置
JP3615250B2 (ja) ディスクアレイ装置
JP3069829B2 (ja) ディスクアレイ装置
JP3263647B2 (ja) 磁気デイスク装置及び情報転送方法
JPH11259240A (ja) データ記憶装置
JPH0423119A (ja) アレイディスクおよびそのデータ復元方法