JP2022143544A - 演算処理装置 - Google Patents
演算処理装置 Download PDFInfo
- Publication number
- JP2022143544A JP2022143544A JP2021044100A JP2021044100A JP2022143544A JP 2022143544 A JP2022143544 A JP 2022143544A JP 2021044100 A JP2021044100 A JP 2021044100A JP 2021044100 A JP2021044100 A JP 2021044100A JP 2022143544 A JP2022143544 A JP 2022143544A
- Authority
- JP
- Japan
- Prior art keywords
- bypass
- operations
- sections
- arithmetic processing
- lanes
- 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
- 239000000872 buffer Substances 0.000 claims abstract description 39
- 239000011159 matrix material Substances 0.000 claims description 25
- 238000011144 upstream manufacturing Methods 0.000 claims description 9
- 230000001419 dependent effect Effects 0.000 claims description 8
- 230000009467 reduction Effects 0.000 abstract description 2
- 230000002401 inhibitory effect Effects 0.000 abstract 1
- 230000002250 progressing effect Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 25
- 238000000034 method Methods 0.000 description 11
- 230000000694 effects Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 230000006872 improvement Effects 0.000 description 5
- 101150049453 tagD gene Proteins 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 101150007587 tpx gene Proteins 0.000 description 3
- 101100534223 Caenorhabditis elegans src-1 gene Proteins 0.000 description 2
- 101100534231 Xenopus laevis src-b gene Proteins 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 101001126836 Homo sapiens N-acetylmuramoyl-L-alanine amidase Proteins 0.000 description 1
- 102100030397 N-acetylmuramoyl-L-alanine amidase Human genes 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000002939 conjugate gradient method Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 239000004148 curcumin Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/35—Indirect addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
本発明は、演算処理装置に関する。
スーパーコンピュータなどを用いる高性能計算分野において、より現実のアプリケーションに近い性能を測るベンチマークとして、High-Performance CG(HPCG)が注目されている。HPCGは、Conjugate Gradient(CG;共役勾配)法のベンチマークである。
HPCGの計算は、マルチグリッド前処理付き共役勾配法(MGCG)による連立一次方程式の求解で、疎行列Aの行と密ベクトルxとの内積が計算の8割程度を占める。HPCGは27点ステンシルに基づくため、疎行列Aの1行の非ゼロ要素数は27と非常に少ない。そのため疎行列Aは、通常Compressed Sparse Row(CSR)形式で格納される。
この内積における密ベクトルxに対するロードは、疎行列Aの行の26~27の非ゼロ要素に対応する要素を拾い集めることになり、3要素ずつ飛び飛びのアクセスとなる。このような、アドレスのリストを介した間接・不連続のロード/ストアを、ギャザー/スキャッタという。
Ryota Shioya, Kazuo Horio, Masahiro Goshima, Shuichi Sakai 著、"Register Cache System Not for Latency Reduction Purpose"、Proceedings of the 43rd Annual IEEE/ACM International Symposium on Microarchitecture (MICRO43)、Pages 301-312、2010年12月
Junji Yamada, Ushio Jimbo, Ryota Shioya, Masahiro Goshima, Shuichi Sakai著、"Skewed Multistaged Multibanked Register File for Area and Energy Efficiency"、IEICE Transactions on Information and Systems、Vol. E100.D、Issue 4、Pages 822-837、2017年4月
Junji Yamada, Ushio Jimbo, Ryota Shioya, Masahiro Goshima, Shuichi Sakai 著、"Bank-Aware Instruction Scheduler for a Multibanked Register File"、IPSJ Journal of Information Processing、Vol. 24、Pages 696-705、2018年9月
しかしながら、従来のプロセッサコアはギャザー/スキャッタ処理の効率が悪いため、ギャザー/スキャッタ処理の発生により、処理速度が低下してしまうおそれがある。
1つの側面では、バンク衝突やキャッシュミスなどの処理を継続できない事象が発生した場合でも、パイプラインストールや命令のキャンセルを回避し処理速度の低下を抑えることを目的とする。
1つの側面では、演算処理装置は、命令の要素演算を毎サイクル高々1つ処理する1以上のレーンと、1以上のレーンに要素演算を発行する要素演算発行ユニットと、を備え、全体は複数のエントリを持つバッファによって複数のセクションへと分離され、要素演算の処理を継続できなくなった1以上のセクションは処理を停止する一方、他のセクションは、下流のセクションのそれぞれへと進む要素演算を直後のバッファに格納することによって、処理を継続する。
1つの側面では、あるセクションでバンク衝突やキャッシュミスなどの処理を継続できない事象が発生した場合でも、パイプラインストールや要素演算のキャンセルを回避し処理速度の低下を抑えることができる。
〔A〕関連例
近年の高性能プロセッサコアの高いピーク性能は、Single Instruction/Multiple Data stream(SIMD)ユニットによって実現されることがある。SIMDでは、v要素を1本のレジスタにパックし、1命令でv個の演算を同時に実行する。これにより、制御ユニットはそのままでも、ピーク性能をv倍にすることができる。例えば、512b SIMDでは、64b(倍精度浮動小数点数)×8として使用した場合、演算性能は8倍となる。
近年の高性能プロセッサコアの高いピーク性能は、Single Instruction/Multiple Data stream(SIMD)ユニットによって実現されることがある。SIMDでは、v要素を1本のレジスタにパックし、1命令でv個の演算を同時に実行する。これにより、制御ユニットはそのままでも、ピーク性能をv倍にすることができる。例えば、512b SIMDでは、64b(倍精度浮動小数点数)×8として使用した場合、演算性能は8倍となる。
SIMDのロード/ストアでは、対象要素がメモリ上で連続する場合には、連続するv要素を一度にアクセスできる。このような連続ロード/ストア性能はv倍となり、演算と同じSIMD効果を発揮することができる。
一方、SIMDのロード/ストアの対象要素がメモリ上で不連続の場合には、SIMDの効果を発揮することができない。アドレスのリストを介した間接・不連続のロード/ストアを、ギャザー/スキャッタという。ギャザー/スキャッタでは、連続するv要素にアクセスしてもそのv要素すべてが使用できることは稀であり、ギャザー/スキャッタの性能はv倍よりもはるかに低い。
図1は、SIMDの連続ロード及びギャザーを説明する図である。
符号A11~A14に示す連続ロード処理では、符号A11に示すように、一次データキャッシュ上で連続したアドレスに格納された4要素を読み出す。そこで、符号A12に示すように、1つのアクセス単位[1] によって4要素を含むブロックが読み出される。そして、符号A13に示すように4要素のSIMD幅であるレジスタファイルに4要素が書き込まれ、符号A14に示すようにレジスタファイルに書き込まれた4要素が実行ユニットによって使用される。
符号A21~A24に示すギャザー処理では、符号A21に示すように、一次データキャッシュ上で不連続のアドレスに格納された要素を読み出す。この場合、4要素を一度に読み出すことはできず、符号A22に示すように、アクセス単位[1]~[4] によって4要素を含む4ブロックを読み出す必要がある。そして、符号A23に示すようにシフタを介してレジスタファイルに4要素が書き込まれ、符号A24に示すようにレジスタファイルに書き込まれた4要素が実行ユニットによって使用される。
任意のアドレスのv要素にアクセスできるマルチポートメモリは、面積及びエネルギーがv2に比例して増大してしまう。そのため、ギャザー/スキャッタ性能も演算性能と同じくv倍にするためには、疑似マルチポート化としてのマルチバンク化を行うことが想定される。
図2は、SIMDのマルチバンク化された一次データキャッシュにおけるギャザーを説明する図である。
符号A31~A34に示すギャザー処理では、符号A31に示すように、一次データキャッシュが#0~#3の4バンクに分割されている。アドレスが不連続であっても、各バンク#0~#3のそれぞれから最大4要素を同時に読み出すことができる。符号A32に示すように、1つのアクセス単位[1] によって一度に4要素を読み出すことができる。そして、符号A33に示すように、シフタではなくスイッチを介して、レジスタファイルに4要素が書き込まれる。その後、符号A34に示すようにレジスタファイルに書き込まれた4要素が実行ユニットによって使用される。
しかし、符号A41においては、2要素がバンク#2に格納されており、バンク衝突(別言すれば、バンク競合)が発生している。この2要素を同時に読み出すことはできず、処理速度が低下するおそれがある。
図3は、バンク衝突の確率を例示するグラフである。
バンク衝突の確率は、アクセスされるバンクがランダムである場合、次の数式(1)によって表される。なお、bはバンク数であり、vは要素数である。
例えば、要素数v=16に対して、2倍の数のバンク数32を用意した場合には、P(32,16)=99.0%の確率でバンク衝突が発生する。衝突確率を十分に低くするためには、数百~数千のバンクが必要であり、非現実的である。
〔B〕実施形態
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
〔B-1〕前提条件
図4は、コアの基本的な構造を模式的に示すブロック図である。
図4は、コアの基本的な構造を模式的に示すブロック図である。
符号B1~B3に示すフロントエンドパイプラインは、例えば2つのレーン#A,#Bを有し、命令をフェッチして、micro-Operation(μOP;マイクロオップ)を要素演算発行ユニットに供給する。具体的には、符号B1に示す命令キャッシュから命令フェッチを行い、符号B2に示すリネームロジックでリネーム(別言すれば、命令解析)を行い、μOPを生成する。そして、符号B3において、生成されたμOPを要素演算発行ユニットに格納する。
命令は、Instruction Set Architecture(ISA;命令セットアーキテクチャ)で定義され、主記憶装置上のバイナリコード中から命令キャッシュ上までキャッシュされ、マシンではフェッチの対象となる。
μOPは、x86やSVEなどにある複雑な命令を、複数の簡単な処理に分解した単位である。μOPは、コア内でフェッチされた命令から変換され、スケジューリングの対象となる。SIMD命令からは、SIMD μOPが生成される。なお、μOPを用いないコアでは、1命令に対してそれと等価なμOPが1つ生成されると解してよい。
符号B4に示す要素演算発行ユニットは、μOPをスケジュールし、適切なタイミングで要素演算をバックエンドパイプラインに投入する。バックエンドパイプラインに投入することを発行と言う。
符号B5~B9に示すバックエンドパイプラインは、例えば3つのレーン#1~#3を有し、発行された要素演算を処理する。具体的には、符号B5に示す各レーン#1~#3で要素演算の発行を行い、符号B6に示す各レーンでレジスタファイルの読み出しを行い、符号B7に示す各レーン#1~#3の実行ユニットで要素演算の実行を行い、符号B8に示すレーン#3の実行ユニットで要素演算の実行を行い、符号B9に示す各レーン#1~#3でレジスタファイルへの書き戻しを行う。
要素演算は、バックエンドパイプラインのレーンの処理の単位である。SIMDの場合には、1つのμOPがレーンの幅の要素演算を複数持つ。SIMDではないスカラの場合には、1つのμOPがそれと等価な要素演算を1つ持つと解してよい。バックエンドパイプラインの1つのレーンに対して、毎サイクル高々1つの要素演算が発行され、1つのレーンは命令の要素演算を毎サイクル高々1つパイプライン処理する。また、1つの要素演算が再びSIMD型であってもよく、例えば64bレーンの場合には16b×4などのSIMD型要素演算を処理してよい。
〔B-2〕Out-of-Stepバックエンドパイプライン
図5は、図6におけるOut-of-Stepバックエンドパイプライン1と比較するためのIn-Stepバックエンドパイプライン2を模式的に示すブロック図である。
図5は、図6におけるOut-of-Stepバックエンドパイプライン1と比較するためのIn-Stepバックエンドパイプライン2を模式的に示すブロック図である。
In-Stepバックエンドパイプライン2では、符号C8に示されるように、論理的には全レーンにまたがるパイプラインレジスタによって連続する複数のステージに分割されている。そのため、In-Stepバックエンドパイプライン2は、全体がv個の要素演算を並列に処理する1本のパイプラインであり、バックエンドパイプライン全体が進むか止まるかのいずれかとなる。その結果、要素演算の空間・時間的位置関係は、発行される際に決められたまま変更されることがない。
1以上のレーンの一部又は全部は、SIMD命令の演算に対応してよい。図5に示す例では、レーン#1,#2がスカラ構成であり、レーン#3,#4がSIMD構成である。符号C1に示すように、要素演算発行ユニットから、レーン#1,#2に対してそれぞれ異なるμOPから生成された要素演算が発行されると共に、レーン#3,#4に対しては1つのμOPから生成された2つの要素演算が発行される。
符号C2,C3に示すように、レーン#1~#4でレジスタ読み出しが2ステージにわたって行われる。
符号C4に示すように、レーン#1,#2ではそれぞれ異なる実行ユニットで要素演算が実行されると共に、レーン#3,#4ではSIMD実行ユニットで要素演算が実行される。符号C5に示すように、レーン#2で演算が行われると共に、レーン#3,#4ではSIMD実行ユニットで要素演算が実行される。
そして、符号C6,C7に示すように、レーン#1~#4でレジスタ書き戻しが2ステージにわたって行われる。
バックエンドパイプラインでは、キャッシュミスやバンク衝突等、要素演算の処理を継続できない事象が発生することがある。キャッシュミスやバンク衝突等への対処が終わるまで、該当の要素演算は次段の処理に進むことができない。
In-Stepバックエンドパイプライン2では、キャッシュミスやバンク衝突等、要素演算の処理を継続できない事象が発生した場合でも、既に発行された要素演算間の空間・時間的位置関係を変更しない。
要素演算の処理を継続できない事象の発生時にパイプライン全体を停止させることをパイプラインストールという。パイプラインストールでは、ストールの前後で、要素演算間の位置関係はそのままに保たれる。
一方、該当の要素演算とそれに依存する要素演算、もしくは、該当の要素演算と後続のすべての要素演算とをキャンセルし、再発行、すなわち、発行からやり直す方法もある。この場合、キャンセルされなかった要素演算の位置関係はそのままに保たれる一方、キャンセル・再発行された要素演算間の位置関係はゼロから再構築されることになる。この場合も、既に発行された要素演算間の位置関係が変更されるのではない。
パイプラインストール及び要素演算のキャンセルのいずれの場合でも、キャッシュミスやバンク衝突等が1つでも発生すれば、多くの要素演算に影響が及ぶ。コアの規模が大きいほど、影響は相対的に大きくなる。
図6は、実施形態におけるOut-of-Stepバックエンドパイプライン1を模式的に示すブロック図である。
Out-of-Stepは、In-Stepの否定・補集合となる。Out-of-Stepバックエンドパイプライン1(別言すれば、演算処理装置)において、要素演算は、発行された際の空間・時間的位置関係を守らない。
1以上のレーンの一部又は全部は、SIMD命令の演算に対応してよい。図6に示す例では、図5に示したIn-Stepバックエンドパイプライン2と同様に、レーン#1,#2がスカラ構成であり、レーン#3,#4がSIMD構成である。符号D1に示すように、要素演算発行ユニット100から、レーン#1,#2に対してそれぞれ異なるμOPから生成された要素演算が発行されると共に、レーン#3,#4に対しては1つのμOPから生成された2つの要素演算が発行される。発行された要素演算は、それぞれバッファ101に格納される。
符号D2,D3に示すように、レーン#1~#4でレジスタ読み出しが2ステージにわたって行われる。レジスタ読み出し結果は、実行ユニットの直前のバッファ103に格納される。
符号D4に示すように、レーン#1,#2ではそれぞれ異なるスカラ実行ユニットで要素演算が実行されると共に、レーン#3,#4ではSIMD実行ユニットで要素演算が実行される。符号D5に示すように、レーン#2ではスカラ実行ユニットで要素演算が実行されると共に、レーン#3,#4ではSIMD実行ユニットで要素演算が実行される。要素演算の実行結果は、レジスタ書き戻しの直前のバッファ104に格納される。
そして、符号D6,D7に示すように、レーン#1~#4でレジスタ書き戻しが2ステージにわたって行われる。
Out-of-Stepバックエンドパイプライン1において、要素演算発行ユニット100は、In-Stepバックエンドパイプライン2と同じでよく、要素演算の処理を継続できなくなる事象が発生しないと仮定した場合に、レジスタファイル又はバイパスによってデータの受け渡しが可能なタイミングで、依存関係にある要素演算を発行してよい。一方、Out-of-Stepバックエンドパイプライン1の各レーンは、要素演算発行ユニット100によって発行された際の要素演算の位置関係を任意に変更して正しく処理する。
図6のOut-of-Stepバックエンドパイプライン1におけるステージ境界としてのバッファ101,103,104は、単一エントリのパイプラインレジスタではなく、複数エントリからなるバッファである。
全体は、バッファ101,103,104によって、複数のセクションへと分離される。
あるセクションにキャッシュミスやバンク衝突等により処理を継続できない要素演算がある場合には、該当のセクションは処理を停止する。これを、セクションストールと呼ぶ。一方、バッファを隔てた上流のセクションは処理を継続することができる。上流のセクションの処理を終えて、ストールするセクションへと進む要素演算があれば、それを間のバッファに格納すればよい。図5に示したIn-Stepバックエンドパイプライン2では、このバッファが単一エントリのパイプラインレジスタ(符号C8参照)であるため、仮に上流が停止しなければ、要素演算の書き潰しが起こる。すなわち、Out-of-Stepバックエンドパイプライン1では、各セクションが独立にストールすることができる。Out-of-Stepバックエンドパイプライン1におけるパイプラインレジスタ102は、In-Stepバックエンドパイプライン2の符号C8におけるパイプラインレジスタとは異なり、全レーンにまたがるのではなく、セクションごとに独立に動作する。
セクションへの分離は、レーン境界に縛られない。例えば、バッファ101の読み出しとバッファ103の書き込みは、2つあるソースオペランドごとにできるため、レジスタ読み出しのセクションはレーンごとに2つになり、2つのソースオペランド読み出しが同時に行われないことを許す。一方、バッファ104の読み出しはレーン#3とレーン#4とで同時に行われ、レーン#3とレーン#4とのレジスタ書き戻しのセクションはレーン#3とレーン#4とにまたがっている。
Out-of-Stepバックエンドパイプライン1におけるバッファ101,103,104は、First In-First Out(FIFO)バッファであってよく、その場合、レーン内では要素演算の追い越しは起こらない。
すなわち、Out-of-Stepバックエンドパイプライン1は、命令の要素演算を毎サイクル高々1つの処理する1以上のレーンと、1以上のレーンに要素演算を発行する要素演算発行ユニット100とを備える。全体はバッファ101,103,104によって、複数のセクションへと分離される。要素演算の処理を継続できなくなった1以上のセクションは処理を停止する一方、他のセクションは、下流のセクションのそれぞれへと進む要素演算を直後のバッファへと格納して、要素演算の処理を継続する。
レジスタファイルと一次データキャッシュとのいずれか又は両方がマルチバンク構成であり、マルチバンク構成内におけるバンク衝突が要素演算の処理を継続できなくなる要因の1つとされてよい。
Out-of-Stepバックエンドパイプライン1においては、要素演算発行ユニット100によるスケジューリングの結果を遅延させるだけであるため、ハードウェアコストを極小に抑えることができる。
図7は、図6に示したOut-of-Stepバックエンドパイプライン1の効果を説明するためのブロック図である。
符号E1に示すように6つのバンク#1~#6を有するマルチバンク構成の一次データキャッシュを持つOut-of-Stepバックエンドパイプライン1において、アクセスするバンクをランダムに決定する例を、図7を用いて説明する。
各レーン#1~#3のそれぞれに対して、符号E2に示すようにa1~a3の要素演算が発行された後、符号E3に示すようにb1~b3の要素演算が発行された後、符号E4に示すようにc1~c3の要素演算が発行されている。
図8は、図6に示したOut-of-Stepバックエンドパイプライン1の効果を説明するためのダイヤグラムである。各時刻において、発行された要素演算が#1~#6のどのバンクにいるかを示している。
符号F11~F15に示すように、In-Stepバックエンドパイプライン2においては、5回のバンク衝突が発生して、全ての要素演算の完了までに14サイクルが消費されている。衝突確率はP(6,3)=0.44あり、性能低下が44%となる。
一方、符号F21~F25に示すように、Out-of-Stepバックエンドパイプライン1においては、In-Stepバックエンドパイプライン2と同じく5回のバンク衝突が発生しているものの、全ての要素演算の完了まで10サイクルしか消費しておらず、性能低下はほぼ0となる。衝突確率はIn-Stepバックエンドパイプライン2と同じくP(6,3)=0.44であるが、バンク衝突が発生しても同じサイクルで次の要素演算を処理しているためである。
〔B-3〕バイパス制御
Out-of-Stepバックエンドパイプライン1では、セクションストールによる遅れのために位置関係が変わってしまった要素演算間で実行結果を正しくバイパスする。
Out-of-Stepバックエンドパイプライン1では、セクションストールによる遅れのために位置関係が変わってしまった要素演算間で実行結果を正しくバイパスする。
要素演算を実行する実行ユニットよりも上流に位置するバッファおよびパイプラインレジスタのエントリの全部又は一部は、ソースオペランドをバイパスから受信する機能を有してよい。
実行ユニットの直前のバッファ103は、遅れてバイパスされた実行結果をソースオペランドとして待ち合わせる二次的な要素演算発行ユニットとして機能する。バッファ103がFIFOであれば、先頭にある要素演算のソースオペランドが揃っていれば、実行ユニットにおいて実行すればよい。
図9は、図6に示したOut-of-Stepバックエンドパイプライン1における分散CAMを用いたバイパス制御を説明するための図である。
図9に示すバックエンドパイプラインにおいては、符号J1に示すバイパス元の実行ユニットが、符号J2に示すバイパスラインを介して、符号J3に示すバイパス先の実行ユニットに接続されている。バイパス先の回路では、バイパス制御回路105が、マルチプレクサ(mux)106を制御することにより、バイパス制御を行う。符号J1に示すバイパス元の回路は、実行結果に、それを一意に識別するデスティネーションタグtagDを付して、バイパスラインJ2に送出する。バイパス制御回路105が、流されてきたtagDとソースタグtagLと比較し、一致すれば、マルチプレクサ106がtagDに対応する実行結果を取り込む。符号105と106とは、タグをキーとするCAM(Content-Addressable Memory)を構成している。
バイパス制御は、バイパスを介して送受信を行う2つの要素演算のそれぞれがバッファもしくはパイプラインレジスタのどのエントリにあるかを、セクションストールに応じて追跡することによって行ってもよい。
そしてセクションストールに応じた追跡は、2つの要素演算間のバイパスを介した送受信の必要性の関係を行列の形で表現した依存行列を用いて行ってよい。
図10は、図6に示したOut-of-Stepバックエンドパイプライン1の依存行列を用いたバイパス制御を説明するためのブロック図である。
符号K1に1レーンからなるOut-of-Stepバックエンドパイプライン1のブロック図を示す。符号K1に示すように、レーンを流れる要素演算は、オプコードop-code、ソースオペランドsrc 1及びsrc 2、デスティネーションオペランドdstの各フィールドを有する。符号K1に示すブロック図では、レジスタ読み出し、実行、レジスタ書き戻しのそれぞれが1ステージであり、各々3エントリのバッファによって、各ステージがそれぞれセクションへと分離されている。なお、符号K11は、バイパス可能な期間を1サイクル延長するために実行結果を1サイクルの間とっておくためのパイプラインレジスタを示す。
符号K2では、符号K1に示したdstとsrc 1との依存行列を示している。その他に、dstとsrc 2との依存行列がある。
符号K2では、横軸(生産者)の上部には、符号K1のブロック図のdstに係わる部分が抜き出され、左に90°回転して描かれている。縦軸(消費者)の右側には、同じく符号K1のブロック図のsrc 1に係わる部分が抜き出されて描かれている。
2つの軸の左下が依存行列である。縦軸(消費者)/横軸(生産者)は、消費者/生産者の要素演算の当該レーン内のバッファ及びパイプラインレジスタのエントリを示す。上流から数えてp番目のエントリに格納されている要素演算と、同じく上流から数えてc番目のエントリに格納される要素演算とが、前者のdstと後者のsrc 1とを介して依存関係にあり、バイパスを通して実行結果を送受信する必要がある場合、依存行列のc行p列の要素が“1”にセットされる。
あるソースオペランドに対して、それと依存関係にあるデスティネーションオペランドは高々1つなので、ある行においてセットされる要素も高々1つ、すなわち、ワンホットとなる。依存行列は、タグ比較器のアレイである依存行列生成回路によって生成されてよい。
図11は、依存行列生成回路を模式的に示すブロック図である。
バイパスが必要であることを表す“1”は、図11に示すような依存行列生成回路によって生成され、依存行列においてレジスタ読み出し前のバッファにあたる行のいずれかのマスに現れる。
依存行列は、セクションストールの状況に合わせて、行/列方向同時に、二次元的にシフトされる。その結果、依存関係を表す“1”は、そこにとどまるか、右か右下か下に移動する。
生産者が実行ステージを通過するサイクル以降で、バイパスが行われる。その際、各行はバイパスからのマルチプレクサのワンホットの選択入力そのものとなる。
In-Stepバックエンドパイプライン2では、生産者と消費者との位置関係が変わらないため、バイパスを行うタイミングの制約が厳しい。
一方、Out-of-Stepバックエンドパイプライン1では、バイパスのために生産者と消費者との位置関係を変えることができる。生産者から実行結果を受け取っていない消費者は、実行ユニットの直前のバッファ103で待っているので、そこにバイパスできればよい。
また、使用頻度が低いバイパスは省かれてもよい。あるエントリへの第1のバイパスを省略しても、より下流のエントリにおいて第1のバイパス以外のバイパスからソースオペランドを受信できると保証される場合に、第1のバイパスが省略されてよい。
図10に示した符号K2の依存行列のマスごとに、バイパスのありなしを設定することができる。依存行列においてバイパスありのマスに“1”があるサイクルにおいてバイパスが行われる。
必要なバイパスを必ず受けられるようにするためには、依存行列においてすべての“1”が必ず一つ以上のバイパスありのマスを通過するように、バイパスありのマスを配置すればよい。
そしてそのためには、符号K21の右端の列のマスをバイパスありに設定すれば十分である。
ただし符号K21の右端の列においてバイパスを受けるということは、依存関係にある2要素演算が必ず2サイクル以上空けて実行されることを意味する。したがって性能上は、符号K2において“a”と“b”もしくは“c”で示したマスにもバイパスがあった方がよい。“a”は依存する2要素演算が連続する2サイクルにback-to-backに実行される場合の位置となる。“b”と“c”とは1サイクル空けて実行される場合の位置である。位置としては“c”の方が柔軟だが、“b”の方が低コストとなる。
図11に示すような依存行列生成回路がソースオペランドをバイパスから受け取る必要があると判定した場合には、レジスタへのアクセスは必要ない。したがって、レジスタファイルもマルチバンク化する場合は、依存行列生成回路の判定に従ってレジスタファイルへの無駄なアクセスを省略してよい。
〔C〕効果
図12は、HPCGの内積部の性能見積を説明するためのグラフである。
図12は、HPCGの内積部の性能見積を説明するためのグラフである。
図12に示すグラフにおいて、横軸はSIMD幅vを示し、縦軸は性能向上比を示す。なお、バンク数は、アクセス数の2倍の4vとする。符号M1に示す一点鎖線は従来のスーパーコンピュータにおけるHPCGの内積部の性能見積を示し、符号M2に示す破線は従来のスーパーコンピュータにマルチバンク一次データキャッシュを採用した場合のHPCGの内積部の性能見積を示す。また、符号M3に示す実線は、従来のスーパーコンピュータにマルチバンク一次データキャッシュに加えてOut-of-Stepバックエンドパイプライン1を採用した場合のHPCGの内積部の性能見積を示す。
符号M1に示す場合では、ギャザー性能は一定のため、SIMD幅vに対して性能向上比は殆ど向上しない。また、符号M2に示す場合では、符号M1に示した場合と比較して2倍程度の性能向上比を得られるが、大きいSIMD幅vに対してはバンク衝突により性能向上比が向上しない。
一方、符号M3に示す場合では、大きいSIMD幅vに対しても、線形に性能向上比を向上させることができる。
上述した実施形態の一例におけるOut-of-Stepバックエンドパイプライン1によれば、例えば、以下の作用効果を奏することができる。
Out-of-Stepバックエンドパイプライン1(別言すれば、演算処理装置)は、命令の要素演算を毎サイクル高々1つ処理する1以上のレーンと、1以上のレーンのそれぞれに毎サイクル高々1つの要素演算を発行する要素演算発行ユニット100と、を備える。全体は、バッファによって複数のセクションへと分離される。要素演算の処理を継続できなくなった1以上のセクションは処理を停止する一方、他のセクションは下流のセクションのそれぞれへと進む要素演算を直後のバッファに格納しつつ動作を継続する。
これにより、あるセクションでバンク衝突やキャッシュミスが発生した場合でも、ストールや要素演算のキャンセルを回避し処理速度の低下を抑えることができる。
〔D〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
1 :Out-of-Stepバックエンドパイプライン
100 :要素演算発行ユニット
101 :バッファ(レジスタ読み出しの直前)
102 :パイプラインレジスタ
103 :バッファ(実行ユニットの直前、二次の要素演算発行ユニット)
104 :バッファ(レジスタ書き戻しの直前)
105 :バイパス制御回路
106 :マルチプレクサ
2 :In-Stepバックエンドパイプライン
100 :要素演算発行ユニット
101 :バッファ(レジスタ読み出しの直前)
102 :パイプラインレジスタ
103 :バッファ(実行ユニットの直前、二次の要素演算発行ユニット)
104 :バッファ(レジスタ書き戻しの直前)
105 :バイパス制御回路
106 :マルチプレクサ
2 :In-Stepバックエンドパイプライン
Claims (10)
- 命令の要素演算を毎サイクル高々1つ処理する1以上のレーンと、
前記1以上のレーンに要素演算を発行する要素演算発行ユニットと、
を備え、
全体は複数のエントリを持つバッファによって複数のセクションへと分離され、
要素演算の処理を継続できなくなった1以上のセクションは処理を停止する一方、
他のセクションは、下流のセクションのそれぞれへと進む要素演算を直後のバッファに格納して、処理を継続する、
演算処理装置。 - 前記要素演算発行ユニットは、前記1以上のセクションの停止が発生しないと仮定した場合に、レジスタファイル又はバイパスによってデータの受け渡しが可能なタイミングで依存関係にある要素演算を発行する、
請求項1に記載の演算処理装置。 - 前記バッファは、First In-First Out(FIFO)方式であり、前記1以上のレーンのそれぞれの中での要素演算の追い越しをさせない、
請求項1又は2に記載の演算処理装置。 - 要素演算を実行する実行ユニットよりも上流に位置するバッファもしくはパイプラインレジスタのエントリの全部又は一部は、ソースオペランドをバイパスから受信する機能を有し、
要素演算を実行する実行ユニットの直前に位置するバッファは、実行に必要なソースオペランドが揃うまで要素演算を留めおく、
請求項1~3のいずれか1項に記載の演算処理装置。 - バイパスの送信側は実行結果を一意に識別するタグを実行結果に付してバイパスに送出し、バイパスの受信側はタグの一致比較によって実行結果を受け取ることにより、前記セクションの停止によって位置関係が変化した要素演算の間でもバイパスを行うバイパス制御回路を更に備える、
請求項1~4のいずれか1項に記載の演算処理装置。 - バイパスを介して送受信を行う2つの要素演算のそれぞれが前記バッファもしくはパイプラインレジスタのどのエントリにあるかを、前記1以上のセクションの停止に応じて追跡することによって、位置関係が変化した要素演算の間でもバイパスを行うバイパス制御回路を更に備える、
請求項1~4のいずれか1項に記載の演算処理装置。 - 前記バイパス制御回路の追跡は、
前記1以上のレーンのソースオペランドとデスティネーションオペランドとの対のそれぞれに対して、送信側及び受信側の要素演算が前記バッファもしくは前記パイプラインレジスタのどのエントリにあるかを行及び列とし、
上流から数えてp番目のエントリに格納されている第1の要素演算と、同じく上流から数えてc番目のエントリに格納される第2の要素演算とが、前記第1の要素演算の前記デスティネーションオペランドと前記第2の要素演算のソースオペランドとを介して依存関係にあり、バイパスを通して実行結果を送受信する場合、c行p列の要素がセットされる行列を用い、
要素演算の発行の際に該当する要素をセットし、
前記1以上のセクションの停止に応じて行方向及び列方向にそれぞれ更新することによって行う、
請求項6に記載の演算処理装置。 - あるエントリへの第1のバイパスを省略しても、下流のエントリにおいて前記第1のバイパス以外のバイパスからソースオペランドを受信できると保証される場合に、前記第1のバイパスが省略される、
請求項1~7のいずれか1項に記載の演算処理装置。 - レジスタファイルと一次データキャッシュとのいずれか又は両方がマルチバンク構成であり、前記マルチバンク構成内におけるバンク衝突を前記セクションの停止の要因の1つとする、
請求項1~8のいずれか1項に記載の演算処理装置。 - 前記1以上のレーンの一部又は全部は、Single Instruction/Multiple Data stream(SIMD)命令の要素演算に対応する、
請求項1~9のいずれか1項に記載の演算処理装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021044100A JP2022143544A (ja) | 2021-03-17 | 2021-03-17 | 演算処理装置 |
US17/666,829 US20220300289A1 (en) | 2021-03-17 | 2022-02-08 | Operation processing apparatus |
CN202210147903.7A CN115113935A (zh) | 2021-03-17 | 2022-02-17 | 操作处理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021044100A JP2022143544A (ja) | 2021-03-17 | 2021-03-17 | 演算処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022143544A true JP2022143544A (ja) | 2022-10-03 |
Family
ID=83284721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021044100A Pending JP2022143544A (ja) | 2021-03-17 | 2021-03-17 | 演算処理装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220300289A1 (ja) |
JP (1) | JP2022143544A (ja) |
CN (1) | CN115113935A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117827285A (zh) * | 2024-03-04 | 2024-04-05 | 芯来智融半导体科技(上海)有限公司 | 向量处理器访存指令缓存方法、系统、设备及存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5325495A (en) * | 1991-06-28 | 1994-06-28 | Digital Equipment Corporation | Reducing stall delay in pipelined computer system using queue between pipeline stages |
US5918034A (en) * | 1997-06-27 | 1999-06-29 | Sun Microsystems, Inc. | Method for decoupling pipeline stages |
US6112295A (en) * | 1998-09-24 | 2000-08-29 | Intel Corporation | High frequency pipeline decoupling queue with non-overlapping read and write signals within a single clock cycle |
US7058793B1 (en) * | 1999-12-20 | 2006-06-06 | Unisys Corporation | Pipeline controller for providing independent execution between the preliminary and advanced stages of a synchronous pipeline |
US6629167B1 (en) * | 2000-02-18 | 2003-09-30 | Hewlett-Packard Development Company, L.P. | Pipeline decoupling buffer for handling early data and late data |
US20070136562A1 (en) * | 2005-12-09 | 2007-06-14 | Paul Caprioli | Decoupling register bypassing from pipeline depth |
US7478226B1 (en) * | 2006-09-29 | 2009-01-13 | Transmeta Corporation | Processing bypass directory tracking system and method |
US9600288B1 (en) * | 2011-07-18 | 2017-03-21 | Apple Inc. | Result bypass cache |
-
2021
- 2021-03-17 JP JP2021044100A patent/JP2022143544A/ja active Pending
-
2022
- 2022-02-08 US US17/666,829 patent/US20220300289A1/en active Pending
- 2022-02-17 CN CN202210147903.7A patent/CN115113935A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220300289A1 (en) | 2022-09-22 |
CN115113935A (zh) | 2022-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6631439B2 (en) | VLIW computer processing architecture with on-chip dynamic RAM | |
US7020763B2 (en) | Computer processing architecture having a scalable number of processing paths and pipelines | |
US7478225B1 (en) | Apparatus and method to support pipelining of differing-latency instructions in a multithreaded processor | |
US10860326B2 (en) | Multi-threaded instruction buffer design | |
US6668317B1 (en) | Microengine for parallel processor architecture | |
CN108845826B (zh) | 多寄存器存储器访问指令、处理器、方法和系统 | |
US6606704B1 (en) | Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode | |
US8195883B2 (en) | Resource sharing to reduce implementation costs in a multicore processor | |
US20140095847A1 (en) | Instruction and highly efficient micro-architecture to enable instant context switch for user-level threading | |
US8458446B2 (en) | Accessing a multibank register file using a thread identifier | |
US10338928B2 (en) | Utilizing a stack head register with a call return stack for each instruction fetch | |
US11243775B2 (en) | System, apparatus and method for program order queue (POQ) to manage data dependencies in processor having multiple instruction queues | |
US20080229077A1 (en) | Computer processing system employing an instruction reorder buffer | |
US10678541B2 (en) | Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions | |
US20100333098A1 (en) | Dynamic tag allocation in a multithreaded out-of-order processor | |
US20120233442A1 (en) | Return address prediction in multithreaded processors | |
US11188341B2 (en) | System, apparatus and method for symbolic store address generation for data-parallel processor | |
US10628320B2 (en) | Modulization of cache structure utilizing independent tag array and data array in microprocessor | |
US7353364B1 (en) | Apparatus and method for sharing a functional unit execution resource among a plurality of functional units | |
US20220206793A1 (en) | Methods, systems, and apparatuses for a scalable reservation station implementing a single unified speculation state propagation and execution wakeup matrix circuit in a processor | |
JP2022143544A (ja) | 演算処理装置 | |
US20240020120A1 (en) | Vector processor with vector data buffer | |
US20100274994A1 (en) | Processor operating mode for mitigating dependency conditions | |
US7080234B2 (en) | VLIW computer processing architecture having the problem counter stored in a register file register | |
US8225034B1 (en) | Hybrid instruction buffer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210324 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20221109 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20221109 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20231130 |