(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-20
(45)【発行日】2023-12-28
(54)【発明の名称】浮動小数点数の乗算計算方法及び機器、並びに算術論理演算装置
(51)【国際特許分類】
G06F 7/487 20060101AFI20231221BHJP
G06F 7/485 20060101ALI20231221BHJP
G06F 17/10 20060101ALI20231221BHJP
【FI】
G06F7/487
G06F7/485
G06F17/10 Z
(21)【出願番号】P 2022539150
(86)(22)【出願日】2020-12-29
(86)【国際出願番号】 CN2020140768
(87)【国際公開番号】W WO2021136259
(87)【国際公開日】2021-07-08
【審査請求日】2022-06-24
(31)【優先権主張番号】201911414534.8
(32)【優先日】2019-12-31
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】リン,テンイ
(72)【発明者】
【氏名】パン,チィウピン
(72)【発明者】
【氏名】シェン,ションユィ
(72)【発明者】
【氏名】シュイ,シアオシン
(72)【発明者】
【氏名】ジャン,ウエイ
【審査官】佐賀野 秀一
(56)【参考文献】
【文献】米国特許出願公開第2019/0042244(US,A1)
【文献】特開2012-069123(JP,A)
【文献】特開2017-010512(JP,A)
【文献】特開2003-196079(JP,A)
【文献】特開2010-027049(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 5/01
G06F 7/38- 7/537
G06F 7/57- 7/575
G06F 7/74- 7/78
G06F 17/10
(57)【特許請求の範囲】
【請求項1】
プロセッサ内の算術論理演算装置であって、該算術論理演算装置は、浮動小数点数の分解回路、第2精度乗算器、及びアキュムレータを含み、
前記浮動小数点数の分解回路は、各入力の計算すべき第1精度浮動小数点数を少なくとも2つの第2精度浮動小数点数に分解するように構成され、該第2精度浮動小数点数の精度は、前記第1精度浮動小数点数の精度よりもより低く、
前記第2精度乗算器は、異なる第1精度浮動小数点数を分解して得られる2つの第2精度浮動小数点数を含む組合せを受け取り、各組合せにおける前記第2精度浮動小数点数に対して乗算演算を実行し、及び各組合せに対応する中間計算結果を出力するように構成され、
前記アキュムレータは、各組合せに対応する前記中間計算結果に基づいて、前記計算すべき複数の第1精度浮動小数点数の計算結果を取得するために演算を実行するように構成される、
算術論理演算装置。
【請求項2】
前記演算は、総和演算である、請求項1に記載の算術論理演算装置。
【請求項3】
当該算術論理演算装置は、指数調整回路をさらに含み、
前記浮動小数点数の分解回路は、各第2精度浮動小数点数に対応する指数バイアス値を前記指数調整回路に出力するようにさらに構成され、
前記第2精度乗算器は、各組合せに対応する前記中間計算結果を前記指数調整回路に出力するようにさらに構成され、
前記指数調整回路は、各入力組合せにおける前記第2精度浮動小数点数に対応する前記指数バイアス値に基づいて、各入力組合せに対応する前記中間計算結果の指数を調整し、調整した中間計算結果を前記アキュムレータに出力するように構成される、請求項1に記載の算術論理演算装置。
【請求項4】
指数調整回路は、各入力組合せにおける前記第2精度浮動小数点数に対応する前記指数バイアス値と、各入力組合せに対応する前記中間計算結果の前記指数とを加算し、前記調整した中間計算結果を前記アキュムレータに出力するように構成される、請求項3に記載の算術論理演算装置。
【請求項5】
前記中間計算結果は、第1精度中間計算結果であり、前記計算結果は、第1精度計算結果である、請求項3に記載の算術論理演算装置。
【請求項6】
前記第1精度浮動小数点数は単精度浮動小数点数であり、前記第2精度浮動小数点数は半精度浮動小数点数であり、前記第1精度中間計算結果は単精度中間計算結果であり、前記第1精度計算結果は単精度計算結果であり、前記第2精度乗算器は半精度乗算器である、又は
前記第1精度浮動小数点数は倍精度浮動小数点数であり、前記第2精度浮動小数点数は単精度浮動小数点数であり、前記第1精度中間計算結果は倍精度中間計算結果であり、前記第1精度計算結果は倍精度計算結果であり、前記第2精度乗算器は単精度乗算器である、請求項5に記載の算術論理演算装置。
【請求項7】
当該算術論理演算装置は、フォーマット変換回路をさらに含み、
前記第2精度乗算器は、各組合せにおける前記第2精度浮動小数点数に対して乗算演算を実行し、各組合せに対応する第1精度中間計算結果を前記フォーマット変換回路に出力するように特に構成され、
前記フォーマット変換回路は、各入力の第1精度中間計算結果に対してフォーマット変換を実行し、各組合せに対応する第3精度中間計算結果を前記指数調整回路に出力するように構成され、前記第3精度中間計算結果の精度は、前記第1精度中間計算結果の精度よりも高く、
前記指数調整回路は、各入力組合せにおける前記第2精度浮動小数点数に対応する前記指数バイアス値に基づいて、各入力組合せに対応する前記第3精度中間計算結果の指数を調整し、調整した第3精度中間計算結果を前記アキュムレータに出力するように構成され、
前記アキュムレータは、全ての前記入力組合せに対応する前記調整した第3精度中間計算結果に対して総和演算を実行し、前記複数の第1精度浮動小数点数に対して第3精度計算結果を出力するように構成される、請求項3に記載の算術論理演算装置。
【請求項8】
前記フォーマット変換回路は、
各入力の第1精度中間計算結果の指数及び仮数に対しゼロパディング処理を実行し、各組合せに対応する前記第3精度中間計算結果を前記指数調整回路に出力するように構成される、請求項7に記載の算術論理演算装置。
【請求項9】
前記第1精度浮動小数点数は単精度浮動小数点数であり、前記第2精度浮動小数点数は半精度浮動小数点数であり、前記第1精度中間計算結果は単精度中間計算結果であり、前記第3精度中間計算結果は倍精度中間計算結果であり、前記第3精度計算結果は倍精度計算結果であり、前記第2精度乗算器は半精度乗算器である、請求項7に記載の算術論理演算装置。
【請求項10】
当該算術論理演算装置は、フォーマット変換回路をさらに含み、
前記第2精度乗算器は、各組合せにおける前記第2精度浮動小数点数に対して乗算演算を実行し、各組合せに対応する第3精度中間計算結果を前記フォーマット変換回路に出力するように構成され、
前記フォーマット変換回路は、各入力の第3精度中間計算結果に対してフォーマット変換を実行し、各組合せに対応する第1精度中間計算結果を前記指数調整回路に出力するように構成され、
前記指数調整回路は、各入力組合せにおける前記第2精度浮動小数点数に対応する前記指数バイアス値に基づいて、各入力組合せに対応する前記第1精度中間計算結果の指数を調整し、調整した第1精度中間計算結果を前記アキュムレータに出力するように構成され、
前記アキュムレータは、全ての前記入力組合せに対応する前記調整した第1精度中間計算結果に対して総和演算を実行し、前記複数の第1精度浮動小数点数に対して第1精度計算結果を出力するように構成される、請求項3に記載の算術論理演算装置。
【請求項11】
前記第1精度浮動小数点数は倍精度浮動小数点数であり、前記第2精度浮動小数点数は半精度浮動小数点数であり、前記第3精度中間計算結果は単精度中間計算結果であり、前記第1精度中間計算結果は倍精度中間計算結果であり、前記第1精度計算結果は倍精度計算結果であり、前記第2精度乗算器は半精度乗算器である、請求項10に記載の算術論理演算装置。
【請求項12】
当該算術論理演算装置は、計算モード切替え回路をさらに含み、
該計算モード切替え回路は、前記計算モード切替え回路が第2精度浮動小数点数の計算モードに設定されている場合に、前記浮動小数点数の分解回路及
び指数調整回路を無効に設定するように構成され、
前記第2精度乗算器は、当該算術論理演算装置の外部から入力される、計算すべき第2精度浮動小数点数の複数のグループを受け取り、第2精度浮動小数点数の各グループに対して乗算演算を実行し、及び計算すべき第2精度浮動小数点数の各グループに対応する中間計算結果を入力するように構成され、
前記アキュムレータは、計算すべき第2精度浮動小数点数の全ての入力された前記グループに対応する前記中間計算結果に対して総和演算を実行し、計算すべき第2精度浮動小数点数の前記複数のグループの計算結果を出力するように構成される、請求項1に記載の算術論理演算装置。
【請求項13】
浮動小数点数の乗算計算方法であって、当該方法は、
計算すべき複数の第1精度浮動小数点数を取得するステップと、
計算すべき各第1精度浮動小数点数を分解して、少なくとも2つの第2精度浮動小数点数を取得するステップであって、前記第2精度浮動小数点数の精度は、前記第1精度浮動小数点数の精度よりも低い、ステップと、
異なる第1精度浮動小数点数を分解して得られる2つの第2精度浮動小数点数を含む様々な組合せを決定するステップと、
各組合せにおける前記第2精度浮動小数点数を第2精度乗算器に入力して、各組合せに対応する中間計算結果を取得するステップと、
各組合せに対応する前記中間計算結果に基づいて、前記計算すべき複数の第1精度浮動小数点数の計算結果を決定するステップと、を含む、
方法。
【請求項14】
計算すべき各第1精度浮動小数点数を分解して、少なくとも2つの第2精度浮動小数点数を取得するステップの後に、
各第2精度浮動小数点数に対応する指数バイアス値を決定するステップをさらに含み、
各組合せに対応する前記中間計算結果に基づいて、前記計算すべき複数の第1精度浮動小数点数の計算結果を決定するステップは、
各組合せにおける前記第2精度浮動小数点数に対応する前記指数バイアス値に基づいて、各組合せに対応する前記中間計算結果の指数を調整して、調整した中間計算結果を取得するステップと、
全ての前記組合せに対応する前記調整した中間計算結果に対して総和演算を実行して、前記複数の第1精度浮動小数点数の前記計算結果を取得するステップと、を含む、請求項13に記載の方法。
【請求項15】
各組合せにおける前記第2精度浮動小数点数に対応する前記指数バイアス値に基づいて、各組合せに対応する前記中間計算結果の指数を調整して、調整した中間計算結果を取得するステップは、
第2精度浮動小数点数の各組合せに対応する前記中間計算結果の指数と、各組合せにおける前記第2精度浮動小数点数に対応する前記指数バイアス値を加算して、前記調整した中間計算結果を取得するステップと、を含む、請求項14に記載の方法。
【請求項16】
前記中間計算結果は、第1精度中間計算結果であり、前記計算結果は、第1精度計算結果である、請求項13に記載の方法。
【請求項17】
各組合せにおける前記第2精度浮動小数点数を第2精度乗算器に入力して、各組合せに対応する中間計算結果を取得するステップは、
各組合せにおける前記第2精度浮動小数点数を前記第2精度乗算器に入力して、各組合せに対応する第1精度中間計算結果を取得し、各第1精度中間計算結果に対してフォーマット変換を実行して、各組合せに対応する第3精度中間計算結果を取得するステップを含み、前記第3精度中間計算結果の精度は、前記第1精度中間計算結果の精度よりも高く、
各組合せにおける前記第2精度浮動小数点数に対応する前記指数バイアス値に基づいて、各組合せに対応する前記中間計算結果の指数を調整して、調整した中間計算結果を取得するステップは、
各組合せにおける前記第2精度浮動小数点数に対応する前記指数バイアス値に基づいて、各組合せに対応する前記第3精度中間計算結果の指数を調整して、調整した第3精度中間計算結果を取得するステップを含み、
全ての前記組合せに対応する前記調整した中間計算結果に対して総和演算を実行して、前記複数の第1精度浮動小数点数の前記計算結果を取得するステップは、
全ての前記組合せに対応する前記調整した第3精度中間計算結果に対して総和演算を実行して、前記複数の第1精度浮動小数点数の第3精度計算結果を取得するステップを含む、請求項14に記載の方法。
【請求項18】
各第1精度中間計算結果に対してフォーマット変換を実行して、各組合せに対応する第3精度中間計算結果を取得するステップは、
各第1精度中間計算結果の指数及び仮数に対しゼロパディング処理を実行して、第2精度浮動小数点数の各組合せに対応する前記第3精度中間計算結果を取得するステップを含む、請求項17に記載の方法。
【請求項19】
各組合せにおける前記第2精度浮動小数点数を第2精度乗算器に入力して、各組合せに対応する中間計算結果を取得するステップは、
各組合せにおける前記第2精度浮動小数点数を前記第2精度乗算器に入力して、各組合せに対応する第3精度中間計算結果を取得し、各第3精度中間計算結果に対してフォーマット変換を実行して、各組合せに対応する第1精度中間計算結果を取得するステップを含み、
各組合せにおける前記第2精度浮動小数点数に対応する前記指数バイアス値に基づいて、各組合せに対応する前記中間計算結果の指数を調整して、調整した中間計算結果を取得するステップは、
各組合せにおける前記第2精度浮動小数点数に対応する前記指数バイアス値に基づいて、各組合せに対応する前記第1精度中間計算結果の指数を調整して、調整した第1精度中間計算結果を取得するステップを含み、
前記調整した中間計算結果に対して総和演算を実行して、前記複数の第1精度浮動小数点数の前記計算結果を取得するステップは、
前記調整した第1精度中間計算結果に対して総和演算を実行して、前記複数の第1精度浮動小数点数の第1精度計算結果を取得するステップを含む、請求項14に記載の方法。
【請求項20】
浮動小数点数の乗算計算機器であって、当該機器は、
計算すべき複数の第1精度浮動小数点数を取得するように構成された取得モジュールと、
計算すべき各第1精度浮動小数点数を分解して、少なくとも2つの第2精度浮動小数点数を取得するように構成された分解モジュールであって、前記第2精度浮動小数点数の精度は前記第1精度浮動小数点数よりも低い、分解モジュールと、
異なる第1精度浮動小数点数を分解して得られる2つの第2精度浮動小数点数を含む様々な組合せを決定するように構成された組合せモジュールと、
各組合せにおける前記第2精度浮動小数点数を第2精度乗算器に入力して、各組合せに対応する中間計算結果を取得するように構成された入力モジュールと、
各組合せに対応する前記中間計算結果に基づいて、前記計算すべき複数の第1精度浮動小数点数の計算結果を決定するように構成された決定モジュールと、を含む、
機器。
【請求項21】
前記分解モジュールは、各第2精度浮動小数点数に対応する指数バイアス値を決定するようにさらに構成され、
前記決定モジュールは、
各組合せにおける前記第2精度浮動小数点数に対応する前記指数バイアス値に基づいて、各組合せに対応する前記中間計算結果の指数を調整して、調整した中間計算結果を取得し、及び
全ての前記組合せに対応する前記調整した中間計算結果に対して総和演算を実行して、前記複数の第1精度浮動小数点数の前記計算結果を取得するように構成される、請求項20に記載の機器。
【請求項22】
前記決定モジュールは、第2精度浮動小数点数の各組合せに対応する前記中間計算結果の前記指数と、各組合せにおける前記第2精度浮動小数点数に対応する前記指数バイアス値とを加算して、前記調整した中間計算結果を取得するように構成される、請求項21に記載の機器。
【請求項23】
前記中間計算結果は、第1精度中間計算結果であり、前記計算結果は、第1精度計算結果である、請求項20に記載の機器。
【請求項24】
前記入力モジュールは、各組合せにおける前記第2精度浮動小数点数を前記第2精度乗算器に入力して、各組合せに対応する第1精度中間計算結果を取得し、各第1精度中間計算結果に対してフォーマット変換を実行して、各組合せに対応する第3精度中間計算結果を取得するように構成され、前記第3精度中間計算結果の精度は、前記第1精度中間計算結果の精度よりも高く、
前記決定モジュールは、
各組合せにおける前記第2精度浮動小数点数に対応する前記指数バイアス値に基づいて、各組合せに対応する前記第3精度中間計算結果の指数を調整して、調整した第3精度中間計算結果を取得し、及び
全ての前記組合せに対応する前記調整した第3精度中間計算結果に対して総和演算を実行して、前記複数の第1精度浮動小数点数の第3精度計算結果を取得するように構成される、請求項21に記載の機器。
【請求項25】
前記入力モジュールは、各第1精度中間計算結果の指数及び仮数に対しゼロパディング処理を実行して、各組合せに対応する前記第3精度中間計算結果を取得するように構成される、請求項24に記載の機器。
【請求項26】
前記入力モジュールは、各組合せにおける前記第2精度浮動小数点数を前記第2精度乗算器に入力して、各組合せに対応する第3精度中間計算結果を取得し、各第3精度中間計算結果に対してフォーマット変換を実行して、各組合せに対応する第1精度中間計算結果を取得するように構成され、
前記決定モジュールは、
各組合せにおける前記第2精度浮動小数点数に対応する前記指数バイアス値に基づいて、各組合せに対応する前記第1精度中間計算結果の指数を調整して、調整した第1精度中間計算結果を取得し、及び
第2精度浮動小数点数の全てのグループに対応する前記調整した第1精度中間計算結果に対して総和演算を実行して、前記複数の第1精度浮動小数点数の第1精度計算結果を取得するように構成される、請求項21に記載の機器。
【請求項27】
電子装置であって、当該電子装置はプロセッサ及びメモリを含み、該メモリが少なくとも1つの命令を記憶し、該命令は前記プロセッサによってロード及び実行されて、請求項13に記載の浮動小数点数の乗算計算方法で実行される演算を実施する、電子装置。
【請求項28】
プロセッサであって、当該プロセッサは、請求項1に記載の算術論理演算装置を含む、プロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、2019年12月31日に出願した、“FLOATING-POINT NUMBER MULTIPLICATION COMPUTATION METHOD AND
APPARATUS, AND ARITHMETIC LOGIC UNIT”という表題の中国特許出願第201911414534.8号に対する優先権を主張するものであり、この文献はその全体が参照により本明細書に組み込まれる。
【0002】
本願は、データ処理技術の分野に関連し、特に、浮動小数点数の乗算計算方法及び機器、並びに算術論理演算装置に関連する。
【背景技術】
【0003】
浮動小数点数は、コンピュータにおける重要なデジタルフォーマットである。コンピュータの浮動小数点数には、符号、指数、及び仮数の3つの部分が含まれる。データ精度に関する様々なサービスの様々な要件を満たすために、コンピュータのプロセッサは、通常、浮動小数点数に対して様々な精度で乗算演算を実行する機能を備えている必要がある。
【0004】
現在、異なる精度の浮動小数点数の乗算要件を満たすために、複数の独立した乗算器が通常、精度要件に対応して設計されている。例えば、プロセッサが半精度乗算演算、単精度乗算演算、及び倍精度乗算演算を同時にサポートする必要がある場合に、3つの独立した乗算器がそれぞれ、半精度乗算、単精度乗算、及び倍精度乗算に適合するように、少なくとも3つの独立した乗算器をプロセッサに設計する必要がある。
【0005】
本願を実施する過程において、従来技術には以下の欠点がある。
【0006】
異なる精度を別々にサポートする複数の乗算器を、プロセッサ内で独立して設計している。システムが1種類の精度の乗算器のみを使用して計算を実行する場合に、残りの種類の精度の乗算器はアイドル状態になり、計算リソースを非常に浪費する。
【発明の概要】
【0007】
関連技術における計算リソースの浪費の問題を解決するために、本願の実施形態は、浮動小数点数の乗算計算方法及び機器、並びに算術論理演算装置を提供する。技術的な解決策は次の通りである。
【0008】
第1の態様によれば、浮動小数点数の乗算計算方法が提供され、この方法は、
計算すべき複数の第1精度浮動小数点数を取得するステップと、
計算すべき各第1精度浮動小数点数を分解して、少なくとも2つの第2精度浮動小数点数を取得するステップであって、第2精度浮動小数点数の精度は、第1精度浮動小数点数の精度よりも低い、ステップと、
異なる第1精度浮動小数点数を分解して得られる2つの第2精度浮動小数点数を含む様々な組合せを決定するステップと、
各組合せにおける第2精度浮動小数点数を第2精度乗算器に入力して、各組合せに対応する中間計算結果を取得するステップと、
各組合せに対応する中間計算結果に基づいて、計算すべき複数の第1精度浮動小数点数の計算結果を決定するステップと、を含む。
【0009】
本願のこの実施形態に示される解決策では、浮動小数点数は、符号、指数、及び仮数の3つの部分を含む。整数は、1であり、浮動小数点数の表現から省略することができる。計算すべき(to-be-computed)第1精度浮動小数点数が最初に分解され得る。ここで、第1精度浮動小数点数を分解することは、第1精度浮動小数点数の整数及び仮数を、複数の第2精度浮動小数点数の合計で表すことである。ここで、第2精度浮動小数点数の精度は、第1精度の精度よりも低くする必要がある。例えば、第1精度浮動小数点数が単精度浮動小数点数である場合に、第2精度浮動小数点数は半精度浮動小数点数であり得る。別の例では、第1精度浮動小数点数が倍精度浮動小数点数である場合に、第2精度浮動小数点数は、単精度浮動小数点数又は半精度浮動小数点数であり得る。分解後に得られる第2精度浮動小数点数について、異なる第1精度浮動小数点数を分解して得られる2つの第2精度浮動小数点数を組み合わせ、次に取得した各組合せを、第2精度浮動小数点数に対する乗算を計算するように構成された第2精度乗算器に入力することができる。この場合に、第2精度乗算器は、第2精度浮動小数点数の各グループに対応する中間計算結果を出力することができる。最後に、複数の中間計算結果を処理して、計算すべき複数の第1精度浮動小数点数の計算結果を取得することができる。
【0010】
本願のこの実施形態に示される解決策では、第1精度浮動小数点数に対する乗算を計算するプロセスにおいて、比較的精度の高い第1精度乗算器を使用する必要がなく、比較的精度の低い第2精度乗算器のみを使用する必要があることが分かり得る。換言すれば、通常、第2精度浮動小数点数に対する乗算を計算することに加えて、第2精度乗算器のみが配置される処理装置は、より高い精度で第1精度浮動小数点数に対する乗算をさらに計算することができる。このようにして、計算リソースを効果的に使用でき、第1精度乗算器を個別に配置するコストを節約することができる。
【0011】
可能な実施態様では、計算すべき各第1精度浮動小数点数を分解して、少なくとも2つの第2精度浮動小数点数を取得するステップの後に、この方法は、各第2精度浮動小数点数に対応する指数バイアス値を決定するステップをさらに含む。
【0012】
各組合せに対応する中間計算結果に基づいて、計算すべき複数の第1精度浮動小数点数の計算結果を決定するステップは、
各組合せにおける第2精度浮動小数点数に対応する指数バイアス値に基づいて、各組合せに対応する中間計算結果の指数を調整して、調整した中間計算結果を取得するステップと、
全ての組合せに対応する調整した中間計算結果に対して総和演算を実行し、複数の第1精度浮動小数点数の計算結果を取得するステップと、を含む。
【0013】
本願のこの実施形態に示される解決策では、第1精度浮動小数点数が分解されるときに、第1精度浮動小数点数の異なるビットの仮数は、第2精度浮動小数点を使用して別々に表す必要がある。さらに、各第2精度浮動小数点数に対応する指数バイアス値がさらに取得され得る。指数バイアス値には、第1精度浮動小数点数の指数が含まれ得、さらに、第2精度浮動小数点数によって表される仮数のものであり且つ第1精度浮動小数点数にある固定指数バイアス値が含まれ得る。固定指数バイアス値について以下に説明する。
【0014】
例えば、単精度浮動小数点数0 10000000 00000010100000100110011の場合に、符号は「0」であり、指数は「10000000」であり、仮数は「00000010100000100110011」である。仮数の11番目のビット~21番目のビット「00001001100」を表すために半精度浮動小数点数を使用する必要があり、実際に表す必要がある数値が「0.00000000000 0001001100」の場合に、固定指数バイアス値-11が抽出され得る。
【0015】
同様に、各組合せに対応する中間計算結果に対応する指数は、第2精度浮動小数点数に対応する指数バイアス値を使用して調整する必要がある。最後に、調整した中間計算結果をアキュムレータに入力して累積計算を行い、最終的な計算結果を取得することができる。
【0016】
可能な実施態様では、各組合せにおける第2精度浮動小数点数に対応する指数バイアス値に基づいて、各組合せに対応する中間計算結果の指数を調整して、調整した中間計算結果を取得するステップは、
第2精度浮動小数点数の各組合せに対応する中間計算結果の指数と、各組合せにおける第2精度浮動小数点数に対応する指数バイアス値を加算して、調整した中間計算結果を取得するステップを含む。
【0017】
本願のこの実施形態に示される解決策では、各第2精度浮動小数点数は、指数バイアス値に対応する。第2精度乗算器を使用して得られた中間結果を取得した後に、各組合せに対応する中間計算結果について、計算に関与しない各第2精度浮動小数点数の指数バイアス値と、中間計算結果の指数とを加算して、調整した中間計算結果を取得する必要がある。
【0018】
可能な実施態様では、中間計算結果は、第1精度中間計算結果であり、計算結果は、第1精度計算結果である。
【0019】
本願のこの実施形態に示される解決策では、第1精度浮動小数点数に対する乗算計算のために、第1精度計算結果が依然として取得され得、すなわち、精度が低下しない。
【0020】
可能な実施態様では、第1精度浮動小数点数は単精度浮動小数点数であり、第2精度浮動小数点数は半精度浮動小数点数であり、第1精度中間計算結果は単精度中間計算結果であり、第1精度計算結果は単精度計算結果であり、第2精度乗算器は半精度乗算器である、又は
第1精度浮動小数点数は倍精度浮動小数点数であり、第2精度浮動小数点数は単精度浮動小数点数であり、第1精度中間計算結果は倍精度中間計算結果であり、第1精度計算結果は倍精度計算結果であり、第2精度乗算器は単精度乗算器である。
【0021】
本願のこの実施形態に示される解決策では、半精度乗算器を使用して、計算すべき単精度浮動小数点数について単精度計算結果を最終的に得ることができ、単精度乗算計算は、単精度乗算器を使用せずに実行することができ、それにより計算リソースを節約できる。単精度乗算器を使用して、計算すべき倍精度浮動小数点数について倍精度計算結果を最終的に得ることもでき、倍精度乗算計算は、倍精度乗算器を使用せずに実行することができ、それにより計算リソースを節約できる。
【0022】
可能な実施態様では、各組合せにおける第2精度浮動小数点数を第2精度乗算器に入力して、各組合せに対応する中間計算結果を取得するステップは、
各組合せにおける第2精度浮動小数点数を第2精度乗算器に入力して、各組合せに対応する第1精度中間計算結果を取得し、各第1精度中間計算結果に対してフォーマット変換を実行して、各組合せに対応する第3精度中間計算結果を取得するステップを含み、第3精度中間計算結果の精度は、第1精度中間計算結果の精度よりも高い。
【0023】
各組合せにおける第2精度浮動小数点数に対応する指数バイアス値に基づいて、各組合せに対応する中間計算結果の指数を調整して、調整した中間計算結果を取得するステップは、
各組合せにおける第2精度浮動小数点数に対応する指数バイアス値に基づいて、各組合せに対応する第3精度中間計算結果の指数を調整して、調整した第3精度中間計算結果を取得するステップを含む。
【0024】
全ての組合せに対応する調整した中間計算結果に対して総和演算を実行して、複数の第1精度浮動小数点数の計算結果を取得するステップは、
全ての組合せに対応する調整した第3精度中間計算結果に対して総和演算を実行して、複数の第1精度浮動小数点数の第3精度計算結果を取得するステップを含む。
【0025】
本願のこの実施形態に示される解決策では、第1精度浮動小数点数に対する乗算計算のために、より高精度の第3精度計算結果を取得することができる。
【0026】
可能な実施態様では、各第1精度中間結果に対してフォーマット変換を実行して、第2精度浮動小数点数の各組合せに対応する第3精度中間計算結果を取得するステップは、
各第1精度中間結果の指数及び仮数に対しゼロパディング処理を実行して、各組合せに対応する第3精度中間計算結果を取得するステップを含む。
【0027】
本願のこの実施形態に示される解決策では、第2精度浮動小数点数が第2精度乗算器によって処理された後に、第1精度中間計算結果のみを得ることができる。従って、最終的により高い精度の第3精度計算結果を取得する必要がある場合に、第1精度中間計算結果のフォーマットを第3精度中間計算結果に拡張する必要がある。拡張方法は、指数及び仮数のそれぞれの最後のビットの後にゼロを埋め込むことである。
【0028】
可能な実施態様では、第1精度浮動小数点数は単精度浮動小数点数であり、第2精度浮動小数点数は半精度浮動小数点数であり、第1精度中間計算結果は単精度中間計算結果であり、第3精度中間計算結果は倍精度中間計算結果であり、第3精度計算結果は倍精度計算結果であり、第2精度乗算器は半精度乗算器である。
【0029】
本願のこの実施形態に示される解決策では、半精度乗算器を使用して、計算すべき単精度浮動小数点数について倍精度計算結果を最終的に得ることができ、単精度乗算計算は、単精度乗算器を使用せずに実行することができ、それにより計算リソースを節約できる。
【0030】
可能な実施態様では、各組合せにおける第2精度浮動小数点数を第2精度乗算器に入力して、各組合せに対応する中間計算結果を取得するステップは、
各組合せにおける第2精度浮動小数点数を第2精度乗算器に入力して、各組合せに対応する第3精度中間計算結果を取得し、各第3精度中間計算結果に対してフォーマット変換を実行して、各組合せに対応する第1精度中間計算結果を取得するステップを含む。
【0031】
各組合せにおける第2精度浮動小数点数に対応する指数バイアス値に基づいて、各組合せに対応する中間計算結果の指数を調整して、調整した中間計算結果を取得するステップは、
各組合せにおける第2精度浮動小数点数に対応する指数バイアス値に基づいて、各組合せに対応する第1精度中間計算結果の指数を調整して、調整した第1精度中間計算結果を取得するステップを含む。
【0032】
第2精度浮動小数点数の全てのグループに対応する調整した中間計算結果に対して総和演算を実行して、複数の第1精度浮動小数点数の計算結果を取得するステップは、
第2精度浮動小数点数の全てのグループに対応する調整した第1精度中間計算結果に対して総和演算を実行して、複数の第1精度浮動小数点数の第1精度計算結果を取得するステップを含む。
【0033】
本願のこの実施形態に示される解決策では、第2精度浮動小数点数乗算器を使用して第2精度浮動小数点数を処理した後に、第1精度中間計算結果を直接取得することができず、第3精度中間計算結果しか取得できない場合がある。この場合に、最終的な計算結果の精度が依然として第1精度であることを保証するために、第3精度中間計算結果のフォーマットを拡張して第1精度中間結果を取得することができ、それによって、最終的に第1精度計算結果が取得される。
【0034】
可能な実施態様では、第1精度浮動小数点数は倍精度浮動小数点数であり、第2精度浮動小数点数は半精度浮動小数点数であり、第3精度中間計算結果は単精度中間計算結果であり、第1精度中間計算結果は倍精度中間計算結果であり、第1精度計算結果は倍精度計算結果であり、第2精度乗算器は半精度乗算器である。
【0035】
本願のこの実施形態に示される解決策では、半精度乗算器を使用して、計算すべき倍精度浮動小数点数について単精度中間計算結果を取得することができる。単精度中間計算結果のフォーマットを調整した後に、最終的に倍精度計算結果が得られる。倍精度浮動小数点数に対する乗算計算は、倍精度乗算器を使用せずに実行することができ、それにより計算リソースを節約できる。
【0036】
第2の態様によれば、浮動小数点数の乗算計算機器が提供され、この機器は、
計算すべき複数の第1精度浮動小数点数を取得するように構成された取得モジュールと、
計算すべき各第1精度浮動小数点数を分解して、少なくとも2つの第2精度浮動小数点数を取得するように構成された分解モジュールであって、第2精度浮動小数点数の精度は、第1精度浮動小数点数の精度よりも低い、分解モジュールと、
異なる第1精度浮動小数点数を分解して得られる2つの第2精度浮動小数点数を含む様々な組合せを決定するように構成された組合せモジュールと、
各組合せにおける第2精度浮動小数点数を第2精度乗算器に入力して、各組合せに対応する中間計算結果を取得するように構成された入力モジュールと、
各組合せに対応する中間計算結果に基づいて、計算すべき複数の第1精度浮動小数点数の計算結果を決定するように構成された決定モジュールと、を含む。
【0037】
可能な実施態様では、分解モジュールは、各第2精度浮動小数点数に対応する指数バイアス値を決定するようにさらに構成される。
【0038】
決定モジュールは、
各組合せにおける第2精度浮動小数点数に対応する指数バイアス値に基づいて、各組合せに対応する中間計算結果の指数を調整して、調整した中間計算結果を取得し、及び
全ての組合せに対応する調整した中間計算結果に対して総和演算を実行して、複数の第1精度浮動小数点数の計算結果を取得するように構成される。
【0039】
可能な実施態様では、決定モジュールは、第2精度浮動小数点数の各組合せに対応する中間計算結果の指数と、各組合せにおける第2精度浮動小数点数に対応する指数バイアス値とを加算して、調整した中間計算結果を取得するように構成される。
【0040】
可能な実施態様では、中間計算結果は、第1精度中間計算結果であり、計算結果は、第1精度計算結果である。
【0041】
可能な実施態様では、第1精度浮動小数点数は単精度浮動小数点数であり、第2精度浮動小数点数は半精度浮動小数点数であり、第1精度中間計算結果は単精度中間計算結果であり、第1精度計算結果は単精度計算結果であり、第2精度乗算器は半精度乗算器である、又は
第1精度浮動小数点数は倍精度浮動小数点数であり、第2精度浮動小数点数は単精度浮動小数点数であり、第1精度中間計算結果は倍精度中間計算結果であり、第1精度計算結果は倍精度計算結果であり、第2精度乗算器は単精度乗算器である。
【0042】
可能な実施態様では、入力モジュールは、各組合せにおける第2精度浮動小数点数を第2精度乗算器に入力して、各組合せに対応する第1精度中間計算結果を取得し、各第1精度中間計算結果に対してフォーマット変換を実行して、各組合せに対応する第3精度中間計算結果を取得するように構成され、第3精度中間計算結果の精度は、第1精度中間計算結果の精度よりも高い。
【0043】
決定モジュールは、
各組合せにおける第2精度浮動小数点数に対応する指数バイアス値に基づいて、各組合せに対応する第3精度中間計算結果の指数を調整して、調整した第3精度中間計算結果を取得し、及び
全ての組合せに対応する調整した第3精度中間計算結果に対して総和演算を実行して、複数の第1精度浮動小数点数の第3精度計算結果を取得するように構成される。
【0044】
可能な実施態様では、入力モジュールは、各第1精度中間結果の指数及び仮数に対しゼロパディング処理を実行し、各組合せに対応する第3精度中間計算結果を取得するように構成される。
【0045】
可能な実施態様では、第1精度浮動小数点数は単精度浮動小数点数であり、第2精度浮動小数点数は半精度浮動小数点数であり、第1精度中間計算結果は単精度中間計算結果であり、第3精度中間計算結果は倍精度中間計算結果であり、第3精度計算結果は倍精度計算結果であり、第2精度乗算器は半精度乗算器である。
【0046】
可能な実施態様では、入力モジュールは、各組合せにおける第2精度浮動小数点数を第2精度乗算器に入力して、各組合せに対応する第3精度中間計算結果を取得し、各第3精度中間計算結果に対してフォーマット変換を実行して、各組合せに対応する第1精度中間計算結果を取得するように構成される。
【0047】
決定モジュールは、
各組合せにおける第2精度浮動小数点数に対応する指数バイアス値に基づいて、各組合せに対応する第1精度中間計算結果の指数を調整して、調整した第1精度中間計算結果を取得し、及び
第2精度浮動小数点数の全てのグループに対応する調整した第1精度中間計算結果に対して総和演算を実行して、複数の第1精度浮動小数点数の第1精度計算結果を取得するように構成される。
【0048】
可能な実施態様では、第1精度浮動小数点数は倍精度浮動小数点数であり、第2精度浮動小数点数は半精度浮動小数点数であり、第3精度中間計算結果は単精度中間計算結果であり、第1精度中間計算結果は倍精度中間計算結果であり、第1精度計算結果は倍精度計算結果であり、第2精度乗算器は半精度乗算器である。
【0049】
第3の態様によれば、算術論理演算装置が提供され、算術論理演算装置は、浮動小数点数の分解回路、第2精度乗算器、指数調整回路、及びアキュムレータを含む。
【0050】
浮動小数点数の分解回路は、各入力の計算すべき第1精度浮動小数点数を少なくとも2つの第2精度浮動小数点数に分解して、各第2精度浮動小数点数に対応する指数バイアス値を指数調整回路に出力するように構成され、第2精度浮動小数点数の精度が、第1精度浮動小数点数の精度よりも低い。
【0051】
第2精度乗算器は、異なる第1精度浮動小数点数を分解して得られる2つの第2精度浮動小数点数を含む組合せを受け取り、各組合せにおける第2精度浮動小数点数に対して乗算演算を実行し、及び各組合せに対応する中間計算結果を指数調整回路に出力するように構成される。
【0052】
指数調整回路は、各入力組合せにおける第2精度浮動小数点数に対応する指数バイアス値に基づいて、各入力組合せに対応する中間計算結果の指数を調整し、調整した中間計算結果をアキュムレータに出力するように構成される。
【0053】
アキュムレータは、全ての入力組合せに対応する調整した中間計算結果に対して総和演算を実行し、複数の第1精度浮動小数点数の計算結果を出力するように構成される。
【0054】
可能な実施態様では、指数調整回路は、各入力組合せにおける第2精度浮動小数点数に対応する指数バイアス値と、各入力組合せに対応する中間計算結果の指数とを加算し、調整した中間計算結果をアキュムレータに出力するように構成される。
【0055】
可能な実施態様では、中間計算結果は、第1精度中間計算結果であり、計算結果は、第1精度計算結果である。
【0056】
可能な実施態様では、第1精度浮動小数点数は単精度浮動小数点数であり、第2精度浮動小数点数は半精度浮動小数点数であり、第1精度中間計算結果は単精度中間計算結果であり、第1精度計算結果は単精度計算結果であり、第2精度乗算器は半精度乗算器である、又は
第1精度浮動小数点数は倍精度浮動小数点数であり、第2精度浮動小数点数は単精度浮動小数点数であり、第1精度中間計算結果は倍精度中間計算結果であり、第1精度計算結果は倍精度計算結果であり、第2精度乗算器は単精度乗算器である。
【0057】
可能な実施態様では、算術論理演算装置は、フォーマット変換回路をさらに含む。
【0058】
第2精度乗算器は、具体的には、各組合せにおける第2精度浮動小数点数に対して乗算演算を実行し、各組合せに対応する第1精度中間計算結果をフォーマット変換回路に出力するように構成される。
【0059】
フォーマット変換回路は、各入力の第1精度中間計算結果に対してフォーマット変換を実行し、各組合せに対応する第3精度中間計算結果を指数調整回路に出力するように構成され、第3精度中間計算結果の精度は、第1精度中間計算結果の精度よりも高い。
【0060】
指数調整回路は、各入力組合せにおける第2精度浮動小数点数に対応する指数バイアス値に基づいて、各入力組合せに対応する第3精度中間計算結果の指数を調整し、調整した第3精度中間計算結果をアキュムレータに出力するように構成される。
【0061】
アキュムレータは、全ての入力組合せに対応する調整した第3精度中間計算結果に対して総和演算を実行し、複数の第1精度浮動小数点数について第3精度計算結果を出力するように構成される。
【0062】
可能な実施態様では、フォーマット変換回路は、各入力の第1精度中間計算結果の指数及び仮数に対してゼロパディング処理を実行し、各組合せに対応する第3精度中間計算結果を指数調整回路に出力するように構成される。
【0063】
可能な実施態様では、第1精度浮動小数点数は単精度浮動小数点数であり、第2精度浮動小数点数は半精度浮動小数点数であり、第1精度中間計算結果は単精度中間計算結果であり、第3精度中間計算結果は倍精度中間計算結果であり、第3精度計算結果は倍精度計算結果であり、第2精度乗算器は半精度乗算器である。
【0064】
可能な実施態様では、算術論理演算装置は、フォーマット変換回路をさらに含む。
【0065】
第2精度乗算器は、各組合せにおける第2精度浮動小数点数に対して乗算演算を実行し、各組合せに対応する第3精度中間計算結果をフォーマット変換回路に出力するように構成される。
【0066】
フォーマット変換回路は、各入力の第3精度中間計算結果に対してフォーマット変換を実行し、各組合せに対応する第1精度中間計算結果を指数調整回路に出力するように構成される。
【0067】
指数調整回路は、各入力組合せにおける第2精度浮動小数点数に対応する指数バイアス値に基づいて、各入力組合せに対応する第1精度中間計算結果の指数を調整し、調整した第1精度中間計算結果をアキュムレータに出力するように構成される。
【0068】
アキュムレータは、全ての入力組合せに対応する調整した第1精度中間計算結果に対して総和演算を実行し、複数の第1精度浮動小数点数に対して第1精度計算結果を出力するように構成される。
【0069】
可能な実施態様では、第1精度浮動小数点数は倍精度浮動小数点数であり、第2精度浮動小数点数は半精度浮動小数点数であり、第3精度中間計算結果は単精度中間計算結果であり、第1精度中間計算結果は倍精度中間計算結果であり、第1精度計算結果は倍精度計算結果であり、第2精度乗算器は半精度乗算器である。
【0070】
可能な実施態様では、算術論理演算装置は、計算モード切替え回路をさらに含む。
【0071】
計算モード切替え回路は、計算モード切替え回路が第2精度浮動小数点数の計算モードに設定されている場合に、浮動小数点数の分解回路及び指数調整回路を無効に設定するように構成される。
【0072】
第2精度乗算器は、算術論理演算装置の外部から入力される、計算すべき第2精度浮動小数点数の複数のグループを受け取り、第2精度浮動小数点数の各グループに対して乗算演算を実行し、及び計算すべき第2精度浮動小数点数の各グループに対応する中間計算結果を入力するように構成される。
【0073】
アキュムレータは、計算すべき第2精度浮動小数点数の全ての入力グループに対応する中間計算結果に対して総和演算を実行し、計算すべき第2精度浮動小数点数の複数のグループの計算結果を出力するように構成される。
【0074】
第4の態様によれば、電子装置が提供され、電子装置は、プロセッサ及びメモリを含む。メモリは少なくとも1つの命令を記憶し、その命令はプロセッサによってロード及び実行されて、第1の態様による浮動小数点数の乗算計算方法で実行される演算を実施する。
【0075】
第5の態様によれば、プロセッサが提供され、プロセッサは、第3の態様による算術論理演算装置を含む。
【0076】
第6の態様によれば、コンピュータ可読記憶媒体が提供される。コンピュータ可読記憶媒体は、少なくとも1つの命令を記憶し、その命令はプロセッサによってロード及び実行されて、第1の態様による浮動小数点数の乗算計算方法で実行される演算を実施する。
【0077】
本願の実施形態で提供する技術的解決策の有利な効果は以下の通りである。
【0078】
本願の実施形態では、計算すべき各第1精度浮動小数点数を分解して、比較的精度の低い複数の第2精度浮動小数点数を取得する。次に、異なる第1精度浮動小数点数を分解して得られる2つの第2精度浮動小数点数を含む様々な組合せを第2精度乗算器に入力して、各組合せに対応する中間計算結果を取得する。最後に、各組合せに対応する中間計算結果に基づいて、計算すべき第1精度浮動小数点数に対応する計算結果が決定される。本願の実施形態では、比較的精度の高い複数の第1精度浮動小数点数が、比較的精度の低い第2精度乗算器によって計算することができ、第1精度乗算器をもはや使用する必要がないことが分かり得る。従って、比較的精度の高い第1精度浮動小数点数は、比較的精度の低い第2精度乗算器のみを有する装置で計算することができ、第1精度乗算器を追加で設計する必要がなく、それにより計算リソースを効果的に節約する。
【図面の簡単な説明】
【0079】
【
図1】本願の一実施形態による浮動小数点数の乗算計算方法のフローチャートである。
【
図2】本願の一実施形態による浮動小数点数の構成の概略図である。
【
図3】本願の一実施形態による浮動小数点数の構成の概略図である。
【
図4】本願の一実施形態による浮動小数点数の構成の概略図である。
【
図5】本願の一実施形態による、第2精度浮動小数点数を第2精度乗算器に入力する概略図である。
【
図6】本願の一実施形態による、第2精度浮動小数点数を第2精度乗算器に入力する概略図である。
【
図7】本願の一実施形態による、浮動小数点数の乗算計算機器の構造の概略図である。
【
図8】本願の一実施形態による電子装置の構造の概略図である。
【
図9】本願の一実施形態による浮動小数点数の乗算計算方法のフローチャートである。
【
図10】本願の一実施形態による浮動小数点数の乗算計算方法のフローチャートである。
【
図11】本願の一実施形態による浮動小数点数の乗算計算方法のフローチャートである。
【
図12】本願の一実施形態による算術論理演算装置の構造の概略図である。
【
図13】本願の一実施形態による算術論理演算装置の構造の概略図である。
【
図14】本願の一実施形態による算術論理演算装置の構造の概略図である。
【発明を実施するための形態】
【0080】
本願の実施形態は、浮動小数点数の乗算計算方法を提供する。この方法は、電子装置によって実施することができ、電子装置は、浮動小数点数の計算を実行する必要がある任意の装置であり得る。例えば、電子装置は、携帯電話又はタブレットコンピュータ等のモバイル端末であり得るか、デスクトップコンピュータ又はノートブックコンピュータ等のコンピュータ装置であり得るか、又はサーバであり得る。もっとも、浮動小数点数の計算は、グラフィックス処理、天文学、医学等の多くの分野に関連している可能性がある。全ての分野において、前述したタイプの電子装置を使用して浮動小数点数の計算を実行する場合に、本願の実施形態で提供する方法を使用することができる。高精度の浮動小数点数を分解して低精度の浮動小数点数を取得し、次に低精度の乗算器を使用して、取得した低精度の浮動小数点数を計算し、最終的に高精度の計算結果を取得する。関連技術の高精度の乗算器でしか完了できない計算は、低精度の乗算器を使用して精度を損なうことなく完了することができる。
【0081】
図1を参照すると、本願の一実施形態は、浮動小数点数の乗算計算方法を提供する。この方法の処理手順には、以下のステップが含まれ得る。
【0082】
ステップ101:計算すべき複数の第1精度浮動小数点数を取得する。
【0083】
計算すべき複数の第1精度浮動小数点数は、乗算演算を実行する必要がある第1精度浮動小数点数のグループであり得る。「複数」は2以上であり得る。本願のこの実施形態では、説明のために、「複数」が2つである場合を使用する。
【0084】
実施態様において、コンピュータ装置内のプロセッサは、計算すべき複数の第1精度浮動小数点数を取得することができる。第1精度浮動小数点数は、単精度浮動小数点数、倍精度浮動小数点数等であり得る。
【0085】
ステップ102:計算すべき各第1精度浮動小数点数を分解して、少なくとも2つの第2精度浮動小数点数を取得する。ここで、第2精度浮動小数点数の精度は、第1精度浮動小数点数の精度よりも低い。
【0086】
実施態様において、計算すべき各第1精度浮動小数点数を分解して、複数の第2精度浮動小数点数を取得することができ、第2精度浮動小数点数の精度は、第1精度浮動小数点数の精度よりも低い。第1精度浮動小数点数及び第2精度浮動小数点数には複数のケースが考えられるが、以下にいくつかのケースを列挙する。第1精度浮動小数点数は、単精度浮動小数点数(single-precision floating-point format, FP32)であり得、第2精度浮動小数点数は、半精度浮動小数点数(half-precision floating-point format, FP16)であり得る。あるいはまた、第1精度浮動小数点数は、倍精度浮動小数点数(double-precision floating-point format, FP64)であり得、第2精度浮動小数点数は、FP32であってもよく、又はFP16であってもよい。前述したいくつかのケースについて以下に個別に説明する。
【0087】
ケース1:第1精度浮動小数点数がFP32であり、第2精度浮動小数点数がFP16である場合に、FP32を分解して複数のFP16を取得することは、以下のケースを含み得る。
【0088】
I. 1つのFP32を分解して、3つのFP16を取得する。
【0089】
現在、標準フォーマットのFP32の構成が
図2に示されており、この構成には、1ビット(bit)の符号、8ビットの指数(べき指数とも呼ばれる)、及び23のビットの仮数が含まれる。さらに、1ビットの整数が省略されており、省略した整数は1である。標準フォーマットのFP32の場合に、整数及び仮数を加算すると、合計24ビットになる。標準フォーマットのFP16の構成が
図3に示されており、この構成には、1ビットの符号、5ビットの指数、及び10ビットの仮数が含まれる。また、1ビット整数が省略されており、省略した整数は1である。標準フォーマットのFP16である場合に、整数及び仮数を加算すると合計11ビットになる。標準フォーマットのFP32を分解して標準フォーマットのFP16を取得する必要がある場合に、標準フォーマットのFP16が3つ必要である。
【0090】
標準フォーマットのFP32の整数及び仮数は、3つの部分に分割することができる。第1の部分は整数と仮数の最初の10ビットとを含み、第2の部分は仮数の11番目のビット~21番目のビットを含み、第3の部分は仮数の22番目のビット及び23番目のビットを含む。3つの部分はそれぞれ、標準フォーマットのFP16によって表される。ここで、第3の部分の仮数の22番目のビット及び23番目のビットが標準フォーマットのFP16によって表される場合に、仮数の23番目のビットの後に9個のゼロを最初に埋め込まれ得、すなわち、仮数の22番目のビット及び23番目のビット及び埋め込まれたゼロは、標準フォーマットのFP16によって表されることに留意されたい。
【0091】
さらに、FP16の指数範囲は-15~15であり、これは、小数点が15ビット左に移動でき、15ビット右に移動できることを示し得る。標準フォーマットのFP16を使用してFP32の第1の部分を表す場合に、固定指数バイアス値は0である。標準フォーマットのFP16を使用してFP32の第2の部分を表す場合に、固定指数バイアス値は-11である。また、標準フォーマットのFP16を使用してFP32の第3の部分を表す場合に、固定指数バイアス値は-22である。第3の部分が表される場合に、対応する固定指数バイアス値のみがFP16の指数範囲を超えることが分かり得る。従って、対応する固定指数バイアス値は、標準フォーマットで各FP16の指数に対して抽出され得る。
【0092】
従って、標準フォーマットのFP32は、以下のように表され得る。
【数1】
ここで、A
1は標準フォーマットのFP32であり、EA
1はA
1の指数であり、a
0,a
1,a
2は、分解によって取得される標準フォーマットの3つのFP16であり、及びS
1は最小の固定指数バイアス値である。標準フォーマットのFP16である場合に、S
1=11である。
【0093】
さらに、共通の指数バイアス値は、標準フォーマットで全てのFP16の指数に対して抽出され得る。従って、標準フォーマットのFP32は、代替的に、以下のように表され得る。
【数2】
ここで、a
0’,a
1’,a
2’は、分解によって取得される標準フォーマットの3つのFP16である。前述した2つの表現方法では、分解によって取得されるFP16には、以下の関係がある。
【数3】
【0094】
II. 1つのFP32を分解して、2つのFP16を取得する。
【0095】
分解によって取得されるFP16の数量を減らすために、標準フォーマットの現在のFP16を調整することができる。FP16の仮数は13ビットに調整され、符号及び指数のビット数は変更されない。調整したFP16は、非標準フォーマットのFP16と呼ばれ得る。この場合に、非標準フォーマットのFP16の整数及び仮数を加算すると、合計14ビットになる。従って、非標準フォーマットのFP16を使用して、標準フォーマットのFP32の仮数を表す必要がある場合に、非標準フォーマットのFP16が2つだけ必要である。
【0096】
標準フォーマットのFP32の整数及び仮数は、2つの部分に分割される。第1の部分は整数と仮数の最初の13ビットとを含み、第2の部分は14番目のビット~23番目のビットを含む。2つの部分はそれぞれ、非標準フォーマットのFP16によって表される。
【0097】
ここでは、第2の部分が非標準のFP16によって表される場合に、仮数の23番目のビットの後に4つのゼロが最初に埋め込まれ得、すなわち、仮数の14番目のビット~23番目のビット及び埋め込まれたゼロは、非標準フォーマットのFP16によって表されることにさらに留意されたい。本明細書のケース1と同様に、対応する固定指数バイアス値もまた、標準フォーマットで各FP16に対して抽出され得る。
【0098】
従って、標準フォーマットのFP32は、代替的に、以下のように表され得る。
【数4】
ここで、A
2は標準フォーマットのFP32であり、EA
2はA
2の指数であり、a
3,a
4は、分解によって取得される非標準フォーマットの2つのFP16であり、及びS
2は固定指数バイアス値である。非標準フォーマットのFP16である場合に、S
2=14である。
【0099】
さらに、共通の指数バイアス値は、標準フォーマットで全てのFP16の指数に対して抽出され得る。従って、標準フォーマットのFP32は、代替的に、以下のように表され得る。
【数5】
ここで、a
3’,a
4’は、分解によって取得される非標準フォーマットの2つのFP16である。前述した2つの表現方法では、分解によって取得されるFP16には、以下の関係がある。
【数6】
【0100】
ケース2:第1精度浮動小数点数がFP64であり、第2精度浮動小数点数がFP32である場合に、FP64を分解して複数のFP32を取得することは、以下のケースを含み得る。
【0101】
I. 1つのFP64を分解して、3つのFP32を取得する。
【0102】
現在、標準フォーマットのFP64の構成が
図4に示されおり、この構成には、1ビット(bit)の符号、11ビットの指数(べき指数とも呼ばれる)、及び52ビットの仮数が含まれる。さらに、1ビットの整数が省略されており、省略した整数は1である。標準フォーマットのFP64の場合に、整数及び仮数を加算すると、合計53ビットになる。上記の標準フォーマットのFP32の場合に、整数及び仮数を加算すると、合計24ビットになる。標準フォーマットのFP64を分解して標準フォーマットのFP32を取得する必要がある場合に、標準フォーマットのFP32が3つ必要である。
【0103】
標準フォーマットのFP64の整数及び仮数は、3つの部分に分割することができる。第1の部分は整数と仮数の最初の23のビットを含み、第2の部分は仮数の24番目のビット~47番目のビットを含み、第3の部分は仮数の48番目のビット~52番目のビットを含む。3つの部分はそれぞれ、標準フォーマットのFP32によって表される。
【0104】
ここで、第3の部分の仮数の48番目のビット~52番目のビットが標準フォーマットのFP32によって表される場合に、18個のゼロが、仮数の23番目のビットの後に最初に埋め込まれ得、すなわち、仮数の48番目のビット~52番目のビット及び埋め込まれたゼロが、標準フォーマットのFP32によって表されることにさらに留意されたい。
【0105】
従って、標準フォーマットのFP64は、以下のように表され得る。
【数7】
ここで、A
3は標準フォーマットのFP64であり、EA
3はA
3の指数であり、及びa
5,a
6,a
7は、分解によって取得される標準フォーマットの3つのFP32である。
【0106】
II. 1つのFP64を分解して、2つのFP32を取得する。
【0107】
分解によって取得されるFP32の数量を減らすために、標準フォーマットの現在のFP32が調整され得る。FP32の仮数は26ビットに調整され、符号及び指数のビット数は変更されない。調整したFP32は、非標準フォーマットのFP32と呼ばれ得る。この場合に、非標準フォーマットのFP32の整数及び仮数を加算すると、合計27ビットになる。従って、非標準フォーマットのFP32を使用して、標準フォーマットのFP64の仮数を表す必要がある場合に、非標準フォーマットのFP32が2つだけ必要である。
【0108】
標準フォーマットのFP64の整数及び仮数は、2つの部分に分割される。第1の部分は整数と仮数の最初の26ビットとを含み、第2の部分は27番目のビット~53番目のビットを含む。2つの部分はそれぞれ、非標準フォーマットのFP32によって表される。
【0109】
従って、標準フォーマットのFP64は、代替的に、以下のように表され得る。
【数8】
ここで、A
4は標準フォーマットのFP
64であり、EA
4はA
4の指数であり、及びa
8,a
9は、分解によって取得される非標準フォーマットの2つのFP32である。
【0110】
ケース3:第1精度浮動小数点数がFP64であり、第2精度浮動小数点数がFP16である場合に、FP64を分解して複数のFP16を取得することは、以下のケースを含み得る。
【0111】
I. 1つのFP64を分解して、5つのFP16を取得する。
【0112】
標準フォーマットのFP64の場合に、整数及び仮数を加算すると、合計53ビットになる。上記の標準フォーマットのFP32の場合に、整数及び仮数を加算すると、合計24ビットになる。標準フォーマットのFP64を分解して標準フォーマットのFP16を取得する必要がある場合に、標準フォーマットのFP16が5つ必要である。
【0113】
標準フォーマットのFP64の整数及び仮数は、5つの部分に分割することができる。第1の部分は整数と仮数の最初の10ビットとを含み、第2の部分は仮数の11番目のビット~21番目のビットを含み、第3の部分は仮数の22番目のビット~32番目のビットを含み、第4の部分は仮数の33番目のビット~43番目のビットを含み、及び第5の部分は仮数の44番目のビット~52番目のビットを含む。5つの部分はそれぞれ、標準フォーマットのFP64によって表される。さらに、ここでは、第5の部分の仮数の44番目のビット~52番目のビットが標準フォーマットのFP16によって表される場合に、仮数の52番目のビットの後に2つのゼロが最初に埋め込まれ得、すなわち、仮数の44番目のビット~52番目のビット及び埋め込まれたゼロは、標準フォーマットのFP16によって表されることに留意されたい。
【0114】
さらに、FP16の指数範囲は-15~15であり、これは、小数点が15ビット左に移動でき、15ビット右に移動できることを示し得る。標準フォーマットのFP16を使用してFP64の第1の部分を表す場合に、固定指数バイアス値は0である。標準フォーマットのFP16を使用してFP64の第2の部分を表す場合に、固定指数バイアス値は-11である。標準フォーマットのFP16を使用してFP64の第3の部分を表す場合に、固定指数バイアス値は-22である。標準フォーマットのFP16を使用してFP64の第4の部分を表す場合に、固定指数バイアス値は-33である。また、標準フォーマットのFP16を使用してFP64の第5の部分を表す場合に、固定指数バイアス値は-44である。第3の部分、第4の部分、及び第5の部分が表されるときに、対応する固定指数バイアス値のみが、FP16の指数範囲を超えることが分かり得る。従って、対応する固定指数バイアス値は、標準フォーマットで各FP16の指数に対して抽出され得る。
【0115】
従って、標準フォーマットのFP64は、以下のように表され得る。
【数9】
ここで、A
5は標準フォーマットのFP64であり、EA
5はA
5の指数であり、a
10,a
11,a
12,a
13,a
14は、
分解によって取得される標準フォーマットの5つのFP16であり、及びS
1は最小の固定指数バイアス値である。標準フォーマットのFP16である場合に、S
1=11である。
【0116】
II. 1つのFP64を分解して、4つのFP16を取得する。
【0117】
同様に、FP64を分解して、非標準フォーマットの前述したFP16を取得することができる。非標準フォーマットのFP16を使用して標準フォーマットのFP64の仮数が表される場合に、非標準フォーマットのFP16は4つだけ必要である。
【0118】
標準フォーマットのFP64の整数及び仮数は、4つの部分に分割される。第1の部分は整数と仮数の最初の13ビットを含み、第2の部分は14番目のビット~27番目のビットを含み、第3の部分は28番目のビット~41番目のビットを含み、第4の部分は42番目のビット~52番目のビットを含む。
【0119】
ここで、第4の部分の仮数の42番目のビット~52番目のビットが非標準フォーマットのFP16によって表される場合に、仮数の52番目のビットの後に3つのゼロが最初に埋め込まれ得、すなわち、仮数の42番目のビット~52番目のビット及び埋め込まれたゼロは、標準フォーマットのFP16によって表されることにさらに留意されたい。さらに、FP16の指数範囲は-15~15であり、これは、小数点が15ビット左に移動でき、15ビット右に移動できることを示し得る。非標準フォーマットのFP16を使用してFP64の第1の部分を表す場合に、固定指数バイアス値は0である。非標準フォーマットのFP16を使用してFP64の第2の部分を表す場合に、固定指数バイアス値は-14である。非標準フォーマットのFP16を使用してFP64の第3の部分を表す場合に、固定指数バイアス値は-28である。また、非標準フォーマットのFP16を使用してFP64の第4の部分を表す場合に、固定指数バイアス値は-42である。第3の部分及び第4の部分が表されるときに、対応する固定指数バイアス値のみが、FP16の指数範囲を超えることが分かり得る。従って、対応する固定指数バイアス値は、非標準フォーマットで各FP16の指数に対して抽出され得る。
【0120】
従って、標準フォーマットのFP64は、代替的に、以下のように表され得る。
【数10】
ここで、A
6は標準フォーマットのFP64であり、EA
6はA
6の指数であり、a
15,a
16,a
17,a
18は、
分解によって取得される非標準フォーマットの4つのFP16であり、及びS
2は最小の固定指数バイアス値である。標準フォーマットのFP16である場合に、S
2=-14である。
【0121】
ステップ103:異なる第1精度浮動小数点数を分解して得られる2つの第2精度浮動小数点数を含む様々な組合せを決定する。
【0122】
実施態様において、異なる第1精度浮動小数点数を分解して得られる第2精度浮動小数点数が2つ毎に組み合わされる。2つのFP32をそれぞれ分解して複数のFP16を取得し、2つのFP64をそれぞれ分解して複数のFP32を取得し、2つのFP64をそれぞれ分解して複数のFP16を取得する例について以下に説明する。
【0123】
ケース1:2つのFP32をそれぞれ分解して、複数のFP16を取得する。
【0124】
I. 標準フォーマットの2つのFP32をそれぞれ分解して、標準フォーマットの3つのFP16を取得する。2つのFP32はそれぞれA1及びB1であり、ここで、A1を分解してa0,a1,a2を取得することができ、B1を分解してb0,b1,b2を取得することができる。従って、a0,a1,a2,b0,b1,b2の組合せは、a0b0,a0b1,a1b0,a0b2,a1b1,a2b0,a1b2,a2b1,a2b2のようになり得る。
【0125】
II. 標準フォーマットの2つのFP32をそれぞれ分解して、非標準フォーマットの2つのFP16を取得する。2つのFP32はそれぞれA2及びB2であり、ここで、A2を分解してa3,a4を取得することができ、B2を分解してb3,b4を取得することができる。従って、従って、a3,a4,b3,b4の組合せは、a3b3,a3b4,a4b3,a4b4のようになり得る。
【0126】
ケース2:2つのFP64をそれぞれ分解して、複数のFP32を取得する。
【0127】
I. 標準フォーマットの2つのFP64をそれぞれ分解して、標準フォーマットの3つのFP32を取得する。2つのFP64はそれぞれA3及びB3であり、ここで、A3を分解してa5,a6,a7を取得することができ、B3を分解してb5,b6,b7を取得することができる。従って、a5,a6,a7,b5,b6,b7の組合せは、a5b5,a5b6,a6b5,a5b7,a6b6,a7b5,a6b7,a7b6,a7b7のようになり得る。
【0128】
II. 標準フォーマットの2つのFP64をそれぞれ分解して、非標準フォーマットの2つのFP32を取得する。2つのFP64はそれぞれA4及びB
4
であり、ここで、A4を分解してa8,a9を取得することができ、B4を分解してb8,b9を取得することができる。従って、a8,a9,b8,b9の組合せは、a8b8,a8b9,a9b8,a9b9のようになり得る。
【0129】
ケース3:2つのFP64をそれぞれ分解して、複数のFP16を取得する。
【0130】
I. 標準フォーマットの2つのFP64をそれぞれ分解して、標準フォーマットの5つのFP16を取得する。2つのFP64はそれぞれA5及びB5であり、ここで、A5を分解してa10,a11,a12,a13,a14を取得することができ、B5を分解してb10,b11,b12,b13,b14を取得することができる。従って、a10,a11,a12,a13,a14,b10,b11,b12,b13,b14の組合せは、25個あり、a10b10,a10b11,a11b10,a10b12,a11b11,a12b10,...,a14b14等のようになり得る。本明細書の組合せ方法は、前述したものと同じであり、ここでは1つずつ列挙していない。
【0131】
II. 標準フォーマットの2つのFP64をそれぞれ分解して、非標準フォーマットの4つのFP16を取得する。2つのFP64はそれぞれA6及びB6であり、ここで、A6を分解してa15,a16,a17,a18を取得することができ、B6を分解してb15,b16,b17,b18を取得することができる。従って、a15,a16,a17,a18,b15,b16,b17,b18の組合せは、16個あり、a15b15,a15b16,a16b15,...,a18b18等のようになり得る。本明細書の組合せ方法は、前述したものと同じであり、ここでは1つずつ列挙していない。
【0132】
ステップ104:各組合せにおける第2精度浮動小数点数を第2精度乗算器に入力して、各組合せに対応する中間計算結果を取得する。
【0133】
実施態様において、取得した各組合せを、計算のために第2精度乗算器に入力して、その組合せに対応する中間計算結果を取得する。第2精度浮動小数点数が異なる場合に、出力される中間計算結果の精度も異なる。例えば、第1精度浮動小数点数がFP32である場合に、中間計算結果はFP64である。或いは、第1精度浮動小数点数がFP16である場合に、中間計算結果はFP32である。第2精度乗算器の数量は、第2精度浮動小数点数の組合せの数量と同じであってもよく、又は異なっていてもよい。
【0134】
図5に示されるように、第2精度乗算器の数量が第2精度浮動小数点数の組合せの数量と同じである場合に、2つの第1精度浮動小数点数A及びBをそれぞれ分解して、2つの第2精度浮動小数点数、A1及びA0、並びにB1及びB0を取得する。A1、A0、B1、及びB0に対して4つの組合せを取得することができ、4つの第2精度乗算器がある。第2精度浮動小数点数の各組合せは、第2精度乗算器に入力される。つまり、各組合せは第2精度
乗算器に対応する。
【0135】
図6に示されるように、第2精度乗算器の数量が第2精度浮動小数点数の組合せの数量と異なる場合に、2つの第1精度浮動小数点数A及びBをそれぞれ分解して、2つの第2精度浮動小数点数、A1及びA0、並びにB1及びB0を取得する。A1、A0、B1、及びB0に対して4つの組合せを取得することができ、第2精度乗算器は1つだけである。この場合に、第2精度浮動小数点数の4つの組合せが、第2精度乗算器に順次入力される。
【0136】
ステップ105:各組合せに対応する中間計算結果に基づいて、計算すべき複数の第1精度浮動小数点数の計算結果を決定する。
【0137】
実施態様において、第1精度浮動小数点数を分解して第2精度浮動小数点数を取得する場合に、各第2精度浮動小数点数に対応する指数バイアス値がさらに取得され得る。ステップ102において計算すべき第1精度浮動小数点数が分解されるいくつかのケースにおいて、第2精度浮動小数点数に対応する指数バイアス値について以下に個別に説明する。
【0138】
ケース1:第1精度浮動小数点数はFP32であり、第2精度浮動小数点数はFP16である。
【0139】
I. 1つのFP32を分解して、3つのFP16を取得する。
【0140】
この場合に、FP32は、以下のように表され得る。
【数11】
従って、a
0に対応する指数バイアス値はEA
1であり、a
1に対応する指数バイアス値はEA
1-S
1であり、a
2に対応する指数バイアス値はEA
1-2S
1である。あるいはまた、FP32は、以下のように表され得る。
【数12】
従って、a
0’,a
1’,a
2’にそれぞれ対応する指数バイアス値はEA
1-S
1である。
【0141】
II. 1つのFP32を分解して、2つのFP16を取得する。
【0142】
この場合に、FP32は、以下のように表され得る。
【数13】
従って、a
3に対応する指数バイアス値はEA
2であり、a
4に対応する指数バイアス値はEA
2-S
2である。あるいはまた、FP32は、以下のように表され得る。
【数14】
従って、a
3’,a
4’にそれぞれ対応する指数バイアス値はEA
2-S
2である。
【0143】
ケース2:第1精度浮動小数点数はFP64であり、第2精度浮動小数点数はFP32である。
【0144】
I. 1つのFP64を分解して、3つのFP32を取得する。
【0145】
この場合に、FP64は、以下のように表され得る。
【数15】
従って、a
5,a
6,a
7にそれぞれ対応する指数バイアス値はEA
3である。
【0146】
II. 1つのFP64を分解して、2つのFP32を取得する。
【0147】
この場合に、FP64は、以下のように表され得る。
【数16】
従って、a
8,a
9にそれぞれ対応する指数バイアス値はEA
4である。
【0148】
ケース3:第1精度浮動小数点数がFP64であり、第2精度浮動小数点数がFP16である場合に、FP64を分解して複数のFP16を取得することは、以下のケースを含み得る。
【0149】
I. 1つのFP64を分解して、5つのFP16を取得する。
【0150】
この場合に、FP64は、以下のように表され得る。
【数17】
従って、a
10に対応する指数バイアス値はEA
5であり、a
11に対応する指数バイアス値はEA
5-S
1であり、a
12に対応する指数バイアス値はEA
5-2S
1であり、a
13に対応する指数バイアス値はEA
5-3S
1であり、a
14に対応する指数バイアス値はEA
5-4S
1である。
【0151】
II. 1つのFP64を分解して、4つのFP16を取得する。
【0152】
この場合に、FP64は、以下のように表され得る。
【数18】
従って、a
15に対応する指数バイアス値はEA
6であり、a
16に対応する指数バイアス値はEA
6-S
2であり、a
17に対応する指数バイアス値はEA
6-2S
2であり、a
18に対応する指数バイアス値はEA
6-3S
2である。
【0153】
同様に、各組合せに対応する中間計算結果について、各組合せに対応する中間計算結果の指数を、各組合せにおける第2精度浮動小数点数に対応する指数バイアス値に基づいて調整して、調整した中間計算結果を取得することができる。次に、調整した中間計算結果を累積して、計算結果を取得する。ここでの累積中に、調整した中間計算結果をアキュムレータに入力して、計算結果を取得することができる。
【0154】
中間計算結果の指数を調整する場合に、第2精度浮動小数点数の各組合せに対応する中間計算結果の指数と、各組合せにおける第2精度浮動小数点数に対応する指数バイアス値とを加算して、調整した中間計算結果を取得することができる。
【0155】
可能な実施態様では、第2精度乗算器によって出力される第2精度中間計算結果のフォーマットを調整して、最終的により高い精度の計算結果を取得することができる。対応する処理は次の通りである。各組合せにおける第2精度浮動小数点数を第2精度乗算器に入力して、第2精度浮動小数点数の各組合せに対応する第1精度中間計算結果を取得し、各第1精度中間計算結果に対してフォーマット変換を実行して、第2精度浮動小数点数の各組合せに対応する第3精度中間計算結果を取得する。ここで、第3精度中間計算結果の精度は、第1精度中間計算結果の精度よりも高い。第2精度浮動小数点数の各組合せに対応する第3精度中間計算結果の指数は、各組合せにおける第2精度浮動小数点数に対応する指数バイアス値に基づいて調整され、調整した第3精度浮動小数点数が取得される。第2精度浮動小数点数の全てのグループに対応する調整した第3精度中間計算結果に対して総和演算を実行して、複数の第1精度浮動小数点数の第3精度計算結果を取得する。
【0156】
第1精度中間計算結果に対してフォーマット変換を行う場合に、各第1精度中間結果の指数及び仮数に対してゼロパディング処理を実行し、第2精度浮動小数点数の各組合せに対応する第3精度中間計算結果を取得することができる。
【0157】
例えば、第1精度浮動小数点数がFP32であり、第2精度浮動小数点数がFP16である場合に、第2精度乗算器によって出力される第1精度中間計算結果もまた、FP32である。第1精度中間計算結果のフォーマットは、第3精度中間計算結果に合わせて調整することができ、第3精度中間計算結果は、FP64であり得る。具体的には、第1精度中間計算結果の指数のエンドビットの後に3つのゼロを埋め込んで、指数ビットの数を8ビットから11ビットに拡張し、指数ビットの数は、FP64の指数ビットの数と同じである。第1精度中間計算結果の仮数の場合に、エンドビットの後に29個のゼロを埋め込んで、仮数ビットの数が23ビットから52ビットに拡張される。仮数ビットの数は、FP64の仮数ビットの数と同じである。
【0158】
次に、第3精度中間計算結果の指数を調整した後に、調整した中間計算結果を累積して、第3精度計算結果を取得する。同様に、ここでの累積中に、調整した中間計算結果をアキュムレータに入力して、計算結果を取得することができる。
【0159】
ここでは、本願の実施形態における解決策の全体的な手順をよりよく反映するために、説明のための例として、第1精度浮動小数点数A及びBに対する乗算計算を使用する。
図9は、本願の一実施形態による浮動小数点数の乗算計算方法の概略フローチャートである。
【0160】
A及びBに対して第1精度浮動小数点数の分解ロジックを別々に入力し、A及びBに対して第1精度浮動小数点数の分解を別々に実行して、Aに対応する第2精度浮動小数点数A1及びA0と、A1及びA0にそれぞれ対応する指数バイアス値とを取得し、Bに対応する第2精度浮動小数点数B1及びB0と、B1及びB0にそれぞれ対応する指数バイアス値とを取得する。分解ロジックは、ハードウェアの論理回路を使用して実施することができる。具体的な分解方法については、ステップ102を参照されたい。
【0161】
次に、異なる第1精度浮動小数点数を分解して得られる第2精度浮動小数点数を組み合わせ、取得した各組合せを第2精度乗算器に入力して、その組合せに対応する中間計算結果を取得する。特定の組合せ方法については、ステップ103を参照されたい。中間計算結果を計算するための特定の方法については、ステップ104を参照されたい。
【0162】
また、各組合せに対応する中間計算結果に対して指数調整ロジックを実行し、その組合せにおける第2精度浮動小数点数に対応する指数バイアス値を使用して、中間計算結果の指数を調整して、調整した中間計算結果を取得する。特定のステップについては、ステップ105の調整方法を参照されたい。前述した指数調整は、指数調整論理回路によって実行され得る。
【0163】
最後に、全ての組合せに対応する調整した中間計算結果を累積のためにアキュムレータに入力して、最終的な計算結果を取得することができる。具体的なステップについては、ステップ105の方法の説明を参照されたい。アキュムレータはハードウェア・アキュムレータ回路である。
【0164】
同様に、本願の実施形態における解決策の全体的な手順をよりよく反映するために、説明のための例として、第1精度浮動小数点数A及びBに対する乗算計算を使用する。
図10は、本願の一実施形態による別の浮動小数点数の乗算計算方法の概略フローチャートである。
【0165】
A及びBに対して第1精度浮動小数点数の分解ロジックを別々に入力し、A及びBに対して第1精度浮動小数点数の分解を別々に実行して、Aに対応する複数の第2精度浮動小数点数A3、A2、A1、及びA0と、A3、A2、A1、及びA0にそれぞれ対応する指数バイアス値とを取得し、Bに対応する複数の第2精度浮動小数点数B3、B2、B1、及びB0と、B3、B2、B1、及びB0にそれぞれ対応する指数バイアス値とを取得する。分解ロジックは、ハードウェアの論理回路を使用して実施することができる。具体的な分解方法については、ステップ102を参照されたい。
【0166】
次に、異なる第1精度浮動小数点数を分解して得られる第2精度浮動小数点数を組み合わせ、取得した各組合せを第2精度乗算器に入力して、その組合せに対応する第3精度中間計算結果を取得する。特定の組合せ方法については、ステップ103を参照されたい。中間計算結果を計算するための特定の方法については、ステップ104を参照されたい。
【0167】
また、各組合せに対応する第3精度中間計算結果に対してフォーマット変換ロジックを実行して、各組合せに対応する第3精度中間計算結果のフォーマットを第1精度中間計算結果に変換する。特定のステップについては、ステップ105のフォーマット変換方法を参照されたい。前述したフォーマット変換は、フォーマット変換論理回路によって実行され得る。
【0168】
さらに、各組合せに対応する第1精度中間計算結果に対して指数調整ロジックを実行し、その組合せにおける第2精度浮動小数点に対応する指数バイアス値を使用して、第1精度中間計算結果の指数を調整して、調整した第1精度中間計算結果を取得する。特定のステップについては、ステップ105の調整方法を参照されたい。前述した指数調整は、指数調整論理回路によって実行され得る。
【0169】
最後に、全ての組合せに対応する調整した第1精度中間計算結果を、累積のためにアキュムレータに入力して、最終的な第1精度計算結果を取得することができる。具体的なステップについては、ステップ105の方法の説明を参照されたい。アキュムレータはハードウェア・アキュムレータ回路である。
【0170】
同様に、本願の実施形態における解決策の全体的な手順をよりよく反映するために、説明のための例として、第1精度浮動小数点数A及びBに対する乗算計算を使用する。
図11は、本願の一実施形態による別の浮動小数点数の乗算計算方法の概略フローチャートである。
【0171】
A及びBに対して第1精度浮動小数点数の分解ロジックを別々に入力し、A及びBに対して第1精度浮動小数点数の分解を別々に実行して、Aに対応する複数の第2精度浮動小数点数A1及びA0と、A1及びA0にそれぞれ対応する指数バイアス値とを取得し、Bに対応する複数の第2精度浮動小数点数B1及びB0と、B1及びB0にそれぞれ対応する指数バイアス値とを取得する。分解ロジックは、ハードウェアの論理回路を使用して実施することができる。具体的な分解方法については、ステップ102を参照されたい。
【0172】
次に、異なる第1精度浮動小数点数を分解して得られる第2精度浮動小数点数を組み合わせ、取得した各組合せを第2精度乗算器に入力して、その組合せに対応する第1精度中間計算結果を取得する。特定の組合せ方法については、ステップ103を参照されたい。中間計算結果を計算するための特定の方法については、ステップ104を参照されたい。
【0173】
また、各組合せに対応する第1精度中間計算結果に対してフォーマット変換ロジックを実行して、各組合せに対応する第1精度中間計算結果のフォーマットを第3精度中間計算結果に変換する。特定のステップについては、ステップ105のフォーマット変換方法を参照されたい。前述したフォーマット変換は、フォーマット変換論理回路によって実行され得る。
【0174】
さらに、各組合せに対応する第3精度中間計算結果に対して指数調整ロジックを実行し、その組合せにおける第2精度浮動小数点に対応する指数バイアス値を使用して、第3精度中間計算結果の指数を調整して、調整した第3精度中間計算結果を取得する。特定のステップについては、ステップ105の調整方法を参照されたい。前述した指数調整は、指数調整論理回路によって実行され得る。
【0175】
最後に、全ての組合せに対応する調整した第3精度中間計算結果を、累積のためにアキュムレータに入力して、最終的な第3精度計算結果を取得することができる。具体的なステップについては、ステップ105の方法の説明を参照されたい。アキュムレータはハードウェア・アキュムレータ回路である。
【0176】
さらに、本願の実施形態で提供する浮動小数点数計算方法を使用して、その精度が第2精度以上である浮動小数点数を計算することができることにさらに留意されたい。ここで、第2精度とは、その計算が第2精度乗算器によってサポートされる浮動小数点数の精度を指す。
【0177】
例えば、第2精度乗算器は半精度乗算器であり、すなわち、その計算がサポートされる浮動小数点数の精度は半分の精度である。従って、本願の実施形態では、半精度浮動小数点数、単精度浮動小数点数、倍精度浮動小数点数、及びより高精度の浮動小数点数の計算を実施することができる。半精度浮動小数点数の計算では、半精度浮動小数点数を分解する必要はなく、計算すべき半精度浮動小数点数を半精度乗算器に入力するだけでよいことが理解され得る。もっとも、単精度浮動小数点数及びより高精度の浮動小数点数の計算は、前述した浮動小数点数の乗算計算方法を使用して実施することができる。
【0178】
本願の実施形態では、比較的精度の高い複数の第1精度浮動小数点数を、比較的精度の低い第2精度乗算器によって計算することができ、もはや第1精度乗算器を使用する必要はない。従って、比較的精度の高い第1精度浮動小数点数は、比較的精度の低い第2精度乗算器のみを有する装置で計算することができ、第1精度乗算器を追加で設計する必要がなく、それにより計算リソースを効果的に節約する。
【0179】
同じ技術的概念に基づいて、本願の一実施形態は、浮動小数点数の乗算計算機器をさらに提供する。
図7に示されるように、機器は、取得モジュール710、分解モジュール720、組合せモジュール730、入力モジュール740、及び決定モジュール750を含む。
【0180】
取得モジュール710は、計算すべき複数の第1精度浮動小数点数を取得するように構成され、ステップ201及び別の暗黙的なステップで取得機能を具体的に実施することができる。
【0181】
分解モジュール720は、計算すべき各第1精度浮動小数点数を分解して、少なくとも2つの第2精度浮動小数点数を取得するように構成され、ステップ202及び別の暗黙的なステップで分解機能を具体的に実施することができる。ここで、第2精度浮動小数点数の精度は、第1精度浮動小数点数の精度よりも低い。
【0182】
組合せモジュール730は、異なる第1精度浮動小数点数を分解して得られる2つの第2精度浮動小数点数を含む様々な組合せを決定するように構成され、ステップ203及び別の暗黙的なステップで組合せ機能を具体的に実施することができる。
【0183】
入力モジュール740は、各組合せにおける第2精度浮動小数点数を第2精度乗算器に入力して、各組合せに対応する中間計算結果を取得するように構成され、ステップ204及び別の暗黙的なステップで入力機能を具体的に実施することができる。
【0184】
決定モジュール750は、各組合せに対応する中間計算結果に基づいて、計算すべき複数の第1精度浮動小数点数の計算結果を決定するように構成され、ステップ205及び別の暗黙的なステップで決定機能を具体的に実施することができる。
【0185】
可能な実施態様では、分解モジュール720は、各第2精度浮動小数点数に対応する指数バイアス値を決定するようにさらに構成される。
【0186】
決定モジュール750は、
各組合せにおける第2精度浮動小数点数に対応する指数バイアス値に基づいて、各組合せに対応する中間計算結果の指数を調整して、調整した中間計算結果を取得し、及び
全ての組合せに対応する調整した中間計算結果に対して総和演算を実行して、複数の第1精度浮動小数点数の計算結果を取得するように構成される。
【0187】
可能な実施態様では、決定モジュール750は、第2精度浮動小数点数の各組合せに対応する中間計算結果の指数と、各組合せにおける第2精度浮動小数点数に対応する指数バイアス値とを加算して、調整した中間計算結果を取得するように構成される。
【0188】
可能な実施態様では、中間計算結果は、第1精度中間計算結果であり、計算結果は、第1精度計算結果である。
【0189】
可能な実施態様では、第1精度浮動小数点数は単精度浮動小数点数であり、第2精度浮動小数点数は半精度浮動小数点数であり、第1精度中間計算結果は単精度中間計算結果であり、第1精度計算結果は単精度計算結果であり、第2精度乗算器は半精度乗算器である、又は
第1精度浮動小数点数は倍精度浮動小数点数であり、第2精度浮動小数点数は単精度浮動小数点数であり、第1精度中間計算結果は倍精度中間計算結果であり、第1精度計算結果は倍精度計算結果であり、第2精度乗算器は単精度乗算器である。
【0190】
可能な実施態様では、入力モジュール740は、各組合せにおける第2精度浮動小数点数を第2精度乗算器に入力して、各組合せに対応する第1精度中間計算結果を取得し、各第1精度中間計算結果に対してフォーマット変換を実行して、各組合せに対応する第3精度中間計算結果を取得するように構成される。ここで、第3精度中間計算結果の精度は、第1精度中間計算結果の精度よりも高い。
【0191】
決定モジュール750は、
各組合せにおける第2精度浮動小数点数に対応する指数バイアス値に基づいて、各組合せに対応する第3精度中間計算結果の指数を調整して、調整した第3精度中間計算結果を取得し、及び
全ての組合せに対応する調整した第3精度中間計算結果に対して総和演算を実行して、複数の第1精度浮動小数点数の第3精度計算結果を取得するように構成される。
【0192】
可能な実施態様では、入力モジュール740は、各第1精度中間結果の指数及び仮数に対しゼロパディング処理を実行して、第2精度浮動小数点数の各組合せに対応する第3精度中間計算結果を取得するように構成される。
【0193】
可能な実施態様では、第1精度浮動小数点数は単精度浮動小数点数であり、第2精度浮動小数点数は半精度浮動小数点数であり、第1精度中間計算結果は単精度中間計算結果であり、第3精度中間計算結果は倍精度中間計算結果であり、第3精度計算結果は倍精度計算結果であり、第2精度乗算器は半精度乗算器である。
【0194】
可能な実施態様では、入力モジュール740は、各組合せにおける第2精度浮動小数点数を第2精度乗算器に入力して、各組合せに対応する第3精度中間計算結果を取得し、各第3精度中間計算結果に対してフォーマット変換を実行して、各組合せに対応する第1精度中間計算結果を取得するように構成される。
【0195】
決定モジュール750は、
各組合せにおける第2精度浮動小数点数に対応する指数バイアス値に基づいて、各組合せに対応する第1精度中間計算結果の指数を調整して、調整した第1精度中間計算結果を取得し、及び
第2精度浮動小数点数の全てのグループに対応する調整した第1精度中間計算結果に対して総和演算を実行して、複数の第1精度浮動小数点数の第1精度計算結果を取得するように構成される。
【0196】
可能な実施態様では、第1精度浮動小数点数は倍精度浮動小数点数であり、第2精度浮動小数点数は半精度浮動小数点数であり、第3精度中間計算結果は単精度中間計算結果であり、第1精度中間計算結果は倍精度中間計算結果であり、第1精度計算結果は倍精度計算結果であり、第2精度乗算器は半精度乗算器である。
【0197】
前述したモジュールは、プロセッサによって実現され得るか、又はメモリと一緒にプロセッサによって実現され得るか、又はプロセッサによってメモリ内のプログラム命令を実行することによって実現され得ることに留意されたい。
【0198】
前述した機能モジュールの分割は、前述した実施形態で提供される浮動小数点数の乗算計算機器による浮動小数点数の計算中の例としてのみ説明されることに留意されたい。実際のアプリケーションでは、前述した機能は、要件に基づいて、異なる機能モジュールによって実現されるように割り当てられ、具体的には、電子装置の内部構造は、上で説明した機能の全て又は一部を実現するために異なる機能モジュールに分割され得る。また、前述した実施形態で提供される浮動小数点数の乗算計算機器と、浮動小数点数の乗算計算方法の実施形態は、同じ概念に属する。機器の特定の実施プロセスについては、方法の実施形態を参照されたい。詳細については、ここでは再び説明しない。
【0199】
同じ技術的概念に基づいて、本願の一実施形態は、算術論理演算装置をさらに提供する。算術論理演算装置は、プロセッサ内のハードウェア計算装置である。
図12に示されるように、算術論理演算装置は、浮動小数点数の分解回路、第2精度乗算器、指数調整回路、及びアキュムレータを含む。
【0200】
浮動小数点数の分解回路は、各入力の計算すべき第1精度浮動小数点数を少なくとも2つの第2精度浮動小数点数に分解し、各第2精度浮動小数点数に対応する指数バイアス値を指数調整回路に出力するように構成され、ここで、第2精度浮動小数点数の精度は、第1精度浮動小数点数の精度よりも低い。複数の第1精度浮動小数点数を続けて浮動小数点数の分解回路に入力して分解計算するか、又は複数の浮動小数点数の分解回路で1つの第1精度浮動小数点数の分解計算を個別に行うことができる。
【0201】
第2精度乗算器は、異なる第1精度浮動小数点数を分解して得られる2つの第2精度浮動小数点数を含む組合せを受け取り、各組合せにおける第2精度浮動小数点数に対して乗算演算を実行し、各組合せに対応する中間計算結果を指数調整回路に出力するように構成される。
【0202】
指数調整回路は、各入力組合せにおける第2精度浮動小数点数に対応する指数バイアス値に基づいて、各入力組合せに対応する中間計算結果の指数を調整し、調整した中間計算結果をアキュムレータに出力するように構成される。
【0203】
アキュムレータは、全ての入力組合せに対応する調整した中間計算結果に対して総和演算を実行し、複数の第1精度浮動小数点数の計算結果を出力するように構成される。
【0204】
可能な実施態様では、指数調整回路は、各入力組合せにおける第2精度浮動小数点数に対応する指数バイアス値と、各入力組合せに対応する中間計算結果の指数とを加算し、調整した中間計算結果をアキュムレータに出力するように構成される。
【0205】
可能な実施態様では、中間計算結果は、第1精度中間計算結果であり、計算結果は、第1精度計算結果である。
【0206】
可能な実施態様では、第1精度浮動小数点数は単精度浮動小数点数であり、第2精度浮動小数点数は半精度浮動小数点数であり、第1精度中間計算結果は単精度中間計算結果であり、第1精度計算結果は単精度計算結果であり、第2精度乗算器は半精度乗算器である、又は
第1精度浮動小数点数は倍精度浮動小数点数であり、第2精度浮動小数点数は単精度浮動小数点数であり、第1精度中間計算結果は倍精度中間計算結果であり、第1精度計算結果は倍精度計算結果であり、第2精度乗算器は単精度乗算器である。
【0207】
可能な実施態様では、算術論理演算装置は、フォーマット変換回路をさらに含む。
【0208】
第2精度乗算器は、具体的には、各組合せにおける第2精度浮動小数点数に対して乗算演算を実行し、各組合せに対応する第1精度中間計算結果をフォーマット変換回路に出力するように構成される。
【0209】
フォーマット変換回路は、各入力の第1精度中間計算結果に対してフォーマット変換を実行し、各組合せに対応する第3精度中間計算結果を指数調整回路に出力するように構成され、ここで、第3精度中間計算結果の精度は、第1精度中間計算結果の精度よりも高い。
【0210】
指数調整回路は、各入力組合せにおける第2精度浮動小数点数に対応する指数バイアス値に基づいて、各入力組合せに対応する第3精度中間計算結果の指数を調整し、調整した第3精度中間計算結果をアキュムレータに出力するように構成される。
【0211】
アキュムレータは、全ての入力組合せに対応する調整した第3精度中間計算結果に対して総和演算を実行し、複数の第1精度浮動小数点数について第3精度計算結果を出力するように構成される。
【0212】
可能な実施態様では、フォーマット変換回路は、各入力の第1精度中間計算結果の指数及び仮数に対してゼロパディング処理を実行し、各組合せに対応する第3精度中間計算結果を指数調整回路に出力するように構成される。
【0213】
可能な実施態様では、第1精度浮動小数点数は単精度浮動小数点数であり、第2精度浮動小数点数は半精度浮動小数点数であり、第1精度中間計算結果は単精度中間計算結果であり、第3精度中間計算結果は倍精度中間計算結果であり、第3精度計算結果は倍精度計算結果であり、第2精度乗算器は半精度乗算器である。
【0214】
可能な実施態様では、算術論理演算装置は、フォーマット変換回路をさらに含む。
【0215】
第2精度乗算器は、各組合せにおける第2精度浮動小数点数に対して乗算演算を実行し、各組合せに対応する第3精度中間計算結果をフォーマット変換回路に出力するように構成される。
【0216】
フォーマット変換回路は、各入力の第3精度中間計算結果に対してフォーマット変換を実行し、各組合せに対応する第1精度中間計算結果を指数調整回路に出力するように構成される。
【0217】
指数調整回路は、各入力組合せにおける第2精度浮動小数点数に対応する指数バイアス値に基づいて、各入力組合せに対応する第1精度中間計算結果の指数を調整し、調整した第1精度中間計算結果をアキュムレータに出力するように構成される。
【0218】
アキュムレータは、全ての入力組合せに対応する調整した第1精度中間計算結果に対して総和演算を実行し、複数の第1精度浮動小数点数に対して第1精度計算結果を出力するように構成される。
【0219】
可能な実施態様では、第1精度浮動小数点数は倍精度浮動小数点数であり、第2精度浮動小数点数は半精度浮動小数点数であり、第3精度中間計算結果は単精度中間計算結果であり、第1精度中間計算結果は倍精度中間計算結果であり、第1精度計算結果は倍精度計算結果であり、第2精度乗算器は半精度乗算器である。
【0220】
可能な実施態様では、算術論理演算装置は、計算モード切替え回路をさらに含む。
【0221】
計算モード切替え回路は、計算モード切替え回路が第2精度浮動小数点数の計算モードに設定されている場合に、浮動小数点数の分解回路及び指数調整回路を無効に設定するように構成される。
【0222】
第2精度乗算器は、算術論理演算装置の外部から入力される計算すべき第2精度浮動小数点数の複数のグループを受け取り、第2精度浮動小数点数の各グループに対して乗算演算を実行し、計算すべき第2精度浮動小数点数の各グループに対応する中間計算結果を入力するように構成される。
【0223】
アキュムレータは、計算すべき第2精度浮動小数点数の全ての入力グループに対応する中間計算結果に対して総和演算を実行し、計算すべき第2精度浮動小数点数の複数のグループの計算結果を出力するように構成される。
【0224】
図14に示されるように、算術論理演算装置は、モード切り替え、すなわち、第1精度浮動小数点数の演算モードと第2精度浮動小数点数の演算モードとの間の切り替えをさらにサポートすることができる。第1精度浮動小数点数の演算モードでは、浮動小数点数の分解回路、第2精度乗算器、フォーマット変換回路、指数調整回路、及びアキュムレータを使用して、第1精度浮動小数点数に対して乗算演算を行うことができる。第2精度浮動小数点数の演算モードでは、浮動小数点数の分解回路、フォーマット変換回路、指数調整回路を無効にすることができ、第2精度乗算器及びアキュムレータのみを使用する。計算すべき第2精度浮動小数点数の複数のグループが第2精度乗算器に直接入力され、計算すべき第2精度浮動小数点数の複数のグループに対応する中間計算結果が出力され、次に、中間計算結果をアキュムレータに入力して累積演算を行い、計算すべき第2精度浮動小数点数の複数のグループに対応する計算結果を取得する。
【0225】
ここでは、前述した実施形態で提供される論理演算装置と、浮動小数点数の乗算計算方法の実施形態とは、同じ概念に属することに留意されたい。論理演算装置の特定の実装プロセスについては、方法の実施形態を参照されたい。詳細については、ここでは再び説明しない。
【0226】
図8を参照すると、本願の一実施形態は、電子装置を提供する。電子装置800は、少なくとも1つのプロセッサ801、バスシステム802、及びメモリ803を含む。
【0227】
プロセッサ801は、汎用中央処理装置(central processing unit, CPU)、ネットワークプロセッサ(network
processor, NP)、グラフィックス処理装置(graphics processing unit)、マイクロプロセッサ、特定用途向け集積回路(application-specific integrated circuit, ASIC)、又は本願の解決策のプログラム実行を制御するように構成された1つ又は複数の集積回路であり得る。
【0228】
バスシステム802は、前述したコンポーネント同士の間で情報を送信するための経路を含み得る。
【0229】
メモリ803は、読み取り専用メモリ(read-only memory, ROM)又は静的情報及び命令を記憶することができる別のタイプの静的記憶装置、又はランダムアクセスメモリ(random access memory, RAM)又は情報及び命令を記憶することができる別のタイプの動的記憶装置であり得、又は電気的に消去可能なプログラマブル読み取り専用メモリ(electrically erasable programmable read-only memory, EEPROM)、コンパクトディスク読み取り専用メモリ(compact disc read-only memory, CD-ROM)又は別のコンパクトディスクストレージ、光ディスクストレージ(圧縮光ディスク、レーザーディスク、光ディスク、デジタル多用途ディスク、Blu-rayディスク等を含む)、磁気ディスクストレージメディア又は別の磁気記憶装置、又は予想されるプログラムコードを命令又はデータ構造の形式で含めるか記憶することができ、コンピュータによってアクセスすることができる他のメディアであり得る。しかしながら、メモリ803はこれらに限定されない。メモリは独立して存在してもよく、バスを使用してプロセッサに接続される。あるいはまた、メモリをプロセッサと統合してもよい。
【0230】
メモリ803は、本願の解決策を実行するためのアプリケーションプログラムコードを記憶するように構成され、実行は、プロセッサ801によって制御される。プロセッサ801は、メモリ803に記憶したアプリケーションプログラムコードを実行して、本願で提供される浮動小数点数の計算方法を実施するように構成される。
【0231】
特定の実施中に、一実施形態では、プロセッサ801は、1つ又は複数のCPUを含むことができる。
【0232】
当業者は、実施形態のステップの全て又はいくつかが、ハードウェア又は関連するハードウェアに命令するプログラムによって実施され得ることを理解し得る。プログラムは、コンピュータで読み取り可能な記憶媒体に保存することができる。コンピュータ可読記憶媒体は、読み取り専用メモリ、磁気ディスク、光ディスク等を含み得る。
【0233】
前述した説明は、本願の単なる実施形態であり、本願を限定することを意図するものではない。本願の精神及び原則から逸脱することなく行われた変更、同等の交換、又は改良は、本願の保護範囲に含まれるものとする。