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
Application number
JP11052016A
Other languages
English (en)
Other versions
JP3526773B2 (ja
Inventor
Masayuki Yamazaki
雅之 山▲崎▼
Katsuhiko Ueda
勝彦 上田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP05201699A priority Critical patent/JP3526773B2/ja
Priority to US09/514,204 priority patent/US6785799B1/en
Publication of JP2000250869A publication Critical patent/JP2000250869A/ja
Application granted granted Critical
Publication of JP3526773B2 publication Critical patent/JP3526773B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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

(57)【要約】 【課題】 メモリ共有型マルチプロセッサにおいて、コ
ンフリクト発生時のメモリアクセスの調停の必要をなく
すことにより、メモリアクセスの調停のための回路を不
要にし、アプリケーションの実行時間の予測が容易なメ
モリ共有型マルチプロセッサを提供すること。 【解決手段】 本発明のマルチプロセッサ装置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

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、命令をパイプライ
ン処理する情報処理装置におけるマルチプロセッサの制
御方法およびその装置に関する。
【0002】
【従来の技術】マイクロコンピュータを高性能化する手
法の一つとして、従来から複数のプロセッサを同一の半
導体チップに搭載して処理を並列実行させる方法があ
る。この方法によれば、例えば1つのプロセッサでは所
望のアプリケーションを実行するための処理能力が足り
ない場合に、複数個のプロセッサに分割処理させること
によりこのアプリケーションを実行させることができ
る。この方法を適用した他の例としては、複数のプロセ
ッサがメモリを共有するメモリ共有型マルチプロセッサ
がある。メモリ共有型マルチプロセッサにおいては、複
数のプロセッサの間で命令やデータを共有することがで
きる。
【0003】
【発明が解決しようとする課題】しかしながら、上記の
メモリ共有型マルチプロセッサには命令やデータを共有
することができるという利点がある反面、各プロセッサ
が同時に共有メモリにアクセスした場合にコンフリクト
が発生するという欠点が存在する。コンフリクトが発生
した場合にはメモリアクセスの調停が必要になり、各プ
ロセッサのメモリへのアクセスが待たされる。
【0004】また、各プロセッサがメモリにアクセスす
る順序は、装置が実行するアプリケーションが処理する
データの内容に依存する。アプリケーションが処理する
データが一定でない場合には、プロセッサのメモリへの
アクセス順序を予測することは不可能である。そのた
め、メモリアクセスの調停によって各プロセッサのメモ
リへのアクセスが待たされる時間を予測することができ
ず、アプリケーションの実行時間を見積もることが困難
であった。
【0005】このように、従来のメモリ共有型マルチプ
ロセッサにおいては、コンフリクト発生時のメモリアク
セスの調停のためにアプリケーションの実行時間を予測
できないという問題があった。そのため、従来のメモリ
共有型マルチプロセッサは、リアルタイム処理が要求さ
れる通信用DSP(デジタルシグナルプロセッサ)等に
適用することが困難であった。
【0006】本発明は、以下の(1)、(2)を目的と
する。
【0007】(1)メモリ共有型マルチプロセッサにお
いて、コンフリクト発生時のメモリアクセスの調停の必
要をなくすことにより、メモリアクセスの調停のための
回路を不要にすること。
【0008】(2)アプリケーションの実行時間の予測
が容易なメモリ共有型マルチプロセッサを提供するこ
と。
【0009】
【課題を解決するための手段】本発明のマルチプロセッ
サ装置は、それぞれN個の命令フェッチステージを有し
(Nは2以上の整数)、前記N個の命令フェッチステー
ジのうちの1つにおいて命令をフェッチし、前記命令を
パイプライン処理してアドレスを出力するN個のプロセ
ッサと、前記N個のプロセッサが出力した前記アドレス
に応じて、バンクアドレスを出力するアドレス選択部
と、それぞれ複数の命令を格納し、前記アドレス選択部
が出力した前記バンクアドレスに対応する、前記複数の
命令のうちの1つを出力するM個のバンクと(MはN以
上の整数)を備えたマルチプロセッサ装置であって、前
記N個のプロセッサは、互いに異なる前記命令フェッチ
ステージにおいて前記命令をフェッチし、これにより上
記目的が達成される。
【0010】前記N個のプロセッサが分岐命令を処理す
る場合に、前記命令をフェッチする前記命令フェッチス
テージを変更してもよい。
【0011】前記N個のプロセッサは、前記命令と、バ
ンク選択信号と、フェッチステージ選択信号と、NOP
選択信号とが入力され、命令コードを出力する命令レジ
スタ部と、前記命令コードが入力され、分岐命令信号
と、分岐アドレスとを出力するデコーダ部と、前記分岐
命令信号と、前記分岐アドレスと、命令ポインタ信号と
が入力され、前記フェッチステージ選択信号と、前記N
OP選択信号と、アドレス分岐信号とを出力する制御部
と、前記フェッチステージ選択信号と、前記アドレス分
岐信号と、前記分岐アドレスとが入力され、前記バンク
選択信号と、前記命令ポインタ信号と、前記アドレスと
を出力する命令ポインタ部とをそれぞれ備えていてもよ
い。
【0012】本発明のマルチプロセッサ装置の制御方法
は、それぞれN個の命令フェッチステージ(Nは2以上
の整数)を有し、命令をパイプライン処理するN個のプ
ロセッサと、それぞれ複数の命令を格納したM個のバン
ク(MはN以上の整数)とを備えたマルチプロセッサ装
置において、前記N個のプロセッサが、それぞれ前記N
個の命令フェッチステージのうちの1つにおいて命令を
フェッチするステップと、前記N個のプロセッサが、そ
れぞれフェッチした前記命令を処理してアドレスを出力
するステップと、前記N個のプロセッサが出力した前記
アドレスに応じて、バンクアドレスをM個のバンクのう
ちの1つに出力するステップと、前記M個のバンクが、
それぞれ前記バンクアドレスに対応する前記複数の命令
のうちの1つを出力するステップとを包含し、前記N個
のプロセッサは、互いに異なる前記命令フェッチステー
ジにおいて前記命令をフェッチし、これにより上記目的
が達成される。
【0013】前記N個のプロセッサのうちの1つが分岐
命令を処理する場合に、前記命令をフェッチする前記命
令フェッチステージを変更してもよい。
【0014】
【発明の実施の形態】はじめに、本発明の原理について
説明する。
【0015】図1は、本発明のマルチプロセッサ装置1
00の構成を示す。マルチプロセッサ装置100は、第
1のプロセッサ1から第Nのプロセッサ3までのN個の
プロセッサと、命令メモリ4とを備える。命令メモリ4
は、第1のバンク5から第Mのバンク7までのM個のバ
ンクと、アドレス選択回路8とを備える。ここで、Nは
2以上の整数であり、MはN以上の整数である。
【0016】第1のプロセッサ1から第Nのプロセッサ
3までのN個のプロセッサは、命令をパイプライン処理
するパイプラインプロセッサである。各プロセッサは、
N個の命令フェッチステージを含むパイプステージを有
する。N個のプロセッサのパイプライン構造の詳細につ
いては後述する。
【0017】第1のバンク5から第Mのバンク7までの
M個のバンクには、それぞれ複数の命令が格納されてい
る。M個のバンクにそれぞれ格納された複数の命令は、
全体でマルチプロセッサ装置によって実行されるアプリ
ケーションプログラムを構成している。命令が格納され
る形式には、例えば、1番地の命令が第1のバンク5に
格納され、2番地の命令が第2のバンク6に格納され、
・・・M番地の命令が第Mのバンク7に格納され、(M
+1)番地の命令が第1のバンク5に格納される、・・
・というようなインターリーブ形式等が使用される。以
下の説明においては、アプリケーションプログラムを構
成する命令は上記のインターリーブ形式でM個のバンク
に格納されているものとする。しかし、M個のバンクへ
の命令の格納形式には、インターリーブ形式以外の任意
の形式が使用され得る。
【0018】第1のプロセッサ1には、第1の命令14
から第Mの命令16までのM個の命令が入力される。第
1のプロセッサ1は、入力されたM個の命令のうちの1
つを選択してフェッチする。第1のプロセッサ1は、フ
ェッチした命令の処理結果として、第1のアドレス11
を出力する。同様に、第2のプロセッサ2には、第1の
命令14から第Mの命令16までのM個の命令が入力さ
れ、第2のプロセッサ2は、第2のアドレス12を出力
する。
【0019】このように、N個のプロセッサには、第1
の命令14から第Mの命令16までのM個の命令が入力
される。N個のプロセッサは、第1のアドレス11から
第Nのアドレス13までのN個のアドレスをそれぞれ出
力する。
【0020】命令メモリ4は、命令格納手段である。命
令メモリ4のアドレス選択回路8には、第1のアドレス
11から第Nのアドレス13までのN個のアドレスが入
力される。アドレス選択回路8は、アドレス選択手段で
あり、入力されたアドレスの最下位ビットから、アドレ
スに対応するバンクを特定する。アドレスに対応するバ
ンクを特定するための最下位ビットの数は、バンクの個
数Mに依存した1以上の数である。
【0021】アドレス選択回路8は、アドレスの最下位
ビットから特定したバンクに対し、アドレスの最下位ビ
ットを除いたものを、バンクアドレスとして出力する。
アドレス選択回路8は、M個のバンクに対して、第1の
バンクアドレス17から第Mのバンクアドレス19まで
のM個のバンクアドレスを出力する。
【0022】第1のバンク5には、第1のバンクアドレ
ス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を出力する。
【0023】図2は、本発明のマルチプロセッサ装置1
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は実行ステージであ
る。
【0024】マルチプロセッサ装置100が備えるN個
のプロセッサのそれぞれには、複数のプロセッサが1つ
のバンクに同時にアクセスすることのない様にN個の命
令フェッチステージのうちのいずれかが割り当てられ
る。各プロセッサは、割り当てられた命令フェッチステ
ージに、命令メモリ4が備えるM個のバンクにアクセス
する。
【0025】以下、図面を参照して、本発明の実施の形
態について説明する。なお、以下の実施形態の説明にお
いては、便宜上M=Nであるものとする。また、第1の
バンクアドレス17から第Mのバンクアドレス19まで
の各バンクアドレスは、第1のアドレス11から第Nの
アドレス13までの各アドレスの最下位ビットを除いた
ものであるが、便宜上、第1のアドレス11から第Nの
アドレス13までの各アドレスと同じ表現を使用する。
【0026】(実施形態1)まず、本発明の実施形態1
のマルチプロセッサの制御方法およびその装置について
説明する。実施形態1においては、N=3であるものと
する。
【0027】(命令の逐次処理)図3は、本発明の実施
形態1におけるプロセッサの逐次処理時のタイミングチ
ャートである。図3を参照して、N=3の場合につい
て、命令を逐次処理する場合のプロセッサの動作を説明
する。
【0028】
【表1】
【0029】表1は各プロセッサへの命令フェッチステ
ージの初期割り当てのパターンを示す。N=3の場合の
命令フェッチステージの初期割り当てとしては、その1
〜その6の6つのパターンが可能である。本実施形態に
おいては、命令フェッチステージの初期割り当てがその
1のパターンであるものとして説明する。すなわち、第
1のプロセッサ1には、第1の命令フェッチステージF
(1)を割り当て、第2のプロセッサ2には、第2の命
令フェッチステージF(2)を割り当て、第3のプロセ
ッサ3には、第3の命令フェッチステージF(3)を割
り当てるものとする。
【0030】<1サイクル目>第1のプロセッサ1が、
第1のバンク5から命令をフェッチする。具体的には、
マルチプロセッサ装置100は下記のように動作する。
【0031】第1のプロセッサ1は、第1の命令アドレ
ス11をアドレス選択回路8に出力する。アドレス選択
回路8は、第1の命令アドレス11を第1のバンクアド
レス17に出力する。第1のバンク5は、入力された第
1のバンクアドレス17の示す番地の命令を第1の命令
14として第1のプロセッサ1に出力する。これによ
り、第1のプロセッサ1は第1の命令14をフェッチす
る。
【0032】<2サイクル目>第1のプロセッサ1が第
2のバンク6から命令をフェッチし、第2のプロセッサ
2が第1のバンク5から命令をフェッチする。具体的に
は、マルチプロセッサ装置100は下記のように動作す
る。
【0033】第1のプロセッサ1は、第1の命令アドレ
ス11をアドレス選択回路8に出力する。アドレス選択
回路8は、第1の命令アドレス11を第2のバンクアド
レス18に出力する。第2のバンク6は、入力された第
2のバンクアドレス18の示す番地の命令を第2の命令
15として第1のプロセッサ1に出力する。これによ
り、第1のプロセッサ1は第2の命令15をフェッチす
る。
【0034】第2のプロセッサ2は、第2の命令アドレ
ス12をアドレス選択回路8に出力する。アドレス選択
回路8は、第2の命令アドレス12を第1のバンクアド
レス17に出力する。第1のバンク5は、入力された第
1のバンクアドレス17の示す番地の命令を第1の命令
14として第2のプロセッサ2に出力する。これによ
り、第2のプロセッサ2は第1の命令14をフェッチす
る。
【0035】<3サイクル目>第1のプロセッサ1が第
3のバンク7から命令をフェッチし、第2のプロセッサ
2が第2のバンク6から命令をフェッチし、第3のプロ
セッサ3が第1のバンク5から命令をフェッチする。具
体的には、マルチプロセッサ装置100は下記のように
動作する。
【0036】第1のプロセッサ1は、第1の命令アドレ
ス11をアドレス選択回路8に出力する。アドレス選択
回路8は、第1の命令アドレス11を第3のバンクアド
レス19に出力する。第3のバンク7は、入力された第
3のバンクアドレス19の示す番地の命令を第3の命令
16として第1のプロセッサ1に出力する。これによ
り、第1のプロセッサ1は第3の命令16をフェッチす
る。
【0037】第2のプロセッサ2は、第2の命令アドレ
ス12をアドレス選択回路8に出力する。アドレス選択
回路8は、第2の命令アドレス12を第2のバンクアド
レス18に出力する。第2のバンク6は、入力された第
2のバンクアドレス18の示す番地の命令を第2の命令
15として第2のプロセッサ2に出力する。これによ
り、第2のプロセッサ2は第2の命令15をフェッチす
る。
【0038】第3のプロセッサ3は、第3の命令アドレ
ス13をアドレス選択回路8に出力する。アドレス選択
回路8は、第3の命令アドレス13を第1のバンクアド
レス17に出力する。第1のバンク5は、入力された第
1のバンクアドレス17の示す番地の命令を第1の命令
14として第3のプロセッサ3に出力する。これによ
り、第3のプロセッサ3は第1の命令14をフェッチす
る。
【0039】<4サイクル目>第1のプロセッサ1が第
1のバンク5から命令をフェッチし、第2のプロセッサ
2が第3のバンク7から命令をフェッチし、第3のプロ
セッサ3が第2のバンク6から命令をフェッチする。マ
ルチプロセッサ装置100の動作のうち、第1のプロセ
ッサ1が第1のバンク5から命令をフェッチする動作
は、1サイクル目の動作と同様であるため説明を省略す
る。第2のプロセッサ2及び第3のプロセッサ3の動作
は下記の通りである。
【0040】第2のプロセッサ2は、第2の命令アドレ
ス12をアドレス選択回路8に出力する。アドレス選択
回路8は、第2の命令アドレス12を第3のバンクアド
レス19に出力する。第3のバンク7は、入力された第
3のバンクアドレス19の示す番地の命令を第3の命令
16として第2のプロセッサ2に出力する。これによ
り、第2のプロセッサ2は第3の命令16をフェッチす
る。
【0041】第3のプロセッサ3は、第3の命令アドレ
ス13をアドレス選択回路8に出力する。アドレス選択
回路8は、第3の命令アドレス13を第2のバンクアド
レス18に出力する。第2のバンク6は、入力された第
2のバンクアドレス18の示す番地の命令を第2の命令
15として第3のプロセッサ3に出力する。これによ
り、第3のプロセッサ3は第2の命令15をフェッチす
る。
【0042】<5サイクル目>第1のプロセッサ1が第
2のバンク6から命令をフェッチし、第2のプロセッサ
2が第1のバンク5から命令をフェッチし、第3のプロ
セッサ3が第3のバンク7から命令をフェッチする。マ
ルチプロセッサ装置100の動作のうち、第1のプロセ
ッサ1が第2のバンク6から命令をフェッチする動作
と、第2のプロセッサ2が第1のバンク5から命令をフ
ェッチする動作とは、2サイクル目の動作と同様である
ため説明を省略する。第3のプロセッサ3の動作は下記
の通りである。
【0043】第3のプロセッサ3は、第3の命令アドレ
ス13をアドレス選択回路8に出力する。アドレス選択
回路8は、第3の命令アドレス13を第3のバンクアド
レス19に出力する。第3のバンク7は、入力された第
3のバンクアドレス19の示す番地の命令を第3の命令
16として第3のプロセッサ3に出力する。これによ
り、第3のプロセッサ3は第3の命令16をフェッチす
る。
【0044】以上のように、第1のプロセッサ1は、第
1の命令フェッチステージF(1)を使用し、第2のプ
ロセッサ2は、第2の命令フェッチステージF(2)を
使用し、第3のプロセッサ3は、第3の命令フェッチス
テージF(3)を使用して、命令メモリ4の各バンクか
ら命令をフェッチするように制御される。その結果、各
プロセッサの各バンクへのアクセスは排他的に実行され
る。
【0045】(命令の分岐処理)図4は、本発明の実施
形態1におけるプロセッサの分岐処理時のタイミングチ
ャートである。図4を参照して、命令を分岐処理する場
合についてプロセッサの動作を説明する。なお、(命令
の逐次処理)と同様にN=3とし、第1のプロセッサ1
には、第1の命令フェッチステージF(1)を割り当
て、第2のプロセッサ2には、第2の命令フェッチステ
ージF(2)を割り当て、第3のプロセッサ3には、第
3の命令フェッチステージF(3)を割り当てるものと
する。また、2サイクル目において第1のプロセッサが
分岐命令をフェッチし、7サイクル目において分岐先の
命令フェッチを再開するものとする。
【0046】<1サイクル目>(命令の逐次処理)と同
様に、第1のプロセッサ1が第1のバンク5から命令を
フェッチする。
【0047】<2サイクル目>(命令の逐次処理)と同
様に、第1のプロセッサ1が第2のバンク6から命令を
フェッチし、第2のプロセッサ2が第1のバンク5から
命令をフェッチする。
【0048】<3サイクル目>第1のプロセッサ1は、
命令フェッチを待機する。第2のプロセッサ2は、(命
令の逐次処理)と同様に第2のバンク6から命令をフェ
ッチする。第3のプロセッサ3は、(命令の逐次処理)
と同様に第1のバンク5から命令をフェッチする。
【0049】<4サイクル目>第1のプロセッサ1は、
命令フェッチを待機する。第2のプロセッサ2は、(命
令の逐次処理)と同様に第3のバンク7から命令をフェ
ッチする。第3のプロセッサ3は、(命令の逐次処理)
と同様に第2のバンク6から命令をフェッチする。
【0050】<5サイクル目>第1のプロセッサ1は、
命令フェッチを待機する。第2のプロセッサ2は、(命
令の逐次処理)と同様に第1のバンク5から命令をフェ
ッチする。第3のプロセッサ3は、(命令の逐次処理)
と同様に第3のバンク7から命令をフェッチする。
【0051】<6サイクル目>第1のプロセッサ1は、
命令フェッチを待機する。第2のプロセッサ2は、3サ
イクル目と同様に第2のバンク6から命令をフェッチす
る。第3のプロセッサ3は、3サイクル目と同様に第1
のバンク5から命令をフェッチする。
【0052】<7サイクル目>第1のプロセッサ1は、
分岐先の命令フェッチを再開するが、第3のバンク7へ
のアクセスが第2のプロセッサ2と競合するため、命令
フェッチを待機する。第2のプロセッサ2は、4サイク
ル目と同様に第3のバンク7から命令をフェッチする。
第3のプロセッサ3は、4サイクル目と同様に第2のバ
ンク6から命令をフェッチする。
【0053】<8サイクル目>第1のプロセッサ1は、
第3のバンク7へのアクセスが第3のプロセッサ3と競
合するため、命令フェッチを待機する。第2のプロセッ
サ2は、5サイクル目と同様に第1のバンク5から命令
をフェッチする。第3のプロセッサ3は、5サイクル目
と同様に第3のバンク7から命令をフェッチする。
【0054】<9サイクル目>第1のプロセッサ1は、
(命令の逐次処理)の3サイクル目と同様に第3のバン
ク7から命令をフェッチする。第2のプロセッサ2は、
3サイクル目と同様に第2のバンク6から命令をフェッ
チする。第3のプロセッサ3は、3サイクル目と同様に
第1のバンク5から命令をフェッチする。
【0055】以上のように、第1のプロセッサ1は、使
用する命令フェッチステージを分岐先の命令フェッチ時
に第1の命令フェッチステージF(1)から第3の命令
フェッチステージF(3)に変更するように制御され
る。その結果、各プロセッサの各バンクへのアクセスは
排他的に実行される。
【0056】図5は、実施形態1におけるプロセッサの
命令フェッチステージの変更方法を示す。プロセッサ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)の変更がそれぞれ行われる。
【0057】分岐直前のアドレスをIP[15:0]、
分岐先のアドレスを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を排他的にアクセスするように制御される。ま
た、プロセッサが分岐命令をフェッチした場合に、使用
する命令フェッチステージを分岐先の命令フェッチ時に
変更することにより、各バンクへのアクセスが排他的に
実行されるように制御される。その結果、命令メモリの
共有を図ると共に、メモリのコンフリクトが発生しない
ようにすることができる。
【0058】(実施形態2)次に、本発明の実施形態2
のマルチプロセッサの制御方法およびその装置につい
て、図面を参照しながら説明する。
【0059】図6は、本発明の実施形態2のマルチプロ
セッサ装置100が備える命令メモリ4の構成を示す。
図6において、命令メモリ4は、第1のバンク5と、第
2のバンク6と、アドレス選択回路8とを備える。図6
は、図1においてN=2である場合の命令メモリ4の構
成を示している。
【0060】図7は本発明の実施形態2のマルチプロセ
ッサ装置100が備えるプロセッサ1、2の構成図であ
る。マルチプロセッサ装置100が備えるプロセッサ1
とプロセッサ2とは、同様の構成を有している。図7に
おいて、プロセッサ1、2は、命令レジスタ部101
と、デコーダ部102と、命令ポインタ部103と、制
御部104とを備える。
【0061】命令レジスタ部101には、第1の命令1
4と、第2の命令15と、NOP選択信号114と、フ
ェッチステージ選択信号115と、バンク選択信号11
8とが入力される。命令レジスタ部101は、入力され
た各信号に応じて、命令コード111を出力する。
【0062】デコーダ部102には、命令コード111
が入力される。デコーダ部102は、命令コード111
に応じて、分岐命令信号112と分岐アドレス113と
を出力する。
【0063】命令ポインタ部103には、分岐アドレス
113と、フェッチステージ選択信号115と、アドレ
ス分岐信号116とが入力される。命令ポインタ部10
3は、入力された各信号に応じて、命令ポインタ信号1
17と、バンク選択信号118と、第1のアドレス11
または第2のアドレス12とを出力する。
【0064】図8は、本発明の実施形態2におけるプロ
セッサ1、2が備える命令レジスタ部101の構成を示
す。図8において、命令レジスタ部101は、第1の命
令選択器201と、第1の命令レジスタ202と、第2
の命令選択器203と、第2の命令レジスタ204と、
第3の命令選択器205とを備える。
【0065】第1の命令選択器201には、第1の命令
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を出力する。
【0066】図9は、本発明の実施形態2のプロセッサ
1、2が備える命令ポインタ部103の構成を示す。図
9において、命令ポインタ部103は、第1のアドレス
選択器301と、第1の命令ポインタ302と、加算器
303と、第2の命令ポインタ304と、第2のアドレ
ス選択器305とを備える。
【0067】第1のアドレス選択器301には、分岐ア
ドレス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として出力する。
【0068】図10は、本発明の実施形態2におけるア
ドレス選択回路8の構成を示す。図10において、アド
レス選択回路8は、第1のプロセッサ選択器401と、
第2のプロセッサ選択器402と、フリップフロップ4
03と、インバータ404とを備える。
【0069】第1のプロセッサ選択器401には、第1
のアドレス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を反転させる。
【0070】図11は本発明の実施形態2におけるプロ
セッサ1、2が備える制御部104の構成を示す。図1
1において、制御部104は、フリップフロップ50
1、507、508、510と、排他的論理和ゲート5
02と、論理積ゲート503、504、505、509
と、論理和ゲート506と、インバータ511、512
とを備える。
【0071】フリップフロップ501、507、50
8、510は、それぞれ、D型フリップフロップであ
る。論理積ゲート503、504、505、509は、
それぞれ、複数の入力信号の論理積を出力する。インバ
ータ511、512は、それぞれ、入力信号の位相を反
転して出力する。
【0072】フリップフロップ501は、入力された分
岐命令信号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を反転して出力する。
【0073】以下、図12と図13とを参照して、以上
のように構成されたマルチプロセッサ装置100の動作
を説明する。以下の説明においては、第1のバンク5に
偶数番地の命令が格納され、第2のバンク6に奇数番地
の命令が格納されているものとする。また、以下の説明
においては、便宜上、第1のバンクアドレス17および
第2のバンクアドレス18は、第1のアドレス11また
は第2のアドレス12の最下位ビットを除いたものでは
なく、第1のアドレス11または第2のアドレス12と
同じ数値であるものとする。
【0074】(命令の逐次処理)図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」とする。
【0075】<0サイクル目>0サイクル目に、プロセ
ッサ1、2に入力されるリセット信号521の値は
「1」となるものとする。
【0076】第1のプロセッサ1の制御部104におい
て、数値522は「1」であるから、リセット信号52
1の値が「1」になることにより、論理積ゲート503
の出力値は「1」となる。これにより、論理和ゲート5
06の出力値が「1」となり、フリップフロップ507
の出力するフェッチステージ選択信号115の値も
「1」となる。
【0077】一方、第2のプロセッサ2の制御部104
において、数値522は「0」であるから、リセット信
号521の値が「1」になっても、論理積ゲート503
の出力値は「0」である。そのため、論理和ゲート50
6の出力値が「0」となり、フリップフロップ507の
出力するフェッチステージ選択信号115の値も「0」
となる。
【0078】<1サイクル目>第1のプロセッサ1の命
令ポインタ103において、第1の命令ポインタ302
の値は「0」であり、第2の命令ポインタ304の値は
「不定」である。フェッチステージ選択信号115の値
は「1」であるから、第2のアドレス選択器305は第
1の命令ポインタ302の値を第1のアドレス11とし
て出力する。その結果、第1のアドレス11として値
「0」が出力される。
【0079】第2のプロセッサ2の命令ポインタ103
において、第1の命令ポインタ302の値は「10」で
あり、第2の命令ポインタ304の値は「不定」であ
る。フェッチステージ選択信号115の値は「0」であ
るから、第2のアドレス選択器305は第2の命令ポイ
ンタ304の値を第2のアドレス12として出力する。
その結果、第2のアドレス12として値「不定」が出力
される。
【0080】命令メモリ4のアドレス選択回路8におい
て、プロセッサ選択信号411の値は「0」である。第
1のプロセッサ選択器401は、プロセッサ選択信号4
11の値が「0」であるので、第1のアドレス11を第
1のバンクアドレス17として出力する。その結果、第
1のバンクアドレス17の値は「0」となる。よって、
第1のバンク5は、第1の命令14として「0」番地の
命令を出力する。
【0081】一方、第2のプロセッサ選択器402は、
プロセッサ選択信号411の値が「0」であるので、第
2のアドレス12を第2のバンクアドレス18として出
力する。その結果、第2のバンクアドレス18の値は
「不定」となる。よって、第2のバンク6は、第2の命
令15として「不定」番地の命令を出力する。
【0082】<2サイクル目>第1のプロセッサ1の命
令ポインタ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」番地の命令をフェッチ
する。
【0083】第2のプロセッサ2の命令ポインタ103
において、第1の命令ポインタ302の値は「11」で
あり、第2の命令ポインタ304の値は「10」であ
る。フェッチステージ選択信号115の値は「0」であ
るから、第2のアドレス選択器305は第2の命令ポイ
ンタ304の値を第2のアドレス12として出力する。
その結果、第2のアドレス12として値「10」が出力
される。
【0084】命令メモリ4のアドレス選択回路8におい
て、プロセッサ選択信号411の値は「1」である。第
1のプロセッサ選択器401は、プロセッサ選択信号4
11の値が「1」であるので、第2のアドレス12を第
1のバンクアドレス17として出力する。その結果、第
1のバンクアドレス17の値は「10」となる。よっ
て、第1のバンク5は、第1の命令14として「10」
番地の命令を出力する。
【0085】一方、第2のプロセッサ選択器402は、
プロセッサ選択信号411の値が「1」であるので、第
1のアドレス11を第2のバンクアドレス18として出
力する。その結果、第2のバンクアドレス18の値は
「1」となる。よって、第2のバンク6は、第2の命令
15として「1」番地の命令を出力する。
【0086】<3サイクル目>第1のプロセッサ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」番地の命令とな
る。
【0087】第2のプロセッサ2の命令ポインタ103
において、第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」番地の命令となる。
【0088】命令メモリ4のアドレス選択回路8におい
て、プロセッサ選択信号411の値は「0」である。そ
のため、第1のアドレス11の値「2」が第1のバンク
アドレス17として出力される。また、第2のアドレス
12の値「11」が第2のバンクアドレス18として出
力される。よって、第1のバンク5は、第1の命令14
として「2」番地の命令を出力する。また、第2のバン
ク6は、第2の命令15として「11」番地の命令を出
力する。
【0089】<4サイクル目>第1のプロセッサ1の命
令ポインタ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」番地
の命令となる。
【0090】第2のプロセッサ2の命令ポインタ103
において、第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」番地の命
令となる。
【0091】命令メモリ4のアドレス選択回路8におい
て、プロセッサ選択信号411の値は「1」である。そ
のため、第2のアドレス12の値「12」が第1のバン
クアドレス17として出力される。また、第1のアドレ
ス11の値「3」が第2のバンクアドレス18として出
力される。よって、第1のバンク5は、第1の命令14
として「12」番地の命令を出力する。また、第2のバ
ンク6は、第2の命令15として「3」番地の命令を出
力する。
【0092】<5サイクル目>第1のプロセッサ1の命
令ポインタ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」番地
の命令となる。
【0093】第2のプロセッサ2の命令ポインタ103
において、第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」番地の命
令となる。
【0094】命令メモリ4のアドレス選択回路8におい
て、プロセッサ選択信号411の値は「0」である。そ
のため、第1のアドレス11の値「4」が第1のバンク
アドレス17として出力される。また、第2のアドレス
12の値「13」が第2のバンクアドレス18として出
力される。よって、第1のバンク5は、第1の命令14
として「4」番地の命令を出力する。また、第2のバン
ク6は、第2の命令15として「13」番地の命令を出
力する。
【0095】<6サイクル目以降>マルチプロセッサ装
置100は、1〜5サイクル目と同様に処理を実施す
る。
【0096】以上のように、第1のプロセッサ1は、第
1の命令フェッチステージF(1)を使用し、第2のプ
ロセッサ2は、第2の命令フェッチステージF(2)を
使用し、第1のバンク5と第2のバンク6を排他的にア
クセスするように制御する。
【0097】(命令の分岐処理)図13は、本発明の実
施形態2におけるプロセッサの分岐処理時のタイミング
チャートである。図13を参照して、プロセッサが命令
を分岐処理する場合の動作を説明する。なお、パイプラ
インは(命令の逐次処理)と同様の4段パイプラインで
ある。また、第1のプロセッサ1の場合は数値522を
「1」とし、第2のプロセッサ2の場合は数値522を
「0」とする。さらに、「1」番地の命令を「8」番地
への分岐を指示する分岐命令とし、実行ステージEXで
分岐処理するものとする。
【0098】<0〜4サイクル目>マルチプロセッサ装
置100は、(命令の逐次処理)の場合と同様に動作す
る。
【0099】<5サイクル目>第2のプロセッサ2およ
び命令メモリ4のアドレス選択回路8は、(命令の逐次
処理)の場合と同様に動作する。
【0100】第1のプロセッサ1において、「1」番地
の分岐命令が実行されることにより、分岐命令信号11
2の値は「1」となる。これにより、NOP選択信号1
14の値が「1」となり、アドレス分岐信号116の値
も「1」となる。
【0101】第1のプロセッサ1の命令ポインタ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の値は
「1」であるから、命令コード111の内容は、NOP
コード211(NOP命令)となる。
【0102】<6サイクル目>第1のプロセッサ1にお
いて、「1」番地の分岐命令が実行されることにより、
分岐アドレス113の値は「8」となっている。分岐ア
ドレス113の最下位ビットが「0」であり、命令ポイ
ンタ信号117の値が「0」であり、アドレス分岐信号
116の値が「1」であることにより、フェッチステー
ジ選択信号115の値は「0」となる。一方、NOP選
択信号114の値は「1」となり、アドレス分岐信号1
16の値は「0」となる。
【0103】第1のプロセッサ1の命令ポインタ103
において、アドレス分岐信号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命令)となる。
【0104】第2のプロセッサ2の命令ポインタ103
において、第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」番地の命
令となる。
【0105】命令メモリ4のアドレス選択回路8におい
て、プロセッサ選択信号411の値は「1」である。そ
のため、第2のアドレス12の値「14」が第1のバン
クアドレス17として出力される。また、第1のアドレ
ス11の値「4」が第2のバンクアドレス18として出
力される。よって、第1のバンク5は、第1の命令14
として「14」番地の命令を出力する。また、第2のバ
ンク6は、第2の命令15として「4」番地の命令を出
力する。
【0106】<7サイクル目>第1のプロセッサ1の命
令ポインタ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命令)となる。
【0107】第2のプロセッサ2の命令ポインタ103
において、第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」番地の命
令となる。
【0108】命令メモリ4のアドレス選択回路8におい
て、プロセッサ選択信号411の値は「0」である。そ
のため、第1のアドレス11の値「8」が第1のバンク
アドレス17として出力される。また、第2のアドレス
12の値「15」が第2のバンクアドレス18として出
力される。よって、第1のバンク5は、第1の命令14
として「8」番地の命令を出力する。また、第2のバン
ク6は、第2の命令15として「15」番地の命令を出
力する。
【0109】<8サイクル目>第1のプロセッサ1の命
令ポインタ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」番
地の命令となる。
【0110】第2のプロセッサ2の命令ポインタ103
において、第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」番地の命
令となる。
【0111】命令メモリ4のアドレス選択回路8におい
て、プロセッサ選択信号411の値は「1」である。そ
のため、第2のアドレス12の値「16」が第1のバン
クアドレス17として出力される。また、第1のアドレ
ス11の値「9」が第2のバンクアドレス18として出
力される。よって、第1のバンク5は、第1の命令14
として「16」番地の命令を出力する。また、第2のバ
ンク6は、第2の命令15として「9」番地の命令を出
力する。
【0112】<9サイクル目以降>マルチプロセッサ装
置100は、1〜8サイクル目と同様に処理を実施す
る。
【0113】以上のように、マルチプロセッサ装置10
0は、分岐先の命令フェッチ時に、第1のプロセッサ1
の命令フェッチステージを第1の命令フェッチステージ
F(1)から第2の命令フェッチステージF(2)に変
更するように制御する。
【0114】図14は、実施形態2におけるプロセッサ
の命令フェッチステージの変更方法を示す。プロセッサ
1、2内のバンク選択信号118をBANKSとする
と、フェッチステージF(1)、F(2)の切り替えは
図14に示されるように行われる。すなわち、BANK
S=0のとき、フェッチステージの変更は行われない。
BANKS=1のとき、F(1)→F(2)又はF
(2)→F(1)のフェッチステージの変更が行われ
る。
【0115】分岐直前のアドレスをIP[15:0]、
分岐先のアドレスを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)に変更するよ
うに制御する事で、命令メモリの共有を図ると共に、メ
モリのコンフリクトが発生しないようにする事ができ
る。
【0116】なお、実施形態1および実施形態2におい
て、命令フェッチステージ以外をデコードステージと実
行ステージとして説明したが、命令フェッチステージ以
外は任意の構造でもよいことは明らかである。また、分
岐処理のステージを実行ステージとして説明したが、任
意のステージにしてもよいことは明らかである。また、
第1のプロセッサ1が分岐処理するものとして説明した
が、その他のプロセッサが分岐処理する場合にも同様に
制御ができる事は明らかである。
【0117】
【発明の効果】本発明によれば、メモリ共有型マルチプ
ロセッサにおいて、コンフリクト発生時のメモリアクセ
スの調停が不要となる。これにより、メモリアクセスの
調停のための回路が不要となり、メモリアクセスの調停
による待ち時間が発生しなくなる。
【0118】本発明のマルチプロセッサ装置において
は、メモリアクセスの調停のための待ち時間が発生しな
いため、アプリケーションの実行時間の予測が可能であ
る。そのため、マルチプロセッサであることを意識せず
に、シングルプロセッサと同様にアプリケーションシス
テムの開発をすることができる。本発明のマルチプロセ
ッサ装置はアプリケーションの実行時間の予測が可能で
あるため、リアルタイム処理が要求される通信用DSP
等に適用することが容易である。
【0119】また、本発明によれば、プロセッサが分岐
命令を処理する場合に、プロセッサが命令をフェッチす
る命令フェッチステージを変更することにより、分岐命
令の処理後もメモリアクセスのコンフリクトが発生しな
いようにすることが可能である。
【図面の簡単な説明】
【図1】本発明のマルチプロセッサ装置の構成を示す図
である。
【図2】本発明のマルチプロセッサ装置が備えるプロセ
ッサのパイプライン構造を示す図である。
【図3】本発明の実施形態1におけるプロセッサの逐次
処理時のタイミングチャートである。
【図4】本発明の実施形態1におけるプロセッサの分岐
処理時のタイミングチャートである。
【図5】本発明の実施形態1におけるプロセッサの命令
フェッチステージの変更方法を示す図である。
【図6】本発明の実施形態2における命令メモリの構成
を示す図である。
【図7】本発明の実施形態2におけるプロセッサの構成
を示す図である。
【図8】本発明の実施形態2におけるプロセッサが備え
る命令レジスタ部の構成を示す図である。
【図9】本発明の実施形態2におけるプロセッサが備え
る命令ポインタ部の構成を示す図である。
【図10】本発明の実施形態2におけるアドレス選択回
路の構成を示す図である。
【図11】本発明の実施形態2におけるプロセッサが備
える制御部の構成を示す図である。
【図12】本発明の実施形態2におけるプロセッサの逐
次処理時のタイミングチャートである。
【図13】本発明の実施形態2におけるプロセッサの分
岐処理時のタイミングチャートである。
【図14】本発明の実施形態2におけるプロセッサの命
令フェッチステージの変更方法を示す図である。
【符号の説明】
1 第1のプロセッサ 2 第2のプロセッサ 3 第Nのプロセッサ 4 命令メモリ 5 第1のバンク 6 第2のバンク 7 第Mのバンク 8 アドレス選択回路 11 第1のアドレス 12 第2のアドレス 13 第Nのアドレス 14 第1の命令 15 第2の命令 16 第Nの命令 17 第1のバンクアドレス 18 第2のバンクアドレス 19 第Mのバンクアドレス 101 命令レジスタ部 102 デコーダ部 103 命令ポインタ部 104 制御部 111 命令コード 112 分岐命令信号 113 分岐アドレス 114 NOP選択信号 115 フェッチステージ選択信号 116 アドレス分岐信号 117 命令ポインタ信号 118 バンク選択信号 201 第1の命令選択器 202 第1の命令レジスタ 203 第2の命令選択器 204 第2の命令レジスタ 205 第3の命令選択器 211 NOPコード 301 第1のアドレス選択器 302 第1の命令ポインタ 303 加算器 304 第2の命令ポインタ 305 第2のアドレス選択器 401 第1のプロセッサ選択器 402 第2のプロセッサ選択器 403、501、507、508、510 フリップフ
ロップ 404、511、512 インバータ 411 プロセッサ選択信号 502 排他的論理和ゲート 503、504、505、509 論理積ゲート 506 論理和ゲート 521 リセット信号 522 数値「1」または「2」

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 それぞれN個の命令フェッチステージを
    有し(Nは2以上の整数)、前記N個の命令フェッチス
    テージのうちの1つにおいて命令をフェッチし、前記命
    令をパイプライン処理してアドレスを出力するN個のプ
    ロセッサと、 前記N個のプロセッサが出力した前記アドレスに応じ
    て、バンクアドレスを出力するアドレス選択部と、 それぞれ複数の命令を格納し、前記アドレス選択部が出
    力した前記バンクアドレスに対応する、前記複数の命令
    のうちの1つを出力するM個のバンクと(MはN以上の
    整数)を備えたマルチプロセッサ装置であって、 前記N個のプロセッサは、互いに異なる前記命令フェッ
    チステージにおいて前記命令をフェッチする、 マルチプロセッサ装置。
  2. 【請求項2】 前記N個のプロセッサが分岐命令を処理
    する場合に、前記命令をフェッチする前記命令フェッチ
    ステージを変更する、請求項1に記載のマルチプロセッ
    サ装置。
  3. 【請求項3】 前記N個のプロセッサは、 前記命令と、バンク選択信号と、フェッチステージ選択
    信号と、NOP選択信号とが入力され、命令コードを出
    力する命令レジスタ部と、 前記命令コードが入力され、分岐命令信号と、分岐アド
    レスとを出力するデコーダ部と、 前記分岐命令信号と、前記分岐アドレスと、命令ポイン
    タ信号とが入力され、前記フェッチステージ選択信号
    と、前記NOP選択信号と、アドレス分岐信号とを出力
    する制御部と、 前記フェッチステージ選択信号と、前記アドレス分岐信
    号と、前記分岐アドレスとが入力され、前記バンク選択
    信号と、前記命令ポインタ信号と、前記アドレスとを出
    力する命令ポインタ部と、 をそれぞれ備えている、請求項2に記載のマルチプロセ
    ッサ装置。
  4. 【請求項4】 それぞれN個の命令フェッチステージ
    (Nは2以上の整数)を有し、命令をパイプライン処理
    するN個のプロセッサと、それぞれ複数の命令を格納し
    たM個のバンク(MはN以上の整数)とを備えたマルチ
    プロセッサ装置において、 前記N個のプロセッサが、それぞれ前記N個の命令フェ
    ッチステージのうちの1つにおいて命令をフェッチする
    ステップと、 前記N個のプロセッサが、それぞれフェッチした前記命
    令を処理してアドレスを出力するステップと、 前記N個のプロセッサが出力した前記アドレスに応じ
    て、バンクアドレスをM個のバンクのうちの1つに出力
    するステップと、 前記M個のバンクが、それぞれ前記バンクアドレスに対
    応する前記複数の命令のうちの1つを出力するステップ
    とを包含し、 前記N個のプロセッサは、互いに異なる前記命令フェッ
    チステージにおいて前記命令をフェッチする、 マルチプロセッサ装置の制御方法。
  5. 【請求項5】 前記N個のプロセッサのうちの1つが分
    岐命令を処理する場合に、前記命令をフェッチする前記
    命令フェッチステージを変更する、請求項4に記載の制
    御方法。
JP05201699A 1999-02-26 1999-02-26 マルチプロセッサ装置およびその制御方法 Expired - Fee Related JP3526773B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 松下電器産業株式会社 プロセッサ

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