JP2816248B2 - データプロセッサ - Google Patents
データプロセッサInfo
- Publication number
- JP2816248B2 JP2816248B2 JP2279006A JP27900690A JP2816248B2 JP 2816248 B2 JP2816248 B2 JP 2816248B2 JP 2279006 A JP2279006 A JP 2279006A JP 27900690 A JP27900690 A JP 27900690A JP 2816248 B2 JP2816248 B2 JP 2816248B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- register
- output
- data
- bit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
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)
Description
【発明の詳細な説明】 〔産業上の利用分野〕 本発明は主にマイクロプロセッサ(MPU)の如きデー
タプロセッサに係り、特に、32ビットRISCプロセッサの
2命令同時実行の処理方式に関する。
タプロセッサに係り、特に、32ビットRISCプロセッサの
2命令同時実行の処理方式に関する。
本発明に関係する公知例としては、「MIPS RISC ARCH
ITECTURE」:1988,Prentice−Hall,pp A−39およびA−5
8、「1989 IEEE International Solid−State Circuits
Conference DIGEST OF TECHNICAL PAPERS」,pp54−55
および杉原英文「100万トランジスタを集積し科学技術
計算、ビジユアル化をねらうマイクロプロセッサ8086
0」日経エレクトロニクス 1989.4.3(no.470)pp199−
209,を挙げることができる。
ITECTURE」:1988,Prentice−Hall,pp A−39およびA−5
8、「1989 IEEE International Solid−State Circuits
Conference DIGEST OF TECHNICAL PAPERS」,pp54−55
および杉原英文「100万トランジスタを集積し科学技術
計算、ビジユアル化をねらうマイクロプロセッサ8086
0」日経エレクトロニクス 1989.4.3(no.470)pp199−
209,を挙げることができる。
最近の高性能なプロセッサシステムでは、RISC(Redu
ced Instruction Set Computer)アーキテクチャを採用
している。このRISCプロセッサでは、命令の長さは32ビ
ットに固定されている。従って、32ビット長のイミディ
エイトデータ(即値)を扱う場合、2つの命令に分解し
て実行する必要がある。例えば以下のようになる。
ced Instruction Set Computer)アーキテクチャを採用
している。このRISCプロセッサでは、命令の長さは32ビ
ットに固定されている。従って、32ビット長のイミディ
エイトデータ(即値)を扱う場合、2つの命令に分解し
て実行する必要がある。例えば以下のようになる。
LUI rt, <upper 16 bits> ORI rt,rt,<lower 16 bits> ここで、第1の命令はロード・アッパー・イミデイエ
イト(Load Upper Immediate)命令で、命令中に示され
た16ビットのイミディエイトデータを左に16ビット分シ
フトして、32ビットのデータにしたものをt番目のレジ
スタrtに格納する命令である。
イト(Load Upper Immediate)命令で、命令中に示され
た16ビットのイミディエイトデータを左に16ビット分シ
フトして、32ビットのデータにしたものをt番目のレジ
スタrtに格納する命令である。
第2の命令はオア・イミディエイト(Or Immediate)
命令であって、命令中に示された16ビットのイミディエ
イトデータの上位に16ビット分の「0」を拡張したもの
とt番目のレジスタrtの内容の論理和をレジスタrtに格
納する命令である。
命令であって、命令中に示された16ビットのイミディエ
イトデータの上位に16ビット分の「0」を拡張したもの
とt番目のレジスタrtの内容の論理和をレジスタrtに格
納する命令である。
上記2命令の実行の結果、レジスタrtに32ビット長の
イミディエイトデータをセットすることができる。
イミディエイトデータをセットすることができる。
このようなプロセッサの仕様について、米国ミップス
社の32ビットマイクロプロセッサR2000のアーキテクチ
ャマニユアルに記載されている。
社の32ビットマイクロプロセッサR2000のアーキテクチ
ャマニユアルに記載されている。
以上述べてきたように、従来のRISCプロセッサでは、
32ビットのイミディエイトデータを扱う場合、2つの命
令に分け、実行には2サイクルを要していた。
32ビットのイミディエイトデータを扱う場合、2つの命
令に分け、実行には2サイクルを要していた。
一方、最近では、バスのデータ幅と64ビット化して、
バスのバンド幅拡張による処理性能の向上を目指したプ
ロセッサが発表されている。例えば、1989年のISSCC(I
EEE International Solid−State Circuits Conferenc
e)ではインテル社らが64ビットデータバスを持つマイ
クロプロセッサを発表している。
バスのバンド幅拡張による処理性能の向上を目指したプ
ロセッサが発表されている。例えば、1989年のISSCC(I
EEE International Solid−State Circuits Conferenc
e)ではインテル社らが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
の命令を並行に出力する命令フェッチユニット(640)
と、 (2)その入力に上記命令フェッチユニット(640)か
ら出力される上記第1の命令のオペレーションコードが
供給される第1の命令デコーダ(644)と、 (3)その入力に上記命令フェッチユニット(640)か
ら出力される上記第2の命令のオペレーションコードが
供給される第2の命令デコーダ(645)と、 (4)少なくともレジスタファイル(650)、演算器(6
51)およびシフタ(652)を含み、上記第1の命令デコ
ーダ(644)のデコード結果および上記第2の命令デコ
ーダ(645)のデコード結果の少なくともいずれかによ
って制御される命令実行ユニットと、 (5)上記命令フェッチユニット(640)から出力され
る上記第1の命令のデスティネーションフィールド(11
2)の情報と上記命令フェッチユニット(640)から出力
される上記第2の命令の第1ソースフィールド(123)
の情報とを比較する第1の比較器(132)と、 (6)上記命令フェッチユニット(640)から出力され
る上記第1の命令のデスティネーションフィールド(11
2)の情報と上記命令フェッチユニット(640)から出力
される上記第2の命令のデスティネーションフィールド
(122)の情報とを比較する第2の比較器(131)を具備
してなり、 上記レジスタファイル(650)は複数のレジスタ(R0,
R1,R2,R3…R31)からなり、 上記第1の比較器(132)の出力と上記第2の比較器
(131)の出力とによる制御条件に従って上記第1の命
令のイミディエイトデータ(114)に関係した上記シフ
タ(652)の上記出力を上記レジスタファイル(650)を
バイパスして上記演算器(651)の入力(656)に供給す
るための信号伝達経路をさらに具備するものである(第
1図(a)参照)。
ロセッサは、 (1)所定のビット幅(32ビット)の命令長の第1及び
第2の命令をメモリからフェッチし、上記第1及び第2
の命令を並行に出力する命令フェッチユニット(640)
と、 (2)その入力に上記命令フェッチユニット(640)か
ら出力される上記第1の命令のオペレーションコードが
供給される第1の命令デコーダ(644)と、 (3)その入力に上記命令フェッチユニット(640)か
ら出力される上記第2の命令のオペレーションコードが
供給される第2の命令デコーダ(645)と、 (4)少なくともレジスタファイル(650)、演算器(6
51)およびシフタ(652)を含み、上記第1の命令デコ
ーダ(644)のデコード結果および上記第2の命令デコ
ーダ(645)のデコード結果の少なくともいずれかによ
って制御される命令実行ユニットと、 (5)上記命令フェッチユニット(640)から出力され
る上記第1の命令のデスティネーションフィールド(11
2)の情報と上記命令フェッチユニット(640)から出力
される上記第2の命令の第1ソースフィールド(123)
の情報とを比較する第1の比較器(132)と、 (6)上記命令フェッチユニット(640)から出力され
る上記第1の命令のデスティネーションフィールド(11
2)の情報と上記命令フェッチユニット(640)から出力
される上記第2の命令のデスティネーションフィールド
(122)の情報とを比較する第2の比較器(131)を具備
してなり、 上記レジスタファイル(650)は複数のレジスタ(R0,
R1,R2,R3…R31)からなり、 上記第1の比較器(132)の出力と上記第2の比較器
(131)の出力とによる制御条件に従って上記第1の命
令のイミディエイトデータ(114)に関係した上記シフ
タ(652)の上記出力を上記レジスタファイル(650)を
バイパスして上記演算器(651)の入力(656)に供給す
るための信号伝達経路をさらに具備するものである(第
1図(a)参照)。
1サイクルでメモリ(620)から第1と第2の命令が
命令フェッチユニット(640)によってフェッチされ、
このフェッチされた第1と第2の命令は第1と第2のデ
コーダ(644,645)によってデコードされる。
命令フェッチユニット(640)によってフェッチされ、
このフェッチされた第1と第2の命令は第1と第2のデ
コーダ(644,645)によってデコードされる。
第1と第2のデコーダ(644,645)のデコード結果に
従って、命令実行ユニット(650,651,652)が制御され
る。
従って、命令実行ユニット(650,651,652)が制御され
る。
上記レジスタファイル(650)をバイパスしてこの信
号伝達経路を介して上記シフタ(652)の上記出力を上
記演算器(651)の上記入力(656)に供給する条件は、
命令フェッチユニット(640)から出力される第1の命
令が演算器(651)と本来は無関係に該第1の命令のイ
ミディエイトデータ(114)に関係したシフタ(652)の
出力を該第1の命令のデスティネーションフィールド
(112)の情報によって指定されるレジスタファイル(6
50)中の選択されたひとつのレジスタ(R3)に本来はセ
ットする命令(LUI命令)であり、また命令フェッチユ
ニット(640)から出力される第2の命令が上記シフタ
(652)と本来は無関係に該第2の命令の第1ソースフ
ィールド(123)の情報によって指定されるレジスタフ
ァイル(650)中の選択されたひとつのレジスタ(R3)
の情報と該第2の命令の第2ソースフィールド(124)
に関係した情報とを演算器(651)で処理し該処理結果
を該第2の命令のデスティネーションフィールド(12
2)の情報によって指定されるレジスタファイル(650)
中の選択されたひとつのレジスタ(R3)にセットする命
令である場合、第1の比較器(132)の両比較入力(11
2、123)が互いに一致すると言う条件である。
号伝達経路を介して上記シフタ(652)の上記出力を上
記演算器(651)の上記入力(656)に供給する条件は、
命令フェッチユニット(640)から出力される第1の命
令が演算器(651)と本来は無関係に該第1の命令のイ
ミディエイトデータ(114)に関係したシフタ(652)の
出力を該第1の命令のデスティネーションフィールド
(112)の情報によって指定されるレジスタファイル(6
50)中の選択されたひとつのレジスタ(R3)に本来はセ
ットする命令(LUI命令)であり、また命令フェッチユ
ニット(640)から出力される第2の命令が上記シフタ
(652)と本来は無関係に該第2の命令の第1ソースフ
ィールド(123)の情報によって指定されるレジスタフ
ァイル(650)中の選択されたひとつのレジスタ(R3)
の情報と該第2の命令の第2ソースフィールド(124)
に関係した情報とを演算器(651)で処理し該処理結果
を該第2の命令のデスティネーションフィールド(12
2)の情報によって指定されるレジスタファイル(650)
中の選択されたひとつのレジスタ(R3)にセットする命
令である場合、第1の比較器(132)の両比較入力(11
2、123)が互いに一致すると言う条件である。
この条件では、第1の命令と第2の命令とは基本的に
同時実行されることができ、さらにレジスタファイル
(650)をバイパスして第1の命令のイミディエイトデ
ータ(114)に関係したシフタ(652)の出力が第2の命
令の第1ソースフィールド(123)の情報として高速に
演算器(651)の入力(656)に供給されることが可能と
なる。
同時実行されることができ、さらにレジスタファイル
(650)をバイパスして第1の命令のイミディエイトデ
ータ(114)に関係したシフタ(652)の出力が第2の命
令の第1ソースフィールド(123)の情報として高速に
演算器(651)の入力(656)に供給されることが可能と
なる。
このようなレジスタファイル(650)をバイパスする
と言う手法を採用しないとすれば、レジスタファイル
(650)を構成するレジスタ(R0,R1,R2,R3…R31)の数
が大きい場合に、シフタ(652)の出力がレジスタファ
イル(650)を介して演算器(651)の入力(656)に伝
達される際の遅延時間は大きなものとなってしまう。か
かる遅延時間の低減の点でも、本発明の代表的な実施例
は好適なものである。
と言う手法を採用しないとすれば、レジスタファイル
(650)を構成するレジスタ(R0,R1,R2,R3…R31)の数
が大きい場合に、シフタ(652)の出力がレジスタファ
イル(650)を介して演算器(651)の入力(656)に伝
達される際の遅延時間は大きなものとなってしまう。か
かる遅延時間の低減の点でも、本発明の代表的な実施例
は好適なものである。
第1の比較器(132)の両比較入力(112,123)が互い
に一致すると言う条件に加えて、また第2の比較器(13
1)の両比較入力(112,122)が互いに一致する条件(言
い替えると、第1と第2の命令のデスティネーションフ
ィールド(112,122)の両情報さらには第2の命令の第
1ソースフィールド(123)の情報が互いに一致する場
合)では、本来の通り先行する第1の命令(LUI命令)
によってシフタ(652)のデータをR3レジスタにセット
したとしても、R3レジスタにセットされたこのデータは
後続の第2の命令(ORI命令)による演算器(651)の処
理結果データによって更新されてしまうので、先行する
第1の命令(LUI命令)によるシフタ(652)のデータの
R3レジスタへのセットは無意味となるばかりか、データ
更新に無駄な時間を消費することとなる。
に一致すると言う条件に加えて、また第2の比較器(13
1)の両比較入力(112,122)が互いに一致する条件(言
い替えると、第1と第2の命令のデスティネーションフ
ィールド(112,122)の両情報さらには第2の命令の第
1ソースフィールド(123)の情報が互いに一致する場
合)では、本来の通り先行する第1の命令(LUI命令)
によってシフタ(652)のデータをR3レジスタにセット
したとしても、R3レジスタにセットされたこのデータは
後続の第2の命令(ORI命令)による演算器(651)の処
理結果データによって更新されてしまうので、先行する
第1の命令(LUI命令)によるシフタ(652)のデータの
R3レジスタへのセットは無意味となるばかりか、データ
更新に無駄な時間を消費することとなる。
これに対して本発明の代表的な実施例によれば、第1
の比較器(132)の両比較入力(112,123)が互いに一致
すると言う条件に加えて、また第2の比較器(131)の
両比較入力(112,122)が互いに一致する条件では、第
1の命令であるLUI命令によるバレルシフタ652のシフト
結果は、レジスタファイル650にセットされることな
く、第2の命令であるORI命令を実行するための演算器6
51の一方の入力(656)に直接かつ高速に供給される。
一方、演算器651の他方の入力(655)には第2の命令の
イミディエイトデータ124の32ビット拡張データが供給
される。かくして、第1の命令であるLUI命令と第2の
命令であるORI命令の2つの命令を1サイクルで高速に
実行することができる。
の比較器(132)の両比較入力(112,123)が互いに一致
すると言う条件に加えて、また第2の比較器(131)の
両比較入力(112,122)が互いに一致する条件では、第
1の命令であるLUI命令によるバレルシフタ652のシフト
結果は、レジスタファイル650にセットされることな
く、第2の命令であるORI命令を実行するための演算器6
51の一方の入力(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からフェッチされる
ことができる。
命令を同時にプログラムメモリ620からフェッチされる
ことができる。
データメモリ630は、オペランドアドレスバス631及び
オペランドデータバス632によって、プロセッサ610と接
続されている。
オペランドデータバス632によって、プロセッサ610と接
続されている。
オペランドアドレスバス631は、32ビット幅で4G(ギ
ガ)バイトまでアドレッシング可能である。
ガ)バイトまでアドレッシング可能である。
オペランドデータバス632は、32ビット幅で、1回の
転送で1ワードのデータがデータメモリ630から又はデ
ータメモリ630にフェッチ又はストアされることができ
る。
転送で1ワードのデータがデータメモリ630から又はデ
ータメモリ630にフェッチ又はストアされることができ
る。
また、プログラムメモリ620およびデータメモリ630
は、それぞれ、命令キャッシュメモリとデータキャッシ
ュメモリであり、メインメモリ(図示せず)の命令およ
びデータの一部のコピーを保持するものである。
は、それぞれ、命令キャッシュメモリとデータキャッシ
ュメモリであり、メインメモリ(図示せず)の命令およ
びデータの一部のコピーを保持するものである。
プロセッサの内部構造 プロセッサ610は命令のアドレスを計算するプログラ
ムカウンタ643,プリフェッチした命令を保持するプリフ
ェッチバッファ640,第1命令レジスタ641,第2命令レジ
スタ642,第1命令デコーダ644,第2命令デコーダ645,レ
ジスタファイル650,演算器651,バレルシフタ652,メモリ
アドレスレジスタ(MAR)653,メモリデータレジスタ(M
DR)654から成る。
ムカウンタ643,プリフェッチした命令を保持するプリフ
ェッチバッファ640,第1命令レジスタ641,第2命令レジ
スタ642,第1命令デコーダ644,第2命令デコーダ645,レ
ジスタファイル650,演算器651,バレルシフタ652,メモリ
アドレスレジスタ(MAR)653,メモリデータレジスタ(M
DR)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ビット幅のレジスタ、32本R
0、R1,R2,…,R31から成り、3ポートの読み出し及び3
ポートの書き込みが同時に可能である。
0、R1,R2,…,R31から成り、3ポートの読み出し及び3
ポートの書き込みが同時に可能である。
命令実行ユニット 命令実行ユニットは、演算器651とバレルシフタ652か
ら構成されている。
ら構成されている。
演算器651は、それぞれ32ビットのA側入力655とB側
入力656を持ち、2入力の算術論理演算を行なうALU(Ar
ithmetic and Logic Unit)により構成されており、バ
レルシフタ652はB側入力をA側入力の桁だけシフトす
る機能を有する。
入力656を持ち、2入力の算術論理演算を行なうALU(Ar
ithmetic and Logic Unit)により構成されており、バ
レルシフタ652はB側入力をA側入力の桁だけシフトす
る機能を有する。
命令のフォーマット 第2図は、本発明の一実施例である第1図のデータプ
ロセッサのための命令のフォーマットを説明するための
図である。
ロセッサのための命令のフォーマットを説明するための
図である。
第2図に示すように、1つの命令は32ビットの固定長
であって、左端より6ビット,5ビット,5ビット,16ビッ
トのフィールドに分割されている。
であって、左端より6ビット,5ビット,5ビット,16ビッ
トのフィールドに分割されている。
左端の6ビットのフィールド210は、命令の種類を示
すオペレーションコード(OPコード)である。
すオペレーションコード(OPコード)である。
次の5ビットのフィールド220は、命令の実行結果を
格納するレジスタを指定するデスティネーションフィー
ルドである。
格納するレジスタを指定するデスティネーションフィー
ルドである。
さらに次の5ビットのフィールド230は、命令の入力
レジスタの一方を指定する第1ソースフィールドであ
る。
レジスタの一方を指定する第1ソースフィールドであ
る。
右端の16ビットのフィールド240はもう一方の入力を
指定する第2ソースフィールドである。第2ソースフィ
ールド240は第2図(a)に示すように16ビットのイミ
ディエイトデータとして用いられる場合と、第2図
(b)に示すように、右端の5ビット250によってレジ
スタを指定する場合がある。第2ソースフィールドを上
記のどちらの使い方にするかは、OPコード210の左端の
ビットで指定され、「0」のとき(a)、「1」のとき
(b)のように使われる。(a)の形式の命令をイミデ
ィエイト命令と呼び、(b)の形式の命令をレジスタ命
令と呼ぶ。
指定する第2ソースフィールドである。第2ソースフィ
ールド240は第2図(a)に示すように16ビットのイミ
ディエイトデータとして用いられる場合と、第2図
(b)に示すように、右端の5ビット250によってレジ
スタを指定する場合がある。第2ソースフィールドを上
記のどちらの使い方にするかは、OPコード210の左端の
ビットで指定され、「0」のとき(a)、「1」のとき
(b)のように使われる。(a)の形式の命令をイミデ
ィエイト命令と呼び、(b)の形式の命令をレジスタ命
令と呼ぶ。
なお、本実施例ではレジスタファイル650のレジスタ
の数は32本であり、レジスタを指定する場合には上記の
ように5ビットを必要とする。
の数は32本であり、レジスタを指定する場合には上記の
ように5ビットを必要とする。
第5図はOPコード210のビット割り当てを示したもの
である。
である。
LUI(ロード・アッパー・イミディエイト)命令510
は、第2ソースフィールド240の16ビットのイミディエ
イトデータの右側に16ビット分の「0」を連結し、32ビ
ットのイミディエイトにして、デスティネーションフィ
ールド220に示されるレジスタに格納する命令である。
は、第2ソースフィールド240の16ビットのイミディエ
イトデータの右側に16ビット分の「0」を連結し、32ビ
ットのイミディエイトにして、デスティネーションフィ
ールド220に示されるレジスタに格納する命令である。
ADDI(アッド・イミディエイト)命令512は、第2ソ
ースフィールド240の16ビットのイミディエイトデータ
の左側に第2ソースフィールド240の最上位ビットと同
じ値を16ビット分、連結して、32ビットのイミディエイ
トに符号拡張した後、第1ソースフィールド230で示さ
れるレジスタの内容と加算して、デスティネーションフ
ィールド220に示されるレジスタに格納する命令であ
る。
ースフィールド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」を連結して、32ビットのイ
ミディエイトに拡張した後、第1ソースフィールド230
で示されるレジスタの内容との間で各ビットごとの論理
積を求めて、その結果をデスティネーションフィールド
220に示されるレジスタに格納する命令である。
ースフィールド240の16ビットのイミディエイトデータ
の左側に16ビット分の「0」を連結して、32ビットのイ
ミディエイトに拡張した後、第1ソースフィールド230
で示されるレジスタの内容との間で各ビットごとの論理
積を求めて、その結果をデスティネーションフィールド
220に示されるレジスタに格納する命令である。
ORI(オア・イミディエイト)命令518、及び、EORI
(イクスクルーシブ・オア・イミディエイト)命令520
は、ANDI命令516と同様に、それぞれ、論理和,排他的
論理和を求める命令である。
(イクスクルーシブ・オア・イミディエイト)命令520
は、ANDI命令516と同様に、それぞれ、論理和,排他的
論理和を求める命令である。
SLLI(シフト・レフト・ロジカル・イミディエイト)
命令522は、第1ソースフィールド230で示されるレジス
タの内容を第2ソースフィールド240の16ビットのイミ
ディエイトデータの数だけ左にシフトして、その結果を
デスティネーションフィールド220に示されるレジスタ
に格納する命令である。このとき、右端からシフトイン
される値は「0」である。
命令522は、第1ソースフィールド230で示されるレジス
タの内容を第2ソースフィールド240の16ビットのイミ
ディエイトデータの数だけ左にシフトして、その結果を
デスティネーションフィールド220に示されるレジスタ
に格納する命令である。このとき、右端からシフトイン
される値は「0」である。
SRLI(シフト・ライト・ロジカル・イミディエイト)
命令524は、SLLI命令522とは逆に右にシフトする命令で
ある。このとき、左端からシフトインされる値は「0」
である。
命令524は、SLLI命令522とは逆に右にシフトする命令で
ある。このとき、左端からシフトインされる値は「0」
である。
SRAI(シフト・ライト・アリスメツテイツク・イミデ
ィエイト)命令526は、SRLI命令524と同様に右にシフト
する命令であるが、左端からシフトインされる値は
「0」ではなく、第1ソースフィールド230で示される
レジスタの右端のビットと同じ値である。
ィエイト)命令526は、SRLI命令524と同様に右にシフト
する命令であるが、左端からシフトインされる値は
「0」ではなく、第1ソースフィールド230で示される
レジスタの右端のビットと同じ値である。
LD(ロード)命令530は、第2ソースフィールド240を
ADDI命令512と同様に32ビットのイミディエイトに符号
拡張した後、第1ソースフィールド230で示されるレジ
スタの内容と加算した結果をアドレスとし、そのアドレ
スで示されたデータメモリの内容をデスティネーション
フィールド220に示されるレジスタに格納する命令であ
る。
ADDI命令512と同様に32ビットのイミディエイトに符号
拡張した後、第1ソースフィールド230で示されるレジ
スタの内容と加算した結果をアドレスとし、そのアドレ
スで示されたデータメモリの内容をデスティネーション
フィールド220に示されるレジスタに格納する命令であ
る。
ST(ストア)命令532は、LD命令530と同様にアドレス
を求め、デスティネーションフィールド220に示される
レジスタの内容を、そのアドレスで示されたデータメモ
リに格納する命令である。
を求め、デスティネーションフィールド220に示される
レジスタの内容を、そのアドレスで示されたデータメモ
リに格納する命令である。
JUMP(ジャンプ)命令534は、無条件分岐命令で、LD
命令530と同様にアドレスを求め、そのアドレスへプロ
グラムの流れを変える命令である。
命令530と同様にアドレスを求め、そのアドレスへプロ
グラムの流れを変える命令である。
Bcc(ブランチ)命令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ソースオペランドと
してレジスタの内容を用いる命令である。
512からSRAI命令526において、第2ソースオペランドと
してレジスタの内容を用いる命令である。
2命令同時実行のためのアーキテクチァ 第1図は、本発明の一実施例の特徴である2つの命令
同時実行のための特徴的な構成と動作を第6図に追加し
て示すものである。
同時実行のための特徴的な構成と動作を第6図に追加し
て示すものである。
第1図(a)は、本発明の一実施例の特徴であるLUI
命令(その命令実行のために演算器651を使用せず、本
来はバレルシフタ652によるシフト結果をレジスタファ
イル650のひとつのレジスタにセットする命令)と他の
命令(その命令実行のためにバレルシフタ652を使用せ
ず、演算器651とレジスタファイル650のLUI命令の使用
レジスタとを使用する命令)を同時に実行するための構
成の動作を示す図である。
命令(その命令実行のために演算器651を使用せず、本
来はバレルシフタ652によるシフト結果をレジスタファ
イル650のひとつのレジスタにセットする命令)と他の
命令(その命令実行のためにバレルシフタ652を使用せ
ず、演算器651とレジスタファイル650のLUI命令の使用
レジスタとを使用する命令)を同時に実行するための構
成の動作を示す図である。
LUI命令が64ビット命令データバス622の左側でフェッ
チされ、ORI命令が右側でフェッチされた場合である。
チされ、ORI命令が右側でフェッチされた場合である。
従って、LUI命令で、本来はイミディエイトデータ114
をバレルシフタ652で左シフトした後、レジスタファイ
ル650のR3レジスタにセットする。次のORI命令で、本来
は直前のLUI命令でR3レジスタにセットされた左シフト
後のイミディエイトデータ114と32ビットに拡張された
イミディエイトデータ124との論理和のデータをR3レジ
スタに再びセットするものである。
をバレルシフタ652で左シフトした後、レジスタファイ
ル650のR3レジスタにセットする。次のORI命令で、本来
は直前のLUI命令でR3レジスタにセットされた左シフト
後のイミディエイトデータ114と32ビットに拡張された
イミディエイトデータ124との論理和のデータをR3レジ
スタに再びセットするものである。
しかしながら、本来の通り先行するLUI命令によって
バレルシフタ652による左シフトデータをR3レジスタに
セットしたとしても、R3レジスタにセットされたこのデ
ータは後続のORI命令による論理和のデータによって更
新されてしまうので、先行するLUI命令による左シフト
データのR3レジスタへのセットは無意味となる。
バレルシフタ652による左シフトデータをR3レジスタに
セットしたとしても、R3レジスタにセットされたこのデ
ータは後続のORI命令による論理和のデータによって更
新されてしまうので、先行するLUI命令による左シフト
データのR3レジスタへのセットは無意味となる。
これに対して第1図(a)の本実施例によれば、LUI
命令によるバレルシフタ652のシフト結果はレジスタフ
ァイル650にセットされることなく、ORI命令を実行する
ための演算器651の一方の入力656に供給される。演算器
651の他方の入力655には32ビットに拡張されたイミディ
エイトデータ124が供給される。かくして、第1図
(a)の実施例によれば、LUI命令とORI命令の2つの命
令を1サイクルで実行することができる。
命令によるバレルシフタ652のシフト結果はレジスタフ
ァイル650にセットされることなく、ORI命令を実行する
ための演算器651の一方の入力656に供給される。演算器
651の他方の入力655には32ビットに拡張されたイミディ
エイトデータ124が供給される。かくして、第1図
(a)の実施例によれば、LUI命令とORI命令の2つの命
令を1サイクルで実行することができる。
なお、ここでR3レジスタにセットされた32ビット長の
イミディエイトデータは、後の命令において、32ビット
長の定数として、算術演算命令(ADD,SUB等)や、論理
演算命令(AND,OR,EOR等)に利用される。また、32ビッ
ト長のアドレスとして、メモリ操作命令(LD,ST)や分
岐命令(Jump)に利用されることもある。
イミディエイトデータは、後の命令において、32ビット
長の定数として、算術演算命令(ADD,SUB等)や、論理
演算命令(AND,OR,EOR等)に利用される。また、32ビッ
ト長のアドレスとして、メモリ操作命令(LD,ST)や分
岐命令(Jump)に利用されることもある。
以下、この2つの命令の同時実行について、詳細に説
明する。
明する。
64ビット命令データバス622の左側でフェッチされたL
UI命令は第1命令レジスタ641にセットされ、同時に64
ビット命令データバス622の右側でフェッチされたORI命
令は第2命令レジスタ642にセットされる。
UI命令は第1命令レジスタ641にセットされ、同時に64
ビット命令データバス622の右側でフェッチされたORI命
令は第2命令レジスタ642にセットされる。
第1命令デコーダ644は第1命令レジスタ641のOPコー
ドフィールド111を解読してLUI命令であることを検出す
ると、第2命令デコーダ645を有効にして、第2命令レ
ジスタにセットされている命令を解読し、LUI命令の実
行と同じサイクルで並列に実行を開始する。
ドフィールド111を解読してLUI命令であることを検出す
ると、第2命令デコーダ645を有効にして、第2命令レ
ジスタにセットされている命令を解読し、LUI命令の実
行と同じサイクルで並列に実行を開始する。
つまり、LUI命令の動作として、第1命令レジスタ641
の第2ソースフィールド114の16ビットイミディエイト
の右側に「0」を16ビット分連結して32ビット長に拡張
したものをシフタ652で求める。尚、シフタ652は、第1
命令レジスタ641のOPコード111を解読する第1デコーダ
644によって制御される。
の第2ソースフィールド114の16ビットイミディエイト
の右側に「0」を16ビット分連結して32ビット長に拡張
したものをシフタ652で求める。尚、シフタ652は、第1
命令レジスタ641のOPコード111を解読する第1デコーダ
644によって制御される。
なおこの時、比較器131によって第1命令レジスタ641
のデスティネーションフィールド112と第2命令レジス
タ642のデスティネーションフィールド122を比較し、同
一でない場合は、第1命令レジスタ641のデスティネー
ションフィールド112で示されるR3レジスタへ、シフタ6
52の結果を格納する。第1図(a)の場合は、同一であ
るので、シフタ652の結果のR3レジスタへの格納は行な
わない。
のデスティネーションフィールド112と第2命令レジス
タ642のデスティネーションフィールド122を比較し、同
一でない場合は、第1命令レジスタ641のデスティネー
ションフィールド112で示されるR3レジスタへ、シフタ6
52の結果を格納する。第1図(a)の場合は、同一であ
るので、シフタ652の結果のR3レジスタへの格納は行な
わない。
また同時に、ORI命令の動作としては、第2ソースフ
ィールド124の16ビットイミディエイトを32ビット長に
拡張する。また、比較器132によって第1命令レジスタ6
41のデスティネーションフィールド112と第2命令レジ
スタ642の第1ソースフィールド123を比較し、同一であ
る(つまり、LUI命令のデスティネーションレジスタとO
RI命令のソースレジスタが同一である)場合は、第1ソ
ースフィールド123に従つたR3レジスタからの読み出し
を抑止し、代わりに、シフタ652の結果を用いて32ビッ
トに拡張されたイミディエイトデータ124との論理和演
算を行う。これら2つのデータの論理和を演算器651で
求め、その結果をデスティネーションフィールド122で
示されるR3レジスタへ格納する。なお、演算器651は、
第2命令レジスタ642のOPコード121を解読する第2デコ
ーダ645によって制御される。また、第2ソースフィー
ルド124のイミディエイトの拡張も第2デコーダ645によ
って制御される。
ィールド124の16ビットイミディエイトを32ビット長に
拡張する。また、比較器132によって第1命令レジスタ6
41のデスティネーションフィールド112と第2命令レジ
スタ642の第1ソースフィールド123を比較し、同一であ
る(つまり、LUI命令のデスティネーションレジスタとO
RI命令のソースレジスタが同一である)場合は、第1ソ
ースフィールド123に従つたR3レジスタからの読み出し
を抑止し、代わりに、シフタ652の結果を用いて32ビッ
トに拡張されたイミディエイトデータ124との論理和演
算を行う。これら2つのデータの論理和を演算器651で
求め、その結果をデスティネーションフィールド122で
示されるR3レジスタへ格納する。なお、演算器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によるシフト結果をレジスタファイル650のひと
つのレジスタにセットする命令)と他の命令(その命令
実行のためにバレルシフタ652を使用せず、演算器651を
使用しレジスタファイル650のLUI命令によるセット・レ
ジスタと異なるレジスタにセットを実行する命令)を同
時に実行する時のもう一つの動作を示す図である。
令実行のために演算器651を使用せず、本来はバレルシ
フタ652によるシフト結果をレジスタファイル650のひと
つのレジスタにセットする命令)と他の命令(その命令
実行のためにバレルシフタ652を使用せず、演算器651を
使用しレジスタファイル650のLUI命令によるセット・レ
ジスタと異なるレジスタにセットを実行する命令)を同
時に実行する時のもう一つの動作を示す図である。
ADD命令が64ビット命令データバス622の左側でフェッ
チされ、LUI命令が右側でフェッチされた場合である。A
DD命令でR1レジスタの内容とR2レジスタの内容を加算
し、R3レジスタに格納し、LUI命令でイミディエイトデ
ータをR4レジスタの上位ビットにセットする。この場
合、レジスタファイル650の使用レジスタの間で使用に
関する競合が生じることが無いので、ADD命令とLUI命令
の2つの命令を1サイクルで実行することができる。
チされ、LUI命令が右側でフェッチされた場合である。A
DD命令で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を解読してLUI命令であることを検出すると、
第2命令デコーダ645を有効にして、第1命令レジスタ
にセットされている命令の実行と同じサイクルで並行に
LUI命令の実行を開始する。
されたADD命令は第1命令レジスタ641にセットされ、同
時に64ビット命令データバス622の右側でフェッチされ
たLUI命令は第2命令レジスタ642にセットされる。第2
命令デコーダ645は第2命令レジスタ642のOPコードフィ
ールド151を解読してLUI命令であることを検出すると、
第2命令デコーダ645を有効にして、第1命令レジスタ
にセットされている命令の実行と同じサイクルで並行に
LUI命令の実行を開始する。
まず、ADD命令の動作として、第1命令レジスタ641の
第1ソースフィールド143に従つて、R1レジスタの内容
を読み出し、また、第2ソースフィールド144に従つ
て、R2レジスタの内容を読み出す。これら2つのデータ
の積を演算器651で求め、その結果をデスティネーショ
ンフィールド142で示されるR3レジスタへ格納する。な
お、演算器651は、第1命令レジスタ641のOPコード141
を解読する第1デコーダ644によって制御される。なお
この時、比較器131によって第1命令レジスタ641のデス
ティネーションフィールド142と第2命令レジスタ642の
デスティネーションフィールド152を比較し、同一であ
る(つまり、ADD命令のデスティネーションレジスタとL
UI命令のデスティネーションレジスタが同一である)場
合は、上記ADD命令の実行結果のR3レジスタへの格納を
抑止し、代わりに、LUI命令の実行結果をレジスタR3へ
格納する。
第1ソースフィールド143に従つて、R1レジスタの内容
を読み出し、また、第2ソースフィールド144に従つ
て、R2レジスタの内容を読み出す。これら2つのデータ
の積を演算器651で求め、その結果をデスティネーショ
ンフィールド142で示されるR3レジスタへ格納する。な
お、演算器651は、第1命令レジスタ641のOPコード141
を解読する第1デコーダ644によって制御される。なお
この時、比較器131によって第1命令レジスタ641のデス
ティネーションフィールド142と第2命令レジスタ642の
デスティネーションフィールド152を比較し、同一であ
る(つまり、ADD命令のデスティネーションレジスタとL
UI命令のデスティネーションレジスタが同一である)場
合は、上記ADD命令の実行結果のR3レジスタへの格納を
抑止し、代わりに、LUI命令の実行結果をレジスタR3へ
格納する。
また同時に、LUI命令の動作として、第2命令レジス
タ642の第2ソースフィールド154の16ビットイミディエ
イトの右側に「0」を16ビット分連結して32ビット長に
拡張したものをシフタ652で求め、その結果をデスティ
ネーションフィールド152で示されるR4レジスタへ格納
する。なお、シフタ652は、第2命令レジスタ642のOPコ
ード151を解読する第2デコーダ645によって制御され
る。
タ642の第2ソースフィールド154の16ビットイミディエ
イトの右側に「0」を16ビット分連結して32ビット長に
拡張したものをシフタ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(Complex Instru
ction Set Computer)プロセッサの如き通常のデータ・
プロセッサのためにコンパイルされたプログラムの分岐
命令の直前の命令に対応している。
ラムの分岐命令の直後の命令は、CISC(Complex Instru
ction Set Computer)プロセッサの如き通常のデータ・
プロセッサのためにコンパイルされたプログラムの分岐
命令の直前の命令に対応している。
一方、上述の如く、RISCプロセッサにおいては、分岐
命令の直後の命令(CISCプロセッサの場合の分岐命令の
直前の命令)を先に実行し、しかる後、分岐命令を実行
する。
命令の直後の命令(CISCプロセッサの場合の分岐命令の
直前の命令)を先に実行し、しかる後、分岐命令を実行
する。
遅延分岐およびディレイスロットに関しては、Gerry
Kane著による「MIPS RISC ARCHITECHTURE」第1−9頁
乃至第1−11頁(1988年)に詳しく記載されている。
Kane著による「MIPS RISC ARCHITECHTURE」第1−9頁
乃至第1−11頁(1988年)に詳しく記載されている。
すなわち、通常のプロセッサは命令フェッチ、命令デ
コード、命令実行の多段のパイプラインによる命令の並
列処理を実行している。
コード、命令実行の多段のパイプラインによる命令の並
列処理を実行している。
このパイプライン並列処理のため、分岐命令による分
岐先アドレス計算を行っている間に、命令フェッチユニ
ットは分岐命令に続く命令を次々とフェッチする処理を
続行する。
岐先アドレス計算を行っている間に、命令フェッチユニ
ットは分岐命令に続く命令を次々とフェッチする処理を
続行する。
従来のCISCプロセッサでは、分岐を実行する時には、
先行的にフェッチした分岐命令に続く命令を無効化し
て、分岐先命令を新たにフェッチし、命令デコード、命
令実行するものである。従って、CISCプロセッサでは、
その実行に2サイクルを必要とする分岐命令の後に、自
動的に何も作業をしない1サイクル(No Operationのサ
イクル)が挿入されてしまう。
先行的にフェッチした分岐命令に続く命令を無効化し
て、分岐先命令を新たにフェッチし、命令デコード、命
令実行するものである。従って、CISCプロセッサでは、
その実行に2サイクルを必要とする分岐命令の後に、自
動的に何も作業をしない1サイクル(No Operationのサ
イクル)が挿入されてしまう。
一方、RISCプロセッサでは、分岐を実行する時には、
先行的にフェッチした分岐命令に続く命令(CISCプロセ
ッサの場合の分岐命令の直前の命令)を無効化しない
で、先にこの命令を実行し、しかる後に分岐命令を実行
し、新たに分岐先命令をフェッチするものである。
先行的にフェッチした分岐命令に続く命令(CISCプロセ
ッサの場合の分岐命令の直前の命令)を無効化しない
で、先にこの命令を実行し、しかる後に分岐命令を実行
し、新たに分岐先命令をフェッチするものである。
この様に、RISCプロセッサでは分岐命令の後に、無効
化されることのない有効な命令をプログラム中で配置す
ることによって、このサイクルを有効に活用することが
できる。このような分岐命令の仕様は遅延分岐と呼ば
れ、分岐命令の後の1サイクルはディレイスロットと呼
ばれている。
化されることのない有効な命令をプログラム中で配置す
ることによって、このサイクルを有効に活用することが
できる。このような分岐命令の仕様は遅延分岐と呼ば
れ、分岐命令の後の1サイクルはディレイスロットと呼
ばれている。
ディレイスロットとLUI命令の処理 従って、本発明の一実施例によるRISCプロセッサにお
いて、遅延分岐のディレイスロットと関係してLUI命令
がある場合の処理の手法について以下に説明する。
いて、遅延分岐のディレイスロットと関係して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命令は分岐命令のディレイスロットで実行さ
れ、ORI命令はLUI命令とは同時に実行されない。
前の命令は分岐命令ではない場合について説明した。直
前の命令が分岐命令の場合は、第1図(a)の本実施例
ではLUI命令は分岐命令のディレイスロットで実行さ
れ、ORI命令はLUI命令とは同時に実行されない。
なお、上記第1図(b)の説明では、LUI命令の直前
の命令はADD命令で、分岐命令ではない場合について説
明した。直前の命令(左側の命令)が分岐命令の場合
は、第1図(b)の本実施例ではLUI命令は分岐命令の
ディレイスロットで実行され、LUI命令は左側の命令
(分岐命令)とは同時に実行されない。
の命令はADD命令で、分岐命令ではない場合について説
明した。直前の命令(左側の命令)が分岐命令の場合
は、第1図(b)の本実施例ではLUI命令は分岐命令の
ディレイスロットで実行され、LUI命令は左側の命令
(分岐命令)とは同時に実行されない。
2命令の直列実行 次に、第1図もしくは第6図に示したデータプロセッ
サが2つの命令を同時実行できず、2つの命令を直列に
実行する場合について、第3図(a),(b),
(c),(d)を参照して説明する。
サが2つの命令を同時実行できず、2つの命令を直列に
実行する場合について、第3図(a),(b),
(c),(d)を参照して説明する。
第3図(a)は、R1レジスタの内容とR2レジスタの内
容を加算してR3レジスタへ格納するADD命令を実行する
時の動作を示す図である。尚、この命令は64ビット命令
データバス622の左側でフェッチされたものとする。
容を加算して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コード31
4を解読する第1デコーダ644によって制御される。
4を解読する第1デコーダ644によって制御される。
次に実行する命令は、第2命令レジスタ642に保持さ
れている命令であるので、この命令を第1命令レジスタ
641へ転送して、以下同様に実行する。
れている命令であるので、この命令を第1命令レジスタ
641へ転送して、以下同様に実行する。
第3図(b)は、1Rレジスタの内容とイミディエイト
とを加算して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ソースフィールド3
22のイミディエイトの符号拡張も第1デコーダ644によ
って制御される。次に実行する命令は、第2命令レジス
タ642に保持されている命令であるので、この命令を第
1命令レジスタ641へ転送して、以下同様に実行する。
とを加算して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ソースフィールド3
22のイミディエイトの符号拡張も第1デコーダ644によ
って制御される。次に実行する命令は、第2命令レジス
タ642に保持されている命令であるので、この命令を第
1命令レジスタ641へ転送して、以下同様に実行する。
第3図(c)は、R1レジスタの内容とイミディエイト
を加算した値をアドレスとするデータメモリの内容をR3
レジスタへ格納するLD命令を実行する時の動作を示す図
である。尚、この命令は64ビット命令データバス622の
左側でフェッチされたものとする。第1命令レジスタ64
1の第1ソースフィールド331に従ってR1レジスタの内容
を読み出し、また、第2ソースフィールド332の16ビッ
トイミディエイトを32ビット長に符号拡張する。これら
2つのデータを演算器651で加算し、その結果をMAR653
へ転送し、データメモリ630をアクセスする。
を加算した値をアドレスとするデータメモリの内容をR3
レジスタへ格納するLD命令を実行する時の動作を示す図
である。尚、この命令は64ビット命令データバス622の
左側でフェッチされたものとする。第1命令レジスタ64
1の第1ソースフィールド331に従ってR1レジスタの内容
を読み出し、また、第2ソースフィールド332の16ビッ
トイミディエイトを32ビット長に符号拡張する。これら
2つのデータを演算器651で加算し、その結果をMAR653
へ転送し、データメモリ630をアクセスする。
データメモリ630から読み出されたデータはMDR654を
経由して、デスティネーションフィールド313で示され
るR3レジスタへ格納される。次に実行する命令は、第2
命令レジスタ642に保持されている命令であるので、こ
の命令を第1命令レジスタ641へ転送して、以下同様に
実行する。
経由して、デスティネーションフィールド313で示され
るR3レジスタへ格納される。次に実行する命令は、第2
命令レジスタ642に保持されている命令であるので、こ
の命令を第1命令レジスタ641へ転送して、以下同様に
実行する。
第3図(d)は、R1レジスタの内容とイミディエイト
を加算した値をアドレスとするデータメモリ630の領域
へR3レジスタの内容を格納するST命令を実行する時の動
作を示す図である。尚、この命令は64ビット命令データ
バス622の左側でフェッチされたものとする。第1命令
レジスタ641の第1ソースフィールド341に従ってR1レジ
スタの内容を読み出し、また、第2ソースフィールド34
2の16ビットイミディエイトを32ビット長に符号拡張す
る。これら2つのデータを演算器651で加算し、その結
果をMAR653へ転送し、データメモリ630をアクセスす
る。一方、書き込みデータはデスティネーションフィー
ルド343で示されるR3レジスタから読み出され、MDR654
を経由してデータメモリ630へ転送され、格納される。
次に実行する命令は、第2命令レジスタ642に保持され
ている命令であるので、この命令を第1命令レジスタ64
1へ転送して、以下同様に実行する。
を加算した値をアドレスとするデータメモリ630の領域
へR3レジスタの内容を格納するST命令を実行する時の動
作を示す図である。尚、この命令は64ビット命令データ
バス622の左側でフェッチされたものとする。第1命令
レジスタ641の第1ソースフィールド341に従ってR1レジ
スタの内容を読み出し、また、第2ソースフィールド34
2の16ビットイミディエイトを32ビット長に符号拡張す
る。これら2つのデータを演算器651で加算し、その結
果をMAR653へ転送し、データメモリ630をアクセスす
る。一方、書き込みデータはデスティネーションフィー
ルド343で示されるR3レジスタから読み出され、MDR654
を経由してデータメモリ630へ転送され、格納される。
次に実行する命令は、第2命令レジスタ642に保持され
ている命令であるので、この命令を第1命令レジスタ64
1へ転送して、以下同様に実行する。
パイプライン処理 次に、第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命令デコーダ644及び第
2命令デコーダ645で解読を行う。なおこの時、レジス
タの読み出し及びイミディエイトのデータ拡張が必要な
場合にはこのサイクルで行う。
(AとB)をそれぞれ第1命令レジスタ641及び第2命
令レジスタ642にセットし、第1命令デコーダ644及び第
2命令デコーダ645で解読を行う。なおこの時、レジス
タの読み出し及びイミディエイトのデータ拡張が必要な
場合にはこのサイクルで行う。
また、プログラムメモリ620から次の64ビット分の命
令(CとD)をフェッチして、プリフェッチバッファ64
0にセットする。
令(CとD)をフェッチして、プリフェッチバッファ64
0にセットする。
[3クロックサイクル目] 第1命令デコーダ644で解読した命令Aを実行し、次
に第2命令レジスタ642の命令Bを第1命令レジスタ641
にセットし、第1命令デコーダ644で解読を行う。なお
この時、レジスタの読み出し及びイミディエイトのデー
タ拡張が必要な場合にはこのサイクルで行う。
に第2命令レジスタ642の命令Bを第1命令レジスタ641
にセットし、第1命令デコーダ644で解読を行う。なお
この時、レジスタの読み出し及びイミディエイトのデー
タ拡張が必要な場合にはこのサイクルで行う。
[4クロックサイクル目] 命令Aの実行結果をレジスタに格納し、第1命令デコ
ーダ644で解読した命令Bを実行する。同時にプリフェ
ッチバッファ640に保持している2つの命令(CとD)
をそれぞれ第1命令レジスタ641及び第2命令レジスタ6
42にセットし、第1命令デコーダ644及び第2命令デコ
ーダ645で解読を行う。なおこの時、レジスタの読み出
し及びイミディエイトのデータ拡張が必要な場合にはこ
のサイクルで行う。また、プログラムメモリ620から次
の64ビット分の命令(EとF)をフェッチして、プリフ
ェッチバッファ640にセットする。
ーダ644で解読した命令Bを実行する。同時にプリフェ
ッチバッファ640に保持している2つの命令(CとD)
をそれぞれ第1命令レジスタ641及び第2命令レジスタ6
42にセットし、第1命令デコーダ644及び第2命令デコ
ーダ645で解読を行う。なおこの時、レジスタの読み出
し及びイミディエイトのデータ拡張が必要な場合にはこ
のサイクルで行う。また、プログラムメモリ620から次
の64ビット分の命令(EとF)をフェッチして、プリフ
ェッチバッファ640にセットする。
以下同様に動作する。
第4図(b)は本実施例のプロセッサにおいて本発明
の特徴である2つの命令を同時に実行する時のパイプラ
イン処理について示した図である。尚、命令AからFが
第4図(c)に示すようにプログラムメモリ620に格納
されていたとする。ここで、命令AがLUI命令であると
する。以下、各クロックサイクル毎に説明する。
の特徴である2つの命令を同時に実行する時のパイプラ
イン処理について示した図である。尚、命令AからFが
第4図(c)に示すようにプログラムメモリ620に格納
されていたとする。ここで、命令AがLUI命令であると
する。以下、各クロックサイクル毎に説明する。
[1クロックサイクル目] プログラムメモリ620から64ビット分の命令(Aと
B)をフェッチして、プリフェッチバッファ640にセッ
トする。
B)をフェッチして、プリフェッチバッファ640にセッ
トする。
[2クロックサイクル目] プリフェッチバッファ640に保持している2つの命令
(AとB)をそれぞれ第1命令レジスタ641及び第2命
令レジスタ642にセットし、第1命令デコーダ644及び第
2命令デコーダ645で解読を行う。その結果命令AがLUI
命令であることが分かるので、次のサイクルでこの2つ
の命令を同時に実行する準備を行う。なおこの時、レジ
スタの読み出し及びイミディエイトのデータ拡張が必要
な場合にはこのサイクルで行う。また、プログラムメモ
リ620から次の64ビット分の命令(CとD)をフェッチ
して、プリフェッチバッファ640にセットする。
(AとB)をそれぞれ第1命令レジスタ641及び第2命
令レジスタ642にセットし、第1命令デコーダ644及び第
2命令デコーダ645で解読を行う。その結果命令AがLUI
命令であることが分かるので、次のサイクルでこの2つ
の命令を同時に実行する準備を行う。なおこの時、レジ
スタの読み出し及びイミディエイトのデータ拡張が必要
な場合にはこのサイクルで行う。また、プログラムメモ
リ620から次の64ビット分の命令(CとD)をフェッチ
して、プリフェッチバッファ640にセットする。
[3クロックサイクル目] 第1命令デコーダ644で解読した命令A(LUI命令)及
び第2命令デコーダ645で解読した命令Bを同時実行
し、プリフェッチバッファ640に保持している2つの命
令(CとD)を第1命令レジスタ641及び第2命令レジ
スタ642にセットし、第1命令デコーダ644及び第2命令
デコーダ645で解読を行う。なおこの時、レジスタの読
み出し及びイミディエイトのデータ拡張が必要な場合に
はこのサイクルで行う。
び第2命令デコーダ645で解読した命令Bを同時実行
し、プリフェッチバッファ640に保持している2つの命
令(CとD)を第1命令レジスタ641及び第2命令レジ
スタ642にセットし、第1命令デコーダ644及び第2命令
デコーダ645で解読を行う。なおこの時、レジスタの読
み出し及びイミディエイトのデータ拡張が必要な場合に
はこのサイクルで行う。
また、プログラムメモリ620から次の64ビット分の命
令(EとF)をフェッチして、プリフェッチバッファ64
0にセットする。
令(EとF)をフェッチして、プリフェッチバッファ64
0にセットする。
[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ビットだけが違うだけなので、演算器65
1等のための制御信号生成等のための命令解読がどちら
の命令でも共通化でき命令デコーダの簡略化が可能であ
る。
作する命令のOPコードはレジスタを操作する命令のOPコ
ードと左端の1ビットだけが違うだけなので、演算器65
1等のための制御信号生成等のための命令解読がどちら
の命令でも共通化でき命令デコーダの簡略化が可能であ
る。
また、イミディエイトを操作するか否かはOPコードの
左端の1ビットだけ判断できるので、イミディエイト生
成回路の制御信号などの生成するための命令デコーダの
簡略化が可能である。
左端の1ビットだけ判断できるので、イミディエイト生
成回路の制御信号などの生成するための命令デコーダの
簡略化が可能である。
従って、本実施例によれば、データ幅の広いバスを用
いて1サイクルでフェッチした2つの命令を同時に実行
できるので、パイプラインステージ間の負荷を均一にで
き、ハードウエア回路の有効利用が可能になる。
いて1サイクルでフェッチした2つの命令を同時に実行
できるので、パイプラインステージ間の負荷を均一にで
き、ハードウエア回路の有効利用が可能になる。
特に、本実施例によれば、従来の命令フォーマットを
変えることなく、32ビット長のイミディエイトを1サイ
クルで操作できるようになり、互換性を維持しつつ性能
向上を図ることができる。
変えることなく、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,6
42……命令レジスタ、644,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,6
42……命令レジスタ、644,645……命令デコーダ、650…
…レジスタフアイル、651……演算器、652……シフタ、
131,132……レジスタ番号比較器。
Claims (3)
- 【請求項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 |
---|---|---|---|
JP28887489 | 1989-11-08 | ||
JP1-288874 | 1989-11-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH03218523A JPH03218523A (ja) | 1991-09-26 |
JP2816248B2 true 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) |
Families Citing this family (28)
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 | 株式会社日立製作所 | 除算回路及び除算方法 |
JP2539974B2 (ja) * | 1991-11-20 | 1996-10-02 | 富士通株式会社 | 情報処理装置におけるレジスタの読出制御方式 |
CA2123442A1 (en) * | 1993-09-20 | 1995-03-21 | David S. Ray | Multiple execution unit dispatch with instruction dependency |
EP0650116B1 (en) * | 1993-10-21 | 1998-12-09 | Sun Microsystems, Inc. | Counterflow pipeline processor |
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 |
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 |
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 |
JP3670668B2 (ja) | 1997-01-24 | 2005-07-13 | 株式会社ルネサステクノロジ | データ処理装置 |
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 | 富士通株式会社 | 情報処理装置及び情報処理方法 |
US8006114B2 (en) | 2007-03-09 | 2011-08-23 | 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 |
EP0239081B1 (en) * | 1986-03-26 | 1995-09-06 | Hitachi, Ltd. | Pipelined data processor capable of decoding and executing plural instructions in parallel |
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 Expired - Fee Related
- 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
Also Published As
Publication number | Publication date |
---|---|
KR0178078B1 (ko) | 1999-05-15 |
EP0427245A2 (en) | 1991-05-15 |
EP0427245B1 (en) | 1998-03-25 |
JPH03218523A (ja) | 1991-09-26 |
KR910010304A (ko) | 1991-06-29 |
DE69032174D1 (de) | 1998-04-30 |
DE69032174T2 (de) | 1998-12-03 |
EP0427245A3 (en) | 1992-01-29 |
US5269007A (en) | 1993-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2816248B2 (ja) | データプロセッサ | |
US5233694A (en) | Pipelined data processor capable of performing instruction fetch stages of a plurality of instructions simultaneously | |
US8447958B2 (en) | Substituting portion of template instruction parameter with selected virtual instruction parameter | |
US5922066A (en) | Multifunction data aligner in wide data width processor | |
US6345357B1 (en) | Versatile branch-less sequence control of instruction stream containing step repeat loop block using executed instructions number counter | |
US7487338B2 (en) | Data processor for modifying and executing operation of instruction code according to the indication of other instruction code | |
KR100267098B1 (ko) | 레지스터 화일 판독을 감소시키는 벡터 프로세서 디자인 | |
KR100254008B1 (ko) | 2개의 명령을 동시에 실행할 수 있는 데이타 프로세서 | |
JP2006004042A (ja) | データ処理装置 | |
US7546442B1 (en) | Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions | |
US8671266B2 (en) | Staging register file for use with multi-stage execution units | |
US6219779B1 (en) | Constant reconstructing processor which supports reductions in code size | |
US6292845B1 (en) | Processing unit having independent execution units for parallel execution of instructions of different category with instructions having specific bits indicating instruction size and category respectively | |
CN108139911B (zh) | 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格 | |
JP3789583B2 (ja) | データ処理装置 | |
JPH07120278B2 (ja) | データ処理装置 | |
JP5193624B2 (ja) | データプロセッサ | |
US6209080B1 (en) | Constant reconstruction processor that supports reductions in code size and processing time | |
JP4502532B2 (ja) | データ処理装置 | |
JP2556182B2 (ja) | デ−タ処理装置 | |
US5072372A (en) | Indirect literal expansion for computer instruction sets | |
JP3147884B2 (ja) | 記憶装置及び情報処理装置 | |
JP2004152049A (ja) | データ処理装置 | |
JPH117388A (ja) | プロセッサ | |
JP2007156557A (ja) | 並列プロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |