(57)【特許請求の範囲】
【請求項１】
複数のプロセッサから共通にアクセスされる複数のメモリバンクに対するアクセス制御を行うマルチバンクアクセス制御装置であって、
複数の前記プロセッサに対応して１つずつ設けられ、対応する前記プロセッサから発行されたバンクアクセスに関係するコマンドを蓄積する第１の蓄積手段と、
複数の前記メモリバンクに対応して１つずつ設けられ、対応する前記メモリバンクに対するマイクロコマンドを蓄積する第２の蓄積手段と、
前記第１の蓄積手段に蓄積されたメモリアクセスコマンドを、その内容に応じて前記メモリバンクをアクセス対象とする１又は複数のマイクロコマンドに細分化し、細分化された各々のマイクロコマンドを、それがアクセス対象とする前記メモリバンクに対応する前記第２の蓄積手段へ発行する制御手段と、
前記メモリアクセスコマンドに対応する前記マイクロコマンドの発行及び終了を管理することによって、各々の前記メモリアクセスコマンドの終了を検出する第１の検出手段と、
前記第１の検出手段による検出結果に基づいて、前記第１の蓄積手段から前記制御手段へ取り込まれた同期コマンドを発行した前記プロセッサが該同期コマンドに先行して発行したメモリアクセスコマンドが、全て終了したか否かを検出する第２の検出手段とを備え、
前記第２の検出手段は、
複数の前記プロセッサに対応して１組ずつ設けられ、対応する前記プロセッサから発行され前記制御手段に取り込まれたが未だ終了していない前記メモリアクセスコマンドの個数を保持するカウンタ、及び対応する前記プロセッサから発行され前記制御手段に取り込まれたが未だ終了していない同期コマンドの有無を示すフラグを含み、
前記メモリアクセスコマンドが前記制御手段に取り込まれた場合に、該メモリアクセスコマンドを発行した前記プロセッサに対応する前記カウンタをインクリメントし、前記第１の検出手段によって前記メモリアクセスコマンドの終了が検出された場合に、該メモリアクセスコマンドを発行した前記プロセッサに対応する前記カウンタをデクリメントし、前記同期コマンドが前記制御手段に取り込まれた場合に、該同期コマンドを発行した前記プロセッサに対応する前記カウンタが初期状態でないときには、対応する前記フラグを未だ終了していない同期コマンドが有ることを示す状態にすることを特徴とするマルチバンクアクセス制御装置。
【請求項２】
前記未だ終了していない同期コマンドが有ることを示す状態にあるフラグに対応する前記カウンタがデクリメントされて初期状態になった場合には、該カウンタ及び該フラグに対応する前記プロセッサに対して当該同期コマンドに先行して発行されたメモリアクセスコマンドが全て終了した旨を通知することを特徴とする請求項１に記載のマルチバンクアクセス制御装置。
【請求項３】
前記同期コマンドが前記制御手段に取り込まれたときに、該同期コマンドを発行した前記プロセッサに対応する前記カウンタが初期状態であった場合に、該カウンタ及び該フラグに対応する前記プロセッサに対して当該同期コマンドに先行して発行されたメモリアクセスコマンドが全て終了した旨を通知することを特徴とする請求項１に記載のマルチバンクアクセス制御装置。
【請求項４】
前記未だ終了していない同期コマンドが無いことを示す状態にあるフラグに対応する前記カウンタがデクリメントされて初期状態になった場合には、該カウンタ及び該フラグに対応する前記プロセッサに対して前記通知は行わないことを特徴とする請求項１に記載のマルチバンクアクセス制御装置。
【請求項５】
前記制御手段は、前記メモリアクセスコマンドを前記マイクロコマンドに細分化するのに先立って、該メモリアクセスコマンドに割り当てるべき識別情報を取得し、細分化された前記マイクロコマンドを前記第２の蓄積手段へ発行するにあたり、該マイクロコマンドに、その元となった前記メモリアクセスコマンドに割り当てられた前記識別情報を付加し、
前記第１の検出手段は、前記マイクロコマンドに付加された前記識別情報に基づいて前記マイクロコマンドの発行及び終了を管理することによって、該識別情報を割り当てられた前記メモリアクセスコマンドの終了を検出することを特徴とする請求項１ないし４のいずれか1項に記載のマルチバンクアクセス制御装置。
【請求項６】
前記第１の検出手段は、
予め定められた個数の前記識別情報に対応するカウンタを含み、
前記マイクロコマンドが発行された場合に、該マイクロコマンドに付加された前記識別情報に対応する該カウンタをインクリメントし、前記マイクロコマンドが終了した場合に、該マイクロコマンドに付加された前記識別情報に対応する該カウンタをデクリメントし、該カウンタの値が初期状態に戻った場合に、該カウンタに対応する前記識別情報を割り当てられた前記メモリアクセスコマンドが終了したことを検出することを特徴とする請求項５に記載のマルチバンクアクセス制御装置。
【請求項７】
前記第１の検出手段は、
前記識別情報に対応する前記カウンタと対応付けて、該識別情報に対応する前記メモリアクセスコマンドを発行した前記プロセッサを特定するための情報を保持し、
前記メモリアクセスコマンドが終了したことを検出した場合に、終了が検出された該メモリアクセスに付加された前記識別情報に対応して保持されている前記プロセッサを特定するための情報を、前記第２の検出手段に通知することを特徴とする請求項６に記載のマルチバンクアクセス制御装置。
【請求項８】
前記制御手段は、所定の選択基準に従って、複数の前記第１の蓄積手段のうちからコマンドを取り込むべきものを選択することを特徴とする請求項１に記載のマルチバンクアクセス制御装置。
【請求項９】
前記制御手段は、前記識別情報が全て使用されているために取得できない間は、前記メモリアクセスコマンドに対する処理を行わないことを特徴とする請求項１に記載のマルチバンクアクセス制御装置。
【請求項１０】
複数のスレッドから共通にアクセスされる複数のメモリバンクに対するアクセス制御を行うマルチバンクアクセス制御装置であって、
複数の前記スレッドに対応して１つずつ設けられ、対応する前記スレッドから発行されたバンクアクセスに関係するコマンドを蓄積する第１の蓄積手段と、
複数の前記メモリバンクに対応して１つずつ設けられ、対応する前記メモリバンクに対するマイクロコマンドを蓄積する第２の蓄積手段と、
前記第１の蓄積手段に蓄積されたメモリアクセスコマンドを、その内容に応じて前記メモリバンクをアクセス対象とする１又は複数のマイクロコマンドに細分化し、細分化された各々のマイクロコマンドを、それがアクセス対象とする前記メモリバンクに対応する前記第２の蓄積手段へ発行する制御手段と、
前記メモリアクセスコマンドに対応する前記マイクロコマンドの発行及び終了を管理することによって、各々の前記メモリアクセスコマンドの終了を検出する第１の検出手段と、
前記第１の検出手段による検出結果に基づいて、前記第１の蓄積手段から前記制御手段へ取り込まれた同期コマンドを発行した前記スレッドが該同期コマンドに先行して発行したメモリアクセスコマンドが、全て終了したか否かを検出する第２の検出手段とを備え、
前記第２の検出手段は、
複数の前記スレッドに対応して１組ずつ設けられ、対応する前記スレッドから発行され前記制御手段に取り込まれたが未だ終了していない前記メモリアクセスコマンドの個数を保持するカウンタ、及び対応する前記スレッドから発行され前記制御手段に取り込まれたが未だ終了していない同期コマンドの有無を示すフラグを含み、
前記メモリアクセスコマンドが前記制御手段に取り込まれた場合に、該メモリアクセスコマンドを発行した前記スレッドに対応する前記カウンタをインクリメントし、前記第１の検出手段によって前記メモリアクセスコマンドの終了が検出された場合に、該メモリアクセスコマンドを発行した前記スレッドに対応する前記カウンタをデクリメントし、前記同期コマンドが前記制御手段に取り込まれた場合に、該同期コマンドを発行した前記スレッドに対応する前記カウンタが初期状態でないときには、対応する前記フラグを未だ終了していない同期コマンドが有ることを示す状態にすることを特徴とするマルチバンクアクセス制御装置。
【請求項１１】
複数のプロセッサから共通にアクセスされる複数のメモリバンクに対するアクセス制御を行うマルチバンクアクセス制御方法であって、
前記プロセッサからバンクアクセスに関係するコマンドが発行された場合に、該コマンドを、該プロセッサに対応する第１の蓄積手段に蓄積するステップと、
制御手段が、複数の前記プロセッサに対応する前記第１の蓄積手段のうちのいずれかから蓄積されたコマンドを取り込み、該コマンドがメモリアクセスコマンドである場合には、該メモリアクセスコマンドを、その内容に応じて前記メモリバンクをアクセス対象とする１又は複数のマイクロコマンドに細分化し、細分化された各々のマイクロコマンドを、それがアクセス対象とする前記メモリバンクに対応する第２の蓄積手段へ発行するステップと、
第１の検出手段が、前記メモリアクセスコマンドに対応する前記マイクロコマンドの発行及び終了を検出することによって、前記メモリアクセスコマンドの終了を検出する第1の検出ステップと、
第２の検出手段が、前記第１の検出手段による検出結果に基づいて、前記第２の蓄積手段から前記制御手段へ取り込まれた同期コマンドを発行した前記プロセッサが該同期コマンドに先行して発行したメモリアクセスコマンドが、全て終了したか否かを検出する第２の検出ステップとを有し、
前記第２の検出手段は、複数の前記プロセッサに対応して１組ずつ設けられ、対応する前記プロセッサから発行され前記制御手段に取り込まれたが未だ終了していない前記メモリアクセスコマンドの個数を保持するカウンタ、及び対応する前記プロセッサから発行され前記制御手段に取り込まれたが未だ終了していない同期コマンドの有無を示すフラグを含むものであり、
前記第２の検出ステップにおいて前記第２の検出手段は、前記メモリアクセスコマンドが前記制御手段に取り込まれた場合に、該メモリアクセスコマンドを発行した前記プロセッサに対応する前記カウンタをインクリメントし、前記第１の検出手段によって前記メモリアクセスコマンドの終了が検出された場合に、該メモリアクセスコマンドを発行した前記プロセッサに対応する前記カウンタをデクリメントし、前記同期コマンドが前記制御手段に取り込まれた場合に、該同期コマンドを発行した前記プロセッサに対応する前記カウンタが初期状態でないときには、対応する前記フラグを未だ終了していない同期コマンドが有ることを示す状態にすることを特徴とするマルチバンクアクセス制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のプロセッサあるいは複数のスレッドから共通にアクセスされる複数のメモリバンクに対するアクセス制御を行うマルチバンクアクセス制御装置及びマルチバンクアクセス制御方法に関する。
【０００２】
【従来の技術】
マルチプロセッサシステムにおいて複数のプロセッサからアクセスされるメモリは、高速化のために複数バンクを同時にアクセスするのが一般的である。例えば、あるプロセッサからメモリがアクセスされる場合、プロセッサからのアクセスは各バンクへのアクセスに分解され、各バンクがそれぞれ独立にアクセスされる。プロセッサからのアクセスは、キャッシュミスなどの比較的短いデータをアクセスする場合と、ＤＭＡなどで比較的長いデータをアクセスする場合がある。また、アドレスによるバンクの割り当ては、連続したアドレスが複数のバンクにまたがってアクセスされ、バンド幅が大きくとれるようにインターリーブして割り当てられるのが一般的である。
【０００３】
【発明が解決しようとする課題】
各プロセッサから複数のメモリアクセスが発生する場合、他のプロセッサからの要求とバンクが衝突するために、必ずしもメモリのアクセス順序がプロセッサから発行された順序で終了するとは限らない。しかしながら、メモリのアクセスが終わったことを知る何らかの方法がなければ、これらのメモリアクセスの結果を使った命令を実行することができない。
【０００４】
そこで、メモリアクセスが必ず発行順に終了するように、メモリアクセスの実行に制限をかける方法があるが、この方法では、メモリアクセス自体の処理効率が低下し、プロセッサのパフォーマンスを低下させる問題点があった。
【０００５】
また、制限をかけないためには、全てのメモリアクセスについて、例えばバンクアクセスが終了したときなどに割り込みを発生させて、終了を検知する必要がある。しかし、この割り込みを用いる方法でも、各メモリアクセスが終了するごとに割り込みが発生するので、プロセッサのパフォーマンスを低下させる問題点があった。
【０００６】
本発明は、上記事情を考慮してなされたもので、効率良いマルチバンクアクセスを実現するとともに、必要に応じてメモリアクセスコマンドの終了を検知することを可能とするマルチバンクアクセス制御装置及びマルチバンクアクセス制御方法を提供することを目的とする。
【０００７】
【課題を解決するための手段】
本発明は、複数のプロセッサから共通にアクセスされる複数のメモリバンクに対するアクセス制御を行うマルチバンクアクセス制御装置であって、複数の前記プロセッサに対応して１つずつ設けられ、対応する前記プロセッサから発行されたバンクアクセスに関係するコマンドを蓄積する第１の蓄積手段と、複数の前記メモリバンクに対応して１つずつ設けられ、対応する前記メモリバンクに対するマイクロコマンドを蓄積する第２の蓄積手段と、前記第１の蓄積手段に蓄積されたメモリアクセスコマンドを、その内容に応じて前記メモリバンクをアクセス対象とする１又は複数のマイクロコマンドに細分化し、細分化された各々のマイクロコマンドを、それがアクセス対象とする前記メモリバンクに対応する前記第２の蓄積手段へ発行する制御手段と、前記メモリアクセスコマンドに対応する前記マイクロコマンドの発行及び終了を管理することによって、各々の前記メモリアクセスコマンドの終了を検出する第１の検出手段と、前記第１の検出手段による検出結果に基づいて、前記第１の蓄積手段から前記制御手段へ取り込まれた同期コマンドを発行した前記プロセッサが該同期コマンドに先行して発行したメモリアクセスコマンドが、全て終了したか否かを検出する第２の検出手段とを備え、前記第２の検出手段は、複数の前記プロセッサに対応して１組ずつ設けられ、対応する前記プロセッサから発行され前記制御手段に取り込まれたが未だ終了していない前記メモリアクセスコマンドの個数を保持するカウンタ、及び対応する前記プロセッサから発行され前記制御手段に取り込まれたが未だ終了していない同期コマンドの有無を示すフラグを含み、前記メモリアクセスコマンドが前記制御手段に取り込まれた場合に、該メモリアクセスコマンドを発行した前記プロセッサに対応する前記カウンタをインクリメントし、前記第１の検出手段によって前記メモリアクセスコマンドの終了が検出された場合に、該メモリアクセスコマンドを発行した前記プロセッサに対応する前記カウンタをデクリメントし、前記同期コマンドが前記制御手段に取り込まれた場合に、該同期コマンドを発行した前記プロセッサに対応する前記カウンタが初期状態でないときには、対応する前記フラグを未だ終了していない同期コマンドが有ることを示す状態にすることを特徴とする。
【０００８】
好ましくは、前記制御手段は、前記メモリアクセスコマンドを前記マイクロコマンドに細分化するのに先立って、該メモリアクセスコマンドに割り当てるべき識別情報を取得し、細分化された前記マイクロコマンドを前記第２の蓄積手段へ発行するにあたり、該マイクロコマンドに、その元となった前記メモリアクセスコマンドに割り当てられた前記識別情報を付加し、前記第１の検出手段は、前記マイクロコマンドに付加された前記識別情報に基づいて前記マイクロコマンドの発行及び終了を管理することによって、該識別情報を割り当てられた前記メモリアクセスコマンドの終了を検出するようにしてもよい。
【００１０】
また、本発明は、複数のスレッドから共通にアクセスされる複数のメモリバンクに対するアクセス制御を行うマルチバンクアクセス制御装置であって、複数の前記スレッドに対応して１つずつ設けられ、対応する前記スレッドから発行されたバンクアクセスに関係するコマンドを蓄積する第１の蓄積手段と、複数の前記メモリバンクに対応して１つずつ設けられ、対応する前記メモリバンクに対するマイクロコマンドを蓄積する第２の蓄積手段と、前記第１の蓄積手段に蓄積されたメモリアクセスコマンドを、その内容に応じて前記メモリバンクをアクセス対象とする１又は複数のマイクロコマンドに細分化し、細分化された各々のマイクロコマンドを、それがアクセス対象とする前記メモリバンクに対応する前記第２の蓄積手段へ発行する制御手段と、前記メモリアクセスコマンドに対応する前記マイクロコマンドの発行及び終了を管理することによって、各々の前記メモリアクセスコマンドの終了を検出する第１の検出手段と、前記第１の検出手段による検出結果に基づいて、前記第１の蓄積手段から前記制御手段へ取り込まれた同期コマンドを発行した前記スレッドが該同期コマンドに先行して発行したメモリアクセスコマンドが、全て終了したか否かを検出する第２の検出手段とを備え、前記第２の検出手段は、複数の前記スレッドに対応して１組ずつ設けられ、対応する前記スレッドから発行され前記制御手段に取り込まれたが未だ終了していない前記メモリアクセスコマンドの個数を保持するカウンタ、及び対応する前記スレッドから発行され前記制御手段に取り込まれたが未だ終了していない同期コマンドの有無を示すフラグを含み、前記メモリアクセスコマンドが前記制御手段に取り込まれた場合に、該メモリアクセスコマンドを発行した前記スレッドに対応する前記カウンタをインクリメントし、前記第１の検出手段によって前記メモリアクセスコマンドの終了が検出された場合に、該メモリアクセスコマンドを発行した前記スレッドに対応する前記カウンタをデクリメントし、前記同期コマンドが前記制御手段に取り込まれた場合に、該同期コマンドを発行した前記スレッドに対応する前記カウンタが初期状態でないときには、対応する前記フラグを未だ終了していない同期コマンドが有ることを示す状態にすることを特徴とする。
【００１１】
また、本発明は、複数のプロセッサから共通にアクセスされる複数のメモリバンクに対するアクセス制御を行うマルチバンクアクセス制御方法であって、前記プロセッサからバンクアクセスに関係するコマンドが発行された場合に、該コマンドを、該プロセッサに対応する第１の蓄積手段に蓄積するステップと、制御手段が、複数の前記プロセッサに対応する前記第１の蓄積手段のうちのいずれかから蓄積されたコマンドを取り込み、該コマンドがメモリアクセスコマンドである場合には、該メモリアクセスコマンドを、その内容に応じて前記メモリバンクをアクセス対象とする１又は複数のマイクロコマンドに細分化し、細分化された各々のマイクロコマンドを、それがアクセス対象とする前記メモリバンクに対応する第２の蓄積手段へ発行するステップと、第１の検出手段が、前記メモリアクセスコマンドに対応する前記マイクロコマンドの発行及び終了を検出することによって、前記メモリアクセスコマンドの終了を検出する第1の検出ステップと、第２の検出手段が、前記第１の検出手段による検出結果に基づいて、前記第２の蓄積手段から前記制御手段へ取り込まれた同期コマンドを発行した前記プロセッサが該同期コマンドに先行して発行したメモリアクセスコマンドが、全て終了したか否かを検出する第２の検出ステップとを有し、
前記第２の検出手段は、複数の前記プロセッサに対応して１組ずつ設けられ、対応する前記プロセッサから発行され前記制御手段に取り込まれたが未だ終了していない前記メモリアクセスコマンドの個数を保持するカウンタ、及び対応する前記プロセッサから発行され前記制御手段に取り込まれたが未だ終了していない同期コマンドの有無を示すフラグを含むものであり、前記第２の検出ステップにおいて前記第２の検出手段は、前記メモリアクセスコマンドが前記制御手段に取り込まれた場合に、該メモリアクセスコマンドを発行した前記プロセッサに対応する前記カウンタをインクリメントし、前記第１の検出手段によって前記メモリアクセスコマンドの終了が検出された場合に、該メモリアクセスコマンドを発行した前記プロセッサに対応する前記カウンタをデクリメントし、前記同期コマンドが前記制御手段に取り込まれた場合に、該同期コマンドを発行した前記プロセッサに対応する前記カウンタが初期状態でないときには、対応する前記フラグを未だ終了していない同期コマンドが有ることを示す状態にすることを特徴とする。
【００１２】
なお、装置に係る本発明は方法に係る発明としても成立し、方法に係る本発明は装置に係る発明としても成立する。
【００１３】
本発明では、メモリアクセスコマンドの終了を、該メモリアクセスコマンドに対応するマイクロコマンドの発行・終了を管理することによって、検出するとともに、各プロセッサ（スレッド）ごとに、未終了のメモリアクセスコマンドの数と未終了の同期コマンドの有無を管理することによって、同期コマンドを発行したプロセッサが該同期コマンドに先行して発行したメモリアクセスコマンドが、全て終了したか否かを検出する。これによって、メモリアクセスとそれを使用するコマンドの順序関係を保証することができるようになる。この結果、プロセッサのパフォーマンスを向上させることができる。
【００１４】
【発明の実施の形態】
以下、図面を参照しながら発明の実施の形態を説明する。
【００１５】
本実施形態では、マルチプロセッサシステムを例に説明するが、複数のプロセッサの代わりに、マルチスレッドプロセッサシステム（例えば、複数のスレッドに制御される複数のＤＭＡコントローラを持つシステム）にも本発明を適用することが可能である。
【００１６】
本実施形態では、プロセッサからのメモリアクセスコマンドが複数存在するときに、それらのメモリアクセスが終了したときのみ後続するコマンド（命令）を実行できる同期コマンド（ＳＹＮＣコマンド）を導入する。また、この同期コマンドを実現するために、プロセッサごとに同期用の同期カウンタを設け、同期カウンタはメモリアクセスコマンドが発行されるとインクリメントされ、対応する応答が返ってくるとデクリメントされ、０になったら同期コマンドを通過できるようにプロセッサが制御される。従って、プロセッサからのメモリアクセスコマンドが複数存在するときに、従来のような全コマンドに対する割り込み処理によらなくても、メモリアクセスとそれを使用する命令（後続するコマンド）の順序関係を保証することができるようになる。これによって、プロセッサのパフォーマンスを向上させることができる。
【００１７】
図１に、本発明の一実施形態に係るマルチプロセッサシステムの構成例を示す。図１に示されるように、本実施形態のマルチプロセッサシステムでは、ｍ個（ｍは複数、図１はｍ＝４の例）のプロセッサ（Ｐｒｏｃｅｓｓｏｒ）１と、メモリコントローラ（Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒ）２とが、バス（Ｂｕｓ）３で接続され、メモリコントローラ２は、ｎ個（ｎは複数、図１はｎ＝４の例）のメモリバンク（ｂａｎｋ）４へのアクセスを制御する。
【００１８】
なお、図１の例では、プロセッサ数とバンク数とが同じになっているが、もちろん、プロセッサ数とバンク数とが異なってもよい。
【００１９】
また、メモリバンクと実メモリ（例えばメモリチップあるいはメモリユニット）とはどのような関係であっても構わない。例えば、図２（ａ）に例示するように、全バンクを、１つのメモリを複数の領域に分割したものに対応させるようにしてもよいし、図２（ｂ）に例示するように、一部のバンクを、１つのメモリを複数の領域に分割したものに対応させるようにしてもよいし、図２（ｃ）に例示するように、１つのバンクを、複数のメモリに対応させるようにしてもよい。また、バンクとメモリとの対応関係が、バンク毎あるいはメモリ毎に異なっていてもよい。
【００２０】
図３に、本発明の一実施形態に係るメモリコントローラ２の構成例を示す。図３に示されるように、本実施形態のメモリコントローラ２は、バスインタフェース（Ｂｕｓ  Ｉｎｔｅｒｆａｃｅ）２１、各プロセッサ１に対応して設けられるｍ個（ｍは複数、図３はｍ＝４の例）のコマンドキュー（Ｃｏｍｍａｎｄ  Ｑｕｅｕｅ）２２、インターリーブユニット（Ｉｎｔｅｒｌｅａｖｅ  Ｕｎｉｔ）２３、各メモリバンク２に対応して設けられるｎ個（ｎは複数、図３はｎ＝４の例）バンクキュー（Ｂａｎｋ  Ｑｕｅｕｅ）２４、データバッファ（Ｄａｔａ  Ｂｕｆｆｅｒ）２５、終了コントローラ（Ｃｏｍｐｌｅｔｉｏｎ  Ｃｏｎｔｒｏｌｌｅｒ）２６、同期コントローラ（ＳＹＮＣ  Ｃｏｎｔｒｏｌｌｅｒ）２７を含む。
【００２１】
図３のコマンドキュー（０）〜（３）は、それぞれ、図１のプロセッサ（０）〜（３）に対応している。また、図３のバンクキュー（０）〜（３）は、それぞれ、図１のメモリバンク（０）〜（３）に対応している。
【００２２】
さて、各プロセッサ１からのメモリアクセスコマンドは、当該プロセッサに対応するコマンドキュー２２に、バスインタフェース２１を経由して投入される。図１及び図３の例では、プロセッサ（０）からのメモリアクセスコマンドは、当該プロセッサ（０）に対応するコマンドキュー（０）に投入される。同様に、プロセッサ（１）〜（３）からのメモリアクセスコマンドは、それぞれ、対応するコマンドキュー（１）〜（３）に投入される。
【００２３】
なお、各プロセッサ（ｉ）からの同期コマンドも、当該プロセッサ（ｉ）に対応するコマンドキュー（ｉ）に入れられる。
【００２４】
各々のコマンドキュー２２内では、コマンドは、プロセッサ１が発行した順序で保持され、その順序でインターリーブユニット２３に取り込まれる（すなわち、ＦＩＦＯとする）。
【００２５】
インターリーブユニット２３は、コマンドキュー２２を１つ選択し、その先頭のコマンドを取り込み、該コマンドがメモリアクセスコマンドか同期コマンドかによって、それに応じた処理を行う。コマンドキュー２２は、例えば、ラウンド・ロビン方式で順番に選択していってもよい（空のコマンドキュー２２はスキップする）。また、例えば、コマンドキュー２２に優先順位を付し該順位の高いものから優先的に選択する方法や、ランダムに選択する方法など、他の方法も可能である。
【００２６】
なお、インターリーブユニット２３は、まず、候補とするコマンドキュー２２を選択し、そのコマンドキュー２２にコマンドが保持されていればその先頭のコマンドを取り込み、そのコマンドキュー２２にコマンドが保持されていれば次の候補を選択するという手順にしてもよいし、まず、コマンドを保持しているコマンドキュー２２を調べ（これは、コマンドキュー２２にコマンドを保持しているか問い合わせをして返答を受けるなどの能動的な形態であってもよいし、コマンドを保持したコマンドキュー２２から通知を受けるなどの受動的な形態であってもよい）、それらのうちから１つを選択し、その先頭のコマンドを取り込むという手順にしてもよいし、その他の方法も可能である。
【００２７】
インターリーブユニット２３は、各プロセッサ１から発行されたメモリアクセスコマンドに対しては、該メモリアクセスコマンドをバンクごとに分けたコマンド（マイクロコマンド）に細分化する働きをする（なお、幾つのマイクロコマンドが生成されるかは、メモリアクセスコマンドに応じて異なる（１つのこともあり得る））。
【００２８】
ただし、本実施形態では、１つのメモリアクセスコマンドに属する全マイクロコマンドに対し該メモリアクセスコマンドに割り当てた識別番号（後述）を付して各、マイクロコマンドが属するメモリアクセスコマンドを特定するが、識別番号には上限があるので、識別番号に空きがあって初めて、メモリアクセスコマンドを、マイクロコマンドに細分化することができる。識別番号は、終了コントローラ２６から与えられる（例えば、終了コントローラ２６に識別番号を要求し、空きがあれば識別番号が返され、空きがなければその旨が返される）。
【００２９】
生成されたマイクロコマンドは、当該マイクロコマンドがアクセスすべきメモリバンク４に対応するバンクキュー２４に発行される。
【００３０】
例えば、図１及び図３の例で１バンクにて連続する１２８バイトのアクセスをサポートする構成を採用した場合において、プロセッサ（１）から、「メモリ・アドレス“０ｘ１０００”〜“０ｘ１ｆｆｆ”の４０９６バイトを、プロセッサ（１）に転送する」というメモリアクセスコマンドが来たとすると、４０９６／１２８＝３２個のマイクロコマンドが発行される。そして、３２個のマイクロコマンドは、それぞれが割り当てられた１つのバンクをアクセスするため、該当するバンクキュー２４に発行される（例えば、バンクキュー（０）〜（３）にはそれぞれ８つずつのマイクロコマンドが入れられる）。
【００３１】
各々のバンクキュー２４内では、マイクロコマンドは、投入された発行で保持され、その順序でメモリバンク４に発行される（すなわち、ＦＩＦＯとする）。
【００３２】
なお、各々のバンクキュー２４内では、同一のプロセッサ１が発行した異なるメモリアクセスコマンドに属するマイクロコマンドが混在し得るだけでなく、異なるプロセッサ１が発行したメモリアクセスコマンドに属するマイクロコマンドも混在し得る。
【００３３】
ところで、アドレスの割付には種々の方法が可能であるが、例えば、上記の例では、連続したアドレスで複数のバンクからアクセスし、スループットを発揮するためにバンクのインターリーブを行うために、一例として、次のようなアドレスの割付が考えられる。１回のバンクアクセスで１２８バイトのデータをサポートしていると仮定して、アドレスの第０ビットから第６ビットまでの７ビットが、１２８バイト中のオフセット（１２８バイト中のどの１バイトか）を示し、第８ビットと第７ビットの２ビットが、４つのバンクのうちのどのバンクかを示し、第９ビットから第３１ビットの２３ビットが、当該バンク内のどの１２８バイトかを示している。また、この例では、第８ビットと第７ビットの２ビットは、マイクロコマンドをインタリーブユニット２３からバンクキュー２４へ投入する際に該当するバンクキュー２４の選択のために参照され、第９ビットから第３１ビットの２３ビットが実際のバンクアクセスの際にメモリバンク内の該当する１２８バイトを選択するために参照される（なお、この例では、第０ビットから第６ビットまでの７ビットは、プロセッサ内で使用するフィールドである）。
【００３４】
バンクキュー２４からそれぞれ対応するメモリバンク４に発行されたマイクロコマンドは、メモリバンク４をアクセスし、リード（Ｒｅａｄ）アクセスのときは、該当アドレスのデータがメモリバンク４からデータバッファ２５に書き込まれ、ライト（Ｗｒｉｔｅ）アクセスのときは、書き込むべきデータがデータバッファ２５からメモリバンク４に書き込まれる。データバッファ２５は、バスインタフェース２１を経由してバス、プロセッサ１との間でデータの受け渡しを行う。
【００３５】
メモリバンク４からのリードについては、コマンドキュー２２からインターリーブユニット２３へコマンドが発行されるとき、該コマンドには対応するプロセッサ１のプロセッサ番号が付される。また、インターリーブユニット２３からバンクキュー２４へマイクロコマンドが発行されるとき、該マイクロコマンドには対応するプロセッサ１のプロセッサ番号及びそれが属するメモリアクセスコマンドに対応する識別番号が付される。さらに、メモリバンク４からの応答（例えば、１２８バイトデータ）をデータバッファ２５から返すときに、該データには対応するプロセッサ１のプロセッサ番号及び応答しているアドレスが付加され、プロセッサ側でどのパケットを受け取るべきかを識別できる。
【００３６】
メモリバンク４へのライトについては、上記と同様に、コマンドキュー２２からインターリーブユニット２３へコマンドが発行されるとき、該コマンドには対応するプロセッサ１のプロセッサ番号が付され、インターリーブユニット２３からバンクキュー２４へマイクロコマンドが発行されるとき、該マイクロコマンドには対応するプロセッサ１のプロセッサ番号及び識別番号が付される。また、インターリーブユニット２３からバンクキュー２４へマイクロコマンドが発行されるとき、対応するプロセッサ１のプロセッサ番号及びアドレスがライトリクエスト（Ｗｒｉｔｅ  Ｒｅｑｕｅｓｔ）としてバスインタフェース２１を介してバス３に送出され、該当するプロセッサ１は書き込むべきデータをバス３に送出する。この書き込むべきデータは、バスインタフェース２１を介してデータバッファ２５に入れられる。
【００３７】
各プロセッサ１がデータを送出するタイミングをどの時点にするかについては、例えば、プロセッサ１がコマンドを送る時点とする方法がある。また、例えば、インターリーブユニット２３からバンクキュー２４にマイクロコマンドを発行する時点とする方法もある。後者の方法は、前者の方法に比べて、データバッファ２５のメモリ量を減らすことができる。
【００３８】
バンクキュー２４から各メモリバンク４に書き込み命令が出るときに、データバッファ２５から対応するデータが出力される。
【００３９】
なお、データバッファ２５には、バンクキュー２４に対応するライト用のバッファを設けるようにすると好ましい。
【００４０】
図４に、インターリーブユニット２３の処理手順の一例を示す。
【００４１】
インターリーブユニット２３は、空でないコマンドキュー２２があるかどうかをチェックしている（ステップＳ１）。
【００４２】
空でないコマンドキュー２２があるならば（ステップＳ１）、空でないコマンドキュー２２を１つ選択する（ステップＳ２）。
【００４３】
選択したコマンドキュー２２の先頭に保持されているコマンドが同期コマンドである場合には（ステップＳ３）、同期カウンタへの通知を行い（ステップＳ４）、ステップＳ１に戻り、処理を続ける。
【００４４】
選択したコマンドキュー２２の先頭に保持されているコマンドがメモリアクセスコマンドである場合には（ステップＳ３）、メモリアクセスコマンドに割り当てる識別番号に空きがなければ（ステップＳ５）、ステップＳ１に戻り、処理を続ける。
【００４５】
メモリアクセスコマンドに割り当てる識別番号に空きがあれば（ステップＳ５）、選択したコマンドキュー２２の先頭のコマンドを取り出す（ステップＳ６）。そして、取り出したメモリアクセスコマンドに基づいて、マイクロコマンドを生成し、生成したマイクロコマンドを、該当するバンクキュー２４に投入する（ステップＳ７）。また、当該メモリアクセスコマンドについての同期コントローラ２７への通知を行う（ステップＳ７）。また、当該メモリアクセスコマンドから生成されたマイクロコマンドについての終了コントローラ２６への通知を行う（ステップＳ７）。そして、ステップＳ１に戻り、処理を続ける。
【００４６】
前述したように、プロセッサ１からのメモリアクセスのコマンドは、複数のマイクロコマンドに分解される。そして、本実施形態では、各プロセッサ１からの各メモリアクセスコマンドの終了を検知するため、当該メモリアクセスコマンドに属する全マイクロコマンドの生成・終了を管理する終了コントローラ２６と、１つの同期コマンドに対する全メモリアクセスコマンドが終了したこと検知し、当該同期コマンドが終了してこれを通過可能である旨を該当するプロセッサ１に通知するための同期コントローラ２７を設けている。
【００４７】
まず、同期コントローラ２７について説明する。
【００４８】
図５に、本実施形態の同期コントローラ２７の構成例を示す。図５に示されるように、本同期コントローラ２７は、アウトプットデコーダ（Ｏｕｔｐｕｔ  Ｄｅｃｏｄｅｒ）２７１、各プロセッサ１に対応して設けられるｍ個（ｍは複数、図５はｍ＝４の例）の同期カウンタ（ＳＹＮＣ  Ｃｏｕｎｔｅｒ）２７２及び同期ビット（ＳＹＮＣ  Ｂｉｔ）２７３、インプットデコーダ（Ｉｎｐｕｔ  Ｄｅｃｏｄｅｒ）２７４を含む。
【００４９】
図５の同期カウンタ（０）〜（３）は、それぞれ、図１のプロセッサ（０）〜（３）に対応している。また、図５の同期ビット（０）〜（３）は、それぞれ、図１のプロセッサ（０）〜（３）に対応している。
【００５０】
ここでは、図１のプロセッサ（０）に対応する図３の同期カウンタ（０）及び同期ビット（０）を例にとって説明する。
【００５１】
同期コントローラ２７においては、インターリーブユニット２３から、プロセッサ（０）からの１つのメモリアクセスコマンドが新たに通知されると、同期コントローラ２７の該プロセッサ（０）に対応する同期カウンタ（０）はインクリメントされる。また、終了コントローラ２６でプロセッサ（０）からの１つのメモリアクセスコマンドの終了が検出されると、該同期カウンタ（０）はデクリメントされる。
【００５２】
一方、同期コマンドがインターリーブユニット２３に入ると、同期ビット（０）がセットされる（例えば、１になる）。
【００５３】
同期コマンドに先行するメモリアクセスコマンドがすべて終了した旨（すなわち当該同期コマンドが終了した旨）の該当するプロセッサ１への通知は、次のような条件で行われる。
・同期カウンタ（０）のカウンタ値が０の状態において、同期コマンドがコマンドキュー（０）からインターリーブユニット２３に出たときは、プロセッサ（０）に、当該同期コマンドに対応するメモリアクセスコマンドがすべて終了したことを通知する。このとき、同期ビット（０）は、セットしない（なお、一旦セットし直ちに通知条件の成立を検知しそして直ちにリセットするようにしてもよい）。
・同期ビット（０）が１の状態において、（メモリアクセスコマンドが終了し）同期カウンタ（０）の値が０になったときは、プロセッサ（０）に、当該同期コマンドに対応するメモリアクセスコマンドがすべて終了したことを通知し、同期ビット（０）をリセットする（例えば、０にする）。
・同期ビット（０）が０の状態において、（メモリアクセスコマンドが終了し）同期カウンタ（０）の値が０になったときは、プロセッサには通知しない。
【００５４】
以上、プロセッサ（０）を例にとって説明したが、他のプロセッサについても同様である。
【００５５】
ところで、プロセッサ１側での同期コマンドの扱いには、種々の方法があるが、例えば、プロセッサ１は、同期コマンドをメモリコントローラ２（のコマンドキュー２２）に送った際に、ビジーウェイト状態になり、メモリコントローラ２（の同期コントローラ２７）から同期コマンド終了の応答が返ってた際に、ビジーウェイト状態を解除するようにしてもよい。また、例えば、同期コマンドの終了について、割り込みを用いるようにしてもよい（従来は、すべてのコマンドについて割り込みを用いる必要があったが、本実施形態では、同期コマンドについてのみ割り込みを用いればよい）。
また、マルチスレッドプロセッサの場合には、同期コマンドでスレッドの切り替えを行ってもよい。この場合、例えば、同期コマンドを実行したスレッドを待避させ、同期コントローラから同期コマンド終了の応答が返ってきた際に、該応答に対応する同期コマンドを実行したスレッドを、復帰させる（あるいは、復帰可能な状態にする）。
【００５６】
例えば、プロセッサ（０）が実行するプログラムが次のようであったとする。
：
ＤＭＡコマンド１
ＤＭＡコマンド２
同期コマンド
ＤＭＡコマンド３
：
この例では、ＤＭＡコマンド１とＤＭＡコマンド２の両方が終了した後に、ＤＭＡコマンド３を実行させるため、ＤＭＡコマンド１及びＤＭＡコマンド２とＤＭＡコマンド３の間で同期コマンドが記述されている。この場合、ＤＭＡコマンド１とＤＭＡコマンド２が終了され（かつ同期コマンドが発行され）た後に、メモリコントローラ２から該当するプロセッサ１へ同期コマンド終了が通知される。
【００５７】
通知を受けたプロセッサ１では、例えば、ビジーウェイト状態が解除され、ＤＭＡコマンド３が実行されることになる。
【００５８】
また、マルチスレッドプロセッサの場合には、同期コマンドを実行したスレッドが、復帰可能となり、復帰された後に、ＤＭＡコマンド３が実行されることになる。
【００５９】
図６に、同期コントローラ２７における通知を受けたときの同期カウンタ２７２又は同期ビット２７３に対する処理手順の一例を示す。
【００６０】
同期コントローラ２７は、インターリーブユニット２３または終了コントローラ２６から通知があったかどうかをチェックしている（ステップＳ１１）。
【００６１】
通知があった場合に（ステップＳ１１）、該通知がインターリーブユニット２３からのメモリアクセスコマンドの発行の通知であるならば（ステップＳ１２）、通知に係るプロセッサ１に対応する同期カウンタ２７２をインクリメントし（ステップＳ１３）、ステップＳ１１に戻り、処理を続ける。
【００６２】
該通知が終了コントローラ２６からのメモリアクセスコマンドの終了の通知であるならば（ステップＳ１２）、通知に係るプロセッサ１に対応する同期カウンタ２７２をデクリメント（ステップＳ１４）し、ステップＳ１１に戻り、処理を続ける。
【００６３】
該通知がインターリーブユニット２３からの同期コマンドの通知であるときは（ステップＳ１２）、通知に係るプロセッサ１に対応する同期カウンタ２７２の値が１以上ならば（ステップＳ１５）、通知に係るプロセッサ１に対応する同期フラグ２７３をセットし（ステップＳ１６）、ステップＳ１１に戻り、処理を続ける。対応する同期カウンタの値が０ならば（ステップＳ１５）、対応する同期フラグ２７３をセットせずに、ステップＳ１１に戻り、処理を続ける。
【００６４】
図７に、同期コントローラ２７からプロセッサへの通知に関する処理手順の一例を示す。
【００６５】
同期コントローラ２７は、同期カウンタ２７２又は同期ビット２７３の状態が変化したかどうかおよび同期コマンドの通知を受けたかどうか（イベントの発生）をチェックしている（ステップＳ２１）。
【００６６】
もし、あるプロセッサ１に対応する同期カウンタ２７２の値が０のときに、該プロセッサ１からの同期コマンドの通知を受けたならば（ステップＳ２２）、プロセッサ１への通知を行い（ステップＳ２３）、ステップＳ２１に戻り、処理を続ける。
【００６７】
もし、あるプロセッサ１に対応する同期ビットがセットされているときに、該プロセッサ１に対応する同期カウンタが０になったならば（ステップＳ２４）、プロセッサ１への通知を行うとともに、該同期ビット２７３をリセットし（ステップＳ２３）、ステップＳ２１に戻り、処理を続ける。
【００６８】
その他のイベントであった場合には、何もしない（ステップＳ２１に戻り、処理を続ける）。
【００６９】
なお、図６において、ステップＳ１２で同期コマンドの通知であった場合には、対応する同期カウンタ２７２の値にかかわらずに、対応する同期フラグ２７３をセットするようにしてもよい。この場合には、図７のステップＳ２２／Ｓ２３では、あるプロセッサ１に対応する同期カウンタ２７２の値が０のときに、対応する同期フラグ２７３がセットされたならば（ステップＳ２２）、プロセッサ１への通知を行うとともに、該同期ビット２７３をリセットするようにすればよい（この場合、ステップＳ２１では、同期カウンタ２７２又は同期ビット２７３の状態が変化したかどうかをチェックし、同期コマンドの通知を受けたかどうかはチェックしない）。
【００７０】
次に、終了コントローラ２６について説明する。
【００７１】
インターリーブユニット２３では、メモリアクセスコマンドをマイクロコマンドに分解し、複数のプロセッサ１からのマイクロコマンドがバンクキュー２４で競合するので、マイクロコマンドの終了順序は、インターリーブユニット２３からの発行順序とは一般的には異なることになる（結果的に同じになることもある）。終了コントローラ２６では、１つのメモリアクセスコマンドに対応する複数のマイクロコマンドがすべて終了した場合に、当該１つのメモリアクセスコマンドが終了したとして、同期コントローラ２７に通知する。
【００７２】
図８に、本実施形態の終了コントローラ２６の構成例を示す。図８に示されるように、本終了コントローラ２６は、第１のデコーダ（Ｄｅｃｏｄｅｒ＿Ａ）２６１、ｋ個（ｋは複数、図８の例ではＫ＝６）のマイクロカウンタ（ＭｉｃｒｏＣｏｕｎｔ）２６２及びプロセッサ番号保持部（Ｐｒｏｃ  Ｎｕｍ）２６３、第２のデコーダ（Ｄｅｃｏｄｅｒ＿Ｂ）２６４を含む。
【００７３】
まず、メモリアクセスコマンドがインターリーブユニット２３でマイクロコマンドに分解されるとき、デコーダ（Ｄｅｃｏｄｅｒ＿Ａ）２６１が識別番号を発行する。識別番号は、図８のマイクロカウンタ／プロセッサ番号保持部毎に固有に割り当てらたものであり、例えば、マイクロカウンタ（０）／プロセッサ番号保持部（０）〜マイクロカウンタ（５）／プロセッサ番号保持部（５）の各組に、それぞれ、識別番号０〜５が割り当てられる。マイクロカウンタ／プロセッサ番号保持部の組の数（最大発行できる識別番号の個数）は、必ずしもプロセッサの数と一致している必要はない（プロセッサの数と一致していてもよい）。
【００７４】
識別番号は対応するマイクロカウンタ／プロセッサ番号保持部が空きの状態のときに発行されるが、識別番号に空きがないとき（マイクロカウンタ／プロセッサ番号保持部に空きがないとき）は識別番号が発行されないので、後者の場合にインターリーブユニット２３がマイクロコマンドを生成することがないように制御される。
【００７５】
インターリーブユニット２３が識別番号の獲得に成功すると、メモリアクセスコマンドに識別番号の割り当てが可能になり、マイクロコマンドが生成可能になる。マイクロコマンドが一つ生成されるごとに、当該識別番号に対応するマイクロカウンタ２６２がインクリメントされる。また、メモリアクセスコマンドに識別番号が割り当てられたときには、プロセッサ番号保持部２６３にメモリアクセスコマンドを発行したプロセッサ１のプロセッサ番号がセットされ、後に当該メモリアクセスコマンドが終了したとき、このプロセッサ番号が通知のために使用される。
【００７６】
インターリーブユニット２３から生成されるマイクロコマンドは、獲得された識別番号が付与されている。バンクキュー２４から出てメモリから応答が返ってくると、この識別番号によってマイクロカウンタ２６２が選択され、選択されたマイクロカウンタ２６２がデクリメントされる。すなわち、マイクロカウンタ２６２は、対応するメモリアクセスコマンドについて、マイクロコマンドが生成されるとインクリメントされ、マイクロコマンドが終了するとデクリメントされることにより、メモリアクセスコマンドの終了を知ることができる。
【００７７】
マイクロカウンタ２６２のカウント値が０になったとき、デコーダ（Ｄｅｃｏｄｅｒ＿Ａ）２６１が、対応するプロセッサ番号を同期コントローラ２７に通知する。
【００７８】
図９に、終了コントローラ２６における処理手順の一例を示す。
【００７９】
終了コントローラ２６は、マイクロコマンドが発生されたかおよび終了されたか（イベントの発生）をチェックしている（ステップＳ３１）。
【００８０】
マイクロコマンドが生成された場合には（ステップＳ３２）、該マイクロコマンドに割り当てられた識別子に対応するマイクロカウンタ２６２をインクリメントし（ステップＳ３３）、ステップＳ３１に戻り、処理を続ける。
【００８１】
マイクロコマンドが終了された場合には（ステップＳ３２）、該マイクロコマンドに割り当てられた識別子に対応するマイクロカウンタ２６２をデクリメントする（ステップＳ３４）。そして、該マイクロカウンタ２６２が０になったならば、該マイクロカウンタ２６２に対応するプロセッサ番号保持部２６３に保持されているプロセッサ番号に対応する１つのメモリアクセスコマンドが終了した旨を同期コントローラ２７へ通知する（ステップＳ３６）。また、該識別番号を解放し、該識別番号及び対応するマイクロカウンタ２６２／プロセッサ番号保持部２６３を未使用の状態する（ステップＳ３６）。そして、ステップＳ３１に戻り、処理を続ける。
【００８２】
以上のように本実施形態によれば、メモリアクセスをバンクアクセスにインターリーブし、インターリーブしたアクセスがメモリアクセスの順序に従わず効率良いアクセスをしながら、必要に応じてメモリアクセスが終了したことを知ることができる。
【００８３】
なお、本実施形態では、マルチプロセッサシステムを例に説明したが、マルチスレッドプロセッサシステム（図１のプロセッサをスレッド（ハードウェアスレッド）にしたものに相当）に対するメモリコントローラに本発明を適用したものは、基本的には、これまで説明したものと同様である（説明において、プロセッサをスレッドに読み替えればよい）。
【００８４】
なお、この発明の実施の形態で例示した構成は一例であって、それ以外の構成を排除する趣旨のものではなく、例示した構成の一部を他のもので置き換えたり、例示した構成の一部を省いたり、例示した構成に別の機能あるいは要素を付加したり、それらを組み合わせたりすることなどによって得られる別の構成も可能である。また、例示した構成と論理的に等価な別の構成、例示した構成と論理的に等価な部分を含む別の構成、例示した構成の要部と論理的に等価な別の構成なども可能である。また、例示した構成と同一もしくは類似の目的を達成する別の構成、例示した構成と同一もしくは類似の効果を奏する別の構成なども可能である。
また、この発明の実施の形態で例示した各種構成部分についての各種バリエーションは、適宜組み合わせて実施することが可能である。
また、この発明の実施の形態は、個別装置としての発明、関連を持つ２以上の装置についての発明、システム全体としての発明、個別装置内部の構成部分についての発明、またはそれらに対応する方法の発明等、種々の観点、段階、概念またはカテゴリに係る発明を包含・内在するものである。
従って、この発明の実施の形態に開示した内容からは、例示した構成に限定されることなく発明を抽出することができるものである。
【００８５】
本発明は、上述した実施の形態に限定されるものではなく、その技術的範囲において種々変形して実施することができる。
【００８６】
【発明の効果】
本発明によれば、効率良いマルチバンクアクセスを実現するとともに、必要に応じてメモリアクセスコマンドの終了を検知することが可能になる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るマルチプロセッサシステムの構成例を示す図
【図２】バンクとメモリとの関係について説明するための図
【図３】同実施形態に係るメモリコントローラの構成例を示す図
【図４】同実施形態に係るインターリーブユニットの処理手順の一例を示すフローチャート
【図５】同実施形態に係る同期コントローラの構成例を示す図
【図６】同実施形態に係る同期コントローラの第１の処理手順の一例を示すフローチャート
【図７】同実施形態に係る同期コントローラの第２の処理手順の一例を示すフローチャート
【図８】同実施形態に係る終了コントローラの構成例を示す図
【図９】同実施形態に係る終了コントローラの処理手順の一例を示すフローチャート
【符号の説明】
１…プロセッサ
２…メモリコントローラ
３…バス
４…メモリバンク
２１…バスインタフェース
２２…コマンドキュー
２３…インターリーブユニット
２４…バンクキュー
２５…データバッファ
２６…終了コントローラ
２７…同期コントローラ
２６１…第１のコーダ
２６２…マイクロカウンタ
２６３…プロセッサ番号保持部
２６４…第２のデコーダ
２７１…アウトプットデコーダ
２７２…同期カウンタ
２７３…同期ビット
２７４…インプットデコーダ
【図１】
0003999943.tif 000002
【図２】
0003999943.tif 000003
【図３】
0003999943.tif 000004
【図４】
0003999943.tif 000005
【図５】
0003999943.tif 000006
【図６】
0003999943.tif 000007
【図７】
0003999943.tif 000008
【図８】
0003999943.tif 000009
【図９】
0003999943.tif 000010