JP7495194B2 - 積和演算用のプロセッサ・ユニット - Google Patents

積和演算用のプロセッサ・ユニット Download PDF

Info

Publication number
JP7495194B2
JP7495194B2 JP2022533315A JP2022533315A JP7495194B2 JP 7495194 B2 JP7495194 B2 JP 7495194B2 JP 2022533315 A JP2022533315 A JP 2022533315A JP 2022533315 A JP2022533315 A JP 2022533315A JP 7495194 B2 JP7495194 B2 JP 7495194B2
Authority
JP
Japan
Prior art keywords
mac
unit
accumulator
processor
operations
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
JP2022533315A
Other languages
English (en)
Other versions
JP2023505177A (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 JP2023505177A publication Critical patent/JP2023505177A/ja
Application granted granted Critical
Publication of JP7495194B2 publication Critical patent/JP7495194B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Description

本発明はデジタル・コンピュータ・システムの分野に関し、より詳細には、1つまたは複数の積和(「MAC:multiply and accumulate」)演算のセットを実行するためのプロセッサ・ユニットに関する。
MAC演算の計算は、ディープ・ニューラル・ネットワークのトレーニング、画像処理、他の機械学習技術など、多くのアルゴリズムで一般的に使用されている。たとえば、ディープ・ニューラル・ネットワークの場合、MAC演算は活性化および勾配に関与し得る。しかしながら、MAC演算の計算用の従来の電子システムは、リソース集約的であり得る。とりわけ、そのような演算を実行するための、エネルギー効率が高く、リソースを節約するアーキテクチャが必要である。
様々な実施形態は、独立請求項の主題によって記載した、1つまたは複数のMAC演算のセットを実行するためのプロセッサ・ユニット、方法、コンピュータ・プログラム製品、およびMACユニットを提供する。従属請求項に有利な実施形態を記載している。本発明の実施形態は、それらが相互に排他的でなければ、互いに自由に組み合わせることができる。
一態様では、本発明の実施形態は、積和(「MAC」)演算用のプロセッサ・ユニットを開示する。一実施形態では、プロセッサ・ユニットは、MAC演算のセットのうちのそれぞれのMAC演算のサブセットを実行するための複数のMACユニットを含み得る。一実施形態では、複数のMACユニットのうちの各MACユニットは、それぞれの実行ユニットと、それぞれのワンライト・ワンリード(「1W/1R:one-write one-read」)レジスタ・ファイルとを含み得る。一実施形態では、それぞれの1W/1Rレジスタ・ファイルは少なくとも1つのアキュムレータを有し得る。一実施形態では、プロセッサ・ユニットは、他のレジスタ・ファイルを含み得る。一実施形態では、各MACユニットのそれぞれの実行ユニットは、他のレジスタ・ファイルから受け取った値のセットの積を計算し、計算された積をMACユニットの少なくとも1つのアキュムレータの内容に加算することによって、MAC演算のセットのうちのそれぞれのMAC演算のサブセットを実行するように構成され得る。一実施形態では、各MACユニットは、それぞれのMAC演算のサブセットを単一のクロック・サイクルで実行するように構成され得る。
有利な実施形態では、複数のMACユニットのうちの各MACユニットは関連付けられたインデックスを含み得る。それに応じて、各MACユニットは、関連付けられたインデックスを参照するプロセッサ命令を実行することによって、それぞれのMAC演算のサブセットを実行するように構成され得る。
有利な実施形態では、関連付けられたインデックスは、各MACユニットの少なくとも1つのアキュムレータの設計されたアキュムレータ・レジスタ・インデックスを含み得る。
有利な実施形態では、少なくとも1つのアキュムレータはそれぞれのアキュムレータ要素を含み得、計算された積はそれぞれのアキュムレータ要素の内容に加算され得る。有利な実施形態では、各MACユニットは、少なくとも1つのアキュムレータのそれぞれのアキュムレータ要素を使用して、MAC演算のセットのうちのそれぞれのMAC演算のサブセットを実行するように構成され得る。
有利な実施形態では、プロセッサ・ユニットは、ディスパッチ/発行ユニットを含み得る。有利な実施形態では、ディスパッチ/発行ユニットは、複数のプロセッサ命令を処理し、関連付けられたインデックスを使用してMACユニットを選択し、MAC演算のセットを実行するために選択されたMACユニットにそれぞれのプロセッサ命令のセットを送るように構成され得る。有利な実施形態では、ディスパッチ/発行ユニットはその中にMACユニットを含み得る。
有利な実施形態では、それぞれのプロセッサ命令のセットは、少なくとも1つのオペランドを含み得る。少なくとも1つのオペランドは、少なくとも1つのアキュムレータをそれぞれのプロセッサ命令のセットのソース兼ターゲット・レジスタとして示し得る。少なくとも1つのオペランドはまた、数のセットを含む他のレジスタ・ファイルの少なくとも1つのさらなるレジスタを示し得る。
有利な実施形態では、ディスパッチ/発行ユニットは、選択されたMACユニットがそれぞれのプロセッサ命令のセットを単一のスレッドから受け取り得るように、シングル・スレッド(「ST」)モードに従って複数のプロセッサ命令をディスパッチするように構成され得る。
有利な実施形態では、ディスパッチ/発行ユニットは、選択されたMACユニットがそれぞれのプロセッサ命令のセットを2つのスレッドのうちのいずれか一方から受け取り得るように、2ウェイ同時マルチスレッディング(「SMT2」)モードに従って複数のプロセッサ命令をディスパッチするように構成され得る。
有利な実施形態では、ディスパッチ/発行ユニットは、複数のMACユニットのうちの各MACユニットがそれぞれのプロセッサ命令のセットをそれぞれの2つのスレッドから受け取り得るように、4ウェイ同時マルチスレッディング(「SMT4」)モードに従って複数のプロセッサ命令をディスパッチするように構成され得る。
有利な実施形態では、各MACユニットは、積を計算するための少なくとも1つの乗算器と、計算された積の加算を実行するための少なくとも1つの加算器とを含み得る。
有利な実施形態では、プロセッサ・ユニットは、さらなるMAC演算のセットを実行するように構成され得、MAC演算のセット全てによって、出力行列の全ての要素が提供される。有利な実施形態では、出力行列は入力行列への行列畳み込みの結果を含み得る。
一態様では、本発明の実施形態は、MAC演算を実行するための方法およびコンピュータ・プログラム製品を開示する。本発明は、MACユニットの乗算器において、レジスタ・ファイルから値のセットを受け取ることを含み得る。本発明は、乗算器を使用して、受け取った値のセットの積を計算することを含み得る。本発明は、MACユニットのアキュムレータの現在の内容を読み出すことを含み得る。本発明は、MACユニットの加算器を使用して、アキュムレータの読み出された現在の内容と、受け取った値のセットの計算された積との和を計算することを含み得る。本発明は、計算された和をMACユニットのアキュムレータに書き込むことを含み得る。
一態様では、本発明の実施形態は、MACユニットを開示する。一実施形態では、MACユニットは、実行ユニットと、ワンライト・ワンリード(「1W/1R」)ポートのレジスタ・ファイルと、を含み得る。一実施形態では、1W/1Rポートのレジスタ・ファイルは少なくとも1つのアキュムレータを含み得る。一実施形態では、MACユニットの実行ユニットは、積を計算し、MACユニットの少なくとも1つのアキュムレータの内容に積を加算することによって、MAC演算を実行するように構成され得る。
有利な実施形態では、MACユニットの実行ユニットは、複数のMAC演算のうちの各MAC演算の積を累積するために、同じアキュムレータを使用して、複数のMAC演算を連続的に実行するように構成され得る。
有利な実施形態では、MACユニットは複数のアキュムレータを含み得る。有利な実施形態では、MACユニットは、複数のアキュムレータのうちのそれぞれのアキュムレータを使用して、複数のMAC演算を並行して実行するように構成され得る。
有利な実施形態では、MACユニットの少なくとも1つのアキュムレータは複数のアキュムレータ要素を含み得る。有利な実施形態では、MACユニットは複数の乗算器と加算器とを含み得る。有利な実施形態では、MACユニットは、複数のアキュムレータ要素のうちのそれぞれのアキュムレータ要素と、複数の乗算器のうちのそれぞれの乗算器とを使用して、複数のMAC演算を並列に実行するように構成され得る。
本開示は、MAC演算を実行するための、エネルギー効率の高い、特定用途向けのプロセッサを提供し得る。プロセッサ・ユニットは少数のレジスタ・ファイル・ポートを有し、これはより多数のポートを有するアーキテクチャよりもパフォーマンスが優れ得る。具体的には、単一の読み出しポートおよび単一の書き込みポートを有するレジスタ・ファイルを使用することにより、簡素化されたハードウェア制御が実現され、エネルギー消費が削減され得る。1書き込みポート/1読み出しポートのレジスタ・ファイル(「1W/1R」)の実装形態は、たとえば、2つのMAC実行ユニットを接続するための2つの読み出しポートおよび2つの書き込みポートを提供する2W/2Rレジスタ・ファイルと比較して、より少ない配線、より小さい占有面積、およびより少ない電力需要を必要とし得る。接続の削減により、同じアプリケーション速度が維持され、エネルギー消費が削減され、プロセッサ周波数の向上が可能になり得る。さらに、本主題は、MACユニット間での1つのレジスタ・ファイルの共有を防止し得る。各MACユニットに独自のレジスタ・ファイルを提供することにより、各実行ユニットが独立して最適にそれぞれのレジスタ・ファイルに接続され得るので、MAC演算が高速化され得ると考えられる。
本主題は、単一命令複数データ(「SIMD:single instruction multiple data」)オペランドを使用して、MAC演算を基本的な算術演算として実行することを可能にし得る。これにより、SIMDオペランドを別々のレジスタ・ファイルに効率的に記憶して、レジスタ・ファイルからMACユニットに単一のクロック・サイクルでロードできるようにすることができるという点で、プロセッサの効率が向上し得る。
本発明のこれらおよび他の目的、特徴および利点は、添付の図面に関連して読まれるべき、その例示的な実施形態の以下の詳細な説明から明らかになろう。図は、当業者が詳細な説明と共に本発明を理解するのを容易にする際に、明確にするためのものであるので、図面の様々な特徴は原寸に比例していない。
少なくとも1つの実施形態によるプロセッサ・システムの例示的な構造を示すブロック図である。 少なくとも1つの実施形態によるMAC演算の例示的な行列演算を示すブロック図である。 少なくとも1つの実施形態による行列演算の要素を計算するためのアキュムレータを示すブロック図である。 少なくとも1つの実施形態による例示的なMACユニットを示すブロック図である。 少なくとも1つの実施形態による図1に示す例示的なMACユニットを示すブロック図である。 少なくとも1つの実施形態による例示的なプロセッサ・ユニットを示すブロック図である。 少なくとも1つの実施形態による例示的なプロセッサ・ユニットを示すブロック図である。 少なくとも1つの実施形態による例示的なプロセッサ・ユニットを示すブロック図である。 少なくとも1つの実施形態による1つまたは複数のMAC演算のセットを実行するための例示的な処理を示す動作フローチャートである。 少なくとも1つの実施形態による図6AのMAC演算に関連する例示的なMACユニットを示すブロック図である。 少なくとも1つの実施形態による図6AのMAC演算に関連する例示的なMACユニットを示すブロック図である。
本発明の様々な実施形態の説明は、例示の目的で提示しているが、網羅的であることも、開示した実施形態に限定されることも意図したものではない。記載した実施形態の範囲および思想から逸脱することなく、多くの修正および変形が当業者には明らかであろう。本明細書で使用する用語は、実施形態の原理、実際の適用、または市場に見られる技術に対する技術的改善を最もよく説明するために、または当業者が理解できるようにするために選択している。
一実施形態によれば、MACユニットのうちの各MACユニットはインデックスに関連付けられ、インデックスを参照するプロセッサ命令を実行することによって、そのMACユニットがMAC演算を実行するように構成される。これにより、命令のインデックスを読み出すことによって、特定のMACユニットを識別して命令を最適な方法で処理することが可能になり得る。そのような読み出しは、プロセッサ・システムで命令のオペランドを識別するためにいずれにせよ実行されるので(たとえば、インデックスを読み出すための余分なオペレーションが不要であり得る)、これは最適であり得る。
MACユニットのうちの各MACユニットは、MAC演算のセットのうちのそれぞれの1つまたは複数のMAC演算のサブセットを実行するように構成され得る。MACユニットによって実行されるMAC演算のサブセットは、たとえば、行列Cの1つまたは複数の要素を計算し得る。たとえば、行列Cは次の式[1]で定義され得る。
ij=Σkijk [1]
上記の式[1]では、MAC演算のサブセットは、所与の値kについての積の総和Σkijkを含み得る。たとえば、A、B、およびCが4×4行列の場合、MAC演算のサブセットは、要素C11を取得するための4つのMAC演算A11*B11、A21*B12、A31*B13、およびA41*B14を含み得る。プロセッサ命令を実行することによって、MACユニットによって1クロック・サイクルで実行できる1つまたは複数のMAC演算の各グループが実行され得る。プロセッサ命令は、たとえば、MACユニットによって並列に実行され得る。たとえば、MAC演算のセットは、一方のMACユニットによって実行されるN個のMAC演算と、他方のMACユニットによって実行される他のN個のMAC演算とを含む。2つのMACユニットは、MAC演算の各ペアを並列に連続的に実行するように構成され得る(たとえば、N=3の場合、MAC演算の3つのペアが並列に連続的に実行され得る)。これは、各MACユニットが、1つの要素を記憶するために使用される単一のアキュムレータを含む場合に、特に有利であり得る。アキュムレータはレジスタであり得る。他の例では、アキュムレータは複数のフィールドまたはアキュムレータ要素(たとえば、m個の要素)を含み得、各アキュムレータ要素はそれぞれのMAC演算の結果を累積するために使用され得る。この場合、MACユニットは、m個のMAC演算を並列に1クロック・サイクルで実行するように構成され得る。
各MACユニットに2つ以上のアキュムレータが存在する場合、命令のパイプライン化実行が有利に使用され得る。一実施形態によれば、MACユニットのうちの各MACユニットは、それぞれのMAC演算を少なくとも1クロック・サイクルで(たとえば、複数のクロック・サイクルで)実行するように構成される。MAC演算の実行は、たとえば、プロセッサ命令の結果を生成するために4クロック・サイクルを含み得る。プロセッサ命令は4つのステップを含み得、各ステップは、処理中のプロセッサ命令の全体としての結果を得ることに寄与する。全てのクロック・サイクルにおいて、新しいプロセッサ命令が異なるアキュムレータ・レジスタを使用して開始され得る。4サイクル後、命令の結果が利用可能になるとすぐに、最初の命令で使用されたアキュムレータを後続の命令で再び使用することができる。一実施形態によれば、プロセッサ命令は1クロック・サイクルでデコードされる。
一実施形態によれば、インデックスは、MACユニットのアキュムレータの設計されたアキュムレータ・レジスタ・インデックスである。これにより、アキュムレータと、アキュムレータを含むMACユニットとの両方にインデックス付けするために同じインデックスが使用されるので、処理リソースが節約され得る。これは、MACユニットおよびアキュムレータへの別々のインデックス付けを必要とする他の実装形態とは対照的である。
一実施形態によれば、プロセッサ・ユニットは、ディスパッチおよび/または発行ユニットをさらに含む。ディスパッチおよび/または発行ユニットは、複数のプロセッサ命令を処理し、インデックスを使用してMACユニットを選択し、MAC演算のセットを実行するために選択されたMACユニットにプロセッサ命令を送るように構成される。これにより、既存のディスパッチおよび/または発行ユニットに最小限の変更を加えることによって、本主題を既存のシステムにシームレスに統合することが可能になり得る。
一実施形態によれば、各プロセッサ命令は、アキュムレータをその命令のソース兼ターゲット・レジスタとして示し、乗算および累積されるソース・データを含む他のレジスタ・ファイルのさらなるレジスタを示すオペランドを含む。ソース・データは数を含む。アキュムレータをソース兼ターゲット・レジスタとして使用することにより、リソースを節約したデータ・アクセスが可能になる。これは、余分なレイテンシと、ソース-ターゲット間の依存関係を追跡する追加のロジックとを導入し得る、1つはデータ書き込み用、もう1つはデータ読み出し用である、2つの別々のアキュムレータを使用するMACユニットとは対照的である。(たとえば、実行ユニットの近くに単一のアキュムレータを適切に配置することにより)単一のアキュムレータを使用するプロセッサ・ユニットにおける接続が削減されるので、別々のアキュムレータにアクセスするよりも数倍速く単一のアキュムレータにアクセスすることができる。
一実施形態によれば、MACユニットは、ディスパッチおよび/または発行ユニットの一部である。これにより、MACユニットを別々に実装する場合と比較して、チップ上の面積と電力とが節約され得る。たとえば、MACユニットがディスパッチおよび/または発行ユニットの別のコンポーネントとして実装される場合、それらはより多くのスペースを占有し得、余分な電源を使用し得る。
一実施形態によれば、ディスパッチおよび/または発行ユニットは、MACユニットが単一のスレッドのプロセッサ命令を受け取るように、シングル・スレッド(「ST:single threaded」)モードに従って複数のプロセッサ命令をディスパッチするように構成される。
たとえば、プロセッサ・ユニットは、一度に1つのスレッドのMAC演算のみが実行または処理され得るように、STモードで動作し得る。
一実施形態によれば、ディスパッチおよび/または発行ユニットは、MACユニットが2つのスレッドのうちのいずれか一方のプロセッサ命令を受け取るように、2ウェイ同時マルチスレッディング(「SMT2:two-way simultaneous multithreading」)モードに従って複数のプロセッサ命令をディスパッチするように構成される。
一実施形態によれば、ディスパッチおよび/または発行ユニットは、MACユニットのうちの各MACユニットがそれぞれの2つのスレッドからプロセッサ命令を受け取るように、4ウェイ同時マルチスレッディング(「SMT4:four-way simultaneous multithreading」)モードに従って複数のプロセッサ命令をディスパッチするように構成される。
これらの実施形態は、本主題と既存のスレッド対応システムとのシームレスな統合を可能にし得る。
一実施形態によれば、プロセッサ・ユニットは、さらなるMAC演算のセットを実行するように構成され、MAC演算のセット全てによって、出力行列の全ての要素が提供される。出力行列は、入力行列への行列畳み込みの結果である。たとえば、入力行列は画像の画素を表し得る。カーネルを使用して、入力行列に記憶された画素データとの畳み込みを実行し得る。カーネルは、たとえば、エッジ検出を行い、カーネルと同じサイズの入力行列のサブ行列に作用する。出力行列は、ある入力行列位置における、カーネル・サイズに一致するサブ行列の畳み込みの結果である。
図1を参照すると、一実施形態によるプロセッサ・システム101の構造を示すブロック図が示されている。
プロセッサ・システム101は、記憶されたデータに対して演算を実行するためのデータを記憶することを可能にし得る。一実施形態によれば、プロセッサのパフォーマンスを改善するために、プロセッサ・システム101のキャッシュ103の1つまたは複数のレベルを利用してメモリ・データをバッファリングし得る。キャッシュ103は、使用される可能性が高いメモリ・データのキャッシュ・ラインを保持する高速なバッファを含み得る。たとえば、典型的なキャッシュ・ラインは、64、128、または256バイトのメモリ・データを含み得る。一実施形態によれば、キャッシュ103は、メイン・メモリ・ストレージ105などの上位階層のストレージのデータをキャッシュするように構成され得る。
一実施形態によれば、プロセッサ・システム101は、レジスタ120a~nを含むレジスタ・ファイル119をさらに含み得る。レジスタ120a~nは、たとえば、汎用レジスタを含み得、各汎用レジスタは、プロセッサ・システム101で実行される命令によって処理されるデータ・アイテムを記憶するために特定の数のビットを含む。
一実施形態によれば、命令はコンパイラによって提供され得る。たとえば、プログラムのソース・コードは、プロセッサ・システム101に関連付けられた命令セット・アーキテクチャ(「ISA:instruction set architecture」)で定義された一連の機械実行可能命令にコンパイルされ得る。ISAは、本開示の少なくとも1つの実施形態に従って定義された少なくとも1つのプロセッサ命令を含み得る。ISAの命令は、メモリ105、またはプロセッサ・システム101のレジスタ・ファイル119のレジスタ120a~n、あるいはその両方に記憶されたデータを処理するために提供され得る。一実施形態によれば、プロセッサ・システム101が実行可能命令の実行を開始するときに、これらの機械実行可能命令は、順次実行されるように並べられ得る。
一実施形態によれば、命令フェッチ/デコード・ユニット109を利用して、並べられた命令をフェッチし得る。たとえば、命令フェッチ/デコード・ユニット109は、次の順番の命令、分岐した命令のターゲット命令、またはコンテキスト・スイッチ後のプログラムの最初の命令をフェッチし得る。フェッチされた命令は、命令フェッチ/デコード・ユニット109によってデコードされ得る。
一実施形態によれば、デコードされた命令(複数可)は、ディスパッチ/発行ユニット111に渡され得る。ディスパッチ/発行ユニット111は、命令を1つまたは複数の発行キュー112に格納(deposit)し得、命令は、そのソース・オペランドと、プロセッサ・システム101の適切なMACユニット113とが利用可能になるのを待機し得る。たとえば、MACユニット113のうちの各MACユニット113は発行キュー112に関連付けられ得、その結果、MACユニット113によって実行される命令は、そのMACユニット113に関連付けられた発行キュー112に入れられ得る。ディスパッチ/発行ユニット111は、発行キューのMACユニット113に割り当てられたインデックスに基づいて、命令を発行キュー112に格納し得る。このインデックスは命令の一部であり得る。すなわち、命令からインデックスを読み取ることにより、ディスパッチ/発行ユニット111は、どのMACユニット113がその命令を実行できるかを認識(たとえば、特定)し得る。MACユニット113のうちの各MACユニット113は、他のMACユニット113によって実行されない場合がある1つのそれぞれのタイプの命令を実行するように構成され得る。一実施形態では、命令のタイプは、その命令に関連付けられるレジスタによって規定され得る。
従来の方法では、全ての実行ユニットは、全ての命令を実行するように実装され得る(たとえば、任意の命令が任意の実行ユニットに行くことができる)。しかしながら、本開示の動作とは対照的に、従来の方法は処理リソースの観点でよりコストがかかり得る。
一実施形態によれば、各発行キュー112は、キュー内の命令間の依存関係を監視し、命令をそれぞれのMACユニット113に発行することを担当し得るウィンドウ・ロジックを含み得る。ウィンドウ・ロジックは、ウェイクアップ・ロジックおよび選択ロジックを含み得る。ウェイクアップ・ロジックは、ソース・オペランドが利用可能になるのを発行キュー112で待機している命令を呼び出すことを担当し得る。命令の全てのソース・オペランドが利用可能になると、命令に実行準備完了のフラグが立てられ得る。選択ロジックは、準備完了命令のプールから実行する命令を選択することを担当し得る。全てのソース・オペランドが利用可能な場合、命令の準備が完了し得る。次いで、ロード/ストア・ユニット117を使用して、メモリ105またはレジスタあるいはその両方から命令のオペランド値がロードされ得る。
MACユニット113は、典型的には、ディスパッチ/発行ユニット111から命令に関する情報を受け取り得、命令のオペレーション・コードに従ってオペランドに対してオペレーションを実行し得る。本開示によれば、レジスタからMACユニット113にオペランドが提供される。実行の結果は、記憶されるときに、メモリ105またはレジスタ119あるいはその両方に記憶され得る。一実施形態によれば、MACユニット113のうちの各MACユニット113は、少なくとも1つの乗算器および少なくとも1つの加算器を含み得る。MACユニット113が2つ以上の乗算器を含む場合、各乗算器はMACユニット113のアキュムレータのそれぞれのアキュムレータ要素に関連付けられ得る。MACユニット113の各乗算器は2つの数の積を実行するように構成され得、加算器は、乗算器に関連付けられたアキュムレータの内容、または乗算器に関連付けられたアキュムレータ要素の内容に積を加算するように構成され得る。MACユニット113は、MAC演算を少なくとも1クロック・サイクルで実行するように構成され得る。一例では、MACユニット113は、MACユニット113がX個のMAC演算を少なくとも1クロック・サイクルで実行することを可能にし得るX個の乗算器を含み得る。
一実施形態によれば、プログラム・カウンタ(命令カウンタ)107は、実行される現在の命令のアドレスを追跡し得る。たとえば、z/Architecture(R)(z/Architectureおよび全てのIBM(R)ベースの商標およびロゴはInternational Business Machines Corporationまたはその関連会社あるいはそれらの組み合わせの商標または登録商標である)プロセッサなどのプロセッサ内のプログラム・カウンタ107は、64ビットを含み得、以前のアドレス制限をサポートするために31ビットまたは24ビットに切り捨てられ得る。プログラム・カウンタ107は、典型的には、コンテキスト・スイッチ中に持続するように、コンピュータのプログラム・ステータス・ワード(「PSW:program status word」)に具現化され得る。一実施形態では、プログラム・カウンタは、現在の命令のバイト数に等しい量だけインクリメントされ得る。
プロセッサ・システム101は、命令のパイプライン化実行を行うように構成され得る。たとえば、4サイクル・レイテンシのパイプライン化実行がプロセッサ・システム101の各MACユニット113によって使用され得、その結果、各命令は、MACユニット113がMAC演算の結果を生成するのに4クロック・サイクルかかり得る。そのために、MACユニット113での命令の実行は4つの工程に分解され得、4つの工程のうちの1つは乗算工程を含み得、4つの工程のうちの他の1つはMACユニットによる累積工程を含み得る。
一実施形態によれば、プロセッサ・システム101は、STモード、SMT2モード、またはSMT4モードで動作するように構成され得る。STモードでは、一度に1つのスレッドからのMAC演算がMACユニット113によって実行または処理され得る。たとえば、STモードでは、MACユニット113のそれぞれは、MACユニット113が1つの特定のスレッド(たとえば、T0)から命令を受け取るように構成され得る。SMT2モードでは、MACユニット113は2つのスレッドのうちのいずれか一方から命令を受け取り得る。たとえば、SMT2モードでは、MACユニット113のそれぞれは、MACユニット113がスレッドT0またはスレッドT1あるいはその両方から命令を受け取るように構成され得る。SMT4モードでは、MACユニット113のうちの各MACユニット113は、4つのスレッド(たとえば、T0、T1、T2、およびT3)全てからプロセッサ命令を受け取り得、またはMACユニット113は、分割モードで動作して2つのスレッドを受け取り得る。たとえば、分割モードでは、プロセッサ・システム101が2つのMACユニット113を含む場合、一方のMACユニット113は、スレッドT0またはスレッドT2あるいはその両方からの命令を処理するように構成され得、他方のMAC113ユニットは、スレッドT1またはスレッドT3あるいはその両方からの命令を処理するように構成され得る。
このようにして、プロセッサ・システム101は、MACユニット113を使用して1つまたは複数のプログラムからの命令を処理することを可能にし得る。たとえば、プログラムのソース・コードは、1つまたは複数のMAC演算を実装し得る。MAC演算は、2つの数を乗算することと、乗算結果を累積値に加算することとを含み得る。ISAのそれぞれのプロセッサ命令を実行することにより、少なくとも1つのMAC演算がMACユニット113によって実行され得る。
ここで図2Aを参照すると、少なくとも1つの実施形態によるMAC演算の例示的な行列演算を示すブロック図が示されている。
一実施形態によれば、図2Aの行列演算を行列積和(「MMA:matrix multiply and accumulate」)演算と呼び得る。行列演算は入力行列201に入力行列203を乗算し得、累積された結果は結果行列205を含み得る。行列201がM×K行列を含み、行列203がK×N行列を含む場合、結果行列205はM×N行列を含み得る。このため、結果行列205の各要素は、K個のMAC演算によって取得され得る。図2Aに示すように、入力行列201は4×4行列を含み得、入力行列203は4×4行列を含み得る。一実施形態によれば、行列演算は図2Aに示す次元に限定されなくてもよく、これは例として提供している。
1つまたは複数のアキュムレータを使用して、MAC演算を計算し、結果行列205の要素を記憶し得る。アキュムレータは、アキュムレータのサイズを示すアキュムレータ・サイズ、たとえば、512ビットを有し得る。アキュムレータは、複数のアキュムレータ要素またはフィールドを含み得る。アキュムレータ要素は、アキュムレータ・サイズ未満であり得るアキュムレータ要素サイズを有し得、たとえば、アキュムレータ要素サイズは32ビットであり得る。アキュムレータの各アキュムレータ要素は、アキュムレータのそれぞれの数のビットを有するかまたは占有し得、たとえば、第1のアキュムレータ要素はアキュムレータのビット0~31を占有し得、第2のアキュムレータ要素はビット32~63を占有し得、第16のアキュムレータ要素はビット480~511を占有し得る。一実施形態では、アキュムレータ要素サイズは、結果行列205の要素のサイズとして規定され得る。これは、アキュムレータが結果行列205内の要素と同数のアキュムレータ要素を含むように構成され得るので、有利であり得る。これにより、結果行列205の全ての要素を1つのアキュムレータに記憶することが可能になり得る。
ここで図2Bを参照すると、少なくとも1つの実施形態による行列演算の要素を計算するためのアキュムレータを示すブロック図が示されている。さらに図2Cを参照すると、少なくとも1つの実施形態による例示的なMACユニットを示すブロック図が示されている。
一実施形態によれば、図2B~図2Cは、結果行列205の要素が、1つのアキュムレータ223、1つの加算器222、および16個の乗算器221を有する1つのMACユニットを使用して計算され得ることを示している。図2Bに示すように、結果行列205の各要素は、単一のアキュムレータACC(0)のそれぞれのアキュムレータ要素に記憶され得る。図2BではアキュムレータACC(0)のアキュムレータ要素をACC(0)と呼び得、ここで、j=1,...,16である。結果行列205の要素C11は、アキュムレータACC(0)のビット0~31を有するアキュムレータ要素ACC(0)に記憶され得、C21は、アキュムレータACC(0)のビット32~63を有するアキュムレータ要素ACC(0)に記憶され得、C31は、アキュムレータACC(0)のビット64~95を有するアキュムレータ要素ACC(0)に記憶され得、C41は、アキュムレータACC(0)のビット96~127を有するアキュムレータ要素ACC(0)に記憶され得、以下同様である。したがって、32ビットの要素を16回記憶することにより、アキュムレータ223の512ビットの全ての幅が使用され得る。
結果行列205の要素を計算する前に、アキュムレータACC(0)の各アキュムレータ要素ACC(0)は、初期値で初期化され(または初期値を記憶し)得る。初期値は、たとえば、ゼロであり得る。他の例では、要素ACC(0)は、行列要素の事前計算された部分などの他の値によって初期化され得る(たとえば、C11を得るために、アキュムレータ要素ACC(0)がA11*B11の値で初期化され得る)。他の例では、初期化は、MAC演算命令とは異なり得る第1の命令によって実行され得、それによって、アキュムレータACC(0)を入力として使用せずにアキュムレータACC(0)のアキュムレータ要素に乗算結果が記憶され得る。図2Bの例では、外積(outer product)の計算に使用されるプログラミング・ループの最も外側のループとして、K次元の行列201を使用している。MMA演算は、行列201の列および行列203の行を他のレジスタ・ファイルからオペランドとして一度ロードしてその外積を計算し、この外積の結果を結果行列205の要素として累積し得る。その後、この行列201の列および行列203の行は、再び使用されない場合がある。
たとえば、結果行列205の16個の要素C11~C44の各要素を取得するために、それぞれのアキュムレータ要素を使用して4つのMAC演算が実行され得る。図2Bに示すように、要素C11を得るために、MAC演算210.1、211.1、212.1、および213.1が、アキュムレータ要素ACC(0)の内容を使用して実行され得る。
結果行列の構造とMMA演算の性質とが分かっているので、MACユニットはMMA演算を最適な方法で実行するように構成され得る。たとえば、MAC演算の各セットがMACユニットによって1クロック・サイクルで実行され得るように、MMA演算がMAC演算のセットに分割され得る。図2Aの例に従えば、図2Bに示すように、行列演算は4セットのMAC演算210.1~16、211.1~16、212.1~16、および213.1~16を含み得、各セットは図2CのMACユニットによって1クロック・サイクルで処理することができる。各MAC演算は、乗算と、それぞれのアキュムレータ要素の内容への乗算結果の加算とを含む。4セットのMAC演算のうちの各セットの実行は、たとえば、整数ベースのGER命令などのそれぞれの命令を発行することによって行われ得る。MAC演算のセットの各MAC演算で使用されるアキュムレータ要素は、GER命令で示され得る。たとえば、MAC演算のセットの各MAC演算で使用されるアキュムレータ要素は、GER命令タイプによって決定され得る(たとえば、GER命令は異なるタイプを有し得、各タイプは異なる数のMAC演算に使用され得る)。GER命令名は、アキュムレータ要素の数と、オペランドならびに512ビットのアキュムレータのデータ・タイプとを決定する。
16個のMAC演算のセットのうちの第1のMAC演算では、積A11*B11が実行され得、積の結果が、ゼロであり得るアキュムレータACC(0)のビット0~31を有する第1のアキュムレータ要素ACC(0)の内容に加算され得る。これにより、第1のMAC演算の後、第1のアキュムレータ要素ACC(0)は、積A11*B11を含み得る。16個のMAC演算のセットのうちの第2のMAC演算では、積A11*B21が実行され得、積の結果が、ゼロであり得るアキュムレータACC(0)の第2のアキュムレータ要素ACC(0)の内容に加算され得る。これにより、16個のMAC演算のセット210.1~210.16を実行した後、アキュムレータACC(0)の各要素ACC(0)は、図2Bに示すように、結果行列のそれぞれの要素の中間値を含み得る。16個のMAC演算のセット210.1~210.16を完了した後、16個のMAC演算の他のセット211.1~211.16がMACユニットによって実行され得る。MAC演算の全てのセットが実行されるまで、この繰り返しは実行され得る。図2Bは、MAC演算のセットの非パイプライン化実行の結果として得られるアキュムレータACC(0)の各アキュムレータ要素ACC(0)の内容の変化を示している。
しかしながら、(たとえば、図2Aの行列演算と同様の)複数の行列演算を実行する場合、MAC演算のパイプライン化実行が有利であり得る。たとえば、図2Aの行列演算で説明したように各行列演算が4セットのMAC演算を含む4つの行列演算の場合、16セットのMAC演算の実行が以下のように実行され得る。
4サイクルのパイプライン化実行の場合、各MAC演算は4つのステップで実行され得る。このため、16セットのMAC演算の各セットは、4クロック・サイクルで実行され得る。たとえば、MAC演算のセットの各MAC演算の第1のステップが、MACユニットによって1つの同じクロック・サイクルで実行され得る(たとえば、MAC演算のセットの全ての第1のステップが、1つの同じクロック・サイクルで実行され得る)。MAC演算のセットの各MAC演算の第2のステップが、MACユニットによって他の同じクロック・サイクルで実行され得る。MAC演算のセットの各MAC演算の第3のステップが、MACユニットによって他の同じクロック・サイクルで実行され得る。MAC演算のセットの各MAC演算の第4のステップが、MACユニットによって他の同じクロック・サイクルで実行され得る。パイプライン化実行により、同じクロック・サイクル中に異なるMAC演算のセットの異なるステップを実行することが可能になる。
4つの行列演算の4つの結果行列のうちの各結果行列の要素は、それぞれのアキュムレータACC(0)、ACC(1)、ACC(2)、およびACC(3)に記憶され得る。
図2A~図2Cに提供している例では、入力ソースSRC1およびSRC2として4×32ビットの要素のMAC計算を示している。しかしながら、たとえば、8×16ビットまたは16×8ビットなどの他の要素幅が同様の方法で処理され得ると考えられ、これは、32ビット幅のアキュムレータ要素で16ビットの2つのペアを乗算および加算するか、または4サイクルの実行中に8ビットの4つのペアにMAC演算を実行して32ビット幅のアキュムレータ・フィールドを計算することによって行われる。同様にして、ACCレジスタに記憶される要素の数に加え、アキュムレータ要素サイズは32ビット未満または32ビット超であり得る。図2Cは、入力としての(たとえば、1つの列を表す)4×32ビットのオペランドAおよび(たとえば、1つの行を表す)4×32ビットのオペランドBと、16個の32ビットの結果を記憶する、出力に示す512ビットのアキュムレータとを有する4×4の実装形態の詳細を示している。図2Bは、外積計算アルゴリズムによる演算を示している。しかしながら、行列演算はこれらの外積計算アルゴリズムに限定されなくてもよい。内積またはドット積アルゴリズムを含む他のアルゴリズムが使用され得る。
ここで図3を参照すると、少なくとも1つの実施形態によるMACユニットを示すブロック図が示されている。一実施形態によれば、図3のMACユニットは、MACユニット113を示し得る。
一実施形態によれば、MACユニット113は、実行ユニット301およびレジスタ・ファイル303を含み得る。実行ユニット301は、レジスタ・ファイル303からアキュムレータ・データ(ACC(i)データ)を読み出し得、レジスタ・ファイル303にアキュムレータ・データを書き込み得る。レジスタ・ファイル303は、1つまたは複数のアキュムレータを含み得る。一実施形態では、レジスタ・ファイル303の各アキュムレータは、設計されたアキュムレータ・レジスタ・インデックスiを含み得、そのため、各アキュムレータをACC(i)と呼び得る。インデックスは、偶数または奇数を含み得る整数であり得る。アキュムレータACC(i)を記憶するレジスタ・ファイル・エントリがレジスタ・ファイル・エントリ番号と異なるように、設計されたアキュムレータACC(i)がリネームされ得る。アキュムレータACC(i)の状態を含むレジスタ・ファイル・エントリ番号が、ディスパッチ/発行ユニット111のロジックによって追跡され得る。
レジスタ・ファイル303は、1W/1Rポートのレジスタ・ファイルを含み得る。レジスタ・ファイル303は、たとえば、2W/2Rレジスタ・ファイルと比較して、より少ない配線、より少ない面積、およびより少ない電力需要を必要とし得るので、有利であり得る。
MACユニット113は、MAC演算を実行するためにディスパッチ/発行ユニット111のそれぞれの発行キューからプロセッサ命令を受け取るように構成され得る。プロセッサ命令は、たとえば、「GER」と名付けられ得、次のように定義され得る。GER ACC(i)←ACC(i),ベクトル・スカラー・レジスタ(「VSR:vector scalar register」)(j),VSR(k)プロセッサ命令GERは、アキュムレータACC(i)をプロセッサ命令のソース兼ターゲット・レジスタとして示し、レジスタ・ファイル119のさらなるソース・レジスタVSR(j)、VSR(k)を示すオペランドを含み得る。ソース・レジスタVSR(j)、VSR(k)は、乗算される数を含み得る。図3に示すように、実行ユニット301は、レジスタ・ファイル119から乗算される値/数304および305を読み出し、MAC演算を実行するためにレジスタ・ファイル303からアキュムレータACC(i)の内容(SRC0と呼ぶ)を読み出し得る。MAC演算の結果(TGTと呼ぶ)は、アキュムレータACC(i)に記憶され得る。したがって、レジスタ・ファイル303の各アキュムレータACC(i)は、MACユニット113がそれぞれの1つまたは複数のMAC演算のセットを実行することを可能にし得、その結果、MAC演算のセットの結果の値がアキュムレータACC(i)に累積され得る。
図2Aの例に従えば、MACユニット113は、アキュムレータACC(0)を使用して結果行列205の要素C11...C44を取得するための16個のMAC演算の4つのセットを実行するように構成され得る。そのために、実行ユニット301は複数の乗算器を含み得、アキュムレータACC(0)は、図2Cを参照して説明した複数の要素を含み得る。
結果行列205全体を計算するために、C11...C44を取得するための16個のMAC演算のセットをそれぞれが実行する4つのプロセッサ命令のストリームが、MACユニットで受け取られ得る。ストリームの各プロセッサ命令は、MACユニットのアキュムレータACC(0)を参照し、また、アキュムレータACC(0)のどのアキュムレータ要素がどの乗算結果を受け取るかを参照する。ストリームの各プロセッサ命令について、MACユニットは16個のMAC演算を実行し、そのプロセッサ命令で参照されるそれぞれのアキュムレータ要素の内容に結果を累積し得る。たとえば、プロセッサ命令は、いくつかの積の中でも特に、積A11*B11を計算し、積をそれぞれのアキュムレータ要素ACC(0)に加算し得、続いて他の命令が、少なくともA21*B12を計算し、積をそれぞれのアキュムレータに加算し得る、などである。
各MAC演算の実行ステップは、パイプライン化された実装形態により、1クロック・サイクルまたは複数クロック・サイクルでMACユニット113によって実行され得る。
ここで図4を参照すると、少なくとも1つの実施形態によるプロセッサ・ユニット400を示すブロック図が示されている。
プロセッサ・ユニット400は、2つのMACユニット413Aおよび413Bを含み得る。MACユニット413Aは、実行ユニット401Aおよびレジスタ・ファイル403Aを含み得る。実行ユニット401Aは、レジスタ・ファイル403Aからデータを読み出し得、レジスタ・ファイル403Aにデータを書き込み得る。レジスタ・ファイル403Aは、1つまたは複数のアキュムレータを含み得る。レジスタ・ファイル403Aの各アキュムレータは、設計されたアキュムレータ・レジスタ・インデックスoddを含み得、そのため、各アキュムレータをACC(odd)と呼び得る。インデックスoddは奇数であり得る。MACユニット413Bは、実行ユニット401Bおよびレジスタ・ファイル403Bを含み得る。実行ユニット401Bは、レジスタ・ファイル403Bからデータを読み出し得、レジスタ・ファイル403Bにデータを書き込み得る。レジスタ・ファイル403Bは、1つまたは複数のアキュムレータを含み得る。レジスタ・ファイル403Bの各アキュムレータは、設計されたアキュムレータ・レジスタ・インデックスevenを含み得、そのため、各アキュムレータをACC(even)と呼び得る。インデックスevenは偶数であり得る。レジスタ・ファイル403Aおよび403Bの各レジスタ・ファイルは、1W/1Rポートのレジスタ・ファイルであり得る。MACユニット413A~Bのそれぞれは、図3のMACユニット113を参照して説明したように動作するよう構成され得る。
一実施形態では、プロセッサ・ユニット400は、MACユニット413Aおよび413Bのそれぞれによって乗算される数を提供し得るレジスタ・ファイル419をさらに含み得る。
一実施形態によれば、MACユニットの各々は、それぞれのインデックスに関連付けられ得る。たとえば、MACユニット413Aは奇数のインデックスに関連付けられ得、MACユニット413Bは偶数のインデックスに関連付けられ得る。各MACユニットは、それぞれの発行キューから自身の命令を受け取り得る(たとえば、プロセッサ・ユニット400に命令を発行するディスパッチおよび/または発行ユニットは、奇数インデックス付きの命令用の1つの発行キューと、偶数インデックス付きの命令用の他の発行キューとの2つの発行キューを含み得る)。他の実施形態では、ディスパッチおよび/または発行ユニットは、少なくとも2つの発行ポートを有する単一の発行キューを含み得る。この実施形態では、一方の発行ポートは、偶数インデックス付きの命令を偶数のMACユニット413Bに発行するように構成され得、他方の発行ポートは、奇数インデックス付きの命令を奇数のMACユニット413Aに発行するように構成され得る。しかしながら、本開示はそのような実装形態に限定されない。
たとえば、MACユニット413Aは4つのアキュムレータACC(1)、ACC(3)、ACC(5)、およびACC(7)を含み得、MACユニット413Bは4つのアキュムレータACC(0)、ACC(2)、ACC(4)、およびACC(6)を含み得る。MACユニット413A~Bの各々は、図3を参照して説明したように、それぞれのプロセッサ命令を受け取り得る。プロセッサ命令は、命令を受け取るMACユニットに対応するインデックスを参照し得る。したがって、プロセッサ・ユニット400は、MACユニット413A~Bによって2つのプロセッサ命令を並行して実行することを可能にし得る。
プロセッサ・ユニット400は、命令のパイプライン化実行を行うように構成され得る。たとえば、8つのプロセッサ命令がプロセッサ・ユニット400で受け取られると仮定する(たとえば、命令のストリームGER(0)、GER(2)、GER(3)、GER(1)、GER(5)、GER(6)、GER(7)、およびGER(4)として受け取られ、図4に関するGER(i)は、アキュムレータACC(i)をソースSRC0兼ターゲットTGTとして使用し、GER(i)命令を実行するためのレイテンシは4サイクルである)。各命令GERは、偶数または奇数のインデックスを有する。この場合、命令GER(0)、GER(2)、GER(4)、およびGER(6)は、MACユニット413Bに関連付けられた発行キューに入れられ得、命令GER(1)、GER(3)、GER(5)およびGER(7)は、MACユニット413Aに関連付けられた発行キューに入れられ得る。1つの要素のみを含むことができる単一のアキュムレータが存在する場合、GER(i)は1つのMAC演算の4つのステップのうちの1つのステップを実行することを可能にし得る。m個の要素を含むことができる1つのアキュムレータのm個のアキュムレータ要素が存在する場合、GER(i)は、m個のMAC演算のうちの各MAC演算の1つの同じステップを実行することを可能にし得る。レイテンシが4のパイプライン化実行の例に従えば、命令のストリームが以下のようにサイクルごとに実行され得る。
サイクルc:GER(0)、GER(3)
c+1:GER(2)、GER(1)
c+2:GER(4)、GER(5)
c+3:GER(6)、GER(7)
c+4:GER(0)、GER(3)...
クロック・サイクルcの間に、命令GER(0)およびGER(3)がMACユニット413Bおよび413Aに発行され、次いでそれぞれ実行される。次のサイクルc+1において、命令GER(2)およびGER(1)がMACユニット413Bおよび413Aに発行され、次いでそれぞれ実行される。次のサイクルc+2において、命令GER(4)およびGER(5)がMACユニット413Bおよび413Aに発行され、次いでそれぞれ実行される。次のサイクルc+3において、命令GER(6)およびGER(7)がMACユニット413Bおよび413Aに発行され、次いでそれぞれ実行される。プロセッサ・ユニット400は、既存のシステムと同等またはそれ以上のスループットを可能にし得る。サイクルc+4において、GER(0)およびGER(3)命令の実行が完了しているので、新しいGER(0)およびGER(3)命令がc+4サイクルで発行されて、アキュムレータACC(0)およびACC(3)の外積計算が進められ得る。サイクルcのGER(0)はMAC演算の第1のステップを実行し得、サイクルc+4のGER(0)は同じMAC演算の第2のステップを実行し得る。
他の例では、命令のストリームは、偶数インデックス付きの命令GER(0)、GER(2)、GER(4)およびGER(6)のみを含み得る。すなわち、1つの発行キューのみが、実行される命令を含む。この場合、1つのMACユニットのみを使用して、命令のストリームを以下のように実行し得る。
サイクルcc:GER(0)、なし
cc+1:GER(2)、なし
cc+2:GER(4)、なし
cc+3:GER(6)、なし
クロック・サイクルccの間に、命令GER(0)がMACユニット413Bに発行され、次いでそれによって実行され、MACユニット413Aは命令を実行していない。次のサイクルcc+1では、命令GER(2)がMACユニット413Bに発行され、次いでそれによって実行され、MACユニット413Aは命令を実行していない。次のサイクルcc+2では、命令GER(6)がMACユニット413Bに発行され、次いでそれによって実行され、MACユニット413Aは命令を実行していない。次のサイクルcc+3では、命令GER(6)がMACユニット413Bに発行され、次いでそれによって実行され、MACユニット413Aは命令を実行していない。使用されている4つのACCのように実行ユニット401Aを使用しないことによって全体のスループットには無影響であり得、命令がACC結果計算を完了するのに要する4サイクルのレイテンシを考えると、全体のスループットは4命令ほど高くない場合がある。
ここで図5Aを参照すると、少なくとも1つの実施形態によるプロセッサ・ユニット500のディスパッチ・ロジックを示すブロック図が示されている。図5Bも参照すると、少なくとも1つの実施形態によるプロセッサ・ユニット500の発行ロジックを示すブロック図が示されている。プロセッサ・ユニット500は、図4を参照して説明したように、ディスパッチ/発行ユニット511と、MACユニット413Aおよび413Bとを含み得る。
図5Aに示すように、ディスパッチ/発行ユニット511は、フェッチおよびデコードされた命令を受け取るように構成され得る。受け取った命令は、所与のインデックスiを有するアキュムレータACC(i)を参照し得る。ディスパッチおよび/または発行ユニット511は、論理回路514を含む。論理回路514は、インデックスiに基づいて、ディスパッチ/発行ユニット511の発行キュー(「ISQ:issue queue」)412Aおよび412Bのうちのどちらが命令を受け取るかを判定するように構成され得る。あるいは、図5Bに示すように、プロセッサ・ユニット500は、論理回路514の共通の発行キュー・ポートを含み得、結合された発行キュー412A~Bの発行ロジックは、使用されるアキュムレータACC(i)のインデックスiに基づいて、MACユニット413A~Bの偶数または奇数のポートにそれぞれの命令を発行するように構成され得る。
ここで図6Aを参照すると、少なくとも1つの実施形態による1つまたは複数のMAC演算のセットを実行するための例示的な処理を示す動作フローチャートが示されている。さらに図6B~図6Cを参照すると、少なくとも1つの実施形態による図6AのMAC演算に関連するMACユニットを示すブロック図が示されている。
以下の説明を簡単にするために、図6A~図6CのMAC演算のセットは、A11*B11+A21*B12に等しい行列要素を求めるためのMAC演算を含み得る(ただし、これに限定されない)。
MAC演算のセットの実行を可能にするために、2つの命令のストリームが生成され得、各命令はMAC演算のセットのうちのMAC演算の実行を可能にし得る。
601で、アキュムレータが初期化される。一実施形態によれば、MACユニット613のアキュムレータは、ゼロに初期化され得る。アキュムレータは、1W/1Rレジスタ・ファイルの一部であり得る。
次いで、602で、命令が受け取られる。一実施形態によれば、ストリームの第1の命令が602で受け取られ得る。第1の命令は、2つのVSRレジスタをソース・レジスタとして参照し得る。第1の命令はさらに、アキュムレータを第1の命令のソース兼ターゲット・レジスタとして参照し得る。第1の命令は、たとえば、GER命令を使用して次のように定義され得る。GER ACC(i)←ACC(i),VSR(j),VSR(k)。図6Bに示すように、VSRレジスタVSR(j)およびVSR(k)は乗算される値A11およびB11を含み、アキュムレータは初期値を記憶している。値A11およびB11は、たとえば、第1の命令の実行を可能にするために、ロード/ストア・ユニット117によってレジスタ・ファイル119のVSRレジスタに記憶され得る。
次いで、603で、値が乗算される。一実施形態によれば、値A11およびB11は、MACユニット613の乗算器で受け取られ得る。乗算器は、603で値A11およびB11を乗算し、乗算A11*B11の結果をMACユニット613の加算器に提供し得る。
次いで、604で、乗算の結果がアキュムレータに加算される。一実施形態によれば、加算器は、図6Bに示すようにゼロであり得るアキュムレータACCの現在の内容を読み出し得る。604で、加算器は、アキュムレータACCの内容をA11およびB11の乗算の結果に加算し得る。
次いで、605で結果が書き込まれる。一実施形態によれば、605で加算の結果(たとえば、A11*B11)がアキュムレータに書き込まれ得る。これにより、第1の命令が実行されて完了し得る。
ストリームの次の命令は、ストリームの第2の命令に対して上述の602~605を繰り返すことによって処理され得る。図6Cは、第2の命令の実行に関するMACユニット613の状態を示している。VSRレジスタVSR(j)およびVSR(k)は、乗算される値A21およびB12を含み得、アキュムレータは値A11*B11を記憶し得る。第2の命令は、たとえば、第1の命令と同じ構文を有し得る。ストリームの全ての命令が処理されるまで、602~605が繰り返され得る。
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して本明細書で説明している。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装できることは理解されよう。
本発明は、任意の可能な技術的詳細レベルの統合におけるシステム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組み合わせであり得る。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のために命令を保持および記憶可能な有形のデバイスとすることができる。コンピュータ可読記憶媒体は、たとえば、限定はしないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであり得る。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラム可能読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリー・スティック(R)、フレキシブル・ディスク、命令が記録されたパンチ・カードまたは溝の隆起構造などの機械的にコード化されたデバイス、およびこれらの任意の適切な組み合わせが含まれる。コンピュータ可読記憶媒体は、本明細書で使用する場合、たとえば、電波または他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体を伝搬する電磁波(たとえば、光ファイバ・ケーブルを通過する光パルス)、または有線で伝送される電気信号などの一過性の信号自体であると解釈されるべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいは、たとえば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくは無線ネットワーク、またはそれらの組み合わせなどのネットワークを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組み合わせを含み得る。各コンピューティング/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の構成データ、あるいは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語、Pythonプログラミング言語、または類似のプログラミング言語などの手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで書かれたソース・コードまたはオブジェクト・コードであり得る。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン・ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上かつ部分的にリモート・コンピュータ上で、あるいは完全にリモート・コンピュータまたはサーバ上で実行され得る。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)またはワイド・エリア・ネットワーク(WAN:wide area network)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得、または(たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータへの接続がなされ得る。いくつかの実施形態では、たとえば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA:field-programmable gate array)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic array)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用してコンピュータ可読プログラム命令を実行することによって、電子回路を個人向けにし得る。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供して、それらの命令がコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行された場合に、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為を実装するための手段が生成されるようなマシンを生成し得る。また、これらのコンピュータ可読プログラム命令を、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはそれらの組み合わせに特定の方法で機能するように指示することが可能なコンピュータ可読記憶媒体に記憶して、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為の態様を実装する命令を含む製造品を構成するようにし得る。
また、コンピュータ可読プログラム命令をコンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードして、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させることによって、それらの命令がコンピュータ、他のプログラム可能装置、または他のデバイス上で実行された場合に、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為が実装されるようなコンピュータ実装処理を生成し得る。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示している。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理的機能(複数可)を実装するための1つまたは複数の実行可能命令を含むモジュール、セグメント、または命令の一部を表し得る。いくつかの代替的実装形態では、ブロックに記載した機能は、図示した順序以外で行われ得る。たとえば、関与する機能に応じて、連続して示した2つのブロックは、実際には、1つのステップとして実現され得、同時に、実質的に同時に、部分的にまたは完全に時間的に重なるように実行され得、またはそれらのブロックは、場合により逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせは、指定された機能もしくは行為を実行するか、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用のハードウェア・ベースのシステムによって実装できることにも気付くであろう。

Claims (20)

  1. 積和(「MAC」)演算用のプロセッサ・ユニットであって、
    MAC演算のセットのうちのそれぞれのMAC演算のサブセットを実行するための複数のMACユニットであって、前記複数のMACユニットのうちの各MACユニットは、それぞれの実行ユニットと、それぞれのワンライト・ワンリード(「1W/1R」)レジスタ・ファイルとを含み、前記それぞれの1W/1Rレジスタ・ファイルは少なくとも1つのアキュムレータを有する、前記複数のMACユニットと、
    他のレジスタ・ファイルであって、各MACユニットの前記それぞれの実行ユニットは、前記他のレジスタ・ファイルから受け取った値のセットの積を計算し、前記計算された積を前記MACユニットの前記少なくとも1つのアキュムレータの内容に加算することによって、前記MAC演算のセットのうちの前記それぞれのMAC演算のサブセットを実行するように構成され、各MACユニットは、前記それぞれのMAC演算のサブセットを単一のクロック・サイクルで実行するように構成される、前記他のレジスタ・ファイルと、
    を備え
    前記複数のMACユニットのうちの各MACユニットは関連付けられたインデックスを参照するプロセッサ命令を実行することによって、前記それぞれのMAC演算のサブセットを実行するように構成される、プロセッサ・ユニット。
  2. 前記各MACユニットは前記関連付けられたインデックスを含、請求項1に記載のプロセッサ・ユニット。
  3. 前記関連付けられたインデックスは、各MACユニットの前記少なくとも1つのアキュムレータの設計されたアキュムレータ・レジスタ・インデックスを含む、請求項2に記載のプロセッサ・ユニット。
  4. 前記少なくとも1つのアキュムレータはそれぞれのアキュムレータ要素を含み、前記計算された積は前記それぞれのアキュムレータ要素の内容に加算され、各MACユニットは、前記少なくとも1つのアキュムレータの前記それぞれのアキュムレータ要素を使用して、MAC演算のセットのうちの前記それぞれのMAC演算のサブセットを実行するように構成される、請求項1から3のいずれか一項に記載のプロセッサ・ユニット。
  5. ディスパッチ/発行ユニットをさらに備え、前記ディスパッチ/発行ユニットは、複数のプロセッサ命令を処理し、前記関連付けられたインデックスを使用してMACユニットを選択し、前記MAC演算のセットを実行するために前記選択されたMACユニットにそれぞれのプロセッサ命令のセットを送るように構成される、請求項2から4のいずれか一項に記載のプロセッサ・ユニット。
  6. 前記それぞれのプロセッサ命令のセットは、前記少なくとも1つのアキュムレータを前記それぞれのプロセッサ命令のセットのソース兼ターゲット・レジスタとして示し、数のセットを含む前記他のレジスタ・ファイルの少なくとも1つのさらなるレジスタを示す少なくとも1つのオペランドをさらに含む、請求項5に記載のプロセッサ・ユニット。
  7. 前記ディスパッチ/発行ユニットは前記MACユニットをさらに備える、請求項5または6に記載のプロセッサ・ユニット。
  8. 前記ディスパッチ/発行ユニットは、前記選択されたMACユニットが前記それぞれのプロセッサ命令のセットを単一のスレッドから受け取るように、シングル・スレッド(「ST」)モードに従って前記複数のプロセッサ命令をディスパッチするように構成される、請求項5から7のいずれか一項に記載のプロセッサ・ユニット。
  9. 前記ディスパッチ/発行ユニットは、前記選択されたMACユニットが前記それぞれのプロセッサ命令のセットを2つのスレッドのうちのいずれか一方から受け取るように、2ウェイ同時マルチスレッディング(「SMT2」)モードに従って前記複数のプロセッサ命令をディスパッチするように構成される、請求項5から8のいずれか一項に記載のプロセッサ・ユニット。
  10. 前記ディスパッチ/発行ユニットは、前記複数のMACユニットのうちの各MACユニットが前記それぞれのプロセッサ命令のセットをそれぞれの2つのスレッドから受け取るように、4ウェイ同時マルチスレッディング(「SMT4」)モードに従って前記複数のプロセッサ命令をディスパッチするように構成される、請求項5から9のいずれか一項に記載のプロセッサ・ユニット。
  11. 各MACユニットは、前記積を計算するための少なくとも1つの乗算器と、前記計算された積の前記加算を実行するための少なくとも1つの加算器とをさらに備える、請求項1から10のいずれか一項に記載のプロセッサ・ユニット。
  12. さらなるMAC演算のセットを実行するように構成され、前記MAC演算のセット全てによって、出力行列の全ての要素が提供され、前記出力行列は入力行列への行列畳み込みの結果である、請求項1から11のいずれか一項に記載のプロセッサ・ユニット。
  13. 積和(「MAC」)演算を実行するための方法であって、
    MACユニットの乗算器において、レジスタ・ファイルから値のセットを受け取ることであって、前記MACユニットは関連付けられたインデックスを参照するプロセッサ命令を実行することによって、前記MAC演算を実行するように構成される、前記受け取ることと、
    前記乗算器を使用して、受け取った前記値のセットの積を計算することと、
    前記MACユニットのアキュムレータの現在の内容を読み出すことと、
    前記MACユニットの加算器を使用して、読み出された前記アキュムレータの現在の内容と、計算された前記値のセットの積との和を計算することと、
    計算された前記和を前記MACユニットの前記アキュムレータに書き込むことと、
    を含む、方法。
  14. 積和(「MAC」)演算を実行するためのコンピュータ・プログラムであって、
    MACユニットの乗算器において、レジスタ・ファイルから値のセットを受け取ることであって、前記MACユニットは関連付けられたインデックスを参照するプロセッサ命令を実行することによって、前記MAC演算を実行するように構成される、前記受け取ることと、
    前記乗算器を使用して、受け取った前記値のセットの積を計算することと、
    前記MACユニットのアキュムレータの現在の内容を読み出すことと、
    前記MACユニットの加算器を使用して、読み出された前記アキュムレータの現在の内容と、計算された前記値のセットの積との和を計算することと、
    計算された前記和を前記MACユニットの前記アキュムレータに書き込むことと、
    を実行させるための、コンピュータ・プログラム。
  15. 積和(「MAC」)ユニットであって、
    実行ユニットと、
    ワンライト・ワンリード(「1W/1R」)ポートのレジスタ・ファイルであって、前記1W/1Rポートのレジスタ・ファイルは少なくとも1つのアキュムレータを含み、前記MACユニットの前記実行ユニットは、積を計算し、前記MACユニットの前記少なくとも1つのアキュムレータの内容に前記積を加算することによって、MAC演算を実行するように構成される、前記1W/1Rポートのレジスタ・ファイルと、
    を備え
    前記MACユニットは関連付けられたインデックスを参照するプロセッサ命令を実行することによって、前記MAC演算のサブセットを実行するように構成される、MACユニット。
  16. 前記関連付けられたインデックスは、前記MACユニットの前記少なくとも1つのアキュムレータの設計されたアキュムレータ・レジスタ・インデックス含み、前記MACユニットは、前記設計されたアキュムレータ・レジスタ・インデックスを参照するプロセッサ命令を実行することによって、前記MAC演算を実行するように構成される、請求項15に記載のMACユニット。
  17. 前記MACユニットの前記実行ユニットは、前記複数のMAC演算のうちの各MAC演算の前記積を累積するために、同じアキュムレータを使用して、複数のMAC演算を連続的に実行するように構成される、請求項15または16に記載のMACユニット。
  18. 前記少なくとも1つのアキュムレータはさらに複数のアキュムレータを備え、前記MACユニットは、前記複数のアキュムレータのうちのそれぞれのアキュムレータを使用して、複数のMAC演算を並行して実行するように構成される、請求項15から17のいずれか一項に記載のMACユニット。
  19. 前記積の前記計算を実行するための少なくとも1つの乗算器と、
    前記積の加算を実行するための少なくとも1つの加算器と、
    をさらに備える、請求項15から18のいずれか一項に記載のMACユニット。
  20. 前記少なくとも1つのアキュムレータはさらに複数のアキュムレータ要素を備え、前記MACユニットは複数の乗算器と加算器とを含み、前記MACユニットは、前記複数のアキュムレータ要素のうちのそれぞれのアキュムレータ要素と、前記複数の乗算器のうちのそれぞれの乗算器とを使用して、複数のMAC演算を並列に実行するように構成される、請求項15から19のいずれか一項に記載のMACユニット。
JP2022533315A 2019-12-05 2020-11-30 積和演算用のプロセッサ・ユニット Active JP7495194B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/703,934 US20210173662A1 (en) 2019-12-05 2019-12-05 Processor unit for multiply and accumulate operations
US16/703,934 2019-12-05
PCT/IB2020/061262 WO2021111272A1 (en) 2019-12-05 2020-11-30 Processor unit for multiply and accumulate operations

Publications (2)

Publication Number Publication Date
JP2023505177A JP2023505177A (ja) 2023-02-08
JP7495194B2 true JP7495194B2 (ja) 2024-06-04

Family

ID=76208984

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022533315A Active JP7495194B2 (ja) 2019-12-05 2020-11-30 積和演算用のプロセッサ・ユニット

Country Status (6)

Country Link
US (1) US20210173662A1 (ja)
JP (1) JP7495194B2 (ja)
CN (1) CN114746840A (ja)
DE (1) DE112020005055T5 (ja)
GB (1) GB2606908A (ja)
WO (1) WO2021111272A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11132198B2 (en) 2019-08-29 2021-09-28 International Business Machines Corporation Instruction handling for accumulation of register results in a microprocessor
US20220206800A1 (en) * 2020-12-24 2022-06-30 Intel Corporation Apparatuses, methods, and systems for instructions for aligning tiles of a matrix operations accelerator

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009181293A (ja) 2008-01-30 2009-08-13 Yamaha Corp 行列演算コプロセッサ
WO2018154269A1 (en) 2017-02-23 2018-08-30 Arm Limited Widening arithmetic in a data processing apparatus

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3971535B2 (ja) * 1999-09-10 2007-09-05 株式会社リコー Simd型プロセッサ
EP1160662A1 (en) * 2000-03-10 2001-12-05 Texas Instruments France Processor with pointer tracking to eliminate redundant memory fetches
US7797363B2 (en) * 2004-04-07 2010-09-14 Sandbridge Technologies, Inc. Processor having parallel vector multiply and reduce operations with sequential semantics
US7334201B1 (en) * 2004-07-02 2008-02-19 Tensilica, Inc. Method and apparatus to measure hardware cost of adding complex instruction extensions to a processor
US7721069B2 (en) * 2004-07-13 2010-05-18 3Plus1 Technology, Inc Low power, high performance, heterogeneous, scalable processor architecture
US7587579B2 (en) * 2004-12-28 2009-09-08 Ceva D.S.P. Ltd. Processor core interface for providing external hardware modules with access to registers of the core and methods thereof
JP4929906B2 (ja) * 2006-07-28 2012-05-09 富士通株式会社 送信制御方法及び装置
KR100835173B1 (ko) * 2006-09-20 2008-06-05 한국전자통신연구원 곱셈 누적 연산을 위한 디지털 신호처리 장치 및 방법
JP2009075676A (ja) * 2007-09-18 2009-04-09 Nec Electronics Corp マイクロプロセッサ
US20090248769A1 (en) * 2008-03-26 2009-10-01 Teck-Kuen Chua Multiply and accumulate digital filter operations
GB2474901B (en) * 2009-10-30 2015-01-07 Advanced Risc Mach Ltd Apparatus and method for performing multiply-accumulate operations
US11775313B2 (en) * 2017-05-26 2023-10-03 Purdue Research Foundation Hardware accelerator for convolutional neural networks and method of operation thereof
WO2019010183A1 (en) * 2017-07-05 2019-01-10 Deep Vision, Inc. PROCESSOR OF DEEP VISION
US11204976B2 (en) * 2018-11-19 2021-12-21 Groq, Inc. Expanded kernel generation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009181293A (ja) 2008-01-30 2009-08-13 Yamaha Corp 行列演算コプロセッサ
WO2018154269A1 (en) 2017-02-23 2018-08-30 Arm Limited Widening arithmetic in a data processing apparatus

Also Published As

Publication number Publication date
CN114746840A (zh) 2022-07-12
DE112020005055T5 (de) 2022-11-10
GB202209610D0 (en) 2022-08-17
US20210173662A1 (en) 2021-06-10
JP2023505177A (ja) 2023-02-08
WO2021111272A1 (en) 2021-06-10
GB2606908A (en) 2022-11-23

Similar Documents

Publication Publication Date Title
US11775313B2 (en) Hardware accelerator for convolutional neural networks and method of operation thereof
US8595280B2 (en) Apparatus and method for performing multiply-accumulate operations
KR101005718B1 (ko) 포화와 함께 또는 포화 없이 다중 오퍼랜드들의 누산을 위한 프로세서 감소 유닛
US7797363B2 (en) Processor having parallel vector multiply and reduce operations with sequential semantics
US11567763B2 (en) Widening arithmetic in a data processing apparatus
US11513796B2 (en) Multiply-accumulation in a data processing apparatus
JP7495194B2 (ja) 積和演算用のプロセッサ・ユニット
US20200356837A1 (en) Fast deep learning fully-connected inference
US11327752B2 (en) Element by vector operations in a data processing apparatus
US11755320B2 (en) Compute array of a processor with mixed-precision numerical linear algebra support
JP7439276B2 (ja) ベクトル演算の回転累算器
CN112434256B (zh) 矩阵乘法器和处理器
US11281745B2 (en) Half-precision floating-point arrays at low overhead
CN108255463B (zh) 一种数字逻辑运算方法、电路和fpga芯片
US11182458B2 (en) Three-dimensional lane predication for matrix operations
CN115809094A (zh) 一种实现一条指令对多组并行处理的数据处理方法
JP2004252899A (ja) 情報処理装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221214

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: 20240125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240130

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20240315

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20240318

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240424

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: 20240507

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20240509

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240521

R150 Certificate of patent or registration of utility model

Ref document number: 7495194

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150