JPH08501643A - コンピュータ・メモリ・アレイ・コントロール - Google Patents

コンピュータ・メモリ・アレイ・コントロール

Info

Publication number
JPH08501643A
JPH08501643A JP5511984A JP51198493A JPH08501643A JP H08501643 A JPH08501643 A JP H08501643A JP 5511984 A JP5511984 A JP 5511984A JP 51198493 A JP51198493 A JP 51198493A JP H08501643 A JPH08501643 A JP H08501643A
Authority
JP
Japan
Prior art keywords
data
memory
buffer
read
computer
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
JP5511984A
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 JPH08501643A publication Critical patent/JPH08501643A/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
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B2020/10916Seeking data on the record carrier for preparing an access to a specific address

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 ホストコンピュータとのインターフェイスをとるためのコンピュータ・メモリ・コントローラであって、複数のメモリユニット(42)とのインターフェイスを取るとともに、これに対する又はこれからのデータを保持するためのバッファメモリ(26)を備えている。中央制御装置(22)は、ホストコンピュータおよびメモリユニット(42)とのデータのやり取りを制御するよう動作する。バッファ・メモリ(26)は、メモリユニット(42)から読み出すデータ、もしくはこれに書き込むデータを番地付けして記憶する複数のバッファ・セグメントを形成するように制御される。中央制御装置(22)は、ホストコンピュータからの読出、書込要求のために、バッファ・セグメントを再割り当てするように動作する。中央制御装置(22)は、さらに、ホストコンピュータからの複数のデータ要求に応じて、異なるメモリユニット(42)に記憶されているデータを同時に捜すためにメモリユニット(42)を制御する。

Description

【発明の詳細な説明】コンピュータ・メモリ・アレイ・コントロール この発明は、コンピュータ記憶装置(メモリ)に関するものであり、特に、コ ンピュータの記憶装置(メモリ)ユニット・アレイの制御方法および制御装置に 関するものである。 高性能なオペレーティング・システムおよびファイルサーバにとっては、デー タを『捜す(シークする)』必要のないメモリこそが、理想的なコンピュータ・ メモリである。そのようなメモリであれば、瞬間的にすべてのデータ領域にアク セスすることができる。そのようなメモリは、RAMディスクによって提供可能 である。このことは、メモリ中でのデータの配置が連続しているかランダムであ るかに拘らず、データへのアクセスを可能とする。しかしながら、RAMのコス トが高いこと、特にメモリユニットの故障を補うための『予備(redundancy)』を 設けることによる余分なコストを考慮すれば、RAMの使用は、従来の磁気のデ ィスクドライブ記憶媒体の使用と比較して不利である。 したがって、不揮発性コンピュータ・メモリとしては、磁気ディスク・ドライ ブが、最も一般的に使用されている。とはいえ、ディスクドライブにはつぎのよ うな欠点がある。つまり、データの記憶場所に対応したディスクの正しい部分に 、ヘッドを位置させるための時間を必要とする。これは、シークおよび回転遅れ と呼ばれている。小量のデータだけをディスクから読み出したり、書き込んだり する際には、この遅れは、データ・アクセス時間の重要な部分となってしまう。 ディスクドライブによるシークおよび回転待ち時間は、コンピュータの動作速 度をかなり制限することになる。ディスクドライブの入力/出力(I/O)速度 は、マイクロプロセッサーの進歩に遅れをとっており、このため、メモリアクセ スの時間によって、コンピュータの能力が厳しく制限されている。 大容量記憶装置(メモリ)のデータ・アクセス時間を減らすため、比較的安価 な業界標準ディスクドライブが、数多く用いられている。これらの大容量アレイ を使用する場合には、ディスクドライブの故障を補うために、アレイ中に予備ド ライブを持たさねばならない。 ドライブをアレイ状(列状)に並べておき、他のドライブに記憶された情報に 基づいて、故障したドライブの内容を、置換ドライブの中に再構築することがで きようにしたディスクドライブが知られている。 これを実現する種々の構成は、D.A.パターソン、G.ギブソン、R.H. ケイツによる論文『低価格ディスクの予備アレイの実例(RAID)』(A Case forRed undant Arrays of Inexpensive Disks)、(アメリカ合衆国、カリホルニア大学 、コンピュータ工学部、レポートNo.UCB/CSD 87/391 12/1987)において、詳 細に述べられている。 この文献には、2つのタイプの構成が記述されている。その構成のうち最初の ものは、特に大容量のデータ転送に適しており、『RAID−3』と呼ばれてい る。この構成においては、少なくとも3つのディスクドライブが設けられており 、これらドライブの同じ論理ブロック位置に、情報の連続バイトが記憶される。 1つのドライブは、コントローラーの生成したチェック・バイトを持っており、 ディスクドライブ上のチェック・バイト以外の全てのバイトを、当該チェックバ イトと他のバイトとに基づいて決定できるようにしている。ここでは、上記にて 定義されたように『RAID−3』の語を用いる。 RAID−3構成においては、次のような、少なくとも5個のディスクドライ ブを設けることが好ましい。つまり、4バイトは、最初の4個のドライブに書き 込み、チェック・バイトは、5番目のドライブにおける、他のドライブのデータ バイトと同じ論理ブロック位置に書き込むようにする。こうすることにより、何 れかのドライブが故障しても、記録された各バイトは、他のドライブを読むこと によって再構築可能となる。ディスクドライブに障害が生じても、コンピュータ が動作するというだけでなく、内容が古くなっているおそれのあるバックアップ ・コピーによる復元をしなくとも、故障したディスクドライブの交換もしくは回 復を行うことができる。さらに、一つのドライブに欠陥が生じても、そのディス クドライブが動作を停止している間、それが取り替えられる間、コンピュータの 動作にロスを生じない。RAID−3構成を有するディスクドライブ記憶システ ムが、ヨーロッパ特許公開公報EP-A-0320107に述べられている。その内容を参照 して、記述の一部とする。 記憶システムの二番目のタイプは、とくにマルチユーザー・アプリケーション に適しており、『RAID−5』と呼ばれている。RAID−5構成においては 、各ディスクドライブの4つのセクタにデータを記憶し、1つのセクタにチェッ ク情報を記憶するような少なくとも5個のディスクドライブを設けることが好ま しい。チェック情報は、そのディスクの4個のセクタの中のデータによって導か れるのではなく、他の4個の各ディスクの所定セクタから導かれる。したがって 、各ディスクは、残っているディスクのデータおよびチェック情報から再構築す ることができる。 RAID−5は、単一のディスクドライブと同等の転送機能を有するにもかか わらず、マルチユーザーへのアクセスを許容するので、少なくとも理論上は、効 果的であるように見える。しかしながら、一つのセクタへ情報を書き込もうとす ると、2個のディスクへの書き込みが必要となる。すなわち、情報を一つのディ スクドライブ上の一つのセクタに書き込むとともに、第2のディスクドライブ上 のチェック・セクタにチェック情報を書き込む必要がある。また、チェック・セ クタへの書き込みは、読出修正書込オペレーション(リード・モディファイ・ラ イト・オペレーション)であり、すなわち、まず、既存のデータとチェック・セ クタの読み込みが行われる。なぜなら、書き込まれる新しいデータに基づく正し いチェック情報が生成されてディスクに書き込み可能となるまでに、そのセクタ の既存の内容を知っていなければならないからである。とはいえ、RAID−5 は、RAID−3がサポートできないシステムにおいて、すべてのディスクから の複数のユーザーによる同時読み出しを実現している。 その一方で、RAID−5は、RAID−3によるデータ転送レートを達成し ていない。なぜなら、RAID−3においては、読出および書込のいずれの操作 も、転送する全情報量の四分の一のだけ、5個の各ディスク(5個のディスクを 用いるシステムにおいて)に転送するだけでよいからである。各々の照合を同時 に完了することができるので、特に大容量の転送を行う場合、その処理は、単一 ディスクの読出または書込よりも速い。ディスクドライブの読出または書込に必 要な時間のほとんどは、正しい角度位置にディスクを回転させるため、およびリ ードライト・ヘッドをディスクに対して位置決めするために必要な時間である。 明らかに、これは、4つ全体に対すると同様に、1つのディスクにとっても長い 時間である。しかし、一旦正しく位置決めされると、シーケンシャル情報の大容 量転送は、比較的高速で実現できる。 さらに、ユーザにより要求されるシーケンシャル情報の現在の傾向から見て、 RAID−5は、実際上というよりはむしろ理論的な意味において、複数のユー ザー・アクセスを提供するに留っている。なぜなら、同一ユーザーによるシーケ ンシャル情報の要求には、複数のディスクを順に読み取ることを含む場合もある ので、これによりディスクが占領され、他のユーザが使用できなくなってしまう からである。 さらに、ドライブがRAID−5フォーマットにおいて欠陥を生じた場合には 、コンピュータの機能は著しく低下する。読出時において、必要情報が故障ドラ イブのセクタ上ににある場合、他の4つの全てのディスクを読んで、その情報を 導き出さねばならない。同じように、ドライブにチェックデータや情報データを 書き込む場合には、適切な情報セクタに書き込みが行われる前に、適切なチェッ ク情報が決定されて書き込みが行われる前に、4つのディスクの読取が行わなけ ればならない。 RAID−3のさらなる問題は、各ディスクドライブは、使用状況に応じた最 小容量において、情報の読出・書込をするように製造されている点にある。この 最小容量は、ディスクドライブのフォーマットされたセクタ・サイズであり、通 常、256バイトである。RAID−3フォーマットにおいて、このことは、読 出・書込の際の最小ブロック長が1024バイトとなることを意味する。ディス クドライブの能力の向上により、最小ブロックサイズは、たとえば512バイト というように、大きくなる傾向にある。したがって、RAID−3の最小ブロッ ク長は、4倍の2,048バイトになる。しかしながら、多くのコンピュータの 応用例、たとえばユニックス(バージョン5.3)を使用した応用例等は、最小ブ ロックサイズとして512バイトを要求する。その結果、そのようなシステムに おいては、既知のRAID−3技術を容易に利用することができない。これに対 し、RAID−5においては、最小データブロック・サイズが増加しない。 RAID−5そのマルチユーザー能力により、RAID−3に比較して理論上 の有利性を持っているが;実際には、ドライブ障害が発生した場合のデータ転送 速度と処理継続の点において、RAID−3フォーマットの方が大きな可能性を 与えられている。本発明の目的は、RAID−5ディスク・アレイと同様のマル チユーザー機能あるいはその良好な能力を有するシステムを提供することにある 。発明者は既に、国際出願明細書PCT/GB90/01557で開示したように、RAID− 35というシステムを開発している。このシステムは、本発明と同様のことを提 供するが、RAID−3およびRAID−5としての機能は、あまり良好でない 。このシステムは、次のような認識に立っている。つまり、現代のオペレーティ ング・システムにおいて、データファイルは、ディスクドライブ面への記録の必 然性から、シーケンシャルであることが多く、読出・書込処理は、その必然性か らシーケンシャルもしくは少なくとも一部シーケンシャルであることが多い、と いう認識に立っている。したがって、ディスク記録媒体へのマルチユーザ・アク セスにおいても、各ユーザは、シーケンシャル・データをシーケンシャルに要求 することができる。 RAID−35システムにおいては、シーケンシャル・データが、前もって読 み出され、バッファに記憶されるので、ホストコンピュータがディスク・アレイ から要求データを受け取るまでの遅延時間をかなり小さくすることができる。し たがって、要求データが前回の要求に連続するものである場合には、当該データ はバッファ中にあるので、シークによる遅れが生じない。 したがって、RAID−35システムは、ユーザがシーケンシャル・データを 要求することが予想される応用分野において極めて効果的である。一方、データ 要求がランダムになされる場合には、RAID−35システムは、上記効果を実 現できない。 ホストコンピュータに対して、高速かつ効率的にランダムデータを出力するこ とのできるコンピュータ・メモリ・コントローラを提供することが、本発明の目 的である。 RAID−35構成による動作が可能であり、3次元メモリユニット・アレイ とのインターフェイスを取ることができるコンピュータ・メモリ・コントローラ を提供することが、本発明の目的である。 RAID−35構成による動作が可能であるとともに、ホストコンピュータに 対して高速かつ効率的にランダムデータを出力することのできるコンピュータ・ メモリ・コントローラを提供することが、本発明の目的である。 本発明は、ホストコンピュータとのインターフェイスをとるのためのコンピュ ータ・メモリ・コントローラであって、下記を備えたものを提供する、複数のメ モリ・ユニットとのインターフェイスをとるとともに、そこから読み出した、お よびそこへ読み出したデータを保持するためのバッファ手段;および、前記ホス ト・コンピュータおよび前記メモリ・ユニットへのデータ転送および、からのデ ータ転送を制御するために動作する制御手段;前記バッファ手段は、前記メモリ ・ユニットから読み出されまたは、これに書き込まれるデータを、アドレスでき るように記憶するための複数のバッファ・セグメントを形成するように制御され る;前記制御手段は、前記ホスト・コンピューターからの読出または書込要求の ために、データに対して十分なサイズのバッファ・セグメントを割り当てるよう に動作する;前記制御手段は、さらに、前記ホスト・コンピュータからのデータ 要求に応じて、異なるメモリ・ユニットに記憶されたデータを、同時にシークす るために、前記メモリ・ユニットを制御するように動作する。 本発明は、ホストコンピュータとともに用いる複数のメモリ・ユニットを制御 する方法であって以下のステップを備えたものを提供する、前記メモリユニット 内に記憶されているデータの読出要求を前記ホストコンピューターから繰り返し 受け、データの読み出しに十分なサイズのバッファセグメントを割り当て;およ び前記複数のメモリユニット内のデータを同時にシークする。 本発明は、さらに、ホストコンピュータのためのコンピュータ・メモリ・コン トローラであって、以下を備えたものを提供する、並列に配置された少なくも3 つのメモリ・チャネルとのインターフェースをとるバッファ手段、各メモリ・チ ャネルは、バスによって接続された複数のメモリユニットを備えており、前記各 メモリチャネルのメモリユニットは、独立してアクセスすることができる;メモ リバンクを形成する、前記メモリチャネルのそれぞれのメモリ・ユニット;前記 バッファ手段に接続され、前記ホストコンピュータから入力されたデータを複数 の部分に分割し、よって、前記部分が、メモリバンク内への記憶のための前記 メモリ・チャネルのグループの一つに適用される前に、バッファ・セグメント内 に一時的に記憶されるようにする論理回路;前記論理回路は、さらに、メモリバ ンクの前記メモリユニットの連続する1つのグループから連続的に読み出され、 前記バッファ手段に読み込まれたデータの部分を再結合するように動作する;前 記論理回路は、前記メモリバンクの少なくとも1つの前記メモリユニットにそれ が記憶される前に、前記バッファ手段内に一時的に記憶される前記データからチ ェックバイトまたはバイトのグループを生成するよう動作するパリティー手段を 含んでおり、もし、記憶ユニットの前記グループの一つが故障を起こしていれば 、メモリバンクのメモリユニットの前記グループから読み出された前記データを 再生成させるために用いるように動作する;前記バッファ手段は、メモリ・チャ ネルの数に対応する複数のチャネルに分割され、各チャネルは、バッファ・セグ メントの関連する部分に分割される;前記メモリバンクへのまたは前記メモリバ ンクからのデータおよびチェック・バイトまたはビットのグループの転送を制御 するとともに、前記ホスト・コンピューターからの読出または書込要求のために 、データに対して十分なサイズのバッファ・セグメントを割り当て、さらに、前 記ホスト・コンピュータからのデータ要求に応じて、異なるメモリ・ユニットに 記憶されたデータを、同時にシークするために、前記メモリ・ユニットを制御す る制御手段。 本発明は、さらにまた、コンピュータ・メモリ・システムであって、以下を備 えたものを提供する、並列に配置された少なくとも3つのメモリ・チャネルを有 する2次元アレイに配置された複数のメモリ・ユニット、前記各メモリ・チャネ ルは、バスによって接続された複数のメモリ・ユニットを備え、前記各メモリ・ ユニットは独立してアクセス可能である;メモリ・バンクを形成する前記メモリ ・チャネルの各メモリ・ユニット;および前記メモリ・ユニットとのインターフ ェイスをとり、以下を備えたコントローラ、前記メモリ・チャネルから読み出し た情報を保持するバッファ手段;前記バッファ手段は、前記メモリ・ユニットか ら読み出しまたは書き込んだデータをアドレス可能に記憶するために、複数のバ ッファ・セグメントを形成するように制御され;メモリ・バンク内の前記メモリ ・ユニットのグループの一つから読み出されたバイトまたはビットのグループ を再結合させるため、前記バッファ手段に接続された制御回路;もし、メモリ・ ユニットの前記グループの一つが故障を起こしていれば、前記メモリ・ユニット のグループから読み出した情報を再生成するために、前記メモリ・バンクの前記 記メモリ・ユニットの一つから読み出されたチェックバイトまたはバイトのグル ープを使用するように動作するパリティ手段;および前記ホストコンピューター 、前記記憶ユニットに対する及び前記ホストコンピューター、前記記憶ユニット への、およびこれらからのデータの転送を制御する制御手段であって、そのデー タのために十分なサイズのホスト・コンピュータからの読出または書込要求のた めのバッファセグメントを割り当てるとともに、異なるメモリ・バンクに記憶さ れたデータを同時にシークするように前記メモリ・ユニットを制御する制御手段 。 本発明のシステムは、高速なランダムアクセスを実現するために、RAID− 3とRAID−5を組み合わせて用いているので、便宜上、RAID−53と呼 ぶことができる。RAID−53においては、データが数多くのディスクの間に 分割され、同時に読み出される。したがって、読出時間を減らしながらも、RA ID−5のように、システム中のすべてのディスク・バンクから、複数ユーザに よる同時読出しが可能である。 RAID−53を用いたディスク・アレイ中に記録されたデータに対するアク セス速度を向上させるため、ディスク・バンクは、アドレスを付してセグメント に分割される。つまり、シーケンシャル・バンク上の各セグメントが、シーケン シャル・アドレスを持つように、分割される。これによって、シーケンシャル・ データを、複数のシーケンシャル・バンクの各セグメントに書き込み、複数のメ モリ・バンクにわたって、データを配分して『ストライプ』状にすることを可能 にしている。以下この技術を、『オーバーレイ・バンク・ストライプ(overlay b ank stripping)』と呼ぶ。 ディスク・アレイ上のこのデータ構造は、ホストコンピュータではなく、コン トローラによって制御される。コントローラは、次のようにして、ディスク・バ ンクのセグメントにアドレスを割り当てる。すなわち、データをディスク・アレ イに書き込む際に、複数のバンクにわたってストライプ状に書き込むようにする 。 このようなデータのストライプは、RAID−35にも適用でき、これにより 、異なるバンクからのデータの同時読出や同時書込が可能となる。 メモリ・ユニットとしてはディスクドライブが好ましく、さらに、メモリ・バ ンク毎に5つ、すなわち、チェック情報を記録する1つのディスクと、データを 記録する4つのディスクとによる5つのメモリ・チャネルを設けることが好まし い。現在標準となっているディスクドライブ・インターフェースSCSI−1 ( Small Computer Systems Interface) を使う場合には、8つまでのアドレスに制 限されているので、1つをコントローラに使用して、7つのメモリ・バンクを使 用することができる。SCSI−2を用いる場合には、15個のバンクを使用する ことができる。本発明は、上記のようなインターフェースの使用に限定されるも のではなく、メモリ・バンクの数も任意である。メモリ・バンクの数を多くすれ ば、同時に開始し得るシーク操作の数を増やすことができ、ホストコンピュータ のデータアクセス時間を短くすることができる。 最適な性能を得るためには、メモリ・バンクのディスクドライブは、回転スピ ンドルが同期していることが好ましい。 RAID−3とRAID−5のこの組合せは、同時ランダム・アクセス機能に 関して、5つのスレーブ・バス・ドライブ(slave bus drive)をもつRAID− 5システムの理論最大性能を超える性能をもたらす。さらに、RAID−5シス テムの読出修正書込(Read-Modify-Write)による性能劣化を避けることができる 。速くかつシンプルなRAID−3タイプの読出/書込機能を提供するのである 。 RAID−53システムは、ディスクドライブの『バンク』につき『一つの』 ディスクドライブに障害が発生した状態においても、最大転送速度を維持する。 I/O要求(入出力リクエスト)が頻繁に出ている間、制御手段はメモリ・バ ンクへのホスト・データ要求をキューに蓄えておき、要求されたデータのあるメ モリ・バンクが忙しくない時に、データ・シークと転送を実行することができる 。シークを含んだ命令は、最適化したシーク命令を提供するための最適化をして おくことが好ましい。 書込要求がコントローラによって受信された時、未完了の読出・書込に障害を 与えることなく、メモリ・バンクへのデータ書込を瞬時に行えることが好ましい 。 このことにより、データがバッファ・セグメントに保持されているときに、たと えば電源異常があっても、重要なデータの消失が防止される。 メモリバンクの数をかなり多くした実施例においては、バッファ手段、論理回 路およびパリティ手段を、2次元メモリ・ユニット・アレイとともに同じ数だけ 設けている。この構成において、制御手段は、ホストコンピューターおよび2次 元アレイのレイヤ(layer)により構築される3次元メモリ・ユニット・アレイと のデータ転送を制御するように動作する。 国際出願PCT/GB90/01557においてRAID−35システムのために用いられた ハードウェアは、RAID−53のためにも同じように使用することができる。 したがって、同じハードウェアに対しオプションとしてRAID−35とRAI D−53を提供すること可能であり、あるいは双方を一緒に提供して、ハードウ ェアを共有することも可能である。共有システムにおいて、バッファ手段の最初 の部分は、RAID−53に割り当てられる。残りのバッファメモリは、RAI D−35の使用に割り当てられる。いくつかをRAID−35のために割り当て 、残りをRAID−35に割り当てて、メモリバンクを共有することができる。 RAID−35の動作は、次に述べるとおりである。要求に応じてなされるホ ストコンピュータへのシーケンシャル・データの転送は、まず、バッファ・セグ メントをバッファ手段の割当部分にアドレッシングすることによって制御される 。これにより、要求されたデータがそこに存在するかどうかを確認し、もし存在 していれば当該データをホストコンピュータに送る。要求されたシーケンシャル ・データが、バッファ手段の割当部分のバッファ・セグメントに存在しなければ 、データはメモリ・ユニットから読み出され、ホストコンピュータに与えられる 。ホストコンピュータの要求したデータに対して論理上連続している他のデータ (further data)も、メモリ・ユニットから読み込まれ、当該他のデータは、バッ ファ手段の割当部分中のバッファ・セグメントに書き込まれる。制御手段は、バ ッファ手段の一部分をRAID−35の使用のために割り当てるバッファ・セグ メントのサイズと数を制御する。 RAID−35とRAID−53システムのディスクドライブ配列(アレイ) によれば、ディスクドライブ障害時のための予備を実現することができる。発明 の一実施例においては、コントローラについても予備を提供することができる。 第2のコントローラがアレイのバス上の異なったアドレスに設けられていれば、 主コントローラの障害発生時に、システムをダウンさせることなく、もしくはわ ずかなダウン時間で、補助コントローラを動作させることができる。その後、シ ステムが動作している間に、コントローラを修復し、もしくは、取り替えること ができる。 本発明は、また、ホストコンピュータのためのコンピュータ・メモリ・コント ローラであって、以下を備えたものを提供する、各々が、少なくも3つのメモリ ・チャネルを有する2次元アレイに配置された複数のメモリ・ユニットとのイン ターフェイスをとるための複数のバッファ手段、各メモリ・チャネルは、バスラ インによって接続された複数のメモリユニットを備えており、これにより前記各 メモリ・チャネルのメモリ・ユニットが独立してアクセス可能である;メモリ・ バンクを形成する、前記メモリ・チャネルのそれぞれのメモリ・ユニット;メモ リ・バンク内の前記メモリ・ユニットのグループの一つから読み出されたバイト またはビットのグループを再結合させるとともに、要求データを発生させるため 、前記バッファ・セグメント内に記憶に記憶される、各前記バッファ手段に接続 される複数の論理回路;前記論理回路は、もし、メモリ・ユニットの前記グルー プの一つが故障であれば、メモリ・ユニットの前記グループから読み出されたデ ータを再生成するために、前記メモリ・バンクの前記メモリ・ユニットの一つか ら読み出されたチェック・バイトまたはバイトのグループを使用するよう動作す るパリティ手段を含んでおり;前記バッファ手段は、メモリ・チャネルの数に対 応する複数のチャネルに分割され、各チャネルは、バッファ・セグメントの関連 する部分に分割され;ホストコンピュータからの要求に応じて、複数の前記2次 元メモリ・ユニット・アレイにより構成されるメモリ・ユニットの3次元アレイ から、前記ホストコンピュータへのデータの転送を、以下のように制御するコン トロール手段、まず、前記バッファ・セグメントにアドレスし、要求データがそ の中に含まれているかどうかを確認し、もし含まれていれば、前記データを前記 ホスト・コンピュータに供給し、もし要求データがバッファ・セグメントに含ま れていなければ、前記データをメモリ・ユニットから読み出し、前記データ を前記ホスト・コンピュータに供給し、前記ホストコンピュータから要求された データに対して論理的にシーケンシャルな追加データを、前記メモリ・ユニット から読み出し、前記追加データをバッファ・セグメント内に記憶する;前記コン トロール手段は、さらに、ホスト・コンピュータからのデータ要求に応じて、異 なるメモリ・バンクに記憶されたデータを同時にシークするため前記メモリ・ユ ニットを制御するように動作する;前記コントロール手段は、さらに、前記バッ ファ・セグメントの数およびサイズを制御するために、前記バッファ手段を制御 する。 このRAID−35構成では、記憶容量を増やすために、ディスクドライブを 3次元アレイにしている。 現在、安価なディスクを用いた予備アレイ(redundant array)の最も一般的な ものは、磁気ディスクドライブを利用したものであるが、本発明はこのようなデ ィスクドライブの使用に限定されるものではない。本発明は、一旦データが記憶 されると、データ転送速度に比較してデータのシーク時間が長い記憶装置の使用 に対しても同じように適用できる。そのような媒体は、たとえば、光学コンパク トディスクである。 本発明によるアレイによれば、マルチユーザー・アプリケーションに関する優 れた性能と、高速なデータ転送速度と、いずれか一つの(バンクごとに)ドライ ブで障害が発生した時の安全性の提供と共に、大容量の情報記憶を実現できる。 このようなアレイの平均故障間隔(MTBF)は(これは、失われたデータの復元不 能をもたらす(バンクごとに)2つのドライブ障害が同時に生じる平均時間を意 味している)、現在入手可能な数千時間のMTBFを有するディスクドライブを用い て、数千年であると評価されている。 本発明の実施例を、添付の図面を参照しつつ説明する。添付図面において: 図1は、本発明の一実施例によるディスク・アレイ・システムのコントローラ構 造のブロックダイヤグラムである。 図2は、データを分割するハードウェアの動作を示す。 図3は、リード/ライトのデータセル・マトリクスを示す。 図4は、書込データ・セルを示す。 図5は、読出データ・セルを示す。 図6は、RAID−35動作の書込処理におけるソフトウェア・ステップを示す フローチャートである。 図7は、RAID−35動作の読出処理におけるソフトウェア・ステップを示す フローチャートである。 図8および図9は、RAID−35動作における、先行読出(read ahead)と後置 書込(write behind)のソフトウエア・ステップを示すフローチャートである。 図10は、RAID−35動作において、中断した転送の再開処理に関するソフ トウェア・ステップを示すフローチャートである。 図11は、RAID−35動作において、セグメントのクリア処理に関するソフ トウェア・ステップを示すフローチャートである。 図12と図13は、RAID−35動作において、入出力制御に関するステップ を示すフローチャートである。 図14と図15は、RAID−53動作の間、図1の80376中央制御装置によっ て実行されるソフトウェア・ステップを示すフローチャートである。 図16から図19は、RAID-S3動作の間、図1のスレーブ・バスコントローラに よって実行されるソフトウェア・ステップを示すフローチャートである。 図20は、RAID−53動作におけるアクセスポイントを示す本発明の一実施 例のブロックダイヤグラムである。 図21は、本発明の一実施例による3次元メモリアレイのブロックダイヤグラム を示す。 図22は、本発明の一実施例による予備コントローラの使用を示す。 図23は、オーバーレイ・バンク・ストライプの技術を用いたアレイの範囲内に おける、セグメント中のデータの分配を示す。 図1に、RAID−35およびRAID−53のディスク・アレイ・コントロ ーラの構成を示し、まず、両システムを一緒に検討する。 図面の図1において、コンピュータ・メモリ・コントローラ10の内部インタ ーフェースは、ESPデータバス・インターフェースと呼ばれ、ホストコンピュ ータとのインターフェースは、SCSIインターフェースと呼ばれている。 これらは、インターフェース12の中に設けられる。SCSIバスインターフェ ースは、ホストコンピュータ(図示せず)と通信を行い、ESPインターフェー スは、コンピュータ・メモリ・コントローラ10のホスト・インターフェース部 11の中にある高性能ダイレクト・メモリ・アクセス(DMA)ユニット14と 通信を行う。ESPインターフェースは、16ビット(1ワード)である。 ホスト・インターフェース部は、インテル80376マイクロ・プロセッサのよう な適当なマイクロ・プロセッサによる中央制御装置22を有する中央バッファ管 理(CBM)部20およびデータ分割・パリティ制御(DSPC)論理回路24 と通信を行う。これらは、ホストコンピュータから受けた情報を4つのチャネル に分割し、5つ目のチャネルのためのパリティ情報を生成する機能を実行する。 DSPC24は、最初の4つのチャネルの情報を結合し、パリティチャネルに対 するチェックを行った後、結合した情報をホストコンピュータに伝送する。DS PC24は、何れか一つのチャネル(一つでなければならない)の情報を、他の 4つののチャネルからの情報に基づいて再構築することができる。 DSPC24は、5つのチャネルA〜Eに分割された中央バッファ26に接続 される。ここで、各バッファは、複数のバッファ・セグメント28に分割される 。各中央バッファ・チャネル26,A〜26,Eは、応用例における要求に従っ て、たとえば、1/2メガバイトのデータまで記憶できる能力を持っている。R AID−35のためには、各セグメントを、たとえば128キロバイト程度に小 さくして、16個までのセグメントをバッファ中に形成できるようにする。RA ID−53のためには、各セグメントを、ホストコンピュータから要求される最 小のデータと同程度に小さくする。 中央バッファ26は、メモリ・コントローラ10のスレーブ・バスインターフ ェース(SBI)部30中の5つのスレーブ・バスコントローラ33との通信を 行う。 各スレーブ・バスコントローラ32,A〜32,Eは、SCSI-1バス44,A〜4 4,Eに沿った最高7つのディスクドライブ42,0〜42,6との通信を行う。 ドライブ42,0,A〜42,0,Eがバンクの5つのディスクドライブを形成する ように、ドライブ42,1,A〜42,1,Eからドライブ42,6,A〜42,6,E までのドライブも同じようにバンクを形成する。5個のドライブの7つのバンク は、それぞれが1つのディスクドライブを構成し、各々個別に独立してアクセス 可能である。これは、8つのの装置アドレスが可能なSCSI−1バスの使用に より、実現できる。一つのアドレスが、スレーブ・バスコントローラ32に与え られ、残り7つのアドレスが7個のディスクドライブのために用意されている。 したがって、RAID−35システムにおいては、各チャネルの記憶容量が7倍 に増加し、スレーブ・バスコントローラ32は、チャネル中の任意の一つのディ スク42に対し、独立してアクセスすることができる。ディスクドライブのバン クを1以上使用することは、RAID−53動作の効果を得るために不可欠なこ とである。 ディスク・ドライブのバンクのこの構成は、図1に示された構成に適用できる だけでなく、RAID−3構成にも適用できる。あるバンクのディスクドライブ の中に記憶された情報は、実質的に、他のバンクのディスクドライブからアクセ スされた情報と同時にアクセスすることができる。したがって、この構成によれ ば、ディスクドライブのアレイに記憶されたデータのアクセス速度が向上する。 ホストコンピュータとの関係において、その記憶装置は、固有のアドレス番号 により識別される多くのセクタから構成されている。これらのセクタが種々のデ ィスクドライブ上のどこに、あるいはどのように記憶されているかは、ホストコ ンピュータ40の関知するところではない。ホストコンピュータは、必要なデー タ・セクタのアドレスを覚えているにすぎない。もちろん、アドレス自体は、記 憶装置に記憶されたデータの一部を構成する。 一方、中央制御装置22の機能の1つとして、能率的に種々のディスクドライ ブにデータを書き込む。さらに各セクタは、ホストに関する限り、既知のRAI D−3フォーマットの4つのディスクドライブの間に分割される。RAID−3 5動作において、中央制御装置22は、ホストコンピュータにより渡された情報 の書込セクタを準備する。その際、与えられたディスクドライブ上のセクタが、 直前のセクタから論理的に連続する情報を含むようにする。 最適な性能を得るため、バンクのディスクドライブは、その回転軸が互いに同 期していることが好ましい。RAID−35における動作 ホストコンピュータがデータを要求すると、中央制御装置22がこの読取要求 を受けて、スレーブ・バスインターフェース(SBI)コントローラ32にその 要求を渡す。スレーブ・バスコントローラ32は、ディスクバンク40を読んで 、該当データをディスクの該当バンクから選択する。DSPC回路24は、要求 されたデータを受け、それがチャネルEのチェック・データに対して正しいかを チェックする。 パリティーチェックによってエラーが見つかれば、コントローラは、自動的に 、データの再読取りを試みる。それでもなおパリティーエラーが検出されるなら 、コントローラはエラーである旨をホストコンピュータに返す。不良のドライブ があるならば、これは切り離され、システムは、不良ドライブが取り替えられ、 情報が復元されるまで、正常な4つのチャネルを使用して、同様の方法でかつ機 能を損なうことなく、動作を続けるように準備する。 しかし、データにエラーがないと推定されれば、中央制御装置22は、まず、 SCSI−1インターフェース12へ情報を転送することによって、データ読出 要求に応答する。しかしながら、中央制御装置22は、要求された情報に対し論 理的に連続している情報も読み出すように指示する。これは、『先読み情報』と 呼ばれる。中央制御装置22によってデータ・バッファ・セグメント28のいず れか1つに割り当てられた能力における先読み情報は、一つのバッファ・セグメ ント28の中に書き込まれる。 ホストコンピュータが、さらに情報の要求を行う場合には、要求された情報が 前に要求された情報に連続している場合がある。したがって、中央制御装置22 は、読出要求を受けると、必要情報がすでにバッファにあるかどうかを、まずそ れらのバッファ・セグメント28に問い合わせる。情報がそこにあれば、中央制 御装置22は、ディスクドライブを読むことなく、直ちにユーザの要求に応答す ることができる。これは、明らかに極めて高速な処理であって、シーク遅れを避 けることができる。 上記において、必要情報がバッファ中になければ、ディスクドライブからの読 み出しを新たに行わねばならない。要求された情報およびシーケンシャル先読み 情報は、前回とは異なる1つのバッファ・セグメントに与えられる。すべてのバ ッファ・セグメントが満たされるまで、上記の処理が繰り返され、システムは、 セグメントが常に満たされているように維持する。もちろん、すべてのセグメン トが満たされているにも拘らず、まだディスクドライブから読み出さねばならな い時点が来る。この時点において、バッファ・セグメントは、中央制御装置22 によって、最も頻繁に参照されるバッファ・セグメント・バッファ28を保持し 、最も使用頻度の少ないものを捨てるように再割り当てされる。。 ホストコンピュータの通常動作の間、中央制御装置22は、利用可能なセグメ ントの最大数を限度として、少くとも、アプリケーションプログラムと同じ数の バッファ・セグメント28を割り当てる。最も効率的な方法でディスクドライブ ・シーク・コマンドを命じている中央制御装置22によって、各バッファ・セグ メントは、満盃にしておかれる。バッファ・セグメントが、ホスト要求によって 50%の残量となった時、または現状のバッファ・セグメント28からでは、ホス ト要求を満足できなくなった時、上記シーク命令が優先される。したがって、す べてのバッファ・セグメントは、先読みデータによって、可能な限り満盃にして おかれる。 ディスクドライブへの書込み情報についても同様の処理が行われる。書込み指 令が中央制御装置22によって受けられると、情報はDSPC回路24によって 分割され、チェック情報が生成される。その結果得られた5つのデータ(compone nts)は、割当書込みバッファ・セグメントに置かれる。書込みバッファ・セグメ ントの数は予め選択しておいてもよく、必要な時に動的に割り当ててもよい。い ずれにしても、その情報がディスクに書かれるまで、書込みバッファ・セグメン トは、再割り当てによる消去から保護される。ディスクへの実際の書込みは、セ グメントが満盃になり、もはやシステムが待てなくなった時や、システムが動作 しておらず、読出動作を実行していない時に限り、ホストコンピュータからの指 令の下に実行されるだけである。 結果的に、ホストコンピュータに関する限り、同時に書込みが行われているよ うに見える。これは、多くの時間を費やすディスクドライブへの実際の書込みの 機会を待っている間、中央制御装置22は、コマンドを非常に速く扱って、バッ ファへの書込を行うことができるからである。 しかし、このことは、電源故障が発生した際、ユーザがディスク上に記録しよ うとする書き込みが、ランダム・アクセス・バッファの暫定位置にあることによ って、電源故障により失われることを意味するものではない。その場合には、バ ックアップ・コピーから復旧するディスクドライブ・システムが必要である。 また、ハードウェア・スイッチを、設け、ディスクへの書き込みの前に、書込 情報を、一時的にバッファ・セグメントのみに書き込むことにより、すべての書 込み指令が直ちに実行されるようにしてもよい。これにより、メモリ・システム によって実際に書き込まれていないにもかかわらず、ディスクに書き込まれたと 考えられていたデータが、電力不足によって消失するおそれがなくなる。しかし これでも、ユーザが書込みコマンドを送った直後に、電力不足が発生すると、情 報が消失してしまうという例外が残るが、この場合、かかる問題は、ユーザも認 識していると思われる。この代替実施例を利用すれば、コンピュータの性能に影 響を及ぼすことは当然である。RAID−53における動作 ホストコンピュータがデータ要求すると、その要求は受信され、バッファ・セ グメントがそのデータのために割り当てられる。読出要求は、その要求をスレー ブ・バスコントローラ32に渡す中央制御装置22によって受けられる。スレー ブ・バスコントローラ32は、ディスクバンク40を読み、該当データをディス クの該当バンクから選択する。DSPC回路24は、要求されたデータを受け、 それがチャネルEのチェック・データに対して正しいかをチェックする。 パリティーチェックによってエラーが発見された場合、コントローラは、自動 的に、データの読出を再試行する。それでもなお、パリティエラーが発見されれ ば、コントローラはエラーである旨をホストコンピュータに返す。不良のドライ ブがあるならば、これは切り離され、システムは、不良ドライブが取り替えられ 、情報が復元されるまで、正常な4つのチャネルを使用して、同様の方法でかつ 機能を損なうことなく、動作を続けるように準備する。 しかし、データにエラーがないと推定されれば、中央制御装置22は、まず、 SCSI−1インターフェース12へ情報を転送することによって、データ読出 要求に応答する。その後、ディスク・バンクは、他の読出要求を受けることがで き、中央制御装置22のコマンドによりシーク動作を始めることができる。 バッファ・セグメントのサイズは、ホストコンピュータによって要求されるデ ータのサイズによって決定する。ディスクドライブからの、データの先読み(rea d ahead)は行われない。 したがって、中央制御装置22は、読出要求を受けて、どのディスクバンクに データが記録されているかを決定することができるディスク・バンクが動作して いなければ、データを捜すように(シークするように)ディスク・バンクに指示 することができる。同時に、他の複数のディスク・バンクが、先にホストコンピ ュータによって要求されたデータを捜していてもよく、一旦、この要求があれば 、中央制御装置22は、ディスク・バンクを読むとともに、SCSI−1インタ ーフェイス12にデータを送る再構築用のバッファ・セグメントにデータを渡す ことができる。 図14に、7つのディスク・バンクに対する7つのアクセス・ポイントを示す 。各バンクの各ディスク・ドライブは固有のバス(SCSI)アドレスを持って おり、コンピュータ・メモリ・コントローラ100によって独立にアクセスでき る。したがって、最高7つまでのディスク・バンクが、ホストコンピュータによ って要求されたデータを捜すために同時に動作することができる。ディスク・バ ンクがシークを行っている間、それはSCSI−1インターフェースから切り離 される。データが捜し出されると、データの読み出しが可能であることが中央制 御装置22に示される。 新たな読出要求を受けた際、ディスク・バンクが忙しければ、中央制御装置2 2はこれらの要求をキューに入れることができる。最適なシーク命令を与えるた め、キューに入れられた読出要求は、ホストコンピュータがコマンドを出した順 序と同じ順序で、実行される必要はない。 読出要求のキューイングは、スレーブ・バスコントローラ32において実行す ることもできる。書込み動作においても同様の操作が行われる。しかしながら、 中央制御装置22は、リード/ライトコマンドを未処理にしてキューに入れるよ りも、着信データを『直ちに』ディスクドライブの必要バンクに書くことを『強 制する』能力を備えている。これにより、コンピュータによってディスクに書き 込まれるべきデータが、たとえば電源故障の際に、バッファ・メモリ26に記憶 されディスクに記録すべきデータが失われないように書き込まれる。RAID−35およびRAID−53におけるハードウエアの詳細な動作 RAID−35およびRAID−53における、ハードウェアデータ分割、パ リティ生成およびチェック・ロジック、およびバッファ・インターフェース・ロ ジックの詳細な動作を、図2から図5を参照して説明する。 図2において、ホストシステム・ハードウェア・インターフェースに対して内 部インターフェイスをとるコントローラは、16ビット幅(1ワード)である。 これは、ESPデータバスである。シーケンシャルなホスト・データの4ワード に対応して、64ビット幅に切り取られた内部バッファ・データが形成される。 同時に、付加ワードすなわち16ビットのパリティ・データが、コントローラに よって生成される;ここで、一つのパリティービットは、4つのホスト・データ ビットに対応する。コントローラの中央データバスの内部幅は、80ビットであ る。これは、64ビットのホスト・データと16ビットのパリティ・データによ って構成される。 データ分割およびパリティ・ロジック24は、コントローラのカスタマイズ設 計されたASICS(特定用途向けIC)により、16個のリード/ライト・デ ータセルに分割される。これらデータセルのマトリックスを、図3に示す。これ らのデータセルの各々は、4つのESP16ビット・データワードの完全なシー ケンスのために、ESPバスからの同一のデータビットを扱う。すなわち、図2 において、各データセルは、各ESPバス・ワード0,1,2,3からの同じビ ット扱っている。同時に、各データセルは、これらの4つの16ビットESPバ ス・データワードのための、関連パリティービットを生成し/読み込む。 説明の都合上、第1データビット0(DB0)についてのみ述べる。データビ ットDB1〜DB15については、同じ動作、同じ説明となる。 4つの基本動作が実行される、すなわち 1.ホストデータの書き込み 2.ホストへのデータの読み取り 3.ホストの読出動作中の「一欠陥チャネル」データの再生。 4.欠陥ディスクドライブ・ユニットへのデータの再構築ディスクドライブ・アレイへのホストデータの書き込み 図4において、各ホスト16ビットワードからの対応するデータビットが、E SPデータバスに受信されるように、これらの4ビットの各々は、一時的に、装 置G38〜G41の中に記録/ラッチされる。各ビットがESPバスに現れるよ うに、それは、2つのセレクト・ラインにより制御されるマルチプレクサを通し て、Dタイプ・ラッチG33〜G36に向けて、G33から順に送られる。この 最初の動作の完了により、16データセル全部の4つのホスト16ビットワード (64データビット)が、ゲートG38〜G41に記憶される。4つのDB0デ ータビットを、DB0-A〜DB0-Dと呼ぶ。 書込動作中、RMW(バッファ読出修正書込(buffer read modify write))制 御信号が、装置G38〜G43の全てのセレクト入力Aにセットされる。この状 況においては、再構築ラインは使用されない(留意する必要なし)。 各ビットがデータセルに同期する(clocked)時、対応するパリティ・データビ ットがG31、G32とG37によって生成される。受け取った4つのESPバ ス・ホスト・データ・ワードのそれぞれから得られる4つのビット0の列の最後 までくると、パリティ・ビットが生成され装置G42に記録される。これは、次 に述べるように実行される。最初のビット0(DB0-A)が信号DB0に現われた 時、INITラインをハイ/真にし、ゲート31からの出力をロー/オフにする 。DB0に与えられた値は、ゲート32の出力に現われ、そして正確なタイミン グでDタイプラッチG37をクロックする。この時、DB0の値がG37の出力 Qに現われる。INIT信号がロー/オフにされ、次に送られてくるDB0の3 つのデータビットのために、データがG31を通過するようにする。ゲートG3 7の出力に記憶されたDB0-Aの値が、ゲ−ト31の出力に現われ、そして第2 のDB0ビット(DB0-B)がDB0信号に現われると、これら2つのビットの 排他的論理和の値が、ゲート32の出力に現われる。適切なタイミングで、この 新たな値は、装置G37をクロックする。このクロックサイクルが終了すると、 G37の出力Qの結果は、DB0-AとDB0-Bとの排他的論理和となっている。こ の値は、装置G42に記憶される。この動作は、残りの2つのDB0ビット(D B0-CとDB0-D)が信号DB0に現われた時にも続けて行われる。この動作が終 了すると、全ビットDB0-A〜DB0-Dの排他的論理和の合計が装置42に記憶さ れることとなり、同時にビットDB0-A〜DB0-Dが、それぞれ装置G38〜G4 1に記憶される。 バッファ・タイミングと同期処理を保護するため、DB0-A〜DB0-Dの排他的 論理和(XOR)の合計値は、このようにして生成される。 この5つの出力DB0-A〜DB0-Eは、4つのホストデータワードの全てのデー タビット0〜15について生成される。全80ビットは、中央バッファ・メモリ に記憶される(DRAM)。上記の全処理は、連続する各4つのホスト・データ ・ワード(8ホスト・データ・バイト)について繰り返される。 スレーブ・ディスクドライブ・データの各『セクタ』は、中央バッファに構築 されるので、ディスク・ドライブの同じバンクとなるようにスレーブ・ディスク ドライブ(チャネルA〜チャネルE)に書き込まれる。 欠陥スレーブ・チャネルもしくはディスク・ドライブが存在すると、コントロ ーラは、そのドライブ・データをマスクし、当該チャネル/ディスク・ドライブ にデータを書き込まないようにする。しかしながら、データは、通常どおり中央 バッファに構築される。ホスト・システムへのアレイ・ディスクドライブ・データの読み出し 図5において、ホスト要求に応じて、ディスクアレイからデータが読み出され 、中央バッファメモリ26に置かれる。書込動作と反対の処理により、80ビッ トの中央バッファデータが、各ビット(4データビットおよび1パリティビット )のための装置G10〜G14にロードされる。ここでも、DB0についてのみ 考察する。得られた5ビットは、DB0-A〜DB0-Eである。全ての読み取り動作 は、新たなパリティビットを生成し、これをスレーブ・ディスクドライブから読 み出 したビットと比較することにより、合計パリティでチェックされる。 まず、欠陥スレーブ・ディスクドライブがなく、アレイが完全に機能している 場合について考察する。この場合には、全てのマスクビット(マスクA〜マスク E)がロー/偽とされ、中央バッファ26からの全てのビットが、入力『A』を とおって、装置G10〜G14の出力に現われる。また、全データビットは、入 力『A』をとおって、装置G6〜G9の出力に現われる。中央バッファへの読み 出し動作の後、4つのデータビットが装置G6〜G9の出力に同時に現われる。 書込動作と反対の処理をするように、全データビットDB0-A〜DB0-Dが、2つ のセレクトラインによて制御されるマルチプレクサを介して、ESPデータバス 上に再構築される。データビットが中央バッファ26から読み出された時、パリ ティ・データビットがエクスクルーシブORゲートG4によって再生成され、ゲ ートG3において、装置G14にスレーブ・ディスクドライブから読み出された パリティデータと比較される。異なっていることが検出されれば、NMI『マス ク不能な停止(non-maskable interrupt)』が、ゲートG3を介して、マスタ処理 装置に生成される。全ての読取動作は終了され、コントローラは自動的に再読取 を実行する。 ゲートG5は、新たなパリティビット生成により得られたパリティビットDB 0-Eの結果を出力しない。ゲートG1は、スレーブ・ディスクドライブのいずれ かが故障し、マスクビットがハイ/真にセットされた場合、NMI動作を抑制す る。また、何れかのチャネルが故障すると、ゲートG5と連携するゲートG1は 、読み出したパリティビットDB0-Eを、再生成処理において、ゲートG4で用 いることを許可する。ホスト読出動作中に生じた『1つの故障チャネル』データの再生成 図5において、1つの故障ディスクドライブ/チャネルは、コントローラ・ソ フトウエアによって、ハイ/真にセットされるマスクビットを有している。故障 したチャネル/ドライブに関連するゲートG6〜G9およびG10〜G14は、 その『A』入力ではなく『B』入力によって決まる出力を有している。また、G 1は全てのNMIの発生を阻止し、ゲートG5とともにパリティビットDB0-E をゲートG4に用いることを許容する。この状況において、G10〜G14の4 つの有効なビットは、ゲートG4において、『失われた』データを『再生成』す る。そして、ゲートG4の出力とともに、ゲートG6〜G9の『B』入力を介し て、正しいESPデータバス・ビットDB0を供給する。 たとえば、チャネル2のディスクドライブが故障し、マスクビットmasc− cがハイ/真にされた場合について考えてみる。ゲートG12の出力はローとな り、ゲートG4の出力は出ない。また、ゲートG1の出力がロウ/偽になり、N MIを抑制する。そして、信号DB0-EをゲートG5からゲートG4に与えるこ とを許可する。ゲート4は、全ての正しい入力を受け、これにより失われたデー タを再生成し、入力『B』を介して、装置G8の出力に供給する。適切なタイミ ングで、このビットは、マルチプレクサを介して、DB0に供給される。故障ディスクドライブのデータの再構築 図4および5において、データを再構築するためには、メモリ・コントローラ は、まず、4つのディスクドライブからデータを読み出し、失われたドライブ・ データを再生成し、最後に、故障ディスクドライブが新らしいディスクドライブ と交換された後、そのデータを書き込まねばならない。 図5および上記の例『ホスト読出動作中に生じた1つの故障チャネルデータの 再生成』を参照して、再構築の状態においては、ゲートG6〜G9の出力は、E SPデータバスに供給されない。しかしながら、ゲートG4の出力に再生成され たデータは、図4の書込データセルのゲートG38〜G42の入力『B』に供給 される。再構築の状態では、RMW信号はハイ/真にセットされ、装置G38〜 G42の出力は、再構築信号の再構築データの値によって決定される。 中央バッファメモリ26の全てのチャネルは、そのデータとして再生成データ を持つようにセットされる。ただし、ソフトウエア制御により、1つの再生チャ ネルデータのみが、新しいディスクドライブに書き込まれる。故障チャネル/ディスクドライブの検出 故障チャネル/スレーブ・ディスクドライブの検出は、以下の3つの基準にし たがって行われる: 1.マスタ80376プロセッサは、『プロセッサ間(interprocessor)』コマン ド・プロトコル故障を引き起こす80186チャネル(アレイコントローラ回路 )故障を検出する。 2.80186プロセッサは、たとえば、SCSIバス・プロトコル違反等のデ ィスクドライブの問題を検出する。 3.80186プロセッサは、SCSIバスのハードウエア・エラーを検出する 。そのSCSIバス上の1つのディスクドライブが完全なチャネル故障状態であ る。 故障状態の検出後、チャネル/ドライブ『マスク』機能が、マスタ80376 マイクロ・プロセッサによって実行される。 故障状態において、マスクされたチャネル/ドライブは、80186チャネル ・プロセッサによる読み出し、書き込みがされない。RAID−35動作のためのソフトウエアの動作 図6〜図13は、中央制御装置22によって動作するソフトウエアの動作を示 すダイアグラムである。 図6は、ディスクドライブのバンクにデータ書込を行う部分のステップを示し ている。始めは、ソフトウエアは、『バックグランド』モードで動作しており、 指示を待っている。データを送り出せという、ホストからの指示を受けると、こ れが現在のセグメント中にシーケンシャルに並べられているかどうかを判断する 。データがシーケンシャルであれば、このデータは、セグメントの中にシーケン シャルデータを形成して記録されている。バッファ・セグメントにシーケンシャ ルなデータがなければ、新たなセグメントを開き(図8の後書き(write behind) 処理)、ホストからのデータを受け、あるいは通過バッファにデータを受け入れ 、セグメントへの書込準備完了をキューに入れる。新しいセグメントのための余 裕が内場合には、長い時間使用されていないセグメントが捜し出される。そのよ うなセグメントがない場合には、ホスト書込命令は、保留要求リストに入れられ る。セグメントが使用可能であれば、それが書込セグメントであるか読出セグメ ントであるかを判断する。書込セグメントであって、それが空いていれば、再割 り当 てを行う。空いていなければ、このセグメントを、再割り当ての対象から除外す る。セグメントが、読出セグメントであれば、このセグメントを再割り当てして 、ホストデータを受入れるために開く。 後書き処理を図8に示す。空にする必要のある書込セグメントが開かれた場合 、書込要求は、データを有する開かれた各セグメントのためのI/Oハンドラー (I/O handler)のためにキューに入れられる。 図7は、読出動作の部分のステップを示すものである。始めは、コントローラ は、『バックグランド』モードである。ホストコンピュータからのデータ要求を 受けた時、データ要求の開始が読出セグメントにあれば、データを、中央バッフ ァ26からホストコンピュータに転送することができる。データが中央バッファ 26にない場合、前読み情報(read ahead information)が許されているか否かを 確認する。許されていなければ、読出要求をキューに入れる。データが先読みす べきものであれば、新しいセグメントのための余裕があるかどうかを判断する。 もしあれば、新しいセグメントを開き、ドライブからバッファ・セグメントにデ ータを読み込んで、ホストコンピュータに転送する。新しいセグメントのための 余裕がなければ、最後にアクセスされてから最も長い時間の経過しているセグメ ントを見つける。そして、このセグメントを再割り当てし、ディスク・ドライブ からのデータを受入れるために開く。 バッファ・セグメント28を満盃の状態に保つため、図9に示す先読み処理が 行われる。データをリフレッシュする必要のある読出セグメントがあるかどうか を判断する。そのようなセグメントがあれば、読出要求は、セグメントのための I/Oハンドラーのためにキューに入れられる。 図10は、保留した転送を再開する部分のソフトウエア・ステップを示すもの である。まず最初に、保留にしたホスト書込要求のリストがあるか否かを判断す る。もしあれば、保留ホスト書込要求のためにセグメントを再割り当てする余裕 かあるか否かを判断する。ホスト転送のための新しいセグメントを開き、最も長 く保留にされていたホスト要求を見い出し、ホストコンピュータからのデータを バッファ・セグメントに受け入れる。 図11は、中央バッファ26のセグメントを消去(clean up)するため、ソフト ウエアによって実行される『管理(housekeeping)』の方法を示すものである。バ ッファ・セグメントを消去すべき時であるかを判断する。最後のアクセス時刻か らの時間が、『老人リミット(geriatric limit)』と呼ばれる予め定めた時間よ り長くなっている全ての読出セグメントを見つけ出し、再割り当てをする。また 、書込セグメントについてもそのようなものがあるか否かを判断し、もしあれば 書込動作を終了(tidied up)する。 図12は、入/出力ハンドラーの動作を示すものであり、図13は、入/出力 サブシステムの動作を示すものである。 バッファ26を可能な限りホストコンピュータの要求するデータで満盃にする ため、これら全ての処理は、中央制御装置22(80376)によって動作する ソフトウエアにより実行され、バッファ・セグメントのデータ転送を効率的に制 御し管理している。RAID−53のためのソフトウエアの動作 図14〜19は、RAID−53動作において、スレーブ・コントローラ32 と中央制御装置22によって実行されるソフトウエアの動作を示すダイアグラム である。 図14は、SCSIターゲットとして選択された時の、中央制御装置22によ って実現されるステップを示すものである。選択されると、開始機(initiator) (すなわちホストコンピュータ)からのコマンドをデコードし、構文チェックを 行う。故障を検出すると、チェック・コマンド状態によりコマンドを停止し、コ ントローラは、バックグランド処理に戻る。構文チェックによりエラーが示され なければ、キュー位置を割り当てるための、キュー・タグ(queue tag)メッセー ジを受信したかどうかを判断する。受信しておらず、コマンドがすでに動作して いる場合には、ビジー状態(busy status)を生成し、コントローラはバックグラ ンド処理に戻る。コマンドがまだ動作していない場合、またはキュー・タグ・メ ッセージを受信している場合には、コマンドがデータを要求しているか否かを判 断する。データが要求されている場合には、バッファセグメントをデータのため に再割り当てし、コマンドがデータ書込である場合には、割り 当てられたバッファ・セグメントに、開始機からデータを受信する。使用可能な スペースがない場合には、キュー満盃状態を生成し、コントローラはバックグラ ンド処理に戻る。コマンドがデータ読出である場合や、コマンドがデータ書込で あって、開始機から、割り当てられたバッファにデータを受け取った場合には、 コマンド・コントロール・ブロックを再割り当てする。このためのスペースがな い場合には、キュー満盃状態を生成し、コントローラは、バックグランド処理に 戻る。コマンド・コントロール・ブロックを再割り当てすることができた場合に は、スレーブ・バス・コントローラ32に対し(1つの80186プロセッサ) 適切なコマンドを発生し、コマンド・コントロール・タグポインタをタグとして 送る。その後、切断メッセージを開始機に送り、コントローラはバックグランド 処理に戻る。 図15において、このダイアグラムは、スレーブ・バスコントローラがコマン ドに応じる際の、中央制御装置中のソフトウエアの動作を示している。応答可能 割込み(response available interrupt)が生成されると、スレーブ・バスコント ローラからデータを読み出すことができる。応答情報が、デュアル・ポートRA M(DPRAM)から読み出され、この応答からのタグが、正しいコマンド・コントロ ール・ブロックを捜すために用いられる。スレーブ・バスコントローラからの応 答を受けたことは、コマンドコントロールブロックの完了フラグに記録される。 チャネル中の全てのスレーブ・バスコントローラが応答したか否か、およびコマ ンド全体のタイムアウト時間が経過していないかどうかを判断する。コマンド全 体のタイムアウト時間が経過していなければ、中央制御装置は、バックグランド 処理に戻り、応答しなかったチャネルが応答可能となった時、当該チャネルを読 む。コマンド全体のタイムアウト時間が経過していれば、チャネル故障を記録す る。その後、コマンドが完了できるかどうかを判断する。コマンドが、完了でき なければ、重大なエラーがあった旨を報告し、プロセッサはバックグランド処理 に戻る。コマンドが完了できれる場合や、全てのチャネルから応答があった場合 には、データ転送を要求するコマンドが完了しているかどうかを判断する。完了 していなければ、コマンドを与えた開始機を再選択し、論理ユニット番号(LUN) の確認を送り、タグ・メッセージをキューに入れる。その後、中央制御装置は、 バックグランド処理に戻って、良好な状況になった時の割込みを待ち、その後、 バックグランドモードに戻る。 データ転送を要求するコマンドが完了していれば、アクセスされているディス クのバンクに故障ディスクがあるかどうかを判断する。もし、そうであれば、適 切なチャネルが、失われたデータを再構築するためにマスクされる。コマンドを 与える開始機は、再選択され、LUN確認を送り、タグメッセージを待ち行列に 登録する(キューに登録する)。中央プロセッサ (central processor)は、バス ライン・フェーズ(段階)のデータが要求され、データが転送されると、割り込 みを受けるまで、バックグランド処理に進む。中央プロセッサは、その後、バッ クグランド処理に復帰し、良好な状態が回復した際の割り込みを待つ。 図16a及び16bは、中央制御装置からのコマンドを受けて動作するスレー ブ・バスコントローラによって実行されるソフトウェアの動作を表わしている。 スレーブ・バス・コントローラが、中央制御装置からのコマンドを受けると、コ マンドがDPRAMから読み出される。このコマンドは、デコードされ、構文チ ェックがなされて、もし欠陥があれば除去される。そうでなければ、コマンドが データ読出または書込コマンドのいずれであるかが決定される。もし、そうでな ければ、コマンドは、記憶バッファを要求しているかを決定するために分析され 、もし、そうならば、バッファが割り当てられる。もし、バッファに空きがなけ れば、データの読み出しのを続行できるように、処理が保留される。この処理は 、空きが出来た時に再開される。次に、入力/出力キュー・エレメントが、コマ ンド要求に基づいて、構成されセットされる。このキュー・エレメントは、次に 入力/出力キュー内に入れられ、目的ターゲットリスト上にリンクされる。 もし、コマンドがデータ読み出し又は書込み要求であれば、どのターゲットを 用いるかが決定される。アレイ・ブロック・アドレスが、ターゲット・ブロック ・アドレスに変換される。次に、受けたデータが転用(又はダンプ)すべきもの であるか、または読出修正書込(read modify write)が要求されているかが決定 される。もし、コマンドが読出要求であれば、転送がバンク限界を超えているか 否かが決定される。もし、超えていなければ、入力/出力キュー・エレメントが 、単一読み出しのために構成され、セットされる。もし、転送がバンク限界を 超えていれば、入力/出力リンク・ブロックが割り当てられ、このコマンドに対 して2つの読み出しを実行すべきであることが記憶される。もし、空きのないこ とが検出されれば、バックグランド処理を継続し、空きができた時に再開するこ とができるように、処理が保留にされる。そうでない場合、入力/出力キュー・ エレメントが、ターゲットとキュー要求の読み出しのために、構築されセットさ れる。また、入力/出力キューが、次のターゲット(target puls one)を読み出 すために、構築されてセットされ、要求がキューに入れられる。こうして、スレ ーブ・バス・コントローラーは、バックグランド処理に戻る。 コマンドがデータ書込み要求であれば、図16bに示すように、転送がバンク 限界を超えるか否かが判断される。もし、超えていなければ、読出修正書込(リ ード・モディファイ・ライト)が要求されているか否かが判断される。もし、そ うであれば、入/出力リンクブロックが割り当てられ、空きが生じるまで処理が 保留される。1又は2の読出修正書込シーケンスの各読み出しための入/出力キ ューエレメントが、要求されたように構築される。必要であれば、書き込みの整 列部分のためのI/Oキュー・エレメントが構築され、要求がキューに入れられ る。スレーブ・バス・コントローラーは、次に、バックグランド処理に入る。 もし、データの転送がバンクの限界を超えていれば、下位のターゲットへの書 込が、フロント・読出修正書込(front read midify write)を要求しているか否 かが決定される。もしそうであれば、フロント・読出修正書込の読み出し部分の 入/出力キュー・エレメントが(下位のターゲットに)構築され、要求がキュー に登録される。次に、転送における配列された書込み部分のための入/出力キュ ー・エレメントが(下位のターゲットに)構築され、要求がキュー登録にされる 。上位のターゲットへの書込みが、バック・読出修正書込(back read modify wr ite)を要求するか否かが決定され、もしそうであれば、読出修正書込の読み出し 部分の入/出力キュー・エレメントが(上位のターゲットに)構築され、要求が キュー登録にされる。つぎに、書込みの配列部分の入/出力キュー・エレメント が(上位のターゲットに)構築され、要求がキューに登録にされる。つぎに、ス レーブ・バス・コントローラは、バックグランド処理に入る。 図17は、スレーブ・バス・コントローラによって扱われる入力/出力動作を 表すものである。SCSIバス・フェーズにおいては、特定ターゲットのために 要求入/出力を実行するための取扱いがなされる。もし、ターゲットが接続され ていなければ、コマンド完了メッセージが受信されたか否かが判断される。もし 、受信されていなければ、警告が発生され、ターゲット欠陥が記録(logged)され る。コマンド完了時のSCSIキュー・エレメントが、コマンド完了機能が現在 の割込みレベルで実行できるか否かを判断するために検査される。もし、実行可 能なら、最後のSCSI入/出力コマンド完了機能が、入/出力キュー・エレメ ントで特定されたように実行される。また、入/出力キュー・エレメントは、S CSI入/出力キューとリンクされず、他に自由に用いられるようにマークされ る。 もし、コマンド完了機能が現在の割込みレベルで実行できないと判断されれば 、最後のSCSI入/出力コマンド完了機能および入/出力キュー・エレメント へのポインタが、バックグランド・キュー上に入れられる。また、SCSI入/ 出力キューからの入/出力キュー素子・エレメントはリンクせず、エレメントに はフリーである旨のマークがされない。それは、バックグランド・キューから実 行されるコマンド完了機能によってフリーにされるまで、使用中とされる。 SCSI入/出力キューからの次の入/出力要求が、最低平均スループット(l owest average throughput)により、ターゲットからの入/出力要求を用いて抽 出される。もし、低い値が複数あれば、最も低いターゲットが使用される。次に 、ターゲット選択コマンドが、SCSIに出力され、プロセッサがバックグラン ド処理に戻ってくる前に、入/出力がキューに登録される。もし、入/出力キュ ーが空であれば、SCSI入/出力が停止していることを表わすためのフラグが セットされる。 図18に、スレーブ・バス・コントローラーによる簡単な入力/出力完了機能 を示す。これは、SCSI割込みレベルからのSCSI入/出力ハンドラー(取 扱器)により実行される。SCSI入/出力キュー・エレメントか検査され、キ ュー・タグが抽出される。キュー・タグは、スレーブ・バス・コントローラーに 対してコマンドが発せられた時、中央制御装置によって与えられる。もし、SC SI入/出力の実行が成功しなければ、キュー・タグおよび故障応答が中央制御 装置に送られる。もし、SCSI入/出力の実行が成功すれば、コマンドの完 了を知らせるために、キュー・タグおよび「確認」応答が、中央制御装置に送ら れる。 図19に、スレーブ・バス・コントローラによる複雑な入力/出力完了機能を 示す。これは、バックグランド・キューからのバックグランドにより実行される 。 入/出力キュー・エレメントは、完了機能に従い、ポインタ・キューによりア クセスされる。次に、この入出力と関連する入/出力リンクブロックが、アクセ スされ、その入/出力の完了が、入/出力リンク・ブロック内に記録される。も し、その入/出力が完全に完了しなければ、SCSI入/出力キュー・エレメン トからの故障の詳細が、入/出力リンク・ブロック・エラー情報領域に記録され る。 次に、この入/出力リンクから現在の入/出力リンク・ブロックまでが完了し たか否かが判断される。もしそうであれば、入/出力リンク・ブロック・エラー 情報領域内に、なんらかの故障が記憶されているか否かが判断される。もしそう でなければ、特に中央制御装置からの元々のコマンドに対して、『整理(tidy-up )』ルーチンが実行される。キュー・タグ及び確認応答が、中央制御装置に送ら れる。 もし、入/出力リンク・ブロック・エラー情報領域に故障が記録されていると 、キュー・タグ、故障応答および故障情報が中央制御装置に送られる。 入/出力リンク・ブロックおよび関連する全てのバッファは、SCSI入/出 力キュー・エレメントと同じようにフリーになる。 上記で言及した「整理」は、関連したSCSI入/出力が、全て問題なく完了 した場合の、スレーブ・バス・コントローラの最後の動作となる。セクタ変換 スレーブ・ディスクドライブ・バンク40を形成するために利用可能なディス クドライブについての問題が、経験的に得られた。上述のように、『セクタ』に 到着するホストデータは、4つに分割される。この構成は、ホストに用いられる セクタサイズの4分の1のセクタサイズに、正確にフォーマット可能なスレーブ ・ディスクドライブのアレイを基礎としている。現在の標準セクタサイズは、 512バイトであり、結果的に必要なスレーブ・ディスクのセクタサイズを12 8バイトとしている。 最近まで、このことは問題ではなかったが、電子技術の複雑性および速度の点 から、500メガバイト・レベルを超えるディスクドライブは、セクタ毎に最小 256バイトのみにフォーマットできるのが一般的となっている。さらに、容量 が1ギガバイトを超える新しいディスクドライブは、最小512バイトセクタの みをサポートしているのが一般的である。このことは、コントローラが、2キロ バイト・サイズのホスト・セクタのみしかサポートできないことを意味する。 この問題は、『セクタ変換』と呼ばれる技術を適用することにより解決できる 。この技術において、各スレーブ・ディスク・セクタは、128バイトの『仮想 的(バーチャル)』スレーブ・セクタと呼ばれる、4つのホスト・セクタを含ん でいる。この技術において、もし、ホストが、512バイトから構成される1セ クタを要求すると、コントローラは、512バイトの大きな実体(actual)スレー ブ・ディスクドライブ・セクタ中から128バイトの独立したセクタを抽出する 。データを書き込む際、1セクタまたは4つ以下の集合セクタを書込むためには 、まず、コントローラは要求されたセクタの全体を読み出し、必要なセクタの実 体部分のデータを修正する。そして、最後に、スレーブ・ディスク・セクタの全 体を、ディスクドライブに書き戻す。これは、読出修正書込処理の一つの形式で あり、ディスクドライブへのデータの転送が遅くなるが、これは通常、問題とは ならない。また、ディスクドライブへの、又はディスクドライブからのデータの 大量転送ためには、この問題の影響は小さく、ホストコンピュータが気付かない 。3次元記憶アレイ 図1に示すハードウェアは、ホストコンピュータが、ディスクドライブの3次 元アレイへのアクセスを行うように、発展させることができる。これは、RAI D−35及びRAID53の両方に適用可能である。 図21に、コンピュータ・メモリ・コントローラ100に関する3次元ディス ドライブの構成を示す。ディスクドライブの各面は、図1に示す2次元配列に対 応している(42,0.A,…42,6.E)。この構成において、バッファメ モリ26およびデータ分割・パリティーロジック24の数は、5つに増えており 、その一つずつが、ディスクドライブの各2次元アレイ(又は面)のためのもの である。中央制御装置22は、各バッファ・メモリ26、および関連するスレー ブ・コントローラー32を独立して制御する。各データ分割およびパリティーロ ジック24は、関連するバッファメモリ26およびSCSI−1インターフェイ ス12に接続されている。 RAID−35動作においては、この構成により、メモリ容量が極めて大きく なり、先読みセグメントの数が5に増加するが、RAID−53動作においては 、図1の2次元構成と比べ5倍のシーク処理を同時に行なえるので、データへの アクセス速度が大きく向上するようになる。 上記に述べたのは、概略的な構成である。実際の構成においては、ディスクド ライブの面毎に1つずつ設けた、5つの別個のアレイ・コントローラを使用する 。コントローラの予備 図16は、第2コンピュータ・コントローラ100Bの使用を示すものである 。 第2コンピュータ・コントローラ100Bは、主コンピュータ・メモリ・コント ローラ100Aの故障の場合に供給される。第2コンピュータ・コントローラ1 00Bは、主コンピュータ・メモリ・コントローラ100Aと異なるアドレスが 付されて、各SCSI−1バスラインに接続されている。2つのSCSI−1ア ドレスが、コントローラ100A及び100Bによって占められているので、接 続できるディスクドライブのバンクの数は6つに減る。 この構成により、故障を修理するために停止させることが許されていないコン トローラの予備を提供することができる。RAID−35とRAID−53の組合わせ 図1、図21、及び図22に示すハードウェアは、RAID−35及びRAI D−53のいずれでも動作可能である。さらに、このハードウエアは、ハードウ ェアを共有することにより両方のシステムで運転することができる。例えば、開 始時(start-up)において、バッファ26の一部をRAID−53に割り当てる ことができ、残りをRAID−35に割り当てることができる。このシステムが シーケンシャルでないデータ要求を検出した場合、バッファ・セグメントは、バ ッファメモリのRAID−53に割り当てられた部分内に開かれ、そこに対して データが読み出される。中央制御装置22によりシーケンシャルなデータが検出 されれば、適切なバッファ部分中にバッファ・セグメントが割り当てられ、ディ スクバンクから、通常のRAID−35動作における先読み情報とともに、デー タが読み出される。 ディスクバンクはシェアすることもできるし、ある数のディスクバンクを、R AID−53での使用のために割り当て、残りをRAID−35での使用に割り 当てることもできる。 このハードウェアの配分は、ユーザーにより選択的に行なうことができ、ある いは、シーケンシャルとシーケンシャルでないデータとの率に従って自動的に行 なってもよい。こうして、例えば、このシステムは、開始時にはRAID−53 モードにセットアップし、バッファメモリ26の部分のサイズと、RAID−3 5に割り当てるディスクバンクの数とを、シーケンシャルなデータ要求の数に応 じて変化させるようにしてもよい。オーバーレイ・バンク・ストライプ(Overlay Bank Stripping) オーバーレイ・バンク・ストライプとは、メモリバンク間でのデータ配列につ いて以下に用いられる文言であって、RAID−35及びRAID−53の両方 に適用できるものである。 上述の実施例において、データはバンク内にシーケンシャルに記録される。す なわち、ユーザ・データの論理ブロックが、ディスク面に対して横断的(scross) に配置され、各追加バンクをシーケンシャル(連続的)に横断する。これは、複 数のバンクからの読出しおよび書込みを、同時に行なうという本システムの能力 をフルに用いていない。もし、データが、ディスクドライブのバンクの全体にう まく配列されていれば、RAID−35システムを用いたとしても、複数のバン クからの読出しおよび書込みを同時に行なうことが可能である。 オーバーレイ・バンク・ストライプ技術は、予め定義した(predefined)セグメ ントの第一バンクに、ホストコンピュータからの書込みデータを受けるにより動 作する。このセグメントが満たされると、データは次のバンク内の同じ論理位置 (logical position)を有するセグメントに書き込まれる。これは、各バンク内の 同じ論理セグメントが満たされるまで繰り返され、満たされると、データは第1 バンク内の次の論理セグメントに書込まれる。これは、アレイが満たされるまで 繰り返される。この処理は、アレイのバンク全体にわたって、データを均等に配 置できるという利点を有している。したがって、ホストコンピュータにより要求 された複数のデータが、同時に読み出し可能な異なったバンクに位置し、データ の発見速度が速くなる。さらに、コントローラは各セグメントのためにアドレス を配置するので、データを異なるバンクに同時に書き込むことができ、データ記 録の速度が速くなる。 図23は、アレイ中のセグメント内のデータ配置を示すものである。セグメン トは、少なくともディスクデータの1つのブロック、たとえば512バイトを含 むデータ・エリア、として定義してもよいが、より多くのディスクデータ・ブロ ックの集合、たとえば図23に示すように64キロバイトとしてもよい。 もし、ホスト・データ・ブロックが512バイトであれば、各チャネルに12 8バイトを適用するように、RAID−35またはRAID−53技術を用いて 、これを分割する。したがって、各バンクの各ディスクドライブ上の64キロバ イトのセグメントは、512のホスト・データ・ブロック・セグメントを含む。 上記説明ではセグメントのサイズは64キロバイトであるが、異なったアプリ ケーションのために最適化が要求される性能に適合させるため、セグメント・サ イズはユーザーにより選択が可能である。 オーバーレイ・バンク・ストライプが、RAID−53構成とともに用いられ ると、ホストデータ要求は完全にランダムとなり、オーバーレイ・バンク・スト ライプを用いるメリットはない。しかしながら、以前、同じバンク(同じセグメ ント内ではない)に存在したデータのための複数のホストデータ要求(読み出し または書込み)が同時に現われる場合には、その要求がバンクを横断するように 配置されて、同時に複数の読出/書込処理が行なえるため、かなりの性能向上が 達成される。図23に示す構成において、性能の向上は7である。 その面の上のRAID−35構成ついて、シーケンシャル・データの読取り能 力は、オーバーレイ・バンク・ストライプを使用することにより低下する。しか し、オーバーレイ・バンク・ストライプを使用すれば、異なるバンク上のデータ を同時に読み出すことができるので、性能が強化される。したがって、セグメン トよりも大きなシーケンシャルなデータについては、オーバレイ・バンク・スト ライプをしなければ、データの全長が、1つのバンクに対して、読み出されまた は書き込まれるのに対し、オーバレイ・バンク・ストライプによれば、データは 1以上のバンクに対し、同時に、読み出しまたは書き込むことができる。この技 術により、アレイに対するデータ転送レートを高くすることができ、各個別のデ ィスクが有するアクセス速度の制限により引起こされる限界を克服することがで きる。もし、図23に示す構成における各バンク上のセグメント内にデータが配 置されていれば、転送レートは7の率(factor of seven)により向上する。しか しながら、SCSIインターフェイスによって提供されたデータ転送レートを最 適化するため、セグメント・サイズは十分なサイズ、たとえば64キロバイトが 必要となる。 オーバーレイ・バンク・ストリッピングの技術は、RAID−35またはRA ID−53技術のいずれにも用いることができる。コンピュータ・メモリ・コン トローラが、この2つの技術のために、バンクを適切に割り当てることにより、 双方が動作するように調整を行う場合には、ディスクバンクが双方でシェアされ 、あるいはディスクバンクが適切に割り当てられてRAID−35またはRAI D−53のうちの一つに与えられていれば、オーバレイ・バンク・ストライプは 両技術に用いることができる。 上述の実施例から、本発明のコントローラは、ホストコンピュータの複数ユー ザのために、メモリユニットから転送される大容量なシーケンシャル・データの ために、および/または、多数のユーザからの少量データのためのランダムな要 求のために提供されるものである。 この発明は、特定の要素および要素の組合わせを参照して記述されているが、 各要素は、他のものまたは他の要素のいかなる組合わせとも結合できることが認 識される。示唆した要素の特定の組合わせにおいて、発明を限定するものではな い。さらに、前述の記載は、言及したいかなる要素も発明に不可欠であることや 、代替物が用いられることがないことを示唆するものではない。発明として定義 されるものは、本明細書の開示範囲により限定的に解釈されるべきではない。

Claims (1)

  1. 【特許請求の範囲】 1.ホストコンピュータとのインターフェイスをとるのためのコンピュータ・メ モリ・コントローラであって、下記を備えたもの、複数のメモリ・ユニットとの インターフェイスをとるとともに、そこから読み出した、およびそこへ読み出し たデータを保持するためのバッファ手段;および、前記ホスト・コンピュータお よび前記メモリ・ユニットへのデータ転送および、からのデータ転送を制御する ために動作する制御手段;前記バッファ手段は、前記メモリ・ユニットから読み 出されまたは、これに書き込まれるデータを、アドレスできるように記憶するた めの複数のバッファ・セグメントを形成するように制御される;前記制御手段は 、前記ホスト・コンピューターからの読出または書込要求のために、データに対 して十分なサイズのバッファ・セグメントを割り当てるように動作する;前記制 御手段は、さらに、前記ホスト・コンピュータからのデータ要求に応じて、異な るメモリ・ユニットに記憶されたデータを、同時にシークするために、前記メモ リ・ユニットを制御するように動作する。 2.請求項1において請求されたコンピューター・メモリ・コントローラであっ て、各メモリ・チャネルが、バスによって接続された複数のメモリ・ユニットを 備えており、前記メモリ・チャネルの各メモリ・ユニットが、独立してアクセス 可能であって、少なくとも3つのメモリ・チャネルを有する2次元アレイに配置 された複数のメモリ・ユニットとのインターフェイスをとるために;前記メモリ ・チャネルの各メモリ・ユニットが、メモリ・バンクを形成しているものにおい て;前記制御手段は、前記ホストコンピュータからのデータ要求に応じて、前記 バッファ・セグメント・バイトまたはメモリ・バンクから読み出されたビットの グループ内に記憶するよう動作し;前記コントローラは、要求データを生成する ため、メモリ・バンクの前記メモリ・ユニットのグループから読み出されるとと もに、前記バッファ・セグメント・に記憶される、複数ビットの複数グループま たは複数バイトを再結合するために、前記バッファ手段に接続された論理回路を 備えており;前記論理回路は、もし、メモリ・ユニットの前記グループの一つが 故障であれば、メモリ・ユニットの前記グループから読み出されたデータを再生 成するために、前記メモリ・バンクの前記メモリ・ユニットの一つから読み出さ れたチェック・バイトまたはバイトのグループを使用するよう動作するパリティ 手段を含んでおり;前記バッファ手段は、メモリ・チャネルの数に対応する複数 のチャネルに分割され、各チャネルは、バッファ・セグメント・の関連する部分 に分割され;前記制御手段は、さらに、異なるメモリ・バンクに記憶されたデー タを同時にシークするために、前記メモリ・ユニットを制御するように動作する ことを特徴とするもの。 3.請求項2において請求されたコンピュータ・メモリ・コントローラにおいて 、前記制御手段は、メモリ・バンクが有する要求データがビジーでなくなるまで 、要求の時に実行することができないホストデータ要求をキュー(待ち行列)に 入れるように適合されていることを特徴とするもの。 4.請求項3において請求されたコンピュータ・メモリ・コントローラにおいて 、もし、メモリ・バンクが1以上のデータ要求を有する場合、前記制御手段は、 読出動作を完遂するのに要する時間を最適化するために、シークされるデータの 順序を制御するように適合されていることを特徴とするもの。 5.請求項2から請求項4のいずれかにおいて請求されたコンピュータ・メモリ ・コントローラにおいて、前記論理回路は、前記ホストコンピュータから入力さ れたデータを複数の部分に分割するように動作し、よって、前記部分は、メモリ バンク内への記憶のための前記メモリ・チャネルのグループの一つに適用される 前に、バッファ・セグメント内に一時的に記憶される;前記パリティ手段は、メ モリバンクの少なくとも一つのメモリ・ユニットに記憶される前に、バッファセ ・グメント内に一時的に記憶される前記データから、チェックバイトまたはビッ トのグループを生成するよう動作をすることを特徴とするもの。 6.請求項5において請求されたコンピュータ・メモリ・コントローラにおいて 、 前記制御手段は、いずれかの保留になっている読出または書込要求に損傷を与え て、メモリバンクへのデータの書込みを実質的に即座に実行するように動作する ことを特徴とするもの。 7.請求項2から請求項6のいずれかにおいて請求されたコンピュータ・メモリ ・コントローラにおいて、前記制御手段は、5つのメモリ・チャンネルを有する メモリ・ユニットのアレイとインターフェイスをとるように適合されており、1 つの前記メモリ・チャンネルは前記チェックバイトまたはビットのグループを保 持することを特徴とするもの。 8.請求項2から請求項7のいずれかにおいて請求されたコンピュータ・メモリ ・コントローラにおいて、複数の前記バッファ手段および前記論理回路を備え、 前記各バッファ手段は、メモリユニットの前記2次元アレイの一つとのインター フェイスをとるように適合しており;前記制御手段は、複数の前記2次元アレイ ・メモリユニットによって形成された3次元アレイおよび前記ホスト・コンピュ ータへのデータ、および、からのデータの転送を制御するようにに動作すること を特徴とするもの。 9.前記のいずれかの請求項で請求されたコンピュータ・メモリ・コントローラ において、前記コントローラは、磁気ディスク・ドライブとインターフェイスを 取るように適合していることを特徴とするもの。 10.前記のいずれかの請求項で請求されたコンピュータ・メモリ・コントロー ラにおいて、前記バッファ手段は、前記ホスト・コンピュータにより要求された データ、および、さらにこれに対して論理的にシーケンシャルなデータを保持す るように適合しており;前記制御手段は、ホストコンピュータからの要求に応じ て、次のようにして、ホストコンピュータに対するデータ転送を制御するよう動 作する、まず、前記バッファ・セグメント・にアドレスして、そこに要求データ が含まれているかどうかを確認し、もし含まれていれば、そのデータをホストコ ン ピュータに供給し、もし要求データがバッファ・セグメントに含まれていなけれ ば、前記データを前記メモリユニットから読み出し、そのデータをホストコンピ ュータに供給し、前記ホストコンピュータにより要求されたデータに対して論理 的にシーケンシャルなデータを、追加的に前記メモリユニットから読み出し、そ して前記追加データをバッファ・セグメントに記録する;前記制御手段は、前記 バッフ・ァセグメントの数およびサイズを制御するバッファ手段を制御するよう に動作することを特徴とするもの。 11.請求項10において請求されたコンピュータ・メモリ・コントローラにお いて、前記制御手段は、前記ホスト・コンピュータからのデータの要求が、存在 する前記バッファ・セグメントの一つに記憶された追加データに適応できない各 場合において、存在するバッファ・セグメントのサイズを小さくし、要求された データに対して追加データを与えるため、前記バッファ手段の新しいセグメント を動的に割り当て、また、各バッファ・セグメントのサイズが所定の最低値にな るまでこの処理を続けるように動作し、その結果、データの次の要求がバッファ ・セグメント内で入手できない時、使用頻度の少ないバッファ・セグメントが採 用されることを特徴とするもの。 12.前記のいずれかの請求項で請求されたコンピュータ・メモリ・コントロー ラにおいて、前記制御手段は、さらに、複数の前記メモリユニットを、シーケン シャル・メモリ・ユニット上の各セグメントがシーケンシャルなアドレスを持つ ようにして、アドレス可能に分割し、また、シーケンシャルな分割されたメモリ ユニット上のシーケンシャルなアドレスが付されたセグメントに、シーケンシャ ルなデータを書き込むように動作することを特徴とするもの。 13.請求項2から請求項11のいずれかにおいて請求されたコンピュータ・メ モリー・コントローラにおいて、前記制御手段は、さらに、シーケンシャル・バ ンク上の各セグメントがシーケンシャルなアドレスを持つようにして、複数の前 記メモリバンクをアドレス可能に、シーケンシャル・メモリ・バンク上のシーケ ンシャル・バンク・セグメントに分割し、また、シーケンシャルな分割されたメ モリバンク上のシーケンシャルなアドレスが付されたバンク・セグメントに、シ ーケンシャルなデータを書き込むように動作することを特徴とするもの。 14.ホストコンピュータとともに用いる複数のメモリ・ユニットを制御する方 法であって以下のステップを備えたもの、前記メモリユニット内に記憶されてい るデータの読出要求を前記ホストコンピューターから繰り返し受け、データの読 み出しに十分なサイズのバッファセグメントを割り当て;および前記複数のメモ リユニット内のデータを同時にシークする。 15.請求項14において請求された方法において、前記記憶ユニットは、少な くとも3つのメモリチャネルを有する2次元アレイに配置され、各メモリチャネ ルは、バスによって接続された複数の各メモリユニットを備えており、前記メモ リチャネルの各メモリユニットは独立してアクセス可能であり;前記メモリチャ ネルの各メモリユニットは、メモリバンクを形成し;前記方法は、ホストコンピ ュータからのデータ要求に応じて、前記バッファ・セグメントのメモリバンクか ら読み出されたバイトまたはビットのグループを記憶するステップを含んでおり ;メモリバンクの前記メモリユニットのグループから読み出されたバイトまたは バイトのグループを再結合し、要求データを発生するために前記バッファセグメ ント内に記憶し;チェックバイトまたはビットのグループを前記メモリバンクの 前記メモリユニットの一つから読み出し;もし、前記メモリユニットの前記グル ープの一つが故障を起こしていれば、前記メモリユニットの前記グループからの データを再発生させるために、前記チェックバイトまたはバイトのグループを使 用し;異なるメモリバンク内に記憶されたデータを同時にシークすることを特徴 とするもの。 16.請求項15において請求された方法において、要求の時に実行できないホ スト・データ要求は、メモリバンクが有する要求データがビジーでない時に実行 するために、キューに入れられることを特徴とするもの。 17.請求項16において請求された方法において、もし、メモリ・バンクが1 以上のデータ要求を有する場合、読出動作を完遂するのに要する時間を最適化す るために、シークされるデータの順序が考慮されることを特徴とするもの。 18.請求項15から請求項17のいずれか一つにおいて請求された方法であっ て、前記ホストコンピュータからのデータ出力を複数の部分に分割し;前記部分 をバッファ・セグメント内に記憶し;前記分割データを、メモリバンクの前記メ モリユニットのグループの1つに適用し;前記データからチェックバイトまたは バイトグループを生成し;前記チェックバイトまたはバイトのグループをバッフ ァ・セグメント内に記憶し;前記チェックバイトまたはバイトのグループをメモ リバンクの少なくとも一つのメモリ・ユニットに適用するステップを含むことを 特徴とするもの。 19.請求項18において請求された方法において、保留になっているいずれか の読出または書込要求に損害を与えて、実質的に即座にデータをメモリバンクに 書き込むことを特徴とするもの。 20.請求項15から請求項19のいずれかにおいて請求された方法であって、 複数の前記2次元あれいのメモリユニットによって形成された3次元あれいのメ モリユニットおよび前記ホストコンピュータから、およびこれらへのデータの伝 送を制御するステップを含むことを特徴とするもの。 21.請求項14から請求項20のいずれかにおいて請求された方法であって、 前記バッファセグメント内に要求データがあるか否かを確認するために複数のバ ッファ・セグメントをチェックし、前記バッファ・セグメント内のデータを前記 ホストコンピュータに送るさせることにより前記要求に応じるか、一つのバッフ ァセグメント内の前記メモリユニットからの前記データを読み出して、前記要求 に応じられるかどうかを決定し、前記バッファ・セグメント内の要求データに 対して論理的にシーケンシャルな、追加データを前記メモリユニットから読み出 し、前記データを前記バッファ・セグメントに記憶するステップを備えたことを 特徴とするもの。 22.請求項21において請求された方法であって、さらに、前記ホスト・コン ピュータからのデータの要求が、存在する前記バッファ・セグメントの一つに記 憶された追加データに適応できない各場合において、存在するバッファ・セグメ ントのサイズを小さくし、要求されたデータに対して追加データを与えるため、 前記バッファ手段の新しいセグメントを動的に割り当て、また、各バッファ・セ グメントのサイズが所定の最低値になるまでこの処理を続けるようにし、その結 果、データの次の要求がバッファ・セグメント内で入手できない時、使用頻度の 少ないバッファ・セグメントが採用されることを特徴とするもの。 23.請求項14から請求項22において請求された方法であって、複数の前記 メモリユニットを、シーケンシャル・メモリ・ユニット上の各セグメントがシー ケンシャルなアドレスを持つようにして、アドレス可能に分割し、また、シーケ ンシャルな分割されたメモリユニット上のシーケンシャルなアドレスが付された セグメントに、シーケンシャルなデータを書き込むようにすることを特徴とする もの。 24.請求項15から請求項22において請求された方法であって、シーケンシ ャル・バンク上の各セグメントがシーケンシャルなアドレスを持つようにして、 複数の前記メモリバンクをアドレス可能に、シーケンシャル・メモリ・バンク上 のシーケンシャル・バンク・セグメントに分割し、また、シーケンシャルな分割 されたメモリバンク上のシーケンシャルなアドレスが付されたバンク・セグメン トに、シーケンシャルなデータを書き込むようにすることを特徴とするもの。 25.ホストコンピュータのためのコンピュータ・メモリ・コントローラであっ て、以下を備えたもの、並列に配置された少なくも3つのメモリ・チャネルと のインターフェースをとるバッファ手段、各メモリ・チャネルは、バスによって 接続された複数のメモリユニットを備えており、前記各メモリチャネルのメモリ ユニットは、独立してアクセスすることができる;メモリバンクを形成する、前 記メモリチャネルのそれぞれのメモリ・ユニット;前記バッファ手段に接続され 、前記ホストコンピュータから入力されたデータを複数の部分に分割し、よって 、前記部分が、メモリバンク内への記憶のための前記メモリ・チャネルのグルー プの一つに適用される前に、バッファ・セグメント内に一時的に記憶されるよう にする論理回路;前記論理回路は、さらに、メモリバンクの前記メモリユニット の連続する1つのグループから連続的に読み出され、前記バッファ手段に読み込 まれたデータの部分を再結合するように動作する;前記論理回路は、前記メモリ バンクの少なくとも1つの前記メモリユニットにそれが記憶される前に、前記バ ッファ手段内に一時的に記憶される前記データからチェックバイトまたはバイト のグループを生成するよう動作するパリティー手段を含んでおり、もし、記憶ユ ニットの前記グループの一つが故障を起こしていれば、メモリバンクのメモリユ ニットの前記グループから読み出された前記データを再生成させるために用いる ように動作する;前記バッファ手段は、メモリ・チャネルの数に対応する複数の チャネルに分割され、各チャネルは、バッファ・セグメントの関連する部分に分 割される;前記メモリバンクへのまたは前記メモリバンクからのデータおよびチ ェック・バイトまたはビットのグループの転送を制御するとともに、前記ホスト ・コンピューターからの読出または書込要求のために、データに対して十分なサ イズのバッファ・セグメントを割り当て、さらに、前記ホスト・コンピュータか らのデータ要求に応じて、異なるメモリ・ユニットに記憶されたデータを、同時 にシークするために、前記メモリ・ユニットを制御する制御手段。 26.請求項25において請求されたコンピュータ・メモリ・コントローラにお いて、前記制御手段は、メモリ・バンクが有する要求データがビジーでなくなる まで、要求の時に実行することができないホストデータ要求をキュー(待ち行列 )に入れるように適合されていることを特徴とするもの。 27.請求項26において請求されたコンピュータ・メモリ・コントローラにお いて、もし、メモリ・バンクが1以上のデータ要求を有する場合、前記制御手段 は、読出動作を完遂するのに要する時間を最適化するために、シークされるデー タの順序を制御するように適合されていることを特徴とするもの。 28.請求項25から請求項27のいずれかにおいて請求されたコンピュータ・ メモリ・コントローラにおいて、前記制御手段は、いずれかの保留になっている 読出または書込要求に損傷を与えて、メモリバンクへのデータの書込みを実質的 に即座に実行するように動作することを特徴とするもの。 29.請求項25から請求項28のいずれかにおいて請求されたコンピュータ・ メモリ・コントローラにおいて、前記制御手段は、5つのメモリ・チャンネルを 有するメモリ・ユニットのアレイとインターフェイスをとるように適合されてお り、1つの前記メモリ・チャンネルは前記チェックバイトまたはビットのグルー プを保持することを特徴とするもの。 30.請求項25から請求項29のいずれかにおいて請求されたコンピュータ・ メモリ・コントローラにおいて、複数の前記バッファ手段および前記論理回路を 備え、前記各バッファ手段は、メモリユニットの前記2次元アレイの一つとのイ ンターフェイスをとるように適合しており;前記制御手段は、複数の前記2次元 アレイ・メモリユニットによって形成された3次元アレイおよび前記ホスト・コ ンピュータへのデータ、および、からのデータの転送を制御するようにに動作す ることを特徴とするもの。 31.請求項25から請求項30のいずれかにおいて請求されたコンピュータ・ メモリ・コントローラにおいて、前記コントローラは、磁気ディスク・ドライブ とインターフェイスを取るように適合していることを特徴とするもの。 32.請求項25から請求項30のいずれかにおいて請求されたコンピュータ・ メモリ・コントローラにおいて、前記制御手段は、シーケンシャルでないデータ のための前記バッファ手段の第一部分を割り当てるよう動作し、前記制御手段は 、そのデータのために十分なサイズのバッファ・セグメントを、ホストコンピュ ータからのシーケンシャルでない読出および書込要求のための前記第一部分中に 割り当てるように動作し、異なる前記メモリバンクに記憶された複数の要求デー タを同時にシークするため前記メモリバンクを制御するように動作し、シーケン シャルなデータのため前記バッファ手段の第二部分を割り当てるよう動作し、ホ スト・コンピュータからの要求に応じて、ホストコンピュータにシーケンシャル なデータを転送するように以下の処理をし、まず、第2部分の前記バッファ・セ グメントにアドレスし、その部分に要求データが含まれているかどうかを確認し 、含まれていれば、前記データを前記ホストコンピュータに供給し、要求された シーケンシャルなデータが、前記第2部分のバッファ・セグメントに含まれてい なければ、前記メモリバンクのメモリユニットから前記データを読み出し、ホス トコンピュータに前記データを供給し、ホストコンピュータによって要求された データに対し論理的にシーケンシャルな追加データを前記メモリユニットから読 み出し、前記第2部分のバッファ・セグメント中に前記追加データを記録する; 前記制御手段は、前記バッファ・セグメントの数およびサイズを制御するため、 前記バッファ手段の第2部分を制御するように動作する。 33.請求項25から請求項31のいずれかにおいて請求されたコンピュータ・ メモリ・コントローラにおいて、前記制御手段は、シーケンシャルでないデータ のため、前記バッファ手段の第一部分およびメモリバンクの数を割り当てるよう に動作し、前記制御手段は、データのために十分なサイズのバッファ・セグメン トを、ホストコンピュータからのシーケンシャルでない読出および書込要求のた めの前記第一部分内に、割り当てるように動作し、他の多数の前記メモリバンク に記憶された要求データを同時にシークするよう前記メモリバンクを制御するよ うに動作し、シーケンシャルなデータのために、前記バッファ手段の第2部分お よび残りのメモリバンクを割り当てるように動作し、ホストコンピュータからの 要求に応じてホストコンピュータへシーケンシャルなデータを転送するよう以下 のようにして制御し、まず、第2部分の前記バッファ・セグメントにアドレスし 、その部分に要求データが含まれているかどうかを確認し、含まれていれば、前 記データを前記ホストコンピュータに供給し、要求されたシーケンシャルなデー タが、前記第2部分のバッファ・セグメントに含まれていなければ、残りの前記 メモリバンクのメモリユニットから前記データを読み出し、ホストコンピュータ に前記データを供給し、ホストコンピュータによって要求されたデータに対し論 理的にシーケンシャルな追加データを前記メモリユニットから読み出し、前記第 2部分のバッファ・セグメントに追加データを記憶する;第2制御手段は、さら に、前記バッファ・セグメントの数およびサイズを制御するため前記バッファ手 段の第2部分が制御するように動作する。 34.請求項33において請求されたコンピュータ・メモリ・コントローラにお いて、前記制御手段は、シーケンシャル・メモリ・バンク上の各バンク・セグメ ントがシーケンシャルなアドレスを持つように、複数の前記メモリバンクをアド レス可能に分割するよう動作し、シーケンシャル・セグメント・メモリ・バンク のシーケンシャルにアドレスされたバンクセグメントにシーケンシャル・データ を書き込むように動作し、シーケンシャルな前記複数のメモリ・バンクのシーケ ンシャル・バンク・セグメントに記憶された何れかのシーケンシャル・データと 同じく、要求データのシークと読み込みを行うように動作する。 35.コンピュータ・メモリ・システムであって、以下を備えたもの、並列に配 置された少なくとも3つのメモリ・チャネルを有する2次元アレイに配置された 複数のメモリ・ユニット、前記各メモリ・チャネルは、バスによって接続された 複数のメモリ・ユニットを備え、前記各メモリ・ユニットは独立してアクセス可 能である;メモリ・バンクを形成する前記メモリ・チャネルの各メモリ・ユニッ ト;および前記メモリ・ユニットとのインターフェイスをとり、以下を備えたコ ントローラ、前記メモリ・チャネルから読み出した情報を保持するバッファ手段 ;前記バッファ手段は、前記メモリ・ユニットから読み出しまたは書き込んだデ ータをアドレス可能に記憶するために、複数のバッファ・セグメントを形成す るように制御され;メモリ・バンク内の前記メモリ・ユニットのグループの一つ から読み出されたバイトまたはビットのグループを再結合させるため、前記バッ ファ手段に接続された制御回路;もし、メモリ・ユニットの前記グループの一つ が故障を起こしていれば、前記メモリ・ユニットのグループから読み出した情報 を再生成するために、前記メモリ・バンクの前記記メモリ・ユニットの一つから 読み出されたチェックバイトまたはバイトのグループを使用するように動作する パリティ手段;および前記ホストコンピューター、前記記憶ユニットに対する及 び前記ホストコンピューター、前記記憶ユニットへの、およびこれらからのデー タの転送を制御する制御手段であって、そのデータのために十分なサイズのホス ト・コンピュータからの読出または書込要求のためのバッファセグメントを割り 当てるとともに、異なるメモリ・バンクに記憶されたデータを同時にシークする ように前記メモリ・ユニットを制御する制御手段。 36.請求項35において請求されたコンピュータ・メモリ・システムであって 、並列に配置される5つのメモリ・チャネルを備え、前記メモリ・チャンネルの 一つは、前記チェック・バイトまたはビットのグループを保持するものであるこ とを特徴とするもの。 37.請求項35または請求項36において請求されたコンピュータ・メモリ・ システムにおいて、各メモリ・チャネルは、7つのメモリ・ユニットを備え、こ れにより7つのメモリ・バンクが形成されていることを特徴とするもの。 38.請求項35から請求項37のいずれかにおいて請求されたコンピュータ・ メモリ・システムにおいて、前記メモリ・ユニットは磁気ディスク・ドライブで あり、メモリ・バンクの磁気ディスク・ドライブの回転は同期されていることを 特徴とするもの。 39.請求項35において請求されたコンピュータ・メモリ・システムにおいて 、前記コントローラは、複数の前記バッファ手段;前記論理回路および前記パリ ティ手段を含んでおり、各バッファ手段は、メモリ・ユニットの前記2次元アレ イの一つに対しインターフェースをとるために適合されており;前記制御手段は 、複数の前記2次元メモリ・ユニット・アレイによって形成された3次元メモリ ・ユニット・アレイおよび前記ホストコンピュータの記憶ユニットへのデータ、 およびこれらからのデータの転送を制御するよう動作することを特徴とするもの 。 40.請求項35から請求項39のいずれかにおいて請求されたコンピュータ・ メモリ・システムであって、さらに、異なったアドレスを前記バスライン上に有 するとともに、第1コントローラと同様に前記メモリ・チャネルとのインタフェ ースをとる第2コントローラを含むことを特徴とするもの。 41.ホストコンピュータのためのコンピュータ・メモリ・コントローラであっ て、以下を備えたもの、各々が、少なくも3つのメモリ・チャネルを有する2次 元アレイに配置された複数のメモリ・ユニットとのインターフェイスをとるため の複数のバッファ手段、各メモリ・チャネルは、バスラインによって接続された 複数のメモリユニットを備えており、これにより前記各メモリ・チャネルのメモ リ・ユニットが独立してアクセス可能である;メモリ・バンクを形成する、前記 メモリ・チャネルのそれぞれのメモリ・ユニット;メモリ・バンク内の前記メモ リ・ユニットのグループの一つから読み出されたバイトまたはビットのグループ を再結合させるとともに、要求データを発生させるため、前記バッファ・セグメ ント内に記憶に記憶される、各前記バッファ手段に接続される複数の論理回路; 前記論理回路は、もし、メモリ・ユニットの前記グループの一つが故障であれば 、メモリ・ユニットの前記グループから読み出されたデータを再生成するために 、前記メモリ・バンクの前記メモリ・ユニットの一つから読み出されたチェック ・バイトまたはバイトのグループを使用するよう動作するパリティ手段を含んで おり;前記バッファ手段は、メモリ・チャネルの数に対応する複数のチャネルに 分割され、各チャネルは、バッファ・セグメントの関連する部分に分割され;ホ ストコンピュータからの要求に応じて、複数の前記2次元メモリ・ユニット・ア レイにより構成されるメモリ・ユニットの3次元アレイから、前記ホストコン ピュータへのデータの転送を、以下のように制御するコントロール手段、まず、 前記バッファ・セグメントにアドレスし、要求データがその中に含まれているか どうかを確認し、もし含まれていれば、前記データを前記ホスト・コンピュータ に供給し、もし要求データがバッファ・セグメントに含まれていなければ、前記 データをメモリ・ユニットから読み出し、前記データを前記ホスト・コンピュー タに供給し、前記ホストコンピュータから要求されたデータに対して論理的にシ ーケンシャルな追加データを、前記メモリ・ユニットから読み出し、前記追加デ ータをバッファ・セグメント内に記憶する;前記コントロール手段は、さらに、 ホスト・コンピュータからのデータ要求に応じて、異なるメモリ・バンクに記憶 されたデータを同時にシークするため前記メモリ・ユニットを制御するように動 作する;前記コントロール手段は、さらに、前記バッファ・セグメントの数およ びサイズを制御するために、前記バッファ手段を制御する。
JP5511984A 1992-01-06 1992-12-10 コンピュータ・メモリ・アレイ・コントロール Pending JPH08501643A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB9200207.0 1992-01-06
GB929200207A GB9200207D0 (en) 1992-01-06 1992-01-06 Computer memory array control
PCT/GB1992/002291 WO1993014455A1 (en) 1992-01-06 1992-12-10 Computer memory array control

Publications (1)

Publication Number Publication Date
JPH08501643A true JPH08501643A (ja) 1996-02-20

Family

ID=10708187

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5511984A Pending JPH08501643A (ja) 1992-01-06 1992-12-10 コンピュータ・メモリ・アレイ・コントロール

Country Status (6)

Country Link
EP (1) EP0620934A1 (ja)
JP (1) JPH08501643A (ja)
AU (1) AU662376B2 (ja)
CA (1) CA2127380A1 (ja)
GB (1) GB9200207D0 (ja)
WO (1) WO1993014455A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5375084A (en) * 1993-11-08 1994-12-20 International Business Machines Corporation Selectable interface between memory controller and memory simms
EP0727750B1 (en) * 1995-02-17 2004-05-12 Kabushiki Kaisha Toshiba Continuous data server apparatus and data transfer scheme enabling multiple simultaneous data accesses
US5881254A (en) * 1996-06-28 1999-03-09 Lsi Logic Corporation Inter-bus bridge circuit with integrated memory port
US5937174A (en) * 1996-06-28 1999-08-10 Lsi Logic Corporation Scalable hierarchial memory structure for high data bandwidth raid applications

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4958351A (en) * 1986-02-03 1990-09-18 Unisys Corp. High capacity multiple-disk storage method and apparatus having unusually high fault tolerance level and high bandpass
US4993030A (en) * 1988-04-22 1991-02-12 Amdahl Corporation File system for a plurality of storage classes
AU630635B2 (en) * 1988-11-14 1992-11-05 Emc Corporation Arrayed disk drive system and method

Also Published As

Publication number Publication date
EP0620934A1 (en) 1994-10-26
AU3091592A (en) 1993-08-03
CA2127380A1 (en) 1993-07-22
WO1993014455A1 (en) 1993-07-22
AU662376B2 (en) 1995-08-31
GB9200207D0 (en) 1992-02-26

Similar Documents

Publication Publication Date Title
US5526507A (en) Computer memory array control for accessing different memory banks simullaneously
US7228381B2 (en) Storage system using fast storage device for storing redundant data
US6009481A (en) Mass storage system using internal system-level mirroring
JP2501752B2 (ja) コンピユ―タ・システムのストレ―ジ装置及びデ―タのストア方法
JP2769443B2 (ja) 記憶サブシステム及び関連する装置/方法
US6058489A (en) On-line disk array reconfiguration
US7730257B2 (en) Method and computer program product to increase I/O write performance in a redundant array
US5608891A (en) Recording system having a redundant array of storage devices and having read and write circuits with memory buffers
US5848229A (en) Fault tolerant disk array system for allocating auxillary disks in place of faulty disks
US6957313B2 (en) Memory matrix and method of operating the same
US5893138A (en) System and method for improving channel hardware performance for an array controller
JP2000099282A (ja) ファイル管理システム
WO1992015057A1 (en) Parity calculation in an efficient array of mass storage devices
JP3096392B2 (ja) Raidを使用する、フル・モーション・ビデオのネットワーク・サポートの方法および装置
US7979632B2 (en) Storage system including a fast storage device for storing redundant data
US20050193273A1 (en) Method, apparatus and program storage device that provide virtual space to handle storage device failures in a storage system
JPH08501643A (ja) コンピュータ・メモリ・アレイ・コントロール
US6934803B2 (en) Methods and structure for multi-drive mirroring in a resource constrained raid controller
WO1992004674A1 (en) Computer memory array control
JP3428350B2 (ja) 記憶装置システム
JP3250859B2 (ja) ディスクアレイ装置、コンピュータシステム及びデータ記憶装置
JP2854471B2 (ja) ディスクアレイ装置
JPH10240450A (ja) 記憶装置システム
JP3597086B2 (ja) ディスクアレイ制御装置
JP2001022530A (ja) ディスク制御装置