JP4022147B2 - 設定可能な機能ユニットを備えるデータ処理装置 - Google Patents
設定可能な機能ユニットを備えるデータ処理装置 Download PDFInfo
- Publication number
- JP4022147B2 JP4022147B2 JP2002551694A JP2002551694A JP4022147B2 JP 4022147 B2 JP4022147 B2 JP 4022147B2 JP 2002551694 A JP2002551694 A JP 2002551694A JP 2002551694 A JP2002551694 A JP 2002551694A JP 4022147 B2 JP4022147 B2 JP 4022147B2
- Authority
- JP
- Japan
- Prior art keywords
- bits
- programmable
- output
- blocks
- logical
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 2
- 230000009471 action Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000013507 mapping Methods 0.000 description 7
- 239000002131 composite material Substances 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
- G06F9/3897—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Logic Circuits (AREA)
- Microcomputers (AREA)
Description
この発明の技術分野は、設定可能な(configurable)機能ユニットを備えるデータ処理装置である。
【0002】
従来の処理装置は、“ADD”,“LOAD”,“AND”,“SHIFT”などのような一般的な用途・目的の指令(instruction )を含む所定の指令セットを有しており、これらの指令の中に特定されたオペランド(演算数)上の一般的な用途・目的の動作を実行している。一般的に言えば、何れかの処理タスクがこれらの一般的な用途・目的の指令を用いて実施可能である。1つまたはそれ以上の一般的な用途・目的の機能ユニットは、これらの一般的な用途・目的の指令の実行を提供している。
【0003】
設定可能な機能ユニットを備えるデータ処理装置は、(この出願と同一の譲受人による(譲受人整理番号PHN17306))PCT特許出願WO00/49496から公知である。設定可能な機能ユニットは、処理装置にオペランドに関する幾つかの特別な用途・目的の動作を実行させる、特別な“設定可能な”指令を提供している。特別な用途・目的の動作は、実行されるべきプログラムまたはプログラムのセットのために特に定義されている。特別な用途・目的の動作は、1つの処理タスクまたは複数の処理タスクの実行を最適化するために選択されている。プログラマ(またはコンパイラ)は、この処理タスクまたは複数の処理タスクを行なうことを反復的に実行するべき、かつ、一般的な用途・目的の指令を智合うプログラムを実施するために相当の量の時間または資源を費やすであろう複合的な動作を識別している。その後、それが特別な指令に直面したときに、設定可能な機能ユニットにこの複合的な動作を実行させるように構成が設計されている。設定可能な機能ユニットは、その結果として構成されており、プログラムは複合的な動作(complex of operations)が実行されるこれらの点で特別な指令を含んで生成されている。
【0004】
設定可能な機能ユニットは、例えばプログラム可能な論理ブロックのセットを用いて、前記特別な指令のオペランドの異なるビットのための多数の入力のそれぞれに接続された論理ゲート入力を有する例えば第1レベルの論理ゲート回路を含んで実施されている。ビットと論理ゲートの入力との間の接続は、構成の間の手段により活性化されたり不活性化されたりしても良い。同様に、論理ブロックは、第2およびさらなるレベルの論理ゲートを含んでいても良く、それらの論理ゲートは低いレベルの論理ゲートの出力に接続された入力を有している。これらの入力と出力との間の接続はまた、構成の間に活性化されたり不活性化されたりしても良い。その結果、特定の指令が実行されたときに、論理ゲートは前記指令の前記オペランドのビットの選択された1つを用いて動作する。
【0005】
1セットになった幾つかの独立したプログラム可能な論理ブロックは、設定可能な機能ユニット内で、単一で大きくてたくさんの入力−出力を有するプログラム可能な論理ブロックというよりもむしろ、特定の指令に応答して実行される動作を構成するために用いられている。幾つかの低減された入力/出力と独立した論理ブロックとが結合された複雑性は、大きな1つのプログラム可能な論理ブロックの複雑性よりも、より小さくなっている。
【0006】
特定の指令のオペランドからの複数ビットは、種々のプログラム可能な論理ブロックの複数の入力に対して経路を決められている。プログラム可能な論理ブロックの出力は、特定の指令の結果を生成する設定可能なユニットの出力の種々のビットに接続されている。特定の指令のオペランドのビットは、オペランドの適切なビットがこれらのオペランドのビットに依存する結果のビットを生成するプログラム可能なこれらの論理ブロックに供給されることを確実にするために、適切なプログラム可能な論理ブロックへの経路を付けられている。
【0007】
このために、設定可能な機能ユニットは、この機能ユニットのオペランド入力とプログラム可能な論理ブロックとの間のプログラム可能な接続回路を含んでいる。構成の間に、このプログラム可能な接続回路が構成されているので、設定された動作により要求された接続を提供している。
【0008】
所定の複雑性を有するプログラム可能な論理ブロックは、有るレベルの複雑性までの動作を実行するのみである。これは、設定可能な機能ユニットが実行するために構成されている動作の複雑性を限界付けている。
【0009】
特に、この発明の目的は、より大きな複雑性と所定の複雑性の所定のプログラム可能な論理ブロックとを備えた動作を実行することのできる設定可能な機能ユニットを伴うデータ処理装置を提供することにある。
【0010】
この発明に係るデータ処理装置は、請求項1に記載されている。この発明によれば、第2の接続回路は、プログラム可能な論理ブロックの出力と、前記特定の指令の結果を出力する機能ユニットの出力との間に設けられている。したがって2つの位置に接続回路が設けられており、両者はまずプログラム可能な論理ブロックに先立って設けられ、プログラム可能な論理ブロックの後にも設けられている。第1のサイト(位置)では、これは冗長で不必要なようにみえるが、その理由は、もしもオペランドの何れかのビットが何れかのプログラム可能な論理ブロックに対して経路を決めることができるならば、その後にこのビットがこの指令の結果の特定のビットを生成する何れかのプログラム可能な論理ブロックについて簡単に経路を決めることができるからである。プログラム可能な論理ブロックの出力についてもう1度経路を決める必要はないように見える。
【0011】
しかしながら、プログラム可能な論理ブロックの出力における固定された経路を決めることは、実行することができる動作の最大限の複雑性を限定する。第1セットの特定指令結果の複数ビットのそれぞれがプログラム可能な論理ブロックにおける大きな複雑さを要求し、第2セットの複数ビットのそれぞれが小さな複雑さを要求しているものと仮定する。もしも第1セットの複数ビットが第1のプログラム可能な論理ブロックにより生成されなければならず、第2セットの複数ビットが第2のプログラム可能な論理ブロックにより生成されなければならないのならば、第1のプログラム可能な論理ブロックは、第2のプログラム可能な論理ブロックが充分に利用されないときに、不十分な容量を有するかもしれない。プログラム可能な論理ブロックの出力と設定可能な機能ユニットの結果に関する出力との間の接続を構成することにより、指令の結果の複数ビットを計算することが種々のプログラム可能な論理ブロックにわたって分散されることができるので、構成されるべき必要性のある機能ユニットのための複雑な動作を平均化することができることが可能となる。したがって、異なる結果の複数ビットのための動作のより複雑な結合は、結果としての複数ビットとプログラム可能な論理ブロックの出力との間の固定された結合が存在しているプロセッサ内よりもむしろ実行可能となる。
【0012】
原理的には、完全な接続ネットワークは、プログラム可能な論理ブロックの出力のうちの何れか1つを、結果の複数ビットのうちの何れか1つに接続できるように提供されていても良い。しかしながら、1つの実施形態において、結果の各ビットは、各プログラム可能な論理ブロックの出力の1つのビットと関係付けられている。接続回路は、ビット用のマルチプレクサを備え、このマルチプレクサはプログラム可能な論理ブロックのそれぞれのビットの1つのビットに接続された入力を有している。マルチプレクサによりなされたこの接続は設定可能なものである。プログラム可能な論理ブロック前記結果のそれぞれのビットを生成するとき、プログラム可能な論理ブロックは、ビットを生成する論理回路が個々のビットに関して前記マルチプレクサに接続された出力に接続された回路となるように構成されている。したがって、何れかの要求された接続は、プログラム可能な論理ブロックと機能ユニットの出力との間の接続回路の上限のみにより実現可能である。
【0013】
【発明の実施の形態】
この発明に係るデータ処理装置のこれらおよび他の有利なアスペクト(態様)は、添付の図面を用いて、より詳細に説明されるであろう。
【0014】
図1はこの発明の実施例によるデータ処理装置を示している。この装置は、指令出力ユニット10,レジスタファイル12,機能ユニット14a,14b、設定可能な機能ユニット16を備えている。指令出力ユニット10は、機能ユニット14a,14bと16に接続された出力を有している。機能ユニット14a,14b,16は、レジスタファイル12の読出しポートおよび書込みポートに接続される複数ポートを有している。
【0015】
一例として示された2つの機能ユニット14a,14bは、例えばALU(算術的論理ユニット― Arithmetic-Logic Unit―)またはメモリ負荷格納ユニットのような標準的な非設定可能な機能ユニット14a,14bである。処理装置は指令を受け入れ可能でレジスタファイル12からのオペランドに関する動作を実行することができるが、実施例の方法によりたった1つの設定可能な機能ユニットのみが示されている、このような設定可能な機能ユニット14をよりたくさん含むようにしても良い。
【0016】
設定可能な機能ユニット16は、第1および第2の入力ポート160a,160b、第1の接続回路162,4つのプログラム可能な論理ブロック164a〜164d、第2の接続回路166、出力ポート168および構成制御回路169を備えている。第1,第2の入力ポート160a,160bは、第1の接続回路162,プログラム可能な論理ブロック164a〜164dを介してレジスタファイル12の読出しポートと相互接続している。出力ポート168は第2の接続回路166,プログラム可能な論理ブロック164a〜164dを介してレジスタファイル12の書込みポートに相互接続されている。構成制御回路169は、第1の接続回路162,プログラム可能な論理ブロック164a〜164dおよび第2の接続回路166に接続された構成制御出力を有している。
【0017】
動作において、指令出力ユニット10は、機能ユニット14a,14b,16に対して連続する指令を出力する。(この目的のため、指令出力ユニット10は図1には示されていないが、例えば、指令メモリ、指令キャッシュ、プログラムカウンタ、ブランチユニット等を備えていても良い。)指令は、例えば、VLIWまたはスーパスケーラタイプのアーキテクチャの場合、機能ユニット14a,14b,16に並列に出力されても良いし、指令出力ユニット10が機能ユニット14a,14b、16のうちの何れかが指令を実行しなければならないことを選択する場合には直列に出力されても良い。機能ユニット14a,14b,16は、指令からレジスタファイル12に対するこれらのポートへとオペランドおよび結果レジスタ選択コードを通過させている(ポートは、セットのうちのたった1つが同時にレジスタファイル12にアクセスしている限りは、異なる機能ユニット14a,14b,16のセットの間で共有されていても良い)。機能ユニット14a,14b,16は、それらが指令出力ユニット10により実行するように命令された指令を、指令の中で特定されたように、この指令によりアドレスされたレジスタファイル12を形成するオペランドを用いると共にレジスタファイル12への結果を書き込むように実行している。
【0018】
回路の設定可能な機能ユニット16は、構成制御回路169により供給される構成データに基づいて指令を実行する。この構成データは、(図示されない)負荷接続、例えば指令出力ユニット10からの特別な構成データ負荷指令の制御の下の接続を介して、またはスキャンチェインなどを介して、構成制御回路160内にロード(負荷)される。
【0019】
第1接続回路162は、入力ポート160a,160bでのオペランドから、プログラム可能な論理ブロック164a〜164dの入力の選択された幾つかに対して、ビットを通過させる。選択は、個性制御回路の制御の下に行なわれる。原理的には、何れかのビットが何れかのプログラム可能な論理ブロック164a〜164dの何れかの入力へと通過させられても良い。
【0020】
プログラム可能な論理ブロックは、例えばPLD用、PLA用などの従来からのプログラム可能な論理装置としてそれ自体が公知である構造を有していても良い。プログラム可能な論理ブロック164a〜164dは、オペランドのビット上の論理動作を実行する。これらの論理動作は、それらの入力信号の(N)OR論理、(N)AND論理、排他的OR論理などを含んでいる。これらの演算の結果は、プログラム可能な論理ブロック164a〜164d内での同様の演算に再び用いられても良い。これらの論理演算は、例えばプログラム可能な論理ブロック164a〜164dの入力に、または、プログラム可能な論理ブロック164a〜164dの他の論理ゲートに、接続された論理ゲートによって行なわれている。これらの接続は構成制御回路169の制御の下、活性化または不活性化されている。設定可能な機能ユニット16が指令を実行するとき、オペランドからのビット信号は、接続と、構成制御回路169を介して構成されるような論理ゲートと、を流れる。
【0021】
好ましくは、プログラム可能な論理ブロック164a〜164dは、それらの出力に対して対称である。すなわち、これらの出力は、もしも論理関係が特定の経路内で第1の入力セットでの信号に依存する第1の出力での信号を生成するように実現可能であるならば、その経路内でのこの第1の入力セットでの信号に依存する他の出力を生成することもまた可能である。これは、有力な設計の自由度のために、プログラム可能な論理ブロック164a〜164dに対する論理機能の位置付けを提供している。したがって、プログラム可能な論理ブロック164a〜164dの効果的な使用を行なわせる必要があるのならば、異なるプログラム可能な論理ブロック164a〜164dについての結果における異なるビットを実現する必要のあるプログラム可能な論理を分散することがより容易になる。好ましくは、プログラム可能な論理はまた、以下の意味においては少なくともそれらの出力のグループに関して対称なものであり、その意味とは、もしも特定の論理関係が入力のグループからの入力信号の機能として実現可能であるならば、同一の論理関係がそのグループ内の他の入力からの入力信号の機能として実現可能であることである。これはマッピング(位置づけ)の自由度を提供している。
【0022】
第2の接続回路166は、プログラム可能な論理ブロック164a〜164dの出力からの信号を、設定可能な機能ユニット16の出力ポート168で生成された結果におけるビットのうちの選択されたものに対して通過させる。プログラム可能な論理ブロック164a〜164dの出力が接続された結果のビットは、構成制御回路169制御の下で選択される。これは、個別のビットのレベルで独立させて構成可能である。出力ポート168は、レジスタファイル12の書込みポートに対して結果のビットを通過させ、ここでこの結果は、指令により指図されたレジスタ内に格納されて、機能ユニット14a,14b,16による他の指令の実行の間にオペランドとして、後になって使用される。
【0023】
この発明から逸脱することなく、(図示されない)追加のプログラム可能な論理が、プログラム可能な論理ブロック164a〜164dの出力の論理機能接続からの結果のビットを形成するために、第2の接続回路166と出力ポートとの間に付加されていても良い。
【0024】
図2は、図1の設定可能な機能ユニットにおいて第2の接続回路として用いられる接続回路20を示している。この接続回路20は、それぞれがレジスタファイル12へと通過させられた結果に含まれる異なるビットに接続されているビット出力を備える、複数のマルチプレクサ22a〜22cを備えている。マルチプレクサ22a〜22cは、プログラム可能な論理ブロック164a〜164dの出力に接続された入力を有している。各マルチプレクサ22a〜22cは、構成制御回路169(図2では図示されず)からの構成データの制御の下で、その出力に対してその入力のうちから選択された1つの入力からの信号を経路付けるために動作している。
【0025】
この実施形態においては、各マルチプレクサは、各機能論理ブロック164a〜164dのただ1つの出力に接続されている。例えば、各プログラム可能な論理ブロック164a〜164dの第1の出力は、マルチプレクサ22a〜22cの第1のマルチプレクサ22aに接続され、各プログラム可能な論理ブロック164a〜164dの第2の出力は、マルチプレクサ22a〜22cの第2のマルチプレクサ22bに接続されて、以下同様に接続されている。これは、接続回路20のために必要となるハードウェアの量を低減させる。設定可能な機能ユニット16は、特定の指令を実行するために構成されており、結果に含まれるビットが特定の論理機能にしたがったオペランドに含まれるビットに依存しなければならないときに、プログラム可能な論理ブロック164a〜164dは、前記結果に含まれるこのビットに接続されているマルチプレクサ22a〜22cの何れかに接続された出力における信号を生成するために前記論理機能が実行されるように構成されている。
【0026】
プログラム可能な論理ブロック164a〜164dの出力を結果のビットへと接続する他の方法もまた用いることができ、例えば、この接続の仕方は、前記出力の一部分と前記結果のビットの一部分との間の固定された接続を用いることであったり、前記出力の残りの部分と前記結果のビットの残りの部分との間のより完全な設定可能な接続を用いることであったりしても良い。その結果、第1の接続回路162およびプログラム可能な論理ブロック164a〜164dは、出力に対する固定された接続を有する結果のビットのための必要な論理がこれらの出力に対して接続されているプログラム可能な論理ゲート内で設定可能となるように構成されている。その他の結果ビットのための、論理の残り部分は、ブロック164a〜164d内の残りのプログラム可能な論理の全体にわたって分散されて、前記接続回路166を介して適切な結果のビットに接続されるプログラム可能な論理ブロック164a〜164dの出力における結果ビットの出力に結果として導くことになる。
【0027】
これらの実施例のそれぞれにおいて、制限された経路指定の能力を有する第2の接続回路166を用いることができ、その理由は、プログラム可能な論理ブロック164a〜164dおよび第1の接続回路162の全体の構成における分散の融通性が適切な結果のビットへと接続することのできるプログラム可能な論理ブロック164a〜164dの出力に対する結果のビットの経路を指定することを可能にさせている。経路指定の能力の制限は、回路構成の必要な量と第2の接続回路166の遅延とを低減している。同様に、第1の接続回路162の経路指定の能力が低減されるかもしれない。
【0028】
最大限のプログラム可能性のために、第1の接続回路162または第2の接続回路166の何れかは好ましくは機能ブロック164a〜164dの何れか1つの入力または何れか1つの出力へと固定された経路の設定を有しており、他の入力および出力はオペランド入力および結果のビットへと任意的に経路設定可能である。
【0029】
図3は、設定可能な機能ユニットを構成する方法のフローチャートを示している。好ましくは、この方法は図1のデータ処理装置用のプログラムを生成するホストコンピュータにより実行されている。第1のステップ31において、ホストコンピュータは前記データ処理装置により実行されなければならない処理タスクの記述を受信する。この記述は、“C”言語のような、高度のプログラム言語でのプログラムの形式を取ることができる。
【0030】
第2のステップ32において、ホストコンピュータは、前記処理タスクを実施するために行なわれなければならない基本動作のセットを決定している。これは例えば、高度の言語におけるプログラムの編集により行なうことができる。原理的には、それぞれの基本動作は、汎用目的の機能ユニット14a、14bにより実行することができる1つまたはそれ以上の機械の指令へとマップされることができる。
【0031】
第3のステップ33において、ホストコンピュータは、設定可能な機能ユニット16により実行されるべき指令としてそれ自身を実行へと適合させる、複合的な動作(complexes of operations)の候補(candidate)を識別している。ここで用いられる、“複合的な”という用語は、他の動作のオペランドとしての1つの動作の結果の使用を通して、複数の動作とそれらの相互依存関係とを指し示すものである。このような識別は設定可能な機能ユニットを有する公知のコンピュータで行なわれるものとして、それ自体は公知のものである。これは例えば、フローグラフのようなプログラム用のタスクを表現することにより実現され、このタスクにおいては、ノードが(おそらくはビットレベルにおける)動作を表現すると共にリンクが従属性を表現している。複合体はこのフローグラフのサブグラフ(subgraphs/サブセット)である。タスクの実行プロファイルの手段によりしばしば実行され、またはプログラムにおけるたくさんの位置を生じさせる、制限された数の入力および出力を有するサブグラフを識別することができる。このようなサブグラフは、特定の指令のための候補である複合的な動作を表現している。
【0032】
第3のステップ34において、ホストコンピュータは、設定可能な機能ユニット用の構成を発見するよう試みている。すなわち、ホストコンピュータは、第1の接続回路162,プログラム可能機能ブロック164a〜164dおよび第2の接続回路166を発見するように試みているので、入力ポート160a,160bにおけるオペランドと出力ポート168における結果との間の関係は、前記候補のために必要とされるものとなっている。原理的には、ホストコンピュータは、結果のビットのそれぞれの計算のために、プログラム可能な論理ブロック164a〜164dにおける異なる論理回路に対して論理的な動作をマップしなければならない。論理動作が異なる論理回路に対してマップされる、異なるマッピングが可能である。ホストコンピュータは、結果の全てのビットがプログラム可能な論理ブロック内で有用な論理回路について計算可能である、このようなマッピングを発見することを試みている。
【0033】
この発明の実施形態によれば、ホストコンピュータは、プログラム可能な論理ブロック164a〜164dの異なるそれぞれに対して結果のビット用の論理動作をマッピングすることを検討している。これは例えば、プログラム可能な論理ブロック164a〜164dに対する結果のビットの割り当てをまず生成することにより行なわれている。したがって、プログラム可能な論理ブロック164a〜164dのそれぞれのために、ホストコンピュータがそのブロック164a,164bに割り当てられた結果のビットのために必要とされる論理的な動作に対して論理回路を割り当てている。これは、結果のビットの他のものの後で1つのビットのために行なわれる。全ての結果のビットのために論理回路を割り当てることが可能であるのならば、マッピングが続けられる。もしも可能でないのならば、全ての結果のビット用の論理動作が実行されてしまう前に、適当(充分)でない論理回路がプログラム可能な論理ブロック164a,164b内に残されているので、このマッピングは機能しなくなり、ホストコンピュータは、プログラム可能な論理ブロック164a〜164dに対して結果のビットの異なる割り当てを試みることになる。したがって、ホストコンピュータは、マッピングが成功するまで、論理ブロックに対して全ての結果の可能な割り当てを試みることになり、または、全ての割り当てが失敗するまで割り当てを試みた場合には、ホストコンピュータは構成を発見することができない。
【0034】
種々のプログラム可能な論理ブロック164a〜164dに対する結果のビットの割り当ての選択の結果として、第2の接続回路166はどのようにして、プログラム可能な論理ブロック164a〜164dから出力ポートへのビットを経路付けるために構成するべきかが引き続いて行なわれる。同様に、論理回路の割り当てからは、第1の接続回路が入力ポート160aからプログラム可能な論理ブロック164a〜164dへのオペランドのビットの経路付けを行なうためにどのように構成されるべきかの判断が引き続いて行なわれる。
【0035】
第5のステップ35において、ホストコンピュータは、構成を発見することが既に不可能となっているのか否かを検出する。もしも発見が不可能となっているならば、この方法は第3のステップ33に戻り、他の候補による複合的な動作が選択される。もしも前記候補による複合的な動作を実行する構成を発見することが可能であるならば、ホストコンピュータはまた、後になって最も効果的な候補を選択するために、他の設定可能な候補を発見するために第3のステップに戻るようにしても良い。何れの場合でも、この方法は、もしも少なくとも1つの設定可能な候補が発見されたならば、第6のステップ36へと進む。
【0036】
この第6のステップ36において、設定可能な機能ユニットは、従前のステップにおいて発見された候補に従って構成されている。これは、プログラム可能な論理ブロック164a〜164dおよび第1,第2の接続回路162,166が第4のステップで選択されたように構成されていることを意味している。
【0037】
第7のステップ37において、機能ユニット14a,14b,16のための指令のプログラムが、処理タスクを実行するために生成されている。このプログラムにおいて、第3のステップ33において既に選択されていた複合的な動作は、設定可能な機能ユニット16に複合的な動作を実行させる特別な指令により置き換えられている。このプログラムは、実行のための指令出力ユニット10内にダウンロードされる。
【0038】
もちろん、熟練者は図3のフローチャートからの種々の逸脱が可能であることを正しく評価することであろう。例えば、複合的な動作の候補は、単一のプログラムのためよりもむしろ、プログラムのセットのために選択されていても良い。他の実施例において、構成を選択するステップ34は、種々のハードウェアの制約を負わなくてはならないかもしれない。特別な指令を有するプログラムは、設定可能な機能ユニット16を構成する前に生成されていても良い。構成は、永続的なものであっても良いし、処理装置の製造中またはタスクと独立して行なわれても良いし、タスクが実行される前でもまたはタスクの実行中でさえも行なわれても良いし、異なる設定可能な指令から利益を受けるタスクの前毎に実行されても良い。設定可能な機能ユニットの実施形態において、少なくともプログラム可能な論理ブロック164a〜164dはまた、指令出力ユニット10からのオプコード(opcode)情報を受信している。この場合、プログラム可能な論理ブロック164a〜164dの出力信号は、同一の構成を有する1つの設定可能な指令以上を実行することを可能とする、前記オプコードに依存して生成することができる。したがって、幾つかの設定可能な指令が有効に存在しており、異なる指令のオプコードは、設定可能な指令が実行されるべきである設定可能な機能ユニットに信号を送っている。
【図面の簡単な説明】
【図1】 この発明の一実施例に係るデータ処理装置を示すブロック図である。
【図2】 この発明の一実施例に係る接続回路を示すブロック図である。
【図3】 この発明の一実施例に係るデータ処理装置を構成しプログラムする方法を示すフローチャートである。
【符号の説明】
10 指令出力ユニット
16 設定可能な機能ユニット
162 第1のプログラム可能な接続回路
164a〜164d 設定可能な論理ブロック
166 第2のプログラム可能な接続回路
22a〜22c マルチプレクサ
Claims (6)
- 指令を含むプログラムを実行することが可能であると共に、前記指令の外部で設定可能な機能にしたがって前記指令を実行するための設定可能な機能ユニットを備えるデータ処理装置において、前記設定可能な機能ユニットは、
−前記指令によりそれぞれ指定された情報源と宛先レジスタに対するオペランドと結果とのビットをそれぞれ入出力するユニット入力およびユニット出力を有し、前記設定可能な機能ユニットは、
−前記設定可能な機能を実施するプログラム可能な論理演算を実行するために独立して設定可能な複数の論理ブロックであって、1つの論理ブロックの処理容量を超える結果データワードのビットのサブセットを生成するための論理動作を、異なる複数の論理ブロックにそれぞれ分散させて、処理タスク内で発生した指令オペランドによりそれぞれの論理ブロックがプログラムされる、複数の論理ブロックと;
−前記設定可能な機能に基づいて、前記複数の論理ブロックへの入力を前記ユニット入力からのビットに対して選択的に接続するため、前記ユニット入力および前記複数の論理ブロックの間でプログラム可能な第1の接続回路と;
−前記設定可能な機能に基づいて、前記ユニット出力のビットを前記複数の論理ブロックからの出力に対して選択的に接続するため、前記複数の論理ブロックおよび前記ユニット出力の間でプログラム可能な第2の接続回路と;
を備えるデータ処理装置。 - 各論理ブロックは複数の出力を有し、前記ユニット出力の複数のビットのうちの少なくとも1つは各論理ブロックの前記複数の出力のうちの少なくとも1つに排他的に接続可能であり、プログラム可能な前記第2の接続回路は、前記論理ブロックの選択された1つの出力を前記ユニット出力のビットの少なくとも1つに接続するマルチプレクサを備える請求項1に記載のデータ処理装置。
- 各論理ブロックは複数の出力を有し、前記ユニット出力の複数のビットのそれぞれは、各論理ブロックの複数の出力のそれぞれの1つに排他的に接続可能であり、プログラム可能な前記第2の接続回路は、前記論理ブロックの選択されたそれぞれ1つの出力を前記ユニット出力の個別のビットに対して接続するそれぞれのマルチプレクサを備える請求項2に記載のデータ処理装置。
- プログラム可能な前記第1および第2の接続回路の何れか一方は、前記独立した設定可能な複数の論理ブロックの1つの入力または出力に対する固定されたプログラム可能でない接続と、前記入力および前記出力の残りに対するプログラム可能な接続と、を有している請求項1に記載のデータ処理装置。
- 処理タスクを実行すると共に、プログラム可能な複数の論理ブロックを備える設定可能な機能ユニットを有する設定可能な処理装置をプログラムする方法であって、
−前記タスク内で発生してオペランドデータワードを要求すると共に結果データワードを生成する特別で複雑な動作を識別し、
−プログラム可能な複数の論理ブロックのうちの1つの中で共に実行されるのならば、プログラム可能な前記複数の論理ブロックの1つのブロックの容量を超える前記結果のビットのサブセットを生成する論理動作が、前記論理ブロックの異なる複数のブロックにわたって分散されるように、前記プログラム可能な論理ブロックの複数ビットの異なるブロックに対する結果の異なるビットを生成する論理動作の割当てを探索する、
−その論理動作に対して割り当てられた結果の複数のビットのための論理動作を実行するため、プログラム可能な論理ブロックのそれぞれをプログラムする、
−プログラム可能な論理ブロックに先立って複数の接続回路をプログラムし、引き続いて前記論理動作における前記オペランドの複数のビットを用いる前記プログラム可能な論理ブロックへの特別な指令のオペランドにビットの経路を決めるため、および、前記プログラム可能な論理ブロックが割り当てられる先の結果のビットの前記プログラム可能な論理ブロックの出力の経路を決めるために、前記プログラム可能な論理ブロックをプログラムする、
を含む方法。 - 設定可能な機能ユニットを備える処理装置に伴うプログラムを実行する方法であって、設定可能な指令に応答して、
−前記設定可能な機能ユニット内に設定可能な指令のオペランドの複数ビットを入力するステップと;
−設定された機能に基づいて、論理ブロックの入力に対して前記オペランドの前記複数ビットを選択的に接続するステップと;
−前記設定可能な機能を実施するためにプログラム可能な論理動作を実行するステップと;
−設定された機能に基づいて、前記論理ブロックの出力を結果のビットに選択的に接続するステップと;
−前記指令のオペランドにより、独立して設定可能な複数の論理ブロックに入力された結果データワードのビットであって、1つの論理ブロックの処理容量を超える結果データワードのビットについて、そのサブセットを生成するための論理動作を、異なる複数の論理ブロックにそれぞれ分散させるステップと;
を実行することを含む方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP00204650 | 2000-12-20 | ||
PCT/IB2001/002403 WO2002050665A1 (en) | 2000-12-20 | 2001-12-06 | Data processing device with a configurable functional unit |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004516728A JP2004516728A (ja) | 2004-06-03 |
JP4022147B2 true JP4022147B2 (ja) | 2007-12-12 |
Family
ID=8172478
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002551694A Expired - Lifetime JP4022147B2 (ja) | 2000-12-20 | 2001-12-06 | 設定可能な機能ユニットを備えるデータ処理装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7844803B2 (ja) |
EP (1) | EP1346280A1 (ja) |
JP (1) | JP4022147B2 (ja) |
KR (1) | KR20030007434A (ja) |
WO (1) | WO2002050665A1 (ja) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7266725B2 (en) | 2001-09-03 | 2007-09-04 | Pact Xpp Technologies Ag | Method for debugging reconfigurable architectures |
DE19651075A1 (de) | 1996-12-09 | 1998-06-10 | Pact Inf Tech Gmbh | Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen |
DE19654595A1 (de) | 1996-12-20 | 1998-07-02 | Pact Inf Tech Gmbh | I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen |
ATE243390T1 (de) | 1996-12-27 | 2003-07-15 | Pact Inf Tech Gmbh | Verfahren zum selbständigen dynamischen umladen von datenflussprozessoren (dfps) sowie bausteinen mit zwei- oder mehrdimensionalen programmierbaren zellstrukturen (fpgas, dpgas, o.dgl.) |
US6542998B1 (en) | 1997-02-08 | 2003-04-01 | Pact Gmbh | Method of self-synchronization of configurable elements of a programmable module |
US8686549B2 (en) | 2001-09-03 | 2014-04-01 | Martin Vorbach | Reconfigurable elements |
DE19861088A1 (de) | 1997-12-22 | 2000-02-10 | Pact Inf Tech Gmbh | Verfahren zur Reparatur von integrierten Schaltkreisen |
WO2002013000A2 (de) | 2000-06-13 | 2002-02-14 | Pact Informationstechnologie Gmbh | Pipeline ct-protokolle und -kommunikation |
DE10081643D2 (de) | 1999-06-10 | 2002-05-29 | Pact Inf Tech Gmbh | Sequenz-Partitionierung auf Zellstrukturen |
US8058899B2 (en) | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
AU2002220600A1 (en) * | 2000-10-06 | 2002-04-15 | Pact Informationstechnologie Gmbh | Cell system with segmented intermediate cell structure |
US7444531B2 (en) | 2001-03-05 | 2008-10-28 | Pact Xpp Technologies Ag | Methods and devices for treating and processing data |
US9037807B2 (en) | 2001-03-05 | 2015-05-19 | Pact Xpp Technologies Ag | Processor arrangement on a chip including data processing, memory, and interface elements |
US7844796B2 (en) | 2001-03-05 | 2010-11-30 | Martin Vorbach | Data processing device and method |
WO2005045692A2 (en) | 2003-08-28 | 2005-05-19 | Pact Xpp Technologies Ag | Data processing device and method |
EP1402382B1 (de) | 2001-06-20 | 2010-08-18 | Richter, Thomas | Verfahren zur bearbeitung von daten |
US7996827B2 (en) * | 2001-08-16 | 2011-08-09 | Martin Vorbach | Method for the translation of programs for reconfigurable architectures |
US7434191B2 (en) | 2001-09-03 | 2008-10-07 | Pact Xpp Technologies Ag | Router |
US8686475B2 (en) | 2001-09-19 | 2014-04-01 | Pact Xpp Technologies Ag | Reconfigurable elements |
EP1483682A2 (de) | 2002-01-19 | 2004-12-08 | PACT XPP Technologies AG | Reconfigurierbarer prozessor |
AU2003214003A1 (en) | 2002-02-18 | 2003-09-09 | Pact Xpp Technologies Ag | Bus systems and method for reconfiguration |
US8914590B2 (en) | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
WO2005010632A2 (en) * | 2003-06-17 | 2005-02-03 | Pact Xpp Technologies Ag | Data processing device and method |
WO2004021176A2 (de) | 2002-08-07 | 2004-03-11 | Pact Xpp Technologies Ag | Verfahren und vorrichtung zur datenverarbeitung |
US7657861B2 (en) | 2002-08-07 | 2010-02-02 | Pact Xpp Technologies Ag | Method and device for processing data |
AU2003289844A1 (en) | 2002-09-06 | 2004-05-13 | Pact Xpp Technologies Ag | Reconfigurable sequencer structure |
EP1443418A1 (en) * | 2003-01-31 | 2004-08-04 | STMicroelectronics S.r.l. | Architecture for reconfigurable digital signal processor |
DE10309312B4 (de) * | 2003-03-04 | 2006-01-26 | Infineon Technologies Ag | Mehrseitig programmierbare Schnittstellenvorrichtung |
US7769982B2 (en) * | 2005-06-22 | 2010-08-03 | Arm Limited | Data processing apparatus and method for accelerating execution of subgraphs |
JP2009524134A (ja) | 2006-01-18 | 2009-06-25 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | ハードウェア定義方法 |
US7693257B2 (en) * | 2006-06-29 | 2010-04-06 | Accuray Incorporated | Treatment delivery optimization |
US20090033359A1 (en) * | 2007-07-31 | 2009-02-05 | Broadcom Corporation | Programmable logic device with millimeter wave interface and method for use therewith |
US8051277B1 (en) * | 2007-12-22 | 2011-11-01 | Callen Greg S | Programmable arithmetic logic unit cluster |
JP2011028543A (ja) * | 2009-07-27 | 2011-02-10 | Renesas Electronics Corp | 情報処理システム及びその情報処理方法 |
US9378055B1 (en) | 2012-08-22 | 2016-06-28 | Societal Innovations Ipco Limited | Configurable platform architecture and method for use thereof |
US9891893B2 (en) | 2014-05-21 | 2018-02-13 | N.Io Innovation, Llc | System and method for a development environment for building services for a platform instance |
US10154095B2 (en) | 2014-05-21 | 2018-12-11 | N.Io Innovation, Llc | System and method for aggregating and acting on signals from one or more remote sources in real time using a configurable platform instance |
WO2015177639A1 (en) | 2014-05-21 | 2015-11-26 | Societal Innovations Ipco Limited | System and method for fully configurable real time processing |
WO2016151398A1 (en) | 2015-03-23 | 2016-09-29 | Societal Innovations Ipco Limited | System and method for configuring a platform instance at runtime |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4346438A (en) * | 1979-10-24 | 1982-08-24 | Burroughs Corporation | Digital computer having programmable structure |
US5321845A (en) * | 1987-09-09 | 1994-06-14 | Hitachi, Ltd. | Single-chip microcomputer including non-volatile memory elements |
US6247036B1 (en) * | 1996-01-22 | 2001-06-12 | Infinite Technology Corp. | Processor with reconfigurable arithmetic data path |
US6023564A (en) * | 1996-07-19 | 2000-02-08 | Xilinx, Inc. | Data processing system using a flash reconfigurable logic device as a dynamic execution unit for a sequence of instructions |
US6006321A (en) * | 1997-06-13 | 1999-12-21 | Malleable Technologies, Inc. | Programmable logic datapath that may be used in a field programmable device |
JPH1185507A (ja) * | 1997-09-05 | 1999-03-30 | Mitsubishi Electric Corp | 中央処理装置およびマイクロコンピュータシステム |
JP3611714B2 (ja) * | 1998-04-08 | 2005-01-19 | 株式会社ルネサステクノロジ | プロセッサ |
DE19843640A1 (de) * | 1998-09-23 | 2000-03-30 | Siemens Ag | Verfahren zum Konfigurieren eines konfigurierbaren Hardware-Blocks |
WO2000049496A1 (en) | 1999-02-15 | 2000-08-24 | Koninklijke Philips Electronics N.V. | Data processor with a configurable functional unit and method using such a data processor |
EP1059580A1 (de) * | 1999-06-10 | 2000-12-13 | Siemens Aktiengesellschaft | Programmgesteuerte Einheit |
-
2001
- 2001-12-06 KR KR1020027010813A patent/KR20030007434A/ko not_active Application Discontinuation
- 2001-12-06 JP JP2002551694A patent/JP4022147B2/ja not_active Expired - Lifetime
- 2001-12-06 WO PCT/IB2001/002403 patent/WO2002050665A1/en not_active Application Discontinuation
- 2001-12-06 EP EP01271578A patent/EP1346280A1/en not_active Withdrawn
- 2001-12-17 US US10/023,117 patent/US7844803B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US7844803B2 (en) | 2010-11-30 |
US20020083308A1 (en) | 2002-06-27 |
WO2002050665A1 (en) | 2002-06-27 |
JP2004516728A (ja) | 2004-06-03 |
EP1346280A1 (en) | 2003-09-24 |
KR20030007434A (ko) | 2003-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4022147B2 (ja) | 設定可能な機能ユニットを備えるデータ処理装置 | |
US20210271519A1 (en) | Quiesce reconfigurable data processor | |
US7249351B1 (en) | System and method for preparing software for execution in a dynamically configurable hardware environment | |
US5737631A (en) | Reprogrammable instruction set accelerator | |
JP4489102B2 (ja) | プロセッサ構造および応用の最適化のためのプロファイラ | |
US20090119484A1 (en) | Method and Apparatus for Implementing Digital Logic Circuitry | |
WO2005045692A9 (en) | Data processing device and method | |
KR980010763A (ko) | 연산처리장치 | |
JP2002509302A (ja) | メモリサブシステムに複数のメモリアルゴリズムプロセッサを組込むマルチプロセッサコンピュータアーキテクチャ | |
US20080189514A1 (en) | Reconfigurable Logic in Processors | |
Reshadi et al. | Utilizing horizontal and vertical parallelism with a no-instruction-set compiler for custom datapaths | |
JP2006236106A (ja) | データ処理装置及びデータ処理方法 | |
Ruschke et al. | Scheduler for inhomogeneous and irregular CGRAs with support for complex control flow | |
JP2005508554A (ja) | データ操作を利用したデータの計算と処理方法、及び、その装置 | |
JP2004334429A (ja) | 論理回路及びその論理回路上で実行するプログラム | |
US6099585A (en) | System and method for streamlined execution of instructions | |
EP1509840B1 (en) | Method and apparatus for hoisting loop-invariant code word portions | |
Bergeron et al. | Hardware JIT compilation for off-the-shelf dynamically reconfigurable FPGAs | |
JP2007334819A (ja) | ベクトルリネーミング方式およびベクトル型計算機 | |
KR20200124251A (ko) | 데이터 처리 | |
US20190095208A1 (en) | SYSTEMS AND METHODS FOR MIXED INSTRUCTION MULTIPLE DATA (xIMD) COMPUTING | |
US20240220325A1 (en) | Computer System with Reconfigurable Processors | |
JP4208919B2 (ja) | 活性化コードの生成方法 | |
Chauhan et al. | Reconfiguration of fpga for domain specific applications using embedded system approach | |
Bulpin | Design and Simulation of a Super-Scalar CPU |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041203 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070117 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070209 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070330 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070419 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070809 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20070824 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070831 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070928 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101005 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4022147 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111005 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121005 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121005 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131005 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |