JP5607832B2 - 汎用論理演算の方法および装置 - Google Patents

汎用論理演算の方法および装置 Download PDF

Info

Publication number
JP5607832B2
JP5607832B2 JP2013530347A JP2013530347A JP5607832B2 JP 5607832 B2 JP5607832 B2 JP 5607832B2 JP 2013530347 A JP2013530347 A JP 2013530347A JP 2013530347 A JP2013530347 A JP 2013530347A JP 5607832 B2 JP5607832 B2 JP 5607832B2
Authority
JP
Japan
Prior art keywords
value
bit
bits
immediate
index value
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
JP2013530347A
Other languages
English (en)
Other versions
JP2013543175A (ja
JP2013543175A5 (ja
Inventor
ティー. フォーサイス、アンドリュー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2013543175A publication Critical patent/JP2013543175A/ja
Publication of JP2013543175A5 publication Critical patent/JP2013543175A5/ja
Application granted granted Critical
Publication of JP5607832B2 publication Critical patent/JP5607832B2/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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/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
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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

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)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

本願発明は、一般的に、コンピュータプロセッサの分野に関する。より詳細には、本願発明は、コンピュータプロセッサ上での汎用論理演算に対応する装置および方法に関する。
コンピュータプロセッサは、命令に従い数学演算および論理演算を実行する。数学演算には、例えば、それぞれ異なる正確性での浮動小数点加算および整数加算、減算、乗算および除算が含まれる。論理演算には、わずかながら例を挙げると、AND、OR、NAND、NOR、XOR、左シフト、右シフト、スウィズル、選択および投票などの関数が含まれる。
(特に3つ以上のオペランドが関わる)特定の状況において、比較的単純な論理演算でも、多大な数の命令の実行を必要となり得る。例を挙げると、宛先レジスタ(dest)内の特定のビットが設定された場合、ソースレジスタ1(src1)が選択されるべきか、若しくは、ソースレジスタ2(src2)が選択されるべきかを特定するのに、dest =(src1 AND dest)OR(src2 AND(NOT dest))などの論理が必要とされる。従来技術に基づいてこの演算を実行するには、複数の異なる命令(2つのAND演算、1つのOR演算、1つのNOT演算)を実行する必要がある。従来技術を用いると、複数の命令シーケンスを用いて、多様な、他の比較的単純な関数を実行する必要がある。
したがって、より少ない数の命令の実行を必要とする、論理演算を実行する新たな技術があれば有益であろう。
次の図面と併せて以下の詳細な説明を読むことにより、本願発明のより良い理解が可能となるであろう。
図1は、即値の指標が3つのソースオペランドから生成される、本願発明の一実施形態を示す。 図2は、即値に指標付けし論理演算を実行する方法の一実施形態を示す。 図3は、即値に指標付けし論理演算を実行する方法の他の実施形態を示す。 図4は、本願発明の一実施形態で採用されるプロセッサアーキテクチャを示す。 図5は、本願発明の一実施形態で採用されるシステムアーキテクチャを示す。 図6は、本願発明の一実施形態に係る複数の処理要素を示す。
以下において、説明を目的とし、以下に説明される本願発明の実施形態がより良く理解されるように、様々な特定的な詳細が示される。しかし、当業者であれば、本願発明の実施形態が、それら特定的な詳細のうちいくつかがなくても実施されることを理解されよう。他の例においては、周知の構造およびデバイスが、本願発明の実施形態の基本的な原理を曖昧にすることを避けるべく、ブロック図の形態で示される。
「即値」とは、命令に関連付けられた(例えば、命令の一部として明示的に含まれている、若しくは命令と組み合わせられた)バイナリ値である。x86命令セットに関連付けられた即値で周知のものとしては、imm8の符号が与えられる8ビットの即値がある。命令の即値は、命令と共にコンパイル時に生成される。以下に説明する本願発明の実施形態ではimm8またはimm16の即値を用いるが、本願発明の基本的な原理は、特定のタイプの即値に限定されない。実際、本願発明の基本的な原理は、命令に関連付けられたあらゆるタイプのバイナリコードを用いて実装することが出来る。
本願発明の一実施形態において、(例えば、AND、NAND、XOR、反転、選択、投票など)異なる論理演算を識別するのに異なる即値が用いられる。本実施形態において、命令のソースオペランドからの特定のビットが組み合わせられ、当該命令の即値内のビット位置を識別する指標値が生成される。識別されたビット位置から読み込まれるビットはその後、宛先レジスタにおいて組み合わせられ、論理演算の結果が得られる。言い換えると、即値は、各論理演算の結果を得るべく、ルックアップテーブルとして用いられる。
図1は、1つの特定的な例を示す。本例において、ソースレジスタ1(src1)102、ソースレジスタ2(src2)101および宛先レジスタ(dest)100に格納される3つのオペランドからビットが読み込まれ、即値110内のビット位置を識別する指標105が生成される。識別されたビット位置にあるバイナリ値はその後、宛先レジスタ100へとコピーされる。説明を目的としてこの特定的なレジスタ構成を用いているが、本願発明の基本的な原理は特定の組のレジスタに限定されない。例えば、ソースオペランドの格納に「宛先」レジスタを用いるのではなく、(例えば、「ソースレジスタ3」など)専用の第3のソースレジスタを用いてもよい。
図1に示す特定的な例において、宛先レジスタ100およびソースレジスタ101、102の第1ビット位置からのビットを最初に読み込み、(実線矢印で示される)指標010を生成する。一実施形態において、指標は、3つのソース値のビット毎の連結により生成される。指標010は、即値110のビット位置2を識別する(つまり、バイナリ値010は、2に等しい)。示されるように、ビット位置2からのビットをその後、即値から読み込み(示される例においてはバイナリ値1)、宛先レジスタの第1ビット位置に格納する。全てのビットが読み込まれ、指標付きのビット値が即値から宛先レジスタへコピーされるまで、同じ処理が、各ソースオペランドのそれぞれのビットに関して実行される。例えば図1に示すように、110という指標値が宛先レジスタおよびソースレジスタの第2ビット位置からのビットを用いて生成され、この指標値を用いてビット位置6における即値の指標付けをする(つまり、バイナリ値110は6に等しい)。ビット位置6からのビットがその後、即値(バイナリ値0)から読み込まれ、宛先レジスタの第2ビット位置に格納される。
図2は、本願発明の一実施形態に係る方法を示す。201において、(例えば、dest、src1、src2などの)オペランドレジスタの指定されたビット位置から値が読み込まれる。複数の組の値を、同時に平行して複数の指標値から読み込んでよい。202において、それらの値を組み合わせて即値の指標を生成し、203において、その指標を用いて即値内のビット位置を識別する。上述したように、一実施形態において、ソースオペランドの対応するビット位置からのビットが連結され、即値の指標が生成される。204において、指標値によって識別されるビット位置における値を読み込み、205において、指標付けされたビット位置からの値を宛先レジスタへコピーする。
上記の技術を用いることにより、異なる即値を指定し、異なる論理演算を実行することが出来る。例としてであり、限定を意味するわけではないが、以下のようなタイプの演算を、以下の即値を用いて実行することが出来る。
1.全ての結果を1に設定
即値=11111111
本例において、即値から読み込んだ全てのビットが、宛先レジスタにおいてバイナリ値1となる。
2.コピーしつつ反転
即値=01010101
(例えば、現在のx86命令セット内で実行される)現在のNOT命令が、オリジナルのデータを分解し、位置的に反転される。対照的に、上記の即値を用いる上述した技術は、異なるレジスタへのコピーを行う。この命令は、dest=NOT src1となる。
3.既存の論理演算に倣う
即値=10001000
この即値によって、ソースレジスタ1およびソースレジスタ2内の値のAND演算となり、つまりdest=src1 AND src2となる。ビット0−3およびビット7−4は同じなので、宛先レジスタ内の値(dest)は結果に影響を与えない。よって、一実施形態において、宛先レジスタは読み込まれず、電力消費量が減少する。
以下の表(表A)は、既存のx86論理演算と同等のimm8値を示す。
Figure 0005607832
4.既存の2つの論理演算を組み合わせる
即値=01111000
この即値は、ソースレジスタ1およびソースレジスタ2のAND演算となり、宛先レジスタ内の値のXORされた結果が得られる。命令は、dest=(src1 AND src2)XOR destとなる。上述したように、従来の技術ではこの演算を実行するには、複数の異なる命令を実行するしかなく、多大な時間および処理リソースを要した。対照的に、上記で特定した即値を用いることにより、本明細書で説明する他の演算と同じ時間内で結果を得ることが可能となる。
5.選択
即値=10101100
この演算の目的は、宛先レジスタ内の対応するビットが設定される場合にソースレジスタ1を選択し、そうでなければソースレジスタ2を設定することにある。従来、この処理には多大な数の命令を要するdest=(src1 AND dest)OR(src2 AND(NOT dest))などの論理が必要であった。対照的に、上記で特定した即値を用いることにより、本明細書で説明する他の即値演算と同程度の効率性で、結果を得ることが出来る。
6.投票
即値=11101000
この演算を用い、3つの入力値のうち、最もポピュラーなものを選択する。例えば、宛先レジスタ内のビットが0であり、ソースレジスタ1内のビットが1であり、ソースレジスタ2内のビットが0であった場合、0が最もポピュラーな出力となる。よって、0が選択され、宛先レジスタ内に格納される。
なお、上述した演算は、単に例示を目的として示されている。本願発明の基本的な原理は、特定の組の演算に限定されない。本願発明の基本的な原理によると、異なる即値を用いて、実質的に無限の数の論理演算を実行することが出来る(ただし、8ビットの即値を用いた場合には、256の論理演算のみが可能である)。
以下の擬似コードは、64ビットのオペランドを有し、imm8の即値を用いるプロセッサパイプラインにおいて実行される場合の、本願発明の一実施形態を表す。
for (i = 0; i < 64; i++) {
index = (dest[i]<<2) | (src2[i]<<1) | (src1[i]);
dest[i] = imm8[index];
この実行例において、指標値は、宛先レジスタ(dest)、ソースレジスタ1(src1)およびソースレジスタ2(src2)の(0〜63の間の)ビット位置iにおけるビット値のそれぞれを連結することにより計算される。<<2および<<1の演算では、ビットが左へそれぞれ2および1だけシフトされ、適切に指標が生成されるようビットがアラインされる。例えば、各オペランドからのビット値が1である場合、dest[i]<<2の結果得られるのは100であり、src2[i]<<1の結果得られるのは010であり、src1[i]の結果得られるのは001である。その後、ビットごとのOR演算が(演算子|で示されるように)それら結果に対し実行される。最終的に、imm8内の特定のビットを識別する指標値が結果として得られる。なお、外側のfor()ループは、擬似コードを例示する目的で示しており、一実施形態において、64の全ての演算が、並行して、ハードウェアの別個のコピーにおいて実行される。
以下の擬似コードは、本願発明の他の実施形態を表し、32ビットの16のパックデータ要素をそれぞれ格納する512ビットのレジスタおよびimm8の即値を用いるプロセッサマイプラインにおいて実行される。
for (n = 0; n < 16; n++) {
if(mask[n] != 0) {
for (j = 0; j < 32; j++) {
i = 32*n + j;
index = (dest[i]<<2) | (src2[i]<<1) | (src1[i]);
dest[i] = imm8[index];


本実施形態において、32ビットの16のパックデータ要素のそれぞれと関連付けられたビットを格納するマスクレジスタを用いる。マスク[n]!=0テストは、データ要素に関連付けられたマスクビットが0に等しい場合、当該データ要素の宛先レジスタ(dest)内に格納される現在の値が変更されないままとなることを示す。しかし、マスクビットが0以外である場合、次のFORループが実行され、当該データ要素の指標値が(上述したように)計算されることとなる。ここでも、for()ループが示されているが、一実施形態においては、512の演算の全てが並行して実行される。
上述した本願発明の実施形態は、3つのソースオペランドを用いて実施されるが、本願発明の基本的な原理は、いかなる数のオペランドを用いても実施することが可能である。例えば、以下の擬似コードは、(3つのソースおよび1つの宛先である)4つのオペランドを用いて、16ビットの即値(imm16)の指標値を生成するかを示す。
for (n = 0; n < 16; n++) {
for (j = 0; j < 32; j++) {
i = 32*n + j;
index = (dest[i]<<3) | (src3[i]<<2)
| (src2[i]<<1) | (src1[i]);
dest[i] = imm16[index];

上記のコードが示すように、本実施形態においてマスクレジスタには、第4オペランドが格納されている。(左へ3だけシフトされた)マスクレジスタ、(左へ2だけシフトされた)宛先レジスタ、(左へ1だけシフトされた)ソースレジスタ2、およびソースレジスタ1からの対応するビットに対し、ビット毎のOR演算を実行することにより、指標値が生成される。得られる4ビットの値をその後、16ビットの即値imm16のルックアップとして用いる。
プロセッサアーキテクチャの例
図3は、例示的な処理コア300を示し、本願発明の実施形態は、処理コア300上で実施することが出来る。汎用処理コア300は、Complex Instruction Set(CISC)、Reduced Instruction Set(RISC)およびVery Long Instruction Word (VLIW)などの異なる多くのタイプの処理コアアーキテクチャを表し得る。図3の汎用処理コア300は、1)(例えばキャッシュおよび/またはメモリから)命令をフェッチするフェッチユニット303、2)命令を復号化する復号ユニット304、3)実行ユニット306への命令の発行のタイミングおよび/または順序を決定する(任意選択的に含まれる)スケジューリングユニット305、4)命令を実行する実行ユニット306(典型的な命令実行ユニットは、分岐実行ユニット、(例えばALUなどの)整数演算実行ユニット、(例えばFPUなどの)浮動小数点演算実行ユニット、メモリアクセス実行ユニットを含む)、および5)命令の実行成功を示すリタイヤユニット307を含む。なお、処理コア300は、マイクロコード308を用いても、用いなくてもよい。マスクレジスタ302は、上述した本願発明の実施形態に従い用いてもよい。
コンピュータシステムの例
以下に示すのは、本明細書で説明する命令を実行するのに適したシステムの例である。ラップトップ、デスクトップ、ハンドヘルドPC、携帯情報端末、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、組み込みプロセッサ、デジタル信号プロセッサ(DSP)、グラフィックデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレーヤ、ハンドヘルドデバイス、およびその他様々な電子デバイスなどの、当技術分野で公知の他のシステム設計および構成も適している。一般的に、本明細書で開示するプロセッサおよび/または他の実行論理を組み込むことの出来る、多様なシステムまたは電子デバイスが適している。
図4は、本願発明の実施形態に係る、システム400のブロック図を示す。システム400は、グラフィックメモリコントローラハブ(GMCH)420へ結合された1以上の処理要素410、415を含んでよい。追加的な処理要素415は任意選択的に用いられ、よって、それらは図4において破線で示されている。
処理要素のそれぞれは、単一のコアであるか、または代替的に複数のコアを含んでよい。処理要素は、任意選択的に、集積メモリコントローラおよび/または集積I/O制御論理など他のオンダイの要素を処理コアに加えて含んでよい。また、少なくとも一実施形態において、処理要素のコアは、マルチスレッドであり、1つのコアあたり1以上のハードウェアスレッドコンテクストを含んでよい。
図4は、GMCH420が、ダイナミックランダムアクセスメモリ(DRAM)などであってよいメモリ430に結合されてよいことを示す。DRAMは、少なくとも一実施形態において、不揮発性キャッシュに関連付けられる。
GMCH420は、チップセットか、またはチップセットの一部であってよい。GMCH420は、プロセッサ410、415と通信を行い、プロセッサ410、415とメモリ430との間の相互作用を制御する。GMCH420は、プロセッサ410、415と、システム400の他の要素とのアクセラレーテッドバスインタフェースとして機能してもよい。少なくとも一実施形態において、GMCH420は、フロントサイドバス(FSB)495などのマルチドロップバスを介し、プロセッサ410、415と通信を行う。
さらに、GMCH420は、(フラットパネルディスプレイなどの)ディスプレイ440に結合される。GMCH420は、集積グラフィックアクセラレータを含んでよい。GMCH420はさらに、様々な周辺機器をシステム400へ結合するのに用いられる入力/出力(I/O)コントローラハブ(ICH)450へと結合される。図4の実施形態において例として示されるのは、ICH450に結合された独立したグラフィックデバイスであってよい外部グラフィックデバイス460および他の周辺機器470である。
代替的に、追加的なまたは異なる処理要素をシステム400に設けてもよい。例えば、追加的な処理要素415は、プロセッサ410と同様の追加的なプロセッサ、プロセッサ410とは異種または非対称の追加的なプロセッサ、(グラフィックアクセラレータまたはデジタル信号処理(DSP)ユニットなどの)アクセラレータ、フィールドプログラム可能ゲートアレイ、または任意の他の処理要素を含んでよい。物理的リソース410、415の間には、アーキテクチャ、マイクロアーキテクチャ、熱、電力消費などの関する特徴を含む利点に関する一連の判断基準面で、多種多様な違いがあり得る。処理要素410、415の間のこれらの差は、非対称性および異種性として効果的に表れる。少なくとも一実施形態において、様々な処理要素410、415が、同じダイパッケージ内に存在してよい。
図5は、本願発明の実施形態に係る第2システム500のブロック図を示す。図5に示すように、マルチプロセッサシステム500は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続550で互いに結合された第1処理要素570および第2処理要素580を含む。図5に示すように処理要素570、580のそれぞれは、第1および第2プロセッサコア(つまり、プロセッサコア574a、574b、およびプロセッサコア584a、584b)を含んだマルチコアプロセッサであってよい。
代替的に、1以上の処理要素570、580は、アクセラレータまたはフィールドプログラム可能ゲートアレイなどの、プロセッサ以外の要素であってよい。
2つの処理要素570、580のみ示されているが、本願発明の態様は、それらを含む態様のみに限定されない。他の実施形態において、任意のプロセッサ内には、追加的な1以上の処理要素が存在してよい。
第1処理要素570はさらに、メモリコントローラハブ(MCH)572、およびポイントツーポイント(P−P)インタフェース576、578を含んでよい。同様に、第2処理要素580は、MCH582およびP−Pインタフェース586、588を含んでよい。プロセッサ570、580は、PtPインタフェース回路578、588を用いて、ポイントツーポイント(PtP)インタフェース550を介してデータの交換を行ってよい。図5に示すように、MCH572、582は、プロセッサを各メモリと結合する。それらメモリは、それぞれのプロセッサにローカルに取り付けられた主メモリの部分であってよい、メモリ542およびメモリ544である。
それぞれのプロセッサ570、580は、ポイントツーポイントインタフェース回路576、594、586、598を用いて個々のPtPインタフェース552、554を介してチップセット590とデータの交換を行ってよい。チップセット590もまた、高性能グラフィックインタフェース539を介して高性能グラフィック回路538とデータの交換を行ってよい。本願発明の実施形態は、任意の数の処理コアを有するプロセッサ内に存在してもよく、または図5の各PtPバスエージェント内に存在してもよい。一実施形態において、プロセッサコアは、ローカルキャッシュメモリ(図示せず)を含むか、またはローカルキャッシュメモリと関連付けられてよい。さらに、共有キャッシュ(図示せず)が、両方のプロセッサの外側でいずれかのプロセッサに含まれていてよく、しかしながら、当該プロセッサへp2p相互接続を介して接続される。この場合、いずれか、若しくは両方のプロセッサのローカルキャッシュ情報は、プロセッサが低消費電力モードになるとき、共有キャッシュに格納される。
第1処理要素570および第2処理要素580は、それぞれ、P−P相互接続576、586、584を介し、チップセット590へ結合される。図5に示すように、チップセット590はP−Pインタフェース594、598を含む。さらにチップセット590は、チップセット590を高性能グラフィックエンジン548と結合するインタフェース592を含む。一実施形態において、バス549を用いて、グラフィックエンジン548をチップセット590へと結合する。代替的に、ポイントツーポイント相互接続549がこれらのコンポーネントを結合する。
そしてチップセット590は、インタフェース596を介し、第1バス516に結合されてよい。一実施形態において、第1バス516は、ペリフェラルコンポーネントインターコネクト(PCI)バスであり、若しくは、PCIエクスプレスバスなどのバスまたは他の第3世代I/O相互接続バスである。しかし、本願発明の態様は、この態様に限定されない。
図5に示すように、第1バス516を第2バス520へ結合するバスブリッジ518とともに、様々なI/Oデバイス514が第1バス516に結合される。一実施形態において、第2バス520は、low pin count(LPC)バスである。一実施形態において、例えばキーボード/マウス522、通信デバイス527、並びに、コード530を含んでよいディスクドライブまたはその他の大容量記憶デバイスなどのデータ記憶ユニット528を含む、様々なデバイスが第2バス520に結合されてよい。さらに、オーディオI/O524が、第2バス520に結合されてよい。なお、他のアーキテクチャを採用することも可能である。例えば、図5のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバス、または同様の他のアーキテクチャを実装してよい。
図6は、本願発明の実施形態に係る第3システム600のブロック図を示す。図5および6の同様な要素には同様の符号が付されている。図6の特定の態様を曖昧にすることを避けるべく、図5のそれら以外の態様は図6において省略されている。
図6は、処理要素570、580が、それぞれ、集積メモリおよびI/O制御論理(「CL」)572、582を含んでよいことを示す。少なくとも一実施形態において、CL572、582は、図4および5に関連して上述したようなメモリコントローラハブ論理(MCH)を含んでよい。さらに、CL572、582は、I/O制御論理も含んでよい。図6は、メモリ542、544がCL572、582に結合されるだけでなく、I/Oデバイス614も制御論理572、582へ結合されることを示す。レガシーI/Oデバイス615は、チップセット590へ結合される。
本明細書で開示する機構の実施形態は、ハードウェア、ソフトウェア、ファームウェア、またはそれら実施アプローチの組み合わせを用いて実施してよい。本願発明の実施形態は、少なくとも1つのプロセッサ、(揮発性および不揮発性のメモリおよび/または記憶要素を含む)データ記憶システム、少なくとも1つの入力デバイスおよび少なくとも1つの出力デバイスを含む、プログラム可能システム上で実行されるコンピュータプログラムまたはプログラムコードとして実施してよい。
図5に示すコード530のようなプログラムコードを入力データとして用い、本明細書で説明する機能を実行し、出力情報を生成してもよい。出力情報は、公知の方式で、1以上の出力デバイスへ提供される。この提供を行うべく、プロセシングシステムは、デジタル信号プロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)、またはマイクロプロセッサなどのプロセッサを有する任意のシステムを含む。
プログラムコードは、高レベルの手続き型プログラミング言語またはオブジェクト指向プログラム言語を用いて実施され、プロセシングシステムとの通信を行ってもよい。プログラムコードは、所望される場合、アセンブリ言語または機械言語を用いて実施してもよい。実際、本明細書で説明される機構の範囲は、特定のプログラム言語に限定されない。いずれの場合であっても、言語は、コンパイラ型言語かまたはインタープリタ型言語であってよい。
1以上の実施形態の1以上の態様は、プロセッサ内の様々な論理を表す機械可読媒体に格納されるデータによって実装されてもよい。それら表現するデータは機械によって読み込まれると、当該機械に対し、本明細書で説明される技術を実行するよう論理を作成させる。「IPコア」としても知られるそのような表現は、有形の機械可読媒体に格納され、様々な消費者へ、若しくは当該論理またはプロセッサを実際に作成する製造機械へとそれら表現をロードする製造設備へと供給される。
そのような機械可読記憶媒体には、機械または装置により製造または形成される、粒子の非一時的かつ有形の構造が含まれ、またこれらに限定されない。その例としては、ハードディスク、他のタイプのディスク、半導体デバイス、磁気または光学カードおよび電子命令を格納するのに適した他のタイプの媒体などの記憶媒体が挙げられる。他のタイプのディスクの例としては、フロッピー(登録商標)ディスク、光学ディスク、CD−ROM、CD−RW、磁気光学ディスクなどが挙げられる。半導体デバイスの例としては、読み取り専用メモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)およびスタティックランダムアクセスメモリ(SRAM)などのランダムアクセスメモリ(RAM)、消去可能プログラム可能読み取り専用メモリ(EPROM)、フラッシュメモリ、電子的消去可能プログラム可能読み取り専用メモリ(EEPROM)などが挙げられる。
したがって、本願発明の実施形態は、本願発明の実施形態の演算の実行を指示する命令を含む、または本明細書で説明した構造、回路、装置、プロセッサ、および/またはシステムの特徴を定義づけるHDLなどの設計データを含む非一時的かつ有形の機械可読媒体も含む。それら実施形態は、プログラム製品とも呼ばれる。
本明細書で説明する命令の演算のいくつかは、ハードウェアコンポーネントによっても実行することができ、また、それら命令がプログラムされた回路または他のハードウェアコンポーネントにそれら演算を実行させる、または当該回路または他のハードウェアコンポーネントがそれら演算を実行することとなるよう用いられる機械可読命令によって実施してもよい。回路には、わずかながら例を挙げると、汎用または特定用途向けプロセッサまたは論理回路が含まれる。演算は、任意選択的に、ハードウェアとソフトウェアとの組み合わせによって実行することも出来る。実行論理および/またはプロセッサには、機械命令、または機械命令から導き出される1以上の制御信号に応じて、命令により指定された結果としてのオペランドを格納する、特定の回路およびその他の論理が含まれる。例えば、本明細書で開示する命令の実施形態は、図4、5および6に示す1以上のシステムで実行されてもよく、また、命令の実施形態は、それらのシステムで実行されるプログラムコードに格納されてもよい。さらに、これらの図に示す処理要素は、本明細書で詳述するパイプラインおよび/または(例えばインオーダーおよびアウトオブオーダーのアーキテクチャなどの)アーキテクチャの1つを用いてもよい。例えば、インオーダーアーキテクチャの復号ユニットは、命令を復号化し、復号化された命令をベクトルユニットまたはスカラーユニットへ送信してよい。
上記において、説明を目的とし、本願発明がより良く理解されるように、様々な特定的な詳細を示した。しかし、当業者であれば、本願発明が、それら特定的な詳細のうちいくつかがなくても実施されることを理解されよう。したがって、本願発明の態様および思想は、以下の項目により判断されるべきである。ここで、本願発明の実施形態の一例を項目として示す。
[項目1]
コンピュータプロセッサ上で論理演算を実行する方法であり、
2以上のソースオペランドのそれぞれからデータを読み込む段階と、
ソースオペランドから読み込んだデータを組み合わせ、命令と関連付けられた即値内のビットのサブセットを特定する指標値を生成する段階と、
即値から、指標値により識別されるビットのサブセットを読み込む段階と、
即値から読み込まれたビットを宛先レジスタ内に格納し、命令の結果を生成する段階と
を備える、方法。
[項目2]
ソースオペランドから読み込んだデータを組み合わせ、命令と関連付けられた即値内のビットのサブセットを特定する指標値を生成する段階は、各ソースオペランドの対応するビット位置から読み込んだビットを連結し、指標値を生成する段階を有し、
指標値は、即値内のビット位置を識別する対応するビット位置からの連結されたビットの各セットからなる、項目1に記載の方法。
[項目3]
即値の識別されたビット位置からビットを読み込む段階と、
各ソースオペランドから読み込んだビットのビット位置に対応する宛先レジスタ内のビット位置に結果を格納する段階と
をさらに備える、項目2に記載の方法。
[項目4]
ソースオペランドはNビットのソースレジスタに格納されており、
宛先レジスタはNビットの宛先レジスタであり、
ビットを連結し、指標値を生成する段階は、
ソースオペランドから並行してN個のビットの全てを読み込み、即値のN個の指標を形成する段階と、
N個の指標を用い、即値内のN個のビット位置を識別する段階と、
即値から宛先レジスタへN個のインデックス付きのビットの全てを並行してコピーし、論理演算の結果を生成する段階と
をさらに有する、項目1から3のいずれか1項に記載の方法。
[項目5]
Nは64に等しい、項目4に記載の方法。
[項目6]
ソースオペランドは3つあり、
即値は8ビットであり、
3つのソースオペランドのうちそれぞれの対応するビット位置から読み込んだビットを連結し、指標値を生成する段階をさらに備え、
指標値は、8ビットの即値内のビット位置を識別する対応するビット位置からの3つの連結されたビットの各セットからなる、項目1から5のいずれか1項に記載の方法。
[項目7]
即値は、命令と共に送信された8ビットの値である、項目1から6のいずれか1項に記載の方法。
[項目8]
8ビットの値はimm8値である、項目7に記載の方法。
[項目9]
即値は、命令と共に送信された16ビットの値である、項目1から8のいずれか1項に記載の方法。
[項目10]
命令を処理する装置であり、
命令をデコードし、命令によって実行される論理演算を識別するデコーダユニットと、
動作を実行することにより、論理演算を実行する実行ユニットと
を備え、
動作は、
2以上のソースオペランドのそれぞれからデータを読み込むことと、
ソースオペランドから読み込んだデータを組み合わせ、命令と関連付けられた即値内のビットのサブセットを特定する指標値を生成することと、
指標値により識別される即値からビットのサブセットを読み込むことと、
即値から読み込まれたビットを宛先レジスタ内に格納し、命令の結果を生成することと
を含む、装置。
[項目11]
ソースオペランドから読み込んだデータを組み合わせ、命令と関連付けられた即値内のビットのサブセットを特定する指標値を生成することは、各ソースオペランドの対応するビット位置から読み込んだビットを連結し、指標値を生成することを含み、
指標値は、即値内のビット位置を識別する対応するビット位置からの連結されたビットの各セットからなる、項目10に記載の装置。
[項目12]
実行ユニットが実行する動作は、
即値の識別されたビット位置からビットを読み込むことと、
各ソースオペランドから読み込んだビットのビット位置に対応する宛先レジスタ内のビット位置に結果を格納することと
をさらに含む、項目11に記載の装置。
[項目13]
ソースオペランドはNビットのソースレジスタに格納されており、
宛先レジスタはNビットの宛先レジスタであり、
ビットを連結し、指標値を生成することは、
ソースオペランドから並行してN個のビットの全てを読み込み、即値のN個の指標を形成することと、
N個の指標を用い、即値内のN個のビット位置を識別することと、
即値から宛先レジスタへN個のインデックス付きのビットの全てを並行してコピーし、論理演算の結果を生成することと
をさらに含む、項目10から12のいずれか1項に記載の装置。
[項目14]
Nは64に等しい、項目13に記載の装置。
[項目15]
ソースオペランドは3つあり、
即値は8ビットであり、
実行ユニットが実行する動作は、3つのソースオペランドのうちそれぞれの対応するビット位置から読み込んだビットを連結し、指標値を生成することをさらに含み、
指標値は、8ビットの即値内のビット位置を識別する対応するビット位置からの3つの連結されたビットの各セットからなる、項目10から14のいずれか1項に記載の装置。
[項目16]
即値は、命令と共に送信された8ビットの値である、項目10から15のいずれか1項に記載の装置。
[項目17]
8ビットの値はimm8値である、項目16に記載の装置。
[項目18]
即値は、命令と共に送信された16ビットの値である、項目10から17のいずれか1項に記載の装置。
[項目19]
コンピュータシステムであり、
ディスプレイと、
命令を格納するメモリと、
命令を処理するプロセッサと
を備え、
プロセッサは、
命令をデコードし、命令によって実行される論理演算を識別するデコーダユニットと、
動作を実行することにより、論理演算を実行する実行ユニットと
を有し、
動作は、
2以上のソースオペランドのそれぞれからデータを読み込むことと、
ソースオペランドから読み込んだデータを組み合わせ、命令と関連付けられた即値内のビットのサブセットを特定する指標値を生成することと、
指標値により識別される即値からビットのサブセットを読み込むことと、
即値から読み込まれたビットを宛先レジスタ内に格納し、命令の結果を生成することと、を含むコンピュータシステム。
[項目20]
ソースオペランドから読み込んだデータを組み合わせ、命令と関連付けられた即値内のビットのサブセットを特定する指標値を生成することは、各ソースオペランドの対応するビット位置から読み込んだビットを連結し、指標値を生成することを含み、
指標値は、即値内のビット位置を識別する対応するビット位置からの連結されたビットの各セットからなる、項目19に記載のコンピュータシステム。
[項目21]
実行ユニットが実行する動作は、
即値の識別されたビット位置からビットを読み込むことと、
各ソースオペランドから読み込んだビットのビット位置に対応する宛先レジスタ内のビット位置に結果を格納することと
をさらに含む、項目20に記載のコンピュータシステム。
[項目22]
ソースオペランドはNビットのソースレジスタに格納されており、
宛先レジスタはNビットの宛先レジスタであり、
ビットを連結し、指標値を生成することは、
ソースオペランドから並行してN個のビットの全てを読み込み、即値のN個の指標を形成することと、
N個の指標を用い、即値内のN個のビット位置を識別することと、
即値から宛先レジスタへN個のインデックス付きのビットの全てを並行してコピーし、論理演算の結果を生成することと
をさらに含む、項目19から21のいずれか1項に記載のコンピュータシステム。
[項目23]
Nは64に等しい、項目22に記載のコンピュータシステム。
[項目24]
ソースオペランドは3つあり、
即値は8ビットであり、
実行ユニットが実行する動作は、3つのソースオペランドのうちそれぞれの対応するビット位置から読み込んだビットを連結し、指標値を生成することをさらに含み、
指標値は、8ビットの即値内のビット位置を識別する対応するビット位置からの3つの連結されたビットの各セットからなる、項目19から23のいずれか1項に記載のコンピュータシステム。
[項目25]
即値は、命令と共に送信された8ビットの値である、項目19から24のいずれか1項に記載のコンピュータシステム。
[項目26]
8ビットの値はimm8値である、項目25に記載のコンピュータシステム。
[項目27]
即値は、命令と共に送信された16ビットの値である、項目19から26のいずれか1項に記載のコンピュータシステム。

Claims (27)

  1. コンピュータプロセッサ上で論理演算を実行する方法であり、
    2以上のソースオペランドのそれぞれからデータを読み込む段階と、
    前記ソースオペランドから読み込んだ前記データを組み合わせ、命令と関連付けられた即値内のビットのサブセットを特定する指標値を生成する段階と、
    前記即値から、前記指標値により識別される前記ビットのサブセットを読み込む段階と、
    前記即値から読み込まれた前記ビットを宛先レジスタ内に格納し、前記命令の結果を生成する段階と
    を備える、方法。
  2. 前記ソースオペランドから読み込んだ前記データを組み合わせ、命令と関連付けられた即値内のビットのサブセットを特定する指標値を生成する段階は、各ソースオペランドの対応するビット位置から読み込んだビットを連結し、前記指標値を生成する段階を有し、
    前記指標値は、前記即値内のビット位置を識別するためのものである、請求項1に記載の方法。
  3. 前記指標値により識別された前記即値内の前記ビット位置からットを読み込む段階と、
    前記即値内から読み込まれたビットを宛先レジスタ内の所定のビット位置に格納する段階とをさらに備え
    前記所定のビット位置は、前記指標値を生成するために連結されたビットが存在した、各ソースオペランド内でのビット位置に対応するものである、
    請求項2に記載の方法。
  4. 前記ソースオペランドはNビットのソースレジスタに格納されており、
    前記宛先レジスタはNビットの宛先レジスタであり、
    前記ビットを連結し、前記指標値を生成する段階は、
    それぞれの前記ソースオペランドからN個のビットの全てを読み込み、前記即値内のビット位置を識別する指標値をN個生成する段階を有し、
    さらに、前記方法は、
    前記N個の指標を用い、前記即値内のN個のビット位置を識別して、識別したN個のビット位置からN個のビットを読み込む段階と、
    前記即値から読み込んだN個のビットの全てを宛先レジスタに格納することにより、前記論理演算の前記結果を生成する段階と
    をさらに有する、請求項2又は3に記載の方法。
  5. Nは64に等しい、請求項4に記載の方法。
  6. 前記ソースオペランドは3つあり、
    前記即値は8ビットであり、
    前記3つのソースオペランドのうちそれぞれの対応するビット位置から読み込んだビットを連結し、前記指標値を生成する段階をさらに備え、
    前記指標値は、8ビットの前記即値内のビット位置を識別するためのものである、請求項1から5のいずれか1項に記載の方法。
  7. 前記即値は、前記命令と共に送信された8ビットの値である、請求項1から6のいずれか1項に記載の方法。
  8. 前記8ビットの値はimm8値である、請求項7に記載の方法。
  9. 前記即値は、前記命令と共に送信された16ビットの値である、請求項1からのいずれか1項に記載の方法。
  10. 命令を処理する装置であり、
    命令をデコードし、前記命令によって実行される論理演算を識別するデコーダユニットと、
    動作を実行することにより、前記論理演算を実行する実行ユニットと
    を備え、
    前記動作は、
    2以上のソースオペランドのそれぞれからデータを読み込むことと、
    前記ソースオペランドから読み込んだ前記データを組み合わせ、命令と関連付けられた即値内のビットのサブセットを特定する指標値を生成することと、
    前記即値から、前記指標値により識別される記ビットのサブセットを読み込むことと、
    前記即値から読み込まれた前記ビットを宛先レジスタ内に格納し、前記命令の結果を生成することと
    を含む、装置。
  11. 前記ソースオペランドから読み込んだ前記データを組み合わせ、命令と関連付けられた即値内のビットのサブセットを特定する指標値を生成することは、各ソースオペランドの対応するビット位置から読み込んだビットを連結し、前記指標値を生成することを含み、
    前記指標値は、前記即値内のビット位置を識別するためのものである、請求項10に記載の装置。
  12. 前記実行ユニットが実行する前記動作は、
    前記指標値により識別された前記即値内の前記ビット位置から前記ビットを読み込むことと、
    前記即値内から読み込まれたビットを前記宛先レジスタ内の所定のビット位置に格納することとをさらに含み、
    前記所定のビット位置は、前記指標値を生成するために連結されたビットが存在した、各ソースオペランド内でのビット位置に対応するものである、
    請求項11に記載の装置。
  13. 前記ソースオペランドはNビットのソースレジスタに格納されており、
    前記宛先レジスタはNビットの宛先レジスタであり、
    前記ビットを連結し、前記指標値を生成することは、
    それぞれの前記ソースオペランドからN個のビットの全てを読み込み、前記即値内のビット位置を識別する指標値をN個生成することを含み、
    さらに、前記実行ユニットが実行する前記動作は、
    前記N個の指標を用い、前記即値内のN個のビット位置を識別して、識別したN個のビット位置からN個のビットを読み込むことと、
    前記即値から読み込んだN個のビットの全てを宛先レジスタに格納することにより、前記論理演算の前記結果を生成することと
    をさらに含む、請求項11又は12に記載の装置。
  14. Nは64に等しい、請求項13に記載の装置。
  15. 前記ソースオペランドは3つあり、
    前記即値は8ビットであり、
    前記実行ユニットが実行する前記動作は、前記3つのソースオペランドのうちそれぞれの対応するビット位置から読み込んだビットを連結し、前記指標値を生成することをさらに含み、
    前記指標値は、8ビットの前記即値内のビット位置を識別するためのものである、請求項10から14のいずれか1項に記載の装置。
  16. 前記即値は、前記命令と共に送信された8ビットの値である、請求項10から15のいずれか1項に記載の装置。
  17. 前記8ビットの値はimm8値である、請求項16に記載の装置。
  18. 前記即値は、前記命令と共に送信された16ビットの値である、請求項10から1のいずれか1項に記載の装置。
  19. コンピュータシステムであり、
    ディスプレイと、
    命令を格納するメモリと、
    前記命令を処理するプロセッサと
    を備え、
    前記プロセッサは、
    命令をデコードし、前記命令によって実行される論理演算を識別するデコーダユニットと、
    動作を実行することにより、前記論理演算を実行する実行ユニットと
    を有し、
    前記動作は、
    2以上のソースオペランドのそれぞれからデータを読み込むことと、
    前記ソースオペランドから読み込んだ前記データを組み合わせ、命令と関連付けられた即値内のビットのサブセットを特定する指標値を生成することと、
    前記即値から、前記指標値により識別される記ビットのサブセットを読み込むことと、
    前記即値から読み込まれた前記ビットを宛先レジスタ内に格納し、前記命令の結果を生成することと、を含むコンピュータシステム。
  20. 前記ソースオペランドから読み込んだ前記データを組み合わせ、命令と関連付けられた即値内のビットのサブセットを特定する指標値を生成することは、各ソースオペランドの対応するビット位置から読み込んだビットを連結し、前記指標値を生成することを含み、
    前記指標値は、前記即値内のビット位置を識別するためのものである、請求項19に記載のコンピュータシステム。
  21. 前記実行ユニットが実行する前記動作は、
    前記指標値により識別された前記即値内の前記ビット位置から前記ビットを読み込むことと、
    前記即値内から読み込まれたビットを前記宛先レジスタ内の所定のビット位置に格納することとをさらに含み、
    前記所定のビット位置は、前記指標値を生成するために連結されたビットが存在した、各ソースオペランド内でのビット位置に対応するものである、
    請求項20に記載のコンピュータシステム。
  22. 前記ソースオペランドはNビットのソースレジスタに格納されており、
    前記宛先レジスタはNビットの宛先レジスタであり、
    前記ビットを連結し、前記指標値を生成することは、
    それぞれの前記ソースオペランドからN個のビットの全てを読み込み、前記即値内のビット位置を識別する指標値をN個生成することを含み
    さらに、前記実行ユニットが実行する前記動作は、
    前記N個の指標を用い、前記即値内のN個のビット位置を識別して、識別したN個のビット位置からN個のビットを読み込むことと、
    前記即値から読み込んだN個のビットの全てを宛先レジスタに格納することにより、前記論理演算の前記結果を生成することと
    をさらに含む、請求項20又は21に記載のコンピュータシステム。
  23. Nは64に等しい、請求項22に記載のコンピュータシステム。
  24. 前記ソースオペランドは3つあり、
    前記即値は8ビットであり、
    前記実行ユニットが実行する前記動作は、前記3つのソースオペランドのうちそれぞれの対応するビット位置から読み込んだビットを連結し、前記指標値を生成することをさらに含み、
    前記指標値は、8ビットの前記即値内のビット位置を識別するためのものである、請求項19から23のいずれか1項に記載のコンピュータシステム。
  25. 前記即値は、前記命令と共に送信された8ビットの値である、請求項19から24のいずれか1項に記載のコンピュータシステム。
  26. 前記8ビットの値はimm8値である、請求項25に記載のコンピュータシステム。
  27. 前記即値は、前記命令と共に送信された16ビットの値である、請求項19から2のいずれか1項に記載のコンピュータシステム。
JP2013530347A 2010-09-24 2011-09-23 汎用論理演算の方法および装置 Active JP5607832B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/890,571 2010-09-24
US12/890,571 US8539206B2 (en) 2010-09-24 2010-09-24 Method and apparatus for universal logical operations utilizing value indexing
PCT/US2011/052913 WO2012040552A2 (en) 2010-09-24 2011-09-23 Method and apparatus for universal logical operations

Publications (3)

Publication Number Publication Date
JP2013543175A JP2013543175A (ja) 2013-11-28
JP2013543175A5 JP2013543175A5 (ja) 2014-07-31
JP5607832B2 true JP5607832B2 (ja) 2014-10-15

Family

ID=45871870

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013530347A Active JP5607832B2 (ja) 2010-09-24 2011-09-23 汎用論理演算の方法および装置

Country Status (9)

Country Link
US (1) US8539206B2 (ja)
JP (1) JP5607832B2 (ja)
KR (1) KR101524450B1 (ja)
CN (1) CN103109261B (ja)
BR (1) BR112013006661A2 (ja)
DE (1) DE112011103197T5 (ja)
GB (1) GB2499532B (ja)
TW (2) TWI435266B (ja)
WO (1) WO2012040552A2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120124341A1 (en) * 2010-11-17 2012-05-17 Goodrich Allen B Methods and Apparatus for Performing Multiple Operand Logical Operations in a Single Instruction
US20140095845A1 (en) * 2012-09-28 2014-04-03 Vinodh Gopal Apparatus and method for efficiently executing boolean functions
US9128698B2 (en) * 2012-09-28 2015-09-08 Intel Corporation Systems, apparatuses, and methods for performing rotate and XOR in response to a single instruction
US9471310B2 (en) * 2012-11-26 2016-10-18 Nvidia Corporation Method, computer program product, and system for a multi-input bitwise logical operation
GB2523823B (en) * 2014-03-07 2021-06-16 Advanced Risc Mach Ltd Data processing apparatus and method for processing vector operands
US20160179521A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Method and apparatus for expanding a mask to a vector of mask values
US20160283242A1 (en) * 2014-12-23 2016-09-29 Intel Corporation Apparatus and method for vector horizontal logical instruction
US10296334B2 (en) * 2014-12-27 2019-05-21 Intel Corporation Method and apparatus for performing a vector bit gather
US10296489B2 (en) * 2014-12-27 2019-05-21 Intel Corporation Method and apparatus for performing a vector bit shuffle
EP3782088B1 (en) * 2018-04-20 2024-06-05 Google LLC Performing unitary iteration and indexed operations

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4237532A (en) * 1977-09-02 1980-12-02 Sperry Corporation Table driven decision and control logic for digital computers
EP0349124B1 (en) * 1988-06-27 1996-10-09 Digital Equipment Corporation Operand specifier processing
US5493687A (en) * 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
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
JPH1185507A (ja) * 1997-09-05 1999-03-30 Mitsubishi Electric Corp 中央処理装置およびマイクロコンピュータシステム
TW498275B (en) * 1999-05-24 2002-08-11 Toshiba Corp Processor unit
US6892373B2 (en) * 2001-06-15 2005-05-10 Science & Technology Corporation At Unm Integrated circuit cell library
US6721866B2 (en) 2001-12-21 2004-04-13 Intel Corporation Unaligned memory operands
US7014122B2 (en) * 2003-12-24 2006-03-21 International Business Machines Corporation Method and apparatus for performing bit-aligned permute
US7464255B1 (en) 2005-07-28 2008-12-09 Advanced Micro Devices, Inc. Using a shuffle unit to implement shift operations in a processor
US8732686B2 (en) * 2006-06-30 2014-05-20 Intel Corporation Generating optimal instruction sequences for bitwise logical expressions
US20080021942A1 (en) * 2006-07-20 2008-01-24 On Demand Microelectronics Arrangements for evaluating boolean functions
US20080100628A1 (en) * 2006-10-31 2008-05-01 International Business Machines Corporation Single Precision Vector Permute Immediate with "Word" Vector Write Mask
CN101178644B (zh) * 2006-11-10 2012-01-25 上海海尔集成电路有限公司 一种基于复杂指令集计算机结构的微处理器架构
US7941641B1 (en) 2007-10-01 2011-05-10 Yong-Kyu Jung Retargetable instruction decoder for a computer processor

Also Published As

Publication number Publication date
GB2499532A (en) 2013-08-21
CN103109261B (zh) 2016-03-09
KR101524450B1 (ko) 2015-06-02
TW201432564A (zh) 2014-08-16
DE112011103197T5 (de) 2013-07-04
WO2012040552A2 (en) 2012-03-29
TWI512618B (zh) 2015-12-11
BR112013006661A2 (pt) 2016-06-07
JP2013543175A (ja) 2013-11-28
US8539206B2 (en) 2013-09-17
WO2012040552A3 (en) 2012-05-18
GB201306690D0 (en) 2013-05-29
GB2499532B (en) 2020-04-01
KR20130064797A (ko) 2013-06-18
US20120079244A1 (en) 2012-03-29
CN103109261A (zh) 2013-05-15
TW201232392A (en) 2012-08-01
TWI435266B (zh) 2014-04-21

Similar Documents

Publication Publication Date Title
JP5607832B2 (ja) 汎用論理演算の方法および装置
JP6351682B2 (ja) 装置および方法
US9766897B2 (en) Method and apparatus for integral image computation instructions
CN109716290B (zh) 用于经融合的乘加的系统、装置和方法
CN107918546B (zh) 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统
US20120166511A1 (en) System, apparatus, and method for improved efficiency of execution in signal processing algorithms
TWI502490B (zh) 用以處理加法指令之方法、及用以執行加法指令之裝置與系統
JP2018506094A (ja) 多倍長整数(big integer)の算術演算を実行するための方法および装置
KR101927858B1 (ko) Rsa 알고리즘 가속 프로세서들, 방법들, 시스템들 및 명령어들
TW201721409A (zh) 向量運算指令
JP2018500659A (ja) 高速ベクトルによる動的なメモリ競合検出
US9904548B2 (en) Instruction and logic to perform a centrifuge operation
JP2014182796A (ja) 書き込みマスク・レジスタの末尾の最下位マスキング・ビットを判定するためのシステム、装置、および方法
JP6773378B2 (ja) 3d座標から3dのz曲線インデックスを計算するための機械レベル命令
CN109643235B (zh) 用于多源混合操作的装置、方法和系统
JP5798650B2 (ja) 短整数の乗算の数を減らすためのシステム、装置、および方法
CN111814093A (zh) 一种乘累加指令的处理方法和处理装置
KR20170097012A (ko) 역 원심 연산을 수행하는 명령어 및 로직
JP5753603B2 (ja) データ要素内のビットをゼロ化するためのシステム、装置、および方法
CN116339826A (zh) 用于四字特定部分的向量紧缩串接和移位的装置和方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140313

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140401

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20140610

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

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140730

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140804

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140828

R150 Certificate of patent or registration of utility model

Ref document number: 5607832

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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