(57)【要約】【課題】  本発明はデータ転送性能を向上させるストレージ装置である。【解決手段】  本発明は、第１のデータ転送経路により互いに接続する複数のコントローラと、コントローラを制御する複数のプロセッサと、コントローラが各機器との間でデータ転送をする第２のデータ転送経路と、を備え、該コントローラは、第１のデータ転送経路と第２のデータ転送経路へデータ転送を行うデータ処理部を備え、該データ処理部は、データを構成する第１のヘッダ情報を検出するヘッダ検出部と、複数のデータから結合データを生成するデータとして前記複数のデータの転送先アドレスが連続し、データ転送経路が同一のデータを選択する選択部と、結合データの第２のヘッダ情報を生成するヘッダ生成部と、選択されたデータと第２のヘッダ情報により結合データを生成する結合データ生成手段とを備えるストレージ装置。【選択図】図7
2010033125.tif 000002
【特許請求の範囲】
【請求項１】
インターフェースを介して上位装置及び、記憶デバイスと接続し、第１のデータ転送経路により互いに接続する複数のコントローラと、
前記複数のコントローラをそれぞれ制御する複数のプロセッサと、
前記コントローラが、前記上位装置、前記記憶デバイス、前記複数のプロセッサとの間でデータ転送を行うための第２のデータ転送経路と、を備え、
前記コントローラは、
前記第１のデータ転送経路と前記第２のデータ転送経路へデータ転送を行うデータ処理部、を備え
前記データ処理部は、
データを構成する第１のヘッダ情報を検出するヘッダ検出部と、
複数のデータから結合データを生成するデータを選択する選択部と、
前記結合データの第２のヘッダ情報を生成するヘッダ生成部と、
前記選択されたデータと前記第２のヘッダ情報により結合データを生成する結合データ生成手段とを備え、
前記選択部は、前記複数のデータの転送先アドレスが連続し、データ転送経路が同一のデータを選択する、
ストレージ装置。
【請求項２】
請求項１に記載のストレージ装置であって、
前記選択部は、前記複数のデータの転送先アドレスが連続し、データ転送経路が同一であり、さらに前記複数のデータの転送長が第１の閾値以下のデータを選択する、
ストレージ装置。
【請求項３】
請求項２に記載のストレージ装置であって、
前記結合データ生成部は、前記選択されたデータの受信された順番に基づいて前記結合データを生成する、
ストレージ装置。
【請求項４】
請求項３に記載のストレージ装置であって、
前記ヘッダ生成部では、前記選択されたデータのうちで結合データの先頭のデータのアドレス情報を前記第２のヘッダ情報のアドレス情報とし、前記選択されたデータの転送長の合計を前記第２のヘッダ情報の転送長とする、
ストレージ装置。
【請求項５】
請求項１に記載のストレージ装置であって、
前記データ処理部は、さらに、
第１のバッファ容量に達した場合又は第１のタイムアウト値に達した場合にデータ転送を開始する第１のバッファと、
第２のバッファ容量に達した場合又は第２のタイムアウト値に達した場合にデータ転送を開始する第２のバッファと、
第２の閾値より大きい転送長のデータを前記第１のバッファに格納し、前記第２の閾値以下の転送長のデータを前記第２のバッファに格納するデータ格納部と、を有し、
前記複数のデータとは、前記第２のバッファに格納されたデータである、
ストレージ装置。
【請求項６】
請求項５に記載のストレージ装置であって、
（前記第１のバッファ容量）＞（前記第２のバッファ容量）の関係である
ストレージ装置。
【請求項７】
請求項５記載のストレージ装置であって、
（前記第１のタイムアウト値）＞（前記第２のタイムアウト値）の関係である
ストレージ装置。
【請求項８】
請求項１に記載のストレージ装置であって、
前記データ処理部を複数有し、さらに、
前記複数のデータ処理部と接続する前段スイッチと、
前段スイッチと、前記複数のデータ処理部とを接続する後段スイッチとを備え、
前記前段スイッチにおいて前記複数のデータ処理部から転送される第１のデータを多重することで第１の多重データを生成し、前記後段スイッチにおいて前記複数のデータ処理部から転送される第２のデータと、前記第１の多重データにより、第２の多重データを生成する多重化制御部と、を有する、
ストレージ装置。
【請求項９】
請求項8に記載のストレージ装置であって、
前記多重化制御部は、前記第１のデータの前記前段スイッチに対するリクエスト信号を基に、第１の多重リクエスト信号を生成し、前記第１の多重リクエスト信号を前記第１の多重データの前記後段スイッチに対するリクエスト信号とする、
ストレージ装置。
【請求項１０】
インターフェースを介して上位装置及び、記憶デバイスと接続し、第１のデータ転送経路により互いに接続しデータ処理部を有する複数のコントローラと、前記複数のコントローラをそれぞれ制御する複数のプロセッサと、前記コントローラが前記上位装置、前記記憶デバイス、前記複数のプロセッサとの間でデータ転送を行うための第２のデータ転送経路と、を備えるストレージ装置のデータ転送方法であって、
前記データ処理部は、
データを構成する第１のヘッダ情報を検出し、
複数のデータから結合データを生成するデータを選択し、
前記結合データの第２のヘッダ情報を生成し、
前記選択されたデータと前記第２のヘッダ情報により結合データを生成し、
前記第１のデータ転送経路又は前記第２のデータ転送経路へ前記結合データを転送し、
前記複数のデータから前記結合データを生成するデータを選択する際、前記複数のデータの転送先アドレスが連続し、データ転送経路が同一のデータを選択する、
データ転送方法。
【請求項１１】
請求項１０に記載のデータ転送方法であって、
前記複数のデータから前記結合データを生成するデータを選択する際、前記複数のデータの転送先アドレスが連続し、データ転送経路が同一であり、さらに前記複数のデータの転送長が第１の閾値以下のデータを選択する、
データ転送方法。
【請求項１２】
請求項１１に記載のデータ転送方法であって、
前記選択されたデータと前記第２のヘッダ情報により前記結合データを生成する際、前記選択されたデータの受信された順番に基づいて前記結合データを生成する、
データ転送方法。
【請求項１３】
請求項１２に記載のデータ転送方法であって、
前記結合データの前記第２のヘッダ情報を生成する際、前記選択されたデータのうちで前記結合データの先頭のデータのアドレス情報を前記第２のヘッダ情報のアドレス情報とし、前記選択されたデータの転送長の合計を前記第２のヘッダ情報の転送長とする、
データ転送方法。
【請求項１４】
請求項１０に記載のデータ転送方法であって、
前記データ処理部は、第１のバッファ容量に達した場合又は第１のタイムアウト値に達した場合にデータ転送を開始する第１のバッファと、第２のバッファ容量に達した場合又は第２のタイムアウト値に達した場合にデータ転送を開始する第２のバッファとを備え、
第２の閾値より大きい転送長のデータを前記第１のバッファに格納し、
前記第２の閾値以下の転送長のデータを前記第２のバッファに格納し、
前記複数のデータとは、前記第２のバッファに格納されたデータである、
データ転送方法。
【請求項１５】
請求項１４に記載のデータ転送方法であって、
（前記第１のバッファ容量）＞（前記第２のバッファ容量）の関係である
データ転送方法
【請求項１６】
請求項１４記載のデータ転送方法であって、
（前記第１のタイムアウト値）＞（前記第２のタイムアウト値）の関係である
データ転送方法
【請求項１７】
請求項１０に記載のデータ転送方法であって、
前記コントローラは、前記データ処理部を複数備え、さらに、前記複数のデータ処理部と接続する前段スイッチと、前段スイッチと、前記複数のデータ処理部とを接続する後段スイッチとを備え、
前記前段スイッチにおいて前記複数のデータ処理部から転送される第１のデータを多重することで第１の多重データを生成し、
前記後段スイッチにおいて前記複数のデータ処理部から転送される第２のデータと、前記第１の多重データにより、第２の多重データを生成する、
データ転送方法。
【請求項１８】
請求項１７に記載のデータ転送方法であって、
前記第１のデータの前記前段スイッチに対するリクエスト信号を基に、第１の多重リクエスト信号を生成し、
前記第１の多重リクエスト信号を前記第１の多重データの前記後段スイッチ手段に対するリクエスト信号として後段スイッチに送信する、
データ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置及びデータ転送方法に関し、特に、キャッシュメモリやホスト、ハードディスクドライブ（以下、ＨＤＤ）等との間に各データ転送経路を備えるコントローラにより構成されるストレージ装置及びデータ転送方法に関する。
【背景技術】
【０００２】
従来、ストレージ装置は、例えば、ホストインターフェイス、キャッシュメモリ、ＨＤＤ等が接続されるドライブインターフェイスと、データ転送を制御するコントローラと、これらを接続するデータ転送経路と、システム全体の制御を行うマイクロプロセッサとを一つの単位（モジュール）とし、専用データ転送経路で接続された複数のモジュールにより構成される。各モジュールは、電源部から独立して電力を供給される。また、各モジュールは、あるホストからの転送データを各モジュールに備えるキャッシュメモリへそれぞれ書き込む。これらの対策により、転送データ消失を回避し、システムの信頼性向上を図っている（特許文献1）。
【０００３】
モジュール間を接続する専用データ転送経路のデータ転送は、別モジュールのキャッシュメモリへの転送データや、ホストインターフェイス、ドライブインターフェイス、キャッシュメモリの間の転送データや、プロセッサ間で共有する制御データなどが、時分割に多重されて転送される。転送データは、転送元や転送先によって、転送長が大きく異なる場合がある。例えば、マイクロプロセッサがホストインターフェイス、ドライブインターフェイスへ制御データを転送する際には、他のデータに比べ転送長の短い制御データを頻繁に転送する。そして、転送長の短い制御データと、転送長の長いデータが、専用データ転送経路上で時分割に多重される。データ多重化の際に発生するオーバーヘッドにより、送信側と受信側間でデータ転送が遅延し、転送時間が増加傾向にある。さらに、同様の理由により、データ転送時間のばらつきが大きくなる傾向にある。
【０００４】
転送時間及び転送時間のばらつきを抑制する方法の一例として、各転送チャンネルにおけるデータ転送を共通形式のセル（パケット）に変換して、転送先が同一のセルを時分割で多重する方法が開示されている（特許文献２）。該方法により、各転送チャンネル間のデータ転送に対する、遅延時間のばらつきを抑制することができる。
【０００５】
【特許文献１】特開２００５−４４０１０号公報
【特許文献２】特開２００１−１１９４１２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ストレージ装置は、ホストインターフェイス、キャッシュメモリ、ＨＤＤが接続されるドライブインターフェイスと、データ転送を制御するコントローラと、これらを接続するデータ転送経路と、システム全体の制御を行うマイクロプロセッサと、により一つの単位（モジュール）を構成し、専用データ転送経路を介して接続された、複数の該モジュールにより構成される。該ストレージ装置において、各モジュール間で専用データ転送経路を用いてデータ転送の際に、通常のデータだけでなく、マイクロプロセッサ等による制御データが転送される。したがって、転送データの多重度が増加する傾向にある。
【０００７】
多重度の増加に伴い、単位時間あたりで、ある転送データに続く別の転送データとの間に発生するオーバーヘッド時間が増加する。そして、専用データ転送経路が備える転送帯域を十分に利用できず、専用データ転送経路における転送レートが低下する可能性がある。その結果、ストレージ装置全体の性能が低下するという課題がある。
【０００８】
また、マイクロプロセッサの制御データは、コントローラやホストインターフェイス、ドライブインターフェイスが備える制御レジスタへの設定値である。したがって、制御データは、通常のデータに比べ転送長が短い。一方、制御データを転送するコントローラは、コントローラ内に備えられたバッファ容量を超えるまで、データを転送しない。従って、制御データに対する転送時間のばらつきが大きくなり、マイクロプロセッサの制御命令によって制御されるコントローラ、ホストインターフェイス、ドライブインターフェイスに対する制御レスポンスの転送性能が低下するという課題がある。
【０００９】
バッファ容量を超えない場合にも、一定時間経過後に、受信バッファ内に蓄積されたデータを強制的に読み出し、転送することもある。この処理をタイムアウト処理という。受信バッファ内に蓄積されたデータがバッファ容量を満たさずに転送される場合でも、転送データはバッファ容量単位で転送される。そのため、例えば、転送データは、受信バッファに格納されているデータと、その各格納データ量とバッファ容量の差分量に当たる、ダミーデータ（無効データ）を伴い、転送される。さらに、ダミーデータを伴う制御データを専用データ転送経路上で転送すると、単位時間当たりのデータ転送量に対する有効データ量の割合が減少し、実効転送レートは著しく低下する。つまり、専用データ転送経路が備える転送帯域がダミーデータの転送によって無駄に使用され、マイクロプロセッサの制御データにより制御されるホストインターフェイス、ドライブインターフェイスに対する制御レスポンスが著しく低下するという課題がある。
【００１０】
さらに、以上説明したダミーデータを伴う転送データと、ホスト、ドライブインターフェイス、キャッシュ間の転送データが専用データ転送経路上で多重される。従って、多重される転送データに必要な合計転送レートが専用データ転送経路に備える最大転送レートを超えた場合には、各転送データの転送レートが低下し、ストレージ装置のデータ処理能力が著しく低下するという課題がある。
【００１１】
一方、ストレージ装置全体の性能を拡張する際、モジュール構成を増やし、ホストインターフェイス、ドライブインターフェイス数を増やすことでマルチコントローラ構成とする。該構成においても、モジュール間を接続する専用データ転送経路を用いたデータ送信は、上記同様の課題がある。
【００１２】
また、特許文献２に開示されている方法を、前記モジュール構成のストレージ装置に適用する場合には、以下の課題がある。
【００１３】
特許文献２に開示されている方法では、モジュール間の専用データ転送経路を用いてデータ転送を行う際に、転送チャンネル毎に共通形式のセル（パケット）にまとめて転送する。しかし、共通形式のセルにまとめる際には、転送されるデータの転送長を考慮しない。従って、共通セルを生成するために必要なデータ量を蓄積する必要があり、転送長の短いデータの転送遅延が著しく発生する。
【００１４】
さらに、特許文献２では、高速スイッチの転送データ多重度向上を目的としており、各共通セルを前段で多重し、他の多重データと後段で多重する。後段の多重度向上により、多重化する際に発生するオーバーヘッドの抑制はできない。
【００１５】
ストレージ装置内でデータを転送する際、転送されるデータの転送長は可変長であり、データ転送経路毎に転送発生の頻度が異なる。そして、転送されるデータの転送長や転送頻度を考慮し、専用データ転送経路上の多重度を抑制し（オーバーヘッドを抑制し）、効率のよいデータ転送を行うことが望ましい。更に転送データの転送時間ばらつきや遅延を抑制し、ストレージ装置のレスポンスを向上させることが望ましい。
【００１６】
ストレージ装置全体の規模を拡張するために、モジュール数を増す場合にも、同様にモジュール間の専用I／Oの転送を効率よく行い、ストレージ装置のレスポンス向上を図ることが望ましい。
【課題を解決するための手段】
【００１７】
かかる課題を解決するために本発明のストレージ装置は、インターフェースを介して上位装置及び、記憶デバイスと接続し、第１のデータ転送経路により互いに接続する複数のコントローラと、前記複数のコントローラをそれぞれ制御する複数のプロセッサと、前記コントローラが、前記上位装置、前記記憶デバイス、前記複数のプロセッサとの間でデータ転送を行うための第２のデータ転送経路と、を備え、前記コントローラは、第１のデータ転送経路と第２のデータ転送経路へデータ転送を行うデータ処理部、を備え、前記データ処理部は、データを構成する第１のヘッダ情報を検出するヘッダ検出部と、複数のデータから結合データを生成するデータを選択する選択部と、前記結合データの第２のヘッダ情報を生成するヘッダ生成部と、前記選択されたデータと前記第２のヘッダ情報により結合データを生成する結合データ生成手段とを備え、前記選択部は、前記複数のデータの転送先アドレスが連続し、データ転送経路が同一のデータを選択する、ストレージ装置である。
【発明の効果】
【００１８】
本発明のストレージ装置を用いると、データ転送性能を向上させることができる。
【発明を実施するための最良の形態】
【００１９】
本発明の実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている諸要素およびその組合せの全てが発明の解決手段に必須であるとは限らない。
（１）実施例１
図１は、本発明のストレージ装置１００について、実施例１を示す装置ブロック図である。以下、ストレージ装置１００は以下に説明する各部位により構成される。
【００２０】
コントローラ１ａ、１ｂ（ＣＴＬ０、ＣＴＬ１）は、ホストインターフェイス２ａ、２ｂ（Ｈｏｓｔ  Ｉ／Ｆ０、Ｈｏｓｔ  Ｉ／Ｆ１）、ドライブインターフェイス３ａ、３ｂ（Ｄｒｖ  Ｉ／Ｆ０、Ｄｒｖ  Ｉ／Ｆ１）、キャッシュメモリ４ａ、４ｂ（Ｃａｃｈｅ０、Ｃａｃｈｅ１）、マイクロプロセッサ５ａ、５ｂ（ＭＰ０、ＭＰ１）の、それぞれの間の、データ転送経路を介したデータ転送を制御するコントローラである。コントローラ１ａ、１ｂは、デュアルデータ転送経路（Ｄｕａｌ Ｉ／Ｏ）により接続されており、コントローラが二重化される構成である。さらに、ストレージ装置の規模を拡張するために、他のモジュールと接続するインターフェースであるクロスデータ転送経路（Ｃｒｏｓｓ Ｉ／Ｏ）も備える。クロスデータ転送経路は、第４の実施例（図１４）にて詳細に説明する。
【００２１】
ホストインターフェイス２ａ、２ｂは、ホストとの通信プロトコルにしたがい、パケット単位の転送を制御するインターフェイスである。
【００２２】
ドライブインターフェイス３ａ、３ｂは、ハードディスクドライブとの通信プロトコルにしたがい、セクタ単位でデータ転送を制御するインターフェイスである。
【００２３】
キャッシュメモリ４ａ、４ｂは、ホストインターフェイス２ａ、２ｂ及びドライブインターフェイス３ａ、３ｂからの転送データを一時的に蓄積するメモリである。ＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）に代表される高速メモリがキャッシュメモリとして用いられる。キャッシュメモリ４ａ、４ｂを設けることで、ドライブ書き込み時のホスト転送データの消失を防止できる。また、キャッシュヒットによるホストへのリードレスポンス性能を向上させることができる。
【００２４】
マイクロプロセッサ５ａ、５ｂは、コントローラ１ａ、１ｂ、ホストインターフェイス２ａ、２ｂ、ドライブインターフェイス３ａ、３ｂを各々制御する。マイクロプロセッサ５ａ、５ｂは、メモリコントローラハブ６ａ、６ｂ（Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒ  Ｈｕｂ：ＭＣＨ）を介して、コントローラ１ａ、１ｂ及びプロセッサメモリ７ａ、７ｂ（ＭＰ  Ｍｅｍ０、ＭＰ  Ｍｅｍ１）と接続する。メモリコントローラハブ６ａ、６ｂは、コントローラ１ａ、１ｂと接続する。メモリコントローラハブ６ａ、６ｂ及びプロセッサメモリ７ａ、７ｂは、ＭＰＩ／Ｏ（ＭＰ  Ｉ／Ｏ）によりコントローラ１ａ、１ｂに接続する。
【００２５】
ドライブインターフェイス３ａ、３ｂには、ハードディスクドライブが接続される。該ハードディスクドライブにより、論理ボリュームを構成する。そして、マイクロプロセッサ５ａ、５ｂ（ＭＰ０、ＭＰ１）が、ホスト側から見たアクセス空間である論理ボリューム８ａ、８ｂ（ＬＵ０、ＬＵ１  ＬＵ：Ｌｏｇｉｃａｌ  Ｕｎｉｔ）を管理する。
【００２６】
図２は、コントローラ１ａ、１ｂの内部構成図である。コントローラ１に接続される各データ転送経路（ＭＰデータ転送経路、クロスデータ転送経路、ホストデータ転送経路（Ｈｏｓｔ Ｉ／Ｏ）、ドライブデータ転送経路（Drｖ Ｉ／Ｏ）、デュアルデータ転送経路上を、例えば、高速シリアルバス規格であるＰＣＩエクスプレス（ＰＣＩ‐Ｅｘｐｒｅｓｓ）を介してデータが転送される。
【００２７】
ＤＤＲ  Ｉ／Ｆ１０は、キャッシュメモリ４とコントローラ１間のデータ転送を制御する。ＤＤＲ  Ｉ／Ｆ１０及びキャッシュメモリ4は、キャッシュデータ転送経路で接続される。
【００２８】
PCI  I/F（１１ａ〜１１ｅ）は、物理レイヤー、リンクレイヤー、トランザクションレイヤー等の各レイヤーにおける通信プロトコルに従いデータ転送を制御する。例えば、トランザクションレイヤーのデータ転送は、ＴＬＰ（Ｔｒａｎｓａｃｔｉｏｎ  Ｌａｙｅｒ  Ｐａｃｋｅｔ）形式のパケット単位で行われる。
【００２９】
メモリコントローラ１２（ＭＥＭ  ＣＴＬ）は、キャッシュメモリに対するリード、ライト、ＲＭＷ（Ｒｅａｄ Ｍｏｄｉｆｙ Ｗｒｉｔｅ）や、ＤＲＡＭに対するリフレッシュ動作などの、コマンドの発行を制御する。また、メモリコントローラ１２は、コントローラ1内の高速スイッチ（SW）１５と接続する。
【００３０】
ブリッジ回路１３ａ〜１３ｅ（ＢＲＧ  ＭＰ、ＢＲＧ  Ｃｒｏｓｓ、ＢＲＧ  Ｄ、ＢＲＧ  Ｄｕａｌ、ＢＲＧ  Ｄ）は、コントローラ１内の高速スイッチ１５と接続し、転送されるデータに対するヘッダ受信バッファ、送信バッファを含むブリッジ回路である。ブリッジ回路１３ａ〜１３ｅは、バッファを備えることで、転送データを構成するヘッダ情報の保持、書き換えが可能であり、コントローラ内、コントローラ１ａ、１ｂ間のデータの転送に適したパケット変換機能を備える。
【００３１】
ＤＭＡ回路１４ａ、１４ｂ(Ｄ  ＤＭＡ、Ｈ  ＤＭＡ)は、ブリッジ回路１３ｅ（ＢＲＧ  Ｈ）、ブリッジ回路１３ｃ（ＢＲＧ  Ｄ）と接続し、転送元つまりリクエスタとして、各データ転送経路を介した転送動作を制御する。
【００３２】
高速スイッチ（ＳＷ）１５において、複数の転送元から同一転送先へ複数のデータの転送要求（リクエスト）が発生した場合、アービタ１６の制御により、各転送元からの転送データを時分割多重して転送する。アービタ１６は、同時発生のデータの転送要求に対し、決められた優先順位に従い選択を行う。
【００３３】
コントロールレジスタ（ＣＴＬ  Ｒｅｇｉｓｔｅｒ）１７は、コントローラ内部動作の制御や、内部動作の状態に関する情報を取得する制御レジスタである。レジスタ長は、データの最小データ長１ＤＷ（Ｄｏｕｂｌｅ  Ｗｏｒｄ）、４バイトである。マイクロプロセッサ５ａ、５ｂはＭＰデータ転送経路を介してコントロールレジスタにアクセスし、制御データの転送や、動作状態の取得によりコントローラを制御する。
【００３４】
ＤＭＡ回路２０（Ｍｕｌｔｉ  ＤＭＡ）は、マイクロプロセッサ５、キャッシュメモリ４との各データ転送経路を介した転送を制御する。
【００３５】
次に、ＴＬＰ構成を説明する。
【００３６】
図３は、図１のストレージ装置１００を構成するコントローラ内のデータ転送時や、コントローラ１ａ、１ｂ間のデータ転送時に用いられるＴＬＰフォーマットを示す。
【００３７】
ＴＬＰフォーマットしたデータは、ヘッダ部とデータ部より構成される。
【００３８】
図３（ａ）は、転送元から転送先にデータを転送する場合のライトコマンドであり、ヘッダと転送データにより構成される。
【００３９】
図３（ｂ）は、ライトコマンドに対するステータス応答（ノン・ポステッド：Ｎｏｎ‐Ｐｏｓｔｅｄ）を転送するための応答パケット（ライト応答）であり、ライトコマンドに対するエラーステータスが含まれる。
【００４０】
図３（ｃ）は、リードコマンドであり、ヘッダのみで構成される。図３（ｄ）は、リードコマンドに対するリード応答（コンプリーション）であり、ヘッダと、転送元（コンプリータ）からの転送データと、エラーステータスとにより構成される。
【００４１】
図３（ａ）及び図３（ｄ）を構成するデータ長は、ヘッダ内の転送長（Ｌｅｎｇｔｈ）によって決定される。例えば、マイクロプロセッサから、コントローラレジスタ、キャッシュ、ホストインターフェイス、ドライブインターフェイス内の制御レジスタに対しアクセスを行う場合、最小データ長は１ＤＷ（Ｄｏｕｂｌｅ  Ｗｏｒｄ）、４バイトである。転送長：Ｌｅｎｇｔｈは８ビットより最大２５６ＤＷ、１０２４バイトのデータ転送に対応する。
【００４２】
図３（ｅ）は、各コマンドのヘッダに対し、コントローラ内、コントローラ１ａ、１ｂ間のデータの転送に最適化した部分を示している。ＴＬＰヘッダは、データの転送先を示すコンプリータＩＤとデータの転送元を示すリクエスタＩＤを有する。そして、コンプリータＩＤとリクエスタＩＤは各々、コンプリータ又はリクエスタを有するコントローラを識別するＬＳＩ番号や、転送元及び、転送先に対するデータ転送経路を識別するＦｕｎｃ.（Ｆｕｎｃｔｉｏｎ）番号を有する。なお、コンプリータＩＤ、リクエスタＩＤは、マイクロプロセッサ５や、コントローラ１自身によって、各ブリッジ回路等において付与され、ＴＬＰの転送を制御する。
【００４３】
タグ（Ｔａｇ）番号は、例えば、あるリード命令に対し、そのＴＬＰに含まれるタグ番号を、全てのリード応答に引継ぎ、リクエスタ要求に対する応答パケットの識別に用いる。
【００４４】
その他ヘッダの構成ビットは、ＰＣＩエクスプレスで規定されるＴＬＰフォーマットに準拠しており、説明を省略する。コントローラと接続されるデータ転送経路（Ｈｏｓｔ  Ｉ／Ｏ、Ｄｒｖ  Ｉ／Ｏ、ＭＰ  Ｉ／Ｏ）間のTLP転送には、以上説明したＴＬＰヘッダは適用されない。当該ＴＬＰ転送には、ＰＣＩエクスプレスのＴＬＰフォーマットに完全に準拠したフォーマットが適用される。ヘッダはコントローラ内の各ブリッジ回路内で付け替えを行うことで、ＴＬＰの互換性を維持する。
【００４５】
図４を用い、ストレージ装置１００内のデータ転送を説明する。データ転送の一例を以下に示す。
【００４６】
５０は、ホスト転送データを受信したホストインターフェイスの属するコントローラと、デュアルデータ転送経路（Ｄｕａｌ  Ｉ／Ｏ）を介して接続されたコントローラそれぞれに接続されるキャッシュメモリへ書き込む、二重書き処理を示す。
【００４７】
５１は、キャッシュメモリ上のデータをドライブインターフェイスへ転送する処理や、ドライブインターフェイスにおいて受信したデータをキャッシュメモリに転送する処理などのＤｒｖ転送処理示す。
【００４８】
５２は、キャッシュメモリ上のデータをホストインターフェイスへ転送するＨｏｓｔ転送処理を示す。
【００４９】
５３は、マイクロプロセッサとコントローラ内のコントロールレジスタ、キャッシュメモリ、ホストインターフェイス、ドライブインターフェイス間のデータ転送処理であるＭＰアクセス処理を示す。
【００５０】
そして、マイクロプロセッサ５はコントローラ１を制御することで各転送処理（５０〜５３）を行う。各転送処理の際の、制御方法の具体例を以下に説明する。
【００５１】
まず、Ｄｒｖ転送処理５１と、Ｈｏｓｔ転送処理５２を組合せて実現する、ホストへのデータ転送動作を説明する。一例として、ホストからのアクセスに応じて、ＬＵ０からデータをリードし、キャッシュメモリ(Ｃａｃｈｅ０)へ転送し、Ｃａｃｈｅ０から各ホストインターフェイス(Ｈｏｓｔ Ｉ／Ｆ)に転送する場合について説明する。ＬＵ０を制御するコントローラ０(ＣＴＬ０)を実行するマイクロプロセッサ(ＭＰ０)が、ＣＴＬ０が備えるＤＭＡ回路１４ｂ(Ｄ  ＤＭＡ)を起動し、ＬＵ０からリードしたデータをＣａｃｈｅ０へ転送する。そして、マイクロプロセッサ(ＭＰ０)が、転送先ホストインターフェイス(Ｈｏｓｔ Ｉ／Ｆ０)が属するＣＴＬ０内のＤＭＡ回路１４ａ(Ｈ  ＤＭＡ)を起動し、ＬＵ０に対するデータを転送する。
【００５２】
次にＣａｃｈｅ二重書き５０と、Ｄｒｖ転送５１を組合せて実現する、ＬＵへのデータ転送（ＬＵライト）動作を説明する。一例として、ホストインターフェイス(Ｈｏｓｔ  Ｉ／Ｆ０)においてホストよりデータを受信し、各キャッシュメモリ(Ｃａｃｈｅ０、１)に二重書きした後、該データをＣａｃｈｅ０からＬＵ０が接続されるドライブインターフェイス（Ｄｒｖ  Ｉ／Ｆ０）に転送する場合について説明する。Ｃａｃｈｅ二重書き処理５０は、ホストインターフェイス(Ｈｏｓｔ  Ｉ／Ｆ０)への転送データに対し、HOST  Ｉ／Ｆ０を制御するコントローラ０(CTL０)を実行するマイクロプロセッサ(MP０)が、ＣＴＬ０内のＤＭＡ回路１４ａ(Ｈ  ＤＭＡ)を起動することで行われる。更にHDMAに対し、転送先をＣａｃｈｅデータ転送経路、Ｄｕａｌデータ転送経路に指定し、ブリッジ回路(ＢＲＧ  Ｈ)において、受信データに対するＴＬＰを転送先別にそれぞれ生成し、転送する。これは図３のＴＬＰヘッダ内のコンプリータＩＤを指定で成し遂げられる。次にＣａｃｈｅ０への書き込み後、ＣＴＬ０内のＤＭＡ回路１４ｂ(Ｄ  ＤＭＡ)を、マイクロプロセッサ（ＭＰ０）が起動し、ＬＵ０へデータを転送する。
【００５３】
ストレージ装置内では、ホストからの転送要求に従い、転送動作が、複数のホストインターフェイス、ドライブインターフェイスに対して、同時に発生する。従って、デュアルデータ転送経路（Dual I/O）上を、各転送処理に対するデータは、時分割多重化され転送される。さらに、マイクロプロセッサにより制御データが頻繁に転送されるため、データ多重度が増加する。多重度の増加によってコントローラ内の高速スイッチ（ＳＷ）１５ではデータ多重のための転送経路切り替えが頻発し、切り替えに伴うオーバーヘッド時間が増加する。オーバーヘッド時間の増加は、デュアルデータ転送経路（Ｄｕａｌ  Ｉ/Ｏ）の転送帯域を無駄に浪費し、データ転送レートが低下する。
【００５４】
次に、図５を用いて実施例１を説明する。図５は一例として、マイクロプロセッサ、ホスト、ドライブの各データ転送経路（MP I/O、Host I/O、Drv I/O）からのデータを高速スイッチ（SW）15を用いて時分割多重し、Dual データ転送経路へ転送するコントローラの一部を示す構成図である。更に、可変長パケットを処理するブリッジ回路（ＢＲＧ ＭＰ１３ａ、ＢＲＧ Ｈ１３ｃ、ＢＲＧ Ｄ１３ｅ）の詳細な構成図を示す。ブリッジ回路はPCI I/Fで受信したデータのヘッダを検出するヘッダ検出部と、ヘッダを保持するヘッダバッファ、ヘッダ内の情報を解析するヘッダ解析部、データを保持するデータバッファ、バッファ読出しを強制的に行うタイムアウト処理に利用するタイマー、複数の短い転送長のデータをまとめて結合データを生成し、結合データにヘッダ情報を付加する結合データ生成部より構成される。
【００５５】
ヘッダバッファ容量は、図３のヘッダ長４ＤＷ分を備える。ヘッダバッファ容量は、一例であって、これに限定されるものではない。また、ヘッダバッファの数については、図６で説明する複数のヘッダ情報に対する処理を行う目的で、2つ以上設ける。ただし、ヘッダバッファ数はこれに限定されるものではない。
【００５６】
データバッファ容量は、ＴＬＰフォーマットされたデータの最大転送長１０２４バイト(１Ｋバイト)に対応するため、データ分の１KBとTLPヘッダ分の4DW、補償コード（ECRC）1DWとする。またPCI I/Fからのバッファへの書込み、高速スイッチへの転送に伴うバッファ読出しを同時に行う目的で、バッファ数は2つ以上設けられる。
データバッファ容量も、ヘッダバッファ容量と同様に、一例であって、これに限定されるものではない。ただし、ヘッダバッファ容量よりデータバッファ容量の方が、容量が大きいことが好ましい。
【００５７】
受信したデータをバッファに保持したままでは、図４で説明の転送処理が滞り、データ転送性能が劣化する。そこで、ブリッジ回路はタイマーを備える。タイマーは、データバッファへの書き込み開始でカウントを開始し、タイムアウト値に達することでタイムアウト処理に遷移する。タイムアウト処理では、データバッファ内全てのデータを強制的に読み出し、転送する。タイムアウト時間はマイクロプロセッサより設定される。タイムアウト処理によって、バッファ内のデータが全て読出されるが、データバッファ容量に満たずに転送される。従って受信されたバッファ内のデータ転送の際には、そのデータ容量と全データバッファ容量の差分に相当するデータ量のダミー（無効）データを伴って転送される。ダミーデータは、転送元或いは、転送先で破棄される無効データである。従って、ダミーデータが増加すると伝送路帯域を無駄遣いし、単位時間あたりの転送データ量に対する有効データ量が減少するため、転送レート低下を招く原因となる。
【００５８】
アービタ１６は、タイムアウト発生時や、バッファ容量分のデータ書き込み終了後、ブリッジ回路より生成されるリクエスト信号によって高速スイッチ（ＳＷ）上でのデータ多重を制御し、Ｄｕａｌ  データ転送経路に転送する。ブリッジ回路は、アービタからの転送完了（ＡＣＫ）を受け、バッファ内データの転送を行った後でデータバッファを開放し、次の受信データに対するバッファリングを開始する。
【００５９】
また図５では便宜上、Ｃａｃｈｅデータ転送経路は図示していないが、Ｃａｃｈｅデータ転送経路から、Ｄｕａｌデータ転送経路に転送する場合も考えられる。
【００６０】
次に、ブリッジ回路で行わる結合データ生成処理を、図６のフローチャートを用いて説明する。図６は、受信した複数のデータから結合データと生成する場合の判断方法及び、高速スイッチ（SW）への転送制御方法を示す。
【００６１】
まず、各インターフェースを介してデータを受信する（Ｓ６１）。その後、受信したデータをデータバッファに格納すると共に、該データのヘッダ部はヘッダバッファへ格納する。そして、データを受信する毎に、同様に、データバッファ及びヘッダバッファに格納する（S６2）。
【００６２】
複数のデータに対するヘッダをヘッダバッファへ格納すると、ヘッダ解析部において、ヘッダ内に含まれる各情報（転送長：Ｌｅｎｇｔｈ、転送先コントローラ番号、転送先、転送先アドレス等）を検出し、解析する（Ｓ６３）。解析結果より、各データの転送長：Ｌｅｎｇｔｈが、ある転送長（規定長）であるかどうかを判定する（Ｓ６４）。例えば、判定の対象となる2つ以上のデータの転送長が最小アクセス単位1DW（4バイト）を規定長とし、それとの一致を判定する。Ｓ６４にて条件が成立しない場合には、Ｓ６７に遷移する。Ｓ６７は後述する。Ｓ６４にて条件が成立する場合には、判定対象である2つ以上のヘッダ情報から、転送先コントローラ番号の一致、転送先の一致、転送先アドレスの連続を判定する（Ｓ６５）。Ｓ６５にて条件が成立しない場合には、Ｓ６７に遷移する。Ｓ６５にて条件が成立する場合には、複数の受信されたデータをまとめ、結合データとして転送可能な条件が成立するため、結合データのヘッダ情報を生成する。該ヘッダ情報は、結合データの転送先先頭アドレス値、結合データの転送長：Length等である（S６6）。
【００６３】
次に、データバッファ容量、タイムアウト発生をを判定（Ｓ６７）する。受信データ量がデータバッファ容量を満たす場合、又は、タイムアウト発生の場合には、アービタ１６に対するリクエスト信号を生成する。そして、アービタからのアクナリッジ信号を受信すると、データバッファからデータの読出しを開始する（Ｓ６８）。Ｓ６７にて条件不成立の場合は、Ｓ６１以降の処理を継続する。データ転送開始後、結合データに含まれる先頭データを読出し、Ｓ６６で生成したヘッダを付加し、結合データを生成する（Ｓ６９）。その後、高速スイッチ（ＳＷ）により、他のデータと時分割多重して転送され、デュアルデータ転送経路を経由して、転送先へ出力される。
【００６４】
なおＳ６４の判定は、転送長が、最小アクセス単位1DW（4バイト）でであること限定されず、保持した複数のヘッダ情報に含まれる転送長：ｌｅｎｇｔｈの一致により判定してもよい。この場合、Ｓ６５のアドレス連続性の判定は、一致した転送長がアドレス値の変化分であり、（あるヘッダの転送アドレス）＋（一致検出した転送長）＝（次のヘッダの転送アドレス）との条件式を満たせば、アドレス連続性が確認できる。さらにＳ６４の判定は、転送長：ｌｅｎｇｔｈがある規定長以下を条件として判定してもよい。
【００６５】
また、本実施例はＳ６４とＳ６５の判定条件をもとに、結合データの生成を判定するが、Ｓ６５を満たすのみで、結合データの生成を判定してもよい。例えば、転送長が異なる場合（Ｓ６４にて判定が成立しない場合）でも、アドレス連続性を確認した場合（Ｓ６５にて判定が成立する場合）には、それらを結合データとしてまとめることもできる。この場合のＳ６５における判定方法は、（あるヘッダの転送アドレス）＋（そのヘッダの転送長）＝（次のヘッダの転送アドレス）の条件式を満たすことでアドレス連続性が確認できる。  Ｓ６４の判断によって、転送長の短い複数データを結合データとしてまとめることができ、オーバヘッドを低減することが可能となる。また、Ｓ６５の判断によって、転送先の条件を考慮した結合データとすることができる。転送先コントローラが同一で、転送先のアドレスが連続しているため、まとまったデータを分解することなく、そのまま書き込むことができる。
【００６６】
図５のブリッジ回路（１３ａ、１３ｃ、１３ｅ）で行われる結合データの生成動作（図７）について、具体例を用いて説明する。図７（ａ）は、一例としてマイクロプロセッサがコントロールレジスタ（ＣＴＬ Ｒｅｇｉｓｔｅｒ １７）に転送長１ＤＷのデータを連続して転送し、タイムアウト発生でデータバッファから強制的に読出す場合を示している。具体的には、ＭＰ  データ転送経路を介して、ヘッダに含まれるアドレスが連続する転送されるデータ（Ｍ０〜Ｍ４）と、転送長の長いデータ（Ｍ５）とを連続してＩ／Ｆにて受信し、それ以降のデータ受信が発生しない場合を示す。連続する１ＤＷの転送として、例えば、連続したアドレスのコントロールレジスタに対するアクセスが考えられる。
【００６７】
ブリッジ回路（ＢＲＧ ＭＰ）のヘッダ解析部では、ヘッダバッファに保持された複数のヘッダ情報から得られる転送長と規定値との一致を判定する。そして、転送先のコントローラ番号、転送先の一致、転送先アドレスの連続性を判定する。転送長が規定値と一致し、転送先コントローラの一致、及び転送先アドレスが連続する場合、転送先アドレスの連続するデータをまとめた結合データに対するヘッダ情報を生成する。ヘッダ情報の中で、転送先のコントローラ番号、転送先は、結合データとしてまとめる各転送データに対する転送先コントローラ番号、転送先と共通である。また、転送先アドレスは結合データとしてまとめる各転送データの中で先頭となるアドレスである。
【００６８】
データ転送の無い状態が継続し、タイムアウトが発生すると、アービタ１６に対する転送リクエスト信号を生成し、データバッファから強制的にデータを読出し、転送される。結合データ生成部は、読出しの際に結合データのヘッダ情報とデータ（Ｍ０〜Ｍ４）とをまとめた結合データを生成する。そして、それ以外のデータ（Ｍ５）やダミーデータはそのまま読出し、高速スイッチ（ＳＷ）へ転送する。結合データ生成の際には補償コード（ＥＣＲＣ）も再計算され付加される。補償コード（ＥＣＲＣ）の再計算は、例えばヘッダ解析部で行われる。
【００６９】
図７（ｂ）は、マイクロプロセッサがコントロールレジスタ（ＣＴＬ Ｒｅｇｉｓｔｅｒ １７）に転送長１ＤＷのデータと、その他データを混在させて転送し、データバッファ容量を満たすデータを受信した後、転送をする場合を示す。図７（ｂ）においては、最小アクセス単位１ＤＷの転送（Ｍ２〜Ｍ１０、但しＭ４を除く）の連続と、転送長の長いデータ（Ｍ０、Ｍ１、Ｍ４、Ｍ１１）転送が混在する。Ｍ２〜Ｍ１０（但しＭ４を除く）のヘッダに含まれるアドレスは連続する。この場合、Ｍ２からＭ１０までを先に読み出すことで結合データを生成し、その後でアドレス不連続のデータ（Ｍ４）を読み出し、高速スイッチ（ＳＷ）へ転送する。
【００７０】
ブリッジ回路（ＢＲＧ ＭＰ）においては図６のフローチャートに従い、図７（ａ）と同様に、結合データに対するヘッダ情報を生成するが、途中アドレスの連続しないデータ（Ｍ４）が存在する。このデータの検出は複数のヘッダバッファに保持されたヘッダ情報から、上記と同様の方法で判定できる。
【００７１】
なお、ヘッダ解析部では、結合データの生成判定に、転送先コントローラ番号や、転送先の一致、転送先アドレス連続性の判定の他に、データ受信順の連続性を判定条件として加えてもよい。例えば、マイクロプロセッサアクセスは、データの転送順で制御シーケンスを構成し、コントローラ及びストレージ装置１００の制御を行う場合もある。転送順列の入れ替わりが、受信順に影響することで、マイクロプロセッサが意図した制御シーケンスとならない場合が考えられる。よって受信の連続性判定を加えることで上記懸案が解消される。データ受信順の確認は、前後のヘッダバッファ内のアドレス連続性判定で可能となる。例えば図７（ｂ）において、データ（Ｍ２〜Ｍ１０）のアクセス順列を維持する場合には、データバッファからの読出しの際に、データ（Ｍ２、Ｍ３）に対する結合データ‐１、データ（Ｍ５〜Ｍ１０）に対する結合データ‐２を生成し、ブリッジ回路から結合データ‐１、データ（Ｍ４）、結合データ‐２の順に出力する。結合データ‐１、結合データ‐２に対するヘッダはヘッダ解析部でそれぞれ生成される。各結合データのヘッダ生成方法は、上記した判定方法に従い生成される。
【００７２】
以上、説明したように転送長、転送先の一致及び、転送アドレスの連続性に基づいて、複数のデータを結合データとしてまとめることにより、高速スイッチ上の多重度増加及び、多重度の増加に伴うオーバーヘッド時間の増加を抑制することができ、転送性能を向上させることができる。
（2）実施例２
次に、第２の実施例を、図８−１０により説明する。実施例１と同様な処理をする部分は適時説明を省略する。図８は図５と同様に、マイクロプロセッサ、ホスト、ドライブの各データ転送経路（MP I／O、host I／O、Drv I／O）からの可変長転送パケットを、高速スイッチ（SW）１５において時分割多重し、Ｄｕａｌデータ転送経路に、転送する構成例である。そして、可変長パケットの処理を行うブリッジ回路（ＢＲＧ ＭＰ１３ａ、ＢＲＧ Ｈ１３ｃ、ＢＲＧ Ｄ１３ｅ）の詳細構成を示す。ブリッジ回路は、図５の構成要素（ヘッダ検出部、ヘッダバッファ、ヘッダ解析部、結合データ生成部）に加え、一定転送長以上のデータを保持する第１のバッファ、一定転送長以下のデータを保持する第２のバッファを含む。更に、ブリッジ回路は、第１のバッファ、第２のバッファのそれぞれに対し、タイムアウトを判定するため、タイマー０、タイマー１を含む。
【００７３】
ヘッダバッファ、第１のバッファの容量は、図５の説明と同様の方法で決定される。各バッファのバッファ容量は、一例として以下のように決定される。ヘッダバッファのバッファ容量はヘッダ長である４ＤＷである。第１のバッファのバッファ容量は、データの最大転送長である１０２４バイト（１ＫＢ）に、ヘッダ分の４ＤＷ、補償コード（ＥＣＲＣ）１ＤＷを加えた容量である。ＰＣＩ Ｉ／Ｆからバッファへの書き込みと高速スイッチへの転送に伴うバッファ読出しを同時に行う目的で、バッファ数は各々２つ以上設ける。但し、１つのバッファにより書き込みと読み出しを行ってもよい。
【００７４】
第２のバッファのバッファ容量は、コントローラ内の最小転送長を６４バイト（１６ＤＷ）とした場合、そのデータ分とヘッダ分の４ＤＷ、補償コード（ＥＣＲＣ）１ＤＷを加えた容量とする。６４バイト以下の転送、例えば最小転送長１ＤＷに対する転送は、結合データとしてまとめられる。更に（第１のバッファのバッファ容量）＞（第２のバッファのバッファ容量）とすることで、マイクロプロセッサアクセス等、転送長の短いデータに対し最小の転送遅延で速やかに転送する場合に好適である。バッファ数については、第１のバッファと同様の理由で2つ以上を設ける。
【００７５】
なお、上記各バッファ容量の設定方法は、一例であり、これに限定されるものではない。
【００７６】
タイマー０、１はそれぞれ独立したタイムアウト値が設定される。（第１のバッファのバッファ容量）＞（第２のバッファのバッファ容量）の関係から、マイクロポロセッサは（第１のバッファのタイムアウト値）＞（第２のバッファのタイムアウト値）の関係となるタイムアウト値を設定する。従って第２のバッファは、タイムアウト発生を頻発させ速やかな転送を行うことが可能となる。また、バッファ容量を最小化することで、タイムアウト発生時の強制読出しに伴うダミーデータ量を最小とする転送が可能となる。第２のバッファは、短い転送データが頻発するマイクロプロセッサアクセスに適する。但し、タイムアウト値を共通して設定してもよい。
【００７７】
アービタ１６は、第２のバッファ、第１のバッファそれぞれに対し、バッファ容量分の書き込み終了後や、タイムアウト発生によるタイムアウト処理を開始する場合に、ブリッジ回路にて生成したリクエスト信号を受信し、該リクエスト信号を基に高速スイッチ（SW）上でのデータ多重を制御する。ブリッジ回路は、アービタから転送完了（ACK）信号をを受け、バッファ内データの転送を行った後で、バッファを開放し、次の受信データに対するバッファリングを開始する。
【００７８】
なお、転送先は図５と同様、Ｄｕａｌ データ転送経路に限定されず、Ｃａｃｈeデータ転送経路や、ｈｏｓｔデータ転送経路、Ｄｒｖデータ転送経路など、各データ転送経路に対して同様の回路がコントローラ内のブリッジ回路、高速スイッチ（ＳＷ）に含まれて構成される。また、ブリッジ回路（ＢＲＧ ＭＰ、ＢＲＧ Ｈ、ＢＲＧ Ｄ）の構成は同一である。
【００７９】
さらに、図８では、Ｃａｃｈｅデータ転送経路は図示していないが、Ｃａｃｈｅデータ転送経路から、Ｄｕａｌデータ転送経路に転送する場合にも本実施例を適用することができる。これはＭｕｌｔｉ ＤＭＡ２０を起動し、ブリッジ回路相当部分をメモリコントローラ（ＭＥＭＣＴＬ）１２に備えることで実現される。
【００８０】
次に、結合データ生成処理及び転送処理を、図９のフローチャートを用いて説明する。図９は、パケットをＩ／Ｆにて受信し、転送長に基づきＴＬＰの書き込み先となるバッファを選択し、結合データの生成を判断し、高速スイッチ（ＳＷ）へのデータ転送制御を示す。
【００８１】
Ｓ９１からＳ９３の処理は、図６のS６２からS６３の処理に対応し同様の処理をするため、説明を省略する。S９３の後、ヘッダバッファに格納したヘッダの転送長：Ｌｅｎｇｔｈより、受信データを格納するバッファの選択を行う（Ｓ９４）。ヘッダ解析部で各データの転送長を解析し、該転送長と第２のバッファ格納閾値よりも、小さいかを判定する。該判定条件は、第２のバッファに対するデータ格納の判断条件である。第２のバッファ格納閾値は、例えば（第２のバッファのバッファ容量）÷Ｍの値とする。Ｍは、正の整数で、１以上である。Ｍを指定することにより、複数のデータを第２のバッファに格納し、該データを結合データとしてまとめることを目的としている。例えばＭ＝２の場合は、第２のバッファ容量の１/２が閾値となり、２つの転送データを第２のバッファへ格納、結合データとして纏めることを意味する。以降Ｍ＝３、Ｍ＝４に対する閾値についても同様に３つ、４つの転送データを、結合データとして纏める際に用いる。また、第２のバッファ格納閾値として所定値を設定してもよい。
【００８２】
Ｓ９４において条件不成立の場合は、第１のバッファへ書き込みし（Ｓ９５）、第１のバッファのバッファ容量を満たす場合もしくはタイムアウトが発生した場合には、Ｓ９ｄ以降の処理へ遷移する（Ｓ９６）。Ｓ９ｄ、Ｓ９ｅの処理は図６のＳ６８、Ｓ６９に対応し、その動作説明は省略する。
【００８３】
Ｓ９４において条件成立の場合は、Ｓ９８からＳ９ｂの処理を行う。Ｓ９８からＳ９９の処理は図６のＳ６４〜Ｓ６５の処理に対応し、その動作説明は省略する。Ｓ９８〜Ｓ９９の判定条件成立で、第２のバッファに書き込みが行われる（Ｓ９７）。それ以降のＳ９ａ、Ｓ９ｂの処理は図６のＳ６６、Ｓ６７の処理に対応し、その動作説明は省略する。
【００８４】
図８のブリッジ回路（１３ａ、１３ｃ、１３ｅ）で行われ、図９のフローチャートに従った結合データの生成動作についての、具体例を図１０を用いて説明する。図１０（ａ）は、一例としてマイクロプロセッサがコントロールレジスタ（ＣＴＬ Ｒｅｇｉｓｔｅｒ １７）に転送長１ＤＷのデータを連続して転送し、タイムアウト発生でバッファから強制的に読出す場合を示している。具体的には、ＭＰデータ転送経路を介して、ヘッダに含まれるアドレスが連続する転送データ（Ｍ０〜Ｍ４）と、転送長の長いデータ（Ｍ５）とを連続してＩ／Ｆにて受信し、それ以降のデータ受信が発生しない場合を示す。連続する１ＤＷの転送として、例えば、連続したアドレスのコントロールレジスタに対するアクセスが考えられる。更に、M0〜M4の合計データ量は第２のバッファのバッファ容量（例えば、64KB）以下、M5のデータ量は第１のバッファのバッファ容量（例えば、1KB）以下の場合である。
【００８５】
ブリッジ回路（BRG MP）のヘッダ解析部による、ヘッダ解析及び、結合データに対するヘッダ情報の生成、タイムアウト処理は、図７の説明と同様である。但し、ヘッダ解析部により第２のバッファ閾値より転送長の短いデータ（Ｍ０〜Ｍ４）を検出した場合、データは第２のバッファに順次格納さる。それ以外のデータ（Ｍ５）は第１のバッファに格納される。また、タイムアウトは、各バッファに対するタイマーが各々計測するため、タイムアウト処理は独立して発生する。図１０（ａ）では、タイムアウト値の小さい第２のバッファでタイムアウトが発生し、先にタイムアウト処理を開始する。その後、第１のバッファでタイムアウトが発生し、タイムアウト処理を開始する。結合データ生成部は、第２のバッファを読み出す際に生成したヘッダ情報とその纏める対象となるデータ（Ｍ０〜Ｍ４）から単独の結合データを生成し、それ以外のデータ（Ｍ５）、ダミーデータはそのまま読出し、高速スイッチ（ＳＷ）へ転送する。
【００８６】
図１０（ｂ）は、図７（ｂ）と同様、マイクロプロセッサがコントロールレジスタ（ＣＴＬ Ｒｅｇｉｓｔｅｒ １７）に転送長１ＤＷのデータと、その他データを混在させて転送し、バッファ容量を満たすデータを受信した後、転送をする場合を示す。図１０（ｂ）においては、最小アクセス単位１ＤＷの転送（Ｍ２〜Ｍ１０、但しＭ４を除く）の連続と、転送長の長いデータ（Ｍ０、Ｍ１、Ｍ４、Ｍ１１）転送が混在する。Ｍ２〜Ｍ１０（但しＭ４を除く）のヘッダに含まれるアドレスは連続する。この場合、Ｍ２からＭ１０までを先に読み出すことで結合データを生成し、その後でアドレス不連続のデータ（Ｍ４）を読み出し、高速スイッチ（ＳＷ）へ転送する。
【００８７】
ブリッジ回路（BRG MP）は、図７（ａ）と同様に、結合データのヘッダ情報を生成する。但し、ヘッダ解析部により、第２のバッファ格納閾値よりも転送長の短いデータ（Ｍ２〜Ｍ１０、但しＭ４を除く）を検出した場合、ＴＬＰは第２のバッファに順次格納され、それ以外の受信ＴＬＰ（Ｍ０、M1、Ｍ４、Ｍ１１）は第１のバッファに順次格納される。
【００８８】
第２のバッファへのデータ（Ｍ２〜Ｍ１０、但しＭ４を除く）書き込みが継続し、第２のバッファのバッファ容量分の書き込み終了後、読出しが開始される。Ｍ２からＭ１０（但しＭ４を除く）を読み出し、結合データは図７（ａ）と同様の方法で生成される。更に、第１のバッファについてもデータ（Ｍ０、Ｍ１、Ｍ４、Ｍ１１）の書き込みが継続し、第１のバッファのバッファ容量分の書き込み終了後、読み出しが開始される。第２のバッファの読み出しにより生成された結合データ、第１のバッファの読出しに含まれるデータ（Ｍ０、Ｍ１、Ｍ４、Ｍ１１）は高速スイッチ（ＳＷ）へ転送される。
【００８９】
この図１０（ｂ）の転送例においても、ヘッダ解析部において行われるアドレス連続性の確認に、データ受信順の連続性確認を加えることで、データ受信順列を維持した結合データの生成、ブリッジ回路からの出力時に第２のバッファと、第１のバッファの読み出し順列を受信時と同様の順列とすることが可能となる。
【００９０】
なお、図１０の例についても、図６での説明と同様、ヘッダ解析部で行われる、結合データの生成判定として、コントローラ番号、転送先の一致判定、アドレス連続性判定の他に、データ受信順の連続性判定の追加も考えられ、例えばマイクロプロセッサアクセス順を維持した結合データの生成が可能となる。
【００９１】
以上より、受信されたデータの転送長により、異なる容量を持つバッファの格納先を選択し、更に転送先が同一でかつ、転送アドレスが連続する短い転送長のデータを検出することで第２のバッファに格納、結合データとして纏めることで、高速スイッチ上のパケット多重度、転送オーバーヘッドの発生を抑制でき、効率のよいパケット転送を行うことができる。第１の実施例と同等の効果に加え、第２の実施例は、第２のバッファを設けることで、短いデータに対する転送遅延時間を更に短縮できる。
【００９２】
なお第２の実施例は、第１の実施例（結合データの生成）と組合せた場合を説明したが、それに限定されず、受信したデータの転送長に従って、容量の異なる第２のバッファ、第１のバッファへの書き込み、読出しを制御するだけでも、転送遅延の抑制、ダミーデータを伴う転送性能の低下を抑制する効果がある。
（3）実施例３
次に、実施例３について、図１１−１３により説明する。なお、実施例1、２に記載の内容と重複する部分は適宜省略する。図１１は図８と同様、プロセッサ、ホスト、ドライブの各データ転送経路（ＭＰ Ｉ／Ｏ、ｈｏｓｔ Ｉ／Ｏ、Ｄｒｖ Ｉ／Ｏ）を介して転送された、可変長転送パケットを高速スイッチ（ＳＷ）１５において時分割多重化し、Ｄｕａｌ データ転送経路へ転送するコントローラ内部の構成の一部を示す図である。可変長パケットの処理を行うブリッジ回路（ＢＲＧ ＭＰ13ａ、ＢＲＧ Ｈ13ｃ、ＢＲＧ Ｄ13ｅ）、高速スイッチ（ＳＷ）１５、アービタ１６については図８の相当部と同一であり説明を省略する。
【００９３】
図１１は、ブリッジ回路と高速スイッチ（ＳＷ）の間に、前段スイッチ（ＳＷ２）を設け、該前段スイッチにおいて多重化したデータを選択制御する多重制御部を有する。前段スイッチ（ＳＷ２）は、後段の高速スイッチ（ＳＷ）の前で、選択した各ブリッジ回路の出力を多重する。
【００９４】
多重制御部は、前段スイッチで多重化した複数のリクエスト信号を１つに統合し、アービタに、該統合されたリクエスト信号を出力する。さらに、多重制御部は、各ブリッジ回路のバッファステータス（各バッファに書き込まれたデータ量や、タイムアウトの発生状況等）を受信し、バッファステータスを管理する。
【００９５】
多重制御部による前段スイッチ（ＳＷ２）の制御によって、高速スイッチ（ＳＷ）上の時分割多重の回数が減少し、オーバーヘッドを抑制する。
【００９６】
本実施例では、ブリッジ回路として、実施例２のブリッジ回路を採用しているが、これに限定されるものではなく、実施例１のブリッジ回路を採用してもよい。
【００９７】
次に、図１２のフローチャートを用い、前段スイッチ（ＳＷ２）における、多重するブリッジ回路出力の選択方法と、アービタ１６へのリクエスト信号の転送処理について図１２のフローチャートを用いて説明する。
【００９８】
ブリッジ回路内のバッファ（本実施例の場合には、第１のバッファまたは第２のバッファ）への格納データ量がバッファ容量に達した場合や、タイムアウトの発生により、該バッファからの転送準備が完了する（Ｓ２１）。多重制御回路は、あるブリッジ回路に含まれるバッファの転送準備完了により、その他Ｉ／Ｏのバッファステータスを取得する（Ｓ２２）。そして、前段スイッチ（ＳＷ２）で転送準備が完了したバッファ（Ｓ２１）内のデータと、他のブリッジ回路に含まれるバッファ内のデータとを多重するかどうかの選択判定を行う（Ｓ２３）。具体的には。第２のバッファまたは第１のバッファのデータバッファ量と第１の閾値とを比較し、第２のバッファまたは第１のバッファへの書き込みを開始してからの経過時間と第２の閾値とを比較することで、多重する他のブリッジ回路に含まれるバッファを選択する。第１の閾値及び第２の閾値は、第２のバッファと第１のバッファに応じて、決定される。なお、第１の閾値との比較又は第２の閾値との比較のいずれかを条件として、多重するバッファを選択してもよい。
【００９９】
Ｓ２３の判定条件が不成立の場合には、転送準備が完了したバッファ（Ｓ２１）のブリッジ回路から、データを、前段スイッチ（ＳＷ２）、後段の高速スイッチ（ＳＷ）を介して、転送する（Ｓ２５）。
【０１００】
Ｓ２３の判定条件が成立の場合には、多重制御部は、各ブリッジ回路からの転送リクエスト信号に従い、前段スイッチ（ＳＷ２）を制御する。そして、転送準備が完了したブリッジ回路内のバッファ（Ｓ２１）データと、Ｓ２３が成立するその他のブリッジ回路のデータを、前段スイッチ（ＳＷ２）において時分割多重する（Ｓ２４）。具体的には、転送準備が完了したバッファ（Ｓ２１）のブリッジ回路のデータ転送後、Ｓ２３の条件が成立するブリッジ回路からデータを読み出し、前段スイッチ（ＳＷ２）で時分割多重し、高速スイッチ（ＳＷ）に転送するする。転送順は、Ｓ２３の条件が成立する他のブリッジ回路のデータ転送後に転送準備が完了したバッファ（Ｓ２１）データの転送を行ってもよい。
【０１０１】
また、多重制御部では、前段スイッチ（ＳＷ２）においてデータを多重する際に、前段スイッチ（ＳＷ２）で多重化した複数のデータのリクエスト信号を、１つのリクエスト信号として統合する。そして、アービタ１６に統合したリクエスト信号を転送する（Ｓ２６）。一例として、Ｓ２１が成立するブリッジ回路のリクエスト信号に、Ｓ２３のリクエスト信号を集約する。
【０１０２】
更に、アービタ１６は、後段の高速スイッチ（SW）において、多重制御部で統合されたリクエスト信号と、その他リクエスト信号より、前段スイッチ（SW2）の出力と、その他ブリッジ回路出力との多重を行うよう、後段の高速スイッチを制御する（Ｓ２７）。
【０１０３】
Ｓ２１からＳ２７の処理によるデータ転送の終了後、前段スイッチにおける多重を解除し、アービタ16に対するリクエスト信号も元のＢＲＧ ＭＰ、ＢＲＧ Ｈ、ＢＲＧ Ｄに対するリクエスト信号の受付状態に復帰させる（Ｓ２８）。
【０１０４】
実施例３のコントローラを用いると、前段スイッチにおいてＳ２１及びＳ２３の条件を満たす転送データを多重した後、後段の高速スイッチにてその他の転送データとを多重することで、後段の高速スイッチにおいて、多重化に伴う転送オーバーヘッド発生を抑制でき、効率のよいパケット転送が可能である。また、Ｓ２３の条件で前段で多重する転送データを選択することで、即時転送可能なデータ同士を、前段で纏めて転送し、後段のスイッチにおけるオーバーヘッドの発生を抑制できる。
【０１０５】
なおS２１を第２のバッファ内のデータに限定して、他バッファ内のデータと多重化してもよい。また、S２３の判定対象となるバッファも、第２のバッファに限定してもよい。この場合、転送長の短いＴＬＰが前段スイッチ（ＳＷ２）で多重されることで、後段の高速スイッチ（ＳＷ）における単位時間当たりの多重回数をより抑制可能となる。
【０１０６】
前段スイッチ（ＳＷ２）、後段の高速スイッチ（ＳＷ）における多重処理の具体的な動作例を、図１３を用いて説明する。図１３は、ＭＰデータ転送経路とｈｏｓｔデータ転送経路に接続されるブリッジ回路出力を前段スイッチ（SW2）で多重し、後段高速スイッチ（SW）にて、前段スイッチ（SW2）の出力と、残りのDrv データ転送経路に接続されるブリッジ回路出力を多重し、コントローラ間Ｉ／Ｏに転送する場合について示している。
【０１０７】
ブリッジ回路(BRG MP)において、例えば最小転送長のデータが第２のバッファへ書き込まれ、その後、タイムアウト発生や、バッファ容量分の書き込みが終了した時点で、その第２のバッファより生成される結合データと前段スイッチ（SW2）で多重可能な他のバッファデータを選択する。図１３は、その他ブリッジ回路（ＢＲＧ Ｈ、ＢＲＧ Ｄ）に対する第１のバッファや、第２のバッファへの書き込み量とバッファ容量との比較、或いはタイムアウトの発生により、転送可能なブリッジ回路を判定する。図１３では、BRGHがBRGMPと前段多重する他のバッファデータとして選択される。更に、多重制御部は、ブリッジ回路より生成され、転送されるリクエスト信号を受信し、アクナリッジ信号を返信する。返信された、ACK信号を受信した後、ブリッジ回路のバッファからの読出しを開始する。また、前段スイッチ（SW2）に対し、時分割多重するブリッジ回路出力に対する選択指示を出す。
【０１０８】
上記の場合は、条件を満たす他のバッファ内のデータは１つであったが、複数の他のバッファ内のデータが条件を満たす場合には、例えば転送可能なバッファの種類より選択することも考えられる。例えば、バッファ容量の小さい第２のバッファを選択し、前段スイッチ（SW2）で多重することで、その転送データの後段の高速スイッチ（SW）における転送遅延を抑制できる。
【０１０９】
前段スイッチ（SW2）で多重後、後段の高速スイッチ（ＳＷ）において、前段スイッチ（SW2）の出力と、残りのブリッジ回路出力（この例ではBRG D）のデータを時分割多重し、コントローラ間データ転送経路に転送する。
【０１１０】
また実施例３は、ブリッジ回路の構成が実施例１（結合データの生成）、実施例２（第１と第２のバッファの利用）の組合せを前提に説明したが、それに限定されず、実施例１又は実施例２のみとの組合せであっても、高速スイッチ（SW）上の多重回数を抑制可能であり、実施例３と同様の効果を得ることができる。
（4）実施例４
図１４は、本発明のストレージ装置の別の構成例である。図１４では、図１の構成におけるコントローラ（１a、１b）に、更にコントローラ（１ｃ、１ｄ）を追加し、コントローラ間を専用データ転送経路であるCrossデータ転送経路で接続し、マルチコントローラ構成とした場合を示している。追加したコントローラに接続されるホストインターフェイス（Ｈｏｓｔ  Ｉ／Ｆ２、３）（２ｃ、２ｄ）、ドライブインターフェイス（Ｄｒｖ Ｉ／Ｆ２、３）（３ｃ、３ｄ）、キャッシュメモリ（Ｃａｃｈｅ２、３）（４ｃ、４ｄ）は図1と同等であり、説明を省略する。またマイクロプロセッサ（ＭＰ０、１）（５ａ、５ｂ）は、それぞれ2つのコントローラに接続され、接続されるコントローラに対する制御を行う。
【０１１１】
次に、マルチコントローラ構成のストレージ装置２００において行われるデータ転送について図１５を用いて説明する。ホストからの転送データをキャッシュメモリに二重書きする処理、キャッシュメモリとドライブインターフェイス間のＤｒｖ転送処理、キャッシュメモリからホストインターフェイスへの転送であるＨｏｓｔ転送処理、マイクロプロセッサとコントローラ間のＭＰアクセス処理については図４と同様であり説明を省略する。
【０１１２】
図１５は、マルチコントローラ構成に特有な転送例として、複数コントローラ経由でデータ転送を行う場合を示す。例えば、コントローラ０（ＣＴＬ０）からコントローラ２（ＣＴＬ２）を経由して、コントローラ３（ＣＴＬ３）へデータを転送する場合を示す。更に、コントローラ０では、各データ転送経路からの転送データ（例えばデータ０−２）をそのまま単一のデータとして纏め、ヘッダを新たに付加することで結合データを構成する。そして単一データとして高速スイッチ（ＳＷ）、Ｃｒｏｓｓ０  データ転送経路経由でコントロー２に転送する。コントローラ２では結合データを元のデータに分離せずにそのまま高速スイッチを通過させＤｕａｌ １ データ転送経路へ転送する。コントローラ３において、Ｄｕａｌ １ データ転送経路経由で転送された結合データは、デマルチプレクサ（以下、Ｄｅ‐ＭＰＸ）により元のデータ（データ０-データ２）に分離され、高速スイッチ（ＳＷ）経由で転送先へ転送される。この例ではコントローラ間データ転送経路（Ｃｒｏｓｓ、Ｄｕａｌ）、転送元のコントローラ０、経由するコントローラ２は結合データのまま高速スイッチを通過するので、多重度の増加、オーバーヘッドの抑制ができる。
【０１１３】
各コントローラ内の構成は、図２の構成に加え、結合データの生成（マルチプレクサ：ＭＰＸ）部、その分離処理（Ｄｅ-ＭＰＸ部）が追加されるのみである。出力Ｉ/Ｏの中でＣｒｏｓｓ、 Ｄｕａｌ Ｉ/Ｏ入力と高速スイッチ（ＳＷ）間にＤｅ-ＭＰＸ部を備える。ＭＰＸ部については図１７にて説明する。
【０１１４】
図１５で説明した結合データのヘッダ構成について説明する。図１６は、図１４のストレージ装置１００を構成するコントローラ１内、コントローラ１間のデータ転送のみに適用されるTLPフォーマットを示す。図は結合データに適し、更に複数のコントローラ間のデータ転送に最適化している。コマンド構成は図３と同様であるが、結合データの識別するフラグ、結合データとして纏めたデータ数（結合数）の情報を追加している。更にコンプリータＩＤ及びリクエスタＩＤには、転送元の識別情報として、ＭＰＸを追加する。転送先の識別情報について、結合データはスイッチ通過前にＤｅ-ＭＰＸを介して元のデータに復元されるため、結合データの識別フラグのみで識別し、結合データに対する転送先の識別は不要となる。その他ヘッダ構成は図３と同様であり説明を省略する。
【０１１５】
結合データの生成はデータを伴う転送、図１６（ａ）のライトコマンド、（ｄ）のリード応答に限定されず、（ｂ）のライト応答、（ｃ）のリードコマンドにも適用される。
【０１１６】
次にＭＰＸ部を備えたコントローラの構成例について図１７を用いて説明する。図１７は図８と同様、プロセッサ、ホスト、ドライブの各転送経路（ＭＰ Ｉ/Ｏ、ＨＯＳＴ Ｉ/Ｏ、Ｄｒｖ Ｉ/Ｏ）からの可変長転送パケットを高速スイッチ（SW）１５において時分割多重し、Ｄｕａｌ 転送経路へ転送する場合の構成例である。可変長パケット処理を行うブリッジ回路（ＢＲＧ ＭＰ１３ａ、ＢＲＧ Ｈ１３ｃ、ＢＲＧ Ｄ１３ｅ）、高速スイッチ（ＳＷ）１５、アービタ１６は図８の相当部と同一であり、説明を省略する。図１７において、結合データの生成を制御するＭＰＸ部が新たに追加される。ＭＰＸ部は、各ブリッジ回路からのバッファステータス（バッファ書き込み状態や、タイムアウト発生を示す）から、結合データ生成を判定する判定部と、結合データに付加するヘッダの生成部、各ブリッジ回路から転送されるデータを格納し、ヘッダ付加により結合データを構成する多重バッファから構成される。更に、ＭＰＸは、アービタ１６に専用のリクエスト信号を出力し、高速スイッチ（ＳＷ）には専用データ転送経路で接続される。そして、結合データを高速スイッチ（ＳＷ）経由でＤｕａｌ データ転送経路に出力する。
【０１１７】
結合データ生成判定部において、結合するデータ、つまりブリッジ回路出力の選択は、転送先が同一のコントローラであることが条件となる。図１５の転送例のように、結合データのまま複数のコントローラを経由させることで、中継コントローラの高速スイッチで発生する転送オーバーヘッドを抑制する。また、ブリッジ回路は、ＭＰＸ部の多重バッファに転送されたデータを保持していたバッファ（第１、第２のバッファ）に対するアービタ16へのリクエスト信号生成を禁止し、バッファを開放、受信データに対するバッファ書き込みを継続する。
【０１１８】
ＭＰＸ部に含まれるヘッダ生成部において、結合データの識別フラグ、結合数の情報を含むヘッダ情報が生成される。更に結合データのリクエスタＩＤとして転送元のコントローラ番号、転送元ＭＰＸ番号、コンプリータＩＤとして転送先のコントローラ番号、図１７ではＢＲＧ Ｄｕａｌが与えられる。
【０１１９】
図１７のＭＰＸ部で行われる結合データの生成処理について図１８のフローチャートを用いて説明する。
【０１２０】
あるコントローラのブリッジ回路内のバッファ（第１のバッファまたは第２のバッファ）がバッファ容量を満たす場合や、データバッファ開始時刻から一定時間経過しタイムアウトが発生する場合などで、バッファからの転送準備が完了する（Ｓ８１）。ＭＰＸ内の結合データ生成判定部は、同一コントローラ内の各ブリッジ回路からバッファステータス（バッファへの書き込み状態や、タイムアウトの発生状況）を受信し、集約して管理している。結合データ生成判定部は、あるバッファからの転送準備が完了に呼応して、同一コントローラ内のその他のブリッジ回路のバッファステータスを取得する（Ｓ８２）。そして、バッファに格納するデータを選択する（Ｓ８３）。判定方法については、図１３のＳ３３と同様であり、説明を省略する。
【０１２１】
Ｓ８３の判定条件が不成立の場合には、ブリッジ回路よりリクエスト信号を生成し、バッファからデータを読出し、高速スイッチ（ＳＷ）経由でＤｕａｌデータ転送経路に出力する（Ｓ８ｂ）。
【０１２２】
Ｓ８３の判定条件が成立の場合はＳ８４に遷移し、Ｓ８１及びＳ８３の条件を満たす各ブリッジ回路より、ヘッダのみを取得する（Ｓ８４）。更に結合データ生成判定部は取得したヘッダ情報により、結合する複数のデータに対し、転送先コントローラが一致するか否かを判定する（Ｓ８５）。具体的には図３のヘッダを構成するコントローラ番号の一致を判定する。
【０１２３】
Ｓ８５の判定条件が不成立の場合はＳ８ｂ以降の処理を行う。
【０１２４】
Ｓ８５の判定条件が成立の場合は、取得済みのヘッダ情報を基に、リクエスタＩＤとしてＭＰＸ部を示すファンクション番号と転送元コントローラ番号、コンプリータＩＤとして転送先コントローラ番号を与えることでヘッダ情報を生成、多重バッファへ書き込む（Ｓ８６）。一方で各ブリッジ回路からS81及びS83からS85の判定条件が成立したデータを多重バッファへ書き込むことで結合データが構成される（Ｓ８７）。結合データの生成終了後、ブリッジ回路はＳ８１及びＳ８３からＳ８５の判定条件が成立し、多重バッファへの転送データを保持していたバッファに対するアービタ１６へのリクエスト信号生成を禁止し、それらのバッファを開放、受信データの書き込みを継続する。
一方でＭＰＸ部は、アービタに対しリクエスト信号を生成、結合データの転送を要求する（Ｓ８８）。アービタはリクエスト信号に呼応してアクナリッジ信号を生成し、ＭＰＸ部は結合バッファから結合データを読出す。その後高速スイッチ（SW）上で結合データと他のブリッジ回路からのデータを時分割多重し、コントローラ間データ転送経路に転送する（Ｓ８９）。
【０１２５】
以上説明から、あるブリッジ回路からのデータ転送を行う際に、その時点で他のブリッジ回路のバッファステータスから、結合データを生成するバッファを選択、転送先が同一のコントローラであるデータを結合データとして纏めることで、転送元、更には経由コントローラに含まれる高速スイッチ上で、単位時間当たりの多重回数増加、つまりオーバーヘッドの発生を抑制でき、マルチコントローラ構成のストレージ装置における効率よいパケット転送が可能となる。
【０１２６】
なおＳ８１が発生するバッファを第２のバッファに限定して、他ブリッジ回路に受信したデータとの組合せで結合データを生成することに限定してもよい。またＳ８３の判定対象となるバッファを第２のバッファに限定してもよい。この場合、転送長の短いデータ同士が結合データとして転送されることで転送元、更には経由コントローラ内の高速スイッチ（ＳＷ）における単位時間当たりの多重回数増加を更に抑制可能となる。第4の実施例は、第３の実施例の適用も考えられ、結合データに対し前段スイッチ（ＳＷ2）で結合するデータを選択し、後段の高速スイッチ（ＳＷ）を通過させることで、第3の実施例と同様の効果を得ることができる。
【図面の簡単な説明】
【０１２７】
【図１】本発明が適用されるストレージ装置の構成図。
【図２】ストレージ装置を構成するコントローラの内部構成図。
【図３】コントローラ内、コントローラ間のデータ転送に用いられるパケットフォーマットの説明図。
【図４】ストレージ装置におけるデータ転送経路の説明図。
【図５】本発明第1の実施例におけるブリッジ回路構成及び、I/Oとのデータ転送に関わる構成要素の説明図。
【図６】本発明第1の実施例のデータ転送方法を説明するフローチャート。
【図７】本発明第1の実施例におけるブリッジ回路内の転送処理に対する説明図。
【図８】本発明第2の実施例におけるブリッジ回路構成及び、I/Oとのデータ転送に関わる構成要素の説明図。
【図９】本発明第2の実施例のデータ転送方法を説明するフローチャート。
【図１０】本発明第2の実施例におけるブリッジ回路内の転送処理に対する説明図。
【図１１】本発明第3の実施例における構成及び、I/Oとのデータ転送に関わる構成要素の説明図。
【図１２】本発明第3の実施例のデータ転送方法を説明するフローチャート。
【図１３】本発明第3の実施例における構成内の転送処理に対する説明図。
【図１４】本発明が適用される第2のストレージ装置の構成図
【図１５】第2のストレージ装置におけるデータ転送経路の説明図。
【図１６】第2のストレージ装置におけるコントローラ内、コントローラ間のデータ転送に用いられるパケットフォーマットの説明図。
【図１７】第2のストレージ装置を構成するコントローラ内のI/Oとのデータ転送に関わる構成要素の説明図。
【図１８】第2のストレージ装置におけるデータ転送方法を説明するフローチャート。
【符号の説明】
【０１２８】
1…コントローラ、2…ホストインターフェイス、3…ドライブインターフェイス、4…キャッシュ、5…マイクロプロセッサ、6…メモリコントローラハブ、7…プロセッサメモリ、8…LU、9…、10…DDRメモリインターフェイス回路（DDRI/F）、11…PCIインターフェイス回路（PCII/F）、12…メモリコントローラ、13…I/Oブリッジ回路、14…DMA回路、15…高速スイッチ、16…アービタ、17…コントロールレジスタ、100…ストレージ装置。
【図１】
2010033125.tif 000003
【図２】
2010033125.tif 000004
【図３】
2010033125.tif 000005
【図４】
2010033125.tif 000006
【図５】
2010033125.tif 000007
【図６】
2010033125.tif 000008
【図７】
2010033125.tif 000009
【図８】
2010033125.tif 000010
【図９】
2010033125.tif 000011
【図１０】
2010033125.tif 000012
【図１１】
2010033125.tif 000013
【図１２】
2010033125.tif 000014
【図１３】
2010033125.tif 000015
【図１４】
2010033125.tif 000016
【図１５】
2010033125.tif 000017
【図１６】
2010033125.tif 000018
【図１７】
2010033125.tif 000019
【図１８】
2010033125.tif 000020