(57)【要約】【課題】送信及び／又は受信に関わる回路の実装面積を抑え且つバッファの利用効率が改善される送受信技術を提供する。【解決手段】送信側回路に、要求に従う第一パケットを生成する送信側第一回路部と、送信側第一回路部の下位の回路部であり、送信バッファを有し、第一パケットを含んだ第二パケットを送信バッファに一時格納してから送信する送信側第二回路部が備えられる。第二パケットは、第二ヘッダ部と第二データ部とを有する。送信側第二回路部から送信される第二パケットが有する第二データ部に、第一パケットが含まれ、且つ、第二ヘッダ部に、第二パケットのタイプを表すパラメータ値として、所定の値が含まれる。所定の値は、複数の第二パケットタイプのうちの所定の一つの第二パケットタイプを表す値である。【選択図】図６
2010049596.tif 000002
【特許請求の範囲】
【請求項１】
上位装置に接続されたストレージシステムであって、
複数の記憶装置と、
前記上位装置からアクセス要求を受信し前記アクセス要求に従い前記複数の記憶装置のうちのいずれか一以上の記憶装置にアクセスするコントローラと
を備え、
前記コントローラが、送信側集積回路部と受信側集積回路部とを有した複数の集積回路を有し、
前記送信側集積回路部が、
要求に従う第一パケットを生成する送信側第一回路部と
前記送信側第一回路部の下位の回路部であり、送信バッファを有し、前記第一パケットを含んだ第二パケットを前記送信バッファに一時格納して送信する送信側第二回路部と
を有し、
前記受信側集積回路部が、
受信バッファを有し、前記第二パケットを前記送信側第二回路部から受信して前記受信バッファに格納する受信側第二回路部と、
前記受信側第二回路部の上位の回路部であり、前記受信側第二回路部が受信した前記第二パケット内に含まれている前記第一パケットを処理する受信側第一回路部と
を有し、
前記第一パケットには、複数の第二パケットタイプにそれぞれ対応した複数の第一パケットタイプのうち、前記要求に従う第一パケットタイプを表すパラメータ値が含まれ、
前記第二パケットは、第二ヘッダ部と第二データ部とを有し、
前記送信側第二回路部から送信される前記第二パケットが有する前記第二データ部に、前記第一パケットが含まれ、且つ、前記第二ヘッダ部に、前記第二パケットのタイプを表すパラメータ値として、所定の値が含まれ、
前記所定の値は、前記複数の第二パケットタイプのうちの所定の一つの第二パケットタイプを表す値である、
ストレージシステム。
【請求項２】
前記コントローラが、前記アクセス要求を処理するマイクロプロセッサと、前記アクセス要求に従って前記一以上の記憶装置に書き込まれる又は前記一以上の記憶装置から読み出されたデータを一時的に記憶するキャッシュメモリと、前記上位装置に接続される一以上のインタフェース回路である一以上の上位アダプタと、前記複数の記憶装置のうちの一以上の記憶装置に接続される一以上の下位アダプタとを備え、
前記一以上の上位アダプタ及び前記一以上の下位アダプタは、それぞれ、前記集積回路であり、
それぞれの前記集積回路が、前記送信側集積回路部と前記受信側集積回路部とを有し、
前記送信側第一回路部及び前記受信側第一回路部は、アプリケーション層の回路部であり、
前記送信側第二回路部及び前記受信側第二回路部は、PCI-Expressインタフェース回路部に含まれるトランザクション層の回路部、データリンク層の回路部及び物理層の回路部のうちの前記トランザクション層の回路部である、
請求項１記載のストレージシステム。
【請求項３】
前記複数の第二パケットタイプが、Posted、Non-Posted及びCompletionであり、
前記所定の値は、Postedを表す値である、
請求項２記載のストレージシステム。
【請求項４】
前記複数の第一パケットタイプは、前記Postedに対応した第一パケットタイプであるアプリケーションPostedと、前記Non-Postedに対応した第一パケットタイプであるアプリケーションNon-Postedと、前記Completionに対応した第一パケットタイプであるアプリケーションCompletionとを含んだ種類であり、
前記コントローラが、前記キャッシュメモリに対するインタフェース回路であるCMアダプタと、前記マイクロプロセッサに対するインタフェース回路であるMPアダプタとを備え、
前記CMアダプタ及び前記MPアダプタが、それぞれ、前記集積回路であり、
前記上位アダプタが、メモリを有し、
前記第一パケットは、第一データ部と第一ヘッダ部とを有し、
前記マイクロプロセッサが前記上位アダプタの前記メモリに前記上位アダプタの制御に関する制御情報を書き込む場合、前記MPアダプタ内の前記送信側第一回路部が、下記の（４−１）及び（４−２）に従う第一パケットを生成し、
（４−１）前記第一データ部が、前記制御情報を有する、
（４−２）前記第一ヘッダ部が、前記第一パケットのタイプを表すパラメータ値として、前記アプリケーションPostedを表すパラメータ値を有し、且つ、コマンド種類として、ライトコマンドを表すパラメータ値を有する、
前記上位アダプタ内の前記送信側第二回路部が、前記（４−１）及び（４−２）に従う第一パケットを含んだ前記第二パケットを前記上位アダプタに送信する、
請求項３記載のストレージシステム。
【請求項５】
前記MPアダプタから前記上位アダプタに送信された前記第二パケットに含まれる、前記（４−１）及び（４−２）に従う第一パケット内の前記制御情報が、前記アクセス要求に従うライト対象データを前記キャッシュメモリに書き込むことを表す情報である場合、前記上位アダプタ内の前記送信側第一回路部が、下記の（６−１）及び（６−２）に従う第一パケットを生成し、
（５−１）前記第一データ部が、前記ライト対象データを有する、
（５−２）前記第一ヘッダ部が、前記第一パケットのタイプを表すパラメータ値として、前記アプリケーションNon-Postedを表すパラメータ値を有し、且つ、コマンド種類として、ライトコマンドを表すパラメータ値を有する、
前記上位アダプタ内の前記送信側第二回路部が、前記（５−１）及び（５−２）に従う第一パケットを含んだ前記第二パケットを前記CMアダプタに送信し、
前記第二パケットを受信した前記CMアダプタによって、前記ライト対象データが前記キャッシュメモリに書き込まれた場合に、前記CMアダプタ内の前記送信側第一回路部が、下記の（５−３）に従う第一パケットを生成し、
（５−３）前記第一ヘッダ部が、前記第一パケットのタイプを表すパラメータ値として、前記アプリケーションCompletionを表すパラメータ値を有する、
前記CMアダプタ内の前記送信側第二回路部が、前記（５−３）に従う第一パケットを含んだ前記第二パケットを前記上位アダプタに送信する、
請求項４記載のストレージシステム。
【請求項６】
前記送信側第一回路部及び前記受信側第一回路部は、アプリケーション層の回路部であり、
前記送信側第二回路部及び前記受信側第二回路部は、PCI-Expressインタフェース回路部に含まれるトランザクション層の回路部、データリンク層の回路部及び物理層の回路部のうちの前記トランザクション層の回路部である、
請求項１記載のストレージシステム。
【請求項７】
前記複数の第二パケットタイプが、Posted、Non-Posted及びCompletionであり、
前記所定の値は、Postedを表す値である、
請求項６記載のストレージシステム。
【請求項８】
前記送信側第一回路部は、制御情報の書き込みの場合、下記の（８−１）及び（８−２）に従う第一パケットを生成し、ユーザデータの書き込みの場合、下記の（８−３）及び（８−４）に従う第一パケットを生成する、
（８−１）前記第一データ部が、前記制御情報を有する、
（８−２）前記第一ヘッダ部が、前記第一パケットのタイプを表すパラメータ値として、前記Postedに対応した第一パケットタイプを表すパラメータ値を有する、
（８−３）前記第一データ部が、前記ユーザデータを有する、
（８−４）前記第一ヘッダ部が、前記第一パケットのタイプを表すパラメータ値として、前記Non-Postedに対応した第一パケットタイプを表すパラメータ値を有する、
請求項７記載のストレージシステム。
【請求項９】
前記複数の第二パケットタイプが、応答が必要無い第二パケットタイプ、応答が必要な第二パケットタイプ、及び応答を表す第二パケットタイプであり、
前記所定の値は、応答が必要無い第二パケットタイプを表す値である、
請求項１記載のストレージシステム。
【請求項１０】
前記送信側第一回路部は、第一種のデータの書き込みの場合、下記の（１０−１）及び（１０−２）に従う第一パケットを生成し、前記第二種のデータの書き込みの場合、下記の（１０−３）及び（１０−４）に従う第一パケットを生成する、
（１０−１）前記第一データ部が、前記第一種のデータを有する、
（１０−２）前記第一ヘッダ部が、前記第一パケットのタイプを表すパラメータ値として、応答が必要無い第二パケットタイプに対応した第一パケットタイプを表すパラメータ値を有する、
（１０−３）前記第一データ部が、前記第二種のデータを有する、
（１０−４）前記第一ヘッダ部が、前記第一パケットのタイプを表すパラメータ値として、応答が必要な第二パケットタイプに対応した第一パケットタイプを表すパラメータ値を有する、
請求項９記載のストレージシステム。
【請求項１１】
要求に従う第一パケットを生成する第一回路部と
前記第一回路部の下位の回路部であり、送信バッファを有し、前記第一パケットを含んだ第二パケットを前記送信バッファに一時格納して送信する第二回路部と
を備え、
前記第一パケットには、複数の第二パケットタイプにそれぞれ対応した複数の第一パケットタイプのうち、前記要求に従う第一パケットタイプを表すパラメータ値が含まれ、
前記第二パケットは、第二ヘッダ部と第二データ部とを有し、
前記第二回路部から送信される前記第二パケット内の前記第二データ部に、前記第一パケットが含まれ、且つ、前記第二ヘッダ部に、前記第二パケットのタイプを表すパラメータ値として所定の値が含まれ、
前記所定の値は、前記複数の第二パケットタイプのうちの所定の一つの第二パケットタイプを表す値である、
送信装置。
【請求項１２】
要求に従う第一パケットを生成する送信側第一回路部と
前記第一回路部の下位の回路部であり、送信バッファを有し、前記第一パケットを含んだ第二パケットを前記送信バッファに一時格納して送信する送信側第二回路部と
受信バッファを有し、外部の装置から第二パケットを受信して前記受信バッファに格納する受信側第二回路部と、
前記受信側第二回路部の上位の回路部であり、前記受信側第二回路部が受信した前記第二パケットに含まれている第一パケットを処理する受信側第一回路部と
を備え、
前記第一パケットには、複数の第二パケットタイプにそれぞれ対応した複数の第一パケットタイプのうち、前記要求に従う第一パケットタイプを表すパラメータ値が含まれ、
前記第二パケットは、第二ヘッダ部と第二データ部とを有し、
前記送信側第二回路部から送信される前記第二パケット内の前記第二データ部に、前記第一パケットが含まれ、且つ、前記第二ヘッダ部に、前記第二パケットのタイプを表すパラメータ値として所定の値が含まれ、
前記所定の値は、前記複数の第二パケットタイプのうちの所定の一つの第二パケットタイプを表す値である、
送受信装置。
【請求項１３】
受信バッファを有し、送信装置から第二パケットを受信して前記受信バッファに格納する第二回路部と、
前記第二回路部の上位の回路部であり、前記第二回路部が受信した前記第二パケット内のデータ部に含まれている第一パケットを処理する第一回路部と
を有し、
前記第二パケットは、第二ヘッダ部と前記第二データ部を有しており、
前記第二データ部には、第一パケットが含まれており、
前記第一パケットには、複数の第二パケットタイプにそれぞれ対応した複数の第一パケットタイプのうちのいずれかを表すパラメータ値が含まれており、
前記第二パケット内の前記第二ヘッダ部には、前記第二パケットのタイプを表すパラメータ値として、前記第一パケットに含まれている前記第一パケットタイプを表すパラメータ値に関わらず所定の値が含まれており、
前記所定の値は、前記複数の第二パケットタイプのうちの所定の一つの第二パケットタイプを表す値である、
受信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の集積回路を備えたストレージシステムに関する。
【背景技術】
【０００２】
ストレージシステムは、複数の記憶装置と、上位装置からのアクセス要求に従い複数の記憶装置のうちのいずれか一以上の記憶装置にアクセスするコントローラと備える。コントローラは、例えば、記憶装置に書き込まれる又は記憶装置から読み出されるデータを一時的に記憶するキャッシュメモリと、記憶装置に対するデータの読み書きを制御するマイクロプロセッサと、上位装置（例えばホスト計算機又は他のストレージシステム）とのインタフェース回路（上位アダプタ）と、記憶装置とのインタフェース回路（下位アダプタ）と、キャッシュメモリに対するインタフェース回路（CMアダプタ）と、マイクロプロセッサに対するインタフェース回路（MPアダプタ）と、上位アダプタ、下位アダプタ、CMアダプタ及びMPアダプタに接続されるスイッチ回路とを備える。前述の各アダプタ及びスイッチ回路は、LSI（Large Scale Integration）であり、LSI間で、送受信が行われる。LSI間での送受信のインタフェースとして、PCI-Expressを採用することができる。
【０００３】
LSIには、例えば、図１に示す送信側LSI部１０１と、図２に示す受信側LSI部２０１とが備えられる。
【０００４】
送信側LSI部１０１（受信側LSI部２０１）には、ユーザ論理１０２（２０２）と、それよりも下位に存在するPCI-Expressインタフェース回路部１０６（２０６）とが備えられる。PCI-Expressインタフェース回路部１０６（２０６）には、複数の論理回路が備えられる。それらの論理回路は、上位側から下位に側にかけて、TL（Transaction Layer）での処理を行うTL送信論理１０３（TL受信論理２０３）、DLL（Data Link Layer）での処理を行うDLL送信論理１０４（DLL受信論理２０４）、及び、PL（Physical Layer）での処理を行うPL送信論理１０５（PL受信論理２０５）である。
【０００５】
PCI-Expressでは、ＴＬで扱われるパケット（以下、TLP（Transaction Layer Packet））として、応答が必要無いタイプ（Posted）のTLPであるPosted-TLPと、応答が必要なタイプ（Non-Posted）のTLPであるNon-Posted-TLPと、応答を表すタイプ（Completion）のTLPであるCompletion-TLPとがある。
【０００６】
TL送信論理１０３（TL受信論理２０３）には、Posted、Non-Posted及びCompletionの３つのTLPタイプに対応した３つの送信バッファ１０３２、１０３３及び１０３４（３つの受信バッファ２０２３、２０３３及び２０３４）が備えられ、それらの上位に、デマルチプレクサ（以下、DEMUX）１０３１（２０３１）が備えられる。また、TL送信論理１０３には、３つの送信バッファ１０３２、１０３３及び１０３４の下位に、MUX１０３５が備えられる。
【０００７】
送信元のLSIにおいて、TL送信論理１０３は、下記の（３−１）乃至（３−３）、
（３−１）送信するTLPがPosted-TLPならば、そのTLPをPosted送信バッファ１０３２に一時格納し、そのバッファ１０３２からTLPを送信する（図３のＳ３０２、Ｓ３０３，Ｓ３０６）；
（３−２）送信するTLPがNon-Posted-TLPならば、そのTLPをNon-Posted送信バッファ１０３３に一時格納し、そのバッファ１０３３からTLPを送信する（図３のＳ３０２、Ｓ３０４，Ｓ３０６）；
（３−３）送信するTLPがCompletion-TLPならば、そのTLPをCompletion送信バッファ１０３４に一時格納し、そのバッファ１０３４からTLPを送信する（図３のＳ３０２、Ｓ３０５，Ｓ３０６）；
を行う。
【０００８】
受信元のLSIにおいて、TL受信論理２０３は、下記の（４−１）乃至（４−３）、
（４−１）受信したTLPがPosted-TLPならば、そのTLPをPosted受信バッファ２０３２に一時格納する（図４のＳ４０１、Ｓ４０２，Ｓ４０３）；
（４−２）受信したTLPがNon-Posted-TLPならば、そのTLPをNon-Posted受信バッファ２０３３に一時格納する（図４のＳ４０１、Ｓ４０２，Ｓ４０４）；
（４−３）受信したTLPがCompletion-TLPならば、そのTLPをCompletion受信バッファ２０３４に一時格納する（図４のＳ４０１、Ｓ４０２，Ｓ４０５）；
を行う。
【０００９】
PCI-Expressでの送受信に関する技術として、例えば特許文献１に開示の技術が知られている。特許文献１によれば、バッファから、TLPタイプに応じたバッファ領域が、必要なタイミングで割り当てられる。
【００１０】
【特許文献１】特開２００６−１８９９３７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
図１及び図２に示したように、複数のTLPタイプにそれぞれ対応した複数のバッファを用意すると、バッファの利用効率が悪くなる場合がある。例えば、図１８に示すように、Non-Posted-TLPに対応したバッファが満杯であれば、Posted又はCompletionに対応したバッファに空き領域があっても、Non-Posted-TLPをこれ以上格納できない。
【００１２】
また、PCI-Expressの限界性能（転送速度）で、Posted-TLP、NonPosted-TLP及びCompletion-TLPのいずれが転送されても、バッファにTLPを格納できずに性能が劣化してしまうといったことを抑えるためには、各TLPタイプに対応した各バッファの容量を、そのタイプのTLPが限界性能で転送されても滞りなく処理できるような容量とする必要がある。具体的には、例えば、図１９に示すように、Posted-TLP、NonPosted-TLP及びCompletion-TLPのいずれがPCI-Expressの限界性能で転送されても滞りなく処理が行われるようなバッファ容量とする必要がある（図１９において、それぞれ縦に並んだ３つのセルが、各タイプのTLPがPCI-Expressの限界性能で転送されても滞りなく処理が行われるようなバッファ容量に相当する）。しかし、各バッファの容量を上記のような容量とすると、PCI-Expressインタフェース回路部の論理ゲート規模（実装面積）が大きくなってしまう。これは、ストレージシステムでは特に問題である。なぜなら、ストレージシステムでは、LSI間のパス（PCI-Expressレーン）が冗長化されていることが望ましく、このために、各アダプタ及びスイッチ回路に複数のPCI-Expressインタフェース回路部が必要になるが、上記のように、PCI-Expressインタフェース回路部の実装面積が大きくなってしまうと、アダプタ及びスイッチ回路に搭載可能なPCI-Expressインタフェース回路部の数が少ない数となってしまい、それ故、LSI間のパスを冗長化することが困難になり得るからである。
【００１３】
しかし、バッファを大容量とすると、PCI-Expressインタフェース回路部の論理ゲート規模が大きくなってしまうという問題と、PCI-Expressの限界性能で或るタイプのTLPが流れていても利用されない無駄な領域がバッファに存在するという、利用効率が悪いという問題の両方が生じることになる。
【００１４】
以上の問題は、PCI-Express以外のインタフェースを利用した送受信でも有り得る問題である。
【００１５】
また、特許文献１に開示の技術を用いると、３種類のＴＬＰで一つの受信バッファを共有できるので、バッファを効率的に利用できるようになるが、これは、TL（Transaction Layer）とDLL（Data Link Layer）の内部のアルゴリズムの変更を要する。PCI-Expressのような汎用的なインタフェースは、ハードウェアとして実装するにあたり、ハードIP（Intellectual Property）や汎用チップを用いることが一般的だが、これらは通常、中身の論理が変更できない。よって、特許文献１に開示の技術を用いるためには、PL（Physical Layer）まで動作するハードIPを用いて、TL、DLLに関しては自前で開発する、などの方法をとらなければならず、インタフェース部の開発量が膨大になってしまう、といった問題が生じる。
【００１６】
従って、本発明の目的は、送信及び／又は受信に関わる回路の実装面積を抑え且つバッファの利用効率が改善される送受信技術を提供することにある。
【００１７】
また、本発明の別の目的は、インタフェース部内のレイヤ（例えば、前述のPL、DLL、TL）のアルゴリズムを変更しないで、上記の目的を達成することにある。
ることにある。
【課題を解決するための手段】
【００１８】
送信側回路に、要求に従う第一パケットを生成する送信側第一回路部と、送信側第一回路部の下位の回路部であり、第一パケットを含んだ第二パケットを送信バッファに一時格納して送信する送信側第二回路部が備えられる。第一パケットには、送信側第二回路部が行う通信のインタフェースでサポートされている複数の第二パケットタイプにそれぞれ対応した複数の第一パケットタイプのうち、上記要求に従う第一パケットタイプを表すパラメータ値が含まれる。第二パケットは、第二ヘッダ部と第二データ部とを有する。送信側第二回路部から送信される第二パケットが有する第二データ部に、第一パケットが含まれ、且つ、第二ヘッダ部に、第二パケットのタイプを表すパラメータ値として、所定の値が含まれる。所定の値は、複数の第二パケットタイプのうちの所定の一つの第二パケットタイプを表す値である。第二パケットは、送信側第一回路部と送信側第二回路部のどちらで生成されても良い。
【発明を実施するための最良の形態】
【００１９】
以下、図面を参照して、本発明の一実施形態を説明する。
【００２０】
図５Ａは、本発明の一実施形態に係るストレージシステムの構成を示す。
【００２１】
ストレージシステムは、例えばRAID（Redundant Array of Independent Disks）のようなディスクアレイ装置である。ストレージシステムは、例えば、ストレージシステムが行う処理を制御するディスクコントローラ（以下、DKC）５０１と、複数のハードディスクドライブ（HDD）５０２１を有するディスクユニット（以下、DKU）５０２とを備える。HDD５０２１に代えて、他種の記憶装置（例えばフラッシュメモリデバイス）が備えられても良い。
【００２２】
DKC５０１は、LR（LocaLRouter）５０１１、５０１２と、SW（SWitch）５０１３と、CMA（Cache Memory Adapter）５０１４と、CM（Cache Memory）５０１５と、MPA（Micro Processor Adapter）５０１６と、MCH（Memory Controller Hub）５０１７と、MP（Micro Processor）５０１８と、LM（LocaLMemory）５０１９とを備える。
【００２３】
「LR」は、ローカルルータの略であり、入出力（ＩＯ）を制御するLSIである。LRには、ホストに接続される上位のLRであるCHA（チャネルアダプタ）５０１１と、DKU５０２内のHDD５０２１に接続される下位のLRであるDKA（ディスクアダプタ）５０１２とがある。
【００２４】
SW５０１３は、CHA５０１１、DKA５０１２、CHA５０１４及びMPA５０１６にHSN（Hierarchical Star Net）で接続されたLSIである。SW５０１３は、LSI５０１１、５０１２、５０１４及び５０１６からのTLP（Transaction Layer Packet）の転送を制御する。
【００２５】
CMA５０１４は、CM５０１５の制御を行うLSIである。
【００２６】
CM５０１５は、ホストから受信しHDD５０２１に書き込まれるデータ、又は、HDD５０２１から読み出されてホストに送信されるデータを一時的に記憶するメモリである。
【００２７】
MPA５０１６は、MCH５０１７とPCI-Expressで接続されたLSIであり、MCH５０１７からのパケットを基にTLPを生成する。
【００２８】
MCH５０１７は、MPA５０１６、MP５０１７及びLM５０１９間の通信を制御するチップセットである。
【００２９】
MP５０１８は、ホストからのＩＯコマンド（ライトコマンド又はリードコマンド）を制御する。
【００３０】
LM５０１９は、MP５０１８が参照するデータなどを記憶するメモリである。
【００３１】
前述した構成要素５０１１〜５０１９のうちの少なくとも一つが、複数存在する。また、前述した構成要素５０１１〜５０１９のうち、図５Ａに太線で示したLSI５０１１、５０１２、５０１３、５０１４及び５０１６が、改良されたLSIである。それらのLSI５０１１、５０１２、５０１３、５０１４及び５０１６間を結ぶパスは、図５Ｂに示すように冗長化されており、それ故、それらのLSI５０１１、５０１２、５０１３、５０１４及び５０１６は、複数のPCI-Expressインタフェース回路５０２０を備える。各LSI５０１１、５０１２、５０１３、５０１４及び５０１６は、図６に示す送信側LSI部６０１と図７に示す受信側LSI部７０１とのセット（以下、LSI部セット）を備える。PCI-Expressインタフェース回路５０２０は、図６に示すPCI-Expressインタフェース回路部６０６と、図７に示すPCI-Expressインタフェース回路部７０６とで構成されている。各LSI５０１１、５０１２、５０１３、５０１４及び５０１６には、複数のLSI部セットが存在しても良いし、或いは、複数のPCI-Expressインタフェース回路５０２０に対してユーザ論理６０２（７０２）は共通であっても良い。
【００３２】
図６は、送信側LSI部６０１の構成図である。
【００３３】
送信側LSI部６０１には、ユーザ論理６０２と、それよりも下位に存在するPCI-Expressインタフェース回路部６０６とが備えられる。PCI-Expressインタフェース回路部６０６には、複数の論理回路が備えられる。それらの論理回路は、上位側から下位に側にかけて、TL（Transaction Layer）での処理を行うTL送信論理６０３、DLL（Data Link Layer）での処理を行うDLL送信論理１０４、及び、PL（Physical Layer）での処理を行うPL送信論理１０５である。DLL送信論理１０４及びPL送信論理１０５は、図１に示したそれと同様であり、ユーザ論理６０２及びTL送信論理６０３が、図１に示したユーザ論理１０２及びTL送信論理１０３と異なる。
【００３４】
ユーザ論理６０２は、論理回路であり、HSNL（Hierarchical Star Net Layer）送信論理６０２１を有する。HSNLは、TLの上位の層、例えばアプリケーション層である。HSNL送信論理６０２１は、HSNパケット（以下、HSNP）を生成するHSNP生成部６０２１１２と、HSNP生成部６０２１２から３タイプのHSNPのうちのいずれかを受けて出力するマルチプレクサ（MUX）６０２１１と、出力されたHSNPを含んだTLP（Transaction Layer Packet）を生成するTLP生成部６０２１３とを有する。TLP生成部６０２１３は、HSNP生成部６０２１２よりも下流にあってPosted送信バッファ６０３２よりも上流にあれば、どこに存在しても良い。従って、例えば、図６に点線で示すように、TLP生成部６０２１３は、TL送信論理６０３に存在しても良い。
【００３５】
この実施形態では、TLP生成部６０２１３では、Posted-TLPのみが生成される。このため、TL送信論理６０３では、上流側のMUX１０３１及び下流側のMUX１０３５の間に介在する送信バッファは、Posted送信バッファ６０３２のみであり、Non-Posted送信バッファ及びCompletion送信バッファは無い。Posted送信バッファ６０３２の容量は、例えば図２０に示すように、Posted-TLPがPCI-Expressの限界性能（例えば2.5Gps）で転送されても滞りなく処理が行われるような容量である。
【００３６】
なお、上記のように、３つのタイプに対応した３つの送信バッファ（又はバッファ領域）のうちの２つの送信バッファ（又はバッファ領域）を不要にするためには、Posted-TLPのみが生成されることに代えて、Non-Posted-TLPのみ或いはCompletion-TLPのみが生成されることが考えられるが、下記理由（６−１）及び（６−２）、
（６−１）Completionは、Non-Posted-TLPに対する応答であるため、Non-Posted-TLPがないと発生することはない；
（６−２）Non-Postedは、応答を必要とするタイプであるため、Non-Posted-TLPが送信先に到達すると、送信先がCompletion-TLPを返してきてしまうが、そのような応答を必要としない通信もある；
から、Posted-TLPのみが生成されることとするのが好ましいと考えられる。
【００３７】
図７は、受信側LSI部７０１の構成図である。
【００３８】
ユーザ論理７０２と、それよりも下位に存在するPCI-Expressインタフェース回路部７０６とが備えられる。PCI-Expressインタフェース回路部７０６には、複数の論理回路が備えられる。それらの論理回路は、上位側から下位に側にかけて、TLでの処理を行うTL受信論理７０３、DLLでの処理を行うDLL受信論理２０４、及び、PLでの処理を行うPL受信論理２０５である。DLL受信論理２０４及びPL受信論理２０５は、図２に示したそれと同様であり、ユーザ論理７０２及びTL受信論理７０３が、図２に示したユーザ論理２０２及びTL受信論理２０３と異なる。
【００３９】
ユーザ論理７０２は、論理回路であり、HSNL受信論理７０２１を有する。HSNL受信論理７０２１は、３タイプのHSNPのうちのいずれかを受けて出力するDEMUX７０２１１を有し、出力されたHSNPを処理する。
【００４０】
この実施形態では、Posted-TLPのみが受信される。このため、TL受信論理７０３では、MUX２０３１の下流に存在する受信バッファは、Posted受信バッファ７０３２のみであり、Non-Posted受信バッファ及びCompletion受信バッファは無い。Posted受信バッファ７０３２の容量は、例えば図２０に示すように、Posted-TLPがPCI-Expressの限界性能（例えば2.5Gps）で転送されても滞りなく処理が行われるような容量である。
【００４１】
以上の説明によれば、送信バッファ及び受信バッファの両方について、Postedに対応したバッファのみがあり、Non-Posted及びCompletionに対応したバッファ（又はバッファ領域）が無い。また、それ故、PCI-Expressの限界性能（例えば2.5Gps）で転送されても滞りなく処理が行われるようなバッファ容量は、Postedに対応したバッファについてのみ確保されれば良い。このため、バッファの利用効率が悪くなることが無く、PCI-Expressインタフェース回路５０２０（図５Ｂ参照）の実装面積（論理ゲート規模）を抑えることができる。
【００４２】
また、以上の説明によれば、PCI-Expressインタフェース回路部６０６、７０６内のレイヤ（例えば、前述のPL、DLL、TL）のアルゴリズムを実質的に変更しないで済む。このため、PCI-Expressインタフェース回路部６０６、７０６内の汎用のハードIPなどをそのまま用いることができるため、開発量を抑えた上で、バッファの利用効率を改善することができる。
【００４３】
以下、本実施形態についてより詳細に説明する。
【００４４】
図１７は、TLPの構成図である。
【００４５】
TLP１７０３は、TLPヘッダ部１７０１と、TLPデータ部１７０２とを有する。TLPデータ部１７０２に、HSNP１７０２３がセットされる。
【００４６】
HSNP１７０２３は、HSNヘッダ部１７０２１と、HSNデータ部１７０２２とを有する。HSNデータ部１７０２２には、例えば、TLP１７０３の送信先のLSIが有するレジスタに書き込まれる制御情報（例えば、TLP１７０３の送信先のLSIに対する命令の内容を表す情報）や、ホストからのIOコマンドに従ってHDD５０２１に対して読み書きされるデータ（以下、ユーザデータ）がセットされる。
【００４７】
図１０は、TLPヘッダ部１７０１の構成図である。
【００４８】
TLPヘッダ部１７０１は、例えば、４バイト×４ワード＝１６バイトで構成される。１ワード目（０DW）の２〜３ビット目のFmtフィールドと、４〜８ビット目のTypeフィールドに、TLPタイプを表す値が設定される。TLPタイプとしては、既に説明してあるように、Posted、Non-Posted及びCompletionの３タイプがあるが、本実施形態でやり取りされるTLPは、Posted-TLPのみとされる。具体的には、Fmtフィールド及びTypeフィールドに設定される値は、固定値であり、Postedを表す値が設定される。また、TLPヘッダ部１７０１には、例えば、TLPの送信先を表す情報が設定される。
【００４９】
図１１は、HSNヘッダ部１７０２１の構成図である。
【００５０】
HSNヘッダ部１７０２１は、TLPデータ部１７０２の先頭に位置し、故に、TLPヘッダ部１７０１に連続することになる。HSNヘッダ部１７０２１も、例えば、４バイト×４ワード＝１６バイトで構成される。１ワード目の上位３バイトが、CMDフィールドになっている。
【００５１】
CMDフィールドの上位4ビットに、HSNPタイプを表す値が設定される。HSNPタイプとしては、PCI-ExpressでサポートされているPosted、Non-Posted及びCompletionにそれぞれ対応したHSN-Posted、HSN-Non-Posted及びHSN-Completionがある。HSN-Postedは、応答が必要無いタイプである。HSN-Non-Postedは、応答が必要なタイプである。HSN-Completionは、応答を意味するタイプである。
【００５２】
図８は、送信側LSI部６０１で行われる処理の流れを示す。
【００５３】
HSNL送信論理６０２１内のHSNP生成部６０２１２が、パケット送信要求を、例えばユーザ論理６０２内の上位モジュール（HSNP生成部６０２１２よりも上位のモジュール）から受ける（Ｓ８０１）。
【００５４】
HSNP生成部６０２１２が、要求されたタイプに対応するHSNPタイプを表す値をHSNヘッダ部１７０２１のCMDフィールドに設定したHSNPを生成する（Ｓ８０２、Ｓ８０３、Ｓ８０４、Ｓ８０５）。そのHSNP内のHSNデータ部１７０２２には、例えば、前述した制御情報又はユーザデータが設定される。
【００５５】
次に、TLP生成部６０２１３が、生成されたHSNPのHSNPタイプに関わらずにPosted-TLPを生成する（Ｓ８０６）。具体的には、TLP生成部６０２１３が、生成されたHSNPをTLPデータ部１７０２に設定しTLPヘッダ部１７０３内にPostedを表す値を設定したPosted-TLPを生成する。生成されたPosted-TLPは、HSNL送信論理６０２１から送信される（Ｓ８０７）。Posted-TLPのTLPヘッダ部１７０３には、TLP生成部６０２１３によって、このPosted-TLPの送信先を表す送信先情報（例えばLSI番号）が設定されている。
【００５６】
HSNL送信論理６０２１からPosted-TLPを受領したTL送信論理６０３では、MUX１０３１により、受領したTLPがPosted-TLPであることが判別されて（Ｓ８０８）、そのPosted-TLPがPosted送信バッファ６０３２に格納される（Ｓ８０９）。Posted送信バッファ６０３２に格納されたPosted-TLPが、TL送信論理６０３から送信される（Ｓ８１０）。
【００５７】
TL送信論理６０３から送信されたPosted-TLPは、DLL送信論理１０４及びPL送信論理１０５を流れて、最終的に外部（PCI-Expressレーン）に出力される。
【００５８】
図６に示したTL送信論理６０３と、図１に示したTL送信論理１０３とを比較し、図８に示した流れと、図３に示した流れとを比較すると、TL送信論理１０３の論理それ自体については変更しなくても（言い換えれば、Non-Posted送信バッファ及びCompletion送信バッファを除くことで）、TL送信論理６０３を実現することが期待できる。なお、図６において、TL送信論理６０３に、MUX１０３１及び１０３５が無くても良い。MUX１０３１及び１０３５が無ければ、PCI-Expressインタフェース回路部６０６の実装面積をより抑えることが期待できる。
【００５９】
図９は、送信側LSI部６０１で行われる処理の流れを示す。
【００６０】
或るLSI（例えばCHA５０１１）内の送信側LSI部６０１から送信されたPosted-TLPは、SW５０１３を介して、そのPosted-TLPの送信先LSI（例えばCMA５０１４）内の受信側LSI部７０１に受領される。受領されたPosted-TLPは、PL受信論理２０５及びDLL受信論理２０４を経由して、TL受信論理７０３で受領される（Ｓ９０１）。
【００６１】
TL受信論理７０３内のMUX２０３１により、受領したTLPがPosted-TLPであることが判別されて（Ｓ９０２）、そのPosted-TLPがPosted受信バッファ７０３２に格納される（Ｓ９０３）。その後、HSNL受信論理７０２１に、Posted-TLPを受信したことが通知される（例えば、Posted受信バッファ７０３２に格納されたPosted-TLPが、HSNL受信論理７０２１に送信される）。
【００６２】
HSNL送信論理７０２１において、そのPosted-TLPのTLPデータ部１７０２に含まれているHSNP内のCMDフィールドが解釈され（Ｓ９０４）、その解釈の結果を基に、そのHSNPが処理される。具体的には、例えば、そのCMDフィールドに、HSN-Postedを表す値が設定されていれば、応答が返されない処理が実行され（Ｓ９０５）、HSN-Non-Postedを表す値が設定されていれば、上記送信先LSIの送信側LSI部６０１からHSN-Completionを含んだHSNPが返されることに関わる処理が実行され（Ｓ９０６）、HSN-Completionを表す値が設定されていれば、応答としての処理が実行される（Ｓ９０７）。
【００６３】
図７に示したTL受信論理７０３と、図２に示したTL受信論理２０３とを比較し、図９に示した流れと、図４に示した流れとを比較すると、TL受信論理２０３の論理それ自体については変更しなくても（言い換えれば、Non-Posted受信バッファ及びCompletion受信バッファを除くことで）、TL受信論理７０３を実現することが期待できる。なお、図７において、TL受信論理７０３に、MUX２０３１が無くても良い。MUX２０３１が無ければ、PCI-Expressインタフェース回路部７０６の実装面積をより抑えることが期待できる。
【００６４】
ところで、図１１に示したCMDフィールドには、その上位４ビットに、HSNPタイプを表す値が設定されるが、CMDフィールドの上位４ビット以外の場所には、他種の情報、例えば、CMDの定義情報が設定される。CMDの定義情報としては、例えば、レジスタライト、データリード、データライト、レジスタリード及びHSNP応答がある。レジスタライトとは、例えば、制御情報のレジスタへのライトである。データリードとは、ユーザデータのリードである。データライトとは、ユーザデータのライトである。レジスタリードとは、例えば、制御情報のレジスタからのリードである。HSNP応答とは、HSN-Non-Posted-HSNPに対する応答である。
【００６５】
図１２は、HSNPタイプとCMD定義情報との関係を示す。
【００６６】
レジスタリード及びデータリードの場合は、応答として制御情報或いはユーザデータを受領する必要があるため、HSNPタイプとして、応答が必要なタイプであるHSN-Non-Postedが採用される。また、HSNP応答の場合は、応答を意味するタイプであるHSN-Completionが採用される。
【００６７】
レジスタライト及びデータライトの場合は、HSN-Postedを採用することができるが、データライトの場合は、信頼性確保のために応答を受領した方が好ましいと考えられるので、レジスタライトについてはHSN-Postedが採用され、レジスタライトよりも信頼性が求められるデータライトについては、HSN-Non-Postedが採用される。
【００６８】
以下、レジスタライト処理、データリード処理及びデータライト処理の流れを説明する。
【００６９】
図１３は、レジスタライト処理の流れを示す。
【００７０】
例えば、CHA５０１１でIOコマンドを受けた場合、IOコマンドを受けたことがCHA５０１１からMP５０１８に通知され、MP５０１８が、そのIOコマンドに従う命令を表す制御情報とライトを意味する値とを含んだPosted-TLPを、MPA５０１６に送信する（Ｓ１３０１）。
【００７１】
MPA５０１６は、Posted-TLPを受信したため、MPA５０１６内のHSNP生成部６０２１２が、それに対応するHSNPとしてPosted-HSNPを生成する。このHSNPのHSNデータ部１７０２２に、前述の制御情報が設定される。TLP生成部６０２１３が、そのPosted-HSNPを含んだPosted-TLPを生成し（Ｓ１３０２）、そのMPA５０１６、前述の制御情報の書込み先のレジスタを有するLR５０１１（又は５０１２）に送信する（Ｓ１３０３）。HSNPの生成の際に、HSNPのシーケンス番号が、例えばHSNヘッダ部１７０２１に設定される。また、送信されるPosted-TLPのTLPヘッダ部１７０１に、例えば、送信先LR５０１１（又は５０１２）を表す送信先情報が設定される。
【００７２】
MPA５０１６から送信されたPosted-TLPを、SW５０１３が受信する。SW５０１３は、そのPosted-TLP内の送信先情報が表す送信先LR５０１１（又は５０１２）に、そのPosted-TLPを転送する（Ｓ１３０４）。
【００７３】
SW５０１３から転送されたPosted-TLPを、送信先ＬＲ５０１１（又は５０１２）が受信する。送信先ＬＲ５０１１では、受信したPosted-TLP内のPosted-HSNPに含まれているシーケンス番号が、予測シーケンス番号と同じかどうか判断される（Ｓ１３０５）。例えば、直前回のシーケンス番号がＫ−１（例えばＫ＝３）であれば、今回の予測シーケンス番号はＫであり、Posted-HSNPに含まれているシーケンス番号もＫであれば、予測シーケンス番号と一致したということになる。
【００７４】
次に、前述のＳ１３０１乃至Ｓ１３０５が行われる場合（Ｓ１３１１乃至Ｓ１３１５）、HSNPに設定されるシーケンス番号はＫ＋１（＝４）となり、同様に、予測シーケンス番号もＫ＋１となる。
【００７５】
以上のように、レジスタライトでは、応答が不要のPosed-HSNPが生成され、それ故、図１３に示したように、Posted-HSNPが送信先LR５０１１（又は５０１２）で処理されても、応答は、送信先LR５０１１からMPA５０１６に送られない。
【００７６】
図１４は、データリード処理の流れを示す。
【００７７】
LR５０１１（又は５０１２）内のHSNP生成部６０２１２は、例えば、MP５０１８からの制御情報がデータリードを表す場合、その制御情報を含んだNon-Posted-HSNPを生成する。そのNon-Posted-HSNPを含んだPosted-TLPが、LR５０１１（又は５０１２）から、SW５０１３を経由して、そのTLPの送信先であるCMA５０１４に送信される（Ｓ１４０１、Ｓ１４０２）。
【００７８】
CMA５０１４は、そのPosted-TLP内のNon-Posted-HSNPに従って、CM５０１５からユーザデータをリードする。CMA５０１４内のHSNP生成部６０２１２は、リードしたユーザデータを含んだCompletion-HSNPを生成する。そのCompletion-HSNPを含んだPosted-TLPが、CMA５０１４から、SW５０１３を経由して、前述のNon-Posted-HSNPの送信元であるLR５０１１（又は５０１２）に送信される（Ｓ１４０３、Ｓ１４０４）。
【００７９】
図１５は、一重データライト処理の流れを示す。
【００８０】
一重データライト処理では、例えば二重化されているCMA５０１４、５０１４のうちの一方のCMA５０１４に対してのみTLPが送信される。第一のデータライト処理が行われるケースとしては、例えば、二重化されているCMA５０１４、５０１４のうちの他方に障害が発生しているケースがある。MP５０１８が、例えば、他方のCMA５０１４の障害を検出した場合に、一重データライトを表す制御情報を、LR５０１１（又は５０１２）に発行する。
【００８１】
LR５０１１（又は５０１２）が、一重データライトを表す制御情報を含んだPosted-HSNPをMPA５０１６から受領した場合（具体的には、LR５０１１（又は５０１２）内のHSNL受信論理７０２１で、一重データライトを表す制御情報が特定された場合）、そのLR５０１１（又は５０１２）内のHSNP生成部６０２１２が、一重データライトを表す制御情報を含んだNon-Posted-HSNPを生成する。Non-Posted-HSNPとするのは、前述したように、信頼性確保のためである。そのNon-Posted-HSNPを含んだPosted-TLPが生成されて、LR５０１１（又は５０１２）からSW５０１３を介して一方のCMA５０１４に送信される（Ｓ１５０１、Ｓ１５０２）。
【００８２】
CMA５０１４は、そのPosted-TLP内のNon-Posted-HSNPに従って、そのNon-Posted-HSNP内のユーザデータをCM５０１５にライトする。CMA５０１４内のHSNP生成部６０２１２は、ユーザデータのライトの完了を意味する情報を含んだCompletion-HSNPを生成する。そのCompletion-HSNPを含んだPosted-TLPが、CMA５０１４から、SW５０１３を経由して、前述のNon-Posted-HSNPの送信元であるLR５０１１（又は５０１２）に送信される（Ｓ１５０３、Ｓ１５０４）。
【００８３】
図１６は、二重データライト処理の流れを示す。
【００８４】
二重データライト処理では、例えば二重化されているCMA５０１４、５０１４のうちの双方のCMA５０１４に対してTLPが送信される。本実施形態では、基本的に二重データライト処理が行われ、いずれかのCMA５０１４に障害が生じた場合に、一重データライトが行われる。
【００８５】
LR５０１１（又は５０１２）が、二重データライトを表す制御情報を含んだPosted-HSNPをMPA５０１６から受領した場合（具体的には、LR５０１１（又は５０１２）内のHSNL受信論理７０２１で、二重データライトを表す制御情報が特定された場合）、そのLR５０１１（又は５０１２）内のHSNP生成部６０２１２が、二重データライトを表す制御情報を含んだNon-Posted-HSNPを生成する。そのNon-Posted-HSNPを含んだPosted-TLPが生成されて、LR５０１１（又は５０１２）からSW５０１３に送信される（Ｓ１６０１）。
【００８６】
SW５０１３は、二重データライトを表す制御情報を含んだNon-Posted-HSNPを特定した場合に、受信したPosted-TLPの複製を作成する（Ｓ１６０２）。SW５０１３は、一方のPosted-TLPを一方のCMA５０１４（CMA2）に転送し（Ｓ１６０３Ａ）、他方のPosted-TLPを他方のCMA５０１４（CMA2）に転送する（Ｓ１６０３Ｂ）。
【００８７】
一方のCMA５０１４（CMA2）は、そのPosted-TLP内のNon-Posted-HSNPに従って、そのNon-Posted-HSNP内のユーザデータをCM５０１５にライトする。一方のCMA５０１４（CMA2）内のHSNP生成部６０２１２は、ユーザデータのライトの完了を意味する情報を含んだCompletion-HSNPを生成する。そのCompletion-HSNPを含んだPosted-TLPが、CMA５０１４から、SW５０１３を経由して、前述のNon-Posted-HSNPの送信元であるLR５０１１（又は５０１２）に送信される（Ｓ１６０４Ａ、Ｓ１６０５Ａ）。他方のCMA５０１４（CMA1）についても、同様の処理が行われる（Ｓ１６０３Ｂ、Ｓ１６０４Ｂ、１６０５Ｂ）。
【００８８】
送信元のLR５０１１（又は５０１２）は、送信したPosted-TLPは１つであっても、そのTLPに、二重データライトを表す制御情報を含んだNon-Posted-HSNPが含まれている場合には、２つの応答（Completion-HSNPを含んだPosted-TLP）を待つ（Ｓ１６１１）。２つの応答を送信元のLR５０１１（又は５０１２）が受信した場合に、二重データライト処理が正常に終了する。
【００８９】
以上、本発明の好適な実施形態を説明したが、本発明は、この実施形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【図面の簡単な説明】
【００９０】
【図１】従来の送信側LSI部の構成図。
【図２】従来の受信側LSI部の構成図。
【図３】従来の送信側LSI部で行われる処理の流れを示す。
【図４】従来の受信側LSI部で行われる処理の流れを示す。
【図５】図５Ａは、本発明の一実施形態に係るストレージシステムの構成を示す。図５Ｂは、ＬＳＩの結線図である。
【図６】本発明の一実施形態に係る送信側LSI部の構成図。
【図７】本発明の一実施形態に係る受信側LSI部の構成図。
【図８】図６の送信側LSI部で行われる処理の流れを示す。
【図９】図７の受信側LSI部で行われる処理の流れを示す。
【図１０】TLPヘッダ部の構成図である。
【図１１】HSNヘッダ部の構成図である。
【図１２】HSNPタイプとCMD定義情報との関係を示す。
【図１３】レジスタライト処理の流れを示す。
【図１４】データリード処理の流れを示す。
【図１５】一重データライト処理の流れを示す。
【図１６】二重データライト処理の流れを示す。
【図１７】TLPの構成図。
【図１８】バッファの利用効率が悪くなる一つの例を示す図。
【図１９】どのTLPタイプのTLPをPCI-Expressの限界性能で受信しても滞りなく処理が行われるようにするためのバッファの容量の概念を示す。
【図２０】本発明の一実施形態においてTLPをPCI-Expressの限界性能で受信しても滞りなく処理が行われるようにするためのバッファの容量の概念を示す。
【符号の説明】
【００９１】
１０４…DLL（Data Link Layer）送信論理  １０５…PL（Physical Layer）送信論理  ６０１…送信側LSI部  ６０２…ユーザ論理  ６０３…TL（Transaction Layer）送信論理  ６０２１…HSN（Hierarchical Star Net）送信論理  ６０３２…Posted送信バッファ  ６０２１２…HSNP（HSN-Packet）生成部  ６０２１３…TLP（Transport Layer Packet）生成部
【図１】
2010049596.tif 000003
【図２】
2010049596.tif 000004
【図３】
2010049596.tif 000005
【図４】
2010049596.tif 000006
【図５】
2010049596.tif 000007
【図６】
2010049596.tif 000008
【図７】
2010049596.tif 000009
【図８】
2010049596.tif 000010
【図９】
2010049596.tif 000011
【図１０】
2010049596.tif 000012
【図１１】
2010049596.tif 000013
【図１２】
2010049596.tif 000014
【図１３】
2010049596.tif 000015
【図１４】
2010049596.tif 000016
【図１５】
2010049596.tif 000017
【図１６】
2010049596.tif 000018
【図１７】
2010049596.tif 000019
【図１８】
2010049596.tif 000020
【図１９】
2010049596.tif 000021
【図２０】
2010049596.tif 000022