JP2017162487A - 過度の近似計算誤差から回復するプロセッサ - Google Patents

過度の近似計算誤差から回復するプロセッサ Download PDF

Info

Publication number
JP2017162487A
JP2017162487A JP2017082650A JP2017082650A JP2017162487A JP 2017162487 A JP2017162487 A JP 2017162487A JP 2017082650 A JP2017082650 A JP 2017082650A JP 2017082650 A JP2017082650 A JP 2017082650A JP 2017162487 A JP2017162487 A JP 2017162487A
Authority
JP
Japan
Prior art keywords
processor
approximation
error
instruction
approximate
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2017082650A
Other languages
English (en)
Other versions
JP6586435B2 (ja
Inventor
ヘンリー,グレン,ジー
G Henry Glenn
パークス,テリー
Parks Terry
フーカー,ロドニー,イー
E Hooker Rodney
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Zhaoxin Semiconductor Co Ltd
Original Assignee
VIA Alliance Semiconductor Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by VIA Alliance Semiconductor Co Ltd filed Critical VIA Alliance Semiconductor Co Ltd
Publication of JP2017162487A publication Critical patent/JP2017162487A/ja
Application granted granted Critical
Publication of JP6586435B2 publication Critical patent/JP6586435B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Library & Information Science (AREA)
  • Executing Machine-Instructions (AREA)
  • Retry When Errors Occur (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Hardware Redundancy (AREA)

Abstract

【課題】計算のセットを近似化において実行する前に、プロセッサの状態のスナップショットを受け取るように構成されたストレージを含むプロセッサを提供する。【解決手段】プロセッサは、計算のセットが近似化において実行される間、累積された誤差の量を示すインジケータをさらに含む。プロセッサは、累積された誤差の量が誤差限界を超えたと検知するとき、プロセッサの状態をストレージからスナップショットに復元するように構成される。【選択図】図10

Description

近似計算の領域には相当量の理論的研究があった。近似計算は、精度の潜在的低減と引き換えに電力消費を低減するやり方で計算を実行しようとする。近似計算は、学究的世界の人気のある話題であったが、商業的に実現可能なプロセッサで近似計算をどのように使用するかに関しては、ほとんど成果がなかった。
関連出願の相互参照
本出願は、2014年10月23日に出願した米国非仮特許出願第14/522,520号の優先権を主張し、該出願は、2014年2月10日に出願した「PROCESSOR THAT PERFORMS APPROXIMATE COMPUTING INSTRUCTIONS;PROCESSOR THAT RECOVERS FROM EXCESSIVE APPROXIMATE COMPUTING ERROR;PROCESSOR WITH APPROXIMATE COMPUTING FUNCTIONAL UNIT」という名称の米国仮特許出願第61/937,741号に基づいて優先権を主張し、参照によりその全体が本明細書に組み込まれている。
一態様において、本発明はプロセッサを提供する。プロセッサは、計算のセットを近似化(approximate manner)において実行する前にプロセッサの状態のスナップショットを受け取るように構成されたストレージを含む。プロセッサは、計算のセットが近似化において実行される間、累積された誤差の量を示すインジケータをさらに含む。プロセッサは、累積された誤差の量が誤差限界を超えたことを検知するとき、プロセッサの状態をストレージからスナップショットに復元するように構成される。
別の態様において、本発明は、プロセッサ上での動作の方法を提供する。方法は、計算のセットを近似化において実行する前にプロセッサの状態のスナップショットを撮るステップと、計算のセットが近似化において実行される間、累積された誤差の量のインジケータを決定するステップと、プロセッサが、累積された誤差の量が誤差限界を超えたことを検知するとき、プロセッサの状態をスナップショットに復元するステップとを含む。
さらに別の態様において、本発明は、コンピューティングデバイスでの使用のための少なくとも1つの非一時的コンピュータ使用可能媒体に符号化されたコンピュータプログラム製品を提供し、該コンピュータプログラム製品は、プロセッサを指定するために前記媒体に具現化されたコンピュータ使用可能プログラムコードを備える。コンピュータ使用可能プログラムコードは、計算のセットを近似化において実行する前にプロセッサの状態のスナップショットを受け取るように構成されたストレージを指定する第1のプログラムコードを含む。コンピュータ使用可能プログラムコードは、計算のセットが近似化において実行される間、累積された誤差の量を示すインジケータを指定する第2のプログラムコードをさらに含む。プロセッサは、累積された誤差の量が誤差限界を超えたことを検知するとき、プロセッサの状態をストレージからスナップショットに復元するように構成される。
プロセッサの一実施形態を示す構成図である。 図1の近似化機能ユニットの3つの実施形態を示す構成図である。 近似命令を例示する構成図である。 一実施形態による、図1のプロセッサの動作を例示する流れ図である。 一実施形態による、図1のプロセッサの動作を例示する流れ図である。 コンピュータシステム内の図1のプロセッサの動作を例示する流れ図である。 3つの異なるコンピューティングシステムを例示する構成図である。 図6のシステムの動作を例示する流れ図である。 近似計算認識プロセッサ上で実行されるソフトウェアの開発のためのプロセスを例示する流れ図である。 近似計算認識プロセッサ上で実行されるソフトウェアの開発のための代替プロセスを例示する流れ図である。 近似計算を実行するプログラムを実行する図1のプロセッサの動作を例示する流れ図である。 一実施形態による、図10のブロック1014の動作をより詳細に例示する流れ図である。 代替実施形態による、図10のブロック1014の動作をより詳細に示す流れ図である。
プロセッサが近似計算を実行する実施形態を説明する。近似計算が行われるのは、プロセッサの命令セットアーキテクチャによって指定することができる最高精度より低い程度の精度で計算が実行されるときである。
次に図1を参照すると、プロセッサ100の一実施形態を例示する構成図が示される。プロセッサ100は、中央処理装置(CPU)又はグラフィック処理装置(GPU)など、記憶された命令を実行するプログラマブルデータプロセッサを備える。プロセッサ100は、命令キャッシュ102と、命令キャッシュ102に結合された命令トランスレータ104と、命令トランスレータ104からマイクロ命令を受け取るように結合された1つ又は複数の近似化機能ユニット106と、命令オペランド166を近似化機能ユニット106に提供するように結合されたアーキテクチャレジスタ108と、近似化機能ユニット106に結合された近似制御レジスタ132と、近似化機能ユニット106に結合されたデータキャッシュメモリ138と、近似化機能ユニット106に結合されたスナップショットストレージ134とを含む。プロセッサ100は、他のユニットを含むこともでき、例えば、リネームユニット、命令スケジューラ及び/又は予約ステーションを命令トランスレータ104と近似化機能ユニット106との間に採用することができ、リオーダバッファをアウトオブオーダ命令実行に対応するように採用することができる
命令キャッシュ102は、メモリから取り出され、プロセッサ100によって実行されるアーキテクチャ命令174をキャッシュする。アーキテクチャ命令174は、図3に関して説明する近似計算命令399の実施形態などの近似計算命令を含むことができる。近似計算命令399は、プロセッサ100の近似計算ポリシー、すなわち、近似化機能ユニット106が最高度の精度で計算を実行するのか又は最高度より低い精度及び最高度より低い程度で計算を実行するのかを制御する。近似計算命令399は、本明細書に説明するように、プロセッサ100の汎用レジスタの各々に関連付けられた誤差(error)量のクリア(clearing)も制御する。好ましくは、プロセッサ100は、近似化をしない他の機能ユニットを含む。一実施形態において、アーキテクチャ命令174は、本明細書に説明する近似計算命令399の実施形態を含むように修正されたx86命令セットアーキテクチャ(ISA)に実質的に従う。プロセッサ100のISAがx86ISA以外である他の実施形態が企図されている。
命令トランスレータ104は、命令キャッシュ102からアーキテクチャ命令174を受け取る。命令トランスレータ104は、アーキテクチャ命令174を復号し、それらをマイクロ命令に変換する命令デコーダを含む。マイクロ命令は、アーキテクチャ命令セットとは異なる命令セット、すなわち、マイクロアーキテクチャ命令セットによって定義される。マイクロ命令は、アーキテクチャ命令174を実現する。
好ましくは、命令トランスレータ104は、プロセッサ100の読取り専用メモリに好ましくは記憶された、マイクロコード命令を含むマイクロコード136をさらに含む。一実施形態において、マイクロコード命令はマイクロ命令である。代替実施形態において、マイクロコード命令は、マイクロトランスレータによってマイクロ命令に変換される。マイクロコード136は、命令トランスレータ104のプログラマブルロジックアレイによって直接マイクロ命令に変換されない、プロセッサ100のISAのアーキテクチャ命令174のサブセットを実現する。さらに、マイクロコード136は、一実施形態により、近似計算によって生成された累積誤差限界が誤差限界を超えるとき生成されるなどのマイクロアーキテクチャ例外を扱う。
アーキテクチャレジスタ108は、命令(例えば、マイクロ命令)オペランド166を近似化機能ユニット106に提供し、近似化機能ユニット106によって生成された結果を、好ましくはリオーダバッファ(図示せず)を介して受け取る。アーキテクチャレジスタ108の各々に関連付けられているのは、関連付けられたレジスタ108に記憶された結果の誤差の量の指標(indication)を保持する誤差ストレージ109である。近似化機能ユニット106が結果164(アーキテクチャレジスタ108に書き込まれる)を生成するたびに、近似化機能ユニット106は、近似計算により累積した、結果164に関連付けられた誤差168の量の指標をさらに生成する。誤差168は宛先レジスタ108に関連付けられた誤差ストレージ109に書き込まれる。さらに、レジスタ108がオペランドを近似化機能ユニット106に提供するたびに、関連付けられた誤差ストレージ109は、オペランドに関連付けられた誤差162を近似化機能ユニット106に提供する。これにより、近似化機能ユニット106は、近似計算を実行するとき、計算の入力オペランド166の誤差と、近似化機能ユニット106によって導入された誤差との両方を累積することが可能になる。
スナップショットストレージ134は、プロセッサ100の状態のスナップショットを保持する。プロセッサ100は、近似計算を実行することを開始する前に、その状態をスナップショットストレージ134に書き込み、したがって、近似計算の結果の累積された誤差が誤差限界を超える場合、プロセッサ100は、一実施形態により以下により詳細に説明するように、その状態をスナップショット134から復元し、近似なしで計算を再実行することができる。一実施形態において、スナップショットストレージ134は、プロセッサ100のプライベートメモリを備える。好ましくは、スナップショット134は、近似計算を実行する命令のセット内の第1の命令のアドレスを含む。マイクロコード136が命令のセットの再実行を引き起こし、ただし近似のない一実施形態(例えば、図10)において、マイクロコード136は、スナップショット134に保持された第1の命令のアドレスへの分岐を引き起こす。
データキャッシュ138は、システムメモリロケーションからデータをキャッシュする。一実施形態において、データキャッシュ138は、第1のレベルのデータキャッシュと、命令キャッシュ102及び第1のレベルのキャッシュを支援する第2のレベルのキャッシュとを含むキャッシュメモリの階層である。一実施形態において、近似計算を採用するプログラムは、プロセッサ100によって提供された誤差限界の特徴を超えた後、回復を享受することになっている場合は、そのデータがデータキャッシュ138をオーバーフローしないことを確実にしなければならない。
一実施形態において、近似制御レジスタ132は、近似化機能ユニット106に提供される、プロセッサ100の近似ポリシー176を指定する情報を保持する。好ましくは、近似制御レジスタ132は、近似フラグと、近似量と、誤差限界(又は誤差閾値)とを含む。近似フラグは、近似化機能ユニット106によって実行された計算が最高精度の計算なのか又は近似計算なのか、すなわち、最高精度モードであるのか又は近似計算モード(又は近似化モード)であるのかを示す。近似量は、近似化機能ユニット106に、それらの近似計算を実行するのに採用することができる最高度より低い程度の精度を知らせる。誤差限界は、近似計算の結果164において容認され得る累積された誤差168の量を指定し、それを超えると、誤差限界を超えたことをプロセッサ100が信号で伝え、好ましくは、したがって、計算を近似なしで再度実行することができる。一実施形態において、近似化機能ユニット106は、近似制御レジスタ132に記憶された近似ポリシーにより計算を実行する。代替実施形態において、各命令は、例えばプレフィックスなどにおいて、近似ポリシーを近似化機能ユニット106に対して指定する。一実施形態において、近似制御レジスタ132は、プロセッサ100の命令セットアーキテクチャの命令によって書き込み可能である。
近似化機能ユニット106は、通常計算(すなわち、命令セットアーキテクチャによって指定された最高度の精度で)又は近似計算(すなわち、命令セットアーキテクチャによって指定された、最高度より低い精度で)を選択的に実行することができる。近似化機能ユニット106の各々は、命令の処理に関連付けられた機能を実行するハードウェア又はハードウェアとプロセッサ100内のマイクロコードとの組合せである。より具体的には、ハードウェア又はハードウェアとマイクロコードとの組合せは、計算を実行して、結果を生成する。機能ユニットの例には、限定はされないが、整数ユニットなどの実行ユニット、単一問題多重データ(single issue multiple data;SIMD)ユニット、マルチメディアユニット、及び浮動小数点乗算器、浮動小数点除算器及び浮動小数点加算器などの浮動小数点ユニットが含まれる。有利には、近似化機能ユニット106は、通常計算を実行するときよりも近似計算を実行するときのほうが電力の消費が少ない。近似化機能ユニット106の実施形態は、図2に関してより詳細に説明される。
次に図2を参照すると、図1の近似化機能ユニット106の3つの実施形態を例示する構成図が示される。3つの実施形態は、近似化浮動小数点乗算器106Aと、近似化超越関数計算ユニット106Bと、近似化除算器106Cとである。
近似化浮動小数点乗算器106Aは、入力オペランド166をレジスタ108から受け取り、図1の結果164を生成する。近似化浮動小数点乗算器106Aは、入力オペランド166の最上位ビットへの乗算を実行するゲート202と、入力オペランド166の最下位ビットへの乗算を実行するゲート204とを含む。近似化浮動小数点乗算器106Aは、近似ポリシー176に基づいて最下位ビット乗算ゲート204への電力の選択的提供を制御する電力制御ロジック206をさらに含む。例えば、近似モードが最高精度である場合、電力制御206により、最下位ビット乗算ゲート204のトランジスタに電力が提供されるが、近似モードが最高精度より低い場合、電力制御206により、最下位ビット乗算ゲート204のトランジスタに電力が提供されない。一実施形態において、最下位ビット乗算ゲート204は、電力制御206が近似ポリシー176に示された近似量に基づいて最下位ビットのより小さい又はより少ないほうの乗算に関連付けられたゲートをパワーオフするようにグループ化される。好ましくは、近似化浮動小数点乗算器106Aは、最下位ビット乗算ゲート204の中間結果が最上位ビット乗算ゲート202(例えば、キャリー)に提供されるように構成され、最下位ビット乗算ゲート204が近似計算モードでパワーオフされるとき、デフォルト値(例えば、ゼロ)が中間結果として最上位ビット乗算ゲート202に提供される。
一般的に言えば、近似化乗算器106Aは、2つのファクタ166の各々のNビットを乗算することができ、その場合、Nビットは命令セットアーキテクチャによって指定された最高精度である。しかし、近似化乗算器106Aは、2つのファクタ166の各々のNビットより少ない乗算をして、最高精度より低い精度の結果164を生成することもできる。好ましくは、乗算器は、乗算を実行するとき、ファクタ166の最下位ビットのMビットを除外し、その場合、MはNより小さい。例えば、ファクタ166の仮数が各々53ビットとすると、ファクタ166の53ビットのうち下部のNビットの乗算に通常使用されるであろう近似化乗算器のゲート204のトランジスタは、ファクタ166のうち下部のMビットが近似乗算に含まれないようにオフにされ、その場合、ビット数のMは近似ポリシーにおいて、例えば、近似制御レジスタ132において指定される。このようにして、近似化乗算器106Aは、除外ビットを乗算するのに通常使用されるであろうトランジスタをオフにすることができるので、最高精度モードよりも近似化モードにおいてより少ない電力を潜在的に使用する。好ましくは、除外されるビットの数Mは、電力ゲーティングロジック206の複雑性を低減するために、限定された数のMの値だけが近似ポリシーによって指定され得るように量子化される。
近似化超越関数ユニット106Bは、入力オペランド166をレジスタ108から受け取り、図1の結果164を生成する。近似化超越関数計算ユニット106Bは、多項式に基づいて入力オペランド166に対して超越関数を実行して結果164を生成する超越計算ロジック214を含む。多項式は、近似モードなどの計算ポリシー176からの選択制御入力に基づいて高次多項式212A又は低次多項式212Bのいずれかを選択する多重化216から選択される。すなわち、多重化216は、近似化モードが最高精度であるとき、高次多項式212Aを選択し、近似化モードが最高精度より低いとき、低次多項式212Bを選択する。一般的に言えば、近似化超越関数計算ユニット106Bは、次数Nの多項式を使用して、最高精度で超越関数を実行し、次数Mの多項式を使用して、その場合、MがN未満であるが、最高精度未満で超越関数を実行し、その場合、Mは近似ポリシーによって指定される。有利には、近似化モードであるとき、より低い次数の多項式を採用して超越関数計算を実行することによって、近似化超越関数計算ユニット106Bは、最高精度モードで動作するときよりも少ない電力を消費し優れた性能を出すことができる。これは、より低い次数の多項式を採用すると、より高い次数の多項式よりも乗算と加算が少なくて済むからである。
近似化除算器106Cは、入力オペランド166をレジスタ108から受け取り、図1の結果164を生成する。近似化除算器106Cは、除算ロジック222と反復制御ロジック224とを含む。除算ロジック222は、第1の反復の間、除算計算を入力オペランド166に対して実行して、中間結果164と中間結果164の精度の指標226とを生成する。中間結果164は、入力として除算ロジック222にフィードバックされ、精度指標226が反復制御ロジック224に提供される。その後の反復で、除算ロジック222は、現在の反復の間、除算計算を入力オペランド166と前の反復の中間結果164とに対して実行して、別の中間結果164と中間結果164の精度の指標226とを生成し、中間結果164は入力として除算ロジック222にフィードバックされ、精度指標226が反復制御ロジック224に提供される。反復制御224は、精度226を監視し、精度226が近似ポリシー176に示される許容レベルに達した時点で反復を停止する。有利には、近似ポリシーが近似モードを示すとき、最高精度より低い精度と引き換えに、より少ない反復を実行することにより、電力消費の低減が近似化除算器106Cによって達成され得る。
一実施形態において、近似化機能ユニット106の各々は、入力誤差162及び近似ポリシーの近似化量に基づいて、近似化機能ユニット106によって生成された結果164に関連付けられた誤差168の量を出力するルックアップテーブルを含む。好ましくは、ルックアップテーブルによって出力される誤差168の量は、それ自体、結果164に関連付けられた誤差の最大量を指定する近似である。
一実施形態において、近似化機能ユニット106は、近似制御レジスタ132によって提供された近似ポリシーではなく、又は近似ポリシーに加えて、近似ポリシーの全部又は一部分を決定するために、近似命令399を変換するとき、命令トランスレータ104によって生成されたマイクロ命令を復号する命令デコーダを含む。別の実施形態において、例えば、命令トランスレータ104が適当な近似化機能ユニット106に転送するために命令174を単に復号し、近似化機能ユニット106が近似ポリシーを決定するために命令174を復号する一実施形態において、命令デコーダは、近似命令399自体を復号する。
次に図3を参照すると、近似命令399を例示する構成図が示される。より具体的には、近似命令は、近似プレフィックスを有する計算命令300と、近似計算命令310と、近似開始プレフィックス(start approximation prefix)を有する計算命令320と、近似開始命令(start approximation instruction)330と、近似停止プレフィックス(stop approximation prefix)を有する計算命令340と、近似停止命令(stop approximation instruction)350と、誤差クリアプレフィックス(clear error prefix)を有する計算命令360と、誤差クリア命令370と、ロードレジスタ命令380とを含む。
近似プレフィックスを有する計算命令300は、プロセッサ100の命令セットに一般に見出されるものなどのオペコード及び他のフィールド304を含む。オペコード304は、例えば、加算、減算、乗算、除算、融合積和演算、平方根、逆数、逆数平方根、及び超越関数など、近似化機能ユニット106が計算を実行することができる最高精度すなわち最高精度モードに従うより低い精度を有する結果を生成することに影響を受けやすい、近似化機能ユニット106によって実行され得る様々な計算のいずれかを指定することができる。近似プレフィックスを有する計算命令300は、近似プレフィックス302をさらに含む。一実施形態において、近似プレフィックス302は所定の値を含み、命令バイトのストリーム内の並びにオペコード及び他のフィールド304に先行するその存在が、プロセッサ100に、指定された計算を近似化において(in an approximating manner)実行するように命令する。一実施形態において、所定の値は、x86ISAなどのISAにおいてプレフィックス値としてすでに使用されてはいない値である。一実施形態において、近似プレフィックス302の一部分は、オペコード及び他のフィールド304によって指定される計算において採用されるべき、近似量及び/又は誤差限界などの、近似ポリシー又は少なくともその一部分を指定する。別の実施形態において、近似プレフィックス302は、オペコード及び他のフィールド304によって指定される計算が近似的に実行されるべきであることを単に示し、近似ポリシーは、プロセッサ100によって、又はプロセッサ100に対して事前に伝達された近似ポリシー全体からとられ、近似ポリシーは、例えば、近似制御レジスタ132などのレジスタに記憶され得る。命令300の近似ポリシーがプレフィックス302と近似ポリシー全体との組合せから導出される他の実施形態が企図されている。
代替実施形態において、近似計算命令310は、近似計算オペコード及び他のフィールド312を含む。近似計算オペコード値は、プロセッサ100の命令セット内の他のオペコード値とは区別可能である。すなわち、近似計算オペコード値は、通常(例えば、近似プレフィックス302などのプレフィックスがない場合)プロセッサ100に最高精度で計算を実行するように命令する他のオペコード値とは区別可能である。好ましくは、命令セットは、各タイプの計算に対して1つ、例えば、加算についてその独自の区別可能オペコード値を用いて1つ、減算についてその独自の区別可能オペコード値を用いて1つなど、複数の近似計算命令310を含む。
近似開始プレフィックスを有する計算命令320は、プロセッサ100の命令セットに一般に見出されるものなどのオペコード及び他のフィールド324を含む。オペコード324は、様々な計算のいずれかを指定してもよく、又は非計算命令であってもよい。近似開始プレフィックスを有する計算命令320は、近似開始プレフィックス322をさらに含む。一実施形態において、近似開始プレフィックス322は所定の値を含み、命令バイトのストリーム内の並びにオペコード及び他のフィールド324に先行するその存在が、プロセッサ100に、その後の計算(もし存在する場合、命令320内に指定された計算を含む)を、近似化において計算を実行することを停止するように命令されるまで(例えば、以下に説明する命令340及び350により)、近似化において実行するように命令する。一実施形態において、所定の値は、プレフィックス値としてx86ISAなどのISAにすでに使用されてはいない値であり、本明細書に説明する他のプレフィックス(例えば、近似プレフィックス302、近似停止プレフィックス342及び誤差クリアプレフィックス362)とは区別可能である。近似開始プレフィックス322の実施形態は、近似開始プレフィックス322の一部分が近似ポリシーを指定してもよく、或いはその後の計算を近似ポリシー全体を使用して近似的に実行すべきであることを単に示してもよく、或いはこれらの組み合わせであってもよい点において、近似プレフィックス302と同様である。
代替実施形態において、近似開始命令330は、近似開始オペコード332を含む。近似開始命令330は、プロセッサ100に、近似化において計算を実行することを停止するように命令されるまで近似化においてその後の計算を実行するように命令する。近似開始オペコード332の実施形態は、近似ポリシーの指定に関して近似プレフィックス302と同様である。近似開始オペコード332の値は、プロセッサ100の命令セット内の他のオペコード値とは区別可能である。
近似停止プレフィックスを有する計算命令340は、プロセッサ100の命令セットに一般に見出されるものなどのオペコード及び他のフィールド344を含む。オペコード344は、様々な計算のいずれかを指定してもよく、又は非計算命令であってもよい。近似停止プレフィックスを有する計算命令340は、近似停止プレフィックス342をさらに含む。一実施形態において、近似停止プレフィックス342は所定の値を含み、命令バイトのストリーム内の並びにオペコード及び他のフィールド344に先行するその存在が、プロセッサ100に、(例えば、命令300、310、320又は330により、近似化において計算を実行するように命令されるまで、)近似化において計算(もし存在する場合、命令340で指定された計算を含む)を実行することを停止するように命令する。一実施形態において、所定の値は、プレフィックス値としてx86ISAなどのISAにすでに使用されてはいない値であり、本明細書に説明する他のプレフィックスとは区別可能である。
代替実施形態において、近似停止命令350は近似停止オペコード352を含む。近似停止命令350は、プロセッサ100に、(近似化において計算を実行するように命令されるまで、)近似化において計算を実行することを停止するように命令する。近似停止オペコード352の値は、プロセッサ100の命令セット内の他のオペコード値とは区別可能である。一実施形態において、プロセッサ100による例外の生成がさらに、プロセッサ100に、近似化において計算を実行することを停止するように命令し、すなわち、近似モードが最高精度に設定されるようにする。
誤差クリアプレフィックスを有する計算命令360は、プロセッサ100の命令セットに一般に見出されるものなどのオペコード及び他のフィールド364を含む。オペコード364は、様々な計算のいずれかを指定してもよい。誤差クリアプレフィックスを有する計算命令360は、プロセッサ100が計算の結果を書き込む宛先レジスタを指定するレジスタフィールド366をさらに含む。誤差クリアプレフィックスを有する計算命令360は誤差クリアプレフィックス362をさらに含む。一実施形態において、誤差クリアプレフィックス362は所定の値を含み、命令バイトのストリーム内の並びにオペコード及び他のフィールド364に先行するその存在が、プロセッサ100に、レジスタフィールド366によって指定されたレジスタ108に関連付けられた誤差109をクリアするように命令する。一実施形態において、所定の値は、プレフィックス値としてx86ISAなどISAにすでに使用されてはいない値であり、本明細書に説明する他のプレフィックスとは区別可能である。
代替実施形態において、誤差クリア命令370は、誤差クリアオペコード372とレジスタフィールド376とを含む。誤差クリア命令370は、プロセッサ100に、レジスタフィールド376によって指定されたレジスタ108に関連付けられた誤差109をクリアするように命令する。誤差クリアオペコード372の値は、プロセッサ100の命令セット内の他のオペコード値とは区別可能である。
ロードレジスタ及び誤差クリア命令380は、ロードレジスタオペコード382と、メモリアドレスオペランドフィールド384と、レジスタフィールド386とを含む。オペコード382は、プロセッサ100に、メモリアドレスオペランド384によって指定されたメモリロケーションからレジスタフィールド386に指定された宛先レジスタにデータをロードするように命令する。オペコード382はさらに、プロセッサ100に、レジスタフィールド386によって指定されたレジスタ108に関連付けられた誤差109をクリアするように命令する。
一実施形態において、誤差クリア命令370は、単一のレジスタ108ではなくすべてのレジスタ108の誤差109をクリアする。例えば、レジスタフィールド376の値は、すべてのレジスタ108をクリアするように示す所定の値であり得る。同様の実施形態は、誤差クリアプレフィックスを有する計算命令360とロードレジスタ及び誤差クリア命令380とに関して企図されている。
一実施形態において、命令トランスレータ104は、プロセッサ100が近似計算モードであるのか又は最高精度モードであるのかを示すフラグを維持する。例えば、命令トランスレータ104は、近似開始命令330又は近似開始プレフィックスを有する計算命令320に直面することに応答してフラグを設定することができ、近似停止命令350又は近似停止プレフィックスを有する計算命令340に直面することに応答してフラグをクリアすることができる。各マイクロ命令は、マイクロ命令によって指定された計算が、最高精度で又は近似において実行されるべきことを示すインジケータ(indicator)を含む。命令トランスレータ104は、アーキテクチャ命令166を1つ又は複数のマイクロ命令に変換するとき、モードフラグの現在の値に基づいてそれに応じてインジケータに追加する(populates)。或いは、300又は310などのアーキテクチャ近似計算命令の場合、命令トランスレータ104は、それぞれ、プレフィックス302又はオペコード312によりマイクロ命令のインジケータに追加する。さらに別の実施形態において、マイクロ命令のインジケータは、近似計算を指定するマイクロ命令オペコード(マイクロアーキテクチャ命令セット内で区別可能である)を含む。
次に図4を参照すると、一実施形態による、図1のプロセッサ100の動作を例示する流れ図が示される。流れはブロック402から開始する。
ブロック402では、プロセッサ100が、アーキテクチャ命令166を復号する。流れは判定ブロック404に進む。
判定ブロック404では、プロセッサ100は、命令166が近似開始命令であるのかどうか、例えば、図3の320又は330であるのかどうかを決定する。そうである場合、流れはブロック406に進み、その他の場合、流れは判定ブロック414に進む。
判定ブロック406では、プロセッサ100は、近似停止命令、例えば、図3の340又は350に直面するまで、近似ポリシー(例えば、近似開始命令において指定されたもの、近似制御レジスタ132において指定された近似ポリシー、又はこれらの組合せ)により、その後の計算を実行する。流れはブロック406で終了する。
判定ブロック414では、プロセッサ100は、命令166が近似停止命令であるかどうか、例えば、図3の340又は350であるかどうかを決定する。そうである場合は、流れはブロック416に進む。その他の場合は、流れは判定ブロック424に進む。
ブロック416では、プロセッサ100は、近似において計算を実行することを停止し、代わりに、それらを最高精度で実行する(プロセッサ100が近似開始命令、例えば、図3の320又は330又は近似計算命令300又は310に直面するまで)。流れはブロック416で終了する。
判定ブロック424では、プロセッサ100は、命令166が誤差クリア命令であるかどうか、例えば、図3の360又は370又は380であるかどうかを決定する。そうである場合、流れはブロック426に進む。その他の場合、流れは判定ブロック434に進む。
ブロック426では、プロセッサ100は、レジスタフィールド366/376/386で指定されたレジスタ108に関連付けられた誤差109をクリアする。流れはブロック426で終了する。
判定ブロック434では、プロセッサ100は、命令166が計算命令166であるかどうかを決定する。そうである場合、流れはブロック452に進む。その他の場合、流れはブロック446に進む。
ブロック446では、プロセッサ100は、他の命令166、すなわち、計算命令399以外の命令セットアーキテクチャの命令を実行する。流れはブロック446で終了する。
ブロック452では、関連する近似化機能ユニット106が計算命令166を受け取り、それを復号する。流れは判定ブロック454に進む。
判定ブロック454では、近似化機能ユニット106が、近似ポリシーが近似化であるのか又は最高精度であるのかを決定する。近似化である場合、流れはブロック456に進む。最高精度である場合、流れはブロック458に進む。
ブロック456では、近似化機能ユニット106が、近似化において、例えば、図2に関して上記のようになど本明細書で説明するように、計算を実行する。流れはブロック456で終了する。
ブロック458では、近似化機能ユニット106が非近似化において(in a non-approximating manner)、すなわち、最高精度で、計算を実行する。流れはブロック458で終了する。
次に図5を参照すると、コンピュータシステム内の図1のプロセッサ100の動作を例示する流れ図が示される。流れはブロック502から開始する。
ブロック502では、プロセッサ100上で実行されるプログラム(例えば、オペレーティングシステム又は他のプログラム)が計算を実行するためにプロセッサ100によって使用される近似ポリシーを決定する。好ましくは、近似ポリシーは、計算自体における容認可能な誤差限界及び近似量すなわち、各近似化機能ユニット106が各々の近似された計算に採用すべき近似の量を指定する。プログラムは、現在のシステム構成に少なくとも部分的に基づいて、近似ポリシーを決定する。例えば、プログラムは、コンピュータシステムがバッテリ電力で、又は壁面AC電力などの実際上無制限の電源で動作しているかどうかを検知することができる。さらに、プログラムは、ディスプレイサイズやスピーカ品質など、コンピュータシステムのハードウェア構成を検知することができる。プログラムは、オーディオ/ビデオ関連の計算などの特定の計算を最高精度ではなく近似的に実行することの望ましさ及び/又は受容性を決定する際に、上記のようなファクタを考慮することができる。流れはブロック504に進む。
ブロック504では、プログラムは、近似ポリシーをプロセッサ100に提供する。一実施形態において、プログラムは、近似ポリシーを近似制御レジスタ132に書き込む。一実施形態において、プログラムは、x86WRMSR命令を実行して、プロセッサ100に新たな近似ポリシーを提供する。流れはブロック504で終了する。
好ましくは、システム構成が変更になるとき、例えば、システムが壁面コンセントにプラグが差し込まれ又は壁面コンセントからプラグが抜かれ、或いは異なるサイズの外部モニタにプラグが差し込まれるとき、プログラムは構成の変更を検知し、ブロック502において近似ポリシーを変更し、ブロック504において新たな近似ポリシーをプロセッサ100に伝達する。
次に図6を参照すると、3つの異なるコンピューティングシステムを例示する構成図が示される。システムの各々は、図1の近似計算対応プロセッサ100と、ディスプレイ606と、データを含むバッファ604とを含み、データにより、プロセッサ100が、例えば、図3の近似計算命令399を使用して計算を実行して、ディスプレイ606上に表示されるべきピクセルをレンダリングする。
第1のシステムはデスクトップコンピュータ602Aであり、デスクトップコンピュータ602Aは、大型ディスプレイ606A(例えば、24インチ以上)を含み、本質的に無制限の電源、例えば、壁面コンセントから電力を受ける。第2のシステムはラップトップコンピュータ602Bであり、ラップトップコンピュータ602Bは、中型サイズのディスプレイ606B(例えば、15インチ)を含み、ユーザの選択に依存して壁面コンセントからかバッテリからのいずれかで電力を受ける。第3のシステムはスマートフォンや卓上コンピュータなどのハンドヘルドコンピュータ602Cであり、ハンドヘルドコンピュータ602Cは、相対的に小型のディスプレイ(例えば、4.8インチ)606Cを含み、その電力を主にバッテリから受ける。図示する例では、ディスプレイはすべて、容認され/受容され得る近似の量が主にディスプレイサイズに基づくように、近似的に同じ解像度を有すると仮定されるが、近似計算の量は、ディスプレイの解像度のばらつきにより変動することもあることが理解されるべきである。集合的にシステム602と呼ばれる3つのシステムは、近似計算対応プロセッサ100を含むことができるシステムを代表することが意図されており、本明細書に説明する近似計算の実施形態の様々な用途を例示する比較のために異なる特徴と共に提供される。しかし、他の実施形態が企図されており、近似計算対応プロセッサ100の用途は、図示する実施形態に限定されない。
第1のシステム602Aは、ピクセルレンダリングの近似によって引き起こされる視覚歪みが大型ディスプレイ602A上では容易に明らかである可能性があり、電源が近似計算に起因する電力の節減の必要をより必要なくする可能性があるので、近似を容認せず、高精度を要求する傾向がある。
第2のシステム602Bは、特にバッテリ電力で動作するとき、適量の近似によって引き起こされる、より大型の同様の解像度を有するディスプレイ上より少ないが明らかであり得る視覚歪みが、バッテリ寿命の利点との許容可能なトレードオフであり得るので、適量の精度を要求し、適量の近似を容認する傾向がある。他方、システム602Bが壁面の電源にプラグが差し込まれるとき、好ましい近似ポリシーは、第1のシステム602Aの近似ポリシーと同様であり得る。
第3のシステム602Cは、名ばかりの(nominal)ズームレベルにおける小型のディスプレイ606C上では近似による視覚歪みが明らかでない又は大いに明らかでない可能性があるので、最も低い精度を要求する傾向があり、バッテリ電力を節約する必要が相対的に大きい。
次に図7を参照すると、図6のシステム602の動作を例示する流れ図が示される。流れはブロック702から開始する。
ブロック702では、システム602がパワーオン又はリセットされるときなどに、プログラムがシステム602におけるディスプレイ606のタイプを検知する。或いは、プログラムは、例えば、外部モニタが、ラップトップ602Bにプラグが差し込まれ、或いはラップトップ602Bからプラグが抜かれるとき、ディスプレイ606の変化を検知することができる。さらに、プログラムは、壁面コンセントにプラグを差し込む又は壁面コンセントからプラグを抜くなどの電源の変化を検知することができる。流れはブロック502に進む。
ブロック502では、図5に関して上に説明したように、プログラムは、システム構成に基づいて近似ポリシーを決定する。流れはブロック504に進む。
ブロック504では、プログラムは、図5に関して上に説明したように、プロセッサ100に近似ポリシーを提供する。流れはブロック708に進む。
ブロック708では、プロセッサ100は、例えば、図4及び図10〜12に関して本明細書に説明するように、受け取った近似ポリシーに基づいて計算を実行する。流れはブロック708で終了する。
或いは、プロセッサ100上で実行されるソフトウェア(例えば、グラフィックソフトウェア)は、異なる近似ポリシーに関連付けられた(例えば、図6の異なるシステム構成に関連付けられた異なる近似ポリシーの各々の)コードの異なるルーチン(計算命令399を含む)と、現在のシステム構成に基づく適当なルーチンへのソフトウェア分岐とを含む。
次に図8を参照すると、本明細書に説明するように、近似計算認識プロセッサ100上で実行されるソフトウェアの開発のためのプロセスを例示する流れ図が示される。流れはブロック802から開始する。
ブロック802では、プログラマが、C言語などの従来のプログラミング言語を用いて、グラフィックソフトウェアなどのプログラムを開発し、近似ディレクティブを用いて近似認識コンパイラを呼び出す。近似認識コンパイラは、対象プロセッサ100の近似計算能力、より具体的には、プロセッサ100によってサポートされる近似命令399のセットを知っている。近似ディレクティブは、コマンドラインのオプションであってもよく、又は、コンパイラによって生成されるオブジェクトコードが近似計算を実行する近似命令399を含むべきであることをコンパイラに対して伝達する他の方法でもよい。好ましくは、近似認識コンパイラは、プログラミング言語によって指定された計算が近似計算を容認するところのルーチンだけコンパイルするように近似ディレクティブを用いて呼び出され、一方、近似計算を容認しない他のルーチンは、近似ディレクティブなしでコンパイルされる。それぞれの方法によって生成されたオブジェクトファイルは、実行可能プログラムに共にリンクされる。近似容認ルーチンは、相対的に専用ルーチンになる傾向があり得る。例えば、ピクセルレンダリングルーチンは、近似計算の影響を受けやすい浮動小数点データにおける計算を含むことがあり、それに対して近似認識コンパイラが近似命令399を生成するが、一方、ループ制御変数は、整数データでよく、近似認識コンパイラは、例えば、ループ制御変数を更新する計算を実行するために近似命令399を生成しない。流れはブロック804に進む。
804では、近似認識コンパイラは、プログラムをコンパイルし、プロセッサ100にオブジェクトコードとして近似計算を実行するように命令する近似命令399を含む機械語命令を生成する。一実施形態において、コンパイラによって生成される機械コードは、近似ディレクティブの使用なしでその他の方法で生成されるであろう機械コードと同様であるが、命令のうちいくつかが、図3の近似プレフィックス302、近似開始プレフィックス322、近似停止プレフィックス342、又は誤差クリアプレフィックス362などの近似関連プレフィックスによって先行される。一実施形態において、近似認識コンパイラは、近似ディレクティブがない場合にその他の方法で生成するであろう通常計算命令の代わりに近似計算命令310を生成する。一実施形態において、近似認識コンパイラは、開始/停止近似命令330/350及び/又は開始/停止近似プレフィックス322/342により区切られた通常命令シーケンスを生成する。一実施形態において、近似認識コンパイラは、上に説明したように、その各々が異なる近似ポリシーを採用した複数のコードルーチンを生成し、コンパイラは、プログラムがプログラム自体で決定することができ、或いはプログラムがオペレーティングシステムから取得することができる現在のシステム構成に基づいて、適当なサブルーチンをコールするコードを生成する。流れはブロック804で終了する。
次に図9を参照すると、本明細書に説明するように、近似計算認識プロセッサ100上で実行されるソフトウェアの開発のための代替プロセスを例示する流れ図が示される。流れはブロック902から開始する。
ブロック902では、プログラマがブロック802における説明と同様のプログラムを開発し、近似認識コンパイラを呼び出す。しかし、プログラミング言語及びコンパイラは、近似ディレクティブ及び/又は近似容認データタイプをサポートする。例えば、C言語の方言(dialect)が、上記のようなディレクティブ及び/又はデータタイプをサポートすることができる。近似ディレクティブには、プログラマが選択的プログラム変数を近似容認データとしてマークするためにソースコードに含めることができるコンパイラディレクティブ(例えば、C言語の#include又は#defineディレクティブと同様の)を含むことができる。同様に、プログラマは、近似容認データタイプ変数として宣言されたプログラム変数をソースコードに含めることができ、それに対して、コンパイラは近似計算を変数に対して実行させる命令399を生成することを知っている。流れはブロック904に進む。
ブロック904では、近似認識コンパイラは、プログラムをコンパイルして、ブロック804に関して上に説明したやり方と同様の、ただしコンパイルされるソースコードに含まれる近似ディレクティブ及び/又は近似容認データタイプに応答した、オブジェクトコードを生成する。流れはブロック904で終了する。
次に図10を参照すると、近似計算を実行するプログラムを実行する図1のプロセッサ100の動作を例示する流れ図が示される。流れはブロック1002から開始する。
ブロック1002では、プログラムは、上に説明したやり方と同様に、近似ポリシーをプロセッサ100に提供する。或いは、プログラム自体が、近似ポリシーを提供する(及び、終了と同時に現在の近似ポリシーを復元する)。さらに、以下に説明するように、誤差閾値を超えるという事象において実行され得る、近似計算を実行しない代替コードパスが指定される。流れはブロック1004に進む。
ブロック1004では、プロセッサ100は、その状態を図1のスナップショットストレージ134に書き込むことによって、その現在の状態のスナップショットを撮る。一実施形態において、プロセッサ100は、プログラムによって実行される命令に直面することに応答してスナップショットを撮る。一実施形態において、命令は、x86WRMSR命令を含む。一実施形態において、スナップショットを撮ることは、キャッシュラインのクリーンコピーがキャッシュ138に存在するように、プログラムの近似計算のセットによってタッチされるであろうメモリのダーティキャッシュラインに書き戻すことと、次いで、上記キャッシュラインを、近似計算の対象であり得ることを示すように特別としてマークすることとを含む。キャッシュラインは、特別としてマークされるので、近似計算の結果によって修正されるとき、少なくとも、プログラムが許容可能な誤差限界を超えることなく完了できることが検証されるまでは、メモリに書き戻されない。したがって、その後、プロセッサ100が誤差限界を超えたと決定する場合(例えば、ブロック1012において)、特別なキャッシュラインは無効にされ、非特別としてマークされ、その後の計算の非近似セットについて、キャッシュラインの近似前の計算状態がメモリ内で利用可能となる(例えば、ブロック1014において)。そのような実施形態では、プログラマは、特別なキャッシュラインがキャッシュ138からあふれ出てはならないことを認識しなければならない。そうでないと、プロセッサ100は、そのような状態を誤差限界を超えるとして取り扱う。好ましくは、マルチコアプロセッサの実施形態では、キャッシュ138は近似計算のセットを実行するコアに対してローカルでなければならない。流れはブロック1006に進む。
ブロック1006では、プロセッサ100、特に近似化機能ユニット106は、近似ポリシーに基づいて、プログラム命令によって指定された近似計算を実行して、近似結果164を生成する。近似化機能ユニット106は、上に説明したように、入力オペランドの誤差値162と近似計算によって導入される誤差とに基づいて、結果164の誤差168も近似化する。流れはブロック1008に進む。
ブロック1008では、近似化機能ユニット106は、累積誤差168を、近似結果164を受け取る宛先レジスタ108に関連付けられた誤差ストレージ109に書き込む。流れは判定ブロック1012に進む。
判定ブロック1012では、プロセッサ100は、ブロック1008において生成された誤差168が近似ポリシーの誤差限界を超えるかどうかを決定する。超える場合、流れはブロック1014に進む。その他の場合、流れはブロック1006に戻って、プログラムの別の近似計算を実行する。
ブロック1014では、プロセッサ100は、ブロック1004においてスナップショットを撮った後、プロセッサ100の状態をスナップショットストレージ134に記憶されたスナップショットに復元し、誤差限界を超えた、近似において実行された計算を伴ったプログラムを、近似なしで、又は少なくともその一部分を再実行する。ブロック1014の動作の実施形態は、図11及び12に関して以下に説明される。流れはブロック1014で終了する。
次に図11を参照すると、一実施形態による、図10のブロック1014の動作をより詳細に例示する流れ図が示される。流れはブロック1102から開始する。
ブロック1102では、制御が、判定ブロック1012において誤差限界を超えたことを検知したことに応答して生成されるマイクロ例外(すなわち、非アーキテクチャ例外)を介して、プロセッサ100のマイクロコード136に移される。マイクロコード136は、図10に関して上に説明したように、プロセッサ100の状態をスナップショットに復元する。さらに、マイクロコード136は、アーキテクチャ例外を生成する。流れはブロック1104に進む。
ブロック1104では、アーキテクチャ例外ハンドラが、図10のブロック1002において指定された代替コードパスに制御を移し、したがって、近似計算のセットが最高精度で実行される。一実施形態において、例外ハンドラは、近似を無効にするように近似ポリシーを設定し(すなわち、近似ポリシーを最高精度に設定し)、次いで、事前に近似が有効にされていたときに実行された同じコードにジャンプし、これが今度は、近似が無効にされて実行されることになる。流れはブロック1104で終了する。
次に図12を参照すると、代替実施形態による、図10のブロック1014の動作をより詳細に例示する流れ図が示される。流れはブロック1202から開始する。
ブロック1202では、制御が、誤差限界を超えたことを検知したことに応答して生成されるマイクロ例外を介して、プロセッサ100のマイクロコード136に移され、マイクロコード136は、プロセッサ100の状態をスナップショットに復元する。流れはブロック1204に進む。
ブロック1204では、マイクロコード136は、近似ポリシーを最高精度に設定する(例えば、近似制御レジスタ132に書き込む)。マイクロコード136はさらに、すべてのレジスタ108に関連付けられた誤差値109をクリアする。マイクロコード136はさらに、例えば、ブロック1004においてスナップショットを撮った後の時点からの、プログラムの再実行を引き起こす。一実施形態において、マイクロコード136は、スナップショットストレージ134に記憶された命令アドレスからプログラムを再実行する。流れはブロック1204で終了する。
近似計算がオーディオ及びビデオの目的のために実行される実施形態を説明してきたが、近似計算がコンピュータゲーム物理計算に使用されるセンサ計算などの他の目的のために実行される他の実施形態が企図されている。例えば、上記計算に使用されるアナログ/デジタル変換値は、16ビットまで正確であるだけでもよく、したがって、例えば、53ビットの正確さを使用するゲーム物理分析は不必要である。
本発明の様々な実施形態を本明細書に説明してきたが、それらは限定によってではなく、例によって提示されていることを理解されたい。本発明の範囲を逸脱することなく、形態及び詳細の様々な変更をそれらにおいて加えることができることが、当該コンピュータ業界の当業者には明らかであろう。例えば、ソフトウェアは、例えば、本明細書に説明する装置及び方法の機能、製作、モデリング、シミュレーション、説明、及び/又は試験を有効にすることができる。これは、汎用プログラミング言語(例えば、C、C++)、Verilog HDL及びVHDLなどを含むハードウェア記述言語(HDL)、又は他の利用可能なプログラムの使用により達成することができる。そのようなソフトウェアは、磁気テープ、半導体、磁気ディスク、若しくは光ディスク(例えば、CD−ROM、DVD−ROMなど)、ネットワーク、ワイヤライン、ワイヤレス、又は他の通信媒体などの、任意の周知のコンピュータ使用可能媒体に配置することができる。本明細書に説明する装置及び方法の実施形態は、プロセッサコアなどの半導体知的財産コア(例えば、HDLにおいて具現化された又は指定された)に含め、集積回路の生産においてハードウェアに変換することができる。さらに、本明細書に説明する装置及び方法は、ハードウェアとソフトウェアとの組合せとして具現化することができる。したがって、本発明は、本明細書に説明する例示的な実施形態のいずれかによって限定されるべきではなく、以下の特許請求の範囲及びその均等物によってのみ定義されるべきである。具体的には、本発明は、汎用コンピュータにおいて使用され得るプロセッサデバイス内で実現することができる。最後に、当業者は、開示された概念及び具体的な実施形態を、添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなく本発明の同じ目的を実行する他の構造を設計し又は修正するための基礎として、容易に使用することができることを理解するべきである。

Claims (25)

  1. プロセッサであって:
    後続の計算を近似化で実行するよう当該プロセッサに指示する命令を復号するように構成されるデコーダと;
    オペランドを保持するように構成されるアーキテクチャレジスタと;
    各アーキテクチャレジスタに関連付けられる誤差ストレージであって、前記アーキテクチャレジスタに格納される結果の誤差の量を示すように構成される、誤差ストレージと;
    前記アーキテクチャレジスタから1つ以上のオペランドと、前記関連付けられる誤差ストレージから誤差の量を受け取り、前記命令に応答して前記近似化で前記1つ以上のオペランドに対して後続の計算を実行し、近似計算に先行して前記1つ以上のオペランドに関連付けられる誤差の量を、前記近似計算を実行することによって導入される誤差の量とともに累積し、前記結果及び前記累積された誤差の量を、宛先のアーキテクチャレジスタ及びその関連付けられる誤差ストレージに格納するように構成される、機能ユニットと;
    を具備する、プロセッサ。
  2. 前記命令は、前記後続の計算を前記近似化で実行するよう当該プロセッサに指示するプレフィックスを備える、
    請求項1に記載のプロセッサ。
  3. 前記プレフィックスは、当該プロセッサが前記後続の計算を実行する最高精度よりも低い精度を指定する、
    請求項2に記載のプロセッサ。
  4. 前記デコーダは更に、第2の後続の計算を最高精度で実行するよう当該プロセッサに指示する第2の命令を復号するよう構成され、
    前記機能ユニットは、前記第2の命令に応答して前記第2の後続の計算を前記最高精度で実行するように構成される、
    請求項1に記載のプロセッサ。
  5. 前記第2の命令は、前記第2の後続の計算を前記近似化で実行するよう当該プロセッサに指示するプレフィックスを備える、
    請求項4に記載のプロセッサ。
  6. 当該プロセッサについて近似ポリシーを指定する情報を保持するように構成される近似制御レジスタであって、前記近似ポリシーは、複数の命令実行にわたる最大許容累積誤差量の指定を含み、
    当該プロセッサは、前記誤差ストレージ内に格納される誤差の量が、前記指定された最大許容累積誤差量を超えるときに、例外を生成するように構成される、
    請求項1に記載のプロセッサ。
  7. 前記近似ポリシーは更に、前記機能ユニットが各々の近似された計算で採用すべき近似の量を指定し、前記機能ユニットは、前記後続の計算が前記近似の量と前記最大許容累積誤差量との双方によって制限されるように、前記近似の量に基づいてその近似を調整するように構成される、
    請求項6に記載のプロセッサ。
  8. 当該プロセッサは現在のシステム構成を決定し、該現在のシステム構成に基づいて近似ポリシーを設定するように構成される、
    請求項6に記載のプロセッサ。
  9. 前記現在のシステム構成は、モニタ解像度を含み、当該プロセッサは、低解像度のモニタでは、高解像度のモニタの場合よりも、ビデオ関連の計算において相対的により多くの誤差の量を容認するという近似ポリシーを設定するように構成される、
    請求項8に記載のプロセッサ。
  10. 前記現在のシステム構成は、スピーカ品質を含み、当該プロセッサは、比較的低品質のスピーカでは、比較的高品質のスピーカの場合よりも、オーディオ関連の計算において相対的により多くの誤差の量を容認するという近似ポリシーを設定するように構成される、
    請求項8に記載のプロセッサ。
  11. 当該プロセッサは、前記現在のシステム構成における変化を検出し、前記近似ポリシーを修正するように構成される、
    請求項8に記載のプロセッサ。
  12. 前記機能ユニットは、入力オペランドに対して超越関数を実行して、多項式に基づいて結果を生成するように構成され、前記機能ユニットは、最大精度の計算を実行するように指示された場合、第1の多項式を選択し、近似計算を実行するように指示された場合、相対的に低い次数の第2の多項式を選択するように構成される、
    請求項1に記載のプロセッサ。
  13. 除算ロジック及び反復制御ロジックを有するように構成される除算器であり、
    前記除算ロジックは、入力オペランドに対して反復除算計算を実行して、複数の反復の各々の間に中間結果と該中間結果の精度の指標とを生成し、前記中間結果を当該除算ロジックへの入力として返すように構成され、
    前記反復制御ロジックは、精度が近似ポリシーで指定されたレベルに到達すると、前記の反復を終了するように構成される、
    請求項1に記載のプロセッサ。
  14. プロセッサによって実行される方法であって、当該方法は:
    前記プロセッサによって、後続の計算を近似化で実行するよう前記プロセッサに指示する命令を復号するステップと;
    オペランドを前記プロセッサのアーキテクチャレジスタに格納するステップと;
    各オペランドに関連付けられる誤差の量とともに、1つ以上のオペランドを前記プロセッサの機能ユニットに提供するステップであって、前記誤差の量は、各アーキテクチャレジスタに関連付けられる誤差ストレージに格納される、ステップと;
    前記命令の復号に応答して、前記機能ユニットによって、前記後続の計算を前記近似化で実行するステップと;
    近似計算に先行して前記1つ以上のオペランドに関連付けられる誤差の量を、前記近似計算を実行することによって導入される誤差の量とともに累積するステップと;
    結果及び前記累積された誤差の量を、宛先レジスタ及びその関連付けられる誤差ストレージに格納するステップと;
    を具備する、方法。
  15. 前記命令は、前記後続の計算を前記近似化で実行するよう前記プロセッサに指示するプレフィックスを備える、
    請求項14に記載の方法。
  16. 前記プレフィックスは、前記プロセッサが前記後続の計算を実行する最高精度よりも低い精度を指定する、
    請求項15に記載の方法。
  17. 前記プロセッサによって、第2の後続の計算を最高精度で実行するよう前記プロセッサに指示する第2の命令を復号するステップと、
    前記第2の命令の復号に応答して、前記プロセッサによって、前記第2の後続の計算を前記最高精度で実行するステップと、
    を更に備える、請求項14に記載の方法。
  18. 前記第2の命令は、前記第2の後続の計算を前記近似化で実行するよう前記プロセッサに指示するプレフィックスを備える、
    請求項17に記載の方法。
  19. 前記プロセッサについて近似ポリシーを指定する情報を近似制御レジスタに格納するステップであって、前記近似ポリシーは、複数の命令実行にわたる最大許容累積誤差量の指定を含む、ステップと、
    前記誤差ストレージ内に格納される前記誤差の量が、前記指定された最大許容累積誤差量を超えるときに例外を生成するステップと、
    を更に備える、請求項14に記載の方法。
  20. 現在のシステム構成を決定し、該現在のシステム構成に基づいて近似ポリシーを設定するステップ、
    を更に備える、請求項19に記載の方法。
  21. 前記現在のシステム構成は、モニタ解像度を含み、当該方法は、低解像度のモニタでは、高解像度のモニタの場合よりも、ビデオ関連の計算において相対的により多くの誤差の量を容認するという近似ポリシーを設定するステップを更に備える、
    請求項20に記載の方法。
  22. 前記現在のシステム構成は、スピーカ品質を含み、当該方法は、比較的低品質のスピーカでは、比較的高品質のスピーカの場合よりも、オーディオ関連の計算において相対的により多くの誤差の量を容認するという近似ポリシーを設定するステップを更に備える、
    請求項20に記載の方法。
  23. 前記現在のシステム構成における変化を検出し、前記近似ポリシーを修正するステップ、
    を更に備える、請求項20に記載の方法。
  24. 前記機能ユニットによって、入力オペランドに対して超越関数を実行して、多項式に基づいて結果を生成するステップと、
    最大精度の計算を実行するように指示された場合、第1の多項式を選択し、近似計算を実行するように指示された場合、相対的に低い次数の第2の多項式を選択するステップと、
    を更に備える、請求項14に記載の方法。
  25. 前記機能ユニットによって、入力オペランドに対して反復除算計算を実行して、複数の反復の各々の間に中間結果と該中間結果の精度の指標とを生成し、前記中間結果を除算ロジックへの入力として返すステップと、
    精度が近似ポリシーで指定されたレベルに到達すると、前記の反復を終了するステップと、
    を更に備える、請求項14に記載の方法。
JP2017082650A 2014-02-10 2017-04-19 過度の近似計算誤差から回復するプロセッサ Active JP6586435B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201461937741P 2014-02-10 2014-02-10
US61/937,741 2014-02-10
US14/522,520 US9588845B2 (en) 2014-02-10 2014-10-23 Processor that recovers from excessive approximate computing error
US14/522,520 2014-10-23

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2016514497A Division JP6133498B2 (ja) 2014-02-10 2014-12-14 過度の近似計算誤差から回復するプロセッサ

Publications (2)

Publication Number Publication Date
JP2017162487A true JP2017162487A (ja) 2017-09-14
JP6586435B2 JP6586435B2 (ja) 2019-10-02

Family

ID=52473758

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016514497A Active JP6133498B2 (ja) 2014-02-10 2014-12-14 過度の近似計算誤差から回復するプロセッサ
JP2017082650A Active JP6586435B2 (ja) 2014-02-10 2017-04-19 過度の近似計算誤差から回復するプロセッサ

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2016514497A Active JP6133498B2 (ja) 2014-02-10 2014-12-14 過度の近似計算誤差から回復するプロセッサ

Country Status (6)

Country Link
US (1) US9588845B2 (ja)
EP (1) EP2908242B1 (ja)
JP (2) JP6133498B2 (ja)
KR (1) KR101720452B1 (ja)
CN (1) CN105793825B (ja)
WO (1) WO2015118376A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9588845B2 (en) * 2014-02-10 2017-03-07 Via Alliance Semiconductor Co., Ltd. Processor that recovers from excessive approximate computing error
US10235232B2 (en) 2014-02-10 2019-03-19 Via Alliance Semiconductor Co., Ltd Processor with approximate computing execution unit that includes an approximation control register having an approximation mode flag, an approximation amount, and an error threshold, where the approximation control register is writable by an instruction set instruction
US9389863B2 (en) 2014-02-10 2016-07-12 Via Alliance Semiconductor Co., Ltd. Processor that performs approximate computing instructions
US10922203B1 (en) * 2018-09-21 2021-02-16 Nvidia Corporation Fault injection architecture for resilient GPU computing
US11327754B2 (en) * 2019-03-27 2022-05-10 Intel Corporation Method and apparatus for approximation using polynomials
JP2021043740A (ja) 2019-09-11 2021-03-18 富士通株式会社 バリア同期回路、バリア同期方法及び並列情報処理装置
JP7283320B2 (ja) * 2019-09-13 2023-05-30 富士通株式会社 情報処理装置、情報処理プログラム、及び情報処理方法
US11836490B2 (en) 2019-11-14 2023-12-05 Nvidia Corporation Kernel coefficient quantization
JP2022116821A (ja) * 2021-01-29 2022-08-10 国立大学法人 東京大学 情報処理システム及び情報処理方法

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02165225A (ja) * 1988-12-19 1990-06-26 Nec Corp 精度つき浮動小数点数演算処理装置
JP2001517332A (ja) * 1995-09-29 2001-10-02 インテル・コーポレーション 電圧スケーリングと周波数スケーリングの両方を通じて電力消費量を削減する装置および方法
US20030154359A1 (en) * 2002-02-12 2003-08-14 Ip-First Llc Apparatus and method for extending a microprocessor instruction set
US20050050132A1 (en) * 2003-08-26 2005-03-03 Tang Ping T. Methods and apparatus for determining approximating polynomials using instruction-embedded coefficients
EP1703374A2 (en) * 2005-03-18 2006-09-20 VIA Technologies, Inc. Apparatus and method for specification of floating point format in an instruction
JP2008158822A (ja) * 2006-12-25 2008-07-10 Fujitsu Ltd 演算回路及び演算方法並びに情報処理装置
JP2009528638A (ja) * 2006-02-27 2009-08-06 クゥアルコム・インコーポレイテッド 選択可能な副精度に対して、低減された電力要求を有する浮動小数点プロセッサ
US20090216824A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation Method, system and computer program product for determining required precision in fixed-point divide operations
JP2011518398A (ja) * 2008-04-21 2011-06-23 クゥアルコム・インコーポレイテッド 混合精度命令実行を伴うプログラマブルストリーミングプロセッサ
US20110296149A1 (en) * 2010-05-27 2011-12-01 International Business Machines Corporation Instruction Set Architecture Extensions for Performing Power Versus Performance Tradeoffs
US20120197955A1 (en) * 2011-01-31 2012-08-02 Nokia Corporation Method, apparatus, and computer program product for resource, time, and cost aware variable-precision solving of mathematical functions
US20140222883A1 (en) * 2011-12-21 2014-08-07 Jose-Alejandro Pineiro Math circuit for estimating a transcendental function
JP2016524748A (ja) * 2014-02-10 2016-08-18 ヴィア アライアンス セミコンダクター カンパニー リミテッド 過度の近似計算誤差から回復するプロセッサ

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3736566A (en) * 1971-08-18 1973-05-29 Ibm Central processing unit with hardware controlled checkpoint and retry facilities
US4726024A (en) * 1986-03-31 1988-02-16 Mieczyslaw Mirowski Fail safe architecture for a computer system
US4912707A (en) * 1988-08-23 1990-03-27 International Business Machines Corporation Checkpoint retry mechanism
US5386375A (en) * 1993-11-01 1995-01-31 Motorola, Inc. Floating point data processor and a method for performing a floating point square root operation within the data processor
US5504859A (en) * 1993-11-09 1996-04-02 International Business Machines Corporation Data processor with enhanced error recovery
WO1995031767A1 (en) 1994-05-11 1995-11-23 Vlsi Technology, Inc. Floating-point processor with apparent-precision based selection of execution-precision
US5673426A (en) * 1995-02-14 1997-09-30 Hal Computer Systems, Inc. Processor structure and method for tracking floating-point exceptions
US6625749B1 (en) * 1999-12-21 2003-09-23 Intel Corporation Firmware mechanism for correcting soft errors
US7171594B2 (en) * 2002-03-06 2007-01-30 Hewlett-Packard Development Company, L.P. Pausing a transfer of data
KR20040048703A (ko) * 2002-12-04 2004-06-10 엘지전자 주식회사 프로세서 복구 장치
US20050004958A1 (en) 2003-07-05 2005-01-06 General Instrument Corporation Single instruction multiple data implementation of finite impulse response filters including adjustment of result
US20050004957A1 (en) 2003-07-05 2005-01-06 General Instrument Corporation Single instruction multiple data implementations of finite impulse response filters
US20050228837A1 (en) 2004-04-08 2005-10-13 Paul Marostica Approximate number calculator
DE102004037713A1 (de) 2004-08-04 2006-03-16 Robert Bosch Gmbh Verfahren, Betriebssystem und Rechengerät zum Abarbeiten eines Computerprogramms
US7634687B2 (en) * 2005-01-13 2009-12-15 Microsoft Corporation Checkpoint restart system and method
US7467325B2 (en) * 2005-02-10 2008-12-16 International Business Machines Corporation Processor instruction retry recovery
US7421568B2 (en) 2005-03-04 2008-09-02 Qualcomm Incorporated Power saving methods and apparatus to selectively enable cache bits based on known processor state
US20060271615A1 (en) 2005-05-27 2006-11-30 Shearer James B Method to compute an approximation to the reciprocal of the square root of a floating point number in IEEE format
CN100435548C (zh) * 2006-09-15 2008-11-19 北京大学 一种能够同时产生多位调频网点的方法及装置
US20110004644A1 (en) 2009-07-03 2011-01-06 Via Technologies, Inc. Dynamic floating point register precision control
US8458650B2 (en) * 2010-03-29 2013-06-04 International Business Machines Corporation Injecting a fault into a stream operator in a data stream processing application
US8397187B2 (en) 2010-04-23 2013-03-12 International Business Machines Corporation Verifying the error bound of numerical computation implemented in computer systems
US8468431B2 (en) * 2010-07-01 2013-06-18 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
US8627143B2 (en) * 2010-07-12 2014-01-07 Hewlett-Packard Development Company, L.P. Dynamically modeling and selecting a checkpoint scheme based upon an application workload
US8676871B2 (en) 2010-09-24 2014-03-18 Intel Corporation Functional unit capable of executing approximations of functions
US8510546B2 (en) 2011-03-29 2013-08-13 International Business Machines Corporation Run-ahead approximated computations
US8954797B2 (en) * 2012-04-16 2015-02-10 International Business Machines Corporation Reconfigurable recovery modes in high availability processors
WO2014032610A1 (zh) * 2012-09-03 2014-03-06 东南大学 一种面向cpu流水线的错误恢复电路
CN103019876B (zh) 2012-12-26 2015-07-01 东南大学 一种面向cpu流水线的错误恢复电路
US9021313B2 (en) 2012-11-21 2015-04-28 Microsoft Technology Licensing, Llc Priority-assignment interface to enhance approximate computing
US9829956B2 (en) 2012-11-21 2017-11-28 Nvidia Corporation Approach to power reduction in floating-point operations
JP6044316B2 (ja) * 2012-12-12 2016-12-14 株式会社デンソー 車載電子制御装置
US9317379B2 (en) * 2014-01-24 2016-04-19 International Business Machines Corporation Using transactional execution for reliability and recovery of transient failures
US9389863B2 (en) 2014-02-10 2016-07-12 Via Alliance Semiconductor Co., Ltd. Processor that performs approximate computing instructions

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02165225A (ja) * 1988-12-19 1990-06-26 Nec Corp 精度つき浮動小数点数演算処理装置
JP2001517332A (ja) * 1995-09-29 2001-10-02 インテル・コーポレーション 電圧スケーリングと周波数スケーリングの両方を通じて電力消費量を削減する装置および方法
US20030154359A1 (en) * 2002-02-12 2003-08-14 Ip-First Llc Apparatus and method for extending a microprocessor instruction set
US20050050132A1 (en) * 2003-08-26 2005-03-03 Tang Ping T. Methods and apparatus for determining approximating polynomials using instruction-embedded coefficients
EP1703374A2 (en) * 2005-03-18 2006-09-20 VIA Technologies, Inc. Apparatus and method for specification of floating point format in an instruction
JP2009528638A (ja) * 2006-02-27 2009-08-06 クゥアルコム・インコーポレイテッド 選択可能な副精度に対して、低減された電力要求を有する浮動小数点プロセッサ
JP2008158822A (ja) * 2006-12-25 2008-07-10 Fujitsu Ltd 演算回路及び演算方法並びに情報処理装置
US20090216824A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation Method, system and computer program product for determining required precision in fixed-point divide operations
JP2011518398A (ja) * 2008-04-21 2011-06-23 クゥアルコム・インコーポレイテッド 混合精度命令実行を伴うプログラマブルストリーミングプロセッサ
US20110296149A1 (en) * 2010-05-27 2011-12-01 International Business Machines Corporation Instruction Set Architecture Extensions for Performing Power Versus Performance Tradeoffs
US20120197955A1 (en) * 2011-01-31 2012-08-02 Nokia Corporation Method, apparatus, and computer program product for resource, time, and cost aware variable-precision solving of mathematical functions
US20140222883A1 (en) * 2011-12-21 2014-08-07 Jose-Alejandro Pineiro Math circuit for estimating a transcendental function
JP2016524748A (ja) * 2014-02-10 2016-08-18 ヴィア アライアンス セミコンダクター カンパニー リミテッド 過度の近似計算誤差から回復するプロセッサ

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
HADI ESMAEILZADEH, ET AL.: "Architecture Support for Disciplined Approximate Programming", PROCEEDINGS OF THE SEVENTEENTH INTERNATIONAL CONFERENCE ON ARCHITECTURAL SUPPORT FOR PROGRAMMING LAN, JPN7018001495, 3 March 2012 (2012-03-03), US, pages 301 - 312, ISSN: 0003953971 *
RICCARDO BETTATI, ET AL.: "On-Line Scheduling for Checkpointing Imprecise Computation", PROCEEDINGS OF FIFTH EUROMICRO WORKSHOP ON REAL-TIME SYSTEMS, JPN6018016932, 22 June 1993 (1993-06-22), FI, pages 238 - 243, ISSN: 0003953972 *
RICCARDO BETTATI, NICHOLAS S. BOWEN, JEN-YAO CHUNG: "Checking Imprecise Computation", PROCEEDINGS OF THE IEEE WORKSHOP ON IMPRECISE AND APPROXIMATE COMPUTATION, JPN6016047832, December 1992 (1992-12-01), pages 45 - 49, ISSN: 0003953970 *
SWAGATH VENKATARAMANI, VINAY K. CHIPPA, SRIMAT T. CHAKRADHAR, KAUSHIK ROY, ANAND RAGHUNATHAN: "Quality Programmable Vector Processors for Approximate Computing", PROCEEDINGS OF THE 46TH ANNUAL IEEE/ACM INTERNATIONAL SYMPOSIUM ON MICROARCHITECTURE (MICRO'46), JPN7016003820, 7 December 2013 (2013-12-07), pages 1 - 12, XP033061434, ISSN: 0003953967, DOI: 10.1145/2540708.2540710 *
相澤洋二,鳥居達生他, 現代 数理科学事典, vol. 初版, JPN6018016929, 10 March 1991 (1991-03-10), pages 879 - 883, ISSN: 0003953968 *
鈴木昌治: "割り算回路設計 あの手この手 4 漸近法を用いた除算回路", DESIGN WAVE MAGAZINE, vol. 第10巻,第12号, JPN6018016931, 1 December 2005 (2005-12-01), JP, pages 132 - 138, ISSN: 0003953969 *

Also Published As

Publication number Publication date
JP2016524748A (ja) 2016-08-18
CN105793825A (zh) 2016-07-20
CN105793825B (zh) 2019-02-12
EP2908242A2 (en) 2015-08-19
JP6586435B2 (ja) 2019-10-02
WO2015118376A1 (en) 2015-08-13
US9588845B2 (en) 2017-03-07
EP2908242A3 (en) 2018-01-24
US20150227429A1 (en) 2015-08-13
KR20160008558A (ko) 2016-01-22
EP2908242B1 (en) 2019-07-17
JP6133498B2 (ja) 2017-05-24
KR101720452B1 (ko) 2017-03-27

Similar Documents

Publication Publication Date Title
EP2905699B1 (en) Processor that performs approximate computing instructions
JP6586435B2 (ja) 過度の近似計算誤差から回復するプロセッサ
JP5172942B2 (ja) プロセッサによる電力消費を低減する方法、プロセッサ、及び、情報処理システム
JP6373425B2 (ja) 複数のビットを左にシフトし、複数の1を複数の下位ビットにプルインするための命令
US9921832B2 (en) Instruction to reduce elements in a vector register with strided access pattern
EP2908241B1 (en) Processor with approximate computing functional unit
CN107003839B (zh) 用于移位和乘法器的指令执行方法、处理器和系统
US10579378B2 (en) Instructions for manipulating a multi-bit predicate register for predicating instruction sequences
KR20150035161A (ko) 그래픽 처리 장치 및 이의 동작 방법
US20230103206A1 (en) Caching based on branch instructions in a processor
TWI543077B (zh) 處理器與透過處理器執行的方法
TWI627585B (zh) 處理器與透過處理器執行的方法
TWI559224B (zh) 處理器與透過處理器執行的方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170419

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180501

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180515

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180813

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190412

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190827

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190909

R150 Certificate of patent or registration of utility model

Ref document number: 6586435

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250