JP4130654B2 - 拡張可能なプロセッサアーキテクチャ中にアドバンスド命令を追加するための方法および装置 - Google Patents
拡張可能なプロセッサアーキテクチャ中にアドバンスド命令を追加するための方法および装置 Download PDFInfo
- Publication number
- JP4130654B2 JP4130654B2 JP2004505829A JP2004505829A JP4130654B2 JP 4130654 B2 JP4130654 B2 JP 4130654B2 JP 2004505829 A JP2004505829 A JP 2004505829A JP 2004505829 A JP2004505829 A JP 2004505829A JP 4130654 B2 JP4130654 B2 JP 4130654B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- register file
- operand
- register
- operations
- 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 - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 59
- 230000006870 function Effects 0.000 description 35
- 238000010586 diagram Methods 0.000 description 20
- 230000008569 process Effects 0.000 description 15
- 238000007792 addition Methods 0.000 description 9
- 230000014509 gene expression Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 230000002452 interceptive effect Effects 0.000 description 4
- 238000007429 general method Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 102100024348 Beta-adducin Human genes 0.000 description 1
- 101000741396 Chlamydia muridarum (strain MoPn / Nigg) Probable oxidoreductase TC_0900 Proteins 0.000 description 1
- 101000741399 Chlamydia pneumoniae Probable oxidoreductase CPn_0761/CP_1111/CPj0761/CpB0789 Proteins 0.000 description 1
- 101000741400 Chlamydia trachomatis (strain D/UW-3/Cx) Probable oxidoreductase CT_610 Proteins 0.000 description 1
- 102100034004 Gamma-adducin Human genes 0.000 description 1
- 101000689619 Homo sapiens Beta-adducin Proteins 0.000 description 1
- 101000799011 Homo sapiens Gamma-adducin Proteins 0.000 description 1
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 1
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
- G06F9/3897—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
- Acyclic And Carbocyclic Compounds In Medicinal Compositions (AREA)
- Medicinal Preparation (AREA)
- Agricultural Chemicals And Associated Chemicals (AREA)
- Advance Control (AREA)
Description
以下、図面を参照として本発明を詳細に説明する。なお、この図面は、当業者が本発明を実現できるようにするために本発明の例示として与えられたものである。以下の図面および例は、本発明の技術的範囲を制限するものではないことに注意されたい。さらに、本発明のある構成要素が既知のコンポーネントを使用して部分的または完全に構成されることが可能である場合、このような既知のコンポーネントは、本発明を理解するために必要な部分だけが説明され、その他の部分の詳細な説明は本発明を不明瞭なものにしないために省略される。さらに、本発明は、この明細書において例示によって示されている既知のコンポーネントに等価な現在および将来知られるものに等価なものまで包含している。テンシリカ命令拡張子(TIE)言語参照マニュアルはこの開示の一部となっており、この明細書に付録として添付され、ここにおいて参考文献とされている。
length[i-name][i-length]{expression}
によって定義され、ここでi-nameは、その長さを参照するために使用されることのできる特有の識別子であり、i-lengthは命令長をビットで特定し、expressionは、可変的なInstBufにおける命令長を決定する復号化論理を特定するために随意に使用される。1つの構成例において、i-lengthは8ビットの倍数で特定されなければならず、最小桁のニブルだけが表現の中で使用される。
format[name][length]{decoding}
ここで、nameはそのフォーマットに対する特有の識別子であり、lengthは前に定義された長さの名称であり、オプションの復号化はその命令フォーマットに対する復号化論理を特定する表現である。このようなステートメントを含むTIEプログラムが生成されたとき、TIEコンパイラ中のハードウェア論理およびソフトウェアツールの発生機能は共通した方法を共用する。それは、フォーマット復号化フィールド中のmin-termを命令フォーマットコードにマップした各命令長に対するフォーマットテーブルを生成することである。TIEフォーマットステートメントからフォーマットテーブルを発生するプロセスは図8に示されている。たとえば、TIEプログラムが以下のフォーマット定義:
slot[name][format-name[index:index]]
ここで、nameはそのスロットに対する特有の識別子であり、format-nameは前に定義されたフォーマットの名称である。ビット索引はそのフォーマットの有効な索引でなればならず、すなわち、それらはそのフォーマットに対する命令長の範囲内のものでなければならない。スロット名は同じまたは異なったフォーマットで何度でも定義付けられることができるが、全ての定義は同じ数のビットを含んでいる。
assign slot alu={InstBuf[23:4],InstBuf[27:24]};
このHDLは、そのフォーマット名(たとえば、“f64”)を命令バッファ(“InstBuf”)で置換するだけでTIEスロットステートメントから生成される。
slot alu=InstBuf&0xfffff0|(InstBuf>>24)&0xf;
(スロットフィールドを抽出して組合せるためにCでシフトおよびマスク演算のシーケンスを発生することは簡単であり、その方法は容易に明らかになるものである。)
field[name][field-name[index:index] or slot-name[index:index]]
ここで、nameはそのフィールドに対する特有の識別子であり、field-nameおよびslot-nameはそれぞれ前に定義されたフィールドまたはスロットの名称である。ビット索引はフィールドまたはスロットと相対的であり、命令バッファ内において絶対的ではなく、また、そのフィールドまたはスロットの有効な索引でなればならない。
opcod[name][field-name=sized constant]
ここで、nameはその演算コードに対する特有の識別子であり、field-nameは前に定義されたフィールドの名称である。命令拡張子は、ユーザ定義ロードおよび記憶命令の例外を備えたCUST0またはCUST1定義済演算コード名のサブ演算コードとして定義されることが好ましい。
(1)共用される機能に対するあるモジュールを生成し、
(2)共用される機能モジュールに対するあるラッパーモジュールを生成し、
(3)その共用される機能の各入力に対して、
(a)N個の入力を備えたmuxを生成し、ここでNは共用される機能を使用する意味論モジュールの数であり、
(b)muxの出力を共用される機能に供給し、
(4)共用される機能を使用する各意味論モジュールに対して、
(a)共用される機能の各入力に対して1つの出力を生成し、
(b)その共用される機能の出力に対して1つの入力を生成し、
(c)意味論出力を入力としてラッパーモジュールに供給し、
(d)そのラッパーモジュール出力を入力として意味論に供給し、
(5)共用される機能のコーラー(caller)に対する1つの信号をデコーダにおいて生成し、その信号をそのラッパーモジュールに転送し、
(6)ラッパーモジュールにおいて復号化信号を使用して適切な入力を選択する。
図14には、このプロセスを使用して発生された上記の例に対するRTLが示されている。
ステップ1:レジスタファイルをバンクに分割する。ベースレジスタファイルの多くのバンクを構築する。各バンクレジスタファイル中のエントリの数は、ベースレジスタファイル中のエントリの数を最大グループ数で除算することにより得られる。上記の例について、各バンクは8つのエントリを有している。構築すべきバンクの数は、最大グループ数と同じである。上記の例では、2つのバンクが構築されることになる。
-オペランドに対するモジュールを生成する
-オペランドによって使用される命令フィールドに対する入力を生成する
-オペランド意味論によって使用される各状態に対する入力を生成する
-オペランド意味論によって使用される各インターフェース信号に対する入力を生成する
-オペランドに対する出力を生成する
-オペランド意味論によって定義された各状態に対する出力を生成する
-オペランド意味論によって定義された各インターフェース信号に対する出力を生成する
-オペランド意味論によって定義された各例外信号に対する出力を生成する
-オペランド意味論をモジュールにコピーする
たとえば、以下のオペランド記述:
TIEadd:
概要: sum=TIEadd(a,b,cin)
定義: sum=a+b+cin
記述: キャリーイン(carry-in)による加算。TIEaddが3つのアーギュメントを持たず、最後のアーギュメントの計算された幅が1でない場合、それはエラーである。aおよびbの計算された幅が異なっている場合、さらに狭い入力がその計算された幅において評価され、その後0拡張される。
TIEaddn
概要: sum=TIEaddn(A0,A1,・・・,An-1)
定義: sum=A0+A1+・・・+An-1
記述: N数加算。組込みモジュールに対しては少なくとも3つのアーギュメントが存在していなければならない。入力の計算された幅が異なっている場合、さらに狭い入力がそれらの計算された幅において評価され、その後0拡張される。TIEaddn組込みモジュールを使用する利点は、+演算子を使用するだけの場合より、基礎をなすRTLインプリメンテーションのタイミングおよびエリア効率がはるかによくなることである。
TIEcsa
概要: sum={carry,sum}=TIEcsa(a,b,c)
定義: carry=a&b|a&c|b&c
sum=a^b^c
記述: キャリー保存加算器。TIEcsaはちょうど3つのアーギュメントを有していなければならない。入力の計算された幅が異なっている場合、さらに狭い入力がそれらの計算された幅において評価され、その後0拡張される。TIEcasの計算された幅は入力幅の2倍である。その結果の下半分は合計ビットを表し、その上半分はキャリービットを表す。その合計およびキャリーを加算するために、キャリーは1ビットだけ左側にシフトされなければならない。このモジュールは、単一の加算器により後続される一連のcsa減少により得られるいくつかの数の加算または減算を効率的に実施することを可能にするために設けられる。
TIEcmp
概要: {lt,le,eq,ge,gt}=TIEcmp(a,b,signed)
定義: {lt,le,eq,ge,gt}={a<b,a<=b,a==b,a>=b,a>b}
記述: 符号付きおよび符号なし比較。TIEcmpが3つのアーギュメントを持たず、最後のアーギュメントの計算された幅が1でない場合、それはエラーである。aおよびbの計算された幅が異なっている場合、さらに狭い入力がその計算された幅において評価され、その後0拡張される。符号を付けられた入力が真である場合、その比較は符号付データに対するものである。そうでない場合、その比較は符号なしのデータに対するものである。
TIEmac
概要: o=TIEmac(a,b,c,signed,negate)
定義: o=negate?c−a*b:c+a*b
記述: 乗算・累算する。この乗算は、符号付きのものが真である場合に符号を付けられ、そうでない場合は符号を付けられない。乗算の結果は、否定的なもの(negate)が真である場合に累算器cから減算され、そうでない場合に累算器cに加算される。乗算の計算された幅が累算器の幅より狭い場合、乗算の結果は、符号付きのものが真である場合に符号拡張され、そうでない場合は0拡張される。符号付きのものおよび否定的なものの計算された幅は1でなければならない。Xtensaのクロック周波数が減速することを避けるために、TIEmacを使用する命令は少なくとも2つのサイクルを割当てられるべきである。しかしながら、命令スケジュールを注意深く選択することにより、サイクル当り1つのTIEmac演算のスループットを達成することが可能である。
TIEmul
概要: prod=TIEmul(a,b,signed)
定義: prod=a*b
記述: 乗算する。この乗算は、符号付きのものが真である場合に符号を付けられ、そうでない場合は符号を付けられない。符号付きのものの計算された幅は1でなければならない。Xtensaのクロック周波数が減速することを避けるために、TIEmulを使用する命令はいずれも少なくとも2つのサイクルを割当てられるべきである。
TIEmulpp
概要: {p0,p1}=TIEmulpp(a,b,signed,negate)
定義: p0+p1=negate?−a*b:a*b
記述: 部分積乗算をする。このモジュールは、その乗算の2つの部分積を戻す。乗算は、符号付きのものが真である場合に符号を付けられ、そうでない場合は符号を付けられない。2つの部分積の和はその積に等しい。否定的なものが真である場合、その和は積の負数に等しい。定義は、個々の部分積に特定の意味を与えない。符号付きのものおよび否定的なものの計算された幅は1でなければならない。このモジュールは、乗算、加算および減算を含むある代数表現を効率的に実施することを可能にするために設けられる。
TIEmux
概要: o=TIEmux(s,D0,D1,・・・,Dn-1)
定義: o=s==0?D0:s==1?D1:・・・:s==n-2?Dn-2:Dn-1
記述: nウェイマルチプレクサである。このモジュールは、選択信号の値に応じてn個のデータの1つを戻す。データの数nは2の累乗でなければならない。選択信号の幅はlog2(2)でなければならない。
TIEpsel
概要: o=TIEpsel(S0,D0,S1,D1,・・・,Sn-1,Dn-1)
定義: o=S0?D0:S1?D1:・・・:Sn-1?Dn-1:0
記述: nウェイ優先度セレクタである。このモジュールは、選択信号の値および優先度にしたがってn個の入力データの1つを選択する。最初の選択信号は最高の優先度を有し、最後の選択信号は最低の優先度を有している。選択信号のいずれもアクティブでない場合、結果は0である。選択信号の幅は1でなければならない。
TIEsel
概要: o=TIEsel(S0,D0,S1,D1,・・・,Sn-1,Dn-1)
定義: o=S0?D0:S1?D1:・・・:Sn-1?Dn-1:0
記述: nウェイ1-ホットセレクタである。このモジュールは、選択信号の値にしたがってn個の入力データの1つを選択する。選択信号は1-ホットであると期待される。選択信号のいずれもアクティブでない場合、結果は0である。2以上の選択信号がアクティブである場合、結果は規定されていない。選択の幅は1でなければならない。
Claims (12)
- マイクロプロセッサのハードウェア記述を発生させるためのコンピュータにより実現される方法において、
マイクロプロセッサによる単一のVLIW命令の実行中にさまざまな組み合わせで並列に行うことができる複数の演算をコンピュータのユーザが規定できるようにすることと、
ユーザにより規定された第1のVLIW命令の実行中に行われる第1の組の複数の演算をユーザが特定できるようにすることと、
ユーザにより規定された第2のVLIW命令の実行中に行われる第2の組の複数の演算をユーザが特定できるようにすることと、
マイクロプロセッサのハードウェア記述を自動的に発生させることとを含み、
マイクロプロセッサのハードウェア記述を自動的に発生させることは、
複数の演算のそれぞれを並列に行うことができる論理の記述を発生させることと、
複数の演算と、構成可能な特性と、ユーザにより規定された第1および第2のVLIW命令とのユーザ仕様に基づいて、予め規定されたマイクロプロセッサコアによる実行のために予め規定されたセットのコア命令に加えて、マイクロプロセッサにおいて、ユーザにより規定された第1および第2のVLIW命令を実行できる論理の記述を発生させることとをさらに有し、
ユーザにより規定された第1および第2のVLIW命令は、ユーザにより規定された構成可能な特性も有する方法。 - 構成可能な特性は、命令長を含んでいる請求項1記載の方法。
- 構成可能な特性は、命令フォーマットを含んでいる請求項1記載の方法。
- 構成可能な特性は、命令あたりの演算スロットの数を含んでいる請求項1記載の方法。
- 構成可能な特性は、命令フィールドを含んでいる請求項1記載の方法。
- 構成可能な特性は、命令演算コードを含んでいる請求項1記載の方法。
- 構成可能な特性は、命令演算を含んでいる請求項1記載の方法。
- VLIW命令の複数の演算のうちの少なくとも2つは共通信号レジスタファイルを共にアドレスするオペランドを有し、自動的に発生させることは、並列に実行する複数の演算に対するオペランドによる同時アクセスをサポートするために、単一のレジスタファイルに対して複数のレジスタオペランドインターフェースを発生させることを含む請求項1記載の方法。
- 構成可能な特性は、オペランドを単一レジスタファイルの異なるそれぞれのポートと関連付ける情報を含んでいる請求項8記載の方法。
- VLIW命令の複数の演算のうちの第1および第2のものはレジスタファイルをアドレスするオペランドを有し、構成可能な特性はレジスタファイルアクセス幅を含み、自動的に発生させることは、第1の演算が第1のレジスタファイルアクセス幅でレジスタファイルにアクセスできるようにし、かつ第2の演算が第2のレジスタファイルアクセス幅でレジスタファイルにアクセスできるようにするレジスタオペランドインターフェースを発生させることを含み、第1のレジスタファイルアクセス幅と第2のレジスタファイルアクセス幅は異なる請求項1記載の方法。
- VLIW命令の複数の演算のうちの第1および第2のものはレジスタファイルをアドレスするオペランドを有し、構成可能な特性はレジスタファイルをアドレスする単一のオペランドによってアクセスされるレジスタファイルの多数の隣接したエントリを含み、自動的に発生させることは、第1の演算がレジスタファイルの第1の数の隣接エントリにアクセスできるようにし、かつ第2の演算がレジスタファイルの第2の数の隣接エントリにアクセスできるようにするレジスタオペランドインターフェースを発生させることを含み、第1の数と第2の数は異なる請求項1記載の方法。
- VLIW命令の複数の演算のうちの1つは、暗黙レジスタファイルオペランドを使用してレジスタファイルをアドレスし、構成可能な特性は暗黙レジスタファイルオペランド定義を含み、自動的に発生させることは、暗黙レジスタファイルオペランドを明示的に符号化するために少なくとも1つの命令のビットを必要としないように、前記1つの演算をサポートするレジスタオペランドインターフェースを発生させることを含む請求項1記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/146,655 US7346881B2 (en) | 2002-05-13 | 2002-05-13 | Method and apparatus for adding advanced instructions in an extensible processor architecture |
PCT/US2003/011639 WO2003098379A2 (en) | 2002-05-13 | 2003-04-14 | Method and apparatus for adding advanced instructions in an extensible processor architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005525651A JP2005525651A (ja) | 2005-08-25 |
JP4130654B2 true JP4130654B2 (ja) | 2008-08-06 |
Family
ID=29548288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004505829A Expired - Fee Related JP4130654B2 (ja) | 2002-05-13 | 2003-04-14 | 拡張可能なプロセッサアーキテクチャ中にアドバンスド命令を追加するための方法および装置 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7346881B2 (ja) |
JP (1) | JP4130654B2 (ja) |
KR (1) | KR100705507B1 (ja) |
CN (1) | CN1886744B (ja) |
AU (1) | AU2003230932A1 (ja) |
GB (1) | GB2405008A (ja) |
TW (1) | TWI292553B (ja) |
WO (1) | WO2003098379A2 (ja) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8276135B2 (en) * | 2002-11-07 | 2012-09-25 | Qst Holdings Llc | Profiling of software and circuit designs utilizing data operation analyses |
JP2005216177A (ja) * | 2004-01-30 | 2005-08-11 | Toshiba Corp | コンフィグラブル・プロセッサの設計装置、設計方法、ライブラリの最適化方法、プロセッサ、及びプロセッサを備えた半導体装置の製造方法 |
US7231621B1 (en) * | 2004-04-30 | 2007-06-12 | Xilinx, Inc. | Speed verification of an embedded processor in a programmable logic device |
WO2005119439A2 (en) * | 2004-06-01 | 2005-12-15 | The Regents Of The University Of California | Retargetable instruction set simulators |
WO2006116540A2 (en) * | 2005-04-27 | 2006-11-02 | Avici Systems | An application specific reconfigurable network processor |
US7590964B1 (en) | 2005-12-19 | 2009-09-15 | Tensilica, Inc. | Method and system for automatic generation of processor datapaths using instruction set architecture implementing means |
US7757224B2 (en) * | 2006-02-02 | 2010-07-13 | Microsoft Corporation | Software support for dynamically extensible processors |
US9064076B1 (en) * | 2006-03-23 | 2015-06-23 | Synopsys, Inc. | User interface for facilitation of high level generation of processor extensions |
US20070294647A1 (en) * | 2006-06-01 | 2007-12-20 | Via Technologies, Inc. | Transferring software assertions to hardware design language code |
KR100781340B1 (ko) * | 2006-09-18 | 2007-11-30 | 삼성전자주식회사 | 사용자 정의 확장 연산을 처리하는 연산 시스템 및 방법 |
US7529909B2 (en) * | 2006-12-28 | 2009-05-05 | Microsoft Corporation | Security verified reconfiguration of execution datapath in extensible microcomputer |
US7783860B2 (en) * | 2007-07-31 | 2010-08-24 | International Business Machines Corporation | Load misaligned vector with permute and mask insert |
US8250342B1 (en) * | 2008-01-09 | 2012-08-21 | Xilinx, Inc. | Digital signal processing engine |
US8843862B2 (en) * | 2008-12-16 | 2014-09-23 | Synopsys, Inc. | Method and apparatus for creating and changing logic representations in a logic design using arithmetic flexibility of numeric formats for data |
US8549264B2 (en) * | 2009-12-22 | 2013-10-01 | Intel Corporation | Add instructions to add three source operands |
KR101949417B1 (ko) * | 2011-12-02 | 2019-02-20 | 삼성전자주식회사 | 프로세서, 명령어 생성 장치 및 방법 |
CN102520907A (zh) * | 2011-12-13 | 2012-06-27 | 杭州晟元芯片技术有限公司 | 一种软硬件结合加速器及其实现方法 |
US8935468B2 (en) | 2012-12-31 | 2015-01-13 | Cadence Design Systems, Inc. | Audio digital signal processor |
US9921848B2 (en) * | 2014-03-27 | 2018-03-20 | International Business Machines Corporation | Address expansion and contraction in a multithreading computer system |
US10102004B2 (en) | 2014-03-27 | 2018-10-16 | International Business Machines Corporation | Hardware counters to track utilization in a multithreading computer system |
US10795681B2 (en) * | 2014-12-23 | 2020-10-06 | Intel Corporation | Instruction length decoding |
US9652570B1 (en) * | 2015-09-03 | 2017-05-16 | Xilinx, Inc. | Automatic implementation of a customized system-on-chip |
US10282206B1 (en) | 2017-05-16 | 2019-05-07 | Cadence Design Systems, Inc. | Alias register file for supporting mixed width datapath in a configurable processor |
US11169803B2 (en) * | 2018-02-13 | 2021-11-09 | Shanghai Cambricon Information Technology Co., Ltd. | Computing device and method |
EP3617959B1 (en) * | 2018-02-13 | 2021-08-04 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
KR101996842B1 (ko) | 2018-12-26 | 2019-07-08 | (주)자람테크놀로지 | 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 risc-v 기반 연산 장치 및 그 방법 |
CN110210046B (zh) * | 2019-02-20 | 2023-04-07 | 芯易荟(上海)芯片科技有限公司 | 应用程序及专用指令集处理器一体化敏捷设计方法 |
US11513818B1 (en) * | 2020-09-30 | 2022-11-29 | Cadence Design Systems, Inc. | Method, product, and system for integrating a hardware accelerator with an extensible processor |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4236206A (en) | 1978-10-25 | 1980-11-25 | Digital Equipment Corporation | Central processor unit for executing instructions of variable length |
CN1045674C (zh) * | 1992-04-27 | 1999-10-13 | 北京市大兴县多思软件有限公司 | 一种宏指令集的指令体系 |
US5781750A (en) | 1994-01-11 | 1998-07-14 | Exponential Technology, Inc. | Dual-instruction-set architecture CPU with hidden software emulation mode |
US6496922B1 (en) | 1994-10-31 | 2002-12-17 | Sun Microsystems, Inc. | Method and apparatus for multiplatform stateless instruction set architecture (ISA) using ISA tags on-the-fly instruction translation |
US5826071A (en) | 1995-08-31 | 1998-10-20 | Advanced Micro Devices, Inc. | Parallel mask decoder and method for generating said mask |
JP3623840B2 (ja) | 1996-01-31 | 2005-02-23 | 株式会社ルネサステクノロジ | データ処理装置及びマイクロプロセッサ |
JP2869379B2 (ja) | 1996-03-15 | 1999-03-10 | 三菱電機株式会社 | プロセッサ合成システム及びプロセッサ合成方法 |
US5826054A (en) | 1996-05-15 | 1998-10-20 | Philips Electronics North America Corporation | Compressed Instruction format for use in a VLIW processor |
US6058465A (en) | 1996-08-19 | 2000-05-02 | Nguyen; Le Trong | Single-instruction-multiple-data processing in a multimedia signal processor |
JP3767085B2 (ja) | 1996-09-04 | 2006-04-19 | セイコーエプソン株式会社 | 情報処理回路及びマイクロコンピュータ |
US6026478A (en) | 1997-08-01 | 2000-02-15 | Micron Technology, Inc. | Split embedded DRAM processor |
EP0942357A3 (en) | 1998-03-11 | 2000-03-22 | Matsushita Electric Industrial Co., Ltd. | Data processor compatible with a plurality of instruction formats |
US6272512B1 (en) | 1998-10-12 | 2001-08-07 | Intel Corporation | Data manipulation instruction for enhancing value and efficiency of complex arithmetic |
US6366998B1 (en) | 1998-10-14 | 2002-04-02 | Conexant Systems, Inc. | Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model |
KR100874738B1 (ko) | 1999-02-05 | 2008-12-22 | 텐실리카 인코포레이티드 | 구성가능한 프로세서를 설계하기 위한 프로세서 자동 생성시스템 및 방법 |
US6477683B1 (en) * | 1999-02-05 | 2002-11-05 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
JP2000298652A (ja) | 1999-04-14 | 2000-10-24 | Mitsubishi Electric Corp | マルチプロセッサ |
US7036106B1 (en) | 2000-02-17 | 2006-04-25 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
WO2001063434A1 (en) | 2000-02-24 | 2001-08-30 | Bops, Incorporated | Methods and apparatus for dual-use coprocessing/debug interface |
EP1160662A1 (en) | 2000-03-10 | 2001-12-05 | Texas Instruments France | Processor with pointer tracking to eliminate redundant memory fetches |
WO2001073571A1 (en) | 2000-03-27 | 2001-10-04 | Infineon Technologies Ag | Method and apparatus for adding user-defined execution units to a processor using configurable long instruction word (cliw) |
US6658551B1 (en) * | 2000-03-30 | 2003-12-02 | Agere Systems Inc. | Method and apparatus for identifying splittable packets in a multithreaded VLIW processor |
US6922716B2 (en) | 2001-07-13 | 2005-07-26 | Motorola, Inc. | Method and apparatus for vector processing |
-
2002
- 2002-05-13 US US10/146,655 patent/US7346881B2/en active Active
-
2003
- 2003-04-14 AU AU2003230932A patent/AU2003230932A1/en not_active Abandoned
- 2003-04-14 KR KR1020047018327A patent/KR100705507B1/ko not_active IP Right Cessation
- 2003-04-14 JP JP2004505829A patent/JP4130654B2/ja not_active Expired - Fee Related
- 2003-04-14 WO PCT/US2003/011639 patent/WO2003098379A2/en active Application Filing
- 2003-04-14 CN CN038138719A patent/CN1886744B/zh not_active Expired - Lifetime
- 2003-04-14 GB GB0424626A patent/GB2405008A/en not_active Withdrawn
- 2003-04-23 TW TW092109502A patent/TWI292553B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
CN1886744B (zh) | 2010-09-01 |
GB2405008A (en) | 2005-02-16 |
US7346881B2 (en) | 2008-03-18 |
KR100705507B1 (ko) | 2007-04-10 |
TW200306495A (en) | 2003-11-16 |
JP2005525651A (ja) | 2005-08-25 |
WO2003098379A8 (en) | 2004-07-01 |
KR20050010800A (ko) | 2005-01-28 |
TWI292553B (en) | 2008-01-11 |
WO2003098379A2 (en) | 2003-11-27 |
GB0424626D0 (en) | 2004-12-08 |
US20050160402A1 (en) | 2005-07-21 |
AU2003230932A8 (en) | 2003-12-02 |
CN1886744A (zh) | 2006-12-27 |
AU2003230932A1 (en) | 2003-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4130654B2 (ja) | 拡張可能なプロセッサアーキテクチャ中にアドバンスド命令を追加するための方法および装置 | |
US7937559B1 (en) | System and method for generating a configurable processor supporting a user-defined plurality of instruction sizes | |
US11188330B2 (en) | Vector multiply-add instruction | |
US8024553B2 (en) | Data exchange and communication between execution units in a parallel processor | |
US6829696B1 (en) | Data processing system with register store/load utilizing data packing/unpacking | |
JP3983857B2 (ja) | ベクトルレジスタの複数バンクを用いた単一命令複数データ処理 | |
EP1124181B1 (en) | Data processing apparatus | |
JP2008530689A (ja) | 効率的なデジタル信号処理に適用するデータプロセッサとその方法 | |
US7013321B2 (en) | Methods and apparatus for performing parallel integer multiply accumulate operations | |
JP2019511056A (ja) | 複素数乗算命令 | |
US7111155B1 (en) | Digital signal processor computation core with input operand selection from operand bus for dual operations | |
JP4073721B2 (ja) | データ処理装置 | |
EP1188112A2 (en) | Digital signal processor computation core | |
US6728741B2 (en) | Hardware assist for data block diagonal mirror image transformation | |
US7107302B1 (en) | Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units | |
KR19980018065A (ko) | 스칼라/벡터 연산이 조합된 단일 명령 복수 데이터 처리 | |
US6408380B1 (en) | Execution of an instruction to load two independently selected registers in a single cycle | |
KR19980018071A (ko) | 멀티미디어 신호 프로세서의 단일 명령 다중 데이터 처리 | |
US6820189B1 (en) | Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation | |
US6859872B1 (en) | Digital signal processor computation core with pipeline having memory access stages and multiply accumulate stages positioned for efficient operation | |
Salami et al. | A vector-/spl mu/SIMD-VLIW architecture for multimedia applications | |
Paar et al. | A novel predication scheme for a SIMD system-on-chip | |
JP3532026B2 (ja) | 演算装置 | |
Chaji et al. | eUTDSP: a design study of a new VLIW-based DSP architecture | |
Salamı et al. | A Vector-µSIMD-VLIW Architecture for Multimedia Applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050714 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060714 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060725 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061025 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070508 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070905 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20070911 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080311 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080325 |
|
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: 20080422 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080522 |
|
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: 20110530 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110530 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120530 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130530 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |