(57)【要約】  処理構成要素のアレイを具備するデータプロセッサにおいて、アレイ中の各処理構成要素はそれぞれ構成可能論理ユニットを備え、それによって、各処理構成要素の論理能力を、意のままに再構成することができる。メモリに構成命令が予めロードされていてもよく、それによって、各処理構成要素の構成状態は、予めロードされたメモリから自動的に順に取り出すことができる。メモリはグローバルであってもよく、このケースでは、同じ関数を実行するようにＣＬＵを並列に再構成してもよい。代わりに、異なるＣＬＵが異なる関数を実現するように、メモリは各処理構成要素に対してローカルであってもよい。スレッド切り替えにおいて、プログラムの制御のもと構成を実行してもよい。それぞれの処理構成要素は、マイクロコード記憶中の多数の構成から特定の構成を実行時において選択してもよい。プロセッサは好ましくはＳＩＭＤプロセッサである。【選択図】      図２
2008532162.tif 000002
【特許請求の範囲】
【請求項１】
処理構成要素のアレイを具備し、
前記アレイ中の各処理構成要素は、それぞれ再構成可能論理ユニットを備え、それによって、前記各処理構成要素の論理能力を、意のままに再構成することができる、
データプロセッサ。
【請求項２】
構成命令が予めロードされるように適合されているメモリ手段をさらに備え、それによって、前記各処理構成要素の構成状態を、前記予めロードされたメモリ手段から自動的に順に取り出すことができる、請求項１記載のデータプロセッサ。
【請求項３】
前記メモリ手段はＲＡＭを含む、請求項２記載のデータプロセッサ。
【請求項４】
前記ＲＡＭは前記各処理構成要素に対してローカルである、請求項３記載のデータプロセッサ。
【請求項５】
異なる処理構成要素の構成可能論理ユニットが異なる関数を実現するために、異なる状態に再構成されるように前記処理構成要素が適合されている、請求項４記載のデータプロセッサ。
【請求項６】
前記ＲＡＭは前記処理構成要素のすべてに対してグローバルであり、再構成されて同時に同じ関数を実行するように前記処理構成要素のすべてが適合されている、請求項３記載のデータプロセッサ。
【請求項７】
ロード時または実行時において並列に構成されるように前記構成可能論理ユニットのすべてが適合されている、請求項４または６記載のデータプロセッサ。
【請求項８】
スレッドの切り替えにおいて構成されるように前記構成可能論理ユニットのすべてが適合されている、請求項７記載のデータプロセッサ。
【請求項９】
プログラム制御のもとそれら自体のそれぞれの処理構成要素によって同時に構成／変更されるように前記構成可能論理ユニットのすべてが適合されている、請求項７または８記載のデータプロセッサ。
【請求項１０】
マイクロコード記憶中の多数の構成から実行時に特定の構成を選択するそれら自体のそれぞれの処理構成要素によって構成されるように前記構成可能論理ユニットのすべてが適合されている、請求項４記載のデータプロセッサ。
【請求項１１】
予め規定された関数のライブラリからのコンパイル時における選択に応答して構成されるように前記構成可能論理ユニットのすべてが適合されている、請求項１記載のデータプロセッサ。
【請求項１２】
コンパイルツールによるコンパイル時におけるアプリケーションプログラムの分析からの生成に応答して構成されるように前記構成可能論理ユニットのすべてが適合されている、請求項１記載のデータプロセッサ。
【請求項１３】
前記プロセッサはＳＩＭＤプロセッサである、請求項１ないし１２のいずれか１項記載のデータプロセッサ。
【請求項１４】
前記各処理構成要素は演算論理ユニットをさらに備えている、請求項１記載のデータプロセッサ。
【請求項１５】
前記構成可能論理ユニットは飽和演算を実行するように適合されており、前記演算論理ユニットは非飽和演算を実行するように適合されている、請求項１４記載のデータプロセッサ。
【請求項１６】
前記構成可能論理ユニットは演算論理ユニットをエミュレートするように適合されている、請求項１記載のデータプロセッサ。
【請求項１７】
図面を参照して実質上ここに説明されているデータプロセッサ。
【発明の詳細な説明】
【発明の分野】
【０００１】
本発明は、例えばデータプロセッサのような、プロセッサの処理構成要素に関係付けられた論理関数を再構成するように適合されているプロセッサに関連する。
【発明の背景】
【０００２】
プロセッサの分野では、多数の利用可能な再構成可能アーキテクチャがある。これらは、ＦＰＧＡ（書替可能ゲートアレイ）、（例えば、Ｅｌｉｘｅｎｔ（登録商標）による‘Ｄ−Ｆａｂｒｉｘ’システム（登録商標）のような）ＡＬＵの再構成可能アレイ、または、（ＡＲＣおよびＴｅｎｓｉｌｉｃａ（登録商標）により生産されているもののような）“ｆａｂ−ｔｉｍｅ”再構成可能プロセッサのような、純粋な再構成可能ハードウェアを含む。標準ＣＰＵコアを含むＦＰＧＡ、または、任意の再構成可能論理を含むプロセッサのような、組合せのソリューションもある。これらのアプローチのすべては、多くの利点および欠点を有する。
【０００３】
さまざまな度合いの再構成可能性を提供する先行技術のプロセッサは、以下のタイプに分けられる。
【０００４】
ＡＲＣおよびＴｅｎｓｉｌｉｃａによって生産されているもののようなプロセッサは、設計時において構成することができ、ユーザは、（例えば、レジスタの数のような）さまざまなパラメータ、および、（例えば、ＤＳＰ命令のような）オプションを選択する。これらのプロセッサのいくつかは、拡張可能であってもよく、すなわち、特別な命令によってアクセスまたは制御されるユーザ規定されたハードウェアに接続するためのポート（または、バス）が提供される。これらのアーキテクチャは、再構成可能でないことに留意すべきである。これらは、ハードウェアが作成されるときに一度のみ構成することができる。次に、これらは、再構成可能であるがハードウェア設計技術を要求するＥｌｉｘｅｎｔのように、他のアプリケーションＦＰＧＡ、および、より高いレベルの再構成可能アーキテクチャに再ターゲット付けすることができない。ソフトウェアアプリケーションは、ハードウェア設計のときに、再コード化する必要がある。
【０００５】
プロセッサおよび再構成可能論理を組み合わせる既存のアーキテクチャは、プロセッサアーキテクチャに対してＦＰＧＡを完全に集積化することなく、主としてプロセッサおよびＦＰＧＡを一緒にパッケージする。１つの例外は、Ｔｅｎｓｉｌｉｃａプロセッサに再構成可能データパスを追加して、命令セット拡張を提供するストレッチアーキテクチャである。このケースでは、データを処理するときに高レベルの性能を提供する目的で、再構成可能論理は高度に並列化されている。このことは、構成可能論理ブロックの構成の複雑さ、サイズ、および電力消費を追加する。
【０００６】
これらの技術のすべては、基本的に、異なる関数を実行するように構成することができるハードウェアソリューションである。このことは、これらの関数を規定するために、ハードウェア設計方法、言語およびツールを使用する必要があることを意味する。これらの設計技術は、ソフトウェア開発者にとってなじみがないだけでなく、これらを既存のソフトウェアツールと一体化することは容易ではない。プロセッサに対する構成可能ユニットの結合は、通常はＡＰＩレベルにおけるものであり、プログラムのコンパイルと、ＦＰＧＡの構成とは、完全に独立した、および、非常に異なるツールチェーンを持っている。
【発明の概要】
【０００７】
本発明は、単純かつ規則的に、既存のアーキテクチャを拡張する方法で、既存のプロセッサに再構成可能論理を追加する。このことは、再構成可能論理を、標準的プログラミング言語からアクセスおよび使用し易くする。
【０００８】
本発明はしたがって、処理構成要素のアレイを具備するデータプロセッサを提供し、アレイ中の各処理構成要素は、それぞれ再構成可能論理ユニットを備え、それによって、各処理構成要素の論理能力を、意のままに再構成することができる。
【０００９】
本発明は、演算論理ユニット（ＡＬＵ）のような既存の関数ユニットとちょうど同じ方法で、構成可能論理のプロセッサとのより密接な集積化を提供する。処理構成要素のアレイ全体に、ＳＩＭＤ方式で少量の構成可能論理を分散させることにより、構成（および再構成）にかかる時間を減少させる。共通して使用される関数のライブラリを提供することにより、構成可能論理を規定することに関する問題を取り扱うことができる。また、再構成可能論理は単一の基礎的関数（命令または命令のグループ）を実現することだけに使用されるので、および、データの源および行先は処理構成要素アーキテクチャ中で既に規定されているので、この関数をハードウェアとして規定するタスクはより少なく、したがって、ソフトウェアにより自動的に実行される対象となりやすい。
【００１０】
構成可能論理ユニット（ＣＬＵ）の関数は、ユーザによって、おそらくライブラリから規定してもよく、または、コンパイルツールによって、通常は任意のアルゴリズムの内部ループで自動的に規定してもよい。いずれの方法でも、新しい命令がコンパイラに導入されて、頻繁に使用される演算をかなりスピードアップさせる。
【００１１】
プロセッサに対するＣＬＵの密な集積化と、レジスタファイルに対するＣＬＵの標準化された接続は、Ｃ／Ｃ＋＋アプリケーションソースコードの分析に基づいた自動的な構成を可能にする。ユーザによってフラグ付けされたアプリケーションソフトウェアの計算集約的部分のコンパイラ分析を通して、カスタム命令を自動的にプロセッサに組み込むことができる。カスタム命令のこの自動化された実現は、ＡＳＩＣ（特定用途向け集積回路）およびＦＰＧＡベースのソリューションに比べて、アプリケーション開発時間を劇的に減少させる見込みがある。
【００１２】
本発明は、それら自体でよく知られた技術である、（ソースコードおよびオブジェクトコードの両方の）ソフトウェアを分析するための技術と、ハードウェア（言い換えると、再構成可能論理を構成するためのデータ）を生成するための技術とに依存していない、ということを理解することが重要である。
【００１３】
本発明は、より高い性能というような重要な利点を提供し、事実、単一のプロセッサアーキテクチャを、異なるアプリケーションに対して最適化／ターゲット付けすることができ、また、事実、単一のプロセッサアーキテクチャは、単一のプログラミングモデルを保持することができる。
【００１４】
プロセッサ外部の再構成可能論理の単一の大きいブロックの代わりに、我々のアプローチは、アレイ中の一つ一つの処理構成要素内に、少量の再構成可能論理（ＣＬＵ）を集積化する。非常に多数のこれらの処理構成要素を並列で使用することから、システムの性能が生じる。
【００１５】
出願人の既存のプロセッサは、高度並列アーキテクチャを既に持っている。したがって、例えば、ハードウェア中で、いくつかのマイクロコードステップを通常要求する命令を実現するために、比較的単純な関数を構成可能論理において実現できるようにするためには、高度並列アーキテクチャを拡張するだけでよい。より単純な／より小型の構成可能論理ブロックは、一つ一つの処理構成要素に構成可能論理ブロックを追加することが、現実的になることを意味している。次に、他のアプリケーションで使用されていない命令に対して固定されたハードウェア資源を割り当てるハードウェアオーバーヘッドを発生させることなく、特定のアプリケーションの性能に影響を与えるキー命令を、ハードウェア中で実現することができる。例えば、多数のＤＳＰ（デジタル信号処理）アプリケーションは、さもなければオーバフロー（または、アンダーフロー）してしまう計算を、最大値（または最小値）の範囲内に‘固定’させる、‘飽和’演算を要求する。この特別な関数をハードウェア中に追加することは、非ＤＳＰアプリケーションに対するオーバーヘッドとなり、また、コストを追加するだろう。マイクロコード中でこれを実現することは、一つ一つの演算命令に対していくつかのサイクルを追加し、性能に悪影響を及ぼすだろう。
【００１６】
マイクロコードを書くことによって新しい命令を追加する代わりに、構成可能ハードウェア中で、関数が実現される。現在、関数の高レベル記述からマイクロコードを生成させているのと同じツールを変更して、同じ高レベル記述から構成データを生成させることができる。
【００１７】
ＣＬＵは、（起動時に）システムに対して、（実行時に）アプリケーションに対して、または、（例えば、スレッド切り替えにおいて、または、プログラム制御のもと）動的に、構成することができる。明確に規定された、インターフェイス、制御および関数のおかげで、構成は、ハードウェア設計またはＦＰＧＡツールチェーンに関するユーザの知識を少ししか必要とせず、もしくは、まったく必要としないだろう。
【００１８】
ＣＬＵを組み込んでいるプロセッサは、多数のアプリケーション領域で構成および使用することができる。いくつかのケースでは、より高度に最適化された実現品を生産することは、経済的に理にかなっているだろう。このケースでは、どの関数がハードウェア中で直接、最もうまく実現されるかを正確に決定するために、開発および評価プラットフォームとして、プロセッサのＣＬＵバージョンを使用することができる。いったんこのことが分かると、固定ハードウェア中で実現されている、要求された関数のみを持つ、より効率的な実現品で、ＣＬＵを置き換えることができる。
【００１９】
以下の図面を参照して、ここで本発明を説明する。
【実施形態の詳細な説明】
【００２０】
図１は、制御パスおよび２方向データパスにより、メモリ２と、コプロセッサまたはＦＰＧＡ３とに接続された、汎用プロセッサ１を示す。コプロセッサまたはＦＰＧＡ３は、上記の導入部で説明したレベルにおいて、構成可能プロセッサを生み出すように構成可能であってもよい。
【００２１】
多数のアルゴリズムのアプリケーション特有のアクセラレーションは、ＦＰＧＡアーキテクチャに適合していることがよく知られており、実際に、多数のアルゴリズムは、初めにハードウェアの小型部品に適合するように設計されていた。これらのアルゴリズムは、ソフトウェアへと翻訳されて、通常は高度に最適化された、小さい計算内部ループを形成している。これらの集約的内部ループは、（構成可能）ハードウェアにマッピングして戻されたときに、数オーダーの開きで、より早く動作することを示すことができる。
【００２２】
図２は処理構成要素４を概念的に図示する。これは、アレイ中の多数の処理構成要素のうちの１つであるため、ｎ番目の処理構成要素として取り扱い、図２ではＰＥｎとしてラベル付けした。アレイはＳＩＭＤアレイとすることができる。
【００２３】
処理構成要素４は、Ｉ／Ｏユニット５、ローカルメモリ６、レジスタファイル７および演算論理ユニット（ＡＬＵ）８の通常の結合を含む。処理構成要素４は制御論理ユニット９のコマンドのもとにある。外部メモリ１０はＩ／Ｏユニット５によって処理構成要素４とインターフェイスしている。ＡＬＵユニット８はレジスタファイル７に密接に結合されている。レジスタファイル７からのオペランドは、ＡＬＵに接続されて、制御ユニット９により命令された通りの関数を実行し、レジスタファイルに結果をフィードバックする。
【００２４】
構成可能論理ユニット（ＣＬＵ）１１は、ＡＬＵ８および浮動小数点演算ユニット（ＦＰＵ）１２のような、他の関数ユニットのすべてと同じ方法で、処理構成要素のレジスタファイル７に密接に結合されている。（示していない）ＭＡＣユニットは他のユニットと同じ方法で、接続されていてもよい。通常はいくつかのアルゴリズムの内部ループ内の単一の命令に応答して、ユーザ規定された論理関数として構成されるようにＣＬＵ１１が設計されている。いったん、ＣＬＵが構成されると、ＣＬＵは他の関数ユニットと同じ方法で、例えば、マイクロコード命令が、レジスタファイルと、ＡＬＵ（またはＦＰＵ）との間のデータ転送を制御するのと同じ方法で使用される。
【００２５】
図２において、データおよび命令パスをさまざまな矢印で表現した。ＣＬＵは、標準的な方法でレジスタファイルに接続されており、標準的な方法とは、すなわち、入力および出力が、固定幅と、固定ロケーションのものである。多数の汎用目的マイクロコードビットをすべてのＣＬＵに入力することができる。これらは、ＣＬＵを構成するためと、構成されたＣＬＵを制御するためとの両方に使用することができる。
【００２６】
これを処理構成要素４へと密接に集積化するとき、ＣＬＵ構成およびプログラミングモデルは、新しい命令をスピードアップさせる方法を形成しながら、従来のコンパイルツールセットとともに、集積化することができる。
【００２７】
ＣＬＵへのおよびＣＬＵからのデータのフローがうまく規定され、少数のオプションに制限されているおかげで、このことが可能になっており、したがって、ＣＬＵのプログラミングは、非常に単純化されている。この単純化は、コンパイラが小さい内部ループのデータフローグラフを分析できるようにし、どの関数を再構成可能ハードウェア中で実現すべきかを決定できるようにする。このデータフローグラフは、新しい命令として、ＣＬＵ論理へと直接マッピングされる。
【００２８】
このことは、プログラマが、アクセラレータのアーキテクチャを比較的知らずにいられる（または、アクセラレータの存在さえも知らずにいられる）ことを意味し、したがって、性能のスピードアップがより直接的に達成される。
【００２９】
図３および４は、ＣＬＵを再構成することが可能な方法における、２つの変形を図示する。図３では、制御論理９をより詳細に示している。それは命令フェッチおよびデコードユニット１３と、マイクロコードユニット１４とを含む。これらのユニット１３および１４は、ＣＬＵ１５を制御し、構成データユニット１６に命令を付加的に提供する。構成データユニット１６は、好ましくは小型のＲＡＭであり、この小型のＲＡＭ中には１組の構成データが記憶されており、１組の構成データは、スレッドＩＤを使用することによって呼び出して、ＲＡＭ１６中に予めロードされている、予め定められた数の構成の内の任意のものにＣＬＵ１５を再構成させることができる。この配置の主要な利点の１つは、制御論理からＲＡＭに対する命令セットをかなり単純にすることができ、したがって、より早く実行できることである。このようにして、ＲＡＭ１６中に保持された予め規定された関数（または命令）の“ライブラリ”から選択された構成を、ＣＬＵ１５にロードすることができる。このことは、プログラマによって、または、コンパイルツールによるアプリケーションの要求の分析に基づいて、明示的に行うことができる。
【００３０】
図４は、ＣＬＵ１５を再構成するための、他の技術を示す。ここで、再構成するためのＣＬＵに対する命令は、マイクロコードＲＡＭ１４から導出され、マイクロコードＲＡＭ１４は、制御論理９からの命令を拡張するマイクロコードを含んでいる。構成データおよび制御命令は、ＣＬＵに対して直接に供給されて、再構成を実現する。図は、同じ制御論理９の制御のもと、他のマイクロコードＲＡＭ１７および他のＣＬＵ１８を動作させることができることを、破線中で示している。
【００３１】
ＣＬＵは小型であり、また、少量の構成データしか必要としないので、ＣＬＵの構成は非常に速く行うことができ、例えば、スレッドが切り替えられるときに行うことができる。構成およびプログラミングモデルは、データ並列であるため、すべての処理構成要素中のすべてのＣＬＵを、同時に構成することができる。
【００３２】
したがって、ＣＬＵの構成と制御の両方が、普通のマイクロコード化された命令によって達成されることが明らかになるだろう。構成データは、マイクロコード記憶中に直接保持することができ、このケースでは、特別にマーク付けされたマイクロコードワードを、構成データとして直接使用する。代わりに、ＣＬＵ構成データが、その目的に特化された記憶中に保持されてもよく、このデータは、マイクロコード命令の制御のもと、要求されたときにＣＬＵ中にロードされる。この構成データ記憶は、すべての処理構成要素に対して共通とすることができ、または、それぞれの処理構成要素において、繰り返すことができる。後者は、（ルーティング信号に対して要求される領域を減少させるが）記憶のためのより多くの領域を要求し、しかし、より速い再構成を可能にするだろう。
【００３３】
したがって、システムは、２つのレベルのマイクロコード制御、すなわち、ＣＬＵを構成するものと、命令毎のベースでＣＬＵに対するデータを制御および提供するものとを持っている。一般的に、プロセッサの起動時に、構成データがマイクロコード記憶中にロードされ、次に、構成データは、要求された時に、ＣＬＵにロードするために利用可能になる。ＣＬＵはマイクロコード命令から構成されているので、プログラム実行および構成のさらなるオーバーラップが可能になり、すなわち、他の関数ユニットが使用されているサイクルにおいて、構成データをＣＬＵ中にロードすることができる。
【００３４】
共通の構成記憶から制御される、この場合、一連の構成から特定の構成が選択される、別のレベルの構成があってもよく、または、プログラム制御のもと処理構成要素自体によって直接に制御される、別のレベルの構成があってもよい。
【００３５】
このことは、おそらく各処理構成要素の状態評価に基づいて、各ＣＬＵを異って構成することを可能にする。この手段は、ＣＬＵにおいてターゲット付けられた特定の命令演算コードが、各処理構成要素において異なる関数を実行でき、したがって、従来のＳＩＭＤプログラミングモデルの厳しい制限を回避することができることを意味する。
【００３６】
要約すると、ロード時、または、例えば、スレッドの切り替えにおけるような、実行時において、すべてのＣＬＵを、迅速かつ並列に構成することができる。プログラム制御のもと、すべてのＣＬＵは、これらの処理構成要素によって、同時に構成／変更されることができる。同じ演算コードが異なる関数を実現するために、異なる処理構成要素が、（実行時に決定された）異なって構成された、それらのＣＬＵを持つことができ、これによりＳＩＭＤモデルの厳しい制限を回避することができる。最後に、処理構成要素が、マイクロコード記憶中の多数の構成から特定の構成を実行時に選択することによって、ＣＬＵを構成することができる。
【００３７】
本発明の上記の実施形態では、本発明のＣＬＵとともに、ＡＬＵが存在しているが、適切に命令されたときに、ＡＬＵをエミュレートするようにＣＬＵを構成できる可能性がある。代わりに、非飽和演算を実行するためにＡＬＵを使用することができ、飽和演算を実行するためにＣＬＵを取っておくことができる。
【図面の簡単な説明】
【００３８】
【図１】図１は、一般的な処理構成要素アレイを示す。
【図２】図２は、関数ユニットを示す処理構成要素（ＰＥ）の概念ブロック図であり、その１つは構成可能論理ユニット（ＣＬＵ）であってもよい。
【図３】図３は、ＲＡＭからの選択によって、どのように再構成が実行できるかに関する概念表現である。
【図４】図４は、マイクロコードの使用によって、どのように再構成が実行できるかに関する概念表現である。
【図１】
2008532162.tif 000003
【図２】
2008532162.tif 000004
【図３】
2008532162.tif 000005
【図４】
2008532162.tif 000006
【国際調査報告】
2008532162.tif 000007
2008532162.tif 000008
2008532162.tif 000009