(57)【要約】      （修正有）【課題】メモリへのアクセスに起因するレイテンシーを確実に低減することができるメモリ制御システムを提供する。【解決手段】  アーキテクチャの異なる複数のプロセッサ１０２ａ，１０２ｂ…１０２ｎと、共有メモリ１１５を制御するメモリコントローラ１０１と備えるメモリ制御システムにおいて、読み出し要求に応じて共有メモリ１１５から命令を含むリードデータが読み出され、プロセッサのアーキテクチャに応じて、リードデータがデコードされ、リードデータ内に分岐命令が存在しているか否かが判別され、リードデータ内に分岐命令が存在していない場合には、読み出されたリードデータのアドレスに隣接するアドレスを有するデータ（次のデータ）を読み出すための読み出し要求が発行されて、次のデータとしてのリードデータがプリフェッチされる。【選択図】図１
2006318194.tif 000002
【特許請求の範囲】
【請求項１】
互いにアーキテクチャの異なる複数のプロセッサと、共有メモリと、前記共有メモリを制御するメモリコントローラと、前記複数のプロセッサ及び前記メモリコントローラを接続する共有バスとを備えるメモリ制御システムにおいて、
前記メモリコントローラは、該メモリコントローラが読み出した命令を各プロセッサのアーキテクチャに応じてデコードするデコード装置を有し、前記デコードされた命令に応じてメモリ制御のシーケンスを変更することを特徴とするメモリ制御システム。  
【請求項２】
互いにアーキテクチャの異なる複数のプロセッサと、共有メモリと、前記共有メモリを制御するメモリコントローラと、前記複数のプロセッサ及び前記メモリコントローラを接続する共有バスとを備えるメモリ制御システムにおいて、
前記メモリコントローラは、
該メモリコントローラが読みだした命令を各前記プロセッサのアーキテクチャに応じてデコードし、前記命令における分岐命令の存在を判別する命令デコード装置と、
前記共有メモリから読み出されたデータを保持するリードデータ保持装置と、
該リードデータ保持装置を検索して少なくとも１つの前記プロセッサによって要求されたデータの存在を確認する要求リードデータ検索装置と、
前記少なくとも１つのプロセッサから前記共有メモリに対する読み出しが要求された場合、前記要求リードデータ検索装置による検索の結果を参照し、前記リードデータ保持装置に前記要求された共有メモリに対する読み出しに対応するデータが存在するときには、前記リードデータ保持装置に保持されたデータを前記少なくとも１つのプロセッサに送信し、前記リードデータ保持装置に前記要求された共有メモリに対する読み出しに対応するデータが存在しないときには、前記共有メモリに対して読み出しを要求するメモリコマンド制御装置と、
前記命令デコード装置による判別の結果、前記読みだした命令に前記分岐命令が存在しない場合には、前記メモリコマンド制御装置に対して前記共有メモリに対する読み出しを要求する読み出し要求発行装置とを有し、
前記読みだした命令に分岐命令が存在しない場合には、次の命令をプリフェッチすることを特徴とするメモリ制御システム。
【請求項３】
前記少なくとも１つのプロセッサからの前記共有メモリに対する読み出しの要求が、命令を読み出すための要求か、データを読み出すための要求かを判別し、  
前記共有メモリに対する読み出しの要求が命令を読み出すための要求であると判別された場合にのみ、前記命令デコード装置が、前記メモリコントローラが読みだした命令を各前記プロセッサのアーキテクチャに応じてデコードし、前記命令における分岐命令の存在を判別することを特徴とする請求項２記載のメモリ制御システム。
【請求項４】
前記共有バスにおける各前記プロセッサのバスＩＤ及び各前記プロセッサのアーキテクチャを対応付けるテーブルを有し、前記バスＩＤ及び前記テーブルに基づいて、前記メモリコントローラが読みだした命令をデコードする命令デコード装置を選択することを特徴とする請求項２記載のメモリ制御システム。
【請求項５】
請求項２乃至４のいずれか１項に記載のメモリ制御システムを備えることを特徴とするコンピュータシステム。
【請求項６】
互いにアーキテクチャの異なる複数のプロセッサと、共有メモリと、前記共有メモリを制御するメモリコントローラと、前記複数のプロセッサ及び前記メモリコントローラを接続する共有バスとを備えるメモリ制御システムにおけるメモリ制御方法であって、
該メモリコントローラが読みだした命令を各前記プロセッサのアーキテクチャに応じてデコードし、前記命令における分岐命令の存在を判別する命令デコードステップと、
前記共有メモリから読み出されたデータを保持するリードデータ保持ステップと、
前記保持されたデータを検索して少なくとも１つの前記プロセッサによって要求されたデータの存在を確認する要求リードデータ検索ステップと、
前記少なくとも１つのプロセッサから前記共有メモリに対する読み出しが要求された場合、前記要求リードデータ検索ステップにおける検索の結果を参照し、前記保持されたデータに前記要求された共有メモリに対する読み出しに対応するデータが存在するときには、前記保持されたデータを前記少なくとも１つのプロセッサに送信し、前記保持されたデータに前記要求された共有メモリに対する読み出しに対応するデータが存在しないときには、前記共有メモリに対して読み出しを要求するメモリコマンド制御ステップと、
前記命令デコードステップにおける判別の結果、前記読みだした命令に前記分岐命令が存在しない場合には、前記共有メモリに対する読み出しを要求する読み出し要求発行ステップと、
前記読みだした命令に分岐命令が存在しない場合には、次の命令をプリフェッチするプリフェッチステップとを有することを特徴とするメモリ制御方法。
【請求項７】
互いにアーキテクチャの異なる複数のプロセッサと、共有メモリと、前記共有メモリを制御するメモリコントローラと、前記複数のプロセッサ及び前記メモリコントローラを接続する共有バスとを備えるメモリ制御システムにおけるメモリ制御方法をコンピュータに実行させるプログラムであって、
該メモリコントローラが読みだした命令を各前記プロセッサのアーキテクチャに応じてデコードし、前記命令における分岐命令の存在を判別する命令デコードモジュールと、
前記共有メモリから読み出されたデータを保持するリードデータ保持モジュールと、
前記保持されたデータを検索して少なくとも１つの前記プロセッサによって要求されたデータの存在を確認する要求リードデータ検索モジュールと、
前記少なくとも１つのプロセッサから前記共有メモリに対する読み出しが要求された場合、前記要求リードデータ検索モジュールにおける検索の結果を参照し、前記保持されたデータに前記要求された共有メモリに対する読み出しに対応するデータが存在するときには、前記保持されたデータを前記少なくとも１つのプロセッサに送信し、前記保持されたデータに前記要求された共有メモリに対する読み出しに対応するデータが存在しないときには、前記共有メモリに対して読み出しを要求するメモリコマンド制御モジュールと、
前記命令デコードモジュールにおける判別の結果、前記読みだした命令に前記分岐命令が存在しない場合には、前記共有メモリに対する読み出しを要求する読み出し要求発行モジュールと、
前記読みだした命令に分岐命令が存在しない場合には、次の命令をプリフェッチするプリフェッチモジュールとを有することを特徴とするプログラム。
【請求項８】
請求項７記載のプログラムを格納することを特徴とするコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ制御システム、コンピュータシステム、メモリ制御方法、プログラム及び記憶媒体に関し、特に、アーキテクチャの異なる複数のプロセッサからメモリへのアクセスを制御するメモリ制御システムに関するものである。
【背景技術】
【０００２】
従来、アーキテクチャの異なる複数のプロセッサからメモリへのアクセスを制御するメモリ制御システムが知られている（例えば、特許文献１参照。）。このようなメモリ制御システムを、以下、図８を用いて説明する。
【０００３】
このＡＳＩＣ（Application Specific Integrated Circuit）としてのメモリ制御システム８００は、メモリコントローラ８０１と、複数のプロセッサ８０２ａ，８０２ｂ…８０２ｎと、メモリコントローラ８０１及び複数のプロセッサ８０２ａ，８０２ｂ…８０２ｎを接続する共有バス８０３とからなる。
【０００４】
メモリコントローラ８０１はコマンド制御部８０４、ライトデータ制御部８０５、リードデータ制御部８０６及びバス制御部８０７からなり、コマンド制御部８０４はメモリコマンド制御回路８０８及びコマンドバッファ８０９を有し、ライトデータ制御部８０５はライトデータバッファ８１０を有し、リードデータ制御部８０６はリードデータバッファ８１１を有する。
【０００５】
また、ＡＳＩＣ８００は、例えば、大容量のＤＲＡＭ（Dynamic Random Access Memory）であるメモリ８１２とメモリバス８１３を介して接続される。
【０００６】
ＡＳＩＣ８００において、プロセッサ８０２ａ，８０２ｂ…８０２ｎのいずれかからのメモリアクセス要求は共有バス８０３を介してメモリコントローラ８０１に伝達される。このメモリアクセス要求は、バス制御部８０７で共有バス８０３のプロトコルに応じてその内容、例えば、書き込み要求か読み出し要求かが判別される。
【０００７】
メモリアクセス要求がメモリ８１２への書き込み要求（ライトコマンド）の場合には、コマンドバッファ８０９にライトコマンドが登録され、ライトデータバッファ８１０に書き込み用のデータが登録される。さらに、コマンド制御部８０４のメモリコマンド制御回路８０８は、メモリバス８１３の状態、コマンドバッファ８０９の状態、及びライトデータバッファ８１０の状態に応じて、メモリ８１２にメモリバス８１３を介して書き込み要求を行う。
【０００８】
一方、メモリアクセス要求がメモリ８１２からの読み出し要求（リードコマンド）の場合には、コマンドバッファ８０９にリードコマンドが登録される。また、メモリコマンド制御回路８０８は、メモリバス８１３の状態、コマンドバッファ８０９の状態、及びリードデータバッファ８１１の状態に応じて、メモリ８１２にメモリバス８１３を介して読み出し要求を行う。このとき、読み出されたリードデータはリードデータバッファ８１１に登録される。バス制御回路８０７は、登録された読み出しデータを共有バス８０３を介して読み出し要求を発行したプロセッサに送信する。
【特許文献１】特開２００４−１９２６２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ところで、ＡＳＩＣ８００では、プロセッサ８０２ａ，８０２ｂ…８０２ｎから読み出し要求が行われた後に、メモリコントローラ８０１がメモリ８１２に対して読み出し要求を行うので、プロセッサ８０２ａ，８０２ｂ…８０２ｎがデータの読み出しを要求してから実際にデータが得られるまでのレイテンシーが大きかった。
【００１０】
また、プロセッサ８０２ａ，８０２ｂ…８０２ｎがメモリコントローラ８０１に対して命令（コマンド）のフェッチを要求（リード要求）した場合、処理の主体がメモリコントローラ８０１に移り、プロセッサ８０２ａ，８０２ｂ…８０２ｎは次に処理すべき内容を知ることができないので、プロセッサ８０２ａ，８０２ｂ…８０２ｎによる処理がストールしてしまう。ここで、上述したレイテンシーが大きくなると、プロセッサ８０２ａ，８０２ｂ…８０２ｎのストール時間が増大し、ＡＳＩＣ８００の性能が大きく低下する。
【００１１】
これに対応して、各プロセッサ８０２ａ，８０２ｂ…８０２ｎにキャッシュメモリを搭載してメモリ８１２へのアクセス回数を低減し、若しくは、各プロセッサ８０２ａ，８０２ｂ…８０２ｎ内部において次の命令のアドレスを予測し、予測されたアドレスに対応するデータを読み出すプリフェッチを行うことによってメモリ８１２へのアクセスに起因するレイテンシーの低減が試みられている。
【００１２】
しかしながら、上述したアクセス回数の低減はキャッシュメモリを必要とし、また、プリフェッチを行うためには高性能なプロセッサを数多く必要とするため、コスト等の観点から現実的な対策ではない。また、ＡＳＩＣにおいてプロセッサの数が増加すると、ＡＳＩＣのオーバーヘッドも増加する。また、予測に基づいてプリフェッチを行うため、不必要なプリフェッチを行う可能性があり、結局、メモリへのアクセスに起因するレイテンシーを低減することができないという問題があった。
【００１３】
本発明の目的は、メモリへのアクセスに起因するレイテンシーを確実に低減することができるメモリ制御システム、コンピュータシステム、メモリ制御方法、プログラム及び記憶媒体を提供することにある。
【課題を解決するための手段】
【００１４】
上記目的を達成するために、本発明のメモリ制御システムは、互いにアーキテクチャの異なる複数のプロセッサと、共有メモリと、前記共有メモリを制御するメモリコントローラと、前記複数のプロセッサ及び前記メモリコントローラを接続する共有バスとを備えるメモリ制御システムにおいて、前記メモリコントローラは、該メモリコントローラが読み出した命令を各プロセッサのアーキテクチャに応じてデコードするデコード装置を有し、前記デコードされた命令に応じてメモリ制御のシーケンスを変更することを特徴とする。
【００１５】
上記目的を達成するために、本発明の他のメモリ制御システムは、互いにアーキテクチャの異なる複数のプロセッサと、共有メモリと、前記共有メモリを制御するメモリコントローラと、前記複数のプロセッサ及び前記メモリコントローラを接続する共有バスとを備えるメモリ制御システムにおいて、前記メモリコントローラは、該メモリコントローラが読みだした命令を各前記プロセッサのアーキテクチャに応じてデコードし、前記命令における分岐命令の存在を判別する命令デコード装置と、前記共有メモリから読み出されたデータを保持するリードデータ保持装置と、該リードデータ保持装置を検索して少なくとも１つの前記プロセッサによって要求されたデータの存在を確認する要求リードデータ検索装置と、前記少なくとも１つのプロセッサから前記共有メモリに対する読み出しが要求された場合、前記要求リードデータ検索装置による検索の結果を参照し、前記リードデータ保持装置に前記要求された共有メモリに対する読み出しに対応するデータが存在するときには、前記リードデータ保持装置に保持されたデータを前記少なくとも１つのプロセッサに送信し、前記リードデータ保持装置に前記要求された共有メモリに対する読み出しに対応するデータが存在しないときには、前記共有メモリに対して読み出しを要求するメモリコマンド制御装置と、前記命令デコード装置による判別の結果、前記読みだした命令に前記分岐命令が存在しない場合には、前記メモリコマンド制御装置に対して前記共有メモリに対する読み出しを要求する読み出し要求発行装置とを有し、前記読みだした命令に分岐命令が存在しない場合には、次の命令をプリフェッチすることを特徴とする。
【００１６】
上記目的を達成するために、本発明のコンピュータシステムは、上記メモリ制御システムを備えることを特徴とする。
【００１７】
上記目的を達成するために、本発明のメモリ制御方法は、互いにアーキテクチャの異なる複数のプロセッサと、共有メモリと、前記共有メモリを制御するメモリコントローラと、前記複数のプロセッサ及び前記メモリコントローラを接続する共有バスとを備えるメモリ制御システムにおけるメモリ制御方法であって、該メモリコントローラが読みだした命令を各前記プロセッサのアーキテクチャに応じてデコードし、前記命令における分岐命令の存在を判別する命令デコードステップと、前記共有メモリから読み出されたデータを保持するリードデータ保持ステップと、前記保持されたデータを検索して少なくとも１つの前記プロセッサによって要求されたデータの存在を確認する要求リードデータ検索ステップと、前記少なくとも１つのプロセッサから前記共有メモリに対する読み出しが要求された場合、前記要求リードデータ検索ステップにおける検索の結果を参照し、前記保持されたデータに前記要求された共有メモリに対する読み出しに対応するデータが存在するときには、前記保持されたデータを前記少なくとも１つのプロセッサに送信し、前記保持されたデータに前記要求された共有メモリに対する読み出しに対応するデータが存在しないときには、前記共有メモリに対して読み出しを要求するメモリコマンド制御ステップと、前記命令デコードステップにおける判別の結果、前記読みだした命令に前記分岐命令が存在しない場合には、前記共有メモリに対する読み出しを要求する読み出し要求発行ステップと、前記読みだした命令に分岐命令が存在しない場合には、次の命令をプリフェッチするプリフェッチステップとを有することを特徴とする。
【００１８】
上記目的を達成するために、本発明のプログラムは、互いにアーキテクチャの異なる複数のプロセッサと、共有メモリと、前記共有メモリを制御するメモリコントローラと、前記複数のプロセッサ及び前記メモリコントローラを接続する共有バスとを備えるメモリ制御システムにおけるメモリ制御方法をコンピュータに実行させるプログラムであって、該メモリコントローラが読みだした命令を各前記プロセッサのアーキテクチャに応じてデコードし、前記命令における分岐命令の存在を判別する命令デコードモジュールと、前記共有メモリから読み出されたデータを保持するリードデータ保持モジュールと、前記保持されたデータを検索して少なくとも１つの前記プロセッサによって要求されたデータの存在を確認する要求リードデータ検索モジュールと、前記少なくとも１つのプロセッサから前記共有メモリに対する読み出しが要求された場合、前記要求リードデータ検索モジュールにおける検索の結果を参照し、前記保持されたデータに前記要求された共有メモリに対する読み出しに対応するデータが存在するときには、前記保持されたデータを前記少なくとも１つのプロセッサに送信し、前記保持されたデータに前記要求された共有メモリに対する読み出しに対応するデータが存在しないときには、前記共有メモリに対して読み出しを要求するメモリコマンド制御モジュールと、前記命令デコードモジュールにおける判別の結果、前記読みだした命令に前記分岐命令が存在しない場合には、前記共有メモリに対する読み出しを要求する読み出し要求発行モジュールと、前記読みだした命令に分岐命令が存在しない場合には、次の命令をプリフェッチするプリフェッチモジュールとを有することを特徴とする。
【００１９】
上記目的を達成するために、本発明の記憶媒体は、上記プログラムを格納することを特徴とする。
【発明の効果】
【００２０】
本発明によれば、該メモリコントローラによって読み出された命令が各プロセッサのアーキテクチャに応じてデコードされ、該デコードされた命令に応じてメモリ制御のシーケンスが変更されるので、不必要なメモリへのアクセスを防止することができ、もって、メモリへのアクセスに起因するレイテンシーを確実に低減することができる。
【００２１】
また、本発明によれば、該メモリコントローラによって読み出された命令が各プロセッサのアーキテクチャに応じてデコードされて命令における分岐命令の存在が判別され、読みだした命令に分岐命令が存在しない場合には、メモリコマンド制御装置に対して共有メモリに対する読み出しが要求され、さらに、次の命令がプリフェッチされるので、不必要なプリフェッチを行うことがなく、もって、メモリへのアクセスに起因するレイテンシーを確実に低減することができる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の実施の形態について図面を参照しながら詳述する。
【００２３】
まず、本発明の第１の実施の形態に係るメモリ制御システムについて説明する。
【００２４】
図１は、本実施の形態に係るメモリ制御システムの概略構成を示すブロック図である。
【００２５】
図１において、ＡＳＩＣとしてのメモリ制御システム１００は、メモリコントローラ１０１と、複数のプロセッサ１０２ａ，１０２ｂ…１０２ｎと、メモリコントローラ１０１及び複数のプロセッサ１０２ａ，１０２ｂ…１０２ｎを接続する共有バス１０３とからなる。
【００２６】
メモリコントローラ１０１はコマンド制御部１０４、ライトデータ制御部１０５、リードデータ制御部１０６及びバス制御部１０７からなり、コマンド制御部１０４はメモリコマンド制御回路１０８及びコマンドバッファ１０９を有し、ライトデータ制御部１０５はライトデータバッファ１１０を有し、リードデータ制御部１０６はリードデータバッファ１１１、複数の命令デコード回路１１２ａ…１１２ｎ、データ検索回路１１３及びリード要求発行回路１１４を有する。リードデータ制御部１０６において、命令デコード回路１１２ａ…１１２ｎの数は、複数のプロセッサ１０２ａ，１０２ｂ…１０２ｎの数と同じである。
【００２７】
また、ＡＳＩＣ１００は、例えば、大容量のＤＲＡＭである共有メモリ１１５とメモリバス１１６を介して接続される。
【００２８】
リードデータ制御部１０６において、リードデータバッファ１１１は、共有メモリ１１５から読み出されたデータ（リードデータ）を保持する。リードデータバッファ１１１は、図２に示すように、各リードデータ０，１…ｎを保持するリードデータ保持部１１１ａと、各リードデータ０，１…ｎに対応するアドレス０，１…ｎを保持するアドレス保持部１１１ｂからなる。
【００２９】
ＡＳＩＣ１００において、プロセッサ１０２ａ，１０２ｂ…１０２ｎのいずれかからのメモリアクセス要求は共有バス１０３を介してメモリコントローラ１０１に伝達される。このメモリアクセス要求は、バス制御部１０７で共有バス１０３のプロトコルに応じてその内容、例えば、書き込み要求か読み出し要求かが判別される。
【００３０】
メモリアクセス要求が共有メモリ１１５への書き込み要求（ライトコマンド）である場合には、コマンドバッファ１０９にライトコマンドが登録され、ライトデータバッファ１１０に書き込み用のデータが登録される。さらに、コマンド制御部１０４のメモリコマンド制御回路１０８は、メモリバス１１６の状態、コマンドバッファ１０９の状態、及びライトデータバッファ１１０の状態に応じて、共有メモリ１１５にメモリバス１１６を介して書き込み要求を行う。
【００３１】
一方、メモリアクセス要求が共有メモリ１１５からの読み出し要求（リードコマンド）である場合には、以下のリードアクセス処理が実行される。
【００３２】
図３は、メモリアクセス要求がリードコマンドである場合に実行されるリードアクセス処理のフローチャートである。
【００３３】
まず、コマンドバッファ１０９にリードコマンドが登録される。このとき、リードデータ制御部１０６のデータ検索回路１１３は、読み出し要求に対応するデータ（以下、単に「要求データ」という。）のアドレスと、上述したリードデータバッファ１１１のアドレス保持部１１１ｂに保持されているアドレスとを比較することによって、当該要求データをリードデータバッファ１１１内において検索する。
【００３４】
次いで、コマンド制御部１０４のメモリコマンド制御回路１０８は、データ検索回路１１３による検索の結果を参照することにより、リードデータバッファ１１１に要求データが存在しないか否かを判別する（ステップＳ３０１）。
【００３５】
ステップＳ３０１の判別の結果、要求データがリードデータバッファ１１１に存在しているときには（ステップＳ３０１でＮｏ）、当該要求データを、読み出し要求を発行したプロセッサ１０２ｘ（ｘは１，２…ｎのいずれかに該当）に送信する（ステップＳ３０２）。一方、要求データがリードデータバッファ１１１に存在していないときには（ステップＳ３０１でＹｅｓ）、メモリコマンド制御回路１０８は、メモリバス１１６を介して共有メモリ１１５に対して要求データの読み出し要求（リードコマンド）を発行する（ステップＳ３０３）。この読み出し要求に応じて共有メモリ１１５から読み出されるデータ（リードデータ）には、純粋なデータと、メモリコントローラ１０１を制御する命令とが該当し、いずれもエンコードされて共有メモリ１１５に格納されている。また、命令としてのリードデータの中には、プロセッサ１０２ｘによる読み出し要求に応じた読み出しを中断する命令である分岐命令が含まれる場合がある。
【００３６】
次いで、リードデータ制御部１０６は、共有メモリ１１５からリードデータを受信し（ステップＳ３０４）、リードデータバッファ１１１はリードデータを保持し、各命令デコード回路１１２ａ…１１２ｎはリードデータをデコードする（ステップＳ３０５）。このとき、各命令デコード回路１１２ａ…１１２ｎは、純粋なデータとしてのリードデータだけでなく、命令としてのリードデータもデコードするので、命令の中に分岐命令が含まれていれば、該分岐命令もデコードされる。
【００３７】
図４は、図１における各命令デコード回路のデータの流れを示す図である。
【００３８】
図４において、共有メモリ１１５からリードデータは、各命令デコード回路１１２ａ…１１２ｎに分配され、各命令デコード回路１１２ａ…１１２ｎは分配されたリードデータをデコードするが、命令デコード回路１１２ａ…１１２ｎのそれぞれは、プロセッサ１０２ａ，１０２ｂ…１０２ｎのそれぞれに対応し、対応するプロセッサ１０２ｙ（ｙは１，２…ｎのいずれかに該当）が読み取れるように、リードデータをデコードする。
【００３９】
共有バス１０３には、読み出し要求を発行したプロセッサ１０２ｘを示すプロセッサマスターＩＤが存在しており、メモリコントローラ１０１では、プロセッサマスターＩＤに基づいて、該プロセッサマスターＩＤが示すプロセッサ１０２ｘが判別される。例えば、ＡＲＭ社のＡＭＢＡ（Advanced Microcontroller Bus Architecture）やＡＨＢ（Advanced High performance Bus）には、プロセッサを特定するHMASTERという信号が存在し、この信号を利用することでプロセッサが特定される。このとき、プロセッサマスターＩＤが示すプロセッサ１０２ｘに対応する命令デコード回路１１２ｘが選択され、該命令デコード回路１１２ｘがデコードしたリードデータ（プロセッサ１０２ｘが読み取ることができるリードデータ）が命令デコード回路１１２ａ…１１２ｎ全体からの出力として出力される。すなわち、プロセッサ１０２ｘのアーキテクチャに応じて、命令デコード回路１１２ｘが選択され、リードデータがデコードされる。
【００４０】
図３に戻り、次いで、メモリコントローラ１０１は、命令デコード回路１１２ａ…１１２ｎ全体の出力として出力された、デコードされたリードデータ内に分岐命令が存在しているか否かを判別する（ステップＳ３０６）。
【００４１】
ステップＳ３０６の判別の結果、デコードされたリードデータ内に分岐命令が存在していた場合には（ステップＳ３０６でＮｏ）、リードデータ制御部１０６は、リードデータを、読み出し要求を発行したプロセッサ１０２ｘに送信し（ステップＳ３０７）、本処理を終了する。
【００４２】
ステップＳ３０６の判別の結果、デコードされたリードデータ内に分岐命令が存在していない場合には（ステップＳ３０６でＹｅｓ）、リード要求発行回路１１４は、読み出されたリードデータのアドレスに隣接するアドレスを有するデータ（以下。「次のデータ」という。）を共有メモリ１１５から読み出すための読み出し要求をコマンド制御部１０４に対して発行する。コマンド制御部１０４は、共有バス１０３を介したプロセッサ１０２ｘからの読み出し要求と、リード要求発行回路１１４からの読み出し要求とを調停し、調停された結果としての読み出し要求をコマンドバッファ１０９にリードコマンドとして登録し、次のデータをリードデータバッファ１１１から送信させ、若しくは、共有メモリ１１５から読み出させる。これにより、メモリコントローラ１０１は、次のデータとしての（命令を含むことがある）リードデータをプリフェッチする（ステップＳ３０８）。
【００４３】
以上のリードアクセス処理が適用されたプロセッサ１０２ａ，１０２ｂ…１０２ｎからの共有メモリ１１５へのアクセスのシーケンスについて説明する。
【００４４】
図５は、プロセッサから共有メモリへのアクセスにおいて、プロセッサが共有メモリからフェッチする命令列を示す図である。
【００４５】
まず、プロセッサ１０２ｘが、共有メモリ１１５から命令Ａ０（アドレスＡ０のデータを読み出す命令）をフェッチして、メモリコントローラ１０１にアドレスＡ０のデータの読み出し要求を発行する。
【００４６】
アドレスＡ０のデータの読み出し要求を受信したメモリコントローラ１０１では、メモリコマンド制御回路１０８が、データ検索回路１１３による検索の結果を参照する。該参照の結果、アドレスＡ０のデータがリードデータバッファ１１１に存在していないときには、メモリコマンド制御回路１０８は、共有メモリ１１５に対してアドレスＡ０のデータの読み出し要求を発行する。
【００４７】
そして、共有メモリ１１５からリードデータ（アドレスＡ０のデータ）を受信したリードデータ制御部１０６は、リードデータをリードデータバッファ１１１に保持させると共に、該リードデータ、具体的には、命令Ａ０を命令デコード回路１１２ｘでデコードする。このとき、図５に示すように、命令Ａ０は分岐命令を含まないので、リード要求発行回路１１４は、アドレスＡ０に隣接するアドレスＡ１のデータの読み出し要求をコマンド制御部１０４に対して発行する。これにより、アドレスＡ１のデータのプリフェッチを行う。
【００４８】
続いて、プロセッサ１０２ｘは、リードデータ（アドレスＡ０のデータ）を共有バス１０３を介してメモリコントローラ１０１から受信し、共有メモリ１１５から命令Ａ１（アドレスＡ１のデータを読み出す命令）をフェッチして、メモリコントローラ１０１にアドレスＡ１のデータの読み出し要求を発行する。このとき、リード要求発行回路１１４の読み出し要求に応じて、既にアドレスＡ１のデータが共有メモリ１１５より読み出されて、リードデータバッファ１１１に保持されているため、リードデータ制御部１０６がリードデータバッファ１１１が保持するアドレスＡ１のデータをプロセッサ１０２ｘに送信するだけであり、コマンド制御部１０４はプロセッサ１０２ｘからの命令Ａ１に応じて共有メモリ１１５にアクセスする必要がない。これにより、命令Ａ１に関して共有メモリ１１５へのアクセスに起因するレイテンシーを低減することができる。
【００４９】
また、プロセッサ１０２ｘがメモリコントローラ１０１にアドレスＡ１のデータの読み出し要求を発行したとき、未だアドレスＡ１のデータが共有メモリ１１５より読み出されておらず、アドレスＡ１のデータがリードデータバッファ１１１に保持されていない場合であっても、既に、コマンド制御部１０４は、リード要求発行回路１１４からの読み出し要求に応じて、アドレスＡ１のデータの読み出し要求を共有メモリ１１５に対して発行している。したがって、プロセッサ１０２ｘからの命令Ａ１に応じてアドレスＡ１のデータの読み出し要求を発行する必要がなく、命令Ａ１に関して共有メモリ１１５へのアクセスに起因するレイテンシーを低減することができる。
【００５０】
なお、プロセッサ１０２ｘがメモリコントローラ１０１にアドレスＡ１のデータの読み出し要求を発行したとき、アドレスＡ１のデータがリードデータバッファ１１１に保持されているか否かは、共有メモリ１１５のレイテンシー性能、コマンドバッファ１０９の混雑度、及びプロセッサ１０２ｘの処理性能等に依存する。
【００５１】
続いて、リードデータ制御部１０６が、上述したアドレスＡ１のデータと同様に、アドレスＡ２のデータ、アドレスＡ３のデータをプリフェッチする。ここで、図５において、アドレスＡ３のデータには、分岐命令が含まれているため、以後、共有メモリ１１５からのデータの読み出しが中断される。したがって、アドレスＡ３に隣接するアドレスＡ４のデータはプリフェッチされない。
【００５２】
以上、１つのプロセッサ１０２ｘが命令列をフェッチする場合について説明したが、複数の他のプロセッサが命令列をフェッチする場合も、他の命令デコード回路が用いられる点で相違するのみであり、各プロセッサに対応して上述した共有メモリ１１５へのアクセスのシーケンスと同様のシーケンスが実行される。
【００５３】
なお、プロセッサがキャッシュメモリを内蔵する場合、当該プロセッサからの共有メモリ１１５へのアクセスはキャッシュライン単位で行われるが、この場合、命令デコード回路をキャッシュライン毎に割り当てることにより、上述した共有メモリ１１５へのアクセスのシーケンスと同様のシーケンスを実行することができる。
【００５４】
以上、本実施の形態に係るメモリ制御システムによれば、メモリコマンド制御回路１０８からの読み出し要求に応じて共有メモリ１１５から命令を含むリードデータが読み出される。また、プロセッサ１０２ｘのアーキテクチャに応じて、命令デコード回路１１２ｘが選択され、リードデータがデコードされてリードデータ内に分岐命令が存在しているか否かが判別される（ステップＳ３０６）。ここで、リードデータ内に分岐命令が存在していない場合には、次のデータ（読み出されたリードデータのアドレスに隣接するアドレスを有するデータ）を共有メモリ１１５から読み出すための読み出し要求が発行されて、次のデータとしての（命令を含むことがある）リードデータがプリフェッチされる（ステップＳ３０８）。したがって、不必要なプリフェッチを行うことがなく、もって、共有メモリ１１５へのアクセスに起因するレイテンシーを確実に低減することができる。
【００５５】
また、上述した本実施の形態に係るメモリ制御システムでは、複数のプロセッサ１０２ａ，１０２ｂ…１０２ｎのアーキテクチャに応じて、命令デコード回路１１２ｘが選択されるので、互いにアーキテクチャの異なる複数のプロセッサを有するメモリ制御システムであっても、リードデータを確実にデコードすることができ、次のデータとしての（命令を含むことがある）リードデータをプリフェッチすることができる。
【００５６】
次に、本発明の第２の実施の形態に係るメモリ制御システムについて説明する。  
【００５７】
本実施の形態は、その構成、作用が上述した第１の実施の形態と基本的に同じであり、各命令デコード回路におけるデータの流れが異なるのみである。したがって、重複した構成、作用については説明を省略し、以下に異なる構成、作用についての説明を行う。
【００５８】
図６は、本実施の形態に係るメモリ制御システムにおける各命令デコード回路のデータの流れを示す図である。
【００５９】
図６においても、図４と同様に、プロセッサ１０２ｘのアーキテクチャに応じて、命令デコード回路１１２ｘが選択され、リードデータがデコードされるが、プロセッサ１０２ｘからの読み出し要求が命令としてのデータを読み出すための要求（命令アクセス要求）でない場合には、命令デコード回路１１２ｘがデコードしたリードデータを出力せず、これにより、デコードされたリードデータ内に分岐命令が存在しているか否かの判別を無効にする。
【００６０】
例えば、ＡＲＭ社のＡＭＢＡ（Advanced Microcontroller Bus Architecture）やＡＨＢ（Advanced High performance Bus）には、プロセッサからメモリへのアクセス要求の種類を特定するHPROTという信号が存在し、この信号を利用することでプロセッサ１０２ｘからの読み出し要求の種類が特定され、その結果、読み出し要求が命令としてのデータを読み出すための要求なのか、純粋なデータを読み出すための要求なのかを判別することができる。
【００６１】
本実施の形態に係るメモリ制御システムによれば、プロセッサ１０２ｘからの読み出し要求が命令アクセス要求でない場合には、デコードされたリードデータ内に分岐命令が存在しているか否かの判別が無効にされるので、不必要なプリフェッチを確実に防止して、共有メモリ１１５へのアクセスに起因するレイテンシーをさらに低減することができる。
【００６２】
次に、本発明の第３の実施の形態に係るメモリ制御システムについて説明する。  
【００６３】
本実施の形態は、その構成、作用が上述した第１の実施の形態と基本的に同じであり、各プロセッサを示すプロセッサマスターＩＤとこれに対応するプロセッサのアーキテクチャの種類とを関連付けるテーブル７００を有する点で異なるのみである。したがって、重複した構成、作用については説明を省略し、以下に異なる構成、作用についての説明を行う。
【００６４】
図７は、本実施の形態に係るメモリ制御システムにおける各命令デコード回路のデータの流れを示す図である。
【００６５】
図７において、読み出し要求を発行したプロセッサ１０２ｘを示すプロセッサマスターＩＤに基づいてテーブル７００からプロセッサ１０２ｘのアーキテクチャの種類が選択される。選択されたアーキテクチャの種類は、信号としてバス制御部１０７に送信され、送信されたアーキテクチャで読み取り可能にリードデータをデコードすることができる命令デコード回路が選択され、該命令デコード回路がデコードしたリードデータ（プロセッサ１０２ｘが読み取ることができるリードデータ）が命令デコード回路１１２ａ…１１２ｎ全体からの出力として出力される。すわなち、本メモリ制御システムでは、プロセッサのアーキテクチャの種類に応じて命令デコード回路が選択される。
【００６６】
本実施の形態に係るメモリ制御システムによれば、上述した第１の実施の形態及び第２の実施の形態の効果を奏することができることに加え、各プロセッサのアーキテクチャの種類に応じて命令デコード回路が選択されるので、複数のプロセッサを有するメモリ制御システムであっても、命令デコード回路の数をプロセッサの数と同じにする必要が無く、命令デコード回路の数を少なくすることができ、オーバーヘッドを低減することができる。
【００６７】
また、本発明の目的は、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出して実行することによっても達成される。
【００６８】
この場合、記憶媒体から読み出されたプログラムコード自体が上述した実施の形態の機能を実現することになり、プログラムコード及びそのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００６９】
また、プログラムコードを供給するための記憶媒体としては、例えば、ＲＡＭ、ＮＶ−ＲＡＭ、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＭＯ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ（ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ）、磁気テープ、不揮発性のメモリカード、他のＲＯＭ等の上記プログラムコードを記憶できるものであればよい。或いは、上記プログラムコードは、インターネット、商用ネットワーク、若しくはローカルエリアネットワーク等に接続される不図示の他のコンピュータやデータベース等からダウンロードすることにより供給されてもよい。
【００７０】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれる。
【００７１】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれる。
【００７２】
上記プログラムコードの形態は、オブジェクトコード、インタプリタにより実行されるプログラムコード、ＯＳ（オペレーティングシステム）に供給されるスクリプトデータ等の形態から成ってもよい。
【図面の簡単な説明】
【００７３】
【図１】本発明の第１の実施の形態に係るメモリ制御システムの概略構成を示すブロック図である。
【図２】図１におけるリードデータバッファの構造を示す図である。
【図３】メモリアクセス要求がリードコマンドである場合に実行されるリードアクセス処理のフローチャートである。
【図４】図１における各命令デコード回路のデータの流れを示す図である。
【図５】プロセッサから共有メモリへのアクセスにおいて、プロセッサが共有メモリからフェッチする命令列を示す図である。
【図６】本発明の第２の実施の形態に係るメモリ制御システムにおける各命令デコード回路のデータの流れを示す図である。
【図７】本発明の第３の実施の形態に係るメモリ制御システムにおける各命令デコード回路のデータの流れを示す図である。
【図８】従来のメモリ制御システムの概略構成を示すブロック図である。
【符号の説明】
【００７４】
１００  ＡＳＩＣ
１０１  メモリコントローラ
１０２ａ，１０２ｂ…１０２ｎ  プロセッサ
１０３  共有バス
１０４  コマンド制御部
１０６  リードデータ制御部
１０７  バス制御部
１０８  メモリコマンド制御回路
１０９  コマンドバッファ
１１１  リードデータバッファ
１１２ａ…１１２ｎ  命令デコード回路
１１３  データ検索回路
１１４  リード要求発行回路
１１５  共有メモリ
１１６  メモリバス
【図１】
2006318194.tif 000003
【図２】
2006318194.tif 000004
【図３】
2006318194.tif 000005
【図４】
2006318194.tif 000006
【図５】
2006318194.tif 000007
【図６】
2006318194.tif 000008
【図７】
2006318194.tif 000009
【図８】
2006318194.tif 000010