Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7513360B2 - マイクロプロセッサにおけるアキュムレータ・レジスタ結果のチェックポイント化 - Google Patents
[go: Go Back, main page]

JP7513360B2 - マイクロプロセッサにおけるアキュムレータ・レジスタ結果のチェックポイント化 - Google Patents

マイクロプロセッサにおけるアキュムレータ・レジスタ結果のチェックポイント化 Download PDF

Info

Publication number
JP7513360B2
JP7513360B2 JP2022533123A JP2022533123A JP7513360B2 JP 7513360 B2 JP7513360 B2 JP 7513360B2 JP 2022533123 A JP2022533123 A JP 2022533123A JP 2022533123 A JP2022533123 A JP 2022533123A JP 7513360 B2 JP7513360 B2 JP 7513360B2
Authority
JP
Japan
Prior art keywords
register file
checkpoint
accumulator register
accumulator
entries
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022533123A
Other languages
English (en)
Other versions
JP2023504652A (ja
Inventor
バトル、スティーブン
バリック、ブライアン
エイゼン、スーザン
ワグナー、アンドレアス
グウェン、ダング
トンプト、ブライアン
ル、ハング
ウォード、ケネス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2023504652A publication Critical patent/JP2023504652A/ja
Application granted granted Critical
Publication of JP7513360B2 publication Critical patent/JP7513360B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)
  • Retry When Errors Occur (AREA)

Description

本発明は、一般に、データ処理システム、プロセッサに関し、より具体的には、例えば、1又は複数の行列乗算アキュムレータ(matrix-multiply-accumulator、MMA)ユニットなどの1つ又は複数の高密度数学実行ユニット(dense math execution unit)と関連付けられたアキュムレータ・レジスタを含む、プロセッサ内のアキュムレータ・レジスタ・ファイルに関する。
現在、データ処理システムで使用されるプロセッサは、一度に1つより多い命令を処理し、それらの命令をアウト・オブ・オーダー(out of order)で処理することが多い。現代のコンピュータ・アーキテクチャでは、一度に又は少なくとも同じ時間枠で1つより多い命令を実行するように適合されたコンピュータを設計するための幾つかの既知の方法がある。例えば、スループットを改善するための1つの設計は、複数の命令スレッドを同時に処理するために、プロセッサ・コア内に複数の実行スライスを含み、スレッドがプロセッサ・コアの特定のリソースを共有する。実行スライスは、単一の処理サイクルで複数の命令を処理するために、プロセッサ内でパイプラインのように直列に接続された複数のデータ処理ハードウェア・ユニットを参照することができる。パイプライン処理(pipelining)は、複数の命令が同時に処理されるように、命令を複数のステージで処理することを要する。複数の実行スライスを、プロセッサ・コア内の同時マルチスレッディングの一部として使用することができる。
パイプライン化された種々のステージは、命令がメモリからフェッチされる「命令フェッチ」ステージを含むことができる。「デコード」ステージでは、命令は、一般に、(i)命令によって指定された演算を実行するための機能ユニット(例えば、実行ユニット)のタイプ、(ii)演算のためのソース・オペランド、及び(iii)演算結果の宛先を指定する、異なる制御ビットにデコードされる。「ディスパッチ」ステージでは、デコードされた命令は、命令がデータ及び利用可能な実行ユニットを待つ発行キュー(ISQ)にディスパッチされる。発行キュー内の命令は、一般的には、「実行」ステージにおいて実行ユニットに発行される。「実行」ステージは、命令により指定される演算を処理する。命令によって指定された演算を実行することは、一般的に、例えば1つ又は複数のオペランドなどのデータを受け入れ、1つ又は複数の結果を生成することを含む。通常、実行ユニットのためのデータもしくは情報、又はその両方を保持するために、実行ユニットもしくは発行キュー、又はその両方と関連付けられたレジスタ・ファイルが存在する。レジスタ・ファイルは、一般的には、レジスタ・ファイル内のエントリ又は位置から読み出される情報もしくはそれに書き込まれる情報、又はその両方を有する。
計算スループットを高めるために、プロセッサは、種々のデータ型に対処し、高度な並列タスクを実行するための専門の計算ユニット、例えば、行列乗算アキュムレータ・ユニット(MMAユニット)を含むことができる。ワイド・シングル命令、マルチ・データ・フロー(single instruction, multiple data flows、SIMD)を処理することは、高い計算スループットを達成するための1つの方法である。マイクロプロセッサでは、アウト・オブ・オーダー実行を改善するために、進行中の命令のレジスタをリネームすることは珍しくない。しかしながら、機械深層学習が高い計算能力を有する実行ユニット、例えばMMAユニットなどを使用する場合、レジスタのリネームは、多くのデータ移動をもたらし、それにより、電力が消費され、不要な実行バブル及び待ち時間が生じることもある。
本開示の概要は、コンピュータ・システム、コンピュータのアーキテクチャ構造、プロセッサ、アキュムレータ・レジスタ・ファイルを含むレジスタ・ファイル、及びプロセッサ内のレジスタ・ファイルを使用する方法の理解を助けるために与えられるが、本開示又は本発明を限定することを意図するものではない。本開示は、当業者に向けられる。本開示の種々の態様及び特徴は、幾つかの事例においては別個に、又は、他の事例においては本開示の他の態様及び特徴と組み合わせて、有利に使用することができることを理解されたい。従って、異なる効果を達成するために、コンピュータ・システム、アーキテクチャ構造、プロセッサ、レジスタ・ファイル、もしくは動作方法、又はそれらの組み合わせに対して、変形及び修正が行うことができる。
1つ又は複数の実施形態において、情報を処理するためのコンピュータ・システムが開示される。1つの実施形態における情報を処理するためのコンピュータ・システムは、命令を処理するための回路及び論理を有する少なくとも1つのプロセッサを含み、プロセッサは、少なくとも1つのプロセッサと関連付けられたメイン・レジスタ・ファイルであって、データを格納するための回路及び複数のエントリと、データをメイン・レジスタ・ファイル・エントリに書き込むための1つ又は複数の書き込みポートと、データをメイン・レジスタ・ファイル・エントリから読み出すための1つ又は複数の読み出しポートとを有する、メイン・レジスタ・ファイルと、回路及び論理を有し、高密度数学実行ユニットを含む、1つ又は複数の実行ユニットと、データを格納するための回路及び複数のエントリを有し、高密度数学実行ユニットと関連付けられた、少なくとも1つのアキュムレータ・レジスタ・ファイルとを有する。1つの態様におけるプロセッサは、高密度数学実行ユニット内のデータを処理するように構成され、高密度数学実行ユニットの結果は、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリの第1のグループに書き込まれ、チェックポイント境界を越えた後、例えば、チェックポイントの開始後又は「N番目」ごとのディスパッチされた命令の後にディスパッチされた命令の数「N」に基づいて、高密度数学実行ユニットの結果は、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリの第2のグループに書き込まれる。1つ又は複数の態様におけるプロセッサは、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリの第1のグループに結果を複数回ライトバックするようにさらに構成される。1つの実施形態において、プロセッサは、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリのグループからメイン・レジスタ・ファイルにデータを書き込むようにさらに構成される。好ましくは、プロセッサは、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリのグループ内のアキュムレータ・レジスタ・ファイル・エントリにマッピングされたメイン・レジスタ・ファイル・エントリにアクセスする命令に応答して、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリのグループから複数のメイン・レジスタ・ファイル・エントリにデータを書き込むように構成される。
1つ又は複数の実施形態において、アキュムレータ・レジスタ・ファイルは、高密度数学ユニットに対してローカルである。1つの実施形態における高密度数学実行ユニットは、行列乗算アキュムレータ(MMA)ユニットであり、アキュムレータ・レジスタ・ファイルは、MMA内に配置される。アキュムレータ・レジスタ・ファイルのビット・フィールド幅は、メイン・レジスタ・ファイルのビット・フィールド幅よりも広く、1つの実施形態では、アキュムレータ・レジスタ・ファイルの各エントリは、複数のメイン・レジスタ・ファイル・エントリにマッピングされる。1つ又は複数の実施形態におけるコンピュータ・システムは、命令をディスパッチするための回路及び論理を有するディスパッチ・ユニットと、ディスパッチされた命令を追跡するための回路及び論理と、データを格納するための複数のエントリとを有する、命令完了テーブル(ICT)と、1つ又は複数のメイン・レジスタ・ファイル・エントリを1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリにマッピングするための回路及び論理を有するマッパとを含み、ディスパッチ・ユニットは、アキュムレータ・レジスタ・ファイル・エントリの第2のグループが割り当てられることをマッパに通知し、マッパは、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリの第1のグループをアキュムレータ・レジスタ・ファイル・エントリの第2のグループにリネームする。さらに別の態様において、プロセッサは、アキュムレータ・レジスタ・ファイルをターゲットにする命令に応答して、アキュムレータ・レジスタ・ファイルをプライムしてデータを受け取るように構成され、アキュムレータ・レジスタ・ファイルをプライムすることに応答して、第1のチェックポイントが作成され、ディスパッチ・ユニットが第1のチェックポイントに対応する第1のチェックポイント開始iTagをICTに送り、第1のチェックポイント開始iTagを格納する。
1つの態様において、チェックポイント境界は、チェックポイント開始(例えば、チェックポイント開始iTag)以降にディスパッチされた命令の数「N」に基づいており、ディスパッチ・ユニットが数「N」の命令をディスパッチした後(又は、別の例では、N番目ごとの命令の後)、ディスパッチ・ユニットは、ディスパッチされた命令が、アキュムレータ・レジスタ・ファイル・エントリの第2のグループの割り当てをトリガすることを検出し、第2のチェックポイントが作成される。1つの実施形態において、第2のチェックポイントが作成されることに応答して、ディスパッチ・ユニットは、第2のチェックポイント開始iTagを、第2のチェックポイントに対応するICTに送り、第2のチェックポイント開始iTagを格納する。1つ又は複数の態様において、ディスパッチ・ユニットは、現在のチェックポイント開始iTagを追跡し、現在のチェックポイント開始iTagより若い全ての命令は、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリのそれぞれのグループと関連付けられたチェックポイントに属する。1つの実施形態におけるICTは、ディスパッチ・ユニットによってディスパッチされた命令の数に基づいて、どの命令がそれぞれのチェックポイントに属するかを判断する。チェックポイント開始iTagとして又はチェックポイントiTagとして命令を識別するために、1つの実施形態によるコード化が、ICTエントリ内で提供される。それぞれのチェックポイント内の全ての命令(iTag)が終了するまで、各チェックポイントは完了せず、アキュムレータ・レジスタ・ファイル・エントリは再利用のために解放されない。ICTは、好ましくは、それぞれのチェックポイント内の全ての命令の完了ビットを調べ、それぞれのチェックポイント内の全ての命令が終了した場合、それぞれのチェックポイントは完了し、前記それぞれのチェックポイントのマッピングは、使用のために再割り当てする準備のできたアキュムレータ・レジスタ・ファイル・エントリのフリーリストに解放される。第2のチェックポイント内のフラッシュ・オペレーションに応答して、フラッシュiTagを第2のチェックポイント開始iTagと比較し、第2のチェックポイントがフラッシュされ、第1のチェックポイント及び第1のチェックポイントのアキュムレータ・レジスタ・マッピングが復元される。
情報を処理するためのプロセッサが開示され、このプロセッサは、少なくとも1つのプロセッサと関連付けられ、データを格納するための回路及び複数のエントリと、データをメイン・レジスタ・ファイル・エントリに書き込むための1つ又は複数の書き込みポートと、データをメイン・レジスタ・ファイル・エントリから読み出すための1つ又は複数の読み出しポートとを有する、メイン・レジスタ・ファイルと、回路及び論理を有し、高密度数学実行ユニットを含む、1つ又は複数の実行ユニットと、データを格納するための回路及び複数のエントリを有し、高密度数学実行ユニットと関連付けられた少なくとも1つのアキュムレータ・レジスタ・ファイルであって、アキュムレータ・レジスタ・ファイルのビット・フィールド幅はメイン・レジスタ・ファイルのビット・フィールド幅よりも広い、少なくとも1つのアキュムレータ・レジスタ・ファイルと、命令をディスパッチするための回路及び論理を有するディスパッチ・ユニットと、ディスパッチされた命令を追跡するための回路及び論理と、データを格納するための複数のエントリとを有する、命令完了テーブル(ICT)と、1つ又は複数のメイン・レジスタ・ファイル・エントリを1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリにマッピングするための回路及び論理を有するマッパとを含む。プロセッサは、高密度数学実行ユニット内のデータを処理するように構成され、高密度数学実行ユニットの結果は、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリの第1のグループに複数回書き込まれ、チェックポイント境界を越えた後(例えば、チェックポイント又はN番目ごとの命令以降にN個の命令がディスパッチされた後)、高密度数学実行ユニットの結果は、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリの第2のグループに書き込まれ、プロセッサは、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリのグループからメイン・レジスタ・ファイル・エントリにライトバックされるように構成される。
1つの実施形態におけるプロセッサは、アキュムレータ・レジスタ・ファイルをターゲットとする命令に応答して、データを受け取るためにアキュムレータ・レジスタ・ファイルをプライムするように構成され、アキュムレータ・レジスタ・ファイルをプライムすることに応答して、第1のチェックポイントが作成され、ディスパッチ・ユニットは、第1のチェックポイントに対応する第1のチェックポイント開始iTagをICTに送り、第1のチェックポイント開始iTagを格納し、さらに、チェックポイント境界は、第1のチェックポイント開始iTag後にディスパッチされた数「N」の命令に基づいており、ディスパッチ・ユニットが数「N」の命令をディスパッチした後、ディスパッチ・ユニットは、ディスパッチされた命令が、アキュムレータ・レジスタ・ファイル・エントリの第2のグループの割り当てをいつトリガするかを検出し、第2のチェックポイントが作成され、ディスパッチ・ユニットは、アキュムレータ・レジスタ・ファイル・エントリの第2のグループ割り当てられることをマッパに通知し、マッパは、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリの第1のグループをファイル・エントリの第2のグループにリネームし、第2のチェックポイントが作成されることに応答して、ディスパッチ・ユニットは、第2のチェックポイントに対応する第2のチェックポイント開始iTagをICTに送り、第2のチェックポイント開始iTagを格納する。
本発明の上記及び他の目的、特徴及び利点は、添付図面に示されるような本発明の例示的な実施形態の以下のより詳細な説明から明らかになるであろう。
与えられた図面と共に読まれるとき、コンピュータ・システム、コンピュータ・アーキテクチャ構造、プロセッサ、アキュムレータ・レジスタ・ファイルを含むレジスタ・ファイル、もしくはその動作方法、又はそれらの組み合わせの種々の態様、特徴及び実施形態がよりよく理解されるであろう。実施形態は、コンピュータ・システム、コンピュータ・アーキテクチャ構造、プロセッサ、アキュムレータ・レジスタ・ファイルを含むレジスタ・ファイル、及びその動作方法の態様、特徴、もしくは種々の実施形態、又はそれらの組み合わせを示す目的で図に与えられるが、特許請求の範囲は、示される正確なシステム、実施形態、方法、プロセス、もしくはデバイス又はそれらの組み合わせに限定されるべきではなく、示される特徴、もしくはプロセス、又はその両方を単独で使用してもよく、他の特徴、もしくはプロセス、又はその両方と組み合わせて使用してもよい。
本開示の態様を実施することができるデータ処理システムの一例を示す。 本開示の特定の態様を実施することができるプロセッサの1つの実施形態のブロック図を示す。 マルチスライス・プロセッサの一部の1つの実施形態のブロック図を示す。 本開示の1つの実施形態による、アキュムレータ・レジスタ・ファイルを有するマルチスライス・プロセッサの一部のブロック図を示す。 本開示の1つの実施形態による、MMAユニット、アキュムレータ・レジスタ・ファイル、及び物理VSレジスタ・ファイルの設定を示す簡略化されたブロック図を示す。 MMAユニット及びアキュムレータ・レジスタ・ファイルを有するプロセッサの2つのスーパー・スライスの簡略化されたブロック図を示す。 プロセッサ内のデータを処理するための1つの実施形態による方法のフロー図を示す。
以下の説明は、本発明の一般的な原理を示すためになされたものであり、本明細書で特許請求される本発明の概念を限定することを意味するものではない。以下の詳細な説明において、多数の詳細は、コンピュータ・システム、コンピュータ・アーキテクチャ構造、プロセッサ、レジスタ・ファイル、アキュムレータ・レジスタ・ファイル、及びその動作方法の理解を与えるために述べられているが、当業者であれば、それらの詳細なしに、コンピュータ・システム、コンピュータ・アーキテクチャ構造、プロセッサ、レジスタ・ファイル、アキュムレータ・レジスタ・ファイル、及びその動作方法を実施できること、及び、特許請求の範囲及び本発明は、本明細書で具体的に説明され、示されるシステム、アセンブリ、サブアセンブリ、実施形態、特徴、プロセス、方法、態様、もしくは詳細、又はそれらの組み合わせに限定されるべきでないことを理解するであろう。さらに、本明細書で説明される特定の特徴は、種々の可能な組み合わせ及び置換の各々における他の説明される特徴と組み合わせて用いることができる。
本明細書において特に定義されていない限り、全ての用語には、本明細書から暗示される意味、並びに当業者によって理解される意味もしくは辞書、学術論文などに定義された意味、又はその両方を含む、その可能な最も幅広い解釈が与えられる。特に明記されていない限り、本明細書及び添付の特許請求の範囲で使用されている場合、単数形「a」、「an」及び「the」は複数の指示物を含むこと、及び、用語「含む(comprise)」もしくは「含んでいる(comprising)」又はその両方は、記載された特徴、整数、ステップ、動作、要素もしくはコンポーネント又はその組み合わせの存在を指定するが、1つ又は複数の他の機能、整数、ステップ、動作、要素、コンポーネントもしくはそれらのグループ又はその組み合わせの存在又は追加を排除するものではない。
以下の議論は、当業者には明らかである、プロセッサ及びマイクロプロセッサ・システム及びアーキテクチャを含む、情報処理システムの従来の特徴を省略するか又は単に簡単に説明する。当業者は、プロセッサの一般的なアーキテクチャ、特にマルチスライス・プロセッサ及びそのレジスタの使用を含む、アウト・オブ・オーダー式実行方法で動作するプロセッサには精通していると想定する。番号が付けられた要素は、要素が導入される図に従って番号が付けられ、必ずしもではないが多くの場合、後続の図においてその番号により参照されることに留意されたい。
図1は、本開示の態様を実施することができるデータ処理システム100の一例を示す。このシステムは、中央処理ユニット(CPU)110を有する。CPU110は、システム・バス112によって種々の他のコンポーネントに結合される。読み出し専用メモリ(「ROM」)116は、システム・バス112に結合され、データ処理システム100の特定の基本機能を制御する基本入力/出力システム(「BIOS」)を含む。ランダム・アクセス・メモリ(「RAM」)114、I/Oアダプタ118、及び通信アダプタ134もまた、システム・バス112に結合される。I/Oアダプタ118は、ディスク・ストレージ・デバイス120と通信する小型コンピュータ・システム・インタフェース(「SCSI」)アダプタとすることができる。通信アダプタ134は、バス112を外部ネットワークと相互接続し、データ処理システムが他のそうしたシステムと通信するのを可能にする。入力/出力デバイスも、ユーザ・インターフェース・アダプタ122及びディスプレイ・アダプタ136を介して、システム・バス112に接続される。キーボード124、トラックボール132、マウス126、及びスピーカ128は全て、ユーザ・インターフェース・アダプタ122を介して、バス112に相互接続される。ディスプレイ・モニタ138は、ディスプレイ・アダプタ136によって、システム・バス112に接続される。このようにして、ユーザは、キーボード124、トラックボール132、又はマウス126を介して、システムに入力し、スピーカ128及びディスプレイ138を介して、システムから出力を受け取ることができる。さらに、例えばAIX(「AIX」は、IBMコーポレーションンの商標である)などのオペレーティング・システムが、図1に示される種々のコンポーネントの機能を調整するために使用される。
CPU(又は「プロセッサ」)110は、種々のレジスタ、バッファ、メモリ、及び集積回路によって形成された他のユニットを含み、縮小命令セット・コンピューティング(「RISC」)技術に従って動作することができる。CPU110は、幾つかの態様において、内部クロック(図示せず)に同期したプロセッサ・サイクルに従って処理する。
図2は、1つの実施形態による、プロセッサ110の簡略化されたブロック図を示す。プロセッサ110は、メモリ202、命令キャッシュ204、命令フェッチ・ユニット206、分岐予測器208、分岐分類ユニット218、処理パイプライン210、及び宛先リソース220を含む。プロセッサ110は、コンピュータ・プロセッサ内に含ませることができ、又はそうでなければコンピュータ・システム内に分散させることができる。命令及びデータは、メモリ202に格納することができ、命令キャッシュ204は、メモリ202内の命令にアクセスし、フェッチされる命令を格納することができる。メモリ202は、任意のタイプの揮発性又は不揮発性メモリを含むことができる。メモリ202及び命令キャッシュ204は、複数のキャッシュ・レベルを含むことができる。
図2において、命令フェッチ・ユニット206及び処理パイプライン210の簡略化された例が示される。種々の実施形態において、プロセッサ110は、複数の処理パイプライン210及び命令フェッチ・ユニット206を含むことができる。1つの実施形態において、処理パイプライン210は、デコード・ユニット20、発行ユニット22、実行ユニット24、ライトバック論理26、論理レジスタ・マッパ28、例えばSave & Restore Buffer(SRB)30などの履歴バッファ、並びに物理レジスタ・ファイル32を含む。命令フェッチ・ユニット206もしくは分岐予測器208、又はその両方は、処理パイプライン210の一部とすることができる。処理パイプライン210はまた、エラー・チェック及び処理論理(handling logic)、処理パイプライン210を通る1つ又は複数の並列パス、及び当技術分野において現在もしくは今後知られる他の特徴を含むこともできる。図2には、プロセッサ110を通るフォワード・パスが示されるが、プロセッサ110の要素間に他のフィードバック・パス及びシグナル・パスを含むこともできる。プロセッサ110は、他の回路、機能ユニット、及びコンポーネントを含むこともできる。
命令フェッチ・ユニット206は、デコード・ユニット20によるさらなる処理のために、命令アドレスに従って、命令キャッシュ204から命令をフェッチする。デコード・ユニット20は、命令をデコードし、デコードされた命令、命令の一部、又は他のデコードされたデータを発行ユニット22に渡す。デコード・ユニット20は、分岐予測器208によって予測されなかった分岐命令を検出することもできる。発行ユニット22は、命令又は他のデータを分析し、分析に基づいて、デコードされた命令、命令の一部、又は他のデータをパイプライン210内の1つ又は複数の実行ユニット24に伝送する。物理レジスタ・ファイル32は、実行ユニット24のためのデータを保持する。実行ユニット24は、実行ユニット24に発行された命令によって指定された演算を実施及び実行する。実行ユニット24は、固定小数点実行ユニット、浮動小数点実行ユニット、ロード/ストア実行ユニット(LSU)、ベクトル・スカラ実行ユニット(VSU)、もしくは他の実行ユニット、又はそれらの組み合わせなど、複数の実行ユニットを含むことができる。論理レジスタ・マッパ28は、論理レジスタ・エントリ(LReg)と物理レジスタ・ファイル32内のエントリとの間のマッピングを提供するエントリを含む。命令が論理レジスタ・エントリ(LReg)を読み出すように指定すると、論理レジスタ・マッパ28は、発行ユニット22に通知し、発行ユニットは、物理レジスタ・ファイル32内のデータをどこに配置できるかを実行ユニット24に通知する。
誤予測された(mispredicted)分岐命令又は他の例外が検出されると、誤予測された分岐又は例外の後の命令及びデータは、プロセッサ110の種々のユニットから、例えばフラッシュされるなど、廃棄される。例えば、Save & Restore Buffer(SRB)30などの履歴バッファは、投機的レジスタ状態及びアーキテクト化されたレジスタ状態の両方を含み、新しい命令がディスパッチされたときに論理レジスタ・ファイル・データをバックアップする。この点で、履歴バッファは、新しい命令がフラッシュされ、古いデータを復旧する必要がある場合に、新しい命令が論理レジスタ・マッパ28からのデータをエビクト(退去、evict)させると、論理レジスタ・マッパ28からの情報を格納する。履歴バッファ(SRB)30は、新しい命令が完了するまで、格納された情報を保持する。履歴バッファ(SRB)30は、論理レジスタ・マッパ28とインターフェース接続して、論理レジスタ・エントリのコンテンツを履歴バッファ(SRB)30から論理レジスタ・マッパ28に復旧し、命令が正しいデータをどこで取得するのか分かるように論理レジスタ・マッパ28内のポインタを更新し、例えば、プロセッサは、割り込み可能命令、例えば分岐命令が誤予測されるより前に存在した状態に戻される。
ライトバック論理26は、実行された命令の結果を宛先リソース220にライトバックする。宛先リソース220は、レジスタ、キャッシュ・メモリ、他のメモリ、他のデバイスと通信するためのI/O回路、他の処理回路、又は実行された命令もしくはデータに対する他の任意のタイプの宛先を含む任意のタイプのリソースとすることができる。
命令は、論理的なパイプライン化されたステージのシーケンスにおいて、プロセッサ110内で処理することができる。しかしながら、本明細書の特許請求の範囲において制限が明確に示されていない限り、ステージのこの特定の分割が制限とみなされるべきではないように、これらのステージの機能を併合できることを理解されたい。実際、理解しやすくするために、ステージの一部は、図2において単一の論理ユニットとして示されており、関連するさらなる詳細は、以下に提供される。
図3は、本開示の1つの実施形態による、プロセッサ110、この例では、マルチスライス・プロセッサ100の一部のブロック図を示す。議論を進めるために、図3は、マルチスライス・プロセッサ110の一部のみを図式的に示すことに留意されたい。マルチスライス・プロセッサは、他の構成を有することもできることが理解されるであろう。図3に示されるように、マルチスライス・プロセッサ110は、2つの処理スライス-スライス0(スライスS0又は360)及びスライス1(スライスS1又は365)を含む。プロセッサは、命令フェッチ・ユニット310を含む。スライスS0及びS1の各々は、命令ディスパッチ・ユニット(320a及び320b)と、論理レジスタ・マッパ(350a及び350b)と、履歴バッファ(HB)(390a及び390b)と、発行キュー(ISQ)(330a及び330b)と、命令完了テーブル(ICT)(325a及び325b)と、ロード・ストア・ユニット(LSU)(304a及び304b)、ベクトル・スカラ・ユニット(VSU)(306a及び306b)及びレジスタ・ファイル(RF)(380a及び380b)を含む実行ユニット(340a及び340b)とを含む。実行ユニット340は、実行ユニット340によって実行される命令を保持するための1つ又は複数のキューを含むことができる。
2つのスライスは、説明及び議論を容易にするためにのみ示されており、マルチスライス・プロセッサ110は、各スライスがスライスS0及びS1(スライス360及び365)の各々について上述した全てのコンポーネントを有する2つより多い処理又は実行スライスを含み得ることに留意されたい。さらに、処理スライスは、スーパー・スライス(SS395)にグループ化することもでき、各スーパー・スライスは、処理スライスの対を含む。例えば、マルチスライス・プロセッサは、2つのスーパー・スライスSS0及びSS1を含むことができ、SS0はスライスS0及びS1を含み、SS1(図示せず)はスライスS2及びS3を含む。
命令フェッチ・ユニット310は、プロセッサ110又はプロセッサ・スライスによって実行された命令をフェッチする。命令フェッチ・ユニット310によってフェッチされた命令は、命令ディスパッチ・ユニット320に送られる。命令ディスパッチ・ユニット320は、一般的にはプログラム順に命令を発行キュー(ISQ)330にディスパッチする。発行キュー(ISQ)330は、命令を実行ユニット340に発行する。ISQ330は、一般的には、命令と関連付けられたデータが取り出され、使用できる状態になるまで、命令を保持する。物理レジスタ・ファイル380は、実行ユニット340にディスパッチされた命令において指定された演算で使用されるデータを格納する役割を果たし、実行ユニット340によって実行された演算の結果は、物理レジスタ・ファイル380内の指定されたターゲット・レジスタ・エントリに書き込むことができる。
特定の態様において、ISQ330は命令のセットを保持し、レジスタ・ファイル380は命令入力のためのデータを累算する。レジスタ・ファイルは、メモリとプロセッサ内の他の機能(実行)ユニットとの間でデータをステージングするために使用することもできる。多数のレジスタ・ファイル及びタイプがあり得る。命令について全てのソース・データが累算されると、データは、命令の実行のために指定された1つ又は複数の実行ユニットに渡される。実行ユニット、例えば、LSU304及びVSU306の各々は、レジスタ・ファイル(RF)エントリに書き込むために、結果データを、ライトバック・バス上で利用可能にすることができる。
データが準備できていない場合、例えば適切なデータ・キャッシュ又はレジスタ内にない場合、ISQ330が命令を実行ユニット340に発行しないので、遅延が生じることがある。少なくともこの理由で、発行キュー(ISQ)は、一般的には、命令をアウト・オブ・オーダー式に実行ユニット340に発行するので、必要なデータが利用可能である命令を実行することができる。1つ又は複数の実施形態におけるディスパッチ・ユニット320は、発行キュー330にディスパッチされた各命令に、命令を識別するための識別子、例えば、識別タグ(iTag)でスタンプ付与する。ディスパッチ・ユニット320は、命令に、他の情報及びメタデータでスタンプ付与することもできる。命令(iTag)は、一般的には、ディスパッチ・ユニット320によって、スレッドごとに昇順のプログラム順に割り当てられ(割り振られ)、スタンプ付与される。
論理レジスタ・マッパ350は、論理レジスタ(例えば、GPR1)内のエントリと、物理レジスタ・ファイル380(例えば、物理レジスタ・アレイ・エントリ)との間のマッピングを提供するメタデータ(例えば、iTag、RFtag等)を含む。RFtagは、論理レジスタ・エントリを物理レジスタ・ファイル・エントリに相関させるポインタである。例えば、命令が論理レジスタ、例えばGPR1を読み出したいとき、論理レジスタ・マッパ350は発行キュー330に伝え、発行キュー330は、実行ユニット340に、物理レジスタ・ファイル380内のどこで、データ、例えば物理レジスタ・アレイ・エントリを見つけることができるか伝える。実行ユニット340は、命令をアウト・オブ・オーダーで実行し、実行ユニット340が命令を終了すると、実行ユニット340は、終了した命令、例えばiTagをICT325に送る。ICT325は、ディスパッチ・ユニット320によってディスパッチされた命令(iTag)のキューを含み、それらが処理される際に命令(iTag)の進捗状況を追跡する。
履歴バッファ(SRB)390は、より若い命令によって論理レジスタ・マッパ350からエビクトされた論理レジスタ・エントリを含む。履歴バッファ(SRB)390に格納された情報は、論理レジスタから論理レジスタ・エントリを退去させた命令のiTag(すなわち、エビクタiTag)を含むことができる。履歴バッファ(SRB)390は、実施形態においては、iTag、論理レジスタ・エントリ番号(論理レジスタ・エントリ(LReg)を識別するビット・フィールド)と、レジスタ・ファイル・タグ(RFTag)情報とを格納する。履歴バッファ(SRB)390は、他の情報を格納し、追跡することもできる。履歴バッファ(SRB)390は、論理レジスタ・マッパ350へのインターフェースを有し、各々のエビクトされた論理レジスタ・エントリ(LReg)についてのiTag、及びレジスタ・ファイル・タグ(RFTag)(及び他のメタデータ)を復旧する。この情報は、新しい命令(エビクタ命令)が完了するまで、履歴バッファ(SRB)390の履歴バッファ・エントリ(SRB)エントリに保持される。その時点で、1つの実施形態では、エントリが、履歴バッファ(SRB)390から除去される。
複数の処理スライスを有するCPU110は、1つの処理サイクルにおいて、複数の命令を同時に実行すること、例えば、各処理スライスにおいて1つの命令を同時に実行することが可能である。複数の処理スライスを有するそうしたCPUは、マルチスライス・プロセッサ又は並列スライス・プロセッサと呼ばれることがある。複数の実行スライスにおける同時処理により、マルチスライス・プロセッサの処理速度を大幅に向上させることができる。シングル・スレッド(ST)モードでは、シングル・スレッドが処理され、SMTモードでは、2つのスレッド(SMT2)又は4つのスレッド(SMT4)が同時に処理される。
1つの態様において、図3に示されるように、各実行/処理スライスは、それ自身のレジスタ・ファイルを有することができる。別の態様では、1つのレジスタ・ファイルは、スーパー・スライスごとに割り当て、スーパー・スライスの処理スライスによって共有することができる。1つの態様では、1つのレジスタ・ファイルは、1つより多いスーパー・スライスに割り当て、スーパー・スライスの処理スライスによって共有することができる。例えば、スライスS0、S1、S2及びS3は、1つのレジスタ・ファイルを共有するように割り当てることができる。レジスタ・ファイルは、以下により詳細に説明される。
プロセッサにおいて、命令のアウト・オブ・オーダー実行を改善するために、進行中の命令のレジスタ・リネーム(register renaming)を行うことは珍しいことではない。しかしながら、高い計算及びスループットを有する実行ユニットが使用される状況、例えば高密度数学演算では、進行中の命令のレジスタ・リネームは、処理するために電力を消費し得る多くのデータ移動をもたらすことがあり、1つ又は複数の実行バブルのために不必要な遅延及び待ち時間をもたらすこともある。1つ又は複数の実施形態では、アキュムレータ・レジスタ・ファイルが使用され、1つの態様では、高密度数学命令によるアキュムレータ・レジスタ・ファイル・リネームを用いるプロセスが実行される。アキュムレータ・レジスタ・ファイル及びアキュムレータ・レジスタ・ファイル・リネーム・プロセスが使用されるので、実行中のデータ移動が最小化されて電力を削減し、実行スループットを向上させる。アキュムレータ・レジスタ・リネーム・モードに入るために、1つの態様では、アキュムレータ・レジスタがプライムされる。アキュムレータ・レジスタがプライムされた後、高密度数学実行ユニット、例えば、行列乗算アキュムレータ(MMA)ユニットもしくは推論エンジン、又はその両方は、1つ又は複数の実施形態において、メイン・レジスタ・ファイルに書き込む必要なしに、アキュムレータ・レジスタをローカルに読み書きすることができる。好ましくは、高密度数学実行ユニットは、新しいアキュムレータ・レジスタ・ファイルをリネームすることなく、もしくはメイン・ファイル・レジスタにライトバックすることなく、又はその両方を行うことなく、同じアキュムレータ・レジスタ・ファイル・エントリに複数回アクセスし、それを読み出し、及び/又は書き込む。高密度数学演算が完了すると、及び/又は所定の演算及び命令に応答して、1つの実施形態では、アキュムレータ・レジスタ・ファイルの結果は、メイン・レジスタ・ファイルもしくはメイン・メモリ、又はその両方に書き込むことができる。
1つ又は複数の実施形態においては、命令ごとにリネームする代わりに、アキュムレータ・レジスタ・ファイルは、スループットを改善し、性能を向上させるために、チェックポイント化される。1つの態様では、アキュムレータ・レジスタは、特定のポイントにおいて、例えば、チェックポイント境界を越えたときに、マッパ内でリネームされる。命令ごとではなく、チェックポイント境界において、又はチェックポイント境界を越えたときにアキュムレータ・レジスタをリネームすることは、アキュムレータ・レジスタのチェックポイント化とも呼ばれ、レジスタ/アキュムレータ・レジスタ領域、電力、及び性能を改善し、1つの実施形態では、フラッシュ回復(flush recovery)に寄与する。つまり、例えば、分岐ミス又はロード・ミスがあった場合、アキュムレータ・レジスタは、特定のフラッシュ命令又は最初の高密度数学演算命令ではなく、適切なチェックポイントにフラッシュされる、例えばチェックポイント開始命令までフラッシュされ、従って、回復性能を向上させることができる。
1つ又は複数実施形態において、好ましくは高密度数学命令を処理するために、1つ又は複数の高密度数学実行ユニット、例えば1つ又は複数の推論エンジンもしくはMMAユニット、又はその両方と関連して、それらに対してローカルに、及び/又はそれらの内部に配置された1つ又は複数のアキュムレータ・レジスタを用いて、プロセス、プロセッサ・アーキテクチャ、及びシステムが説明される。代替的に(及び/又は付加的に)、アキュムレータ・レジスタ・ファイルは、MMAユニットに対してローカルではなく、VSメイン・レジスタ・ファイル内のベクトル/スカラ(VS)レジスタのグループとして、統一されたレジスタ内に存在する。さらに別の実施形態では、アキュムレータ・レジスタは、メイン・レジスタ・ファイル・エントリのビット・フィールド幅より広いビット・フィールド幅を有するエントリを有する。
図4は、実行ユニット、例えば推論エンジン/MMAユニット、及びベクトル・スカラ(VS)実行ユニット(VSU)内に配置されたベクトル/スカラ(VS)メイン・レジスタ・ファイルと関連してアキュムレータ・レジスタ・ファイルを用いる処理パイプラインの簡略化されたブロック図を示す。処理パイプライン又は実行スライスは、ディスパッチ・ユニット320、複数のエントリ351(a)~351(n)を有する論理マッパ350、命令完了テーブル(ICT)325、発行キュー(ISQ)330、推論エンジン又は行列乗算アキュムレータ(MMA)ユニット460、複数のエントリ471(a)~471(n)を有するアキュムレータ・レジスタ・ファイル470、及び複数のエントリ381(a)~381(n)を有するメイン(VS)レジスタ・ファイル380をもつVS実行ユニット(VSU)340を含む。アキュムレータ・レジスタ・ファイル470は、図4では、推論エンジン/MMAユニット460と関連付けられ、これに対してローカルであるように示されが、1つ又は複数の実施形態では、アキュムレータ・レジスタ・ファイル470は、MMAユニット460内に存在することができる。別の態様では、アキュムレータ・レジスタ・ファイルは、統一されたレジスタ・ファイル内にあり、VSレジスタのグループとしてメインVSレジスタ・ファイル内にある。
推論エンジンもしくはMMA又はその両方の演算の際、1つ又は複数の実施形態において、アキュムレータ・レジスタ・ファイル470は、ソース及びターゲット(アキュムレータ)として利用される。つまり、1つの態様において、MMAが演算する際、MMAはアキュムレータ・レジスタ・ファイルからのオペランドを使用し、結果をアキュムレータ・レジスタ・ファイルにライトバックし、1つの実施形態では、結果を同じアキュムレータ・レジスタ・ファイル・エントリ471にライトバックし、1つの態様では、同じターゲット・アキュムレータ・レジスタ・ファイル・エントリ471に複数回ライトバックする。このようにして、推論エンジン又はMMAが演算する際、VS又はメイン・レジスタ・ファイルを含むプロセッサは、リネーム演算は施されない。1つ又は複数の実施形態において、多数の命令が処理された後、もしくはチェックポイント境界を越えた後、又はその両方が行われた後、結果は、アキュムレータ・レジスタ470内の異なるアキュムレータ・レジスタ・ファイル・エントリ471にライトバックされる。
1つの実施形態において、アキュムレータ・レジスタ・ファイル470は、広いビットのアキュムレータ・レジスタ・ファイル・エントリ471(a)~471(n)のプールである。例えば、1つの実施形態では、アキュムレータ・レジスタ・ファイル470は、32個の物理的512ビット・レジスタ・エントリ471のプールであり、一方、VSメイン・レジスタ・ファイルは128ビット幅である。1つの実施形態における各アキュムレータ・レジスタ・ファイル・エントリ471は、複数のメイン・レジスタ・ファイル・エントリを保持し、1つの実施形態においては、4つの連続したメインVSレジスタ・ファイル・エントリ(381(n)-381(n+3))のセットを保持する。図5の簡略化されたブロック図では、4つのエントリ381(a)-381(d)を有するVS又はメイン・レジスタ・ファイル380が示されており、これらはアキュムレータ・レジスタ・ファイル470内の単一のアキュムレータ・レジスタ・エントリ471にマッピングされる。一例では、4つの連続した128ビット・のメインVSレジスタ・ファイル・エントリ381(a)-381(d)は、単一の512ビット・アキュムレータ・レジスタ・ファイル・エントリ471にマッピングされる。1つの実施形態における推論エンジンは、8個の行列乗算アキュムレータ(MMA)ユニット、及び32個の512ビット・アキュムレータ・レジスタのセットとすることができる。1つ又は複数の実施形態において、スレッドごとに8個の論理アキュムレータ・レジスタ(ACC0-ACC7)がある。これらの8個の論理アキュムレータ・レジスタは、32個の物理レジスタにマッピングされる。1つの実施形態では、各論理アキュムレータ・レジスタには、物理レジスタを指し示す5ビット・タグが割り当てられる。
命令は、高密度数学実行ユニット、例えば推論エンジンもしくは1つ又は複数のMMAユニット、又はその両方を設定し、実行するために使用される。一般的行列ランク演算(General Matrix Rank Operation、「ger」)命令は一例であり、1つ又は複数の態様において、2nのデータに対してn個の演算を実行する。1つ又は複数の実施形態における推論エンジン/MMAユニットの作業負荷は、一般的には3つの部分を有する。アキュムレータ・レジスタ・ファイルは、その演算を実行するために初期データでプライムされる。乗算演算は、MMAユニットにおいて実行され、結果は、アキュムレータ・レジスタ・ファイル内に累算される。つまり、累算演算は、アキュムレータ・レジスタにライトバックされ、結果は、一般的に、通常の演算下でメイン・レジスタ・ファイルにライトバックされない。1つ又は複数の実施形態におけるアキュムレータ・レジスタは、命令ごとにリネームされない。また、1つの態様において、高密度数学実行ユニットが完了したとき、もしくは特定の命令に応答して、又はその両方において、アキュムレータ・レジスタ・ファイル内の結果は、メモリ、例えば、メイン・レジスタ・ファイルもしくはメイン・メモリ、又はその両方にライトバックされる。アキュムレータ命令(「ger」命令)は、通常、2つのVSRオペランド・ソース、アキュムレータVSR宛先、及びアキュムレータVSRソースを有する。
高密度数学演算、例えばMMAユニット演算を開始するために、1つ又は複数の実施形態では、プロセッサは、高密度数学命令、例えば推論エンジン/MMAユニット「ger」命令をデコードもしくは検出する、又その両方を行う。1つの実施形態における各高密度数学命令はiTagを有し、1つの完全なディスパッチ・レーン及び1つの完全な発行キュー(ISQ)エントリを利用する。1つの態様において、メイン・レジスタ・マッパ350は、高密度数学命令、例えばMMAユニット命令ごとに、複数の、例えば4つのターゲット(メイン・レジスタ・ファイル・エントリ)を割り当てる。同じアキュムレータ・レジスタ・ファイル・エントリ、例えば図4の471(a)に書き込む命令については、メイン・レジスタ・マッパ350は、新しいメイン・レジスタ・ファイル・タグRFTag(エントリ)を割り当てないが、レジスタ・マッパ350は、新しい命令に対して新しいiTagを必要とする。1つの実施形態では、メイン・レジスタ・マッパ350は、アキュムレータ・レジスタ・ファイル・エントリ471にマッピングされたメイン・レジスタ・ファイル・エントリ381にマーク付けする。1つの態様では、メイン・レジスタ・マッパ350は、同じアキュムレータ・レジスタ・ファイルiTagを、複数の連続したメイン・レジスタ・ファイル・エントリ381、例えば、VSR(n)-VSR(n+3)に書き込むことになる。つまり、1つのiTagは、連続したメイン・レジスタ・ファイル・エントリのグループ、例えば4つのメイン・レジスタ・ファイル・エントリ381(n)-381(n+3)にエイリアスされる。
1つ又は複数の実施形態におけるアキュムレータ・レジスタ・ファイルをプライムすべきである。1つ又は複数の実施形態において、各アキュムレータ・レジスタ・ファイルは、必要に応じてプライムされる。1つ又は複数の実施形態において、アキュムレータ・レジスタをプライムすることは、非MMA実行ユニットに取り付けられたSTFレジスタ・ファイル内の複数のベクトル・レジスタから、MMA実行ユニットに取り付けられたACCアレイ内のアキュムレータ・レジスタにデータを移動させることを含む。アキュムレータ・レジスタ・ファイルは、それが、メモリ、例えばメイン・レジスタ・ファイルもしくはメイン・メモリ、又はその両方から書き込まれるとき、又はプライム命令の結果としてプライムされる。例えば、命令、例えばxxmtaccは、データを、メイン(VS)レジスタ・ファイルからアキュムレータ・レジスタ・ファイルにデータを移動して、アキュムレータ・レジスタ・ファイルとメイン(VS)レジスタ・ファイルを同期して取得する。別の例では、命令、例えばlxaccは、データを、メイン・メモリからアキュムレータ・レジスタ・ファイルへロードし、移動させることができる。さらに別の例では、エントリ(単数/複数)内のデータがゼロに設定される場合、アキュムレータ・レジスタ・ファイルは、プライムされる。アキュムレータ・レジスタ・ファイルをプライムするための他の命令も考えられる。
1つの実施形態において、ベクトル・スカラ(VS)実行ユニット(VSU)は、メイン(VS)レジスタの一次データと、プライミング(priming)を行っている命令のiTagを適切なアキュムレータ・レジスタ・ファイル・エントリに書き込む。アキュムレータ・レジスタ・ファイルのプライミングにより、アキュムレータ・レジスタ・リネームも割り当てられる。プライミングにおいて、アキュムレータ・レジスタ・ターゲットはリネームされ、物理レジスタ・ファイル・エントリにマッピングされる。アキュムレータ・レジスタのプライミング(及びプライミング解除(de-priming))の際、複数のメイン・レジスタ・ファイル・タグ、例えば4つが、各アキュムレータ・レジスタ・ファイル・エントリについて1回で発行される。図5を参照すると、プライミングの1つの例の際、アキュムレータ・レジスタ・リネームが割り当てられ、エントリ381(a)-381(d)内のVSレジスタ・データが、割り当てられたアキュムレータ・レジスタ・エントリ471に書き込まれる。1つ又は複数の実施形態において、VS実行ユニットは、メイン(VS)レジスタ・ファイル・データと、プライミングを行っている命令のiTagとを、マッピングされたアキュムレータ・レジスタ・ファイルに書き込む。1つの実施形態において、アキュムレータ・フリーリスト472は、割り当てられた及び空いているアキュムレータ・タグのカウントを維持する。アキュムレータ・タグは、アキュムレータ・レジスタ・ファイル・エントリを識別する。1つの態様では、アキュムレータ・レジスタ・ファイル・ビジー・フラグが、アキュムレータ・レジスタ・ファイル・エントリが現在アクティブであることを示すために使用される。全てのアキュムレータ・レジスタ・ファイル・エントリが占有されると、ディスパッチは、メイン・レジスタ・リソース・ストールと同様の方法でストールする。
高密度数学演算において、アキュムレータ・レジスタ・ファイルは、サイクルごとに、メイン(VS)レジスタ・ファイルへの読み書きを行わない。代わりに、大容量のデータ結果は、アキュムレータ・レジスタ・ファイルを用いて、高密度数学エンジン、例えばMMAユニットに対してローカルのままである。つまり、MMAユニット演算は、アキュムレータ・レジスタ・ファイルにライトバックされる。1つの態様では、同じアキュムレータ・レジスタ・ファイルが、多数回、例えば複数回、書き込まれる。アキュムレータ・レジスタ・ファイル・エントリは、命令ごとにリネームされない。1つ又は複数の実施形態におけるアキュムレータ・レジスタ・ファイルは、MMA演算の際、ソース及びターゲット(アキュムレータ)として利用される。図5のループ475は、MMAユニットがアキュムレータ・レジスタ470内の同じターゲット・エントリ471に再書き込みする動作を示す。
各MMAユニット命令は、単一のアキュムレータ・レジスタ・ファイル・エントリに書き込み、ターゲット・アキュムレータ・レジスタ・エントリの状態を、アキュムレータ・レジスタ・ファイル・及び対応するメイン(VS)レジスタ・ファイル・エントリが同期していないことを示すダーティ(dirty)に設定する。1つの態様では、MMAユニット命令、例えば「ger」命令について、アキュムレータ・レジスタ・ファイルは結果を格納し、メイン(VS)レジスタ・ファイルは結果を格納しない。メイン実行ユニット、例えばVSUにおいて、データがメイン・レジスタ・ファイルにライトバックされないが、発行キューから新しい命令を受け取ると、メイン実行ユニットは、アキュムレータ・レジスタ・ファイルiTagを更新する。アキュムレータ・レジスタ・ファイル・エントリを利用する命令については、アキュムレータ・レジスタ・ファイルを利用してより若い命令のiTagが古いiTagに置き換わるが、メイン・レジスタ・ファイル・タグ(RFTag)は変更されない。
1つ又は複数の実施形態において、アキュムレータ・レジスタ・ファイル470を利用する高密度数学命令は、好ましくはレジスタ番号によって、及び、1つの態様においては命令タイプによって、発行キュー330から順に発行される。1つの態様におけるアキュムレータ・レジスタ・ファイルを利用する高密度数学命令の発行レートは、サイクル当たり1つの命令である(1つ又は複数の実施形態では、アキュムレータ・レジスタ・ファイルをプライムするための第1の命令が、1サイクルより多くかかり得ることを除いて)。アキュムレータ・レジスタ・ファイルを利用する命令は、好ましくは、順番に、かつ、連続して(back-to-back)発行される。アキュムレータ・レジスタ・ファイルを利用するより古い命令がある場合、より古い命令がメイン・レジスタ・ファイルを読み書きするが、アキュムレータ・レジスタ・ファイルのデータをメイン・レジスタ・ファイルにライトバックできるまで、アキュムレータ・レジスタ・ファイルのみを更新するので、発行キューは、より古い命令を発行することができる。
1つの態様において、高密度数学命令、例えば「ger」命令が、最後のプライム解除(例えば、xxmtacc又はldaccによる)以降プライムされなかったアキュムレータ・レジスタ・ファイルを調達すると、ハードウェアは、そのアキュムレータ・レジスタ・ファイル・エントリをプライムする。ハードウェアは、アキュムレータ・レジスタ・ファイルをプライムし、アキュムレータ・レジスタ・ファイル・エントリを割り当てる(リネームする)シーケンスを実行する。次いで、高密度数学命令が実行される。
アキュムレータ・レジスタ・ファイルは、多数のシナリオに応答して、プライム解除される、もしくはそのデータがライトバックされる、又はその両方が行われる。1つの実施形態では、アキュムレータ・レジスタ・ファイルは、命令に応答して、及び/又はアキュムレータ・レジスタがダーティになった後、メイン(VS)レジスタ・ファイルが調達された場合、ライトバックされる、もしくはプライム解除される、又その両方が行われる。例えば、アキュムレータ・レジスタからメイン(VS)レジスタ・ファイルへの移動命令、例えばxxmfaccに応答して、アキュムレータ・レジスタ・ファイルはプライム解除され、アキュムレータ・レジスタ・ファイルにおける結果は、アキュムレータ・レジスタ・ファイルから移動され、メイン(VS)レジスタ・ファイルにライトバックされる。別の例では、アキュムレータ・レジスタ・ファイルからの移動及びストア命令、例えばstxaccに応答して、アキュムレータ・レジスタ・ファイルはプライム解除され、アキュムレータ・レジスタ・ファイルにおける結果は、メイン・メモリにライトバックされる。
1つ又は複数の実施形態において、アキュムレータ・レジスタ・ファイル・エントリがダーティであり、メイン(VS)レジスタ・ファイルによってアクセスされるとき、ハードウェアは、アキュムレータ・レジスタをプライム解除する。1つの実施形態において、ハードウェアは、全てのアキュムレータ・レジスタをメイン(VS)レジスタ・ファイルにライトバックするシーケンスを実行する。例えば、アキュムレータ・レジスタ・ファイル・エントリ471に割り当てられたメイン・レジスタ・ファイル・エントリ381を読み書きするためのより若い非高密度(non-dense)数学命令は、ライトバック・プロセスを開始するように、発行キュー(ISQ)330に通知する。1つの態様では、高密度数学実行ユニット演算が完了すると、アキュムレータ・レジスタ・ファイルはプライム解除される。1つ又は複数の実施形態において、アキュムレータからの移動命令が、ディスパッチ・ユニット320によって送られ、発行ユニット330によって発行されて、アキュムレータ・レジスタ・ファイル470からアキュムレータ・レジスタのコンテンツを読み出す。1つ又は複数の実施形態において、ライトバック・プロセスは、ディスパッチ・ユニット320を停止し、発行キューが命令の発行を再開できる前に、アキュムレータ・レジスタ・ファイル470内のデータを排出するよう、発行キュー330に通知することを含む。1つの態様では、発行キューは、アキュムレータ・レジスタが排出されるまで、例えばデータが対応するメイン・レジスタ・ファイル・エントリに書き込まれるまで、ディスパッチ・ユニットを制止する。
1つの態様において、各アキュムレータ・レジスタ・ファイル・エントリはプライム解除され、アキュムレータ・レジスタ・ファイル内のデータはメインVSレジスタ・ファイルに書き込まれ、アキュムレータ・レジスタ・ファイルはリネーム・プールから割り当て解除もされる。アキュムレータ・レジスタ・ファイル470が、メイン・レジスタ・ファイル380に結果を書き込んでいなかった場合、メイン・レジスタ・ファイル・エントリ(RFTags)は割り当て解除されない。メイン・レジスタ・ファイル・エントリ(RFTag)381は、対応するアキュムレータ・レジスタ・ファイル・エントリ471内のデータがメイン・レジスタ・ファイル380に書き込まれたとき、及び/又はそれに応答して、例えばより若い非高密度数学命令に応答して、割り当て解除される。アキュムレータ・レジスタ・ファイル内のデータの最後の部分がメイン・レジスタ・ファイルにライトバックされると、アキュムレータ・レジスタ命令が完了する。完了した命令のiTagは、履歴バッファ(図4には図示されていない)にブロードキャストされ、メイン・レジスタ・ファイル・エントリ(RFTag)を割り当て解除する。次いで、プロセッサは、メイン・レジスタ・ファイルからのデータの読み出しを含む、より若い非高密度数学命令を処理する。さらに、アキュムレータ・レジスタ・ファイルが排出され、ACCビジー・フラグがクリアされた後、発行キューは命令の発行を再開し、ディスパッチ・ユニットは命令のディスパッチを再開することができる。1つ又は複数の実施形態において、アキュムレータ・レジスタがプライムされ、メイン(VS)レジスタ・ファイルがターゲットにされた場合、アキュムレータ・レジスタがダーティでなかったとしても、アキュムレータ・レジスタはプライム解除される。
図6は、1つ又は複数の高密度数学実行ユニット、例えば、行列乗算アキュムレータ(MMA)ユニットを、ローカル・アキュムレータ・レジスタ・ファイルに関連して有するプロセッサの別の実施形態を示し、ここで、プロセッサは、1つ又は複数の高密度数学ユニットの演算が、結果を、同じアキュムレータ・レジスタ・ファイル・エントリに複数回ライトバックするように構成される。図6は、データを処理するためのプロセッサの2つのスーパー・スライスを示す。各スーパー・スライスは、少なくとも1つのMMAユニット460と、2つのベクトル・スカラ(VS)実行ユニット306と、2つのロード・ストア(LS)ユニット304とを含む。単一のアキュムレータ・レジスタ・ファイル470が、両方のMMAユニット460に関連して使用される。代替的な実施形態において、各実行スライスは、ローカル・アキュムレータ・レジスタ・ファイルを有するそれ自身のMMAユニットを有することができ、さらに別の態様においては、各MMAユニットは、各実行スライスのMMAユニット内に含まれるアキュムレータ・レジスタ・ファイルを有する。図6の実施形態では、スーパー・スライス0における発行キュー330b(ISQ1)及びスーパー・スライス1における発行キュー330c(ISQ2)が、命令、例えば、「ger」命令を、それぞれのMMAユニット(460a及び460b)に発行する。代替的に、図6に点線で示されるように、発行キュー330a(ISQ0)及び発行キュー330d(ISQ3)は、命令、例えば「ger」命令を、それぞれのスーパー・スライスにおける各MMAユニット(460a及び460b)に対して発行することができる。
1つ又は複数の実施形態において、アキュムレータ・レジスタは、定期的にリネームされる。つまり、アキュムレータ・レジスタ・ファイル及び高密度数学実行ユニットが利用される多数の命令を処理した後、高密度数学実行ユニットをターゲットとする命令を処理するために、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリの異なるグループが使用される。アキュムレータ・レジスタは、1つ又は複数の実施形態においては、iTag境界を越えた後にリネームされる。例えば、アキュムレータ演算がiTagチェックポイント境界を越えると、1つの実施形態における高密度数学実行ユニット演算の結果は、アキュムレータ・レジスタ・エントリのフリー・プールから割り振られた新しいアキュムレータ・レジスタ・エントリに書き込まれる。iTagチェックポイント境界は、多数の基準に従って定義することができる。例えば、1つの実施形態では、アキュムレータ・レジスタ・ファイル・エントリは、チェックポイント開始iTag後に数「N」の命令(iTag)、例えば64個の命令をディスパッチした後、アキュムレータ・レジスタ・ファイル・エントリをターゲットとする命令に応答して、リネームされる。別の実施形態では、新しいチェックポイントは、N番目の命令ごと、例えば64個の命令ごとに開始することができる。
一例では、規定の又は所定のiTag境界は、64個の命令(iTag)に基づくことができるが、異なる数「N」の命令(iTag)を設定又は使用すること、又は異なるN番目の命令を使用することも考えられる。例えば、最後のチェックポイント開始iTag以降にどの数「N」の命令がディスパッチされたかを設定すること、又はどの「N番目」ごとの命令を設定するかは、演算の前又は演算中に変化することがあり、1つの態様では、アキュムレータ・レジスタ・ファイルに施されているフラッシュ・オペレーションの数に応じて変化し得る。アキュムレータ・レジスタ・ファイルをリネームするのに利用可能な、アキュムレータ・レジスタ・ファイル内の十分なアキュムレータ・レジスタ・エントリがない場合、アキュムレータ・レジスタ・ファイルをターゲットとする命令は、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリが空くまで、ディスパッチでストールする。
1つ又は複数の実施形態において、チェックポイントは、アクティブでないアキュムレータ・レジスタ・エントリをターゲットとする第1の命令(iTag)によって作成される。1つ又は複数の実施形態において、これは、アキュムレータ・レジスタがプライムされたとき、又は次のチェックポイントへiTag境界を越えた後の第1のアキュムレータ演算のときに行われる。1つの実施形態では、アキュムレータ・レジスタ・ファイルに対するプライム命令は、メイン・レジスタ・ファイル・エントリ(RFTag)をアキュムレータ・レジスタ・ファイル・エントリに割り当てる。一例では、アキュムレータ・レジスタ・ファイルに対するプライム命令は、アキュムレータ・レジスタ・ファイル・エントリにマッピングされたメインVSレジスタ・エントリごとに1つ、4つのRFTagを割り当てる。1つの実施形態では、これらは、新しい「プライム」命令がディスパッチされるまで、アキュムレータ・レジスタに割り当てられたRFTagしかない。新しいプライム命令がディスパッチされると、前のメインVSレジスタ・マッピングは、履歴バッファ(SRB)にエビクトされる。
1つの実施形態におけるディスパッチ論理は、アクティブでないアキュムレータ・レジスタ・エントリ(例えば、プライム命令)をターゲットとするアキュムレータ演算を探す。ディスパッチ論理は、どのタイプの命令かを検出し、適切な高密度数学実行ユニット演算命令、例えば、MMA(「ger」)命令が検出された場合、アキュムレータ・レジスタをプライムさせる。1つ又は複数の実施形態におけるディスパッチ論理は、命令が新しいチェックポイント、例えば、アキュムレータ・レジスタ・ファイル・エントリの同じグループを用いて処理される命令のセットを作成していることを検出する。1つ又は複数の実施形態において、ディスパッチは、チェックポイント開始iTagをICTに送る。ICTは、この命令をマーク付けし、チェックポイントを開始する。チェックポイント内の全ての命令は、一緒に完了する。チェックポイント開始iTagはまた、ディスパッチ・ユニット内にも格納され、1つの実施形態では、特別な完了/例外マクロ(SpComp)に格納される。
さらに、1つ又は複数の実施形態において、ディスパッチ論理は、チェックポイントiTag境界を越えた後、アクティブなアキュムレータ・レジスタ・ファイル・エントリをターゲットとする第1のアキュムレータ演算を探す。つまり、1つの実施形態では、チェックポイント境界を越えた後、累算命令(例えば、アキュムレータ・レジスタ・ファイル・エントリをターゲットとする命令)に応答して、新しいチェックポイントが開始する(そして、新しいチェックポイント開始iTagが識別される)。次のチェックポイント境界は、1つの実施形態では、前のチェックポイント開始iTagの後に「N」個の命令(iTag)をディスパッチすることに基づいて、設定もしくは決定、又はその両方が行われる。命令の数「N」は、チェックポイント開始iTagから計算され、iTag境界を決定する。1つの実施形態におけるディスパッチは、新しいチェックポイントが開始していることをマッパに通知し、マッパは、アキュムレータ・レジスタ・エントリをリネームする。代替的な実施形態では、チェックポイント境界は、N番目の命令ごとに基づいて、例えば、64、128、192、256等の命令において設定される。
1つの態様におけるディスパッチ・ユニットは、最も若い/現在のチェックポイント開始iTagを追跡する。チェックポイント開始iTagより若い全ての命令は、そのチェックポイントに属する。これらの命令は、累算命令、又は例えば分岐などの他の独立した演算、制御命令、ロード命令、もしくはストア命令、又はその組み合わせとすることができる。ICTは、ディスパッチからのチェックポイント開始iTagを有する実施形態において提供され、どの命令がチェックポイント内にあるかを決定し、例えば、そのマスクを構築する。例えば、ICTエントリ内に提供されチェックポイント開始iTagとして、又はチェックポイントiTagにおけるような命令を識別するために、1つの態様において、追加ビットが提供される。一例において、チェックポイント開始命令がiTag 0x05であり、チェックポイント境界が64個の命令ごと、例えばN番目の命令ごとに基づく場合、iTag 0-4はチェックポイントの外側にあり、iTag 5-63はチェックポイントの内側にある。ディスパッチは、最も若い/現在のチェックポイント開始iTagを有し、1つの命令が新しいチェックポイントをいつトリガするかを検出する。ディスパッチは、(それ自身の論理を通して)ディスパッチされた命令の数を認識し、アキュムレート命令がいつディスパッチされるかを検出する。iTag境界を越えた後、アキュムレータ・レジスタ・ファイルをターゲットとすることに応答して、1つの実施形態におけるディスパッチは、新しいチェックポイントが開始されていることをマッパに通知し、マッパはアキュムレータ・レジスタ・エントリをリネームする。1つの実施形態において、新しいチェックポイントを開始するために、ビット又はコード化が使用され、例えば設定され、新しいアキュムレータ・タグ(ACCtag)を割り当て、古いアキュムレータ・レジスタ・エントリを調達する。1つ又は複数の実施形態において、ディスパッチは、新しいチェックポイント開始iTagをICTに送り、ICTは新しいチェックポイントを開始する。新しいチェックポイント開始iTagは、ディスパッチ・ユニットにも格納され、1つの実施形態では、特別な完了/例外マクロ(SpComp)に格納される。
一例において、アキュムレータ・レジスタ・ファイルは、スレッドごとに最大3つのチェックポイントを保持する。スレッドごとに最大3つのチェックポイントがある例では、1つの態様における特別な完了マクロ(SpComp)は、スレッドごとに最大3つのチェックポイント開始iTagを格納する。スレッドあたりの他の数のチェックポイントの他の数、例えば、スレッドあたり4つのチェックポイントも考えられ、それは、アキュムレータ・レジスタ・ファイルのサイズに部分的に依存する。別個のアキュムレータ・レジスタ・ファイルのフリーリスト(free list)は、割り当てられた及び空いているアキュムレータ・レジスタ・ファイル・タグ(ACCtag)のカウントを維持し、追跡する。
アキュムレータ・レジスタ・ファイル・エントリを自由にしてフリーリストに戻し、それらを再利用できるようにするために、チェックポイント内の命令を完了させるべきである。ICTはチェックポイント内の命令(iTag)(アキュムレータ・レジスタ・ファイル・エントリの同じグループにマッピングされた命令のセット)の完了ビットを調べ、チェックポイント内の全ての命令が終了した場合、チェックポイントは完了する。チェックポイントが完了すると、そのチェックポイントに対応するアキュムレータ・レジスタ・ファイル・エントリのマッピングが解放され、それらのアキュムレータ・レジスタ・ファイル・エントリを自由にしてアキュムレータ・レジスタ・ファイルのフリーリストに戻す。チェックポイント開始iTagが0x05であり、iTag 5-63がチェックポイント内にある例では、チェックポイントを終了できる前にiTag 6-63を終了する必要がある。チェックポイントを完了するために、1つの実施形態では、iTag 0x05はnext-to-finish(NTF)であるべきであり、チェックポイント内の全ての他の命令を終了させ、SpCompマクロがチェックポイント開始命令(iTag)を終了させる。1つの実施形態におけるチェックポイント開始iTagは、終了すべきチェックポイントにおける最後の命令である。1つ又は複数の実施形態において、SpCompマクロは、前のチェックポイントの終了/完了を処理する一方で、現在のチェックポイント開始命令(iTag)を格納してもいる。
1つの例において、チェックポイント0は、アキュムレータの結果(例えば、高密度数学実行ユニットの結果)をアキュムレータ・レジスタ・ファイルのエントリ0:7にマッピングする。チェックポイント1は、アキュムレータの結果(例えば、高密度計算実行ユニットの結果)をアキュムレータ・レジスタ・ファイル・エントリ8:15にマッピングし、チェックポイント0のマッピングをエビクトさせる。チェックポイント・マッピングは、それがアキュムレータ・レジスタ・エントリであることを示すビット又はタグのコード化(例えば、STFtagなど)を用いて履歴バッファ(SRB)にエビクトされる。チェックポイント・マッピングが履歴バッファ(SRB)にエビクトされる間、アキュムレータ・レジスタ・エントリ内のデータは、チェックポイントのためにアキュムレータ・レジスタ・エントリに保持される。1つの実施形態におけるチェックポイント開始iTagは、発行キュー(ISQ)によって終了されない。これは、チェックポイント開始iTagより若い命令の完了をブロックする。1つの実施形態において、チェックポイント開始命令は、終了しないようにタグ付けされるか、又は例外により終了する。チェックポイント2は、アキュムレータの結果(例えば、高密度数学実行ユニットの結果)を、アキュムレータ・レジスタ・ファイルエントリ16:23にマッピングし、履歴バッファ(SRB)へのチェックポイント1のマッピングをエビクトする。チェックポイント1が完了すると、チェックポイント0のマッピングがSRBから解放され、アキュムレータ・エントリ0:7(例えば、チェックポイント0のアキュムレータ・レジスタ・ファイル・エントリ(ACCtag))を解放してフリーリストに戻す。これらのエントリ(タグ)は、新しいチェックポイント内の新しい命令に割り当てるように利用可能である。
分岐ミス又ロード・ミスのためにチェックポイント内にフラッシュが存在する場合、チェックポイント全体をフラッシュする必要がある。1つの態様における例外マクロは、フラッシュiTagをスレッドのチェックポイント開始iTagと比較し、新しいフラッシュ要求を生成し、チェックポイント開始iTagをフラッシュし、前のチェックポイントを復元する。例外マクロは、フラッシュされたばかりのチェックポイント開始iTagを無効にしなければならない。履歴バッファ(SRB)は、チェックポイントにおいて変更されたあらゆる他のGPR又はVSRと共に、マッパへの前のアキュムレータ・レジスタ・マッピングを復元する。履歴バッファ(SRB)は、前のチェックポイント開始iTagをディスパッチ及び例外マクロの両方に復元する。前のチェックポイントがまだ完了していないことがあり、前のチェックポイントを終了するために、チェックポイント開始iTagが必要とされる。
アキュムレータ・レジスタ・ファイルのフラッシュ演算の一例が、以下の表1、表2、表3を参照して示される。表1及び表3はマッパ内のデータを示し、表2は履歴バッファ(SRB)内のデータを示す。表1~表3では、チェックポイント0開始iTagが太字で示される。チェックポイント0の開始iTagは0x0F(iTag 0x0F-0x3F)であり、チェックポイント1の開始iTagは0x40(iTag 0x40~0x7F)である。表1は、フラッシュ演算前のマッパにおけるデータを示し、表2は、フラッシュ演算前の履歴バッファ(SRB)内のデータを示す。
Figure 0007513360000001
表1は、マッパ・エントリが現在チェックポイント1のデータを有し、マッパ・エントリは各アキュムレータ命令についての新しいiTagで更新されているが、チェックポイント開始から割り当てられたアキュムレータ・タグ(ACCtag)を保持することを示す。履歴バッファ又はSRBは、チェックポイント0のデータを有する。プロセッサにおいて、フラッシュiTagが0x47であり、それはチェックポイント1の一部である、フラッシュ・オペレーションがある。この例では、チェックポイント1は0x40のチェックポイント開始iTagを有するので、プロセッサは、チェックポイント開始iTag 0x40をフラッシュし、前のチェックポイントを復元する。チェックポイント開始iTag 0x40をフラッシュすることにより、履歴バッファ(SRB)エントリ0-4(チェックポイント0)が復元され、マッパが更新される。チェックポイント0のデータは、表3の網掛けされた列に示されるマッパにおいて更新される。
Figure 0007513360000002
図7は、1つの実施形態において、本開示の実施形態に従った、プロセッサにおいて高密度数学命令、例えばMMA(「ger」)命令を処理し、これに対処することを含む、プロセッサにおいてデータを処理する方法、例えば命令を実行する方法を示し、説明する一実施形態による例示的なフローチャートである。より具体的には、1つの態様における方法は、多数の演算又は命令の後に、チェックポイント化すること、例えば、データをリネームし、新しいアキュムレータ・レジスタ・エントリに書き込むことに向けられる。方法700は、便宜上説明されているものであり、一連のステップもしくは多数のステップ、又はその両方を含むものとして本開示を限定する意図を有しておらず、プロセスは、一連のステップもしくは多数のステップ、又はその両方として実行される必要はなく、及び/又はステップは、図7に関して示され、説明される順序で実行される必要はなく、プロセスを統合してもよく、及び/又は1つ又は複数のステップを一緒に、同時に実行してもよく、又はステップは、開示された順序でもしくは代替的な順序で実行してもよいことが理解されるであろう。
図7の方法700は、プロセッサにおけるデータの処理に関し、より具体的には、高密度数学実行ユニット、例えばMMA実行ユニットを用いて高密度数学演算に対処することに関する。より具体的には、1つの態様における方法700は、アキュムレータ・レジスタ・ファイルをチェックポイント化すること、例えば、チェックポイント境界を越えた後、例えば多数の演算/命令の後、又は複数(N番目)の命令の後に、データをリネームし、1つ又は複数の新しいアキュムレータ・レジスタ・ファイル・エントリに書き込むことに向けられる。705において、高密度数学実行ユニットが提供される。一例において、高密度数学実行ユニットは、行列乗算アキュムレータ(MMA)ユニットである。1つ又は複数の例では、高密度数学実行ユニットは、推論エンジンとして配置された複数のMMAユニットとすることができる。他の高密度数学実行ユニットも考えられる。
1つ又は複数の実施形態において、710において、アキュムレータ・レジスタ・ファイルが、好ましくは高密度数学実行ユニットと関連して提供される。アキュムレータ・レジスタ・ファイルは、1つの実施形態では、高密度数学実行ユニットの1つ又は複数に対してローカルであり、1つの態様では、アキュムレータ・レジスタ・ファイルは、MMAユニット内に存在する。好ましくは、アキュムレータ・レジスタ・ファイルは、プロセッサ内のメイン・レジスタ・ファイルのビット・フィールド幅より広いビット・フィールド幅を有する。1つの実施形態におけるアキュムレータ・レジスタ・ファイルは、512ビット幅であるが、プロセッサ内のメイン・レジスタ・ファイルは128ビット幅である。アキュムレータ・レジスタに対して、他のビット幅も考えられる。1つの態様によれば、1つより多いメイン・レジスタ・ファイル・エントリをアキュムレータ・レジスタ・ファイルにマッピングすることができる。例えば、演算中に4つの連続したメイン・レジスタ・ファイルが、1つのアキュムレータ・レジスタ・ファイルにマッピングされる。代替的な実施形態では、アキュムレータ・レジスタ・ファイルは、メイン・レジスタ・ファイルと統一され、その中に存在する。アキュムレータ・レジスタを組み込む統一されたレジスタ・ファイルは、好ましくは、高密度数学実行ユニットと関連付けられる。
1つ又は複数の実施形態において、715において、アキュムレータ・レジスタ・ファイルがプライムされる。1つ又は複数の実施形態において、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリのグループがプライムされる。1つの実施形態では、高密度数学実行ユニット演算についての命令に応答して、アキュムレータ・レジスタ・ファイル、例えば1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリのグループがプライムされる。例えば、アキュムレータ・レジスタ・ファイルが高密度数学実行ユニット演算のソースである場合、アキュムレータ・レジスタ・ファイルがプライムされる。アキュムレータ・レジスタ・ファイルのプライムは、1つの実施形態においては、アキュムレータ・レジスタ・ファイル内のデータを、メイン・レジスタ・ファイル、例えばVSレジスタ・ファイル内に存在するデータ、又はメイン・メモリ内に存在するデータと同期させることを含む。例えば、プライム命令は、データをメイン・レジスタ・ファイルからアキュムレータ・レジスタ・ファイルへ移動させることができる。アキュムレータ・レジスタ・ファイルのプライムは、アキュムレータ・レジスタ・ファイル内のデータをクリアすること、例えばアキュムレータ・レジスタ・ファイル・エントリ内のデータをゼロに設定することを含むこともできる。1つ又は複数の実施形態において、高密度数学命令、例えばMMA「ger」命令は、アキュムレータ・レジスタ・ファイル・ソース・データを有しないことがあり、その高密度数学命令は、自己プライミング(self-priming)と考えられる。1つ又は複数の態様におけるアキュムレータ・レジスタ・ファイルは、それがメイン・レジスタ・ファイル、メイン・メモリから、又は自己プライミング命令の結果として、最初に書き込まれるときにプライムされる(ここで、アキュムレータ・レジスタ・ファイル・エントリ内のデータはゼロに設定される)。1つ又は複数の実施形態において、アキュムレータ・レジスタ・ファイルは、アキュムレータ・レジスタ・ファイルのリネームを割り当て、アキュムレータ・レジスタ・ファイルはプライムされ、アキュムレータ・レジスタ・ファイル内のデータの値は、メイン・レジスタ・ファイル内の値、メイン・メモリ内の値、又はゼロに設定される。
715において、1つ又は複数の実施形態において、チェックポイントが作成され、例えば開始され、チェックポイント開始iTagが格納される。1つの態様では、ディスパッチ・ユニットは、チェックポイントを開始する命令を検出する。1つの実施形態におけるICTは、チェックポイントを開始し、1つの実施形態においては、チェックポイント開始iTagが、ディスパッチ・ユニットもしくは特別な完了/例外マクロ(SpComp)、又はその両方に格納される。高密度数学実行ユニット、例えばMMAもしくは推論エンジン、又はその両方は、1つ又は複数の実施形態では、720において、高密度数学演算が施される。つまり、高密度数学演算は、1つ又は複数の高密度数学実行ユニット、例えば推論エンジンもしくはMMAユニット、又はその両方を用いて実行される。
730において、チェックポイント境界を越えているかどうかを判断する。チェックポイント境界を越えていない場合(730:いいえ)、740において、高密度数学ユニット演算の結果が、現在使用されているアキュムレータ・レジスタ・ファイル・エントリ、例えば使用中のアキュムレータ・レジスタ・ファイル・エントリにライトバックされる。つまり、一例では、高密度数学実行ユニット演算の際、アキュムレータ・レジスタ・ファイル・エントリは、ソース及びターゲットの両方として使用される。高密度数学実行ユニットの結果は、好ましくは、リネームすることなく、同じターゲット・アキュムレータ・レジスタ・ファイル・エントリに複数回ライトバックされる。つまり、1つの実施形態では、単一のアキュムレータ・レジスタ・ファイル・ターゲットのリネームは、複数回再書き込みすることができる。1つ又は複数の態様において、高密度数学実行ユニット命令、例えば「ger」命令に応答して、メイン・レジスタ・ファイルへのライトバックがなく、代わりに、高密度数学実行ユニット、例えばMMAユニットに対してローカルであるアキュムレータ・レジスタが結果を格納する一方、メイン・レジスタ・ファイルは結果を格納しない。このようにして、高密度数学実行ユニット、例えば推論エンジンもしくはMMAユニット、又はその両方は、メイン・レジスタ・ファイル・エントリをリネームすることなく動作する。1つの実施形態では、高密度数学実行ユニットが結果をアキュムレータ・レジスタにライトバックすることに応答して、アキュムレータ・レジスタ・ファイル・エントリは、フラグが立てられ、又はマーク付けされる、例えばダーティとマーク付けされる。
730において、チェックポイント境界を越えた、又は越えることになると判断された場合(730:はい)、735において、アキュムレータ・レジスタ・ファイルに対する新しいチェックポイントが開始され(例えば、新しいアキュムレータ・レジスタ・ファイル・エントリがプライムされ)、新しいチェックポイント開始iTagが格納される。735において新しいチェックポイントが開始された場合、次に、740において、高密度数学実行ユニット演算の結果が、新しいアキュムレータ・レジスタ・ファイル・エントリ、例えば新しいアキュムレータ・レジスタ・ファイル・エントリが作成された以降、現在使用中のアキュムレータ・レジスタ・ファイル・エントリにライトバックされる。このようにして、高密度数学実行ユニットの結果が、例えばiTag境界を越えるまでなど1回又は複数回、同じアキュムレータ・レジスタ・ファイル・エントリにライトバックされた後、命令がアキュムレータ・レジスタ・ファイルをターゲットとする場合、新しいアキュムレータ・レジスタ・ファイル・エントリが割り当てられ、高密度数学実行ユニット演算の結果を受け取る。1つの態様において、新しいチェックポイントは、アクティブでないアキュムレータ・レジスタ・ファイル・エントリをターゲットにするように、第1のiTagによって作成される。1つの態様においてiTag境界を越えた後の第1のアキュムレータ演算は、新しいチェックポイントを開始もしくは作成する、又はその両方を行う。1つ又は複数の実施形態において、古いアキュムレータ・レジスタ・ファイル・エントリ内の結果は、古いアキュムレータ・レジスタ・ファイル・エントリ内に残る。代替的に、1つの態様における古い前のアキュムレータ・レジスタ・ファイル・エントリのマッピングをエビクトすることができる。
新しいチェックポイントを開始又は作成するかどうか、及びその頻度は、多数の要因又は基準に基づくことができる。1つの実施形態によれば、チェックポイントの開始以降にディスパッチされた命令の数「N」を用いて、チェックポイント境界を作成することができる。この態様において、チェックポイント境界は、チェックポイント開始iTagの後の命令(iTag)の「N」の数に設定することができる。数「N」は、所望の性能に応じて、規定すること、予め決定すること、予め設定することし、もしくは変更すること、又はその組み合わせを行うことができる。多くのフラッシュが予想されない場合、チェックポイントの前にディスパッチされる命令の数「N」を大きくすること、又は増大させることができる。説明される例では、チェックポイント開始iTag以降の命令(iTag)の規定された数「N」は、64とすることができるが、他の数も考えられる。この点に関して、チェックポイント開始iTagがディスパッチされて以降にディスパッチすべき命令の数が計算され、チェックポイントが開始して以降ディスパッチされた命令の数が数「N」に等しいか又それより大きい場合、チェックポイント境界を越え、735において、新しいチェックポイントが作成される又は作成されることになる。チェックポイント開始iTagがディスパッチされて以降ディスパッチすべき命令の数NがNを下回る場合、チェックポイント境界は越えず、740において、現在使用中のアキュムレータ・レジスタ・ファイルを用いて、高密度数学演算の結果をライトバックする。
代替的に、チェックポイント境界は、N番目の命令ごととすることもできる。つまり、N番目の命令ごとに、新しいチェックポイント境界がある。従って、N番目の命令が64個に設定される例では、チェックポイント境界は64の命令、128の命令、192の命令(64×N)等にある。この例では、チェックポイント境界iTagが計算され、決定され、命令がそれらのチェックポイント境界の1つを通過すると、新しいアキュムレータ・レジスタ・エントリがプライムされ、740において、結果が新しいアキュムレータ・レジスタ・エントリに書き込まれる。
745において、次の命令が高密度数学実行ユニット演算の一部であるかどうかが判断される。つまり、高密度数学演算が完了したかどうかが判断される。高密度数学演算が完了したかどうかを判断することができる1つの方法は、アキュムレータ・レジスタ・ファイルがいつプライム解除されるかである。高密度数学演算が完了していない場合、又は次の命令が高密度数学演算の一部である、例えば、アキュムレータ・レジスタ・ファイル・エントリをターゲットとする場合(745:はい)、745において、方法は720に進み、高密度数学実行ユニット演算を実行する。1つの実施形態において、高密度数学実行ユニット演算が完了すると(745:いいえ)、750において、アキュムレータ・レジスタ・ファイルの結果は、メイン・レジスタ・ファイル、もしくはメイン・メモリ、又はその両方にライトバックされる。1つの実施形態では、アキュムレータ・レジスタがプライム解除され、アキュムレータ・レジスタ・ファイル・エントリ内の値がメイン・レジスタ・ファイル(又はメイン・メモリ)に書き込まれ、アキュムレータ・レジスタ・ファイル・エントリが割り当て解除される。これに関して、使用中の及び完了した現在のチェックポイント化されたアキュムレータ・レジスタ・ファイル・エント内の結果が、メイン・レジスタ・ファイルに書き込まれる。1つの実施形態によると、メイン・レジスタ・ファイルは、命令、例えば、アキュムレータ・レジスタ・ファイル・エントリからメイン・レジスタ・ファイルへの移動命令(xxmfacc)、及びアキュムレータ・レジスタ・ファイル・エントリからの移動及びストア命令(stxacc)に応答して、ライトバックされる。アキュムレータ・レジスタの結果は、アキュムレータ・レジスタ・ファイル・エントリにマッピングされたメイン・レジスタ・ファイル・エントリが調達され又はターゲットにされ、かつ、アキュムレータ・レジスタ・ファイル・エントリがダーティであるときにも、メイン・レジスタ・ファイルにライトバックされる。1つの態様では、定義されたアキュムレータ読み出しアキュムレータ命令は、データを、アキュムレータ・レジスタ・ファイルからメイン・レジスタ・ファイルへ移動する。1つの実施形態では、アキュムレータが読み出された後、一連のストア演算、例えば、「オクト・ワード/クワッド・ワード」ストア演算が、メイン・レジスタ・ファイルを読み出し、メイン・メモリに書き込む。
1つの実施形態において、アキュムレータ・レジスタ・ファイル・エントリがダーティであり、メイン・レジスタによってアクセスされると、ハードウェアは、アキュムレータ・レジスタ・ファイルをプライム解除する。1つの態様では、メイン・レジスタ・ファイル・エントリがターゲットとされ、マッピングされたアキュムレータ・レジスタ・エントリがプライムされると、アキュムレータ・レジスタがダーティでなかった場合でも、ハードウェアは、アキュムレータ・レジスタをプライム解除する。ハードウェアは、全てのアキュムレータ・レジスタ・ファイル・エントリをメイン・レジスタ・ファイルにライトバックするシーケンスを実行し、メイン・レジスタ・ファイル・エントリをターゲットとする演算が実行され、各アキュムレータ・レジスタ・ファイル・エントリがリネーム・プール、例えばフリーリストから割り当て解除される。
1つの態様において、高密度数学命令、例えば「ger」命令が、最後のプライム解除(例えば、xxmtacc又はldaccによる)以降にプライムされなかったアキュムレータ・レジスタ・ファイルを調達すると、ハードウェアは、そのアキュムレータ・レジスタ・ファイル・エントリをプライムする。1つの態様では、ハードウェアは、アキュムレータ・レジスタ・ファイルをプライムし、アキュムレータ・レジスタ・ファイル・エントリを割り当てる(リネームする)シーケンスを実行する。次いで、高密度数学命令が実行される。
本発明は、システム、方法もしくはコンピュータ・プログラム製品又はそれらの組み合わせを、いずれかの可能な技術的詳細レベルで統合したものとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(単数又は複数)を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカードもしくは命令がそこに記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、及び/又は無線ネットワークなどのネットワークを介して外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ、又はそれらの組み合わせを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体内に格納する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び、「C」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述されるソース・コード又はオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータもしくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネットサービスプロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路を個別化することができる。
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図もしくはブロック図又はその両方を参照して説明される。フローチャート図もしくはブロック図又はその両方の各ブロック、並びにフローチャート図もしくはブロック図又はその両方におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて機械を製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャートもしくはブロック図又は両方の1つ又は複数のブロック内で指定された機能/動作を実施するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置もしくは他のデバイス又はその組み合わせを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャートもしくはブロック図又は両方の1つ又は複数のブロックにおいて指定された機能/動作の態様を実施する命令を含む製品を含むようにすることもできる。
コンピュータ可読プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生産し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャートもしくはブロック図又は両方の1つ又は複数のブロックにおいて指定された機能/動作を実行するためのプロセスを提供するようにすることもできる。
図面内のフローチャート及びブロック図は、本発明の様々な実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図もしくはフローチャート図又は両方の各ブロック、及びブロック図もしくはフローチャート図又はその両方におけるブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
さらに、種々の実施形態によるシステムは、プロセッサと、プロセッサと統合され、及び/又はプロセッサによって実行可能な論理とを含むことができ、論理は、本明細書に記載されるプロセス・ステップの1つ又は複数を実行するように構成される。それと統合されるとは、プロセッサが、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)等のようなハードウェア論理としてそこに組み込まれた論理を有するということを意味する。プロセッサによって実行可能であるとは、論理がハードウェア論理、ファームウェア、オペレーティング・システムの一部、アプリケーション・プログラムの一部などのソフトウェア論理、又はプロセッサによってアクセス可能であり、プロセッサによる実行時にプロセッサに何らかの機能を実行させるように構成されたハードウェア及びソフトウェア論理の何らかの組み合わせであることを意味する。ソフトウェア論理は、当技術分野において知られているように、任意のメモリ・タイプのローカル・メモリもしくは遠隔メモリ、又はその両方に格納することができる。ソフトウェア・プロセッサ・モジュール、もしくはASIC、FPGA、中央処理ユニット(CPU)、集積回路(IC)、グラフィックス処理ユニット(GPU)、又はそれらの組み合わせなどのハードウェア・プロセッサといった、当技術分野において知られている任意のプロセッサを使用することができる。
前述のシステムもしくは方法、又はその両方の種々の特徴を任意の方法で組み合わせて、上記に示した説明から複数の組み合わせを作成できることが明らかであろう。
本発明の実施形態は、オン・デマンドでサービスを提供するために顧客のためにデプロイされるサービスの形で提供できることが、さらに理解されるであろう。
本開示の種々の実施形態の説明は、例証の目的のために提示されたが、これらは、網羅的であること、又は開示した実施形態に限定することを意図するものではない。当業者には、説明される実施形態の範囲から逸脱することなく、多くの修正及び変形が明らかであろう。本明細書で用いられる用語は、実施形態の原理、実際の適用、又は市場に見られる技術に優る技術的改善を最もよく説明するため、又は、当業者が、本明細書に開示される実施形態を理解するのを可能にするために選択された。

Claims (19)

  1. 情報を処理するためのコンピュータ・システムであって、前記コンピュータ・システムは、
    命令を処理するための回路及び論理を有する少なくとも1つのプロセッサを含み、前記プロセッサは、
    前記少なくとも1つのプロセッサと関連付けられたメイン・レジスタ・ファイルであって、データを格納するための回路及び複数のメイン・レジスタ・ファイル・エントリと、データを前記メイン・レジスタ・ファイル・エントリに書き込むための1つ又は複数の書き込みポートと、データを前記メイン・レジスタ・ファイル・エントリから読み出すための1つ又は複数の読み出しポートとを有する、メイン・レジスタ・ファイルと、
    回路及び論理を有し、高密度数学実行ユニットを含む、1つ又は複数の実行ユニットと、
    データを格納するための回路及び複数のエントリを有し、前記高密度数学実行ユニットと関連付けられた、少なくとも1つのアキュムレータ・レジスタ・ファイルと
    を含み、
    前記プロセッサは、前記高密度数学実行ユニット内のデータを処理するように構成され、前記高密度数学実行ユニットの結果は、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリの第1のグループに書き込まれ、チェックポイント境界を越えた後、前記高密度数学実行ユニットの結果は、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリの第2のグループに書き込まれ
    前記プロセッサは、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリの前記第1及び第2のグループから前記メイン・レジスタ・ファイルにデータを書き込むようにさらに構成される、
    コンピュータ・システム。
  2. 前記プロセッサは、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリの前記第1のグループに結果を複数回ライトバックするように構成される、請求項1に記載のコンピュータ・システム。
  3. 前記プロセッサは、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリの前記第1及び第2のグループ内のアキュムレータ・レジスタ・ファイル・エントリにマッピングされたメイン・レジスタ・ファイル・エントリにアクセスする命令に応答して、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリの前記第1及び第2のグループから複数のメイン・レジスタ・ファイル・エントリにデータを書き込むように構成される、請求項1に記載のコンピュータ・システム。
  4. 前記高密度数学実行ユニットは、前記メイン・レジスタ・ファイルに書き込む必要なしに、前記アキュムレータ・レジスタ・ファイルに読み書きすることができるように構成された、請求項1に記載のコンピュータ・システム。
  5. 前記高密度数学実行ユニットは、行列乗算アキュムレータ(MMA)ユニットであり、前記アキュムレータ・レジスタ・ファイルは、前記MMA内に配置される、請求項4に記載のコンピュータ・システム。
  6. 情報を処理するためのコンピュータ・システムであって、前記コンピュータ・システムは、
    命令を処理するための回路及び論理を有する少なくとも1つのプロセッサを含み、前記プロセッサは、
    前記少なくとも1つのプロセッサと関連付けられたメイン・レジスタ・ファイルであって、データを格納するための回路及び複数のメイン・レジスタ・ファイル・エントリと、データを前記メイン・レジスタ・ファイル・エントリに書き込むための1つ又は複数の書き込みポートと、データを前記メイン・レジスタ・ファイル・エントリから読み出すための1つ又は複数の読み出しポートとを有する、メイン・レジスタ・ファイルと、
    回路及び論理を有し、高密度数学実行ユニットを含む、1つ又は複数の実行ユニットと、
    データを格納するための回路及び複数のエントリを有し、前記高密度数学実行ユニットと関連付けられた、少なくとも1つのアキュムレータ・レジスタ・ファイルと
    を含み、
    前記プロセッサは、前記高密度数学実行ユニット内のデータを処理するように構成され、前記高密度数学実行ユニットの結果は、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリの第1のグループに書き込まれ、チェックポイント境界を越えた後、前記高密度数学実行ユニットの結果は、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリの第2のグループに書き込まれ、
    前記アキュムレータ・レジスタ・ファイルのビット・フィールド幅は、前記メイン・レジスタ・ファイルのビット・フィールド幅よりも広い、コンピュータ・システム。
  7. 前記アキュムレータ・レジスタ・ファイル内の各エントリは、複数のメイン・レジスタ・ファイル・エントリにマッピングされる、請求項6に記載のコンピュータ・システム。
  8. 命令をディスパッチするための回路及び論理を有するディスパッチ・ユニットと、
    ディスパッチされた命令を追跡するための回路及び論理と、データを格納するための複数のエントリとを有する、命令完了テーブル(ICT)と、
    1つ又は複数のメイン・レジスタ・ファイル・エントリを1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリにマッピングするための回路及び論理を有するマッパと
    をさらに含み、
    前記ディスパッチ・ユニットは、アキュムレータ・レジスタ・ファイル・エントリの前記第2のグループが割り当てられていることを前記マッパに通知し、前記マッパは、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリの前記第1のグループをアキュムレータ・レジスタ・ファイル・エントリの前記第2のグループにリネームする、請求項1に記載のコンピュータ・システム。
  9. 前記プロセッサは、前記アキュムレータ・レジスタ・ファイルをターゲットにする命令に応答して、前記アキュムレータ・レジスタ・ファイルをプライムしてデータを受け取るように構成され、前記アキュムレータ・レジスタ・ファイルをプライムすることに応答して、第1のチェックポイントが作成され、前記ディスパッチ・ユニットが前記第1のチェックポイントに対応する第1のチェックポイント開始iTagを前記ICTに送り、前記第1のチェックポイント開始iTagを格納し、
    前記アキュムレータ・レジスタ・ファイルをプライムすることは、前記ターゲットをリネームして前記アキュムレータ・レジスタ・ファイルのエントリにマッピングすることを含む、
    請求項8に記載のコンピュータ・システム。
  10. 前記チェックポイント境界は、前記第1のチェックポイント開始iTag以降にディスパッチされた命令の数「N」に基づいており、前記ディスパッチ・ユニットが前記数「N」の命令をディスパッチした後、前記ディスパッチ・ユニットは、ディスパッチされた命令が、アキュムレータ・レジスタ・ファイル・エントリの前記第2のグループの前記割り当てをトリガすることを検出し、第2のチェックポイントが作成される、請求項9に記載のコンピュータ・システム。
  11. 前記第2のチェックポイントが作成されることに応答して、前記ディスパッチ・ユニットは、第2のチェックポイント開始iTagを、前記第2のチェックポイントに対応する前記ICTに送り、前記第2のチェックポイント開始iTagを格納する、請求項10に記載のコンピュータ・システム。
  12. 前記ディスパッチ・ユニットは、現在のチェックポイント開始iTagを追跡し、前記現在のチェックポイント開始iTagより若い全ての命令は、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリの前記それぞれのグループと関連付けられた前記チェックポイントに属する、請求項11に記載のコンピュータ・システム。
  13. 前記ICTは、前記ディスパッチ・ユニットによりディスパッチされた命令の前記数に基づいて、どの命令が前記それぞれのチェックポイントに属するかを判断する、請求項10に記載のコンピュータ・システム。
  14. 命令をチェックポイント開始iTagとして又はチェックポイントiTagとして識別するために、ICTエントリにおいてコード化が提供される、請求項9に記載のコンピュータ・システム。
  15. 前記それぞれのチェックポイント内の全ての命令(iTag)が終了するまで、各チェックポイントは完了せず、前記アキュムレータ・レジスタ・ファイル・エントリは再利用のために解放されない、請求項10に記載のコンピュータ・システム。
  16. 前記ICTは、前記それぞれのチェックポイント内の全ての命令の完了ビットを調べ、前記それぞれのチェックポイント内の全ての前記命令が終了した場合、前記それぞれのチェックポイントは完了し、前記それぞれのチェックポイント・マッピングは、使用のために再割り当てする準備のできたアキュムレータ・レジスタ・ファイル・エントリのフリーリストに解放される、請求項15に記載のコンピュータ・システム。
  17. 前記第2のチェックポイント内のフラッシュ・オペレーションに応答して、フラッシュiTagを第2のチェックポイント開始iTagと比較し、前記第2のチェックポイントがフラッシュされ、前記第1のチェックポイント及び前記第1のチェックポイントのアキュムレータ・レジスタ・マッピングが復元される、請求項10に記載のコンピュータ・システム。
  18. 情報を処理するためのプロセッサであって、前記プロセッサは、
    前記少なくとも1つのプロセッサと関連付けられたメイン・レジスタ・ファイルであって、データを格納するための回路及び複数のメイン・レジスタ・ファイル・エントリと、データを前記メイン・レジスタ・ファイル・エントリに書き込むための1つ又は複数の書き込みポートと、データを前記メイン・レジスタ・ファイル・エントリから読み出すための1つ又は複数の読み出しポートとを有する、メイン・レジスタ・ファイルと、
    回路及び論理を有し、高密度数学実行ユニットを含む、1つ又は複数の実行ユニットと、
    データを格納するための回路及び複数のエントリを有し、前記高密度数学実行ユニットと関連付けられた少なくとも1つのアキュムレータ・レジスタ・ファイルであって、アキュムレータ・レジスタ・ファイルのビット・フィールド幅は前記メイン・レジスタ・ファイルのビット・フィールド幅よりも広い、少なくとも1つのアキュムレータ・レジスタ・ファイルと、
    命令をディスパッチするための回路及び論理を有するディスパッチ・ユニットと、
    ディスパッチされた命令を追跡するための回路及び論理と、データを格納するための複数のエントリとを有する、命令完了テーブル(ICT)と、
    1つ又は複数のメイン・レジスタ・ファイル・エントリを1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリにマッピングするための回路及び論理を有するマッパと
    を含み、
    前記プロセッサは、前記高密度数学実行ユニット内のデータを処理するように構成され、前記高密度数学実行ユニットの結果は、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリの第1のグループに複数回書き込まれ、チェックポイント境界を越えた後、前記高密度数学実行ユニットの結果は、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリの第2のグループに書き込まれ、
    前記プロセッサは、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリの前記第1及び第2のグループから前記メイン・レジスタ・ファイル・エントリにデータをライトバックするように構成される、プロセッサ。
  19. 前記プロセッサは、前記アキュムレータ・レジスタ・ファイルをターゲットにする命令に応答して、前記アキュムレータ・レジスタ・ファイルをプライムしてデータを受け取るように構成され、前記アキュムレータ・レジスタ・ファイルをプライムすることに応答して、第1のチェックポイントが作成され、前記ディスパッチ・ユニットは、前記第1のチェックポイントに対応する第1のチェックポイント開始iTagを前記ICTに送り、前記第1のチェックポイント開始iTagを格納し、さらに、前記チェックポイント境界は、前記第1のチェックポイント開始iTag以降にディスパッチされた命令の前記数「N」に基づいており、前記ディスパッチ・ユニットが前記数「N」の命令をディスパッチした後、前記ディスパッチ・ユニットは、ディスパッチされた命令が、アキュムレータ・レジスタ・ファイル・エントリの前記第2のグループの前記割り当てをいつトリガするかを検出し、第2のチェックポイントが作成され、前記ディスパッチ・ユニットは、アキュムレータ・レジスタ・ファイル・エントリの前記第2のグループ割り当てられることを前記マッパに通知し、前記マッパは、1つ又は複数のアキュムレータ・レジスタ・ファイル・エントリの前記第1のグループをファイル・エントリの前記第2のグループにリネームし、前記第2のチェックポイントが作成されることに応答して、前記ディスパッチ・ユニットは、前記第2のチェックポイントに対応する第2のチェックポイント開始iTagを前記ICTに送り、前記第2のチェックポイント開始iTagを格納し、
    前記アキュムレータ・レジスタ・ファイルをプライムすることは、前記ターゲットをリネームして前記アキュムレータ・レジスタ・ファイルのエントリにマッピングすることを含む、
    請求項18に記載のプロセッサ。
JP2022533123A 2019-12-06 2020-11-19 マイクロプロセッサにおけるアキュムレータ・レジスタ結果のチェックポイント化 Active JP7513360B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/705,362 US11119772B2 (en) 2019-12-06 2019-12-06 Check pointing of accumulator register results in a microprocessor
US16/705,362 2019-12-06
PCT/IB2020/060911 WO2021111230A1 (en) 2019-12-06 2020-11-19 Check pointing of accumulator register results in a microprocessor

Publications (2)

Publication Number Publication Date
JP2023504652A JP2023504652A (ja) 2023-02-06
JP7513360B2 true JP7513360B2 (ja) 2024-07-09

Family

ID=76209693

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022533123A Active JP7513360B2 (ja) 2019-12-06 2020-11-19 マイクロプロセッサにおけるアキュムレータ・レジスタ結果のチェックポイント化

Country Status (6)

Country Link
US (1) US11119772B2 (ja)
JP (1) JP7513360B2 (ja)
CN (1) CN114761921B (ja)
DE (1) DE112020005987B4 (ja)
GB (1) GB2604085B (ja)
WO (1) WO2021111230A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11327757B2 (en) * 2020-05-04 2022-05-10 International Business Machines Corporation Processor providing intelligent management of values buffered in overlaid architected and non-architected register files
US11561794B2 (en) * 2021-05-26 2023-01-24 International Business Machines Corporation Evicting and restoring information using a single port of a logical register mapper and history buffer in a microprocessor comprising multiple main register file entries mapped to one accumulator register file entry
CN114610394B (zh) * 2022-03-14 2023-12-22 海飞科(南京)信息技术有限公司 指令调度的方法、处理电路和电子设备
US11941398B1 (en) 2022-12-05 2024-03-26 International Business Machines Corporation Fast mapper restore for flush in processor
CN120086060B (zh) * 2024-10-08 2026-04-03 广州鼎甲计算机科技有限公司 文件备份方法、装置、计算机设备和可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5644742A (en) 1995-02-14 1997-07-01 Hal Computer Systems, Inc. Processor structure and method for a time-out checkpoint
JP2002229780A (ja) 2001-01-30 2002-08-16 Handotai Rikougaku Kenkyu Center:Kk 大規模データパス・アーキテクチャの実行機構
JP2005025782A (ja) 1995-02-14 2005-01-27 Fujitsu Ltd 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
JP2009009570A (ja) 2007-06-27 2009-01-15 Internatl Business Mach Corp <Ibm> レジスタ状態エラー回復および再開機構
US20190171448A1 (en) 2017-12-01 2019-06-06 Advanced Micro Devices, Inc. Stream processor with low power parallel matrix multiply pipeline

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2970553B2 (ja) * 1996-08-30 1999-11-02 日本電気株式会社 マルチスレッド実行方法
US6434584B1 (en) 1998-06-04 2002-08-13 Texas Instruments Incorporated Flexible accumulator register file for use in high performance microprocessors
US7234144B2 (en) * 2002-01-04 2007-06-19 Microsoft Corporation Methods and system for managing computational resources of a coprocessor in a computing system
US20050138323A1 (en) 2003-12-18 2005-06-23 Intel Corporation, A Delaware Corporation Accumulator shadow register systems and methods
US7797363B2 (en) * 2004-04-07 2010-09-14 Sandbridge Technologies, Inc. Processor having parallel vector multiply and reduce operations with sequential semantics
US7814374B2 (en) 2007-01-19 2010-10-12 International Business Machines Corporation System and method for the capture and preservation of intermediate error state data
US20110238962A1 (en) 2010-03-23 2011-09-29 International Business Machines Corporation Register Checkpointing for Speculative Modes of Execution in Out-of-Order Processors
CN102184127B (zh) * 2011-05-20 2013-11-06 北京北大众志微系统科技有限责任公司 一种实现处理器预执行的方法及相应的装置
US9430243B2 (en) * 2012-04-30 2016-08-30 Apple Inc. Optimizing register initialization operations
US10095516B2 (en) 2012-06-29 2018-10-09 Intel Corporation Vector multiplication with accumulation in large register space
US9361111B2 (en) 2013-01-09 2016-06-07 Arm Limited Tracking speculative execution of instructions for a register renaming data store
GB2545307B (en) * 2013-11-29 2018-03-07 Imagination Tech Ltd A module and method implemented in a multi-threaded out-of-order processor
US9575890B2 (en) 2014-02-27 2017-02-21 International Business Machines Corporation Supporting atomic accumulation with an addressable accumulator
US9841974B2 (en) 2014-04-25 2017-12-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Renaming with generation numbers
CN106126189B (zh) 2014-07-02 2019-02-15 上海兆芯集成电路有限公司 微处理器中的方法
US20160026607A1 (en) 2014-07-25 2016-01-28 Qualcomm Incorporated Parallelization of scalar operations by vector processors using data-indexed accumulators in vector register files, and related circuits, methods, and computer-readable media
US11544214B2 (en) * 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
US9946549B2 (en) 2015-03-04 2018-04-17 Qualcomm Incorporated Register renaming in block-based instruction set architecture
US11429393B2 (en) * 2015-11-11 2022-08-30 Arm Limited Apparatus and method for supporting out-of-order program execution of instructions
US10528355B2 (en) 2015-12-24 2020-01-07 Arm Limited Handling move instructions via register renaming or writing to a different physical register using control flags
US10275243B2 (en) 2016-07-02 2019-04-30 Intel Corporation Interruptible and restartable matrix multiplication instructions, processors, methods, and systems
US20180203703A1 (en) 2017-01-13 2018-07-19 Optimum Semiconductor Technologies, Inc. Implementation of register renaming, call-return prediction and prefetch
US10410098B2 (en) 2017-04-24 2019-09-10 Intel Corporation Compute optimizations for neural networks
GB2563878B (en) * 2017-06-28 2019-11-20 Advanced Risc Mach Ltd Register-based matrix multiplication
CN111095294A (zh) * 2017-07-05 2020-05-01 深视有限公司 深度视觉处理器
US10530397B2 (en) * 2017-07-17 2020-01-07 Texas Instruments Incorporated Butterfly network on load data return
US10380063B2 (en) * 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10664287B2 (en) * 2018-03-30 2020-05-26 Intel Corporation Systems and methods for implementing chained tile operations

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5644742A (en) 1995-02-14 1997-07-01 Hal Computer Systems, Inc. Processor structure and method for a time-out checkpoint
JP2005025782A (ja) 1995-02-14 2005-01-27 Fujitsu Ltd 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
JP2002229780A (ja) 2001-01-30 2002-08-16 Handotai Rikougaku Kenkyu Center:Kk 大規模データパス・アーキテクチャの実行機構
JP2009009570A (ja) 2007-06-27 2009-01-15 Internatl Business Mach Corp <Ibm> レジスタ状態エラー回復および再開機構
US20190171448A1 (en) 2017-12-01 2019-06-06 Advanced Micro Devices, Inc. Stream processor with low power parallel matrix multiply pipeline

Also Published As

Publication number Publication date
WO2021111230A1 (en) 2021-06-10
CN114761921A (zh) 2022-07-15
US11119772B2 (en) 2021-09-14
GB202209153D0 (en) 2022-08-10
DE112020005987T5 (de) 2022-10-13
GB2604085B (en) 2022-12-07
GB2604085A (en) 2022-08-24
DE112020005987B4 (de) 2025-04-24
US20210173649A1 (en) 2021-06-10
CN114761921B (zh) 2024-08-02
JP2023504652A (ja) 2023-02-06

Similar Documents

Publication Publication Date Title
JP7513360B2 (ja) マイクロプロセッサにおけるアキュムレータ・レジスタ結果のチェックポイント化
US11093248B2 (en) Prefetch queue allocation protection bubble in a processor
US20230367597A1 (en) Instruction handling for accumulation of register results in a microprocessor
US20070043934A1 (en) Early misprediction recovery through periodic checkpoints
US11360779B2 (en) Logical register recovery within a processor
US11392386B2 (en) Program counter (PC)-relative load and store addressing for fused instructions
US20170109093A1 (en) Method and apparatus for writing a portion of a register in a microprocessor
US10956158B2 (en) System and handling of register data in processors
US10877763B2 (en) Dispatching, allocating, and deallocating instructions with real/virtual and region tags in a queue in a processor
US11188332B2 (en) System and handling of register data in processors
US10545765B2 (en) Multi-level history buffer for transaction memory in a microprocessor
US11995445B2 (en) Assignment of microprocessor register tags at issue time
CN114514505A (zh) 退役队列压缩
US10255071B2 (en) Method and apparatus for managing a speculative transaction in a processing unit
US11561794B2 (en) Evicting and restoring information using a single port of a logical register mapper and history buffer in a microprocessor comprising multiple main register file entries mapped to one accumulator register file entry
US11157276B2 (en) Thread-based organization of slice target register file entry in a microprocessor to permit writing scalar or vector data to portions of a single register file entry
US10802830B2 (en) Imprecise register dependency tracking
US11301254B2 (en) Instruction streaming using state migration
US20210303311A1 (en) Intelligent balanced flushing in a processor
US20200019405A1 (en) Multiple Level History Buffer for Transaction Memory Support

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220609

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230424

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240411

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240611

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20240611

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240625

R150 Certificate of patent or registration of utility model

Ref document number: 7513360

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150