(57)【要約】データ処理装置は、設定可能な機能にしたがって、指令を実行するための設定可能な機能ユニットを有している。設定可能な機能ユニットは、前記設定可能な機能を実施するためのプログラム可能な論理動作を実行するために複数の独立した設定可能な論理ブロックを有している。設定可能な接続回路は、前記設定可能な論理ブロックと、前記設定可能な機能ユニットの入力と出力の両方との間に設けられている。これは、設定可能な論理ブロックにおける論理機能の分散の最適化を許容している。
2004516728.tif 000002
【特許請求の範囲】
【請求項１】
指令を含むプログラムを実行することが可能であると共に、前記指令の外部で設定可能な機能にしたがって前記指令を実行するための設定可能な機能ユニットを備えるデータ処理装置において、前記設定可能な機能ユニットは、
−前記指令によりそれぞれ指定された情報源と宛先レジスタに対するオペランドと結果とのビットをそれぞれ入出力するユニット入力およびユニット出力を有し、前記設定可能な機能ユニットは、
−前記設定可能な機能を実施するプログラム可能な論理演算を実行するため複数の独立した設定可能な論理ブロックと；
−前記設定可能な機能に基づいて、複数の前記論理ブロックの入力を前記ユニット入力からのビットに対して選択的に接続するため、前記ユニット入力および前記論理ブロック間の第１のプログラム可能な接続回路と；
−前記設定可能な機能に基づいて、前記ユニット出力のビットを複数の前記論理ブロックの出力に対して選択的に接続するため、前記論理ブロックおよび前記ユニット出力間の第２のプログラム可能な接続回路と；
を備えるデータ処理装置。
【請求項２】
各論理ブロックは複数の出力を有し、前記ユニット出力の複数のビットのうちの少なくとも１つは各論理ブロックの前記複数の出力のうちの少なくとも１つに排他的に接続可能であり、前記第２のプログラム可能な接続回路は、前記論理ブロックの選択された１つの出力を前記ユニット出力のビットの少なくとも１つに接続するマルチプレクサを備える請求項１に記載のデータ処理装置。
【請求項３】
各論理ブロックは複数の出力を有し、前記ユニット出力の複数のビットのそれぞれは、各論理ブロックの複数の出力のそれぞれの１つに排他的に接続可能であり、前記第２のプログラム可能な接続回路は、前記論理ブロックの選択されたそれぞれ１つの出力を前記ユニット出力の個別のビットに対して接続するそれぞれのマルチプレクサを備える請求項２に記載のデータ処理装置。
【請求項４】
前記第１および第２のプログラム可能な接続回路の何れか一方は、前記独立した設定可能な複数の論理ブロックの１つの入力または出力に対する固定されたプログラム可能でない接続と、前記入力および前記出力の残りに対するプログラム可能な接続と、を有している請求項１に記載のデータ処理装置。
【請求項５】
処理タスクを実行すると共に、幾つかのプログラム可能な論理ブロックを備える設定可能な機能ユニットを有する設定可能な処理装置をプログラムする方法であって、
−前記タスク内で発生してオペランドデータワードを要求すると共に結果データワードを生成する特別で複雑な動作を識別し、
−もしもプログラム可能な論理ブロックのうちの１つの中で共に実行されるのならば、前記複数のプログラム可能な論理ブロックの１つのブロックの容量を超える前記結果のビットのサブセット（下位集合）を生成する論理動作が、前記論理ブロックの異なる複数のブロックにわたって分散されるように、前記プログラム可能な論理ブロックの複数ビットの異なるブロックに対する結果の異なるビットを生成する論理動作の割当てを探索する、
−その論理動作に対して割り当てられた結果の複数のビットのための論理動作を実行するため、プログラム可能な論理ブロックのそれぞれをプログラムする、
−プログラム可能な論理ブロックに先立って複数の接続回路をプログラムし、引き続いて前記論理動作における前記オペランドの複数のビットを用いる前記プログラム可能な論理ブロックへの特別な指令のオペランドにビットの経路を決めるため、および、前記プログラム可能な論理ブロックが割り当てられる先の結果のビットの前記プログラム可能な論理ブロックの出力の経路を決めるために、前記プログラム可能な論理ブロックをプログラムする、
を含む方法。
【請求項６】
設定可能な機能ユニットを備える処理装置に伴うプログラムを実行する方法であって、設定可能な指令に応答して、
−前記設定可能な機能ユニット内に設定可能な指令のオペランドの複数ビットを入力するステップと；
−設定される機能に基づいて、論理ブロックの入力に対して前記オペランドの前記複数ビットを選択的に接続するステップと；
−前記設定可能な機能を実施するためにプログラム可能論理動作を実行するステップと；
−設定される機能に基づいて、前記論理ブロックの出力を結果のビットに選択的に接続するステップと；
を実行することを含む方法。
【発明の詳細な説明】
【０００１】
この発明の技術分野は、設定可能な（ｃｏｎｆｉｇｕｒａｂｌｅ）機能ユニットを備えるデータ処理装置である。
【０００２】
従来の処理装置は、“ＡＤＤ”，“ＬＯＡＤ”，“ＡＮＤ”，“ＳＨＩＦＴ”などのような一般的な用途・目的の指令（ｉｎｓｔｒｕｃｔｉｏｎ ）を含む所定の指令セットを有しており、これらの指令の中に特定されたオペランド（演算数）上の一般的な用途・目的の動作を実行している。一般的に言えば、何れかの処理タスクがこれらの一般的な用途・目的の指令を用いて実施可能である。１つまたはそれ以上の一般的な用途・目的の機能ユニットは、これらの一般的な用途・目的の指令の実行を提供している。
【０００３】
設定可能な機能ユニットを備えるデータ処理装置は、（この出願と同一の譲受人による（譲受人整理番号ＰＨＮ１７３０６））ＰＣＴ特許出願ＷＯ００／４９４９６から公知である。設定可能な機能ユニットは、処理装置にオペランドに関する幾つかの特別な用途・目的の動作を実行させる、特別な“設定可能な”指令を提供している。特別な用途・目的の動作は、実行されるべきプログラムまたはプログラムのセットのために特に定義されている。特別な用途・目的の動作は、１つの処理タスクまたは複数の処理タスクの実行を最適化するために選択されている。プログラマ（またはコンパイラ）は、この処理タスクまたは複数の処理タスクを行なうことを反復的に実行するべき、かつ、一般的な用途・目的の指令を智合うプログラムを実施するために相当の量の時間または資源を費やすであろう複合的な動作を識別している。その後、それが特別な指令に直面したときに、設定可能な機能ユニットにこの複合的な動作を実行させるように構成が設計されている。設定可能な機能ユニットは、その結果として構成されており、プログラムは複合的な動作（ｃｏｍｐｌｅｘ ｏｆ ｏｐｅｒａｔｉｏｎｓ）が実行されるこれらの点で特別な指令を含んで生成されている。
【０００４】
設定可能な機能ユニットは、例えばプログラム可能な論理ブロックのセットを用いて、前記特別な指令のオペランドの異なるビットのための多数の入力のそれぞれに接続された論理ゲート入力を有する例えば第１レベルの論理ゲート回路を含んで実施されている。ビットと論理ゲートの入力との間の接続は、構成の間の手段により活性化されたり不活性化されたりしても良い。同様に、論理ブロックは、第２およびさらなるレベルの論理ゲートを含んでいても良く、それらの論理ゲートは低いレベルの論理ゲートの出力に接続された入力を有している。これらの入力と出力との間の接続はまた、構成の間に活性化されたり不活性化されたりしても良い。その結果、特定の指令が実行されたときに、論理ゲートは前記指令の前記オペランドのビットの選択された１つを用いて動作する。
【０００５】
１セットになった幾つかの独立したプログラム可能な論理ブロックは、設定可能な機能ユニット内で、単一で大きくてたくさんの入力−出力を有するプログラム可能な論理ブロックというよりもむしろ、特定の指令に応答して実行される動作を構成するために用いられている。幾つかの低減された入力／出力と独立した論理ブロックとが結合された複雑性は、大きな１つのプログラム可能な論理ブロックの複雑性よりも、より小さくなっている。
【０００６】
特定の指令のオペランドからの複数ビットは、種々のプログラム可能な論理ブロックの複数の入力に対して経路を決められている。プログラム可能な論理ブロックの出力は、特定の指令の結果を生成する設定可能なユニットの出力の種々のビットに接続されている。特定の指令のオペランドのビットは、オペランドの適切なビットがこれらのオペランドのビットに依存する結果のビットを生成するプログラム可能なこれらの論理ブロックに供給されることを確実にするために、適切なプログラム可能な論理ブロックへの経路を付けられている。
【０００７】
このために、設定可能な機能ユニットは、この機能ユニットのオペランド入力とプログラム可能な論理ブロックとの間のプログラム可能な接続回路を含んでいる。構成の間に、このプログラム可能な接続回路が構成されているので、設定された動作により要求された接続を提供している。
【０００８】
所定の複雑性を有するプログラム可能な論理ブロックは、有るレベルの複雑性までの動作を実行するのみである。これは、設定可能な機能ユニットが実行するために構成されている動作の複雑性を限界付けている。
【０００９】
特に、この発明の目的は、より大きな複雑性と所定の複雑性の所定のプログラム可能な論理ブロックとを備えた動作を実行することのできる設定可能な機能ユニットを伴うデータ処理装置を提供することにある。
【００１０】
この発明に係るデータ処理装置は、請求項１に記載されている。この発明によれば、第２の接続回路は、プログラム可能な論理ブロックの出力と、前記特定の指令の結果を出力する機能ユニットの出力との間に設けられている。したがって２つの位置に接続回路が設けられており、両者はまずプログラム可能な論理ブロックに先立って設けられ、プログラム可能な論理ブロックの後にも設けられている。第１のサイト（位置）では、これは冗長で不必要なようにみえるが、その理由は、もしもオペランドの何れかのビットが何れかのプログラム可能な論理ブロックに対して経路を決めることができるならば、その後にこのビットがこの指令の結果の特定のビットを生成する何れかのプログラム可能な論理ブロックについて簡単に経路を決めることができるからである。プログラム可能な論理ブロックの出力についてもう１度経路を決める必要はないように見える。
【００１１】
しかしながら、プログラム可能な論理ブロックの出力における固定された経路を決めることは、実行することができる動作の最大限の複雑性を限定する。第１セットの特定指令結果の複数ビットのそれぞれがプログラム可能な論理ブロックにおける大きな複雑さを要求し、第２セットの複数ビットのそれぞれが小さな複雑さを要求しているものと仮定する。もしも第１セットの複数ビットが第１のプログラム可能な論理ブロックにより生成されなければならず、第２セットの複数ビットが第２のプログラム可能な論理ブロックにより生成されなければならないのならば、第１のプログラム可能な論理ブロックは、第２のプログラム可能な論理ブロックが充分に利用されないときに、不十分な容量を有するかもしれない。プログラム可能な論理ブロックの出力と設定可能な機能ユニットの結果に関する出力との間の接続を構成することにより、指令の結果の複数ビットを計算することが種々のプログラム可能な論理ブロックにわたって分散されることができるので、構成されるべき必要性のある機能ユニットのための複雑な動作を平均化することができることが可能となる。したがって、異なる結果の複数ビットのための動作のより複雑な結合は、結果としての複数ビットとプログラム可能な論理ブロックの出力との間の固定された結合が存在しているプロセッサ内よりもむしろ実行可能となる。
【００１２】
原理的には、完全な接続ネットワークは、プログラム可能な論理ブロックの出力のうちの何れか１つを、結果の複数ビットのうちの何れか１つに接続できるように提供されていても良い。しかしながら、１つの実施形態において、結果の各ビットは、各プログラム可能な論理ブロックの出力の１つのビットと関係付けられている。接続回路は、ビット用のマルチプレクサを備え、このマルチプレクサはプログラム可能な論理ブロックのそれぞれのビットの１つのビットに接続された入力を有している。マルチプレクサによりなされたこの接続は設定可能なものである。プログラム可能な論理ブロック前記結果のそれぞれのビットを生成するとき、プログラム可能な論理ブロックは、ビットを生成する論理回路が個々のビットに関して前記マルチプレクサに接続された出力に接続された回路となるように構成されている。したがって、何れかの要求された接続は、プログラム可能な論理ブロックと機能ユニットの出力との間の接続回路の上限のみにより実現可能である。
【００１３】
【発明の実施の形態】
この発明に係るデータ処理装置のこれらおよび他の有利なアスペクト（態様）は、添付の図面を用いて、より詳細に説明されるであろう。
【００１４】
図１はこの発明の実施例によるデータ処理装置を示している。この装置は、指令出力ユニット１０，レジスタファイル１２，機能ユニット１４ａ，１４ｂ、設定可能な機能ユニット１６を備えている。指令出力ユニット１０は、機能ユニット１４ａ，１４ｂと１６に接続された出力を有している。機能ユニット１４ａ，１４ｂ，１６は、レジスタファイル１２の読出しポートおよび書込みポートに接続される複数ポートを有している。
【００１５】
一例として示された２つの機能ユニット１４ａ，１４ｂは、例えばＡＬＵ（算術的論理ユニット― Ａｒｉｔｈｍｅｔｉｃ−Ｌｏｇｉｃ Ｕｎｉｔ―）またはメモリ負荷格納ユニットのような標準的な非設定可能な機能ユニット１４ａ，１４ｂである。処理装置は指令を受け入れ可能でレジスタファイル１２からのオペランドに関する動作を実行することができるが、実施例の方法によりたった１つの設定可能な機能ユニットのみが示されている、このような設定可能な機能ユニット１４をよりたくさん含むようにしても良い。
【００１６】
設定可能な機能ユニット１６は、第１および第２の入力ポート１６０ａ，１６０ｂ、第１の接続回路１６２，４つのプログラム可能な論理ブロック１６４ａ〜１６４ｄ、第２の接続回路１６６、出力ポート１６８および構成制御回路１６９を備えている。第１，第２の入力ポート１６０ａ，１６０ｂは、第１の接続回路１６２，プログラム可能な論理ブロック１６４ａ〜１６４ｄを介してレジスタファイル１２の読出しポートと相互接続している。出力ポート１６８は第２の接続回路１６６，プログラム可能な論理ブロック１６４ａ〜１６４ｄを介してレジスタファイル１２の書込みポートに相互接続されている。構成制御回路１６９は、第１の接続回路１６２，プログラム可能な論理ブロック１６４ａ〜１６４ｄおよび第２の接続回路１６６に接続された構成制御出力を有している。
【００１７】
動作において、指令出力ユニット１０は、機能ユニット１４ａ，１４ｂ，１６に対して連続する指令を出力する。（この目的のため、指令出力ユニット１０は図１には示されていないが、例えば、指令メモリ、指令キャッシュ、プログラムカウンタ、ブランチユニット等を備えていても良い。）指令は、例えば、ＶＬＩＷまたはスーパスケーラタイプのアーキテクチャの場合、機能ユニット１４ａ，１４ｂ，１６に並列に出力されても良いし、指令出力ユニット１０が機能ユニット１４ａ，１４ｂ、１６のうちの何れかが指令を実行しなければならないことを選択する場合には直列に出力されても良い。機能ユニット１４ａ，１４ｂ，１６は、指令からレジスタファイル１２に対するこれらのポートへとオペランドおよび結果レジスタ選択コードを通過させている（ポートは、セットのうちのたった１つが同時にレジスタファイル１２にアクセスしている限りは、異なる機能ユニット１４ａ，１４ｂ，１６のセットの間で共有されていても良い）。機能ユニット１４ａ，１４ｂ，１６は、それらが指令出力ユニット１０により実行するように命令された指令を、指令の中で特定されたように、この指令によりアドレスされたレジスタファイル１２を形成するオペランドを用いると共にレジスタファイル１２への結果を書き込むように実行している。
【００１８】
回路の設定可能な機能ユニット１６は、構成制御回路１６９により供給される構成データに基づいて指令を実行する。この構成データは、（図示されない）負荷接続、例えば指令出力ユニット１０からの特別な構成データ負荷指令の制御の下の接続を介して、またはスキャンチェインなどを介して、構成制御回路１６０内にロード（負荷）される。
【００１９】
第１接続回路１６２は、入力ポート１６０ａ，１６０ｂでのオペランドから、プログラム可能な論理ブロック１６４ａ〜１６４ｄの入力の選択された幾つかに対して、ビットを通過させる。選択は、個性制御回路の制御の下に行なわれる。原理的には、何れかのビットが何れかのプログラム可能な論理ブロック１６４ａ〜１６４ｄの何れかの入力へと通過させられても良い。
【００２０】
プログラム可能な論理ブロックは、例えばＰＬＤ用、ＰＬＡ用などの従来からのプログラム可能な論理装置としてそれ自体が公知である構造を有していても良い。プログラム可能な論理ブロック１６４ａ〜１６４ｄは、オペランドのビット上の論理動作を実行する。これらの論理動作は、それらの入力信号の（Ｎ）ＯＲ論理、（Ｎ）ＡＮＤ論理、排他的ＯＲ論理などを含んでいる。これらの演算の結果は、プログラム可能な論理ブロック１６４ａ〜１６４ｄ内での同様の演算に再び用いられても良い。これらの論理演算は、例えばプログラム可能な論理ブロック１６４ａ〜１６４ｄの入力に、または、プログラム可能な論理ブロック１６４ａ〜１６４ｄの他の論理ゲートに、接続された論理ゲートによって行なわれている。これらの接続は構成制御回路１６９の制御の下、活性化または不活性化されている。設定可能な機能ユニット１６が指令を実行するとき、オペランドからのビット信号は、接続と、構成制御回路１６９を介して構成されるような論理ゲートと、を流れる。
【００２１】
好ましくは、プログラム可能な論理ブロック１６４ａ〜１６４ｄは、それらの出力に対して対称である。すなわち、これらの出力は、もしも論理関係が特定の経路内で第１の入力セットでの信号に依存する第１の出力での信号を生成するように実現可能であるならば、その経路内でのこの第１の入力セットでの信号に依存する他の出力を生成することもまた可能である。これは、有力な設計の自由度のために、プログラム可能な論理ブロック１６４ａ〜１６４ｄに対する論理機能の位置付けを提供している。したがって、プログラム可能な論理ブロック１６４ａ〜１６４ｄの効果的な使用を行なわせる必要があるのならば、異なるプログラム可能な論理ブロック１６４ａ〜１６４ｄについての結果における異なるビットを実現する必要のあるプログラム可能な論理を分散することがより容易になる。好ましくは、プログラム可能な論理はまた、以下の意味においては少なくともそれらの出力のグループに関して対称なものであり、その意味とは、もしも特定の論理関係が入力のグループからの入力信号の機能として実現可能であるならば、同一の論理関係がそのグループ内の他の入力からの入力信号の機能として実現可能であることである。これはマッピング（位置づけ）の自由度を提供している。
【００２２】
第２の接続回路１６６は、プログラム可能な論理ブロック１６４ａ〜１６４ｄの出力からの信号を、設定可能な機能ユニット１６の出力ポート１６８で生成された結果におけるビットのうちの選択されたものに対して通過させる。プログラム可能な論理ブロック１６４ａ〜１６４ｄの出力が接続された結果のビットは、構成制御回路１６９制御の下で選択される。これは、個別のビットのレベルで独立させて構成可能である。出力ポート１６８は、レジスタファイル１２の書込みポートに対して結果のビットを通過させ、ここでこの結果は、指令により指図されたレジスタ内に格納されて、機能ユニット１４ａ，１４ｂ，１６による他の指令の実行の間にオペランドとして、後になって使用される。
【００２３】
この発明から逸脱することなく、（図示されない）追加のプログラム可能な論理が、プログラム可能な論理ブロック１６４ａ〜１６４ｄの出力の論理機能接続からの結果のビットを形成するために、第２の接続回路１６６と出力ポートとの間に付加されていても良い。
【００２４】
図２は、図１の設定可能な機能ユニットにおいて第２の接続回路として用いられる接続回路２０を示している。この接続回路２０は、それぞれがレジスタファイル１２へと通過させられた結果に含まれる異なるビットに接続されているビット出力を備える、複数のマルチプレクサ２２ａ〜２２ｃを備えている。マルチプレクサ２２ａ〜２２ｃは、プログラム可能な論理ブロック１６４ａ〜１６４ｄの出力に接続された入力を有している。各マルチプレクサ２２ａ〜２２ｃは、構成制御回路１６９（図２では図示されず）からの構成データの制御の下で、その出力に対してその入力のうちから選択された１つの入力からの信号を経路付けるために動作している。
【００２５】
この実施形態においては、各マルチプレクサは、各機能論理ブロック１６４ａ〜１６４ｄのただ１つの出力に接続されている。例えば、各プログラム可能な論理ブロック１６４ａ〜１６４ｄの第１の出力は、マルチプレクサ２２ａ〜２２ｃの第１のマルチプレクサ２２ａに接続され、各プログラム可能な論理ブロック１６４ａ〜１６４ｄの第２の出力は、マルチプレクサ２２ａ〜２２ｃの第２のマルチプレクサ２２ｂに接続されて、以下同様に接続されている。これは、接続回路２０のために必要となるハードウェアの量を低減させる。設定可能な機能ユニット１６は、特定の指令を実行するために構成されており、結果に含まれるビットが特定の論理機能にしたがったオペランドに含まれるビットに依存しなければならないときに、プログラム可能な論理ブロック１６４ａ〜１６４ｄは、前記結果に含まれるこのビットに接続されているマルチプレクサ２２ａ〜２２ｃの何れかに接続された出力における信号を生成するために前記論理機能が実行されるように構成されている。
【００２６】
プログラム可能な論理ブロック１６４ａ〜１６４ｄの出力を結果のビットへと接続する他の方法もまた用いることができ、例えば、この接続の仕方は、前記出力の一部分と前記結果のビットの一部分との間の固定された接続を用いることであったり、前記出力の残りの部分と前記結果のビットの残りの部分との間のより完全な設定可能な接続を用いることであったりしても良い。その結果、第１の接続回路１６２およびプログラム可能な論理ブロック１６４ａ〜１６４ｄは、出力に対する固定された接続を有する結果のビットのための必要な論理がこれらの出力に対して接続されているプログラム可能な論理ゲート内で設定可能となるように構成されている。その他の結果ビットのための、論理の残り部分は、ブロック１６４ａ〜１６４ｄ内の残りのプログラム可能な論理の全体にわたって分散されて、前記接続回路１６６を介して適切な結果のビットに接続されるプログラム可能な論理ブロック１６４ａ〜１６４ｄの出力における結果ビットの出力に結果として導くことになる。
【００２７】
これらの実施例のそれぞれにおいて、制限された経路指定の能力を有する第２の接続回路１６６を用いることができ、その理由は、プログラム可能な論理ブロック１６４ａ〜１６４ｄおよび第１の接続回路１６２の全体の構成における分散の融通性が適切な結果のビットへと接続することのできるプログラム可能な論理ブロック１６４ａ〜１６４ｄの出力に対する結果のビットの経路を指定することを可能にさせている。経路指定の能力の制限は、回路構成の必要な量と第２の接続回路１６６の遅延とを低減している。同様に、第１の接続回路１６２の経路指定の能力が低減されるかもしれない。
【００２８】
最大限のプログラム可能性のために、第１の接続回路１６２または第２の接続回路１６６の何れかは好ましくは機能ブロック１６４ａ〜１６４ｄの何れか１つの入力または何れか１つの出力へと固定された経路の設定を有しており、他の入力および出力はオペランド入力および結果のビットへと任意的に経路設定可能である。
【００２９】
図３は、設定可能な機能ユニットを構成する方法のフローチャートを示している。好ましくは、この方法は図１のデータ処理装置用のプログラムを生成するホストコンピュータにより実行されている。第１のステップ３１において、ホストコンピュータは前記データ処理装置により実行されなければならない処理タスクの記述を受信する。この記述は、“Ｃ”言語のような、高度のプログラム言語でのプログラムの形式を取ることができる。
【００３０】
第２のステップ３２において、ホストコンピュータは、前記処理タスクを実施するために行なわれなければならない基本動作のセットを決定している。これは例えば、高度の言語におけるプログラムの編集により行なうことができる。原理的には、それぞれの基本動作は、汎用目的の機能ユニット１４ａ、１４ｂにより実行することができる１つまたはそれ以上の機械の指令へとマップされることができる。
【００３１】
第３のステップ３３において、ホストコンピュータは、設定可能な機能ユニット１６により実行されるべき指令としてそれ自身を実行へと適合させる、複合的な動作（ｃｏｍｐｌｅｘｅｓ ｏｆ ｏｐｅｒａｔｉｏｎｓ）の候補（ｃａｎｄｉｄａｔｅ）を識別している。ここで用いられる、“複合的な”という用語は、他の動作のオペランドとしての１つの動作の結果の使用を通して、複数の動作とそれらの相互依存関係とを指し示すものである。このような識別は設定可能な機能ユニットを有する公知のコンピュータで行なわれるものとして、それ自体は公知のものである。これは例えば、フローグラフのようなプログラム用のタスクを表現することにより実現され、このタスクにおいては、ノードが（おそらくはビットレベルにおける）動作を表現すると共にリンクが従属性を表現している。複合体はこのフローグラフのサブグラフ（ｓｕｂｇｒａｐｈｓ／サブセット）である。タスクの実行プロファイルの手段によりしばしば実行され、またはプログラムにおけるたくさんの位置を生じさせる、制限された数の入力および出力を有するサブグラフを識別することができる。このようなサブグラフは、特定の指令のための候補である複合的な動作を表現している。
【００３２】
第３のステップ３４において、ホストコンピュータは、設定可能な機能ユニット用の構成を発見するよう試みている。すなわち、ホストコンピュータは、第１の接続回路１６２，プログラム可能機能ブロック１６４ａ〜１６４ｄおよび第２の接続回路１６６を発見するように試みているので、入力ポート１６０ａ，１６０ｂにおけるオペランドと出力ポート１６８における結果との間の関係は、前記候補のために必要とされるものとなっている。原理的には、ホストコンピュータは、結果のビットのそれぞれの計算のために、プログラム可能な論理ブロック１６４ａ〜１６４ｄにおける異なる論理回路に対して論理的な動作をマップしなければならない。論理動作が異なる論理回路に対してマップされる、異なるマッピングが可能である。ホストコンピュータは、結果の全てのビットがプログラム可能な論理ブロック内で有用な論理回路について計算可能である、このようなマッピングを発見することを試みている。
【００３３】
この発明の実施形態によれば、ホストコンピュータは、プログラム可能な論理ブロック１６４ａ〜１６４ｄの異なるそれぞれに対して結果のビット用の論理動作をマッピングすることを検討している。これは例えば、プログラム可能な論理ブロック１６４ａ〜１６４ｄに対する結果のビットの割り当てをまず生成することにより行なわれている。したがって、プログラム可能な論理ブロック１６４ａ〜１６４ｄのそれぞれのために、ホストコンピュータがそのブロック１６４ａ，１６４ｂに割り当てられた結果のビットのために必要とされる論理的な動作に対して論理回路を割り当てている。これは、結果のビットの他のものの後で１つのビットのために行なわれる。全ての結果のビットのために論理回路を割り当てることが可能であるのならば、マッピングが続けられる。もしも可能でないのならば、全ての結果のビット用の論理動作が実行されてしまう前に、適当（充分）でない論理回路がプログラム可能な論理ブロック１６４ａ，１６４ｂ内に残されているので、このマッピングは機能しなくなり、ホストコンピュータは、プログラム可能な論理ブロック１６４ａ〜１６４ｄに対して結果のビットの異なる割り当てを試みることになる。したがって、ホストコンピュータは、マッピングが成功するまで、論理ブロックに対して全ての結果の可能な割り当てを試みることになり、または、全ての割り当てが失敗するまで割り当てを試みた場合には、ホストコンピュータは構成を発見することができない。
【００３４】
種々のプログラム可能な論理ブロック１６４ａ〜１６４ｄに対する結果のビットの割り当ての選択の結果として、第２の接続回路１６６はどのようにして、プログラム可能な論理ブロック１６４ａ〜１６４ｄから出力ポートへのビットを経路付けるために構成するべきかが引き続いて行なわれる。同様に、論理回路の割り当てからは、第１の接続回路が入力ポート１６０ａからプログラム可能な論理ブロック１６４ａ〜１６４ｄへのオペランドのビットの経路付けを行なうためにどのように構成されるべきかの判断が引き続いて行なわれる。
【００３５】
第５のステップ３５において、ホストコンピュータは、構成を発見することが既に不可能となっているのか否かを検出する。もしも発見が不可能となっているならば、この方法は第３のステップ３３に戻り、他の候補による複合的な動作が選択される。もしも前記候補による複合的な動作を実行する構成を発見することが可能であるならば、ホストコンピュータはまた、後になって最も効果的な候補を選択するために、他の設定可能な候補を発見するために第３のステップに戻るようにしても良い。何れの場合でも、この方法は、もしも少なくとも１つの設定可能な候補が発見されたならば、第６のステップ３６へと進む。
【００３６】
この第６のステップ３６において、設定可能な機能ユニットは、従前のステップにおいて発見された候補に従って構成されている。これは、プログラム可能な論理ブロック１６４ａ〜１６４ｄおよび第１，第２の接続回路１６２，１６６が第４のステップで選択されたように構成されていることを意味している。
【００３７】
第７のステップ３７において、機能ユニット１４ａ，１４ｂ，１６のための指令のプログラムが、処理タスクを実行するために生成されている。このプログラムにおいて、第３のステップ３３において既に選択されていた複合的な動作は、設定可能な機能ユニット１６に複合的な動作を実行させる特別な指令により置き換えられている。このプログラムは、実行のための指令出力ユニット１０内にダウンロードされる。
【００３８】
もちろん、熟練者は図３のフローチャートからの種々の逸脱が可能であることを正しく評価することであろう。例えば、複合的な動作の候補は、単一のプログラムのためよりもむしろ、プログラムのセットのために選択されていても良い。他の実施例において、構成を選択するステップ３４は、種々のハードウェアの制約を負わなくてはならないかもしれない。特別な指令を有するプログラムは、設定可能な機能ユニット１６を構成する前に生成されていても良い。構成は、永続的なものであっても良いし、処理装置の製造中またはタスクと独立して行なわれても良いし、タスクが実行される前でもまたはタスクの実行中でさえも行なわれても良いし、異なる設定可能な指令から利益を受けるタスクの前毎に実行されても良い。設定可能な機能ユニットの実施形態において、少なくともプログラム可能な論理ブロック１６４ａ〜１６４ｄはまた、指令出力ユニット１０からのオプコード（ｏｐｃｏｄｅ）情報を受信している。この場合、プログラム可能な論理ブロック１６４ａ〜１６４ｄの出力信号は、同一の構成を有する１つの設定可能な指令以上を実行することを可能とする、前記オプコードに依存して生成することができる。したがって、幾つかの設定可能な指令が有効に存在しており、異なる指令のオプコードは、設定可能な指令が実行されるべきである設定可能な機能ユニットに信号を送っている。
【図面の簡単な説明】
【図１】
この発明の一実施例に係るデータ処理装置を示すブロック図である。
【図２】
この発明の一実施例に係る接続回路を示すブロック図である。
【図３】
この発明の一実施例に係るデータ処理装置を構成しプログラムする方法を示すフローチャートである。
【符号の説明】
１０  指令出力ユニット
１６  設定可能な機能ユニット
１６２  第１のプログラム可能な接続回路
１６４ａ〜１６４ｄ  設定可能な論理ブロック
１６６  第２のプログラム可能な接続回路
２２ａ〜２２ｃ  マルチプレクサ
【国際公開パンフレット】
2004516728.tif 000003
2004516728.tif 000004
2004516728.tif 000005
2004516728.tif 000006
2004516728.tif 000007
2004516728.tif 000008
2004516728.tif 000009
2004516728.tif 000010
2004516728.tif 000011
2004516728.tif 000012
2004516728.tif 000013
2004516728.tif 000014
2004516728.tif 000015
2004516728.tif 000016
2004516728.tif 000017
【国際調査報告】
2004516728.tif 000018
2004516728.tif 000019
2004516728.tif 000020