JPH0844563A - Microprocessor - Google Patents
MicroprocessorInfo
- Publication number
- JPH0844563A JPH0844563A JP6178129A JP17812994A JPH0844563A JP H0844563 A JPH0844563 A JP H0844563A JP 6178129 A JP6178129 A JP 6178129A JP 17812994 A JP17812994 A JP 17812994A JP H0844563 A JPH0844563 A JP H0844563A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- slot
- flag
- cache
- buffer
- 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.)
- Withdrawn
Links
Landscapes
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
【0001】[0001]
【産業上の利用分野】本発明は,マイクロプロセッサに
関する。特に,複数の演算ユニットを有し,1クロック
サイクルに複数の命令を同時に実行できるマイクロプロ
セッサに関する。BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a microprocessor. In particular, the present invention relates to a microprocessor having a plurality of arithmetic units and capable of simultaneously executing a plurality of instructions in one clock cycle.
【0002】パイプラインで複数の命令を同時に実行す
ることにより,命令を一つずつ順次実行する場合と比較
して高速にプログラム処理することができる。パイプラ
イン処理により複数命令を同時に実行するためには,命
令をどの演算器で実行すれば良いかを判定して適切なパ
イプライン(スロット)に命令を転送する必要がある。By simultaneously executing a plurality of instructions in a pipeline, it is possible to perform program processing at a higher speed than in the case where instructions are sequentially executed one by one. In order to execute a plurality of instructions simultaneously by pipeline processing, it is necessary to determine which arithmetic unit should execute the instruction and transfer the instruction to an appropriate pipeline (slot).
【0003】本発明は,パイプラインのどのスロットに
命令を発行するかの判定とスロットへの命令転送を効率
良く行うことのできるマイクロプロセッサを提供する。The present invention provides a microprocessor capable of efficiently determining to which slot of a pipeline an instruction is issued and efficiently transferring the instruction to the slot.
【0004】[0004]
【従来の技術】図8は従来のパイプライン処理をするマ
イクロプロセッサの構成を示す。200はプロセッサで
ある。2. Description of the Related Art FIG. 8 shows the structure of a conventional microprocessor for pipeline processing. 200 is a processor.
【0005】210は入力バッファであって,外部メモ
リから入力される命令を一時保持するものである。21
1は命令キャッシュであって,命令を保持するキャッシ
ュである。An input buffer 210 temporarily holds an instruction input from an external memory. 21
Reference numeral 1 is an instruction cache, which is a cache for holding instructions.
【0006】212はデータキャッシュであって,デー
タを保持するキャッシュである。213は命令バッファ
であって,命令をパイプライン処理のスロット(スロッ
ト0,スロット1)に入力するためのバッファである。Reference numeral 212 is a data cache, which is a cache for holding data. An instruction buffer 213 is a buffer for inputting an instruction into a pipeline processing slot (slot 0, slot 1).
【0007】214はスロット0であって,パイプライ
ン処理するものである。215はスロット1であって,
パイプライン処理するものである。216はレジスタフ
ァイルであって,演算器の入力データ(オペランド),
演算器の演算結果等を一時的に保持する複数のレジスタ
により構成されるものである。Reference numeral 214 denotes slot 0, which is for pipeline processing. 215 is slot 1,
It is for pipeline processing. 216 is a register file, which is input data (operand) of the arithmetic unit,
It is composed of a plurality of registers for temporarily holding the calculation result of the arithmetic unit.
【0008】220,221はデコーダであって,命令
をデコードするものである。230は演算器1であっ
て,スロット0の演算処理をするものである。231は
演算器2であって,スロット0の演算処理をするもので
ある。Denoted at 220 and 221 are decoders for decoding instructions. Reference numeral 230 denotes an arithmetic unit 1 which performs arithmetic processing for slot 0. An arithmetic unit 2 231 performs arithmetic processing of slot 0.
【0009】232は演算器3であって,スロット1の
演算処理をするものである。233は演算器4であっ
て,スロット1の演算処理をするものである。図8の従
来のマイクロプロセッサの構成の動作を説明する。Reference numeral 232 is an arithmetic unit 3 for performing arithmetic processing of slot 1. Numeral 233 is an arithmetic unit 4 for performing arithmetic processing of slot 1. The operation of the configuration of the conventional microprocessor shown in FIG. 8 will be described.
【0010】命令は,命令バッファ213から1サイク
ルに2命令ずつデコーダ220,221に供給される。
命令バッファに命令がある場合は,そこから命令が読み
出され,スロット0,スロット1の各デコーダ220,
221で解釈される。1命令の語長を4バイトとする
と,命令バッファへ213の書き込み,読み出しは8バ
イト単位で行われる。命令キャッシュ211への書き込
み,読み出しの単位も8バイトとする。Instructions are supplied from the instruction buffer 213 to the decoders 220 and 221 every two instructions in one cycle.
If there is an instruction in the instruction buffer, the instruction is read from the instruction buffer, and each decoder 220 in slot 0 and slot 1
221. Assuming that the word length of one instruction is 4 bytes, writing and reading of 213 in the instruction buffer are performed in units of 8 bytes. The unit for writing and reading to the instruction cache 211 is also 8 bytes.
【0011】命令バッファ213に命令がないとき,命
令が命令キャッシュ211から読み出されて命令バッフ
ァ213に書き込まれる(命令フェッチ)。そして,命
令バッファ213の命令はスロット0もしくはスロット
1に入力され,デコーダ220,221で解釈される。
デコードステージでは命令間のデータ依存性,演算器等
の資源の競合がチェックされ,競合がある場合にはそれ
が解消するまで演算の開始を待たせる。デコードされた
命令は,各命令に応じた演算器(演算器1,演算器2,
演算器3,演算器4)で演算される。演算を行うための
入力オペランドはデコードと並行してレジスタファイル
216から読み出される。When there is no instruction in the instruction buffer 213, the instruction is read from the instruction cache 211 and written in the instruction buffer 213 (instruction fetch). Then, the instruction in the instruction buffer 213 is input to slot 0 or slot 1 and interpreted by the decoders 220 and 221.
In the decode stage, data dependency between instructions and competition of resources such as arithmetic units are checked, and if there is competition, the start of calculation is made to wait until it is resolved. The decoded instructions are processed according to each instruction (operation unit 1, operation unit 2,
It is calculated by the arithmetic unit 3 and the arithmetic unit 4). Input operands for performing operations are read from the register file 216 in parallel with decoding.
【0012】命令が命令キャッシュ211に存在しない
場合には,マイクロプロセッサ200の外部メモリから
読み出された命令が命令バッファ213に書き込まれる
とともに,命令キャッシュ211にも書き込まれる。命
令が演算ステージ(演算器1,演算器2,演算器3,演
算器4)に移行した後のフローは命令によって異なる。
演算が算術演算,論理演算の場合は,1サイクルで演算
は終了し,結果は3サイクル後にレジスタファイル21
6に書き込まれる。命令がロード命令の場合は,演算実
行ステージでメモリにアクセスするアドレスを計算し,
次のキャッシュステージでデータキャッシュを読み出
す。次のステージで例外処理(例えば,アクセスを禁止
されているアドレスが求められてはいないかを検出する
等の処理)を行い,次のステージでレジスタの内容を更
新する。When the instruction does not exist in the instruction cache 211, the instruction read from the external memory of the microprocessor 200 is written in the instruction buffer 213 and also in the instruction cache 211. The flow after the instruction moves to the arithmetic stage (the arithmetic unit 1, the arithmetic unit 2, the arithmetic unit 3, the arithmetic unit 4) differs depending on the instruction.
When the operation is an arithmetic operation or a logical operation, the operation ends in one cycle, and the result is the register file 21 after three cycles.
Written in 6. If the instruction is a load instruction, calculate the address to access the memory in the operation execution stage,
The data cache is read in the next cache stage. Exception processing is performed in the next stage (for example, processing for detecting whether an access-prohibited address is not requested, etc.), and the register contents are updated in the next stage.
【0013】図8において,演算器1,演算器2,演算
器3,演算器4はすべて異なる機能の演算を行うものと
する。つまり,同じ種類の演算を2命令同時に実行する
ことはできない。また,スロット0にある命令はスロッ
ト1側の演算器を使用することはできない。同様に,ス
ロット1にある命令はスロット0で使用することはでき
ない。これらはスロット間の配線およびマルチプレクサ
が増加し制御が複雑になることを避けるためである。In FIG. 8, the arithmetic unit 1, the arithmetic unit 2, the arithmetic unit 3, and the arithmetic unit 4 are assumed to perform arithmetic operations of different functions. In other words, the same type of operation cannot be executed simultaneously by two instructions. The instruction in slot 0 cannot use the arithmetic unit on the side of slot 1. Similarly, the instruction in slot 1 cannot be used in slot 0. These are to avoid complicated wiring due to an increase in wirings and multiplexers between slots.
【0014】通常は,命令キャッシュ211からバッフ
ァ213に命令を転送してきた時点では,スロット0に
はフェッチしてきた8バイトの下位側の命令が,スロッ
ト1には上位の命令が入っている。各演算器(230,
231,232,233)に上記のような制限があった
場合には,命令がどの演算器を使用するのかを検出して
適切なスロットが選ばれる必要がある。使用する演算器
と違うスロットに入っている場合には,命令スロットの
入れ替えが必要になる。この入れ替えは命令バッファか
ら命令を読み出し,デコードして演算器に渡されるまで
の間(デコードステージ)に行わなければならない。Normally, when the instruction is transferred from the instruction cache 211 to the buffer 213, the fetched 8-byte lower instruction is contained in the slot 0 and the upper instruction is contained in the slot 1. Each computing unit (230,
231, 232, 233) has the above limitation, it is necessary to detect which arithmetic unit the instruction uses and select an appropriate slot. If it is in a different slot than the one you are using, you will need to replace the instruction slot. This replacement must be performed during the time (decoding stage) until the instructions are read from the instruction buffer, decoded, and passed to the arithmetic unit.
【0015】[0015]
【発明が解決しようとする課題】従来のパイプライン処
理するマイクロプロセッサはデコードステージで命令ス
ロットの入れ替えを行うようにしていた。デコードステ
ージは命令のデコード,依存関係のチェック,レジスタ
ファイル読み出し,命令発行が可能であるか等の判定を
行うのでプロセッサ全体のクリティカルパス(動作遅延
の最も大きいパス)になる可能性の高いステージであ
る。デコードステージで命令がどの演算器を使用するか
を判定し,適切なスロットを選択することはマイクロプ
ロセッサの高速動作をさまたげる大きな要因となる。In the conventional microprocessor for pipeline processing, instruction slots are swapped in the decode stage. Since the decode stage performs instruction decoding, dependency check, register file read, and instruction issue determination, it is a stage that is likely to become a critical path (path with the largest operation delay) of the entire processor. is there. Determining which arithmetic unit an instruction uses in the decode stage and selecting an appropriate slot is a major factor that impedes high-speed operation of the microprocessor.
【0016】本発明は,デコードステージでのスロット
選択を行わないようにして,マイクロプロセッサの高速
化を図ることを目的とする。An object of the present invention is to speed up the microprocessor by not performing slot selection in the decode stage.
【0017】[0017]
【課題を解決するための手段】本発明は,命令キャッシ
ュにチップ外部から命令を格納する際に,命令がどのス
ロットを使用するかを示すフラグを付け,命令キャッシ
ュにそのフラグとともに書き込む。また,外部メモリか
ら読み出した命令を命令バッファに書き込む場合も同様
に,フラグを付け,命令バッファと命令キャッシュに書
き込むようにする。そして,命令バッファへの書き込み
の際に命令キャッシュのフラグを見て適切なスロットを
選択し,命令バッファ内の転送制御はこのスロットフラ
グによって行うことにより,デコードステージでスロッ
ト選択を行わないでもスロットの選択をできるようにし
た。According to the present invention, when an instruction is stored in the instruction cache from the outside of the chip, a flag indicating which slot the instruction uses is attached and the instruction cache is written together with the flag. Similarly, when writing the instruction read from the external memory to the instruction buffer, a flag is added and the instruction buffer and the instruction cache are written. Then, when writing to the instruction buffer, an appropriate slot is selected by looking at the flag of the instruction cache, and transfer control in the instruction buffer is performed by this slot flag. Enabled choice.
【0018】図1は本発明の基本構成を示す。図1は二
つのスロットを備えている場合を例として示す。図1に
おいて,1はマイクロプロセッサである。FIG. 1 shows the basic configuration of the present invention. FIG. 1 shows an example in which two slots are provided. In FIG. 1, 1 is a microprocessor.
【0019】2は命令キャッシュである。3は命令キャ
ッシュのフラグ保持部であって,命令を演算する演算部
(スロット)を識別するためのフラグを保持するもので
ある。Reference numeral 2 is an instruction cache. Reference numeral 3 is a flag holding unit of the instruction cache, which holds a flag for identifying a computing unit (slot) that computes an instruction.
【0020】4はフラグ生成部であって,命令の種類に
応じてフラグを生成するものである。5は命令バッファ
であって,命令キャッシュもしくは外部メモリから読み
出した命令を保持するものである。A flag generator 4 generates a flag according to the type of instruction. An instruction buffer 5 holds an instruction read from an instruction cache or an external memory.
【0021】6は命令保持部選択部であって,命令のフ
ラグを識別して,命令保持部Aもしくは命令保持部Bの
いずれに命令を保持すべきかを判定するものである。7
は命令保持部Aであって,演算部A(スロット0)で処
理される命令を保持するものである。Reference numeral 6 denotes an instruction holding unit selection unit, which identifies the flag of the instruction and determines which of the instruction holding unit A and the instruction holding unit B should hold the instruction. 7
Is an instruction holding unit A for holding an instruction to be processed by the arithmetic unit A (slot 0).
【0022】8は命令保持部Bであって,演算部B(ス
ロット1)の側で処理される命令を保持するものであ
る。9は演算部A(スロット0)であって,命令保持部
Aから入力される命令をデコードし,デコードの結果に
よりレジスタファイル12からオペランドを入力し,演
算し,演算結果をレジスタスタファイル12に転送する
ものである。An instruction holding unit B holds an instruction to be processed on the side of the arithmetic unit B (slot 1). An operation unit A (slot 0) 9 decodes an instruction input from the instruction holding unit A, inputs an operand from the register file 12 according to the decoding result, performs an operation, and outputs the operation result to the register star file 12. It is to be transferred.
【0023】10は演算部B(スロット1)であって,
命令保持部Bから入力される命令をデコードし,デコー
ドした結果によりレジスタファイル12からオペランド
を入力し,演算し,演算結果をレジスタファイル12に
転送するものである。Reference numeral 10 denotes an arithmetic unit B (slot 1),
An instruction input from the instruction holding unit B is decoded, an operand is input from the register file 12 according to the decoded result, an operation is performed, and the operation result is transferred to the register file 12.
【0024】12はレジスタファイルであって,データ
キャッシュ13から入力されるデータもしくは演算部
A,演算部Bの演算結果を保持するものである。13は
データキャッシュであって,データを保持するものであ
る。Reference numeral 12 is a register file, which holds the data input from the data cache 13 or the calculation results of the arithmetic units A and B. A data cache 13 holds data.
【0025】[0025]
【作用】図1の本発明の基本構成の動作を説明する。フ
ラグ生成部4は外部メモリから入力される命令をデコー
ドし,命令の種類を判定する。そして,その命令が演算
部Aで処理すべきものであるか,あるいは演算部Bで処
理すべきものであるかを識別するためのフラグを生成す
る。例えば,演算部Aで処理する命令に対しては
「0」,演算部Bで処理する命令に対しては「1」等で
ある。The operation of the basic configuration of the present invention shown in FIG. 1 will be described. The flag generator 4 decodes the instruction input from the external memory and determines the instruction type. Then, a flag is generated for identifying whether the instruction is to be processed by the arithmetic unit A or the arithmetic unit B. For example, the instruction processed by the arithmetic unit A is "0", the instruction processed by the arithmetic unit B is "1", and the like.
【0026】命令バッファ5に命令キャッシュ2から命
令が読み出されて保持される。もしくは,命令キャッシ
ュ2に命令が無い場合に外部メモリから入力される命令
はフラグ生成部4でフラグを付され命令バッファ5に入
力されるとともに命令キャッシュ2にも保持される。そ
の際,命令保持部選択部6はフラグを識別し,例えば,
フラグが「0」であれば命令バッファ5を選択し,命令
バッファAに命令を保持する。あるいは,フラグが
「1」であれば,命令保持部選択部6は命令保持部Bを
選択し,命令保持部Bに命令を保持する。レジスタファ
イル12はデータキャッシュ13からオペランドとなる
データを取り出して保持する。Instructions are read from the instruction cache 2 and held in the instruction buffer 5. Alternatively, if there is no instruction in the instruction cache 2, the instruction input from the external memory is flagged by the flag generation unit 4 and input to the instruction buffer 5, and is also held in the instruction cache 2. At that time, the instruction holding unit selection unit 6 identifies the flag, and, for example,
If the flag is "0", the instruction buffer 5 is selected and the instruction is held in the instruction buffer A. Alternatively, if the flag is "1", the instruction holding unit selection unit 6 selects the instruction holding unit B and holds the instruction in the instruction holding unit B. The register file 12 takes out the data as an operand from the data cache 13 and holds it.
【0027】演算部Aには命令保持部Aの命令が入力さ
れ,入力された命令をデコードする。そして,演算部A
はレジスタファイル12から必要なオペランドを取り出
し演算し,演算結果をレジスタファイル12に保持させ
る。同様に,演算部Bには命令保持部Bの命令が入力さ
れ,入力された命令をデコードする。そして,演算部B
はレジスタファイル12から必要とするオペランドを取
り出して演算する。そして,演算結果をレジスタファイ
ル12に保持する。レジスタファイル12に保持された
演算結果はデータキャッシュ13に転送され,外部メモ
リに出力される。The instruction of the instruction holding unit A is input to the arithmetic unit A, and the input instruction is decoded. And the arithmetic unit A
Takes the necessary operands from the register file 12 and performs an operation, and stores the operation result in the register file 12. Similarly, the instruction of the instruction holding unit B is input to the arithmetic unit B, and the input instruction is decoded. Then, the calculation unit B
Calculates the necessary operands from the register file 12. Then, the calculation result is held in the register file 12. The calculation result held in the register file 12 is transferred to the data cache 13 and output to the external memory.
【0028】本発明によれば,マイクロプロセッサの処
理速度に大きく影響する演算部A,演算部Bのデコード
ステージでのスロット選択を行わない。そのため,デコ
ードステージで処理が遅延されることがないので,能率
的にパイプライン処理を行うことができ,マイクロプロ
セッサ全体の動作が高速化される。また,命令バッファ
の命令処理もフラグにより簡単に制御できる。According to the present invention, slot selection is not performed in the decode stages of the arithmetic units A and B, which greatly affects the processing speed of the microprocessor. Therefore, since the processing is not delayed in the decoding stage, the pipeline processing can be efficiently performed, and the operation of the entire microprocessor is speeded up. Also, the instruction processing of the instruction buffer can be easily controlled by the flag.
【0029】[0029]
【実施例】図2は本発明の実施例を示す。図2におい
て,51はマイクロプロセッサである。FIG. 2 shows an embodiment of the present invention. In FIG. 2, reference numeral 51 is a microprocessor.
【0030】52は命令キャッシュである。53はスロ
ットを識別するためのフラグである。フラグ「0」でス
ロット0,フラグ「1」でスロット1を識別するとす
る。Reference numeral 52 is an instruction cache. 53 is a flag for identifying a slot. It is assumed that slot 0 is identified by the flag “0” and slot 1 is identified by the flag “1”.
【0031】54はプリデコーダであって,外部メモリ
から命令をデコードしてスロット0もしくはスロット1
のいずれで演算すべき命令であるかを識別し,フラグを
生成するものである(図1のフラグ生成部に相当す
る)。Reference numeral 54 is a predecoder, which decodes an instruction from an external memory to obtain slot 0 or slot 1.
The flag is generated by identifying which of the two is the instruction to be operated (corresponding to the flag generation unit in FIG. 1).
【0032】55は命令バッファである(命令バッファ
55の詳細は図4で説明する)。56は命令保持部選択
部である。57は命令保持部である。Reference numeral 55 is an instruction buffer (details of the instruction buffer 55 will be described with reference to FIG. 4). Reference numeral 56 is an instruction holding unit selection unit. Reference numeral 57 is an instruction holding unit.
【0033】59はスロット0であって,デコーダと演
算器1,演算器2により構成されるものである。60は
スロット1であって,デコーダと演算器3,演算器4に
より構成されるものである。Numeral 59 is a slot 0, which is composed of a decoder, an arithmetic unit 1 and an arithmetic unit 2. A slot 1 is composed of a decoder, an arithmetic unit 3 and an arithmetic unit 4.
【0034】62はレジスタファイルである。63はデ
ータキャッシュである。76は入力バッファ(外部入力
レジスタ)であって,外部メモリから入力される命令を
一時保持するバッファである。Reference numeral 62 is a register file. 63 is a data cache. An input buffer (external input register) 76 is a buffer for temporarily holding an instruction input from an external memory.
【0035】スロット0において,70はデコーダであ
って,スロット0に入力される命令をデコードするもの
である。In slot 0, a decoder 70 decodes an instruction input to slot 0.
【0036】72は演算器1であって,デコーダ70の
デコードした命令の内容に従って,レジスタファイル6
2からオペランドを取り出し演算処理するものである。
73は演算器2であって,デコーダ70のデコードした
命令の内容に従って,レジスタファイル62からオペラ
ンドを取り出し演算処理するものである。Reference numeral 72 denotes an arithmetic unit 1, which registers the register file 6 in accordance with the content of the instruction decoded by the decoder 70.
The operand is taken out from 2 and arithmetic processing is performed.
Reference numeral 73 denotes an arithmetic unit 2 which extracts an operand from the register file 62 and performs arithmetic processing according to the content of the instruction decoded by the decoder 70.
【0037】スロット1において,71はデコーダであ
って,スロット1に入力される命令をデコードするもの
である。In slot 1, reference numeral 71 is a decoder which decodes an instruction input to slot 1.
【0038】74は演算器3であって,デコーダ71の
デコードした命令の内容に従って,レジスタファイル6
2からオペランドを取り出し演算処理するものである。
75は演算器4であって,デコーダ71のデコードした
命令の内容に従って,レジスタファイル62からオペラ
ンドを取り出し演算処理するものである。Reference numeral 74 is an arithmetic unit 3, which registers the register file 6 in accordance with the contents of the instruction decoded by the decoder 71.
The operand is taken out from 2 and arithmetic processing is performed.
Reference numeral 75 denotes an arithmetic unit 4 which extracts an operand from the register file 62 and performs arithmetic processing according to the content of the instruction decoded by the decoder 71.
【0039】80はフラグを付された命令のデータ構造
の例である。命令0はスロット0で処理される命令であ
り,スロット0を識別するフラグを持つ。命令1はスロ
ット1で処理される命令であり,スロット1を識別する
フラグを持つ。Reference numeral 80 is an example of the data structure of a flagged instruction. Instruction 0 is an instruction processed in slot 0 and has a flag for identifying slot 0. The instruction 1 is an instruction processed in the slot 1 and has a flag for identifying the slot 1.
【0040】命令キャッシュ52の1ラインが32バイ
ト長であるとすると8命令分が格納できる。フラグの書
き込みは,外部メモリから命令を取ってきた時に行う。
外部メモリから読み込んだ命令は,命令キャッシュ52
に書き込む前に入力バッファ76(外部入力レジスタ)
に一旦書き込みを行う。フラグの発生はこの入力バッフ
ァ76を読み出してから命令キャッシュ52に書き込む
間にデコーダ54で行われる。命令キャッシュ52に書
き込むデータが必要になるタイミングはサイクルの後半
である。フラグ発生はこれより速く終わるのでプリデコ
ーダ54によるデコードが動作遅延の原因にはならない
(この点については図3で詳述する)。命令キャッシュ
52から命令バッファ55への読み出しは命令フェッチ
ステージで行う。命令フェッチスタージでは命令キャッ
シュ52の読み出しが行われ,命令バッファ55に書き
込まれる。命令バッファ55において,命令フラグを識
別し,命令がスロット0で処理されるべきものである
か,あるいはスロット1で処理されるべきものであるか
を命令保持部選択部56で識別し,スロット0で演算す
べき命令であれば命令保持部57のスロット0側に保持
し,あるいはスロット1で演算すべき命令であればスロ
ット1側に保持する。If one line of the instruction cache 52 has a length of 32 bytes, 8 instructions can be stored. The flag is written when an instruction is fetched from the external memory.
The instruction read from the external memory is stored in the instruction cache 52.
Input buffer 76 (external input register) before writing to
Write once to. The flag is generated by the decoder 54 while the input buffer 76 is read and then written in the instruction cache 52. The timing at which the data to be written in the instruction cache 52 is needed is the latter half of the cycle. Since the flag generation ends faster than this, the decoding by the predecoder 54 does not cause the operation delay (this point will be described in detail in FIG. 3). Reading from the instruction cache 52 to the instruction buffer 55 is performed in the instruction fetch stage. In the instruction fetch stage, the instruction cache 52 is read and written in the instruction buffer 55. In the instruction buffer 55, the instruction flag is identified, and whether the instruction should be processed in the slot 0 or the slot 1 is identified by the instruction holding unit selection unit 56, and the slot 0 If it is an instruction to be operated in step 1, it is held in the slot 0 side of the instruction holding unit 57, or if it is an instruction to be operated in slot 1, it is held in the slot 1 side.
【0041】図3は本発明のフラグ生成のタイムチャー
トである。外部メモリから読み出された命令は一旦,外
部入力レジスタ(入力バッファ76)に保持される。FIG. 3 is a time chart of flag generation of the present invention. The instruction read from the external memory is once held in the external input register (input buffer 76).
【0042】第1サイクルにおいて,まず,第1サイク
ルのクロックの立ち上がりで,入力レジスタ76から命
令が読み出される。そして,チップ内(マイクロプロセ
ッサ51の内部)を転送され,プリデコーダ54でプリ
デコードされ,第1サイクルの後半で,チップ内を転送
されて命令キャッシュ52の入口の命令キャッシュ入力
レジスタ(命令キャッシュ52に命令を入力するために
一時命令を保持するレジスタ(図示せず))に書き込ま
れる。ここで,命令バッファ55にも書き込まれる。In the first cycle, first, an instruction is read from the input register 76 at the rising edge of the clock in the first cycle. Then, it is transferred in the chip (inside the microprocessor 51), predecoded by the predecoder 54, transferred in the chip in the latter half of the first cycle, and transferred to the instruction cache input register (instruction cache 52) at the entrance of the instruction cache 52. Are written to a register (not shown) that holds a temporary instruction for inputting the instruction. Here, it is also written in the instruction buffer 55.
【0043】第2サイクルにおいて,第2サイクルのク
ロックの立ち上がりで,命令キャッシュの入力レジスタ
から命令が読み出され、命令キャッシュ52に書き込ま
れる。In the second cycle, at the rising edge of the clock in the second cycle, the instruction is read from the input register of the instruction cache and written in the instruction cache 52.
【0044】図4は本発明の命令バッファの実施例であ
る。図4において,52は命令キャッシュである。命令
キャッシュには4バイトの命令を8バイト単位に保持さ
れる。8バイト構成のLSW(下位)側の命令(命令
0)とMSW(上位)側の命令(命令1)にそれぞれス
ロットを識別するフラグが備えられる。FIG. 4 shows an embodiment of the instruction buffer of the present invention. In FIG. 4, reference numeral 52 is an instruction cache. The instruction cache holds 4-byte instructions in 8-byte units. The 8-byte LSW (lower) side instruction (instruction 0) and the MSW (upper side) instruction (instruction 1) are respectively provided with flags for identifying slots.
【0045】55は命令バッファであり,命令の保持部
を7個(命令保持部T,P0,P1,F0,F1,D
0,D1)備えるものである。命令は,命令の連続性,
フラグを考慮した選択ルールに従って選択的に命令保持
部に保持される。選択ルールについては後述する。An instruction buffer 55 has seven instruction holding units (instruction holding units T, P0, P1, F0, F1, D).
0, D1). A command is a sequence of commands,
It is selectively held in the instruction holding unit according to a selection rule in consideration of flags. The selection rule will be described later.
【0046】85は命令保持部選択部1であって,命令
キャッシュ52もしくは命令保持部Tから取り出された
命令のフラグを参照し,選択ルールに従って命令保持部
P0もしくはP1を選択するものである。Reference numeral 85 is an instruction holding unit selecting unit 1 which refers to the flag of the instruction fetched from the instruction cache 52 or the instruction holding unit T and selects the instruction holding unit P0 or P1 according to the selection rule.
【0047】86は命令保持部選択部2であって,命令
キャッシュ52,命令保持部P0もしくは命令保持部P
1から取り出された命令のフラグを参照し,選択ルール
に従って命令保持部F0もしくはF1を選択するもので
ある。Reference numeral 86 is an instruction holding unit selection unit 2, which includes the instruction cache 52, the instruction holding unit P0 or the instruction holding unit P.
The instruction holding unit F0 or F1 is selected according to the selection rule by referring to the flag of the instruction fetched from 1.
【0048】87は命令保持部選択部3であって,命令
キャッシュ52,命令保持部F0もしくは命令保持部F
1から取り出された命令のフラグを参照し,選択ルール
に従って命令保持部D0もしくはD1を選択するもので
ある。Reference numeral 87 is an instruction holding unit selection unit 3, which includes the instruction cache 52, the instruction holding unit F0 or the instruction holding unit F.
The instruction holding unit D0 or D1 is selected according to the selection rule by referring to the flag of the instruction fetched from 1.
【0049】90はセレクタ0であって,P0に保持す
る命令を選択するものである。91はセレクタ1であっ
て,P1に保持する命令を選択するものである。92は
セレクタ2であって,F0に保持する命令を選択するも
のである。Reference numeral 90 designates a selector 0 for selecting an instruction held in P0. Reference numeral 91 is a selector 1 for selecting an instruction held in P1. Reference numeral 92 is a selector 2 for selecting an instruction held in F0.
【0050】93はセレクタ3であって,F1に保持す
る命令を選択するものである。94はセレクタ4であっ
て,D0に保持する命令を選択するものである。95は
セレクタ5であって,D1に保持する命令を選択するも
のである。Reference numeral 93 is a selector 3 for selecting an instruction held in F1. Reference numeral 94 is a selector 4 for selecting an instruction held in D0. Reference numeral 95 denotes a selector 5 for selecting an instruction held in D1.
【0051】Tは命令保持部であって,命令キャッシュ
52の命令の上位4バイトの命令を保持するものであ
る。P0は命令保持部であって,セレクタ0(90)で
選択された命令を保持するものである。Reference numeral T denotes an instruction holding unit, which holds the upper 4 bytes of the instruction in the instruction cache 52. P0 is an instruction holding unit, which holds the instruction selected by the selector 0 (90).
【0052】P1は命令保持部であって,セレクタ1
(91)で選択された命令を保持するものである。F0
は命令保持部であって,セレクタ2(92)で選択され
た命令を保持するものである。P1 is an instruction holding unit, which is a selector 1
It holds the instruction selected in (91). F0
Is an instruction holding unit, which holds the instruction selected by the selector 2 (92).
【0053】F1は命令保持部であって,セレクタ3
(93)で選択された命令を保持するものである。D0
は命令保持部であって,セレクタ4(94)で選択され
た命令を保持するものである。F1 is an instruction holding unit, which is a selector 3
It holds the instruction selected in (93). D0
Is an instruction holding unit, which holds the instruction selected by the selector 4 (94).
【0054】D1は命令保持部であって,セレクタ5
(95)で選択された命令を保持するものである。図4
の構成において,セレクタ0(90)には,命令保持部
T,命令キャッシュのLSW(命令0),MSW(命令
1)の内容とフラグが入力され,フラグおよび選択ルー
ルに従って,それらの命令のいずれかを選択する。そし
て,P0に選択した命令0を保持する。同様に,セレク
タ1(91)には,命令保持部T,命令キャッシュ52
の命令のLSW,MSWの内容とフラグが入力され,フ
ラグおよび選択ルールに従って選択されてP1に保持さ
れる。D1 is an instruction holding unit, and the selector 5
It holds the instruction selected in (95). FIG.
In the above configuration, the contents and flags of the instruction holding unit T, the instruction cache LSW (instruction 0), and the MSW (instruction 1) are input to the selector 0 (90), and any of these instructions is selected according to the flag and the selection rule. Or select. Then, the selected instruction 0 is held in P0. Similarly, the selector 1 (91) has an instruction holding unit T and an instruction cache 52.
The contents of the LSW and MSW of the instruction and the flag are input, selected according to the flag and the selection rule, and held in P1.
【0055】また,セレクタ2(92)には,命令保持
部P0,命令キャッシュ52のLSW,MSWの内容と
そのフラグが入力され,フラグと選択ルールに従って,
そのいずれかを選択し,命令保持部F0に保持する。同
様に,セレクタ3(93)には,命令保持部P1,命令
キャッシュ52のLSW,MSWの内容とフラグが入力
され,フラグと選択ルールに従って命令が選択されて命
令保持部F1に保持される。The selector 2 (92) receives the contents of the instruction holding unit P0, the LSW and MSW of the instruction cache 52 and their flags, and according to the flags and the selection rules.
One of them is selected and held in the instruction holding unit F0. Similarly, the selector 3 (93) receives the contents of the instruction holding unit P1 and the LSW and MSW of the instruction cache 52 and the flags, and the instruction is selected and held in the instruction holding unit F1 according to the flag and the selection rule.
【0056】また,セレクタ4(94)には,命令保持
部F0,命令キャッシュ52のLSW,MSWの内容と
フラグが入力され,フラグと選択ルールに従って命令が
選択されて,命令保持部D0に保持される。同様に,セ
レクタ5(95)には,命令保持部F1,命令キャッシ
ュ52のLSW,MSWの内容とフラグが入力され,フ
ラグと選択ルールに従って命令が選択されて命令保持部
D1に保持される。The selector 4 (94) also receives the instruction holding unit F0, the contents of the LSW and MSW of the instruction cache 52 and the flags, selects the instruction according to the flag and the selection rule, and holds it in the instruction holding unit D0. To be done. Similarly, the selector 5 (95) receives the contents of the instruction holding unit F1 and the LSW and MSW of the instruction cache 52 and the flags, selects the instruction according to the flag and the selection rule, and holds it in the instruction holding unit D1.
【0057】D0の内容はスロット0に転送され,D1
の内容はスロット1に転送される。次に図4の構成にお
ける命令の転送ルールについて説明する。図4の構成に
おいて,各選択部は次のルールに従って,命令を選択
し,選択した保持部に転送する。The contents of D0 are transferred to slot 0 and D1
Is transferred to slot 1. Next, the instruction transfer rule in the configuration of FIG. 4 will be described. In the configuration of FIG. 4, each selection unit selects an instruction according to the following rule and transfers it to the selected holding unit.
【0058】(1) キャッシュからの命令の読み出しは2
命令単位で行う。 (2) D0,F0,P0にはスロット0の演算器のグルー
プで実行される命令が入る。(1) Two instructions are read from the cache
Do by instruction. (2) D0, F0, and P0 contain instructions executed by the group of arithmetic units in slot 0.
【0059】(3) D1,F1,P1にはスロット1の演
算器のグループで実行される命令が入る。 (4) 読み出した命令がスロット0で実行する命令とス
ロット1で実行する命令のペアの場合において,(4) −
1 命令バッファが空の時はD0,D1に書き込む。(3) D1, F1 and P1 contain instructions executed by the group of arithmetic units in slot 1. (4) If the read instruction is a pair of an instruction executed in slot 0 and an instruction executed in slot 1, (4)-
1 If the instruction buffer is empty, write to D0 and D1.
【0060】(4) −2 D0,D1に命令が存在してい
る時はF0,F1に書き込む。 (4) −3 D0,D1,F0,F1に命令が存在してい
る時はP0,Tに書き込む。(4) -2 If an instruction exists in D0 and D1, write it in F0 and F1. (4) -3 Write to P0, T when an instruction exists in D0, D1, F0, F1.
【0061】(5) 読み出した命令が両方ともスロット
0で実行する命令の場合,(5) −1 命令バッファが空
の時はD0,F0に書き込む。(5) −2 D0,D1に
命令が存在している時はF0,P0に書き込む。(5) If both the read instructions are instructions to be executed in slot 0, (5) −1 If the instruction buffer is empty, write to D0 and F0. (5) -2 If an instruction exists in D0 and D1, write it in F0 and P0.
【0062】(5) −3 D0,D1,F0,F1に命令
が存在している時はP0,Tに書き込む。 (6) 読み出した命令が両方ともスロット1で実行する
命令の場合,(6) −1 命令バッファが空の時はD1,
F1に書き込む。(5) -3 When an instruction exists in D0, D1, F0, F1, write it in P0, T. (6) If both read instructions are instructions to be executed in slot 1, (6) -1 If the instruction buffer is empty, D1,
Write to F1.
【0063】(6) −2 D0,D1に命令が存在してい
る時はF1,P1に書き込む。(6) −3 D0,D1,
F0,F1に命令が存在している時はP1,Tに書き込
む。(6) -2 When an instruction exists in D0 and D1, write it in F1 and P1. (6) -3 D0, D1,
When an instruction exists in F0 and F1, write it in P1 and T.
【0064】(7) D0,D1から命令が発行される
と,F0,F1,P0,P1,Tに存在する命令はD
0,D1の方向に詰めるようにバッファ内を移動する。 (8) D0,D1に同時に入る命令は連続したアドレス
の命令でなければならない。(7) When an instruction is issued from D0, D1, the instruction existing in F0, F1, P0, P1, T is D
Move in the buffer so that it is packed in the direction of 0, D1. (8) Instructions that enter D0 and D1 at the same time must have consecutive addresses.
【0065】(9) F0,F1に同時に入る命令は連続
したアドレスの命令でなければならない。 (10) P0,P1に同時に入る命令は連続したアドレス
の命令でなければならない。(9) Instructions that enter F0 and F1 at the same time must have consecutive addresses. (10) Instructions that enter P0 and P1 at the same time must have consecutive addresses.
【0066】図4の命令バッファの動作を動作例に基づ
いて説明する(図5,図6,図7を参照する)。図5は
命令キャッシュ52に保持されている命令列の例であ
る。4バイト構成の2命令を1サイクルの処理単位と
し,8バイトの上位4バイトのMSWと下位4バイトの
LSWをそれぞれ1命令とする。それぞれにスロットを
識別するフラグを備えている。フラグ「0」はスロット
0で処理される命令であり,フラグ「1」はスロット
「1」で処理される命令である(add命令はスロット
0で実行され,load命令はスロット1で実行された
ものとする。) 命令キャッシュ52から各クロックサイクル(以下サイ
クルと略称する)毎に2命令もしくは,上位バイト(M
SW)が読み出される。同じサイクルでバッファ(命令
保持部)に書き込まれた命令は,同時に実行できる。バ
ッファに書き込まれるサイクルが異なる場合は,命令の
アドレスが4バイト境界で連続している命令は同時に実
行できる(例えば,上記の命令で,load2とadd
3,add4とload3等)。そうでないもの同士
(例えば,load2とload4等)は同時に実行で
きない。The operation of the instruction buffer of FIG. 4 will be described based on an operation example (see FIGS. 5, 6 and 7). FIG. 5 is an example of an instruction sequence held in the instruction cache 52. Two instructions having a 4-byte structure are used as a processing unit for one cycle, and the MSW of the upper 4-byte of the 8-byte and the LSW of the lower 4-byte are each one instruction. Each has a flag for identifying the slot. Flag "0" is an instruction processed in slot 0, flag "1" is an instruction processed in slot "1" (add instruction executed in slot 0, load instruction executed in slot 1) From the instruction cache 52, two instructions or an upper byte (M) are provided for each clock cycle (hereinafter abbreviated as cycle).
SW) is read. Instructions written in the buffer (instruction holding unit) in the same cycle can be executed simultaneously. If the cycles written to the buffer are different, instructions whose instruction addresses are consecutive on a 4-byte boundary can be executed at the same time (for example, in the above instructions, load2 and add are added).
3, add4 and load3, etc.). Those that are not (for example, load2 and load4) cannot be executed simultaneously.
【0067】図6は動作例1である。サイクル1で命令
キャッシュ52からadd1とload1が読み出さ
れ,セレクタ4(94)とセレクタ5(95)で選択さ
れてD0とD1に書き込まれる。ここで,2命令を実行
する命令が発行される(2命令発行)。FIG. 6 shows an operation example 1. In cycle 1, add1 and load1 are read from the instruction cache 52, selected by the selector 4 (94) and the selector 5 (95), and written in D0 and D1. Here, an instruction for executing two instructions is issued (two instruction issuance).
【0068】サイクル2で,2命令発行に従って,ad
d1とload1がそれぞれD0,D1からスロット
0,スロット1に出力される。そして,新たにload
2とadd2が命令キャッシュ52から読み出され,セ
レクタ4(94),セレクタ5(95)で選択され,そ
れぞれD0,D1に書き込まれる。ここで2命令実行が
発行される。In cycle 2, according to the issuance of two instructions,
d1 and load1 are output from D0 and D1 to slot 0 and slot 1, respectively. And newly load
2 and add2 are read from the instruction cache 52, selected by the selector 4 (94) and the selector 5 (95), and written in D0 and D1, respectively. Two instruction execution is issued here.
【0069】サイクル3で,2命令発行に従って,lo
ad2とadd2がそれぞれスロット0,スロット1に
出力される。そして,新たにadd3とadd4が命令
キャッシュ52から読み出される。両方ともスロット0
の命令であるので,セレクタ4(94),セレクタ2
(92)で選択されてD0,F0に書き込まれる。ここ
で1命令の実行が発行される(1命令発行)。In cycle 3, according to the issuance of two instructions, lo
ad2 and add2 are output to slot 0 and slot 1, respectively. Then, add3 and add4 are newly read from the instruction cache 52. Both slots 0
, The selector 4 (94), the selector 2
It is selected in (92) and written in D0 and F0. Here, execution of one instruction is issued (one instruction issuance).
【0070】サイクル4で,1命令発行に従ってadd
3がD0からスロット0に出力され,セレクタ4(9
4)で選択されてadd4がF0からD0に移動する。
ここで,次の命令load3とload4が命令キャッ
シュ52から読み出される。load3とadd4は境
界が連続している(プログラムカウンタ値が連続してい
る)ので,同時に実行できる。そのため,load3は
セレクタ5(95)で選択されてD1に保持され,lo
ad4はセレクタ3(93)で選択されてF1に保持さ
れる。ここで,2命令実行が発行される。In cycle 4, add is issued according to the issuance of one instruction.
3 is output from D0 to slot 0, and selector 4 (9
Selected in 4), add4 moves from F0 to D0.
Here, the next instructions load3 and load4 are read from the instruction cache 52. Since the boundaries of load3 and add4 are continuous (the program counter values are continuous), they can be executed simultaneously. Therefore, load3 is selected by the selector 5 (95) and held in D1,
ad4 is selected by the selector 3 (93) and held in F1. Here, two instruction execution is issued.
【0071】サイクル5で,2命令発行のためload
3とadd4がそれぞれスロット0,スロット1に出力
される。そして,セレクタ5(95)で選択されてlo
ad4がF1からD1に移動し,新たに命令キャッシュ
52からload5,add5が読み込まれる。そし
て,D1のload4とadd5は同時に実行できない
ので,add5はセレクタ2(92)で選択されてF0
に書き込まれ,load5はセレクタ3(93)で選択
されてF1に書き込まれる。ここで1命令実行が発行さ
れる。In cycle 5, two instructions are issued to load
3 and add4 are output to slot 0 and slot 1, respectively. Then, it is selected by the selector 5 (95) and
ad4 moves from F1 to D1, and loads 5 and 5 are newly read from the instruction cache 52. Since load4 and add5 of D1 cannot be executed at the same time, add5 is selected by the selector 2 (92) and F0 is added.
, And load5 is selected by the selector 3 (93) and written in F1. Here, one instruction execution is issued.
【0072】サイクル6で,1命令発行のためload
4がD1からスロット1に出力され,load5,ad
d5がそれぞれセレクタ5(95),セレクタ4(9
4)で選択されてD1,D0に移動する。新たに,命令
キャッシュ52から,load6,add6が読み出さ
れ,それぞれセレクタ3(93),セレクタ2(92)
で選択されてF1とF0に書き込まれる。ここで,2命
令実行が発行され,次のサイクル(図示せず)でloa
d5とadd5が出力される。In cycle 6, one instruction is issued to load
4 is output from D1 to slot 1, load5, ad
d5 is selector 5 (95) and selector 4 (9
It is selected in 4) and moves to D1 and D0. Load6 and load6 are newly read from the instruction cache 52, and the selector 3 (93) and the selector 2 (92) are respectively read.
Is selected and written in F1 and F0. Here, execution of two instructions is issued and loa is executed in the next cycle (not shown).
d5 and add5 are output.
【0073】図7は動作例2を示す。以下,セレクタの
選択処理についての説明は省略する。サイクル1で命令
キャッシュからadd1とload1が読み出され,D
0,D1に書き込まれる。ここで,0命令発行で,次の
サイクルで2命令とも実行されないとする。FIG. 7 shows an operation example 2. The description of the selector selection process is omitted below. In cycle 1, add1 and load1 are read from the instruction cache, and D
It is written to 0 and D1. Here, it is assumed that 0 instruction is issued and no two instructions are executed in the next cycle.
【0074】サイクル2でadd1とload1はD0
とD1に保持される。そして,次の命令(load2と
add2)が命令キャッシュ52から読み出され,F1
とF0に保持される。0命令発行で,サイクル3でも命
令が実行されないとする。In cycle 2, add1 and load1 are D0
And held at D1. Then, the next instruction (load2 and add2) is read from the instruction cache 52, and F1
And held at F0. It is assumed that 0 instructions are issued and no instructions are executed even in cycle 3.
【0075】サイクル3でadd3とadd4が命令キ
ャッシュ52から読み出され,上位バイトのadd4は
Tに保持され,下位バイトのadd3はP0に保持され
る。サイクル3で2命令発行がなされる。In cycle 3, add3 and add4 are read from the instruction cache 52, the upper byte add4 is held in T, and the lower byte add3 is held in P0. Two instructions are issued in cycle 3.
【0076】サイクル4でload1とadd1がそれ
ぞれD1,D0からスロット1とスロット0に出力され
る。そして,load2とadd2がそれぞれD1,D
0に移動する。add3とadd4はそれぞれF0,P
0に移動する。命令キャッシュ52から,新たにloa
d3とload5が読み込まれる。load3はadd
4と境界が連続しているのでP1に書き込まれ,loa
d4はTに書き込まれる。ここで,2命令発行がなされ
る。In cycle 4, load1 and add1 are output from slot D1 and slot D0 to slot 1 and slot 0, respectively. And load2 and add2 are D1 and D, respectively.
Move to 0. add3 and add4 are F0 and P, respectively
Move to 0. New loa from the instruction cache 52
d3 and load5 are read. load3 is add
Since 4 and the boundary are continuous, it is written in P1, and loa
d4 is written to T. Two commands are issued here.
【0077】サイクル5で,2命令発行に従って,lo
ad2とadd2がそれぞれD1,D0からスロット
1,スロット0に出力される。そして,add3,ad
d4はそれぞれD0,P0に移動する。また,load
3,load4はそれぞれF1,P1に移動する。ここ
で,次の命令load5とadd5を読み出す余地がな
いので,新たに命令は読み出されない。ここで1命令発
行がなされる。In cycle 5, according to the issuance of two instructions, lo
ad2 and add2 are output from D1 and D0 to slot 1 and slot 0, respectively. And add3, ad
d4 moves to D0 and P0, respectively. Also, load
3, load4 moves to F1 and P1, respectively. Here, since there is no room to read the next instructions load5 and add5, no new instruction is read. One command is issued here.
【0078】サイクル6で,1命令発行に従って,ad
d3がD0から出力され,add4がD0に移動する。
そして,load3,load4がそれぞれD1,F1
に移動する。命令キャッシュ52から新たに,load
5とadd5が読み出され,それぞれP1,P0に保持
される。ここて2命令発行がなされる。In cycle 6, according to the issuance of one instruction,
d3 is output from D0, and add4 moves to D0.
Then, load3 and load4 are D1 and F1, respectively.
Go to A new load from the instruction cache 52
5 and add5 are read and held in P1 and P0, respectively. Two commands are issued here.
【0079】サイクル7で,load3とadd4がそ
れぞれD0,D1からスロット1,スロット0に出力さ
れる。そして,load4がD1に移動し,load
5,add5がそれぞれF1,F0に移動する。命令キ
ャッシュ52からload6,add6が読み出され,
それそれP1,P0に保持される。ここで1命令が発行
される。In cycle 7, load3 and add4 are output from D0 and D1 to slot 1 and slot 0, respectively. Then, load4 moves to D1 and loads
5 and add5 move to F1 and F0, respectively. Load6 and add6 are read from the instruction cache 52,
It is held at P1 and P0 respectively. Here, one instruction is issued.
【0080】[0080]
【発明の効果】本発明によれば,マイクロプロセッサの
処理速度に大きく影響する演算部A,演算部Bのデコー
ドステージでのスロット選択を行わない。そのため,デ
コードステージで処理が遅延されることがないので,能
率的にパイプライン処理を行うことができ,マイクロプ
ロセッサ全体の動作が高速化される。また,命令バッフ
ァの命令処理もフラグにより簡単に制御できる。According to the present invention, slot selection is not performed in the decode stages of the arithmetic units A and B, which greatly affects the processing speed of the microprocessor. Therefore, since the processing is not delayed in the decoding stage, the pipeline processing can be efficiently performed, and the operation of the entire microprocessor is speeded up. Also, the instruction processing of the instruction buffer can be easily controlled by the flag.
【図1】本発明の基本構成を示す図である。FIG. 1 is a diagram showing a basic configuration of the present invention.
【図2】本発明の実施例を示す図である。FIG. 2 is a diagram showing an example of the present invention.
【図3】本発明のフラグ生成のタイムチャートを示す図
である。FIG. 3 is a diagram showing a time chart of flag generation of the present invention.
【図4】本発明の命令バッファの実施例を示す図であ
る。FIG. 4 is a diagram showing an embodiment of an instruction buffer of the present invention.
【図5】本発明の命令キャッシュに保持されている命令
の例を示す図である。FIG. 5 is a diagram showing an example of instructions held in an instruction cache of the present invention.
【図6】本発明の動作例1を示す図である。FIG. 6 is a diagram showing an operation example 1 of the present invention.
【図7】本発明の動作例2を示す図である。FIG. 7 is a diagram showing a second operation example of the present invention.
【図8】従来のマイクロプロセッサの構成を示す図であ
る。FIG. 8 is a diagram showing a configuration of a conventional microprocessor.
1:マイクロプロセッサ 2:命令キャッシュ 3:フラグ保持部 4:フラグ生成部 5:命令バッファ 6:命令保持部選択部 7:命令保持部A 8:命令保持部B 9:演算部A 10:演算部B 12:レジスタファイル 13:データキャッシュ 1: Microprocessor 2: Instruction cache 3: Flag holding unit 4: Flag generation unit 5: Instruction buffer 6: Instruction holding unit selection unit 7: Instruction holding unit A 8: Instruction holding unit B 9: Arithmetic unit A 10: Arithmetic unit B 12: Register file 13: Data cache
Claims (1)
ァと命令バッファから命令を入力して演算処理する複数
の演算部とを備え,複数の命令実行を同時にできるマイ
クロプロセッサにおいて,命令は処理される演算部が定
められたものであり,命令バッファは,それぞれの演算
部に対応して命令保持部を備え,命令が使用する演算部
を特定するフラグを生成して命令に付加するフラグ生成
部と,該フラグに応じて命令バッファの該命令保持部を
選択する命令保持部選択部とを備え,命令が処理される
演算部に対応した命令保持部に該命令を保持するように
したことを特徴とするマイクロプロセッサ。1. A microprocessor is provided with an instruction buffer for holding instructions for arithmetic processing and a plurality of arithmetic units for inputting instructions from the instruction buffer and performing arithmetic processing, and the instructions are processed in a microprocessor capable of simultaneously executing a plurality of instructions. The operation unit is defined, the instruction buffer includes an instruction holding unit corresponding to each operation unit, and a flag generation unit that generates a flag specifying the operation unit used by the instruction and adds the flag to the instruction. A command holding unit selecting unit that selects the command holding unit of the command buffer according to the flag, and holds the command in a command holding unit corresponding to an arithmetic unit that processes the command. And a microprocessor.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP6178129A JPH0844563A (en) | 1994-07-29 | 1994-07-29 | Microprocessor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP6178129A JPH0844563A (en) | 1994-07-29 | 1994-07-29 | Microprocessor |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0844563A true JPH0844563A (en) | 1996-02-16 |
Family
ID=16043164
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6178129A Withdrawn JPH0844563A (en) | 1994-07-29 | 1994-07-29 | Microprocessor |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0844563A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112612519A (en) * | 2020-12-11 | 2021-04-06 | 海光信息技术股份有限公司 | Instruction fetching method and device, electronic equipment and storage medium |
-
1994
- 1994-07-29 JP JP6178129A patent/JPH0844563A/en not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112612519A (en) * | 2020-12-11 | 2021-04-06 | 海光信息技术股份有限公司 | Instruction fetching method and device, electronic equipment and storage medium |
CN112612519B (en) * | 2020-12-11 | 2022-06-21 | 成都海光微电子技术有限公司 | Instruction fetching method and device, electronic equipment and storage medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6256726B1 (en) | Data processor for the parallel processing of a plurality of instructions | |
US5404552A (en) | Pipeline risc processing unit with improved efficiency when handling data dependency | |
EP2519874B1 (en) | Branching processing method and system | |
US6269439B1 (en) | Signal processor having pipeline processing that supresses the deterioration of processing efficiency and method of the same | |
JP2918631B2 (en) | decoder | |
US6009509A (en) | Method and system for the temporary designation and utilization of a plurality of physical registers as a stack | |
JP3736866B2 (en) | Micro control unit for super pipeline superscalar microprocessor | |
JP4110137B2 (en) | Method and apparatus for swapping the contents of an address register | |
US5815697A (en) | Circuits, systems, and methods for reducing microprogram memory power for multiway branching | |
JP3490005B2 (en) | Instruction control apparatus and method | |
JPH0844563A (en) | Microprocessor | |
JP3534987B2 (en) | Information processing equipment | |
US7996655B2 (en) | Multiport execution target delay queue FIFO array | |
US7769987B2 (en) | Single hot forward interconnect scheme for delayed execution pipelines | |
JP3915019B2 (en) | VLIW processor, program generation device, and recording medium | |
JP7487535B2 (en) | Processing Unit | |
JP2636821B2 (en) | Parallel processing unit | |
JP2933848B2 (en) | Data processing device | |
JP3147884B2 (en) | Storage device and information processing device | |
JPH06131180A (en) | Instruction processing system and instruction processor | |
JPH07110769A (en) | Vliw type computer | |
JP2591325B2 (en) | Branch control device | |
KR100240590B1 (en) | Apparatus and Methed for decoding instruction in superscalar Microprocessor | |
JP2785820B2 (en) | Parallel processing unit | |
JP2545594B2 (en) | Operand data prefetching method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20011002 |