(57)【要約】【課題】  複数プロセッサと外部メモリを接続する場合のＬＳＩピンネックおよびパッケージのコネクタネックの解消を図る。【解決手段】  記憶制御装置195は複数のセレクタグループ190と、共有メモリ間パス165で接続された共有メモリ160a,160bと、キャッシュメモリ170a,170bからなり、各190は、４つのＭＰ部110、２つのＳＭセレクタ140、２つのＣＭセレクタ150を有し、各ＭＰ部110はプロセッサ、ＬＭ(ローカルメモリ)114、ＳＭアクセス回路113、ＣＭアクセス回路112、バッファ115を有する。そして、複数のＭＰ部から各ＳＭセレクタへのパス数より各ＳＭセレクタから共有メモリ160a,160bへのパス数の方を少なく、複数のＭＰ部から各ＣＭセレクタへのパス数より各ＣＭセレクタからキャッシュメモリ170a,170bへのパス数の方を少なくする。【選択図】  図１
2004185640.tif 000002
【特許請求の範囲】
【請求項１】
一つ以上の中央処理装置と一つ以上の記憶装置間でデータの入出力を制御する記憶制御装置であって、
一つ以上のプロセッサと、前記記憶装置のデータを一時的に格納するキャッシュメモリと、前記キャッシュメモリおよび前記記憶装置に関する制御情報を格納している共有メモリと、セレクタを備え、前記プロセッサは前記共有メモリおよび前記キャッシュメモリに前記セレクタを介してアクセス可能であり、
前記プロセッサと前記セレクタ間と、前記セレクタと前記共有メモリ間と、前記セレクタと前記キャッシュメモリ間はアクセスパスにより接続されており、
前記セレクタと前記共有メモリを接続する前記アクセスパス数の合計、または前記セレクタと前記キャッシュメモリを接続する前記アクセスパス数の合計は、前記プロセッサと前記セレクタとを接続する前記アクセスパス数の合計よりも少ないことを特徴とする記憶制御装置。
【請求項２】
請求項１記載の記憶制御装置において、
前記プロセッサは、２つ以上の前記セレクタに接続され、前記プロセッサから前記キャッシュメモリへのアクセスルートおよび前記プロセッサから前記共有メモリへのアクセスルートをそれぞれ複数有し、通常は全ての前記アクセスルートを使用して負荷を均衡させ、障害等により一部の前記アクセスルートが使用不能になった場合は、残りの前記アクセスルートを使用することにより処理を継続させることを特徴とする記憶制御装置。
【請求項３】
請求項１または請求項２記載の記憶制御装置において、
前記プロセッサは、アクセス対象となるキャッシュアドレス、および共有メモリアドレスに応じて、使用すべき前記アクセスルートを決定する手段を有することを特徴とする記憶制御装置。
【請求項４】
請求項１記載の記憶制御装置において、
前記共有メモリはペアをなす２つの共有メモリからなり、該各共有メモリは内部にアクセス回路を有し、該ペアの共有メモリには共有メモリ間パスが設けられ、一方の共有メモリはマスタ、他方の共有メモリはスレーブに定められ、
前記セレクタは、前記プロセッサから前記共有メモリへのライト処理時に、前記プロセッサからアドレスとライトコマンドとライトデータを受領し、ペアを形成する前記共有メモリの両方に対してアドレスとライトコマンドとライトデータを送信する手段を有し、
前記マスタ側の共有メモリのアクセス回路は、ライトデータを指定のアドレスへ書き込む手段と、前記スレーブ側の共有メモリに前記共有メモリ間パスを介して前記アドレスを送信する手段を有し、
前記スレーブ側の共有メモリのアクセス回路は、前記共有メモリ間パスから受領したアドレスと前記セレクタから受領したアドレスとを比較する手段と、該手段の一致出力に応じて前記ライトデータを指定のアドレスに書き込む手段を有し、ライトデータのアクセス順を保証し、
前記セレクタは、前記プロセッサから前記共有メモリへのリード処理時に、前記プロセッサからアドレスとリードコマンドを受領し、ペアを形成する前記共有メモリの両方に対してアドレスとリードコマンドを送信する手段を有し、
前記マスタ側の共有メモリのアクセス回路は、リードデータを指定のアドレスから読み出し前記セレクタへ転送する手段と、前記スレーブ側の共有メモリに前記共有メモリ間パスを介して前記アドレスを送信する手段を有し、
前記スレーブ側の共有メモリのアクセス回路は、前記共有メモリ間パスから受領したアドレスと前記セレクタから受領したアドレスとを比較する手段と、該手段の一致出力に応じてリードデータを指定のアドレスから読み出し前記セレクタへ転送する手段を有し、
前記セレクタは、前記マスタおよびスレーブの共有メモリから受領したリードデータを比較する手段と、該手段の一致出力に応じて前記リードデータを前記プロセッサへ送信する手段を有することを特徴とする記憶制御装置。
【請求項５】
請求項１記載の記憶制御装置において、
前記共有メモリはペアをなす２つの共有メモリからなり、該各共有メモリは内部にアクセス回路を有し、該ペアの共有メモリには共有メモリ間パスが設けられ、一方の共有メモリはマスタ、他方の共有メモリはスレーブに定められ、
前記セレクタは、前記プロセッサから前記共有メモリへのライト処理時に、前記プロセッサからアドレスとライトコマンドとライトデータを受領し、ペアを形成する前記共有メモリのうちのマスタとなる共有メモリに対してアドレスとライトコマンドとライトデータを送信する手段を有し、
前記マスタ側の共有メモリのアクセス回路は、ライトデータを指定のアドレスへ書き込む手段と、前記スレーブ側の共有メモリに前記共有メモリ間パスを介して前記アドレスとライトコマンドとライトデータを送信する手段を有し、
前記スレーブ側の共有メモリのアクセス回路は、前記共有メモリ間パスから受領したアドレスに前記ライトデータを書き込む手段と、前記マスタ側の共有メモリに対して書き込みの完了報告を送信する手段を有し、
前記マスタ側の共有メモリのアクセス回路は、前記スレーブ側の共有メモリから完了報告を受領したときライト完了とする手段を有し、ライトデータのアクセス順を保証し、
前記セレクタは、前記プロセッサから前記共有メモリへのリード処理時に、前記プロセッサからアドレスとリードコマンドを受領し、ペアを形成する前記共有メモリのうちマスタ側の共有メモリに対してアドレスとリードコマンドを送信する手段を有し、
前記マスタ側の共有メモリのアクセス回路は、リードデータを指定のアドレスから読み出す手段と、前記スレーブ側の共有メモリに前記共有メモリ間パスを介して前記アドレスとリードコマンドを送信する手段を有し、
前記スレーブ側の共有メモリのアクセス回路は、前記共有メモリ間パスから受領したアドレスからデータを読み出す手段と、前記マスタ側の共有メモリに該読み出したデータを転送する手段を有し、
前記マスタ側の共有メモリのアクセス回路は、前記マスタ側の共有メモリから読み出したリードデータと前記スレーブ側の共有メモリから受領したリードデータを比較する手段と、該手段の一致出力に応じて前記セレクタへ前記リードデータの転送と終了報告の送信を行う手段を有することを特徴とする記憶制御装置。
【請求項６】
請求項１記載の記憶制御装置において、
前記プロセッサは、前記中央処理装置から受領したライトデータを前記キャッシュメモリに二重化して格納するためのキャッシュアドレスａとキャッシュアドレスｂを決定する手段と、該キャッシュアドレスａ及びキャッシュアドレスｂと、ライトコマンドと、ライトデータを前記セレクタに送信する手段を有し、
前記セレクタは、前記キャッシュアドレスａ及びキャッシュアドレスｂと、ライトコマンドと、ライトデータを受領し、前記キャッシュアドレスａに対応するキャッシュメモリＡに対して前記キャッシュアドレスａとライトコマンドとライトデータを送信し、前記キャッシュアドレスｂに対応するキャッシュメモリＢに対して前記キャッシュアドレスｂとライトコマンドとライトデータを送信する手段を有し、
前記各キャッシュメモリは、指定されたキャッシュアドレスにライトデータを格納することを特徴とする記憶制御装置。
【請求項７】
請求項１記載の記憶制御装置において、
前記プロセッサは、キャッシュアドレスａのデータをキャッシュアドレスｂにコピーするキャッシュ間コピーを実行するため、コピー元のキャッシュアドレスａから前記セレクタを経由してデータを読み出す手段と、該読み出したデータをコピー先のキャッシュアドレスｂに前記セレクタを経由して書き込む手段を有することを特徴とする記憶制御装置。
【請求項８】
請求項１記載の記憶制御装置において、
前記プロセッサは、キャッシュアドレスａのデータをキャッシュアドレスｂにコピーするキャッシュ間コピーを実行するため、キャッシュアドレスａからキャッシュアドレスｂへのコピーを指示するコマンドを前記セレクタに対して指示する手段を有し、
前記セレクタは、前記プロセッサからの指示に応じてキャッシュアドレスａからデータを読み出し該読み出したデータをキャッシュアドレスｂへ転送する手段を有することを特徴とする記憶制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリを共有するマルチプロセッサシステムに関し、特にマルチプロセッサ型の記憶制御装置に関する。
【背景技術】
【０００２】
近年の記憶装置システムでは、より高い性能を得るため、マルチプロセッサ構成をとるシステムが主流になっている。
【０００３】
例えば「HITAC H-6581-C3形ディスク制御装置」に示されている従来技術では、中央処理装置と制御装置間のデータ転送を実行する複数のホスト側プロセッサと、記憶装置と制御装置間のデータ転送を実行する複数の記憶装置側プロセッサと、記憶装置のデータを一時的に格納するキャッシュメモリと、複数プロセッサ間の制御情報を格納する共有メモリを備え、キャッシュメモリおよび共有メモリは全プロセッサからアクセス可能な構成となっている。この従来システムでは、プロセッサと共有メモリ、およびプロセッサとキャッシュメモリ間は１：１に接続されている。
【０００４】
一方、「ＨＩＴＡＣ Ｈ６５９１形ディスク制御装置」に示されている従来技術では、制御装置は複数のホスト側プロセッサと、複数の記憶装置側プロセッサと、キャッシュメモリと、共有メモリを備え、各プロセッサと共有メモリ間は制御バスで接続され、各プロセッサとキャッシュメモリ間はデータバスにより接続されている。
【０００５】
さらに本従来技術では、信頼性確保のため共有メモリは二重化されていて、一方が閉塞してもシステムは正常動作するようになっている。共有メモリの二重化状態を保持するために、この従来システムでは、共有メモリに対するライトアクセスが発生すると、両方の共有メモリ回路がアクセスを受領して、同時に指定アドレスを更新する方式をとっている。
【０００６】
一方、「HITAC H-6581-C3形ディスク制御装置」に開示されている従来技術では、このような制御は行っておらず、更新が発生した場合には、両方の共有メモリのアドレスを、プロセッサで稼動するプログラムによって逐次的に更新していた。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
記憶装置システムに対する高性能化要求に対して、制御装置の大規模化や構成要素の高速化、例えばプロセッサ数やキャッシュ容量の増大、高性能プロセッサの適用、内部バス幅の拡大やバス転送能力の向上などで対応してきた。
【０００８】
しかしながら、「ＨＩＴＡＣ Ｈ６５９１形ディスク制御装置」に開示されている従来技術では、内部バスの転送能力がシステムの大規模化および性能向上に追従するのが困難になりつつある。
【０００９】
特に制御バスなどは一度の転送量が少ないために、プロトコルオーバヘッドに占有時間の大半が使用されてしまい、バスの持つ転送能力が活かせない。
【００１０】
そこで高いメモリアクセス性能を得るために、「HITAC H-6581-C3形ディスク制御装置」で示した従来システムのように、プロセッサとメモリ間を１：１に接続する方法が考えられる。
【００１１】
しかしながら、搭載するプロセッサ数の増大に伴い、共有メモリおよびキャッシュメモリに接続するアクセスパス数もそれに比例して増えていく。
【００１２】
現在のLSIのピン数は最大６００ピン程度である。
【００１３】
一方で、アクセスパス幅を制御線もあわせて２０ビット程度、プロセッサ数を６４プロセッサと仮定すると、共有メモリおよびキャッシュメモリへは合計１２８０ビットが入線するため、ＬＳＩのピン数が不足する。
【００１４】
また、パッケージの大きさに対する制限から、パッケージ上のコネクタ数も上限があり、１２８０ビットの入線は不可能である。
【００１５】
以上から、本発明が解決しようとする第一の課題は、ＬＳＩのピンネックおよびコネクタネックを回避して、かつ必要十分な性能を確保する記憶制御装置の内部構成とすることにある。
【００１６】
一方、二重化された共有メモリでは、各プロセッサのアクセス順序を保証する必要がある。
【００１７】
この問題を例をあげて説明する。
【００１８】
例えばプロセッサａとプロセッサｂが同時に共有メモリの内容をほとんど同時に更新したものと仮定する。
【００１９】
もし、共有メモリＡの内容が、まずプロセッサａにより更新され、共有メモリＢの内容が、まずプロセッサｂにより更新され、その後、共有メモリＡの内容がプロセッサｂにより更新され、共有メモリＢの内容がプロセッサａにより更新されたものとすると、最終的なメモリ内容は、共有メモリＡはプロセッサｂの更新内容であり、共有メモリＢはプロセッサａの更新内容となり、両面の状態が不一致となる。
【００２０】
「HITAC H-6581-C3形ディスク制御装置」では、上記アクセス順序を保証するための手段として、プログラム的に各プロセッサの排他を取った後、両方の共有メモリの同一アドレスを順次更新する方式が提示されている。
【００２１】
しかし、この方式では、一旦ロックをかけてからメモリを更新するために、性能的に問題がある。
【００２２】
以上から、本発明が解決しようとする第二の課題は、共有メモリ間の二重状態を保持することにある。
【課題を解決するための手段】
【００２３】
上記課題を解決するため、本発明は、
一つ以上の中央処理装置と一つ以上の記憶装置間でデータの入出力を制御する記憶制御装置であり、
一つ以上のプロセッサと、前記記憶装置のデータを一時的に格納するキャッシュメモリと、前記キャッシュメモリおよび前記記憶装置に関する制御情報を格納している共有メモリと、セレクタを備え、前記プロセッサは前記共有メモリおよび前記キャッシュメモリに前記セレクタを介してアクセス可能であり、
前記プロセッサと前記セレクタ間と、前記セレクタと前記共有メモリ間と、前記セレクタと前記キャッシュメモリ間はアクセスパスにより接続されており、
前記セレクタと前記共有メモリを接続する前記アクセスパス数の合計、または前記セレクタと前記キャッシュメモリを接続する前記アクセスパス数の合計は、前記プロセッサと前記セレクタとを接続する前記アクセスパス数の合計よりも少ないようにしている。
【００２４】
また、前記プロセッサは、２つ以上の前記セレクタに接続され、前記プロセッサから前記キャッシュメモリへのアクセスルートおよび前記プロセッサから前記共有メモリへのアクセスルートをそれぞれ複数有し、通常は全ての前記アクセスルートを使用して負荷を均衡させ、障害等により一部の前記アクセスルートが使用不能になった場合は、残りの前記アクセスルートを使用することにより処理を継続させるようにしている。
【００２５】
また、前記プロセッサは、アクセス対象となるキャッシュアドレス、および共有メモリアドレスに応じて、使用すべき前記アクセスルートを決定する手段を有するようにしている。
【００２６】
また、前記共有メモリはペアをなす２つの共有メモリからなり、該各共有メモリは内部にアクセス回路を有し、該ペアの共有メモリには共有メモリ間パスが設けられ、一方の共有メモリはマスタ、他方の共有メモリはスレーブに定められ、
前記セレクタは、前記プロセッサから前記共有メモリへのライト処理時に、前記プロセッサからアドレスとライトコマンドとライトデータを受領し、ペアを形成する前記共有メモリの両方に対してアドレスとライトコマンドとライトデータを送信する手段を有し、
前記マスタ側の共有メモリのアクセス回路は、ライトデータを指定のアドレスへ書き込む手段と、前記スレーブ側の共有メモリに前記共有メモリ間パスを介して前記アドレスを送信する手段を有し、
前記スレーブ側の共有メモリのアクセス回路は、前記共有メモリ間パスから受領したアドレスと前記セレクタから受領したアドレスとを比較する手段と、該手段の一致出力に応じて前記ライトデータを指定のアドレスに書き込む手段を有し、ライトデータのアクセス順を保証し、
前記セレクタは、前記プロセッサから前記共有メモリへのリード処理時に、前記プロセッサからアドレスとリードコマンドを受領し、ペアを形成する前記共有メモリの両方に対してアドレスとリードコマンドを送信する手段を有し、
前記マスタ側の共有メモリのアクセス回路は、リードデータを指定のアドレスから読み出し前記セレクタへ転送する手段と、前記スレーブ側の共有メモリに前記共有メモリ間パスを介して前記アドレスを送信する手段を有し、
前記スレーブ側の共有メモリのアクセス回路は、前記共有メモリ間パスから受領したアドレスと前記セレクタから受領したアドレスとを比較する手段と、該手段の一致出力に応じてリードデータを指定のアドレスから読み出し前記セレクタへ転送する手段を有し、
前記セレクタは、前記マスタおよびスレーブの共有メモリから受領したリードデータを比較する手段と、該手段の一致出力に応じて前記リードデータを前記プロセッサへ送信する手段を有するようにしている。
【００２７】
また、前記共有メモリはペアをなす２つの共有メモリからなり、該各共有メモリは内部にアクセス回路を有し、該ペアの共有メモリには共有メモリ間パスが設けられ、一方の共有メモリはマスタ、他方の共有メモリはスレーブに定められ、
前記セレクタは、前記プロセッサから前記共有メモリへのライト処理時に、前記プロセッサからアドレスとライトコマンドとライトデータを受領し、ペアを形成する前記共有メモリのうちのマスタとなる共有メモリに対してアドレスとライトコマンドとライトデータを送信する手段を有し、
前記マスタ側の共有メモリのアクセス回路は、ライトデータを指定のアドレスへ書き込む手段と、前記スレーブ側の共有メモリに前記共有メモリ間パスを介して前記アドレスとライトコマンドとライトデータを送信する手段を有し、
前記スレーブ側の共有メモリのアクセス回路は、前記共有メモリ間パスから受領したアドレスに前記ライトデータを書き込む手段と、前記マスタ側の共有メモリに対して書き込みの完了報告を送信する手段を有し、
前記マスタ側の共有メモリのアクセス回路は、前記スレーブ側の共有メモリから完了報告を受領したときライト完了とする手段を有し、ライトデータのアクセス順を保証し、
前記セレクタは、前記プロセッサから前記共有メモリへのリード処理時に、前記プロセッサからアドレスとリードコマンドを受領し、ペアを形成する前記共有メモリのうちマスタ側の共有メモリに対してアドレスとリードコマンドを送信する手段を有し、
前記マスタ側の共有メモリのアクセス回路は、リードデータを指定のアドレスから読み出す手段と、前記スレーブ側の共有メモリに前記共有メモリ間パスを介して前記アドレスとリードコマンドを送信する手段を有し、
前記スレーブ側の共有メモリのアクセス回路は、前記共有メモリ間パスから受領したアドレスからデータを読み出す手段と、前記マスタ側の共有メモリに該読み出したデータを転送する手段を有し、
前記マスタ側の共有メモリのアクセス回路は、前記マスタ側の共有メモリから読み出したリードデータと前記スレーブ側の共有メモリから受領したリードデータを比較する手段と、該手段の一致出力に応じて前記セレクタへ前記リードデータの転送と終了報告の送信を行う手段を有するようにしている。
【００２８】
また、前記プロセッサは、前記中央処理装置から受領したライトデータを前記キャッシュメモリに二重化して格納するためのキャッシュアドレスａとキャッシュアドレスｂを決定する手段と、該キャッシュアドレスａ及びキャッシュアドレスｂと、ライトコマンドと、ライトデータを前記セレクタに送信する手段を有し、
前記セレクタは、前記キャッシュアドレスａ及びキャッシュアドレスｂと、ライトコマンドと、ライトデータを受領し、前記キャッシュアドレスａに対応するキャッシュメモリＡに対して前記キャッシュアドレスａとライトコマンドとライトデータを送信し、前記キャッシュアドレスｂに対応するキャッシュメモリＢに対して前記キャッシュアドレスｂとライトコマンドとライトデータを送信する手段を有し、
前記各キャッシュメモリは、指定されたキャッシュアドレスにライトデータを格納するようにしている。
【００２９】
また、前記プロセッサは、キャッシュアドレスａのデータをキャッシュアドレスｂにコピーするキャッシュ間コピーを実行するため、コピー元のキャッシュアドレスａから前記セレクタを経由してデータを読み出す手段と、該読み出したデータをコピー先のキャッシュアドレスｂに前記セレクタを経由して書き込む手段を有するようにしている。
【００３０】
また、前記プロセッサは、キャッシュアドレスａのデータをキャッシュアドレスｂにコピーするキャッシュ間コピーを実行するため、キャッシュアドレスａからキャッシュアドレスｂへのコピーを指示するコマンドを前記セレクタに対して指示する手段を有し、
前記セレクタは、前記プロセッサからの指示に応じてキャッシュアドレスａからデータを読み出し該読み出したデータをキャッシュアドレスｂへ転送する手段を有するようにしている。
【発明の効果】
【００３１】
本発明によると、複数のプロセッサとメモリの間にセレクタを設置し、セレクタでメモリへのアクセス要求を選択して実行することにより、パッケージ当たりの配線数を削減し、ＬＳＩのピンネック、およびパッケージコネクタネックを解消できる。
【００３２】
さらに本発明によると、二重化された共有メモリの一方をマスタ、一方をスレーブと定め、共有メモリ間を接続して、スレーブ側はマスタ側の処理要求があった時のみ、二重アクセス要求を実行する機構を設けることにより、共有メモリ間の二重状態を保つことができる。
【発明を実施するための最良の形態】
【００３３】
図１に本発明における記憶制御装置の内部構成例を示す。
【００３４】
制御装置１９５はＭＰ（ＭｉｃｒｏＰｒｏｃｅｓｓｏｒ）部１１０と共有メモリ（ＳＭ）セレクタ１４０と、キャッシュ（ＣＭ）セレクタ１５０と、共有メモリ（ＳＭ）１６０と、キャッシュメモリ（ＣＭ）１７０から構成される。
【００３５】
ＭＰ部１１０は、１つ以上のプロセッサ（ＭＰ）１１１と、ＣＭアクセス回路１１２と、ＳＭアクセス回路１１３を内部に持つ。
【００３６】
ＭＰ１１１は、記憶装置とＣＭ１７０間のデータ転送、あるいはＣＭ１７０と中央処理装置間のデータ転送を実行する。
【００３７】
ＣＭアクセス回路１１２は、ＭＰ１１１からの要求に応じてＣＭ１７０と記憶装置、あるいはＣＭ１７０と中央処理装置間のデータ転送を実行するＤＭＡ回路である。
【００３８】
バッファ１１５は、ＣＭアクセス回路１１２の指示により、データを一時的に格納するために用いられる。
【００３９】
ＬＭ１１４は、ローカルメモリであり、プロセッサのワークで使用するメモリとして、また、リードデータ、ライトデータを格納するメモリ等として使用される。
【００４０】
ＳＭアクセス回路１１３は、ＭＰ１１１からの要求に応じてＳＭ１６０からＭＰ１１１へのデータ転送、あるいはＭＰ１１１からＳＭ１６０へのデータ転送を実行する。
【００４１】
ＳＭセレクタ１４０は、複数のＭＰ１１１からＳＭ１６０へのアクセス要求のうち、一つを選択して実行する機能を持つ。
【００４２】
ＣＭセレクタ１５０は、複数のＭＰ１１１からＣＭ１７０へのアクセス要求のうち、一つを選択して実行する機能を持つ。
【００４３】
本実施例ではセレクタをＳＭセレクタとＣＭセレクタに分離した構成としているが、このような分離をせずに１つのセレクタとし、１つのセレクタでＳＭセレクタとＣＭセレクタの機能を兼ね備える構成としてもよいことは云うまでもない。
【００４４】
ＳＭ１６０は、キャッシュ管理情報や、システム管理情報などの制御情報を格納しており、２つのＳＭ１６０ａおよびＳＭ１６０ｂでペアを形成する。
【００４５】
格納データはペア間で二重化されていて、同一アドレスには同一のデータが格納されている。
【００４６】
一方が閉塞した場合でも、システムダウンに至ることはない。
【００４７】
ＳＭ１６０ａとＳＭ１６０ｂ間を接続する共有メモリ間パス１６５によって、格納データの二重化を実現する。
【００４８】
本実施例では、ＳＭ１６０をＣＭ１７０とは独立したメモリモジュールとして表現しているが、ＣＭ１７０の一部をＳＭ１６０として使用する構成も考えられる。
【００４９】
一方、ＣＭ１７０は、記憶装置上のデータを一時的に格納するメモリである。
【００５０】
ホストからのライトデータで、記憶装置に未反映のデータは、２つのＣＭ１７０ａとＣＭ１７０ｂに二重化して格納されている。
【００５１】
ここで、ＳＭ１６０の二重化と異なる点は、必ずしも同一のキャッシュアドレスに同一データが格納されていない点である。
【００５２】
ＣＭ１７０の管理情報はＳＭ１６０に格納されていて、ＭＰ１１１はＳＭ１６０にアクセスしてＣＭ１７０ａとＣＭ１７０ｂのデータ格納領域を確保し、当該領域にライトデータを書込むことにより、二重化を実現する。
【００５３】
このため、ＳＭ間アクセスパス１６５のような機構は不要である。
【００５４】
ＭＰ部１１０からは２本のＳＭアクセスパス１２０によって相違なる２個のＳＭセレクタ１４０に接続され、同様に２本のＣＭアクセスパス１３０によって相違なる２個のＣＭセレクタ１５０に接続される。
【００５５】
また、一つのＳＭセレクタ１４０およびＣＭセレクタ１５０へは、４個のＭＰ部が接続される。
【００５６】
ＳＭセレクタ１４０からはそれぞれ１本のＳＭアクセスパス１２５によってＳＭ１６０ａとＳＭ１６０ｂに接続され、ＣＭセレクタ１５０からはそれぞれ１本のＣＭアクセスパス１３５によってＣＭ１７０ａとＣＭ１７０ｂに接続される。
【００５７】
このような４つのＭＰ部１１０と２つのＳＭセレクタ１４０と２つのＣＭセレクタ１５０で一つのグループを形成し、セレクタグループ１９０と呼ぶ。
【００５８】
制御装置１９５は１個以上のセレクタグループ１９０を有する。
【００５９】
ここで、上記個数は一実施例に過ぎず、個数を上記に制限するものではない。
【００６０】
重要なことは、セレクタグループ１９０内ではＭＰ部１１０の個数よりもＳＭセレクタ１４０の個数を少なくすることであり、これによってＭＰ部１１０とＳＭセレクタ１４０とを接続するＳＭアクセスパス１２０の個数よりも、ＳＭセレクタ１４０とＳＭ１６０間を接続するＳＭアクセスパス１２５の個数を少なくでき、ＳＭ１６０に搭載されたＬＳＩのピンネック、およびＳＭ１６０のパッケージのコネクタネックを解消することができる。
【００６１】
このことは、ＣＭ１７０についても同様である。
【００６２】
例えば、３２個のＭＰ部１１０からＳＭ１６０ａ、１６０ｂに直接に独立したＳＭアクセスパス１２０が２本ずつ（１本は交代パス用）存在した場合、ＳＭ１６０に接続するＳＭアクセスパス１２０の個数は、合計３２(MP)×２(path)＝６４本となる。
【００６３】
仮に各ＳＭアクセスパス１２０が１６ビット幅とすれば、１０２４ビットのピンがＳＭ１６０に必要になるが、現在このようなピン数を持つＬＳＩは存在しない。
【００６４】
一方、本実施例によると、３２個のＭＰ部１１０に対しては８個のセレクタグループ１９０を有し、ＳＭ１６０に接続するＳＭアクセスパス１２０の個数は、８(セレクタグループ）×２（ＳＭセレクタ）＝１６本に押さえられ、ピン数は２５６本で済む。
【００６５】
次に、ＳＭアクセスのための実施例である実施例１について説明する。
【００６６】
まず、図２から図６を使用して、ＳＭアクセス時の処理を説明する。
【００６７】
図２は、本実施例におけるＳＭ１６０のアクセスシーケンス例を示す。
【００６８】
ＭＰ１１１からＳＭアクセス回路１１３へは、アクセスするＳＭ１６０のアドレスと、リードの場合はデータを格納するＬＭ（ローカルメモリ）１１４のアドレス、ライトの場合はライトデータを格納しているＬＭ１１４のアドレスを渡す。
【００６９】
ＳＭアクセス回路１１３がＭＰ１１１よりリードアクセス要求を受領すると、ＳＭセレクタ１４０に対してREQ信号を送信し、ＳＭセレクタ１４０からACK信号が帰るまで待つ。その後、リードコマンドとリードアドレスを送信する。
【００７０】
ＳＭセレクタ１４０では、複数あるＳＭアクセス要求のうち、一つを選択して、ACK信号を返す。
【００７１】
その後コマンドとアドレスを受信すると、二重アクセスの場合には、ＳＭ１６０ａおよびＳＭ１６０ｂに対して、コマンドとアドレスを送信する。
【００７２】
ＳＭ１６０は、コマンドとアドレスを受信すると、当該アドレスからデータを読み出し、ＳＭセレクタにリードデータを転送した後、終了報告をＳＭセレクタ１４０に送信する。
【００７３】
ＳＭセレクタ１６０は、最初のリードデータと終了報告をＳＭ１６０ａまたはＳＭ１６０ｂから受信すると、当該データおよび終了報告をＭＰ部１１０へ送信する。
【００７４】
この際、リードデータは、ＳＭセレクタ１４０のバッファへ一時的に格納しておく。
【００７５】
その後、他のＳＭ１６０ａまたは１６０ｂからリードデータを受信すると、バッファへ格納しておいたリードデータとコンペアを実施して、一致していることを確認する。
【００７６】
続いて受信した終了報告をＭＰ部１１０へ転送し、処理を完了する。
【００７７】
ＳＭアクセス回路１１３は、リードデータを受信すると、ＭＰ１１１から指定されたＬＭ１１４のアドレスへ当該データを格納する。
【００７８】
その後、二つの終了報告を受信して、処理完了となる。
【００７９】
ライト処理の場合もほぼ同様で、ＳＭアクセス回路１１３は、コマンド、アドレスに続いてライトデータを送信する。
【００８０】
ＳＭセレクタ１４０もコマンド、アドレス、ライトデータをＳＭ１６０ａおよびＳＭ１６０ｂに転送し、ＳＭ１６０ａおよびＳＭ１６０ｂは、指定されたアドレスにライトデータを格納した後、終了報告を行う。
【００８１】
図３はＳＭセレクタ１４０の内部構成図を示す。
【００８２】
各ＭＰ部１１０とＳＭセレクタ１４０を接続するＳＭアクセスパス１２０毎にレジスタ３１０が対応していて、制御部３００は、このレジスタ３１０をリード・ライトすることによって、ＭＰ部からの情報を送受信できる。
【００８３】
一方、ＳＭ１６０ａおよびＳＭ１６０ｂとＳＭセレクタ１４０を接続するＳＭアクセスパス１２５毎にレジスタ３４０ａおよびレジスタ３４０ｂが対応していて、このレジスタ３４０をリードライトすることにより、ＳＭ１６０と通信することが可能である。
【００８４】
ＳＭ１６０からリードしたデータは、アクセス要求のあったＭＰ部１１０へ、レジスタ３１０経由で転送すると同時に、バッファ３３０へ格納することが可能である。
【００８５】
そして、ＳＭ１６０ａとＳＭ１６０ｂの両方からデータをリードした後、データコンペア部３２０で二重化のチェックを行う。
【００８６】
制御部３００は、ＭＰ部１１０からのアクセス要求を選択して実行する機能と、データコンペア部３２０の制御機能などを有する。
【００８７】
図４は、ＳＭアクセス回路１１３の処理フローを示す。
【００８８】
ＳＭアクセス回路１１３がプロセッサ１１１からＳＭアクセス要求を受領すると、ステップ４００でアクセスするアドレスのビット８が０かどうか調べ、もし０であればステップ４１０でＳＭセレクタ１４０ａに対してリクエスト信号を送信する。
【００８９】
もし１であればステップ４２０でＳＭセレクタ１４０ｂに対してリクエスト信号を送信する。
【００９０】
ＭＰ部は２つのＳＭセレクタ１４０ａおよび１４０ｂの両方に対してＳＭアクセスパス１２０を持っているので、両方のパスを負荷分散させたほうが効率がよい。
【００９１】
このため本実施例では、ＳＭ上のアドレスを１２８バイト刻みでＳＭセレクタ１４０aと１４０ｂを切り替える。
【００９２】
よって、アクセスアドレスの８ビット目を見て、どちらを選択するか決定すれば良い。
【００９３】
一般的には、第ｎビット目を見てアクセスパスを選択することにより、２(n-1)バイト刻みでＳＭセレクタ１４０ａと１４０ｂを切り替えることになる。
【００９４】
このｎは、システムのＳＭアクセスパターンなどを調査して決めるのが良い。
【００９５】
送信したREQ信号に対して、ステップ４１１または４２１でＳＭセレクタ１４０からACK信号が返されると、ステップ４１２、４１３または４２２、４２３で、ＳＭセレクタ１４０に対してコマンド、アクセスアドレスを送信する。
【００９６】
続いてアクセスがリードの場合は、ステップ４１４または４２４でＳＭ１６０からデータを受領し、プロセッサから指定されたＬＭ１１４のアドレスに当該データを格納する。
【００９７】
もしアクセスがライトの場合は、ステップ４１３、４１４またはステップ４２３、４２４に続いて、プロセッサ１１１から指定されたＬＭ１１４のアドレスからライトデータを送信する。
【００９８】
最後にステップ４１５でＳＭセレクタ１４０からＳＭ１６０ａの終了報告とＳＭ１６０ｂの終了報告を受信したら処理を完了する。
【００９９】
ここで、ステップ４１０、４１１またはステップ４２０、４２１でREQ-ACKのやりとりを必要とする理由を説明する。
【０１００】
ＳＭセレクタ１４０は、後に詳しく説明するが、複数のＭＰからのアクセス要求を順次実行するために、アクセス要求がぶつかった場合は待たなくてはならない。
【０１０１】
そこで、ＳＭアクセス回路１１３はまずリクエスト信号を送信し、これに対してＳＭセレクタからACK信号が返ると、処理開始となる。
【０１０２】
ＳＭアクセス回路１１３からＳＭセレクタ１４０へ送信されるコマンドデータには、リードあるいはライトを示す情報と、二重アクセスか一重アクセスかを示すフラグと、一重アクセスの場合はＳＭ１６０ａかＳＭ１６０ｂのいずれへアクセスするかを示す情報を含む。
【０１０３】
次に図５および図６を用いて制御部３００の処理を説明する。
【０１０４】
制御部３００はステップ５１０および５１１において、レジスタ３１０を０番から７番まで、REQ信号がオンになっているかどうかをラウンドロビンで監視する。
【０１０５】
オンになっているレジスタ３１０を見つけると、当該パスに対してACK信号を返し、処理可能となったことを知らせる。これは当該レジスタ３１０のACKに対応するビットをオンにすることによって成される。
【０１０６】
続いてステップ５１２でＳＭアクセス回路１１３から受信したコマンドとアドレスをＳＭ A面とB面の両方に転送する。
【０１０７】
ここでコマンドをデコードして、もし二重アクセスのリードコマンドであれば、ステップ５１４でＳＭ１６０から、リードデータが転送されてくるのを待つ。
【０１０８】
二重アクセスの場合は、ＳＭ A面１６０ａから読み出されたデータと、ＳＭ  B面１６０bから読み出されたデータが一致することを確認する必要がある。
【０１０９】
また、ＳＭ A面とB面のアクセス処理はそれぞれ独立して行われるので、データが読み出される順序は決まっていない。
【０１１０】
そこで、ステップ５１４でリードデータを受信すると、ステップ５１５で他の面からのデータが受信済みであるかどうかをチェックする。
【０１１１】
受信済みであれば、ステップ５１６で、受信データをバッファ３３０へ格納する。また、最初の受信データはＭＰへ転送する。
【０１１２】
もし今受信したデータがSM A面１６０ａからのものであれば３３０ａへ、SM B面１６０ｂからのものであれば３３０ｂへ格納した後、データコンペア部３２０に対してデータコンペアを指示する。
【０１１３】
もし、ステップ５１８でコンペア結果に異常がなく、かつステップ５１７でＳＭ１６０から正常終了が報告されていればアクセス成功とし、ステップ５１９で正常終了をＳＭアクセス回路１１３に報告して、処理を終了する。
【０１１４】
次にステップ５１５で他の面からリードデータを受信していなかった場合、つまり今受信したデータが最初にＳＭ１６０から転送されたデータだった場合は、ステップ５２０で、もしSM A面１６０ａからのデータであればA面バッファ３３０ａへ、B面１６０ｂからのデータであればＢ面バッファ３３０ｂへ、受信データを格納する。
【０１１５】
また、バッファ３３０へ格納すると共に、当該リードデータをＳＭアクセス回路１１３へも転送する。
【０１１６】
その後ステップ５２１および５２２で、ＳＭ１６０から受信した終了報告をＳＭアクセス回路１１３へ転送する。
【０１１７】
データをバッファ３３０へ格納しておくのは、後のコンペアのためにデータを保持しておくためである。
【０１１８】
また、最初のリードデータをＳＭ１６０から受信した時点で、データをＳＭアクセス回路１１３に転送し、後のリードデータは転送しない。これは、データ転送を一回にすることにより、無駄な転送オーバヘッドを削減するためである。
【０１１９】
ステップ５１７またはステップ５２１で、ＳＭより正常終了を受信しなかった場合には、ステップ５２３で異常終了をＭＰに報告する。
【０１２０】
ステップ５１３で、ＳＭアクセス回路１１３からの要求がライトアクセスか、または一重リードアクセス時の処理を図６に示す。
【０１２１】
ライトアクセス要求の場合は、ステップ６２０でＳＭアクセス回路１１３から受信したライトデータをＳＭ A面１６０ａおよびＳＭ B面１６０ｂへ転送し、ステップ６２１で両面から完了報告を受領したら、それぞれをＳＭアクセス回路１１３へ転送する。
【０１２２】
また、一重リード要求の場合は、ステップ６１１で指定された面からリードデータを受領すると、それをＳＭアクセス回路１１３へ転送し、その後ステップ６１２で指定された面からの完了報告を受領したら、それをＳＭアクセス回路１１３へ転送して処理を完了する。
【０１２３】
一重リードもライトアクセスも、ＳＭ A面１６０ａ、ＳＭ Ｂ面１６０ｂの両方へコマンドおよびアドレスを転送しているが、ＳＭ１６０側ではコマンドをデコードした時に、自ＳＭ１６０に対するアクセスかどうかを判断し、処理不要の場合は要求を無視する。
【０１２４】
こうすることによって、ＳＭセレクタでは一重アクセスかどうか判断する必要がなく、負荷を低減することが可能である。
【０１２５】
ＳＭ１６０へのアクセスは、ペアとなるＳＭ１６０の両方にアクセスする二重アクセスと、いずれか一方にアクセスする一重アクセスの二種類のアクセスモードがある。
【０１２６】
これには、制御情報として、一重で格納されている情報と二重で格納されている情報があるからで、前者の例としては、キャッシュの管理情報、後者の例としては、システム管理情報などがある。
【０１２７】
ＳＭ１６０は、二重アクセスに対してはそのアクセス順を守る必要がある。
【０１２８】
まずその理由について、例を用いて説明する。
【０１２９】
今、プロセッサ＃１がＳＭ１６０の内容をＡに更新しようとしていて、同時にプロセッサ＃２が同一アドレスの内容をＢに更新しようとしているとする。
【０１３０】
もしＳＭ A面１６０ａがプロセッサ＃１、プロセッサ＃２の順にアクセスを実行し、ＳＭ B面１６０ｂがプロセッサ＃２、 プロセッサ＃１の順にアクセスを実行したとすると、最終的に当該アドレスの内容は、ＳＭ A面１６０ａはＢに、ＳＭ B面１６０ｂはＡに更新され、データの不一致を引き起こす。
【０１３１】
さらに他の例で説明する。
【０１３２】
今ＳＭ１６０の内容がＡであるとし、プロセッサ＃１がＳＭ１６０の内容を読み出そうとしていて、同時にプロセッサ＃２が同一アドレスの内容をＢに更新しようとしているとする。
【０１３３】
もしＳＭ A面１６０ａがプロセッサ＃１、プロセッサ＃２の順にアクセスを実行し、ＳＭ B面１６０ｂがプロセッサ＃２、プロセッサ＃１の順にアクセスを実行したとすると、ＳＭ A面からは更新前のデータ、すなわちＡが読み出され、ＳＭ B面からは更新後のデータ、すなわちＢが読み出され、データの不一致を検出する。
【０１３４】
以上の例からわかるように、ＳＭ１６０の二重状態を保持するための制御が必要である。
【０１３５】
上記二重状態を保持する制御の基本的考え方は、ＳＭ１６０の一方をマスタ、他方をスレーブと定めて、マスタ側がアクセス実行を許可するまでは、スレーブ側は当該アクセスを実行しない、ということである。
【０１３６】
マスタおよびスレーブの切り替えは、面単位、例えばＳＭ１６０ａを常にマスタとし、ＳＭ１６０ｂを常にスレーブとして取り扱う方法や、アドレス領域毎に取り扱う方法、例えばＳＭ１６０ａとＳＭ１６０ｂを２５６バイト毎にマスタおよびスレーブを切り替える方法などが考えられる。
【０１３７】
本実施例では、後者、すなわちアドレス単位毎にマスタとスレーブを切り替える方法を前提とする。
【０１３８】
この場合、例えばアドレス単位を保持するレジスタをＳＭ１６０およびＳＭセレクタ１４０内部に保持していて、システム立ち上げ時にＭＰが設定するようにしておき、ＳＭアクセスが発生した場合に、ＳＭ１６０およびセレクタ１４０は、アクセスアドレスとレジスタに格納されたアドレス単位を比較して、いずれがマスタになるかを調べれば良い。
【０１３９】
図７はＳＭ１６０の構成図を示す。
【０１４０】
ＳＭ１６０は、ＳＭセレクタ１４０とＳＭ間の情報の送受信を行うＭＰインタフェース７１０、二重化の他面へ情報を送信するＳＭ送信インタフェース７２０、他面から情報を受信するＳＭ受信インタフェース７３０、データを格納するメモリバンク７５０、メモリバンクからのリードライトを制御するメモリコントローラ７４０、ＭＰインタフェース７１０とＳＭ送信インタフェース７２０とＳＭ受信インタフェース７３０とメモリコントローラを制御するＳＭコントローラ７００から構成される。
【０１４１】
図８にＳＭコントローラ７００の処理フローを示す。
【０１４２】
まずステップ８００で、ＳＭ受信インタフェース７３０からアクセス対象となるアドレスを取得する。
【０１４３】
もしＮＵＬＬアドレスであれば、ステップ８１０でＭＰ１１１からのアクセス要求が存在するかどうか、ＭＰインタフェース７１０を順に調べていく。
【０１４４】
もしアクセス要求があれば、ＭＰインタフェース７１０はコマンド、アドレス、およびライトの場合はライトデータを保持している。
【０１４５】
そこでまずアドレスを取得して、自面がマスタとなって処理すべきアドレスかどうかを調べる。
【０１４６】
自面がマスタとなるべきアクセス要求が存在しなければ、ステップ８００に戻り、ポーリングを継続する。
【０１４７】
自面がマスタとして処理するアクセス要求が存在すれば、ステップ８１１でアクセス要求が二重アクセスかどうかをコマンドから調べる。
【０１４８】
もし二重アクセスであればステップ８１２でＳＭ送信インタフェース７２０に当該アドレスを送信して、スレーブ面に対して当該アクセスの処理を要求する。
【０１４９】
続いてステップ８１３で、当該アドレスにアクセスする。
【０１５０】
もしリード要求であれば、メモリコントローラ７４０に対してリード要求とアドレスを送信する。
【０１５１】
メモリコントローラ７４０がメモリバンク７５０にアクセスしてデータが読み出されると、ＳＭコントローラ７００は当該データをMPインタフェース７１０に転送して処理を完了する。
【０１５２】
もしライトアクセスであれば、メモリコントローラ７４０に対してライト要求を送信するとともにアドレスおよびライトデータを転送する。
【０１５３】
メモリコントローラ７４０は指定アドレスにデータを書き込み処理を完了する。
【０１５４】
以上の処理が正常に完了すると、ＳＭコントローラ７００はＭＰインタフェース７１０を介してＭＰ１１１に正常終了を報告し、ステップ８００に戻る。
【０１５５】
次にステップ８００でＳＭ受信インタフェース７３０に非ヌルアドレスが格納されていた場合、すなわちマスタ面からの処理要求があった場合は、ステップ８２０で指定アドレスと一致するアクセス要求があるかどうかをＭＰインタフェース７１０を走査する。
【０１５６】
一致するアドレスが存在した場合はステップ８１３で、当該アドレスへのアクセスを実行する。
【０１５７】
もし一致するアドレスが存在しなかった場合は、ステップ８３０で同一のアクセス要求があるまで、ＭＰインタフェース７１０を順に監視し続ける。
【０１５８】
もし、一定時間待ってもアクセス要求がなかった場合は、タイムアウトエラーとしてＭＰ１１１に報告する。
【０１５９】
ステップ８２０では、ＳＭ受信インタフェース７３０から受信したアドレスと一致するものを、ＭＰインタフェース７１０を順に捜し回るのは、これは多少効率が悪い。
【０１６０】
そこで、マスタ面から要求があったら、どのＭＰインタフェース７１０に対応する要求か判断できると都合が良い。
【０１６１】
このため、例えばシステムに一意に付けられているＭＰ番号をコマンドに格納しておき、ＳＭ送信インタフェース７２０にはＭＰ番号を送信する。
【０１６２】
さらに、各ＳＭセレクタ１４０が接続する２つのＭＰインタフェース７１０を固定的に決めておき、セレクタはＭＰ番号と、対応するＭＰインタフェースの対応表を持っておく。
【０１６３】
このようにすると、スレーブ側でＳＭ受信インタフェース７３０から受信したＭＰ番号から、ＭＰインタフェース７１０の番号が一意に定まり、すぐさまステップ８２０からステップ８１３へ移行できる。
【０１６４】
以上の方式によると、ＳＭ送信インタフェース６２０およびＳＭ受信インタフェース６３０を介した制御により、二重アクセスにおいては、マスタ面が処理を開始しない限りはスレーブ面も当該アドレスの処理は行わないために、アクセス順序は必ず守られ、前述したようなデータの不一致は起こり得ない。
【０１６５】
次に、ＳＭアクセスの実施例である実施例２について説明する。実施例２では、ＳＭ１６０への二重アクセスにおけるアクセス順序の保証方法として第２の保証方法を用いている。
【０１６６】
実施例２について、図９から図１１を用いて説明する。
【０１６７】
図９はリードアクセスにおけるＳＭアクセスプロトコルの例を示す。
【０１６８】
実施例２の第二の保証方法では、ＳＭセレクタ１４０は、マスタとなるＳＭ１６０へのみ、アクセス要求を送信する。
【０１６９】
ここでは、ＳＭ１６０ａがマスタ、ＳＭ１６０ｂがスレーブになっているとする。
【０１７０】
リードアクセスの場合は、ＳＭ１６０ａがアクセス要求を受領すると、ＳＭ間アクセスパス１６５を介して、ＳＭ１６０ｂにコマンドとアドレスを送信するとともに、メモリをアクセスしてデータを読み出す。
【０１７１】
ＳＭ１６０ｂは、このアクセス要求に対してメモリからデータを読み出し、ＳＭ１６０ａにデータを送信した後、ＳＭ１６０ａに対して終了報告を行う。
【０１７２】
ＳＭ１６０ａはＳＭ１６０ｂからデータおよび終了報告を受領して、正常にデータが読み出されたことを確認した後、自メモリから読み出したデータと、ＳＭ１６０ｂから受信したデータをコンペアして、一致していればＳＭセレクタ１４０にデータを送信し、終了報告を行う。
【０１７３】
ライトアクセスの場合は、ＳＭ１６０ａはＳＭセレクタ１４０からコマンド、アドレスに続いてライトデータを受信するが、ＳＭ１６０ｂに対しても、コマンド、アドレス、データを送信するとともに、メモリの指定アドレスにデータを格納する。
【０１７４】
一方、ＳＭ１６０ｂでは、ＳＭ１６０ａから指定されたアドレスにデータを格納した後、ＳＭ１６０ａに対して終了報告を行う。
【０１７５】
ＳＭ１６０ａは、自メモリへの書き込みが正常に終了し、かつＳＭ１６０ｂからの終了報告を受領するのを待って、ＳＭセレクタ１４０に終了報告する。
【０１７６】
ＳＭセレクタ１４０は、ＭＰ部からアクセス要求を受けると、マスタとなるＳＭ１６０へのみアクセス要求を転送すればよい。
【０１７７】
また、データコンペアや二重アクセスの待ち合わせなどの処理はＳＭ１６０側で行う。
【０１７８】
図１０にＳＭコントローラ７００の処理を示す。
【０１７９】
ＳＭコントローラ７００は、ステップ１０００でマスタ面からのアクセス要求の有無をＳＭ受信インタフェース７３０をアクセスして調べる。
【０１８０】
もし、アクセス要求があれば、ＳＭ受信インタフェース７３０には、コマンド、アドレス、そしてライトの場合はライトデータが格納されている。
【０１８１】
もしアクセス要求がなかった場合には、ステップ１０１０で、ＭＰインタフェース７１０を順にアクセスしてアドレスを取得し、自面がマスタとなるべきアクセス要求があるかどうかを判定する。
【０１８２】
もしなければ、ステップ１０００に戻り、ポーリングを繰り返す。
【０１８３】
もし自面がマスタとなるべきアクセス要求があれば、ステップ１０１１でコマンドをデコードして二重アクセスかどうかを調べ、もし二重アクセスであれば、ステップ１０１２で、ＳＭ送信インタフェース７２０へ、アクセス要求、すなわちコマンド、アドレス、そしてライトの場合はライトデータを転送する。
【０１８４】
さらにリードアクセス要求であれば、ステップ１０１４で自メモリからデータを読み出した後、スレーブからのデータ転送および終了報告を待つ。
【０１８５】
終了報告があると、ステップ１０１５で、自メモリから読み出したリードデータと、スレーブから転送されたリードデータをコンペアして、一致していれば、ＭＰインタフェース７１０ならびにＳＭセレクタ１４０経由でリードデータを転送し、その後、終了報告を行う。
【０１８６】
もし、データ不一致となるか、あるいはマスタ面からのデータ読み出しに失敗した場合、または、スレーブ面から異常終了が報告された場合は、ＭＰ１１１に対して異常終了を報告する。
【０１８７】
ステップ１０１３で、ライトアクセス要求だった場合は、ステップ１０３０で自メモリの指定アドレスへライトデータを格納した後、スレーブからの終了報告を待つ。
【０１８８】
その後、ステップ１０３１で、自メモリへのアクセスが正常終了し、かつスレーブから正常終了の報告があれば、ＭＰインタフェース７１０およびＳＭセレクタ１４０経由で、ＭＰ１１１に対して終了報告を行う。
【０１８９】
もし、自メモリへのアクセスが異常終了するか、あるいはスレーブから異常終了が報告された場合は、ＭＰ１１１に対して、異常終了を報告し、処理を完了する。
【０１９０】
ステップ１０１１で、一重アクセス要求の場合は、上記で説明してきた二重アクセスのための制御は必要ない。
【０１９１】
よって、自メモリへアクセスを実行して、ＭＰ１１１に終了報告を行った後、処理を完了する。
【０１９２】
ステップ１０００において、マスタ面からのアクセス要求が存在した場合、それがリードアクセスであれば、図１１のステップ１１１０で、自メモリからデータを読み出し、マスタへデータを転送し、終了報告を行う。
【０１９３】
もし、ライトアクセスであれば、ステップ１１２０で、自メモリへデータを格納した後、マスタへ終了報告を行い処理を完了する。
【０１９４】
上記実施例２の第二の保証方法によると、スレーブは、マスタからのアクセス要求を受けてから当該処理を実行する。
【０１９５】
このため、アクセスの順序は必ず保証される。
【０１９６】
実施例１では、マスタとスレーブのアクセス完了の待ち合わせをＳＭセレクタ１４０で行っていて、ＳＭ１６０ａとＳＭ１６０ｂは、自メモリアクセスが完了すると、メモリを解放することができた。
【０１９７】
一方、実施例２では、マスタ側でスレーブのアクセス完了を待つために、それだけ長時間ＳＭ１６０が占有されることになる。
【０１９８】
このため、性能的には、実施例１のほうが優れている。
【０１９９】
次に本発明におけるキャッシュメモリ（ＣＭ）１７０へのアクセス方法について説明する。
【０２００】
ＣＭ１７０は、記憶装置上のデータを一時的に格納しておくためのメモリであり、ダーティデータ、すなわちホストからのライトデータで、ＣＭ１７０には格納しているが、記憶装置へは未反映のデータは二重化されてＣＭ１７０に格納されている。
【０２０１】
この二重化データは、ＳＭ１６０の二重化とは異なり、ＭＰ１１１で稼動するプログラムが、ＣＭ１７０ａおよびＣＭ１７０ｂに領域を確保して、当該領域に対してデータを格納するために、相異なる領域に二重化データを格納することになる。
【０２０２】
また、ＳＭ１６０に対するリードアクセスのようなコンペアチェックは行わない。
【０２０３】
ＣＭセレクタ１５０の構成は、図３で示したＳＭセレクタ１４０の構成とほぼ同じである。ただし、前述したように、キャッシュデータのコンペアは行わないので、データコンペア部３２０、バッファ３３０は持たない。
【０２０４】
また、ＣＭ１７０の構成は、図７で示したＳＭ１６０の構成とほぼ同じである。ただし、前述したように、同一アドレスに同一データを二重化することはなく、アクセス順序を保証する必要もないため、ＳＭ送信インタフェース７２０、ＳＭ受信インタフェース７３０に相当するものは持たない。
【０２０５】
以下、ＣＭ１７０へのライトデータの格納方法についての実施例である実施例３について説明する。
【０２０６】
なお、ＭＰ１１１は、ライトデータを格納すべきＣＭ領域はすでに取得済みであるとする。
【０２０７】
ＭＰ１１１は、ＣＭアクセス回路１１２に、コマンド、データを格納すべきＣＭアドレスａおよびＣＭアドレスｂを設定し、ＣＭアクセス回路１１２を起動する。
【０２０８】
ここで、ＣＭアドレスａ、ＣＭアドレスｂは、それぞれＣＭ１７０ａ、ＣＭ１７０ｂ上のアドレスである。
【０２０９】
ＣＭアクセス回路１１２が起動されると、データは一定の大きさのパケットに分割されて、順次転送される。
【０２１０】
それぞれのパケットには、コマンド、およびアドレスが付与され、データ転送の実行に伴い、それぞれＣＭアクセス回路１１２にて更新される。
【０２１１】
例えば、アドレスａから２４KBのデータを２ＫＢのパケットで転送する場合、最初のパケットには、ライトコマンドおよびアドレスａが、次のパケットにはライトコマンドおよびアドレスa+2048が、第ｎ番目のパケットには、ライトコマンドおよびアドレスa+2048*(n-1)が付与され、合計１２個のパケットにより全データがＣＭ１７０へ転送されることになる。
【０２１２】
以下、図１２を用いてキャッシュに対する二重ライトについて説明する。
【０２１３】
本実施例では、まず片方の面（図１２の例ではＣＭ１７０ａ）にライトした後、他方の面（図１２の例ではＣＭ１７０ｂ）へライトする。
【０２１４】
従って、ＭＰ１１１は、まずＣＭ１７０ａに対するＤＭＡリスト、すなわち、コマンド、アドレス、転送長等から構成され、ＣＭアクセス回路１１２の処理内容が記述されているリストと、ＣＭ１７０ｂに対するＤＭＡリストを作成した後、ＣＭアクセス回路を起動する。
【０２１５】
ＣＭアクセス回路１１２は、転送すべきアドレス毎にどのＭＰ−ＣＭ間アクセスパス１３０を使用するか選択する。
【０２１６】
選択方法は、ＳＭアクセス回路１１３で説明した方法と同様に、例えば３２ＫＢ毎に、使用するＭＰ−ＣＭ間アクセスパス１３０を切り替えれば良い。
【０２１７】
ＭＰ−ＣＭ間パスを選択すると、ＣＭセレクタ１５０に対して、REQ信号と最初のパケットのコマンドを送信する。
【０２１８】
コマンドには、リード・ライト種別と、二重アクセスかどうかを示すフラグと、ａ面への転送を示すフラグとｂ面への転送を示すフラグから成る。
【０２１９】
ＣＭセレクタ１５０はコマンドから、ＣＭ１７０ａへのライトであることがわかると、ＣＭ１７０ａに対してREQ信号とコマンドを送信する。
【０２２０】
ＣＭ１７０ａが処理可能になり、ＡＣＫ信号を受信すると、ＣＭアクセス回路１１３にACKを送信する。
【０２２１】
ここで、ＣＭ１７０に対してREQ-ACKのプロトコルが必要な理由について説明しておく。
【０２２２】
もし、ＣＭ１７０にデータを受信するのに十分な大きさのバッファを設けていれば、REQ-ACKプロトコルは必要でなく、データをバッファにため込んでおき、後にＣＭ１７０のコントローラが処理可能になった時点でバッファからキャッシュメモリへライトすれば良い。
【０２２３】
しかし、一般にキャッシュアクセスの場合は転送するデータ長が大きく（本実施例では２ＫＢを仮定している）、各キャッシュアクセスパス１３０毎にこのようなバッファを準備するのはコスト的に無駄がある。
【０２２４】
そこで、ＣＭ１７０が処理可能になった時点で、ＣＭセレクタ１５０に対してＡＣＫを返し、転送されたデータをスルーでキャッシュメモリへ転送することにより、上記のようなバッファを不要としている。
【０２２５】
ＳＭアクセスの場合は、一回の転送が１ワード程度と小さいため、ＳＭアクセスパス１２０毎にバッファを準備していても、たいした問題とならない。
【０２２６】
このため、ＳＭセレクタ１４０からＳＭ１６０へはREQ-ACKプロトコルは必要とせず、レジスタ３１０にコマンド、アドレス、データを格納することとした。
【０２２７】
さて、ＣＭアクセス回路１１２のＡＣＫ受領すると、アドレス、データを転送して、終了報告を待つ。
【０２２８】
ＣＭセレクタ回路では、アドレス、コマンドをアクセス対象となるＣＭ１７０ａへ転送し、ＣＭ１７０ａがデータの書き込みを完了し、終了報告を受け取ると、これをＣＭアクセス回路１１２へ転送して処理を完了する。
【０２２９】
その後ＣＭアクセス回路１１２は、ＣＭ１７０ｂに対してライト処理を実行するが、シーケンスについてはＣＭ１７０ａへのライト方法と同様なので省略する。
【０２３０】
以上でＣＭ１７０ａ、ＣＭ１７０ｂへの１パケット分の二重ライトが完了するが、この処理を全パケット分繰り返す。
【０２３１】
上記実施例３では、ＣＭ１７０ａとＣＭ１７０ｂ対応にコマンド、アドレス、データを転送しているため、ＭＰ−ＣＭ間アクセスパス１３０、１３５ならびにＣＭセレクタ１５０の利用効率が悪い。
【０２３２】
そこで、この問題を解決するための実施例である実施例４を以下に説明する。
【０２３３】
図１３は、ＣＭ１７０に対する二重ライトのシーケンスを示す。
【０２３４】
ＣＭアクセス回路１１２はＣＭセレクタ１５０に対して、REQ信号とともに、コマンドを転送する。
【０２３５】
ここでコマンドは、ライトアクセスコマンドであり、二重アクセスフラグと、ＣＭ１７０ａへのアクセスフラグと、ＣＭ１７０ｂへのアクセスフラグがオンになっている。
【０２３６】
ＣＭセレクタ１５０は、コマンドを受領すると、ＣＭ１７０ａとＣＭ１７０ｂの両方に対してREQ信号とコマンドを転送する。
【０２３７】
ＣＭ１７０ａとＣＭ１７０ｂの両方が処理可能な状態となり、ＡＣＫ信号が返されると、ＣＭアクセス回路１１２へＡＣＫ信号を送信する。
【０２３８】
その後、ＣＭアクセス回路１１２はＣＭ１７０ａのアドレス、ＣＭ１７０ｂのアドレス、ライトデータを転送し、これを受けてＣＭセレクタ１５０は、ＣＭ１７０ａのアドレスはＣＭ１７０ａへ、ＣＭ１７０ｂのアドレスはＣＭ１７０ｂへ転送する。そして、ライトデータは、ＣＭ１７０ａとＣＭ１７０ｂの両方へ転送する。
【０２３９】
ＣＭ１７０は上記実施例３と同様に、指定アドレスへライトデータを格納した後、終了報告をＣＭセレクタ１５０経由でＣＭアクセス回路１１２へ行う。
【０２４０】
上記実施例４によると、ライトデータの転送は１回でよく、その分ＭＰ−ＣＭセレクタ間アクセスパス１３０の占有時間は短くて済む。
【０２４１】
また、ＣＭ１７０ａとＣＭ１７０ｂの処理は並行に行われるので、レスポンスも短縮できる。
【０２４２】
次に実施例５として、キャッシュ間でデータのコピーを行う方法について述べる。
【０２４３】
キャッシュ間コピーでは、コピー元およびコピー先がそれぞれ、ＣＭ１７０ａからＣＭ１７０ａへ、ＣＭ１７０ｂからＣＭ１７０ｂへ、ＣＭ１７０ａからＣＭ１７０ｂへ、ＣＭ１７０ｂからＣＭ１７０ａへ、の４通りが考えられる。
【０２４４】
まず最初に、上記４通りの全てに適用可能な手法、すなわち、ＭＰ部のバッファ１１５を使用して、コピー元のＣＭ１７０からバッファ１１５へデータを読み出した後、バッファ１１５からコピー先のＣＭ１７０へデータをコピーする方法を以下に説明する。
【０２４５】
図１４は、バッファ１１５介したキャッシュ間コピー方法のシーケンスをまとめた図である。
【０２４６】
バッファ１１５を介した場合は、バッファ１１５の大きさを超えるコピーは一度にできないため、複数回に分ける必要がある。この制御はＭＰ１１１で行う。
【０２４７】
ＭＰ１１１は、まず、コピー元のＣＭ１７０（図１４の場合はＣＭ１７０ａ）に対するリード要求のＤＭＡリストと、コピー先のＣＭ１７０（図１４の場合はＣＭ１７０ｂ）に対するライト要求のＤＭＡリストを作成し、ＣＭアクセス回路１１２を起動する。
【０２４８】
ここで、ＤＭＡリスト中の転送サイズの上限はバッファサイズである。
【０２４９】
ＣＭアクセス回路は、これまで説明してきた方法により、まずコピー元のＣＭ１７０ａからバッファ１１５へデータを読み出す。
【０２５０】
これが完了すると、続いてコピー先のＣＭ１７０ｂへバッファ１１５からデータを書込み、処理を完了し、ＭＰ１１１にコピー完了を通知する。
【０２５１】
コピー開始を指示してから完了報告を受領するまで、ＭＰ１１１が介在することはない。
【０２５２】
もし、バッファサイズの制限により、まだコピーすべきデータが残っている場合は、ＭＰ１１１は引き続きＤＭＡリストを作成し、コピー処理を続行する。
【０２５３】
次に実施例６として、バッファ１１５を介在しないキャッシュ間コピー方法について説明する。
【０２５４】
この方法は、コピー元から読み出したデータをＣＭセレクタ１５０で折り返してコピー先へ転送するものである。
【０２５５】
データはＣＭセレクタ１５０を（バッファなどに格納されず）スルーでコピー先へ流れていくので、コピー先とコピー元のキャッシュは異なっていなくてはならない。すなわち、本手法が適用できるのは、ＣＭ１７０ａからＣＭ１７０ｂへ、またはＣＭ１７０ｂからＣＭ１７０ａへのいずれかである。
【０２５６】
図１５は、セレクタで折り返すキャッシュ間コピー方法のシーケンスをまとめた図である。
【０２５７】
ＭＰ１１１は、キャッシュ間コピーを実行するＤＭＡリストを作成したのち、ＣＭセレクタ１５０をREQ信号をアサートすることにより、起動する。
【０２５８】
ここで、リスト中には、キャッシュ間コピーコマンド、コピー元アドレス、コピー先アドレスを含む。
【０２５９】
ＣＭセレクタ１５０が起動されると、コピー元（図１５の場合はＣＭ１７０ａ）とコピー先（図１５の場合はＣＭ１７０ｂ）に対してリクエスト要求を発行する。
【０２６０】
ＣＭ１７０ａとＣＭ１７０ｂの両方が処理可能になり、ACKが返されると、ＣＭアクセス回路１１３に対してACKを返す。
【０２６１】
これを受けてＣＭアクセス回路１１３は、コマンド、ＣＭ１７０ａのアドレス、ＣＭ１７０ｂのアドレスを送信する。
【０２６２】
ＣＭセレクタ１５０は、コマンドはＣＭ１７０ａとＣＭ１７０ｂの両方に転送し、ＣＭ１７０ａアドレスはＣＭ１７０ａに、ＣＭ１７０ｂアドレスはＣＭ１７０ｂに転送する。
【０２６３】
コピー元であるＣＭ１７０ａからデータが読み出されると、そのデータをコピー先であるＣＭ１７０ｂへ転送する。
【０２６４】
ＣＭ１７０ｂの処理では、ライト処理と同様であり、すでにデータを受け取る準備ができているので、受領したライトデータを指定されたアドレスへ格納する。
【０２６５】
以上のＣＭ１７０ａからのリード処理と、ＣＭ１７０ｂへのライト処理を、全データのコピーを完了するまで繰り返す。
【０２６６】
二つのキャッシュ間コピー方法の特徴を以下にまとめる。
【０２６７】
ＣＭセレクタ１５０で折り返すコピー方法では、コピー元からのリードとコピー先へのライトを並行して行える。
【０２６８】
また、コピー元から読み出したデータをバッファに溜めないため、どのようなデータサイズのコピーでも、一度のコピー起動で完了する。
【０２６９】
よってバッファ１１５を介してコピーする方法に比べて、コピーにかかる時間が短い。
【０２７０】
一方、コピーデータをバッファに溜めずにスルーでコピー先に転送するために、同一面、すなわちＣＭ１７０ａからＣＭ１７０ａへ、またはＣＭ１７０ｂからＣＭ１７０ｂへのコピーはできないデメリットがある。
【０２７１】
従って、同一面間のコピーはバッファ１１５を介したコピー方法で、別面間のコピーはＣＭセレクタ１５０で折り返すコピー方法で行うのが良い。
【図面の簡単な説明】
【０２７２】
【図１】本発明における記憶制御装置の構成を示す図である。
【図２】実施例１のＳＭアクセスのシーケンスを示す図である。
【図３】ＳＭセレクタ回路の構成を示す図である。
【図４】ＳＭアクセス回路の動作フローを示す図である。
【図５】ＳＭセレクタ回路の動作フローを示す図である。
【図６】図５に続くＳＭセレクタ回路の動作フローを示す図である。
【図７】共有メモリの構成を示す図である。
【図８】実施例１のＳＭコントローラの動作フローを示す図である。
【図９】実施例２のＳＭアクセスのシーケンスを示す図である。
【図１０】実施例２のＳＭコントローラの動作フローを示す図である。
【図１１】図１０に続くＳＭコントローラの動作フローを示す図である。
【図１２】実施例３のＣＭアクセスのライトシーケンスを示す図である。
【図１３】実施例４のＣＭアクセスのライトシーケンスを示す図である。
【図１４】実施例５のＣＭアクセスのコピーシーケンスを示す図である。
【図１５】実施例６のＣＭアクセスのコピーシーケンスを示す図である。
【符号の説明】
【０２７３】
１１１…プロセッサ、１１２…ＣＭアクセス回路、１１３…ＳＭアクセス回路、１１４…ローカルメモリ、１１５…バッファ、１２０…ＳＭアクセスパス、１３０…ＣＭアクセスパス、１２５…ＳＭアクセスパス、１３５…ＣＭアクセスパス、１４０…ＳＭセレクタ、１５０…ＣＭセレクタ、１６０…共有メモリ、１６５…共有メモリ間パス、１７０…キャッシュメモリ、１９０…セレクタグループ、１９５…記憶制御装置。
【図１】
2004185640.tif 000003
【図２】
2004185640.tif 000004
【図３】
2004185640.tif 000005
【図４】
2004185640.tif 000006
【図５】
2004185640.tif 000007
【図６】
2004185640.tif 000008
【図７】
2004185640.tif 000009
【図８】
2004185640.tif 000010
【図９】
2004185640.tif 000011
【図１０】
2004185640.tif 000012
【図１１】
2004185640.tif 000013
【図１２】
2004185640.tif 000014
【図１３】
2004185640.tif 000015
【図１４】
2004185640.tif 000016
【図１５】
2004185640.tif 000017