説明

共有経路調停方法及びマルチシステム

【課題】マルチシステム全体でみた平均許可待ち時間を短くできる新しいバス調停方法の実現。
【解決手段】複数の処理装置11-0,1,2,3と、複数の処理装置によりアクセスされる共有資源14と、共有経路13と、共有経路の数の処理装置への割当てを制御する共有経路調停回路12と、を備えるマルチシステムであって、各処理装置は、実行予定の処理において共有資源14へのアクセスを要求する回数をカウントしてアクセス要求回数信号Niを出力するアクセス要求先読みユニット29を備え、共有経路調停回路12は、複数の処理装置から共有経路への割当てを要求された時には、アクセス要求回数の少ない処理装置に共有経路を割当てる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の処理装置が共有経路を介して共有資源にアクセスするマルチシステム及びそのようなシステムにおいて共有経路を割当てる共有経路調停方法に関する。
【背景技術】
【0002】
コンピュータシステムにおいて、プロセッサなどの処理装置を複数個設け、並行して処理を進めることにより、処理速度を向上することが従来から行われている。複数個の処理装置は、共有メモリなどの共有資源にアクセスして、処理装置間のデータの転送などを行う。このようなマルチシステムには、各種の方式がある。例えば、通常のCPUなどで構成されるマスタプロセッサと、浮動小数点演算や入出力処理などのマスタプロセッサで行うのが適当でない特定の処理を実行するコプロセッサと、を有するコプロセッサ方式のマルチプロセッサシステムがあり、このシステムはパーソナルコンピュータなどに広く使用されている。このシステムでは、例えばマスタプロセッサが処理した処理結果を外部に出力する場合には、マスタプロセッサは処理結果を共有メモリに記憶し、入出力処理用プロセッサに出力する共有メモリのアドレス範囲を指定する。これに応じて入出力処理用プロセッサは指定された共有メモリのアドレス範囲をアクセスして出力ポートにデータを転送する。この間、共有メモリへのアクセス権は入出力処理用プロセッサが占有し、マスタプロセッサは共有メモリにアクセスできない。もし一度に出力するデータ量が多いと、マスタプロセッサなどのほかのプロセッサが長時間共有メモリにアクセスできないという事態になるので、例えば、一回で連続して転送可能なデータ量の上限を定めて、一回の共有メモリへのアクセスが終了すると、他のプロセッサに共有メモリへのアクセス権を渡すことが行われる。これがバス(共有経路)調停である。
【0003】
マルチシステムとしては、他にも、同じような機能の複数のプロセッサを共有バスを介して共有メモリに接続し、処理の進行に応じて、各プロセッサに随時処理を割当て、処理結果を統合して処理を進めるマルチプロセッサシステムや、回線などの通信経路を介して複数の処理装置(コンピュータ、プロセッサ)や記憶装置(メモリ)などを接続し、相互に通信などを行いながら処理を進めるシステムもある。いずれの場合も、複数の処理装置が共有する資源にアクセスするための共有経路を有し、共有経路の調停を行う必要がある。
【0004】
共有経路の調停方式は、従来から各種提案されている。例えば、共有経路へのアクセスが発生した順に割当てる方式(FIFO方式)や、共有経路へのアクセスが発生している処理装置に順に割当てる方式(ラウンドロビン方式)や、共有経路へのアクセス回数の多い処理装置に優先的に割当てる方式や、共有経路へのアクセス回数がもっとも長く行われていない処理装置に優先的に割当てる方式(Least Recently Used: LRU方式)などがある。
【0005】
本発明は、共有経路の調停を行う構成であれば適用可能であるが、説明を簡単にするために、同じような機能の複数のプロセッサを共有バスを介して共有メモリに接続し、処理の進行に応じて、各プロセッサに随時処理を割当て、処理結果を統合して処理を進めるマルチプロセッサシステムを例として説明を行う。
【0006】
【特許文献1】特開平5−216688号公報
【特許文献2】特開平11−73397号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
マルチシステムにおける共有経路(バス)調停方式では、共有バスへのアクセス要求が発生してからバスの占有が許可されてアクセスが行えるようになるまでの許可待ち時間をできるだけ短くすることを要求される。
【0008】
上記のように、マルチシステムにおける共有経路(バス)調停方式には各種の方式があるが、いずれの従来方式も、各プロセッサに平均的にバス占有権を割当てること、言い換えれば許可待ち時間をできるだけ均等にするか、バスを使用する頻度の高いプロセッサに優先的にバス占有権を割当てることを主眼にしている。しかし、従来のバス調停方式では、バスの使用頻度の低いプロセッサに対するバス占有権の割当てが遅くなり、システム全体でみた平均許可待ち時間が長く、システム全体としてはかならずしも効率的でないという問題があった。
【0009】
本発明は、マルチシステム全体でみた平均許可待ち時間を短くできる、マルチシステムにおける新しいバス調停方法の実現を目的とする。
【課題を解決するための手段】
【0010】
上記目的を実現するため、本発明の共有経路(バス)調停方法は、各処理装置で実行予定の処理における共有資源へのアクセス要求回数を算出して、複数の処理装置から共有経路への割当てを要求された時には、アクセス要求回数のもっとも少ない処理装置に共有経路を割当てる。
【0011】
すなわち、本発明の共有経路調停方法は、複数の処理装置と、前記複数の処理装置によりアクセスされる共有資源と、前記複数の処理装置が前記共有資源に共通にアクセスするための共有経路と、を備えるマルチシステムにおいて、前記共有経路の前記複数の処理装置への割当てを制御する共有経路調停方法であって、前記複数の処理装置のそれぞれにおいて、当該処理装置で実行する予定の処理において前記共有資源へのアクセスを要求する回数をカウントして、アクセス要求回数を算出し、前記複数の処理装置から前記共有経路への割当てを要求された時には、前記アクセス要求回数のもっとも少ない処理装置に前記共有経路を割当てることを特徴とする。
【0012】
また、本発明のマルチシステムは、複数の処理装置と、前記複数の処理装置によりアクセスされる共有資源と、前記複数の処理装置が前記共有資源に共通にアクセスするための共有経路と、前記共有経路の前記複数の処理装置への割当てを制御する共有経路調停回路と、を備えるマルチシステムであって、前記複数の処理装置のそれぞれは、当該処理装置で実行する予定の処理において前記共有資源へのアクセスを要求する回数をカウントして、前記共有経路調停回路にアクセス要求回数を出力するアクセス要求先読みユニットを備え、前記共有経路調停回路は、前記複数の処理装置のそれぞれの前記アクセス要求先読みユニットから出力される前記アクセス要求回数を受け、前記複数の処理装置から前記共有経路への割当てを要求された時には、前記アクセス要求回数のもっとも少ない処理装置に前記共有経路を割当てることを特徴とする。
【0013】
分岐命令実行時には、分岐予測が不成功の場合に限って算出した前記アクセス要求回数は意味がなくなるので破棄する。図示していないが、条件分岐命令などにおいて、条件の成立か否かによって2つのアドレスに分かれ、これらの2つの中で確率の高い一方の分岐先を予め予測して命令の先読みを行い、パイプラインの流れを円滑にする方式が使われる場合がある。しかしながら、それが失敗した場合に他の一方のアドレスに変更して命令読み出しをやり直すことになり、これを分岐予測の不成功と呼ぶことにする。分岐命令における2つのアドレスとは、該分岐命令の次のアドレスと、該分岐命令に含まれる情報から生成する分岐先アドレスである。一度計算した分岐アドレスや分岐履歴などは、分岐ターゲットバッファと呼ぶバッファに記憶しておき、次回の同一分岐命令実行からはこの記憶されたアドレスや分岐履歴に基づいて分岐先アドレスを予測する。
【0014】
また、もっとも少ないアクセス要求回数が、複数の処理装置から出力される場合が起こり得るが、その場合には、もっとも少ないアクセス要求回数を出力する処理装置の間で、ラウンドロビン方式で共有経路を割当てる。
【発明の効果】
【0015】
本発明によれば、マルチシステム全体でみた共有経路(バス)の平均許可待ち時間を、従来方式に比べて短縮することができ、例えばラウンドロビン方式に比べて30〜50%短縮することができる。
【発明を実施するための最良の形態】
【0016】
前述のように、本発明は、共有経路の調停を行う構成であれば適用可能であるが、説明を簡単にするために、同じような機能の複数のプロセッサを共有バスを介して共有メモリに接続し、処理の進行に応じて、各プロセッサに随時処理を割当て、処理結果を統合して処理を進めるマルチプロセッサシステムを例として説明を行う。
【0017】
図1は、本発明の実施例のマルチプロセッサシステムの全体構成を示すブロック図である。図示のように、本システムは、4個のプロセッサ11−0〜11−3と、バス調停回路12と、共有バス13と、共有メモリ14と、を有する。上記の構成要素のうち、共有メモリ14を除く部分は、1個のチップに実装されており、マルチコア方式のチップとなっている。なお、共有メモリ14を同一チップ内に設けることも可能であり、逆に各プロセッサ11−0〜11−3及びバス調停回路12を複数のチップに実装することも可能である。
【0018】
プロセッサ11−0〜11−3は、すべて同じ構成で、通常のマイクロプロセッサと同様の構成を有しており、共有バス13を介して共有メモリ14と接続するプロセッサバス(アドレスバス及びデータバス)0〜3を有する。また、プロセッサ11−0〜11−3からバス調停回路12にそれぞれバス要求信号R0〜R3及びバス要求回数信号N0〜N3が出力され、バス調停回路12からプロセッサ11−0〜11−3にそれぞれバス許可信号A0〜A3が出力される。プロセッサ11−iが、共有バス13の占有権要求(バス要求)を行う時には、バス調停回路12にバス要求信号Riをアサートする。プロセッサ11−iからバス調停回路12に出力されているバス要求回数信号Niの値は、プロセッサ11−iがバス要求信号を発すると予定される回数である。バス調停回路12は、バス許可信号Aiをアサートすることにより、プロセッサ11−iに共有バス13の占有権を与える。
【0019】
同時に複数のプロセッサがバス要求を行った時には、バス調停回路12はバス要求を行っているプロセッサのバス要求回数信号Ni(iは0〜3の2つ以上)を比較して、その値が最小であるプロセッサ11−iに共有バス13の占有許可(バス許可)を与える。以上のようにして、プロセッサ11−iは、プロセッサバスi及び共有バス13を介して共有メモリ14にアクセスできるようになる。
【0020】
例えば、プロセッサ11−1及びプロセッサ11−2がそれぞれバス要求信号A1及びA2をアサートしてバス要求を行い、その時にバス要求回数信号N1<バス要求回数信号N2であったとする。この場合、バス調停回路12は、バス要求回数信号が小さいプロセッサ11−1にバス許可信号A1をアサートする。これにより、プロセッサ11−1はプロセッサバス1及び共有バス13を介して共有メモリ14にアクセスできるようになる。
【0021】
また、一個のプロセッサ11−iのみがバス要求信号Riをアサートしており、他のプロセッサj(j≠i)はバス要求信号Rjをアサートしていない時には、バス調停回路12はバス許可信号Aiをアサートする。
【0022】
システムにおける処理は、プロセッサ11−0〜11−3のうちのいずれか1つが、プログラムを共有メモリ14にロードし、そのプログラムの1個又は複数のスレッドを各プロセッサに割当てる。各プロセッサは割当てられたスレッドを実行し、共有メモリ14に演算の結果を書き込む。その後、いずれかのプロセッサが演算結果を利用して更に処理を進めるという具合に並列して処理を進める。
【0023】
図2は、プロセッサ11−i(i=0〜3)の構成を示す図であり、プロセッサ11−0、11−1、11−2、11−3はすべて同じ構成を有する。図示のように、プロセッサ11−iは、内部にプログラムカウンタ22を有する命令フェッチユニット21と、プログラムを記憶する命令キャッシュ23と、実行するために命令キャッシュ23から読み出した命令を一時的に保持する命令レジスタ24と、命令を解読する命令デコードユニット25と、共有メモリ14からロードした実行する処理に関係する部分のデータを記憶するデータキャッシュ26と、命令デコードユニット25で解読した命令に基づいて発生される制御信号を一時的に記憶する制御レジスタ27と、共有バスを使用する時にバス調停回路12にバス要求信号Riを出力すると共にバス調停回路12からバス許可信号Aiを受けるバスステートコントローラ28と、発生すると予測されるバス要求信号の発生回数を算出してバス要求回数信号Niを出力するバス要求先読みユニット29と、を有する。
【0024】
命令キャッシュ23は、所定の記憶容量を有し、実行するプログラムを記憶しているが、実行するプログラムが命令キャッシュ23に記憶されていない時には、共有メモリ14にアクセスして所定の記憶容量分のプログラムをロードして記憶する。この時には、共有メモリ14にアクセスするため共有バスの占有権を要求して獲得する必要があり、1回のアクセスでロードするプログラムの量は一定である。
【0025】
データキャッシュ26は、所定の記憶容量を有し、その一部は実行するプログラムに関係する所定量のデータを共有メモリ14からロードして記憶し、他の部分は処理結果などを一時的に記憶する。関係するデータがデータキャッシュ26に存在しない時には、共有メモリ14にアクセスして所定の記憶容量分のデータをロードして記憶する。また、1回の処理が終了した時や処理結果が所定量以上になった時には、共有メモリ14にアクセスして処理結果を共有メモリ14に転送する。これらの時には、共有メモリ14にアクセスするため共有バスの占有権を要求して獲得する必要があり、1回のアクセスでロード及び転送するプログラムの量は一定である。
【0026】
ここでは、説明を簡単にするために、データキャッシュ26と共有メモリ14との間で、データのロード及び転送に関するバス要求のみを先読みし、共有メモリ14から命令キャッシュ23へのプログラムのロードに関するバス要求は先読みの対象としないが、これを含めることも可能である。
【0027】
次に図2の回路構成における動作を説明する。まず、プロセッサ11−i(i=0〜3)の命令フェッチユニット21のプログラムカウンタ22から命令キャッシュ23に命令アドレスが供給される。命令アドレスで指定された命令が命令キャッシュ23に保存されている場合、命令キャッシュ23から命令レジスタ24に命令がフェッチされる。保存されていない場合、共有メモリ14から命令キャッシュ23と命令レジスタ24に、共有バス13とプロセッサバスiを介して命令がフェッチされる。
【0028】
次に、命令レジスタ24から命令デコードユニット25に命令が供給されて、命令デコードユニット25が命令のデコードを行う。命令デコードユニット25は、命令のデコード時に、その命令がメモリアクセスを行うかどうかを調べる。メモリアクセスを行う場合、アクセス対象のデータがデータキャッシュ26に保存されているかどうかを調べる目的で、命令デコードユニット25からデータキャッシュ26にデータアドレスが供給される。アクセス対象のデータがデータキャッシュ26に保存されている場合には、データキャッシュ26から命令デコードユニット25に供給されているバス要求起動信号がネゲート(無効に)される。保存されていない場合には、バス要求起動信号がアサート(有効に)される。命令デコードユニット25から制御レジスタ27に、バス要求起動信号を含む制御信号群が供給される。なお、アクセス対象のデータがデータキャッシュに保存されていない場合には、バス要求起動信号がアサートされてから適当なクロックサイクル後に、共有メモリ14からデータキャッシュ26に、またはデータキャッシュ26から共有メモリ14に、共有バス13とプロセッサバスiを介してデータが転送される。
【0029】
次に、制御レジスタ27からバスステートコントローラ28にバス要求起動信号が供給される。バス要求起動信号がアサートされている場合、バスステートコントローラ28からバス調停回路12に供給されているバス要求信号Riが適当なクロックサイクル後にアサートされる。バス要求起動信号がネゲートされている場合、バス要求信号Riはネゲートされたままである。
【0030】
一方、命令フェッチユニット21のプログラムカウンタ22からバス要求先読みユニット29に命令アドレスが供給され、制御レジスタ27からバス要求先読みユニット29にバス要求起動信号が供給され、バス調停回路12からバス要求先読みユニット29にバス許可信号Aiが供給される。バス要求先読みユニット29は、命令アドレスとバス要求起動信号とバス許可信号Aiに基づいてプロセッサiの所定時間内に生じると予測されるバス要求回数を計算し、得られた回数をバス要求回数信号Niとしてバス調停回路12に供給する。
【0031】
図3は、バス調停回路12の構成図である。図示のように、バス調停回路12は、最小値選択回路31と、4個の一致回路32−0〜32−3と、4個のANDゲート33−0〜33−3と、重複除去回路34と、を有する。最小値選択回路31は、プロセッサ11−0〜11−3から出力されるバス要求回数信号N0〜N3とバス要求信号R0〜R3が入力され、バス要求信号iがアサートされているプロセッサ11−iのバス要求回数信号N0〜N3のうちで値が最小のものを選択し、最小値信号として一致回路32−0〜32−3に出力する。ただし、複数のバス要求回数信号が最小値をとる場合もある。この場合、最小値をとっている複数のバス要求回数信号をラウンドロビン方式によって、バス優先権が特定のプロセッサに偏らないようにする。
【0032】
一致回路32−i(i=0〜3)は、それぞれバス要求回数信号Niの値と最小値選択回路31から供給される最小値の値が一致するかを判定し、一致する場合には一致信号Biをアサートし、一致しない場合はBiをネゲートする。
【0033】
ANDゲート33−i(i=0〜3)は、それぞれ一致信号Biがアサートされ、かつバス要求信号Riがアサートされた場合に、バス許可候補信号Ciをアサートし、それ以外の場合にはネゲートする。
【0034】
従って、プロセッサ11−iがバス要求信号Riをアサートしてバス要求を行った時に、バス要求回数信号Niの値がすべてのバス要求回数信号N0〜N3の中で最小値であれば、バス許可候補信号Ciがアサートされる。
【0035】
重複除去回路34は、バス許可候補信号C0〜C3が入力され、複数個のバス許可候補信号がアサートされている場合はその中から1個のバス許可候補信号Ciを選択してバス許可信号Aiをアサートする。一個のバス許可候補信号Ciだけがアサートされている場合はそれに対応するバス許可信号Aiをアサートする。バス許可候補信号C0〜C3がすべてネゲートされている場合は、バス許可信号A0〜A3をすべてネゲートする。バス許可信号A0〜A3は、それぞれ重複除去回路34からプロセッサ11−0〜11−3に供給される。
【0036】
次に、プロセッサのバス要求先読みユニット29のより詳細な構成を説明する。
【0037】
図4は、バス要求先読みユニット29の構成図である。図示のように、バス要求先読みユニット29は、バス要求解析回路41と、バス許可解析回路42と、未来のバス要求カウンタ43と、長期未許可検出回路44と、マルチプレクサ45と、を有する。
【0038】
バス要求解析回路41は、命令フェッチユニット21から命令アドレスを受け、制御レジスタ27からバス要求起動信号を受け、未来のバス要求カウンタ43にカウントアップ信号を供給する。バス要求解析回路41は、命令アドレスとバス要求起動信号に基づき、命令フェッチユニット21でフェッチされ命令デコードユニット25でデコードされた命令がバス要求を起動するかどうかを解析し、起動する場合に限りカウントアップ信号をアサートする。従って、プロセッサ11−iが命令キャッシュ23又はメモリからフェッチしデコードした命令がバス要求を起動する場合、バス先読みユニット29の未来のバス要求カウンタ43の値、すなわちプロセッサ11−iのバス要求回数が1だけ増加する。
【0039】
バス許可解析回路42は、バス調停回路12からバス許可信号Aiが供給され、未来のバス要求カウンタ43にカウントダウン信号が供給される。バス許可解析回路42は、バス許可信号Aiに基づいてプロセッサ11−iがバス調停回路12からバス許可を与えられたかどうかを解析し、与えられた場合に限り1クロックサイクル期間だけカウントダウン信号をアサートする。従って、プロセッサ11−iがバス調停回路12からバス許可を与えられた場合、バス要求先読みユニット29の未来のバス要求カウンタ43の値、すなわちプロセッサ11−iのバス要求回数信号Niが1だけ減少する。
【0040】
未来のバス要求カウンタ43からマルチプレクサ45に未来のバス要求回数候補信号が供給される。未来のバス要求回数候補信号の値は、未来のバス要求カウンタ43が保持する値であり、カウントアップ信号がアサートされているとクロックエッジに同期して1だけ増加し、カウントダウン信号がアサートされていると1だけ減少する。カウントアップ信号とカウントダウン信号の両方がアサートされている場合は、値は変化しない。
【0041】
長期未許可検出回路44は、制御レジスタ27からバス要求起動信号が供給され、バス調停回路12からバス許可信号Aiが供給され、マルチプレクサ45に長期未許可信号を供給する。マルチプレクサ45は、バス調停回路12にバス要求回数信号Niを供給する。長期未許可検出回路44は、バス要求起動信号とバス許可信号Aiに基づき、プロセッサ11−iがバス要求を起動してから長期間バス許可を受けていないかどうかを判定し、長期間バス許可を受けていない場合に限り、長期未許可信号をアサートする。マルチプレクサ45からバス調停回路12に供給されるバス要求回数信号Niの値は、長期未許可信号がネゲートされている場合は未来のバス要求回数候補信号の値に一致し、長期未許可信号がアサートされている場合は−1になる。
【0042】
以上のようにして、プロセッサ11−iのバス要求先読みユニット29は、命令フェッチユニット21から供給される命令アドレスと制御レジスタ27から供給されるバス要求起動信号とバス調停回路12から供給されるバス許可信号Aiに基づきプロセッサ11−iのバス要求回数を先読みし、未来のバス要求カウンタ43に保持する。そして、プロセッサ11−iのバス要求回数信号Niが、バス要求先読みユニット29からバス調停回路12に供給され、バス調停に活用される。ただし、プロセッサ11−iが長期間バス許可を受けていない場合は、バス要求先読みユニット29からバス調停回路12に供給されるバス要求回数信号Niの値が−1となり、プロセッサ11−iが優先的にバス許可を受けられるようになる。
【0043】
なお、図示していないが、バス要求先読みユニット29がプロセッサ11−iのバス要求回数を先読みして分岐命令であることが判明した時には、該分岐命令実行時に分岐予測が不成功の場合に限って未来のバス要求カウンタ43の値をリセットする。
【0044】
また、ここでは、各プロセッサは"Out of order"発行を行い、命令キャッシュのヒット率は従来のプロセッサと同様に十分に高いとする。この前提の下で、例えば、プロセッサ11−0が共有メモリ14をアクセスしているとする。メモリアクセスはキャッシュアクセスに比べて長時間を要する。そのため、プロセッサ11−0が共有メモリ14をアクセスしている間に、他のプロセッサ11−1〜11−3は命令キャッシュから後続する命令を複数個フェッチしてデコードできる。これにより、それぞれのプロセッサにおける後続命令のバス要求信号の発生を捕捉できる。従って、命令の先読みは、後続命令を命令キャッシュからフェッチできる限り、共有メモリのアクセス期間が終了するまで続く。
【0045】
図5は、バス要求解析回路41の構成図である。図示のように、バス要求解析回路41は、旧プログラムカウンタ51と、不一致回路52と、シフトレジスタ53と、ANDゲート54と、を有する。
【0046】
命令フェッチユニット21から旧プログラムカウンタ51に命令アドレスが供給される。旧プログラムカウンタ51は、レジスタであり、入力として供給されている命令アドレスをクロックエッジに同期してロードする。命令フェッチユニット21から不一致回路52にも命令アドレスが供給され、旧プログラムカウンタ51から不一致回路52に旧命令アドレスが供給される。不一致回路52からシフトレジスタ53の最上位ビットに命令フェッチ完了信号が供給される。不一致回路52は、入力として供給される命令アドレスと旧命令アドレスが一致しない場合に限り命令フェッチ完了信号をアサートする。命令フェッチユニット21が命令のフェッチを完了すると、プログラムカウンタ22が保持する命令アドレスが更新されるので、命令フェッチユニット21から不一致回路52に供給される命令アドレスと旧プログラムカウンタ51から不一致回路52に供給される旧命令アドレスが一致しなくなり、不一致回路52からシフトレジスタ53の最上位ビットに供給される命令フェッチ完了信号がアサートされる。シフトレジスタ53はクロックエッジに同期して右に1ビットシフトされる。この時、最上位ビットに命令フェッチ完了信号の値がロードされる。シフトレジスタ53の最下位ビットからANDゲート54に命令デコード完了信号が供給され、制御レジスタ27からANDゲート54にバス要求起動信号が供給される。シフトレジスタ53のビット数は、命令フェッチユニット21が命令のフェッチを完了してから命令デコードユニット25がその命令のデコードを完了するまでに要するクロックサイクル数である。シフトレジスタ53のビット数をこのように定めることにより、任意の命令について、命令デコード完了信号がアサートされるタイミングとバス要求起動信号がアサートまたはネゲートされるタイミングが一致する。また、命令デコード完了信号とバス要求起動信号が入力として供給されるANDゲート54から、未来のバス要求カウンタ43にカウントアップ信号が供給される。従って、プロセッサ11−iが命令キャッシュ23またはメモリからフェッチしデコードした命令がバス要求を起動する命令である場合、その命令について命令デコード完了信号とバス要求起動信号がアサートされ、カウントアップ信号がアサートされ、未来のバス要求カウンタ43の値、すなわちプロセッサ11−iのバス要求回数信号Niが1だけ増加する。
【0047】
図6は、バス許可解析回路42の構成図である。図示のように、バス許可解析回路42は、旧バス許可61と、ANDゲート62と、インバータ63と、を有する。
【0048】
バス調停回路12からANDゲート62と旧バス許可61にバス許可信号Aiが供給される。旧バス許可61は、1ビットのレジスタであり、入力として供給されるバス許可信号Aiの値をクロックエッジに同期してロードする。旧バス許可61からインバータ63に旧バス許可信号が供給され、インバータ63からANDゲート62に旧バス許可信号の反転信号が供給される。ANDゲート62から未来のバス要求カウンタ43にカウントダウン信号が供給される。従って、バス調停回路12からプロセッサ11−iに供給されるバス許可信号Aiがネゲートされていて、適当なクロックサイクル後にバス許可信号Aiがアサートされた時に、アサートされた直後の1クロックサイクル間だけ、バス許可解析回路42から未来のバス要求カウンタ43に供給されるカウントダウン信号がアサートされ、未来のバス要求カウンタ43が保持するプロセッサ11−iのバス要求回数信号Niが1だけ減少する。このようにして、プロセッサ11−iがバス許可を与えられると、プロセッサ11−iからバス調停回路12に供給されるプロセッサ11−iのバス要求回数信号Niが1だけ減少する。
【0049】
図7は、長期未許可検出回路44の構成図である。図示のように、長期未許可検出回路44は、インバータ71と、ANDゲート72と、未許可期間カウンタ73と、長期間レジスタ74と、比較回路75と、を有する。
【0050】
制御レジスタ27からANDゲート72にバス要求起動信号が供給される。バス調停回路12からインバータ71にバス許可信号Aiが供給される。インバータ71からANDゲート72にバス許可信号Aiの反転信号/Aiが供給される。ANDゲート72から未許可期間カウンタ73にカウントアップ信号が供給される。バス調停回路12から未許可期間カウンタ73にバス許可信号Aiがリセット信号として供給される。従って、プロセッサ11−iがバス要求起動信号をアサートしてから、バス調停回路12によってバス許可信号Aiがアサートされるまでの間、未許可期間カウンタ73の値は上限値に達するまでカウントアップされ続ける。バス調停回路12によってバス許可信号Aiがアサートされると、未許可期間カウンタ73はリセットされる。未許可期間カウンタ73から比較回路75に未許可期間信号が供給され、長期間レジスタ74から比較回路75に長期間信号が供給される。比較回路75からバス要求先読みユニット29のマルチプレクサ45へ長期間未許可信号が供給される。比較回路75は、未許可期間信号の値と長期間信号の値を比較し、未許可期間信号の値が長期間信号の値以上である場合に限り、長期未許可信号をアサートする。なお、長期間レジスタ74にはあらかじめ長期間を表す値が設定されているものとする。
【0051】
図8は、バス調停回路12の最小値選択回路31の構成図である。図示のように、最小値選択回路31は、比較回路81、82、87と、マルチプレクサ制御回路83、84と、マルチプレクサ85、86、88と、を有する。
【0052】
比較回路81は、a入力でプロセッサ11−0のバス要求回数信号N0を、b入力でプロセッサ11−1のバス要求回数信号N1を受け、N0<N1であれば”1”を、N0>N1であれば”0”を、比較結果F0として出力する。マルチプレクサ83は、比較回路81の出力する比較結果F0及びバス要求信号R0とR1を受け、R0とR1に応じて図9に示すような制御信号G0を出力する組合せ回路である。すなわち、R0とR1が”0”であれば”2”を、R0が”0”でR1が”1”であれば”0”を、R0が”1”でR1が”0”であれば”1”を、R0とR1が”1”であれば比較結果F0(0又は1)の値を出力する。マルチプレクサ85は、制御信号G0、N0、N1及び上限値を受けて、制御信号G0の値に応じて、N0、N1及び上限値のいずれかを出力H0として出力する。上限値は、バス要求回数信号Niのとり得る上限値である。すなわち、G0が”0”であればN1を、G0が”1”であればN0を、”2”であれば上限値をH0として出力する。従って、R0とR1が”0”であれば上限値が、R0が”0”でR1が”1”であればN1が、R0が”1”でR1が”0”であればN0が出力され、R0とR1が”1”の時には、N0<N1であればN0が、N0>N1であればN1が、H0として出力される。
【0053】
比較回路82、マルチプレクサ制御回路84及びマルチプレクサ86は、上記の比較回路81、マルチプレクサ制御回路83及びマルチプレクサ85に対応し、対象となる信号がN2、N3及びR2、R3である以外は同じである。従って、R2とR3が”0”であれば上限値が、R2が”0”でR3が”1”であればN3が、R2が”1”でR3が”0”であればN2が出力され、R2とR3が”1”の時には、N2<N3であればN2が、N2>N3であればN3が、H2として出力される。
【0054】
比較回路87は、a入力でH0を、b入力でH2を受け、H0<H1であれば”0”を、H0>H1であれば”1”を、比較結果F1として出力する。マルチプレクサ88は、H0とH2を受け、F1が”0”であればH0を、F1が”1”であればH1を最小値として出力する。
【0055】
以上のようにして、最小値選択回路31は、R0〜R3のうちに有効な信号(”1”の信号)があれば、N0〜N3のうち有効な信号に対応する信号のうちの最小の値を出力し、N0〜N3のいずれも有効でなければ上限値を出力する。
【0056】
ここで、図3に戻り、一致回路32−0〜32−3は、それぞれバス要求回数信号Niの値と最小値選択回路31から供給される最小値の値が一致するかを判定し、一致する場合には一致信号Biをアサートし、一致しない場合はBiをネゲートする。ANDゲート32−0〜33−3は、それぞれ一致信号Biがアサートされ、かつバス要求信号Riがアサートされた場合に、バス許可候補信号Ciをアサートし、それ以外の場合にはネゲートする。従って、プロセッサ11−iがバス要求信号Riをアサートしてバス要求を行った時に、バス要求回数信号Niの値がすべてのバス要求回数信号N0〜N3の中で最小値であれば、バス許可候補信号Ciがアサートされる。
【0057】
図10は、重複除去回路34の構成図である。図示のように、重複除去回路34は、選択回路91−0〜91−3と、レジスタS91−0〜91−3と、ANDゲート93−0〜93−3と、を有する。
【0058】
図3に示したバス調停回路12のANDゲート33−0〜33−3から出力されるバス許可候補信号C0〜C3が、図示のように選択回路91−0〜91−3の4個のc入力に順にずらしながら入力される。また、レジスタS92−0〜92−3の出力D0〜D3が、選択回路91−0〜91−3の4個のd入力に順にずらしながら入力される。これを一般化して表現すると、i=0,1,2,3とし、x%yの表記はxをyで除した時の余りとすると、Ciが、選択回路iのc0入力に、選択回路(i+1)%4のc3入力に、選択回路(i+2)%4のc2入力に、選択回路(i+3)%4のc1入力に、入力される。また、1ビットのレジスタS92−iの出力Diが、選択回路iのd0入力に、選択回路(i+1)%4のd3入力に、選択回路(i+2)%4のd2入力に、選択回路(i+3)%4のd1入力に、入力される。選択回路iは、入力c0〜c3及びd0〜d3に応じて図11に示すような選択信号Eiを出力する組合せ回路である。
【0059】
1ビットのレジスタS92−iは、選択回路iから出力される選択信号Eiの値をクロックエッジに同期してロードする。また、レジスタS92−iの値は、バス調停回路12の初期化時に、レジスタS92−0=1、レジスタS92−i=0(i≠0)に設定されるものとする。図11に示すような選択信号Eiを出力する選択回91−0〜91−3からレジスタS91−0〜91−3に供給される選択信号E0〜E3のうちで、同時にアサートされる信号は1つだけである。
【0060】
バス調停回路12のANDゲート33−iから重複除去回路34のANDゲート93−iにバス許可候補信号Ciが供給され、レジスタS92−iから重複除去回路34のANDゲート93−iに出力Diが供給され、重複除去回路34のANDゲート93−iからプロセッサ11−iにバス許可信号Aiが供給される。従って、バス許可候補信号Ciがアサートされている場合、選択回路iが選択信号Eiをアサートし、その値がレジスタS92−iにロードされて出力Diがアサートされた場合に限り、プロセッサ11−iへ供給されるバス許可信号Aiがアサートされる。選択回路91−0〜91−3からレジスタS92−0〜92−3に供給される選択信号E0〜E3のうちで同時にアサートされる信号は1つだけなので、バス許可候補信号C0〜C3のうち2つ以上が同時にアサートされていても、プロセッサ11−0〜11−3へ供給されるバス許可信号A0〜A3のうちアサートされる信号は1つだけとなる。
【0061】
以上本実施例のマルチシステムの構成を説明したが、次に本発明のマルチシステムと従来のラウンドロビン方式のマルチシステムにおける許可待ち時間の比較を行う。
【0062】
図12は、従来より一般的に用いられてきたラウンドロビン方式によるバス調停方式と本発明によるバス調停方式における平均許可待ち時間を比較する図であり、(A)はラウンドロビン方式の場合を、(B)は本発明の場合を示し、同じ条件での比較である。
【0063】
いずれの場合も、プロセッサはP1〜P4の4個で、ある時点において、プロセッサP1〜P4で、4、2、1、1回の共有メモリアクセスが必要であった場合を示している。ラウンドロビン方式の場合、アクセスはP1からP4の順に割当てられ、その後再びP1にバス権が割当てられる。図示のように、すべてのアクセスが終了するまで、P1は4期間、P2は4期間、P3は2期間、P4は3期間待つ必要があり、システム全体の平均許可待ち時間は3.25となる。
【0064】
これに対して、本発明の方式では、バス要求回数の小さいP3及びP4を優先するため、P1は4期間、P2は4期間、P3は0期間、P4は1期間待つ必要があり、システム全体の平均許可待ち時間は1.75となる。
【0065】
以上のように、本発明のバス調停方式では、将来のバス要求回数のもっとも少ないプロセッサにバス権を優先して与えることによってシステム全体としてのバスの平均許可待ち時間を低くできるので、システムの性能を向上できる。
【産業上の利用可能性】
【0066】
本発明は、バスなどのアクセス経路を共有し、アクセス経路を割当てる必要のあるマルチプロセッサシステムであればどのようなものにも適用可能である。
【図面の簡単な説明】
【0067】
【図1】本発明の実施例のマルチプロセッサシステムの全体構成を示す図である。
【図2】実施例のマルチプロセッサシステムにおけるプロセッサの構成を示す図である。
【図3】実施例のバス調停回路の構成を示す図である。
【図4】バス要求先読みユニットの構成を示す図である。
【図5】バス要求解析回路の構成を示す図である。
【図6】バス許可解析回路の構成を示す図である。
【図7】長期未許可検出回路の構成を示す図である。
【図8】最小値選択回路の構成を示す図である。
【図9】最小値選択回路で使用するマルチプレクサ制御回路の入力と出力の関係を示す真理値表である。
【図10】重複除去回路の構成を示す図である。
【図11】重複除去回路で使用する選択回路の入力と出力の関係を示す真理値表である。
【図12】本発明の従来例に対する効果を説明する図である。
【符号の説明】
【0068】
11−0〜11−3,11−i プロセッサ
12 バス調停回路
13 共有バス
14 共有メモリ
29 バス要求先読みユニット
31 最小値選択回路

【特許請求の範囲】
【請求項1】
複数の処理装置と、
前記複数の処理装置によりアクセスされる共有資源と、
前記複数の処理装置が前記共有資源に共通にアクセスするための共有経路と、を備えるマルチシステムにおいて、前記共有経路の前記複数の処理装置への割当てを制御する共有経路調停方法であって、
前記複数の処理装置のそれぞれにおいて、当該処理装置で実行する予定の処理において前記共有資源へのアクセスを要求する回数をカウントして、アクセス要求回数を算出し、
前記複数の処理装置から前記共有経路への割当てを要求された時には、前記アクセス要求回数のもっとも少ない処理装置に前記共有経路を割当てることを特徴とする共有経路調停方法。
【請求項2】
分岐命令実行時には、分岐予測が不成功の場合に限って算出した前記アクセス要求回数を破棄する請求項1に記載の共有経路調停方法。
【請求項3】
もっとも少ない前記アクセス要求回数が、複数の前記処理装置から出力されている時には、当該複数の前記処理装置の間でラウンドロビン方式で前記共有経路を割当てる請求項1に記載の共有経路調停方法。
【請求項4】
複数の処理装置と、
前記複数の処理装置によりアクセスされる共有資源と、
前記複数の処理装置が前記共有資源に共通にアクセスするための共有経路と、
前記共有経路の前記複数の処理装置への割当てを制御する共有経路調停回路と、を備えるマルチシステムであって、
前記複数の処理装置のそれぞれは、当該処理装置で実行する予定の処理において前記共有資源へのアクセスを要求する回数をカウントして、前記共有経路調停回路にアクセス要求回数を出力するアクセス要求先読みユニットを備え、
前記共有経路調停回路は、前記複数の処理装置のそれぞれの前記アクセス要求先読みユニットから出力される前記アクセス要求回数を受け、前記複数の処理装置から前記共有経路への割当てを要求された時には、前記アクセス要求回数の少ない処理装置に前記共有経路を割当てることを特徴とするマルチシステム。
【請求項5】
前記アクセス要求先読みユニットは、分岐命令実行時には、分岐予測が不成功の場合に限って算出した前記アクセス要求回数をリセットする請求項4に記載のマルチシステム。
【請求項6】
前記共有経路調停回路は、もっとも少ない前記アクセス要求回数が、複数の前記処理装置から出力されている時には、当該複数の前記処理装置の間でラウンドロビン方式で前記共有経路を割当てる請求項4に記載のマルチシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2007−219821(P2007−219821A)
【公開日】平成19年8月30日(2007.8.30)
【国際特許分類】
【出願番号】特願2006−39462(P2006−39462)
【出願日】平成18年2月16日(2006.2.16)
【出願人】(396023993)株式会社半導体理工学研究センター (150)
【Fターム(参考)】