(57)【特許請求の範囲】
【請求項１】
計算機システムであって、
第一の処理部と、
第二の処理部と、
共有メモリと、
前記共有メモリ内のデータのアドレスを格納するアドレス記憶領域とを有する記憶部と、
前記第一の処理部と前記記憶部を接続する第一の通信路と、
前記第二の処理部と前記記憶部を接続する第二の通信路とを備え、
前記第一の処理部は、前記第一の通信路を介して、前記共有メモリ内のデータに対するアクセス要求を行う第一のアクセス手段を有し、
前記第二の処理部は、前記第二の通信路を介して、前記共有メモリ内のデータに対するアクセス要求を行う第二のアクセス手段を有し、
前記記憶部は、前記第一のアクセス手段によるリード要求先のアドレスを前記アドレス記憶領域に格納し、前記アドレス記憶領域に格納した第一のアドレスと前記第二のアクセス手段によるアクセス要求先である第二のアドレスとを比較し、前記第一のアドレスと第二のアドレスが一致する場合、前記第二の処理部からのアクセス要求を排他する制御手段を有し、
前記第一の処理部は、前記共有メモリ内のデータに対する前記リード要求から前記リード要求に対応する前記アクセスでリードしたデータを変更したデータのライト要求の終了まで、前記第一の通信路の使用権を占有することを特徴とする、計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、前記第一の処理部は、リード要求の対象となる前記共有メモリ内のデータのアドレスを格納する第一の記憶領域と、前記第一の記憶領域に格納されたアドレスに対応するデータの変更情報を格納する第二の記憶領域と、前記第一の記憶領域に格納されたアドレスに対応するデータであって、前記変更情報に基づく変更を行う前のデータを格納する第三の記憶領域と、前記変更情報に基づいて、前記第三の記憶領域に格納されたデータに対する変更を行った後のデータを格納する第四の記憶領域とを有することを特徴とする、計算機システム。
【請求項３】
請求項１に記載の計算機システムであって、前記記憶部は、更に、前記共有メモリ内のデータにアクセス要求を行う処理部の識別子情報を格納する識別子記憶領域を有し、前記制御手段は、前記第一の処理部からのリードモディファイライトのリード要求があった場合、前記第一の処理部の識別子情報を、前記識別子記憶領域に格納し、前記第一の処理部から、前記リード要求に対応するライト要求があった場合、前記識別子記憶領域に格納された識別子情報と、当該ライト要求を行った第一の処理部の識別子情報とを比較し、両方の前記識別子情報が一致する場合、前記第一の処理部からのライト要求を許可することを特徴とする、計算機システム。
【請求項４】
請求項３に記載の計算機システムであって、前記第一の処理部は、前記リード要求の終了後に、前記第一の通信路の使用権を開放することを特徴とする、計算機システム。
【請求項５】
請求項４に記載の計算機システムであって、更に、前記第一の通信路に接続される他の処理部を有し、前記他の処理部は、前記第一の通信路の使用権が開放されている間に、前記第一の通信路を介して前記共有メモリ内のデータに対するリード要求を行う場合、前記制御手段は、前記アドレス記憶領域に格納されたアドレスと、当該他の処理部からのリード要求のアクセス先アドレスとを比較し、両方の前記アドレスが一致しない場合、前記他の処理部からのリード要求を許可することを特徴とする、計算機システム。
【請求項６】
第一の処理部と、第二の処理部と、記憶部と、前記第一の処理部と前記記憶部を接続する第一の通信路と、前記第二の処理部と前記記憶部を接続する第二の通信路とを備えた計算機システムのアクセス制御方法であって、
前記記憶部は、共有メモリと、前記共有メモリ内のデータのアドレスを格納するアドレス記憶領域を含むコントローラを有し、
前記第一の処理部は、前記第一の通信路を介して、前記共有メモリ内のデータに対するリードモディファイライト要求を行い、
前記コントローラは、前記リードモディファイライト要求のリードアクセス先アドレスを、前記アドレス記憶領域に格納し、前記第二の処理部から、前記第二の通信路を介して、前記共有メモリ内のデータに対するリード要求が行なわれた場合、前記アドレス記憶領域に格納されたアドレスと、前記第二の処理部からのリード要求のアクセス先アドレスとを比較し、両方の前記アドレスが一致する場合、前記第二の処理部からのリード要求を排他し、
当該計算機システムの前記第一の処理部は、第一の記憶領域、第二の記憶領域、第三の記憶領域、及び、第四の記憶領域を有し、
前記第一の処理部は、前記リード要求のアクセス先アドレスを、前記第一の記憶領域に格納し、前記第一の記憶領域に格納されたアドレスに対応するデータの変更情報を、前記第二の記憶領域に格納し、前記第一の記憶領域に格納されたアドレスに対応するデータを、前記共有メモリから読み込んで、前記第三の記憶領域に格納し、前記第二の記憶領域に格納された変更情報に基づいて、前記第三の記憶領域に格納された前記データに対して変更を行い、該変更後のデータを第四の記憶領域に格納することを特徴とする、アクセス制御方法。
【請求項７】
請求項６に記載のアクセス制御方法であって、
前記第一の処理部は、前記共有メモリ内のデータに対するリードモディファイライト要求のリード要求から前記リード要求に対応するライト要求の終了まで、前記第一の通信路の使用権を占有することを特徴とする、アクセス制御方法。
【請求項８】
請求項６に記載のアクセス制御方法であって、
当該計算機システムの前記記憶部は、更に、当該記憶部内の共有メモリ内のデータにアクセス要求を行う処理部の識別子情報を格納する識別子記憶領域を有し、
前記コントローラは、前記第一の処理部からのリードモディファイライト要求のリード要求があった場合、前記第一の処理部の識別子情報を、前記識別子記憶領域に格納し、前記第一の処理部は、前記第一の通信路を介して、前記リード要求の対象となるデータを読み込んだ後、前記第一の通信路の使用権を開放し、前記第一の処理部は、前記第一の通信路を介して前記共有メモリ内のデータに対し、前記リード要求に対応するライト要求を行う場合、前記第一の通信路の使用権を取得して前記記憶部にアクセスし、
前記コントローラは、前記識別子記憶領域に格納された識別子情報と、当該ライト要求を行なった第一の処理部の識別子情報とを比較し、両方の前記識別子情報が一致する場合、前記第一の処理部からのライト要求を許可することを特徴とする、アクセス制御方法。
【請求項９】
請求項８に記載のアクセス制御方法であって、
当該計算機システムは、更に、前記第一の通信路に接続される他の処理部を有し、前記他の処理部は、前記第一の処理部が前記第一の通信路の使用権を開放した後、前記第一の通信路を介して、前記共有メモリ内のデータに対するリード要求を行い、前記コントローラは、前記アドレス記憶領域に格納されたアドレスと、当該他の処理部からのリード要求のアクセス先アドレスを比較し、両方の前記アドレスが一致しない場合、前記他の処理部からのリード要求を許可することを特徴とする、アクセス制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、共有メモリ型マルチプロセッサシステムを用いるディスク制御システムにおいて、各プロセッサ間の共有メモリへの排他アクセスを行う場合に用いる方法とその方法を用いる装置に関する。
【０００２】
【従来の技術】
共有メモリ型マルチプロセッサシステムを用いるディスク装置において、複数のプロセッサをバス接続したシステムでは、あるプロセッサが共有メモリ上のデータを読み出した後、そのデータを更新する前に、他のプロセッサがその共有メモリ上のデータを書き換えてしまうと、両プロセッサ間で共有して行っていた処理に矛盾が生じる。
【０００３】
従来ではこれを防止するために、ソフト的には各共有データに対してそのデータにアクセスするアクセス権を管理するためのロック情報を用い、またハード的にはリードモディファイライト方式を用いてそのロック情報をアクセスする。
【０００４】
具体的には、先ず共有メモリ上のあるデータをアクセスする場合には、各プロセッサがこのデータが使用中（ロック中）であるか否かのロック情報をデータとして共有メモリに設ける。プロセッサはそのロック情報データを読み出した後、バスをそのまま占有してロック状態データをロック中に書き換えてしまう。このように、ロック情報データをバスを解放せずに連続使用して、書き換えるリードモディファイライト方式を用いて排他アクセスを行っていた。
【０００５】
このようなリードモディファイライト方式では、共有メモリに対してすべてのプロセッサが共通のアクセスバスを用いてアクセスすることを利用してハード的に各プロセッサのアクセスを排他制御している。しかし、共有メモリへのアクセスバスが複数になった時、上記の方法では排他制御することはできない。
【０００６】
【発明が解決しようとする課題】
本発明の目的は、複数のアクセスバスを持つ場合にも排他制御を可能にし、また、プロセッサがリードモディファイライト方式に適した命令コードを持たない場合にも、少ないアクセス時間でリードモディファイライトアクセスを完了する方法と装置を提供することにある。
【０００７】
【課題を解決するための手段】
上記目的を達成するため、本発明の制御方式は、複数のプロセッサとその各プロセッサの共有メモリへのアクセスを制御する共有メモリアクセスインターフェースコントローラ、上記インターフェースコントローラと共有メモリを接続する複数のインターフェースと、複数のインターフェースの制御と共有メモリアクセスを制御する共有メモリコントローラを有するディスク制御装置において、共有メモリコントローラにリードモディファイライトアクセス中のアドレスを登録するレジスタを有し、同アドレス情報を元に各インターフェースからのアクセス要求アドレスを比較して同アドレスと一致する場合には、同アクセスを禁止する。
【０００８】
また、共有メモリアクセスインターフェースコントローラには、リードモディファイライトアクセス先アドレスを設定するレジスタ、リードしたデータの変更内容を設定するレジスタ、変更後のデータを格納しておくレジスタ、変更前のデータを格納しておくレジスタを有し、設定されたアドレスに対するリードアクセスを行い、リードデータを変更内容設定レジスタに従って変更し、変更したデータを再び共有メモリにライトする制御を行う。
【０００９】
また、リードした変更前データとライトした変更後データをそれぞれ格納し、プロセッサが上記レジスタをリードすることができるようにしておく。この時、プロセッサによる各レジスタへのアクセスと、共有メモリへのリードモディファイライトアクセスの実行のタイミングを、プロセッサにおける、ロック情報の取得およびロック情報の設定，解除に要する総合的な時間を適当に制御する。
【００１０】
【発明の実施の形態】
本発明の提供する共有メモリ排他アクセス方法と装置について、以下に図面を示し実施例を参照して詳細に説明する。
【００１１】
図１は本発明の対象となるシステム構成の概略である。このシステムは複数のプロセッサ１０１、とそのプロセッサの共有メモリアクセスを制御する共有メモリアクセスインターフェースコントローラ１０２，複数の共有メモリアクセスインターフェース１０３，共有メモリコントローラ１０４，共有メモリ１０６から成る。そして、共有メモリコントローラ１０４内にあるリードモディファイライトアクセスアドレス格納レジスタ１０５を用いて各インターフェースからのアクセス先アドレスを比較して排他制御を行う。
【００１２】
図２は従来の複数のプロセッサがすべて共通のアクセスインターフェースを介して共有メモリにアクセスするシステムの構成である。複数のプロセッサ２０１と共有メモリインターフェースコントローラ２０２は共通のインターフェース２０３により、共有メモリアクセスコントローラ２０４に接続して、共有メモリ２０５にアクセスする。このインターフェース２０３の使用権を占有すれば、あるプロセッサが排他的に共有メモリにアクセスすることが可能である。
【００１３】
図３は本発明でのリードモディファイライトアクセスを制御する共有メモリアクセスインターフェースコントローラ１０２内のリードモディファイライトに必要なレジスタ群３０２の説明である。アクセス先アドレスレジスタ３０３，変更内容設定レジスタ３０４，変更前データレジスタ３０５，変更後データ格納レジスタ３０６を有する。
【００１４】
このレジスタ群３０２中で変更内容設定レジスタ３０４はシステムの利用するロック情報データのフォーマットにより、複数必要になることもある。
【００１５】
図４は共有メモリコントローラ内での排他制御のフローチャートである。各インターフェースからのアクセスを待つステップ４０１、到着したアクセスのアクセス先アドレスはリードモディファイライトアクセスアドレス格納レジスタ内のアドレスと同じかどうか判定するステップ４０２、一致する場合、そのアクセスはリードモディファイライトアクセス終了待ち処理４０３へ、一致しない場合、そのアクセスはリードモディファイライトアクセスか判定するステップ４０４、リードモディファイライトの場合、そのアクセス先アドレスをリードモディファイライトアクセスアドレス格納レジスタにアドレスを格納する処理４０５へ、異なる場合は当該アクセスの処理４０６を行う。
【００１６】
図５は共有メモリアクセスインターフェースコントローラ内でのリードモディファイライトアクセス制御のフローチャートである。
【００１７】
プロセッサによるリードモディファイライトアクセス先アドレスレジスタへのアドレス情報ライト（ステップ５０１）、続いて、変更内容設定レジスタへの変更内容情報のライト（ステップ５０２）、続いて、変更後データ格納レジスタのリード要求（ステップ５０３）。また、ステップ５０３においては、ステップ５０１をきっかけにして、平行して行われる共有メモリに対するリードアクセスを開始する（ステップ５１１）。続いて、変更内容設定レジスタの内容に従い内容を変更する（ステップ５１２）。変更後データを共有メモリへライトする（ステップ５１３）。上記ライト処理の完了を確認する（ステップ５０４）。完了を確認した後にステップ５０３のリード要求に対する変更後データを返送する（ステップ５０５）。
【００１８】
ただし、この制御では、プロセッサはアドレスのライトと変更内容設定は必ず連続して行うこと。先に内容変更設定を行って置く方法もあるが、共有メモリアクセスとプロセッサのレジスタアクセスを平行して行うメリットがなくなる。また、変更内容設定が遅れると、前回の設定を使用して変更データを作成する。
【００１９】
図６は図５で説明したレジスタアクセスと共有メモリアクセスを平行して行う場合と反対に、各レジスタ設定を確実に行ってからリードモディファイライトを実行する場合のフローチャートを示す。
【００２０】
プロセッサによるリードモディファイライトアクセス先アドレスレジスタへのライト（ステップ６０１）、変更内容設定レジスタへのライト(ステップ６０２)、変更後データ格納レジスタのリード（ステップ６０３）、共有メモリに対してリードアクセスを開始（ステップ６０４）、変更内容設定レジスタの内容に従い内容を変更する（ステップ６０５）、変更後データを共有メモリへライトする（ステップ６０６）、ライト処理の完了を確認する（ステップ６０７）。確認した後にステップ６０３のリード要求に対する変更後データを返送する（ステップ６０８）。ただし、この制御では、共有メモリアクセスとプロセッサのレジスタアクセスを平行して行うメリットがなくなる。しかし、確実にプロセッサの設定に従ってアクセスすることになる。
【００２１】
また、リードモディファイライト時に共有メモリアクセスインターフェースをリードアクセスからライトアクセスまで占有し続ける方式とそれぞれのアクセスごとに占有する方式のどちらも可能である。図７はインターフェースを占有し続ける場合の制御のデータの流れを示す図である。
【００２２】
プロセッサ７０１よりのアドレスＡへのリードモディファイライトアクセス、プロセッサ７０２からのアドレスＢへのリードアクセス、プロセッサ７０３よりのアドレスＡへのリード処理がある場合、プロセッサ７０１の最初のリードアクセスにより共有メモリコントローラ１０４内のアドレスＡがリードモディファイライトアドレス格納レジスタ１０５に格納される（制御７０４）。プロセッサ７０２のアドレスＢへのアクセス要求は、共有メモリアクセスインターフェース１０３ａがプロセッサ７０１のアクセスで占有されているため、排他される（制御７０５）。プロセッサ７０３のアドレスＡへのリードアクセスは、共有メモリコントローラにおいて、リードモディファイライトアドレス格納レジスタ１０５の値と比較され、一致するため排他される（制御７０６）。
【００２３】
図８はリード／ライトそれぞれのアクセスごとに占有する方式の場合の制御のデータの流れを示す図である。
【００２４】
プロセッサ８０１よりのアドレスＡへのリードモディファイライトアクセス、プロセッサ８０２からのアドレスＢへのリードアクセス、プロセッサ８０３よりのアドレスＡへのリード処理がある場合、プロセッサ８０１の最初のリードアクセスにより共有メモリコントローラ１０４内のリードモディファイライトアドレス格納レジスタ１０５にアドレスＡと共にプロセッサ８０１のＩＤ番号が格納され、上記リードアクセス終了と共にインターフェース１０３ａを解放する（制御８０４）。プロセッサ８０２のアドレスＢへのアクセス要求は、共有メモリアクセスインターフェース１０３ａが解放されているので、これを占有し共有メモリコントローラにアクセスが到着して、プロセッサＩＤ番号とアクセス先アドレスがリードモディファイライトアドレス格納レジスタの値と比較され、不一致なので、当該リード要求が処理され、リードアクセスの完了と共にインターフェース１０３ａを解放する（制御８０５）。
【００２５】
プロセッサ８０１のリードアクセス後の変更後データのライトアクセスが解放されたインターフェース１０３ａを占有して行われ、プロセッサＩＤ番号が比較され、前回のリードアクセスに続くライトアクセスだと認識され、ライト処理が行われる（制御８０６）。プロセッサ８０３のアドレスＡへのリードアクセスは、共有メモリコントローラ１０４において、リードモディファイライトアドレス格納レジスタ１０５の値と比較され、一致するため排他される（制御８０７）。
【００２６】
【発明の効果】
本発明により、共有メモリ型のマルチプロセッサシステムを用いるディスク制御装置において、複数のプロセッサが複数のアクセスインターフェースを共有メモリに対して有している場合でも共有メモリに排他制御アクセスが可能になる方法を提供し、また、共有メモリに対するリードモディファイライト処理におけるプロセッサの総合的な処理時間を減少することができる。
【図面の簡単な説明】
【図１】本発明が対象とする計算機システムの概要を示すブロック図。
【図２】従来の計算機システムの概要を示すブロック図。
【図３】本発明の一実施例でのリードモディファイライト処理用のレジスタの概要を示す説明図。
【図４】本発明の一実施例の排他制御方法を示すフローチャート。
【図５】リードモディファイライト処理の一例を示すフローチャート。
【図６】リードモディファイライト処理の一例を示すフローチャート。
【図７】リードモディファイライト時のインターフェース上の制御の流れの一例を示す説明図。
【図８】リードモディファイライト時のインターフェース上の制御の流れの一例を示す説明図。
【符号の説明】
１０１，２０１…プロセッサ（ＭＰＵ）、１０２，２０２…共有メモリアクセスインターフェースコントローラ、１０３，２０３…共有メモリアクセスインターフェース、１０４，２０４…共有メモリコントローラ、１０５…リードモディファイライトアクセスアドレス格納レジスタ、１０６，２０５…共有メモリ。
【図１】
0003965784.tif 000002
【図２】
0003965784.tif 000003
【図３】
0003965784.tif 000004
【図４】
0003965784.tif 000005
【図５】
0003965784.tif 000006
【図６】
0003965784.tif 000007
【図７】
0003965784.tif 000008
【図８】
0003965784.tif 000009