JP3906003B2 - プロセッサおよびその命令処理方法 - Google Patents

プロセッサおよびその命令処理方法 Download PDF

Info

Publication number
JP3906003B2
JP3906003B2 JP2000027755A JP2000027755A JP3906003B2 JP 3906003 B2 JP3906003 B2 JP 3906003B2 JP 2000027755 A JP2000027755 A JP 2000027755A JP 2000027755 A JP2000027755 A JP 2000027755A JP 3906003 B2 JP3906003 B2 JP 3906003B2
Authority
JP
Japan
Prior art keywords
instruction
bit
circuit
processor
arithmetic logic
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
JP2000027755A
Other languages
English (en)
Other versions
JP2000227858A (ja
JP2000227858A5 (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Publication of JP2000227858A publication Critical patent/JP2000227858A/ja
Publication of JP2000227858A5 publication Critical patent/JP2000227858A5/ja
Application granted granted Critical
Publication of JP3906003B2 publication Critical patent/JP3906003B2/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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/3824Operand accessing
    • 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
    • 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/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

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 Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、マイクロプロセッサに関する。特に、単一命令と複数データストリーム(SIMD)命令のためのエンハンスド・データパス以外に、単一命令ストリームと単一データストリーム(SISD)命令のための基準データパスを少なくとも一つ含むマイクロプロセッサに関する。
【0002】
【従来の技術】
1972年に、フリン(Flynn)は、命令とデータフローに基づいてプロセッサを分類した(Flynn, M.J., "Some Computer Organizations and Their Effectiveness", IEEE Trans. Comput., C-21, 1972, 948-960頁を参照)。分類された4つのプロセッサは以下の通りである。
【0003】
・単一命令および単一データ用のSISD
・単一命令および複数データ用のSIMD
・複数命令および複数データ用のMIMD
・複数命令および単一データ用のMISD
本発明は、SISDとSIMDに関する。手短に言うと、単一スカラー・マシンはSISD演算器である。すなわち、SISD演算器は、単一命令とデータストリームの両方を有する。SIMDは、単一のコマンド・デコーダ・ユニットでデコードされた単一の命令列を有する他に、複数のデータストリームも有する。
【0004】
SIMDマイクロプロセッサの過去の例の一つに、Intelのi860 32ビットRISC(reduced instruction set computer)プロセッサがある。このプロセッサは、32ビットのジェネラル・レジスタを、それぞれが互いに関係のない個別の小ビット幅のデータ(例えば、4つの8ビットデータ)として扱う。
【0005】
i860は、実際にはハイブリッドのSISD/SIMDマシンである。特に、i860は、単一命令(単一命令、単一データまたはSISD)に対応して、32ビットのデータ幅で動作可能である。
【0006】
あるいは、i860は、単一の命令(単一命令、複数データまたはSIMD)に対応して、8ビットのデータを4つ並列に実行可能である。
【0007】
i860の最大32ビットのSISDデータパスは、最大32ビットのSIMDデータパスと等しいサイズである。同様に、サンSPARC(カリフォルニア州、マウンテン・ビューのサン・マイクロシステムズ社)と同様の他のSISD/SIMDマシン、DECのAlpha(テキサス州、ダラスのコンパック・コンピュータ社)、HPのプレシジョン・アーキテクチャ(カリフォルニア州、パロアルトのヒューレット・パッカード社)もまた、SIMDデータパスがSISDデータパスの最大値と等しいサイズをもつように構成されている。
【0008】
【発明が解決しようとする課題】
SIMDのデータパスをSISDデータパスと等しいサイズにするというアプローチの欠点は、SIMDデータパスの最大サイズがSISDデータパスのサイズにより制限されることである。この結果、単一の命令に対して実行可能な複数のデータ・アイテムの量が制限され、より正確には、複数のデータアイテムの総計サイズが制限される。すなわち、i860を例に取ると、SIMDデータパスの32ビットサイズは、非SIMDデータパスの32ビットサイズに制限される。
【0009】
本発明は、このような点に鑑みてなされたものであり、その目的は、複数の並列演算時のデータパス・サイズが単一演算時のデータパス・サイズの制限を受けないプロセッサおよびその命令処理方法を提供することにある。
【0010】
【課題を解決するための手段】
上述した課題を解決するために、請求項1の発明は、命令オペランドを保持するnビットレジスタ回路と、命令ストリームからのプロセッサ命令を順にデコードする命令デコード回路と、単一演算と複数の並列演算との一方を実行する演算論理回路と、を備え、前記単一演算は、前記命令デコード回路によりデコードされた第1の単一プロセッサ命令に対応して、前記nビットレジスタ回路から供給された少なくとも一つのm(m<n)ビットオペランドでの演算であり、前記演算論理回路は、前記mビットよりビット数の多いオペランドに対しては、前記単一演算を行わず、前記複数の並列演算は、前記命令デコード回路によりデコードされた第2の単一プロセッサ命令に対応して、前記nビットレジスタ回路から供給されたnビットオペランド中の少なくとも2つのビット部分での演算である。
【0011】
請求項1の発明では、単一演算と複数の並列演算の一方を実行可能な演算論理回路を設け、複数の並列演算を実行する際に、単一演算時のビット数に制限されないようにする。
【0012】
請求項2の発明では、複数の整数パイプ回路を設けて演算を行うため、単一演算だけでなく、複数の並列演算も行うことができる。
【0013】
請求項3の発明では、nビットを越えない範囲内で、任意のビット長のオペランドをもつプロセッサ命令を実行できる。
【0014】
請求項4の発明では、単一演算命令と複数の並列演算命令とが同時に発行された場合には、両命令の順序に従って整数パイプ回路での演算を行うことができる。
【0015】
請求項5の発明は、命令オペランドを保持するnビットレジスタ回路と、命令ストリームからのプロセッサ命令をデコードする命令デコード回路と、複数の演算論理ユニットALU1〜ALUkを含む演算論理(AL)回路と、を備え、前記演算論理ユニットALUi(i=1〜k)のそれぞれは、前記命令デコード回路によりデコードされた第1の個別のプロセッサ命令に対応して、前記nビットレジスタ回路から供給された少なくとも一つの対応するmiビットオペランド(mi<n(ただし、i=1〜k))での個別の単一演算を実行可能であり、前記演算論理ユニットALUi(ただし、i=1〜k)は、miビットよりビット数の多いオペランドでの単一演算は実行せず、前記演算論理ユニット用のすべてのmi(ただし、i=1〜k)の合計は、n以下であり、前記演算論理ユニットのそれぞれは、前記命令デコード回路によりデコードされた第2の単一命令に対応して、前記nビットレジスタ回路から供給された一つのnビットオペランドの少なくとも二つのビット部分での複数の並列演算を実行可能である。
【0016】
請求項5の発明では、複数の演算論理ユニットを設けるため、単一演算と複数の並列演算のどちらでも、実行可能である。
【0017】
請求項6の発明では、演算論理ユニットのそれぞれにオペランドを引き渡すため、各演算論理ユニットで並列に演算を行うことができる。
【0018】
請求項7の発明では、単一演算命令と複数の並列演算命令とが同時に発行された場合には、両命令の順序に従って整数パイプ回路での演算を行うことができる。
【0019】
請求項8の発明では、メモリとnビットレジスタ回路との間にロード/ストア回路を設けるため、演算論理回路の演算処理とは別個に、命令やデータの伝送を行うことができる。
【0020】
【発明の実施の形態】
以下、本発明に係るプロセッサについて、図面を参照しながら具体的に説明する。
【0021】
本発明に係るプロセッサは、単一命令および単一データ(SISD)演算用の少なくとも一つの基準サイズ・データパスだけでなく、単一命令および複数データ(SIMD)演算用のエンハンスド・サイズ・データパスを有する。ここで、SIMD用のデータパスはSISD用のデータパスよりも大きい。以下、本実施形態の構成および動作を詳細に説明する。
【0022】
本発明に係るプロセッサは、例えば最大64ビットの基準SISDデータパスと128ビットの拡張SIMDデータパスを有する。図1はこの種のプロセッサ100の構成を示すブロック図である。
【0023】
図1において、プロセッサ100は、32×128ビットのレジスタファイル102を有する。すなわち、レジスタファイルは、32個の128ビットのジェネラル・パーパス・レジスタを有する。プロセッサ100はまた、128ビットのデータパス104を有する。以下に詳細に説明するように、128ビットのデータパス104は、最大64ビットの整数パイプ106a,106bを有する。
【0024】
図2は整数パイプ106a,106bの詳細構成を示す図である。特に、図2は、レジスタファイル102の特定レジスタ201(下位部201aと上位部201bを有する)が整数パイプ106a,106bとどのように連携するかを示している。
【0025】
図2のレジスタ201は、図解のためにのみ設けられている。整数パイプ106a,106bはそれぞれ、ALU(arithmetic logic unit)201a,201bを有する。レジスタ部201a,201bからのオペランドデータは、マルチプレクサ回路204を介して、ALU202a,202bに供給される。すなわち、下位部201aは、4つのリード部205a〜205dを有し、上位部201bは、3つのリード部205e〜205gを有する。これらのリード部205a〜205gはそれぞれ、マルチプレクサ206a〜206gに接続されている。
【0026】
このように接続することで、マルチプレクサ206a〜206gの演算のうち、下位部201aの内容は、(ALU202aを含む)整数パイプ106aと(ALU202bを含む)整数パイプ106bとのいずれかに供給される。
【0027】
同様に、上位部201bの内容は、整数パイプ106aか整数パイプ106bのいずれかに供給される。
【0028】
図2には、ここでは詳述しないが、プロセッサ100の他の多くの特徴が開示されている。
【0029】
最大64ビットサイズの整数パイプ106a,106bを備えることにより、プロセッサ100により処理されうる最大整数SISD型の演算ビット数は64ビットである。それと対比して、整数パイプ106a,106bの両方を同時に動作させ、プロセッサ100は、総計128ビットのSIMD演算を行うことができる。
【0030】
一般的には、本発明に係るSISD/SIMDプロセッサは、SISDデータパスサイズがSIMDデータパスサイズよりも小さい。SISDデータパスは、SIMDデータパスの一部である。このため、たった一つのSISDデータパスのみが必要となる。SISDデータパスが最大64ビットに限定されることは、制限にはならない。128ビットのSISD整数動作を利用する例はほとんどないためであり、このような演算能力を設けても、チップ内の面積やサイクルタイムを有効活用できない。
【0031】
これに対して、128ビットのエンハンスドSIMDデータパスにより恩恵を受けられる数多くの演算(特に、マルチメディア応用で共通して用いられるベクトル演算)がある。
【0032】
本実施形態において、(レジスタファイル102内の)ジェネラル・パーパス・レジスタは、SIMDデータパス全体を利用する演算にオペランドを供給できる十分な幅を有する。すなわち、本実施形態において、ジェネラル・パーパス・レジスタ102は、整数SIMD演算用の128ビットのSIMDデータパス104の全体を利用するための整数オペランドを保持するのに十分なサイズである128ビットを有する。
【0033】
本実施形態において、必ずしもジェネラル・パーパス・レジスタを使用する必要はない。しかしながら、SIMD演算を行うために、整数オペランドをSIMDデータパスに保持する目的でワイドな浮動小数点レジスタを設けることも可能であるし、また、SIMD演算用のSIMDデータパスに浮動小数点オペランドを保持するためにワイドなジェネラル・パーパス・レジスタを設けることも可能である。
【0034】
次に、整数パイプ106a,106bについて詳述する。整数パイプ106a,106bの詳細構成は図2に示される。上述したように、整数パイプ106a,106bはそれぞれ、ALU202a,202bを有する。128ビットのSIMDデータパスが2つの整数パイプ106a,106bで構成されると述べたが、実際には、SISD演算を行うためには、一つの整数パイプのみが必要である。なお、3つ以上の整数パイプを設けてもよい。
【0035】
以下に、いくつかのコード列を例に挙げて説明する。以下のコード列の一例は、pmulthとpaddhを除いて、標準的なMIPS ISAニーモニックからなる。
【0036】
Figure 0003906003
上記のコード列中で、"<"と">"は、ビット・フィールド・セレクタを表している。例えば、rd<15..0>は、レジスタrdの下位側16ビットを示す。
【0037】
本実施形態のさらなる特徴として、整数パイプ106a,106bは、64ビットのSISD命令の単一発行や128ビットのSIMD命令の単一発行によってだけでなく、2つの64ビット命令の同時発行(例えば、SISD)によっても利用することができる。
【0038】
64ビットSISD命令の単一発行により個別に利用可能か、あるいは、128ビットのSIMD命令の単一発行によりまとめて利用可能か、あるいは、複数の64ビットSISD命令の連続発行により個別に利用可能な3つ以上の整数パイプを設けることが、本発明のさらなる特徴である。
【0039】
例えば、以下のような例である。
【0040】
Figure 0003906003
さらに、プロセッサ100は、第2の128ビット演算がSIMD演算とは独立にリソースを利用する限り、SIMDの(第1の)128ビット演算と同時に、第2の128ビット演算を行う。例えば、128ビットのロード/ストア演算は、128ビットのSIMD演算と並列に発行される。
【0041】
lq $5, var # 128-bit Pipe 1 flow
paddsw $1, $2, $3 # 128-bit Pipe 0 flow
次に、それぞれ8つの要素からなる2組同士で内積を演算する例に基づいて、本実施形態のアーキテクチャを説明する。この場合の16ビットのベクトル値は次の通りである。
【0042】
s0=x0c0+x1c1+x2c2+x3c3+x4c4+x5c5+x6c6+x7c7
(64ビットの限定されたALU幅を有する)従来のSISD/SIMDマシンを例に取る と、4つの16ビット・チャンクはそれぞれ次のように処理される。
【0043】
Figure 0003906003
64ビットのSIMDに制限されるマシンを有する全8つのタームを処理するためには、コードは次のように拡張される。
【0044】
Figure 0003906003
上述したコード・シーケンスは、13個の命令と7個のジェネラルレジスタを使用する。
【0045】
仮に、128ビットレジスタを用いて命令を実行する場合を仮定する。より幅広いレジスタを有する命令列は、以下の通りである。
【0046】
Figure 0003906003
このコード・シーケンスでは、7個の命令と4つのレジスタを使用している。これに対して、64ビットのSIMDマシンは通常、13個の命令と7つのレジスタを使用する。
【0047】
このように、128ビットSIMDマシンは、64ビットSIMDマシンに比べて、少ない命令で効率よく、この処理を行うことができる。
【0048】
同様の課題に対する他の例として、拡張ALU SIMD演算がある。例えば、MPEGビデオデコーダの内部ループのコード・フラグメントは、以下に示すように、128ビット演算を行う場合に有利である。
【0049】
s0=x0c0+x2c2+x4c4+x6c6
s7=x1c1+x3c3+x5c5+x7c7
y0=s0+s7
y7=s0−c7
上記の例は、128ビット幅のSIMDに基づいていることに注目すべきである。レジスタセットの拡張(例えば、256ビットや512ビット以外の基本ALU幅の整数倍のビット幅をもつレジスタセットへの拡張)を行ってもよい。このような拡張は、本実施形態において有効である。
【0050】
図3〜図5は、プロセッサの一実施形態において、特定のALU演算命令に対して、オペランドがどのように与えられるかを示す図である。図3において、プロセッサ300は、通常ALU(arithmetic logic unit)演算命令と、拡張(wide)ALU演算命令とを有する。
【0051】
図4は通常ALU演算命令と拡張ALU演算命令を模式的に示した図である。通常ALU演算命令の場合には、一つの命令は、例えば、64ビット同士の演算を行い、その結果、64ビットの演算結果が得られる。このため、通常ALU演算命令は、単一の演算ユニットを使用して演算される。
【0052】
拡張ALU演算命令の場合には、一つの命令は、2つの演算を行う。各演算ではそれぞれ、64ビット同士を演算して64ビットの演算結果を得る。このため、拡張ALU演算命令は、2つの演算ユニットを利用して実行される。
【0053】
例えば図3において、2つの命令は、命令フェッチ・ユニット310にて同時に発行される。このように、命令フェッチ・ユニット310は、複数の命令を同時に発行することができる。ただし、その場合でも、同時に発行された命令間の先後関係は規定されている。
【0054】
具体的には、命令の発行に先立って、命令フェッチ・ユニット310は、フェッチされた命令を実行できるか否かをチェックする。すなわち、フェッチ・ユニット310は、浮動小数点ユニット322が実行できるか否かと、第1および第2の整数ユニット320,324が実行できるか否かと、ロード・ストア・ユニット326が実行できるか否かと、コプロセッサ・ユニット328が実行できるか否かをチェックする。
【0055】
命令フェッチ・ユニット310は、適切なパイプラインに命令を送る。すなわち、仮に、命令が浮動小数点ユニット322により実行可能であれば、ユニット310は、第1のパイプライン314にその命令を引き渡す。仮に、命令がロード・ストア・ユニット326かコプロセッサ・ユニット328により実行可能であれば、ユニット310は、その命令を第2のパイプライン316に引き渡す。仮に、命令が第1の整数ユニット320か第2の整数ユニット324により実行可能であれば、ユニット310は、その命令を第1のパイプライン314か第2のパイプライン316に引き渡す。これにより、パイプラインの有効性とペアになった命令とを考慮に入れることができる。
【0056】
しかしながら、本実施形態では、拡張ALU演算命令が第1のパイプライン314にのみ与えられ、第2のパイプライン316には与えられないように構成されている。これと比較して、通常ALU演算命令は、第1のパイプライン314と第2のパイプライン316のいずれかに対して発行される。
【0057】
命令フェッチユニット310から発行される2つの命令を実行するのに必要なオペランドがレジスタファイル311から読み出される。これらの2つの命令は、第1のパイプライン314と第2のパイプライン316に送られる。対応する命令のオペランドは、第1および第2のパイプライン314,316に送られる。
【0058】
より詳細には、レジスタファイル311から読み出されたオペランドは、オペランド・バイパス/セレクト・ロジック312を介して、第1および第2のソース・バスに送られ、その後、対応する演算ユニットに到達する。
【0059】
対応する演算ユニットによる演算結果は、第1の演算結果バスと第2の演算結果バスにそれぞれ送られ、レジスタファイル311に書き込まれる。あるいは、オペランド・バイパスを介してオペランド・バイパス/セレクト論理部312に送られる。
【0060】
要約すると、プロセッサ300による演算命令の制御は、演算命令における命令システムの制御に関して分けられ、かつ、演算命令用のデータであるオペランド・システムの制御に関して分けられる。
【0061】
図5は、オペランドがどうやって第1および第2の整数ユニット320,324に送られるかを示す図である。図5では、第1のパイプライン314内の浮動小数点ユニット322と、ロード・ストア・ユニット326と、第2のパイプライン316内のコプロセッサ・ユニット328とを省略している。その理由は、本実施形態における拡張ALU演算命令は、第1および第2の整数ユニット320,324を利用する命令であると仮定しているためである。
【0062】
図3に示すように、レジスタファイル311は、第1および第2のレジスタファイル311a,311bを有する。第1のレジスタファイル311aは、通常ALU演算命令に利用されるオペランドを保持する。第2のレジスタファイル311bは、拡張演算命令に利用されるオペランドの一部を保持する。
【0063】
命令が命令フェッチ・ユニット310から第1および第2のパイプライン314,316に発行されるとき、これら命令は命令フェッチ・ユニット310からレジスタ・ファイル311に送られる。より詳細には、第1および第2のパイプライン用の命令は、命令フェッチ・ユニット310から第1のレジスタファイル311aに送られる。そして、同時に、第1のパイプライン用の命令は、第2のレジスタファイル311bに送られる。
【0064】
したがって、対応する命令用のオペランドは、第1および第2のレジスタファイル311a,311bから読み出される。
【0065】
第1のレジスタファイル311aと第1の整数ユニット320との間には、保持マルチプレクサ530、バイパス・マルチプレクサ532および第1のフリップフロップ534が介挿される。第1の整数ユニット320の出力経路には、第2のフリップフロップ538が設けられる。
【0066】
第1および第2のレジスタファイル311a,324の間には、保持マルチプレクサ540、バイパス・マルチプレクサ542、第1のフリップフロップ544および拡張マルチプレクサ546が介挿される。第2の整数ユニット324の出力経路には、第2のフリップフロップ548が設けられる。
【0067】
第2のレジスタファイル311bと拡張マルチプレクサ546の間には、保持マルチプレクサ550、バイパス・マルチプレクサ552およびフリップフロップ554が介挿される。
【0068】
保持マルチプレクサ530,540,550は、パイプラインがストールしている間にオペランドを保持するために用いられる。保持マルチプレクサ530,540,550は、オペランドを保持するときに、出力用のフィードバック・ループを選択する。保持マルチプレクサ530,540,550がどのオペランドも保持しないとき、レジスタファイル311からの出力ルートを選択する。
【0069】
バイパス・マルチプレクサ532,542,552は、オペランドをバイパスさせるために用いられる。すなわち、バイパス・マルチプレクサ532,542,552は、第1および第2の整数ユニット320,324による演算結果がレジスタファイル311に書き込まれないときでも、バイパスデータを使用できるようにするために設けられる。
【0070】
これらの保持マルチプレクサ530,540,550と、バイパス・マルチプレクサ532,542,552と、第1のフリップフロップ534,544,554と、拡張マルチプレクサ546とは、オペランド・バイパス/セレクト論理部312を構成する。この論理部312は、本実施形態によるオペランド・システムを制御する制御回路である。
【0071】
保持マルチプレクサ530、バイパス・マルチプレクサ532、および第1のフリップフロップ534は、保持出力回路559aを構成する。この回路559aは、第1のレジスタファイルから出力されたオペランドか、第1のレジスタファイル内に保持されたオペランドのいずれかを出力するか否かを切り替えることができる。保持マルチプレクサ540、バイパス・マルチプレクサ542、および第1のフリップフロップ544は、保持出力回路559bを構成する。この回路は、第1のレジスタファイルから出力されたオペランドか、第1のレジスタファイル内に保持されたオペランドが出力されるか否かを切り替えることができる。保持マルチプレクサ550、バイパス・マルチプレクサ552および第1のフリップフロップ554は、保持出力回路559cを構成する。この回路559cは、第2のレジスタファイルから出力されたオペランドか、第2のレジスタファイル内に保持されたオペランドを出力すべきか否かを切り替えることができる。
【0072】
これらの保持出力回路559a〜559cはそれぞれ、2つのオペランドを保持または出力する。すなわち、図4に示した例において、保持出力回路559a〜559cはそれぞれ、64ビットの2つのオペランドを保持または出力する。
【0073】
図5は、簡略化のために、単一ライン、単一マルチプレクサおよび単一フリップフロップによる2つのオペランドを示している。
【0074】
次に、図5を参照しながら、以下の(1)〜(3)のケースについて、オペランドの流れを説明する。
【0075】
(1) 2つの通常ALU演算命令が同時に発行される場合。
【0076】
(2) 通常ALU演算命令と拡張ALU命令が同時に発行され、かつ、拡張ALU演算命令が先の命令である場合。
【0077】
(3) 通常ALU演算命令と拡張ALU演算命令が同時に発行され、かつ拡張ALUが後の命令である場合。
【0078】
以下の説明において、命令フェッチ・ユニット310から発行されるすべての命令は、第1および第2の整数ユニット320,324を利用することにより実行される命令であると仮定する。
【0079】
(1) 2つの通常ALU演算命令が同時に発行される場合
第1および第2のパイプライン314,316に発行された命令に対して、対応する命令のオペランドが第1のレジスタファイル311aから読み出される。これら2組のオペランド(計4個のオペランド)は、保持マルチプレクサ530,540とバイパス・マルチプレクサ532,542に送られ、第1のフリップフロップ534,544に保持される。
【0080】
すなわち、保持マルチプレクサ530,540は第1のレジスタファイル311aからのオペランドを選択および出力する。バイパス・マルチプレクサ532,542は、保持マルチプレクサ530,540から出力されたオペランドを保持する。
【0081】
ここで保持される2組のオペランドは、後述する命令と同時に、第1および第2の整数ユニット320,324に送られる。すなわち、拡張マルチプレクサ546は、第1のフリップフロップ544から出力された一組のオペランドを選択する。このオペランドは、第1のレジスタファイル311aのオペランドであり、第2の整数ユニット324に出力される。
【0082】
(2) 通常ALU演算命令と拡張ALU演算命令が同時に発行され、拡張ALU演算命令が先の命令である場合
拡張ALU演算命令(第1の演算)の下位ビットの一組のオペランドが第1のレジスタファイル311aから第1のパイプライン314に読み出される。さらに、通常ALU演算命令は、第1のレジスタファイル311aから第2のパイプライン316に読み出される。さらに、拡張ALU演算命令(第2の演算)の上位ビットの演算用の一組のオペランドは、第2のレジスタファイル311bから第2のパイプライン316に読み出される。このため、全体で6つのオペランドがレジスタファイル311から読み出される。
【0083】
上記の場合、拡張ALU演算命令は、第1のパイプライン314にのみ与えられる。このため、第2のレジスタファイル311bには、第1のパイプライン314に発行される命令のみが供給される。
【0084】
このようにして、第1のレジスタファイル311aから読み出された2つの命令用の2組のオペランドは、保持マルチプレクサ530,540とバイパス・マルチプレクサ532,542に送られ、第1のフリップフロップ534,544に保持される。
【0085】
すなわち、保持マルチプレクサ530,540は、第1のレジスタファイル311aからのオペランドを選択および出力し、その間に、バイパス・マルチプレクサ532,542は、保持マルチプレクサ530,540から出力されたオペランドを選択および出力する。
【0086】
第2のレジスタファイル311bから読み出された一つの命令用のオペランドは、保持マルチプレクサ550とバイパス・マルチプレクサ552を介して送られ、第1のフリップフロップ554に保持される。すなわち、保持マルチプレクサ550は、第2のレジスタファイル311bからのオペランドを出力する。バイパス・マルチプレクサ552は、保持マルチプレクサ550からのオペランドを選択および出力する。
【0087】
第1のパイプライン314に発行された命令は、拡張ALU演算命令であるため、拡張ALU演算命令用のオペランドは第1および第2の整数ユニット320,324にまず送られる。より詳細には、第1のフリップフロップ534からのオペランド列は第1の整数ユニット320に供給される。すなわち、第1の整数ユニット320には、第1のレジスタファイル311aから読み出された一組のオペランドが供給される。第2の整数ユニット324には、第1のフリップフロップ554からの一組のオペランドが供給される。すなわち、第2の整数ユニット324には、第2のレジスタファイル311bから読み出された一組のオペランドが与えられる。このように、拡張マルチプレクサ546は、第1のフリップフロップ554から出力されたオペランドを選択し、このオペランドを第2の整数ユニット324に引き渡す。
【0088】
このようにして、拡張ALU演算命令は、パイプライン・ストールを起こすことなく、第1および第2の整数ユニット320,324に送られる。しかしながら、通常ALU演算命令は、リソースを利用できないので、パイプライン・ストールを起こし、順番を待たなければならない。すなわち、通常ALU演算命令は、第2のパイプライン316に発行されるが、第2のパイプライン316内の第2の整数ユニット324は、拡張ALU演算命令を実行するために使用中であり、通常ALU演算命令は、第2の整数ユニットを使用できない。このため、通常ALU演算命令は、拡張ALU演算命令の実行が完了するまで、待機される。
【0089】
パイプライン・ストールを起こした通常ALU演算命令用の一組のオペランドは、第1のフリップフロップ544から保持マルチプレクサ540にフィードバックされ、次のサイクルまで保持される。
【0090】
保持マルチプレクサ540に保持された通常ALU演算命令用の一組のオペランドは、第2の整数ユニット324に供給されて、次のサイクルで実行される。すなわち、次のサイクルでは、保持マルチプレクサ540は、第1のフリップフロップ544から出力されたオペランドを選択し、このオペランドをバイパス・マルチプレクサ542に出力する。同時に、次の命令が第1のパイプライン314に発行され、もし可能であれば、第2のパイプライン316と並列に実行される。
【0091】
(3) 通常ALU演算命令と拡張ALU演算命令が同時に実行され、拡張ALU演算命令が後の命令である場合
上述した(2)と同様に、拡張ALU演算命令(第1の演算)に続く演算の一つとして、第1のレジスタファイル311aから読み出された一組のオペランド(2つのオペランド)は、保持マルチプレクサ530とバイパス・マルチプレクサ532を介して送信され、第1のフリップフロップ534に保持される。通常ALU演算命令用の第1のレジスタファイル311aから読み出された一組のオペランド(2つのオペランド)は、保持マルチプレクサ540とバイパス・マルチプレクサ542を介して送信され、第1のフリップフロップ544に保持される。
【0092】
拡張ALU演算命令(第2の演算)の演算用の第2のレジスタファイル311bから読み出された一組のオペランド(2つのオペランド)は、保持マルチプレクサ550とバイパス・マルチプレクサ552を介して送信され、第1のフリップフロップ554に保持される。
【0093】
第1のパイプライン314に発行された命令は、拡張ALU演算命令であるが、その命令は後続する命令である。このため、第2の整数ユニット324には、通常ALU演算命令用のオペランドが最初に与えられる。すなわち、第2の整数ユニット324は、フリップフロップ324からの一組のオペランドを最初に受け取る。このオペランドは、第1のレジスタファイル311aから読み出される。その結果、拡張マルチプレクサ546は、第1のフリップフロップ544から出力されたオペランドを選択し、これらオペランドを第2の整数ユニット324に出力する。
【0094】
このようにして、通常ALU演算命令は、パイプライン・ストールを起こすことなく、第2の整数ユニット324に送られるが、拡張ALU演算命令は、リソースを使用できないので、パイプライン・ストールにより待機しなければならない。すなわち、拡張ALU演算命令は、第1のパイプライン314に発行されるが、第1および第2の整数ユニット320,324は、拡張ALU演算命令の実行に利用されなければならない。
【0095】
しかしながら、第2の整数ユニット324は、以前に発行された通常ALU演算命令を実行するために使用中であるため、拡張ALU演算命令は、第2の整数ユニット324を使用できない。このため、拡張ALU演算命令は、通常ALU演算命令の実行が終了するまで、待機しなければならない。
【0096】
パイプライン・ストールを引き起こした拡張ALU演算命令用の二組のオペランドは、次のサイクルまで保持される。すなわち、第1のレジスタファイル311aから読み出された一組のオペランドは、第1のフリップフロップ534から保持マルチプレクサ530にフィードバックされ、次のサイクルまで保持される。また、第2のレジスタファイル311bから読み出された一組のオペランドは、第1のフリップフロップ554から保持マルチプレクサ550にフィードバックされ、かつ、次のサイクルまで保持される。
【0097】
その後、保持マルチプレクサ530,540に保持された2組のオペランドは、第1の整数ユニット320と第2の整数ユニット324に与えられ、それぞれ次のサイクルで実行される。すなわち、次のサイクルでは、保持マルチプレクサ530は、第1のフリップフロップ534から出力されたオペランドを選択し、選択したオペランドをバイパス・マルチプレクサ532に出力する。また、保持マルチプレクサ550は、第1のフリップフロップ554から出力されたオペランドを選択し、選択したオペランドをバイパス・マルチプレクサ552に出力する。
【0098】
【発明の効果】
以上詳細に説明したように、本発明によれば、単一演算と複数の並列演算の一方を実行可能な演算論理回路を設けるため、単一演算時のビット数に限定されることなく、複数の並列演算を行うことができ、演算効率の向上が図れる。
【0099】
また、単一演算用のプロセッサ命令と複数の並列演算用のプロセッサ命令とが同時に発行された場合には、命令の順序に応じて整数パイプ回路を割り当てるため、整数パイプ回路を有効利用することができる。
【図面の簡単な説明】
【図1】本発明に係るプロセッサの一実施形態のブロック図。
【図2】整数パイプの詳細構成を示す図。
【図3】特定のALU演算命令に対してオペランドがどのように与えられるかを示す図。
【図4】通常ALU演算命令と拡張ALU演算命令を模式的に示した図。
【図5】オペランドがどうやって第1および第2の整数ユニットに送られるかを示す図。
【符号の説明】
100 プロセッサ
102 レジスタファイル
106a,106b 整数パイプ
201a,201b レジスタ部
202a,202b 演算論理回路
206a〜206g マルチプレクサ
310 命令フェッチ・ユニット
314,316 第1および第2のパイプライン
322 フローティング・ユニット
328 コプロセッサ・ユニット

Claims (10)

  1. 命令オペランドを保持するnビットレジスタ回路と、
    命令ストリームからのプロセッサ命令を順にデコードする命令デコード回路と、
    単一演算と複数の並列演算との一方を実行する演算論理回路と、を備え、
    前記単一演算は、前記命令デコード回路によりデコードされた第1の単一プロセッサ命令に対応して、前記nビットレジスタ回路から供給された少なくとも一つのm(m<n)ビットオペランドでの演算であり、
    前記演算論理回路は、前記mビットよりビット数の多いオペランドに対しては、前記単一演算を行わず、
    前記複数の並列演算は、前記命令デコード回路によりデコードされた第2の単一プロセッサ命令に対応して、前記nビットレジスタ回路から供給されたnビットオペランド中の少なくとも2つのビット部分での演算であることを特徴とするプロセッサ。
  2. 前記演算論理回路は、
    前記単一演算を実行可能な第1のmビット整数パイプ回路と、
    前記第1のmビット整数パイプ回路とともに、前記複数の並列演算を実行可能な第2のjビット整数パイプ回路と、を有することを特徴とする請求項1に記載のプロセッサ。
  3. 前記第2のjビット整数パイプ回路は、前記nビットレジスタ回路から供給されたjビットオペランドをもつ単一のプロセッサ命令を実行可能であることを特徴とする請求項2に記載のプロセッサ。
  4. 前記演算論理回路は、
    それぞれ複数ビットの演算を実行可能な複数の整数パイプ回路を備え、
    複数の前記単一演算命令が同時に発行された場合には、前記複数の整数パイプ回路を用いて前記複数の単一演算命令を並列実行し、
    前記単一演算命令と前記複数の並列演算命令とが同時に発行され、前記複数の並列演算命令が先の命令の場合には、前記複数の並列演算命令の実行が終了するまで、前記単一演算命令の実行を中断させ、
    前記単一演算命令と前記複数の並列演算命令とが同時に発行され、前記単一演算命令が先の命令の場合には、前記単一演算命令の実行が終了するまで、前記複数の並列演算命令の実行を中断させることを特徴とする請求項1〜3のいずれかに記載のプロセッサ。
  5. 命令オペランドを保持するnビットレジスタ回路と、
    命令ストリームからのプロセッサ命令をデコードする命令デコード回路と、
    複数の演算論理ユニットALU1〜ALUkを含む演算論理(AL)回路と、を備え、
    前記演算論理ユニットALUi(i=1〜k)のそれぞれは、前記命令デコード回路によりデコードされた第1の個別のプロセッサ命令に対応して、前記nビットレジスタ回路から供給された少なくとも一つの対応するmiビットオペランド(mi<n(ただし、i=1〜k))での個別の単一演算を実行可能であり、
    前記演算論理ユニットALUi(ただし、i=1〜k)は、miビットよりビット数の多いオペランドでの単一演算は実行せず、
    前記演算論理ユニット用のすべてのmi(ただし、i=1〜k)の合計は、n以下であり、
    前記演算論理ユニットのそれぞれは、前記命令デコード回路によりデコードされた第2の単一命令に対応して、前記nビットレジスタ回路から供給された一つのnビットオペランドの少なくとも二つのビット部分での複数の並列演算を実行可能であることを特徴とするプロセッサ。
  6. 前記演算論理ユニットのそれぞれに、対応するオペランドを引き渡すことを特徴とする請求項5に記載のプロセッサ。
  7. 前記演算論理ユニットのそれぞれは、
    それぞれ複数ビットの演算を実行可能な整数パイプ回路を備え、
    複数の前記単一演算命令が同時に発行された場合には、前記演算論理ユニットのそれぞれが有する前記整数パイプ回路を用いて前記複数の単一演算命令を並列実行し、
    前記単一演算命令と前記複数の並列演算命令とが同時に発行され、前記複数の並列演算命令が先の命令の場合には、前記複数の並列演算命令の実行が終了するまで、前記単一演算命令の実行を中断させ、
    前記単一演算命令と前記複数の並列演算命令とが同時に発行され、前記単一演算命令が先の命令の場合には、前記単一演算命令の実行が終了するまで、前記複数の並列演算命令の実行を中断させることを特徴とする請求項5または6に記載のプロセッサ。
  8. メモリと前記nビットレジスタ回路との間でオペランドを伝送するロード/ストア回路を備えることを特徴とする請求項1〜7のいずれかに記載のプロセッサ。
  9. 命令オペランドを保持するnビットレジスタ回路と、
    命令ストリームからのプロセッサ命令を順にデコードする命令デコード回路と、
    単一演算と複数の並列演算との一方を実行する演算論理回路と、を備えたプロセッサの命令処理方法であって、
    前記単一演算は、前記命令デコード回路によりデコードされた第1の単一プロセッサ命令に対応して、前記nビットレジスタ回路から供給された少なくとも一つのm(m<n)ビットオペランドでの演算であり、
    前記演算論理回路は、前記mビットよりビット数の多いオペランドに対しては、前記単一演算を行わず、
    前記複数の並列演算は、前記命令デコード回路によりデコードされた第2の単一プロセッサ命令に対応して、前記nビットレジスタ回路から供給されたnビットオペランド中の少なくとも2つのビット部分での演算であることを特徴とするプロセッサの命令処理方法。
  10. 命令オペランドを保持するnビットレジスタ回路と、
    命令ストリームからのプロセッサ命令をデコードする命令デコード回路と、
    複数の演算論理ユニットALU1〜ALUkを含む演算論理(AL)回路と、を備えたプロセッサの命令処理方法であって、
    前記演算論理ユニットALUi(i=1〜k)のそれぞれは、前記命令デコード回路によりデコードされた第1の個別のプロセッサ命令に対応して、前記nビットレジスタ回路から供給された少なくとも一つの対応するmiビットオペランド(mi<n(ただし、i=1〜k))での個別の単一演算を実行可能であり、
    前記演算論理ユニットALUi(ただし、i=1〜k)は、miビットよりビット数の多いオペランドでの単一演算は実行せず、
    前記演算論理ユニット用のすべてのmi(ただし、i=1〜k)の合計は、n以下であり、
    前記演算論理ユニットのそれぞれは、前記命令デコード回路によりデコードされた第2の単一命令に対応して、前記nビットレジスタ回路から供給された一つのnビットオペランドの少なくとも二つのビット部分での複数の並列演算を実行可能であることを特徴とするプロセッサの命令処理方法。
JP2000027755A 1999-02-04 2000-02-04 プロセッサおよびその命令処理方法 Expired - Fee Related JP3906003B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US244443 1999-02-04
US09/244,443 US6308252B1 (en) 1999-02-04 1999-02-04 Processor method and apparatus for performing single operand operation and multiple parallel operand operation

Publications (3)

Publication Number Publication Date
JP2000227858A JP2000227858A (ja) 2000-08-15
JP2000227858A5 JP2000227858A5 (ja) 2006-01-05
JP3906003B2 true JP3906003B2 (ja) 2007-04-18

Family

ID=22922793

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000027755A Expired - Fee Related JP3906003B2 (ja) 1999-02-04 2000-02-04 プロセッサおよびその命令処理方法

Country Status (2)

Country Link
US (1) US6308252B1 (ja)
JP (1) JP3906003B2 (ja)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8174530B2 (en) * 1999-04-09 2012-05-08 Rambus Inc. Parallel date processing apparatus
US7526630B2 (en) * 1999-04-09 2009-04-28 Clearspeed Technology, Plc Parallel data processing apparatus
US20080184017A1 (en) * 1999-04-09 2008-07-31 Dave Stuttard Parallel data processing apparatus
US8762691B2 (en) 1999-04-09 2014-06-24 Rambus Inc. Memory access consolidation for SIMD processing elements using transaction identifiers
US20080007562A1 (en) * 1999-04-09 2008-01-10 Dave Stuttard Parallel data processing apparatus
US7802079B2 (en) * 1999-04-09 2010-09-21 Clearspeed Technology Limited Parallel data processing apparatus
US20070294510A1 (en) * 1999-04-09 2007-12-20 Dave Stuttard Parallel data processing apparatus
US7627736B2 (en) * 1999-04-09 2009-12-01 Clearspeed Technology Plc Thread manager to control an array of processing elements
US20080008393A1 (en) * 1999-04-09 2008-01-10 Dave Stuttard Parallel data processing apparatus
US20080016318A1 (en) * 1999-04-09 2008-01-17 Dave Stuttard Parallel data processing apparatus
US7966475B2 (en) 1999-04-09 2011-06-21 Rambus Inc. Parallel data processing apparatus
US20070242074A1 (en) * 1999-04-09 2007-10-18 Dave Stuttard Parallel data processing apparatus
US8169440B2 (en) * 1999-04-09 2012-05-01 Rambus Inc. Parallel data processing apparatus
US7506136B2 (en) * 1999-04-09 2009-03-17 Clearspeed Technology Plc Parallel data processing apparatus
WO2000062182A2 (en) * 1999-04-09 2000-10-19 Clearspeed Technology Limited Parallel data processing apparatus
US8171263B2 (en) 1999-04-09 2012-05-01 Rambus Inc. Data processing apparatus comprising an array controller for separating an instruction stream processing instructions and data transfer instructions
US7401205B1 (en) * 1999-08-13 2008-07-15 Mips Technologies, Inc. High performance RISC instruction set digital signal processor having circular buffer and looping controls
US6766440B1 (en) * 2000-02-18 2004-07-20 Texas Instruments Incorporated Microprocessor with conditional cross path stall to minimize CPU cycle time length
US7308559B2 (en) * 2000-02-29 2007-12-11 International Business Machines Corporation Digital signal processor with cascaded SIMD organization
US6665790B1 (en) * 2000-02-29 2003-12-16 International Business Machines Corporation Vector register file with arbitrary vector addressing
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
JP2003186567A (ja) * 2001-12-19 2003-07-04 Matsushita Electric Ind Co Ltd マイクロプロセッサ
DE10206830B4 (de) * 2002-02-18 2004-10-14 Systemonic Ag Verfahren und Anordnung zur Zusammenführung von Daten aus parallelen Datenpfaden
US6944744B2 (en) * 2002-08-27 2005-09-13 Advanced Micro Devices, Inc. Apparatus and method for independently schedulable functional units with issue lock mechanism in a processor
US7017028B2 (en) * 2003-03-14 2006-03-21 International Business Machines Corporation Apparatus and method for updating pointers for indirect and parallel register access
JP4502662B2 (ja) * 2004-02-20 2010-07-14 アルテラ コーポレイション 乗算器−累算器ブロックモード分割
US9098932B2 (en) * 2004-08-11 2015-08-04 Ati Technologies Ulc Graphics processing logic with variable arithmetic logic unit control and method therefor
US7577869B2 (en) * 2004-08-11 2009-08-18 Ati Technologies Ulc Apparatus with redundant circuitry and method therefor
EP1831943B1 (en) 2004-12-31 2014-12-10 IUCF-HYU (Industry-University Cooperation Foundation Hanyang University) Method for preparing double-layer cathode active materials for lithium secondary batteries
US7711934B2 (en) * 2005-10-31 2010-05-04 Mips Technologies, Inc. Processor core and method for managing branch misprediction in an out-of-order processor pipeline
US7734901B2 (en) * 2005-10-31 2010-06-08 Mips Technologies, Inc. Processor core and method for managing program counter redirection in an out-of-order processor pipeline
US7721071B2 (en) * 2006-02-28 2010-05-18 Mips Technologies, Inc. System and method for propagating operand availability prediction bits with instructions through a pipeline in an out-of-order processor
US20070204139A1 (en) 2006-02-28 2007-08-30 Mips Technologies, Inc. Compact linked-list-based multi-threaded instruction graduation buffer
KR100822012B1 (ko) 2006-03-30 2008-04-14 한양대학교 산학협력단 리튬 전지용 양극 활물질, 그 제조 방법 및 그를 포함하는리튬 이차 전지
US20080016326A1 (en) 2006-07-14 2008-01-17 Mips Technologies, Inc. Latest producer tracking in an out-of-order processor, and applications thereof
US7370178B1 (en) * 2006-07-14 2008-05-06 Mips Technologies, Inc. Method for latest producer tracking in an out-of-order processor, and applications thereof
US7650465B2 (en) 2006-08-18 2010-01-19 Mips Technologies, Inc. Micro tag array having way selection bits for reducing data cache access power
US7657708B2 (en) * 2006-08-18 2010-02-02 Mips Technologies, Inc. Methods for reducing data cache access power in a processor using way selection bits
US7647475B2 (en) * 2006-09-06 2010-01-12 Mips Technologies, Inc. System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue
US8032734B2 (en) * 2006-09-06 2011-10-04 Mips Technologies, Inc. Coprocessor load data queue for interfacing an out-of-order execution unit with an in-order coprocessor
US8078846B2 (en) 2006-09-29 2011-12-13 Mips Technologies, Inc. Conditional move instruction formed into one decoded instruction to be graduated and another decoded instruction to be invalidated
US7594079B2 (en) 2006-09-29 2009-09-22 Mips Technologies, Inc. Data cache virtual hint way prediction, and applications thereof
US20080082793A1 (en) * 2006-09-29 2008-04-03 Mips Technologies, Inc. Detection and prevention of write-after-write hazards, and applications thereof
US9946547B2 (en) * 2006-09-29 2018-04-17 Arm Finance Overseas Limited Load/store unit for a processor, and applications thereof
KR100896269B1 (ko) 2006-12-05 2009-05-08 한국전자통신연구원 SIMD/SISD/Row/Column 동작을 할 수있는 SIMD 병렬 프로세서
US9135017B2 (en) * 2007-01-16 2015-09-15 Ati Technologies Ulc Configurable shader ALU units
US20080209185A1 (en) * 2007-02-28 2008-08-28 Advanced Micro Devices, Inc. Processor with reconfigurable floating point unit
US7565513B2 (en) * 2007-02-28 2009-07-21 Advanced Micro Devices, Inc. Processor with power saving reconfigurable floating point unit decoding an instruction to single full bit operation or multiple reduced bit operations
US8438003B2 (en) * 2007-04-12 2013-05-07 Cadence Design Systems, Inc. Methods for improved simulation of integrated circuit designs
US9037931B2 (en) 2011-12-21 2015-05-19 Advanced Micro Devices, Inc. Methods and systems for logic device defect tolerant redundancy
CN104247102B (zh) 2012-03-31 2017-01-25 汉阳大学校产学协力团 锂二次电池用正极活性物质前驱体的制备方法、由此制备的锂二次电池用正极活性物质前驱体及包括其在内的锂二次电池用正极活性物质
US10534614B2 (en) * 2012-06-08 2020-01-14 MIPS Tech, LLC Rescheduling threads using different cores in a multithreaded microprocessor having a shared register pool
KR101568263B1 (ko) 2014-08-07 2015-11-11 주식회사 에코프로 리튬 이차 전지용 양극활물질 및 이를 포함하는 리튬 이차 전지
KR101577179B1 (ko) 2014-09-11 2015-12-16 주식회사 에코프로 리튬 이차 전지용 양극활물질 및 이를 포함하는 리튬 이차 전지
KR101555594B1 (ko) 2014-10-02 2015-10-06 주식회사 에코프로 리튬 이차 전지용 양극활물질 및 이를 포함하는 리튬 이차 전지
US11269651B2 (en) * 2019-09-10 2022-03-08 International Business Machines Corporation Reusing adjacent SIMD unit for fast wide result generation

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8820237D0 (en) * 1988-08-25 1988-09-28 Amt Holdings Processor array systems
US5852726A (en) * 1995-12-19 1998-12-22 Intel Corporation Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner
US6122725A (en) * 1998-03-31 2000-09-19 Intel Corporation Executing partial-width packed data instructions

Also Published As

Publication number Publication date
JP2000227858A (ja) 2000-08-15
US6308252B1 (en) 2001-10-23

Similar Documents

Publication Publication Date Title
JP3906003B2 (ja) プロセッサおよびその命令処理方法
US10469397B2 (en) Processors and methods with configurable network-based dataflow operator circuits
EP3719654A1 (en) Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US7028170B2 (en) Processing architecture having a compare capability
US7680873B2 (en) Methods and apparatus for efficient complex long multiplication and covariance matrix implementation
JP5918287B2 (ja) 演算マスクのマスクされていない要素をコンソリデートする命令処理装置、方法、システム、及びプログラム
EP3776228A1 (en) Apparatuses, methods, and systems for unstructured data flow in a configurable spatial accelerator
US6446190B1 (en) Register file indexing methods and apparatus for providing indirect control of register addressing in a VLIW processor
US10678724B1 (en) Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
JPH09311786A (ja) データ処理装置
US20210200541A1 (en) Apparatuses, methods, and systems for configurable operand size operations in an operation configurable spatial accelerator
US20220100680A1 (en) Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits
KR20030067892A (ko) 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법
JP2021057004A (ja) 行列演算アクセラレータの命令のための装置、方法、及びシステム
JP2000122864A (ja) デ―タ処理システムおよび集合化を用いた命令システム
JPH11282679A (ja) 演算処理装置
US7013321B2 (en) Methods and apparatus for performing parallel integer multiply accumulate operations
JP3578883B2 (ja) データ処理装置
US7558816B2 (en) Methods and apparatus for performing pixel average operations
US20030037085A1 (en) Field processing unit
JPH05150979A (ja) 即値オペランド拡張方式
US20100115232A1 (en) Large integer support in vector operations
JP2002063025A (ja) 可変長データ処理用プロセッサ
US6654870B1 (en) Methods and apparatus for establishing port priority functions in a VLIW processor
US6519696B1 (en) Paired register exchange using renaming register map

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051114

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051114

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061003

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061204

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: 20070109

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070115

R151 Written notification of patent or utility model registration

Ref document number: 3906003

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110119

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120119

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130119

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130119

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140119

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees