JPH03218523A - データプロセッサ - Google Patents
データプロセッサInfo
- Publication number
- JPH03218523A JPH03218523A JP2279006A JP27900690A JPH03218523A JP H03218523 A JPH03218523 A JP H03218523A JP 2279006 A JP2279006 A JP 2279006A JP 27900690 A JP27900690 A JP 27900690A JP H03218523 A JPH03218523 A JP H03218523A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- register
- instructions
- output
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000008054 signal transmission Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 16
- 238000000034 method Methods 0.000 description 13
- 230000003111 delayed effect Effects 0.000 description 5
- 238000003672 processing method Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 101100268594 Arabidopsis thaliana ABCB6 gene Proteins 0.000 description 1
- 101001052394 Homo sapiens [F-actin]-monooxygenase MICAL1 Proteins 0.000 description 1
- 102100024306 [F-actin]-monooxygenase MICAL1 Human genes 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明は主にマイクロプロセッサ(MPU)の如きデー
タプロセッサに係り、特に、32ビットRISCプロセ
ッサの2命令同時実行の処理方式に関する。
タプロセッサに係り、特に、32ビットRISCプロセ
ッサの2命令同時実行の処理方式に関する。
本発明に関係する公知例としては, rMIPS RI
SCARCHITECTUREJ : 1 9 8 8
, Prentice−Hall, ppA−39お
よびA−58、r 1 9 8 9 IEEE In
ternationalSolid−State Ci
rcuits Conference DIGEST
OFTECI{NICAL PAPERSJ,PP54
−55および杉原英文「100万トランジスタを集積し
科学技術計算、ビジュアノレ化をねらうマイクロプロセ
ッサ80860J 日経エレクトロニクス 1 9 8
9.4.3(n o.470)ppl99−209,
を挙げることができる。
SCARCHITECTUREJ : 1 9 8 8
, Prentice−Hall, ppA−39お
よびA−58、r 1 9 8 9 IEEE In
ternationalSolid−State Ci
rcuits Conference DIGEST
OFTECI{NICAL PAPERSJ,PP54
−55および杉原英文「100万トランジスタを集積し
科学技術計算、ビジュアノレ化をねらうマイクロプロセ
ッサ80860J 日経エレクトロニクス 1 9 8
9.4.3(n o.470)ppl99−209,
を挙げることができる。
最近の高性能なプロセッサシステムでは、RISC(R
educed Instruction Set Co
mputer)アーキテクチャを採用している。このR
ISCプロセッサでは、命令の長さは32ビットに固定
されている。
educed Instruction Set Co
mputer)アーキテクチャを採用している。このR
ISCプロセッサでは、命令の長さは32ビットに固定
されている。
従って、32ビット長のイミディエイトデータ(即値)
を扱う場合、2つの命令に分解して実行する必要がある
。例えば以下のようになる。
を扱う場合、2つの命令に分解して実行する必要がある
。例えば以下のようになる。
LUI rt, <upper 16
bits>ORI rt, rt, <lotier
16 bits>ここで、第1の命令はロード・
アッパー・イミデイエイト(Load Upper I
mmediate)命令で、命令中に示された16ビッ
トのイミディエイトデータを左に16ビット分シフトし
て、32ビットのデータにしたものをt番目のレジスタ
rtに格納する命令である。
bits>ORI rt, rt, <lotier
16 bits>ここで、第1の命令はロード・
アッパー・イミデイエイト(Load Upper I
mmediate)命令で、命令中に示された16ビッ
トのイミディエイトデータを左に16ビット分シフトし
て、32ビットのデータにしたものをt番目のレジスタ
rtに格納する命令である。
第2の命令はオア・イミデイエイト(OrImmedi
ate)命令であって、命令中に示された16ビットの
イミディエイトデータの上位に16ビット分の「0」を
拡張したものとt番目のレジスタrtの内容の論理和を
レジスタrtに格納する命令である。
ate)命令であって、命令中に示された16ビットの
イミディエイトデータの上位に16ビット分の「0」を
拡張したものとt番目のレジスタrtの内容の論理和を
レジスタrtに格納する命令である。
上記2命令の実行の結果、レジスタrtに32ビット長
のイミディエイトデータをセットすることができる。
のイミディエイトデータをセットすることができる。
このようなプロセッサの仕様について、米国ミップス社
の32ビットマイクロプロセッサR2000のアーキテ
クチャマニュアルに記載されている。
の32ビットマイクロプロセッサR2000のアーキテ
クチャマニュアルに記載されている。
以上述べてきたように、従来のRISCプロセッサでは
,32ビットのイミディエイトデータを扱う場合、2つ
の命令に分け、実行には2サイクルを要していた。
,32ビットのイミディエイトデータを扱う場合、2つ
の命令に分け、実行には2サイクルを要していた。
一方、最近では,バスのデータ幅を64ビット化して、
バスのバンド幅拡張による処理性能の向上を目指したプ
ロセッサが発表されている。例えば、1989年のIS
SCC(IEEE InternationalSol
id−State Circuits Confere
nce)ではインテル社らが64ビットデータバスを持
つマイクロプロセッサを発表している。
バスのバンド幅拡張による処理性能の向上を目指したプ
ロセッサが発表されている。例えば、1989年のIS
SCC(IEEE InternationalSol
id−State Circuits Confere
nce)ではインテル社らが64ビットデータバスを持
つマイクロプロセッサを発表している。
しかし、上記のマイクロプロセッサにおいても、コード
効率等を考慮して、命令のフォーマットは32ビットに
固定されている。したがって、64ビット分の命令を1
度にフェッチできるにもかかわらず、32ビット長のイ
ミディエイトデータは、従来通り、2つの命令に分割さ
れ、2サイクルを要して実行されている。
効率等を考慮して、命令のフォーマットは32ビットに
固定されている。したがって、64ビット分の命令を1
度にフェッチできるにもかかわらず、32ビット長のイ
ミディエイトデータは、従来通り、2つの命令に分割さ
れ、2サイクルを要して実行されている。
また、上記インテル社のマイクロプロセッサでは、64
ビットバスを利用して1サイクルで2つの命令をフェッ
チし、それらの命令が整数演算命令と浮動小数点演算命
令の組合せならば,それらを同時に実行する処理方式を
とっている。これは、整数演算命令では整数の汎用レジ
スタを操作し、浮動小数点命令では浮動小数点レジスタ
を操作するので、これらの命令の間では命令間の依存関
係がないことを利用している。従って、上記の制御手法
は、整数演算命令を2つ同時に実行する処理方式には適
用できない。
ビットバスを利用して1サイクルで2つの命令をフェッ
チし、それらの命令が整数演算命令と浮動小数点演算命
令の組合せならば,それらを同時に実行する処理方式を
とっている。これは、整数演算命令では整数の汎用レジ
スタを操作し、浮動小数点命令では浮動小数点レジスタ
を操作するので、これらの命令の間では命令間の依存関
係がないことを利用している。従って、上記の制御手法
は、整数演算命令を2つ同時に実行する処理方式には適
用できない。
従って、本発明の目的は、命令間の依存関係を考慮しつ
つ、2つの命令を同時に実行することの可能なデータプ
ロセッサを提供することにある。
つ、2つの命令を同時に実行することの可能なデータプ
ロセッサを提供することにある。
〔課題を解決するための手段]
本願において開示される発明のうち、代表的な実施例に
よるマイクロプロセッサの概要は下記の通りである。
よるマイクロプロセッサの概要は下記の通りである。
すなわち、本発明の代表的な実施例によるマイクロプロ
セッサは、 (1)所定のビット幅(32ビット)の命令長の第1及
び第2の命令をメモリからフェッチし、上記第1及び第
2の命令を並行に出力する命令フェッチユニット(64
0)と、 (2)その入力に上記命令フェッチユニット(640)
から出力される上記第1の命令のオペレーションコード
が供給される第1の命令デコーダ(644)と, (3)その入力に上記命令フェッチユニット(640)
から出力される上記第2の命令のオペレーションコード
が供給される第2の命令デコーダ(645)と、 (4)少なくともレジスタファイル(650)、演算器
(651)およびシフタ(652)を含み、上記第1の
命令デコーダ(644)のデコード結果および上記第2
の命令デコーダ(645)のデコード結果の少なくとも
いずれかによって制御される命令実行ユニットと、 (5)上記命令フェッチユニット(640)から出力さ
れる上記第1の命令のデスティネーションフィールド(
1 1 2)の情報と上記命令フェッチユニット(64
0)から出力される上記第2の命令の第1ソースフィー
ルド(1 2 3)の情報とを比較する第1の比較器(
1 3 2)と、(6)上記命令フェッチユニット(6
40)から出力される上記第1の命令のデスティネーシ
ョンフィールド(I 1 2)の情報と上記命令フェッ
チユニット(640)から出力される上記第2の命令の
デスティネーションフィールド(122)の情報とを比
較する第2の比較器(1 3 1)を具備してなり, 上記レジスタファイル(650)は複数のレジスタ(R
O,Rl,R2,R3・・・R31)からなり、上記第
1の比較器(1 3 2)の出力と上記第2の比較器(
131)の出力とによる制御条件に従って上記第1の命
令のイミディエイトデータ(114)に関係した上記シ
フタ(652)の上記出力を上記レジスタファイル(6
50)をバイパスして上記演算器(651)の入力(6
56)に供給するための信号伝達経路をさらに具備する
ものである(第1図(a)参照)。
セッサは、 (1)所定のビット幅(32ビット)の命令長の第1及
び第2の命令をメモリからフェッチし、上記第1及び第
2の命令を並行に出力する命令フェッチユニット(64
0)と、 (2)その入力に上記命令フェッチユニット(640)
から出力される上記第1の命令のオペレーションコード
が供給される第1の命令デコーダ(644)と, (3)その入力に上記命令フェッチユニット(640)
から出力される上記第2の命令のオペレーションコード
が供給される第2の命令デコーダ(645)と、 (4)少なくともレジスタファイル(650)、演算器
(651)およびシフタ(652)を含み、上記第1の
命令デコーダ(644)のデコード結果および上記第2
の命令デコーダ(645)のデコード結果の少なくとも
いずれかによって制御される命令実行ユニットと、 (5)上記命令フェッチユニット(640)から出力さ
れる上記第1の命令のデスティネーションフィールド(
1 1 2)の情報と上記命令フェッチユニット(64
0)から出力される上記第2の命令の第1ソースフィー
ルド(1 2 3)の情報とを比較する第1の比較器(
1 3 2)と、(6)上記命令フェッチユニット(6
40)から出力される上記第1の命令のデスティネーシ
ョンフィールド(I 1 2)の情報と上記命令フェッ
チユニット(640)から出力される上記第2の命令の
デスティネーションフィールド(122)の情報とを比
較する第2の比較器(1 3 1)を具備してなり, 上記レジスタファイル(650)は複数のレジスタ(R
O,Rl,R2,R3・・・R31)からなり、上記第
1の比較器(1 3 2)の出力と上記第2の比較器(
131)の出力とによる制御条件に従って上記第1の命
令のイミディエイトデータ(114)に関係した上記シ
フタ(652)の上記出力を上記レジスタファイル(6
50)をバイパスして上記演算器(651)の入力(6
56)に供給するための信号伝達経路をさらに具備する
ものである(第1図(a)参照)。
1サイクルでメモリ(620)から第1と第2の命令が
命令フェッチユニット(640)によってフェッチされ
、このフェッチされた第1と第2の命令は第1と第2の
デコーダ(644,645)によってデコードされる。
命令フェッチユニット(640)によってフェッチされ
、このフェッチされた第1と第2の命令は第1と第2の
デコーダ(644,645)によってデコードされる。
第1と第2のデコーダ(644,645)のデコート結
果に従って、命令実行ユニット(6 5 0 ,651
,652)が制御される。
果に従って、命令実行ユニット(6 5 0 ,651
,652)が制御される。
上記レジスタファイル(650)をバイパスしてこの信
号伝達経路を介して上記シフタ(6 5 2)の上記出
力を上記演算器(651)の上記入力(656)に供給
する条件は、命令フェッチユニット(640)から出力
される第1の命令が演算器(651)と本来は無関係に
該第1の命令のイミディエイトデータ(114)に関係
したシフタ(6 5 2)の出力を該第1の命令のデス
ティネーションフィールド(112)の情報によって指
定されるレジスタファイル(650)中の選択されたひ
とつのレジスタ(R3)に本来はセットする命令(LU
I命令)であり,また命令フェッチユニット(640)
から出力される第2の命令が上記シフタ(652)と本
来は無関係に該第2の命令の第1ソースフィールド(1
2 3)の情報によって指定されるレジスタファイル
(6 5 0)中の選択されたひとつのレジスタ(R3
)の情報と該第2の命令の第2ソースフィールド(12
4)に関係した情報とを演算器(6 5 1)で処理し
該処理結果を該第2の命令のデスティネーションフィー
ルド(122)の情報によって指定されるレジスタファ
イル(650)中の選択されたひとつのレジスタ(R3
)にセットする命令である場合、第1の比較器(1 3
2)の両比較入力(112、123)が互いに一致す
ると言う条件である。
号伝達経路を介して上記シフタ(6 5 2)の上記出
力を上記演算器(651)の上記入力(656)に供給
する条件は、命令フェッチユニット(640)から出力
される第1の命令が演算器(651)と本来は無関係に
該第1の命令のイミディエイトデータ(114)に関係
したシフタ(6 5 2)の出力を該第1の命令のデス
ティネーションフィールド(112)の情報によって指
定されるレジスタファイル(650)中の選択されたひ
とつのレジスタ(R3)に本来はセットする命令(LU
I命令)であり,また命令フェッチユニット(640)
から出力される第2の命令が上記シフタ(652)と本
来は無関係に該第2の命令の第1ソースフィールド(1
2 3)の情報によって指定されるレジスタファイル
(6 5 0)中の選択されたひとつのレジスタ(R3
)の情報と該第2の命令の第2ソースフィールド(12
4)に関係した情報とを演算器(6 5 1)で処理し
該処理結果を該第2の命令のデスティネーションフィー
ルド(122)の情報によって指定されるレジスタファ
イル(650)中の選択されたひとつのレジスタ(R3
)にセットする命令である場合、第1の比較器(1 3
2)の両比較入力(112、123)が互いに一致す
ると言う条件である。
この条件では、第1の命令と第2の命令とは基本的に同
時実行されることができ、さらにレジスタ’7アイル(
650)をバイパスして第1の命令のイミディエイトデ
ータ(114)に関係したシフタ(6 5 2)の出力
が第2の命令の第1ソースフィールド(1 2 3)の
情報として高速に演算器(651)の入力(656)に
供給されることが可能となる。
時実行されることができ、さらにレジスタ’7アイル(
650)をバイパスして第1の命令のイミディエイトデ
ータ(114)に関係したシフタ(6 5 2)の出力
が第2の命令の第1ソースフィールド(1 2 3)の
情報として高速に演算器(651)の入力(656)に
供給されることが可能となる。
このようなレジスタファイル(650)をバイパスする
と言う手法を採用しないとすれば、レジスタファイル(
650)を構成するレジスタ(RO,Rl,R2,R3
・・・R31)の数が大きい場合に、シフタ(652)
の出力がレジスタファイル(650)を介して演算器(
651)の入力(656)に伝達される際の遅延時間は
大きなものとなってしまう。
と言う手法を採用しないとすれば、レジスタファイル(
650)を構成するレジスタ(RO,Rl,R2,R3
・・・R31)の数が大きい場合に、シフタ(652)
の出力がレジスタファイル(650)を介して演算器(
651)の入力(656)に伝達される際の遅延時間は
大きなものとなってしまう。
かかる遅延時間の低減の点でも、本発明の代表的な実施
例は好適なものである。
例は好適なものである。
第1の比較器(132)の両比較入力(112,123
)が互いに一致すると言う条件に加えて、また第2の比
較器(131)の両比較入力(112,122)が互い
に一致する条件(言い替えると,第1と第2の命令のデ
スティネーションフィールド(112,122)の両情
報さらには第2の命令の第1ソースフィールド(1 2
3)の情報カ互いに一致する場合)では、本来の通り
先行する第1の命令(LUI命令)によってシフタ(6
5 2)のデータをR3レジスタにセットしたとして
も、R3レジスタにセットされたこのデータは後続の第
2の命令(ORI命令)による演算器(6 5 1)の
処理結果データによって更新されてしまうので、先行す
る第1の命令(LUI命令)によるシフタ(6 5 2
)のデータのR3レジスタへのセットは無意味となるば
かりか、データ更新に無駄な時間を消費することとなる
。
)が互いに一致すると言う条件に加えて、また第2の比
較器(131)の両比較入力(112,122)が互い
に一致する条件(言い替えると,第1と第2の命令のデ
スティネーションフィールド(112,122)の両情
報さらには第2の命令の第1ソースフィールド(1 2
3)の情報カ互いに一致する場合)では、本来の通り
先行する第1の命令(LUI命令)によってシフタ(6
5 2)のデータをR3レジスタにセットしたとして
も、R3レジスタにセットされたこのデータは後続の第
2の命令(ORI命令)による演算器(6 5 1)の
処理結果データによって更新されてしまうので、先行す
る第1の命令(LUI命令)によるシフタ(6 5 2
)のデータのR3レジスタへのセットは無意味となるば
かりか、データ更新に無駄な時間を消費することとなる
。
これに対して本発明の代表的な実施例によれば、第1の
比較器(132)の両比較入力(1 1 2 , 12
3)が互いに一致すると言う条件に加えて、また第2の
比較器(131)の両比較入力(112,122)が互
いに一致する条件では、第1の命令であるLUI命令に
よるバレルシフタ652のシフト結果は,レジスタファ
イル650にセットされることなく,第2の命令である
ORI命令を実行するための演算器651の一方の入力
(656)に直接かつ高速に供給される。一方、演算器
651の他方の入力(655)には第2の命令のイミデ
ィエイトデータ124の32ビット拡張データが供給さ
れる。かくして、第1の命令であるLUI命令と第2の
命令であるORI命令の2つの命令を1サイクルで高速
に実行することができる。
比較器(132)の両比較入力(1 1 2 , 12
3)が互いに一致すると言う条件に加えて、また第2の
比較器(131)の両比較入力(112,122)が互
いに一致する条件では、第1の命令であるLUI命令に
よるバレルシフタ652のシフト結果は,レジスタファ
イル650にセットされることなく,第2の命令である
ORI命令を実行するための演算器651の一方の入力
(656)に直接かつ高速に供給される。一方、演算器
651の他方の入力(655)には第2の命令のイミデ
ィエイトデータ124の32ビット拡張データが供給さ
れる。かくして、第1の命令であるLUI命令と第2の
命令であるORI命令の2つの命令を1サイクルで高速
に実行することができる。
本発明のその他の目的と特徴は、以下の実施例の説明か
ら明らかとなろう。
ら明らかとなろう。
以下、本発明の一実施例を図面に、沿って説明する。
データプロセッサの
第6図は本発明の一実施例であるデータプロセッサのブ
ロック図である。このデータプロセッサの基本構成は大
きく分類すると,プロセッサ部610,プログラムメモ
リ620、及び、データメモリ630から構成されてい
る。
ロック図である。このデータプロセッサの基本構成は大
きく分類すると,プロセッサ部610,プログラムメモ
リ620、及び、データメモリ630から構成されてい
る。
プログラムメモリ620は、命令アドレスバス621及
び命令データバス622によって、プロセッサ610と
接続されている。
び命令データバス622によって、プロセッサ610と
接続されている。
命令アドレスバス621は32ビット幅で、4G(ギガ
)バイトまでアドレッシング可能である。
)バイトまでアドレッシング可能である。
命令データバス622は64ビット幅で、1回の転送で
2命令を同時にプログラムメモリ620からフエツチさ
れることができる。
2命令を同時にプログラムメモリ620からフエツチさ
れることができる。
データメモリ630は,オペランドアドレスバス631
及びオペランドデータバス632によって、プロセッサ
610と接続されている.オペランドアドレスバス63
1は、32ビット幅で4G(ギガ)バイトまでアドレッ
シング可能である。
及びオペランドデータバス632によって、プロセッサ
610と接続されている.オペランドアドレスバス63
1は、32ビット幅で4G(ギガ)バイトまでアドレッ
シング可能である。
オペランドデータバス632は、32ビット幅で、1回
の転送で1ワードのデータがデータメモリ630から又
はデータメモリ630にフェッチ又はストアされること
ができる。
の転送で1ワードのデータがデータメモリ630から又
はデータメモリ630にフェッチ又はストアされること
ができる。
また、プログラムメモリ620およびデータメモリ63
0は、それぞれ,命令キャッシュメモリとデータキャッ
シュメモリであり、メインメモリ(図示せず)の命令お
よびデータの一部のコピーを保持するものである。
0は、それぞれ,命令キャッシュメモリとデータキャッ
シュメモリであり、メインメモリ(図示せず)の命令お
よびデータの一部のコピーを保持するものである。
プロセ・サの ゛
プロセッサ610は命令のアドレスを計算するプログラ
ムカウンタ643,プリフェッチした命令を保持するブ
リフェッチバッファ640,第1命令レジスタ641,
第2命令レジスタ642,第1命令デコーダ644,第
2命令デコーダ645,レジスタファイル650,演算
器651,バレルシフタ652,メモリアドレスレジス
タ(MAR)653,メモリデータレジスタ(MDR)
654から成る。
ムカウンタ643,プリフェッチした命令を保持するブ
リフェッチバッファ640,第1命令レジスタ641,
第2命令レジスタ642,第1命令デコーダ644,第
2命令デコーダ645,レジスタファイル650,演算
器651,バレルシフタ652,メモリアドレスレジス
タ(MAR)653,メモリデータレジスタ(MDR)
654から成る。
ブリフェッチュニ・ト
ブリフェッチユニットであるブリフェッチバッファ64
0は,64ビット幅で、プログラムメモリ620から1
度にフエツチしてきた2命令を保持することができる。
0は,64ビット幅で、プログラムメモリ620から1
度にフエツチしてきた2命令を保持することができる。
ブリフェッチバッファ640の内容は,第1命令レジス
タ641、及び、第2命令レジスタ642に空きができ
た時点で、左側命令は第1命令レジスタ641へ、右側
の命令は第2命令レジスタ642へ転送される。
タ641、及び、第2命令レジスタ642に空きができ
た時点で、左側命令は第1命令レジスタ641へ、右側
の命令は第2命令レジスタ642へ転送される。
本実施例ではビッグエンディアンのアドレス付けを採用
しており、ブリフェッチバッファ640に保持された2
つの命令の内、左側の命令が先に実行され、その次に右
側の命令が実行される。
しており、ブリフェッチバッファ640に保持された2
つの命令の内、左側の命令が先に実行され、その次に右
側の命令が実行される。
レジスタファイル
レジスタファイル650は32ビット幅のレジスタ、3
2本RO%Rl,R2,・・・,R31から成り、3ボ
ートの読み出し及び3ボートの書き込みが同時に可能で
ある。
2本RO%Rl,R2,・・・,R31から成り、3ボ
ートの読み出し及び3ボートの書き込みが同時に可能で
ある。
全皇失丘ユ三L旦
命令実行ユニットは,演算器651とバレルシフタ65
2から構成されている。
2から構成されている。
演算器651は、それぞれ32ビットのA側入力655
とB側入力656を持ち、2人力の算術論理演算を行な
うA L U (Arithmetic and Lo
gicUnit)により構成されており、バレルシフタ
652はB側入力をA側入力の桁だけシフトする機能を
有する。
とB側入力656を持ち、2人力の算術論理演算を行な
うA L U (Arithmetic and Lo
gicUnit)により構成されており、バレルシフタ
652はB側入力をA側入力の桁だけシフトする機能を
有する。
ムのフォーマ・・ト
第2図は、本発明の一実施例である第1図のデータプロ
セッサのための命令のフォーマットを説明するための図
である。
セッサのための命令のフォーマットを説明するための図
である。
第2図に示すように、1つの命令は32ビットの固定長
であって、左端より6ビット,5ビット,5ビット,1
6ビットのフィールドに分割されている. 左端の6ビットのフィールド210は,命令の種類を示
すオペレーションコード(OPコード)である. 次の5ビットのフィールド220は、命令の実行結果を
格納するレジスタを指定するデスティネーションフィー
ルドである。
であって、左端より6ビット,5ビット,5ビット,1
6ビットのフィールドに分割されている. 左端の6ビットのフィールド210は,命令の種類を示
すオペレーションコード(OPコード)である. 次の5ビットのフィールド220は、命令の実行結果を
格納するレジスタを指定するデスティネーションフィー
ルドである。
さらに次の5ビットのフィールド230は,命令の入力
レジスタの一方を指定する第1ソースフィールドである
。
レジスタの一方を指定する第1ソースフィールドである
。
右端の16ビットのフィールド240はもう一方の入力
を指定する第2ソースフィールドである.第2ソースフ
ィールド240は第2図(a)に示すように16ビット
のイミディエイトデータとして用いられる場合と、第2
図(b)に示すように,右端の5ビット250によって
レジスタを指定する場合がある。第2ソースフィールド
を上記のどちらの使い方にするかは、OPコード210
の左端のビットで指定され、「0」のとき(a).
rlJのとき(b)のように使われる。(a)の形式の
命令をイミディエイト命令と呼び、(b)の形式の命令
をレジスタ命令と呼ぶ。
を指定する第2ソースフィールドである.第2ソースフ
ィールド240は第2図(a)に示すように16ビット
のイミディエイトデータとして用いられる場合と、第2
図(b)に示すように,右端の5ビット250によって
レジスタを指定する場合がある。第2ソースフィールド
を上記のどちらの使い方にするかは、OPコード210
の左端のビットで指定され、「0」のとき(a).
rlJのとき(b)のように使われる。(a)の形式の
命令をイミディエイト命令と呼び、(b)の形式の命令
をレジスタ命令と呼ぶ。
なお,本実施例ではレジスタファイル650のレジスタ
の数は32本であり、レジスタを指定する場合には上記
のように5ビットを必要とする。
の数は32本であり、レジスタを指定する場合には上記
のように5ビットを必要とする。
第5図はOPコード210のビット割り当てを示したも
のである。
のである。
LUI(ロード・アッパー・イミディエイト)命令51
0は、第2ソースフィールド240の16ビットのイミ
ディエイトデータの右側に16ビット分の「0」を連結
し、32ビットのイミディエイトにして、デスティネー
ションフィールド220に示されるレジスタに格納する
命令である。
0は、第2ソースフィールド240の16ビットのイミ
ディエイトデータの右側に16ビット分の「0」を連結
し、32ビットのイミディエイトにして、デスティネー
ションフィールド220に示されるレジスタに格納する
命令である。
ADDI(アンド・イミディエイト)命令512は、第
2ソースフィールド240の16ビットのイミディエイ
トデータの左側に第2ソースフィールド240の最上位
ビットと同じ値を16ビット分、連結して、32ビット
のイミディエイトに符号拡張した後、第1ソースフィー
ルド230で示されるレジスタの内容と加算して、デス
ティネーションフィールド220に示されるレジスタに
格納する命令である。
2ソースフィールド240の16ビットのイミディエイ
トデータの左側に第2ソースフィールド240の最上位
ビットと同じ値を16ビット分、連結して、32ビット
のイミディエイトに符号拡張した後、第1ソースフィー
ルド230で示されるレジスタの内容と加算して、デス
ティネーションフィールド220に示されるレジスタに
格納する命令である。
SUBI(サブトラクト・イミディエイト)命令514
は、第2ソースフィールド240をADDI命令512
と同様に32ビットのイミディエイトに符号拡張した後
、第1ソースフィールド230で示されるレジスタの内
容から減算して,デスティネーションフィールド220
に示されるレジスタに格納する命令である。
は、第2ソースフィールド240をADDI命令512
と同様に32ビットのイミディエイトに符号拡張した後
、第1ソースフィールド230で示されるレジスタの内
容から減算して,デスティネーションフィールド220
に示されるレジスタに格納する命令である。
ANDI(アンド・イミディエイト)命令516は、第
2ソースフィールド240の16ビットのイミディエイ
トデータの左側に16ビット分の「0」を連結して,3
2ビットのイミディエイトに拡張した後、第1ソースフ
ィールド230で示されるレジスタの内容との間で各ビ
ットごとの論理積を求めて、その結果をデスティネーシ
ョンフィールド220に示されるレジスタに格納する命
令である。
2ソースフィールド240の16ビットのイミディエイ
トデータの左側に16ビット分の「0」を連結して,3
2ビットのイミディエイトに拡張した後、第1ソースフ
ィールド230で示されるレジスタの内容との間で各ビ
ットごとの論理積を求めて、その結果をデスティネーシ
ョンフィールド220に示されるレジスタに格納する命
令である。
OR4(オア・イミディエイト)命令518、及び、E
ORI (イクスクルーシブ・オア・イミディエイト)
命令520は、ANDI命令516と同様に、それぞれ
、論理和,排他的論理和を求める命令である。
ORI (イクスクルーシブ・オア・イミディエイト)
命令520は、ANDI命令516と同様に、それぞれ
、論理和,排他的論理和を求める命令である。
SLLI (シフト・レフト・ロジカル・イミディエイ
ト)命令522は、第1ソースフィールド230で示さ
れるレジスタの内容を第2ソースフィールド240の1
6ビットのイミディエイトデータの数だけ左にシフトし
て、その結果をデスティネーションフィールド220に
示されるレジスタに格納する命令である。このとき、右
端からシフトインされる値は「0」である。
ト)命令522は、第1ソースフィールド230で示さ
れるレジスタの内容を第2ソースフィールド240の1
6ビットのイミディエイトデータの数だけ左にシフトし
て、その結果をデスティネーションフィールド220に
示されるレジスタに格納する命令である。このとき、右
端からシフトインされる値は「0」である。
SRLI(シフト・ライト・ロジカル・イミディエイト
)命令524は、SLLI命令522とは逆に右にシフ
トする命令である。このとき、左端からシフトインされ
る値はrQJである。
)命令524は、SLLI命令522とは逆に右にシフ
トする命令である。このとき、左端からシフトインされ
る値はrQJである。
SRAI(シフト・ライト・アリスメッテイック・イミ
ディエイト)命令526は、SRLI命令524と同様
に右にシフトする命令であるが、左端からシフトインさ
れる値は「O」ではなく,第1ソースフィールド230
で示されるレジスタの右端のビットと同じ値である。
ディエイト)命令526は、SRLI命令524と同様
に右にシフトする命令であるが、左端からシフトインさ
れる値は「O」ではなく,第1ソースフィールド230
で示されるレジスタの右端のビットと同じ値である。
LD(ロード)命令530は、第2ソースフィールド2
40をADDI命令512と同様に32ビットのイミデ
ィエイトに符号拡張した後、第1ソースフィールド23
0で示されるレジスタの内容と加算した結果をアドレス
とし、そのアドレスで示されたデータメモリの内容をデ
スティネーションフィールド220に示されるレジスタ
に格納する命令である。
40をADDI命令512と同様に32ビットのイミデ
ィエイトに符号拡張した後、第1ソースフィールド23
0で示されるレジスタの内容と加算した結果をアドレス
とし、そのアドレスで示されたデータメモリの内容をデ
スティネーションフィールド220に示されるレジスタ
に格納する命令である。
ST(ストア)命令532は、LD命令530と同様に
アドレスを求め、デスティネーションフィールド220
に示されるレジスタの内容を、そのアドレスで示された
データメモリに格納する命令である。
アドレスを求め、デスティネーションフィールド220
に示されるレジスタの内容を、そのアドレスで示された
データメモリに格納する命令である。
JUMP(ジャンプ)命令534は、無条件分岐命令で
.LD命令530と同様にアドレスを求め、そのアドレ
スへプログラムの流れを変える命令である。
.LD命令530と同様にアドレスを求め、そのアドレ
スへプログラムの流れを変える命令である。
Bee (ブランチ)命令536は、条件付き分岐命令
で、条件が成立したとき,第2ソースフィールド240
の16ビットのイミディエイトデータの左側に第2ソー
スフィールド240の最上位ビットと同じ値を16ビッ
ト分、連結して、32ビットのイミディエイトに符号拡
張した値と,現在の命令のアドレスを示すPC(プログ
ラム カウンタ)の値を加算したアドレスへ、プログラ
ムの流れを変える命令である。なお、このときの分岐条
件はデスティネーションフィールド220の5ビットに
よって指定される。
で、条件が成立したとき,第2ソースフィールド240
の16ビットのイミディエイトデータの左側に第2ソー
スフィールド240の最上位ビットと同じ値を16ビッ
ト分、連結して、32ビットのイミディエイトに符号拡
張した値と,現在の命令のアドレスを示すPC(プログ
ラム カウンタ)の値を加算したアドレスへ、プログラ
ムの流れを変える命令である。なお、このときの分岐条
件はデスティネーションフィールド220の5ビットに
よって指定される。
ADD命令552からSRA命令566までは、それぞ
れADDI命令512からSRAI命令526において
、第2ソースオペランドとしてレジスタの内容を用いる
命令である. 2 ム のためのアーキークチ 第1図は、本発明の一実施例の特徴である2つの命令同
時実行のための特徴的な構成と動作を第6図に追加して
示すものである. 第1図(a)は、本発明の一実施例の特徴であるLUI
命令(その命令実行のために演算器651を使用せず、
本来はバレルシフタ652によるシフト結果をレジスタ
ファイル650のひとつのレジスタにセットする命令)
と他の命令(その命令実行のためにバレルシフタ652
を使用せず、演算器651とレジスタファイル650の
LUI命令の使用レジスタとを使用する命令)を同時に
実行するための構成の動作を示す図である。
れADDI命令512からSRAI命令526において
、第2ソースオペランドとしてレジスタの内容を用いる
命令である. 2 ム のためのアーキークチ 第1図は、本発明の一実施例の特徴である2つの命令同
時実行のための特徴的な構成と動作を第6図に追加して
示すものである. 第1図(a)は、本発明の一実施例の特徴であるLUI
命令(その命令実行のために演算器651を使用せず、
本来はバレルシフタ652によるシフト結果をレジスタ
ファイル650のひとつのレジスタにセットする命令)
と他の命令(その命令実行のためにバレルシフタ652
を使用せず、演算器651とレジスタファイル650の
LUI命令の使用レジスタとを使用する命令)を同時に
実行するための構成の動作を示す図である。
LUI命令が64ビット命令データバス622の左側で
フェッチされ、ORI命令が右側でフェッチされた場合
である。
フェッチされ、ORI命令が右側でフェッチされた場合
である。
従って、LUI命令で、本来はイミディエイトデータ1
14をバレルシフタ652で左シフトした後、レジスタ
ファイル650のR3レジスタにセットする。次のOR
I命令で、本来は直前のしU工命令でR3レジスタにセ
ットされた左シフト後のイミディエイトデータ114と
32ビットに拡張されたイミディエイトデータ124と
の論理和のデータをR3レジスタに再びセットするもの
である。
14をバレルシフタ652で左シフトした後、レジスタ
ファイル650のR3レジスタにセットする。次のOR
I命令で、本来は直前のしU工命令でR3レジスタにセ
ットされた左シフト後のイミディエイトデータ114と
32ビットに拡張されたイミディエイトデータ124と
の論理和のデータをR3レジスタに再びセットするもの
である。
しかしながら、本来の通り先行するLUI命令によって
バレルシフタ652による左シフトデータをR3レジス
タにセットしたとしても、R3レジスタにセットされた
このデータは後続の○RI命令による論理和のデータに
よって更新されてしまうので、先行するLUI命令によ
る左シフトデータのR3レジスタへのセットは無意味と
なる.これに対して第1図(a)の本実施例によれば、
LUI命令によるバレルシフタ652のシフト結果はレ
ジスタファイル650にセットされることなく、ORI
命令を実行するための演算器651の一方の入力656
に供給される。演算器651の他方の入力655には3
2ビットに拡張されたイミディエイトデータ124が供
給される。かくして、第1図(a)の実施例によれば、
LUI命令とORI命令の2つの命令を1サイクルで実
行することができる。
バレルシフタ652による左シフトデータをR3レジス
タにセットしたとしても、R3レジスタにセットされた
このデータは後続の○RI命令による論理和のデータに
よって更新されてしまうので、先行するLUI命令によ
る左シフトデータのR3レジスタへのセットは無意味と
なる.これに対して第1図(a)の本実施例によれば、
LUI命令によるバレルシフタ652のシフト結果はレ
ジスタファイル650にセットされることなく、ORI
命令を実行するための演算器651の一方の入力656
に供給される。演算器651の他方の入力655には3
2ビットに拡張されたイミディエイトデータ124が供
給される。かくして、第1図(a)の実施例によれば、
LUI命令とORI命令の2つの命令を1サイクルで実
行することができる。
なお、ここでR3レジスタにセットされた32ビット長
のイミディエイトデータは、後の命令において、32ビ
ット長の定数として、算術演算命令(ADD,SUB等
)や、論理演算命令(AND,OR,FOR等)に利用
される。また、32ビット長のアドレスとして、メモリ
操作命令(LD,ST)や分岐命令(Jump)に利用
されることもある。
のイミディエイトデータは、後の命令において、32ビ
ット長の定数として、算術演算命令(ADD,SUB等
)や、論理演算命令(AND,OR,FOR等)に利用
される。また、32ビット長のアドレスとして、メモリ
操作命令(LD,ST)や分岐命令(Jump)に利用
されることもある。
以下、この2つの命令の同時実行について、詳細に説明
する。
する。
64ビット命令データバス622の左側でフェッチされ
たLUI命令は第1命令レジスタ641にセットされ,
同時に64ビット命令データバス622の右側でフェッ
チされたORI命令は第2命令レジスタ642にセット
される。
たLUI命令は第1命令レジスタ641にセットされ,
同時に64ビット命令データバス622の右側でフェッ
チされたORI命令は第2命令レジスタ642にセット
される。
第1命令デコーダ644は第1命令レジスタ641のO
Pコードフィールド111を解読してLUI命令である
ことを検出すると、第2命令デコーダ645を有効にし
て、第2命令レジスタにセットされている命令を解読し
、LUI命令の実行と同じサイクルで並列に実行を開始
する。
Pコードフィールド111を解読してLUI命令である
ことを検出すると、第2命令デコーダ645を有効にし
て、第2命令レジスタにセットされている命令を解読し
、LUI命令の実行と同じサイクルで並列に実行を開始
する。
つまり、LUI命令の動作として、第1命令レジスタ6
41の第2ソースフィールド114の16ビットイミデ
ィエイトの右側に「0」を16ビット分連結して32ビ
ット長に拡張したものをシフタ652で求める。尚、シ
フタ652は、第1命令レジスタ641の○Pコード1
11を解読する第1デコーダ644によって制御される
。
41の第2ソースフィールド114の16ビットイミデ
ィエイトの右側に「0」を16ビット分連結して32ビ
ット長に拡張したものをシフタ652で求める。尚、シ
フタ652は、第1命令レジスタ641の○Pコード1
11を解読する第1デコーダ644によって制御される
。
なおこの時,比較器131によって第1命令レジスタ6
41のデスティネーションフィールド112と第2命令
レジスタ642のデスティネーションフィールド122
を比較し、同一でない場合は、第1命令レジスタ641
のデスティネーションフィールド112で示されるR3
レジスタヘ、シフタ652の結果を格納する。第1図(
a)の場合は、同一であるので、シフタ652の結果の
R3レジスタへの格納は行なわない。
41のデスティネーションフィールド112と第2命令
レジスタ642のデスティネーションフィールド122
を比較し、同一でない場合は、第1命令レジスタ641
のデスティネーションフィールド112で示されるR3
レジスタヘ、シフタ652の結果を格納する。第1図(
a)の場合は、同一であるので、シフタ652の結果の
R3レジスタへの格納は行なわない。
また同時に、ORI命令の動作としては、第2ソースフ
ィールド124の16ビットイミデイエイトを32ビッ
ト長に拡張する。また、比較器132によって第1命令
レジスタ641のデスティネーシ目ンフィールド112
と第2命令レジスタ642の第1ソースフィールド12
3を比較し、同一である(つまり、LUI命令のデステ
イネーションレジスタとORI命令のソースレジスタが
同一である)場合は、第1ソースフィールド123に従
ったR3レジスタからの読み出しを抑止し、代わりに、
シフタ652の結果を用いて32ビットに拡張されたイ
ミディエイトデータ124との論理和演算を行う。これ
ら2つのデータの論理和を演算器651で求め,その結
果をデスティネーションフィールド122で示されるR
3レジスタへ格納する。なお、演算器651は、第2命
令レジスタ642のOPコード121を解読する第2デ
コーダ645によって制御される。また,第2ソースフ
ィールド124のイミディエイトの拡張も第2デコーダ
645によって制御される。
ィールド124の16ビットイミデイエイトを32ビッ
ト長に拡張する。また、比較器132によって第1命令
レジスタ641のデスティネーシ目ンフィールド112
と第2命令レジスタ642の第1ソースフィールド12
3を比較し、同一である(つまり、LUI命令のデステ
イネーションレジスタとORI命令のソースレジスタが
同一である)場合は、第1ソースフィールド123に従
ったR3レジスタからの読み出しを抑止し、代わりに、
シフタ652の結果を用いて32ビットに拡張されたイ
ミディエイトデータ124との論理和演算を行う。これ
ら2つのデータの論理和を演算器651で求め,その結
果をデスティネーションフィールド122で示されるR
3レジスタへ格納する。なお、演算器651は、第2命
令レジスタ642のOPコード121を解読する第2デ
コーダ645によって制御される。また,第2ソースフ
ィールド124のイミディエイトの拡張も第2デコーダ
645によって制御される。
次に実行する命令は、ブリフェッチバッファ640に保
持されている命令であるので、この命令を第1命令レジ
スタ641及び第2命令レジスタ642へ転送して、以
下同様に実行する。
持されている命令であるので、この命令を第1命令レジ
スタ641及び第2命令レジスタ642へ転送して、以
下同様に実行する。
第1図(b)は本発明の特徴であるLUI命令(その命
令実行のために演算器651を使用せず、本来はバレル
シフタ652によるシフト結果をレジスタファイル65
0のひとつのレジスタにセットする命令)と他の命令(
その命令実行のためにバレルシフタ652を使用せず、
演算器651を使用しレジスタファイル650のL U
’I命令によるセット・レジスタと異なるレジスタにセ
ットを実行する命令)を同時に実行する時のもう一つの
動作を示す図である。
令実行のために演算器651を使用せず、本来はバレル
シフタ652によるシフト結果をレジスタファイル65
0のひとつのレジスタにセットする命令)と他の命令(
その命令実行のためにバレルシフタ652を使用せず、
演算器651を使用しレジスタファイル650のL U
’I命令によるセット・レジスタと異なるレジスタにセ
ットを実行する命令)を同時に実行する時のもう一つの
動作を示す図である。
ADD命令が64ビット命令データバス622の左側で
フェッチされ、LUI命令が右側でフェッチされた場合
である。ADD命令でR1レジスタの内容とR2レジス
タの内容を加算し、R3レジスタに格納し、LUI命令
でイミディエイトデータをR4レジスタの上位ビットに
セットする.この場合、レジスタファイル650の使用
レジスタの間で使用に関する競合が生じることが無いの
で.ADD命令とLUI命令の2つの命令を1サイクル
で実行することができる。
フェッチされ、LUI命令が右側でフェッチされた場合
である。ADD命令でR1レジスタの内容とR2レジス
タの内容を加算し、R3レジスタに格納し、LUI命令
でイミディエイトデータをR4レジスタの上位ビットに
セットする.この場合、レジスタファイル650の使用
レジスタの間で使用に関する競合が生じることが無いの
で.ADD命令とLUI命令の2つの命令を1サイクル
で実行することができる。
以下、第1図(b)の動作について、詳細に説明する。
まず、64ビット命令データバス622の左側でフェッ
チされたADD命令は第1命令レジスタ641にセット
され、同時に64ビット命令データバス622の右側で
フエッチされたLUI命令は第2命令レジスタ642に
セットされる。第2命令デコーダ645は第2命令レジ
スタ642のOPコードフィールド151を解読してL
UI命令であることを検出すると、第2命令デコーダ6
45を有効にして、第1命令レジスタにセットされてい
る命令の実行と同じサイクルで並列にLUI命令の実行
を開始する。
チされたADD命令は第1命令レジスタ641にセット
され、同時に64ビット命令データバス622の右側で
フエッチされたLUI命令は第2命令レジスタ642に
セットされる。第2命令デコーダ645は第2命令レジ
スタ642のOPコードフィールド151を解読してL
UI命令であることを検出すると、第2命令デコーダ6
45を有効にして、第1命令レジスタにセットされてい
る命令の実行と同じサイクルで並列にLUI命令の実行
を開始する。
まず、ADD命令の動作として、第1命令レジスタ64
1の第1ソースフィールド143に従って、Rlレジス
タの内容を読み出し、また、第2ソースフィールド14
4に従って、R2レジスタの内容を読み出す。これら2
つのデータの積を演算器651で求め、その結果をデス
ティネーションフィールド142で示されるR3レジス
タへ格納する。なお、演算器651は、第1命令レジス
タ641のoPコード141を解読する第1デコーダ6
44によって制御される。なおこの時、比較器131に
よって第1命令レジスタ641のデスティネーションフ
ィールド142と第2命令レジスタ642のデスティネ
ーシ3ンフィールド152を比較し、同一である(つま
り、ADD命令のデスティネーションレジスタとLUI
命令のデスティネーションレジスタが同一である)場合
は、上記ADD命令の実行結果のR3レジスタへの格納
を抑止し、代わりに、LUI命令の実行結果をレジスタ
R3へ格納する。
1の第1ソースフィールド143に従って、Rlレジス
タの内容を読み出し、また、第2ソースフィールド14
4に従って、R2レジスタの内容を読み出す。これら2
つのデータの積を演算器651で求め、その結果をデス
ティネーションフィールド142で示されるR3レジス
タへ格納する。なお、演算器651は、第1命令レジス
タ641のoPコード141を解読する第1デコーダ6
44によって制御される。なおこの時、比較器131に
よって第1命令レジスタ641のデスティネーションフ
ィールド142と第2命令レジスタ642のデスティネ
ーシ3ンフィールド152を比較し、同一である(つま
り、ADD命令のデスティネーションレジスタとLUI
命令のデスティネーションレジスタが同一である)場合
は、上記ADD命令の実行結果のR3レジスタへの格納
を抑止し、代わりに、LUI命令の実行結果をレジスタ
R3へ格納する。
また同時に、LUI命令の動作として,第2命令レジス
タ642の第2ソースフィールド154の16ビットイ
ミディエイトの右側に「o」を16ビット分連結して3
2ビット長に拡張したものをシフタ652で求め、その
結果をデスティネーションフィールド152で示される
R4レジスタへ格納する。なお,シフタ652は、第2
命令レジスタ642のOPコード151を解読する第2
デコーダ645によって制御される。
タ642の第2ソースフィールド154の16ビットイ
ミディエイトの右側に「o」を16ビット分連結して3
2ビット長に拡張したものをシフタ652で求め、その
結果をデスティネーションフィールド152で示される
R4レジスタへ格納する。なお,シフタ652は、第2
命令レジスタ642のOPコード151を解読する第2
デコーダ645によって制御される。
次に実行する命令は、ブリフェッチバッファ640に保
持されている命令であるので、この命令を第1命令レジ
スタ641及び第2命令レジスタ642へ転送して、以
下同様に実行する。
持されている命令であるので、この命令を第1命令レジ
スタ641及び第2命令レジスタ642へ転送して、以
下同様に実行する。
レ スロ・・
分岐命令において、遅延分岐の手法が使われることがよ
くある。この手法では、分岐命令の次の1サイクルをデ
ィレイスロットと呼び、RISCプロセッサのためにコ
ンパイルされたプログラムの分岐命令の直後の命令をこ
のサイクルに実行する。この分岐命令の直後の命令の実
行の後、実際の分岐を行なう。
くある。この手法では、分岐命令の次の1サイクルをデ
ィレイスロットと呼び、RISCプロセッサのためにコ
ンパイルされたプログラムの分岐命令の直後の命令をこ
のサイクルに実行する。この分岐命令の直後の命令の実
行の後、実際の分岐を行なう。
このRISCプロセッサのためにコンパイルされたプロ
グラムの分岐命令の直後の命令は、CISC(Comp
lex Instruction Set Compu
ter)プロセッサの如き通常のデータ・プロセッサの
ためにコンパイルされたプログラムの分岐命令の直前の
命令に対応している。
グラムの分岐命令の直後の命令は、CISC(Comp
lex Instruction Set Compu
ter)プロセッサの如き通常のデータ・プロセッサの
ためにコンパイルされたプログラムの分岐命令の直前の
命令に対応している。
一方、上述の如く、RISCプロセッサにおいては、分
岐命令の直後の命令(CISCプロセッサの場合の分岐
命令の直前の命令)を先に実行し、しかる後、分岐命令
を実行する。
岐命令の直後の命令(CISCプロセッサの場合の分岐
命令の直前の命令)を先に実行し、しかる後、分岐命令
を実行する。
遅延分岐およびディレイスロットに関しては、Gerr
y Kane著によるrMIPS RISC ARCH
ITECHTUREJ第1−9頁乃至第1−11頁(1
9 8 8年)に詳しく記載されている。
y Kane著によるrMIPS RISC ARCH
ITECHTUREJ第1−9頁乃至第1−11頁(1
9 8 8年)に詳しく記載されている。
すなわち、通常のプロセッサは命令フェッチ,命令デコ
ード、命令実行の多段のパイプラインによる命令の並列
処理を実行している。
ード、命令実行の多段のパイプラインによる命令の並列
処理を実行している。
このパイプライン並列処理のため、分岐命令による分岐
先アドレス計算を行っている間に、命令フェッチユニッ
トは分岐命令に続く命令を続々とフェッチする処理を続
行する。
先アドレス計算を行っている間に、命令フェッチユニッ
トは分岐命令に続く命令を続々とフェッチする処理を続
行する。
従来のCISCプロセッサでは、分岐を実行する時には
、先行的にフェッチした分岐命令に続く命令を無効化し
て、分岐先命令を新たにフエツチし,命令デコード、命
令実行するものである。従って、crscプロセッサで
は、その実行に2サイクルを必要とする分岐命令の後に
,自動的に何も作業をしない1サイクル(No Ope
rationのサイクル)が挿入されてしまう。
、先行的にフェッチした分岐命令に続く命令を無効化し
て、分岐先命令を新たにフエツチし,命令デコード、命
令実行するものである。従って、crscプロセッサで
は、その実行に2サイクルを必要とする分岐命令の後に
,自動的に何も作業をしない1サイクル(No Ope
rationのサイクル)が挿入されてしまう。
一方、RISCプロセッサでは、分岐を実行する時には
、先行的にフェッチした分岐命令に続く命令(CISC
プロセッサの場合の分岐命令の直前の命令)を無効化し
ないで、先にこの命令を実行し,しかる後に分岐命令を
実行し、新たに分岐先命令をフェッチするものである。
、先行的にフェッチした分岐命令に続く命令(CISC
プロセッサの場合の分岐命令の直前の命令)を無効化し
ないで、先にこの命令を実行し,しかる後に分岐命令を
実行し、新たに分岐先命令をフェッチするものである。
この様に、RISCプロセッサでは分岐命令の後に、無
効化されることのない有効な命令をプログラム中で配置
することによって、このサイクルを有効に活用すること
ができる。このような分岐命令の仕様は遅延分岐と呼ば
れ、分岐命令の後の1サイクルはディレイスロットと呼
ばれている。
効化されることのない有効な命令をプログラム中で配置
することによって、このサイクルを有効に活用すること
ができる。このような分岐命令の仕様は遅延分岐と呼ば
れ、分岐命令の後の1サイクルはディレイスロットと呼
ばれている。
ディレイスロットとLUI ”の 理従って、本発明
の一実施例によるRISCプロセッサにおいて、遅延分
岐のデイレイスロットと関係してLUI命令がある場合
の処理の手法について以下に説明する。
の一実施例によるRISCプロセッサにおいて、遅延分
岐のデイレイスロットと関係してLUI命令がある場合
の処理の手法について以下に説明する。
まず、第1の命令が分岐命令で第2の命令がLUI命令
である場合、第1の手法としては、LUI命令を分岐命
令と同時に実行してしまい、遅延分岐のディレイスロッ
トでは次の第3の命令を実行することが考えられる。第
2の手法として、さらに第1の手法に加え、第3の命令
もLUI命令の場合は、第4の命令も同時にディレイス
ロツトで実行できる。また逆に、第3の命令が通常の命
令で、第4の命令がLUI命令の場合にも、第3の命令
と第4の命令を同時にデイレイスロットで実行すること
ができる。第3の手法としては、遅延分岐のデイレイス
ロットにLUI命令が入っている場合には、上記の処理
方式を抑止して、このLUI命令を分岐命令と同時に実
行せず、ディレイスロットでLUI命令を実行すること
も考えられる。
である場合、第1の手法としては、LUI命令を分岐命
令と同時に実行してしまい、遅延分岐のディレイスロッ
トでは次の第3の命令を実行することが考えられる。第
2の手法として、さらに第1の手法に加え、第3の命令
もLUI命令の場合は、第4の命令も同時にディレイス
ロツトで実行できる。また逆に、第3の命令が通常の命
令で、第4の命令がLUI命令の場合にも、第3の命令
と第4の命令を同時にデイレイスロットで実行すること
ができる。第3の手法としては、遅延分岐のデイレイス
ロットにLUI命令が入っている場合には、上記の処理
方式を抑止して、このLUI命令を分岐命令と同時に実
行せず、ディレイスロットでLUI命令を実行すること
も考えられる。
また、第1の命令がLUI命令で、第1の命令の直前の
命令が分岐命令の場合、第4の手法としては、ディレイ
スロット内で第1のLUI命令と分岐命令の直後の第2
の通常の命令を同時に実行することも考えられる。第5
の手法としては,上記第3の手法と同様に、LUI命令
と次の命令の同時実行を抑止して、デイレイスロットの
LUI命令を単独に実行することが考えられる。
命令が分岐命令の場合、第4の手法としては、ディレイ
スロット内で第1のLUI命令と分岐命令の直後の第2
の通常の命令を同時に実行することも考えられる。第5
の手法としては,上記第3の手法と同様に、LUI命令
と次の命令の同時実行を抑止して、デイレイスロットの
LUI命令を単独に実行することが考えられる。
以上の様にディレイスロットに関係してLUI命令があ
る時の処理方法には各種の方式が考えられるので、予め
ソフトウエア(特にコンパイラ)との間で、明確に決め
ておく必要がある。
る時の処理方法には各種の方式が考えられるので、予め
ソフトウエア(特にコンパイラ)との間で、明確に決め
ておく必要がある。
従って、上記第1図(a)の説明では、LUI命令の直
前の命令は分岐命令ではない場合について説明した。直
前の命令が分岐命令の場合は,第1図(a)の本実施例
ではLUI命令は分岐命令のディレイスロットで実行さ
れ、○RI命令はLUI命令とは同時に実行されない。
前の命令は分岐命令ではない場合について説明した。直
前の命令が分岐命令の場合は,第1図(a)の本実施例
ではLUI命令は分岐命令のディレイスロットで実行さ
れ、○RI命令はLUI命令とは同時に実行されない。
なお、上記第1図(b)の説明では、LUI命令の直前
の命令はADD命令で,分岐命令ではない場合について
説明した。直前の命令(左側の命令)が分岐命令の場合
は、第1図(b)の本実施例ではLUI命令は分岐命令
のディレイスロットで実行され、LUI命令は左側の命
令(分岐命令)とは同時に実行されない。
の命令はADD命令で,分岐命令ではない場合について
説明した。直前の命令(左側の命令)が分岐命令の場合
は、第1図(b)の本実施例ではLUI命令は分岐命令
のディレイスロットで実行され、LUI命令は左側の命
令(分岐命令)とは同時に実行されない。
一鼾命冷プn割行
次に、第1図もしくは第6図に示したデータプロセッサ
が2つの命令を同時実行できず、2つの命令を直列に実
行する場合について、第3図(a),(b),(c),
(d)を参照して説明する。
が2つの命令を同時実行できず、2つの命令を直列に実
行する場合について、第3図(a),(b),(c),
(d)を参照して説明する。
第3図(a)は.R1レジスタの内容とR2レジスタの
内容を加算してR3レジスタへ格納するADD命令を実
行する時の動作を示す図である。
内容を加算してR3レジスタへ格納するADD命令を実
行する時の動作を示す図である。
尚、この命令は64ビット命令データバス622の左側
でフェッチされたものとする。
でフェッチされたものとする。
第1命令レジスタ641の第1ソースフィールド311
及び第2ソースフィールド312に従って、R1レジス
タ及びR2レジスタの内容を読み出し、演算器651で
加算した結果を、デスティネーションフィールド313
で示されるR3レジスタへ格納する。
及び第2ソースフィールド312に従って、R1レジス
タ及びR2レジスタの内容を読み出し、演算器651で
加算した結果を、デスティネーションフィールド313
で示されるR3レジスタへ格納する。
尚、演算器651は、第1命令レジスタ641のOPコ
ード314を解読する第1デコーダ644によって制御
される。
ード314を解読する第1デコーダ644によって制御
される。
次に実行する命令は、第2命令レジスタ642に保持さ
れている命令であるので、この命令を第1命令レジスタ
641へ転送して、以下同様に実行する。
れている命令であるので、この命令を第1命令レジスタ
641へ転送して、以下同様に実行する。
第3図(b)は、R1レジスタの内容とイミディエイト
とを加算してR3レジスタへ格納するADDI命令を実
行する時の動作を示す図である.尚、この命令は64ビ
ット命令データバス622の左側でフエツチされたもの
とする。第1命令レジスタ641の第1ソースフィール
ド321に従って.R1レジスタの内容を読み出し,ま
た,第2ソースフィールド322の16ビットイミディ
エイトを32ビット長に符号拡張する。これら2つのデ
ータを演算器651で加算し、その結果をデスティネー
ションフィールド323で示されるR3レジスタへ格納
する。尚、演算器651は、第1命令レジスタ641の
OPコード324を解読する第1デコーダ644によっ
て制御される。
とを加算してR3レジスタへ格納するADDI命令を実
行する時の動作を示す図である.尚、この命令は64ビ
ット命令データバス622の左側でフエツチされたもの
とする。第1命令レジスタ641の第1ソースフィール
ド321に従って.R1レジスタの内容を読み出し,ま
た,第2ソースフィールド322の16ビットイミディ
エイトを32ビット長に符号拡張する。これら2つのデ
ータを演算器651で加算し、その結果をデスティネー
ションフィールド323で示されるR3レジスタへ格納
する。尚、演算器651は、第1命令レジスタ641の
OPコード324を解読する第1デコーダ644によっ
て制御される。
また、第2ソースフィールド322のイミディエイトの
符号拡張も第1デコーダ644によって制御される。次
に実行する命令は、第2命令レジスタ642に保持され
ている命令であるので、この命令を第1命令レジスタ6
41へ転送して、以下同様に実行する。
符号拡張も第1デコーダ644によって制御される。次
に実行する命令は、第2命令レジスタ642に保持され
ている命令であるので、この命令を第1命令レジスタ6
41へ転送して、以下同様に実行する。
第3図(c)は.R1レジスタの内容とイミディエイト
を加算した値をアドレスとするデータメモリの内容をR
3レジスタへ格納するLD命令を実行する時の動作を示
す図である.尚、この命令は64ビット命令データバス
622の左側でフェッチされたものとする。第1命令レ
ジスタ641の第1ソースフィールド331に従ってR
1レジスタの内容を読み出し,また、第2ソースフィー
ルド332の16ビットイミディエイトを32ビット長
に符号拡張する。これら2つのデータを演算器651で
加算し、その結果をMAR653へ転送し、データメモ
リ630をアクセスする。
を加算した値をアドレスとするデータメモリの内容をR
3レジスタへ格納するLD命令を実行する時の動作を示
す図である.尚、この命令は64ビット命令データバス
622の左側でフェッチされたものとする。第1命令レ
ジスタ641の第1ソースフィールド331に従ってR
1レジスタの内容を読み出し,また、第2ソースフィー
ルド332の16ビットイミディエイトを32ビット長
に符号拡張する。これら2つのデータを演算器651で
加算し、その結果をMAR653へ転送し、データメモ
リ630をアクセスする。
データメモリ630から読み出されたデータはMDR6
54を経由して、デスティネーションフィールド313
で示されるR3レジスタへ格納される。
54を経由して、デスティネーションフィールド313
で示されるR3レジスタへ格納される。
次に実行する命令は、第2命令レジスタ642に保持さ
れている命令であるので、この命令を第1命令レジスタ
641へ転送して、以下同様に実行する。
れている命令であるので、この命令を第1命令レジスタ
641へ転送して、以下同様に実行する。
第3図(d)は、R1レジスタの内容とイミディエイト
を加算した値をアドレスとするデータメモリ630の領
域へR3レジスタの内容を格納するST命令を実行する
時の動作を示す図である.尚,この命令は64ビット命
令データバス622の左側でフェッチされたものとする
。第1命令レジスタ641の第1ソースフィールド34
1に従ってR1レジスタの内容を読み出し、また、第2
ソースフィールド342の16ビットイミディエイトを
32ピット長に符号拡張する。これら2つのデータを演
算器651で加算し、その結果をMAR653へ転送し
、データメモリ630をアクセスする。一方、書き込み
データはデスティネーションフィールド343で示され
るR3レジスタから読み出され、MDR654を経由し
てデータメモリ630へ転送され、格納される。次に実
行する命令は、第2命令レジスタ642に保持されてい
る命令であるので、この命令を第1命令レジスタ641
へ転送して、以下同様に実行する。
を加算した値をアドレスとするデータメモリ630の領
域へR3レジスタの内容を格納するST命令を実行する
時の動作を示す図である.尚,この命令は64ビット命
令データバス622の左側でフェッチされたものとする
。第1命令レジスタ641の第1ソースフィールド34
1に従ってR1レジスタの内容を読み出し、また、第2
ソースフィールド342の16ビットイミディエイトを
32ピット長に符号拡張する。これら2つのデータを演
算器651で加算し、その結果をMAR653へ転送し
、データメモリ630をアクセスする。一方、書き込み
データはデスティネーションフィールド343で示され
るR3レジスタから読み出され、MDR654を経由し
てデータメモリ630へ転送され、格納される。次に実
行する命令は、第2命令レジスタ642に保持されてい
る命令であるので、この命令を第1命令レジスタ641
へ転送して、以下同様に実行する。
パイプライン
次に、第1図および第6図の実施例によるデータプロセ
ッサのパイプライン処理について、詳細に説明する。
ッサのパイプライン処理について、詳細に説明する。
第4図(a)は本実施例のプロセッサにおいて2つの命
令を直列実行する時のパイプライン処理について示した
図である。尚,命令AからFが第4図(c)に示すよう
にプログラムメモリ620に格納されていたとする。
令を直列実行する時のパイプライン処理について示した
図である。尚,命令AからFが第4図(c)に示すよう
にプログラムメモリ620に格納されていたとする。
まず、第4図(a)の1つの箱は各パイプラインステー
ジの1クロックサイクルの動作に対応する。パイプライ
ンのステージは、IF(命令フェッチ),ID(命令デ
コード),EX(実行),W(結果の格納)の4つのス
テージからなる。以下、各クロックサイクル毎に説明す
る。
ジの1クロックサイクルの動作に対応する。パイプライ
ンのステージは、IF(命令フェッチ),ID(命令デ
コード),EX(実行),W(結果の格納)の4つのス
テージからなる。以下、各クロックサイクル毎に説明す
る。
[1クロックサイクノレ目]
プログラムメモリ620から64ビット分の命令(Aと
B)をフェッチして、ブリフェッチバッファ640にセ
ットする。
B)をフェッチして、ブリフェッチバッファ640にセ
ットする。
[2クロックサイクノレ目]
ブリフェッチバッファ640に保持している2つの命令
(AとB)をそれぞれ第1命令レジスタ641及び第2
命令レジスタ642にセットし、第1命令デコーダ64
4及び第2命令デコーダ645で解読を行う。なおこの
時、レジスタの読み出し及びイミデイエイトのデータ拡
張が必要な場合にはこのサイクルで行う。
(AとB)をそれぞれ第1命令レジスタ641及び第2
命令レジスタ642にセットし、第1命令デコーダ64
4及び第2命令デコーダ645で解読を行う。なおこの
時、レジスタの読み出し及びイミデイエイトのデータ拡
張が必要な場合にはこのサイクルで行う。
また,プログラムメモリ620から次の64ビット分の
命令(CとD)をフエッチして、ブリフエッチバッファ
640にセットする。
命令(CとD)をフエッチして、ブリフエッチバッファ
640にセットする。
[3クロックサイクノレ目]
第1命令デコーダ644で解読した命令Aを実行し、次
に第2命令レジスタ642の命令Bを第1命令レジスタ
641にセットし、第1命令デコーダ644で解読を行
う。なおこの時、レジスタの読み出し及びイミデイエイ
トのデータ拡張が必要な場合にはこのサイクルで行う。
に第2命令レジスタ642の命令Bを第1命令レジスタ
641にセットし、第1命令デコーダ644で解読を行
う。なおこの時、レジスタの読み出し及びイミデイエイ
トのデータ拡張が必要な場合にはこのサイクルで行う。
[4クロックサイクノレ目]
命令Aの実行結果をレジスタに格納し、第1命令デコー
ダ644で解読した命令Bを実行する。
ダ644で解読した命令Bを実行する。
同時にブリフェッチバソファ640に保持している2つ
の命令(CとD)をそれぞれ第1命令レジスタ641及
び第2命令レジスタ642にセットし、第1命令デコー
ダ644及び第2命令デコーダ645で解読を行う。な
おこの時、レジスタの読み出し及びイミディエイトのデ
ータ拡張が必要な場合にはこのサイクルで行う。また、
プログラムメモリ620から次の64ビット分の命令(
EとF)をフェッチして、ブリフェッチバッファ640
にセットする。
の命令(CとD)をそれぞれ第1命令レジスタ641及
び第2命令レジスタ642にセットし、第1命令デコー
ダ644及び第2命令デコーダ645で解読を行う。な
おこの時、レジスタの読み出し及びイミディエイトのデ
ータ拡張が必要な場合にはこのサイクルで行う。また、
プログラムメモリ620から次の64ビット分の命令(
EとF)をフェッチして、ブリフェッチバッファ640
にセットする。
以下同様に動作する。
第4図(b)は本実施例のプロセッサにおいて本発明の
特徴である2つの命令を同時に実行する時のパイプライ
ン処理について示した図である。
特徴である2つの命令を同時に実行する時のパイプライ
ン処理について示した図である。
尚、命令AからFが第4図(c)に示すようにプログラ
ムメモリ620に格納されていたとする。
ムメモリ620に格納されていたとする。
ここで、命令AがLUI命令であるとする。以下、各ク
ロックサイクル毎に説明する。
ロックサイクル毎に説明する。
[1クロックサイクノレ目]
プログラムメモリ620から64ビット分の命令(Aと
B)をフェッチして、ブリフエツチバツファ640にセ
ットする。
B)をフェッチして、ブリフエツチバツファ640にセ
ットする。
[2クロックサイクノレ目]
ブリフェッチバッファ640に保持している2つの命令
(AとB)をそれぞれ第1命令レジスタ641及び第2
命令レジスタ642にセットし、第1命令デコーダ64
4及び第2命令デコーダ645で解読を行う。その結果
命令AがLUI命令であることが分かるので、次のサイ
クルでこの2つの命令を同時に実行する準備を行う。な
おこの時、レジスタの読み出し及びイミディエイトのデ
ータ拡張が必要な場合にはこのサイクルで行う。
(AとB)をそれぞれ第1命令レジスタ641及び第2
命令レジスタ642にセットし、第1命令デコーダ64
4及び第2命令デコーダ645で解読を行う。その結果
命令AがLUI命令であることが分かるので、次のサイ
クルでこの2つの命令を同時に実行する準備を行う。な
おこの時、レジスタの読み出し及びイミディエイトのデ
ータ拡張が必要な場合にはこのサイクルで行う。
また、プログラムメモリ620から次の64ビット分の
命令(CとD)をフェッチして、ブリフェッチバッファ
640にセットする。
命令(CとD)をフェッチして、ブリフェッチバッファ
640にセットする。
[3クロックサイクノレ目]
第1命令デコーダ644で解読した命令A (LUI命
令)及び第2命令デコーダ645で解読した命令Bを同
時実行し、ブリフェッチバッフ7640に保持している
2つの命令(CとD)を第1命令レジスタ641及び第
2命令レジスタ642にセットし、第1命令デコーダ6
44及び第2命令デコーダ645で解読を行う。なおこ
の時、レジスタの読み出し及びイミディエイトのデータ
拡張が必要な場合にはこのサイクルで行う。
令)及び第2命令デコーダ645で解読した命令Bを同
時実行し、ブリフェッチバッフ7640に保持している
2つの命令(CとD)を第1命令レジスタ641及び第
2命令レジスタ642にセットし、第1命令デコーダ6
44及び第2命令デコーダ645で解読を行う。なおこ
の時、レジスタの読み出し及びイミディエイトのデータ
拡張が必要な場合にはこのサイクルで行う。
また、プログラムメモリ620から次の64ビット分の
命令(EとF)をフェッチして,ブリフエッチバッファ
640にセットする。
命令(EとF)をフェッチして,ブリフエッチバッファ
640にセットする。
[4クロックサイクノレ目]
命令A(LUI命令)及び命令Bの実行結果をレジスタ
に格納し、第1命令デコーダ644で解読した命令Cを
実行する。第2命令レジスタ642の命令Dを第1命令
レジスタ641にセットし、第1命令デコーダ644で
解読を行う。なおこの時、レジスタの読み出し及びイミ
ディエイトのデータ拡張が必要な場合にはこのサイクル
で行う。
に格納し、第1命令デコーダ644で解読した命令Cを
実行する。第2命令レジスタ642の命令Dを第1命令
レジスタ641にセットし、第1命令デコーダ644で
解読を行う。なおこの時、レジスタの読み出し及びイミ
ディエイトのデータ拡張が必要な場合にはこのサイクル
で行う。
以下同様に動作する。
なお、第4図(b)では命令AがLUI命令の場合につ
いて説明したが、第1図(b)で説明したように命令A
が他の命令で命令BがLUI命令の場合も同様にこの2
つの命令を同時に実行できることが分かる。
いて説明したが、第1図(b)で説明したように命令A
が他の命令で命令BがLUI命令の場合も同様にこの2
つの命令を同時に実行できることが分かる。
以上説明してきた本実施例によれば、各命令のフォーマ
ットが限定されているため、命令の解読が容易にでき,
命令デコーダを2個に増加しても、回路規模はそれほど
増大することはない。
ットが限定されているため、命令の解読が容易にでき,
命令デコーダを2個に増加しても、回路規模はそれほど
増大することはない。
また、本実施例によれば、イミディエイトデータを操作
する命令のOPコードはレジスタを操作する命令のOP
コードと左端の1ビットだけが違うだけなので、演算器
651等のための制御信号生成等のための命令解読がど
ちらの命令でも共通化でき命令デコーダの簡略化が可能
である。
する命令のOPコードはレジスタを操作する命令のOP
コードと左端の1ビットだけが違うだけなので、演算器
651等のための制御信号生成等のための命令解読がど
ちらの命令でも共通化でき命令デコーダの簡略化が可能
である。
また、イミディエイトを操作するか否かはOPコードの
左端の1ビットだけ判断できるので、イミディエイト生
成回路の制御信号などの生成するための命令デコーダの
簡略化が可能である。
左端の1ビットだけ判断できるので、イミディエイト生
成回路の制御信号などの生成するための命令デコーダの
簡略化が可能である。
従って、本実施例によれば、データ幅の広いバスを用い
て1サイクルでフェッチした2つの命令を同時に実行で
きるので、パイプラインステージ間の負荷を均一にでき
、ハードウエア回路の有効利用が可能になる。
て1サイクルでフェッチした2つの命令を同時に実行で
きるので、パイプラインステージ間の負荷を均一にでき
、ハードウエア回路の有効利用が可能になる。
特に、本実施例によれば、従来の命令フォーマットを変
えることなく、32ビット長のイミデイエイトを1サイ
クルで操作できるようになり、互換性を維持しつつ性能
向上を図ることができる.また、本実施例では、LUI
命令が分岐命令のディレイスロットにある場合には、他
の命令との同時実行を抑止しているので、従来のプログ
ラムをそのまま実行しても、悪影響を与えることはなく
、互換性を維持することができる。
えることなく、32ビット長のイミデイエイトを1サイ
クルで操作できるようになり、互換性を維持しつつ性能
向上を図ることができる.また、本実施例では、LUI
命令が分岐命令のディレイスロットにある場合には、他
の命令との同時実行を抑止しているので、従来のプログ
ラムをそのまま実行しても、悪影響を与えることはなく
、互換性を維持することができる。
以上述べてきたように本発明によれば、前後の依存関係
を考慮しながら、2つの命令を同時に実行する命令制御
方式を容易に実現できる。
を考慮しながら、2つの命令を同時に実行する命令制御
方式を容易に実現できる。
従って、ピーク時には従来の2倍の処理性能を持つデー
タプロセッサを容易に実現できる。
タプロセッサを容易に実現できる。
第1図(a)及び(b)は本発明の一実施例の特徴であ
る2つの命令同時実行を可能とするデータプロセッサの
プロックダイアグラムを示す図であり、 第2図(a)及び(b)は本発明の一実施例のデータプ
ロセッサのための命令のフォーマットを示す図であり, 第3図(a)及至(d)は本発明の一実施例のデータプ
ロセッサが2つの命令の直列に実行する際のプロックダ
イアグラムを示す図であり、第4図(a)及至(c)は
本発明の一実施例のデータプロセッサのパイプライン処
理の動作を示す図であり、 第5図は本発明の一実施例のデータプロセッサのための
命令のオペレーションコードのビット割当てを示す表図
であり、 第6図は第1図のデータプロセッサの基本的なシステム
構成を示すプロックダイアグラムである。 610・・・プロセッサ、620・・・プログラムメモ
リ、630・・・データメモリ、640・・・ブリフェ
ッチバッファ、641,642・・・命令レジスタ、6
44,645・・・命令デコーダ、650・・・レジス
タファイル、651・・・演算器、652・・・シフタ
、131,132・・・レジスタ番号比較器。
る2つの命令同時実行を可能とするデータプロセッサの
プロックダイアグラムを示す図であり、 第2図(a)及び(b)は本発明の一実施例のデータプ
ロセッサのための命令のフォーマットを示す図であり, 第3図(a)及至(d)は本発明の一実施例のデータプ
ロセッサが2つの命令の直列に実行する際のプロックダ
イアグラムを示す図であり、第4図(a)及至(c)は
本発明の一実施例のデータプロセッサのパイプライン処
理の動作を示す図であり、 第5図は本発明の一実施例のデータプロセッサのための
命令のオペレーションコードのビット割当てを示す表図
であり、 第6図は第1図のデータプロセッサの基本的なシステム
構成を示すプロックダイアグラムである。 610・・・プロセッサ、620・・・プログラムメモ
リ、630・・・データメモリ、640・・・ブリフェ
ッチバッファ、641,642・・・命令レジスタ、6
44,645・・・命令デコーダ、650・・・レジス
タファイル、651・・・演算器、652・・・シフタ
、131,132・・・レジスタ番号比較器。
Claims (1)
- 【特許請求の範囲】 1、(1)所定のビット幅の命令長の第1及び第2の命
令をメモリからフェッチし、上記第1及び第2の命令を
並行に出力する命令フェッチユニットと、 (2)その入力に上記命令フェッチユニットから出力さ
れる上記第1の命令のオペレーションコードが供給され
る第1の命令デコーダと、 (3)その入力に上記命令フェッチユニットから出力さ
れる上記第2の命令のオペレーションコードが供給され
る第2の命令デコーダと、 (4)少なくともレジスタファイル、演算器およびシフ
タを含み、上記第1の命令デコーダのデコード結果およ
び上記第2の命令デコーダのデコード結果の少なくとも
いずれかによって制御される命令実行ユニットと、 (5)上記命令フェッチユニットから出力される上記第
1の命令のデスティネーションフィールドの情報と上記
命令フェッチユニットから出力される上記第2の命令の
第1ソースフィールドの情報とを比較する第1の比較器
と、 (6)上記命令フェッチユニットから出力される上記第
1の命令のデスティネーションフィールドの情報と上記
命令フェッチユニットから出力される上記第2の命令の
デスティネーションフィールドの情報とを比較する第2
の比較器を具備してなり、 上記レジスタファイルは複数のレジスタからなり、 上記第1の比較器の出力と上記第2の比較器の出力とに
よる制御条件に従って上記第1の命令のイミディエイト
データに関係した上記シフタの上記出力を上記レジスタ
ファイルをバイパスして上記演算器の入力に供給するた
めの信号伝達経路をさらに具備することを特徴とするデ
ータプロセッサ。 2、上記命令フェッチユニットから出力される上記第1
の命令が上記演算器と本来は無関係に該第1の命令のイ
ミディエイトデータに関係した上記シフタの出力を該第
1の命令のデスティネーションフィールドの情報によっ
て指定される上記レジスタファイル中の選択されたひと
つのレジスタに本来はセットする命令であり、また上記
命令フェッチユニットから出力される上記第2の命令が
上記シフタと本来は無関係に該第2の命令の第1ソース
フィールドの情報によって指定される上記レジスタファ
イル中の選択されたひとつのレジスタの情報と該第2の
命令の第2ソースフィールドに関係した情報とを上記演
算器で処理し該処理結果を該第2の命令のデスティネー
ションフィールドの情報によって指定される上記レジス
タファイル中の選択されたひとつのレジスタにセットす
る命令である場合、上記第1の比較器の両比較入力が互
いに一致すると言う条件で、 上記レジスタファイルをバイパスして上記信号伝達経路
を介して上記シフタの上記出力が上記演算器の上記入力
に供給されることを特徴とする請求項1記載のデータプ
ロセッサ。3、上記第1の比較器の上記両比較入力が互
いに一致すると言う上記条件に加えて、また上記第2の
比較器の上記両比較入力が互いに一致する条件では、 上記第1の命令の上記イミディエイトデータに関係した
上記シフタの上記出力は、上記レジスタファイルにセッ
トされることなく、上記信号伝達経路を介して上記演算
器の上記入力に供給されることを特徴とする請求項2記
載のデータプロセッサ。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1-288874 | 1989-11-08 | ||
JP28887489 | 1989-11-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH03218523A true JPH03218523A (ja) | 1991-09-26 |
JP2816248B2 JP2816248B2 (ja) | 1998-10-27 |
Family
ID=17735881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2279006A Expired - Fee Related JP2816248B2 (ja) | 1989-11-08 | 1990-10-19 | データプロセッサ |
Country Status (5)
Country | Link |
---|---|
US (1) | US5269007A (ja) |
EP (1) | EP0427245B1 (ja) |
JP (1) | JP2816248B2 (ja) |
KR (1) | KR0178078B1 (ja) |
DE (1) | DE69032174T2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05143328A (ja) * | 1991-11-20 | 1993-06-11 | Fujitsu Ltd | 情報処理装置におけるレジスタの読出制御方式 |
US6484253B1 (en) | 1997-01-24 | 2002-11-19 | Mitsubishi Denki Kabushiki Kaisha | Data processor |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2834292B2 (ja) * | 1990-08-15 | 1998-12-09 | 株式会社日立製作所 | データ・プロセッサ |
JP2984463B2 (ja) * | 1991-06-24 | 1999-11-29 | 株式会社日立製作所 | マイクロコンピュータ |
JP3105197B2 (ja) | 1991-06-24 | 2000-10-30 | 株式会社日立製作所 | 除算回路及び除算方法 |
CA2123442A1 (en) * | 1993-09-20 | 1995-03-21 | David S. Ray | Multiple execution unit dispatch with instruction dependency |
DE69415126T2 (de) * | 1993-10-21 | 1999-07-08 | Sun Microsystems Inc., Mountain View, Calif. | Gegenflusspipelineprozessor |
US5542059A (en) * | 1994-01-11 | 1996-07-30 | Exponential Technology, Inc. | Dual instruction set processor having a pipeline with a pipestage functional unit that is relocatable in time and sequence order |
US5481684A (en) * | 1994-01-11 | 1996-01-02 | Exponential Technology, Inc. | Emulating operating system calls in an alternate instruction set using a modified code segment descriptor |
JPH07219769A (ja) * | 1994-02-07 | 1995-08-18 | Mitsubishi Electric Corp | マイクロプロセッサ |
WO1995022102A1 (en) * | 1994-02-08 | 1995-08-17 | Meridian Semiconductor, Inc. | Method and apparatus for simultaneously executing instructions in a pipelined microprocessor |
US5481693A (en) * | 1994-07-20 | 1996-01-02 | Exponential Technology, Inc. | Shared register architecture for a dual-instruction-set CPU |
US5685009A (en) * | 1994-07-20 | 1997-11-04 | Exponential Technology, Inc. | Shared floating-point registers and register port-pairing in a dual-architecture CPU |
US5619663A (en) * | 1994-09-16 | 1997-04-08 | Philips Electronics North America Corp. | Computer instruction prefetch system |
JP3543181B2 (ja) * | 1994-11-09 | 2004-07-14 | 株式会社ルネサステクノロジ | データ処理装置 |
US5649174A (en) * | 1994-12-09 | 1997-07-15 | Vlsi Technology Inc. | Microprocessor with instruction-cycle versus clock-frequency mode selection |
US5659785A (en) * | 1995-02-10 | 1997-08-19 | International Business Machines Corporation | Array processor communication architecture with broadcast processor instructions |
TW448403B (en) * | 1995-03-03 | 2001-08-01 | Matsushita Electric Ind Co Ltd | Pipeline data processing device and method for executing multiple data processing data dependent relationship |
JP2798121B2 (ja) * | 1995-08-04 | 1998-09-17 | 日本電気株式会社 | データ処理装置 |
JP3658072B2 (ja) * | 1996-02-07 | 2005-06-08 | 株式会社ルネサステクノロジ | データ処理装置およびデータ処理方法 |
US5790826A (en) * | 1996-03-19 | 1998-08-04 | S3 Incorporated | Reduced register-dependency checking for paired-instruction dispatch in a superscalar processor with partial register writes |
US5870577A (en) * | 1996-11-27 | 1999-02-09 | International Business Machines, Corp. | System and method for dispatching two instructions to the same execution unit in a single cycle |
US5864341A (en) * | 1996-12-09 | 1999-01-26 | International Business Machines Corporation | Instruction dispatch unit and method for dynamically classifying and issuing instructions to execution units with non-uniform forwarding |
US6061780A (en) * | 1997-01-24 | 2000-05-09 | Texas Instruments Incorporated | Execution unit chaining for single cycle extract instruction having one serial shift left and one serial shift right execution units |
US6260137B1 (en) * | 1997-09-12 | 2001-07-10 | Siemens Aktiengesellschaft | Data processing unit with digital signal processing capabilities |
US6366998B1 (en) | 1998-10-14 | 2002-04-02 | Conexant Systems, Inc. | Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model |
JP3683248B2 (ja) * | 2002-10-22 | 2005-08-17 | 富士通株式会社 | 情報処理装置及び情報処理方法 |
US8135975B2 (en) * | 2007-03-09 | 2012-03-13 | Analog Devices, Inc. | Software programmable timing architecture |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6028015B2 (ja) * | 1980-08-28 | 1985-07-02 | 日本電気株式会社 | 情報処理装置 |
JPS6015746A (ja) * | 1983-07-08 | 1985-01-26 | Hitachi Ltd | デ−タ処理装置 |
GB8401807D0 (en) * | 1984-01-24 | 1984-02-29 | Int Computers Ltd | Pipelined data processing apparatus |
US4734852A (en) * | 1985-08-30 | 1988-03-29 | Advanced Micro Devices, Inc. | Mechanism for performing data references to storage in parallel with instruction execution on a reduced instruction-set processor |
DE3751503T2 (de) * | 1986-03-26 | 1996-05-09 | Hitachi Ltd | Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen. |
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 |
JPH0810430B2 (ja) * | 1986-11-28 | 1996-01-31 | 株式会社日立製作所 | 情報処理装置 |
CA1327080C (en) * | 1987-05-26 | 1994-02-15 | Yoshiko Yamaguchi | Reduced instruction set computer (risc) type microprocessor |
US5073855A (en) * | 1989-06-30 | 1991-12-17 | Bull Hn Information Systems Inc. | Resource conflict detection method and apparatus included in a pipelined processing unit |
-
1990
- 1990-10-19 JP JP2279006A patent/JP2816248B2/ja not_active Expired - Fee Related
- 1990-11-05 KR KR1019900017816A patent/KR0178078B1/ko not_active IP Right Cessation
- 1990-11-05 US US07/609,408 patent/US5269007A/en not_active Expired - Fee Related
- 1990-11-07 DE DE69032174T patent/DE69032174T2/de not_active Expired - Fee Related
- 1990-11-07 EP EP90121337A patent/EP0427245B1/en not_active Expired - Lifetime
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05143328A (ja) * | 1991-11-20 | 1993-06-11 | Fujitsu Ltd | 情報処理装置におけるレジスタの読出制御方式 |
US6484253B1 (en) | 1997-01-24 | 2002-11-19 | Mitsubishi Denki Kabushiki Kaisha | Data processor |
Also Published As
Publication number | Publication date |
---|---|
DE69032174D1 (de) | 1998-04-30 |
KR910010304A (ko) | 1991-06-29 |
EP0427245A3 (en) | 1992-01-29 |
EP0427245B1 (en) | 1998-03-25 |
JP2816248B2 (ja) | 1998-10-27 |
EP0427245A2 (en) | 1991-05-15 |
KR0178078B1 (ko) | 1999-05-15 |
US5269007A (en) | 1993-12-07 |
DE69032174T2 (de) | 1998-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH03218523A (ja) | データプロセッサ | |
US7617388B2 (en) | Virtual instruction expansion using parameter selector defining logic operation on parameters for template opcode substitution | |
US6345357B1 (en) | Versatile branch-less sequence control of instruction stream containing step repeat loop block using executed instructions number counter | |
US5233694A (en) | Pipelined data processor capable of performing instruction fetch stages of a plurality of instructions simultaneously | |
US20010010072A1 (en) | Instruction translator translating non-native instructions for a processor into native instructions therefor, instruction memory with such translator, and data processing apparatus using them | |
KR100254007B1 (ko) | 2개의 명령을 동시에 실행할 수 있는 데이타프로세서 | |
US20040015680A1 (en) | Data processor for modifying and executing operation of instruction code | |
JPH0926878A (ja) | データ処理装置 | |
JPH1091443A (ja) | 情報処理回路、マイクロコンピュータ及び電子機器 | |
JPH1049368A (ja) | 条件実行命令を有するマイクロプロセッサ | |
JPH1049370A (ja) | 遅延命令を有するマイクロプロセッサ | |
CN108139911B (zh) | 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格 | |
US5333284A (en) | Repeated ALU in pipelined processor design | |
JP3578883B2 (ja) | データ処理装置 | |
JP5193624B2 (ja) | データプロセッサ | |
US6209080B1 (en) | Constant reconstruction processor that supports reductions in code size and processing time | |
JPH07239780A (ja) | 1クロック可変長命令実行処理型命令読み込み電子計 算機 | |
JP2000207210A (ja) | マイクロプロセッサ | |
US5187782A (en) | Data processing system | |
US5649229A (en) | Pipeline data processor with arithmetic/logic unit capable of performing different kinds of calculations in a pipeline stage | |
JP5610551B2 (ja) | データプロセッサ | |
JPH07191845A (ja) | 即値データ転送装置 | |
JP5767374B2 (ja) | データプロセッサ | |
JP2002123389A (ja) | データ処理装置 | |
JPH0769805B2 (ja) | データ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |