JPH11224194A - データ処理装置 - Google Patents
データ処理装置Info
- Publication number
- JPH11224194A JPH11224194A JP10027158A JP2715898A JPH11224194A JP H11224194 A JPH11224194 A JP H11224194A JP 10027158 A JP10027158 A JP 10027158A JP 2715898 A JP2715898 A JP 2715898A JP H11224194 A JPH11224194 A JP H11224194A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- register
- condition
- field
- delay amount
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
て、命令のスケジューリングの自由度が向上させること
のできるデータ処理装置を提供する。 【解決手段】 分岐の演算を実行するPC制御部13に
おいて、命令デコードユニット2でデコードされた結果
を保持する第1のレジスタ30、演算の実行条件を示し
た情報(条件指定フィールドの値)を保持するレジスタ
31、実行条件を判断する時期を示した情報(PCのア
ドレス値)を保持するレジスタ32を備えている。レジ
スタ32に保持された値がPC値と一致したときに、レ
ジスタ31の情報に従って、実行条件の判断を開始す
る。もし条件を満たしていれば、レジスタ30に保持さ
れた内容に基づきPC制御部13が演算を実行する。実
行条件を判断する時期を遅延させることができ、この遅
延している間にその実行条件を決定するための演算を行
える。従って分岐命令はプログラム上実行条件を決定す
る演算命令より前に置くことができる。
Description
ケンスにおいて条件付き演算命令をうまくスケジューリ
ングするためのデータ処理装置に関するものである。
順々に実行するマイクロプロセッサにおいて、分岐命令
の実行はパイプラインを乱してプロセッサの処理効率を
低下させる1つの原因となっている。この処理性能の低
下を防止するために、例えば遅延スロットを用いた手法
がある。
成したとする。 〈命令シーケンス1〉 (I0) CMPEQ r10,r11 (I1) ADD r1,r2 (I2) BRA F0=1 H■1000 (I3) ・・・・・・ (I4) ・・・・・・
比較して等しければフラグF0をセットする比較命令であ
る。命令I1は、レジスタr1とレジスタr2との内容を加
算してレジスタr1に書き込む加算命令である。命令I2
は、フラグF0がセットされていたら、メモリの1000番地
にある命令に分岐する条件分岐命令である。命令I3、
I4は任意の命令で、命令I2が実行される時点ではす
でにマイクロプロセッサに投入されている。命令I2の
実行により分岐が発生したらパイプライン処理中の命令
I3、I4は無効化される。
を決定する演算を行う命令ではなく、命令I2の分岐に
拘わらず実行される命令であることを考慮して、次の命
令シーケンス2のような命令のスケジューリングを行
う。 〈命令シーケンス2〉 (I0) CMPEQ r10,r11 (I2) BRA F0=1 H■1000 (I1) ADD r1,r2 (I5) NOP
決定されたとしても、すでにパイプラインに投入され、
処理されている命令I1は無効にすることなく実行すれ
ばよく、命令I2の実行される時点で2つ命令がパイプ
ラインに投入されているアーキテクチャの場合、遅延ス
ロットは2つの命令で埋められることになる。命令シー
ケンス2の場合、遅延スロットは命令I1、I5により
構成される。命令I5はいわゆるNOP(no operation )
命令である。命令I2により分岐が決定されると命令I
5の次には分岐先の命令がフェッチされる。この命令シ
ーケンス1から命令シーケンス2へのスケジューリング
はプログラム自身あるいはコンパイラーにより行われ
る。このような命令のスケジューリングに関して、“Co
mputer Architecture: A Quantitative Approach, Morg
an Kaufmann 社, 1990年”で種々の手法が提案されてい
る。
プロセッサの処理能力を最大に発揮させるために、プロ
グラム上で命令をスケジューリングする技術は重要であ
る。しかしながら命令の種類によってスケジューリング
する上で種々の制約が存在する。上記の例によると、命
令シーケンスにおいて、命令I2の条件分岐命令はその
実行条件を決定する命令I0より前に置くことはできな
い。これは、命令I2が分岐の条件であるフラグF0の内
容を参照する際、まだその条件を決定する命令I0の実
行が終了できないからである。 このようにして、条件
付きの分岐命令に限らず条件付きの算術演算命令も同様
に命令のスケジューリングの自由度を損ねる原因とな
る。
タイプのマイクロプロセッサにおいては、並列に実行す
ることのできる複数のサブ命令を1つの命令セットで表
現している。このタイプではどの命令が並列に実行でき
るかを考慮した高度なスケジューリング技術が必要とな
り、条件付きの演算命令の存在により、いわゆるNOP
(No Operation)命令というプログラム上意味のない命
令を命令シーケンスに挿入しなければならないことが多
くなる。NOP(No Operation)命令を処理することも
マイクロプロセッサの処理性能を低下させる原因でもあ
る。
の演算命令を処理するデータ処理装置において、自由度
の高い命令のスケジューリングができる環境をプログラ
マに提供することである。
理装置は、プログラムシーケンスに記述されたコード化
された複数の演算命令を順次デコードして、各演算命令
に対応する制御信号を出力する命令デコーダ、および、
この命令デコーダから出力される制御信号に従って、複
数の演算命令によりそれぞれ指定された演算を実行する
命令実行部を備えている。第1の演算命令に関して、第
1の期間でデコーダされ、これに続く第2の期間でその
指定される演算が実行される。一方、所定の条件の基で
演算が実行される第2の演算命令に関して、第3の期間
でデコードされ、第3の期間の終わりから第2の期間と
同じ時間、あるいはそれより長い時間が経過した後に開
始される第4の期間において、命令実行部が所定の条件
を満たしているか否かを判断し、その判断結果に応じて
第2の演算命令で指定された演算を実行している。
を可変に設定できる遅延量指定レジスタを備えている。
命令実行部は前記遅延量指定レジスタに遅延量として保
持されている値に応じて第2の演算命令が所定の条件を
満たしているかの判断を開始している。
指定する演算指定フィールドと、第3の期間の終わりか
ら第4の期間の開始までの間隔を指定する遅延量指定フ
ィールドとを有し、遅延量指定レジスタには、遅延量指
定フィールドに記述された内容に従って遅延量が設定さ
れる。
令の各々に対応付けられたアドレスを順次カウントして
保持するプログラムカウンタを備えている。遅延量指定
レジスタは遅延量としてアドレス値を保持するものであ
り、命令実行部は、遅延量指定レジスタに保持されたア
ドレス値がプログラムカウンタの値と一致したことに応
答して、第2の演算命令が所定の条件を満たしているか
の判断を開始している。
期間において、所定の条件を満たしているか否かを判断
する。そして命令実行部は第4の期間に含まれており且
つこの第5の期間の終了して第2の期間と同じ時間ある
いはそれより長い時間が経過して開始する第6の期間に
所定の条件を満たしたときに第2の演算命令で指定され
た演算を実行している。
値を可変に設定できる第1および第2の遅延量指定レジ
スタを備えている。命令実行部は、第1の遅延量指定レ
ジスタに第1の遅延量として保持されている値に従って
第2の演算命令が所定の条件を満たしているかの判断を
開始し、第2の遅延量指定レジスタに第2の遅延量とし
て保持されている値に従って第2の演算命令所定の条件
を満たしたときに第2の演算命令で指定された演算を開
始して実行している。
指定する演算指定フィールドと、第3の期間の終わりか
ら第4の期間の開始までの時間を指定する第1の遅延量
指定フィールドと、第5の期間の終わりから第6の期間
の開始までの時間を指定する第2の遅延量指定フィール
ドとを有している。第1の遅延量指定レジスタには、第
1の遅延量指定フィールドに記述された内容に従って第
1の遅延量が設定され、第2の遅延量指定レジスタに
は、第2の遅延量指定フィールドに記述された内容に従
って第2の遅延量が設定される。
れぞれ第1および第2の遅延量としてアドレス値を保持
している。命令実行部は第1の遅延量指定レジスタに保
持されたアドレス値がプログラムカウンタの値と一致し
たことに応答して、所定の条件が満たされているかの判
断を開始している。さらに命令実行部は、第2の遅延量
指定レジスタに保持されたアドレス値がプログラムカウ
ンタの値と一致したことに応答して、所定の条件を満た
した場合に第2の演算命令で指定された演算を開始し実
行している。
し、第3の期間より後に開始される第7の期間において
命令デコーダでデコードされ、前記第7の期間より後に
開始される第8の期間において第3の演算命令で指定さ
れた命令実行部で演算が実行されその演算結果が所定の
記憶場所に書き込まれる。このとき、第2の演算命令
は、第3の演算命令の演算結果が所定の値を有している
場合に実行される演算命令を指定しており、命令実行部
は、第4の期間の開始が少なくとも第8の期間の後にな
るように、所定の記憶場所を参照して演算を実行すべき
か否か決定している。
である。また第3の演算命令は、2つのレジスタの値を
比較して、その比較結果を前記所定の記憶場所に書き込
む比較命令である。さらに、第2の演算命令は、分岐命
令、ジャンプ命令、あるいは加算命令である。
定する演算指定フィールドと、その演算の実行条件を指
定する条件指定フィールドと、その実行条件を判断する
タイミングを遅延させる量を指定する遅延量指定フィー
ルドとを有している。
であれば、第1の演算命令の条件指定フィールに無条件
であることを示す情報が記述されている。命令デコーダ
は、第1の演算命令における演算指定フィールドに従っ
て第1の制御信号を出力し、条件指定フィールドに基づ
き、第2の期間で前記第1の演算命令で指定された演算
を実行するように前記命令実行部を制御する。
であれば条件指定フィールドおよび遅延量指定フィール
ドに、それぞれ第2の演算命令の所定の条件とは別の条
件を示す情報、および第1の期間に前記別の条件を判断
することを示す情報が記述されている。命令デコーダ
は、第1の演算命令における演算指定フィールドに従っ
て第1の制御信号を出力し、条件指定フィールドおよび
遅延量指定フィールドに基づき、第2の期間で第1の演
算命令で指定された演算を実行するように命令実行部を
制御する。命令デコーダは、第1の演算命令における条
件指定フィールドおよび遅延量指定フィールドに従って
条件を満たしているか否かを判断し、その判断結果に応
じて第1の演算命令における演算指定フィールドに従っ
て第1の制御信号を出力する。
び遅延量指定フィールドに、それぞれ所定の条件を示す
情報および第3の期間の終わりから第4の期間の開始ま
での間隔を示す情報が記述されている。命令デコーダ
は、第2の演算命令における演算指定フィールドに従っ
て第1の制御信号を出力し、第2の演算命令における遅
延量指定フィールドに従って第4の期間で所定の条件を
満たしているかを判断させるように命令実行部を制御
し、第2の演算命令における条件指定フィールドに従っ
て所定の条件を満たしたか否かを決定するように命令実
行部を制御する。
条件付きの演算命令をデコードして第1の制御信号を出
力する命令デコーダ、その第1の制御信号に従い演算を
実行する命令実行部を備えている。命令実行部は第1の
制御信号を保持させる第1のレジスタ、条件付き演算命
令に指定される演算が実行される条件を示す第1の情報
を保持させる第2のレジスタ、および、その条件の判断
を開始する時期を示す第2の情報を保持する第3のレジ
スタを含んでいる。そして命令実行部は、第3のレジス
タに保持された第2の情報に基づき、条件の判断が開始
される時期であることを検出したことに応答して第2の
レジスタに保持された第1の情報に基づき前記条件が満
たされているか否かの判断を開始し、その判断結果に応
じて第1のレジスタに保持された第1の制御信号を読み
出して演算命令に指定された演算の実行を開始する。
可変に設定することができる。
に対応付けられたアドレスを順次カウントして保持する
プログラムカウンタを備えている。第3のレジスタに
は、第2の情報としてアドレス値が保持され、命令実行
部は第3のレジスタに保持されたアドレス値がプログラ
ムカウンタのアドレスと一致したことを検出し、その検
出に応答して条件が満たされているか否かの判断を開始
している。
る演算指定フィールドと、その演算の実行条件を指定す
る条件指定フィールドと、その実行条件を判断する時期
を指定する遅延量指定フィールドとを有する。命令デコ
ーダは演算指定フィールドに記述された内容に基づいて
第1の制御信号を生成し、条件指定フィールドに記述さ
れた内容を第1の情報として出力するとともに遅延量指
定フィールドに記述された内容を出力する。命令デコー
ダから出力された第1の情報は第2のレジスタに保持さ
れる。そして命令実行部は、命令デコーダから出力され
る遅延量指定フィールドに従って第2の情報を第3のレ
ジスタに書き込む。
れた演算を開始する時期を示す第3の情報を保持する第
4のレジスタを有している。命令実行部はこの第3の情
報に従って、演算命令で指定された演算が開始される時
期であることを検出し、その検出結果に応答して条件が
満たされているか否かを判断し、さらにその判断結果に
応じて前記演算命令で指定された演算を開始する。
に対応付けられたアドレスを順次カウントして保持する
プログラムカウンタを備えている。第3のレジスタに
は、第2の情報としてアドレス値が保持され、第4のレ
ジスタには、第3の情報として第2の情報とは異なるア
ドレス値が保持されている。命令実行部は、第3のレジ
スタに保持されたアドレス値がプログラムカウンタのア
ドレスと一致したことを検出し、その検出に応答して条
件が満たされているか否かの判断を開始する、さらに命
令実行部は第4のレジスタに保持されたアドレス値がプ
ログラムカウンタのアドレスと一致したことを検出し、
その検出に応答して前記演算命令に指定された演算の実
行を開始している。
の内容を指定する演算指定フィールドと、その演算の実
行条件を指定する条件指定フィールドと、その実行条件
を判断する時期を指定する第1の遅延量指定フィールド
と、その演算実行を開始する時期を指定する第2の遅延
量指定フィールドを有している。命令デコーダは、演算
指定フィールドに記述された内容に基づいて第1の制御
信号を生成し、条件指定フィールドに記述された内容を
第1の情報として出力するとともに第1および第2の遅
延量指定フィールドに記述された内容を出力する。命令
実行部は、命令デコーダから出力された第1の遅延量指
定フィールドに記述された内容に従って第2の情報を第
3のレジスタに書き込み、さらに命令デコーダから出力
された第2の遅延量指定フィールドに記述された内容に
従って第3の情報を第4のレジスタに書き込む。
説明する。 実施の形態1.図1はこの発明の実施の形態1によるマ
イクロプロセッサの構成を示すブロック図である。この
マイクロプロセッサは32ビットの内部データバスを有
する32ビットマイクロプロセッサである。図におい
て、2は命令RAM6から64ビット幅のIDバスを介
して入力した命令コードをデコードする処理を行う命令
デコードユニット(命令デコーダ)、3はアドレス計算
を行うメモリユニット(命令実行部)、4は論理演算や
シフト演算を行う整数演算ユニット(命令実行部)、5
は32ビット×64ワードの汎用レジスタ、7はデータ
が格納されるデータRAMである。
はそれぞれ命令コードをデコードするデコーダ、10は
プロセッサの状態を示すプロセッサ状態語(Processor
Status Word 、以下、プロセッサ状態語をPSWと呼
ぶ)である。命令デコードユニット2は、さらに、デコ
ーダ8のデコード結果とPSW10の内容にもとづいて
制御信号11を作成し、それをメモリユニット3に与え
る。また、命令デコードユニット2は、デコーダ9のデ
コード結果とPSW10の内容にもとづいて制御信号1
2を作成し、それを整数演算ユニット4に与える。
プや分岐を含まない命令を実行するとPC値に8を加え
て次に実行する命令に対するPC値を算出するととも
に、ジャンプや分岐を含む命令の実行時に分岐変位をP
C値に加算したり、演算で指定されたアドレッシングモ
ードに応じた計算を行ってジャンプ先の命令に対するP
C値を計算するPC制御部である。また、PC制御部1
3は、計算したPC値を32ビット幅のIAバスを介し
て命令RAM6に送り、命令RAM6から命令コードを
出力させる。14はオペランドとなるデータのアクセス
を制御するメモリ制御部である。メモリ制御部14は、
32ビット幅のDAバスを介してアドレスデータをデー
タRAM7に転送し命令実行に必要なデータを64ビッ
ト幅のDDバスを介してアクセスする。15は汎用レジ
スタ5から32ビット幅のS1バス、S2バス、S3バ
スを介して転送された最大3ワードのデータを用いて算
術論理演算を行い演算結果を32ビット幅のD1バスを
介して汎用レジスタ5に転送するALU、16は汎用レ
ジスタ5からS1バス、S2バス、S3バスを介して転
送されたデータを用いてシフト演算を行い演算結果をD
1バスを介して汎用レジスタ5に転送するシフタであ
る。
2バス、S3バス、S4バスを介して、32ビット長の
データを一時に4ワード転送することが可能である。従
って、例えば、第1のレジスタの内容と第2のレジスタ
の内容との和でアドレッシングされるメモリの領域に第
3のレジスタの内容をストアするとともに、第3のレジ
スタの内容をストアしたアドレスに所定値を加算して得
られる値でアドレッシングされるメモリの領域に第4の
レジスタの内容をストアする2ワードストア命令を実現
することができる。また、メモリユニット3は、D1バ
スおよびD2バスを介して、メモリユニット3内での2
ワードの演算結果またはデータRAM7から転送された
2ワードのデータを汎用レジスタ5に転送することがで
きる。
1、32および33、さらに1ビットを保持する記憶回
路34を含む。メモリ制御部14はレジスタ40、41
および42を含む。ALU15はレジスタ50、51お
よび52を含む。さらにシフタ16はレジスタ60、6
1および62を含む。これらのレジスタに関しては後述
する。
レジスタ5から32ビット幅のS4バス、S5バス、S
6バスを介して転送された最大3ワードのデータを用い
て乗算を行い演算結果を32ビット幅のD2バス、D3
バスを介して汎用レジスタ5に転送する乗算器、18は
乗算の結果を累積加算または累積減算して保持するアキ
ュムレータである。アキュムレータとして、64ビット
のものが2本ある。19は汎用レジスタ5からS4バ
ス、S5バス、S6バスを介して転送された最大3ワー
ドのデータを用いて算術論理演算を行い演算結果をD2
バス、D3バスを介して汎用レジスタ5に転送するAL
U、20は汎用レジスタ5からS4バス、S5バス、S
6バスを介して転送されたデータを用いてシフト演算を
行い演算結果をD2バス、D3バスを介して汎用レジス
タ5に転送するシフタである。
72を含む。ALU19はレジスタ80、81および8
2を含む。さらにシフタ20はレジスタ90、91およ
び92を含む。これらのレジスタに関しても後述する。
タ5から、最大6種類のレジスタ値を読み出すことが可
能であって、読み出されたデータは、それぞれ、S1バ
ス、S2バス、S3バス、S4バス、S5バス、S6バ
スに出力される。また、汎用レジスタ5には、D1バ
ス、D2バス、D3バスを介して最大3種類のレジスタ
値を同時に書き込むことが可能である。
マットを示す説明図である。命令フォーマットとして、
図2(a)に示すような1つの命令コードで2つの演算
(operation )を指示する2演算命令のフォーマット1
01と、図2(b)に示すような1つの命令コードで1
つの演算を指示する1演算命令のフォーマット102と
がある。2演算命令のフォーマット101には、フィー
ルド103およびフィールド104からなるフォーマッ
トフィールドと、2つの演算フィールド106、107
と、演算フィールド106、107にそれぞれ付属する
実行条件フィールド401および402と、さらに、実
行条件フィールド401および402にそれぞれ付属す
る条件判定遅延量指定フィールド(以下、CDフィール
ド)404、405とが含まれる。1演算命令のフォー
マット102には、フィールド103および104から
なるフォーマットフィールドと、フィールド108、1
09および110からなる演算フィールドと、この演算
フィールドに付属する実行条件フィールド403と、こ
の実行条件フィールド403に付属するCDフィード4
06とが含まれる。
意味を示す。 コード:フォーマット 実行の順番 operation_0 operation_1 FM=00:2命令 第1 第1 01:2命令 第1 第2 10:2命令 第2 第1 11:1命令 第1 −− ここで、FMは、フィールド103およびフィールド1
04からなる2ビットの値である。
ンステージは、命令フェッチステージIF、命令デコード
ステージD/A、命令実行ステージE/M、ライトバックステ
ージWにより構成され、各々のステージでの処理は1ク
ロックサイクルでなされる。図3はマイクロプロセッサ
1において2演算命令101を処理するパイプラインス
テージを説明するための説明図である。命令フェッチユ
ニットIFにおいて、2演算命令101がメモリRAM6
から命令デコードユニット2へフェッチされる。命令デ
コードユニットD/Aにおいて、演算フィールド106に
記述されたoperation_0がデコーダ8でデコードされ、
演算フィールド107に記述されたoperation_1 がデコ
ーダ9でデコードされる。また、operation_0、1の各オ
ペランドアドレス、又は、operation_0、1の各々が分岐
命令であれば分岐先アドレスが、命令デコードステージ
D/Aで算出される。命令実行ステージE/Mにおいて、制御
信号11に従ってoperation_0 で指定された演算がメモリ
ユニット3で実行され、制御信号12に従ってoperation_
1 で指定された演算が整数演算ユニット4で実行され
る。operation_1 がロード命令、ストア命令等のメモリ
アクセスを伴う命令であれば、命令実行ステージE/M に
おいてメモリユニット3によりメモリへのアクセスが行
われる。ライトバックステージW において、メモリユニ
ット3で得られた演算結果、整数演算ユニット4で得ら
れた演算結果が、それぞれoperation_0、1 で指定され
るレジスタに書き込まれる。演算結果をプロセッサ1内
のレジスタに書き込む命令を伴わない命令(分岐命令、
ジャンプ命令、メモリへデータをストアするストア命
令、演算結果をフラグに反映させる比較命令等)は、ラ
イトバックステージW は存在しない。なおマイクロプロ
セッサによっては、ライトバックステージW が命令実行
ステージE/M 同じクロックサイクルで処理されるものも
ある。
にoperation_0、1のステージIF、D/A、E/M、Wは互いに
並列に行われ、operation_0、1は4クロックで処理され
る。FM=01の場合、図3(b)に示すようにoperat
ion_0のステージIF、D/A、E/M、Wは4クロックを要して
連続的に行われる。operation_0、1のステージIF、D/A
は互いに並列に行われる一方、operation_1のステージE
/M、Wは、operation_0より1クロック遅れて行われる。
operation_1のステージE/Mがoperation_0のステージWと
並列に行われる。よってoperation_1は5クロックで処
理される。FM=01の場合、図3(c)に示すように
operation_1のステージIF、D/A、E/M、Wは4クロックを
要して連続的に行われる。operation_0、1のステージI
F、D/Aは互いに並列に行われる一方、operation_0のス
テージE/M、Wは、operation_1より1クロック遅れて行
われる。operation_0のステージE/Mがoperation_1のス
テージWと並列に行われる。よってoperation_1は5クロ
ックで処理される。
る1演算命令102もまた、命令フェッチステージIF、
命令デコードステージD/A、命令実行ステージE/M、ライ
トバックステージW においてそれぞれ1クロックサイク
ルでもって処理される。ステージIFにおいて、1演算命
令102が命令RAM6から命令デコードユニット2へ
フェッチされる。ステージD/A において、1演算命令1
02がデコーダ8、9の各々に入力される。1演算命令
102で指定される演算の種類に応じて、デコーダ8、
9のいずれか一方が1演算命令102をデコードする。
デコーダ8がデコードしたならば制御信号11を出力
し、デコード9がデコードしたならば制御信号12を出
力する。ステージE/M において、制御信号11(または
12)に従ってメモリユニット3(又は整数演算ユニッ
ト4)が、1演算命令102で指定された演算を実行す
る。ステージWにおいて、ステージE/Mで得られた演算結
果が、1演算命令102で指定されたレジスタに書き込
まれる。
る。実行条件フィールド401、402、403の各々
は、以下のような意味を持つ。
は、その付属する演算命令の実行条件を指定するもの
で、マイクロプロセッサの実行コントロールフラグF
0,F1の値に応じて、演算フィールド106、107
のoperation_0の演算やoperation_1 の演算、およびフ
ィールド108、109、110からなる演算フィール
ドの演算が有効であるか無効であるか定める。実行コン
トロールフラグF0,F1については後で説明するよう
にプロセッサステータスワード(PSW)10内にあ
る。演算が有効であるとは、演算結果がレジスタ、メモ
リおよびフラグに反映され、その演算による動作の結果
が残ることを意味する。一方演算が無効であるとは、演
算命令がデコードされたがその指定された演算が実行さ
れないこと、または演算されてもその演算結果がレジス
タ、メモリおよびフラグに反映されず、あたかも無効演
算(NOP)が実行されたかのような動作の結果が残る
ことを意味する。
きには、実行コントロールフラグF0、F1の値にかか
わらず常に演算は有効である。CC=001のときに
は、実行コントロールフラグF0=真のときにのみ演算
は有効である。実行コントロールフラグF1の状態はい
ずれでもよい。CC=010のときには、実行コントロ
ールフラグF0=偽のときにのみ演算は有効である。実
行コントロールフラグF1の状態はいずれでもよい。C
C=011のときには、実行コントロールフラグF1=
真のときにのみ演算は有効である。実行コントロールフ
ラグF0の状態はいずれでもよい。CC=100のとき
には、実行コントロールフラグF1=偽のときにのみ演
算は有効である。実行コントロールフラグF0の状態は
いずれでもよい。CC=101のときには、実行コント
ロールフラグF0=真かつF1=真のときにのみ演算は
有効である。CC=110のときには、実行コントロー
ルフラグF0=真かつF1=偽のときにのみ演算は有効
である。CC=111のときの動作は未定義であり、ユ
ーザはCC=111となる命令を用いることはできな
い。
説明図である。フォーマット111〜117は、それぞ
れ28ビットで表現される短型の演算フィールド106
または演算フィールド107によるものである。フォー
マット118は、フィールド108,109,110で
構成される長型の演算フィールドによるものである。
は、演算内容を指定するフィールド120、レジスタ番
号を指定する2つのフィールド121,122、レジス
タ番号または6ビット長の即値を指定するフィールド1
23、およびフィールド123がレジスタ番号を示すの
か即値を示すのかを指定するフィールド124で構成さ
れる。図3に示すように、フィールド124の値Xが
「00」、「01」または「11」であるときにはフィ
ールド123がレジスタ番号を示していることを示し、
「10」であるときには即値を示していることを示す。
このフォーマット111は、レジスタ間接アドレッシン
グのメモリアクセス演算に用いられる。
は、演算内容を指定するフィールド120、レジスタ番
号を指定する2つのフィールド121,122、レジス
タ番号または6ビット長の即値を指定するフィールド1
23、およびフィールド123がレジスタ番号を示すの
か即値を示すのかを指定するフィールド125で構成さ
れる。図3に示すように、フィールド125の値X’が
「0」であるときにはフィールド123がレジスタ番号
を示していることを示し、「1」であるときには即値を
示していることを示す。このフォーマット112は、算
術演算、論理演算、シフト演算およびビット演算に用い
られる。
は、演算内容を指定するフィールド120およびレジス
タ番号を指定するフィールド126で構成される。この
フォーマット113は、レジスタ指定によるジャンプ命
令および分岐命令に用いられる。フォーマット114
(Short_B2)は、演算内容を指定するフィール
ド120および18ビット長のディスプレイスメントの
フィールド127で構成される。このフォーマット11
4は、ジャンプ命令および分岐命令に用いられる。
は、演算内容を指定するフィールド120、レジスタ番
号を指定するフィールド121、レジスタ番号または1
2ビット長の即値を指定するフィールド128、フィー
ルド128がレジスタ番号を示すのか即値を示すのかを
指定するフィールド129、およびゼロ判定にもとづい
てフィールド121にもとづく条件ジャンプまたは条件
分岐を行うか否か指定するフィールド130で構成され
る。このフォーマット115は、条件ジャンプ命令およ
び条件分岐命令に使用される。
は、演算内容を指定するフィールド120、レジスタ番
号を指定するフィールド121、レジスタ番号または1
2ビット長の即値を指定するフィールド128、フィー
ルド128がレジスタ番号を示すのか即値を示すのかを
指定するフィールド129で構成される。このフォーマ
ット116は、条件ジャンプ命令、条件分岐命令および
リピート命令に使用される。フォーマット117(Sh
ort_D2)は、演算内容を指定するフィールド12
0、レジスタ番号または12ビット長の即値を指定する
フィールド128、フィールド128がレジスタ番号を
示すのか即値を示すのかを指定するフィールド129、
遅延命令(ディレイド命令)に関するフィールド131
で構成される。このフォーマット117は、ディレイド
ジャンプ命令、ディレイド分岐命令およびリピート命令
に使用される。
内容を指定するフィールド120、レジスタ番号を指定
する2つのフィールド121,122、32ビット長の
即値を指定するフィールド132で構成される。このフ
ォーマット118は、複雑な算術演算、大きな即値を用
いる算術演算、大きなディスプレイスメント付きレジス
タ間接アドレッシングのメモリアクセス演算、大きな変
位の分岐演算および絶対番地へのジャンプ命令などに使
用される。
を示す説明図である。このマイクロプロセッサは、図5
(a)に示すような64本の32ビット長の汎用レジス
タ5、図5(b)に示すような12本の制御レジスタ1
50、および図5(c)に示すような2本のアキュムレ
ータ18を持つ。R0の汎用レジスタ140の内容は常
に0であり、そこへの書き込みは無視される。R62の
汎用レジスタは、サブルーチンからの戻り先アドレスが
設定されるリンクレジスタである。R63の汎用レジス
タは、スタックポインタであり、PSW10のSMフィ
ールドの値に応じてユーザスタックポインタ(SPU)
または割り込みスタックポインタ(SPI)として動作
する。制御レジスタ150には、プログラムカウンタ1
51、PSW10、および各種の専用レジスタが含まれ
る。図4に示すフォーマット112による演算では、6
4本の汎用レジスタ5のそれぞれを上位16ビットと下
位16ビットとに分けてアクセスできる。また、2本の
アキュムレータ18を、上位32ビットと下位32ビッ
トとに分けて別々にアクセスできる。
である。PSW10の上位16ビットには、スタックポ
インタを切り替えるためのSMフィールド171、セル
フデバッグトラップ(SDBT)の検出を示すEAフィ
ールド172、SDBTの許可を指定するDBフィール
ド173、割り込み許可を指定するIEフィールド17
4、リピート動作の許可を指定するRPフィールド17
5、モジュロアドレッシングの許可を指定するMDフィ
ールド176がある。下位16ビットはフラグフィール
ド180である。フラグフィールド180には8個のフ
ラグがあり、その中のF0フラグ181およびF1フラ
グ182は演算の有効/無効を指定する。各フラグの値
は比較演算や算術演算の結果に応じて変化する。また、
フラグ初期化演算で初期化したり、フラグ値書き込み演
算で任意の値をフラグフィールド180に書き込むこと
によって変化する。フラグフィールド180の内容は、
フラグ値読み出し演算によって読み出される。
を示す。 A.マイクロプロセッサ機能に関する命令 A−1.ロード/ストア命令 LDB :Load one byte to a register with sign extension [1バイトロード(符号拡張あり)] LDBU :Load one byte to a register with zero extension [1バイトロード(ゼロ拡張あり)] LDH :Load one half-word to a register with sign extension [1ハーフワードロード(符号拡張あり)] LDHH :Load one half-word to a register high [1ハーフワードロード(レジスタ上位へ)] LDHU :Load one half-word to a register with zero extension [1ハーフワードロード(ゼロ拡張あり)] LDW :Load one word to a register [1ワードロード] LD2W :Load two words to registers [2ワードロード] LD4BH :Load four bytes to four half-words in two registers with sign extension [4バイトロード(2レジスタへ,符号拡張あり)] LD4BHU :Load four bytes to four half-words in two registers with zero extension [4バイトロード(2レジスタへ,ゼロ拡張あり)] LD2H :Load two half−words to two
words in two registers with sign extension [2ハーフワードロード(2レジスタへ,符号拡張あり)] STB :Store one byte from a register [1バイトストア] STH :Store one half-word from a register [1ハーフワードストア] STHH :Store one half-word from a register high [1ハーフワードストア(レジスタ上位から)] STW :Store one word from a register [1ワードストア] ST2W :Store two words from registers [2ワードストア] ST4HB :Store four bytes from four half-words from two registrers [4バイトストア(2レジスタの4ハーフワードから)] ST2H :Store two half-words from two registrers [2ハーフワードストア(2レジスタから)] MODDEC :Decrement a register value by a 5-bits immediate value [即値5ビットのデクリメント] MODINC :Increment a register value by a 5-bits immediate value [即値5ビットのインクリメント]
ジスタについて説明する。CDフォーマット404は、
対応している演算フィールド106で指定されたoperat
ion_0 のパイプラインでの処理において、対応している
実行条件フィールド401で指定される実行条件を判定
する時期を遅延させる遅延量を指定するもので、ユーザ
がCDフィールド404の値を適宜設定することにより
その遅延量を可変に設定することができる。
フィールド106の記述された命令フォーマット101
が格納されているメモリアドレスXからのオフセット値
aが即値として記述される。この場合、operation_0 の
処理において実行条件フィールド401に記述された実
行条件が判断される時期は、マイクロプロセッサ1のP
C値が(X+a)番地を保持しているクロックサイクル
となる。オフセット値aはゼロであってもよい。その場
合実行条件が判断される時期は、PCの値がX番地を保
持しているクロックサイクルとなる。さらに、CDフィ
ールド404には、アドレス値を保持するプロセッサ1
内のレジスタの番号を指定する情報を記述することもで
きる。その場合、実行条件フィールド401に記述され
た実行条件が判断される時期は、マイクロプロセッサ1
のPC値がその指定されたレジスタに保持されたアドレ
スであるクロックサイクルとなる。CDフィールド40
4に即値が記述してあるかレジスタ番号が記述してある
かを識別するビットが同じCDフィールド404にあ
る。但し、実行条件フォールド401がCC=000の
無条件実行を示している場合、対応するoperation_0 の
実行処理においてCDフィールド404の値は命令デコ
ードユニット2や各ユニット3、4で無視される。
107及び条件実行フィールド402に対して、CDフ
ィールド404と同一である。また、CDフィールド4
06も、フィールド108〜110の演算及び条件実行
フィールド403に対して、CDフィールド404と同
一である。
ジスタについて説明する。PC制御部13のレジスタ3
0、メモリ制御部14のレジスタ40、ALU15のレ
ジスタ50、及びシフタ16のレジスタ60の各々は、
演算フィールド106で指定されるoperation_0 がデコ
ードされて得られる制御信号11をそのまま保持する。
御部14のレジスタ41、ALU15のレジスタ51、
及びシフタ16のレジスタ61の各々は、operation_0
の演算が実行される条件を指定する情報を保持する。本
実施の形態の場合には、命令フォーマット101内の条
件実行フィールド401のCC値がそのまま保持され
る。
御部14のレジスタ42、ALU15のレジスタ52、
及びシフタ16のレジスタ62の各々は、operation_0
の演算の実行条件を判断する時期の情報を保持する。実
際にはoperation_0 の演算の実行条件を判断するときの
PC値(アドレス値)が保持される。例えばPC制御部
13がオフセット値を有するCDフィールド404に基
づいて、そのレジスタ32に保持されるべきアドレス値
を生成する。PC制御部13は命令デコードユニット2
からCDフィールド404のオフセット値を受け取り、
operation_0 の記述された命令フォーマット101のア
ドレスにそのオフセット値を加算し、その加算値をレジ
スタ32にセットする。CDフォーマット404がレジ
スタ番号を指定している場合には、PC制御部13は命
令デコードユニットからそのレジスタ番号を受け取った
そのままレジスタ32にセットする。レジスタ32の保
持するレジスタ番号で特定されるレジスタには、operat
ion_0 の演算の実行条件を判断するときのPC値(アド
レス値)を保持されている。なお、レジスタ32にPC
値が保持されているかレジスタ番号が保持されているか
を識別するビットがレジスタ32に設けられている。メ
モリ制御部14、ALU15及びシフタ16は、PC制
御部13と同様の方法により、PC値あるいはレジスタ
番号を生成してそれぞれレジスタ42、52および62
へセットする。
で指定されるoperation_0 が、上記(A−9)にあるよ
うな分岐命令である場合に命令実行部の演算ユニットと
して動作するものであり、operation_0 が分岐命令であ
ればレジスタ30〜32が上述のように機能し、他のレ
ジスタ40〜42、50〜52、60〜62は使用され
ない。またメモリ制御部14は、演算フィールド106
で指定されるoperation_0 が、上記(A−1)のロード
/ストア命令ようなメモリアクセス命令である場合に命
令実行部の演算ユニットとして動作するものであり、op
eration_0 がメモリアクセス命令であればレジスタ40
〜42が上述のように機能し、他のレジスタは使用され
ない。またALU15は、演算フィールド106で指定
されるoperation_0 が、上記(A−5)にあるような算
術演算命令、又は(A−6)にあるような論理演算命令
である場合に命令実行部の演算ユニットとして動作する
ものであり、operation_0 が算術演算命令あるいは論理
演算命令であればレジスタ40〜42が上述のように機
能し、他のレジスタは使用されない。さらに、シフタ1
6は、演算フィールド106で指定されるoperation_0
が、上記(A−7)にあるようなシフト演算命令である
場合に命令実行部の演算ユニットとして動作するもので
あり、operation_0 がシフト演算命令であればレジスタ
40〜42が上述のように機能し、他のレジスタは使用
されない。
憶回路34は、operation_0 が特にディレイド分岐命令
およびディレイドジャンプ命令である場合に使用される
ものである。図7はディレイド分岐命令の基本的なフォ
ーマット320を示す説明図である。基本的には、ディ
レイド分岐命令のフォーマット320は、オペコード3
21、分岐を実行する時期を遅延させるための遅延量を
指定する実行遅延量指定フィールド322および分岐先
アドレスを指定するためのオフセットまたはアドレスが
指定される分岐先指定フィールド323を持つ。ディレ
イド分岐命令は、例えば、図4に示すフォーマット11
6(Short_D1)、フォーマット117(Sho
rt_D2)またはフォーマット118(Long)で
実現される。フォーマット116(Short_D1)
は、遅延量としてレジスタ設定値が用いられる場合に使
用される。フォーマット117(Short_D2)
は、遅延量として即値が用いられる場合に使用される。
フォーマット118(Long)は、分岐先アドレスを
32ビット即値で指定する場合に使用される。各フォー
マットにおいて、オペコードはフィールド120で指定
される。また、フィールド129は、フィールド128
がレジスタ番号を示すのか即値を示すのかを指定するた
めに使用される。フィールド121は、DBRA,DB
SR,DJMP,DJSRの各命令において遅延量がレ
ジスタで指定されるときのレジスタ指定領域として使用
され、フィールド131は、遅延量を指定する即値の領
域として使用される。
ーマットで記述される。但し、フィールド323では、
ジャンプ先のアドレスを保持しているレジスタのレジス
タ番号が指定されている。
即値として記述された遅延量はディレイド分岐(あるい
はジャンプ)命令の記述されている2演算命令101の
アドレスXからのオフセット値bである。よってユーザ
は実行遅延量指定フィールド322の値を適宜設定する
ことによりその遅延量は可変とすることができる。ただ
し分岐の実行される時期がCDフィールド404により
決定される分岐の条件を判断する時期より前にならない
ように、ユーザは実行遅延量指定フィールド322ある
いはCDフィールド404を設定しなければならない。
は、ディレイド分岐(あるいはジャンプ)命令で指定さ
れる分岐を実行する時期の情報を保持する。実際には分
岐を実行するときのPC値(アドレス値)が保持され
る。PC制御部13がオフセット値を有するフィールド
322に基づいて、そのレジスタ33に保持されるべき
アドレス値を生成する。PC制御部13は命令デコード
ユニット2からフィールド322のオフセット値を受け
取り、ディレイド分岐(あるいはジャンプ)命令の記述
された命令フォーマット101のアドレスにそのオフセ
ット値を加算し、その加算値をレジスタ33にセットす
る。フォーマット322がレジスタ番号を指定している
場合には、PC制御部13は命令デコードユニットから
そのレジスタ番号を受け取ったそのままレジスタ33に
セットする。レジスタ33の保持するレジスタ番号で特
定されるレジスタには、分岐を実行するときのPC値
(アドレス値)を保持されている。
C制御部13がディレイド分岐(あるいはジャンプ)命
令の実行条件を判断した結果、実行条件を満たしたか満
たしていないかを示す情報を保持するものである。
信号11には、その制御信号11に対する命令が、ディ
レイド分岐命令であるかディレイなしの通常の分岐命令
であるかを識別する1ビットの情報を含んでいる。
3内の各レジスタについて説明する。乗算器17のレジ
スタ70、ALU19のレジスタ80、及びシフタ20
のレジスタ90の各々は、演算フィールド106で指定
されるoperation_1 がデコードされて得られる制御信号
12をそのまま保持する。
レジスタ81、及びシフタ20のレジスタ91の各々
は、operation_1 の演算が実行される条件を指定する情
報を保持する。本実施の形態の場合には、命令フォーマ
ット101内の条件実行フィールド402のCC値がそ
のまま保持される。
レジスタ82、及びシフタ20のレジスタ92の各々
は、operation_1 の演算の実行条件を判断する時期の情
報を保持する。CDフィールド405がオフセット値で
あれば、operation_1 の演算の実行条件を判断するとき
のPC値(アドレス値)として各レジスタに保持され
る。その保持されるべきPC値はoperation_1 の記述さ
れた命令フォーマット101のアドレスとそのオフセッ
ト値との加算値である。またCDフィールド405がレ
ジスタ番号を指定しているならば、そのレジスタ番号が
そのまま保持される。レジスタ72の保持するレジスタ
番号で特定されるレジスタには、operation_0 の演算の
実行条件を判断するときのPC値(アドレス値)を保持
されている。レジスタ72、82及び92への値のセッ
トは、CDフィールド405を命令デコードユニットか
ら受け取るCDフィールド405に従い、それぞれ乗算
器17、ALU19及びシフタ20により行われる。
定されるoperation_1 が上記(B−1)にあるように乗
算を伴う乗算命令および積和命令である場合に命令実行
部の演算ユニットとして動作するものであり、operatio
n_1 が乗算を伴う命令であればレジスタ70〜72が上
述のように機能し、他のレジスタ80〜82、90〜9
2は使用されない。またALU19は、演算フィールド
107で指定されるoperation_1 が、上記(A−5)に
あるような算術演算命令、又は(A−6)にあるような
論理演算命令である場合に命令実行部の演算ユニットと
して動作するものであり、operation_1 が算術演算命令
あるいは論理演算命令であればレジスタ80〜82が上
述のように機能し、他のレジスタは使用されない。さら
に、シフタ20は、演算フィールド107で指定される
operation_1 が、上記(A−7)にあるようなシフト演
算命令である場合に命令実行部の演算ユニットとして動
作するものであり、operation_1 がシフト演算命令であ
ればレジスタ40〜42が上述のように機能し、他のレ
ジスタは使用されない。
による1演算命令が処理される場合には、分岐、メモリ
アクセス、算術演算等の種類によって、PC制御部1
3、メモリ制御部14、ALU15、19、シフタ1
6、20及び乗算器17のうちの1つが命令実行部の演
算ユニットとして演算命令を実行する。CDフィールド
406は、同様に1演算命令のパイプラインでの処理に
おいて、実行条件フィールド403で指定される実行条
件を判定する時期を遅延させる遅延量を指定する。そし
て1演算命令102を実行する命令実行部の演算ユニッ
トに備えられたレジスタは、その1演算命令102につ
いて上述したものと同じ内容の値を保持する。
てマイクロプロセッサ1の動作を説明する。このプログ
ラムにおいて、各行における2つのサブ命令が、図2
(a)の命令フォーマットの2演算命令101で記述さ
れ、サブ命令I01、I11、I21、I31、I4
1、I51及びI61がoperation_0 として演算フィー
ルド106で記述され、サブ命令I02、I12、I2
2、I32、I41、I51及びI61がoperation_1
として演算フィールド107で記述されている。それぞ
れの2演算命令は、同じ行に記述されたメモリのアドレ
ス番地によりアクセスされる。例えば、サブ命令I0
1、I02は1000〜1007番地のメモリの領域に
格納され、1000番地のアドレスでアクセスされる。
まりフラグが0を保持している)」という分岐条件を満
たしていれば、loopの記述されたサブ命令I11、
I12に分岐する分岐命令BRAで、この分岐条件をe
ndの記述されたサブ命令I41、I42の実行時に判
断することのできる。また分岐命令BRAはディレイな
しの通常の分岐命令である。サブ命令I21は、レジス
タR2とレジスタR3とのそれぞれ内容を加算してレジ
スタR2に格納する加算命令ADDである。サブ命令I
31は、レジスタR2とレジスタR4との内容が等しけ
ればフラグF0に“1”を書き込み、等しくなければ
“0”を書き込む比較命令CMPEQである。サブ命令
I11、I41、I51、I61は、メモリユニット2
でステージE/M の処理がなされる任意の算術演算命令
で、その他のサブ命令は整数演算ユニット3でステージ
E/Mの処理がなされる任意の算術演算命令である。
ルド401には、“CC=010”が記述されており、
サブ命令I01以外のすべてのサブ命令は無条件に実行
する命令であるとし、その対応の実行条件フィールドに
は“CC=000”が記述されている。また、サブ命令
I01に対応するCDフィールド404にはオフセット
値’20’が記述されている。また、各行に記述された
2演算命令は、FMフィールド103、104が00に
設定されて2つのサブ命令の演算を並列に実行する命令
であるとする。
地、1010番地、1018番地、1020番地の4つ
の2演算命令で1つのループが形成されており、このプ
ログラムはサブ命令I31の比較命令の実行にフラグF
0が真になるまでこのループ内の4つの2演算命令が繰
り返して順次実行されることを意味している。
プライン処理するマイクロプロセッサ1の動作を示して
いる。図においてクロックt1ないしt13は連続する
1クロックサイクルを示し、各クロックサイクル内のす
べてのパイプラインステージの処理は並列に行われる。
例えば、クロックt5において、サブ命令I11、I1
2の各ステージW、サブ命令I21、I22の各ステー
ジE/M、サブ命令I31、I32の各ステージD/A 、サ
ブ命令I41、I42の各ステージIFは、すべて並列に
処理される。他のクロックサイクルに関しても同様であ
る。
Cが保持するアドレス値は、そのアドレス値を有するク
ロックサイクルが、そのアドレス値によりアクセスされ
る2演算命令が命令デコードステージD/A で処理される
サイクルの次サイクルであることを示す。
ッチステージIF、命令デコードステージD/A はそれぞれ
クロックt1、t2で並列に処理される。サブ命令I0
2の命令実行ステージE/M及びライトバックステージWは
それぞれクロックt3、t4で処理される一方、サブ命
令I01の命令実行ステージE/M は許可されるまで実行
条件の判断、およびそれに基づく分岐の実行はなされな
い。
件指定フィールド401とCDフィールド404とに従
って、命令デコードユニット2はサブ命令I01が実行
条件の判断を遅延させる命令であることを検出し、この
条件指定フィールドとCDフィールドの内容が実行条件
を遅延して判断するための制御信号としてPC制御部1
3へ出力される。また演算指定フィールドがデコーダ8
でデコードされて、このデコード結果に応じた制御信号
11が出力される。この制御信号11には、分岐命令B
RAを生じさせるようにPC制御部13を制御するため
の第1の情報、サブ命令I01が実行の遅延を生じさせ
ない通常の命令であることを示す第2の情報、さらに分
岐命令BRAの分岐先アドレスを示す第3の情報を含ん
でいる。この第3の情報は分岐先アドレスそのものであ
り、分岐命令BRAのフィールド323で指定されたオ
フセットに基づき命令デコードステージE/A でアドレス
計算専用の加算器(図示していない)で計算されたもの
である。
は、命令デコードユニット2からサブ命令I01が条件
付きの命令であり、その条件を判断する時期を遅延させ
る命令であることの情報を受けて分岐命令BRAに対す
る制御信号11をレジスタ30にそのまま保持する。ま
だ制御信号11に基づいて分岐は実行されない。命令デ
コードユニット2から出力された実行条件フィールドで
あるcc=010の値がレジスタ31にそのまま保持さ
れる。さらにPC制御部13は、クロックt3において
命令デコードユニット2からCDフィールドであるオフ
セット値“20”を、PCから1000番地をそれぞれ
受け取って加算し、レジスタ32がその加算結果である
1020番地を保持する。PC制御部13はレジスタ3
2に保持された値とPCの示す値とを比較している。P
Cのアドレス値がレジスタ32のアドレス値と等しいク
ロックサイクル、つまりクロックt7でレジスタ31に
保持されたcc値に基づきPC制御部13が分岐命令B
RAの実行条件を初めて判断する。
ユニット2のデコーダ9が演算指定フィールド107を
解析して、ALU18に算術演算を行わせるための制御
信号12が出力される。そして命令デコードユニット2
はこのサブ命令I01が条件指定フィールドに基づきサ
ブ命令I02が無条件命令であることを検知し無条件
(cc=000)であることを示す情報も出力する。A
LU18は無条件であることを示す情報を受けて、制御
信号12をレジスタ80に保持することなく制御信号1
2に従って加算演算を行う。また命令デコードユニット
2からサブ命令I01における実行条件フィールド40
2の値及びCDフィールド405の値が出力されるが、
ALU18はこれらの値を無視してレジスタ81、82
にはそれまで保持していた値をそのまま保持させる。以
下に示す他の無条件実行のサブ命令についても同様であ
る。
ッチステージIF、命令デコードステージD/A、命令実行
ステージE/M及びライトバックステージW は、それぞれ
クロックt2、t3、t4、t5で並列に処理される。
ッチステージIF、命令デコードステージD/A、命令実行
ステージE/M及びライトバックステージW は、それぞれ
クロックt3、t4、t5、t6で並列に処理される。
サブ命令I21である加算命令ADDにおいては、クロ
ックt5のステージE/M でレジスタR5とレジスタR6
との内容がALU15により加算演算され、クロックt
6のステージW でその加算結果がレジスタR5に書き込
まれる。
ッチステージIF、命令デコードステージD/A、命令実行
ステージE/Mは、それぞれクロックt4、t5、t6で
並列に処理される。サブ命令I31である比較命令CM
PEQにおいては、クロックt6のステージE/M で、レ
ジスタR2とレジスタR4との内容がALU15により
比較され、等しければフラグF0に‘1’を書き込み、
等しくなければフラグF0に‘0’を書き込む。比較命
令CMPEQの実行ステージE/M は、本来加算命令AD
Dによる演算結果がレジスタr5に書き込まれるクロッ
クt6まで開始できないが、プロセッサ1内部に設けら
れたバイパス回路によってクロックt5で得られる加算
命令ADDの演算結果を用いて処理される。なお、比較
命令CMPEQの場合、ライトバックステージWは存在
しない。一方サブ命令I32のライトバックステージW
はクロックt7で処理される。
ッチステージIF、命令デコードステージD/A、命令実行
ステージE/M及びライトバックステージW は、それぞれ
クロックt5、t6、t7、t8で並列に処理される。
31の演算結果を参照しなければならないためクロック
t7で判定される。クロックt7において、PC制御部
13はレジスタ31に保持された‘010’の値に従っ
てフラグF0を参照し、フラグF0が‘0’ならば分岐
を発生させることを決定し、‘1’ならば分岐を発生さ
せないことを決定する。
ている制御信号11の第2の情報が分岐命令BRAがデ
ィレイなしの分岐命令であることを示していることに従
い、レジスタ33の内容を無視する。つまり、PC制御
13において、分岐条件が決定されたことに従い、同じ
クロックt7で命令実行ステージE/M が処理される。命
令I41は算術演算命令であり、PC制御部13ではな
くALU15で命令実行ステージE/Mの処理がなされて
いるので、サブ命令I01、I41のステージE/Mは並
列に行える。
作において、比較命令CMPEQでフラグF0に‘0’
が書き込まれとすると、PC制御部13が実行条件を満
たしたことを示す情報(例えば‘1’の論理値)を生成
することにより条件判断が完了され、その情報に応答し
てレジスタ30に保持された制御信号11に基づき分岐
が実行される。具体的には、制御信号11の第3の情報
に従いPC制御部13は分岐先アドレス(この場合10
08番地)をIAバスを介して命令RAM6へ出力する
とともに、その分岐先アドレスを次クロックサイクルで
PCへセットする。さらに制御信号11の第1の情報に
従い、PC制御部13は分岐先アドレス1008に格納
されている2演算命令(サブ命令I11、I21)を命
令デコードユニット2へ与えるように命令RAM6を制
御する。PC制御部13はこの第1の情報に従い、クロ
ックt7ですでにステージIF、E/A が処理されているサ
ブ命令I51、I52、及びすでにステージIFの処理が
されているサブ命令I61、I62のパイプラインの処
理をキャンセルするように命令デコードユニット2、メ
モリユニット3および整数演算ユニット4を制御する。
但し、クロックt7でステージE/M の処理がなされたサ
ブ命令I41、I42のライトバックステージWは、キ
ャンセルされずに処理される。
から出力された1008番地にあるサブ命令I11、I
12の2演算命令を受け取り、クロックt8で命令フェ
ッチステージIFが処理されたことになる。サブ命令I1
1、I12の命令デコードステージD/A、命令実行ステ
ージE/M、ライトバックステージW がそれぞれクロック
t9、t10、t11で処理される。PCは、1008
番地の2演算命令における命令実行ステージE/M が処理
されるクロックt10まで1008番地をそのまま保持
し、クロックt10以降8ずつカウントする。
き、1010番地、1018番地、1020番地のそれ
ぞれ2演算命令は1クロックずつ遅れて順にパイプライ
ンにて処理される。そしてPC制御部13のレジスタ3
0、31、32は、クロックt3で保持した値をそのま
ま保持しているので、PCが1020番地を保持するク
ロックt13において、レジスタ30、31、32の内
容に基づき、PC制御13がフラグF0を参照して「フ
ラグF0の値が‘0’である」という同じ実行条件を再
び判断して分岐命令BRAの分岐を実行する。図示して
いないが実行条件は、クロックt12において得られる
サブ命令I31の実行結果であるフラグF0の更新で決
定される。
実行条件を満たされていないと判断された場合には、P
C制御部13において実行条件を満たしていないことを
示す情報(例えば、‘0’の論理値)が生成され、その
情報に応答してレジスタ30に保持された制御信号11
を参照することなく分岐は実行されない。サブ命令I5
1、I52の2演算命令、サブ命令I61、I62の2
演算命令のそれぞれパイプラインステージの処理がキャ
ンセルされることなく引き続き行われる。また、レジス
タ30、31、32に保持されている内容は、次の条件
付き分岐命令により更新されるまでそのまま残しておい
てもよいし、すべてリセットしてもよい。
ルド404のオフセット値がゼロであれば、PC値が分
岐命令自身のアドレスである1000番地を示すクロッ
クt3で実行条件が判断され、分岐が実行される。
クロプロセッサ1の別の動作を説明する。図8と同じ
く、各行における2つのサブ命令が、図2(a)の命令
フォーマットの2演算命令101で記述され、サブ命令
I01、I11、I21、I31、I41、I51及び
I61がoperation_0 として演算フィールド106で記
述され、サブ命令I02、I12、I22、I32、I
41、I51及びI61がoperation_1として演算フィ
ールド107で記述されている。
(‘1’を保持している)」という実行条件を満たして
いれば、レジスタR5に保持されているアドレス番地の
命令にジャンプするジャンプ命令DJMPであり、ジャ
ンプ命令DJMPは、図7に示されたフォーマットのデ
ィレイドジャンプ命令である。サブ命令I11は、レジ
スタR1とレジスタr2との内容を加算して加算結果を
レジスタR1へ書き込む加算命令ADDである。サブ命
令I21は、レジスタR1とレジスタR3との内容を比
較し、等しければフラグF0に‘1’を書き込み、等し
くなければフラグF0に‘0’を書き込む比較命令CM
PEQである。サブ命令I31は、レジスタR5とレジ
スタR6との内容を加算して加算結果をレジスタR5に
書き込む加算命令ADDである。サブ命令I11、I4
1、I51、I61は、メモリユニット2でステージE/
M の処理がなされる任意の算術演算命令で、その他のサ
ブ命令は整数演算ユニット3でステージE/M の処理がな
される任意の算術演算命令である。
ルド401には、“CC=001”が記述されており、
サブ命令I01以外のすべてのサブ命令は無条件に実行
する命令であるとする。また、サブ命令I01に対応す
るCDフィールド404にはオフセット値“20”が記
述されている。さらに、サブ命令I01の実行遅延量指
定フィールド322(図7)には即値としてオフセット
値‘28’が記述されている。また、各行に記述された
2演算命令は、FMフィールド103、104が00に
設定されて2つのサブ命令の演算を並列に実行する命令
であるとする。
01のジャンプ命令DJMPによるジャンプは、サブ命
令I21の比較結果であるフラグF0の値を判断して実
行され、且つそのジャンプ先命令のアドレスはサブ命令
I31の加算結果で決定される。そして、ジャンプ命令
DJMPによりジャンプするしないに拘わらず1020
番地、1028番地の2演算命令は実行されるものであ
る。
イプライン処理するマイクロプロセッサ1の動作を示し
ている。図9と同じく、クロックt1ないしt13は連
続する1クロックサイクルを示し、各クロックサイクル
内のすべてのパイプラインステージの処理は並列に行わ
れる。PCの値の意味も図9と同じである。
ッチステージIF、命令デコードステージD/A はそれぞれ
クロックt1、t2で並列に処理される。サブ命令I0
2の命令実行ステージE/M及びライトバックステージWは
それぞれクロックt3、t4で処理される一方、サブ命
令I01の命令実行ステージE/M は許可されるまで実行
条件の判断、およびそれに基づく分岐の実行はなされな
い。
命令DJMPは図1におけるデコーダ8でデコードされ
て、このデコード結果に応じた制御信号11が出力され
る。この制御信号11には、ジャンプ命令BRAを生じ
させるようにPC制御部13を制御するための第1の情
報、サブ命令I01が実行の遅延を生じさせる命令であ
ることを示す第2の情報、さらに分岐命令BRAの分岐
先アドレスを示す第3の情報を含んでいる。第3の情報
はジャンプ命令DJMPで指定されているレジスタ番号
である。
ジャンプ命令DJMPに対する制御信号11をレジスタ
30にそのまま保持し、その制御信号11に基づき分岐
を実行しない。命令デコードユニット2から出力された
ジャンプ命令BRAの実行条件フィールドであるcc=
001の値がレジスタ31にそのまま保持される。さら
にPC制御部13は、クロックt3において命令デコー
ドユニット2からジャンプ命令DJMPの実行遅延量指
定フィールド322のオフセット値“28”を、PCか
ら1000番地をそれぞれ受け取って加算し、レジスタ
32がその加算結果である1018番地を保持する。P
C制御部13はレジスタ32に保持された値とPCの示
す値とを比較している。PCのアドレス値がレジスタ3
2のアドレス値と等しいクロックサイクル、つまりクロ
ックt6でレジスタ31に保持されたcc値に基づきP
C制御部13が分岐命令BRAの実行条件を初めて判断
する。
おいて命令デコードユニット2からジャンプ命令BRA
のCDフィールドであるオフセット値“18”を、PC
から1000番地をそれぞれ受け取って加算し、レジス
タ33がその加算結果である1028番地を保持する。
PC制御部13はレジスタ33に保持された値とPCの
示す値とを比較している。PCのアドレス値がレジスタ
33のアドレス値と等しいクロックサイクル、つまりク
ロックt8でジャンプ命令DJMPによるジャンプが初
めて実行される。
ッチステージIF、命令デコードステージD/A、命令実行
ステージE/M及びライトバックステージW は、それぞれ
クロックt2、t3、t4、t5で並列に処理される。
サブ命令I11の加算命令ADDにあっては、ステージ
E/M でレジスタR1とレジスタR2との内容がALU1
5により加算され、ステージW でその加算結果がレジス
タR1に書き込まれる。
ッチステージIF、命令デコードステージD/A、命令実行
ステージE/Mは、それぞれクロックt3、t4、t5で
並列に処理される。サブ命令I21である比較命令CM
PEQにおいては、クロックt5の実行ステージE/M
で、レジスタR1とレジスタR3との内容がALU15
により比較され、等しければフラグF0に‘1’を書き
込み、等しくなければフラグF0に‘0’を書き込む。
なお、比較命令CMPEQの場合、ライトバックステー
ジWは存在しない。一方サブ命令I32のライトバック
ステージWはクロックt7で処理される。
令I21の演算結果であるフラグF0を参照しなければ
ならないためクロックt6で判定される。クロックt6
において、PC制御部13はレジスタ31に保持された
‘001’の値に従ってフラグF0を参照し、フラグF
0が‘1’ならば分岐を発生させることを決定し、’
0’ならば分岐を発生させないことを決定する。そして
クロックt6で記憶回路34に分岐を発生させるか否か
を決定した1ビットの情報をセットする。しかし実際に
ジャンプ命令によるジャンプはクロックt8になるまで
実行されない。
F0に‘1’が書き込まれ、実行条件が満たされた場合
を考える。記憶回路34には実行条件が満たされたとい
う情報である‘1’がセットされる。レジスタ30に保
持されている制御信号11のジャンプ命令DJMPがデ
ィレイのあるジャンプ命令であることを示している第2
の情報に従い、PC制御部13はレジスタ33に保持さ
れているアドレス値がまだPCの値と一致しているかど
うかをチェックする。実行条件を満たしていると決定し
たとしてもクロックt6の段階ではまだ一致していない
ため、レジスタ30に保持されている制御信号11の第
1および第3の情報に従ってPC制御13は分岐を実行
しない。
ッチステージIF、命令デコードステージD/A、命令実行
ステージE/M及びライトバックステージW は、それぞれ
クロックt4、t5、t6、t7で並列に処理される。
サブ命令I31の加算命令ADDにあっては、ステージ
E/M でレジスタR5とレジスタR6との内容がALU1
5により加算され、ステージW でその加算結果がレジス
タR5に書き込まれる。
ッチステージIF、命令デコードステージD/A、命令実行
ステージE/M及びライトバックステージW は、それぞれ
クロックt5、t6、t7、t8で並列に処理される。
また、サブ命令I51、I52に関し、命令フェッチス
テージIF、命令デコードステージD/A 、命令実行ステー
ジE/M及びライトバックステージWは、それぞれクロック
t6、t7、t8、t9で並列に処理される。
ブ命令I31の演算結果であるレジスタR5を参照しな
ければならないためクロックt8で実行される。クロッ
クt8においてPC制御部13はレジスタ33に保持さ
れているアドレス値がPCの値と一致していることを検
知する。そして記憶回路34に‘1’が保持されている
ことに従って、PC制御部13はクロックt8でジャン
プ命令DJMPの命令実行ステージE/M を処理する。P
C制御部13はレジスタ30に保持された制御信号11
に基づいて分岐を発生させる。命令I51は算術演算命
令であり、PC制御部13ではなくALU15で命令実
行ステージE/M の処理がなされているので、サブ命令I
01、I51のステージE/Mは並列に行える。
従い、PC制御部13は第3の情報で指定されているレ
ジスタに保持されている分岐先アドレス(例えば200
0番地とする)をIAバスを介して命令RAM6へ出力
するとともに、その分岐先アドレスを次クロックサイク
ルでPCへセットする。さらに制御信号11の第1の情
報に従い、PC制御部13は分岐先アドレス2000に
格納されている2演算命令(サブ命令I11、I21)
を命令デコードユニット2へ与えるように命令RAM6
を制御する。さらに、PC制御部13はこの第1の情報
に従いクロックt8ですでにステージIF、E/A が処理さ
れているサブ命令I61、I62、及びすでにステージ
IFの処理がされているサブ命令I71、I72のパイプ
ラインの処理をキャンセルするように命令デコードユニ
ット2、メモリユニット3および整数演算ユニット4を
制御する。但し、クロックt8でステージE/M の処理が
なされたサブ命令I51、I52のライトバックステー
ジWは、キャンセルされずに処理される。
から出力された2000番地にある2演算命令を受け取
り、クロックt9でその2演算命令のそれぞれ命令フェ
ッチステージIFが処理され、1クロックサイクル毎にス
テージD/A、E/M、W が順に処理される。
条件が満たされていない場合は、クロックt6で記憶回
路34にジャンプ命令の実行条件が満たされていないと
いう情報である‘0’が保持される。そして、クロック
t8でレジスタ33に保持されたアドレス値がPCの値
と等しくなったとしても、記憶回路34に‘0’が保持
されていることに従い、PC制御部13はレジスタ30
の保持された制御信号11を参照することなく分岐を生
じさせない。サブ命令I61、I62の2演算命令、サ
ブ命令I71、I72の2演算命令のそれぞれパイプラ
インステージの処理がキャンセルされることなく引き続
き行われる。また、レジスタ30、31、32、33及
び記憶回路34に保持されている内容は、次の条件付き
分岐命令により更新されるまでそのまま残してもよい
し、すべてリセットしてもよい。
を判断し、条件を満たしていないことを示す情報に従
い、レジスタ30に保持された制御信号11を、ジャン
プを無効にする、つまりジャンプを実行しないようにP
C制御13が制御される制御信号に書き換えるようにし
てもよい。そして、条件を満たしているを示す情報が生
成されれば、レジスタ30の制御信号11はそのまま保
持されるようにする。そうすると、クロックt8で実際
にジャンプを実行する際に参照する記憶回路34を設け
なくてよい。
(あるいはディレイド分岐命令DBRA)は実行遅延量
指定フィールド322の値を変えて、実行条件を判断す
るクロックサイクルと同じサイクルで分岐を実行させる
こともできる。
させるのは、条件付きの分岐あるいはジャンプ命令に限
るものではない。CDフォーマット404〜406によ
り、2演算命令101の2つの任意のサブ命令、及び任
意の1演算命令102の実行処理において、条件指定フ
ィールド401〜403で指定された実行条件の判断す
る時期を遅延させることができる。それは、PC制御部
13のレジスタ30〜32と同じ構成、機能を有するそ
れぞれメモリ制御部14のレジスタ40〜42、ALU
15のレジスタ50〜52、シフタ16のレジスタ60
〜62、乗算器17のレジスタ70〜72、ALU19
のレジスタ80〜82、及びシフタ20のレジスタ90
〜92により実現される。
命令I12が I12 (ADD F1T R13 R8,R8,R9)・・・・(A) であるとする。つまり「フラグF1が真である」という
実行条件を満たすときレジスタR8とレジスタR9との
内容を加算し、その加算結果をレジスタR8に書き込む
加算命令で、実行条件の判断は、PC値がレジスタR1
3に保持されたアドレス値となるクロックサイクルで行
われる。条件指定フィールド402はcc=011、C
Dフィールド405はレジスタ番号‘13’がそれぞれ
記述されている。レジスタ13には1018番地が保持
されているものとする。
ステージE/M はクロックt4で処理されているが、サブ
命令I12が上記(A)のような加算命令であれば、命
令実行ステージE/Mはクロックt6される。
ダ9でデコードされ、このデコード結果に応じた制御信
号12が出力される。この制御信号12には、加算命令
を生じさせるようにALU19を制御するための第1の
情報、演算に使用されるレジスタR8、R9を指定する
第2の情報を含んでいる。
制御信号12をレジスタ80にそのまま保持するだけ
で、まだ加算を実行しない。命令デコードユニット2か
ら出力された実行条件フィールドであるcc=011の
値がレジスタ81にそのまま保持される。さらにALU
19は、クロックt4において命令デコードユニット2
からCDフィールドであるレジスタ番号‘13’をその
まま保持する。ALU19はレジスタ82に保持された
番号‘13’のレジスタに保持さされた値とPCの示す
値とを比較している。PCのアドレス値が1018番地
と等しいクロックサイクル、つまりクロックt6でレジ
スタ81に保持されたcc値に基づきALU19が加算
命令の実行条件を初めて判断する。ALU19は実行条
件を満たしたかどうか示す情報を生成する。
満たしていればレジスタ80に保持された制御信号12
に基づいて同じクロックt6で加算演算を行い、クロッ
クt7で加算結果を指定された汎用レジスタ5に保持さ
せる。また条件を満たしていなければ、制御信号12を
無視して加算演算を行わない。また、条件を満たしてい
ない場合の別の手段として、ALU19が制御信号12
に基づき加算演算を行ってもよいが、実行条件を満たし
たかどうか示す情報に従い加算結果を加算演算命令で指
定されたレジスタへ書き込まないようにALU19を構
成してもよい。
F1の値を決定する演算命令(2つの値を比較して、等
不等あるいは大小をフラグF1に反映させる比較命令)
は、プログラムシーケンス中のサブ命令I12より下位
のアドレスにある命令、例えば、サブ命令I22の位置
に置くことができる。
406の各々において、オフセット値の情報又はレジス
タを指定する情報以外に、各実行条件指定フィールドで
指定された実行条件が、各演算フィールドに記述された
演算命令の命令デコードステージD/Aで判断されること
を示す情報を記述することができる。
岐命令BRAに対応するCDフィールド404が命令デ
コードステージD/A で判断されることを示す情報を有し
ている場合、命令デコードユニット2は、クロックt2
において、CDフィールド404に応答して実行条件の
判断を開始し、条件指定フィールド401に従いPSW
10内の指定されたフラグF0の内容を参照する。そし
て命令デコードユニット2はサブ命令I01が実行条件
が満たされたか否かを示す第4の情報を出力する。また
命令デコードユニット2はデコード8による分岐命令B
RAの演算指定フィールドのデコード結果に基づき制御
信号11を作成する。この制御信号11には分岐命令B
RAを生じさせるようにPC制御部13を制御するため
の第1の情報、分岐実行の遅延を生じさせない通常の命
令であることを示す第2の情報、さらに分岐命令BRA
の分岐先アドレスを示す第3の情報を含んでいる。
には、命令デコードユニット2は第4の情報として実行
条件が満たさている情報、つまり、PC制御部13で無
条件で実行してよいことを示す情報を出力する。PC制
御部13は無条件であることを示す情報を受けて、制御
信号11をレジスタ30に保持することなくクロックt
3で制御信号11に従って分岐を行う。実行条件が満た
されていないと判断された場合には、命令デコードユニ
ット2が第4の情報として、演算が無効であることを示
す情報を出力する。PC制御部13は、演算が無効であ
ることを示す情報に従い制御信号11を受けていても分
岐を実行しない。分岐命令以外の他の種類の演算命令に
ついても全く同様である。ただし、加算などの算術演算
命令では、命令デコードステージD/A で演算が無効と判
断された場合には、演算ユニットが算術演算を実行して
も演算命令で指定されたレジスタに演算結果を書き込ま
ないようにしてもよい。
ッサ1に、ディレイ機能を有する分岐命令DBRAやジ
ャンプ命令DJMPの命令が用意されないならば、PC
制御部13にレジスタ33及び記憶回路34を設ける必
要はない。
トとなるPC制御部13、メモリ制御部14、ALU1
5、19、シフタ16、20、及び乗算器17の各々に
実行条件を判断する時期を遅延させる手段であるレジス
タを備えたが、これらの命令実行部の演算ユニットのう
ちの選択された一部にだけ備えても良い。例えば、所定
の条件の下で実行されるような演算命令のうち、ユーザ
の作成するプログラムで最もよく使用されるのは、条件
付き分岐(あるいはジャンプ)命令である。従って、分
岐命令のみの処理において、実行条件を判断する時期を
遅延させる機能を持たせても良い。そうすると、PC制
御部13のみにレジスタ30、31、32を備えればよ
い。
徴がある。 (1)例えば、図8のサブ命令I31ような無条件実行
の演算命令、あるいは条件ありでもそのデコードステー
ジで条件が決定している演算命令であれば、クロックt
5の期間で命令をデコードし、クロックt5の期間に続
くクロックy6の期間で上記の条件付き演算命令の遅延
量以内であるクロックt6の期間でサブ命令I31で指
定された演算が実行されている。一方、サブ命令I01
のような条件付き演算命令はクロックt2の期間でデコ
ードされ、クロックt2からサブ命令I31のように命
令実行ステージE/M の処理期間であるクロックt6の時
間より少なくとも長い期間が経過した後のクロックt7
で分岐の演算の実行条件の判断を開始している。つま
り、このクロックt3からクロックt6までの期間を遅
延量として実行条件を判断する時期を遅延させている。
従って、図8のプログラムシーケンスのように、条件付
きの演算命令はその演算命令の実行条件を決める演算を
行う演算命令(サブ命令I31)より前に置くことがで
きる。従来のプロセッサならば、サブ命令I01の位置
にNOP命令以外置くことができない可能性があるが、
本実施の形態のプロセッサを採用すれば、サブ命令I0
1として条件付きの演算命令を置くことができ、命令の
スケジューリングを柔軟にする。
2、42等で保持される演算の実行条件を判断する時期
を示す遅延量を可変に設定することができる。これによ
り、例えばサブ命令I01において実行条件は、クロッ
クt4をはじめ、種々のクロックサイクルで判断される
ようになる。よって、命令をスケジューリングする際、
プログラムの内容に応じて条件付き演算命令の位置を適
宜変えることができる。特に、レジスタ32、43等に
保持される値は、プログラムを構成する命令フォーマッ
トのCDフィールド403、404。405に記述され
た内容に従い設定されるため、プログラマー(あるいは
コンパイラ)は、その条件付き演算命令に対応させてど
の程度の遅延量を要するのかを容易に決めることができ
る。
遅延量としての情報は、種々の形式が考えられる。遅延
量としてクロック数を保持しておいてもよい。そのとき
レジスタ32、42等を減算カウンタとして構成する。
例えばPC制御部13において、クロックt3でクロッ
ク数「4」をレジスタ32に保持し、カウンタによりク
ロック数とともに減算し、「0」を保持したクロックt
7で条件の判断を開始するようにすればよい。しかし、
この実施の形態では、演算の実行条件を判断する時期を
示す遅延量としてアドレス値が保持され、そのアドレス
値プログラムカウンタの値と等しいクロックサイクルで
実行条件を判断するようにしている。つまり、遅延量を
PCの値で管理しているためより効果的である。例えば
図8のプログラムにおいて1008番地と1020番地
との間で他の命令にジャンプし、復帰する場合でもレジ
スタ値32、42等の値を変更して実行判断する時期を
調整する必要がなく制御が簡単になる。上記のクロック
数を保持したならば他の命令にジャンプする時点の減算
値を退避させるなどの措置を要する。
はジャンプ命令であれば、図11のようにクロックt6
で分岐の条件を判断し、1クロックサイクルあるいはそ
れ以上のクロックサイクルを経過した後に開始するクロ
ックt8で分岐を実行している。もし、サブ命令I4
1、I42がクロックt7でジャンプ命令DJMPの実
行条件を決定するフラグF0を書き換える命令であるな
らば、サブ命令I01として実行条件の判断と同じクロ
ックサイクルでジャンプを実行してしまうディレイなし
のジャンプ命令が用いることができる。よって、本実施
の形態のような条件付きのディレイド演算命令は、プロ
グラムにおける命令スケジューリングをさらに柔軟にす
るものである。
13は第1の演算命令の演算を実行するようにPC制御
部13を制御するための制御信号11、第1の演算命令
の実行条件を示す第1の情報である条件指定フィールド
の値、さらに、この実行条件を判断する時期を示す第2
の情報であるアドレス値(あるいはそのアドレス値を保
持するレジスタを指定する情報)をそれぞれレジスタ3
0、31、32に保持する。そして、これらレジスタの
値は、第1の演算命令の後に命令デコーダ2でデコード
される第2の条件付き演算命令において、条件判断の時
期を遅延させるために書き換えるまでそのまま保持し続
ける。これは、図8のプログラムで条件付き演算命令に
より形成されるループ処理に効果的である。最初にレジ
スタ30、31、32に各情報を一旦保持させておけ
ば、ループが発生する毎にそのレジスタ30、31、3
2に保持された情報を用いるだけで、条件付き演算命令
が実行される。従来技術ならば、ループが生じる毎に条
件付き演算命令を命令RAMからフェッチしてデコーダ
でデコードしなければならないが、本実施の形態による
とサブ命令I01の演算命令を1回だけフェッチし、デ
コーダすればよい。従ってマイクロプロセッサの処理効
率を挙げることができる。
ッサが処理するすべての命令は図2のフォーマットであ
り、そこには演算を指定するフィールドに対応して条件
指定フィールドが設けられ、さらにこの条件指定フィー
ルドに対応して条件判断遅延量指定フィールドが設けら
れている。条件指定フィールドは無条件で実行されるこ
とを指定することもできる。つまり、命令フォーマット
中に条件付きか否かを示す情報、条件付きであればどの
ような条件か、その条件を判断する時期を示す情報を挿
入する場所が確保されているので、プログラマー(ある
いはコンパイラ)は容易に命令を構成することができ
る。
いて、条件を判断する時期として命令デコーユニット2
により命令のデコード段階で判断することを指定するこ
ともできる。命令の条件を満たせば命令実行部はその命
令を無条件に実行される命令であるとして演算を行う。
これも命令のスケジューリングに融通性を与える。
件付き演算命令の処理で条件を決定する際に参照された
値はフラグF0であったが、これに限らず複数のビット
を保持するレジスタの値であってもよい。この実施例の
マイクロプロセッサはVLIWアーキテクチャを採用し
て複数のパイプラインを並列に処理するものであるが、
この条件付き演算命令で条件判断の時期を遅延させる機
能は、単一のパイプラインを処理するプロセッサに設け
ても有効である。
ある3つのレジスタを1セットにして各演算ユニットに
設けているが、さらに各演算ユニットにこれら3つのレ
ジスタと同じ機能をもつ3つのレジスタのセットを1又
は複数個設けてもよい。これは、図8のプログラムで形
成されたループの中に、さらに1又は複数のループが存
在している場合に効果的である
が偽ならば108番地に分岐する分岐命令で、実行条件
が130番地の命令I61の命令実行ステージのサイク
ルで判断されて分岐が実行されるものである。命令I2
1は、フラグF1が真ならば118番地に分岐する分岐
命令で、実行条件が120番地の命令I41の命令実行
ステージで判断されて分岐が実行される物である。この
プログラムは、110番地から130番地で第1のルー
プが形成され、かつ118番地から120番地で第2の
ループが形成されている。
御部13のレジスタ30〜32に命令I01の分岐命令
に対する制御信号11、条件を指定する情報、条件判断
する時期を指定する情報を保持させる。命令I01に次
いで命令I11がデコーダされた場合、PC制御部13
にさらに備えられた3つのレジスタに、命令I11の分
岐命令に対する制御信号11、条件を指定する情報、条
件判断する時期を指定する情報を保持させる。これによ
り、第1、第2のループが発生する毎にレジスタ30、
31、32に保持された情報、同じ機能の3つのレジス
タに保持された情報をそれぞれ参照するだけで適切に2
つの条件付き演算命令が実行される。命令I01、I0
2をそれぞれループが発生する毎にフェッチし、デコー
ドする必要はなくプロセッサの処理性能を挙げることが
できる。
のマイクロプロセッサの構成を示したものである。この
マイクロプロセッサは、メモリ制御部14にレジスタ4
3、記憶回路44を設け、ALU15にレジスタ53、
記憶回路54を設け、シフタ16にレジスタ63、記憶
回路64を設け、乗算機17にレジスタ73、記憶回路
74を設け、ALU19にレジスタ83、記憶回路84
を設け、シフタ20にレジスタ93、記憶回路94を設
けている。その他の構成は、図1のものと同じである。
ィレイ機能を有する演算命令、つまり条件判断するクロ
ックサイクルよりさらに後のクロックサイクルで演算を
実行する演算命令は、分岐・ジャンプ命令のみであった
が、ロードストア命令、算術演算演算、シフト算術演算
命令等、任意の演算命令に対してディレイ機能を付加す
ることはできる。各演算ユニットにさらに加えられた6
つのレジスタは、PC制御部13のレジスタ33と全く
同じ機能を有し、各演算ユニットで実行されるべき演算
を実行する時期を示す情報を保持する。また各演算ユニ
ットにさらに加えられた6つの記憶回路は、PC制御部
13の記憶回路34と全く同じ機能で、各演算ユニット
で実行されるべき演算の実行条件の判断結果の情報を保
持する。
は、例えば、 DADD F0T #H20, H30 R5,R5,R6 という命令を用意することができる。この命令は、「フ
ラグF0が真」を条件にしてレジスタR5、R6のそれ
ぞれ内容を加算して、その加算結果をレジスタR5に書
き込む加算命令である。この加算命令は、即値として2
つのオフセット値‘20’‘30’を有する。加算命令
DADDのアドレスが2000番地であれば、2000
+20=2020番地の演算命令の命令実行ステージE/
M が処理されるクロックサイクルで加算命令DADDの
条件が判断される。そして2000+30=2030番
地の演算命令の実行ステージE/M が処理されるクロック
サイクルで加算演算を実行する。この加算命令DADD
が図2のoperation_0 であれば、ALU15で条件が判
断されて加算が行われ、operation_1 であれば、ALU
19で条件が判断されて加算が行われる。
タ、記憶回路を付加したが、無論複数の演算ユニットの
選択されたものにのみに備えてもよい。その場合にはそ
のレジスタ、記憶回路が付加された演算ユニットが処理
できる演算命令のみにディレイ機能が付加されることに
なる。
ータ処理装置によると、第1の演算命令は第1の期間で
デコードされ、それに続く第2の期間で実行さる一方、
所定の条件のもので演算が実行される第2の演算命令
は、第3の期間でデコードされ、第3の期間が終了して
少なくとも第2の期間と同じ時間を経過した第4の期間
で条件が判断されて実行される。条件付きの演算命令が
デコードされても、第1の演算命令のように直ちに実行
するのではなくその実行条件を判断する時期を遅延させ
た上で実行するので、その遅延している間に第2の演算
命令の実行条件を決定する演算命令を実行することがで
きる。よってプログラムシーケンスにおいて、第2の演
算命令をその実行条件を決定する別の演算命令より前に
記述することが可能で、命令のスケジューリングの自由
度が増す。
実行される時期を、条件判断が行われる時期よりさらに
遅延させることにより、その遅延の間に、他の演算命令
の処理で第2の演算命令の条件を決定している値が書き
換えられても適切に条件付き演算命令を実行することが
できる。命令のスケジューリングの自由度がさらに増
す。
付き演算命令を処理する際に使用される第1ないし第3
のレジスタを命令実行部に備えている。第1のレジスタ
は命令デコーダから出力される制御信号を保持し、条件
付き演算命令に指定される演算が実行される条件を示す
第1の情報を保持し、第3のレジスタはその条件の判断
を開始する時期を示す第2の情報を保持するものであ
る。命令実行部がこれら3つの情報に基づき演算命令が
デコーダされて、所定の時間を経過したのち条件が判断
されて実行されるので、命令のスケジューリングにその
遅延している間に第2の演算命令の実行条件を決定する
演算命令を実行することができる。よって命令のスケジ
ューリングの自由度が増す。
セッサの構成を示すブロック図である。
す説明図である。
イプライン動作を示す説明図である。
ある。
明図である。
を示す説明図である。
グラムの一例を示す説明図である。
プロセッサのパイプライン動作を示す説明図である。
のプログラムの一例を示す説明図である。
ロプロセッサのパイプライン動作を示す説明図である。
ロセッサの構成を示すブロック図である。
整数演算ユニット、5…汎用レジスタ、10…PSW、
13…PC制御部、14…メモリ制御部、15、19…
ALU、16、20…シフタ、17…乗算器、30〜3
3、40〜42、50〜52、60〜62、70〜7
2、80〜82、90〜92…レジスタ、34…記憶回
路
Claims (20)
- 【請求項1】 プログラムシーケンスに記述されたコー
ド化された複数の演算命令を順次デコードして、各演算
命令に対応する制御信号を出力する命令デコーダ、およ
び、 前記命令デコーダから出力される前記制御信号に従っ
て、前記複数の演算命令によりそれぞれ指定された演算
を実行する命令実行部を備え、 第1の期間において、前記命令デコーダが前記複数の演
算命令のうちの第1の演算命令をデコードして第1の制
御信号を出力し、前記第1の期間に続く第2の期間にお
いて、前記命令実行部が前記第1の制御信号に従って前
記第1の演算命令で指定された演算を実行し、 第3の期間において、前記命令デコーダが、前記複数の
演算命令のうちの所定の条件の基で演算が実行される第
2の演算命令をデコードして第2の制御信号を出力し、
前記第3の期間の終わりから前記第2の期間と同じ時
間、あるいはそれより長い時間が経過した後に開始され
る第4の期間において、前記命令実行部が前記所定の条
件を満たしているか否かを判断し、その判断結果に応じ
て前記第2の演算命令で指定された演算を実行する、デ
ータ処理装置。 - 【請求項2】 その保持される値を可変に設定できる遅
延量指定レジスタを備え、 前記命令実行部は、前記遅延量指定レジスタに遅延量と
して保持されている値に応じて第2の演算命令が所定の
条件を満たしているかの判断を開始する、請求項1に記
載のデータ処理装置。 - 【請求項3】 コード化された第2の演算命令は、演算
を指定する演算指定フィールドと、第3の期間の終わり
から第4の期間の開始までの間隔を指定する遅延量指定
フィールドとを有し、 遅延量指定レジスタには、前記遅延量指定フィールドに
記述された内容に従って遅延量が設定される、請求項2
に記載のデータ処理装置。 - 【請求項4】 複数の演算命令の各々に対応付けられた
アドレスを順次カウントして保持するプログラムカウン
タを備え、 前記遅延量指定レジスタは遅延量としてアドレス値を保
持し、 前記命令実行部は、前記遅延量指定レジスタに保持され
たアドレス値が前記プログラムカウンタの値と一致した
ことに応答して、第2の演算命令が所定の条件を満たし
ているかの判断を開始する、請求項2に記載のデータ処
理装置。 - 【請求項5】 命令実行部は、第4の期間に含まれる第
5の期間において、所定の条件を満たしているか否かを
判断し、前記第4の期間に含まれ、且つ前記第5の期間
の終了して第2の期間と同じ時間あるいはそれより長い
時間が経過して開始する第6の期間に前記所定の条件を
満たしたときに第2の演算命令で指定された演算を実行
する、請求項1に記載のデータ処理装置。 - 【請求項6】 各々はその保持される値を可変に設定で
きる第1および第2の遅延量指定レジスタを備え、 前記命令実行部は、前記第1の遅延量指定レジスタに第
1の遅延量として保持されている値に従って第2の演算
命令が所定の条件を満たしているかの判断を開始し、 前記第2の遅延量指定レジスタに第2の遅延量として保
持されている値に従って第2の演算命令所定の条件を満
たしたときに第2の演算命令で指定された演算を開始し
て実行する、請求項5に記載のデータ処理装置。 - 【請求項7】 コード化された第2の演算命令は、演算
を指定する演算指定フィールドと、第3の期間の終わり
から第4の期間の開始までの時間を指定する第1の遅延
量指定フィールドと、第5の期間の終わりから第6の期
間の開始までの時間を指定する第2の遅延量指定フィー
ルドとを有し、 第1の遅延量指定レジスタには、前記第1の遅延量指定
フィールドに記述された内容に従って第1の遅延量が設
定され、第2の遅延量指定レジスタには、前記第2の遅
延量指定フィールドに記述された内容に従って第2の遅
延量が設定される請求項6に記載のデータ処理装置。 - 【請求項8】 複数の演算命令の各々に対応付けられた
アドレスを順次カウントして保持するプログラムカウン
タを備え、 前記第1および第2の遅延量指定レジスタはそれぞれ第
1および第2の遅延量としてアドレス値を保持し、 前記命令実行部は、前記第1の遅延量指定レジスタに保
持されたアドレス値が前記プログラムカウンタの値と一
致したことに応答して、所定の条件が満たされているか
の判断を開始し、前記第2の遅延量指定レジスタに保持
されたアドレス値が前記プログラムカウンタの値と一致
したことに応答して、前記所定の条件を満たした場合に
第2の演算命令で指定された演算を開始し実行する、請
求項6に記載のデータ処理装置。 - 【請求項9】 命令デコーダは、第3の期間より後に開
始される第7の期間において、複数の演算命令のうちの
第3の演算命令をデコードして第3の制御情報を出力
し、命令実行部は、前記第7の期間より後に開始される
第8の期間において、前記第3の制御信号に従って前記
第3の演算命令で指定された演算を実行してその演算結
果を所定の記憶場所に書き込み、 第2の演算命令は、前記第3の演算命令の演算結果が所
定の値を有している場合に実行される演算命令を指定し
ており、 前記命令実行部は、第4の期間の開始が少なくとも前記
第8の期間の後になるように、前記所定の記憶場所を参
照して前記第2の演算命令により指定される演算を実行
すべきか否か決定する、請求項1に記載のデータ処理装
置。 - 【請求項10】 所定の記憶場所はフラグあるいはレジ
スタであり、 第3の演算命令は、2つのレジスタの値を比較して、そ
の比較結果を前記所定の記憶場所に書き込む比較命令で
ある、請求項9に記載のデータ処理装置。 - 【請求項11】 第2の演算命令は、分岐命令、ジャン
プ命令、あるいは加算命令である、請求項1に記載のデ
ータ処理装置。 - 【請求項12】 複数の演算命令の各々は、演算の内容
を指定する演算指定フィールドと、その演算の実行条件
を指定する条件指定フィールドと、その実行条件を判断
するタイミングを遅延させる量を指定する遅延量指定フ
ィールドとを有し、 第1の演算命令は無条件に実行される命令であり、前記
第1の演算命令の条件指定フィールに無条件であること
を示す情報が記述され、 第2の演算命令の条件指定フィールドおよび遅延量指定
フィールドに、それぞれ所定の条件を示す情報および第
3の期間の終わりから第4の期間の開始までの間隔を示
す情報が記述され、 前記命令デコーダは、前記第1の演算命令における演算
指定フィールドに従って第1の制御信号を出力し、前記
第1の演算命令における条件指定フィールドに基づき、
前記命令実行部が第2の期間で前記第1の演算命令で指
定された演算を実行するように前記命令実行部を制御
し、 前記命令デコーダは、前記第2の演算命令における演算
指定フィールドに従って第1の制御信号を出力し、前記
第2の演算命令における遅延量指定フィールドに従って
第4の期間で所定の条件を満たしているかを判断させる
ように前記命令実行部を制御し、前記第2の演算命令に
おける条件指定フィールドに従って所定の条件を満たし
たか否かを決定するように前記命令実行部を制御する、
請求項1に記載のデータ処理装置。 - 【請求項13】 複数の演算命令の各々は、各演算の内
容を指定する演算指定フィールドと、その演算の実行条
件を指定する条件指定フィールドと、その実行条件を判
断するタイミングを遅延させる量を指定する遅延量指定
フィールドとを有し、 第1の演算命令は条件付き命令であり、 前記第1の演算命令においては、前記条件指定フィール
ドおよび遅延量指定フィールドに、それぞれ第2の演算
命令の所定の条件とは別の条件を示す情報、および第1
の期間に前記別の条件を判断することを示す情報が記述
され、 第2の演算命令において、前記条件指定フィールドおよ
び遅延量指定フィールドに、それぞれ所定の条件を示す
情報および第3の期間の終わりから第4の期間の開始ま
での間隔を示す情報が記述されており、 前記命令デコーダは、前記第1の演算命令における演算
指定フィールドに従って第1の制御信号を出力し、前記
第1の演算命令における条件指定フィールドおよび遅延
量指定フィールドに基づき、前記命令実行部が第2の期
間で前記第1の演算命令で指定された演算を実行するよ
うに前記命令実行部を制御し、 前記命令デコーダは、前記第2の演算命令における条件
指定フィールドおよび演算指定フィールドに従って第1
の制御信号を出力し、前記第2の演算命令における遅延
量指定フィールドに従って第4の期間で所定の条件を満
たしているかを判断させるように前記命令実行部を制御
し、前記第2の演算命令における条件指定フィールドに
従って所定の条件を満たしたか否かを決定するように前
記命令実行部を制御する、請求項1に記載のデータ処理
装置。 - 【請求項14】 プログラムシーケンスに記述されたコ
ード化された複数の演算命令を順次デコードして、各演
算命令に対応する制御信号を出力する命令デコーダ、お
よび、 前記命令デコーダから出力される前記制御信号に従っ
て、前記複数の演算命令によりそれぞれ指定された演算
を実行する命令実行部を備え、 前記複数の演算命令のうちの1つが条件付きの演算命令
である場合、 前記命令デコーダは、前記条件付きの演算命令をデコー
ドして第1の制御信号を出力し、 前記命令実行部は、 前記命令デコーダから出力される第1の制御信号を保持
させる第1のレジスタ、前記条件付き演算命令に指定さ
れる演算が実行される条件を示す第1の情報を保持させ
る第2のレジスタ、および、前記条件の判断を開始する
時期を示す第2の情報を保持する第3のレジスタを含
み、 前記命令実行部は、 前記第3のレジスタに保持された第2の情報に基づき、
前記条件の判断が開始される時期であることを検出した
ことに応答して、前記第2のレジスタに保持された第1
の情報に基づき前記条件が満たされているか否かの判断
を開始し、その判断結果に応じて前記第1のレジスタに
保持された第1の制御信号を読み出し、その読み出され
た第1の制御信号に従い前記演算命令に指定された演算
の実行を開始するデータ処理装置。 - 【請求項15】 第3のレジスタに保持される第2の情
報を可変に設定することのできる、請求項14に記載の
データ処理装置。 - 【請求項16】 複数の演算命令の各々に対応付けられ
たアドレスを順次カウントして保持するプログラムカウ
ンタを備え、 前記第3のレジスタには、第2の情報としてアドレス値
が保持され、 前記命令実行部は、前記第3のレジスタに保持されたア
ドレス値が前記プログラムカウンタのアドレスと一致し
たことを検出し、その検出に応答して前記条件が満たさ
れているか否かの判断を開始する、請求項14に記載の
データ処理装置。 - 【請求項17】 コード化された条件付き演算命令は、
演算の内容を指定する演算指定フィールドと、その演算
の実行条件を指定する条件指定フィールドと、その実行
条件を判断する時期を指定する遅延量指定フィールドと
を有し、 前記命令デコーダは、前記演算指定フィールドに記述さ
れた内容に基づいて前記第1の制御信号を生成し、前記
条件指定フィールドに記述された内容を第1の情報とし
て出力するとともに前記遅延量指定フィールドに記述さ
れた内容を出力し、 前記命令デコーダから出力された第1の情報は、前記第
2のレジスタに保持され、 前記命令実行部は、前記命令デコーダから出力される前
記遅延量指定フィールドに従って第2の情報を第3のレ
ジスタに書き込む、請求項15に記載のデータ処理装
置。 - 【請求項18】 命令実行部は、 さらに、演算命令で指定された演算を開始する時期を示
す第3の情報を保持する第4のレジスタを有し、 この第3の情報に従って、前記演算命令で指定された演
算が開始される時期であることを検出し、その検出結果
に応答して条件が満たされているか否かを判断し、その
判断結果に応じて前記演算命令で指定された演算を開始
する、請求項14に記載のデータ処理装置。 - 【請求項19】 複数の演算命令の各々に対応付けられ
たアドレスを順次カウントして保持するプログラムカウ
ンタを備え、 前記第3のレジスタには、第2の情報としてアドレス値
が保持され、 前記第4のレジスタには、第3の情報として前記第2の
情報とは異なるアドレス値が保持され、 前記命令実行部は、前記第3のレジスタに保持されたア
ドレス値が前記プログラムカウンタのアドレスと一致し
たことを検出し、その検出に応答して前記条件が満たさ
れているか否かの判断を開始し、前記第4のレジスタに
保持されたアドレス値が前記プログラムカウンタのアド
レスと一致したことを検出し、その検出に応答して前記
演算命令に指定された演算の実行を開始する、請求項1
8に記載のデータ処理装置。 - 【請求項20】 コード化された条件付き演算命令は、
演算の内容を指定する演算指定フィールドと、その演算
の実行条件を指定する条件指定フィールドと、その実行
条件を判断する時期を指定する第1の遅延量指定フィー
ルドと、その演算実行を開始する時期を指定する第2の
遅延量指定フィールドを有し、 前記命令デコーダは、前記演算指定フィールドに記述さ
れた内容に基づいて前記第1の制御信号を生成し、前記
条件指定フィールドに記述された内容を第1の情報とし
て出力するとともに前記第1および第2の遅延量指定フ
ィールドに記述された内容を出力し、 前記命令実行部は、前記命令デコーダから出力された前
記第1の遅延量指定フィールドに記述された内容に従っ
て第2の情報を第3のレジスタに書き込み、さらに前記
命令デコーダから出力された前記第2の遅延量指定フィ
ールドに記述された内容に従って第3の情報を第4のレ
ジスタに書き込む、請求項18に記載のデータ処理装
置。
Priority Applications (6)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP02715898A JP3881763B2 (ja) | 1998-02-09 | 1998-02-09 | データ処理装置 |
| CN98116941A CN1126030C (zh) | 1998-02-09 | 1998-08-28 | 数据处理装置 |
| US09/146,259 US6865666B2 (en) | 1998-02-09 | 1998-09-03 | Data processing device |
| GB9819363A GB2334118B (en) | 1998-02-09 | 1998-09-04 | Data processing device |
| GB0003270A GB2343973B (en) | 1998-02-09 | 1998-09-04 | Data processing device for scheduling conditional operation instructions in a program sequence |
| DE19843948A DE19843948A1 (de) | 1998-02-09 | 1998-09-24 | Datenverarbeitungsvorrichtung |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP02715898A JP3881763B2 (ja) | 1998-02-09 | 1998-02-09 | データ処理装置 |
Publications (3)
| Publication Number | Publication Date |
|---|---|
| JPH11224194A true JPH11224194A (ja) | 1999-08-17 |
| JPH11224194A5 JPH11224194A5 (ja) | 2005-08-18 |
| JP3881763B2 JP3881763B2 (ja) | 2007-02-14 |
Family
ID=12213260
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP02715898A Expired - Fee Related JP3881763B2 (ja) | 1998-02-09 | 1998-02-09 | データ処理装置 |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US6865666B2 (ja) |
| JP (1) | JP3881763B2 (ja) |
| CN (1) | CN1126030C (ja) |
| DE (1) | DE19843948A1 (ja) |
| GB (1) | GB2334118B (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2011121709A1 (ja) * | 2010-03-29 | 2011-10-06 | 株式会社東芝 | 半導体装置 |
| JP2018503162A (ja) * | 2014-12-17 | 2018-02-01 | インテル・コーポレーション | スピンループジャンプを実行するための装置および方法 |
Families Citing this family (29)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2002008893A1 (en) * | 2000-07-21 | 2002-01-31 | Antevista Gmbh | A microprocessor having an instruction format containing explicit timing information |
| US7937691B2 (en) * | 2003-09-30 | 2011-05-03 | International Business Machines Corporation | Method and apparatus for counting execution of specific instructions and accesses to specific data locations |
| US20050071609A1 (en) * | 2003-09-30 | 2005-03-31 | International Business Machines Corporation | Method and apparatus to autonomically take an exception on specified instructions |
| US7395527B2 (en) | 2003-09-30 | 2008-07-01 | International Business Machines Corporation | Method and apparatus for counting instruction execution and data accesses |
| US7373637B2 (en) | 2003-09-30 | 2008-05-13 | International Business Machines Corporation | Method and apparatus for counting instruction and memory location ranges |
| US8381037B2 (en) * | 2003-10-09 | 2013-02-19 | International Business Machines Corporation | Method and system for autonomic execution path selection in an application |
| US7421681B2 (en) * | 2003-10-09 | 2008-09-02 | International Business Machines Corporation | Method and system for autonomic monitoring of semaphore operation in an application |
| JP2005149297A (ja) * | 2003-11-18 | 2005-06-09 | Renesas Technology Corp | プロセッサおよびそのアセンブラ |
| US7496908B2 (en) | 2004-01-14 | 2009-02-24 | International Business Machines Corporation | Method and apparatus for optimizing code execution using annotated trace information having performance indicator and counter information |
| US7392370B2 (en) | 2004-01-14 | 2008-06-24 | International Business Machines Corporation | Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics |
| US7415705B2 (en) | 2004-01-14 | 2008-08-19 | International Business Machines Corporation | Autonomic method and apparatus for hardware assist for patching code |
| US7526757B2 (en) | 2004-01-14 | 2009-04-28 | International Business Machines Corporation | Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program |
| US7895382B2 (en) * | 2004-01-14 | 2011-02-22 | International Business Machines Corporation | Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs |
| US7987453B2 (en) * | 2004-03-18 | 2011-07-26 | International Business Machines Corporation | Method and apparatus for determining computer program flows autonomically using hardware assisted thread stack tracking and cataloged symbolic data |
| US7421684B2 (en) | 2004-03-22 | 2008-09-02 | International Business Machines Corporation | Method and apparatus for autonomic test case feedback using hardware assistance for data coverage |
| US7328374B2 (en) * | 2004-04-29 | 2008-02-05 | International Business Machines Corporation | Method and apparatus for implementing assertions in hardware |
| US7386690B2 (en) * | 2004-04-29 | 2008-06-10 | International Business Machines Corporation | Method and apparatus for hardware awareness of data types |
| US20050251706A1 (en) * | 2004-04-29 | 2005-11-10 | International Business Machines Corporation | Method and apparatus for data-aware hardware operations |
| US7269718B2 (en) * | 2004-04-29 | 2007-09-11 | International Business Machines Corporation | Method and apparatus for verifying data types to be used for instructions and casting data types if needed |
| US7895473B2 (en) * | 2004-04-29 | 2011-02-22 | International Business Machines Corporation | Method and apparatus for identifying access states for variables |
| US7725694B2 (en) * | 2004-12-21 | 2010-05-25 | Denso Corporation | Processor, microcomputer and method for controlling program of microcomputer |
| CN100377068C (zh) * | 2005-08-29 | 2008-03-26 | 硕颉科技股份有限公司 | 串行式存储器程序控制器 |
| EP2106584A1 (en) * | 2006-12-11 | 2009-10-07 | Nxp B.V. | Pipelined processor and compiler/scheduler for variable number branch delay slots |
| US8381192B1 (en) * | 2007-08-03 | 2013-02-19 | Google Inc. | Software testing using taint analysis and execution path alteration |
| US8275978B1 (en) * | 2008-07-29 | 2012-09-25 | Marvell International Ltd. | Execution of conditional branch instruction specifying branch point operand to be stored in jump stack with branch destination for jumping to upon matching program counter value |
| US9280344B2 (en) * | 2012-09-27 | 2016-03-08 | Texas Instruments Incorporated | Repeated execution of instruction with field indicating trigger event, additional instruction, or trigger signal destination |
| US10180840B2 (en) * | 2015-09-19 | 2019-01-15 | Microsoft Technology Licensing, Llc | Dynamic generation of null instructions |
| US11681531B2 (en) | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
| US10423191B2 (en) * | 2017-01-19 | 2019-09-24 | International Business Machines Corporation | Clock comparator sign control |
Family Cites Families (19)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| SE456051B (sv) | 1980-02-11 | 1988-08-29 | Western Electric Co | Digital processoranordning anordnad for pipeline-databehandlingsoperationer |
| FR2557712B1 (fr) * | 1983-12-30 | 1988-12-09 | Trt Telecom Radio Electr | Processeur pour traiter des donnees en fonction d'instructions provenant d'une memoire-programme |
| US5021945A (en) * | 1985-10-31 | 1991-06-04 | Mcc Development, Ltd. | Parallel processor system for processing natural concurrencies and method therefor |
| US4910664A (en) * | 1987-11-27 | 1990-03-20 | Mitsubishi Denki Kabushiki Kaisha | Data processor with apparatus for reducing loop processing time |
| US5471591A (en) | 1990-06-29 | 1995-11-28 | Digital Equipment Corporation | Combined write-operand queue and read-after-write dependency scoreboard |
| JP2508907B2 (ja) | 1990-09-18 | 1996-06-19 | 日本電気株式会社 | 遅延分岐命令の制御方式 |
| EP0518420A3 (en) | 1991-06-13 | 1994-08-10 | Ibm | Computer system for concurrent processing of multiple out-of-order instructions |
| JP2761688B2 (ja) | 1992-02-07 | 1998-06-04 | 三菱電機株式会社 | データ処理装置 |
| US5404469A (en) * | 1992-02-25 | 1995-04-04 | Industrial Technology Research Institute | Multi-threaded microprocessor architecture utilizing static interleaving |
| US5495598A (en) | 1993-12-23 | 1996-02-27 | Unisys Corporation | Stuck fault detection for branch instruction condition signals |
| JPH07200292A (ja) * | 1993-12-28 | 1995-08-04 | Mitsubishi Electric Corp | パイプライン式プロセッサ |
| US5590352A (en) | 1994-04-26 | 1996-12-31 | Advanced Micro Devices, Inc. | Dependency checking and forwarding of variable width operands |
| JPH08203675A (ja) * | 1995-01-26 | 1996-08-09 | Matsushita Electric Works Ltd | 調光データ通信方法およびその調光装置 |
| JP2931890B2 (ja) * | 1995-07-12 | 1999-08-09 | 三菱電機株式会社 | データ処理装置 |
| US5752015A (en) * | 1996-03-29 | 1998-05-12 | Integrated Device Technology, Inc. | Method and apparatus for repetitive execution of string instructions without branch or loop microinstructions |
| EP0810518B1 (en) * | 1996-05-30 | 2004-03-17 | Matsushita Electric Industrial Co., Ltd. | Method and circuit for delayed branch control |
| JP3745039B2 (ja) * | 1996-08-01 | 2006-02-15 | 株式会社ルネサステクノロジ | 遅延命令を有するマイクロプロセッサ |
| JP3578883B2 (ja) * | 1997-01-31 | 2004-10-20 | 三菱電機株式会社 | データ処理装置 |
| US6035389A (en) * | 1998-08-11 | 2000-03-07 | Intel Corporation | Scheduling instructions with different latencies |
-
1998
- 1998-02-09 JP JP02715898A patent/JP3881763B2/ja not_active Expired - Fee Related
- 1998-08-28 CN CN98116941A patent/CN1126030C/zh not_active Expired - Fee Related
- 1998-09-03 US US09/146,259 patent/US6865666B2/en not_active Expired - Fee Related
- 1998-09-04 GB GB9819363A patent/GB2334118B/en not_active Expired - Fee Related
- 1998-09-24 DE DE19843948A patent/DE19843948A1/de not_active Ceased
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2011121709A1 (ja) * | 2010-03-29 | 2011-10-06 | 株式会社東芝 | 半導体装置 |
| JP5580404B2 (ja) * | 2010-03-29 | 2014-08-27 | 株式会社東芝 | 半導体装置 |
| JP2018503162A (ja) * | 2014-12-17 | 2018-02-01 | インテル・コーポレーション | スピンループジャンプを実行するための装置および方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| GB9819363D0 (en) | 1998-10-28 |
| CN1126030C (zh) | 2003-10-29 |
| US6865666B2 (en) | 2005-03-08 |
| GB2334118B (en) | 2000-04-26 |
| GB2334118A (en) | 1999-08-11 |
| JP3881763B2 (ja) | 2007-02-14 |
| DE19843948A1 (de) | 1999-10-14 |
| CN1226026A (zh) | 1999-08-18 |
| US20020002670A1 (en) | 2002-01-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH11224194A (ja) | データ処理装置 | |
| JP3745039B2 (ja) | 遅延命令を有するマイクロプロセッサ | |
| US5901301A (en) | Data processor and method of processing data | |
| US6016543A (en) | Microprocessor for controlling the conditional execution of instructions | |
| US6345357B1 (en) | Versatile branch-less sequence control of instruction stream containing step repeat loop block using executed instructions number counter | |
| EP1102163A2 (en) | Microprocessor with improved instruction set architecture | |
| JPH1049368A (ja) | 条件実行命令を有するマイクロプロセッサ | |
| JPH11224194A5 (ja) | ||
| US20030061471A1 (en) | Data processor | |
| JPH03218523A (ja) | データプロセッサ | |
| US6484253B1 (en) | Data processor | |
| WO2008016902A1 (en) | Method and system to combine multiple register units within a microprocessor | |
| US5941984A (en) | Data processing device | |
| JPH081602B2 (ja) | データ処理装置 | |
| JP2009536774A (ja) | マイクロプロセッサ内において複数のレジスタユニットからの対応する半語ユニットを結合するための方法及びシステム | |
| JP2000222208A (ja) | 情報処理装置、命令割当て制御方法、命令割当て制御装置および命令割当て制御プログラムを記録したコンピュータで読取り可能な記録媒体 | |
| US6438680B1 (en) | Microprocessor | |
| US20020133692A1 (en) | Data processor | |
| JP3182591B2 (ja) | マイクロプロセッサ | |
| JP3547585B2 (ja) | 条件実行命令を有するマイクロプロセッサ | |
| GB2343973A (en) | Delayed execution of conditional instructions | |
| JP3539914B2 (ja) | マイクロコンピュータ | |
| JP2002123389A (ja) | データ処理装置 | |
| JPH10320197A (ja) | 条件実行命令を備えるマイクロプロセッサ | |
| Evans | VLIW DSP |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050208 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050208 |
|
| RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20050208 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061019 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20061107 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061113 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101117 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111117 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111117 Year of fee payment: 5 |
|
| S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111117 Year of fee payment: 5 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111117 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121117 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121117 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131117 Year of fee payment: 7 |
|
| S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| LAPS | Cancellation because of no payment of annual fees |