(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-18
(54)【発明の名称】コンピュータ実装環境における浮動小数点積和演算の実行
(51)【国際特許分類】
G06F 17/10 20060101AFI20241010BHJP
G06F 9/30 20180101ALI20241010BHJP
G06F 17/16 20060101ALI20241010BHJP
【FI】
G06F17/10 S
G06F9/30 350A
G06F9/30 370
G06F17/16 M
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024520783
(86)(22)【出願日】2022-10-24
(85)【翻訳文提出日】2024-04-04
(86)【国際出願番号】 EP2022079502
(87)【国際公開番号】W WO2023072791
(87)【国際公開日】2023-05-04
(32)【優先日】2021-10-27
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】フィグリ、ラズヴァン ピーター
(72)【発明者】
【氏名】リヒテナウ、セドリック
(72)【発明者】
【氏名】バビンスキ、ティナ
(72)【発明者】
【氏名】ホフマン、ニコル
(72)【発明者】
【氏名】シュタインマッハー-ブロウ、ブルクハルト
【テーマコード(参考)】
5B033
5B056
【Fターム(参考)】
5B033AA13
5B056CC01
5B056FF11
(57)【要約】
プロセッサは、3つの入力浮動小数点オペランドA、B、Cを用いて、少なくとも1つの積和ユニット上で形式A*B+Cの浮動小数点積和演算を実行するために使用され、前記オペランドA、B、Cのうちの少なくとも1つは、予め定義されたオペランド値セットの少なくとも1つの値に置換される。
【特許請求の範囲】
【請求項1】
少なくとも1つの積和ユニット上で形式A*B+Cの浮動小数点積和演算を実行するためのプロセッサ実装方法であって、
3つの入力浮動小数点オペランドA、B、C、ここで、前記入力浮動小数点オペランドA、B、Cのうちの少なくとも1つは、予め定義されたオペランド値セットの少なくとも1つの値に置換される、
を備える、プロセッサ実装方法。
【請求項2】
前記入力浮動小数点オペランドA、B、Cのうちの少なくとも1つを、置換ロジックによって提供する段階;及び
前記入力浮動小数点オペランドA、B、Cを、前記置換ロジックの少なくとも1つの出力ポートへ伝搬される前記予め定義されたオペランド値セットの前記少なくとも1つの値に置換するように別個に構成可能であるように前記置換ロジックを構成する段階
を更に備える、請求項1に記載のプロセッサ実装方法。
【請求項3】
前記置換ロジックはマルチプレクサ回路として構成されており、前記プロセッサ実装方法は:
前記3つの入力浮動小数点オペランドA、B、Cのうちの少なくとも1つを、それぞれ前記マルチプレクサ回路によって提供する段階、ここで前記マルチプレクサ回路はそれぞれの前記入力浮動小数点オペランドA、B、Cのための第1の入力ポート、及び予め定義されたオペランド値セットの少なくとも1つの値のための少なくとも第2の入力ポート、及び少なくとも1つの出力ポートを備える;及び
前記第1の入力ポート及び前記第2の入力ポートのうちの1つを、前記少なくとも1つの出力ポートへ伝搬されるために選択するように別個に構成可能であるように前記マルチプレクサ回路を構成する段階
を更に備える、請求項1又は2に記載のプロセッサ実装方法。
【請求項4】
前記浮動小数点積和演算を、前記置換ロジックの前記構成を指定する選択コードパラメータを有する命令によってトリガする段階
を更に備える、請求項1~3のいずれか一項に記載のプロセッサ実装方法。
【請求項5】
前記予め定義されたオペランド値セットを、少なくとも値-0、+0、+1、-1を含むセットとして構成する段階
を更に備える、請求項1~4のいずれか一項に記載のプロセッサ実装方法。
【請求項6】
前記第1の入力ポート及び前記第2の入力ポートのうちの1つを、パラメータ-0、C、A、A+C、B、B+C、A*B、A*B+C、C+1、1、-A+C、-B+Cを備える選択可能演算に対応するセットのうちの少なくとも1つである選択コードパラメータによって、前記少なくとも1つの出力ポートへ伝搬されるために選択する段階
を更に備える、請求項3~5のいずれか一項に記載のプロセッサ実装方法。
【請求項7】
形式A0*B0+A1*B1+Cの浮動小数点積積和演算を、オペランドA0、A1、B0、B1、Cを備える入力浮動小数点オペランドを用いて実行する段階
を更に備える、請求項1~6のいずれか一項に記載のプロセッサ実装方法。
【請求項8】
浮動小数点オペランドを、レジスタファイルによって入力オペランドとして提供し、前記置換ロジックからの出力を、少なくとも2つの読み出しポート及び1つの書き込みポートを有するレジスタファイルによって受信し、特に選択コードパラメータを有する命令によってトリガされる前記入力オペランドを提供する段階
を更に備える、請求項1~7のいずれか一項に記載のプロセッサ実装方法。
【請求項9】
プロセッサが少なくとも1つの積和ユニットを各々有する装置の相互接続メッシュを備え、ここで各積和ユニットはデータ値の中間記憶のための少なくとも1つのローカルレジスタファイルを備える場合、前記浮動小数点積和演算を、前記置換ロジックの構成を指定する選択コードパラメータを有する命令によってトリガする段階
を更に備える、請求項1~8のいずれか一項に記載のプロセッサ実装方法。
【請求項10】
プロセッサが少なくとも1つの積和ユニットを各々有する複数の装置を有する単一命令複数データデバイスを備え、ここで装置毎のプレディケート値をプレディケートレジスタによって提供することが命令によって指定される場合、各装置に対する浮動小数点積和演算の実行を選択する段階
を更に備える、請求項1~9のいずれか一項に記載のプロセッサ実装方法。
【請求項11】
前記プレディケートレジスタが前記プレディケート値を有するマルチビットプレディケートフィールドを備え、これが前記命令によって有効化される場合、装置のレーン上でプレディケート値を実行して、各レーンに対するそれぞれの前記プレディケート値に基づいて個別のレーンの種類を変更する段階
を更に備える、請求項10に記載のプロセッサ実装方法。
【請求項12】
装置の前記少なくとも1つの積和ユニットにおける内部演算の少なくとも1つのオペランドは、予め定義されたオペランド値セットの少なくとも1つの値に置換され、前記内部演算は、ロードストアユニットによって提供されるプレディケート値、以前の命令の結果、及び動的又は静的使用についての情報に基づいてプレディケートロジックによって選択コードパラメータへと指定及びデコードされるプレディケート値によってトリガされる、請求項10又は11に記載のプロセッサ実装方法。
【請求項13】
請求項1に記載のプロセッサ実装方法を用いて少なくとも1つの積和ユニット上で形式A*B+Cの浮動小数点積和演算を実行するための装置であって、
3つの入力浮動小数点オペランドA、B、C、前記入力浮動小数点オペランドA、B、Cのうちの少なくとも1つは、前記入力浮動小数点オペランドA、B、Cを、置換ロジックの少なくとも1つの出力ポートへ伝搬される前記予め定義されたオペランド値セットの前記少なくとも1つの値に置換するように別個に構成可能であるように構成されている前記置換ロジックによって提供される、
を備える、装置。
【請求項14】
前記置換ロジックはマルチプレクサ回路として構成されており、前記3つの浮動小数点オペランドA、B、Cのうちの少なくとも1つは、それぞれ前記マルチプレクサ回路によって提供され、前記マルチプレクサ回路は:
それぞれの前記入力浮動小数点オペランドA、B、Cのための第1の入力ポート;
予め定義されたオペランド値セットの少なくとも1つの値のための少なくとも第2の入力ポート;及び
対応する前記第1の入力ポート及び前記第2の入力ポートに割り当てられる少なくとも1つの出力ポート、ここで前記マルチプレクサ回路は、前記第1の入力ポート及び前記第2の入力ポートのうちの1つを、前記少なくとも1つの出力ポートへ伝搬されるために選択するように別個に構成可能であるように構成されている、
を備える、請求項13に記載の装置。
【請求項15】
前記浮動小数点積和演算は、前記少なくとも1つの置換ロジックの構成を指定する選択コードパラメータを有する命令によってトリガされる、請求項13又は14に記載の装置。
【請求項16】
前記予め定義されたオペランド値セットは、少なくとも値-0、+0、+1、-1を含むセットとして構成されている、請求項13~15のいずれか一項に記載の装置。
【請求項17】
前記入力ポートのうちの1つを、前記少なくとも1つの出力ポートへ伝搬されるために選択するために使用される前記選択コードパラメータは、-0、C、A、A+C、B、B+C、A*B、A*B+C、C+1、1、-A+C、-B+Cを備える選択可能演算に対応するセットのうちの少なくとも1つである、請求項15又は16に記載の装置。
【請求項18】
3つの入力を有する少なくとも1つの積和ユニットを備え、少なくとも1つの入力は、前記少なくとも1つの置換ロジックの出力から受信される、請求項13~17のいずれか一項に記載の装置。
【請求項19】
少なくとも2つの読み出しポート及び1つの書き込みポートを有するレジスタファイルを備え、前記レジスタファイルは、入力オペランドを提供するために構成されており、前記積和ユニットからの出力を受信するために、特に選択コードパラメータを有する命令によってトリガされる前記入力オペランドを提供するために構成されている、請求項13~18のいずれか一項に記載の装置。
【請求項20】
形式A0*B0+A1*B1+Cの浮動小数点積積和演算を、A0、A1、B0、B1、Cを備える入力浮動小数点オペランドを用いて実行するために構成されている、請求項13~19のいずれか一項に記載の装置。
【請求項21】
請求項1に記載のプロセッサ実装方法を用いて少なくとも1つの積和ユニット上で形式A*B+Cの浮動小数点積和演算を実行するための少なくとも1つの装置を備えるプロセッサであって、
3つの入力浮動小数点オペランドA、B、C、ここで、前記入力浮動小数点オペランドA、B、Cのうちの少なくとも1つは、前記入力浮動小数点オペランドA、B、Cを、それぞれ、置換ロジックの少なくとも1つの出力ポートへ伝搬される前記予め定義されたオペランド値セットの前記少なくとも1つの値に置換するように別個に構成可能であるように構成されている前記置換ロジックによって提供され、前記浮動小数点積和演算は、前記置換ロジックの構成を指定する選択コードパラメータを有する命令によってトリガされる、
を有する、プロセッサ。
【請求項22】
複数の装置を有する単一命令複数データデバイス、ここでプレディケートレジスタは、装置毎のプレディケート値を提供する命令によって、各装置に対する浮動小数点積和演算の実行を選択するように指定される、を更に備える、請求項21に記載のプロセッサ。
【請求項23】
前記プレディケートレジスタが前記プレディケート値を有するマルチビットプレディケートフィールドを備え、前記マルチビットプレディケートフィールドは、前記命令によって、装置のレーン上で前記プレディケート値を実行して、各レーンに対するそれぞれの前記プレディケート値に基づいて個別のレーンの種類を変更するように有効化される、請求項22に記載のプロセッサ。
【請求項24】
装置の前記少なくとも1つの積和ユニットは、内部演算の少なくとも1つのオペランドを予め定義されたオペランド値セットの少なくとも1つの値に置換するように構成されており、前記内部演算は、ロードストアユニットによって提供されるプレディケート値、以前の命令の結果、及び動的又は静的使用についての情報に基づいてプレディケートロジックによって選択コードパラメータへと指定及びデコードされるプレディケート値によってトリガされる、請求項22又は23に記載のプロセッサ。
【請求項25】
少なくとも1つの積和ユニット上で、3つの入力浮動小数点オペランドA、B、Cを用いて、
形式A*B+Cの浮動小数点積和演算を実行するための命令を備える非一時的機械可読媒体であって、
3つの入力浮動小数点オペランドA、B、C、ここで、前記入力浮動小数点オペランドA、B、Cのうちの少なくとも1つは、予め定義されたオペランド値セットの少なくとも1つの値に置換される、
を備え、
前記入力浮動小数点オペランドA、B、Cのうちの少なくとも1つは、予め定義されたオペランド値セットの少なくとも1つの値によって置換可能である、非一時的機械可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は概して、データ処理コンピュータシステムに関する。特に本発明は、少なくとも1つの積和ユニット上で浮動小数点積和演算を実行するためのプロセッサ実装方法及び装置に関する。
【背景技術】
【0002】
通常の人工知能(AI)アクセラレータは、浮動小数点演算毎秒(FLOPS)(FLOPS/ワット又はFLOPS/面積)において計測される、高スループット又は高効率のために最適化された多くの処理タイル(PT)又は処理要素(PE)のアレイからなる。タイル内のインフラストラクチャオーバヘッド、例えば、制御の複雑さ、配線及びメモリフットプリントは、タイルの数によって倍増して、方法の全体効率を低減する。例えば、再利用のために未修正データをローカルレジスタファイル(LRF)へ書き込む「ロード」命令は、専用命令及びデコードロジック、LRFへの第2の書き込みポート又はバイパスロジック及び制御、並びに最終的に衝突回避を必要とする。これらの特徴は、全体の計算時間のうちの小部分のみで利用される。したがって、ハードウェアオーバヘッドなしで浮動小数点値をLRFへロードする効率的なインフラストラクチャに対する必要性が存在する。
【0003】
US 2019/0042254 A1は、タイルレジスタペアをロードするシステム及び方法を開示している。オペコード、及びそれぞれソース及びデスティネーション行列を識別するためのソース及びデスティネーション識別子のためのフィールドを有するロード行列ペア命令をデコードするためのデコード回路、それぞれ、各行列はTRUEに等しいPAIRパラメータを有する、及びデコードされたロード行列ペア命令を実行して、それぞれ識別されたソース行列の左及び右タイルの対応する要素位置から識別されたデスティネーション行列の左及び右タイルの全ての要素をロードする実行回路を含むプロセッサが開示されており、当該実行は、第1の行から開始して、一度に識別されたデスティネーション行列の1つの行に対して演算する。
【0004】
この参照文献は、レジスタペアをロード/ストアするために追加の専用ロード/ストア命令を使用する。システムは、追加の専用命令(TILECONFIG、TILERELEASEなど)を使用するタイル構成を必要とする。
【0005】
US 2021/0089316 A1は、シストリックアレイ及び融合演算を使用するディープラーニング実装を開示している。オペコード及びデスティネーション及びN個のソース行列の位置を指定するフィールドを有する命令をフェッチ及びデコードするためのフェッチ及びデコード回路を含むプロセッサが開示されており、オペコードはプロセッサがメモリからN個のソース行列をロードし、N個のソース行列上でN回の畳み込みを実行して、N個の特徴マップを生成し、N回の畳み込みの結果を、活性化層へ渡されるためにレジスタ内にストアすることを示し、プロセッサは、N個のソース行列の各々の最大1回のメモリロードを伴う、N回の畳み込み及び活性化層を実行する。プロセッサは、命令の実行をスケジューリングするためのスケジューリング回路、及びオペコードのとおりに命令を実行するための実行回路を更に含む。
【0006】
この参照文献は、畳み込み及び後続の層の応用に焦点を当てている。開示されている実装形態はレジスタペアをロード/ストアするために追加の専用ロード/ストア命令を使用している。システムは、追加の専用命令(TILECONFIG、TILERELEASEなど)を使用するタイル構成を必要とする。
【0007】
US 9,778,908 B2は、形式±A*B±Cの融合乗累算演算を実行するためにマイクロプロセッサにおいて提供される方法を開示しており、A、B、及びCは入力オペランドであり、且つCがA及びBの積に累算される前に丸めは生じない。融合乗累算演算は、第1の及び第2の乗累算サブ演算へと分割されて、1つ又は複数の命令実行ユニットによって実行される。第1の乗累算サブ演算において、A及びBの部分積をCと累算すべきか、又はその代わりにA及びBの部分積のみを累算してそこから丸められていない非冗長合計を生成すべきかの選択がなされる。第1の及び第2の乗累算サブ演算の間で、丸められていない非冗長合計はメモリ内にストアされて、1つ又は複数の命令実行ユニットが乗累算演算に関係のない他の演算を実行することを可能にする。代替的に又は追加で、丸められていない非冗長合計は、第1の命令実行ユニットから第2の命令実行ユニットへ転送される。第2の乗累算サブ演算において、第1の乗累算サブ演算がCを累算することなく丸められていない非冗長合計を生成した場合、Cは丸められていない非冗長合計と累算される。第2の乗累算サブ演算において、最終的な丸められた結果が融合乗累算演算から生成される。
【0008】
この参照文献は、融合乗累算演算がとりわけCを0にセットすることによってA*Bを計算可能であることを説明している。これは、A又はBのいずれかにおける-0.0が+0.0に加算されると厳密にゼロである差のケースを生じ、したがって結果は誤った符号を有するので、IEEE(米国電気電子学会)準拠浮動小数点数にとって可能ではない。
【発明の概要】
【0009】
コンピュータ実装方法は、少なくとも1つの積和ユニット上で形式A*B+Cの浮動小数点積和演算を実行する段階を含み、浮動小数点積和演算を実行するための少なくとも1つの装置を備えるプロセッサ及び浮動小数点積和演算を実行するための命令を備える非一時的機械可読媒体に関する。
【0010】
3つの入力浮動小数点オペランドA、B、Cを用いて、少なくとも1つの積和ユニット上で形式A*B+Cの浮動小数点積和演算を実行するためのプロセッサ実装方法が提案され、オペランドA、B、Cのうちの少なくとも1つは、予め定義されたオペランド値セットの少なくとも1つの値に置換される。
【0011】
本発明の方法は、選択可能演算浮動小数点積和(soFMA:selectable-operation floating-point-multiply-add)ユニットを使用する。soFMAユニットは、浮動小数点積和(FMA:floating-point-multiply-add)ユニットのそれを強化するソフトウェア使用及びハードウェア実装を呈し、FMAユニットは値A、B、Cを入力してFMAユニットによって出力として値D=A*B+Cを計算する。
【0012】
提案される方法の恩恵は、ロード演算を実行するためにバイパスロジックが必要とされないことである。LRF内に第2の書き込みポートは必要とされない。更に、専用ロード命令及びデコードロジックが必要とされない。
【0013】
そうして、面積及び電力節約は有利であり得る。配線の複雑さ及びルーティング輻輳が低減される。方法は、全ての浮動小数点値、正規化及び非正規浮動小数点値をサポートする。
【0014】
方法は、低減されたコストで、単一命令複数データ(SIMD:single instruction multiple data)プロセッサ上での複数命令複数データ(MIMD:multiple instruction multiple data)のような実行を可能にする。
【0015】
方法は、通常はベクトル化可能とみなされないワークロードのベクトル化を可能にする。
【0016】
本発明の1つの実施形態に起因して、加えて又は代替的に、更に方法は、浮動小数点オペランドA、B、Cのうちの少なくとも1つを、置換ロジックによって提供する段階、及びオペランドA、B、Cを、置換ロジックの少なくとも1つの出力ポートへ伝搬される予め定義されたオペランド値セットの少なくとも1つの値に置換するように別個に構成可能であるように置換ロジックを構成する段階を少なくとも備え得る。そうして、置換ロジックは任意の浮動小数点値を変更せずに渡すこと、又は正しいIEEE準拠浮動小数点乗算、加算、又は積和演算を、soFMAユニットを用いて実行することを可能にする。
【0017】
本発明の1つの実施形態に起因して、加えて又は代替的に、置換ロジックは、マルチプレクサ回路として構成され得る。更に方法は、3つの浮動小数点オペランドA、B、Cのうちの少なくとも1つを、それぞれマルチプレクサ回路によって提供する段階、ここでマルチプレクサ回路はそれぞれの浮動小数点オペランドA、B、Cのための第1の入力ポート、及び予め定義されたオペランド値セットの少なくとも1つの値のための少なくとも第2の入力ポート、及び少なくとも1つの出力ポートを備える、及び入力ポートのうちの1つを、少なくとも1つの出力ポートへ伝搬されるために選択するように別個に構成可能であるようにマルチプレクサ回路を構成する段階を少なくとも備え得る。有利には、soFMAユニットのための入力値は、効率的な方法で制御され得る。
【0018】
本発明の方法の1つの実施形態に係り、入力オペランドA、B、Cのうちの1つ又は2つ又は3つ全ては、各々、マルチプレクサ回路によって提供され得る。soFMAユニットの第1の入力ポートのための第1のマルチプレクサ回路は、第1のオペランド値A又は値-0、+0、+1、-1を含むセットからの値のうちの1つを提供し得る。第2のオペランド値B及び第3のオペランド値Cに関しても、同様である。
【0019】
例えば第1のマルチプレクサ回路において値+1を選択することによって、soFMAユニットは、演算B+Cを実行する。方法は、soFMAユニットの入力マルチプレクサ回路の各々による選択をエンコードする選択コードを含む。例えば、オペランドA、B、Cのための3つのマルチプレクサ回路を有するsoFMAユニットに関して、値0、1、2、3、4、5、6、7、8、9、10、11を含む12個の異なる選択コードは、soFMAユニットによって実行される12個の異なる選択可能演算-0、C、A、A+C、B、B+C、A*B、A*B+C、C+1、1、-A+C、-B+Cに対応し得る。IEEE浮動小数点規格は、全ての入力オペランド値A、B、Cに対して、選択可能演算に対する正しい結果を可能にする。
【0020】
本発明の1つの実施形態に起因して、加えて又は代替的に、更に浮動小数点積和演算は、置換ロジックの構成を指定する選択コードパラメータを有する命令によってトリガされ得る。そうして、soFMAユニットのための入力値は、効率的な方法で制御され得る。
【0021】
本発明の1つの実施形態に起因して、加えて又は代替的に、更に予め定義されたオペランド値セットは、少なくとも値-0、+0、+1、-1を含むセットとして構成され得る。そうして、当該定数値は、適切な方式で浮動小数点演算を制御するために役立つ。
【0022】
本発明の1つの実施形態に起因して、加えて又は代替的に、更に入力ポートのうちの1つは、パラメータ-0、C、A、A+C、B、B+C、A*B、A*B+C、C+1、1、-A+C、-B+Cを備える選択可能演算に対応するセットのうちの少なくとも1つである選択コードパラメータによって、少なくとも1つの出力ポートへ伝搬されるために選択され得る。この方法によって、浮動小数点演算を実行するために必要とされるステップは、適切な方法で選択され得る。
【0023】
本発明の1つの実施形態に起因して、加えて又は代替的に、更に形式A0*B0+A1*B1+Cの浮動小数点積積和演算は、オペランドA0、A1、B0、B1、Cを含む入力浮動小数点オペランドを用いて実行され得る。そうして、方法は2つの任意の浮動小数点値の連結されたペアを、浮動小数点積積和(FMMA)ユニットを介してレジスタファイルへロードすることを可能にする。
【0024】
本発明の1つの実施形態に起因して、加えて又は代替的に、更に、浮動小数点オペランドはレジスタファイルによって入力オペランドとして提供され得、出力は置換ロジックから少なくとも2つの読み出しポート及び1つの書き込みポートを有するレジスタファイルによって受信され得る。特に、入力オペランドが提供されて、選択コードパラメータを有する命令によってトリガされ得る。そうして、任意の浮動小数点値を、soFMAユニットを介してレジスタファイルへロードすることが有利には可能である。
【0025】
本発明の1つの実施形態に起因して、加えて又は代替的に、更に、プロセッサが少なくとも1つの積和ユニットを各々有する装置の相互接続メッシュを備え、ここで各積和ユニットはデータ値の中間記憶のための少なくとも1つのローカルレジスタファイルを備える場合、浮動小数点積和演算は、置換ロジックの構成を指定する選択コードパラメータを有する命令によってトリガされ得る。
【0026】
本発明の方法の1つの実施形態は、各FMAユニットが値の中間記憶のためのローカルレジスタを有するFMAユニットの相互接続メッシュからなるデータフローデバイスのそれを強化する。そのようなデータフローデバイスにおいて、soFMAユニットは、メッシュからの値をローカルレジスタへストアすることをサポートために必要となるハードウェアを減らし得る。soFMAユニットの相互接続メッシュからなるデータフローデバイスは、より高いアプリケーション性能をもたらし得る。
【0027】
本発明の1つの実施形態に起因して、加えて又は代替的に、更に、プロセッサが少なくとも1つの積和ユニットを各々有する複数の装置を有する単一命令複数データデバイスを備え、装置毎のプレディケート値をプレディケートレジスタによって提供することが命令によって指定され得る場合、各装置に対する浮動小数点積和演算の実行を選択する。
【0028】
本発明の方法の更なる実施形態は、CPUコアにおける単一命令複数データ(SIMD)デバイスを強化する。SIMDデバイスは、複数のFMAユニットを含む。SIMDデバイスに関して、ソフトウェア命令は、FMA毎のプレディケート値を提供して、各FMAの命令の実行を選択するレジスタを指定し得る。soFMAユニットを有するSIMDデバイスにおいて、ソフトウェア命令は、soFMA毎の選択コードを提供して、各soFMAの命令の実行を選択するレジスタを指定し得る。soFMAユニットを有するSIMDデバイスは、FMAユニットを有するSIMDより高いアプリケーション性能をもたらし得る。soFMAユニットを有するSIMDデバイスは、MIMDデバイスの1つのタイプである。より高い性能は、3つの理由からもたらされる。不等演算のベクトル化が可能となり、故にSIMDデバイスの並列構造からの恩恵を可能にする。IF-ELSE文が減らされ得るか、又はプレディケートに代替され得るので、より少ない命令が必要とされる。IF-ELSE文の減少は、誤った分岐予測からもたらされる時間のかかるパイプラインフラッシュがより少ないことをもたらす。
【0029】
本発明の1つの実施形態に起因して、加えて又は代替的に、更に、プレディケートレジスタがプレディケート値を有するマルチビットプレディケートフィールドを備え、これが命令によって有効化される場合、装置のレーン上でプレディケート値が実行されて、各レーンに対するそれぞれのプレディケート値に基づいて個別のレーンの種類を変更し得る。そうして、方法は、以前の結果ベクトルに基づいて、個別のSIMDレーンの動的マルチビットプレディケーションを可能にする。
【0030】
本発明の1つの実施形態に起因して、加えて又は代替的に、装置の少なくとも1つの積和ユニットにおける内部演算の少なくとも1つのオペランドは、予め定義されたオペランド値セットの少なくとも1つの値に置換され得る。演算は、ロードストアユニットによって提供されるプレディケート値、以前の命令の結果、及び動的又は静的使用についての情報に基づいてプレディケートロジックによって選択コードパラメータへと指定及びデコードされるプレディケート値によってトリガされ得る。そうして、SIMDアプローチにおいて、方法は更に、プレディケートと併せて使用され、各個別のSIMDレーンが様々な演算を実行することを可能にし得る。
【0031】
更に、3つの入力浮動小数点オペランドA、B、Cを用いて、上記で説明された方法を用いて少なくとも1つの積和ユニット上で形式A*B+Cの浮動小数点積和演算を実行するための装置が提案され、浮動小数点オペランドA、B、Cのうちの少なくとも1つは、オペランドA、B、Cを、置換ロジックの少なくとも1つの出力ポートへ伝搬される予め定義されたオペランド値セットの少なくとも1つの値に置換するように別個に構成可能であるように構成されている置換ロジックによって提供される。
【0032】
装置は、少なくとも1つの選択可能演算浮動小数点積和(soFMA)ユニットを備える。soFMAユニットは、浮動小数点積和(FMA)ユニットのものを強化するソフトウェア使用及びハードウェア実装を呈し、FMAユニットは値A、B、Cを入力してFMAユニットによって出力として値D=A*B+Cを計算する。
【0033】
提案される装置の恩恵は、浮動小数点積和演算を実行するためにバイパスロジックが必要とされないことである。LRF内に第2の書き込みポートは必要とされない。更に、専用ロード命令及びデコードロジックが必要とされない。
【0034】
そうして、面積及び電力節約は有利であり得る。配線の複雑さ及びルーティング輻輳が低減される。装置は、全ての浮動小数点値、正規化及び非正規浮動小数点値をサポートする。
【0035】
本発明の1つの実施形態に起因して、加えて又は代替的に、置換ロジックはマルチプレクサ回路として構成され得、3つの浮動小数点オペランドA、B、Cのうちの少なくとも1つがマルチプレクサ回路によってそれぞれ提供される。マルチプレクサ回路はそれぞれの浮動小数点オペランドA、B、Cのための第1の入力ポート、予め定義されたオペランド値セットの少なくとも1つの値のための少なくとも第2の入力ポート、及び対応する第1の及び第2の入力ポートに割り当てられる少なくとも1つの出力ポートを備え得る。マルチプレクサ回路は、入力ポートのうちの1つを、少なくとも1つの出力ポートへ伝搬されるために選択するように別個に構成可能であるように構成され得る。
【0036】
実施形態に係り、入力オペランドA、B、Cのうちの1つ又は2つ又は3つ全ては、各々、マルチプレクサ回路によって提供され得る。soFMAユニットの第1の入力ポートのための第1のマルチプレクサ回路は、第1のオペランド値A又は値-0、+0、+1、-1を含むセットからの値のうちの1つを提供し得る。第2のオペランド値B及び第3のオペランド値Cに関しても、同様である。
【0037】
例えば第1のマルチプレクサ回路において値+1を選択することによって、soFMAユニットは、演算B+Cを実行する。方法は、soFMAユニットの入力マルチプレクサ回路の各々による選択をエンコードする選択コードを含む。例えば、オペランドA、B、Cのための3つのマルチプレクサ回路を有するsoFMAユニットに関して、値0、1、2、3、4、5、6、7、8、9、10、11を含む12個の異なる選択コードは、soFMAユニットによって実行される12個の異なる選択可能演算-0、C、A、A+C、B、B+C、A*B、A*B+C、C+1、1、-A+C、-B+Cに対応し得る。IEEE浮動小数点規格は、全ての入力オペランド値A、B、Cに対して、選択可能演算に対する正しい結果を可能にする。
【0038】
本発明の1つの実施形態に起因して、加えて又は代替的に、浮動小数点積和演算は、少なくとも1つの置換ロジックの構成を指定する選択コードパラメータを有する命令によってトリガされ得る。そうして、soFMAユニットのための入力値は、効率的な方法で制御され得る。
【0039】
本発明の1つの実施形態に起因して、加えて又は代替的に、予め定義されたオペランド値セットは、少なくとも値-0、+0、+1、-1を含むセットとして構成され得る。そうして、当該定数値は、適切な方式で浮動小数点演算を制御するために役立つ。
【0040】
本発明の1つの実施形態に起因して、加えて又は代替的に、入力ポートのうちの1つを、少なくとも1つの出力ポートへ伝搬されるために選択するために使用される選択コードパラメータは、-0、C、A、A+C、B、B+C、A*B、A*B+C、C+1、1、-A+C、-B+Cを備える選択可能演算に対応するセットのうちの少なくとも1つであり得る。この方法によって、浮動小数点演算を実行するために必要とされるステップは、適切な方法で選択され得る。
【0041】
本発明の1つの実施形態に起因して、加えて又は代替的に、装置は、3つの入力を有する少なくとも1つの積和ユニットを備え得、少なくとも1つの入力は、少なくとも1つの置換ロジックの出力から受信される。そうして、少なくとも1つの入力が、FMAユニットによって実行される浮動小数点演算を制御するために使用され得る。
【0042】
本発明の1つの実施形態に起因して、加えて又は代替的に、装置は少なくとも2つの読み出しポート及び1つの書き込みポートを有するレジスタファイルを備え得、レジスタファイルは入力オペランドを提供するために構成され得、出力を積和ユニットから受信するために構成され得る。特に、レジスタファイルは、選択コードパラメータを有する命令によってトリガされる入力オペランドを提供し得る。そうして、任意の浮動小数点値を、soFMAユニットを介してレジスタファイルへロードすることが有利には可能である。
【0043】
本発明の1つの実施形態に起因して、加えて又は代替的に、装置は、形式A0*B0+A1*B1+Cの浮動小数点積積和演算を、A0、A1、B0、B1、Cを含む入力浮動小数点オペランドを用いて実行するために構成され得る。そうして、装置は2つの任意の浮動小数点値の連結されたペアを、浮動小数点積積和(FMMA)ユニットを介してレジスタファイルへロードすることを可能にする。
【0044】
更に、浮動小数点積和演算を実行するための少なくとも1つの装置を備え、浮動小数点オペランドA、B、Cのうちの少なくとも1つが置換ロジックによってそれぞれ提供され、浮動小数点積和演算が置換ロジックの構成を指定する選択コードパラメータを有する命令によってトリガされる、プロセッサが提案される。
【0045】
有利には、プロセッサは、少なくとも1つの選択可能演算浮動小数点積和(soFMA)ユニットを有する少なくとも1つの装置を備える。soFMAユニットは、浮動小数点積和(FMA)ユニットのものを強化するソフトウェア使用及びハードウェア実装を呈し、FMAユニットは値A、B、Cを入力してFMAユニットによって出力として値D=A*B+Cを計算する。
【0046】
そのようなプロセッサは、有利な面積及び電力節約を呈する。配線の複雑さ及びルーティング輻輳が低減される。プロセッサは、全ての浮動小数点値、正規化及び非正規浮動小数点値をサポートする。
【0047】
本発明の1つの実施形態に起因して、加えて又は代替的に、プロセッサは、複数の装置を有する単一命令複数データデバイスを備え得、プレディケートレジスタは、装置毎にプレディケート値を提供する命令によって、各装置に対する浮動小数点積和演算の実行を選択するように指定される。
【0048】
実施形態は、CPUコアにおける単一命令複数データ(SIMD)デバイスを強化する。SIMDデバイスは、複数のFMAユニットを含む。SIMDデバイスに関して、ソフトウェア命令は、FMA毎のプレディケート値を提供して、各FMAの命令の実行を選択するレジスタを指定し得る。soFMAユニットを有するSIMDデバイスにおいて、ソフトウェア命令は、soFMA毎の選択コードを提供して、各soFMAの命令の実行を選択するレジスタを指定し得る。soFMAユニットを有するSIMDデバイスは、FMAユニットを有するSIMDより高いアプリケーション性能をもたらし得る。soFMAユニットを有するSIMDデバイスは、MIMDデバイスの1つのタイプである。
【0049】
本発明の1つの実施形態に起因して、加えて又は代替的に、プレディケートレジスタは、プレディケート値を有するマルチビットプレディケートフィールドを備え得、プレディケートフィールドは、装置のレーン上でプレディケート値を実行して各レーンに対するそれぞれのプレディケートに基づいて個別のレーンの種類を変更するために、命令によって有効化される。そうして、方法は、以前の結果ベクトルに基づいて、個別のSIMDレーンの動的マルチビットプレディケーションを可能にする。
【0050】
本発明の1つの実施形態に起因して、加えて又は代替的に、少なくとも1つの積和ユニットは、内部演算の少なくとも1つのオペランドを、予め定義されたオペランド値セットの少なくとも1つの値に置換するように構成され得る。演算は、ロードストアユニットによって提供されるプレディケート値、以前の命令の結果、及び動的又は静的使用についての情報に基づいてプレディケートロジックによって選択コードパラメータへと指定及びデコードされるプレディケート値によってトリガされ得る。そうして、SIMDアプローチにおいて、方法は更に、プレディケートと併せて使用され、各個別のSIMDレーンが様々な演算を実行することを可能にし得る。
【0051】
更に、3つの入力浮動小数点オペランドA、B、Cを用いて、少なくとも1つの積和ユニット上で、上記で説明された方法を用いて形式A*B+Cの浮動小数点積和演算を実行するための命令を含む非一時的機械可読媒体が提案され、オペランドA、B、Cのうちの少なくとも1つは、予め定義されたオペランド値セットの少なくとも1つの値に置換可能である。
【0052】
本発明の方法は、選択可能演算浮動小数点積和(soFMA)ユニットを使用する。soFMAユニットは、浮動小数点積和(FMA)ユニットのものを強化するソフトウェア使用及びハードウェア実装を呈し、FMAユニットは値A、B、Cを入力してFMAユニットによって出力として値D=A*B+Cを計算する。
【0053】
方法は、低減されたコストで、単一命令複数データ(SIMD)プロセッサ上での複数命令複数データ(MIMD)のような実行を可能にする。
【0054】
方法は、通常はベクトル化可能とみなされないワークロードのベクトル化を可能にする。
【図面の簡単な説明】
【0055】
本発明は上記で言及された及び他の目的及び利点と共に、実装形態の下記の詳細な説明から最も良好に理解され得るが、当該実装形態に限定されない。
【0056】
【
図1】本発明の1つの実施形態に係る、3つの入力浮動小数点オペランドA、B、Cを用いて、少なくとも1つの積和ユニット上で形式A*B+Cの浮動小数点積和演算を実行するための装置を示すブロック図である。
【0057】
【
図2】
図1に係る装置を有する本発明の1つの実施形態に係る、形式A*B+Cの浮動小数点乗算、加算、又は積和演算を実行するための演算を示すフローチャートである。
【0058】
【
図3】マルチプレクサ回路を使用する本発明の更なる実施形態に係る浮動小数点積和演算を実行するための装置を示す概略ブロック図である。
【0059】
【
図4】レジスタファイルを使用する本発明の更なる実施形態に係る浮動小数点積和演算を実行するための装置を示す概略ブロック図である。
【0060】
【
図5】プレディケートを使用する更なる実施形態に係る少なくとも1つの積和ユニットを有する複数の装置を有する単一命令複数データデバイスを備えるプロセッサを示す概略ブロック図である。
【0061】
【
図6】以前の結果ベクトルに基づいて個別のSIMDレーンの動的マルチビットプレディケーションを使用する更なる実施形態に係る少なくとも1つの積和ユニットを有する複数の装置を有する単一命令複数データデバイスを備えるプロセッサを示す概略ブロック図である。
【0062】
【
図7】更なる実施形態に係る動的プレディケートデコードロジックの例示的な実装を示す概略図である。
【0063】
【
図8】本発明の更なる実施形態に係る浮動小数点積積和演算を実行するための装置を示す概略ブロック図である。
【0064】
【
図9】本発明の更なる実施形態に係る例示的な行列乗算プログラムの演算を示すフローチャートである。
【発明を実施するための形態】
【0065】
図面において、同様の要素は同じ参照符号を用いて参照される。図面は、単に概略的な表現であり、本発明の具体的なパラメータを描写することを意図していない。更に、図面は本発明の典型的な実装形態を示すことのみを意図しており、したがって本発明の範囲を限定するものとしてみなされるべきではない。
【0066】
本明細書で説明される例示的な実施形態は、3つの入力浮動小数点オペランドA、B、Cを用いて、上記で説明された方法を用いて少なくとも1つの積和ユニット上で形式A*B+Cの浮動小数点積和演算を実行するための装置を提供し、浮動小数点オペランドA、B、Cのうちの少なくとも1つは、オペランドA、B、Cを、少なくとも1つの出力ポートへ伝搬される予め定義されたオペランド値セットの少なくとも1つの値に置換するように別個に構成可能であるように構成されている置換ロジックによって提供される。
【0067】
例示的な実施形態は更に、3つの入力浮動小数点オペランドA、B、Cを用いて、少なくとも1つの積和ユニット上で形式A*B+Cの浮動小数点積和演算を実行するための方法のために使用され得、オペランドA、B、Cのうちの少なくとも1つは、予め定義されたオペランド値セットの少なくとも1つの値に置換される。
【0068】
図1は、本発明の1つの実施形態に係る、3つの入力浮動小数点オペランドA、B、Cを用いて、少なくとも1つの積和ユニット15上で形式A*B+Cの浮動小数点積和演算を実行するための装置10を示す。
【0069】
装置10は、FMAユニット15及び3つのオペランド置換ロジックユニット94、95、96を備える処理タイルを表す。
【0070】
浮動小数点オペランドA、B、Cは置換ロジック94、95、96によって提供される。置換ロジック94、95、96は、オペランドA、B、Cを、FMAユニット15の入力90、91、92として置換ロジック94、95、96の少なくとも1つの出力ポート17、18、19へ伝搬される予め定義されたオペランド値セット50の少なくとも1つの値に置換するように別個に構成可能であるように構成されている。
【0071】
浮動小数点積和演算は、少なくとも1つの置換ロジック94、95、96の構成を指定する選択コードパラメータを有する命令16によってトリガされる。
【0072】
予め定義されたオペランド値セット50は、値-0、+0、+1、-1を含むセットとして少なくとも構成されている。
【0073】
積和ユニット15は、3つの入力90、91、92を備え、少なくとも1つの入力90、91、92は、少なくとも1つの置換ロジック94、95、96の出力17、18、19から受信される。
【0074】
浮動小数点積和演算は、置換ロジック94、95、96の構成を指定する選択コードパラメータを有する命令16によってトリガされる。
【0075】
オペランド置換ロジック94は、入力A、又は予め定義されたオペランド値セット50からの明確に定義された浮動小数点定数0x8000(-0.0)又は0x3E00(1.0)のうちの1つのいずれかを、FMAユニット15のオペランドAへ渡すようにモード制御入力によって構成され得る。オペランド置換ロジック95は、入力B、又は明確に定義された浮動小数点定数0x3E00(1.0)のいずれかを、FMAユニット15のオペランドBへ渡すようにモード制御入力によって構成され得る。オペランド置換ロジック96は、入力C、又は明確に定義された浮動小数点定数0x8000(-0.0)のいずれかを、FMAユニット15のオペランドCへ渡すようにモード制御入力によって構成され得る。
【0076】
FMAユニット15は、2つの入力(オペランドA及びオペランドB)を乗算し、その積に第3の入力(オペランドC)を加算することができる。3つのオペランド置換ロジックユニット94、95、96は、各オペランド置換ユニット94、95、96の置換モードであるモードA、モードB、モードCを個別にセットするための条件を有する現在のFMA命令コード16によって制御される。
【0077】
図2は、
図1に係る装置10を有する本発明の1つの実施形態に係る、形式A*B+Cの浮動小数点乗算、加算、又は積和演算を実行するためのフローチャートを示す。
【0078】
3つの浮動小数点入力オペランドA、B及びC(ステップS100、S102、S104における入力)は、それぞれモードA、モードB、モードCに基づいて、明確に定義された浮動小数点定数に個別に置換され得る。
【0079】
Aは、少なくとも-0.0(ステップS106、S108)又は1.0(ステップS114、S116)に置換されるか、又は変更されないまま(ステップS122、124)であり得る。Bは、少なくとも1.0(ステップS110、S112)に置換されるか、又は変更されないまま(ステップS118、S120)であり得る。Cは、少なくとも-0.0(ステップS132、S134)に置換されるか、又は変更されないまま(ステップS128、S130)であり得る。
【0080】
置換ステップの後、結果として得られるオペランドは、FMAユニット15によって処理されて、ステップS136において演算D=A*B+Cが生成される。個別の置換モードに基づいて、結果Dは選択可能演算-0.0、A、B、C、A*B、A+C、B+C、又はA*B+Cのうちの少なくともいずれかに対応する。結果Dは、ステップS138において出力のためにセットされる。無効モード例外は、ステップS126において出力のためにセットされる。
【0081】
各オペランドが-0.0、+0.0、-1.0、+1.0に置換されることを可能にする方法の拡張は、選択可能演算のセットを、少なくとも-0.0、+0.0、A、B、C、-A、-B、A*B、-A*B、A+C、B+C、A*B+C、-1.0、1.0、A+1.0、A-1.0、B+1.0、B-1.0、C+1.0、C-1.0へ、更に拡張する。
【0082】
図3は、マルチプレクサ回路11、12、13を使用する本発明の更なる実施形態に係る浮動小数点積和演算を実行するための装置10を示す。
【0083】
この実装形態は、任意の浮動小数点値を変更せずに渡すこと、又はFMAユニット15を用いて正しいIEEE準拠浮動小数点乗算、加算又は積和演算を実行することを可能にするためにマルチプレクサ回路11、12、13を用いて、
図1中で示された実装形態のオペランド置換ロジック94、95、96を実現する。
【0084】
処理タイルとしての装置10は、3つのオペランドマルチプレクサ回路11、12、13及びFMAユニット15を備える。
【0085】
3つの浮動小数点オペランドA、B、Cのうちの少なくとも1つは、それぞれマルチプレクサ回路11、12、13によってFMAユニット15へ提供される。マルチプレクサ回路11、12、13は、それぞれの浮動小数点オペランドA、B、Cのための第1の入力ポート80、81、82;83、84;85、86、予め定義されたオペランド値セット50の少なくとも1つの値のための少なくとも第2の入力ポート80、81、82;83、84;85、86、及び対応する第1の及び第2の入力ポート80、81、82;83、84;85、86へ割り当てられている少なくとも1つの出力ポート17、18、19を備える。マルチプレクサ回路11、12、13は、入力ポート80、81、82;83、84;85、86のうちの1つを、少なくとも1つの出力ポート17、18、19へ伝搬されるために選択するように別個に構成可能であるように構成されている。
【0086】
入力ポート80、81、82を有するマルチプレクサ回路11は、入力A、予め定義された値セット50からの定数0x8000(-0.0)又は定数0x3E00(1.0)のいずれかを選択するように構成され得る。入力ポート83、84を有するマルチプレクサ回路12は、入力B又は定数0x3E00(1.0)のいずれかを選択するように構成され得る。入力ポート85、86を有するマルチプレクサ回路13は、入力C又は定数0x8000(-0.0)のいずれかを選択するように構成され得る。
【0087】
FMAユニット15は、入力90、91からの2つの入力(オペランドA及びオペランドB)を乗算し、積Dに入力92からの第3の入力(オペランドC)を加算することができる。
【0088】
マルチプレクサ回路11、12、13の選択ポートは、
図1中で示される装置10のオペランド置換ユニット94、95、96のモード制御入力に対応し、現在の命令16によって制御される。
【0089】
入力ポート80、81、82;83、84;85、86のうちの1つは、パラメータ-0、C、A、A+C、B、B+C、A*B、A*B+C、C+1、1、-A+C、-B+Cを含む選択可能演算に対応するセットのうちの少なくとも1つである選択コードパラメータによって、対応する少なくとも1つの出力ポート17、18、19へ伝搬されるために選択され得る。
【0090】
図4は、レジスタファイル14を使用する本発明の更なる実施形態に係る浮動小数点積和演算を実行するための装置10を示す。
【0091】
処理タイルとしての装置10は、3つのオペランドマルチプレクサ回路11、12、13、ローカルレジスタファイル(LRF)14及びFMAユニット15を備える。
【0092】
レジスタファイル14は、第1の読み出しポート52及び第2の読み出しポート54及び1つの書き込みポート56を備える。レジスタファイル14は、入力オペランド68、69を提供するために構成されており、出力67を積和ユニット15から受信し、特に選択コードパラメータを有する命令16によってトリガされる入力オペランド68、69を提供するために構成されている。
【0093】
選択コードパラメータは、入力ポート(
図3に対応する)のうちの1つを、少なくとも1つの出力ポート17、18、19へ伝搬されるために選択するために使用され、-0、C、A、A+C、B、B+C、A*B、A*B+C、C+1、1、-A+C、-B+Cを含む選択可能演算に対応するセットのうちの少なくとも1つである。
【0094】
マルチプレクサ回路11は、処理タイルの西入力60からのデータソース、処理タイルの北入力62からのデータソース、又は定数0x8000(-0.0)のいずれかを選択するように構成され得る。
【0095】
別の実施形態において、データソースは、本発明の方法から逸脱せずに、例えば、東入力から、及び南入力からの別の方角を有し得る。
【0096】
マルチプレクサ回路12は、レジスタファイル14の読み出しポート52又は定数0x3E00(1.0)のいずれかを、入力オペランド68として選択するように構成され得る。マルチプレクサ回路13は、北入力62からのデータソース、レジスタファイル14の読み出しポート54、又は定数0x8000(-0.0)のいずれかを選択するように構成され得る。
【0097】
ローカルレジスタファイル14は、第1の読み出しポート52及び第2の読み出しポート54及び1つの書き込みポート56を有するレジスタファイルである。
【0098】
FMAユニット15は、2つの入力(オペランドA及びオペランドB)を乗算し、積Dへ第3の入力(オペランドC)を加算したものを出力67とすることができ、これは南出力66又はレジスタファイル14の書き込みポート56へ伝搬され得る。
【0099】
下記の表において、北入力62からの任意の浮動小数点値をFMAユニット15を介してローカルレジスタファイル14へロードするための選択コードパラメータを有するマルチプレクサ回路11、12、13のオペランドの例示的なセットアップが示される。
【表1】
【0100】
下記の表において、西入力60からの浮動小数点値をローカルレジスタファイル14からの浮動小数点値と乗算し、ローカルレジスタファイル14からの別の浮動小数点値を加算するための選択コードパラメータを有するマルチプレクサ回路11、12、13のオペランドの例示的なセットアップが示される。結果は、ローカルレジスタファイル14に書き込まれるか、又は南出力66へ渡される。
【表2】
【0101】
プロセッサ100が少なくとも1つの積和ユニット15、25、35、45を各々有する装置10の相互接続メッシュを備え、ここで各積和ユニット15、25、35、45はデータ値の中間記憶のための少なくとも1つのローカルレジスタファイル14を備える場合、浮動小数点積和演算は、置換ロジック94、95、96の構成を指定する選択コードパラメータを有する命令16によってトリガされる。
【0102】
図5は、プレディケート42を使用する更なる実施形態に係る、少なくとも1つの積和ユニット15、25、35を各々有する複数の装置10、20、30を有する単一命令複数データデバイスを備えるプロセッサ100を示す。
【0103】
プロセッサ100は、浮動小数点積和演算を実行するための少なくとも1つの装置10を備え、浮動小数点オペランドA、B、Cのうちの少なくとも1つがそれぞれ置換ロジック94、95、96によって提供される。浮動小数点積和演算は、置換ロジック94、95、96の構成を指定する選択コードパラメータを有する命令16によってトリガされ得る。置換ロジック94、95、96は、マルチプレクサ回路11、12、13、21、22、23、31、32、33として実現され得る。
【0104】
図5中に示されるプロセッサ100は、複数の装置10、20、30を有する単一命令複数データデバイスを備え、プレディケートレジスタ40は、装置10毎にプレディケート値42を提供する命令16によって、各装置10に対する浮動小数点積和演算の実行を選択するように指定される。
【0105】
プレディケートレジスタ40は、プレディケート値42を含むマルチビットプレディケートフィールド44を備える。プレディケートフィールド44は、命令16によって、装置10、20、30のレーン70、71、72上でプレディケート値42を実行して、各レーン70、71、72に対するそれぞれのプレディケート42に基づいて個別のレーン70、71、72の種類を変更するように有効化される。
【0106】
少なくとも1つの積和ユニット15、25、35は、内部演算の少なくとも1つのオペランドを、予め定義されたオペランド値セット50の少なくとも1つの値に置換するように構成されている。演算は、プレディケート値42に基づいてプレディケートロジック77、78、79によって選択コードパラメータへと指定及びデコードされるプレディケート値42によってトリガされる。
【0107】
装置10、20、30は、N個の同一SIMDレーン70、71、72を表し、ここでNは自然数であり、各々が3つのオペランドマルチプレクサ回路11、12、13;21、22、23;31、32、33、
図4中に示される実装形態と同様のFMAユニット15、25、35、及びプレディケートデコードロジック77、78、79を備える。
【0108】
N個のマルチビットプレディケートフィールド44から構成されるプレディケートレジスタ40は、以下となるように、全てのN個のSIMDレーン70、71、72上で実行される、各レーン70、71、72に対してそれぞれのプレディケート42に基づいて個別のレーン70、71、72の種類を変更するFMA命令を有効化する:
プレディケート値0は、-0をもたらす。
プレディケート値1は、演算A*B+Cをもたらす。
プレディケート値2は、特に乗算ユニットを使用したかのように正しい+0又は-0を有する、演算A*Bをもたらす。
プレディケート値3は、特に加算ユニットを使用したかのように正しい+0又は-0を有する、演算A+Cをもたらす。
プレディケート値4は、特に加算ユニットを使用したかのように正しい+0又は-0を有する、演算B+Cをもたらす。
プレディケート値5は、特にAの全ての値に対して入力Aにビット単位で同一である、Aをもたらす。
プレディケート値6は、特にBの全ての値に対して入力Bにビット単位で同一である、Bをもたらす。
プレディケート値7は、特にCの全ての値に対して入力Cにビット単位で同一の結果である、Cをもたらす。
【0109】
別の実施形態において、プレディケート42は、命令16内にエンコードされ得る。
【0110】
図5中に示される8つの演算のセットは、2つの更なる演算:1をもたらすプレディケート値、及び1+Cをもたらすプレディケート値によって拡張され得る。これら2つの演算の潜在的な使用は、例えばプレディケート値に基づいて、カウンタの増分を行うか又は行わないことである。
【0111】
所与の実装は、上記の10個の可能な演算から選ぶための4つのプレディケートビットを有し得る。2つのプレディケートビットを有する所与の実装は、上記の10個の演算のうちの任意の4つをサポートし得る。3つのプレディケートビットを有する所与の実装は、上記の10個の演算のうちの任意の8つをサポートし得る。
【0112】
図6は、以前の結果ベクトルに基づいて個別のSIMDレーン70、71、72の動的マルチビットプレディケーションを使用する更なる実施形態に係る、少なくとも1つの積和ユニット15、25、35を各々有する複数の装置10、20、30を有する単一命令複数データデバイスを備えるプロセッサ100を示す。
【0113】
装置10の少なくとも1つの積和ユニット15、25、35における内部演算の少なくとも1つのオペランドは、予め定義されたオペランド値セット50の少なくとも1つの値に置換される。演算は、ロードストアユニット46によって提供されるプレディケート値42、以前の命令16の結果76、及び動的又は静的使用についての情報73に基づいてプレディケートロジック77、78、79によって選択コードパラメータへと指定及びデコードされるプレディケート値42によってトリガされる。
【0114】
以前のSIMD命令の結果76を含むベクトルレジスタ74が追加されて、動的プレディケーションが可能にされる。以前の結果76は、少なくとも2つの可能な値0又は1の範囲を有する。1つの実装形態において、ベクトルレジスタ74は、SIMDレーン70、71、72毎の以前のSIMD命令の一次結果76を保持するレジスタ又はレジスタファイルであり得る。別の実施形態において、ベクトルレジスタ74は、SIMDレーン毎の条件コード、例えば比較、最小値、最大値をサポートする以前のSIMD命令の二次結果として条件コードを保持する条件コードレジスタであり得る。
【0115】
命令コード16は、少なくとも1ビットだけ拡張されて、動的プレディケーションが可能にされる。命令コード16はここで、少なくとも1つのオペコードフィールド、FMA命令であることを表す一意コード、及び動的プレディケーションを示す1つのフィールド73を含む。任意選択で、それは加えて、複数のプレディケートレジスタ40が存在する場合、プレディケートレジスタインデックスのための1つの更なるフィールド41を含み得る。任意選択で、それは加えて、実装形態が動的プレディケーションに関するレジスタファイル74内の以前のSIMD命令の一次結果を使用する場合、レジスタインデックスのための1つの更なるフィールド75を含み得る。
【0116】
SIMDプレディケートレジスタ40の各レーン70、71、72は更に、len(range(condition code))個の予めコンパイルされたプレディケートに分割される。
【0117】
プレディケートレジスタ40は、例えばロード/ストアユニット46、又はデータをメモリから又は直近の命令フィールドからレジスタへ移動する能力を有する同様のユニットによって書き込まれ得る。
【0118】
SIMDレーン70、71、72毎のプレディケートデコードロジック77、78、79は、以下となるように、
図5中で示される実装形態内のプレディケートデコードロジック77、78、79と比較して拡張される:
動的プレディケーションが命令コード16内のそれぞれのビット73によって有効化される場合、特定のレーン70、71、72のための条件コードの値は、特定のレーン70、71、72に対するプレディケートレジスタ40からの予めコンパイルされたプレディケート42のうちの1つ、すなわち、predicate.<lane_id>[condition code_value]を選択する。
動的プレディケーションが無効化される場合、予めコンパイルされたプレディケート42の最初のもの、すなわちpredicate.<lane_id>[0]が選択される。
【0119】
別の実装形態は、条件コードの代わりに、以前の命令の一次結果を使用し得る。
【0120】
図7は、更なる実施形態に係る、
図6中に示される実装形態の第1のレーン70内で使用される動的プレディケートデコードロジック77の例示的な実装を示す。
【0121】
簡略化のため、以前の結果ベクトル76は、例えば、2つのベクトルX及びYの間の一般化ベクトル比較の結果である4つの可能な値の範囲をSIMDレーン70、71、72毎に有することが仮定され、ここで要素毎の結果は、x!=yの場合は0、x==yの場合は1、x<yの場合は2、x<=yの場合は3である。
【0122】
マルチプレクサ回路87は、浮動小数点積和演算を実行するためにマルチプレクサ11、12、13を備えるそのレーン70のための予めコンパイルされたプレディケート値42のうちの1つを選択するために使用される。
【0123】
マルチプレクサ回路87のための選択信号は、以前の結果76によって制御され、それによって、拡張されたFMA命令コードの「動的」ビット73へ接続されている第1の入力及び以前の結果76へ接続されている第2の入力を有する追加のANDゲート97は、動的プレディケーションが無効化される場合に選択を「0」に強制する。
【0124】
マルチプレクサ回路87の出力は、第1のレーン70のオペランドマルチプレクサ回路11、12、13に対する選択信号を得るために、反転された第1の入力[1]及び第2の入力[2]を有する1つのANDゲート98を備えるデコードロジック77に接続されている。
【0125】
図8は、本発明の更なる実施形態に係る浮動小数点積積和演算を実行するための装置10を示す。
【0126】
装置10は、形式A0*B0+A1*B1+Cの浮動小数点積積和演算を、A0、A1、B0、B1、Cを含む入力浮動小数点オペランドを用いて実行するために構成されている。
【0127】
装置10は、2つの任意の浮動小数点値の連結されたペアを浮動小数点積積和(FMMA)ユニット45を通してレジスタファイル14へロードすることを可能にする。
【0128】
処理タイルとしての装置10は、3つのオペランドマルチプレクサ回路11、12、13、ローカルレジスタファイル(LRF)14及びFMMAユニット45を備える。
【0129】
マルチプレクサ回路11は、西入力60からのデータソース、北入力62からのデータソース、又は予め定義されたセット50からの連結された定数ペア0x8000(-0.0、+0.0)のいずれかを選択するように構成され得る。マルチプレクサ回路12は、レジスタファイル14の読み出しポート52又は定数0x3E00(1.0、+0.0)のいずれかを選択するように構成され得る。マルチプレクサ回路13は、北入力62からのデータソース、レジスタファイル14の読み出しポート54、又は定数0x8000(-0.0)のいずれかを選択するように構成され得る。
【0130】
ローカルレジスタファイル14は、2つの読み出しポート52、54及び1つの書き込みポート56を有するレジスタファイルである。
【0131】
FMMAユニット45は、オペランドAの第1の半分(A0)とオペランドBの第1の半分(B0)、及びオペランドAの第2の半分(A1)とオペランドBの第2の半分(B1)を乗算し、次に2つの積の合計A0*B0+A1*B1を行い、第3の入力(オペランドC)をその積の合計に加算し得る。
【0132】
下記の表において、北入力62からの任意の浮動小数点値をFMMAユニット45を介してローカルレジスタファイル14へロードするための選択コードパラメータを有するマルチプレクサ回路11、12、13のオペランドの例示的なセットアップが示される。
【表3】
【0133】
図9は、本発明の更なる実施形態に係る例示的な行列乗算プログラムのフローチャートを示す。行列内にストアされた情報は、AIアプリケーションにおいて広範囲に使用され得る。高スループット且つ高効率の演算は、例えば、AIアクセラレータを動作させるために不可欠である。本発明の実施形態に係るFMAユニットは、浮動小数点データを、著しいハードウェアオーバヘッドなく論理レジスタファイルへロードするための効率的なインフラストラクチャとして機能し得る。
【0134】
ステップS200において列インデックスIを0に初期化した後、まず第2の行列(MatB)の8つの要素の列がFMAユニットを介して、ローカルレジスタファイル(LRF)へロードされる(ステップS204)。要素番号は、ステップS206において増加され、ステップS202において8よりも小さいかがチェックされる。次に、第1の行列(MatA)の4つの行の各々に対して、FMAユニットを介して、8つの要素がLRF内にストアされている他方の8つの要素と乗算及び累算される(ステップS214)。列の要素番号は、ステップS212においてチェックされ、当該番号が8に等しくなるまでステップS216において増加される。行番号は、ステップS218においてチェックされ、当該番号が4に等しくなるまでステップS220において増加される。
【0135】
簡略化のため、例は、実際にはリードビフォアライトハザードを避けるためにパイプライン設計において必要とされるインターリーブされた計算順序を使用していない。
【0136】
選択可能演算FMAユニットを有する静的予測を使用する利点は、従来ではベクトル化可能でない問題を計算することによって実証され得る。現行技術水準のプロセッサ上で従来ではベクトル化可能でない問題を計算する高レベル疑似コードについて、
D[0]=A[0]*B[0]+C[0];
D[1]=C[1];
D[2]=B[2]+C[2];
X[3]=-0.0;
静的予測と同じ問題を計算する疑似アセンブリコードはこのようになる。
【表4】
【0137】
そうして、本発明の1つの実施形態に係るsoFMAユニットを使用して、非常に短く且つ簡潔なコードが結果として得られる。
【0138】
選択可能演算FMAユニットを有する動的予測を使用する利点は、従来ではベクトル化可能でない問題を計算することによって実証され得る。現行技術水準のプロセッサ上で従来ではベクトル化可能でない問題を計算する高レベル疑似コードについて、
【表5】
動的プレディケーションを用いて、提案されたsoFMA上で同じ問題を計算する疑似アセンブリコードはこのようになる:
【表6】
【0139】
動的予測も、非常に短く且つ簡潔なコードをもたらす。
【0140】
本開示の更なる例示的な実装形態は、下記に番号付き条項で記載される:
【0141】
番号付き条項1:3つの入力浮動小数点オペランド(A、B、C)を用いて、少なくとも1つの積和ユニット(15、25、35、45)上で形式A*B+Cの浮動小数点積和演算を実行するためのプロセッサ実装方法であって、
前記オペランド(A、B、C)のうちの少なくとも1つは、予め定義されたオペランド値セット(50)の少なくとも1つの値に置換される、プロセッサ実装方法。
【0142】
番号付き条項2:
・前記浮動小数点オペランド(A、B、C)のうちの少なくとも1つを、置換ロジック(94、95、96)によって提供する段階、
・前記オペランド(A、B、C)を、前記置換ロジック(94、95、96)の少なくとも1つの出力ポート(17、18、19)へ伝搬される前記予め定義されたオペランド値セット(50)の前記少なくとも1つの値に置換するように別個に構成可能であるように前記置換ロジック(94、95、96)を構成する段階
を更に少なくとも備える、条項1に記載の方法。
【0143】
番号付き条項3:
前記置換ロジック(94、95、96)はマルチプレクサ回路(11、12、13)として構成されており、
前記方法は更に、
・前記3つの浮動小数点オペランド(A、B、C)のうちの少なくとも1つを、それぞれ前記マルチプレクサ回路(11、12、13)によって提供する段階、ここで前記マルチプレクサ回路(11、12、13)は前記それぞれの浮動小数点オペランド(A、B、C)のための第1の入力ポート(80、81、82;83、84;85、86)、及び予め定義されたオペランド値セット(50)の少なくとも1つの値のための少なくとも第2の入力ポート(80、81、82;83、84;85、86)、及び少なくとも1つの出力ポート(17、18、19)を備える、
・前記入力ポート(80、81、82;83、84;85、86)のうちの1つを、前記少なくとも1つの出力ポート(17、18、19)へ伝搬されるために選択するように別個に構成可能であるように前記マルチプレクサ回路(11、12、13)を構成する段階
を少なくとも備える、条項1又は2に記載の方法。
【0144】
番号付き条項4:更に、前記浮動小数点積和演算を、前記置換ロジック(94、95、96)の前記構成を指定する選択コードパラメータを有する命令(16)によってトリガする、条項1~3のいずれか一項に記載の方法。
【0145】
番号付き条項5:更に、前記予め定義されたオペランド値セット(50)を、少なくとも値-0、+0、+1、-1を含むセットとして構成する、条項1~4のいずれか一項に記載の方法。
【0146】
番号付き条項6:更に、前記入力ポート(80、81、82;83、84;85、86)のうちの1つを、パラメータ-0、C、A、A+C、B、B+C、A*B、A*B+C、C+1、1、-A+C、-B+Cを備える選択可能演算に対応するセットのうちの少なくとも1つである前記選択コードパラメータによって、前記少なくとも1つの出力ポート(17、18、19)へ伝搬されるために選択する、条項3~5のいずれか一項に記載の方法。
【0147】
番号付き条項7:更に、形式A0*B0+A1*B1+Cの浮動小数点積積和演算を、オペランドA0、A1、B0、B1、Cを備える入力浮動小数点オペランドを用いて実行する、条項1~6のいずれか一項に記載の方法。
【0148】
番号付き条項8:更に、浮動小数点オペランドを、レジスタファイル(14)によって入力オペランド(68、69)として提供し、前記置換ロジック(94、95、96)からの出力(67)を、少なくとも2つの読み出しポート(52、54)及び1つの書き込みポート(56)を有するレジスタファイル(14)によって受信し、特に選択コードパラメータを有する前記命令(16)によってトリガされる前記入力オペランド(68、69)を提供する、条項1~7のいずれか一項に記載の方法。
【0149】
番号付き条項9:更に、プロセッサ(100)が少なくとも1つの積和ユニット(15、25、35、45)を各々有する装置(10)の相互接続メッシュを備え、ここで各積和ユニット(15、25、35、45)はデータ値の中間記憶のための少なくとも1つのローカルレジスタファイル(14)を備える場合、前記浮動小数点積和演算を、前記置換ロジック(94、95、96)の構成を指定する選択コードパラメータを有する命令(16)によってトリガする、条項1~8のいずれか一項に記載の方法。
【0150】
番号付き条項10:更に、プロセッサ(100)が少なくとも1つの積和ユニット(15、25、35、45)を各々有する複数の装置(10)を有する単一命令複数データデバイスを備え、ここで装置(10)毎のプレディケート値(42)をプレディケートレジスタ(40)によって提供することが命令(16)によって指定される場合、各装置(10)に対する浮動小数点積和演算の実行を選択する、条項1~9のいずれか一項に記載の方法。
【0151】
番号付き条項11:更に、前記プレディケートレジスタ(40)が前記プレディケート値(42)を有するマルチビットプレディケートフィールド(44)を備え、これが前記命令(16)によって有効化される場合、装置(10、20、30)のレーン(70、71、72)上でプレディケート値(42)を実行して、各レーン(70、71、72)に対する前記それぞれのプレディケート値(42)に基づいて個別のレーン(70、71、72)の種類を変更する、条項10に記載の方法。
【0152】
番号付き条項12:装置(10)の前記少なくとも1つの積和ユニット(15、25、35、45)における内部演算の少なくとも1つのオペランドは、予め定義されたオペランド値セット(50)の少なくとも1つの値に置換され、
前記演算は、ロードストアユニット(46)によって提供されるプレディケート値(42)、以前の命令(16)の結果(76)、及び動的又は静的使用についての情報(73)に基づいてプレディケートロジック(77、78、79)によって選択コードパラメータへと指定及びデコードされるプレディケート値(42)によってトリガされる、
条項10又は11に記載の方法。
【0153】
番号付き条項13:3つの入力浮動小数点オペランド(A、B、C)を用いて、条項1~12のいずれか一項に記載の方法を用いて少なくとも1つの積和ユニット(15、25、35、45)上で形式A*B+Cの浮動小数点積和演算を実行するための装置(10)であって、
前記浮動小数点オペランド(A、B、C)のうちの少なくとも1つは、前記オペランド(A、B、C)を、前記置換ロジック(94、95、96)の少なくとも1つの出力ポート(17、18、19)へ伝搬される前記予め定義されたオペランド値セット(50)の前記少なくとも1つの値に置換するように別個に構成可能であるように構成されている置換ロジック(94、95、96)によって提供される、装置(10)。
【0154】
番号付き条項14:前記置換ロジック(94、95、96)はマルチプレクサ回路(11、12、13)として構成されており、前記3つの浮動小数点オペランド(A、B、C)のうちの少なくとも1つは、それぞれ前記マルチプレクサ回路(11、12、13)によって提供され、前記マルチプレクサ回路(11、12、13)は:
前記それぞれの浮動小数点オペランド(A、B、C)のための第1の入力ポート(80、81、82;83、84;85、86)、
予め定義されたオペランド値セット(50)の少なくとも1つの値のための少なくとも第2の入力ポート(80、81、82;83、84;85、86)、及び
前記対応する第1の及び第2の入力ポート(80、81、82;83、84;85、86)に割り当てられる少なくとも1つの出力ポート(17、18、19)を備え、
前記マルチプレクサ回路(11、12、13)は、前記入力ポート(80、81、82;83、84;85、86)のうちの1つを、前記少なくとも1つの出力ポート(17、18、19)へ伝搬されるために選択するように別個に構成可能であるように構成されている、
条項13に記載の装置。
【0155】
番号付き条項15:前記浮動小数点積和演算は、前記少なくとも1つの置換ロジック(94、95、96)の構成を指定する選択コードパラメータを有する命令(16)によってトリガされる、条項13又は14に記載の装置。
【0156】
番号付き条項16:前記予め定義されたオペランド値セット(50)は、少なくとも値-0、+0、+1、-1を含むセットとして構成されている、条項13~15のいずれか一項に記載の装置。
【0157】
番号付き条項17:前記入力ポート(80、81、82;83、84;85、86)のうちの1つを、前記少なくとも1つの出力ポート(17、18、19)へ伝搬されるために選択するために使用される前記選択コードパラメータは、-0、C、A、A+C、B、B+C、A*B、A*B+C、C+1、1、-A+C、-B+Cを備える選択可能演算に対応するセットのうちの少なくとも1つである、条項15又は16に記載の装置。
【0158】
番号付き条項18:3つの入力(90、91、92)を有する少なくとも1つの積和ユニット(15、25、35、45)を備え、少なくとも1つの入力(90、91、92)は、前記少なくとも1つの置換ロジック(94、95、96)の出力(17、18、19)から受信される、条項13~17のいずれか一項に記載の装置。
【0159】
番号付き条項19:少なくとも2つの読み出しポート(52、54)及び1つの書き込みポート(56)を有するレジスタファイル(14)を備え、前記レジスタファイル(14)は、入力オペランド(68、69)を提供するために構成されており、前記積和ユニット(15、25、35、45)からの出力(67)を受信するために、特に選択コードパラメータを有する前記命令(16)によってトリガされる前記入力オペランド(68、69)を提供するために構成されている、条項13~18のいずれか一項に記載の装置。
【0160】
番号付き条項20:形式A0*B0+A1*B1+Cの浮動小数点積積和演算を、A0、A1、B0、B1、Cを備える入力浮動小数点オペランドを用いて実行するために構成されている、条項13~19のいずれか一項に記載の装置。
【0161】
番号付き条項21:条項13~20のいずれか一項に記載の浮動小数点積和演算を実行するための少なくとも1つの装置(10)を備え、前記浮動小数点オペランド(A、B、C)のうちの少なくとも1つは、置換ロジック(94、95、96)によってそれぞれ提供され、前記浮動小数点積和演算は、前記置換ロジック(94、95、96)の構成を指定する選択コードパラメータを有する命令(16)によってトリガされる、プロセッサ(100)。
【0162】
番号付き条項22:複数の装置(10)を有する単一命令複数データデバイスを備え、プレディケートレジスタ(40)は、装置(10)毎のプレディケート値(42)を提供する命令(16)によって、各装置(10)に対する浮動小数点積和演算の実行を選択するように指定される、条項21に記載のプロセッサ。
【0163】
番号付き条項23:前記プレディケートレジスタ(40)が前記プレディケート値(42)を有するマルチビットプレディケートフィールド(44)を備え、前記プレディケートフィールド(44)は、前記命令(16)によって、装置(10、20、30)のレーン(70、71、72)上で前記プレディケート値(42)を実行して、各レーン(70、71、72)に対する前記それぞれのプレディケート(42)に基づいて個別のレーン(70、71、72)の種類を変更するように有効化される、条項22に記載のプロセッサ。
【0164】
番号付き条項24:前記少なくとも1つの積和ユニット(15、25、35、45)は、内部演算の少なくとも1つのオペランドを予め定義されたオペランド値セット(50)の少なくとも1つの値に置換するように構成されており、
前記演算は、ロードストアユニット(46)によって提供されるプレディケート値(42)、以前の命令(16)の結果(76)、及び動的又は静的使用についての情報(73)に基づいてプレディケートロジック(77、78、79)によって選択コードパラメータへと指定及びデコードされるプレディケート値(42)によってトリガされる、
条項22又は23に記載のプロセッサ。
【0165】
番号付き条項25:少なくとも1つの積和ユニット(15、25、35、45)上で、3つの入力浮動小数点オペランド(A、B、C)を用いて、
条項1~12のいずれか一項に記載の方法を用いて、形式A*B+Cの浮動小数点積和演算を実行するための命令を備える非一時的機械可読媒体であって、
前記オペランド(A、B、C)のうちの少なくとも1つは、予め定義されたオペランド値セット(50)の少なくとも1つの値に置換可能である、非一時的機械可読媒体。
【手続補正書】
【提出日】2024-05-07
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
少なくとも1つの積和ユニット上で形式A*B+Cの浮動小数点積和演算を実行するためのプロセッサ実装方法であって、
3つの入力浮動小数点オペランドA、B、C、ここで、前記入力浮動小数点オペランドA、B、Cのうちの少なくとも1つは、予め定義されたオペランド値セットの少なくとも1つの値に置換される、
を備える、プロセッサ実装方法。
【請求項2】
前記入力浮動小数点オペランドA、B、Cのうちの少なくとも1つを、置換ロジックによって提供する段階;及び
前記入力浮動小数点オペランドA、B、Cを、前記置換ロジックの少なくとも1つの出力ポートへ伝搬される前記予め定義されたオペランド値セットの前記少なくとも1つの値に置換するように別個に構成可能であるように前記置換ロジックを構成する段階
を更に備える、請求項1に記載のプロセッサ実装方法。
【請求項3】
前記置換ロジックはマルチプレクサ回路として構成されており、前記プロセッサ実装方法は:
前記3つの入力浮動小数点オペランドA、B、Cのうちの少なくとも1つを、それぞれ前記マルチプレクサ回路によって提供する段階、ここで前記マルチプレクサ回路はそれぞれの前記入力浮動小数点オペランドA、B、Cのための第1の入力ポート、及び予め定義されたオペランド値セットの少なくとも1つの値のための少なくとも第2の入力ポート、及び少なくとも1つの出力ポートを備える;及び
前記第1の入力ポート及び前記第2の入力ポートのうちの1つを、前記少なくとも1つの出力ポートへ伝搬されるために選択するように別個に構成可能であるように前記マルチプレクサ回路を構成する段階
を更に備える、請求
項2に記載のプロセッサ実装方法。
【請求項4】
前記浮動小数点積和演算を、前記置換ロジックの前記構成を指定する選択コードパラメータを有する命令によってトリガする段階
を更に備える、請求項
2に記載のプロセッサ実装方法。
【請求項5】
前記予め定義されたオペランド値セットを、少なくとも値-0、+0、+1、-1を含むセットとして構成する段階
を更に備える、請求項
1に記載のプロセッサ実装方法。
【請求項6】
前記第1の入力ポート及び前記第2の入力ポートのうちの1つを、パラメータ-0、C、A、A+C、B、B+C、A*B、A*B+C、C+1、1、-A+C、-B+Cを備える選択可能演算に対応するセットのうちの少なくとも1つである選択コードパラメータによって、前記少なくとも1つの出力ポートへ伝搬されるために選択する段階
を更に備える、請求項
3に記載のプロセッサ実装方法。
【請求項7】
形式A0*B0+A1*B1+Cの浮動小数点積積和演算を、オペランドA0、A1、B0、B1、Cを備える入力浮動小数点オペランドを用いて実行する段階
を更に備える、請求項
1に記載のプロセッサ実装方法。
【請求項8】
浮動小数点オペランドを、レジスタファイルによって入力オペランドとして提供し、前記置換ロジックからの出力を、少なくとも2つの読み出しポート及び1つの書き込みポートを有するレジスタファイルによって受信し、特に選択コードパラメータを有する命令によってトリガされる前記入力オペランドを提供する段階
を更に備える、請求
項2に記載のプロセッサ実装方法。
【請求項9】
プロセッサが少なくとも1つの積和ユニットを各々有する装置の相互接続メッシュを備え、ここで各積和ユニットはデータ値の中間記憶のための少なくとも1つのローカルレジスタファイルを備える場合、前記浮動小数点積和演算を、前記置換ロジックの構成を指定する選択コードパラメータを有する命令によってトリガする段階
を更に備える、請求
項2に記載のプロセッサ実装方法。
【請求項10】
プロセッサが少なくとも1つの積和ユニットを各々有する複数の装置を有する単一命令複数データデバイスを備え、ここで装置毎のプレディケート値をプレディケートレジスタによって提供することが命令によって指定される場合、各装置に対する浮動小数点積和演算の実行を選択する段階
を更に備える、請求項
1に記載のプロセッサ実装方法。
【請求項11】
前記プレディケートレジスタが前記プレディケート値を有するマルチビットプレディケートフィールドを備え、これが前記命令によって有効化される場合、装置のレーン上でプレディケート値を実行して、各レーンに対するそれぞれの前記プレディケート値に基づいて個別のレーンの種類を変更する段階
を更に備える、請求項10に記載のプロセッサ実装方法。
【請求項12】
装置の前記少なくとも1つの積和ユニットにおける内部演算の少なくとも1つのオペランドは、予め定義されたオペランド値セットの少なくとも1つの値に置換され、前記内部演算は、ロードストアユニットによって提供されるプレディケート値、以前の命令の結果、及び動的又は静的使用についての情報に基づいてプレディケートロジックによって選択コードパラメータへと指定及びデコードされるプレディケート値によってトリガされる、請求項1
0に記載のプロセッサ実装方法。
【請求項13】
請求項1に記載のプロセッサ実装方法を用いて少なくとも1つの積和ユニット上で形式A*B+Cの浮動小数点積和演算を実行するための装置であって、
3つの入力浮動小数点オペランドA、B、C、前記入力浮動小数点オペランドA、B、Cのうちの少なくとも1つは、前記入力浮動小数点オペランドA、B、Cを、置換ロジックの少なくとも1つの出力ポートへ伝搬される前記予め定義されたオペランド値セットの前記少なくとも1つの値に置換するように別個に構成可能であるように構成されている前記置換ロジックによって提供される、
を備える、装置。
【請求項14】
前記置換ロジックはマルチプレクサ回路として構成されており、前記3つの浮動小数点オペランドA、B、Cのうちの少なくとも1つは、それぞれ前記マルチプレクサ回路によって提供され、前記マルチプレクサ回路は:
それぞれの前記入力浮動小数点オペランドA、B、Cのための第1の入力ポート;
予め定義されたオペランド値セットの少なくとも1つの値のための少なくとも第2の入力ポート;及び
対応する前記第1の入力ポート及び前記第2の入力ポートに割り当てられる少なくとも1つの出力ポート、ここで前記マルチプレクサ回路は、前記第1の入力ポート及び前記第2の入力ポートのうちの1つを、前記少なくとも1つの出力ポートへ伝搬されるために選択するように別個に構成可能であるように構成されている、
を備える、請求項13に記載の装置。
【請求項15】
前記浮動小数点積和演算は、前記少なくとも1つの置換ロジックの構成を指定する選択コードパラメータを有する命令によってトリガされる、請求
項14に記載の装置。
【請求項16】
前記予め定義されたオペランド値セットは、少なくとも値-0、+0、+1、-1を含むセットとして構成されている、請求項1
3に記載の装置。
【請求項17】
前
記第1の入力ポー
ト及び前記第2の入力ポートのうちの1つを、前記少なくとも1つの出力ポートへ伝搬されるために選択するために使用される前記選択コードパラメータは、-0、C、A、A+C、B、B+C、A*B、A*B+C、C+1、1、-A+C、-B+Cを備える選択可能演算に対応するセットのうちの少なくとも1つである、請求項1
5に記載の装置。
【請求項18】
3つの入力を有する少なくとも1つの積和ユニットを備え、少なくとも1つの入力は、前記少なくとも1つの置換ロジックの出力から受信される、請求項1
3に記載の装置。
【請求項19】
少なくとも2つの読み出しポート及び1つの書き込みポートを有するレジスタファイルを備え、前記レジスタファイルは、入力オペランドを提供するために構成されており、前記積和ユニットからの出力を受信するために、特に選択コードパラメータを有する命令によってトリガされる前記入力オペランドを提供するために構成されている、請求項1
3に記載の装置。
【請求項20】
形式A0*B0+A1*B1+Cの浮動小数点積積和演算を、A0、A1、B0、B1、Cを備える入力浮動小数点オペランドを用いて実行するために構成されている、請求項1
3に記載の装置。
【請求項21】
請求項1に記載のプロセッサ実装方法を用いて少なくとも1つの積和ユニット上で形式A*B+Cの浮動小数点積和演算を実行するための少なくとも1つの装置を備えるプロセッサであって、
3つの入力浮動小数点オペランドA、B、C、ここで、前記入力浮動小数点オペランドA、B、Cのうちの少なくとも1つは、前記入力浮動小数点オペランドA、B、Cを、それぞれ、置換ロジックの少なくとも1つの出力ポートへ伝搬される前記予め定義されたオペランド値セットの前記少なくとも1つの値に置換するように別個に構成可能であるように構成されている前記置換ロジックによって提供され、前記浮動小数点積和演算は、前記置換ロジックの構成を指定する選択コードパラメータを有する命令によってトリガされる、
を有する、プロセッサ。
【請求項22】
複数の装置を有する単一命令複数データデバイス、ここでプレディケートレジスタは、装置毎のプレディケート値を提供する命令によって、各装置に対する浮動小数点積和演算の実行を選択するように指定される、を更に備える、請求項21に記載のプロセッサ。
【請求項23】
前記プレディケートレジスタが前記プレディケート値を有するマルチビットプレディケートフィールドを備え、前記マルチビットプレディケートフィールドは、前記命令によって、装置のレーン上で前記プレディケート値を実行して、各レーンに対するそれぞれの前記プレディケート値に基づいて個別のレーンの種類を変更するように有効化される、請求項22に記載のプロセッサ。
【請求項24】
装置の前記少なくとも1つの積和ユニットは、内部演算の少なくとも1つのオペランドを予め定義されたオペランド値セットの少なくとも1つの値に置換するように構成されており、前記内部演算は、ロードストアユニットによって提供されるプレディケート値、以前の命令の結果、及び動的又は静的使用についての情報に基づいてプレディケートロジックによって選択コードパラメータへと指定及びデコードされるプレディケート値によってトリガされる、請求項22又は23に記載のプロセッサ。
【請求項25】
プロセッサに、少なくとも1つの積和ユニット上で、3つの入力浮動小数点オペランドA、B、Cを用いて
、請求項1に記載のプロセッサ実装方法で形式A*B+Cの浮動小数点積和演算
を実行させるためのコンピュータプログラムであって
、
前記入力浮動小数点オペランドA、B、Cのうちの少なくとも1つは、予め定義されたオペランド値セットの少なくとも1つの値によって置換可能である
、
コンピュータプログラム。
【国際調査報告】