JPH0667882A - データ処理装置 - Google Patents

データ処理装置

Info

Publication number
JPH0667882A
JPH0667882A JP22250192A JP22250192A JPH0667882A JP H0667882 A JPH0667882 A JP H0667882A JP 22250192 A JP22250192 A JP 22250192A JP 22250192 A JP22250192 A JP 22250192A JP H0667882 A JPH0667882 A JP H0667882A
Authority
JP
Japan
Prior art keywords
instruction
branch
instructions
address
controller
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.)
Pending
Application number
JP22250192A
Other languages
English (en)
Inventor
Aruberuto Parashiosu
パラシオス・アルベルト
Makoto Hanawa
誠 花輪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP22250192A priority Critical patent/JPH0667882A/ja
Publication of JPH0667882A publication Critical patent/JPH0667882A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

(57)【要約】 【目的】分岐に起因する遅延スロットの発生を防止す
る。 【構成】メモリ700から読み出された第1及び第2の
命令は命令解読器610、620に保持されている期間
に対応する実行サイクル中、命令の符号及び演算ユニッ
ト650、660の結果を表す信号が分岐制御器530
に印加され、531及び532の信号が生成される。第
1及び第2の命令の何れが分岐の時その分岐先がレジス
タファイル680から読み出され、プログラムカウンタ
670に入力される。531及び532の信号によっ
て、プログラムカウンタ670の出力レジスタ674に
格納される値が通常のインクリメントされた値と分岐先
アドレスの中から選択され、第1及び第2の命令が次の
実行サイクルに入る前にこれらの命令直後に実行される
命令対が読み出され、分岐に起因する遅延スロットの発
生を防止できる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はデータ処理装置に関し、
特に分岐に起因する遅延スロットを必要としない縮小命
令セット処理装置に関する。
【0002】
【従来の技術】命令を高速に実行可能な所謂、縮小命令
セット処理装置(Reduced InstructionSet Computer、以
下RISCという)は1986年8月18日の米国特許出願第896,15
6号を優先権主張とした特開昭63-49843号公報に詳細に
説明されている。一方、処理性能向上を目的として二つ
の演算命令を同時に実行できる処理装置は、平成2年8月
15日出願の特開平4-95825号公報に詳細に説明されてい
る。一方、分岐に起因する遅延スロットの利用を向上す
る手段としては、1986年の文献Proceedings of the 13t
h. Annual International Symposium on ComputerArchi
tecture,pp.396-403に、コンパイラ或はハードウェアに
基づく分岐命令の条件の真偽を予想する幾つかのアプロ
ーチが提案されている。しかし、この文献及び前記何れ
か特許では、遅延スロットそのものを削減する手段が示
されていない。
【0003】
【発明が解決しようとする課題】上記文献及び特開平4-
95825号公報には、分岐に起因する遅延スロットの処理
に対する影響を減少するため、コンパイラによる過度の
命令スケジューリング処理が要求され、コンパイラ設計
の複雑さなどの問題がある。さらに、ハードウェアに基
づく手段は、実現上、膨大な回路面積を強要するなどの
問題がある。本発明の目的は、分岐に起因する遅延スロ
ットに対応するコンパイラの命令スケジューリング処理
の負担を軽減し、遅延スロット自身を削減し、しかも、
このために小規模のハードウェアしか必要としないデー
タ処理装置を提供することにある。
【0004】
【課題を解決するための手段】上記目的を達成するた
め、本発明の代表的な実施例によるデータ処理装置は、
(1)メモリ(700)から読み出された所定の固定ビット幅
の命令長の第1及び第2の命令の内、前記第1の命令を
解読する第1の命令解読器(610)と、(2)前記第2の命
令を解読する第2の命令解読器(620)と、(3)前記第1
の命令解読器(610)の出力を保持し、命令の実行に必要
な信号を生成する第1の命令実行制御器(630)と、(4)
前記第2の命令解読器(620)の出力を保持し、命令の実
行に必要な信号を生成する第2の命令実行制御器と、
(5)前記第1の命令実行制御器(630)の出力によって制
御される第1の演算ユニット(650)と、(6)前記)び第2
の命令実行制御器(640)の出力によって制御される第2
の演算ユニット(660)と、(7)上記第1及び第2の命令
解読器(610,620)に保持される情報と上記第1及び第2
の演算ユニット(650,660)の結果の情報とを用いて、次
に実行される命令のアドレスの計算を制御する分岐制御
器(530)と、(8)前記の分岐制御器(530)によって制御さ
れ、上記メモリ(700)から読み出される命令のアドレス
を計算するプログラムカウンタ(670)と、(9)複数のレ
ジスタからなるレジスタファイル(680)とを具備してな
り、上記メモリ(700)は主記憶装置もしくはキャッシュ
メモリの少なくとも何れかにより構成されてなる縮小命
令セット処理装置として構成され、次の三つの実行サイ
クルからなるデータ処理方式を採用することによって達
成される。
【0005】[第1実行サイクル]上記プログラムカウン
タ(670)の指定によりメモリ(700)から読み出された第1
及び第2の命令がそれぞれ第1及び第2の命令解読器(6
10,620)に格納される。また、前記第1及び第2の命令
解読器(610,620)の出力に保持される前記第1及び第2
の命令の情報が用いられることにより、上記の分岐制御
器(530)によってプログラムカウンタ(670)が設定され
る。前記第1及び第2の命令によって、指定されたレジ
スタファイル(680)内のレジスタの内容が読み出され
る。また、メモリ(700)の読み出し及び書き込みを行う
際、このサイクルでメモリ(700)にその操作に対応する
情報(格納されるデータや制御信号等)が渡される。この
サイクルの後半に、前記第1の命令及び第2の命令によ
って指定されたレジスタファイル(680)内のレジスタの
内容が、上記の第1及び第2の演算ユニット(650,670)
に渡され、その計算が行われる。
【0006】[第2実行サイクル]前記第1及び第2の命
令の解読結果がそれぞれ上記の第1及び第2の命令実行
制御器(630,640)に格納される。これと同時に、第1実
行サイクルに開始された計算の結果が前記の演算ユニッ
ト(650,660)の出力に保持される。また、このサイクル
で、演算ユニット(650,660)の結果とこの時点に第1及
び第2の命令解読器(610,620)に保持されている命令対
の情報が上記の分岐制御器(530)に与えられる。さら
に、前記分岐制御器(530)によって、前記命令対の内何
れかが分岐のとき、分岐(条件の真偽及び分岐先のアド
レス)が評価され、前記命令対の次に実行される命令の
アドレスが決定される。決定されたアドレスがプログラ
ムカウンタ(670)に設定され、メモリ(700)から次の命令
対が読み出される。
【0007】[第3実行サイクル]第2実行サイクルの演
算の結果は、前記実行サイクルに第1及び第2の命令実
行制御器(630,640)に保持されていた第1及び第2の命
令によって指定されたレジスタファイル(680)のアドレ
スに格納される。また、メモリ(700)の読み出し及び書
き込みする際、このサイクルでこの操作が完了される。
ただし、読み出しのとき、メモリ(700)から読み出され
た内容が前記第1或は第2の命令によって指定されたレ
ジスタファイル(680)のアドレスに格納される。
【0008】
【作用】上記の三つの実行サイクルの説明で解かるよう
に、本発明は従来のスーパスカラ方式に用いられるプリ
フェッチ操作に対応する実行サイクルを用意していない
ため、通常分岐の条件の真偽によりプリフェッチサイク
ルで予め探索された命令の無効化に起因する遅延スロッ
トの発生を防止することができる。プリフェッチに対応
する操作は、上記の三つの実行サイクル内の第2実行サ
イクル中の命令に対応する演算の結果及び第1実行サイ
クル中の命令対の情報を用いる分岐制御器(530)によっ
て制御され、前記第1サイクルの命令対の次に実行され
る命令のアドレスが前記の分岐制御器(530)によって決
定される。第1実行サイクル中の命令対の内何れかが分
岐のとき、その分岐先がプログラムカウンタ(670)に設
定され、これで指定されたメモリ(700)のアドレスから
次の命令対が読み出される。このように、プリフェッチ
サイクルを無くすこと及び上記の実行サイクル並びに上
記の構成を用いることによって、分岐に起因する遅延ス
ロットの処理が減少することができ、しかも、これを上
記の小規模の分岐制御回路の採用で実現することができ
る。尚、命令対内の第1命令が分岐命令で、第2命令が
その他の種の命令の場合は、この対は遅延スロットを利
用していると仮定する。つまり、前記の第2命令は常に
分岐命令と並列に実行される。この場合以外、分岐命令
を処理する必要がない。
【0009】
【実施例】以下、本発明の実施例を、図面に沿って詳細
に説明する。データ処理システムの概要 図1は本発明の一実施例であるデータ処理システムの構
成を示す。このデータ処理システムは、データプロセッ
サユニットである処理部600と、命令記憶装置(Instr
uction Memory)700とデータ記憶装置(Data Memory)
800との三つのブロックから構成されている。命令記
憶装置700は命令キャッシュとして、また、データ記
憶装置800はデータキャッシュとして、処理部600
が形成されるチップ上に集積化されることが可能であ
る。命令記憶装置700は、命令アドレスバス601及
び命令データバス701によって、処理部600と接続
されている。命令アドレスバス601は4ギガバイトま
で可能なアドレシングをもち、32ビット幅である。命
令データバス701は64ビット幅で、一回の読み出し
で二つの命令を処理部600に転送できる。データ記憶
装置800は、オペランドアドレスバス602及びオペ
ランドデータバス801によって、処理部600と接続
されている。オペランドアドレスバス602は、4ギガ
バイトまで可能なアドレシングをもち、32ビット幅で
ある。オペランドデータバス801は、一回の読み出し
で32ビットの1ワードを処理部600に転送できる。
【0010】処理部600の内部の構成 この処理部600は、命令記憶装置700から読み出さ
れた第1及び第2の命令をそれぞれ第1実行サイクルに
保持して解読する第1の命令解読器610及び第2の命
令解読器620と、前記の第1及び第2の命令をそれぞ
れ第2実行サイクルに保持して命令によって指定された
演算を制御する第1の命令実行制御器630及び第2の
命令実行制御器640と、第1の演算ユニット650及
び第2の演算ユニット660と、命令のアドレスを計算
するプログラムカウンタ670と、複数のレジスタを有
するレジスタファイル(Register File)680と、メモ
リアドレスレジスタ(MAR)400と、メモリデータレジ
スタ(MDR)410と、命令記憶装置700から読み出さ
れた第1の命令の実行結果の格納先アドレス情報と命令
記憶装置700から読み出された第2の命令の実行に用
いられるオペランドの格納元アドレス情報とを比較する
比較器(DDPI)500と、前記第1の命令の実行結果の格
納先アドレス情報と前記第2の命令の実行結果の格納先
アドレス情報とを比較する比較器(SD)510と、第1の
命令解読器610及び第2の命令解読器620に保持さ
れる命令の実行に用いられるオペランドの格納元アドレ
ス情報と第1の命令実行制御器630及び第2の命令実
行制御器640に保持される命令の実行結果の格納先ア
ドレス情報とを比較する比較器(DDPPI)520と、第1
の命令解読器610及び第2の命令解読器620に保持
される情報と第1の演算ユニット650及び第2の演算
ユニット660の結果の情報とを用いて、命令のアドレ
スの計算を制御する分岐制御器(BC)530とから構成さ
れている。
【0011】第1の命令解読器610及び第2の命令解
読器620 第1の命令解読器610及び第2の命令解読器620
は、命令記憶装置700から読み出された第1及び第2
の命令を第1実行サイクルに保持する32ビット幅のレ
ジスタを2個含み、これらのレジスタに保持された命令
を解読するとともに、分岐の評価を行うために分岐制御
器530に信号を供給する。
【0012】第1の命令実行制御器630及び第2の命
令実行制御器640 前記の第1の命令解読器610及び第2の命令解読62
0によって解読された第1及び第2の命令の解読結果を
それぞれ第2実行サイクルに保持し、前記命令の解読結
果によって指定された演算を制御する32ビット幅のレ
ジスタから構成されている。
【0013】第1の演算ユニット650及び第2の演算
ユニット660 これらのユニットは、それぞれ、32ビットの3入力1
出力のA側のマルチプレクサ(MUX)651及び661と
B側のマルチプレクサ(MUX)652及び662と、32
ビットA側の入力レジスタ653及び663とB側の入
力レジスタ654及び664と、32ビットの2入力の
数値演算(算術論理演算)を行う算術論理演算器(ALU)
655及び665と、出力レジスタ656及び出力レジ
スタ666とから構成されている。
【0014】プログラムカウンタ670 プログラムカウンタ670は、命令のアドレスを保持す
る出力レジスタ674と、このレジスタ674の内容と
「8」(2つの命令対間のアドレス差)との加算を行うア
ドレス演算器671と、分岐先のアドレス及びアドレス
演算器671を入力する2入力1出力のマルチプレクサ
673と、命令対のうち、第1の命令もしくは第2の命
令によって指定された分岐先のアドレスをマルチプレク
サ673に入力するための2入力1出力のマルチプレク
サ672から構成されている。尚、マルチプレクサ67
2および673はそれぞれ入力及び出力が32ビット幅
である。
【0015】レジスタファイル(Register File)680 レジスタファイル680は、32ビット幅のレジスタ3
2本R0,R1,..,R31からなり、五つの読み出し及び三
つの書き込みが同時に可能なものである。
【0016】メモリアドレスレジスタ(MAR)400 データ記憶装置800の読み出し及び書き込みに用いら
れ、第1実行サイクルに命令によって指定されたレジス
タファイル内のレジスタの内容を保持する。このレジス
タの内容を、実効アドレスとしてデータ記憶装置800
のアクセスに用いられる。
【0017】メモリデータレジスタ(MDR)410 データ記憶装置800の読み出し及び書き込みに用いら
れ、読み出しのとき、第2実行サイクルに読み出された
データを保持し、書き込みのときは、データ記憶装置8
00に格納されるデータを保持する。
【0018】比較器(DDPI)500 命令記憶装置700から読み出された第1の命令の実行
結果の格納先(ディスティネーション)アドレス情報
(D)と命令記憶装置700から読み出された第2の命令
の実行に用いられるオペランドのソースアドレス情報
(S,R)とを比較して、読み出された命令対間のデータの
依存性(Data Dependency on the Previous Instructio
n)を調べる。この両アドレス情報が一致する際には、こ
の第1及び第2の命令の並列実行を停止する信号を生成
する。それ以外は二つの命令の並列実行が可能となる。
【0019】比較器(SD)510 命令記憶装置700から読み出された第1の命令の実行
結果の格納先アドレス情報(D)と命令記憶装置700か
ら読み出された第2の命令の実行結果の格納先アドレス
情報(D)とを比較して、アドレスのアクセスに衝突があ
るか否(Same Distination)を調べ、これらのアドレス情
報が一致する際には、この第1及び第2の命令の並列実
行を停止する信号を生成する。それ以外は二つの命令の
並列実行が可能となる。
【0020】比較器(DDPPI)520 第1の命令解読器610又は第2の命令解読器620に
保持される命令の実行に用いられるオペランドのソース
・アドレス情報(S,R)と第1の命令実行制御器630又
は第2の命令実行制御器640に保持される命令の実行
結果の格納先アドレス情報(D)とを比較し、これによっ
てオペランドのアドレスは以前の命令によって書き込ま
れるか否か(Data Dependency on the Previous Pair of
Instructions)を調べる。このアドレスの情報が一致す
る際、演算ユニット650もしくは660の出力が、前
記比較結果によって、A側のマルチプレクサ651もし
くは661或はB側のマルチプレクサ652もしくは6
62を通して、A側の入力レジスタ653もしくは66
3或はB側の入力レジスタ654もしくは664にフィ
ードバックされる。
【0021】分岐制御器(BC)530 第1の命令解読器610及び第2の命令解読器620に
保持される情報と第1の演算ユニット650もしくは第
2の演算ユニット660の結果の情報とを用いて、命令
のアドレスの計算を制御する。分岐のとき、マルチプレ
クサ672及びマルチプレクサ673を制御して分岐先
のアドレスをプログラムカウンタの出力レジスタ674
に格納させる信号を生成し、分岐以外のときは、マルチ
プレクサ673を制御してプログラムカウンタに保持さ
れている値に8を足した結果を出力レジスタ674に格
納されるための信号を生成する。なお、比較器500及
び比較器510の出力によって、前記の信号が無効さ
れ、プログラムカウンタの動作が一時的に停止される。
【0022】命令セット 図2は、図1の実施例の縮小命令セット処理装置のため
の固定ビット幅の命令長を有する命令セットを示す。図
3、図4、図5及び図6は、それぞれADDとSUBと
XORの命令、BRAとBRZの命令、LDとSTの命
令及びSETLとSETHの命令のフォーマットを示
す。
【0023】これらの図3乃至図6に示すように、一つ
の命令の命令長は32ビット長で、左端より8ビットの
フィールド210は命令の種類を示す命令符号(Code)で
あり、次の5ビットのフィールド220は命令の実行結
果を格納するレジスタのアドレスを指定するディスティ
ネイション(D)フィールドであり、さらに次の5ビット
のフィールド230は命令の実行に用いられるソースデ
ータの格納レジスタのアドレスを指定する第1ソース
(S)フィールドであり、さらに最後の5ビットのフィー
ルド240は命令の実行に用いられるソースデータの格
納レジスタのアドレスを指定する第2ソース(R)フィー
ルドである。尚、16ビットのフィールド250はイミ
ディエイト(Immediate)データフィールドである。
【0024】ADD命令301は、第1ソースフィール
ド230で指定されたレジスタの内容と第2ソースフィ
ールド240で指定されたレジスタの内容と加算し、そ
の結果をデスティネイションフィールド220で指定さ
れたレジスタに格納する命令である。SUB命令302
は、第1ソースフィールド230で指定されたレジスタ
の内容から第2ソースフィールド240で指定されたレ
ジスタの内容を引算し、その結果をデスティネイション
フィールド220で指定されたレジスタに格納する命令
である。XOR命令303は、第1ソースフィールド2
30で指定されたレジスタの内容と第2ソースフィール
ド240で指定されたレジスタの内容との間の排他的論
理和を求め、その結果をディスティネイションフィール
ド220で指定されたレジスタに格納する命令である。
【0025】BRA命令304は、無条件分岐で、第2
ソースフィールド240で指定されたレジスタの内容を
分岐先のアドレスとし、このアドレスをプログラムカウ
ンタ670に設定する命令である。BRZ命令305
は、条件付分岐で、第2ソースフィールド240で指定
されたレジスタの内容を分岐先のアドレスとし、第1の
演算ユニット650或は第2の演算ユニット660の演
算の結果はゼロ「0」のとき、またこのときのみ、前記
分岐先アドレスをプログラムカウンタ670に設定する
命令である。
【0026】LD命令306は、第1ソースフィールド
230で指定されたレジスタの内容をアドレスとし、こ
のアドレスで指定されたデータ記憶装置800の内容を
ディスティネイションフィールド220で指定されたレ
ジスタに格納する命令である。ST命令307は、デス
ティネイションフィールド220で指定されたレジスタ
の内容をデータ記憶装置800のアドレスとし、このア
ドレスに第1ソースフィールド230で指定されたレジ
スタの内容を格納する命令である。
【0027】SETL命令308は、イミディエイトデ
ータフィールド250の左側に16ビット分の「0」を
連結して、これをデスティネイションフィールド220
で指定されたレジスタに格納し、最低位のビットを設定
する命令である。SETH命令309は、イミディエイ
トデータフィールド250の右側に16ビット分の
「0」を連結して、これをデスティネイションフィール
ド220で指定されたレジスタに格納し、最上位のビッ
トを設定する命令である。
【0028】尚、パイプライン処理方式については、技
術文献「The Architecture of Pipelined Computers;P.
M.Kogge;Hemisphere Pub.Co.,1981」に詳細説明され、
また2つ以上の命令の並列処理のスーパスカラ方式につ
いて技術文献「SuperscalarMicroprocessor Design;M.J
ohnson;Prentice-Hall,1991」に詳細に説明されている
ため、以下では、本発明が解決する課題だけを例示す
る。
【0029】図7は、本実施例で、幾つかの命令対の実
行に対応するタイムダイアグラムを示す。上から順番
に、クロックサイクル、処理装置600のクロック(Clo
ck)、第1の命令に対応する命令アドレスバス601の
内容(PC、PC'及びPC"はプログラムカウンタの内容を表
す)、第1の命令に対応する命令データバス701の内
容((X)はアドレスXのレジスタの内容を表す)、第1の
命令解読器610の内容、第1の演算ユニット650の
内容([Y]はアドレスYの命令に対応する演算の結果を
表す)、分岐制御器530から第1或は第2の命令が分
岐のとき生成される531の信号(Branch)及び532の
信号((R1)/(R2))が示されている。図7のBranch及び(R
1)/(R2)の信号は、命令対内の分岐命令の存在及びその
条件を表す。Branchは「0」及び(R1)/(R2)は「0」の
時、この信号で命令対内何れの命令も分岐ではないこと
が表示される。Branchは「1」及び(R1)/(R2)は「1」
の時、この信号で命令対内の第1の命令は分岐であり、
しかも無条件か或はその条件が真であることが表され
る。この場合は、第2の命令が何れの種類で良い。但
し、第2の命令が分岐以外の命令の場合、その前の第1
の命令が分岐命令である。Branchは「1」及び(R1)/(R
2)は「0」の時、この信号で命令対内の第2の命令が分
岐であり、しかも無条件か或はその条件が真であること
が表される。この場合は、第1の命令が無条件分岐及び
条件付の時その条件が真であること以外、何れの種類で
良い。Branchは「0」及び(R1)/(R2)は「1」のは、例
外状態と見なされ、本実施例の処理装置の動作に影響を
与えない。
【0030】図7のタイムダイアグラムをクロックサイ
クル毎に沿って前記Branch及び(R1)/(R2)の幾つのケー
スを説明する。まず、左からの第1クロックサイクル
に、命令アドレスバス601の「PC」というアドレスか
ら読み出された命令データバス701の命令対を、クロ
ック信号が「0」から「1」への変化によって、命令解
読器610及び620に格納される。またこの変化によ
って、命令解読器610及び620に格納された命令が
分岐である時は、その条件の評価が開始される。図7
は、この第1クロックサイクルの前記の命令対何れも分
岐ではないケースを図示している。このため、第1クロ
ックサイクルのクロック信号の「1」から「0」への変
化によって、プログラムカウンタ670の内容(出力レ
ジスタ674の内容)と「8」と加算した結果が出力レ
ジスタ674に格納される。この内容が命令アドレスバ
ス601を通して命令記憶装置700から読み出される
次の命令対を指定する。指定された命令対は命令データ
バス701に載せられ、第2クロックサイクルのクロッ
ク信号の「0」から「1」への変化によって命令解読器
610及び620に格納される。この時、命令対の第1
の命令は条件付分岐(BRZ(305))であるとし、しかも
その条件が真であるとする。また、第1の演算ユニット
650の結果は「0」であるとする。図7に示すように
この場合は、分岐制御器530が生成する531のBran
ch信号及び532の(R1)/(R2)信号が「1」になってい
る。これらの信号で、プログラムカウンタ670の内容
と「8」と加算した結果が閉塞されて解読器610の第
1命令の第2ソースフィールド240で指定されたレジ
スタの内容がクロックの「1」から「0」への変化によ
って、マルチプレクサ672及び673を通して出力レ
ジスタ674に格納され、命令アドレスバス601の内
容となる。これは、図7に(R1)及びPC’で表されて
いる。PC’で指定された命令対は、第3ロックサイク
ルのクロック信号の「0」から「1」への変化によっ
て、命令解読器610及び620に格納される。この場
合は、第1クロックサイクルと同様に命令対は何れも分
岐ではないケースとする。このため、プログラムカウン
タ670の内容「PC’」と「8」と加算した結果が、
クロック信号の「0」への変化によって、出力レジスタ
674に格納される。前記の結果をアドレスとする命令
対は、第4クロックサイクルにクロック信号の立上りで
命令解読器610及び620に格納される。この時、命
令対の第2の命令は条件付分岐で、しかもその条件が真
であるとする。また、第2の演算ユニット660の結果
は「0」であるとする。図7に示すようにこの場合は、
分岐制御器530が生成する531のBranch信号及び5
32の(R1)/(R2)信号がそれぞれ「1」及び「0」にな
っている。これらの信号で、プログラムカウンタ670
の内容と「8」と加算した結果が閉塞され、解読器62
0の第2命令の第2ソースフィールド240で指定され
たレジスタの内容がクロックの「1」から「0」への変
化によって、マルチプレクサ672及び673を通して
出力レジスタ674に格納され、命令アドレスバス60
1の内容となる。これは、図7に(R2)及びPC”で表
されている。PC”をアドレスとする命令対は、第5ク
ロックサイクルにクロック信号の立上りで命令解読器6
10及び620に格納される。この命令対及び第6クロ
ックサイクルの命令対はが分岐以外の命令であるとした
処理は図7に示されている。
【0031】上記の第1及び第2の命令の並列実行処理
が、命令データバス701の第1の命令のデスティネイ
ションフィールド220と第2の命令の第1もしくは第
2のソースフィールド230もしくは240とが一致す
る際、比較器(DDPI)500で、或は、命令データバス7
01の第1の命令のディスティネイションフィールド2
20と第2の命令のディスティネイションフィールド2
20とが一致する際、比較器(SD)510で、停止され
る。この時、第1の命令が実行されてから、第2の命令
が実行される。この場合、第1の命令の第1実行サイク
ル期間中ではプログラムカウンタ670へ分岐制御器5
30の制御入力信号531及び532が無効され、プロ
グラムカウンタの内容が変化しない。
【0032】図8は、分岐制御器530を実現する回路
の一つを示す。そこでは、iD1(X)P及びiD1(X)Nが命令解
読器610の第1の命令のX番目のビット及びその否定
の値を表し、iD2(Y)P及びiD2(Y)Nが命令解読器620の
第2の命令のY番目のビット及びその否定の値を表す。
ALU1ZERO及びALU2ZEROが第1演算ユニット650及び第
2演算ユニット660の結果がゼロであるか否を表す信
号である。
【0033】
【発明の効果】以上述べたように、本発明によれば、分
岐に起因する遅延スロットを防止することができ、従来
のコンパイラの分岐処理(分岐の予想や処理順序の調
整、遅延スロットの使用等)が減少し、処理性能を向上
させることができる。
【0034】また、実施例に示したように、本発明を実
現するために小規模の回路しか必要ではない。
【0035】さらに、パイプラインの最初の実行サイク
ル(第1実行サイクル)に分岐に対応する処理が行われて
いるため、その他のパイプラインステージ(実行サイク
ル)のスーパパイプライン化等の改善が可能である。
【図面の簡単な説明】
【図1】本発明の一実施例によるデータ処理装置の構成
を示す図である。
【図2】図1の実施例に対応する命令セット及びそのビ
ットの割り当てを示す図である。
【図3】図2のADD、SUB及びXOR命令のビット構成を示
す図である。
【図4】図2のBRA及びBRZ命令のビット構成を示す図で
ある。
【図5】図2のLD及びST命令のビット構成を示す図であ
る。
【図6】図2のSETL及びSETH命令のビット構成を示す図
である。
【図7】図1の実施例の幾つかの処理ケースを例示する
タイム代がグラムを示す図である。
【図8】図1の分岐制御器(BC)530を実現する一つの
回路を示す図である。
【符号の説明】
400…メモリアドレスレジスタ、410…メモリデータレジ
スタ、500…第1の命令のディスティネイションフィー
ルドと第2の命令の第1のソースフィールド及び第2の
ソースフィールドとを比較する比較器、510…第1の命
令のデスティネイションフィールドと第2の命令のデス
ティネイションフィールドとを比較する比較器、520…
第1の命令及び第2の命令の第1のソースフィールド及
び第2のソースフィールドと第1の命令実行制御器63
0及び第2の命令実行制御器640に保持される命令の
ディスティネイションフィールド220とを比較する比
較器、530…第1の命令解読器610及び第2の命令解
読器620に保持される命令符号の情報と第1の演算ユ
ニット650及び第2の演算ユニット660の結果の情
報とを用いて、命令のアドレスの計算を制御する分岐制
御器、531…分岐制御器530により生成されるBranch
信号、532…分岐制御器530により生成される(R1)/(R
2)信号、600…処理部、601…命令アドレスバス、602…
オペランドアドレスバス、610…第1の命令解読器、620
…第2の命令解読器、630…第1の命令実行制御器、640
…第2の命令実行制御器、650…第1の演算ユニット、6
60…第2の演算ユニット、670…プログラムカウンタ、6
80…レジスタファイル、700…命令記憶装置、701…命令
データバス、800…データ記憶装置、801…オペランドデ
ータバス。

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】(1)メモリから読み出された所定の固定ビ
    ット幅の命令長の第1及び第2の命令の内、前記第1の
    命令を解読する第1の命令解読器と、 (2)前記第2の命令を解読する第2の命令解読器と、 (3)前記第1の命令解読器の出力を保持し、命令の実行
    に必要な信号を生成する第1の命令実行制御器と、 (4)前記第2の命令解読器の出力を保持し、命令の実行
    に必要な信号を生成する第2の命令実行制御器と、 (5)前記第1の命令実行制御器の出力によって制御され
    る第1の演算ユニットと、 (6)前記)び第2の命令実行制御器の出力によって制御
    される第2の演算ユニットと、 (7)上記第1及び第2の命令解読器に保持される情報と
    上記第1及び第2の演算ユニットの結果の情報とを用い
    て、次に実行される命令のアドレスの計算を制御する分
    岐制御器と、 (8)前記の分岐制御器によって制御され、上記メモリか
    ら読み出される命令のアドレスを計算するプログラムカ
    ウンタと、 (9)複数のレジスタからなるレジスタファイルとを具備
    してなることを特徴とするデータ処理装置。
  2. 【請求項2】上記第1及び第2の命令の上記所定のビッ
    ト幅の命令長は固定長であり、縮小命令セット処理装置
    として構成されたことを特徴とする請求項1記載のデー
    タ処理装置。
  3. 【請求項3】上記メモリは主記憶装置もしくはキャッシ
    ュメモリの少なくとも何れかにより構成されてなること
    を特徴とする請求項1または請求項2のいずれかに記載
    のデータ処理装置。
  4. 【請求項4】縮小命令セット処理装置による処理におけ
    る分岐命令に続く命令を無効化しないため分岐命令の以
    前の命令を遅延させて先に分岐命令を実行し、遅延され
    た命令の実行と並行して分岐先のアドレスを計算する遅
    延スロット手段の用いる件数を減少することを特徴とす
    る請求項1乃至3のいずれかに記載のデータ処理装置。
JP22250192A 1992-08-21 1992-08-21 データ処理装置 Pending JPH0667882A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP22250192A JPH0667882A (ja) 1992-08-21 1992-08-21 データ処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP22250192A JPH0667882A (ja) 1992-08-21 1992-08-21 データ処理装置

Publications (1)

Publication Number Publication Date
JPH0667882A true JPH0667882A (ja) 1994-03-11

Family

ID=16783422

Family Applications (1)

Application Number Title Priority Date Filing Date
JP22250192A Pending JPH0667882A (ja) 1992-08-21 1992-08-21 データ処理装置

Country Status (1)

Country Link
JP (1) JPH0667882A (ja)

Similar Documents

Publication Publication Date Title
EP0368332B1 (en) Pipeline data processor
JP2550213B2 (ja) 並列処理装置および並列処理方法
US5204953A (en) One clock address pipelining in segmentation unit
US5398321A (en) Microcode generation for a scalable compound instruction set machine
US5381360A (en) Modulo arithmetic addressing circuit
KR100254008B1 (ko) 2개의 명령을 동시에 실행할 수 있는 데이타 프로세서
US4541045A (en) Microprocessor architecture employing efficient operand and instruction addressing
JP2779557B2 (ja) 並列演算処理装置
EP1499956B1 (en) Method and apparatus for swapping the contents of address registers
US6263424B1 (en) Execution of data dependent arithmetic instructions in multi-pipeline processors
US7134000B2 (en) Methods and apparatus for instruction alignment including current instruction pointer logic responsive to instruction length information
US6233675B1 (en) Facility to allow fast execution of and, or, and test instructions
JPH0667882A (ja) データ処理装置
US6289439B1 (en) Method, device and microprocessor for performing an XOR clear without executing an XOR instruction
JP2636821B2 (ja) 並列処理装置
JP3147884B2 (ja) 記憶装置及び情報処理装置
JP2785820B2 (ja) 並列処理装置
JP3102399B2 (ja) データ処理装置及び方法
JPH05307483A (ja) レジスタ書き込み制御方法および回路
JP2927281B2 (ja) 並列処理装置
JPH0520065A (ja) 並列演算処理装置
JPH11203133A (ja) 情報処理装置
JPH04205625A (ja) 並列処理計算機
JPH04264954A (ja) 複合命令計算機
JPS61273638A (ja) 情報処理装置