(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-08
(45)【発行日】2024-11-18
(54)【発明の名称】符号付きマルチワード乗算器
(51)【国際特許分類】
G06F 7/523 20060101AFI20241111BHJP
G06F 17/10 20060101ALI20241111BHJP
【FI】
G06F7/523
G06F17/10 S
(21)【出願番号】P 2022512408
(86)(22)【出願日】2020-08-20
(86)【国際出願番号】 US2020047147
(87)【国際公開番号】W WO2021041139
(87)【国際公開日】2021-03-04
【審査請求日】2022-03-07
(32)【優先日】2019-08-23
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ライナー・ポープ
【審査官】佐藤 実
(56)【参考文献】
【文献】特開2000-081966(JP,A)
【文献】特表2019-500673(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 7/523
G06F 17/10
(57)【特許請求の範囲】
【請求項1】
入力の組を乗算するためのハードウェア回路であって、
第1の入力および第2の入力を受け取る処理回路であって、前記第1および第2の入力の各々がそれぞれのビット幅を有し、前記処理回路が
、前記第1の入力
が、前記ハードウェア回路の固定ビット幅を超えるビット幅を有するとともに、シフトした符号付きマルチワード数を表すデータ形式の利用可能な数値範囲内であることに基づいて
、前記第1の入力を表す
符号付きマルチワード入力を生成するように構成される、処理回路と、
1つまたは複数の符号付き乗算器であって、前記1つまたは複数の符号付き乗算器の各々が2つ以上の符号付き入力を乗算するように構成され、各符号付き乗算器が、
前記第1の入力を表す前記符号付きマルチワード入力を受け取り、
前記第2の入力に対応する符号付きの第2の入力を受け取り、
前記符号付きマルチワード入力を前記符号付きの第2の入力と乗算することに応じた符号付き出力を生成するように構成される乗算回路を備える、1つまたは複数の符号付き乗算器と
を備え、
前記符号付きマルチワード入力がN個のワードを含むシフトした符号付き数であって、各N個のワードがBビットを含み、
Nが1より大きい整数であり、Bが1より大きい整数であり、
前記シフトした符号付き数の数値が、a0+a1*2
B+a2*2
(2B)+…+a{N-1}*2
{(N-1)B}に基づいて規定され、a0,a1,a2,...,a{N-1}が、前記符号付きマルチワード入力のそれぞれの符号付きワードを表
し、
前記シフトした符号付きマルチワード数の数値範囲が、[-2
(N*B-1)
-S, 2
(N*B-1)
-1-S]に基づいて規定され、Sが、2
(B-1)
*(1+2
B
+…+2
{(N-2)B}
)に基づいて規定される、ハードウェア回路。
【請求項2】
前記処理回路が、
符号付き高位ワード部と
符号付き低位ワード部と
を含む符号付きマルチワード入力として前記第1の入力を表すように構成される、請求項1に記載のハードウェア回路。
【請求項3】
前記第1の入力を前記符号付きマルチワード入力として表すことが、
前記ハードウェア回路の前記固定ビット幅に基づいて前記第1の入力のデータ形式を変更するために量子化方式を使用すること
を含む、請求項
2に記載のハードウェア回路。
【請求項4】
前記量子化方式が、前記第1の入力を前記符号付きマルチワード入力として表すためにそれぞれのワード部を生成することによって前記第1の入力の前記データ形式を変更するように構成され、
各それぞれのワード部を含む合計ビット幅が、前記ハードウェア回路の前記固定ビット幅に等しい、請求項
3に記載のハードウェア回路。
【請求項5】
前記符号付きマルチワード入力が複数のそれぞれのワードを含み、
前記乗算回路が、前記符号付きマルチワード入力の各ワードと前記符号付きの第2の入力の各ワードとを乗算することによって前記符号付き出力を生成するように構成される、請求項1に記載のハードウェア回路。
【請求項6】
前記第2の入力が符号付きマルチワード入力であり、そのため、前記符号付きの第2の入力が複数のそれぞれの符号付きワードを含み、
前記乗算回路が、前記符号付きマルチワード入力の各ワードと前記符号付きの第2の入力の各符号付きワードとを乗算することから計算されるそれぞれの積の合計として前記符号付き出力を生成するように構成される、請求項1に記載のハードウェア回路。
【請求項7】
ハードウェア回路を使用して入力の組を乗算するための方法であって、
前記ハードウェア回路の処理回路が、第1の入力および第2の入力を受け取るステップであって、前記第1および第2の入力の各々がそれぞれのビット幅を有し、少なくとも前記第1の入力が前記ハードウェア回路に含まれる乗算ハードウェアの固定ビット幅を超えるビット幅を有し、前記乗算ハードウェアが前記第1の入力と第2の入力を乗算するために使用される、ステップと、
前記処理回路が、
前記第1の入力が、前記ハードウェア回路の固定ビット幅を超えるビット幅を有するとともに、シフトした符号付きマルチワード数を表すデータ形式の利用可能な数値範囲内であることに基づいて、前記第1の入力から、複数のビットを各々有する複数の符号付きワードを含む符号付きマルチワード入力を生成するステップであって、前記符号付きマルチワード入力のビット幅が前記乗算ハードウェアの前記固定ビット幅より小さい、ステップと、
前記処理回路が、乗算のために前記乗算ハードウェアに前記符号付きマルチワード入力および符号付きの第2の入力を提供するステップであって、前記符号付きの第2の入力が前記第2の入力に対応し、前記乗算ハードウェアの前記固定ビット幅内であるビット幅を有する、ステップと、
前記ハードウェア回路が、少なくとも前記第1および第2の入力を使用して前記乗算ハードウェアから符号付き出力を生成するステップと
を含み、
前記符号付きマルチワード入力がN個のワードを含むシフトした符号付き数であって、各N個のワードがBビットを含み、
Nが1より大きい整数であり、Bが1より大きい整数であり、
前記シフトした符号付き数の数値が、a0+a1*2
B+a2*2
(2B)+…+a{N-1}*2
{(N-1)B}に基づいて規定され、a0,a1,a2,...,a{N-1}が、前記符号付きマルチワード入力のそれぞれの符号付きワードを表
し、
前記シフトした符号付きマルチワード数の数値範囲が、[-2
(N*B-1)
-S, 2
(N*B-1)
-1-S]に基づいて規定され、Sが、2
(B-1)
*(1+2
B
+…+2
{(N-2)B}
)に基づいて規定される、方法。
【請求項8】
前記符号付きマルチワード入力を生成するステップが、前記処理回路が、
符号付き高位ワード部と
符号付き低位ワード部と
を含む符号付きマルチワード入力として前記第1の入力を表すステップを含む、請求項
7に記載の方法。
【請求項9】
前記第1の入力を前記符号付きマルチワード入力として表すステップが、前記処理回路が、前記ハードウェア回路の前記固定ビット幅に基づいて前記第1の入力のデータ形式を変更するために量子化方式を使用するステップを含む、請求項
8に記載の方法。
【請求項10】
前記処理回路が、前記量子化方式に基づいて、前記第1の入力を前記符号付きマルチワード入力として表すためにそれぞれのワード部を生成することによって前記第1の入力の前記データ形式を変更するステップをさらに含み、
各それぞれのワード部を含む合計ビット幅が前記ハードウェア回路の前記固定ビット幅に等しい、請求項
9に記載の方法。
【請求項11】
前記第2の入力が符号付きマルチワード入力であり、そのため、前記符号付きの第2の入力が複数のそれぞれのワードを含み、前記方法が、
前記乗算ハードウェアの単一の符号付き乗算器が、前記符号付きマルチワード入力の各ワードと前記符号付きの第2の入力の各ワードとの乗算のそれぞれの積の合計として前記符号付き出力を生成するステップ
をさらに含む、請求項
7に記載の方法。
【請求項12】
ハードウェア回路の1つまたは複数の非一時的機械可読記憶デバイスであって、1つまたは複数の処理デバイスに、
前記ハードウェア回路の処理回路によって、第1の入力および第2の入力を受け取ることであって、前記第1および第2の入力の各々がそれぞれのビット幅を有し、少なくとも前記第1の入力が前記ハードウェア回路に含まれる乗算ハードウェアの固定ビット幅を超えるビット幅を有し、前記乗算ハードウェアが前記第1および第2の入力を乗算するように構成される、受け取ることと、
前記第1の入力が、前記ハードウェア回路の固定ビット幅を超えるビット幅を有するとともに、シフトした符号付きマルチワード数を表すデータ形式の利用可能な数値範囲内であることに基づいて、前記第1の入力から、複数のビットを各々有する複数の符号付きワードを含む符号付きマルチワード入力を生成することであって、前記符号付きマルチワード入力のビット幅が前記乗算ハードウェアの前記固定ビット幅より小さい、生成することと、
乗算のために前記乗算ハードウェアに前記符号付きマルチワード入力および符号付きの第2の入力を提供することであって、前記符号付きの第2の入力が前記第2の入力に対応し、前記乗算ハードウェアの前記固定ビット幅より小さいビット幅を有する、提供することと、
少なくとも前記第1および第2の入力を使用して前記乗算ハードウェアから符号付き出力を生成することと
を含む動作の実行を行わせることが可能である命令を記憶し、
前記符号付きマルチワード入力がN個のワードを含むシフトした符号付き数であって、各N個のワードがBビットを含み、
Nが1より大きい整数であり、Bが1より大きい整数であり、
前記シフトした符号付き数の数値が、a0+a1*2
B+a2*2
(2B)+…+a{N-1}*2
{(N-1)B}に基づいて規定され、a0,a1,a2,...,a{N-1}が、前記符号付きマルチワード入力のそれぞれの符号付きワードを表
し、
前記シフトした符号付きマルチワード数の数値範囲が、[-2
(N*B-1)
-S, 2
(N*B-1)
-1-S]に基づいて規定され、Sが、2
(B-1)
*(1+2
B
+…+2
{(N-2)B}
)に基づいて規定される、1つまたは複数の非一時的機械可読記憶デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、数値計算を実施するためのハードウェア回路に関する。
【背景技術】
【0002】
計算回路は、整数および浮動小数点数などの数値入力を乗算するために使用されるハードウェア乗算器を有する乗算回路を含むことができる。乗算回路は、既存の計算回路の中に調達して一体化するには費用がかかる場合があり、いくつかの回路は、ある種の用途にとって効率的にサイズ決定されていない。たとえば、いくつかの乗算回路は、回路ダイのかなりの面積を消費する符号付き乗算器と符号なし乗算器の両方を含む場合があるが、それらが大きいサイズであるにもかかわらず、計算のスループットでは利益をもたらさない。ある種の計算用途にとって大きすぎる乗算器回路は、電力消費および利用の点で非効率をもたらす場合がある。
【0003】
ハードウェア回路は、ニューラルネットワークを実装するために使用することができる。特に、複数の層を有するニューラルネットワークを、いくつかのハードウェア乗算器を含む計算回路に実装することができる。ハードウェア回路の計算回路が、所与の層のためのニューラルネットワーク計算を実施するために使用される計算ユニットを表す場合もある。たとえば、入力が与えられると、回路は、ハードウェア回路の計算ユニット中の乗算器の1つまたは複数を使用してドット積演算を実施することによって、ニューラルネットワークを使用した入力についての推論を計算することができる。
【発明の概要】
【課題を解決するための手段】
【0004】
本文書は、入力を乗算するための専用ハードウェア回路を記載する。ハードウェア回路は、それぞれのビット幅を各々有する入力を受け取る処理回路を含む。処理回路は、ハードウェア回路の固定ビット幅を超えるビット幅を有する第1の入力に基づいた、符号付きマルチワード入力として、少なくとも1つの入力を表すことができる。ハードウェア回路は、符号付きマルチワード乗算器として構成され、符号付き入力を乗算するように各々構成される符号付き乗算器を含む。各符号付き乗算器は、符号付きマルチワード入力を受け取り、符号付きの第2の入力を受け取り、符号付きマルチワード入力を符号付きの第2の入力と乗算することに応じた符号付き出力を生成するように構成される乗算回路を含む。
【0005】
本明細書に記載される主題の1つの態様は、入力の組を乗算するためのハードウェア回路で具体化することができる。ハードウェア回路は、第1の入力および第2の入力を受け取る処理回路であって、第1および第2の入力の各々がそれぞれのビット幅を有し、処理回路が、ハードウェア回路の固定ビット幅を超えるビット幅を有する第1の入力に基づいて、符号付きマルチワード入力として、少なくとも第1の入力を表すように構成される、処理回路と、複数の符号付き乗算器であって、複数の符号付き乗算器の各符号付き乗算器が2つ以上の符号付き入力を乗算するように構成され、各符号付き乗算器が、第1の入力を表す符号付きマルチワード入力を受け取り、第2の入力に対応する符号付きの第2の入力を受け取り、符号付きマルチワード入力を符号付きの第2の入力と乗算することに応じた符号付き出力を生成するように構成される乗算回路を含む、複数の符号付き乗算器とを含む。
【0006】
これらおよび他の実装では、各々が任意選択で、以下の特徴の1つまたは複数を含むことができる。たとえば、いくつかの実装形態では、符号付きマルチワード入力が、N個のワードを含み、各N個のワードがBビットを含み、Nが1より大きい整数でありBが1より大きい整数である、シフトした符号付き数である。いくつかの実装形態では、シフトした符号付き数の数値は、a0+a1*2B+a2*2(2B)+…+a{N-1}*2{(N-1)B}に基づいて規定され、aは、符号付きマルチワード入力のそれぞれの符号付きワードを表す。いくつかの実装形態では、シフトした符号付き数の代表的な数値範囲は、[-2(N*B-1)-S, 2(N*B-1)-1-S]に基づいて規定される。いくつかの実装形態では、Sは、2(B-1)*(1+2B+…+2{(N-2)B})に基づいて規定される。いくつかの実装形態では、処理回路は、符号付き高位ワード部と符号付き低位ワード部とを含む符号付きマルチワード入力として第1の入力を表すように構成される。
【0007】
いくつかの実装形態では、第1の入力を符号付きマルチワード入力として表すことが、ハードウェア回路の固定ビット幅に基づいて第1の入力のデータ形式を変更するために量子化方式を使用することを含む。いくつかの実装形態では、量子化方式は、第1の入力を符号付きマルチワード入力として表すためにそれぞれのワード部を生成することによって第1の入力のデータ形式を変更するように構成され、各それぞれのワード部を含む合計ビット幅は、ハードウェア回路の固定ビット幅に等しい。いくつかの実装形態では、符号付きマルチワード入力は複数のそれぞれのワードを含み、乗算回路は、符号付きマルチワード入力の各ワードと符号付きの第2の入力の各ワードとを乗算することによって符号付き出力を生成するように構成される。いくつかの実施形態では、符号付きの第2の入力は、複数のそれぞれの符号付きワードを含み、乗算回路は、符号付きマルチワード入力の各ワードと符号付きの第2の入力の各符号付きワードとを乗算することから計算されるそれぞれの積の合計として符号付き出力を生成するように構成される。
【0008】
本明細書に記載される主題の1つの態様は、ハードウェア回路を使用して入力の組を乗算するための方法で具体化することができる。方法は、ハードウェア回路の処理回路によって、第1の入力および第2の入力を受け取るステップであって、第1および第2の入力の各々がそれぞれのビット幅を有し、少なくとも第1の入力がハードウェア回路に含まれる乗算ハードウェアの固定ビット幅を超えるビット幅を有し、乗算ハードウェアが第1の入力と第2の入力を乗算するために使用される、ステップと、少なくとも第1の入力から、複数のビットを各々有する複数の符号付きワードを含む符号付きマルチワード入力を生成するステップであって、符号付きマルチワード入力のビット幅が乗算ハードウェアの固定ビット幅より小さい、ステップと、乗算のために乗算ハードウェアに符号付きマルチワード入力および符号付きの第2の入力を提供するステップであって、符号付きの第2の入力が第2の入力に対応し、乗算ハードウェアの固定ビット幅内であるビット幅を有する、ステップと、少なくとも第1および第2の入力を使用して乗算ハードウェアから符号付き出力を生成するステップとを含む。
【0009】
これらおよび他の実装では、各々が任意選択で、以下の特徴の1つまたは複数を含むことができる。たとえば、いくつかの実装形態では、符号付きマルチワード入力が、N個のワードを含み、各N個のワードがBビットを含み、Nが1より大きい整数でありBが1より大きい整数である、シフトした符号付き数である。いくつかの実装形態では、シフトした符号付き数の数値は、a0+a1*2B+a2*2(2B)+…+a{N-1}*2{(N-1)B}に基づいて規定され、aは、符号付きマルチワード入力のそれぞれの符号付きワードを表す。いくつかの実装形態では、シフトした符号付き数の代表的な数値範囲は、[-2(N*B-1)-S, 2(N*B-1)-1-S]に基づいて規定される。いくつかの実装形態では、Sは、2(B-1)*(1+2B+…+2{(N-2)B})に基づいて規定される。いくつかの実装形態では、符号付きマルチワード入力を生成するステップは、符号付き高位ワード部と符号付き低位ワード部とを含む符号付きマルチワード入力として第1の入力を表すステップを含む。
【0010】
いくつかの実装形態では、第1の入力を符号付きマルチワード入力として表すステップが、ハードウェア回路の固定ビット幅に基づいて第1の入力のデータ形式を変更するために量子化方式を使用するステップを含む。いくつかの実装形態では、方法は、量子化方式に基づいて、第1の入力を符号付きマルチワード入力として表すためにそれぞれのワード部を生成することによって第1の入力のデータ形式を変更するステップをさらに含み、各それぞれのワード部を含む合計ビット幅がハードウェア回路の固定ビット幅に等しい。いくつかの実施形態では、符号付きの第2の入力が複数のそれぞれのワードを含み、方法は、乗算ハードウェアの符号付き乗算器を使用して、符号付きマルチワード入力の各ワードと符号付きの第2の入力の各ワードとの乗算のそれぞれの積の合計として符号付き出力を生成するステップをさらに含む。
【0011】
これおよび他の態様の他の実装形態は、対応するシステム、装置、およびコンピュータ記憶デバイス(たとえば、非一時的機械可読記憶媒体)上にエンコードされる、本方法のアクションを実施するように構成されるコンピュータプログラムを含む。1つまたは複数のコンピュータまたはハードウェア回路の計算システムは、システム上にインストールされるソフトウェア、ファームウェア、ハードウェアまたはそれらの組合せによって構成し、そのため、動作時にシステムにアクションを行わせることができる。1つまたは複数のコンピュータプログラムは、命令を有することによって構成し、そのため、データ処理装置が実行すると、装置にアクションを行わせることができる。
【0012】
本明細書に記載される主題は、特定の実施形態に実装して、以下の利点のうちの1つまたは複数を実現することができる。記載される技法を使用して、2つ以上の入力を乗算する一方で、入力を乗算するため使用される従来の回路より少ない電力を必要とする専用ハードウェア回路を実装することができる。本文書に記載されるハードウェア回路の構成要素は、符号付き入力を乗算して符号付き出力を生成するように構成される符号付き乗算器を有する符号付きマルチワード乗算器回路を形成する。マルチワード乗算器は、符号付き数を表すための固有の数値形式に基づいていくつかの入力(たとえば、浮動小数点入力)を効率的に乗算する、低電力ハードウェア乗算回路であってよい。
【0013】
乗算回路は、入力の乗算を実施するための符号付きハードウェア乗算器だけを含む乗算ハードウェアを有するように構成することができる。回路は、2の補数形式などといった従来の数体系を有する入力を処理するのに応じて、シフトした符号付きマルチワード数を生成するために使用される処理回路を含む。符号付きマルチワード数が符号付きハードウェア乗算器を使用して乗算されて、符号付き出力を生成する。乗算回路のこれらの特徴によって、入力を乗算する従来の回路に対し、回路での電力消費の低下がもたらされる。これは、符号付き乗算器と符号なし乗算器の両方ではなく、符号付き乗算器だけを使用して乗算が完了するためである。さらに、複数のモード(たとえば、符号付きモードおよび符号なしモード)をサポートするためハードウェア乗算器を含む回路は、回路によって消費されるチップ面積をやはり増やし、それによって、回路の製造コストを増加させる。そのため、提案される技法は、電力消費だけでなく、製造コストの低減も実現する。
【0014】
回路の乗算ハードウェアが符号付きハードウェア乗算器だけを含むように構成されるとき、符号付き計算モードと符号なし計算モードの両方をサポートするための追加の乗算ハードウェアを含まなければならない従来の回路よりもはるかに少ない電力を全体のハードウェア回路が消費する。したがって、この低電力ハードウェア乗算器回路は、2つ以上の符号付きマルチワード入力を乗算する積を生成するために符号付きのみモードを活用する、少なくとも符号付き乗算器構成に基づいて、電力要件を低減させて数値入力を乗算するために最適化することができる。
【0015】
本明細書に記載される主題の1つまたは複数の実装形態の詳細が添付図面および下の説明に記載される。本主題の他の潜在的な特徴、態様、および利点は、説明、図面、および特許請求の範囲から明らかとなろう。
【図面の簡単な説明】
【0016】
【
図1】入力を乗算するための例示的な専用ハードウェア回路を示す図である。
【
図2】符号付き出力を生成するために符号付きハードウェア乗算器に提供される符号付きマルチワード入力を生成するための流れ図である。
【
図3】記載されるハードウェア乗算器回路中で入力を乗算するための例示的なプロセスを示すフローチャートである。
【発明を実施するための形態】
【0017】
様々な図面中の同様の参照番号および記号は、同様の要素を示す。
【0018】
従来のコンピュータアーキテクチャは、固定ビット幅Bで乗算ハードウェアを提供する。これらのアーキテクチャが、ビット幅を超える数のビットを有する入力を乗算する必要があるとき、アーキテクチャは、入力の数を複数の部片(「ワード」)へと分割する。ここで、各ワードは、長さ、またはビット幅Bを有する。計算出力を作成するために、これらのアーキテクチャは、第1の入力のあらゆるワードを、第2の入力のあらゆるワードと乗算する。しかし、符号付き(たとえば、正、負、またはゼロの)出力を作成するために、アーキテクチャは、符号付きモードと(たとえば、ここで、入力は単に正またはゼロである)符号なしモードの両方で構成可能でなければならない。符号付きモードと符号なしモードの両方で構成可能でなければならない従来の回路は、電力消費が増加することになる追加のハードウェア構成要素を必要とする。
【0019】
例示的な実装形態では、ハードウェア回路を使用して、多層ニューラルネットワークを実装し、ニューラルネットワークの層の各々を通して入力を処理することによって、計算(たとえば、ニューラルネットワーク計算)を行うことができる。特に、ニューラルネットワークの個別の層は、各々がパラメータのそれぞれの組を有することができる。各層が入力を受け取って、層についてのパラメータの組に従って入力を処理し、例示的な計算ユニットの乗算回路を使用して実施される計算に基づいて出力を生成する。たとえば、ニューラルネットワーク層は、入力配列とパラメータ配列の行列乗算を実施するとき、または、入力配列とパラメータカーネル配列の間で畳み込みを計算する部分として、複数の積を計算する。
【0020】
一般的に、ニューラルネットワークの層を通して入力を処理するのは、たとえば、乗算および加算といった算術演算を実施するための回路を使用して達成される。例示的なハードウェア回路は、2つ以上の入力を乗算するためのハードウェア乗算器を含むことができる。乗算器回路をハードウェア加算器とともにグループ化して、ハードウェア回路の、たとえば行列またはベクトル処理ユニットなどといった計算ユニットを形成することができる。計算ユニットは、整数および浮動小数点数などの数値入力を加算および乗算するために使用される。たとえば、ニューラルネットワークの層を通して入力を処理するために、行列-ベクトル乗算などといったニューラルネットワーク計算を実施するためにハードウェア回路が使用されるときに、加算および乗算が生じる。
【0021】
上の文脈を考慮して、本文書は、符号付きマルチワード入力として表される2つ以上の入力を乗算するための専用ハードウェア回路を実装するための技法を記載する。本技法を使用して、符号付き入力または符号なし入力を「シフトした符号付きマルチワード数」として表すことができる。これらのシフトした符号付きマルチワード数は、固有の数値形式を使用して、受け取った入力を符号付き数として表す。受け取った入力は、マルチワード数の個別のワードであってよく、単一ワード入力およびマルチワード入力をやはり含むことができる。入力を符号付き数として表すことによって、専用ハードウェア回路が符号なしモードをサポートする必要がない。したがって、記載されるハードウェア回路は、符号付きモードと符号なしモードの両方のための演算ではなく、むしろ符号付きモード演算のための乗算回路を含む、より簡素化したアーキテクチャを使用する。記載されるハードウェア回路は、符号付きモード演算だけのために構成されるために、回路は、より少ない構成要素を必要とし、このことによって、従来のアーキテクチャと比較したときに、電力効率を改善することになる。
【0022】
図1は、入力102を乗算するための例示的な専用ハードウェア回路100の図を示す。例示的な実装形態では、入力102A(「入力A」)および102B(「入力B」)はそれぞれが、2値データ構造を使用するソフトウェアで表すことができる、浮動小数点数または2の補数である。2値データ構造は、たとえば、16ビット、24ビット、または32ビットデータ構造などといった、特定の数のビットを有することができる。たとえば、各入力が入力の符号(たとえば、正または負)を示すことができるために、入力AまたはBの各々はそれぞれが、符号付き浮動小数点数および符号ビットであってよい。
【0023】
各数値入力のデータ構造は、特定のデータ形式に関連することができる。データ形式は、データ形式を使用して表すことができる有限な範囲の数値を示すことができる。いくつかの実装形態では、入力Aのための16ビットデータ構造は、入力Aの2の補数データ形式を表す2値入力(たとえば、0010)を含むことができる。数値範囲に関して、通常の2の補数は、次の有限な表現可能範囲の数値[-32.768, 32.767]を有することができる。さらに、各数値入力は、その数が符号付き数であるかまたは符号なし数であるかを示す、そのデータ構造中の1つまたは複数のビットを有する。
【0024】
本文書で記載されるように、符号付き数値入力(たとえば、整数)を表すデータ構造は、正の数値(たとえば、整数値)と負の数値の両方を保持することができる一方で、符号なし数値入力を表すデータ構造は、より大きい範囲の正の数値を保持することができ負の数値を保持することができない。一般的に、GPUまたはニューラルネットワークプロセッサなどのプロセッサ回路は、たとえば、整数または浮動小数点入力などといった異なるタイプの入力を含む計算を実施するための、論理演算ユニット(ALU)または計算ユニットを含むことが多い。
【0025】
符号付き入力を含む計算は符号付きモード演算に対応する一方で、符号なし入力を含む計算は符号なしモード演算に対応する。符号付き数値入力および符号なし数値入力を含む計算を実施するためのALUおよび計算ユニットは、それぞれの符号付きモード演算および符号なしモード演算をサポートするため、ハードウェア構成要素の別個の組を必要とする。たとえば、上で記載されたように、いくつかのコンピュータアーキテクチャは、固定ビット幅Bで乗算ハードウェアを実現する。これらのアーキテクチャが、ビット幅を超える数のビットを有する入力を乗算する必要があるとき、アーキテクチャは、入力の数を複数の部片(「ワード」)へと分割する。ここで、各ワードは、長さ、またはビット幅Bを有する。計算出力を作成するために、本アーキテクチャは、第1の入力のあらゆるワードを、第2の入力のあらゆるワードと乗算する。
【0026】
しかし以前に議論したように、符号付き(たとえば、正、負、またはゼロの)出力を作成するために、アーキテクチャは、符号付きモードと(たとえば、ここで、入力は正だけである)符号なしモードの両方で構成可能でなければならない。符号付き演算と符号なし演算の両方で構成可能でなければならないアーキテクチャは、電力消費が増加することになる追加のハードウェア構成要素を必要とする。この文脈では、固有のデータ形式を有する符号付き入力を乗算するように構成される専用ハードウェア回路100を実装する一方で、従来のハードウェア回路に比べて消費電力を少なくするための、技法が記載される。専用回路100は、符号付きモード演算だけをサポートするための乗算回路を含む。入力が符号付き数としてのみ表されるとき、回路はある程度の電力の節約を達成する。たとえば、符号付き入力だけを乗算することから計算出力を生成することによって、回路100は、より少ないハードウェア構成要素、およびソフトウェア命令の数を減らしたより小さい命令の組を含んで、入力を乗算することができる。
【0027】
回路100は、符号付きマルチワード入力を生成するように構成される入力プロセッサ104を含む。ハードウェア回路100の部分が、入力102を乗算するためのハードウェア乗算器を実現する乗算回路を有する計算ユニット103を含むことができる。入力プロセッサ104は、回路100の計算ユニット103中の乗算回路の固定ビット幅に基づいた符号付きマルチワード入力を生成するように構成することができる。より具体的には、入力プロセッサ104は、入力102から、シフトした符号付きマルチワード数を生成するように構成される。たとえば、入力プロセッサ104は、シフトした符号付きマルチワード数106および108を生成することができる。シフトした符号付きマルチワード数106は、各々が入力Aから生成される、それぞれの符号付きワード入力CおよびDを含むことができる一方で、シフトした符号付きマルチワード数108は、各々が入力Bから生成される、それぞれの符号付きワード入力EおよびFを含むことができる。
【0028】
ハードウェア回路100は、符号付きハードウェア乗算器110および112を含む。いくつかの実装形態では、回路100は、低電力の符号付き整数または浮動小数点乗算回路を含むように構成される。いくつかの例では、乗算器110、112をオプションの接続113を介して接続して、単一で大規模な、符号付き乗算回路のハードウェア回路100を形成することができる。いくつかの他の例では、乗算器110と112は、大きい乗算回路114の異なるハードウェア乗算器を表すことができ、回路100は、1つまたは複数の乗算回路114を含むことができる。2つの乗算器が
図1の例に示される一方で、回路100(または回路114)は、より多いまたはより少ない乗算器を含むように構成することができる。たとえば、回路100は、複数の個別の乗算器と同じ(または同様の)計算効果を達成するため、複数の目的で時間にわたって使用されるように構成される単一の乗算器を含むことができる。この様式では、回路100は、たとえば、符号付きモード演算だけをサポートするのに必要な符号付き乗算器または他のハードウェア構成要素だけを含むことによって、電力要件を低減させたある種の数値入力を乗算するために最適化することができる。いくつかの場合に、専用ハードウェア回路100が乗算回路を使用して、ニューラルネットワークの層を通して入力を処理するため計算を実施する。計算は、ニューラルネットワーク層の層出力を生成するためにさらに処理される累積値を生成するための、入力とパラメータの乗算を含む場合がある。
【0029】
例示的な演算では、それぞれ符号付きワード入力CおよびD(各々が入力Aから生成される)ならびにそれぞれ符号付きワード入力EおよびF(各々が入力Bから生成される)を含む1組の入力があるとすれば、回路100は、入力CとEを乗算し(C*E)、入力CとFを乗算し(C*F)、入力DとEを乗算し(D*E)、および入力DとFを乗算する(D*F)ように構成される。計算ユニット103は、乗算回路114の1つまたは複数の乗算器110、112によって生成される積の間で適切な加算演算を実施するように構成される加算回路120(「加算器120」)を含む。計算ユニット103は、必要なビット幅だけ1つまたは複数の積の値をシフトした後に、加算演算を実施するように構成される。たとえば、計算ユニット103は、加算器120を使用して、以下の加算演算、すなわち、(C*E<<(2*B))+((C*F+D*E)<<B)+D*Fを実施する前に、シフト演算(たとえば、<<2*B、<<Bなど)を実施することができる。
【0030】
加算器120は、入力として符号付き積116および118を受け取り、符号付き積116と118を加算して、計算ユニット103の符号付き出力122を生成する。いくつかの実装形態では、負の符号付き積118の2の補数バージョンを使用して、符号付き積116と符号付き積118の2の補数バージョンとの加算を含む加算演算を実施して、符号付き出力122を生成する。いくつかの場合に、入力を加算することは、符号付き出力122を生成する前に、暫定的な和に丸め演算を実施するための丸め論理を使用することを含む場合がある。たとえば、丸め論理は、符号付き出力122を生成する前に、暫定的な和を最も近い10進数または整数値に丸めるために使用することができる。いくつかの実装形態では、符号付き出力122は、ニューラルネットワーク層を通して数値入力102を処理することに応じて、ニューラルネットワーク層の層出力を生成するための累積値を表す。
【0031】
図2は、符号付き出力122を生成するために回路100の符号付きハードウェア乗算器に提供される符号付きマルチワード入力を生成するためのプロセス
図200を示す。より詳細に下で記載されるように、プロセス
図200は、入力プロセッサ104のそれぞれの論理機能を各々が表す複数の論理ブロックを含む。一般的に、1つまたは複数のそれぞれの論理機能は、シフトした符号付きマルチワード数を生成するために使用することができる。
【0032】
プロセス
図200を参照して、ハードウェア回路100は、符号付きモード回路として構成され、符号付きマルチワード数106を生成するための入力処理回路104を含む。入力プロセッサ104は、ハードウェア回路に含まれるハードウェア乗算器の固定ビット幅を超えるビット幅を入力が有する(204)という決定に少なくとも基づいて、入力102からシフトした符号付きマルチワード数を生成する。たとえば、入力プロセッサ104は、入力102の2値データ構造を分析して、各々それぞれの入力が、計算ユニット103中に含まれる乗算回路114の固定ビット幅を超えるかを決定することができる。
【0033】
符号付きマルチワード数106を生成することが、シフトした符号付きマルチワード数106を表すために使用されるデータ形式の予め規定された数値範囲内に入力102がある(206)と入力プロセッサ104が決定することに基づいて、数106を発生することを含む。たとえば、入力プロセッサ104は、入力102の数値、たとえば2の補数が、シフトした符号付きマルチワード数106を表すデータ形式の利用可能な数値範囲内に合致するかを決定するのに応じて、符号付きマルチワード数106を生成する。所与の入力102について、入力102の数値がデータ形式の利用可能な数値範囲内に合致しないと入力プロセッサ104が決定した場合、入力プロセッサ104はプロセス200を終了する(208)。
【0034】
入力102がデータ形式の予め規定された数値範囲内にあると入力プロセッサ104が決定した場合、入力プロセッサ104は、ハードウェア回路100の固定ビット幅を超えるビット幅を有する少なくとも第1の入力に基づいて、1つまたは複数の入力を、それぞれの符号付きマルチワード入力として表させる。たとえば、入力を符号付きマルチワード入力として表すため、入力プロセッサ104は、各々がBビットを有する、それぞれN個の符号付きワードを生成する(210)。入力プロセッサ104は、次いで、各々がBビットを有する、各N個の符号付きワードを使用して、シフトした符号付き数を生成する(212)。いくつかの実装形態では、Nが1より大きい整数でありBが1より大きい整数である。符号付きマルチワード入力は、乗算回路114の符号付きハードウェア乗算器に提供され、最終的に符号付き出力を生成する。
【0035】
いくつかの場合に、入力プロセッサ104は、ハードウェア回路に含まれるハードウェア乗算器110の固定ビット幅を超えないビット幅を入力102が有すると決定する(205)。このシナリオでは、入力プロセッサ104が、乗算回路114の符号付き乗算器に入力214を提供する。たとえば、入力プロセッサ104は、入力の符号が特定のハードウェア乗算器の符号に一致することに基づいて、特定のハードウェア乗算器に入力214を提供することができる。この実装形態では、入力214が乗算回路114の固定ビット幅より大きいビット幅を有さないために、入力214は、符号付きマルチワード入力を生成するのに好適な入力でないことになる。
【0036】
例示的な乗算演算では、入力102からシフトした符号付きマルチワード数を生成するかの決定、ならびにその後の、符号付きマルチワード入力の生成は、計算サイクルの比較的早期に行われる場合がある。たとえば、回路100と通信する外部ホストコントローラを使用して決定をオフチップで行って、ニューラルネットワーク層を通した処理のための入力を得ることができる。いくつかの実装形態では、ハードウェア回路100を含むニューラルネットワークプロセッサ上に実装されるニューラルネットワーク層によって生成されるアクティベーションを記憶するアクティベーションメモリなどといった、例示的なニューラルネットワークプロセッサのメモリから入力が得られると、決定およびその後の生成が行われる。
【0037】
他の実装形態では、符号付きマルチワード入力を生成するかの決定、ならびに、その後の符号付きマルチワード入力の生成は、たとえば、前の乗算器、ALU、または計算ユニット103のバイパス回路といった以前のパイプライン段で行う場合がある。いくつかの場合に、各符号付きハードウェア乗算器110、112のインターフェースは、それぞれの入力プロセッサ104を含むように修正または拡張することができる。そのような場合に、各乗算器110、112の入力で受け取られる入力102を処理して、それぞれのハードウェア乗算器110、112で乗算するために、好適な数のシフトしたマルチワード入力を生成することができる。
【0038】
図3は、記載されるハードウェア乗算器回路100を使用して入力を乗算するための例示的なプロセス300のフローチャートを示す。上で示したように、入力は、たとえば、16ビットまたは32ビットといったデータ構造のビットとして表される浮動小数点数などの数値入力であってよい。プロセス300は、少なくとも回路100を、本文書に記載される他の回路、構成要素、およびシステムと組み合わせて使用して実施することができる。
【0039】
ここでプロセス300を参照して、回路100は、それぞれのビット幅を各々有する第1の入力および第2の入力を受け取る(302)。処理回路は、ハードウェア回路の固定ビット幅を超えるビット幅を有する第1の入力に基づいた、符号付きマルチワード入力として、少なくとも第1の入力を表すように構成される。たとえば、ハードウェア回路の固定ビット幅が16ビットであってよい一方で、第1の入力の例示的なデータ構造についてのビット幅は32ビットである。
【0040】
回路100は、少なくとも第1の入力から、複数のビットを各々有する複数の符号付きワードを含む、符号付きマルチワード入力を生成する(304)。符号付きマルチワード入力/数は、N個のワードを含むシフトした符号付き数であって、各N個のワードがBビットを含む。一般的に、Nが1より大きい整数であってよく、Bが1より大きい整数である。たとえば、第1の入力のデータ構造を分析することに応じて、入力プロセッサ104は、第1の入力が32ビットからなると決定することができる。入力プロセッサ104は、第1の入力のビット数と、ハードウェア回路の固定ビット幅用のビット数との間の差異を決定または計算することができる。
【0041】
入力プロセッサ104は、計算した差異に基づいて、符号付きマルチワード数を生成することができる。いくつかの実装形態では、符号付きマルチワード数の各ワードは、第1の入力102の32ビットデータ構造を形成するビットの部分を使用して生成される。たとえば、符号付きマルチワード数は、4個の8ビット数または2つの16ビット数から形成することができる。これらの数は、上で記載した、符号付きマルチワード数106および108に対応することができる。いくつかの場合に、符号付きマルチワード数の各ワードは、第1の入力からのビットの一部および符号付きマルチワード数を形成する符号付きワードの符号を示す対応する符号ビットを含む符号付きワードである。
【0042】
いくつかの実装形態では、シフトした符号付きマルチワード数が4個の8ビット数から形成されるとき、このシフトした符号付き数は、N=4ワードを含み、ここで、各N個のワードがB=8ビットを含む。この「シフトした符号付きNワード8ビットの数」は、N個の通常の符号付き数によって表され、各々が、ビット幅Bのものである。例として、a0、a1、...、a{N-1}をそれらの通常の符号付き数であるとし、aを、各々の数が一緒に表す、シフトした符号付き数であるとする。シフトした符号付き数の数値uは、次で規定される。
a=a0+a1*2B+a2*2(2B)+…+a{N-1}*2{(N-1)B}
ここで、aは、符号付きマルチワード入力のそれぞれの符号付きワードを表す。個別のワードa0、a1、...、a{N-1}は、各々、符号付き数である。いくつかの他の実装形態では、元の入力数は、ビット幅がBの倍数になるまで、ゼロ拡張(たとえば、「0」ビットが最上位端に追加)される、または符号拡張(たとえば、元の入力数の最上位ビットが過剰なビットにコピー)される。
【0043】
上で議論したように、データ形式は、データ形式を使用して表すことができる、有限範囲の数値を有することができる。いくつかの実装形態では、シフトした符号付きマルチワード数は、通常の2の補数の数値範囲を表すための例示的な知られている表現に基づいて規定されるが、追加パラメータSを含む、表現可能な数値範囲を有する。シフトした符号付きマルチワード数の数値範囲は、[-2(N*B-1)-S, 2(N*B-1)-1-S]を使用して得られる。パラメータSによって、2の補数用の数値範囲を表すための、知られている表現に対するシフト機能がもたらされる。たとえば、B=8でN=2であるとき、通常の2の補数は、[-32.768, 32.767]である表現範囲を有する。通常の2の補数用のこの範囲は、知られている表現、[-2(N*B-1), 2(N*B-1)-1]を使用して得られる。本文書に記載される固有のデータ形式に関して、パラメータSを使用して、通常のNワード*Bビットの2の補数表現範囲に対して、距離Sだけ左に(たとえば、負の無限大に向けて)知られている表現をシフトする。いくつかの実装形態では、Sおよび対応するシフトは、2(B-1)*(1+2B+…+2{(N-2)B})に基づいて規定される。
【0044】
いくつかの実装形態では、ハードウェア回路100および入力プロセッサ104は、量子化方式を使用して、ハードウェア回路の固定ビット幅に基づいて第1の入力のデータ形式を変更する。量子化方式は、第1の入力を符号付きマルチワード入力として表すためにそれぞれのワード部を生成することによって第1の入力のデータ形式を変更するように構成される。たとえば、ニューラルネットワーク層用のパラメータまたはカーネル重み値から符号付きマルチワード数を生成するためのデータ形式は、特定の量子化方式に基づいて変更することができ、そのため、パラメータを、層のための出力を計算するために好適に使用することができる。生成した符号付きマルチワード入力では、各々それぞれのワード部分を含む合計ビット幅が、ハードウェア回路の固定ビット幅と等しい場合がある。いくつかの実装形態では、入力プロセッサ104は、回路100でパラメータおよび重みが得られて処理される方法を再量子化または変更するように、ある種のソフトウェア体系を調整するように構成される。
【0045】
回路100は、乗算用の乗算ハードウェアに、符号付きマルチワード入力および符号付きの第2の入力を提供する(306)。符号付きの第2の入力は、受け取った第2の入力に対応する。いくつかの実装形態では、第2の入力は、ハードウェア回路のビット幅または別のシフトした符号付きマルチワード数を超えない符号付き入力に対応することができる。いくつかの他の実装形態では、第2の入力は、ハードウェア回路のビット幅を超える符号付き入力に対応し、そのため、回路100は、第2の入力から符号付きマルチワード数を生成する。
【0046】
回路100は、少なくとも第1の入力および第2の入力を使用して乗算ハードウェアから符号付き積を生成する(308)。たとえば、回路100は、第1の入力のシフトした符号付きマルチワード数を第2の入力のシフトした符号付きマルチワード数と乗算することに応じて、符号付き積116または118を生成する。これらのシフトした符号付きマルチワード入力は、複数のそれぞれのワードを含み、乗算回路114は、符号付きマルチワードの第1の入力の各ワードと符号付きマルチワードの第2の入力の各ワードとを乗算することによって符号付き積を生成するように構成される。シフトした符号付きマルチワード数の利点は、符号なしハードウェア乗算器の必要なしにそれらを乗算できることである。たとえば、2つのそのような数aとbとの符号付き積116を計算するために次式となる。
a=a0+a1*2B+a2*2(2B)+…+a{N-1}*2{(N-1)B}
b=b0+b1*2B+b2*2(2B)+…+b{N-1}*2{(N-1)B}
ハードウェア回路100は、ai*bjの積を計算する。これは、回路100の符号付きハードウェア乗算器を使用してすべて計算することができる。
【0047】
いくつかの実施形態が記載されている。それにもかかわらず、本発明の範囲から逸脱することなく、様々な修正形態を行うことができることが理解されよう。たとえば、上で示された流れの様々な形態は、ステップを並べ替え、追加し、または取り除いて使用することができる。したがって、他の実施形態は、以下の特許請求の範囲内である。本明細書は多くの具体的な実装の詳細を含む一方で、これらは、特許請求できる範囲への制限とみなすべきでなく、むしろ、特定の実施形態に特有となる場合がある特徴の記載とみなすべきである。個別の実施形態の文脈において本明細書で記載されるある種の特徴は、単一の実施形態中で組み合わせて実装することもできる。
【0048】
逆に、単一の実施形態の文脈において記載される様々な特徴は、複数の実施形態に別個に、または任意の好適な下位の組合せで実装することもできる。さらに、特徴は、上である種の組合せで動作するように記載され、最初にそのように特許請求されさえするが、特許請求される組合せからの1つまたは複数の特徴は、いくつかの場合に、組合せから取り除かれる場合があり、特許請求される組合せは、下位の組合せまたは下位の組合せの変形形態を対象とする場合がある。
【0049】
同様に、動作が特定の順序で図に描かれる一方で、これによって、所望の結果を達成するために、そのような動作が示される特定の順序でもしくは逐次的な順序で実施されること、または、すべての図示される動作が実施されることを必要とすると理解するべきでない。ある種の環境では、マルチタスクおよび並列処理が有利な場合がある。さらに、上で記載した実施形態中の様々なシステムモジュールおよび構成要素の区切りは、すべての実施形態でそのような区切りを必要とすると理解するべきでなく、記載されるプログラム構成要素およびシステムは、一般的に、一緒に単一のソフトウェア製品に一体化すること、または、複数のソフトウェア製品へとパッケージすることができると理解するべきである。
【0050】
本主題の特定の実施形態が記載されてきた。他の実施形態は、以下の特許請求の範囲内となる。たとえば、特許請求の範囲で言及されるアクションを、異なる順序で実施して、依然として所望の結果を達成することができる。一例として、添付図面に描かれるプロセスは、所望の結果を達成するために必ずしも示される特定の順序または逐次的な順序を必要としない。いくつかの場合に、マルチタスクおよび並列処理が有利な場合がある。
【符号の説明】
【0051】
100 専用ハードウェア回路
102 入力
102A 入力
102B 入力
103 計算ユニット
104 入力プロセッサ、処理回路、符号付きマルチワード発生器
106 シフトした符号付きマルチワード数
108 シフトした符号付きマルチワード数
110 符号付きハードウェア乗算器_1
112 符号付きハードウェア乗算器_2
113 接続
114 乗算回路、符号付きハードウェア乗算器
116 符号付き積_1
118 符号付き積_2
120 加算器回路、加算器
122 符号付き出力
200 プロセス図
214 入力
300 プロセス