JP6293795B2 - スカラーレジスタデータ値に基づいたベクトルレジスタアドレス指定および関数 - Google Patents

スカラーレジスタデータ値に基づいたベクトルレジスタアドレス指定および関数 Download PDF

Info

Publication number
JP6293795B2
JP6293795B2 JP2015558998A JP2015558998A JP6293795B2 JP 6293795 B2 JP6293795 B2 JP 6293795B2 JP 2015558998 A JP2015558998 A JP 2015558998A JP 2015558998 A JP2015558998 A JP 2015558998A JP 6293795 B2 JP6293795 B2 JP 6293795B2
Authority
JP
Japan
Prior art keywords
register
processor
vector
alignment
vrf
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
JP2015558998A
Other languages
English (en)
Other versions
JP2016511470A5 (ja
JP2016511470A (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 JP2016511470A publication Critical patent/JP2016511470A/ja
Publication of JP2016511470A5 publication Critical patent/JP2016511470A5/ja
Application granted granted Critical
Publication of JP6293795B2 publication Critical patent/JP6293795B2/ja
Expired - Fee Related 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/30098Register arrangements
    • G06F9/30105Register structure
    • 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/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/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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

優先権出願
本出願は、参照によりその全体を本明細書に組み込むものとする2013年2月26日に出願された「VECTOR REGISTER ADDRESSING AND FUNCTIONS BASED ON A SCALAR REGISTER DATA VALUE」と題する米国特許出願第13/777,297号に対する優先権を主張するものである。
本開示は一般的には、データアライメントの分野に関し、またより詳細にはアライメントされていないメモリアドレスにある2倍幅のデータ値に効率よくアクセスすることに関する。
携帯電話、ラップトップコンピュータ、パーソナルデータアシスタント(PDA)その他などの多くのポータブル製品は、通信やマルチメディアプログラムなどのプログラムを実行する処理システムを利用する。このような製品向けの処理システムは、複数のプロセッサ、マルチスレッドプロセッサ、命令およびデータを記憶するためのマルチレベルのキャッシュを含んだ複雑なメモリシステム、コントローラ、通信インターフェースなどの周辺デバイス、ならびに固定関数論理ブロックを、たとえば単一のチップ上に構成させて含んでよい。
プロセッサ内で受け取られかつプロセッサによって演算を受けるデータは、情報を表すのに必要な計測精度のレベルに従ってバイナリ形式で量子化された情報の値である。標準クラスのデータまたはデータタイプは、8ビットのバイト、16ビットのハーフワード、32ビットのワード、64ビットの2倍ワード、128ビットの4倍ワードとして表された整数値や、32ビットの単精度値、64ビットの倍精度値、その他として表された浮動小数点値などのいくつかのバイナリビットに従ってグループ分けされる。多くのプロセッサは、複数のデータタイプをサポートするとともに、処理のためにデータにアクセスする効率のよい方法を要求する。一般に各データにはプロセッサのメモリシステム内のある場所(location)を表した1つのアドレスが割り当てられる。多くのメモリシステムではそのメモリは、4バイト、2つのハーフワード、または1つのワードを各32ビットの場所に記憶することを可能にする32ビットなどの標準精度ビット幅に従って編成される。パックされたデータの組に関する単一命令多重データ(SIMD)プロセッサやSIMDベクトルプロセッサなどのベクトルプロセッサと関連付けされたものなどの他の処理システムではそのメモリシステムは、256ビット、512ビット、その他の幅などの標準精度値の群に基づいたより大きなビット幅の辺りで編成され得る。たとえば512ビット幅のメモリ場所を有するメモリシステムでは各場所は、64バイトまたは32個のハーフワードまたは16個のワードまたは8個の2倍ワードまたは4個の4倍ワードを記憶することができる。このような大きな幅のメモリ場所は、SIMDベクトルプロセッサのレジスタファイル内に配置され得る。このようなシステムでは、標準プロセッサメモリアクセス命令を用いて効率よくアクセスするためにはアドレス可能なメモリ場所に対するデータアライメントが重要である。しかしこのようなデータアライメントは必ずしも実現が容易ではない。たとえばデータ構造がメモリ場所の幅の倍数にならないことがある。さらに、任意のサイズをもつデータ構造の開始や終了が適正にアライメントされている保証はない。したがって、アライメントされていないデータへの効率のよいアクセスは困難な問題である。
本開示は、そのいくつかの態様の中でも、データをアライメントするための効率がよりよい方法および装置を提供するので有利であると認識する。そうした目的のために、本発明の一実施形態は、ベクトルアライメント命令を実行するための方法に対処する。第1のプロセッサ上の開始場所が、第1のプロセッサと第2のプロセッサとの間で共有されたスカラーレジスタファイル内のレジスタからアクセスされる。第2のプロセッサ上において、ベクトルレジスタファイル(VRF)のレジスタ内の開始場所で始まる1組のデータ値が、VRFの標的レジスタの1組のアライメントされたデータ値として記憶されるようにしてアライメントされる。
別の実施形態は、ベクトルアライメントおよび演算命令を実行するための方法に対処する。第1のプロセッサ上に作成された開始場所が、第1のプロセッサと第2のプロセッサとの間で共有されたスカラーレジスタファイル内のレジスタからアクセスされる。第2のプロセッサ上において、ベクトルレジスタファイル(VRF)のレジスタ内の開始場所で始まる1組のデータ値は、1組のアライメントされたデータ値が作成されるようにアライメントされる。このアライメントされたデータ値は、VRFの標的レジスタに記録される結果を作成するためにベクトルアライメントおよび演算命令に従って演算される。
別の実施形態は、ベクトルマスクアライメント命令を実行するための方法に対処する。第1のプロセッサ上で作成されたマスクおよび開始場所が、第1のプロセッサと第2のプロセッサとの間で共有されたスカラーレジスタファイル内の第1のレジスタおよび第2のレジスタからアクセスされる。このマスクは、マスク内のイネーブルビットに従って第2のプロセッサ上でベクトルレジスタファイル(VRF)の1組のレジスタを識別するために適用される。第2のプロセッサ上において、ベクトルレジスタファイル(VRF)の識別された組のレジスタ内の開始場所で始まる1組のデータ値が、VRFの標的の組のレジスタにおいて1組のアライメントされたデータ値として記憶されるようにしてアライメントされる。
別の実施形態は、ベクトルアライメント命令を実行するための装置に対処する。第1のプロセッサに関連付けされたスカラーレジスタファイルは第2のプロセッサと1つまたは複数のレジスタ値を共有するように構成され、この1つまたは複数のレジスタ値は、ベクトルアライメント命令において指定されたRtアドレスに従ってスカラーレジスタファイルからアクセスされる。第2のプロセッサ内のアライメント回路は、ベクトルアライメント命令および1つまたは複数のレジスタ値から決定されたアライメント開始場所に従って、ベクトルレジスタファイル(VRF)の複数のレジスタ内の識別されたデータをアライメントするように構成されている。アライメント回路からアライメントされたデータが選択されるとともに、ベクトルアライメント命令によって指定されたアライメント記憶アドレスに従ってアライメントされたデータをベクトルレジスタファイル内に記憶するように記憶回路が構成されている。
別の実施形態は、コンピュータ読取り可能なプログラムデータおよびコードによって符号化されたコンピュータ読取り可能な非一時的媒体に対処する。第1のプロセッサ上の開始場所が、第1のプロセッサと第2のプロセッサとの間で共有されたスカラーレジスタファイル内のレジスタからアクセスされる。第2のプロセッサ上において、ベクトルレジスタファイル(VRF)のレジスタ内の開始場所で始まる1組のデータ値が、VRFの標的レジスタに1組のアライメントされたデータ値として記憶されるようにしてアライメントされる。
また別の実施形態は、ベクトルアライメント命令を実行するための装置に対処する。第1のプロセッサ内のスカラーレジスタファイルからアクセスされる1つまたは複数のレジスタ値を第2のプロセッサと共有するための手段が利用され、この1つまたは複数のレジスタ値はベクトルアライメント命令において指定されたRtアドレスに従ってアクセスされ、この共有されたレジスタ値のうちの1つから開始場所が決定される。ベクトルアライメント命令に従ってベクトルレジスタファイル(VRF)の開始Vuレジスタ内の開始場所とVRFの最終Vuレジスタの終了場所との間で識別された第2のプロセッサ内のデータをアライメントするための手段が利用されている。アライメントされたデータをアライメント回路から選択するとともに、ベクトルアライメント命令によって指定されたアライメント記憶アドレスに従って、このアライメントされたデータをベクトルレジスタファイル内に記憶するための手段が利用されている。
本発明の他の実施形態については、本発明の様々な実施形態を例証のために図示し説明する以下の詳細な説明から当業者には容易に明らかになることが理解されよう。本発明は他の異なる実施形態が可能であること、また本発明の精神および趣旨を逸脱することなくそのいくつかの詳細を様々な他の点で修正可能であることが理解されよう。したがって、この図面および詳細な説明は本質的に例示と見なすべきであり制限と見なすべきではない。
本発明の様々な態様について、添付の図面において限定ではなく一例として例証する。
第1のアライメント関数の実施形態を示した図である。 第2のアライメント関数の実施形態を示した図である。 第2のアライメント関数の実施形態を示した図である。 第1のアライメントサブシステムの実施形態を示した図である。 第2のアライメントサブシステムの実施形態を示した図である。 データアライメントのプロセスに関する実施形態を示した図である。 中央処理ユニット(CPU)とベクトルコプロセッサなどのコプロセッサ(CoP)とを有するポータブルデバイスであって、このコプロセッサはベクトルアライメント関数を提供するとともにポータブルデバイスのリアルタイムの要件を満たすように構成されているポータブルデバイスを示した図である。
添付の図面と関連して以下に示した詳細な説明は本発明の様々な例示的な実施形態の説明を意図したものであり、本発明を実施し得る唯一の実施形態を表すことを意図したものではない。この詳細な説明は、本発明の完全な理解を提供する目的で具体的な詳細を含んでいる。しかしこれらの具体的な詳細を伴うことなく、本発明を実施し得ることは当業者には明らかであろう。ある例として、本発明の考え方が不明瞭になるのを避けるためによく知られた構造や構成要素をブロック図形式で示す。
データアライメントの問題やスカラー開始アドレス値の効率のよい作成に対処するために、ベクトルプロセッサの命令の組アーキテクチャ(ISA)内にアライメントタイプ命令が生成される。ベクトルプロセッサのベクトルレジスタファイル内の512ビットまたは1024ビットのベクトルレジスタなどの広いメモリ場所に記憶されたパックされたデータ要素に関する開始アドレスは、たとえばベクトルレジスタ内の任意のバイト場所にあってよい。メモリまたはレジスタファイル内に記憶されたこのようなデータ構造に関する開始アドレスは一般に、パックされた大きなデータ要素を処理するベクトルプロセッサ上で1つの開始アドレス値を作成する場合と比較して、汎用(GP)プロセッサの方がより効率よく作成される。GPプロセッサおよびベクトルコプロセッサを有するシステムでは、このような開始アドレス値を共有することは時間の浪費やシステムのパフォーマンスへの影響を生じる可能性がある。プロセッサコンプレックスを、本明細書に記載したような共有データポートを通じて結合されたGPプロセッサとベクトルコプロセッサを含むように編成することによって、その開始アドレスは、GPプロセッサ上で作成されるとともに、システムパフォーマンスに対する影響を伴うことなくデータアライメント演算を取り扱うベクトルプロセッサに対して効率のよいやり方で共有または転送され得る。アライメントタイプ命令は、主にアライメントの目的で使用されるが、これは、様々な複雑性レベルのアライメントプラス関数タイプ命令を含むように拡張されてもよい。CビットのVd=valign(Vu@Rt)命令と2CビットのVdd=valign(Vu@RT)命令とがSIMDベクトルコプロセッサの命令の組アーキテクチャ(ISA)に含まれる。
図1は、有利に利用し得る第1のアライメント関数100の実施形態を示す。図1は、2つのプロセッサにデータを要求する命令である1kbワードのVRFVd=valign(Vu@Rt)命令104の演算を示しており、ここでRtフィールドは、結合されたGPプロセッサのレジスタファイルから、記憶された値が取得されるレジスタを識別し、それ以外のフィールドはコプロセッサにあると解釈される。ベクトルコプロセッサは、B×Cビット(B=32でありかつCビット=1024ビット(1kb)である)のベクトルレジスタファイル(VRF)によって編成される。Vd=valign(Vu@Rt)命令104は、演算コード(Opc)105、命令特定フィールド106、ベクトルレジスタアドレスソースフィールドVu107、ベクトルレジスタアドレス宛先フィールドVd108、およびGPプロセッサ開始場所レジスタアドレスソースフィールドGP Rt109を備える。Vu107値は、直接アドレスレジスタ値として使用されてよく、また別法では、VRFのVuレジスタがベクトルユニットベースレジスタに記憶された値によって間接的に識別されてよい。アライメント命令の実行には、3つのCビットベクトルレジスタが関わる。2つのソースオペランドレジスタはVu112およびVu+1 114であり、また結果宛先レジスタはVd122である。
Vd=valign(Vu@Rt)命令104が受け取られて復号化されると、GPプロセッサ内のレジスタファイルからGPプロセッサレジスタGP Rt109がアクセスされる。たとえば、GP Rtのビット[6:0]が読み取られるとともに、データポートを通してベクトルコプロセッサに送られる。この例示的なシナリオにおけるGP Rt[6:0]値は、アライメント関数に関するVuレジスタ112内のバイト開始場所「a50」126を表す十進法値50である。このバイト開始場所「a50」126はまた、バイト「a0」127からのオフセットとして参照される得る。演算時には、バイト開始場所「a50」126からバイト「a127」128までのデータ要素がVuレジスタ112から選択されるとともに、バイト「b0」128からRt[6:0]-1バイト「b49」130までがVu+1レジスタ114から選択される。Vd=valign(Vu@Rt)命令104を実行すると、バイト「a50」126から「a127」128までがVdレジスタ122内の「0」位置131で始まるバイト「77」位置132までのバイトに移される。さらに、アライメント命令を実行すると、バイト「b0」129からRt[6:0]-1バイト「b49」130までが、Vdレジスタ122内の「78」位置133で始まるバイト「127」位置134までのバイトに移される。このことはまた、Vuレジスタ112からのRt[6:0]位置にあるバイトがVdレジスタ122の最下位バイトとなりかつVu+1レジスタ114からのRt[6:0]-1位置にあるバイトがVdレジスタ122の最上位バイトとなると考察することも可能である。
図2Aおよび図2Bは、有利に利用し得る第2のアライメント関数200および201のそれぞれの実施形態を示す。図2Aは、Rt[7]などのスパンビットがゼロでありかつRt[6:0]が十進法の50に等しいときの例示的なアライメント演算219を示す。図2Aは、2つのプロセッサにデータを要求する命令である2kbワードVRFVdd=valign(Vu@RT)命令203の演算を示しており、ここでGP Rt値が、結合されたGPプロセッサのGP Rtアドレス(data@Rt)334にあるレジスタファイルから取得され、それ以外のフィールド(命令203)はコプロセッサにおいて解釈される。ベクトルコプロセッサは、B×Cビット(B=32でありかつCビット=1024ビット(1kb)である)のベクトルレジスタファイル(VRF)によって編成される。Vdd=valign(Vu@Rt)命令203は、演算コード(Opc)205、命令特定フィールド206、ベクトルレジスタアドレスソースフィールドVu207、ベクトルレジスタアドレス宛先フィールドVdd208、およびGPプロセッサ開始場所レジスタアドレスソースフィールドGP Rt209を備える。Vu207値は直接アドレスレジスタ値として使用されてよく、また別法では、VRFのレジスタはベクトルユニット(Vu)ベースレジスタに記憶された値によって間接的に識別される。第2のアライメント命令の実行には、6つのCビットベクトルレジスタが関わる。4つのソースオペランドレジスタはVu212、Vu+1 214、Vu+2 216およびVu+3 218であり、また2つの結果宛先レジスタは結果の下側128ビットに対するVdd.L 222および結果の上側128ビットに対するVdd.H 224である。
スパンビットはGP Rtアドレス(data@Rt)334にあるGPレジスタファイルから読み取られたRt値のビット7であり、また代替的な実施形態では、そのスパンビットはGP Rtフィールド(図2Aの209および図2Bの210)の最上位ビットである。スパンビットは、この例示的な事例では、256バイト要素とするダブルレジスタの組のパックされたデータ要素に及ぶ開始アドレスを指示す。Vdd=valign(Vu@RT)命令によって、図1に示したVd=valign(Vu@RT)命令のアライメント演算に比較して2倍のアライメントが可能となる。例示的なVddアライメント関数200は、そのスパンビットに応じて4つのレジスタVu212、Vu+1 214、Vu+2 216およびVu+3 218からなる群から下位レジスタの組を選択する。図2Aの例示的なVddアライメント演算220に関しては、そのスパンビットがゼロでありかつ正しい選択ソースレジスタがVu212、Vu+1 214およびVu+2 216である。
Rt[7]=0などのスパンビットについてVdd=valign(Vu@RT)命令203を実行することによって、Vuレジスタ212からのオフセットRt[6:0]要素a50からバイト127要素a127までのバイトと、Vu+1レジスタ214からのバイト0要素a128からオフセットRt[6:0]-1要素a177までのバイトと、が選択された後に移され、これによりオフセットRt[6:0]要素a50にあるVuバイトがVdd.Lレジスタ222の最下位バイトとなりかつオフセットRt[6:0]-1要素a177にあるVu+1バイトがVdd.Lレジスタ222の最上位バイトとなる。さらにアライメント命令の実行によって、Vu+1レジスタ214からのオフセットRt[6:0]要素a178からバイト127要素a255までのバイトと、Vu+2レジスタ216からのバイト0要素b0からオフセットRt[6:0]-1要素b49までのバイトと、が選択された後に移され、これによりオフセットRt[6:0]要素a178にあるVu+1バイトがVdd.Hレジスタ224の最下位バイトとなりかつオフセットRt[6:0]-1要素b49にあるVu+2バイトがVdd.Hレジスタ224の最上位バイトとなる。
図2Bはまた、Rt[7]などのスパンビットが1でありかつRt[6:0]が十進法の254に等しいときの例示的なアライメント関数201を示す。例示的なVddアライメント関数201はそのスパンビットに応じて、4つのレジスタVu212、Vu+1 214、Vu+2 216およびVu+3 218からなる群から下位レジスタの組を選択する。例示的なVddアライメント演算220では、そのスパンビットが1でありかつ選択される正しいソースレジスタの組はVu+1 214、Vu+2 216およびVu+3 218である。したがってスパンビットによって、開始アドレス管理およびソースレジスタ選択のために追加のプログラム命令の使用を要することなく適当な組のレジスタを選択することが可能となる。
Rt[7]=1についてVdd=valign(Vu@RT)命令204を実行すると、Vu+1レジスタ214からのオフセットRt[6:0] 226からバイト127 227までのバイトと、Vu+2レジスタ216からのバイト0 228からオフセット(Rt[6:0]-1)=253 229にあるバイトまでのバイトと、が選択された後に移され、これによりオフセットRt[6:0] 226にあるVu+1バイトがVdd.Lレジスタ222の最下位バイト230となりかつオフセットRt[6:0]-1 229にあるVu+2バイトがVdd.Lレジスタ222の最上位バイト231となる。さらに、アライメント命令の実行によって、Vu+2レジスタ216からのオフセットRt[6:0] 232からバイト127 233までのバイトと、Vu+3レジスタ218からのバイト0 234からオフセット(Rt[6:0]-1)=253 235までのバイトと、が選択された後に移され、これによりオフセットRt[6:0] 232にあるVu+2バイトがVdd.Hレジスタ224の最下位バイト236となりかつオフセットRt[6:0]-1 235にあるVu+3バイトがVdd.Hレジスタ224の最上位バイト237となる。Vdd=valign(Vu@RT)命令204によれば、Vd=valign(Vu@RT)命令104のアライメント容量と比較してアライメントされていないデータの2倍のスパンをアライメントできるので有利である。Rt[7]を用いることによって、ソフトウェアに0から255バイトの範囲でGP Rtポインタの場所を明示的に管理させることなくダブルアライメントスパンが実現される。
図3Aは、有利に利用し得る第1のアライメントサブシステム300の実施形態を示す。第1のアライメントサブシステム300は、レベル1(L1)キャッシュ、L2キャッシュ、L3キャッシュ、システムメモリなどのメモリ階層302と、ベクトルコプロセッサ304と、汎用(GP)プロセッサ306と、を含む。GPプロセッサ306は、GPプロセッサレジスタファイル307と、GPプロセッサ306およびコプロセッサ304の間のデータポート305の一部分と、を含む。コプロセッサ304は、ベクトルプロセッサ命令レジスタ308と、命令復号ユニット309と、ベクトルレジスタファイル(VRF)310と、ベクトル関数ユニット312と、オペランドフェッチユニット320と、結果書込みユニット330と、コプロセッサ304およびGPプロセッサ306の間のデータポート305の一部分と、を含む。GPレジスタファイル307の内容は、データポート305を通じてGPプロセッサ306とコプロセッサ304との間で共有される。ベクトル関数ユニット312は、アライメントユニット314と、ベクトル実行ユニット315と、アライメントユニット314からの結果またはベクトル実行ユニット315からの結果のいずれかを選択するとともに選択された結果をVRF310に記憶するための記憶回路316と、を含む。VRF310は、B×Cビットレジスタファイルとして構成されてよい(ここでたとえば、B=32エントリでありかつCビット=1024ビット(1kb)である)。
第1のアライメントサブシステム300を演算させると、アライメント命令(図1の104、図2Aの203または図2Bの204)などのアライメント命令がベクトル命令レジスタ308で受け取られる。受け取られたアライメント命令は、GP Rtアドレスフィールド333と、復号化演算コード335と、Vuレジスタアドレス338と、VdまたはVddレジスタアドレス(または、複数のアドレス)339と、を含む複数の復号化された結果を生成する命令復号ユニット309で復号化される。
図2Aまたは図2Bに関して説明したようなスパン方法は、GP Rtアドレス(data@Rt)334にあるGPレジスタファイルから読み取られたRt値のビット7を使用するか、または代替的な実施形態では、そのスパンビットはGP Rtフィールド(図2Aの209および図2Bの210)の最上位ビットである。Rt[6:0]の下側のビットは、オペランドフェッチユニット320内のベクトルユニット(VU)ベースレジスタに記憶されたVRFアドレスからのオフセットを指示する。GP Rtアドレス(data@Rt)334にあるGPレジスタファイルから読み取られたレジスタベースのスパンビットRt[7]は、VUベースレジスタに基づいて選択するためのVRFのスパンを指示する。たとえば、Rt[7]=0ではVu、Vu+1、Vu+2レジスタが選択されることになり、またRt[7]=1ではVu+1、Vu+2、Vu+3レジスタが選択されることになる。演算コードベースのスパンビット337は、VUベースレジスタに基づいて選択するためのVRFのスパンを指示する。たとえば、スパンビット337が「0」に等しい場合はVu、Vu+1、Vu+2レジスタが選択されることになり、またスパンビット337が「1」に等しい場合はVu+1、Vu+2、Vu+3レジスタが選択されることになる。
GP Rtアドレスフィールド333は、データポート305を通じてGPプロセッサ306に転送され、GPプロセッサ306において、GP Rtアドレス(data@Rt)334で選択されるデータをもたらすGPプロセッサレジスタファイル307にアクセスするために使用される。data@Rt334は、アライメントユニット314による使用のためにデータポート305を通じてベクトルコプロセッサ304に転送される。代替的な実装形態では、オペランドフェッチユニット320からのVRF選択は、データポート305を通じて共有されたdata@Rt334値から取得されてもよい。アライメントユニット314は、ベクトルアライメント命令によって識別されたデータ要素を選択する複数のマルチプレクサを伴って実装されることがあり、このベクトルアライメント命令はGPプロセッサからフェッチされた開始場所と組み合わせてスパンビットフィールドを含み、選択したデータ要素を例示的な図1、図2Aまたは図2Bに示したような指定されたアライメント場所に位置する。
アライメント命令の要件に基づいて、オペランドフェッチユニット320においてベクトルレジスタファイル(VRF)310に供給される2つまたは4つのソースレジスタアドレスが作成される。要求されたソースオペランドはVRF310から読み取られる。アライメント関数は、たとえば図1のアライメント命令および図2Aまたは図2Bのアライメント命令について説明したようにして供給されたソースオペランドに対して演算を行う。記憶回路316は、アライメントされた結果を選択するとともに、これらを、アライメントされたデータが結果書込みユニット330によって作成されたVd/Vddアドレス(または、複数のアドレス)に書き込まれる場所であるVRF310に送られる。記憶回路316は、命令復号ユニット309によって識別された命令復号情報に基づいてアライメントユニット314からの結果またはベクトル実行ユニット315からの結果のいずれかを選択する。
図3Bは、有利に利用し得る第2のアライメントサブシステム350の実施形態を示す。第2のアライメントサブシステム350は、レベル1(L1)キャッシュ、L2キャッシュ、L3キャッシュ、システムメモリなどのメモリ階層302と、ベクトルコプロセッサ354と、汎用(GP)プロセッサ356と、を含む。GPプロセッサ356は、GPプロセッサレジスタファイル357と、GPプロセッサ356およびコプロセッサ354の間のデータポート355の一部分と、を含む。コプロセッサ354は、ベクトルプロセッサ命令レジスタ308と、命令復号ユニット359と、ベクトルレジスタファイル(VRF)360と、ベクトル関数ユニット362と、オペランドフェッチユニット370と、結果書込みユニット380と、コプロセッサ354およびGPプロセッサ356の間のデータポート355の一部分と、を含む。GPレジスタファイル357の内容は、データポート355を通じてGPプロセッサ356とコプロセッサ354との間で共有される。ベクトル関数ユニット362は、マスクアライメントユニット364と、ベクトル実行ユニット365と、マスクアライメントユニット364からの結果またはベクトル実行ユニット365からの結果のいずれかを選択するとともにこの選択した結果をVRF360に記憶するための記憶回路366と、を含む。VRF360は、B×Cビットレジスタファイル(たとえばここで、B=32エントリでありかつCビット=1024ビット(1kb)である)として構成されてよい。
32エントリVRFに関する第2の例として、GPプロセッサのレジスタファイル357から選択される32ビットRt.H383は、各イネーブルビットが読み取られるVRFアドレスを指示する場所であるビットマスクとして設定され、ここではたとえばビットゼロがVRFアドレスゼロに対応し、ビット1がVRFアドレス1に対応し、続いてビット31までがVRFアドレス31に対応する。さらにGPプロセッサのレジスタファイル357から選択される32ビットRt.L384は、オフセットまたは開始場所として設定される。第2のアライメントサブシステム350を演算させると、アライメント命令(図1の104、図2Aの203または図2Bの204)などのアライメント命令がベクトル命令レジスタ308で受け取られる。受け取られたアライメント命令は、GP Rtアドレスフィールド382と、復号化済み演算コード385および386と、図2Aおよび図2Bに関連して説明したようなRt[7]などのスパンビット387と、Vuレジスタアドレス388と、VdまたはVddレジスタアドレス389と、を含む複数の復号化された結果を生成する命令復号ユニット359で復号化される。GP Rtアドレスフィールド382は、GPプロセッサ356に転送され、GPプロセッサ356において、data@Rt=Rt.Lオフセット値およびdata@Rt+1=Rt.Hマスク値をもたらすGPプロセッサレジスタファイル357にアクセスするために使用される。Rt.H383マスク値はデータポート355を通じてオペランドフェッチユニット370に転送され、またRt.L384オフセット値または開始アドレスはベクトル関数ユニット362に転送される。アライメント命令およびマスクの要件に基づいて、ベクトルVu関数(VuFn)ユニット372内に、ベクトルレジスタファイル(VRF)360に供給されるような複数のソースレジスタアドレスが作成される。たとえば、次式のようになる。
data@Rt+1=Rt.H=0100_0000_1000_0000_0000_0000_0000_0001
32エントリVRF360については、このマスク内の各イネーブルビットは、マスクの最下位ビットに対応するレジスタV0から開始して読み取られるVRFアドレスを指示する。イネーブルビットが「1」であるこの例示的なマスクでは、V0、V23およびV30にあるVRFレジスタが読み取られる。この方法では最大32個のレジスタを指定することが可能であり、またVRF360は同時読取り演算のこの回数を受け入れるのに十分な読取りポートを有しないことがある。したがって、32個の読取りポートを有することの代替として、コプロセッサ354の状態マシン関数によってオペランド読取り演算の連続した組を制御することが可能である。たとえば読取りポートが2つであれば、最大32のレジスタを読み取るために16回の連続した読取り演算(32のイネーブルマスクビットにより指定される場合)が提供されてよく、読取りポートが4つであれば、8回の連続した読取り演算が提供されよい。要求されるソースオペランドはVRF360から読み取られる。マスク値はまた、ベクトル実行ユニット362上の演算をマスクするために使用されてよい。アライメント関数は、たとえば図1のアライメント命令ならびに図2Aおよび図2Bのアライメント命令に関して説明したように供給されたソースオペランドに対して演算される。記憶回路366は、アライメントされた結果を選択するとともに、これらを、結果書込みユニット380によって作成されたVd/Vddアドレス(または、複数のアドレス)にアライメントされたデータが書き込まれる場所であるVRF360に送る。記憶回路366は、命令復号ユニット359により識別された命令復号情報に基づいて、アライメントユニット364からの結果またはベクトル実行ユニット365からの結果のいずれかを選択する。
図3AのベクトルVu関数(VuFn)ユニット322と図3BのVuFnユニット372は、第2のアライメント関数(図2Aの200および図2Bの201)に関して説明したようなインクリメントが線形的に1ずつである順序付け(Vu、Vu+1およびVu+2)などの異なる組のベクトルレジスタアドレスを実装し得る。さらに他の順序付けには、インクリメントが線形的に2ずつの順序付け(Vu、Vu+2、Vu+4)、素数インクリメントの順序付け(Vu、Vu+3、Vu+5)(第1の組のレジスタVu、Vu+P1、Vu+P2と第2の組のレジスタVu+P1、Vu+P2、Vu+P3などであり、ここでP1、P2、P3はアライメント命令によってアクセス可能なVRFレジスタの範囲内に来るように指定された素数である)、またはたとえばある特定のアライメント命令によって要求される他のアドレス順序付けを含んでよい。
アライメントユニット314および364は、アライメントと実行関数演算との融合を可能にするためにベクトル実行ユニット315と365のそれぞれに結合されることがあり、これによって、アライメント結果を先ず記憶し、以降の実行関数で使用され得る前にこれをVRFから再フェッチすることを必要としない。ベクトルアライメントおよび演算命令は、アライメントと実行関数とのこのような融合を指定するために使用され得る。演算は、ベクトル実行ユニット315または365によって提供される選択ベクトル実行関数を含み得る。
図3Aのデータポート305およびGPレジスタファイル307または図3Bのデータポート355およびGPレジスタファイル357は、GPプロセッサ306または356などの第1のプロセッサのスカラーレジスタファイルからアクセスされる1つまたは複数のレジスタ値を、コプロセッサ304または354などの第2のプロセッサと共有するための例示的な手段を提供する。さらにこの1つまたは複数のレジスタ値は、ベクトルプロセッサ命令レジスタ308でフェッチされたベクトルアライメント命令104、203または204において指定されたRtアドレス333または382に従ってアクセスされ、この共有されたレジスタ値のうちの1つから開始場所が決定される。
オペランドフェッチユニット320または370、ベクトルレジスタファイル(VRF)310または360、ならびにアライメントユニット314または364は、第2のプロセッサにおいてたとえば図1、図2Aおよび図2Bに示したようなベクトルアライメント命令に従って、ベクトルレジスタファイル(VRF)の開始Vuレジスタ内の開始場所とVRFの最終Vuレジスタの終了場所との間で識別されたデータをアライメントするための例示的な手段を提供する。
命令復号ユニット309または359、記憶回路316または366、ならびにVRF310または360は、アライメント回路からアライメントされたデータを選択するとともにベクトルアライメント命令によって指定されたアライメント記憶アドレスに従ってアライメントされたデータをベクトルレジスタファイル内に記憶するための例示的な手段を提供する。
図4は、有利に利用し得るデータアライメント400のプロセスのための実施形態を示す。データアライメントプロセス400における演算は、図1、図2A、図2B、図3Aおよび図3Bの要素と関連付けられる。ブロック404では、ベクトルプロセッサ命令レジスタ(308など)でベクトルアライメント命令が受け取られる。ブロック406では、受け取ったベクトルアライメント命令が命令復号ユニット309または359で実施される等で復号化される。ブロック408では、ベクトルアライメント命令が図1に示したようなVdベクトル結果向けであるかあるいは図2Aまたは図2Bに示したようなVddベクトル結果向けであるかの判定が実施される。復号によってVdベクトル結果を生成すべきであると指示されると、プロセス400はブロック410に進む。ブロック410では、ベクトルレジスタファイル(VRF)のVuおよびVu+1レジスタとポートGP Rtレジスタとが読み取られる。ブロック412では、Rt1アドレスについて読み取られたdata@Rtが図1の「a50」126などの開始バイトとして使用される。ブロック414では、VuおよびVu+1レジスタ内のデータが図1のVdレジスタ122に示したものなどの結果Vdを生成するVd=valign(Vu@RT)命令104に従ってアライメントされる。次いでプロセス400はブロック404に戻る。
ブロック408に戻り、ここでVddベクトル結果を生成すべきであると判定された場合、プロセス400はブロック418に進む。ブロック418では、ケース演算が判定される。スパンビットが2ビット以上に及ぶ場合、複数のレジスタアドレスが指定されてよい。たとえば、ケースゼロ(C0)はスパンビットが値0を有するのと同じであり、ケース1(C1)はスパンビットが値1を有するのと同じであるが、C2コードに関するプラス2の順序付け、またはC3コードに関するプラス素数の順序付け、その他などさらなるケースのアドレス作成タイプが指定されてよい。C0コードが決定されると、プロセス400はブロック420に進む。ブロック420では、Vu、Vu+1およびVu+2レジスタとポートGP Rtレジスタとが読み取られる。ブロック422では、Rt2アドレスについて読み取られたdata@Rtが開始バイトとして使用される。ブロック424では、Vu、Vu+1およびVu+2レジスタのデータが、結果Vddを生成するVdd=valign(Vu@RT)命令204に従ってアライメントされる。次いでプロセス400はブロック404に戻る。
ブロック418に戻り、ここでC1コードが決定された場合、プロセス400はブロック430に進む。ブロック430では、Vu+1、Vu+2およびVu+3レジスタとポートGP Rtレジスタとが読み取られる。ブロック422では、Rt2アドレスについて読み取られたdata@Rtが開始バイトとして使用される。ブロック424では、Vu+1、Vu+2およびVu+3レジスタのデータがVddレジスタ222および224に示したものなどの結果Vddを生成するVdd=valign(Vu@RT)命令204に従ってアライメントされる。次いでプロセス400はブロック404に戻る。
ブロック418に戻り、ここでCkコードが決定された場合、プロセス400はブロック432に進む。ブロック432では、たとえばVu+k、Vu+k+1およびVu+k+2レジスタとポートGP Rtレジスタとが読み取られる(ここで、kは1以上の整数となるようにアライメント命令によって指定され、Vu+k、Vu+k+1およびVu+k+2はVRFの容量域内にある)。上で説明した2または素数の順序付けあるいはある特定のアプリケーションの要求に従った順序付けなどベクトルレジスタに関して他の順序付けが読み取られてよい。ブロック422では、Rt2アドレスについて読み取られたdata@Rtが開始バイトとして使用される。ブロック424では、Vu+k、Vu+k+1およびVu+k+2レジスタのデータが結果Vddを生成するVdd=valign(Vu@RT)命令204に従ってアライメントされる。次いでプロセス400はブロック404に戻る。ブロック418でのスパンコードによる決定に従ったまたベクトルアライメント命令による指定に従った他の可能なレジスタ選択が存在する。たとえば、ブロック420、430および432に示したレジスタの組のうちの1つを選択するように第1のスパンコードが指定される可能性があり、また第1のスパンコードにより選択した組と異なる組のレジスタを選択するように第2のスパンコードが指定される可能性がある。たとえば、ブロック432に示したような第1の組のレジスタVu+k、Vu+k+1およびVu+k+2が第1のスパンコードによって選択される場合、Vu+k+1、Vu+k+2およびVu+k+3などの異なる組のレジスタ(図示せず)が第2のスパンコードによって第2の組のレジスタ向けに選択される可能性がある。別の例として、ブロック420に示したような第1の組のレジスタVu、Vu+1、Vu+2がスパンコードC0によって選択される可能性があり、またブロック432に示したような第2の組のレジスタVu+k、Vu+k+1、Vu+k+2がスパンコードCkによって選択される可能性がある。
図5は、汎用(GP)プロセッサ536と、ベクトルアライメント関数を提供するとともにポータブルデバイスのリアルタイム要件を満たすように構成されたベクトルコプロセッサなどのコプロセッサ(CoP)538と、を有するポータブルデバイス500を示す。ポータブルデバイス500は、ワイヤレス電子デバイスとするとともに、ソフトウェア命令510を有するシステムメモリ508に結合されたプロセッサコンプレックス506を含むシステムコア504を含んでよい。ポータブルデバイス500は、電源514と、アンテナ516と、キーボードなどの入力デバイス518と、液晶ディスプレイLCDなどのディスプレイ520と、ビデオ機能を備えた1つまたは2つのカメラ522と、スピーカ524と、マイクロフォン526と、を備える。システムコア504はまた、ワイヤレスインターフェース528と、表示コントローラ530と、カメラインターフェース532と、codec534と、を含む。プロセッサコンプレックス506は、ローカルレベル1命令キャッシュおよびレベル1データキャッシュ549を有するGPプロセッサ536とレベル1ベクトルメモリ554を有するコプロセッサ(CoP)538とからなるデュアルコア構成を含んでよい。CoP538のアライメント関数は、図1〜図4のアライメント関数に対応し得る。プロセッサコンプレックス506はさらに、モデムサブシステム540と、フラッシュコントローラ544と、フラッシュデバイス546と、マルチメディアサブシステム548と、レベル2キャッシュ550と、メモリコントローラ552と、を含んでよい。フラッシュデバイス546は、取外し可能フラッシュメモリを含んでもよいし、あるいはまた埋め込まれたメモリとしてもよい。
図示した例ではシステムコア504は、図1〜図4に示したまたは図1〜図4と関連付けされた実施形態のうちのいずれかに従って演算を行う。たとえば図3Aおよび図3Bに示したようにCoP538は、図1および図2に示したような例示的なデータアライメント関数を提供するためにL1 I&Dキャッシュ、L2キャッシュ550のメモリ内およびシステムメモリ508内に記憶されたプログラム命令にアクセスするように構成されている。
ワイヤレスインターフェース528は、アンテナ516およびワイヤレスインターフェース528を介して受け取ったワイヤレスデータをMSS540に提供され、CoP538と共有およびGPプロセッサ536と共有され得るようにプロセッサコンプレックス506に対してかつワイヤレスアンテナ516に対して結合されてよい。カメラインターフェース532はプロセッサコンプレックス506に結合され、またビデオ機能を備えたカメラ522などの1つまたは複数のカメラに結合される。表示コントローラ530は、プロセッサコンプレックス506に対してかつ表示デバイス520に対して結合される。プロセッサコンプレックス506には符号器/復号器(CODEC)534も結合される。1対のステレオスピーカを備え得るスピーカ524とマイクロフォン526とがCODEC534に結合される。周辺デバイスとその関連するインターフェースは例示であり、その数や容量が限定されるものではない。たとえば入力デバイス518は、ある特定のデバイス内に個別に実装されることや異なるデバイスに組み合わせて実装されることがあるようなユニバーサルシリアルバス(USB)インターフェースなど、QWERTYスタイルのキーボード、英数字キーボードおよびテンキーを含んでよい。
GPプロセッサ536およびCoP538は、システムメモリ508などの非一時的コンピュータ読取り可能媒体内に記憶され、かつデュアルコアプロセッサ536および538などのコンピュータに対して、図1および図2に示したようなデータアライメント関数を提供するためのプログラムを実行させるように実行可能であるソフトウェア命令510を実行するように構成されている。GPプロセッサ536およびCoP538は、GPプロセッサ536上で可変のRt(さらに、Rt.HおよびRt.Lに対応し得る)を計算するとともにこのGP Rtデータ値(または、複数の値)をCoP538と共有するVd=valign(Vu@Rt)やVdd=valign(Vu@Rt)などのソフトウェア命令510を実行するように構成されている。このソフトウェア命令は、L1命令メモリ549などの異なるレベルのキャッシュメモリおよびシステムメモリ508からアクセスされる。
ある特定の実施形態では、システムコア504は、システムインパッケージ内またはシステムオンチップデバイス上に物理的に編成されている。ある特定の実施形態では、システムオンチップデバイスとして編成されたシステムコア504は、図5に示したように電源514、ワイヤレスアンテナ516、入力デバイス518、表示デバイス520、カメラ522、スピーカ524、マイクロフォン526に物理的に結合され、また取外し可能フラッシュデバイス546に結合されることがある。
本明細書に記載した実施形態に従ったポータブルデバイス500は、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、パーソナルデジタルアシスタント(PDA)、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、携帯電話、コンピュータ、ポータブルコンピュータ、タブレット、モニタ、コンピュータモニタ、テレビ、チューナー、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、ビデオプレーヤ、デジタルビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤ、データやコンピュータ命令を記憶または取り出すような他の任意のデバイス、あるいはこれらの任意の組合せなどの多種多様な電子デバイスに組み込まれ得る。
本明細書に開示した実施形態と関連して記載した様々な例示の論理ブロック、モジュール、回路、要素または構成要素は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラム可能論理構成要素、離散ゲートやトランジスタロジック、離散ハードウェア構成要素、あるいは本明細書に記載した機能を実行するように設計されたこれらの任意の組合せと一緒に実装されること、あるいはこれらによって実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替形態では、プロセッサを従来のプロセッサ、コントローラ、マイクロコントローラまたは状態マシンであってよい。プロセッサはまたたとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つまたは複数のマイクロプロセッサ、あるいは所望の用途に適した他の任意のこうした構成など、コンピュータ構成要素の組合せとして実装され得る。
図5のデュアルコアプロセッサ536および538は、たとえば、プログラムの制御下でリアルタイムタスクをサービスするためにマルチプロセッサシステム内でデータアライメント関数への命令を実行するように構成されてよい。プログラムは、命令キャッシュ549を通じて利用可能になり得るなどプロセッサコンプレックス506と直接ローカルに関連付けさせるか、あるいはある特定の入力デバイス518またはワイヤレスインターフェース528を通じてアクセス可能とするかのいずれかとしたコンピュータ読取り可能非一時的記憶媒体上に記憶されている。入力デバイス518またはワイヤレスインターフェース528はまたたとえば、メモリデバイスにあるデータにプロセッサローカルデータキャッシュなどプロセッサと直接ローカルに関連付けさせるか、またはシステムメモリ508からアクセス可能とするかのいずれかとしてアクセスすることができる。本明細書に開示した様々な実施形態に関連して記載した方法は、ハードウェアで、プロセッサによって実行される1つまたは複数のプログラムを有するソフトウェアモジュールで、またはこれら2つの組合せで直接具現化され得る。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、同期ダイナミックランダムアクセスメモリ(SDRAM)、フラッシュメモリ、読取り専用メモリ(ROM)、消去可能プログラム可能読取り専用メモリ(EPROM)、電気的消去可能プログラム可能読取り専用メモリ(EEPROM)、ハードディスク、取外し可能ディスク、コンパクトディスク(CD)-ROM、デジタルビデオディスク(DVD)または当技術分野で周知の他の任意の形式の非一時的記憶媒体の中に存在してよい。非一時的記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合され得る。代替形態では、記憶媒体はプロセッサと一体化されてよい。
本発明は、プロセッサシステムで使用される例示の実施形態の文脈で開示されるが、上記の議論や添付の特許請求の範囲と矛盾しないような幅広い多種多様な実装形態を利用し得ることは当業者であれば理解されよう。たとえば固定関数の実装形態は、本発明の様々な実施形態を利用することもある。
100 アライメント関数
104 Vd=valign(Vu@Rt)命令
105 演算コード(Opc)
106 命令特定フィールド
107 ベクトルレジスタアドレスソースフィールドVu
108 ベクトルレジスタアドレス宛先フィールドVd
109 GPプロセッサ開始場所レジスタアドレスソースフィールドGP Rt
112 Vuレジスタ
114 Vu+1レジスタ
122 Vdレジスタ
200 アライメント関数
201 アライメント関数
203 Vdd=valign(Vu@RT)命令
204 Vdd=valign(Vu@RT)命令
205 演算コード(Opc)
206 命令特定フィールド
207 ベクトルレジスタアドレスソースフィールドVu
208 ベクトルレジスタアドレス宛先フィールドVdd
209 GPプロセッサ開始場所レジスタアドレスソースフィールドGP Rt
212 Vuレジスタ
214 Vu+1レジスタ
216 Vu+2レジスタ
218 Vu+3レジスタ
219 アライメント演算
222 Vdd.Lレジスタ
224 Vdd.Hレジスタ
300 アライメントサブシステム
302 メモリ階層
304 ベクトルコプロセッサ
305 データポート
306 汎用(GP)プロセッサ
307 GPプロセッサレジスタファイル
308 ベクトルプロセッサ命令レジスタ
309 命令復号ユニット
310 ベクトルレジスタファイル(VRF)
312 ベクトル関数ユニット
314 アライメントユニット
315 ベクトル実行ユニット
320 オペランドフェッチユニット
330 結果書込みユニット
333 GP Rtアドレスフィールド
334 GP Rtアドレス(data@Rt)
335 復号化演算コード
337 スパンビット
338 Vuレジスタアドレス
339 VdまたはVddレジスタアドレス
350 アライメントサブシステム
354 ベクトルコプロセッサ
355 データポート
356 汎用(GP)プロセッサ
357 GPプロセッサレジスタファイル
359 命令復号ユニット
360 ベクトルレジスタファイル(VRF)
362 ベクトル関数ユニット
364 マスクアライメントユニット
365 ベクトル実行ユニット
370 オペランドフェッチユニット
380 結果書込みユニット
382 GP Rtアドレスフィールド
384 32ビットRt.L
385 復号化済み演算コード
386 復号化済み演算コード
387 スパンビット
388 Vuレジスタアドレス
389 VdまたはVddレジスタアドレス
500 ポータブルデバイス
504 システムコア
506 プロセッサコンプレックス
508 システムメモリ
510 ソフトウェア命令
514 電源
516 アンテナ
518 入力デバイス
520 ディスプレイ
522 カメラ
524 スピーカ
526 マイクロフォン
528 ワイヤレスインターフェース
530 表示コントローラ
532 カメラインターフェース
534 codec
536 汎用(GP)プロセッサ
538 コプロセッサ(CoP)
540 モデムサブシステム
544 フラッシュコントローラ
546 フラッシュデバイス
548 マルチメディアサブシステム
549 L1 I&Dキャッシュ
550 L2キャッシュ
552 メモリコントローラ
554 L1ベクトルメモリ

Claims (22)

  1. ベクトルアライメント命令を実行するための方法であって、
    第1のプロセッサで作成された開始場所に、前記第1のプロセッサと第2のプロセッサとの間で共有されたスカラーレジスタファイル内のレジスタからアクセスするステップであって、前記第1のプロセッサは汎用(GP)プロセッサであり、前記第2のプロセッサは単一命令多重データ(SIMD)ベクトルプロセッサである、ステップと、
    前記第2のプロセッサ上で、ベクトルレジスタファイル(VRF)のレジスタ内の前記開始場所で始まる1組のデータ値を、前記VRFの標的レジスタに1組のアライメントされたデータ値として記憶されるようにアライメントするステップと、
    前記VRFの標的レジスタに前記アライメントされた1組のデータ値を記憶するステップとを含む方法。
  2. ベクトルアライメント命令を実行するための方法であって、
    第1のプロセッサ上で作成された開始場所に、前記第1のプロセッサと第2のプロセッサとの間で共有されたスカラーレジスタファイル内のレジスタからアクセスするステップと、
    前記第2のプロセッサ上で、ベクトルレジスタファイル(VRF)のレジスタ内の前記開始場所で始まる1組のデータ値を、前記VRFの標的レジスタに1組のアライメントされたデータ値として記憶されるようにアライメントするステップであって、スパンビットが、前記VRFの第1のレジスタ群のうちの第1のレジスタまたは前記VRFの第2のレジスタ群のうちの第2のレジスタを前記VRFの前記レジスタとして選択する、ステップと、
    前記VRFの標的レジスタに前記アライメントされた1組のデータ値を記憶するステップと
    を含む方法。
  3. 前記スパンビットは前記開始場所の最上位ビットである、請求項2に記載の方法。
  4. 前記第1のレジスタ群のうちの前記第1のレジスタは、前記ベクトルアライメント命令のVuフィールドによって識別され、前記第1のレジスタ群のそれ以外のレジスタは、レジスタの命令指定による順序付けに従って識別される、請求項2に記載の方法。
  5. ベクトルアライメント命令を実行するための方法であって、
    1のプロセッサ上で作成され、前記第1のプロセッサのスカラーレジスタファイル内のレジスタに記憶され、かつ前記第1のプロセッサと前記第2のプロセッサとの間で共有される値からスパンビットおよび開始場所にアクセスするステップと、
    前記第2のプロセッサ上でベクトルレジスタファイル(VRF)の1組のレジスタ内の前記開始場所で始まる1組のデータ値を、前記VRFの標的レジスタの組に1組のアライメントされたデータ値として記憶されるようにアライメントするステップであって、前記VRFの前記1組のレジスタは前記スパンビットに基づいて第1のレジスタセットまたは第2のレジスタセットとして選択される、アライメントするステップと、
    前記VRFの標的レジスタに前記アライメントされた1組のデータ値を記憶するステップと
    を含、方法。
  6. 前記第1のレジスタセットは、Vu識別されたレジスタで始まるリニアプラスワン順序付けにおける3つのレジスタからなる組であるとともに前記第2のレジスタセットは、Vu+k識別されたレジスタで始まるリニアプラスkプラスワン順序付けにおける3つのレジスタからなる組であり、かつkは前記アライメント命令によって1以上の整数となるように指定される、請求項5に記載の方法。
  7. 前記第1のレジスタセットは、Vu識別されたレジスタで始まるリニアプラスツー順序付けにおける3つのレジスタからなる組であるとともに前記第2のレジスタセットは、Vu+k識別されたレジスタで始まるリニアプラスkプラスツー順序付けにおける3つのレジスタからなる組であり、かつkは前記アライメント命令によって1以上の整数となるように指定される、請求項5に記載の方法。
  8. 前記第1のレジスタセットはVu、Vu+P1、Vu+P2であり、前記第2のレジスタセットはVu+P1、Vu+P2、Vu+P3であり、かつP1、P2、P3はアクセス可能なVRFレジスタの範囲内に来るように前記アライメント命令によって指定された素数である、請求項5に記載の方法。
  9. 前記スカラーレジスタファイルの前記レジスタ、および前記標的レジスタは、前記ベクトルアライメント命令内で指定され、前記VRFの前記レジスタは、ベクトルユニット(Vu)ベースレジスタに記憶された値によって間接的に識別される、請求項1、2、および5のうちのいずれか一項に記載の方法。
  10. 前記第1のプロセッサ上の演算に影響を及ぼすことなく開始場所のアクセスが発生可能なように、前記スカラーレジスタファイルの前記レジスタが、前記第2のプロセッサに割り当てられたデータポートを通じて共有される、請求項1、2、および5のうちのいずれか一項に記載の方法。
  11. ベクトルアライメントおよび演算命令を実行するための方法であって、
    第1のプロセッサ上で作成された開始場所に対して、前記第1のプロセッサと第2のプロセッサとの間で共有されたスカラーレジスタファイル内のレジスタからアクセスするステップであって、前記第1のプロセッサは汎用(GP)プロセッサであり、前記第2のプロセッサは単一命令多重データ(SIMD)ベクトルプロセッサである、ステップと、
    前記第2のプロセッサ上でベクトルレジスタファイル(VRF)のレジスタ内の前記開始場所で始まる1組のデータ値を、1組のアライメントされたデータ値が作成されるようにアライメントするステップと、
    前記VRFの標的レジスタに記憶される結果を作成するために前記アライメントされたデータ値に対して前記ベクトルアライメントおよび演算命令に従って演算をするステップと、
    を含む方法。
  12. 前記第1のプロセッサ上の演算に影響を及ぼすことなく前記開始場所の前記アクセスが発生可能なように、前記スカラーレジスタファイル内の前記レジスタが、前記第2のプロセッサに割り当てられたデータポートを通じて共有される、請求項11に記載の方法。
  13. 前記スカラーレジスタファイル内の前記レジスタ、および前記標的レジスタは、前記ベクトルアライメントおよび演算命令において指定され、前記VRFの前記レジスタはベクトルユニット(Vu)ベースレジスタに記憶された値によって間接的に識別される、請求項12に記載の方法。
  14. ベクトルマスクアライメント命令を実行するための方法であって、
    第1のプロセッサ上で作成されたマスクおよび開始場所に対して、前記第1のプロセッサと第2のプロセッサとの間で共有されたスカラーレジスタファイル内の第1のレジスタおよび第2のレジスタからアクセスするステップであって、前記第1のプロセッサは汎用(GP)プロセッサであり、前記第2のプロセッサは単一命令多重データ(SIMD)ベクトルプロセッサである、ステップと、
    前記マスク内のイネーブルビットに従って前記第2のプロセッサ上でベクトルレジスタファイル(VRF)の1組のレジスタを識別するように前記マスクを適用するステップと、
    第2のプロセッサ上で前記VRFの前記識別された1組のレジスタ内の前記開始場所で始まる1組のデータ値を、前記VRFの標的レジスタの組に1組のアライメントされたデータ値として記憶されるようにアライメントするステップと、
    前記VRFの標的レジスタの組に前記アライメントされた1組のデータ値を記憶するステップと
    を含む方法。
  15. 前記第1のプロセッサ上の演算に影響を及ぼすことなく前記マスクおよび前記開始場所の前記アクセスが発生可能なように、前記第1のレジスタおよび前記第2のレジスタが、前記第2のプロセッサに割り当てられたデータポートを通じて共有される、請求項14に記載の方法。
  16. ベクトルアライメント命令を実行するための装置であって、
    1つまたは複数のレジスタ値を第2のプロセッサと共有するように構成された第1のプロセッサと関連付けされたスカラーレジスタファイルであって、前記1つまたは複数のレジスタ値はベクトルアライメント命令において指定されたRtアドレスに従って前記スカラーレジスタファイルからアクセスされ、前記第1のプロセッサは汎用(GP)プロセッサであり、前記第2のプロセッサは単一命令多重データ(SIMD)ベクトルプロセッサであり、前記1つまたは複数のレジスタ値は、前記GPプロセッサにより作成される、スカラーレジスタファイルと、
    ベクトルレジスタファイル(VRF)の複数のレジスタ内の識別されたデータを、前記ベクトルアライメント命令、および前記1つまたは複数のレジスタ値から決定されたアライメント開始場所に従ってアライメントするように構成された前記第2のプロセッサ内のアライメント回路と、
    前記アライメント回路から前記アライメントされたデータを選択し、前記ベクトルアライメント命令によって指定されたアライメント記憶アドレスに従って、前記アライメントされたデータを前記ベクトルレジスタファイル内に記憶するように構成された記憶回路と、
    を備える装置。
  17. 前記開始場所は前記複数のレジスタの開始レジスタ内にある、請求項16に記載の装置。
  18. ベクトルアライメント命令を実行するための装置であって、
    1つまたは複数のレジスタ値を第2のプロセッサと共有するように構成された第1のプロセッサと関連付けされたスカラーレジスタファイルであって、前記1つまたは複数のレジスタ値はベクトルアライメント命令において指定されたRtアドレスに従って前記スカラーレジスタファイルからアクセスされる、スカラーレジスタファイルと、
    ベクトルレジスタファイル(VRF)の複数のレジスタ内の識別されたデータを、前記ベクトルアライメント命令、および前記1つまたは複数のレジスタ値から決定されたアライメント開始場所に従ってアライメントするように構成された前記第2のプロセッサ内のアライメント回路と、
    前記アライメント回路から前記アライメントされたデータを選択し、前記ベクトルアライメント命令によって指定されたアライメント記憶アドレスに従って、前記アライメントされたデータを前記ベクトルレジスタファイル内に記憶するように構成された記憶回路と
    を備え、
    ダブルアライメント命令は、スパンコードの状態に従って前記VRFの第1のレジスタセットまたは第2のレジスタセットを識別するために、前記1つまたは複数のレジスタ値から選択された前記スパンコードを指定する、装置。
  19. マスクアライメント命令が、マスク内の1つまたは複数のイネーブルビットに従って、前記VRFから選択される1つまたは複数のレジスタ内に記憶されたデータのアライメントを識別するために、前記1つまたは複数のレジスタ値から選択されるマスクを指定する、請求項16に記載の装置。
  20. 前記第1のプロセッサ上の演算に影響を及ぼすことなく前記レジスタ値の前記アクセスが発生可能なように、前記第1のプロセッサ内の前記スカラーレジスタファイルからアクセスされる前記1つまたは複数のレジスタ値が、前記第2のプロセッサに割り当てられたデータポートを通じて共有される、請求項16に記載の装置。
  21. コンピュータ読取り可能なプログラムデータおよびコードによって符号化されたコンピュータ可読記憶媒体であって、前記プログラムデータおよびコードは実行時に、
    第1のプロセッサで作成された開始場所に対して、前記第1のプロセッサと第2のプロセッサとの間で共有されたスカラーレジスタファイル内のレジスタからアクセスすることであって、前記第1のプロセッサは汎用(GP)プロセッサであり、前記第2のプロセッサは単一命令多重データ(SIMD)ベクトルプロセッサである、こと
    第2のプロセッサ上でベクトルレジスタファイル(VRF)のレジスタ内の前記開始場所で始まる1組のデータ値を、前記VRF内の標的レジスタに1組のアライメントされたデータ値として記憶されるようにアライメントすること、および
    前記VRFの標的レジスタに前記アライメントされた1組のデータ値を記憶すること
    を行うように動作可能である、コンピュータ可読記憶媒体。
  22. ベクトルアライメント命令を実行するための装置であって、
    第1のプロセッサ内のスカラーレジスタファイルからアクセスされる1つまたは複数のレジスタ値を第2のプロセッサと共有するための手段であって、前記1つまたは複数のレジスタ値はベクトルアライメント命令において指定されたRtアドレスに従ってアクセスされ、前記共有されたレジスタ値のうちの1つから開始場所が決定され、前記第1のプロセッサは汎用(GP)プロセッサであり、前記第2のプロセッサは単一命令多重データ(SIMD)ベクトルプロセッサであり、前記1つまたは複数のレジスタ値は、前記GPプロセッサにより作成される、共有するための手段と、
    前記ベクトルアライメント命令に従って、ベクトルレジスタファイル(VRF)の開始Vuレジスタ内の前記開始場所と前記VRFの最終Vuレジスタの終了場所との間で識別された前記第2のプロセッサ内のデータをアライメントするための手段と、
    アライメント回路から前記アライメントされたデータを選択するとともに前記ベクトルアライメント命令によって指定されたアライメント記憶アドレスに従って前記アライメントされたデータを前記ベクトルレジスタファイル内に記憶するための手段と、
    を備える装置。
JP2015558998A 2013-02-26 2014-02-21 スカラーレジスタデータ値に基づいたベクトルレジスタアドレス指定および関数 Expired - Fee Related JP6293795B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/777,297 US9632781B2 (en) 2013-02-26 2013-02-26 Vector register addressing and functions based on a scalar register data value
US13/777,297 2013-02-26
PCT/US2014/017713 WO2014133895A2 (en) 2013-02-26 2014-02-21 Vector register addressing and functions based on a scalar register data value

Publications (3)

Publication Number Publication Date
JP2016511470A JP2016511470A (ja) 2016-04-14
JP2016511470A5 JP2016511470A5 (ja) 2017-06-29
JP6293795B2 true JP6293795B2 (ja) 2018-03-14

Family

ID=50272743

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015558998A Expired - Fee Related JP6293795B2 (ja) 2013-02-26 2014-02-21 スカラーレジスタデータ値に基づいたベクトルレジスタアドレス指定および関数

Country Status (6)

Country Link
US (1) US9632781B2 (ja)
EP (1) EP2962187B1 (ja)
JP (1) JP6293795B2 (ja)
KR (1) KR101753900B1 (ja)
CN (1) CN104981771B (ja)
WO (1) WO2014133895A2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10001995B2 (en) 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
US20170177355A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instruction and Logic for Permute Sequence
US11243958B2 (en) 2015-12-31 2022-02-08 Teradata Us, Inc. Implementing contract-based polymorphic and parallelizable SQL user-defined scalar and aggregate functions
US10762164B2 (en) 2016-01-20 2020-09-01 Cambricon Technologies Corporation Limited Vector and matrix computing device
CN111580865B (zh) * 2016-01-20 2024-02-27 中科寒武纪科技股份有限公司 一种向量运算装置及运算方法
US10296337B2 (en) * 2016-03-21 2019-05-21 International Business Machines Corporation Preventing premature reads from a general purpose register
GB2548600B (en) * 2016-03-23 2018-05-09 Advanced Risc Mach Ltd Vector predication instruction
CN111651205B (zh) * 2016-04-26 2023-11-17 中科寒武纪科技股份有限公司 一种用于执行向量内积运算的装置和方法
US20180217838A1 (en) * 2017-02-01 2018-08-02 Futurewei Technologies, Inc. Ultra lean vector processor
KR102343652B1 (ko) * 2017-05-25 2021-12-24 삼성전자주식회사 벡터 프로세서의 서열 정렬 방법
CN114008604A (zh) * 2020-07-28 2022-02-01 深圳市汇顶科技股份有限公司 具有专用寄存器的risc处理器

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5922066A (en) 1997-02-24 1999-07-13 Samsung Electronics Co., Ltd. Multifunction data aligner in wide data width processor
US7197625B1 (en) 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US5933650A (en) * 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
GB2372848B (en) 2001-02-20 2004-10-27 Advanced Risc Mach Ltd Data processing using a coprocessor
GB2382673B (en) 2001-10-31 2005-10-26 Alphamosaic Ltd A vector processing system
US7376812B1 (en) 2002-05-13 2008-05-20 Tensilica, Inc. Vector co-processor for configurable and extensible processor architecture
US6986023B2 (en) * 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
JP2005535966A (ja) * 2002-08-09 2005-11-24 インテル・コーポレーション アライメントまたはブロードキャスト命令を含むマルチメディア・コプロセッサの制御メカニズム
GB2409066B (en) 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
US7574409B2 (en) 2004-11-04 2009-08-11 Vericept Corporation Method, apparatus, and system for clustering and classification
US7620797B2 (en) 2006-11-01 2009-11-17 Apple Inc. Instructions for efficiently accessing unaligned vectors
GB2444744B (en) 2006-12-12 2011-05-25 Advanced Risc Mach Ltd Apparatus and method for performing re-arrangement operations on data
US8255446B2 (en) * 2006-12-12 2012-08-28 Arm Limited Apparatus and method for performing rearrangement and arithmetic operations on data
US7783860B2 (en) 2007-07-31 2010-08-24 International Business Machines Corporation Load misaligned vector with permute and mask insert
US20090172348A1 (en) * 2007-12-26 2009-07-02 Robert Cavin Methods, apparatus, and instructions for processing vector data
US10387151B2 (en) 2007-12-31 2019-08-20 Intel Corporation Processor and method for tracking progress of gathering/scattering data element pairs in different cache memory banks
US7865693B2 (en) 2008-10-14 2011-01-04 International Business Machines Corporation Aligning precision converted vector data using mask indicating offset relative to element boundary corresponding to precision type
US8607033B2 (en) 2010-09-03 2013-12-10 Lsi Corporation Sequentially packing mask selected bits from plural words in circularly coupled register pair for transferring filled register bits to memory
US8904153B2 (en) 2010-09-07 2014-12-02 International Business Machines Corporation Vector loads with multiple vector elements from a same cache line in a scattered load operation
US20120254589A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian System, apparatus, and method for aligning registers

Also Published As

Publication number Publication date
EP2962187B1 (en) 2018-03-28
US9632781B2 (en) 2017-04-25
CN104981771A (zh) 2015-10-14
KR101753900B1 (ko) 2017-07-04
KR20150122195A (ko) 2015-10-30
CN104981771B (zh) 2018-05-04
WO2014133895A2 (en) 2014-09-04
US20140244967A1 (en) 2014-08-28
WO2014133895A3 (en) 2014-10-23
JP2016511470A (ja) 2016-04-14
EP2962187A2 (en) 2016-01-06

Similar Documents

Publication Publication Date Title
JP6293795B2 (ja) スカラーレジスタデータ値に基づいたベクトルレジスタアドレス指定および関数
TWI574156B (zh) 具有獨立的使用者和監管者域的記憶體保護鑰結構
EP3588281B1 (en) Apparatus and method for a tensor permutation engine
US20210141683A1 (en) Hardware apparatuses and methods for memory corruption detection
CN107918546B (zh) 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统
CN107220029B (zh) 掩码置换指令的装置和方法
KR20170118051A (ko) 벡터 캐시 라인 라이트 백 프로세서, 방법, 시스템, 및 명령어
TW201732551A (zh) 用於載入索引和預提取聚集操作之指令和邏輯
KR20210084223A (ko) 동적 키 유도에 기초한 다중 키 전체 메모리 암호화를 위한 방법 및 장치
TW201727493A (zh) 從持續記憶體預取資訊的指令及邏輯
TW201732547A (zh) 用於載入索引及預取散佈運算的邏輯和指令
KR20110055629A (ko) 단일 명령 다중 데이터(simd)데이터 처리기에서 확장된 어드레싱 모드들의 제공
JP6741006B2 (ja) マスクレジスタとベクトルレジスタとの間で可変に拡張するための方法および装置
EP3644179A2 (en) Apparatus and method for tile gather and tile scatter
KR101934760B1 (ko) 단일 명령어에 응답하여 회전 및 xor을 수행하기 위한 시스템들, 장치들, 및 방법들
KR20170065587A (ko) 모턴 좌표 조정 프로세서, 방법, 시스템 및 명령어
KR20170099869A (ko) 인덱스 및 즉치로 벡터 치환을 수행하기 위한 방법 및 장치
KR20170065585A (ko) 사차원 모턴 좌표 변환 프로세서, 방법, 시스템 및 명령어
JP2018500652A (ja) マスクをマスク値のベクトルに拡張するための方法および装置
JP2018507453A (ja) 命令フローを最適化するチェックを実行するための装置および方法
US20150186136A1 (en) Systems, apparatuses, and methods for expand and compress
JP2018500629A (ja) 3d座標から3dのz曲線インデックスを計算するための機械レベル命令
JP2017539010A (ja) ベクトル飽和ダブルワード/クワッドワードの加算を実行するための命令およびロジック
CN107168682B (zh) 用于确定值是否在范围内的指令的装置和方法
KR20140113579A (ko) 데이터 요소에 있는 비트들의 제로화를 위한 시스템, 장치, 및 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170127

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170515

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20170515

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20170621

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170626

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170926

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171019

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180214

R150 Certificate of patent or registration of utility model

Ref document number: 6293795

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees