(57)【要約】変換装置（１１５）は、オペランド（１１０）を、オペランドの各二進数を１ビットとして表す従来の数系から、各二進数を複数のビットとして表す冗長数系（ＲＮＳ）オペランド（２１０，２１５）に変換する。算術論理装置（２０５）は、ＲＮＳオペランドに対して最上位ビット（ＭＳＢ）から最下位ビット（ＬＳＢ）の方向に算術演算を実行する。算術論理装置は、ＲＮＳオペランドに関連する動的精度によって示されるターゲットの二進数に対して算術演算を実行する前に算術演算の実行を停止する。場合によっては、電源（３３０）は、算術論理装置内のビットスライス（３１１，３１２，３１３，３１４，３１５）に電力を提供し、クロック信号発生器（３３５）は、ビットスライスにクロック信号を供給する。【選択図】図１
2019537787.tif 000002
【特許請求の範囲】
【請求項１】
オペランド（１１０）を、前記オペランドの各二進数を１ビットとして表す従来の数系から、各二進数を複数のビットとして表す冗長数系（ＲＮＳ）オペランド（２１０，２１５）に変換する変換装置（１１５）と、
前記ＲＮＳオペランドに対して最上位ビット（ＭＳＢ）から最下位ビット（ＬＳＢ）の方向に算術演算を実行し、前記ＲＮＳオペランドに関連する動的精度（２２０）によって示されるターゲットの二進数に対して前記算術演算を実行する前に前記算術演算を停止する算術論理装置（２０５）と、を備える、
装置（１００）。
【請求項２】
前記算術論理装置は、複数のビットスライス（３１１，３１２，３１３，３１４，３１５）を備え、各ビットスライスは、前記ＲＮＳオペランドの二進数のうち１つの二進数に対して算術演算を実行するように構成されている、
請求項１の装置。
【請求項３】
上位の二進数に対して演算を行うビットスライスによって受信される、下位の二進数に対して演算を行うビットスライスからのキャリーインビットは、前記上位の二進数に対して演算を行うビットスライスによって生成されたキャリーアウトビットの値を決定しない、
請求項２の装置。
【請求項４】
前記複数のビットスライスのうち第１サブセットをオンにするイネーブル信号を供給するように構成された制御装置（２４５）を備え、前記第１サブセットは、前記ターゲットの二進数よりも上位にある前記ＲＮＳオペランドの二進数に対して演算を行う、
請求項２の装置。
【請求項５】
前記制御装置は、前記ＲＮＳオペランドのデータタイプ、前記ＲＮＳオペランドの二進数の統計的表現のうち少なくとも１つに基づいて、又は、バッテリレベルの変化若しくは前記算術演算の結果の目標精度の変化のうち少なくとも１つに応じて、実行時に前記動的精度を決定するように構成されている、
請求項４の装置。
【請求項６】
前記算術論理装置は、前記ＲＮＳオペランドに関連する累積エラーを受信するように構成されており、前記制御装置は、前記累積エラーに基づいて実行時に前記動的精度を変更するように構成されている、
請求項４の装置。
【請求項７】
前記制御装置は、前記ターゲットの二進数と等しいか下位の前記ＲＮＳオペランドの二進数に対して演算を行う前記複数のビットスライスのうち第２サブセットに対してイネーブル信号を供給しない、
請求項４の装置。
【請求項８】
前記複数のビットスライスに電力を供給する電源（３３０）と、
前記複数のビットスライスにクロック信号を供給するクロック信号発生器（３０５）と、
前記第２サブセットに供給される前記電力又は前記クロック信号のうち少なくとも１つをゲート制御するように構成されたゲートロジック（３４０）と、を備える、
請求項７の装置。
【請求項９】
前記変換装置は、前記変換を実行するのに必要なオーバーヘッドと、前記ＲＮＳオペランドに関連する前記動的精度によって示される前記ターゲットの二進数に対して算術演算を実行する前に算術演算を停止することによって生じると予想される節電量と、の比較に基づいて、前記オペランドを前記従来の数系から前記ＲＮＳオペランドに選択的に変換するように構成されている、
請求項１の装置。
【請求項１０】
オペランド（１１０）を、前記オペランドの各二進数を１ビットとして表す従来の数系から、各二進数を複数のビットとして表す冗長数系（ＲＮＳ）オペランド（２１０，２１５）に変換することと、
前記ＲＮＳオペランドに対して最上位ビット（ＭＳＢ）から最下位ビット（ＬＳＢ）の方向に算術演算を実行することと、
前記ＲＮＳオペランドに関連する動的精度（２２０）によって示されるターゲットの二進数に対して前記算術演算を実行する前に前記算術演算を停止することと、を含む、
方法。
【請求項１１】
前記ＲＮＳオペランドに対して算術演算を実行することは、算術論理装置によって実装された複数のビットスライス（３１１，３１２，３１３，３１４，３１５）を使用して前記ＲＮＳオペランドの複数の二進数に対して算術演算を独立して実行することを含み、各ビットスライスは、前記ＲＮＳオペランドの二進数のうち１つの二進数に対して算術演算を実行するように構成されている、
請求項１０の方法。
【請求項１２】
前記複数のビットスライスを使用して算術演算を実行することは、
上位の二進数に対して演算を行うビットスライスにおいて、下位の二進数に対して演算を行うビットスライスからのキャリーインビットを受信することと、
前記上位の二進数に対して演算を行うビットスライスからのキャリーアウトビットを供給することと、を含み、
前記キャリーインビットは、前記キャリーアウトビットの値を決定しない、
請求項１１の方法。
【請求項１３】
前記複数のビットスライスのうち第１サブセットをオンにするイネーブル信号（３２１，３２２，３２３，３２４，３２５）を供給することを含み、
前記第１サブセットは、前記ターゲットの二進数よりも上位にある前記ＲＮＳオペランドの二進数に対して演算を行う、
請求項１１の方法。
【請求項１４】
前記ターゲットの二進数と等しいか下位の前記ＲＮＳオペランドの二進数に対して演算を行う前記複数のビットスライス（３１１，３１２，３１３，３１４，３１５）のうち第２サブセットに対してイネーブル信号を供給するのを避けることを含む、
請求項１１の方法。
【請求項１５】
前記第２サブセットに供給される電力又はクロック信号のうち少なくとも１つをゲート制御することを含む、
請求項１４の方法。
【請求項１６】
前記ＲＮＳオペランドのデータタイプ、前記ＲＮＳオペランドの二進数の統計的表現のうち少なくとも１つに基づいて、又は、バッテリレベルの変化若しくは前記算術演算の結果の目標精度の変化のうち少なくとも１つに応じて、実行時に前記動的精度を決定することを含む、
請求項１０の方法。
【請求項１７】
前記ＲＮＳオペランドに関連する累積エラーを受信することと、
前記累積エラーに基づいて実行時に前記動的精度を変更することと、を含む、
請求項１０の方法。
【請求項１８】
前記オペランドを前記従来の数系から前記ＲＮＳオペランドに変換することは、前記変換を実行するのに必要なオーバーヘッドと、前記ＲＮＳオペランドに関連する前記動的精度によって示される前記ターゲットの二進数に対して算術演算を実行する前に算術演算を停止することによって生じると予想される節電量と、の比較に基づいて、前記オペランドを前記従来の数系から前記ＲＮＳオペランドに変換することを含む、
請求項１０の方法。
【請求項１９】
オペランド（１１０）を、前記オペランドの各二進数を１ビットとして表す従来の数系から、各二進数を複数のビットとして表す冗長数系（ＲＮＳ）オペランド（２１０，２１５）に変換する第１変換装置（１１５）と、
算術演算のシーケンスを実行する算術論理装置（２０５）であって、前記算術演算の各々は、前記ＲＮＳオペランドに対して最上位ビット（ＭＳＢ）から最下位ビット（ＬＳＢ）の方向に実行され、前記算術演算は、前記算術演算に関連する異なる動的精度によって示される異なるターゲットの二進数に対して前記算術演算を実行する前に停止される、算術論理装置（２０５）と、
前記算術演算のシーケンスのＲＮＳ結果を前記従来の数系に変換する第２変換装置（１５５）と、を備える、
装置。
【請求項２０】
前記オペランドを前記従来の数系から前記ＲＮＳオペランドに変換することは、前記変換を実行するのに必要なオーバーヘッドと、前記算術演算に関連する異なる動的精度によって示される異なるターゲットの二進数に対して前記算術演算を実行する前に前記算術演算を停止することによって生じると予想される節電量と、の比較に基づいて、前記オペランドを前記従来の数系から前記ＲＮＳオペランドに変換することを含む、
請求項１９の装置。
【発明の詳細な説明】
【背景技術】
【０００１】
ラップトップコンピュータ、タブレットコンピュータ、スマートフォン及び他のコンピューティングデバイスは、内蔵バッテリ等の限られた電源に依存している。バッテリは通常充電可能であるが、バッテリの蓄積電力を効率的に使用して充電間の動作間隔を延長することができる。サーバ、クラウドコンピューティングリソース及び組み込み型コンピュータ等のウォールパワード（wall-powered）コンピュータも、電力、冷却及び熱管理のコストによって、ますます電力制約を受けている。コンピューティングデバイスに実装された算術論理装置は、倍精度浮動小数点（６４ビット）、単精度浮動小数点（３２ビット）及び半精度浮動小数点（１６ビット）を含む異なる精度を実現するために、異なるビット数で表されるオペランドに対して算術演算を実行する。算術論理装置で消費される電力は、算術論理装置が高い精度で動作している場合には高くなり、低い精度で動作している場合には低くなる。
【０００２】
添付の図面を参照することによって、本開示をより良く理解することができ、その多数の機能及び利点が当業者に明らかとなるであろう。異なる図面における同じ符号の使用は、類似又は同じアイテムを示す。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、コンピューティングデバイスのブロック図である。
【図２】いくつかの実施形態による、最上位ビットファースト（ＭＳＢファースト）演算を使用して冗長数系（ＲＮＳ）オペランドに対して算術演算を実行するように構成された算術論理装置を含むコンピューティングデバイスのブロック図である。
【図３】いくつかの実施形態による、動的精度に基づいて選択的に有効にされる算術論理装置を実装するコンピューティングデバイスのブロック図である。
【図４】いくつかの実施形態による、ＲＮＳオペランドに関連するエラーを伝えるコンピューティングデバイスのブロック図である。
【図５】いくつかの実施形態による、ＲＮＳオペランドに対して動的に可変な精度算術演算を実行する方法のフロー図である。
【発明を実施するための形態】
【０００４】
ニューラルネットワーク及び信号処理アプリケーションを含む多くのアプリケーションがある程度の精度の低下を許容することができるとしても、数値計算は、不要に正確な計算を実行することによって電力を浪費することが多い。したがって、コンピューティングデバイスのバッテリの動作間隔は、いくつかの算術演算を低い精度で実行することによって延長することができる。例えば、プログラマは、いくつかの演算を倍精度ではなく半精度で実行するように指定することができる。しかしながら、算術演算の精度は、通常、コンピューティングデバイスによる実行のためにコードがコンパイルされるときに決定される。コードの実行中に、コンパイル済みのコードの算術演算の精度を変更することはできない。
【０００５】
コンピューティングデバイスのバッテリ等の電源の動作間隔は、コンピューティングデバイスによって実行される算術演算の精度を動的に変更することによって延長することができる。算術精度の動的な変更をサポートするために、オペランドは、各二進数を１ビットとして表す従来の数系から、各二進数を複数のビットとして表す冗長数系（ＲＮＳ）に変換される。これにより、最上位ビット（ＭＳＢ）から最下位ビット（ＬＳＢ）の方向に計算を実行することができる。各ＲＮＳオペランドは、ＲＮＳオペランドに対して実行される演算の目標精度に対応するいくつかのビットによって表される動的精度に関連付けられる。いくつかの実施形態では、動的精度は、データタイプ（例えば、グラフィックスオブジェクト若しくはプリミティブを表すデータタイプは、ビデオ、ＲＧＢ色、シーン深度若しくは頂点位置データを含む）又はデータ値を表す統計（例えば、データ値が１若しくは０等の値付近に集中すること、データ値が特定の範囲内にあること、若しくは、データ値が閾値を上回るか下回る平均値若しくは中央値を有することを示す統計的尺度）に基づいて決定される。また、動的精度は、例えばバッテリレベルの変化、目標精度の変化等に応じて、実行時に変更することもできる。いくつかの実施形態では、動的精度は、ＲＮＳオペランド毎に異なる。各ＲＮＳオペランドの動的精度は、動的精度及びＲＮＳオペランドの値を含むデータ構造で示される。
【０００６】
算術演算は、ＲＮＳオペランドの動的精度で示される二進数に対して、最上位ビット（ＭＳＢ）から最下位ビット（ＬＳＢ）の方向に実行される。これは、ＬＳＢからＭＳＢの方向に進むビットに対して演算を実行する従来の「ＬＳＢファースト」演算とは対照的に、「ＭＳＢファースト」演算と呼ばれる。ＭＳＢファースト演算を実行する算術論理装置は、ＲＮＳオペランド内の各二進数に対して算術演算を実行するために、（本明細書ではビットスライスと呼ばれる）別々のハードウェアコンポーネントを含む。動的精度によって示されるＲＮＳオペランドの一部に対応するビットスライスをオンにするために、イネーブル信号が提供される。動的精度によって示されるＲＮＳオペランドの一部よりも下位の二進数に対して演算を行うビットスライスに対して、電力又はクロック信号をゲート制御することができる。ＲＮＳオペランドに対して算術演算を実行することは、ビットスライス間の２ビット以上のリップルを抑制し、例えば、ビットスライスによって下位ビットスライスから受信したキャリーインビットは、ビットスライスによって上位ビットスライスに提供されるキャリーアウトビットの値を決定しない。いくつかの実施形態では、従来の二進数からＲＮＳオペランドへの変換、及び、ＲＮＳオペランドに対して実行される算術演算の精度の動的な変更は、変換を実行するのに必要なオーバーヘッドと、精度の動的な変更によって生じると予想される節電量との比較に基づいて、選択的に実行される。
【０００７】
図１は、いくつかの実施形態による、コンピューティングデバイス１００のブロック図である。コンピューティングデバイス１００は、従来の二進数をＲＮＳオペランドに変換し、ＭＳＢファースト演算を使用してＲＮＳオペランドに対して算術演算を実行するように構成されたハードウェアコンポーネント１０５のセットを含む。ハードウェアコンポーネント１０５によって実行可能な算術演算の例は、加算、減算、乗算及び除算を含む。さらに、超越関数を含むより複雑な関数は、加算、減算、乗算及び除算の機能に基づいて実装することができる。したがって、ハードウェアコンポーネント１０５は、ＭＳＢファースト演算を使用して、より複雑な関数を実行することができる。ハードウェアコンポーネント１０５のいくつかの実施形態は、基板又はダイ上に製造された中央処理装置（ＣＰＵ）、グラフィックス処理装置（ＧＰＵ）又はアクセラレーテッドプロセッシングユニット（ＡＰＵ）等の処理装置を使用して実施される。ハードウェアコンポーネント１０５は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタル信号プロセッサ（ＤＳＰ）、又は、ハードウェアコンポーネント（例えば、トランジスタ、コンデンサ、抵抗器、トレース、ワイヤ等）の他の組み合わせとしても実装することができる。
【０００８】
ハードウェアコンポーネント１０５は、従来の数系（ＣＮＳ）に従ってフォーマットされた１つ以上のオペランド１１０を受信するように構成されている。オペランド１１０のいくつかの実施形態は、１、２、４、８、…等の二進数のシーケンスを使用した二進フォーマットで表される。オペランド１１０内の各二進数は単一のビットとして表され、ビットの値はオペランドの値を示す。例えば、１の値を有するオペランド１１０は、ＣＮＳにおいて０００１として表すことができる。
【０００９】
変換装置１１５は、ハードウェアコンポーネント１０５に実装されており、従来のオペランドを、各二進数が複数のビットによって表されるＲＮＳオペランドに変換するように構成されている。例えば、オペランド１１０の冗長２進表現は、各二進数を２ビットとして表すことができ、二進数の値は、表１のような変換テーブルを使用して決定することができる。１の値を有するオペランドは、０１−０１−０１−１１（０＋０＋０＋１＝１）、０１−０１−１０−１１（０＋０＋０＋１＝１）、０１−０１−１１−００（０＋０＋２−１＝１）又は１１−００−００−００（８−４−２−１＝１）を含む、異なる二進数の値を使用したＲＮＳオペランドとして表すことができる。変換装置１１５の他の実施形態は、異なる冗長数系を使用して、従来のオペランドをＲＮＳオペランドに変換することができる。
【表１】
2019537787.tif 000003
【００１０】
従来のオペランドをＲＮＳオペランドに変換することによって、ＲＮＳオペランドに対して最上位ビット（ＭＳＢ）から最下位ビット（ＬＳＢ）の方向に計算を実行することができる。算術演算は、ＲＮＳオペランドに対しても高速に実行することができる。しかしながら、変換装置１１５がオペランド１１０をＲＮＳオペランドに変換すると、変換を実行するのに必要な追加の処理時間及び電力等のオーバーヘッドが発生する。したがって、変換装置１１５のいくつかの実施形態は、発生したオーバーヘッドと、ＲＮＳオペランドに対して算術演算を実行する利点との比較に基づいて、オペランド１１０の変換を選択的に実行する。例えば、変換を実行するのに必要なリソースは、算術演算を高速化することによって節約されるリソースと比較することができる。別の例では、変換を実行するのに必要なリソースは、ＲＮＳオペランド内の最上位の二進数のセットに対してのみ算術演算を実行し、ＲＮＳオペランド内の下位の二進数の補集合に対する算術演算の実行を回避することによって節約されるリソースと比較することができる。いくつかの実施形態では、例えば構成可能な遅延ライン等の完了検出回路がハードウェアコンポーネント１０５に含まれ、本明細書で説明するように、ＲＮＳオペランド内の全ての二進数に対して演算を行う前に停止又は終了する算術演算の完了を検出するために使用される。
【００１１】
ハードウェアコンポーネント１０５は、変換装置１１５によって生成されたＲＮＳオペランドに対して算術演算１２０，１２５，１３０のセットを実行することができる。算術演算１２０，１２５，１３０は順番に実行することができ、例えば、算術演算１２０の結果は、算術演算１２５への入力となる。また、算術演算１２０，１２５，１３０は、異なるＲＮＳオペランドのセット、重複するＲＮＳオペランドのセット、又は、部分的に重複するＲＮＳオペランドのセットに対して実行される演算を表すことができる。いくつかの実施形態では、算術演算１２０，１２５，１３０は、ハードウェアコンポーネント１０５に実装されている算術論理装置（図１には示されていない）によって実行される。また、算術演算１２０，１２５，１３０は、別の算術論理装置、又は、ＭＳＢファースト演算を実行するように構成された他のハードウェアによって実行することもできる。
【００１２】
算術演算１２０，１２５，１３０は、右向きの矢印１３５（明確にするために、符号で示されているもののみを指す）によって示すように、ＲＮＳオペランドに対するＭＳＢファースト演算を使用して実行される。したがって、算術演算１２０，１２５，１３０の各々は、ＲＮＳオペランド内の最上位の二進数を表すビットに対して算術演算を実行することによって開始する。次に、算術演算１２０，１２５，１３０は、次の最上位の二進数を表すビットに対して算術演算を実行する。したがって、算術演算の各反復は、算術演算の結果の精度を単調に増加させる。ＲＮＳ算術演算では、算術演算１２０，１２５，１３０は、算術演算がＲＮＳオペランド内の全ての二進数に対して実行されるまで、下位の二進数に対して算術演算を実行し続けることができる。
【００１３】
しかしながら、本明細書で説明するように、全てのアプリケーションが算術演算１２０，１２５，１３０によって提供される最高レベルの精度を必要とするわけではない。したがって、ＲＮＳオペランド内の全ての二進数に対して算術演算を実行することは、電力を不要に消費する可能性があり、ハードウェアコンポーネント１０５のリソースが制限される可能性がある。したがって、ハードウェアコンポーネント１０５は、動的精度によって示されるターゲットの二進数に対して算術演算を実行する前に、算術演算１２０，１２５，１３０を停止、終了又は中断するように構成されている。ターゲットの二進数は閾値の有効桁数を表すので、閾値の有効桁数よりも下位の二進数に対して算術演算が実行されない。算術演算１２０，１２５，１３０を中断することは、算術演算１２０，１２５，１３０の結果の精度を下げるが、ハードウェアコンポーネント１０５の電力消費も低減する。
【００１４】
ＲＮＳオペランド又は算術演算に関連する動的精度は、実行時に変更することができ、異なるＲＮＳオペランド又は算術演算１２０，１２５，１３０毎に異なり得る。例えば、ライン１４０，１４５，１５０は、対応する算術演算１２０，１２５，１３０のターゲットの二進数を表す。したがって、算術演算１２５は、最高精度を実現し（且つ、演算１２５がＲＮＳオペランド内の全ての二進数に対して実行された場合に消費されることになる総電力の最大部分を消費する）、算術演算１２０は、次に高い精度を実現し（且つ、演算１２０がＲＮＳオペランド内の全ての二進数に対して実行された場合に消費されることになる総電力の次に大きい部分を消費する）、算術演算１３０は、最も低い精度を実現する（しかしながら、算術演算１３０がＲＮＳオペランド内の全ての二進数に対して実行された場合に消費されることになる総電力の最小部分を消費する）。
【００１５】
また、ハードウェアコンポーネント１０５は、ＲＮＳオペランドを従来の数系（ＣＮＳ）に従って表されるオペランド１６０に変換するための変換装置１５５を含む。例えば、算術演算１２０，１２５，１３０の一部又は全ては、ＲＮＳフォーマットの結果を変換装置１５５に提供することができ、変換装置１５５は、ＲＮＳの結果をオペランド１６０に変換する。いくつかの実施形態では、変換装置１１５は、ＲＮＳの結果をＣＮＳオペランド１６０に変換し戻すのに必要なオーバーヘッドに部分的に基づいて、オペランド１１０をＲＮＳオペランドに選択的に変換する。
【００１６】
図２は、いくつかの実施形態による、ＭＳＢファースト演算を使用してＲＮＳオペランド２１０，２１５に対して算術演算を実行するように構成された算術論理装置（ＡＬＵ）２０５を含むコンピューティングデバイス２００のブロック図である。算術論理装置２０５は、図１に示すハードウェアコンポーネント１０５のいくつかの実施形態において実装される。したがって、算術論理装置２０５を使用して、ＲＮＳオペランド２１０，２１５に対する加算、減算、乗算又は除算を含む１つ以上の算術演算を実行することができる。さらに、算術論理装置２０５のいくつかの実施形態は、ＭＳＢファースト演算を使用し、ＲＮＳオペランド２１０，２１５に対して超越関数を含む複雑な関数を実行するように構成されている。図２に示す算術論理装置２０５は、２つのＲＮＳオペランド２１０，２１５を受信するが、算術論理装置２０５のいくつかの実施形態は、３つ以上のＲＮＳオペランドを受信して演算を行うことができる。
【００１７】
ＲＮＳオペランド２１０，２１５は、各々の動的精度２２０，２２５に関連付けられている。図示した実施形態では、ＲＮＳオペランド２１０，２１５の値と各々の動的精度２２０，２２５とは、対応するデータ構造２３０，２３５で算術論理装置２０５に提供される。例えば、データ構造２３０，２３５は、ＲＮＳオペランド２１０，２１５の値と各々の動的精度２２０，２２５とを保持するように構成された特別に定義された命令語（例えば、非常に長い命令語の変形等）とすることができる。しかしながら、いくつかの実施形態では、ＲＮＳオペランド２１０，２１５と各々の動的精度２２０，２２５とは、異なるデータ構造で算術論理装置２０５に提供される。さらに、いくつかの実施形態では、動的精度２２０，２２５は、算術論理装置２０５又は制御装置２４５に直接提供されない。代わりに、動的精度２２０，２２５を示すヒントが算術論理装置２０５に提供される。ヒントは、動的精度２２０，２２５よりも少ない情報を含むように定義することができ、コンピューティングデバイス２００の低電力モード等の動作モードにおいて、完全な動的精度２２０，２２５の代わりに選択的に使用することができる。ヒントは、アプリケーションと、算術論理装置２０５及び制御装置２４５を実装するのに使用されるハードウェアとの間のインタフェースを使用して、アプリケーションによって提供することができる。
【００１８】
制御装置２４５は、動的精度２２０，２２５の値にアクセスし、場合によっては、ＲＮＳオペランド２１０，２１５の値にアクセスする。次に、制御装置２４５は、動的精度２２０，２２５の値、場合によってはＲＮＳオペランド２１０，２１５の値に応じて生成される制御信号を、算術論理装置２０５に提供する。制御信号は、例えば最上位ビット（ＭＳＢ）から最下位ビット（ＬＳＢ）の方向に算術演算を実行することによって等のように、ＭＳＢファースト演算を使用して、ＲＮＳオペランド２１０，２１５の値によって表される二進数に対して算術演算を実行するように算術論理装置２０５に指示する。
【００１９】
また、制御装置２４５は、ＲＮＳオペランド２１０，２１５に関連する動的精度２２０，２２５によって示されるターゲットの二進数に対して算術演算を実行する前に、算術演算の実行を停止するように算術論理装置２０５に指示する制御信号を提供する。例えば、ＲＮＳオペランド２１０，２１５が単精度浮動小数点フォーマット（例えば、従来の二進数系では３２ビットで表され、ＲＮＳでは複数ビットで表される３２個の二進数で表される）で算術論理装置２０５に提供され、上位３０個の二進数が十分な精度を提供することを動的精度２２０，２２５が示す場合に、制御装置２４５は、最上位から最下位への順において３１番目の二進数に対して算術演算を実行する前に、算術演算の実行を停止するように算術論理装置に指示する。いくつかの実施形態では、制御装置２４５は、コンピューティングデバイス２００の電力消費状態に基づいて、ターゲットの二進数で算術演算の実行を停止するように、算術論理装置２０５に選択的に指示する。例えば、制御装置２４５は、コンピューティングデバイス２００が電力の節約を必要としない電力消費モードであることに応じて、算術演算の実行停止を算術論理装置２０５に指示するのを避けるように構成されてもよい。別の例では、制御装置２４５は、コンピューティングデバイスが電力の節約を必要とする電力消費モード（例えば、バッテリレベルが閾値を下回っていることによってトリガされるモード等）であることに応じて、算術演算の実行停止を算術論理装置２０５に指示するように構成されてもよい。
【００２０】
いくつかの実施形態では、コンピューティングデバイス２００は、動的精度２２０，２２５に基づいて算術論理装置２０５によって実行される算術演算の実行時間を測定するように動的に構成された構成可能な遅延ライン２４７を含む。例えば、制御装置２４５は、算術論理装置２０５がＲＮＳオペランド２１０，２１５に対して算術演算を開始するのに応じて、パルス（又はエッジ）を、構成可能な遅延ライン２４７に送信することができる。次に、制御装置２４５は、構成可能な遅延ライン２４７の出力にパルス（又はエッジ）が現れたことに応じて、算術演算が完了したと判別してもよい。制御装置２４５は、動的精度２２０，２２５に基づいて構成可能な遅延ライン２４７を構成し、これにより、パルス（又はエッジ）が構成可能な遅延ライン２４７を伝わって制御装置２４５に戻るのに必要な時間間隔は、算術論理装置２０５が動的精度２２０，２２５によって示される精度までＲＮＳオペランド２１０，２１５に対して算術演算を実行するのに必要な時間間隔と等しくなる。
【００２１】
制御装置２４５のいくつかの実施形態は、ＲＮＳオペランド２１０，２１５に記憶されたデータの特性に基づいて、動的精度２２０，２２５の値を決定する。例えば、動的精度２２０，２２５は、データタイプに基づいて決定することができ、これにより、ビデオ、ＲＧＢカラー、シーン深度又は頂点位置データを含むグラフィックスオブジェクト又はプリミティブを表すデータタイプに対して異なるレベルの精度を利用することができる。別の例では、動的精度２２０，２２５は、ＲＮＳオペランド２１０，２１５内の二進数の特性、及び、算術論理装置２０５によって以前受信された他のＲＮＳオペランドの特性を表す統計情報に基づいて決定することができる。統計情報は、二進数が１又は０等の値付近に集中すること、二進数が特定の範囲内の平均値又は中央値を有すること、二進数が閾値を上回るか下回る平均値又は中央値を有すること等を示す統計的尺度を含むことができる。
【００２２】
制御装置２４５のいくつかの実施形態は、実行時に動的精度２２０，２２５を決定又は変更する。例えば、制御装置２４５は、バッテリレベルの変化、目標精度の変化等に応じて、動的精度２２０，２２５のうち１つ以上を変更することができる。動的精度２２０，２２５を増加させることは、通常、電力消費量を増加させることになり、したがって、バッテリレベルの増加に応じて実行される。動的精度２２０，２２５を低下させることは、通常、電力消費量を低下させることになり、したがって、例えば、低バッテリレベルを示す閾値を下回る等のバッテリレベルの低下に応じて実行される。いくつかの実施形態では、動的精度２２０，２２５は、ＲＮＳオペランド２１０，２１５毎に異なる。
【００２３】
また、算術論理装置２０５は、ＲＮＳオペランド２１０，２１５に対して算術演算を実行することに応じて、精度を決定又は変更するように構成されてもよい。算術論理装置２０５のいくつかの実施形態は、ＲＮＳオペランド２１０，２１５に対して実行された算術演算のＲＮＳ結果２５５に対して動的精度２５０を生成する。例えば、算術論理装置２０５は、動的精度２５０を、動的精度２２０，２２５のうち低い方に設定することができる。そして、動的精度２５０及びＲＮＳ結果２５５は、算術論理装置２０５から例えばデータ構造２６０内で出力される。
【００２４】
図３は、いくつかの実施形態による、動的精度３１０に基づいて選択的に有効にされる算術論理装置３０５を実装するコンピューティングデバイス３００のブロック図である。算術論理装置３０５は、異なる二進数のＲＮＳオペランドに対して演算を行う複数のビットスライス３１１，３１２，３１３，３１４，３１５（本明細書では、まとめて「ビットスライス３１１〜３１５」と呼ぶ）を含む。図３に示すビットスライス３１１〜３１５は、最上位ビット（左側）から最下位ビット（右側）まで、関連する二進数のビットの有効桁数順に配列されている。動的精度３１０は、精度を表すためにいくつかの最上位ビットを或る値（例えば「１」等）に設定し、残りの下位ビットを或る補数値（例えば「０」等）に設定するサーモメータコードを使用して、精度を符号化する。
【００２５】
ビットスライス３１１〜３１５の各々は、算術論理装置３０５によって受信されたＲＮＳオペランドの対応する二進数に対して算術演算（例えば合計等）を実行するように構成されたハードウェアコンポーネント（Ｓ）を含む。また、ビットスライス３１１〜３１５の各々は、次の上位のビットスライスに提供されたキャリービットを生成するように構成されたハードウェアコンポーネント（Ｃ）を含む。キャリービットは、ビットスライスから提供された場合にはキャリーアウトビットと呼ばれ、ビットスライスによって受信された場合にはキャリーインビットと呼ばれる。ハードウェアコンポーネント（Ｓ）は、キャリーインビットの値を利用して算術演算を実行する。しかしながら、ビットスライス３１１〜３１５は、ビットスライス３１１〜３１５間の２ビット以上のリップルを防ぐように構成されており、例えば、ビットスライスによって下位ビットスライスから受信されたキャリーインビットは、ハードウェアコンポーネント（Ｃ）によって生成されビットスライスによって上位ビットスライスに提供されるキャリーアウトビットの値を決定しない。
【００２６】
ビットスライス３１１〜３１５は、一連のビットの値によって表される動的精度３１０に基づいて算術演算を実行することが選択的に可能になる。イネーブル信号３２１，３２２，３２３，３２４，３２５（本明細書では、まとめて「イネーブル信号３２１〜３２５」と呼ぶ）は、動的精度３１０内のビットの値に基づいて生成され、対応するビットスライス３１１〜３１５に提供される。図示した実施形態では、動的精度３１０の１ビット内の値「１」は、対応するビットスライスが算術演算を実行するのに有効であることを示しており、ビット内の値「０」は、対応するビットスライスが無効であるため、対応する二進数に対して算術演算を実行するのに使用されないことを示している。例えば、イネーブル信号３２１〜３２３が対応するビットスライス３１１〜３１３に提供され、ビットスライス３１１〜３１３が、ＲＮＳオペランドの二進数に対して算術演算を実行するのを可能にする。イネーブル信号３２４、３２５は、対応するビットスライス３１４，３１５に提供されないので、ビットスライス３１４，３１５は、対応する二進数に対して算術演算を実行しない。いくつかの実施形態では、無効にされたビットスライス（例えば、図３に示すビットスライス３１４）の最上位のハードウェアコンポーネント（Ｃ）は、無効にされたビットスライスのハードウェアコンポーネント（Ｓ）が二進数に対して算術演算を実行しない場合であっても、キャリーアウトビットを生成して、丸め演算をサポートする。ビットスライス３１１〜３１５を選択的に有効又は無効にすることは、無効にされたビットスライスによって消費される電力量を低減することによって、コンピューティングデバイス３００の電力消費量を低減する。
【００２７】
コンピューティングデバイス３００は、算術論理装置３０５に電力を供給するための電源３３０と、算術論理装置３０５にクロック信号を供給するためのクロック信号発生器３３５と、を含む。ゲートロジック３４０は、トランジスタ、スイッチ、ルータ等を使用してコンピューティングデバイス３００に実装され、図２に示す制御装置２４５等の制御装置の制御下で動作する。ゲートロジック３４０は、動的精度３１０に基づいて、電源３３０によってビットスライス３１１〜３１５に供給される電力、又は、クロック信号発生器３３５によって供給されるクロック信号を選択的にゲート制御する。例えば、ゲートロジック３４０は、電力及びクロック信号を有効なビットスライス３１１〜３１３に供給し、無効なビットスライス３１４，３１５の電力及びクロック信号をゲート制御することによって、無効なビットスライス３１４，３１５が、電源３３０又はクロック信号発生器３３５から電力又はクロック信号を受信しないようにする。動的精度３１０に基づいて、ビットスライス３１１〜３１５に供給する電力又はクロック信号を選択的にゲート制御することは、無効なビットスライスが消費する電力量をさらに低減することによって、コンピューティングデバイス３００の電力消費量をさらに低減する。
【００２８】
図４は、いくつかの実施形態による、ＲＮＳオペランドに関連するエラーを伝えるコンピューティングデバイス４００のブロック図である。コンピューティングデバイス４００は、図１に示すコンピューティングデバイス１００又は図２に示すコンピューティングデバイス２００のいくつかの実施形態で実施される。コンピューティングデバイス４００は、本明細書ではまとめて「算術論理装置４０１〜４０３」と呼ばれる複数の算術論理装置４０１，４０２，４０３を含む。図４に示す算術論理装置４０１〜４０３は、コンピューティングデバイス４００の３つの異なるハードウェアコンポーネントを表すことができ、又は、３つの別々の算術演算を実行するのに使用されるコンピューティングデバイス４００の単一のハードウェアコンポーネントを表すことができる。さらに、コンピューティングデバイス４００における算術論理装置４０１〜４０３の数、又は、算術論理装置４０１〜４０３（若しくは他の算術論理装置）を実装するのに使用されるハードウェアコンポーネントの数は、図４に示す数より多くてもよいし、少なくてもよい。
【００２９】
算術論理装置４０１〜４０３は、入力ＲＮＳオペランドと、ＲＮＳオペランドに関連する累積エラーを示す情報と、を受信する。例えば、算術論理装置４０１は、入力ＲＮＳオペランド４０５，４０６と、対応する累積エラー４１０，４１１とを受信し、算術論理装置４０２は、入力ＲＮＳオペランド４１５，４１６と、対応する累積エラー４２０，４２１とを受信する。いくつかの実施形態では、累積エラー４１０，４１１，４２０，４２１は、算術論理装置４０１，４０２によって実行される算術演算に対して動的精度を確立するために使用される。算術論理装置４０１，４０２（又は、対応するコントローラ４２５）は、入力ＲＮＳオペランド４０５，４０６，４１５，４１６に対して算術演算を実行するために算術論理装置４０１，４０２によって使用される動的精度を構成することができ、これにより、算術演算の動的精度は、関連する累積エラー４１０，４１１，４２０，４２１に必要なほど正確ではなくなる。例えば、入力ＲＮＳオペランド４０５，４０６，４１５，４１６の累積エラー４１０，４１１，４２０，４２１が、入力ＲＮＳオペランド４０５，４０６，４１５，４１６内の下位の４つの二進数によって示される値以下である場合には、入力ＲＮＳオペランド４０５，４０６，４１５，４１６の動的精度は、下位４番目の二進数よりも上位の二進数に対応するように設定される。
【００３０】
算術論理装置４０１〜４０３は、出力ＲＮＳオペランド４３０，４３５，４４０と、対応する累積エラー４３１，４３６，４４１とを生成する。例えば、出力ＲＮＳオペランド４３０，４３５は、入力ＲＮＳオペランド４０５，４０６，４１５，４１６に対して算術演算を実行することによって生成され、累積エラー４３１，４３６は、従来のエラー推定／累積技術を使用した算術演算に基づいて決定される。出力ＲＮＳオペランド４３０，４３５と、対応する累積エラー４３１，４３６とは、算術論理装置４０３への入力値として提供され、算術論理装置４０３は、ＲＮＳオペランド４３０，４３５に対して算術演算を実行して、出力ＲＮＳオペランド４４０を生成する。また、算術論理装置４０３は、入力累積エラー４３１，４３６に基づいて累積エラー４４１を決定するために、従来のエラー推定／累積技術を使用する。いくつかの実施形態では、累積エラー４４１は、出力ＲＮＳオペランド４４０の値を決定するのに使用される動的精度を決定するために使用される。
【００３１】
図５は、いくつかの実施形態による、ＲＮＳオペランドに対して動的に可変な精度の算術演算を実行する方法５００のフロー図である。方法５００は、図１に示すコンピューティングデバイス１００、図２に示すコンピューティングデバイス２００、図３に示すコンピューティングデバイス３００、図４に示すコンピューティングデバイス４００のいくつかの実施形態において実装される算術論理装置によって実行される。方法５００は、開始ブロック５０５で開始する。
【００３２】
ブロック５１０では、算術論理装置は、入力ＲＮＳオペランド内の最上位の二進数に対して算術演算を実行する。本明細書で説明したように、算術演算の例には、加算、減算、乗算及び除算、並びに、加算、減算、乗算及び除算の機能に基づいて実施することができる超越関数を含むより複雑な関数が含まれる。
【００３３】
判別ブロック５１５では、算術論理装置は、算術演算を実行するのに未だ使用されていない二進数がＲＮＳオペランド内に存在するかどうかを判別する。存在しない場合、方法５００は、ブロック５２０に進み、入力ＲＮＳオペランドに対して算術演算を実行した結果の動的精度を決定する。次に、方法５００は、終了ブロック５２５に進み、演算を行う二進数がこれ以上存在せず算術演算が完了するために、終了する。ＲＮＳオペランドにさらなる二進数が存在すると算術論理装置が判別した場合、方法は、判別ブロック５３０に進む。
【００３４】
判別ブロック５３０では、算術論理装置は、次の二進数（すなわち、演算が以前に実行された二進数よりも下位の二進数）が、ＲＮＳオペランドに関連する動的精度によって示される閾値の有効桁数よりも上位にあるかどうかを判別する。例えば、本明細書で説明したように、動的精度は、それぞれＲＮＳオペランド内の二進数に対応するサーモメータ符号化ビット配列を使用して表すことができる。閾値の有効桁数よりも上位の二進数（又は、動的精度で示されるターゲットの二進数）に対して演算を行う算術論理装置内のビットスライスが有効にされ、閾値の有効桁数よりも下位の二進数に対して演算を行うビットスライスが無効にされる。
【００３５】
（判別ブロック５３０において）次の二進数が閾値の有効桁数よりも上位であることを動的精度が示す場合、方法５００はブロック５３５に進み、算術論理装置は、ＲＮＳオペランド内の次の上位の二進数に対して算術演算を実行する。次に、方法５００は判別ブロック５１５に進む。（判別ブロック５３０において）次の二進数が閾値の有効桁数よりも下位であることを動的精度が示す場合、方法５００はブロック５２０に進み、入力ＲＮＳオペランドに対して算術演算を実行したＲＮＳ結果の動的精度を決定する。次に、方法５００は終了ブロック５２５に進み、これにより、閾値の有効桁数よりも下位の二進数に対して算術演算を実行する前に、算術演算を停止する。
【００３６】
いくつかの実施形態では、図１〜図５を参照して上述したコンピューティングデバイス等の上述した装置及び技術は、１つ以上の集積回路（ＩＣ）デバイス（集積回路パッケージ又はマイクロチップとも呼ばれる）を備えるシステムで実施される。これらのＩＣデバイスの設計及び製造には、通常、電子設計自動化（ＥＤＡ）及びコンピュータ支援設計（ＣＡＤ）ソフトウェアツールが使用される。これらの設計ツールは、通常、１つ以上のソフトウェアプログラムとして表される。１つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように１つ以上のＩＣデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ＩＣデバイスの設計又は製造の１つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよいし、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
【００３７】
コンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の記憶媒体、又は、記憶媒体の組み合わせを含むことができる。かかる記憶媒体には、限定されないが、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、キャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ）、又は、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステム（例えば、システムＲＡＭ又はＲＯＭ）に内蔵されてもよいし、コンピュータシステム（例えば、磁気ハードドライブ）に固定的に取り付けられてもよいし、コンピュータシステム（例えば、光学ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）に着脱可能に取り付けられてもよいし、有線又は無線のネットワークを介してコンピュータシステム（例えば、ネットワークアクセス可能なストレージ（ＮＡＳ））に接続されてもよい。
【００３８】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の１つ以上のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されると、上記の技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【００３９】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、１つ以上のさらなるアクティビティが実行される場合があり、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【００４０】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【図１】
2019537787.tif 000004
【図２】
2019537787.tif 000005
【図３】
2019537787.tif 000006
【図４】
2019537787.tif 000007
【図５】
2019537787.tif 000008
【手続補正書】
【提出日】令和1年7月22日(2019.7.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
オペランド（１１０）を、前記オペランドの各二進数を１ビットとして表す従来の数系から、各二進数を複数のビットとして表す冗長数系（ＲＮＳ）オペランド（２１０，２１５）に変換する変換装置（１１５）と、
前記ＲＮＳオペランドに対して最上位ビット（ＭＳＢ）から最下位ビット（ＬＳＢ）の方向に算術演算を実行し、前記ＲＮＳオペランドに関連する動的精度（２２０）によって示されるターゲットの二進数に対して前記算術演算を実行する前に前記算術演算を停止する算術論理装置（２０５）と、を備える、
装置（１００）。
【請求項２】
前記算術論理装置は、複数のビットスライス（３１１，３１２，３１３，３１４，３１５）を備え、各ビットスライスは、前記ＲＮＳオペランドの二進数のうち１つの二進数に対して算術演算を実行するように構成されている、
請求項１の装置。
【請求項３】
上位の二進数に対して演算を行うビットスライスによって受信される、下位の二進数に対して演算を行うビットスライスからのキャリーインビットは、前記上位の二進数に対して演算を行うビットスライスによって生成されたキャリーアウトビットの値を決定しない、
請求項２の装置。
【請求項４】
前記複数のビットスライスのうち第１サブセットをオンにするイネーブル信号を供給するように構成された制御装置（２４５）を備え、前記第１サブセットは、前記ターゲットの二進数よりも上位にある前記ＲＮＳオペランドの二進数に対して演算を行う、
請求項２の装置。
【請求項５】
前記制御装置は、前記ＲＮＳオペランドのデータタイプ、前記ＲＮＳオペランドの二進数の統計的表現のうち少なくとも１つに基づいて、又は、バッテリレベルの変化若しくは前記算術演算の結果の目標精度の変化のうち少なくとも１つに応じて、実行時に前記動的精度を決定するように構成されている、
請求項４の装置。
【請求項６】
前記算術論理装置は、前記ＲＮＳオペランドに関連する累積エラーを受信するように構成されており、前記制御装置は、前記累積エラーに基づいて実行時に前記動的精度を変更するように構成されている、
請求項４の装置。
【請求項７】
前記制御装置は、前記ターゲットの二進数と等しいか下位の前記ＲＮＳオペランドの二進数に対して演算を行う前記複数のビットスライスのうち第２サブセットに対してイネーブル信号を供給しない、
請求項４の装置。
【請求項８】
前記複数のビットスライスに電力を供給する電源（３３０）と、
前記複数のビットスライスにクロック信号を供給するクロック信号発生器（３０５）と、
前記第２サブセットに供給される前記電力又は前記クロック信号のうち少なくとも１つをゲート制御するように構成されたゲートロジック（３４０）と、を備える、
請求項７の装置。
【請求項９】
前記変換装置は、前記変換を実行するのに必要なオーバーヘッドと、前記ＲＮＳオペランドに関連する前記動的精度によって示される前記ターゲットの二進数に対して算術演算を実行する前に算術演算を停止することによって生じると予想される節電量と、の比較に基づいて、前記オペランドを前記従来の数系から前記ＲＮＳオペランドに選択的に変換するように構成されている、
請求項１の装置。
【請求項１０】
オペランド（１１０）を、前記オペランドの各二進数を１ビットとして表す従来の数系から、各二進数を複数のビットとして表す冗長数系（ＲＮＳ）オペランド（２１０，２１５）に変換することと、
前記ＲＮＳオペランドに対して最上位ビット（ＭＳＢ）から最下位ビット（ＬＳＢ）の方向に算術演算を実行することと、
前記ＲＮＳオペランドに関連する動的精度（２２０）によって示されるターゲットの二進数に対して前記算術演算を実行する前に前記算術演算を停止することと、を含む、
方法。
【請求項１１】
前記ＲＮＳオペランドに対して算術演算を実行することは、算術論理装置によって実装された複数のビットスライス（３１１，３１２，３１３，３１４，３１５）を使用して前記ＲＮＳオペランドの複数の二進数に対して算術演算を独立して実行することを含み、各ビットスライスは、前記ＲＮＳオペランドの二進数のうち１つの二進数に対して算術演算を実行するように構成されている、
請求項１０の方法。
【請求項１２】
前記複数のビットスライスを使用して算術演算を実行することは、
上位の二進数に対して演算を行うビットスライスにおいて、下位の二進数に対して演算を行うビットスライスからのキャリーインビットを受信することと、
前記上位の二進数に対して演算を行うビットスライスからのキャリーアウトビットを供給することと、を含み、
前記キャリーインビットは、前記キャリーアウトビットの値を決定しない、
請求項１１の方法。
【請求項１３】
前記複数のビットスライスのうち第１サブセットをオンにするイネーブル信号（３２１，３２２，３２３，３２４，３２５）を供給することを含み、
前記第１サブセットは、前記ターゲットの二進数よりも上位にある前記ＲＮＳオペランドの二進数に対して演算を行う、
請求項１１の方法。
【請求項１４】
前記ターゲットの二進数と等しいか下位の前記ＲＮＳオペランドの二進数に対して演算を行う前記複数のビットスライス（３１１，３１２，３１３，３１４，３１５）のうち第２サブセットに対してイネーブル信号を供給するのを避けることを含む、
請求項１１の方法。
【請求項１５】
前記第２サブセットに供給される電力又はクロック信号のうち少なくとも１つをゲート制御することを含む、
請求項１４の方法。
【国際調査報告】
2019537787.tif 000009
2019537787.tif 000010