JP2023531917A - 小さいフットプリントの算術論理装置を有する処理装置 - Google Patents
小さいフットプリントの算術論理装置を有する処理装置 Download PDFInfo
- Publication number
- JP2023531917A JP2023531917A JP2022578594A JP2022578594A JP2023531917A JP 2023531917 A JP2023531917 A JP 2023531917A JP 2022578594 A JP2022578594 A JP 2022578594A JP 2022578594 A JP2022578594 A JP 2022578594A JP 2023531917 A JP2023531917 A JP 2023531917A
- Authority
- JP
- Japan
- Prior art keywords
- operand
- stage
- mantissa
- alu
- operands
- 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
Links
- 238000012545 processing Methods 0.000 claims abstract description 41
- 238000000034 method Methods 0.000 claims description 24
- 230000004044 response Effects 0.000 claims description 7
- 238000013473 artificial intelligence Methods 0.000 description 21
- 239000011159 matrix material Substances 0.000 description 12
- 230000008901 benefit Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000010606 normalization Methods 0.000 description 7
- 238000013528 artificial neural network Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/57—Arithmetic 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
- G06F5/012—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Neurology (AREA)
- Executing Machine-Instructions (AREA)
- Nonlinear Science (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
並列処理装置[104]は、比較的小さいフットプリントを有する算術論理装置(ALU)[115]を使用し、それによって、処理装置の全体的な電力消費及び回路面積を低減する。より小さいフットプリントをサポートするために、ALUは、受信した命令に対応する演算を実行する複数のステージを含む。ALUは、受信した命令によって示される精度で少なくとも1つの演算を実行し、その後、少なくとも1つの演算の結果データをより小さいサイズに低減してから、ALUの別のステージに結果を提供して、命令の実行を継続する。【選択図】図1
Description
(関連出願の相互参照)
本願は、2020年6月26日に出願された「PROCESSING UNIT WITH SMALL FOOTPRINT ARITHMETIC LOGIC UNIT」と題する米国仮特許出願第63/044,544号の優先権を主張し、その全体が、参照により本明細書に組み込まれる。
本願は、2020年6月26日に出願された「PROCESSING UNIT WITH SMALL FOOTPRINT ARITHMETIC LOGIC UNIT」と題する米国仮特許出願第63/044,544号の優先権を主張し、その全体が、参照により本明細書に組み込まれる。
演算処理が複雑化するにつれて、プロセッサは、プロセッサの代わりに所定の演算を実行するように特別に設計され構成された処理装置を使用することが多くなってきた。例えば、人工知能、機械学習及び同様の演算を効率的に実行するために、幾つかのプロセッサは、複数のデータセットで単一のプログラムの複数のインスタンスを同時に実行する複数の処理要素(一般に、プロセッサコア又は計算装置とも呼ばれる)を有する1つ以上の人工知能(AI)アクセラレータを使用する。プロセッサの中央処理装置(CPU)は、AIアクセラレータにコマンドを提供し、AIアクセラレータのコマンドプロセッサ(CP)は、コマンドを1つ以上の演算に復号する。1つ以上の算術論理装置(ALU)等のアクセラレータの実行装置は、人工知能機能及び同様の演算を実行する。
本開示は、添付の図面を参照することによってより良く理解され、その多数の特徴及び利点が当業者に明らかになる。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
図1~図4は、人工知能(AI)アクセラレータ等の並列処理装置が、比較的小さいフットプリントを有する算術論理装置(ALU)を使用し、それによって処理装置の全体的な電力消費及び回路面積を低減するシステム及び技術を示す。より小さいフットプリントをサポートするために、ALUは、受信した命令に対応する演算を実行する複数のステージを含む。ALUは、受信した命令によって示される精度で少なくとも1つの演算を実行し、その後、少なくとも1つの演算の結果データ(すなわち、中間結果)をより小さいサイズに低減してから、ALUの別のステージに結果を提供して、命令の実行を継続する。各連続ステージについても同様に実行する。これらの中間結果のサイズが低減されるので、ALUの後のステージは、それらの対応する演算をサポートするために比較的小さいレジスタ及びより少ない量の他の回路を使用することができ、それによってALUの全体サイズ及び電力消費を低減する。
例を用いて示すと、幾つかの実施形態では、ALUは、ドット積命令(dot product instruction)等の積和命令を実行するステージを含み、乗算器ステージは、N個のオペランドのセットを乗算してN個の積を生成し、加算器ステージは、N個の積を加算して最終的なドット積結果を生成する。ALUは、乗算器ステージと加算器ステージとの間に、N個の積のサイズを低減するアライメントステージ(alignment stage)を含む。例えば、幾つかの実施形態では、アライメントステージは、N個の積のうち最大の積を識別し、対応する仮数をシフトすることによって、他の積を最大の積とアライメントする。シフト処理中、仮数の下位ビットが破棄され、各仮数が指定されたサイズ(例えば32ビット)にセットされる。対照的に、従来のALUは、最終的なドット積結果の完全な精度を保証するために、アライメントステージにおいて比較的大きな仮数(例えば、80ビット以上の仮数)を使用し、加算器ステージが大きなレジスタ及びより多数の加算器要素を使用することを必要とし、したがって、より大量の電力及び回路面積を消費する。
図1は、幾つかの実施形態による、小さいフットプリントALUを有するプロセッサ100のブロック図である。プロセッサ100は、概して、電子デバイスの代わりに指定されたタスクを実行するために、命令セット(例えば、コンピュータプログラム)を実行するように構成されている。したがって、異なる実施形態では、プロセッサ100は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ、ゲームコンソール、スマートフォン等の一部である。電子デバイスの代わりに命令の実行をサポートするために、プロセッサ100は、中央処理装置(CPU)102及び人工知能(AI)アクセラレータ104を含む。幾つかの実施形態では、プロセッサ100は、メモリモジュール(例えば、1つ以上のキャッシュを含むメモリ階層)、入力/出力(I/O)インタフェース、グラフィック処理装置(GPU)等の追加処理装置等のように、命令実行をサポートするための図1に示されていない追加モジュール及び回路を含む。
命令セットを効率的に実行するために、プロセッサ100は、概して、異なるタイプの演算をCPU102及びAIアクセラレータ104に割り当てる。したがって、幾つかの実施形態では、CPU102は、メモリから命令セットをフェッチすることと、それらの命令を演算セットに復号することと、演算を実行することと、実行された命令を中断することと、を含む、プロセッサ100用の汎用操作を実行する。これらの汎用操作の一例は、オペレーティングシステムを実行して、メモリ管理、電子デバイスのためのユーザインタフェースの提供等のような、電子デバイスのための管理操作を実行することである。
CPU102によって実行される汎用操作とは対照的に、AIアクセラレータ104は、機械学習、ニューラルネットワーク、推論エンジン、エキスパートシステム、深層学習等に関連する演算等のような人工知能演算に関連する演算を効率的に実行するモジュール及び回路を含む。したがって、異なる実施形態では、AIアクセラレータ104は、ベクトル処理装置、グラフィック処理装置(GPU)、汎用GPU(GPGPU)、非スカラ処理装置、高並列処理装置、AI処理装置、推論エンジン、機械学習処理装置、ニューラルネットワーク処理装置、他のマルチスレッド処理装置等のように、人工知能に関連する演算を実行するために使用される幾つかの処理装置のうち何れかである。
AI演算の実行をサポートするために、AIアクセラレータ104は、コマンドプロセッサ(CP)106と、計算装置(CU)110、111、112を含む複数の計算装置と、を含む。コマンドプロセッサ106は、CPU102からコマンド(例えば、コマンド118)を受信し、各コマンドは、AIアクセラレータ104において実行される1つ以上のAI演算を示す。例えば、異なる実施形態では、コマンド118は、ニューラルネットワーク演算(例えば、ニューラルネットワークトレーニングのための畳み込み演算、推論演算等)、機械学習演算、ベクトル処理演算等、又は、それらの任意の組み合わせのうち1つ以上を示す。CP106は、コマンドを解釈し、1つ以上の命令(例えば、命令117)を生成し、命令は、実行されるAI演算を記述する。
計算装置110~112の各々は、CP106によって生成された命令を実行する回路を含む。したがって、幾つかの実施形態では、計算装置110、112の各々は、受信した命令を実行するために、1つ以上のベクトルストリームプロセッサ(VSP)、単一命令複数データ(SIMDユニット)、他の処理要素、又は、それらの任意の組み合わせを含む。幾つかの実施形態では、処理効率を高めるために、CP106は、命令を、ウェーブフロント(wavefront)又はワープと呼ばれ得る指定されたセットに編成し、指定されたスケジューリング基準に従って、ウェーブフロントを計算装置110~112のうち異なるものに割り当てる。各計算装置は、他の計算装置と並列に、ウェーブフロントの割り当てられた部分を実行する。
例えば、ウェーブフロントは、ニューラルネットワークの態様を表す大きな行列の要素等のような比較的大きなデータ要素のセットを用いて、指定された算術演算セットを実行すると仮定する。ウェーブフロントを実行するために、CP106は、行列の要素の異なるサブセットを異なる計算装置に割り当て、各計算装置は、対応する割り当てられた要素のサブセットを用いて、算術演算の指定されたセットを並列に実行する。これにより、計算装置は、データ要素の大きなセットに対して算術演算を効率的に実行する。
算術演算を実行するために、各計算装置は、計算装置110のALU115等の1つ以上のALUを含む。幾つかの実施形態では、計算装置110は、命令バッファから命令をフェッチするフェッチステージと、復号ステージと、ALU115に加えて実行装置と、実行された命令を中断させる中断ステージと、を含む、命令実行をサポートする追加ステージを含む命令パイプライン(図示省略)を含む。復号ステージは、フェッチステージから受信した命令(例えば、命令117)を1つ以上の演算に復号し、演算のタイプに従って、演算を何れかの実行装置に渡す回路を含む。幾つかの実施形態では、各演算は、対応するオペコードによって識別され、復号ステージは、オペコードに基づいて実行装置を識別し、オペコードを示す情報を、実行装置に提供する。実行装置は、オペコード又はそれに基づく情報を使用して、実行される演算のタイプを判定し、指示された演算を実行する。
例えば、幾つかの演算及び関連するオペコードは、算術演算を示す。受信した命令が算術演算を示すことを識別したことに応じて、復号ステージは、演算のためのオペコードを判定し、算術演算のために使用されるオペランド等の他の情報とともに、オペコードをALU115に提供する。ALU115は、レジスタファイル又は他のメモリロケーションに記憶された示されたオペランドを使用して、オペコードによって示された演算を実行する。幾つかの実施形態では、ALU115によって提供される演算は、オペランドの精度及び実行される演算を示す。例えば、幾つかの実施形態では、復号ステージは、16ビットオペランドを使用する16ビット乗算演算のための1つの演算(及び対応するオペコード)を提供し、32ビットオペランドを使用する32ビット乗算演算のための別の演算(及び対応するオペコード)を提供する。
更に、復号ステージは、対応するオペコードを用いて、混合精度算術演算のための演算を生成し、混合精度演算は、異なるサイズのオペランドを使用する。例えば、幾つかの実施形態では、復号ステージは、対応する命令に基づいて、1つのサイズ(例えば、16ビット)のオペランドを乗算し、結果を異なるサイズ(例えば、32ビット)のオペランドで累算する積和算(MACC)演算を生成する。例えば、幾つかの実施形態では、演算は、2つの16ビット浮動小数点オペランドの4つのセットを乗算し、乗算結果を互いに加算し、32ビット浮動小数点オペランドに加算する(DOT4_F32_F16と指定される)混合精度ドット積演算を含む。
ALU115は、乗算演算を実行する1つ以上の乗算器を含む乗算ステージ、及び、加算を実行する加算ステージ等のように、異なる算術演算を実行する異なるステージを含む。DOT4_F32_F16演算等のようなより複雑な算術演算の場合、ALUは、対応する演算を実行する異なるステージを使用して、結果を1つのステージから別のステージに渡す。例えば、DOT4_F32_F16演算を実行するために、ALU115は、乗算ステージにおいて乗算演算を実行し、加算ステージにおいて加算演算を実行する。
従来、算術演算の完全な精度を維持するために、ALUは、各ステージにおいて比較的大きなオペランドを維持する。例えば、DOT4_F32_F16演算の完全な精度を維持するために、乗算積に80ビットの仮数が使用される。すなわち、DOT4_F32_F16演算の完全な精度を維持するために、ALUは、通常、80ビット以上の仮数を使用して乗算ステージによって生成された積を記憶する。これらの比較的大きなオペランドを使用すると、ALU115の加算ステージにおいてより大きなレジスタ及びより多数の加算要素を必要とすること等によって、比較的大量の回路面積及び電力が消費される。しかしながら、AI演算を含む幾つかのタイプの演算の場合、これらの比較的大きい仮数を維持しても、演算の全体的な結果が改善されない。例えば、場合によっては、AI演算によって使用されるデータオペランドは、比較的低精度のオペランドであり、オペランドを高精度に維持しても、AI演算の全体的な結果に有意な影響を及ぼさない。
電力消費を低減し、比較的小さいフットプリントをサポートするために、ALU 115は、ALU115の1つのステージによって生成されたオペランドのサイズをそれらのオペランドが次のステージに渡される前に低減するソート・アライメントステージ120を含む。例えば、幾つかの実施形態では、DOT4_F32_F16演算の場合、ソート・アライメントステージ120は、乗算ステージによって生成された仮数のサイズを、加算のためにそれらの仮数を加算器ステージに提供する前に低減する。
例示すると、幾つかの実施形態では、ソート・アライメントステージ120は、乗算ステージから積を受信し、各積は、指定されたサイズの仮数(例えば、32ビット仮数)及び対応する指数によって表される浮動小数点オペランドである。ソート・アライメントステージ120は、指定された仮数サイズに対応するレジスタ(例えば、32ビット仮数を記憶する32ビットレジスタ)に各仮数を記憶する。ソート・アライメントステージ120は、受信した積の中から最大の積を識別する。他の積の場合、ソート・アライメントステージ120は、仮数をシフトし、各積が最大の積と同じ指数を有するまで、対応する指数に対して対応する調整を行う。シフト処理中、各仮数が仮数レジスタに維持され、場合によっては、仮数の下位ビットがレジスタからシフトアウトされ、結合されて各仮数の対応するスティッキービット(sticky bit)を形成する。言い換えれば、仮数のうち少なくとも幾つかは、各仮数を比較的小さいレジスタに維持するために、全体サイズ又はビット幅が低減される。
シフト及び指数調整の後、ソート・アライメントステージ120は、オペランドを加算器ステージに提供して、積の加算を実行する。上述したように、シフト及び指数調整のために、積の仮数が比較的小さいレジスタに維持される。したがって、加算ステージは、比較的少数の加算器要素を使用して積の加算を実行することができ、それによって、ALU115の小さいフットプリントをサポートする。
図2は、幾つかの実施形態による、ALU115をより詳細に示すブロック図である。図示した例では、ALU115は、複数の行列乗算器(MM)230、231、232、233と、累算器234と、ソート・アライメントステージ120と、融合加算器(fused adder)238と、正規化・丸めステージ(normalize-and-round stage)239と、を含む。行列乗算器230~233及び累算器234は、ALU115の乗算ステージを形成する。特に、浮動小数点ドット積演算(例えば、DOT4_F32_F16演算)の場合、行列乗算器230~233の各々は、浮動小数点入力オペランドの対応するセットを受信し、受信したオペランドとの浮動小数点乗算を実行して積(例えば、積240)を生成する。
累算器234は、行列乗算器230~233によって生成された積に加算される定数Cを記憶又は生成する。幾つかの実施形態では、定数Cは、ドット積演算によって識別されるオペランドであり、累算器234は、識別されたオペランドを記憶するレジスタである。他の実施形態では、定数Cは、計算装置110において実行される他の演算に基づく累算値であり、累算器234は、定数Cの累算を実行する回路を含む。
ソート・アライメントステージ120は、行列乗算器230~233から積を受信し、累算器234から定数Cを受信し、ソート・アライメント処理を介して加算するためにこれらのオペランドを準備する。ソート・アライメント処理をサポートするために、ソート・アライメントステージ120は、オペランドサイズモジュール222と、オペランドシフトモジュール224と、を含む。オペランドサイズモジュール222は、受信した積及び定数Cのうち何れが最大値を有するかを識別する回路を含む。オペランドシフトモジュール224は、受信したオペランドをシフトし、対応する指数に対して対応する調整を行う回路を含み、各オペランドがオペランドサイズモジュール222によって識別された最大オペランドとアライメントされる。
例を用いて示すと、場合によっては、オペランドサイズモジュール222は、Nの指数値を有する最大オペランドとして積240を識別する。オペランドサイズモジュール222は、N-2の指数値を有する積240より小さいものとして、積Aと指定される別の積を更に識別する。オペランドシフトモジュール224は、積Aの指数を値Nに調整し、それに対応して、積Aの仮数を2ビット右にシフトして、2つの最下位ビットが仮数からシフトアウトされる。幾つかの実施形態では、オペランドシフトモジュール224は、シフトされた仮数のスティッキービットを生成するために、論理OR演算を介して、シフトアウトされたビットを結合する。
オペランドシフトモジュール224によるシフトの結果、全ての積及び定数Cが加算のためにアライメントされる。上述したように、シフト処理中、少なくとも幾つかの積の下位ビットが破棄され、積の全てが指定されたサイズのレジスタ(例えば、32ビットレジスタ)に維持される。場合によっては、シフトは、ドット積演算によって要求されるよりも低い精度を有する積をもたらす。例えば、幾つかの実施形態では、ドット積演算は、指定された命令セットアーキテクチャ(例えば、x86命令セットアーキテクチャ)に準拠するために、単精度演算又は倍精度演算を指定する等のように、演算に関連する精度を示す。指定された精度を保証するために、従来のALUは、ソート・アライメントステージにおいて大きなレジスタを使用して、仮数ビットがソート・アライメント処理中に破棄されないようにする。対照的に、ソート・アライメントステージ120は、シフト・アライメント処理中に仮数ビットが破棄されることを可能にし、仮数が比較的小さいレジスタに維持される。
融合加算器238は、(アライメントされた定数Cを含む)アライメント積241をソート・アライメントステージ120から受信する。融合加算器238は、アライメント積241の仮数値を加算して、結果となる仮数の暫定値を生成する。仮数値を加算するために、融合加算器238は複数の加算器要素を含み、各加算器要素は少なくとも2ビットの対応する仮数を加算する。アライメント積241の仮数は、上述したように、比較的小さいレジスタに維持されるので、融合加算器238は、比較的少ない加算器要素を使用し、それによって、ALU115について、低減されたフットプリント及びより低い電力消費をサポートする。
融合加算器238は、暫定仮数値を正規化する、正規化・丸めステージ239に暫定仮数値を提供する。例えば、幾つかの実施形態では、正規化・丸めステージ239は、暫定仮数値をシフトして、仮数における任意の先行ゼロを除去する。幾つかの実施形態では、正規化・丸めステージ239は、暫定仮数値を調整して、暫定仮数値の整数部分を指定された値(例えば、1)にする。仮数に対して行われた調整に基づいて、正規化モジュールは、提供された暫定指数値を調整し、浮動小数点結果値の全体値を保存する。
正規化後、正規化・丸めステージ239は、結果を最も近い偶数値に丸める等のように、指定された丸め規則に基づいて結果を丸め、それによって最終結果245を生成する。
図3は、行列乗算器230~233によって生成された積の仮数をアライメントするソート・アライメントステージ120の一例を示す図である。図示した例では、各仮数は、レジスタ350、351、352、353、354と指定される対応するレジスタに記憶される。仮数は、上から下へオペランドサイズの降順で示されている。したがって、行列乗算器232によって生成されたオペランドは、最大オペランドであり(すなわち、最大値を有し)、対応する(M結果3と指定される)仮数がレジスタ350に記憶される。行列乗算器230によって生成されたオペランドは、2番目に大きいオペランドであり、対応する(M結果1と指定される)仮数がレジスタ351に記憶される。行列乗算器233によって生成されたオペランドは、2番目に大きいオペランドであり、対応する(M結果4と指定される)仮数がレジスタ352に記憶される。行列乗算器232によって生成されたオペランドは、2番目に大きいオペランドであり、対応する(M結果2と指定される)仮数がレジスタ353に記憶される。最後に、累算器234によって生成されたオペランドは最小オペランド(最小値を有するオペランド)であり、対応する(ACC結果と指定される)仮数がレジスタ354に記憶される。
オペランドをアライメントするために、ソート・アライメントステージ120は、各オペランドの指数をシフトし、各指数と最大オペランドとを一致させる。その後、ソート・アライメントステージ120は、対応する指数の変化を考慮して、各仮数をシフトする。したがって、例えば、オペランドの指数が2増加する場合、シフト・アライメントモジュール120は、対応する仮数を2ビット位置だけ右にシフトする。
異なる仮数の対するアライメントされる点の区切りは、線359によって表される。すなわち、線359は、全ての仮数がアライメントされる点を表す。最大オペランドの仮数より小さい各仮数は、仮数の幾つかの部分が線359の右にあるように右にシフトされる。これらの部分はグレーで塗りつぶされて示されており、仮数のスティッキービットを形成するために使用され、その後破棄される仮数のビットを示す。したがって、図示した例では、M結果1オペランドについて、ソート・アライメントステージ120がオペランドを右にシフトし、ビット355がスティッキービット生成モジュール360に提供されて、M結果1のスティッキービットを生成する。その後、ビット355が破棄され、加算中、融合加算器238によって使用されない。同様に、M結果4については、ビット356が対応するスティッキービットを形成するために使用され、その後破棄され、M結果2については、ビット357が対応するスティッキービットを形成するために使用され、その後破棄され、Acc結果については、ビット358が対応するスティッキービットを形成するために使用され、その後破棄される。
図示したように、ビット355~358を表す影付き領域は、異なるサイズであり、対応する各仮数について、異なる数のビットがシフトアウトされ破棄されることを示す。例えば、幾つかの実施形態では、ビット355は1ビットを表し、ビット356は3ビットを表し、ビット357は4ビットを表し、ビット358は8ビットを表す。更に、場合によっては、2つ以上のオペランドが最も大きい指数を有し、その結果、対応する仮数の2つ以上がソート・アライメント処理中にシフトされない。
図4は、幾つかの実施形態による、演算中に1つ以上のオペランドの一部を破棄することによって算術論理装置においてドット積演算を実行する方法400を示す図である。方法400は、図1のALU115における例示的な実装に関して説明される。ブロック402において、ALU115は、単精度オペランド又は倍精度オペランド等の指定された精度の浮動小数点オペランドを受信する。ブロック404において、乗算器230~233は、対応するオペランドを乗算して、対応する積を生成する。更に、累算器234は累算を実行して定数Cを生成する。
ブロック406において、ソート・アライメントステージ120は、積及び定数Cのうち何れが最大値を有するかを判定する。ブロック408において、ソート・アライメントステージ120は、全ての積及び定数Cが最大値の指数に一致する指数を有するように、各積及び定数Cの指数を調整する。その後、ソート・アライメントステージ120は、対応する指数の任意の変化に対応するように各仮数をシフトする。上述したように、シフト中に、1つ以上の仮数の下位ビットが、シフトアウトされ、仮数のスティッキービットを形成するために使用され、その後破棄される。ブロック410において、融合加算器238は、アライメントされた仮数を加算し、その後、正規化・丸めステージ239によって正規化され、丸められて、結果245を生成する。
本明細書で説明するように、幾つかの実施形態では、方法が、命令に応じて、算術論理装置(ALU)の対応する複数のステージを介して、複数のオペランドを使用して、複数の算術演算を処理装置のALUにおいて実行することと、複数のステージのうち第1のステージと第2のステージとの間で、複数のオペランドのうち第1のオペランドを低減することと、を含み、第1のオペランドを低減させることは、第1のオペランドの少なくとも一部を破棄することを含む。一態様では、本方法が、複数のステージのうち第1のステージと第2のステージとの間で、複数のオペランドのうち第2のオペランドを低減することを含み、第2のオペランドを低減することは、第2のオペランドの少なくとも一部を破棄することを含む。別の態様では、第1のオペランドの破棄された部分は、第2のオペランドの破棄された部分とは異なるサイズである。更に別の態様では、命令が積和命令である。更に別の態様では、第1のオペランドを低減することは、ALUのソート・アライメントステージにおいて第1のオペランドを低減することを含む。
一態様では、第1のオペランドを低減することは、第1のオペランドの仮数をシフトすることによって、第1のオペランドを低減し、第2のオペランドの仮数とアライメントすることを含む。別の態様では、第1のオペランドの仮数をシフトすることは、第2のオペランドが複数のオペランドのうち最大オペランドであると判定したことに応じて、第1のオペランドの仮数をシフトして第2のオペランドの仮数とアライメントすることを含む。更に別の態様では、本方法が、第1のオペランドの破棄された部分に基づいて第1のオペランドのスティッキービットを生成することを含む。更に別の態様では、本方法が、第1のオペランドのシフトされた仮数を第2のオペランドに加算することを含む。
幾つかの実施形態では、処理装置が、受信した命令に基づいて、複数のオペランドを使用して、対応する複数の算術演算を実行する複数のステージを含む算術論理装置(ALU)を含み、ALUが、複数のステージのうち第1のステージと第2のステージとの間で、複数のオペランドのうち第1のオペランドを低減することであって、第1のオペランドを低減することが、第1のオペランドの少なくとも一部を破棄することを含む。一態様では、ALUが、複数のステージのうち第1のステージと第2のステージとの間で、複数のオペランドのうち第2のオペランドを低減することであって、第2のオペランドを低減することが、第2のオペランドの少なくとも一部を破棄することを含む。別の態様では、第1のオペランドの破棄された部分が、第2のオペランドの破棄された部分とは異なるサイズである。
一態様では、命令が積和命令である。別の態様では、ALUが、第1のオペランドを低減するソート・アライメントステージを含む。更に別の態様では、ソート・アライメントステージが、第1のオペランドの仮数をシフトすることによって、第1のオペランドを低減し、第2のオペランドの仮数とアライメントさせる。更に別の態様では、ソート・アライメントステージが、第2のオペランドが複数のオペランドのうち最大オペランドであると判定したことに応じて、第1のオペランドの仮数をシフトして、第2のオペランドの仮数とアライメントさせる。別の態様では、ソート・アライメントステージが、第1のオペランドの破棄された部分に基づいて第1のオペランドのスティッキービットを生成する。更に別の態様では、ソート・アライメントステージが、第1のオペランドのシフトされた仮数を第2のオペランドに加算する加算器を含む。
幾つかの実施形態では、処理装置が、算術論理装置(ALU)を含み、ALUが、第1の算術演算を実行する第1のステージと、第1のオペランドの一部分を破棄することによって第1のステージによって生成された第1のオペランドを低減する第2のステージと、低減された第1のオペランドを使用して第2の算術演算を実行する第3のステージと、を含む。一態様では、第1の算術演算が乗算演算であり、第2の算術演算が加算演算である。
幾つかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装される。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶されるか、別の方法で明確に具体化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、命令及び特定のデータを含んでもよく、当該命令及び特定のデータは、1つ以上のプロセッサによって実行されると、上述した技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する。非一時的なコンピュータ可読記憶媒体は、例えば、磁気又は光ディスク記憶デバイス、フラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス(単数又は複数)等を含み得る。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈され若しくは別の方法で実行可能な他の命令形式で実装可能である。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
Claims (20)
- 命令[117]に応じて、処理装置[104]の算術論理装置(ALU)[115]において、複数のオペランドを使用して、前記ALUの対応する複数のステージを介して複数の算術演算を実行することと、
前記複数のステージのうち第1のステージ[230]と第2のステージ[238]との間で前記複数のオペランドのうち第1のオペランド[240]を低減することであって、前記第1のオペランドを低減することは、前記第1のオペランドの少なくとも一部[355]を破棄することを含む、ことと、を含む、
方法。 - 前記複数のステージのうち前記第1のステージと前記第2のステージとの間で前記複数のオペランドのうち第2のオペランドを低減することを更に含み、前記第2のオペランドを低減することは、前記第2のオペランドの少なくとも一部[356]を破棄することを含む、
請求項1の方法。 - 前記第1のオペランドの破棄された部分は、前記第2のオペランドの破棄された部分と異なるサイズである、
請求項2の方法。 - 前記命令は、積和命令である、
請求項1の方法。 - 前記第1のオペランドを低減することは、前記ALUのソート・アライメントステージ[120]において前記第1のオペランドを低減することを含む、
請求項4の方法。 - 前記第1のオペランドを低減することは、前記第1のオペランドの仮数をシフトして第2のオペランドの仮数とアライメントすることによって、前記第1のオペランドを低減することを含む、
請求項5の方法。 - 前記第1のオペランドの仮数をシフトすることは、前記第2のオペランドが前記複数のオペランドのうち最大オペランドであると判定したことに応じて、前記第1のオペランドの仮数をシフトして前記第2のオペランドの仮数とアライメントすることを含む、
請求項6の方法。 - 前記第1のオペランドの破棄された部分に基づいて、前記第1のオペランドのスティッキービットを生成することを更に含む、
請求項6の方法。 - 前記第1のオペランドのシフトされた仮数を前記第2のオペランドに加算することを更に含む、
請求項6の方法。 - 処理装置[104]であって、
受信した命令[117]に基づいて、複数のオペランドを使用して、対応する複数の算術演算を実行する複数のステージを含む算術論理装置(ALU)[115]を備え、
前記ALUは、前記複数のステージのうち第1のステージ[230]と第2のステージ[238]との間で前記複数のオペランドのうち第1のオペランド[240]を低減することであって、前記第1のオペランドを低減することは、前記第1のオペランドの少なくとも一部[355]を破棄することを含む、ことを行うように構成されている、
処理装置[104]。 - 前記ALUは、前記複数のステージのうち前記第1のステージと前記第2のステージとの間で前記複数のオペランドのうち第2のオペランドを低減することであって、前記第2のオペランドを低減することは、前記第2のオペランドの少なくとも一部[356]を破棄することを含む、ことを行うように構成されている、
請求項10の処理装置。 - 前記第1のオペランドの破棄された部分は、前記第2のオペランドの破棄された部分と異なるサイズである、
請求項11の処理装置。 - 前記命令は、積和命令である、
請求項10の処理装置。 - 前記ALUは、前記第1のオペランドを低減するソート・アライメントステージ[120]を含む、
請求項13の処理装置。 - 前記ソート・アライメントステージは、前記第1のオペランドの仮数をシフトして第2のオペランドの仮数とアライメントすることによって、前記第1のオペランドを低減する、
請求項14の処理装置。 - 前記ソート・アライメントステージは、前記第2のオペランドが前記複数のオペランドのうち最大オペランドであると判定したことに応じて、前記第1のオペランドの仮数をシフトして前記第2のオペランドの仮数とアライメントする、
請求項15の処理装置。 - 前記ソート・アライメントステージは、前記第1のオペランドの破棄された部分に基づいて、前記第1のオペランドのスティッキービットを生成する、
請求項15の処理装置。 - 前記ソート・アライメントステージは、前記第1のオペランドのシフトされた仮数を前記第2のオペランドに加算する加算器を含む、
請求項15の処理装置。 - 処理装置[104]であって、
算術論理装置(ALU)[115]を備え、
前記ALU[115]は、
第1の算術演算を実行する第1のステージ[230]と、
第1のオペランドの一部[355]を破棄することによって、前記第1のステージによって生成された第1のオペランド[240]を低減する第2のステージ[120]と、
低減された第1のオペランドを使用して第2の算術演算を実行する第3のステージ[238]と、を備える、
処理装置[104]。 - 前記第1の算術演算は乗算演算であり、前記第2の算術演算は加算演算である、
請求項19の処理装置。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063044544P | 2020-06-26 | 2020-06-26 | |
US63/044,544 | 2020-06-26 | ||
US17/029,836 | 2020-09-23 | ||
US17/029,836 US11720328B2 (en) | 2020-06-26 | 2020-09-23 | Processing unit with small footprint arithmetic logic unit |
PCT/US2021/038881 WO2021262970A1 (en) | 2020-06-26 | 2021-06-24 | Processing unit with small footprint arithmetic logic unit |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023531917A true JP2023531917A (ja) | 2023-07-26 |
Family
ID=79031934
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022578594A Pending JP2023531917A (ja) | 2020-06-26 | 2021-06-24 | 小さいフットプリントの算術論理装置を有する処理装置 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11720328B2 (ja) |
EP (1) | EP4172753A1 (ja) |
JP (1) | JP2023531917A (ja) |
KR (1) | KR20230025897A (ja) |
CN (1) | CN115885250A (ja) |
WO (1) | WO2021262970A1 (ja) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5757686A (en) * | 1995-11-30 | 1998-05-26 | Hewlett-Packard Company | Method of decoupling the high order portion of the addend from the multiply result in an FMAC |
US7487196B1 (en) * | 2003-12-16 | 2009-02-03 | Altera Corporation | Methods and apparatus for implementing a saturating multiplier |
US9740487B2 (en) | 2013-09-06 | 2017-08-22 | Huawei Technologies Co., Ltd. | Method and apparatus for asynchronous processor removal of meta-stability |
US10817587B2 (en) | 2017-02-28 | 2020-10-27 | Texas Instruments Incorporated | Reconfigurable matrix multiplier system and method |
US10545727B2 (en) | 2018-01-08 | 2020-01-28 | International Business Machines Corporation | Arithmetic logic unit for single-cycle fusion operations |
US11093580B2 (en) | 2018-10-31 | 2021-08-17 | Advanced Micro Devices, Inc. | Matrix multiplier with submatrix sequencing |
-
2020
- 2020-09-23 US US17/029,836 patent/US11720328B2/en active Active
-
2021
- 2021-06-24 CN CN202180045551.8A patent/CN115885250A/zh active Pending
- 2021-06-24 WO PCT/US2021/038881 patent/WO2021262970A1/en unknown
- 2021-06-24 EP EP21828833.0A patent/EP4172753A1/en active Pending
- 2021-06-24 JP JP2022578594A patent/JP2023531917A/ja active Pending
- 2021-06-24 KR KR1020237002242A patent/KR20230025897A/ko unknown
-
2023
- 2023-07-07 US US18/219,268 patent/US20240143283A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20230025897A (ko) | 2023-02-23 |
US20210405968A1 (en) | 2021-12-30 |
WO2021262970A1 (en) | 2021-12-30 |
EP4172753A1 (en) | 2023-05-03 |
CN115885250A (zh) | 2023-03-31 |
US11720328B2 (en) | 2023-08-08 |
US20240143283A1 (en) | 2024-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110036368B (zh) | 用于执行算术运算以累加浮点数的装置及方法 | |
US20200334038A1 (en) | Variable format, variable sparsity matrix multiplication instruction | |
US11188330B2 (en) | Vector multiply-add instruction | |
JP2024023629A (ja) | 区分線形近似を用いる深層ニューラルネットワークアーキテクチャ | |
US9557995B2 (en) | Data processing apparatus and method for performing segmented operations | |
US20060041610A1 (en) | Processor having parallel vector multiply and reduce operations with sequential semantics | |
CN111767516A (zh) | 用于利用所选择的舍入来执行浮点加法的系统和方法 | |
TWI733798B (zh) | 在執行向量操作時管理位址衝突的設備及方法 | |
CN112148251A (zh) | 跳过无意义的矩阵运算的系统和方法 | |
KR20220031098A (ko) | 부호형 다중-워드 곱셈기 | |
CN114691217A (zh) | 用于8位浮点矩阵点积指令的装置、方法和系统 | |
US11237833B2 (en) | Multiply-accumulate instruction processing method and apparatus | |
Li et al. | A system-level solution for low-power object detection | |
CN115718622B (zh) | 一种arm架构下的数据处理方法、装置及电子设备 | |
CN111752605A (zh) | 使用浮点乘法-累加结果的模糊-j位位置 | |
JP2023531917A (ja) | 小さいフットプリントの算術論理装置を有する処理装置 | |
JP7461953B2 (ja) | 混合精度演算のプロセッシングユニット | |
US20220300326A1 (en) | Techniques for balancing workloads when parallelizing multiply-accumulate computations | |
CN104823153A (zh) | 引导变化预测器逻辑 | |
TW202223633A (zh) | 用於實施16位元浮點矩陣點積指令的裝置、方法及系統 | |
US11789701B2 (en) | Controlling carry-save adders in multiplication | |
US20230100785A1 (en) | Priority encoder-based techniques for computing the minimum or the maximum of multiple values | |
Le-Huu et al. | Towards a vliw architecture for the 32-bit digital signal processor core | |
GB2596864A (en) | Machine learning computer | |
Le-Huu et al. | A micro-architecture design for the 32-bit VLIW DSP processor core |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230221 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240522 |