(57)【特許請求の範囲】
【請求項１】
複数のプロセッシングエレメントを接続することにより少なくとも１つのデータパスが形成される少なくとも１つの回路区画を有し、プロセッシングエレメントにそれぞれ対応するメモリ領域にコンフィグレーション情報がセットされることにより前記プロセッシングエレメントの機能が制御されるデータ処理装置によりアプリケーションを実行するための活性化コードの生成方法であって、
前記アプリケーションの少なくとも一部を、第１のパラメータが関係する第１の機能を利用して実行するようにソースコードを生成する第１のステップと、
前記第１の機能を含む処理を行う第１のデータパスを前記少なくとも１つの回路区画にマッピングするためのレイアウト情報であって、前記複数のプロセッシングエレメントの接続情報を含むレイアウト情報をコンピュータにより生成すると共に、前記第１のパラメータに関係する前記プロセッシングエレメントに対応する前記メモリ領域へのアクセスを可能とするアクセス情報を生成する第２のステップと、
前記第１のパラメータが関係する命令を含む前記ソースコードと、前記アクセス情報とを少なくとも入力として、前記活性化コードをコンピュータにより生成する第３のステップとを有する、生成方法。
【請求項２】
前記データ処理装置は、前記メモリ領域に前記コンフィグレーション情報をセットすることにより、前記プロセッシングエレメントの機能を制御する制御ユニットを有しており、
前記活性化コードは、前記制御ユニットの実行用プログラムである、請求項１の生成方法。
【請求項３】
前記第１の機能は、前記第１のパラメータにより処理が変更される機能を含み、
前記アクセス情報は、前記第１のパラメータにより処理が変更される前記プロセッシングエレメントの前記メモリ領域のアドレスを含み、
前記命令は、前記第１のパラメータを変更する命令を含む、請求項１の生成方法。
【請求項４】
前記プロセッシングエレメントは物理的に前記メモリ領域を含んでいる、請求項１の生成方法。
【請求項５】
前記ソースコードでは、前記第１の機能はインスタンス形式で記述され、
前記第２のステップでは、前記第１の機能をオブジェクト形式で記述したライブラリ情報を使用し、インスタンス毎の前記メモリ領域へのアクセスを可能とする前記アクセス情報を生成する、請求項１の生成方法。
【請求項６】
前記少なくとも１つの回路区画は、前記複数のプロセッシングエレメントの接続を変更することによりデータパスを再構成する接続手段を備え、前記ソースコードは、データパスを再構成する命令を備えており、
前記第２のステップでは、前記第１のデータパスを再構成するための前記レイアウト情報と、再構成された前記第１のデータパスにおける前記メモリ領域へのアクセスを可能とする前記アクセス情報とを生成する、請求項１の生成方法。
【請求項７】
前記データ処理装置は、前記回路区画の任意の場所にデータパスを再構成する手段を有しており、
前記第２のステップでは、前記第１のデータパスを任意の場所に再構成するための前記レイアウト情報と、任意の場所に再構成された前記第１のデータパスにおける前記メモリ領域の相対的なアドレス情報とを生成する、請求項６の生成方法。
【請求項８】
複数のプロセッシングエレメントを接続することにより少なくとも１つのデータパスが形成される少なくとも１つの回路区画を有し、プロセッシングエレメントにそれぞれ対応するメモリ領域にコンフィグレーション情報がセットされることにより前記プロセッシングエレメントの機能が制御されるデータ処理装置におけるレイアウト情報を出力するためのレイアウト処理をコンピュータにおいて実行するための記述を有するプログラムであって、
前記レイアウト処理では、アプリケーションの少なくとも一部を、第１のパラメータが関係する第１の機能を利用して実行するように生成されたソースコードに対応して、前記第１の機能を含む処理を行う第１のデータパスを、前記少なくとも１つの回路区画にマッピングするために、前記複数のプロセッシングエレメントの接続情報を含む前記レイアウト情報を生成すると共に、前記第１のパラメータに関係する前記プロセッシングエレメントに対応する前記メモリ領域へのアクセスを可能とするアクセス情報を生成する、プログラム。
【請求項９】
前記第１のパラメータに関係する命令を含む前記ソースコードと、前記アクセス情報とを少なくとも入力として、前記データ処理装置において前記アプリケーションを実行するための活性化コードを生成するための処理をコンピュータにおいて実行するための記述をさらに有する、請求項８のプログラム。
【請求項１０】
前記第１の機能は前記第１のパラメータにより処理が変更される機能を含み、
前記アクセス情報は、前記第１のパラメータにより処理が変更される前記プロセッシングエレメントの前記メモリ領域のアドレスを含み、
前記命令は、前記第１のパラメータを変更する命令を含む、請求項９のプログラム。
【請求項１１】
前記ソースコードでは、前記第１の機能はインスタンス形式で記述され、
前記レイアウト処理では、前記第１の機能をオブジェクト形式で記述したライブラリ情報を使用し、インスタンス毎の前記メモリ領域へのアクセスを可能とする前記アクセス情報を生成する、請求項８のプログラム。
【請求項１２】
前記少なくとも１つの回路区画は、前記複数のプロセッシングエレメントの接続を変更することによりデータパスを再構成する接続手段を備え、前記ソースコードは、データパスを再構成する命令を備えており、
前記レイアウト処理では、前記第１のデータパスを再構成するための前記レイアウト情報と、再構成された前記第１のデータパスにおける前記メモリ領域へのアクセスを可能とする前記アクセス情報とを生成する、請求項８のプログラム。
【請求項１３】
複数のプロセッシングエレメントを接続することにより少なくとも１つのデータパスが形成される少なくとも１つの回路区画を有し、プロセッシングエレメントにそれぞれ対応するメモリ領域にコンフィグレーション情報がセットされることにより前記プロセッシングエレメントの機能が制御されるデータ処理装置によりアプリケーションを実行するための活性化コードを生成する装置であって、
前記アプリケーションの少なくとも一部を、第１のパラメータが関係する第１の機能を利用して実行するように生成されたソースコードに対応して、前記第１の機能を含む処理を行う第１のデータパスを前記少なくとも１つの回路区画にマッピングするためのレイアウト情報であって、前記複数のプロセッシングエレメントの接続情報を含むレイアウト情報と、前記第１のパラメータに関係する前記プロセッシングエレメントに対応する前記メモリ領域へのアクセスを可能とするアクセス情報とを生成するレイアウト手段と、
前記第１のパラメータが関係する命令を含む前記ソースコードと、前記アドレス情報とを少なくとも入力として、前記活性化コードを生成する手段とを有する生成装置。
【請求項１４】
前記データ処理装置は、前記メモリ領域に前記コンフィグレーション情報をセットすることにより、前記プロセッシングエレメントの機能を制御する制御ユニットを有しており、
前記活性化コードは、前記制御ユニットの実行用プログラムである、請求項１３の生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッシングエレメントを用いてデータパスを構成するデータ処理装置を用いてアプリケーションを実行するためのコードの生成方法に関するものである。
【背景技術】
【０００２】
特開２００４−４０１８８号公報には、プロセッサと、複数の演算器と該演算器間を変更可能に接続する接続経路とを含む演算回路群と、パラメータ設定により処理仕様を変更できるパラメータ付専用ハードウェアと、該プロセッサ、該演算回路群、該パラメータ付専用ハードウェアを互いに接続するモジュール間インターフェイスを含むことを特徴とする集積回路が記載されている。この集積回路においては、処理のデータ数や精度などのパラメータを変更することにより対応可能な処理は、その処理に専用のハードウェアとパラメータ保持レジスタとの組み合わせで実行されるようになっており、パラメータ保持レジスタの内容は集積回路を動作させる前になんらかの方法によりセットされるようになっている。【０００３】
国際公開０２／０９５９４６号公報には、種々の論理演算を行う複数のエレメントが２次元に配置されたマトリクスと称される領域を有し、マトリクス内に縦横に配置された配線群の接続を切り替えることにより複数のエレメントによりフレキシブルにデータパスを再構成できるデータ処理装置が開示されている。データパスを動的に再構成可能な構成は、これに限定されるものではなく、適当な論理演算を行うエレメント（プロセッシングエレメント、ＰＥ）をツリー状に接続したり、隣り合うエレメント同士を接続し、エレメントを通信経路として用いる構成なども考えられる。複数のエレメントにより動的にデータパスを再構成するデータ処理装置においては、各々のエレメントのコンフィグレーションデータをそれぞれ格納するコンフィグレーションメモリを用意することにより各々のエレメントの機能を制御することができる。コンフィグレーションデータにより、エレメント単位で、その処理あるいは演算を変更可能とし、エレメント間の接続を変更可能とし、さらに、各々のエレメントの稼動・非稼動を制御することも可能である。【０００４】
データパスにおける処理機能あるいは処理内容をパラメータにより制御することが可能である。複数のエレメントを有するデータ処理装置においては、複数のエレメントからなるデータパスを用いた処理の動き、あるいは内容を、パラメータを変更することにより制御できる。そして、変更するためのパラメータを構成データ（コンフィグレーションデータ）の一部として各々のエレメントにセットすることにより、コンフィグレーションデータを変えることによりデータパスの処理あるいは動きを制御することができる。したがって、パラメータ設定専用の固定的なメモリは不要となる。さらに、複数のエレメントを用いて再構成したデータパスのパラメータを変更できるので、パラメータの異なるデータパスを再構成するために要する設計時間を短縮できる。また、パラメータを変更するために要する時間あるいはリソースが、エレメントの接続を変更してデータパスを再構成するために要する時間あるいはリソースよりも少なくて良いデータ処理装置においては、パラメータを変更して機能を再構成することにより処理時間やリソースの消費を低減できるというメリットがある。【０００５】
複数のエレメントを要するデータ処理装置においては、汎用性を高めるために１種類あるいは複数種類のエレメントが複数用意され、多くのデータパスは、それら複数のエレメントの内の一部のエレメントを用いて構成される。ある機能あるいは処理を実現するためのデータパスをデータ処理装置に実装するためには、そのデータ処理装置において、ある領域に所定のルールに従って物理的に配置された複数のエレメントから、目的とするデータパスを構成するために必要なエレメントを選択して、目的とするデータパスに要するエレメントの物理的な配置と、それらのエレメント間の接続とを決定する必要がある。これらのエレメントの物理的な配置および接続を決定する工程は、配置配線ステップ、マッピングステップあるいはレイアウトステップと呼ばれる。【０００６】
したがって、複数のエレメントを接続してデータパスを構成するデータ処理装置おいて、ある機能を実装するためには以下の工程が必要になる。
ａ．目的の機能を実現するためのデータパス（データフローグラム）を設計する工程。
ｂ．目的のデータパスを、用意された１または複数種類のエレメントの接続により実現する、すなわち、エレメント単位のデータパスを設計する工程。
ｃ．目的のエレメント単位のデータパスを、具体的なエレメントの配置とそれらの結合というレイアウト情報にする工程。【０００７】
これらの工程は、マニュアルで行うことも可能である。しかしながら、実際には、エレメント間のタイミングを調整したり、複数のデータパスを同一の領域に配置する必要があったり、用意されたエレメントの数や種類の過不足をデータパス間で調整する必要があるなど、数多くの要素を考慮する必要がある。このため、マニュアルでは、データパスを実際に実装できるようなレイアウト情報は得られない。したがって、適当なソフトウェアを用いて行うことになる。【０００８】
このため、データ処理装置にレイアウトされたデータパスのパラメータを変更しようとしても、様々な条件により、そのデータパスを実装するために使用されている具体的なレイアウトのロケーションを特定することはかなり難しい。さらに、１つのエレメントが複数の論理ゲートを含んでいることが多く、エレメントが特定されたとしても、そのエレメントの、どの論理ゲートが実際に変更しようとしているパラメータに影響されるのかを特定することはほとんど不可能である。可能であるとしても、コンピュータ設計で生成されたレイアウト情報をマニュアルで解析することは時間の浪費に過ぎず、そのような設計方法は現実的ではない。【０００９】
たとえば、メモリ間の転送を伴う処理を実行するデータパスであれば、コピー元のアドレス、コピー先のアドレス、コピーワード数などのパラメータを変更することにより、同じ構成のデータパスにより種々の目的で利用できる。しかしながら、複数のエレメントの接続により、パラメータの異なるデータパスを構成するデータ処理装置を設計する場合には、実際には、パラメータの異なるデータパスを再構成するように設計した方が、設計的には遥かに経済的であるという結論になる。データパスを再構成することに何らかのネックがあり、データパスの構成を変えたくない場合は、物理的に固定され、プログラムで呼び出し可能なメモリあるいはレジスタを用い、そのレジスタとの配線を含めてデータパスをレイアウトし、プログラムによりメモリの内容を書き換えるという方法がある。この方法は、パラメータを設定するためのレジスタが余分に必要になるだけではなく、目的の処理を行うデータパスを構成するためのエレメントに加えて、パラメータを設定するレジスタとの接続のためにもデータパスを余分に設ける必要があるので、エレメントの利用効率が低下し、データパスも複雑になる。したがって、複数のデータパスを動的に再構成して種々の処理を行おうとする場合は、採用しがたい解決策である。【００１０】
特開２００４−４０１８８号公報のように、パラメータ付専用ハードウェアを再構成可能な回路とは独立して設けることも可能である。しかしながら、再構成可能な回路が、パラメータ付専用ハードウェアで構成しようとするデータパスを構成できる程度のエレメントを備えている場合は、パラメータ付専用ハードウェアは重複したハードウェアを持った回路となり、ＬＳＩあるいはＡＳＩＣといった形でパッケージングされるデータ処理装置をサイズダウンし、低消費電力化し、低コスト化することが要求される場合は採用し難い。
【発明の開示】
【００１１】
そこで、本発明においては、複数のプロセッシングエレメントを用いてデータパスを構成可能なデータ処理装置において、各プロセッシングエレメントに対応する各メモリに格納されるコンフィグレーションを、データパスを使用する際にプロセッシングエレメントの単位で簡単に制御できるコードを生成する方法を提供することを目的としている。そして、ユーザが各プロセッシングエレメントの物理的なアドレスを意識することなく、各プロセッシングエレメントのコンフィグレーション情報を自由自在に扱って、それらのエレメントにより構成されたデータパスの処理を、ソースコード上でパラメータを変更することにより自由に変更することができる環境をユーザに提供することを本発明の目的としている。
【００１２】
本発明においては、複数のプロセッシングエレメントを接続することにより少なくとも１つのデータパスが形成される少なくとも１つの回路区画を有し、プロセッシングエレメントにそれぞれ対応するメモリ領域にコンフィグレーション情報をセットすることによりプロセッシングエレメントの機能が制御されるデータ処理装置によりアプリケーションを実行するための活性化コード（活動化コード）の生成方法であって、以下のステップを有する生成方法を提供する。
Ａ．  アプリケーションの少なくとも一部を、第１のパラメータが関係する第１の機能を利用して実行するようにソースコードを生成する第１のステップ。
Ｂ．  第１の機能を含む処理を行う第１のデータパスを、少なくとも１つの回路区画にマッピングするためのレイアウト情報であって、複数のプロセッシングエレメントの接続情報を含むレイアウト情報をコンピュータにより生成すると共に、第１のパラメータに関係するプロセッシングエレメントに対応するメモリ領域へのアクセスを可能とするアクセス情報を生成する第２のステップ。
Ｃ．  第１のパラメータが関係する命令を含むソースコードと、アクセス情報とを少なくとも入力として、活性化コードをコンピュータにより生成する第３のステップ。
【００１３】
活性化コードは、その活性化コードにより回路区画に実装された１つのデータパスにより実行されて、他のデータパスの第１のパラメータに関係するエレメントに対応するメモリ領域へアクセスし、パラメータを変更するものであっても良い。データ処理装置が、メモリ領域にコンフィグレーション情報をセットすることにより、プロセッシングエレメントの機能を制御する制御ユニット、例えば、ＲＩＳＣなどの制御用のプロセッサを有している場合は、活性化コードは制御ユニットにより実行される実行用プログラム（実行コード）である。
【００１４】
第２のステップ（レイアウトステップ）においては、適当な規模の論理および／または算術演算を実行可能な複数のプロセッシングエレメント（以降において、エレメントと記述することもある）を備えた回路区画にデータパスをマッピングするためのレイアウト情報を、コンピュータを利用して生成する。この際、ソースコード（ソースプログラム）において使用される第１のパラメータが予め判明しているので、レイアウト情報を生成する際の、コンピュータにおける処理をトレースして第１のパラメータに関係するプロセッシングエレメントのメモリ領域のアドレスを示すアクセス情報を生成することが可能である。アクセス情報は、エレメントにそれぞれ対応するメモリ領域の全体を示す情報でも良い。さらに詳細なアクセス情報としては、エレメントに対応するメモリ領域のうち、第１のパラメータに対応して何らかの処理が行われるワードあるいはバイト単位のメモリ領域の詳細なアドレスであっても良い。
【００１５】
本発明の生成方法では、第１のパラメータに関係するメモリ領域へのアクセス情報を、ソースコードをコンパイルして活性化コード、例えば、実行用プログラムを生成する第３のステップにフィードバックする。これにより、第１のパラメータに関係する命令を、その第１のパラメータにより影響を受けるメモリ領域を具体的にアクセスする情報を含んだ活性化コードに変換することができる。例えば、第１のパラメータにより影響を受けるメモリ領域を、その具体的なアドレスに基づき操作する実行コードに変換することができる。したがって、ソースコードを生成するユーザは、第１のパラメータにより具体的に操作されるプロセッシングエレメントの物理的なアドレスを意識することなく第１のパラメータを記述することができる。
【００１６】
本発明の１つの好適な形態は、第１の機能が第１のパラメータにより処理が変更される機能を含むケースである。そのケースにおいては、アクセス情報は、第１のパラメータにより処理が変更されるプロセッシングエレメントのメモリ領域のアドレスを含み、ソースコードは、第１のパラメータを変更する命令を含む。そして、本発明により、ユーザは、第１のパラメータにより具体的に操作されるプロセッシングエレメントの物理的なアドレスを意識することなく、それらのエレメントにより構成されたデータパスの処理を、ソースプログラム上で第１のパラメータを変更することにより自由に変更することができる。
【００１７】
本発明により、ユーザは、プロセッシングエレメントの物理的なアドレスを意識することなく、各プロセッシングエレメントのコンフィグレーション情報を自由自在に扱えるようになる。これにより回路の機能を変更するパラメータをストレスなく記述できることは本発明の最も有用な効果であるが、本発明によりユーザフレンドリーな機能として開放される機能はこれに限定されることはない。本発明により、プロセッシングエレメントのコンフィグレーション情報に対するアクセスが要求される全ての処理のソフトウェア設計が容易になる。たとえば、デバッグ目的で所望のエレメントのコンフィグレーション情報を読み出したり、書き込むためのコード（プログラム）も極めて容易に生成することができる。
【００１８】
近年、複雑化するＬＳＩの設計過程において、ハイレベルなハード／ソフト協調設計を行うことが提唱されているが、いずれも提供された仕様をハードウェアにより実現する部分と、ソフトウェアにより実現する部分に分離した後は、基本的に独立した設計過程を経る。設計および生成過程において、相互のタイミング収束を検証して、その結果をハードウェアおよびソフトウェアに反映するような協調検証を行うことが提唱されている。しかしながら、本発明において開示しているような、ハードウェア設計の具体的な結果により、ソースコードの命令自体のコンパイル結果が異なるような、実行用プログラムの生成方法は提唱されていない。
【００１９】
本発明の活性化コードを、コンピュータを用いて生成する、すなわち、コンパイルするためのプログラムは、アプリケーションの少なくとも一部を、第１のパラメータが関係する第１の機能を利用して実行するように生成されたソースコードに対応して、第１の機能を含む処理を行う第１のデータパスを、データ処理装置の回路区画にマッピングするためのレイアウト処理を実行するための記述を含む。そして、レイアウト処理では、複数のプロセッシングエレメントの接続情報を含むレイアウト情報を生成すると共に、第１のパラメータに関係するプロセッシングエレメントに対応するメモリ領域へアクセスするためのアクセス情報を生成する。
【００２０】
このコンパイル用のプログラムは、さらに、第１のパラメータが関係する命令を含むソースコードと、アクセス情報とを少なくとも入力として、データ処理装置の活性化コードを生成する処理を実行するための記述を有するものであっても良い。コンピュータにおいて実行するための記述とは、ソースコードあるいはコンピュータが実行可能な形式の命令、命令群、マクロ命令、各処理を行うモジュールやサブルーチンをコールする命令などを含むものである。このコンパイル用のプログラム、あるいはプログラム製品は、ＣＤ−ＲＯＭなどの適当な記録媒体に記録して提供することが可能であり、インターネットなどのコンピュータネットワークを介して提供することも可能である。
【００２１】
また、本発明においては、少なくとも１つの回路区画を有するデータ処理装置においてアプリケーションを実行するための活性化コードを生成する装置であって、アプリケーションの少なくとも一部を、第１のパラメータが関係する第１の機能を利用して実行するように生成されたソースコードに対応して、第１の機能を含む処理を行う第１のデータパスを少なくとも１つの回路区画にマッピングするためのレイアウト情報であって、複数のプロセッシングエレメントの接続情報を含むレイアウト情報と、第１のパラメータに関係するプロセッシングエレメントに対応するメモリ領域のアドレスを含むアクセス情報とを生成するレイアウト手段と、第１のパラメータが関係する命令を含むソースコードと、アドレス情報とを少なくとも入力として、活性化コードを生成する手段とを有する生成装置を提供する。
【００２２】
データ処理装置の回路区画におけるプロセッシングエレメントとメモリ領域との関係は、メモリ領域にセットされたコンフィグレーション情報によりプロセッシングエレメントの機能がダイナミックに制御できるものであれば良く、必ずしも物理的にプロセッシングエレメントとメモリ領域とが同じ位置に配置されている必要はない。しかしながら、配線遅延や、プロセッシングエレメントを構成するゲート単位あるいはトランジスタ単位の構成とメモリ領域との情報量を考慮すると、プロセッシングエレメントは物理的にメモリ領域を含んでいるか、または、少なくともグループ単位でプロセッシングエレメントの近傍にメモリ領域が配置されることが好ましい。そのようなデータ処理装置においては、アクセス情報は、プロセッシングエレメント自身へのアクセスを可能にする物理的なアドレスに対応した情報を含む。
【００２３】
少なくとも１つの回路区画が、複数のプロセッシングエレメントの接続を変更することによりデータパスを再構成する接続手段を備えている再構成可能なデータ処理装置においては、ソースコードが、データパスを再構成する命令を備えている。また、レイアウト情報を生成する第２のステップでは、第１のデータパスを再構成するためのレイアウト情報と共に、再構成された第１のデータパスにおけるメモリ領域へのアクセスを可能にするアクセス情報を生成する。したがって、本発明は、プロセッシングエレメントにより固定的なデータパスを形成するデータ処理装置の設計および開発においても有用であり、また、再構成可能なデータパスを形成するデータ処理装置の設計および開発においても有用である。
【００２４】
さらに、本発明の活性化コードの生成方法は、少なくとも１つの回路領域の固定した位置にデータパスを再構成するデータ処理装置のみならず、任意の位置にデータパスを再構成するデータ処理装置の設計および開発においても有用である。その場合は、アクセス情報は、相対的なアドレスを含むものになる。すなわち、データ処理装置が、回路区画の任意の場所にデータパスを再構成する手段を備えている場合は、レイアウトステップでは、第１のデータパスを任意の場所に再構成するための相対的なレイアウト情報と、任意の場所に再構成された第１のデータパスにおけるメモリ領域の相対的なアドレス情報とを生成する。
【００２５】
さらに、本発明の活性化コードの生成方法では、ソースコードに、第１の機能をインスタンス形式で記述することができる。レイアウト情報を生成する第２のステップでは、第１の機能をオブジェクト形式で記述したライブラリ情報を使用することにより、インスタンス毎のメモリ領域へのアクセスを可能にする情報、例えば、インスタンス毎のメモリ領域のアドレスを含むアクセス情報を生成する。活性化コードを生成する第３のステップでは、第１のパラメータに関係する命令を、インスタンス毎にプロセッシングエレメントに対応するメモリ領域にアクセスするコードに変換することができる。
【図面の簡単な説明】
【００２６】
【図１】図１は、プロセッシングユニット（ＰＵ）の概要を示す図である。
【図２】図２は、マトリクスの概要を示す図である。
【図３】図３は、プロセッシングエレメント（ＰＥ）の一例を示す図である。
【図４】図４は、ＰＥの他の例を示す図である。
【図５】図５は、ＰＥにコンフィグレーションデータをロードする構成を示す図である。
【図６】図６は、実行用のプログラムを生成する過程を示す図である。
【図７】図７は、ＤＤＤＬコードの一例を示す図である。
【図８】図８は、アクセス情報の一例を示す図である。
【図９】図９は、ユーザソースプログラムの一例を示す図である。
【発明を実施するための最良の形態】
【００２７】
図１に、本発明により生成された実行用プログラムによりアプリケーションを実行するデータ処理装置の一例を示してある。このデータ処理装置１は、１つのチップ化されたプロセッシングユニット（ＰＵ）１であり、図２に示すように複数プロセッシングエレメント（ＰＥ）２１によりデータパスを再構成可能なマトリクスと称される回路区画１９を備えている。データ処理装置１は、さらに、ＰＥ２１などに対してコンフィグレーション情報（コンフィグレーションデータ）を供給して制御する制御用プロセッサ（ＲＩＳＣ）３５と、コンフィグレーション情報を伝送するためのコントロールユニット（ＴＣＵ）５９および転送路５１〜５８とを備えている。転送路５１〜５８は、複数のＰＥ２１を複数にグループ分けしたセグメント１０〜１５、入力バッファ３３および出力バッファ３４のそれぞれに張り巡らされている。これらは、ＲＩＳＣ３５からのみではなく、他のＰＵ１などから供給されるコンフィグレーションデータをＰＥ２１などに転送する機能も備えている。このＰＵ１においては、ＴＣＵ５９が、バススイッチングユニット（バスインターフェイス、ＢＳＵ）３６に接続されており、ＲＩＳＣ３５はＢＳＵ３６を介してコンフィグレーションデータをＴＣＵ５９を介して各ＰＥ２１に供給する。【００２８】
ＰＵ１は、マトリクス１９の内部にデータを入出力するインターフェイスが２種類用意されている。１つは、ダイレクト入力３１ａ〜３１ｃおよびダイレクト出力３２ａ〜３２ｃであり、マトリクス１９のＰＥ２１に対して外部から直にデータを入力し、また、出力することができる。ダイレクト入力３１ａ〜３１ｃおよびダイレクト出力３２ａ〜３２ｃを用いて複数のＰＵ１を接続して、データパスを構成するＰＥ２１の実数をさらに増やすことができる。これにより、１つのチップ（ＰＵ）１では回路要素が不足するようなアプリケーションの処理も複数のチップ１を連結することにより対処できる。ＰＵ１は、さらに、他の入力方法として、入力バッファ３３と出力バッファ３４とを用いてマトリクス１９にデータを供給する構成を備えている。入力バッファ３３は４つの入力エレメントＬＤＢを備えており、バッファ３３の構成および制御をコンフィグレーションデータにより設定できる。出力バッファ３４も同様であり、４つの出力エレメントＳＴＢを備えており、構成および制御をコンフィグレーションデータにより設定できる。【００２９】
ＢＳＵ３６には、複数のコンポーネントあるいはインターフェイスが接続されており、ＲＩＳＣ３５に限らず、これらのコンポーネントあるいはインターフェイスを用いてコンフィグレーションデータをマトリクス１９に送り込むことができる。また、マトリクス１９の内部に再構成されたデータパスから他のデータパスを構成するためのコンフィグレーションデータをＰＥ２１に供給できる。たとえば、ＳＤＲＡＭインターフェイス３７を介して外部メモリからコンフィグレーションデータを提供でき、ＰＣＩバスインターフェイス３８を介してＰＣＩバスに接続された外部プロセッサからもコンフィグレーションデータを供給できる。また、その他のコンポーネントとしてＤＭＡＣ３９が接続され、バスブリッジ回路４１を介してシリアルインターフェイスコントローラとなる非同期通信機（ＵＡＲＴ）などの汎用インターフェイス４０が接続されている。【００３０】
再構成可能な回路区画であるマトリクス１９は、図１においては、複数のセグメント１０から１５に分かれて記載されている。マトリクス１９は、全体としては図２に示すように、複数のプロセッシングエレメントがアレイまたはマトリクス状に２次元に配置された回路領域となっており、そのため回路領域１９はマトリクスと称されている。ＰＵ１のマトリクス１９は、３６８個のＰＥ２１を備えており、それらに対してコンフィグレーションデータを供給する転送路を分けて形成するために６つのセグメント１０〜１５に形式上分割されている。しかしながら、複数のＰＥ２１からデータパスを構成し、入力データを処理するという点では、これらのセグメント１０〜１５によりＰＥ２１が複数にグループ分けされているのではない。したがって、配線群２２によりＰＥ２１をフレキシブルに接続し、複数のセグメントに跨ったデータパスまたはデータフローを自由に構成できる。【００３１】
マトリクス１９は、縦横に２次元に配置された複数のプロセッシングエレメント（ＰＥ）２１と、それらの間に格子状に配置された配線２２と、配線２２の接続ポイントで縦横の配線２２の接続を自由に切り替えることができるスイッチングユニット２３とを備えている。ＰＥ２１は、ルックアップテーブルなどにより自在に機能を設定可能なものであっても良い。本例のＰＥ２１は、算術論理演算用のエレメント、遅延用のエレメント、メモリ用のエレメント、データを入力または出力するためにアドレスを発生させるエレメント、データの入力または出力用のエレメントなど、ある程度機能的に異なるエレメントを含んでいる。このＰＵ１においては、機能的に異なる処理に適した内部構成のエレメントを複数種類用意し、それらの機能的に異なる複数のエレメントをグループに分けて配置することによりマトリクス１９のスペース効率を向上している。また、ＰＵ１においては、ある程度の機能グループに分けたエレメントを配置することにより冗長性が減少するのでＡＣ特性および処理速度も向上できるといったメリットを得ている。【００３２】
図３および図４は、ＰＥ２１の一例である。ＰＥ２１は、機能を変更可能な内部データパス領域２９と、その内部データパス領域２９の機能をコンフィグレーション情報により制御する設定ユニット６０とを備えている。内部データパス領域２９と配線２２とは入出力のセレクタ２５および２６を介して接続されている。したがって、コンフィグレーション情報により配線２２に含まれる複数のバスのいずれかが入力用のバスおよび出力用のバスとして選択され、ＰＥ２１により形成されるデータパスの構成をコンフィグレーション情報により制御できる。【００３３】
図３に示したＰＥ２１ａの内部データパス領域２９ａは、カウンタなどからなるアドレス発生回路２８と、セレクタＳＥＬとを備えている。設定ユニット６０は、コンフィグレーション情報が格納されるコンフィグレーションメモリ６８を備えており、内部データパス領域２９ａは、コンフィグレーション情報により機能が制御される。このＰＥ２１ａでは、コンフィグレーション情報により設定された条件でアドレス発生回路２８により生成されたアドレスが出力信号ｄｏとして配線２２に出力される。そのアドレス信号は、行配線および列配線を介して、そのまま、あるいは、他のＰＥ２１によって処理された後、入力信号ｄｉｘあるいはｄｉｙとしてＰＥ２１ａにフィードバックされる。そして、コンフィグレーション情報によりセットされた条件でセレクタＳＥＬが選択したアドレスがマトリクス１９からデータ入力あるいは出力用のアドレスとして出力される。【００３４】
したがって、ＰＥ２１ａの機能はコンフィグレーションメモリ６８に格納されるコンフィグレーション情報を書き換えることにより自由に制御できる。たとえば、メモリ間の転送を伴う処理を実行するデータパスを、１つまたは複数のＰＥ２１ａを用いて構成した場合は、コンフィグレーション情報に含まれるコピー元のアドレス、コピー先のアドレス、コピーワード数などのパラメータを変更することにより、同じ構成のデータパスにより種々の目的で利用できる。【００３５】
図４に示したＰＥ２１ｂは、算術演算および論理演算に適した構成である。内部データパス部２９ｂは、シフト回路ＳＨＩＦＴ、マスク回路ＭＡＳＫ、論理演算ユニットＡＬＵを備えている。そして、上記のＰＥ２１ａと同様に、設定ユニット６０のコンフィグレーションメモリ６８に格納されたコンフィグレーション情報により、これらのシフト回路ＳＨＩＦＴ、マスク回路ＭＡＳＫ、論理演算ユニットＡＬＵの状態が設定される。したがって、コンフィグレーション情報を変えることにより、入力データｄｉｘおよびｄｉｙを加算あるいは減算したり、比較したり、論理和あるいは論理積を演算することができ、その結果が出力信号ｄｏとして配線（バス）２２に出力することができる。【００３６】
図５に、ＰＥ２１において転送路を用いてデータを入出力する機構を示してある。それぞれの転送路５１〜５６は、図２に示した夫々のセグメント１０〜１５に含まれるＰＥ２１に設けられた１ワード（３２ビット）のレジスタ（フリップフロップ）を直列に繋ぐ配線である。ここでは、転送路５１を例に説明する。ＰＥ２１の設定ユニット６０は３２ビットのレジスタ（ＦＦ）６１を備えており、３２ビットの転送路５１により前後に隣接するＰＥ２１のＦＦ６１と接続されている。したがって、転送路５１では、１つのＰＥ２１のＦＦ６１に伝送された１ワードのデータ７５は、１クロックあるいは１サイクルの遅延で次のＰＥ２１のＦＦ６１に伝送される。【００３７】
設定ユニット６０は、ＦＦ６１に格納されたデータ７５をデコードするデコーダ６２と、データ７５を格納するためにバックグラウンドで動作するバックグラウンド動作部６３と、ローカルのデータパス領域２９の設定を行うコンフィグレーションデータが格納されるフォアグラウンド動作部６４とを備えている。バックグラウンド動作部６３は、３バンクのバックグラウンドメモリ６５と、ＦＦ６１に格納されたデータ７５をバックグラウンドメモリ６５の各バンクと直に出力するラインに振り分けるセレクタ６６と、メモリ６５のバンクを選択してデータを出力できるセレクタ６７とを備えている。【００３８】
フォアグラウンド動作部６４は、データパス領域２９の現状のコンフィグレーションを維持するフォアグラウンドメモリ６８を備えている。したがって、このフォアグラウンドメモリ６８がデータパス領域２９の機能を実際に制御するコンフィグレーションメモリとなり、このメモリ６８のコンフィグレーションデータの一部あるいは全部を書き換えることによりＰＥ２１の機能あるいは動作は、ＰＥ２１が設計された範囲で自由に制御することができる。フォアグラウンド動作部６４は、フォアグラウンドメモリ６８に、バックグラウンドメモリ６５または転送路５１のＦＦ６１からのデータを選択して供給するセレクタ６９を備えている。フォアグラウンドメモリ６８にロードするコンフィグレーションデータ（設定データ）を選択するセレクタ６７および６９は、選択信号を選択するための第２のセレクタ７２および７０により制御され、転送路５１によりＦＦ６１にセットされたデータおよびフォアグラウンドメモリ６８に設定されたコンフィグレーションデータから制御することができる。セレクタ６７および６９は、ＲＩＳＣ３５からダイレクトに供給される信号により制御するようにしても良い。【００３９】
設定ユニット６０は、下流のＰＥ２１のＦＦ６１に供給するデータ７５を、自己のＰＥ２１のＦＦ６１のデータ、バックグラウンドメモリ６５のバンクのデータ、さらにフォアグラウンドメモリ６８のデータのいずれかから選択できる出力セレクタ７１を備えている。デコーダ６２は、自己のＰＥ２１のＦＦ６１に転送されたデータ７５を解析することにより、出力セレクタ７１を切り替えて下流のＰＥ２１のＦＦ６１に転送されるデータ７５を選択する。【００４０】
このように、ＰＵ１は、ＲＩＳＣ３５により、それぞれのＰＥ２１の設定ユニット６０、さらに具体的には、ＰＥ２１に対応するコンフィグレーションメモリ６８に適当なコンフィグレーションデータをタイムリーに供給することができる。したがって、複数のＰＥ２１により構成されるデータパスを動的に変更することができる。また、ＰＥ２１の単位で、フォアグラウンドでＰＥ２１を制御しているコンフィグレーションデータの一部あるいは全部を書き換えることが可能であり、データパスの構成を変えずに、個々のＰＥ２１の機能を変更してデータパスの処理を変更することも可能である。さらに、個々のＰＥ２１のコンフィグレーションデータを読み出すことも可能であり、ＲＩＳＣ３５によりコンフィグレーションデータの一部を変更してリライトしたり、ＰＥ２１からフィードバックされたコンフィグレーションデータをデバッグするために用いることも可能である。【００４１】
ＰＥ２１の接続を動的に変更してデータパスを再構成可能なハードウェアはこれに限定されるものではない。たとえば、配線群２２を用いてＰＥ２１を接続する代わりに、ＰＥ２１それ自体を接続手段として利用し、ＰＥ２１同士を接続し、変更可能なデータパスを構成することも可能である。また、各ＰＥ２１にコンフィグレーションデータを供給する方法としては、各ＰＥ２１のコンフィグレーションメモリを個別にバス接続する方法を採用することも可能である。【００４２】
図６に、与えられたユーザの仕様（アプリケーション）をＰＵ１により実行する実行用プログラムを生成する過程を示してある。アプリケーションは、ＰＵ１あるいはＰＵ１を実装した電子機器などの装置において処理する業務を総括的に示しており、ユーザの仕様により決定される。アプリケーションを示すユーザ仕様は、本例においては、デバイスに依存しない記述であるＣソースコード（ｕｓｅｒ０．ｃ）８１で与えられている。まず、Ｃソースコード（ｕｓｅｒ０．ｃ）８１を、ＤＤＤＬ（Device Dependent Description Language）コンパイラ１０１により、ＰＵ１のハードウェア情報を含むハードウェアライブラリ８２を参照してＰＵ１に依存したプログラムを生成する。このステップＳＴ−Ａでは、ソースコード８１に記述された処理のほとんどを、ＰＵ１のマトリクス１９のＰＥ２１により構成されるデータパスを用いて実行するように変換する。このため、ＰＥ２１により構成されるデータパスを用いて実行する処理内容を、デバイス、すなわちマトリクス１９に含まれるＰＥ２１の機能に依存の形式で記述したＤＤＤＬソースコード８５がＤＤＤＬコンパイラ１０１により生成される。さらに、そのＤＤＤＬソースコード８５によりデータパスが構成されるマトリクス１９を制御する記述を含んだソースコード（ｕｓｅｒ１．ｃ）８４も、ＤＤＤＬコンパイラ１０１により生成される。【００４３】
ＤＤＤＬコンパイラ１０１において参照されるマトリクスライブラリ８３には、ユーザプログラムにおいて多用される機能をＤＤＤＬで記述したモジュールが用意されており、ＤＤＤＬソースコード８５を生成する時間を短縮することができる。モジュール化される機能としては、たとえば、メモリに対するアクセス制御などの入出力に関する機能、フーリエ変換などのデータ処理に関する機能がある。ある機能を実現するためのデータパスを複数のＰＥ２１を用いて構成する方法は通常幾つかあり、それらの内、最適な構成を選択するには多大な時間を消費する。したがって、事前に最適な構成のデータパスのＤＤＤＬソースを用意することによりコンパイル時間を大幅に短縮できる。また、１つの機能に対して、幾つかの条件に対して最適な構成の複数のデータパスのＤＤＤＬソースをライブラリ８３に用意してコンパイラ１０１が選択できるようにすることにより、短時間でユーザの使用に適したＤＤＤＬソースを生成することができる。【００４４】
さらに、ある機能を実現するデータパスのパラメータを変更することにより、ユーザの使用に適したＤＤＤＬソースを提供できることも多い。そのような、パラメータが関係する機能に対しては、ユーザソースコードから変更可能な１つまたは複数のパラメータと、その機能を実現するデータパスを記述するＤＤＤＬコードがライブラリ８３に用意される。したがって、ＤＤＤＬコンパイラ１０１は、ユーザ仕様を実現するユーザソースコード８４、ユーザ仕様を実現するユーザＤＤＤＬコード８５に加えて、ユーザソースコード８４あるいはユーザＤＤＤＬコード（ｕｓｅｒ．ｄｄ２）８５に使用される１つまたは複数のモジュールのＤＤＤＬコード（ｍａｔｒｉｘ．ｄｄ２）８６を出力する。そして、ユーザソースコード８４には、選択されたＤＤＤＬコード８６の処理を決定するパラメータを定義あるいは変更する命令が含まれる。【００４５】
ライブラリ８３に用意されたモジュールのＤＤＤＬコードをオブジェクト形式で記述することにより、ソースコード（ソースプログラム）８４では、そのモジュールで実現しようとする機能はインスタンス形式で記述することができる。したがって、そのモジュールで使用されるパラメータを制御する命令をインスタンス形式で記述することができる。このため、同一のモジュールのインスタンスを複数のデータパスで用いるような構成を、ユーザソースプログラムにおいて極めて容易に記述することができる。【００４６】
さらに、ユーザの要求する処理をＰＵ１において実現するデータパス（データフロー）を構成するためにＰＥ２１のリソースが不足する場合がある。その場合は、再構成可能なマトリクス１９の機能を利用して、ＰＥ２１を時分割で使用し、マトリクス１９にデータパスを再構成する必要がある。したがって、ＤＤＤＬコンパイラ１０１では、マトリクス１９のＰＥ２１を時分割で使用するための複数のデータパスの構成が生成され、それぞれのデータパスの構成を記述した複数のＤＤＤＬコードが出力される。さらに、ユーザソースコード８４には、データパスを再構成する命令が含まれる。【００４７】
ＤＮＡコンパイラ１０２は、ユーザソースコード８４、ユーザＤＤＤＬコード８５、１つまたは複数のモジュールのＤＤＤＬコード８６を入力としてマトリクス１９の配置配線を行う。そのため、ＤＮＡコンパイラ１０２は、ＤＤＤＬコードに記述されたデータパスをマトリクス１９にマッピングし、そのレイアウト情報８７を出力する。このレイアウトを行うステップＳＴ−Ｂでは、ユーザソースコード８４により変更可能なパラメータが定義されているモジュールのＤＤＤＬコード８６をマッピングする際に、そのパラメータに関係するＰＥ２１のコンフィグレーションメモリ６８のアドレスを示すアクセス情報をヘッダーファイル（ｍａｔｒｉｘ．ｈ）８８としてレイアウト情報８７と共に出力する。すなわち、ステップＳＴ−Ａにおいては、ＤＤＤＬコンパイラ１０１により、アプリケーションの少なくとも一部を、ある（第１の）パラメータが関係する機能（第１の機能）を利用して実行するようにユーザソースコード８４およびＤＤＤＬソースコード８５を生成する。例えば、ソースコード８５ではパラメータを設定したり、変更することにより機能の具体的な動きを決定する。ステップＳＴ−Ｂにおいて、レイアウト情報に加えて、第１のパラメータに関係するＰＥ２１に対応するコンフィグレーションメモリ６８へのアクセスを可能とするアクセス情報を生成する。【００４８】
ＤＤＤＬコード８６をＰＥ２１により具体的にマッピングする際には、データパスを実現するための具体的なＰＥ２１の位置と、そのＰＥ２１に含まれるゲート回路の具体的な構成が決定される。したがって、ＤＤＤＬコード８６に、予め変更可能なパラメータが含まれていれば、それにより影響を受ける具体的なＰＥ２１と、そのＰＥ２１に含まれる具体的なゲート回路とが特定され、そのゲート回路を制御するコンフィグレーション情報が格納されるコンフィグレーションメモリ６８のアドレスも特定される。あるいは、パラメータにより影響を受けるＰＥ２１のコンフィグレーションメモリ６８のアドレスと、コンフィグレーションメモリ６８にセットされるデータ中のパラメータにより影響を受けるワードあるいはビットの位置が特定される。【００４９】
本例のマトリクス１９においては、コンフィグレーションメモリ６８がＰＥ２１に物理的に含まれているので、コンフィグレーションメモリ自体のアドレスは、マトリクス中のＰＥ２１のアドレスと同一になる。複数のＰＥ２１に対して１つのコンフィグレーションメモリが用意されているデバイスにおいては、ＰＥ２１のアドレスとコンフィグレーションメモリのアドレスとは一対一では対応しない可能性がある。その場合は、共通のコンフィグレーションメモリの中で、パラメータの変更が影響を与えるＰＥ２１を制御するデータが格納されるアドレスを含むアクセス情報８８を生成できる。ＰＥ２１をフロントで制御する前に、コンフィグレーションデータの内のパラメータにより影響を受けるアドレスを特定して更新することも可能である。しかしながら、多くの場合、フロントで制御する前は、データ量を少なくするためにコンフィグレーションデータは圧縮されており、圧縮された状態で更新を行うことは伸張および圧縮するためのハードウェアと処理時間が必要となり好ましくない。【００５０】
ユーザソースプログラム８４に、インスタンス形式でモジュール８６が利用されている場合は、ＤＮＡコンパイラ１０２は、インスタンス毎にデータパスをマトリクス１９にマッピングし、その配置配線情報を含むレイアウト情報８７を出力する。それと共に、ＤＮＡコンパイラ１０２は、データパス毎、すなわち、インスタンス毎に、パラメータにより影響を受けるＰＥ２１のコンフィグレーションメモリのアドレスを含むアクセス情報８８を出力する。【００５１】
さらに、マトリクス１９に、複数のデータパスが動的に再構成する必要がある場合は、ＤＮＡコンパイラ１０２は、マトリクス１９にデータパスを再構成するためのレイアウト情報８７を出力する。また、ＤＮＡコンパイラ１０２は、再構成されたデータパスにおいて、パラメータにより影響を受けるＰＥ２１のコンフィグレーションメモリのアドレスを含むアクセス情報８８を出力する。【００５２】
マトリクス１９を構成するＰＥ２１が単一の構成であると、ＰＥ２１により構成されるデータパスをマトリクス１９の任意の場所に構成することにより、マトリクス１９の資源をさらに効率よく利用できる。しかしながら、ＰＥ２１の絶対的な位置は、実際にデータパスがマトリクス１９に実装されるまで決定されず、そのときまでＰＥ２１のコンフィグレーションメモリのアドレスも決まらない。したがって、そのようなＰＵ１を対象にＤＮＡコンパイラ１０２がレイアウト情報を生成する場合は、ＤＤＤＬコード８５または８６によるデータパスをマトリクス１９の任意の場所に再構成するための相対的なレイアウト情報８７を出力し、任意の場所に再構成されたデータパスにおいてパラメータにより影響を受けるＰＥ２１のコンフィグレーションメモリのアドレスを含むアクセス情報８８を出力する。ＰＵ１に、データパスが実装されたマトリクス１９の基準のアドレスによりアクセス情報８８を加工する機能を設けることにより、絶対的なアドレスを含むアクセス情報と同様に取り扱うことができる。【００５３】
さらに、ＤＮＡコンパイラ１０２は、モジュール化されたＤＤＤＬコード８６のパラメータを変更する機能を制御するソースコード（ｍａｔｒｉｘ．ｃ）８９を出力する。この実行用プログラムの生成方法においては、ユーザソースプログラム８８において、あるモジュールに関連するパラメータを個々に変更する命令を記述するアドバンスドモードに加えて、あるモジュールに関連するパラメータを一括で変更するマクロ命令を記述可能なベーシックモードをサポートする。したがって、ユーザソースプログラム８８に記述されたマクロ命令により、ＤＤＤＬコード８６に関するパラメータを変更する機能を定義するソースプログラム８９を用意することにより、Ｃコンパイラ１０３がマクロ命令を解析して実行用プログラムを生成できるようにしている。【００５４】
実行用プログラムを生成するＣコンパイラ（ｇｃｃ）１０３は、ユーザソースプログラム９０、マトリクス１９にデータパス化されるモジュールのソースコード８９、およびＣソースライブラリ９１に含まれるそのモジュールのソースコードを入力としてＰＵ１において実行可能なコード９３を生成する。ユーザソースプログラム９０は、ソースプログラム８４に、レイアウト情報を生成するステップＳＴ−Ｂにおいて生成されたアクセス情報がヘッダーファイル８８としてインクルード（include）されたものである。したがって、この実行用プログラムを生成するステップＳＴ−Ｃでは、パラメータが関係する命令、例えば、パラメータを変更する命令を含むユーザソースプログラム８４と、アクセス情報８８とがコンパイラ１０３の入力情報に含まれ、それらの情報に基づき実行用プログラム９３が生成される。このため、実行用プログラム９３を生成するＣコンパイラ１０３においては、ユーザソースプログラム８４に含まれたパラメータを変更する命令によりアクセスすべきメモリのアドレスが明確になっており、そのメモリのアドレスに対してコンフィグレーションデータを書き込む、あるいはそのメモリのアドレスのコンフィグレーションデータを書き換える実行用プログラム９３が自動的に生成される。【００５５】
これらの実行用プログラムを生成する一連のプロセスＳＴ−Ａ、ＳＴ−ＢおよびＳＴ−Ｃを実行するＤＤＤＬコンパイラ１０１、ＤＮＡコンパイラ１０２およびＣコンパイラ１０３は、上述した機能を含むコンパイラとしての機能を適当なリソースを有するコンピュータで実行するための記述を有するプログラム製品としてＣＤ−ＲＯＭなどの記録媒体に記録して提供される。これらのプログラム製品は、インターネットなどの異なるメディアにより提供することも可能である。また、これらのプログラム製品は、それぞれ独立した製品として提供することも可能であり、一つのパッケージとして提供することも可能である。【００５６】
デバイスに依存しないソースプログラム８１からデバイスに依存したソースプログラム８４およびＤＤＤＬコード８５を生成するプロセスＳＴ−Ａは、デバイスに依存した形式に変換する要素に対して実行手順、リソースの割り振りなど最適化のために検討する要素が多く、プログラマの思想や経験が活用されるプロセスである。したがって、現状ではソフトウェアとの協調設計による半自動あるいはマニュアルで行われることも多い。これに対し、配置配線を行うプロセスＳＴ−Ｂおよび実行用プログラムを生成するプロセスＳＴ−Ｃは、変換する要素が膨大であり、プログラムのステップ数も膨大になることからマニュアルで行うことは非現実的であり、コンピュータにより自動生成せざるを得ない。そして、本発明によれば、コンピュータにより配置配線を自動生成するハードウェア設計分野であるステップＳＴ−Ｂにおいてアクセス情報８８を生成し、コンピュータにより実行用プログラムを自動生成するソフトウェア設計分野であるステップＳＴ−Ｃにおいてアクセス情報８８を使用する。これにより、ハードウェア設計の最終過程と、ソフトウェア設計の最終過程とを結合できるので、ユーザは、ソフトウェア設計においては、最後段階まで、詳細なアドレスをクリアにしないままのハードウェア依存の命令を使用して設計を進めることができる。【００５７】
図７に、ＤＤＤＬコード（ｍａｔｒｉｘ．ｄｄ２）８６の一例を抜粋して示してある。記述８６ａにおいて、マクロ名「ｃｐ」というＤＤＤＬソースコードが定義され、その中で「ｄｎａ＿ｓｅｔｐａｒｍｐｈｙ＿＠＿Ｕ６（  ）」という記述８６ｂおよび「ｄｎａ＿ｓｅｔｐａｒｍｐｈｙ＿＠＿Ｕ８（  ）」という記述８６ｃにより変更可能なパラメータをオブジェクト形式で指定している。【００５８】
図８に、アクセス情報（ｍａｔｒｉｘ．ｈ）８８の一例を示してある。このアクセス情報８８は、ユーザソースプログラム８４に、「ｃｐ１」というインスタンス名でＤＤＤＬコード８６に定義された「ｍａｔｒｉｘ」というデータパスのパラメータを変更する命令が記述されている場合に、その命令に対応して出力される。このため、「・・・ｃｐ１＿Ｕ６」および「・・・ｃｐ１＿Ｕ８（  ）」というインスタンス形式でパラメータが利用されるＰＥ２１のアドレスが記述され、「ｄｎａ＿ｓｅｔｐａｒｍｐｈｙ＿ｃｐ１＿Ｕ６（  ）」および「ｄｎａ＿ｓｅｔｐａｒｍｐｈｙ＿ｃｐ１＿Ｕ８（  ）」という記述により、パラメータにより書き換えが必要になるメモリの詳細なアドレスが定義されている。【００５９】
図９に、アクセス情報８８をインクルードしたユーザソースコード（ｕｓｅｒ２．ｃ）９０の一例を抜粋して示してある。ユーザソースコード９０においては、ヘッダの記述９０ａによりアクセス情報８８が取り込まれている。「ｄｎａ＿ｃｆｇｒａｍ＿ｌｏａｄ３（  ）」という記述９０ｂにより、ＤＤＤＬコード８６の「ｍａｔｒｉｘ」というデータパスのコンフィグレーションデータが、回路区画であるマトリクス１９の適切なＰＥ２１の設定ユニット６０にロードされる。「ｄｎａ＿ｃｏｎｆｉｇ（  ）」という記述９０ｃにより、ロードされたコンフィグレーションデータがデータパスを構成するためのＰＥ２１の設定ユニット６０のフォアグラウンドメモリ（コンフィグレーションメモリ）６８にロードされ、内部データパス部２９を制御する。これにより、回路区画であるマトリクス１９に目的のデータパスが構成される。【００６０】
「ｄｎａ＿ｓｅｔｐａｒｍｍａｃｒｏ＿ｃｐ１（  ）」というインスタンス名ｃｐ１を指定したマクロ命令９０ｄにより、データパス「ｍａｔｒｉｘ」において変更可能として開放されているパラメータを予め定義した「ｉｎｐｕｔ１」という値にセットし、「ｄｎａ＿ｒｕｎ（  ）」という記述９０ｅによりデータパス「ｍａｔｒｉｘ」による処理を開始する。そのデータパスの処理が終了すると、「ｄｎａ＿ｓｔｏｐ（  ）」という記述９０ｆによりデータパスの動作を停止する。このようにして、記述９０ｄにより設定したパラメータにより制御される処理が実行される。【００６１】
さらに、再度、記述９０ｇにより、コンフィグレーションデータをフォアグラウンドのコンフィグレーションメモリ６８にロードする。次に、「ｄｎａ＿ｓｅｔｐａｒｍｍａｃｒｏ＿ｃｐ１（  ）」というマクロ命令９０ｈにより、データパス「ｍａｔｒｉｘ」のパラメータを、予め定義した「ｉｎｐｕｔ２」という値にセットし、記述９０ｊによりデータパス「ｍａｔｒｉｘ」による処理を開始する。これにより、同じ構成のデータパス「ｍａｔｒｉｘ」を異なるパラメータで動作させることが可能となり、新たなコンフィグレーションデータをロードする必要はない。【００６２】
ユーザソースコード９０をコンパイルして実行用プログラム９３を生成するステップＳＴ−Ｃにおいて、Ｃコンパイラ１０３は、「ｄｎａ＿ｓｅｔｐａｒｍｍａｃｒｏ＿ｃｐ１（  ）」というマクロ命令９０ｄおよび９０ｈにおいて変更されるパラメータの詳細は、データパス「ｍａｔｒｉｘ」のソースコード８９を参照することにより判明する。また、Ｃコンパイラ１０３は、それらのパラメータにより変更すべきデータが格納された、あるいは格納されるメモリの詳細なアドレスは、ソースコード９０に含まれたアクセス情報８８を参照することにより判明する。したがって、ユーザソースコード９０のユーザ命令には、パラメータの変更に係るレジスタあるいはメモリの詳細なアドレスが明示されていなくても、Ｃコンパイラ１０３は、パラメータを変更するマクロ命令９０ｄおよび９０ｈにより、該当するＰＥ２１を制御するコンフィグレーションメモリ６８の該当するアドレスの内容を書き換える実行用の命令を自動的に生成することができる。【００６３】
なお、上記では、本発明により、ＰＵ１の制御用のプロセッサ３５により実行されるプログラム（実行コード）を生成する例を示しているが、本発明により生成される活性化コードは制御用プロセッサの実行用プログラムに限定されない。再構成可能な回路区画であるマトリクス１９に適当なデータパスを構成することにより、マトリクス１９に制御用プロセッサとしての機能を与えて、マトリクス１９の他のデータパスを制御することが可能である。この場合は、本発明により生成される活性化コードは、マトリクス１９で実行されるものになる。さらに、各ＰＥ２１の制御ユニット６０にロードされて、ハードウェアの構成を制御するコンフィグレーション情報の中に、適切なタイミングでパラメータを変更してデータパスの機能を切り換える情報を埋め込むことも可能である。この場合は、コンフィグレーション情報が、活性化コード（活動化コード）としての機能も備えている。【００６４】
また、上記では、Ｃ言語によりソースプログラムを記述した例を説明しているが、ＪＡＶＡ（登録商標）などの他のソースプログラムを記述するのに適した言語を用いることは可能である。また、本発明の対象となるアプリケーションプログラムは、エレメントを接続することによりデータパスを構成可能なデータ処理装置において、処理の対象となるソフトウェア全体を含むものであり、ＯＳ、ＯＳを前提としたアプリケーションプログラム、さらにはデバッグ用のプログラムを含む。また、上記では、パラメータを変更するプログラムを例に説明しているが、データパスの処理結果が反映されるパラメータを読み出したり、書き換える処理を含むデバッグ用などのプログラムの設計および開発にも本発明を適用することが可能である。
【産業上の利用可能性】
【００６５】
以上に説明したように、本発明においては、パラメータに処理内容が変更されるような機能を実現するデータパスを、複数のエレメントの接続により実現するようにレイアウトを決定する際に、そのパラメータに関係するプロセッシングエレメントのコンフィグレーション情報が格納されるメモリ領域のアドレスを示すアクセス情報を生成し、ソースコードをコンパイルして活性化コードを生成する際に使用する。この生成方法は、電気あるいは電子回路、システムＬＳＩ、ＡＳＩＣ、ＦＰＧＡなどを含む半導体集積回路に限らず、電子・光集積回路など、適当な規模の論理および／または算術演算する機能を備えた複数のプロセッシングエレメントの接続によりデータパスを構成可能な全てのデータ処理システムに適応可能である。さらに、パーソナルコンピュータなどの適当なコンピュータとしての機能を備えた演算ユニットをエレメントとしてコンピュータネットワークで接続し、データパスを構成するような分散型のデータ処理システムにおいても本発明を適用することが可能である。
【図１】
0004208919.tif 000002
【図２】
0004208919.tif 000003
【図３】
0004208919.tif 000004
【図４】
0004208919.tif 000005
【図５】
0004208919.tif 000006
【図６】
0004208919.tif 000007
【図７】
0004208919.tif 000008
【図８】
0004208919.tif 000009
【図９】
0004208919.tif 000010