(57)【要約】ハイブリッドプロセッサを構築する新しい一般的な方法は、さらに強力で堅密に結合された命令セット拡張が再構成可能な論理装置で構成されることを可能にすることによりアプリケーションでさらに高い性能を実現する。新しいセット命令が自動および半自動方法により発見され設計される。改良された再構成可能な実行ユニットは深いパイプライン化、付加的なレジスタおよびレジスタファイルの付加、多数のソースおよび目的地レジスタを有する複合命令、広いデータパスをサポートする。新しいインターフェース方法は低い待ち時間、ハイブリッドプロセッサと他の論理装置との間の高い帯域幅接続を可能にする。
2005522781.tif 000002
【特許請求の範囲】
【請求項１】
異なるアプリケーションに適したベースプロセッサ命令を有する第１の論理技術で構成された構成可能ではないベースプロセッサ設計と、
構成可能ではないベースプロセッサ設計に堅密に結合されている第１の論理技術とは異なる第２の論理技術で構成され、それぞれ複雑な演算を行う拡張された命令を実行することができる構成可能な論理設計とを具備しているハイブリッドプロセッサ。
【請求項２】
ベースプロセッサ設計の第１の論理技術はカスタム論理装置と標準的なセル回路設計技術の一方を使用し、構成可能な論理設計の第２の論理技術はフィールドプログラム可能な論理装置の使用を含んだ別の設計技術を使用する請求項１記載のハイブリッドプロセッサ。
【請求項３】
フィールドプログラム可能な論理装置はＲＡＭベースのルックアップテーブルで構成されている請求項２記載のハイブリッドプロセッサ。
【請求項４】
ベースプロセッサ設計の第１の論理技術と構成可能な論理設計の第２の論理技術はそれぞれ半導体装置として構成される請求項２記載のハイブリッドプロセッサ。
【請求項５】
ベースプロセッサ設計の第１の論理技術と構成可能な論理設計の第２の論理技術は標準的なセルまたはゲートアレイ論理回路の使用を含んでいる別の設計技術を使用する請求項１記載のハイブリッドプロセッサ。
【請求項６】
ベースプロセッサ設計の第１の論理技術と構成可能な論理設計の第２の論理技術はそれぞれ半導体装置として構成される請求項５記載のハイブリッドプロセッサ。
【請求項７】
ベースプロセッサ設計は幅３２ビットのレジスタを有している請求項１記載のハイブリッドプロセッサ。
【請求項８】
ベースプロセッサ設計は少なくとも１６の汎用目的レジスタをサポートし、ベース命令フォーマットは３２ビットよりも少ないビットを使用する請求項１記載のハイブリッドプロセッサ。
【請求項９】
構成可能な論理設計は２以上のサイクルのパイプラインの深さを有する請求項１記載のハイブリッドプロセッサ。
【請求項１０】
少なくとも１つの拡張された命令は拡張されたレジスタまたは拡張されたレジスタファイルで動作する請求項１記載のハイブリッドプロセッサ。
【請求項１１】
少なくとも１つの拡張された命令はベースプロセッサ設計のレジスタよりも広い幅のデータパスを使用する請求項１記載のハイブリッドプロセッサ。
【請求項１２】
ベースプロセッサ設計のレジスタよりも広いデータパスはデータワード内の幾つかのオペランドのそれぞれで並列に同一の演算を計算するために使用される請求項１１記載のハイブリッドプロセッサ。
【請求項１３】
少なくとも１つの別の拡張された命令は２よりも多数のソースレジスタ規制子を使用する請求項１１記載のハイブリッドプロセッサ。
【請求項１４】
少なくとも１つの拡張された命令は２よりも多数のソースレジスタ規制子を使用する請求項１記載のハイブリッドプロセッサ。
【請求項１５】
少なくとも１つの拡張された命令は２以上の結果を計算する請求項１記載のハイブリッドプロセッサ。
【請求項１６】
構成可能な論理設計はベースプロセッサ設計と同じクロックを有してパイプライン化されている請求項１記載のハイブリッドプロセッサ。
【請求項１７】
ベースプロセッサ設計は負荷を介してアクセスし、構成可能な論理設計中に構成される非プロセッサ論理装置へ演算を記憶する請求項１記載のハイブリッドプロセッサ。
【請求項１８】
さらに、異なるアプリケーションに適した命令を有する少なくとも別の構成可能ではないベースプロセッサ設計を含んでおり、構成可能ではないベースプロセッサ設計と別の構成可能ではないベースプロセッサ設計は構成可能な論理設計を共有し、構成可能ではないベースプロセッサ設計と別の構成可能ではないベースプロセッサ設計の拡張された命令は構成可能な論理設計中に構成される請求項１記載のハイブリッドプロセッサ。
【請求項１９】
拡張された命令は命令へのソースオペランドとして機能するため構成可能な論理設計中に構成されている非プロセッサ論理装置へ直接アクセスする請求項１記載のハイブリッドプロセッサ。
【請求項２０】
拡張された命令の結果は構成可能な論理設計で構成される非プロセッサ論理装置に対して直接利用可能である請求項１記載のハイブリッドプロセッサ。
【請求項２１】
幾つかの拡張された命令は予め規定されたオプショナル命令のメニューから選択することにより構成可能な論理設計を構成するユーザにより選択される請求項１記載のハイブリッドプロセッサ。
【請求項２２】
幾つかの拡張された命令は命令記述言語を使用して規定される請求項１記載のハイブリッドプロセッサ。
【請求項２３】
幾つかの拡張された命令はハイレベル言語で書かれたアプリケーションを解析するソフトウェアプログラムにより規定される請求項１記載のハイブリッドプロセッサ。
【請求項２４】
幾つかの拡張された命令は性能臨界セクションを決定するためにアプリケーションのプロフィールに基づいて得られる請求項１記載のハイブリッドプロセッサ。
【請求項２５】
ベースプロセッサ設計は命令テンプレートを使用して計算されるパイプラインインターロックまたはバイパスを有している請求項１記載のハイブリッドプロセッサ。
【請求項２６】
ベースプロセッサ設計および構成可能な論理設計は単一の半導体基体上に共に構成されている請求項１記載のハイブリッドプロセッサ。
【請求項２７】
ベースプロセッサ設計および構成可能な論理設計は他の構成可能または構成可能ではない論理機能またはメモリと共に単一の半導体基体上に構成されている請求項１記載のハイブリッドプロセッサ。
【請求項２８】
構成可能な論理設計はベースプロセッサ設計に対して非同期的に動作し、構成可能な論理設計とベースプロセッサ設計間で転送されるある信号は少なくとも１つの同期回路を通過する請求項１記載のハイブリッドプロセッサ。
【請求項２９】
構成可能な論理設計は再構成可能である請求項１記載のハイブリッドプロセッサ。
【請求項３０】
構成可能な論理設計は拡張された実行ユニットと拡張されたレジスタファイルを含んでいる請求項１記載のハイブリッドプロセッサ。
【請求項３１】
ハイブリッドプロセッサ設計の製造方法において、
異なるアプリケーションに適したベースプロセッサ命令を有する第１の論理技術で構成された構成可能ではないベースプロセッサ設計を提供し、
構成可能ではないベースプロセッサ設計に堅密に結合されている第１の論理技術とは異なる第２の論理技術で構成され、それぞれ複雑な演算を行う拡張された命令を実行することができ、それによってハイブリッドプロセッサ設計を得る構成可能な論理設計を決定するステップを含んでいる方法。
【請求項３２】
さらに、カスタム論理装置と標準的なセル回路設計技術の一つを使用して、構成可能ではないベースプロセッサを構成し、
フィールドプログラム可能な論理装置の使用を含んだ別の設計技術を使用して構成可能な論理設計を構成するステップを含んでいる請求項３１記載の方法。
【請求項３３】
構成するステップはＲＡＭベースのルックアップテーブルによりフィールドプログラム可能な論理装置を構成する請求項３２記載の方法。
【請求項３４】
構成するステップはベースプロセッサ設計および構成可能な論理設計を半導体装置として構成する請求項３２記載の方法。
【請求項３５】
さらに、カスタム論理回路設計技術を使用してベースプログラム設計を構成し、
標準的なセルまたはゲートアレイ論理回路の使用を含む別の設計技術を使用して構成可能な論理設計を構成するステップを含んでいる請求項３１記載の方法。
【請求項３６】
構成するステップはベースプロセッサ設計および構成可能な論理設計を半導体装置として構成する請求項３５記載の方法。
【請求項３７】
構成可能な論理設計を決定するステップは２以上のサイクルの構成可能な論理設計のパイプラインの深さを含んでいる請求項３１記載の方法。
【請求項３８】
構成可能な論理設計を決定するステップは拡張されたレジスタまたは拡張されたレジスタファイルで動作する少なくとも１つの拡張された命令を提供するステップを含んでいる請求項３１記載の方法。
【請求項３９】
構成可能な論理設計を決定するステップはベースプロセッサ設計のレジスタよりも広い幅のデータパスを使用する少なくとも１つの拡張された命令を提供するステップを含んでいる請求項３１記載の方法。
【請求項４０】
構成可能な論理設計を決定するステップは３以上の多数のソースレジスタ規制子を使用する少なくとも１つの別の拡張された命令の提供を含んでいる請求項３９記載の方法。
【請求項４１】
構成可能な論理設計を決定するステップは３以上のソースレジスタ規制子を使用する少なくとも１つの拡張された命令の提供を含んでいる請求項３１記載の方法。
【請求項４２】
構成可能な論理設計を決定するステップは、２以上の結果を計算する少なくとも１つの拡張された命令を提供するステップを含んでいる請求項３１記載の方法。
【請求項４３】
構成可能な論理設計を決定するステップは、構成可能な論理設計のパイプライン化にベースプロセッサ設計と同じクロックを提供するステップを含んでいる請求項３１記載の方法。
【請求項４４】
ベースプロセッサ設計を提供するステップはベースプロセッサ設計に負荷を介してアクセスを行い、構成可能な論理設計に構成される非プロセッサ論理装置へ演算の記憶を行うステップを含んでいる請求項３１記載の方法。
【請求項４５】
さらに、異なるアプリケーションに適した命令を有する少なくとも別の構成可能ではないベースプロセッサ設計を提供するステップを含んでおり、構成可能ではないベースプロセッサ設計と別の構成可能ではないベースプロセッサ設計は構成可能な論理設計を共有し、構成可能ではないベースプロセッサ設計と別の構成可能ではないベースプロセッサ設計の拡張された命令は構成可能な論理設計中に構成される請求項３１記載の方法。
【請求項４６】
構成可能な論理設計を決定するステップは、命令へのソースオペランドとして機能するように構成可能な論理設計中に構成されている非プロセッサ論理装置へ直接アクセスする拡張された命令を提供するステップを含んでいる請求項３１記載の方法。
【請求項４７】
構成可能な論理設計を決定するステップは、構成可能な論理設計で構成される非プロセッサ論理装置に対して直接利用可能である拡張された命令の結果の提供を含んでいる請求項３１記載の方法。
【請求項４８】
構成可能な論理設計を決定するステップは、予め規定されたオプショナル命令のメニューから選択することにより構成可能な論理設計を構成するユーザにより幾つかの拡張された命令を選択するステップを含んでいる請求項３１記載の方法。
【請求項４９】
構成可能な論理設計を決定するステップは命令記述言語を使用して幾つかの拡張された命令を規定するステップを含んでいる請求項３１記載の方法。
【請求項５０】
構成可能な論理設計を決定するステップは、ハイレベル言語で書かれたアプリケーションを解析するソフトウェアプログラムにより幾つかの拡張された命令を規定するステップを含んでいる請求項３１記載の方法。
【請求項５１】
構成可能な論理設計を決定するステップは、性能臨界セクションを決定するためにアプリケーションのプロフィールに基づいて幾つかの拡張された命令を得るステップを含んでいる請求項３１記載の方法。
【請求項５２】
ベースプロセッサ設計を提供するステップは、命令テンプレートを使用して計算されるパイプラインインターロックまたはバイパスの提供を含んでいる請求項３１記載の方法。
【請求項５３】
さらに、ベースプロセッサ設計および構成可能な論理設計を単一の半導体基体上に共に構成するステップを含んでいる請求項３１記載の方法。
【請求項５４】
さらに、ベースプロセッサ設計、構成可能な論理設計、およびその他の構成可能または構成可能ではない論理機能またはメモリを共に単一の半導体基体上に構成するステップを含んでいる請求項３１記載の方法。
【請求項５５】
構成可能な論理設計を決定するステップは、ベースプロセッサ設計に対して非同期的に動作する構成可能な論理の提供を含んでおり、さらに構成可能な論理設計とベースプロセッサ設計との間で転送される信号が少なくとも１つの同期回路を通過する請求項３１記載の方法。
【請求項５６】
構成可能な論理設計を決定するステップは再構成可能である構成論理設計の提供を含んでいる請求項３１記載の方法。
【請求項５７】
構成可能な論理設計を決定するステップは、拡張された実行ユニットと拡張されたレジスタファイルを提供することを含んでいる請求項３１記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプロセッサ、特に構成可能な実行ユニットを有する高性能のハイブリッドプロセッサに関する。
【背景技術】
【０００２】
［用途特定プロセッサ］  
マイクロプロセッサはソフトウェアを介するそれらのプログラム能力が非常に複雑なタスクの迅速な開発と変更を可能にするので、広い範囲の電子アプリケーションで使用されている。これらは汎用コンピュータシステムと、ネットワークルータからセルラ電話機までの範囲の特定化された電子装置との両者の核心部分を形成する。半導体技術の速度および密度の進歩によって次の設計よりも高速度で、小さく、低パワーであるマイクロプロセッサの生成が可能である。これらは手近にタスクを行うためのプログラムに便利であり、要求を満たすのに十分に効率的でもあるので、今日、数十億の装置が使用されている。集積回路設計の伝統的な経済性、即ち、新しいマイクロプロセッサ設計を設計し検査する大きな技術的労力と大きなプロトタイプのコストにより、多数の異なるタスクに使用されることのできるプロセッサが奨励されている。
【０００３】
ほとんどのマイクロプロセッサ設計は汎用の目的である。これらは固定した特性のセット、即ち命令セット、メモリシステムおよびインターフェースを含んでおり、これはプロセッサを広範囲の異なるタスクに対して応用可能にする。しかしながら汎用プロセッサは多くの重要なタスクに対しては不適切である。特に、プログラマはしばしば特定のアプリケーションタスクで必要な結果をコンピュータ処理するために長い一般的命令のシーケンスを使用しなければならない。この非効率さは電子システムが十分高速ではなく、または非常に多量のパワーを消費することを意味している。したがって汎用のマイクロプロセッサは容易にこのような状況で使用されることができない。
【０００４】
［ユニバーサルプラットフォームの魅力］  
理想的な解決策は用途特定プロセッサであり、これは高レベルの言語から容易なプログラミングをするための容量を汎用プロセッサと共有するが特定のタスクのセットのための丁度正確な命令セットを含んでいる。用途特定命令セットはアプリケーションと命令セットにしたがって、実行されなければならない命令数と、実行時間を数百分の１に減少できる。任意の所定の用途特定命令セットでは、改良は小さいアプリケーションセットに限定される。それ故、特定の応用に調節されたマイクロプロセッサを開発し構成するコストおよび労力を減少することが重要である。
【０００５】
コストと労力の２つの基本的なコンポーネントが存在する。第１のコンポーネントは新しいマイクロプロセッサおよび関連するソフトウェアを発見し、記述し、設計する技術的労力である。基本的なタスクは以下のものを含んでいる。  
・命令セットの最適化のための性能のボトルネックとターゲットコードセクションを発見するためのターゲットアプリケーションの解析、
・実行に必要とされるプロセッサのクロックサイクル数を減少する新しい命令の定義、
・強化された命令の復号および新しい命令実行ユニットを含んでいる強化されたプロセッサを構成するための論理の詳細な設計、
・プログラムが強化された命令および他の特徴を使用することを可能にするためのソフトウェア開発ツール、特に新しいアセンブラ、高レベルの言語のコンパイラ、およびその他のソフトウェア発生器の開発、
・プロセッサの強化されたハードウェアリソース（レジスタ、メモリ、命令）を管理するのに必要とされるオペレーティングシステムおよびソフトウェアライブラリのような実行時のソフトウェアの適合。
【０００６】
用途特定プロセッサを開発するための努力の第２のコンポーネントはその強化された命令セットを有する完全なプロセッサを構成する集積された半導体回路の生成である。この構成は低いプロトタイプコストと低い量の製造コストとの間の均衡を比較検討しなければならない。全ての論理ゲート、メモリ、および配線がターゲットプロセッサの定義で最適化される十分にカスタム化された設計は典型的に最小のサイズ、最低のパワー、最低の量製造コストを実現するが、開発とプロトタイプの一時のコストは非常に高い。プロトタイプを設計し、製造するための時間は典型的に数ヶ月である。低から中程度の製造量では、プロトタイプの償却コストは直接的な製造コストよりも大きい。
【０００７】
コストと努力の第１のコンポーネントは、文献（A. Wang、E. Killian、D. Maydan、C. Rowen、“Hardware/Software Instruction Set Configurability for System-on-Chip Processors”、Proceedings of Design Automation Conference 2001）または文献（R. Gonzalez、“Configurable and Extensible Processors Change System Design”、Proceedings of Hot Chips 11、1999）に記載されているようなプロセッサ生成ツールにより解決される。これらのツールは電子システムの設計者に新しい命令セットを迅速に発見、説明、確認させ、完全なハードウェア設計および対応するソフトウェアを生成させる。
【０００８】
第２のコンポーネントは臨界的に低容積の設計で重要であり、解決策が提案されている。例えばマイクロプロセッサ全体はフィールドプログラム可能なゲートアレイ装置に基づいて、高速度のプロトタイプフォーマットで構成されることができる。残念ながら、これらの装置の完全なフレキシブル性は電子機能当り高いコストと低いクロックレートを与える。フィールドプログラム可能な論理において構成されているプロセッサは通常、さらにカスタム化された標準的なセル回路構成を使用して構成された同一のプロセッサの５倍遅く、１０倍ものシリコン領域を消費する。これらの標準的なセルプロセッサは代わりに慎重に手作業で調節した回路で構成される等価プロセッサの速度の半分である。それ故、共通の命令、レジスタ、メモリ、インターフェースを含んだベースプロセッサが高速度で密の回路を使用して構成され、用途特定拡張が、低速度であるがフレキシブルなプログラム可能または再構成可能な論理装置の一般的なセクションを迅速に構成することにより構成されるハイブリッド構成の考察が魅力的である。理想的には、これは恐らく単一の集積回路に構成され、さらに十分にカスタマイズされた速度および量のコスト特性を有するが、再構成可能な論理装置回路の低いプロトタイプコストと労力を有する標準的な設計をもたらす。
【０００９】
［プロセッサ−ＦＰＧＡ結合における選択］  
研究者は用途特定処理用のマイクロプロセッサおよび再構成可能な論理装置のハイブリッドに対する複数の異なる可能な解決策を説明している。Gilsonの米国特許第5,361,373号明細書はハイブリッドを形成するためのプロセッサ回路および別々の標準的なフィールドプログラム可能なゲートアレイ（ＦＰＧＡ）装置の組合わせを要約しているが、それらの間の通信を詳細にせず、または構成を開発またはプロセッサをプログラミングする組織的な方法を説明していない。文献（K. Compton、S. Hauck、“Configurable Computing: A Survey of Systems and Software”、Technical Report、Northwestern University、Dept of ECE、1999）は全て図１に示されているプロセッサ100とデータメモリ150との関係で示されている４つのタイプに分類されたハイブリッドに対する調査可能な方法を与えているが、１よりも多数のタイプの再構成可能な処理装置を含むシステムは存在しない可能性が多い。
【００１０】
これらの４つのタイプを説明する。（１）プロセッサ命令により直接制御され、内部プロセッサレジスタへアクセスするプロセッサ−機能ユニット内の再構成可能な機能ユニット110である。演算の待ち時間は１または少数のサイクルである。（２）プロセッサによる一定の制御なしで動作するがプロセッサメモリへアクセスできる再構成可能なコプロセッサ120−機能ユニットである。演算の待ち時間は数百サイクル以上で測定される。（３）長期間、ほとんどプロセッサの監視なしに動作する取付けられた処理ユニット130−機能ユニットである。プロセッサユニット130は図１に示されているデータメモリ150のようなプロセッサローカルメモリをアクセスできない。
【００１１】
汎用目的のプロセッサ100と再構成可能な処理ユニット130との間の通信はバス102で行われ、数十のサイクルを取る。演算の待ち時間は典型的にコプロセッサにおけるよりも非常に大きい。（４）任意の他のプロセッサと独立して動作する完全に独立した制御を有する独立した処理ユニット140−機能ユニットである。これらは典型的にネットワーク106でアクセスされ、プロセッサ100と通信するためにネットワークインターフェース104とデータバス102を通る必要があるので、非常に長い待ち時間を有する。
【００１２】
説明した４つのタイプのうち、プロセッサ100内の再構成可能な機能ユニット110は他の形態のハイブリッド化よりも低い待ち時間と高いデータ帯域幅を得るように見える。低いデータ転送速度の応用では、ハイブリッド化のタイプは大きな効果をもたない。しかしながら、プロセッサと交換される多量のデータを必要とする応用では、この組織的選択は劇的なインパクトを有する。再構成可能な機能ユニットがプロセッサに堅密に結合されるとき、機能ユニットとプロセッサはサイクル当り幾つかのオペランド、即ち少なくとも２つのソースオペランドと１つの結果オペランドを交換することができ、転送の待ち時間は１サイクルの一部分だけである。対照的に、プロセッサ10に取り付けられているコプロセッサ120と独立した処理ユニット140の構成は１よりも多数の転送の待ち時間のサイクルを必要とし、サイクル当り１つのオペランドさえも得ることは稀である。
【００１３】
プロセッサ内に再構成可能なユニットを配置する大きな欠点はプロセッサと再構成可能な機能ユニットの動作の間に可能な並列化がないことである。本発明はオペランドの帯域幅を増加し、オペランドの待ち時間を減少し、ベースプロセッサと機能ユニットおよび機能ユニット間の平行化を最大にするこのような堅密に結合された再構成可能なユニットの基本的な改良に焦点を当てる。
【００１４】
［簡単な命令セット拡張］  
堅密に結合された再構成可能な機能ユニットの幾つかの簡単な例は文献に記載されている。R. Razdan、M. D. Smith、“A High-Performance Microarchitecture with Hardware-Programmable Function Units”、Proceedings of MICRO-27、1997年11月および米国特許第5,696,956号、第5,819,064号、第6,035,123号明細書には付加的な簡単なＲＩＳＣ命令に対する組合わせ論理を実行するために使用される簡単なＲＩＳＣベースとフィールドプログラム可能な論理アレイが記載されている。フィールドプログラム可能な論理装置は人気のある商用のＦＰＧＡで使用されるものに類似したｎ―入力、１−出力ルックアップテーブル（ＬＵＴ）に基づいている。付加された命令はベースＲＩＳＣ命令のフォーマットと構造に正確にしたがう。命令の符号化の固定された部分は再構成可能な論理装置で新しい命令が実行されるように確保されている。命令ワードの１フィールドは１つの組合わせ論理機能の実行のための論理に対応するＩＤを構成する。各付加された命令は他の命令と同一の２つのソースレジスタオペランドへのアクセスを有する。各付加された命令は１つの結果オペランドを生成し、その結果を１つのプロセッササイクルで発生しなければならない。この結果はベースプロセッサのレジスタファイルに書込まれ、その結果はベースプロセッサのワードの幅と同一幅である。拡張された命令が実行されているとき、他の命令は並列に実行されない。さらに、各付加された命令の論理は明確であり、任意の他の論理と共有されない。これは各命令の構成がプログラム使用に応答してダイナミックに負荷されることを可能にし、フィールドプログラム可能な論理は共通して使用される拡張された命令の役目を行う。他方で、これは命令間の論理の共有と、命令グループの高い論理コストを防止する。
【００１５】
文献（S. Hauck、T. W. Fry、M. H. Hosler、J. P. Kao、“The Chimaera Reconfigurable Functional Unit”、Proceedings of the IEEE Symposium on Field-Programmable Custom Computing Machines、1997年）にはベースプロセッサのレジスタファイルと再構成可能な機能ユニットとの間のオペランド帯域幅をさらに改良しようとするハイブリッド設計が記載されている。汎用目的のＲＩＳＣプロセッサのレジスタのサブセットはフィールド構成可能なユニットでシャドウされ、２つよりも多数がソースオペランドとして使用されることができる。しかしながらこれはレジスタファイルからフィールド構成可能な論理へ実行しなければならないワイヤ数を劇的に増加する。しかしながら、ただ１つの結果オペランドがサイクル当りで生成されることができ、その幅はベースＲＩＳＣプロセッサのワード幅に限定され、それはパイプラインされず、したがってコンピュータ処理は１サイクルで完了しなければならず、それに拡張された命令の復号が後続する。
【発明の開示】
【発明が解決しようとする課題】
【００１６】
［既存の発明の限定］  
本発明により認識されている既存の発明の限定を以下のように要約することができる。  
１．プロセッサとフィールドプログラム可能な論理装置の緩い結合は非常に長い待ち時間と低い帯域幅を示す。さらに、フィールドプログラム可能な論理装置の演算はプロセッサにより緊密に調節されることができず、またはソフトウェアにより制御されることができない。これによって性能は低くなり、開発が困難になり、２つのサブシステムによる結合演算を利用する機会が少なくなる。
【００１７】
２．ＲＩＳＣプロセッサとＲＩＳＣタイプの拡張された命令間の堅密な結合は並列化を制限する。ＲＩＳＣプロセッサでは、コンピュータ処理命令（レジスタファイル中の値に基づいて新しい値をレジスタファイルへ書込む命令）は通常１サイクルで実行される。ベース命令または拡張された命令のいずれか一方がパイプラインで一度に発生され実行されるが、両者ではない。さらに多数の再構成可能な機能ユニットが存在するならば、１つだけが任意のサイクルで命令を実行することができる。実行には効率的なオーバーラップはない。
【００１８】
３．ＲＩＳＣプロセッサとＲＩＳＣ−タイプの拡張された命令間の堅密な結合は新しい命令からのスピードアップを制限する。ＲＩＳＣ−タイプの命令の符号化は典型的に丁度２つのソースレジスタが特定されることを可能にする。それ故、再構成可能な論理装置を介して付加された新しい命令は２つのソースオペランドへ限定される。用途特定命令セット拡張の利点は一般的な命令の長いシーケンスを特別な命令の短いシーケンスと置換することから発生する。残念ながら、一般的な命令の長いシーケンスで丁度２つのソースオペランドをもつものはほとんどない。特別な状態で少量の一般的な命令ではなく単一のＲＩＳＣ命令が置換されるだけである。Hauckの文献に記載されているように、付加的な一般的なレジスタへのアクセスを行うことは潜在的なスピードアップを改良できるが、これらの文献は命令の定義で絶対的であり、レジスタの選択は著しく限定される。これは３以上のソースレジスタによりこれらの命令の有用性を減少しコンパイラからのコードの生成を非常に困難にする。
【００１９】
４．機能ユニットのパイプライン化がないことは、単一命令での深い論理機能の実行の可能性を減少する。最も貴重である可能な命令セットの拡張はしばしば、幾つかの複雑な数学およびその他の演算を単一命令に結合することを含んでいる。この論理装置は特に低速Ｄのフィールドプログラム可能な論理装置で構成されるとき、プロセッサの正規サイクル時間よりも長い遅延を有する。これらの命令は避けられなければならないか、またはプロセッサは次の命令を出す前にこの結果を待機するために幾つかの方法で停止されなければならない。いずれの方法もハイブリッドマイクロプロセッサの潜在的な速度上昇を減少させる。
【００２０】
５．堅密に結合された再構成のための全ての従来知られている方法は汎用目的のプロセッサのレジスタで新しい組合わせ機能しか提供することができない。新しい状態レジスタは付加されることができない。これはデータへアクセスするための帯域幅を制限し、計算の長いシーケンス内の複雑な中間状態の更新を阻止する。ベースプロセッサワードに等しい幅を有する丁度１つの結果に対する既存の制限は特に厄介である。新しい状態レジスタまたは完全なレジスタファイルが付加されるならば、アプリケーションを大きく加速する機会が非常に増加されるであろう。
【００２１】
６．簡単なＲＩＳＣ−タイプの命令フォーマットに対する既存の限定はフレキシブル性と性能を制限する。新しいフォーマットが付加されることができるとき、新しい加速の機会が発生する。命令フォーマットの２つの重要なクラスは現在のフィールド構成可能なプロセッサから外されている。第１に、３以上の多数のソースオペランドを特定する命令フォーマットであり、ここではソースオペランドはベースプロセッサの汎用目的のレジスタまたはフィールド構成可能な機能ユニット内の付加的なレジスタおよびレジスタファイルから来る。第２に、２以上の結果を特定する命令フォーマットである。多数の結果の規制子は複雑な演算の符号化または単一ワードでの幾つかの簡単な演算の符号化のいずれか一方で便利である。
【００２２】
７．既存の堅密に結合されたフィールドプログラム可能な機能ユニットは汎用目的のＲＩＳＣ命令の高速度の置換を直接実行する手段として意図されている。これらは単一命令の多数のデータ（ＳＩＭＤ）またはベクトル演算のようなデータの並列演算の実行に良好に適していない。この制限は、ベースプロセッサのレジスタの幅程度しかない（典型的に３２ビット）ソースおよび結果データパスの使用と、ループの多数の反復が並列に実行されることができるケースを発見するためのベクトル化技術を使用しない新しい命令の発見および設計のための提案された方法の両者で生じる。さらに、既存の解決策は汎用目的のコンピュータシステムで典型的に見られるソフトウェアアルゴリズムのタイプを加速する方向のものである。これらはしばしば広い整数のデータタイプ、特に１６ビットおよび３２ビットの整数を含む。多数のこのような広いオペランドを含む並列演算はハードウェアでは高価である。対照的に、信号およびイメージ処理のような埋設されたアプリケーションでは、実数の固有のデータサイズはしばしば非常に小さく（１０ビット以下）、並列演算の機会は非常に大きい。
【００２３】
８．既存の解のバイアスはまたシステムのプロセッサと他の論理機能との間の限定されたインターフェースで現れる。実際には、仮想的に全てのコンピュータシステムのデータは中央化された主メモリを通過され、プロセッサに入る前に別々の集積回路に構成される。対照的に、埋設された電子システムでは、プロセッサはしばしばメモリ、入力／出力インターフェースおよびその他の特別化された論理装置で同一の集積回路に構成される。全てのデータが主メモリを通過することはボトルネックを生じる。プロセッサへの外部論理装置の直接インターフェースは待ち時間を減少し、多数の演算の帯域幅を増加させる。
【００２４】
９．用途特定命令論理装置の開発と使用のための既存の方法は、各付加された命令に対する論理装置が他と独立していることを仮定している。各論理構造は要求に応じて、全ての必要とされる拡張が利用可能な構成可能な論理アレイに適合できるわけではないとの仮定で、負荷されることができる。これは共通の論理装置が容易に共有されることができないことを意味し、オーバーラップする構成を有する２つの命令が両者とも論理アレイ中に存在するとき、潜在的に論理機能の実質的な重複につながる。
【００２５】
これらの制限の克服はハイブリッドプロセッサの性能を著しく改善する。
【課題を解決するための手段】
【００２６】
本発明は既存の解決策の主要な制限を解決する。
【００２７】
本発明の利点は、複雑な実行ユニットが十分なソフトウェアサポートおよびベースプロセッサと拡張との間の非常に高い帯域幅を有して、堅密に結合された命令セット拡張として構成されることを可能にすることである。
【００２８】
本発明の別の利点は、ベースプロセッサと１以上の拡張された実行ユニットとを横切って多数の独立した演算が同時に進行されることを可能にする再構成可能な実行ユニットの自動化されたパイプライン方式を提供することである。
【００２９】
本発明の別の利点は、再構成可能な論理装置の深いパイプライン方式を構成するためのフレキシブルな能力を提供することであり、それによって単一の命令として複雑な機能が実行されることを可能にする。
【００３０】
本発明の別の利点は、全てのバイパスおよびインターロック論理装置の効率的な構成を含んでいる再構成可能な論理装置で状態レジスタとレジスタファイルの両者を十分にサポートすることである。
【００３１】
本発明のさらに別の利点は、ベースプロセッサで利用可能ではない命令フォーマットで再構成可能な実行ユニットを構成することである。広範囲のフォーマットがレジスタ規制子テンプレートによってのみ同時にサポートされ、限定される。
【００３２】
本発明のさらに別の利点は、レジスタ、レジスタファイル、および種々の幅のデータパスを含んでいる再構成可能な論理装置ファブリックの容量によってのみ限定される再構成可能な実行ユニットを提供することである。広いデータパスは単一のデータワード内の幾つかのオペランドの並列処理を可能にし、効率的にする。
【００３３】
本発明のさらに別の利点は、プロセッサ間のフレキシブルなインターフェースの使用であり、拡張された実行ユニットは再構成可能な論理装置のブロックが幾つかのプロセッサにより、またはプロセッサと他の論理とにより共有されることを可能にする。プロセッサの随意選択的なインターフェースは他のプロセッサおよび外部論理装置（恐らくクロックおよび帯域幅整合待ち行列を介する）へのメモリマップされたデータポートアクセスを含んでおり、再構成可能な実行ユニットと他の論理装置との間で信号を直接的に入出力する。
【００３４】
本発明の別の利点は、共通のサブ機能を発見するために命令のセットの全ての論理装置が共に合成されることを可能にし、命令のグループの全ての論理領域と遅延が共に使用されるように減少することである。
【００３５】
したがって、本発明は１特徴として、ハイブリッドプロセッサ設計を提供し、それは異なるアプリケーションに適したベースプロセッサ命令を有する構成可能ではないベースプロセッサ設計と、構成可能ではないベースプロセス設計に堅密に結合されて、それぞれ複雑な演算を行う拡張された命令を実行することができる少なくとも１つの構成可能な実行ユニット設計とを具備している。
【発明を実施するための最良の形態】
【００３６】
本発明の前述および他の特性、特徴、利点を限定ではない本発明の例示的な実施形態により図面を参照して以下の詳細な説明でさらに説明する。同一の参照符号は幾つかの図面を通して本発明の類似の部分を表している。  
本発明は、高クロック周波数、低コスト、低パワーを許容する技術で実行されるベースプロセッサと、ベースプロセッサに堅密に結合され広範囲の可能な用途特定命令およびインターフェースを実行するように迅速に適合されることができる再構成可能な論理装置ファブリックの組合わせを使用してハイブリッド用途特定マイクロプロセッサを構成する。この組合わせは各アプリケーションを実行するのに必要な高いクロック周波数および少数のサイクルを有する用途特性マイクロプロセッサへ標準的な電子システムの個人化を迅速に可能にする。
【００３７】
本発明によるハイブリッドプロセッサでは、説明するように、堅密に結合された再構成可能な論理装置から得られる基本的な利点は、通常のプロセッサ命令の長いシーケンス、即ち、典型的には基本的な算術と、シフトおよび論理命令の組合わせが新しい形態で等価機能を実行する特別化された命令のずっと短いシーケンスにより置換されることである。メモリ動作（ロード、記憶）、制御フロー（ブランチ、ジャンプ）、システム機能（中断管理、コンテキスト切換え）のような他の動作は主にベースプロセッサの既存の論理装置を使用する。
【００３８】
ベースプロセッサ、再構成可能な論理装置、命令およびデータメモリ、バスインターフェースを含んでいるハイブリッドプロセッサ200の基本的構造が図２に示されている。アプリケーションの最も大きい潜在的な範囲を暗示するためにここで用語“再構成可能”が使用されていることに注意すべきであり、これは構成されることができるおよびその後所望であるように再構成されることができるシステムを含んでいる。本発明はまた簡単に構成され、その後構成されたものとして使用されるシステムに対してここで教示された技術を使用するシステムをカバーするので、これは限定として解釈されるべきではない。
【００３９】
示されているように、ベースプロセッサはプログラムカウンタ212、ベースレジスタファイル214、ベースＡＬＵ216、アドレス発生器218、データメモリまたはキャッシュ220、パイプライン制御装置222、命令メモリまたはキャッシュ224、命令デコーダ226、バスインターフェース228を含んでいる。
【００４０】
再構成可能な論理装置は拡張されたレジスタファイル230と、拡張可能な実行ユニット232と、データメモリまたはキャッシュ220の部分、パイプライン制御装置222、命令メモリまたはキャッシュ224、命令でコーダ226を含んでいる。ベースプロセッサのある部分は再構成可能な論理装置と相互動作することも理解される。例えば、ベースプロセッサはデータロードのロードおよび記憶とキャッシュおよびメモリ管理動作に応答する。拡張された実行ユニット232はベースプロセッサ内のロード記憶装置を良好に使用することができる。別の例として、ベースプロセッサは典型的にベースプロセッサ状態レジスタ、例外処理レジスタ、およびその他のプロセッサ制御機能を含んでいる。再構成可能な論理装置内の拡張された実行ユニット232は例外を発生することができる。さらに、ベースプロセッサは他の密接に結合されたシステムの周辺機器、即ちバスインターフェース、タイマ、デバッグインターフェース、拡張された実行ユニットによりアクセスされることができるその他の特別化されたインターフェースを含んでもよい。ベースプロセッサを有する再構成可能な論理装置の構成の考察を以下説明する。
【００４１】
この方法により構成されるハイブリッドプロセッサ200は例えば文献（A. Wang、E. Killian、D. Maydan、C. Rowen、“Hardware/Software Instruction Set Configurability for System-on-Chip Processors”、Proceedings of Design Automation Conference、2001）に記載されているＸｔｅｎｓａプロセッサのような自動プロセッサ発生器により生成される広範囲の命令セット拡張を使用することができる。拡張された命令はそれぞれ２つのソースオペランドおよび１つの結果オペランドを有する簡単なＲＩＳＣタイプの命令だけでなく広範囲の他の命令機能およびプロセッサ論理構成も含んでおり、以下のものを含み、それによって複雑な動作を行うことができる。  
１．オペランドの直接的なソースまたは目的地としてプロセッサメモリを有する命令、
２．構成可能な論理ファブリックで構成される１以上の状態レジスタまたはレジスタファイルを有する命令、
３．多数のレジスタ規制子フィールドを有する命令、
４．ベースプロセッサアーキテクチャのフォーマットとは異なる基本フォーマットを有する命令、
５．プロセッサにより観察され、構成可能なプロセッサインターロックおよびバイパス論理装置によりサポートされ、ベース命令および再構成可能なファブリックで実行される命令との間または全て再構成可能なファブリックで構成される幾つかの命令間で大きな並行化を可能にするように十分にまたは部分的にパイプライン化されることができる１プロセッサクロックサイクルよりも大きい待ち時間を有する命令、
６．ベースプロセッサのネイティブ幅よりも大きい幅のオペランドで動作する命令、
７．１よりも多数の基本オペランドを単一のソースおよび／または結果コンパウンドオペランドへ結合し、簡単または複雑な演算を全ての基本オペランドで平行して実行する命令、
８．ベースプロセッサがカスタム半導体回路またはセミカスタム標準セルまたはゲートアレイ回路で構成され、再構成可能な論理装置がフィールドプログラム可能な論理装置またはフィールド構成可能なデータパスエレメントで構成される構成、
９．ベースプロセッサがカスタム半導体回路で構成され、再構成可能な論理装置が半カスタマ標準セルまたはゲートアレイ回路で構成される構成。
【００４２】
新しいハイブリッドプロセッサ構造の生成は通常、図３に示されている方法にしたがう。この方法は典型的にアプリケーションコードのシミュレーションに基づいて、コードの臨界的なセクションを識別するためにステップ310により示されているようにターゲットアプリケーションセットのプロフィール化を含んでいる。ステップ320に示されているような命令セット拡張の進展は高レベル命令セットの記述言語を使用する（コンパイラ自動化320Aまたはマニュアル320B技術の使用）。ステップ330は、例えば文献（A. Wang、E. Killian、D. Maydan、C. Rowen、“Hardware/Software Instruction Set Configurability for System-on-Chip Processors”、Proceedings of Design Automation Conference、2001）に記載されているＴＩＥのような言語を使用する中間表示の進展、即ち命令セット記述を示している。この命令セット記述は符号化に必要な全ての基本情報と、意味論および命令のパイプライン化と、プロセッサの部分としての構成とを含んでいる。ステップ340はプロセッサの生成を示しており、ここでは拡張された命令のセットは１）論理記述またはネットリストの形態の構成可能な実行ユニットの構成、２）コンパイラ、アセンブラ、デバッガ、ライブラリのような拡張されたソフトウェアツール、３）拡張されたプロセッサのシミュレータ、４）拡張された命令セットをサポートする実時間のオペレーティングシステムのような実行時ソフトウェアに変換される。コンパイラ、アセンブラ、ライブラリは拡張された命令セットの使用を含んでいるアプリケーションの２進コードを生成するために標準的な方法により使用されることができる。その後、評価ステップ350が行われ、これはステップ350Aに示されているように再構成可能な論理装置で実行される論理の寸法および速度の評価と、ステップ350Bに示されているように実行するアプリケーションの二進数による評価とを含んでいる。
【００４３】
この新しい方法の中心的な革新はプログラム可能な論理の再構成による新しい実行ユニットへの複雑な命令セット拡張のサポートである。これらは広いデータパス、付加的なレジスタファイル、多クロックサイクルを横切る実行のパイプライン化を含んでいる。１例が図４に示されている。
【００４４】
図４は種々のパイプ段を示す機能表示でハイブリッドプロセッサ200を示している。示されているように、（図２の命令メモリ224に対応する）命令メモリ、（共に図２の命令デコーダ226とパイプライン制御装置222に対応する）デコーダおよびインターロック、バイパス計算論理、（図２のベースＡＬＵ216および関連する回路に対応する）論理装置はソースオペランドを消費するか結果を発生する各パイプライン段で現れる。図４はまた基本的なパイプライン構造を示している。この例はベースプロセッサ命令に対する５つの段パイプおよび拡張された機能ユニットの７つの段パイプを有するが、任意の数のベースおよび拡張された機能ユニットのパイプ段が適合されることができる。これは（図２のベースレジスタファイル214に対応する）ベースレジスタを示すが、ベースプロセッサは例えば多数のレジスタファイルを含むことができる。アドレスレジスタ、浮動小数点レジスタおよび条件コードレジスタもまた通常のように含まれ、その中のレジスタファイルの特別例は示されているベースレジスタを形成している。
【００４５】
図４はまたベースレジスタファイルからまたはベースレジスタファイルへ流れる２つのソースオペランド（読取ポート）と１つの結果（書込みポート）を示しているが、ベースプロセッサレジスタファイルはさらに多くの読取りポートまたは書込みポートを有することができることを理解すべきである。示されているように、これはＡＬＵ、メモリ、制御命令を含む任意のベース命令のために使用されることができる。しかしながら、説明された本発明は特定のベース命令セットまたはパイプラインによって限定されないので、さらに多くのレジスタファイルおよびさらに多くのソースおよび結果ポートを有するベースプロセッサとベース命令セットを有することができることも理解されるべきである。
【００４６】
図４では明白に示されていないが、好ましい実施形態では、拡張された実行ユニットはベースレジスタファイルからのソースデータへアクセスし、その拡張された実行ユニットは拡張されたレジスタファイルとベースレジスタファイルまたはそれら両者へ戻る結果を生成する。
【００４７】
同様に、ベース実行ユニット、即ち“拡張された論理装置”とラベルを付されたブロックで多数のサイクルを横切って拡散されるベース実行ユニットは種々のワード幅を有することができる。例えば、アドレスレジスタの演算は３２ビットであり、浮動小数点レジスタの演算は６４ビットであり、条件コードレジスタの演算は１ビット幅である。再構成可能な実行ユニットは同じバラエティを有する。これらは恐らく異なる幅であり、即ちこれらは多数のレジスタファイルを有し、パイプラインはベースプロセッサパイプラインよりも短くても長くてもよい。データメモリのロードおよび記憶のためのアドレスはベースプロセッサ実行ユニットまたは再構成可能な実行ユニットから来ることに注意する。
【００４８】
図４はまたプロセッサ内のインターロックおよびバイパス動作の基本形態を示している。マイクロプロセッサの計算が１よりも多数のパイプライン段を取るならば、その後の命令はその結果を待機する。インターロック機構は第２の命令のソースレジスタに対して第１の命令の目的地レジスタを比較することによってこの条件を検出する特性である。これらが一致するならば、プロセッサは第１の命令の目的地レジスタが結果を発生するまで、第２の命令のソースレジスタの実行を遅延しなければならない。パイプラインプロセッサでは、ソースオペランドは通常レジスタファイルから読取られる。命令の結果は命令の後にのみレジスタファイルに書き戻され、その先行者はエラーなく完了したことが知られる。結果が早期のパイプ段で発生されるならば、書込まれる前に１以上のサイクルを待機させられる。バイパス機構はこの結果を待機するその後の命令がレジスタファイルを書込まず、その後読取せずにこの結果値をソースとして獲得することを可能にする。前の再構成可能なプロセッサは再構成可能なパイプライン化された実行ユニットを再構成可能なバイパスおよびインターロック制御により構成していない。
【００４９】
本発明の重要な特徴は、ベースパイプライン中の命令の結果を含んだベースプロセッサの特性と、フィールドプログラム可能な論理装置で構成される拡張された実行ユニットの特性を調節するハイブリッドバイパスおよびインターロック機構を構成する機構である。この機構は結果データが拡張された実行ユニットのパイプ段の間、およびベースプロセッサと拡張された実行ユニットとの間で正確に通過されることを確実にする。これはまた待機された結果が新しい命令に対して利用可能になるまで、ベースプロセッサと拡張された実行ユニットの両者へ新しい命令を発行することを含めたハイブリッドプロセッサ200の機能を停止させる。インターロックおよびバイパス条件を計算する基本的なタスクを以下説明する。  
１．プロセッサパイプラインの各段において命令のソースおよび目的地レジスタを追跡する。各命令には幾つかのソースと幾つかの目的地が存在することができる。  
２．各パイプ段で、そのパイプ段で必要とされる各ソースレジスタの規制子をそのレジスタファイルへ行くことを目的とする各目的地レジスタの規制子と比較する。  
３．結果が既に生成されるがレジスタファイルに書込まれることを待機し（全ての先の命令が安全に完了されることが知られるまで待機する）、ソース動作として必要とされるときはいつでも、レジスタファイルからのソース値の代わりに、実際の結果値を実行ユニットのソースオペランド入力へバイパスする。  
４．結果が利用可能ではないときはいつでも、依然として実行パイプラインで計算されるので、結果が利用可能になるまで依存命令を機能停止させ、バイパスされることができる。
【００５０】
ハイブリッドプロセッサの設計の１つの主要な挑戦は、例えば標準的なセルの高速度論理技術で構成されるベースプロセッサと、例えばＦＰＧＡルックアップテーブル（ＬＵＴ）およびプログラム可能な相互接続の低い性能の論理技術で構成される再構成可能な実行ユニットとの間の回路性能のギャップである。このギャップは特に、２つのサブシステム間のインターフェースにおけるこれらの位置、特にバスプロセッサが幾つかの条件を通信し、再構成可能な論理装置がベースプロセッサ高クロックレートパイプラインの要求内で応答を行わなければならない場合に重要である。以下のリストはベースプロセッサと再構成可能な実行ユニットとの間の主な通信のタイプを列挙している。
【００５１】
ベースから再構成可能なユニットまで：  
・レジスタ命令ワード規制子、演算規制子、および中間値を含み、再構成可能な命令の詳細の再構成可能な論理装置で復号を容易にするためにある普通に使用される信号の潜在的なワンホット符号化を含んでいる命令ワードである。これらの付加された信号は、命令の長さ、命令フォーマットまたはある命令フィールドの付加的な復号を含んでいる。  
・ベースレジスタファイルから読取られたソースオペランドまたはソースオペランドとして使用されるように先のベースプロセッサ命令からバイパスされた結果、
・データメモリまたはキャッシュから読取られたロードデータ、
・機能停止、例外、およびその他の動作モード情報（例えば特権レベル）を含んでいる制御情報。
【００５２】
再構成可能なユニットからベースまで：  
・ベースレジスタファイルへ戻され、ベース実行ユニットへバイパスされる結果オペランド、
・データメモリまたはキャッシュへ書込まれる記憶データ、
・制御情報（例えば例外応答および命令実行のキャンセルを行わせるために使用されるエラー指示）。
【００５３】
好ましい実施形態では、再構成可能な実行ユニットはベースプロセッサにより使用される機能停止情報を計算する役目を直接もたないことに注意する。これは再構成可能な命令フォーマットと依存テンプレートのセットを使用してベースプロセッサ内で全て計算される。このようなテンプレートの使用は、ベースプロセッサと再構成可能なユニットとの間の速度の差により与えられる最も重要な問題、即ちパイプラインの調節を解決するので重要な革新である。
【００５４】
ベースプロセッサの論理装置は以下の機構を使用して一般化された再構成可能な機能停止論理を実行することができる。  
１．全体的な命令の符号化スペースの一部分が再構成可能な命令セット拡張に割当てられる。これはベースプロセッサの命令セットに加えて、数十または数百の命令の付加を可能にする。これらの命令スロットは統計的に、スケジューリンググループへ割当てられることができる。  
２．命令スロットの各グループに対して２つの値を含んでいる再構成可能なテーブル、即ち命令フォーマット番号―命令ワード内に（再構成可能な命令により使用される）全てのレジスタ規制子の位置および寸法を規定するサポートされた命令テンプレートの１つの識別子である。例えばハイブリッドプロセッサ200は以下の図５で示されている８つのレジスタ規制子フォーマットを規定し、３ビットフィールドの各命令グループの選択を符号化する。
【００５５】
ｕｓｅ／ｄｅｆ番号は、再構成可能な実行ユニットのパイプラインの深さのサポートされたセットの１つの識別子である。例えば、ハイブリッドプロセッサ200はソースオペランドが必要とされるパイプ段（ｕｓｅ）と結果が生成されるパイプ段（ｄｅｆ）の可能性についての以下のテーブルを規定し、２ビットフィールドのｕｓｅ／ｄｅｆセットの選択を符号化する。
【表１】
2005522781.tif 000003
【００５６】
命令グループの全ての拡張された命令は同一の命令フォーマットとｕｓｅ／ｄｅｆパターンを有する。グループの命令よりも多くの同一のフォーマットおよびｕｓｅ／ｄｅｆパターンを有する命令が存在するならば、１よりも多数のグループが使用されることができる。これらのテンプレートを構成するために使用される同じフォーマットおよびｕｓｅ／ｄｅｆ情報は詳細な命令の命令オプコード割当ておよび復号論理装置を発生し、論理装置のパイプライン化を自動化し、サイクルが正確なシミュレータおよびコードスケジューラを自動的に発生するためにも使用されることができる。
【００５７】
ベースプロセッサと再構成可能な実行ユニット間の論理速度における差を調節するための基本的な方法が２つ存在する。
【００５８】
第１に、再構成可能な論理装置は深くパイプライン化されることができる。これは再構成可能なパイプラインの全ての中間値がベースプロセッサと同一のクロックによりパイプラインレジスタクロックで捕捉されることを意味している。これは例えば領域または時間において余分なコストをかけずに、フリップフロップを各ＬＵＴに関連付ける幾つかのＦＰＧＡアーキテクチャに非常に良好に適合する。これはシミュレータ中のパイプラインをモデル化するソフトウェアツールを構成するためのプロセッサの発生器の能力を十分に利用し、これらの動作のパイプラインの待ち時間を隠すコードを発生し、スケジュールする。この深くパイプライン化する方法はベースプロセッサ中の同じ論理装置よりも再構成可能な論理装置で非常に深いパイプラインを必要とする。例えば、０．１８ミクロンの標準的なセルプロセスでは、２００ＭＨｚの最悪のケースのクロックレートが実現可能である（各パイプ段は５ｎｓで実行する）。ＦＰＧＡ中の再構成可能な論理装置は４倍遅く、標準的なセルベースのパイプライン中で同じ論理装置を構成するのに必要とされているそれぞれの論理装置に対して少なくとも４つのパイプ段を必要とする。この方法は高い反復レートであるという利点を有し、新しい拡張された動作はベースプロセッササイクルごとに再構成可能なパイプラインで初期化されることができる。
【００５９】
第２に、再構成可能な論理装置はさらに低速度のクロックレートで動作でき、典型的にそれによってベースプロセッサのクロックは再構成可能な論理装置のクロックの整数倍である。ベースプロセッサは再構成可能なユニットを深くパイプラインされたとして観察し、長い待ち時間を有するが、再構成可能な論理装置は余分なパイプラインレジスタのタイミングオーバーヘッドをもたない。例えば０．１８ミクロンの標準的なセルプロセスでは、２００ＭＨｚの最悪のケースのクロックが実現可能であり（各パイプ段は５ｎｓで実行する）、ＦＰＧＡ技術で構成される再構成可能な論理装置は５０ＭＨｚの実際のクロック周波数と類似の論理装置を構成する（各パイプ段は２０ｎｓで実行する）。ベースプロセッサはユニットがクロックレートよりも４倍で動作するものと考慮するが、パイプラインの深さが４倍であり、新しい動作を吸収する能力は４番目のベースプロセッササイクル毎のみである。２クロックハイブリッドが図６に示され、３による割算の再構成可能な実行ユニットクロックを有している。
【００６０】
幾つかの変形がある。ベースプロセッサおよび再構成可能な論理装置クロックは相互に関して非同期であるが、境界における各信号のクロック再同期化のコストは高い。１よりも多数の再構成可能な実行ユニットが存在し、それぞれベースプロセッサクロックに関してその固有のクロック除数を有してもよい。
【００６１】
ベースプロセッサのさらに多くの固定した構成と、命令セット拡張のさらに多くの再構成可能な論理装置ファブリックを結合するハイブリッドの拡張可能プロセッサの構成は３つのさらに重要な革新を生成し、全ては図７に示されているように、再構成可能なファブリックを密接な関係で実行される他の機能と共有することに基づいている。
【００６２】
１．（712Aと712Bとして示されている）命令セット拡張と非プロセッサ論理装置714は再構成可能な論理装置の単一のブロック710を共有し、２つの使用は論理的に別々にされているが利用可能な再構成可能なファブリックの最良の使用を実現するように物理的に混合される。（示されているように730Aまたは730Bのいずれかの）ベースプロセッサはベースプロセッサのアドレススペースにマップされる状態エレメントを読取りおよび書込むための通常のデータ読取および書込み能力を使用することができ、ベースプロセッサと他の機能との間で高い帯域幅で低い待ち時間のデータポートとして機能する。入来および出力されるデータ待ち行列はデータ生成／消費レートの異なるクロック周波数に適合し、または外部論理装置からパイプライン特性の詳細（例えば命令の機能停止および取消し）を隠すために使用される。非プロセッサ論理装置は例えば、反復的な暗号化エンジンのような命令実行に結合されない状態マシン、シリアルインターフェースチャンネルのような標準的なデータ入力／出力、バス監視のようなプロセッササポート機能、またはデバッグハードウェアサポート或いはフィールドプログラム可能または標準的なセル論理装置で普通に実行される任意の他の論理機能に基づいて、データ待ち行列、自律計算機能のようなデータバッファリング論理を実行するのに使用されることができる。  
２．（示されている730Aまたは730Bのような）２以上のベースプロセッサは一体化された再構成可能な論理装置ファブリック720を共有することができる。これはファブリックの良好な使用を可能にし、しばしば通常のバス転送よりも高い帯域幅および低い待ち時間であるプロセッサ間の通信のための自然な機構を提供する。両プロセッサは前述のアイテム１のメモリマップインターフェース方法を使用することができる。その後、待ち行列およびその他の論理装置732は２つのプロセッサのデータポート734Aと734Bを共に結合するように構成されることができる。
【００６３】
３．再構成可能なファブリックで構成されるその他の論理装置はバス736Aと736Bを介して拡張された命令と直接通信できるが、他の論理装置の任意の信号がソースオペランドとして命令実行へ取り入れられることができ、目的地レジスタへ書込まれる任意の値は信号を他の論理装置へ駆動するようにエクスポートされることができる命令を規定する。これにより特別化された情報の非常に高速度で簡単な通信が可能である。
【００６４】
種々の好ましい実施形態を詳細に前述したが、当業者は例示的な実施形態の多数の変形が本発明の優れた教示と利点から著しく逸脱せずに可能であることを容易に認識するであろう。例えば、前述の説明ではベースプロセッサ中で実行される命令が常に幾つか存在し、付加的な命令（拡張）がフィールドプログラム可能な論理装置で行われている。極端な例では、全ての命令はフィールドプログラム可能な論理装置を必要とすることができ、ベースプロセッサは丁度、命令をフェッチし発行するためのインフラストラクチャを含んでいる。したがって、多くの場合には、命令の幾つかのセットは十分にベースプロセッサで実行される必要がないことが好ましい。したがって本発明は特許請求の範囲を考慮して解釈されるべきである。
【図面の簡単な説明】
【００６５】
【図１】通常のハイブリッドプロセッサ設計の集合を示す図。
【図２】本発明にしたがったハイブリッドプロセッサのブロック図。
【図３】本発明にしたがったハイブリッドプロセッサの生成を示す図。
【図４】本発明にしたがったパイプライン化された段を有するハイブリッドプロセッサの１実施形態を示す図。
【図５】本発明にしたがったハイブリッドプロセッサのレジスタ規制子フォーマットの例示的なテーブル。
【図６】本発明にしたがったパイプライン化された段を有するハイブリッドプロセッサの別の実施形態を示す図。
【図７】本発明の別の実施形態を示す図。
【図１】
2005522781.tif 000004
【図２】
2005522781.tif 000005
【図３】
2005522781.tif 000006
【図４】
2005522781.tif 000007
【図５】
2005522781.tif 000008
【図６】
2005522781.tif 000009
【図７】
2005522781.tif 000010
【国際調査報告】
2005522781.tif 000011
2005522781.tif 000012
2005522781.tif 000013
2005522781.tif 000014
2005522781.tif 000015