JP4130654B2 - 拡張可能なプロセッサアーキテクチャ中にアドバンスド命令を追加するための方法および装置 - Google Patents

拡張可能なプロセッサアーキテクチャ中にアドバンスド命令を追加するための方法および装置 Download PDF

Info

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
Application number
JP2004505829A
Other languages
English (en)
Other versions
JP2005525651A (ja
Inventor
ワン、アルバート
キリアン、アール・エー
ゴンザレス、リカルド・イー
ウィルソン、ロバート・ピー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tensilica Inc
Original Assignee
Tensilica Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tensilica Inc filed Critical Tensilica Inc
Publication of JP2005525651A publication Critical patent/JP2005525651A/ja
Application granted granted Critical
Publication of JP4130654B2 publication Critical patent/JP4130654B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent 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/3897Concurrent 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

本発明は、一般に、マイクロプロセッサに関し、とくに、アドバンスド命令拡張子をマイクロプロセッサに追加するための方法および装置に関する。
本出願は、本出願人によって同時に出願され、その権利が所有されており、その内容がこの明細書において参考文献とされている米国特許出願第 10/145,380号および米国特許出願第10/146,651号に関係している。
新しいアプリケーション集中システム・オン・チッププラットホームは新しい特定用途向けプロセッサの動機となっている。構成可能で拡張可能なプロセッサアーキテクチャは、標準的な高レベルプログラミング方法のフレキシビリティを有する同調された論理ソリューションの効率を提供する。プロセッサの自動化された拡張および関連したソフトウェアツール(コンパイラ、デバッガ、シミュレータおよび実時間オペレーティングシステム)により、このような構成可能で拡張可能なプロセッサの使用が実現できる。同時に、ソフトウェアおよび命令セットアーキテクチャのレベルで設計を行うことにより、設計サイクルが著しく短縮されると共に検査の努力およびリスクが軽減される。
米国特許第 6,282,633号明細書(2001年8月28日出願、“High Date Density RISC Processor,”)、米国特許出願第 09/246,047号(1999年2月5日出願、“Automated Processor Generation System for Designing a Configurable Processor and Software,”)、米国特許出願第 09/322,735号(1999年5月28日出願、“System for Adding Complex Instruction Extensions to a Microprocessor,”)、米国特許出願第 09/506,502号(2000年2月17日出願、“Improved Automated Processor Generation System for Designing a Configurable Processor and Software,”)は、マイクロプロセッサアーキテクチャおよび設計を劇的に進歩させた。なお、これらの米国特許および米国特許出願は全て、その権利が本出願によって所有されており、この明細書において参考文献とされている。
とくに、これらの従来の米国特許および米国特許出願には、高性能RISCプロセッサおよびこのような高性能RISCプロセッサのカストマイズされたバージョンをユーザ仕様(たとえば、割込みの数、プロセッサインターフェースの幅、命令/データキャッシュのサイズ、MACまたは乗算器を含むこと)とインプリメンテーション目的とに基づいて発生することのできるシステムが詳細に記載されている。そのシステムは、プロセッサのソフトウェアツール(コンパイラ、リンカ、アセンブラ、デバッガ、シミュレータ、プロファイラ等)と共にそのプロセッサのレジスタ転送レベル(RTL)表現と、このRTL表現を製造可能な幾何学的表現に変換するための合成および配置ならびに経路指定スクリプトとを発生する。システムはさらに、そのアプリケーションにおいて一般に使用される機能に対するハードウェアサポートを提供し、ソフトウェアフレキシビリティとハードウェア性能との間における理想的なトレードオフを達成するプロセッサ拡張を可能にする評価ツールを備えている。
一般に、図1に示されているように、システムによって発生されたプロセッサ102は、実質的には、米国特許第 6,282,633号明細書に記載されているプロセッサである構成可能なコア104と、オプションの特定用途向けプロセッサ拡張子106のセットとを含んでいることができ、その拡張子は、上記に参照されている米国特許出願に詳細に記載されているように、テンシリカ命令拡張(Tensilica Instruction Extension:TIE)言語命令および、または別の高レベルのハードウェア記述言語命令で記述されることができる。上記に参照されている米国特許および米国特許出願のプロセッサおよび発生システムは、カリフォルニア州サンタバーバラのテンシリカ社から販売されている製品に具体化される。
上記のプロセッサおよび発生システムは多くの利点を提供したが、このプロセッサは、単一の計算タスクがたとえどんなに複雑でも、これを行うある1つの命令を限定することによって制限された。同時に行われることのできる計算タスクの数を増加することが、組込まれたシステムの性能をさらに改良する手段である。この目的を達成するために、典型的にVLIWマシンと呼ばれる従来技術のいくつかのマイクロプロセッサ(たとえば、Intel IA−64アーキテクチャ等)が発明され、多数の演算が同時実行のために単一の命令にパックされることを可能にした。このようなマイクロプロセッサにおいて、1つの命令は、それぞれが他のものとは無関係の1組の演算を行うことのできる多数の演算スロットを含んでいる。同時実行は、並列計算の演算を検出してその演算を同時実行のためのVLIW命令にパックするC/C++コンパイラによって、あるいはプログラマがこれらの演算をVLIW命令に手動で分類することによって行われる。しかしながら、これら全ての従来技術のVLIWマシンは固定された命令セットを有するように制限され、特定用途向け拡張子をサポートするように構成されることはできない。
本発明は、アドバンスド命令をマイクロプロセッサに追加するシステムに関する。このシステムは、新しい命令を形式的に捕らえる言語と、拡張されたプロセッサに対するハードウェアインプリメンテーションおよびソフトウェアツールを発生する方法とを含んでいる。拡張言語は、VLIW命令、複合的なロード/記憶命令、機能を使用するもっと強力な記述スタイル、もっと強力なレジスタオペランド、例外を発生する命令、および新しい組込みモジュールセットの追加を行う。その方法は、新しい命令に対する完全にパイプラインされたマイクロアーキテクチャインプリメンテーションを、標準的なCADツールにより処理されることのできる合成可能なHDL記述の形態で発生することができる。この方法はまた、新しい命令を有するマイクロプロセッサ用のソフトウェア開発ツールを拡張するためのソフトウェアコンポーネントを発生することができる。
1つの特徴によると、本発明によるプロセッサ発生システムは、システム設計者が特定用途向けにカストマイズされたVILWマイクロプロセッサを高い性能、低いハードウェアコストおよび低い電力消費を達成するように設計することを可能にすることにより、このプロセッサ発生システムの構成可能で拡張可能な特徴を改良すると共に、固定された命令セットVLIWマシンを改良する。
以下における本発明の特定の実施形態の詳細な説明および添付図面を検討することにより、本発明のこれらおよびその他の特徴が当業者に明らかになるであろう。
以下、図面を参照として本発明を詳細に説明する。なお、この図面は、当業者が本発明を実現できるようにするために本発明の例示として与えられたものである。以下の図面および例は、本発明の技術的範囲を制限するものではないことに注意されたい。さらに、本発明のある構成要素が既知のコンポーネントを使用して部分的または完全に構成されることが可能である場合、このような既知のコンポーネントは、本発明を理解するために必要な部分だけが説明され、その他の部分の詳細な説明は本発明を不明瞭なものにしないために省略される。さらに、本発明は、この明細書において例示によって示されている既知のコンポーネントに等価な現在および将来知られるものに等価なものまで包含している。テンシリカ命令拡張子(TIE)言語参照マニュアルはこの開示の一部となっており、この明細書に付録として添付され、ここにおいて参考文献とされている。
図2は、本発明の命令拡張子にしたがって発生されることができる例示的なプロセッサを示すトップレベルのブロック図である。図2に示されているように、この発生されたプロセッサは、一般に、VLIW命令のようなアドバンスド命令を復号化することのできる命令フェッチチユニット210を含んでいる。そのシステムは、VLIWコプロセッサ208による実行のための新しい命令とTIEデータ路204に対する別のカストマイズされた命令との両者を形式的に捕らえる強化された拡張言語(TIE)を含んでいる。拡張言語はさらに、いくつかの構成可能なロード/記憶ユニット212により使用される複合的なロード/記憶命令、共有機能を206を含むもっと強力な記述スタイル、レジスタファイル214を利用するもっと強力なレジスタオペランド、ランタイム演算中にプロセッサ例外を定義する新しい方法、および新しい組込みモジュールセットを提供する。
本発明は、カストマイズされた高性能プロセッサを発生すると共にこのカストマイズされたプロセッサに対するハードウェア記述およびソフトウェアツールをサポートする基本的なTIE言語およびそのコンパイラならびにその他のツールが示されている前の米国特許明細書および米国特許出願に記載の技術に基づいている。本発明は、付加的なプロセッサハードウェアおよび関連したツールを発生する新しい構造を有するTIE言語にまで拡張されるものであり、この開示には、新しい言語構造がどのようなものなのか、およびTIEコンパイラがこれらの構造をどのようにしてサポートするのかが記載されている。したがって、この明細書においては、前に開示された米国特許および米国特許出願の内容を参考文献とし、本発明の新しい特徴だけを詳細に説明する。しかしながら、要するに、この組合せられた開示は、当業者がその拡張されたプロセッサに対するハードウェアインプリメンテーションおよびソフトウェアツールを発生する方法を実現することを可能にしている。
上述したように、また、図2に示されているように、本発明のある特徴は、VLIWコプロセッサによる実行のためのVLIW命令のようなアドバンスド命令を復号化する能力にある。本発明によって使用可能にされるVLIW命令を利用することのできるコプロセッサの1つの可能な構成は、本出願人の別出願である米国特許出願第10/145,380号(TEN−014)に詳細に示されている。このような構成例において、プロセッサコア202による実行のために16ビットおよび24ビット命令に加えて、VLIW命令が提供される(コア命令を実行する構造は本発明の簡明化のために詳しくは示されていないが、しかし、それは、たとえば、米国特許第 6,282,633明細書に記載された構造により実施されることができる)。
図3のAには、本発明によるVLIW命令302の1例が示されている。この例において、VLIW命令は64ビットである。しかしながら、本発明はこのサイズのVLIW命令に限定されるものではない。命令長は、リトルエンディアン(little-endian)システムに対する命令の最小桁のビットから決定されると都合がよい。図3の例については、命令302の最小桁のニブル(ビット0−3)が命令長を特定する。ビッグエンディアン(big-endian)システムでは、サイズの特定は最大桁ビットにより行われることが好ましい。
本発明の1例によるVLIW命令セットにおいては、演算(op)は、実行ユニットによって行われる計算タスクである。図3に示されているように、本発明のTIEにより定義されるVLIW命令はスロットの特定の組合せを含み、それはこの例では3つである。多数の命令フォーマットが存在している可能性が高いので、ある1つのスロットは複数フォーマットに属していることができる。あるVLIE命令の中のスロットは、独立的に動作するばらばらのパイプラインされた実行ユニットを規定する。それにもかかわらず、ある1つの命令スロットは複数のopを行うことができ、ある1つのopは複数のスロットに属することができる。
さらに図3のBには、どのようにTIEを使用してVLIW命令およびフォーマットを定義したら、カストマイズされたハードウェアがプロセッサ中において生成されるかが示されている。たとえば、VLIWおよびその他の命令のサイズを規定することにより命令フェッチユニット210における長さデコーダ304の構造が決定される。さらに、種々の命令フォーマットの定義により、特定のフォーマットデコーダ306が命令フェッチユニット210中において発生される。最後に、各スロットに対して規定された演算のセットは、VLIWコプロセッサ208中の分離したパイプラインされた実行ユニット308のそれぞれの構造を決定する。
図4には、本発明の1例による規定されたプロセッサ中のVLIW命令に対する演算セットを決定するプロセスが全体的に示されている。図4に示されているように、命令の開始はプログラムカウンタ(PC)によって示される。次の命令の長さ(ビットの数)は、長さ復号化ビット(LD)中の値を観察することによって決定される。本発明の1例においては、LDフィールド中の値14は、現在の命令の長さが64ビットであることを示している。フォーマット復号化ビット(FD)中の値を見ることにより、所定のフォーマットはさらにいくつかのフォーマットに符号化されることができる。1つの構成例において、FDフィールド中の値2はフォーマットf64bを示す。各フォーマットは、1組の演算スロットから構成されている。フォーマットが知られると、スロットが抽出されることができ、そのスロット中のフィールドが抽出されることができ、演算コードが復号化されることができ、オペランドが計算されることができる。これらは、行われるべき演算のセットを識別する基本的なステップである。これらのステップの詳細は後のセクションで説明される。
以下のセクションには、VLIW命令を捕捉して関連したハードウェア記述およびソフトウェアツールを発生する新しいTIE構造が示されている。
VLIE命令拡張子の記述における最初のステップは、それらの長さを特定することである。1つの構成例において、新しい命令長はTIEステートメント:
length[i-name][i-length]{expression}
によって定義され、ここでi-nameは、その長さを参照するために使用されることのできる特有の識別子であり、i-lengthは命令長をビットで特定し、expressionは、可変的なInstBufにおける命令長を決定する復号化論理を特定するために随意に使用される。1つの構成例において、i-lengthは8ビットの倍数で特定されなければならず、最小桁のニブルだけが表現の中で使用される。
命令長の定義がTIEプログラム中に含まれているとき、そのプログラムはTIEコンパイラによって処理される。TIEコンパイラ中のハードウェア論理手段およびソフトウェアツールの発生機能は共通した方法を共用する。この方法によって、長さ復号化フィールド中のmin-termを命令長にマップした長さテーブルが生成される。長さ表現によって参照された命令ビットだけが関連している。このテーブルは、これらのビットの値のあらゆる可能な組合せに対するエントリを含んでいる。これらのビットの値の組合せは論理表現中のmin-termに類似しており、また、それらはTIEコンパイラによってこのようなものとして扱われる。図5には、TIE長さステートメントから長さテーブルを発生する1つの方法が示されている。たとえば、TIEプログラムが以下の長さ表現:
Figure 0004130654
を含んでいる場合、以下の長さテーブルが発生される:
Figure 0004130654
上記の構成された長さテーブルを使用して、ハードウェア復号化論理は図6において説明されるプロセスによって構成されることができる。上記の例を使用すると、この発生されるハードウェアは以下のようなものである:
Figure 0004130654
上記の構成された長さテーブルを使用して、ソフトウェア復号化ルーチンは図7において説明されるプロセスによって構成されることができる。上記の例を使用すると、発生されるソフトウェア復号化ルーチンは以下のようなものである:
Figure 0004130654
上記の例においては、復号化フィールドは4ビット幅に制限されていることに注意しなければならない。これは、効率的なハードウェア復号化論理を生じさせる好ましい実施形態である。しかしながら、一般的な方法は、復号化論理における任意のビット数を許容しており、このような別の実施形態は本発明に含まれる。
さらに、上記の例は、復号化論理表現に制限を課していることに注意しなければならない。再び、これは、効率的な復号化論理に対する好ましい実施形態である。一般的な方法は、復号化論理の任意の仕様を許容している。
VLIW拡張子の追加における別のステップは、このような命令のフォーマットを定義することである。1つの構成例において、新しいVLIW命令のフォーマットは、以下のTIEステートメントを使用して定義されることができる:
format[name][length]{decoding}
ここで、nameはそのフォーマットに対する特有の識別子であり、lengthは前に定義された長さの名称であり、オプションの復号化はその命令フォーマットに対する復号化論理を特定する表現である。このようなステートメントを含むTIEプログラムが生成されたとき、TIEコンパイラ中のハードウェア論理およびソフトウェアツールの発生機能は共通した方法を共用する。それは、フォーマット復号化フィールド中のmin-termを命令フォーマットコードにマップした各命令長に対するフォーマットテーブルを生成することである。TIEフォーマットステートメントからフォーマットテーブルを発生するプロセスは図8に示されている。たとえば、TIEプログラムが以下のフォーマット定義:
Figure 0004130654
を含んでいる場合、長さ164に対して以下のようなフォーマットテ―ブルが生成される:
Figure 0004130654
上記の構成されたフォーマットコードテーブルを使用すると、ハードウェアフォーマット復号化論理は図9において説明されるプロセスによって構成されることができる。上記の例を使用すると、発生されるハードウェアは以下のようなものである:
Figure 0004130654
上記の構成されたフォーマットコードテーブルを使用すると、ソフトウェアフォーマット復号化ルーチンは図10において説明されるプロセスによって構成されることができる。上記の例を使用すると、発生されるソフトウェア復号化ルーチンは以下のようなものである:
Figure 0004130654
VLIW拡張子の追加における別のステップは、演算スロットのフォーマットを定義することである。1つの構成例において、あるVLIW命令に対する新しい演算スロットのフォーマットは、以下のTIEステートメントを使用して定義されることができる:
slot[name][format-name[index:index]]
ここで、nameはそのスロットに対する特有の識別子であり、format-nameは前に定義されたフォーマットの名称である。ビット索引はそのフォーマットの有効な索引でなればならず、すなわち、それらはそのフォーマットに対する命令長の範囲内のものでなければならない。スロット名は同じまたは異なったフォーマットで何度でも定義付けられることができるが、全ての定義は同じ数のビットを含んでいる。
このようなスロットステートメントを含むTIEプログラムが生成されたとき、TIEコンパイラのハードウェア論理およびソフトウェア発生機能は、それらスロットを抽出することのできる論理を発生する。たとえば、TIEプログラムは、以下のステートメントを含んでいることができる:
Figure 0004130654
ハードウェア構成において、ある変数を使用してあるスロットの内容を表現することが便利なことが多い。スロット変数の値は定義から直接得られる。上記の例を使用して、slot aluをaluスロットに対する変数とすると、HDLステートメントは以下のようなものとなる:
assign slot alu={InstBuf[23:4],InstBuf[27:24]};
このHDLは、そのフォーマット名(たとえば、“f64”)を命令バッファ(“InstBuf”)で置換するだけでTIEスロットステートメントから生成される。
ソフトウェアツールにおいては、1つの変数を使用してスロットの内容を表現することもまた有用である。同じ例を使用し、slot aluをaluスロットに対する変数とすると、Cステートメントは以下のようなものになる:
slot alu=InstBuf&0xfffff0|(InstBuf>>24)&0xf;
(スロットフィールドを抽出して組合せるためにCでシフトおよびマスク演算のシーケンスを発生することは簡単であり、その方法は容易に明らかになるものである。)
VLIW拡張子の追加における次のステップは、演算スロットに対するフィールドを定義することである。1構成例において、あるVLIW命令に対する新しい演算スロットのフォーマットは、フィールドを含むことができ、フィールドは異なったスロットにおいて使用されることができる。新しい演算フィールドは以下のTIEステートメントを使用して定義されることができる:
field[name][field-name[index:index] or slot-name[index:index]]
ここで、nameはそのフィールドに対する特有の識別子であり、field-nameおよびslot-nameはそれぞれ前に定義されたフィールドまたはスロットの名称である。ビット索引はフィールドまたはスロットと相対的であり、命令バッファ内において絶対的ではなく、また、そのフィールドまたはスロットの有効な索引でなればならない。
このようなフィールドステートメントを含むTIEプログラムが生成されたとき、TIEコンパイラのハードウェア論理およびソフトウェア発生機能は、それらフィールドを抽出することのできる論理を発生する。とくに、TIEコンパイラは生成された各フィールドに対するスロットセットを決定するであろう。ある1つのフィールドに対するスロットセットは、そのフィールドを含むスロットのセットである。たとえば、TIEプログラムは、以下のステートメントを含んでいることができる:
Figure 0004130654
その後、コンパイラは以下のスロットセットを発生する:
Figure 0004130654
VLIW拡張子の追加における別のステップは、演算コードを定義することである。1構成例において、あるVLIW命令に対する新しい演算コードは、異なったスロットにおいて使用されることができる。新しい演算コードは以下のTIEステートメントを使用して定義されることができる:
opcod[name][field-name=sized constant]
ここで、nameはその演算コードに対する特有の識別子であり、field-nameは前に定義されたフィールドの名称である。命令拡張子は、ユーザ定義ロードおよび記憶命令の例外を備えたCUST0またはCUST1定義済演算コード名のサブ演算コードとして定義されることが好ましい。
このような演算コードステートメントを含むTIEプログラムが生成されたとき、TIEコンパイラのハードウェア論理およびソフトウェア発生機能は、それら演算コードを認識することのできるデコーダ論理を発生する。これの1つの特徴として、TIEコンパイラは生成された各演算コードに対するスロットセットを決定し、ある演算コードに対するスロットセットは、その演算コードを特定するフィールドを含んでいるスロットのセットである。たとえば、TIEプログラムは、以下のステートメントを含んでいることができる:
Figure 0004130654
その後、以下のスロットセットが決定される:
Figure 0004130654
認識できるように、演算コードo1はスロットs1およびs2の両者において定義される。演算コードo2はスロットs1のみにおいて定義される。
演算コードをオペランドと関連付ける命令(演算)クラスは、TIE iクラスステートメントにより定義される。iクラスが定義されたスロットのセットは、iクラスのスロットセットと呼ばれる。あるiクラスは演算コードおよびオペランドにおいて定義されているので、そのiクラスに対するスロットセットは直接は分からない可能性がある。あるiクラスのスロットセットを決定する1つの方法の例は、全ての演算コードに対するスロットセットとオペランドにより使用されたフィールドのスロットセットの共通部分をiクラス定義で決定することである。
各iクラスのスロットセットが与えられた場合、各スロット中の演算コードを識別するための復号化論理を発生する方法は、上述された米国特許出願に記載されている方法と同じである。上述された米国特許出願におけるTIE記述によるように、演算コードに対するiクラス、意味論および参照定義は、その演算コードを含むある1つの命令の振舞い、および、したがって、その演算コードに対して決定されたVLIWスロットセットに対する実行ユニットに関連したハードウェアおよびソフトウェアを決定することとなる。
再び図2を参照とすると、本発明の別の特徴は構成可能ないくつかのロード/記憶ユニットにより動作する能力であり、このことは米国特許出願第10/146,651号(TEN−015)にさらに詳細に説明されている。さらに別の特徴は、強化されたインターフェースをロード/記憶ユニットに提供することである。多数のロード/記憶命令拡張子がある共通した論理を共用することを可能にするために、本発明はTIE言語にある新しい構造を追加する。以下、これらの構造の定義および使用法を説明する。
従来の米国特許および米国特許出願のプロセッサ発生システムを使用すると、ロード命令はメモリからワード全体(多数のバイト)を読出す。このワード中のバイトの一部(subset)を、その残りを読出すことなく読出す方法は存在しなかった。あるメモリマップされた装置について、1つのある値を実効的に読出すことにより、そのデータがその装置から除去される。このような装置について、所望しないデータ(バイト)を読出すことは、極めて望ましくないことであり、その問題について稼動する非常に多くの付加的なハードウェアを必要とする可能性が高い。同様に、従来のシステムにおける記憶命令は常にワード全体をメモリ中に書込む。ワード中のバイトの一部だけを書込むことは不可能であった。本発明は、新しく提供されるロードバイトディスエーブルおよび記憶バイトディスエーブルインターフェース信号を使用することによりロードまたは記憶動作中に読出されるか、あるいは書込まれる個々のバイトを特定する一般的な方法を提供する。
この方式により、バイトディスエーブル論理は、ロード/記憶ユニットにおいて一度構成され、全てのプロセッサコア202命令および全てのユーザ定義TIEデータ路204命令を含む全てのロード/記憶命令の間において共用される。
従来のシステムの別の例示的な限界においては、メモリから読出されたデータは、そのデータが読出される仮想アドレスの下位ビットにしたがって特定の方法で回転される。メモリに書込まれたデータは全く回転されない。ロードまたは記憶命令がある別の方法でデータが回転されることを必要とした場合、付加的な論理手段が使用されなければならない。本発明は、読出しおよび書込みデータに対する回転量を特定し、個々の命令意味論論理中に余分な回転論理を有している必要性をなくし、多くの命令がその回転論理を共用することを可能にするさらに一般的な方法を提供する。
この新しい機能は、回転量インターフェース信号によって与えられる。この方式により、回転論理は、ロード/記憶ユニットにおいて一度実行され、全てのプロセッサコア202命令および全てのユーザ定義TIE命令を含む全てのロード/記憶命令の間において共用される。図12には、共通のロード/記憶ユニットに対する単一の共用される回転量信号を生成するために種々のロード/記憶命令をどのようにして組合せるかが示されている。
別の例として、符号のついた(signed)データを処理する多くのロード命令に対して、メモリから読出されたデータに関して符号拡張を行うことが一般的である。従来のシステムを使用すると、これは命令意味論で行われることができる。しかしながら、符号拡張論理は、典型的に、符号ビットを何回も複製することを必要とし、したがって符号ビットの出力ローディングを増加させ、それを潜在的に意味論論理におけるクリティカルなタイミング路にする。本出願人の別出願の米国特許出願第10/146,651号(TEN−015)には、ロード/記憶ユニット中のクリティカルなタイミング路から演算を除去させることによりこの符号拡張を行う方法が記載されている。本発明は、ユーザ定義命令が命令意味論ではなくロード/記憶ユニットの中で符号拡張論理を使用する方法を提供し、設計における潜在的なタイミング問題を回避する。符号拡張要求を捕捉するために、本発明は2つの新しい信号SignExtendFromおよびSignExtendToをTIE言語に付加する。SignExtendFromは符号ビットを含むバイトの位置を特定し、それは典型的にロードデータの最大桁である。SignExtendToは、符号拡張データ中の最大桁バイトの位置を特定する。たとえば、読出しデータが8’b10001111であり、SignExtendFromは1であり、SignExtendToは2である場合、拡張されたデータは16’b1111111110001111となる。
この新しい機能により、ユーザTIE命令は、ハードウェアを追加せずに符号拡張されたデータをメモリからロードすることができる。以下は、この特徴の使用方法の一例である:
Figure 0004130654
この記述は、“ars+imm8”により特定されたメモリ位置から16ビットデータを読出し、それを32ビットデータに符号拡張し、その符号拡張されたデータを“art”に置く符号拡張されたロード命令を特定する。
ほとんど全てのアプリケーションにおいて、ロード/記憶動作は、ある条件が満足されたときにのみ行われる。多数の命令を使用してその条件付きロード/記憶動作を行うことはしばしば非効率的である。たとえば、以下のコードシーケンス:
Figure 0004130654
は典型的にいくつかの命令:状況の評価、ブランチ、およびロードを生じる。さらに別の非効率性は、典型的なブランチ命令に関連した追加の遅延から生じる。データを条件付きでロードすることのできる単一の命令でこのタスクを計算することが望ましい。しかしながら、従来のシステムにおいては、ロードまたは記憶命令が出された場合、ロードまたは記憶動作を取消す方法が存在せず、条件付きロード/記憶命令を実施することは不可能であった。本発明は、上述されたLoadByteDisableおよびStoreByteDisableインターフェース信号を使用することによりこれを可能にする。LoadByteDisable/StoreByteDisableの定義は、全てのバイトがディスエーブルされた場合には関連したロード/記憶動作が取消されることを指定している。以下の例は、この特徴の使用方法を示している:
Figure 0004130654
この記述は、アドレスが偶数であるときにデータを条件付きでロードするロード命令を実施する。
多数の並列演算が命令によって行われることを可能にすることは、システム性能を増加させるための鍵である。本発明によってサポートされたVLIWアーキテクチャは、上述されたようにある1つの命令の中に多数の演算スロットを提供することによりこれを行う。これによって、いくつかのメモリ動作を同時に行うことが可能になる。本出願人の別出願の米国特許出願第10/146,651号(TEN−015)には、多数のロード/記憶ユニットの実施について記載されている。本発明は、ユーザがロード/記憶命令を特定のロード/記憶ハードウェアユニットと関連付けるTIEの付加的な機能を追加する。さらに、本発明は、どの特定のロード/記憶ユニットからも独立したロード/記憶命令を特定する方法と、および利用可能なハードウェアロード/記憶ユニットにユニット独立演算を自動的にマップする方法を提供する。
ユニット独立メモリインターフェースを使用して特定された任意のロード/記憶演算については必要とされるユニットの総数、すなわち、最大アプリケーション性能のようなある基準を最適化するように、自動手順が使用されて特定のハードウェアロード/記憶ユニットに演算を割当てることができる。図13には1つの好ましい実施形態が示されている。ロード/記憶ユニットにユニット独立ロード/記憶演算を割当てるプロセスは、この命令の同じスロット位置ですでに使用されたロード/記憶ユニットを調べることによってスタートする。各スロット位置はサイクル当り1つの演算しか発生することができないので、このような割当ての結果、リソース(ロード/記憶ユニット)競合は生じない。このようなロード/記憶ユニットが見出されることができない場合、割当てプロセスは、どの場所でも使用されていないロード/記憶ユニットを調べる。第2のステップが失敗したとき、このプロセスはエラーメッセージをユーザに発生する。
再び図2を参照すると、本発明の別の特徴は、共用される機能を定義する能力である。従来技術のプロセッサ発生システムにおいては、TIE命令の意味論は、論理表現による変数の割当ての集まりとして表現される。これは任意の命令意味論を特定するのに十分であったとしても、ある1つの命令グループの中で共通した計算手続きを表現する方法は存在しなかった。一例として、以下は、2つのTIE命令であるLoadおよびStoreの意味論記述である:
Figure 0004130654
“Load”命令は32ビットをメモリからロードし、状態レジスタ“swap”の値に応じてバイトを条件付でスワップする。同様に、“Store”命令は、状態レジスタ“swap”の値に応じてバイトを条件付でスワップする前に32ビットをメモリに記憶する。バイトスワッピング計算は両方の意味論中に存在しているが、しかし2回指定される必要がある。TIE機能構造を使用すると、この記述は、以下のように構造がさらにはっきりし、理解できるものにされることが可能である:
Figure 0004130654
本発明のTIE機能構造は、それが同じ計算を数回並列に行うときに単一の命令意味論を構成するのに非常に有用である。以下の例において、命令addsub4×8は、状態レジスタの値“sub”に応じて2つの8ビット加算または減算を行う:
Figure 0004130654
明らかに、8ビットのaddsubユニットは4回指定される。本発明の新しいTIE機能構造を使用すると、同じ記述は、以下のようにその構造がさらにはっきりし、理解できるものにされることができる:
Figure 0004130654
従来のプロセッサ発生システムは、いくつかの命令意味論に対して共通のハードウェアを共用することを可能にする。しかし、共用を行うために、ユーザは命令の記述を単一の意味論セクションに併合し、共用を手動で指定する必要がある。たとえば、ADD2、ADD3およびADD4を、2、3または4つの数を加算する3つの命令とする。従来技術を使用すると、その記述は次のようなものになる:
Figure 0004130654
本発明の共用される機能構造を使用すると、その命令意味論は以下のように別々に指定されることができる:
Figure 0004130654
ソフトウェアとは異なり、ハードウェア記述言語は、2つの異なったモジュールが1つの論理ブロックを共用する直接的な方法を提供しない。本発明は、TIEコンパイラが多数の意味論モジュールがある1つの機能を共用するためのRTLインプリメンテーションを自動的に発生するプロセスを提供する。このプロセスは、以下のステップを伴なう:
(1)共用される機能に対するあるモジュールを生成し、
(2)共用される機能モジュールに対するあるラッパーモジュールを生成し、
(3)その共用される機能の各入力に対して、
(a)N個の入力を備えたmuxを生成し、ここでNは共用される機能を使用する意味論モジュールの数であり、
(b)muxの出力を共用される機能に供給し、
(4)共用される機能を使用する各意味論モジュールに対して、
(a)共用される機能の各入力に対して1つの出力を生成し、
(b)その共用される機能の出力に対して1つの入力を生成し、
(c)意味論出力を入力としてラッパーモジュールに供給し、
(d)そのラッパーモジュール出力を入力として意味論に供給し、
(5)共用される機能のコーラー(caller)に対する1つの信号をデコーダにおいて生成し、その信号をそのラッパーモジュールに転送し、
(6)ラッパーモジュールにおいて復号化信号を使用して適切な入力を選択する。
図14には、このプロセスを使用して発生された上記の例に対するRTLが示されている。
本発明において共用される機能は、ハードウェア計算ユニットを数回使用する命令(したがって、対話式命令と呼ばれる)を記述する能力を備えたTIEを提供する。これは、従来の発生システムでは不可能であった。この特徴では、計算ハードウェアは何回も繰返される必要があり、その結果余分なハードウェアコストを要した。たとえば、従来のシステムを使用して、2つの16ビット乗算を行うある命令を実施することが所望された場合、これを行う唯一の方法は、以下の記述で示されているように、2つの16ビット乗算器を使用することである:
Figure 0004130654
本発明のTIE共用機能構造を使用すると、この命令は以下を使用して記述されることができる:
Figure 0004130654
この記述により、16ビット乗算器はハードウェアにおいて一回だけ構成され、命令MUL2の単一の実行中に2回使用される。単一の対話式命令で共用される機能を数回使用するRTLインプリメンテーションは、1つの共用される機能を複数の異なった命令で使用することに非常によく似ている。図15は、上記の例に対するRTL構造を示している。対話式命令は1つの共用機能を多数のサイクルで使用するので、論理を発生する命令は、共用機能の使用によって課されるリソース制約を理解していることが重要である。とくに、プロセッサは、このようなリソースコンフリクトが検出されたときは常にその機能を停止される必要がある。前の例を使用すると、プログラムがバック・ツー・バックMUL2命令を有している場合、第2のものはその機能を1サイクル中停止されなければならない。機能停止を行わなければ、プロセッサは、ステージ2における第1のMUL2およびステージ1における第2のMUL2が共用機能mul16の同時的な使用を共に試みるのを見ていることになる。やがて生じるリソース競合をプロセッサに知らせるために、共用機能はそれぞれ、現在の命令が機能停止される必要があるか否かをプロセッサ制御に知らせる機能停止信号を発生する。機能停止論理は任意の数の方法で実施されることができる。1実施形態において、共用された機能RTLは、使用リクエストを入力とみなすインターフェースを提供し、そのリクエストが承諾されることができるか否か(すなわち、機能停止信号が真であるときはイエス)をプロセッサ制御装置に知らせる。内部では、それは、前に受取られ、終了されていないリクエストの全てを保持し、任意の新しいリクエストと比較するためにそれらを使用する。図16は、種々の命令により4つの異なったサイクルで使用されるある共用機能に対する機能停止論理を示している。
図2を参照として上述したように、本発明の別の特徴は、レジスタファイルをさらに効率的でフレキシブルに使用できることである。命令のレジスタオペランドは、そのレジスタファイル中のどのレジスタが計算の入力または出力として使用されるべきかを特定する。従来のプロセッサ発生システムにおいては、レジスタオペランドを指定する方法は1つしかなかった。すなわち、命令のレジスタオペランドフィールド中の実際のレジスタ数を符号化することだけであった。たとえば、以下は、従来技術を使用するあるレジスタオペランドに対するTIE記述である:
Figure 0004130654
このレジスタオペランドの定義は、ARレジスタファイル中の実際のレジスタ数が命令フィールド“t”中に記憶された値であることを指定している。本発明は、レジスタオペランドを指定するはるかに一般的な方法を提供する。
命令によって行われる計算の量を増加させる重要な特徴は、入力および出力データの数を増加させることである。しかしながら、1つの命令の中のビット数は限られているため、命令により使用されることのできるレジスタオペランドの数には限界がある。本発明は、単一のレジスタオペランドがそのレジスタファイル内の多数の隣接したレジスタを指定する方法を提供する。この新しい能力は、強化されたレジスタファイルおよびレジスタオペランド記述に基づいている。1つの記述例は以下のようなものである:
Figure 0004130654
TIEコードのこの例は、レジスタファイルINT8が32の8ビット整数を保持することを宣言する。エントリが2つごとにグループ化されたとき、そのレジスタファイルは8つの16ビット整数を保持するために使用されることができる。エントリが4つごとにグループ化されたとき、そのレジスタファイルは4つの32ビット整数を保持するために使用されることができる。図17には、このレジスタファイルが複数の使用法と共に示されている。
命令の計算効率を増加させるためにこの新しい能力を使用する2つの方法がある。第1の方法は、もっと多くのデータを命令意味論(計算論理)に、およびこれから転送する方法としていくつかの隣接したレジスタをグループ化することである。これは、以下の例により示される:
Figure 0004130654
“regfile”ステートメントは、それぞれが32ビット長である16のエントリのベースレジスタを規定する。64ビット長のレジスタは8つのエントリしか有しないので、それは3ビットフィールドrd、sdおよびtdを使用してアクセスされる。同様に、4エントリ128ビット長のレジスタファイルは2ビットフィールドrq、sqおよびtqを使用してアクセスされる。この記述能力により、2および4つの加算をそれぞれ行うさらに効率的な命令ADDDおよびADDQを規定することが可能になる。
広いレジスタファイルを使用する第2の方法は、広いデータを表現するために多くのレジスタエントリを使用することである。たとえば、単一の高精度浮動小数点レジスタファイルはまた、半分の数のエントリを備えた二重精度レジスタファイルとみなすことができる。
別の例として、以下のように広いレジスタオペランドをデカルトポイントデータタイプとして使用することを検討する:
Figure 0004130654
この例は、32ビット16エントリのベースレジスタファイル“SCALAR”と、ある広いレジスタにベースレジスタを2つごとにグループ化する“POINT”ビューを定義している。その後、それは、そのポイントデータタイプを宣言するためにそれがアプリケーションコードで使用されることができるようにcタイプ“ポイント”を宣言する。広いレジスタファイル“POINT”は半分の数(8)のレジスタしか有していないので、あるレジスタをアドレスするのに3ビット、したがって、フィールド“sc”、“rc”および“tc”の定義があればよい。広いオペランド“cs”、“cr”および“cr”は、広いレジスタファイル“POINT”にアクセスするためにフィールド“sc”、“rc”および“tc”を使用して定義される。最後に、デカルトポイント加算命令“CADD”が定義される。この記述により、次のようにアプリケーションコードを書くことが可能になる:
Figure 0004130654
多くのグループを備えたレジスタファイルを構成する多数の方法が存在する。好ましい方法は、それを階層的に構築することであり、以下に概説する:
ステップ1:レジスタファイルをバンクに分割する。ベースレジスタファイルの多くのバンクを構築する。各バンクレジスタファイル中のエントリの数は、ベースレジスタファイル中のエントリの数を最大グループ数で除算することにより得られる。上記の例について、各バンクは8つのエントリを有している。構築すべきバンクの数は、最大グループ数と同じである。上記の例では、2つのバンクが構築されることになる。
ステップ2:読出しポートを構築する。読出しポートの幅は、ベースレジスタファイル幅を最大グループ数と乗算することにより決定される。上記の例については、幅は64である。読出しポートは、読出しデータを読出しアドレスの下位ビットにしたがって種々のバンクから選択するmuxによって駆動される。上記の例では、読出しポートの最小桁の32ビットは、読出しアドレスの最小桁ビットが0である場合にバンク0から選択され、その最小桁ビットが1である場合にはバンク1から選択される。
ステップ3:書込みポートを構築する。レジスタファイルは、各グループ幅に対して1つの書込みデータポートを有している。各バンクへの書込みデータは、現在の書込みグループ数に応じて適切な書込みデータから選択される。上記の例に対しては、バンク0への書込みデータは、その書込みグループ数が1である場合には単一幅書込みデータであり、書込みグループ数が2である場合には2倍の書込みデータの下位の32ビットである。
ステップ4:機能停止論理を構築する。レジスタファイルの機能停止論理は、各バンクからの機能停止信号の論理的オアに過ぎない。付録Aとして付されたコードは、上記の例に対するRTLインプリメンテーションを示している。付録Bとして付されたコードは、上記の手続きのインプリメンテーションをperlで示している。
RTLインプリメンテーションにおいて、各入力/出力レジスタオペランドは、対応したレジスタファイルの読出し/書込みポートにマップされる。従来のシステムにおいては、このマッピングはTIEコンパイラによって自動的に行われた。マッピング手続きの結果を無効にする方法は存在しなかった。レジスタファイルの読出しおよび書込みポートの数はそのインプリメンテーションのシリコンの面積およびクロック速度の両者に影響を与えるため、この設計のあるアスペクトの最適化を試みるとき、オペランド対レジスタファイルポート結合をTIE記述で手動により指定できることが望ましい。本発明はこの新しい能力をTIEに追加する。
多数のレジスタオペランドが単一の物理的レジスタファイルポート(読出しまたは書込み)にマップされると、付加的なmux化論理がその読出しまたは書込みアドレスを発生するために必要になる。muxへのデータ入力はそのポートに割当てられた各オペランドに由来する。muxへの選択信号はデコーダによって発生される。図18は、その論理の回路構造を示している。
オペランド定義において、オペランド意味論は、命令フィールド中に記憶されている値から実際のレジスタ数を計算する論理である。従来のシステムにおいては、レジスタオペランド意味論は、簡単な恒等関数でなければならない。すなわち、レジスタ数は命令フィールド中にじかに存在していなければならない。簡単であるという利点がこれにあっても、それは時として非常に制限的である。本発明はTIE言語を拡張して、任意のオペランド意味論記述を許容する。“オペランド”言語構造がオペランド意味論を捕らえるために使用される。
Figure 0004130654
operand-nameは定義されるべきオペランドの名称である。field-nameは、オペランド意味論論理への入力として使用される前に定義されたフィールドの名称である。regfile-nameは、このオペランドが関連付けられた前に定義されたレジスタファイルの名称である。computationはオペランド意味論に対する任意の論理記述である。field-nameはそのcomputationの中で入力として使用されなければならない。さらに、このcomputationはまた別のプロセッサ状態および定数を使用することができる。computationは、結局、ある値をoperand-nameに割当てる。さらに、それは値を別のプロセッサ状態に割当てることができる。
たとえば、レジスタファイル中のレジスタの一部にアクセスするためのあるオペランドを定義することを検討する。命令の中に限られた数のビットが与えられている場合、そのレジスタの一部だけがアクセスされる必要があるとき、時として、あるレジスタオペランド専用のビットの数を減少することが望ましい。これは、以下のTIE記述において示されている:
Figure 0004130654
この例においてレジスタファイルXRは多くの異なる方法でアクセスされることができる。“xeven”は任意の偶数レジスタにアクセスするために使用されることができる。“xhigh”はレジスタファイルの上半分にアクセスするために使用されることができる。“xfirst”は第1の2つのレジスタの一方にアクセスするために使用されることができる。“xbanked”は、状態BANKにより指定されたXRレジスタの4つのバンクの任意の1つにおけるレジスタにアクセスするために使用されることができる。“xtracked”は16のレジスタの任意の1つにアクセスすることができるが、しかしそれが状態COUNTで使用される回数を保存する別の作用を有する。一般的なレジスタオペランドに対するハードウェアを構成するプロセスを以下に概説する:
-オペランドに対するモジュールを生成する
-オペランドによって使用される命令フィールドに対する入力を生成する
-オペランド意味論によって使用される各状態に対する入力を生成する
-オペランド意味論によって使用される各インターフェース信号に対する入力を生成する
-オペランドに対する出力を生成する
-オペランド意味論によって定義された各状態に対する出力を生成する
-オペランド意味論によって定義された各インターフェース信号に対する出力を生成する
-オペランド意味論によって定義された各例外信号に対する出力を生成する
-オペランド意味論をモジュールにコピーする

たとえば、以下のオペランド記述:
Figure 0004130654
の結果、
Figure 0004130654
を有するverilogモジュールが生じる。
従来のプロセッサ発生システムにおいて、レジスタオペランドは命令フィールドの機能として定義されなければならない。本発明は、レジスタオペランドの定義が全ての命令フィールドから独立することを可能にする。命令フィールドに依存しないオペランドは、“暗黙”オペランドと呼ばれる。本発明は、この暗黙オペランドを捕らえるために以下の構造をTIE言語に追加する。
Figure 0004130654
ここで、operand-nameは定義されるべきオペランドの特有の名称である。regfile-nameは、このオペランドが関連付けられた前に定義されたレジスタファイルである。computationは任意の論理記述であり、最後にある値をoperand-nameに割当てなければならないる。
あるレジスタファイルにアクセスするための暗黙オペランドを定義する以下の例を検討する:
Figure 0004130654
この例は2つの暗黙オペランドを定義する。“x0”はレジスタファイルXR中の第1のレジスタにアクセスするために使用されることができる。“xr”は状態INDEXにより番号を付けられた任意のレジスタにアクセスするために使用されることができる。これらの両オペランドはどの命令フィールドにも依存しないため、それらは暗黙オペランドである。暗黙オペランドのRTLインプリメンテーションは、暗黙オペランドがどの命令フィールドにも依存しないためにオペランドモジュールへのフィールド入力が省略されることを除いて、一般的なオペランドのものに非常によく似ている。
従来のプロセッサ発生システムにおいては、TIE命令は例外を提起することはできない。たとえば、除算を行なうと共に、除数が0である場合にゼロ除算例外を提起するTIE命令を定義することは不可能であった。同様に、TIEロード命令は、そのアドレスが整列されていないとき、整列されていないロード例外を提起することは不可能であった。本発明はこの新しい能力を追加する。例外を定義するプロセスは、例外を定義し、その例外が提起される条件を指定する2つのステップを有している。以下、それらを説明する。
プロセッサ例外は、TIE例外構造を使用して定義されることができる。ある例外は、その例外が採用されたときに評価される論理である意味論を有している。ある例外は、それの意味論論理またはオペランド論理の中の命令によって提起されることができる。ある例外はまた、別の例外の意味論を評価した結果提起されることができる。例外は優先度を有している。命令がいくつかの例外を提起した場合、最高の優先度を有するものがプロセッサによって採用されることになる:
Figure 0004130654
ここで、“name”は例外の特有の名称である。“higher-priority-list”は、高い優先度を有する例外名のリストである。例外は、それがリストの中の少なくとも1つの他の例外より高い優先度を有している場合はそのリスト中に存在している必要はない。たとえば、例外Aが例外Bより高い優先度を有し、この例外Bが例外Cより高い優先度を有している場合、Cのhigher-priority-list中にBを入れるだけで十分である。“computation”は、例外が採用されたときに評価されるべき論理を指定する。それはプロセッサ状態およびインターフェース信号を読出し、値をプロセッサ状態およびインターフェース信号に割当てることができる。さらに、それはまたある条件で別の例外を提起することができる。例外意味論論理は、プロセッサインターフェース信号“ExceptionVector”への割当てを含んでいなければならない。随意に、それは、その例外の理由に関するある情報を例外ハンドラにパスする1つの方法として、ある値をプロセッサ状態EXCCAUSEに割当てることができる。
ある加算命令に対するオーバーフロー例外を定義する一例を検討する:
Figure 0004130654
この例は、新しい例外“add overflow”を定義している。それは、例外WindowOverflow4、WindowOverflow8、およびWindowOverflow12より低い優先度を有している。この例外が採用されたとき、プロセッサは、この例外に対するハンドラをロードされなければならない位置32’h40000810にジャンプする。
ある命令がある例外を条件付きで提起することを可能にするために、TIE iクラス構造は、例外名のリストを指定するための付加的なクローズを有するように拡張されている。iクラス定義により、命令意味論は値を例外名に割当てることができる。iクラスの中の例外のリストは、このiクラスの中の演算コードに対して常に提起されることのできる例外をクオリファイ(qualify)する。たとえば、加算命令が前のセクションで定義されたオーバーフロー例外を提起することができる場合、そのiクラスは次のようなものになる:
Figure 0004130654
このiクラス定義により、オーバーフローが加算期間中に発生したとき、意味論論理は“add overflow”に1を割当てることができる。
Figure 0004130654
あるオペランド意味論の中のある例外を提起することが、本発明により可能にされると共に、それは例外に論理表現を割当てることにより指定されることができる。この表現が1として評価されたとき、およびその例外が演算コードのiクラスに対する例外のリスト中に含まれるとき、その例外は提起される。たとえば:
Figure 0004130654
それは、ある命令がそのレジスタファイル中の最後のエントリへのアクセスを試みたときに“last exception”を提起する。
ある命令またはオペランド意味論により提起された例外は1次例外と呼ばれる。別の例外により提起された例外は2次例外と呼ばれる。ある例外意味論の中の2次例外を提起することはまた、本発明により可能にされると共に、例外に論理表現を割当てることにより指定されることができる。その表現が1として評価されたとき、その例外が提起される。たとえば:
Figure 0004130654
例外“exc p”がある命令によって提起されたとき、状態“COND”が値“4’b1011”を有している場合、それは例外“exc s”を提起することとなる。
ここに説明されている例外インプリメンテーションは、1次および2次例外を扱うものである。しかしながら、その方法は一般的であり、例外ネスティングの任意の固定された深さを扱う例示的なインプリメンテーションからの拡張は極めて簡単であり、当業者に明らかである。
多数の1次例外が提起されたとき、最高の優先度を有するものが選択される。その後、その例外の意味論が評価される。その意味論が1以上の2次例外を提起した場合、その2次例外の中で最高の優先度のものが採用されることになる。2次例外が存在しないとき、その選択された1次例外が採用される。図19には、例外論理を構成する1つの方法が示されている。クォリファイアの1ブロックは、命令意味論ブロックおよびオペランド意味論ブロックの全てから例外信号を受取る。デコーダからの復号化信号を使用すると、それは、例外が現在の命令によって提起される例外のリスト中に存在しているか否かに基づいて、その例外を選択的にオフに切替える。クォリフィケーション(qualification)の後、論理装置はTIE Exception信号を外部論理装置に対して発生する。外部論理装置はまた、外部例外信号のリストを例外発生論理装置に送る。その後、最高の優先度以外の全ての信号がオフに切替えられるように、組合せられた例外信号が優先度論理ブロックにフィードされる。優先度論理の後、アクティブである例外はせいぜい1つである。優先度をつけることと並行して、1次例外信号は例外意味論ブロックにおいて2次例外信号を発生するための論理を行う。優先度をつけられた1次例外信号と2次例外信号のセットは2次優先度論理ブロックにフィードされる。このブロックにおいて、現在アクティブの1次信号と関連付けられていない2次例外信号はオフに切替えられる。残っている2次信号は優先度をつけられ、最高の優先度を有するものを除いて全てオフに切替えられる。最後に、アクティブな1次信号は、それの2次例外の任意のものがアクティブである場合にオフに切替えられる。2次優先度論理の後、例外信号は、例外意味論によって発生された状態およびインターフェース信号を選択するために使用される。アクティブな例外に対応したものだけが選択される。例外意味論により定義されたインターフェース信号の1つは例外ベクトルである。この例外は、ある例外が生じた場合に次のPCとなるように選択される。
上述したように、本発明の別の特徴はある組込みモジュールの追加である。この点に関して、共通して使用されるある計算は言語定義された演算子を有しないことが認識される。しかしながら、別の言語構造の使用はその記述が非常に冗長であるか、あるいはそれを効率的に使用することが非常に困難である。TIEは、機能呼出しに類似した方法で呼出される組込みモジュールとして共通して使用される演算子のセットを提供する。以下は、全ての組込みモジュールに共通するルールである:T各組込みモジュールは、計算された幅のそれ自身の定義を有している。その定義は、そのコンテキストの要求される幅により行われない。組込みモジュールへの入力は要求される幅を有しない。ある入力が組込みモジュールの定義によって必要とされる十分なビットを有しない場合には、それは0拡張される。
以下は、本発明の好ましい構成による組込みモジュールの記述である。
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でなければならない。
以上、本発明はその好ましい実施形態を参照としてとくに説明されているが、当業者は、本発明の技術的範囲を逸脱することなく形態および詳細の変更および修正が可能であることを容易に認識するであろう。たとえば、当業者は、上記のフロー図に示されている処理ステップの数および順序を変えることができることを理解するであろう。添付された特許請求の範囲は、このような変更および修正を含むものである。
高性能プロセッサを示すブロック図。 本発明の原理にしたがって発生された高性能プロセッサを示すブロック図。 本発明の1つの特徴にしたがって発生されたVLIW命令フォーマットならびに関連した復号化および実行論理手段の一例を示す概略図。 本発明の1つの特徴によるVLIW命令の処理方法を示す概略図。 定義された命令の長さを決定する方法を示すフロー図。 新しく定義された命令に対する復号化の長さを決定する方法を示すフロー図。 長さテーブルを発生する本発明による方法を示すフロー図。 フォーマットテーブルを発生する本発明による方法を示すフロー図。 命令フォーマットテーブルを決定する本発明による方法を示すフロー図。 フォーマットテーブル用のソフトウェアツールを発生する本発明による方法を示すフロー図。 本発明にしたがってバイトディスエーブル論理をロード/記憶ユニットに提供する手段を示すブロック図。 本発明にしたがってロード/記憶ユニットに提供する回転論理手段を示すブロック図。 ロード/記憶ユニットとある1つの命令を関連付ける本発明による方法を示すフロー図。 本発明による共用機能の提供を示す概略図。 本発明による対話式命令を行う1つの共用機能の一例を示す概略図。 本発明のプロセッサによる有用なパイプライン機能停止論理を示す概略図。 本発明による強化されたオペランドレジスタファイル意味論を示す概略図。 本発明による強化されたオペランドレジスタファイルインターフェースを示す概略図。 本発明の1つの特徴による例外処理を示すブロック図。

Claims (12)

  1. マイクロプロセッサのハードウェア記述を発生させるためのコンピュータにより実現される方法において、
    マイクロプロセッサによる単一のVLIW命令の実行中にさまざまな組み合わせで並列に行うことができる複数の演算をコンピュータのユーザが規定できるようにすることと、
    ユーザにより規定された第1のVLIW命令の実行中に行われる第1の組の複数の演算をユーザが特定できるようにすることと、
    ユーザにより規定された第2のVLIW命令の実行中に行われる第2の組の複数の演算をユーザが特定できるようにすることと、
    マイクロプロセッサのハードウェア記述を自動的に発生させることとを含み、
    マイクロプロセッサのハードウェア記述を自動的に発生させることは、
    複数の演算のそれぞれを並列に行うことができる論理の記述を発生させることと、
    複数の演算と、構成可能な特性と、ユーザにより規定された第1および第2のVLIW命令とのユーザ仕様に基づいて、予め規定されたマイクロプロセッサコアによる実行のために予め規定されたセットのコア命令に加えて、マイクロプロセッサにおいて、ユーザにより規定された第1および第2のVLIW命令を実行できる論理の記述を発生させることとをさらに有し、
    ユーザにより規定された第1および第2のVLIW命令は、ユーザにより規定された構成可能な特性も有する方法。
  2. 構成可能な特性は、命令長を含んでいる請求項1記載の方法。
  3. 構成可能な特性は、命令フォーマットを含んでいる請求項1記載の方法。
  4. 構成可能な特性は、命令あたりの演算スロットの数を含んでいる請求項1記載の方法。
  5. 構成可能な特性は、命令フィールドを含んでいる請求項1記載の方法。
  6. 構成可能な特性は、命令演算コードを含んでいる請求項1記載の方法。
  7. 構成可能な特性は、命令演算を含んでいる請求項1記載の方法。
  8. VLIW命令の複数の演算のうちの少なくとも2つは共通信号レジスタファイルを共にアドレスするオペランドを有し、自動的に発生させることは、並列に実行する複数の演算に対するオペランドによる同時アクセスをサポートするために、単一のレジスタファイルに対して複数のレジスタオペランドインターフェースを発生させることを含む請求項1記載の方法。
  9. 構成可能な特性は、オペランドを単一レジスタファイルの異なるそれぞれのポートと関連付ける情報を含んでいる請求項8記載の方法。
  10. VLIW命令の複数の演算のうちの第1および第2のものはレジスタファイルをアドレスするオペランドを有し、構成可能な特性はレジスタファイルアクセス幅を含み、自動的に発生させることは、第1の演算が第1のレジスタファイルアクセス幅でレジスタファイルにアクセスできるようにし、かつ第2の演算が第2のレジスタファイルアクセス幅でレジスタファイルにアクセスできるようにするレジスタオペランドインターフェースを発生させることを含み、第1のレジスタファイルアクセス幅と第2のレジスタファイルアクセス幅は異なる請求項1記載の方法。
  11. VLIW命令の複数の演算のうちの第1および第2のものはレジスタファイルをアドレスするオペランドを有し、構成可能な特性はレジスタファイルをアドレスする単一のオペランドによってアクセスされるレジスタファイルの多数の隣接したエントリを含み、自動的に発生させることは、第1の演算がレジスタファイルの第1の数の隣接エントリにアクセスできるようにし、かつ第2の演算がレジスタファイルの第2の数の隣接エントリにアクセスできるようにするレジスタオペランドインターフェースを発生させることを含み、第1の数と第2の数は異なる請求項1記載の方法。
  12. VLIW命令の複数の演算のうちの1つは、暗黙レジスタファイルオペランドを使用してレジスタファイルをアドレスし、構成可能な特性は暗黙レジスタファイルオペランド定義を含み、自動的に発生させることは、暗黙レジスタファイルオペランドを明示的に符号化するために少なくとも1つの命令のビットを必要としないように、前記1つの演算をサポートするレジスタオペランドインターフェースを発生させることを含む請求項1記載の方法。
JP2004505829A 2002-05-13 2003-04-14 拡張可能なプロセッサアーキテクチャ中にアドバンスド命令を追加するための方法および装置 Expired - Fee Related JP4130654B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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