JP2000250869A - マルチプロセッサの制御方法およびその装置 - Google Patents
マルチプロセッサの制御方法およびその装置Info
- Publication number
- JP2000250869A JP2000250869A JP11052016A JP5201699A JP2000250869A JP 2000250869 A JP2000250869 A JP 2000250869A JP 11052016 A JP11052016 A JP 11052016A JP 5201699 A JP5201699 A JP 5201699A JP 2000250869 A JP2000250869 A JP 2000250869A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- address
- processor
- bank
- value
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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)
Abstract
ンフリクト発生時のメモリアクセスの調停の必要をなく
すことにより、メモリアクセスの調停のための回路を不
要にし、アプリケーションの実行時間の予測が容易なメ
モリ共有型マルチプロセッサを提供すること。 【解決手段】 本発明のマルチプロセッサ装置100
は、N個の命令フェッチステージを有し(Nは2以上の
整数)、前記N個の命令フェッチステージのうちの1つ
において命令14〜16をフェッチし、前記命令をパイ
プライン処理してアドレスを出力するN個のプロセッサ
1〜3と、N個のプロセッサ1〜3が出力したN個のア
ドレス11〜13に応じて、N個のバンクアドレス17
〜19を出力するアドレス選択部8と、複数の命令を格
納し、アドレス選択部8が出力したN個のバンクアドレ
ス17〜19のうちの1つに対応する、前記複数の命令
のうちの1つを出力するM個のバンク5〜7と(MはN
以上の整数)を備えたマルチプロセッサ装置であって、
N個のプロセッサ1〜3は、相異なる前記命令フェッチ
ステージにおいて命令14〜16をフェッチする。
Description
ン処理する情報処理装置におけるマルチプロセッサの制
御方法およびその装置に関する。
法の一つとして、従来から複数のプロセッサを同一の半
導体チップに搭載して処理を並列実行させる方法があ
る。この方法によれば、例えば1つのプロセッサでは所
望のアプリケーションを実行するための処理能力が足り
ない場合に、複数個のプロセッサに分割処理させること
によりこのアプリケーションを実行させることができ
る。この方法を適用した他の例としては、複数のプロセ
ッサがメモリを共有するメモリ共有型マルチプロセッサ
がある。メモリ共有型マルチプロセッサにおいては、複
数のプロセッサの間で命令やデータを共有することがで
きる。
メモリ共有型マルチプロセッサには命令やデータを共有
することができるという利点がある反面、各プロセッサ
が同時に共有メモリにアクセスした場合にコンフリクト
が発生するという欠点が存在する。コンフリクトが発生
した場合にはメモリアクセスの調停が必要になり、各プ
ロセッサのメモリへのアクセスが待たされる。
る順序は、装置が実行するアプリケーションが処理する
データの内容に依存する。アプリケーションが処理する
データが一定でない場合には、プロセッサのメモリへの
アクセス順序を予測することは不可能である。そのた
め、メモリアクセスの調停によって各プロセッサのメモ
リへのアクセスが待たされる時間を予測することができ
ず、アプリケーションの実行時間を見積もることが困難
であった。
ロセッサにおいては、コンフリクト発生時のメモリアク
セスの調停のためにアプリケーションの実行時間を予測
できないという問題があった。そのため、従来のメモリ
共有型マルチプロセッサは、リアルタイム処理が要求さ
れる通信用DSP(デジタルシグナルプロセッサ)等に
適用することが困難であった。
する。
いて、コンフリクト発生時のメモリアクセスの調停の必
要をなくすことにより、メモリアクセスの調停のための
回路を不要にすること。
が容易なメモリ共有型マルチプロセッサを提供するこ
と。
サ装置は、それぞれN個の命令フェッチステージを有し
(Nは2以上の整数)、前記N個の命令フェッチステー
ジのうちの1つにおいて命令をフェッチし、前記命令を
パイプライン処理してアドレスを出力するN個のプロセ
ッサと、前記N個のプロセッサが出力した前記アドレス
に応じて、バンクアドレスを出力するアドレス選択部
と、それぞれ複数の命令を格納し、前記アドレス選択部
が出力した前記バンクアドレスに対応する、前記複数の
命令のうちの1つを出力するM個のバンクと(MはN以
上の整数)を備えたマルチプロセッサ装置であって、前
記N個のプロセッサは、互いに異なる前記命令フェッチ
ステージにおいて前記命令をフェッチし、これにより上
記目的が達成される。
る場合に、前記命令をフェッチする前記命令フェッチス
テージを変更してもよい。
ンク選択信号と、フェッチステージ選択信号と、NOP
選択信号とが入力され、命令コードを出力する命令レジ
スタ部と、前記命令コードが入力され、分岐命令信号
と、分岐アドレスとを出力するデコーダ部と、前記分岐
命令信号と、前記分岐アドレスと、命令ポインタ信号と
が入力され、前記フェッチステージ選択信号と、前記N
OP選択信号と、アドレス分岐信号とを出力する制御部
と、前記フェッチステージ選択信号と、前記アドレス分
岐信号と、前記分岐アドレスとが入力され、前記バンク
選択信号と、前記命令ポインタ信号と、前記アドレスと
を出力する命令ポインタ部とをそれぞれ備えていてもよ
い。
は、それぞれN個の命令フェッチステージ(Nは2以上
の整数)を有し、命令をパイプライン処理するN個のプ
ロセッサと、それぞれ複数の命令を格納したM個のバン
ク(MはN以上の整数)とを備えたマルチプロセッサ装
置において、前記N個のプロセッサが、それぞれ前記N
個の命令フェッチステージのうちの1つにおいて命令を
フェッチするステップと、前記N個のプロセッサが、そ
れぞれフェッチした前記命令を処理してアドレスを出力
するステップと、前記N個のプロセッサが出力した前記
アドレスに応じて、バンクアドレスをM個のバンクのう
ちの1つに出力するステップと、前記M個のバンクが、
それぞれ前記バンクアドレスに対応する前記複数の命令
のうちの1つを出力するステップとを包含し、前記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 (5)
- 【請求項1】 それぞれN個の命令フェッチステージを
有し(Nは2以上の整数)、前記N個の命令フェッチス
テージのうちの1つにおいて命令をフェッチし、前記命
令をパイプライン処理してアドレスを出力するN個のプ
ロセッサと、 前記N個のプロセッサが出力した前記アドレスに応じ
て、バンクアドレスを出力するアドレス選択部と、 それぞれ複数の命令を格納し、前記アドレス選択部が出
力した前記バンクアドレスに対応する、前記複数の命令
のうちの1つを出力するM個のバンクと(MはN以上の
整数)を備えたマルチプロセッサ装置であって、 前記N個のプロセッサは、互いに異なる前記命令フェッ
チステージにおいて前記命令をフェッチする、 マルチプロセッサ装置。 - 【請求項2】 前記N個のプロセッサが分岐命令を処理
する場合に、前記命令をフェッチする前記命令フェッチ
ステージを変更する、請求項1に記載のマルチプロセッ
サ装置。 - 【請求項3】 前記N個のプロセッサは、 前記命令と、バンク選択信号と、フェッチステージ選択
信号と、NOP選択信号とが入力され、命令コードを出
力する命令レジスタ部と、 前記命令コードが入力され、分岐命令信号と、分岐アド
レスとを出力するデコーダ部と、 前記分岐命令信号と、前記分岐アドレスと、命令ポイン
タ信号とが入力され、前記フェッチステージ選択信号
と、前記NOP選択信号と、アドレス分岐信号とを出力
する制御部と、 前記フェッチステージ選択信号と、前記アドレス分岐信
号と、前記分岐アドレスとが入力され、前記バンク選択
信号と、前記命令ポインタ信号と、前記アドレスとを出
力する命令ポインタ部と、 をそれぞれ備えている、請求項2に記載のマルチプロセ
ッサ装置。 - 【請求項4】 それぞれN個の命令フェッチステージ
(Nは2以上の整数)を有し、命令をパイプライン処理
するN個のプロセッサと、それぞれ複数の命令を格納し
たM個のバンク(MはN以上の整数)とを備えたマルチ
プロセッサ装置において、 前記N個のプロセッサが、それぞれ前記N個の命令フェ
ッチステージのうちの1つにおいて命令をフェッチする
ステップと、 前記N個のプロセッサが、それぞれフェッチした前記命
令を処理してアドレスを出力するステップと、 前記N個のプロセッサが出力した前記アドレスに応じ
て、バンクアドレスをM個のバンクのうちの1つに出力
するステップと、 前記M個のバンクが、それぞれ前記バンクアドレスに対
応する前記複数の命令のうちの1つを出力するステップ
とを包含し、 前記N個のプロセッサは、互いに異なる前記命令フェッ
チステージにおいて前記命令をフェッチする、 マルチプロセッサ装置の制御方法。 - 【請求項5】 前記N個のプロセッサのうちの1つが分
岐命令を処理する場合に、前記命令をフェッチする前記
命令フェッチステージを変更する、請求項4に記載の制
御方法。
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 true JP2000250869A (ja) | 2000-09-14 |
| JP3526773B2 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 |
| US6513125B1 (en) * | 1993-04-22 | 2003-01-28 | Analog Devices, Inc. | Multi-phase multi-access pipeline memory system in which the pipeline memory can decode addresses issued by one processor while simultaneously accessing memory array by other processor |
| 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 |
|---|---|
| JP3526773B2 (ja) | 2004-05-17 |
| US6785799B1 (en) | 2004-08-31 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8145885B2 (en) | Apparatus for randomizing instruction thread interleaving in a multi-thread processor | |
| EP0238090B1 (en) | Microcomputer capable of accessing internal memory at a desired variable access time | |
| US5446849A (en) | Electronic computer which executes squash branching | |
| NZ201809A (en) | Microprocessor | |
| US6101596A (en) | Information processor for performing processing without register conflicts | |
| US20250130808A1 (en) | Vector transformation in parallel with arithmetic operation | |
| US5710914A (en) | Digital signal processing method and system implementing pipelined read and write operations | |
| JPH02227730A (ja) | データ処理システム | |
| US4907147A (en) | Pipelined data processing system with register indirect addressing | |
| US4896264A (en) | Microprocess with selective cache memory | |
| JP3526773B2 (ja) | マルチプロセッサ装置およびその制御方法 | |
| US20070260857A1 (en) | Electronic Circuit | |
| JPH0512751B2 (ja) | ||
| US6266764B1 (en) | Program controller for switching between first program and second program | |
| JP3461887B2 (ja) | 可変長パイプライン制御装置 | |
| JP2636192B2 (ja) | 情報処理装置 | |
| JP3102399B2 (ja) | データ処理装置及び方法 | |
| JP2001092658A (ja) | データ処理回路及びデータ処理装置 | |
| JPH07191845A (ja) | 即値データ転送装置 | |
| JP2003345589A (ja) | 情報処理装置 | |
| JPH02138625A (ja) | データ処理装置 | |
| JPH05257683A (ja) | 大規模集積回路のパイプライン構造 | |
| JPH11272463A (ja) | 記憶装置及び情報処理装置 | |
| JPH07210384A (ja) | 浮動小数点演算装置 | |
| JPS5896346A (ja) | 階層型演算方式 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20031125 |
|
| A521 | Request for written amendment filed |
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 |