(57)【要約】本発明は、プログラムをシステムへ翻訳するための方法であって、該システムは少なくとも１つのプロセッサおよび再構築可能なユニットから成ることを特徴とする方法に関する。本方法では、再構築可能なユニットに適したコードの一部が検出および抽出され、このようにして残りのコードは、第１のプロセッサによる処理のために抽出される。
2004533691.tif 000002
【特許請求の範囲】
【請求項１】
プログラムをシステムへ翻訳するための方法であって、
該システムは、少なくとも１つの第１のプロセッサと、少なくとも１つの再構築可能なユニットとから構成されている形式の方法において、
該再構築可能なユニットに適したコード構成部分を検出して抽出し、および／または分割し、
残りのコードを、第１のプロセッサによって処理するために検出することを特徴とする方法。
【請求項２】
該プロセッサのために抽出されたコードに対して、インターフェースコードを付加し、
前記インターフェースコードにより、該プロセッサと再構築可能なユニットとの間で、システムに応じて通信を行う、請求項１記載の方法。
【請求項３】
該再構築可能なユニットに対して抽出されたコードに、該プロセッサと再構築可能なユニットとの間でシステムに応じて通信を行うためのインターフェースコードを付加する、請求項１または２記載の方法。
【請求項４】
抽出すべきコードを、自動的な分析に基づいて検出する、請求項１から３までのいずれか１項記載の方法。
【請求項５】
抽出すべきコードを検出するための該コード中の指示を、自動的に評価する、請求項１から４までのいずれか１項記載の方法。
【請求項６】
抽出すべきコードを、下位プログラムを呼び出すことによって検出する、請求項１から５までのいずれか１項記載の方法。
【請求項７】
メモリ接続（共有メモリ）を実施し、および／または、レジスタ接続および／またはネットワークによる接続を行うためのインターフェースコードを設ける、請求項１から６までのいずれか１項記載の方法。
【請求項８】
抽出されたコード、および／または所定の抽出によって得られた結果を分析し、
場合によっては、補正された新たなパラメータによって抽出を再び開始する、請求項１から７までのいずれか１項記載の方法。
【請求項９】
抽出されたコードに対して、開発システムの管理および／または制御および／または通信のための制御コードを付加する、請求項１から８までのいずれか１項記載の方法。
【請求項１０】
第１のプロセッサは従来のプロセッサアーキテクチャを有し、
前記第１のプロセッサはとりわけ、ノイマンアーキテクチャおよび／またはハーバードアーキテクチャ、コントローラ、ＣＩＳＣプロセッサ、ＲＩＳＣプロセッサ、ＶＬＩＷプロセッサ、ＤＳＰプロセッサである、請求項１から９までのいずれか１項記載の方法。
【請求項１１】
プログラムをシステムへ翻訳するための方法であって、
該システムは、プロセッサおよび再構築可能なユニットから成る形式の方法において、
再構築可能なユニットに適したコード構成部分を抽出し、
残りのコードを抽出し、プロセッサに適した通常の任意の未変更のコンパイラによって翻訳することを特徴とする、とりわけ請求項１から１０までのいずれか１項記載の方法。
【請求項１２】
データ処理のための装置であって、
少なくとも１つの従来のプロセッサおよび少なくとも１つの再構築可能なユニットが設けられている形式のものにおいて、
情報交換のための手段が、従来のプロセッサと再構築可能なユニットとの間に設けられており、
前記情報交換はたとえば、データ情報および状態情報の情報交換であり、
前記手段は、該従来のプロセッサと該再構築可能なユニットとの間でデータ情報および状態情報が、１つまたは複数のプログラムの処理中に可能であり、および／または、特に再構築可能なプロセッサ上および／または従来のプロセッサ上のデータ処理を有意に中断しなくてもよいように構成されていることを特徴とする装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理に関する。とりわけ本発明は、パスカル、Ｃ、Ｃ＋＋、Ｊａｖａ等の典型的な高級言語（ＰＲＯＧＲＡＭＭ）をとりわけリコンフィギュアラブルアーキテクチャに変換するための従来の、すなわち通常のリコンフィギュアラブルプロセッサアーキテクチャおよびそのための方法に関する。とりわけ本発明は、リコンフィギュアラブルプロセッサと標準プロセッサとの統合および／または密接な接続、データ交換、およびデータ処理の同期に関する。
【０００２】
従来のプロセッサアーキテクチャ（PROZESSOR）とはここでは、たとえばコントローラ、ＣＩＳＣプロセッサ、ＲＩＳＣプロセッサ、ＶＬＩＷプロセッサ、ＤＳＰプロセッサ等、ノイマンアーキテクチャまたはハーバードアーキテクチャによるシーケンシャルプロセッサのことを指す。
【０００３】
再構築可能なターゲットアーキテクチャとはここでは、繰り返し構築可能な機能および／またはネットワーク構成を有するモジュール（ＶＰＵ）のことを指し、とりわけ、１次元または多次元で配置された多数の計算モジュールおよび／または論理モジュールおよび／またはアナログモジュールおよび／または記憶モジュール、とりわけ場合によっては、大きい粒度のモジュールのことも指す。前記繰り返し構築可能な機能および／またはネットワーク構成はとりわけ、実行時に中断なしで構築可能な機能および／またはネットワーク構成である。これらのモジュールは直接、またはバスシステムによって相互に接続されている。
【０００４】
これらのモジュールの種類には、とりわけシストリックアレイ、ニューロナルネットワーク、マルチプロセッサシステム、複数の演算論理ユニットおよび／または論理セルを有するプロセッサ、たとえばクロスバースイッチ等のネットワーク化およびネットワークモジュール、およびＦＰＧＡ、ＤＰＧＡ、ＸＰＵＴＥＲ等の種類の公知のモジュール等が挙げられる。とりわけこれと関連して、同出願人の以下の保護権を参照されたい：
【０００５】
【数１】
2004533691.tif 000003
【０００６】
これらは、開示目的で全面的に組み込まれている。
【０００７】
該システムはとりわけ、（標準）プロセッサまたは（標準）パッケージとして構成され、および／または半導体（システム・オン・チップ、ＳｏＣ）に組み込まれる。異なる種類のリコンフィギュアラブルモジュール（ＶＰＵ）は、既存の技術的環境およびプログラミング手法に対して大幅に非互換性である（前記リコンフィギュアラブルモジュールは、たとえばＰＡＣＴ  ＸＰＰ-Ｔｅｃｈｎｏｌｏｇｉｅ，Ｍｏｒｐｈｉｃｓ，Ｍｏｒｐｈｏｓｙｓ，Ｃｈａｍｅｌｅｏｎである）。
【０００８】
典型的には、これらのモジュールのためのプログラムは、ＣＰＵの既存のプログラムに対して非互換性である。それゆえ、たとえばとりわけＭｏｒｐｈｉｃｓ、Ｍｏｒｐｈｏｓｙｓの種類のモジュールのためにプログラミングを開発するのに、著しい手間が必要となる。Ｃｈａｍｅｌｅｏｎはすでに、多かれ少なかれ再構築可能なモジュール上に標準プロセッサ（ＡＲＣ）を集積している。こうすることにより、プログラミングのためのツールに対するアプローチが提供される。もちろんすべての技術的環境が、ＡＲＣプロセッサを使用するのに適しているわけではなく、とりわけ既存のプログラム、コードライブラリ等がしばしば、任意の不特定の別のＣＰＵのために存在する。
【０００９】
内部の試行において、従来のプロセッサアーキテクチャよりもリコンフィギュアラブルアーキテクチャによって良好に処理することができる特定の手法およびプログラム経過が存在することが明らかになった。逆に、従来のプロセッサアーキテクチャによってより良好に実行できる手法およびプログラム経過も存在する。それゆえ、それぞれ最適化できるようにするため、経過分割されるように構成することが望ましい。
【００１０】
リコンフィギュアラブルアーキテクチャのための公知の翻訳手法は、コードを任意の標準的コンパイラへ伝送してオブジェクトコードを任意のＰＲＯＺＥＳＳＯＲに対して形成することを支援しない。通常、プロセッサはコンパイラ内部で固定的に定義されている。
【００１１】
さらに、ＶＰＵのために形成された個別のコンフィギュレーションを再構築するためのスケジューリングメカニズムが存在しない。とりわけ、抽出された独立部分を構築し、かつ抽出部分を個別に分割するためのスケジューリングメカニズムが欠落している。従来技術による相応の翻訳手法はたとえば、学位論文『Ｕｅｂｅｒｓｅｔｚｕｎｇｓｍｅｔｈｏｄｅｎ  ｆｕｅｒ  ｓｔｒｕｋｔｕｒｐｒｏｇｒａｍｍｉｅｒｂａｒｅ  Ｒｅｃｈｎｅｒ』（Ｄｒ．Ｍａｒｋｕｓ  Ｗｅｉｎｈａｒｄｔ，１９９７）で定義されている。
【００１２】
アレイコードを分割するためには、従来技術による手法が幾つか公知である。たとえば、Ｊｏａｏ  Ｍ．Ｐ．Ｃａｒｄｏｓｏ，『Ｃｏｍｐｉｌａｔｉｏｎ  ｏｆ  ＪａｖａＴＭ  Ａｌｇｏｒｉｔｈｍｓ  ｏｎｔｏ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｃｏｍｐｕｔｉｎｇ  Ｓｙｓｔｅｍｓ  ｗｉｔｈ  Ｅｘｐｌｏｉｔａｔｉｏｎ  ｏｆ  Ｏｐｅｒａｔｉｏｎ−Ｌｅｖｅｌ  Ｐａｒａｌｌｅｌｉｓｍ』（Ｐｈ．Ｄ．Ｔｈｅｓｉｓ  Ｕｎｉｖｅｒｓｉｄａｄｅ  Ｔｅｃｎｉｃａ  ｄｅ  Ｌｉｓｂｏａ（ＵＴＬ），２０００）が公知である。
【００１３】
しかしこれらの手法は、完全なコンパイラシステムには組み込まれていない。さらにこのような手法は、再構築がホストプロセッサによって完全に制御されることを前提としているため、このことは著しく手間がかかることを意味する。これらの分割ストラテジーはＦＰＧＡベースのシステムのために構成されているため、本当のプロセッサモデルに相応しない。
【００１４】
それゆえ本発明の課題は、産業上の適用のために新たなものを提供することである。
【００１５】
前記課題の解決手段は、独立請求項の形態で請求されている。有利な実施形態は、従属項に記載されている。
【００１６】
リコンフィギュアラブルプロセッサ（ＶＰＵ）は、標準プロセッサ（ＣＰＵ）を有する技術的環境にデザインインされている。前記標準プロセッサは、たとえばＤＳＰ、ＲＩＳＣプロセッサ、ＣＩＳＣプロセッサまたは（マイクロ）コントローラである。このような設計は本発明では、簡単かつ高性能な接続が実現されるように実施することができる。ここで得られる側面は、相応するシステムを簡単にプログラミングできることである。ＣＰＵの既存のプログラムを転用し、ＶＰＵのコードを互換性にし、ＶＰＵを既存のプログラムに単に組み込むことも考えられる。
【００１７】
ＶＰＵ（または特記されなければ、複数のＶＰＵ）は、有利なＣＰＵ（または特記されなければ、複数のＣＰＵ）に接続され、補助プロセッサ（または特記されなければ、択一的に応答可能な複数の補助プロセッサ）の位置および機能を有する。この機能によって、従来技術による補助プロセッサとの共動のための既存の方式に相応して、既存のプログラムコードに簡単に組み込むことができるようになる。
【００１８】
ＣＰＵとＶＰＵとの間の本発明によるデータ交換は、メモリ接続および／またはＩＯ接続によって実行される。ＣＰＵおよびＶＰＵはすべてのリソースを共有し、特別な実施形態では、ＣＰＵおよびＶＰＵがリソースの一部のみを共通して使用し、別のリソースをそれぞれ明確に、および／または専用で使用することも可能である。
【００１９】
データ交換を実行するため、データセットおよび／またはコンフィギュレーションが、それぞれ該データ交換のために特別に設けられた記憶領域にコピーされるか、ないしは書き込み／読み出しされ、および／または、適切なベースアドレスがセットされ、該ベースアドレスが各データ領域を示す。
【００２０】
補助プロセッサを制御するため、有利には、たとえば所定のベースアドレス等の、たとえばＶＰＵの基本調整を含むデータセットが設けられている。さらに、ＶＰＵの機能をＣＰＵによって制御し、かつＶＰＵがＣＰＵへフィードバックするために、状態変数が設けられている。データセットは、共通のメモリ（ＲＡＭ）および／または共通の周辺アドレス空間（ＩＯ）を介して交換される。
【００２１】
ＣＰＵおよびＶＰＵを同期するため、片側または相互に作用する割り込み手法（たとえば、とりわけ専用の割り込み線路および／または割り込み入力端ないしはそのために構成された割り込み線路および／または割り込み入力端を介する信号伝送によって実現される割り込み手法）が構成されており、および／またはポーリング手法によって同期が実施される。さらに、データ伝送および／またはＤＭＡ伝送を同期するために割り込みが使用される。
【００２２】
特に有利な実施形態では、ＶＰＵはＣＰＵによって始動され、その後有利には、独立してアプリケーションを処理する。
【００２３】
特に効率的であるのは、使用されるＶＰＵが、コンフィギュレーションをロードおよび制御するために専用のメカニズムを有する有利な構成である。この種のＶＰＵには、たとえばＰＡＣＴ  ＸＰＰおよびＣｈａｍｅｌｅｏｎが属する。本発明の回路によって、ＶＰＵのコンフィギュレーションが、ＣＰＵの実行すべきプログラムとともに１つのメモリにロードされるように、運転方法を実現することができる。ＣＰＵはプログラムの実行中に、ＶＰＵに対して記憶場所を（たとえばアドレスまたはポインタを指示することによって）指示する。この記憶場所は、その都度実行すべきコンフィギュレーションを含む。ＶＰＵはこれに基づいて、該コンフィギュレーションを独立して、ＣＰＵによってさらに影響を受けることなくロードする。実行は直ちに開始するか、または場合によっては、ＣＰＵにより付加的な情報（たとえば割り込みおよび／または開始命令）によって開始する。
【００２４】
特に有利な発展形態では、ＶＰＵは独立して、メモリ内にデータを読み出し、書き込みすることができる。
【００２５】
特に有利な発展形態では、ＶＰＵもまた同様に、新たなコンフィギュレーションをメモリからロードし、必要な場合には新たに構築する。その際には、ＣＰＵによる付加的な影響は必要ない。
【００２６】
これらの構成によって、ＣＰＵから大幅に独立したＶＰＵの動作が可能になる。データ処理および／または構築実行を相互に整合するためには、ＣＰＵとＶＰＵとの間の同期交換のみを付加的に構成するだけでよい。前記同期交換は、有利には双方向で実行される。
【００２７】
さらに、データ処理方法を有利には、それぞれ再構築可能なターゲットアーキテクチャ（ＶＰＵ）に適した、翻訳すべきプログラムの構成部分（ＶＰＵ‐ＣＯＤＥ）が識別され、抽出されるように構成でき、および／または構成すべきであることが認識されている。このことにより、特に効率的なデータ処理が可能になる。このような構成部分は相応に分割され、個々の部分の構築は時間的な順序で制御される。
【００２８】
プログラムの残りの部分は、従来のプロセッサアーキテクチャ（ＰＲＯＺＥＳＳＯＲ）に翻訳される。このことが実行されることによって、有利には、これらの部分を高級言語コードとして標準的な高級言語（たとえばＡＮＳＩ  Ｃ）で出力される。こうすることにより、通常の（場合によっては既存の）高級言語コンパイラが前記部分を簡単に処理することができる。さらに、これらの方法を複数のモジュールのグループに適用できることに留意されたい。
【００２９】
とりわけ、「ダブルバッファリング」という形式を適用することにより、特に簡単かつ高速で再構築することができる。このダブルバッファリングでは多数のＶＰＵが設けられており、ＶＰＵの一部は、別の部分が計算し、場合によってはさらに別の部分がほぼ非アクティブ状態にある際に再構築される。データ接続、トリガ接続、状態接続等は複数のＶＰＵ間で適切に交換され、場合によっては、アドレシングされたバスおよび／またはマルチプレクサ／デマルチプレクサによって、その時点でアクティブであり、および／または再構築すべきＶＰＵに相応して接続される。
【００３０】
本方法の利点は、任意のＰＲＯＺＥＳＳＯＲのために書かれた既存のコードを、ＶＰＵを使用することによって転用することができ、変更を全く実施しないでもよいか、または比較的小さな変更をするだけでよいということである。さらに、このような変更はステップごとに実施され、連続的にＰＲＯＺＥＳＳＯＲからＶＰＵへ伝送できるコードの数が格段に増加する。プロジェクトのリスクは低減し、格段に分かりやすくなる。ここで示唆されているのは、ＶＰＵへ、すなわち構成要素に存在する部分的に再構築可能な多次元の完全なフィールドへ格段に多いタスクを前記のように逐次的に伝送することは、本システムが提案される際の重要な利点ゆえに、それ自体に意義があり、それ自体で発明的であると見なされることである。前記フィールドは、とりわけ大きい粒度である。
【００３１】
さらに、プログラマは通常の開発環境で作業することができ、新たな、場合によっては未知の開発環境に順応する必要はない。
【００３２】
本発明の第１の重要な側面は、ＰＲＯＺＥＳＳＯＲが１つまたは複数のＶＰＵに接続されることにより、効率的な情報交換を、とりわけデータ情報および状態情報の形態で実行できることである。
【００３３】
データ情報および／または状態情報の交換が１つまたは複数のプログラムの処理中に可能であり、および／または、とりわけリコンフィギュアラブルプロセッサおよび／または従来のプロセッサ上でのデータ処理を有意に中断する必要のない従来のプロセッサおよびリコンフィギュアラブルプロセッサの構成も、このようなシステムの構成もまた、それ自体に意義を有する。
【００３４】
まず、たとえば以下の接続手法および／または接続手段のうち１つまたはすべてが使用される：
ａ）共有メモリ
ｂ）ネットワーク（たとえば、ＰＣＩバス、イーサネット等のシリアルバス等のバスシステム
ｃ）１つまたは複数の内部レジスタセットへの接続
ｄ）別の記憶媒体（ハードディスク、フラッシュＲＯＭ等）
原則的に、ＶＰＵおよび／またはＣＰＵもまた、独立してＤＭＡを使用せずにメモリにアクセスできる。共有メモリはとりわけ、デュアルポートメモリまたはマルチポートメモリとして構成される。システムには別のモジュールが配属されており、とりわけリコンフィギュアラブルＦＰＧＡが使用される。こうすることにより、個々の信号またはデータビットを細かい粒度で処理することができ、および／または、フレキシブルかつ適合可能なインターフェース（たとえば異なるシリアルインターフェース（Ｖ２４，ＵＳＢ等）、異なるパラレルインターフェース、ハードディスクインターフェース、イーサネット、通信インターフェース（ａ／ｂ，Ｔ０，ＩＳＤＮ，ＤＳＬ等））を構成できるようになる。
【００３５】
ＶＰＵの構成は、たとえば上記で引用された出願から公知である。択一的にモジュールを定義するための試みは、たとえばＣｈａｍｅｌｅｏｎの名義で紹介されている。ＶＰＵは種々の形式でシステムに組み込まれる。たとえばホストプロセッサへの接続が可能である。方法に応じて、ホストプロセッサがコンフィギュレーション検査（ＨＯＳＴＲＥＣＯＮＦ）も引き継ぐか、または、（再）構築を制御するためにたとえば専用のユニット（ＣＴ）が設けられている。
【００３６】
それに相応してトランスレータは、ここに記載された方法にしたがって、ＣＴおよび／またはＨＯＳＴＲＥＣＯＮＦに対して再構築するための制御情報を形成する。
【００３７】
ここでは翻訳原理は、ＰＲＯＧＲＡＭＭからＰＲＡＥＰＲＯＺＥＳＳＯＲにより、その都度設定されたＶＰＵ上に効率的に、および／または有意に複製される部分が抽出される。この部分は、ＶＰＵに適したフォーマットで変換された後、さらにオブジェクトコードに翻訳される。
【００３８】
本発明では残りのコードおよび／または抽出されたコードは、抽出によって欠落したコード部分の位置に関して、インターフェースコードを付加して拡張される。このインターフェースコードは、ターゲットシステムのアーキテクチャに相応して、ＰＲＯＺＥＳＳＯＲとＶＰＵとの間の通信を制御する。場合によっては拡張された残りのコードは、有利には抽出すべきである。たとえば、このことは以下のように実行される：
．．．
Ｃｏｄｅ
．．．
＃  ＳＴＡＲＴ＿ＥＸＴＲＡＣＴＩＯＮ
抽出すべきコード
＃  ＥＮＤ  ＥＸＴＲＡＣＴＩＯＮ
．．．
Ｃｏｄｅ
．．．
「／／  ＳＴＡＲＴ＿ＥＸＴＲＡＣＴＩＯＮ」は、抽出すべきコードの開始を示している。
【００３９】
「／／  ＥＮＤ＿ＥＸＴＲＡＣＴＩＯＮ」は、抽出すべきコードの終了を示している。
【００４０】
このような場合、ＰＲＯＧＲＡＭＭをコンフィギュレーションコードに変換するためのユニットは、指示ないしは変換設定を識別するために構成されている。
【００４１】
また、ＮＭＬルーティンを呼び出すことによって抽出するために、ＰＲＯＧＲＡＭＭの一部を直接ＮＭＬで構成し、呼び出し（コール）によってＮＭＬルーティンへジャンプすることもできる。このことはたとえば、以下のように実行される：
ａ）ＮＭＬコード
．．．
ｐｒｏｃｅｄｕｒｅ  ＥＸＡＭＰＬＥ
ｂｅｇｉｎ
．．．
ｅｎｄ
．．．
ｂ）ＰＲＯＧＲＡＭＭコード
．．．
Ｃｏｄｅ
ｃａｌｌ  ＥＸＡＭＰＬＥ        ／／  ＮＭＬコードの呼び出し
．．．
Ｃｏｄｅ
．．．
この場合、変換するためのユニットは、ＮＭＬプログラム部分、すなわち再構築可能なアレイ内および／または再構築可能なアレイ上で実行するためのプログラム部分を、より大きなプログラムに組み込むために構成されている。
【００４２】
さらに択一的および／または付加的に、オブジェクト指向クラスから抽出することができる。ＶＰＵに適したマクロは、オブジェクト指向プログラム言語のクラスヒエラルキー内のクラスとして定義される。このマクロは、注釈によって特徴付けられることにより、ＶＰＵに対して設定されたコードとして識別され、相応に、言語のより高いヒエラルキーでも処理される。
【００４３】
マクロでは、該マクロによって所定のネットワーク化および／または複製が実行されるように構成されている。これにより、ＶＰＵへのマクロの複製が設定される。
【００４４】
クラスを具体化して接続することにより、ＶＰＵ上の複数のマクロから成る機能が実現される。換言すれば、マクロを具体化して接続することにより、ＶＰＵ上の個々の動作の複製および接続、および／または、場合によってはＶＰＵとＣＰＵとの間のネットワーク化および／またはデータ交換が定義される。
【００４５】
インターフェースコードは具体化の際に付加される。ここで接続とは、ＶＰＵ上のクラスを詳細にマッピングすることを意味する。
【００４６】
クラスはたとえば、１つまたは複数のＮＭＬルーティンの呼び出しとしても形成される。
【００４７】
ａ）クラスコード
．．．
ｃｌａｓｓ  ＥＸＡＭＰＬＥ
ｂｅｇｉｎ
．．．
ｅｎｄ
．．．
ｂ）ＰＲＯＧＲＡＭＭコード
．．．
Ｃｏｄｅ
ＥＸＡＭＰＬＥ  ｖａｒ  （  ）        ／／  クラスの具体化
．．．
Ｃｏｄｅ
．．．
さらに、分析によって抽出することもできる。各ＶＰＵに適合された分析方式によってＰＲＯＧＲＡＭＭ中の一部が識別され、この一部は効率的および／または有意にＶＰＵに複製される。この一部はＰＲＯＧＲＡＭＭから抽出される。
【００４８】
たとえば多くのＶＰＵに適した分析方式は、ＰＲＯＧＲＡＭＭからのデータフローおよび／または制御フローのグラフの形成である。このグラフは、可能な分割および／または目的ＶＰＵへの複製の点で、自動的に検査される。この場合、形成されたグラフの一部ないしは相応するＰＲＯＧＲＡＭＭＴＥＩＬが抽出され、十分に良好に分割および／または複製される。こうするため、分割可能性分析および／または複製可能性分析が実行され、各特性が評価される。この評価に相応して、プログラム構成部分が分割されてＶＰＵへ抽出され、所定のインターフェースが導入される。
【００４９】
ここで、特許出願ＤＥ１０１３９１７０．６に記載された分析方式を明確に挙げておく。たとえばこの分析方式を適用することができる。前記出願は、開示目的で全面的に組み込まれている。
【００５０】
可能な分析方式は、所定のデータタイプを識別することによっても実施できる。
【００５１】
異なるデータタイプは多かれ少なかれ、ＶＰＵ上での処理に非常に適している。たとえば、複雑なポインタ計算ないしはポインタベースのデータアドレシング（ｐｏｉｎｔｅｒ）をＶＰＵ上へ複製するのは困難であるが、アレイ（ａｒｒａｙ）は非常に良好に複製することができる。
【００５２】
それゆえ本発明では、大幅に自動的に、または手動で、それぞれ適切なデータタイプおよびデータ処理の少なくとも重要な部分をＶＰＵへ伝送し、相応に抽出する。このようにして、所定のデータタイプおよび／またはデータ動作の出現に対する応答で抽出が実行される。
【００５３】
ここで言及すべきことは、データタイプに所属する付加的なパラメータがさらに指示することにより、ＶＰＵ上での実行可能性および／または実行パフォーマンスが決定されるので、決定的に抽出するために一緒に使用されることである。たとえば、計算すべきアレイの大きさが重要な役割をもつ。たいてい、ＶＰＵ上の小さなアレイを計算することは有効ではない。というのも、ＣＰＵとＶＰＵとの間の同期およびデータ交換の手間が大きすぎる可能性があるからだ。しかし、限定的にここでも言及すべきことは、小さなアレイはループにおいて特に頻繁に計算間違いされるが、ループが十分に完全にＶＰＵ上で計算されれば、ＶＰＵに非常に適していることである。それに対して大きなアレイは、たいてい簡単にＶＰＵ上で、特に高パフォーマンスで計算できる。
【００５４】
さらに言及すべきことは、特別なデータタイプを、特別に適合されたコンパイラによって、または場合によってはアプリケータによって（たとえばパスカルではＴＹＰＥによって）形成できることである。このコンパイラまたはアプリケータは特にＶＰＵに適しているので、これらのデータ処理はＶＰＵ上で実行される。
【００５５】
たとえば以下のデータタイプが存在する。
ＴＹＰＥ  ｓｔｒｅａｍ１  ｏｆ  Ｂｙｔｅ  ［］；
ＴＹＰＥ  ｓｔｒｅａｍ２  ｏｆ  Ｂｙｔｅ  ［０．２５５；
ストリームは、通常は長いデータストリームを指す。このデータストリームの長さは、場合によっては既知でなく、および／または無限である。ストリーム１の長さは、ここでは既知ではない。たとえば、このデータタイプによってプログラミングされたＦＩＲフィルタ（または、たとえばＦＦＴまたはＤＣＴ）は自動的に、場合によっては延長されて、ＶＰＵ上に複製される。その後、データストリーム経過である別のメカニズムに対して応答が行われ、再構築が実行されるのが典型的かつ有利である。この別のメカニズムは、たとえばカウンタおよび／または比較器によって、および／またはＣＴ制御されて、および／またはタイムアウトによって応答が行われる。その際に、万が一ウェーブリコンフィギュレーションまたは別の再構築がトリガされると、上記方式によってデータパケットとりわけデータバイトが最後のデータパケットであると標識付けされることにより実行され、最後のデータパケットとして標識付けされたデータパケットの経過後および／または経過とともに再構築がトリガされる。
【００５６】
ストリーム２は、ここでは２６５バイトの長さのデータストリームを定義する。ストリーム２はストリーム１と同様に処理されるが、２５６バイト後に終了するという特性を有するので、終了後には場合によっては、前記で引用された同出願人の特許出願に記載されたような再構築をトリガする。とりわけウェーブリコンフィギュレーション（たとえばＤＥ１９７０４７２８．９、ＤＥ１９９２６５３８．０、ＤＥ１０２０６８５７．７、ＤＥ１００２８３９７．７に記載されたウェーブリコンフィギュレーション）は、最後のデータバイトが到着することによってトリガされ、この最後のデータバイトが処理されることにより、バイトを処理する各ＰＡＥが再構築される。
【００５７】
有利には、具現化されたＶＰＵに適する抽出されたＮＭＬ形式のコードの翻訳が実行される。
【００５８】
データフロー指向ＶＰＵに対しては、たとえば自動的にデータフローおよび／または制御フローのグラフが形成され、ＮＭＬコードに変換される。
【００５９】
たとえばループ等の適切なコード構成部分はデータバンク（ルックアップ）によって変換されるか、または通常の変換が実行される。コード構成部分に対してはマクロも構成することができる。このマクロは、上記特許出願において開示されたＩＫＲによってさらに処理される。同様に、ＰＡＣＴ１３図２８によってモジュール化も支援される。
【００６０】
場合によっては、ＶＰＵへの複製ないしは該複製の準備も実行される。これらは、たとえば必要なリソースを配置して接続をルーティングすることにより実行される（Ｐｌａｃｅ  ａｎｄ  Ｒｏｕｔｅ）。このことは、たとえば配置およびルーティングのそれ自体に公知のルールにしたがって実行される。
【００６１】
自動的な分析方式によって、抽出されたコードおよび／または変換されたＮＭＬコードを処理効率に基づいて分析することもできる。この分析方式は有利には、インターフェースコードおよび該インターフェースコードによって行われるパフォーマンス調整が、適切な位置で共に分析に影響するように選択される。適切な分析手法はとりわけ、同出願人の前記出願に記載されている。
【００６２】
場合によっては、完全な変換およびハードウェアシステム上の具現化によって分析が実行される。この分析を実行するためにはＰＲＯＧＲＡＭＭが実行され、たとえば従来技術によって公知である適切な手法により測定される。
【００６３】
さらに、実行された分析に基づいて、抽出によってＶＰＵに対して選択された異なる部分を不適切であると識別することもできる。それとは逆に、ＰＲＯＺＥＳＳＯＲに対して抽出された特定の部分が、ＶＰＵで実行されるのに適しているという分析を実現することができる。
【００６４】
次のようなオプショナルなループにより、翻訳結果の最適化が可能になる。すなわち、分析が実行された後適切な判定基準に基づいて抽出部分へ戻り、分析に相応して適合された抽出設定によって再度実行されるループにより、前記最適化が可能になる。
【００６５】
ループは、コンパイラ実行中の複数の異なる位置に組み込むことができる。
【００６６】
得られたＮＭＬコードは必要な際には、使用されるＶＰＵの特性に応じて分割される。すなわち、個々の部分に分割される。これらの部分はその都度、既存のリソースに複製される。
【００６７】
とりわけグラフ分析に基づくこの種のメカニズムの多くは、従来の技術においてそれ自体に公知である。しかし有利な変形形態は、プログラムソースの分析を基礎としており、一時的な分割として知られている。この手法はＣａｒｄｏｓｏのＰＨＤ論文に記載されており、開示目的で全面的に組み込まれる。
【００６８】
どのような分割手法であっても同様に、使用されるＶＰＵタイプに応じて適合することができる。中間結果がレジスタおよび／またはメモリに記憶されるＶＰＵが存在する場合、この分割によって、データおよび／または状態を記憶するためにメモリが組み込まれることが考えられる。分割アルゴリズム（たとえば一時分割）は相応に適合される。しかし通常、本来の分割およびスケジューリングは上記の特許出願によって格段に簡単になり、なおかつ有意に実施することができる。
【００６９】
たいていのＶＰＵでは、微分的なリコンフィギュレーションが可能である。この微分的リコンフィギュレーションは、ＰＡＥの回路内で再構築時に比較的小さな変化のみが必要とされる場合にだけ適用できる。換言すれば、その時点のコンフィギュレーションに対するコンフィギュレーションの変化のみが再構築される。分割はこの場合、コンフィギュレーションに後続する、場合によっては微分的なコンフィギュレーションが必要なリコンフィギュレーションデータのみを有し、完全なコンフィギュレーションではないように構成される。コンフィギュレーションデータのオーバヘッドを分析目的で、分割効率の判定時に考慮することも可能である。
【００７０】
分割されたコードのためのスケジューリングメカニズムは、その都度再構築するユニット（ＣＴおよび／またはＨＯＳＴＲＥＣＯＮＦ）へのＶＰＵのフィードバックにより、スケジューリングが制御されるように拡張される。とりわけここでは、限定された実行の可能性、すなわちその時点の分割の状態によって後続の分割を明確に設定する可能性が生じ、このような可能性が使用される。換言すれば、分割を最適化する際に、たとえばＩＦ、ＣＡＳＥ等の限定された実行が考慮される。
【００７１】
状態信号をＰＡＥ間で伝送する機能を備えたＶＰＵが使用され、その都度伝送された状態に対してＰＡＥが応答し、および／または該状態を共に処理する場合、分割およびスケジューリング中に付加的に、ＰＡＥの回路内に制限された実行、すなわち変更され制限されたプログラム経過の完全な再構築または部分的な再構築を必要としない制限された実行が考慮される。
【００７２】
さらにスケジューリングによって、コンフィギュレーションのプリロードの手段が別のコンフィギュレーションの実行中に支援される。ここでは複数のコンフィギュレーションが、場合によっては推定的にプリロードされることもある。すなわち、コンフィギュレーションがそもそも必要であると断定されずにプリロードされることもある。その後、選択メカニズムによって動作時に、使用すべきコンフィギュレーションが選択される（ＤＥ１００５０４４２．６、ＥＰ０１１０２６７４．７に記載されたＮＬＳの例も参照のこと）。
【００７３】
付加的または択一的である変形形態では、ＣＰＵに接続されたＶＰＵ内部のデータ処理が必要とするクロックパルスが、ＣＰＵの計算パイプライン内部のデータ処理のクロックパルスと正確に同数であるように構成される。とりわけ、多数のパイプラインステージ（＞２０）を有する現在の高出力ＣＰＵでは、このコンセプトを使用するのが理想的である。特に有利な点は、たとえばＲＤＹ／ＡＣＫ等の特別な同期メカニズムを必要とせず、および／または、レジスタ制御のために命令コードを適合する必要がないことである。コンパイラは本方法では、ＶＰＵがクロックパルスの必要な数を順守することを保証し、場合によってはデータ処理を遅延ステージを挿入することにより補償しなければならない。前記遅延ステージは、たとえばフォールスルーＦＩＦＯである。このことは、前記の別の特許出願に記載されている。
【００７４】
出力されたコードは通常、完全にそれぞれ次のコンパイラ上で理される。その際有利には、付加的な介入は行われない。場合によっては、次のコンパイラを制御するためにコンパイラフラグおよび制約が形成され、アプリケータは所望の場合、オプショナルで固有の設定を付加し、および／または形成された設定を変更することができる。次のコンパイラは実質的な変更を必要としないので、それ自体に公知の標準ツールを原則的に使用することができる。
【００７５】
したがって、ここで提案されている方法はたとえば、とりわけコンパイラおよび開発システム前方のプリプロセッサないしはプリプロセッサ手法として適している。しかし、原則的には前記トランスレータの代わりに、および／または前記トランスレータとともに、ＰＡＣＴ１１によるコンパイラも挿入できることも明記しておく。
【００７６】
ここに記載されているアーキテクチャには、とりわけＶＰＵには直接、ＦＰＧＡが接続されている。このようにして、細かい粒度の処理が可能になり、および／または別のユニットに対して、フレキシブルに適合可能なインターフェース（たとえば異なるシリアルインターフェース（Ｖ２４，ＵＳＢ等）、異なるパラレルインターフェース、ハードディスクインターフェース、イーサネット、テレコミュニケーションインターフェース（ａ／ｂ，Ｔ０、ＩＳＤＮ，ＤＳＬ等）を実現することができる。ＦＰＧＡはここでは、ＶＰＵアーキテクチャから、とりわけＣＴおよび／またはＣＰＵによって構築される。ＦＰＧＡは静的に、すなわち動作時に再構築されずに、および／または動的に、すなわち動作時に再構築されながら動作する。
【００７７】
すでに、インターフェースコードを設けることが必要とされている。インターフェースコードは、抽出されたコード中で使用され、異なる形式によって設定される。有利には、インターフェースコードはデータバンクに格納されており、このデータベースにアクセスされる。変換のためのユニットは、選択が考慮されるように構成されている。この選択は、たいていプログラマの選択である。該選択ではたとえばＰＲＯＧＲＡＭＭ中の指示によって、またはコンパイラフラグによって、適合側のインターフェースが選択される。ここでは、その都度使用されるＶＰＵシステム／ＣＰＵシステムの具現化手法に適したインターフェースコードが選択される。
【００７８】
データバンク自体は、異なる手法によって構成およびメンテナンスされる。これらの手段を説明するため、幾つかの例を挙げることとする。
【００７９】
ａ）インターフェースコードはコンパイラの納入業者により、ＶＰＵとＣＰＵとの間の所定の接続手法のために設定される。このことはデータバンクの編成時に考慮され、その際にはこれらの指示のために適切な記憶媒体が準備される。
【００８０】
ｂ）インターフェースコードは、システム構成を決定したユーザにより、それ自体がデータバンクに書き込まれるか、既存の（モデル）インターフェースコードから変更されてデータバンクに供給される。こうするため、データバンクは有利には、ユーザによる変更が可能であるように構成されている。したがって、ユーザがデータバンクを変更することができる。
【００８１】
ｃ）インターフェースコードは開発システムによって自動的に形成される。この開発システムは、たとえばＶＰＵ‐ＣＰＵシステムのシステム構成を計画および／または記述および／またはテストするために使用された開発システムである。
【００８２】
インターフェースコードは通常、有利には、プログラミング言語の要求に相応するように構成される。このプログラミング言語には、抽出されたコードが存在しており、このコードへインターフェースコードを挿入しなければならない。
【００８３】
ツールセットのデバッグおよび組み込み
インターフェースコードには通信ルーティンが挿入されており、これによって、ＰＲＯＺＥＳＳＯＲおよびＶＰＵに対する異なった開発システムが同期される。とりわけ、各デバッガ（たとえばＰＡＣＴ１１によるデバッガ）に対してコードが記録される。
【００８４】
インターフェースコードは、ＰＲＯＺＥＳＳＯＲとＶＰＵとの間のデータ交換を可能にし、および／または制御するように構成されている。したがってインターフェースコードは、各開発システムおよびデバッガを制御するために適切でありかつ有利なインターフェースである。たとえば、データがプロセッサによって処理されている間中、ＰＲＯＺＥＳＳＯＲのためのデバッガを起動させることができる。データがインターフェースコードを介して１つの（または複数の）ＶＰＵへ伝送されると、直ちにＶＰＵのためのデバッガが起動される。コードがＰＲＯＺＥＳＳＯＲへ再度送出されると、再びＰＲＯＺＥＳＳＯＲデバッガが起動される。したがって、デバッガおよび／または開発システムのための制御コードをインターフェースコードに挿入することにより、このようなプロセスを実行することが可能であり、かつ有利である。
【００８５】
したがって、異なる開発システム間の通信および制御は有利には、ＰＲＯＺＥＳＳＯＲおよび／またはＶＰＵによってインターフェースコードに挿入された制御コードによって実行すべきである。制御コードはここでは、開発システムを制御するための既存の標準方式に大幅に相応する。
【００８６】
開発システムの管理および通信は有利には、インターフェースコードで説明されたように実行されるが、有意である場合には、前記方法から離れて、類似する適切な方法によってすることもできる。
【００８７】
多くのプログラミング言語、とりわけＣ言語等の逐次的なプログラミング言語では、正確な時間的順序が非明示的に該言語によって設定されている。逐次的なプログラミング言語では、このことは個々の指示の連続によって行われる。プログラミング言語および／またはアルゴリズムによって必要とされれば、時間情報が同期モデルへ複製される。この同期モデルは、たとえばＲＤＹ／ＡＣＫおよび／またはＲＥＱ／ＡＣＫまたはタイムスタンプ手法である。
【００８８】
たとえば、変数、ここではｉｎｐｕｔｓｔｒｅａｍが、実行ごとにＲＤＹによって応答した場合のみ、以下のフォーループが実行かつ反復される。ＲＤＹが欠落したままである場合、ループ実行はＲＤＹが到着するまで停止される。
2004533691.tif 000004
命令処理によってのみ制御されるという逐次的な言語の特性は、処理をデータフローによって、ないしはデータが存在することによって制御するというデータフロー原理と関連している。換言すれば命令および／または指示（たとえばｓ：＝ｓ＋ｉｎｐｕｔｓｔｒｅａｍ；）は、動作が実行されデータが使用可能である場合にのみ処理される。
【００８９】
ここで注目すべき点は、本方法によって高級言語の構文または意味が変更されないことである。
【００９０】
高級言語の比較的複雑な機能、たとえばループは、マクロによって実現される。マクロはコンパイラによって設定され、翻訳時に具体化される。
【００９１】
マクロは、高級言語の簡単な言語構造から構成されているか、またはアセンブラレベルで構成されている。マクロがパラメータ化されることにより、ここで記載されているアルゴリズムへ簡単に適合することができる（ＰＡＣＴ１１も参照のこと）。
【００９２】
たとえばＲＩＳＣ、ＣＩＳＣ、ＤＳＰ（ＣＰＵ）等の標準プロセッサもまた、リコンフィギュアラブルプロセッサ（ＶＰＵ）に接続されている。
【００９３】
異なる２つの接続変形形態は、以下に説明されている。この２つの接続変形形態は異なっているが、同時に具現化可能である。
【００９４】
第１の変形形態では、ＣＰＵの命令セットへ直接接続されるように構成されている（命令セット接続）。第２の変形形態では、メインメモリ内のテーブルを介して接続されるように構成されている。ここでは、テーブル手段も設けられている。
【００９５】
ＣＰＵの命令セット（ＩＳＡ）中には通常、未使用の自由な命令が設けられている。ここでは、この未使用の自由な命令のうち１つまたは複数が、ＶＰＵを制御するために使用される（ＶＰＵＣＯＤＥ）。
【００９６】
ＶＰＵＣＯＤＥを復号化することにより、ＶＰＵのコンフィギュレーションユニット（ＣＴ）が駆動され、該コンフィギュレーションユニット（ＣＴ）はＶＰＵＣＯＤＥに依存して、所定のプロセスを実行する。ここでは、ＶＰＵ復号時に応答されるＣＴも設けられている。
【００９７】
たとえばＶＰＵＣＯＤＥは、ＶＰＵのためのコンフィギュレーションユニット（ＣＴ）によってコンフィギュレーションのロードおよび／または実行をトリガする。
【００９８】
発展された実施形態では、ＶＰＵＣＯＤＥは翻訳テーブルを介して異なるＶＰＵコマンドに翻訳される。前記翻訳テーブルは、有利にはＣＰＵによって管理されるか、または択一的に該ＶＰＵまたは１つのＶＰＵによって、または外部ユニットによって外部から管理される。
【００９９】
コンフィギュレーションテーブルは、実行されるＣＰＵプログラムまたはコード構成部分に依存して設定される。
【０１００】
ＶＰＵはロードコマンドの到着後に、コンフィギュレーションをメモリからロードする。このメモリは専用のメモリであるか、またはＣＰＵと共有されているメモリである。とりわけＶＰＵコンフィギュレーションは、その時点で実行されるＣＰＵプログラムのコードに含まれている。
【０１０１】
実行コマンドが受け取られると、ＶＰＵは、実行すべきコンフィギュレーションを実行し、相応するデータ処理を実行する。データ処理の終了は、終了信号（ＴＥＲＭ）によってＣＰＵに対して表示される。こうするためには、相応する信号線路／割り込み入力端等が設けられており、および／または構成されている。
【０１０２】
ＶＰＵＣＯＤＥは、ＶＰＵのデータ処理終了の終了信号（ＴＥＲＭ）が到着するまでの長さの待機サイクルに、ＣＰＵ上で実行される。
【０１０３】
有利な実施形態では、次のコードの処理が継続される。別のＶＰＵＣＯＤＥが現れた場合、先行するＶＰＵＣＯＤＥの終了まで待機されるか、または開始されたすべてのＶＰＵＣＯＤＥが１つの処理パイプラインに配列されるか、またはタスク交代が実行される。このタスク交代は、とりわけ以下に記載されているように実行される。
【０１０４】
データ処理終了は、終了信号（ＴＥＲＭ）が状態レジスタに到着することによって指示される。終了信号は、可能な処理パイプラインの順序で到着する。
【０１０５】
ＣＰＵ上でのデータ処理は、状態レジスタを検査することにより、終了信号の到着と同期される。
【０１０６】
可能な実施形態では、ＴＥＲＭの到着前のアプリケーションが、たとえばデータ依存性によって継続されない場合、タスク交代がトリガされる。
【０１０７】
有利には、プロセッサとＶＰＵとの間に解除可能な接続が形成され、その際にＶＰＵが大幅に独立した補助プロセッサとして動作するように構成される。
【０１０８】
このような接続により、１つまたは複数の共通のデータソースおよびデータシンクが設けられる。これらはたいてい、共通のバスシステムおよび／または共通のメモリを介して設けられる。ＤＭＡおよび／または別のメモリアクセスコントローラを介して、データがＣＰＵとＶＰＵとの間で交換される。データ処理は有利には、割り込み制御または状態問い合わせメカニズム（たとえばポーリング）を介して同期される。
【０１０９】
密接な接続は、前記のように、ＶＰＵがＣＰＵの命令セットに直接接続されることに相応する。
【０１１０】
直接的な計算ユニット接続の場合、特に、高いリコンフィギュレーションパフォーマンスに留意すべきである。それゆえ有利には、ウェーブリコンフィギュレーションが使用される。それゆえ、コンフィギュレーションワードは有利には予めプリロードされ、こうすることによって命令実行時には該コンフィギュレーションがとりわけ高速で（最適なケースではクロックパルスの範囲内のウェーブリコンフィギュレーションによって）構築されるように構成される。その他の点では、アレイの部分的コンフィギュレーションの代わりに、高パフォーマンスの適用の場合に複数のアレイを設け、この複数のアレイから少なくとも１つを新たなタスクのためにコンフィギュレーション変更（Ｕｍｋｏｎｆｉｇｕｒｉｅｒｅｎ）し、とりわけ予め、要求に応じて、実行時に再構築される大きな粒度の完全かつ多元的なフィールドをコンフィギュレーション変更または部分的なコンフィギュレーション変更する代わりに、単に別のアレイに完全に置換することも可能である。このことはとりわけ、特に低パフォーマンスの適用の場合にも可能である。前記複数のアレイは、とりわけ同一のアレイである。ここでは信号は、たとえばＭＵＸ／Ｄｅｍｕｘステージを介して部分アレイに供給される。前記信号はとりわけ、Ｉ／Ｏ信号、データ信号、状態信号および／またはトリガ信号である。
【０１１１】
ウェーブリコンフィギュレーションのためには有利には、実行すべきと推定されるコンフィギュレーションが、予めコンパイラによってコンパイル時に識別され、実行時に適切にプリロードされる。
【０１１２】
命令実行の時点では、適切なコンフィギュレーションが、場合によっては各ＰＡＥに対して個別に、および／またはＰＡＥサブセットに対して個別に選択されて実行される。このような方法もまた、前記ステップによって公知である。
【０１１３】
有利な実施形態では、ＣＰＵとＶＰＵとの間で異なるデータ伝送が実行されるように構成されている。特に有利な３つの方法は以下で説明され、これらは個別にまたは組み合わせて使用することができる。
【０１１４】
レジスタ接続の場合、ＶＰＵはデータをＣＰＵレジスタから取り出して処理し、ＣＰＵレジスタに再び書き込む。
【０１１５】
有利には、ＣＰＵとＶＰＵとの間で同期メカニズムが使用される。
【０１１６】
たとえばＶＰＵは、データがＣＰＵレジスタにＣＰＵによって書き込まれることにより、ＲＤＹ信号を受け取り、これに基づいて、書き込まれたデータを処理する。データがＣＰＵレジスタからＣＰＵによって読み出されることにより、ＡＣＫ信号が形成され、データ取り出しがＣＰＵによってＶＰＵに対して指示される。ここでは、それ自体に公知であるＲＤＹ／ＡＣＫプロトコルを異なる形態で使用することは、再構築可能なユニットのセルの粒度が大きい場合にまさに有利である。
【０１１７】
典型的には、ＣＰＵでは使用可能な相応のメカニズムは得られない。
【０１１８】
２つの可能な解決手段を、より詳細に説明する。
【０１１９】
簡単に実現可能なアプローチは、状態レジスタを介してデータ同期を実行することである。たとえばＶＰＵは、実行されたレジスタからのデータの読み出し、ひいてはそれに関連するＡＣＫ信号、および／または、データのレジスタへの書き込み、ひいてはそれに関連するＲＤＹ信号を状態レジスタで表示する。まずＣＰＵは状態レジスタを検査し、たとえば、動作に応じてＲＤＹまたはＡＣＫが到着するまで待機ループまたはタスク交換を実行する。その後ＣＰＵは、各レジスタデータ伝送を実行する。
【０１２０】
発展された実施形態では、ＣＰＵの命令セットはロード命令／記憶命令だけ、組み込まれた状態問い合わせ（ｌｏａｄ＿ｒｄｙ，ｓｔｏｒｅ＿ａｃｋ）によって拡張される。たとえばｓｔｏｒｅ＿ａｃｋの場合には、レジスタが予めＶＰＵによって読み出され、かつＡＣＫが到着した場合にのみ、新たなデータワードがＣＰＵレジスタに書き込まれる。それに相応してｌｏａｄ＿ｒｄｙは、ＶＰＵが予め新たなデータを書き込み、かつＲＤＹを形成した場合にのみ、データをＣＰＵレジスタから読み出す。
【０１２１】
実行すべきコンフィギュレーションに所属するデータは、逐次的にほぼブロック移動によって、従来の技術と同様にＣＰＵレジスタに書き込まれ、および／または該ＣＰＵレジスタから読み出される。場合によっては具現化されたブロック移動命令は、有利には、上記の組み込まれたＲＤＹ／ＡＣＫ状態問い合わせによって拡張される。
【０１２２】
明らかであるのは、この基本的方法の多数の簡単な変更および異なる実施形態が可能であるということである。
【０１２３】
すでに述べたウェーブリコンフィギュレーションによって、先行するＶＰＵ命令のオペランドがＣＰＵレジスタから取り出されると直ちに、新たなＶＰＵ命令を開始し、相応のコンフィギュレーションを実行することができる。新たな命令に対するオペランドは、命令開始後直ちに、ＣＰＵレジスタへ書き込まれる。
【０１２４】
ウェーブリコンフィギュレーション手法に相応して、ＶＰＵは逐次的に、先行するＶＰＵ命令のデータ処理の完了によって、新たなＶＰＵ命令のためにコンフィギュレーション変更され、新たなオペランドを処理する。
【０１２５】
さらに、データがＶＰＵとＣＰＵとの間で、共通のリソースへ適切にバスアクセスを行うことによって交換される。
【０１２６】
直前にＣＰＵによって処理されたためＣＰＵのキャッシュに未だに存在すると推定されるデータを交換しなければならない場合、ないしはその後直ちにＣＰＵによって処理されるので有意にはＣＰＵのキャッシュに入れられるデータを交換しなければならない場合、このデータは有利には、ＶＰＵによってＣＰＵのキャッシュから読み出されるか、ＣＰＵのキャッシュへ書き込まれる。このことは、適切な分析によって大幅に、予めアプリケーションがコンパイラによってコンパイルされる時点で決定され、２進コードが相応に形成される。
【０１２７】
ＣＰＵのキャッシュに存在しないと推定されるデータを交換しなければならない場合、ないしはその後ＣＰＵのキャッシュに存在しなくてもよいと推定されるデータを交換しなければならない場合、これらのデータは有利には、ＶＰＵによって直接、外部のバスおよび該外部のバスに接続されたデータソース（たとえばメモリ、周辺装置）から読み出されるか、ないしは外部のバスおよび該外部のバスに接続されたデータシンク（たとえばメモリ、周辺装置）に書き込まれる。このことは、適切な分析によって大幅に、予めアプリケーションがコンパイラによってコンパイルされる時点で決定され、２進コードが相応に形成される。
【０１２８】
バスを介してキャッシュを通過して伝送される場合、有利には、キャッシュとバスとの間にプロトコルが構成される。このプロトコルは、キャッシュの正確な内容を供給する。たとえば、従来の技術から公知のＭＥＳＩプロトコルが、このために使用される。
【０１２９】
記載された方法ではとりわけ、オペレーティングシステムを支援するために特別なメカニズムを構成する必要はない。すなわち有利には、実行すべきオペレーティングシステムが、支援すべきＶＰＵの状態に相応して動作することが保証される。このことが可能であるためには、とりわけスケジューラが設けられる。
【０１３０】
密接な計算ユニット接続では有利には、ＣＰＵの状態レジスタが問い合わされ、この状態レジスタに、接続されたＶＰＵがデータ処理状態（完了信号）を登録する。別のデータ処理をＶＰＵへ伝送しなければならず、かつＶＰＵが先行のデータ処理処理を未だ終了していない場合、待機され、および／または、有利にはタスク交換が実行される。
【０１３１】
補助プロセッサ接続の場合、有利にはオペレーティングシステムを介して、とりわけスケジューラを介して制御されるメカニズムが使用される。
【０１３２】
あるいは簡単なスケジューラによって、機能がＶＰＵへ伝送された後、その時点でＣＰＵ上で実行されていたタスクを実行継続させることができる。このことは、該簡単なスケジューラが独立して、ＶＰＵ上のデータ処理に平行して実行される場合に限定される。タスクがＶＰＵ上のデータ処理の終了まで待機しなければならない場合、または待機しなければならなくなった場合には直ちに、タスクスケジューラは別のタスクに切り替えられる。
【０１３３】
新たに起動されるタスクがＶＰＵを使用する場合、該タスクのすべてが使用前に、該タスクがデータ処理のために使用可能か否かということ、および／または、該タスクがその時点で未だにデータを処理しているか否かということに関して検査される。その後、データ処理の終了まで待機されるか、または有利には、タスクが交代される。
【０１３４】
簡単かつ性能的な方法は、いわゆる記述子テーブルによって構成される。この記述子テーブルは、以下のようにして実現される。
【０１３５】
各タスクはＶＰＵを呼び出すため、１つまたは複数のテーブル（ＶＰＵＣＡＬＬ）を、適切に設定されたデータフォーマットによって、該タスクに割り当てられた記憶領域に形成する。これらのテーブルは、ＶＰＵのためのすべての制御情報を有する。このような制御情報はたとえば、実行すべきプログラム／実行すべきコンフィギュレーション、および／または入力データの記憶場所またはデータソースを示すポインタ、および／または結果データの記憶位置またはデータシンク、および／またはデータアレイの大きさ等の別の実行パラメータである。
【０１３６】
オペレーティングシステムの記憶領域には、テーブルまたはリンクされたリスト（ＬＩＮＫＬＩＳＴ）が設けられている。このリストはすべてのＶＰＵＣＡＬＬテーブルを、形成された順に示す。
【０１３７】
ＶＰＵ上のデータ処理は、タスクがＶＰＵＣＡＬＬを形成し、オペレーティングシステムを介してＶＰＵを呼び出すように実行される。オペレーティングシステムがＬＩＮＫＬＩＳＴにエントリを形成する。ＶＰＵはＬＩＮＫＬＩＳＴを処理し、その都度参照されるＶＰＵＣＡＬＬを実行する。各データ処理のうち１つが終了したことは、それぞれＬＩＮＫＬＩＳＴの相応のエントリおよび／またはＶＰＵＣＡＬＬによって表示される。
【０１３８】
したがってＶＰＵは、ＣＰＵから大幅に独立して動作する。オペレーティングシステムおよび／または各タスクは、テーブル（ＬＩＮＫＬＩＳＴないしはＶＰＵＣＡＬＬ）のみを監視すればよい。
【０１３９】
特に高パフォーマンスで両方法が動作するのは、ＶＰＵとしてアーキテクチャが使用される場合である。このようなアーキテクチャによって、データ処理によりオーバーラップされたリコンフィギュレーションおよび／またはオーバーラップ可能なリコンフィギュレーションが実現される。
【０１４０】
したがって、直前のオペランドがデータソースから読み出された後直ちに、新たなデータ処理を開始することができる。その際には、場合によっては、該新たなデータ処理に関連するリコンフィギュレーションも開始することができる。換言すれば、同期するためにデータ処理が終了する必要はなくなり、その代わりに直前のオペランドを読み出すことが必要となる。このことにより、データ処理のパフォーマンスが格段に向上される。
【０１４１】
状況の観察および状況に対する適切な処理を付加的に調整するためには、オペレーティングシステムが使用される。オペレーティングシステムはたとえば、複数の仕事（タスク）を管理するためにタスクスケジューラを使用し、マルチタスク（ｍｕｌｔｉｔａｓｋｉｎｇ）を可能にする。タスクスケジューラは、タスクを所定の時点で中断し、別のタスクを開始し、該別のタスクが終了した後、中断されたタスクの処理継続に戻る。すべての処理が終了した後にだけ、すなわちコンフィギュレーションサイクル中に処理すべきすべてのデータおよび状態が記憶された後にだけ該コンフィギュレーションが終了することが保証されているのであれば、局所的な関連の状態を記憶しなくてもよい。該コンフィギュレーションは、タスクの処理に相応する。
【０１４２】
もちろん、タスクスケジューラがコンフィギュレーションを該コンフィギュレーションの処理完了前に中断する場合は、局所的な状態および／またはデータを記憶しなければならない。またこのことは、コンフィギュレーションの処理時間を推定できない場合にも有利である。公知の中止問題と、コンフィギュレーションが（たとえばエラーによって）全く完了しないというリスクとに関しても、このことは有意であり、システム全体のデッドロックが阻止される。換言すれば、タスク交代を考慮して、関連する状態を、タスク交代を実行してデータ処理を新たに正常にセットアップしなければならない状態であると見なすことができる。
【０１４３】
したがってタスクスイッチの場合、結果のためのメモリと、場合によってはオペランドのためのメモリも保護され、その後の時点で、すなわち該タスクへ戻る際に再び形成される。このことは、従来技術による方法およびＰＵＳＨ／ＰＯＰ命令に匹敵して行われる。さらにデータ処理の状態、すなわち、直前に完全に処理されたオペランドを示すポインタも保護される。ここではとりわけ、ＰＡＣＴ１８を参照されたい。
【０１４４】
タスクスイッチの最適化に依存して、たとえば以下の２つの手段が存在する。
【０１４５】
ａ）中断されたコンフィギュレーションを新たに構築し、オペランドのみをロードする。データ処理は始めから、コンフィギュレーションの処理が未だ全く開始されなかったかのように開始される。換言すれば、すべてのデータ計算が始めから実行されるだけである。場合によっては、計算はすでに実行完了されている。この手段は簡単であるが、あまり効率的ではない。
【０１４６】
ｂ）中断されたコンフィギュレーションを新たにコンフィギュレーションし、オペランドとすでに計算された結果とを各メモリにロードする。データ処理は、オペランドが完全に計算されなかった場合に続行される。この方法は格段に効率的であるが、場合によっては、コンフィギュレーションの処理中に発生する付加的な状態を関連づけ、新たなコンフィギュレーションが実行された後に後続するオペランドにおいて新たにセットされるように、たとえば直前に計算完了されたオペランドを示すポインタを保護することを前提条件とする。
【０１４７】
関連データを管理するための特に有利な変形形態は、以下で説明されるコンテキストスイッチによって実施される。タスク交代時および／またはコンフィギュレーションおよびコンフィギュレーション交代の実行時には（たとえば、開示目的で全面的に組み込まれている特許出願ＰＡＣＴ１５を参照せよ）、データまたは状態を、後続するコンフィギュレーションのために保護することが必要である。前記データまたは状態は、典型的には動作データとともにメモリに格納されない。というのも、動作データはたとえば最終値しか示さないからだ。
【０１４８】
本発明によるコンテキストスイッチが実行されることにより、第１のコンフィギュレーションが除去され、保護すべきデータが適切なメモリ（ＲＥＧ）（メモリ、レジスタ、カウンタ等）に残る。第２のコンフィギュレーションがロードされると、該第２のコンフィギュレーションによってＲＥＧが適切に、定義された順序で、１つまたは複数の大域的なメモリに接続される。このコンフィギュレーションでは、たとえばアドレス形成器を使用して、該大域的メモリにアクセスされる。このコンフィギュレーションでは、たとえばアドレス形成器を使用して、メモリとして構成されたＲＥＧにアクセスされる。ＲＥＧ間で構築された接続に相応して、ＲＥＧの内容は、定義された順序で大域的メモリに書き込まれる。その際、各アドレスはアドレス形成器によって設定される。アドレス形成器が大域的メモリに対してアドレスを形成することにより、前記記憶領域（ＰＵＳＨＡＲＥＡ）が、除去された第１コンフィギュレーションに一義的に割り当てられる。換言すれば、コンフィギュレーションが異なれば、設けられるアドレス空間も異なる。コンフィギュレーションは、通常のプロセッサのＰＵＳＨに相応する。
【０１４９】
その後、別のコンフィギュレーションがリソースを使用する。
【０１５０】
第１コンフィギュレーションは、開始されなければならない。その前に第３のコンフィギュレーションが開始され、該第３のコンフィギュレーションによって第１コンフィギュレーションのＲＥＧが、定義された順序で相互に接続される。
【０１５１】
該コンフィギュレーションがたとえばアドレス形成器を使用することにより、大域的メモリにアクセスされる。
【０１５２】
該コンフィギュレーションがたとえばアドレス形成器を使用することにより、メモリとして構成されたＲＥＧにアクセスされる。
【０１５３】
アドレス形成器がアドレスを形成することにより、第１コンフィギュレーションに割り当てられたＰＵＳＨＡＲＥＡへ正確にアクセスすることができる。形成されたアドレス、およびＲＥＧの構築された順序は、ＲＥＧのデータが本来の順序でメモリからＲＥＧへ書き込まれるようになっている。該コンフィギュレーションは、通常のＰＯＰに相応する。
【０１５４】
第１コンフィギュレーションは再び開始される。
【０１５５】
要約すると、コンテキストスイッチが実行されることにより、公知のプロセッサアーキテクチャのＰＵＳＨ／ＰＯＰに類似して動作する特別なコンフィギュレーションをロードして、保護すべきデータが大域的なメモリと交換される。
【０１５６】
この機能を、１つの例で説明する。関数は２つの数字列を加算し、この数字列の長さは翻訳時には未知であり、実行時に初めて既知となる。
【０１５７】
2004533691.tif 000005
ここで関数は実行中に、たとえばタスクスイッチによって、またはｘに対して設けられたメモリが一杯になったため中断される。本発明によれば、ａ，ｂ，ｘはこの時点ではメモリに存在する。しかしｉは保護しなければならず、場合によってはｌｅｎｇｔｈも保護しなければならない。こうするためには、コンフィギュレーションｅｘａｍｐｌｅが終了され、レジスタ内容は維持され、コンフィギュレーションｐｕｓｈが開始され、これによってｉおよびｌｅｎｇｔｈがレジスタから読み出されてメモリに書き込まれる。
【０１５８】
2004533691.tif 000006
実行後、ｐｕｓｈは終了され、レジスタ内容は消去される。別のコンフィギュレーションが実行される。しばらくすると、コンフィギュレーションｅｘａｍｐｌｅが再び開始される。それ以前にコンフィギュレーションｐｏｐが開始され、これによってレジスタ内容が再びメモリから読み出される。
【０１５９】
2004533691.tif 000007
実行後、ｐｏｐは終了し、レジスタ内容は残留する。コンフィギュレーションｅｘａｍｐｌｅは再び開始される。
【０１６０】
図面の説明
図１は、提案された方法の一例を示しており、可能なシステム構成を示している。ここではＰＲＯＺＥＳＳＯＲ（０１０１）は、データおよび状態の交換のために適したインターフェース（０１０２）を介してＶＰＵ（０１０３）に接続されている。ＰＲＯＧＲＡＭＭコード（０１１０）は、（たとえば、コンパイラのためのプリプロセッサによって）たとえば記載された抽出手法によって、ＰＲＯＺＥＳＳＯＲに対して適した部分（０１１１）とＶＰＵ向けの部分（０１１２）に分割される。
【０１６１】
０１１１は、ＰＲＯＧＲＡＭＭコードに相応する標準コンパイラ（０１１３）によって翻訳される。その前に、ＰＲＯＺＥＳＳＯＲとＶＰＵとの間のインターフェース（０１０２）を記述および管理するための付加的なコードがデータバンク（０１１４）から挿入される。０１０１上で実行されるシーケンシャルコードが形成され（０１１６）、必要な場合には、インターフェースの相応のプログラミング（０１１７）が実行される。標準コンパイラの構成は、市販のツールとして、または市販の開発環境の枠内に存在するのと同様である。プリプロセッサおよび／または場合によってはＶＰＵコンパイラおよび／または場合によってはデバッガ、および別のツールを、たとえば既存の市販の開発環境に組み込むことができる。
【０１６２】
０１１２はＶＰＵコンパイラ（０１１５）によって翻訳される。その際、インターフェース（０１０２）を記述および管理するために付加的なコードがデータバンク（０１１４）から挿入される。０１０３上で実行されるコンフィギュレーションが形成され（０１１８）、必要であれば、インターフェース（０１０２）が相応にプログラミングされる（０１１９）。ここで特記すべきことは、原則的にＤＥ０１０３９１７０．６に記載されたコンパイラも、０１１５に対して使用できるということである。
【０１６３】
図２には、コンパイルの基本的な経過が例として示されている。ＰＲＯＧＲＡＭＭ（０２０１）は抽出ユニット（０２０２）において、異なる手法によってＶＰＵコード（０２０３）とＰＲＯＺＥＳＳＯＲコード（０２０４）に分割される。異なる手段を任意に組み合わせて、抽出に適用することができる。前記異なる手段はたとえば、本来のＰＲＯＧＲＡＭＭ中の指示（０２０５）および／または下位プログラム呼び出し（０２０６）および／または分析手法（０２０７）および／またはオブジェクト指向型のクラスライブラリ（０２０６ａ）の使用である。その都度抽出されたコードは、場合によっては翻訳され、場合によっては各ターゲットシステムに適するか否かに関して検査される（０２０８）。その際、抽出へフィードバック（０２０９）することも可能であるから、ＰＲＯＺＥＳＳＯＲまたは１つないしは複数のＶＰＵへのコードの割り当てを変更することによって補正することも可能である。
【０１６４】
その後（０２１１）０２０３は、データバンク（０２１０）からのインターフェースによって拡張される（０２１２）。および／または０２０４は、０２１０からのインターフェースコードによって、０２１３に拡張される。形成されたコードのパフォーマンスが分析される（０２１４）。場合によっては抽出へフィードバック（０２１５）することも可能であるから、ＰＲＯＺＥＳＳＯＲまたはＶＰＵへのコードの割り当てを変更することによって補正することも可能である。形成されたＶＰＵコード（０２１６）は後続の翻訳のために、後置接続されておりかつＶＰＵに適したコンパイラへ伝送される。形成されたＰＲＯＺＥＳＳＯＲコード（０２１７）は後続の翻訳のために、後置接続されておりかつＰＲＯＺＥＳＳＯＲに適した任意のコンパイラでさらに処理される。
【０１６５】
ここで留意すべきことは、個々のステップを手法に応じて省略できることである。重要なのは、少なくとも十分に完全であり、かつ介入なしで、少なくとも有意な介入なしでプログラマによって直接翻訳できるコードを、それぞれ後置接続されたコンパイラシステムへ出力するということである。
【０１６６】
それゆえここで提案されているのは、コンパイルすべきコードを入力するためのコード入力端と、コード分析手段と、分割評価手段とを有するプリプロセッサ手段に、少なくとも２つの部分コード出力端を設けることである。場合によっては反復手段も設けられており、これによって、安定的および／または十分に受入可能な値を得られるまでコード分割が繰り返される。前記コード分析手段はとりわけ、コード構造および／またはデータフォーマットおよび／またはデータストリーム識別および／または評価手段である。前記分割評価手段は、該コード分析手段からの信号に応答して実行されるコード分割を評価するために使用される。ここでは第１の部分コード出力端が、少なくとも１つの従来のプロセッサに対して部分コードを出力し、少なくとも１つの別の部分コード出力端が、再構築可能な論理ユニットと、状態マシンと、ＲＤＹ／ＡＣＫトリガ線路および通信線路等とによって処理するために所定のコードを出力する。前記再構築可能な論理ユニットはとりわけ、多次元ないしはマルチディメンショナルなとりわけセル構造を有する論理ユニット、および／または、粒度の大きなデータ処理を実行し、および／または計算ユニットを有する論理セル（ＰＡＥ）等に割り当てられたレジスタ手段、および／または粒度の細かい制御および／またはコントロール手段である。両部分コード出力端は、多重的に直列で、物理的出力端に設けられる。
【０１６７】
インターフェースコード（０２１０）のためのデータバンクは、独立してコンパイラ実行前に構成される。たとえば、データバンクに対して以下のソースが可能である。出荷業者によって設定されるソース（０２２０）、ユーザによってプログラミングされるソース（０２２１）、または自動的に開発システムによって形成されるソース（０２２２）。
【０１６８】
特に有利なＶＰＵの構成は、図３に示されている。有利には階層的であるコンフィギュレーションマネージャ（ＣＴ）（０３０１）が、再構築可能なエレメント（ＰＡＣ）の構成を制御および管理する（０３０２）。ＣＴには、コンフィギュレーションのための局所的なメモリが割り当てられている（０３０３）。このメモリはさらに、大域的メモリに対するインターフェース（０３０４）を有しており、この大域的メモリによってコンフィギュレーションデータが得られる。インターフェース（０３０５）を介して、コンフィギュレーション実行が制御される。実行制御および結果管理のために再構築可能なエレメント（０３０２）のインターフェース（０３０６）が設けられており、データ交換のためのインターフェース（０３０７）も設けられている。
【０１６９】
図４は、ＣＰＵシステムの一部を例として示している。このＣＰＵシステムはたとえば、テキサスインスツルメンツの型式Ｃ６０００のＤＳＰである（０４０１）。ここに示されているのは、プログラムメモリ（０４０２）、データメモリ（０４０３）、任意の周辺装置（０４０４）およびＥＭＩＦ（０４０５）である。メモリバス（０４０６）および周辺装置バス（０４０７）を介して、ＶＰＵが補助プロセッサとして組み込まれている（０４０８）。ＤＭＡコントローラ（ＥＤＭＡ）（０４０９）により、たとえばメモリ（０４０３）とＶＰＵ（０４０８）との間で、またはメモリ（０４０３）と周辺装置（０４０４）との間で、任意のＤＭＡ伝送が実行される。
【０１７０】
図５は、比較的抽象的なシステム定義を示している。ＣＰＵ（０５０１）にはメモリ（０５０２）が配属されており、このメモリ（０５０２）に対してＣＰＵは、書き込みアクセス権および／または読み出しアクセス権を有する。ＶＰＵ（０５０３）はメモリに接続されている。ＶＰＵは、ＣＴ部分（０５０９）と、データ処理のための再構築可能なエレメント（０５１０）に下位分類されている。
【０１７１】
メモリアクセスを制御するため、メモリは、複数の独立したアクセスバスを有する（マルチポート）。特に有利な構成では、メモリは複数の独立したセグメント（メモリバンク）に分割されており、各バンクは独立してアクセスされる。有利にはすべてのセグメントが、統一的なアドレス空間に存在する。
【０１７２】
有利には、１つのセグメントが主にＣＰＵによって使用され、１つの別のセグメントが主にＶＰＵのデータ処理のために使用され、１つの別のセグメントが主にＶＰＵのコンフィギュレーションデータのために使用される（０５０６）。典型的かつ有利には、完全に構成されたＶＰＵは固有のアドレス発生器および／またはＤＭＡを有しており、これによってデータ伝送が実行される。択一的および／または付加的に、ＤＭＡ（０５０７）をシステム（図５）内に設けることもでき、これによってＶＰＵとの伝送が可能になる。
【０１７３】
該システムはＩＯ（０５０８）を有する。これに対してＣＰＵおよびＶＰＵがアクセス権を有する。
【０１７４】
ＣＰＵもＶＰＵも、それぞれ専用の記憶領域およびＩＯ領域を有する。これらは、それぞれ別の装置によってアクセスすることはできない。
【０１７５】
記憶領域および／またはＩＯ領域および／または部分的に両領域のうち１つに設けられたデータセット（０５１１）が、ＣＰＵとＶＰＵとの間の通信のために使用される。該通信はたとえば、基礎的パラメータおよび制御情報の交換である。このデータセットはたとえば、以下の情報を含む。
【０１７６】
１．コンフィギュレーションの位置を把握するための、０５０６内のＣＴメモリ領域のベースアドレス。
【０１７７】
２．０５０５とのデータ伝送のベースアドレス。
【０１７８】
３．０５０５とのデータ伝送のＩＯアドレス。
【０１７９】
４．同期情報。たとえばＶＰＵのリセット、停止、開始。
【０１８０】
５．ＶＰＵの状態情報。たとえばデータ処理のエラーまたは状態。
【０１８１】
ＣＰＵとＶＰＵとの同期は、データをポーリングすることにより、および／または、有利には割り込み制御によって実行される（０５１２）。
【０１８２】
図６は、図５に示されたようなシステムへ組み込むための、ＶＰＵのインターフェース構造の可能な構成を示している。こうするためＶＰＵには、メモリ／ＤＭＡインターフェースおよび／またはＩＯインターフェースが配属されており（０６０１）、これによってデータ伝送が実行される。別のシステムインターフェース（０６０２）が経過制御を引き継ぎ、この経過制御はたとえば、割り込みの管理、処理の開始／停止、エラー状態の交換等である。メモリ／ＤＭＡインターフェースおよび／またはＩＯインターフェースは、メモリバスおよび／またはＩＯバスに接続される。
【０１８３】
該システムインターフェースは、有利にはＩＯバスに接続されるが、択一的または付加的に、０５１１に相応してメモリにも接続することができる。
【０１８４】
インターフェース（０６０１，０４０２）は、ＣＰＵおよび／またはＶＰＵおよび／またはシステムの異なる動作周波数を適合するために構成される。ここではたとえば、システムないしはＣＰＵが、たとえばその時点で５００ＭＨｚで動作し、ＶＰＵが２００ＭＨｚで動作する。
【０１８５】
これらのインターフェースは、バスプロトコルの翻訳を実行する。たとえば、ＶＰＵ内部プロトコルが、外部のＡＭＢＡバスプロトコルに変換される。したがって、両インターフェースがバスプロトコル翻訳手段を形成し、および／またはバスプロトコル翻訳のために構成されている。前記バスプロトコル翻訳はとりわけ、内部ＶＰＵプロトコルと既知のバスプロトコルとの間のバスプロトコル翻訳である。ＣＰＵ内部のバスプロトコルに直接変換することもできる。
【０１８６】
メモリ／ＤＭＡインターフェースおよび／またはＩＯインターフェースは、ＣＴが外部メモリにメモリアクセスするのを支援する。該メモリアクセスは、有利には直接（メモリマッピングによって）実行される。ＣＴおよび／またはＰＡＣのデータ伝送はバッファリングされて、たとえばＦＩＦＯステージを介して実行される。外部メモリは直接応答されてアドレシングされ、さらにＤＭＡ内部伝送および／または外部のＤＭＡ伝送も実行される。
【０１８７】
システムインターフェースを介してデータ処理が制御される。この制御はたとえば、コンフィギュレーションの初期化および／または開始である。さらに、状態および／またはエラー状態も交換される。ＣＴとＣＰＵとの間で制御および／または同期するための割り込みも支援される。
【０１８８】
システムインターフェースはＶＰＵ内部プロトコルを変換し、こうすることによって該ＶＰＵ内部プロトコルは外部の（標準）プロトコルに変換される（たとえばＡＭＢＡ）。
【０１８９】
ここに記載されたシステムのためにコード形成をするための有利な方法は、本出願の別の箇所に記載されている。この方法では、プログラムコードをＣＰＵのためのコードとＶＰＵのためのコードとに分割するコンパイラが記載されている。方法が異なれば、異なるプロセッサに対して分割が行われる。特に有利な構成では、それぞれ分割されたコードは、ＣＰＵとＶＰＵとの間の通信のためのインターフェースルーティンを付加して拡張される。この拡張は、自動的にコンパイラによって実行される。
【０１９０】
以下のテーブルは、ＣＰＵとＶＰＵとの間の通信の例を示している。欄には、その都度アクティブな機能ユニットが割り当てられている：ＣＰＵ、システムＤＭＡおよびＤＭＡインターフェース（ＥＤＭＡ）ないしはメモリインターフェース（メモリＩ／Ｆ）、システムインターフェース（システムＩ／Ｆ，０６０２）、ＣＴおよびＰＡＣ。行には、個々のサイクルが実行順序で登録されている。Ｋ１は、実行すべきコンフィギュレーション１を示す。
【０１９１】
第１のテーブルは例として、システムＤＭＡ（ＥＤＭＡ）を使用してデータ伝送を実行するための経過を示している。
【０１９２】
【表１】
2004533691.tif 000008
【０１９３】
ここで言及すべきことは、ＥＤＭＡとＶＰＵとの間の同期が、自動的にインターフェース０４０１を介して実行されることである。すなわちＤＭＡ伝送は、ＶＰＵがそれに対してスタンバイ状態である場合にのみ実行される。
【０１９４】
第２のテーブルには例として、最適化された有利な経過が示されている。ＶＰＵ自体が、コンフィギュレーションメモリに対する直接的なアクセス権を有する（０３０６）。さらに、データ伝送はＶＰＵ内のＤＭＡ回路によって実行される。このＤＭＡ回路は、たとえば固定的に構成され、および／またはＰＡＣの構築可能な部分を構築することによって形成される。
【０１９５】
【表２】
2004533691.tif 000009
【０１９６】
ＣＰＵに対する手間は最小になる。
【０１９７】
包括すると本発明は、パスカル、Ｃ、Ｃ＋＋、Ｊａｖａ等の従来の高級言語をリコンフィギュアラブルアーキテクチャに翻訳するための方法に関する。本方法は、再構築可能なターゲットアーキテクチャにその都度適した、翻訳すべきプログラムの部分のみが抽出されるように構成されている。該プログラムの残りの部分は、従来のプロセッサアーキテクチャに翻訳される。
【０１９８】
図７には、理解しやすくするため、関連するコンポーネント（とりわけＣＰＵの関連コンポーネント）のみが示されている。ここでは典型的には、別のコンポーネントおよびネットワークの基本的な数が設けられている。
【０１９９】
たとえば図１に示されているような有利な構成では、ＣＰＵ（０７０１）とＶＰＵ（０７０２）との間で異なるデータ伝送が実行される。ＶＰＵ上で実行すべきコンフィギュレーションは、ＣＰＵの命令デコーダ（０７０５）によって選択される。命令デコーダ（０７０５）は、ＶＰＵに対して定められた所定の命令を識別し、ＣＴ（０７０６）を制御する。それによって、ＣＴ（０７０６）は相応のコンフィギュレーションを、該ＣＴに割り当てられたメモリ（０７０７）から、ＰＡＥ（ＰＡ、０１０８）に由来するアレイへロードする。前記メモリ（０７０７）はとりわけ、ＣＰＵと共有されるか、またはＣＰＵの動作メモリと同一とすることができる。
【０２００】
ＣＰＵレジスタ（０７０３）が設けられており、レジスタ接続時にはデータが取り出され、処理されて該ＣＰＵレジスタへ再び書き込まれる。データ同期のために状態レジスタ（０７０４）が設けられている。さらにキャッシュが設けられており、このキャッシュは、直前にＣＰＵによって処理されたデータを交換しなければならない場合、このデータが未だにＣＰＵのキャッシュ（０７０９）に存在すると推定されるか、ないしはその直後にＣＰＵによって処理されるために設けられている。
【０２０１】
外部バスは（０７１０）によって示されており、この外部バスを介して、該外部バスに接続されたデータソース（たとえばメモリ、周辺装置）から読み出されるか、ないしは外部バスへ、該外部バスに接続されたデータシンク（たとえばメモリ、周辺装置）へ書き込まれる。このバスはとりわけ、ＣＰＵの外部バスと同一とすることができる（０７１２，破線）。
【０２０２】
キャッシュとバスとの間のプロトコル（０７１１）が具現化されており、これによってキャッシュの正確な内容が供給される。（０７１３）はＦＰＧＡ（０７１３）を示しており、これはＶＰＵに接続されている。したがって、粒度の細かいデータ処理が可能になり、および／または、別のユニットおよび／または外部バスシステム（０７１２）に対してフレキシブルに適合可能なインターフェース（０７１４）（たとえば異なるシリアルインターフェース（Ｖ２４，ＵＳＢ等）、異なるパラレルインターフェース、ハードディスクインターフェース、イーサネット、テレコミュニケーションインターフェース（ａ／ｂ，Ｔ０，ＩＳＤＮ，ＤＳＬ等）を実現することができる。
【０２０３】
図８によれば、オペレーティングシステムの記憶領域には、テーブルまたはリンクされたリストが存在する（ＬＩＮＫＬＩＳＴ，０８０１）。このテーブルまたはリストは、すべてのＶＰＵＣＡＬＬテーブル（０８０２）を形成順に指示する。
【図面の簡単な説明】
【０２０４】
【図１】提案された方法の一例を示しており、可能なシステム構成を示している。
【０２０５】
【図２】コンパイルの基本的な経過を例として示している。
【０２０６】
【図３】特に有利なＶＰＵの構成を示している。
【０２０７】
【図４】ＣＰＵシステムの一部を例として示している。
【０２０８】
【図５】比較的抽象的なシステム定義を示している。
【０２０９】
【図６】図５に示されたようなシステムへ組み込むための、ＶＰＵのインターフェース構造の可能な構成を示している。
【０２１０】
【図７】理解しやすくするため、関連するコンポーネント（とりわけＣＰＵの関連コンポーネント）のみを示している。
【０２１１】
【図８】オペレーティングシステムの記憶領域に存在する、テーブルまたはリンクされたリストを示している。
【国際公開パンフレット】
2004533691.tif 000010
2004533691.tif 000011
2004533691.tif 000012
2004533691.tif 000013
2004533691.tif 000014
2004533691.tif 000015
2004533691.tif 000016
2004533691.tif 000017
2004533691.tif 000018
2004533691.tif 000019
2004533691.tif 000020
2004533691.tif 000021
2004533691.tif 000022
2004533691.tif 000023
2004533691.tif 000024
2004533691.tif 000025
2004533691.tif 000026
2004533691.tif 000027
2004533691.tif 000028
2004533691.tif 000029
2004533691.tif 000030
2004533691.tif 000031
2004533691.tif 000032
2004533691.tif 000033
2004533691.tif 000034
2004533691.tif 000035
2004533691.tif 000036
2004533691.tif 000037
2004533691.tif 000038
2004533691.tif 000039
2004533691.tif 000040
2004533691.tif 000041
2004533691.tif 000042
2004533691.tif 000043
2004533691.tif 000044
2004533691.tif 000045
2004533691.tif 000046
2004533691.tif 000047
2004533691.tif 000048
2004533691.tif 000049
2004533691.tif 000050
2004533691.tif 000051
2004533691.tif 000052
2004533691.tif 000053
2004533691.tif 000054
2004533691.tif 000055
2004533691.tif 000056
2004533691.tif 000057
2004533691.tif 000058
2004533691.tif 000059
2004533691.tif 000060
2004533691.tif 000061
2004533691.tif 000062
2004533691.tif 000063
2004533691.tif 000064
2004533691.tif 000065
2004533691.tif 000066
2004533691.tif 000067
2004533691.tif 000068
2004533691.tif 000069
2004533691.tif 000070
【国際公開パンフレット（コレクトバージョン）】
2004533691.tif 000071
2004533691.tif 000072
【国際調査報告】
2004533691.tif 000073
2004533691.tif 000074
2004533691.tif 000075
2004533691.tif 000076
2004533691.tif 000077
2004533691.tif 000078
2004533691.tif 000079
2004533691.tif 000080