(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-07
(45)【発行日】2024-11-15
(54)【発明の名称】マイクロプロセッサ内におけるレジスタ結果の累積のための命令ハンドリング
(51)【国際特許分類】
G06F 9/34 20180101AFI20241108BHJP
G06F 17/16 20060101ALI20241108BHJP
【FI】
G06F9/34 330
G06F17/16 Z
(21)【出願番号】P 2022513041
(86)(22)【出願日】2020-07-21
(86)【国際出願番号】 IB2020056833
(87)【国際公開番号】W WO2021038337
(87)【国際公開日】2021-03-04
【審査請求日】2022-12-23
(32)【優先日】2019-08-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】トンプト、ブライアン
(72)【発明者】
【氏名】ベスマ、マーテン
(72)【発明者】
【氏名】ワーグナー、アンドレアス
(72)【発明者】
【氏名】モレイラ、ホセ
(72)【発明者】
【氏名】リ、ホン
(72)【発明者】
【氏名】ミュラー、シルヴィア
(72)【発明者】
【氏名】グエン、ズン
【審査官】坂東 博司
(56)【参考文献】
【文献】米国特許出願公開第2019/0171448(US,A1)
【文献】米国特許出願公開第2005/0240644(US,A1)
【文献】米国特許出願公開第2004/0078554(US,A1)
【文献】米国特許第05983256(US,A)
【文献】米国特許出願公開第2013/0205123(US,A1)
【文献】米国特許出願公開第2019/0012170(US,A1)
【文献】米国特許出願公開第2020/0320662(US,A1)
【文献】米国特許出願公開第2019/0250915(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/34
G06F 17/16
(57)【特許請求の範囲】
【請求項1】
情報を処理するためのコンピュータ・システムであって、前記コンピュータ・システムが、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに関連づけられた主レジスタ・ファイルであり、前記主レジスタ・ファイルが、データを記憶するための複数のエントリ、主レジスタ・ファイル・エントリにデータを書き込むための1つまたは複数の書込みポート、および前記主レジスタ・ファイル・エントリからデータを読み出すための1つまたは複数の読出しポートを有する、前記主レジスタ・ファイルと、
デンス・マス実行ユニットを含む1つまたは複数の実行ユニットと、
データを記憶するための複数のエントリを有する少なくとも1つのアキュムレータ・レジスタ・ファイルであり、前記少なくとも1つのアキュムレータ・レジスタ・ファイルが前記デンス・マス実行ユニットに関連づけられている、前記少なくとも1つのアキュムレータ・レジスタ・ファイルと
を備え、前記プロセッサが、前記デンス・マス実行ユニット内で
前記アキュムレータ・レジスタ・ファイルに記憶されたデータを処理するように構成されており、前記デンス・マス実行ユニットの結果が前記アキュムレータ・レジスタ・ファイルに書き込ま
れ、
前記プロセッサが、同じアキュムレータ・レジスタ・ファイル・エントリに結果を複数回、書き込み、前記複数回書き込まれた前記アキュムレータ・レジスタ・ファイル・エントリを用意解除し、結果として得られたデータを、前記複数回書き込まれた前記アキュムレータ・レジスタ・ファイル・エントリから前記主レジスタ・ファイルに書き込み、用意解除された前記アキュムレータ・レジスタ・ファイル・エントリの割振りを解除するように構成されている、
コンピュータ・システム。
【請求項2】
前記プロセッサが、アキュムレータ・レジスタ・ファイルにマップされた主レジスタ・ファイル・エントリに命令がアクセスしたことに応答して、前記アキュムレータ・レジスタ・ファイルから複数の主レジスタ・ファイル・エントリにデータを書き込むように構成されている、請求項
1に記載のコンピュータ・システム。
【請求項3】
前記プロセッサが、データを受け取るように前記アキュムレータ・レジスタ・ファイルを用意するように構成されている、請求項1に記載のコンピュータ・システム。
【請求項4】
前記プロセッサが、命令に応答して、前記アキュムレータ・レジスタ・ファイルにデータを記憶するように前記アキュムレータ・レジスタ・ファイルを用意するように構成されている、請求項
3に記載のコンピュータ・システム。
【請求項5】
アキュムレータ・レジスタ・ファイル・エントリを用意したことに応答して、前記プロセッサが、用意された前記アキュムレータ・レジスタ・ファイルにマップされた前記1つまたは複数の主レジスタ・ファイル・エントリにビジーのマークを付ける、請求項
3に記載のコンピュータ・システム。
【請求項6】
前記アキュムレータ・レジスタ・ファイルが、前記デンス・マス実行ユニットにとってローカルである、請求項1に記載のコンピュータ・システム。
【請求項7】
前記デンス・マス実行ユニットが行列乗算アキュムレータ(MMA)ユニットであり、前記アキュムレータ・レジスタ・ファイルが前記MMA内に位置する、請求項
6に記載のコンピュータ・システム。
【請求項8】
前記アキュムレータ・レジスタ・ファイルのビット・フィールド幅が前記主レジスタ・ファイルのビット・フィールド幅よりも広い、請求項1に記載のコンピュータ・システム。
【請求項9】
前記アキュムレータ・レジスタ・ファイルの中のそれぞれのエントリが複数の主レジスタ・ファイル・エントリにマップされている、請求項
8に記載のコンピュータ・システム。
【請求項10】
前記プロセッサがベクトル・スカラ実行ユニット(VSU)を備え、前記デンス・マス実行ユニットが行列乗算アキュムレータ(MMA)ユニットであり、前記主レジスタ・ファイルが、前記VSU内に位置するVSレジスタ・ファイルであり、前記アキュムレータ・レジスタ・ファイルが、複数の連続したVSレジスタ・ファイル・エントリにマップされている、請求項1に記載のコンピュータ・システム。
【請求項11】
情報を処理するためのプロセッサであって、前記プロセッサが、
前記プロセッサに関連づけられた主レジスタ・ファイルであり、前記主レジスタ・ファイルが、データを記憶するための複数のエントリ、主レジスタ・ファイル・エントリにデータを書き込むための1つまたは複数の書込みポート、および前記主レジスタ・ファイル・エントリからデータを読み出すための1つまたは複数の読出しポートを有する、前記主レジスタ・ファイルと、
デンス・マス実行ユニットを含む1つまたは複数の実行ユニットと、
データを記憶するための複数のエントリを有する少なくとも1つのアキュムレータ・レジスタ・ファイルであり、前記少なくとも1つのアキュムレータ・レジスタ・ファイルが前記デンス・マス実行ユニットに関連づけられており、前記アキュムレータ・レジスタ・ファイルのビット・フィールド幅が前記主レジスタ・ファイルのビット・フィールド幅よりも広い、前記少なくとも1つのアキュムレータ・レジスタ・ファイルと
を備え、前記プロセッサが、同じアキュムレータ・レジスタ・ファイル・エントリに前記デンス・マス実行ユニットの結果が多数回、書き込まれるような方式で、前記デンス・マス実行ユニット内で
前記アキュムレータ・レジスタ・ファイルに記憶されたデータを処理するように構成されており、
前記プロセッサが、多数回書き込まれた前記アキュムレータ・レジスタ・ファイル・エントリから前記主レジスタ・ファイル・エントリにデータを書き戻すように構成さ
れ、
前記プロセッサがさらに、前記アキュムレータ・レジスタ・ファイルを用意し、同じアキュムレータ・レジスタ・ファイル・エントリに結果を複数回、書き込み、前記複数回書き込まれた前記アキュムレータ・レジスタ・ファイル・エントリを用意解除し、結果として得られたデータを、前記複数回書き込まれた前記アキュムレータ・レジスタ・ファイル・エントリから前記主レジスタ・ファイルに書き込み、用意解除された前記アキュムレータ・レジスタ・ファイル・エントリの割振りを解除するように構成されている、
プロセッサ。
【請求項12】
前記プロセッサが、デンス・マス命令を処理したことに応答して、複数の主レジスタ・ファイル・エントリを単一のアキュムレータ・レジスタ・ファイル・エントリにマップするように構成されている、請求項1
1に記載のプロセッサ。
【請求項13】
前記プロセッサが、データを受け取るように前記アキュムレータ・レジスタ・ファイルを用意するように構成されている、請求項1
1に記載のプロセッサ。
【請求項14】
前記プロセッサが、前記複数のアキュムレータ・レジスタ・ファイル・エントリのうちの1つのアキュムレータ・レジスタ・ファイル・エントリに前記デンス・マス実行ユニットがデータを書き込んだことに応答して、前記アキュムレータ・レジスタ・ファイルにダーティのマークを付けるように構成されている、請求項1
1に記載のプロセッサ。
【請求項15】
前記1つまたは複数の実行ユニットがベクトル・スカラ・ユニット(VSU)を備え、前記デンス・マス実行ユニットが行列乗算アキュムレータ(MMA)ユニットであり、前記主レジスタ・ファイルが、前記VSU内に位置するベクトル・スカラ(VS)レジスタ・ファイルであり、前記プロセッサが、複数の連続したVSレジスタ・ファイル・エントリを単一のアキュムレータ・レジスタ・ファイル・エントリにマップするように構成されている、請求項1
1に記載のプロセッサ。
【請求項16】
情報を処理するためのコンピュータ・システムであって、前記コンピュータ・システムが、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに関連づけられた主レジスタ・ファイルであり、前記主レジスタ・ファイルが、データを記憶するための複数のエントリ、主レジスタ・ファイル・エントリにデータを書き込むための1つまたは複数の書込みポート、および前記レジスタ・ファイル・エントリからデータを読み出すための複数の読出しポートを有する、前記主レジスタ・ファイルと、
デンス・マス実行ユニットを含む1つまたは複数の実行ユニットと、
データを記憶するための複数のエントリを有する少なくとも1つのアキュムレータ・レジスタ・ファイルであり、前記少なくとも1つのアキュムレータ・レジスタ・ファイルがデータを記憶するための複数のエントリを有し、前記少なくとも1つのアキュムレータ・レジスタ・ファイルが前記デンス・マス実行ユニットに関連づけられている、前記少なくとも1つのアキュムレータ・レジスタ・ファイルと、
1つまたは複数のコンピュータ可読ストレージ媒体と、
前記少なくとも1つのプロセッサによって実行するために前記1つまたは複数のコンピュータ可読ストレージ媒体上に記憶されたプログラム命令と
を備え、前記プログラム命令が、
前記デンス・マス実行ユニットが
前記アキュムレータ・レジスタ・ファイルに記憶されたデータを処理して同じアキュムレータ・レジスタ・ファイル・エントリに結果を複数回、書き込むようなプログラム命令
を含
み、
前記プロセッサがデンス・マス実行ユニット命令を処理したことに応答して、
単一のアキュムレータ・レジスタ・ファイル・エントリを複数の主レジスタ・ファイル・エントリにマップし、
同じアキュムレータ・レジスタ・ファイル・エントリに結果を複数回、書き込み、
前記複数回書き込まれた前記アキュムレータ・レジスタ・ファイル・エントリを用意解除し、
結果として得られたデータを、前記複数回書き込まれた前記アキュムレータ・レジスタ・ファイル・エントリから前記主レジスタ・ファイルに書き込み、
用意解除された前記アキュムレータ・レジスタ・ファイル・エントリの割振りを解除する
プログラム命令をさらに含む、
コンピュータ・システム。
【請求項17】
プロセッサ内で命令を処理する方法であって、前記方法が、
デンス・マス実行ユニットに関連づけられたアキュムレータ・レジスタ・ファイルを提供すること、
前記デンス・マス実行ユニットを用いてデンス・マス演算を実行すること、および
前記デンス・マス実行ユニットを用いた
前記アキュムレータ・レジスタ・ファイルに記憶されたデータの前記デンス・マス演算の結果を前記アキュムレータ・レジスタ・ファイルに書き込むこと
を含
み、さらに、
同じアキュムレータ・レジスタ・ファイル・エントリに結果を複数回、書き込むこと、
前記複数回書き込まれた前記アキュムレータ・レジスタ・ファイル・エントリを用意解除すること、
結果として得られたデータを、前記複数回書き込まれた前記アキュムレータ・レジスタ・ファイル・エントリから前記プロセッサに関連づけられた主レジスタ・ファイルに書き込むこと、
用意解除された前記アキュムレータ・レジスタ・ファイル・エントリの割振りを解除すること
を含む方法。
【請求項18】
前記デンス・マス実行ユニットが、
前記主レジスタ・ファイルに書き込むことなしに、前記アキュムレータ・レジスタ・ファイルの読出しおよび書込みを実行することをさらに含む、請求項
17に記載の方法。
【請求項19】
デンス・マス実行ユニット演算の間、前記アキュムレータ・レジスタ・ファイルがソースとターゲットの両方である、請求項
17に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、データ処理システム、プロセッサに関し、より詳細には、プロセッサ内のアキュムレータ・レジスタ・ファイル(accumulator register file)であって、例えば1つまたは複数の行列乗算アキュムレータ(matrix-multiply-accumulator)(MMA)ユニットなどの1つまたは複数のデンス・マス実行ユニット(dense math execution unit)に関連づけられたアキュムレータ・レジスタを含む、アキュムレータ・レジスタ・ファイルに関する。
【背景技術】
【0002】
データ処理システム内で現在使用されているプロセッサは一度に2つ以上の命令を処理し、しばしば、それらの命令を順不同で処理する。最新のコンピュータ・アーキテクチャでは、一度に、または少なくとも同じ時間フレーム内で2つ以上の命令を実行するように適合されたコンピュータを設計するいくつかの手法が知られている。例えば、スループットを向上させる1つの設計は、多数の命令スレッドを同時に処理するためにプロセッサ・コア内に多数の実行スライスを含み、これらのスレッドは、プロセッサ・コアのあるリソースを共用する。実行スライスは、多数の命令を単一の処理サイクルで処理するために、パイプラインまたはパイプライン状構造体のように直列に接続された、プロセッサ内の多数のデータ処理ハードウェア・ユニットを指すことがある。パイプライン処理は、いくつかの命令が並行して処理されるように命令を複数のステージで処理することを含む。多数の実行スライスを、プロセッサ・コア内での同時マルチスレッド処理の部分として使用することができる。
【0003】
パイプライン化されたこれらのさまざまなステージは、メモリから命令をフェッチする「命令フェッチ」ステージを含むことがある。「デコード」ステージでは、その命令が異なる制御ビットにデコードされ、それらの異なる制御ビットは一般に、(i)その命令によって指定された演算を実行するための機能ユニット(例えば実行ユニット)のタイプ、(ii)その演算のソース・オペランド、および(iii)その演算の結果の行先を示す。「ディスパッチ」ステージでは、デコードされた命令が発行待ち行列(ISQ)にディスパッチされ、そこで命令は、データおよび使用可能な実行ユニットを待つ。「実行」ステージでは通常、発行待ち行列の中の命令が実行ユニットに発行される。「実行」ステージは、その命令によって指定されたとおりに演算を処理する。命令によって指定された演算を実行することは通常、データ、例えば1つまたは複数のオペランドを受け入れ、1つまたは複数の結果を生み出すことを含む。普通は、実行ユニットもしくは発行待ち行列またはその両方に関連づけられたレジスタ・ファイルであって、実行ユニットのためのデータもしくは情報またはその両方を保持するためのレジスタ・ファイルが存在する。レジスタ・ファイルは通常、レジスタ・ファイル内のエントリもしくは位置から読み出される情報、またはレジスタ・ファイル内のエントリもしくは位置に書き込まれた情報、あるいはその両方を有する。
【0004】
計算スループットを増大させる1つの設計は、さまざまなデータ・タイプをハンドリングするため、および高度に並列なタスクを実行するために、専門計算ユニット、例えば行列乗算アキュムレータ・ユニット(MMAユニット)を有する設計である。ワイド単一命令複数データ(single instruction, multiple data)(SIMD)データフローは、高い計算スループットを達成する1つの手法である。
【発明の概要】
【発明が解決しようとする課題】
【0005】
プロセッサにおいては、命令の順不同実行を改善するために、インフライト(in-flight)命令のレジスタ・リネーミング(register renaming)を有することは珍しいことではない。しかしながら、高い計算およびスループットを有する実行ユニットが使用される状況、例えばデンス・マス演算状況では、インフライト命令のレジスタ・リネーミングが、ハンドリングに電力を消費しうる多くのデータ移動に帰着することがあり、1つまたは複数の実行バブルのため不必要な遅延および待ち時間を導入することもある。
【課題を解決するための手段】
【0006】
情報を処理するためのコンピュータ・システムが開示され、このコンピュータ・システムは、少なくとも1つのプロセッサと、この少なくとも1つのプロセッサに関連づけられた主レジスタ・ファイルであり、この主レジスタ・ファイルが、データを記憶するための複数のエントリ、主レジスタ・ファイル・エントリにデータを書き込むための1つまたは複数の書込みポート、および主レジスタ・ファイル・エントリからデータを読み出すための1つまたは複数の読出しポートを有する、主レジスタ・ファイルと、デンス・マス実行ユニットを含む1つまたは複数の実行ユニットと、データを記憶するための複数のエントリを有する少なくとも1つのアキュムレータ・レジスタ・ファイルであり、この少なくとも1つのアキュムレータ・レジスタ・ファイルがデンス・マス実行ユニットに関連づけられている、少なくとも1つのアキュムレータ・レジスタ・ファイルとを含む。1つまたは複数の実施形態では、プロセッサが、デンス・マス実行ユニット内でデータを処理するように構成されており、デンス・マス実行ユニットの結果がアキュムレータ・レジスタ・ファイルに書き込まれる。一態様では、プロセッサが、同じアキュムレータ・レジスタ・ファイル・エントリに結果を多数回、書き戻すように構成されている。一実施形態では、プロセッサがさらに、アキュムレータ・レジスタ・ファイルから主レジスタ・ファイルにデータを書き込むように構成されている。プロセッサは、アキュムレータ・レジスタ・ファイルにマップされた主レジスタ・ファイル・エントリに命令がアクセスしたことに応答して、アキュムレータ・レジスタ・ファイルから複数の主レジスタ・ファイル・エントリにデータを書き込むように構成されていることが好ましい。
【0007】
一態様では、プロセッサが、データを受け取るようにアキュムレータ・レジスタ・ファイルを用意(prime)するように構成されており、好ましい一態様では、プロセッサが、命令に応答して、アキュムレータ・レジスタ・ファイルにデータを記憶するようにアキュムレータ・レジスタ・ファイルを用意するように構成されている。一実施形態では、プロセッサが、アキュムレータ・レジスタ・ファイル・エントリを用意したことに応答して、用意されたアキュムレータ・レジスタ・ファイルにマップされた1つまたは複数の主レジスタ・ファイル・エントリにビジー(busy)のマークを付ける。アキュムレータ・レジスタ・ファイルは、デンス・マス・ユニットにとってローカルであることが好ましく、一態様では、デンス・マス実行ユニットが行列乗算アキュムレータ(MMA)ユニットであり、アキュムレータ・レジスタ・ファイルがMMA内に位置する。一実施形態では、アキュムレータ・レジスタ・ファイルの中のそれぞれのエントリが複数の主レジスタ・ファイル・エントリにマップされている。
【0008】
一実施形態では、情報を処理するためのプロセッサが開示され、このプロセッサは、このプロセッサに関連づけられた主レジスタ・ファイルであり、この主レジスタ・ファイルが、データを記憶するための複数のエントリ、主レジスタ・ファイル・エントリにデータを書き込むための1つまたは複数の書込みポート、および主レジスタ・ファイル・エントリからデータを読み出すための1つまたは複数の読出しポートを有する、主レジスタ・ファイルと、デンス・マス実行ユニットを含む1つまたは複数の実行ユニットと、データを記憶するための複数のエントリを有する少なくとも1つのアキュムレータ・レジスタ・ファイルであり、この少なくとも1つのアキュムレータ・レジスタ・ファイルがデンス・マス実行ユニットに関連づけられており、アキュムレータ・レジスタ・ファイルのビット・フィールド幅が主レジスタ・ファイルのビット・フィールド幅よりも広い、少なくとも1つのアキュムレータ・レジスタ・ファイルとを含む。一態様では、このプロセッサが、同じアキュムレータ・レジスタ・ファイル・エントリにデンス・マス実行ユニットの結果が多数回、書き込まれるような方式で、デンス・マス実行ユニット内でデータを処理するように構成されており、また、多数回書き込まれたアキュムレータ・レジスタ・ファイル・エントリから主レジスタ・ファイル・エントリにデータを書き戻すように構成されている。
【0009】
別の態様では、情報を処理するためのコンピュータ・システムが開示され、このコンピュータ・システムは、少なくとも1つのプロセッサと、この少なくとも1つのプロセッサに関連づけられた主レジスタ・ファイルであり、この主レジスタ・ファイルが、データを記憶するための複数のエントリ、主レジスタ・ファイル・エントリにデータを書き込むための1つまたは複数の書込みポート、およびレジスタ・ファイル・エントリからデータを読み出すための複数の読出しポートを有する、主レジスタ・ファイルと、デンス・マス実行ユニットを含む1つまたは複数の実行ユニットと、データを記憶するための複数のエントリを有する少なくとも1つのアキュムレータ・レジスタ・ファイルであり、この少なくとも1つのアキュムレータ・レジスタ・ファイルがデータを記憶するための複数のエントリを有し、この少なくとも1つのアキュムレータ・レジスタ・ファイルがデンス・マス実行ユニットに関連づけられている、少なくとも1つのアキュムレータ・レジスタ・ファイルと、1つまたは複数のコンピュータ可読ストレージ媒体と、少なくとも1つのプロセッサによって実行するために1つまたは複数のコンピュータ可読ストレージ媒体上に記憶されたプログラム命令とを含む。一実施形態では、これらのプログラム命令が、プロセッサ上で実行されたときに、デンス・マス・ユニットに、同じアキュムレータ・レジスタ・ファイル・エントリに結果を複数回、書き込むことを実行させる。これらのプログラム命令は、プロセッサがデンス・マス実行ユニット命令を処理したことに応答して、プロセッサに、単一のアキュムレータ・レジスタ・ファイル・エントリを複数の主レジスタ・ファイル・エントリにマップすること、同じアキュムレータ・レジスタ・ファイル・エントリに結果を複数回、書き込むこと、複数回書き込まれたアキュムレータ・レジスタ・ファイル・エントリを用意解除(de-prime)すること、結果として得られたデータを、複数回書き込まれたアキュムレータ・レジスタ・ファイル・エントリから主レジスタ・ファイルに書き込むこと、および用意解除されたアキュムレータ・レジスタ・ファイル・エントリの割振りを解除することを実行させる。
【0010】
プロセッサ内で命令を処理する方法も開示される。1つまたは複数の実施形態では、この方法が、デンス・マス実行ユニットに関連づけられたアキュムレータ・レジスタ・ファイルを提供すること、デンス・マス実行ユニットを用いてデンス・マス演算を実行すること、およびデンス・マス実行ユニットを用いたデンス・マス演算の結果をアキュムレータ・レジスタ・ファイルに書き込むことを含む。一態様では、この方法がさらに、デンス・マス実行ユニットが、主レジスタ・ファイルに書き込むことなしに、アキュムレータ・レジスタ・ファイルの読出しおよび書込みを実行することを含む。一実施形態では、アキュムレータ・レジスタ・ファイルが、デンス・マス実行ユニット演算の間、ソースとターゲットの両方である。この方法は、デンス・マス実行ユニット演算中に、同じアキュムレータ・レジスタ・ファイル・エントリに何回か書き込むことを含むことが好ましく、一態様では、この方法が、アキュムレータ・レジスタ・ファイル・データを主レジスタ・ファイルに書き込むことを含む。
【0011】
本発明の上記の目的、特徴および利点ならびにその他の目的、特徴および利点は、添付図面に示された本発明の例示的な実施形態の以下のより詳細な説明から明らかとなる。
【0012】
コンピュータ・システム、コンピュータ・アーキテクチャ構造体、プロセッサ、アキュムレータ・レジスタ・ファイルを含むレジスタ・ファイルもしくはそれらの動作方法またはこれらの組合せのさまざまな態様、特徴および実施形態は、提供された図と関連づけて読んだときによりいっそう理解される。それらの図には、コンピュータ・システム、コンピュータ・アーキテクチャ構造体、プロセッサ、レジスタ・ファイル、アキュムレータ・レジスタ・ファイルおよびそれらの動作方法の態様、特徴もしくはさまざまな実施形態またはこれらの組合せを例示するために、実施形態が提供されているが、特許請求の範囲は、示された正確なシステム、実施形態、方法、プロセスもしくはデバイスまたはこれらの組合せに限定されるべきではなく、示された特徴もしくはプロセスまたはその両方は、単独で、あるいは他の特徴もしくはプロセスまたはその両方と組み合わせて使用することができる。
【図面の簡単な説明】
【0013】
【
図1】本開示の態様を実施することができるデータ処理システムの一例を示す図である。
【
図2】本開示のある態様を実施することができるプロセッサのブロック図である。
【
図3】本開示のある態様による、マルチスライス・プロセッサの一部分のブロック図である。
【
図4】本開示の一実施形態による、アキュムレータ・レジスタ・ファイルを有するマルチスライス・プロセッサの一部分のブロック図である。
【
図5】本開示の一実施形態による、MMAユニット、アキュムレータ・レジスタ・ファイルおよび物理VSレジスタ・ファイルの構成を示す簡略化されたブロック図である。
【
図6】MMAユニットとアキュムレータ・レジスタ・ファイルとを有するプロセッサの2つのスーパー・スライスの簡略化されたブロック図である。
【
図7】プロセッサ内でデータを処理するための一実施形態による方法の流れ図である。
【発明を実施するための形態】
【0014】
以下の説明は、本発明の一般的な原理を示すために書かれたものであり、本明細書に記載された発明の発想を限定することを意味するものではない。以下の詳細な説明には、コンピュータ・システム、コンピュータ・アーキテクチャ構造体、プロセッサ、レジスタ・ファイル、アキュムレータ・レジスタ・ファイルおよびそれらの動作方法の理解を提供するために、数多くの詳細が記載されている。しかしながら、コンピュータ・システム、コンピュータ・アーキテクチャ構造体、プロセッサ、レジスタ・ファイル、アキュムレータ・レジスタ・ファイルおよびそれらの動作方法の異なる多数の実施形態は、それらの具体的な詳細なしでも実施することができること、ならびに特許請求の範囲および本発明は、本明細書に詳細に説明され示されたシステム、アセンブリ、サブアセンブリ、実施形態、特徴、プロセス、方法、態様もしくは詳細またはこれらの組合せに限定されるべきではないことを当業者は理解するであろう。また、本明細書に記載された特定の特徴は、可能なさまざまなそれぞれの組合せおよび置き換えにおいて、記載された他の特徴と組み合わせて使用することができる。
【0015】
本明細書において特に定義されていない限り、全ての用語には、本明細書から暗示される意味および当業者によって理解される意味、もしくは辞書、学術論文などに定義された意味、またはその両方を含む、その可能な最も幅広い解釈が与えられる。特に明記されていない限り、本明細書および添付の特許請求の範囲で使用されているとき、単数形「a」、「an」および「the」は複数の指示物を含むこと、および用語「備える(comprises)」もしくは「備える(comprising)」またはその両方は、明示された特徴、完全体(integer)、ステップ、動作、要素もしくは構成要素またはこれらの組合せの存在を指定するが、1つもしくは複数の特徴、完全体、ステップ、動作、要素、構成要素もしくはそれらのグループまたはこれらの組合せの存在または追加を排除しないことにも留意しなければならない。
【0016】
以下の議論は、プロセッサおよびマイクロプロセッサ・システムならびにアーキテクチャを含む、情報処理システムの当業者には明白な従来の特徴を省いているか、または簡単にしか説明していない。当業者は、プロセッサの全般的なアーキテクチャに精通しており、特に、マルチスライス・プロセッサおよびマルチスライス・プロセッサによるレジスタの使用を含め、順不同実行で動作するプロセッサに精通しているとみなす。符号付きの要素は、その要素が紹介された図に従って符号が付けられており、以降の図でも、必ずではないが、しばしば、その符号によって参照されることに留意されたい。
【0017】
図1は、本開示の態様を実施することができるデータ処理システム100の一例を示している。このシステムは中央処理ユニット(CPU)110を有する。CPU110は、システム・バス112によって他のさまざまな構成要素に結合されている。システム・バス112にはリードオンリー・メモリ(「ROM」)116が結合されており、ROM116は、データ処理システム100のある基本機能を制御する基本入出力システム(「BIOS」)を含む。システム・バス112にはさらに、ランダム・アクセス・メモリ(「RAM」)114、I/Oアダプタ118および通信アダプタ134が結合されている。I/Oアダプタ118は、ディスク・ストレージ・デバイス120と通信するスモール・コンピュータ・システム・インタフェース(「SCSI」)アダプタとすることができる。通信アダプタ134は、バス112と外部ネットワークとを相互接続し、このデータ処理システムが他の同様のシステムと通信することを可能にする。システム・バス112にはさらに、ユーザ・インタフェース・アダプタ122およびディスプレイ・アダプタ136を介して入力/出力デバイスが接続されている。キーボード124、トラックボール132、マウス126およびスピーカ128は全て、ユーザ・インタフェース・アダプタ122を介してバス112に相互接続されている。ディスプレイ・アダプタ136によってシステム・バス112にディスプレイ・モニタ138が接続されている。このようにすると、ユーザは、キーボード124、トラックボール132またはマウス126によってシステムに入力すること、ならびにスピーカ128およびディスプレイ138を介してシステムから出力を受け取ることができる。さらに、
図1に示されたさまざまな構成要素の機能を調整するために、例えばAIXなどのオペレーティング・システムが使用される(「AIX」はIBM Corporationの商標である)。
【0018】
CPU(または「プロセッサ」)110は、集積回路によって形成されたさまざまなレジスタ、バッファ、メモリおよび他のユニットを含み、縮小命令セット・コンピューティング(「RISC」)技術に従って動作することができる。CPU110は、プロセッサ・サイクルに従って処理を実行し、いくつかの態様では、内部クロック(図示せず)と同期したプロセッサ・サイクルに従って処理を実行する。
【0019】
図2は、一実施形態による、プロセッサ110の簡略化されたブロック図を示している。プロセッサ110は、メモリ202、命令キャッシュ204、命令フェッチ・ユニット206、ブランチ予測器(branch predictor)208、ブランチ分類ユニット218、処理パイプライン210および行先リソース(destination resource)220を含む。プロセッサ110は、コンピュータ・プロセッサ内に含まれていてもよく、または、さもなければコンピュータ・システム内に分散していてもよい。メモリ202に命令およびデータを記憶することができ、命令キャッシュ204は、メモリ202の中の命令にアクセスし、フェッチする命令を記憶することができる。メモリ202は、任意のタイプの揮発性または不揮発性メモリを含むことができる。メモリ202および命令キャッシュ204は多数のキャッシュ・レベルを含むことができる。
【0020】
図2には、命令フェッチ・ユニット206および処理パイプライン210の簡略化された例が示されている。さまざまな実施形態において、プロセッサ110は、多数の処理パイプライン210および命令フェッチ・ユニット206を含むことができる。一実施形態では、処理パイプライン210が、デコード・ユニット20、発行ユニット22、実行ユニット24、書戻し論理26、論理レジスタ・マッパ28、履歴バッファ、例えばセーブ&リストア・バッファ(Save & Restore Buffer)(SRB)30、および物理レジスタ・ファイル32を含む。命令フェッチ・ユニット206もしくはブランチ予測器208またはその両方を処理パイプライン210の部分とすることもできる。処理パイプライン210はさらに、誤り検査および誤り処理論理、処理パイプライン210を通る1本または数本の並行経路、ならびに当技術分野で現在知られているまたは当技術分野で今後知られる他の機能などの他の機能を含むことができる。
図2にはプロセッサ110を通る順方向経路が示されているが、他のフィードバックおよびシグナリング経路をプロセッサ110の要素間に含めることができる。プロセッサ110は、他の回路、機能ユニットおよび構成要素を含むことができる。
【0021】
命令フェッチ・ユニット206は、デコード・ユニット20によってさらに処理するために、命令アドレスに従って命令キャッシュ204から命令をフェッチする。デコード・ユニット20は、命令をデコードし、デコードされた命令、命令の部分、またはデコードされた他のデータを発行ユニット22に渡す。デコード・ユニット20はさらに、ブランチ予測器208によって予測されなかったブランチ命令を検出することができる。発行ユニット22は、それらの命令または他のデータを分析し、この分析に基づいて、デコードされた命令、命令の部分、または他のデータをパイプライン210内の1つまたは複数の実行ユニット24に送信する。物理レジスタ・ファイル32は、実行ユニット24のためのデータを保持する。実行ユニット24は、実行ユニット24に発行された命令によって指定された演算を実施および実行する。実行ユニット24は、固定小数点実行ユニット、浮動小数点実行ユニット、ロード/記憶実行ユニット(LSU)、ベクトル・スカラ実行ユニット(VSU)もしくは他の実行ユニットまたはこれらの組合せなどの複数の実行ユニットを含むことができる。論理レジスタ・マッパ28は、論理レジスタ・エントリ(LReg)と物理レジスタ・ファイル32内のエントリとの間のマッピングを提供するエントリを含む。命令が論理レジスタ・エントリ(LReg)の読出しを指定しているとき、論理レジスタ・マッパ28は発行ユニット22に通知し、発行ユニット22は実行ユニット24に通知し、実行ユニット24で、物理レジスタ・ファイル32の中のデータの位置を突き止めることができる。
【0022】
誤予測されたブランチ命令または他の例外が検出されると、その誤予測されたブランチ命令または例外に続く命令およびデータは廃棄される。例えば、プロセッサ110のさまざまなユニットからフラッシュされる。履歴バッファ、例えばセーブ&リストア・バッファ(SRB)30は、投機的(speculative)レジスタ状態とアーキテクテット(architected)・レジスタ状態の両方を含み、新たな命令がディスパッチされると論理レジスタ・ファイル・データをバックアップする。この点に関して、履歴バッファは、新たな命令がデータをエビクト(evict)するときに、その新たな命令がフラッシュされ、古いデータを回復する必要がある場合に備えて、論理レジスタ・マッパ28からの情報を記憶する。履歴バッファ(SRB)30は、その新たな命令が完了するまで、記憶した情報を保持する。論理レジスタ・エントリの内容を履歴バッファ(SRB)30から論理レジスタ・マッパ28に復元するために、履歴バッファ(SRB)30は論理レジスタ・マッパ28とインタフェースし、論理レジスタ・マッパ28内のポインタを更新して、正しいデータをどこで取得すればよいかを命令が知ることができるようにし、例えば、プロセッサは、割込み可能命令、例えばブランチ命令が誤予測される前に存在した状態に戻される。
【0023】
書戻し論理26は、実行された命令の結果を行先リソース220に書き戻す。行先リソース220は、実行された命令またはデータのためのレジスタ、キャッシュ・メモリ、他のメモリ、他のデバイスと通信するためのI/O回路、他の処理回路、または他の任意のタイプの行先を含む、任意のタイプのリソースとすることができる。
【0024】
命令は、プロセッサ110内のパイプライン化された一連の論理ステージで処理することができる。しかしながら、これらのステージの機能を1つに結合することができ、そのため、そのような限定が特許請求の範囲に明確に示されていない限り、この特定のステージ分割を限定と捉えるべきではないことを理解すべきである。実際に、
図2では、理解を単純にするために、一部のステージが単一の論理ユニットとして示されており、関連するさらなる詳細が後に提供される。
【0025】
図3は、本開示の一実施形態による、プロセッサ110の一部分、この例ではマルチスライス・プロセッサ110の一部分のブロック図を示している。議論の目的上、
図3は、マルチスライス・プロセッサ110の一部分を概略的に示しているだけであることに留意されたい。このマルチスライス・プロセッサは他の構成を有することもできることが理解される。
図3に示されているとおり、このマルチスライス・プロセッサは、2つの処理スライス、すなわちスライス0(スライスS0または360)およびスライス1(スライスS1または365)を含む。このプロセッサは命令フェッチ・ユニット310を含む。スライスS0およびS1はそれぞれ、命令ディスパッチ・ユニット(320aおよび320b)、論理レジスタ・マッパ(350aおよび350b)、履歴バッファ(HB)(370aおよび370b)、発行待ち行列(ISQ)(330aおよび330b)、命令完了テーブル(ICT)(325aおよび325b)、および実行ユニット(340aおよび340b)を含み、実行ユニット(340aおよび340b)は、ロード記憶ユニット(LSU)(304aおよび304b)、ベクトル・スカラ・ユニット(VSU)(306aおよび306b)、およびレジスタ・ファイル(RF)(380aおよび380b)を含む。実行ユニット340は、実行ユニット340によって実行するための命令を保持する1つまたは複数の待ち行列を含むことができる。
【0026】
2つのスライスが示されているのは、単に図解および議論を容易にするためであり、マルチスライス・プロセッサ110は、3つ以上の処理または実行スライスを含むことができ、それぞれのスライスは、スライスS0およびS1(スライス360および365)のそれぞれについて上で論じた全ての構成要素を有することに留意されたい。さらに、これらの処理スライスを、スーパー・スライス(SS395)にグループ化することができ、それぞれのスーパー・スライスは一対の処理スライスを含む。例えば、マルチスライス・プロセッサは、2つのスーパー・スライスSS0およびSS1を含むことができ、SS0はスライスS0およびS1を含み、SS1(図示せず)はスライスS2およびS3を含む。
【0027】
命令フェッチ・ユニット310は、プロセッサ110またはプロセッサ・スライスによって実行する命令をフェッチする。命令フェッチ・ユニット310によってフェッチされた命令は命令ディスパッチ・ユニット320に送られる。命令ディスパッチ・ユニット320は、命令を発行待ち行列(ISQ)330に、通常はプログラム順で送る。発行待ち行列(ISQ)330は命令を実行ユニット340に発行する。ISQ330は通常、命令に関連したデータが取り出され、使用する準備が整うまで、その命令を保持する。物理レジスタ・ファイル380は、実行ユニット340にディスパッチされた命令の中に指定された演算で使用するデータを記憶する役目を果たすことができ、実行ユニット340によって実行された演算の結果は、物理レジスタ・ファイル380の中の指定されたターゲット・レジスタ・エントリに書き込むことができる。
【0028】
ある態様では、ISQ330が一組の命令を保持し、レジスタ・ファイル380が命令入力用のデータを累積する。レジスタ・ファイルを使用して、メモリとプロセッサ内の他の機能(実行)ユニットとの間でデータをステージングすることができる。多数のレジスタ・ファイルおよびタイプがあってもよい。その命令の全てのソース・データが累積すると、それらのデータは、その命令を実行するよう指定された1つまたは複数の実行ユニットに渡される。実行ユニット、例えばLSU304およびVSU306はそれぞれ、結果データを、レジスタ・ファイル(RF)エントリに書き込むための書戻しバス上で使用可能にすることができる。
【0029】
データの準備ができていないとき、例えば適切なデータ・キャッシュまたはレジスタにデータがないときには、ISQ330が命令を実行ユニット340に発行しないため、遅延が生じうる。少なくともこの理由により、発行待ち行列(ISQ)は通常、命令を実行ユニット340に順不同で発行し、そのため、必要なデータが使用可能である命令を実行することができる。1つまたは複数の実施形態では、命令を識別するために、ディスパッチ・ユニット320が、発行待ち行列330にディスパッチされたそれぞれの命令に、識別子、例えば識別タグ(iTag)のスタンプを押す。ディスパッチ・ユニット320は、命令に、他の情報およびメタ・データのスタンプを押すことができる。命令(iTag)は通常、ディスパッチ・ユニット320によって、スレッドごとに、プログラム昇順で割り振られ(割り当てられ)、スタンプが押される。
【0030】
論理レジスタ・マッパ350は、論理レジスタのエントリ(例えばGPR1)と物理レジスタ・ファイル380のエントリ(例えば物理レジスタ・アレイ・エントリ)との間のマッピングを提供するメタ・データ(例えばiTag、RFtagなど)を含む。RFtagは、論理レジスタ・エントリを物理レジスタ・ファイル・エントリに相互に関連させるポインタである。例えば、1つの命令が、論理レジスタ、例えばGPR1を読みたいとき、論理レジスタ・マッパ350は、物理レジスタ・ファイル380のどこでそのデータを見つけることができるのか、例えば物理レジスタ・アレイ・エントリを発行待ち行列330に伝え、発行待ち行列330は実行ユニット340に伝える。実行ユニット340は命令を順不同で実行し、実行ユニット340が1つの命令を終了すると、実行ユニット340は、終了したその命令、例えばiTagをICT325に送る。ICT325は、ディスパッチ・ユニット320によってディスパッチされた命令の待ち行列を含み、命令が処理されるときにそれらの命令の進捗を追跡する。
【0031】
履歴バッファ(SRB)390は、より若い命令によって論理レジスタ・マッパ350からエビクトされた論理レジスタ・エントリを含む。履歴バッファ(SRB)390に記憶された情報は、論理レジスタから論理レジスタ・エントリをエビクトした命令のiTag(すなわちエビクタiTag)を含むことがある。一実施形態では、履歴バッファ(SRB)390が、iTag、論理レジスタ・エントリ番号(論理レジスタ・エントリ(LReg)を識別するビット・フィールド)、およびレジスタ・ファイル・タグ(RFTag)情報を記憶する。履歴バッファ(SRB)390は他の情報を記憶および追跡することもできる。iTag、ならびにエビクトされたそれぞれの論理レジスタ・エントリ(LReg)に対するレジスタ・ファイル・タグ(RFTag)(および他のメタ・データ)を回復するために、履歴バッファ(SRB)390は、論理レジスタ・マッパ350とのインタフェースを有する。これらの情報は、その新たな命令(エビクタ命令)が完了するまで、履歴バッファ(SRB)390の履歴バッファ(SRB)エントリに保持され、一実施形態では、エビクタ命令が完了した時点で、このエントリが履歴バッファ(SRB)390から除去される。
【0032】
多数の処理スライスを有するCPU110は、多数の命令を同時に実行することができることがある。例えば、それぞれの処理スライスで1つの命令を、1回の処理サイクルで同時に実行することができることがある。多数の処理スライスを有するこのようなCPUは、マルチスライス・プロセッサまたはパラレルスライス・プロセッサと呼ばれることがある。多数の実行スライスでの同時処理は、マルチスライス・プロセッサの処理速度をかなり増大させることがある。シングルスレッド(ST)モードでは、単一のスレッドが処理され、SMTモードでは、2つのスレッド(SMT2)または4つのスレッド(SMT4)が同時に処理される。
【0033】
一態様では、
図3に示されているように、それぞれの実行/処理スライスが、それ自体のレジスタ・ファイルを有することができる。別の態様では、スーパー・スライスごとに1つのレジスタ・ファイルを割り振ることができ、その1つのレジスタ・ファイルを、そのスーパー・スライスの処理スライスによって共用することができる。一態様では、1つのレジスタ・ファイルを2つ以上のスーパー・スライスに割り振ることができ、その1つのレジスタ・ファイルを、それらのスーパー・スライスの処理スライスによって共用することができる。例えば、1つのレジスタ・ファイルを共用するようにスライスS0、S1、S2およびS3を割り振ることができる。レジスタ・ファイルについては後により詳細に論じる。
【0034】
プロセッサにおいては、命令の順不同実行を改善するために、インフライト(in-flight)命令のレジスタ・リネーミング(register renaming)を有することは珍しいことではない。しかしながら、高い計算およびスループットを有する実行ユニットが使用される状況、例えばデンス・マス演算状況では、インフライト命令のレジスタ・リネーミングが、ハンドリングに電力を消費しうる多くのデータ移動に帰着することがあり、1つまたは複数の実行バブルのため不必要な遅延および待ち時間を導入することもある。1つまたは複数の実施形態では、アキュムレータ・レジスタ・ファイルが使用され、デンス・マス命令を用いたアキュムレータ・レジスタ・ファイル・リネーミングを使用するプロセスが実行される。アキュムレータ・レジスタ・ファイルおよびアキュムレータ・レジスタ・ファイル・リネーミング・プロセスは、電力を低減させるためおよび実行スループットを改善するために、実行中のデータ移動が最小化されるように使用される。一態様では、アキュムレータ・レジスタ・リネーミング・モードに入るためにアキュムレータ・レジスタが用意される。アキュムレータ・レジスタが用意された後、1つまたは複数の実施形態では、デンス・マス実行ユニット、例えば行列乗算アキュムレータ(MMA)ユニットもしくは推論エンジン、またはその両方が、主レジスタ・ファイルに書き込む必要なしに、アキュムレータ・レジスタの読出しおよび書込みをローカルに実行することができる。デンス・マス実行ユニットは、新たなアキュムレータ・レジスタ・ファイルをリネームする必要なしに、もしくは主レジスタ・ファイルに書き戻す必要なしに、またはその両方を実行する必要なしに、同じアキュムレータ・レジスタ・ファイル・エントリに多数回アクセスし、同じアキュムレータ・レジスタ・ファイル・エントリから多数回読み出し、もしくは同じアキュムレータ・レジスタ・ファイル・エントリに多数回書き込み、またはこれらの組合せを実行することが好ましい。一実施形態では、デンス・マス演算が完了したときに、もしくは所定の演算および命令に応答して、またはデンス・マス演算が完了したときに所定の演算および命令に応答して、アキュムレータ・レジスタ・ファイルの中の結果を、主レジスタ・ファイルもしくは主メモリまたはその両方に書き込むことができる。
【0035】
アキュムレータ・レジスタはMMAユニットにとってローカルであることが好ましく、1つまたは複数の実施形態では、アキュムレータ・レジスタがMMAユニット内にあることができる。さらなる実施形態では、アキュムレータ・レジスタが、主レジスタ・ファイル・エントリのビット・フィールド幅よりも広いビット・フィールド幅を有するエントリを有することができる。一態様では、デンス・マス実行ユニット演算が完了したときにアキュムレータ・レジスタ・ファイルが用意解除される。一態様では、デンス・マス実行ユニット演算が完了したときに、アキュムレータ・レジスタ・ファイルに記憶された結果を、アキュムレータ・レジスタ・ファイルから主レジスタ・ファイルに移動して、後続の命令、例えば後続の非デンス・マス命令がそれらの結果を使用することを可能にすることができる。一実施形態では、主レジスタ・ファイルに書き戻されたアキュムレータ・レジスタ・ファイル・エントリの割振りを解除することができる。1つまたは複数の実施形態では、1つもしくは複数のデンス・マス実行ユニット、例えば1つもしくは複数の推論エンジンおよび/もしくはMMAユニットに関連づけられた1つもしくは複数のアキュムレータ・レジスタ、1つもしくは複数のデンス・マス実行ユニット、例えば1つもしくは複数の推論エンジンおよび/もしくはMMAユニットにとってローカルの1つもしくは複数のアキュムレータ・レジスタ、ならびに/または1つもしくは複数のデンス・マス実行ユニット、例えば1つもしくは複数の推論エンジンおよび/もしくはMMAユニット内に位置する1つもしくは複数のアキュムレータ・レジスタを使用して、デンス・マス命令をハンドリングする、プロセス、プロセッサ・アーキテクチャおよびシステムが記述される。一実施形態では、推論エンジンを、8つの行列乗算アキュムレータ(MMA)ユニットと32個の512ビットアキュムレータ・レジスタのセットとすることができる。
【0036】
図4は、実行ユニット、例えば推論エンジン/MMAユニットに関連づけられたアキュムレータ・レジスタ・ファイルと、ベクトル・スカラ(VS)実行ユニット(VSU)内に位置するベクトル/スカラ(VS)主レジスタ・ファイルとを利用する、処理パイプラインの簡略化されたブロック図を示している。この処理パイプラインまたは実行スライスは、ディスパッチ・ユニット320と、複数のエントリ351(a)~351(n)を有する論理マッパ350と、命令完了テーブル(ICT)325と、発行待ち行列(ISQ)330と、行列乗算アキュムレータ(MMA)ユニット460と、複数のエントリ471(a)~471(n)を有するアキュムレータ・レジスタ・ファイルと、複数のエントリ381(a)~381(n)を有する主(VS)レジスタ・ファイル380を有するVS実行ユニット(VSU)340とを含む。
図4には、アキュムレータ・レジスタ・ファイル470が、推論エンジン/MMAユニット460に関連づけられたものとして、および推論エンジン/MMAユニット460にとってローカルであるものとして示されているが、1つまたは複数の実施形態では、アキュムレータ・レジスタ・ファイル470をMMAユニット460内に置くことができる。1つまたは複数の実施形態では、推論エンジンもしくはMMAまたはその両方の動作の間、アキュムレータ・レジスタ・ファイル470がソースおよびターゲット(アキュムレータ)として利用される。すなわち、一態様では、MMAが動作するときに、MMAが、アキュムレータ・レジスタ・ファイルからのオペランドを使用し、結果をアキュムレータ・レジスタ・ファイルに書き戻し、一実施形態では、MMAが、結果を、同じアキュムレータ・レジスタ・ファイル・エントリ471(n)に書き戻す。1つまたは複数の実施形態では、推論エンジン/MMAユニットの結果を、同じターゲットアキュムレータ・レジスタ・ファイル・エントリ471(n)に多数回、書き戻すことができる。このようすると、VSまたは主レジスタ・ファイルを含むプロセッサは、推論エンジンまたはMMAの動作中に、リネーミング動作を経験しない。
【0037】
1つまたは複数の実施形態では、アキュムレータ・レジスタ・ファイル470のビット・フィールド幅が、主(VS)レジスタ・ファイル380のビット・フィールド幅よりも広い。一実施形態では、アキュムレータ・レジスタ・ファイル470が、ビット幅の広いアキュムレータ・レジスタ・ファイル・エントリ471(a)~471(n)のプールである。例えば、一実施形態では、アキュムレータ・レジスタ・ファイル470が、64個の512ビット物理レジスタ・エントリ471のプールであり、主VSレジスタ・ファイルの幅が128ビットである。一実施形態では、それぞれのアキュムレータ・レジスタ・ファイル・エントリ471が複数の主レジスタ・ファイル・エントリを保持し、一実施形態では、それぞれのアキュムレータ・レジスタ・ファイル・エントリ471が、4つの連続した主VSレジスタ・ファイル・エントリ(381(n)~381(n+3))のセットを保持する。
図5の簡略化されたブロック図には、4つのエントリ381(a)~381(d)を有するVSまたは主レジスタ・ファイル380が示されており、4つのエントリ381(a)~381(d)は、アキュムレータ・レジスタ・ファイル470内の単一のアキュムレータ・レジスタ・エントリ471にマップされている。一例では、4つの連続した128ビット主VSレジスタ・ファイル・エントリ381(a)~381(d)が、単一の512ビットアキュムレータ・レジスタ・ファイル・エントリ471にマップされている。1つまたは複数の実施形態では、1スレッドにつき8つの論理アキュムレータ・レジスタ(ACC0~ACC7)が存在する。これらの8つの論理アキュムレータ・レジスタは、アキュムレータ・アレイ内、例えばアキュムレータ・レジスタ・ファイル内の32個の物理レジスタにマップされている。
【0038】
命令は、デンス・マス実行ユニット、例えば推論エンジンまたは1つもしくは複数のMMAユニットあるいはその両方を準備およびランするために使用される。一般行列階数演算(General Matrix Rank Operation)(「ger」)命令が一例であり、1つまたは複数の態様では、一般行列階数演算(「ger」)命令が、2nのデータに対してn2の演算を実行する。推論エンジン/MMAユニット・ワークロードは通常、3つの部分を有する。アキュムレータ・レジスタ・ファイルは、その演算を実行するための最初のデータを用いて用意される。MMAユニットでは乗算演算が実行され、結果がアキュムレータ・レジスタ・ファイルに累積される。そして、一態様では、デンス・マス実行ユニットが完了したときに、もしくある命令に応答して、またはデンス・マス実行ユニットが完了したときにある命令に応答して、アキュムレータ・レジスタ・ファイルの中の結果がメモリ、例えば主レジスタ・ファイルもしくは主メモリまたはその両方に書き戻される。アキュムレータ命令(「ger」命令)は普通、2つのVSRオペランド・ソース、1つのアキュムレータVSR行先および1つのアキュムレータVSRソースを有する。
【0039】
デンス・マス演算、例えばMMAユニット演算を開始するため、1つまたは複数の実施形態では、プロセッサが、デンス・マス命令、例えば推論エンジン/MMAユニット「ger」命令をデコードもしくは検出し、またはデコードおよび検出する。一実施形態では、それぞれのデンス・マス命令が、iTagを有し、1つの完全ディスパッチ・レーンおよび1つの完全発行待ち行列(ISQ)エントリを利用する。一態様では、主レジスタ・マッパ350が、デンス・マス命令、例えばMMAユニット命令ごとに、4つのターゲット(主レジスタ・ファイル・エントリ)を割り当てる。一実施形態ではさらに、主レジスタ・マッパ350が、主レジスタ・マッパ350からマッパ・エントリをエビクトする。同じアキュムレータ・レジスタ・ファイル・エントリ、例えば
図4の471(a)に書き込む命令に関して、主レジスタ・マッパ350は、新たな主レジスタ・ファイル・タグRFTags(エントリ)を割り振らないが、新たな命令のための新たなiTagを必要とする。1つまたは複数の態様では、アキュムレータ・レジスタ・ファイル470を利用するデンス・マス命令(iTag)が完了した場合、アキュムレータ・レジスタ・ファイル470が結果を主レジスタ・ファイル380に書き込まなかった場合には、主レジスタ・ファイル・エントリ(RFTags)の割振りが解除されない。例えばより若い非デンス・マス命令に応答して、対応するアキュムレータ・レジスタ・ファイル・エントリの中のデータが、そのデータを主レジスタ・ファイル380に書き戻すためにプッシュされたとき、もしくは、例えばより若い非デンス・マス命令に応答して、対応するアキュムレータ・レジスタ・ファイル・エントリの中のデータが、そのデータを主レジスタ・ファイル380に書き戻すためにプッシュされたことに応答して、またはその両方で、主レジスタ・ファイル・エントリ(RFTag)の割振りは解除される。
【0040】
一実施形態では、主レジスタ・マッパ350が、アキュムレータ・レジスタ・ファイル・エントリにマップされた主レジスタ・ファイル・エントリにマークを付ける。一態様では、主レジスタ・マッパ350が、複数の連続した主レジスタ・ファイル・エントリ381、例えばVSR(n)~VSR(n+3)に、同じアキュムレータ・レジスタ・ファイルiTagを書き込む。すなわち、1つのiTagが、一群の連続した主レジスタ・ファイル・エントリ、例えば4つの主レジスタ・ファイル・エントリ381(n)~381(n+3)にエイリアシングされる。アキュムレータ・レジスタ・ファイル・エントリに割り当てられた主レジスタ・ファイル・エントリ(ロックアウトされた主レジスタ・ファイル・エントリ)の読出しまたは書込みを実施するより若い非デンス・マス命令は、書戻しプロセスを開始することを発行待ち行列(ISQ)330に通知する。1つまたは複数の実施形態では、アキュムレータ・レジスタ・ファイル470からアキュムレータ・レジスタの内容を読み出すために、アキュムレータから移動する一連の命令が、ディスパッチ・ユニット320によって送られ、発行ユニット330によって発行される。1つまたは複数の代替実施形態では、この書戻しプロセスが、ディスパッチ・ユニット320を停止すること、および発行待ち行列が命令を発行することを再開することができるようになるのに先立ってアキュムレータ・レジスタ・ファイル470の中のデータをドレーンすることを発行待ち行列330に通知することを含む。一態様では、順番に発行するために、同じ一群の主レジスタ・ファイル・エントリに書き込む命令にマークが付けられる。
【0041】
1つまたは複数の実施形態では、アキュムレータ・レジスタ・ファイル470を利用するデンス・マス命令が、好ましくはレジスタ番号によって、一態様では命令のタイプによって、発行待ち行列330から順番に発行される。一態様では、アキュムレータ・レジスタ・ファイルを利用するデンス・マス命令の発行率が、(2サイクル以上かかることがあるアキュムレータ・レジスタ・ファイルを用意するために発行される最初の命令を除いて)1サイクル当たり1つである。アキュムレータ・レジスタ・ファイルを利用する命令は、順番にかつ連続的に発行されることが好ましい。アキュムレータ・レジスタ・ファイルを利用するより古い命令がある場合、発行待ち行列は、そのより古い命令を発行することができる。これは、より古い命令は、主レジスタ・ファイルの読出しまたは書込みを実行するが、主レジスタ・ファイルに書き戻すためにアキュムレータ・レジスタ・ファイルの中のデータをプッシュすることができるまで、アキュムレータ・レジスタ・ファイルは、アキュムレータ・レジスタ・ファイルだけを更新するためである。
【0042】
1つまたは複数の実施形態では、アキュムレータ・レジスタ・ファイルを用意すべきである。1つまたは複数の実施形態では、必要に応じて、それぞれのアキュムレータ・レジスタ・ファイルが用意される。アキュムレータ・レジスタ・ファイルがデータ・ソースである場合には、アキュムレータ・レジスタ・ファイルを利用するデンス・マス演算、例えばMMA演算を開始するために、アキュムレータ・レジスタ・ファイル、特に、データを利用するアキュムレータ・レジスタ・ファイル・エントリを用意すべきである。アキュムレータ・レジスタ・ファイルは、メモリ、例えば主レジスタ・ファイルもしくは主メモリまたはその両方からアキュムレータ・レジスタ・ファイルに書き込まれるときに、あるいはプライミング命令の結果として用意される。例えば、命令、例えばxxmtaccは、アキュムレータ・レジスタ・ファイルと主(VS)レジスタ・ファイルとを同期させるために、データを、主(VS)レジスタ・ファイルからアキュムレータ・レジスタ・ファイルに移動させることができる。別の例において、命令、例えばlxaccは、データをロードし、主メモリからアキュムレータ・レジスタ・ファイルに移動させることができる。さらなる例では、アキュムレータ・レジスタ・ファイルの1つまたは複数のエントリの中のデータがゼロにセットされている場合に、アキュムレータ・レジスタ・ファイルが用意される。アキュムレータ・レジスタ・ファイルを用意する他の命令も企図される。
【0043】
一実施形態では、ベクトル・スカラ(VS)実行ユニット(VSU)が、主(VS)レジスタ一次データおよびプライミングを実行している命令のiTagを、適切なアキュムレータ・レジスタ・ファイル・エントリに書き込む。アキュムレータ・レジスタ・ファイルのプライミングはさらに、アキュムレータ・レジスタ・リネームを割り振る。プライミングにおいて、アキュムレータ・レジスタ・ターゲットはリネームされ、物理レジスタ・ファイル・エントリにマップされる。
図5を参照すると、プライミングの一例の間に、アキュムレータ・レジスタ・リネームが割り振られ、エントリ381(a)~381(d)の中のVSレジスタ・データが、割り振られたアキュムレータ・レジスタ・エントリ471に書き込まれる。1つまたは複数の実施形態では、VS実行ユニットが、主(VS)レジスタ・ファイル・データおよびプライミングを実行している命令のiTagを、マップされたアキュムレータ・レジスタ・ファイルに書き込む。1つまたは複数の実施形態では、アキュムレータ・フリー・リスト472が、割り振られたフリー・アキュムレータ・タグのカウントを維持する。これらのアキュムレータ・タグは、アキュムレータ・レジスタ・ファイル・エントリを識別する。一態様では、アキュムレータ・レジスタ・ファイル・エントリが現在アクティブであることを示すために、アキュムレータ・レジスタ・ファイル・ビジー・フラグが使用される。全てのアキュムレータ・レジスタ・ファイル・エントリが占有されたとき、ディスパッチは、主レジスタ・リソースの機能停止と同様に機能を停止する。
【0044】
1つまたは複数の実施形態では、アキュムレータ・レジスタ・ファイルを利用する命令が最初に発行されるときに、アキュムレータ・レジスタ・ファイルを用意するのに連続する2サイクルがかかる。一実施形態では、アキュムレータ・ビジー・フラグがセットされていない場合に、命令を発行するのに2サイクルかかる。これは、アキュムレータ・レジスタ・ファイルを用意/再用意する必要があり、また、主レジスタ・ファイルは、ソースとしてのアキュムレータ・レジスタ・ファイルを読む必要があるためである。アキュムレータ・レジスタ・ファイルを利用する命令が2回目に発行されるときには、発行するのに1サイクルかかることが好ましい。アキュムレータ・レジスタのプライミングおよびデプライミング中には、それぞれのアキュムレータ・レジスタ・ファイル・エントリに対して、多数の主レジスタ・ファイル・タグ、例えば4つの主レジスタ・ファイル・タグが1ショットで発行される。
【0045】
デンス・マス演算では、サイクルごとに、アキュムレータ・レジスタ・ファイルが主(VS)レジスタ・ファイルに読み書きされることはない。その代わりに、アキュムレータ・レジスタ・ファイルを使用することによって、大きなデータ結果が、デンス・マス・エンジン、例えばMMAユニットにとってローカルのまま維持される。すなわち、MMAユニット演算はアキュムレータ・レジスタ・ファイルに書き戻される。一態様では、同じアキュムレータ・レジスタ・ファイルに多数回、例えば複数回、書き込まれる。一実施形態では、アキュムレータ・レジスタ・ファイル・エントリが、全ての命令でリネームされない。1つまたは複数の実施形態では、MMA演算の間、アキュムレータ・レジスタ・ファイルが、ソースおよびターゲット(アキュムレータ)として利用される。
図5のループ475は、アキュムレータ・レジスタ470内の同じターゲット・エントリ471に再び書込むMMAユニットの動作を示している。
【0046】
それぞれのMMAユニット命令は、単一のアキュムレータ・レジスタ・ファイル・エントリに書込みを実行し、ターゲットアキュムレータ・レジスタ・エントリの状態をダーティ(dirty)にセットする。ダーティは、アキュムレータ・レジスタ・ファイル・エントリと対応する主(VS)レジスタ・ファイル・エントリとが同期していないことを示す。MMAユニット命令、例えば「ger」命令に関して、アキュムレータ・レジスタ・ファイルは結果を記憶し、主(VS)レジスタ・ファイルは結果を記憶しない。データは、主実行ユニット内、例えばVSU内の主レジスタ・ファイルに書き戻されず、その一方で、主実行ユニットは、発行待ち行列から新たな命令を受け取ったときに、アキュムレータ・レジスタ・ファイルiTagを更新する。アキュムレータ・レジスタ・ファイル・エントリを利用する命令に関して、アキュムレータ・レジスタ・ファイルを利用するより若い命令のiTagは、より古いiTagに取って代わるが、主レジスタ・ファイル・タグ(RFTag)は変化しない。
【0047】
いくつかのシナリオに応答して、アキュムレータ・レジスタ・ファイルは用意解除され、アキュムレータ・レジスタ・ファイルのデータは書き戻される。一実施形態では、命令に応答して、もしくはアキュムレータ・レジスタがダーティとなった後に主(VS)レジスタ・ファイルがソースとされた場合に、またはその両方で、アキュムレータ・レジスタ・ファイルが書き戻され、もしくは用意解除され、またはその両方が実行される。例えば、アキュムレータ・レジスタから主(VS)レジスタ・ファイルに移動する命令、例えばxxmfaccに応答して、アキュムレータ・レジスタ・ファイルは用意解除され、アキュムレータ・レジスタ・ファイルの中の結果は、アキュムレータ・レジスタ・ファイルから移動され、主(VS)レジスタ・ファイルに書き戻される。別の例では、アキュムレータ・レジスタ・ファイルから移動し、記憶する命令、例えばstxaccに応答して、アキュムレータ・レジスタ・ファイルは用意解除され、アキュムレータ・レジスタ・ファイルの中の結果は主メモリに書き戻される。1つまたは複数の実施形態では、アキュムレータ・レジスタ・ファイル・エントリがダーティであり、主(VS)レジスタ・ファイルによってアクセスされたときに、ハードウェアがアキュムレータ・レジスタを用意解除する。一実施形態では、ハードウェアが、全てのアキュムレータ・レジスタを主(VS)レジスタ・ファイルに書き戻すシーケンスをランする。一態様では、それぞれのアキュムレータ・レジスタ・ファイル・エントリが用意解除され、アキュムレータ・レジスタ・ファイルの中のデータが主VSレジスタ・ファイルに書き込まれ、さらに、リネーム・プールから、アキュムレータ・レジスタ・ファイルの割振りが解除される。1つまたは複数の実施形態では、アキュムレータ・レジスタが用意され、主(VS)レジスタ・ファイルがターゲットとされた場合には、たとえアキュムレータ・レジスタがダーティでなかった場合でも、アキュムレータ・レジスタが用意解除される。
【0048】
より若い主実行ユニット命令、例えばVSU命令が、アクティブなアキュムレータ・レジスタ・ファイルにマップされた主レジスタ・ファイルに接触したことに応答して、一実施形態では、影響を受けたアキュムレータ・レジスタ・ファイル・エントリの書戻しを開始するよう、発行待ち行列に合図が送られる。好ましい一実施形態では、これを、命令ストリームに挿入された一連の内部演算の実行によって実行することができる。一態様では、アキュムレータ・レジスタがドレーンされるまで、発行待ち行列が、ディスパッチ・ユニットを停止する。すなわち、アキュムレータ・レジスタ・ファイルは、データを、対応する主レジスタ・ファイル・エントリに書き戻す。一態様では、データを主レジスタ・ファイルに書き戻すのに多くのサイクルがかかり、例えば、アキュムレータ・レジスタ・ファイル・エントリが4つの主レジスタ・ファイル・エントリにマップされている場合には4サイクルがかかる。主実行ユニット、例えばVSUは、アキュムレータ・レジスタ・ファイル・データの最後の部分が書き戻されると、書戻しを終了する。書戻しが完了すると、「ACCビジー」フラグがリセットされる(クリアされる)。アキュムレータ・レジスタ・ファイルを利用するデンス・マス命令は単一の命令であり、命令完了テーブル(ICT)325の1つのエントリをとる。アキュムレータ・レジスタ・ファイルの中のデータの最後の部分が主レジスタ・ファイルに書き戻されたときに、アキュムレータ・レジスタ命令は完了となる。主レジスタ・ファイル・エントリ(RFTags)の割振りを解除するため、完了した命令のiTagは、履歴バッファ(
図4には示されていない)に一斉送信される。プロセッサは次いで、より若い非デンス・マス命令を処理する。この処理は、主レジスタ・ファイルからデータを読み出すことを含む。さらに、アキュムレータ・レジスタ・ファイルがドレーンされ、ACCビジー・フラグがクリアされた後、発行待ち行列は、命令の発行を再開することができ、ディスパッチ・ユニットは、命令のディスパッチを再開することができる。
【0049】
一態様では、デンス・マス命令、例えば「ger」命令が、(例えばxxmtaccまたはldaccによる)最後の用意解除以後、用意されなかったアキュムレータ・レジスタ・ファイルをソースとするときに、ハードウェアが、そのアキュムレータ・レジスタ・ファイル・エントリを用意する。ハードウェアは、アキュムレータ・レジスタ・ファイルを用意し、アキュムレータ・レジスタ・ファイル・エントリを割り振る(リネーム)シーケンスをランする。次いでデンス・マス命令が実行される。
【0050】
図6は、ローカル・アキュムレータ・レジスタ・ファイルに関連づけられた1つまたは複数のデンス・マス実行ユニット、例えば行列乗算アキュムレータ(MMA)ユニットを有するプロセッサの別の実施形態を示しており、このプロセッサは、1つまたは複数のデンス・マス・ユニットの動作が同じアキュムレータ・レジスタ・ファイル・エントリに結果を多数回、書き戻すように構成されている。
図6は、データをハンドリングするためのプロセッサの2つのスーパー・スライスを示している。それぞれのスーパー・スライスは、少なくとも1つのMMAユニット460、2つのベクトル・スカラ(VS)実行ユニット306、および2つのロード記憶(LS)ユニット304を含む。両方のMMAユニット460に接続された単一のアキュムレータ・レジスタ・ファイル470が使用される。代替実施形態では、それぞれの実行スライスが、ローカル・アキュムレータ・レジスタ・ファイルを有するそれ自体のMMAユニットを有することができ、さらなる態様では、それぞれのMMAユニットが、それぞれの実行スライスのMMAユニット内に含まれるアキュムレータ・レジスタ・ファイルを有する。
図6の実施形態では、スーパー・スライス0の発行待ち行列(ISQ)1 330bおよびスーパー・スライス1の発行待ち行列(ISQ)2 330cが、対応するそれぞれのMMAユニット(460aおよび460b)に命令、例えば「ger」命令を発行する。あるいは、
図6の点線によって示されているように、発行待ち行列(ISQ)0 330aおよび発行待ち行列(ISQ)3 330dが、対応するそれぞれのスーパー・スライスのそれぞれのMMAユニット(460aおよび460b)に命令、例えば「ger」命令を発行することができる。
【0051】
図7は、プロセッサ内でデータをハンドリングする方法、例えばプロセッサ内で命令を実行する方法を示し説明する、一実施形態による例示的な流れ図であり、一実施形態では、この方法が、本開示の一実施形態に従ってプロセッサ内でデンス・マス命令、例えばMMA(「ger」)命令を処理およびハンドリングすることを含む。方法700は、便宜上、および本開示を限定する意図なしに、一連のステップもしくはいくつかのステップまたはその両方を含むものとして説明されているが、このプロセスを一連のステップとして実行する必要はなく、もしくはそれらのステップを、
図7に関して示され説明された順序で実行する必要はなく、またはこの両方を実行する必要はないが、このプロセスを統合することができ、または1つもしくは複数のステップを一緒に同時に実行することができ、あるいはこの両方を実行することができ、あるいは、これらのステップを、開示された順序でもしくは交互の順序で実行することができることを理解すべきである。
【0052】
図7の方法700は、プロセッサ内でデータを処理することに関し、より詳細には、デンス・マス実行ユニット、例えばMMA実行ユニットを使用することによってデンス・マス演算をハンドリングすることに関する。705で、デンス・マス実行ユニットが提供される。一例では、デンス・マス実行ユニットが行列乗算アキュムレータ(MMA)ユニットである。1つまたは複数の例では、デンス・マス実行ユニットを、推論エンジンとして構成された多数のMMAユニットとすることができる。他のデンス・マス実行ユニットも企図される。1つまたは複数の実施形態では、710で、デンス・マス実行ユニットに関連づけられたアキュムレータ・レジスタ・ファイルが提供される。一実施形態では、このアキュムレータ・レジスタ・ファイルが、1つまたは複数のデンス・マス実行ユニットにとってローカルであり、一態様では、アキュムレータ・レジスタ・ファイルがMMAユニット内にある。アキュムレータ・レジスタ・ファイルは、プロセッサ内の主レジスタ・ファイルのビット・フィールド幅よりも広いビット・フィールド幅を有することが好ましい。一実施形態では、アキュムレータ・レジスタ・ファイルの幅が512ビットであり、プロセッサ内の主レジスタ・ファイルの幅が128ビットである。一態様によれば、アキュムレータ・レジスタ・ファイルに2つ以上の主レジスタ・ファイル・エントリがマップされている。例えば、4つの連続した主レジスタ・ファイルが1つのアキュムレータ・レジスタ・ファイルにマップされている。
【0053】
1つまたは複数の実施形態では、デンス・マス実行ユニット演算のための命令に応答して、715で、アキュムレータ・レジスタ・ファイルが用意される。例えば、アキュムレータ・レジスタ・ファイルが、デンス・マス実行ユニット演算のためのソースである場合に、アキュムレータ・レジスタ・ファイルを用意する。一実施形態では、アキュムレータ・レジスタ・ファイルを用意することが、アキュムレータ・レジスタ・ファイルの中のデータを、主レジスタ・ファイル、例えばVSレジスタ・ファイルの中にあるデータ、または主メモリの中にあるデータと同期させることを含む。アキュムレータ・レジスタ・ファイルを用意することはさらに、アキュムレータ・レジスタ・ファイルの中のデータを消去すること、例えば、アキュムレータ・レジスタ・ファイル・エントリの中のデータを0にセットすることを含むことができる。1つまたは複数の実施形態では、デンス・マス命令、例えば「ger」命令が、アキュムレータ・レジスタ・ファイル・ソース・データを持たないことができ、そのデンス・マス命令はセルプライミングであるとみなされる。アキュムレータ・レジスタ・ファイルは、そのアキュムレータ・レジスタ・ファイルに、主レジスタ・ファイルから、または主メモリから、またはセルプライミング命令の結果として、最初に書込みがなされたときに、用意される(アキュムレータ・レジスタ・ファイル・エントリの中のデータがゼロにセットされている場合)。1つまたは複数の実施形態では、アキュムレータ・レジスタ・ファイルがアキュムレータ・レジスタ・ファイル・リネームを割り振り、アキュムレータ・ファイルが用意され、アキュムレータ・レジスタ・ファイルの中のデータの値が、主レジスタ・ファイルの中の値にセットされ、または主メモリの中の値にセットされ、またはゼロにセットされる。
【0054】
1つまたは複数の実施形態では、720で、デンス・マス実行ユニット、例えばMMA、もしくは推論エンジン、またはその両方が、デンス・マス演算を経る。すなわち、1つまたは複数のデンス・マス実行ユニット、例えば推論エンジンもしくはMMAユニットまたはその両方を使用してデンス・マス演算が実行される。一実施形態では、725で、デンス・マス実行ユニットの結果、例えば推論エンジン結果もしくはMMAユニット結果またはその両方が、アキュムレータ・レジスタ・ファイルに書き戻される。すなわち、デンス・マス実行ユニット演算の間、アキュムレータ・レジスタ・ファイルはソースとターゲットの両方として使用される。デンス・マス実行ユニットの結果は、リネームすることなく、同じターゲットアキュムレータ・レジスタ・ファイルに多数回、書き戻されることが好ましい。すなわち、一実施形態では、単一のアキュムレータ・レジスタ・ファイル・ターゲット・リネームに多数回、再書込みすることができる。1つまたは複数の態様では、デンス・マス実行ユニット命令、例えば「ger」命令に応答して、主レジスタ・ファイルへの書戻しが実行されず、その代わりに、デンス・マス実行ユニット、例えばMMAユニットにとってローカルなアキュムレータ・レジスタが結果を記憶し、主レジスタ・ファイルは結果を記憶しない。このように、デンス・マス実行ユニット、例えば推論エンジンもしくはMMAユニットまたはその両方は、主レジスタ・ファイル・エントリをリネームすることなく動作する。一実施形態では、デンス・マス実行ユニットが結果をアキュムレータ・レジスタに書き戻したことに応答して、アキュムレータ・レジスタ・ファイル・エントリにフラグが立てられまたはマークが付けられる。例えばダーティのマークが付けられる。
【0055】
1つまたは複数の実施形態では、730で、アキュムレータ・レジスタ・ファイル結果が、主レジスタ・ファイルもしくは主メモリまたはその両方に書き戻される。一実施形態では、デンス・マス実行ユニット演算が完了したときに、アキュムレータ・レジスタ・ファイルの結果が、主レジスタ・ファイルもしくは主メモリまたはその両方に書き戻される。一実施形態では、アキュムレータ・レジスタが用意解除され、アキュムレータ・レジスタ・ファイルの中の値が主レジスタ・ファイル(または主メモリ)に書き込まれ、アキュムレータ・レジスタ・ファイル・エントリの割振りが解除される。一実施形態によれば、命令に応答して、例えば、アキュムレータ・レジスタ・ファイル・エントリから主レジスタ・ファイルに移動する命令(xxmfacc)、およびアキュムレータ・レジスタ・ファイル・エントリから移動し、命令を記憶する命令(stxacc)に応答して、主レジスタ・ファイルに書き戻される。アキュムレータ・レジスタ・ファイル・エントリにマップされた主レジスタ・ファイル・エントリがソースまたはターゲットとされ、アキュムレータ・レジスタ・ファイル・エントリがダーティであるときにも、アキュムレータ・レジスタの結果は主レジスタ・ファイルに書き戻される。一態様では、定義された読出しアキュムレータ命令が、データを、アキュムレータ・レジスタ・ファイルから主レジスタ・ファイルに移動させる。一実施形態では、アキュムレータが読まれた後に、一連の記憶動作、例えば「オクト/カッド語」記憶動作が、主レジスタ・ファイルを読み、主メモリに書き込む。
【0056】
一実施形態では、アキュムレータ・レジスタ・ファイル・エントリがダーティであり、アキュムレータ・レジスタ・ファイル・エントリが主レジスタによってアクセスされたときに、ハードウェアが、アキュムレータ・レジスタ・ファイルを用意解除する。一態様では、マップされたアキュムレータ・レジスタ・エントリが用意されたときに、主レジスタ・ファイル・エントリがターゲットとされたときには、たとえアキュムレータ・レジスタがダーティでなかった場合でも、ハードウェアがアキュムレータ・レジスタを用意解除する。ハードウェアは、全てのアキュムレータ・レジスタ・ファイル・エントリを主レジスタ・ファイルに書き戻すシーケンスをランし、主レジスタ・ファイル・エントリをターゲットとする動作が実行され、リネーム・プールから、それぞれのアキュムレータ・レジスタ・ファイル・エントリの割振りが解除される。
【0057】
一態様では、デンス・マス命令、例えば「ger」命令が、(例えばxxmtaccまたはldaccによる)最後の用意解除以後、用意されなかったアキュムレータ・レジスタ・ファイルをソースとするときに、ハードウェアが、そのアキュムレータ・レジスタ・ファイル・エントリを用意する。一態様では、ハードウェアが、アキュムレータ・レジスタ・ファイルを用意し、アキュムレータ・レジスタ・ファイル・エントリを割り振る(リネーム)シーケンスをランする。次いでデンス・マス命令が実行される。
【0058】
上で説明した例示的な実施形態は、プロセッサのユニット内および回路内など、ハードウェア内で実施されることが好ましいが、例示的な実施形態のさまざまな態様をソフトウェアで実施することもできる。例えば、
図7に示された流れ図のそれぞれのブロックおよび流れ図の中のブロックの組合せを、コンピュータ・プログラム命令によって実施することができることが理解される。これらのコンピュータ・プログラム命令を、プロセッサまたは他のプログラム可能データ処理装置に提供して、プロセッサ上または他のプログラム可能データ処理装置上で実行される命令が、流れ図の1つまたは複数のブロックの中に指定された機能を実施する手段を生成するようなマシンを生み出すことができる。これらのコンピュータ・プログラム命令を、特定の方式で機能するようプロセッサまたは他のプログラム可能データ処理装置に指示することができるコンピュータ可読メモリまたはストレージ媒体に記憶して、コンピュータ可読メモリまたはストレージ媒体に記憶された命令が、流れ図の1つまたは複数のブロックの中に指定された機能を実施する命令手段を含む製品を生成するようにすることもできる。
【0059】
したがって、この流れ図のブロックは、指定された機能を実行する手段の組合せ、指定された機能を実行するステップの組合せ、および指定された機能を実行するプログラム命令手段をサポートする。指定された機能もしくはステップを実行するハードウェアベースの専用コンピュータ・システムによって、または専用ハードウェアとコンピュータ命令の組合せによって、流れ図のそれぞれのブロックおよび流れ図のブロックの組合せを実施することができることも理解される。
【0060】
本発明は、インテグレーションの可能な技術的詳細レベルにおいて、システム、方法もしくはコンピュータ・プログラム製品、またはこれらの組合せであることがある。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体を含むことがある。
【0061】
このコンピュータ可読ストレージ媒体は、命令実行デバイスが使用するための命令を保持および記憶することができる有形のデバイスとすることができる。このコンピュータ可読ストレージ媒体は例えば、限定はされないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイスまたはこれらの適当な組合せとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リードオンリー・メモリ(ROM)、消去可能なプログラマブル・リードオンリー・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リードオンリー・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、機械的にコード化されたデバイス、例えばパンチカードまたはその上に命令が記録された溝の中の一段高くなった構造体、およびこれらの適当な組合せを含む。本明細書で使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が一過性の信号、例えば電波もしくは他の自由に伝搬する電磁波、ウェーブガイドもしくは他の伝送体内を伝搬する電磁波(例えば光ファイバ・ケーブル内を通る光パルス)、または電線を通して伝送される電気信号であると解釈されるべきではない。
【0062】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から対応するそれぞれのコンピューティング/処理デバイスにダウンロードすることができ、またはネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはこれらの組合せを介して外部コンピュータもしくは外部ストレージ・デバイスにダウンロードすることができる。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータもしくはエッジ・サーバ、またはこれらの組合せを含むことができる。それぞれのコンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を、対応するそれぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に記憶するために転送する。
【0063】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、もしくは集積回路用のコンフィギュレーション・データであってもよく、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同種のプログラミング言語などの手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれた、ソース・コードもしくはオブジェクト・コードであってもよい。このコンピュータ可読プログラム命令は、全体がユーザのコンピュータ上で実行されてもよく、一部がユーザのコンピュータ上で実行されてもよく、独立型ソフトウェア・パッケージとして実行されてもよく、一部がユーザのコンピュータ上で、一部がリモート・コンピュータ上で実行されてもよく、または全体がリモート・コンピュータもしくはリモート・サーバ上で実行されてもよい。上記の最後のシナリオでは、リモート・コンピュータが、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、またはこの接続が、外部コンピュータに対して(例えばインターネット・サービス・プロバイダを使用してインターネットを介して)実施されてもよい。いくつかの実施形態では、本発明の態様を実施するために、例えばプログラム可能論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA)またはプログラム可能論理アレイ(PLA)を含む電子回路が、このコンピュータ可読プログラム命令の状態情報を利用してその電子回路をパーソナライズすることにより、このコンピュータ可読プログラム命令を実行してもよい。
【0064】
本明細書では、本発明の態様が、本発明の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品の流れ図もしくはブロック図またはその両方の図を参照して説明される。それらの流れ図もしくはブロック図またはその両方の図のそれぞれのブロック、およびそれらの流れ図もしくはブロック図またはその両方の図のブロックの組合せは、コンピュータ可読プログラム命令によって実施することができることが理解される。
【0065】
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータのプロセッサ、または機械を形成する他のプログラム可能データ処理装置のプロセッサに、それらのコンピュータのプロセッサまたは他のプログラム可能データ処理装置のプロセッサによって実行されるこれらの命令が、これらの流れ図もしくはブロック図またはその両方の図のブロックに指定された機能/動作を実施する手段を生成するような態様で、提供することができる。これらのコンピュータ可読プログラム命令はさらに、特定の方式で機能するようにコンピュータ、プログラム可能データ処理装置もしくは他のデバイスまたはこれらの組合せに指図することができるコンピュータ可読ストレージ媒体に、その中に命令が記憶されたコンピュータ可読ストレージ媒体が、これらの流れ図もしくはブロック図またはその両方の図のブロックに指定された機能/動作の態様を実施する命令を含む製品を含むような態様で、記憶することができる。
【0066】
これらのコンピュータ可読プログラム命令はさらに、コンピュータ、他のプログラム可能装置または他のデバイス上で一連の動作ステップを実行させて、コンピュータによって実施されるプロセスを生み出すために、このコンピュータ、他のプログラム可能データ処理装置または他のデバイス上に、このコンピュータ、他のプログラム可能装置または他のデバイス上で実施されるこれらの命令が、これらの流れ図もしくはブロック図またはその両方の図のブロックに指定された機能/動作を実施するような態様で、ロードすることができる。
【0067】
添付図中の流れ図およびブロック図は、本発明のさまざまな実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能および動作を示す。この点に関して、それらの流れ図またはブロック図のそれぞれのブロックは、指定された論理機能を実施する1つまたは複数の実行可能命令を含む、命令のモジュール、セグメントまたは部分を表すことがある。いくつかの代替実施態様では、ブロックに示された機能を、図に示された順序とは異なる順序で実行することができる。例えば、連続して示された2つのブロックが、実際は、実質的に同時に実行されることがあり、または、含まれる機能によってはそれらのブロックが時に逆の順序で実行されることもある。それらのブロック図もしくは流れ図またはその両方の図のそれぞれのブロック、ならびにそれらのブロック図もしくは流れ図またはその両方の図のブロックの組合せを、指定された機能もしくは動作を実行しまたは専用ハードウェアとコンピュータ命令の組合せを実施するハードウェアベースの専用システムによって実施することができることにも留意すべきである。
【0068】
さらに、さまざまな実施形態によるシステムは、プロセッサおよび論理を含むことができ、この論理は、プロセッサと統合されており、もしくはプロセッサによって実行可能であり、またはその両方である。この論理は、本明細書に記載されたプロセス・ステップのうちの1つまたは複数のプロセス・ステップを実行するように構成されている。統合されているという表現は、プロセッサが、それとともに埋め込まれた論理を、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)などのハードウェア論理として有することを意味する。プロセッサによって実行可能であるという表現は、その論理が、プロセッサによってアクセス可能であり、プロセッサによって実行されたときになんらかの機能をプロセッサに実行させるように構成された、ハードウェア論理;ファームウェア、オペレーティング・システムの部分、アプリケーション・プログラムの部分などのソフトウェア論理;など、またはハードウェア論理とソフトウェア論理のなんらかの組合せであることを意味する。ソフトウェア論理は、当技術分野で知られている任意のメモリ・タイプのローカルおよび/またはリモート・メモリ上に記憶されたものとすることができる。ソフトウェア・プロセッサ・モジュールもしくはハードウェア・プロセッサまたはその両方などの当技術分野で知られている任意のプロセッサ、例えばASIC、FPGA、中央処理ユニット(CPU)、集積回路(IC)、グラフィック処理ユニット(GPU)などを使用することができる。
【0069】
上述のシステムもしくは方法またはその両方のさまざまな機能を任意の形で組み合わせて、複数の組合せを生み出すことができることは、上に示した説明から明らかである。
【0070】
さらに、本発明の実施形態は、要求に応じてサービスを提供するために、顧客のために展開されるサービスの形態で提供されることがあることが理解される。
【0071】
本発明のさまざまな実施形態の説明は例示のために示したものであり、それらの説明が網羅的であること、または開示された実施形態に限定されることは意図されていない。当業者には、記載された実施形態の範囲および思想を逸脱しない多くの変更および変形が明らかとなろう。本明細書で使用されている用語は、実施形態の原理、実際的用途、もしくは市場に出ている技術には見られない技術的改良を最もうまく説明するように、または本明細書に開示された実施形態を他の当業者が理解することができるように選択した。