JP2004102988A - データ処理装置 - Google Patents
データ処理装置 Download PDFInfo
- Publication number
- JP2004102988A JP2004102988A JP2003189788A JP2003189788A JP2004102988A JP 2004102988 A JP2004102988 A JP 2004102988A JP 2003189788 A JP2003189788 A JP 2003189788A JP 2003189788 A JP2003189788 A JP 2003189788A JP 2004102988 A JP2004102988 A JP 2004102988A
- Authority
- JP
- Japan
- Prior art keywords
- data
- processing
- instruction
- data flow
- field
- 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.)
- Pending
Links
Images
Landscapes
- Advance Control (AREA)
- Microcomputers (AREA)
Abstract
【解決手段】テンプレート71は、演算ユニット(ALU)などの処理ユニットであり、複数のテンプレート71を組み合わせて、並列して実行される他の処理あるいは他のプログラムに割り当てることも可能である。複数のプロセッサ51が適当なバスで接続されていれば、他のプロセッサ51が主として行っているデータ処理のためにテンプレート71を組み合わせたトレイン(データパス)73を構成することも可能であり、テンプレート71というデータ処理資源を極めて有効に活用することができる。
【選択図】 図14
Description
【発明の属する技術分野】
本発明は、ASICあるいはシステムLSIといったデータ処理装置に関するものである。
【0002】
【従来の技術】
汎用的な処理および専用的なデジタルデータの処理を行う装置として、マイクロプロセッサー(MPU)、デジタル・シグナルプロセッサー(DSP)といった演算機能を内蔵したプロセッサ(データ処理装置あるいはLSI)が知られている。これらの性能向上に大きく貢献したアーキテクチャ要素として、パイプライン化技術、スーパー・パイプライン化技術、スーパー・スケーラ化技術、VLIW技術、特化型データパス(専用命令)を挙げることができる。さらに、分岐予測やレジスタバンク、キャッシュ技術等も挙げることができる。
【0003】
【発明が解決しようとする課題】
VLIW技術は、予めデータパスを並列実行可能なように構成しておき、コンパイラがこの並列実行を高めるように、最適化を行い目的のVLIW命令コードを生成するという考え方であり、極めて合理的な考え方を採用している。これにより、スーパー・スケーラのように1つ1つの命令の並列実行の可能性をチェックする回路が不要なので、並列実行を行うハードウェアの実装手段としては、極めて有望とされているものである。しかしながら、画像処理や特殊データ処理を必要とするアプリケーションの処理を用途とするプロセッサを考えると、VLIWも最適な解決策とはならない。特に演算結果の連続処理を要求されるような用途では、汎用レジスタにデータを抱えながらの演算やデータ処理には限界があるからである。これは従来のパイプライン技術でも同様である。
【0004】
一方、各種のマトリックス計算やベクトル計算等は、専用回路によりこれを実現した方が高い性能を得られることは過去の経験から良く知られている。このため、現在、世界最高性能を目指す最先端の実装技術では、VLIWをベースにアプリケーションの目的に応じて、各種の専用演算回路を実装して、最高性能を目指すという考え方が主流になりつつある。
【0005】
しかしながら、VLIWは、プログラムカウンタ近傍の並列処理実行効率を改善する技術であり、例えば2つ以上のオブジェクトを同時に実行したり、2つ以上の関数を実行するにはあまり有効な手段とはならない。また、各種の専用演算回路を実装することはハードウェアが増加することとなり、その一方で、ソフトウェアのフレキシビリティーが低下することを意味する。
【0006】
FPGA(Field Programmable Gate Arrays)のようにトランジスタ間の接続を変更可能なアーキテクチャは、ある程度動的に制御できるものであり、各種の専用演算回路を実現することも可能である。しかしながら、FPGA自体は、ハードウェアをダイナミックに変更するには時間がかかり、また、その時間を短縮するためのハードウェアが必要となる。このため、アプリケーションの実行中にハードウェアを動的に制御することは難しく、さらに、経済的な解であるとも言えない。すなわち、FPGAの再構成情報を二面以上のRAMに保持し、バックグラウンドで実行する事により、見かけ上短い時間で動的なアーキテクチャ変更を行う方式も可能であるが、もし、数クロック以内にこの再構成を行う事を可能とするためには、考えられる組み合わせの数の再構成情報を全て格納するRAMを実装する必要があり、これは、本質的にFPGAの再構成時間が大きく掛かるという経済的な問題を一切解決していない。また、FPGAが、本来ハードウェアのゲートに注目したマッピングを効率良く実現しようとするために抱えている問題、即ち実用上のAC特性の悪さについては、当面解決出来そうも無い。
【0007】
そこで、本発明においては、複雑なデータ処理に対し、それらのデータ処理に特化した多種多様な専用回路を用いなくても、それぞれのデータ処理をフレキシブルに、そして高速に実行可能なデータ処理装置を提供することを目的としている。さらに、アプリケーションの実行中でもハードウェアを動的に制御することを可能とし、ソフトウェアレベルのフレキシビリティーをハードウェアレベルで実現し、様々なデータ処理を高速で実行可能であり、さらに経済的なデータ処理装置を提供することを目的としている。
【0008】
【課題を解決するための手段】
このため、本発明においては、入力および/または出力インタフェースを変更可能な複数の処理ユニットにより独立して動作可能な複数のデータパスを構成可能な処理領域を有するデータ処理装置を提供する。このデータ処理装置においては、処理領域において異なるデータパスにより異なる処理を並列に実行できる。したがって、処理領域において異なるデータパスにより別命令のプログラムを実行できる。さらに、処理領域では当該データ処理装置と異なるデータ処理装置の処理も実行できる。このため、データ処理装置のデータ処理資源を極めて有効に活用でき、ハードウェアのリソースシェアリング化が可能となり、複数の本発明にかかるデータ処理装置の間で並列処理化を極め、コンパクトなハードウェアで高速な処理を実現することが可能となる。
【0009】
さらに、本発明においては、複数の処理ユニットを有するデータ処理装置を制御するプログラム製品として、少なくとも1つの処理ユニットの入力および/または出力インタフェースを、処理ユニットにより処理を実行する時期とは独立して指示し、処理ユニットにより構成されるデータパスを定義するデータフロー指定命令を有するプログラム製品あるいはプログラム装置を提供する。このプログラムは、データ処理装置が読み取り可能なROMあるいはRAMなどの記録媒体に記録して提供でき、また、コンピュータネットワークあるいはその他の通信を介して伝送可能な伝送媒体に埋め込んで提供することも可能である。
【0010】
そして、本発明のプログラム製品により、入力および/または出力インタフェースを変更可能な複数の処理ユニットと、少なくとも1つの処理ユニットの入力および/または出力インタフェースを、処理ユニットにより処理を実行する時期とは独立して、別に指示するデータフロー指定命令をフェッチ可能なユニットと、データフロー指定命令をデコードし、処理ユニットの入力および/または出力インタフェースを設定し、複数の処理ユニットによるデータパスを構成可能なデータフロー指定ユニットとを有する、本発明のデータ処理装置を制御することが可能となる。このため、複数の処理ユニットの組み合わせからなるデータパスをプログラムで変更し、様々なデータ処理を、その処理に適したハードウェア、すなわち、データパスあるいはデータフローで実行することができる。
【0011】
また、入力および/または出力インタフェースを変更可能な複数の処理ユニットを有する本発明のデータ処理装置の制御方法においては、少なくとも1つの処理ユニットの入力および/または出力インタフェースを、処理ユニットにより処理を実行する時期とは独立して指示するデータフロー指定命令をフェッチする工程と、データフロー指定命令をデコードし、処理ユニットの入力および/または出力インタフェースを設定し、複数の処理ユニットによるデータパスを構成するデータフロー指定工程とを有する。
【0012】
従来は、複雑なデータ処理は、専用回路を用意し、その専用回路を用いる専用命令化するしか対応方法が無くハードウェアコストが増大する。これに対し、本発明のシステム、すなわち、プログラム製品、データ処理装置およびその制御方法においては、論理演算ユニットなどの処理ユニットのインタフェースを記述できるので、パイプライン制御やデータパス制御の構造を命令セット、すなわちプアログラム製品の中に取り込むことが可能となる。したがって、様々なデータ処理を、プログラムで記述し、それに適したハードウェアで実行することが可能となり、ソフトウェアのフレキシビリティーと専用回路を用いた高速性を兼ね備えたデータ処理装置を提供することができる。さらに、これらのデータパスは主要な処理あるいは汎用的な処理の実行を中止させないで実現することが可能であり、アプリケーションの実行中に動的にハードウェアを変更することが容易に実現できる。
【0013】
さらに、本発明は、プログラムカンタの近傍の並列処理を実行だけでなく、2つ以上オブジェクトの同時擬似実行や2つ以上の関数の同時擬似実行に有効な手段を提供することになる。つまり、従来の命令セットでは、2つ以上のコンテキストの異なるデータ処理やアルゴリズム実行等の、それぞれ離れたプログラムカウンタに基づく処理が同時に起動ができなかったのに対し、本発明においてはデータフロー指定命令を用いてデータフローを適当に定義することにより、プログラムカウンタにかかわらずに処理を実行することが可能となる。
【0014】
したがって、本命令セットを用いると、並列処理に対して、予めアプリケーション側から見て性能向上に有効と思われるデータパスをソフトウェアから組み込むことが可能であり、それにより実現されたデータパス(データフロー)を必要に応じて、さらにソフトウェアから命令レベルで起動することができる。このデータパスは、特定の目的に対応したデータ処理だけでなく、一般のステートマシンを起動するような目的にも使用可能なので、極めて自由度が高い。
【0015】
そして、本発明においては、データフロー指定命令により処理ユニットのインタフェースを指示することにより、処理ユニットの組み合わせによるデータパスを変更できるようにしている。このため、FPGAのようにトランジスタ間の接続を変更するアーキテクチャと異なり、適当な、あるいは特定のデータ処理機能を備えた処理ユニット間のインタフェースを切り替えるだけデータパスを定義できるので、短時間でハードウェアを再構成することができる。さらに、本発明のデータ処理装置は、FPGAのようにトランジスタレベルでの汎用性を要求するアーキテクチャではないので、実装密度も向上でき、コンパクトで経済的なシステムLSIなどのデータ処理装置を提供できる。さらに、冗長な構成を削減することができるので、処理速度も高速化でき、AC特性も向上する。
【0016】
このように、本発明のプログラム、データ処理装置およびその制御方法においては、データ処理装置に含まれる少なくとも1つの処理ユニットのインタフェースを規定する命令を記載あるいは記述することにより、データフロー指定を行うことが可能となる。これにより、データパスの独立性を高めることが可能となり結果的にデータフロー指定を別命令プログラムを実行しながら行ったり、アイドル状態にあるデータ処理装置の内部のデータパスを、外部の他のデータ処理装置あるいは同一チップ内の他のデータ処理系統において実行されている緊急度の高い処理のために貸し出すことも許すような構造を容易に提供することが可能となる。
【0017】
さらに、データフロー指定命令によりデータパスを組み合わせて構成可能な処理ユニットの処理内容を変更できることが望ましい。すなわち、データフロー指定ユニットおよびデータフロー指定工程においては、データフロー指定命令により、処理ユニットの処理内容を変更可能であることが望ましい。これにより、処理ユニットを組み合わせて構成するデータパスのフレキシビリティーを向上でき、より多くのデータ処理を少ないハードウェア資源でデータフロー型の処理に持ち込み、高性能化することができる。
【0018】
個々の処理ユニットにFPGAのアーキテクチャを採用することが可能である。しかしながら、ハードウェアをダイナミックに変更するには時間がかかり、また、その時間を短縮するためのハードウェアが必要となることは上述した通りである。このため、アプリケーションの実行中に処理ユニット内部のハードウェアを動的に制御することは難しい。すなわち、仮に、複数のRAMをバンク構成にして、瞬時に切り換える方式にしたとしても、数クロック〜数十クロック単位での切り換えを実現する為には、相当数のバンク構成が必要となり、基本的にFPGA内部のマクロセル一つ一つが独立してプログラム構成可能な構造にすると同時に、この切り換えタイミングを検出し、プログラムによる制御機構を持たせる必要がある。しかし、このような構成に対応するには現状のFPGAでは不十分であり、さらに、適当なタイミングで切替を指示するために新しい命令制御機構が必要となる。
【0019】
このため、本発明においては、処理ユニットとして、特定の内部データパスを備えた回路ユニットを採用することが望ましい。すなわち、ある程度コンパクトなデータパスを備えた処理ユニットをテンプレート的に用意しておき、そのデータパス間の組み合わせを指示してデータフロー型の処理に持ち込むと共に、データフロー指定命令により、処理ユニットの内部データパスの一部を選択して処理ユニットの処理内容を変更することにより、さらにフレキシブルに、そして短時間にハードウェアを再構成できる。
【0020】
たとえば、処理ユニットに、少なくとも1つの論理ゲートと、この論理ゲートと入出力インタフェースを接続する内部データパスとを設けておくことにより、入出力されるデータの順番を変えたり、論理ゲート間の接続あるいは選択を変えることにより処理ユニットの処理内容を変更できる。そして、トランジスタレベルで回路を再構成するFPGAに比較すると、予め用意された内部データパスの一部を選択するだけで良いので、短時間で処理内容を変更できる。さらに、予め用意された内部データパスを使用するので、冗長な回路要素は少なく、トランジスタの面積利用効率も高い。したがって、実装密度も高く、経済的である。さらに、高速処理に適したデータパスを構築でき、AC特性も高い。このため、本発明においては、データフロー指定命令により、データフロー指定ユニットおよび工程において、処理ユニットの内部データパスの一部を選択可能とすることが望ましい。
【0021】
さらに、データフロー指定命令により設定された各処理ユニットのインタフェースを保持するスケジュールを管理するように、データフロー指定ユニットは処理ユニットのインタフェースを管理するスケジューラとしての機能を備えていることが望ましい。例えば、ある一定時間だけ、マトリックス計算を行い、その後にフィルター処理を行う場合は、予めそれらの処理に必要なデータ処理装置内部の処理ユニット間の接続を指定し、時間を計数するカウンターを使ってこれを実現する事が出来る。計数カウンターを別の比較回路や外部イベント検出器に置き換える事で、より複雑で柔軟性のあるスケジューリング処理を実現可能となる。
【0022】
また、データフロー指定命令により、複数の処理ユニットにより構成される処理ブロックの入力および/または出力インタフェースを規定できるようにすることが望ましい。複数の処理ユニットのインタフェースを1つ命令で変更可能とすることにより、複数の処理ユニットが関連するデータパスの変更が1命令で処理することができる。したがって、データフロー指定ユニットあるいは工程では、データフロー指定命令により、複数の処理ユニットにより構成される処理ブロックの入力および/または出力インタフェースを変更可能であることが望ましい。
【0023】
さらに、処理ブロックの入力および/または出力インタフェースを規定する複数のコンフィグレーションデータを格納したメモリを設け、データフロー指定ユニットあるいは工程においては、データフロー指定命令によりメモリに格納された複数のコンフィグレーションデータの1つを選択し、処理ブロックの入力および/または出力インタフェースを変更できるようにすることが望ましい。データフロー指定命令によりコンフィグレーションデータを指定できるようにすることにより、命令自体は冗長にせずに複数の処理ユニットのインタフェースの変更をプログラムから制御することができる。
【0024】
【発明の実施の形態】
以下に図面を参照して、本発明をさらに詳しく説明する。図1に、本発明にかかるデータフロー指定命令を記述するのにて適した命令セット(命令フォーマット)の構成を示してある。この命令セット(DAP/DNAの命令セット)10は、第1のフィールドである命令実行基本フィールド(Xフィールド)11と呼ばれる部分と、次の命令実行の効率化を図ることができる第2のフィールドである次命令実行準備サイクル(追加フィールドあるいはYフィールド)12と呼ばれる2つのフィールドを備えている。命令実行基本フィールド(Xフィールド)11は、加減演算、論理和、論理積、比較などのデータの演算、および分岐などのその他の各種のデータ処理の内容を指定し、その結果が格納される先(ディスティネーション)を指定する。また、Xフィールド11は、命令長の使用効率を上げるために実際に実行される命令の情報しか含まない。一方、追加フィールド(Yフィールド)12は、同一の命令セットのXフィールド11の実行命令とは独立した命令(情報)が記述可能であり、たとえば、次の命令の実行準備サイクルに割当てられる。
【0025】
さらに詳しく命令セット10を説明すると、Xフィールド11は、算術論理演算ユニットなどの処理ユニットに対する命令操作あるいは実行命令(Execution ID)を記述する実行命令フィールド15と、Yフィールド12の有効/無効およびYフィールド12で示す準備命令のタイプを示すフィールド(タイプフィールド)16と、ディスティネーションのレジスタを示すフィールド17とを備えている。タイプフィールド16の内容は、Yフィールド12に関連したものであり、Xフィールド11の他のフィールドの内容とは独立して、別に定義できることは上述した通りである。
【0026】
また、Yフィールド12は、タイプフィールド16によって規定される準備情報が記述される。このYフィールド12に記述される準備情報は、演算または他のデータ処理を実行可能な状態にするための情報であり、図2に具体的な幾つかの例を示してある。先ず、TYPEフィールド16はXフィールド11に含まれているが、実行命令フィールド15とは独立あるいは無関係に記述できる。そして、Yフィールド12には、アドレスID(AID)21と、それによって利用目的が規定されるアドレス情報22を記述するアドレス情報フィールド26として利用することができる。このYフィールド12に記述されたアドレス情報は、レジスタあるいはバッファとメモリ(レジスタファイルを含む)との間のリードおよびライトに用いられ、DMAのようにブロック転送も可能な構成になっている。さらに、分岐命令を実行したときの分岐先を示すアドレス(フェッチアドレス)、並列実行するときのスタートアドレスなどの情報もYフィールド12に記述することができる。
【0027】
また、レジスタタイプの命令、たとえば、算術演算あるいはその他の論理演算命令(MOVE、メモリーリード/ライトなども含む)に対してソース側となるレジスタ情報あるいは即値(イミーディエイト)を規定する情報23もYフィールド12に記述することができる。すなわち、Yフィールド12を以降の実行命令のためのソースを規定するフィールド27として利用することができる。
【0028】
さらに、Yフィールド12には、算術論理演算ユニット(ALU)あるいは他のデータ処理ユニット、たとえば所定のデータパスを備えた処理ユニット(以降においてはテンプレート)のインタフェース(ソース、ディスティネーション)および処理内容の組み合わせを規定するデータフロー指定命令25も記述することが可能である。すなわち、Yフィールド12は、リコンフィグラブルなデータパスなどを、特定のデータ処理を行うために、それらのパイプライン(データフローあるいはデータパス)を定義するためのフィールド28として利用することができる。もちろん、Yフィールド12には、そのデータフローをスタートする情報および終了するデータフロー指定命令25を記述することが可能である。したがって、Yフィールド12を用いてリコンフィグラブルなデータパスを定義して生成したデータフローにより、コードRAMからコードをフェッチするプログラムカウンタとは独立した処理を行うことができる。
【0029】
以下ではXフィールド11およびYフィールド12に実行命令あるいは準備命令が記載あるいは記述された例を説明するが、これらのフィールドに命令を記述せず(NOPを記述し)、Xフィールド11あるいはYフィールド12だけが意味を持つような命令セットも可能である。さらに、ニーモニックな実行命令と、データフロー指定命令が混在した命令セットを備えたプログラム製品も可能であり、データフロー指定命令が連続して記述されたプログラム製品も可能である。そして、記述される形態は問わずに、データフロー指定命令を含むプログラム製品あるいはそのプログラムを記録した記録媒体なども本発明の範囲に含まれる。
【0030】
図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に格納する。
【0031】
このようにして、本例の命令セット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には、次の命令セットの実行命令フィールドに記述された実行命令の準備をする情報が記述されている。
【0032】
本例では、ある実行命令がXフィールド11に記述された命令セットT(j)の直前の命令セットT(j−1)のYフィールド12に、その実行命令の準備情報(準備命令)が記述されている。すなわち、準備命令のレイテンシーが1クロックの例となっているが、準備情報が記述される命令セットは、直前の命令セットにかぎられるものではない。例えば、複数のALUを備えた制御ユニットの制御プログラム、あるいは後述するデータフロー制御を目的とする準備命令などであれば直前の命令セットである必要はない。準備命令によってセットされたALUの状態(環境あるいはインタフェース)あるいはテンプレートの構成が、その準備命令に対応する実行命令を備えた命令セットがフェッチされて実行されるまで保持されるのであれば、実行命令を備えた命令セット10の数命令前の命令セット10のYフィールド12で準備命令を記述できる。
【0033】
図4に、図3に示した命令セットによりレジスタとして機能するレジスタファイルあるいはメモリに値が格納される様子を示してある。プロセッサがj−1番目の命令セットT(j−1)をフェッチして、そのYフィールド12の準備命令によりイミーディエイト「#00001234H」がプロセッサのALUのソース側のレジスタDP0.Rにラッチされる。そして、プロセッサが次のj番目の命令セットT(j)をフェッチし、そのXフィールド11の実行命令であるMOVEを実行するサイクルでバッファ29bにストアされる。その後、メモリまたはレジスタファイル29aのレジスタR3のアドレスにバッファ29bの値が格納される。したがって、格納先がレジスタではなくメモリであっても、本例の命令セット10を用いると、準備情報に基づく処理を実行命令に先立って行うことにより、実行命令のサイクルでデータをロードあるいはストアすることができる。
【0034】
図5に、本例の命令セット10により処理内容が記述されたプログラムを実行可能な制御ユニット30を備えたプロセッサ(データ処理装置)38の概略構成を示してある。本例の命令セット10を具備したマイクロコードあるいはマイクロプログラム18はコードROM39に記憶されている。制御ユニット30は、コードROM39からマイクロプログラムの命令セット10をプログラムカウンタによって随時フェッチするフェッチユニット31と、フェッチされた命令セット10のXフィールド11をデコードしてALU34の処理内容を決定あるいはアサートすると共に、ALU34の論理演算結果をディスティネーションのレジスタ34dを選択してラッチする機能を備えた第1の実行制御ユニット32を備えている。
【0035】
さらに、制御ユニット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の処理内容も決定し、その状態を所定の期間保持する。
【0036】
本例の制御ユニット30は、さらに、このような実行制御ユニット32および33と、ALU34の組み合わせを複数備えており、これらによって様々な処理が実行できるようになっている。したがって、本例の制御ユニット30をコアあるいは周辺回路として画像データを高速で処理するようなDSP、汎用のデジタル処理を高速で行えるCPUあるいはMPUなどを構成することが可能である。
【0037】
図6ないし図9に、本例の制御ユニット30で実行するプログラムの一例を示してある。図6に示したサンプルプログラム41は、従来のCPUあるいはDSPで実行可能なように作成した例である。このプログラムは、#STARTのアドレスから始まるテーブルから最も大きな値を抽出し、最終データであることを示す#ENDを検出すると終了するプログラムである。
【0038】
図7に記載したプログラム42は、図6と同じ処理を本発明にかかる命令セットを実行可能な制御ユニット30に適したプログラムに変換したものであり、2命令を1つの命令セットで実行できる例を示してある。図7に示したプログラムは、コンパイラを通して本発明にかかる命令セットの実行プログラムに変換され、制御ユニット30で実行される。
【0039】
図8にコンパイルされたプログラム43を示してある。このプログラム43と、プログラム42とを比較すると判るように、第1の番目の命令セット10のYフィールド12で2番目の命令セット10の実行命令15の準備が行われる。すなわち、タイプフィールド16に準備情報としてイミーディエイトがYフィールド12に記述されていることが示されており、Yフィールド12をデコードした第2の実行制御ユニット32によりイミーディエイトがALU34のソースとなるキャッシュあるいはレジスタに提供される。そして、2番目の命令セット10を実行するときは、その実行命令を行う準備が整ったALU34に対し実行命令15を行うことができる。すなわち、ディスティネーションフィールド17に規定されたレジスタに対し、実行命令フィールド15のMOVE命令を単に実行するだけになる。
【0040】
このように、本発明の命令セットによれば、実行命令と、その実行命令を行うためのインタフェースなどを記述した準備命令とを分離することができ、さらに、準備命令を実行命令に先立ってフェッチされる命令セットに記述して処理することができる。したがって、各々の命令セットに記述された実行命令を行うときは、ALU34のソース側にデータがリードされているので純粋に算術命令だけを行うようになる。このため、AC特性が良く、実行周波数特性が向上する。さらに、実行命令に対する前後の差はあるが、従来のパイプラインと同様に、命令フェッチ、レジスタデコード、処理実行などを段階的に行うことが可能であり、スループットも向上できる。また、本例のプログラムは2命令を1命令セットに記述できるようになっているので、VLIWと同様にプログラムカウンタの近傍の複数の命令を並列実行することにより処理速度を向上できる。
【0041】
さらに、4番目の命令セットの実行命令フィールド15には条件分岐が記述されており、その分岐先のアドレスは、この命令セットに先行する3番目の命令セットのYフィールド12に記述されている。したがって、4番目の命令セットを実行する際に、あるいはそれに先立ってフェッチレジスタに分岐先のアドレスをセットし、分岐条件が成立したときにペナルティなく分岐先の命令セットをフェッチあるいは実行することができる。さらには、分岐先の命令をプリフェッチしておくことも可能であり、分岐先の実行命令を実行する準備を事前に整えておくことも可能となる。したがって、分岐先の命令であっても1クロックの無駄もなく実行することが可能であり、1クロック単位で処理を正確に定義することができる。
【0042】
図9には、さらに、命令セット10のYフィールド12を用いてデータフロー指定命令25を記述した本発明のプログラム44を示してある。このようなデータフロー指定命令25を有するプログラム製品18がROM39、RAMあるいは他の適当なデータ処理装置で読取可能な記録媒体に記憶されて提供される。また、ネットワーク環境で交換される伝送媒体にプログラム製品44あるいは18を埋め込んで流通することも可能である。
【0043】
このプログラム44に記述されたデータフロー指定命令25の内、DFLWIは、データフローの初期設定を行う命令であり、DFLWCはデータフロー(データパス)を構成する演算処理ユニット34の接続情報(インタフェースの情報)および処理内容を規定する命令である。また、DFLWTはデータフローの終了条件を規定する命令であり、最後に、このようにして定義されたデータフローにデータを入力して処理を行うDFLWSが記述されている。これらのデータフロー指定命令25は、Yフィールド12に準備情報として記述され、第2の実行制御ユニット33でデコードされ、処理ユニット34でデータ処理を行うための構成(コンフィグレーション)がセットされる。
【0044】
図9に示した本例のプログラム44を実行する際には、プログラムのデータフロー指定にしたがって第2の実行制御ユニット33がデータフロー指定ユニットとして機能し、データフロー指定工程にしたがった制御を行う。すなわち、フェッチユニット31でフェッチされたデータフロー指定命令25をデコードし、処理ユニット34の入力および/または出力インタフェースを、その処理ユニット34の実行する時期とは独立して設定する。さらに、データフロー指定命令25によっては、処理ユニット25の処理内容も規定あるいは変更する制御を行う。また、第2の実行制御ユニット33は、スケジューラ36としても機能し、各処理ユニット34のインタフェースを維持するスケジュールを管理する。
【0045】
このため、図10に示すように、スケジューラ36として機能する第2の実行制御ユニット33により、3つの演算処理ユニット34のインタフェース(入出力)と、その処理内容が規定され、その状態あるいはコンフィグレーションが終了条件が成立するまで保持される。したがって、これらの演算処理ユニット34により構成されるデータフローあるいはデータパスにより、プログラムカウンタとは独立して次々と図6に示した処理と同じ処理が進行する。すなわち、データフロー指定を行うことにより、3つの演算処理ユニット34によって制御ユニット30の中に、その処理のための専用回路が事前に設けられた状態となり、プログラムカウンタの制御から外れて最大値を求める処理を実行することができる。そして、DP1.R1と#ENDが同じになることをDP1.SUBとしての機能を果たすALU34で判断するとデータフローが終了する。
【0046】
したがって、図9から判るように、データフローを定義することにより分岐命令を用いずに図6あるいは図7に記載されたプログラムを同じ処理を実行することができる。このため、汎用の制御ユニット30でありながら、専用回路を備えた制御ユニットと同様に特定の処理を非常に高速に効率良く行うことが可能となる。
【0047】
本発明にかかる命令セットおよび制御ユニットにより、様々な処理を行うデータフローあるいは疑似データフローを制御ユニットに設けることができる。これらのデータフローはテンプレートとして他の処理あるいは他のプログラムにも適用できるものであり、ソフトウェアを用いてハードウェアを随時、特定のデータ処理に適した構成に変更でき、それを他のプログラムあるいは他のハードウェアにおいても実現できることを意味する。そして、このようなデータフローを複数設定することも可能であり、マルチコマンドストリームをソフトウェアを用いて制御ユニットの中に定義することができる。したがって、複数の処理を並列実行することが極めて簡単となり、その実行内容をプログラミングにより自由に制御できる。
【0048】
図11に、データフロー指定命令25を有するプログラム41により制御できるデータ処理装置の異なる例を示してある。このデータ処理装置40はシステムLSIとして実現可能なものであり、プログラム41が記録されたコードRAM39と、このコードRAM39から命令をフェッチ可能なフェッチユニット42とを備えている。本例のフェッチユニット42は、データフロー指定命令25をフェッチすると、その命令をデコードすることができるデータフローデコーダ(DFDEC)42bと、データフロー指定命令25以外の一般命令をデコードするデコーダ42aとを備えている。したがって、このデータ処理装置40を制御するプログラム41は、データフロー指定命令25とその他の汎用命令とが混在したものであっても良いし、あるいは、データフロー指定命令25を備えたプログラムと、その他の汎用命令からなるプログラムとをコードRAM41に用意し、適当な方法で同期しながら命令をフェッチできるようにすることも可能である。
【0049】
汎用命令は、汎用のデコーダ42aによりデコードされ、そのデコードされた信号φpが、ALUおよびレジスタなどを備えた組込型の汎用プロセッサ43に供給され、実行される。一方、データフロー指定命令25は、DFDEC42bによりデコードされ、そのデコードされた信号φfはデータフロー処理ユニット(DFU)45に供給され、処理される。
【0050】
本例のDFU45は、複数のデータ処理ユニット(DPU)46が用意されている。各々のDPU46はFPGAによりデータパスが形成されており再構成可能な処理ユニットとなっている。このため、DPU46は、FPGA46cと、このFPGA46cのマッピングを記憶したRAM46bあるいはROMと、FPGA46cに対するデータの入出力を制御するインタフェース46dと、RAM46bに記憶されたマッピング情報およびインタフェース情報をFPGA46cおよびインタフェース46dに供給して、それらの構成あるいは状態を定義するコンフィグレーション制御部46aとを備えている。
【0051】
本例のデータ処理装置40においては、フェッチユニット42がデータフロー指定命令を含む命令セットをフェッチする工程を行い、さらに、DFDEC42bがデータフロー指定ユニットとして機能し、データフロー指定工程を含む制御を行う。すなわち、データフロー指定命令をデコードし、DFU45の各々のDPU46のコンフィグレーション制御部46aを介してDPU46のインタフェース46dを指定する。したがって、データフロー指定命令25により、DFU45のDPU46のコネクションを制御することが可能となり、複数のDPU46によって構成されるデータパスをフレキシブルにプログラムレベルで制御できる。
【0052】
図12(a)では、12個のDPU46により2つのデータパス47aおよび47bを構成したのに対し、DPU46のインタフェースを変更することにより図12(b)に示すように12個のDPU46により、図12(a)とは異なるデータ処理を実行可能な1つのデータパス48を構成することができる。複数のDPU46により構成可能なデータパスはこれに限定されるものでなく、データフロー指定命令により3つ以上のデータパスをソフトウェアを用いてデータ処理装置40のDFU45に定義することも可能である。したがって、複数の処理を並列実行することが極めて簡単となり、さらに、余剰のDPU46があれば、それによって適当なデータパスを設定することにより他のデータ処理装置により使用させることも可能である。
【0053】
また、DPU46を組み合わせてデータパスを構成あるいは変更する処理は、他のデータパスにおけるデータ処理を中断させずに、あるいは、組込プロセッサ43における処理を中断させずに行うことが可能である。さらに、FPGA46cにおける処理内容の変更を伴わなければ、インタフェース46dの設定を変えるだけでデータパスを動的に変更することができる。また、DPU46の処理内容を変える場合も、ある程度回路規模の小さなFPGA46cを採用することによりマッピングしなおすために要する時間を短縮することができる。したがって、データ処理装置40の処理対象となるアプリケーションのデータ処理に合致するデータパスをプログラムによりフレキシブルに構築し、そのデータ処理を極めて高速に実行することが可能となる。しかしながら、現状のFPGAでは、上述したように数クロック〜数十クロック単位でマッピングするためにはハードウェアが十分ではない。さらに、所望のデータフロー処理を実行するためには、それに数クロックあるいは10数クロック程度も先行して指示する必要があるので、データフロー指定命令をプログラムに記述する際にもデータ処理の開始や分岐命令と整合をとる必要があるなどの制限が多くなる。
【0054】
図13に、図1に示したXフィールド11およびYフィールド12を備えた命令セット10によりデータフローを定義することができる複数の処理ユニット(テンプレート)を備えたデータ処理装置の概略構成を、システムLSI50のイメージで示してある。このシステムLSI50は、データの処理動作を行うプロセッサ領域51と、そのプロセッサ領域51の処理を制御するプログラム18が格納されたコードRAM52と、その他の制御情報あるいは処理用のデータを記憶し、さらに、一次的なワーク領域ともなるデータRAM53とを備えている。プロセッサ領域51は、プログラムコードをフェッチするフェッチユニット(FU)55と、多目的な処理を行う汎用的なデータ処理ユニット(多目的ALU)56と、データフロー方式でデータを処理することができるデータフロー処理ユニット(DFU)57とを備えている。
【0055】
本例の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に格納されているプログラムの所定のアドレスから次の命令セットを随時フェッチすることができる。
【0056】
本例のLSI50においては、Xデコーダ62xが上述した第1の実行制御ユニット32としての機能を果たす。また、Yデコーダ62yが第2の実行制御ユニット33、すなわち、データフロー指定ユニットとしての機能を果たす。したがって、Yデコーダ62yが、命令セット10のYフィールド12に記述されたデータフロー命令をデコードし、それに基づきDFU57の処理ユニットの入出力インタフェースを設定してデータパスを構成する、本発明のデータフロー指定工程を実行する。このため、図13に示したデータ処理装置50の制御では、フェッチユニット55において、処理ユニットの入力および/または出力インタフェースを、その処理ユニットにより処理を実行する時期とは独立して指示するデータフロー指定命令25をフェッチする工程が行われ、さらに、Yデコーダ62yにおいて、データフロー指定命令25をデコードし、処理ユニットの入力および/または出力インタフェースを設定し、複数の処理ユニットによるデータパスを構成するデータフロー指定工程が行われる。
【0057】
多目的ALU56は、図5で説明した演算ユニット(ALU)34と、このALU34の入出力のデータを格納するレジスタ群35とを備えている。FU55でデコードされた命令がALU34の実行命令と準備情報であれば、Xデコーダ62xでデコードされた信号φxと、Yデコーダ62yでデコードされた信号φyは多目的ALU56に供給され、上記にて説明したようにALU34における処理が実行される。
【0058】
DFU57は、様々な処理を行うデータフローあるいは疑似データフローを構成するための複数のテンプレート71が配置されたテンプレート領域72を備えている。それぞれのテンプレート71は、図9および図10に基づき説明したように、演算処理ユニット(ALU)などのような特定のデータパスあるいはデータフローとしての機能を備えている処理ユニット(処理回路)である。そして、Yフィールド12に準備情報として記述されたデータフロー指定命令25をYデコーダ62yがデコードし、その信号φyにより、DFU57の処理ユニットであるテンプレート71それぞれのインタフェースと処理内容を規定することができる。
【0059】
したがって、これらのテンプレート71の接続および処理内容をYフィールド12に記述したデータフロー指定命令25によって変更することが可能である。このため、これらのテンプレート71の組み合わせにより、テンプレート領域72に特定のデータ処理に適したデータパスをプログラム18のデータフロー命令25によりフレキシブルに構成することが可能となる。したがって、プロセッサ51の中に、特定の処理のための専用回路が設けられた状態となり、そこでの処理をプログラムカウンタの制御から外れて実行することができる。すなわち、データフロー指定命令25によりテンプレート71の入出力と処理内容を変更することができるので、本例のプロセッサ51はソフトウェアを用いてハードウェアを随時、特定のデータ処理に適した構成に変更することができる。
【0060】
図14(a)に示したように、本例のプロセッサ51のDFU57で入力データφinに処理を施して出力データφoutにする場合、たとえば、図14(b)に示すように、テンプレート1−1、1−2および1−3を直列に繋いであるデータ処理を行うようにテンプレート71のインタフェースをデータフロー指定命令25で設定することができる。同様に、テンプレート領域72の他のテンプレート71に対してもそれらのインタフェースをセットして複数のテンプレート71を適当に組み合わせてデータパスあるいはデータフローを構成することが可能であり、テンプレート領域72に入力データφinの処理に適した専用処理ユニットあるいは専用データパス73を複数個、プログラム18により随時構築できる。
【0061】
一方、入力データφinに対する処理が変わったときは、図14(c)に示すように、データフロー指定命令25によりテンプレート71の間の接続を変えることが可能である。すなわち、データフロー指定命令25をYデコーダ62yがデコードし、該当するテンプレート71のインタフェースを変更することができる。このようなYデコーダ62yとしての制御(データフロー指定工程)により、テンプレート1−1、2−nおよびm−nを直列に接続して、他の異なる処理を実行するのに適した1つあるいは複数のデータパス73をテンプレート領域72に構築することが可能である。
【0062】
これらのテンプレート71は、図14に示した組み合わせに限らず、図12に示したような組み合わせにすることも可能であり、テンプレート71を単独で、あるいは複数のテンプレート71を組み合わせて構成された処理ユニットは、並列して実行される他の処理あるいは他のプログラムに割り当てることも可能である。複数のプロセッサ51が適当なバスで接続されていれば、他のプロセッサ51が主として行っているデータ処理のためにテンプレート71を組み合わせたトレイン(データパス)73を構成することも可能であり、テンプレート71というデータ処理資源を極めて有効に活用することができる。
【0063】
さらに、ANDやORなどの単純な論理ゲートから構成する必要があり、これらの単純な論理ゲートの実現をもカバーする目的のFPGAとは異なり、本発明に係るテンプレート71は、ALUなどとしての機能あるいは論理ゲートを基本的に備えた特定のデータパスを内部に実装する、より高いレベルのデータ処理ユニットである。そして、データフロー指定命令25により、テンプレート71のインタフェースを定義する、あるいは再定義することにより、それらの組み合わせを変えて特定の処理に適したさらに大きなデータパスを構成している。さらに、データフロー指定命令25によりテンプレート71で実行する処理内容を定義できるが、その際も、テンプレート71の内部のALUあるいは他の論理ゲートなどの接続を変更することで、テンプレート71の内部データパスの一部を選択する形で、テンプレート71で実行する処理内容を定義するようにしている。
【0064】
したがって、本例のテンプレート71が複数配置されたDFU57のハードウェアを特定のデータ処理に適した構成に変更するときには、FPGAのようにチップ全体を、あるいは限定された論理ブロック単位でもマッピングしなおす必要はなく、テンプレート71あるいはテンプレート領域72に予め設けられたデータパスを切り替えたり、それらの一部を選択することによりに、予め用意されたALUあるいは論理ゲートを用いて所望のデータパスを実現することができる。すなわち、テンプレート71の内部では論理ゲートのコネクションを必要な範囲で設定しなおし、テンプレート71の間でもそのコネクションを必要な範囲で設定し直すだけでよい。このため、極めて短時間に、クロック単位で、ハードウェアを特定のデータ処理に適した構成に変更することができる。
【0065】
さらに、論理ゲートが内蔵されていないFPGAは、極めて汎用的である反面、特定のアプリケーションの機能を実現するロジック回路を形成するためには無駄となる配線も多く、冗長で信号経路も短くはならない。したがって、実行するアプリケーションに特化したASICに対して実装面積が大きくなり、また、AC特性も劣化する。これに対し、予め適当な論理ゲートを内蔵している本例のテンプレート71を採用したプロセッサ51では、FPGAのように膨大な無駄な領域が発生するのを防止でき、AC特性も改善することができる。したがって、テンプレート71をベースとした本例のデータ処理ユニット57は、ハードウェアをプログラムで変更可能なリコンフィグラブルな構成の処理装置であり、FPGAを採用した処理装置に対し、より高いレベルでソフトウェアのフレキシビリティとハードウェアの高速性とを備えたデータ処理装置を提供することができる。
【0066】
そして、本例のテンプレート71は、適当な論理ゲートを予め内蔵しているので、特定のアプリケーションの処理を実現するために必要な論理ゲートを適当な実装密度で実現することができる。このため、テンプレート71を用いたデータ処理ユニットは経済的である。また、FPGAでデータ処理装置を構成した場合には、実装密度の低下をカバーするために、論理を再構成するプログラムのダウンロードを頻繁に行うことを検討する必要があり、そのための時間も処理速度が低下する原因となる。これに対し、本例のテンプレート71を用いたプロセッサ51では、実装密度が高いので、その低下をカバーする必然性は減少し、実装密度の低下を補償するためにハードウェアを再構成する要求は少なくなる。そして、ハードウェアの再構成もクロック単位で制御することができる。これらの点でも、FPGAをベースとしたリコンフィグラブルな処理装置と異なり、ハードウェアをソフトウェアにより再構築できる処理装置であって、コンパクトで実行速度の速いデータ処理装置を提供することができる。
【0067】
さらに、図13に示したDFU57は、テンプレート領域72に配置されたテンプレート71のインタフェースおよび処理内容(以降においてはコンフィグレーションデータ)を一括して定義あるいはセットすることができるコンフィグレーションレジスタ(CREG)75と、そのCREG75にセットする複数のコンフィグレーションデータCi(iは適当な整数を示す、以下においても同様である)を記憶したコンフィグレーションRAM(CRAM)76を備えている。そして、データフロー指定命令25として「DFSET Ci」といった命令が用意されており、Yデコーダ62yがこの命令をデコードすると、CRAM76に記憶されているコンフィグレーションデータCiの中から所望のデータがCREG75にロードされる。その結果、テンプレート領域72に配置された複数のテンプレート71のコンフィグレーションを一括して変更できる。あるいは、複数のテンプレート71からなる処理ブロック単位でそのコンフィグレーションを変更することができる。
【0068】
また、DFLWIあるいはDFLWCといった上記のようなデータフロー指定命令25をYデコーダ62yがデコードすることにより、個々のテンプレート71のコンフィグレーションを設定あるいは変更することも可能である。したがって、本例のDFU57では、多くの情報が必要となる複数のテンプレート71のコンフィグレーションを1命令で変更することが可能であり、命令効率がよく、さらに、再構成のために消費される時間が短縮されている。
【0069】
さらに、本例のDFU57は、CRAM76にブロック単位でコンフィグレーションデータをダウンロードするコントローラ77を備えている。また、データフロー指定命令25として「DFLOAD BCi」が用意されており、Yデコーダ62yがこの命令をデコードすると、データRAM53などに予め用意されている多数のコンフィグレーションデータ78の中から、進行中の処理あるいは今後発生するであろう処理のためのコンフィグレーションデータCiを予めコンフィグレーションメモリであるCRAM76にダウンロードしておくことができる。このような構成によりCRAM76に小容量の高速な連想メモリなどを採用することが可能となり、さらに短時間でハードウェアをフレキシブルに変更することができる。
【0070】
図15に、テンプレート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を介して他のテンプレートに出力される。
【0071】
このテンプレート71は、独自のコンフィグレーションレジスタ84を備えており、このレジスタ84に格納されるデータによって複数のセレクタ89を制御し、制御部85、加算器86、比較器87などの論理ゲートに入力する信号を選択することができる。したがって、テンプレート71は、コンフィグレーションレジスタ84のデータを変更することにより、データパス88の一部を用いた処理も可能であり、たとえば、制御部85を用いずに、以下のような処理を実行させることも可能である。
【0072】
(B+C)==D
(B−C)==D ・・・(B)
また、同様にコンフィグレーションレジスタ84のデータを変えることにより、このテンプレート71は、データパス88の一部を用いて、制御部85による条件判定回路、加算器86を用いた加減演算回路、比較器87を用いた比較回路としても使用することができる。これらの論理ゲートはテンプレート71に予め作りこまれた専用回路で構成されているので、回路構成としても、処理時間としても無駄がない。そして、入力および出力データのコンフィグレーションは、コンフィグレーションレジスタ84によって制御されるインタフェース81により変更することが可能であり、所望のデータ処理を行うデータフローの全部あるいは一部を、本例のテンプレート71で処理することができる。
【0073】
このテンプレート71は、さらに、独自のコンフィグレーションレジスタ84のデータを上述したCREG75からのデータと、データフロー指定ユニットとして機能するFU55のYデコーダ(YDEC)62yからのデータのいずれに基づいても書き換えることが可能であり、その選択はYデコーダ62yからの信号により制御することができる。すなわち、上述したようなテンプレート71のコンフィグレーションは、データフロー指定命令25に基づきYデコーダ62yあるいはこのYデコーダ62yで実行されるデータフロー指定工程によって行うことができる。さらに、DFSET命令などによりCRAM76に記憶されたコンフィグレーションデータCiにしたがって、他のテンプレートと共にコンフィグレーションを変えてハードウェア構成を変更することも可能である。また、データフロー指定命令25によりコンフィグレーションレジスタ84のデータを設定できるので、テンプレート71の特定のデータパス88を部分的に選択して使用することも可能である。
【0074】
このため、テンプレート71を個別でもグループあるいはブロック単位でもデータフロー指定命令25によってコンフィグレーションを変え、プロセッサ51のデータパスをフレキシブルに構成することができる。
【0075】
テンプレート71の構成は本例に限定されるものではなく、他のデータ処理を実現可能なように論理ゲートを組み合わせた、適当な種類と数のテンプレートを用意しておくことにより、それらの組み合わせを変えたり、処理内容の一部を変更することにより、多くのデータ処理をテンプレート71を組み合わせたデータパスにより処理することができる。すなわち、本発明によれば、ある程度コンパクトなデータパスを幾種類かのテンプレートとして用意しておき、そのデータパス間の組み合わせを指示して、データフロー型の処理に持ち込むことにより高性能化を図ることが可能である。そして、テンプレートでは対応できない処理は、プロセッサ51の多目的ALU56の機能を用いて実行することが可能である。さらに、本例の多目的ALU56は命令セット10のYフィールド12に記述された準備命令により分岐などにより発生するペナルティを最小限に止められるようになっている。このため、本例のプロセッサ51を搭載したシステムLSI50により、プログラムで処理を記述するのと同様に柔軟にハードウェアを変更し、高速処理あるいはリアルタイム処理が可能な高性能のLSIを提供することができる。また、アプリケーションの変更や仕様変更などに対して柔軟に対応でき、仕様変更などに伴い処理性能が低下することも防止できる。
【0076】
システムLSI50を開発あるいは設計する時点で、システムLSI50を用いて実行するアプリケーションの概要が判明している場合には、そのアプリケーションの処理に適した構成のテンプレートを中心にテンプレート領域72を構成することが可能であり、より多くのデータ処理をデータフロー型の処理で実行し、処理性能を高めることが可能である。汎用的なLSIを提供する場合には、浮動小数点演算、乗除算、画像処理などの汎用のアプリケーションで多く発生する処理に適したテンプレートを中心にテンプレート領域72を構成することが可能である。
【0077】
このように、本発明にかかる命令セットおよび制御ユニットにより、様々な処理を行うデータフローあるいは疑似データフローを備えたLSIを提供することが可能であり、ソフトウェアを用いてデータフローを実行するハードウェアを随時、特定のデータ処理に適した構成に変更できる。また、上記に説明した、テンプレートの組み合わせによりデータフロー型の処理を実行するアーキテクチャ、すなわち、DFU57あるいはテンプレート領域72は、Xフィールド11およびYフィールド12を備えた命令セット10とは独立して制御ユニットやプロセッサに組み込むことが可能である。そして、FPGAよりも高速処理が可能であり、ハードウェアの変更に係る時間も短く、AC特性も良いデータ処理装置を提供できる。
【0078】
また、本例のDFU57あるいはテンプレート領域72を、従来型の汎用の組込プロセッサ、すなわち、ニーモニックなコードで動作するプロセッサと共に組み込んでシステムLSIを構成することも可能であり、テンプレート71で対応できない処理は、汎用のプロセッサで処理することができる。しかしながら、従来のプロセッサでは、分岐のペナルティや、演算処理のためのレジスタを準備するためにクロックを消費するなどの問題があることは上述した通りであり、本例のX−Yフィールドを備えた命令セット10をデコードして実行できるプロセッサ51のような形態が望ましい。
【0079】
さらに、本例のプロセッサ51および命令セット10であれば、Yフィールド12を用い、他の処理と並列して、DFU57のコンフィグレーションをデータ処理を実行する前に設定あるいは変更することが可能であり、処理効率およびプログラム効率の面で優れている。従来のニーモニックな命令コードと、データフロー型の命令コードとを1つの命令セットに記述することによりプログラム効率を高めることも可能である。しかしながら、本例の命令セット10のYフィールド12の機能は、データフロー型の命令コードを記述するだけでないことは上述したとおりである。
【0080】
また、本発明に係るプロセッサは、Yフィールド12により実行に先立って物理的なデータパスの構成を変えることができる。これに対し、従来のプロセッサでは、複数のマルチプロセッサ間の接続方法が、共有メモリ等を通す方法しか存在せず、アイドル状態のプロセッサが存在しても、その内部のデータ処理ユニットを外部から利用する方法が無かった。本発明にかかる制御ユニットにおいては、適当なデータフローを設定することにより、余っているハードウェアを他の制御ユニットにより使用するといったことも可能となる。
【0081】
さらに、副次的な効果として、命令実行シーケンスの効率化と内部データパスの独立性の確保と自由度(流用度)の向上により、本発明にかかる制御ユニットあるいはそれを用いたプロセッサにおいては、実行するハードウェアに余裕さえあれば、全く性質の異なるコンテキストの命令シーケンスを同時に供給しても問題無く実行することが可能となる。
【0082】
更に、現在、ハードウェアとソフトウェアの強調設計によるメリットが盛んに指摘されるようになったが、本発明による命令セットおよび制御ユニットを採用することにより、ユーザ側の要求するアルゴリズムやデータ処理を許されるハードウェア・コストでどう効率良く経済的に実現可能かという事に対しする1つの回答を与えることができる。例えば、ハードウェア・コストを最小に抑制しながら、性能向上に貢献可能なデータパス(データフロー)を、過去のデータパスに関する構成結果情報である本発明にかかる命令セット(旧DAP/DNA)のデータ情報と、その後に追加されるハードウェア構成情報およびデータ処理を実行するシーケンス情報から新しいタイプの組み合わせ結果、すなわち、新しいデータフローを定義するソフトウェアを導き、極めて無駄の少ない最適解を提供することが可能となる。
【0083】
また、従来は、ハードウェア構成が要素化され難いために、その相互の組み合わせ自体の柔軟性が無く、基本的には、性能を上げるために1つ新規のデータパスを追加するというようなやり方が主流であった。そして、性能向上のための情報蓄積の点でも、実際にそれを実現する上で必要となるハードウェア情報の追加という観点でも、数値化し難くデータベース化することは困難であった。これに対し、本発明によれば、ある程度コンパクトなデータパスをいくつかテンプレート的に用意しておき、そのデータパス間の組み合わせを指示して、データフロー型の処理に持ち込むことにより高性能化を図ることが可能である。そして、極めて細かい単位でのハードウェアとソフトウェアとの連携の見積もりが容易となる。また、ハードウェアとソフトウェアのトレードオフ情報を蓄積することも可能で、データパス単位でその組み合わせの可能性が、処理性能に対する貢献度と密接に結びつくことになる。したがって、ハードウェアとソフトウェアの緊密な実行性能データや処理要求に応じた性能コストの正確な見積もりを蓄積することが可能となる。もちろん、これらのデータパスは主要な処理あるいは汎用的な処理の実行を停止させないで実現することも可能となるため、性能要求に対して、何をどれだけどのように追加すれば、どのような結果が期待出来るということを、純粋に過去に蓄積された本発明にかかる命令セットおよびハードウェアのデータから予測する事が可能とする。
【0084】
これは、現在行われている設計コストや仕様策定コストの著しい低減に貢献するだけで無く、次の新しい設計に対して、新規に追加すべきハードウェアとソフトウェアのトレードオフを必要最小限で完了させる事に貢献する。また、処理形態に応じて、内部のデータパスを外部へ貸し出しする事も容易にする為、ハードウェアのリソースシェアリング化が可能となり、複数の本発明にかかるモジュール(DAP/DNAモジュール)の間で並列処理化を極め、コンパクトなハードウェアで実現する事が可能となる。
【0085】
なお、上記に示したデータ処理装置および命令セットなどは、本発明の一例に過ぎず、たとえば、データ処理装置においては、コードRAMあるいはデータRAMなどを外部のRAMあるいはROMとしたり、これらに加えて外部のDRAMあるいはSRAMなどとのインタフェースを設けることも可能である。さらに、外部の他のデバイスと接続するための入出力インタフェースなど、システムLSIなどのデータ処理装置として公知の機能を備えたデータ処理装置も本発明に含まれる。したがって、本発明は以下の請求の範囲の記載により理解および把握され、それらの請求の範囲に含まれる変形例は全て本発明の範囲に含まれる。
【0086】
また、本発明のデータ処理装置は、様々なデータ処理を実行可能なプロセッサあるいはLSIなどとして提供することが可能であり、電子素子の集積回路のみならず、光素子、さらには電子素子および光素子を集積した光集積回路装置にも適用することができる。特に、本発明の命令セットを備えた制御プログラムおよびデータ処理装置においては、データ処理を柔軟に、そして高速に実行できるので、ネットワーク処理や、画像処理などの高速性およびリアルタイム性能を要求されるデータ処理装置に好適なものである。
【0087】
【発明の効果】
以上に説明したように、本発明においては、データフロー指定命令により複数の処理ユニットのインタフェースを変更することによりデータパスをプログラムによりフレキシブルに組替え可能としている。したがって、複雑なデータ処理に対し、それらのデータ処理に特化した多種多様な専用回路を用いなくても、それぞれのデータ処理をフレキシブルに、ハードウェアにより高速に実行することができる。さらに、特定のデータパスを予め備えたテンプレートを処理ユニットとして採用することにより、性能向上に貢献可能なデータパス(データフロー)をテンプレートという資産と、それを使用する命令セットという資産で蓄積できる。さらに、その後に追加されるハードウェア構成情報およびデータ処理を実行するシーケンス情報に基づき随時更新し最適解を求めるようにすることができる。したがって、従来存在したアプリケーション間の資産の共有化とハードウェア資産の共有化、及び高性能化に対する適切なハードウェア投資がより健全な方向へ向かい、ネットワーク化社会を構築する上でのテクノロジー・インフラとしても大きく貢献可能となることが期待できる。
【図面の簡単な説明】
【図1】図1は、データフロー指定命令を含む命令セットの概要を示す図である。
【図2】図2は、図1に示す命令セットのYフィールドをさらに詳しく説明する図である。
【図3】図3は、図1に示す命令セットを実際に用いた簡単な例を示す図である。
【図4】図4は、図3に示す命令セットによりデータがレジスタに格納される様子を示す図である。
【図5】図5は、本発明の命令セットを実行可能なデータ処理装置を示す図である。
【図6】図6は、従来のCPUあるいはDSPで実行可能なサンプルプログラムである。
【図7】図7は、本発明にかかる制御ユニット用のプログラム例である。
【図8】図8は、図7に示すプログラムを本発明にかかる命令セットの実行プログラムにコンパイルした例を示す図である。
【図9】図9は、本発明にかかる制御ユニット用の異なるプログラム例である。
【図10】図10は、図9のプログラムにより構成されたデータフローを示す図である。
【図11】図11は、データフローが指定可能なデータ処理装置の異なる例を示す図である。
【図12】図12は、データパスが変更される例を示す図である。
【図13】図13は、本発明の命令セットによりデータ処理を実行可能なデータ処理装置の概略構成を示す図である。
【図14】図14は、テンプレートの組み合わせを変えて異なる専用回路を構成する様子を示す図である。
【図15】図15は、テンプレートの一例を示す図である。
Claims (4)
- 入力および/または出力インタフェースを変更可能な複数の処理ユニットにより独立して動作可能な複数のデータパスを構成可能な処理領域を有するデータ処理装置。
- 請求項1において、前記処理領域では異なるデータパスにより異なる処理を並列に実行可能なデータ処理装置。
- 請求項2において、前記処理領域では異なるデータパスにより別命令のプログラムを実行可能なデータ処理装置。
- 請求項2において、前記処理領域では当該データ処理装置と異なるデータ処理装置の処理を実行可能なデータ処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003189788A JP2004102988A (ja) | 1999-08-30 | 2003-07-01 | データ処理装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP24413799 | 1999-08-30 | ||
JP2003189788A JP2004102988A (ja) | 1999-08-30 | 2003-07-01 | データ処理装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001520598A Division JP4234925B2 (ja) | 1999-08-30 | 2000-08-30 | データ処理装置、制御方法およびその記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004102988A true JP2004102988A (ja) | 2004-04-02 |
Family
ID=32299991
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003189788A Pending JP2004102988A (ja) | 1999-08-30 | 2003-07-01 | データ処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004102988A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1970791A2 (en) | 2007-03-16 | 2008-09-17 | Matsushita Electric Industrial Co., Ltd. | Reconfigurable circuit, reconfigurable circuit system, and reconfigurable circuit setting method |
WO2008142750A1 (ja) | 2007-05-17 | 2008-11-27 | Fujitsu Limited | 演算ユニット、プロセッサ及びプロセッサアーキテクチャ |
US8803893B2 (en) | 2009-09-16 | 2014-08-12 | Fuji Xerox Co., Ltd. | Image data processing apparatus |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08286908A (ja) * | 1995-04-17 | 1996-11-01 | Ricoh Co Ltd | 動的に再設定自在な処理ユニット、システム及び方法 |
-
2003
- 2003-07-01 JP JP2003189788A patent/JP2004102988A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08286908A (ja) * | 1995-04-17 | 1996-11-01 | Ricoh Co Ltd | 動的に再設定自在な処理ユニット、システム及び方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1970791A2 (en) | 2007-03-16 | 2008-09-17 | Matsushita Electric Industrial Co., Ltd. | Reconfigurable circuit, reconfigurable circuit system, and reconfigurable circuit setting method |
WO2008142750A1 (ja) | 2007-05-17 | 2008-11-27 | Fujitsu Limited | 演算ユニット、プロセッサ及びプロセッサアーキテクチャ |
US8281113B2 (en) | 2007-05-17 | 2012-10-02 | Fujitsu Limited | Processor having ALU with dynamically transparent pipeline stages |
US8803893B2 (en) | 2009-09-16 | 2014-08-12 | Fuji Xerox Co., Ltd. | Image data processing apparatus |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4234925B2 (ja) | データ処理装置、制御方法およびその記録媒体 | |
JP2021192257A (ja) | プログラム可能な最適化を有するメモリネットワークプロセッサ | |
US20190004878A1 (en) | Processors, methods, and systems for a configurable spatial accelerator with security, power reduction, and performace features | |
US20190004955A1 (en) | Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features | |
US9275002B2 (en) | Tile-based processor architecture model for high-efficiency embedded homogeneous multicore platforms | |
US8667252B2 (en) | Method and apparatus to adapt the clock rate of a programmable coprocessor for optimal performance and power dissipation | |
US20060026578A1 (en) | Programmable processor architecture hirarchical compilation | |
EP2372530A1 (en) | Data processing method and device | |
JP2014501009A (ja) | データを移動させるための方法及び装置 | |
WO2013098643A2 (en) | Advanced processor architecture | |
Voitsechov et al. | Inter-thread communication in multithreaded, reconfigurable coarse-grain arrays | |
Krashinsky | Vector-thread architecture and implementation | |
JP2004102988A (ja) | データ処理装置 | |
JP4560705B2 (ja) | データ処理装置の制御方法 | |
Boppu | Code Generation for Tightly Coupled Processor Arrays | |
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 | |
Ge et al. | A data prefetch and reuse strategy for coarse-grained reconfigurable architectures | |
US20130061028A1 (en) | Method and system for multi-mode instruction-level streaming |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070830 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20100224 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20100309 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20100224 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100906 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101019 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110301 |