(57)【要約】【課題】  ハードウェアカスタマイゼーション及びエネルギー最適化のためのプログラム及びデータアノテーションを提供する。【解決手段】  アノテーションが付されるべきコードブロックが検査され、ハードウェアカスタマイゼーションは、エネルギー消費を低減してコードブロックを実行するための特定のサービス品質をサポートするよう決定される。アノテーションは、決定されたハードウェアカスタマイゼーションと関連付けられるよう決定される。アノテーションは、コードブロックの実行中、ハードウェアカスタマイゼーションの使用を示すよう設けられる。コードブロックの検査は、記号分析の実施、コードブロック実行の経験的観察の実施、統計的分析の実施又はこれらの組み合わせを含む。アノテーションが付されるべきデータブロックも検査される。データブロックと関連付けられる１つ以上の追加的アノテーションは決定されうる。【選択図】  図１
2010257445.tif 000002
【特許請求の範囲】
【請求項１】
コードブロックの実行において使用するための、ターゲットシステムに対するアノテーションの提供方法であって、
アノテーションが付されるべき前記コードブロックを検査することと、
エネルギー消費を低減させて行う前記コードブロックの実行のための特定のサービス品質をサポートするためにハードウェアカスタマイゼーションを同定することと、
前記同定されたハードウェアカスタマイゼーションに関連付けられる１つ以上のアノテーションを決定することと、
前記同定されたハードウェアカスタマイゼーションを使用して、前記ターゲットシステムに前記コードブロックを実行させるために決定された１つ以上のアノテーションを前記ターゲットシステムに提供することと、
を含む方法。
【請求項２】
請求項１に記載の方法であって、アノテーションを付すべきデータブロックを検査することと、前記データブロックと関連付けられる１つ以上のアノテーションを決定することをさらに含む方法。
【請求項３】
請求項１に記載の方法であって、前記ハードウェアカスタマイゼーションがマルチプロセッサ内の特定のプロセッサコアを特定することを含む方法。
【請求項４】
請求項１に記載の方法であって、前記ハードウェアカスタマイゼーションがキャッシュ置き換えポリシーを特定することを含む方法。
【請求項５】
請求項１に記載の方法であって、前記ハードウェアカスタマイゼーションがメモリブロックのゲーティングを含む方法。
【請求項６】
請求項１に記載の方法であって、前記コードブロックの検査が記号分析の実施を含む方法。
【請求項７】
請求項１に記載の方法であって、前記コードブロックの検査が前記コードブロックの実行の経験的観察の実施を含む方法。
【請求項８】
請求項１に記載の方法であって、前記コードブロックの検査が統計的分析の実施を含む方法。
【請求項９】
アノテーションを適用する方法であって、
処理されるデータと関連付けられたハードウェアカスタマイゼーションを特定するアノテーションを受取ることと、
前記受け取られたアノテーションからの前記特定されたハードウェアカスタマイゼーションを使用する前記データを処理することと、
前記特定されたハードウェアカスタマイゼーションの使用を通して、前記データを処理するために使用されるエネルギーを低減させることと、
を含む方法。
【請求項１０】
請求項９に記載の方法であって、前記ハードウェアカスタマイゼーションが適応できる方法。
【請求項１１】
請求項９に記載の方法であって、前記受取ったアノテーションのユーザーオーバーライドをサポートすることをさらに含む方法。
【請求項１２】
請求項９に記載の方法であって、前記アノテーションをピアシステムに伝送することをさらに含む方法。
【請求項１３】
請求項９に記載の方法であって、前記受取ったアノテーションを動的に適応することをさらに含む方法。
【請求項１４】
請求項９に記載の方法であって、前記受取ったアノテーションの環境的適応をサポートするためセンサーデータを収集することをさらに含む方法。
【請求項１５】
コンピュータ実行可能な命令を保持するコンピュータ記憶媒体であって、
コンピュータシステムにより実行された場合、コンピュータシステムに、
処理されるデータと関連付けられるハードウェアカスタマイゼーションを特定するアノテーションを受取らせ、
受取ったアノテーションからの特定されたハードウェアカスタマイゼーションを使用する前記データを処理させ、
特定ハードウェアカスタマイゼーションの使用を通して前記データを処理するために使用されうるエネルギーを低減させる、
コンピュータ記憶媒体。
【請求項１６】
請求項１５に記載のコンピュータ記憶媒体であって、前記ハードウェアカスタマイゼーションがマルチプロセッサ内の特定のプロセッサコアを特定することを含むコンピュータ記憶媒体。
【請求項１７】
請求項１５に記載のコンピュータ記憶媒体であって、前記ハードウェアカスタマイゼーションが前記コンピュータシステム内の使用されていないメモリブロックのゲーティングを含むコンピュータ記憶媒体。
【請求項１８】
請求項１５に記載のコンピュータ記憶媒体であって、前記ハードウェアカスタマイゼーションが前記コンピュータシステムと関連づけられた供給電圧を変更することを含むコンピュータ記憶媒体。
【請求項１９】
請求項１５に記載のコンピュータ記憶媒体であって、前記コンピュータ実行可能な命令がさらに、前記コンピュータシステムにピアシステムからのアノテーションを受取らせるように動作可能であるコンピュータ記憶媒体。
【請求項２０】
請求項１５に記載のコンピュータ記憶媒体であって、前記コンピュータ実行可能な命令がさらに、前記コンピュータシステムに自己アノテーションをサポートさせるように動作可能であるコンピュータ記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
背景
[0001]  プログラムモジュール、データ及びコンテントは、有線又は無線システムを介してターゲットシステムに配信されうる。ターゲットシステムにおいて、プログラムは実行され、データは処理されうる。ターゲットシステムは、ターゲットシステムの態様に応じて異なってプログラム及びデータを取り扱いうる。高精細ホームシアターシステムは、携帯電話機とは全く異なってビデオを描画するだろう。多様なターゲットシステムは、複数のプロセッサ、処理回路、特定用途向け回路、又はモジュールを採用しうる。このようなターゲットシステムはまた、その多様な回路、モジュール、メモリ、その他の関連リソースに関して再構成可能でもありうる。特定のターゲットシステムの適切な構成又は動作は、各特定のターゲットシステムにおけるエネルギー消費の著しい改善をサポートしうる。本明細書中になされた開示が示すのは、これらの考察及びその他についてである。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
（原文の該当箇所に記載なし）
【課題を解決するための手段】
【０００３】
（原文の該当箇所に記載なし）
【図面の簡単な説明】
【０００４】
[0002]  主題は、本明細書の帰結部において特定され、かつ、明確にクレームされる。本開示の前述の特徴及びその他の特徴は、以下の記載及び添付の請求の範囲並びに添付の図面からより十分に明らかになるであろう。図面は、本開示に従ういくつかの実施形態のみを示すものであり、それゆえその範囲を限定するものとみなされない。本開示は、添付の図面を用いてさらなる具体性と詳細さをもって説明される。
【０００５】
[0003]  図面において：
【図１】図１は、ハードウェアカスタマイゼーション及びエネルギー最適化のためのプログラム及びデータアノテーションをサポートするよう動作可能なコンピュータアーキテクチャ及び環境を示すブロック図である。
【図２】図２は、コード及びデータにアノテーションを生成し、分散しかつ適用するためのシステムを示すブロック図である。
【図３】図３は、プログラム及びデータアノテーションを生成するプロセスを示すフロー図である。
【図４】図４は、プログラム及びデータアノテーションを適用するプロセスを示すフロー図であり、全ては本開示の少なくともいくつかの実施形態に従うよう構成されている。
【発明を実施するための形態】
【０００６】
[0004]  以下の詳細な説明において、本明細書の一部をなす添付の図面を参照する。図面では、文脈が別途指示しない限り、同様の符号は通常、同様の構成要素を示す。詳細な説明、図面及び請求の範囲に記載される例示的な実施形態は、限定的であるようには意図されていない。本明細書に提示されている主題の精神又は範囲から逸脱することなく、他の実施形態が使用されてよく、また、他の変更がなされてもよい。本明細書において一般的に記載されかつ図示される本開示の態様が、多岐にわたる構成で配置され、置き換えられ、組合され、かつ設計されることができ、それらの全てが明確に意図されているということが容易に理解されるだろう。
【０００７】
[0005]  以下の開示は、とりわけ、ハードウェアカスタマイゼーション及びエネルギー最適化のためのプログラム及びデータ注釈（data annotation）の技術に関する方法、装置、システム及びコンピュータプログラム製品に関する。本明細書中に提示される技術及び概念の使用により、アノテーションの作成及び普及は、ソフトウェア又はハードウェアのセットアップという点で、特定のプログラムがどのように実行されるべきかを導くことができる。アノテーションは、アプリケーション、システム、ソフトウェア又はハードウェアの静的又は動的カスタマイゼーションを使用するコンピューティングシステムの適応カスタマイゼーションをサポートすることができる。そのようなカスタマイゼーションは、特定のデータが、ビット幅、供給電圧、しきい電圧及びキャッシュライン置き換えポリシーなどのパラメータという点でどのように処理されるかに影響しうる。カスタマイゼーションは、エネルギー消費を低減する一方で、特定のサービス品質をサポートするために実施されうる。図面を参照しながら、ハードウェアカスタマイゼーション及びエネルギー最適化のためのアノテーションの態様をこれから記述する。また図面において同様の符号は同様の構成要素を表す。
【０００８】
[0006]  ハードウェアカスタマイゼーション及びエネルギー最適化のためのプログラム及びデータアノテーションをサポートするため、技術は本明細書中では一般的に記述されている。アノテーションが付されるコードブロックが検査されうる。ハードウェアカスタマイゼーションは、エネルギー消費を低減してコードブロックを実行するための特定のサービス品質をサポートするよう決定されうる。１つ以上のアノテーションが決定されうる。これらのアノテーションは、決定されたハードウェアカスタマイゼーションと関連付けられうる。ターゲットシステムへのアノテーションの１つは、コードブロックを実行する間に、ハードウェアカスタマイゼーションの使用を示すよう設けられうる。アノテーションされるデータブロックが検査されうる。データブロックと関連付けられるべき１つ以上の追加的なアノテーションが決定されうる。
【０００９】
[0007]  ハードウェアカスタマイゼーションの例は、他の例のなかでも、マルチプロセッサ内の特定のプロセッサコアの特定、キャッシュ置き換えポリシーの特定及びメモリブロックのゲーティングを含みうる。コードブロックの検査は、記号分析の遂行、コードブロックの実行の経験的観察の遂行、統計的分析の遂行又はこれらの組み合わせを含むことができる。
【００１０】
[0008]  図１は、本開示の少なくともいくつかの実施形態に従い構成された、ハードウェアカスタマイゼーション及びエネルギー最適化のための、プログラム及びデータアノテーションをサポートするよう動作可能なコンピューティングアーキテクチャ１００及び環境を示すブロック図である。コンピューティングアーキテクチャ１００は、コア１乃至コア４といった複数のプロセッサコア１１０Ａ−１１０Ｄを含みうる。これらは、総称して又は一般にプロセッサコア１１０と呼ばれうる。複数のプロセッサコア１１０は、一般に並列処理、並列タスク、並列スレッド、個別逐次処理又はこれらの組み合わせをサポートしうる。「マルチプロセッサ」及び「マルチコアプロセッサ」という用語は、プロセッサコア１１０の群及び関連回路に関して本明細書において置き換え可能に用いられる。コンピューティングアーキテクチャ１００は、あらゆる数のプロセッサコア１１０をサポートしうる。コンピューティングアーキテクチャ１００は、単一の中央処理装置（ＣＰＵ）を代替的に含みうる。
【００１１】
[0009]  プロセッサコア１１０に加えて、コンピューティングアーキテクチャ１００は、１つ以上のデジタル信号処理（ＤＳＰ）コア、又はビデオデコーディング、レンダリング、通信、人工神経ネットワークといった特化した機能を取り扱うための１つ以上の特定用途向けコア１２０をサポートしうる。プロセッサコア１１０、特定用途向けコア１２０及びコンピューティングアーキテクチャ１００内のその他の処理装置は、離散プロセッサ若しくはマイクロコントローラ、マルチプロセッサに統合された複数のコア、又は１つ以上の特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、その他のプログラマブルロジックデバイス（ＰＬＤ）、チップ上のシステム、基板上のシステム、その他のハードウェア統合技術に統合されたコア又はこれらの組み合わせを使用しながら実施されうる。
【００１２】
[0010]  システムバス１１８は、コンピューティングアーキテクチャ１００のプロセッサコア１１０を相互に接続しうる。システムバス１１８はまた、コンピューティングアーキテクチャ１００の他の要素をプロセッサコア１１０に相互に接続させうる。メモリ１４０は、システムバス１１８に接続されうる。メモリ１４０は、プロセッサコア１１０によってアクセスされうる。プロセッサコア１１０は、メモリ１４０から読出しができ、またメモリ１４０に書込みうる。このような読出し及び書込みは、複数のプロセッサコア１１０の動作に関連付けられた命令及びデータの両方に関しうる。メモリ１４０は、ランダムアクセスメモリ１４２（ＲＡＭ）及び読み出し専用メモリ１４４（ＲＯＭ）を含みうる。メモリ１４０は、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ又はあらゆる種類の揮発性又は不揮発性メモリを含みうる。
【００１３】
[0011]  複数のプロセッサコア１１０のそれぞれは、キャッシュ１乃至キャッシュ４といった、キャッシュ１１５Ａ−１１５Ｄと関連付けられうる。これらは総称して又は一般にキャッシュ１１５と呼ばれうる。キャッシュ１１５の１つなどのキャッシュは、小さな高速メモリでありうる。キャッシュ１１５は、１つ以上のプロセッサコア１１０による高速アクセスのために、頻繁に使用されるか、最近使用されたか、又はやがて使用されうるメモリブロックを記憶することができる。キャッシュ１１５は、メモリ１４０へのアクセスに関連付けられた待ち時間を緩和しうる。キャッシュ１１５は、プロセッサコア１１０のそれぞれに１つ提供されうる一方で、キャッシュ１１５は２つ以上のプロセッサコア１１０の間で共有されてもよい。
【００１４】
[0012]  コンピューティングアーキテクチャ１００は、ネットワーク１３２を介して遠隔システムへの論理接続を使用するネットワーク化された環境において動作しうる。コンピューティングアーキテクチャ１００は、ネットワークインターフェースユニット１３０を介してネットワーク１３２に接続しうる。ネットワークインターフェースユニット１３０は、システムバス１１８を介してコンピューティングアーキテクチャ１００に接続されうる。ネットワークインターフェースユニット１３０はまた、他の種類のネットワーク及び遠隔コンピュータシステムに接続するために使用されうる。コンピューティングアーキテクチャ１００は、キーボード、マウス又は電気スタイラス（図示せず）を含む多数の他のデバイスからの入力の受け取り及び処理のために、入力／出力コントローラ１３５も含みうる。同様に、入力／出力コントローラ１３５は、ビデオディスプレイ、プリンタ又は他の種類の出力デバイス（図示せず）への出力を提供しうる。
【００１５】
[0013]  コンピューティングアーキテクチャ１００は、プログラム及びハードウェアカスタマイゼーション及びエネルギー最適化のためのデータアノテーションに関連するオペレーティングシステム１５２、ソフトウェア、データ及び多様なプログラムモジュールを記憶するために記憶装置１５０を含みうる。プロセッサコア１１０上の動作に関連付けられた命令及びデータは、記憶装置１５０において記憶されうる。記憶装置１５０は、情報の不揮発性記憶装置をサポートするコンピュータ可読媒体を含みうる。記憶装置１５０は、複数のプロセッサコア１１０によってアクセスされうる。記憶装置１５０は、プロセッサコア１１０又は特定用途向けコア１２０における実行のためにソフトウェアモジュールを記憶することができる。
【００１６】
[0014]  記憶装置１５０は、限定的ではなく例として、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータなどの情報を記憶するための方法又は技術に実装された揮発性、不揮発性、取り外し可能及び取り外し不能な媒体を備えうる。例えば、記憶装置１５０及び関連するコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＲＰＲＯＭ，ＥＥＰＲＯＭ、フラッシュメモリ、他の固体記憶装置技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、ＨＤ−ＤＶＤ，ＢＬＵ−ＲＡＹ、他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、他の磁気記憶装置、又は情報を記憶するために使用され、コンピューティングアーキテクチャ１００によりアクセスされうる他の媒体を含みうる。記憶装置１５０は、記憶装置コントローラ（図示せず）を介してシステムバス１１０に接続されうる。
【００１７】
[0015]  多数のプログラムモジュール又はデータファイルは、記憶装置１５０及びメモリ１４０に記憶されうる。これらは、デスクトップ、ラップトップ、サーバーコンピュータ、組み込みコンピューティングシステム、無線コンピューティングデバイス、又は他のコンピューティング環境の動作の制御に好適なオペレーティングシステム１５２を含みうる。
【００１８】
[0016]  実行可能なコード１６０の１つ以上の例もまた、記憶装置１５０において記憶されうる。コード１６０は、コードアノテーション１７０Ａを含みうる。同様にデータ１６５の１つ以上の例は、記憶装置１５０と関連して記憶されうる。データ１６５は、データアノテーション１７０Ｂを含みうる。コードアノテーション１７０Ａ及びデータアノテーション１７０Ｂは、本開示に従い配置されたコンピューティングシステムにおけるコード又はデータと関連付けられうるアノテーション１７０の例である。アノテーション１７０は、アノテーションが付されたコード１６０が実行されるか又はアノテーションが付されたデータ１６５が処理される、ターゲットコンピューティングシステムの選択的カスタマイゼーションをサポートする情報を提供しうる。アノテーション１７０はまた、特定のシステム又は環境パラメータという点について、特定のデータ１６５がいかに処理されるか、又はコード１６０がいかに実行されるかを提案する。
【００１９】
[0017]  アノテーション１７０と関連付けられたシステムパラメータは、非限定的な例として、データのビット幅、供給電圧、しきい電圧、キャッシュライン置き換えポリシーなどを含みうる。アノテーション１７０及びシステムパラメータは、特定のサービス品質（ＱｏＳ）レベルが維持されるようにターゲットコンピューティングシステムの動作をサポートしうる。ＱｏＳレベルはエネルギー消費が低減されたか又は最少にされた場合であっても維持されうる。ターゲットコンピューティングシステムの適応カスタマイゼーションは、分岐予測パラメータ、メモリブロックゲーティング、キャッシュゲーティング、ＡＳＩＣ内ブロックゲーティング、ＦＰＧＡ内ブロックゲーティング、プロセッサコア１１０のゲーティング、電圧設定、実時間制約、協調実行及び製造変数軽減を含みうる。ブロックゲーティング及び再構築可能なデバイスなどの適応アーキテクチャ技術は、コード１６０又はデータ１６５内に備えられたアノテーション１７０を活用しうる。
【００２０】
[0018]  アノテーション生成モジュール１８０は、本開示に従い、コード１６０又はデータ１６５のブロックにアノテーション１７０を提供しうる。アノテーション１７０は、記号分析、観察された実行、統計的評価又はこれらの組み合わせを使用して算出されうる。アノテーション１７０の生成は、実行のためのターゲットと同じ種類のプロセッサ上か又は別の種類の単一の若しくはマルチプロセッサコンピューティングシステム上で発生しうる。アノテーション１７０は、特定サービス品質（ＱｏＳ）のレベルを確実にするために算出されうる。ＱｏＳ仕様は、ユーザーにより予め決められるか、又は、データ若しくはシステムパラメータに基づき予め決められうる。ＱｏＳレベルに関連するアノテーション１７０は、誤差ノルム（error norms）、質の統計的測定又は主観的基準を使用して特定される。ＱｏＳ仕様を維持する一方で、エネルギー消費又はメモリフットプリントのような他のターゲット目標もサポートされうる。
【００２１】
[0019]  アノテーション１７０は、プログラマブルプロセッサ、特定用途向けコア又はＦＰＧＡコンポーネントに関する動作パラメータも含みうる。アノテーション１７０に関連付けられた動作パラメータは、ゲーティング方式、分岐予測方針、プロセッサ命令、供給電圧、バイアス電圧、ビット幅、機能ユニット、及びメモリ構成などの多様なシステム構成を含みうる。アノテーション１７０は、バスなどの相互接続コンポーネントがいかに構成されうるかも特定しうる。
【００２２】
[0020]  アノテーション１７０は、オペレーティングシステム１５２、スケジューラ、メモリ管理、装置管理、ネットワーキング、コンパイラ、ローダ及びモニターなどのシステムソフトウェアの設定又は構成も特定しうる。アノテーション１７０はまた、いずれのソフトウェアがインストールされているか、そのソフトウェアがいかに構成されているか又はそのソフトウェアがいかに実行されるかも特定しうる。
【００２３】
[0021]  アノテーション１７０はまた、アノテーション生成モジュール１８０による作成時に圧縮されうる。この圧縮は、アノテーション１７０の伝達及び記憶に関するエネルギー及び資源の消費の低減をサポートする。アノテーション１７０は、クリティカルパス動作又は頻繁に繰り返される動作などの、実行されたコード１６０の高インパクトの部分に選択的に適用されうる。コード１６０の１ブロックからのアノテーション１７０は、同様の計算タスクのプロファイルを実行するコード１６０の別のブロックへのアノテーション１７０を提供するために再使用されうる。
【００２４】
[0022]  アノテーション生成モジュール１８０によって、アノテーション１７０が提供されると、アノテーション１７０は、関連付けられたコード１６０又はデータ１６５とともに分散されうる。アノテーション１７０はまた、関連付けられたコード１６０又はデータ１６５とは別に伝送されてもよい。アノテーション１７０は、本開示に従って、アノテーション１７０がターゲットシステムに適用される、アノテーションターゲットモジュール１９０に伝送されうる。ターゲットシステムは、コード１６０の実行の場であるか、又は、データ１６５が処理される場でありうる。例えば、グラフィック画像又はビデオの解像度、ビットレート又は色深度は、提供されたアノテーション１７０に応じて調整されうる。グラフィック画像又はビデオのビット割り当ての調整は、エネルギー消費の低減をサポートしうる。エネルギー消費の低減は、特定のＱｏＳレベルを維持しながらも起こりうる。
【００２５】
[0023]  アノテーション１７０はまた、プロセッサコア１１０がコード１６０のいずれの部分を実行するべきかを示しうる。アノテーション１７０はまた、いずれの分岐予測器がプロセッサコア１１０内で使用されるべきかを特定しうる。アノテーション１７０はまた、プロセッサコア１１０、特定用途向けコア１２０又はコンピューティングアーキテクチャ１００の他の構成要素の一部を、選択的に有効及び無効にするためのゲーティングアクションを特定しうる。例えば、コンピュータアーキテクチャ１００の部分は、関連付けられたコードアノテーション１７０Ａが示すとおりに、コード１６０の一部によって必要とされていない間、その電源がゲートオフされるか、クロック源がゲートオフされるか、リセットされるか、又は、低電力状態にされうる。供給電圧及びしきい電圧もまた、アノテーションによって特定されうる。例えば、コード１６０の需要が低い部分又はデータ１６５の複雑さが減少された部分において、プロセッサコア１１０、特定用途向けコア１２０又は他の構成要素への供給電圧は消費電力の低減をサポートするために低下されうる。
【００２６】
[0024]  アノテーション１７０はまた、いずれの特定用途向けコア１２０が使用されるべきか、またいつ使用されるべきかを示しうる。これは、使用されていない特定用途向けコア１２０をゲートオフすることを含みうる。これはまた、コード１６０又はデータ１６５の特定の部分に対して、特定の特定用途向けコア１２０を提案することも含みうる。アノテーション１７０は、使用されるべきメモリ構造、特定のデータ１６５を記憶すべきメモリ内の場所、メモリ供給電圧、キャッシュ１１５の置き換えポリシー、及びメモリ又はストレージスクラッチパッドの編成などのメモリパラメータも示しうる。
【００２７】
[0025]  コンピューティングアーキテクチャ１００内の動作の他の態様は、アノテーション１７０によって特定されうる。例えば、プロセサコア１１０間、キャッシュ１１５間又はネットワーク１３２に関するデータの通信パターンは、アノテーション１７０によって提案されうる。具体的なメディア又はコンテンツプレーヤーがアノテーション１７０によって提案されうる。特定の温度管理方針もまたアノテーション１７０によって提案されうる。
【００２８】
[0026]  アノテーション１７０は静的又は動的でありうる。動的なアノテーション１７０は、データ１６５、プロセッサコア１１０で実行されている他のプログラム、又はコンピューティングアーキテクチャ１００に関連した他の状態情報の関数として動作しうる。例えば、動的なアノテーション１７０は、利用可能エネルギー、利用可能メモリ、又は利用可能記憶容量の関数として変化しうる。アノテーション１７０は、デバイスのクラスの総称でありうるか、又はアノテーション１７０は、デバイスの特定のインスタントに特有でありうる。例えば、特有のアノテーション１７０は、コンピューティングアーキテクチャ１００内の特定のデバイスに関するシリコン製造変数の影響について対処しうる。同様に、エネルギー消費の考察は、製造の変動性に起因して、特定の構成要素に対する特有のゲートサイズ又はトランジスタサイズを含みうる。アノテーション１７０の指定はまた、コンピュータアーキテクチャ１００内の特定のターゲット構成要素に関する他の製造及びエージング要因を利用しうる。
【００２９】
[0027]  マルチプロセッサシステム内において、アノテーション１７０は、複数の利用可能なプロセッサコア１１０のうちから、好ましいプロセッサコア１１０を特定しうる。かかる選択は、特定のプロセッサコア１１０が、例えば、グラフィクス処理機能などの特定の機能性を有している場合に、とりわけ適切でありうる。プロセッサコア１１０が同一の種類である場合、アノテーション１７０は、プロセッサコア１１０で実行されている他のタスク、又は、温度、関連キャッシュ１１５の状態若しくはコンテキスト切替え時間などのパラメータという点で、好ましいプロセッサコア１１０を示すために使用されうる。
【００３０】
[0028]  アノテーション１７０はまた、再構築可能なプラットフォームの構成も示しうる。これらの構成は、特定の計算オペレーションについてのエネルギー消費の低減をサポートするために特定されうる。アノテーション１７０の設定は、アノテーション１７０を伝達するためのエネルギー及び関連付けられた計算を実行するために消費されるエネルギーの総量を低減又は最小化するよう試みうる。
【００３１】
[0029]  図２は、本開示の少なくともいくつかの実施形態に従って、コード１６０及びデータ１６５にアノテーション１７０を生成し、分散しかつ適用するためのシステム２００を示すブロック図である。コードアノテーティングシステム２１０は、コード１６０のブロックに、コードアノテーション１７０Ａを適用するために、アノテーション生成モジュール１８０の動作をサポートしうる。アノテーション生成モジュール１８０は、いずれのアノテーション１７０がコード１６０に関連付けられるべきかを決定するために、コード１６０を分析しうる。コード１６０及びその関連アノテーション１７０Ａは、アノテーション１７０Ａが適用されかつコード１６０が実行されるターゲットシステム２３０に分散されうる。
【００３２】
[0030]  コードアノテーティングシステム２１０においてアノテーション生成モジュール１８０によって実施された分析は、ターゲットシステム２３０へ分散される前か、コード１６５がターゲットシステム２３０へ引渡し準備がされたときと同時か、又はほとんど同時にオフラインで行われうる。コードアノテーティングシステム２１０及びターゲットシステム２３０は、コンピューティングアーキテクチャ１００と同一の種類であってもよいし、コンピューティングアーキテクチャ１００と異なる種類であってもよい。コードアノテーティングシステム２１０及びターゲットシステム２３０が、コンピューティングアーキテクチャ１００と異なる種類である場合、コードアノテーティングシステム２１０は、アノテーション１７０を決定する間、ターゲットシステム２３０についての情報を使用しうる。例えば、コードアノテーティングシステム２１０がアプリケーションサーバーであって、ターゲットシステムが携帯電話機である場合、コードアノテーティングシステム２１０は、ターゲットシステム２３０のプロセッサ、ディスプレイ解像度、メモリ制限又は電力容量を考慮して、コード１６０に関するアノテーション１７０を生成しうる。
【００３３】
[0031]  データアノテーティングシステム２２０は、データアノテーション１７０Ｂをデータ１６５のブロックに適用するために、アノテーション生成モジュール１８０の動作をサポートしうる。アノテーション生成モジュール１８０は、いずれのアノテーション１７０がデータ１６５と関連付けられるべきかを決定するために、データ１６５を分析しうる。続いて、データ１６５及びその関連するアノテーション１７０Ｂは、アノテーション１７０Ｂが適用されるターゲットシステム２３０及びデータ１６５が処理されるシステムに分散されうる。例えば、データ１６５は、データを処理する間に使用されるビット幅、ビットレート又はビット解像度を示すためにアノテーションが付されうる。これらのビット解像度は、区間演算又はアフィン演算を使用して決定されうる。アノテーション１７０を構築するために決定された情報は、シミュレーション、統計的分析又は統計的分析により増強されたシミュレーションを使用して算出されうる。データ１６５を評価することは、解空間の直接サーチを含みうる。アノテーション１７０を構築することは、同一又は同様の計算構造に関して構築された従前のアノテーション１７０を利用しうる。
【００３４】
[0032]  データ１６５及びその関連するアノテーション１７０Ｂは、データアノテーティングシステム２２０からターゲットシステム２３０へ分散されうる。同様に、コード１６０及びその関連アノテーション１７０Ａは、コードアノテーティングシステム２１０からターゲットシステム２３０へ分散されうる。ターゲットシステムにおいて、アノテーションターゲットモジュール１９０が、コード１６０の実行、データ１６５の処理又はその両方を行う間、アノテーションをターゲットシステム２３０へ適用しうる。アノテーション１７０はその使用中、静的なままでありうるし、又は、アノテーションは動的でありうる。動的なアノテーション１７０は、コード１６０が実行されるか又はデータ１６５が処理される時に、ターゲットシステム２３０において変化しうる。例えば、アノテーション１７０は、入力データ、中間媒介変数又は出力データに関して、データに依存しうる。動的なアノテーション１７０は、ターゲットシステム２３０の状態情報を提供する１つ以上のシステムパラメータ２３２に基づき多様に変化しうる。これらのシステムパラメータは、利用可能エネルギー、記憶容量又はメモリ容量を含みうる。同様に、動的なアノテーション１７０は、センサー２３４から得られた１つ以上の数値に基づき多様に変化しうる。センサー２３４からのこれらの数値は、温度データ、位置データ、エネルギー条件、ソフトエラー率、無線チャネル特性、ネットワークリンク条件などを含みうる。動的なアノテーション１７０は、ターゲットシステム２３０においてアノテーションが付された計算と同時に実行される他のタスクに関して、多様に変化しうる。
【００３５】
[0033]  ２つ以上の計算タスクに関するアノテーション１７０は、全体的な目的が達成されるよう統合されうる。例えば、各計算タスクに関するアノテーション１７０は、所定のエネルギー量又はＱｏＳ２３６の目標レベルについてのパレート最適解を使用して提示されうる。例えば、ＱｏＳ２３６が維持され、実時間制約が満たされ、かつエネルギー消費が低減又は最小化されるように、供給電圧及びしきい電圧は調整されうる。ＱｏＳ２３６は、コード１６０又はデータ１６５とともにターゲットシステム２３０に提供されうる。ＱｏＳ２３６はまた、ターゲットシステム２３０により決定されうる。ＱｏＳ２３６は、ターゲットシステム２３０におけるユーザーによって特定されうる。ターゲットシステム２３０におけるユーザーは、アノテーション１７０の部分的又は完全なマニュアルオーバーライディングの選択肢を提供されうる。コードアノテーティングシステム２１０及びデータアノテーティングシステム２２０から、アノテーション１７０を受取るのに加えて、ターゲットシステム２３０はまた、自己のアノテーションも生成しうる。ターゲットシステム２３０におけるアノテーションの生成は、自己アノテーションと呼ばれうる。
【００３６】
[0034]  ピアシステム（peer system）２４０は、ターゲットシステム２３０のもう１つの実例であると考えられうる。ピアシステム２４０は、そのコード１６０、データ１６５、アノテーション１７０又はこれらの組み合わせを、ピアシステム２４０のピアであると考えられうるターゲットシステム２３０から受取りうる。ピアシステム２４０もまた、ターゲットシステムにこれらの要素を提供しうる。複数のピアシステム２４０は、互いにアノテーション１７０を共有しうる。このような共有は、実験的に得られたアノテーション１７０又は自己アノテーションを通信するために組織される。ピアシステム２４０は、システムセットアップ、消費エネルギーレベル及び得られたサービス品質を共有しうる。複数のアノテーション１７０を受取るピアシステム２４０は、報告された最良のアノテーション１７０を使用しうるか、又は、２つ以上の報告されたアノテーション１７０をアノテーション１７０の新規の組と一体化させうる。
【００３７】
[0035]  次に図３を参照し、ハードウェアカスタマイゼーション及びエネルギー最適化のためのプログラム及びデータアノテーションについて、本明細書に提示される実施形態に関する更なる詳細が提供される。具体的には、図３は、本開示の少なくともいくつかの実施形態に従って、プログラム及びデータアノテーションを生成するためのプロセス３００を示すフロー図である。
【００３８】
[0036]  本明細書中に記載された論理演算は（１）コンピューティングシステムにおいて実行されるコンピュータ実装アクト又はプログラムモジュールの一連として及び／又は（２）コンピューティングシステム内の相互に接続された機械論理回路又は回路モジュールとして実施されるということを認識されたい。この実施は、コンピューティングシステムの性能及び他の要件に依存する選択上の事項である。よって、本明細書中の論理演算は、状態オペレーション、構造デバイス、アクト又はモジュールなどと多様に呼ばれている。これらのオペレーション、構造デバイス、アクト及びモジュールは、ソフトウェア、ファームウェア、特別目的デジタル論理、及びこれら組み合わせにおいて実施されうる。図面に示され、また本明細書に記載されるものより多い又は少ない動作が実行されうることもまた認識されたい。これらの動作は、連続して、並行して又は本明細書中に記載されている順序と異なる順序で実行されてもよい。
【００３９】
[0037]  プロセス３００は、サービス品質（ＱｏＳ）２３６仕様が構築される動作３１０において開始される。所望のＱｏＳレベルは、特定のＱｏＳレベルの維持を図るアノテーション１７０を構築するために使用されうる。多様なＱｏＳレベルが、異なるターゲットシステム２３０に提供されうる。ＱｏＳレベルは、インターバル又は周期的レベル、連続範囲のレベル、複数の個々のレベル又は単一の広範囲のレベルとして特定されうる。ＱｏＳレベルはまた、ユーザーＱｏＳレベルがターゲットシステム２３０において提供されるまでは決定されないままであるか、又はデフォルト値でありうる。
【００４０】
[0038]  動作３２０において、ターゲットシステム２３０の特性が構築されうる。これらの特性は、特定のターゲットシステム２３０又はターゲットシステムのクラスを対象とするアノテーション１７０の構築に使用されうる。例えば、ターゲットシステム２３０内の特定の特定用途向けコア１２０の存在は、特定用途向けコア１２０に影響を与える備えられたアノテーション１７０に影響を及ぼしうる。
【００４１】
[0039]  動作３３０において、アノテーションが付されるべきコード１６０が検査されうる。コード１６０は、コード１６０の記号構文解析を使用して検査されうる。コード１６０は、コード１６０の経験的動作の観察によって検査されうる。コード１６０は、コード１６０の統計的分析を介して検査されうる。コードはまた、他のコード１６０の既知の部分の動作に関連付けられうる。
【００４２】
[0040]  動作３４０において、動作３３０において検査されたコード１６０についてのコードアノテーション１７０Ａが決定されうる。動作３３０においてコード１６０を検査するための多様な選択肢は、コード１６０と関連付けられるべきアノテーション１７０の決定を知らせうる。アノテーションは、ターゲットシステム２３０のカスタマイゼーションを知らせうる。カスタマイゼーションは事実上、適用されうる。例えば、コード１６０は、動作３３０の検査により決定されたコード１６０の複雑さに応じて、より多くの又はより少ないプロセッサコア１１０を使用するためにアノテーションを付されうる。別の例としては、コード１６０が特定用途向けコア１２０を効果的に使用するよう決定されている場合、アノテーション１７０は、特定の特定用途向けコア１２０を動作状態にゲートするためにコード１６０と関連付けられうる。さらに別の例は、アノテーションは、動作３３０の検査により決定されたコード１６０のメモリニーズに応じて、メモリ１４０のブロックをゲートオン又はオフするコード１６０のブロックと関連付けられうる。
【００４３】
[0041]  動作３５０において、アノテーションが付されるべきデータ１６５が検査されうる。動作３６０において、動作３５０で検査されたデータ１６５のためのデータアノテーション１７０Ｂが決定されうる。動作３７０では、アノテーション１７０が１つ以上のターゲットシステム２３０に伝送されうる。伝送されたアノテーション１７０は、動作３４０で決定されたアノテーション１７０Ａ及び動作３６０で決定されたデータアノテーション１７０Ｂを含みうる。プロセス３００は、動作３７０の後で終了しうる。
【００４４】
[0042]  次に図４を参照し、ハードウェアカスタマイゼーション及びエネルギー最適化のためのプログラム及びデータアノテーションについて、本明細書に提示される実施形態に関する更なる詳細が提供される。具体的には、図４は、本開示の少なくともいくつかの実施形態に従って、プログラム及びデータアノテーションを適用するプロセス４００を示すフロー図である。
【００４５】
[0043]  プロセス４００は、コードアノテーティングシステム２１０又はデータアノテーティングシステム２２０から、アノテーション１７０を受取りうる動作４１０から開始される。動作４２０では、アノテーション１７０が１つ以上のピアシステム２４０から受取られうる。
【００４６】
[0044]  動作４３０において、システムパラメータ２３２が、ターゲットシステム２３０から収集されうる。動作４４０において、ターゲットシステム２３０と関連付けられた多様なセンサー２３４からのデータが収集されうる。動作４５０ではユーザーによるアノテーション１７０の部分的又は完全なオーバーライドがサポートされうる。
【００４７】
[0045]  動作４６０において、動的なアノテーションがサポートされうる。動的なアノテーション１７０は、データ、プロセッサコア１１０において実行されている他のプログラム、又はターゲットシステム２３０に関連する他の状態情報の関数として動作しうる。例えば、動的なアノテーション１７０は、利用可能エネルギー、利用可能メモリ、又は利用可能記憶容量の関数として多様に変化しうる。
【００４８】
[0046]  動作４７０において、多様なシステムパラメータ２３２は、コードアノテーション１７０Ａに応じて調整されうる。動作４８０において、多様なシステムパラメータ２３２はデータアノテーション１７０Ｂに応じて調整されうる。動作４７０及び４８０におけるシステムパラメータ２３２の調整は、ターゲットシステム２３０へアノテーションを適用する。かかる適用は、ターゲットシステム２３０に関連して動作するアノテーションターゲットモジュール１９０によってサポートされうる。アノテーションの適用は、ターゲットシステム２３０に関連付けられたハードウェア又はソフトウェアのカスタマイゼーションを知らせうる。カスタマイゼーションは、実際は適応されうる。例えば、ゲーティング、プロセッサコア１１０、特定用途向けコア１２０、メモリ１４０、キャッシュ１１５などに関するシステムパラメータは、提供されたアノテーション１７０により提案されたとおりに設定されうる。
【００４９】
[0047]  動作４９０において、自己アノテーションはサポートされうる。自己アノテーションは、ターゲットシステム２３０において構築されているターゲットシステム２３０に関するアノテーション１７０を含みうる。例えば、アノテーション生成モジュール１８０は、アノテーションターゲットモジュール１９０とともに、ターゲットシステム２３０において実行しうる。
【００５０】
[0048]  動作４９５において、アノテーション１７０は、１つ以上のピアシステム２４０に伝送されうる。伝送されたアノテーション１７０は、コードアノテーティングシステム２１０、データアノテーティングシステム２２０から受取ったか、動的なアノテーションにより局所的に生成されたか、又は自己アノテーションにより局所的に生成されたアノテーション１７０でありうる。プロセス４００は、動作４９５の後、終了しうる。
【００５１】
[0049]  本開示は、多様な態様を説明するよう意図されている本出願において記載された特定の実施形態に限定されるものではない。その精神及び範囲を逸脱することなく様々な変形及び変化がなされてよいことは当業者には明らかである。本明細書に列挙されたものに加え、本開示の範囲内にある機能的に同等な方法及び装置は、上述から当業者にとっては明らかとなろう。そのような変形及び変化は、添付の請求の範囲の範囲内になるように意図されている。本開示は、添付の請求の範囲及びかかる請求の範囲が主張するものと同等の全範囲によってのみ限定される。本開示が、当然多様に変化しうる特定の方法、試薬、化合物、合成物、生体系に限定されるものでないことを理解されたい。本明細書で使用される用語は、特定の実施形態のみを説明する目的のためであり、限定的であるよう意図されていない。
【００５２】
[0050]  本明細書で使用される実質的にあらゆる複数及び／又は単数の用語について、当業者は、文脈及び／又は用途に応じて適切に、複数の用語を単数に、及び／又は単数の用語を複数に置き換えることができる。本明細書では、明確性を目的として、多様な単数／複数の置き換えが明記されうる。
【００５３】
[0051]  一般に、本明細書、特に添付の請求の範囲（例えば、添付の請求の範囲の要部）中で使用される用語は、一般に「非限定的な（open）」用語として意図されている（例えば、「含んでいる(including)」という用語は「・・・を含んでいるが限定されない(including but not limited to)」と解釈されるべきであり、「有している(having)」という用語は「少なくとも・・・を有している(having at least)」と解釈されるべきであり、「含む(includes)」という用語は「・・・を含むが限定されない(includes but is not limited to)」と解釈されるべきである。）ことが当業者には理解されるであろう。さらに、導入されたクレーム記載において特定の数が意図される場合、そのような意図は当該クレーム中に明確に記載され、そのような記載がない場合は、そのような意図も存在しないことが当業者には理解されるであろう。理解を促すために、例えば、後続の添付の請求の範囲では、「少なくとも１つの(at least one)」及び「１つ以上の(one or more)」といった導入句を使用し、クレーム記載を導入することがある。しかし、このような句を使用するからといって「ａ」又は「ａｎ」といった不定冠詞によりクレーム記載を導入した場合に、たとえ同一のクレーム内に、「１つ以上の」又は「少なくとも１つの」といった導入句と「ａ」又は「ａｎ」といった不定冠詞との両方が含まれるとしても、当該導入されたクレーム記載を含む特定のクレームが、当該記載事項を１つのみ含む実施形態に限定されるということが示唆されると解釈されるべきではない（例えば、「ａ」及び／又は「ａｎ」は、「少なくとも１つの」又は「１つ以上の」を意味すると解釈されるべきである。）。定冠詞を使用してクレーム記載を導入する場合にも同様のことが当てはまる。さらに、導入されたクレーム記載において特定の数が明示されている場合であっても、そのような記載は、「少なくとも」記載された数を意味するように解釈されるべきであることは、当業者には理解されるであろう（例えば、他に修飾語のない、単なる「２つの記載事項」という記載がある場合、この記載は、「少なくとも」２つの記載事項、又は「２つ以上の」記載事項を意味する。）さらに、「Ａ、Ｂ及びＣなどのうち少なくとも１つ」に類する表記が使用される場合、一般的に、そのような構造は、当業者がその表記を理解するであろう意味で意図されている（例えば、「Ａ、Ｂ及びＣのうち少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡとＢの両方、ＡとＣの両方、ＢとＣの両方、及び／又は、ＡとＢとＣの全て、などを有するシステムを含むがこれに限定されない）。また、「Ａ、Ｂ又はＣなどのうち少なくとも１つ」に類する表記が使用される場合、一般的に、そのような構造は、当業者がその表記を理解するであろう意味で意図されている（例えば、「Ａ、Ｂ又はＣのうち少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡとＢの両方、ＡとＣの両方、ＢとＣの両方、及び／又は、ＡとＢとＣの全て、などを有するシステムを含むがこれに限定されない）。さらに、２つ以上の選択可能な用語を表す実質的にあらゆる離接語及び／又は離接句は、説明文内であろうと、請求の範囲内であろうと、又は図面内であろうと、それらの用語のうちの１つ、それらの用語のうちのいずれか、又はそれらの用語の両方を含む可能性を意図すると理解されるべきであることが、当業者には理解されるであろう。例えば、「Ａ又はＢ」という句は、「Ａ」又は「Ｂ」若しくは「Ａ及びＢ」の可能性を含むことが理解されよう。
【００５４】
[0052]  加えて、本開示の特徴又は態様がマーカッシュグループによって記載されると、それにより本開示がマーカッシュグループのあらゆる個々の要素、又は要素のサブグループの観点からも記載されるということを当業者は認識するであろう。
【００５５】
[0053]  当業者に理解されるように、記述を提供するなどの、一切の目的のため、本明細書に開示される全ての範囲は、一切の可能な部分範囲及びその部分範囲の組み合わせをも含む。記載されたあらゆる範囲は、少なくとも半分、３分の１、４分の１、５分の１、１０分の１などへと細分化される同一の範囲を十分に記載し、かつ可能にしていることが容易に認識されるだろう。限定されない例として、本明細書に記載される各範囲は、下部３分の１、中部３分の１、上部３分の１などと容易に分けられる。また、当業者には理解されるように、「まで（up to）」、「少なくとも（at least）」、「より大きい（greater than）」、「未満（less than）」などの全ての文言は、記載される数を含み、上述したような部分範囲に細分化しうる範囲を指す。最後に、当業者に理解されるように、範囲は個々の要素を含む。それゆえ、例えば１から３つのセルを有するグループは、１、２又は３つのセルを有するグループを指す。同様に、１から５つのセルを有するグループは、１、２、３、４、又は５つのセルを有するグループなどを指す。
【図１】
2010257445.tif 000003
【図２】
2010257445.tif 000004
【図３】
2010257445.tif 000005
【図４】
2010257445.tif 000006
【外国語明細書】
2010257445000001.pdf