特許第6907310号(P6907310)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧

<>
  • 特許6907310-動的に可変な精度計算 図000003
  • 特許6907310-動的に可変な精度計算 図000004
  • 特許6907310-動的に可変な精度計算 図000005
  • 特許6907310-動的に可変な精度計算 図000006
  • 特許6907310-動的に可変な精度計算 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6907310
(24)【登録日】2021年7月2日
(45)【発行日】2021年7月21日
(54)【発明の名称】動的に可変な精度計算
(51)【国際特許分類】
   G06F 7/57 20060101AFI20210708BHJP
   G06F 9/302 20060101ALI20210708BHJP
   G06F 15/78 20060101ALI20210708BHJP
   G06F 11/08 20060101ALI20210708BHJP
【FI】
   G06F7/57
   G06F9/302 A
   G06F15/78 517
   G06F11/08
【請求項の数】20
【全頁数】16
(21)【出願番号】特願2019-521000(P2019-521000)
(86)(22)【出願日】2017年10月17日
(65)【公表番号】特表2019-537787(P2019-537787A)
(43)【公表日】2019年12月26日
(86)【国際出願番号】US2017057000
(87)【国際公開番号】WO2018075532
(87)【国際公開日】20180426
【審査請求日】2020年10月14日
(31)【優先権主張番号】15/298,938
(32)【優先日】2016年10月20日
(33)【優先権主張国】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】グレッグ サドウスキー
(72)【発明者】
【氏名】ウェイン バールソン
【審査官】 松浦 かおり
(56)【参考文献】
【文献】 特開平03−060509(JP,A)
【文献】 特開2009−104405(JP,A)
【文献】 特許第3811354(JP,B2)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 1/26− 1/3296
G06F 5/01
G06F 7/38− 7/537
G06F 7/57− 7/78
G06F 9/30− 9/355
G06F 11/08−11/10
G06F 15/78
(57)【特許請求の範囲】
【請求項1】
オペランドを、前記オペランドの各二進数を1ビットとして表す従来の数系から、各二進数を複数のビットとして表す冗長数系(RNS)オペランドに変換する変換装置と、
前記RNSオペランドに対して最上位ビット(MSB)から最下位ビット(LSB)の方向に算術演算を実行し、前記RNSオペランドに関連する動的精度によって示されるターゲットの二進数に対して前記算術演算を実行する前に前記算術演算を停止する算術論理装置と、を備える、
装置。
【請求項2】
前記算術論理装置は、複数のビットスライスを備え、各ビットスライスは、前記RNSオペランドの二進数のうち1つの二進数に対して算術演算を実行するように構成されている、
請求項1の装置。
【請求項3】
上位の二進数に対して演算を行うビットスライスによって受信される、下位の二進数に対して演算を行うビットスライスからのキャリーインビットは、前記上位の二進数に対して演算を行うビットスライスによって生成されたキャリーアウトビットの値を決定しない、
請求項2の装置。
【請求項4】
前記複数のビットスライスのうち第1サブセットをオンにするイネーブル信号を供給するように構成された制御装置を備え、前記第1サブセットは、前記ターゲットの二進数よりも上位にある前記RNSオペランドの二進数に対して演算を行う、
請求項2の装置。
【請求項5】
前記制御装置は、前記RNSオペランドのデータタイプ、前記RNSオペランドの二進数の統計的表現のうち少なくとも1つに基づいて、又は、バッテリレベルの変化若しくは前記算術演算の結果の目標精度の変化のうち少なくとも1つに応じて、前記動的精度を決定するように構成されている、
請求項4の装置。
【請求項6】
前記算術論理装置は、前記RNSオペランドに関連する累積エラーを受信するように構成されており、前記制御装置は、前記累積エラーに基づいて前記動的精度を変更するように構成されている、
請求項4の装置。
【請求項7】
前記制御装置は、前記ターゲットの二進数と等しいか下位の前記RNSオペランドの二進数に対して演算を行う前記複数のビットスライスのうち第2サブセットに対してイネーブル信号を供給しない、
請求項4の装置。
【請求項8】
前記複数のビットスライスに電力を供給する電源と、
前記複数のビットスライスにクロック信号を供給するクロック信号発生器と、
前記第2サブセットに供給される前記電力又は前記クロック信号のうち少なくとも1つをゲート制御するように構成されたゲートロジックと、を備える、
請求項7の装置。
【請求項9】
前記変換装置は、前記変換を実行するのに必要なオーバーヘッドと、前記RNSオペランドに関連する前記動的精度によって示される前記ターゲットの二進数に対して算術演算を実行する前に算術演算を停止することによって生じると予想される節電量と、の比較に基づいて、前記オペランドを前記従来の数系から前記RNSオペランドに選択的に変換するように構成されている、
請求項1の装置。
【請求項10】
オペランドを、前記オペランドの各二進数を1ビットとして表す従来の数系から、各二進数を複数のビットとして表す冗長数系(RNS)オペランドに変換することと、
前記RNSオペランドに対して最上位ビット(MSB)から最下位ビット(LSB)の方向に算術演算を実行することと、
前記RNSオペランドに関連する動的精度によって示されるターゲットの二進数に対して前記算術演算を実行する前に前記算術演算を停止することと、を含む、
方法。
【請求項11】
前記RNSオペランドに対して算術演算を実行することは、算術論理装置によって実装された複数のビットスライスを使用して前記RNSオペランドの複数の二進数に対して算術演算を独立して実行することを含み、各ビットスライスは、前記RNSオペランドの二進数のうち1つの二進数に対して算術演算を実行するように構成されている、
請求項10の方法。
【請求項12】
前記複数のビットスライスを使用して算術演算を実行することは、
上位の二進数に対して演算を行うビットスライスにおいて、下位の二進数に対して演算を行うビットスライスからのキャリーインビットを受信することと、
前記上位の二進数に対して演算を行うビットスライスからのキャリーアウトビットを供給することと、を含み、
前記キャリーインビットは、前記キャリーアウトビットの値を決定しない、
請求項11の方法。
【請求項13】
前記複数のビットスライスのうち第1サブセットをオンにするイネーブル信号を供給することを含み、
前記第1サブセットは、前記ターゲットの二進数よりも上位にある前記RNSオペランドの二進数に対して演算を行う、
請求項11の方法。
【請求項14】
前記ターゲットの二進数と等しいか下位の前記RNSオペランドの二進数に対して演算を行う前記複数のビットスライスのうち第2サブセットに対してイネーブル信号を供給するのを避けることを含む、
請求項11の方法。
【請求項15】
前記第2サブセットに供給される電力又はクロック信号のうち少なくとも1つをゲート制御することを含む、
請求項14の方法。
【請求項16】
前記RNSオペランドのデータタイプ、前記RNSオペランドの二進数の統計的表現のうち少なくとも1つに基づいて、又は、バッテリレベルの変化若しくは前記算術演算の結果の目標精度の変化のうち少なくとも1つに応じて、前記動的精度を決定することを含む、
請求項10の方法。
【請求項17】
前記RNSオペランドに関連する累積エラーを受信することと、
前記累積エラーに基づいて前記動的精度を変更することと、を含む、
請求項10の方法。
【請求項18】
前記オペランドを前記従来の数系から前記RNSオペランドに変換することは、前記変換を実行するのに必要なオーバーヘッドと、前記RNSオペランドに関連する前記動的精度によって示される前記ターゲットの二進数に対して算術演算を実行する前に算術演算を停止することによって生じると予想される節電量と、の比較に基づいて、前記オペランドを前記従来の数系から前記RNSオペランドに変換することを含む、
請求項10の方法。
【請求項19】
オペランドを、前記オペランドの各二進数を1ビットとして表す従来の数系から、各二進数を複数のビットとして表す冗長数系(RNS)オペランドに変換する第1変換装置と、
算術演算のシーケンスを実行する算術論理装置であって、前記算術演算の各々は、前記RNSオペランドに対して最上位ビット(MSB)から最下位ビット(LSB)の方向に実行され、前記算術演算は、前記算術演算に関連する異なる動的精度によって示される異なるターゲットの二進数に対して前記算術演算を実行する前に停止される、算術論理装置と、
前記算術演算のシーケンスのRNS結果を前記従来の数系に変換する第2変換装置と、を備える、
装置。
【請求項20】
前記オペランドを前記従来の数系から前記RNSオペランドに変換することは、前記変換を実行するのに必要なオーバーヘッドと、前記算術演算に関連する異なる動的精度によって示される異なるターゲットの二進数に対して前記算術演算を実行する前に前記算術演算を停止することによって生じると予想される節電量と、の比較に基づいて、前記オペランドを前記従来の数系から前記RNSオペランドに変換することを含む、
請求項19の装置。
【発明の詳細な説明】
【背景技術】
【0001】
ラップトップコンピュータ、タブレットコンピュータ、スマートフォン及び他のコンピューティングデバイスは、内蔵バッテリ等の限られた電源に依存している。バッテリは通常充電可能であるが、バッテリの蓄積電力を効率的に使用して充電間の動作間隔を延長することができる。サーバ、クラウドコンピューティングリソース及び組み込み型コンピュータ等のウォールパワード(wall-powered)コンピュータも、電力、冷却及び熱管理のコストによって、ますます電力制約を受けている。コンピューティングデバイスに実装された算術論理装置は、倍精度浮動小数点(64ビット)、単精度浮動小数点(32ビット)及び半精度浮動小数点(16ビット)を含む異なる精度を実現するために、異なるビット数で表されるオペランドに対して算術演算を実行する。算術論理装置で消費される電力は、算術論理装置が高い精度で動作している場合には高くなり、低い精度で動作している場合には低くなる。
【0002】
添付の図面を参照することによって、本開示をより良く理解することができ、その多数の機能及び利点が当業者に明らかとなるであろう。異なる図面における同じ符号の使用は、類似又は同じアイテムを示す。
【図面の簡単な説明】
【0003】
図1】いくつかの実施形態による、コンピューティングデバイスのブロック図である。
図2】いくつかの実施形態による、最上位ビットファースト(MSBファースト)演算を使用して冗長数系(RNS)オペランドに対して算術演算を実行するように構成された算術論理装置を含むコンピューティングデバイスのブロック図である。
図3】いくつかの実施形態による、動的精度に基づいて選択的に有効にされる算術論理装置を実装するコンピューティングデバイスのブロック図である。
図4】いくつかの実施形態による、RNSオペランドに関連するエラーを伝えるコンピューティングデバイスのブロック図である。
図5】いくつかの実施形態による、RNSオペランドに対して動的に可変な精度算術演算を実行する方法のフロー図である。
【発明を実施するための形態】
【0004】
ニューラルネットワーク及び信号処理アプリケーションを含む多くのアプリケーションがある程度の精度の低下を許容することができるとしても、数値計算は、不要に正確な計算を実行することによって電力を浪費することが多い。したがって、コンピューティングデバイスのバッテリの動作間隔は、いくつかの算術演算を低い精度で実行することによって延長することができる。例えば、プログラマは、いくつかの演算を倍精度ではなく半精度で実行するように指定することができる。しかしながら、算術演算の精度は、通常、コンピューティングデバイスによる実行のためにコードがコンパイルされるときに決定される。コードの実行中に、コンパイル済みのコードの算術演算の精度を変更することはできない。
【0005】
コンピューティングデバイスのバッテリ等の電源の動作間隔は、コンピューティングデバイスによって実行される算術演算の精度を動的に変更することによって延長することができる。算術精度の動的な変更をサポートするために、オペランドは、各二進数を1ビットとして表す従来の数系から、各二進数を複数のビットとして表す冗長数系(RNS)に変換される。これにより、最上位ビット(MSB)から最下位ビット(LSB)の方向に計算を実行することができる。各RNSオペランドは、RNSオペランドに対して実行される演算の目標精度に対応するいくつかのビットによって表される動的精度に関連付けられる。いくつかの実施形態では、動的精度は、データタイプ(例えば、グラフィックスオブジェクト若しくはプリミティブを表すデータタイプは、ビデオ、RGB色、シーン深度若しくは頂点位置データを含む)又はデータ値を表す統計(例えば、データ値が1若しくは0等の値付近に集中すること、データ値が特定の範囲内にあること、若しくは、データ値が閾値を上回るか下回る平均値若しくは中央値を有することを示す統計的尺度)に基づいて決定される。また、動的精度は、例えばバッテリレベルの変化、目標精度の変化等に応じて、実行時に変更することもできる。いくつかの実施形態では、動的精度は、RNSオペランド毎に異なる。各RNSオペランドの動的精度は、動的精度及びRNSオペランドの値を含むデータ構造で示される。
【0006】
算術演算は、RNSオペランドの動的精度で示される二進数に対して、最上位ビット(MSB)から最下位ビット(LSB)の方向に実行される。これは、LSBからMSBの方向に進むビットに対して演算を実行する従来の「LSBファースト」演算とは対照的に、「MSBファースト」演算と呼ばれる。MSBファースト演算を実行する算術論理装置は、RNSオペランド内の各二進数に対して算術演算を実行するために、(本明細書ではビットスライスと呼ばれる)別々のハードウェアコンポーネントを含む。動的精度によって示されるRNSオペランドの一部に対応するビットスライスをオンにするために、イネーブル信号が提供される。動的精度によって示されるRNSオペランドの一部よりも下位の二進数に対して演算を行うビットスライスに対して、電力又はクロック信号をゲート制御することができる。RNSオペランドに対して算術演算を実行することは、ビットスライス間の2ビット以上のリップルを抑制し、例えば、ビットスライスによって下位ビットスライスから受信したキャリーインビットは、ビットスライスによって上位ビットスライスに提供されるキャリーアウトビットの値を決定しない。いくつかの実施形態では、従来の二進数からRNSオペランドへの変換、及び、RNSオペランドに対して実行される算術演算の精度の動的な変更は、変換を実行するのに必要なオーバーヘッドと、精度の動的な変更によって生じると予想される節電量との比較に基づいて、選択的に実行される。
【0007】
図1は、いくつかの実施形態による、コンピューティングデバイス100のブロック図である。コンピューティングデバイス100は、従来の二進数をRNSオペランドに変換し、MSBファースト演算を使用してRNSオペランドに対して算術演算を実行するように構成されたハードウェアコンポーネント105のセットを含む。ハードウェアコンポーネント105によって実行可能な算術演算の例は、加算、減算、乗算及び除算を含む。さらに、超越関数を含むより複雑な関数は、加算、減算、乗算及び除算の機能に基づいて実装することができる。したがって、ハードウェアコンポーネント105は、MSBファースト演算を使用して、より複雑な関数を実行することができる。ハードウェアコンポーネント105のいくつかの実施形態は、基板又はダイ上に製造された中央処理装置(CPU)、グラフィックス処理装置(GPU)又はアクセラレーテッドプロセッシングユニット(APU)等の処理装置を使用して実施される。ハードウェアコンポーネント105は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、又は、ハードウェアコンポーネント(例えば、トランジスタ、コンデンサ、抵抗器、トレース、ワイヤ等)の他の組み合わせとしても実装することができる。
【0008】
ハードウェアコンポーネント105は、従来の数系(CNS)に従ってフォーマットされた1つ以上のオペランド110を受信するように構成されている。オペランド110のいくつかの実施形態は、1、2、4、8、…等の二進数のシーケンスを使用した二進フォーマットで表される。オペランド110内の各二進数は単一のビットとして表され、ビットの値はオペランドの値を示す。例えば、1の値を有するオペランド110は、CNSにおいて0001として表すことができる。
【0009】
変換装置115は、ハードウェアコンポーネント105に実装されており、従来のオペランドを、各二進数が複数のビットによって表されるRNSオペランドに変換するように構成されている。例えば、オペランド110の冗長2進表現は、各二進数を2ビットとして表すことができ、二進数の値は、表1のような変換テーブルを使用して決定することができる。1の値を有するオペランドは、01−01−01−11(0+0+0+1=1)、01−01−10−11(0+0+0+1=1)、01−01−11−00(0+0+2−1=1)又は11−00−00−00(8−4−2−1=1)を含む、異なる二進数の値を使用したRNSオペランドとして表すことができる。変換装置115の他の実施形態は、異なる冗長数系を使用して、従来のオペランドをRNSオペランドに変換することができる。
【表1】
【0010】
従来のオペランドをRNSオペランドに変換することによって、RNSオペランドに対して最上位ビット(MSB)から最下位ビット(LSB)の方向に計算を実行することができる。算術演算は、RNSオペランドに対しても高速に実行することができる。しかしながら、変換装置115がオペランド110をRNSオペランドに変換すると、変換を実行するのに必要な追加の処理時間及び電力等のオーバーヘッドが発生する。したがって、変換装置115のいくつかの実施形態は、発生したオーバーヘッドと、RNSオペランドに対して算術演算を実行する利点との比較に基づいて、オペランド110の変換を選択的に実行する。例えば、変換を実行するのに必要なリソースは、算術演算を高速化することによって節約されるリソースと比較することができる。別の例では、変換を実行するのに必要なリソースは、RNSオペランド内の最上位の二進数のセットに対してのみ算術演算を実行し、RNSオペランド内の下位の二進数の補集合に対する算術演算の実行を回避することによって節約されるリソースと比較することができる。いくつかの実施形態では、例えば構成可能な遅延ライン等の完了検出回路がハードウェアコンポーネント105に含まれ、本明細書で説明するように、RNSオペランド内の全ての二進数に対して演算を行う前に停止又は終了する算術演算の完了を検出するために使用される。
【0011】
ハードウェアコンポーネント105は、変換装置115によって生成されたRNSオペランドに対して算術演算120,125,130のセットを実行することができる。算術演算120,125,130は順番に実行することができ、例えば、算術演算120の結果は、算術演算125への入力となる。また、算術演算120,125,130は、異なるRNSオペランドのセット、重複するRNSオペランドのセット、又は、部分的に重複するRNSオペランドのセットに対して実行される演算を表すことができる。いくつかの実施形態では、算術演算120,125,130は、ハードウェアコンポーネント105に実装されている算術論理装置(図1には示されていない)によって実行される。また、算術演算120,125,130は、別の算術論理装置、又は、MSBファースト演算を実行するように構成された他のハードウェアによって実行することもできる。
【0012】
算術演算120,125,130は、右向きの矢印135(明確にするために、符号で示されているもののみを指す)によって示すように、RNSオペランドに対するMSBファースト演算を使用して実行される。したがって、算術演算120,125,130の各々は、RNSオペランド内の最上位の二進数を表すビットに対して算術演算を実行することによって開始する。次に、算術演算120,125,130は、次の最上位の二進数を表すビットに対して算術演算を実行する。したがって、算術演算の各反復は、算術演算の結果の精度を単調に増加させる。RNS算術演算では、算術演算120,125,130は、算術演算がRNSオペランド内の全ての二進数に対して実行されるまで、下位の二進数に対して算術演算を実行し続けることができる。
【0013】
しかしながら、本明細書で説明するように、全てのアプリケーションが算術演算120,125,130によって提供される最高レベルの精度を必要とするわけではない。したがって、RNSオペランド内の全ての二進数に対して算術演算を実行することは、電力を不要に消費する可能性があり、ハードウェアコンポーネント105のリソースが制限される可能性がある。したがって、ハードウェアコンポーネント105は、動的精度によって示されるターゲットの二進数に対して算術演算を実行する前に、算術演算120,125,130を停止、終了又は中断するように構成されている。ターゲットの二進数は閾値の有効桁数を表すので、閾値の有効桁数よりも下位の二進数に対して算術演算が実行されない。算術演算120,125,130を中断することは、算術演算120,125,130の結果の精度を下げるが、ハードウェアコンポーネント105の電力消費も低減する。
【0014】
RNSオペランド又は算術演算に関連する動的精度は、実行時に変更することができ、異なるRNSオペランド又は算術演算120,125,130毎に異なり得る。例えば、ライン140,145,150は、対応する算術演算120,125,130のターゲットの二進数を表す。したがって、算術演算125は、最高精度を実現し(且つ、演算125がRNSオペランド内の全ての二進数に対して実行された場合に消費されることになる総電力の最大部分を消費する)、算術演算120は、次に高い精度を実現し(且つ、演算120がRNSオペランド内の全ての二進数に対して実行された場合に消費されることになる総電力の次に大きい部分を消費する)、算術演算130は、最も低い精度を実現する(しかしながら、算術演算130がRNSオペランド内の全ての二進数に対して実行された場合に消費されることになる総電力の最小部分を消費する)。
【0015】
また、ハードウェアコンポーネント105は、RNSオペランドを従来の数系(CNS)に従って表されるオペランド160に変換するための変換装置155を含む。例えば、算術演算120,125,130の一部又は全ては、RNSフォーマットの結果を変換装置155に提供することができ、変換装置155は、RNSの結果をオペランド160に変換する。いくつかの実施形態では、変換装置115は、RNSの結果をCNSオペランド160に変換し戻すのに必要なオーバーヘッドに部分的に基づいて、オペランド110をRNSオペランドに選択的に変換する。
【0016】
図2は、いくつかの実施形態による、MSBファースト演算を使用してRNSオペランド210,215に対して算術演算を実行するように構成された算術論理装置(ALU)205を含むコンピューティングデバイス200のブロック図である。算術論理装置205は、図1に示すハードウェアコンポーネント105のいくつかの実施形態において実装される。したがって、算術論理装置205を使用して、RNSオペランド210,215に対する加算、減算、乗算又は除算を含む1つ以上の算術演算を実行することができる。さらに、算術論理装置205のいくつかの実施形態は、MSBファースト演算を使用し、RNSオペランド210,215に対して超越関数を含む複雑な関数を実行するように構成されている。図2に示す算術論理装置205は、2つのRNSオペランド210,215を受信するが、算術論理装置205のいくつかの実施形態は、3つ以上のRNSオペランドを受信して演算を行うことができる。
【0017】
RNSオペランド210,215は、各々の動的精度220,225に関連付けられている。図示した実施形態では、RNSオペランド210,215の値と各々の動的精度220,225とは、対応するデータ構造230,235で算術論理装置205に提供される。例えば、データ構造230,235は、RNSオペランド210,215の値と各々の動的精度220,225とを保持するように構成された特別に定義された命令語(例えば、非常に長い命令語の変形等)とすることができる。しかしながら、いくつかの実施形態では、RNSオペランド210,215と各々の動的精度220,225とは、異なるデータ構造で算術論理装置205に提供される。さらに、いくつかの実施形態では、動的精度220,225は、算術論理装置205又は制御装置245に直接提供されない。代わりに、動的精度220,225を示すヒントが算術論理装置205に提供される。ヒントは、動的精度220,225よりも少ない情報を含むように定義することができ、コンピューティングデバイス200の低電力モード等の動作モードにおいて、完全な動的精度220,225の代わりに選択的に使用することができる。ヒントは、アプリケーションと、算術論理装置205及び制御装置245を実装するのに使用されるハードウェアとの間のインタフェースを使用して、アプリケーションによって提供することができる。
【0018】
制御装置245は、動的精度220,225の値にアクセスし、場合によっては、RNSオペランド210,215の値にアクセスする。次に、制御装置245は、動的精度220,225の値、場合によってはRNSオペランド210,215の値に応じて生成される制御信号を、算術論理装置205に提供する。制御信号は、例えば最上位ビット(MSB)から最下位ビット(LSB)の方向に算術演算を実行することによって等のように、MSBファースト演算を使用して、RNSオペランド210,215の値によって表される二進数に対して算術演算を実行するように算術論理装置205に指示する。
【0019】
また、制御装置245は、RNSオペランド210,215に関連する動的精度220,225によって示されるターゲットの二進数に対して算術演算を実行する前に、算術演算の実行を停止するように算術論理装置205に指示する制御信号を提供する。例えば、RNSオペランド210,215が単精度浮動小数点フォーマット(例えば、従来の二進数系では32ビットで表され、RNSでは複数ビットで表される32個の二進数で表される)で算術論理装置205に提供され、上位30個の二進数が十分な精度を提供することを動的精度220,225が示す場合に、制御装置245は、最上位から最下位への順において31番目の二進数に対して算術演算を実行する前に、算術演算の実行を停止するように算術論理装置に指示する。いくつかの実施形態では、制御装置245は、コンピューティングデバイス200の電力消費状態に基づいて、ターゲットの二進数で算術演算の実行を停止するように、算術論理装置205に選択的に指示する。例えば、制御装置245は、コンピューティングデバイス200が電力の節約を必要としない電力消費モードであることに応じて、算術演算の実行停止を算術論理装置205に指示するのを避けるように構成されてもよい。別の例では、制御装置245は、コンピューティングデバイスが電力の節約を必要とする電力消費モード(例えば、バッテリレベルが閾値を下回っていることによってトリガされるモード等)であることに応じて、算術演算の実行停止を算術論理装置205に指示するように構成されてもよい。
【0020】
いくつかの実施形態では、コンピューティングデバイス200は、動的精度220,225に基づいて算術論理装置205によって実行される算術演算の実行時間を測定するように動的に構成された構成可能な遅延ライン247を含む。例えば、制御装置245は、算術論理装置205がRNSオペランド210,215に対して算術演算を開始するのに応じて、パルス(又はエッジ)を、構成可能な遅延ライン247に送信することができる。次に、制御装置245は、構成可能な遅延ライン247の出力にパルス(又はエッジ)が現れたことに応じて、算術演算が完了したと判別してもよい。制御装置245は、動的精度220,225に基づいて構成可能な遅延ライン247を構成し、これにより、パルス(又はエッジ)が構成可能な遅延ライン247を伝わって制御装置245に戻るのに必要な時間間隔は、算術論理装置205が動的精度220,225によって示される精度までRNSオペランド210,215に対して算術演算を実行するのに必要な時間間隔と等しくなる。
【0021】
制御装置245のいくつかの実施形態は、RNSオペランド210,215に記憶されたデータの特性に基づいて、動的精度220,225の値を決定する。例えば、動的精度220,225は、データタイプに基づいて決定することができ、これにより、ビデオ、RGBカラー、シーン深度又は頂点位置データを含むグラフィックスオブジェクト又はプリミティブを表すデータタイプに対して異なるレベルの精度を利用することができる。別の例では、動的精度220,225は、RNSオペランド210,215内の二進数の特性、及び、算術論理装置205によって以前受信された他のRNSオペランドの特性を表す統計情報に基づいて決定することができる。統計情報は、二進数が1又は0等の値付近に集中すること、二進数が特定の範囲内の平均値又は中央値を有すること、二進数が閾値を上回るか下回る平均値又は中央値を有すること等を示す統計的尺度を含むことができる。
【0022】
制御装置245のいくつかの実施形態は、実行時に動的精度220,225を決定又は変更する。例えば、制御装置245は、バッテリレベルの変化、目標精度の変化等に応じて、動的精度220,225のうち1つ以上を変更することができる。動的精度220,225を増加させることは、通常、電力消費量を増加させることになり、したがって、バッテリレベルの増加に応じて実行される。動的精度220,225を低下させることは、通常、電力消費量を低下させることになり、したがって、例えば、低バッテリレベルを示す閾値を下回る等のバッテリレベルの低下に応じて実行される。いくつかの実施形態では、動的精度220,225は、RNSオペランド210,215毎に異なる。
【0023】
また、算術論理装置205は、RNSオペランド210,215に対して算術演算を実行することに応じて、精度を決定又は変更するように構成されてもよい。算術論理装置205のいくつかの実施形態は、RNSオペランド210,215に対して実行された算術演算のRNS結果255に対して動的精度250を生成する。例えば、算術論理装置205は、動的精度250を、動的精度220,225のうち低い方に設定することができる。そして、動的精度250及びRNS結果255は、算術論理装置205から例えばデータ構造260内で出力される。
【0024】
図3は、いくつかの実施形態による、動的精度310に基づいて選択的に有効にされる算術論理装置305を実装するコンピューティングデバイス300のブロック図である。算術論理装置305は、異なる二進数のRNSオペランドに対して演算を行う複数のビットスライス311,312,313,314,315(本明細書では、まとめて「ビットスライス311〜315」と呼ぶ)を含む。図3に示すビットスライス311〜315は、最上位ビット(左側)から最下位ビット(右側)まで、関連する二進数のビットの有効桁数順に配列されている。動的精度310は、精度を表すためにいくつかの最上位ビットを或る値(例えば「1」等)に設定し、残りの下位ビットを或る補数値(例えば「0」等)に設定するサーモメータコードを使用して、精度を符号化する。
【0025】
ビットスライス311〜315の各々は、算術論理装置305によって受信されたRNSオペランドの対応する二進数に対して算術演算(例えば合計等)を実行するように構成されたハードウェアコンポーネント(S)を含む。また、ビットスライス311〜315の各々は、次の上位のビットスライスに提供されたキャリービットを生成するように構成されたハードウェアコンポーネント(C)を含む。キャリービットは、ビットスライスから提供された場合にはキャリーアウトビットと呼ばれ、ビットスライスによって受信された場合にはキャリーインビットと呼ばれる。ハードウェアコンポーネント(S)は、キャリーインビットの値を利用して算術演算を実行する。しかしながら、ビットスライス311〜315は、ビットスライス311〜315間の2ビット以上のリップルを防ぐように構成されており、例えば、ビットスライスによって下位ビットスライスから受信されたキャリーインビットは、ハードウェアコンポーネント(C)によって生成されビットスライスによって上位ビットスライスに提供されるキャリーアウトビットの値を決定しない。
【0026】
ビットスライス311〜315は、一連のビットの値によって表される動的精度310に基づいて算術演算を実行することが選択的に可能になる。イネーブル信号321,322,323,324,325(本明細書では、まとめて「イネーブル信号321〜325」と呼ぶ)は、動的精度310内のビットの値に基づいて生成され、対応するビットスライス311〜315に提供される。図示した実施形態では、動的精度310の1ビット内の値「1」は、対応するビットスライスが算術演算を実行するのに有効であることを示しており、ビット内の値「0」は、対応するビットスライスが無効であるため、対応する二進数に対して算術演算を実行するのに使用されないことを示している。例えば、イネーブル信号321〜323が対応するビットスライス311〜313に提供され、ビットスライス311〜313が、RNSオペランドの二進数に対して算術演算を実行するのを可能にする。イネーブル信号324、325は、対応するビットスライス314,315に提供されないので、ビットスライス314,315は、対応する二進数に対して算術演算を実行しない。いくつかの実施形態では、無効にされたビットスライス(例えば、図3に示すビットスライス314)の最上位のハードウェアコンポーネント(C)は、無効にされたビットスライスのハードウェアコンポーネント(S)が二進数に対して算術演算を実行しない場合であっても、キャリーアウトビットを生成して、丸め演算をサポートする。ビットスライス311〜315を選択的に有効又は無効にすることは、無効にされたビットスライスによって消費される電力量を低減することによって、コンピューティングデバイス300の電力消費量を低減する。
【0027】
コンピューティングデバイス300は、算術論理装置305に電力を供給するための電源330と、算術論理装置305にクロック信号を供給するためのクロック信号発生器335と、を含む。ゲートロジック340は、トランジスタ、スイッチ、ルータ等を使用してコンピューティングデバイス300に実装され、図2に示す制御装置245等の制御装置の制御下で動作する。ゲートロジック340は、動的精度310に基づいて、電源330によってビットスライス311〜315に供給される電力、又は、クロック信号発生器335によって供給されるクロック信号を選択的にゲート制御する。例えば、ゲートロジック340は、電力及びクロック信号を有効なビットスライス311〜313に供給し、無効なビットスライス314,315の電力及びクロック信号をゲート制御することによって、無効なビットスライス314,315が、電源330又はクロック信号発生器335から電力又はクロック信号を受信しないようにする。動的精度310に基づいて、ビットスライス311〜315に供給する電力又はクロック信号を選択的にゲート制御することは、無効なビットスライスが消費する電力量をさらに低減することによって、コンピューティングデバイス300の電力消費量をさらに低減する。
【0028】
図4は、いくつかの実施形態による、RNSオペランドに関連するエラーを伝えるコンピューティングデバイス400のブロック図である。コンピューティングデバイス400は、図1に示すコンピューティングデバイス100又は図2に示すコンピューティングデバイス200のいくつかの実施形態で実施される。コンピューティングデバイス400は、本明細書ではまとめて「算術論理装置401〜403」と呼ばれる複数の算術論理装置401,402,403を含む。図4に示す算術論理装置401〜403は、コンピューティングデバイス400の3つの異なるハードウェアコンポーネントを表すことができ、又は、3つの別々の算術演算を実行するのに使用されるコンピューティングデバイス400の単一のハードウェアコンポーネントを表すことができる。さらに、コンピューティングデバイス400における算術論理装置401〜403の数、又は、算術論理装置401〜403(若しくは他の算術論理装置)を実装するのに使用されるハードウェアコンポーネントの数は、図4に示す数より多くてもよいし、少なくてもよい。
【0029】
算術論理装置401〜403は、入力RNSオペランドと、RNSオペランドに関連する累積エラーを示す情報と、を受信する。例えば、算術論理装置401は、入力RNSオペランド405,406と、対応する累積エラー410,411とを受信し、算術論理装置402は、入力RNSオペランド415,416と、対応する累積エラー420,421とを受信する。いくつかの実施形態では、累積エラー410,411,420,421は、算術論理装置401,402によって実行される算術演算に対して動的精度を確立するために使用される。算術論理装置401,402(又は、対応するコントローラ425)は、入力RNSオペランド405,406,415,416に対して算術演算を実行するために算術論理装置401,402によって使用される動的精度を構成することができ、これにより、算術演算の動的精度は、関連する累積エラー410,411,420,421に必要なほど正確ではなくなる。例えば、入力RNSオペランド405,406,415,416の累積エラー410,411,420,421が、入力RNSオペランド405,406,415,416内の下位の4つの二進数によって示される値以下である場合には、入力RNSオペランド405,406,415,416の動的精度は、下位4番目の二進数よりも上位の二進数に対応するように設定される。
【0030】
算術論理装置401〜403は、出力RNSオペランド430,435,440と、対応する累積エラー431,436,441とを生成する。例えば、出力RNSオペランド430,435は、入力RNSオペランド405,406,415,416に対して算術演算を実行することによって生成され、累積エラー431,436は、従来のエラー推定/累積技術を使用した算術演算に基づいて決定される。出力RNSオペランド430,435と、対応する累積エラー431,436とは、算術論理装置403への入力値として提供され、算術論理装置403は、RNSオペランド430,435に対して算術演算を実行して、出力RNSオペランド440を生成する。また、算術論理装置403は、入力累積エラー431,436に基づいて累積エラー441を決定するために、従来のエラー推定/累積技術を使用する。いくつかの実施形態では、累積エラー441は、出力RNSオペランド440の値を決定するのに使用される動的精度を決定するために使用される。
【0031】
図5は、いくつかの実施形態による、RNSオペランドに対して動的に可変な精度の算術演算を実行する方法500のフロー図である。方法500は、図1に示すコンピューティングデバイス100、図2に示すコンピューティングデバイス200、図3に示すコンピューティングデバイス300、図4に示すコンピューティングデバイス400のいくつかの実施形態において実装される算術論理装置によって実行される。方法500は、開始ブロック505で開始する。
【0032】
ブロック510では、算術論理装置は、入力RNSオペランド内の最上位の二進数に対して算術演算を実行する。本明細書で説明したように、算術演算の例には、加算、減算、乗算及び除算、並びに、加算、減算、乗算及び除算の機能に基づいて実施することができる超越関数を含むより複雑な関数が含まれる。
【0033】
判別ブロック515では、算術論理装置は、算術演算を実行するのに未だ使用されていない二進数がRNSオペランド内に存在するかどうかを判別する。存在しない場合、方法500は、ブロック520に進み、入力RNSオペランドに対して算術演算を実行した結果の動的精度を決定する。次に、方法500は、終了ブロック525に進み、演算を行う二進数がこれ以上存在せず算術演算が完了するために、終了する。RNSオペランドにさらなる二進数が存在すると算術論理装置が判別した場合、方法は、判別ブロック530に進む。
【0034】
判別ブロック530では、算術論理装置は、次の二進数(すなわち、演算が以前に実行された二進数よりも下位の二進数)が、RNSオペランドに関連する動的精度によって示される閾値の有効桁数よりも上位にあるかどうかを判別する。例えば、本明細書で説明したように、動的精度は、それぞれRNSオペランド内の二進数に対応するサーモメータ符号化ビット配列を使用して表すことができる。閾値の有効桁数よりも上位の二進数(又は、動的精度で示されるターゲットの二進数)に対して演算を行う算術論理装置内のビットスライスが有効にされ、閾値の有効桁数よりも下位の二進数に対して演算を行うビットスライスが無効にされる。
【0035】
(判別ブロック530において)次の二進数が閾値の有効桁数よりも上位であることを動的精度が示す場合、方法500はブロック535に進み、算術論理装置は、RNSオペランド内の次の上位の二進数に対して算術演算を実行する。次に、方法500は判別ブロック515に進む。(判別ブロック530において)次の二進数が閾値の有効桁数よりも下位であることを動的精度が示す場合、方法500はブロック520に進み、入力RNSオペランドに対して算術演算を実行したRNS結果の動的精度を決定する。次に、方法500は終了ブロック525に進み、これにより、閾値の有効桁数よりも下位の二進数に対して算術演算を実行する前に、算術演算を停止する。
【0036】
いくつかの実施形態では、図1図5を参照して上述したコンピューティングデバイス等の上述した装置及び技術は、1つ以上の集積回路(IC)デバイス(集積回路パッケージ又はマイクロチップとも呼ばれる)を備えるシステムで実施される。これらのICデバイスの設計及び製造には、通常、電子設計自動化(EDA)及びコンピュータ支援設計(CAD)ソフトウェアツールが使用される。これらの設計ツールは、通常、1つ以上のソフトウェアプログラムとして表される。1つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように1つ以上のICデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよいし、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
【0037】
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の記憶媒体、又は、記憶媒体の組み合わせを含むことができる。かかる記憶媒体には、限定されないが、光媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、キャッシュ)、不揮発性メモリ(例えば、読み出し専用メモリ(ROM)、フラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステム(例えば、システムRAM又はROM)に内蔵されてもよいし、コンピュータシステム(例えば、磁気ハードドライブ)に固定的に取り付けられてもよいし、コンピュータシステム(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)に着脱可能に取り付けられてもよいし、有線又は無線のネットワークを介してコンピュータシステム(例えば、ネットワークアクセス可能なストレージ(NAS))に接続されてもよい。
【0038】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【0039】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0040】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
図1
図2
図3
図4
図5