(57)【要約】【課題】  チャネルプロセッサのオーバーヘッドを低減する。【解決手段】  複数のチャネルプロセッサ（１５，１６）のうち第一のチャネルプロセッサ（１５）がホストシステムからのＩ／Ｏリクエストを受信すると、各チャネルプロセッサ（１５，１６）のＬＭディレクトリ（２０，２１）に基づいて、Ｉ／Ｏリクエストに応答するための処理の一部を実行する第二のチャネルプロセッサ（１６）を複数のチャネルプロセッサ（１５，１６）の中から選択する。第二のプロセッサ（１６）は、キャッシュヒットの有無をチェックする。キャッシュヒットしていれば、第二のプロセッサ（１６）は、キャッシュメモリ（１３０）からバッファメモリ（１７）にデータを転送する。第一のチャネルプロセッサ（１５）は、バッファメモリ（１７）に転送されたデータを使用してＩ／Ｏリクエストを処理する。【選択図】      図２
2007079958.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムからのＩ／Ｏリクエストを処理する複数のチャネルプロセッサと、
前記ホストシステムからのＩ／Ｏリクエストに応答して各チャネルプロセッサが読み書きしたデータをキャッシュスロットに一時的に格納するキャッシュメモリと、
各チャネルプロセッサに割り当てられたローカルメモリであって、各チャネルプロセッサが読み書きしたデータが前記キャッシュスロットに存在するか否かを示す管理情報を格納するローカルメモリと、
前記複数のチャネルプロセッサ相互間で送受信されるデータを格納するバッファメモリと、を備え、
前記複数のチャネルプロセッサのうち第一のチャネルプロセッサが前記ホストシステムからＩ／Ｏリクエストを受信すると、前記第一のチャネルプロセッサは、各チャネルプロセッサのそれぞれのローカルメモリに格納されている前記管理情報に基づいて、前記Ｉ／Ｏリクエストに応答するための処理の一部を実行する第二のチャネルプロセッサを前記複数のチャネルプロセッサの中から選択し、前記第二のプロセッサがキャッシュヒットの有無をチェックし、キャッシュヒットしていれば、前記第二のプロセッサが前記キャッシュメモリから前記バッファメモリにデータを転送し、前記第一のチャネルプロセッサが前記バッファメモリに転送されたデータを使用して前記Ｉ／Ｏリクエストを処理する、記憶制御装置。
【請求項２】
ホストシステムからのＩ／Ｏリクエストを処理する複数のチャネルプロセッサと、
前記ホストシステムからのＩ／Ｏリクエストに応答して各チャネルプロセッサが読み書きしたデータをキャッシュスロットに一時的に格納するキャッシュメモリと、
前記複数のチャネルプロセッサ相互間で送受信されるデータを格納するバッファメモリと、を備え、
前記複数のチャネルプロセッサのうち第一のチャネルプロセッサが前記ホストシステムからＩ／Ｏリクエストを受信すると、前記第一のチャネルプロセッサは、前記ホストシステムから要求されているデータのアドレス、又は前記ホストシステムのアクセスパターンに基づいて、前記Ｉ／Ｏリクエストに応答するための処理の一部を実行する第二のチャネルプロセッサを前記複数のチャネルプロセッサの中から選択し、前記第二のプロセッサがキャッシュヒットの有無をチェックし、キャッシュヒットしていれば、前記第二のプロセッサが前記キャッシュメモリから前記バッファメモリにデータを転送し、前記第一のチャネルプロセッサが前記バッファメモリに転送されたデータを使用して前記Ｉ／Ｏリクエストを処理する、記憶制御装置。
【請求項３】
複数のチャネルプロセッサのうち第一のチャネルプロセッサがホストシステムからのＩ／Ｏリクエストを受信するステップと、
各チャネルプロセッサが読み書きしたデータがキャッシュスロットに存在するか否かを示す管理情報に基づいて前記Ｉ／Ｏリクエストに応答するための処理の一部を実行する第二のチャネルプロセッサを前記複数のチャネルプロセッサの中から選択するステップと、
前記第二のプロセッサがキャッシュヒットの有無をチェックし、キャッシュヒットしていれば、前記第二のプロセッサが前記キャッシュメモリから前記バッファメモリにデータを転送するステップと、
前記第一のチャネルプロセッサが前記バッファメモリに転送されたデータを使用して前記Ｉ／Ｏリクエストを処理するステップと、
を備える、データ処理方法。
【請求項４】
複数のチャネルプロセッサのうち第一のチャネルプロセッサがホストシステムからのＩ／Ｏリクエストを受信するステップと、
前記ホストシステムから要求されているデータのアドレス、又は前記ホストシステムのアクセスパターンに基づいて、前記Ｉ／Ｏリクエストに応答するための処理の一部を実行する第二のチャネルプロセッサを前記複数のチャネルプロセッサの中から選択するステップと、
前記第二のプロセッサがキャッシュヒットの有無をチェックし、キャッシュヒットしていれば、前記第二のプロセッサが前記キャッシュメモリから前記バッファメモリにデータを転送するステップと、
前記第一のチャネルプロセッサが前記バッファメモリに転送されたデータを使用して前記Ｉ／Ｏリクエストを処理するステップと、
を備える、データ処理方法。
【請求項５】
記憶制御装置に請求項３に記載のデータ処理を実行させるためのコンピュータプログラム。
【請求項６】
記憶制御装置に請求項４に記載のデータ処理を実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は記憶制御装置、データ処理方法、及びコンピュータプログラムに関する。
【背景技術】
【０００２】
近年、大量のデータを管理するためのストレージシステムとして、ディスアレイ装置が用いられている。ディスクアレイ装置は、多数のディスクドライブをアレイ状に配設して構成されるもので、ＲＡＩＤ（Redundant Arrays of Independent Inexpensive Disks）構成された記憶資源をホストシステムに提供する。ホストシステムとディスクアレイ装置とをネットワーク接続するインターフェースとして、ＦＣ（Fibre Channel）プロトコルを用いたＳＡＮ（Storage Area Network）環境が普及している。ＳＡＮを介してホストシステムに接続するディスクアレイ装置は、ブロックアクセス要求を受け付けるためのチャネル制御部を備える。チャネル制御部は、ホストシステムとの間のファイバチャネルインターフェースを制御する複数のファイバチャネル制御プロセッサと、ホストシステムからのＩ／Ｏリクエストを処理する複数のチャネルプロセッサとを実装している。特開平９−１６０８８９号広報にて言及されているように、複数のプロセッサを搭載するシステムにおいては、各プロセッサの負荷を均一に制御することがシステムの処理能率向上に不可欠である。
【特許文献１】特開平９−１６０８８９号広報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、従来のディスクアレイ装置では、チャネル制御部内に複数のチャネルプロセッサを搭載しているにも拘らず、ある一つのポートがホストシステムから受信したＩ／Ｏリクエストは、一つのチャネルプロセッサのみがＩ／Ｏ処理を行っており、他のチャネルプロセッサの資源を有効に活用できていない。ファイバチャネルインターフェースの高速化を実現するためには、チャネルプロセッサのオーバーヘッドを低減することが課題となっており、特に、共有メモリへのアクセスを伴うキャッシュスロットの管理や、キャッシュメモリからのデータ転送処理を効率よく処理することが求められている。
【０００４】
そこで、本発明は、このような問題を解決し、チャネルプロセッサのオーバーヘッドを低減することを課題とする。
【課題を解決するための手段】
【０００５】
上記の課題を解決するため、本発明の記憶制御装置は、ホストシステムからのＩ／Ｏリクエストを処理する複数のチャネルプロセッサと、ホストシステムからのＩ／Ｏリクエストに応答して各チャネルプロセッサが読み書きしたデータをキャッシュスロットに一時的に格納するキャッシュメモリと、各チャネルプロセッサに割り当てられたローカルメモリであって、各チャネルプロセッサが読み書きしたデータがキャッシュスロットに存在するか否かを示す管理情報を格納するローカルメモリと、複数のチャネルプロセッサ相互間で送受信されるデータを格納するバッファメモリと、を備える。複数のチャネルプロセッサのうち第一のチャネルプロセッサがホストシステムからＩ／Ｏリクエストを受信すると、第一のチャネルプロセッサは、各チャネルプロセッサのそれぞれのローカルメモリに格納されている管理情報に基づいて、Ｉ／Ｏリクエストに応答するための処理の一部を実行する第二のチャネルプロセッサを複数のチャネルプロセッサの中から選択する。第二のプロセッサは、キャッシュヒットの有無をチェックする。キャッシュヒットしていれば、第二のプロセッサは、キャッシュメモリからバッファメモリにデータを転送する。第一のチャネルプロセッサは、バッファメモリに転送されたデータを使用してＩ／Ｏリクエストを処理する。各チャネルプロセッサが読み書きしたデータがキャッシュスロットに存在するか否かを示す管理情報を基に、Ｉ／Ｏリクエストに応答するための処理の一部を実行する第二のチャネルプロセッサを選択することで、第二のチャネルプロセッサのキャッシュヒット率を高めることができる。これにより、共有メモリへのアクセスを伴うキャッシュスロットの管理や、キャッシュメモリからのデータ転送処理に伴うチャネルプロセッサのオーバーヘッドを低減できる。
【０００６】
本発明の他の観点に従う記憶制御装置は、ホストシステムからのＩ／Ｏリクエストを処理する複数のチャネルプロセッサと、ホストシステムからのＩ／Ｏリクエストに応答して各チャネルプロセッサが読み書きしたデータをキャッシュスロットに一時的に格納するキャッシュメモリと、複数のチャネルプロセッサ相互間で送受信されるデータを格納するバッファメモリとを備える。複数のチャネルプロセッサのうち第一のチャネルプロセッサがホストシステムからＩ／Ｏリクエストを受信すると、第一のチャネルプロセッサは、ホストシステムから要求されているデータのアドレス、又はホストシステムのアクセスパターンに基づいてＩ／Ｏリクエストに応答するための処理の一部を実行する第二のチャネルプロセッサを複数のチャネルプロセッサの中から選択する。第二のプロセッサは、キャッシュヒットの有無をチェックする。キャッシュヒットしていれば、第二のプロセッサは、キャッシュメモリからバッファメモリにデータを転送する。第一のチャネルプロセッサは、バッファメモリに転送されたデータを使用してＩ／Ｏリクエストを処理する。ホストシステムから要求されているデータのアドレス、又はホストシステムのアクセスパターンに基づいて、Ｉ／Ｏリクエストに応答するための処理の一部を実行する第二のチャネルプロセッサを選択することで、第二のチャネルプロセッサのキャッシュヒット率を高めることができる。これにより、共有メモリへのアクセスを伴うキャッシュスロットの管理や、キャッシュメモリからのデータ転送処理に伴うチャネルプロセッサのオーバーヘッドを低減できる。
【発明の効果】
【０００７】
本発明によれば、チャネルプロセッサのオーバーヘッドを低減できる。
【発明を実施するための最良の形態】
【０００８】
以下、各図を参照しながら本発明の実施形態について説明する。
図１は本実施例に係るストレージシステム６００のハードウェア構成を示している。ストレージシステム６００は、主に、記憶制御装置１００と記憶装置３００とから構成される。記憶制御装置１００は、例えば、ホストシステム２００から受信したコマンドに従って、記憶装置３００へのデータの入出力制御を行う。また、記憶制御装置１００は、例えば、管理サーバ４１０から受信したコマンドに従って、ストレージシステム６００の構成情報の設定又は変更等の各種の処理を行う。
【０００９】
ホストシステム２００は、例えば、パーソナルコンピュータ、ワークステーション、或いはメインフレームコンピュータ等の上位装置であり、銀行の自動預金預け払いシステムや、航空機の座席予約システム等に利用される。ホストシステム２００はＳＡＮ５００を介して記憶制御装置１００と通信可能に接続されている。ＳＡＮ５００は、記憶装置３００が提供する記憶資源におけるデータの管理単位であるブロックを単位として、ホストシステム２００との間でデータの授受を行うためのネットワークである。ＳＡＮ５００を介してホストシステム２００と記憶制御装置１００との間で行われる通信プロトコルは、例えば、ファイバチャネルプロトコルである。
【００１０】
もとより、ホストシステム２００と記憶制御装置１００との間は、必ずしも、ＳＡＮ５００を介して接続されている必要はなく、例えば、ＬＡＮ（Local Area Network）を介して接続されていてもよく、或いは、ネットワークを介さずに直接に接続されていてもよい。ＬＡＮを介して接続される場合には、例えば、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）に従って通信を行うこともできる。ホストシステム２００と記憶制御装置１００との間を、ネットワークを介さずに直接接続する場合には、例えば、ＦＩＣＯＮ（Fibre Connection）（登録商標）、ＥＳＣＯＮ(Enterprise System Connection) （登録商標）、ＡＣＯＮＡＲＣ（Advanced Connection Architecture）（登録商標）、ＦＩＢＡＲＣ（Fibre Connection Architecture）（登録商標）等の通信プロトコルに従って、通信を行ってもよい。
【００１１】
管理サーバ４１０は、外部ＬＡＮ４００を介して管理端末１６０と接続されている。外部ＬＡＮ４００は、例えば、インターネット或いは専用線等で構成される。外部ＬＡＮ４００を介して行われる、管理サーバ４１０と管理端末１６０との間の通信は、例えば、ＴＣＰ／ＩＰ等の通信プロトコルによって行われる。
【００１２】
記憶装置３００は、複数の物理ディスクドライブ３３０を備えている。物理ディスクドライブ３３０は、例えば、ＡＴＡ（Advanced Technology Attachment）ディスクドライブ、ＳＣＳＩ（Small Computer System Interface）ディスクドライブ、ファイバチャネルディスクドライブ等のハードディスクドライブである。アレイ状に配列された複数のディスクドライブによって、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）を構成することも可能である。物理ディスクドライブ３３０により提供される物理的な記憶領域である物理ボリュームには、論理デバイスを設定することができる。記憶制御装置１００と記憶装置３００との間は、ネットワークを介さずに直接に接続してもよく、或いはネットワークを介して接続してもよい。或いは、記憶装置３００と記憶制御装置１００を一体構成としてもよい。
【００１３】
記憶制御装置１００は、チャネル制御部１１０、共有メモリ１２０、キャッシュメモリ１３０、ディスク制御部１４０、管理端末１６０、及びキャッシュスイッチ１５０を備える。
【００１４】
記憶制御装置１００は、チャネル制御部１１０により、ＳＡＮ５００を介してホストシステム２００との間の通信を行う。チャネル制御部１１０は、ホストシステム２００との間で通信を行うための通信インターフェースを備え、ホストシステム２００との間でデータ入出力コマンド等を授受する機能を備える。各々のチャネル制御部１１０は、管理端末１６０と共に内部ＬＡＮ（共有バス）１５１を介して接続されている。これにより、チャネル制御部１１０に実行させるマイクロプログラム等を管理端末１６０からインストールすることが可能である。
【００１５】
キャッシュスイッチ１５０は、チャネル制御部１１０、共有メモリ１２０、キャッシュメモリ１３０、ディスク制御部１４０、及び管理端末１６０を相互に接続する。チャネル制御部１１０、共有メモリ１２０、キャッシュメモリ１３０、ディスク制御部１４０、及び管理端末１６０の間におけるデータやコマンドの授受は、キャッシュスイッチ１５０を介して行われる。キャッシュスイッチ１５０は、例えば、クロスバスイッチ等で構成される。
【００１６】
共有メモリ１２０とキャッシュメモリ１３０は、それぞれチャネル制御部１１０とディスク制御部１４０とによって共有されるメモリ装置である。共有メモリ１２０は、主として、リソースの構成情報や各種コマンド等を記憶するために利用される。キャッシュメモリ１３０は、主として、物理ディスク３３０に読み書きされるデータを一時的に記憶するために利用される。
【００１７】
例えば、あるチャネル制御部１１０がホストシステム２００から受信したデータ入出力要求が書き込みコマンドであった場合には、チャネル制御部１１０は、書き込みコマンドを共有メモリ１２０に書き込むと共に、ホストシステム２００から受信した書き込みデータをキャッシュメモリ１３０に書き込む。
【００１８】
一方、ディスク制御部１４０は、共有メモリ１２０を常時監視しており、共有メモリ１２０に書き込みコマンドが書き込まれたことを検出すると、そのコマンドに従って、キャッシュメモリ１３０からダーティデータを読み出して、これを物理ディスクドライブ３００にデステージする。
【００１９】
また、あるチャネル制御部１１０がホストシステム２００から受信したデータ入出力要求が読み出しコマンドであった場合には、読み出し対象となるデータがキャッシュメモリ１３０に存在するかどうかを調べる。ここで、読み出し対象となるデータがキャッシュメモリ１３０に存在すれば、チャネル制御部１１０は、そのデータをキャッシュメモリ１３０から読み取って、ホストシステム２００に送信する。
【００２０】
一方、読みだし対象となるデータがキャッシュメモリ１３０に存在しない場合には、チャネル制御部１１０は、読み出しコマンドを共有メモリ１２０に書き込む。ディスク制御部１４０は、共有メモリ１２０を常時監視しており、読み出しコマンドが共有メモリ１２０に書き込まれたことを検出すると、ディスク制御部１４０は、記憶装置３００から読みだし対象となるデータを読み出して、これをキャッシュメモリ１３０に書き込むと共に、その旨を共有メモリ１２０に書き込む。すると、チャネル制御部１１０は読みだし対象となるデータがキャッシュメモリ１３０に書き込まれたことを検出し、そのデータをキャッシュメモリ１３０から読み出して、ホストシステム２００に送信する。
【００２１】
このように、チャネル制御部１１０とディスク制御部１４０との間では、キャッシュメモリ１３０を介してデータの授受が行われる。キャッシュメモリ１３０には、物理ディスクドライブ３３０に記憶されるデータのうち、チャネル制御部１１０やディスク制御部１４０によって、読み書きされるデータが一時的に書き込まれる。
【００２２】
尚、キャッシュメモリ１３０には、単一又は複数の仮想記憶領域（以下、キャッシュスロットと称する。）を設定することができる。キャッシュスロットは、ある一つの論理ボリュームに対して設定される。具体的には、キャッシュスロットには、そのキャッシュスロットに対応している論理ボリュームに書き込まれるデータ、或いはその論理ボリュームから読み出されるデータが一時的に格納される。
【００２３】
ディスク制御部１４０は、データを記憶する複数の物理ディスクドライブ３３０と通信可能に接続され、記憶装置３００の制御を行う。例えば、上述のように、チャネル制御部１１０がホストシステム２００から受信したデータ入出力要求に応じて、物理ディスクドライブ３３０に対してデータの読み書きを行う。
【００２４】
各ディスク制御部１４０は管理端末１６０と共に内部ＬＡＮ１５１で接続されており、相互に通信を行うことが可能である。これにより、ディスク制御部１４０に実行させるマイクロプログラム等を管理端末１６０から送信しインストールすることが可能となっている。
【００２５】
管理端末１６０は、ストレージシステム６００を管理するためのコンピュータである。システム管理者は管理端末１６０を操作することにより、例えば、物理ディスクドライブ３３０の構成の設定、ホストシステム２００とチャネル制御部１１０との間のパスの設定、チャネル制御部１１０やディスク制御部１４０において実行されるマイクロプログラムのインストール等を行うことができる。ここで、物理ディスクドライブ３３０の構成の設定とは、例えば、物理ディスクドライブ３３０の増設或いは減設、ＲＡＩＤ構成の変更（例えば、ＲＡＩＤ１からＲＡＩＤ５への変更）等をいう。更に、管理端末１６０からは、ストレージシステム６００の動作状態の確認や故障部位の特定、チャネル制御部１１０で実行されるオペレーティングシステムのインストール等の作業を行うこともできる。これら各種の設定や制御は、管理端末１６０が備えるユーザインターフェースを通じて行うことができる。
【００２６】
図２はチャネル制御部１１０の詳細構成を示す。チャネル制御部１１０は、複数のポート１１，１２と、複数のファイバチャネル制御プロセッサ（ＦＣ）１３，１４と、複数のチャネルプロセッサ（ＣＨＰ）１５，１６と、バッファメモリ（ＤＸＢＦ）１７と、バス２２とを備える。各々のファイバチャネル制御プロセッサ１３，１４は、ホストシステム２００との間のファイバチャネルインターフェースを制御する。各々のチャネルプロセッサ１５，１６は、ホストシステム２００からのＩ／Ｏリクエストを処理する専用プロセッサである。チャネルプロセッサ１５は、ＬＭディレクトリ（ローカルメモリディレクトリ）２０等を格納するローカルメモリ（ＬＭ）１８を備える。ＬＭディレクトリ２０は、チャネルプロセッサ１５が読み書きしたデータがキャッシュスロット１３１に存在するか否かを示す管理情報（キャッシュ管理テーブル）である。キャッシュスロット１３１は、キャッシュメモリ１３０のデータ管理単位であり、１トラック分のデータを格納できるデータサイズ（２５６ＫＢ）を有している。同様に、チャネルプロセッサ１６は、ＬＭディレクトリ２１等を格納するローカルメモリ（ＬＭ）１９を備える。
【００２７】
バッファメモリ１７は、チャネルプロセッサ１５，１６の間でデータの受け渡しをするために用いられる。バス２２は、複数のファイバチャネル制御プロセッサ１３，１４と、複数のチャネルプロセッサ１５，１６と、バッファメモリ１７と、キャッシュスイッチ１５０とを相互に接続する。チャネルプロセッサ１５，１６は、バス２２を介して相互に通信することができる。更に、チャネルプロセッサ１５は、バス２２を介してＬＭディレクトリ２１を参照したり、或いはキャッシュスロット３１の管理情報を書き込んだりすることができる。同様に、チャネルプロセッサ１６は、バス２２を介してＬＭディレクトリ２０を参照したり、或いはキャッシュスロット１３１の管理情報を書き込んだりすることができる。
【００２８】
尚、説明の便宜上、チャネル制御部１１０内のポート数、ファイバチャネル制御プロセッサ数、及びチャネルプロセッサ数がそれぞれ二つである場合を例示したが、本発明はこれに限られるものではなく、チャネル制御部１１０内のポート数、ファイバチャネル制御プロセッサ数、及びチャネルプロセッサ数がそれぞれ３以上であってもよい。
【００２９】
共有メモリ１２０は、ＳＭディレクトリ（共有メモリディレクトリ）１２１を格納している。ＳＭディレクトリ１２１は、全てのチャネルアダプタ１１０内の全てのチャネルプロセッサ１５，１６が読み書きしたデータがキャッシュスロット１３１に存在するか否かを示す管理情報である。上述したＬＭディレクトリ２０，２１は、ＳＭディレクトリ１２１の管理情報のうちそれぞれチャネルプロセッサ１５，１６が読み書きしたデータがキャッシュスロット１３１に存在するか否かを示す管理情報をコピーしたものである。
【００３０】
図３はＬＭディレクトリ２０のテーブル構造を示す。ＬＭディレクトリ２０は、ハッシュテーブルの構造となっている。チャネルプロセッサ１５は、ＳＭディレクトリ１２１からコピーした管理情報（キャッシュスロット１３１のスロット番号）からハッシュキーを算出し、そのハッシュキーに対応するエリア１乃至エリアＮの中の「空きエリア」にスロット番号を登録する。スロット番号（Slot＃）とは、仮想デバイス（ＶＤＥＶ）のアドレスを示し、キャッシュスロット１３１のアドレスに対応付けられている。
【００３１】
仮想デバイスは、例えば、４つの物理ディスク３３０を一組としてグループ化することにより（３Ｄ＋１Ｐ）、或いは８つの物理ディスク３３０を一組としてグループ化することにより（７Ｄ＋１Ｐ）、構成される。即ち、複数の物理ディスク３３０のそれぞれが提供する記憶領域が集合して一つの仮想デバイスが形成される。一つの仮想デバイスを複数に分割することにより、複数の論理デバイス（ＬＤＥＶ）を形成することもできるし、或いは複数の仮想デバイスを集めて一つの論理デバイスを形成することもできる。論理デバイスは、ホストシステム２００が認識する論理的な記憶単位である論理ユニット（ＬＵ）にマッピングされる。例えば、ホストシステム２００がＵＮＩＸ（登録商標）系のシステムである場合には、論理ユニットは、デバイスファイル（Device File）に対応付けられる。或いは、ホストシステム２００がＷｉｎｄｏｗｓ（登録商標）系のシステムである場合には、論理ユニットは、ドライブレター（ドライブ名）に対応付けられる。論理ユニットには、固有のＬＵＮ（Logical Unit Number）がアサインされる。
【００３２】
論理デバイスのアドレスは、ＬＵＮと論理ブロックアドレス（ＬＢＡ）との組み合わせ（ＬＵＮ＋ＬＢＡ）により定まる。一方、仮想デバイスのアドレスは、ＶＤＥＶ番号とスロット番号との組み合わせ（ＶＤＥＶ番号＋スロット番号）により定まる。論理デバイスのアドレス、仮想デバイスのアドレス、及びキャッシュスロット１３１のアドレスは、それぞれ対応付けられており、相互に変換できる。本明細書では、ＶＤＥＶ番号とスロット番号とを組み合わせたアドレスを、便宜上、「スロット番号」と称する。
【００３３】
ここで、チャネルプロセッサ１５がホストシステム２００からリードアクセスを受信したときの処理の流れについて説明する。ファイバチャネル制御プロセッサ１３は、ポート１１を介してホストシステム２００から受信したコマンドを解析し、チャネルプロセッサ１５にコマンド受信を通知する。チャネルプロセッサ１５はコマンドを解析し、リードデータのアドレス（ＬＵＮ＋ＬＢＡ）からスロット番号を算出する。チャネルプロセッサ１５は、リードデータのアドレスに対応するスロット番号がＬＭディレクトリ２０に登録されているか否かをチェックする。スロット番号がＬＭディレクトリ２０に登録されている場合には、チャネルプロセッサ１５は、キャッシュメモリ１３０上にあるキャッシュスロット１３１を確保し、ホストシステム２００に転送する。
【００３４】
スロット番号がＬＭディレクトリ２０に登録されていない場合には、チャネルプロセッサ１５は、共有メモリ１２０にアクセスして、ＳＭディレクトリ１２１を参照し、スロット番号が登録されているか否かをチェックする。スロット番号がＳＭディレクトリ１２１に登録されている場合には、チャネルプロセッサ１５は、キャッシュメモリ１３０のキャッシュスロット１３１にあるデータを確保し、ホストシステム２００に転送する。
【００３５】
スロット番号がＳＭディレクトリ１２１に登録されていない場合には、チャネルプロセッサ１５は、ディスク制御部１４０にキャッシュメモリ１３０へのステージングを要求する。キャッシュメモリ１３０上のキャッシュスロット１３１にデータがステージングされると、チャネルプロセッサ１５は、キャッシュスイッチ１５０を経由してキャッシュメモリ１３０上のキャッシュスロット１３１からデータを取り込み、ホストシステム２００に転送する。また、ステージングされたキャッシュスロット１３１に対応するスロット番号をＳＭディレクトリ１２１に登録するとともに、ＬＭディレクトリ２０にも当該スロット番号を登録する。
【００３６】
尚、チャネルプロセッサ１５は、キャッシュスロット１３１が不要になると、ＬＭディレクトリ２１の管理から開放する。
【００３７】
本実施形態では、ある一つのチャネルプロセッサがホストシステム２００からＩ／Ｏリクエストを受信すると、共有メモリ１２０へのアクセスを伴うキャッシュスロット１３１の管理や、キャッシュメモリ１３０からのデータ転送処理等の処理を複数のチャネルプロセッサで分担処理し、これらの処理に伴うオーバーヘッドを低減する。具体的には、チャネル制御部１１０内の複数のチャネルプロセッサのうちホストシステム２００からＩ／Ｏリクエストを受信した第一のチャネルプロセッサ以外の第二のチャネルプロセッサがキャッシュメモリ１３０からバッファメモリ１７へデータを転送し、バッファ１７に転送されたデータを第一のチャネルプロセッサがホストシステム２００に転送することにより、キャッシュアクセスに伴うオーバーヘッドを低減する。第二のチャネルプロセッサを選択する基準としては、ホストシステム２００が要求するデータのキャッシュスロットを登録している確率の高いチャネルプロセッサを選択するのが好ましい。第二のチャネルプロセッサのＬＭディレクトリのヒットを期待して、第一のチャネルプロセッサから第二のチャネルプロセッサに分散処理要求メッセージを送信することで、キャッシュアクセスやＳＭディレクトリ参照等に伴うオーバーヘッドを低減できる。チャネルプロセッサ間の分散処理には、幾つかの方式がある。以下、各方式について説明する。
【００３８】
（分散処理方式１）
まず、図２を参照しながら、チャネルプロセッサ１５がホストシステム２００からリードアクセスを受信した場合における、チャネルプロセッサ１５，１６の間のＩ／Ｏ分散処理方式１について説明する。ファイバチャネル制御プロセッサ１３は、ポート１１を介してホストシステム２００から受信したコマンドを解析し、チャネルプロセッサ１５にコマンド受信を通知する。チャネルプロセッサ１５はコマンドを解析し、リードデータのアドレス（ＬＵＮ＋ＬＢＡ）からスロット番号を算出する。
【００３９】
チャネルプロセッサ１５は、分散処理要求を通知するための分散処理要求メッセージを作成し、この分散処理要求メッセージをチャネルプロセッサ１６に送信する。分散処理要求メッセージには、送信元の識別情報（例えば、チャネルプロセッサ１５の識別番号）、メッセージを識別するためのメッセージＩＤ、リードデータのアドレス（ＬＵＮ＋ＬＢＡ）、リードデータのデータサイズ等が含まれる。
【００４０】
チャネルプロセッサ１６は、分散処理要求メッセージを受信すると、リードデータのアドレス（ＬＵＮ＋ＬＢＡ）からスロット番号を算出する。チャネルプロセッサ１６は、ＬＭディレクトリ２１を参照し、当該スロット番号がＬＭディレクトリ２１に登録されているか否かをチェックする。当該スロット番号がＬＭディレクトリ２１に登録されている場合には、チャネルプロセッサ１６は、キャッシュスイッチ１５０を経由してキャッシュメモリ１３０にアクセスし、キャッシュスロット１３１上にあるデータをバッファメモリ１７に転送する。バッファメモリ１７は、複数の記憶領域に分割されており、各チャネルプロセッサがデータを書き込むことのできる記憶領域が予めアサインされている。
【００４１】
チャネルプロセッサ１６は、バッファメモリ１７へのデータ転送完了後、チャネルプロセッサ１５にデータ転送完了メッセージを送信する。データ転送完了メッセージには、送信元の識別情報（例えば、チャネルプロセッサ１６の識別番号）、メッセージを識別するためのメッセージＩＤ、データが書き込まれたバッファ１７のアドレス、送信結果（正常又は失敗）等が含まれる。
【００４２】
チャネルプロセッサ１５は、チャネルプロセッサ１５からデータ転送完了メッセージを受信すると、バッファ１７からのデータ読み出し指示をファイバチャネル制御プロセッサ１３に送信する。すると、ファイバチャネル制御プロセッサ１３は、バッファ１７からデータを読み出し、ホストシステム２００に転送する。
【００４３】
一方、スロット番号がＬＭディレクトリ２１に登録されていない場合には、チャネルプロセッサ１６は、共有メモリ１２０にアクセスして、ＳＭディレクトリ１２１を参照し、スロット番号が登録されているか否かをチェックする。スロット番号がＳＭディレクトリ１２１に登録されている場合には、チャネルプロセッサ１６は、キャッシュメモリ１３０のキャッシュスロット１３１にあるデータを確保し、バッファ１７に転送する。
【００４４】
スロット番号がＳＭディレクトリ１２１に登録されていない場合には、チャネルプロセッサ１６は、ディスク制御部１４０にキャッシュメモリ１３０へのステージングを要求する。キャッシュメモリ１３０上のキャッシュスロット１３１にデータがステージングされると、チャネルプロセッサ１６は、キャッシュスイッチ１５０を経由してキャッシュメモリ１３０上のキャッシュスロット１３１からデータを取り込んで、バッファ１７に転送する。また、ステージングされたキャッシュスロット１３１に対応するスロット番号をＳＭディレクトリ１２１に登録するとともに、ＬＭディレクトリ２１にも当該スロット番号を登録する。
【００４５】
尚、チャネルプロセッサ１５は、チャネルプロセッサ１６に分散処理要求メッセージを送信した後は、他の処理（例えば、ホストシステム２００から順次送られてくるＩ／Ｏリクエストに応答する処理）を行うことができる。また、上述の説明は、ホストシステム２００からリードアクセスを受けた場合の処理に関するものであるが、ホストシステム２００からライトアクセスを受けた場合は、キャッシュメモリ１３０へのライトデータの書き込み処理についても、同様にしてチャネルプロセッサ１５，１６間で分散処理できる。
【００４６】
このように、分散処理方式１によれば、ホストシステム２００からＩ／Ｏリクエストを受信したチャネルプロセッサ１５以外のチャネルプロセッサ１６が共有メモリ１２０へのアクセスを伴うキャッシュスロット１３１の管理や、キャッシュメモリ１３０からのデータ転送処理等を行うことで、ホストシステム２００からのＩ／Ｏ処理を複数のチャネルプロセッサ間で分散処理することが可能になり、オーバーヘッドを低減できる。
【００４７】
（分散処理方式２）
次に、図４及び図５を参照しながら、チャネルプロセッサ１５がホストシステム２００からリードアクセスを受信した場合における、チャネルプロセッサ１５，１６，２３，２４の間のＩ／Ｏ分散処理方式２について説明する。図５に示す例では、チャネル制御部１１０内に４つのチャネルプロセッサ１５，１６，２３，２４がバス２２を介して相互に接続されている構成を示す。説明の便宜上、ファイバチャネル制御プロセッサやバッファメモリ等の図示は省略している。また、チャネルプロセッサ１５，１６，２３，２４を、それぞれＣＨＰ＿Ａ，ＣＨＰ＿Ｂ，ＣＨＰ＿Ｃ，ＣＨＰ＿Ｄと別称する場合がある。
【００４８】
まず、チャネルプロセッサ１５は、自身のプロセッサ使用率（一定時間内にＩ／Ｏ処理をしている時間の割合）を一定周期でチェックし、プロセッサ使用率が所定の閾値を超えている場合には、自身が性能のボトルネックになっているものと判断し、Ｉ／Ｏ処理の分散を実施する。
【００４９】
次に、チャネルプロセッサ１５は、チャネルプロセッサ１６，２３，２４のプロセッサ使用率をチェックする。チャネルプロセッサ１６，２３，２４のプロセッサ使用率が所定の閾値未満である場合には、分散処理の対象とする。分散対象となるプロセッサを選択する基準としては、プロセッサ使用率に限らず、例えば、Ｉ／Ｏの有無に応じて分散対象となるプロセッサを選択してもよい。各チャネルプロセッサ１５，１６，２３，２４は、ローカルメモリ１８，１９，２５，２６に自身のプロセッサ使用率又はＩ／Ｏの有無等の情報を書きこんでおき、これらの情報を相互に参照できるように構成するのが好ましい。ここで説明する例は、チャネルプロセッサ１５のみがリードアクセスを受けた場合を想定しているので、他の全てのチャネルプロセッサ１６，２３，２４が分散処理の対象になる。
【００５０】
次に、チャネルプロセッサ１５は、リードデータのアドレス（ＬＵＮ＋ＬＢＡ）から算出したスロット番号から所定の計算方法により計算した値を基に分散処理の対象となるチャネルプロセッサを選択する。この計算方法は、各種の方法が考えられる。例えば、図４のテーブル３０に示すように、リードデータのスロット番号を３で割った余りと、ＣＨＰ＿Ｂ，ＣＨＰ＿Ｃ，ＣＨＰ＿Ｄとを予め対応付けておいて、分散対象となるチャネルプロセッサを選択してもよい。例えば、スロット番号を３で割った余りが０であるならば、ＣＨＰ＿Ｂに分散処理要求メッセージを送信することにより、共有メモリ１２０へのアクセスを伴うキャッシュスロット１３１の管理や、キャッシュメモリ１３０からのデータ転送処理等をＣＨＰ＿Ｂに処理してもらうことができる。同様に、スロット番号を３で割った余りが１であるならば、ＣＨＰ＿Ｃに分散処理要求メッセージを送信し、スロット番号を３で割った余りが２であるならば、ＣＨＰ＿Ｄに分散処理要求メッセージを送信する。分散処理要求メッセージ受信後のチャネルプロセッサの処理は、分散処理方式１と同様である。チャネルプロセッサ１５は、ローカルメモリ１８にテーブル３０を保持する。
【００５１】
分散処理となるチャネルプロセッサを上述のようにして選択すると、同一データのアクセスに対しては、常に同一のチャネルプロセッサが処理することになるので、キャッシュスロット１３１がＬＭディレクトリに登録されている確率が高くなるので、処理の高速化を実現できる。
【００５２】
尚、分散処理の対象となるチャネルプロセッサの数がＮである場合には、データのスロット番号をＮで割った余りと、各チャネルプロセッサとを予め対応付けておいて、分散対象となるチャネルプロセッサを選択すればよい。
【００５３】
本方式のデータ処理方法は、複数のチャネルプロセッサのうち第一のチャネルプロセッサがホストシステムからのＩ／Ｏリクエストを受信するステップと、ホストシステムから要求されているデータのアドレスに所定の計算を行って得られた値に基づいて、Ｉ／Ｏリクエストに応答するための処理の一部を実行する第二のチャネルプロセッサを複数のチャネルプロセッサの中から選択するステップと、第二のプロセッサがキャッシュヒットの有無をチェックし、キャッシュヒットしていれば、第二のプロセッサがキャッシュメモリからバッファメモリにデータを転送するステップと、第一のチャネルプロセッサがバッファメモリに転送されたデータを使用して、Ｉ／Ｏリクエストを処理するステップと、を備える。
【００５４】
（分散処理方式３）
次に、図５を参照しながら、チャネルプロセッサ１５がホストシステム２００からリードアクセスを受信した場合における、チャネルプロセッサ１５，１６，２３，２４の間のＩ／Ｏ分散処理方式３について説明する。
【００５５】
分散処理方式２と同様に、チャネルプロセッサ１５は、自身のプロセッサ使用率をチェックして、分散処理するか否かをチェックする。チャネルプロセッサ１５は、自身のプロセッサ使用率が所定の閾値を超えている場合には、チャネルプロセッサ１６，２３，２４のプロセッサ使用率又はＩ／Ｏの有無をチェックし、分散対象となるチャネルプロセッサを選択する。ここで説明する例は、チャネルプロセッサ１５のみがリードアクセスを受けた場合を想定しているので、他の全てのチャネルプロセッサ１６，２３，２４が分散処理の対象になる。
【００５６】
次に、チャネルプロセッサ１５は、バス２２を経由して、各チャネルプロセッサ１６，２３，２４のＬＭディレクトリ２１，２７，２８を参照し、リードデータのキャッシュスロット１３１が登録されているチャネルプロセッサを検索する。リードデータのキャッシュスロット１３１が登録されているチャネルプロセッサが存在すれば、当該チャネルプロセッサに分散処理要求メッセージを送信する。分散処理要求メッセージ受信後のチャネルプロセッサの処理は、分散処理方式１と同様である。リードデータのキャッシュスロット１３１が登録されているチャネルプロセッサが存在しなければ、チャネルプロセッサ１５は、Ｉ／Ｏ負荷の軽いチャネルプロセッサを選択して、当該チャネルプロセッサに分散処理要求メッセージを送信すればよい。
【００５７】
この方式によれば、Ｉ／Ｏ負荷の軽いチャネルプロセッサ等でＬＭディレクトリにキャッシュスロット１３１が登録されている場合に性能向上を期待できる。
【００５８】
尚、本方式を適用するには、各チャネルプロセッサ１６，２３，２４のＬＭディレクトリ２１，２７，２８のテーブル構造は、チャネルプロセッサ１５のＬＭディレクトリ２０のテーブル構造と同様であることが前提である。
【００５９】
本方式のデータ処理方法は、複数のチャネルプロセッサのうち第一のチャネルプロセッサがホストシステムからのＩ／Ｏリクエストを受信するステップと、各チャネルプロセッサが読み書きしたデータがキャッシュスロットに存在するか否かを示す管理情報に基づいて、Ｉ／Ｏリクエストに応答するための処理の一部を実行する第二のチャネルプロセッサを複数のチャネルプロセッサの中から選択するステップと、第二のプロセッサがキャッシュヒットの有無をチェックし、キャッシュヒットしていれば、第二のプロセッサがキャッシュメモリからバッファメモリにデータを転送するステップと、第一のチャネルプロセッサがバッファメモリに転送されたデータを使用してＩ／Ｏリクエストを処理するステップとを備える。
【００６０】
（分散処理方式４）
次に、図５及び図６を参照しながら、チャネルプロセッサ１５がホストシステム２００からリードアクセスを受信した場合における、チャネルプロセッサ１５，１６，２３，２４の間のＩ／Ｏ分散処理方式４について説明する。チャネルプロセッサ１６，２３，２４のプロセッサ使用率等をチェックすることにより、分散対象となるチャネルプロセッサを事前に選択する点については、分散処理方式２と同様である。
【００６１】
本方式では、チャネルプロセッサ１５，１６，２３，２４のＬＭディレクトリ２０，２１，２７，２８は、全て図６に示すＬＭディレクトリ４０と同一のテーブル構造を有しているものとする。同図において、４１は、チャネルプロセッサ１５のキャッシュスロット１３１の管理情報を管理するＬＭディレクトリである。４２は、チャネルプロセッサ１６のキャッシュスロット１３１の管理情報を管理するＬＭディレクトリである。４３は、チャネルプロセッサ２３のキャッシュスロット１３１の管理情報を管理するＬＭディレクトリである。４４は、チャネルプロセッサ２４のキャッシュスロット１３１の管理情報を管理するＬＭディレクトリである。チャネルプロセッサ１５は、自身のローカルメモリ１８に格納されているＬＭディレクトリ４１を更新する際には、他のチャネルプロセッサ１６，２３，２４のローカルメモリ１９，２５，２６に格納されているＬＭディレクトリ４１も同様に更新する。チャネルプロセッサ１６，２３，２４も同様にして、自身のローカルメモリのＬＭディレクトリを更新する際には、他のチャネルプロセッサのＬＭディレクトリも更新する。各チャネルプロセッサ１５，１６，２３，２４は、自己のローカルメモリ１８，１９，２５，２６を参照することにより、どのチャネルプロセッサがキャッシュスロットを登録しているかを検索できる。チャネルプロセッサ１５は、キャッシュスロットをＬＭディレクトリに登録しているチャネルプロセッサに分散処理要求メッセージを送信する。分散処理要求メッセージ受信後のチャネルプロセッサの処理は、分散処理方式１と同様である。
【００６２】
本方式によれば、キャッシュスロットをＬＭディレクトリに登録しているチャネルプロセッサの検索がより一層高速になる。
【００６３】
（分散処理方式５）
次に、図５を参照しながら、チャネルプロセッサ１５がホストシステム２００からリードアクセスを受信した場合における、チャネルプロセッサ１５，１６，２３，２４の間のＩ／Ｏ分散処理方式５について説明する。チャネルプロセッサ１６，２３，２４のプロセッサ使用率等をチェックすることにより、分散対象となるチャネルプロセッサを事前に選択する点については、分散処理方式２と同様である。
【００６４】
本方式では、ホストシステム２００からＩ／Ｏリクエストを受信したチャネルプロセッサ１５がホストシステム２００のアクセスパターンを学習し、例えば、シーケンシャルアクセスについては、固定のチャネルプロセッサ（例えば、チャネルプロセッサ１６）を選択し、ランダムアクセスについては、適宜の方法（例えば、上述した各分散処理方式など）によりチャネルプロセッサを選択する。そして、この選択されたチャネルプロセッサに分散処理要求メッセージを送信する。
【００６５】
シーケンシャルアクセスに対しては、チャネルプロセッサは、先読み処理を実施して物理ディスク３３０からデータを先読みできるので、分散対象となるチャネルプロセッサは予め固定しておいた方がよい。先読みしたデータは、順次バッファ１７に蓄積される。シーケンシャルアクセスか否かは、連続したアクセスが所定の回数以上あるか否かで判断できる。
【００６６】
本方式によれば、ホストシステム２００のアクセスパターンを学習することで、データの先読み処理を効率よく実施することができ、Ｉ／Ｏ処理の性能向上を実現できる。
【００６７】
本方式のデータ処理方法は、複数のチャネルプロセッサのうち第一のチャネルプロセッサがホストシステムからのＩ／Ｏリクエストを受信するステップと、ホストシステムのアクセスパターンに基づいて、Ｉ／Ｏリクエストに応答するための処理の一部を実行する第二のチャネルプロセッサを複数のチャネルプロセッサの中から選択するステップと、第二のプロセッサがキャッシュヒットの有無をチェックし、キャッシュヒットしていれば、第二のプロセッサがキャッシュメモリからバッファメモリにデータを転送するステップと、第一のチャネルプロセッサがバッファメモリに転送されたデータを使用してＩ／Ｏリクエストを処理するステップと、を備える。
【００６８】
（分散処理方式６）
次に、図５を参照しながら、チャネルプロセッサ１５がホストシステム２００からリードアクセスを受信した場合における、チャネルプロセッサ１５，１６，２３，２４の間のＩ／Ｏ分散処理方式６について説明する。
【００６９】
チャネルプロセッサ１５は、チャネルプロセッサ１６，２３，２４のローカルメモリ１９，２５，２６に書き込まれた負荷情報を参照して、分散処理対象となるチャネルプロセッサを選択する。負荷情報として、例えば、以下の情報を挙げることができる。
【００７０】
（１）ＩＯＰＳ：単位時間あたりのＩＯ処理回数
（２）転送レート：単位時間あたりのデータ転送量
（３）応答時間：チャネルプロセッサがホストシステムからＩ／Ｏリクエストを受信してから応答するまでの時間
（４）ＩＯ処理時間：チャネルプロセッサがＩ／Ｏ処理に要する時間（ディスクアクセス時間等を除く）
（５）分散ＩＯ処理時間：第一のチャネルプロセッサが第二のチャネルプロセッサに分散処理要求メッセージを送信してから第二のチャネルプロセッサが処理を完了するまでの時間
（６）分散ＩＯ処理応答時間：分散処理において、チャネルプロセッサがホストシステムからＩ／Ｏリクエストを受信してから応答するまでの時間
（７）ＬＭディレクトリヒット率：ＬＭディレクトリにキャッシュスロットが登録されている確率
【００７１】
本方式によれば、各チャネルプロセッサの負荷情報を基に分散対象に最適なチャネルプロセッサを選択できるだけでなく、チャネル制御部全体の処理性能が最適になるように、分散処理の頻度を調整することもできる。
【００７２】
本方式のデータ処理方法は、複数のチャネルプロセッサのうち第一のチャネルプロセッサがホストシステムからのＩ／Ｏリクエストを受信するステップと、各チャネルプロセッサのそれぞれの負荷情報に基づいて、Ｉ／Ｏリクエストに応答するための処理の一部を実行する第二のチャネルプロセッサを複数のチャネルプロセッサの中から選択するステップと、第二のプロセッサがキャッシュヒットの有無をチェックし、キャッシュヒットしていれば、第二のプロセッサがキャッシュメモリからバッファメモリにデータを転送するステップと、第一のチャネルプロセッサがバッファメモリに転送されたデータを使用してＩ／Ｏリクエストを処理するステップと、を備える。
【００７３】
上述した各分散処理方式のデータ処理方法は、チャネル制御部内の複数のチャネルプロセッサに実装されているコンピュータプログラムによって実行される。このコンピュータプログラムは、チャネルプロセッサに実装されていてもよく、或いは記録媒体に格納しておいてもよい。記録媒体として、例えば、光記録媒体（ＣＤ−ＲＡＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−Ｒ、ＰＤディスク、ＭＤディスク、ＭＯディスク等の光学的にデータの読み取りが可能な記録媒体）や、磁気記録媒体（フレキシブルディスク、磁気カード、磁気テープ等の磁気的にデータの読み取りが可能な記録媒体）、或いはメモリ素子（ＤＲＡＭ等の半導体メモリ素子、ＦＲＡＭ等の強誘電体メモリ素子等）などが好適である。
【図面の簡単な説明】
【００７４】
【図１】本実施形態に係わるストレージシステムの構成図である。
【図２】本実施形態に係わるチャネル制御部の詳細構成図である。
【図３】本実施形態に係わるＬＭディレクトリのテーブル構造の説明図である。
【図４】本実施形態に係わる分散対象のチャネルプロセッサを定めるテーブルの説明図である。
【図５】本実施形態に係るチャネルプロセッサの分散処理を説明するための図である。
【図６】本実施形態に係るＬＭディレクトリのテーブル構造の説明図である。
【符号の説明】
【００７５】
１５，１６，２３，２４…チャネルプロセッサ  ２０，２１，２７，２８…ＬＭディレクトリ  １７…バッファメモリ  ２２…バス  １２０…共有メモリ  １２１…ＳＭディレクト地  １３０…キャッシュメモリ  １３１…キャッシュスロット  １５０…キャッシュスイッチ
【図１】
2007079958.tif 000003
【図２】
2007079958.tif 000004
【図３】
2007079958.tif 000005
【図４】
2007079958.tif 000006
【図５】
2007079958.tif 000007
【図６】
2007079958.tif 000008