(57)【要約】【課題】デジタルデータ記憶および検索のためのディスクアレイコントローラ技術を改良する。【解決手段】開示されるディスクアレイコントローラ装置(10)は、ホスト(12)とのインタフェースとして機能する少なくとも2つの論理ポート（論理ポート#0〜論理ポート#3）と、1つ以上の物理ポート（物理ポート#0〜物理ポート#4）と、スイッチ（26）を備えたコントローラとを有し、前記各物理ポートはそれぞれ少なくとも1つのディスクドライブをコントローラに取り付けるように配置されており、前記スイッチは、マッピングレジスタ（24）の内容に応じて、論理データポートと物理データポートとの間で動的に構成可能なデータ経路（30）を提供する。前記マッピングレジスタは、各論理ポートと前記物理ポートの1つとの関連付けを指定することによって所望のアレイディスクドライブアレイを定義する。マッピングレジスタは、論理マッピングレジスタとして編成することができる。当該論理マッピングレジスタは、コントローラの各論理ポートに対応したフィールドを有するとともに、RAID動作のための冗長アレイを指定する規定を含む。
2006524401.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムに接続するためのホストインタフェースと、
読み取りデータおよび書き込みデータを格納するためのバッファと、
ディスクドライブを取り付けるための複数の物理ポートを含むディスクインタフェースであって前記物理ポートと前記バッファとの間で選択可能なデータ経路を切り替えるスイッチを含む前記ディスクインタフェースと、
マッピングデータを格納するためのマッピングレジスタとを含み、
前記スイッチは、前記マッピングレジスタに格納された前記マッピングデータに応じて構成可能であり、これによって前記マッピングデータによって定義された複数の物理ポートから成るアレイにアクセスできることを特徴とするディスクアレイコントローラ。
【請求項２】
前記マッピングデータは前記複数の物理ポート間のストライピング順序を反映しており、前記スイッチは前記複数の物理ポートからのデータセグメントを論理ポート順にソートすることを特徴とする、請求項１に記載のディスクアレイコントローラ。
【請求項３】
前記マッピングデータによって、指定された物理ポートのシーケンスに基づくストライピング順序が定義されることを特徴とする、請求項２に記載のディスクアレイコントローラ。
【請求項４】
前記ディスクインタフェースは一連の論理ポートを有し、各論理ポートは前記ディスクインタフェースと前記バッファとの間で対応するデータセグメントを転送し、
前記マッピングデータは、各論理ポートと前記物理ポートの1つとの関連付けを指定することによって所望のディスクアレイおよびストライピング方式を定義する複数のフィールドを有することを特徴とする、請求項４に記載のディスクアレイコントローラ。
【請求項５】
前記マッピングデータは、前記コントローラ内のメモリに格納されることを特徴とする、請求項３に記載のディスクアレイコントローラ。
【請求項６】
前記マッピングデータは論理マッピングレジスタとして編成されており、該論理マッピングレジスタは論理ポートごとにフィールドを有し、該フィールドに格納される値は対応する物理ポートを示すことを特徴とする、請求項４に記載のディスクアレイコントローラ。
【請求項７】
前記マッピングデータは物理マッピングレジスタとして編成されており、該物理マッピングレジスタは前記コントローラの物理ポートごとにフィールドを有し、該フィールドに格納される値は対応する論理ポートを示すことを特徴とする、請求項４に記載のディスクアレイコントローラ。
【請求項８】
前記所望のディスクアレイは、前記論理ポートと前記利用可能な物理ポートの部分集合との関連付けによって定義されることを特徴とする、請求項４に記載のディスクアレイコントローラ。
【請求項９】
前記マッピングレジスタは、冗長データを格納するために前記アレイ内で冗長ドライブを使用するかどうか示すフィールドを含むことを特徴とする、請求項４に記載のディスクアレイコントローラ。
【請求項１０】
前記マッピングデータは、前記ディスクインタフェースと前記バッファとの間のデータ転送に使用される論理ポートの数の半分に等しいいくつかの物理ポートを含むディスクアレイを定義し、
前記スイッチは、動的に再構成可能であり、前記論理ポートの前半部分と第1のディスクアクセスのための割り当て済み物理ポートとの間における第1のデータ経路を提供し、次いで前記論理ポートの後半部分と第2のディスクアクセスのための割り当て済み物理ポートとの間における第2のデータ経路を提供することによってバッファ転送を完了することを特徴とする、請求項４に記載のディスクアレイコントローラ。
【請求項１１】
前記マッピングデータは、4つの論理ポートと、2つの物理ポートから成るディスクアレイとの関連付けを定義することを特徴とする、請求項１０に記載のディスクアレイコントローラ。
【請求項１２】
前記マッピングデータは、前記ディスクインタフェースと前記バッファとの間におけるデータ転送に使用される論理ポートの数より少ないいくつかの物理ポートを含むディスクアレイを定義し、
前記スイッチは、動的に再構成可能であり、前記論理ポートの第1の部分集合と前記割り当て済み物理ポートとの間における第1のデータ経路を提供し、次いで前記論理ポートの第2の部分集合と前記割り当て済み物理ポートとの間における第2のデータ経路を提供することを特徴とする、請求項４に記載のディスクアレイコントローラ。
【請求項１３】
前記スイッチは、ディスク書き込みデータセグメントを前記バッファから前記複数の物理ポートに指し向け、前記マッピングデータで指定された定義済みアレイ全体にわたって前記データがストライプされるようにすることを特徴とする、請求項４に記載のディスクアレイコントローラ。
【請求項１４】
複数のディスクドライブから成るアレイに命令を送信する方法であって、
複数の物理ポートを特定することによってディスクアレイを定義するマッピングレジスタ内に索引を格納するステップと、
前記特定された物理ポートの各々のデータバス上に前記命令のバイトをアサートするステップと、
前記特定された物理ポートのすべてにグローバル書き込みストローブをアサートするステップと、
マッピングレジスタの内容に応じ、前記定義済みアレイに含まれる前記物理ポートのみを選択して、前記命令のアサートされたバイトを受け入れることによって、前記選択されたポートのみが前記グローバル書き込みストローブに応答するようにしたステップとを含むことを特徴とする送信方法。
【請求項１５】
ディスクアレイから制御ステータスをグローバルに読み取る方法であって、
複数の物理ポートを特定することによってディスクアレイを定義するマッピングレジスタ内に索引を格納するステップと、
単一グローバル読み取りストローブを、前記特定された物理ポートのすべてに送信するステップと、
マッピングレジスタの内容に応じ、前記定義済みアレイに含まれる前記物理ポートのみを選択して、前記要求された制御ステータスを返すことによって、前記選択されたポートのみが前記グローバル読み取りストローブに応答するようにしたステップと、
前記物理ポートにおいて前記返された制御ステータスをラッチするステップと、
その後、前記複数の物理ポートの各々に別々にアクセスして、それぞれの制御ステータスを得るステップとを含むことを特徴とする読み取り方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタルデータ記憶システムに関し、特に、デジタルデータ記憶および検索のためのディスクアレイコントローラ技術の改良に関する。
【背景技術】
【０００２】
関連出願
これは、2003年4月21日に出願された米国仮特許出願第60/464,892号を継続するものであり、かつ前記米国仮特許出願からの優先権を主張するものである。前記仮特許出願は、参考によってここに取り入れられる。
著作権情報
【０００３】
コピーライト2003-2004 Netcell Corporation．  本特許文献の開示の一部には、著作権保護の対象となる資料が含まれる。特許商標局の特許ファイルまたは記録に示されているとおり、著作権者は、特許文献または特許開示のいずれかによる複写に異存はないが、その他の点についてはすべての著作権権利を所有する。37 CFR §1.71(d)
【発明を実施するための最良の形態】
【０００４】
マッピングレジスタ
【０００５】
小型コンピュータシステム用の代表的なRAIDコントローラは、ホストシステムとのインタフェースと、ドライブアレイとのインタフェースとを有する。図1は、ホストバス12とのやり取りを行うホストインタフェース16と、取り付けられた複数のディスクドライブ14とのやり取りを行うドライブインタフェース22とを提供するディスクアレイコントローラ10の簡略ブロック図である。前記ディスクアレイコントローラは、好ましくは制御プロセッサ20と、ホストバスとドライブとの間を移動するデータを一時的に格納するバッファメモリ18とを有する。
【０００６】
物理ポートは、ディスクドライブなどの大容量記憶装置をシステムに取り付けるために必要である。一部のインタフェースは複数の装置への同時データ転送をサポート可能であるが、物理ポートはボトルネックになる傾向がある。この理由から、図2Aに示すように、高性能なRAIDコントローラは、大容量記憶装置ごとに物理ポートを有する場合がある。図2Aには、マッピングレジスタ24の対応する内容も示されている。この内容については、図4を参照してさらに以下で説明する。
【０００７】
RAIDのパフォーマンス上のメリットの1つは、アレイの複数のドライブにわたるデータストライピングによってもたらされる。例えば、4つのドライブから同時にデータを読み取ることによって、単一ドライブの転送速度が4倍改善されたことになる。図2Aに示される例では、4つのドライブから到着した16ビットデータは、論理ドライブの順序でマージされて64ビットデータになり、バッファ（図1の符号18）に送出される。ユーザデータはストライプされた。すなわち、ユーザデータは、あらかじめ決められたシーケンスで、複数ドライブから成るアレイ全体にわたって一度にセグメントに分散された（例えば、16ビットワード）。論理ドライブ#0から開始して論理ドライブ#n-1に至るまでのシーケンスが特定される。ここで、nはアレイ内のドライブの数である。このストライプシーケンスは、ユーザデータのk番目のセグメントが論理ドライブと一致するように繰り返される（k mod n）。このようにして、論理ドライブの番号付けを使用してストライピング順序を反映する。従って、図では、4つの「論理ポート」のスタックは、単にストライプの4つのセグメントの順序集合を示す。各「論理ポート」はストライプの単一セグメントに相当し、スタック全体は4つのセグメントの順序集合に相当する。
【０００８】
各ドライブからの100MBPSの転送速度は、バッファへの400MBPSの転送速度になる。破線の四角形26は、詳細に後述されるデータ経路スイッチを概念的に表したものである。データ経路スイッチ26は、論理データポートと物理データポートとの間で動的に構成可能なデータ経路を提供する。
【０００９】
図2Aは、論理データポートと物理データポートとの間の直接接続を示す概念図である。実際の応用では、利用可能な物理データポートの数は論理データポートの数よりも大きい。「ホットスペア」として確保されるポートがあってもよく、または前記物理ポートは独立してアクセスされる種々のサブアレイにグループ化してもよい。図2Bに、4つの論理データポート（論理ポート#0から論理ポート#3）を、利用可能な5つの物理データポート（物理ポート#0から物理ポート#4）に割り当てる場合の可能な組み合わせの一例を示す。例えば、大きな矢印30は、単純に論理ポート#1の物理ポート#2に対する割り当てを示す。図2Bには、マッピングレジスタ24の対応する内容も示されている。ここで、矢印30によって示されるように、レジスタ内の右から2番目のフィールドは、論理ポート#1に対応し、物理ポート#2を示す値「2」を含む。下記に詳しく説明されるように、データ経路スイッチ26は、論理ポートから物理ポートへの割り当てを実現する。
【００１０】
図2Cは、2ドライブアレイの例を示す図である。ここで、各ドライブは、それぞれ5つの利用可能な物理ポートの1つ（すなわち、物理ポート#1および物理ポート#2）に割り当てられている。バッファ用に64ビットワードにするには、16ビットの各ドライブを2回読み取らなければならない。第1の読み取りでは、論理ポート#0、#1のデータはそれぞれ物理ポート#2、#1から得られる。第2の読み取りでは、論理ポート#2、#3はそれぞれ物理ポート#2、#1からデータを得る。上記の動作は、プロセッサ20によって取りまとめられる。また、マッピングレジスタは、物理ポート#1、#2に対する割り当てを示す。
【００１１】
図2Dは、物理ポート#3に接続された単一ドライブを有するアレイの例を示す図である。この構成の場合、論理ポート#0〜#3のデータは、同じ物理ポートを4回読み取ることによって得られる。
【００１２】
米国特許第6,018,778号に記述される同期冗長データ転送の特徴の1つは、米国特許第6,237,052号に記述されるように冗長データを「その場で」処理できることである。図3Aは、図2Aに示す4ドライブアレイにロジック36を追加して冗長データパターンを計算する構成にした図である。この冗長データパターンは、物理ポート#4に取り付けられたドライブに格納される。種々の算術演算および論理演算を使用して冗長パターンを生成するが、論理データポートから得られるデータの対応するビット間の論理的XORは、XOR演算は繰り上がりを伝達する必要はないという点で算術演算よりも有利である。XORを使用するため、第5のドライブは、しばしば「冗長」ドライブまたは「パリティ」ドライブと呼ばれる。
【００１３】
図示される16ビット長バスXORは、それぞれ4つの入力を有する16個のXORゲートに相当する。図3Bから分かるように、XOR関数の使用も、ディスク読み取り動作とディスク書き込み動作との間で非常に対称形である。FIG. 図3Bは、図3Bで定義されているのと同じ4ドライブアレイを示し、ディスク読み取り方向についてデータ経路40、42などが示されている。この場合、物理ポート#2に取り付けられたドライブは故障している。従って、それに対応するデータ経路44は機能せず、破線で示されている。XOR関数は、残りのデータドライブ（物理ポート#0、#1、#3）から得られるデータおよび冗長ドライブ（物理ポート#4）から得られるデータを合わせて計算される。この計算によって、故障したドライブに格納されているデータが復元される。また、その結果は、故障したドライブの現在利用できないデータの代わりに、データ経路46を経由して論理ポート#2に向けられる。
【００１４】
前節は、RAIDコントローラ内の一組の論理ポートと一組の物理デバイスポートとの間に存在する種々の関係のいくつかの例を論証したものである。一般に、高性能なRAIDコントローラは、その物理ポートに接続されている大容量記憶装置の種々のサブグループから成る複数のアレイに対処せざるを得ない。さらに以下で説明されるように、本発明の一形態においては、新規性のあるマッピングレジスタおよび関連するロジックを採用することによって、記憶装置アレイのソフトウェア構成を設定可能にして、パフォーマンスを改善している。
【００１５】
本発明の一実施例によると、マッピングレジスタ24（図4にその構造が示される）が、論理データポートと物理データポートとの間のデータ経路の構成を制御する。（マッピングレジスタによって、以下に論じられる他の特徴および利点も提供される。） 本実施例においては、マッピングレジスタは、それぞれ5つの論理データポート（本例では、L0〜L4）の各々に対応する5つのフィールドから成る。レジスタ内の各論理データポートの対応するフィールドには、接続先の物理データポートの番号が読み込まれる。論理データポート0に対するフィールド内のデータは、記号を用いてPP_L0として表される。PP_L0は、論理ポート0に対応した物理ポートであることを示している。次の4フィールド内の値は、それぞれPP_L1、 PP_L2、PP_L3、PP_L4として特定される。第5の論理データポートは、疑似ポートである。PP_L4の値は、パリティドライブに対して物理データポートを割り当てるのに使用される。
【００１６】
マッピングレジスタのフィールドのサイズは、ほぼいずれのサイズでも可能である。例えば、8ビットフィールドであれば、256個までの物理ポートのアレイをサポートするであろう。図示の実施例においては、5つの物理ポートのみであれば、3ビットフィールドで十分である。前記5フィールドは、1ビットをスペアにした状態で16ビットレジスタに上手く収めることができる。この1ビットは、図では「予約済」を表す「r」によって示される。マッピングレジスタ情報の格納には、いずれの種類の不揮発性メモリでも使用することができる。
【００１７】
マッピングレジスタの使用を論証するために、これまで説明した各構成について再度簡単に取り上げる。図2Aでは、マッピングレジスタ24が示されている点に注目する。PP_L0の値は0であり、論理データポート#0が物理ポート#0に接続されていることを示している。次の3つの値は1、2、3であり、これらは、次の3つの論理データポートが次の3つの物理データポートに接続されていることを示している。PP_L4の値は7である。この値は、この例では正当な物理ポート番号ではない。値「7」は、この構成にはパリティドライブがないことを示すのに使用される。ここで、選ばれる具体的な値は、実際の物理ポート番号ではない限り重要ではない。
【００１８】
再び図2Bを参照すると、マッピングレジスタに格納されている値が示すのは、物理データポート1、2、4、0がそれぞれ論理ポート0〜3をサポートすることである。もう一度繰り返すと、値「7」はパリティドライブが使用されないことを示す。
【００１９】
図2Cは、2ドライブアレイ用に構成されたマッピングレジスタを示す。ここで、論理データポート#2、#3は、論理ポート#0、#1と同じ物理ポートに対応していることに留意する必要がある。第1の2つの論理ポートは第1の物理ポートのサイクルでデータを転送するのに対して、第2の2つの論理ポートは第2の物理ポートのサイクルでデータを転送する。
【００２０】
図2Dは、単一ドライブ用に構成されたマッピングレジスタを示す。論理ポート＃0〜＃3は、物理ポート#3に連続したサイクルでデータを転送する。図2における変形例はすべて、冗長データロジックとは関係なく示されたデータ経路が違っている。
【００２１】
図3Aは、図2Aと同じデータドライブ構成に対する、ディスク書き込み方向におけるXORロジックを示す。XORは、4つのすべての論理データポートから得られるデータに基づいて計算される。結果は、マッピングレジスタの論理ポート#4フィールドによって指定される物理ポートに取り付けられたドライブに格納される。この例では、PP_L4は「7」の代わりに「4」の値を有している。これは、パリティドライブが存在しているとともに、そのパリティドライブがポート#4に取り付けられていることを示している。
【００２２】
図3Bは、物理ポート#2に取り付けられたドライブが故障しているという以外は、図2Aおよび図3Aと同じデータ経路でのディスク読み取り方向におけるXORロジックを示す。論理データポート#2のフィールド（PP_L2）の内容は、「5」と置き換えられている。正当な物理ポート番号は4から0までである。「5」は、ドライブが故障していることを示すのに使用される予約値である。疑似物理ポート番号5にアクセスするいずれの論理データポートも、XORの出力からそのデータを取り出す。
データ経路スイッチ
【００２３】
前述の解説においては、マッピングレジスタのフィールドに読み込まれる4つの値は、冗長ドライブの有無にかかわらず（冗長ドライブを有するアレイに関しては、故障ドライブの有無にかかわらず）、4つの論理データポートと、5つの物理ポートに取り付けられた１つ、2つまたは4つのドライブアレイとの間において可能なすべての構成を表すのに使用されることを論証した。以下、マッピングレジスタの内容を使用してハードウェアブロックおよびデータ経路を構成する方法について説明する。以下の説明は、言い換えれば、データ経路スイッチ26の現在の好ましい実装例の詳細、およびマッピングレジスタの内容による構成方法について紹介するものである。
【００２４】
ここで、図5Aを参照すると、4つの論理データポートの各々は、5つの物理データポートのいずれからでも、または、故障ドライブの場合は、ディスク読み取りXORからデータを受け取ることができなければならない。6つの可能なデータソースがあれば、各物理データポートは、16ビット幅の、6対1マルチプレクサ50を有する。ここでは論理ポート1に対応するマルチプレクサ50を図5Aに示すが、その他の論理ポート（論理ポート#0、#2、#3）についても全く同じである。マルチプレクサのセレクタすなわち「S」入力は、マッピングレジスタの論理ポート#1フィールドに接続されている（PP_L1）。0〜4のPP_L1値は、それぞれ物理ポート#0〜#4のデータを選択する。それに対して、値「5」はディスク読み取りXORの出力を選択する。
【００２５】
図5Bは、ディスク読み取りXORロジック52を示す。ディスク読み取りXOR 52は、好適な実施例においては16ビット幅の5入力XOR回路である（取り付けられたディスクドライブのデータ経路に対応する）。（これは、それぞれ5入力を有する16個のXORに相当する。） 5入力の各々は、やはり16ビット幅の対応するANDゲート（例えば、ANDゲート54）によって論理的にクオリファイされる、すなわち「ゲート制御」される。（これは、それぞれ2入力を有する16個のNANDゲートに相当する。） 5つのNANDゲートは、対応する5つの物理ポート選択信号（PP0_SELからPP4_SEL）によってクオリファイされる。これらの信号の生成について以下に説明する。
【００２６】
各物理ポートへのデータ経路は、4つの論理データポートのいずれかから、またはディスク書き込みXORから来るものである。図2A〜図2Dを参照して、いくつかの例を示す。各論理データポートのデータソースはマッピングレジスタのフィールドによって特定されるが、各物理ポートに対して対応するデータを提供するフィールドはない。この情報は、すでにあるフィールドから得ることができる。マッピングレジスタの3ビットバイナリ符号化フィールドの各々は、「8の1」デコーダによって復号化される。図6は、論理ポート#1フィールドに対するそのようなデコーダ66を示す図である。値PP_L1は、L1_P0、L1_P1、L1_P2、…、L1_P7に復号化される。ここで、これらの名前は、転送元から転送先までの経路を示す。L1_P2は、例えば、論理ポート#1から物理ポート#2までの経路を示す。
【００２７】
ここで、図7Aを参照すると、サンプル回路は、論理データポートから物理データポート（#0〜#4）へのデータ経路70のマルチプレクシングに関して示されている。図7Aでは物理ポート#2に対応するマルチプレクサ72を示しているが、その他の4つのポート(図示されていない)に対するマルチプレクサも全く同じである。各マルチプレクサ72は、すべて16ビット幅の5つのANDゲート74と、対応するORゲート76とを有するAND/ORアレイから成る。（前記各ANDゲートはそれぞれ2入力を有する16個のANDゲートに相当し、前記ORゲートはそれぞれ5入力を有する16個のORゲートに相当する。） 物理ポート#2マルチプレクサに関しては、論理データポートからのANDゲートは、5つのデコーダ（すなわち、図では、L0_P2、L1_P2、L2_P2、L3_P2、L4_P2）の対応する出力によってクオリファイされる。
【００２８】
現時点では、解決すべき2つの問題がある。2ドライブアレイにおいては、所定の物理ポートは、2つの異なる論理ポートから異なるサイクルでデータを受け取る。再び図6を参照すると、各デコーダ66は、その出力のすべてをクオリファイするイネーブル入力「EN」を有する。2ドライブ構成の場合、論理データポート#0、#1に対応したデコーダのみが第1のサイクルでイネーブルになり、論理データポート#2、#3に対応したデコーダのみが第2のサイクルでイネーブルになる。この理由から、図7Aに示されるANDゲートの1つのみが一回にクオリファイされる。言い換えれば、（マッピングレジスタに従って）割り当てられた論理ポートからのデータのみが、対応する物理ポートへ入力される。
【００２９】
単一の物理ポートが4つのすべての論理ポートからのデータを受信する単一ドライブアレイにおいては（図2Dを参照）、一回に1つのデコーダ66のみがイネーブルにされる。その結果、固有のデータソース（論理ポート）の選択毎に1つのANDゲート74のみがイネーブルになる。他の未解決の問題は、図5Bに示される「PPn_SEL」信号の転送元であった。図6は、5入力ORゲート68の使用を示す図である。この5入力ORゲート68は、対象の物理ポートといずれかの論理ポートとの間にデータ経路が存在する場合、物理ポート「n」に対するPPn_SEL信号をアサートする。このことは、物理ポートはアクティブであり、図5Bに示されるディスク読み取りXORに関与することを示す。
グローバル読み取りおよび書き込み
【００３０】
ATA/ATAPI仕様に従ってドライブに命令を送出するには、プログラムI/OモードすなわちPIOモードを使用する必要がある。このモードでは、PIOモード0のみをサポートする装置に対してはアクセスあたり600nSの低速であり、モード4をサポートする装置に対してはアクセスあたり120nSに過ぎない。単一の命令には、8回以上のアクセスが必要である。すべてのドライブがシーケンシャルに命令を受けなければならない場合、この回数はドライブの数だけ増加し、全体のプロセスにかなりの待ち時間を付加する。これらの命令は、ポートごとに独立したコントローラによって同時に発行することができるが、かなり複雑になってしまい費用がかさむことになる。
【００３１】
複数ドライブのアレイにわたってデータがストライプされるとき、所定のストライプの部分は各ドライブ上の同じ相対位置にある。これによって、データのアドレス、つまり、論理バッファアドレスまたはLBAは、各ドライブで同じになる。その結果、所定のストライプを読み取る命令は、アレイのすべてのドライブについて全く同じである。さらに、所定のストライプを書き込む命令も同様に同一である。これによってローカルプロセッサ（例えば、図1の符号20）は、単一ドライブに命令を送信する場合に必要な時間内で共通の命令を「送信」することができる。
【００３２】
前述のように、ドライブアレイは、取り付けられたドライブの部分集合から成る。（本発明の利点の1つは、適当な構成バイトをマッピングレジスタに単純に格納することによって、取り付けられたドライブの定義済みアレイへの編成を容易に構成および再構成できることである。） 取り付けられたドライブの部分集合からアレイが成る場合、命令（読み取り、書き込みなど）は、選択された部分集合に「送信」される。これらのドライブは一度に一つの命令を受信しなければならない。または、何らかの手段を設け、現在のアレイに関与していない物理データポートを「マスク」しなければならない。図8は、この問題に対処する一実装例を示す図である。
【００３３】
図8を参照すると、5つの物理ポートの最初の2つ（P0、P1）についてアドレス信号、ストローブ信号およびチップ選択信号CS0、CS1、DA0、DA1、DA2、DIOW、DIORが示されている。ここで、これらのアドレス信号およびストローブ信号は、5つのポートすべてに共通であることに留意する必要がある。所定のドライブの故障によってこれらの信号の他のドライブへの伝達が妨げられないように、これらの信号は個別にバッファに入れられる。ここで、バッファ80、82を参照する。所定のポートの2つのチップ選択信号CS0#、CS1#の出力ドライバは、そのポートに対するPn_SEL信号によってクオリファイされる（ゲート84、86を参照）。マッピングレジスタの現在の内容によって選択されていないいずれのポートも、アサートされたそのチップ選択のどちらも有せず、従って、該ポートは読み取りストローブおよび書き込みストローブを無視する。
【００３４】
「グローバル読み取り」は何の意味もなさないと思われるかもしれない。なぜならば、潜在的に矛盾するデータ値は、共通バス上に返されることを意味しているためである。現在説明している実施例においては、「グローバル読み取り」によって読み取りストローブ（図8のPn_DIOR#）が、すべての物理データポートに「送信」される。それらの取り付けられた記憶装置は、チップ選択（PnCS0#、PnCS1#）によってクオリファイされており、データを物理ポートに返す。当該物理ポートでは、Pn_DIOR#ストローブの立下がり縁でデータがラッチされる。この読み取りサイクルの結果としてデータ値をローカルプロセッサに返す試みはなされていない。
【００３５】
ローカルプロセッサは、その後、Pn_DIOR#ストローブサイクルの繰り返しを引き起こさない別のアドレスを使用して、ラッチされたデータのいずれも変更せずに各ポートを一度に一つ読み取る。これらのサイクルによって、ローカルプロセッサは、各データラッチに格納されている潜在的に固有の値を取り出すことができる。600nsまで要求されるPn_DIOR#サイクルは、一回実行されるだけである。各ポートにラッチされた値は、それぞれ15nsで取り出される。従って、Pn_DIOR#サイクルを5回繰り返すことに比べて有意な時間の節約になる。
【００３６】
「グローバル読み取り」装置および「グローバル書き込み」装置によって、ローカルプロセッサは、可能な最小限の時間で、現在選択されているアレイに命令を送信したり、当該アレイから制御ステータスを受信したりすることができる。新しい値をマッピングレジスタに読み込むことによって異なるサブアレイを選択するとき、制御インタフェースは、他のコードを変更せずに自動的に更新する。
ステータスオーダリング
【００３７】
前述の解説は、多数の物理ポート出力の生成について取り上げたものであり、マッピングレジスタによってそれらの物理ポート出力の方向を制御する方法について示した。これらのポートの各々は、同様にいくつかの入力信号を有する。もう一度繰り返すと、これらの信号を論理ドライブと関連付けることによって、ソフトウェアオーバーヘッドを最小限に抑えることができる。例えば、各ドライブは、コントローラからのサービス要求を信号で伝えるのに使用する割り込み出力を有する。図9は、マッピングレジスタからのPP_L0値によって制御されるマルチプレクサ90を使用して、論理データポート0に対応する物理ポートの割り込みを選択する場合の構成を示す図である。その他の論理データポートは、それぞれ同一のマルチプレクサを有する(図示されていない)。このマルチプレクサは、対応するPP_Ln値を使用してその割り込みの位置を特定する。図9では、バッファ92は、各論理データポートのマルチプレクサ（符号90など）から、選択された割り込みを取り出す。ローカルプロセッサ（図1の符号20）がこのバッファを通して割り込みステータスを読み取るとき、割り込みは、ビット0位置にある論理データポート0から開始する論理データポート順序に現れる。同じ技術を使用して、ドライブケーブルID信号、内部FIFOステータス信号などを含む、物理データポートからの内部信号と外部信号の両方をソートすることができる。この特徴によって、ローカルファームウェアは、異なる数の物理ポートを有する複数アレイに対して共通のコードシーケンスを使用することが可能になる。割り込みバッファ92に一度読み込めば、要求されるステータスビットは、常に、選択された任意のアレイに対する「ソート済み」レジスタの最下位ビットである。ビット数は、実際のポート数まで下げてマスクしてもよい。
割り込みANYおよび割り込みALL
【００３８】
図9に示すように、論理データポートからの選択された割り込みは、論理的にAND処理（論理積演算）94およびOR処理（論理和演算）96され、「割り込みALL」信号および「割り込みANY」信号が提供される。ローカルプロセッサが命令を発行したときで、かつ任意のデータが転送される前に、ローカルプロセッサは複数ドライブのいずれか（ANY）からの割り込みについて知っておく必要がある。なぜならば、1つ以上のドライブが命令を拒絶した場合や、または何らかのエラーが発生した場合があるためである。複数ドライブが一度データの転送を開始したら、ローカルプロセッサは、すべての（ALL）ドライブがいつそれらの割り込み信号をアサートしたかについて知っておく必要がある。なぜならば、これが命令の完了を示すからである。ここで留意すべきは、この種の実装例では、ドライブの数に依存せずにソフトウェアを作成できることである。（2ドライブアレイでは、各装置からの割り込み信号は2回現れる。一方、単一ドライブアレイでは、同じドライブは4回現れる。AND信号およびALL信号は、引き続き正しく機能する。）
論理アドレスマッピング
【００３９】
実行時ソフトウェアの大部分は上述のグローバルコマンドおよびステータスを利用する一方で、初期化および特定の装置内でのエラー処理を行うために、それでもなお個別の装置にアクセスする必要がある。この目的のために、各物理データポートは、ローカルプロセッサのアドレス空間の範囲内における固有のロケーションに現れる。これらのロケーションのいずれかに対するアクセスを復号化する場合、マッピングレジスタの内容にしたがって再マッピングされるならば、復号化されたアクセスが出力される。初期化中に、マッピングレジスタには「アイデンティティ」パターンが読み込まれる。すなわち、例えば、論理装置0は物理ポート0を指し、論理装置1は物理ポート1を指す。その結果、プロセッサのアドレス空間内における第1の物理ポートのロケーションから開始して、物理ポートが順に現れる。通常の動作では、マッピングレジスタには、物理的ドライブマップへロジックが読み込まれる。その後、論理ポート2から割り込みを受信した場合、ローカルプロセッサは、アイデンティティマップが読み込まれたときに物理ポート2にアクセスした固有のアドレス空間を通じて割り込みドライブにアクセスする。これによって、論理ドライブのサービスを、これらの論理ドライブが取り付けられていた物理データポートに依存しないようにすることができる。
【００４０】
図10は、論理アドレス指定機能の1つのハードウェア実装例を示す図である。プロセッサが、デバイスポート空間のためのアドレス領域にアクセスすると、8つのデコーダ100の1つが、プロセッサのアドレス線5〜7を復号化する。これらのアドレス線は、各装置に対して32バイトの空間を定義する。各空間の復号化によって、対応するポートNデコード信号（Pn_DEC）がアサートされる。仮想ポート番号7の復号化は、グローバルアクセス用の信号である。P7_DEC信号は、他のデコード信号102の各々とOR処理される。したがって、結果として出力されるポート選択信号Pn_SEL（n0〜4）が、そのポートの特定のアクセスとグローバルアクセスの両方に対してアサートされるようになる。
【００４１】
その後、各ポート選択信号は、マッピングレジスタからのPP_Ln値によって方向を制御される。8の1デコーダ104は、P2_SEL信号を取り込み、マッピングレジスタからのPP_L2値に従って当該P2_SEL信号の経路を定め、論理ポート2から物理ポート0へのチップ選択を示すL2_P0_CS形式の一組の信号を生成する。他の4つの論理ポートに対応する8の1デコーダも同一である(図示されていない)。
【００４２】
各物理ポートは、5入力ORゲート（例えば、符号106）を有する。物理ポート#2に使用されるORゲート106が図示されている。ORゲート106は、物理ポート#2に対するチップ選択のために5つの異なる転送元のOR処理を行う。ここで留意すべきは、シングルドライブサブアレイについては、チップ選択は4つのすべての論理装置によってアサートされるのに対して、デュアルドライブサブアレイについては、チップ選択は2つの論理装置によってアサートされることである。
【００４３】
上記の記述および図面においては、一種のマッピングレジスタのいくつかの例について説明したが、これは論理マッピングレジスタと呼ぶことができる。説明したように、論理マッピングレジスタによって、定義済みアレイ内の論理ドライブごとにフィールドが提供される。そのフィールド内で値は対応する物理ポート番号を示す。物理マッピングと呼ばれる別の実施例においては、レジスタによって、物理ポートまたは取り付けられたドライブごとにフィールドが提供される。各フィールド内で値は対応する論理ポート番号を示す。下記の例では、この別のマッピングレジスタについて説明する。
【００４４】
ここで、4つのドライブにわたってストライプされたデータに対してアレイを定義すると仮定する。ストライプ幅のブロックは、利用可能な各ドライブに特定のシーケンスで格納される。この後、このプロセスは繰り返される。例えば、（第５、第９のブロックなどと同様に）第1のデータブロックは、物理ポート#1に接続されたドライブに格納される。（第6、第10のブロックなどと同様に）第2のブロックは、物理ポート#2に接続されたドライブに格納される。（第7、第11のブロックなどと同様に）第3のデータブロックは、物理ポート#4に接続されたドライブに格納される。第1のデータブロックは論理ドライブ0に、第2のデータブロックは論理ドライブ1に、第3のデータブロックは論理ドライブ2に、第4のデータブロックは論理ドライブ3にそれぞれ格納される。この場合の2種類のマッピングレジスタを以下に示す。
論理マッピング
2006524401.tif 000003
物理マッピング
2006524401.tif 000004
【００４５】
本発明の基本的な原理から逸脱することなく、上記の実施例の細部に多くの変更を加えてもよいことは当業者にとって明らかであろう。したがって、本発明の範囲は、以下の特許請求の範囲のみによって決定されるべきである。
【図面の簡単な説明】
【００４６】
【図１】ホストバスとのやり取りを行うホストインタフェースと、取り付けられた複数のディスクドライブとのやり取りを行うドライブインタフェースとを提供するディスクアレイコントローラの簡略ブロック図である。
【図２Ａ】論理データポートと物理データポートとの間の直接接続を示す概念図であり、同図には、対応するマッピングレジスタの内容も示されている。
【図２Ｂ】利用可能な5つの物理データポートに4つの論理ポートを割り当てる場合の一例を示す概念図であり、同図には、対応するマッピングレジスタの内容も示されている。
【図２Ｃ】各ドライブがそれぞれ5つの利用可能な物理データポートの1つに割り当てられた2ドライブアレイを示す概念図であり、同図には、対応するマッピングレジスタの内容も示されている。
【図２Ｄ】論理ポート0〜3が物理ポート#3に連続したサイクルでデータを転送する単一ドライブシステムを示す概念図であり、同図には、対応するマッピングレジスタの内容も示されている。
【図３Ａ】図2Aのドライブ構成におけるディスク書き込み方向のXOR（排他的論理和）ロジックを示す図であり、同図には、対応するマッピングレジスタの内容も示されている。
【図３Ｂ】物理ポート2に取り付けられたドライブが故障しているという以外は、図2Aおよび図3Aと同じデータ経路に対するディスク読み取り方向のXORロジックを示す図であり、同図にもやはりマッピングレジスタの内容が示されている。
【図４】マッピングレジスタ構造の一例を示す図であり、当該マッピングレジスタは、アレイコントローラの一実施例における、論理データポートと物理データポート間のデータ経路の構成を制御する。
【図５Ａ】論理ポート#1の読み取りデータ経路におけるマルチプレクサ回路の概念図である。
【図５Ｂ】アレイコントローラの一実施例におけるディスク読み取りXORロジックを示す図である。
【図６】アレイコントローラの一実施例における、マッピングレジスタの論理ポート#1（PP_L1）フィールドに対するデコーダロジックを示す図である。
【図７Ａ】アレイコントローラの一実施例における、論理ポートから物理ポートへのデータ経路ロジックを示す図である（物理ポート#2についてのみ図示）。
【図７Ｂ】アレイコントローラの一実施例におけるディスク書き込みXORロジックを示す図である。
【図８】現在選択されているアレイに対するグローバルアクセスコマンドを可能にする、ディスクアドレス、ストローブおよびチップセレクトロジックを示す図である。
【図９】論理ドライブに関連付けるための割り込み信号ロジックを示す図である。
【図１０】論理アドレス指定のハードウェア実装例を示す図である。
【符号の説明】
【００４７】
１０  ホストバス
１４  ドライブ
１６  ホストインタフェース
１８  バッファ
２０  制御プロセッサ
２２  ドライブインタフェース
２４  マッピングレジスタ
２６  スイッチ
３０  データ経路
【図１】
2006524401.tif 000005
【図２Ａ】
2006524401.tif 000006
【図２Ｂ】
2006524401.tif 000007
【図２Ｃ】
2006524401.tif 000008
【図２Ｄ】
2006524401.tif 000009
【図３Ａ】
2006524401.tif 000010
【図３Ｂ】
2006524401.tif 000011
【図４】
2006524401.tif 000012
【図５Ａ】
2006524401.tif 000013
【図５Ｂ】
2006524401.tif 000014
【図６】
2006524401.tif 000015
【図７Ａ】
2006524401.tif 000016
【図７Ｂ】
2006524401.tif 000017
【図８】
2006524401.tif 000018
【図９】
2006524401.tif 000019
【図１０】
2006524401.tif 000020
【国際調査報告】
2006524401.tif 000021
2006524401.tif 000022