(57)【要約】【課題】データの読出し要求元に余計なトランザクションを増やすことなく、その読出し要求元に対してそのデータを読出し要求先からプリフェッチする。【解決手段】第一バスにプロトコルチップ及びブリッジが接続され、第二バスにブリッジ及びマイクロプロセッサ（ＭＰ）が接続される。ＭＰが、パラメータ情報を生成してローカルメモリ（ＬＭ）に書き、そのパラメータ情報へのアクセス先情報を含んだライトコマンドをプロトコルチップに発行する。ブリッジは、自分を経由してプロトコルチップに転送されるライトコマンド中のアクセス先情報を用いて、ＬＭからパラメータ情報をプリフェッチし、プロトコルチップからリードコマンドを受信した場合、該リードコマンドをＭＰにスルーせず、プリフェッチしたパラメータ情報を、第一バスを介してプロトコルチップに送信する。【選択図】図７
2007200169.tif 000002
【特許請求の範囲】
【請求項１】
外部に存在する装置である外部装置からＩＯコマンドを受けて処理することができるストレージシステムにおいて、
複数の記憶装置と、
前記外部装置からのＩＯコマンドに従って前記複数の記憶装置のうちの少なくとも一つの記憶装置と通信する記憶制御装置と
を備え、
前記記憶制御装置が、
前記外部装置からＩＯコマンドを受け付け、記憶資源を有し、所定のプロトコルによるデータの送受信を制御するための回路であるプロトコルチップと、
前記プロトコルチップのためのパラメータ情報を生成するマイクロプロセッサと、
前記マイクロプロセッサがアクセス可能なメモリであるローカルメモリと、
前記プロトコルチップと前記マイクロプロセッサとの間の通信を仲介するブリッジ回路と、
前記プロトコルチップと前記ブリッジ回路に接続された第一のバスと、
前記ブリッジ回路と前記マイクロプロセッサに接続された第二のバスと
を備え、
前記プロトコルチップが、前記外部装置からＩＯコマンドを受信した場合、該ＩＯコマンドを前記ローカルメモリに書くようになっており、
前記マイクロプロセッサが、前記ローカルメモリからＩＯコマンドを読んで、前記プロトコルチップのためのパラメータ情報を生成し、前記生成したパラメータ情報を前記ローカルメモリに書き、前記パラメータ情報へのアクセス先を表す情報であるアクセス先情報を含んだライトコマンドを前記プロトコルチップに発行するようになっており、それにより、該ライトコマンドが、前記第二のバス、前記ブリッジ回路及び前記第一のバスを介して前記プロトコルチップに転送され、
前記プロトコルチップは、前記マイクロプロセッサから前記ブリッジ回路を経由して前記特定のライトコマンドを受信した場合、前記特定のライトコマンド中のアクセス先情報が表すアクセス先に対してリードコマンドを発行するようになっており、それにより、該リードコマンドが前記第一のバスを介して前記ブリッジ回路に送られ、
前記ブリッジ回路が、記憶資源を有し、前記マイクロプロセッサから自分を経由して前記プロトコルチップに転送されるライトコマンドを監視し、その結果、該ライトコマンドが特定のライトコマンドであると判別できた場合、該ライトコマンド中のアクセス先情報を用いて、前記ローカルメモリから前記パラメータ情報を前記記憶資源にプリフェッチし、前記アクセス先に対するリードコマンドを前記プロトコルチップから受信した場合、該リードコマンドを前記マイクロプロセッサにスルーせず、前記プリフェッチしたパラメータ情報を、前記第一のバスを介して前記プロトコルチップに送信する、
ストレージシステム。
【請求項２】
前記マイクロプロセッサから前記プロトコルチップに対して発行されるライトコマンドには、該ライトコマンドの発行先アドレスが含まれており、
前記ブリッジ回路が、コンペア回路を有し、該コンペア回路により、前記ブリッジ回路を経由するライトコマンド中の発行先アドレスを入力し、前記入力した発行先アドレスと所定のアドレスとを比較し、一致が得られた場合に、該ライトコマンド中のアクセス先情報を用いて、前記ローカルメモリから前記パラメータ情報を前記記憶資源にプリフェッチする、
請求項１記載のストレージシステム。
【請求項３】
前記ブリッジ回路が、
別のコンペア回路を有し、
前記ライトコマンド中のアクセス先情報を前記記憶資源で記憶し、前記ローカルメモリからのパラメータ情報を、前記記憶資源上で、該アクセス先情報に対応付けてプリフェッチし、
前記プロトコルチップからリードコマンドを受信した場合、前記別のコンペア回路により、該リードコマンド中のアクセス先情報を入力し、入力したアクセス先情報と、前記記憶資源に記憶されているアクセス先情報とを比較し、一致したアクセス先情報に対応付けられているパラメータ情報を、前記第一のバスを介して前記プロトコルチップに送信する、
請求項１記載のストレージシステム。
【請求項４】
前記ブリッジ回路が、
前記記憶資源上で、該アクセス先情報に、プリフェッチ状況を表す状況情報を対応付け、その際、該状況情報を、プリフェッチ無しとし、
前記ローカルメモリからパラメータ情報を取得した場合、前記記憶資源上で、該アクセス先情報に対応付けてプリフェッチし、その場合、該アクセス先情報に対応付けられている状況情報を、プリフェッチ有りに更新し、
前記プロトコルチップからリードコマンドを受信した場合、前記別のコンペア回路に入力されたアクセス先情報とのコンペアの対象を、前記状況情報がプリフェッチ有りとなっているアクセス先情報とする、
請求項１記載のストレージシステム。
【請求項５】
前記状況情報には、更に、プリフェッチ中があり、
前記ブリッジ回路は、
前記パラメータ情報をプリフェッチするためのリードコマンドを或るアクセス先情報を用いて前記マイクロプロセッサに発行した場合に、該アクセス先情報に対応する状況情報を、前記プリフェッチ中に更新し、
前記プロトコルチップからリードコマンドを受信した場合、前記別のコンペア回路に入力されたアクセス先情報とのコンペアの対象を、前記状況情報がプリフェッチ有り及びプリフェッチ中となっているアクセス先情報とし、一致が得られたアクセス先情報に対応する状況情報がプリフェッチ中となっている場合、前記パラメータ情報のプリフェッチが済むまで待ち、該プリフェッチが済んだ場合に、プリフェッチされたパラメータ情報を、前記受信したリードコマンドに応答して前記プロトコルチップに送信する、
請求項４記載のストレージシステム。
【請求項６】
前記マイクロプロセッサが、
前記ローカルメモリに複数のパラメータ情報を書く場合、各パラメータ情報毎に、次のパラメータ情報の在り処を表す付加情報も前記ローカルメモリに書き、
前記ブリッジ回路を経由して前記プロトコルチップに送信するライトコマンドに、前記複数のパラメータ情報にそれぞれ対応した複数のアクセス先情報を含め、
前記プロトコルチップが、前記複数のアクセス先情報を含んだライトコマンドを受けた場合、前記複数のアクセス先情報にそれぞれ対応した複数回のリードコマンドを発行し、
前記ブリッジ回路が、自分を経由するライトコマンドから初めのアクセス先情報を用いて、一つのパラメータ情報に加えてそれの付加情報を前記ローカルメモリから取得し、前記付加情報が次のパラメータ情報が存在することを表している場合には、該付加情報を用いて次のパラメータ情報を取得し、
前記プロトコルチップが前記パラメータ情報を読むためのリードコマンドを発行することと、前記マイクロプロセッサが次以降のパラメータ情報を前記ブリッジ回路に送ることとが独立して行われる、
請求項１記載のストレージシステム。
【請求項７】
前記マイクロプロセッサが、
複数のパラメータにより構成されるパラメータチェインとなったパラメータ情報を前記ローカルメモリに書く場合、各パラメータ毎に、次のパラメータの在り処を表す付加情報も前記ローカルメモリに書き、
前記ブリッジ回路を経由して前記プロトコルチップに送信するライトコマンドに、前記複数のパラメータにそれぞれ対応した複数のアクセス先情報を含め、
前記プロトコルチップが、前記複数のアクセス先情報を含んだライトコマンドを受けた場合、前記複数のアクセス先情報にそれぞれ対応した複数回のリードコマンドを発行し、
前記ブリッジ回路が、自分を経由するライトコマンドから初めのアクセス先情報を用いて、一つのパラメータに加えてそれの付加情報を前記ローカルメモリから取得し、前記付加情報から次のパラメータを特定した場合には、該付加情報を用いて次のパラメータを取得し、
前記プロトコルチップが前記パラメータを読むためのリードコマンドを発行することと、前記マイクロプロセッサが次以降のパラメータを前記ブリッジ回路に送ることとが独立して行われる、
請求項１記載のストレージシステム。
【請求項８】
前記記憶制御装置は、
前記外部装置と前記複数の記憶装置との間で送受信されるデータを一時的に記憶することができるキャッシュメモリと
前記外部装置との前記キャッシュメモリとの間のデータ転送を制御する複数の第一インタフェース回路と、
前記キャッシュメモリと前記複数の記憶装置と間のデータ転送を制御する複数の第二インタフェース回路と、
前記複数の第一インタフェース回路、前記複数の第二インタフェース回路及び前記キャッシュメモリを相互に接続する接続部と
を備え、
前記プロトコルチップ、前記マイクロプロセッサ、前記ブリッジ回路、前記第一のバス及び前記第二のバスが、前記複数の第一インタフェース回路のうちの少なくとも一つに搭載されている、
請求項１記載のストレージシステム。
【請求項９】
前記ブリッジ回路が、前記プロトコルチップと前記マイクロプロセッサとの間の通信だけでなく、前記マイクロプロセッサと、前記外部装置と前記複数の記憶装置との間で送受信されるデータを一時的に記憶することができるキャッシュメモリとの間の通信も仲介する、
請求項１記載のストレージシステム。
【請求項１０】
複数の記憶装置を備えたストレージシステムでの記憶制御方法において、
所定のプロトコルによるデータの送受信を制御するための回路であるプロトコルチップが、前記ストレージシステムの外部の装置である外部装置からＩＯコマンドを受信した場合、該ＩＯコマンドを、マイクロプロセッサが使用するメモリであるローカルメモリに書き、
前記マイクロプロセッサが、前記ローカルメモリからＩＯコマンドを読んで、前記プロトコルチップのためのパラメータ情報を生成し、前記生成したパラメータ情報を前記ローカルメモリに書き、前記パラメータ情報へのアクセス先を表す情報であるアクセス先情報を含んだライトコマンドを前記プロトコルチップに発行し、それにより、該ライトコマンドが、第二のバス、ブリッジ回路及び第一のバスを介して前記プロトコルチップに転送され、
前記ブリッジ回路は、前記マイクロプロセッサから自分を経由して前記プロトコルチップに転送されるライトコマンドを監視し、その結果、該ライトコマンドが特定のライトコマンドであると判別できた場合、該ライトコマンド中のアクセス先情報を用いて、前記ローカルメモリから前記パラメータ情報を記憶資源にプリフェッチし、
前記プロトコルチップは、前記マイクロプロセッサから前記ブリッジ回路を経由して前記ライトコマンドを受信し、前記ライトコマンド中のアクセス先情報が表すアクセス先に対してリードコマンドを発行し、それにより、該リードコマンドが前記第一のバスを介して前記ブリッジ回路に送られ、
前記ブリッジ回路が、前記アクセス先に対するリードコマンドを前記プロトコルチップから受信した場合、該リードコマンドを前記マイクロプロセッサにスルーせず、前記記憶資源にプリフェッチしたパラメータ情報を、前記第一のバスを介して前記プロトコルチップに送信し、
前記プロトコルチップが前記パラメータ情報を受信した場合に、該パラメータ情報に従って、前記複数の記憶装置の少なくとも一つからデータを読む或いは該少なくとも一つに対してデータを書くデータ転送処理を実行する、
記憶制御方法。
【請求項１１】
第一の処理部と、第二の処理部と、メモリと、前記第一の処理部と前記第二の処理部との間の通信を仲介するブリッジ回路と、前記第一の処理部と前記ブリッジ回路に接続された第一のバスと、前記ブリッジ回路と前記第二の処理部に接続された第二のバスと
を備え、
前記第一の処理部が、前記外部装置からＩＯコマンドを受信した場合、該ＩＯコマンドを前記メモリに書き、
前記第二の処理部が、前記メモリからＩＯコマンドを読んで、前記第一の処理部のためのパラメータ情報を生成し、前記生成したパラメータ情報を前記メモリに書き、前記パラメータ情報へのアクセス先を表す情報であるアクセス先情報を含んだライトコマンドを前記第一の処理部に発行し、それにより、該ライトコマンドが、前記第二のバス、前記ブリッジ回路及び前記第一のバスを介して前記第一の処理部に転送され、
前記ブリッジ回路は、記憶資源を有し、前記第二の処理部から自分を経由して前記第一の処理部に転送されるライトコマンドを監視し、その結果、該ライトコマンドが特定のライトコマンドであると判別できた場合、該ライトコマンド中のアクセス先情報を用いて、前記メモリから前記パラメータ情報を前記記憶資源にプリフェッチし、
前記第一の処理部は、前記第二の処理部から前記ブリッジ回路を経由して前記ライトコマンドを受信し、前記ライトコマンド中のアクセス先情報が表すアクセス先に対してリードコマンドを発行し、それにより、該リードコマンドが前記第一のバスを介して前記ブリッジ回路に送られ、
前記ブリッジ回路が、前記アクセス先に対するリードコマンドを前記第一の処理部から受信した場合、該リードコマンドを前記第二の処理部にスルーせず、前記プリフェッチしたパラメータ情報を、前記第一のバスを介して前記第一の処理部に送信する、
制御装置。
【請求項１２】
外部に存在する装置である外部装置からＩＯコマンドを受けて処理することができるストレージシステムにおいて、
複数の記憶装置と、
前記外部装置からのＩＯコマンドに従って前記複数の記憶装置のうちの少なくとも一つの記憶装置と通信する記憶制御装置と
を備え、
前記記憶制御装置が、
前記外部装置と前記複数の記憶装置との間で送受信されるデータを一時的に記憶することができるキャッシュメモリと
前記外部装置との前記キャッシュメモリとの間のデータ転送を制御する複数の第一インタフェース回路と、
前記キャッシュメモリと前記複数の記憶装置と間のデータ転送を制御する複数の第二インタフェース回路と、
前記複数の第一インタフェース回路、前記複数の第二インタフェース回路及び前記キャッシュメモリを相互に接続する接続部と
を備え、
前記複数の第一インタフェース回路のうちの少なくとも一つが、
前記外部装置からＩＯコマンドを受け付け、記憶資源を有し、所定のプロトコルによるデータの送受信を制御するための回路であるプロトコルチップと、
前記プロトコルチップのためのパラメータ情報を生成するマイクロプロセッサと、
前記マイクロプロセッサがアクセス可能なメモリであるローカルメモリと、
前記プロトコルチップと前記マイクロプロセッサとの間の通信を仲介するブリッジ回路と、
前記プロトコルチップと前記ブリッジ回路に接続された第一のバスと、
前記ブリッジ回路と前記マイクロプロセッサに接続された第二のバスと
を備え、
前記プロトコルチップが、前記外部装置からＩＯコマンドを受信した場合、該ＩＯコマンドを前記ローカルメモリに書くようになっており、
前記マイクロプロセッサが、前記ローカルメモリからＩＯコマンドを読んで、前記プロトコルチップのためのパラメータ情報を生成し、前記生成したパラメータ情報を前記ローカルメモリに書き、前記パラメータ情報へのアクセス先を表す情報であるアクセス先情報を含んだライトコマンドを前記プロトコルチップに発行するようになっており、それにより、該ライトコマンドが、前記第二のバス、前記ブリッジ回路及び前記第一のバスを介して前記プロトコルチップに転送され、
前記プロトコルチップは、前記マイクロプロセッサから前記ブリッジ回路を経由して前記特定のライトコマンドを受信した場合、前記特定のライトコマンド中のアクセス先情報が表すアクセス先に対してリードコマンドを発行するようになっており、それにより、該リードコマンドが前記第一のバスを介して前記ブリッジ回路に送られ、
前記ブリッジ回路が、記憶資源を有し、前記マイクロプロセッサから自分を経由して前記プロトコルチップに転送されるライトコマンドを監視し、その結果、該ライトコマンドが特定のライトコマンドであると判別できた場合、該ライトコマンド中のアクセス先情報を用いて、前記ローカルメモリから前記パラメータ情報を前記記憶資源にプリフェッチし、前記アクセス先に対するリードコマンドを前記プロトコルチップから受信した場合、該リードコマンドを前記マイクロプロセッサにスルーせず、前記プリフェッチしたパラメータ情報を、前記第一のバスを介して前記プロトコルチップに送信し、
前記マイクロプロセッサが、
複数のパラメータにより構成されるパラメータチェインとなったパラメータ情報を前記ローカルメモリに書く場合、各パラメータ毎に、次のパラメータの在り処を表す付加情報も前記ローカルメモリに書き、
前記ブリッジ回路を経由して前記プロトコルチップに送信するライトコマンドに、前記複数のパラメータにそれぞれ対応した複数のアクセス先情報を含め、
前記プロトコルチップが、前記複数のアクセス先情報を含んだライトコマンドを受けた場合、前記複数のアクセス先情報にそれぞれ対応した複数回のリードコマンドを発行し、
前記ブリッジ回路が、自分を経由するライトコマンドから初めのアクセス先情報を用いて、一つのパラメータに加えてそれの付加情報を前記ローカルメモリから取得し、前記付加情報から次のパラメータを特定した場合には、該付加情報を用いて次のパラメータを取得し、
前記プロトコルチップが前記パラメータを読むためのリードコマンドを発行することと、前記マイクロプロセッサが次以降のパラメータを前記ブリッジ回路に送ることとが独立して行われる、
ストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データのプリフェッチに関し、特に、ストレージシステムの記憶制御装置に関する。
【背景技術】
【０００２】
例えば、特開平９−２３１１６４号公報に開示の技術が知られている。この公報には、高速なバスに接続されたＣＰＵと、低速なバスに接続された低速Ｉ／Ｏデバイスとがあり、バス間にバスブリッジが接続されている。ＣＰＵは、低速Ｉ／Ｏデバイスからデータを読む場合には、そのデータが格納されている低速Ｉ／Ｏデバイスのアドレスをバスブリッジに書き、バスブリッジが、ＣＰＵから書かれたアドレスにあるデータを低速Ｉ／Ｏデバイスから読んで記憶する。これにより、バスブリッジに、ＣＰＵが読みたいデータがプリフェッチされる。ＣＰＵは、バスブリッジにプリフェッチされたデータをバスブリッジから読むことで、低速Ｉ／Ｏデバイスのデータを取得することができる。
【０００３】
【特許文献１】特開平９−２３１１６４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記の公報によれば、データの読み出しを要求するＣＰＵ自身が、予めどのアドレスのデータが欲しいのかを理解した上で、そのアドレスをバスブリッジに書くためのライトコマンドを発行し、その後で、そのデータを読むためのリードコマンドを発行する必要がある。つまり、ＣＰＵのトランザクションが余計に増える。このため、データ処理速度が低下することになる。
【０００５】
この問題点は、上記公報のデータプリフェッチ技術をストレージシステムの記憶制御装置に適用する場合に特に問題である。
【０００６】
すなわち、例えば、配列された複数のディスク型記憶装置（例えばハードディスクドライブ）を備えるディスクアレイシステムのようなストレージシステムには、複数の記憶装置の他に、各記憶装置へのアクセスを制御する記憶制御装置が備えられる。記憶制御装置は、例えば、所定のプロトコル（例えばファイバチャネル標準のプロトコル）によるデータの送受信を制御するための回路（以下、プロトコルチップ）や、ホスト計算機からのコマンドを解析するマイクロプロセッサ等を備え、プロトコルチップとマイクロプロセッサ間で通信することにより、そのコマンドに関する一処理を終了することができる（例えば、記憶装置に対してデータをライトする或いはリードするという本処理の前処理を終了することができる）。
【０００７】
このような記憶制御装置に、上記公報のデータプリフェッチ技術を適用すると、プロトコルチップ又はマイクロプロセッサのトランザクションを余計に増やさないといけないので、上記の一処理に要する時間が長くなってしまう。その結果、ストレージシステムのスループットが低下してしまう。
【０００８】
従って、本発明の目的は、データの読出し要求元に余計なトランザクションを増やすことなく、その読出し要求元に対してそのデータを読出し要求先からプリフェッチすることにある。
【０００９】
本発明の他の目的は、後述の説明から明らかになるであろう。
【課題を解決するための手段】
【００１０】
本発明に従うストレージシステムは、外部に存在する装置である外部装置からＩＯコマンドを受けて処理することができるストレージシステムであって、複数の記憶装置と、前記外部装置からのＩＯコマンドに従って前記複数の記憶装置のうちの少なくとも一つの記憶装置と通信する記憶制御装置とを備える。前記記憶制御装置が、前記外部装置からＩＯコマンドを受け付け、記憶資源を有し、所定のプロトコルによるデータの送受信を制御するための回路であるプロトコルチップと、前記プロトコルチップのためのパラメータ情報を生成するマイクロプロセッサと、前記マイクロプロセッサがアクセス可能なメモリであるローカルメモリと、前記プロトコルチップと前記マイクロプロセッサとの間の通信を仲介するブリッジ回路と、前記プロトコルチップと前記ブリッジ回路に接続された第一のバスと、前記ブリッジ回路と前記マイクロプロセッサに接続された第二のバスとを備える。前記プロトコルチップが、前記外部装置からＩＯコマンドを受信した場合、該ＩＯコマンドを前記ローカルメモリに書く。前記プロトコルチップが、前記外部装置からＩＯコマンドを受信した場合、該ＩＯコマンドを前記ローカルメモリに書くようになっている。前記マイクロプロセッサが、前記ローカルメモリからＩＯコマンドを読んで、前記プロトコルチップのためのパラメータ情報を生成し、前記生成したパラメータ情報を前記ローカルメモリに書き、前記パラメータ情報へのアクセス先を表す情報であるアクセス先情報を含んだライトコマンドを前記プロトコルチップに発行するようになっている。それにより、該ライトコマンドが、前記第二のバス、前記ブリッジ回路及び前記第一のバスを介して前記プロトコルチップに転送される。前記プロトコルチップは、前記マイクロプロセッサから前記ブリッジ回路を経由して前記特定のライトコマンドを受信した場合、前記特定のライトコマンド中のアクセス先情報が表すアクセス先に対してリードコマンドを発行するようになっている。それにより、該リードコマンドが前記第一のバスを介して前記ブリッジ回路に送られる。前記ブリッジ回路が、記憶資源を有し、前記マイクロプロセッサから自分を経由して前記プロトコルチップに転送されるライトコマンドを監視し、その結果、該ライトコマンドが特定のライトコマンドであると判別できた場合、該ライトコマンド中のアクセス先情報を用いて、前記ローカルメモリから前記パラメータ情報を前記記憶資源にプリフェッチし、前記アクセス先に対するリードコマンドを前記プロトコルチップから受信した場合、該リードコマンドを前記マイクロプロセッサにスルーせず、前記プリフェッチしたパラメータ情報を、前記第一のバスを介して前記プロトコルチップに送信する。
【００１１】
第一の実施態様では、前記マイクロプロセッサから前記プロトコルチップに対して発行されるライトコマンドには、該ライトコマンドの発行先アドレスが含まれる。前記ブリッジ回路が、コンペア回路を有し、該コンペア回路により、前記ブリッジ回路を経由するライトコマンド中の発行先アドレスを入力し、前記入力した発行先アドレスと所定のアドレスとを比較し、一致が得られた場合に、該ライトコマンド中のアクセス先情報を用いて、前記ローカルメモリから前記パラメータ情報を前記記憶資源にプリフェッチすることができる。
【００１２】
第二の実施態様では、前記ブリッジ回路が、別のコンペア回路を有することができる。前記ブリッジ回路は、前記ライトコマンド中のアクセス先情報を前記記憶資源で記憶し、前記ローカルメモリからのパラメータ情報を、前記記憶資源上で、該アクセス先情報に対応付けてプリフェッチすることができる。前記ブリッジ回路が、前記プロトコルチップからリードコマンドを受信した場合、前記別のコンペア回路により、該リードコマンド中のアクセス先情報を入力し、入力したアクセス先情報と、前記記憶資源に記憶されているアクセス先情報とを比較し、一致したアクセス先情報に対応付けられているパラメータ情報を、前記第一のバスを介して前記プロトコルチップに送信することができる。
【００１３】
第三の実施態様では、前記ブリッジ回路が、前記記憶資源上で、該アクセス先情報に、プリフェッチ状況を表す状況情報を対応付け、その際、該状況情報を、プリフェッチ無しとすることができる。前記ローカルメモリからパラメータ情報を取得した場合、前記ブリッジ回路が、前記記憶資源上で、該アクセス先情報に対応付けてプリフェッチし、その場合、該アクセス先情報に対応付けられている状況情報を、プリフェッチ有りに更新することができる。前記ブリッジ回路が、前記プロトコルチップからリードコマンドを受信した場合、前記別のコンペア回路に入力されたアクセス先情報とのコンペアの対象を、前記状況情報がプリフェッチ有りとなっているアクセス先情報とすることができる。
【００１４】
第四の実施態様では、前記第三の実施態様において、前記状況情報には、更に、プリフェッチ中がある。前記ブリッジ回路は、前記パラメータ情報をプリフェッチするためのリードコマンドを或るアクセス先情報を用いて前記マイクロプロセッサに発行した場合に、該アクセス先情報に対応する状況情報を、前記プリフェッチ中に更新することができる。前記プロトコルチップからリードコマンドを受信した場合、前記ブリッジ回路が、前記別のコンペア回路に入力されたアクセス先情報とのコンペアの対象を、前記状況情報がプリフェッチ有り及びプリフェッチ中となっているアクセス先情報とし、一致が得られたアクセス先情報に対応する状況情報がプリフェッチ中となっている場合、前記パラメータ情報のプリフェッチが済むまで待ち、該プリフェッチが済んだ場合に、プリフェッチされたパラメータ情報を、前記受信したリードコマンドに応答して前記プロトコルチップに送信することができる。
【００１５】
第五の実施態様では、前記マイクロプロセッサが、前記ローカルメモリに複数のパラメータ情報を書く場合、各パラメータ情報毎に、次のパラメータ情報の在り処を表す付加情報も前記ローカルメモリに書き、前記ブリッジ回路を経由して前記プロトコルチップに送信するライトコマンドに、前記複数のパラメータ情報にそれぞれ対応した複数のアクセス先情報を含めることができる。前記プロトコルチップが、前記複数のアクセス先情報を含んだライトコマンドを受けた場合、前記複数のアクセス先情報にそれぞれ対応した複数回のリードコマンドを発行することができる。前記ブリッジ回路が、自分を経由するライトコマンドから初めのアクセス先情報を用いて、一つのパラメータ情報に加えてそれの付加情報を前記ローカルメモリから取得し、前記付加情報が次のパラメータ情報が存在することを表している場合には、該付加情報を用いて次のパラメータ情報を取得することができる。前記プロトコルチップが前記パラメータ情報を読むためのリードコマンドを発行することと、前記マイクロプロセッサが次以降のパラメータ情報を前記ブリッジ回路に送ることとが独立して行われるようにすることができる。
【００１６】
第六の実施態様では、前記マイクロプロセッサが、複数のパラメータにより構成されるパラメータチェインとなったパラメータ情報を前記ローカルメモリに書く場合、各パラメータ毎に、次のパラメータの在り処を表す付加情報も前記ローカルメモリに書き、前記ブリッジ回路を経由して前記プロトコルチップに送信するライトコマンドに、前記複数のパラメータにそれぞれ対応した複数のアクセス先情報を含めることができる。前記プロトコルチップが、前記複数のアクセス先情報を含んだライトコマンドを受けた場合、前記複数のアクセス先情報にそれぞれ対応した複数回のリードコマンドを発行することができる。前記ブリッジ回路が、自分を経由するライトコマンドから初めのアクセス先情報を用いて、一つのパラメータに加えてそれの付加情報を前記ローカルメモリから取得し、前記付加情報から次のパラメータを特定した場合には、該付加情報を用いて次のパラメータを取得することができる。前記プロトコルチップが前記パラメータを読むためのリードコマンドを発行することと、前記マイクロプロセッサが次以降のパラメータを前記ブリッジ回路に送ることとが独立して行うことができる。
【００１７】
第五又は第六の実施態様において、前記マイクロプロセッサは、パラメータ情報の一部を書いた場合にライトコマンドを前記プロトコルチップに発行しても良い。
【００１８】
第七の実施態様では、前記記憶制御装置は、前記外部装置と前記複数の記憶装置との間で送受信されるデータを一時的に記憶することができるキャッシュメモリと、前記外部装置との前記キャッシュメモリとの間のデータ転送を制御する複数の第一インタフェース回路と、前記キャッシュメモリと前記複数の記憶装置と間のデータ転送を制御する複数の第二インタフェース回路と、前記複数の第一インタフェース回路、前記複数の第二インタフェース回路及び前記キャッシュメモリを相互に接続する接続部とを備えることができる。この場合、前記プロトコルチップ、前記マイクロプロセッサ、前記ブリッジ回路、前記第一のバス及び前記第二のバスが、前記複数の第一インタフェース回路のうちの少なくとも一つに搭載することができる。
【００１９】
第八の実施態様では、前記ブリッジ回路が、前記プロトコルチップと前記マイクロプロセッサとの間の通信だけでなく、前記マイクロプロセッサと、前記外部装置と前記複数の記憶装置との間で送受信されるデータを一時的に記憶することができるキャッシュメモリとの間の通信も仲介することができる。
【００２０】
本発明に従う制御装置は、第一の処理部（例えばハードウェア回路）と、第二の処理部（例えばマイクロプロセッサ）と、メモリと、前記第一の処理部と前記第二の処理部との間の通信を仲介するブリッジ回路（ハードウェア回路）と、前記第一の処理部と前記ブリッジ回路に接続された第一のバスと、前記ブリッジ回路と前記第二の処理部に接続された第二のバスとを備える。前記第一の処理部が、前記外部装置からＩＯコマンドを受信した場合、該ＩＯコマンドを前記メモリに書く。前記第二の処理部が、前記メモリからＩＯコマンドを読んで、前記第一の処理部のためのパラメータ情報を生成し、前記生成したパラメータ情報を前記メモリに書き、前記パラメータ情報へのアクセス先を表す情報であるアクセス先情報を含んだライトコマンドを前記第一の処理部に発行する。それにより、該ライトコマンドが、前記第二のバス、前記ブリッジ回路及び前記第一のバスを介して前記第一の処理部に転送される。前記ブリッジ回路は、記憶資源を有し、前記第二の処理部から自分を経由して前記第一の処理部に転送されるライトコマンドを監視し、その結果、該ライトコマンドが特定のライトコマンドであると判別できた場合、該ライトコマンド中のアクセス先情報を用いて、前記メモリから前記パラメータ情報を前記記憶資源にプリフェッチする。前記第一の処理部は、前記第二の処理部から前記ブリッジ回路を経由して前記ライトコマンドを受信し、前記ライトコマンド中のアクセス先情報が表すアクセス先に対してリードコマンドを発行する。それにより、該リードコマンドが前記第一のバスを介して前記ブリッジ回路に送られる。前記ブリッジ回路が、前記アクセス先に対するリードコマンドを前記第一の処理部から受信した場合、該リードコマンドを前記第二の処理部にスルーせず、前記プリフェッチしたパラメータ情報を、前記第一のバスを介して前記第一の処理部に送信する。この制御装置は、ストレージシステムの記憶制御装置に適用することができるし、他種のコンピュータシステムの制御装置（例えばいわゆるブレードサーバ等の制御回路基盤）にも適用することができる。
【発明の効果】
【００２１】
本発明によれば、データの読出し要求元に余計なトランザクションを増やすことなく、その読出し要求元に対してそのデータを読出し要求先からプリフェッチすることができる。
【発明を実施するための最良の形態】
【００２２】
以下、図面を参照して、本発明の一実施形態について説明する。
【００２３】
図１は、本発明の一実施形態に係るシステムを示すブロック図である。
【００２４】
例えば、通信ネットワーク４に、ホスト計算機１０及びストレージシステム２０が接続されている。また、通信ネットワーク４は、例えば、ＬＡＮ（Local Area Network）、ＳＡＮ（Storage Area Network）、或いは専用線など、種々のものを採用することができる。
【００２５】
ホスト計算機１０は、例えば、ＣＰＵ（Central Processing Unit）やメモリ等の情報処理資源を備えたコンピュータ装置であり、例えば、パーソナルコンピュータ、ワークステーション、メインフレーム等として構成される。ホスト計算機１０は、データのリード或いはデータのライトを要求するためのＩＯ（入力／出力）コマンドや他種のコマンドをストレージシステム２０に発行することができる。
【００２６】
ストレージシステム２０は、例えば、配列された複数のディスク型記憶装置３０を備えたディスクアレイ装置である。ストレージシステム２０は、記憶制御装置６と記憶装置部８とに大別することができる。
【００２７】
記憶装置部８は、複数のディスク型記憶装置３０を備える。複数のディスク型記憶装置３０の二以上のディスク型記憶装置は、ＲＡＩＤグループ（パリティグループ或いはアレイグループと呼ばれることもある）にされ、そのＲＡＩＤグループが有する物理記憶資源を基に、一又は複数個の論理記憶装置（以下、ＬＤＥＶ）３１が設けられる。
【００２８】
記憶制御装置６は、例えば、複数のチャネルアダプタ（ＣＨＡ）２１と、複数のディスクアダプタ（ＤＫＡ）２２と、サービスプロセッサ（ＳＶＰ）２３と、キャッシュメモリ（ＣＭ）２４と、共有メモリ（ＳＭ）２５と、接続部２６とを備えている。ＣＭ２４及びＳＭ２５のうちの少なくとも一つは、複数個備えられても良い。
【００２９】
各ＣＨＡ２１は、ホスト計算機１０と通信する。ＣＨＡ２１は、一又は複数の通信ポート、一又は複数のマイクロプロセッサ（以下、ＭＰ）、及び図示しないメモリを備えた回路基盤とすることができる。
【００３０】
ＤＫＡ２２は、ディスク型記憶装置３０との間のデータ授受を行うものである。ＤＫＡ２２は、一又は複数の通信ポート、一又は複数のＭＰ、及び図示しないメモリを備えた回路基盤とすることができる。
【００３１】
ＳＶＰ２３は、ストレージシステム２０の保守を行うための装置である。ＳＶＰ２３は、例えば、入出力コンソールと制御コンソールとを備えた装置（例えばパーソナルコンピュータ）であっても良いし、入出力コンソール（例えば図示しない遠隔の管理端末）に接続された制御コンソール（例えばいわゆるマザーボード）であっても良い。
【００３２】
ＣＭ２４は、ホスト計算機１０から受信したデータや、ＬＤＥＶ３１から読み出されたデータ或いはＬＤＥＶ３１に書かれるデータを一時的に記憶するためのものである。ＳＭ２５には、制御情報等が格納される。また、ＳＭ２５には、ＭＰ同士でやり取りされるメッセージを記憶することができるワーク領域や、ストレージシステム２０を制御するための制御情報が記憶される領域などを設けることができる。
【００３３】
接続部２６は、ＣＨＡ２１、ＤＫＡ２２、キャッシュメモリ２４、及び共有メモリ２５を相互に接続させる。接続部２６は、例えば、高速スイッチング動作によってデータ伝送を行う超高速クロスバスイッチ等のような高速バスとして構成することができる。
【００３４】
このストレージシステム２０では、ＣＨＡ２１が、ホスト計算機１０からライトコマンドを受けた場合、そのライトコマンドに従うデータをＣＭ２４に書き、ＤＫＡ２２が、そのデータをＣＭ２４から読み、そのデータをＬＤＥＶ３１に書くことができる。一方、ＣＨＡ２１が、ホスト計算機１０からリードコマンドを受けた場合、そのリードコマンドに従うデータを読むようＤＫＡ２２に要求し、ＤＫＡ２２が、その要求に従ってＬＤＥＶ３１からデータを読んでＣＭ２４に書き、ＣＨＡ２１が、そのデータをＣＭ２４から読んでホスト計算機１０に送信することができる。
【００３５】
以上が、本実施形態に係るストレージシステム１の構成例である。なお、上記の説明は一例であって、他の構成が採用されてもよい。例えば、共有メモリ２５とキャッシュメモリ２４は、別々のメモリでなく、一つのメモリに共有メモリ領域とキャッシュメモリ領域とが設けられても良い。また、例えば、記憶制御装置６は、ＣＰＵ、メモリ及び通信ポートを備えた回路基盤であっても良い。この場合、ＣＰＵが、複数のＣＨＡやＤＫＡによって行われる処理を実行することができる。また、ＣＨＡ２１の通信相手は、ホスト計算機１０に代えて、外部のストレージシステム等の他種の外部装置であっても良い。
【００３６】
図２は、ＣＨＡ２１の構成例を示す。
【００３７】
ＣＨＡ２１は、ホスト計算機１０からＩＯコマンドを受け付け、所定のプロトコル（例えばファイバチャネル標準のプロトコル）によるデータの送受信を制御するための回路（以下、プロトコルチップ）１０５と、複数の機能を有するハードウェア回路（以下、多機能ＡＳＩＣ（Application Specific Integrated Circuit））１０７と、多機能ＡＳＩＣ１０７が使用するメモリであるＡＳＩＣ用メモリ１０９と、一又は複数のＭＰ１０１と、各ＭＰ１０１が使用するメモリである各ローカルメモリ１０３とを備える。
【００３８】
各プロトコルチップ（例えばＩＣ（Integrated Circuit））１０５及び多機能ＡＳＩＣ１０７は、第一のバス１１１に接続されており、各ＭＰ１０１及び多機能ＡＳＩＣ１０７は、第二のバス１１３に接続されている。各バスは、ＰＣＩ（Peripheral Component Interconnect）或いはＰＣＩ−Ｘとすることができる。
【００３９】
多機能ＡＳＩＣ１０７は、例えば、第一のＰＣＩコア１１５と、データ転送を制御するＬＳＩ（Large Scale Integration）であるブリッジ１１９と、接続部２６を介してＣＭ２４或いはＳＭ２５にアクセスするためのインタフェース回路（Ｉ／Ｆ）１２１と、第二のＰＣＩコア１１７とを備える。第一のＰＣＩコア１１５は、第一のバス１１１からの情報の形式をブリッジ１１９用の情報形式に変換してブリッジ１１９に出力したり、ブリッジ１１９からの情報の形式を第一のバス１１１用の情報形式に変換して出力したりする。同様に、第二のＰＣＩコア１１７は、第二のバス１１３からの情報の形式をブリッジ１１９用の情報形式に変換してブリッジ１１９に出力したり、ブリッジ１１９からの情報の形式を第二のバス１１３用の情報形式に変換して出力したりする。
【００４０】
ＡＳＩＣ用メモリ１０９には、ホスト計算機１０とＬＤＥＶ３１との間でやり取りされるデータが一時的に記憶される。多機能ＡＳＩＣ１０７は、前述したように、複数の機能を有する。具体的には、多機能ＡＳＩＣ１０７のブリッジ１１９は、プロトコルチップ１０５とＭＰ１０１とのデータ転送を行うことに限らず、例えば、ＭＰ１０１からの制御コマンドをＳＭ２５に転送したり、ＡＳＩＣ用メモリ１０９に記憶されたデータをＣＭ２４に転送したりすることができる。
【００４１】
プロトコルチップ１０５がホスト計算機１０からコマンドを受信した場合、点線で示すように、プロトコルチップ１０５とＭＰ１０１との通信が開始され、それにより、そのＭＰ１０１のローカルメモリ１０３内のデータがプロトコルチップ１０５に転送される。プロトコルチップ１０５とＭＰ１０１との間の通信では、第一のバス１１１と第二のバス１１３といった複数のバスを経由する。
【００４２】
本実施形態では、ブリッジ１１９に後に詳述するような工夫が施されていることにより、プロトコルチップ１０５がホスト計算機１０からコマンドを受信した場合に開始される、プロトコルチップ１０５とＭＰ１０１との通信の時間長が短縮され、故に、そのコマンドに従う一処理（例えば、ＩＯコマンドに従ってＬＤＥＶ３１にデータを書く或いはＬＤＥＶ３１からデータを読む本処理の前の処理である前処理）を早く終えることができる。その際、データの読出し要求元となるプロトコルチップ１０５にトランザクションを余計に増やす必要が無い。以下、この点について詳細に説明する。なお、以下の説明では、ホスト計算機１０からのコマンドはＩＯコマンドであるとする。
【００４３】
まず、ブリッジ１１９に施された工夫を理解し易くするために、ブリッジ１１９に何の工夫も施されていない場合の、プロトコルチップ１０５とＭＰ１０１との間での転送フローの一例を説明する。
【００４４】
図３は、ブリッジ１１９に何の工夫も施されてない場合での転送フローの一例を示す。
【００４５】
プロトコルチップ１０５は、ホスト計算機１０からのＩＯコマンドを、ローカルメモリ１０３の任意の又は所定のアドレスに書きこむ（ステップＳ１）。具体的には、そのＩＯコマンドをローカルメモリ１０３に対して書込むためのライトコマンドを発行し、それにより、ライトコマンドが、第一のバス１１１、多機能ＡＳＩＣ１０７及び第二のバス１１３を介してＭＰ１０１に到達し、ライトコマンドに従うライト対象データである上記ＩＯコマンドが、ＭＰ１０１により、ローカルメモリ１０３に書かれる。
【００４６】
ＭＰ１０１は、ローカルメモリ１３０に書かれたＩＯコマンドを取得し、その場合、一又は複数のパラメータ（以下、「パラメータ情報」と言う）を、ローカルメモリ１０３の任意の又は所定のアドレスに書く（Ｓ２）。具体的には、例えば、図４に例示するように、ＭＰ１０１は、ローカルメモリ１０３にあるＩＯコマンドを解析し（Ｓ２Ａ）、解析の結果に基づくパラメータ情報（プロトコルチップ１０５のためのパラメータ情報）を生成してローカルメモリ１０３に書く（Ｓ２Ｂ）。
【００４７】
そして、ＭＰ１０１は、プロトコルチップ１０５を起動する（Ｓ３）。具体的には、ＭＰ１０１は、パラメータ情報の書込み先アドレスを表す情報（以下、アドレス情報）を含むライトコマンドを、プロトコルチップ１０５が有する記憶資源の所定の（又は任意の）アドレスに対して発行する。アドレス情報の代わりに、パラメータ情報が書かれている場所へのポインタなど、他種のアクセス先情報であっても良い（その場合には、図示の例よりも多くのやり取りが行われ得る）。
【００４８】
プロトコルチップ１０５は、起動命令として受けたライトコマンドに含まれているアドレス情報が表すアドレスに対して、リードコマンドを発行する（Ｓ４）。ＭＰ１０１は、そのリードコマンドに応答して、ローカルメモリ１０３に記憶されているパラメータ情報をプロトコルチップ１０５に転送する（Ｓ５）。
【００４９】
その際、例えば、第二のバス１１３がビジーとなっている場合には、ＭＰ１１３は、しばらく経ってから、ローカルメモリ１０３に記憶されているパラメータ情報をプロトコルチップ１０５に転送する。
【００５０】
また、プロトコルチップ１０５は、ホスト計算機１０からのＩＯコマンドについてのパラメータ情報を取得した場合には、図５に例示するように、パラメータ情報を解析して（Ｓ６）、その解析結果を基に、データ転送処理を実行することができる（Ｓ７）。具体的には、例えば、パラメータ情報中の各パラメータとしては、アドレス（例えばＡＳＩＣ用メモリ１０９のアドレス）、データ転送長、データの転送の向きを表す情報（例えばＩＯコマンドがライトコマンドであるかリードコマンドであるか）があり、データ転送処理では、各パラメータに従って、例えば、ＡＳＩＣ用メモリ１０９に記憶されたデータをＣＭ２４に転送する処理、或いは、ＡＳＩＣ用メモリ１０９に記憶されたデータをホスト計算機１０に転送する処理が行われる。
【００５１】
図３に例示した転送フローによれば、パラメータ情報を読み出すためのリードコマンドがプロトコルチップ１０５から発行された場合、そのリードコマンドが、第一のバス１１１及び第二のバス１１３といった複数のバスを順次に経由してＭＰ１０１に到達し、パラメータ情報がローカルメモリ１０３から読み出された場合には、そのパラメータ情報が、第二のバス１１３及び第一のバス１１１といった複数のバスを順次に経由してプロトコルチップ１０５に到達する。つまり、プロトコルチップ１０５に起動命令がかかった後、複数のバス及びブリッジ１１９を経由して、プロトコルチップ１０５とＭＰ１０１との間でやり取りが行われる。その結果、パラメータ情報のリードコマンドが発行されてからそれに従うパラメータ情報をプロトコルチップ１０５が受信するまでの時間長としてＴ１（例えば２μ秒）がかかり、第二のバス１１３がビジー状態だった場合には、その時間長Ｔ１よりも長いＴ２（例えば６μ秒）がかかる。
【００５２】
そこで、本実施形態では、ブリッジ１１９に、図示しないメモリ（以下、ブリッジメモリ）と、パラメータ情報のプリフェッチ機能とが搭載される。ブリッジ１１９は、プロトコルチップ１０５への起動命令と並行して、ローカルメモリ１０３からブリッジメモリに予めパラメータ情報を読み込んでおく。プロトコルチップ１０５からパラメータ情報のリードコマンドを受信した場合は、ブリッジ１１９が、ブリッジメモリに記憶されているパラメータ情報を返す。これにより、パラメータ情報のリードコマンドやそれに応答して転送されるパラメータ情報のバス渡りを図３の場合より減らすことができるので、通信時間長の短縮が図れる。また、パラメータ情報を要求するプロトコルチップ１０５に特段のトランザクションを全く追加することなく、それを実現することができる。以下、詳細に説明する。
【００５３】
図６は、ブリッジ１１９にプリフェッチ機能が搭載された場合での転送フローの一例を示す。
【００５４】
図示のＳ１１〜Ｓ１３は、図３のＳ１〜Ｓ３と同様である。
【００５５】
ブリッジ１１９は、ブリッジ１１９を通過するライトコマンドを監視しており（Ｓ１４）、例えば、ライトコマンドの発行先アドレスが、プロトコルチップ１０５の記憶資源の所定のアドレス（起動命令のためのアドレス）である場合に、そのライトコマンドが起動命令であると判断する。
【００５６】
ブリッジ１１９は、そのライトコマンドからローカルメモリ１０３のアドレスを特定し、そのアドレスに対し、パラメータ情報をプリフェッチするためのリードコマンドを発行する（Ｓ１５）。それにより、パラメータ情報が取得され（Ｓ１６）、ブリッジ１１９は、取得したパラメータ情報をブリッジメモリに一時的に記憶する。
【００５７】
起動命令を受けたプロトコルチップ１０５が、その起動命令中のアドレス情報が表すアドレスに対して、パラメータ情報のリードコマンドを発行する（Ｓ１７）。ブリッジ１１９は、そのアドレスにあるパラメータ情報（つまり、リードコマンドに従うパラメータ情報）が、そのアドレスから既にブリッジメモリにプリフェッチされていれば、受けたリードコマンドをスルーせず、そのパラメータ情報をプロトコルチップ１０５に転送する（Ｓ１８）。
【００５８】
このように、プリフェッチ機能が搭載されたブリッジ１１９によれば、図３を参照して説明した場合と違って、パラメータ情報のリードコマンドやそれに応答して転送されるパラメータ情報のバス渡りを１回にすることができる。この結果、パラメータ情報のリードコマンドが発行されてからそれに従うパラメータ情報をプロトコルチップ１０５が受信するまでの時間長として、図３の場合のＴ１よりも短いＴ３（例えば１μ秒）とすることができる。また、パラメータ情報を要求するプロトコルチップ１０５に特段のトランザクションを全く追加することなく、それを実現することができる。
【００５９】
以下、ブリッジ１１９について更に詳細に説明する。
【００６０】
図７は、ブリッジ１１９の構成例と、プロトコルチップ１０５、ブリッジ１１９及びＭＰ１０により行われる処理の流れの詳細例を示す。図８は、プリフェッチが行われるまでのブリッジ１１９の処理フローの一例を示す。図９は、プロトコルチップ１０５からリードコマンドを受信したブリッジ１１９の処理フローの一例を示す。
【００６１】
ブリッジ１１９は、プリフェッチを行うか否か等を制御するプリフェッチ制御部２０１を備える。プリフェッチ制御部２０１には、第一のコンペア回路２０３と、ブリッジメモリ２０５と、第二のコンペア回路２０７とを備える。
【００６２】
ＭＰ１０１からプロトコルチップ１０５に対する起動命令としてのライトコマンドには、例えば、ライトコマンドの発行先アドレスと、アドレス情報とが含まれている。発行先アドレスは、例えば、プロトコルチップ１０５の記憶資源における所定アドレスである。アドレス情報は、本実施形態では、パラメータ情報が記憶されたアドレスであって、ローカルメモリ１０３のアドレスを表す情報である。アドレス情報に代えて、パラメータ情報のアドレスへのポインタなど他種のアクセス先情報であっても良い。
【００６３】
ブリッジ１１９は、ＭＰ１０１からのライトコマンドを監視する（図８のＳ１０１）。具体的には、ＭＰ１０１からブリッジ１１９を経由してプロトコルチップ１０５にライトコマンドが発行された場合（図７のＳ５１、図８のＳ１０３）、そのライトコマンドの発行先アドレスが第一のコンペア回路２０３に入力される（図７のＳ５２）。第一のコンペア回路２０３は、所定アドレスと発行先アドレスとをコンペアする（Ｓ５３）。その結果、不一致であれば、プリフェッチ制御部２０１は、プリフェッチを行わないが、一致であれば、図７のＳ５４及び図８のＳ１０４〜Ｓ１０６を行う。すなわち、プリフェッチ制御部２０１は、ライトコマンド中のアドレス情報をブリッジメモリ（例えばバッファ）２０５に書き込んで(図８のＳ１０４)、そのアドレス情報を解析し（図８のＳ１０５）、プリフェッチのためのリードコマンドを、そのアドレス情報が表すアドレスに対して発行する（図８のＳ１０６）。過去に書かれたアドレス情報についてプリフェッチ中であれば、Ｓ５４で書き込んだアドレス情報についてプリフェッチが行えるまで待つ。
【００６４】
ブリッジメモリ２０５には、アドレス情報毎に、プリフェッチ状況、及び、そのアドレス情報が表すアドレスから読み出されたパラメータ情報が対応付けて記憶させることができる。プリフェッチ状況とは、プリフェッチ処理の進捗状況を表す情報であり、例えば、１ビットで、有効か無効か（プリフェッチ済みか否か）を表すことができるし、複数ビットで、有効、プリフェッチ中、無効を表すこともできる。ブリッジメモリ２０５では、アドレス情報が書かれた直後は、プリフェッチ状況は無効とされ、そのアドレス情報が表すアドレスからパラメータ情報が取得されてブリッジメモリ２０５に記憶された場合に、プリフェッチ状況が無効から有効とされる。プリフェッチのためのリードコマンドが発行された場合には、無効からプリフェッチ中とされても良い。
【００６５】
図７のＳ５４（図８のＳ１０６）によるリードコマンドに従ってパラメータ情報がローカルメモリ１０３からＭＰ１０１を介して送られて来たならば（図８のＳ１０７）、プリフェッチ制御部１０１は、そのパラメータ情報を、ブリッジメモリ２０５上で、Ｓ５４で書きこんだアドレス情報（換言すれば、Ｓ５４で発行したリードコマンドの発行先アドレスを表すアドレス情報）に対応付ける（図７のＳ５５、図８のＳ１０８）。そして、プリフェッチ制御部１０１は、そのアドレス情報に対応するプリフェッチ状況を、有効とする（図８のＳ１０９）。
【００６６】
さて、プロトコルチップ１０５の記憶資源には、ＭＰ１０１からのライトコマンドに従うデータが、そのライトコマンドの発行先アドレスに書かれる。プロトコルチップ１０５は、データが書かれたアドレスが所定アドレスなら、ライトコマンド中のアドレス情報が表すアドレスに対するリードコマンドを発行し（図７のＳ６１、図９のＳ２１１）、そうでないなら、何もしないか或いは所定の処理を行う。
【００６７】
プリフェッチ制御部２０１の第二のコンペア回路２０７が、プロトコルチップ１０からのリードコマンドの発行先アドレスと、ブリッジメモリ２０５において、プリフェッチ状況が有効（及びプリフェッチ中）である各アドレス情報が表す各アドレスとをコンペアする（図７のＳ６２、図９のＳ２１２）。その結果、一致なら、プリフェッチ制御部２０１は、そのリードコマンドをスルーせずに止めて、一致したアドレス情報に対応するパラメータ情報をブリッジメモリ２０５から読み出してプロトコルチップ１０５に送信する（図７のＳ６３、図９のＳ２１３）。図７のＳ６２（図９のＳ２１２）において、プリフェッチ中のアドレス情報に一致した場合には、パラメータ情報が取得されるまで待ち、取得されてから、そのパラメータ情報がプロトコルチップ１０５に送信される。プリフェッチ制御部１１９は、パラメータ情報が送信された場合には、所定のタイミングで（例えばその直後に）、ブリッジメモリ２０５から、送信したパラメータ情報及びそれに対応付けられている情報（プリフェッチ状況及びアドレス情報）を削除することができる。
【００６８】
図７のＳ６２（図９のＳ２１２）において、不一致なら、プリフェッチ制御部２０１は、リードコマンドをＭＰ１０１にスルーする（図７のＳ６４、図９のＳ２１４）。これにより、そのリードコマンドに従って、ＭＰ１０１によりパラメータ情報が読み出され、読み出されたパラメータ情報は、ブリッジ１１９を経由してプロトコルチップ１０５に転送される（Ｓ６５）。
【００６９】
以上が、ブリッジ１１９の構成例やブリッジ１１９が行う処理の流れの一例である。
【００７０】
上述した説明によれば、プリフェッチ機能が搭載されたブリッジ１１９により、図３を参照して説明した場合と違って、パラメータ情報のリードコマンドやそれに応答して転送されるパラメータ情報のバス渡りを１回にすることができる。この結果、パラメータ情報のリードコマンドが発行されてからそれに従うパラメータ情報をプロトコルチップ１０５が受信するまでの時間長を短くすることができる。また、パラメータ情報を要求するプロトコルチップ１０５に特段のトランザクションを全く追加することなく、それを実現することができる。
【００７１】
特に、ブリッジ１１９が含まれるハードウェア回路が多機能ＡＳＩＣ１０７であることから、バスの利用は、ＭＰ１０１、プロトコルチップ１０５間の通信に利用されるだけでなく、例えば、ＭＰ１０１とＡＳＩＣ１０７との通信や、ダイレクトメモリアクセス転送によるＡＳＩＣ用メモリ１０９、ＣＭ２４、ＳＭ２５とのアクセスなど、様々な通信で必要とされる。このため、バスの空き時間で転送可能なプリフェッチによるバス利用の効率化は、単に、プロトコルチップ１０５とＭＰ１０１との間の転送時間長の短縮だけでなく、ストレージシステム２０全体のスループットを向上する点でも効果的である。
【００７２】
さて、ローカルメモリ１０３では、或るアドレスから連続的に一つのパラメータ情報が書かれる場合もあれば、（Ａ）一つのリードコマンドで複数のパラメータ情報を読み出すことができるように各パラメータ情報に付加情報が関連付けて書かれる場合もあり得るし、（Ｂ）一つのパラメータ情報を構成するパラメータチェインが書かれるといった場合もあり得る。（Ｂ）の場合、具体的には、例えば、パラメータ情報がパラメータ１〜３のチェインとなる場合、図１０に例示するように、ＭＰ１０１は、パラメータ１を書き、パラメータ１の末尾に、全ての桁が０の付加情報を書く（Ｓ７０１）。次に、その付加情報を、パラメータ２の場所を示す情報に更新し、パラメータ２を書き、パラメータ２の末尾に、全ての桁が０の付加情報を書く（Ｓ７０２）。最後に、その付加情報を、パラメータ３の場所を示す情報に更新し、パラメータ３を書き、パラメータ３の末尾に、パラメータ３がパラメータチェインの最後であることを表す付加情報（例えば全ての桁が０の付加情報）を書く（Ｓ７０３）。各パラメータには、例えば、アドレス（例えばＡＳＩＣ用メモリ１０９のアドレス）、データ転送長、データの転送の向きを表す情報（例えばＩＯコマンドがライトコマンドであるかリードコマンドであるか）がある。なお、この一例の流れは、（Ａ）の場合にも同様とすることができる。
【００７３】
（Ａ）及び（Ｂ）の場合、ｎ個のパラメータ情報或いはパラメータ（ｎは二以上の整数）をそれぞれ読むためにｎ回のリードコマンドが必要となる。例えば、（Ｂ）の場合、図１０に例示したように、パラメータ１〜３のチェインとなった場合、三回のリードコマンドが必要となる。このため、ブリッジ１１９に何の工夫もされていないと、２回のバス渡りによる通信時間は、リードコマンドの発行回数ｎに比例して長くなる。従って、２回のバス渡りによる通信時間が、ホスト計算機１０からのコマンドの一処理に要する時間長に大きく影響する。
【００７４】
そこで、本実施形態では、ブリッジ１１９は、パラメータ情報を構成するパラメータをプリフェッチする場合、そのパラメータの付加情報も読み、付加情報を解析し、次のパラメータがあることを特定した場合には、次のパラメータをプリフェッチする。以下、上記（Ａ）及び（Ｂ）のうち、（Ｂ）の場合を例に採り説明する。その際、既に説明した部分と共通する部分については説明を省略或いは簡略し、相違する部分を主に説明する。
【００７５】
図１１は、パラメータチェインの場合の転送フローの一例を示す。図１２は、ブリッジ１１９の処理フローの一例を示す。
【００７６】
プロトコルチップ１０５は、ホスト計算機１０からのＩＯコマンドを、ローカルメモリ１０３の任意の又は所定のアドレスに書きこむ（図１１のＳ３１１）。
【００７７】
ＭＰ１０１は、ローカルメモリ１３０の任意の又は所定のアドレスを参照することにより、ホスト計算機１０からＩＯコマンドを取得し、パラメータ情報を作成してローカルメモリ１０３に書く（図１１のＳ３１２、図１２のＳ４０２）。その際、パラメータチェインとなるので、ＭＰ１０１は、パラメータ及び付加情報のセット（以下、パラメータセット）を複数個ローカルメモリ１０３に書く。ローカルメモリ１０３では、全てのパラメータセット同士が空いている必要は無い。
【００７８】
そして、ＭＰ１０１は、複数のパラメータセットのそれぞれの書込み先アドレスを表す複数のアドレス情報を含むライトコマンドを、プロトコルチップ１０５が有する記憶資源の所定の（又は任意の）アドレスに対して発行する（図１１のＳ３１３、図１２のＳ４０３）。
【００７９】
ブリッジ１１９は、自分を通過したライトコマンド中の複数のアドレス情報をブリッジメモリ２０５に書き（図１２のＳ４０４）、初めのアドレス情報を解析し（図１２のＳ４０５）、そのアドレス情報が表すアドレスに対してリードコマンドを発行する（図１１のＳ３１５、図１２のＳ４０６）。それにより、ブリッジ１１９は、ローカルメモリ１０３から、ＭＰ１０１を経由して、パラメータ及び付加情報のパラメータセットがブリッジ１１９を受ける（図１１のＳ３１６、図１２のＳ４０７）。ブリッジ１１９は、パラメータセット中のパラメータを、ブリッジメモリ２０５上で、上記初めのアドレス情報に対応付け（Ｓ４０８）、受けたパラメータセット中の付加情報を解析し、次のパラメータがあるか否かを判定する（図１２のＳ４０９）。有ると判定した場合には、ブリッジ１１９は、次のアドレス情報について、図１２のＳ４０５以降を繰り返す（例えば図１１のＳ３１５´、Ｓ３１６´）。無いと判定した場合には（例えば、付加情報を構成する全ての桁が０である場合には）、プリフェッチ動作の終了となる。
【００８０】
プロトコルチップ１０５は、起動命令を受けた場合、その起動命令中の初めのアドレス情報が表すアドレスに対して、パラメータのリードコマンドを発行する（図１１のＳ３１７）。ブリッジ１１９は、そのアドレスにあるパラメータが、そのアドレスから既にブリッジメモリにプリフェッチされていれば、受けたリードコマンドをスルーせず、そのパラメータをプロトコルチップ１０５に転送する（図１１のＳ３１８）。プロトコルチップ１０５は、受信したパラメータを解析し、その解析結果に基づくデータ転送を行う。次に、プロトコルチップ１０５は、上記受信した起動命令中に次のアドレス情報があれば、そのアドレス情報が表すアドレスに対してリードコマンドを発行する（Ｓ３１７´）。それにより、Ｓ３１８´が行われる。
【００８１】
上述の説明によれば、上記（Ａ）及び（Ｂ）の場合にも、パラメータ情報或いはパラメータのリードコマンドやそれに応答した転送の際に経由するバス渡りを１回にすることができる。なお、上述の説明によれば、パラメータ情報或いはパラメータの他に付加情報が転送されたり、その付加情報の解析が行われたりするが、バス渡りの回数を減らすことにより時間短縮化の方が効果は大きい。
【００８２】
また、上述の説明によれば、プロトコルチップ１０５がパラメータ情報或いはパラメータを読むための処理が行われている間に（例えばＳ３１７及びＳ３１８の間に）、別のパラメータ情報或いは別のパラメータのプリフェッチ処理を行うことができる（例えば、Ｓ３１７´及びＳ３１８´を行える）。このため、パラメータ情報或いはパラメータがｎ個あることによってｎ回のリードコマンドが発行されても、全体としての処理時間長がｎ倍となってしまうことを防ぐことができる。
【００８３】
以上、本発明の好適な実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【００８４】
例えば、上記（Ａ）及び（Ｂ）の少なくとも一つの場合、ＭＰ１０１は、全てのパラメータ情報或いはパラメータをローカルメモリ１０３に書き終える前に、起動命令をとしてのライトコマンドを発行しても良い。プロトコルチップ１０５は、パラメータ情報或いはパラメータを取得した場合には、そのパラメータ情報或いはパラメータを解析し、その解析の結果に基づく処理を実行するので、プロトコルチップ１０５の読み出しが、ローカルメモリ１０３にパラメータ情報或いはパラメータが書かれる前に行われてしまうといったような事態は生じないと考えられる。
【００８５】
また、例えば、ブリッジメモリ２０５において、プリフェッチ用の領域が満杯となった場合には、ブリッジ制御部２０１は、図７のＳ５３で一致となってもプリフェッチを行わないようにしても良いし、図７のＳ５４で書くアドレス情報を最もアドレス情報に上書きしても良い。
【図面の簡単な説明】
【００８６】
【図１】図１は、本発明の一実施形態に係るストレージシステムを示すブロック図。
【図２】図２は、ＣＨＡ２１の構成例を示す。
【図３】図３は、ブリッジ１１９に何の工夫も施されてない場合での転送フローの一例を示す。
【図４】図４は、ＩＯコマンドを受けた場合のＭＰ１０１の処理フローの一例を示す。
【図５】図５は、パラメータを取得した場合のプロトコルチップ１０５の処理フローの一例を示す。
【図６】図６は、ブリッジ１１９にプリフェッチ機能が搭載された場合での転送フローの一例を示す。
【図７】図７は、ブリッジ１１９の構成例と、プロトコルチップ１０５、ブリッジ１１９及びＭＰ１０により行われる処理の流れの詳細例を示す。
【図８】図８は、プリフェッチが行われるまでのブリッジ１１９の処理フローの一例を示す。
【図９】図９は、プロトコルチップ１０５からリードコマンドを受信したブリッジ１１９の処理フローの一例を示す。
【図１０】図１０は、パラメータチェインとなるパラメータ情報がローカルメモリ１０３に書かれる手順の一例を示す。
【図１１】図１１は、パラメータチェインの場合の転送フローの一例を示す。
【図１２】図１２は、ブリッジ１１９の処理フローの一例を示す。
【符号の説明】
【００８７】
１０…ホスト計算機  ２０…ストレージシステム  ２１…チャネルアダプタ  ２２…ディスクアダプタ  ２３…ＳＶＰ（サービスプロセッサ）  ２４…キャッシュメモリ  ２５…共有メモリ  ２６…接続部  ３０…ディスク型記憶装置  ３１…ＬＤＥＶ  １０１…マイクロプロセッサ  １０３…ローカルメモリ  １０５…プロトコルチップ  １０７…多機能ＡＳＩＣ  １１１…第一のバス  １１３…第二のバス  １１９…ブリッジ
【図１】
2007200169.tif 000003
【図２】
2007200169.tif 000004
【図３】
2007200169.tif 000005
【図４】
2007200169.tif 000006
【図５】
2007200169.tif 000007
【図６】
2007200169.tif 000008
【図７】
2007200169.tif 000009
【図８】
2007200169.tif 000010
【図９】
2007200169.tif 000011
【図１０】
2007200169.tif 000012
【図１１】
2007200169.tif 000013
【図１２】
2007200169.tif 000014