(57)【要約】  異種が混合した再構成可能なアーキテクチャのための設計記述のコンパイラは、ユーザ指定の制限によって影響を受ける。
2007527075.tif 000002
【特許請求の範囲】
【請求項１】
異種が混合した再構成可能な装置のための設計記述を読取る段階と、
前記設計記述内の機能をグループに結合する段階と、
前記グループをユーザ指定の制限への順守のために解析する段階と、
を含むことを特徴とする方法。
【請求項２】
前記解析する段階は、前記グループの電力消費を推定する段階を含むことを特徴とする請求項１記載の方法。
【請求項３】
前記解析する段階は、前記グループによって占有される領域を推定する段階を含むことを特徴とする請求項１記載の方法。
【請求項４】
前記ユーザ指定の制限への順守のために、機能をグループに再結合する段階、および、前記グループを再解析する段階をさらに含むことを特徴とする請求項１記載の方法。
【請求項５】
前記解析する段階は、優先的なユーザ指定の制限と推定されたパラメータを比較する段階を含むことを特徴とする請求項１記載の方法。
【請求項６】
前記異種が混合した再構成可能な装置内の処理要素上で走る前記機能をコンパイルする段階をさらに含むことを特徴とする請求項１記載の方法。
【請求項７】
前記異種が混合した再構成可能な装置内の特定の処理要素上に前記グループを配置する段階をさらに含むことを特徴とする請求項６記載の方法。
【請求項８】
ユーザ指定の制限への順守のために前記配置を解析する段階をさらに含むことを特徴とする請求項７記載の方法。
【請求項９】
前記配置を解析する段階は、レイテンシを推定する段階を含むことを特徴とする請求項８記載の方法。
【請求項１０】
レイテンシを推定する段階は、相互接続遅延を推定する段階を含むことを特徴とする請求項９記載の方法。
【請求項１１】
レイテンシを推定する段階は、処理レイテンシを推定する段階を含むことを特徴とする請求項９記載の方法。
【請求項１２】
レイテンシを推定する段階は、処理レイテンシおよび相互接続レイテンシを推定する段階をさらに含むことを特徴とする請求項９記載の方法。
【請求項１３】
プロファイルを行なうために配置された設計を備えるファイルを生成する段階をさらに含むことを特徴とする請求項７記載の方法。
【請求項１４】
前記設計をプロファイルし、ユーザ指定の制限と比較する段階をさらに含むことを特徴とする請求項１３記載の方法。
【請求項１５】
前記プロファイルに応答して、機能を再グループ化する段階をさらに含むことを特徴とする請求項１４記載の方法。
【請求項１６】
前記プロファイルに応答して、配置を再実行する段階をさらに含むことを特徴とする請求項１４記載の方法。
【請求項１７】
複数の機能をグループにマップする段階と、
前記グループを異種が混合した再構成可能な装置内の資源に配置する段階と、
マップされかつ配置された設計の表現を生成する段階と、
前記設計の表現のプロファイルする段階と、
前記プロファイルからの結果をユーザ指定の制限と比較する段階と、
を含むことを特徴とする方法。
【請求項１８】
前記複数の機能をグループに再マップする段階をさらに含むことを特徴とする請求項１７記載の方法。
【請求項１９】
前記グループを資源上に再配置する段階をさらに含むことを特徴とする請求項１７記載の方法。
【請求項２０】
結果を比較する段階は、推定されたレイテンシを前記ユーザ指定の制限中で指定されたレイテンシと比較する段階を含むことを特徴とする請求項１７記載の方法。
【請求項２１】
前記推定されたレイテンシは、処理レイテンシおよび相互接続レイテンシを含むことを特徴とする請求項２０記載の方法。
【請求項２２】
前記ユーザ指定の制限は、レイテンシ、電力、および、スループットを含むことを特徴とする請求項１７記載の方法。
【請求項２３】
機械アクセス可能な命令を保持するための媒体を含む装置において、アクセスされた場合、機械は、
異種が混合した再構成可能な装置のための設計記述を読取り、
前記設計記述内の機能をグループに結合し、
前記グループをユーザ指定の制限への順守のために解析する、
ことを特徴とする装置。
【請求項２４】
アクセスされた場合、前記機械アクセス可能な命令によって、前記機械は、
機能をグループに再結合し、
前記ユーザ指定の制限への順守のために前記グループを再解析する、
ことを特徴とする請求項２３記載の装置。
【請求項２５】
アクセスされた場合、前記機械アクセス可能な命令によって、前記機械は、
前記異種が混合した再構成可能な装置内の処理要素上で走る前記機能をコンパイルする、
ことを特徴とする請求項２３記載の装置。
【請求項２６】
前記解析は、優先的なユーザ指定の制限と推定されたパラメータを比較することを特徴とする請求項２３記載の装置。
【請求項２７】
プロセッサと、
アクセスされた場合、前記プロセッサに異種が混合した再構成可能な装置のための設計記述を読取り、前記設計記述内の機能をグループに結合し、前記グループをユーザ指定の制限への順守のために解析する、命令を保持するスタティック・ランダム・アクセス・メモリと、
を含むことを特徴とする電子システム。
【請求項２８】
アクセスされた場合、前記命令は、機能をグループに再結合し、前記ユーザ指定の制限への順守のために前記グループを再解析する、ことを特徴とする請求項２７記載の電子システム。
【請求項２９】
前記解析は、優先的なユーザ指定の制限と推定されたパラメータを比較することを特徴とする請求項２８記載の電子システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には、再構成可能な回路に関し、より詳しくは、プログラム／構成を行なう再構成可能な回路に関する。
【背景技術】
【０００２】
いくつかの集積回路は、プログラムすることができ、あるいは構成することができる。そのような実施例は、マイクロプロセッサおよびフィールド・プログラムが可能なゲート・アレイを含む。プログラム可能かつ構成可能な（コンフィギュラブル：configurable）集積回路がより複雑になるにつれ、それらをプログラムし、かつ構成を行なうタスクは、さらに複雑になる。
【発明の開示】
【０００３】
以下の詳細な説明では、本発明が実施される特定の実施例を示す添付図面が言及される。これらの実施例は、当業者が本発明を実施することができるように十分詳細に説明される。本発明の様々な実施例は、異なっていても、必ずしも相互に排他的ではないことを理解すべきである。例えば、一実施例に関してここに説明される特定の特徴、構造または特性は、本発明の精神および範囲から逸脱せずに、他の実施例内で実施される。加えて、開示された各実施例内の個々の要素の位置または配置は、本発明の思想および範囲から逸脱せずに、修正されてもよいことが理解される。したがって、以下の詳細な説明は、制限する意味に捉えるべきではなく、本発明の範囲は、請求項が与える均等の全範囲と共に、添付の請求項によってのみ定義され、適切に解釈される。図面における類似の数字は、図面全体に亘り、同一または類似の機能を参照する。
【０００４】
図１は、再構成可能な（リコンフィギュラブル：reconfigurable）回路のブロック図を示す。再構成可能回路１００は、複数の処理要素（ＰＥ：processing elements）および相互に連結した複数のルータ（Ｒ：routers）を含む。いくつかの実施例では、各ＰＥは単一のルータに結合され、そのルータは共に結合される。例えば、図１に示されるように、ＰＥ１０２はルータ１１２に結合される。また、ＰＥ１０４はルータ１１４に結合される。さらに、例えば図１の中で示されるように、ルータ１１２，１１４は、ルータ１１６，１１８，１２０を通って共に結合されて、相互接続１２２（Ｒ１１２の左と、Ｒ１１４の右に示される）によって共に直接結合される。再構成可能回路１００中の様々なルータ（およびＰＥ）は、環状結合を形成して、最も近い隣接相互接続で行および列に配置される。いくつかの実施例では、各ルータは単一のＰＥに結合されており、また、他の実施例では、各ルータは２以上のＰＥに結合されてもよい。
【０００５】
構成可能な回路１００は、多様な異なるアーキテクチャを有する様々なタイプのＰＥを含む。例えば、ＰＥ１０２は、特定の論理機能を実行するために形成されるプログラム可能なロジック・アレイを含んでもよく、その一方でＰＥ１０４は、機械語命令でプログラムされるプロセッサ・コアを含めることができる。一般に、広範囲の様々なアーキテクチャを備える任意の数のＰＥを構成可能な回路１００内に含めることができる。ＰＥのための様々な異なるアーキテクチャを利用する実施例では、構成可能な回路１００は「異種が混合した再構成可能なアーキテクチャ(heterogeneous reconfigurable architecture)」と呼ばれる。
【０００６】
図１に示されるように、構成可能回路１００は、入出力（ＩＯ）要素１３０，１３２を含む。入出力要素１３０，１３２は、他の回路と通信するために構成可能回路１００によって使用されてもよい。例えば、ＩＯ要素１３０はホスト・プロセッサと通信するために使用され、また、ＩＯ要素１３２は、無線周波数（ＲＦ）受信機または送信機のようなアナログ・フロント・エンドと通信するために使用されてもよい。あらゆる数のＩＯ要素が構成可能回路１００に含められ、また、それらのアーキテクチャは広く変化する。ＰＥのように、ＩＯは構成可能で、またプログラム可能であり、それらの基本的なアーキテクチャに基づく異なったレベルの構成を有していてもよい。
【０００７】
いくつかの実施例では、各ＰＥは、個々に構成可能である。例えば、ＰＥ１０２は、論理機能を定義する数値表をロードすることにより形成され、また、ＰＥ１０４は、ＰＥ１０４によって実行される機械語プログラムをロードすることによりプログラムされる。いくつかの実施例では、ＰＥは、複数の機能を実行するために形成され、またはプログラムされる。例えば、ＰＥは、複数のフィルタ機能または複数の符号化、または復号化機能を実行する。いくつかの実施例では、複数の機能は、ＰＥ内で並列に動作することができる。
【０００８】
いくつかの実施例では、ルータは、情報パケットを使用して、互いにまたＰＥと通信する。例えば、ＰＥ１０２がＰＥ１０４に送られる情報を有している場合、ＰＥ１０２はデータ・パケットをルータ１１２に送り、ルータ１１２はＰＥ１０４へ向けて配送するためのルータ１１４へそのパケットを送る。パケットは任意のサイズである。パケットを利用する実施例では、構成可能な回路１００は「パケット・ベースの異種が混合した再構成可能なアーキテクチャ」と呼ばれる。
【０００９】
プログラム可能な要素およびＩＯノードは、構成可能な回路内の異種が混合した資源（リソース）の例である。一般に、構成可能な回路は、多くの異なるタイプの構成可能かプログラム可能な資源を含む。構成可能な回路内の様々な数およびタイプの資源は、コンパイラまたは他の自動プロセスによって、生成された構成情報で少なくとも部分的にプログラムされる。構成情報を生成する方法およびプロセスの例は、さらに以下で議論される。
【００１０】
構成可能回路１００は、ＩＯ要素を介して構成パケットを受け取ることにより形成される。例えば、ＩＯ要素１３０は、様々なＰＥおよびＩＯのための構成情報を含む構成パケットを受け取り、その構成パケットは適切な要素に発送される。構成可能回路１００は、専用プログラミング・インターフェイスを通って構成情報を得ることにより形成されてもよい。例えば、構成可能回路１００をプログラムするためにシリアル・スキャン・チェーンのようなシリアル・インターフェイスを利用することができる。
【００１１】
構成可能回路１００は、多くの用途を有する。例えば、構成可能回路１００は、通信システムにおける特定の物理層（ＰＨＹ）の実現を示すため、または通信システムにおける特定のメディア・アクセス制御層（ＭＡＣ）の実現を示すために形成することができる。いくつかの実施例では、構成可能な回路１００のための複数の構成は存在することがあり、ある構成から別の構成へ変更することによって、通信システムはあるＰＨＹから別のＰＨＹへ、あるＭＡＣから別のＭＡＣへ、または複数の構成のあらゆる組合せの間で速く変えることができる。さらに例えば、構成可能な回路１００は、イメージ処理アプリケーション、または他のアプリケーション中で使用するために形成される。一般に、異種が混合した再構成可能なアーキテクチャは、あらゆる有用な目的のために形成される。
【００１２】
いくつかの実施例では、構成可能回路１００は集積回路の一部である。これらの実施例のいくつかでは、構成可能回路１００は、構成可能回路１００以外の回路を含む集積回路ダイに含められる。例えば、構成可能回路１００は、プロセッサ、メモリまたは他の適切な回路を備える集積回路ダイ上に含められてもよい。いくつかの実施例では、通信装置の集積度を増加させるために、構成可能回路１００は、同じ集積回路ダイ上の無線周波数（ＲＦ）回路と共存させることができる。さらに、いくつかの実施例では、構成可能回路１００は、複数の集積回路ダイに跨ってもよい。
【００１３】
図２は、異種が混合した再構成可能なアーキテクチャの設計フロー図を示す。いくつかの実施例では、設計フロー２００のすべてまたは一部はコンパイラによって実行され、そのコンパイラは自動的にマップしコードをコンパイルすることができ、および／または、処理レイテンシ、電力消費、および使用エリアなどのユーザ指定の制限を満たす、異種が混合した再構成可能なアーキテクチャのための構成を生成することができる。目標のアーキテクチャは異種が混合しているので、コードのある部分の実行または資源のあるセット上の機能性は、同じコードまたは機能性が別の資源のセット上で実行される場合とは異なる特性（例えば、レイテンシ、電力、エリア）を示す結果となる。さらに以下説明されるように、設計フロー２００は、異種が混合した目標となるアーキテクチャに関する設計記述（design description）と資源（source）との間で満足するマップ化を生成するためのトレードオフ（比較考量）を行なうための優先的なユーザ指定制限を使用してもよい。
【００１４】
ここで使用されるように、用語「コンパイラ」、「コンパイル」および同種の用語は、機械語コードを生成するために、または構成情報を生成するために有用なツールをいう。例えば、コンパイラは、異種が混合した再構成可能なアーキテクチャ内のいくつかの資源用の機械コードを生成することができ、同じ異種が混合した再構成可能なアーキテクチャ内の他の資源用の構成情報を生成することができる。
【００１５】
設計フロー２００は、設計記述を処理し、かつ異種が混合した再構成可能なアーキテクチャのための構成を作成するための設計フローの様々な実施例を示す。ブ設計フロー２００中のロックによって表わされる様々な動作は、図示された順に実行されてもよく、また異なる順に行なわれてもよい。さらに、いくつかの実施例では、図２中で示されるいくつかのブロックを設計フロー２００から省略しもよい。図２中に示されるように、設計フロー２００は、設計記述２０１およびユーザ指定の制限２０３を受け取る。いくつかの実施例では、設計フロー２００は、また異種が混合した再構成可能なアーキテクチャ中の目標となる資源の数、配列、およびタイプについて説明する情報を含むハードウェアの接続形態の仕様書（hardware topology specification）を受け取る。
【００１６】
設計記述２０１は、意図した設計上の動作について説明する情報を含む。意図した設計は、あらゆる目的に役立てることができる。例えば、意図した設計は、イメージ処理、ビデオ処理、オーディオ処理、または同種の処理に役立つ。意図した設計はここに「構成」と呼ばれるが、しかし、この用語は、どのような方法であっても本発明を制限することを意味するものではない。いくつかの実施例では、設計記述２０１によって指定された構成はアルゴリズムの形をしており、特定のＰＨＹ、ＭＡＣまたはそれらの組合せが実行されることになる。設計記述は、手続きまたはオブジェクト指向言語、例えば、Ｃ、Ｃ＋＋またはハードウェア設計言語（ＨＤＬ）の形であってもよく、あるいは高級言語で特定化され、「様式化した(stylize)」バージョンで記述されていてもよい。
【００１７】
ユーザ指定の制限２０３は、完成した構成が満たすべき最小の必要条件のような制限を含み、または設計フローの動作を抑制するために他の情報を含んでいてもよい。例えば、ユーザ指定の制限２０３は、電力消費、エリア使用、レイテンシ、スループット、または他のパラメータと関連する。いくつかの実施例では、設計フロー２００の動作中に優先度のレベルを変えられるように、様々な制限は重み付けを割り当てる。さらに、いくつかの実施例では、様々な制限が優先されてもよい。
【００１８】
いくつかの実施例では、制限は要求またはプレファレンスとしてリストされ、また、いくつかの実施例では、制限はパラメータ値の範囲としてリストされる。いくつかの実施例では、制限は絶対的でなくてもよい。例えば、目標となる再構成可能なアーキテクチャがパケットで通信するデータ経路を含む場合、プロトコルの一部による測定レイテンシは、固定値ではない代りに、統計的変動を備える値であってもよい。
【００１９】
ユーザ指定の制限２０３は、設計フロー２００の様々な局面で利用され、設計フローの動作に影響を与える。例えば、再構成可能なアーキテクチャ内の資源に機能を割り当て、あるいは再割り当てを行なう方法は、制限に基づいていてもよい。さらに、ユーザ指定の制限は、設計フロー２００の初期に思考錯誤的（heuristically）に利用されてもよく、または設計フロー２００の後半により決定的に使用されてもよい。これらの制限の使用例は、他の使用例と同様に、以下に説明される。
【００２０】
設計フロー２００では、設計記述２０１は２０６で構文解析（parse）が行なわれる。構文解析は、機能の分割、あるいは機能のサブシステムを含む。例えば、分割は、設計記述を異なる処理が生じるオーバーラップしないセグメント（つまり「モード」）へ時間内に区切ることを含む。また、例えば、分割は、制御機能を提供するブロック、データ・パス機能、または両方へ設計記述２０１を区切ることを含む。いくつかの実施例では、設計記述は、モードと機能の階層的表現へ分割される。設計記述２０１が分割される方法は、本発明を制限するものではない。さらに、設計フローの一部を記述するために用いられる用語（「機能」または「機能のサブシステム」等）は、制限することを目的とするものではない。
【００２１】
２０８および２１０で、機能は、資源にマップされる。いくつかの実施例では、機能は、同じ資源タイプ上で実行することができる様々な機能を選択することによりグループ化される。すべての機能はグループに割り当てられ、また、各グループは任意の数の機能を含む。各グループは、異種が混合した再構成可能なアーキテクチャ中の単一の資源に割り当てられるか、あるいは、グループが資源に割り当てられる前に結合されてもよい。
【００２２】
いくつかの実施例では、グループを形成する前に、あらゆる可能性のある資源マップ化が、２０８で各機能のために列挙される。ハードウェアの接続形態の仕様書（図示せず）は、目標となる再構成可能なアーキテクチャ中で利用可能な資源のタイプを決定するために用いられる。その後、各機能中のコードは、機能を首尾よくマップすることができる可能な資源タイプを決定するために解析される。いくつかの機能は、単一の実行を行なうライブラリ関数のように、ただ１つの可能性を有する場合がある。ライブラリ情報は、設計フロー２００に利用可能な関数ライブラリ（図示せず）によって提供される。他の機能は、多くの異なったタイプの資源上で実行される単一の演算機能のような、多くの可能性を有していてもよい。各機能のすべての可能性を含む表が構築され、それは可能性（likelihood）の順に並べられる。この表は、設計フロー２００の全体を通して参照される。
【００２３】
この表が構築された後、グループの機能は２１０で形成される。マップ化は、どのグループ化が可能かを決めるために、２０８で構築された表を使用する。ただ１つのタイプの資源上で実行することができる機能は、それらの機能が属することができるグループに関して制限されてもよい。いくつかの実施例では、ユーザ指定の制限２０３は、機能のグループ化を指定してもよく、またはグループの首尾よい形成に影響する最大の遅延またはレイテンシを指定してもよい。
【００２４】
設計フロー２００中のこのポイントで、ユーザ指定の高レベルの制限に基づく思考錯誤的な学習（heuristics）が、グループ化の手順をガイドするために使用されてもよい。例えば、もしレイテンシの減少がただ一つの優先事項ならば、設計フロー２００は、ハードウェア・アクセラレータを備える資源にできるだけ多くの機能をマップすることに決めることができるであろう。最優先事項として、削減した電力とともにコンパイルするために、設計フロー２００は、個々の資源のアーキテクチャに依存して、各命令または構成に対する電力を推定する予め定めるデータベースを使用することができる。低エリアに対してコンパイルするために、設計フロー２００は、各資源に対するエリアを指定するアーキテクチャのハードウェア記述を使用することができる。ユーザがこれらのパラメータの組合せを指定する場合、もっと興味深いタスクが示される。ここで、本発明の様々な実施例は、他の資源から１つの資源、あるいは他のグループ化から特定のグループ化を選択する際に比較考量（トレードオフ）を行なうことができる。
【００２５】
設計フロー２００の２１２で、グループは、目標となる再構成可能なアーキテクチャの特定の資源に、割り当てられるか、または「設定」される。ブロック２１２に対応する動作は、アーキテクチャ中の配置を決めるが、グループが占有すべきであり、次に元の機能の間で適切なデータ・フローを保証する接続情報を加える。いくつかの係数は、グループ配置の可能性、ユーザ制限、およびプロファイラに基づくフィード・バック（以下、より詳細に説明）を含む配置をガイドする。例えば、厳しいレイテンシ制限を満たすために、互いに隣りにある資源に２つのグループを配置することは有用であるかもしれない。配置も、以下説明される「推定および調整」動作からの指図されたフィード・バックによってガイドされてもよい。
【００２６】
設計フロー２００の２１６，２１８，２２０で、コード、および／または、構成情報は、目標となる再構成可能なアーキテクチャ中の様々なタイプの資源のために生成される。いくつかの実施例では、異なるコード生成ツールが異なるタイプの資源のために存在する。例えば、プログラマブル・ロジックを含むプログラム可能な要素（ＰＥ）のような資源は、ＰＥを形成するために、ロジック方程式である中間的な表現を情報の表に翻訳する翻訳器によって生成されたコードまたは構成を生成することができる。さらに、例えば、プロセッサまたは制御器を含むＰＥは、アセンブラまたはコンパイラによって生成されたコードを有する。いくつかの実施例では、コードは各機能のために生成され、次に、１つの機能グループのためのコードが資源のために生成される。他の実施例では、資源のためのコードは、１つの動作中の機能グループから生成される。いくつかの実施例では、構成パケットは、様々な資源をプログラムするために生成される。構成パケットは、特定の資源を形成するためのデータを含み、また形成される資源のアドレスを含む。例えば、いくつかの実施例では、ＰＥのアドレスは、ホストと通信するために使用されるＩＯノードからの相対アドレスとして指定される。
【００２７】
設計フロー２００中の前のブロックからの２進情報が２２２で命じられ、目標となるアーキテクチャのシステム・プロファイラ２６２によって実行される適切なフォーマットに形成される。システム・プロファイラ２６２は、ブロック２２２の出力によって指定されるような現在の構成の品質を測定する。いくつかの実施例では、システム・プロファイラ２６２は、現在の構成の品質を決定するために、ユーザ指定の制限に対して比較される情報の収集を許容する。例えば、システム・プロファイラ２６２は、現在のグループ化、マップ化、および配置がユーザ指定のレイテンシまたはスループット要求に適合しているかどうかを判断するために利用される。
【００２８】
システム・プロファイラ２６２は、再構成可能なアーキテクチャをエミュレート（模倣）するソフトウェア・プログラムであり、プロファイリングを加速するハードウェア装置であってもよい。いくつかの実施例では、システム・プロファイラ２６２は、目標となる再構成可能なアーキテクチャと同じアーキテクチャの回路を有する構成可能な回路を含む。他の実施例では、システム・プロファイラ２６２は、目標となる再構成可能なアーキテクチャに類似するアーキテクチャを有する構成可能な回路を含む。システム・プロファイラ２６２は、あらゆるタイプのシリアルまたはパラレルのインターフェイスを含むあらゆる種類のインターフェイスを通してブロック２２２から構成情報を受け取る。
【００２９】
システム・プロファイラは、２２４で、レイテンシ、スループット、および他の特性結果に関するデータを「推定および調整」ブロックへ渡す。マップ化と配置が不十分な場合、ブロック２２４は、システム・プロファイラ２６２およびユーザ指定の制限２０３からの入力を含むコスト関数を推定する。そのコスト関数に基づいて、ブロック２２４は、現在のグループ化、マップ化、使用される資源、アーキテクチャ上へのグループの配置、またはあらゆる他のパラメータを調整するために選択する。調整が行われた後、その調整が完了するまで、設計フロー２００は前のブロックを通って繰り返す。２２４の出力は、再構成可能なアーキテクチャを構成するために使用される構成ファイルである。
【００３０】
制限が合致したとき、完成した構成は２２４から出力される。いくつかの実施例では、完成した構成は、構成可能な回路１００（図１）のような異種が混合した再構成可能なアーキテクチャの構成を指定するファイルの形式をしている。いくつかの実施例では、完成した構成は、構成可能な回路１００のような構成可能な回路にロードされる構成パケットの形式をしている。完成した構成によって得られた形式は、本発明を制限するものではない。
【００３１】
図２に関して上記説明された設計フローは、その全部または一部がコンピュータまたは他の電子システムによって実行される。例えば、いくつかの実施例では、異種が混合した再構成可能なアーキテクチャのための構成をコンパイルするためのコンパイラ内で、設計フロー２００はすべて実行される。他の実施例では、設計フロー２００の一部がコンパイラ内で実行され、また、設計フロー２００の一部がユーザによって行なわれてもよい。例えば、いくつかの実施例では、ユーザは、設計記述機能または機能ブロックの分割を行なってもよい。
【００３２】
図３は、本発明の様々な実施例に従うフローチャートを示す。いくつかの実施例では、方法３００またはその一部は、電子システム、または人の行為と関連する電子システムによって行なわれる。他の実施例では、方法３００のすべてまたは一部は、制御回路またはプロセッサによって実行され、それらの実施例は様々な図面中に示される。方法３００は、特定のタイプの装置、ソフトウェア要素、またはその方法を行なう人によって制限されるものではない。いくつかの実施例では、方法３００は、異種が混合した再構成可能なアーキテクチャのための構成を生成する際に、コンパイラによって行なわれてもよい。方法３００における様々な動作は、図示された順序に行なわれてもよいが、異なる順序に行なわれてもよい。さらに、いくつかの実施例では、図３にリストされたいくつかの動作は、方法３００から省略されてもよい。
【００３３】
方法３００は、ブロック３１０から始まり、ここで異種が混合した再構成可能な装置のための設計記述が読み込まれる。いくつかの実施例では、ブロック３１０は、設計記述２０１（図２）を読取るプロセッサまたはコンパイラに対応する。３２０で、設計記述内の機能がグループに結合される。グループへの結合は、少なくとも部分的に、ユーザ指定の制限に基づいた思考錯誤的な学習によってガイドされてもよい。例えば、レイテンシの削減がユーザ指定の制限中の最優先事項である場合、機能は第一のゴールとして削減されたレイテンシを具備するグループ中へ結合される。さらに例えば、電力削減がユーザ指定の制限中の最優先事項である場合、特定のタイプの機能および様々な資源の電力消費について説明する思考錯誤的な学習情報が考慮される。
【００３４】
３３０で、グループはユーザ指定の制限への順守のために解析される。ここで、目標となる異種が混合した再構成可能なアーキテクチャ内の機能のグループ化およびマップ化に基づいて、様々なパラメータ推定がなされる。例えば、電力消費が推定され、レイテンシが推定され、あるいはエリア使用が推定される。さらに、いくつかの実施例では、レイテンシの推定は、相互接続のレイテンシと同様に処理のレイテンシを推定することも含む。３４０で、推定されたパラメータ値がユーザ指定の制限に順守していない場合、マップ化とグループ化が繰り返される。このプロセスは、そのユーザ指定の制限に合致させるためにその試みは何回も繰り返される。推定されたパラメータが目標の制限値の指定された範囲内となる場合、その反復は、設計を完了し、かつより多くの解析を行なうために、終了する。
【００３５】
３５０で、異種が混合した再構成可能なアーキテクチャ内の資源上で走るために、機能は機械コードまたは構成へコンパイルされる。例えば、図２を参照して、コード生成器２１６，２１８，２２０の１つは、資源上で走るためにステートメントを機械コードまたは構成へコンパイルする。３５０で示される動作は、異種が混合した再構成可能なアーキテクチャ内の資源のための構成情報を生成するあらゆる種類の変換またはコンパイルを含む。
【００３６】
３６０で、グループが配置される。配置は、どの資源が３２０で生成されたグループを実行するかを判断することを含む。例えば、図１を参照して、様々なＰＥは、特定の機能グループを実行するために識別される。ここで、他の資源から１つの資源または他のグループから特定のグループ化を選択する際に、トレードオフが行なわれる。３６０の動作は、少なくとも部分的に、思考錯誤によって行なわれる。
【００３７】
３７０で、設計のプロファイルが描かれる。３７０に関する設計は、異種が混合した再構成可能なアーキテクチャ中の様々な資源のための構成情報を含む。例えば、図２を参照して、ブロック２２２の出力は、プロファイルされるべき設計を表わす。プロファイリングは、１またはそれ以上の様々な方法を使用して達成される。例えば、ソフトウェア中で走るシステム・プロファイラは、設計をプロファイルする。さらに例えば、構成可能な回路を含む目標システムは、設計をプロファイルするために使用される。設計をプロファイルするために使用されるハードウェアまたはソフトウェアのタイプは、本発明の制限するところではない。方法３００のすべてまたは一部は、プロファイリングの結果に基づいて繰り返される。例えば、機能はプロファイリングの結果に基づいて、異なって配置されグループ化される。
【００３８】
図４は、電子システムのブロック図を示す。システム４００は、プロセッサ４１０、メモリ４２０、構成可能な回路１００、ＲＦインターフェイス４４０、および、アンテナ４４２を含む。いくつかの実施例では、システム４００は、構成可能な回路１００で使用するための構成を開発するコンピュータ・システムである。例えば、システム４００は、パーソナル・コンピュータ、ワークステーション、専用の開発用ステーション、または、構成可能な回路１００のためのプロトコルを作成することができる他のコンピュータ装置である。他の実施例では、システム４００は、特定の構成を実行するようにプログラムされた後の、構成可能な回路１００を利用する「最終使用」システムである。さらに、いくつかの実施例では、システム４００は、それらを使用すると同様にプロトコルを開発することができるシステムである。
【００３９】
いくつかの実施例では、プロセッサ４１０は、設計フロー２００のすべて、または設計フロー２００の一部を実行する方法を行なうことができるプロセッサである。例えば、プロセッサ４１０は、グループ化、配置、マップ化、プロファイリングの機能またはそれらの任意の組合せを行なう。プロセッサ４１０は、あらゆるタイプのプロセッサを表わし、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセサ、パーソナル・コンピュータ、ワークステーションまたは同種のものを含むが、これらに限定されることはない。
【００４０】
いくつかの実施例では、システム４００は、通信システムであってもよく、プロセッサ４１０は、通信システム内の様々なタスクを行なうコンピュータ装置である。例えば、システム４００は、無線ネットワーク能力をコンピュータに提供するシステムである。これらの実施例では、プロセッサ４１０は、装置ドライバのすべてまたは一部を実行し、またはより低レベルのＭＡＣを実行してもよい。さらに、これらの実施例では、構成可能な回路１００は、ワイヤレス・ネットワーク接続のための１以上のプロトコルを実行することができる。いくつかの実施例では、構成可能な回路１００は、複数のプロトコルを同時に実行することができ、また、他の実施例では、プロセッサ４１０は、構成可能な回路１００を再構成することにより使用中のプロトコルを変更してもよい。
【００４１】
メモリ４２０は、機械読取り可能な媒体を含む物品を表わす。例えば、メモリ４２０は、次の１またはそれ以上のもの、すなわち、ハードディスク、フロッピー・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、フラッシュ・メモリ、ＣＤＲＯＭ、またはプロセッサ４１０のような機械によって読取り可能な媒体を含むあらゆる他のタイプの物品を表わす。いくつかの実施例では、メモリ４２０は、本発明の様々な方法の実施例を実行するための命令を格納する。
【００４２】
いくつかの実施例における動作では、プロセッサ４１０は、メモリ４２０から命令とデータを読み出し、それらに応答する動作を行なう。例えば、本発明の様々な方法の実施例は、メモリ４２０から命令を読む間にプロセッサ４１０によって実行される。
【００４３】
アンテナ４４２は、指向性アンテナまたは無指向性アンテナのいずれかであってもよい。例えば、いくつかの実施例では、アンテナ４４２は、ダイポール・アンテナまたは４分の１波長アンテナのような無指向性アンテナである。さらに例えば、いくつかの実施例では、アンテナ４４２は、パラボラ・ディッシュ・アンテナまたは八木アンテナのような指向性アンテナである。いくつかの実施例では、アンテナ４４２は省略されてもよい。
【００４４】
いくつかの実施例では、アンテナ４４２によって送信されあるいは受信されるＲＦ信号は、音声信号、データ信号またはそれらの任意の組合せに対応する。例えば、いくつかの実施例では、構成可能な回路１００は、ワイヤレス・ローカル・エリア・ネットワーク・インターフェイス、セルラー電話インターフェイス、全地球測位システム（ＧＰＳ）インターフェイスまたは同種のもののためのプロトコルを実行する。これらの様々な実施例では、ＲＦインターフェイス４４０は、構成可能な回路１００によって実行されるプロトコルに適した周波数で動作する。いくつかの実施例では、ＲＦインターフェイス４４０は省略されてもよい。
【００４５】
本発明はある実施例に関連して説明されたが、修正と変更は、当業者が容易に理解する限り、本発明の思想および範囲から逸脱せずに行なわれる。そのような修正および変更は、本発明および添付された請求項の範囲内にあるとみなされる。
【図面の簡単な説明】
【００４６】
【図１】再構成可能な回路のブロック図を示す。
【図２】異種が混合した再構成可能なアーキテクチャの設計フロー図を示す。
【図３】本発明の様々な実施例に従うフローチャートを示す。
【図４】本発明の様々な実施例に従う電子システムのブロック図を示す。
【図１】
2007527075.tif 000003
【図２】
2007527075.tif 000004
【図３】
2007527075.tif 000005
【図４】
2007527075.tif 000006
【国際調査報告】
2007527075.tif 000007
2007527075.tif 000008
2007527075.tif 000009