JP3182591B2 - マイクロプロセッサ - Google Patents

マイクロプロセッサ

Info

Publication number
JP3182591B2
JP3182591B2 JP00779593A JP779593A JP3182591B2 JP 3182591 B2 JP3182591 B2 JP 3182591B2 JP 00779593 A JP00779593 A JP 00779593A JP 779593 A JP779593 A JP 779593A JP 3182591 B2 JP3182591 B2 JP 3182591B2
Authority
JP
Japan
Prior art keywords
instruction
instructions
parallel
executed
read
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
Application number
JP00779593A
Other languages
English (en)
Other versions
JPH06214785A (ja
Inventor
成弥 田中
多加志 堀田
昌司 吉田
健治 神
拡二 斉藤
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP00779593A priority Critical patent/JP3182591B2/ja
Priority to GB9401050A priority patent/GB2274527B/en
Publication of JPH06214785A publication Critical patent/JPH06214785A/ja
Priority to US08/717,143 priority patent/US5713012A/en
Application granted granted Critical
Publication of JP3182591B2 publication Critical patent/JP3182591B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、マイクロプロセッサに
係り、特に、複数命令を並列処理する時に所定命令を所
定演算器に割り当て、複数命令を全体として高速処理す
る手段を備えたマイクロプロセッサに関する。
【0002】
【従来の技術】最近、複数命令を並列に読み出しそれら
の命令を並列に解読して実行するいわゆるスーパースカ
ラ型マイクロプロセッサが注目されている。スーパース
カラ型マイクロプロセッサの代表的な例としては、2命
令並列処理装置がある。2命令並列処理装置では、各マ
シンサイクルごとに2命令ずつ処理されるので、CPI
(cycle per instruction)は 0.5となる。これに対
し、スーパースカラ型でない従来のマイクロプロセッサ
では、最大1サイクルに1命令ずつ処理されるために、
CPIは1となる。すなわち、2命令並列処理のスーパ
ースカラ型マイクロプロセッサにおいては、従来のプロ
セッサに比べ、最大2倍の性能が期待されている。
【0003】しかし、実際のプログラムには、スーパー
スカラ型マイクロプロセッサを用いても、並列に実行で
きない場合が存在する。n番目の命令とn+1番目の命
令を並列処理できない場合について、より具体的に説明
する。n番目の命令のターゲットレジスタとn+1番目
の命令のソースレジスタとが、同一のレジスタである場
合は、n番目の命令を実行した後に、n+1番目の命令
を実行しなければならない。なぜなら、n+1番目の命
令が取り込むデータは、n番目の命令の実行結果でなけ
ればならないからである。さらに、n番目の命令が生成
したキャリー情報をn+1番目の命令で使う場合も同様
である。すなわち、並列処理しようとする最初の命令の
結果を並列処理しようとする後続の命令が使用する場合
は、並列処理を実行できない。
【0004】このように命令を並列実行できないこと
を、命令間の競合と呼ぶ。競合が生じた場合、ハードウ
エアは、これらの競合命令を逐次処理するように制御す
る。
【0005】具体的な例としては、ISSCC '91においてN
ational Semiconductor社が発表したスーパースカラ型
のマイクロプロセッサがある( Ran talmudi et al.“A
100MIPS,64b Superscalar Microprocessor with DSP E
nhancements”,in ISSCCDig. Tech. Papers, pp100-101
(Feb.1991))。
【0006】また、特公平02-130634号公報は、1命令
を1マシンサイクルで実行できる命令セットを対象に処
理能力を向上させる目的で、複数の演算器を並列に動作
させる例を示している。
【0007】一般に、ハードウエアの物量と命令の並列
処理とは、トレードオフの関係にある。ハードウエア,
特に現在主流のマイクロプロセッサは、ワンチップで構
成されている。理想的には、2つの命令がそれぞれ実行
できるハードウエアをすべて盛り込むことができればよ
い。しかし、ハードウエアの複雑さが増すと、チップサ
イズが大きくなり、それに伴って消費電力が増加し、コ
ストがアップする。
【0008】そこで、前記特公平02-130634号公報は、
演算命令とハードウエアのトレードオフとの関係につい
て配慮し、シフト命令に関するハードウエアを一部省略
するなどの対策を示している。
【0009】
【発明が解決しようとする課題】マイクロプロセッサで
用いられる命令セットのうち、上述の競合を生じる命令
としては、分岐に関する命令がある。この命令は、プロ
グラムの中で必ず用いられる命令であり、一般のプログ
ラムにおいて、その出現頻度は、約20〜25%程度と
高い。そこで、並列処理をより効率良く実行するには、
ハードウエア,特に演算器の制限を考慮して、分岐に関
する命令の処理を実行することが要求される。
【0010】しかし、上記従来技術では、分岐命令と他
の命令との順序,および,各演算器の内部構成と並列に
命令を実行する演算器の位置とについての配慮が足りな
いという問題があった。
【0011】また、分岐ではない命令についても、1サ
イクルで実行される命令と複数サイクルで実行される命
令とを合わせ持つ命令セットにおいて、1サイクルで実
行される命令と複数サイクルで実行される命令との順
序,および,演算器の内部構成と並列に命令を実行する
演算器の位置とについての配慮がほとんど無いという欠
点があった。
【0012】本発明の目的は、分岐命令と他の命令との
並列処理または1サイクルで実行される命令と複数サイ
クルで実行される命令との並列処理を少ないハードウエ
アで効率的に実行する機能を備えたマイクロプロセッサ
を提供することである。
【0013】
【課題を解決するための手段】本発明は、上記目的を達
成するために、連続するN個の命令を読み出す命令読み
出し手段と、読み出されたN個の命令を並列処理可能か
否かを検出する並列処理検出手段と、読み出されたN個
の命令を並列に実行するN個の演算器とを含むマイクロ
プロセッサにおいて、命令の順番に対応してN番目の演
算器のみが分岐命令および後続命令とは並列処理できな
い命令を実行する機能論理を持ち、読み出されたN個の
命令順序中の最初の分岐命令または最初の後続命令とは
並列処理できない命令(k番目)を並列処理可否の検出と
並行して検出する命令検出手段と、読み出されたN個の
命令が並列処理可能な場合、N個の命令を1からN番目
までの演算器で並列に実行するように実行順序を制御
し、読み出されたN個の命令のk番目に分岐命令または
後続命令とは並列処理できない命令を含む場合、1から
kまでの命令を(N−k+1)からN番目までの演算器で
並列に実行するように実行順序を変更する機能論理手段
とを備えたマイクロプロセッサを提案する。
【0014】読み出された前記N個の命令に分岐命令が
含まれる場合、前記N番目の演算器の演算結果を次に読
み出すべき命令のアドレスとして切換える手段を設け
る。
【0015】本発明は、より具体的には、連続する2個
の命令を読み出す命令読み出し手段と、読み出された2
個の命令を並列処理可能か否かを検出する並列処理検出
手段と、読み出された2個の命令を並列に実行する2個
の演算器とを含むマイクロプロセッサにおいて、2番目
の演算器のみが分岐命令および後続命令とは並列処理で
きない命令を実行する機能論理を持ち、読み出された2
個の命令順序中の第1命令が分岐命令または後続命令と
は並列処理できない命令か否かを並列処理可否の検出と
並行して検出する命令検出手段と、読み出された2個の
命令が並列処理可能な場合、2個の命令を1,2番目の
演算器で並列に実行するように実行順序を制御し、読み
出された2個の命令のk(k=1,2)番目に分岐命令ま
たは後続命令とは並列処理できない命令を含む場合、当
該分岐命令または後続命令とは並列処理できない命令
2番目の演算器で実行するように実行順序を変更する機
能論理手段とを備えたマイクロプロセッサを提案する。
【0016】読み出された前記2個の命令に分岐命令が
含まれる場合、2番目の演算器の演算結果を次に読み出
すべき命令のアドレスとして切換える手段を設ける。
【0017】本発明は、また、上記目的を達成するため
に、連続するN個の命令を読み出す命令読み出し手段
と、読み出されたN個の命令を並列処理可能か否かを検
出する並列処理検出手段と、読み出されたN個の命令を
並列に実行するN個の演算器とを含むマイクロプロセッ
サにおいて、命令の順番に対応してN番目の演算器のみ
が複数サイクルで実行される命令を実行する機能論理を
持ち、読み出されたN個の命令順序中の最初の複数サイ
クルで実行される命令(p番目)を並列処理可否の検出と
並行して検出する複数サイクル実行命令検出手段と、読
み出されたN個の命令が並列処理可能な場合、N個の命
令を1からN番目までの演算器で並列に実行するように
実行順序を制御し、読み出されたN個の命令のp番目に
複数サイクルで実行される命令を含む場合、1からpま
での命令を(N−p+1)からN番目までの演算器で並列
に実行するように実行順序を変更する機能論理手段とを
備えたマイクロプロセッサを提案する。
【0018】本発明は、より具体的には、連続する2個
の命令を読み出す命令読み出し手段と、読み出された2
個の命令を並列処理可能か否かを検出する並列処理検出
手段と、読み出された2個の命令を並列に実行する2個
の演算器とを含むマイクロプロセッサにおいて、2番目
の演算器のみが複数サイクルで実行される命令を実行す
る機能論理を持ち、読み出された1個の命令順序中の第
1の命令が最初の複数サイクルで実行される命令か否か
を並列処理可否の検出と並行して検出する複数サイクル
実行命令検出手段と、読み出された2個の命令が並列処
理可能な場合、2個の命令を1,2番目の演算器で並列
に実行するように実行順序を制御し、読み出された2個
の命令のp(p=1,2)番目に複数サイクルで実行され
る命令を含む場合、当該命令を2番目の演算器で実行す
るように実行順序を変更する機能論理手段とを備えたマ
イクロプロセッサを提案する。
【0019】本発明は、さらに、上記目的を達成するた
めに、連続するN個の命令を読み出す命令読み出し手段
と、読み出されたN個の命令を並列処理可能か否かを検
出する並列処理検出手段と、読み出されたN個の命令を
並列に実行するN個の演算器とを含むマイクロプロセッ
サにおいて、命令の順番に対応してN番目の演算器のみ
が分岐命令および後続命令とは並列処理できない命令お
よび複数サイクルで実行される命令を実行する機能論理
を持ち、読み出されたN個の命令順序中の最初の分岐命
令(k番目)または最初の後続命令とは並列処理できない
命令(k番目)または最初の複数サイクルで実行される命
令(p番目)を並列処理可否の検出と並行して検出する命
令検出手段と、読み出されたN個の命令が並列処理可能
な場合、N個の命令を1からN番目までの演算器で並列
に実行するように実行順序を制御し、読み出されたN個
の命令のk番目に分岐命令または後続命令とは並列処理
できない命令を含み、かつ、読み出されたN個の命令の
p番目に複数サイクルで実行される命令をも含む時はk
<pの場合、1からkまでの命令を(N−k+1)からN
番目までの演算器で並列に実行するように実行順序を制
御し、読み出されたN個の命令のp番目に複数サイクル
で実行される命令を含み、かつ、読み出されたN個の命
令のk番目に分岐命令または後続命令とは並列処理でき
ない命令をも含む時はp<kの場合、1からpまでの命
令を(N−p+1)からN番目までの演算器で並列に実行
するように実行順序を変更する機能論理手段とを備えた
マイクロプロセッサを提案する。
【0020】本発明は、より具体的には、連続する2個
の命令を読み出す命令読み出し手段と、読み出された2
個の命令を並列処理可能か否かを検出する並列処理検出
手段と、読み出された2個の命令を並列に実行する2個
の演算器とを含むマイクロプロセッサにおいて、2番目
の演算器のみが分岐命令および後続命令とは並列処理で
きない命令および複数サイクルで実行される命令を実行
する機能論理を持ち、読み出された2個の命令順序中の
第1命令が分岐命令または後続命令とは並列処理できな
い命令か否かまたは最初の複数サイクルで実行される命
令か否かを並列処理可否の検出と並行して検出する命令
検出手段と、読み出された2個の命令が並列処理可能な
場合、2個の命令を1,2番目の演算器で並列に実行す
るように実行順序を制御し、読み出された2個の命令の
k(k=1,2)番目に分岐命令または後続命令とは並列
処理できない命令を含み、かつ、読み出されたN個の命
令のp番目に複数サイクルで実行される命令をも含む時
はk<pの場合、当該分岐命令を2番目の演算器で実行
するように実行順序を制御し、読み出された2個の命令
のp(p=1,2)番目に複数サイクルで実行される命令
含み、かつ、読み出されたN個の命令のk番目に分岐
命令または後続命令とは並列処理できない命令をも含む
時はp<kの場合、当該命令を2番目の演算器で実行す
るように実行順序を変更する機能論理手段とを備えたマ
イクロプロセッサを提案する。
【0021】後続命令とは並列処理できない命令等を処
理する機能論理は、最後の演算器のほかに、それよりも
前の演算器が備えてもよい。
【0022】したがって、本発明は、上記目的を達成す
るために、連続するN個の命令を読み出す命令読み出し
手段と、読み出されたN個の命令を並列処理可能か否か
を検出する並列処理検出手段と、読み出されたN個の命
令を並列に実行するN個の演算器とを含むマイクロプロ
セッサにおいて、命令の順番に対応してn(n≠1)番目
からN番目までの演算器が分岐命令および後続命令とは
並列処理できない命令を実行する機能論理を持ち、読み
出されたN個の命令順序中の最初の分岐命令(k番目)ま
たは最初の後続命令とは並列処理できない命令(k番目)
を並列処理可否の検出と並行して検出する命令検出手段
と、読み出されたN個の命令が並列処理可能な場合、N
個の命令を1からN番目までの演算器で並列に実行する
ように実行順序を制御し、読み出されたN個の命令のk
番目に分岐命令または後続命令とは並列処理できない命
令を含む場合、1からk−1番目の命令は順序通りの演
算器で実行しk番目の命令をn番目以降の演算器で並列
に実行するように実行順序を変更する機能論理手段とを
備えたマイクロプロセッサを提案する。
【0023】本発明は、さらに、上記目的を達成するた
めに、連続するN個の命令を読み出す命令読み出し手段
と、読み出されたN個の命令を並列処理可能か否かを検
出する並列処理検出手段と、読み出されたN個の命令を
並列に実行するN個の演算器とを含むマイクロプロセッ
サにおいて、命令の順番に対応してn(n≠1)番目から
N番目までの演算器が複数サイクルで実行される命令を
実行する機能論理を持ち、読み出されたN個の命令順序
中の最初の複数サイクルで実行される命令(p番目)を並
列処理可否の検出と並行して検出する複数サイクル実行
命令検出手段と、読み出されたN個の命令が並列処理可
能な場合、N個の命令を1からN番目までの演算器で並
列に実行するように実行順序を制御し、読み出されたN
個の命令のp番目に複数サイクルで実行される命令を含
む場合、1からp−1番目の命令は順序通りの演算器で
実行しp番目の命令をn番目以降の演算器で並列に実行
するように実行順序を変更する機能論理手段とを備えた
マイクロプロセッサを提案する。
【0024】本発明は、上記目的を達成するために、連
続するN個の命令を読み出す命令読み出し手段と、読み
出されたN個の命令を並列処理可能か否かを検出する並
列処理検出手段と、読み出されたN個の命令を並列に実
行するN個の演算器とを含むマイクロプロセッサにおい
て、命令の順番に対応してn(n≠1)番目からN番目ま
での演算器が分岐命令および後続命令とは並列処理でき
ない命令および複数サイクルで実行される命令を実行す
る機能論理を持ち、読み出されたN個の命令順序中の最
初の分岐命令(k番目)または最初の後続命令とは並列処
理できない命令(k番目)または最初の複数サイクルで実
行される命令(p番目)を並列処理可否の検出と並行して
検出する命令検出手段と、読み出されたN個の命令が並
列処理可能な場合、N個の命令を1からN番目までの演
算器で並列に実行するように実行順序を制御し、読み出
されたN個の命令のk番目に分岐命令または後続命令と
は並列処理できない命令を含み、かつ、読み出されたN
個の命令のp番目に複数サイクルで実行される命令をも
含む時はk<pの場合、1からk−1番目の命令は順序
通りの演算器で実行しk番目の命令をn番目以降の演算
器で並列に実行するように実行順序を変更し、読み出さ
れたN個の命令のp番目に複数サイクルで実行される命
令を含み、かつ、読み出されたN個の命令のk番目に分
岐命令または後続命令とは並列処理できない命令をも含
む時はp<kの場合、1からp−1番目の命令は順序通
りの演算器で実行しp番目の命令をn番目以降の演算器
で並列に実行するように実行順序を変更する機能論理手
段とを備えたマイクロプロセッサを提案する。
【0025】
【作用】本発明においては、並列処理検出手段により並
列処理が可能と判断した場合、1からNまでの命令実行
順序に従い、それぞれ対応する第1から第Nまでの演算
器で実行するように機能論理手段を制御する。並列処理
検出手段が同時に読み出されたN個の命令順序の中で最
初の分岐命令(k番目)を検出すると、1からkまでの命
令を(N−k+1)からNまでの演算器で並列に実行する
ように機能論理手段を制御する。
【0026】この場合、第N番目の演算器のみにk番目
の分岐命令を実行する機能論理手段を備え、その演算結
果を新たな命令アドレスとして切換えできるように接続
する切換え手段を持たせると、ハ−ドウエアをほとんど
増加させないで、分岐命令を含む1からkまでの命令を
効率良く並列処理できる。
【0027】また、並列処理検出手段が同時に読み出さ
れたN個の命令順序中の最初の複数サイクルで実行され
る命令(p番目)を検出すると、1からpまでの命令を
(N−p+1)からNまでの演算器で並列に実行するよう
に機能論理手段を制御する。この場合も、第N番目の演
算器のみに複数サイクルで実行される命令を実行する機
能論理手段を持たせると、ハ−ドウエアをほとんど増加
させないで、複数サイクルで実行される命令を含む1か
らpまでの命令を効率良く並列処理できる。
【実施例】次に、図1〜図39を参照して、本発明によ
る複数命令並列処理機構を有するマイクロプロセッサの
実施例を説明する。
【0028】図1は、2命令を並列処理する本発明によ
るスーパースカラ型マイクロプロセッサの全体構成およ
び外部装置との接続関係を示すブロック図である。スー
パースカラ型マイクロプロセッサ100は、命令フェッ
チユニット101と、プログラムカウンタ制御ユニット
102と、EP(element processor)1制御ユニット1
03と、ステータス制御ユニット104と、EP2制御
ユニット105と、パイプライン制御ユニット106
と、フローティング加算制御ユニット107と、フロー
ティング乗算制御ユニット108と、オペランドフェッ
チユニット109と、整数演算データ処理ユニット11
6と、フローティングデータ処理ユニット117とから
なる。
【0029】さらに、整数演算データ処理ユニット11
6は、EP1演算器110と、整数レジスタユニット1
11と、EP2演算器112とからなり、フローティン
グデータ処理ユニット117は、フローティングレジス
タユニット113と、フローティング加算器114と、
フローティング乗算器115とからなる。
【0030】各ブロックを結ぶ主要なバスは、命令アド
レスバスBCA150と、並列に処理される2命令のう
ち第1命令を各制御ユニットに送るEP1オペコードバ
ス151と、並列に処理される2命令のうちの第2命令
を各制御ユニットに送るEP2オペコードバス152
と、オペランドフェッチアドレスバスBDA169と、
オペランドデータを各データ処理ユニットに送るバスB
MW170と、オペランドフェッチユニット109と外
部とをインタフェースするバス171と、命令フェッチ
ユニット101と外部とをインタフェースするバス17
1とからなる。
【0031】プロセッサ100は、バス194を介し
て、2次キャッシュメモり190,主メモリ191,デ
ィスク192,各種I/O193等に接続されている。
【0032】図2は、本実施例のスーパースカラ型マイ
クロプロセッサで実行される命令セットの一例を示す図
表である。この命令セットは、すべて固定長32ビット
の命令長を持ち、4バイトバウンダリに配置されてい
る。この命令セットは、大きく分類すると、LOAD系
命令と、STORE系命令と、整数演算系命令と、分岐
系命令と、システム制御系命令と、FADD(floating
add)系命令と、FMUL(floating multiply)系命令
と、積和系命令とに分けられる。LOAD系命令,ST
ORE系命令,分岐系命令を除く命令は、すべてレジス
タ間命令である。なお、この命令セットは、実施例の説
明のためにのみ例示されており、本発明は、この命令セ
ットには限定されない。
【0033】図3は、図1のスーパースカラ型マイクロ
プロセッサの単体命令の動作を示す図表である。図3の
場合、スーパースカラ型マイクロプロセッサ100のフ
ローティング演算を除くすべての命令は、6段のパイプ
ラインで構成する。本明細書においては、図3に示して
あるように、各ステージをIF(instruction fetch),
D(decode),E(execute),T(test),N(null),W(wr
ite)と呼ぶ。
【0034】再び図1に戻り、本実施例の最も基本的な
整数演算命令の実行について説明する。
【0035】IFステージにおいて、命令フェッチユニ
ット101は、プログラムカウンタ制御ユニット102
により指定されたアドレスの2つの命令を読み出す。プ
ログラムカウンタ制御ユニット102は、PC+2→P
Cのように、毎サイクル2カウントずつカウントをイン
クリメントし、アドレスを命令アドレスバス150に出
力する。命令フェッチユニット101は、命令アドレス
バス150のアドレスから偶数命令とそれに続く奇数命
令とを読み出し、偶数命令を第1命令レジスタに格納
し、奇数命令を第2命令レジスタに格納する。なお、各
レジスタの詳細については、後ほど、図10を参照して
説明する。
【0036】分岐時には、プログラムカウンタ制御ユニ
ット102は、分岐アドレスを計算し、命令アドレスバ
ス150に出力する。命令フェッチユニット101は、
分岐先アドレスが偶数アドレスでも奇数アドレスでも、
命令アドレスバス150の下位1ビットを無視して、8
バイトバウンダリの2つの命令を読み出す。
【0037】Dステージにおいて、IFステージで読み
出された2つの命令のうち第1命令は、EP1オペラン
ドバス151を通して、EP1制御ユニット103に転
送され、第2命令は、EP2オペランドバス152を通
して、EP2制御ユニット105に転送される。EP1
制御ユニット103は、EP1オペランドバス151に
出力された第1命令を解読し、信号線160を通して、
整数レジスタユニット111に必要なレジスタの読み出
し指示を送る。この指示に従って、必要なレジスタの内
容が、EP1演算器110に送られる。この動作と並行
して、EP2制御ユニットは、EP2オペランドバス1
52に出力された第2命令を解読し、信号線161を通
して、整数レジスタユニット111に必要なレジスタの
読み出し指示を送る。この指示に従って、必要なレジス
タの内容は、EP2演算器112に送られる。これらの
動作は、同一サイクルで同時にそれぞれ独立になされ
る。
【0038】Eステージにおいて、EP1演算器110
は、EP1制御ユニットに読み出されたデータを用いて
演算を実行する。この動作と並行して、EP2演算器1
12は、EP2制御ユニットに読み出されたデータを用
いて演算を実行する。
【0039】T,Nステージにおいては、LOADの命
令とSTORE系の命令とが有効であるが、整数系演算
命令は無効である。したがって、整数系演算命令は、何
もせず、パイプライン動作だけを実行する。すなわち、
整数系演算命令は、すべて次のWステージで書き込みで
き、例外処理の制御を簡単化できる。
【0040】最後に、Wステージにおいて、EP1制御
ユニット103は、第1命令により指示された書き込み
レジスタに、EP1演算器110の結果を書くように指
示する。この指示に従って、レジスタユニット111
は、EP1演算器110の演算結果をレジスタに書く。
この動作と並行して、EP2制御ユニット111は、第
2命令により指示された書き込みレジスタに、EP2演
算器105の結果を書くように指示する。この指示に従
って、レジスタユニット112は、EP2演算器112
の演算結果をレジスタに書く。
【0041】図4は、整数演算データ処理ユニット11
6の構成の一例を示すブロック図である。Dステージに
おいて、信号線160に送られて来る第1命令制御信号
に応じて、EP1命令レジスタの中に指定されたソース
レジスタのデータを、バスB1,X1を通して、EP1
演算ユニット内のALU1に送る。EP1演算ユニット
内のALU1は、Eステージにおいて、そのデータを演
算する。演算結果は、T,Nステージにおいて、パイプ
ラインタイミング調整のテンポラリラッチT11,T2
1,N11,N21を通して、送り出され、Wステージ
において、レジスタユニット111に書き込まれる。
【0042】同様に、整数レジスタユニット111は、
Dステージにおいて、信号線161に送られて来る第2
命令制御信号に応じて、EP2命令レジスタの中に指定
されたソースレジスタのデータを、バスB2,X2を通
して、EP2演算ユニット内のALU2に送る。EP2
演算ユニット内のALU2は、Eステージにおいて、そ
のデータを演算する。演算結果は、T,Nステージにお
いて、パイプラインタイミング調整のテンポラリラッチ
T12,T22,N12,N22を通して、送り出さ
れ、Wステージにおいて、レジスタユニット111に書
き込まれる。
【0043】これらをすべてパイプライン処理するた
め、レジスタユニット111は、読み出し4ポート,書
き込み3ポートの構成を採用している。
【0044】図4の整数演算データ処理ユニット116
おいて、バイパス回路は、例えば演算結果を次のサイク
ルで使いたいとき、演算結果がEステージに存在するた
め、そのデータを入力バスにバイパスし処理高速化する
ために備えられている。このような場合以外でも、レジ
スタユニット111に書き込むまでの間にその結果を使
うときには、同様にバイパスできるように、種々のバイ
パス回路を用意することも可能である。
【0045】図5は、2つの命令のペアが並列処理され
る例のタイムチャートである。ここでは、N番目とN+
1番目との演算が、同時に実行されていることがわか
る。また、2つの命令のペアが、1マシンサイクルごと
に、パイプライン処理して実行される。本実施例のスー
パースカラ型マイクロプロセッサ100は、2つの命令
を並列に読み出して、第1命令をEP1演算ユニットで
演算処理するとともに、第2命令をEP2演算ユニット
で並列に演算処理し、同時に書き込む。
【0046】図6は、整数演算系命令を連続して処理す
る図5のタイムチャートを書き直した簡単なパイプライ
ンフローである。この場合は、1マシンサイクルに2命
令ずつ処理される。図6において、2命令ずつ処理され
るうちの上のほうがEP1制御ユニットの処理を示し、
下方がEP2制御ユニットの処理を示している。今後
は、この簡単なパイプラインフローチャートで説明する
が、それらの簡単なパイプラインフローチャートから論
理の構成を類推することは、当業者であれば容易である
から、詳細なタイムチャートを省略する。
【0047】図7は、第1命令としてLOAD命令,S
TORE命令、第2命令として整数演算命令を連続して
処理する場合のパイプラインフローチャートである。図
3に示したように、LOAD命令は、Eステージにおい
て、アドレスを計算する。具体的には、図4のALU1
でオペランドフェッチするためのアドレスを計算し、こ
の結果をオペランドフェッチアドレスバス169に出力
する。オペランドフェッチユニット109は、Tステー
ジにおいて、アドレスで指示されたオペランドをフェッ
チし、オペランドデータデータバス170を通して、オ
ペランドデータを出力する。
【0048】最近のマイクロプロセッサは,データキャ
ッシュメモリを内蔵可能であるために、このようなパイ
プラインを構成できる。Nステージにおいては、オペラ
ンドフェッチが正しく行われたかどうかのヒット判定を
実行する。もし、LOAD命令がバイト単位に処理する
必要があるとき、図4に示すように、このNステージで
バイト処理する。Wステージにおいては、LOAD命令
内に示されているレジスタ番号をレジスタユニット11
1に指示する。レジスタユニット111は、指示された
レジスタにデータを書き込む。ヒット判定の結果、ミス
した場合、通常のマイクロプロセッサと同様に、システ
ムクロックを止めるなどして、正しい値が来るまでパイ
プラインの動作を止める。なお、ミス時の動作の詳細
は、本発明の主題から外れるので、ここでは省略する。
【0049】図7は、LOAD命令がいずれも、EP1
制御ユニット103で実行される場合のパイプラインフ
ローチャートであるが、本実施例では、EP2制御ユニ
ット105で実行することもできる。その場合は、図4
のALU2でオペランドフェッチするためのアドレスを
計算し、この結果をオペランドフェッチアドレスバス1
69に出力する。これ以降の処理は、EP1制御ユニッ
ト103の場合と同様である。
【0050】なお、第1命令と第2命令とが、ともにL
OAD命令である場合や、LOAD命令とSTORE命
令とである場合は、並列処理できない。図1のオペラン
ドフェッチユニット109が、第1命令か第2命令のど
ちらか1つしか処理できないからである。言い替えれ
ば、この制約は、1ポートしか備えていないために生じ
る。しかし、1ポートしかないオペランドフェッチユニ
ット109は、その機能を簡単化し、小型化できる。ま
た、命令の出現頻度等を考慮すると、1ポートでも、充
分な性能が得られるので、性能とハードウエア物量との
トレードオフの問題よりもコストパフォーマンスを重視
する場合には、図1の構成は良い解決策である。
【0051】本実施例の改良としては、図4のオペラン
ドフェッチアドレスバス169をALU1,ALU2と
は独立に、オペランドフェッチユニット109にも2本
独立に接続し、オペランドデータバス170をそれぞれ
のアドレスに対応して2本接続し、それぞれをレジスタ
ユニット111に書き込む構成が考えられる。
【0052】このような構成を採用すると、オペランド
フェッチユニット109が、複雑になり、レジスタユニ
ット111も、1ポート増えて8ポートになる。しか
し、2ポート独立のオペランドフェッチユニット109
があれば、LOAD命令同士,LOADとSTORE命
令,STORE命令同士の並列処理が可能になり、ある
種のプログラムでは、演算性能が向上する。
【0053】さらに、本実施例の別の改良としては、コ
ンパイラにより命令順序をスケジューリングし、LOA
D命令またはSTORE命令と別の命令とを並列処理す
るとき、必ず2命令中の第1命令か第2命令だけに配置
するようにする。このようにすると、EP1制御ユニッ
ト103またはEP2制御ユニット105のどちらか一
方だけを通してのみ、LOAD命令またはSTORE命
令を実行でき、残りの制御ユニットでは、LOAD命令
またはSTORE命令を処理しなくなる分、ハードウエ
アを小型化できる。例えば、並列処理できる命令の組合
せにおいて、第2命令だけにLOAD命令またはSTO
RE命令をスケジューリングできれば、図4中のALU
1からオペランドフェッチアドレスバス169への出力
や、EP1制御ユニット103内のLOAD命令,ST
ORE命令に関する制御が不要となり、プロセッサの構
成を簡単化できる。
【0054】図8は、図1の実施例のLOAD(1),A
DD(2),ADD(3),LOAD(4),ADD(5),ADD
(6)というプログラムの処理を示すパイプラインフロー
チャートである。初めのLOAD(1),ADD(2)と次の
ADD(3),LOAD(4)とは、並列処理できる。しか
し、ADD(5)とADDC(6)とは、並列処理できない。
なぜなら、ADD(5)の演算結果のキャリー情報が、次
のADDC(6)で入力データとして使用されるからであ
る。この例は、PSW(program status word)内のキャ
リー情報である。別の例として、第1命令の書き込みレ
ジスタと第2命令の読み出しレジスタとが、同一のレジ
スタである場合も、並列処理できない。
【0055】このように、本質的に並列処理が不可能な
場合、本実施例のマイクロプロセッサは、図8におい
て、初めにADD(5)をEP2制御ユニットで実行し、
次のサイクルでADD(6)をEP2制御ユニットで実行
する。このように、1マシンサイクルに1命令ずつ処理
することを、シーケンシャル処理と呼ぶ。
【0056】図9は、図8において、各マシンサイクル
ごとに、命令がどの演算器で実行されたかを簡単に表わ
した図表である。
【0057】以上のように、効率的に演算を実行するに
は、命令の組合せにより並列処理可能か否かの判定機能
や、どちらの演算器で実行させるかを決定する機能が、
命令フェッチユニット101に必要である。本実施例の
スーパースカラ型マイクロプロセッサにおいて、本質的
後続命令とは並列処理できない命令の実行スケジュー
リングを担当する命令フェッチユニット101の構成お
よび動作を説明する。
【0058】図10は、本実施例における命令フェッチ
ユニット101の構成の一例を示すブロック図である。
命令フェッチユニット101は、命令キャッシュメモリ
801と、2命令並列処理可能か否かを検出するMDP
805と、EP1命令レジスタ808と、EP2命令レ
ジスタ809と、命令の実行をスケジューリングするシ
ーケンサ810と、第1命令または第2命令を選択する
機能論理811と、命令キャッシュコントローラ812
とからなる。命令キャッシュメモリ801は、アドレス
レジスタ802と、キャッシュメモリ803と、2つの
命令の組にそれぞれ付加された情報TAG804と、キ
ャッシュメモリの出力レジスタである第1命令レジスタ
806および第2命令レジスタ807とを含んでいる。
主な制御信号としては、命令とともに読み出される競合
ビットSQF(sequential flag)850と、シーケンサ
810からの制御信号でありキャッシュメモリ801か
ら読み出されたSQF850をマスクする制御信号TA
O851と、キャッシュメモリ801の出力レジスタで
ある第1命令レジスタ806および第2命令レジスタ8
07をホールドする制御信号MCCRE852とがあ
る。
【0059】本実施例のスーパースカラ型マイクロプロ
セッサは、8バイトバウンダリの固定ペアリング方式を
採る2命令並列処理である。8バイトバウンダリの固定
ペアリング方式は、2命令並列処理の対象を、8バイト
バウンダリ内の2命令に限定している。この限定を設け
ることにより、以下の効果が得られる。
【0060】並列処理可能か否かを表す競合の発生原因
には、命令の組合せによる原因とレジスタ等の競合によ
る原因とがある。レジスタ等の競合による原因は、ハー
ドウエアに依存しており、ハードウエアを小型化するた
めに生じる。命令の組合せによる競合の発生原因は、並
列処理の本質的問題であり、これは避けられない。並列
処理を8バイトバウンダリ内の2命令に限定すると、プ
ログラム命令を格納した時点で、2命令間の競合条件を
判断可能である。この固定ペアリングの特徴を生かし
て、主記憶から命令キャッシュに命令を転送するとき
に、命令の組合せによる競合情報を検出する。2命令間
の競合関係を検出して、2命令ごとに別のフィールドを
用意し、並列処理可能な時には0を格納し、シーケンシ
ャル処理の時には1を格納する。したがって、命令キャ
ッシュが読み出されるとき、その競合情報も同時に読み
出される。
【0061】この方式の特徴は、命令キャッシュに命令
が存在している間、常に2命令の競合関係の情報が正し
く存在することであり、毎回チェックする必要が無く、
高速処理できることである。
【0062】初めに、命令キャッシュ内に命令の組が存
在している場合の動作を説明する。命令アドレスに指示
されたメモリから読み出され命令実行順序を持つ第1命
令と第2命令およびSQF情報は、第1命令レジスタ8
06,第2命令レジスタ807に格納される。シーケン
サ810は、命令とともに読み出されたSQF850情
報とシーケンサからの情報TAO851により、EP1
命令レジスタ808,EP2命令レジスタ809への格
納を制御する。EP1命令レジスタ808に格納された
命令は、EP1演算ユニット110で実行され、EP2
命令レジスタ809に格納された命令は、EP2演算ユ
ニット112で常に実行される。 〈並列処理できるケース〉 SQF=0である。第1命令は、EP1命令レジスタ8
08に格納され、第2命令は、EP2命令レジスタ80
9に格納される。 〈並列処理できないケース〉 SQF=1である。初めのサイクルでは、第1命令は、
EP1命令レジスタ808に格納され、EP2命令レジ
スタ809に格納されるように命令を選択する機能論理
811を制御する。第2命令は消失してしまうので、命
令キャッシュの出力ラッチの制御信号MCCREをネゲ
ートし、ここに第1命令および第2命令を一時記憶す
る。この時、EP1命令レジスタ808に格納された命
令は、ハードウエアで無効化し、EP2命令レジスタ8
09に格納された命令だけを有効とする。
【0063】続くサイクルで、シーケンサ801は、T
AO=1とし、SQFの情報を無効化させる。これに従
い、第1命令は、EP1命令レジスタ808に格納さ
れ、第2命令は、EP2命令レジスタ809に格納され
る。EP1命令レジスタ808に格納された命令は、ハ
ードウエアで無効化し、EP2命令レジスタ809に格
納された命令だけを有効とする。また、命令アドレス
は、次の命令を指示し直す必要があり、制御信号よりプ
ログラム制御ユニットは、同じアドレスをもう一度出力
するように制御する。
【0064】図11は、SQF850とこれをマスクす
る制御信号TAOとの関係、EP1命令レジスタ808
およびEP2命令レジスタ809への命令の振り分け、
それぞれの命令の有効無効をまとめてに示す図表であ
る。
【0065】シーケンシャル処理は、最初のサイクルで
第1命令をEP2命令レジスタ809に格納し、続くサ
イクルで第2命令をEP2命令レジスタ809に格納す
る。すなわち、第1命令も第2命令もともに、EP2命
令レジスタ809を通してEP2演算ユニット112で
実行する。命令フェッチユニット101が、上記のよう
な制御を実行すると、図8および9のADD(5),AD
D(6)のような命令をシーケンシャルに処理できる。
【0066】命令フェッチユニット101でもう一つ重
要なことは、分岐命令での動作である。分岐命令は、ジ
ャンプ先が8バイトバンダリに対して、第1命令へも第
2命令へもジャンプできる。ジャンプ先アドレスと上記
の並列処理制御とが重なるケースについて説明する。
【0067】第1命令側にジャンプしたとき、シーケン
サはTAO=0という制御とする。この動作は、連続ア
ドレスにあるプログラムの処理と同じ処理でよい。
【0068】第2命令側にジャンプしたとき、TAO=
1という制御とする。こうすると、図11で示した通
り、SQFに無関係に、第1命令はEP1命令レジスタ
808に格納され、第2命令はEP2命令レジスタ80
9に格納される。EP1命令レジスタ808に格納され
た命令は、ハードウエアで無効化される。したがって、
分岐命令の飛び先制御も含めた命令フェッチユニット1
11は、分岐によるペナルティを生じず、常に正しく動
作できる。
【0069】図12は、実際のEP1命令とEP2命令
とがどのように処理されるかを示す図である。命令キャ
ッシュメモリ801から出力される第1命令レジスタ8
06の内容と第2命令レジスタ807の内容と競合ビッ
トSQF850とが、図12の上段に記載のような場合
に、実際のEP1命令,EP2命令は、図12の下段に
記載のように処理される。なお、記号×は、命令が無効
化されることを表している。
【0070】命令1と命令2とは、競合ビットSQF=
0のため、並列に処理される。命令3と命令4とは、競
合ビットSQF=1のため、シーケンシャルに処理され
る。すなわち、EP2演算器112が、最初に命令3を
実行し、続くサイクルで命令4を実行する。命令5と命
令6とは、競合ビットSQF=0のため、並列に処理さ
れる。命令7と命令8とは、競合ビットSQF=1のた
め、シーケンシャルに処理される。すなわち、EP2演
算器112が、最初に命令7を実行し、続くサイクルで
命令8を実行する。このように、8バイトバウンダリ内
の並列処理が可能か否かを各命令の組ごとに独立にチェ
ックした情報を持てば、効率的な実行スケジューリング
を簡単に作成できる。
【0071】続いて、キャッシュミスの場合すなわち命
令キャッシュメモリ801内に命令の組が存在しない場
合の動作を説明する。
【0072】一般に、スーパースカラ型マイクロプロセ
ッサの動作初期(電源スイッチオン後,リセット後,タ
スクが切換わった後など)には、命令キャッシュメモリ
内に命令の組が存在しない。IFステージにおいて、プ
ログラムのスタートアドレスが格納されている命令アド
レスから命令をフェッチするが、キャッシュメモリ内に
命令が存在しない。そこで、スーパースカラ型マイクロ
プロセッサは、主メモリから数バイト〜数十バイトの命
令列を転送して命令キャッシュメモリに格納して、その
後の処理を再開する。
【0073】本実施例のスーパースカラ型マイクロプロ
セッサ100も、命令列を主メモリ191からキャッシ
ュメモリ801に転送するところまでは、従来と同じ処
理を実行する。しかし、一般のスーパースカラ型マイク
ロプロセッサと異なるのは、8バイトバウンダリにある
2命令の組が並列処理可能か否かをチェックする機能M
DP805があることである。
【0074】図13は、並列処理可能か否かをチェック
する機能MDP805が判定する命令の依存関係の一例
を示す図表である。図13は、8バイトバウンダリ内の
2つの命令を第1命令,第2命令としたとき、縦軸,横
軸に図2の命令分類を取り、そのすべての組合せについ
て、○は並列に処理可能であることを示し、×はシーケ
ンシャルに処理しなければならないことを示している。
【0075】特に、並列処理できないケースについてま
とめると、LOAD系命令A−LOAD系命令A,LO
AD系命令A−STORE系命令B,STORE系命令
B−LOAD系命令A,STORE系命令B−STOR
E系命令Bの第1命令と第2命令との組合せは、オペラ
ンドフェッチユニット109が1ポートのため、並列処
理できない。
【0076】整数演算系ADD命令D−整数演算系AD
DC命令E,整数演算系ADDC命令E−整数演算系A
DDC命令Eの第1命令と第2命令との組合せは、第1
命令がPSW(processor status word)を設定する命令
で、第2命令がそのPSWを使う命令である組合せのた
め、本質的に並列処理できない。
【0077】STORE系命令B−積和系命令J,積和
系命令J−STORE系命令Bの第1命令と第2命令と
の組合せは、フローテングレジスタユニット113の読
み出しポートが4ポートのために、積和命令とFSTO
RE命令とを並列処理できない。整数のSTORE命令
と積和命令との並列処理は可能である。
【0078】FADD系命令H−FADD系命令H,F
MUL系命令I−FMUL系命令I,積和系命令J−積
和系命令Jの第1命令と第2命令との組合せは、フロー
テング加算の演算器と乗算の演算器とがそれぞれ1つし
かないため、並列処理できない。ハードウエア的に2つ
持つことができれば、この制限は無くなり、並列処理が
可能になる。
【0079】第1命令が分岐命令Fの場合、すべての第
2命令との組合せは、並列処理できない。分岐命令Fと
その前の命令との並列処理は有効であるが、分岐命令F
とディレイドスロットとの間の並列処理は、性能が上が
らない。詳細については、後述する。このため、第1命
令が分岐命令Fの場合は、シーケンシャル処理とし、第
2命令が分岐命令Fの場合は、並列処理可能とする。
【0080】その結果、EP2演算器ユニットのみ演算
結果を命令アドレスに切換えできるように接続すれば、
EP1演算器ユニットは,分岐命令処理のハードウエア
部分を省略できることになる。この切換え手段は、図1
の命令アドレスバス150である。このように、EP1
演算器ユニットから分岐命令処理のハードウエア部分を
削除すると、スーパースカラ型マイクロプロセッサを小
型化できる。
【0081】第1命令または第2命令にシステム制御命
令Gがあると、並列処理できない。システム制御命令G
は、命令の出現頻度が小さく、しかも、プロセッサのス
テートを変える場合もあり、並列処理できる可能性も少
ない。そこで、システム制御命令Gは、シーケンシャル
処理とする。システム制御命令Gの性能を向上させるに
は、分岐命令Fのように第2命令にあるときのみ並列処
理するよに、改良してもよい。
【0082】続いて、並列処理可能か否かをチェックす
る機能MDP805の1つである命令のレジスタ競合に
ついて述べる。この機能は、整数演算でもフローテング
演算でも同様である。具体的には、 第1条件:第1命令のすべてのターゲット=第2命令のすべてのソース 第2条件:第1命令のすべてのターゲット=第2命令のすべてのターゲット 第1条件および/または第2条件が成立したときは、シ
ーケンシャル処理とし、両方が成立しなっかたときは、
並列処理可能とする。本実施例では、第2条件を入れる
ことにより、割込み処理制御を簡単化できる。
【0083】第2条件では、NOP(no operation)命令
同士の並列処理ができなくなる。その場合は、本実施例
の改良として、NOP命令同士の並列処理を第2条件か
ら例外的に外すことも可能である。
【0084】並列処理可能か否かをチェックする機能M
DP805の条件をすべて検出し、並列処理できない場
合、各命令の組ごとにTAG804に1をセットする。
その後、再開したときのプロセッサの動作は、命令が存
在したときと同様であり、既に説明した通りである。
【0085】本実施例の命令フェッチユニット101の
大きな特徴は、シーケンシャル処理の時、実行すべき命
令をすべてEP2演算ユニットに実行させることであ
る。ハードウエアの物量と性能向上とのトレードオフを
考慮し、ハードウエアを削減するには、EP1演算ユニ
ットの省略できるハードウエアを削減すればよい。ハー
ドウエアを削減されたEP1演算ユニットで実行できな
いような命令,例えば分岐命令があるか否かをチェック
機能MDP805でチェックし、もしこのような命令が
生じたときは、チェック機能MDP805で競合ビット
SQF=1と設定し、それらの命令をすべてEP2演算
ユニットに実行させればよい。
【0086】また、チェック機能MDP805に、外部
ピンまたは診断レジスタからの指示を入力したときに、
その出力を常に1にするハードウエアを設けると、命令
を常にシーケンシャル処理するスーパースカラ型マイク
ロプロセッサが得られる。この機能は、スーパースカラ
型マイクロプロセッサ自体の診断,デバック等に有効で
ある。
【0087】なお、本実施例の命令フェッチユニット1
01は、論理アドレスでキャッシュメモリ803をフェ
ッチするが、アドレス変換ユニットを設けた物理アドレ
スでフェッチする構成であっても、本発明を適用可能で
ある。また、キャッシュメモリ803の構成について
も、ダイレクトマップ,2ウエイセットアソシアティブ
などの方式が提案されているが、それらのすべてに本発
明を適応可能である。
【0088】1次キャッシュメモリ803と2次キャッ
シュメモリ190とを階層化したシステムにおいて、1
次キャッシュメモリ803と2次キャッシュメモリ19
0との転送間にチェック機能MDP805を入れて、1
次キャッシュメモリ803のみにTAG804をつけて
もよいし、2次キャッシュメモリ190と主メモリ19
1との間にチェック機能MDP805を入れて、1次キ
ャッシュメモリ803と2次キャッシュ190との両方
にTAG804をつけてもよい。さらに、このTAG8
04は主メモリ191においてもよく、主メモリ191
にプログラムをインストールするときに、チェック機能
MDP805を通して、主メモリ191にTAG804
を持ってもよい。
【0089】キャッシュミス時の高速処理方式として、
ミスした命令をキャッシュメモリ803に書きながらバ
イパスして、命令フェッチユニット101に供給するス
トリーム方式が考えられるが、チェック機能MDP80
5は、このバイパス回路にも必要になる。
【0090】性能を多少犠牲にすれば、ミスした命令が
バイパス回路を通してくるときのみTAG804を無条
件に1にセットすることもできる。このようにすると、
バイパス回路でチェック機能MDP805を通ることを
回避できる。
【0091】さて、本実施例のスーパースカラ型マイク
ロプロセッサ100の動作に戻り、図14から図22を
参照し、分岐命令が検出された場合の動作を説明する。
【0092】分岐命令は、RISCでは一般的である遅
延分岐機能を持つ。遅延分岐とは、分岐命令実行後、分
岐命令の次の命令を実行し、その後、分岐先命令を実行
する方式である。遅延分岐は、パイプラインの乱れを押
さえる1手法である。分岐命令の次の命令を実行するス
ロットを遅延スロットと呼ぶ。
【0093】図14は、分岐命令BA(branch and pipi
ng)のパイプラインフローチャートである。この場合、
第1命令がADD(1)であり、第2命令がBA(2)であ
り、並列処理される。ADD(3)は、遅延スロットで処
理する命令である。BA命令は、図3に示す通り、Dス
テージでアドレス計算を実行する。このため、図14に
示すように、遅延スロットの次のサイクルで、分岐先の
命令であるSUB(4)とADD(5)とを並列に実行する。
したがって、無駄なサイクル無しに分岐命令を実行でき
る。ここでは、遅延スロットは1つであるが、本実施例
の場合、並列に命令を処理するハードウエアが2つある
ため、遅延スロットを2つとし、より効率的な分岐を実
行することも可能である。
【0094】図15および図16は、第1命令に分岐命
令BAがある場合の動作を示すパイプラインフローチャ
ートである。図15は、BA(1)と遅延スロットに入る
命令ADD(2)とを並列処理する場合を示し、図16
は、それらの命令をシーケンシャルに処理する場合を示
している。これらは、ADD(3)まで両方とも3サイク
ル必要としている。本実施例の命令フェッチユニット1
01は、図16に示すように、第1命令側に分岐命令を
含む命令の組合せは、シーケンシャルに処理するように
動作する。したがって、分岐命令は、必ずEP2制御ユ
ニット105のみ制御すればよく、EP1制御ユニット
103の分岐命令に対するハードウエアを削減できる。
なお、図15のように制御すると、EP1制御ユニット
103にも分岐命令を処理するハードウエアが必要にな
るが、遅延スロットを3つまで持つこともできる。
【0095】図17および図18は、第2命令および第
1命令に分岐命令がある場合の動作を示すパイプライン
フローチャートである。分岐命令は、図3に示す通り、
Dステージでレジスタを読み出し、EP2演算器でアド
レス計算する。計算したアドレスは、アドレスバス15
0に出力される。このため、BR命令のTステージで分
岐先のアドレスの命令をフェッチする。BR命令の次の
サイクルで遅延スロットを実行し、次のサイクルは何も
せず、さらに次のサイクルで分岐先の命令を実行する。
したがって、BR命令は、図17に示すように、1サイ
クルペナルティとなる。図18は、図16の場合と同様
に、第1命令に分岐命令があるために、シーケンシャル
処理となる。なお、BR(1)とADD(2)とを並列処理し
ても、ADD(4)までの実行サイクルは、同じである。
【0096】図19は、条件分岐命令を含むプログラム
である。このプログラムを用いて、条件分岐命令とパイ
プライン動作との関係について説明する。一般に、条件
分岐命令は、ある条件が成立(TAKEN)したときに、
分岐を実行して、条件が不成立(NOTTAKEN)のと
きに、続く連続アドレスの命令を実行する。
【0097】条件分岐命令を高速化するため、分岐命令
で条件判定するまでの間、どちらかを予測して実行して
おき、予測が外れたとき、その予測した命令を無効化す
る方式をとる。本実施例では、分岐先アドレスが自分自
身より先に飛ぶか否かにより、予測を切換える。具体的
には、自分より先にジャンプするときNOTTAKEN
予測制御を実行し、自分より前にジャンプするときTA
KEN予測制御を実行する。
【0098】図20は、分岐命令でTAKENを予測し
た場合の動作を示すパイプラインフローチャートであ
る。ADDBcc(21)は、条件分岐命令であり、ADD(2
2)は、遅延スロットで実行される命令である。この条件
分岐は、TAKENを予測したため、BA命令と同様
に、次の次のサイクルで分岐先の命令(50)を実行する。
条件分岐命令の実際の条件判定は、Tステージであるた
め、(50)から(53)までの命令を予測して実行を開始す
る。Tステージで真の判定が行われて実際に予測が当た
った場合、続くステージで(54)および(55)を実行する。
このとき、ADD(55)までの9命令を5サイクルで実行
する。一方、予測が外れた場合、予測して実行を開始し
た(50),(51),(52),(53)の命令を無効化し、続くステー
ジでADD(23)を実行する。このとき、ADD(23)まで
の4命令を5サイクルで実行する。
【0099】図21は、分岐命令でNOTTAKENを
予測した場合の動作を示すパイプラインフローチャート
である。この条件分岐では、NOTTAKENを予測し
たため、連続するアドレスの命令を予測して実行を開始
する。Tステージで真の判定が行われて実際に予測が当
たった場合、続くステージで(28)および(29)を実行す
る。このとき、ADD(29)までの10命令を5サイクル
で実行する。一方、予測が外れた場合、予測して実行を
開始した(23),(24),(25),(26),(27)の命令を無効化し、
続くステージでADD(50)を実行する。このとき、AD
D(51)までの5命令を5サイクルで実行する。
【0100】図22は、予測と実際の動作との関係を示
す図である。予測TAKENのケースで、実際にTAK
ENの時すなわち予測が当ったときは、無効化によるペ
ナルティは0となり、実際にNOTTAKENの時すな
わち予測外れのときは、無効化によるペナルティは2と
なる。さらに、予測NOTTAKENのケースで、実際
はTAKENの時すなわち予測外れのときは、無効化に
よるペナルティは2となり、実際はNOTTAKENの
時すなわち予測当たりのときは、無効化によるペナルテ
ィは0となる。
【0101】なお、図20,21はともに、第2命令に
条件分岐命令がきた場合について述べたが、第1命令に
条件分岐がきた場合は、無条件分岐命令と同様にシーケ
ンシャルな処理となる。この処理については、無条件分
岐命令の制御を簡単に拡張して考えることができるた
め、その説明を省略する。
【0102】以上、遅延分岐機能を有する分岐命令につ
いて述べたが、遅延分岐機能を持たない分岐命令につい
ても、上記のような制御を実行すると、より効率的に分
岐を実行可能である。
【0103】本実施例のプロセッサの動作に戻って、図
1,図3,図23,図24,図25によりフローティン
グ命令の動作を説明する。
【0104】FADD命令は、IFステージにより読み
出され、Dステージで、EP1オペランドバス151ま
たはEP2オペランドバス152を通して、フローティ
ング加算制御ユニット107に転送される。フローティ
ング加算制御ユニット107は、その命令を解読し、制
御線164を通して、フローティングレジスタユニット
113に必要なレジスタの読み出し指示を送る。必要な
レジスタの内容は、フローティング加算器114へ送ら
れる。次に、E,T,N,Wの4ステージで,演算を実
行する。フローティング加算制御ユニット107は、最
後のZステージで、フローティングレジスタユニット1
13に、FADD命令により指示されるレジスタにフロ
ーティング加算結果を書き込むことを指示する。なお、
後で述べるレジスタ競合が無ければ、FADD命令は1
サイクルピッチで命令を実行できる。
【0105】続いて、FMUL命令の動作について説明
する。FMUL命令は、IFステージで、読み出され、
Dステージで、EP1オペランドバス151またはEP
2オペランドバス152を通して、フローティング乗算
制御ユニット108に転送される。フローティング乗算
制御ユニット108は、命令を解読し、制御線165に
を通して、フローティングレジスタユニット113に必
要なレジスタの読み出し指示を送る。必要なレジスタの
内容は、フローティング乗算器115に送られる。次
に、E,T,N,Wの4ステージで演算を実行する。こ
れは、FADD命令と同様である。フローティング乗算
制御ユニット108は、最後のZステージで、フローテ
ィングレジスタユニット113に、フFMUL命令によ
り指示される書き込みレジスタにフローティング乗算結
果を書くことを指示する。なお、後で述べるレジスタ競
合が無ければ、FMUL命令は1サイクルピッチで命令
を実行できる。
【0106】これらのFADD命令およびFMUL命令
は、IEEEの基準に従い、データの型をチェックされ
る。このため、フローティング加算器114,フローテ
ィング乗算器115から、信号線166,167を通し
て、それぞれの制御ユニット107,108に情報が渡
される。
【0107】フローティング演算器は、現在の技術で
は、チップに占めるハードウエアの割合が大きく、一セ
ットの演算しか持てない。しかし、他の命令と並列処理
するために、EP1命令レジスタからでもEP2命令レ
ジスタからでも命令が実行できる構成にした。
【0108】図23は、EP1命令レジスタ808およ
びEP2命令レジスタ809とフローティングデータ処
理部分との関係について示す図である。
【0109】EP1命令レジスタ808にFADD命令
がきた場合、EP1命令レジスタ808は、レジスタ3
802からFADD命令の演算入力データをバスB1,
X1に読み出す。命例解読器3801は、EP1命令レ
ジスタ808に有効なFADD命令があることを検出
し、加算器3803の前にあるバス選択論理3805を
バスB1,X1からデータを読めるように切換える。加
算器3803は、バスB1,X1からデータを読み込
み、EP1命令レジスタ808のFADD命令を実行す
る。
【0110】EP2命令レジスタ809にFADD命令
がきた場合、EP2命令レジスタ809は、レジスタ3
802からFADD命令の演算入力データをバスB2,
X2に読み出す。命例解読器3801は、EP2命令レ
ジスタ809に有効なFADD命令があることを検出
し、加算器3804の前にあるバス選択論理3806を
バスB2,X2からデータを読めるように切換える。加
算器3804は、バスB2,X2からデータを読み込
み、EP2命令レジスタ809のFADD命令を実行す
る。
【0111】FMUL命令についても、同様であるか
ら、その説明を省略する。
【0112】フローティング演算器における本発明のこ
のような動作は、チップに占めるハードウエアの割合が
大きく少数セットの演算器しか持てない場合に、特に有
利である。
【0113】図24は、FADD命令とFMUL命令と
を並列かつ連続的に処理する例を示すパイプラインフロ
ーチャートである。なお、FADD命令やFMUL命令
と整数演算命令とも、図13の命令の組合せで示したよ
うに、並列処理できる。
【0114】図25は、FADD命令,FADD命令,
FMUL命令,FMUL命令列を実行するときの動作を
示すパイプラインフローチャートである。FADD同士
またはFMUL同士は、本実施例では演算器が1つしか
ないため、シーケンシャルな処理となり、命令フェッチ
ユニット101の制御により、図25のように処理され
る。
【0115】なお、FADD命令およびFMUL命令に
ついての処理系が2つずつあれば、問題なく並列処理で
きる。しかし、FADD命令およびFMUL命令の処理
系の場合、ハードウエア増加が著しいため、本実施例で
はFADD命令およびFMUL命令の処理系を1つしか
持たない構成とした。このために、シーケンシャル処理
になってしまうが、これは本実施例特有の問題である。
【0116】図26は、複数サイクル実行命令を含む命
令セットを持つスーパースカラ型マイクロプロセッサの
並列処理を示すパイプラインフローチャートである。上
記各本実施例では、1サイクルピッチで実行する命令を
対象としたが、図26の複数サイクル実行命令は、その
命令を実行しているサイクル時間が長く、その間に次の
命令を待たせる必要がある命令であり、CISCタイプ
のプロセッサに多い。この種の命令としては、マイクロ
プログラムで実行するような命令,整数の乗算命令,整
数の割算命令等、あるハードウエアをn回繰り返して動
作させると正しい値が求められる命令等がある。
【0117】図26(a),(b)は、1サイクルで実行可
能な命令A,Bの並列処理と割込みとを示している。
(a)の場合、命令実行順序の早い命令Aが割込みを起こ
したために、自分の命令と次の命令である命令Bの実行
とを抑止する。(b)の場合、命令実行順序の遅い命令B
が割込みを起こしたため、前の命令である命令Aは実行
させ、自分の命令のみ抑止する。
【0118】図26(d)は、命令BのEステージに3サ
イクル必要とする複数サイクル実行命令を含む並列処理
の例を示している。命令AとBとは、並列処理を実行す
る。命令Bが割込みを起こすと、命令Aは実行順序がB
に比べ前の命令であるから命令Aは実行され、命令Bは
実行を抑止される。
【0119】図26(e)は、命令Aが複数サイクル実行
命令であり、命令Bに比べて先行する命令である場合を
示している。本実施例のように、複数サイクル実行命令
が第1命令にあるとき、並列処理を禁止する。すなわ
ち、競合ビットSQF850=1として処理する。命令
Aと命令Bとは、シーケンシャルな処理となる。EP2
演算器は、命令Aを実行し、次のサイクル以降命令Aが
演算終了するまで、Dステージで待たされる。
【0120】なお、本実施例のように並列処理しない
と、図26(c)に示すように、命令Bが先に終了した
り、命令Bを命令Aに合わせて待たせたりして、制御が
複雑になる。
【0121】複数サイクル実行命令が第1命令にあると
きにシーケンシャル処理とすると、複数サイクル実行命
令を含む命令セットの実行,割込み制御が簡単になる。
また、複数サイクル実行命令は、EP2のみで実行する
ので、少ないハードウエアで効率的に性能を向上でき
る。
【0122】さらに、複数サイクル実行命令のハードウ
エアサポートの別の方法は、複数サイクルで実行した命
令を1サイクル実行可能ないくつかの命令に分解し、そ
の命令の組合せで、複数サイクル命令の実行機能を実現
することである。
【0123】例えば、Hewlett Packard社の命令セット
では、Divide Step 命令や DecimalCorrect命令等の命
令がある。これらの命令をいくつか繰り返したり他の命
令と組合せると、整数の割算や10進演算が可能にな
る。なお、これらの命令は、このような特殊な演算の時
のみ出現し、しかも、前後の命令との間に依存関係があ
る。このため、これらの命令と並列処理との関係は、シ
ーケンシャル処理とし、第2演算器にのみこれらの命令
を実行する機能論理を持たせ、スーパースカラ型マイク
ロプロセッサを小型化する。
【0124】次に、図27から図34を参照して、本実
施例のスーパースカラ型マイクロプロセッサにおける命
令競合のパイプライン制御を説明する。
【0125】図27は、FMUL(2)の演算結果をFA
DD(3)で入力情報として使用する場合を示している。
このプログラムにおいて、FMUL(2)は、レジスタ1
2とレジスタ13の内容をフローティング乗算し、レジ
スタ14に格納する。一方、次の命令であるFADD
(3)は、レジスタ14とレジスタ15との内容をフロー
ティング加算し、レジスタ16に格納する。この時のレ
ジスタ14には、FMUL命令実行後の結果が格納され
なければならない。FMUL命令は、それ自身の演算に
4サイクルかかる。WステージからDステージへのバイ
パスは、ハードウエアが担当する構成となっているのに
対して、次のプログラムのFADD(3)は、FMUL(2)
の4サイクル目まで待たせなければならない。
【0126】図28は、この様子をマシンサイクルごと
にわかりやすく示す図である。なお、FMUL(2)とF
ADD(3)とが8バイトバウンダリ内に在る場合は、シ
ーケンシャルな処理となり、さらに、FADD(3)がF
MUL(2)の4サイクル目まで待たれる。
【0127】図29は、LOAD命令でロードしたデー
タをすぐ次の命令が取り込む例を示す図である。本実施
例のスーパースカラ型マイクロプロセッサにおいては、
整数レジスタユニット111が、図30に示すようなデ
ータバイパスを持っている。また、1命令を1マシンサ
イクル実行する。一般に整数演算においては、命令間の
パイプライン処理は、シーケンシャル処理で充分であ
り、更なるパイプライン制御は不要である。しかし、こ
の場合、LOAD命令のデータがTステージでBMW1
70を通して読み出されるため、EステージからDステ
ージへのバイパスが不可能である。そこで、Tステージ
からDステージへのバイパスを用いることになる。そこ
で、パイプライン制御ユニット106は、次のADD
(3)との間でサイクル間のレジスタの競合があるか否か
をチェックし、競合がある場合だけ、1サイクル待たせ
て実行する。
【0128】図31は、パイプライン制御ユニット10
6を更に詳細に示すブロック図である。パイプライン制
御ユニット106は、Eステージ,Tステージ,Nステ
ージについて、それぞれEP1,EP2の実行命令の情
報を残しておき、それぞれの情報とDステージのEP
1,EP2の命令の情報とをサイクル間のレジスタ競合
検出回路で常に比較する。パイプラインを開けなければ
ならない条件のとき、Dステージの命令は、Dステージ
のラッチに一時記憶され、次のサイクルもDステージに
残る。Eステージには、無効化命令が入る。T,Nステ
ージには、有効な命令が1つずつ進む。したがって、D
ステージに残った命令とT,Nで進んだ命令との間に1
つの無効化された部分(Eステージ)が残る。この動作を
繰り返すと、図31に示すように、最大3つの無効サイ
クルが生み出される。
【0129】図27の例について具体的に説明すると、
最初はEステージに(1),(2)の命令が存在し、Dステー
ジに(3),(4)の命令が存在する。これは、連続する命令
を処理する場合と同じである。パイプライン制御ユニッ
ト106は、DステージのEP2側の命令のレジスタと
EステージのEP1側の命令のレジスタとの競合が生じ
ていることを判断し、Dステージのイネーブル信号をネ
ゲートする。次のサイクルでは、Tステージに(1),(2)
の命令が存在し、Dステージに(3),(4)の命令が存在す
る。このとき、Eステージは、無効化される。
【0130】パイプライン制御ユニット106は、Dス
テージのEP2側の命令のレジスタとTステージのEP
1側の命令のレジスタとの競合が生じていることを判断
し、Dステージのイネーブル信号をネゲートする。次の
サイクルでは、Nステージに(1),(2)の命令が存在し、
Dステージに(3),(4)の命令が存在する。このとき、
E,Tステージは,無効化される。
【0131】また、パイプライン制御ユニット106
は、DステージのEP2側の命令のレジスタとNステー
ジのEP1側との命令のレジスタとの競合が生じている
ことを判断し、Dステージのイネーブル信号をネゲート
する。次のサイクルでは、Wステージに(1)(2)の命令
が、Dステージに(3)(4)の命令が存在する。このとき、
E,T,Nステージは、無効化される。
【0132】さらに、次のサイクルで、パイプライン制
御ユニット106は、レジスタ競合が生じていないこと
を確認し、Dステージのイネーブル信号をアサートす
る。次のサイクルでは、Zステージに(1),(2)の命令が
存在し、Eステージに(3),(4)の命令が進んで存在す
る。
【0133】本実施例のスーパースカラ型マイクロプロ
セッサは、このような動作により、3サイクルの無効サ
イクルを作り出す。
【0134】同様に、図29の場合も、パイプライン制
御ユニット106が、ロード命令について各ステージの
情報を残しておき、毎サイクルチェックすると、1サイ
クルの無効サイクルを作り出すことができる。
【0135】図32は、さらに別のパイプライン制御の
具体的な例を示す図である。この例は、FADD(1)の
書き込みレジスタとFMUL(4)の読み出しレジスタが
競合し、FADD(3)の書き込みレジスタとFMUL(5)
の読み出しレジスタが競合しているパターンである。
【0136】図33は、このプログラムを先程の制御方
式に合わせた動作として簡単に記述した図である。本実
施例では、Dステージの同一サイクルにある2命令と異
なるステージにある命令のうち1つとでも競合が生じれ
ば、Dステージにある命令が待たされる。したがって、
FADD(1)とFMUL(4)との間に3つの無効サイクル
が入り込み、FADD(3)とFADD(5)との間にも3つ
の無効サイクルが入り込む。この結果、6つの命令は、
9サイクルかけて実行される。
【0137】本実施例の改良として、Dステージの同一
サイクルにある命令について、EP1側の命令とEP2
側の命令とが、先に流れた命令(Eステージ,Fステー
ジ,Gステージ)と競合しているか否かを別々に検出す
る構成を採用する。EP1側の命令が競合しているとき
は、本実施例と同様に、Dステージにいる2命令を両方
待たせるが、EP2側の命令のみが競合しているとき
は、EP2側の命令だけを待たせるように、きめ細かい
制御を実現できる。
【0138】図34は、図32のプログラムを例に採
り、その具体的な動作を説明する図である。FADD
(1)とFMUL(2)とは並列処理する。次のサイクルで
は、FADD(3)とFMUL(4)とがDステージに入って
くるが、EP1の命令であるFADD(3)にはレジスタ
競合がなく、EP2の命令であるFMUL(4)にはレジ
スタ競合がある。FADD(3)は次のサイクルで実行さ
れ、FMUL(4)だけがFADD(1)との関係で4サイク
ル待たされる。続いて、FADD(5)とFMUL(6)がD
ステージに入ってくるが、FADD(3)とFADD(5)と
は、既に3サイクル開いているので、レジスタ競合が起
こらない。また、FMUL(6)もレジスタ競合が生じな
いために並列処理できる。このように、きめ細かい制御
をすることで、図32の6つの命令は、6サイクルの実
行時間で処理できることになる。
【0139】図35および36は、積和命令と並列処理
とを説明する図である。図35は、32ビット固定長命
令のフォーマットを示す。整数命令レジスタを使う命令
は、図2に示す通り、OPコードフィールドのほかにソ
ースフィールドを指すS1,S2と、ターゲットレジス
タを示すtとがある。これらのフィールドは、各命令が
すべて共通ビットに固定されたフィールドとして定義さ
れている。フローティングレジスタを使う命令も同様
に、各命令がすべて共通ビットに固定されたフィールド
として定義されている。このように共通に固定されてい
ると、命令によるソースフィールドの選択無しに、レジ
スタの内容を高速に読み出すことができる。
【0140】しかし、積和命令は、図35に示してある
ように、それ自身の命令で4つのソースフィールドS
1,S2,S3,S4を持ち、FMUL,FADDを実
行し、それぞれのターゲットレジスタT1,T2に格納
する。このため、積和命令の実行においては、ソースフ
ィールドの選択が必要になる。
【0141】図36は、図10の命令フェッチユニット
101の一部を示す図である。キャッシュメモリ80
3,第1命令レジスタ866,第2命令レジスタ80
7,EP1命令レジスタ808,EP2命令レジスタ8
09,EP1オペコードバス151,EP2オペコード
バス152は、図10と共通であり、その動作も同じで
ある。フローテングレジスタ3201は、選択論理生成
回路3202により制御される。本実施例のスーパース
カラ型プロセッサ101は、フローテングレジスタ32
01の読み出しポートを4ポート備えている。アドレス
レジスタ3203,3204,3205,3206は、
それぞれフローテングレジスタのアドレスを示す。そこ
に格納されたアドレスにあるフローテングレジスタ32
01から図23のB1,X1,B2,X2バスに対応し
てデータが読み出され、フローティングデータ処理ユニ
ット117内の演算器に転送される。
【0142】続いて、図35の積和命令の動作を説明す
る。第1命令レジスタ806にフローティング命令がく
ると、その命令のS1,S2フィールドは、アドレスレ
ジスタ3203,3204に格納される。同様に、第2
命令レジスタ807にフローティング命令がくると、そ
の命令のS1,S2フィールドは、アドレスレジスタ3
205,3206に格納される。
【0143】並列処理できる場合は、第1命令レジスタ
806,第2命令レジスタ807にフローテング命令が
並列に格納され、それぞれのS1,S2フィールドは、
アドレスレジスタ3203〜3206に格納される。第
1命令レジスタ806に積和命令がくると、オペコード
が、信号線3210を通して、選択論理生成回路320
2に積和命令であることを知らせる。
【0144】選択論理生成回路3202は、競合ビット
SQF850とそれをマスクする制御信号TAO851
との関係により第1命令レジスタが有効である場合、図
35のS1,S2フィールドをアドレスレジスタ320
3,3204に格納し、S3,S4フィールドをアドレ
スレジスタ3205,3206に格納するように制御す
る。
【0145】また、第2命令レジスタ807に積和命令
がくると、競合ビットSQF850とそれをマスクする
制御信号TAO851との関係により第2命令レジスタ
が有効である場合、図35のS1,S2フィールドをア
ドレスレジスタ3205,3206に格納し、S3,S
4フィールドをアドレスレジスタ3203,3204に
格納するように制御する。
【0146】このように、積和命令のときのみ、4つの
アドレスレジスタ3203〜3206にフィールドが同
時にセットされる。なお、4つのフローテングソースバ
スを使ってしまうため、本実施例の構成では、積和命令
とFADDおよびFMULの命令との並列処理はできな
い。このため、その組合せの時、並列処理可否を示す信
号MDPにより、競合ビットSQF=1としなければな
らない。さらに、FSTOREとの並列処理も、レジス
タファイルのポート数がネックとなるため、並列処理で
きないが、これは、本実施例に特有の問題であり、レジ
スタファイルのポート数を増やせば、処理可能である。
【0147】本実施例では、信号線3211,3210
を通して得られる信号を選択論理生成回路3202でデ
コードし積和命令を判定していたが、より高速に判定し
たければ、競合ビットSQFと同様に、キャッシュメモ
リ803に命令を格納するときに、それぞれの命令に積
和命令のTAGをつけて格納するように改良し、選択論
理生成回路3202でのデコード無しに、高速に判定す
ることもできる。
【0148】図38は、4命令を並列処理するスーパー
スカラ型マイクロプロセッサの実施例の構成を示すブロ
ック図である。このスーパースカラ型マイクロプロセッ
サは、命令キャッシュメモリ3601と、4命令間の競
合情報(複数)を持つTAG3602と、第1〜第4命令
レジスタ3604〜3607と、EP1〜4命令レジス
タ3608〜3611と、これらEP1〜4命令レジス
タ3608〜3611に対応するEP1〜4演算ユニッ
ト3612〜3615と、命令を選択する機能論理36
16と、TAG3602の情報により命令選択機能論理
3616を制御するシーケンサ3603とを備えてい
る。
【0149】4つの命令を並列処理できる場合、第1〜
第4命令レジスタ3604〜3607から、EP1〜4
命令レジスタ3608〜3611を通して、EP1〜4
演算ユニット3612〜3615で、それら4つの命令
の処理を実行する。
【0150】4つの命令の中に分岐命令があるとき、分
岐命令がEP4演算ユニットに来るように、命令選択機
能論理3616を制御する。
【0151】図39は、命令順序中の分岐命令の位置と
演算器との関係を示す図である。この図39で示すよう
に、分岐命令の位置が第4命令に来ると、最も効率的に
並列処理できる。命令を実行する前にコンパイラ等によ
り分岐命令の位置が第4命令に来るように命令コードを
スケジューリングすると、効率的に並列処理でき性能が
向上する。
【0152】4つの命令の中に複数サイクルで実行され
る命令があるときも、分岐命令と同様に制御する。
【0153】以上の処理により、分岐命令や複数サイク
ルで実行される命令を実行する機能論理は、EP4演算
ユニットにだけ構成すればよく、ハードウエアをほとん
ど増加させないで、効率良く並列処理できるスーパース
カラ型マイクロプロセッサが得られる。
【0154】より一般的に述べれば、4つの演算器の機
能構成の関係は以下のように表現される。
【0155】 EP1<EP2≦EP3≦EP4 つまり、EP1はEP2の機能論理の一部であり、 EP2はEP3の機能論理の一部または全部であり、 EP3はEP4の機能論理の一部または全部である。
【0156】このような関係を作ると、命令を選択する
機能論理の制御が簡単になる。
【0157】
【発明の効果】本発明によれば、複数命令を並列に処理
するマイクロプロセッサにおいて、分岐命令や複数サイ
クルで実行される命令が出現する命令順序と実行する演
算器の位置とを調整する手段を備えたことにより、ハー
ドウエアをほとんど増加させないで、分岐命令や複数サ
イクルで実行される命令を含むプログラムを効率良く並
列処理できるスーパースカラ型マイクロプロセッサが得
られる。
【図面の簡単な説明】
【図1】2命令を並列処理する本発明によるスーパース
カラ型マイクロプロセッサの全体構成および外部装置と
の接続関係を示すブロック図である。
【図2】本実施例のスーパースカラ型マイクロプロセッ
サで実行される命令セットの一例を示す図表である。
【図3】図1のスーパースカラ型マイクロプロセッサの
単体命令の動作を示す図表である。
【図4】整数演算データ処理ユニット116の構成の一
例を示すブロック図である。
【図5】2つの命令のペアが並列処理される例のタイム
チャートである。
【図6】整数演算系命令を連続して処理する図5のタイ
ムチャートを書き直した簡単なパイプラインフローであ
る。
【図7】第1命令としてLOAD命令,STORE命
令、第2命令として整数演算命令を連続して処理する場
合のパイプラインフローチャートである。
【図8】図1の実施例のLOAD(1),ADD(2),AD
D(3),LOAD(4),ADD(5),ADD(6)というプロ
グラムの処理を示すパイプラインフローチャートであ
る。
【図9】図8において、各マシンサイクルごとに、命令
がどの演算器で実行されたかを簡単に表わした図表であ
る。
【図10】本実施例における命令フェッチユニット10
1の構成の一例を示すブロック図である。
【図11】SQF850とこれをマスクする制御信号T
AOとの関係、EP1命令レジスタ808およびEP2
命令レジスタ809への命令の振り分け、それぞれの命
令の有効無効をまとめてに示す図表である。
【図12】並列処理とシーケンシャル処理の混在したプ
ログラムのEP1命令とEP2命令とがどのように処理
されるかを示す図である。
【図13】並列処理可能か否かをチェックする機能MD
P805が判定する命令の依存関係の一例を示す図表で
ある。
【図14】分岐命令のパイプラインフローチャートであ
る。
【図15】第1命令に分岐命令BAがある場合の動作を
示すパイプラインフローチャートである。
【図16】第1命令に分岐命令BAがある場合の動作を
示すパイプラインフローチャートである。
【図17】第2命令および第1命令に分岐命令がある場
合の動作を示すパイプラインフローチャートである。
【図18】第2命令および第1命令に分岐命令がある場
合の動作を示すパイプラインフローチャートである。
【図19】条件分岐命令を含むプログラムである。
【図20】分岐命令でTAKENを予測した場合の動作
を示すパイプラインフローチャートである。
【図21】分岐命令でTAKENを予測した場合の動作
を示すパイプラインフローチャートである。
【図22】分岐命令でNOTTAKENを予測した場合
の動作を示すパイプラインフローチャートである。
【図23】EP1命令レジスタ808およびEP2命令
レジスタ809とフローティングデータ処理部分との関
係について示す図である。
【図24】FADD命令とFMUL命令とを並列かつ連
続的に処理する例を示すパイプラインフローチャートで
ある。
【図25】フローテング演算命令列を実行するときの動
作を示すパイプラインフローチャートである。
【図26】複数サイクル実行命令を含む命令セットを持
つスーパースカラ型マイクロプロセッサの並列処理を示
すパイプラインフローチャートである。
【図27】FMUL(2)の演算結果をFADD(3)で入力
情報として使用する場合を示している。
【図28】図27の処理の様子をマシンサイクルごとに
わかりやすく示す図である。
【図29】LOAD命令でロードしたデータをすぐ次の
命令が取り込む例を示す図である。
【図30】本実施例のスーパースカラ型マイクロプロセ
ッサの整数レジスタユニット111が持っているデータ
バイパスを示す図である。
【図31】パイプライン制御ユニット106を更に詳細
に示すブロック図である。
【図32】さらに別のパイプライン制御の具体的な例を
示す図である。
【図33】このプログラムを先程の制御方式に合わせた
動作として簡単に記述した図である。
【図34】別のサイクル間のレジスタ競合ケースのパイ
プラインフローおよびその動作を説明するための図を示
す。図32のプログラムを例に採り、その具体的な動作
を説明する図である。
【図35】積和命令と並列処理とを説明する図である。
代表的な命令の命令フォーマットを示す。
【図36】図10の命令フェッチユニット101の一部
を示す図である。
【図37】命令フェッチユニット内のソースフィールド
選択機能のブロック図を示す。
【図38】4命令を並列処理するスーパースカラ型マイ
クロプロセッサの実施例の構成を示すブロック図であ
る。
【図39】命令順序中の分岐命令の位置と演算器との関
係を示す図である。
【符号の説明】
101 命令フェッチユニット 102 プログラムカウンタ制御ユニット 103 EP1制御ユニット 105 EP2制御ユニット 104 ステータス制御ユニット 107 フローティング加算制御ユニット 108 フローティング乗算制御ユニット 106 パイプライン制御ユニット 116 整数演算データ処理ユニット 117 フローティングデータ処理ユニット 109 オペランドフェッチユニット 116 整数演算データ処理ユニット 110 EP1演算器 112 EP2演算器 111 整数レジスタユニット 117 フローティングデータ処理ユニット 114 フローティング加算器 115 フローティング乗算器 113 フローティングレジスタユニット 150 命令アドレスのバスであるBCA 151 2命令を並列に処理する初めの命令である第1
命令を各制御ユニットに送るEP1オペコードバス 152 2命令を並列に処理する後の命令である第2命
令を各制御ユニットに送るEP2オペコードバス 169 オペランドッフェッチアドレスのバスであるB
DA 170 オペランドデータを各データ処理ユニットに送
るためのバスであるBMW 801 命令キャッシュメモリ 806 命令キャッシュコントローラ 805 2命令並列処理可能か否かを検出するMDP 808 EP1命令レジスタ 809 EP2命令レジスタ 810 命令の実行をスケジューリングするシーケンサ 802 アドレスレジスタ 803 キャッシュメモリ 804 それぞれの2つの命令の組に付加された情報T
AG 806 キャッシュメモリの出力レジスタである第1命
令レジスタ 807 キャッシュメモリの出力レジスタである第2命
令レジスタ 850 命令とともに読み出されるSQF 851 シーケンサからの制御信号であるTAO 852 キャッシュの出力レジスタを制御するMCCR
───────────────────────────────────────────────────── フロントページの続き (72)発明者 神 健治 神奈川県秦野市堀山下1番地 株式会社 日立製作所 神奈川工場内 (72)発明者 斉藤 拡二 神奈川県秦野市堀山下1番地 株式会社 日立製作所 神奈川工場内 (56)参考文献 特開 平4−238537(JP,A) 特開 平3−34024(JP,A) 特開 平4−205625(JP,A) 特開 平4−328636(JP,A) 特開 平3−141429(JP,A) 特開 平4−308930(JP,A) 特開 平4−96132(JP,A) 特開 平3−282958(JP,A) 特開 平4−54638(JP,A) 特開 平3−263127(JP,A) 特開 平5−341995(JP,A) 特開 平5−20067(JP,A) 特開 平2−130635(JP,A) 特開 平2−103634(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/38

Claims (11)

    (57)【特許請求の範囲】
  1. 【請求項1】 連続するN個の命令を読み出す命令読み
    出し手段と、読み出された前記N個の命令を並列処理可
    能か否かを検出する並列処理検出手段と、読み出された
    前記N個の命令を並列に実行するN個の演算器とを含む
    マイクロプロセッサにおいて、 命令の順番に対応してN番目の前記演算器のみが分岐命
    令および後続命令とは並列処理できない命令を実行する
    機能論理を持ち、 読み出された前記N個の命令順序中の最初の分岐命令ま
    たは最初の後続命令とは並列処理できない命令(k番目)
    を前記並列処理可否の検出と並行して検出する命令検出
    手段と、 読み出された前記N個の命令が並列処理可能な場合、前
    記N個の命令を1からN番目までの演算器で並列に実行
    するように実行順序を制御し、読み出された前記N個の
    命令のk番目に分岐命令または後続命令とは並列処理で
    きない命令を含む場合、1からkまでの命令を(N−k
    +1)からN番目までの演算器で並列に実行するように
    実行順序を変更する機能論理手段とを備えたことを特徴
    とするマイクロプロセッサ。
  2. 【請求項2】 請求項1に記載のマイクロプロセッサに
    おいて、読み出された前記N個の命令に分岐命令が含まれる
    合、前記N番目の演算器の演算結果を次に読み出すべき
    命令のアドレスとして切換える手段を設けたことを特徴
    とするマイクロプロセッサ。
  3. 【請求項3】 連続する2個の命令を読み出す命令読み
    出し手段と、読み出された前記2個の命令を並列処理可
    能か否かを検出する並列処理検出手段と、読み出された
    前記2個の命令を並列に実行する2個の演算器とを含む
    マイクロプロセッサにおいて、 2番目の前記演算器のみが分岐命令および後続命令とは
    並列処理できない命令を実行する機能論理を持ち、 読み出された前記2個の命令順序中の第1命令が分岐命
    令または後続命令とは並列処理できない命令か否かを前
    記並列処理可否の検出と並行して検出する命令検出手段
    と、 読み出された前記2個の命令が並列処理可能な場合、前
    記2個の命令を1,2番目の演算器で並列に実行するよ
    うに実行順序を制御し、読み出された前記2個の命令の
    k(k=1,2)番目に分岐命令または後続命令とは並列
    処理できない命令を含む場合、当該分岐命令または後続
    命令とは並列処理できない命令を2番目の演算器で実行
    するように実行順序を変更する機能論理手段とを備えた
    ことを特徴とするマイクロプロセッサ。
  4. 【請求項4】 請求項3に記載のマイクロプロセッサに
    おいて、読み出された前記2個の命令に分岐命令が含まれる
    合、前記2番目の演算器の演算結果を次に読み出すべき
    命令のアドレスとして切換える手段を設けたことを特徴
    とするマイクロプロセッサ。
  5. 【請求項5】 連続するN個の命令を読み出す命令読み
    出し手段と、読み出された前記N個の命令を並列処理可
    能か否かを検出する並列処理検出手段と、読み出された
    前記N個の命令を並列に実行するN個の演算器とを含む
    マイクロプロセッサにおいて、 命令の順番に対応してN番目の前記演算器のみが複数サ
    イクルで実行される命令を実行する機能論理を持ち、 読み出された前記N個の命令順序中の最初の複数サイク
    ルで実行される命令(p番目)を前記並列処理可否の検出
    と並行して検出する複数サイクル実行命令検出手段と、 読み出された前記N個の命令が並列処理可能な場合、前
    記N個の命令を1からN番目までの演算器で並列に実行
    するように実行順序を制御し、読み出された前記N個の
    命令のp番目に複数サイクルで実行される命令を含む場
    合、1からpまでの命令を(N−p+1)からN番目まで
    の演算器で並列に実行するように実行順序を変更する機
    能論理手段とを備えたことを特徴とするマイクロプロセ
    ッサ。
  6. 【請求項6】 連続する2個の命令を読み出す命令読み
    出し手段と、読み出された前記2個の命令を並列処理可
    能か否かを検出する並列処理検出手段と、読み出された
    前記2個の命令を並列に実行する2個の演算器とを含む
    マイクロプロセッサにおいて、 2番目の前記演算器のみが複数サイクルで実行される命
    令を実行する機能論理を持ち、 読み出された前記1個の命令順序中の第1の命令が最初
    の複数サイクルで実行される命令か否かを前記並列処理
    可否の検出と並行して検出する複数サイクル実行命令検
    出手段と、 読み出された前記2個の命令が並列処理可能な場合、前
    記2個の命令を1,2番目の演算器で並列に実行するよ
    うに実行順序を制御し、読み出された前記2個の命令の
    p(p=1,2)番目に複数サイクルで実行される命令を
    含む場合、当該命令を2番目の演算器で実行するように
    実行順序を変更する機能論理手段とを備えたことを特徴
    とするマイクロプロセッサ。
  7. 【請求項7】 連続するN個の命令を読み出す命令読み
    出し手段と、読み出された前記N個の命令を並列処理可
    能か否かを検出する並列処理検出手段と、読み出された
    前記N個の命令を並列に実行するN個の演算器とを含む
    マイクロプロセッサにおいて、 命令の順番に対応してN番目の前記演算器のみが分岐命
    令および後続命令とは並列処理できない命令および複数
    サイクルで実行される命令を実行する機能論理を持ち、 読み出された前記N個の命令順序中の最初の分岐命令
    (k番目)または最初の後続命令とは並列処理できない命
    令(k番目)または最初の複数サイクルで実行される命令
    (p番目)を前記並列処理可否の検出と並行して検出する
    命令検出手段と、 読み出された前記N個の命令が並列処理可能な場合、前
    記N個の命令を1からN番目までの演算器で並列に実行
    するように実行順序を制御し、読み出された前記N個の
    命令のk番目に分岐命令または後続命令とは並列処理で
    きない命令を含み、かつ、読み出された前記N個の命令
    のp番目に複数サイクルで実行される命令をも含む時は
    k<pの場合、1からkまでの命令を(N−k+1)から
    N番目までの演算器で並列に実行するように実行順序を
    制御し、読み出された前記N個の命令のp番目に複数サ
    イクルで実行される命令を含み、かつ、読み出された前
    記N個の命令のk番目に分岐命令または後続命令とは並
    列処理できない命令をも含む時はp<kの場合、1から
    pまでの命令を(N−p+1)からN番目までの演算器で
    並列に実行するように実行順序を変更する機能論理手段
    とを備えたことを特徴とするマイクロプロセッサ。
  8. 【請求項8】 連続する2個の命令を読み出す命令読み
    出し手段と、読み出された前記2個の命令を並列処理可
    能か否かを検出する並列処理検出手段と、読み出された
    前記2個の命令を並列に実行する2個の演算器とを含む
    マイクロプロセッサにおいて、 2番目の前記演算器のみが分岐命令および後続命令とは
    並列処理できない命令および複数サイクルで実行される
    命令を実行する機能論理を持ち、 読み出された前記2個の命令順序中の第1命令が分岐命
    令または後続命令とは並列処理できない命令か否かまた
    は最初の複数サイクルで実行される命令か否かを前記並
    列処理可否の検出と並行して検出する命令検出手段と、 読み出された前記2個の命令が並列処理可能な場合、前
    記2個の命令を1,2番目の演算器で並列に実行するよ
    うに実行順序を制御し、読み出された前記2個の命令の
    k(k=1,2)番目に分岐命令または後続命令とは並列
    処理できない命令を含み、かつ、読み出された前記N個
    の命令のp番目に複数サイクルで実行される命令をも含
    む時はk<pの場合、当該分岐命令を2番目の演算器で
    実行するように実行順序を制御し、読み出された前記2
    個の命令のp(p=1,2)番目に複数サイクルで実行さ
    れる命令を含み、かつ、読み出された前記N個の命令の
    k番目に分岐命令または後続命令とは並列処理できない
    命令をも含む時はp<kの場合、当該命令を2番目の演
    算器で実行するように実行順序を変更する機能論理手段
    とを備えたことを特徴とするマイクロプロセッサ。
  9. 【請求項9】 連続するN個の命令を読み出す命令読み
    出し手段と、読み出された前記N個の命令を並列処理可
    能か否かを検出する並列処理検出手段と、読み出された
    前記N個の命令を並列に実行するN個の演算器とを含む
    マイクロプロセッサにおいて、 命令の順番に対応してn(n≠1)番目からN番目までの
    演算器が分岐命令および後続命令とは並列処理できない
    命令を実行する機能論理を持ち、 読み出された前記N個の命令順序中の最初の分岐命令
    (k番目)または最初の後続命令とは並列処理できない命
    令(k番目)を前記並列処理可否の検出と並行して検出す
    る命令検出手段と、 読み出された前記N個の命令が並列処理可能な場合、前
    記N個の命令を1からN番目までの演算器で並列に実行
    するように実行順序を制御し、読み出された前記N個の
    命令のk番目に分岐命令または後続命令とは並列処理で
    きない命令を含む場合、1からk−1番目の命令は順序
    通りの演算器で実行しk番目の命令をn番目以降の演算
    器で並列に実行するように実行順序を変更する機能論理
    手段とを備えたことを特徴とするマイクロプロセッサ。
  10. 【請求項10】 連続するN個の命令を読み出す命令読
    み出し手段と、読み出された前記N個の命令を並列処理
    可能か否かを検出する並列処理検出手段と、読み出され
    た前記N個の命令を並列に実行するN個の演算器とを含
    むマイクロプロセッサにおいて、 命令の順番に対応してn(n≠1)番目からN番目までの
    演算器が複数サイクルで実行される命令を実行する機能
    論理を持ち、 読み出された前記N個の命令順序中の最初の複数サイク
    ルで実行される命令(p番目)を前記並列処理可否の検出
    と並行して検出する複数サイクル実行命令検出手段と、 読み出された前記N個の命令が並列処理可能な場合、前
    記N個の命令を1からN番目までの演算器で並列に実行
    するように実行順序を制御し、読み出された前記N個の
    命令のp番目に複数サイクルで実行される命令を含む場
    合、1からp−1番目の命令は順序通りの演算器で実行
    しp番目の命令をn番目以降の演算器で並列に実行する
    ように実行順序を変更する機能論理手段とを備えたこと
    を特徴とするマイクロプロセッサ。
  11. 【請求項11】 連続するN個の命令を読み出す命令読
    み出し手段と、読み出された前記N個の命令を並列処理
    可能か否かを検出する並列処理検出手段と、読み出され
    た前記N個の命令を並列に実行するN個の演算器とを含
    むマイクロプロセッサにおいて、 命令の順番に対応してn(n≠1)番目からN番目までの
    演算器が分岐命令および後続命令とは並列処理できない
    命令および複数サイクルで実行される命令を実 行する機
    能論理を持ち、 読み出された前記N個の命令順序中の最初の分岐命令
    (k番目)または最初の後続命令とは並列処理できない命
    令(k番目)または最初の複数サイクルで実行される命令
    (p番目)を前記並列処理可否の検出と並行して検出する
    命令検出手段と、 読み出された前記N個の命令が並列処理可能な場合、前
    記N個の命令を1からN番目までの演算器で並列に実行
    するように実行順序を制御し、読み出された前記N個の
    命令のk番目に分岐命令または後続命令とは並列処理で
    きない命令を含み、かつ、読み出された前記N個の命令
    のp番目に複数サイクルで実行される命令をも含む時は
    k<pの場合、1からk−1番目の命令は順序通りの演
    算器で実行しk番目の命令をn番目以降の演算器で並列
    に実行するように実行順序を変更し、読み出された前記
    N個の命令のp番目に複数サイクルで実行される命令を
    含み、かつ、読み出された前記N個の命令のk番目に分
    岐命令または後続命令とは並列処理できない命令をも含
    む時はp<kの場合、1からp−1番目の命令は順序通
    りの演算器で実行しp番目の命令をn番目以降の演算器
    で並列に実行するように実行順序を変更する機能論理手
    段とを備えたことを特徴とするマイクロプロセッサ。
JP00779593A 1993-01-20 1993-01-20 マイクロプロセッサ Expired - Fee Related JP3182591B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP00779593A JP3182591B2 (ja) 1993-01-20 1993-01-20 マイクロプロセッサ
GB9401050A GB2274527B (en) 1993-01-20 1994-01-20 Microprocessor
US08/717,143 US5713012A (en) 1993-01-20 1996-09-20 Microprocessor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP00779593A JP3182591B2 (ja) 1993-01-20 1993-01-20 マイクロプロセッサ

Publications (2)

Publication Number Publication Date
JPH06214785A JPH06214785A (ja) 1994-08-05
JP3182591B2 true JP3182591B2 (ja) 2001-07-03

Family

ID=11675585

Family Applications (1)

Application Number Title Priority Date Filing Date
JP00779593A Expired - Fee Related JP3182591B2 (ja) 1993-01-20 1993-01-20 マイクロプロセッサ

Country Status (3)

Country Link
US (1) US5713012A (ja)
JP (1) JP3182591B2 (ja)
GB (1) GB2274527B (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5991884A (en) * 1996-09-30 1999-11-23 Intel Corporation Method for reducing peak power in dispatching instructions to multiple execution units
US6237077B1 (en) * 1997-10-13 2001-05-22 Idea Corporation Instruction template for efficient processing clustered branch instructions
US6233690B1 (en) * 1998-09-17 2001-05-15 Intel Corporation Mechanism for saving power on long latency stalls
US6442672B1 (en) * 1998-09-30 2002-08-27 Conexant Systems, Inc. Method for dynamic allocation and efficient sharing of functional unit datapaths
WO2000078120A2 (en) * 1999-06-21 2000-12-28 Bops Incorporated Methods and apparatus for initiating and resynchronizing multi-cycle simd instructions
CN110795903B (zh) * 2019-09-12 2023-08-15 中科寒武纪科技股份有限公司 指令处理方法、装置及相关产品

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3811114A (en) * 1973-01-11 1974-05-14 Honeywell Inf Systems Data processing system having an improved overlap instruction fetch and instruction execution feature
US3978452A (en) * 1974-02-28 1976-08-31 Burroughs Corporation System and method for concurrent and pipeline processing employing a data driven network
US4766566A (en) * 1986-08-18 1988-08-23 International Business Machines Corp. Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing
JP2810068B2 (ja) * 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
US5075840A (en) * 1989-01-13 1991-12-24 International Business Machines Corporation Tightly coupled multiprocessor instruction synchronization
EP0407911B1 (en) * 1989-07-07 1998-12-09 Hitachi, Ltd. Parallel processing apparatus and parallel processing method
US5303356A (en) * 1990-05-04 1994-04-12 International Business Machines Corporation System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag
US5197135A (en) * 1990-06-26 1993-03-23 International Business Machines Corporation Memory management for scalable compound instruction set machines with in-memory compounding
US5295249A (en) * 1990-05-04 1994-03-15 International Business Machines Corporation Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel
CA2038264C (en) * 1990-06-26 1995-06-27 Richard James Eickemeyer In-memory preprocessor for a scalable compound instruction set machine processor
US5214736A (en) * 1990-07-16 1993-05-25 Sumitomo Electric Industries, Ltd. Optical transmission line having a core of a non-linear optical material coated with an improved cladding
JP2834292B2 (ja) * 1990-08-15 1998-12-09 株式会社日立製作所 データ・プロセッサ
US5287467A (en) * 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
US5337415A (en) * 1992-12-04 1994-08-09 Hewlett-Packard Company Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency

Also Published As

Publication number Publication date
JPH06214785A (ja) 1994-08-05
GB2274527A (en) 1994-07-27
GB2274527B (en) 1997-07-23
US5713012A (en) 1998-01-27
GB9401050D0 (en) 1994-03-16

Similar Documents

Publication Publication Date Title
US5163139A (en) Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions
US5509130A (en) Method and apparatus for grouping multiple instructions, issuing grouped instructions simultaneously, and executing grouped instructions in a pipelined processor
US6327650B1 (en) Pipelined multiprocessing with upstream processor concurrently writing to local register and to register of downstream processor
EP0368332B1 (en) Pipeline data processor
EP1550089B1 (en) Method and apparatus for token triggered multithreading
US5404552A (en) Pipeline risc processing unit with improved efficiency when handling data dependency
US6865666B2 (en) Data processing device
JP3745039B2 (ja) 遅延命令を有するマイクロプロセッサ
JPH0926878A (ja) データ処理装置
US6145074A (en) Selecting register or previous instruction result bypass as source operand path based on bypass specifier field in succeeding instruction
JP2620511B2 (ja) データ・プロセッサ
JP2535252B2 (ja) 並列処理装置
JPH10222368A (ja) データ処理装置
CN112182999B (zh) 一种基于mips32指令系统的三级流水线cpu设计方法
JP3182591B2 (ja) マイクロプロセッサ
US5768553A (en) Microprocessor using an instruction field to define DSP instructions
JP2874351B2 (ja) 並列パイプライン命令処理装置
US5737562A (en) CPU pipeline having queuing stage to facilitate branch instructions
GB2380283A (en) A processing arrangement comprising a special purpose and a general purpose processing unit and means for supplying an instruction to cooperate to these units
WO2001061469A2 (en) Apparatus and method for reducing register write traffic in processors with exception routines
RU2816094C1 (ru) Vliw-процессор с дополнительным подготовительным конвейером и предсказателем перехода
JP3915019B2 (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
JP2636821B2 (ja) 並列処理装置
JP2000029696A (ja) プロセッサおよびパイプライン処理制御方法
JP3102399B2 (ja) データ処理装置及び方法

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees