JP3842129B2 - データ処理装置およびその制御方法 - Google Patents
データ処理装置およびその制御方法 Download PDFInfo
- Publication number
- JP3842129B2 JP3842129B2 JP2001520597A JP2001520597A JP3842129B2 JP 3842129 B2 JP3842129 B2 JP 3842129B2 JP 2001520597 A JP2001520597 A JP 2001520597A JP 2001520597 A JP2001520597 A JP 2001520597A JP 3842129 B2 JP3842129 B2 JP 3842129B2
- Authority
- JP
- Japan
- Prior art keywords
- processing
- data
- field
- instruction
- execution
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 410
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000002360 preparation method Methods 0.000 claims description 83
- 230000006870 function Effects 0.000 claims description 20
- 238000005111 flow chemistry technique Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 abstract description 29
- 238000005516 engineering process Methods 0.000 description 21
- 238000004364 calculation method Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 230000008859 change Effects 0.000 description 9
- 238000013461 design Methods 0.000 description 5
- 230000006872 improvement Effects 0.000 description 5
- 230000001343 mnemonic effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 101100379079 Emericella variicolor andA gene Proteins 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000000275 quality assurance Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000009291 secondary effect Effects 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 238000012546 transfer 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- 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/30181—Instruction operation extension or modification
-
- 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)
- Advance Control (AREA)
- Stored Programmes (AREA)
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
- Communication Control (AREA)
- Circuits Of Receivers In General (AREA)
- Image Processing (AREA)
- Saccharide Compounds (AREA)
- Eye Examination Apparatus (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Facsimiles In General (AREA)
- Vehicle Body Suspensions (AREA)
- Steering Control In Accordance With Driving Conditions (AREA)
- Input Circuits Of Receivers And Coupling Of Receivers And Audio Equipment (AREA)
Description
本発明は、マイクロコードなどにより記述された制御プログラム製品、およびそのプログラムを実行可能なデータ処理装置に関するものである。
背景技術
汎用的な処理および専用的なデジタルデータの処理を行う装置として、マイクロプロセッサー(MPU)、デジタル・シグナルプロセッサー(DSP)といった演算機能を内蔵したプロセッサ(データ処理装置あるいはLSI)が知られている。これらの性能向上に大きく貢献したアーキテクチャ要素として、パイプライン化技術、スーパー・パイプライン化技術、スーパー・スケーラ化技術、VLIW技術、特化型データパス(専用命令)追加を挙げることができる。さらに、分岐予測やレジスタバンク、キャッシュ技術等も挙げることができる。
ノン・パイプラインとパイプラインとの性能差は明確である。基本的に同一命令であれば、パイプラインの段数だけスループットは確実に向上する。たとえば、4段のパイプラインでは、スループットは4倍以上となることが期待でき、8段のパイプラインであれば、8倍という計算となり、スーパー・パイプライン技術は、更に性能を2倍以上向上させたことになる。実際は、プロセスの進歩に従い、クリティカルパスを細分化可能な為、動作周波数の上限を大きく改善するという効果も期待出来るので、その貢献度は更に大きいものとなって現われる。しかしながら、分岐命令のディレイ(ペナルティ)は解消されておらず、スーパー・パイプライン方式のマシンが成功するか否かは、メモリアクセスや分岐に対応した深い段数の遅延を、コンパイラによる命令スケジューリングなどによってどこまで処理できるかにかかっている。
次に、スーパー・スケーラ技術であるが、これは内部のデータパスを高性能化し、プログラムカウンタ近傍の命令を同時実行するものである。この技術はコンパイラの最適化技術の進歩にも支えられて、4命令から8命令程度の同時実行が可能になったとされている。しかしながら、命令自体はその直前の演算結果やレジスタの結果を頻繁に使用する事が多く、ピーク性能は別にして、フォワーディングや命令再配置、アウト・オブ・オーダ、レジスタリネーミング等の各種テクニックを駆使したとしても同時実行可能な命令数は平均的には上記よりかなり低い値とならざるを得ない。特に、条件分岐命令等を複数実行することは不可能なので、スーパー・スケーラ技術の効果は更に低いものとなる。したがって、プロセッサの性能向上への貢献度としては、平均2.0から2.5倍程度と思われる。非常に相性の良いアプリケーションが仮にあったとしても、現実的な貢献度は4倍以下と考えられる。
VLIW技術が、次の技術として浮上する。これは、予めデータパスを並列実行可能なように構成しておき、コンパイラがこの並列実行を高めるように、最適化を行い目的のVLIW命令コードを生成するという考え方であり、極めて合理的な考え方を採用している。これにより、スーパー・スケーラのように1つ1つの命令の並列実行の可能性をチェックする回路が不要なので、並列実行を行うハードウェアの実装手段としては、極めて有望とされているものである。しかしながら、条件分岐命令などを複数実行できないことは上記と同様であり、そのため、実際の性能に対する貢献度としては、3.5倍〜5倍程度と考えられる。しかしながら、画像処理や特殊データ処理を必要とするアプリケーションの処理を用途とするプロセッサを考えると、VLIWも最適な解決策とはならない。特に演算結果の連続処理を要求されるような用途では、汎用レジスタにデータを抱えながらの演算やデータ処理には限界があるからである。これは従来のパイプライン技術でも同様である。
一方、各種のマトリックス計算やベクトル計算等は、専用回路によりこれを実現した方が高い性能を得られることは過去の経験から良く知られている。このため、現在、世界最高性能を目指す最先端の実装技術では、VLIWをベースにアプリケーション目的に応じて、各種の専用演算回路を実装して、最高性能を目指すという考え方が主流になりつつある。
しかしながら、VLIWは、プログラムカウンタ近傍の並列処理実行効率を改善する技術であり、例えば2つ以上のオブジェクトを同時に実行したり、2つ以上の関数を実行するにはあまり有効な手段とはならない。また、各種の専用演算回路を実装することはハードウェアが増加することとなり、その一方で、ソフトウェアのフレキシビリティーが低下することを意味する。さらに、条件分岐を実行するときに発生するペナルティの問題を本質的に解決し難い。
そこで、本発明においては、これらの従来のプロセッサを高速化する技術と異なった視点から上記の問題を検討し、新たな解決策を提供することを目的としている。すなわち、パイプラインのようにスループットの向上を図ることができると共に、条件分岐を実行する際のペナルティを解決することが可能なシステム、すなわち、制御プログラム製品と、それを実行可能なデータ処理装置およびその制御方法を提供することを目的としている。さらに、複雑なデータ処理であっても、それらのデータ処理に特化した多種多様な専用回路を用いなくても、それぞれのデータ処理をフレキシブルに、そして高速に実行可能な制御プログラム製品と、それを実行可能なデータ処理装置およびその制御方法を提供することも本発明の目的としている。
発明の開示
本願の発明者は、上記のような問題がノン・パイプライン技術から今までの技術に用いられている命令セットの制約から上記のような問題が生じていることを見出した。すなわち、プロセッサにおけるデータ処理を規定するプログラム(マイクロコード、アセンブリコード、機械語など)の命令セット(命令フォーマット)は命令操作(実行命令)とその命令を実行する際に使用するレジスタなどの環境またはインタフェースを規定するオペランドとが組み合わせされたニーモニックコードである。したがって、命令セットを見れば、それによって指示されている処理の内容を完全に把握できるが、命令セットをデコードするまで処理の内容については全く判らない。そこで、本発明においては、命令セットの構成方法そのものを大幅に変更することにより、従来技術では対応の難しかった上記の問題を上手く解決し、データ処理装置の性能を飛躍的に向上できるようにしている。
すなわち、本発明においては、データ処理装置を構成する少なくとも1つの処理ユニットで実行する演算または他のデータ処理の内容を指示する実行命令を記述(記載)可能な第1のフィールドと、実行命令で実行する演算または他のデータ処理が実行可能な状態に処理ユニットを設定する準備情報を記述(記載)可能な第2のフィールドと、第1のフィールドの実行命令の内容とは独立に、第2のフィールドの有効/無効および準備情報のタイプを示す第3のフィールドとを備えた命令セットを設け、第1のフィールドに記述された実行命令の内容に対し、独立した演算または他のデータ処理の準備情報が第2のフィールドに記述できるようにしている。
処理ユニットは、データ処理装置を構成する適当な機能的あるいはデータパス的に分割可能な単位であり、制御ユニット、算術演算ユニット、さらには、ある程度コンパクトなデータパスを備えてテンプレート的に取り扱い可能な特定のデータパスを具備した処理ユニットあるいはデータフロー処理ユニットなどが含まれる。
本発明のデータ処理装置は、演算または他のデータ処理を実行するための複数の処理ユニットであって、それぞれ独自のコンフィグレーションメモリを備え、前記独自のコンフィグレーションメモリのデータが書き換えられることにより、入力および/または出力インタフェースおよび処理内容が変更され、当該複数の処理ユニットの少なくとも一部からなるデータパスを構成可能な複数の処理ユニットと、処理ユニットで実行する演算または他のデータ処理の内容を指示する実行命令を記述可能な第1のフィールドと、実行命令で実行する演算または他のデータ処理が実行可能な状態に処理ユニットを設定する準備情報を記述可能な第2のフィールドと、第1のフィールドの実行命令の内容とは独立に、第2のフィールドの有効/無効および準備情報のタイプを示す第3のフィールドとを具備する命令セットをフェッチするユニットと、第1のフィールドの実行命令をデコードし、その実行命令の演算または他のデータ処理が実行できるように予め設定された処理ユニットにより当該演算または他のデータ処理を進める第1の実行制御ユニットと、第3のフィールドの情報に基づき第2のフィールドの準備情報をデコードし、第1の実行制御ユニットの実行内容とは独立して処理ユニットの独自のコンフィグレーションメモリのデータを書き換えることにより少なくとも1つのデータパスを構成し、その処理ユニットの状態を演算または他のデータ処理が実行できるように設定し、その状態を第2のフィールドの準備情報に対応する実行命令を備えた命令セットがフェッチされて実行されるまで保持可能な第2の実行制御ユニットとを有する。
また、本発明の、演算または他のデータ処理を実行するための複数の処理ユニットであって、それぞれ独自のコンフィグレーションメモリを備え、前記独自のコンフィグレーションメモリのデータが書き換えられることにより、入力および/または出力インタフェースおよび処理内容が変更され、当該複数の処理ユニットの少なくとも一部からなるデータパスを構成可能な複数の処理ユニットを有するデータ処理装置の制御方法は、上記の第1のフィールドと、第2のフィールドと、第3のフィールドとを具備する命令セットをフェッチする工程と、第1のフィールドの実行命令をデコードし、その実行命令の演算または他のデータ処理が実行できるように予め設定された処理ユニットにより当該演算または他のデータ処理を進める第1の制御工程と、この第1の制御工程とは独立して、第3のフィールドの情報に基づき第2のフィールドの準備情報をデコードし処理ユニットの独自のコンフィグレーションメモリのデータを書き換えることにより少なくとも1つのデータパスを構成し、その処理ユニットの状態を演算または他のデータ処理が実行できるように設定し、その状態を第2のフィールドの準備情報に対応する実行命令を備えた命令セットがフェッチされ、その実行命令が実行されるまで保持する第2の制御工程とを有する。
本発明にかかる命令セットは、実行命令を記述する第1のフィールドと、この実行命令とは独立し、レジスタの情報およびイミーディエイトなどの準備情報(準備命令)を記述する第2のフィールドとを備えたものである。したがって、算術命令などにおいては、第1のフィールドにADDなどの命令操作が記述され、第2のフィールドにレジスタを特定する命令あるいは情報が記述されるので、一見、従来のアセンブルコードと同様の命令セットとなる。しかしながら、実行命令と準備情報は独立であり、同じ命令セット内では対応していない。このため、その命令セットでは制御ユニットなどのデータ処理装置の処理ユニットで実行される処理が特定されないという特性を備えている。すなわち、本発明にかかる命令セットは従来のニーモニックコードとは大きく異なるものである。そして、従来は1つの命令セットの中に記述されていた命令操作とそれに対応するオペランドを個別に、独立して定義できるようにすることにより、従来の命令セットでは実現できない処理を簡単に実行することができる。
まず、第2のフィールドに、後続の命令セットの第1のフィールドに記述される実行命令を実行するための準備情報を記述することができる。これにより、実行命令を備えた命令セットが表れる前に、その実行命令を実行するための準備を行うことができる。すなわち、実行命令で実行する演算またはその他のデータ処理が実行可能な状態に処理ユニットを設定することができる。例えば、ある命令セット(命令フォーマットあるいは命令レコード)の第1のフィールドにデータ処理装置のある制御ユニットに含まれる少なくとも1つの算術論理演算ユニットを操作する命令を記述し、それに先立つ命令セットの第2のフィールドに、その少なくとも1つの算術論理演算ユニットに用いられるソース側のレジスタあるいはディスティネーション側のレジスタといった算術論理演算ユニットのインタフェースを規定する命令あるいは情報を記述することができる。第3のフィールドの情報に基づき、実行命令がフェッチされる前に、算術論理演算ユニットのレジスタ情報がデコードされ、レジスタがセットされ、その後にフェッチされた実行命令により所定の論理演算が実行され、その結果が指定されたレジスタに保存される。ディスティネーション側のレジスタは実行命令と共に第1のフィールドに記述することも可能である。
したがって、本発明にかかる命令セットにおいても、パイプライン処理と同様にデータ処理を多段階に分けて実行することが可能でありスループットを向上することができる。また、例えば、ADD,R0,R1,#1234Hという命令は、レジスタR1と#01234Hを加算してこれをレジスタR0に格納するという意味になるが、ハードウェア構成上は、前の命令セットの実行サイクルとオーバラップさせて、ADDという実行命令を実行する1CLK前にレジスタR0と「#01234H」を算術論理演算ユニットである算術加算器ADDが属するデータパスの入力レジスタにリードを実行しておくと高速実行させる観点からは、都合が良い。つまり、AC特性上は、純粋に算術加算を行うようにできるので、実行周波数特性が向上する。パイプライン処理において、パイプライン段数を増加させて、レジスタファイルからのリードサイクル専用に1ステージ消費する設計方針により、この問題をある程度回避することができる。しかしながら、その結果、遅延は確実に増加することになるのに対し、本発明においては遅延を増加させずに問題を解決できる。
そして、本発明の命令セットにおいては、準備情報を実行命令に先立って記述できるので、条件分岐命令などの分岐命令においては、分岐先の情報が実行命令に先立って制御ユニットに与えることができる。すなわち、従来のニーモニックコードでは、命令セットの内容は人間が一目で分かるが、その命令セットが表れるまで処理内容が判らなかった。これに対し、本発明にかかる命令セットでは、命令セットの内容は一目では分からないが、実行命令が表れる前に、その実行命令に関連する情報が分かる。したがって、実行命令に先立って分岐先が判るので、その分岐先の命令セットをフェッチすることも可能であり、さらには、分岐先の実行命令に先立ってその準備を行うことも可能となる。
一般に、現在のCPU/DSPの殆どがパイプライン処理を後段(時間軸が後方)にシフトすることで、処理の高速化を図ることに成功しているが、プログラムの分岐時やCALL/RET実行時には、この問題が表面化する。つまり、先行してフェッチアドレス情報が得られていない為に、本質的にペナルティとなり、原理的にこれを解消することができない。もちろん、分岐予測やディレイディド・ブランチ、高速ブランチバッファ、或いはDSPにて採用されている高速ループ処理技術等は、このペナルティをかなり緩和する事に成功しているが、連続分岐が数多く発生したりすると、その問題点が表面化し、本質的な解決にはなっていないことは周知の事実である。
また、後続命令が必要とするレジスタ情報が先に得られない為に、パイプライン処理を高速化する為のフォワーディング処理やバイパス処理の複雑さが増大し、従来技術で高速化を図ろうとすること自体が膨大なハードウェア・コストの上昇を招く要因となる。
したがって、従来の命令セットでは、分岐先のアドレス情報はデコード後にしか得られず、条件分岐を実行するときに発生するペナルティを本質的に解決し難いのに対し、本発明の命令セットにおいては、分岐先の情報を事前に与えることができるので、条件分岐を実行するときのペナルティを無くすことができる。さらに、ハードウェアに余裕があれば、分岐先の準備命令をフェッチして、それに続く実行命令のための準備を行うことも可能となる。分岐条件が整わない場合は、その準備が無駄になるだけであり、実行時間のペナルティになることはない。
また、後続命令が必要とするレジスタ情報が、実行命令と同時に、あるいは先立って判るので、ハードウェア・コストを増大させずに高速化を図ることが可能となる。つまり、本発明において、従来はハードウェア側にて行っていたパイプライン処理の1ステージ分の処理を、コンパイル時やアッセンブル時に、ソフトウェア処理により静的に事前に実現する事に成功している。
本発明においては、準備情報として、処理ユニットの入力および/または出力インタフェースを、その処理ユニットの実行時期とは独立して、別に規定し、第2の実行制御ユニットあるいは第2の制御工程において、処理ユニットの入力および/または出力インタフェースを、その処理ユニットの実行時期とは独立して、別に設定することが可能となる。このため、複数の処理ユニットを備えたデータ処理装置においては、第2の実行制御ユニットあるいは第2の制御工程において、これらの処理ユニットによるデータパスの組み合わせを制御することが可能となる。すなわち、第2のフィールドに、データ処理装置に含まれる少なくとも1つの算術論理演算ユニットなどの処理ユニットのインタフェースを規定する命令を記載あるいは記述することにより、データフロー指定を行うことが可能となる。これにより、データパスの独立性を高めることが可能となり結果的にデータフロー指定を別命令プログラムを実行しながら行ったり、アイドル状態にある制御ユニットあるいはデータ処理装置の内部のデータパスを、外部の他の制御ユニットあるいはデータ処理装置において実行されている緊急度の高い処理のために貸し出すことも許す構造を容易に提供可能である。
さらに、準備情報に、処理ユニットの処理内容または回路構成も規定する情報を採用し、第2の実行制御ユニットまたは第2の制御工程により、第3のフィールドの情報に基づき準備情報をデコードし、処理ユニットの処理内容または回路構成も規定することによりさらにフレキシブルにデータパスを構成することができる。
また、第2の実行制御ユニットあるいは第2の制御工程に、レジスタ情報をデコードしてフェッチするなどの算術論理演算ユニットのインタフェースや、他の処理ユニットのインタフェースを規定するスケジューラとしての機能を持たせてデータパスの組み合わせを管理することにより、多種多様なデータ処理に対応することができる。例えば、ある一定時間だけ、マトリックス計算を行い、その後にフィルター処理を行う場合は、予めそれらの処理に必要なデータ処理装置内部の処理ユニット間の接続を指定し、時間を計数するカウンターを使ってこれを実現する事が出来る。計数カウンターを別の比較回路や外部イベント検出器に置き換える事で、より複雑で柔軟性のあるスケジューリング処理を実現可能となる。
本発明においては、処理ユニットとして、特定の内部データパスを備えた回路ユニットを採用することが望ましい。すなわち、ある程度コンパクトなデータパスを備えた処理ユニットをテンプレート的に用意しておき、そのデータパス間の組み合わせを指示してデータフロー型の処理に持ち込むと共に、準備情報あるいは準備命令により、処理ユニットの内部データパスの一部を選択して処理ユニットの処理内容を変更することにより、さらにフレキシブルに、そして短時間にハードウェアを再構成できる。
たとえば、適当な論理ゲートと、この論理ゲートと入出力インタフェースを接続する内部データパスを予め備えたテンプレート的に使用可能な特定のデータパスを備えた処理ユニットは、以下の説明においてはテンプレートと称されている。このような処理ユニットであれば、入出力されるデータの順番を変えたり、論理ゲート間の接続あるいは選択を変えることにより処理ユニットの処理内容を変更できる。そして、トランジスタレベルで回路を再構成するFPGAに比較すると、予め用意された内部データパスの一部を選択するだけで良いので、短時間で処理内容を変更できる。さらに、予め用意された内部データパスを使用するので、冗長な回路要素は少なく、トランジスタの面積利用効率も高い。したがって、実装密度も高く、経済的である。さらに、高速処理に適したデータパスを構築でき、AC特性も高い。このため、本発明においては、準備情報により、第2の実行制御ユニットおよび第2の制御工程において、処理ユニットの内部データパスの一部を選択可能とすることが望ましい。
さらに、準備情報に基づき設定された各処理ユニットのインタフェースを保持するスケジュールを管理するように、第2の実行制御ユニットは処理ユニットのインタフェースを管理するスケジューラとしての機能を備えていることが望ましい。
また、準備情報により、複数の処理ユニットにより構成される処理ブロックの入力および/または出力インタフェースを規定できるようにすることが望ましい。複数の処理ユニットのインタフェースを1つ命令で変更可能とすることにより、複数の処理ユニットが関連するデータパスの変更が1命令で処理することができる。したがって、第2の実行制御ユニットあるいは工程では、準備情報に基づき、複数の処理ユニットにより構成される処理ブロックの入力および/または出力インタフェースを変更可能であることが望ましい。
さらに、処理ブロックの入力および/または出力インタフェースを規定する複数のコンフィグレーションデータを格納したメモリを設け、準備情報によりメモリに格納された複数のコンフィグレーションデータの1つを選択し、処理ブロックの入力および/または出力インタフェースを変更できるようにすることが望ましい。データフロー指定命令によりコンフィグレーションデータを指定できるようにすることにより、命令自体は冗長にせずに複数の処理ユニットのインタフェースの変更をプログラムから制御することができる。
さらに、処理ユニットとして算術論理演算ユニットを備えた汎用処理に適した第1の制御ユニットと、処理ユニットとして特定のデータパスを具備する複数のデータフロー処理ユニットを備えた専用処理に適した第2の制御ユニットとを設けることにより、ネットワーク処理や画像処理などの高速性およびリアルタイム性が要求される処理に適したシステムLSIを提供することが可能となる。そして、本発明の命令セットであれば、第1のフィールドに、算術論理演算ユニットを操作する実行命令を記述でき、第2のフィールドに、算術論理演算ユニットおよび/またはデータフロー処理ユニットのインタフェースを規定する準備情報が記述することが可能であり、上記のシステムLSIの制御に適したプログラム製品を提供できる。
従来は、複雑なデータ処理は、専用回路を用意し、その専用回路を用いる専用命令化するしか対応方法が無くハードウェアコストが増大する。これに対し、本発明の命令セットにおいては、実行命令とは独立して第2のフィールドにより論理演算ユニットのインターフェースおよびその処理内容を記述できるので、パイプライン制御やデータパス制御の構造を命令セットの中に取り込むことが可能となる。したがって、本発明は、プログラムカウンタ近傍の並列処理を実行だけでなく、2つ以上オブジェクトの同時擬似実行や2つ以上の関数の同時擬似実行に有効な手段を提供することになる。つまり、従来の命令セットでは、2つ以上のコンテキストの異なるデータ処理やアルゴリズム実行等の、それぞれ離れたプログラムカウンタに基づく処理が同時に起動ができなかったのに対し、本発明の命令セットを用いてデータフローを適当に定義することにより、プログラムカウンタにかかわらずに処理を実行することが可能となる。
したがって、本発明の命令セットを用いると、並列処理に対して、予めアプリケーション側から見て性能向上に有効と思われるデータパスを第2のフィールドを用いてソフトウェアから組み込むことが可能であり、それにより実現されたデータパス(データフロー)を必要に応じて、さらにソフトウェアから命令レベルで起動することができる。このデータパスは、特定の目的に対応したデータ処理だけでなく、一般のステートマシンを起動するような目的にも使用可能なので、極めて自由度が高い。
また、この第2のフィールドの情報により、先行して次命令の準備サイクルを簡単に発生させることが可能となるために、従来はその演算対象をレジスタにせざるを得なかったものが、バッファリングを前提とすればメモリ(シングルポート/デュアルポート)やレジスタファイルで代用可能となる。すなわち、第2のフィールドに、処理ユニットなどに含まれるレジスタまたはバッファとメモリの間の入出力を指示する命令を記述することを可能とし、第2の実行制御ユニットまたは第2の制御工程において、レジスタまたはバッファとメモリの間の入出力を制御する機能を持つようにすれば、実行命令とは独立してメモリに対する入出力を行うことができる。
このことは、1つ1つの命令シーケンスの関連性を高めると同時にハードウェアリソースの競合を事前に回避する事に貢献するので、複数命令の並列同時実行や外部からの割り込み要因への対応を早めることが可能となる。そして、基本的に、メモリをレジスタと見なせるので、高速なタスクスイッチの実現が可能となる。さらに、従来のファーストフェッチのペナルティを消せないキャッシュ・メモリの代わりに、プリローディング型の高速バッファを採用する事も可能となる為、100%のヒット率を保証しながら一切ペナルティの発生しない高速の組み込みシステムの実現も可能となる。
すなわち、メモリをレジスタとみなせるようにすることにより、割り込み等の複数の非同期処理要求に対し高速対応が可能となり、複雑なデータ処理や連続データ処理への対応を非常にフレキシブルに行うことができる。また、レジスタの対比および復帰に時間がかからないので、タスクスイッチ等への高速対応が極めて簡単である。そして、外部メモリと内部メモリのアクセススピード差の影響を完全に消すことができるので、キャッシュは、ファーストフェッチ・ペナルティの問題を効率良く解決できるといったメリットを得ることができる。したがって、CALL/RETや割り込み処理/IRETを高速で処理することができるので、イベントに対する応答環境を簡単に構築でき、イベントによってデータ処理性能が低下するのを防止できる。
さらに、第1または第2のフィールドを、VLIWのように、複数の実行命令または準備命令を記述なフィールドとし、第1または第2の実行制御ユニットが第1または第2のフィールドに記述された複数の独立した実行命令または準備命令を独立して処理可能な複数の実行制御部を備えているようにすれば、さらにパフォーマンスを向上できる。
そして、本発明にかかる制御ユニットをコアあるいは周辺回路に採用したデータ処理装置を実現することにより、上述したようなメリットを活かし、処理速度が速く、さらに経済的なデータ処理装置を提供できる。
発明を実施するための最良の形態
以下に図面を参照して、本発明をさらに詳しく説明する。図1に、本発明にかかる命令セット(命令フォーマット)の構成を示してある。本発明にかかる命令セット(DAP/DNAの命令セット)10は、第1のフィールドである命令実行基本フィールド(Xフィールド)11と呼ばれる部分と、次の命令実行の効率化を図ることができる第2のフィールドである次命令実行準備サイクル(追加フィールドあるいはYフィールド)12と呼ばれる2つのフィールドを備えている。命令実行基本フィールド(Xフィールド)11は、加減演算、論理和、論理積、比較などのデータの演算、および分岐などのその他の各種のデータ処理の内容を指定し、その結果が格納される先(ディスティネーション)を指定する。また、Xフィールド11は、命令長の使用効率を上げるために実際に実行される命令の情報しか含まない。一方、追加フィールド(Yフィールド)12は、同一の命令セットのXフィールド11の実行命令とは独立した命令(情報)が記述可能であり、たとえば、次の命令の実行準備サイクルに割当てられる。
さらに詳しく命令セット10を説明すると、Xフィールド11は、算術論理演算ユニットなどの処理ユニットに対する命令操作あるいは実行命令(Execution ID)を記述する実行命令フィールド15と、Yフィールド12の有効/無効およびYフィールド12で示す準備命令(準備情報)のタイプを示すフィールド(タイプフィールド)16と、ディスティネーションのレジスタを示すフィールド17とを備えている。タイプフィールド16の内容は、Yフィールド12に関連したものであり、Xフィールド11の他のフィールドの内容とは独立して定義できることは上述した通りである。
また、Yフィールド12は、タイプフィールド16によって規定される準備情報が記述される。このYフィールド12に記述される準備情報は、演算または他のデータ処理を実行可能な状態にするための情報であり、図2に具体的な幾つかの例を示してある。先ず、TYPEフィールド16はXフィールド11に含まれているが、実行命令フィールド15とは独立あるいは無関係に記述できる。そして、Yフィールド12には、アドレスID(AID)21と、それによって利用目的が規定されるアドレス情報22、たとえば、アドレス(ADRS)、入出力アドレス(ADRS.FROM/TO)などを記述するアドレス情報フィールド26として利用することができる。このYフィールド12に記述されたアドレス情報は、レジスタあるいはバッファとメモリ(レジスタファイルを含む)との間のリードおよびライトに用いられ、DMAのようにブロック転送も可能な構成になっている。さらに、入出力(R/W)だけでなく、分岐命令を実行したときの分岐先を示すアドレス(フェッチアドレス、F)、並列実行するときのスタートアドレス(D)などの情報もアドレス情報としてYフィールド12に記述することができる。
また、レジスタタイプの命令、たとえば、算術演算あるいはその他の論理演算命令(MOVE、メモリーリード/ライトなども含む)に対してソース側となるレジスタ(Reg)の情報あるいは即値(イミーディエイト、imm)を規定する情報23もYフィールド12に記述することができる。すなわち、Yフィールド12を以降の実行命令のためのソースを規定するフィールド27として利用することができる。
さらに、Yフィールド12には、算術論理演算ユニット(ALU)あるいは他のデータ処理ユニット、たとえば所定のデータパスを備えたテンプレートのインタフェース(ソース、ディスティネーション)および処理内容の組み合わせを規定する情報25も記述することが可能である。すなわち、Yフィールド12は、リコンフィグラブルなデータパスなどを、特定のデータ処理を行うために、それらのパイプライン(データフローあるいはデータパス)を定義するためのデータフロー指定命令25を記述するフィールド28として利用することができる。もちろん、Yフィールド12には、そのデータフローをスタートする情報および終了する情報を記述することが可能である。したがって、Yフィールド12を用いてリコンフィグラブルなデータパスを定義して生成したデータフローにより、コードRAMからコードをフェッチするプログラムカウンタとは独立した処理を行うことができる。
なお、図1および図2に示した命令セットのフォーマットは、本発明にかかる2つの独立した命令フィールドを備えた命令セットの一例であり、これに限定されないことはもちろんである。たとえば、XおよびYフィールド内でのフィールドの位置は限定されるものではない。また、独立したフィールド、例えば、タイプフィールド16の位置は、本例に限定される必要はなく、Yフィールド12の先頭に位置させることも可能である。また、Xフィールド11とYフィールド12の順番を変えることも可能である。本例においては、実行命令が記述されるXフィールド11にYフィールド12の情報を含ませることによりXフィールド11をデコードすることで、Yフィールド12に準備情報があるか否か、およびその情報の種類を判断できるようにしている。
また、以下ではXフィールド11およびYフィールド12に実行命令あるいは準備命令が記載あるいは記述された例を説明するが、これらのフィールドに命令を記述せず(NOPを記述し)、Xフィールド11あるいはYフィールド12だけが意味を持つような命令セットも可能である。さらに、Xフィールド11に記述された実行命令にかかるレジスタ情報などのオペランドを備えた準備命令、すなわち、同一命令セット10のYフィールド12に、Xフィールド11の実行命令に対し独立していない準備命令が同時に記述された命令セットも可能である。そして、これらの命令セットを、本発明の、Xフィールド11とYフィールド12が独立し、同一命令セット内では無関係となった命令セットと混在してプログラミングすることも可能である。以下では本発明をわかりやすく説明するためにそのような例を具体的には記載していない。しかしながら、Xフィールド11とYフィールド12に記述された内容が独立した命令セット10と、XフィールドとYフィールドに記述された内容が関連した命令セットが混在したプログラム製品あるいはプログラムを記録した記録媒体なども本発明の範囲に含まれる。
図3に、本例の命令セット10の簡単な例を示してある。j−1番目の命令セット10であるT(j−1)は、そのXフィールド11のタイプフィールド16に、同一の命令セットのYフィールド12に32ビットのイミーディエイトが記述されていることが示されている。そして、その命令セットT(j−1)のYフィールド12には、イミーディエイトとして「#00001234H」が記載されている。次のj番目の命令セットT(j)には、Xフィールド11の実行命令フィールド15にMOVEが記述され、ディスティネーションフィールド17にレジスタR3が記載されている。このため、このj番目の命令セットT(j)をフェッチすると、制御ユニットのALUは、前の命令フィールドT(j−1)に定義されたイミーディエイト「#00001234H」をレジスタR3に格納する。
このようにして、本例の命令セット10(以降では、j番目の命令セット10を命令セットT(j)で示す)では、実行命令が記述された命令セットT(j)の前の命令セットT(j−1)によりその実行命令の準備が行われる。したがって、命令セットT(j)だけでは制御ユニットを構成するALUが実行する処理内容は判らないが、2つの命令セットT(j−1)およびT(j)によりALUが実行する処理内容は一義的に決定される。また、命令セットT(j−1)の実行命令フィールド15には、その命令セットのYフィールド12とは独立して命令セットT(j−1)の前の命令セットのYフィールド12により準備された処理を実行する命令が記述されている。さらに、命令セットT(j)のタイプフィールド16およびYフィールド12には、次の命令セットの実行命令フィールドに記述された実行命令の準備をする情報が記述されている。
本例では、ある実行命令がXフィールド11に記述された命令セットT(j)の直前の命令セットT(j−1)のYフィールド12に、その実行命令の準備情報(準備命令)が記述されている。すなわち、準備命令のレイテンシーが1クロックの例となっているが、準備情報が記述される命令セットは、直前の命令セットにかぎられるものではない。例えば、複数のALUを備えた制御ユニットの制御プログラム、あるいは後述するデータフロー制御を目的とする準備命令などであれば直前の命令セットである必要はない。準備命令によってセットされたALUの状態(環境あるいはインタフェース)あるいはテンプレートの構成が、その準備命令に対応する実行命令を備えた命令セットがフェッチされて実行されるまで保持されるのであれば、実行命令を備えた命令セット10の数命令前の命令セット10のYフィールド12で準備命令を記述できる。
図4に、図3に示した命令セットによりレジスタとして機能するレジスタファイルあるいはメモリに値が格納される様子を示してある。プロセッサがj−1番目の命令セットT(j−1)をフェッチして、そのYフィールド12の準備命令によりイミーディエイト「#00001234H」がプロセッサのALUのソース側のレジスタDP0.Rにラッチされる。そして、プロセッサが次のj番目の命令セットT(j)をフェッチし、そのXフィールド11の実行命令であるMOVEを実行するサイクルでバッファ29bにストアされる。その後、メモリまたはレジスタファイル29aのレジスタR3のアドレスにバッファ29bの値が格納される。したがって、格納先がレジスタではなくメモリであっても、本例の命令セット10を用いると、準備情報に基づく処理を実行命令に先立って行うことにより、実行命令のサイクルでデータをロードあるいはストアすることができる。
図5に、本例の命令セット10により処理内容が記述されたプログラムを実行可能な制御ユニット30を備えたプロセッサ(データ処理装置)38の概略構成を示してある。本例の命令セット10を具備したマイクロコードあるいはマイクロプログラム18はコードROM39に記憶されている。制御ユニット30は、コードROM39からマイクロプログラムの命令セット10をプログラムカウンタによって随時フェッチするフェッチユニット31と、フェッチされた命令セット10のXフィールド11をデコードしてALU34の処理内容を決定あるいはアサートすると共に、ALU34の論理演算結果をディスティネーションのレジスタ34dを選択してラッチする機能を備えた第1の実行制御ユニット32を備えている。
さらに、制御ユニット30は、フェッチされた命令セット10のYフィールド12をXフィールド11のタイプフィールド16の情報に基づいてデコードし、演算処理ユニット(ALU)34のソース側のレジスタ34sを選択する機能を備えた第2の実行制御ユニット33を備えている。この第2の実行制御ユニット33は、タイプフィールド16の情報を除き、Yフィールド12の命令あるいは情報をXフィールド11の内容とは独立して解釈することができる。第2の実行制御ユニット33は、さらに、Yフィールド12に記述された情報がデータフローを規定するものであれば、ALU34のソース側およびディスティネーション側の選択あるいは設定、すなわち、ALU34のインタフェースを決定し、さらに、その状態を所定のクロックあるいは解除の指示があるまで連続的に保持する機能も備えている。また、Yフィールド12の情報がデータフローを規定する場合は、この第2の実行制御ユニット33は、さらに、ALU34の処理内容も決定し、その状態を所定の期間保持する。
したがって、第1の実行制御ユニット32は、Xフィールド11の実行命令をデコードし、その実行命令の演算または他のデータ処理が実行できるように予め設定された処理ユニットにより演算または他のデータ処理を進める第1の制御工程を行う。一方、第2の実行制御ユニット33は、Yフィールド12の準備情報をデコードし、第1の実行制御ユニット32の実行内容、およびこの第1の実行制御ユニット32で行われる第1の制御工程とは独立に、処理ユニットの状態を演算または他のデータ処理が実行できるように設定する第2の制御工程を行う。
本例の制御ユニット30は、さらに、このような実行制御ユニット32および33と、ALU34の組み合わせを複数備えており、これらによって様々な処理が実行できるようになっている。したがって、本例の制御ユニット30をコアあるいは周辺回路として画像データを高速で処理するようなDSP、汎用のデジタル処理を高速で行えるCPUあるいはMPUなどを構成することが可能である。
図6ないし図9に、本例の制御ユニット30で実行するプログラムの一例を示してある。図6に示したサンプルプログラム41は、従来のCPUあるいはDSPで実行可能なように作成した例である。このプログラムは、#STARTのアドレスから始まるテーブルから最も大きな値を抽出し、最終データであることを示す#ENDを検出すると終了するプログラムである。
図7に記載したプログラム42は、図6と同じ処理を本発明にかかる命令セットを実行可能な制御ユニット30に適したプログラムに変換したものであり、2命令を1つの命令セットで実行できる例を示してある。図7に示したプログラムは、コンパイラを通して本発明にかかる命令セットの実行プログラムに変換され、制御ユニット30で実行される。
図8にコンパイルされた本発明の命令セット10を有するプログラム43を示してあり、このような命令セット10を有するプログラム製品18がROM39、RAMあるいは他の適当なデータ処理装置で読取可能な記録媒体に記憶されて提供される。また、ネットワーク環境で交換される伝送媒体にプログラム製品43あるいは18を埋め込んで流通することも可能である。このプログラム43と、プログラム42とを比較すると判るように、第1の番目の命令セット10のYフィールド12で2番目の命令セット10の実行命令15の準備が行われる。すなわち、タイプフィールド16に準備情報としてイミーディエイトがYフィールド12に記述されていることが示されており、Yフィールド12をデコードした第2の実行制御ユニット32によりイミーディエイトがALU34のソースとなるキャッシュあるいはレジスタに提供される。そして、2番目の命令セット10を実行するときは、その実行命令を行う準備が整ったALU34に対し実行命令15を行うことができる。すなわち、ディスティネーションフィールド17に規定されたレジスタに対し、実行命令フィールド15のMOVE命令を単に実行するだけになる。
同様に、2番目の命令セット10のYフィールド12には、次の3番目の命令セット10の実行命令フィールド15の実行命令、MOVEおよびADDの準備情報として、ソース側のレジスタを設定する命令が記述されている。このため、タイプフィールド16にはレジスタとイミーディエイトがYフィールド12に記述されていることが定義されている。
本例のプログラム43は、3番目以降の命令セット10も上記と同様であり、3番目の命令セット10のタイプフィールド16およびYフィールド12に、次の4番目の命令セット10の実行命令15の準備情報が記述されている。4番目の命令セット10の実行命令15は、比較処理(CMP)と、条件分岐処理(JCC)である。このため、3番目の命令セット10では、そのタイプフィールド16とYフィールド12とにより、次の実行命令15で比較対象となるレジストR1と#ENDのイミーディエイトの値(#FFFFFFFFH)と、分岐先#LNEXTのアドレス(#00000500H)が準備情報として記述されている。したがって、4番目の命令セット10の実行命令15を実行するときは、比較回路として動作する演算処理ユニット34に入力値がセットされているので、そのサイクルで比較結果を出す。また、ジャンプアドレスがフェッチアドレスレジスタにセットされているので、実行命令15の条件分岐では、比較結果によって、そのサイクルで遷移先の命令セット10をフェッチすることができる。
4番目の命令セット10では、そのタイプフィールド16およびYフィールド12により、次の5番目の命令セット10の実行命令15である比較処理(CMP)と条件分岐処理(JCC)の準備情報として、比較するレジスタの情報(R0およびR1)と、分岐先#LOOPのアドレス(#00000496H)が記述されている。したがって、4番目の命令セットと同様に、5番目の命令セット10を実行すると、すでにXフィールド11に記述されたCMPとJCCを演算処理ユニット34で実行するインタフェースは整っているので、そのサイクルで比較および条件分岐処理が実行される。
その5番目の命令セット10のYフィールド12には、次の6番目の命令セット10の実行命令である移行処理(MOVE)および分岐処理(JMP)の準備情報として、ソース側のレジスタ情報(R1)と遷移先#LOOPのアドレスが記述されている。したがって、6番目の命令セット10を実行すると、そのサイクルでデータをディスティネーションのレジスタR0に格納し、遷移先の#LOOPのアドレスから命令をフェッチすることができる。
このように、本発明の命令セットによれば、実行命令と、その実行命令を行うためのインタフェースなどを記述した準備命令とを分離することができ、さらに、準備命令を実行命令に先立ってフェッチされる命令セットに記述して処理することができる。したがって、各々の命令セットに記述された実行命令を行うときは、ALU34のソース側にデータがリードされているので純粋に算術命令だけを行うようになる。このため、AC特性が良く、実行周波数特性が向上する。さらに、実行命令に対する前後の差はあるが、従来のパイプラインと同様に、命令フェッチ、レジスタデコード、処理実行などを段階的に行うことが可能であり、スループットも向上できる。
また、本例のプログラムは2命令を1命令セットに記述できるようになっているので、VLIWと同様にプログラムカウンタの近傍の複数の命令を並列実行することにより処理速度を向上することができる。
さらに、4番目の命令セットの実行命令フィールド15には条件分岐が記述されており、その分岐先のアドレスは、この命令セットに先行する3番目の命令セットのYフィールド12に記述されている。したがって、4番目の命令セットを実行する際に、あるいはそれに先立ってフェッチレジスタに分岐先のアドレスをセットし、分岐条件が成立したときにペナルティなく分岐先の命令セットをフェッチあるいは実行することができる。さらには、分岐先の命令をプリフェッチしておくことも可能であり、分岐先の実行命令を実行する準備を事前に整えておくことも可能となる。したがって、分岐先の命令であっても1クロックの無駄もなく実行することが可能であり、1クロック単位で処理を正確に定義することができる。
図9には、さらに、本発明の命令セット10のYフィールド12を用いてデータフローを定義し、そのデータフローにより上記と同様の処理を行う、本発明のプログラム44を示してある。このプログラム44に記述されたデータフロー指定命令25の内、DFLWIは、データフローの初期設定を行う命令であり、DFLWCはデータフロー(データパス)を構成する演算処理ユニット34の接続情報(インタフェースの情報)および処理内容を規定する命令である。また、DFLWTはデータフローの終了条件を規定する命令であり、最後に、このようにして定義されたデータフローにデータを入力して処理を行うDFLWSが記述されている。これらのデータフロー指定命令25は、Yフィールド12に準備情報として記述され、第2の実行制御ユニット33でデコードされ、処理ユニット34でデータ処理を行うための構成(コンフィグレーション)がセットされる。
図9に示した本例のプログラム44を実行する際には、プログラムのデータフロー指定にしたがって第2の実行制御ユニット33が、第2の制御工程として処理ユニットの入力および/または出力インタフェースを、その処理ユニットの実行時期とは独立して設定し、さらに、処理ユニットの処理内容も規定する処理を行う。また、第2の実行制御ユニット33は、スケジューラ36としても機能し、第2の制御工程として各処理ユニットのインタフェースを維持するスケジュールを管理する。
このため、図10に示すように、スケジューラ36として機能する第2の実行制御ユニット33により、3つの演算処理ユニット34のインタフェース(入出力)と、その処理内容が規定され、その状態あるいはコンフィグレーションが終了条件が成立するまで保持される。したがって、これらの演算処理ユニット34により構成されるデータフローあるいはデータパスにより、プログラムカウンタとは独立して次々と図6に示した処理と同じ処理が進行する。すなわち、データフロー指定を行うことにより、3つの演算処理ユニット34によって制御ユニット30の中に、その処理のための専用回路が事前に設けられた状態となり、プログラムカウンタの制御から外れて最大値を求める処理を実行することができる。そして、DP1.R1と#ENDが同じになることをDP1.SUBとしての機能を果たすALU34で判断するとデータフローが終了する。
したがって、図9から判るように、データフローを定義することにより分岐命令を用いずに図6あるいは図7に記載されたプログラムを同じ処理を実行することができる。このため、汎用の制御ユニット30でありながら、専用回路を備えた制御ユニットと同様に特定の処理を非常に高速に効率良く行うことが可能となる。
本発明にかかる命令セットおよび制御ユニットにより、様々な処理を行うデータフローあるいは疑似データフローを制御ユニットに設けることができる。これらのデータフローはテンプレートとして他の処理あるいは他のプログラムにも適用できるものであり、ソフトウェアを用いてハードウェアを随時、特定のデータ処理に適した構成に変更でき、それを他のプログラムあるいは他のハードウェアにおいても実現できることを意味する。そして、このようなデータフローを複数設定することも可能であり、マルチコマンドストリームをソフトウェアを用いて制御ユニットの中に定義することができる。したがって、複数の処理を並列実行することが極めて簡単となり、その実行内容をプログラミングにより自由に制御することができる。
図11に、本例のXフィールド11およびYフィールド12を備えた命令セット10によりデータフローを定義することができる複数の処理ユニット(テンプレート)を備えたデータ処理装置の概略構成を、システムLSI50のイメージで示してある。このシステムLSI50は、データの処理動作を行うプロセッサ領域51と、そのプロセッサ領域51の処理を制御するプログラム18が格納されたコードRAM52と、その他の制御情報あるいは処理用のデータを記憶し、さらに、一次的なワーク領域ともなるデータRAM53とを備えている。プロセッサ領域51は、プログラムコードをフェッチするフェッチユニット(FU)55と、多目的な処理を行う汎用的なデータ処理ユニット(多目的ALU、第1の制御ユニット)56と、データフロー方式でデータを処理することができるデータフロー処理ユニット(DFU、第2の制御ユニット)57とを備えている。
本例のLSI50は、1つの命令セット10に1組のXフィールド11およびYフィールド12を含んだプログラムコードをデコードして処理を実行できるようになっている。このため、FU55は、フェッチした命令セット10のXフィールド11の命令を格納できるフェッチレジスタ(FR(X))61xと、Yフィールド12の命令を格納できるフェッチレジスタ(FR(Y))61yとを備えている。また、FR(X)61xにラッチされた命令をデコードするXデコーダ62xと、FR(Y)61yにラッチされた命令をデコードするYデコーダ62yとを備えている。また、これらのデコーダ62xおよび62yのデコード結果により次の命令セットのアドレスが格納され、プログラムカウンタとして機能するレジスタ(PC)63を備えている。したがって、コードRAM52に格納されているプログラムの所定のアドレスから次の命令セットを随時フェッチすることができる。
本例のLSI50においては、Xデコーダ62xが上述した第1の実行制御ユニット32としての機能を果たす。したがって、Xデコーダ62xが、命令セット10のXフィールド11に記述された実行命令に基づき、本発明の第1の制御工程を実行する。また、Yデコーダ62yが第2の実行制御ユニット33としての機能を果たす。したがって、Yデコーダ62yが、命令セット10のYフィールド12に記述された準備情報に基づき、本発明の第2の制御工程を実行する。すなわち、本例のデータ処理装置の制御においては、フェッチユニット55において、本発明の命令セットをフェッチする工程が行われ、Xデコーダ62xにおいて、第1のフィールドの実行命令をデコードし、その実行命令の演算または他のデータ処理が実行できるように予め設定された処理ユニットにより当該演算または他のデータ処理を進める第1の制御工程が行われ、Yデコーダ62yにおいて、第1の制御工程とは独立して、第2のフィールドの準備情報をデコードし処理ユニットの状態を演算または他のデータ処理が実行できるように設定する第2の制御工程が行われる。
多目的ALU56は、図5で説明した演算ユニット(ALU)34と、このALU34の入出力のデータを格納するレジスタ群35とを備えている。FU55でデコードされた命令がALU34の実行命令と準備情報であれば、Xデコーダ62xでデコードされた信号φxと、Yデコーダ62yでデコードされた信号φyは多目的ALU56に供給され、上記にて説明したようにALU34における処理が実行される。
DFU57は、様々な処理を行うデータフローあるいは疑似データフローを構成するための複数のテンプレート71が配置されたテンプレート領域72を備えている。それぞれのテンプレート71は、図9および図10に基づき説明したように、演算処理ユニット(ALU)などのような特定のデータパスあるいはデータフローとしての機能を備えている処理ユニット(処理回路)である。そして、Yフィールド12に準備情報として記述されたデータフロー指定命令25をYデコーダ62yがデコードし、その信号φyにより、DFU57の処理ユニットであるテンプレート71それぞれのインタフェースと処理内容を規定することができる。
したがって、これらのテンプレート71の接続および処理内容をYフィールド12に記述したデータフロー指定命令25によって変更することが可能である。このため、これらのテンプレート71の組み合わせにより、テンプレート領域72に特定のデータ処理に適したデータパスをプログラム18によりフレキシブルに構成することが可能となる。したがって、プロセッサ51の中に、特定の処理のための専用回路が設けられた状態となり、そこでの処理をプログラムカウンタの制御から外れて実行することができる。すなわち、データフロー指定命令25によりテンプレート71の入出力と処理内容を変更することができるので、本例のプロセッサ51はソフトウェアを用いてハードウェアを随時、特定のデータ処理に適した構成に変更することができる。
図12(a)に示したように、本例のプロセッサ51のDFU57で入力データφinに処理を施して出力データφoutにする場合、たとえば、図12(b)に示すように、テンプレート1−1、1−2および1−3を直列に繋いであるデータ処理を行うようにテンプレート71のインタフェースをデータフロー指定命令25で設定することができる。同様に、テンプレート領域72の他のテンプレート71に対してもそれらのインタフェースをセットして複数のテンプレート71を適当に組み合わせてデータパスあるいはデータフローを構成することが可能であり、テンプレート領域72に入力データφinの処理に適した専用処理ユニットあるいは専用データパス73を複数個、プログラム18により随時構築することができる。
一方、入力データφinに対する処理が変わったときは、図12(c)に示すように、データフロー指定命令25によりテンプレート71の間の接続を変えることが可能である。すなわち、データフロー指定命令25をYデコーダ62yがデコードし、該当するテンプレート71のインタフェースを変更することができる。このようなYデコーダ62yの制御(第2の制御工程)により、テンプレート1−1、2−nおよびm−nを直列に接続して、他の異なる処理を実行するのに適した1つあるいは複数のデータパス73をテンプレート領域72に構築することが可能である。
また、テンプレート71を単独で、あるいは複数のテンプレート71を組み合わせて構成された処理ユニットは、並列して実行される他の処理あるいは他のプログラムに割り当てることも可能である。複数のプロセッサ51が適当なバスで接続されていれば、他のプロセッサ51が主として行っているデータ処理のためにテンプレート71を組み合わせたトレイン(データパス)73を構成することも可能であり、テンプレート71というデータ処理資源を極めて有効に活用することができる。
さらに、ANDやORなどの単純な論理ゲートの実現をもカバーする目的のFPGAとは異なり、本発明に係るテンプレート71は、ALUなどとしての機能あるいは論理ゲートを基本的に備えた特定のデータパスを内部に実装する、より高いレベルのデータ処理ユニットである。そして、データフロー指定命令25により、テンプレート71のインタフェースを定義する、あるいは再定義することにより、それらの組み合わせを変えて特定の処理に適したさらに大きなデータパスを構成している。さらに、データフロー指定命令25によりテンプレート71で実行する処理内容を定義できるが、その際も、テンプレート71の内部のALUあるいは他の論理ゲートなどの接続を変更することで、テンプレート71の内部データパスの一部を選択する形で、テンプレート71で実行する処理内容を定義するようにしている。
したがって、本例のテンプレート71が複数配置されたDFU57のハードウェアを特定のデータ処理に適した構成に変更するときには、FPGAのようにチップ全体を、あるいは限定された論理ブロック単位でもマッピングしなおす必要はなく、テンプレート71あるいはテンプレート領域72に予め設けられたデータパスを切り替えたり、それらの一部を選択することによりに、予め用意されたALUあるいは論理ゲートを用いて所望のデータパスを実現することができる。すなわち、テンプレート71の内部では論理ゲートのコネクションを必要な範囲で設定しなおし、テンプレート71の間でもそのコネクションを必要な範囲で設定し直すだけでよい。このため、極めて短時間に、クロック単位で、ハードウェアを特定のデータ処理に適した構成に変更することができる。
さらに、論理ゲートが内蔵されていないFPGAでは、極めて汎用的である反面、特定のアプリケーションの機能を実現するロジック回路を形成するためには無駄となる配線も多く、冗長で信号経路も短くはならない。したがって、実行するアプリケーションに特化したASICに対して実装面積が大きくなり、また、AC特性も劣化する。これに対し、予め適当な論理ゲートを内蔵している本例のテンプレート71を採用したプロセッサ51では、FPGAのように膨大な無駄な領域が発生するのを防止でき、AC特性も改善することができる。したがって、テンプレート71をベースとした本例のデータ処理ユニット57は、ハードウェアをプログラムで変更可能なリコンフィグラブルな構成の処理装置であり、FPGAを採用した処理装置に対し、より高いレベルでソフトウェアのフレキシビリティとハードウェアの高速性とを備えたデータ処理装置を提供することができる。
そして、本例のテンプレート71は、適当な論理ゲートを予め内蔵しているので、特定のアプリケーションの処理を実現するために必要な論理ゲートを適当な実装密度で実現することができる。このため、テンプレート71を用いたデータ処理ユニットは経済的である。また、FPGAでデータ処理装置を構成した場合には、実装密度の低下をカバーするために、論理を再構成するプログラムのダウンロードを頻繁に行うことを検討する必要があり、そのための時間も処理速度が低下する原因となる。これに対し、本例のテンプレート71を用いたプロセッサ51では、実装密度が高いので、実装密度の低下をカバーする必然性は減少し、そのためにハードウェアを再構成する要求は少なくなる。そして、ハードウェアの再構成もクロック単位で制御することができる。これらの点でも、FPGAをベースとしたリコンフィグラブルな処理装置と異なり、ハードウェアをソフトウェアにより再構築できる処理装置であって、コンパクトで実行速度の速いデータ処理装置を提供することができる。
さらに、図11に示したDFU57は、テンプレート領域72に配置されたテンプレート71のインタフェースおよび処理内容(以降においてはコンフィグレーションデータ)を一括して定義あるいはセットすることができるコンフィグレーションレジスタ(CREG)75と、そのCREG75にセットする複数のコンフィグレーションデータCi(iは適当な整数を示す、以下においても同様である)を記憶したコンフィグレーションRAM(CRAM)76を備えている。そして、データフロー指定命令25として「DFSET Ci」といった命令が用意されており、Yデコーダ62yがこの命令をデコードすると、CRAM76に記憶されているコンフィグレーションデータCiの中から所望のデータがCREG75にロードされる。その結果、テンプレート領域72に配置された複数のテンプレート71のコンフィグレーションを一括して変更できる。あるいは、複数のテンプレート71からなる処理ブロック単位でそのコンフィグレーションを変更することができる。
また、DFLWIあるいはDFLWCといった上記のようなデータフロー指定命令25をYデコーダ62yがデコードすることにより、個々のテンプレート71のコンフィグレーションを設定あるいは変更することも可能である。したがって、本例のDFU57では、多くの情報が必要となる複数のテンプレート71のコンフィグレーションを1命令で変更することが可能であり、命令効率がよく、さらに、再構成のために消費される時間が短縮されている。
さらに、本例のDFU57は、CRAM76にブロック単位でコンフィグレーションデータをダウンロードするコントローラ77を備えている。また、データフロー指定命令25として「DFLOAD BCi」が用意されており、Yデコーダ62yがこの命令をデコードすると、データRAM53などに予め用意されている多数のコンフィグレーションデータ78の中から、進行中の処理あるいは今後発生するであろう処理のためのコンフィグレーションデータCiを予めコンフィグレーションメモリであるCRAM76にダウンロードしておくことができる。このような構成によりCRAM76に小容量の高速な連想メモリなどを採用することが可能となり、さらに短時間でハードウェアをフレキシブルに変更することができる。
図13に、テンプレート71の一例を示してある。このテンプレート71は、DFU57に用意されたデータフローRAM(DFRAM)79を介して他のテンプレート71とデータを交換することができる構成となっており、I/Oインタフェース81を介して他のテンプレート71の処理結果が入力キャッシュ82a〜82dに入力され、処理された結果が出力キャッシュ83a〜83dに出力される。このテンプレート71は、これらの入力キャッシュ82a〜82dに各々ストアされたデータA、B、CおよびDに対し以下の処理を実行し、演算結果は出力キャッシュ83bに、比較した結果は出力キャッシュ83cにストアすることができるデータパス88を備えている。このテンプレート71の処理結果は、再びI/Oインタフェース81およびDFRAM79を介して他のテンプレートに出力される。
IF A == ?
THEN (C+B)==D
ELSE (C-B)==D ・・・(A)
このテンプレート71は、独自のコンフィグレーションレジスタ84を備えており、このレジスタ84に格納されるデータによって複数のセレクタ89を制御し、制御部85、加算器86、比較器87などの論理ゲートに入力する信号を選択することができる。したがって、テンプレート71は、コンフィグレーションレジスタ84のデータを変更することにより、データパス88の一部を用いた処理も可能であり、たとえば、制御部85を用いずに、以下のような処理を実行させることも可能である。
(B+C)==D
(B-C)==D ・・・(B)
また、同様にコンフィグレーションレジスタ84のデータを変えることにより、このテンプレート71は、データパス88の一部を用いて、制御部85による条件判定回路、加算器86を用いた加減演算回路、比較器87を用いた比較回路としても使用することができる。これらの論理ゲートはテンプレート71に予め作りこまれた専用回路で構成されているので、回路構成としても、処理時間としても無駄がない。そして、入力および出力データのコンフィグレーションは、コンフィグレーションレジスタ84によって制御されるインタフェース81により変更することが可能であり、所望のデータ処理を行うデータフローの全部あるいは一部を、本例のテンプレート71で処理することができる。
このテンプレート71は、さらに、独自のコンフィグレーションレジスタ84のデータを上述したCREG75からのデータと、FU55のYデコーダ(YDEC)62yからのデータのいずれに基づいても書き換えることが可能であり、その選択はYデコーダ62yからの信号により制御することができる。すなわち、上述したようなテンプレート71のコンフィグレーションは、データフロー指定命令25に基づきYデコーダ62yあるいはこのYデコーダ62yで実行される第2の制御工程によって行うことができる。さらに、DFSET命令などによりCRAM76に記憶されたコンフィグレーションデータCiにしたがって、他のテンプレートと共にコンフィグレーションを変えてハードウェア構成を変更することも可能である。また、データフロー指定命令25によりコンフィグレーションレジスタ84のデータを設定できるので、テンプレート71の特定のデータパス88を部分的に選択して使用することも可能である。
このため、テンプレート71を個別でもグループあるいはブロック単位でもデータフロー指定命令25によってコンフィグレーションを変え、プロセッサ51のデータパスをフレキシブルに構成することができる。
テンプレート71の構成は本例に限定されるものではなく、他のデータ処理を実現可能なように論理ゲートを組み合わせた、適当な種類と数のテンプレートを用意しておくことにより、それらの組み合わせを変えたり、処理内容の一部を変更することにより、多くのデータ処理をテンプレート71を組み合わせたデータパスにより処理することができる。すなわち、本発明によれば、ある程度コンパクトなデータパスを幾種類かのテンプレートとして用意しておき、そのデータパス間の組み合わせを指示して、データフロー型の処理に持ち込むことにより高性能化を図ることが可能である。そして、テンプレートでは対応できない処理は、プロセッサ51の多目的ALU56の機能を用いて実行することが可能である。さらに、本例の多目的ALU56は命令セット10のYフィールド12に記述された準備命令により分岐などにより発生するペナルティを最小限に止められるようになっている。このため、本例のプロセッサ51を搭載したシステムLSI50により、プログラムで処理を記述するのと同様に柔軟にハードウェアを変更し、高速処理あるいはリアルタイム処理が可能な高性能のLSIを提供することができる。また、アプリケーションの変更や仕様変更などに対して柔軟に対応でき、仕様変更などに伴い処理性能が低下することも防止できる。
システムLSI50を開発あるいは設計する時点で、システムLSI50を用いて実行するアプリケーションの概要が判明している場合には、そのアプリケーションの処理に適した構成のテンプレートを中心にテンプレート領域72を構成することが可能であり、より多くのデータ処理をデータフロー型の処理で実行し、処理性能を高めることが可能である。汎用的なLSIを提供する場合には、浮動小数点演算、乗除算、画像処理などの汎用のアプリケーションで多く発生する処理に適したテンプレートを中心にテンプレート領域72を構成することが可能である。
このように、本発明にかかる命令セットおよびデータ処理装置により、様々な処理を行うデータフローあるいは疑似データフローを備えたLSIを提供することが可能であり、ソフトウェアを用いてデータフローを実行するハードウェアを随時、特定のデータ処理に適した構成に変更できる。また、上記に説明した、テンプレートの組み合わせによりデータフロー型の処理を実行するアーキテクチャ、すなわち、DFU57あるいはテンプレート領域72は、Xフィールド11およびYフィールド12を備えた命令セット10とは独立して、制御ユニットあるいはプロセッサなどのデータ処理装置に組み込むことが可能である。そして、FPGAよりも高速処理が可能であり、ハードウェアの変更に係る時間も短く、AC特性も良いデータ処理装置を提供することができる。
また、本例のDFU57あるいはテンプレート領域72を、従来型の汎用の組込プロセッサ、すなわち、ニーモニックなコードで動作するプロセッサと共に組み込んでシステムLSIを構成することも可能であり、テンプレート71で対応できない処理は、汎用のプロセッサで処理することができる。しかしながら、従来のプロセッサでは、分岐のペナルティや、演算処理のためのレジスタを準備するためにクロックを消費するなどの問題があることは上述した通りであり、本例のX−Yフィールドを備えた命令セット10をデコードして実行できるプロセッサ51のような形態が望ましい。
さらに、本例のプロセッサ51および命令セット10であれば、Yフィールド12を用い、他の処理と並列して、DFU57のコンフィグレーションをデータ処理を実行する前に設定あるいは変更することが可能であり、処理効率およびプログラム効率の面で優れている。従来のニーモニックな命令コードと、データフロー型の命令コードとを1つの命令セットに記述することによりプログラム効率を高めることも可能である。しかしながら、本例の命令セット10のYフィールド12の機能は、データフロー型の命令コードを記述するだけでないことは上述したとおりである。
また、本発明に係るプロセッサは、Yフィールド12により実行に先立って物理的なデータパスの構成を変えることができる。これに対し、従来のプロセッサでは、複数のマルチプロセッサ間の接続方法が、共有メモリ等を通す方法しか存在せず、アイドル状態のプロセッサが存在しても、その内部のデータ処理ユニットを外部から利用する方法が無かった。本発明にかかるデータ処理装置においては、適当なデータフローを設定することにより、余っているハードウェアを他の制御ユニットあるいはデータ処理装置により使用するといったことも可能となる。
さらに、副次的な効果として、命令実行シーケンスの効率化と内部データパスの独立性の確保と自由度(流用度)の向上により、本発明にかかる制御ユニットあるいはそれを用いたプロセッサにおいては、実行するハードウェアに余裕さえあれば、全く性質の異なるコンテキストの命令シーケンスを同時に供給しても問題無く実行することが可能となる。
更に、現在、ハードウェアとソフトウェアの強調設計によるメリットが盛んに指摘されるようになったが、本発明による命令セットおよび制御ユニットを採用することにより、ユーザ側の要求するアルゴリズムやデータ処理を許されるハードウェア・コストでどう効率良く経済的に実現可能かという事に対しする1つの回答を与えることができる。例えば、ハードウェア・コストを最小に抑制しながら、性能向上に貢献可能なデータパス(データフロー)を、過去のデータパスに関する構成結果情報である本発明にかかる命令セット(旧DAP/DNA)のデータ情報と、その後に追加されるハードウェア構成情報およびデータ処理を実行するシーケンス情報から新しいタイプの組み合わせ結果、すなわち、新しいデータフローを定義するソフトウェアを導き、極めて無駄の少ない最適解を提供することが可能となる。
また、従来は、ハードウェア構成が要素化され難いために、その相互の組み合わせ自体の柔軟性が無く、基本的には、性能を上げるために1つ新規のデータパスを追加するというようなやり方が主流であった。そして、性能向上のための情報蓄積の点でも、実際にそれを実現する上で必要となるハードウェア情報の追加という観点でも、数値化し難くデータベース化することは困難であった。これに対し、本発明によれば、ある程度コンパクトなデータパスをいくつかテンプレート的に用意しておき、そのデータパス間の組み合わせを指示して、データフロー型の処理に持ち込むことにより高性能化を図ることが可能である。そして、極めて細かい単位でのハードウェアとソフトウェアとの連携の見積もりが容易となる。また、ハードウェアとソフトウェアのトレードオフ情報を蓄積することも可能で、データパス単位でその組み合わせの可能性が、処理性能に対する貢献度と密接に結びつくことになる。したがって、ハードウェアとソフトウェアの緊密な実行性能データや処理要求に応じた性能コストの正確な見積もりを蓄積することが可能となる。もちろん、これらのデータパスは主要な処理あるいは汎用的な処理の実行を停止させないで実現することも可能となるため、性能要求に対して、何をどれだけどのように追加すれば、どのような結果が期待出来るということを、純粋に過去に蓄積された本発明にかかる命令セットおよびハードウェアのデータから予測する事が可能とする。
これは、現在行われている設計コストや仕様策定コストの著しい低減に貢献するだけで無く、次の新しい設計に対して、新規に追加すべきハードウェアとソフトウェアのトレードオフを必要最小限で完了させる事に貢献する。また、処理形態に応じて、内部のデータパスを外部へ貸し出しする事も容易にする為、ハードウェアのリソースシェアリング化が可能となり、複数の本発明にかかるモジュール(DAP/DNAモジュール)の間で並列処理化を極め、コンパクトなハードウェアで実現する事が可能となる。
なお、上記に示したデータ処理装置および命令セットなどは、本発明の一例に過ぎず、たとえば、データ処理装置においては、コードRAMあるいはデータRAMなどを外部のRAMあるいはROMとしたり、これらに加えて外部のDRAMあるいはSRAMなどとのインタフェースを設けることも可能である。さらに、外部の他のデバイスと接続するための入出力インタフェースなど、システムLSIなどのデータ処理装置として公知の機能を備えたデータ処理装置も本発明に含まれる。したがって、本発明は以下の請求の範囲の記載により理解および把握され、それらの請求の範囲に含まれる変形例は全て本発明の範囲に含まれる。
また、本発明の命令セットおよびデータ処理装置により提供される新しいプログラミング環境においては、上述した以外にも特殊な命令を設けることが可能である。例えば、現在のプログラムとは別に、1つ以上のオブジェクト(プログラム)を同時に起動し、並列処理起動を命令レベルでサポートするXFORK、オブジェクト(プログラム)間の同期を指定するXSYNK、並列処理間のパイプライン結合を命令するXPIPE、現在のオブジェクトを終了し、次のオブジェクトを起動するXSWITCHなどが考えられている。
以上に説明したように、本発明にかかる命令セットおよびそれを用いたプログラミングおよびそれを実行可能なデータ処理装置の技術は、従来の命令セットの構成方法そのものを大幅に変更するものであり、これにより、従来技術では対応の難しかった上述したような問題を上手く解決し、大きな性能向上を図ることができる。
すなわち、本発明にかかる命令セットは、命令セットの構成方法を従来の命令セットの構成方法とは全く異なる視点から見直すことにより、従来技術では解決の極めて困難と思われる多くの問題を、極めて効率良く解決している。実際、従来技術においては、その命令セットの構成法とハードウェアによる命令供給(入手)方法が、極めて画一的で伝統的な先入観により実現されていたため、本質的な意味での解決を遠ざけており、その問題点を全て膨大で複雑なハードウェア構成により解決しようとすることで社会へ貢献すべきテクノロジーとその上に構築される各種の情報処理製品の開発コストを膨大に引き上げる原因となっていた。本発明は、これを本来あるべきアプリケーション要求を優先した命令セットを実現することにより、単に製品性能の効率化に止まらず、その高い開発効率と製品の品質保証を得やすい手段を提供することができる。
また、本発明により、性能向上に貢献可能なデータパス(データフロー)をテンプレートという資産と、それを使用する命令セットという資産で蓄積できる。さらに、その後に追加されるハードウェア構成情報およびデータ処理を実行するシーケンス情報に基づき随時更新し最適解を求めるようにすることができる。したがって、従来存在したアプリケーション間の資産の共有化とハードウェア資産の共有化、及び高性能化に対する適切なハードウェア投資がより健全な方向へ向かい、ネットワーク化社会を構築する上でのテクノロジー・インフラとしても大きく貢献可能となることが期待できる。
産業上の利用可能性
本発明のデータ処理装置は、様々なデータ処理を実行可能なプロセッサあるいはLSIなどとして提供することが可能であり、電子素子の集積回路のみならず、光素子、さらには電子素子および光素子を集積した光集積回路装置にも適用することができる。特に、本発明の命令セットを備えた制御プログラムおよびデータ処理装置においては、データ処理を柔軟に、そして高速に実行できるので、ネットワーク処理や、画像処理などの高速性およびリアルタイム性能を要求されるデータ処理装置に好適なものである。
【図面の簡単な説明】
図1は、本発明の命令セットの概要を示す図である。
図2は、図1に示す命令セットのYフィールドをさらに詳しく説明する図である。
図3は、図1に示す命令セットを実際に用いた簡単な例を示す図である。
図4は、図3に示す命令セットによりデータがレジスタに格納される様子を示す図である。
図5は、本発明の命令セットを実行可能なデータ処理装置の例を示す図である。
図6は、従来のCPUあるいはDSPで実行可能なサンプルプログラムである。
図7は、本発明にかかるデータ処理装置のプログラム例である。
図8は、図7に示すプログラムを本発明にかかる命令セットの実行プログラムにコンパイルした例を示す図である。
図9は、本発明にかかるデータ処理装置の異なるプログラム例である。
図10は、図9のプログラムにより構成されたデータフローを示す図である。
図11は、本発明の命令セットによりデータ処理を実行可能なデータ処理装置の概略構成を示す図である。
図12は、テンプレートの組み合わせを変えて異なる専用回路を構成する様子を示す図である。
図13は、テンプレートの一例を示す図である。
Claims (16)
- 演算または他のデータ処理を実行するための複数の処理ユニットであって、それぞれ独自のコンフィグレーションメモリを備え、前記独自のコンフィグレーションメモリのデータが書き換えられることにより、入力および/または出力インタフェースおよび処理内容が変更され、当該複数の処理ユニットの少なくとも一部からなるデータパスを構成可能な複数の処理ユニットと、
命令セットをフェッチ可能なフェッチユニットであって、処理ユニットで実行する演算または他のデータ処理の内容を指示する実行命令を記述可能な第1のフィールドと、当該フェッチユニットにより後にフェッチされる命令セットの実行命令で実行する演算または他のデータ処理が実行可能な状態に処理ユニットを設定する準備情報を記述可能な第2のフィールドと、前記第1のフィールドの実行命令の内容とは独立に、前記第2のフィールドの有効/無効および前記準備情報のタイプを示す第3のフィールドとを具備する命令セットをフェッチ可能なフェッチユニットと、
前記第1のフィールドの実行命令をデコードし、その実行命令の演算または他のデータ処理が実行できるように予め設定された処理ユニットにより当該演算または他のデータ処理を進める第1の実行制御ユニットと、
前記第3のフィールドの情報に基づいて前記第2のフィールドの準備情報をデコードし、前記第1の実行制御ユニットの実行内容とは独立して処理ユニットの独自のコンフィグレーションメモリのデータを書き換えることにより少なくとも1つのデータパスを構成し、その処理ユニットの状態を演算または他のデータ処理が実行できるように設定し、その状態を前記第2のフィールドの準備情報に対応する実行命令を備えた命令セットがフェッチされ、その実行命令が実行されるまで保持可能な第2の実行制御ユニットとを有するデータ処理装置。 - 前記第2の実行制御ユニットは、前記第2のフィールドの準備情報により、処理ユニットの独自のコンフィグレーションメモリのデータを書き換えることにより、その処理ユニットの入力および/または出力インタフェースを、前記第2のフィールドの準備情報に対応する実行命令を備えた命令セットの数命令前に設定する、請求項1のデータ処理装置。
- 前記複数の処理ユニットは、特定の内部データパスを備えており、
前記第2の実行制御ユニットは、前記第2のフィールドに記述された準備情報により、処理ユニットの独自のコンフィグレーションメモリのデータを書き換えることにより、内部データパスの一部を選択可能である、請求項1のデータ処理装置。 - 前記複数の処理ユニットは、少なくとも1つの論理ゲートと、この論理ゲートと入出力インタフェースを接続する内部データパスとを備えている、請求項1のデータ処理装置。
- 前記第2の実行制御ユニットは、前記第2のフィールドに記述された準備情報により、処理ユニットの独自のコンフィグレーションメモリのデータを書き換えることにより、その処理ユニットの内部データパスの一部を選択可能である、請求項4のデータ処理装置。
- 前記第2の実行制御ユニットは、前記第2のフィールドに記述された処理ブロック単位の準備情報であって、複数の処理ユニットにより構成される処理ブロックの単位で、その処理ブロックに含まれる複数の処理ユニットの入力および/または出力インタフェースを変更するための処理ブロック単位の準備情報により、該当する処理ブロックに含まれる複数の処理ユニットの独自のコンフィグレーションメモリのデータを共に書き換えることにより、前記該当する処理ブロックに含まれる複数の処理ユニットの入力および/または出力インタフェースを変更可能である、請求項1のデータ処理装置。
- 処理ブロックの単位で、その処理ブロックに含まれる複数の処理ユニットの入力および/または出力インタフェースを規定するコンフィグレーションデータを複数格納したメモリを有し、
前記第2の実行制御ユニットは、前記第2のフィールドに記述された処理ブロック単位の準備情報により、前記メモリに格納されたコンフィグレーションデータを選択し、該当する処理ブロックに含まれる複数の処理ユニットの独自のコンフィグレーションメモリのデータを共に書き換えることにより、前記該当する処理ブロックに含まれる複数の処理ユニットの入力および/または出力インタフェースを変更可能である、請求項6のデータ処理装置。 - 前記第2の実行制御ユニットは、前記複数の処理ユニットのインタフェースを管理するスケジューラとしての機能を備えている、請求項1のデータ処理装置。
- 前記複数の処理ユニットは、算術論理演算ユニットと、特定のデータパスを具備する複数のデータフロー処理ユニットとを含む、請求項1のデータ処理装置。
- 演算または他のデータ処理を実行するための複数の処理ユニットであって、それぞれ独自のコンフィグレーションメモリを備え、前記独自のコンフィグレーションメモリのデータが書き換えられることにより、入力および/または出力インタフェースおよび処理内容が変更され、当該複数の処理ユニットの少なくとも一部からなるデータパスを構成可能な複数の処理ユニットを有するデータ処理装置の制御方法であって、
命令セットをフェッチする工程であって、処理ユニットで実行する演算または他のデータ処理の内容を指示する実行命令を記述可能な第1のフィールドと、当該フェッチする工程において後でフェッチされる命令セットの実行命令で実行する演算または他のデータ処理が実行可能な状態に処理ユニットを設定する準備情報を記述可能な第2のフィールドと、前記第1のフィールドの実行命令の内容とは独立に、前記第2のフィールドの有効/無効および前記準備情報のタイプを示す第3のフィールドとを具備する命令セットをフェッチする工程と、
前記第1のフィールドの実行命令をデコードし、その実行命令の演算または他のデータ処理が実行できるように予め設定された処理ユニットにより当該演算または他のデータ処理を進める第1の制御工程と、
この第1の制御工程とは独立して、前記第3のフィールドの情報に基づいて前記第2のフィールドの準備情報をデコードし処理ユニットの独自のコンフィグレーションメモリのデータを書き換えることにより少なくとも1つのデータパスを構成し、その処理ユニットの状態を演算または他のデータ処理が実行できるように設定し、その状態を前記第2のフィールドの準備情報に対応する実行命令を備えた命令セットがフェッチされ、その実行命令が実行されるまで保持する第2の制御工程とを有する制御方法。 - 前記第2の制御工程では、前記第2のフィールドの準備情報により、処理ユニットの処理ユニットの独自のコンフィグレーションメモリのデータを書き換えることにより、その処理ユニットの入力および/または出力インタフェースを、前記第2のフィールドの準備情報に対応する実行命令を備えた命令セットの数命令前に設定する、請求項10のデータ処理装置の制御方法。
- 前記複数の処理ユニットは、特定の内部データパスを備えており、前記第2の制御工程では、前記第2のフィールドに記述された準備情報により、処理ユニットの独自のコンフィグレーションメモリのデータを書き換えることにより、その処理ユニットの内部データパスの一部を選択可能である、請求項10の制御方法。
- 前記第2の制御工程では、前記第2のフィールドに記述された処理ブロック単位の準備情報であって、複数の処理ユニットにより構成される処理ブロックの単位で、その処理ブロックに含まれる複数の処理ユニットの入力および/または出力インタフェースを変更するための処理ブロック単位の準備情報により、該当する処理ブロックに含まれる複数の処理ユニットの独自のコンフィグレーションメモリのデータを共に書き換えることにより、前記該当する処理ブロックに含まれる複数の処理ユニットの入力および/または出力インタフェースを変更可能である、請求項10の制御方法。
- 前記データ処理装置は、処理ブロックの単位で、その処理ブロックに含まれる複数の処理ユニットの入力および/または出力インタフェースを規定するコンフィグレーションデータを複数格納したメモリを有し、
前記第2の制御工程では、前記第2のフィールドに記述された処理ブロック単位の準備情報により、前記メモリに格納されたコンフィグレーションデータを選択し、該当する処理ブロックに含まれる複数の処理ユニットの独自のコンフィグレーションメモリのデータを共に書き換えることにより、前記該当する処理ブロックに含まれる複数の処理ユニットの入力および/または出力インタフェースを変更可能である、請求項13の制御方法。 - 前記第2の制御工程では、前記複数の処理ユニットのインタフェースを保持するスケジュールを管理する、請求項10の制御方法。
- 前記複数の処理ユニットは、算術論理演算ユニットと、特定のデータパスを具備する複数のデータフロー処理ユニットとを含む、請求項10の制御方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP24413799 | 1999-08-30 | ||
PCT/JP2000/005848 WO2001016710A1 (fr) | 1999-08-30 | 2000-08-30 | Processeur de donnees |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003291251A Division JP4560705B2 (ja) | 1999-08-30 | 2003-08-11 | データ処理装置の制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP3842129B2 true JP3842129B2 (ja) | 2006-11-08 |
Family
ID=17114319
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001520598A Expired - Lifetime JP4234925B2 (ja) | 1999-08-30 | 2000-08-30 | データ処理装置、制御方法およびその記録媒体 |
JP2001520597A Expired - Lifetime JP3842129B2 (ja) | 1999-08-30 | 2000-08-30 | データ処理装置およびその制御方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001520598A Expired - Lifetime JP4234925B2 (ja) | 1999-08-30 | 2000-08-30 | データ処理装置、制御方法およびその記録媒体 |
Country Status (16)
Country | Link |
---|---|
US (4) | US6826674B1 (ja) |
EP (2) | EP1134654A4 (ja) |
JP (2) | JP4234925B2 (ja) |
KR (2) | KR100497078B1 (ja) |
CN (3) | CN1145879C (ja) |
AT (1) | ATE466330T1 (ja) |
AU (3) | AU782238B2 (ja) |
BR (2) | BR0013595A (ja) |
CA (2) | CA2348259A1 (ja) |
DE (1) | DE60044300D1 (ja) |
EA (2) | EA004071B1 (ja) |
HK (1) | HK1047326A1 (ja) |
IL (4) | IL142676A0 (ja) |
NZ (2) | NZ516679A (ja) |
TW (2) | TW504608B (ja) |
WO (3) | WO2001016717A1 (ja) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW504608B (en) * | 1999-08-30 | 2002-10-01 | Ip Flex Inc | Program product and data processing device |
JP2003140886A (ja) * | 2001-10-31 | 2003-05-16 | Seiko Epson Corp | インストラクションセット及びコンパイラ |
US7093225B2 (en) | 2002-07-17 | 2006-08-15 | Osann Robert Jr | FPGA with hybrid interconnect |
US7679398B2 (en) * | 2002-07-17 | 2010-03-16 | Osann Jr Robert | Reprogrammable instruction DSP |
JP4002151B2 (ja) * | 2002-07-31 | 2007-10-31 | 富士通株式会社 | 情報処理装置 |
RU2006100275A (ru) * | 2003-06-18 | 2006-07-10 | Амбрик, Инк. (Us) | Система разработки интегральной схемы |
US20070186076A1 (en) * | 2003-06-18 | 2007-08-09 | Jones Anthony M | Data pipeline transport system |
US20050097306A1 (en) * | 2003-09-29 | 2005-05-05 | Gajski Daniel D. | No-instruction-set-computer processor |
DE10360998B4 (de) * | 2003-12-23 | 2008-09-04 | Infineon Technologies Ag | Schutz von Chips gegen Attacken |
US7937557B2 (en) | 2004-03-16 | 2011-05-03 | Vns Portfolio Llc | System and method for intercommunication between computers in an array |
US9047094B2 (en) * | 2004-03-31 | 2015-06-02 | Icera Inc. | Apparatus and method for separate asymmetric control processing and data path processing in a dual path processor |
JP4451733B2 (ja) * | 2004-06-30 | 2010-04-14 | 富士通マイクロエレクトロニクス株式会社 | 半導体装置 |
JP4893309B2 (ja) * | 2004-10-28 | 2012-03-07 | 富士ゼロックス株式会社 | 再構成可能な論理回路を有するデータ処理装置 |
CN100346292C (zh) * | 2005-12-02 | 2007-10-31 | 浙江大学 | 多地址空间异步计算等待响应指令的控制方法 |
JP4795025B2 (ja) * | 2006-01-13 | 2011-10-19 | キヤノン株式会社 | ダイナミックリコンフィギャラブルデバイス、制御方法、及びプログラム |
US7617383B2 (en) * | 2006-02-16 | 2009-11-10 | Vns Portfolio Llc | Circular register arrays of a computer |
US7966481B2 (en) | 2006-02-16 | 2011-06-21 | Vns Portfolio Llc | Computer system and method for executing port communications without interrupting the receiving computer |
US7904615B2 (en) * | 2006-02-16 | 2011-03-08 | Vns Portfolio Llc | Asynchronous computer communication |
JP4410297B2 (ja) * | 2006-03-09 | 2010-02-03 | 富士通株式会社 | リコンフィギャラブル回路 |
US7555637B2 (en) * | 2007-04-27 | 2009-06-30 | Vns Portfolio Llc | Multi-port read/write operations based on register bits set for indicating select ports and transfer directions |
WO2008142750A1 (ja) * | 2007-05-17 | 2008-11-27 | Fujitsu Limited | 演算ユニット、プロセッサ及びプロセッサアーキテクチャ |
US7752592B2 (en) * | 2007-10-10 | 2010-07-06 | International Business Machines Corporation | Scheduler design to optimize system performance using configurable acceleration engines |
US20100023730A1 (en) * | 2008-07-24 | 2010-01-28 | Vns Portfolio Llc | Circular Register Arrays of a Computer |
US9069918B2 (en) * | 2009-06-12 | 2015-06-30 | Cadence Design Systems, Inc. | System and method implementing full-rate writes for simulation acceleration |
JP5718558B2 (ja) * | 2009-09-16 | 2015-05-13 | 富士ゼロックス株式会社 | 画像データ処理装置 |
TWI563479B (en) * | 2009-12-30 | 2016-12-21 | Tatung Co | Field emission display |
JP5617282B2 (ja) * | 2010-03-09 | 2014-11-05 | 富士通セミコンダクター株式会社 | データ処理システム |
JP5580404B2 (ja) * | 2010-03-29 | 2014-08-27 | 株式会社東芝 | 半導体装置 |
GB2483903A (en) * | 2010-09-24 | 2012-03-28 | Advanced Risc Mach Ltd | Instruction which specifies the type of the next instruction to be executed |
US9412022B2 (en) * | 2012-09-06 | 2016-08-09 | Leonard Flom | Iris identification system and method |
US9880842B2 (en) * | 2013-03-15 | 2018-01-30 | Intel Corporation | Using control flow data structures to direct and track instruction execution |
JP6321325B2 (ja) | 2013-04-03 | 2018-05-09 | ルネサスエレクトロニクス株式会社 | 情報処理装置および情報処理方法 |
US20170083313A1 (en) * | 2015-09-22 | 2017-03-23 | Qualcomm Incorporated | CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs) |
KR102276718B1 (ko) * | 2015-11-25 | 2021-07-13 | 삼성전자주식회사 | Vliw 인터페이스 장치 및 제어 방법 |
DE102017208818A1 (de) * | 2017-05-24 | 2018-11-29 | Wago Verwaltungsgesellschaft Mbh | Initialisierung von Datenbusteilnehmern |
RU182446U1 (ru) * | 2018-03-13 | 2018-08-17 | Федеральное государственное бюджетное образовательное учреждение высшего образования "Казанский государственный энергетический университет" | Усовершенствованное устройство проверки однородности нескольких однотипных выборок |
CN110209629B (zh) * | 2019-07-15 | 2023-12-15 | 北京一流科技有限公司 | 协处理器的数据处理路径中的数据流动加速装置及其方法 |
CN113760364B (zh) * | 2020-06-03 | 2022-06-17 | 广东高云半导体科技股份有限公司 | 逻辑器件的控制器 |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5626062B2 (ja) | 1973-12-12 | 1981-06-16 | ||
JPS61294548A (ja) * | 1985-06-21 | 1986-12-25 | Toshiba Corp | 機械命令実行装置 |
US5038386A (en) | 1986-08-29 | 1991-08-06 | International Business Machines Corporation | Polymorphic mesh network image processing system |
JPS6482131A (en) * | 1987-09-24 | 1989-03-28 | Mitsubishi Electric Corp | Data processor |
JPH01156824A (ja) * | 1987-12-14 | 1989-06-20 | Hitachi Ltd | マイクロプロセッサ |
JPH02183332A (ja) | 1989-01-10 | 1990-07-17 | Fujitsu Ltd | プログラムド制御方式 |
GB9123271D0 (en) | 1991-11-02 | 1991-12-18 | Int Computers Ltd | Data processing system |
US5452455A (en) * | 1992-06-15 | 1995-09-19 | International Business Machines Corporation | Asynchronous command support for shared channels for a computer complex having multiple operating systems |
JP3684579B2 (ja) | 1993-04-27 | 2005-08-17 | 富士通株式会社 | 分散型並列計算機のプロセッサエレメント |
US5535406A (en) * | 1993-12-29 | 1996-07-09 | Kolchinsky; Alexander | Virtual processor module including a reconfigurable programmable matrix |
US5551570B1 (en) | 1994-02-02 | 1999-10-05 | Tartan Paper Products | Decorative packaging system including a method and kit therefor |
JPH07253882A (ja) * | 1994-03-15 | 1995-10-03 | Hitachi Ltd | 命令制御装置 |
JPH07319692A (ja) | 1994-05-25 | 1995-12-08 | Fuji Electric Co Ltd | プログラマブルコントローラ |
US5617431A (en) * | 1994-08-02 | 1997-04-01 | Advanced Micro Devices, Inc. | Method and apparatus to reuse existing test patterns to test a single integrated circuit containing previously existing cores |
US6128720A (en) * | 1994-12-29 | 2000-10-03 | International Business Machines Corporation | Distributed processing array with component processors performing customized interpretation of instructions |
US6052773A (en) | 1995-02-10 | 2000-04-18 | Massachusetts Institute Of Technology | DPGA-coupled microprocessors |
US5742180A (en) | 1995-02-10 | 1998-04-21 | Massachusetts Institute Of Technology | Dynamically programmable gate array with multiple contexts |
JP2987308B2 (ja) * | 1995-04-28 | 1999-12-06 | 松下電器産業株式会社 | 情報処理装置 |
US5826072A (en) * | 1995-11-13 | 1998-10-20 | Oasis Design, Inc. | Pipelined digital signal processor and signal processing system employing same |
US5956518A (en) | 1996-04-11 | 1999-09-21 | Massachusetts Institute Of Technology | Intermediate-grain reconfigurable processing device |
US5771362A (en) * | 1996-05-17 | 1998-06-23 | Advanced Micro Devices, Inc. | Processor having a bus interconnect which is dynamically reconfigurable in response to an instruction field |
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 |
US5805875A (en) * | 1996-09-13 | 1998-09-08 | International Computer Science Institute | Vector processing system with multi-operation, run-time configurable pipelines |
DE19654846A1 (de) * | 1996-12-27 | 1998-07-09 | Pact Inf Tech Gmbh | Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.) |
JPH10260832A (ja) * | 1997-03-18 | 1998-09-29 | Hitachi Ltd | 情報処理装置 |
JP3790607B2 (ja) * | 1997-06-16 | 2006-06-28 | 松下電器産業株式会社 | Vliwプロセッサ |
US5970254A (en) * | 1997-06-27 | 1999-10-19 | Cooke; Laurence H. | Integrated processor and programmable data path chip for reconfigurable computing |
US5966534A (en) | 1997-06-27 | 1999-10-12 | Cooke; Laurence H. | Method for compiling high level programming languages into an integrated processor with reconfigurable logic |
JP3414209B2 (ja) | 1997-07-30 | 2003-06-09 | 松下電器産業株式会社 | プロセッサ |
JP3449186B2 (ja) * | 1997-08-19 | 2003-09-22 | 富士通株式会社 | パイプラインバイパス機能を有するデータ処理装置 |
US6282627B1 (en) * | 1998-06-29 | 2001-08-28 | Chameleon Systems, Inc. | Integrated processor and programmable data path chip for reconfigurable computing |
US6647511B1 (en) * | 1998-09-17 | 2003-11-11 | Texas Instruments Incorporated | Reconfigurable datapath for processor debug functions |
JP2000207202A (ja) | 1998-10-29 | 2000-07-28 | Pacific Design Kk | 制御装置およびデ―タ処理装置 |
US6181163B1 (en) * | 1999-01-21 | 2001-01-30 | Vantis Corporation | FPGA integrated circuit having embedded SRAM memory blocks and interconnect channel for broadcasting address and control signals |
US6477683B1 (en) * | 1999-02-05 | 2002-11-05 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
TW504608B (en) * | 1999-08-30 | 2002-10-01 | Ip Flex Inc | Program product and data processing device |
-
2000
- 2000-08-30 TW TW089117580A patent/TW504608B/zh not_active IP Right Cessation
- 2000-08-30 DE DE60044300T patent/DE60044300D1/de not_active Expired - Lifetime
- 2000-08-30 IL IL14267600A patent/IL142676A0/xx active IP Right Grant
- 2000-08-30 US US09/830,664 patent/US6826674B1/en not_active Expired - Lifetime
- 2000-08-30 KR KR10-2001-7005452A patent/KR100497078B1/ko not_active IP Right Cessation
- 2000-08-30 NZ NZ516679A patent/NZ516679A/en not_active IP Right Cessation
- 2000-08-30 AT AT00956782T patent/ATE466330T1/de not_active IP Right Cessation
- 2000-08-30 JP JP2001520598A patent/JP4234925B2/ja not_active Expired - Lifetime
- 2000-08-30 CA CA002348259A patent/CA2348259A1/en not_active Abandoned
- 2000-08-30 WO PCT/JP2000/005850 patent/WO2001016717A1/ja active Application Filing
- 2000-08-30 WO PCT/JP2000/005848 patent/WO2001016710A1/ja active IP Right Grant
- 2000-08-30 KR KR10-2001-7005453A patent/KR100491593B1/ko active IP Right Grant
- 2000-08-30 TW TW089117579A patent/TW495711B/zh not_active IP Right Cessation
- 2000-08-30 WO PCT/JP2000/005849 patent/WO2001016711A1/ja not_active Application Discontinuation
- 2000-08-30 BR BR0013595-0A patent/BR0013595A/pt not_active IP Right Cessation
- 2000-08-30 AU AU68642/00A patent/AU782238B2/en not_active Ceased
- 2000-08-30 EP EP00956783A patent/EP1134654A4/en not_active Withdrawn
- 2000-08-30 US US09/830,704 patent/US6904514B1/en not_active Expired - Lifetime
- 2000-08-30 AU AU68643/00A patent/AU776972B2/en not_active Ceased
- 2000-08-30 CN CNB008018251A patent/CN1145879C/zh not_active Expired - Fee Related
- 2000-08-30 EA EA200200309A patent/EA004071B1/ru not_active IP Right Cessation
- 2000-08-30 CN CNB008018243A patent/CN1148647C/zh not_active Expired - Lifetime
- 2000-08-30 AU AU68644/00A patent/AU6864400A/en not_active Abandoned
- 2000-08-30 JP JP2001520597A patent/JP3842129B2/ja not_active Expired - Lifetime
- 2000-08-30 EA EA200200310A patent/EA004196B1/ru not_active IP Right Cessation
- 2000-08-30 CN CNB2004100055960A patent/CN1301459C/zh not_active Expired - Lifetime
- 2000-08-30 EP EP00956782A patent/EP1215569B1/en not_active Expired - Lifetime
- 2000-08-30 BR BR0013594-1A patent/BR0013594A/pt not_active IP Right Cessation
- 2000-08-30 NZ NZ516680A patent/NZ516680A/en not_active IP Right Cessation
- 2000-08-30 IL IL14267500A patent/IL142675A0/xx active IP Right Grant
- 2000-08-30 CA CA002348261A patent/CA2348261C/en not_active Expired - Fee Related
-
2001
- 2001-04-18 IL IL142675A patent/IL142675A/en not_active IP Right Cessation
- 2001-04-18 IL IL142676A patent/IL142676A/en not_active IP Right Cessation
-
2002
- 2002-11-13 HK HK02108232.9A patent/HK1047326A1/zh unknown
-
2004
- 2004-09-22 US US10/946,746 patent/US20050038550A1/en not_active Abandoned
-
2005
- 2005-04-11 US US11/103,345 patent/US20050240757A1/en not_active Abandoned
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3842129B2 (ja) | データ処理装置およびその制御方法 | |
JP6043374B2 (ja) | 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置 | |
JPH03129433A (ja) | 並列処理装置および並列処理方法 | |
JP5712295B2 (ja) | 次命令タイプフィールド | |
US20140129805A1 (en) | Execution pipeline power reduction | |
US7730288B2 (en) | Method and apparatus for multiple load instruction execution | |
JP4560705B2 (ja) | データ処理装置の制御方法 | |
US20080141252A1 (en) | Cascaded Delayed Execution Pipeline | |
JP2020502669A (ja) | ベクトル生成命令 | |
CN115398393A (zh) | 在粗粒度可重构阵列处理器中处理多个图、上下文和程序 | |
JP2004102988A (ja) | データ処理装置 | |
WO2007039837A2 (en) | Implied instruction set computing (iisc) / dual instruction set computing (disc) / single instruction set computing (sisc) / recurring multiple instruction set computing (rmisc) based computing machine / apparatus / processor | |
Starke | Design and evaluation of a vliw processor for real-time systems | |
WO2015120491A1 (en) | Computer processor employing phases of operations contained in wide instructions | |
US20160239312A1 (en) | Computer Processor Employing Phases of Operations Contained in Wide Instructions | |
Xiao et al. | A task-level superscalar microarchitecture for large scale chip multiprocessors | |
JPH09128235A (ja) | 5段パイプライン構造のプログラマブルコントローラ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040622 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040820 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20041111 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050623 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050819 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20051011 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051209 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20051216 |
|
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: 20060801 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060809 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 3842129 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100818 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313117 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100818 Year of fee payment: 4 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100818 Year of fee payment: 4 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100818 Year of fee payment: 4 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100818 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100818 Year of fee payment: 4 |
|
R370 | Written measure of declining of transfer procedure |
Free format text: JAPANESE INTERMEDIATE CODE: R370 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100818 Year of fee payment: 4 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100818 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100818 Year of fee payment: 4 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110818 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120818 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120818 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130818 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |