JPH1049370A - 遅延命令を有するマイクロプロセッサ - Google Patents
遅延命令を有するマイクロプロセッサInfo
- Publication number
- JPH1049370A JPH1049370A JP8203675A JP20367596A JPH1049370A JP H1049370 A JPH1049370 A JP H1049370A JP 8203675 A JP8203675 A JP 8203675A JP 20367596 A JP20367596 A JP 20367596A JP H1049370 A JPH1049370 A JP H1049370A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- register
- delay
- value
- delayed
- 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/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/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 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
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
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
果的な命令のスケジューリングができないという課題が
あった。 【解決手段】 ALU361、乗算器363、PC制御
部365、メモリ制御部367およびシフタ369は、
遅延命令のデコード結果をレジスタ362A,364
A,366A,368A,370Aに格納するととも
に、遅延命令で指定された遅延量に応じたプログラムカ
ウンタ値をレジスタ362B,364B,366B,3
68B,370Bに格納するものである。
Description
せて実行される遅延命令を有するマイクロプロセッサに
関するものである。
よるマイクロプロセッサの処理シーケンスを示すシーケ
ンス図である。図において、300は分岐命令、301
はパイプラインにおける命令フェッチステージ、302
はパイプラインにおけるデコードステージ、303はパ
イプラインにおける命令実行ステージ、304はパイプ
ラインにおけるライトバックステージ、305は第1の
遅延スロットにおける命令、306は第2の遅延スロッ
トにおける命令、307は分岐先で実行される命令を示
す。なお、以下、単に「分岐命令」と表現された場合に
は、それは、プログラムカウンタ(PC)値にオペラン
ドで示されるオフセット値が加算された値であるアドレ
スに分岐する命令と、オペランドで示されるアドレスに
間接的にまたは直接に分岐する命令とを含む。分岐命令
とジャンプ命令とが、併記された場合には、それらは、
それぞれ、プログラムカウンタ値にオペランドで示され
るオフセット値が加算された値であるアドレスに分岐す
る分岐命令、オペランドで示されるアドレスに間接的に
または直接に分岐するジャンプ命令を意味する。また、
以下、分岐命令およびジャンプ命令は、サブルーチンコ
ール命令を含むものとして説明を進める。
行されると、図20に示されたパイプライン制御を行う
マイクロプロセッサは、分岐先アドレスを3番目のステ
ージである命令実行ステージ303で得ることができ
る。その時点では、第1の遅延スロットにおける命令3
05および第2の遅延スロットにおける命令306は、
既にデコードステージ302または命令フェッチステー
ジ301にある。マイクロプロセッサは、それらの命令
を無効なものとして扱わなくてはならず、パイプライン
の無駄が生ずる。
「コンピュータアーキテクチャ:量的アプローチ(Co
mputer Architecture:A Qua
ntitative Approach),Morga
n Kaufmann社,1990年」等の文献で種々
の手法が提案されている。例えば、命令のスケジューリ
ング、または命令のスケジューリングと遅延分岐命令
(ディレイド分岐命令)との組み合わせによって、パイ
プラインの無駄を低減することができる。
特開平6−274352号公報に、ディレイド分岐命令
に関する技術が記載されている。一般にディレイド分岐
命令における遅延量はマイクロプロセッサのアーキテク
チャに応じた固定的な値であるが、特開平6−1311
80号公報には任意の遅延スロット数を指定できる命令
が開示されている。指定された遅延スロット数はデクリ
メントカウンタに設定される。デクリメントカウンタの
値は動作クロック信号の入力に従って減り、値が「1」
になると分岐先命令のフェッチが開始される。
セッサにおける命令デコーダおよび命令実行部の部分の
一般的な構成を示すブロック図である。図において、3
41は算術論理演算を実行するALU、342は乗算を
実行する乗算器、343はPC値を計算するPC制御
部、344はアドレス計算を行うメモリ制御部、345
はシフト演算を実行するシフタ、346は1サイクルで
2命令を転送できるバス、347は命令をデコードして
命令実行部に制御信号11,12を与えるデコーダ、3
48は汎用レジスタである。
ある。図において、ADD,SRA,SUB,MULお
よびJMPは、それぞれ、加算命令、シフト命令、減算
命令、乗算命令およびジャンプ命令を示す。加算命令、
シフト命令、減算命令、乗算命令およびジャンプ命令
は、ぞれぞれ、命令実行部におけるALU341、シフ
タ345、ALU341、乗算器342およびPC制御
部343において扱われる。また、例えば、(r3,r
0,6)は、汎用レジスタ348中のr0レジスタの値
と即値「6」とを対象とした演算結果を汎用レジスタ3
48中のr3レジスタに設定することを示す。
演算命令を扱えるので、命令実行部におけるリソースが
競合しない限り、図22に示されたプログラムを2演算
命令による各命令に変換したものを扱える。例えば、図
23に示されるように変換された各命令を実行できる。
図23において、各行は2演算命令の1命令に対応す
る。すなわち、各行は同時実行される2演算を示す。S
RAとSUBとは、リソースの競合はないがレジスタ依
存の関係にあるので、同時に実行することはできない。
よって、2行目にNOPが置かれている。このような命
令のスケジューリングは、プログラマまたはコンパイラ
によってなされる。
るマイクロプロセッサは以上のように構成されているの
で、以下のような課題があった。 (1)遅延量が固定的にしか指定できないディレイド分
岐命令を有するマイクロプロセッサでは、効果的な命令
のスケジューリングができない。例えば、図23におけ
る5行目のJMPを削除して2行目のNOPの位置に遅
延量「2」のディレイドジャンプ命令を置くことは効果
的である。そのようにすれば、図23の4行目の命令の
フェッチ後に直ちにジャンプ先アドレスTGTの命令の
フェッチが開始され、パイプラインの無駄が生じないか
らである。遅延量「2」しか指定できないマイクロプロ
セッサでは、そのようなディレイド分岐命令を置いた命
令群を実行できる。しかし、例えば遅延量「3」しか指
定できないマイクロプロセッサを使用する場合には、プ
ログラマまたはコンパイラは、そのようなスケジューリ
ングを行うことはできない。 (2)指定された遅延量に応じた値をデクリメントカウ
ンタに設定するマイクロプロセッサでは、命令遅延中に
割り込みや新たな分岐が生じた場合に矛盾なく処理を進
めるための構成が複雑になる。例えば、デクリメントカ
ウンタの値は動作クロックに従ってカウントダウンされ
るので、何等の考慮も払わないと、設定された遅延量と
実際の遅延量との間で、割り込み処理等で費やされた動
作クロック数分の狂いが生ずる。 (3)ディレイド命令は分岐命令に限られているので、
効果的な命令のスケジューリングができない。
めになされたもので、処理の矛盾を生じさせることなく
任意の遅延量を指定できるディレイド命令を扱えて効果
的な命令のスケジューリングができる環境をプログラマ
に提供でき、その結果、プログラムをより高速に実行し
うるマイクロプロセッサを得ることを目的とする。
る遅延命令を有するマイクロプロセッサは、PC値を制
御するPC制御部が、ディレイド分岐命令の分岐先アド
レスを示す値およびディレイド分岐命令で指定された遅
延量に応じたプログラムカウンタ値を保持する遅延分岐
命令保持手段を有するものである。
るマイクロプロセッサは、各演算ユニットが、ディレイ
ド演算命令の内容およびディレイド演算命令の固定のま
たは可変の遅延量に応じた値を保持する遅延命令保持手
段を有するものである。ここで、ディレイド演算命令の
内容とは、ディレイド演算命令のデコード結果であっ
て、いかなる演算を行うかを示す情報である。なお、特
に断らない限り、ディレイド分岐命令は、ディレイド演
算命令に含まれないものとする。
るマイクロプロセッサは、任意の遅延量を指定できるデ
ィレイド演算命令で指定された遅延量に応じた値を保持
する遅延命令保持手段を有するものである。
るマイクロプロセッサは、各演算ユニットが、ディレイ
ド演算命令で指定された遅延量に応じたPC値を保持す
る遅延命令保持手段を有するものである。
るマイクロプロセッサは、各演算ユニットに、複数の遅
延命令保持手段が設けられているものである。
るマイクロプロセッサは、上記の各構成を有するととも
に、命令実行部が複数演算を同時に実行するものであ
る。
説明する。 実施の形態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に転送することがで
きる。
レジスタ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に転送するシフタである。
タ5から、最大6種類のレジスタ値を読み出すことが可
能であって、読み出されたデータは、それぞれ、S1バ
ス、S2バス、S3バス、S4バス、S5バス、S6バ
スに出力される。また、汎用レジスタ5には、D1バ
ス、D2バス、D3バスを介して最大3種類のレジスタ
値を同時に書き込むことが可能である。
ーマットを示す説明図である。命令フォーマットとし
て、図2(a)に示すような1つの命令コードで2つの
演算(operation )を指示する2演算命令のフォーマッ
ト101と、図2(b)に示すような1つの命令コード
で1つの演算を指示する1演算命令のフォーマット10
2とがある。2演算命令のフォーマット101には、フ
ィールド103およびフィールド104からなるフォー
マットフィールドと、2つの演算フィールド106,1
07と、各演算フィールド106,107に付属する各
実行条件フィールド105とがある。1演算命令のフォ
ーマット102には、フィールド103およびフィール
ド104からなるフォーマットフィールドと、演算フィ
ールドと、演算フィールドに付属する実行条件フィール
ド105とがある。演算フィールドは、フィールド10
8,109,110からなる。
意味を示す。 コード:フォーマット 実行の順番 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ビットの値である。
であることを示す。そして、演算フィールド106で指
示されたoperation_0の演算と演算フィールド107で
指示されたoperation_1の演算とが、デコード直後のク
ロックサイクルで並列に実行される。operation_0の演
算はメモリユニット3で実行され、operation_1の演算
は整数演算ユニット4で実行される。FM=01の場
合、この命令は2演算命令であることを示す。そして、
operation_0の演算が、デコード直後のクロックサイク
ルで実行され、operation_1の演算が、operation_0の
演算に対して、1クロックサイクル遅れて実行される。
FM=10の場合、この命令は2演算命令であることを
示す。そして、operation_1の演算が、デコード直後の
クロックサイクルで実行され、operation_0の演算が、
operation_1の演算に対して、1クロックサイクル遅れ
て実行される。FM=11の場合、この命令は1演算命
令であることを示す。そして、フィールド108,10
9,110からなる演算フィールドで指示された1つの
演算がデコード直後のクロックサイクルで実行される。
な意味を持つ。
ロセッサの実行コントロールフラグF0,F1の値に応
じて、演算フィールド106,107のoperation_0の
演算やoperation_1の演算、およびフィールド108,
109,110からなる演算フィールドの演算が有効で
あるか無効であるか定める。実行コントロールフラグF
0,F1については後で説明する。演算が有効であると
は、演算結果がレジスタ、メモリおよびフラグに反映さ
れ、その演算による動作の結果が残ることを意味する。
演算が無効であるとは、演算結果がレジスタ、メモリお
よびフラグに反映されず、あたかも無効演算(NOP)
が実行されたかのような動作の結果が残ることを意味す
る。
0のときには、実行コントロールフラグF0,F1の値
にかかわらず常に演算は有効である。CC=001のと
きには、実行コントロールフラグF0=真のときにのみ
演算は有効である。実行コントロールフラグF1の状態
はいずれでもよい。CC=010のときには、実行コン
トロールフラグF0=偽のときにのみ演算は有効であ
る。実行コントロールフラグF1の状態はいずれでもよ
い。CC=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は、複雑な算術演算、大きな即値を用
いる算術演算、大きなディスプレイスメント付きレジス
タ間接アドレッシングのメモリアクセス演算、大きな変
位の分岐演算および絶対番地へのジャンプ命令などに使
用される。
を示す説明図である。このマイクロプロセッサは、図4
(a)に示すような64本の32ビット長の汎用レジス
タ5、図4(b)に示すような12本の制御レジスタ1
50、および図4(c)に示すような2本のアキュムレ
ータ18を持つ。R0の汎用レジスタ140の内容は常
に0であり、そこへの書き込みは無視される。R62の
汎用レジスタは、サブルーチンからの戻り先アドレスが
設定されるリンクレジスタである。R63の汎用レジス
タは、スタックポインタであり、PSW10のSMフィ
ールドの値に応じてユーザスタックポインタ(SPU)
または割り込みスタックポインタ(SPI)として動作
する。制御レジスタ150には、プログラムカウンタ1
51、PSW10、および各種の専用レジスタが含まれ
る。図3に示すフォーマット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ビットのインクリメント]
e [ディレイドサブルーチン分岐] DBSRI :Delayed branch immediate to
subroutine [ディレイドサブルーチン分岐(即値)] DJMP :Delayed jump[ディレイドジャンプ] DJMPI :Delayed jump immediate[ディレイドジャンプ(即値)] DJSR :Delayed jump to subroutine [ディレイドサブルーチンジャンプ] DJSRI :Delayed jump immediate to subroutine [ディレイドサブルーチンジャンプ(即値)]
words [2ハーフワードずつの乗算] MACa :Multiply and add[積和演算] a(アキュムレータ指定)=0,1 MACSa :Multiply, shift to the right by one and add a=0,1 [1ビット右シフト付き積和演算] MSUBa :Multiply and subtract [積和(減算)演算] a=0,1 MSUBSa :Multiply, shift to the right by one and subtract a=0,1 [1ビット右シフト付き積和(減算)演算]
行時のパイプライン動作を示す説明図である。この動作
は、命令のフォーマットフィールドの値FM=00のと
きに実行される。パイプライン190,195は、命令
フェッチステージ191、デコード/アドレス演算ステ
ージ192、実行/メモリアクセスステージ193およ
びライトバックステージ194で構成される。並列2命
令実行時には、メモリユニット3での実行と整数演算ユ
ニット4での実行とが並列に行われる。図7はマイクロ
プロセッサのシーケンシャル命令実行時のパイプライン
動作を示す説明図である。この動作は、命令のフォーマ
ットフィールドの値FM=01,10,11のときに実
行される。パイプライン200は、命令フェッチステー
ジ、デコード/アドレス演算ステージ、実行/メモリア
クセスステージ、およびライトバックステージで構成さ
れるが、この場合には、メモリユニット3での実行と整
数演算ユニット4での実行とのうちのいずれかが、一時
に実行される。なお、図6および図7に示されたパイプ
ライン動作では、2番目のステージであるデコード/ア
ドレス演算ステージ192において分岐先アドレスが得
られる。
クロプロセッサの構成を示すブロック図である。図にお
いて、366は分岐命令のデコード値を保持するための
レジスタ13Aと分岐命令が実行されるべき時期に対応
したPC値を保持するレジスタ13Bとを含む遅延分岐
命令レジスタ(遅延分岐命令保持手段)である。分岐命
令が実行されるべき時期に対応したPC値とは、マイク
ロプロセッサのPCの値がその値になるとディレイド分
岐命令を実行することになる値である。なお、既に定義
したように、単に「分岐命令」と表現した場合には、厳
密な意味での分岐命令とジャンプ命令との双方の概念を
含む。
ーマット320を示す説明図である。基本的には、ディ
レイド分岐命令のフォーマット320は、オペコード3
21、遅延量を指定するフィールド322および分岐先
アドレスを指定するためのオフセットまたはアドレスが
指定されるフィールド323を持つ。ディレイド分岐命
令は、例えば、図3に示すフォーマット116(Sho
rt_D1)、フォーマット117(Short_D
2)またはフォーマット118(Long)で実現され
る。フォーマット116(Short_D1)は、遅延
量としてレジスタ設定値が用いられる場合に使用され
る。フォーマット117(Short_D2)は、遅延
量として即値が用いられる場合に使用される。フォーマ
ット118(Long)は、分岐先アドレスを32ビッ
ト即値で指定する場合に使用される。各フォーマットに
おいて、オペコードはフィールド120で指定される。
また、フィールド129は、フィールド128がレジス
タ番号を示すのか即値を示すのかを指定するために使用
される。フィールド121は、DBRA,DBSR,D
JMP,DJSRの各命令において遅延量がレジスタで
指定されるときのレジスタ指定領域として使用され、フ
ィールド131は、遅延量を指定する即値の領域として
使用される。
を示す説明図である。命令324は、遅延量を即値で指
定するとともに分岐のオフセットを即値で指定する命令
である。命令325は、遅延量をレジスタで指定すると
ともに分岐のオフセットを即値で指定する命令である。
命令326は、遅延量を即値で指定するとともに分岐の
オフセットをレジスタで指定する命令である。命令32
7は、遅延量をレジスタで指定するとともに分岐のオフ
セットをレジスタで指定する命令である。
レイドジャンプ命令332およびディレイドサブルーチ
ンコール命令331,333が、同一フォーマットでど
のように実現されるのかを示すための説明図である。
イド分岐命令であったことを命令デコードユニット2の
デコーダ8が認識すると、命令デコードユニット2は、
そのことを示す制御信号11をメモリユニット3に出力
する。メモリユニット3において、PC制御部13は、
制御信号11によって入力した命令デコード結果をレジ
スタ13Aに格納する。従って、レジスタ13Aには、
ディレイド分岐命令による分岐先を示す情報等が格納さ
れる。また、PC制御部13は、分岐命令が実行される
べき時期に応じたPC値をレジスタ13Bに格納する。
おける実際のPC値がレジスタ13Bに格納されている
値と一致したことを検知したら、レジスタ13Aに格納
されている分岐先情報にもとづいて分岐命令を実行す
る。すなわち、レジスタ13Aに格納されている分岐先
情報が示す値をPCに設定する。この結果、レジスタ1
3Bに格納されている値に応じた数の命令がフェッチさ
れたら、次のサイクルで、分岐先にある命令がフェッチ
される。
ラムの一例を示す説明図である。図12における2行目
のDBRA命令は、遅延量「3」を指定するとともに分
岐先としてTGT1を指定する命令である。命令デコー
ドユニット2において、DBRA命令がデコードされる
と、PC制御部13は、分岐先を示すTGT1に応じた
情報をレジスタ13Aに格納する。また、遅延量「3」
に応じたPC値、すなわち、そのときのPCの値に3×
8を加算した値をレジスタ13Bに格納する。DBRA
命令の下に記述されている3命令は無条件に処理される
が、3番目の遅延スロットにある命令をフェッチすると
き、マイクロプロセッサのPCの値はレジスタ13Bに
格納されているPC値に一致する。そこで、PC制御部
13は、DBRA命令による分岐処理を実行する。すな
わち、レジスタ13Bに格納されているPC値をマイク
ロプロセッサにおけるPCに設定する処理を行う。
ラムの他の例を示す説明図である。ここでは、サブルー
チンコール命令であるDJSR命令が用いられている。
また、遅延量は、汎用レジスタ5におけるr4レジスタ
に設定されている値が用いられる。この場合も、PC制
御部13は、分岐先を示すTGT1に応じた情報をレジ
スタ13Aに格納する。また、PC制御部13は、r4
レジスタに設定されている値に応じたPC値をレジスタ
13Bに格納する。r4レジスタに設定されている値が
「4」であったとすると、DJSR命令の下に記述され
ている4命令は無条件に処理されるが、4番目の遅延ス
ロットの命令をフェッチするときに、マイクロプロセッ
サのPCの値はレジスタ13Bに格納されているPC値
に一致する。そこで、PC制御部13は、DJSR命令
によるサブルーチンジャンプを実行する。具体的には、
PCに、レジスタ13Bに格納されているPC値を設定
する。
ば、マイクロプロセッサは、ディレイド分岐命令で指定
された遅延量に応じたPC値を保持するように構成され
ているので、ディレイド分岐命令のデコード時点から実
行時点までの間に割り込み等のPC値を変化させる事象
が生じたとしても、確実に分岐命令が実行される。例え
ば、図12に示された例において、遅延スロットの命令
の実行時に割り込みが生ずるとマイクロプロセッサのP
Cの値は変化するとともに、割り込み処理において幾つ
かのサイクルが消費される。従来のマイクロプロセッサ
における処理のようにディレイド分岐命令の実行時期を
カウンタ値として保持していると、割り込み処理におい
て費やされたサイクル数分だけ実行時期がずれてしま
う。しかし、この実施の形態によれば、そのようなこと
はない。また、レジスタ13A,13Bをアクセスする
命令を備えれば、遅延スロットの命令実行時に起きた割
り込みにともないコンテクストスイッチが必要になった
場合、レジスタ13Aに保持された分岐先情報とレジス
タ13Bに保持された分岐発生PC値とをデータRAM
7に退避し、異なるコンテクストを実行後、再び割り込
まれたコンテクストに復帰したときにこれらの値を復帰
して遅延分岐を実行することも可能になる。
形態2によるマイクロプロセッサにおける命令デコード
部分および命令実行部分を示すブロック図である。図に
おいて、361は算術論理演算を実行するALU(演算
ユニット)、363は乗算を実行する乗算器(演算ユニ
ット)、365はPC値を計算するPC制御部、367
はアドレス計算を行うメモリ制御部(演算ユニット)、
369はシフト演算を実行するシフタ(演算ユニッ
ト)、371は1サイクルで2命令(2演算指令を含む
命令)を転送できるバス、372は命令をデコードして
命令実行部に制御信号11,12を与える命令デコー
ダ、373は汎用レジスタである。
ド算術論理演算命令のデコード結果を格納するレジスタ
362Aと遅延量に応じた値を格納するレジスタ362
Bとを有する遅延命令レジスタ(遅延命令保持手段)で
ある。乗算器363において、364はディレイド乗算
命令のデコード結果を格納するレジスタ364Aと遅延
量に応じた値を格納するレジスタ364Bとを有する遅
延命令レジスタ(遅延命令保持手段)である。PC制御
部365において、366はディレイド分岐命令のデコ
ード結果を格納するレジスタ366Aと遅延量に応じた
値を格納するレジスタ366Bとを有する遅延命令レジ
スタ(遅延分岐命令保持手段)である。メモリ制御部3
67において、368はディレイドメモリアクセス命令
のデコード結果を格納するレジスタ368Aと遅延量に
応じた値を格納するレジスタ368Bとを有する遅延命
令レジスタ(遅延命令保持手段)である。シフタ369
において、370はディレイドシフト命令のデコード結
果を格納するレジスタ370Aと遅延量に応じた値を格
納するレジスタ370Bとを有する遅延命令レジスタ
(遅延命令保持手段)である。
の2演算を同時に実行する命令配置の一例を示す説明図
である。この配置は、図22に示されたプログラムをス
ケジューリングした結果である。図21に示された一般
的な2演算を同時に扱うマイクロプロセッサでは、図2
2に示されたプログラムを実行するために、図23に示
されたように5サイクルを要していた。SRA命令とS
UB命令とはr3レジスタ依存の関係にあって同時に実
行できないからである。ところが、この実施の形態によ
るマイクロプロセッサはディレイド分岐命令を扱えるの
で、図15に示されたように、図23における2行目の
NOPを遅延量「2」のDJMP命令で置き換えること
ができる。
命令を順次入力すると、第1サイクルでは、マイクロプ
ロセッサにおいて、ALU361とシフタ369とが、
1行目のADD演算とSRA演算とをそれぞれ実行す
る。第2サイクルでは、シフタ369とPC制御部36
5とがSRA演算とDJMP演算とを扱う。シフタ36
9はSRA演算を直ちに実行するが、PC制御部365
は、実施の形態1の場合と同様に、DJMP演算のデコ
ード結果である分岐先TGTに関する情報をレジスタ3
66Aに格納し、遅延量「2」に応じたPC値をレジス
タ366Bに格納する。第3サイクルでは、ALU36
1と乗算器363とが、3行目のSUB演算とMUL演
算とをそれぞれ実行する。第4サイクルでは、ALU3
61と乗算器363とが、4行目のADD演算とMUL
演算とをそれぞれ実行する。4行目の命令がフェッチさ
れるとき、マイクロプロセッサのPC(図14において
図示せず)の値はレジスタ366Bに格納されているP
C値に一致している。そこで、PC制御部365は、D
JMP演算で指定されたジャンプ命令を実行する。具体
的には、PCに、レジスタ366Bに格納されているP
C値を設定する。
岐命令処理する機構を備えていれば、命令のスケジュー
リングをより有効に実行することができる。すなわち、
プログラマまたはコンパイラは、プログラムサイズをよ
り小さくするような命令のスケジューリングを行える。
その結果、ある処理を実行するのに要する時間は短縮さ
れる。しかも、PC制御部365は、分岐命令実行時期
をPC値として保持するので、ディレイド分岐命令は矛
盾なく実行される。
は、ディレイド分岐命令以外のディレイド演算命令を扱
うこともできる。図16は、プログラムの一例を示す説
明図である。図21に示された一般的な2演算を同時に
扱うマイクロプロセッサでは、図16における1行目の
ADD演算と2行目のADD演算を同時実行することは
できない。1つのALU341しか持っていないからで
ある。従って、図16における1行目の命令と2行目の
命令とを同時実行するように命令のスケジューリングを
行うことはできなかった。
プロセッサは、図16に示すプログラムの各命令を図1
7に示すようにスケジューリングした各命令を実行でき
る。図17に示されたような命令配置による各命令を順
次入力すると、このマイクロプロセッサにおいて、第1
サイクルでは、ALU361は、ADD演算を実行する
とともにDADD(ディレイドADD)演算も扱う。す
なわち、DADDのデコード結果をレジスタ362Aに
格納するとともに、遅延値「1」に応じた値をレジスタ
362Bに格納する。第2サイクルでは、シフタ369
と乗算器363とは、SRA演算とMUL演算とをそれ
ぞれ実行する。2行目の命令がフェッチされるときに、
PCの値はレジスタ362B内の遅延値「1」に応じた
値に一致する。そこで、ALU361は、レジスタ36
2AからDADDで指定された演算指令内容を取り出
し、その演算を実行する。
値に応じた値は、動作クロックに応じて値が変化するカ
ウンタ値であってもよいが、PC値であってもよい。遅
延値に応じた値としてPC値を保持した場合には、デコ
ード時と実行時との間で割り込み等が生じてもそれに対
する対処が容易になる。
ユニットとしてALU361を例にとったが、乗算器3
63、メモリ制御部367およびシフタ369も、AL
U361の処理と同様の処理によってディレイド演算命
令を扱うことができる。また、遅延値「1」の場合を例
に説明したが、もちろん、任意の値を指定できる。任意
の値を指定可能なので、命令のスケジューリングの自由
度をより向上させることができる。なお、固定的な値を
指定するディレイド演算命令しか処理しないマイクロプ
ロセッサであっても、任意の遅延値を指定できるディレ
イド演算命令を処理するマイクロプロセッサに比べると
効果は低減するものの、命令のスケジューリングの自由
度を向上させる効果が期待できる。
機構を有する場合には、プログラムの実行に要するサイ
クル数をさらに少なくでき、その結果、プログラム実行
時間を短縮できる。例えば、図16に示されたプログラ
ムがあった場合に、図21に示された一般的な2演算を
同時に扱うマイクロプロセッサでは、2つのADD命令
を同時実行できないので、命令のスケジューリングを行
ってもプログラム実行に3サイクルを要する。このマイ
クロプロセッサは、図17に示された例からわかるよう
に、2サイクルでプログラムを実行できる。また、ルー
プ内でディレイド命令を記述できるような場合に、この
マイクロプロセッサによれば、さらに処理を高速化でき
る。
マイクロプロセッサにおいて、特に有効である。図15
および図17に示された例からわかるように、演算を並
列実行する場合のNOP挿入箇所を削減できるからであ
る。なお、ここでは、2演算同時実行のマイクロプロセ
ッサについて説明したが、リソースであるALU361
等の演算ユニットを複数個備え、同時実行演算数をさら
に多くしたマイクロプロセッサに、この実施の形態によ
るディレイド演算命令処理機構を設けてもよい。そのよ
うなマイクロプロセッサにおいても、実行サイクル数の
削減および処理の高速化が期待できる。
プロセッサにおけるPSWの一例を示す説明図である。
このPSW380,390は図5に示されたものと同様
のものであるが、この場合には、RPフィールド381
がPC制御部365の遅延命令レジスタ366の動作を
有効にするかどうか決めるビットとして用いられる。ま
た、例えば、E4フィールド382、E3フィールド3
83、E2フィールド384およびE1フィールド38
5は、それぞれ、ALU361の遅延命令レジスタ36
2、乗算器363の遅延命令レジスタ364、メモリ制
御部367の遅延命令レジスタ368およびシフタ36
9の遅延命令レジスタ370の動作を有効にするかどう
か決めるビットとして用いられる。各ビットが無効状態
にセットされた場合には、対応する演算ユニットにおけ
るディレイド命令処理は禁止される。このようなPSW
380,390を用意することによって、ディレイド命
令処理の柔軟性を増すことができる。
形態3によるマイクロプロセッサにおける命令デコード
部分および命令実行部分を示すブロック図である。図に
おいて、461は算術論理演算を実行するALU(演算
ユニット)、463は乗算を実行する乗算器(演算ユニ
ット)、465はPC値を計算するPC制御部、467
はアドレス計算を行うメモリ制御部(演算ユニット)、
469はシフト演算を実行するシフタ(演算ユニッ
ト)、371は1サイクルで2命令を転送できるバス、
372は命令をデコードして命令実行部に制御信号1
1,12を与える命令デコーダ、373は汎用レジスタ
である。
461は、2つの遅延命令レジスタ362を有する。乗
算器463は、2つの遅延命令レジスタ364を有す
る。PC制御部465は、2つの遅延命令レジスタ36
6を有する。メモリ制御部467は、2つの遅延命令レ
ジスタ368を有する。そして、シフタ469は、2つ
の遅延命令レジスタ370を有する。
トおよびPC制御部465において、命令のデコード結
果と遅延量とからなる1セットはキュー管理される。例
えば、ALU461において、一方の遅延命令レジスタ
362のレジスタ362Aにディレイド算術演算命令の
デコード結果が格納されレジスタ362Bにそれに対応
する遅延量に応じた値が設定されている場合に、さら
に、命令デコーダ372から新たなディレイド算術演算
命令のデコード結果が送られてきたとする。すると、新
たなデコード結果および遅延量に応じた値は、他方の遅
延命令レジスタ362に格納される。そして、一方のレ
ジスタ362Bに格納されている遅延量に応じた値とマ
イクロプロセッサのPCの値とが一致したときに、一方
のレジスタ362Aに格納されているデコード結果に応
じた演算が実行される。その後、他方のレジスタ362
Bに格納されている遅延量に応じた値とマイクロプロセ
ッサのPCの値とが一致したときに、他方のレジスタ3
62Aに格納されているデコード結果に応じた演算が実
行される。
命令の実行時期に到達していない時点でも、別の同種類
のディレイド命令を扱うことができる。例えば、あるデ
ィレイドADD命令の実行時期に到達していない時点で
も、ALU461は、新たなディレイドADD命令を受
け入れることができる。従って、命令のスケジューリン
グの自由度をさらに上げることができ、プログラムサイ
ズの減少すなわち命令メモリの容量削減を図ることがで
きる。また、より高速にプログラムを実行することがで
きる。なお、ここでは各演算ユニットにおいて2つの遅
延命令レジスタが設けられている例を示したが、設置数
をさらに多くしてもよい。
れば、遅延命令を有するマイクロプロセッサを、ディレ
イド分岐命令で指定された遅延量に応じたプログラムカ
ウンタ値を保持するように構成したので、ディレイド分
岐命令のデコード時点から実行時点までの間に割り込み
等のPCの値を変化させる事象が生じたとしても確実に
分岐命令が実行される効果がある。
有するマイクロプロセッサを、各演算ユニットがディレ
イド演算命令の固定のまたは可変の遅延量に応じた値を
保持するように構成したので、命令スケジューリングの
自由度を向上させることができる効果がある。
有するマイクロプロセッサを、各演算ユニットがディレ
イド演算命令で指定された任意の遅延量に応じた値を保
持するように構成したので、プログラムの実行に要する
サイクル数をより少なくでき、その結果、命令メモリの
容量を削減できるとともにプログラム実行時間を短縮で
きる効果がある。
有するマイクロプロセッサを、各演算ユニットがディレ
イド演算命令で指定された遅延量に応じたPC値を保持
するように構成したので、プログラムの実行に要するサ
イクル数をより少なくできるとともに、ディレイド演算
命令のデコード時点から実行時点までの間に割り込み等
のPCの値を変化させる事象が生じたとしても確実に演
算が実行される効果がある。
有するマイクロプロセッサを、各演算ユニットに複数の
遅延命令保持手段が設けられるように構成したので、命
令のスケジューリングの自由度を上げることができる効
果がある。
有するマイクロプロセッサを、命令実行部が複数演算を
同時に実行するように構成したので、命令のスケジュー
リングの自由度をさらに上げることができ、その結果、
プログラムの実行に要するサイクル数をさらに少なくで
きる効果がある。
セッサの構成を示すブロック図である。
す説明図である。
ある。
明図である。
イプライン動作を示す説明図である。
行時のパイプライン動作を示す説明図である。
セッサの構成を示すブロック図である。
を示す説明図である。
明図である。
命令およびディレイドサブルーチンコール命令が、同一
フォーマットでどのように実現されるのかを示すための
説明図である。
例を示す説明図である。
の例を示す説明図である。
ロセッサにおける命令デコード部分および命令実行部分
を示すブロック図である。
示す説明図である。
を同時に実行する命令配置を示す説明図である。
ロセッサにおけるPSWの一例を示す説明図である。
ロセッサにおける命令デコード部分および命令実行部分
を示すブロック図である。
ロプロセッサの処理シーケンスを示すシーケンス図であ
る。
おける命令デコーダおよび命令実行部の部分の一般的な
構成を示すブロック図である。
図である。
リユニット(命令実行部)、4 整数演算ユニット(命
令実行部)、13,365,465 PC制御部、36
1,461 ALU(演算ユニット)、362,36
4,368,370 遅延命令レジスタ(遅延命令保持
手段)、363,463 乗算器(演算ユニット)、3
66 遅延分岐命令レジスタ(遅延分岐命令保持手
段)、367,467 メモリ制御部(演算ユニッ
ト)、369,469 シフタ(演算ユニット)。
Claims (6)
- 【請求項1】 命令をデコードする命令デコーダと、前
記命令デコーダの出力に従って命令を実行する命令実行
部とを備えた遅延命令を有するマイクロプロセッサにお
いて、前記命令実行部におけるプログラムカウンタ値を
制御するPC制御部は、遅延分岐命令の分岐先を示す値
および遅延分岐命令で指定された遅延量に応じたプログ
ラムカウンタ値を保持する遅延分岐命令保持手段を備え
たことを特徴とする遅延命令を有するマイクロプロセッ
サ。 - 【請求項2】 命令をデコードする命令デコーダと、前
記命令デコーダの出力に従って命令を実行する命令実行
部とを備えた遅延命令を有するマイクロプロセッサにお
いて、前記命令実行部における演算ユニットは、遅延演
算命令による演算内容および遅延演算命令による演算の
実行開始を示す値を保持する遅延命令保持手段を備えた
ことを特徴とする遅延命令を有するマイクロプロセッ
サ。 - 【請求項3】 遅延命令保持手段は、遅延演算命令で指
定された遅延量に応じた値を保持することを特徴とする
請求項2記載の遅延命令を有するマイクロプロセッサ。 - 【請求項4】 遅延命令保持手段は、遅延演算命令で指
定された遅延量に応じたプログラムカウンタ値を保持す
ることを特徴とする請求項3記載の遅延命令を有するマ
イクロプロセッサ。 - 【請求項5】 各演算ユニットは、複数の遅延命令保持
手段を有する請求項3または請求項4記載の遅延命令を
有するマイクロプロセッサ。 - 【請求項6】 命令実行部は、複数演算を同時に実行す
る請求項1から請求項5のうちのいずれか1項記載の遅
延命令を有するマイクロプロセッサ。
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP20367596A JP3745039B2 (ja) | 1996-08-01 | 1996-08-01 | 遅延命令を有するマイクロプロセッサ |
| US08/788,839 US5815698A (en) | 1996-08-01 | 1997-01-27 | Microprocessor having delayed instructions |
| US09/116,260 US6851045B2 (en) | 1996-08-01 | 1998-07-16 | Microprocessor having delayed instructions with variable delay times for executing branch instructions |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP20367596A JP3745039B2 (ja) | 1996-08-01 | 1996-08-01 | 遅延命令を有するマイクロプロセッサ |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH1049370A true JPH1049370A (ja) | 1998-02-20 |
| JP3745039B2 JP3745039B2 (ja) | 2006-02-15 |
Family
ID=16477992
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP20367596A Expired - Fee Related JP3745039B2 (ja) | 1996-08-01 | 1996-08-01 | 遅延命令を有するマイクロプロセッサ |
Country Status (2)
| Country | Link |
|---|---|
| US (2) | US5815698A (ja) |
| JP (1) | JP3745039B2 (ja) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2003508863A (ja) * | 1999-09-07 | 2003-03-04 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 可変命令長処理 |
| US6865666B2 (en) * | 1998-02-09 | 2005-03-08 | Renesas Technology Corp. | Data processing device |
| JP2007287186A (ja) * | 2007-08-09 | 2007-11-01 | Denso Corp | Risc型cpu,コンパイラ及びマイクロコンピュータ |
| JP2010501102A (ja) * | 2006-08-16 | 2010-01-14 | クゥアルコム・インコーポレイテッド | 動的可変遅延に基づいてプロセッサ命令を実行するための方法および装置 |
| US11768689B2 (en) | 2013-08-08 | 2023-09-26 | Movidius Limited | Apparatus, systems, and methods for low power computational imaging |
Families Citing this family (21)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| SE509499C2 (sv) * | 1996-05-03 | 1999-02-01 | Ericsson Telefon Ab L M | Metod och anordning för hantering av villkorliga hopp vid instruktionsbehandling i en pipeline-arkitektur |
| JP3790607B2 (ja) * | 1997-06-16 | 2006-06-28 | 松下電器産業株式会社 | Vliwプロセッサ |
| WO1999048025A2 (en) * | 1998-03-18 | 1999-09-23 | Koninklijke Philips Electronics N.V. | Data processing device and method of computing the cosine transform of a matrix |
| JP2000284970A (ja) * | 1999-03-29 | 2000-10-13 | Matsushita Electric Ind Co Ltd | プログラム変換装置及びプロセッサ |
| US7546444B1 (en) | 1999-09-01 | 2009-06-09 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
| CA2383531A1 (en) | 1999-09-01 | 2001-03-08 | Intel Corporation | Instruction for multithreaded parallel processor |
| US7681018B2 (en) | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
| US20030154469A1 (en) * | 2001-12-20 | 2003-08-14 | Timothy Anderson | Apparatus and method for improved execution of a software pipeline loop procedure in a digital signal processor |
| US6954848B2 (en) * | 2002-01-02 | 2005-10-11 | Intel Corporation | Marking in history table instructions slowable/delayable for subsequent executions when result is not used immediately |
| US7437724B2 (en) | 2002-04-03 | 2008-10-14 | Intel Corporation | Registers for data transfers |
| AU2003243745A1 (en) * | 2002-06-20 | 2004-01-06 | Rambus Inc. | Method and apparatus for the dynamic scheduling of device commands |
| US7043599B1 (en) | 2002-06-20 | 2006-05-09 | Rambus Inc. | Dynamic memory supporting simultaneous refresh and data-access transactions |
| US7130988B2 (en) * | 2002-11-15 | 2006-10-31 | Via-Cyrix, Inc. | Status register update logic optimization |
| JP2004206389A (ja) * | 2002-12-25 | 2004-07-22 | Denso Corp | Risc型cpu,コンパイラ,マイクロコンピュータ及び補助演算装置 |
| US7343474B1 (en) * | 2004-06-30 | 2008-03-11 | Sun Microsystems, Inc. | Minimal address state in a fine grain multithreaded processor |
| US9665970B2 (en) * | 2006-09-19 | 2017-05-30 | Imagination Technologies Limited | Variable-sized concurrent grouping for multiprocessing |
| CN106559339B (zh) * | 2015-09-30 | 2019-02-19 | 华为技术有限公司 | 一种报文处理方法及装置 |
| US10877759B2 (en) | 2015-09-30 | 2020-12-29 | International Business Machines Corporation | Managing the capture of information in applications with prefix instructions |
| US10394568B2 (en) * | 2015-09-30 | 2019-08-27 | International Business Machines Corporation | Exception handling for applications with prefix instructions |
| US10761852B2 (en) | 2015-09-30 | 2020-09-01 | International Business Machines Corporation | Extending data range addressing |
| US10180829B2 (en) * | 2015-12-15 | 2019-01-15 | Nxp Usa, Inc. | System and method for modulo addressing vectorization with invariant code motion |
Family Cites Families (14)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4929396A (en) | 1983-01-13 | 1990-05-29 | Celgene Corporation | Production of hexamethylenediamine muconate salt |
| US5021945A (en) * | 1985-10-31 | 1991-06-04 | Mcc Development, Ltd. | Parallel processor system for processing natural concurrencies and method therefor |
| US4847755A (en) * | 1985-10-31 | 1989-07-11 | Mcc Development, Ltd. | Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies |
| US4926323A (en) * | 1988-03-03 | 1990-05-15 | Advanced Micro Devices, Inc. | Streamlined instruction processor |
| US5202967A (en) * | 1988-08-09 | 1993-04-13 | Matsushita Electric Industrial Co., Ltd. | Data processing apparatus for performing parallel decoding and parallel execution of a variable word length instruction |
| JP2834837B2 (ja) * | 1990-03-30 | 1998-12-14 | 松下電工株式会社 | プログラマブルコントローラ |
| US5390304A (en) * | 1990-09-28 | 1995-02-14 | Texas Instruments, Incorporated | Method and apparatus for processing block instructions in a data processor |
| US5305446A (en) * | 1990-09-28 | 1994-04-19 | Texas Instruments Incorporated | Processing devices with improved addressing capabilities, systems and methods |
| JPH06131180A (ja) * | 1992-10-15 | 1994-05-13 | Oki Electric Ind Co Ltd | 命令処理方式および命令処理装置 |
| JP3499252B2 (ja) * | 1993-03-19 | 2004-02-23 | 株式会社ルネサステクノロジ | コンパイル装置及びデータ処理装置 |
| DE4345028A1 (de) * | 1993-05-06 | 1994-11-10 | Hewlett Packard Co | Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen |
| US5664135A (en) * | 1994-09-28 | 1997-09-02 | Hewlett-Packard Company | Apparatus and method for reducing delays due to branches |
| US5581776A (en) * | 1995-02-03 | 1996-12-03 | Nokia Mobile Phones Limited | Branch control system for rom-programmed processor |
| US5664193A (en) * | 1995-11-17 | 1997-09-02 | Sun Microsystems, Inc. | Method and apparatus for automatic selection of the load latency to be used in modulo scheduling in an optimizing compiler |
-
1996
- 1996-08-01 JP JP20367596A patent/JP3745039B2/ja not_active Expired - Fee Related
-
1997
- 1997-01-27 US US08/788,839 patent/US5815698A/en not_active Expired - Lifetime
-
1998
- 1998-07-16 US US09/116,260 patent/US6851045B2/en not_active Expired - Fee Related
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6865666B2 (en) * | 1998-02-09 | 2005-03-08 | Renesas Technology Corp. | Data processing device |
| JP2003508863A (ja) * | 1999-09-07 | 2003-03-04 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 可変命令長処理 |
| JP2010501102A (ja) * | 2006-08-16 | 2010-01-14 | クゥアルコム・インコーポレイテッド | 動的可変遅延に基づいてプロセッサ命令を実行するための方法および装置 |
| JP2007287186A (ja) * | 2007-08-09 | 2007-11-01 | Denso Corp | Risc型cpu,コンパイラ及びマイクロコンピュータ |
| US11768689B2 (en) | 2013-08-08 | 2023-09-26 | Movidius Limited | Apparatus, systems, and methods for low power computational imaging |
Also Published As
| Publication number | Publication date |
|---|---|
| US5815698A (en) | 1998-09-29 |
| US20010013095A1 (en) | 2001-08-09 |
| US6851045B2 (en) | 2005-02-01 |
| JP3745039B2 (ja) | 2006-02-15 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3745039B2 (ja) | 遅延命令を有するマイクロプロセッサ | |
| EP0789297B1 (en) | Data processor loading data and performing multiply-add operation in parallel | |
| JP3881763B2 (ja) | データ処理装置 | |
| US6560697B2 (en) | Data processor having repeat instruction processing using executed instruction number counter | |
| US6016543A (en) | Microprocessor for controlling the conditional execution of instructions | |
| JPH1049368A (ja) | 条件実行命令を有するマイクロプロセッサ | |
| JP2507638B2 (ja) | デ―タ処理装置 | |
| JP2581236B2 (ja) | データ処理装置 | |
| JPH03218523A (ja) | データプロセッサ | |
| JPH0766324B2 (ja) | データ処理装置 | |
| JPH0496825A (ja) | データ・プロセッサ | |
| JPH081602B2 (ja) | データ処理装置 | |
| JPH07120278B2 (ja) | データ処理装置 | |
| US5941984A (en) | Data processing device | |
| JPH07120284B2 (ja) | データ処理装置 | |
| JP2002215387A (ja) | 命令トランスレータを備えたデータ処理装置およびメモリインタフェース装置 | |
| JP2000207210A (ja) | マイクロプロセッサ | |
| US6408380B1 (en) | Execution of an instruction to load two independently selected registers in a single cycle | |
| JPH0769806B2 (ja) | データ処理装置 | |
| JP2522048B2 (ja) | マイクロプロセッサ及びそれを使用したデ―タ処理装置 | |
| JP3547585B2 (ja) | 条件実行命令を有するマイクロプロセッサ | |
| JP3539914B2 (ja) | マイクロコンピュータ | |
| JPH10320197A (ja) | 条件実行命令を備えるマイクロプロセッサ | |
| GB2343973A (en) | Delayed execution of conditional instructions | |
| JPH0769805B2 (ja) | データ処理装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050118 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050318 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050518 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050712 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050727 |
|
| 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: 20051018 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20051116 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20060123 |
|
| A072 | Dismissal of procedure [no reply to invitation to correct request for examination] |
Free format text: JAPANESE INTERMEDIATE CODE: A072 Effective date: 20060606 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081202 Year of fee payment: 3 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091202 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101202 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101202 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: 20101202 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: 20101202 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111202 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121202 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121202 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131202 Year of fee payment: 8 |
|
| 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 |