JP3526773B2 - マルチプロセッサ装置およびその制御方法 - Google Patents
マルチプロセッサ装置およびその制御方法Info
- Publication number
- JP3526773B2 JP3526773B2 JP05201699A JP5201699A JP3526773B2 JP 3526773 B2 JP3526773 B2 JP 3526773B2 JP 05201699 A JP05201699 A JP 05201699A JP 5201699 A JP5201699 A JP 5201699A JP 3526773 B2 JP3526773 B2 JP 3526773B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- address
- bank
- processor
- processors
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 31
- 238000010586 diagram Methods 0.000 description 11
- 230000010365 information processing Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
Description
ン処理する情報処理装置におけるマルチプロセッサの制
御方法およびその装置に関する。
法の一つとして、従来から複数のプロセッサを同一の半
導体チップに搭載して処理を並列実行させる方法があ
る。この方法によれば、例えば1つのプロセッサでは所
望のアプリケーションを実行するための処理能力が足り
ない場合に、複数個のプロセッサに分割処理させること
によりこのアプリケーションを実行させることができ
る。この方法を適用した他の例としては、複数のプロセ
ッサがメモリを共有するメモリ共有型マルチプロセッサ
がある。メモリ共有型マルチプロセッサにおいては、複
数のプロセッサの間で命令やデータを共有することがで
きる。
メモリ共有型マルチプロセッサには命令やデータを共有
することができるという利点がある反面、各プロセッサ
が同時に共有メモリにアクセスした場合にコンフリクト
が発生するという欠点が存在する。コンフリクトが発生
した場合にはメモリアクセスの調停が必要になり、各プ
ロセッサのメモリへのアクセスが待たされる。
る順序は、装置が実行するアプリケーションが処理する
データの内容に依存する。アプリケーションが処理する
データが一定でない場合には、プロセッサのメモリへの
アクセス順序を予測することは不可能である。そのた
め、メモリアクセスの調停によって各プロセッサのメモ
リへのアクセスが待たされる時間を予測することができ
ず、アプリケーションの実行時間を見積もることが困難
であった。
ロセッサにおいては、コンフリクト発生時のメモリアク
セスの調停のためにアプリケーションの実行時間を予測
できないという問題があった。そのため、従来のメモリ
共有型マルチプロセッサは、リアルタイム処理が要求さ
れる通信用DSP(デジタルシグナルプロセッサ)等に
適用することが困難であった。
する。
いて、コンフリクト発生時のメモリアクセスの調停の必
要をなくすことにより、メモリアクセスの調停のための
回路を不要にすること。
が容易なメモリ共有型マルチプロセッサを提供するこ
と。
サ装置は、N個のプロセッサと、M個のバンクと、アド
レス選択部とを備え、前記N個のプロセッサのそれぞれ
は、N個の命令フェッチステージを有するパイプライン
で命令を処理するパイプラインプロセッサであり、前記
N個のプロセッサのそれぞれには、前記N個のプロセッ
サのうちの複数のプロセッサが前記M個のバンクのうち
の1つに同時にアクセスすることがないように、前記N
個の命令フェッチステージのうちどの命令フェッチステ
ージにおいて命令をフェッチするかが割り当てられてお
り、前記M個のバンクのそれぞれには、複数の命令が格
納されており、前記アドレス選択部は、前記N個のプロ
セッサから出力されたアドレスを受け取り、前記M個の
バンクのうち前記アドレスによって特定されたバンク
に、前記特定されたバンクに格納されている前記複数の
命令のうちフェッチすべき命令の番地を示すバンクアド
レスを出力し、前記特定されたバンクは、前記特定され
たバンクに格納されている前記複数の命令のうち前記バ
ンクアドレスによって示された番地の命令を出力し、前
記N個のプロセッサのうちの1つは、前記特定されたバ
ンクから出力された前記命令を前記N個の命令フェッチ
ステージのうち割り当てられた1つの命令フェッチステ
ージにおいてフェッチし、Nは2以上の整数であり、M
はN以上の整数であり、これにより上記目的が達成され
る。前記N個のプロセッサが分岐命令を処理する場合
に、前記命令をフェッチする前記命令フェッチステージ
を変更してもよい。前記N個のプロセッサは、前記命令
と、バンク選択信号と、フェッチステージ選択信号と、
NOP選択信号とが入力され、命令コードを出力する命
令レジスタ部と、前記命令コードが入力され、分岐命令
信号と、分岐アドレスとを出力するデコーダ部と、前記
分岐命令信号と、前記分岐アドレスと、命令ポインタ信
号とが入力され、前記フェッチステージ選択信号と、前
記NOP選択信号と、アドレス分岐信号とを出力する制
御部と、前記フェッチステージ選択信号と、前記アドレ
ス分岐信号と、前記分岐アドレスとが入力され、前記バ
ンク選択信号と、前記命令ポインタ信号と、前記アドレ
スとを出力する命令ポインタ部とをそれぞれ備えていて
もよい。前記N個のプロセッサのそれぞれは、前記N個
の命令フェッチステージのうちに命令のフェッチを行わ
ない命令フェッチステージを有していてもよい。本発明
のマルチプロセッサ装置の制御方法は、N個のプロセッ
サとM個のバンクとアドレス選択部とを備えたマルチプ
ロセッサ装置の制御方法であって、前記N個のプロセッ
サのそれぞれは、N個の命令フェッチステージを有する
パイプラインで命令を処理するパイプラインプロセッサ
であり、前記N個のプロセッサのそれぞれには、前記N
個のプロセッサのうちの複数のプロセッサが前記M個の
バンクのうちの1つに同時にアクセスすることがないよ
うに、前記N個の命令フェッチステージのうちどの命令
フェッチステージにおいて命令をフェッチするかが割り
当てられており、前記M個のバンクのそれぞれには、複
数の命令が格納されており、前記制御方法は、前記アド
レス選択部が、前記N個のプロセッサから出力されたア
ドレスを受け取り、前記M個のバンクのうち前記アドレ
スによって特定されたバンクに、前記特定されたバンク
に格納されている前記複数の命令のうちフェッチすべき
命令の番地を示すバンクアドレスを出力するステップ
と、前記特定されたバンクが、前記特定されたバンクに
格納されている前記複数の命令のうち前記バンクアドレ
スによって示された番地の命令を出力するステップと、
前記N個のプロセッサのうちの1つが、前記特定された
バンクから出力された前記命令を前記N個の命令フェッ
チステージのうち割り当てられた1つの命令フェッチス
テージにおいてフェッチするステップとを包含し、Nは
2以上の整数であり、MはN以上の整数であり、これに
より上記目的が達成される。前記N個のプロセッサのう
ちの1つが分岐命令を処理する場合に、前記命令をフェ
ッチする前記命令フェッチステージを変更してもよい。
前記N個のプロセッサのそれぞれは、前記N個の命令フ
ェッチステージのうちに命令のフェッチを行わない命令
フェッチステージを有していてもよい。
説明する。
00の構成を示す。マルチプロセッサ装置100は、第
1のプロセッサ1から第Nのプロセッサ3までのN個の
プロセッサと、命令メモリ4とを備える。命令メモリ4
は、第1のバンク5から第Mのバンク7までのM個のバ
ンクと、アドレス選択回路8とを備える。ここで、Nは
2以上の整数であり、MはN以上の整数である。
3までのN個のプロセッサは、命令をパイプライン処理
するパイプラインプロセッサである。各プロセッサは、
N個の命令フェッチステージを含むパイプステージを有
する。N個のプロセッサのパイプライン構造の詳細につ
いては後述する。
M個のバンクには、それぞれ複数の命令が格納されてい
る。M個のバンクにそれぞれ格納された複数の命令は、
全体でマルチプロセッサ装置によって実行されるアプリ
ケーションプログラムを構成している。命令が格納され
る形式には、例えば、1番地の命令が第1のバンク5に
格納され、2番地の命令が第2のバンク6に格納され、
・・・M番地の命令が第Mのバンク7に格納され、(M
+1)番地の命令が第1のバンク5に格納される、・・
・というようなインターリーブ形式等が使用される。以
下の説明においては、アプリケーションプログラムを構
成する命令は上記のインターリーブ形式でM個のバンク
に格納されているものとする。しかし、M個のバンクへ
の命令の格納形式には、インターリーブ形式以外の任意
の形式が使用され得る。
から第Mの命令16までのM個の命令が入力される。第
1のプロセッサ1は、入力されたM個の命令のうちの1
つを選択してフェッチする。第1のプロセッサ1は、フ
ェッチした命令の処理結果として、第1のアドレス11
を出力する。同様に、第2のプロセッサ2には、第1の
命令14から第Mの命令16までのM個の命令が入力さ
れ、第2のプロセッサ2は、第2のアドレス12を出力
する。
の命令14から第Mの命令16までのM個の命令が入力
される。N個のプロセッサは、第1のアドレス11から
第Nのアドレス13までのN個のアドレスをそれぞれ出
力する。
令メモリ4のアドレス選択回路8には、第1のアドレス
11から第Nのアドレス13までのN個のアドレスが入
力される。アドレス選択回路8は、アドレス選択手段で
あり、入力されたアドレスの最下位ビットから、アドレ
スに対応するバンクを特定する。アドレスに対応するバ
ンクを特定するための最下位ビットの数は、バンクの個
数Mに依存した1以上の数である。
ビットから特定したバンクに対し、アドレスの最下位ビ
ットを除いたものを、バンクアドレスとして出力する。
アドレス選択回路8は、M個のバンクに対して、第1の
バンクアドレス17から第Mのバンクアドレス19まで
のM個のバンクアドレスを出力する。
ス17が入力される。第1のバンク5は、第1のバンク
アドレス17上に格納された第1の命令14を出力す
る。第2のバンク6には、第2のバンクアドレス18が
入力される。第2のバンク6は、第2のバンクアドレス
18上に格納された第2の命令15を出力する。以下同
様に、第Mのバンク7には、第Mのバンクアドレス19
が入力される。第Mのバンク7は、第Mのバンクアドレ
ス19上に格納された第Mの命令16を出力する。
00が備えるプロセッサのパイプライン構造を示す。本
発明におけるプロセッサは、F(1)、F(2)、・・
・、F(N)、DC、EXの各パイプステージを有す
る。これらのパイプステージのうち、F(1)〜F
(N)のN個のステージは、命令フェッチステージであ
る。このように、マルチプロセッサ装置100が備える
各プロセッサは、プロセッサの個数分の命令フェッチス
テージを有する。F(1)は第1の命令フェッチステー
ジであり、F(2)は第2の命令フェッチステージであ
り、F(N)は第Nの命令フェッチステージである。D
Cはデコードステージであり、EXは実行ステージであ
る。
のプロセッサのそれぞれには、複数のプロセッサが1つ
のバンクに同時にアクセスすることのない様にN個の命
令フェッチステージのうちのいずれかが割り当てられ
る。各プロセッサは、割り当てられた命令フェッチステ
ージに、命令メモリ4が備えるM個のバンクにアクセス
する。
態について説明する。なお、以下の実施形態の説明にお
いては、便宜上M=Nであるものとする。また、第1の
バンクアドレス17から第Mのバンクアドレス19まで
の各バンクアドレスは、第1のアドレス11から第Nの
アドレス13までの各アドレスの最下位ビットを除いた
ものであるが、便宜上、第1のアドレス11から第Nの
アドレス13までの各アドレスと同じ表現を使用する。
のマルチプロセッサの制御方法およびその装置について
説明する。実施形態1においては、N=3であるものと
する。
形態1におけるプロセッサの逐次処理時のタイミングチ
ャートである。図3を参照して、N=3の場合につい
て、命令を逐次処理する場合のプロセッサの動作を説明
する。
ージの初期割り当てのパターンを示す。N=3の場合の
命令フェッチステージの初期割り当てとしては、その1
〜その6の6つのパターンが可能である。本実施形態に
おいては、命令フェッチステージの初期割り当てがその
1のパターンであるものとして説明する。すなわち、第
1のプロセッサ1には、第1の命令フェッチステージF
(1)を割り当て、第2のプロセッサ2には、第2の命
令フェッチステージF(2)を割り当て、第3のプロセ
ッサ3には、第3の命令フェッチステージF(3)を割
り当てるものとする。
第1のバンク5から命令をフェッチする。具体的には、
マルチプロセッサ装置100は下記のように動作する。
ス11をアドレス選択回路8に出力する。アドレス選択
回路8は、第1の命令アドレス11を第1のバンクアド
レス17に出力する。第1のバンク5は、入力された第
1のバンクアドレス17の示す番地の命令を第1の命令
14として第1のプロセッサ1に出力する。これによ
り、第1のプロセッサ1は第1の命令14をフェッチす
る。
2のバンク6から命令をフェッチし、第2のプロセッサ
2が第1のバンク5から命令をフェッチする。具体的に
は、マルチプロセッサ装置100は下記のように動作す
る。
ス11をアドレス選択回路8に出力する。アドレス選択
回路8は、第1の命令アドレス11を第2のバンクアド
レス18に出力する。第2のバンク6は、入力された第
2のバンクアドレス18の示す番地の命令を第2の命令
15として第1のプロセッサ1に出力する。これによ
り、第1のプロセッサ1は第2の命令15をフェッチす
る。
ス12をアドレス選択回路8に出力する。アドレス選択
回路8は、第2の命令アドレス12を第1のバンクアド
レス17に出力する。第1のバンク5は、入力された第
1のバンクアドレス17の示す番地の命令を第1の命令
14として第2のプロセッサ2に出力する。これによ
り、第2のプロセッサ2は第1の命令14をフェッチす
る。
3のバンク7から命令をフェッチし、第2のプロセッサ
2が第2のバンク6から命令をフェッチし、第3のプロ
セッサ3が第1のバンク5から命令をフェッチする。具
体的には、マルチプロセッサ装置100は下記のように
動作する。
ス11をアドレス選択回路8に出力する。アドレス選択
回路8は、第1の命令アドレス11を第3のバンクアド
レス19に出力する。第3のバンク7は、入力された第
3のバンクアドレス19の示す番地の命令を第3の命令
16として第1のプロセッサ1に出力する。これによ
り、第1のプロセッサ1は第3の命令16をフェッチす
る。
ス12をアドレス選択回路8に出力する。アドレス選択
回路8は、第2の命令アドレス12を第2のバンクアド
レス18に出力する。第2のバンク6は、入力された第
2のバンクアドレス18の示す番地の命令を第2の命令
15として第2のプロセッサ2に出力する。これによ
り、第2のプロセッサ2は第2の命令15をフェッチす
る。
ス13をアドレス選択回路8に出力する。アドレス選択
回路8は、第3の命令アドレス13を第1のバンクアド
レス17に出力する。第1のバンク5は、入力された第
1のバンクアドレス17の示す番地の命令を第1の命令
14として第3のプロセッサ3に出力する。これによ
り、第3のプロセッサ3は第1の命令14をフェッチす
る。
1のバンク5から命令をフェッチし、第2のプロセッサ
2が第3のバンク7から命令をフェッチし、第3のプロ
セッサ3が第2のバンク6から命令をフェッチする。マ
ルチプロセッサ装置100の動作のうち、第1のプロセ
ッサ1が第1のバンク5から命令をフェッチする動作
は、1サイクル目の動作と同様であるため説明を省略す
る。第2のプロセッサ2及び第3のプロセッサ3の動作
は下記の通りである。
ス12をアドレス選択回路8に出力する。アドレス選択
回路8は、第2の命令アドレス12を第3のバンクアド
レス19に出力する。第3のバンク7は、入力された第
3のバンクアドレス19の示す番地の命令を第3の命令
16として第2のプロセッサ2に出力する。これによ
り、第2のプロセッサ2は第3の命令16をフェッチす
る。
ス13をアドレス選択回路8に出力する。アドレス選択
回路8は、第3の命令アドレス13を第2のバンクアド
レス18に出力する。第2のバンク6は、入力された第
2のバンクアドレス18の示す番地の命令を第2の命令
15として第3のプロセッサ3に出力する。これによ
り、第3のプロセッサ3は第2の命令15をフェッチす
る。
2のバンク6から命令をフェッチし、第2のプロセッサ
2が第1のバンク5から命令をフェッチし、第3のプロ
セッサ3が第3のバンク7から命令をフェッチする。マ
ルチプロセッサ装置100の動作のうち、第1のプロセ
ッサ1が第2のバンク6から命令をフェッチする動作
と、第2のプロセッサ2が第1のバンク5から命令をフ
ェッチする動作とは、2サイクル目の動作と同様である
ため説明を省略する。第3のプロセッサ3の動作は下記
の通りである。
ス13をアドレス選択回路8に出力する。アドレス選択
回路8は、第3の命令アドレス13を第3のバンクアド
レス19に出力する。第3のバンク7は、入力された第
3のバンクアドレス19の示す番地の命令を第3の命令
16として第3のプロセッサ3に出力する。これによ
り、第3のプロセッサ3は第3の命令16をフェッチす
る。
1の命令フェッチステージF(1)を使用し、第2のプ
ロセッサ2は、第2の命令フェッチステージF(2)を
使用し、第3のプロセッサ3は、第3の命令フェッチス
テージF(3)を使用して、命令メモリ4の各バンクか
ら命令をフェッチするように制御される。その結果、各
プロセッサの各バンクへのアクセスは排他的に実行され
る。
形態1におけるプロセッサの分岐処理時のタイミングチ
ャートである。図4を参照して、命令を分岐処理する場
合についてプロセッサの動作を説明する。なお、(命令
の逐次処理)と同様にN=3とし、第1のプロセッサ1
には、第1の命令フェッチステージF(1)を割り当
て、第2のプロセッサ2には、第2の命令フェッチステ
ージF(2)を割り当て、第3のプロセッサ3には、第
3の命令フェッチステージF(3)を割り当てるものと
する。また、2サイクル目において第1のプロセッサが
分岐命令をフェッチし、7サイクル目において分岐先の
命令フェッチを再開するものとする。
様に、第1のプロセッサ1が第1のバンク5から命令を
フェッチする。
様に、第1のプロセッサ1が第2のバンク6から命令を
フェッチし、第2のプロセッサ2が第1のバンク5から
命令をフェッチする。
命令フェッチを待機する。第2のプロセッサ2は、(命
令の逐次処理)と同様に第2のバンク6から命令をフェ
ッチする。第3のプロセッサ3は、(命令の逐次処理)
と同様に第1のバンク5から命令をフェッチする。
命令フェッチを待機する。第2のプロセッサ2は、(命
令の逐次処理)と同様に第3のバンク7から命令をフェ
ッチする。第3のプロセッサ3は、(命令の逐次処理)
と同様に第2のバンク6から命令をフェッチする。
命令フェッチを待機する。第2のプロセッサ2は、(命
令の逐次処理)と同様に第1のバンク5から命令をフェ
ッチする。第3のプロセッサ3は、(命令の逐次処理)
と同様に第3のバンク7から命令をフェッチする。
命令フェッチを待機する。第2のプロセッサ2は、3サ
イクル目と同様に第2のバンク6から命令をフェッチす
る。第3のプロセッサ3は、3サイクル目と同様に第1
のバンク5から命令をフェッチする。
分岐先の命令フェッチを再開するが、第3のバンク7へ
のアクセスが第2のプロセッサ2と競合するため、命令
フェッチを待機する。第2のプロセッサ2は、4サイク
ル目と同様に第3のバンク7から命令をフェッチする。
第3のプロセッサ3は、4サイクル目と同様に第2のバ
ンク6から命令をフェッチする。
第3のバンク7へのアクセスが第3のプロセッサ3と競
合するため、命令フェッチを待機する。第2のプロセッ
サ2は、5サイクル目と同様に第1のバンク5から命令
をフェッチする。第3のプロセッサ3は、5サイクル目
と同様に第3のバンク7から命令をフェッチする。
(命令の逐次処理)の3サイクル目と同様に第3のバン
ク7から命令をフェッチする。第2のプロセッサ2は、
3サイクル目と同様に第2のバンク6から命令をフェッ
チする。第3のプロセッサ3は、3サイクル目と同様に
第1のバンク5から命令をフェッチする。
用する命令フェッチステージを分岐先の命令フェッチ時
に第1の命令フェッチステージF(1)から第3の命令
フェッチステージF(3)に変更するように制御され
る。その結果、各プロセッサの各バンクへのアクセスは
排他的に実行される。
命令フェッチステージの変更方法を示す。プロセッサ1
〜3内のバンク切り替え信号をBANKS0、BANK
S1とすると、フェッチステージF(1)〜F(3)の
切り替えは図6に示されるように行われる。すなわち、
BANKS0=0かつBANKS1=0のとき、フェッ
チステージの変更は行われない。BANKS0=0かつ
BANKS1=1のとき、F(1)→F(2)、F
(2)→F(3)、F(3)→F(1)の変更がそれぞ
れ行われる。BANKS0=1かつBANKS1=0の
とき、F(1)→F(3)、F(2)→F(1)、F
(3)→F(2)の変更がそれぞれ行われる。
分岐先のアドレスをJIP[15:0]としたとき、B
ANKS0、BANKS1の値は例えば以下のソースコ
ードによって定められる。 if ( IP[1:0] == JIP[1:0] ) then BANKS0 = 1; BANKS1 = 0; else if (IP[1:0]-1 == JIP[1:0] ) BANKS0 = 0; BANKS1 = 1; else BANKS0 = 0; BANKS1 = 0; 本実施形態によれば、マルチプロセッサ装置100の各
プロセッサが複数の命令フェッチステージを有し、命令
のフェッチに異なる命令フェッチステージを使用するこ
とにより、第1のバンク5と第2のバンク6と第3のバ
ンク7を排他的にアクセスするように制御される。ま
た、プロセッサが分岐命令をフェッチした場合に、使用
する命令フェッチステージを分岐先の命令フェッチ時に
変更することにより、各バンクへのアクセスが排他的に
実行されるように制御される。その結果、命令メモリの
共有を図ると共に、メモリのコンフリクトが発生しない
ようにすることができる。
のマルチプロセッサの制御方法およびその装置につい
て、図面を参照しながら説明する。
セッサ装置100が備える命令メモリ4の構成を示す。
図6において、命令メモリ4は、第1のバンク5と、第
2のバンク6と、アドレス選択回路8とを備える。図6
は、図1においてN=2である場合の命令メモリ4の構
成を示している。
ッサ装置100が備えるプロセッサ1、2の構成図であ
る。マルチプロセッサ装置100が備えるプロセッサ1
とプロセッサ2とは、同様の構成を有している。図7に
おいて、プロセッサ1、2は、命令レジスタ部101
と、デコーダ部102と、命令ポインタ部103と、制
御部104とを備える。
4と、第2の命令15と、NOP選択信号114と、フ
ェッチステージ選択信号115と、バンク選択信号11
8とが入力される。命令レジスタ部101は、入力され
た各信号に応じて、命令コード111を出力する。
が入力される。デコーダ部102は、命令コード111
に応じて、分岐命令信号112と分岐アドレス113と
を出力する。
113と、フェッチステージ選択信号115と、アドレ
ス分岐信号116とが入力される。命令ポインタ部10
3は、入力された各信号に応じて、命令ポインタ信号1
17と、バンク選択信号118と、第1のアドレス11
または第2のアドレス12とを出力する。
セッサ1、2が備える命令レジスタ部101の構成を示
す。図8において、命令レジスタ部101は、第1の命
令選択器201と、第1の命令レジスタ202と、第2
の命令選択器203と、第2の命令レジスタ204と、
第3の命令選択器205とを備える。
14と、第2の命令15と、バンク選択信号118とが
入力される。第1の命令レジスタ202には、第1の命
令選択器201の出力が入力される。第2の命令選択器
203には、第1の命令選択器201の出力と、第1の
命令レジスタ202の出力と、フェッチステージ選択信
号115とが入力される。第2の命令レジスタ204に
は、第2の命令選択器203の出力が入力される。第3
の命令選択器205には、第2の命令レジスタ204
と、NOPコード211と、NOP選択信号114とが
入力される。第3の命令選択器205は、入力された各
信号に応じて命令コード111を出力する。
1、2が備える命令ポインタ部103の構成を示す。図
9において、命令ポインタ部103は、第1のアドレス
選択器301と、第1の命令ポインタ302と、加算器
303と、第2の命令ポインタ304と、第2のアドレ
ス選択器305とを備える。
ドレス113と、加算器303の出力と、アドレス分岐
信号116とが入力される。第1の命令ポインタ302
には、第1のアドレス選択器301の出力が入力され
る。第1の命令ポインタ302は、第1のアドレス選択
器301の出力の最下位ビットを、命令ポインタ信号1
17として出力する。加算器303には、第1の命令ポ
インタ302の出力が入力される。第2の命令ポインタ
304には、第1の命令ポインタ302の出力が入力さ
れる。第2のアドレス選択器305には、第1の命令ポ
インタ302の出力と、第2の命令ポインタ304の出
力と、フェッチステージ選択信号115とが入力され
る。第2のアドレス選択器305は、第1のアドレス1
1または第2のアドレス12と、第1のアドレス11ま
たは第2のアドレス12の最下位ビットをバンク選択信
号118として出力する。
ドレス選択回路8の構成を示す。図10において、アド
レス選択回路8は、第1のプロセッサ選択器401と、
第2のプロセッサ選択器402と、フリップフロップ4
03と、インバータ404とを備える。
のアドレス11と、第2のアドレス12と、プロセッサ
選択信号411とが入力される。第1のプロセッサ選択
器401は、入力された各信号に応じて第1のバンクア
ドレス17を出力する。第2のプロセッサ選択器402
には、第1のアドレス11と、第2のアドレス12と、
プロセッサ選択信号411とが入力される。第2のプロ
セッサ選択器402は、入力された各信号に応じて第2
のバンクアドレス18を出力する。フリップフロップ4
03は、D型フリップフロップである。フリップフロッ
プ403は、入力されるインバータ404の出力と、リ
セット信号521とに応じて、プロセッサ選択信号41
1を出力する。インバータ404は、入力されたプロセ
ッサ選択信号411を反転させる。
セッサ1、2が備える制御部104の構成を示す。図1
1において、制御部104は、フリップフロップ50
1、507、508、510と、排他的論理和ゲート5
02と、論理積ゲート503、504、505、509
と、論理和ゲート506と、インバータ511、512
とを備える。
8、510は、それぞれ、D型フリップフロップであ
る。論理積ゲート503、504、505、509は、
それぞれ、複数の入力信号の論理積を出力する。インバ
ータ511、512は、それぞれ、入力信号の位相を反
転して出力する。
岐命令信号112に応じて、アドレス分岐信号116を
出力する。排他的論理和ゲート502は、分岐アドレス
113と命令ポインタ信号117との排他的論理和を出
力する。論理積ゲート503は、リセット信号521と
数値522との論理積を出力する。数値522は、プロ
セッサ毎に「1」または「0」に定められている。論理
積ゲート504は、アドレス分岐信号116と、排他的
論理和502の出力と、インバータ511の出力との論
理積を出力する。論理積505は、フェッチステージ選
択信号115と、インバータ512の出力と、インバー
タ511の出力との論理積を出力する。論理和ゲート5
06は、論理積ゲート503の出力と、論理積ゲート5
04の出力と、論理積ゲート505の出力との論理和を
出力する。フリップフロップ507は、入力された論理
和ゲート506の出力に応じて、フェッチステージ選択
信号115を出力する。フリップフロップ508は、入
力されたアドレス分岐信号116に応じた信号を論理積
ゲート509に出力する。論理積ゲート509は、アド
レス分岐信号116と、分岐命令信号112と、フリッ
プフロップ508の出力との論理積を出力する。フリッ
プフロップ510は、入力された論理積ゲート509の
出力に応じて、NOP選択信号114を出力する。イン
バータ511は、入力されたリセット信号521を反転
して出力する。インバータ512は、入力されたアドレ
ス分岐信号116を反転して出力する。
のように構成されたマルチプロセッサ装置100の動作
を説明する。以下の説明においては、第1のバンク5に
偶数番地の命令が格納され、第2のバンク6に奇数番地
の命令が格納されているものとする。また、以下の説明
においては、便宜上、第1のバンクアドレス17および
第2のバンクアドレス18は、第1のアドレス11また
は第2のアドレス12の最下位ビットを除いたものでは
なく、第1のアドレス11または第2のアドレス12と
同じ数値であるものとする。
施形態2におけるプロセッサの逐次処理時のタイミング
チャートである。図12を参照して、プロセッサが命令
を逐次処理する場合の動作を説明する。ここで、パイプ
ラインは、第1の命令フェッチステージF(1)、第2
の命令フェッチステージF(2)、デコードステージD
C、実行ステージEXの4段パイプラインであるものと
する。また、第1のプロセッサ1には第1の命令フェッ
チステージF(1)を割り当て、第2のプロセッサ2に
は第2の命令フェッチステージF(2)を割り当てるも
のとする。さらに、第1のプロセッサ1の場合は数値5
22を「1」とし、第2のプロセッサ2の場合は数値5
22を「0」とする。
ッサ1、2に入力されるリセット信号521の値は
「1」となるものとする。
て、数値522は「1」であるから、リセット信号52
1の値が「1」になることにより、論理積ゲート503
の出力値は「1」となる。これにより、論理和ゲート5
06の出力値が「1」となり、フリップフロップ507
の出力するフェッチステージ選択信号115の値も
「1」となる。
において、数値522は「0」であるから、リセット信
号521の値が「1」になっても、論理積ゲート503
の出力値は「0」である。そのため、論理和ゲート50
6の出力値が「0」となり、フリップフロップ507の
出力するフェッチステージ選択信号115の値も「0」
となる。
令ポインタ103において、第1の命令ポインタ302
の値は「0」であり、第2の命令ポインタ304の値は
「不定」である。フェッチステージ選択信号115の値
は「1」であるから、第2のアドレス選択器305は第
1の命令ポインタ302の値を第1のアドレス11とし
て出力する。その結果、第1のアドレス11として値
「0」が出力される。
において、第1の命令ポインタ302の値は「10」で
あり、第2の命令ポインタ304の値は「不定」であ
る。フェッチステージ選択信号115の値は「0」であ
るから、第2のアドレス選択器305は第2の命令ポイ
ンタ304の値を第2のアドレス12として出力する。
その結果、第2のアドレス12として値「不定」が出力
される。
て、プロセッサ選択信号411の値は「0」である。第
1のプロセッサ選択器401は、プロセッサ選択信号4
11の値が「0」であるので、第1のアドレス11を第
1のバンクアドレス17として出力する。その結果、第
1のバンクアドレス17の値は「0」となる。よって、
第1のバンク5は、第1の命令14として「0」番地の
命令を出力する。
プロセッサ選択信号411の値が「0」であるので、第
2のアドレス12を第2のバンクアドレス18として出
力する。その結果、第2のバンクアドレス18の値は
「不定」となる。よって、第2のバンク6は、第2の命
令15として「不定」番地の命令を出力する。
令ポインタ103において、第1の命令ポインタ302
の値は「1」であり、第2の命令ポインタ304の値は
「0」である。フェッチステージ選択信号115の値は
「1」であるから、第2のアドレス選択器305は第1
の命令ポインタ302の値を第1のアドレス11として
出力する。その結果、第1のアドレス11として値
「1」が出力される。1サイクル目の第1の命令14は
「0」番地の命令であるから、第1のプロセッサ1の第
1の命令レジスタ202は「0」番地の命令をフェッチ
する。
において、第1の命令ポインタ302の値は「11」で
あり、第2の命令ポインタ304の値は「10」であ
る。フェッチステージ選択信号115の値は「0」であ
るから、第2のアドレス選択器305は第2の命令ポイ
ンタ304の値を第2のアドレス12として出力する。
その結果、第2のアドレス12として値「10」が出力
される。
て、プロセッサ選択信号411の値は「1」である。第
1のプロセッサ選択器401は、プロセッサ選択信号4
11の値が「1」であるので、第2のアドレス12を第
1のバンクアドレス17として出力する。その結果、第
1のバンクアドレス17の値は「10」となる。よっ
て、第1のバンク5は、第1の命令14として「10」
番地の命令を出力する。
プロセッサ選択信号411の値が「1」であるので、第
1のアドレス11を第2のバンクアドレス18として出
力する。その結果、第2のバンクアドレス18の値は
「1」となる。よって、第2のバンク6は、第2の命令
15として「1」番地の命令を出力する。
令ポインタ103において、第1の命令ポインタ302
の値は「2」であり、第2の命令ポインタ304の値は
「1」である。フェッチステージ選択信号115の値は
「1」であるから、第2のアドレス選択器305は第1
の命令ポインタ302の値を第1のアドレス11として
出力する。その結果、第1のアドレス11として値
「2」が出力される。2サイクル目の第1の命令14は
「1」番地の命令であるから、第1のプロセッサ1の第
1の命令レジスタ202は「1」番地の命令をフェッチ
する。フェッチステージ選択信号115の値は「1」で
あるから、第2の命令選択器203は第1の命令レジス
タ202の値を出力する。第1の命令レジスタ202は
1サイクル目に「0」番地の命令をフェッチしているか
ら、第2の命令レジスタ204は「0」番地の命令をフ
ェッチする。NOP選択信号114の値は「0」である
から、第3の命令選択器205は第2の命令レジスタ2
04の値を命令コード111として出力する。その結
果、命令コード111の内容は、「0」番地の命令とな
る。
において、第1の命令ポインタ302の値は「12」で
あり、第2の命令ポインタ304の値は「11」であ
る。フェッチステージ選択信号115の値は「0」であ
るから、第2のアドレス選択器305は第2の命令ポイ
ンタ304の値を第2のアドレス12として出力する。
その結果、第2のアドレス12として値「11」が出力
される。2サイクル目の第2の命令15は「10」番地
の命令であるから、第1のプロセッサ1の第1の命令レ
ジスタ202は「10」番地の命令をフェッチする。フ
ェッチステージ選択信号115の値は「0」であるか
ら、第2の命令選択器203は第1の命令選択器201
の値を出力する。2サイクル目の第2の命令15は「1
0」番地の命令であるから、第2の命令レジスタ204
は「10」番地の命令をフェッチする。NOP選択信号
114の値は「0」であるから、第3の命令選択器20
5は第2の命令レジスタ204の値を命令コード111
として出力する。その結果、命令コード111の内容
は、「10」番地の命令となる。
て、プロセッサ選択信号411の値は「0」である。そ
のため、第1のアドレス11の値「2」が第1のバンク
アドレス17として出力される。また、第2のアドレス
12の値「11」が第2のバンクアドレス18として出
力される。よって、第1のバンク5は、第1の命令14
として「2」番地の命令を出力する。また、第2のバン
ク6は、第2の命令15として「11」番地の命令を出
力する。
令ポインタ103において、第1の命令ポインタ302
の値は「3」であり、第2の命令ポインタ304の値は
「2」である。フェッチステージ選択信号115の値は
「1」であるから、第1の命令ポインタ302の値
「3」が第1のアドレス11として出力される。第1の
命令レジスタ202は、3サイクル目の第1の命令14
である「2」番地の命令をフェッチする。フェッチステ
ージ選択信号115の値は「1」であるから、第2の命
令レジスタ204は、第1の命令レジスタ202が出力
する「1」番地の命令をフェッチする。NOP選択信号
114の値は「0」であるから、命令コード111の内
容は、第2の命令レジスタ204が出力する「1」番地
の命令となる。
において、第1の命令ポインタ302の値は「13」で
あり、第2の命令ポインタ304の値は「12」であ
る。フェッチステージ選択信号115の値は「0」であ
るから、第1の命令ポインタ302の値「13」が第2
のアドレス12として出力される。第1の命令レジスタ
202は、3サイクル目の第2の命令15である「1
1」番地の命令をフェッチする。フェッチステージ選択
信号115の値は「0」であるから、第2の命令レジス
タ204は、第1の命令選択器201が出力する「1
1」番地の命令をフェッチする。NOP選択信号114
の値は「0」であるから、命令コード111の内容は、
第2の命令レジスタ204が出力する「11」番地の命
令となる。
て、プロセッサ選択信号411の値は「1」である。そ
のため、第2のアドレス12の値「12」が第1のバン
クアドレス17として出力される。また、第1のアドレ
ス11の値「3」が第2のバンクアドレス18として出
力される。よって、第1のバンク5は、第1の命令14
として「12」番地の命令を出力する。また、第2のバ
ンク6は、第2の命令15として「3」番地の命令を出
力する。
令ポインタ103において、第1の命令ポインタ302
の値は「4」であり、第2の命令ポインタ304の値は
「3」である。フェッチステージ選択信号115の値は
「1」であるから、第1の命令ポインタ302の値
「4」が第1のアドレス11として出力される。第1の
命令レジスタ202は、4サイクル目の第1の命令14
である「3」番地の命令をフェッチする。フェッチステ
ージ選択信号115の値は「1」であるから、第2の命
令レジスタ204は、第1の命令レジスタ202が出力
する「2」番地の命令をフェッチする。NOP選択信号
114の値は「0」であるから、命令コード111の内
容は、第2の命令レジスタ204が出力する「2」番地
の命令となる。
において、第1の命令ポインタ302の値は「14」で
あり、第2の命令ポインタ304の値は「13」であ
る。フェッチステージ選択信号115の値は「0」であ
るから、第2の命令ポインタ304の値「13」が第2
のアドレス12として出力される。第1の命令レジスタ
202は、4サイクル目の第2の命令15である「1
2」番地の命令をフェッチする。フェッチステージ選択
信号115の値は「0」であるから、第2の命令レジス
タ204は、第1の命令選択器201が出力する「1
2」番地の命令をフェッチする。NOP選択信号114
の値は「0」であるから、命令コード111の内容は、
第2の命令レジスタ204が出力する「12」番地の命
令となる。
て、プロセッサ選択信号411の値は「0」である。そ
のため、第1のアドレス11の値「4」が第1のバンク
アドレス17として出力される。また、第2のアドレス
12の値「13」が第2のバンクアドレス18として出
力される。よって、第1のバンク5は、第1の命令14
として「4」番地の命令を出力する。また、第2のバン
ク6は、第2の命令15として「13」番地の命令を出
力する。
置100は、1〜5サイクル目と同様に処理を実施す
る。
1の命令フェッチステージF(1)を使用し、第2のプ
ロセッサ2は、第2の命令フェッチステージF(2)を
使用し、第1のバンク5と第2のバンク6を排他的にア
クセスするように制御する。
施形態2におけるプロセッサの分岐処理時のタイミング
チャートである。図13を参照して、プロセッサが命令
を分岐処理する場合の動作を説明する。なお、パイプラ
インは(命令の逐次処理)と同様の4段パイプラインで
ある。また、第1のプロセッサ1の場合は数値522を
「1」とし、第2のプロセッサ2の場合は数値522を
「0」とする。さらに、「1」番地の命令を「8」番地
への分岐を指示する分岐命令とし、実行ステージEXで
分岐処理するものとする。
置100は、(命令の逐次処理)の場合と同様に動作す
る。
び命令メモリ4のアドレス選択回路8は、(命令の逐次
処理)の場合と同様に動作する。
の分岐命令が実行されることにより、分岐命令信号11
2の値は「1」となる。これにより、NOP選択信号1
14の値が「1」となり、アドレス分岐信号116の値
も「1」となる。
において、第1の命令ポインタ302の値は「4」であ
り、第2の命令ポインタ304の値は「3」である。フ
ェッチステージ選択信号115の値は「1」であるか
ら、第1の命令ポインタ302の値「4」が第1のアド
レス11として出力される。第1の命令レジスタ202
は、4サイクル目の第1の命令14である「3」番地の
命令をフェッチする。フェッチステージ選択信号115
の値は「1」であるから、第2の命令レジスタ204
は、第1の命令レジスタ202が出力する「2」番地の
命令をフェッチする。NOP選択信号114の値は
「1」であるから、命令コード111の内容は、NOP
コード211(NOP命令)となる。
いて、「1」番地の分岐命令が実行されることにより、
分岐アドレス113の値は「8」となっている。分岐ア
ドレス113の最下位ビットが「0」であり、命令ポイ
ンタ信号117の値が「0」であり、アドレス分岐信号
116の値が「1」であることにより、フェッチステー
ジ選択信号115の値は「0」となる。一方、NOP選
択信号114の値は「1」となり、アドレス分岐信号1
16の値は「0」となる。
において、アドレス分岐信号116の値は「1」である
から、第1のアドレス選択器301は分岐アドレス11
3を出力する。その結果、第1の命令ポインタ302の
値は「8」となり、一方、第2の命令ポインタ304の
値は「4」である。フェッチステージ選択信号115の
値は「0」であるから、第2の命令ポインタ304の値
「4」が第1のアドレス11として出力される。第1の
命令レジスタ202は、4サイクル目の第1の命令14
である「3」番地の命令をフェッチする。フェッチステ
ージ選択信号115の値は「0」であるから、第2の命
令レジスタ204は、第1の命令選択器201が出力す
る「4」番地の命令をフェッチする。NOP選択信号1
14の値は「1」であるから、命令コード111の内容
は、NOPコード211(NOP命令)となる。
において、第1の命令ポインタ302の値は「15」で
あり、第2の命令ポインタ304の値は「14」であ
る。フェッチステージ選択信号115の値は「0」であ
るから、第2の命令ポインタ304の値「14」が第2
のアドレス12として出力される。第1の命令レジスタ
202は、5サイクル目の第2の命令15である「1
3」番地の命令をフェッチする。フェッチステージ選択
信号115の値は「0」であるから、第2の命令レジス
タ204は、第1の命令選択器201が出力する「1
3」番地の命令をフェッチする。NOP選択信号114
の値は「0」であるから、命令コード111の内容は、
第2の命令レジスタ204が出力する「13」番地の命
令となる。
て、プロセッサ選択信号411の値は「1」である。そ
のため、第2のアドレス12の値「14」が第1のバン
クアドレス17として出力される。また、第1のアドレ
ス11の値「4」が第2のバンクアドレス18として出
力される。よって、第1のバンク5は、第1の命令14
として「14」番地の命令を出力する。また、第2のバ
ンク6は、第2の命令15として「4」番地の命令を出
力する。
令ポインタ103において、第1の命令ポインタ302
の値は「9」であり、一方、第2の命令ポインタ304
の値は「8」である。フェッチステージ選択信号115
の値は「0」であるから、第2の命令ポインタ304の
値「8」が第1のアドレス11として出力される。第1
の命令レジスタ202は、6サイクル目の第1の命令1
4である「14」番地の命令をフェッチする。フェッチ
ステージ選択信号115の値は「0」であるから、第2
の命令レジスタ204は、第1の命令選択器201が出
力する「14」番地の命令をフェッチする。NOP選択
信号114の値は「1」であるから、命令コード111
の内容は、NOPコード211(NOP命令)となる。
において、第1の命令ポインタ302の値は「16」で
あり、第2の命令ポインタ304の値は「15」であ
る。フェッチステージ選択信号115の値は「0」であ
るから、第2の命令ポインタ304の値「15」が第2
のアドレス12として出力される。第1の命令レジスタ
202は、6サイクル目の第2の命令15である「1
4」番地の命令をフェッチする。フェッチステージ選択
信号115の値は「0」であるから、第2の命令レジス
タ204は、第1の命令選択器201が出力する「1
4」番地の命令をフェッチする。NOP選択信号114
の値は「0」であるから、命令コード111の内容は、
第2の命令レジスタ204が出力する「14」番地の命
令となる。
て、プロセッサ選択信号411の値は「0」である。そ
のため、第1のアドレス11の値「8」が第1のバンク
アドレス17として出力される。また、第2のアドレス
12の値「15」が第2のバンクアドレス18として出
力される。よって、第1のバンク5は、第1の命令14
として「8」番地の命令を出力する。また、第2のバン
ク6は、第2の命令15として「15」番地の命令を出
力する。
令ポインタ103において、第1の命令ポインタ302
の値は「10」であり、一方、第2の命令ポインタ30
4の値は「9」である。フェッチステージ選択信号11
5の値は「0」であるから、第2の命令ポインタ304
の値「9」が第1のアドレス11として出力される。第
1の命令レジスタ202は、7サイクル目の第1の命令
14である「9」番地の命令をフェッチする。フェッチ
ステージ選択信号115の値は「0」であるから、第2
の命令レジスタ204は、第1の命令選択器201が出
力する「8」番地の命令をフェッチする。NOP選択信
号114の値は「0」であるから、命令コード111の
内容は、第2の命令レジスタ204が出力する「8」番
地の命令となる。
において、第1の命令ポインタ302の値は「17」で
あり、第2の命令ポインタ304の値は「16」であ
る。フェッチステージ選択信号115の値は「0」であ
るから、第2の命令ポインタ304の値「16」が第2
のアドレス12として出力される。第1の命令レジスタ
202は、7サイクル目の第2の命令15である「1
5」番地の命令をフェッチする。フェッチステージ選択
信号115の値は「0」であるから、第2の命令レジス
タ204は、第1の命令選択器201が出力する「1
5」番地の命令をフェッチする。NOP選択信号114
の値は「0」であるから、命令コード111の内容は、
第2の命令レジスタ204が出力する「15」番地の命
令となる。
て、プロセッサ選択信号411の値は「1」である。そ
のため、第2のアドレス12の値「16」が第1のバン
クアドレス17として出力される。また、第1のアドレ
ス11の値「9」が第2のバンクアドレス18として出
力される。よって、第1のバンク5は、第1の命令14
として「16」番地の命令を出力する。また、第2のバ
ンク6は、第2の命令15として「9」番地の命令を出
力する。
置100は、1〜8サイクル目と同様に処理を実施す
る。
0は、分岐先の命令フェッチ時に、第1のプロセッサ1
の命令フェッチステージを第1の命令フェッチステージ
F(1)から第2の命令フェッチステージF(2)に変
更するように制御する。
の命令フェッチステージの変更方法を示す。プロセッサ
1、2内のバンク選択信号118をBANKSとする
と、フェッチステージF(1)、F(2)の切り替えは
図14に示されるように行われる。すなわち、BANK
S=0のとき、フェッチステージの変更は行われない。
BANKS=1のとき、F(1)→F(2)又はF
(2)→F(1)のフェッチステージの変更が行われ
る。
分岐先のアドレスをJIP[15:0]としたとき、B
ANKSの値は例えば以下のソースコードによって定め
られる。 if ( IP[0] == JIP[0] ) then BANKS = 1; else BANKS = 0; 以上のように本実施形態によれば、アドレス選択回路8
と第1のバンク5と第2のバンク6で構成された命令メ
モリ4と、命令レジスタ部101と命令ポインタ部10
3と制御部104とデコーダ部102で構成され、第1
の命令フェッチステージF(1)と第2の命令フェッチ
ステージF(2)の2個を有するパイプライン構成の第
1のプロセッサ1および第2のプロセッサ2を備え、第
1のプロセッサ1は、第1の命令フェッチステージF
(1)を使用し、第2のプロセッサ2は、第2の命令フ
ェッチステージF(2)を使用し、第1のバンク5と第
2のバンク6を排他的にアクセスするように制御し、分
岐先の命令フェッチ時に、第1のプロセッサ1の命令フ
ェッチステージを第1の命令フェッチステージF(1)
から第2の命令フェッチステージF(2)に変更するよ
うに制御する事で、命令メモリの共有を図ると共に、メ
モリのコンフリクトが発生しないようにする事ができ
る。
て、命令フェッチステージ以外をデコードステージと実
行ステージとして説明したが、命令フェッチステージ以
外は任意の構造でもよいことは明らかである。また、分
岐処理のステージを実行ステージとして説明したが、任
意のステージにしてもよいことは明らかである。また、
第1のプロセッサ1が分岐処理するものとして説明した
が、その他のプロセッサが分岐処理する場合にも同様に
制御ができる事は明らかである。
ロセッサにおいて、コンフリクト発生時のメモリアクセ
スの調停が不要となる。これにより、メモリアクセスの
調停のための回路が不要となり、メモリアクセスの調停
による待ち時間が発生しなくなる。
は、メモリアクセスの調停のための待ち時間が発生しな
いため、アプリケーションの実行時間の予測が可能であ
る。そのため、マルチプロセッサであることを意識せず
に、シングルプロセッサと同様にアプリケーションシス
テムの開発をすることができる。本発明のマルチプロセ
ッサ装置はアプリケーションの実行時間の予測が可能で
あるため、リアルタイム処理が要求される通信用DSP
等に適用することが容易である。
命令を処理する場合に、プロセッサが命令をフェッチす
る命令フェッチステージを変更することにより、分岐命
令の処理後もメモリアクセスのコンフリクトが発生しな
いようにすることが可能である。
である。
ッサのパイプライン構造を示す図である。
処理時のタイミングチャートである。
処理時のタイミングチャートである。
フェッチステージの変更方法を示す図である。
を示す図である。
を示す図である。
る命令レジスタ部の構成を示す図である。
る命令ポインタ部の構成を示す図である。
路の構成を示す図である。
える制御部の構成を示す図である。
次処理時のタイミングチャートである。
岐処理時のタイミングチャートである。
令フェッチステージの変更方法を示す図である。
ロップ 404、511、512 インバータ 411 プロセッサ選択信号 502 排他的論理和ゲート 503、504、505、509 論理積ゲート 506 論理和ゲート 521 リセット信号 522 数値「1」または「2」
Claims (7)
- 【請求項1】 N個のプロセッサと、 M個のバンクと、 アドレス選択部と を備え、 前記N個のプロセッサのそれぞれは、N個の命令フェッ
チステージを有するパイプラインで命令を処理するパイ
プラインプロセッサであり、 前記N個のプロセッサのそれぞれには、前記N個のプロ
セッサのうちの複数のプロセッサが前記M個のバンクの
うちの1つに同時にアクセスすることがないように、前
記N個の命令フェッチステージのうちどの命令フェッチ
ステージにおいて命令をフェッチするかが割り当てられ
ており、 前記M個のバンクのそれぞれには、複数の命令が格納さ
れており、 前記アドレス選択部は、前記N個のプロセッサから出力
されたアドレスを受け取り、前記M個のバンクのうち前
記アドレスによって特定されたバンクに、前記特定され
たバンクに格納されている前記複数の命令のうちフェッ
チすべき命令の番地を示すバンクアドレスを出力し、 前記特定されたバンクは、前記特定されたバンクに格納
されている前記複数の命令のうち前記バンクアドレスに
よって示された番地の命令を出力し、 前記N個のプロセッサのうちの1つは、前記特定された
バンクから出力された前記命令を前記N個の命令フェッ
チステージのうち割り当てられた1つの命令フェッチス
テージにおいてフェッチし、 Nは2以上の整数であり、MはN以上の整数である、マ
ルチプロセッサ装置。 - 【請求項2】 前記N個のプロセッサが分岐命令を処理
する場合に、前記命令をフェッチする前記命令フェッチ
ステージを変更する、請求項1に記載のマルチプロセッ
サ装置。 - 【請求項3】 前記N個のプロセッサは、 前記命令と、バンク選択信号と、フェッチステージ選択
信号と、NOP選択信号とが入力され、命令コードを出
力する命令レジスタ部と、 前記命令コードが入力され、分岐命令信号と、分岐アド
レスとを出力するデコーダ部と、 前記分岐命令信号と、前記分岐アドレスと、命令ポイン
タ信号とが入力され、前記フェッチステージ選択信号
と、前記NOP選択信号と、アドレス分岐信号とを出力
する制御部と、 前記フェッチステージ選択信号と、前記アドレス分岐信
号と、前記分岐アドレスとが入力され、前記バンク選択
信号と、前記命令ポインタ信号と、前記アドレスとを出
力する命令ポインタ部と、 をそれぞれ備えている、請求項2に記載のマルチプロセ
ッサ装置。 - 【請求項4】 前記N個のプロセッサのそれぞれは、前
記N個の命令フェッチステージのうちに命令のフェッチ
を行わない命令フェッチステージを有している、請求項
1に記載のマルチプロセッサ装置。 - 【請求項5】 N個のプロセッサとM個のバンクとアド
レス選択部とを備えたマルチプロセッサ装置の制御方法
であって、 前記N個のプロセッサのそれぞれは、N個の命令フェッ
チステージを有するパイプラインで命令を処理するパイ
プラインプロセッサであり、 前記N個のプロセッサのそれぞれには、前記N個のプロ
セッサのうちの複数のプロセッサが前記M個のバンクの
うちの1つに同時にアクセスすることがないように、前
記N個の命令フェッチステージのうちどの命令フェッチ
ステージにおいて命令をフェッチするかが割り当てられ
ており、 前記M個のバンクのそれぞれには、複数の命令が格納さ
れており、 前記制御方法は、 前記アドレス選択部が、前記N個のプロセッサから出力
されたアドレスを受け取り、前記M個のバンクのうち前
記アドレスによって特定されたバンクに、前記特定され
たバンクに格納されている前記複数の命令のうちフェッ
チすべき命令の番地を示すバンクアドレスを出力するス
テップと、 前記特定されたバンクが、前記特定されたバンクに格納
されている前記複数の命令のうち前記バンクアドレスに
よって示された番地の命令を出力するステップと、 前記N個のプロセッサのうちの1つが、前記特定された
バンクから出力された前記命令を前記N個の命令フェッ
チステージのうち割り当てられた1つの命令フェッチス
テージにおいてフェッチするステップとを包含し、 Nは2以上の整数であり、MはN以上の整数である、制
御方法。 - 【請求項6】 前記N個のプロセッサのうちの1つが分
岐命令を処理する場合に、前記命令をフェッチする前記
命令フェッチステージを変更する、請求項5に記載の制
御方法。 - 【請求項7】 前記N個のプロセッサのそれぞれは、前
記N個の命令フェッチステージのうちに命令のフェッチ
を行わない命令フェッチステージを有している、請求項
5に記載の制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP05201699A JP3526773B2 (ja) | 1999-02-26 | 1999-02-26 | マルチプロセッサ装置およびその制御方法 |
US09/514,204 US6785799B1 (en) | 1999-02-26 | 2000-02-25 | Multiprocessor with asynchronous pipeline processing of instructions, and control method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP05201699A JP3526773B2 (ja) | 1999-02-26 | 1999-02-26 | マルチプロセッサ装置およびその制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000250869A JP2000250869A (ja) | 2000-09-14 |
JP3526773B2 true JP3526773B2 (ja) | 2004-05-17 |
Family
ID=12903031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP05201699A Expired - Fee Related JP3526773B2 (ja) | 1999-02-26 | 1999-02-26 | マルチプロセッサ装置およびその制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6785799B1 (ja) |
JP (1) | JP3526773B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8866826B2 (en) * | 2011-02-10 | 2014-10-21 | Qualcomm Innovation Center, Inc. | Method and apparatus for dispatching graphics operations to multiple processing resources |
US20170083336A1 (en) * | 2015-09-23 | 2017-03-23 | Mediatek Inc. | Processor equipped with hybrid core architecture, and associated method |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5127098A (en) * | 1989-04-12 | 1992-06-30 | Sun Microsystems, Inc. | Method and apparatus for the context switching of devices |
US5499356A (en) | 1989-12-29 | 1996-03-12 | Cray Research, Inc. | Method and apparatus for a multiprocessor resource lockout instruction |
US5357617A (en) * | 1991-11-22 | 1994-10-18 | International Business Machines Corporation | Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor |
US5412788A (en) * | 1992-04-16 | 1995-05-02 | Digital Equipment Corporation | Memory bank management and arbitration in multiprocessor computer system |
US5787488A (en) * | 1993-04-22 | 1998-07-28 | Analog Devices, Inc. | Multi-phase multi-access pipeline memory system |
US5574871A (en) * | 1994-01-04 | 1996-11-12 | Intel Corporation | Method and apparatus for implementing a set-associative branch target buffer |
US5611075A (en) * | 1994-10-04 | 1997-03-11 | Analog Devices, Inc. | Bus architecture for digital signal processor allowing time multiplexed access to memory banks |
JP3504355B2 (ja) * | 1994-12-06 | 2004-03-08 | 松下電器産業株式会社 | プロセッサ |
-
1999
- 1999-02-26 JP JP05201699A patent/JP3526773B2/ja not_active Expired - Fee Related
-
2000
- 2000-02-25 US US09/514,204 patent/US6785799B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US6785799B1 (en) | 2004-08-31 |
JP2000250869A (ja) | 2000-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5045993A (en) | Digital signal processor | |
KR0133238B1 (ko) | 컴퓨터 프로세싱 시스템 및 인스트럭션 실행방법 | |
US20020169942A1 (en) | VLIW processor | |
JPH0545985B2 (ja) | ||
NZ201809A (en) | Microprocessor | |
JPH11212786A (ja) | レジスタベースデータ処理のためのデータパスおよび方法 | |
US5710914A (en) | Digital signal processing method and system implementing pipelined read and write operations | |
JPS62115542A (ja) | 情報処理装置 | |
JP3526773B2 (ja) | マルチプロセッサ装置およびその制御方法 | |
JPH0512751B2 (ja) | ||
EP0136218A2 (en) | Multiple port pipelined processor | |
JP2503984B2 (ja) | 情報処理装置 | |
JP3461887B2 (ja) | 可変長パイプライン制御装置 | |
US20050033939A1 (en) | Address generation | |
JP2636192B2 (ja) | 情報処理装置 | |
JP2001092658A (ja) | データ処理回路及びデータ処理装置 | |
JPS60105050A (ja) | パイプライン制御方式 | |
JP2925842B2 (ja) | パイプライン処理装置 | |
JP2545798B2 (ja) | デイジタル信号処理回路 | |
JP3517139B2 (ja) | 情報処理装置 | |
JP3088956B2 (ja) | 演算装置 | |
JP2003345589A (ja) | 情報処理装置 | |
JPS5896346A (ja) | 階層型演算方式 | |
JPH01224870A (ja) | 情報処理装置における主記憶アクセス命令実行制御方式 | |
JP2001034603A (ja) | 積和演算処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20031125 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040126 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040217 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040217 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080227 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090227 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100227 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100227 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110227 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120227 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |