【手続補正書】
【提出日】平成15年7月17日(2003.7.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
再プログラミング可能なハードウェアを用いて命令プロセッサをインプリメントするために、カスタマイゼーション仕様であって、アプリケーションソースコードを含むアプリケーション情報および設計制約を含むカスタマイゼーション情報を含む、カスタマイゼーション仕様に基づいて構成情報および関連する実行可能なコードを生成する方法であって、
インプリメンテーションのための候補として識別された各プロセッサスタイルに対するテンプレートを生成するステップと、
各テンプレートに対する命令情報を分析し、命令最適化を決定するステップと、
該命令最適化を含め、そして、実行可能なコードを生成するために該アプリケーションソースコードをコンパイルするステップと、
各テンプレートに対するアーキテクチャ情報を分析し、アーキテクチャ最適化を決定するステップと、
該アーキテクチャ最適化を含む構成情報を生成するステップと、
該アーキテクチャ最適化を含む該構成情報からデバイス固有の構成情報を生成するステップと、
を包含する、方法。
【請求項２】
各候補インプリメンテーションに対して前記構成情報および関連するコードをプロファイルするステップと、
それに応答して、予定可能な基準に基づいて１以上の最適なインプリメンテーションを選択するステップと
をさらに包含する請求項１に記載の方法。
【請求項３】
前記カスタマイゼーション情報は、少なくとも一つのカスタム命令をさらに含む、請求項１または２に記載の方法。
【請求項４】
前記カスタマイゼーション仕様の情報をプロファイルするステップと、
少なくとも一つのプロセッサスタイルを、インプリメンテーションのための候補として識別するステップと
をさらに包含する、請求項１〜３のいずれか１つに記載の方法。
【請求項５】
最適化を可能にするためのプロファイリング情報は、カスタマイゼーション仕様プロファイリングステップにおいて集められる、請求項４に記載の方法。
【請求項６】
前記命令情報分析ステップは、
前記命令情報を分析する際の前記プロファイリング情報を利用するステップと、
前記命令最適化を決定するステップと
を包含する、請求項５に記載の方法。
【請求項７】
前記命令情報分析ステップは、
候補命令最適化を識別するステップと、
前記候補命令最適化の命令に基づいて行われた推定に基づいて、前記命令最適化のインプリメンテーションを決定するステップと
を包含する、請求項１〜６のいずれか１つに記載の方法。
【請求項８】
前記推定が、前記再プログラミング可能なハードウェアがランタイム中に全命令を共にインプリメントするようにプログラミングされることができないことを提供する場合に、前記命令情報分析ステップは、
個々の命令を、前記再プログラミング可能なハードウェアを再プログラミングすることによってインプリメントされ得る命令のセットに組み合わせてグルーピングするステップを包含する、請求項７に記載の方法。
【請求項９】
前記命令情報分析ステップは、
異なるランタイム状態に対する複数のインプリメンテーションを決定するステップであって、それぞれは、該ランタイム状態に結び付けられる命令を有する、ステップと、
各インプリメンテーションに結び付けられた決定状態情報を生成するステップであって、該決定状態情報は、実際のランタイム状態に応じて該インプリメンテーション間の選択を可能にする、ステップと
を包含する、請求項１〜８のいずれか１つに記載の方法。
【請求項１０】
前記命令最適化が、設計制約とともにコンパイルするインプリメンテーションを提供することができない場合に、前記命令情報分析ステップは、
前記カスタマイゼーション仕様プロファイリングステップを呼び出し、該命令情報分析ステップによって提供された分析情報に基づいて該カスタマイゼーション仕様を再プロファイルするステップを包含する、請求項４に従属される場合に請求項１〜９のいずれか１つに記載の方法。
【請求項１１】
前記アーキテクチャ最適化は、パイプライン処理を含む、請求項１〜１０のいずれか１つに記載の方法。
【請求項１２】
再プログラミング可能なハードウェアの複数の構成が前記命令プロセッサをインプリメントすることが要求される場合に、前記命令ステップは、
個々の構成をグループに最適化するステップと、
該グループにされた構成のインプリメンテーションをスケジューリングするステップと
を包含する、請求項１〜１１のいずれか１つに記載の方法。
【請求項１３】
各テンプレートが、複数のプロセッサスタイルに対するプロセッサ定義および関連するパラメータを含むライブラリから抽出されたプロセッサ定義および関連するパラメータから生成される、請求項１〜１２のいずれか１つに記載の方法。
【請求項１４】
前記アプリケーションソースコードをコンパイルするステップにおいて利用された前記コンパイラは、前記命令情報分析ステップにおいて生成され、前記コンパイルするステップは、
カスタマイゼーション情報とともに前記アプリケーションソースコードに注釈を付けるステップと、
注釈が付けられたソースコードをコンパイルして、最適化された実行可能なコードを提供するステップと
を包含する、請求項１〜１３のいずれか１つに記載の方法。
【請求項１５】
前記コンパイルするステップは、
前記アプリケーションソースコードをコンパイルするステップと、
最適化を組み入れるために該コンパイルされたソースコードを再組織化して、最適化された実行可能なコードを提供するステップと
を包含する、請求項１〜１３のいずれか１つに記載の方法。
【請求項１６】
前記構成情報および関連する実行可能なコード、および関連する場合には前記決定状態情報を、再プログラミング可能なハードウェアを用いてインプリメントされた命令プロセッサの再構成を管理するためにある少なくとも一つの管理システムに配備するステップをさらに包含する、請求項１〜１５のいずれか１つに記載の方法。
【請求項１７】
前記構成情報および関連する実行可能なコード、および、関連する場合には、前記決定状態情報を、再プログラミング可能なハードウェアを再プログラミングすることを可能にするための少なくとも一つのライブラリに配備するステップをさらに包含する、請求項１〜１６のいずれか１つに記載の方法。
【請求項１８】
再プログラミング可能なハードウェアを用いて命令プロセッサをインプリメントするために、カスタマイゼーション仕様であって、アプリケーションソースコードを含むアプリケーション情報および設計制約を含むカスタマイゼーション情報を含む、カスタマイゼーション仕様に基づいて構成情報および関連する実行可能コードを生成するための設計システムであって、
インプリメンテーションの候補として識別された各プロセッサスタイルに対してテンプレートを生成するためのテンプレートジェネレータと、
各テンプレートに対する命令情報を分析し、命令最適化を決定するためのアナライザと、
該命令最適化を含めて、そして、実行可能なコードを生成するために該アプリケーションソースコードをコンパイルするためのコンパイラと、
各テンプレートに対するアーキテクチャ情報を分析し、アーキテクチャ最適化を決定し、そして、該アーキテクチャ最適化を含む構成情報を生成するためのインスタンチエータと、
該アーキテクチャ最適化を含む該構成情報からデバイス固有の構成情報を生成するためのビルダーと
を含む、システム。
【請求項１９】
再プログラミング可能なハードウェアにおいてインプリメントされる命令プロセッサのランタイム再構成を管理する方法であって、
複数の命令プロセッサのインプリメンテーションに対する構成情報を含む構成ライブラリを提供するステップと、
該インプリメンテーションのための関連する実行可能なコードを含ませるためのコードライブラリを提供するステップと、
命令プロセッサのインプリメンテーションおよび実行のために、アプリケーションデータ、および必要に応じて構成情報および実行可能なコードを、再プログラミング可能なハードウェアにロードするステップと、
該実行可能なコードを実行するステップと、
該命令プロセッサのオペレーションに関するランタイム統計を取得するステップと、
新しいインプリメンテーションに対する新しい構成情報および関連する実行可能なコードを該再プログラミング可能なハードウェアにロードするステップと
を包含する、方法。
【請求項２０】
前記ロードするステップは、予定可能なイベント上で自動的に行われる、請求項１９に記載の方法。
【請求項２１】
前記ロードするステップは、外部エージェントによって作動される、請求項１９または２０に記載の方法。
【請求項２２】
前記ロードするステップの前に、新しいインプリメンテーションに対する前記構成情報および関連する実行可能なコードを、それぞれ個々の構成ライブラリおよび前記コードライブラリにロードするステップをさらに包含し、
該ロードするステップは、外部エージェントにより作動する際に、該当するインプリメンテーションに対する前記構成情報および関連する実行可能なコードを、該再プログラミング可能なハードウェアにロードするステップを包含する、請求項２１に記載の方法。
【請求項２３】
前記インプリメンテーションの少なくとも一つに対する関連する決定状態情報を含ませるための決定状態ライプラリを提供するステップと、
該再プログラミング可能なハードウェアにおいてロードされた該インプリメンテーションの様々なランタイム状態に対する複数の他のインプリメンテーションに対する該決定状態情報をプロファイルするステップと、
他のインプリメンテーションのうちの任意に対する該決定状態情報が前記ランタイム統計により緊密に適合するかどうかを決定するステップとをさらに包含し、
該他のインプリメンテーションの一つに対する該決定状態情報が該ランタイム統計により緊密に適合する場合に、該ロードするステップは、
該当するインプリメンテーションに対する前記構成情報および関連する実行可能なコードを、前記再プログラミング可能なハードウェアにロードするステップを包含する、請求項１９〜２２のいずれか１つに記載の方法。
【請求項２４】
前記ランタイム統計に最適化された１以上の新しいインプリメンテーションを生成するステップをさらに包含する、請求項１９〜２３のいずれか１つに記載の方法。
【請求項２５】
各新しいインプリメンテーションに対する前記構成情報および関連する実行可能なコードを、それぞれ個々の構成ライブラリおよび前記コードライブラリにロードするステップをさらに包含する、請求項１９〜２２のいずれか１つに従属される場合の請求項２４に記載の方法。
【請求項２６】
各新しいインプリメンテーションに対する前記構成情報、関連する実行可能なコードおよび関連する決定状態情報を、それぞれ個々の構成ライブラリ、前記コードライブラリおよび前記決定状態ライブラリにロードするステップをさらに包含する、請求項２３に従属される場合の請求項２４に記載の方法。
【請求項２７】
新しいインプリメンテーションに対する前記構成情報および関連する実行可能なコードは、予定可能な基準を満足する前記再プログラミング可能なハードウェアにロードされる、請求項１９〜２６のいずれか１つに記載の方法。
【請求項２８】
前記インプリメンテーション生成ステップは、
前記ランタイム統計に基づいて命令情報を分析し、命令最適化を決定するステップと、
前記命令最適化を含ませるために前記アプリケーションソースコードをコンパイルし、実行可能なコードを生成するステップと、
該ランタイム統計に基づいてアーキテクチャ情報を分析し、アーキテクチャ最適化を決定するステップと、
該アーキテクチャ最適化を含む構成情報を生成するステップと、
該アーキテクチャ最適化を含む該構成情報からデバイス固有の構成情報を生成するステップと
を包含する、請求項２４〜２７のいずれか１つに記載の方法。
【請求項２９】
前記インプリメンテーションステップは、
各候補インプリメンテーションに対する前記構成情報および関連するコードをプロファイルするステップと、
それに応答して、予定可能な基準に基づいて１以上の最適のインプリメンテーションを選択するステップと
をさらに包含する、請求項２８に記載の方法。
【請求項３０】
前記インプリメンテーション生成ステップは、
カスタマイゼーション仕様および前記ランタイム統計内の情報をプロファイルするステップと、
少なくとも一つのプロセッサスタイルをインプリメンテーションのための候補として識別するステップと、
インプリメンテーションのための候補として識別された各プロセッサスタイルのためのテンプレートを生成するステップと
をさらに包含する、請求項２８または２９に記載の方法。
【請求項３１】
最適化を可能にするためのプロファイリング情報は、前記カスタマイゼーション仕様プロファイルステップにおいて収集される、請求項３０に記載の方法。
【請求項３２】
前記命令情報分析ステップは、
該命令情報を分析する際に前記プロファイリング情報を利用するステップと、
該命令最適化を決定するステップと
を包含する、請求項３１に記載の方法。
【請求項３３】
前記命令情報分析ステップは、
候補命令最適化を識別するステップと、
該候補命令最適化の命令に基づいて行われた推定に基づいて前記命令最適化のインプリメンテーションを決定するステップと
を包含する、請求項２８〜３２のいずれか１つに記載の方法。
【請求項３４】
前記推定が前記再プログラミング可能なハードウェアがランタイム中に全命令を共にインプリメントするためにプログラミングされることができないことを提供する場合に、前記命令情報分析ステップは、
個々の命令を、前記再プログラミング可能なハードウェアを再プログラミングすることによってインプリメントされ得る命令のセットに組み合わせてグループ化するステップを包含する、請求項３３に記載の方法。
【請求項３５】
前記命令情報分析ステップは、
異なるランタイム状態に対する複数のインプリメンテーションを決定するステップとであって、それぞれは、前記ランタイム状態に結び付けられた命令最適化を有する、ステップと、
各インプリメンテーションに結び付けられた決定状態情報を生成するステップであって、該決定状態情報は、実際のランタイム状態に応じて該インプリメンテーション間の選択を可能にする、ステップと
を包含する、請求項２８〜３４のいずれか１つに記載の方法。
【請求項３６】
前記命令最適化が、設計制約とともにコンパイルするインプリメンテーションを提供できない場合に、前記命令情報分析ステップは、
前記カスタマイゼーション仕様プロファイルステップを呼び出して、該命令情報分析ステップによって提供された分析情報に基づいて該カスタマイゼーション仕様を再プロファイルするステップと
を包含する、請求項３０に従属される場合の請求項２８〜３５のいずれか１つに記載の方法。
【請求項３７】
前記アーキテクチャ最適化は、リソース複製を含む、請求項２８〜３６のいずれか１つに記載の方法。
【請求項３８】
再プログラミング可能なハードウェアの複数の構成は、前記命令プロセッサをインプリメントすることが要求され、前記インスタンス生成ステップは、
個々の構成をグループに最適化するステップと、
グループ化された構成のインプリメンテーションをスケジューリングするステップと
を包含する、請求項２８〜３７のいずれか１つに記載の方法。
【請求項３９】
各テンプレートは、複数のプロセッサスタイルに対するプロセッサ定義および関連するパラメータを含むライブラリから抽出されたプロセッサ定義および関連するパラメータから生成される、請求項３０〜３８のいずれか１つに記載の方法。
【請求項４０】
前記アプリケーションソースコードをコンパイルする際に利用された前記コンパイラは、前記命令情報分析ステップにおいて生成され、該コンパイルステップは、
カスタマイゼーション情報とともに該アプリケーションソースコードに注釈を付けるステップと、
該注釈が付けられたソースコードをコンパイルして最適化された実行可能なコードを提供するステップと
を包含する、請求項２８〜３９のいずれか１つに記載の方法。
【請求項４１】
前記コンパイルするステップは、
前記アプリケーションソースコードをコンパイルするステップと、
最適化を組み入れるために該コンパイルされたソースコードを再組織化して最適化された実行可能なコードを提供するステップと
を包含する、請求項２８〜３９のいずれか１つに記載の方法。
【請求項４２】
再プログラミング可能なハードウェアを用いてインプリメントされた命令プロセッサのランタイム再構成を管理するための管理システムであって、
複数の命令プロセッサインプリメンテーションに対する構成情報を含む構成ライブラリと、
該インプリメンテーションに対する関連する実行可能なコードを含めるためのコードライブラリと、
アプリケーションデータ、および必要に応じて構成情報および関連する実行可能なコードを、命令プロセッサのインプリメンテーションおよび実行のための再プログラミング可能なハードウェアにロードするためのローダーと、
ローダーにアプリケーションデータ、および必要に応じて構成情報および関連する実行可能なコードをロードし、該実行可能なコードを実行するように信号を出すためのローダーコントローラと、
該命令プロセッサのオペレーションに関するランタイム統計を取得するためのランタイムモニタと、
該ランタイム統計を受け取り、該ローダに、新しいインプリメンテーションに対する新しい構成情報および関連する実行可能なコードを該再プログラミング可能なハードウェアにロードするように指示するようにオペレーション可能に構成された最適化デタミナと、
最適化デタミナーを呼び出すための最適化インストラクタと
を含む、システム。