(57)【要約】  適応可能な計算エンジンのためのスケジューラの適用が記載される。この適用は、適応可能な計算エンジン上のアセンブル済みのプログラムの特定のセグメントを実行するために使用可能なハードウェアリソースとして、複数の計算ユニットを提供することを含む。特定のセグメントに対するスケジュールは、実現可能なスケジュールが実現されるまで、反復的な手法により、特定のセグメントを表示するデータフローグラフに位置する複数の計算ユニットを割当てることにより、生成される。【特許請求の範囲】
【請求項１】
アセンブルされたプログラムを、適応可能な計算エンジン内で、スケジューリングする方法であって、
前記アセンブルされたプログラムの特定のセグメントを実行するために使用可能なハードウェアのリソースとして、複数の計算ユニットを提供する工程と、
データフローグラフとして、前記特定のセグメントを表示する工程と、
実行可能なスケジュールが実現されるまで、反復的な手段により、前記データフローグラフに従って、前記複数の計算ユニットを割当てることにより、スケジュールを精緻化する工程とを備える方法。
【請求項２】
前記精緻化する工程は、前記スケジュールのコストを表示する値と対応付ける工程と、前記値が許容可能な状態を満たすか否か判定する工程とを備える請求項１に記載の方法。
【請求項３】
許容可能な前記状態は、更にコストがゼロで構成される請求項２に記載の方法。
【請求項４】
前記値が許容可能な状態を満たさない場合、前記方法は、更に無作為な手段により、微増加の変化を通じて、前記スケジュールを変更することにより、変更後のスケジュールを提供する工程を備える請求項２に記載の方法。
【請求項５】
前記無作為な手段により変更する工程は、更に無作為に前記データフローグラフのノードを選択する工程と、前記無作為に選択したノードのために、利用可能な変化を選択する工程とを備える請求項４に記載の方法。
【請求項６】
前記変更後のスケジュールのために、更に、前記値を計算する工程を備える請求項４に記載の方法。
【請求項７】
前記変更後のスケジュールが、前記スケジュールの前記値よりも計算した値が高い場合、前記変更後のスケジュールは使用されない、請求項６に記載の方法。
【請求項８】
前記変更後のスケジュールが、前記スケジュールの前記値よりも計算した値が低い場合、前記方法は、前記スケジュールとして、前記変更後のスケジュールを指示する工程と、前記値が許容可能な状態を満たすか否か判定する工程とを備える請求項６に記載の方法。
【請求項９】
前記方法が許容可能な状態を満たす場合、前記方法は、更に前記実行可能なスケジュールとして、前記スケジュールを指示する工程を備える請求項８に記載の方法。
【請求項１０】
実行可能なスケジュールが実現された場合に、スケジュール済みのデータフローグラフとして、前記特定のセグメントを表示する工程を備える請求項９に記載の方法。
【請求項１１】
前記複数の計算ユニットを提供する工程が、適応可能な計算機内のマトリックスとして、複数の計算ユニットを提供する工程を備える請求項１に記載の方法。
【請求項１２】
アセンブルされたプログラムを、適応可能な計算エンジン内で、スケジューリングするためのシステムであって、
前記アセンブルされたプログラムの特定のセグメントを実行するために、使用可能なハードウェアを提供するための複数の計算ユニットと、
前記複数の計算ユニットを構成するためのホストコントローラと、
実行可能なスケジュールが実現されるまで、反復的な手段により，前記特定のセグメントを表示するデータグラフに従って、前記複数の計算ユニットを割当てるスケジュールを
精緻化することにより、前記特定のセグメントを実行する前記複数の計算ユニットを、スケジュールし、割当てるための手段を備えるシステム。
【請求項１３】
前記複数の計算ユニットは、更に、適応可能な計算エンジンのマトリックスを備える請求項１２に記載のシステム。
【請求項１４】
前記スケジュールし、割当てるための手段は、更に前記スケジュールのコストを表示する値と対応付けし、前記値が許容可能な状態を満たすか否か判定する請求項１２に記載のシステム。
【請求項１５】
前記許容可能な状態が、更にコストがゼロで構成される請求項１２に記載のシステム。
【請求項１６】
前記値が許容可能な状態を満たさない場合、スケジューリング及び割当てのための前記手段が、前記変更後のスケジュールを提供するため、無作為な手段による微増加の変化を通じて、前記スケジュールを変更する請求項１４に記載のシステム。
【請求項１７】
スケジューリングと変更のための前記手段は、無作為な手段により、前記データフローグラフのノードを選択することと、無作為による前記選択したノードのために使用可能な変更を選択することとにより、変更する請求項１４に記載のシステム。
【請求項１８】
スケジューリング及び割当てのための前記手段は、前記変更後のスケジュールのための前記値を計算する請求項１６に記載のシステム。
【請求項１９】
前記変更後のスケジュールが、前記スケジュールの前記値より計算した値が高い場合、前記変更後の値は使用されない請求項１８に記載のシステム。
【請求項２０】
前記変更後のスケジュールが、前記スケジュールの前記値よりも計算した値が低い場合、スケジューリングと変更のための前記手段は、更に前記スケジュールとして、前記変更後のスケジュールを指示し、前記値が許容可能な状態を満たすか否か判定を繰り返す請求項１８に記載のシステム。
【請求項２１】
前記値が許容可能な状態を満たす場合、更に、スケジューリングと変更のための前記手段は、実行可能なスケジュールとして、前記スケジュールを命令する請求項２０に記載のシステム。
【請求項２２】
スケジューリングと変更のための前記手段は、更に、実現可能なスケジュールが実現された場合、前記スケジュール済みのデータフローグラフとして特定のセグメントを表示する請求項２１に記載のシステム。
【請求項２３】
適応可能な計算エンジン内で計算ユニットのマトリックスとして最適なスケジュールを判定する方法であって、
あるコードセグメントの実行ために、前記マトリックスを利用する選択したスケジュールのために、コストの値の表示を判定する工程と、
前記値が許容可能なコストレベルに達するまで微増加の工程を通して、無作為に、選択したスケジュールを調整する工程と、
許容可能なコストレベルが実現された場合、実現可能なスケジュールを指示する工程とを備える方法。
【請求項２４】
更に、前記許容可能なコストレベルは、コストがゼロである請求項２３に記載の方法。
【請求項２５】
ノード及びエッジのデータフローグラフとして、前記コードセグメントを表現する工程を、更に備える請求項２３に記載の方法。
【請求項２６】
調整する前記工程は、更に無作為にデータフローグラフのノードを選択する工程と、選択したスケジュールを調整するための無作為なノードのために使用可能な変化を選択する工程とを備える請求項２５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、適切な時期でのプログラム命令のスケジューリングと、処理命令リソースに対する割当てに関する。
【背景技術】
【０００２】
電子産業は、組み込みシステム市場の大部分を構成する、大容量の民生用アプリケーションの要求に対応するよう、次々と推進されてきた。組み込みシステムは、最小限の遅延、最小限の電力消費を伴い、さらに、最小限の費用で性能を製造するという課題に直面している。組み込みシステムを採用した民生用アプリケーションの数と種類が増加するにつれ、これらの課題は更により急を要している。組み込みシステムが採用された民生用アプリケーションの例は、携帯電話、携帯情報端末（ＰＤＡ）、全地球測位（ＧＰＳ）受信機、デジタルカメラ等の携帯端末である。これらの装置は、性質により、小型、低電力、軽量、機能豊富であることを要求される。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
機能豊富な性能を提供する試みにおいて、装置内の利用可能なハードウェアのリソースの効率的な利用を作り出す能力が最重要になってきた。複数の処理要素を採用するほとんど全ての環境において、要素がプロセッサ、メモリ、レジスタファイル等のどんな形態をとったとしても、格別関心を持たれることは、即座に、タスクのために利用可能な各要素の効率的な作動を見出すことである。従って、スケジューリングの最適な手段を識別し、更にリソースを割当てるための適切な意志決定処理は、効率的且つ効果的なシステムを実現するために必要である。本発明はその必要性に対するものである。
【課題を解決するための手段】
【０００４】
適応可能な計算エンジンのための態様を記載した。この様態は、適応可能な計算エンジンでアセンブルされたプログラムの特定のセグメントを実行するために利用可能なハードウェアのリソースとして複数の計算ユニットを提供することを含む。特定のセグメントに対するスケジュールは、実行可能なスケジュールが実現されるまで、反復的な手段により、特定のセグメントを表示するデータフローグラフに一致する複数の計算ユニットを割当てることによって、精緻化される。
【発明を実施するための最良の形態】
【０００５】
本発明は適切な時期でのプログラム命令のスケジュール及び処理リソースに対する命令の割当てに関する。以下の記載は、当業者が本発明を作成し、使用可能なように提示され、特許出願及びその仕様に従い提供される。本開示に記載された好適な実施形態に対する多様な変更、一般的な原理、及び形態は、当業者に容易に理解される。従って、本発明は、示された実施形態により限定されず、本開示に記載された原理及び形態により構成された幅広い範囲を与えられる。
【０００６】
好適な実施形態において、本発明の態様は、本発明の譲渡人に譲渡された、同時継続米国特許出願、号の「ヘテロジニアスで、さらに多様な再構成可能なマトリクスと、固定応用特有の計算要素を有する適応性の計算ユニットとを備える適応性集積回路（“Ａｄａｐｔｉｖｅ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔｒｙ  ｗｉｔｈ  Ｈｅｔｅｒｏｇｅｎｅｏｕｓ  ａｎｄ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｍａｔｒｉｃｅｓ  ｏｆ  Ｄｉｖｅｒｓｅ  ａｎｄ  Ａｄａｐｔｉｖｅ  Ｃｏｍｐｕｔａｔｉｏｎａｌ  Ｕｎｉｔｓ  Ｈａｖ
ｉｎｇ  Ｆｉｘｅｄ，  Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｃｏｍｐｕｔａｉｏｎａｌ  Ｅｌｅｍｅｎｔｓ”）」記載に関する適応可能な計算エンジンに関して提供され、その内容は本願に組入れられている。その記載の一部は、本発明の適用の説明を明解にするために以下に再び記載される。
【０００７】
図１を参照すると、ブロックダイヤグラムは、集積回路、又は他の追加コンポーネントを有する集積回路の一部として、好適には組入れられている、適応可能な計算（アダプティブコンピューティング）エンジン（ＡＣＥ）１００を示している。好適な実施形態において、以下の詳細な記載により、ＡＣＥ１００は、コントローラ１２０と、図示されているマトリックス１５０Ａから１５０Ｎ等の、一つ以上の再構成可能なマトリックス１５０と、マトリックス相互接続ネットワーク１１０とを含み、更に好適にはメモリ１４０を含む。
【０００８】
従来技術との大きな違いは、ＡＣＥ１００は、再構成可能なマトリックス１５０、コントローラ１２０、メモリ１４０の間及びこれら内部、並びに他の入力／出力（Ｉ／Ｏ）機能との間における信号及び他の通信のために、従来の（及び典型的には分離）データ及び命令バスを利用しない。むしろ、下記の詳細のように、構成され、更に再構成されることにより、リアルタイムにより、再構成可能なマトリックス１５０、コントローラ１２０、メモリ１４０の間及び内部に所与の接続を提供し得る、マトリックス相互接続ネットワーク１１０を利用することにより、データ、制御、及び構成情報は、これらの要素の間及び内部を送信される。
【０００９】
メモリ１４０は、公知の、所望の又は好適な方法により実施され得、ＡＣＥ１００内部に含まれ得、又は他のＩＣ或いはＩＣの一部に組入れられ得る。好適な実施形態において、メモリ１４０は、ＡＣＥ１００内に含まれ、及び好ましくは低消費電力のランダムアクセスメモリ（ＲＡＭ）であるが、更に、フラッシュ、ＤＲＡＭ，ＳＲＡＭ，ＭＲＡＭ、ＥＰＲＯＭ、Ｅ２ＰＲＯＭなどの他の形態のメモリであってもよい。好適な実施形態においては、メモリ１４０は好適には直接メモリ接続（ＤＭＡ）エンジンを含むが、これは分離して図示されていない。
【００１０】
コントローラ１２０は、好適には下記の二種類の機能を実行可能な能力を有する、縮小命令セット（ＲＩＳＣ）プロセッサ、コントローラ、他のデバイス、又はＩＣとして実施される。「カーナル」制御と言われる第一制御機能は、カーナルコントローラ（ＫＡＲＣ）１２５と図示され、［マトリックス］制御と言われる第二制御機能は、マトリックスコントローラ（ＭＡＲＣ）１３０として図示される。
【００１１】
多様なマトリックス１５０は再構成可能で、ヘテロジニアスであり、即ち、一般的に、所望の構成に依存する。再構成可能なマトリックス１５０Ａは、一般的に再構成可能なマトリックス１５０Ｂから１５０Ｎと異なり、再構成可能なマトリックス１５０Ｂは、一般的に再構成可能なマトリックス１５０Ａ、及び再構成可能なマトリックス１５０Ｃから１５０Ｎと異なり、再構成可能なマトリックス１５０Ｃは、一般的に再構成可能なマトリックス１５０Ａ、１５０Ｂ、及び再構成可能なマトリックス１５０Ｄから１５０Ｎと異なる、等である。多様な各再構成可能なマトリックス１５０は、一般的に、多種多様な計算ユニット（２００、図２）を含み、さらにこれは、相互接続ネットワークを通じて、多様な機能を実行する多様な方法により、接続され、構成され、再構成され得る、固定応用特有の計算要素（２５０、図２）の多種多様な組合せを含む。多様な内部の構成及び再構成に加えて、多様なマトリックス１５０は、他のマトリックス１５０に対して、マトリックス相互接続ネットワーク１１０を通じて、高いレベルにおいて接続され、構成され、再構成され得る。
【００１２】
図２を参照すると、ブロックダイヤグラムは、より詳細に、複数の計算ユニット２００（計算ユニット２００Ａ〜２００Ｎとして図示される）、及び複数の計算要素２５０（計算要素２５０Ａ〜２５０Ｚとして図示される）を備える再構成可能なマトリックス１５０を例示し、好適な種類の計算要素２５０のさらなる例を提供する。図２に図示するように、幾つかのマトリックス１５０は、一般的に、マトリックスコントローラ２３０、複数の計算（又は計算的な）ユニット２００、論理上又は概念上の、相互接続ネットワーク１１０の部分集合又は部分として、データ相互接続ネットワーク２４０、ブーリアン相互接続ネットワーク２１０を含む。上記のように、データ相互接続ネットワーク２４０が、様々な計算ユニット２００の間及び内部のデータ入力及び出力のための、再構成可能な相互接続の能力を提供する。一方、ブーリアン相互接続ネットワーク２１０が、多様な計算ユニット２００の間及び内部のブーリアン又は論理的な入力及び出力のための再構成可能な相互接続の能力を提供する。しかし、概念的にはブーリアン及びデータ機能に分割されているが、マトリックス相互接続ネットワーク１１０のいかなる所与の物理的部分は、いかなる所定の時間においても、ブーリアン相互接続ネットワーク２１０、データ相互接続ネットワーク２４０、最低レベルの相互接続２２０（多様な計算要素２５０の間及び内部）、他の入力、出力、又は接続機能として作動し得る。
【００１３】
図２の説明を続けると、計算ユニット２００内部に含まれるものは、計算的なユニット２５０Ａ〜２５０Ｚ（集合的に計算的なユニット２５０として参照される）として示される、複数の計算的なユニット２５０と、追加的な相互接続２２０である。相互接続２２０は、再構成可能な相互接続の能力と、多様な計算要素２５０の間及び内部の入力／出力パスとを提供する。上記のように、各多様な計算要素２５０は、多様な複数の、固定の計算要素２５０により生じる、所与のタスク又はタスクの範囲を実行するように設計される、専用の適用特異的なハードウェアから構成される。固定計算要素２５０は、相互に再構成可能に接続され、常に、相互接続２２０、ブーリアンネットワーク２１０、マトリックス相互接続ネットワーク１１０を利用することにより、アルゴリズム又は他の機能を実行し得る。
【００１４】
好適な実施形態において、多様な計算要素２５０は、多様な再構成可能な計算ユニット２００内部に設計され、集合される。乗算等の、特定のアルゴリズム又は機能を実行するように設計される、計算要素２５０に、さらに他の種類の計算要素２５０が、利用され得る。図２に図示したように、計算要素２５０Ａ及び２５０Ｂは、メモリとして実施することにより、所与の演算又は処理機能に対して、（より「離れた（リモート）」メモリ１４０と比較すると）ローカルメモリ要素を提供する。更に、計算要素２５０Ｉ、２５０Ｊ、２５０Ｋ、２５０Ｌは、有限状態機械を実施するために、（複数のフリップフロップを使用する等）構成されることにより、（より「リモート」ＭＡＲＣ１３０と比較すると）ローカル処理能力を提供し、特に複雑化した制御処理のために適切である。
【００１５】
好適な実施形態において、マトリックスコントローラ２３０は、更にいかなる所与のマトリックス１５０に含まれることにより、よりすぐれた参照の局所性及び、いかなる再構成処理及びいかなる対応データ操作の制御を提供する。例えば、計算要素２５０の再構成が、いかなる所与の計算ユニット２００内で生じた場合でも、マトリックスコントローラ２３０は、特定の命令（又は構成）が、所与の用途のための反復データ処理を続ける特定の期間に、そのまま保持するように指示され得る。
【００１６】
ＡＣＥ１００の所望の機能に依存して、使用可能な、多様な種類の様々な計算要素２５０を使用することにより、計算ユニット２００は、大まかに分類され得る。計算ユニット２００の第一分類は、乗算、加算、有限インパルス応答のフィルタリング等、線形演算を実行する計算要素２５０を含む。計算ユニット２００の第二分類は、離散コサイン変換、三角計算、複合乗算等の、非線形演算を実行する計算要素２５０を含む。計算ユニット２
００の第三分類は、図２で図示したような計算ユニット２００Ｃ等の、特に複雑な制御配列、動的なスケジューリング、及び入力／出力の管理に対して有用な、有限状態機械として実施する。第四分類は、計算ユニット２００Ａなど、メモリ及びメモリ管理を実施し得る。最後に計算ユニット２００の第五分類は、チャネル符号化等をビットレベルの処理を実行することを含み得る。
【００１７】
これらの計算ユニットから最適な性能を作り出すことは、多くの考慮事項に影響する。特に重要な考慮事項は、有用に作業を実行するために、使用可能なハードウェアのリソースをどのようにスケジュールし、割当てるか決定することである。全体的に、本発明は、計算ユニットの使用可能なハードウェアのリソースにより、コンパイル済みのプログラムのアセンブルされた形態をスケジュールすることに関する。スケジュールは、どのように、命令が、どの時間に、更に効率的に、その能力を最大化する手段を使用される使用可能な順番のリソースを使用して、実行されるか指示するスケジューラツールにより提供される。最適化を実行することにより、スケジューラはコントローラのセパレータ部分からの情報を利用する。セパレータは、スケジュールされ得るデータフローグラフ表示する、符号「セグメント」を抽出する。符号セグメントは、「ｆｏｒ  ｌｏｏｐｓ」、「ｉｆ−ｔｈｅｎ−ｅｌｓｅ」より生成したバリアから生じ、更に、サブルーチンが、プログラム中のバリアを判定するための従来の配列モデルとして周知の、実行されるプログラムより呼び出される。従って、セグメントをスケジュールするために、セパレータは更にセグメントを分割し、どのセグメントがレジスタを共用するかを判定し、及び内部ループ及び、高優先順位としてプラグラマ−が呼び出したセグメントに優先度を与えるなど、優先度を有するセグメントを判定する。セパレータは、各符号セグメントに対してスケジューラを呼出し、事前割当されたレジスタを指示する。
【００１８】
図３は、スケジューラが呼び出された場合のスケジューリング処理による工程に対するブロックダイヤグラムを示している。図示のように、処理は、ハードウェア構成ファイルから生じる、ハードウェアの構成テーブル（工程３００）の初期化により開始される。ハードウェアの構成ファイルは、その演算及びＩ／Ｏリソース、並びにネットワークリソースに関して単一種類のマトリックスに対する構成を定義する。従って、演算及びＩ／Ｏリソースは
各計算ユニット（ＣＵ）の数と種類により、各マトリックスに対して、特定される。各ＣＵに対して、そのＣＵ上で実行され得る演算のリストが、特定される。リスト内の各演算に対して、ハードウェアにより要求されるパイプラインの遅延の数、演算が同期的（加算等）又は非同期的（引算等）のどちらであるか、及び非同期演算について、ハードウェアが切替オペランドを制御可能であるか否かに対する仕様が、提供される。各マトリックスに対するネットワークのリソースは、全てのＣＵ出力ポートからＣＵ入力ポートのルートに対するクロスポイントのテーブルにより、特定される。各ルートに対して、ルートの種類（レジスタファイル、ラッチ、無線等）、及びブロッキングリスト（あるルートが使用される場合にブロックされる他のルート等）が、特定される。各レジスタファイルルートの種類に対して、ファイル内のレジスタの数とパイプラインの遅延の数は特定される。
【００１９】
スケジューラは更に入力データフローグラフ（工程３０５）を初期化する。上記のように、符号セグメントは、データフローグラフとして、抽出され、更に表示される。データフローグラフはノード及び端（エッジ）の集合により形成される。図４に図示するように、ソースノード４００は、一つ以上の宛先ノード４０５，４１０に値をブロードキャストし、この場合、各ノードは、原子動作、即ち、加算又はシフト等の、単一演算として、基礎となるハードウェアによりサポートされる演算等を実行する。オペランドは、エッジ４２０として表示されるパスに沿って、ある出力ポートによるソースノード４００からの出力であり、この場合、エッジ４２０は、ソースノード４００の出力エッジとして作動し、宛先ノード４０５及び４１０の入力ポートに対する入力エッジへ分岐する。論理的な観点
によれば、ノードはゼロ時間で実行される。ノードは、ノードの全ての入力エッジとして、値を有した場合に、実行／起動（ファイヤ）する。入力エッジ以外のノードは待機することにより、クロックサイクルがゼロにおいて実行する。
【００２０】
更に、２種類のエッジが、データフローグラフにより表示され得る。状態エッジは、レジスタにより認識され、一クロックサイクルの遅延を有し、定数及びフィードバックパスとして使用され得る。無線エッジは、ゼロクロックサイクルの遅延を有し、現在のクロックサイクル中のみ有効な値を有し、従って、宛先ノードが、ソースノードのように、同一の論理クロックサイクル上で実行するようにする。スケジューラは、論理クロックサイクルを取り、計算リソース及びネットワークリソースの使用可能性に基づく、物理クロックサイクル全体に、論理クロックサイクルを展開する。データフローグラフが正常に一回実行され、二度と使用されないとすると、データフローグラフは‘ｆｏｒ−ｌｏｏｐ’を実行するために何度もインスタンス化され得る。状態エッジは、‘ｆｏｒ−ｌｏｏｐ’が開始前に、初期化される必要があり、その結果は、‘ｆｏｒ−ｌｏｏｐ’が終了時に、状態エッジから‘コピー’され得る。一部の演算は、単一のデータストリームからの入力など、順番に並べる必要がある。データフローグラフは、仮想ブーリアンエッジを含むことにより、ノードを連続的に実行させる。
【００２１】
スケジューラ自身は、入力データフローグラフにより特定したノードのリスト内のどのノードが、単一クロックサイクルと並列に実行され得るか、及びどのノードが次のサイクルに対して遅延されるべきか、判定する。更にスケジューラは、レジスタを割当てることにより、（ノードの遅延実行により要求される）中間値を保持し、状態変数を保持し、及び定数を保持する。更に、スケジューラはレジスタの寿命を解析することにより、レジスタが再使用し得る時を判定し、ＣＵにノードを割当て、ノードが特定のクロックサイクルにより実行されるようスケジュールする。従って、各ノードに対して、演算的コード（ＯＰコード）と、ソースコードに対するポインタ（ｆｉｒＦｉｌｔｅｒ．ｑ、５５行）と、適切な場合、事前割当ＣＵと、入力エッジのリストと、出力エッジのリストとを含み、各エッジ、ソースノード、宛先ノード、及びエッジが初期値を有するか否かを示すフラグ等の状態フラグ等に対する、幾つかの仕様がある。
【００２２】
再び図３を参照すると、初期化工程に後続して、スケジューラは、‘至急（ＡＳＡＰ）’スケジュール  （工程３１０）、及び‘半コンピュータ化’スケジュール（工程３１５）を判定することにより、初期スケジュールを判定する。ＡＳＡＰスケジュールは、データフローグラフを通したスキャンを行い、更に、命令中のデータ依存性の制約条件のみを伴う使用可能な無限の資源がある場合、どのようにグラフが実行されるか判定される。ＡＳＡＰスケジュールは、最小数の可能なクロックサイクル、最大数の使用され得るＣＵ、最大のレジスタの寿命を含む、情報をグラフに提供する。ＡＳＡＰスケジュール及び実際に使用可能なハードウェアのリソースの量に基づいて、‘半コンピュータ化’スケジュールが構成される。半コンピュータ化スケジュール及びリソース情報の一部の使用に基づいて、スケジューラに対する初期スケジュールが作成される。
【００２３】
初期スケジュールを使用して、スケジュールに対する「コスト」が評価される（工程３２０）。本開示の目的のため、コストは、スケジュールの利点を反映する値を参照する。好適な実施形態において、工程３２５を経て判定されたように、コストがゼロと見出される等、コストが許容可能な状態内にあると見出された場合、次に実現可能なスケジュールが見出される（工程３３０）。初期スケジュールがコストを要求して生じることが起こり得る場合、反復的な手法が、特定のスケジュールに対してコストをゼロに減少する必要があると期待される。反復的に実行することにより、スケジューラに対する規定の最適化パラメータが使用される。
【００２４】
最適化パラメータは、どのようにスケジューラが最適な解法を探索するか、適切に制御する。最適化パラメータは、解法を見出すために最適化のループを実行する回数を示す、ｎＬｏｏｐ等のパラメータと、各試行に対して、時間及び空間においてあるノードの移動を試みる各ループに対する試行数を示すｎＴｒｉａｌパラメータと、コストを増加し得るが、究極的には収束を獲得することを補助する「劣化」変更において、どの程度の「劣化」変更が許容可能であるか制御する、許容変化確率パラメータ等を含む。これらのパラメータは、スケジュールの最適化中に採用される発見的方法の一部を形成する。発見的方法は、当業者にスケジュールの特定のアルゴリズムを試みること、特定のハードウェアの構成を使用すること、解法に収束する間に、スケジューラがそれ自身をトラップするものを観測することとを含む、試行錯誤の経験に基づく、最適化のガイドラインを参照する。
【００２５】
従って、これらの最適化パラメータは、スケジュールのコストがゼロで無い場合に役割を果たす（工程３２５が肯定的の場合）。スケジュールのコストがゼロで無い場合、微増加の変化が、あるノードの再スケジュールにより、行われる（工程３３５）。微増加工程を実行中に、ノードは無作為に選択される。更に、この工程は、ノードのスケジュール及び割当てを行い得る、全ての変化の候補に基づき、これらの変化の候補の一つは無作為に選択される。例えば、変化の候補は、ノードがスケジュールされた場合、クロックサイクルを、又は、ノードが割当てられたＣＵを変更することを含み得る。次に、コストは再計算される（工程３４０）。工程３４５を経由して判定されたように、コストが増加した場合、前回のスケジュールに戻る（工程３５０）、しかし、コストが増加しなかった場合、変化が供されることにより、変化後のスケジュールを提供する（工程３５５）。次にこの処理は、工程３２５に戻ることにより、実現可能なスケジュールが見出されるまで、工程３３５，３４０，３４５，３５０及び３５５が適当に繰り返されることにより形成される、最適化のためのループを使用して、コストがゼロか否か判定する。
【００２６】
実現可能なスケジュールが見出されると共に、スケジューラは、スケジュール済みのデータフローグラフを提供する。スケジュール済みのデータフローグラフは、各ノードに対して、割当て済みのＣＵと、スケジュール済みのクロックサイクルと、入力オペランドが切替えられたか否か示す切替えフラグとの情報を提供する。各エッジに対して、スケジュール済みのデータフローグラフは、ソース及び宛先ノードの間で使用されるルート、及びレジスタの割当てを示す。この手法により、続くプログラムコードの実行は、使用可能なリソースの最適化を利用して行われる。
【００２７】
上記により、多くの変形及び変更が本発明の新規の概念の精神と範囲から離れることなく実行され得る。本開示で例示した特定の方法及び装置に関して限定されないことを意図されることが理解され、推論され得る。当然、全てのこのような変更が、請求項の範囲内に収まるように、添付した請求項が覆うことを意図する。
【図面の簡単な説明】
【００２８】
【図１】適応可能な計算エンジンを示すブロックダイヤグラム。
【図２】再構成可能なマトリックス、複数の計算ユニット、適応可能な計算エンジンの複数計算ユニットを示すブロックダイヤグラム。
【図３】本発明に基づくスケジューリングプロセスを示すブロックダイヤグラム。
【図４】本発明に基づくデータフローグラフの表示を示す概念図。
【図１】
2005510778.tif 000002
【図２】
2005510778.tif 000003
【図３】
2005510778.tif 000004
【図４】
2005510778.tif 000005
【国際調査報告】
2005510778.tif 000006