(57)【要約】【課題】一つのストレージ装置内の複数のＣＰＵ間において、外部ネットワークを介さずにセキュアな通信を行う。新たな内部内部ネットワークを配置することなく、高信頼・高速通信を実現する。【解決手段】ストレージ装置にはディスクＩ／Ｏを高速化するため、全ＣＰＵ１０１−１０３と接続されたディスクキャッシュ１３２が標準的に装備されている。このディスクキャッシュを介してＣＰＵ間でデータ転送することにより、高速・高信頼の通信が可能となる。ディスクキャッシュ１３２はＣＰＵから特定の領域を指定してアクセスすることはできない。本発明では、ディスクキャッシュを制御するＩ／Ｏプロセッサ（ＩＯＰ）１１１−１１３が、ディスクキャッシュの一部領域をＣＰＵのアドレス空間にマッピングすることにより、ＣＰＵがディスクキャッシュに直接アクセス可能にし、ＣＰＵ間の通信に使用する。ディスクキャッシュ上の通信用領域に書き込まれたデータはＣＰＵ間のデータ転送に用いるものであり、ディスクには反映しない。【選択図】  図１
2004355307.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも二つ以上のＣＰＵと、該ＣＰＵからアクセス可能な共有メモリを含むコンピュータシステムにおける通信方法において、
前記共有メモリの一部を通信領域として割当てるステップと、
前記複数のＣＰＵのうち通信データを送る送信ＣＰＵが前記通信領域に通信データを書き込むステップと、
前記ＣＰＵとは異なり、前記通信データを受信する受信ＣＰＵが当該通信データを読み込むステップとを有するコンピュータシステムの通信方法。
【請求項２】
複数のＣＰＵと、該ＣＰＵからアクセス可能な共有メモリを含むコンピュータシステムにおける通信方法において、
前記共有メモリの一部を通信バッファとして割当てるステップと、
前記複数のＣＰＵのうちいずれかが当該通信バッファに転送データを格納済みであるかどうかを判定するステップと、
当該通信バッファに転送データが格納されていなければ前記複数のＣＰＵのうちいずれかのＣＰＵが当該通信バッファに転送データを格納するステップと、
当該バッファにデータが格納されていれば前記複数のＣＰＵのうちいずれかのＣＰＵが当該バッファから転送データを読み込むステップと、
前記複数のＣＰＵのうちいずれかのＣＰＵが当該バッファから転送データを読み込んだ後、当該バッファを転送データが格納されていない状態とするステップを有する通信方法。
【請求項３】
Ｉ／Ｏ命令を発行する少なくとも二つ以上のＣＰＵと、
該ＣＰＵから直接的または間接的にアクセス可能なディスク装置と、
該ディスク装置のデータの少なくとも一部のコピーを格納するディスクキャッシュと、
該ディスク装置および該ディスクキャッシュを制御するためのＩ／Ｏプロセッサとを有し、
前記ＣＰＵは前記Ｉ／Ｏプロセッサ対して前記ディスクキャッシュ一部領域の割当要求を行う機能を有し、
前記Ｉ／Ｏプロセッサは前記割当要求を受けると前記ディスクキャッシュの一部の領域を前記ＣＰＵのメモリ空間に通信バッファとして割り当てる機能を有し、
任意のＣＰＵが前記通信バッファにデータを書き込み、前記任意のＣＰＵとは異なるＣＰＵが当該データを読み込む通信手段を有する情報処理装置。
【請求項４】
前記通信手段として、前記ＣＰＵまたはＩ／Ｏプロセッサは、
前記通信バッファにこれから転送されるデータが格納されているかどうかを判定する手段と、
当該通信バッファにこれから転送されるデータが格納されていなければ任意のＣＰＵから転送データを通信バッファに転送して格納する手段と、
当該通信バッファにこれから転送されるデータが格納されていれば任意のＣＰＵが当該通信バッファから転送データを読み込む手段と、
当該バッファをクリアする手段を有する請求項３記載の情報処理装置。
【請求項５】
前記Ｉ／Ｏプロセッサは、前記ＣＰＵからの要求を契機に前記ディスクキャッシュの一部を該ＣＰＵのアドレス空間に割当てる手段を有し、該ＣＰＵは該ＣＰＵのアドレス空間にアクセスすることによってディスクキャッシュにアクセスすることを可能とする請求項４記載の情報処理装置。
【請求項６】
前記Ｉ／Ｏプロセッサは、前記ＣＰＵからの要求を契機に前記ディスクキャッシュの一部を該ＣＰＵに割当てる手段と、
割り当てたディスクキャシュのアドレスとサイズを前記ＣＰＵに通知する手段を有し、
前記ＣＰＵは前記アドレスとサイズを指定して通信データを転送する請求項４記載の情報処理装置。
【請求項７】
前記通信バッファは内部が複数のメッセージキューに分かれており、該メッセージキューを先頭から順にラウンドロビンに使用し、前回使用したキューの位置を記憶しておくことにより、通信時に確認すべきメッセージキューの位置を一意に定めることを特徴とする請求項４記載の情報処理装置。
【請求項８】
前記ＣＰＵから直接ディスクキャッシュにアクセスするのではなく、前記転送データの格納されるメモリのアドレスをＩ／Ｏプロセッサに通知し、Ｉ／Ｏプロセッサが前記メモリにアクセスして前記ディスクキャッシュ上の通信バッファにデータを書き込むことを特徴とする請求項４記載の情報処理装置。
【請求項９】
前記ＣＰＵは、送信しようとする転送データの格納される送信メモリのアドレスをＩ／Ｏプロセッサに通知する手段と、転送データを受信しようとする受信メモリのアドレスをＩ／Ｏプロセッサに通知する手段と、を有し、
前記Ｉ／Ｏプロセッサは、前記アドレスに従い前記送信メモリから転送データをディスクキャッシュ上の通信バッファに転送する手段と、前記アドレスに従い転送データをディスクキャッシュ上の通信バッファから前記受信メモリに転送する手段と、を有する請求項８記載の情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、高速でセキュアな通信を行うために、ディスク装置内部に持つディスクキャッシュを介して、複数ＣＰＵ間でデータの授受を行うことを特徴とした通信方法に関する
【０００２】
【従来の技術】
【特許文献１】特開２００２−２３９５８号
ビジネス向けストレージシステムには高信頼性が求められており、複数プロセッサの間でお互いの監視を行い、あるプロセッサに障害が発生したときには、他のプロセッサが障害プロセッサの作業を肩代わりすることで、通常動作を続けるシステムとなっている。複数プロセッサ間での監視は、一般的に現在時刻等の情報を定期的にやり取りするハートビートと呼ばれる通信を行う。一定時間ハートビート通信の応答がなくなると、対象プロセッサがダウンしたと考え、作業の移行を行う。また、ハートビート通信に限らず、システムの構成情報といった内部プロセッサ間で通信の行われるデータは多い。これらの通信は、一般的には外部ネットワークを用いてデータのやりとりが行われる。外部ネットワークを用いずに内部通信を行うには、内部ネットワークを用いる方法があるが、スペースの関係からあまり高速な内部ネットワークを張るのは難しい。
【０００３】
【発明が解決しようとする課題】
複数プロセッサ間の通信に対して、外部ネットワークを用いる場合、通信データが外に流れるため、セキュリティ上問題になりやすい。外部ネットワークを使用しない場合には、特別に内部に専用ネットワークを結ぶ必要があり、不要なコストがかかる。本発明では、複数のプロセッサから共通してアクセスできるディスクキャッシュを介してデータのやり取りを行うことで、外部ネットワークを用いないセキュアな通信を、改めて専用ネットワークを張ることなく実現することを目的とする。ディスクキャッシュを介して複数プロセッサ間で通信を行う従来技術に特開２００２−２３９５８がある。これは、メインフレームホストが通信データをディスクキャッシュ上に常駐させ、オープン系ホストがそれを読み込むことで通信を行う方式である。この方式では、メインフレームホストとオープン系ホストは異なるシステムであり、オープン系ホストとディスクキャッシュとの間の接続を外部ネットワークを介する点で、セキュリティ上の問題が発生しうる。また、通信の方向もメインフレームホストからオープン系ホストへの一方向であり、双方向通信が不可能である。
【０００４】
【課題を解決するための手段】
上記課題を解決するために本願発明の提案する通信方法は、複数のＣＰＵと、そのＣＰＵからアクセス可能な共有メモリを含むコンピュータシステムにおける通信方法において、共有メモリの一部を通信バッファとして割当てるステップと、複数のＣＰＵのうちいずれかが当該通信バッファに転送データを格納済みであるかどうかを判定するステップと、通信バッファに転送データが格納されていなければ複数のＣＰＵのうちいずれかのＣＰＵが通信バッファに転送データを格納するステップと、バッファにデータが格納されていれば複数のＣＰＵのうちいずれかのＣＰＵがバッファから転送データを読み込むステップと、複数のＣＰＵのうちいずれかのＣＰＵがバッファから転送データを読み込んだ後、バッファを転送データが格納されていない状態とするステップを有する。
【０００５】
例えばディスクキャッシュは共有メモリとして用いるのに好適である。本発明では、共有メモリの一部を通信バッファとして割り当て、通信バッファを例えばデータ転送領域と転送フラグ領域の組として管理する。データ転送領域にはＣＰＵ間で転送されるべきデータが格納される。転送フラグ領域はデータ転送領域に転送されるべきデータがあるかどうか示すフラグを格納する。例えば何もデータが入っていない領域のフラグは「０」とする。ある領域にＣＰＵからデータが転送され、かつ、そのデータがまだ他のＣＰＵによって読み出されていない場合、その領域のフラグは「１」とする。その領域のデータが他のＣＰＵによって読み出された場合、その領域のフラグは「０」とする。すなわち、この例では、転送すべきデータが格納されている領域は「１」、転送すべきデータが格納されておらず、ＣＰＵが通信バッファとして使用できる領域を「０」としている。
【０００６】
ＣＰＵ間でデータを転送しようとする場合には、まず、転送するデータを格納できる通信バッファの領域を検出する。上の例ではフラグが「０」の領域を探す。そして、フラグが「０」の領域に転送しようとするデータを格納し、フラグを「１」とする。このフラグをチェックすることにより、当該領域に他のデータが上書きされることを防止する。各領域のフラグは定期的にあるいは所定命令を契機としてチェックされ、フラグが「１」の領域のデータは転送先ＣＰＵへ読み出される。読み出しの後、フラグは「０」とされて通信バッファ領域はクリアされる。
【０００７】
これらの動作はＣＰＵあるいはＩ／Ｏプロセッサ上で動作するソフトウェアにより実現可能である。さらに、専用のハードウェアで構成することも可能である。
【０００８】
本発明の他の例である情報処理装置は、Ｉ／Ｏ命令を発行する少なくとも二つ以上のＣＰＵと、ＣＰＵから直接的または間接的にアクセス可能なディスク装置と、ディスク装置のデータの少なくとも一部のコピーを格納するディスクキャッシュと、ディスク装置およびディスクキャッシュを制御するためのＩ／Ｏプロセッサとを有し、ＣＰＵは前記Ｉ／Ｏプロセッサ対してディスクキャッシュの一部領域の割当要求を行う機能を有し、Ｉ／Ｏプロセッサは割当要求を受けるとディスクキャッシュの一部の領域を通信バッファとして割り当てる機能を有し、任意のＣＰＵが通信バッファにデータを書き込み、書き込んだＣＰＵとは異なるＣＰＵがデータを読み込む通信手段を有する。
【０００９】
通信手段として、ＣＰＵまたはＩ／Ｏプロセッサは、通信バッファにこれから転送されるデータが格納されているかどうかを判定する手段と、通信バッファにこれから転送されるデータが格納されていなければ任意のＣＰＵから転送データを通信バッファに転送して格納する手段と、通信バッファにこれから転送されるデータが格納されていれば任意のＣＰＵが通信バッファから転送データを読み込む手段と、バッファをクリアする手段を有する。ディスクキャッシュは、プロセッサがディスクＩ／Ｏを行った際に最新データを高速なメモリ上に配置し、アクセス性能を向上するためのものである。そのため、プロセッサからディスクキャッシュにアクセスするには、ディスクＩ／Ｏを行う必要があり、またその際に書き込まれるキャッシュのアドレスを指定することはできない。本発明の一例では、特別なコマンドをディスク制御用プロセッサに対して発行することで、ディスクにアクセスすることなしにディスクキャッシュの特定領域にアクセスすることを可能とし、その特定領域に送信側プロセッサが書き込んだデータを受信側プロセッサが読み込むことで、複数プロセッサ間での通信を行う。それにより高速でセキュアな通信を可能とする。
【００１０】
【発明の実施の形態】
［実施例１］
本発明の第一の実施例を説明する。
図１は本発明を説明する概念図である。１０１〜１０３はＣＰＵ、１１１〜１１３はディスクおよびディスクキャッシュを制御するＩ／Ｏ用プロセッサ（ＩＯＰ）、１２１〜１２３はＩ／Ｏ用ＢＵＳ、１３１はディスクキャッシュ、１４１〜１４２はディスクである。全てのＣＰＵ１０１〜１０３は共通のディスクキャッシュ１３１とＢＵＳ１２１〜１２３を介して接続されている。これら全体で一つのストレージ装置を構成している。ＣＰＵ１０１〜１０３がＩ／Ｏを行うと、ＩＯＰ１１１〜１１３はディスクキャッシュ１３１に対するキャッシュ制御を行い、ディスク１４１〜１４２にアクセスする。このとき、ＣＰＵ１０１〜１０３はディスクキャッシュ１３１を制御することはできず、その特定領域を指定してアクセスすることはできない。そこでまず、ＣＰＵ１０１〜１０３はＩＯＰ１１１〜１１３に対してディスクキャッシュ１３１の一部領域の割当要求を行う（１５１）。ＩＯＰ１１１〜１１３は割当要求を受けるとディスクキャッシュ１３１の一部の領域１３２をＣＰＵ１０１〜１０３のメモリ空間に割り当てることにより、ＣＰＵ１０１〜１０３が直接ディスクキャッシュ１３１にアクセスすることを可能とする（１５２）。ＣＰＵ１０１〜１０３が直接ディスクキャッシュ１３１にアクセスすることが可能になると、各ＣＰＵ間、例えばＣＰＵ１０１とＣＰＵ１０２との間の通信は、ＣＰＵ１０１がディスクキャッシュ１３１の特定領域に書き込んだデータをＣＰＵ１０２が読み込むことで実現可能となる（１５３）。このとき、ディスクキャッシュ１３１に書き込んだデータはディスク１４１〜１４２に反映する必要はない。
【００１１】
図２はＣＰＵのアドレス空間の概要を示す。ＣＰＵ１０１〜１０３のアドレス空間２０１はＣＰＵのメモリ領域２０２を指している。それに対して、ＣＰＵ１０１〜１０３がＩＯＰ１１１〜１１３に割当要求を行うと、ディスクキャッシュ１３１の一部領域１３２をＣＰＵのアドレス空間２０１の一部領域２０３に割り当てる。これにより、ＣＰＵ１０１〜１０３はアドレス空間２０１のうちの特定領域２０３にアクセスすることで、直接ディスクキャッシュ内の領域１３２にデータの読み書きが可能となる。ＩＯＰ１１１〜１１３を介さずに、ＣＰＵ１０１〜１０３がディスクキャッシュ１３１に直接アクセスするため、ディスクキャッシュ１３１へのアクセスはディスクＩ／Ｏコマンドで行うのではなく、メモリへのアクセスコマンドで行う。そのためディスクキャッシュ１３１にデータを書き込んでもディスク１４１〜１４２にデータは反映されない。また、ＣＰＵ１０１〜１０３が直接アクセスできるディスクキャッシュ内の領域１３２は、ディスクＩ／Ｏ時にキャッシュ領域として使用できない。上記の例は、ディスクキャッシュの一部をＣＰＵのアドレス空間にマッピングすることで、ＣＰＵから直接ディスクキャッシュにデータの読み書きを行う方式である。
【００１２】
図３は他の方式の例である。図３のように通信に使用するディスクキャッシュのアドレスを指定して、ＤＭＡを用いてデータの転送を行う方式も可能である。ＣＰＵ１０１はＩＯＰ１１１に対して、ディスクキャッシュの一部の領域を通信領域として割り当てることを特別のＩ／Ｏコマンドで依頼する（３０１）。通常の装置ではＩ／ＯプロセッサへのＩ／Ｏコマンドはディスクアクセスのためのものであるが、本発明では、ディスクアクセスではなくＣＰＵ間データ転送用のＩ／Ｏコマンドを用いる。それを受けて、ＩＯＰ１１１はディスクキャッシュの一部領域１３２を通信領域として割り当て、ＣＰＵ１０１に対してそのアドレスとサイズを通知する（３０２）。以降、通信領域として割り当てられた領域は、ＣＰＵ１０１が自由に使用でき、アドレスとサイズを指定して通信データをＤＭＡ転送することができる（３０３）。通信領域として割り当てる領域は、ディスクＩ／Ｏに対するキャッシュ領域として使用しない特別な領域であるか、あるいは通常の領域であれば以降、キャッシュ領域として使用しないようＩＯＰ１１１で制御することが必要である。図４はＣＰＵ間通信の概要を示す。ＣＰＵから直接アクセスするディスクキャッシュ領域１３２に通信バッファ４１１〜４１６を用意する。本実施例では、全ＣＰＵ間で双方向の通信を行うため、それぞれの通信用に別の通信バッファを設けた。例えば、ＣＰＵ１０１からＣＰＵ１０２にデータ転送を行う場合、通信バッファ４１１を用いる。ＣＰＵ１０１は転送データ４０１を通信バッファ３１１に書込み、ＣＰＵ１０２は通信バッファ４１１のデータを受信領域４０２に読み込む。
【００１３】
図５は通信バッファの概念を示す。通信バッファは図５のように内部が複数のメッセージキューに分かれており、先頭から順にラウンドロビンに使用する。各メッセージキューには転送フラグ領域５０１と転送データを書き込む領域５０２が存在し、送信ＣＰＵ１０１は転送フラグ領域５０１にフラグがたっていないのを確認して転送データ領域５０２にデータを転送し、転送完了後転送フラグ領域５０１にフラグをたてる。受信ＣＰＵ１０２は転送フラグ領域５０１にフラグがたっているメッセージキューを検索し、転送データ領域５０２から受信バッファ４０２にデータを読み込む。読み込み完了後転送フラグ領域５０１のフラグを落とす。メッセージキューは先頭から順に使用するため、送受信ＣＰＵとも前回使用したキューの位置を記憶しておくことにより、通信時に確認すべき転送フラグ領域５０１の位置は一意に定まる。
【００１４】
図６は本実施例の送信処理のフローチャートである。送信ＣＰＵが転送フラグ領域を読み込み（６０１）、メッセージキューの使用状況を確認する（６０２）。メッセージキューが全て使用中であれば、タイムアウトするまでキューが開放されるのをチェックし（６０６）、タイムアウト時間内にキューが開放されなければネットワークＢＵＳＹでエラー終了となる（６０７）。一方、６０２において、空きバッファが見つかれば転送データをバッファに書き込む（６０３）。転送データ書込み後、転送フラグ領域にフラグをセットし（６０４）、送信を完了する（６０５）。
【００１５】
図７に受信処理のフローチャートを示す。受信ＣＰＵは転送フラグ領域を読み込み（７０１）、転送データが書き込まれたか確認する（７０２）。転送フラグがたっていなければそのまま終了し（７０５）、たっていれば当該バッファより転送データを読み込む（７０３）。読み込み完了後転送フラグをクリアし（７０４）、受信処理を終了する（７０６）。受信ＣＰＵが転送フラグ領域の読み込みを行う契機は、定期的に読み込みを繰り返す方式と、ディスクキャッシュ上の通信領域にデータが書き込まれるとＣＰＵにハードまたはソフト割り込みをあげる方式がある。
［実施例２］
次に本発明の第二の実施例について説明する。第二の実施例は、ＣＰＵが直接ディスクキャッシュにアクセスせず、ディスクキャッシュの制御をＩＯＰに依頼する点が特徴的である。すなわちＣＰＵは転送データのアドレスをＩＯＰに通知し、ＩＯＰがディスクキャッシュを介して受信ＣＰＵにデータを転送する方式である。
ディスクキャッシュ上の通信バッファの仕様は図４、５と同一である。ＣＰＵからは直接ディスクキャッシュをアクセスできないため、メッセージキューへの書き込みはＩＯＰを経由して行う。
【００１６】
図８に本実施例の概要を示す。ＣＰＵ１０１は転送データの格納されるメモリ８０１のアドレスをＩＯＰ１１１に通知する（８２１）。転送データはＣＰＵ１０１に内蔵されるあるいは外付けされるメモリ８０１内に格納されている。ＣＰＵ１０１からの通知を受けたＩＯＰ１１１はメモリ８０１から転送データをディスクキャッシュ上の通信バッファ８１１に転送する（８２２）。受信ＣＰＵ１０２はＩＯＰ１１２に転送データを受信するメモリ８０２のアドレスを通知する（８２３）。ＣＰＵ１０２からの通知を受けたＩＯＰ１１２は通信バッファ８１１からメモリ８０２にデータ転送する（８２４）。送受信ＩＯＰ間のメッセージキューの管理方法は第一の実施例におけるＣＰＵ間のメッセージキューの管理方法と同一である。すなわち、送信ＩＯＰ１１１は通信バッファ８１１内の転送フラグを確認し、空きバッファを検索する。検索した空きバッファにデータの書き込みを行い、転送フラグにフラグを立てる。受信ＩＯＰ１１２は転送フラグを確認し、データ到着を検出すると通信バッファからデータを読み込み受信バッファ８０２に格納する。最後に転送フラグを落とす。ＣＰＵのローカルメモリ８０１−８０３にディスクキャッシュ上のメッセージキューと同様に、送受信先ごとにメッセージキューを用意し、先頭から順にキューを使用することとすれば、ＣＰＵからＩＯＰに対して発行する通信要求には送受信データのアドレスを指定する必要はない。
例えば、ＣＰＵ１０１のローカルメモリ８０１には、送信キューとしてＣＰＵ１からＣＰＵ２への送信キュー（ディスクキャッシュ１３２の８１１に対応する）、ＣＰＵ１からＣＰＵ３への送信キュー（ディスクキャッシュ１３２の８１６に対応する）、ＣＰＵ１からＣＰＵ４への送信キュー・・・を設け、また、受信キューとしてＣＰＵ２からＣＰＵ１への受信キュー（ディスクキャッシュ１３２の８１２に対応する）、ＣＰＵ３からＣＰＵ１への受信キュー（ディスクキャッシュ１３２の８１５に対応する）、ＣＰＵ４からＣＰＵ１への受信キュー・・・を設ける。他のローカルメモリ８０２、８０３，．．．も同様である。
この場合、送信ＣＰＵが送信要求をＩＯＰに通知すると、ＩＯＰはＣＰＵローカルメモリ８０１のキューからディスクキャッシュ１３２の対応するキューにデータ転送する。このとき、ローカルメモリ８０１とディスクキャッシュ１３２の各キューはラウンドロビンで順番に使用される。
【００１７】
また、受信ＩＯＰはディスクキャッシュ１３２上のメッセージキューが更新されたのを契機として受信バッファに転送データを格納する。このとき、ディスクキャッシュ１３２のキューからＣＰＵローカルメモリ８０２の対応するキューにデータ転送する。このときも、各キューはラウンドロビンで順番に使用される。その後、受信ＣＰＵにデータ格納完了を通知する。
以上の構成によれば、キューは順番に使用されるので、ＣＰＵからＩＯＰに対して発行する通信要求には送受信データのアドレスを指定する必要はない。
ＣＰＵからＩＯＰへの通信要求は特別なＩ／Ｏコマンドを用いて行われる。通常Ｉ／Ｏコマンドは、コマンド種別（ＲＥＡＤ／ＷＲＩＴＥ）、ＣＰＵのローカルメモリアドレス、ディスクのアドレス等の情報を含んでいる。これらの情報を元にＩＯＰはＣＰＵローカルメモリアドレスにあるデータをディスクアドレスに書き込み、あるいは逆に読み込みを行う。本実施例では、コマンドのＩ／Ｆは通常Ｉ／Ｏコマンドと同一のまま、コマンド種別に通常のＲＥＡＤ／ＷＲＩＴＥではなく、送信／受信を示す特別なコマンド種別を指定することで、ＩＯＰは通信要求であると判定することが可能である。本発明では通信用のディスクキャッシュに書き込まれるデータは、通信相手ＣＰＵに対して転送するためのもので、ディスクに反映する必要はない。したがって、ＩＯＰは送信要求を示す特別なコマンドが渡されると、ディスクにＩ／Ｏせずにディスクキャッシュにのみデータを反映させるという特別な処理を行う。受信ＣＰＵから受信要求コマンドが渡されると、同様にディスクからＩ／Ｏせずにキャッシュから直接データを読み込む。本実施例において、ＣＰＵからＩＯＰに発行する通信要求は特別なＩ／Ｏコマンドとするのではなく、特別なアドレスへのＩ／Ｏコマンドを発行することで通信要求とすること、あるいは通信デバイスとして通常のネットワークデバイスではなく、特別に用意した仮想デバイスを指定して通信を発行することで通信要求とすることもできる。
【００１８】
上記二つの実施例では、送受信処理をそれぞれ独立に扱い、受信処理の発生契機を受信関数のコールまたはデータ到着の認識としている。それに対して、第三の実施例として送信ＣＰＵが送信開始後、受信ＣＰＵに対して通信開始を通知する方式もある。ディスクキャッシュの特定領域にデータを書き込むと受信ＣＰＵに割込みが発生するする仕組みを用意し、送信ＣＰＵが転送データをディスクキャッシュに書き込み後、割り込み発生領域に書き込むことで受信ＣＰＵに通知する。あるいは、ディスクキャッシュより小容量で高速なネットワークあるいは共有メモリを用意し、送信開始通知を高速パスで送ることで受信ＣＰＵに通知する。割込みまたは別パスで送信開始通知を受けた受信ＣＰＵは、それを契機に受信処理を開始する。
【００１９】
【発明の効果】
本発明では、ディスクキャッシュの一部の領域をＣＰＵから直接アクセスすることを可能とし、ディスクキャッシュ上に通信用のバッファを配置する。送信ＣＰＵがディスクキャッシュ上の通信バッファに書き込んだデータを受信ＣＰＵが読み込むことで通信を実現できる。ディスクキャッシュは、ディスクＩ／Ｏ高速化のため標準的に用意されており、全ＣＰＵから共通してアクセスすることが可能である。このため新たな装置を用意することなく、全ＣＰＵ間での双方向通信が可能となる。また、内部バスを介してデータ転送を行うため、外部からデータが見えず、セキュアな通信が可能となる。通信コマンドは一般的なＩ／Ｏコマンドと同一フォーマットであり、新たなＩ／Ｆを必要としない。
【図面の簡単な説明】
【図１】本発明の実施例を示した概略ブロック図である。
【図２】ディスクキャッシュのＣＰＵアドレス空間へのマッピングを示す概念図である。
【図３】ディスクキャッシュへのアクセスをＤＭＡで行う方式を示すブロック図である。
【図４】実施例のデータ転送方法を示すブロック図である。
【図５】ディスクキャッシュ上のメッセージキューの構成図である。
【図６】実施例の送信処理の流れ図である。
【図７】実施例の受信処理の流れ図である。
【図８】別の実施例におけるデータ転送方法を示すブロック図である。
【符号の説明】
１０１〜１０３…ＣＰＵ
１１１〜１１３…ＩＯＰ
１２１〜１２３…データバス
１３１…ディスクキャッシュ
１３２…ディスクキャッシュのうち通信に使用する領域
１４１〜１４２…ディスク
１５１〜１５３…通信処理の流れ。
【図１】
2004355307.tif 000003
【図２】
2004355307.tif 000004
【図３】
2004355307.tif 000005
【図４】
2004355307.tif 000006
【図５】
2004355307.tif 000007
【図６】
2004355307.tif 000008
【図７】
2004355307.tif 000009
【図８】
2004355307.tif 000010