(57)【要約】      （修正有）【課題】意図的なエラーによるエネルギー最適化を提供する。【解決手段】コンピュータシステムにおいて意図的にエラーを許容して当該コンピュータシステムのエネルギー消費を最適化する。費用便益分析を実行して、コンピュータシステムにおける１個以上の許容可能なエラーおよび１個以上の許容不可能なエラーを識別する。費用便益分析により、許容可能なエラーを、コンピュータシステムの精度に関してエネルギー消費を最適化するために受容可能なエラーとして識別することができる。費用便益分析により、許容不可能なエラーを、コンピュータシステムの精度に関してエネルギー消費を最適化するために受容不可能なエラーとして識別することができる。【選択図】図１
2010225140.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムにおいて意図的にエラーを許容して前記コンピュータシステムのエネルギー消費を最適化する方法であって、
前記コンピュータシステムにおいて１個以上の許容可能なエラーおよび１個以上の許容不可能なエラーを識別する費用便益分析を実行して、前記費用便益分析により前記許容可能なエラーを前記コンピュータシステムの精度に関してエネルギー消費を最適化するために受容可能なエラーとして識別し、前記費用便益分析により前記許容不可能なエラーを前記コンピュータシステムの精度に関してエネルギー消費を最適化するために受容不可能なエラーとして識別するステップと、
前記コンピュータシステムを、前記コンピュータシステムが前記許容可能なエラーおよび前記許容不可能なエラーを修正または防止する第１の状態から、前記コンピュータシステムが前記許容可能なエラーを許容し、且つ前記許容不可能なエラーを修正または防止する第２の状態へ変換するステップと
を含む方法。
【請求項２】
前記費用便益分析を実行して１個以上の許容可能なエラーを識別するステップが、
所与のエラーの許容に伴う前記コンピュータシステムの精度低下の定量的費用を決定するステップと、
前記所与のエラーの許容に伴うエネルギー消費減少の定量的便益を決定するステップと、
前記定量的便益が前記定量的費用をある閾値分上回るか否か判定するステップと、
前記定量的便益が前記定量的費用を前記閾値分上回るとの判定に応答して、前記所与のエラーを前記許容不可能なエラーの１個として識別するステップと、
前記定量的便益が前記定量的費用を前記閾値分上回らないとの判定に応答して、前記所与のエラーを前記許容不可能なエラーの１個として識別するステップとを含む、請求項１に記載のコンピュータ実装される方法。
【請求項３】
前記コンピュータシステムを、前記コンピュータシステムが前記許容可能なエラーおよび前記許容不可能なエラーを修正または防止する前記第１の状態から、前記コンピュータシステムが前記許容可能なエラーを許容し、且つ前記許容不可能なエラーを修正または防止する前記第２の状態へ変換するステップが、前記コンピュータシステムにおいて許容可能なエラーを許容するように前記コンピュータシステムの設計操作を設定するステップを含む、請求項１に記載のコンピュータ実装される方法。
【請求項４】
前記コンピュータシステムを、前記コンピュータシステムが前記許容可能なエラーおよび前記許容不可能なエラーを修正または防止する前記第１の状態から、前記コンピュータシステムが前記許容可能なエラーを許容し、且つ前記許容不可能なエラーを修正または防止する前記第２の状態へ変換するステップが、前記コンピュータシステムにおいて前記許容不可能なエラーを修正または防止するように前記コンピュータシステムの設計操作を設定するステップを含む、請求項３に記載のコンピュータ実装される方法。
【請求項５】
前記コンピュータシステムを、前記コンピュータシステムが前記許容可能なエラーおよび前記許容不可能なエラーを修正または防止する前記第１の状態から、前記コンピュータシステムが前記許容可能なエラーを許容し、且つ前記許容不可能なエラーを修正または防止する前記第２の状態へ変換するステップが、前記コンピュータシステムにおいて許容可能なエラーを許容するように前記コンピュータシステムの製造操作を設定するステップを含む、請求項１に記載のコンピュータ実装される方法。
【請求項６】
前記コンピュータシステムを、前記コンピュータシステムが前記許容可能なエラーおよび前記許容不可能なエラーを修正または防止する前記第１の状態から、前記コンピュータシステムが前記許容可能なエラーを許容し、且つ前記許容不可能なエラーを修正または防止する前記第２の状態へ変換するステップが、前記コンピュータシステムにおいて前記許容不可能なエラーを修正または防止するように前記コンピュータシステムの製造操作を設定するステップを含む、請求項５に記載のコンピュータ実装される方法。
【請求項７】
前記コンピュータシステムを、前記コンピュータシステムが前記許容可能なエラーおよび前記許容不可能なエラーを修正または防止する前記第１の状態から、前記コンピュータシステムが前記許容可能なエラーを許容し、且つ前記許容不可能なエラーを修正または防止する前記第２の状態へ変換するステップが、前記コンピュータシステムにおいて許容可能なエラーを意図的に許容するように前記コンピュータシステムを実装するステップを含む、請求項１に記載のコンピュータ実装される方法。
【請求項８】
前記コンピュータシステムを、前記コンピュータシステムが前記許容可能なエラーおよび前記許容不可能なエラーを修正または防止する前記第１の状態から、前記コンピュータシステムが前記許容可能なエラーを許容し、且つ前記許容不可能なエラーを修正または防止する前記第２の状態へ変換するステップが、前記コンピュータシステムにおいて前記許容不可能なエラーを修正または防止するように前記コンピュータシステムを実装するステップを含む、請求項７に記載のコンピュータ実装される方法。
【請求項９】
前記許容可能なエラーを検出する命令を受け取るステップと、
前記許容可能なエラーを修正または防止する命令を受け取るステップと、
前記許容可能なエラーを検出するために前記コンピュータシステムを実行しながら前記許容可能なエラーを検出する命令を実行するステップと、
前記許容可能なエラーの検出に応答して、前記許容可能なエラーを修正または防止するために前記コンピュータシステムを実行しながら前記許容可能なエラーを修正する命令を実行するステップと
を含む、請求項１に記載のコンピュータ実装される方法。
【請求項１０】
前記コンピュータシステム上で実行されるコンピュータプログラムにおけるコンパイラ動作を変更するステップを更に含み、前記変更されたコンパイラ動作が、前記コンピュータシステムにおける前記許容可能なエラーの意図的な許容または前記許容不可能なエラーの修正または防止を前記コンピュータシステムが行なえるよう、前記コンピュータプログラムをコンパイルするように適合されている、請求項１に記載のコンピュータ実装される方法。
【請求項１１】
コンピュータシステムにおいて意図的にエラーを許容して前記コンピュータシステムのエネルギー消費を最適化する方法を提供すべくプロセッサが実行するための命令を保存した計算機可読媒体であって、
前記コンピュータシステムにおける所与のエラーの許容に伴う定量的費用であって、前記所与のエラーを許容することから生じる前記コンピュータシステムの精度の低下の尺度を含む定量的費用を決定し、
前記コンピュータシステムにおける前記所与のエラーの許容に伴う定量的便益であって、前記所与のエラーを許容することから生じる前記コンピュータシステムの省エネルギーの尺度を含む定量的便益を決定し、
前記定量的便益が前記定量的費用をある閾値分上回るか否かを判定するステップと、
前記定量的便益が前記定量的費用を前記閾値分上回るとの判定に応答して、前記所与のエラーを許容可能なエラーとして識別し、
前記定量的便益が前記定量的費用を前記閾値分上回らないとの判定に応答して、前記所与のエラーを許容不可能なエラーと識別し、
前記コンピュータシステムにおいて前記許容可能なエラーを許容するための設計操作を選択して設定すると共に、前記コンピュータシステムの設計に関して前記許容不可能なエラーを修正または防止するように構成された命令を含むコンピュータ可読媒体。
【請求項１２】
前記コンピュータシステムの製造に関して、前記コンピュータシステムにおける前記許容可能なエラーの許容および前記コンピュータシステムにおける前記許容不可能なエラーの修正または防止に関する製造操作を選択するように構成された命令を更に含む、請求項１１に記載の計算機可読媒体。
【請求項１３】
前記コンピュータシステムの実装に関して、前記コンピュータシステムにおける前記許容可能なエラーの許容および前記コンピュータシステムにおける前記許容不可能なエラーの修正または防止に関する実装操作を選択および設定するように構成された命令を更に含む、請求項１１に記載の計算機可読媒体。
【請求項１４】
前記コンピュータシステムにおける所与のエラーの許容に伴う定量的費用を決定することが、前記コンピュータシステムの設計に従いシミュレーションを実施して精度の低下を推定することを含み、前記コンピュータシステムにおける前記所与のエラーの許容に伴う定量的便益を決定することが、前記コンピュータシステムの設計に従い前記シミュレーションを実施して省エネルギーを推定することを含む、請求項１１に記載のコンピュータ可読媒体。
【請求項１５】
設計に従い前記コンピュータシステムに所与の組の入力を与え、
前記コンピュータシステムに前記所与の組の入力を与えたことに伴う実際の精度低下および実際の省エネルギーを測定し、
前記実際の精度低下および前記実際の省エネルギーを、推定された精度低下および推定された省エネルギーと比較することにより、設計に従う前記コンピュータシステムを検証するように構成された命令を更に含む、請求項１１に記載の計算機可読媒体。
【請求項１６】
コンピュータシステムにおいて意図的にエラーを許容して前記コンピュータシステムのエネルギー消費を最適化するように動作するシステムであって、
前記コンピュータシステムにおける前記許容可能なエラーの許容を可能にする設計操作を選択および設定するように動作する設計モジュールと、
前記コンピュータシステムにおける前記許容可能なエラーの許容を可能にする製造操作を選択および設定するように動作する製造モジュールと、
前記コンピュータシステムにおける前記許容可能なエラーの許容を可能にする実装操作を選択および設定するように動作する実装モジュールと、
前記コンピュータシステムがコンピュータプログラムを実行している間に、前記許容可能なエラーを修正または防止するように動作するエラー修正／防止モジュールと、
前記許容可能なエラーを選択すると共に、前記設計モジュール、前記製造モジュール、前記実装モジュールの動作を分析して、前記コンピュータシステムの精度およびエネルギー消費を推定するように動作するシステム分析モジュールと、
前記コンピュータシステム上で前記コンピュータプログラムを実際に実行する間、前記推定された精度および推定されたエネルギー消費を検証するように動作する性能検証モジュールと
を含むシステム。
【請求項１７】
前記コンピュータシステムが前記コンピュータプログラムを実行する際に実行される演算、前記演算におけるエラー、および前記演算間のエラーの影響を決定するよう、前記コンピュータプログラムを分析する計算タスク分析を実行するように動作する計算タスク分析モジュールと、
所与の入力の組に基づいて前記コンピュータシステムにより実行された際の前記コンピュータプログラムの動作を分析するデータ分析を実行するように動作するデータ分析モジュールと
を更に含み、
前記計算タスク分析および前記データ分析が、前記設計操作を選択および設定するように前記設計モジュールに提供され、前記製造操作を選択および構成するように前記製造モジュールに提供され、前記実装操作を選択および設定するように前記実装モジュールに提供される、請求項１６に記載のシステム。
【請求項１８】
一群の処理から、前記許容可能なエラーを許容する前記コンピュータシステムに関してエネルギー消費を最適化する処理を選択するように動作する処理選択モジュールを更に含む、請求項１６に記載のシステム。
【請求項１９】
前記コンピュータシステムでの実行のために前記コンピュータプログラムをコンパイルするように動作するコンパイルモジュールであって、更に前記コンピュータシステムにおいて前記許容可能なエラーの許容を可能にするよう、前記コンピュータプログラムをコンパイルするように動作するコンパイルモジュールを更に含む、請求項１６に記載のシステム。
【請求項２０】
前記許容可能なエラーを修正または防止するように前記コンピュータシステムにより実行可能な命令であって、前記エラー修正／防止モジュールに提供されて前記許容可能なエラーを修正または防止する命令を提供するように動作する命令生成モジュールを更に含む、請求項１６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
各種のモバイル機器等の装置は、動作するために相当量のエネルギーを使用する。例えば、モバイル機器は高帯域幅無線通信のようにエネルギーを大量に消費する動作を実行する場合がある。更に、ゲーティング等の適応型アーキテクチャ技術や装置組み込み型の再設定可能な装置もまた、大量のエネルギーを消費する場合がある。
【背景技術】
【０００２】
モバイル機器に関する顧客満足度は、無線通信に伴うサービス品質（「ＱｏＳ」）に大きく依存する。顧客は多くの場合、一定レベルのＱｏＳを要求する。一部のサービスプロバイダは、特定の顧客に対してＱｏＳのレベルを保証する場合もある。従って、ＱｏＳを代償に移動マルチメディア機器の使用エネルギー量を減らすのは望ましくないであろう。しかし、従来のエネルギー大量消費型技術はＱｏＳを考慮していないことが多く、無意識にＱｏＳを悪化させる恐れがある。
【発明の概要】
【課題を解決するための手段】
【０００３】
本開示は、上記および他の問題の解決に取り組んだものである。
【０００４】
本開示の上述および他の特徴は、添付の図面を参照しながら以下の説明および付属の請求項から明らかになろう。これらの図面が本開示によるいくつかの実施形態を示すだけであり、従ってその範囲を限定しないとの理解に基づいて、添付の図面を用いて本開示を更に具体的且つ詳細に記述するものである。
【図面の簡単な説明】
【０００５】
【図１】本開示のいくつか実施形態による、コンピュータシステムのライフサイクル内で、費用便益モジュール（cost-benefit module）の実装例を示す模式図である。
【図２】本開示のいくつか実施形態による、費用便益モジュールの実装例を示すブロック図である。
【図３】本開示のいくつか実施形態による、エラー修正／防止モジュールの実装例を示すブロック図である。
【図４】いくつか実施形態による、コンピュータシステムのエネルギー消費を最適化するようにコンピュータシステムにおいて意図的にエラーを許容する例示的な処理を示すフロー図である。
【図５】本明細書に示す実施形態を実装可能なコンピュータシステムの例示的なコンピュータハードウェアのアーキテクチャを示すコンピュータアーキテクチャ図である。
【発明を実施するための形態】
【０００６】
以下の詳細説明において、本明細書の一部をなす添付の図面を参照する。これらの図面において別途明記されない限り、類似記号は類似の構成要素を示す。詳細説明、図面、および請求項に記載されている例示的な実施形態は限定を目的としていない。他の実施形態を用いてもよく、本明細書に提示する主題の概念または範囲から逸脱することなく他の変更がなされてもよい。本明細書に一般的に記述されて、図示されている本開示の各態様を各種の異なる構成で配置、置換、組合せ、分離、および設計可能であって、その全てを本明細書で明示的に考察していることが容易に理解されよう。
【０００７】
以下の開示内容は特に、コンピュータシステムの設計、実装、分析、および／または演算を実行する間に、少なくともその結果の一部において意図的にエラーを許容する技術に関する方法、装置、システム、およびコンピュータプログラム製品を目的としている。本明細書に提示する技術および概念を利用して意図的にエラーを許容することにより、コンピュータシステムにおけるエネルギー最適化が可能になる。
【０００８】
いくつか実施形態によれば、エラーの許容またはエラーの修正／防止に基づく費用便益分析を実行することによりエラーを許容するか否かを判定する。本明細書で用いるエラーを「許容する」との表現は、従来のエラー修正および防止技術に基づくエラーの修正または防止を行なわないことにより、意図的にエラーの発生を許容することを指す。所与の閾値を越えて便益が費用を上回る好適な費用便益分析が得られた場合、エラーを許容する旨の判定がなされる。一方、所与の閾値を越えて費用が便益を上回る、好適でない費用便益分析が得られた場合、エラーを許容しない旨の判定がなされる。便益の例として、省エネルギー、動作の柔軟性、シリコン製造工程の変動および動作条件の変動に対する弾力性の向上が含まれるが、これに限定されない。費用の例として、動作の複雑さ、潜在的なＱｏＳの低下、およびユーザー／顧客の評価が含まれるが、これに限定されない。
【０００９】
本明細書に記述する技術および概念は、プログラム可能且つ専用のシステム、データパス、有限状態機械、メモリ構造、配線（interconnects）、電力網、およびクロック分配回路を含むがこれに限定されない各種の装置で実装可能である。更に、本明細書に記述する技術および概念は、従来の実装操作（implementation operations）（例：ゲートサイジング、集積回路マスク設計）だけでなく、従来の設計操作（design operations）（例：アーキテクチャ合成、論理合成、物理設計）を拡張することができる。
【実施例】
【００１０】
図面を参照するに、意図的に時折生じるエラーを許容することよりエネルギー消費を最小化するコンピュータシステムおよび方法の態様について述べる。図１は、本開示のいくつか実施形態による、コンピュータシステムのライフサイクル内で費用便益モジュールの実装例を示す図である。特に、図１は、費用便益モジュール１０６の簡素化された動作フロー１００を例示する。費用便益モジュール１０６は、コンピュータシステムのライフサイクルの任意の区間で動作することができる。いくつか例示の実施形態によれば、コンピュータシステムのライフサイクルは、設計段階１０２Ａ、製造段階１０２Ｂ、および実装段階１０２Ｃ（集合的に「段階１０２」と呼ぶ）を含んでいる。図示する段階１０２におけるコンピュータシステムのライフサイクルの分類は単に例示的に過ぎず、コンピュータシステムのライフサイクルは当業者が想起できる各種の他の方法により表わすことができる点を理解されたい。
【００１１】
各種実施形態によれば、設計段階１０２Ａは、コンピュータシステム設計のあらゆる適当なフェーズを含んでいてよい。設計段階１０２Ａは、コンピュータシステム、並びに当該コンピュータシステム内の各種要素および下位要素に関する設計操作の選択および構成を指す場合がある。例えば、設計段階１０２Ａは、集積回路の設計に関する配置およびルーティング等の電子設計オートメーション（「ＥＤＡ」）操作を指す場合がある。製造段階１０２Ｂは、コンピュータシステム製造のあらゆる適当なフェーズを含んでいてよい。製造段階１０２Ｂは、コンピュータシステム全体、並びに当該コンピュータシステム内の各種要素および下位要素に関する製造操作（manufacturing operations）の選択および構成を指す場合がある。
【００１２】
実装段階１０２Ｃは、コンピュータシステム実装のあらゆる適当なフェーズを含んでいてよい。特に、実装段階１０２Ｃは、コンピュータシステム全体、並びに当該コンピュータシステム内の要素および下位要素に関する実装操作の選択および構成を指す場合がある。設計段階１０２Ａに記述された上例に関して、製造段階１０２Ｂは、設計段階１０２Ａにおいて設計された集積回路の製造を指す場合があり、実装段階１０２Ｃは、設計段階１０２Ａにおいて設計され、製造段階１０２Ｂにおいて製造された集積回路の実装を指す場合がある。簡潔のため、本明細書における「コンピュータシステム」という表現は全て、コンピュータシステム全体および／または当該コンピュータシステム内の要素および下位要素を指す場合がある。
【００１３】
設計段階１０２Ａ、製造段階１０２Ｂ、および実装段階１０２Ｃは各々、汎用プロセッサ、専用プロセッサ（例：デジタル信号プロセッサ（「ＤＳＰ）、マイクロコントローラ、グラフィックプロセッサ、ネットワークプロセッサ等）、特定用途向け集積回路（「ＡＳＩＣ」）、フィールドプログラマブルゲートアレイ（「ＦＧＰＡ」）の設計、製造、および実装を指す場合がある。図１に示すように、費用便益モジュール１０６は、設計段階１０２Ａ、製造段階１０２Ｂ、および／または実装段階１０２Ｃの任意の組合せで実装してもよい。
【００１４】
各実施形態によれば、費用便益モジュール１０６は、１０８Ａでエラーを許容するかまたは１０８Ｂでエラーを修正または防止するか否か判定するために、段階１０２の一つ以上実行する間に各種の費用便益分析を実行してよい。費用便益モジュール１０６は、エラーを許容することで生じる省エネルギー（すなわち便益）を最大にしながら、エラーの影響（すなわち費用）を最小化する各々の目標のバランスを取るべく構成することができる。いくつかの例において、１０８Ａでエラーを許容する旨の決定は、コンピュータシステムの設計、製造、または実装に対するエラーの影響が比較的低いことに起因する場合がある。他の例において、１０８Ａでエラーを許容する旨の決定は、コンピュータシステムの設計、製造、または実装の変更に起因する場合がある。これらの変更がエラーの影響を減らすこともある。エラーの影響は、段階１０２のうち１個以上を実行する間に予測的方法および／または実際のテストにより決定することができる。影響の例として、コンピュータシステムの温度、コンピュータシステムの電圧変動、およびコンピュータシステムのソフト・ラディエーション（soft radiation）エラー率が含まれるが、これに限定されない。費用便益モジュール１０６について、図２を参照しながら以下により詳細に述べる。
【００１５】
図２は、本開示のいくつか実施形態による、費用便益モジュールの実装例を示すブロック図である。図２に示すように、費用便益モジュール１０６は、計算タスク分析モジュール２０２、データ分析モジュール２０４、設計モジュール２０６、製造モジュール２０８、実装モジュール２１０、命令生成モジュール２１２、処理選択モジュール２１４、コンパイルモジュール２１６、エラー修正／防止モジュール２１８、システム分析モジュール２２０、および性能検証モジュール２２２のうち１個以上を含んでいてよい。説明の便宜上、モジュール２０２〜２２２は費用便益モジュール１０６内に並行的に実装されているものとして示す。しかし、費用便益モジュール１０６をモジュール２０２〜２２２の１個以上の任意の組合せで実装してもよい点を理解されたい。更に、モジュール２０２〜２２２が互いに排他的であるようには意図していない点も理解されたい。モジュール２０２〜２２２は、ハードウェア、ファームウェア、ソフトウェア、またはこれらを組合せて実装することができる。
【００１６】
現在開示されているいくつか実施形態によれば、計算タスク分析モジュール２０２は、コンピュータプログラムを分析して、（１）コンピュータシステムがコンピュータプログラムを実行した場合に実行される演算、（２）演算におけるエラー、および（３）エラーがどのように演算に影響を及ぼすかを判定するように構成することができる。例えば、計算タスク分析モジュール２０２は、集積回路がそれ以上大きい入力値に対しては動作しない乗算器を有していると判定することができる。この判定に基づき、乗算を実行しないかまたは小さい入力値で乗算を実行するように集積回路を設計および／または実装することができる。このように、乗算器に関して何ら変更を必要とせずに集積回路を設計および／または実装することができる。
【００１７】
小さい入力値は、その２値表現の先頭に特定個数のゼロを有する値を指す場合がある。小さい入力値を識別する先頭のゼロの閾値は、特定の実装に応じて変わり得る。大きい入力値は、小さい入力値と比較して先頭のゼロが少ない任意の入力値を指す場合がある。一例として、バイナリ値「００００  ０１０１」は小さい入力値（すなわち、先頭にゼロが約５個）と考えられ、一方バイナリ値「０１１０  ００００」は大きい入力値（すなわち、先頭のゼロが５個未満）と考えることができる。先頭のゼロの個数がより少ないか多いかにより、より大きいまたはより小さい値を表わす他の例も考察できる。
【００１８】
計算タスク分析モジュール２０２は、記号分析（symbolic analysis）、区間分析（interval analysis）、シミュレーション、統計的分析、および統計的分析を用いるシミュレーションを含むがこれに限定されない各種の異なる分析を実行することができる。記号分析は、実際に実行される処理における演算、およびこれらの演算が実行される条件の分析を指す場合がある。例えばある演算は、条件文（例：ｉｆ−ｔｈｅｎ−ｅｌｓｅ文）により入力が特定の値を有する場合のみ実行されてよい。区間分析シミュレーションは、第１の演算の出力が第２の演算に対する入力になる状況を指す場合がある。特に、区間分析シミュレーションは、第１の演算で生じたエラーが第２の演算に対してどのように影響を及ぼすかを分析する。いくつかの実施形態において、区間分析シミュレーションは、エラーの悪影響を過大評価するかまたは少なくとも過小評価しないことによる最悪または最悪に近い場合の結果を出力するように設計されている。
【００１９】
シミュレーションは、一組の代表的な入力を適用して、その代表的な入力により何らかのエラーが生じるかを観察することを指す。適当な入力の組をシミュレートすることにより、特定の種類の入力に基づいて修正が必要な時点を判定することができる。統計的分析は、受容不可能なエラーが誘発する恐れのある計算を特定することを指す。例えば、長いループは往々にしてその種の受容不可能なエラーを誘発する傾向があり、特にこれらの長いループが分岐を有する場合にそうである。統計的分析を用いるシミュレーションは、シミュレーション結果に対して統計的分析を実行することを指す。
【００２０】
各実施形態によれば、データ分析モジュール２０４は、所与の入力の組に基づいてコンピュータシステムにより実行された際のコンピュータプログラムの動作を分析するように構成することができる。例えば、各クロックサイクルｉにおいて第１入力（ｂｉ）および第２入力（ｃｉ）に対して実行された単一の加算を含む計算を考慮する。すなわち、各クロックサイクルｉにおいてａ＝ｂｉ＋ｃｉが計算される。加算が１６ビット加算器で実行されるものと仮定し、データ分析モジュール２０４について、最上位ビットが常に０値であるように誤って計算されると判定するものと仮定する。各クロックサイクルｉについて第１入力（ｂｉ）および第２入力（ｃｉ）が１５個より少ない有効ビットを用いる場合は修正の必要がない。しかし、第１入力（ｂｉ）および第２入力（ｃｉ）が１５または１６ビットの数である場合、１６ビット加算器の結果を修正する必要があるかもしれない。第１入力（ｂｉ）および第２入力（ｃｉ）が１５または１６ビットの数である場合、データ分析モジュール２０４は結果の２個の最上位ビットを監視し、最上位ビットをゼロから１に変更する必要があれば必要に応じて修正することができる。
【００２１】
計算タスク分析モジュール２０２およびデータ分析モジュール２０４は、設計段階１０２Ａを実行する間に用いられたコンピュータ支援ドラフティング（「ＣＡＤ」設計ツールに実装されていてもよい点を理解されたい。計算タスク分析モジュール２０２およびデータ分析モジュール２０４から生成された結果データは、設計モジュール２０６、製造モジュール２０８、実装モジュール２１０、およびコンパイルモジュール２１６等の他のモジュールへ提供されてよい。計算タスク分析モジュール２０２およびデータ分析モジュール２０４の結果はまた、コンピュータプログラムのコンパイル処理を最適化するようにコンパイルモジュール２１６に対して指針を提供することができる。
【００２２】
各実施形態によれば、設計モジュール２０６は、１個以上の設計エラーが許容された際の精度（例：エラー率、ＱｏＳへの影響）とエネルギー消費との定量的トレードオフを考慮した費用便益分析に基づいて設計操作を選択して設定する。例えば、設計モジュール２０６は、コンピュータシステムが特定のエラー、例えばＱｏＳに及ぼす影響が限定的と考えられるエラーを許容できるようコンピュータシステムを設計する設計操作を選択して設定することができる。
【００２３】
設計モジュール２０６は、各種のテストおよび分析方法を用いて、設計段階１０２Ａを実行する間にエラーを許容することに伴う関連便益および費用を判定することができる。いくつかの実施形態において、設計モジュール２０６は、異なる条件下で多様なエラーが生じる機能ユニットおよびメモリ素子の設計および使用を含むアーキテクチャ合成技術を実行する。例えば、設計モジュール２０６は、稀な入力の組合せが生じる確率が比較的低い連鎖ユニットの設計を可能にすることができる。特に、機能ユニットへの入力の数が増えるにつれて、長い組合せ経路が高感度になる（long combinational paths become sensitized）可能性が減少する。
【００２４】
機能ユニットは、論理または算術演算を実行するように構成されたハードウェアモジュールであってよい。機能ユニットの非限定的な例として、加算器、減算器、比較器、乗算器、除算器、累算器、算数論理ユニット、またはこれらの任意の合理的な組合せのうち１個以上を含んでいてよい。機能ユニットは、１個以上のレジスタからデータを読み込んで、１個以上のレジスタに結果を書き込むべく構成されていてよい。２個以上の機能ユニットが、一方の出力がもう一方の入力であって当該２個以上の機能ユニットの間にはレジスタが配置されていないように相互に結合されている場合、当該機能ユニットは「連鎖的」と考えることができる。例えば、乗算累算器（「ＭＡＣ」）は、連鎖的なユニットとして実装可能であって、乗算器が１クロックサイクル内で加算器にその結果を送るべく、乗算器を加算器と協調的に構成することができる。
【００２５】
別の実施形態において、設計モジュール２０６は、動作合成の最適化（behavioral synthesis optimizations）および他の高レベルな合成演算（synthesis operations）を実行する。例えば、設計モジュール２０６は、語長の要件（word-length requirements）および数値安定性に影響を及ぼすプログラム変換を考慮してよい。設計モジュール２０６は更に、適用するプログラム変換、プログラム変換を適用する場所、およびプログラム変換を適用しる順序の指針を与えるために各種の発見的且つ統計的技術を用いることができる。他の適当な動作合成最適化として、分割、モジュール選択、演算チェイニング、およびクロックサイクル時間選択が含まれるがこれに限定されない。
【００２６】
別の実施形態において、設計モジュール２０６は、ゲート制御されたエラー検出／修正論理（gated error detection and correction logic）を有する機能ユニットの設計を可能にする。エラー検出論理は、エラーを検出するように構成された論理ブロックであるのに対し、エラー修正論理はエラーを修正するように構成された論理ブロックである。例えば、２個の正数の加算の結果負数が得られた場合、エラー検出論理は最上位ビットを調べて、正から負への不適切な符号の変化が検出された場合にエラーを検出することができる。エラー修正論理の一例として、より多くの電力を消費するが比較的高い割合で正しい結果を与える加算器が挙げられる。エラー検出／修正論理によりエラーが検出された場合、エラー修正論理内の加算器は、正しい結果を得るために必要なだけ加法演算を繰り返すことができる。エラー検出／修正論理は、ゲート制御されたモジュールとして実装されていてよい。特に、エラー検出およびエラー修正機能は、使用する必要が無い場合は無効化（ゲートオフ）され、使用が必要な場合に有効化（ゲートオン）することができる。
【００２７】
更に、機能ユニットは、ほとんど生じない入力および動作条件が比較的低い確率で用いられるクリティカルパスおよびεクリティカル（またはイプシロンクリティカル）パスを含むように設計されていてよい。クリティカルパスとは、１個の一次回路からの信号入力（例：フリップフロップの入力）と別の一次回路の信号出力（例：フリップフロップの出力）の間の信号経路である。理想的には、第１の一次回路からの信号出力における変化と、第２の一次回路における信号入力への対応信号の到着との間には遅延が無い。しかし、各種の非理想的現象に起因して、信号経路に遅延が生じた結果、システム全体（例：レース条件、セットアップ失敗、およびホールド回数等）における実行エラーが生じる恐れがある。時間間隔または時間遅延（共通的にＴｃｐと呼ぶ）により、全ての結果が正しくなるように、クリティカルパスに沿って伝播する信号が、集積回路のクロックの最高速度を制限する必要が生じる場合がある。εクリティカルパスは、信号が伝播するために少なくとも（ＴＣｐ−ε）時間間隔を要求する経路であって、εは実装方式に応じて調整可能である。
【００２８】
設計モジュール２０６は、クロック発生関連のエラーが指定された入力の組に限られるような仕方で、クロック周波数の設計を可能にすることができる。統計的モデリングを用いて、制約検証およびエラーの原因を認識することができる。統計的モデリングは、設計並びに代表的な入力から導出されたパラメータの組に対して実行することができる。
【００２９】
いくつかの例において、統計的モデリングは以下のように実行できる。巨大な代表的入力データの組（例：音声または動画ファイル）を収集する場合がある。当該入力データに対して何らかの計算を実行するためのクロックサイクル時間（すなわち、所与のクロックサイクル数を実行するのに要する時間）をこれらの代表的入力データについて決定できる。特に、異なる入力データに対して、ある割合で演算を正確に実行するのに充分なクロックサイクル時間が決定できる。後で電力効率が高い設計に変更可能な設計を早く行なうために、一部または全てのアプリケーションにおいて演算が正確に実行されない割合が極めて少なくならないように、より短いサイクル時間を選択してもよい。統計的モデリングは、所与の割合を超えて不正確な演算が実行されないように、電力効率に対する計算エラーのバランスを取るようにサイクル時間の選択を支援することができる。
【００３０】
別の実施形態において、設計モジュール２０６は、信号経路の一部が目標クロック周波数より長いタイミング制約を有するように論理を設計するために、組合せおよび逐次論理合成技術（sequential logic synthesis techniques）を実行するように構成されている。特に、設計モジュール２０６は、リタイミング、パイプライニング、および技術マッピングを実行することができる。更に別の態様において、設計モジュール２０６は、回路論理の配置および論理間の信号ルーティング等の物理設計操作を設定する。配置は、各モジュールおよび各ゲートの位置を決定する合成ステップである。ルーティングは、回路間の配線同士を接続する位置が決定される集積回路について、該集積回路を形成する間に用いる場合がある合成ステップである。最先端の合成方法において、ルーティングを大域ルーティングおよび局所ルーティングの二つのフェーズに分割することができる。大域ルーティングは、集積回路のどの領域を信号配線に用いるかを決定する。局所ルーティング（チャネル割り当てとも呼ばれる）は、２個以上のゲート、回路、トランジスタ、コンデンサ、抵抗を接続する配線の正確な配置箇所を決定する。
【００３１】
各実施形態によれば、製造モジュール２０８は、製造段階１０２Ｂにおいて１個以上の製造エラーが許容される場合に、精度とエネルギー消費との間の定量的トレードオフを考慮した費用便益分析に基づいて製造操作を選択して設定する。いくつかの実施形態において、製造エラーは製造ばらつき（manufacturing variability）を指す場合がある。他の実施形態では、製造エラーはまた、精度とエネルギー消費との間のトレードオフに基づく製造における優先事項を指す場合がある。製造モジュール２０８は、各種のテストおよび分析方法を用いて、エラーの許容に伴う関連便益および費用を決定することができる。
【００３２】
各実施形態によれば、実装モジュール２１０は、１個以上の実施エラーが許容される場合に、精度とエネルギー消費との間の定量的トレードオフを考慮した費用便益分析に基づいて実装操作を選択して設定する。実装モジュール２１０は、各種のテストおよび分析方法を用いて、実装段階１０２Ｃ実行中のエラーの許容に伴う関連便益および費用を決定することができる。実装モジュール２１０は、ゲートサイジング、配線クロストークの少なくとも一部は意図的に許容すること、電力グリッド欠陥の少なくとも一部は意図的に許容すること、タイミング収束動作（timing closure operations）、およびマスク設計操作を含むがこれに限定されない各種の実装操作を考慮していてよい。
【００３３】
ゲートサイジングは、トランジスタにおける導通チャネルの幅および／または長さ等、各ゲートの物理的な寸法を、特定の目的（例：電力、速度、金型面積に伴う費用）が最適化されるように指定された値に設定する処理を指す。ゲートサイジングの実行中、トランジスタは名目ライブラリ値（nominal library value）に関して同じ倍数因子（multiplicative factor）により変更される。ゲートを形成するトランジスタの大きさが、トランジスタ同士の比率が維持されないように設定される場合、合成ステップはトランジスタサイジングと呼ばれる。また、各々の配線は、目的が最適化されるように幅を調整することによりサイズを設定することができる。
【００３４】
意図的な許容とは、エラーが精度に及ぼす影響が低いおよび／または稀であり、更に、電力、速度その他の目的のためにエラーが有益であるために、関連する設計において特定のエラー（例；ばらつき）を意図的に受容する行為を指す。電力グリッド欠陥とは、稀に極端な高電圧ノイズが生じる場合もある、集積回路上の電圧供給および地上ネットワークにおけるエラーを指す。配線クロストークとは、１個以上の近接する配線が信号に影響を及ぼして、正確な信号が抑制および変更されるかまたは偽の不正確な信号を発生させる現象を指す。
【００３５】
タイミング収束とは、全体的なクロック遅延を目標遅延まで減少させるように変更する必要があるモジュールまたはゲートについて、該モジュールまたはゲートを識別することを目標とする合成および分析手順を指す。また、遅延減少を実現するために再合成ステップを実行してもよい。
【００３６】
マスク設計とは、トランジスタ、配線、および集積回路の他の要素（例：後述する充填（fill-up））を形成するフォトリソグラフィ処理で使用するマスクを生成する処理を指す。半導体ウエハーの表面は多くの場合、露光に反応するフォトレジスト材料でコーティングされる。マスクは、コーティング面に対する光の影響を防止または許容する。その結果、トランジスタ（例：ドレイン、ソース）その他の素子が生成できるように、化学製品および／または他の半導体処理技術を用いてウエハーの露出部分から材料を除去する。
【００３７】
各実施形態によれば、命令生成モジュール２１２は、計算上のまたは他のエラーを検出および／または修正あるいは防止する、コンピュータシステムにより実行可能な命令を生成する。上述のように、全体的な性能に及ぼす影響が比較的低い場合、エラーを許容してもよい。当該エラーは当然ながら影響が小さいか、または命令生成モジュール２１２が生成した命令を実行することにより影響を軽減することができる。
【００３８】
各実施形態によれば、処理選択モジュール２１４は、１個以上の処理および他のエラーが許容される場合に、精度とエネルギー消費との間のトレードオフを最適化する方法を選択する。処理選択モジュール２１４は、１個以上の関連タスクを解決可能な一群の従来方式の処理から適当な処理を選択することができる。このような一群の処理の例として、高速フーリエ変換（「ＦＦＴ」）フィルタ、離散コサイン変換（「ＤＣＴ」）フィルタ、有限インパルス応答（「ＦＩＲ」）フィルタ、無限インパルス応答（「ＩＩＲ」）フィルタ等を含む一群のデジタルフィルタである。これらのフィルタにより同一入力から同一結果を得ることができる。しかし、各フィルタは、異なる動作を実行することができ、エラーに対して異なる感度を有していてよい。例えば、指定された同一フィルタに対して、ＦＩＲフィルタは対応するＩＩＲフィルタより多くの動作を要求する場合がある。しかし、ＦＩＲフィルタは、一般に計算その他のエラーに影響されやすいＩＩＲフィルタに比べて、エラーに対して一般に弾力的である。一群の処理の別の例として、バブルソート、挿入ソート、基数ソート、マージソート等を含む一群のソート処理がある。処理選択モジュール２１４を用いて、コンピュータシステムで実行される処理を設計モジュール２０６が設計および／または実装モジュール２１０が実装することができる。
【００３９】
他の実施形態によれば、コンパイルモジュール２１６は、１個以上のコンパイルおよび他のエラーが許容される場合に、精度とエネルギー消費との間のトレードオフを容易にするようにコンピュータプログラムのコンパイル処理を最適化する。一般に、コンパイラはコンピュータシステムでの実行により適するように、高レベルコンピュータプログラムを下位レベルの表現に変換する。コンパイルモジュール２１６は、語長要件および数値安定性に影響を及ぼすプログラム変換を考慮していてよい。更に、発見的且つ統計的技術を用いて、どの変換を適用するか、およびどの順序で変換を適用するかの指針を与えることができる。
【００４０】
更に他の実施形態によれば、エラー修正／防止モジュール２１８は、コンピュータシステムがコンピュータプログラムを実行している間に、許容されたエラーを検出並びに修正または防止するように構成することができる。エラー修正／防止モジュール２１８は、当業者に想起されるように、各種のエラー検出およびエラー修正／防止技術の任意のものを用いることができる。更に、エラー修正／防止モジュール２１８は、エラーの検出およびエラーの修正／防止を可能にする、命令生成モジュール２１２により生成された命令を受信することができる。エラー修正／防止モジュール２１８の動作は、特定のエラーが検出された場合に起動することができる。
【００４１】
図３は、本開示のいくつか実施形態による、エラー修正／防止モジュール２１８の実装例を示すブロック図である。図３に示すように、いくつかの実施形態において、エラー修正／防止モジュール２１８は、第１コンピュータシステム３０２Ａでなされた所与の計算の結果を、第１コンピュータシステム３０２Ａと同一または機能的に同等である第２コンピュータシステム３０２Ｂの結果と比較することによりエラーを検出する。別の実施形態において、エラー修正／防止モジュール２１８は、エラーが生じる第１コンピュータシステム３０２Ａの設計と、エラーが生じない第２コンピュータシステム３０２Ｂの設計との間の相違を追跡することによりエラーを診断する。エラー修正／防止モジュール２１８は、各種のモデリング技術（例えばシミュレーション、エミュレーション）を用いて、またはコンピュータシステム３０２Ａ、３０２Ｂを実際に実行させてエラーを検出することができる。
【００４２】
いくつかの実施形態において、エラー修正／防止モジュール２１８は、特定の条件が満たされた場合に結果を修正する専用回路を実装する。別の実施形態において、エラー修正／防止モジュール２１８は、コンピュータプログラムへの入力の一部を入れ替える。別の実施形態において、エラー修正／防止モジュール２１８は、コンピュータプログラムにおける中間変数の一部を入れ替える。別の実施形態において、エラー修正／防止モジュール２１８は、コンピュータプログラムの命令の一部を入れ替える。これらの入れ替えは静的でも動的でもよい。
【００４３】
別の実施形態において、エラー修正／防止モジュール２１８は、コンピュータシステム３０２Ａ、３０２Ｂのように２個以上のコンピュータシステムにおけるコンピュータプログラムの実行を調整する。この場合、第２コンピュータシステム３０２Ｂがコンピュータプログラムにおけるエラーを修正する間、第１コンピュータシステム３０２Ａにおけるエネルギー消費は、意図的なエラーの発生により最小化される。あるいは、第２コンピュータシステム３０２Ｂがコンピュータプログラムで利用されるデータのエラーを修正する間、第１コンピュータシステム３０２Ａのエネルギー消費は、意図的なエラーの発生により最小化される。別の実施形態において、エラー修正／防止モジュール２１８は、入力の統計的分析を通じてエラーを修正するように構成されている。
【００４４】
再び図２を参照するに、各実施形態によれば、システム分析モジュール２２０は、費用便益分析に基づいてどのエラーを許容するか（例：修正されないエラー）を選択し、設計モジュール２０６、製造モジュール２０８、実装モジュール２１０、およびその他関連モジュールの動作を分析して、コンピュータシステムの精度とエネルギー消費を推定するように構成することができる。システム分析モジュール２２０は、シミュレーション、エミュレーション、または実際の実行の３機能のうち一つを実行することによりエラー修正／防止モジュール２１８の結果を検証することができる。特に、システム分析モジュール２２０は、許容されたエラーによる悪影響を最小限にする満足なレベルまで、許容されたエラーが修正されたことを、検証することができる。
【００４５】
シミュレーションにより、適当なコンピュータシステム（例：パーソナルコンピュータ（「ＰＣ」）または複数のＰＣの集団）で実行されるプログラムを用いて、設計されたハードウェアの、高級言語で指定された動作を分析する。エミュレーションは、特注の再設定可能なハードウェア（例：フィールドプログラマブルゲートアレイ（「ＦＰＧＡ」））で実行されるプログラムを用いて、設計されたハードウェアの、高級言語で指定された動作を分析する。シミュレーションはエミュレーションに比べて使い勝手が良く、コストが安く、開発時間が短くて済む。しかし、実行速度はエミュレーションの方がはるかに速い。
【００４６】
各実施形態によれば、性能検証モジュール２２２は、コンピュータシステム上でコンピュータプログラムを実際に実行する間の推定精度および推定エネルギー消費を検証（validate）するように構成することができる。特に、性能検証モジュール２２２は、以前の評価を検証するために、コンピュータシステムの動作の実際の精度および実際のエネルギー消費を推定精度および推定エネルギー消費と比較することができる。
【００４７】
費用便益モジュール１０６を適用する具体例について以下に述べる。例えば（しかしこれに限定されない）、非常に小さい四次ＩＩＲフィルタのインスタンスを以下のように生成できる。
ｓ１＝Ｉｎ＋ｃ１＊ｓ１＠１＋ｃ２＊ｓ２＠１
ｓ２＝ｓ１＠１
Ｏｕｔ＝ｓ１＋ｃ３＊ｓ１＠１＋ｃ４＊ｓ２＠２
【００４８】
Ｎ次ＩＩＲフィルタは以下により与えられる。
【数１】
2010225140.tif 000003
【００４９】
更に、ＩＩＲバイクワッド（IIR biquad）に対する出力と入力の関係は以下により識別できる。ＩＩＲの様々な表現が当業者に知られており、これら他の表現も同様に用いてよい点を理解されたい。
Ｙｔ＝ａ０Ｘｔ＋ａ１Ｘｔ−１＋ａ２Ｘｔ−２＋Ｂ１Ｙｔ−１＋Ｂ２Ｙｔ−２
【００５０】
この演算は同期データフローを意味する。すなわち、計算は連続的に実行され、４サイクル目毎に、新規入力Ｉｎが受信されて新規出力Ｏｕｔおよび２個の新規な状態ｓ１、ｓ２が得られる。符号ｓ１＠１は、先の繰り返しにおいて生成されたｓの値を示す。この場合、変数「＠」を用いてＸ、ＹまたはＩｎ、Ｏｕｔ等の関連する添え字を置換する。例えば、ｔ−１、ｔ−２、．．．ｔ−ｋを含む方程式で、下付き添え字ｔを＠で置換することができる。従って、ｔ−１は＠１になり、ｔ−２は＠２になり、以下同様にｔ−ｋが＠ｋになる。計算の最初に３回繰り返した結果は以下の通りである。
ｓ１１＝Ｉｎ１＋ｃ１＊ｓ１０＋ｃ２＋ｓ２０
ｓ２１＝ｓ１０
０ｕｔ１＝ｓ１１＋ｃ３＋ｓ１０＋ｃ４＊ｓ２０
ｓ１２＝Ｉｎ２＋ｃ１＊ｓ１１＋ｃ２＊ｓ２１
ｓ２２＝ｓ１１
０ｕｔ２＝ｓ１１＋ｃ３＊ｓ１１＋ｃ４＊ｓ２１
ｓ１３＝Ｉｎ３＋ｃ１＊ｓ１２＋ｃ２＊ｓ２２
ｓ２３＝ｓ１２
Ｏｕｔ３＝ｓ１１＋ｃ３＊ｓ１２＋ｃ４＊ｓ２２
【００５１】
図示する例において、計算タスク分析モジュール２０２は、当該計算が定数との４回の乗算および４回の加算を含んでいることを識別できる。計算タスク分析モジュール２０２はまた、ｃ３およびｃ４との乗算を計算する際のエラーは、これらのエラーが出力にしか影響を及ぼさないため、より容易に修正されて許容できるものと結論付けるだろう。他の２回の乗算は、将来の出力全部に対して影響を及ぼす恐れがあるため、より有害であると考えられる。従って、ｃ１およびｃ２が小さければ、計算タスク分析モジュール２０２は、たとえ他の２回の乗算が誤って計算される場合が多くても、意図的に短いサイクル時間を導入することができる。これらのエラーは一般に、検出および修正が容易である。更に、乗算器は通常、加算よりもはるかに多くのエネルギーを消費するため、これらのエラーは相当のエネルギー量を節減できる。
【００５２】
データ分析モジュール２０４は、入力および状態の値が小さい限り、エネルギーを節約するために最悪ケースの分析が示すよりも速い乗算器を利用できる、と認識および判定できる。あるいは、データ分析モジュール２０４は、Ｉｎが非常に低い値である場合、当該の繰り返しを飛ばして次の繰り返しで出力、入力、状態を修正できる、と認識および判定できる。
【００５３】
設計モジュール２０６は、目標サイクル時間を達成するには遅過ぎる乗算器または加算器を生成する場合がある。特に、設計モジュール２０６は、エラーの確率、エラーを修正するコストを計算して、エネルギー効率を向上させるべく、意図的に加算器および乗算器内のいくつかの組合せ経路を非常に遅くするように設計することができる。実装モジュール２１０は、これらの経路が非常に遅くなり且つエネルギー効率を大いに高めるように経路上のゲートの大きさを設定することができる。あるいは、実装モジュール２１０は、これらの経路上のゲートに低電力の遅いゲートライブラリを用いることができる。製造モジュール２０８は、これらのゲートの近くに充填材を配置することができる。あるいは、製造モジュール２０８は、これらのゲート上ではいくつかの光学的修正動作を実行しないか、またはこれらのゲートを接続する配線上でクロストークを許容する場合がある。
【００５４】
集積回路は、製造時に化学機械的研磨（「ＣＭＰ」）を受ける場合がある。しかし、ある領域（例：配線）は金属部分が多く、他の領域は金属部分が少ない。この点に関して、ＣＭＰでは金属部分が少ない領域（すなわち柔らかい領域）でより多くの材料が除去されてしまう。この不都合を避けるために、いくつか領域に金属の細かいパターン（例：正方形）を加えて金属の分布をより均一にし、これによりＣＭＰの効果を増大させることができる。この処理を「充填」と呼ぶ。
【００５５】
命令生成モジュール２１２は、ユーザー、オペレーティングシステム、および／またはコンパイラに対しどのエラーが許容されるかを通知し、更にこれらのエラーを検出およぶ修正するコードを提供することができる。処理選択モジュール２１４は、各種のフィルタ構造を、それらのエネルギーコスト、および各種のエラーの組を許容することによるエネルギーコストの削減に対する適合性に関して、分析することができる。例えば、処理選択モジュール２１４は、そのような基準に従いＦＩＲフィルタを選択することができる。
【００５６】
コンパイルモジュール２１６は、プログラマブルプロセッサを対象にしてＩＩＲバイクワッドを実装することができる。例えば、コンパイルモジュール２１６は、演算におけるエラー修正の余裕時間を短縮するために、繰り返しの早い時点での修正を必要とする演算をスケジューリングできる。より具体的には、コンパイルモジュール２１６は、繰り返しの第１クロックサイクルにおいて遅い乗算器を割り当ててスケジューリングできる。エラー修正／防止モジュール２１８は、ｃ３およびｃ４との乗算の不正確な計算が修正されるように、変数の値を変更できる。あるいは、エラー修正／防止モジュール２１８は、変数ｓ１、ｓ２、およびＩｎの特定の値に対する変数Ｏｕｔの値を修正するために、変数Ｏｕｔが計算された後に別の加算器を追加してもよい。
【００５７】
システム分析モジュール２２０は、許容されたエラー、アーキテクチャ、実装、および修正の特定の組を選択し、これらの選択に基づいて、エネルギー消費および正確さに関してシステムを分析する。性能検証モジュール２２２は次いで、新規入力を適用して実際の省エネルギーを判定することができる。
【００５８】
図４は、いくつか実施形態による、コンピュータシステムにおいて意図的にエラーを許容してコンピュータシステムのエネルギー消費を最適化する例示的な処理を示すフロー図である。本明細書に記述する論理演算が（１）コンピュータに実装された一連の動作またはコンピュータシステムで実行されるプログラムモジュールおよび／または（２）コンピュータシステム内で相互に接続された機械論理回路または回路モジュールとして実装できる点を理解されたい。実装は、コンピュータシステムの性能その他の要件に依存する選択の問題である。従って、本明細書に記述する論理演算は、状態演算、構造化された機器（structural devices）、動作、またはモジュールとして様々に言及される。これらの演算、構造化された機器、動作、およびモジュールは、ソフトウェア、ファームウェア、専用デジタル論理、およびこれらの任意の組合せで実装することができる。実行する演算が、図示および本明細書に記述したものより多くても少なくてもよい点を理解されたい。これらの演算はまた、本明細書に記述したものとは異なる順序で実行してもよい。
【００５９】
ルーティン４００は演算４０２から始まり、計算タスク分析モジュール２０２は計算タスク分析を実行するように設定される。計算タスク分析とは、コンピュータプログラムを分析して、コンピュータシステムがコンピュータプログラムを実行する際に実行される演算、演算におけるエラー、および演算間のエラーの影響を決定することを指す。ルーティン４００は演算４０４へ進み、データ分析モジュール２０４がデータ分析を実行するように設定される。データ分析とは、所与の入力の組に基づいて、コンピュータシステムにより実行された際のコンピュータプログラムの動作および／またはコンピュータシステム自体の分析を指す。
【００６０】
ルーティン４００は演算４０６へ進み、設計モジュール２０６が、コンピュータシステムを設計する際に当該コンピュータシステムにおいて特定のエラーを容易に許容できるように、設計操作を選択して設定する。特に、設計モジュール２０６は、計算タスク分析モジュール２０２およびデータ分析モジュール２０４から提供された情報に基づいて設計操作を選択して設定することができる。ルーティン４００は演算４０８へ進み、製造モジュール２０８が、コンピュータシステムを製造する際に当該コンピュータシステムにおいて特定のエラーを容易に許容できるように、製造操作を選択して設定する。設計モジュール２０６と同様に、製造モジュール２０８は計算タスク分析モジュール２０２およびデータ分析モジュール２０４から提供された情報に基づいて製造操作を選択して設定することができる。ルーティン４００は演算４１０へ進み、実装モジュール２１０が、コンピュータシステムを実装する際に当該コンピュータシステムにおいて特定のエラーを容易に許容できるように、実装操作を選択して設定する。設計モジュール２０６および製造モジュール２０８と同様に、実装モジュール２１０は、計算タスク分析モジュール２０２およびデータ分析モジュール２０４から提供された情報に基づいて実装操作を選択して設定することができる。
【００６１】
ルーティン４００は演算４１２へ進み、命令生成モジュール２１２が、エラーの検出と共に修正または防止も行なうべく動作するコンピュータプログラム命令等の命令を生成する。特に、命令生成モジュール２１２は、許容されたエラーの検出と共に修正または防止する命令を生成することができる。これらの命令はエラー修正／防止モジュール２１８に提供されてよい。ルーティン４００は演算４１４へ進み、処理選択モジュール２１４が、費用便益分析に従い処理グループから適切な処理を選択する。
【００６２】
ルーティン４００は演算４１６へ進み、コンパイルモジュール２１６が、コンピュータシステムが実行するコンピュータプログラムをコンパイルするように設定される。特に、コンパイルモジュールは、コンピュータシステムにおける特定エラーの許容を容易にするように、コンピュータプログラムをコンパイルする。ルーティン４００は演算４１８へ進み、エラー修正／防止モジュール２１８が、命令生成モジュール２１２により生成された命令を実行することにより、コンピュータシステムの演算におけるエラーを検出して修正する。ルーティン４００は演算４２０へ進み、システム分析モジュール２２０が、許容されたエラーを選択して、許容されたエラーによるエネルギー消費および精度についてコンピュータシステムを分析する。複数の組の許容されたエラーを用いて、エネルギー消費と精度との最適な比率を決定することができる。ルーティン４００は演算４２２へ進み、性能検証モジュール２２２が、実際の入力を用いた際のエネルギー消費と精度との実際の比率を決定する。
【００６３】
図５は、本明細書に示す実施形態を実装可能なコンピュータシステムの、例示的なコンピュータハードウェアのアーキテクチャを示すコンピュータアーキテクチャ図である。図５は、プロセッサ５１０、メモリ５２０、および１個以上のドライブ５３０を含むコンピュータ５００を含んでいる。ドライブ５３０およびこれに伴うコンピュータ記憶媒体は、計算機可読な命令、データ構造、プログラムモジュール、およびコンピュータ５００用の他のデータを記憶する。ドライブ５３０は、オペレーティングシステム５４０、アプリケーションプログラム５５０、プログラムモジュール５６０、およびデータベース５８０を含んでいてよい。コンピュータ５００は更に、ユーザーがコマンドやデータを入力できるユーザー入力機器５９０を含んでいる。入力機器は、電子デジタイザ、マイクロホン、キーボード、および一般に、マウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイスを含んでいてよい。他の入力機器として、ジョイスティック、ゲームパッド、衛星アンテナ、スキャナ等が含まれていてよい。
【００６４】
これらおよび他の入力機器は、システムバスに結合されたユーザー入力インターフェースを介してプロセッサ５１０に接続することができ、あるいはパラレルポート、ゲームポートまたは汎用シリアルバス（「ＵＳＢ」）等の他のインターフェースおよびバス構造により接続することができる。コンピュータ５００等のコンピュータはまた、出力周辺装置インターフェース５９４等を介して接続可能なスピーカー等の他の周辺出力装置を含んでいてよい。
【００６５】
コンピュータ５００は、ネットワークインターフェース５９６に接続されたリモートコンピュータ等、１個以上のコンピュータへの論理的接続を用いて、ネットワーク化された環境で動作することができる。リモートコンピュータは、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスその他の一般的なネットワークノードであってよく、またコンピュータ５００に関連して上で述べた要素の多くまたは全てを含んでいてよい。ネットワーク環境は、オフィス、企業向けワイドエリアネットワーク（「ＷＡＮ」）、ローカルエリアネットワーク（「ＬＡＮ」）、イントラネット、およびインターネットにおいて一般的である。例えば、本出願の主題において、コンピュータ５００がデータが移送されるソースマシンを含み、リモートコンピュータが宛先マシンを含んでいてもよく、あるいはその逆であってもよい。しかし、ソースおよび宛先マシンは必ずしもネットワーク５０８または他の手段により接続されている必要はなく、その代わりに、ソースプラットフォームが書いて宛先プラットフォームまたはプラットフォーム群が読むことができる任意の媒体を介してデータを移送することができる点に注意されたい。ＬＡＮまたはＷＬＡＮネットワーク環境で使用される場合、コンピュータ５００はネットワークインターフェース５９６またはアダプタを介してＬＡＮに接続されている。ＷＡＮネットワーク環境で使用される場合、コンピュータ５００は通常、インターネットまたはネットワーク５０８等、ＷＡＮを介して通信を確立するモデムその他の手段を含んでいる。コンピュータ間で通信リンクを確立する他の手段を用いてもよい点を理解されたい。
【００６６】
いくつか実施形態によれば、コンピュータ５００は、本明細書の実施形態に従い、意図的にエラーを許容することによりエネルギーを最適化するように、プロセッサ５１０および／またはプログラムモジュール５６０が費用便益モジュール１０６と協同して、または費用便益モジュール１０６自体として動作可能なように、ネットワーク環境において接続されている。
【００６７】
本明細書に記述する主題は、コンピュータシステム上のオペレーティングシステムおよびアプリケーションプログラムの実行と協働して実行されるプログラムモジュールとして一般的文脈で提示されているが、他の種類のプログラムモジュールと組合せて他の実装方式を実行できることが当業者には理解されよう。一般に、プログラムモジュールはルーティン、プログラム、コンポーネント、データ構造、および特定のタスク作業を実行するかまたは特定の抽象データ型を実装する他の種類の構造体を含んでいる。更に、本明細書に記述する主題を、携帯機器、マルチプロセッサシステム、マイクロプロセッサ利用またはプログラム可能な家電製品、ミニコンピュータ、メインフレームコンピュータ等を含む他のコンピュータシステム構成により実施できることが当業者には理解されよう。
【００６８】
本開示は、各種の態様の例示を意図して本出願に記述する特定の実施形態に限定されない。当業者には明らかなように、その概念および範囲から逸脱することなく多くの変更や変型を行なうことができる。当業者には、本明細書で列挙したものに加え、本開示の範囲内にある機能的に等価な方法および装置が上の説明から明らかであろう。そのような変更や変型は、添付の請求項の範囲に包含されることを意図している。本開示は、添付の請求項と合わせて、そのような請求項に相当するあらゆる範囲の等価物の記述によってのみ限定されるものとする。本開示が特定の方法、試薬、化合物、組成、または生物系（当然これらは変わり得る）に限定されない点を理解されたい。本明細書で用いる用語は特定の実施形態だけを記述することを目的としており、限定を意図していない点もまた理解されたい。
【００６９】
本明細書における複数形および／または単数形の用語の実質的にあらゆる用例に関して、当業者は、文脈および／または用途に適するように複数形から単数計におよび／または単数形から複数形に翻訳することができる。本明細書において単数形／複数形が様々に入れ替えられているのは、明快さのためのである。
【００７０】
当業者には、一般に、本明細書および特に添付の請求項（例：添付の請求項の本体）で用いる用語は、一般に「開放的」用語（例：「含んでいる」は「含んでいるがこれに限定されない」と解釈すべきであり、「有する」は「少なくとも有する」と解釈すべきであり、「含む」は「含むがこれに限定されない」と解釈すべきである等）であることが理解されよう。当業者は更に、請求項内で特定の数の列挙を意図する場合、そのような意図は当該請求項内で明示的に列挙されており、そのような列挙が無い場合はそのような意図が存在しないものと理解されよう。わかりやすく言えば、例えば添付の請求項では、列挙を行なうために「少なくとも１個の」および「１個以上の」という導入句が使用されていてよい。しかし、そのような語句を使用したからといって、不定冠詞「ａ」または「ａｎ」による請求項の記述を用いた場合に、そのような記述を含む特定の請求項を、記述されたものを１個しか含んでいない実施形態に限定すると解釈すべきではなく、たとえ同じ請求項が導入句「１個以上の」または「少なくとも１個の」、および不定冠詞「ａ」または「ａｎ」を含む場合であってもそのように解釈すべきではない（例：「ａ」および／または「ａｎ」は「少なくとも１個の」または「１個以上の」を意味するものと解釈すべきである）。同じことが請求項の記述に用いる定冠詞の用法についても成り立つ。また、特定の数の請求項の記述が明示的に行なわれている場合でも、そのような記述が、少なくとも記述された数を意味するものと解釈すべきであることを当業者は理解されよう（例：他に修飾語が付いていない単に「２個の」という列挙は、少なくとも２個、または２個以上の列挙を意味する）。更に、「少なくともＡ、Ｂ、およびＣその他の１個」に類した表記が用いられる例では、一般にそのような構造は、当業者が当該表記を理解できるように意図されている（例：「少なくともＡ、Ｂ、およびＣの１個を有するシステム」が、Ａだけ、Ｂだけ、Ｃだけ、ＡとＢを共に、ＡとＣを共に、ＢとＣを共に、および／またはＡ、ＢおよびＣを共に、等を有するシステムを含むがこれに限定されない）。「少なくともＡ、ＢまたはＣ等の１個」に類した表記を用いる例では一般に、そのような構造は、当業者がその表記を理解できる意味を意図している（例：「少なくともＡ、Ｂ、またはＣを有するシステム」は、Ａだけ、Ｂだけ、Ｃだけ、ＡとＢを共に、ＡとＣを共に、ＢとＣを共に、および／またはＡ、ＢおよびＣを共に、等を有するシステムを含むがこれに限定されない）。当業者には更に、説明文、請求項、または図面のいずれも、実質的に任意の離接語（disjunctive word）および／または２個以上の代替的な項目を表す語句が、一つの項目、いずれかの項目、または両方の項目を含む可能性を考慮していることを理解されよう。例えば、「ＡまたはＢ」という語句は、「Ａ」または「Ｂ」あるいは「ＡおよびＢ」の可能性を含んでいるものと理解されたい。
【００７１】
また、本開示の特徴または態様がマーカッシュグループとして記述されている場合、当業者には本開示が、マーカッシュグループの任意の個々のメンバーまたはメンバーのサブグループに関して記述されていることが認識されよう。
【００７２】
当業者には理解されるように、文書化された記述を提供する場合等、あらゆる目的のために、本明細書に開示する全ての範囲が、任意の可能な部分的範囲およびそれら部分的範囲の組合せをも含んでいる。任意の列挙された範囲は、同範囲が少なくとも同等の半分、三分の一、四分の一、五分の一、十分の一、その他に細分化された状態を十分に記述および許容していることを容易に認識することができる。非限定的な例として、本明細書で議論する範囲を下位三分の一、中央の三分の一、および上位三分の一、等に容易に分割できる。また当業者に理解されるように。「まで」、「少なくとも」、「より大きい」、「より少ない」当の語句は、言及された数を含んでいて、上述のように後で部分的な範囲に分割可能な範囲を指している。最後に、当業者には理解されるように、ある範囲は個々のメンバーを含んでいる。従って、例えば、１〜３個のセルを有するグループは、１、２、または３個のセルを有するグループを指している。同様に、１〜５個のセルを有するグループは、１、２、３、４、または５個のセルを有するグループを指す。
【００７３】
本明細書において各種の態様および実施形態を開示しているが、他の態様および実施形態も当業者には明らかであろう。本明細書に開示する各種の態様および実施形態は、説明目的であって限定の意図はなく、その真の範囲および概念は以下の請求項により示される。
【図１】
2010225140.tif 000004
【図２】
2010225140.tif 000005
【図３】
2010225140.tif 000006
【図４】
2010225140.tif 000007
【図５】
2010225140.tif 000008
【外国語明細書】
2010225140000001.pdf