(57)【要約】【課題】メイン・プロセッサとスレーブ・プロセッサの間のデータ転送において、両者間の同期のためのオーバヘッドを減じ、処理の高速化を図る。【解決手段】メイン・プロセッサとスレーブ・プロセッサの間にある記憶装置の制御に関するもの。データの記憶媒体とデータの状態を保持する記憶媒体、及びそれらの制御論理から成る。データの状態は、初期状態、メイン・プロセッサから書き込みが成され、スレーブ・プロセッサが処理を施していない状態、スレーブ・プロセッサが処理を施した状態から成り、メイン・プロセッサが行うデータの更新は、初期状態とスレーブ・プロセッサが処理を施した状態のデータに対してのみ許可する。また、スレーブ・プロセッサによるデータの読み出しは、メイン・プロセッサから書き込みが成され、スレーブ・プロセッサが処理を施していない状態のデータに対してのみ許可する。【選択図】        なし【特許請求の範囲】
【請求項１】
複数個の処理装置と、ある処理装置から別の処理装置への該データの転送に用いる記憶装置から成るシステムにおいて、データを格納するＲＡＭ、該ＲＡＭの各データの状態を格納するＲＡＭ、及びそれらの制御論理から成る該記憶装置が、処理装置からのアクセスをアクセス対象のデータの状態に応じて許可または禁止することを特徴とするメモリ制御装置。
【請求項２】
請求項１において、データを供給する側の処理装置が行うデータ更新のためのアクセスは初期状態、及び供給されたデータを処理する側の処理装置が該データを読み終えた後の状態においてのみ許可され、また供給されたデータを処理する側の処理装置が行うデータ読み出しのためのアクセスはデータを供給する側の処理装置が該データを更新した後の状態においてのみ許可される、請求項１記載のメモリ制御装置。
【請求項３】
請求項１及び２において、データの状態は複数データ毎に保持／管理される、請求項１及び２記載のメモリ制御装置。
【請求項４】
請求項１、２及び３において、処理装置の機能がデータを供給する側と供給されたデータを実際に処理する側とに分かれ、各々その機能が固定されたものである、請求項１、２及び３記載のメモリ制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数個のプロセッサを備え、処理全体を統括するメイン・プロセッサとメイン・プロセッサから渡されたデータに対して演算処理等の実際の処理を行うスレーブ・プロセッサとに機能が分割されているマスタ／スレーブ型のマルチプロセッサ・システムにおける、マスタ・プロセッサとスレーブ・プロセッサの間に存在し、両者のデータの授受に用いられるメモリの制御に関するものである。
【０００２】
【従来の技術】
従来のマスタ／スレーブ型マルチプロセッサ・システムにおけるマスタ・プロセッサ／スレーブ・プロセッサ間のデータ転送は、セマフォ等の手法により排他制御を介して行う手法（例えば、特許文献１を参照）と割込みを伴って行う手法、及び二重のメモリを準備した上でのダブル・バッファリング手法とに大別出来る。
【０００３】
排他制御を介して行う手法は、授受するデータの所有権／制御権を表すフラグを別に設け、データ転送の前にフラグ操作を必ず行い、所有権／制御権を有するプロセッサのみがデータを操作出来るようにソフトウェア的に取り決めてデータ転送を行うものである。最初、マスタ・プロセッサはフラグを操作して所有権／制御権を獲得した上で、処理すべきデータを転送に用いるメモリ中に書き込んだ後に、再びフラグを操作して所有権／制御権を放棄する。この間スレーブ・プロセッサはフラグを監視しており、マスタ・プロセッサが所有権／制御権を放棄したことを検知すると、フラグ操作を行い所有権／制御権を獲得する。スレーブ・プロセッサはメモリ中からデータを読み出し、処理を行う。処理が終わると、再びフラグを操作して所有権／制御権を放棄する。この間マスタ・プロセッサはフラグを監視しており、スレーブ・プロセッサが所有権／制御権を放棄したことを検知すると、フラグ操作を行い所有権／制御権を獲得し、次の処理すべきデータをメモリ中に書き込む。以下、これらを全データの処理が完了するまで繰り返す。このように行うことにより、意図しないデータの書き換え等によるデータの破壊を防ぐものである。
【０００４】
割込みを伴って行う手法は、データ転送の段階毎に割込みを用いてお互いに事象の発生を通知し合うものである。最初、マスタ・プロセッサは処理すべきデータを転送に用いるメモリ中に書き込んだところでスレーブ・プロセッサに割込みを発し、スレーブ・プロセッサに対して処理を促す。スレーブ・プロセッサはメモリ中からデータを読み出して処理を施し、全てのデータ処理が完了したところでマスタ・プロセッサに割込みを発し、マスタ・プロセッサに対して処理の完了を通知する。マスタ・プロセッサは次のデータをメモリ中に書き込み、スレーブ・プロセッサに割込みを発し、スレーブ・プロセッサに対して処理を促す。以下、これらを全データの処理が完了するまで繰り返す。このように行うことにより、意図しないデータの書き換え等によるデータの破壊を防いでいる。
【０００５】
ダブル・バッファリング手法は、データ転送用のメモリを二重に設け、ある時点において一方をマスタ・プロセッサによるデータの書き込み用、もう一方をスレーブ・プロセッサによるデータの読み出し用とし、その役割を処理の進行と同期させて動的に切り替える手法である。最初、マスタ・プロセッサは処理すべきデータを一方のメモリ中に書き込む。書き込みが完了したところで何等かの方法でスレーブ・プロセッサにそのことを通知する。スレーブ・プロセッサは処理を開始する。それと並行して、マスタ・プロセッサは次に処理すべきデータをもう一方のメモリ中に書き込む。スレーブ・プロセッサは処理が完了すると、そのことをマスタ・プロセッサに通知し、またマスタ・プロセッサは書き込みが完了すると、そのことをスレーブ・プロセッサに通知する。マスタ・プロセッサは処理の完了が通知されると、次のデータを一方のメモリに書き込み、スレーブ・プロセッサはデータの書き込み完了が通知されると、一方のメモリからデータを読み出し、処理を行う。以下、これらを全データの処理が完了するまで繰り返す。このように行うことにより、意図しないデータの書き換え等によるデータの破壊を防いでいる。
【０００６】
【特許文献１】
特開平６−１９７７７号公報
【０００７】
【発明が解決しようとする課題】
しかしながら、排他制御を介して行う手法と割込みを伴って行う手法は、マスタ・プロセッサがデータを転送する期間とスレーブ・プロセッサが転送されたデータを処理する期間が分かれていることから、両プロセッサが有効な処理を行う期間は限られたものとなってしまう。また両手法の処理コストの大きさからデータ転送粒度を大きくせざるを得ず、このことが両プロセッサのアイドル率を高める結果をもたらす。即ち、両手法においてはシステム中の資源の有効活用が成されていないということが言える。
【０００８】
ダブル・バッファリング手法においては、両プロセッサの稼働率は高いものが得られるが、メモリが二重に必要となることから、高コストな手法であると言える。
【０００９】
【課題を解決するための手段】
本発明は以上のような課題を鑑みて成されたものであり、マスタ・プロセッサとスレーブ・プロセッサの間のメモリにおいて、一定量のデータ毎にアクセス履歴に関する状態を識別する手段を設け、その状態に応じてマスタ・プロセッサ、及びスレーブ・プロセッサからのアクセスを許可／禁止するように制御を行うものである。
【００１０】
【発明の実施の形態】
図１は本発明を施したシステムの構成図であり、１０１はマスタ・プロセッサ、１０２は主記憶装置、１０３は入出力インタフェース、１０４はデータ転送用記憶装置、１０５はスレーブ・プロセッサ、１０６はスレーブ・プロセッサ（１０５）用の記憶装置である。マスタ・プロセッサ（１０１）、主記憶装置（１０２）、入出力インタフェース（１０３）、及びデータ転送用記憶装置（１０４）は１０７のバスによって相互に接続され、データ転送用記憶装置（１０４）、スレーブ・プロセッサ（１０５）、記憶装置（１０６）とは１０８のバスによって接続されている。なお、入出力インタフェース（１０３）には各種の入出力機器が接続可能である。
【００１１】
図１のシステムは次のように動作する。マスタ・プロセッサ（１０１）は入出力インタフェース（１０３）を介して処理すべきデータを一旦主記憶装置（１０２）中に読み込む。これは一般的には入出力インタフェース（１０３）に備えられるＤＭＡ機能によって主記憶装置へ直接転送される。一定量のデータが主記憶装置（１０２）中に格納された時点で、マスタ・プロセッサ（１０１）はデータ転送用記憶装置（１０４）中にそれらのデータを転送する。次にマスタ・プロセッサ（１０１）はスレーブ・プロセッサ（１０５）に対して処理の開始を指示する。スレーブ・プロセッサ（１０５）はデータ転送用記憶装置（１０４）中に転送されたデータの処理を開始する。マスタ・プロセッサ（１０１）は入出力インタフェース（１０３）が主記憶装置（１０２）に転送したデータをデータ転送用記憶装置（１０４）へと転送する。これらの処理を全てのデータ、或いはデータ・ストリームの最後まで繰り返し、最後にマスタ・プロセッサ（１０１）はスレーブ・プロセッサ（１０５）に対して処理の停止を指示する。
【００１２】
図２は図１のシステム中のデータ転送用記憶装置（１０４）の内部構成図である。２０１はマスタ・プロセッサ側バス・インタフェース、２０２はスレーブ・プロセッサ側バス・インタフェース、２０３はメモリ制御論理、２０４はデータを格納するＲＡＭ、２０５はデータ・ブロック状態ＲＡＭである。マスタ・プロセッサ側バス・インタフェース（２０１）は、バス（１０７）を介して伝えられるマスタ・プロセッサ（１０１）からのアクセス要求を信号線（２０６）を介してメモリ制御論理（２０３）に伝える。アクセスの結果は、信号線（２０６）を介してメモリ制御論理（２０３）からマスタ・プロセッサ側バス・インタフェース（２０１）へと伝えられ、バス（１０７）へと伝播される。スレーブ・プロセッサ側バス・インタフェース（２０２）は、バス（１０８）を介して伝えられるスレーブ・プロセッサ（１０５）からのアクセス要求を信号線（２０７）を介してメモリ制御論理（２０３）に伝える。アクセスの結果は、信号線（２０７）を介してメモリ制御論理（２０３）からスレーブ・プロセッサ側バス・インタフェース（２０２）へと伝えられ、バス（１０８）へと伝播される。メモリ制御論理（２０３）は信号線（２０８）を介してＲＡＭ（２０４）と、信号線（２０９）を介してデータ・ブロック状態ＲＡＭ（２０５）と接続する。
【００１３】
データ転送用記憶装置（１０４）のＲＡＭ（２０４）中に格納されるデータは、一定量のデータ・ブロック毎に状態付けされ、その状態はデータ・ブロック状態ＲＡＭ（２０５）中に保持される。図３にその状態を示す。全てのデータ・ブロックの初期状態は「ｉｎｉｔｉａｌ」状態である。マスタ・プロセッサ（１０１）からの書き込みが「ｉｎｉｔｉａｌ」状態のデータ・ブロックに対して行われると「ｗｒｉｔｔｅｎ」状態へと遷移する。「ｗｒｉｔｔｅｎ」状態のデータ・ブロックをスレーブ・プロセッサ（１０５）が読み出すと「ｒｅａｄ」状態へと遷移する。マスタ・プロセッサ（１０１）による書き込みが「ｒｅａｄ」状態のデータ・ブロックに対して行われると「ｗｒｉｔｔｅｎ」状態へと遷移する。
【００１４】
図３の状態遷移に基づいて、データ転送用記憶装置（１０４）のメモリ制御論理（２０３）は以下のように動作する。マスタ・プロセッサ（１０１）からのライト・アクセスがマスタ・プロセッサ側バス・インタフェース（２０１）から伝えられると、メモリ制御論理（２０３）はアクセス対象のデータ・ブロックの状態をデータ・ブロック状態ＲＡＭ（２０５）から読み出す。アクセス対象のデータ・ブロックの状態が「ｗｒｉｔｔｅｎ」状態であった場合、このデータ・ブロックはスレーブ・プロセッサ（１０５）による処理が未完了であるためデータ・ブロックの更新を許さず、マスタ・プロセッサ（１０１）に対してはマスタ・プロセッサ側バス・インタフェース（２０１）を介してｎａｃｋを返してアクセスをターミネートすることで、ライト・アクセスを許可しないことを伝える。アクセス対象のデータ・ブロックの状態が初期状態を示す「ｉｎｉｔｉａｌ」状態、またはスレーブ・プロセッサ（１０５）による処理が済んでいることを示す「ｒｅａｄ」状態であった場合、データ・ブロックの更新を許可し、ＲＡＭ（２０４）をアクセスすることで当該データ・ブロックを更新し、同時にデータ・ブロック状態ＲＡＭ（２０５）をアクセスすることで当該データ・ブロックの状態を「ｗｒｉｔｔｅｎ」状態へ更新する。マスタ・プロセッサ（１０１）に対してはマスタ・プロセッサ側バス・インタフェース（２０１）を介してａｃｋを返してアクセスをターミネートすることで、ライト・アクセスが完了したことを伝える。図４に以上の動作フローを示す。
【００１５】
また、スレーブ・プロセッサ（１０５）からのリード・アクセスがスレーブ・プロセッサ側バス・インタフェース（２０２）から伝えられると、メモリ制御論理（２０３）はアクセス対象のデータ・ブロックの状態をデータ・ブロック状態ＲＡＭ（２０５）から読み出す。アクセス対象のデータ・ブロックの状態が「ｉｎｉｔｉａｌ」状態、または「ｒｅａｄ」状態であった場合、データ・ブロックの読み出しは許可されない。「ｉｎｉｔｉａｌ」状態であった場合は、マスタ・プロセッサ（１０１）によるデータの書き込みが成されていないからで、「ｒｅａｄ」状態であった場合は、既にそのデータ・ブロックに対する処理は終わっており、マスタ・プロセッサ（１０１）からの新たなデータの書き込みが未完であるからである。これらの場合、スレーブ・プロセッサ（１０５）に対してはスレーブ・プロセッサ側バス・インタフェース（２０２）を介してｎａｃｋを返してアクセスをターミネートすることで、リード・アクセスを許可しないことを伝える。アクセス対象のデータ・ブロックの状態が、マスタ・プロセッサ（１０１）からのデータの書き込みが行われており、かつスレーブ・プロセッサ（１０５）による処理が未完であることを示す「ｗｒｉｔｔｅｎ」状態であった場合、データ・ブロックの読み出しを許可し、ＲＡＭ（２０４）をアクセスすることで当該データ・ブロックを読み出し、同時にデータ・ブロック状態ＲＡＭ（２０５）をアクセスすることで当該データ・ブロックの状態を「ｒｅａｄ」状態へ更新する。スレーブ・プロセッサ（１０５）に対してはスレーブ・プロセッサ側バス・インタフェース（２０２）を介して、データ・ブロックと共にａｃｋを返してアクセスをターミネートすることで、処理を続行させる。図５に以上の動作フローを示す。
【００１６】
（その他の実施例）
上記の本発明の実施例は、スレーブ・プロセッサ（１０５）はマスタ・プロセッサ（１０１）から転送された各データを１度ずつ読み出すことによって処理を行うという前提に基づくものである。スレーブ・プロセッサ（１０５）がマスタ・プロセッサ（１０１）から転送された各データを複数回読み出す必要がある場合、本発明は以下のように実施される。
【００１７】
図６はスレーブ・プロセッサ（１０５）がマスタ・プロセッサ（１０１）から転送された各データを２度ずつ読む必要がある場合の、各データ・ブロックの状態遷移を示す図である。全てのデータ・ブロックの初期状態は「ｉｎｉｔｉａｌ」状態である。マスタ・プロセッサ（１０１）からの書き込みが「ｉｎｉｔｉａｌ」状態のデータ・ブロックに対して行われると「ｗｒｉｔｔｅｎ」状態へと遷移する。「ｗｒｉｔｔｅｎ」状態のデータ・ブロックをスレーブ・プロセッサ（１０５）が読み出すと「ｒｅａｄ」状態へと遷移する。「ｒｅａｄ」状態のデータ・ブロックをスレーブ・プロセッサ（１０５）が更に読み出すと「ｒｅａｄ２」状態へと遷移する。マスタ・プロセッサ（１０１）からの書き込みが「ｒｅａｄ２」状態のデータ・ブロックに対して行われると「ｗｒｉｔｔｅｎ」状態へと遷移する。
【００１８】
図６の状態遷移に基づいて、データ転送用記憶装置（１０４）のメモリ制御論理（２０３）は以下のように動作する。マスタ・プロセッサ（１０１）からのライト・アクセスがマスタ・プロセッサ側バス・インタフェース（２０１）から伝えられると、メモリ制御論理（２０３）はアクセス対象のデータ・ブロックの状態をデータ・ブロック状態ＲＡＭ（２０５）から読み出す。アクセス対象のデータ・ブロックの状態が「ｗｒｉｔｔｅｎ」状態、または「ｒｅａｄ」状態であった場合、このデータ・ブロックはスレーブ・プロセッサ（１０５）による処理が未完了であるためデータ・ブロックの更新を許さず、マスタ・プロセッサ（１０１）に対してはマスタ・プロセッサ側バス・インタフェース（２０１）を介してｎａｃｋを介してアクセスをターミネートすることで、ライト・アクセスを許可しないことを伝える。アクセス対象のデータ・ブロックの状態が初期状態を示す「ｉｎｉｔｉａｌ」状態、またはスレーブ・プロセッサ（１０５）による処理が済んでいることを示す「ｒｅａｄ２」状態であった場合、データ・ブロックの更新を許可し、ＲＡＭ（２０４）をアクセスすることで当該データ・ブロックを更新し、同時にデータ・ブロック状態ＲＡＭ（２０５）をアクセスすることで当該データ・ブロックの状態を「ｗｒｉｔｔｅｎ」状態へ更新する。マスタ・プロセッサ（１０１）に対してはマスタ・プロセッサ側バス・インタフェース（２０１）を介してａｃｋを返してアクセスをターミネートすることで、ライト・アクセスが完了したことを伝える。図７に以上の動作フローを示す。
【００１９】
また、スレーブ・プロセッサ（１０５）からのリード・アクセスがスレーブ・プロセッサ側バス・インタフェース（２０２）から伝えられると、メモリ制御論理（２０３）はアクセス対象のデータ・ブロックの状態をデータ・ブロック状態ＲＡＭ（２０５）から読み出す。アクセス対象のデータ・ブロックの状態が「ｉｎｉｔｉａｌ」状態、または「ｒｅａｄ２」状態であった場合、データ・ブロックの読み出しは許可されない。「ｉｎｉｔｉａｌ」状態であった場合は、マスタ・プロセッサ（１０１）によるデータの書き込みが成されていないからで、「ｒｅａｄ２」状態であった場合は、既にそのデータ・ブロックに対する処理は終わっており、マスタ・プロセッサ（１０１）からの新たなデータの書き込みが未完であるからである。これらの場合、スレーブ・プロセッサ（１０５）に対してはスレーブ・プロセッサ側バス・インタフェース（２０２）を介してｎａｃｋを返してアクセスをターミネートすることで、リード・アクセスを許可しないことを伝える。アクセス対象のデータ・ブロックの状態が「ｗｒｉｔｔｅｎ」状態、または「ｒｅａｄ状態」であった場合、データ・ブロックの読み出しを許可し、ＲＡＭ（２０４）をアクセスすることで当該データ・ブロックを読み出し、同時にデータ・ブロック状態ＲＡＭ（２０５）をアクセスすることで当該データ・ブロックの状態を、「ｗｒｉｔｔｅｎ」状態であった場合は「ｒｅａｄ」状態に、「ｒｅａｄ」状態であった場合には「ｒｅａｄ２」状態に更新する。スレーブ・プロセッサ（１０５）に対してはスレーブ・プロセッサ側バス・インタフェース（２０２）を介して、データ・ブロックと共にａｃｋを返してアクセスをターミネートすることで、処理を続行させる。図８に以上の動作フローを示す。
【００２０】
スレーブ・プロセッサ（１０５）が各データを読み出す回数に応じて、データ・ブロックの状態数を増やしてやることで、スレーブ・プロセッサ（１０５）がデータを任意の回数読み出す必要のあるシステムにおいても、本発明は適用出来る。
【００２１】
図９は本発明を施した別のシステムの構成図である。図１のシステムとの差異は、複数個のスレーブ・プロセッサ（９０５、９０６）が備えられる点である。そのような構成のシステムにおいても本発明は上述のものと同様に適用出来る。
【００２２】
スレーブ・プロセッサが複数個備えられる場合、それらスレーブ・プロセッサは負荷を分散する形で動作するか、機能を分散して動作するかのいずれかである。いずれにせよ、マスタ・プロセッサ（９０１）がデータ転送用記憶装置（９０４）に書き込んだデータを、どちらかのスレーブ・プロセッサ（９０５または９０６）が何度か読み出して処理を行う。データ転送用記憶装置（９０４）のメモリ制御論理（２０３）は、スレーブ・プロセッサ（９０５、９０６）が１度ずつ各データ・ブロックを読み出す場合は、図３の状態遷移図に基づいた図４と図５の動作をとり、複数回読み出す必要がある場合は、図６の状態遷移図に基づいた図７と図８の動作をとる。
【００２３】
【発明の効果】
以上のように行うことで、マスタ・プロセッサがスレーブ・プロセッサにデータを供給し、スレーブ・プロセッサがそれらデータを処理するようなシステムにおいて、マスタ・プロセッサとスレーブ・プロセッサとの間の同期のための操作を不要にし、低コストで高性能なシステムとすることが出来る。
【図面の簡単な説明】
【図１】本発明を施したシステムの構成図。
【図２】データ転送用記憶装置の内部構成図。
【図３】データ・ブロックの状態遷移図。
【図４】マスタ・プロセッサからのアクセス時の動作フロー図。
【図５】スレーブ・プロセッサからのアクセス時の動作フロー図。
【図６】データ・ブロックの状態遷移図。
【図７】マスタ・プロセッサからのアクセス時の動作フロー図。
【図８】スレーブ・プロセッサからのアクセス時の動作フロー図。
【図９】本発明を施したシステムの構成図。
【符号の説明】
１０１  マスタ・プロセッサ
１０２  主記憶装置
１０３  入出力インタフェース
１０４  データ転送用記憶装置
１０５  スレーブ・プロセッサ
１０６  記憶装置
１０７  バス
１０８  バス
２０１  マスタ・プロセッサ側バス・インタフェース
２０２  スレーブ・プロセッサ側バス・インタフェース
２０３  メモリ制御論理
２０４  ＲＡＭ
２０５  データ・ブロック状態ＲＡＭ
２０６  信号線
２０７  信号線
２０８  信号線
２０９  信号線
９０１  マスタ・プロセッサ
９０２  主記憶装置
９０３  入出力インタフェース
９０４  データ転送用記憶装置
９０５  スレーブ・プロセッサ
９０６  スレーブ・プロセッサ
９０７  記憶装置
９０８  バス
９０９  バス
【図１】
2004355434.tif 000002
【図２】
2004355434.tif 000003
【図３】
2004355434.tif 000004
【図４】
2004355434.tif 000005
【図５】
2004355434.tif 000006
【図６】
2004355434.tif 000007
【図７】
2004355434.tif 000008
【図８】
2004355434.tif 000009
【図９】
2004355434.tif 000010