JP2010521729A - 自明な算術演算を利用するプロセッサ - Google Patents

自明な算術演算を利用するプロセッサ Download PDF

Info

Publication number
JP2010521729A
JP2010521729A JP2009553164A JP2009553164A JP2010521729A JP 2010521729 A JP2010521729 A JP 2010521729A JP 2009553164 A JP2009553164 A JP 2009553164A JP 2009553164 A JP2009553164 A JP 2009553164A JP 2010521729 A JP2010521729 A JP 2010521729A
Authority
JP
Japan
Prior art keywords
processor
data
register
trivial
operand
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.)
Pending
Application number
JP2009553164A
Other languages
English (en)
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 JP2010521729A publication Critical patent/JP2010521729A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • 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/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/535Dividing only
    • G06F7/537Reduction of the number of iteration steps or stages, e.g. using the Sweeny-Robertson-Tocher [SRT] algorithm
    • 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
    • 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/3001Arithmetic 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/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computing Systems (AREA)
  • Nonlinear Science (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】本出願はプロセッサ分野、特に算術演算の実行に関する。
【解決手段】プロセッサによって実行される計算の多くは、多数の単純な演算を含む。その結果、乗算演算は、非常に多数のクロックサイクルをかけて終了する場合がある。本出願は、自明なオペランド・レジスタを有するプロセッサを提供し、これはデータストアに格納されるデータ値に対する算数又は格納演算の実行に使用される。
【選択図】図1

Description

本発明はプロセッサ分野に関し、特に算術演算を実行することに関する。
プロセッサによって実行される計算の多くは、多数の単純な演算を含む。その結果、乗算演算は、非常に多数のクロックサイクルをかけて終了する場合がある。
この演算は複雑な計算に対しては正当化されるが、例えば0、+1、−1による一つの数のかけ算等の自明な(trivial)演算に対しては同じことは言えず、その答えはずっと単純な様式で得ることができる。
粗行列を含むあるアプリケーションにおいては、非常に多数のゼロの存在のために、実行される自明な演算の数が極めて重要でありうる。粗行列におけるゼロの数は、圧縮行ストレージ(CRS)等のまばらなフォーマットで該行列を格納することにより低減又は消去できるが、アドレス生成に関するオーバーヘッドのために、このようなストレージは、市販コンピュータ・システムにおいては非常に低性能な結果となることがある。
米国特許5262973号(リチャードソンら)は、演算が自明なものである場合には計算時間を削減する方法を開示している。特に、本方法は、並行して少なくとも二つの演算を実行する。第一の演算は、従来の複雑な算術演算である。第二の及び更なる演算は、オペランドの一方又は両方が自明なオペランドの特定の例であるかどうかについて決定するオペランド・チェック・メカニズムによって実行される。オペランドの一つが自明なオペランドの特定の例である場合、複素数の算術演算は停止し、検出された自明なオペランドにしたがって、チェック・メカニズムが算術演算の結果を迅速に出力する。その結果、自明なオペランドに複雑な算術演算を実行する必要が避けられる。しかしながら、この方法は、複雑な演算を消去せず、演算が事実上自明なものであるという判定行われる場合に、単にこれを停止させる。
第一の実施形態は、プロセッサがデータ値を格納するためのデータストア、データストアの各データ値に対して少なくとも一つのフラグを格納するための自明なオペランド・レジスタ、各記憶データ値が自明なオペランドであるかどうかを示す少なくとも一つのフラグを含み、該プロセッサは、命令の実行において自明なオペランド・レジスタを使用するように構成される。プロセッサは、データストアから少なくとも一つのデータ値を含む演算の実行において自明なオペランド・レジスタを使用する計算ユニットを含むことができる。適切には、計算ユニットは、自明なオペランド・レジスタを調べ、計算ユニットの演算を制御するための制御論理ユニットを含むことができる。プロセッサは、データストアへの入力ライン上において自明なオペランドの存在を決定するために比較を実行するように構成されるコンパレータを、更に含んでもよい。データストアは、レジスタ・ファイルとして提供されてもよい。プロセッサは、複数のコンパレータを更に含んでもよく、各コンパレータは、レジスタ・ファイルの対応する書き込みポートのデータが自明なオペランドを含むかどうかを決定する。データ値は、適切には浮動小数点値である。データストアは、32ビット、64ビット又は128ビットのレジスタを含んでもよい。自明なオペランドは、0、−1又は1を含んでもよい。好ましくは、自明なオペランドは、一意的にゼロ値である。
適切には、実行された命令は、浮動小数点計算を含む。制御論理ユニットは、自明なオペランド・レジスタを調べ、浮動小数点計算ユニットの演算を制御することを提供できる。制御論理ユニットは、計算が自明なオペランドを含む場合には、浮動小数点計算ユニットを回避し、直接的に結果を提供するように構成できる。結果は、該結果が格納対象であった場合に、レジスタに対して自明なオペランド・レジスタ・フラグを設定することにより、直接的に提供できる。適宜、実行される命令は、データ格納命令を含む。プロセッサは、ベクトル又はマトリクス・データに対応するゼロでないパターンの比較を実行するように構成されるコンパレータを、更に含むことができる。
更なる態様において、本方法は、プロセッサにおける第一のデータ・レジスタ上で演算を実行するために提供され、該プロセッサは、前記第一のデータ・レジスタを取り入れている命令の実行において、自明なオペランド・レジスタのフラグを使用するステップを含む第一のデータ・レジスタにおける自明なオペランドの存在を示す自明なオペランド・レジスタを有する。
適切には、本方法は、第一のデータ・レジスタにデータを書き込み、該データにおける自明なオペランドの存在を決定するために該データの比較を実施し、自明なオペランド・レジスタ内の比較に応答してフラグを設定する最初のステップを含む。データを書き込み、比較を実行するステップは、ほぼ同時に実行できる。第一のデータ・レジスタは、浮動小数点データ・レジスタでもよい。適宜、複数の個々のデータ・レジスタが設けられ、各レジスタは、自明なオペランド・レジスタにおいて付属フラグを有する。複数の個々のデータ・レジスタは、レジスタ・ファイルとして提供できる。任意に、命令は計算であり、自明なオペランド・レジスタはプロセッサにおける計算ユニットの演算の制御に使用される。自明なオペランドは、0、−1又は1を含むことができる。一つの構成において、自明なオペランドは一意的にゼロ値である。本方法は、計算が自明なオペランドを含む場合は、計算ユニットの回避及び直接的な結果の提供を含むことができる。この場合、結果が格納対象であった場合に、レジスタに対して自明なオペランド・レジスタ・フラグを設定することによって、結果は直接的に提供できる。適宜、実行される命令は、データ格納命令を含む。
以下、添付図面を参照し、本発明を説明する。
本発明の例示的実施形態に係る、プロセッサの概略図である、 本発明の例示的実施形態に係る、方法のフローチャートである。
本出願は、データストアに含まれるデータが自明なオペランドと見なせるかどうかを識別するために、自明なオペランド・フラグを使用する。データストアは、それぞれのプロセッサ・アーキテクチャに応じ、いかなる種類のメモリ場所の形態もとることができる。それにもかかわらず、説明の容易さのために、下記の例は、レジスタ及び/又はレジスタ・ファイルに関して記載する。しかしながら、本出願は、これらの特定の種類のデータ格納に制約又は限定することを意図していない。フラグの内容は、周知の自明な値に対する浮動小数点値の比較によって、又はメモリから以前の比較の結果をロードすることによって生成され、ソースの行列/ベクトル・データと共に格納される。本出願の文脈において、自明なオペランドは、結果を決定するために複雑な計算処理を必要としないことはいうまでもなく、例えば、二つの32ビット浮動小数点ビット・オペランドの積算は、一方のオペランドがゼロである場合、結果がゼロであることを決定するために完全な32ビット積算処理を必要としない。自明なオペランドは、1、−1及び0を含む。
2の整数倍に等しいオペランドは、少なくとも整数演算における除算又は積算に対して単純なシフト・プロセスが含まれることであるため、自明なオペランドとも考えられる。自明なオペランド数が多いほど、より複雑な実装が必要となることはいうまでもない。したがって、自明なオペランドに対するフラグは、オペランドが1、−1又は0のいずれであるかを識別することに制限されることが好ましい。
あるアプリケーションにおいては、0を含む演算の数が多い。このようなアプリケーションの例は、ゲーム、物理アプリケーション又は検索エンジンに使用されるような疎行列の分野であり、データ・レジスタに格納される値がゼロかどうかを示す各データ・レジスタに対する単一のフラグを有することの利点は、計算速度における強力な省力化、及び能力への要求削減とこれに伴う熱の低下という利点に関して注目に値する。ソース行列が繰り返し用いられるときには、省力化は特に大規模であり、例えば、Google(登録商標)の検索行列はn×nの粗な接続行列であり、nは30億であり、行あたりのゼロでないエントリは6〜7である。Google(登録商標)の行列は、週に一度更新され、1年につき365日、1日につき24時間、1秒につき数千回もクエリが行われる。
以下、例示的実装を、このような疎行列アプリケーションと共に使用するために記載し、これにおいて自明なオペランドは、好適にはゼロであると決定する。図1に示すように、この例示的実装は、単精度32ビットのデータ・レジスタ・アプリケーションを提供するが、図2に示すように、例示的方法は、倍精度又はより高精度を含む他の構成に適用できることはいうまでもない。
例示的プロセッサは、レジスタのアレイを内蔵するレジスタ・ファイルを有する。図示の例示的装置においては、4つの32ビット・レジスタがある。レジスタ・ファイルは、複数のポートを有する高速スタティックRAMとして実装できる。適切には、レジスタ・ファイルは、同一のポートを介して読み込み及び書き込みを行うよりもむしろ専用の読み込み及び書き込みポートが配置される。レジスタ・ファイルの使用は効果的ではあるが、レジスタの実装は、個々のフリップフロップ、高速コアメモリ、薄膜メモリ及び他のメモリ技術によってより好都合とはならない場合がある。
他のプロセッサと同様に、レジスタ・ファイルに対するデータは、(浮動小数点)計算後に計算ユニットからロード可能であり、同様に、レジスタ・ファイルからのデータは、計算における使用のために計算ユニットに提供できる。
レジスタ・ファイルに対するそれぞれの書き込みポートは、32のデータ・ラインを有する。単精度浮動小数点数の場合、第一ビットは符号ビットであり、8ビットの指数及び23ビットの仮数が続く。当該レジスタに対する仮数の値がゼロであるかどうかを決定するため、31のデータ・ラインが比較されなければならない(符号ビットの比較は不要)。コンパレータの単一ビット出力は、自明なオペランド・レジスタ内の対応するビットに書き込まれる。コンパレータからの出力書き込みは、レジスタ・ファイルへのレジスタに対する書き込みラインについて、書き込みラインによって制御される。図2に示す例においては、データのロードが最初に発生するが、比較及びロードが同時に発生してもよいことはいうまでもないことを考慮されたい。更に、自明なオペランド・データがメモリにデータ自身と共に格納される状況においては、自明なオペランド・レジスタ値が直接的にロードできるため、比較は不要とすることができる。
この装置の効果は、レジスタ・ファイルの書き込みと並列して「無償で」比較を実施することには、クロックサイクルの追加が不要であることである。
能力を節約し、及び/又は計算レイテンシを低減する目的で、自明なオペランド・レジスタの内容を用いて浮動小数点ユニットの演算を制御できる。この構成において、制御ロジックを設け、浮動小数点演算への入力オペランドに対するレジスタに対応する自明なオペランド・レジスタから、ビットを読み込むことができる。浮動小数点演算子の実行制御に必要な制御信号は、下表にしたがって生成できる。浮動小数点データの圧縮/復元においてこれらを使用することに加え、MCBビットマップ・レジスタ内容も使用できる。
Figure 2010521729
実際には、提案スキームは、任意の数のレジスタ・ファイル書き込みポート、及び任意の数のエントリを有するレジスタ・ファイルに容易に適用できる。
このロジックは、完全な浮動小数点演算の場合における数個のパイプライン・サイクルとは対照的に、能力を消費する浮動小数点演算を、単一サイクルを実行する単純なロジック機能に置き換える効果を有する。これは、従来のプロセッサと比較して、提案プロセッサの電力消散の低減と、有効なFLOPSスループットの向上という組み合わせを有する。
浮動小数点演算の結果がゼロ(0.0の浮動小数点値)である場合、浮動小数点演算の実行は不要であり、レジスタ・ファイルにおけるデスティネーション・レジスタに対応する自明なオペランド・ビットは、適切なロジックによってゼロに設定でき、すなわち、ある構成において、レジスタ・ファイルへの結果の書き込みは必要ではない。このような構成において、レジスタ・ファイルからのデータ書き込み時には、プロセッサは、自明なオペランド・レジスタの内容を使用するよう適合できる。
本出願は、浮動小数点計算の実行を目的としているが、自明なオペランド・レジスタは、レジスタ・ファイル及びプロセッサから一般的に外部記憶へのデータ格納の高速化、及び計算コストが高くなるマトリクス上のエントリ単位の比較に対する前段階としての、ベクトル/マトリクスのゼロでないパターンの高速比較のためのテストを含む計算以外の他の目的に対しても使用できる。このようなアプリケーションは、本出願の譲受人によって出願される同時係属出願に記載される。
含む/からなるという言葉は、本明細書における使用時には、記載の特徴、整数、ステップ又は構成要素の存在を特定するためであるが、一以上の他の特徴、整数、ステップ、構成要素又はこれらの群の存在又は追加を排除するものではない。

Claims (29)

  1. データ値を格納するためのデータストアと、
    前記データストアにおける各データ値に対する少なくとも一つのフラグを格納するための自明なオペランド・レジスタであって、前記少なくとも一つのフラグは格納されるデータ値が自明なオペランドであるかどうかを示すレジスタと、
    を含むプロセッサであって、
    前記プロセッサは、命令の実行において自明なオペランド・レジスタを使用するように構成される、プロセッサ。
  2. 前記プロセッサは、前記データストアから少なくとも一つのデータを取り込む演算を実施することにおいて、前記自明なオペランド・レジスタを使用する計算ユニットを含む、請求項1に記載のプロセッサ。
  3. 前記計算ユニットは、前記自明なオペランド・レジスタを調べ、計算ユニットの前記演算を制御するための制御論理ユニットを含む、請求項2に記載のプロセッサ。
  4. 前記プロセッサは、前記データストアへの入力ライン上において自明なオペランドの存在を決定するために比較を実行するように構成されるコンパレータを更に含む、請求項1から3のいずれかに記載のプロセッサ。
  5. 前記データストアのセットは、レジスタ・ファイルとして提供される、請求項1に記載のプロセッサ。
  6. 前記プロセッサは、複数のコンパレータを更に含み、各コンパレータは、対応する書き込みポートにおいて前記データが自明なオペランドを含むかどうかを決定する、請求項5に記載のプロセッサ。
  7. 前記データ値は浮動小数点値である、請求項1から6のいずれかに記載のプロセッサ。
  8. 前記コンパレータは、自明なオペランドの存在を決定するために書き込みライン上において比較を実行する、請求項7に記載のプロセッサ。
  9. 前記データストアは、32ビット、64ビット又は128ビット・レジスタを含む、請求項8に記載のプロセッサ。
  10. 前記自明なオペランドは、0、−1又は1を含む、請求項1から9のいずれかに記載のプロセッサ。
  11. 前記自明なオペランドは一意的にゼロ値である、請求項1から10のいずれかに記載のプロセッサ。
  12. 前記実行される命令は浮動小数点計算を含む、請求項1から11のいずれかに記載のプロセッサ。
  13. 制御論理ユニットは、前記自明なオペランド・レジスタを調べ、浮動小数点計算ユニットの演算を制御するために提供される、請求項12に記載のプロセッサ。
  14. 前記制御論理ユニットは、前記計算が自明なオペランドを含む場合は、前記浮動小数点計算ユニットを回避し、直接的に結果を提供するように構成される、請求項13に記載のプロセッサ。
  15. 前記結果は、前記結果が格納対象であった場合に、前記レジスタに対して前記自明なオペランド・レジスタ・フラグを設定することによって直接的に提供される、請求項14に記載のプロセッサ。
  16. 前記実行される命令は、データ格納命令を含む、請求項1から11のいずれかに記載のプロセッサ。
  17. 前記プロセッサは、ベクトル又は行列データに対応するゼロでないパターンの比較を実行するように構成されるコンパレータを更に含む、請求項1から16のいずれかに記載のプロセッサ。
  18. プロセッサにおける第一のデータ・レジスタ上で演算を実行するための方法であって、前記プロセッサは、前記第一のデータ・レジスタにおける自明なオペランドの存在を示す自明なオペランド・レジスタを有し、
    前記方法は、前記第一のデータ・レジスタを取り入れている命令の実行において前記自明なオペランド・レジスタのフラグを使用するステップを含む、方法。
  19. a)データを第一のデータ・レジスタに書き込むことと、
    b)前記データにおける自明なオペランドの前記存在を決定するために前記データの比較を実行することと、
    c)自明なオペランド・レジスタ内において前記比較に応答して前記フラグをセットすることと、
    からなる最初のステップを更に含む、請求項18に記載の方法。
  20. 前記データを書き込み及び前記比較を実行する前記ステップは、ほぼ同時に実行される、請求項18に記載の方法。
  21. 前記第一のデータ・レジスタは、浮動小数点データ・レジスタである、請求項18又は19に記載の方法。
  22. 複数の個々のデータ・レジスタが提供され、各レジスタは前記自明なオペランド・レジスタに付属フラグを有する、請求項18から21のいずれかに記載の方法。
  23. 前記複数の個々のデータ・レジスタは、レジスタ・ファイルとして提供される、請求項22に記載の方法。
  24. 命令は計算であり、前記自明なオペランド・レジスタは前記プロセッサにおける計算ユニットの前記演算の制御に使用される、請求項17から23のいずれかに記載の方法。
  25. 前記自明なオペランドは、0、−1又は1を含む、請求項17から24のいずれかに記載の方法。
  26. 前記自明なオペランドは、一意的にゼロ値である、請求項17から24のいずれかに記載の方法。
  27. 前記方法は、前記計算が自明なオペランドを含む場合は、前記計算ユニットの回避及び直接的な結果の提供を含む、請求項24のいずれかに記載の方法。
  28. 前記結果は、前記結果が格納対象であった場合に、前記レジスタに対して前記自明なオペランド・レジスタ・フラグを設定することによって直接的に提供される、請求項27に記載の方法。
  29. 前記実行される命令は、データ格納命令を含む、請求項17に記載の方法。
JP2009553164A 2007-03-15 2008-03-16 自明な算術演算を利用するプロセッサ Pending JP2010521729A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0704999A GB2447428A (en) 2007-03-15 2007-03-15 Processor having a trivial operand register
US91127407P 2007-04-11 2007-04-11
PCT/EP2008/053134 WO2008110634A1 (en) 2007-03-15 2008-03-16 A processor exploiting trivial arithmetic operations

Publications (1)

Publication Number Publication Date
JP2010521729A true JP2010521729A (ja) 2010-06-24

Family

ID=38008491

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009553164A Pending JP2010521729A (ja) 2007-03-15 2008-03-16 自明な算術演算を利用するプロセッサ

Country Status (8)

Country Link
US (1) US9223575B2 (ja)
EP (2) EP2137610B1 (ja)
JP (1) JP2010521729A (ja)
KR (1) KR20100029180A (ja)
CN (1) CN101689105A (ja)
GB (1) GB2447428A (ja)
IE (1) IES20080198A2 (ja)
WO (1) WO2008110634A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011511986A (ja) * 2008-02-11 2011-04-14 リニア アルジェブラ テクノロジーズ リミテッド プロセッサ

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7945765B2 (en) * 2008-01-31 2011-05-17 International Business Machines Corporation Method and structure for asynchronous skip-ahead in synchronous pipelines
GB2476800A (en) * 2010-01-07 2011-07-13 Linear Algebra Technologies Ltd Sparse matrix vector multiplier using a bit map of non-zero elements to control scheduling of arithmetic operations
US20170046153A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Simd multiply and horizontal reduce operations
US10459727B2 (en) 2015-12-31 2019-10-29 Microsoft Technology Licensing, Llc Loop code processor optimizations
US10592252B2 (en) 2015-12-31 2020-03-17 Microsoft Technology Licensing, Llc Efficient instruction processing for sparse data
US10460704B2 (en) 2016-04-01 2019-10-29 Movidius Limited Systems and methods for head-mounted display adapted to human visual mechanism
WO2018134740A2 (en) * 2017-01-22 2018-07-26 Gsi Technology Inc. Sparse matrix multiplication in associative memory device
KR102258414B1 (ko) * 2017-04-19 2021-05-28 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 처리 장치 및 처리 방법
US10949947B2 (en) 2017-12-29 2021-03-16 Intel Corporation Foveated image rendering for head-mounted display devices
KR102697300B1 (ko) 2018-03-07 2024-08-23 삼성전자주식회사 전자 장치 및 머신 러닝 수행 방법
US20220114108A1 (en) 2019-03-15 2022-04-14 Intel Corporation Systems and methods for cache optimization
WO2020190801A1 (en) 2019-03-15 2020-09-24 Intel Corporation Graphics processor operation scheduling for deterministic latency
US11714652B2 (en) * 2021-07-23 2023-08-01 Advanced Micro Devices, Inc. Zero operand instruction conversion for accelerating sparse computations in a central processing unit pipeline
CN113591031A (zh) * 2021-09-30 2021-11-02 沐曦科技(北京)有限公司 低功耗矩阵运算方法及装置
US11816488B2 (en) * 2021-11-10 2023-11-14 Huawei Technologies Co., Ltd. Method and apparatus for dynamically simplifying processor instructions

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS522140A (en) * 1975-06-24 1977-01-08 Hitachi Ltd Information processing apparatus
JPS6476325A (en) * 1987-09-18 1989-03-22 Hitachi Ltd Data processor for executing instruction with guard
JPH0628178A (ja) * 1992-03-13 1994-02-04 Sun Microsyst Inc 算術演算を簡略にする最適化装置及び方法
JPH1091441A (ja) * 1996-09-13 1998-04-10 Sanyo Electric Co Ltd プログラム実行方法およびその方法を利用した装置
JP2000506639A (ja) * 1995-12-19 2000-05-30 インテル・コーポレーション 単一のレジスタ・ファイルを使用して浮動小数点命令およびパック・データ命令を実行する方法および装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2965297A (en) * 1957-08-08 1960-12-20 Burroughs Corp Floating point arithmetic comparison circuit
NL282621A (ja) * 1961-08-30
JPS5979350A (ja) * 1982-10-29 1984-05-08 Toshiba Corp 浮動小数点演算装置
US5995991A (en) * 1996-07-18 1999-11-30 Industrial Technology Research Institute Floating point architecture with tagged operands
US6009511A (en) * 1997-06-11 1999-12-28 Advanced Micro Devices, Inc. Apparatus and method for tagging floating point operands and results for rapid detection of special floating point numbers
US7395297B2 (en) * 2001-05-25 2008-07-01 Sun Microsystems, Inc. Floating point system that represents status flag information within a floating point operand
US7502918B1 (en) * 2008-03-28 2009-03-10 International Business Machines Corporation Method and system for data dependent performance increment and power reduction

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS522140A (en) * 1975-06-24 1977-01-08 Hitachi Ltd Information processing apparatus
JPS6476325A (en) * 1987-09-18 1989-03-22 Hitachi Ltd Data processor for executing instruction with guard
JPH0628178A (ja) * 1992-03-13 1994-02-04 Sun Microsyst Inc 算術演算を簡略にする最適化装置及び方法
JP2000506639A (ja) * 1995-12-19 2000-05-30 インテル・コーポレーション 単一のレジスタ・ファイルを使用して浮動小数点命令およびパック・データ命令を実行する方法および装置
JP2004145898A (ja) * 1995-12-19 2004-05-20 Intel Corp 単一のレジスタ・ファイルを使用して浮動小数点命令およびパック・データ命令を実行する方法および装置
JP2004152318A (ja) * 1995-12-19 2004-05-27 Intel Corp 単一のレジスタ・ファイルを使用して浮動小数点命令およびパック・データ命令を実行する方法および装置
JPH1091441A (ja) * 1996-09-13 1998-04-10 Sanyo Electric Co Ltd プログラム実行方法およびその方法を利用した装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CSNA200003180001; Pentium Pro ファミリ・ディベロパーズ・マニュアル 中巻:プログラマーズ・リファレンス・マニュアル 初版, 1996, Pages:7-7〜7-23, インテルジャパン株式会社 *
JPN6012056078; Shawn McCloud, et al.: 'A Floating Point Unit For The 68040' Proceedings of 1990 IEEE International Conference on Computer Design : VLSI in Computers and Process , 19900917, Pages:187-190, IEEE *
JPN6012056081; Pentium Pro ファミリ・ディベロパーズ・マニュアル 中巻:プログラマーズ・リファレンス・マニュアル 初版, 1996, Pages:7-7〜7-23, インテルジャパン株式会社 *
JPN6012056083; Stephen E. Richardson: 'Exploiting Trivial and Redundant Computation' Proceedings of 11th Symposium on Computer Arthmetic , 19930629, Pages:220-227, IEEE *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011511986A (ja) * 2008-02-11 2011-04-14 リニア アルジェブラ テクノロジーズ リミテッド プロセッサ

Also Published As

Publication number Publication date
IES20080198A2 (en) 2009-07-08
EP3287894B1 (en) 2019-10-23
GB2447428A (en) 2008-09-17
US9223575B2 (en) 2015-12-29
GB0704999D0 (en) 2007-04-25
EP2137610A1 (en) 2009-12-30
CN101689105A (zh) 2010-03-31
US20100106947A1 (en) 2010-04-29
EP3287894A1 (en) 2018-02-28
KR20100029180A (ko) 2010-03-16
WO2008110634A1 (en) 2008-09-18
EP2137610B1 (en) 2017-08-02

Similar Documents

Publication Publication Date Title
JP2010521729A (ja) 自明な算術演算を利用するプロセッサ
US10719318B2 (en) Processor
US11847452B2 (en) Systems, methods, and apparatus for tile configuration
US8984043B2 (en) Multiplying and adding matrices
CN109716290B (zh) 用于经融合的乘加的系统、装置和方法
US6463525B1 (en) Merging single precision floating point operands
US20240143325A1 (en) Systems, methods, and apparatuses for matrix operations
EP4020169A1 (en) Apparatuses, methods, and systems for 8-bit floating-point matrix dot product instructions
US11880683B2 (en) Packed 16 bits instruction pipeline

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121030

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130130

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130206

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130225

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130304

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130401

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130403

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130408

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130514

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130830

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130909

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20130927