JP5047944B2 - データアクセス及び置換ユニット - Google Patents

データアクセス及び置換ユニット Download PDF

Info

Publication number
JP5047944B2
JP5047944B2 JP2008504843A JP2008504843A JP5047944B2 JP 5047944 B2 JP5047944 B2 JP 5047944B2 JP 2008504843 A JP2008504843 A JP 2008504843A JP 2008504843 A JP2008504843 A JP 2008504843A JP 5047944 B2 JP5047944 B2 JP 5047944B2
Authority
JP
Japan
Prior art keywords
replacement
data processing
data
register
processing unit
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.)
Active
Application number
JP2008504843A
Other languages
English (en)
Other versions
JP2008535115A (ja
Inventor
サイモン・ノウルズ
スティーブン・フェリックス
Original Assignee
イセラ・インコーポレーテッド
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 イセラ・インコーポレーテッド filed Critical イセラ・インコーポレーテッド
Publication of JP2008535115A publication Critical patent/JP2008535115A/ja
Application granted granted Critical
Publication of JP5047944B2 publication Critical patent/JP5047944B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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
    • 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/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、コンピュータプロセッサ用のデータ処理ユニットと、これを動作させる方法と、コンピュータプロセッサ用の命令集合を利用するコンピュータ・プログラム・プロダクトと、命令と、に関する。
通常、デジタル信号処理アプリケーションコードは、一般的に、データベクトルと係数ベクトルを組み合わせることによって、ベクトルに対する算術処理を行う。よくある例は、たたみこみの処理であるが、他のベクトル処理は、同様な特性を共有する。データ及び係数ベクトルは、様々なサイズであり、かなり長いことが多く、このため、マシンがベクトル機能を文字通り実現することは、一般的に実用的ではない。その代わり、マシンが、ベクトルのより小さい部分について直接演算するのが実用的であることが分かっている。
1つの公知の方法では、単一命令複数データ(SIMD)手法は、命令に含まれる単一の演算を1つ又は複数の短いデータベクトルの各要素に適用する。SIMDマシンのレジスタは、そのような短いデータベクトルを保持するように構成され、例えば、64ビットレジスタは、短ベクトル又はより大きなベクトルの一部を形成する4つの16ビットデータ要素を含み得る。SIMD手法は、プロセッサのサイクル当りの演算を増やすことによって、デジタル信号プロセッサ性能を向上させる効果的な方法である。
従って、通常、デジタル信号処理プログラムは、長ベクトル演算を行うために短ベクトルSIMDマシンを用いる。そのようにするために、プログラム構造は、往々にして、算術演算をベクトル置換演算とインターリーブする必要がある。ベクトル置換は、例えば、マシンの短ベクトルデータ経路にオペランドとして供給されるアルゴリズムの長ベクトルから要素を収集するために、又は、短ベクトル演算からの結果要素を長ベクトル結果の異なる場所に分散するために、必要なことがある。
本発明の一態様にり、コンピュータプロセッサ用のデータ処理ユニットを提供する。データ処理ユニットには、コンピュータプロセッサのレジスタファイルからアクセスされる少なくとも1つのデータオペランドに対して、データアクセス命令に応答して、置換演算を行うことが可能なレジスタ・アクセス・メカニズムが含まれる。置換演算は、データオペランドに対するレジスタアクセスと、データオペランドに対するデータ処理動作の実行との双方に直列に行われる。
好適には、データ処理ユニットは、単一のベクトル・レジスタ・オペランドに対して置換演算を行うことが可能である。また、好適には、複数のベクトル・レジスタ・オペランドに対して組み合わせ置換演算を行うことが可能である。更により好適には、前記複数のベクトル・レジスタ・オペランドに対する組み合わせ置換演算は、単一のベクトル・レジスタ・オペランドに対する置換演算と同時に行い得る。好適な一実施形態において、データ処理ユニットは、従って、第1及び第2オペランド又はオペランドグループに対して異なる置換演算を行うことが可能である。レジスタ・アクセス・メカニズムは、好適には、コンピュータプロセッサに発せられた単一のプログラム命令に基づき、レジスタアクセスと直列に置換演算を行うことが可能である。好適な一実施形態において、データ処理ユニットは、単一のデータ処理命令のデータオペランドに対して多数の連続演算を行うことが可能である。
開示された実施形態において、置換演算は、データ処理動作の実行に先行する。しかしながら、本発明によるデータ処理ユニットは、その代わり、データ処理動作の実行に続き置換演算を行い得ることを当業者は認識されたい。ある実施形態において、ハードウェアは、第1置換演算が、データ処理動作の実行に先行し、第2置換演算が、データ処理動作の実行に続くように定める。
好適には、置換演算のタイプは、データ処理命令の演算コード部に基づき、複数の置換演算タイプから選択される。実行されたデータ処理動作は、算術演算、論理演算、後続の置換演算、及びプロセッサメモリ読み出し又は書き込み動作の1つ又は複数から選択し得る。
開示された一実施形態において、レジスタ・アクセス・メカニズムには、レジスタファイル読み出し段及びクロスバー多重化装置段(本明細書では、「クロスバースイッチング段」とも呼ぶ)が含まれる。その場合、レジスタ・アクセス・メカニズムには、複数の置換演算タイプから選択された置換演算のタイプを決定するための一組のクロスバー制御入力が含まれる。複数の置換演算タイプには、ロール置換、ソート置換、シャフル置換、ブロードキャスト置換、選択置換、及び他のタイプの置換を含み得る。置換演算のタイプは、命令の演算コード部に基づき、複数の置換演算タイプから選択し得る。即ち、命令中の置換演算コードは、レジスタ・アクセス・メカニズムの適切な入力に一組の制御入力を供給するデコーダによって復号される。
ある実施形態において、実行経路には、SIMD(単一命令多数データ)回路が含まれる。
レジスタ・アクセス・メカニズムは、通常、第1ソースオペランド対に対して第1タイプの置換演算を行い、また、少なくとも1つの第2ソースオペランドに対して第2タイプの置換演算を行うことが可能である。好適な実施形態において、実行ユニットは、単一命令複数データ実行が可能である。例えば、第1タイプの置換演算には、ロール置換、ソート置換及びシャフル置換からなるグループからの置換を含んでよく、また、第2タイプの置換演算には、ブロードキャスト置換を含んでよく、第1及び第2置換演算双方の結果が、SIMD実行経路に供給される。
好適な実施形態には、特定の用途があり、この場合、データ処理ユニットは、高速フーリエ変換、ビタビ符号化、ターボ符号化、有限インパルス応答フィルタアルゴリズム、又は他の通信アルゴリズムからなるグループからのアルゴリズムの少なくとも一部を行う必要がある。
限定しようとするものではないが、開示された実施形態の第1及び第2タイプの置換演算には、1つ又は2つの64ビットデータレジスタソース引数を有する演算が含まれる。例えば、第1タイプの置換演算によって、ロール演算は、2つの64ビットソース値からの単一の64ビット結果を形成し得る。64ビット結果は、整数の16ビット半フィールドだけ左にロールされたソース値に対応する。他の例において、第1タイプの置換演算によって、ソート演算は、2つの64ビット値からの単一の64ビット結果を形成し得る。64ビット結果は、ソート結果の最上位又は最下位64ビットとして選択可能である。第2タイプの置換演算によって、ブロードキャスト演算は、64ビット結果における4つの16ビットレーンに渡って、選択された16ビット半ワードを繰り返すことが可能である。
本発明の他の態様により、コンピュータプロセッサ用のデータ処理ユニットを動作させる方法を提供する。本方法には、コンピュータプロセッサのレジスタファイルからアクセスされる複数のデータオペランドの内の少なくとも1つに対して、データアクセス命令に応答して、置換演算を行う段階が含まれる。置換演算は、(i)データオペランドを得るためにレジスタにアクセスするステップと、(ii)データオペランドに対してデータ処理動作を実行するステップと、直列に行われる。
本発明の他の態様は、一連の命令を含むプログラムコード手段が含まれるコンピュータ・プログラム・プロダクトを提供する。この場合、コンピュータ・プログラム・プロダクトは、コンピュータ上で走るように構成され、これにより、単一のデータアクセス命令は、このデータアクセス命令の少なくとも一部によって決定されるタイプの置換演算が、アクセスされた少なくとも1つのデータオペランドに対して行われるように実行可能である。置換演算は、(i)データオペランドを得るためにレジスタにアクセスするステップと、(ii)データオペランドに対してデータ処理動作を実行するステップと、直列に行われる。
本発明の他の態様により、直列レジスタアクセス、ベクトル置換、及び単一の命令に応答したデータ処理動作の実行を行う段階が含まれる方法を提供する。
本発明の他の態様により、直列接続で、レジスタアクセスユニット、ベクトル置換機能、及び少なくとも1つの実行経路が含まれるコンピュータプロセッサを提供する。本装置には、更に、単一の命令に応答して、少なくとも1つのベクトルオペランドへのアクセスを制御するように、少なくとも1つのベクトルオペランドを選択的に置換するように、また、少なくとも1つの更なる演算を実行するように動作可能な復号化ユニットが含まれる。
本発明の他の態様により、命令を提供する。この命令には、データアクセスのタイプを定義するデータアクセス演算コード部と、置換演算のタイプを定義する置換演算コード部と、更なる演算を定義する実行演算コード部と、少なくとも1つのデータオペランドソース指定と、が含まれる。
本発明の他の態様により、コンピュータ用のデータ処理ユニットを提供する。本データ処理ユニットには、レジスタファイルと、データアクセス命令に基づき、前記レジスタファイルにおける少なくとも1つのデータオペランドにアクセスすることが可能なレジスタアクセス・置換メカニズムと、が含まれる。前記レジスタアクセス・置換メカニズムには、前記命令の置換演算コード部に基づき、前記アクセスされたデータオペランドを選択的に置換するように動作可能な置換回路と、前記レジスタアクセス・置換メカニズムと直列に配置されたデータ実行経路と、が含まれる。前記データ実行経路は、前記命令の実行演算コード部に基づき、前記選択的に置換されたデータオペランドに対して演算を行うように動作可能である。
好適な一実施形態において、前記レジスタアクセス・置換メカニズムには、前記レジスタファイルと前記実行経路との間に接続されたデコーダレジスタファイル読み出し(及び書き込み)段が含まれる。好適には、前記レジスタアクセス・置換メカニズムには、前記デコーダレジスタファイル読み出し段と前記実行経路との間に接続された少なくとも1つの多重化装置段が含まれる。通常、前記レジスタアクセス・置換メカニズムには、更に、前記デコーダレジスタファイル読み出し段と前記実行経路との間に接続された列多重化装置段が含まれる。更により好適には、前記レジスタアクセス・置換メカニズムには、更に、前記デコーダレジスタファイル読み出し段と前記実行経路との間に接続されたクロスバー多重化装置段が含まれる。好適な実施形態において、クロスバー多重化装置段は、前記列多重化装置段と前記実行経路との間に接続される。
本発明の他の態様によれば、置換制御入力は、前記デコーダレジスタファイル読み出し段、前記多重化装置段、前記列多重化装置段、及び前記クロスバー多重化装置段の1つ又は複数に供給される。
本発明の他の態様によれば、バイパス回路が、前記実行レーンの出力と前記レジスタアクセス・置換メカニズムの入力との間に接続される。
特定の好適な一実施形態において、データ処理ユニットには、第1及び第2レジスタアクセス・置換メカニズムが含まれる。第1レジスタアクセス・置換メカニズムは、第1及び第2オペランドにアクセスするように、また、ロール、ソート、及びシャフルの内の1つ又は複数から選択された置換を行うように構成し得る。第2レジスタアクセス・置換メカニズムは、少なくとも1つの更なるオペランドにアクセスするように、また、ブロードキャスト置換を行うように構成し得る。
上記実施形態において、第1及び第2レジスタアクセス・置換メカニズムには、各々、(i)前記レジスタファイルと前記実行経路との間に接続されたデコーダレジスタファイル読み出し段と、(ii)前記デコーダレジスタファイル読み出し段と前記実行経路との間に接続された少なくとも1つの多重化装置段と、の内の1つ又は複数が含まれる。好適には、多重化装置段には、(i)前記デコーダレジスタファイル読み出し段と実行経路との間に接続された列多重化装置段と、(ii)前記列多重化装置段と前記実行経路との間に接続されたクロスバー多重化装置段と、の内の1つ又は複数が含まれる。
本発明の他の態様は、単一の命令に応答して、データオペランドにアクセスし、それらを選択的に置換することが可能であり、また、前記選択的に置換されたオペランドをSIMD実行経路に供給することが可能なデータアクセス・置換回路を提供することである。
本発明の他の利点及び新規の特徴は、以下の説明に部分的に記載されており、下記内容及び添付図面を精査すると、部分的に、当業者には明らかになるであろう。あるいは、本発明の実践によって習得されるであろう。
次に、本発明をより良く理解するために、また、如何にして本発明を実施するか示すために、一例として、添付図面を参照する。
本発明による一実施形態において、SIMDプロセッサは、単一の命令によって駆動される二段データ経路を用いて、レジスタアクセス中、或るタイプのベクトル置換を算術演算と共に逐次的に行う。このタイプの演算は、本明細書では、“直列”演算と称する。プロセッサは、従って、明示的な置換命令が、SIMDメモリアクセス、論理、及び算術命令と共にプログラムに含まれる必要性を除去又は低減する。その代わり、各命令は、SIMD演算及びSIMD演算の前に適用される関連するオペランド置換(必要ならば)の双方を指定し得る。従って、プログラムサイズは、減少し、マシン性能は向上する。
SIMDプロセッサが、レジスタアクセス中、算術演算と直列に置換を行う本発明による一実施形態と比べて、従来技術によるSIMDプロセッサは、明示的な置換命令が、関連する算術演算と共にプログラムに含まれる必要がある。従来技術によるSIMDプロセッサと本発明による一実施形態との間の基本的なアーキテクチャの差異は、図1及び2を参照すると分かる。図1は、従来技術によるSIMDプロセッサの基本的なアーキテクチャを示し、ここでは、レジスタファイル101からのデータは、並列に構成された置換ユニット102又は実行ユニット103のいずれかによって用いられる。明らかなように、置換ユニット102によって置換されるデータは、実行ユニット103によってオペランドとして引き続き用い得る前に、経路104でレジスタファイルにフィードバックしなければならない。これに対して、図2は、本発明による一実施形態のアーキテクチャを示し、ここでは、レジスタファイル201からのオペランドは、置換ユニット202を通過し、そして、置換されたオペランドを実行ユニット203に直接供給する。本発明の実施形態では、置換されたオペランドを実行ユニットに供給する前に、レジスタファイルに再度供給する必要はない。従って、図1の従来技術によるプロセッサの並列アーキテクチャ102乃至103は、図2の実施形態の直列アーキテクチャ202乃至203によって置き換えられるが、これは、以下において分かるように、図16乃至18のハードウェアを用いて実現し得る。本発明による一実施形態の直列アーキテクチャは、特に、マシンハードウェアの短ベクトル幅をプロセッサメモリ又はレジスタファイルの長ベクトル幅に整合させるために、頻繁なデータオペランドの置換を用いる信号処理アルゴリズムに対して多くの性能利点を有する。パイプライン化されたプロセッサでは、SIMD実行による置換の直列化から待ち時間が追加されるという不利益が生じることがあるが、この追加の待ち時間が、本発明の実施形態の性能利点を相殺しないように、信号処理プログラムを体系化し得る。レジスタアクセス、ベクトル置換及び実行(特にSIMD実行)の直列化は、本明細書では、“深いレジスタアクセス”と称することがある。
本発明による実施形態において、直列のベクトル置換は、データ処理命令のような命令の1つ又は複数のオペランドに適用し得る。2つのソースオペランド及び1つの結果オペランドを有する命令を用いるSIMDマシンでは、或るタイプの置換を1つのソースオペランドに適用しつつ、異なるタイプの置換を他のソースオペランドに適用することは、特に有用である。
本発明の一実施形態に基づき、ブロードキャスト、ロール、及びソート等、3つのクラスの順次置換が、デジタル信号処理にとって特に有用なことが分かった。シャフルと呼ばれる第4クラスの置換は、(発行アルゴリズム又はそのデータの何らかの再構成による)ソートに対する他の選択肢として頻繁に用い得るが、それは、更に多様なレジスタファイルアクセス能力を必要とする点において、ソートより不利であることが分かっている。しかしながら、本発明の実施形態では、このクラスのシャフルを用いることがある。
第1クラスの順次置換において、本発明による一実施形態は、直列のブロードキャスト置換を提供する。この実施形態は、有限インパルス応答(FIR)フィルタ等のたたみこみ処理を行う場合に特に有用であるが、これは、通常、単一の係数要素を長データベクトルの各要素と組み合わせる。マシンの短ベクトル(例えば、SIMD)レジスタを効率的に用いるために、幾つかのそのような係数要素は、各レジスタに詰め込まれる。ブロードキャスト置換の目的は、従って、短ベクトル・レジスタ・オペランドから単一の要素を抽出して、SIMD実行ユニットに渡される短ベクトルの全要素にそれを複製することである。
第2クラスの順次置換において、本発明による一実施形態は、直列のロール置換を提供する。この実施形態は、或るFIRフィルタ等の“スライディング・ウィンドウ”アルゴリズムにとって特に有用である。そのようなフィルタでは、2つの長ベクトルが、要素対で組み合わせられ、そして、1つのベクトルが、1つの要素位置だけシフトされ、要素対演算が繰り返され、そして、そのベクトルは、再度シフトされ、要素対演算が、繰り返され、以下同様に行われる。従来のマシンでは、係数の数が多く、また、フィルタ処理されるデータベクトルが大きい場合、係数及びデータベクトルは、双方共、レジスタ内よりもむしろプロセッサの外部メモリに常駐しなければならない。SIMDマシンの場合、そのような“スライディング・ウィンドウ”アルゴリズムは、通常、プロセッサが、任意のベクトル要素配列(“未配列”アクセス)の短ベクトルを、例えば、16ビット配列の64ビットワードをメモリからロードできることを意味する。従来のマシンでは、このことは、スライディング・ウィンドウが、短ベクトルの幅に渡って移動するにつれて、各要素が、外部メモリから複数回(例えば、16ビット配列の64ビットワードの場合、4回)ロードされねばならないことを意味する。外部メモリロード数が非常に多いことから、従来の手法は、従って、電力及びメモリ帯域幅の点で高価である。更に、通常、未配列アクセスが可能なメモリシステムを設計することは、更に困難で高価である。
これに対して、本発明による一実施形態のロール置換によって、外部メモリの繰り返され体系化された未配列アクセスは、かなり少ない回数の配列メモリアクセスによって置き換え得る。ロール置換実施形態では、短ベクトルオペランドは、レジスタファイルにおける2つの隣接する短ベクトルの連結から抽出される。従って、このタイプの置換演算では、2つの隣接するレジスタ値を読み出す必要があり、そして、置換が、実行ユニットに渡される単一の短ベクトルを抽出するために適用される。例えば、要素当り16ビットの4要素ベクトルを各々含む2つの64ビットレジスタ値は、図3A乃至Cに示した変換の内の1つを用いて、共にロールして、64ビットの単一の4要素ベクトルを形成し得る。外部メモリに繰り返しアクセスする代わりに、今度は、プロセッサは、レジスタファイルにアクセスするが、これは、通常、利用可能な帯域幅がより大きく、また、アクセス当りの電力コストがより少ない。更に、プロセッサメモリシステムは、未配列アクセスをサポートする必要がないことから、簡略化し得る。
第3クラスの順次置換において、本発明による一実施形態は、直列のソート及び/又はシャフル置換を提供する。シャフル置換において、2つのベクトルの要素は、インターリーブされ、他方、ソート置換では、偶数及び奇数要素は、分離(デインターリーブ)される。これらのタイプの置換は、高速フーリエ変換、ビタビ、及びターボコードアルゴリズム、及び他の通常のアルゴリズムに用いられる。一般的に、プログラマは、主に又は全体的にシャフルに優先してソートを用いるように又はその逆にアルゴリズムを形成するように選択し得る。
本発明の一実施形態による直列のソート置換において、長ベクトルの2つの短ベクトル部分は、2つの隣接するレジスタから読み出され、ソート演算が適用され、それらを後続のSIMD算術演算用の1つの短ベクトルオペランドに組み合わせる。ソートされている長ベクトルの実効的な長さが何であれ、組み合わせられる2つの短ベクトル部分は、常に、隣接するレジスタに常駐するのに好都合なように構成し得る。この特性は、当然、図14と図12A乃至13を比較することによって分かるように、シャフルには該当しない。従って、シャフルは、一般的に、2つの非隣接レジスタ値(大きなベクトルのサイズに依存する離隔距離の範囲)の読み出しを必要とし、上述したように、ソートがシャフルより好適になる。しかしながら、シャフル及びソートを自由に混在して使用できれば、プログラマの仕事が簡素化され、これにより、本発明の幾つかの実施形態において、非隣接レジスタ対にアクセスする新たな複雑化を正当化し得る。
本発明の一実施形態に基づき、ソースオペランドとしてデータレジスタを用いるデータ処理命令は、深いレジスタアクセス演算として知られる直列の置換演算を用いて、レジスタが読み出された時生成される値に対して選択された置換演算を行う。好適な実施形態では、特別なアセンブリ言語シンタックスは、深いレジスタアクセスによって実施される置換やそれがどのレジスタ用いるか示すために用いられる。2つの形態の深いレジスタアクセスがあるが、実行ユニットに送られる各データオペランドに対して1つであり、第1形態は、DRAアクセスで示し、第2形態は、DRAアクセスで示す。各データレジスタソースは、多数のレーン幅要素、例えば、16bの各々が64bレジスタソースを含む4つのレーンが含まれる短ベクトルと見なし得る。レジスタソース及びその構成要素は、双方共、文脈に依存して、“オペランド”と呼称し得る。DRAアクセスにおいて、置換演算は、レジスタソースの要素のシャフル及びソートに、また、要素(レーン)幅の倍数だけの要素のロールに利用可能である。シャフル及びソートは、それぞれ、1つ又は2つのレジスタソースからのレーン幅要素のインターリーブ及びデインターリーブを意味する。ロールは、2つのレジスタソースの連結からのレーン幅要素の隣接レジスタ幅グループの選択を意味する。DRAアクセスにおいて、置換演算は、選択されたレーンから抜き取られた要素をレジスタオペランドの全レーンにブロードキャストするのに利用可能である
表1は、本発明の一実施形態に基づく、第1データレジスタソース引数用のロール及びソート置換を行うために用い得るDRA演算の例を詳述する。表1において、値0である第1の64ビット値用のレジスタレーンは、0、1、2、及び3で表す。ここで、レーン0は、値0の最下位ビット0乃至15を示し、レーン1は、ビット16乃至31を示し、レーン2は、ビット32乃至47を示し、レーン3は、ビット48乃至63を示す。他方、値1である第2の64ビット値用のレジスタレーンは、A、B、C、及びDで表す。ここで、レーンAは、値1の最下位ビット0乃至15を示し、レーンBは、ビット16乃至31を示し、レーンCは、ビット32乃至47を示し、レーンDは、ビット48乃至63を示す。示した置換の組は、レジスタ$di及び$djを利用するが、ここで、i=0・・・63、j=((i+1)%64)である。表1の列は、組立シンタックス、意味、レーン、及びDRA演算用の演算を示す。
Figure 0005047944
図3A乃至3Cは、本発明の一実施形態に基づく表1の置換演算を示す。図3A乃至3Cに示すように、表1のRoll3HaIf、Roll2Half、及びRoll1HaIf演算は、2つの64ビット値をとり、(それぞれ)3つ、2つ、又は1つの16ビットフィールドだけ左側にロールされるソース値に対応する単一の64ビット結果を形成する。用語「半分」(又は半ワード)は、慣習的に16ビット値を意味する。表1のSort4MHalf及びSort4LHalf演算は、2つの64ビット値を組み合わせて64ビット結果にして、(それぞれ)最上位又は最下位64ビット結果のいずれかを生成する。表1のソート置換は、図9Bでのようにグラフを用いて表し得る。
以下の表2は、本発明の一実施形態に基づく、第2データレジスタソース引数用のブロードキャスト置換を行うために用い得るDRA演算の例を詳述する。表2において、値である64ビット値用のレジスタレーンは、0、1、2、及び3で表し、ここで、レーン0は、値の最下位ビット0乃至15を示し、レーン1は、ビット16乃至31を示し、レーン2は、ビット32乃至47を示し、レーン3は、ビット48乃至63を示す。示した置換の組は、レジスタ$diを利用するが、ここで、i=0・・・63である。表2の列は、組立シンタックス、意味、レーン、及びDRA演算用の演算を示す。
Figure 0005047944
図4A及びBは、本発明の一実施形態に基づく表2の置換演算を示す。図4Aに示すように、表2のBCastHalf演算は、4つの可能な16ビット半ソース値の内の1つを選択し、結果における4つの16ビットレーンに渡ってそれを複製する。図4Bに示すように、表2のBCastWord演算は、2つの可能なワードソース値の内の1つを選択し、結果における2つの32ビットレーンに渡ってそれを複製する。
表1及び2の演算を拡張して、図5A乃至11は、本発明の一実施形態に基づき行い得る直列のシャフル及びソート置換の例を示す。
図5A乃至8は、本発明の一実施形態に基づき“直列”に行い得る16ビット要素が64ビットレジスタのアレイに格納されたベクトルのシャフルを示す。
図5Aは、各々2つの16ビット要素からなる2つのベクトルをインターリーブするためのシャフルを示す。図5B及び5Cは、各々4つの16ビット要素からなる2つのベクトルをインターリーブするためのシャフルの他の選択肢としての表現を示す。図6A及び6Bは、各々8つの16ビット要素からなる2つのベクトルをインターリーブするためのシャフルの他の選択肢としての表現を示す。図7は、各々16の16ビット要素からなる2つのベクトルをインターリーブするためのシャフルを示す。図8は、各々32の16ビット要素からなる2つのベクトルをインターリーブするためのシャフルを示す。
図9A乃至11は、本発明の一実施形態に基づき“直列”に行い得る、16ビット要素が64ビットレジスタのアレイに格納されたベクトルのソートを示す。図9Aは、各々2つの16ビット要素からなる2つのベクトルをデインターリーブするためのソートを示す。図9B及び9Cは、各々4つの16ビット要素からなる2つのベクトルをデインターリーブするための他の選択肢としてのソートの表現を示す。図1OA及び1OBは、各々8つの16ビット要素からなる2つのベクトルをデインターリーブするための他の選択肢としてのソートの表現を示す。図11は、各々16の16ビット要素からなる2つのベクトルをデインターリーブするためのソートを示す。
図12A乃至12C及び13は、本発明の一実施形態に基づく、図5A乃至8のシャフル演算をサポートする一組のサブレジスタ・アクセス・パターンを示す。図12Aは、図5Aでのように、2つの16ビット要素を備えたベクトルをシャフルするためのサブレジスタ・アクセス・パターンを示す。図12Bは、図5B及び5Cでのように、4つの16ビット要素を備えたベクトルをシャフルするためのサブレジスタ・アクセス・パターンを示す。図12Cは、図6A及び6Bでのように、8つの16ビット要素を備えたベクトルをシャフルするためのサブレジスタ・アクセス・パターンを示す。図13は、図7でのように、16の16ビット要素を備えたベクトルをシャフルするためのサブレジスタ・アクセス・パターンを示す。図12A乃至13では、各々、各図の左半分に示した2つのレジスタにおける4つのレジスタ要素(即ち、図12Aの要素1218乃至1221、図12Bの1201乃至1204、図12Cの1210乃至1213、図13の1314乃至1317)のいずれかへのアクセスが必要であり、又は、各図の右半分に示した2つのレジスタにおける4つのレジスタ要素(即ち、図12Aの要素1222乃至1225、図12Bの1205乃至1208、図12Cの1226乃至1229、図13の1330乃至1333)へのアクセスが必要である。また、各図の矢印1209、1234、及び1335は、アレイのベースを基準にして、各サブレジスタ・アクセス・パターン用の範囲の配列を示す。
図14は、本発明の一実施形態に基づく、図9A乃至11のソート演算をサポートするサブレジスタ・アクセス・パターンを示す。1つのパターンだけが、図9A乃至11のソート演算全てに必要である。4つの要素1401乃至1404又は4つの要素1405乃至1408のいずれかへのアクセスが必要である。ソースレジスタは、常に隣接することから、依存性チェックは、またがるレジスタ対(上記シャフルに必要なもの等)の場合より簡単であり、レジスタアクセスも同様である。
図15は、本発明の一実施形態による直列の置換を用い得るコンピュータシステムのアーキテクチャブロック図を示す。命令フェッチユニット1502は、命令メモリ1501から命令を得て、それらを命令復号化ユニット1503に渡す。復号化ユニット1503は、オペランド又は各オペランドに関する位置情報を含む、命令の様々な構成要素を復号し、それに基づき、制御出力を提供する。命令復号化ユニット1503は、命令がその演算に用いる少なくとも1つのオペランドのアドレスを命令から取得し、そのアドレスは、レジスタファイル1504から対応するデータを得るために用いられる1508。また、命令復号化ユニット1503は、置換演算コードを命令から取得し、置換演算コードは、置換演算の性質を決定するために用いられ1507、この置換演算は、同じ命令によりレジスタファイル1504から得られたデータに対して置換ユニット1505によって行われる。更に、命令復号化ユニット1503は、実行演算コードを命令から取得し、実行演算コードは、置換ユニット1505を介して提供されたベクトルオペランド(1つ又は複数)の各要素に対してSIMD実行ユニット1506によって行われる演算の性質を決定するために用いられる1509。従って、データアクセスのタイプ及び場所、アクセスされたベクトル要素に対する置換の性質、及び置換されたベクトルの要素に対して引き続き行われるSIMD演算の性質は、単一の命令において定義される。
図16は、本発明の一実施形態による直列置換を用い得る、図15におけるレジスタファイル1504、置換ユニット1505、及び実行ユニット1506の組み合わせに対応するプロセッサデータ経路1610のブロック図を示す。本実施形態において、ソースオペランドとしてデータレジスタを用いるデータ処理命令は、レジスタが読み出された時生成される値に対して、選択された置換演算を行う深いレジスタ・アクセス・メカニズム1646A、Bを用いる。
本例において、図16の実施形態のプロセッサデータ経路1610は、実行レーン出力Z0乃至Z3からバイパス多重化装置1647を介して、深いレジスタアクセスブロック1646A及び1646Bを通り、また、実行レーン1626乃至1629を通るループによって閉じられた経路毎に少なくとも1つの組のパイプラインレジスタが存在するように、パイプライン化される。当業者は、任意の適切なパイプライン方式を用い得ることを認識されるであろう。
図16の実施形態の読み出しユニット1632において、3つの64ビットの短ベクトルレジスタ値が、データレジスタファイル1638から読み出され、置換され、2つの64ビットベクトルオペランド1639及び1640が、命令中の置換演算コードに基づき、上述した様々な直列の置換演算を実現する深いレジスタアクセスユニット1646A及び1646Bによって形成される。これら2つの置換されたベクトルオペランドは、命令中の実行演算コードに基づき更に処理を行うために、4つのSIMD実行レーン1626乃至1629にレーン毎に配信される。レーン毎結果Z0乃至Z3は、書き込み経路1641を介してレジスタファイル1638に書き込みのために返される単一の64ビット結果ベクトルを共に形成し、また、オプションとして、深いレジスタアクセスユニット1646A及び1646Bに直接バイパスされ、後続のパイプライン化された演算を即座に実行し得る。
本発明の一実施形態に基づき、図16のデータ処理ユニットに対して修正を行い得ることを認識されるであろう。例えば、任意の数のSIMD実行レーン1626乃至1629を用いてよく、これらのレーンは、任意の幅のオペランドで動作し、置換ユニットは、オペランドの一部を置換し、必ずしも全てのオペランドを置換する必要はない。また、置換は、必ずしも例示したものである必要はないが、その組み合わせ、又は、そのような置換の選択及び集まり、又は、他のタイプの置換であってもよい。また、置換演算は、実行レーン1626乃至1629の下に配置されたユニットによって行ってよい。そのような‘実行後’置換ユニットは、単独で、又は(例えば、深いレジスタ・アクセス・メカニズム1646による)データ実行の前に行われるこれまで説明した‘実行前’置換に加えて、用いてよい。‘実行後’置換ユニットによる置換後、オペランドは、次に、レジスタファイル1638に書き戻されるか、又は、多重化装置1647を介してバイパスされる。更に、直列の置換ユニット用の制御情報は、サイクル毎に発せられる命令に保持された情報からの代わりに、格納された‘構成’データから部分的に又は完全に導出し得る。そのような構成情報は、例えば、プログラム制御下で、プロセッサ制御レジスタにアップロードしてよく、次に、新しい構成がアップロードされるまで、又は、静的な構成情報を置き換え得る特定の命令が発せられるまで、多くのプロセッササイクルの間、置換ユニットに静的な‘擬似命令’を提供し得る。
図17及び18は、本発明の一実施形態に基づく、図16の深いレジスタアクセス機能1646A及び1646Bを実現するための、及び図16のレジスタ1638を読み出すための代表的なハードウェアを示す。図17は、深いレジスタアクセスを用いて、データレジスタファイル1638から代表的な64ビットベクトルSRC0をフェッチするためのハードウェアを示す。他方、図18は、深いレジスタアクセスを用いて、データレジスタファイル1646から代表的な64ビットベクトルSRC1をフェッチするためのハードウェアを示す。図17及び18において、1773、1774におけるIndex0、1875、1876におけるIndex1は、各々、データレジスタファイル1638における64ビットベクトルを指す。データレジスタファイル1638は、(本例では)64のベクトルを含んでいるため、各Index0及びIndex1には、図17及び18において、0乃至5が付番された6つのビットが含まれる。図17及び18のデコーダ1777及び1878は、単純な32分の1行デコーダであり、また、32のライン上に対で配置された64の16ビットワードにアクセスする。デコーダ1777及び1878は、レジスタファイル読み出し段1779、1880の一部であり、この後には、列多重化装置段1781、1882及びオペランドクロスバースイッチ段1783、1884が続き、後者は、それぞれ64又は32の交差配線を有する。図17の入力1785は、アクセスされたデータベクトルに対してロール及びソート置換を用いる深いレジスタアクセス用のイネーブル信号を提供する。更に、クロスバー制御入力1787は、図19の表に基づき、用いられる深いレジスタアクセスのタイプを決定するために適切に設定しなければならない。本発明の一実施形態に基づき、入力Xbar0_ctl3、Xbar0_ctl2、Xbar0_ctl1、及びXbar0_ctl0の値並びに制御入力1785は、深いレジスタアクセスが、通常のアクセスであるかどうか、又は深いレジスタアクセスが、ロール又はソート置換等の置換を伴うかどうか判断する。図18の入力1886は、アクセスされたデータベクトルに対してブロードキャスト置換を用いる深いレジスタアクセスのための、並びに通常のレジスタアクセス(即ち、置換のないアクセス)のためのイ
ネーブル信号を提供する。図17及び18の出力1788及び1889は、それぞれ64ビットベクトルSRC0及びSRC1の4つのレーンである。これらの出力は、一般的に、置換された出力1639及び1640として図16に表されるが、これは、各4要素ベクトルの1つの要素が如何にしてSIMD回路にレーン毎に供給されるか示す。
図17の入力は、更に、ユニット1796を示すが、このユニットは、単に5ビット加算器であり、モジュロ32演算を行い、また、オーバーフローが発生した場合、折り返しが可能である。また、図17の入力は、列多重化装置段に接続された制御入力論理段1799を示すが、この段は、第1の深いレジスタアクセスユニット1646Aにおいて利用可能な異なるタイプの置換演算の選択をサポートする。図17と18との間のこれらの及び他のわずかな差異は、開示された実施形態の機能の文脈において、当業者によって容易に理解されるであろう。
本発明の一実施形態に基づき、用いられる深いレジスタアクセスのタイプを制御するために、図17及び18のハードウェアによって用いられる入力の値、例えば、図19のXbar0入力の値、又は図17及び18の多重化装置を制御するための他の入力は、命令の所定の場所におけるコードの値によって決定し得る。即ち、命令パケットの所定のビット場所における指定されたビットを用いて、命令に用いられる深いレジスタアクセスのタイプを決定し得る。従って、例えば、図15の実施形態の命令復号化ユニット1503は、命令の特定のフィールドにある置換演算コード又は他の命令情報と組み合わせて符号化された置換演算コードの値を用いて、図17又は18のクロスバーにおける多重化装置選択を制御し得る。指定されたビットの値は、復号して、可能性としてプロセッサに記憶された他の構成情報と組み合わせて、図19のXbar0入力の値を求め、これによって、どの深いレジスタアクセスの形態が、その命令によって用いられるか、例えば、適用されるソート、ロール、ブロードキャスト、又はシャフルのタイプを決定し得る。例えば、図20は、本発明の一実施形態に基づき用い得る一般的な命令フォーマットを示すが、他の命令フォーマットを用いてもよいことを認識されるであろう。命令2001には、実行演算のタイプ(例えば、ロード、記憶、SIMD加算、SIMD乗算等)を指定するビットを含むフィールド2002と、適用される置換のタイプ(例えば、ソート、ロール、ブロードキャスト等)を指定するビットを含むフィールド2003と、レジスタファイルにおけるソースオペランド及び結果の場所を指定するフィールド2004と、が含まれる。
このように、図16乃至19の実施形態は、図2の実施形態に示したものと同様に、レジスタファイル、置換ユニット、及び実行ユニット間の連続直列接続の用途を示すことが理解できる。特に、図16乃至18を参照すると、図2のレジスタファイル201に対応する図16のデータレジスタファイル読み出し1638は、図2の置換ユニット202に共に対応して、深いレジスタ・アクセス・メカニズム1646A及び1646Bと直列に置かれ、これらは、また、図2の実行ユニット203に共に対応して、SIMD実行レーン1626乃至1629と直列である。上記内容は、最良のモードであると見なされるもの、また、適宜本発明を実施する他のモードについて述べられたが、本発明は、好適な実施形態の本説明に開示された特定の装置構成又は方法ステップに限定すべきでないことを当業者は認識されたい。また、本発明は、広範囲の用途を有すること、及び本実施形態は、本発明による概念から逸脱することなく広い範囲の修正を認めることを当業者は認識されたい。
置換ユニットを含む従来技術によるマシンの基本的なアーキテクチャを示す図である。 本発明の一実施形態による直列置換レジスタアクセスの基本的なアーキテクチャを示す図である。 本発明の一実施形態に基づく、‘直列’に行い得る所謂‘ロール’又は‘スライディング・ウィンドウ’置換を行うために用い得る代表的な動作を示す図である。 本発明の一実施形態に基づく、‘直列’に行い得る所謂‘ロール’又は‘スライディング・ウィンドウ’置換を行うために用い得る代表的な動作を示す図である。 本発明の一実施形態に基づく、‘直列’に行い得る所謂‘ロール’又は‘スライディング・ウィンドウ’置換を行うために用い得る代表的な動作を示す図である。 本発明の一実施形態に基づく、‘直列’にブロードキャスト置換を行うために用い得る代表的な動作を示す図である。 本発明の一実施形態に基づく、‘直列’にブロードキャスト置換を行うために用い得る代表的な動作を示す図である。 本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘シャフル’又は‘インターリーブ’動作を示す図である。 本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘シャフル’又は‘インターリーブ’動作を示す図である。 本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘シャフル’又は‘インターリーブ’動作を示す図である。 本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘シャフル’又は‘インターリーブ’動作を示す図である。 本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘シャフル’又は‘インターリーブ’動作を示す図である。 本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘シャフル’又は‘インターリーブ’動作を示す図である。 本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘シャフル’又は‘インターリーブ’動作を示す図である。 本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘ソート’又は‘デインターリーブ’動作を示す図である。 本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘ソート’又は‘デインターリーブ’動作を示す図である。 本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘ソート’又は‘デインターリーブ’動作を示す図である。 本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘ソート’又は‘デインターリーブ’動作を示す図である。 本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘ソート’又は‘デインターリーブ’動作を示す図である。 本発明の一実施形態に基づく、‘直列’に行い得る代表的な所謂‘ソート’又は‘デインターリーブ’動作を示す図である。 本発明の一実施形態に基づく、図5A乃至8のシャフル演算をサポートする一組のサブレジスタ・アクセス・パターンを示す図である。 本発明の一実施形態に基づく、図5A乃至8のシャフル演算をサポートする一組のサブレジスタ・アクセス・パターンを示す図である。 本発明の一実施形態に基づく、図5A乃至8のシャフル演算をサポートする一組のサブレジスタ・アクセス・パターンを示す図である。 本発明の一実施形態に基づく、図5A乃至8のシャフル演算をサポートする一組のサブレジスタ・アクセス・パターンを示す図である。 本発明の一実施形態に基づく、図9A乃至11のソート演算及び他の同様なものをサポートするサブレジスタ・アクセス・パターンを示す図である。 本発明の一実施形態による、直列の置換を用い得るコンピュータシステムを示すアーキテクチャブロック図である。 本発明の一実施形態による直列の置換が可能なプロセッサデータ経路を示すブロック図である。 本発明の一実施形態に基づく、図16のレジスタアクセス機能を実現するための代表的なハードウェアを示す図である。 本発明の一実施形態に基づく、図16のレジスタアクセス機能を実現するための代表的なハードウェアを示す図である。 本発明の一実施形態に基づく、様々なタイプの置換を達成するための図17における可能な多重化装置制御入力を示す表である。 本発明の一実施形態に基づき用い得る一般的な命令フォーマットを示す図である。
符号の説明
201 レジスタファイル
202 置換ユニット
203 実行ユニット

Claims (42)

  1. コンピュータ用のデータ処理ユニットであって、
    レジスタファイルと、
    単一のデータアクセス命令に基づき、前記レジスタファイルにおける少なくとも1つのデータオペランドにアクセス可能なレジスタアクセス・置換ユニットであって、前記単一のデータアクセス命令の置換演算コード部に基づき、前記アクセスされたデータオペランドを選択的に置換するように動作可能な置換回路を含む前記レジスタアクセス・置換ユニットと、
    前記レジスタアクセス・置換ユニットと直列に配置されたデータ実行ユニットであって、前記単一のデータアクセス命令の実行演算コード部に基づき、前記選択的に置換されたデータオペランドに対して演算を行うように動作可能な前記データ実行ユニットと、
    が含まれるデータ処理ユニット。
  2. 請求項に記載のデータ処理ユニットであって、前記レジスタアクセス・置換ユニットには、前記レジスタファイルと前記実行ユニットとの間に接続されたデコーダレジスタファイル読み出し段が含まれるデータ処理ユニット。
  3. 請求項に記載のデータ処理ユニットであって、前記レジスタアクセス・置換ユニットには、前記デコーダレジスタファイル読み出し段と前記実行ユニットとの間に接続された少なくとも1つの多重化装置段が含まれるデータ処理ユニット。
  4. 請求項に記載のデータ処理ユニットであって、置換制御入力が、前記多重化装置段に供給されるデータ処理ユニット。
  5. 請求項に記載のデータ処理ユニットであって、前記レジスタアクセス・置換ユニットには、更に、前記デコーダレジスタファイル読み出し段と前記実行ユニットとの間に接続された列多重化装置段が含まれるデータ処理ユニット。
  6. 請求項に記載のデータ処理ユニットであって、置換制御入力が、前記列多重化装置段に供給されるデータ処理ユニット。
  7. 請求項に記載のデータ処理ユニットであって、前記レジスタアクセス・置換ユニットには、前記デコーダレジスタファイル読み出し段と前記実行ユニットとの間に接続されたクロスバー多重化装置段が含まれるデータ処理ユニット。
  8. 請求項に記載のデータ処理ユニットであって、置換制御入力が、前記クロスバー多重化装置段に供給されるデータ処理ユニット。
  9. 請求項に記載のデータ処理ユニットであって、置換制御入力が、前記デコーダレジスタファイル読み出し段に供給されるデータ処理ユニット。
  10. 請求項に記載のデータ処理ユニットであって、前記実行ユニットの出力と前記レジスタアクセス・置換ユニットの入力との間に接続されたバイパス回路が含まれるデータ処理ユニット。
  11. 請求項に記載のデータ処理ユニットであって、第1及び第2レジスタアクセス・置換回路が含まれるデータ処理ユニット。
  12. 請求項11に記載のデータ処理ユニットであって、前記第1レジスタアクセス・置換回路は、第1及び第2オペランドにアクセスするように、また、ロール、ソート、シャフルの1つ又は複数から選択された置換を行うように構成されるデータ処理ユニット。
  13. 請求項11に記載のデータ処理ユニットであって、前記第2レジスタアクセス・置換回路は、少なくとも1つのオペランドにアクセスするように、また、ブロードキャスト置換を行うように構成されるデータ処理ユニット。
  14. 請求項11に記載のデータ処理ユニットであって、前記第1及び第2レジスタアクセス・置換回路には、各々、
    (i)前記レジスタファイルと前記実行ユニットとの間に接続されたデコーダレジスタファイル読み出し段と、
    (ii)前記デコーダレジスタファイル読み出し段と前記実行ユニットとの間に接続された少なくとも1つの多重化装置段と、の内の1つ又は複数が含まれるデータ処理ユニット。
  15. 請求項14に記載のデータ処理ユニットであって、前記少なくとも1つの多重化装置段には、
    (i)前記デコーダレジスタファイル読み出し段と実行ユニットとの間に接続された列多重化装置段と、
    (ii)前記列多重化装置段と前記実行ユニットとの間に接続されたクロスバー多重化装置段と、の内の1つ又は複数が含まれるデータ処理ユニット。
  16. 請求項に記載のデータ処理ユニットであって、前記実行ユニットには、単一命令複数データ回路が含まれるデータ処理ユニット。
  17. コンピュータプロセッサ用のデータ処理ユニットであって、直列接続で、レジスタアクセスユニットと、ベクトル置換回路と、少なくとも1つの実行ユニットと、が含まれ、本データ処理ユニットには、更に、単一の命令に応答して、少なくとも1つのベクトルオペランドへのアクセスを制御するように、少なくとも1つのベクトルオペランドを選択的に置換するように、また、少なくとも1つの更なる演算を実行するように動作可能な復号化ユニットが含まれるデータ処理ユニット。
  18. コンピュータプロセッサ用のデータ処理ユニットを動作させる方法であって、
    コンピュータプロセッサのレジスタファイルからアクセスされる少なくとも1つのデータオペランドに対して、単一のデータアクセス命令に応答して、前記コンピュータプロセッサのデータ処理ユニットにより、置換演算を行う段階であって、前記置換演算が、(i)前記少なくとも1つのデータオペランドを得るためにレジスタにアクセスするステップと、(ii)前記少なくとも1つのデータオペランドに対してデータ処理動作を実行するステップと、直列に行われる前記段階と、
    単一のデータアクセス命令に基づき、レジスタにアクセスするステップと直列に、前記コンピュータプロセッサのデータ処理ユニットにより、置換演算を行う段階と、が含まれる方法。
  19. 請求項18に記載の方法であって、少なくとも1つのデータオペランドは単一のベクトル・レジスタ・オペランドを含み、前記置換演算が、単一のベクトル・レジスタ・オペランドに対して行われる方法。
  20. 請求項18に記載の方法であって、置換演算が、複数のベクトル・レジスタ・オペランドに対して行われる方法。
  21. 請求項18に記載の方法であって、更に、
    単一命令のデータオペランドに対して多数の連続データ処理動作を行う段階が含まれる方法。
  22. 請求項18に記載の方法であって、前記置換演算を行う段階は、データ処理動作を実行するステップに先行する方法。
  23. 請求項18に記載の方法であって、前記置換演算を行う段階は、データ処理動作を実行するステップに続く方法。
  24. 請求項18に記載の方法であって、第1置換演算は、データ処理動作の実行に先行し、第2置換演算は、データ処理動作の実行に続く方法。
  25. 請求項18に記載の方法であって、更に、
    前記命令の演算コード部に基づき、複数の置換演算タイプから置換演算のタイプを選択する段階が含まれる方法。
  26. 請求項18に記載の方法であって、更に、算術演算、論理演算、後続の置換演算、及びプロセッサメモリ読み出し又は書き込み動作から、実行されるデータ処理動作を選択する段階が含まれる方法。
  27. 請求項18に記載の方法であって、更に、
    複数の置換演算タイプから選択された置換演算のタイプを少なくとも部分的に決定するために一組の置換制御入力を用いる段階が含まれる方法。
  28. 請求項27に記載の方法であって、利用可能な複数の置換演算タイプには、ロール置換、ソート置換、シャフル置換、ブロードキャスト置換、選択置換、及び他のタイプの置換演算から選択された1つ又は複数が含まれる方法。
  29. 請求項18に記載の方法であって、更に、
    データ処理命令の演算コード部に基づき、一組の置換制御入力の値を決定する段階が含まれる方法。
  30. 請求項18に記載の方法であって、前記データ処理ユニットは、単一命令複数データ実行を行う方法。
  31. 請求項18に記載の方法であって、前記置換及びデータ処理動作を行う段階には、高速フーリエ変換、ビタビ符号化、ターボ符号化、有限インパルス応答フィルタアルゴリズム、他の通信アルゴリズムからなるグループからのアルゴリズムの少なくとも一部を行う段階が含まれる方法。
  32. 請求項18に記載の方法であって、置換演算を行う段階は、第1タイプの置換演算、第1ソースオペランド対に対して行う段階と、第2タイプの置換演算、第2ソースオペランドに対して行う段階とを含む方法。
  33. 請求項32に記載の方法であって、第1タイプの置換演算を行う段階には、ロール置換及びソート置換からなるグループからの置換を行う段階が含まれる方法。
  34. 請求項32に記載の方法であって、第2タイプの置換演算を行う段階には、ブロードキャスト置換を行う段階が含まれる方法。
  35. 請求項32に記載の方法であって、第1及び第2タイプの置換演算の1つ又は複数を行う段階には、64ビットデータレジスタソース引数を用いる段階が含まれる方法。
  36. 請求項35に記載の方法であって、第1タイプの置換演算を行う段階によって、2つの64ビットソース値から単一の64ビット結果を形成するためのロール演算を行うことが可能であり、64ビット結果は、整数の16ビット要素によってロールされたソース値に対応する方法。
  37. 請求項35に記載の方法であって、第1タイプの置換演算を行う段階によって、2つの64ビット値から単一の64ビット結果を形成するためのソート演算を行うことが可能であり、64ビット結果は、最上位又は最下位64ビットソート結果として選択可能である方法。
  38. 請求項35に記載の方法であって、第1タイプの置換演算を行う段階には、各々整数の16ビット要素からなる2つのベクトルをインターリーブするためのシャフル演算を行う段階が含まれる方法。
  39. 請求項35に記載の方法であって、前記整数の16ビット要素は、2の整数乗である方法。
  40. 請求項35に記載の方法であって、第2タイプの置換演算を行う段階によって、64ビット結果において複数の16ビットレーンに渡って16ビット半ワードを繰り返すことが可能なブロードキャスト演算を行い得る方法。
  41. コンピュータ用のデータ処理ユニットであって、
    レジスタファイルと、
    単一のデータアクセス命令に基づき、前記レジスタファイルにおける少なくとも1つのデータオペランドにアクセス可能なレジスタアクセス・置換ユニットであって、前記単一のデータアクセス命令の置換演算コード部に基づき、前記アクセスされた少なくとも1つのデータオペランドを選択的に置換するように動作可能な第1及び第2レジスタアクセス・置換回路を含み、前記第1レジスタアクセス・置換回路は、第1及び第2オペランドにアクセスするように、また、ロール、ソート、シャフルの1つ又は複数から選択された置換を行うように構成され、前記第2レジスタアクセス・置換回路は、少なくとも1つのオペランドにアクセスするように、また、ブロードキャスト置換を行うように構成される、前記レジスタアクセス・置換ユニットと、
    前記レジスタアクセス・置換ユニットと直列に配置されたデータ実行ユニットであって、前記単一のデータアクセス命令の実行演算コード部に基づき、前記選択的に置換されたデータオペランドまたは複数のオペランドに対して演算を行うように動作可能な前記データ実行ユニットと、
    が含まれるデータ処理ユニット。
  42. コンピュータプロセッサ用のデータ処理ユニットを動作させる方法であって、
    コンピュータプロセッサのレジスタファイルからアクセスされる少なくとも1つのデータオペランドに対して、単一のデータアクセス命令に応答して、前記コンピュータプロセッサのデータ処理ユニットにより、置換演算を行う段階であって、前記置換演算が、(i)前記少なくとも1つのデータオペランドを得るためにレジスタにアクセスするステップと、(ii)前記少なくとも1つのデータオペランドに対してデータ処理動作を実行するステップと、直列に行われる前記段階と、
    単一のデータアクセス命令に基づき、レジスタにアクセスするステップと直列に、前記コンピュータプロセッサのデータ処理ユニットにより、置換演算を行う段階と、が含まれ、
    第1タイプの置換演算は、第1ソースオペランド対に対して行われ、第2タイプの置換演算は、第2ソースオペランドに対して行われる方法。
JP2008504843A 2005-04-08 2006-04-06 データアクセス及び置換ユニット Active JP5047944B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/102,266 US7933405B2 (en) 2005-04-08 2005-04-08 Data access and permute unit
US11/102,266 2005-04-08
PCT/GB2006/001265 WO2006106342A2 (en) 2005-04-08 2006-04-06 Data access and permute unit

Publications (2)

Publication Number Publication Date
JP2008535115A JP2008535115A (ja) 2008-08-28
JP5047944B2 true JP5047944B2 (ja) 2012-10-10

Family

ID=36577535

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008504843A Active JP5047944B2 (ja) 2005-04-08 2006-04-06 データアクセス及び置換ユニット

Country Status (9)

Country Link
US (1) US7933405B2 (ja)
EP (1) EP1866744A2 (ja)
JP (1) JP5047944B2 (ja)
KR (1) KR20070118623A (ja)
CN (2) CN101208658A (ja)
BR (1) BRPI0609742A2 (ja)
CA (1) CA2600744A1 (ja)
TW (1) TWI476681B (ja)
WO (1) WO2006106342A2 (ja)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7783862B2 (en) * 2006-08-07 2010-08-24 International Characters, Inc. Method and apparatus for an inductive doubling architecture
US20080079712A1 (en) * 2006-09-28 2008-04-03 Eric Oliver Mejdrich Dual Independent and Shared Resource Vector Execution Units With Shared Register File
JP2009048532A (ja) * 2007-08-22 2009-03-05 Nec Electronics Corp マイクロプロセッサ
US20090106526A1 (en) * 2007-10-22 2009-04-23 David Arnold Luick Scalar Float Register Overlay on Vector Register File for Efficient Register Allocation and Scalar Float and Vector Register Sharing
US8169439B2 (en) * 2007-10-23 2012-05-01 International Business Machines Corporation Scalar precision float implementation on the “W” lane of vector unit
US20090150648A1 (en) * 2007-12-06 2009-06-11 Eric Oliver Mejdrich Vector Permute and Vector Register File Write Mask Instruction Variant State Extension for RISC Length Vector Instructions
US8078836B2 (en) 2007-12-30 2011-12-13 Intel Corporation Vector shuffle instructions operating on multiple lanes each having a plurality of data elements using a common set of per-lane control bits
US8356160B2 (en) * 2008-01-15 2013-01-15 International Business Machines Corporation Pipelined multiple operand minimum and maximum function
GB2456775B (en) * 2008-01-22 2012-10-31 Advanced Risc Mach Ltd Apparatus and method for performing permutation operations on data
US7904699B2 (en) * 2008-03-10 2011-03-08 International Business Machines Corporation Processing unit incorporating instruction-based persistent vector multiplexer control
US7904700B2 (en) * 2008-03-10 2011-03-08 International Business Machines Corporation Processing unit incorporating special purpose register for use with instruction-based persistent vector multiplexer control
US7814303B2 (en) * 2008-10-23 2010-10-12 International Business Machines Corporation Execution of a sequence of vector instructions preceded by a swizzle sequence instruction specifying data element shuffle orders respectively
US20110072236A1 (en) * 2009-09-20 2011-03-24 Mimar Tibet Method for efficient and parallel color space conversion in a programmable processor
US8868885B2 (en) * 2010-11-18 2014-10-21 Ceva D.S.P. Ltd. On-the-fly permutation of vector elements for executing successive elemental instructions
US20120278591A1 (en) * 2011-04-27 2012-11-01 Advanced Micro Devices, Inc. Crossbar switch module having data movement instruction processor module and methods for implementing the same
KR20120134549A (ko) 2011-06-02 2012-12-12 삼성전자주식회사 Simd 프로세서를 이용한 병렬 연산 처리 장치 및 방법
KR101918464B1 (ko) * 2011-09-14 2018-11-15 삼성전자 주식회사 스위즐드 버추얼 레지스터 기반의 프로세서 및 스위즐 패턴 제공 장치
GB2497070B (en) 2011-11-17 2015-11-25 Advanced Risc Mach Ltd Cryptographic support instructions
WO2013095563A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Packed data rearrangement control indexes precursors generation processors, methods, systems, and instructions
CN104011644B (zh) 2011-12-22 2017-12-08 英特尔公司 用于产生按照数值顺序的相差恒定跨度的整数的序列的处理器、方法、系统和指令
US10223112B2 (en) 2011-12-22 2019-03-05 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset
CN104081341B (zh) 2011-12-23 2017-10-27 英特尔公司 用于多维数组中的元素偏移量计算的指令
CN104011662B (zh) * 2011-12-23 2017-05-10 英特尔公司 用于提供向量混合和置换功能的指令和逻辑
WO2013095659A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Multi-element instruction with different read and write masks
EP2798504A4 (en) * 2011-12-29 2016-07-27 Intel Corp PROCESSORS HAVING FULLY CONNECTED INTERCONNECTIONS SHARED BY VECTORIAL CONFLICT INSTRUCTIONS AND PERMUTATION INSTRUCTIONS
US8959275B2 (en) 2012-10-08 2015-02-17 International Business Machines Corporation Byte selection and steering logic for combined byte shift and byte permute vector unit
US9419792B2 (en) * 2012-12-28 2016-08-16 Intel Corporation Instruction for accelerating SNOW 3G wireless security algorithm
US9606803B2 (en) * 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
US9977676B2 (en) * 2013-11-15 2018-05-22 Qualcomm Incorporated Vector processing engines (VPEs) employing reordering circuitry in data flow paths between execution units and vector data memory to provide in-flight reordering of output vector data stored to vector data memory, and related vector processor systems and methods
US9792118B2 (en) * 2013-11-15 2017-10-17 Qualcomm Incorporated Vector processing engines (VPEs) employing a tapped-delay line(s) for providing precision filter vector processing operations with reduced sample re-fetching and power consumption, and related vector processor systems and methods
US9684509B2 (en) * 2013-11-15 2017-06-20 Qualcomm Incorporated Vector processing engines (VPEs) employing merging circuitry in data flow paths between execution units and vector data memory to provide in-flight merging of output vector data stored to vector data memory, and related vector processing instructions, systems, and methods
US9619227B2 (en) * 2013-11-15 2017-04-11 Qualcomm Incorporated Vector processing engines (VPEs) employing tapped-delay line(s) for providing precision correlation / covariance vector processing operations with reduced sample re-fetching and power consumption, and related vector processor systems and methods
US9880845B2 (en) * 2013-11-15 2018-01-30 Qualcomm Incorporated Vector processing engines (VPEs) employing format conversion circuitry in data flow paths between vector data memory and execution units to provide in-flight format-converting of input vector data to execution units for vector processing operations, and related vector processor systems and methods
US10061581B2 (en) 2014-01-31 2018-08-28 Qualcomm Incorporated On-the-fly conversion during load/store operations in a vector processor
US9766888B2 (en) * 2014-03-28 2017-09-19 Intel Corporation Processor instruction to store indexes of source data elements in positions representing a sorted order of the source data elements
US9348595B1 (en) 2014-12-22 2016-05-24 Centipede Semi Ltd. Run-time code parallelization with continuous monitoring of repetitive instruction sequences
US9785437B2 (en) 2014-12-23 2017-10-10 Intel Corporation Method and apparatus for performing a vector bit reversal and crossing
US9135015B1 (en) 2014-12-25 2015-09-15 Centipede Semi Ltd. Run-time code parallelization with monitoring of repetitive instruction sequences during branch mis-prediction
US9996350B2 (en) 2014-12-27 2018-06-12 Intel Corporation Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array
US9208066B1 (en) * 2015-03-04 2015-12-08 Centipede Semi Ltd. Run-time code parallelization with approximate monitoring of instruction sequences
US10296350B2 (en) 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences
US10296346B2 (en) 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences based on pre-monitoring
US9715390B2 (en) 2015-04-19 2017-07-25 Centipede Semi Ltd. Run-time parallelization of code execution based on an approximate register-access specification
US10459731B2 (en) * 2015-07-20 2019-10-29 Qualcomm Incorporated Sliding window operation
GB2540939B (en) * 2015-07-31 2019-01-23 Advanced Risc Mach Ltd An apparatus and method for performing a splice operation
US20170177355A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instruction and Logic for Permute Sequence
US20170177352A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Lane-Based Strided Store Operations
US10338920B2 (en) 2015-12-18 2019-07-02 Intel Corporation Instructions and logic for get-multiple-vector-elements operations
KR102659495B1 (ko) * 2016-12-02 2024-04-22 삼성전자주식회사 벡터 프로세서 및 그 제어 방법
US9959247B1 (en) 2017-02-17 2018-05-01 Google Llc Permuting in a matrix-vector processor
GB2564853B (en) * 2017-07-20 2021-09-08 Advanced Risc Mach Ltd Vector interleaving in a data processing apparatus
US11803377B2 (en) * 2017-09-08 2023-10-31 Oracle International Corporation Efficient direct convolution using SIMD instructions
US10831478B2 (en) * 2018-11-06 2020-11-10 International Business Machines Corporation Sort and merge instruction for a general-purpose processor
US10831502B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Migration of partially completed instructions
US10831503B2 (en) * 2018-11-06 2020-11-10 International Business Machines Corporation Saving and restoring machine state between multiple executions of an instruction
US10970072B2 (en) * 2018-12-21 2021-04-06 Intel Corporation Systems and methods to transpose vectors on-the-fly while loading from memory
KR102035792B1 (ko) * 2019-06-10 2019-10-23 한화시스템(주) Fpga를 이용한 2차원 슬라이딩 테스트 윈도를 생성하기 위한 장치 및 그 방법
US11385897B2 (en) * 2019-10-01 2022-07-12 Marvell Asia Pte, Ltd. Merge execution unit for microinstructions
CN111782148B (zh) * 2020-06-30 2023-09-05 中国工商银行股份有限公司 数据存储控制方法和装置、以及电子设备和存储介质
US20210216318A1 (en) * 2020-08-28 2021-07-15 Martin Langhammer Vector Processor Architectures

Family Cites Families (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5175862A (en) * 1989-12-29 1992-12-29 Supercomputer Systems Limited Partnership Method and apparatus for a special purpose arithmetic boolean unit
US5197130A (en) * 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US5471628A (en) * 1992-06-30 1995-11-28 International Business Machines Corporation Multi-function permutation switch for rotating and manipulating an order of bits of an input data byte in either cyclic or non-cyclic mode
WO1994003860A1 (en) * 1992-08-07 1994-02-17 Thinking Machines Corporation Massively parallel computer including auxiliary vector processor
US5848286A (en) * 1994-03-29 1998-12-08 Cray Research, Inc. Vector word shift by vo shift count in vector supercomputer processor
FR2723223B1 (fr) * 1994-07-29 1996-08-30 Sgs Thomson Microelectronics Procede de brouillage numerique et application a un circuit programmable
US5513366A (en) * 1994-09-28 1996-04-30 International Business Machines Corporation Method and system for dynamically reconfiguring a register file in a vector processor
US5887183A (en) * 1995-01-04 1999-03-23 International Business Machines Corporation Method and system in a data processing system for loading and storing vectors in a plurality of modes
US5815572A (en) * 1995-08-31 1998-09-29 Lucent Technologies Inc. Video scrambling
US6058465A (en) * 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
US5838984A (en) * 1996-08-19 1998-11-17 Samsung Electronics Co., Ltd. Single-instruction-multiple-data processing using multiple banks of vector registers
KR100291383B1 (ko) * 1996-11-18 2001-09-17 윤종용 디지털신호처리를위한명령을지원하는모듈계산장치및방법
US5991865A (en) * 1996-12-31 1999-11-23 Compaq Computer Corporation MPEG motion compensation using operand routing and performing add and divide in a single instruction
US5881307A (en) * 1997-02-24 1999-03-09 Samsung Electronics Co., Ltd. Deferred store data read with simple anti-dependency pipeline inter-lock control in superscalar processor
US5922066A (en) * 1997-02-24 1999-07-13 Samsung Electronics Co., Ltd. Multifunction data aligner in wide data width processor
US6182216B1 (en) * 1997-09-17 2001-01-30 Frank C. Luyster Block cipher method
TW364269B (en) * 1998-01-02 1999-07-11 Winbond Electronic Corp Discreet cosine transform/inverse discreet cosine transform circuit
US6223320B1 (en) * 1998-02-10 2001-04-24 International Business Machines Corporation Efficient CRC generation utilizing parallel table lookup operations
US6446190B1 (en) * 1998-03-12 2002-09-03 Bops, Inc. Register file indexing methods and apparatus for providing indirect control of register addressing in a VLIW processor
US5996057A (en) * 1998-04-17 1999-11-30 Apple Data processing system and method of permutation with replication within a vector register file
US6334176B1 (en) * 1998-04-17 2001-12-25 Motorola, Inc. Method and apparatus for generating an alignment control vector
US6178500B1 (en) * 1998-06-25 2001-01-23 International Business Machines Corporation Vector packing and saturation detection in the vector permute unit
US6327651B1 (en) * 1998-09-08 2001-12-04 International Business Machines Corporation Wide shifting in the vector permute unit
US6411652B1 (en) * 1998-10-23 2002-06-25 International Business Machines Corp. Motion estimation
FR2785406B1 (fr) * 1998-10-30 2004-09-10 Thomson Marconi Sonar Sas Memoire a acces vectoriel
FR2785741B1 (fr) * 1998-11-09 2001-01-26 Canon Kk Dispositif et procede de codage et d'entrelacement pour des turbocodes series ou hybrides
US6578061B1 (en) * 1999-01-19 2003-06-10 Nippon Telegraph And Telephone Corporation Method and apparatus for data permutation/division and recording medium with data permutation/division program recorded thereon
US6311280B1 (en) * 1999-02-22 2001-10-30 Nband Communications Low-power memory system with incorporated vector processing
US6557096B1 (en) * 1999-10-25 2003-04-29 Intel Corporation Processors with data typer and aligner selectively coupling data bits of data buses to adder and multiplier functional blocks to execute instructions with flexible data types
US6446195B1 (en) * 2000-01-31 2002-09-03 Intel Corporation Dyadic operations instruction processor with configurable functional blocks
JP3515720B2 (ja) * 1999-11-22 2004-04-05 松下電器産業株式会社 ビタビ復号器
US20010034754A1 (en) * 2000-03-17 2001-10-25 Elwahab Amgad Mazen Device, system and method for providing web browser access and control of devices on customer premise gateways
US6718456B1 (en) * 2000-06-02 2004-04-06 Sun Microsystems, Inc. Parallel pack instruction method and apparatus
WO2002010914A1 (en) * 2000-07-28 2002-02-07 Delvalley Limited A method of processing data
JP3779540B2 (ja) * 2000-11-08 2006-05-31 株式会社ルネサステクノロジ 複数レジスタ指定が可能なsimd演算方式
US7237097B2 (en) * 2001-02-21 2007-06-26 Mips Technologies, Inc. Partial bitwise permutations
US6922716B2 (en) * 2001-07-13 2005-07-26 Motorola, Inc. Method and apparatus for vector processing
DE10138650A1 (de) * 2001-08-07 2003-02-27 Fraunhofer Ges Forschung Verfahren und Vorrichtung zum Verschlüsseln eines diskreten Signals sowie Verfahren und Vorrichtung zur Entschlüsselung
US7142670B2 (en) * 2001-08-14 2006-11-28 International Business Machines Corporation Space-efficient, side-channel attack resistant table lookups
US6839828B2 (en) * 2001-08-14 2005-01-04 International Business Machines Corporation SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode
US7055018B1 (en) * 2001-12-31 2006-05-30 Apple Computer, Inc. Apparatus for parallel vector table look-up
US6931511B1 (en) * 2001-12-31 2005-08-16 Apple Computer, Inc. Parallel vector table look-up with replicated index element vector
US7376812B1 (en) * 2002-05-13 2008-05-20 Tensilica, Inc. Vector co-processor for configurable and extensible processor architecture
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
GB2394571B (en) * 2002-10-23 2005-08-10 Motorola Inc Arrangement system and method for vector permutation in single-instruction multiple-data microprocessors
US20040128485A1 (en) * 2002-12-27 2004-07-01 Nelson Scott R. Method for fusing instructions in a vector processor
JP3896087B2 (ja) * 2003-01-28 2007-03-22 松下電器産業株式会社 コンパイラ装置およびコンパイル方法
US7126991B1 (en) * 2003-02-03 2006-10-24 Tibet MIMAR Method for programmable motion estimation in a SIMD processor
US7925891B2 (en) * 2003-04-18 2011-04-12 Via Technologies, Inc. Apparatus and method for employing cryptographic functions to generate a message digest
US7529368B2 (en) * 2003-04-18 2009-05-05 Via Technologies, Inc. Apparatus and method for performing transparent output feedback mode cryptographic functions
US7539876B2 (en) * 2003-04-18 2009-05-26 Via Technologies, Inc. Apparatus and method for generating a cryptographic key schedule in a microprocessor
US7321910B2 (en) * 2003-04-18 2008-01-22 Ip-First, Llc Microprocessor apparatus and method for performing block cipher cryptographic functions
US7529367B2 (en) * 2003-04-18 2009-05-05 Via Technologies, Inc. Apparatus and method for performing transparent cipher feedback mode cryptographic functions
US7532722B2 (en) * 2003-04-18 2009-05-12 Ip-First, Llc Apparatus and method for performing transparent block cipher cryptographic functions
US7900055B2 (en) * 2003-04-18 2011-03-01 Via Technologies, Inc. Microprocessor apparatus and method for employing configurable block cipher cryptographic algorithms
US7392400B2 (en) * 2003-04-18 2008-06-24 Via Technologies, Inc. Microprocessor apparatus and method for optimizing block cipher cryptographic functions
US7542566B2 (en) * 2003-04-18 2009-06-02 Ip-First, Llc Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
US7844053B2 (en) * 2003-04-18 2010-11-30 Ip-First, Llc Microprocessor apparatus and method for performing block cipher cryptographic functions
US7502943B2 (en) * 2003-04-18 2009-03-10 Via Technologies, Inc. Microprocessor apparatus and method for providing configurable cryptographic block cipher round results
US7310724B2 (en) * 2003-06-30 2007-12-18 Intel Corporation Parallel execution of enhanced EFI based BIOS drivers on a multi-processor or hyper-threading enabled platform
US7577824B2 (en) * 2003-09-08 2009-08-18 Altera Corporation Methods and apparatus for storing expanded width instructions in a VLIW memory for deferred execution
US7124318B2 (en) * 2003-09-18 2006-10-17 International Business Machines Corporation Multiple parallel pipeline processor having self-repairing capability
US7313788B2 (en) * 2003-10-29 2007-12-25 International Business Machines Corporation Vectorization in a SIMdD DSP architecture
US7014122B2 (en) * 2003-12-24 2006-03-21 International Business Machines Corporation Method and apparatus for performing bit-aligned permute
US7240236B2 (en) * 2004-03-23 2007-07-03 Archivas, Inc. Fixed content distributed data storage using permutation ring encoding
US20050226337A1 (en) * 2004-03-31 2005-10-13 Mikhail Dorojevets 2D block processing architecture
US7302627B1 (en) * 2004-04-05 2007-11-27 Mimar Tibet Apparatus for efficient LFSR calculation in a SIMD processor
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US7284092B2 (en) * 2004-06-24 2007-10-16 International Business Machines Corporation Digital data processing apparatus having multi-level register file
US7398347B1 (en) * 2004-07-14 2008-07-08 Altera Corporation Methods and apparatus for dynamic instruction controlled reconfigurable register file
US7725678B2 (en) * 2005-02-17 2010-05-25 Texas Instruments Incorporated Method and apparatus for producing an index vector for use in performing a vector permute operation
US20060190700A1 (en) * 2005-02-22 2006-08-24 International Business Machines Corporation Handling permanent and transient errors using a SIMD unit
US7681187B2 (en) * 2005-03-31 2010-03-16 Nvidia Corporation Method and apparatus for register allocation in presence of hardware constraints

Also Published As

Publication number Publication date
TWI476681B (zh) 2015-03-11
WO2006106342A3 (en) 2007-03-15
WO2006106342A2 (en) 2006-10-12
BRPI0609742A2 (pt) 2011-10-18
KR20070118623A (ko) 2007-12-17
US20060227966A1 (en) 2006-10-12
CN101208658A (zh) 2008-06-25
TW200701059A (en) 2007-01-01
EP1866744A2 (en) 2007-12-19
WO2006106342A8 (en) 2007-11-29
CN103744639A (zh) 2014-04-23
US7933405B2 (en) 2011-04-26
JP2008535115A (ja) 2008-08-28
CA2600744A1 (en) 2006-10-12

Similar Documents

Publication Publication Date Title
JP5047944B2 (ja) データアクセス及び置換ユニット
EP1735697B1 (en) Apparatus and method for asymmetric dual path processing
US8484442B2 (en) Apparatus and method for control processing in dual path processor
US7761694B2 (en) Execution unit for performing shuffle and other operations
US11397583B2 (en) Conditional execution specification of instructions using conditional extension slots in the same execute packet in a VLIW processor
US20230325189A1 (en) Forming Constant Extensions in the Same Execute Packet in a VLIW Processor
EP1735699B1 (en) Apparatus and method for dual data path processing
KR20070022239A (ko) 비대칭 듀얼 경로 프로세싱용 장치 및 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081010

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120124

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120424

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120502

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120518

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

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

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

Free format text: PAYMENT UNTIL: 20150727

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5047944

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

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