(57)【要約】【課題】プロセッサの演算処理効率の向上を図る。【解決手段】バス選択部１４は、プロセッサ１１−１〜１１−ｎ毎に設けられたバスである個別制御バスＢ１〜Ｂｎと、データメモリ１３へつながる共通制御バスＢｃとに接続し、選択指示にもとづき個別制御バスを選択することで、選択されたプロセッサのデータメモリ１３へのアクセスを許可する。バス調停部１５は、プロセッサ１１−１〜１１−ｎの個別制御バスＢ１〜Ｂｎに対するバス要求を認識して、選択指示をバス選択部１４に通知する。バス監視部１６は、バス要求数とバス要求衝突数とをそれぞれカウントして集計し、集計結果からプロセッサ１１−１〜１１−ｎがデータメモリ１３にアクセスする際の優先度を決定し、優先度が低いプロセッサにウェイト指示信号を送信してデータメモリ１３へのアクセス開始時刻を遅らせる。【選択図】図１
2007241918.tif 000002
【特許請求の範囲】
【請求項１】
演算処理を行うプロセッサ装置において、
複数のプロセッサと、
演算処理に必要なデータを格納するデータメモリと、
前記プロセッサと前記データメモリとの間に配置して、前記プロセッサから前記データメモリへアクセスする際の、前記プロセッサ毎に設けられたバスである個別制御バスと、前記データメモリへつながる共通制御バスとに接続し、通知された選択指示にもとづき前記個別制御バスを選択することで、選択された前記プロセッサの前記データメモリへのアクセスを許可するバス選択部と、
前記プロセッサの前記個別制御バスへのバス要求を認識して、前記選択指示を前記バス選択部に通知するバス調停部と、
前記個別制御バスを通じて前記バス要求数とバス要求衝突数とをそれぞれカウントして集計し、集計結果から前記プロセッサが前記データメモリにアクセスする際の優先度を設定し、優先度を低く設定した前記プロセッサへはウェイト指示信号を送信して、優先度を低く設定した前記プロセッサの前記データメモリへのアクセス開始時刻を遅らせるバス監視部と、
を有することを特徴とするプロセッサ装置。
【請求項２】
前記バス監視部は、前記集計結果から、前記バス要求数が少なく、前記バス要求衝突数が少ないプロセッサを検出し、検出した前記プロセッサの優先度を低く設定して、前記ウェイト指示信号の送信対象とすることを特徴とする請求項１記載のプロセッサ装置。
【請求項３】
演算処理を行うプロセッサ装置において、
複数のプロセッサと、
演算処理に必要なデータを格納するデータメモリと、
前記プロセッサ毎にフェッチバスを介して接続し、前記プロセッサの命令を格納する複数のコードメモリと、
前記プロセッサと前記データメモリとの間に配置して、前記プロセッサから前記データメモリへアクセスする際の、前記プロセッサ毎に設けられたバスである個別制御バスと、前記データメモリへつながる共通制御バスとに接続し、通知された選択指示にもとづき前記個別制御バスを選択することで、選択された前記プロセッサの前記データメモリへのアクセスを許可するバス選択部と、
前記プロセッサが前記コードメモリから前記命令を読み出す際に、前記フェッチバスを通じて、前記命令と前記コードメモリへのアクセスアドレスとを取得し、前記命令と前記アクセスアドレスとが共に前記データメモリへのアクセスに必要なデータである場合には、前記共通制御バスを先行して獲得できる先行獲得要求を生成し、前記先行獲得要求に優先度を付与して優先度付き先行獲得要求を出力する命令監視部と、
前記優先度付き先行獲得要求を受信して、前記プロセッサの前記個別制御バスに対するバス要求を認識した場合、前記優先度の高い方のプロセッサが選択される前記選択指示を前記バス選択部に通知するバス調停部と、
を有することを特徴とするプロセッサ装置。
【請求項４】
前記データメモリへのアクセスが発生する命令オペコードと、前記データメモリへのアクセスが発生するアクセスアドレスとを外部から設定可能なデータ設定部と、優先度を外部から設定可能な優先度設定部とをさらに有し、前記命令監視部は、前記フェッチバスを流れる前記アクセスアドレスと、設定された前記アクセスアドレスとを比較し、一致したアクセスアドレスがある場合には、前記一致したアクセスアドレスに対して設定された優先度を選択し、前記フェッチバスを流れる前記命令内の命令オペコードと、設定された命令オペコードと、を比較した際に命令オペコードが一致し、かつ前記一致したアクセスアドレスがある場合には、前記先行獲得要求を生成し、前記先行獲得要求に対して、選択した前記優先度を付与して前記優先度付き先行獲得要求を出力することを特徴とする請求項３記載のプロセッサ装置。
【請求項５】
演算処理を行うプロセッサ装置において、
複数のプロセッサと、
演算処理に必要なデータを格納するデータメモリと、
前記プロセッサ毎にフェッチバスを介して接続し、前記プロセッサの命令を格納する複数のコードメモリと、
連続する複数のアクセスアドレスで、前記データメモリへ一括してアクセスするためのバスである一括アクセス制御バスと、個別のアクセスアドレスで前記データメモリへアクセスするためのバスである個別アクセス制御バスと、前記プロセッサが前記コードメモリから前記命令を読み出す際に、前記フェッチバスを通じて、前記命令内に含まれる前記データメモリへのアクセスアドレスを取得するアクセスアドレス取得部と、取得した一定数のアクセスアドレスの中に、連続性を持つアクセスアドレスが存在するか否かを解析する連続性解析部と、連続性を持つアクセスアドレスが存在する場合には、連続するアクセスアドレスを、前記一括アクセス制御バスを通じて出力する連続アドレス出力部と、連続性を持つアクセスアドレスが存在する場合には前記一括アクセス制御バスを選択させ、連続性を持つアクセスアドレスが存在しない場合には前記個別アクセス制御バスを選択させるためのバス選択信号を出力するバス選択信号出力部と、前記プロセッサから前記データメモリへアクセスする際の、前記プロセッサ毎に設けられたバスである個別制御バスに対して、前記バス選択信号にもとづいて、前記一括アクセス制御バスまたは前記個別アクセス制御バスのいずれかを前記個別制御バスに接続するプロセッサ側バス接続部と、前記データメモリへつながる共通制御バスに対して、前記バス選択信号にもとづいて、前記一括アクセス制御バスまたは前記個別アクセス制御バスのいずれかを前記共通制御バスに接続するデータメモリ側バス接続部と、から構成され、前記プロセッサと前記データメモリの間に配置されて、前記個別制御バスを介して前記プロセッサと接続し、前記共通制御バスを介して前記データメモリと接続して、前記プロセッサが前記データメモリへアクセスする際の調停を行うバス調停部と、
を有することを特徴とするプロセッサ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプロセッサ装置に関し、特にマルチプロセッサシステムにより演算処理を行うプロセッサ装置に関する。
【背景技術】
【０００２】
複数のプロセッサを用いて演算処理を行う通信装置（マルチプロセッサシステム）では、メモリの搭載個数の制限及びコスト削減等の理由により、１つのデータメモリを有して、演算に必要な各種データをプロセッサ間で共有する構成とすることが多い。また、このような構成では、各プロセッサのデータメモリへのアクセス要求が重なる（競合する）と、同時に各プロセッサの要求を処理できないため、各プロセッサの要求を順次処理していくバス調停制御が行われる。
【０００３】
バス調停制御は、全プロセッサを同一優先度として順番に処理する回転優先方式や、プロセッサ毎に異なる優先度を割り当て、競合が発生した場合に各プロセッサの優先度をもとにデータメモリへアクセスする順序を決定する固定優先度方式などが一般的に用いられている。
【０００４】
従来のバス調停制御として、バス権獲得の要求信号を出す毎に前回値とはランダムに変化するＩＤコードを用いて、バス調停制御を行う技術が提案されている（例えば、特許文献１）。
【特許文献１】特開平６−３０９２７６号公報（段落番号〔０００６〕、〔０００７〕、第１図）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記のような回転優先方式または固定優先方式のバス調停制御では、競合発生時に選択されるプロセッサの優先度がすべて同じであったり、または優先度が固定であったりするため、優先順位を柔軟に操作することができなかった。
【０００６】
また、優先度の高いプロセッサからアクセス要求が発生した際に、他の優先度の低いプロセッサがデータメモリへすでにアクセス中であれば、それが完了するまで待たされてしまうので、データメモリへのアクセスが頻発してくると、固定優先方式のように、たとえ優先度が高く決められていたとしても、ストール（次命令を実行することができない状態）が多発してしまうといった問題があった。
【０００７】
従来のバス調停制御では、メモリへのアクセス回数を低減させてストールの発生回数を低減させたり、またはデータメモリへのアクセス時間を短縮させたりなどの適切な制御は行われておらず、プロセッサの演算効率の低下を招いていた。
【０００８】
一方、マルチプロセッサシステムでは、大容量低速の命令コードをコードメモリに格納しておき、小容量高速のキャッシュメモリを複数のプロセッサに対応して配置して、コードメモリ内の命令コードをキャッシュメモリにプログラムロード（コードメモリからデータを読み出してキャッシュメモリへ格納すること）しておき、演算処理時には、プロセッサとキャッシュメモリ間でやりとりを行ってメモリアクセスの高速化を図る構成をとることが多い。
【０００９】
このようなシステムでは、キャッシュメモリ内にプロセッサが必要とする命令コードが存在しない状態が発生すると（キャッシュミスの発生）、コードメモリからあらたに命令コードをロードしてキャッシュメモリへ転写することになる。
【００１０】
しかし、従来のシステムでは、常にキャッシュミスが発生してからコードメモリから命令コードをキャッシュメモリにプログラムロードするといった制御を行っており、またキャッシュミスの発生を低減させる制御も行われていなかったために、キャッシュロード（キャッシュメモリからデータを読み出すこと）時間が増大し演算処理効率を低下させるといった問題があった。
【００１１】
本発明はこのような点に鑑みてなされたものであり、プロセッサの演算処理効率の向上を図ったプロセッサ装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明では上記課題を解決するために、図１に示すような、演算処理を行うプロセッサ装置１０において、複数のプロセッサ１１−１〜１１−ｎと、演算処理に必要なデータを格納するデータメモリ１３と、プロセッサ１１−１〜１１−ｎとデータメモリ１３との間に配置して、プロセッサ１１−１〜１１−ｎからデータメモリ１３へアクセスする際の、プロセッサ１１−１〜１１−ｎ毎に設けられたバスである個別制御バスＢ１〜Ｂｎと、データメモリ１３へつながる共通制御バスＢｃとに接続し、通知された選択指示にもとづき個別制御バスを選択することで、選択されたプロセッサのデータメモリ１３へのアクセスを許可するバス選択部１４と、プロセッサ１１−１〜１１−ｎの個別制御バスＢ１〜Ｂｎへのバス要求を認識して、選択指示をバス選択部１４に通知するバス調停部１５と、個別制御バスＢ１〜Ｂｎを通じて、バス要求数とバス要求衝突数とをそれぞれカウントして集計し、集計結果からプロセッサ１１−１〜１１−ｎがデータメモリ１３にアクセスする際の優先度を設定し、優先度を低く設定したプロセッサへはウェイト指示信号を送信して、優先度を低く設定したプロセッサのデータメモリ１３へのアクセス開始時刻を遅らせるバス監視部１６と、を有することを特徴とするプロセッサ装置１０が提供される。
【００１３】
ここで、バス選択部１４は、プロセッサ１１−１〜１１−ｎとデータメモリ１３との間に配置して、プロセッサ１１−１〜１１−ｎからデータメモリ１３へアクセスする際の、プロセッサ１１−１〜１１−ｎ毎に設けられたバスである個別制御バスＢ１〜Ｂｎと、データメモリ１３へつながる共通制御バスＢｃとに接続し、通知された選択指示にもとづき個別制御バスを選択することで、選択されたプロセッサのデータメモリ１３へのアクセスを許可する。バス調停部１５は、プロセッサ１１−１〜１１−ｎの個別制御バスＢ１〜Ｂｎへのバス要求を認識して、選択指示をバス選択部１４に通知する。バス監視部１６は、個別制御バスＢ１〜Ｂｎを通じて、バス要求数とバス要求衝突数とをそれぞれカウントして集計し、集計結果からプロセッサ１１−１〜１１−ｎがデータメモリ１３にアクセスする際の優先度を設定し、優先度を低く設定したプロセッサへはウェイト指示信号を送信して、優先度を低く設定したプロセッサのデータメモリ１３へのアクセス開始時刻を遅らせる。
【発明の効果】
【００１４】
本発明のプロセッサ装置は、個別制御バスを通じて、バス要求数とバス要求衝突数とをそれぞれカウントして集計し、集計結果からプロセッサがデータメモリにアクセスする際の優先度を設定し、優先度が低いプロセッサに対して、ウェイト指示信号を送信して処理開始時刻を遅らせる構成とした。これにより、複数のプロセッサからデータメモリへアクセスする際の競合回数を低減させることができ、プロセッサの演算処理効率を向上させることが可能になる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態を図面を参照して説明する。図１はプロセッサ装置の原理図である。第１の実施の形態のプロセッサ装置１０は、プロセッサ１１−１〜１１−ｎ、コードメモリ１２−１〜１２−ｎ、データメモリ１３、バス選択部１４、バス調停部１５、バス監視部１６から構成され、マルチプロセッサシステムにより演算処理を行う装置である。
【００１６】
プロセッサ１１−１〜１１−ｎは、命令を解析してパイプライン処理による演算を実行する。コードメモリ１２−１〜１２−ｎは、プロセッサ１１−１〜１１−ｎ毎に付属してフェッチバスを介して接続し、プロセッサ１１−１〜１１−ｎの命令（命令コード）を格納する。データメモリ１３は、演算処理に必要なデータを格納する。なお、命令は、処理内容を表すオペコード、処理対象データを表すオペランド、データメモリ１３へのアクセスアドレス等からなる。
【００１７】
バス選択部１４は、プロセッサ１１−１〜１１−ｎとデータメモリ１３との間に配置して、プロセッサ１１−１〜１１−ｎからデータメモリ１３へアクセスする際の、プロセッサ１１−１〜１１−ｎ毎に設けられたバスである個別制御バスＢ１〜Ｂｎと、データメモリ１３へつながる共通制御バスＢｃとに接続する。
【００１８】
そして、バス選択部１４は、バス調停部１５から通知された選択指示にもとづき個別制御バスＢ１〜Ｂｎの中のいずれか１つを選択することで、選択された該当プロセッサのデータメモリ１３へのアクセスを許可する。
【００１９】
バス調停部１５は、プロセッサ１１−１〜１１−ｎの個別制御バスＢ１〜Ｂｎへのバス要求を認識して、選択指示をバス選択部１４に通知する。バス監視部１６は、個別制御バスＢ１〜Ｂｎを通じて、バス要求数とバス要求衝突数とをそれぞれカウントして集計し、集計結果からプロセッサ１１−１〜１１−ｎがデータメモリ１３にアクセスする際の優先度を設定する。そして、優先度が低く設定されたプロセッサに対しては、ウェイト指示信号を送信して、メモリアクセス処理をウェイトさせ、データメモリ１３へのアクセス開始時刻を遅らせる。
【００２０】
図２はバス監視部１６の構成を示す図である。バス監視部１６は、カウンタ部１６ａ−１〜１６ａ−ｎ、集計部１６ｂ−１〜１６ｂ−ｎ、集計結果処理部１６ｃ、ウェイト指示信号発生部１６ｄ−１〜１６ｄ−ｎから構成される。
【００２１】
カウンタ部１６ａ−１〜１６ａ−ｎはそれぞれ、バス要求数カウンタＣ１−１〜Ｃ１−ｎ、バス要求衝突数カウンタＣ２−１〜Ｃ２−ｎを含む。バス要求数カウンタＣ１−１は、個別制御バスＢ１を通じて、プロセッサ１１−１からの単位時間当たりのバス要求数をカウントする。同様にして、バス要求数カウンタＣ１−ｎは、個別制御バスＢｎを通じて、プロセッサ１１−ｎからの単位時間当たりのバス要求数をカウントする。
【００２２】
バス要求衝突数カウンタＣ２−１は、個別制御バスＢ１〜Ｂｎと接続して、単位時間当たりの、個別制御バスＢ１のバス要求に対する、他の個別制御バスＢ２〜Ｂｎのバス要求との衝突回数をカウントする（例えば、ある単位時間内に、個別制御バスＢ１のバス要求の他に、個別制御バスＢ２にもバス要求があった場合には、衝突回数を１とカウントする）。同様にして、バス要求衝突数カウンタＣ２−ｎは、個別制御バスＢ１〜Ｂｎと接続して、単位時間当たりの、個別制御バスＢｎのバス要求に対する、他の個別制御バスＢ１〜Ｂｎ−１のバス要求との衝突回数をカウントする。
【００２３】
集計部１６ｂ−１〜１６ｂ−ｎはそれぞれ、カウンタ部１６ａ−１〜１６ａ−ｎから送信された、個別制御バスＢ１〜Ｂｎ毎（プロセッサ１１−１〜１１−ｎ毎）のバス要求数及びバス要求衝突数を集計する。集計結果処理部１６ｃは、集計結果を比較して優先度を決定する。
【００２４】
具体的には、バス要求数が多く、かつバス要求衝突数も多ければ優先度を高く設定し、バス要求数が少なく、かつバス要求衝突数も少なければ優先度を低く設定する。そして、最も優先度を低く設定したプロセッサに対して、対応するウェイト指示信号発生部１６ｄ−１〜１６ｄ−ｎにウェイト要求を出力する。ウェイト指示信号発生部１６ｄ−１〜１６ｄ−ｎのいずれかが、ウェイト要求を受信すると、該当プロセッサにウェイト指示信号を送信する。
【００２５】
例えば、集計結果処理部１６ｃが最も優先度の低いプロセッサをプロセッサ１１−１と決定したら、ウェイト指示信号発生部１６ｄ−１へウェイト要求を出力し、ウェイト指示信号発生部１６ｄ−１は、プロセッサ１１−１へウェイト指示信号を送信する。
【００２６】
なお、高優先度と決定されたプロセッサ（プロセッサ１１−ｎが高優先と決定されたとする）にはウェイトがかからないので、通常サイクルでデータメモリ１３へアクセスしに行き、バス調停部１５は、個別制御バスＢ１〜Ｂｎを通じて、どのプロセッサからのバス要求かを認識して、選択指示をバス選択部１４に通知する。バス選択部１４は、通知された選択指示にもとづき、該当プロセッサ（プロセッサ１１−ｎ）に対応する個別制御バスＢｎを選択することで、その選択されたプロセッサ１１−ｎのデータメモリ１３へのアクセスを許可する（個別制御バスＢｎと共通制御バスＢｃとがつながり、データメモリ１３に対してプロセッサ１１−ｎだけが接続することになる）。
【００２７】
次にタイムチャートを用いて動作について説明する。図３はパイプライン処理を示すタイムチャートである。上段タイムチャートはプロセッサ１１−１で行われるパイプライン処理を、下段タイムチャートはプロセッサ１１−２で行われるパイプライン処理を示している。これらのパイプライン処理は、競合が頻発している状態（第１の実施の形態のプロセッサ装置１０の動作によって競合回数が低減する以前の状態）を示している。
【００２８】
ここで、パイプライン処理について簡単に説明する。一般的に、各プロセッサ内では時間をずらしながら以下の３つの動作を同時に実行することにより、処理性能の向上を図っている。
【００２９】
・命令フェッチ（Ｆ）：命令が格納されているコードメモリから、プロセッサが実行する命令を取り込む。
・デコード（Ｄ）：フェッチ（命令をコードメモリから読み出しプロセッサ内部のレジスタに転送すること）した命令を解析し、プロセッサの振る舞いを決定する。
【００３０】
・実行（Ｅ）：デコード結果をもとに、レジスタファイルの更新や周辺メモリへのアクセス（データメモリ１３へのアクセスを含む）、またはレジスタ値を使った演算（四則演算）等を実施する。
【００３１】
図３の場合はパイプライン段数が５段であり、フェッチレイテンシが２、デコードレイテンシが２の場合を示している（レイテンシとは遅延時間のことで、例えば、フェッチレイテンシ＝２とは、フェッチに要するＣＰＵサイクルが２サイクルということ）。
【００３２】
図３のウェイトが発生しないときのパイプライン処理を見ると、例えば、上段タイムチャートのａ１段目のサイクル２２以降のように、サイクル２２、２３でＦ１の処理を行い、サイクル２４、２５でＤ１の処理を行い、サイクル２６でＥ１の処理を行って（Ｆ１、Ｄ１、Ｅ１）の１命令が実行される。また、ａ２段目〜ａ５段目では、ａ１段目の処理が１サイクル分ずれて（Ｆ２、Ｄ２、Ｅ２）命令〜（Ｆ５、Ｄ５、Ｅ５）命令が順に行われていることがわかる。このように、パイプライン処理では、Ｆ、Ｄ、Ｅの処理を並行して行いながら命令を順次実行していく。
【００３３】
一方、競合が発生しているときは、アクセス完了までに時間がかかってしまい、その間プロセッサの処理は次命令を実行することができないストール（命令ストール）状態となる。命令ストールが発生すると、パイプライン処理では、命令の実行順序を守るためにウェイトが発生することになる。
【００３４】
なお、図中のＷは、データメモリ１３へアクセスしてＥ処理を行う場合に競合し（ストールとなり）、ウェイト状態になっていることを示している（データメモリ１３へのアクセスが必要なＥ処理では、同一サイクルにＥ処理が重なると、アクセス権を獲得できなかった側がウェイト状態となる）。
【００３５】
以下、第１の実施の形態の動作が行われる以前の状態として、パイプライン処理でウェイトが発生していく様子について、ウェイトが最初に発生しているサイクル７から順に説明する。
【００３６】
〔サイクル７〕プロセッサ１１−１は、データメモリ１３へアクセスし（ＡＣＴ）、ａ１段目でＥ１処理が行われる。一方、プロセッサ１１−２でも本来の順序では、ｂ１段目でＥ１処理が行われるはずであるが、プロセッサ１１−１ですでにこのサイクルでＥ１処理が実行されて、データメモリ１３に対するアクセス権が獲得されているので、ｂ１段目ではウェイト状態（Ｗ１）となる。
【００３７】
〔サイクル８〕プロセッサ１１−２のｂ１段目が１サイクル遅れてＥ１処理となる。すると、本来はｂ２段目がＥ２処理となるはずが、ｂ１段目でＥ１処理が行われているため、ｂ２段目はウェイト状態（Ｗ２）となる。一方、プロセッサ１１−１のａ２段目は本来Ｅ２処理となるはずが、プロセッサ１１−２のｂ１段目でＥ１処理が行われているため、ａ２段目はウェイト状態（Ｗ２）となる。
【００３８】
〔サイクル９〕プロセッサ１１−１のａ２段目が１サイクル遅れてＥ２処理となる。すると、本来はａ３段目がＥ３処理となるはずが、ａ２段目でＥ２処理が行われているため、ａ３段目はウェイト状態（Ｗ３）となる。一方、プロセッサ１１−２のｂ２段目では１サイクル遅れてＥ２処理となるはずであるが、プロセッサ１１−１のａ２段目でＥ２処理が行われているため、ｂ２段目は再びウェイト状態（Ｗ２）となる。また、ｂ３段目では本来Ｅ３処理となるはずであるが、プロセッサ１１−１のａ２段目でＥ２処理が行われているため、ｂ３段目はウェイト状態（Ｗ３）となる。
【００３９】
〔サイクル１０〕プロセッサ１１−２のｂ２段目が２サイクル遅れてＥ２処理となる。すると、ｂ３段目ではＥ３処理が行えないので引き続きウェイト状態（Ｗ３）となる。また、ｂ４段目では本来Ｅ４処理となるはずであるが、ｂ２段目でＥ２処理が行われているため、ウェイト状態（Ｗ４）となる。一方、プロセッサ１１−１のａ３段目では、Ｅ３処理が行えないので引き続きウェイト状態（Ｗ３）となる。また、ａ４段目では本来Ｅ４処理となるはずであるが、ｂ２段目でＥ２処理が行われているため、ウェイト状態（Ｗ４）となる。以降同様な流れでウェイトが発生していく。
【００４０】
次に第１の実施の形態のプロセッサ装置１０の動作について説明する。図３の場合のバス要求数とバス要求衝突数を見ると、プロセッサ１１−１では、バス要求数＝１０であり（個別制御バスＢ１へのＡＣＴ回数が１０個）、プロセッサ１１−２では、バス要求数＝５であり（個別制御バスＢ２へのＡＣＴ回数が５個）である。また、プロセッサ１１−１、１１−２のバス要求衝突数＝５である（サイクル７〜１６の間にプロセッサ１１−１、１１−２のＡＣＴは互いに５回ぶつかる）。
【００４１】
プロセッサ装置１０の集計結果処理部１６ｃにおいて、これらの集計結果から優先度を決定すると、バス要求衝突数は同じであるが、バス要求数の多いプロセッサ１１−１の優先度を高く設定し、バス要求数の少ないプロセッサ１１−２の優先度を低く設定することになる（プロセッサ１１−１の方にアクセス権を与えるということ）。
【００４２】
図４はプロセッサ装置１０の動作を示すタイムチャートである。上段タイムチャートはプロセッサ１１−１で行われるパイプライン処理を、下段タイムチャートはプロセッサ１１−２で行われるパイプライン処理を示し、プロセッサ装置１０によって、優先度の低いプロセッサ１１−２にウェイトが与えられている様子を示している。
【００４３】
プロセッサ装置１０の集計結果処理部１６ｃは、プロセッサ１１−２の優先度を低く設定すると、プロセッサ１１−２に対応するウェイト指示信号発生部（ウェイト指示信号発生部１６ｄ−２となる）へウェイト要求を出力し、ウェイト指示信号発生部１６ｄ−２は、プロセッサ１１−２へウェイト指示信号を送信する。
【００４４】
図４ではサイクル７〜１１までの５サイクル分のウェイト指示信号がプロセッサ１１−２へ送信されることで、プロセッサ１１−２のｂ１段目のＥ１処理は、サイクル７から５サイクル分ウェイトしている。すると、ｂ２段目以降も各段毎に順次１サイクル分ずれながら５サイクル分ウェイトし、それぞれの段数でＥ２〜Ｅ５処理が行われる。また、優先度の高いプロセッサ１１−１では、自身のデータメモリ１３へのアクセス時には、競合相手のプロセッサ１１−２がウェイト状態になるので、プロセッサ１１−１にはウェイトが発生せずに通常のパイプライン処理が実行可能となる（なお、図３のプロセッサ１１−１、１１−２で発生しているウェイトは命令ストールにより生じるものであるが、図４のプロセッサ１１−２で発生しているウェイトは、ウェイト指示信号を与えることで生じているものである）。
【００４５】
以上説明したように、第１の実施の形態では、ウェイト指示信号が与えられた優先度の低いプロセッサは、処理開始時刻を遅らせて処理を行うので、優先度の低いプロセッサはウェイト指示信号を受信する前とは異なるタイミングでバス要求を行うことになり、その時間帯では優先度の高いプロセッサがメモリアクセス可能となるため、バス衝突発生確率を低減させることが可能になる。
【００４６】
次に第２の実施の形態のプロセッサ装置について説明する。図５はプロセッサ装置の構成を示す図である。第２の実施の形態のプロセッサ装置２０は、プロセッサ２１−１〜２１−ｎ、コードメモリ２２−１〜２２−ｎ、データメモリ２３、バス選択部２４、命令監視部２００、バス調停部２６から構成される。なお、命令監視部２００とバス調停部２６のみ説明する（その他の構成は図１と同じ）。
【００４７】
命令監視部２００は、プロセッサ２１−１〜２１−ｎがコードメモリ２２−１〜２２−ｎから命令を読み出す際に（命令フェッチ）、フェッチバスＢｆ１〜Ｂｆｎを通じて、命令と、コードメモリ２２−１〜２２−ｎへのアクセスアドレスと、を取得する。そして、命令とアクセスアドレスとが共にデータメモリ２３へのアクセスに必要なデータである場合には、共通制御バスＢｃを先行して獲得できる先行獲得要求を生成し、先行獲得要求に優先度を付与して優先度付き先行獲得要求Ｒ１〜Ｒｎを出力する。なお、優先度付き先行獲得要求Ｒ１〜Ｒｎは、個別制御バスＢ１〜Ｂｎそれぞれに対応しているものである。
【００４８】
バス調停部２６は、優先度付き先行獲得要求Ｒ１〜Ｒｎを受信して、かつプロセッサ２１−１〜２１−ｎの個別制御バスＢ１〜Ｂｎに対するバス要求を認識した場合、優先度の高い方のプロセッサが選択される選択指示をバス選択部２４に通知する。
【００４９】
例えば、バス調停部２６は、優先度付き先行獲得要求Ｒ１の優先度が最も高く、かつ個別制御バスＢ１のバス要求を認識すると、個別制御バスＢ１を選択する旨の選択指示をバス選択部２４へ出力し、バス選択部２４は、その選択指示を受信すると、個別制御バスＢ１と共通制御バスＢｃとを接続して、プロセッサ２１−１がデータメモリ２３へアクセスできるようにする。
【００５０】
図６は命令監視部２００の構成を示す図である。命令監視部２００は、フェッチバスＢｆ１〜Ｂｆｎ毎に、命令デコード部２１０−１〜２１０−ｎと、獲得要求有無判定部２２０−１〜２２０−ｎとが設けられる。以下、フェッチバスＢｆ１に設けられた命令デコード部２１０−１と獲得要求有無判定部２２０−１の構成のみ説明する。
【００５１】
命令デコード部２１０−１は、オペコード抽出部２１１とアクセスアドレス抽出部２１２から構成される。オペコード抽出部２１１は、フェッチバスＢｆ１上の命令コードからオペコードを抽出する。アクセスアドレス抽出部２１２は、プロセッサ２１−１がコードメモリ２２−１をアクセスした際の、フェッチバスＢｆ１上のアクセスアドレスを抽出する。
【００５２】
獲得要求有無判定部２２０−１は、データ設定部２２１、アクセスアドレス比較部２２２−１〜２２２−ｍ、優先度設定部２２３、優先度選択部２２４、オペコード比較部２２５、ＯＲ部２２６、ＡＮＤ部２２７、優先度付き先行獲得要求出力部２２８から構成される。
【００５３】
データ設定部２２１は、データメモリ２３へのアクセスが発生する命令オペコードと、データメモリ２３へのアクセスが発生するｍ個のアクセスアドレスとを設定し、設定された命令オペコードをオペコード比較部２２５へ送信し、また設定されたアクセスアドレスをアクセスアドレス比較部２２２−１〜２２２−ｍへ送信する。なお、データ設定部２２１には、ユーザが任意の命令オペコード及びアクセスアドレスを設定可能である。
【００５４】
アクセスアドレス比較部２２２−１〜２２２−ｍは、アクセスアドレス抽出部２１２で抽出された１つのアクセスアドレスと、ｍ個の設定されたアクセスアドレスとを比較して比較結果をそれぞれ出力する。例えば、一致していたら“Ｈ”出力、不一致なら“Ｌ”出力となる。優先度設定部２２３は、優先順位が１位からｍ位のｍ個の優先度を設定する。なお、優先度設定部２２３には、ユーザが任意の優先度を設定可能である。
【００５５】
優先度選択部２２４は、アクセスアドレス比較部２２２−１〜２２２−ｍから出力された信号が“Ｈ”である優先度を選択して出力する。例えば、アクセスアドレス比較部２２２−１の出力のみが“Ｈ”で、そのときのアクセスアドレス比較部２２２−１の出力に対応する優先度（１）が７に設定されていた場合は、優先度７が優先度選択部２２４から出力される。
【００５６】
オペコード比較部２２５は、オペコード抽出部２１１で抽出された命令オペコードと、設定された命令オペコードとを比較して比較結果を出力する。例えば、一致していたら“Ｈ”出力、不一致なら“Ｌ”出力となる。ＯＲ部２２６は、アクセスアドレス比較部２２２−１〜２２２−ｍから出力された信号の論理和をとる。ＡＮＤ部２２７は、オペコード比較部２２５の出力とＯＲ部２２６の出力との論理積をとる。
【００５７】
この場合、オペコード比較部２２５の出力とＯＲ部２２６の出力が共に“Ｈ”のときＡＮＤ部２２７の出力は“Ｈ”となり、この信号は先行獲得要求となる。優先度付き先行獲得要求出力部２２８は、先行獲得要求に優先度を付与した優先度付き先行獲得要求Ｒ１をバス調停部２６に出力する。
【００５８】
例えば、ＡＮＤ部２２７から出力された信号が“Ｈ”で、優先度選択部２２４から出力された信号が“７”であれば、優先度が７の優先度付き先行獲得要求Ｒ１を出力する。
次にタイムチャートを用いて動作について説明する。図７はパイプライン処理を示すタイムチャートである。上段タイムチャートはプロセッサ２１−１で行われるパイプライン処理を、下段タイムチャートはプロセッサ２１−２で行われるパイプライン処理を示している。これらのパイプライン処理は、第２の実施の形態のプロセッサ装置２０による共通制御バスＢｃの先行獲得処理が行われる以前の状態を示している。
【００５９】
サイクル１１を見ると、プロセッサ２１−１のａ５段目にＥ５処理が入り、プロセッサ２１−２のｂ５段目はウェイト状態（Ｗ５）となっている。プロセッサ２１−１の優先度がプロセッサ２１−２のそれよりも高い場合にはこの状態でよいが、プロセッサ２１−２の方がプロセッサ２１−１よりも優先度が高い場合には、以下のプロセッサ装置２０の制御によって、共通制御バスＢｃはプロセッサ２１−２に先行して獲得することが可能になる。
【００６０】
図８はプロセッサ装置２０の動作を示すタイムチャートである。上段タイムチャートはプロセッサ２１−１で行われるパイプライン処理を、下段タイムチャートはプロセッサ２１−２で行われるパイプライン処理を示し、これらのパイプライン処理は、プロセッサ装置２０による共通制御バスＢｃの先行獲得処理が行われている状態を示している。なお、図では、優先度は値が低いほど高優先としている。
【００６１】
プロセッサ２１−２側の優先度付き先行獲得要求Ｒ２は、サイクル９〜サイクル１１に出力されており、優先度＝１となっている。これは、サイクル１１によるデータメモリ２３の実際のアクセスに先行して、サイクル９、１０のＤ５処理からプロセッサ２１−２に優先度＝１のアクセス権を与えていることを示している。
【００６２】
一方、プロセッサ２１−１側の優先度付き先行獲得要求Ｒ１は、サイクル９〜サイクル１２に出力されており、優先度＝６となっている。したがって、プロセッサ２１−２のサイクル１１のｂ５段目のＥ５処理が優先して行われ、このときプロセッサ２１−１のサイクル１１のａ５段目はウェイト状態（Ｗ５）となり、ａ５段目のサイクル１２でプロセッサ２１−１のＥ５処理が行われることになる。
【００６３】
以上説明したように、第２の実施の形態では、先行獲得要求が与えられて最も優先度が高いプロセッサは、一定サイクル経過後、データメモリ２３へのアクセスを開始するが、データメモリ２３へのアクセス開始時点ではすでに共通制御バスＢｃは獲得されていることになるので、競合発生を抑制してデータメモリ２３へのアクセスが可能になる。
【００６４】
次に第２の実施の形態の変形例について説明する。図６ではアクセスアドレスの一致結果にもとづき優先度を選択し、命令オペコードの一致結果にもとづき先行獲得要求を生成したが、変形例の場合はこれらの逆を行って、命令オペコードの一致結果にもとづき優先度を選択し、アクセスアドレスの一致結果にもとづき先行獲得要求を生成するものである。
【００６５】
図９は変形例のプロセッサ装置の構成を示す図である。第２の実施の形態の変形例の命令監視部２００ａは、フェッチバスＢｆ１〜Ｂｆｎ毎に、命令デコード部２１０ａ−１〜２１０ａ−ｎと、獲得要求有無判定部２２０ａ−１〜２２０ａ−ｎとが設けられる。
【００６６】
また、命令デコード部２１０ａ−１は、アクセスアドレス抽出部２１２ａ、オペコード抽出部２１１ａから構成される。獲得要求有無判定部２２０ａ−１は、データ設定部２２１ａ、アクセスアドレス比較部２２２ａ、優先度設定部２２３ａ、優先度選択部２２４ａ、オペコード比較部２２５ａ−１〜２２５ａ−ｍ、ＯＲ部２２６ａ、ＡＮＤ部２２７ａ、優先度付き先行獲得要求出力部２２８ａから構成される。
【００６７】
命令監視部２００ａは、フェッチバスＢｆ１を流れる命令内の命令オペコードと、設定された命令オペコードとを比較し、一致した命令オペコードがある場合には、一致した命令オペコードに対して設定された優先度を選択する。また、フェッチバスＢｆ１を流れるアクセスアドレスと、設定されたアクセスアドレスとを比較した際にアクセスアドレスが一致し、かつ一致した命令オペコードがある場合には（アクセスアドレス比較部２２２ａの出力が“Ｈ”でかつＯＲ部２２６ａの出力が“Ｈ”のとき）、先行獲得要求を生成し、先行獲得要求に対して、選択した優先度を付与して優先度付き先行獲得要求を出力する。
【００６８】
なお、図９では、図６で示した命令オペコードがアクセスアドレスに、またアクセスアドレスが命令オペコードに変わり、アクセスアドレスにもとづき先行獲得要求を生成し、命令オペコードにもとづき優先度を設定するものであり、図６と基本動作は同じなので、各構成要素の説明は省略する。
【００６９】
次に第３の実施の形態のプロセッサ装置について説明する。図１０はプロセッサ装置の構成を示す図である。第３の実施の形態のプロセッサ装置３０は、プロセッサ３１−１〜３１−ｎ、コードメモリ３２−１〜３２−ｎ、データメモリ３３、バス調停部３４から構成される。以下、バス調停部３４について説明する（その他の構成は図１と同じ）。
【００７０】
バス調停部３４は、プロセッサ３１−１〜３１−ｎとデータメモリ３３の間に配置されて、個別制御バスＢ１〜Ｂｎを介してプロセッサ３１−１〜３１−ｎと接続し、共通制御バスＢｃを介してデータメモリ３３と接続して、プロセッサ３１−１〜３１−ｎがデータメモリ３３へアクセスする際の調停を行う。
【００７１】
また、バス調停部３４は、一括アクセス制御バスＢａ、個別アクセス制御バスＢｅ、アクセスアドレス取得部３４ａ、連続性解析部３４ｂ、連続アドレス出力部３４ｃ、バス選択信号出力部３４ｄ、プロセッサ側バス接続部３４ｅ、データメモリ側バス接続部３４ｆから構成される。
【００７２】
一括アクセス制御バスＢａは、連続アドレス出力部３４ｃ、プロセッサ側バス接続部３４ｅ、データメモリ側バス接続部３４ｆと接続し、連続する複数のアクセスアドレスで、データメモリ３３へ一括してアクセスする際に用いられるバスである。個別アクセス制御バスＢｅは、プロセッサ側バス接続部３４ｅとデータメモリ側バス接続部３４ｆに接続し、個別のアクセスアドレスでデータメモリ３３へアクセスする際に用いられるバスである。
【００７３】
アクセスアドレス取得部３４ａは、プロセッサ３１−１〜３１−ｎがコードメモリ３２−１〜３２−ｎから命令を読み出す際に、フェッチバスＢｆ１〜Ｂｆｎを通じて、命令内に含まれるデータメモリ３３へのアクセスアドレスを取得する。
【００７４】
連続性解析部３４ｂは、取得した一定数のアクセスアドレスの中に、連続性を持つアクセスアドレスが存在するか否かを解析する。連続アドレス出力部３４ｃは、連続性を持つアクセスアドレスが存在する場合には、連続するアクセスアドレスを、一括アクセス制御バスＢａを通じて出力する。
【００７５】
バス選択信号出力部３４ｄは、連続性を持つアクセスアドレスが存在する場合には、一括アクセス制御バスＢａを選択させ、連続性を持つアクセスアドレスが存在しない場合には、個別アクセス制御バスＢｅを選択させるためのバス選択信号を出力する。
【００７６】
プロセッサ側バス接続部３４ｅは、プロセッサ３１−１〜３１−ｎからデータメモリ３３へアクセスする際の、プロセッサ３１−１〜３１−ｎ毎に設けられたバスである個別制御バスＢ１〜Ｂｎに対して、バス選択信号にもとづいて、一括アクセス制御バスＢａまたは個別アクセス制御バスＢｅのいずれかを個別制御バスＢ１〜Ｂｎに接続する。
【００７７】
データメモリ側バス接続部３４ｆは、データメモリ３３へつながる共通制御バスＢｃに対して、バス選択信号にもとづいて、一括アクセス制御バスＢａまたは個別アクセス制御バスＢｅのいずれかを共通制御バスＢｃに接続する。
【００７８】
図１１はバス調停部３４の詳細構成を示す図である。アクセスアドレス取得部３４ａは、命令内アクセスアドレスラッチ部３４ａ−１〜３４ａ−ｎを含み、プロセッサ側バス接続部３４ｅは、バスセレクタ３４ｅ−１〜３４ｅ−ｎを含む。
【００７９】
命令内アクセスアドレスラッチ部３４ａ−１〜３４ａ−ｎはそれぞれ、フェッチバスＢｆ１〜Ｂｆｎを通じて、命令内のデータメモリ３３のアクセスアドレスをラッチする。
連続性解析部３４ｂは、ラッチした一定数のアクセスアドレスの連続性を解析し、この中に連続性を持つアクセスアドレスが存在すると判定した場合は、連続性を持つアクセスアドレスを抽出して連続するように並び替えを行う。例えば、５個のアクセスアドレス０１、０７、０３、０９、０２を取得した場合には、０１、０３、０２に連続性があるので、この３つのアドレスを抽出して、０１、０２、０３と若番順に並び替える。
【００８０】
連続アドレス出力部３４ｃは、並び替え後の連続するアクセスアドレスを、一括アクセス制御バスＢａを通じて出力する。また、バス選択信号出力部３４ｄは、一括アクセス制御バスＢａを選択させるためのバス選択信号を出力する。
【００８１】
プロセッサ側バス接続部３４ｅ内のバスセレクタ３４ｅ−１〜３４ｅ−ｎは、このときのバス選択信号を受信すると、一括アクセス制御バスＢａを個別制御バスＢ１〜Ｂｎに接続し、データメモリ側バス接続部３４ｆは、一括アクセス制御バスＢａを共通制御バスＢｃに接続する。
【００８２】
一方、連続性解析部３４ｂにおいて、ラッチした一定数のアクセスアドレスの中に、連続性を持つアクセスアドレスが存在しないと判定した場合は、バス選択信号出力部３４ｄは、個別アクセス制御バスＢｅを選択させるためのバス選択信号を出力する。
【００８３】
プロセッサ側バス接続部３４ｅ内のバスセレクタ３４ｅ−１〜３４ｅ−ｎは、このときのバス選択信号を受信すると、個別アクセス制御バスＢｅを個別制御バスＢ１〜Ｂｎに接続し、データメモリ側バス接続部３４ｆは、個別アクセス制御バスＢｅを共通制御バスＢｃに接続する。
【００８４】
図１２はパイプライン処理を示すタイムチャートである。上段タイムチャートはプロセッサ３１−１で行われるパイプライン処理を、下段タイムチャートはプロセッサ３１−２で行われるパイプライン処理を示している。これらのパイプライン処理は、プロセッサ装置３０による一括アクセスが行われる以前の状態を示している。
【００８５】
プロセッサ３１−１のａ２段目のアクセスアドレスは0x00010114であり、サイクル１２でＥ２処理が行われ、プロセッサ３１−２のｂ３段目のアクセスアドレスは0x00010118であり、サイクル１７でＥ４処理が行われる。また、プロセッサ３１−１のａ４段目のアクセスアドレスは0x00012000であり、サイクル２２でＥ５処理が行われ、プロセッサ３１−２のｂ４段目のアクセスアドレスは0x00010120であり、サイクル２７でＥ５処理が行われる。
【００８６】
この図の動作では、一括アクセス制御バスＢａを用いての連続アクセスアドレスによる一括アクセスを行っていないので、データメモリ３３へのアクセスは個別に行われており、サイクル１２で最初の0x00010114のＥ処理が行われ、サイクル２７で最後の0x00010120のＥ処理が行われるので、上記の４つのアクセスアドレスのＥ処理がすべて終わるのに１６サイクル要していることになる。
【００８７】
図１３はプロセッサ装置３０の動作を示すタイムチャートである。上段タイムチャートはプロセッサ３１−１で行われるパイプライン処理を、下段タイムチャートはプロセッサ３１−２で行われるパイプライン処理を示し、これらのパイプライン処理は、プロセッサ装置３０による一括アクセスが行われている状態を示している。
【００８８】
ここでは、上記の４つのアクセスアドレスに対して、連続するアクセスアドレスとなるように、0x00010114、0x00010118、0x00012000、0x00010120として並び替えが行われ、このアドレス順にデータメモリ３３にアクセスする。
【００８９】
プロセッサ３１−２のｂ５段目のＦ５のフェッチ処理が終了した時点で一括アクセス制御を行うと判定した場合に、一括アクセス制御バスＢａを用いての連続アクセスアドレスによる一括アクセスを行うと、サイクル１３で0x00010114のＥ２処理が行われ、サイクル１４で0x00010118のＥ４処理が行われ、サイクル１６で最初の0x00012000のＥ５処理が行われ、サイクル２１で0x00010120のＥ５処理が行われるので、これらの４つのアクセスアドレスのＥ処理がすべて終わるのに９サイクル要していることになり、個別アクセスよりも少ないサイクル数でアクセスすることができ、アクセス時間を短縮することが可能になる。
【００９０】
以上説明したように、第３の実施の形態では、アクセスアドレスの連続性を解析して、連続性がある場合には、アクセスアドレスを並び替えて、並び替えたアクセスアドレスで一括アクセス制御バスＢａを通じてデータメモリ３３へ一括してアクセスする構成にした。これにより、データメモリ３３へのアクセス時間を短縮することができ、バス衝突発生確率を低減させることが可能になる。
【００９１】
次に第３の実施の形態の変形例について説明する。図１１のバス調停部３４の構成では、取得したアクセスアドレスの中の連続性のあるアドレスを抽出して並び替えるものとしたが、変形例の場合は、連続性のあるアドレスをブロック単位にまとめて一括アクセスするものである。
【００９２】
具体的には連続性解析部３４ｂは、一定数のアクセスアドレスの中に、連続性を持つアクセスアドレスが存在すると判定した場合に、連続しているアクセスアドレスをブロック単位にまとめる。そして、連続アドレス出力部３４ｃは、連続するアクセスアドレスをブロック単位毎に、一括アクセス制御バスＢａを通じて出力する。
【００９３】
図１４は変形例の第３の実施の形態の動作を示す図である。連続性解析部３４ｂは、データメモリ３３のアドレスの0x00010000〜0x000100FFをブロック＃０、0x00010100〜0x000101FFをブロック＃１、0x00010200〜0x000102FFをブロック＃２、・・・、0x0001F000〜0x0001FFFFをブロック＃ｎとあらかじめ規定しておく。
【００９４】
そして、データメモリ３３へのアクセスアドレスとして、0x00010114、0x00010118、0x00012000、0x00010120が取得されたときは、0x00010114、0x00010118、0x00010120の３つのアクセスアドレスはブロック＃１に含まれるので、これら３つのアクセスアドレスをまとめて一括アクセスする。このように、ブロック単位で一括アクセスすることにより、アクセス回数が減少しバス衝突発生確率を低減させることが可能になる。
【００９５】
次に第４の実施の形態について説明する。なお、上記の第１〜第３の実施の形態では、プロセッサがデータメモリへアクセスする際に生じる競合を低減するための機能を持つものであったが、第４の実施の形態と後述の第５の実施の形態では、プロセッサがキャッシュメモリからデータを読み込むキャッシュロードを行う際に、キャッシュミスの発生回数をなくして、演算処理効率の向上を図るものである。
【００９６】
図１５はプロセッサ装置の構成を示す図である。第４の実施の形態のプロセッサ装置４０は、プロセッサ４１−１〜４１−ｎ、キャッシュメモリ４２−１〜４２−ｎ、コードメモリ４３、バス選択部４４、命令監視部４００、バス調停部４６から構成される。
【００９７】
コードメモリ４３は、プロセッサの命令を一括して格納する大容量低速メモリである。キャッシュメモリ４２−１〜４２−ｎは、プロセッサ４１−１〜４１−ｎ毎にフェッチバスＢｆ１〜Ｂｆｎを介して接続し、コードメモリ４３からプログラムロードされた命令を転写・格納する小容量高速メモリである。
【００９８】
バス選択部４４は、プロセッサ４１−１〜４１−ｎと、コードメモリ４３との間に配置して、プロセッサ４１−１〜４１−ｎからコードメモリ４３へアクセスする際の、プロセッサ４１−１〜４１−ｎ毎に設けられたバスである個別プログラムロードバスＢｐ１〜Ｂｐｎと、コードメモリ４３へつながる共通プログラムロードバスＢｐｃとに接続し、通知された選択指示にもとづき個別プログラムロードバスを選択することで、選択されたプロセッサのコードメモリ４３へのアクセスを許可する。
【００９９】
命令監視部４００は、フェッチバスＢｆ１〜Ｂｆｎを通じて、プロセッサ４１−１〜４１−ｎがキャッシュメモリ４２−１〜４２−ｎから命令を読み出す際のフェッチアドレスを取得し、かつ個別プログラムロードバスＢｐ１〜Ｂｐｎを通じて、プロセッサ４１−１〜４１−ｎがコードメモリ４３からキャッシュメモリ４２−１〜４２−ｎへ命令をプログラムロードする際のロードアドレスを取得する。
【０１００】
そして、フェッチアドレスとロードアドレスとのアドレス距離を解析して、アドレス距離が一定値以上近づいた場合には、共通プログラムロードバスＢｐｃを先行して獲得できる先行獲得要求を生成し、先行獲得要求に優先度を付与して優先度付き先行獲得要求を出力する。
【０１０１】
バス調停部４６は、優先度付き先行獲得要求を受信して、プロセッサ４１−１〜４１−ｎの個別プログラムロードバスＢｐ１〜Ｂｐｎに対するバス要求を認識した場合、優先度の高い方のプロセッサが選択される選択指示をバス選択部４４に通知する。
【０１０２】
図１６は命令監視部４００の構成を示す図である。命令監視部４００は、プログラムロード監視部４１０−１〜４１０−ｎと、バス獲得要求優先度決定部４２０−１〜４２０−ｎとが設けられる。
【０１０３】
プログラムロード監視部４１０−１には、フェッチバスＢｆ１と個別プログラムロードバスＢｐ１とが接続し、同様に、プログラムロード監視部４１０−ｎには、フェッチバスＢｆｎと個別プログラムロードバスＢｐｎとが接続する。以下、フェッチバスＢｆ１及び個別プログラムロードバスＢｐｎとの処理を行うプログラムロード監視部４１０−１とバス獲得要求優先度決定部４２０−１の構成のみ説明する。
【０１０４】
プログラムロード監視部４１０−１は、フェッチアドレスラッチ部４１１、ロードアドレスラッチ部４１２、アドレス距離解析部４１３から構成される。フェッチアドレスラッチ部４１１は、フェッチバスＢｆ１上の命令コードからフェッチアドレスを抽出してラッチする。
【０１０５】
ロードアドレスラッチ部４１２は、プロセッサ４１−１がコードメモリ４３をアクセスした際の、個別プログラムロードバスＢｐ１上のアクセスアドレスを抽出してラッチする。アドレス距離解析部４１３は、フェッチアドレスとロードアドレスとの距離を解析しアドレス距離を出力する。
【０１０６】
バス獲得要求優先度決定部４２０−１は、アドレス距離設定部４２１、アドレス距離比較部４２２−１〜４２２−ｍ、優先度設定部４２３、優先度選択部４２４、ＯＲ部４２５、優先度付き先行獲得要求出力部４２６から構成される。
【０１０７】
アドレス距離設定部４２１は、フェッチアドレスとロードアドレスとのアドレス距離をｍ個設定し、設定されたアドレス距離をアドレス距離比較部４２２−１〜４２２−ｍへ送信する。なお、アドレス距離設定部４２１には、ユーザが任意のアドレス距離を設定可能である。
【０１０８】
アドレス距離比較部４２２−１〜４２２−ｍは、解析後の１つのアドレス距離と、ｍ個の設定されたアクセスアドレスとを比較して比較結果をそれぞれ出力する。例えば、一致していたら“Ｈ”出力、不一致なら“Ｌ”出力となる。優先度設定部４２３は、優先順位が１位からｍ位のｍ個の優先度を設定する。なお、優先度設定部４２３には、ユーザが任意の優先度を設定可能である。
【０１０９】
優先度選択部４２４は、アドレス距離比較部４２２−１〜４２２−ｍから出力された信号が“Ｈ”である優先度を選択して出力する。例えば、アドレス距離比較部４２２−１の出力のみが“Ｈ”で、そのときのアドレス距離比較部４２２−１の出力に対応する優先度が７に設定されていた場合は優先度７が出力される。
【０１１０】
ＯＲ部４２５は、アドレス距離比較部４２２−１〜４２２−ｍから出力された信号の論理和をとり、“Ｈ”を先行獲得要求として出力する。優先度付き先行獲得要求出力部４２６は、先行獲得要求に優先度を付与した優先度付き先行獲得要求Ｒ１をバス調停部４６に出力する。
【０１１１】
すなわち、命令監視部４００では、取得したフェッチアドレス及びロードアドレスから求めた第１のアドレス距離と、設定された第２のアドレス距離とを比較して、一致したアドレス距離がある場合には、第１のアドレス距離が一定以上近づいたとみなして、先行獲得要求を生成し、かつアドレス距離が一致した際の第２のアドレス距離に対応する、設定された優先度を選択して、選択した優先度を付与して優先度付き先行獲得要求を出力することになる。
【０１１２】
次にアドレス距離について説明する。図１７はアドレス距離を説明する図である。コードメモリ４３の0x00010000〜0x00010FFFの領域がキャッシュメモリ４２−１の0x00000000〜0x00000FFFへプログラムロードされて格納されるとする。
【０１１３】
ここで、プロセッサ４１−１は、キャッシュメモリ４２−１の0x00000000〜0x00000FFFの領域にアクセスして、この領域内に格納されている命令を読み出すが（命令フェッチ）、このときの命令フェッチのアドレスと、コードメモリ４３のプログラムロードされた最終アドレスをキャッシュメモリ４２−１のアドレスに変換したアドレスとの距離をアドレス距離とみなす。
【０１１４】
すなわち、コードメモリ４３のプログラムロードされた最終アドレスは0x00010FFFであるが、キャッシュメモリ４２−１上では0x00000FFFとなるので、命令フェッチのアドレスと0x00000FFFのアドレスとの間隔が、この場合のアドレス距離になるということである（したがって、アドレス距離解析部４１３では、コードメモリの最終アドレスをキャッシュメモリ上の最終アドレスの値に一旦変換してからアドレス距離を解析することになる）。
【０１１５】
図にもとづき具体的に見ていくと、命令フェッチアドレスが0x00000114であった場合は、0x00000114と0x00000FFFとの距離がアドレス距離Ｄ１であり、命令フェッチアドレスが0x00000F00であった場合は、0x00000F00と0x00000FFFとの距離がアドレス距離Ｄ２であり、命令フェッチアドレスが0x00000010であった場合は、0x00000010と0x00000FFFとの距離がアドレス距離Ｄ３である。
【０１１６】
このとき、アドレス距離Ｄ２が最も短いが、アドレス距離Ｄ２があらかじめ設定しておいた値（外部設定されたアドレス距離）と等しい場合には、フェッチアドレスとロードアドレスとのアドレス距離は一定値以上近づいたとみなす（一定値以上近づいたということは、命令フェッチアドレスと最終アドレスとが近づいて、最終アドレスを超えて命令フェッチアドレスが指定される場合があるということなので、このことはキャッシュミスが発生する可能性が大きいことを示している）。
【０１１７】
すなわち、図１６の構成からわかるように、複数個のアドレス距離を外部設定しておき、アドレス距離解析部４１３で出力されたアドレス距離と、設定されたアドレス距離とで等しいものがあった場合、アドレス距離解析部４１３で出力されたアドレス距離は一定値以上近づいたとみなしている。したがって、外部設定するアドレス距離は、キャッシュミスが発生するほどに距離が近づいている値を設定することになる（ユーザが任意に設定可能）。
【０１１８】
アドレス距離が一定以上近づいた場合、命令監視部４００のバス獲得要求優先度決定部４２０−１〜４２０−ｎは、キャッシュミスが生じやすく、キャッシュロード待ちが発生する確率が高いと判断し、共通プログラムロードバス先行獲得要求を出力し、該当するプロセッサの個別プログラムロードバスのバス優先度を上げ、他のプロセッサよりも優先してプログラムロードアクセスを行う。
【０１１９】
また、アドレス距離が一定以上離れている場合、バス獲得要求優先度決定部４２０−１〜４２０−ｎは、キャッシュミスが生じにくく、キャッシュロード待ちが発生する確率が低いと判断し、該当するプロセッサの個別プログラムロードバスのバス優先度を下げた共通プログラムロードバス先行獲得要求を出力し、他のプロセッサのプログラムロードアクセスを優先させる。
【０１２０】
従来では、キャッシュミスが発生してからコードメモリから命令コードをプログラムロードしていたので、演算効率の悪化を招いていたが、上記のような第４の実施の形態では、あらかじめキャッシュミスの発生する確率が高いものを予測することになり、キャッシュミスが発生する前に、前もってプログラムロードしておく構成としたので、キャッシュミスが発生する状態を格段に低減させることができ、この結果、各プロセッサのキャッシュロード待ち時間を削減することができるので、演算処理効率及びシステム性能を向上させることが可能になる。
【０１２１】
次に第５の実施の形態について説明する。図１８はプロセッサ装置の構成を示す図である。第５の実施の形態のプロセッサ装置５０は、プロセッサ５１−１〜５１−ｎ、キャッシュメモリ５２−１〜５２−ｎ、コードメモリ５３、バス選択部５４、命令監視部５００、バス調停部５６から構成される。
【０１２２】
コードメモリ５３は、プロセッサの命令を一括して格納する大容量低速メモリである。キャッシュメモリ５２−１〜５２−ｎは、プロセッサ５１−１〜５１−ｎ毎にフェッチバスＢｆ１〜Ｂｆｎを介して接続し、コードメモリ５３からプログラムロードされた命令を転写・格納する小容量高速メモリである。
【０１２３】
バス選択部５４は、プロセッサ５１−１〜５１−ｎと、コードメモリ５３との間に配置して、プロセッサ５１−１〜５１−ｎからコードメモリ５３へアクセスする際の、プロセッサ５１−１〜５１−ｎ毎に設けられたバスである個別プログラムロードバスＢｐ１〜Ｂｐｎと、コードメモリ５３へつながる共通プログラムロードバスＢｐｃとに接続し、通知された選択指示にもとづき個別プログラムロードバスを選択することで、選択されたプロセッサのコードメモリ５３へのアクセスを許可する。
【０１２４】
命令監視部５００は、個別プログラムロードバスＢｐ１〜Ｂｐｎを通じて、プロセッサ５１−１〜５１−ｎがコードメモリ５３からキャッシュメモリ５２−１〜５２−ｎへ命令をプログラムロードする際のロードアドレスのアクセス回数を監視する。そして、ロードアドレスアクセス回数が一定値以下の場合には、共通プログラムロードバスＢｐｃを先行して獲得できる先行獲得要求を生成し、先行獲得要求に優先度を付与して優先度付き先行獲得要求を出力する。
【０１２５】
バス調停部５６は、優先度付き先行獲得要求を受信して、プロセッサ５１−１〜５１−ｎの個別プログラムロードバスＢｐ１〜Ｂｐｎに対するバス要求を認識した場合、優先度の高い方のプロセッサが選択される選択指示をバス選択部５４に通知する。
【０１２６】
図１９は命令監視部５００の構成を示す図である。命令監視部５００は、プログラムロード監視部５１０−１〜５１０−ｎと、バス獲得要求優先度決定部５２０−１〜５２０−ｎとが設けられる。プログラムロード監視部５１０−１〜５１０−ｎは、個別プログラムロードバスＢｐ１〜Ｂｐｎが接続する。以下、プログラムロード監視部５１０−１とバス獲得要求優先度決定部５２０−１の構成のみ説明する。
【０１２７】
プログラムロード監視部５１０−１は、ロードアクセスカウンタ５１０ａを含む。ロードアクセスカウンタ５１０ａは、ロードアクセスをカウントする。
バス獲得要求優先度決定部５２０−１は、ロードアクセス回数設定部５２１、ロードアクセス比較部５２２−１〜５２２−ｍ、優先度設定部５２３、優先度選択部５２４、ＯＲ部５２５、優先度付き先行獲得要求出力部５２６から構成される。
【０１２８】
ロードアクセス回数設定部５２１は、ロードアクセス回数をｍ個設定し、設定されたロードアクセス回数をロードアクセス比較部５２２−１〜５２２−ｍへ送信する。なお、ロードアクセス回数設定部５２１には、ユーザが任意のロードアクセス回数を設定可能である。
【０１２９】
ロードアクセス比較部５２２−１〜５２２−ｍは、１つのロードアクセスと、ｍ個の設定されたロードアクセス回数とを比較して比較結果をそれぞれ出力する。例えば、一致していたら“Ｈ”出力、不一致なら“Ｌ”出力となる。優先度設定部５２３は、優先順位が１位からｍ位のｍ個の優先度を設定する。なお、優先度設定部５２３には、ユーザが任意の優先度を設定可能である。
【０１３０】
優先度選択部５２４は、ロードアクセス比較部５２２−１〜５２２−ｍから出力された信号が“Ｈ”である優先度を選択して出力する。例えば、ロードアクセス比較部５２２−１の出力のみが“Ｈ”で、そのときのロードアクセス比較部５２２−１の出力に対応する優先度が７に設定されていた場合は、優先度７が出力される。
【０１３１】
ＯＲ部５２５は、ロードアクセス比較部５２２−１〜５２２−ｍから出力された信号の論理和をとり、“Ｈ”を先行獲得要求として出力する。優先度付き先行獲得要求出力部５２６は、先行獲得要求に優先度を付与した優先度付き先行獲得要求Ｒ１をバス調停部５６に出力する。
【０１３２】
すなわち、命令監視部５００は、取得した第１のロードアドレスアクセス回数と、設定された第２のロードアドレスアクセス回数とを比較して、一致したアクセス回数がある場合には、第１のロードアドレスアクセス回数が一定値以下とみなして、先行獲得要求を生成し、かつアクセス回数が一致した際の第２のロードアドレスアクセス回数に対応する、設定された優先度を選択して、選択した優先度を付与して優先度付き先行獲得要求を出力する。
【０１３３】
図２０はコードメモリ５３へのプログラムロードアクセス回数の大小にもとづくキャッシュミスの発生割合を示す図である。コードメモリからキャッシュメモリへのプログラムロードの回数が多い場合、例えば、コードメモリ５３の0x00010000〜0x00010FFFの領域がキャッシュメモリ５２−１の0x00000000〜0x00000FFFへロードされたとする。すると、キャッシュメモリ５２−１上では、有効キャッシュエリアが広いため、キャッシュミスが発生しづらい。したがって、このようなプログラムロードは優先度を低く設定する。
【０１３４】
一方、コードメモリからキャッシュメモリへのプログラムロードの回数が少ない場合、例えば、コードメモリ５３の0x00300000〜0x003000FFの領域がキャッシュメモリ５２−２の0x00000000〜0x000000FFへロードされたとする。すると、キャッシュメモリ５２−２上では、有効キャッシュエリアが狭いため、キャッシュミスが発生しやすくなる。したがって、このようなプログラムロードは優先度を高くする。
【０１３５】
図２１はプログラムロードアクセス回数と個別プログラムロードバスアクセス優先度、キャッシュミスの関係を示す図である。プログラムロードアクセス回数が多いとキャッシュミスが発生しづらいので優先度を低くし、プログラムロードアクセス回数が少ないとキャッシュミスが発生しやすくなるので優先度を高くする。
【０１３６】
このように、プログラムロードアクセス回数が一定値以下の場合、キャッシュメモリに蓄えられているプログラム量が少ないため、キャッシュミスが発生しやすくなる。したがって、命令監視部５００内のバス獲得要求優先度決定部５２０−１〜５２０−ｎは、キャッシュロード待ちが発生する確率が高いと判断し、共通プログラムロードバス先行獲得要求を出力し、該当するプロセッサの個別プログラムロードバスのバス優先度を上げ、他のプロセッサよりも優先してプログラムロードアクセスを行う。
【０１３７】
また、プログラムロードアクセス回数が一定値以上の場合、キャッシュメモリ５２−１〜５２−ｎに蓄えられているプログラム量が多いため、キャッシュミスが発生しづらい。したがって、バス獲得要求優先度決定部５２０−１〜５２０−ｎは、キャッシュロード待ちが発生する確率が低いと判断し、共通プログラムコードバス先行獲得要求を出力し、該当するプロセッサの個別プログラムロードバスのバス優先度を下げ、他のプロセッサのプログラムロードアクセスを優先させる。
【０１３８】
このように第５の実施の形態では、ロードアドレスのアクセス回数にもとづき、キャッシュメモリへのプログラムロードの優先度を決定する構成としたので、各プロセッサのキャッシュロード待ち時間を削減することができ、演算処理効率及びシステム性能の向上を図ることが可能になる。
【０１３９】
以上説明したように、本発明によれば、各プロセッサがデータメモリへアクセスする際のバス要求衝突回数を低減させることにより、命令ストールが発生する回数を低減することが可能になる。
【０１４０】
また、各プロセッサがデータメモリへアクセスする際のアクセス順序を制御することにより、読み込み／書き込み処理回数が減少して、メモリアクセス時間を短縮することが可能になる。
【０１４１】
さらに、キャッシュミス発生時、コードメモリからキャッシュメモリへのロードを行う場合のメモリアクセスを制御することにより、各プロセッサのキャッシュロード待ち時間を短縮することが可能になる。
【０１４２】
（付記１）  演算処理を行うプロセッサ装置において、
複数のプロセッサと、
演算処理に必要なデータを格納するデータメモリと、
前記プロセッサと前記データメモリとの間に配置して、前記プロセッサから前記データメモリへアクセスする際の、前記プロセッサ毎に設けられたバスである個別制御バスと、前記データメモリへつながる共通制御バスとに接続し、通知された選択指示にもとづき前記個別制御バスを選択することで、選択された前記プロセッサの前記データメモリへのアクセスを許可するバス選択部と、
前記プロセッサの前記個別制御バスへのバス要求を認識して、前記選択指示を前記バス選択部に通知するバス調停部と、
前記個別制御バスを通じて前記バス要求数とバス要求衝突数とをそれぞれカウントして集計し、集計結果から前記プロセッサが前記データメモリにアクセスする際の優先度を設定し、優先度を低く設定した前記プロセッサへはウェイト指示信号を送信して、優先度を低く設定した前記プロセッサの前記データメモリへのアクセス開始時刻を遅らせるバス監視部と、
を有することを特徴とするプロセッサ装置。
【０１４３】
（付記２）  前記バス監視部は、前記集計結果から、前記バス要求数が少なく、前記バス要求衝突数が少ないプロセッサを検出し、検出した前記プロセッサの優先度を低く設定して、前記ウェイト指示信号の送信対象とすることを特徴とする付記１記載のプロセッサ装置。
【０１４４】
（付記３）  演算処理を行うプロセッサ装置において、
複数のプロセッサと、
演算処理に必要なデータを格納するデータメモリと、
前記プロセッサ毎にフェッチバスを介して接続し、前記プロセッサの命令を格納する複数のコードメモリと、
前記プロセッサと前記データメモリとの間に配置して、前記プロセッサから前記データメモリへアクセスする際の、前記プロセッサ毎に設けられたバスである個別制御バスと、前記データメモリへつながる共通制御バスとに接続し、通知された選択指示にもとづき前記個別制御バスを選択することで、選択された前記プロセッサの前記データメモリへのアクセスを許可するバス選択部と、
前記プロセッサが前記コードメモリから前記命令を読み出す際に、前記フェッチバスを通じて、前記命令と前記コードメモリへのアクセスアドレスとを取得し、前記命令と前記アクセスアドレスとが共に前記データメモリへのアクセスに必要なデータである場合には、前記共通制御バスを先行して獲得できる先行獲得要求を生成し、前記先行獲得要求に優先度を付与して優先度付き先行獲得要求を出力する命令監視部と、
前記優先度付き先行獲得要求を受信して、前記プロセッサの前記個別制御バスに対するバス要求を認識した場合、前記優先度の高い方のプロセッサが選択される前記選択指示を前記バス選択部に通知するバス調停部と、
を有することを特徴とするプロセッサ装置。
【０１４５】
（付記４）  前記データメモリへのアクセスが発生する命令オペコードと、前記データメモリへのアクセスが発生するアクセスアドレスとを外部から設定可能なデータ設定部と、優先度を外部から設定可能な優先度設定部とをさらに有し、前記命令監視部は、前記フェッチバスを流れる前記アクセスアドレスと、設定された前記アクセスアドレスとを比較し、一致したアクセスアドレスがある場合には、前記一致したアクセスアドレスに対して設定された優先度を選択し、前記フェッチバスを流れる前記命令内の命令オペコードと、設定された命令オペコードと、を比較した際に命令オペコードが一致し、かつ前記一致したアクセスアドレスがある場合には、前記先行獲得要求を生成し、前記先行獲得要求に対して、選択した前記優先度を付与して前記優先度付き先行獲得要求を出力することを特徴とする付記３記載のプロセッサ装置。
【０１４６】
（付記５）  前記データメモリへのアクセスが発生する命令オペコードと、前記データメモリへのアクセスが発生するアクセスアドレスとを外部から設定可能なデータ設定部と、優先度を外部から設定可能な優先度設定部とをさらに有し、前記命令監視部は、前記フェッチバスを流れる前記命令内の命令オペコードと、設定された命令オペコードとを比較し、一致した命令オペコードがある場合には、前記一致した命令オペコードに対して設定された優先度を選択し、前記フェッチバスを流れる前記アクセスアドレスと、設定された前記アクセスアドレスと、を比較した際にアクセスアドレスが一致し、かつ前記一致した命令オペコードがある場合には、前記先行獲得要求を生成し、前記先行獲得要求に対して、選択した前記優先度を付与して前記優先度付き先行獲得要求を出力することを特徴とする付記３記載のプロセッサ装置。
【０１４７】
（付記６）  演算処理を行うプロセッサ装置において、
複数のプロセッサと、
演算処理に必要なデータを格納するデータメモリと、
前記プロセッサ毎にフェッチバスを介して接続し、前記プロセッサの命令を格納する複数のコードメモリと、
連続する複数のアクセスアドレスで、前記データメモリへ一括してアクセスするためのバスである一括アクセス制御バスと、個別のアクセスアドレスで前記データメモリへアクセスするためのバスである個別アクセス制御バスと、前記プロセッサが前記コードメモリから前記命令を読み出す際に、前記フェッチバスを通じて、前記命令内に含まれる前記データメモリへのアクセスアドレスを取得するアクセスアドレス取得部と、取得した一定数のアクセスアドレスの中に、連続性を持つアクセスアドレスが存在するか否かを解析する連続性解析部と、連続性を持つアクセスアドレスが存在する場合には、連続するアクセスアドレスを、前記一括アクセス制御バスを通じて出力する連続アドレス出力部と、連続性を持つアクセスアドレスが存在する場合には前記一括アクセス制御バスを選択させ、連続性を持つアクセスアドレスが存在しない場合には前記個別アクセス制御バスを選択させるためのバス選択信号を出力するバス選択信号出力部と、前記プロセッサから前記データメモリへアクセスする際の、前記プロセッサ毎に設けられたバスである個別制御バスに対して、前記バス選択信号にもとづいて、前記一括アクセス制御バスまたは前記個別アクセス制御バスのいずれかを前記個別制御バスに接続するプロセッサ側バス接続部と、前記データメモリへつながる共通制御バスに対して、前記バス選択信号にもとづいて、前記一括アクセス制御バスまたは前記個別アクセス制御バスのいずれかを前記共通制御バスに接続するデータメモリ側バス接続部と、から構成され、前記プロセッサと前記データメモリの間に配置されて、前記個別制御バスを介して前記プロセッサと接続し、前記共通制御バスを介して前記データメモリと接続して、前記プロセッサが前記データメモリへアクセスする際の調停を行うバス調停部と、
を有することを特徴とするプロセッサ装置。
【０１４８】
（付記７）  前記連続性解析部は、一定数のアクセスアドレスの中に、連続性を持つアクセスアドレスが存在すると判定した場合は、連続性を持つアクセスアドレスを抽出して連続するように並び替えを行い、前記連続アドレス出力部は、並び替え後の連続するアクセスアドレスを、前記一括アクセス制御バスを通じて出力することを特徴とする付記６記載のプロセッサ装置。
【０１４９】
（付記８）  前記連続性解析部は、一定数のアクセスアドレスの中に、連続性を持つアクセスアドレスが存在すると判定した場合に、連続しているアクセスアドレスを、あらかじめ前記データメモリのアドレスを分割しておいたブロック単位にまとめ、前記連続アドレス出力部は、連続するアクセスアドレスをブロック単位毎に、前記一括アクセス制御バスを通じて出力することを特徴とする付記６記載のプロセッサ装置。
【０１５０】
（付記９）  演算処理を行うプロセッサ装置において、
複数のプロセッサと、
前記プロセッサの命令を格納するコードメモリと、
前記プロセッサ毎にフェッチバスを介して接続し、前記コードメモリからプログラムロードされた前記命令を格納する複数のキャッシュメモリと、
前記プロセッサと前記コードメモリとの間に配置して、前記プロセッサから前記コードメモリへアクセスする際の、前記プロセッサ毎に設けられたバスである個別プログラムロードバスと、前記コードメモリへつながる共通プログラムロードバスとに接続し、通知された選択指示にもとづき前記個別プログラムロードバスを選択することで、選択された前記プロセッサの前記コードメモリへのアクセスを許可するバス選択部と、
前記フェッチバスを通じて、前記プロセッサが前記キャッシュメモリから前記命令を読み出す際のフェッチアドレスを取得し、かつ前記個別プログラムロードバスを通じて、前記プロセッサが前記コードメモリから前記キャッシュメモリへ前記命令をプログラムロードする際のロードアドレスを取得し、取得した前記フェッチアドレスと前記ロードアドレスとのアドレス距離を解析して、前記アドレス距離が一定値以上近づいた場合には、前記共通プログラムロードバスを先行して獲得できる先行獲得要求を生成し、前記先行獲得要求に優先度を付与して優先度付き先行獲得要求を出力する命令監視部と、
前記優先度付き先行獲得要求を受信して、前記プロセッサの前記個別プログラムロードバスに対するバス要求を認識した場合、前記優先度の高い方のプロセッサが選択される前記選択指示を前記バス選択部に通知するバス調停部と、
を有することを特徴とするプロセッサ装置。
【０１５１】
（付記１０）  アドレス距離を外部から設定可能なアドレス距離設定部と、優先度を外部から設定可能な優先度設定部とをさらに有し、前記命令監視部は、取得した前記フェッチアドレス及び前記ロードアドレスから求めた第１のアドレス距離と、設定された第２のアドレス距離とを比較して、一致したアドレス距離がある場合には、前記第１のアドレス距離が一定値以上近づいたとみなして、前記先行獲得要求を生成し、かつアドレス距離が一致した際の前記第２のアドレス距離に対応する、設定された優先度を選択して、選択した前記優先度を付与して前記優先度付き先行獲得要求を出力することを特徴とする付記９記載のプロセッサ装置。
【０１５２】
（付記１１）  演算処理を行うプロセッサ装置において、
複数のプロセッサと、
前記プロセッサの命令を格納するコードメモリと、
前記プロセッサ毎にフェッチバスを介して接続し、前記コードメモリからプログラムロードされた前記命令を格納する複数のキャッシュメモリと、
前記プロセッサと前記コードメモリとの間に配置して、前記プロセッサから前記コードメモリへアクセスする際の、前記プロセッサ毎に設けられたバスである個別プログラムロードバスと、前記コードメモリへつながる共通プログラムロードバスとに接続し、通知された選択指示にもとづき前記個別プログラムロードバスを選択することで、選択された前記プロセッサの前記コードメモリへのアクセスを許可するバス選択部と、
前記個別プログラムロードバスを通じて、前記プロセッサが前記コードメモリから前記キャッシュメモリへ前記命令をプログラムロードする際のロードアドレスのアクセス回数を監視し、前記ロードアドレスのアクセス回数が一定値以下の場合には、前記共通プログラムロードバスを先行して獲得できる先行獲得要求を生成し、前記先行獲得要求に優先度を付与して優先度付き先行獲得要求を出力する命令監視部と、
前記優先度付き先行獲得要求を受信して、前記プロセッサの前記個別プログラムロードバスに対するバス要求を認識した場合、前記優先度の高い方のプロセッサが選択される前記選択指示を前記バス選択部に通知するバス調停部と、
を有することを特徴とするプロセッサ装置。
【０１５３】
（付記１２）  ロードアドレスのアクセス回数を外部から設定可能なアドレス距離設定部と、優先度を外部から設定可能な優先度設定部とをさらに有し、前記命令監視部は、取得した第１のロードアドレスアクセス回数と、設定された第２のロードアドレスアクセス回数とを比較して、一致したアクセス回数がある場合には、前記第１のロードアドレスアクセス回数が一定値以下とみなして、前記先行獲得要求を生成し、かつアクセス回数が一致した際の前記第２のロードアドレスアクセス回数に対応する、設定された優先度を選択して、選択した前記優先度を付与して前記優先度付き先行獲得要求を出力することを特徴とする付記１１記載のプロセッサ装置。
【図面の簡単な説明】
【０１５４】
【図１】プロセッサ装置の原理図である。
【図２】バス監視部の構成を示す図である。
【図３】パイプライン処理を示すタイムチャートである。
【図４】プロセッサ装置の動作を示すタイムチャートである。
【図５】プロセッサ装置の構成を示す図である。
【図６】命令監視部の構成を示す図である。
【図７】パイプライン処理を示すタイムチャートである。
【図８】プロセッサ装置の動作を示すタイムチャートである。
【図９】変形例のプロセッサ装置の構成を示す図である。
【図１０】プロセッサ装置の構成を示す図である。
【図１１】バス調停部の詳細構成を示す図である。
【図１２】パイプライン処理を示すタイムチャートである。
【図１３】プロセッサ装置の動作を示すタイムチャートである。
【図１４】変形例の第３の実施の形態の動作を示す図である。
【図１５】プロセッサ装置の構成を示す図である。
【図１６】命令監視部の構成を示す図である。
【図１７】アドレス距離を説明する図である。
【図１８】プロセッサ装置の構成を示す図である。
【図１９】命令監視部の構成を示す図である。
【図２０】コードメモリへのプログラムロードアクセス回数の大小にもとづくキャッシュミスの発生割合を示す図である。
【図２１】プログラムロードアクセス回数と個別プログラムロードバスアクセス優先度、キャッシュミスの関係を示す図である。
【符号の説明】
【０１５５】
１０  プロセッサ装置
１１−１〜１１−ｎ  プロセッサ
１２−１〜１２−ｎ  コードメモリ
１３  データメモリ
１４  バス選択部
１５  バス調停部
１６  バス監視部
Ｂ１〜Ｂｎ  個別制御バス
Ｂｃ  共通制御バス
【図１】
2007241918.tif 000003
【図２】
2007241918.tif 000004
【図３】
2007241918.tif 000005
【図４】
2007241918.tif 000006
【図５】
2007241918.tif 000007
【図６】
2007241918.tif 000008
【図７】
2007241918.tif 000009
【図８】
2007241918.tif 000010
【図９】
2007241918.tif 000011
【図１０】
2007241918.tif 000012
【図１１】
2007241918.tif 000013
【図１２】
2007241918.tif 000014
【図１３】
2007241918.tif 000015
【図１４】
2007241918.tif 000016
【図１５】
2007241918.tif 000017
【図１６】
2007241918.tif 000018
【図１７】
2007241918.tif 000019
【図１８】
2007241918.tif 000020
【図１９】
2007241918.tif 000021
【図２０】
2007241918.tif 000022
【図２１】
2007241918.tif 000023