JP3658879B2 - パイプライン計算機 - Google Patents
パイプライン計算機 Download PDFInfo
- Publication number
- JP3658879B2 JP3658879B2 JP20854296A JP20854296A JP3658879B2 JP 3658879 B2 JP3658879 B2 JP 3658879B2 JP 20854296 A JP20854296 A JP 20854296A JP 20854296 A JP20854296 A JP 20854296A JP 3658879 B2 JP3658879 B2 JP 3658879B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- instruction
- output
- input
- operand
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Landscapes
- Advance Control (AREA)
- Devices For Executing Special Programs (AREA)
Description
【発明の属する技術分野】
本発明はパイプライン計算機に関する。
プロセサの速度を向上させる手法として、RISC(Reduced Instruction Set Computer)アーキテクチャ、パイプライン処理等が用いられる。これらは、命令の単純化、処理単位の細分化により単位処理(パイプラインステージ)の処理時間を短くするものである。従って、処理単位内のクリティカルパスをできるだけ短くすることが要求されている。
【0002】
【従来の技術】
最近のアーキテクチャ(特にRISCアーキテクチャ)では多数の演算用レジスタが用意され、主としてこれらの演算用レジスタ間の演算により処理を進める。レジスタ間演算においては演算器の入力となる2つのレジスタ、出力となる1つのレジスタをそれぞれ指定する3オペランド方式が通常採用される。
【0003】
図4(1)は従来の3オペランド方式の命令フォーマットの例である。命令コード (OPC)11 、入力レジスタ指定フィールド (OR1)12 ,(OR2)13 ,出力レジスタ指定フィールド (OR3)14 他よりなる。処理(演算)回路は、命令コード11で指定された処理(演算)を、入力レジスタ指定フィールド12,13 で指定された2つのレジスタから読み出された内容に対して行い、結果を出力レジスタ指定フィールド14で指定されたレジスタにセットする。
【0004】
図4(2)に示す演算の例により説明する。各レジスタR1,R2,R3,R4に、例えばロード命令の結果または他の演算の結果としてそれぞれ値A,B,C,Dが保持されているとする。ここで図4(2)に示す演算を行うためには、図4(3)に示す命令列を使用する。
【0005】
図5にパイプライン処理の説明図を示す。パイプラインの処理段階は高速化に伴って、細分化が進み、パイプラインの深さが深くなり、レジスタからの読出と書込みの間隔が大きくなっている。ここではパイプライン・ステージ数m=6段、レジスタ読出とレジスタ書込みのステージ段差数n=4としてある。
【0006】
命令はパイプラインの第1ステージS1に投入され、順次ステージを変えて処理される。レジスタ読出はS2で行われ、書込みはS6で行われるものとする。そしてレジスタの読出と書込みに何の関係もなければ図のようにパイプライン中に順次命令が流され、最大速度で処理される。しかし、前の命令によって処理された結果が出力レジスタにセットされる前に後続命令の入力として使われてしまうと正しい処理が行われないことになる。これがレジスタコンフリクトである。図の命令6のオペランド読出が命令1を含む命令以前の出力レジスタを指定している場合は問題が起きないが、命令2〜命令5の出力レジスタと同じであると正しい結果にならない。従って、演算結果がセットされるレジスタを入力として指定する命令の処理は以前の処理結果が確定しセットされるまで待たせるように制御する。図4(3)で命令1(Q1)で出力レジスタとして指定されたR3の値が2つ後の命令3(Q3)で入力として指定され、また命令2(Q2)で出力レジスタとして指定されたR6の値が1つ後の命令3(Q3)で入力として指定されている。従って、レジスタ読出とレジスタ書込みのステージ段差数n>1であればレジスタコンフリクトが発生する。
【0007】
図6にレジスタコンフリクトが発生する場合を示す。(1)は直ぐ後に続く命令Q2が直前の命令Q1で出力レジスタとして使われたレジスタを読み出すようになっている場合である。Q2はS1でQ1のレジスタ書込みが終わるまで待つように制御(ウエイト制御)される。(2)は4命令後の命令Q5が命令Q1で出力レジスタとして使われたレジスタを読み出す場合である。
【0008】
この出力レジスタと入力レジスタの番号比較がレジスタのコンフリクト検出である。レジスタのコンフリクト検出は、パイプラインの深さによって確認すべきレジスタの数が増えてくる。
【0009】
図7にレジスタコンフリクトを検出する回路の例を示す。この場合、レジスタ読出とレジスタ書込みのステージ段差数n=4であるので、レジスタに書き込む命令Q1の書込みレジスタ指定Q1OR3と、後に続くQ2,Q3,Q4の(n−1=3)命令の入力レジスタ指定Q2OR1,Q2OR2〜Q4OR1,Q4OR2とを比較する。一致した場合、C1〜C12のいずれかの信号が出る。それにより、パイプラインのウエイト制御を行う。このウエイト制御については色々な方式があり、本発明の直接的な課題ではないので説明は省略する。
【0010】
図7に示すように、Q1OR3信号は6つの比較回路の入力(出力先が6)となっており、他の信号は4ないし2であるのに対し最も負荷が重い。
【0011】
【発明が解決しようとする課題】
すなわち、演算回路の出力となるレジスタのコンフリクト検出回路への出力数が大きく、負荷が重くなる。特にCMOS回路では、回路の段数の他に負荷の重さ(出力先の数、配線長)が重要なファクタとなり、回路の遅延時間が長くなる。これがクリティカルパスの1つとなり、全体のクロック周期を長くするという問題がある。
【0012】
本発明は、レジスタのコンフリクト検出回路を分散して特定の部分に重い負荷が掛からないようにすることにより、クリティカルパスができないようにすることを目的としている。
【0013】
【課題を解決するための手段】
オペランドを3以上指定できる命令形式のパイプライン計算機において、命令のオペランド指定フィールドのどれが処理結果の出力先であるかを命令内で明示的に指定するように構成する。
【0014】
図1は実施例の命令フォーマットであり、明示的に指定ができる命令フォーマットの例として、3オペランド命令形式を代表として示す。4つ以上のオペランドがある場合でも同様である。(1)各オペランド指定フィールド毎に入力/出力の指定ビットをもつことでもよいし、(2)各オペランド指定フィールドの内どれが出力オペランドであるかを指定することでもよい。
【0015】
このように各オペランドの入力/出力を命令内で個別に指定できれば、レジスタの読み出しステージと書込みステージとのステージ数の差以内で連続する命令で書込みレジスタと同じレジスタから読み出す場合に、プログラム上で図2(3)に示すように、書込みレジスタと読込レジスタとが命令の指定フィールドが同じになるようにすることができる。指定フィールドが同じになるようにするにはコンパイラで処理すればよい。このように構成することにより、出力レジスタとして使われたレジスタのコンフリクト検出回路への信号は負荷が少なくてすむのでディレイ時間が少なくなる。従って、クリティカルパスを少なくすることができ、プロセサのクロック周期を短くすることができる。
【0016】
【発明の実施の形態】
図1は本発明の実施例の命令フォーマットである。(1)は、オペランドのそれぞれが入力であるか、出力となるかを1ビットの入力/出力指定フラグ15a,15b,15c で指定する。(2)は2ビットの出力オペランド指定フィールド15により出力レジスタが3つの内のどれであるかを指定する。以下、図2〜図4を参照して説明する。図2(2)に演算例を示す。これは、図4で説明したものと同じである。図2(3)はそれを書込みレジスタと読込レジスタとが命令の指定フィールドが同じになるようにコンパイラで処理した結果である。
【0017】
命令1はA+Bを演算してレジスタR3にセットする。オペランド1の指定フィールド(OR1)12でR3を指定し、入力/出力の指定ビット15a を‘1’〔出力〕に指定する。命令Q3では同じオペランド1の指定フィールド(OR1)12でR3を指定し、入力/出力の指定ビット15a を‘0’〔入力〕に指定する。同様に、命令2はC+Dを演算してレジスタR6にセットする。命令2で出力、命令3で入力となるレジスタR6はオペランド2の指定フィールド13でR6と指定し、命令2では入力/出力の指定ビット15b を‘1’〔出力〕に指定し、命令Q3では入力/出力の指定ビット15b を‘0’〔入力〕に指定する。
【0018】
図6で説明したように、レジスタの読み出しステージと書込みステージとのステージ段数の差より1少ない命令についての指定信号をレジスタコンフリクト検出に使えばよいので、また、出力レジスタと入力レジスタとは必ず命令のおなじフィールドで指定されるので、レジスタコンフリクト検出回路は図3に示すような回路で実現できる。
【0019】
この図でわかるように、各信号Q1OR1〜Q4OR3はいずれも負荷が3ですんでいる。従来方式の図7ではQ1OR3信号が負荷6であったのと比べると大幅に減少している。
【0020】
【発明の効果】
以上説明したように、本発明によればレジスタコンフリクト検出回路の遅延時間を少なくでき、クリティカルパスを少なくできる。結果としてクロック周期を短くできるので、プロセサの速度を速くすることができる。
【図面の簡単な説明】
【図1】 実施例の命令フォーマット
【図2】 実施例の命令の指定例
【図3】 実施例のレジスタコンフリクト検出回路
【図4】 レジスタ指定の説明図
【図5】 パイプライン処理の説明図
【図6】 同 レジスタコンフリクトが発生する場合
【図7】 従来のレジスタコンフリクト検出回路
【符号の説明】
11 命令コード
12 オペランド指定フィールド1
13 オペランド指定フィールド2
14 オペランド指定フィールド3
15 出力オペランド指定フィールド
15a 15b 15c 入力/出力指定フラグ
Claims (1)
- オペランドを3以上指定でき、命令のオペランド指定フィールドのどれが処理結果の出力先であるかを命令内で明示的に指定する命令形式を有するパイプライン計算機であって、
命令の同一のオペランド指定フィールドで指定されるオペランドレジスタのレジスタ番号同士のみを比較することによって、レジスタコンフリクトを検出するレジスタコンフリクト検出回路を備えたことを特徴とするパイプライン計算機。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP20854296A JP3658879B2 (ja) | 1996-08-07 | 1996-08-07 | パイプライン計算機 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP20854296A JP3658879B2 (ja) | 1996-08-07 | 1996-08-07 | パイプライン計算機 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH1049371A JPH1049371A (ja) | 1998-02-20 |
| JP3658879B2 true JP3658879B2 (ja) | 2005-06-08 |
Family
ID=16557919
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP20854296A Expired - Lifetime JP3658879B2 (ja) | 1996-08-07 | 1996-08-07 | パイプライン計算機 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3658879B2 (ja) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2001034471A (ja) | 1999-07-19 | 2001-02-09 | Mitsubishi Electric Corp | Vliw方式プロセッサ |
-
1996
- 1996-08-07 JP JP20854296A patent/JP3658879B2/ja not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| JPH1049371A (ja) | 1998-02-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2009545823A (ja) | マイクロプロセッサ内の複数のレジスタ部を組み合わせる方法およびシステム | |
| JPS6351287B2 (ja) | ||
| JP2008071130A (ja) | Simd型マイクロプロセッサ | |
| US5577256A (en) | Data driven type information processor including a combined program memory and memory for queuing operand data | |
| US4954947A (en) | Instruction processor for processing branch instruction at high speed | |
| US5274777A (en) | Digital data processor executing a conditional instruction within a single machine cycle | |
| JP2001027945A (ja) | Simd演算を実行するために標準macユニットを利用する浮動小数点ユニット | |
| JP3578883B2 (ja) | データ処理装置 | |
| JPS61160176A (ja) | ベクトル処理装置 | |
| US6078940A (en) | Microprocessor with an instruction for multiply and left shift with saturate | |
| US6055628A (en) | Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks | |
| US20020065860A1 (en) | Data processing apparatus and method for saturating data values | |
| JPH05150979A (ja) | 即値オペランド拡張方式 | |
| JP2993975B2 (ja) | 中央演算処理装置 | |
| JP3658879B2 (ja) | パイプライン計算機 | |
| JP2806346B2 (ja) | 演算処理装置 | |
| JPH034936B2 (ja) | ||
| JP2000207210A (ja) | マイクロプロセッサ | |
| US6112291A (en) | Method and apparatus for performing a shift instruction with saturate by examination of an operand prior to shifting | |
| JP3693556B2 (ja) | 浮動小数点ユニットにおいてロードバイパスを実行する方法及び装置 | |
| KR100278136B1 (ko) | 데이타처리장치 및 데이타처리방법 | |
| JP2557629B2 (ja) | 割込方式 | |
| JP2925842B2 (ja) | パイプライン処理装置 | |
| JPH1196001A (ja) | プログラム実行装置及びプログラム変換方法 | |
| JPS6373335A (ja) | 情報処理装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040709 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041130 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050131 |
|
| 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: 20050222 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050307 |
|
| 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: 20080325 Year of fee payment: 3 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090325 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100325 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100325 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110325 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110325 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120325 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130325 Year of fee payment: 8 |