(57)【特許請求の範囲】
【請求項１】
特定のデータ処理に適した専用回路を備えた専用処理ユニットであって、実行中の命令を格納する第１の命令レジスタを備えた専用処理ユニットと、
汎用のデータ処理に適した汎用処理ユニットであって、実行中の命令を格納する第２の命令レジスタを備えた汎用処理ユニットと、
コードメモリよりフェッチした命令コードが前記専用処理ユニットにおける処理を規定した専用命令であれば前記専用処理ユニットの前記第１の命令レジスタに前記専用命令またはそれをデコードした命令を供給するとともに前記汎用処理ユニットの前記第２の命令レジスタにＮＯＰ命令を供給して前記汎用処理ユニットでの処理を行わずに次の命令をフェッチ可能とし、前記命令コードが前記汎用処理ユニットにおける処理を規定した汎用命令であれば前記汎用処理ユニットの前記第２の命令レジスタに前記汎用命令またはそれをデコードした命令を供給し、さらに、前記命令コードが前記専用処理ユニットおよび汎用処理ユニットにおける協調処理を規定した協調命令であれば前記専用処理ユニットの前記第１の命令レジスタおよび前記汎用処理ユニットの前記第２の命令レジスタに前記協調命令またはそれをデコードした命令をそれぞれ供給して前記専用処理ユニットの処理および前記汎用処理ユニットの処理を同期して実行させるフェッチユニットとを有するデータ処理装置。
【請求項２】
請求項１において、前記協調命令は、前記汎用処理ユニットのハードウェア資源の少なくとも１部を前記専用処理ユニットに対し開放する命令であるデータ処理装置。
【請求項３】
請求項１において、前記協調命令は、前記汎用処理ユニットの汎用レジスタのデータを入力として前記専用処理ユニットにおける処理を実行する汎用レジスタ参照命令であり、
前記汎用処理ユニットは、前記汎用レジスタ参照命令に指定された前記汎用レジスタのデータを前記専用処理ユニットに出力するデータパスと、前記専用処理ユニットにおいて処理されたデータを前記汎用レジスタ参照命令に指定された前記汎用レジスタに書き込むデータパスとを備えているデータ処理装置。
【請求項４】
請求項１において、前記協調命令は、前記専用処理ユニットの専用レジスタのデータを入力として前記汎用処理ユニットの演算器が処理を実行する汎用演算器参照命令であり、
前記汎用処理ユニットは、前記専用処理ユニットから供給されたデータを前記演算器において前記汎用演算器参照命令で指定された処理を行い、その結果を前記専用処理ユニットに出力するデータパスを備えているデータ処理装置。
【請求項５】
請求項１において、前記協調命令は、前記専用処理ユニットの専用レジスタのデータを前記汎用処理ユニットのデータＲＡＭに書き込む汎用ＲＡＭ書き込み命令であり、
前記汎用処理ユニットは、前記専用処理ユニットから前記データＲＡＭのアドレスと書き込むデータとを取得するデータパスを備えているデータ処理装置。
【請求項６】
請求項１において、前記協調命令は、前記汎用処理ユニットのデータＲＡＭのデータを前記専用処理ユニットの専用レジスタに書き込む汎用ＲＡＭ読み込み命令であり、
前記汎用処理ユニットは、前記専用処理ユニットから前記データＲＡＭのアドレスを取得し、そのアドレスのデータを前記専用処理ユニットに出力するデータパスを備えているデータ処理装置。
【請求項７】
請求項１ないし６のいずれかにおいて、前記汎用処理ユニットは、前記協調命令またはそれをデコードした命令を取得すると、前記専用処理ユニットにおける処理が終了するのを待って前記フェッチユニットに次の前記命令コードをフェッチする指示を出すデータ処理装置。
【請求項８】
請求項１ないし７のいずれかにおいて、複数の前記専用処理ユニットを有するデータ処理装置。
【請求項９】
特定のデータ処理に適した専用回路を備えた専用処理ユニットと、汎用のデータ処理に適した汎用処理ユニットと、コードメモリより命令コードをフェッチするフェッチユニットとを有するデータ処理装置の制御方法であって、
前記専用処理ユニットは実行中の命令を格納する第１の命令レジスタを備え、前記汎用処理ユニットは、実行中の命令を格納する第２の命令レジスタを備えており、
当該制御方法は、
前記フェッチユニットがコードメモリより命令コードをフェッチするステップと、
前記フェッチユニットがフェッチした前記命令コードが、特定のデータ処理に適した専用回路を備えた専用処理ユニットにおける処理を規定した専用命令であれば前記専用処理ユニットの前記第１の命令レジスタに前記専用命令またはそれをデコードした命令を供給するとともに前記汎用処理ユニットの前記第２の命令レジスタにＮＯＰ命令を供給して前記汎用処理ユニットでの処理を行わずに次の命令をフェッチするステップと、
前記フェッチユニットがフェッチした前記命令コードが、汎用のデータ処理に適した汎用処理ユニットにおける処理を規定した汎用命令であれば前記汎用処理ユニットの前記第２の命令レジスタに前記汎用命令またはそれをデコードした命令を供給するステップと、
前記フェッチユニットがフェッチした前記命令コードが前記専用処理ユニットおよび汎用処理ユニットにおける協調処理を規定した協調命令であれば前記専用処理ユニットの前記第１の命令レジスタおよび前記汎用処理ユニットの前記第２の命令レジスタに対し前記協調命令またはそれをデコードした命令をそれぞれ供給して前記専用処理ユニットの処理および前記汎用処理ユニットの処理を同期して実行させるステップとを有するデータ処理装置の制御方法。
【請求項１０】
請求項９において、前記協調命令は、前記汎用処理ユニットのハードウェア資源の少なくとも１部を前記専用処理ユニットに対し開放する命令であるデータ処理装置の制御方法。
【請求項１１】
請求項９において、前記協調命令は、前記汎用処理ユニットの汎用レジスタのデータを入力として前記専用処理ユニットにおける処理を実行する汎用レジスタ参照命令、前記専用処理ユニットの専用レジスタのデータを入力として前記汎用処理ユニットの演算器が処理を実行する汎用演算器参照命令、前記専用処理ユニットの専用レジスタのデータを前記汎用処理ユニットのデータＲＡＭに書き込む汎用ＲＡＭ書き込み命令、および前記汎用処理ユニットのデータＲＡＭのデータを前記専用処理ユニットの専用レジスタに書き込む汎用ＲＡＭ読み込み命令のいずれかであるデータ処理装置の制御方法。
【請求項１２】
請求項９ないし１１のいずれかにおいて、前記協調命令をフェッチしたときは、前記専用処理ユニットにおける処理が終了するのを待って次の前記命令コードをフェッチするステップをさらに有するデータ処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、専用回路を備えたデータ処理装置に関するものである。
【背景技術】
【０００２】  アプリケーションに特化したプロセッサの要求が高まっている。例えば、画像処理、ネットワーク処理といった分野では各処理に特化した専用回路と、その専用回路を駆動する専用命令を装着可能とし、個々のアプリケーションの仕様に柔軟に対応できるプロセッサがコストパフォーマンス上有利である。そのようなプロセッサについては本願出願人も、特開２０００−２０７２０２号にて提案している。
【発明が解決しようとする課題】
【０００３】  アプリケーションの仕様に柔軟に対応できるプロセッサにおける難しさの１つは、ユーザの要求、すなわち要求仕様に対し、いかに自由度の高い専用命令（ユーザ専用命令）が装着できるかということと、その専用命令をいかにオーバヘッドの少ない状態で実行できるかということのトレードにあるといえる。
【０００４】  上記の特開２０００−２０７２０２号に開示されたプロセッサは、専用処理ユニット（専用データ処理ユニット、以降においてはＶＵ）と、汎用処理が可能な汎用処理ユニット（基本実行ユニットあるいはプロセッサユニット、以降においてはＰＵ）を備えている。したがって、汎用処理ユニットＰＵをベースとした汎用処理機能に加えて、ユーザの要求仕様に対応した処理に特化した専用回路を極めて高い自由度で装着でき、ユーザが定義した専用命令を実装することが可能となっている。さらに、ＰＵおよびＶＵが共通に参照できるレジスタが用意されており、ＭＯＶＥ命令などのレジスタ転送命令を実行するだけでＰＵとＶＵとの間でのデータ転送が可能となっており、ＶＵとして、ＰＵとのデータ交換を含めた極めて高い自由度の専用命令を実装できるアーキテクチャとなっている。
【０００５】  近年、画像処理あるいはネットワーク処理といったリアルタイムな処理が要求される分野では、さらに高いレベルで高速処理あるいはリアルタイムな処理性能が要求されつつある。たとえば、レジスタ転送を採用している上記のプロセッサにおいて、ＶＵにて、ＰＵのデータに対してユーザ独自の専用命令によりデータ処理を行う場合、まず、ＰＵからデータを転送し、演算結果を再びＶＵから転送するために少なくとも２サイクルの処理が基本的に必要である。ＶＵにおける処理内容が例えば数十クロック程度の多数のクロックを消費するのであれば、ＶＵとＰＵの間のデータ転送に費やされるクロックは、その処理で消費されるクロックに対する比率が小さいのでそれほど問題にはならない。しかしながら、ＶＵの処理が積和演算を基本とするもので数クロックで終えてしまうような場合には、データ転送に費やされるクロックが極めて大きなオーバヘッドとして見えてくる。特に、プロセッサの処理速度を向上するために、専用回路化して専用命令で実行可能とする処理の範囲を増大すると、専用回路の処理で消費されるクロック数は減少する傾向となり、データ転送のオーバヘッドが増大しやすい。
【０００６】  また、ＰＵとＶＵとで共通に参照できるレジスタを採用した方法は、汎用性は高いが、ＰＵおよびＶＵの内部レジスタからデータ転送用のレジスタへ転送するだけで１サイクルを消費するので、ＶＵとＰＵとの間でデータ転送をしようとすると往復で合計４サイクルを消費する。したがって、データ転送で消費されるクロック数を削減することにより大幅に処理速度を向上できる。しかしながら、ＰＵの構成をＶＵの構成に合わせて変形することは、ＰＵの汎用性を犠牲にすることになり、ユーザの仕様に合わせて自由な構成のＶＵを実装するためのプラットフォームとしての価値が低下する。さらに、ＰＵも含めて設計しなおすことになると、プロセッサの開発期間とコストが増加することになり経済的な解決策でもない。
【０００７】  そこで、本発明においては、ＰＵの汎用性を犠牲にすることなく、ＶＵとＰＵとのデータ転送のオーバヘッドを削減可能なデータ処理装置およびその制御方法を提供することを目的としている。そして、ＶＵとＰＵの間のデータ転送に伴うクロック消費を表面に現さずに、あるいはほとんど現さずにＶＵにおける処理を実行することができるデータ処理装置およびその制御方法を提供することを目的としている。
【課題を解決するための手段】
【０００８】
【課題を解決するための手段】
本発明においては、専用処理ユニットにおける処理を規定した専用命令と、汎用処理ユニットにおける処理を規定した汎用命令に加え、専用処理ユニットおよび汎用処理ユニットにおける協調処理を規定した協調命令を設ける。本発明の一態様は、特定のデータ処理に適した専用回路を備えた専用処理ユニットであって、実行中の命令を格納する第１の命令レジスタを備えた専用処理ユニットと、汎用のデータ処理に適した汎用処理ユニットであって、実行中の命令を格納する第２の命令レジスタを備えた汎用処理ユニットと、コードメモリよりフェッチした命令コードが専用処理ユニットにおける処理を規定した専用命令であれば専用処理ユニットの第１の命令レジスタに専用命令またはそれをデコードした命令を供給するとともに汎用処理ユニットの第２の命令レジスタにＮＯＰ命令を供給して汎用処理ユニットでの処理を行わずに次の命令をフェッチ可能とし、命令コードが汎用処理ユニットにおける処理を規定した汎用命令であれば汎用処理ユニットの第２の命令レジスタに汎用命令またはそれをデコードした命令を供給し、さらに、命令コードが専用処理ユニットおよび汎用処理ユニットにおける協調処理を規定した協調命令であれば専用処理ユニットの第１の命令レジスタおよび汎用処理ユニットの第２の命令レジスタに協調命令またはそれをデコードした命令をそれぞれ供給して専用処理ユニットの処理および汎用処理ユニットの処理を同期して実行させるフェッチユニットとを有するデータ処理装置である。
【０００９】
また、本発明の異なる態様の１つは、フェッチユニットがコードメモリより命令コードをフェッチするステップと、フェッチユニットがフェッチした命令コードが、特定のデータ処理に適した専用回路を備えた専用処理ユニットにおける処理を規定した専用命令であれば専用処理ユニットの第１の命令レジスタに専用命令またはそれをデコードした命令を供給するとともに前記汎用処理ユニットの前記第２の命令レジスタにＮＯＰ命令を供給して前記汎用処理ユニットでの処理を行わずに次の命令をフェッチするステップと、フェッチユニットがフェッチした命令コードが、汎用のデータ処理に適した汎用処理ユニットにおける処理を規定した汎用命令であれば汎用処理ユニットの第２の命令レジスタに汎用命令またはそれをデコードした命令を供給するステップと、フェッチユニットがフェッチした命令コードが専用処理ユニットおよび汎用処理ユニットにおける協調処理を規定した協調命令であれば専用処理ユニットの第１の命令レジスタおよび汎用処理ユニットの第２の命令レジスタに対し協調命令またはそれをデコードした命令をそれぞれ供給して前記専用処理ユニットの処理および前記汎用処理ユニットの処理を同期して実行させるステップとを有するデータ処理装置の制御方法である。
【００１０】  このデータ処理装置またはその制御方法を採用することにより、専用命令と、汎用命令と、協調命令とを有するプログラムを適当な記録媒体、たとえば、コードＲＯＭあるいはＲＡＭなどに記録して提供することができる。そして、データ処理装置あるいはその制御方法においては、フェッチユニットまたはフェッチするステップで、専用命令と、汎用命令と、協調命令とを有するプログラムから、専用命令、汎用命令および協調命令が分岐なども含めて配列された順番にフェッチされ、専用処理ユニットあるいは汎用処理ユニットに供給される。したがって、プログラムレベルで、汎用処理ユニットと専用処理ユニットにおける処理の順番を協調して制御することが可能である。したがって、これらのユニット間で同期を取る特殊な回路などを設けなくても、汎用処理ユニットと専用処理ユニットの並列処理も含めて制御することができる。複数の専用処理ユニットを有するデータ処理装置においては、複数の専用処理ユニットの並列処理も含めてプログラムレベルで制御することができる。このため、汎用処理ユニットと専用処理ユニットにおける処理を規定した協調命令を設けることにより、汎用処理ユニットと専用処理ユニットとを同期させて共通の処理を実行することが可能であり、汎用処理ユニットのハードウェア資源あるいはその一部と、専用処理ユニットのハードウェア資源あるいはその一部とで構成されるデータパスを用いて処理を行うことが可能となる。
【００１１】  したがって、汎用処理ユニットから共通のレジスタなどを介してデータを専用処理ユニットに転送しなくても、汎用処理ユニットの内部レジスタなどの資源と、専用処理ユニットの演算器などの資源とからなるデータパスにより同じ処理が可能であり、その処理結果をデータ転送しなくても汎用処理ユニットに戻すことができる。たとえば、汎用処理ユニットの内部レジスタに記録されたデータを専用処理ユニットの専用回路で処理し、その結果を再び汎用処理ユニットの内部レジスタに格納する処理が、フリップフロップなどが介在したときの遅延を除けば、専用処理ユニット内にデータがある条件で専用回路において処理するのと同じサイクルで実行することが可能である。したがって、データ転送で消費されるクロック数を削減でき、データ転送などのコマンドは不要となるので、プログラム上ではデータ転送のために消費されるサイクルが現れないようにすることができる。
【００１２】  協調命令を必要とするか否かは、本発明に係るデータ処理装置で実現しようとしているアプリケーションの仕様などに依存する。しかしながら、汎用処理ユニットの標準的なアーキテクチャあるいは制御コマンドとして協調命令を実現できるようになっていれば、仕様によって開発あるいは設計される専用処理ユニットを搭載するプラットフォームとしての汎用処理ユニットの汎用性を犠牲にしないで、本発明の効果を得ることができる。
【００１３】  このように、本発明のデータ処理装置およびその制御方法においては、プログラムレベルで、汎用処理ユニットあるいは専用処理ユニットが相互のハードウェア資源を用いて処理を行うことができる。専用処理ユニットは、実装する仕様によって異なる専用回路を備える可能性が高いので、汎用処理ユニットの処理を規定した汎用命令的な意味で、専用処理ユニットの資源の一部を利用する協調命令を定義することはそれほどのメリットをもたらさない可能性が高い。これに対し、汎用処理ユニットとして提供されるハードウェア資源は常に使用可能なものであり、専用処理ユニットの処理を規定した専用命令的な意味で、汎用処理ユニットの資源あるいはその一部を利用する協調命令を定義することは、汎用処理と専用処理との並列性を犠牲にすることになるが、専用回路の一部として汎用処理ユニットの資源を利用できるので、重複したハードウェア資源を省略することが可能となり、専用処理ユニットをコンパクトにすることができる。さらに、専用回路の一部として汎用処理ユニットの汎用的な回路構成を、無理なく取り込むことができるので、専用命令の自由度を大幅に広げることができる。そして、汎用処理ユニットと専用処理ユニットの間で個別の処理としてデータ転送を行う必要がなくなるので、データ転送に伴うオーバヘッドも大幅に低減できる。
【００１４】  したがって、本発明のデータ処理装置およびその制御方法により、アプリケーションの仕様に柔軟に対応できる専用回路を備えたプロセッサあるいはデータ処理装置であって、ユーザの要求、すなわち要求仕様に対し、自由度の高い専用命令（ユーザ専用命令）を装着可能であり、その専用命令をオーバヘッドがない、あるいはオーバヘッドが見えない状態で実行できるデータ処理装置を提供することができる。
【００１５】  このように、協調命令としては、汎用処理ユニットのハードウェア資源の少なくとも１部を専用処理ユニットに対し開放する命令が有効であり、処理速度が速くリアルタイム処理にさらに適したプロセッサを低コストで提供するのに適している。そのような協調命令としては、汎用処理ユニットの汎用レジスタのデータを入力として専用処理ユニットにおける処理を実行する汎用レジスタ参照命令、専用処理ユニットの専用レジスタのデータを入力として汎用処理ユニットの演算器が処理を実行する汎用演算器参照命令、専用処理ユニットの専用レジスタのデータを汎用処理ユニットのデータＲＡＭに書き込む汎用ＲＡＭ書き込み命令、および汎用処理ユニットのデータＲＡＭのデータを専用処理ユニットの専用レジスタに書き込む汎用ＲＡＭ読み込み命令がある。
【００１６】  汎用レジスタ参照命令に対応するには、汎用処理ユニットに、汎用レジスタ参照命令に指定された汎用レジスタのデータを専用処理ユニットに出力するデータパスと、専用処理ユニットにおいて処理されたデータを汎用レジスタ参照命令に指定された汎用レジスタに書き込むデータパスとを設ければよく、汎用処理ユニットの汎用性を犠牲にすることなく協調命令に対応させることができる。同様に、汎用演算器参照命令に対処するには、汎用処理ユニットに、専用処理ユニットから供給されたデータを演算器において汎用演算器参照命令で指定された処理を行い、その結果を専用処理ユニットに出力するデータパスを設ければ良い。汎用ＲＡＭ書き込み命令に対しては、汎用処理ユニットに、専用処理ユニットからデータＲＡＭのアドレスと書き込むデータとを取得するデータパスを設ければ良い。汎用ＲＡＭ読み込み命令に対しては、汎用処理ユニットに、専用処理ユニットからデータＲＡＭのアドレスを取得し、そのアドレスのデータを専用処理ユニットに出力するデータパスを設ければ良い。これらのデータパスを設けておくことにより、本発明に係るデータ処理装置のプラットフォームとして有効な汎用処理ユニットを備えたアーキテクチャを提供できる。
【００１７】  そして、協調命令を実行している間は、汎用処理ユニットは専用処理ユニットの一部として利用されているので、汎用処理ユニットは、協調命令またはそれをデコードした命令を取得すると、専用処理ユニットにおける処理が終了するのを待ってフェッチユニットに次の命令コードをフェッチする指示を出すことが望ましい。
【発明を実施するための形態】
【００１８】  以下に図面を参照しながら本発明についてさらに説明する。図１に、特定の処理に特化した専用処理ユニット（専用データ処理ユニット、以降ではＶＵ）１と、汎用的な構成の汎用処理ユニット（汎用データ処理ユニットあるいはプロセスユニット、以降ではＰＵ）２とを備えたデータ処理装置（システムＬＳＩあるいはプロセッサ）１０の概略構成を示してある。このプロセッサ１０は、ＶＵ１およびＰＵ２にデコードされた制御信号あるいは命令を供給するフェッチユニット（以降ではＦＵ）３を備えており、コードＲＡＭ４に記録された実行形式のプログラムコード（マイクロプログラムコード）５から命令コード（マイクロコード）をフェッチし、デコードステージ命令として出力する。このため、ＦＵ３は、次の命令コードの先頭アドレスを記録するレジスタ６と、ＰＵ２からの制御信号φ１によりレジスタ６のアドレスまたはデコードされた命令φｐで指示されたアドレスのいずれかを選択し、そのアドレスを次の命令コードをフェッチするためにＲＡＭ４に出力するセレクタ７と、フェッチされたデータをアライメントして命令コードの種別を判別しデコードステージの命令として出力するコードアライメント回路８とを備えている。したがって、次の命令コードのアドレスはＰＵ２からフィードバックされてＦＵ３に入力される。コードアライメント回路８はバッファとしても機能し、必要があれば、命令コードをプリフェッチすることも可能である。
【００１９】  ＲＡＭ４に記録されたプログラム５は、ＶＵ１における処理を規定する専用命令（以下ではＶＵ命令）と、ＰＵ２における処理を規定する汎用命令（以下ではＰＵ命令）と、さらに、ＶＵ１とＰＵ２における協調処理を規定する協調命令を備えている。上述したように、ＶＵ１とＰＵ２とを備えたプロセッサ１０において協調命令はＶＵ１の機能を拡張するために非常に有効である。このため、本例においては、協調命令はＶＵ命令の命令体系に組み込まれており、ＶＵ命令のインストラクションフォーマットで定義されている。ＦＵ３は、これらのＶＵ命令、ＰＵ命令をデコードしてＶＵ１およびＰＵ２にそれぞれ供給する機能を備えている。このため、フェッチした命令コードがＶＵ命令であれば、それをアライメントしたＶＵデコードステージ命令φｖを格納するレジスタ９ｖと、フェッチした命令コードがＰＵ命令であれば、それをアライメントしたＰＵデコードステージ命令φｐを格納するレジスタ９ｐを備えている。そして、フェッチした命令が協調命令であれば、それをデコード、すなわちアライメントしたＶＵデコードステージ命令φｖと、ＰＵデコードステージ命令φｐとがレジスタ９ｖおよび９ｐに各々格納される。
【００２０】  専用処理ユニットＶＵ１は、ユーザ命令である専用命令（ＶＵ命令）を実行するユニットであり、ＶＵデコードステージ命令φｖをデコードし、その命令φｖで規定されたデータ処理に適した回路における処理を制御するデコードおよび実行制御回路１１を備えている。本例のＶＵ１は、専用回路として、入出力のデータパスを切替可能なセレクタ論理を含むＶＵレジスタへアクセス可能な第１の専用回路部１５と、セレクタ論理を含むＶＵ演算器を備えた第２の専用回路部１６とを備えており、これらが結合して特定の演算処理に適した回路を構成している。これらはセレクタ論理とＶＵレジスタとＶＵ演算器を備えた第３の専用回路部１７として捉えることももちろん可能である。これらのＶＵ演算器およびＶＵレジスタにより構成される専用回路における処理はシーケンサあるいはハードワイヤードロジックなどのハードウェアロジックにより制御あるいは実行されるようになっており、特定のデータ処理に特化しているのでフレキシビリティーは少ないが、その特定のデータ処理を高速で実行できる。
【００２１】  ＶＵ１においてもパイプライン的な処理イメージを導入すると、ＶＵレジスタにアクセス可能な第１の専用回路部１５の制御サイクルと、ＶＵ演算器を備えた第２の専用回路部１６の制御あるいは実行サイクルとは異なり、段階的に進行する。したがって、ＦＵ３から供給されたＶＵデコードステージ命令φｖを一時的に格納する実行ステージ命令レジスタ１２を備えており、このレジスタからＶＵ実行命令φｖｅが出力される。これに対応して、レジスタ関連の制御を行うためのＶＵデコードステージ命令は以降においてはＶＵレジスタ制御命令φｖｄと称することにする。また、本例のＶＵ１は、１６個（Ｖ１５〜Ｖ０）のＶＵレジスタを備えているものとする。
【００２２】  汎用処理ユニットＰＵは、汎用命令あるいは基本命令の実行ユニットであり、汎用プロセッサとほぼ同じ構成が採用される。本例では、ＰＵ命令φｐをデコードし、ＡＬＵなどの汎用的な演算処理ユニットを備えた回路の制御を行うデコードおよび実行制御回路２１を備えている。そして、汎用処理を行う回路は、入出力のデータパスを切替可能なセレクタ論理を含む汎用レジスタ（ＰＵレジスタ）へアクセス可能な第１の汎用回路部２５と、セレクタ論理とフラグ生成論理を含む汎用演算器を備えた第２の汎用回路部２６と、セレクタ論理を含むデータＲＡＭにアクセス可能な第３の汎用回路部２７との結合として捉えることが可能である。
【００２３】  ＰＵ２においては、パイプラインで処理が実行され、レジスタあるいはメモリにアクセスする第１または第３の汎用回路部２５または２７の制御サイクルと、演算器を備えた第２の汎用回路部２６の実行サイクルとは異なる。したがって、ＦＵ３から供給されたＰＵデコードステージ命令φｐを一時的に格納する実行ステージ命令レジスタ２２が用意されており、このレジスタからＰＵ実行命令φｐｅが出力される。これに対応して、レジスタ関連の制御を行うためのＰＵデコードステージ命令は以降においてはＰＵレジスタ制御命令φｐｄと称することにする。また、本例のＰＵ２は、１６個（Ｒ１５〜Ｒ０）のＰＵ汎用レジスタを備えている。
【００２４】  また、ＶＵ１とＰＵ２との間にはデータ転送用の２つデータバスＶＵＲＤＡＴＡ３２と、ＶＵＷＤＡＴＡ３１とが用意されている。これらのＶＵＲＤＡＴＡ３２と、ＶＵＷＤＡＴＡ３１は、３２ビット（３１から０）であり、各々１６ビット単位（１５〜０、３１〜１６）にてアクセスできるようになっている。さらに、ＶＵ１とＰＵ２との間には、互いの制御を行う為にＶＵ／ＰＵ制御信号Ｃｖｐが設けられている。
【００２５】  図２（ａ）に、プログラム５を構成する命令セットのフォーマットを示してある。また、図２（ｂ）に、命令セットの識別子「ＧＲＰ」とＶＵ命令のカテゴリとの関係を示してある。本例のプログラム５のインストラクションセット５０は、２語長の不定長命令であり、１語（ワード）が２４ビットで構成されている。１ワード目５１の２３ビットＬは命令長を示すデータ５１ａであり、このデータ５１ａをデコードすることにより命令長が判断できる。１ワード目５１の２２から２１ビットは０で固定されており、その次の２０ビット目のデータ５１ｂがＰＵ命令かＶＵ命令かを識別するフラグとなっている。ＰＵ命令はフラグ５１ｂが「０」であり、ＶＵ命令はフラグ５１ｂが「１」にセットされる。本例においては、協調命令もＶＵ命令の体系で定義されているので、フラグ５１ｂが「１」にセットされる。協調命令用にフラグを用意することも可能である。
【００２６】  １ワード目５１の１９から１６ビットまでのデータＧＲＰ５１ｃがＶＵ命令のカテゴリ５３を示す。ＧＲＰ５１ｃが「００００」から「０１１１」はユーザ定義のＶＵ命令であることを示し、「１０００」から「１００１」がＰＵデータＲＡＭの読み出し参照を行う協調命令であることを示し、「１０１０」から「１０１１」がＰＵデータＲＡＭの書き込み参照を行う協調命令であることを示し、「１１００」がＰＵ汎用レジスタの参照を行う協調命令であることを示し、「１１０１」から「１１１１」がＰＵ演算器の参照を行う協調命令であることを示している。すなわち、ＧＲＰ５１ｃが「１０００」から「１１１１」までが協調命令であり、その場合には１ワード目５１の１５ビットから２ワード目５２のすべてのフィールドが４ビット単位のオペランドフィールドＦ１からＦ１０に分割され、それぞれが予約されたＶＵ命令の命令オペコードおよびパラメータを記述するスペースとなる。
【００２７】  したがって、本例のプロセッサ１０のＦＵ３では、プログラム５の命令セットをフェッチすると図３に示したように処理を行う。まず、ステップ６１でコードＲＡＭ４に次の命令コードのアドレスを出力して命令コード５０をフェッチする。ステップ６２で、フェッチされた命令コード５０がＰＵ命令であればステップ６５でＰＵデコードステージ命令φｐを出力する。一方、命令コード５０がＶＵ命令であればステップ６３でＶＵデコードステージ命令φｖを出力し、ＰＵデコードステージ命令φｐとしては「ｎｏｐ」を出力する。ＶＵデコードステージ命令φｖではなく「ｎｏｐ」がＰＵ２に供給されることにより、ＰＵ２では何も実行せずにＦＵ３に次の命令コードをフェッチさせ、プログラム５の次の命令コードに従った処理を行うことができる。また、ＰＵ２には、ユーザの仕様などに依存して変わる可能性がある専用命令であるＶＵ命令の代わりに「ｎｏｐ」を供給することにより、ＰＵ２の汎用性を維持したままユーザ実行命令である専用命令（ＶＵ命令）を自由に定義することができる。
【００２８】  さらに、フェッチしたＶＵ命令のＧＲＰ５１ｃのカテゴリ５３が協調命令であれば、ステップ６４で判断し、ステップ６５で協調命令であるＶＵ命令をデコードしたＰＵデコードステージ命令φｐを出力する。そして、フェッチした命令コード５０がＶＵ命令あるいはＰＵ命令であれば、次のクロックあるいはサイクルのタイミングで次の命令コードのアドレスを出力しステップ６１で次の命令コードをフェッチする。一方、協調命令の場合は、ＰＵ２のリソースがＶＵ１における処理の一部として用いられている。したがって、ステップ６６において、ＶＵ１での処理が終了しＰＵ２のリソースが開放されるのを待って次の命令コードをフェッチする。このために、ＶＵ／ＰＵ制御信号Ｃｖｐが利用されている。
【００２９】  すなわち、図４（ａ）に示すように、ＶＵ命令（図においてはＶ命令）が協調命令でなく、それをＶＵ１で実行するために３クロックを要するのであれば、ＶＵ命令をフェッチするとＰＵ２には「ｎｏｐ」が供給される。そして、次のサイクルでは次のＰＵ命令（図においてはＰ命令）がフェッチされる。したがって、ＶＵ１とＰＵ２とで並列して処理が進行する。
【００３０】  一方、図４（ｂ）に示すようにＶＵ命令が協調命令であれば、ＶＵ１にＶＵデコードステージ命令φｖが供給されると共に、ＰＵ２に対してもＶＵ命令をデコードしたＰＵデコードステージ命令φｐが供給される。そして、その協調処理を行うＶＵ命令をＶＵ１で実行するために３クロックを要するのであれば、ＰＵ２も同じクロック数だけＶＵ命令に拘束される。したがって、同期した処理が行われる。
【００３１】  このように、本例のデータ処理装置であるプロセッサあるいはシステムＬＳＩ１０は、プログラム５を構成するＶＵ命令およびＰＵ命令を配列された順番にＦＵ３でフェッチしてＶＵ１あるいはＰＵ２に供給する。したがって、１つのプログラム５によりＶＵ１およびＰＵ２の処理を適宜制御することが可能であり、同期回路などを設けなくても、プログラム５のレベルでＶＵ１とＰＵ２とにおける処理を、並列処理も含めて制御することができる。そして、ＶＵ１とＰＵ２との処理を、命令コードをフェッチするサイクル、すなわち、クロック単位で制御することができる。また、複数のＶＵ１を有するプロセッサにおいても、それら複数のＶＵ１の並列処理をプログラムレベルでクロック単位で制御することができる。もちろん、ＶＵ１とＰＵ２との同期が必要な場合は、ＶＵ命令の完了を待ち合わせる同期命令を用意することにより、プログラムレベルで同期させることができる。
【００３２】  したがって、ＶＵ１とＰＵ２に協調命令を供給することにより、ＶＵ１とＰＵ２とを同期して同一の処理を行わせることも可能である。そこで、本例のプロセッサ１０においては、協調命令をプログラムレベルで用意すると共に、各々のリソースを利用することができるＶＵＷＤＡＴＡ３１およびＶＵＲＤＡＴＡ３２などのデータパスを実装することにより、ＶＵ１とＰＵ２のリソースあるいはそれらの一部のリソースを利用した新たなデータパスによる協調処理が行えるようにしている。
【００３３】  これらのＰＵ命令、ＶＵ命令、およびＶＵ命令形式の協調命令を含むプログラム５は、コードＲＡＭあるいはＲＯＭなどのプロセッサ用のプログラムを記録するのに適した記録媒体に記録して提供される。そして、ユーザ仕様に変更が生じたり、プロセッサの開発段階で変更が生じたりするとプログラム５を変更することによりプロセッサ１０の処理機能を自由に変更することが可能であり、フレキシビリティーの高いシステムとなっている。
【００３４】  本例のプロセッサ１０においては、４種類の協調命令が用意されている。第１の協調命令は、ＰＵ２の汎用レジスタ（ＰＵレジスタ）のデータを入力としてＶＵ１における処理を実行する汎用レジスタ参照命令であり、以下の記述が採用されている。
【００３５】          Ｖ＿ＯＰ  Ｒｘ，Ｒｙ，Ｒｚ  ・・・（１）
このＶＵ命令は、ＰＵ２の汎用レジスタＲｙおよびＲｚの内容を読み出し、Ｖ＿ＯＰで指定されるＶＵ１の演算器で演算を行い、その結果をＰＵ２のＰＵ汎用レジスタＲｘに格納するものである。
【００３６】  第２の協調命令は、ＶＵ１の専用レジスタ（ＶＵレジスタ）のデータを入力としてＰＵ２の演算器が処理を実行する汎用演算器参照命令であり、以下の記述が採用されている。
【００３７】          Ｖ＿ＰＡＤＤ  Ｖｘ，Ｖｙ，Ｖｚ  ・・・（２）
このＶＵ命令は、ＶＵ１のＶＵレジスタＶｙおよびＶｚの内容を読み出し、ＰＵ２の演算器で演算を行い、その結果をＶＵレジスタＶｘに格納するものである。
【００３８】  第３の協調命令は、ＶＵ１の専用レジスタ（ＶＵレジスタ）のデータをＰＵ２のデータＲＡＭに書き込む汎用ＲＡＭ書き込み命令であり、以下の記述が採用されている。
【００３９】          Ｖ＿ＳＴ  （Ｖｘ），Ｖｙ  ・・・（３）
このＶＵ命令は、ＶＵ１のＶＵレジスタＶｘで示されるＰＵ２のデータＲＡＭのアドレスに、ＶＵレジスタＶｙの内容を格納するものである。
【００４０】  第４の協調命令は、ＰＵ２のデータＲＡＭのデータをＶＵ１の専用レジスタ（ＶＵレジスタ）に書き込む汎用ＲＡＭ読み込み命令であり、以下の記述が採用されている。
【００４１】          Ｖ＿ＬＤ  （Ｖｘ），Ｖｙ  ・・・（４）
このＶＵ命令は、ＶＵ１のＶＵレジスタＶｘで示されるＰＵ２のデータＲＡＭのアドレスの内容をＶＵ１のＶＵレジスタＶｙに格納するものである。
【００４２】  これらの協調命令は、ＰＵ２のリソースの一部をＶＵ１における処理で流用可能とするものであり、ＶＵ１のリソースを増やさずにＶＵ１における処理、すなわち専用命令であるＶＵ命令の自由度を拡張できる。そして、これらの協調命令により、ＰＵ２のリソースとＶＵ１のリソースで新たなデータパスが構成されるので、そのデータパスで処理が実行される。したがって、ＰＵ２のデータをＶＵ１に共通のレジスタなどを介して転送する処理は一切不要となり、１命令でＰＵ２のデータを用いてＶＵ１で演算し、その結果をＰＵ２に戻すことが可能となる。
【００４３】  各々の協調命令についてさらに説明する。図５に、汎用レジスタ参照命令Ｖ＿ＯＰの命令フォーマットを示し、図６に、この協調命令を実行したときのデータの流れと制御の流れを示してある。ＰＵ２の汎用レジスタの数が本例では１６個（Ｒ０〜Ｒ１５）なので、４ビットでＰＵレジスタを指定できる。したがって、本初では、汎用レジスタ参照命令Ｖ＿ＯＰ５５は、１ワードの命令コードとなり、命令コード５０の１ワード目５１で記述できる。
【００４４】  ＰＵ２においては、デコードステージの信号φｐｄでＶ＿ＯＰ命令５５が出力されると、データバスＶＵＷＤＡＴＡ３１の０〜１５ビットにＰＵレジスタのＲｙレジスタの内容を、データバスＶＵＷＤＡＴＡ３１の１６〜３１ビットにＰＵレジスタのＲｚレジスタの内容を出力するようにデータパスを形成する。また、実行およびライトバックステージの信号φｐｅで、ＰＵレジスタのＲｘレジスタにデータバスＶＵＲＤＡＴＡ３２の０〜１５ビットのデータを書き込むようにデータパスを形成する。
【００４５】  このため、図６に示すように、ＰＵ２においては、汎用レジスタ（ＰＵレジスタ）２５ａおよびセレクタ２５ｂを含む第１の汎用回路２５では、信号φｐｅによりＶＵＲＤＡＴＡ３２のデータがＰＵレジスタ２５に書き込まれるようにセレクタ２５ｂが設定される。一方、ＰＵ演算器２６ａ、入力レジスタ２６ｂおよび２６ｃ、さらに、セレクタ２６ｄおよび２６ｅを含む第２の汎用回路２６では、信号φｐｄにより、セレクタ２６ｄおよび２６ｅでＰＵレジスタ２５ａのＲｙレジスタおよびＲｚレジスタのデータがＶＵＷＤＡＴＡ３１に出力されるように設定される。なお、本例の協調命令５５においては、ライトバックステージはＶＵ１の演算と同期して行われる必要があるので、実行時に制御信号φｐｅは、ＶＵ１からＶＵ／ＰＵ制御信号Ｃｖｐとして供給されるＶＵＷＢＥＮ信号（ＶＵ１からＰＵ２ヘのフラグライトバック制御信号）に基づき出力される。
【００４６】  一方、ＶＵ１においては、ＶＵ演算器１６ａ、セレクタ１６ｂおよび１６ｃを含む第２の専用回路１６では、信号φｖｅによりセレクタ１６ｂおよび１６ｃがＶＵＷＤＡＴＡ３１を入力として選択するように設定され、ＶＵ演算器１６ａがユーザ定義の演算を行い、１６ビットの結果（必要に応じてフラグ情報）がセレクタ１９を介してＶＵＲＤＡＴＡ３２から出力される。したがって、汎用レジスタ参照命令Ｖ＿ＯＰ５５により、ＰＵ２の汎用レジスタ２５ａを入力としてＶＵ１のＶＵ演算器１６ａが演算し、その結果をＰＵ２の汎用レジスタ２５ａにライトバックするデータパスが形成される。そして、ＶＵ１において、汎用レジスタ参照命令Ｖ＿ＯＰ５５で規定された演算が実行される。したがって、図７にタイミングチャートで示すように、４番目のサイクルで汎用レジスタ参照命令Ｖ＿ＯＰ５５がデコードステージ命令（Ｄｅｃ＿ｉｎｓｔ）として出力されてからＶＵＲＤＡＴＡ３２に演算結果が現れてＰＵ２の汎用レジスタ２５ａにライトバックされるまで３サイクル、すなわち、３クロックが消費されるだけとなる。したがって、ＰＵ２からＶＵ１にデータを転送するためにクロックは消費されず、ＶＵ１における演算時間だけでＰＵ２のデータをＶＵ１で演算処理することができる。
【００４７】  本図および以下に示すタイミングチャートに示した信号は次の通りである。
【００４８】  ＣＬＫ                  クロック
コードＲＡＭアドレス    コードＲＡＭアドレス入力
コードＲＡＭデータ      コードＲＡＭデータ出力
Dec＿inst               ＰＵデコードステージ命令
EX＿WB＿Inst          ＰＵ実行ステージ命令
AA & AB           ＰＵ演算器入力データ
PUALUOUT             ＰＵ演算器出力データ
Reg Update            汎用レジスタデータ値（更新された値）
VUINST(dec)            ＶＵデコードステージ命令
VUINST＿EX            ＶＵ実行ステージ命令
VUEXEC                 ＶＵ実行ステージタイミング制御信号
VUWAIT                 ＶＵ命令実行時のＶＵ命令完了同期制御信号
VUPABUSY              ＰＵ演算器使用時のＰＵ演算完了同期制御信号
VUCMD                  ＶＵ−Ｉ／Ｆ（ＰＵ命令）のコマンド信号
VUWDATA               ＰＵからＶＵへのライトデータバス
VURDATA                ＶＵからＰＵへのライトデータバス
VUWBEN/VUWBCCEN   ＶＵからＰＵへのフラグライトバック制御信号
Next＿IP                次にフェッチするインストラクションポインタ
Fetch＿IP               フェッチステージのインストラクションポインタ
Dec＿IP                 デコードステージのインストラクションポインタ
EX＿IP                  実行ステージのインストラクションポインタ
このように本命令５５を使えば、ＰＵ２に標準装備されていない演算をＶＵ１にてＰＵ２のレジスタを直接参照することによりデータ転送のオーバヘッドなしに実行することができる。したがって、特殊な掛け算やシフト命令を実行する必要がある場合に極めて有効である。例えば、ＶＵ１における演算が複雑で１クロックで実行できず複数クロックかかる場合においても、ＰＵ２の汎用レジスタ２５ａからのリードとライトは１クロックで行われるので、ＶＵ１における演算に必要なクロック数のみで実行できることになる。即ち、ＶＵ１で演算が複数クロックかかる場合にはＶＵ１からＰＵ２の実行ステージをＶＵ／ＰＵ制御信号Ｃｖｐ、例えば、ＶＵ命令実行時の完了同期制御信号であるＶＵＷＡＩＴ信号を通じて停止させ、ウェイト状態としておくことにより、ＰＵ２を矛盾なくＶＵ１と同期して動作させることが可能であり、協調処理を矛盾なく実行することができる。
【００４９】  さらに、ＰＵ２の第２の汎用回路２６のセレクタ２６ｄをＶＵＲＤＡＴＡ３２から供給された演算結果をＶＵ１に戻すように設定し、ＶＵ１の演算に対しフォワーディング操作を行うことも可能である。
【００５０】  図８に、汎用演算器参照命令Ｖ＿ＰＡＤＤ５６の命令フォーマットを示し、図９に、この協調命令を実行したときのデータの流れと制御の流れを示してある。ＶＵ１のＶＵレジスタ１５ａの数が本例では１６個（Ｖ０〜Ｖ１５）なので、４ビットでＶＵレジスタを指定できる。したがって、本例では、汎用演算器参照命令Ｖ＿ＰＡＤＤ５６も、１ワードの命令コードとなり、命令コード５０の１ワード目５１で記述できる。
【００５１】  ＰＵ２は、基本命令実行ユニットであり、ＶＵ１の機能に関わらず一定の機能を提供するようになっている既定義のユニットである。したがって、ＰＵ２で行う演算処理はユーザは指定できても定義することはできない。従って、本例では、ＧＲＰコード５１ｃとオペランドフィールドのＦ２に記述されるコードを使用して図１０に示すようにＶＵ命令であるＶ＿ＰＡＤＤ５６によりＰＵ２で行う既定義の演算機能を指定するようにしている。
【００５２】  図１０に示した各演算の概略は図１１に示した通りであり、汎用レジスタで演算機能の概略を示してあるが、Ｖ＿ＰＡＤＤ５６を用いることにより、汎用レジスタの代わりにＶＵレジスタ１５ａを指定して各演算を実行することができる。なお、図１１のＣＦはコンディションコードを示している。
【００５３】  ＰＵ２の第２の汎用回路２６においては、Ｖ＿ＰＡＤＤ命令５６がデコードステージ命令φｐｄとして出力されると、ＶＵ１から出力されてくるデータバスＶＵＲＤＡＴＡ３２の０〜１５ビットのデータと、ＶＵＲＤＡＴＡ３２の１６〜３１ビットのデータとを、ＰＵ２の演算器２６ａの入力ポートＡおよびＢにそれぞれアサインし、ＰＵ２の演算器２６ａで演算が実行されるようにデータパスを形成する。さらに、ＰＵ演算器２６ａの出力をＶＵＷＤＡＴＡ３１によりＶＵ１に供給するデータパスを形成する。
【００５４】  このため、図９に示すように、ＰＵ２のＰＵ演算器２６ａを含む第２の汎用回路２６においては、実行およびライトバックステージの信号φｐｅにより、セレクタ２６ｄおよび２６ｅがＶＵＲＤＡＴＡ３２からのデータを入力として選択するように設定される。さらに、ＰＵ演算器２６ａにおいては、Ｖ＿ＰＡＤＤ５６のＧＲＰ５１ｃとＦ２で指定された演算を行うように設定され、その演算結果が出力されると、セレクタ２６ｄが切り替えられ、レジスタ２６ｂを介してデータバスＶＵＷＤＡＴＡ３１の０〜１５ビットに演算結果が出力されるように設定される。さらに、ＶＵ１からフラグ変更指示がＶＵ／ＰＵ制御信号Ｃｖｐを通じてあった場合には、演算結果のフラグをフラグレジスタに格納する。
【００５５】  一方、ＶＵ１においては、ＶＵレジスタ１５ａおよびセレクタ１５を含む第１の専用回路１５では、デコードステージの信号φｖｄにより、ＶＵレジスタ１５ａの選択された２つのレジスタのデータがデータバスＶＵＲＤＡＴＡ３２のビット０〜３１を介してＰＵ２に転送されるようにＶＵレジスタ１５ａとセレクタ１９がセットされる。さらに、実行時の信号φｖｅにより、ＶＵレジスタ１５ａの選択されたレジスタにＶＵＷＤＡＴＡ３１の０〜１５ビットのデータが書き込まれるようにセレクタ１５ｂが設定される。なお、ＶＵ１においては、ＶＵ命令をデコードしたら、該当する、すなわち、ＶＵ１が複数ある場合に、Ｖ＿ＰＡＤＤ５６を実行するＶＵ側では、ＶＵレジスタ１５ａに対するフォワーディング機構または「ｎｏｐ」によるタイミング調整を行う機構が必要となる場合がある。
【００５６】  したがって、本例のプロセッサ１０においては、汎用演算器参照命令Ｖ＿ＰＡＤＤ５６により、ＶＵ１のＶＵレジスタ１５ａを入力として、ＰＵ２のＰＵ演算器２６ａが演算し、その結果をＶＵ１のＶＵレジスタ１５ａにライトバックするデータパスが形成される。そして、ＰＵ２の演算器２６ａにおいて、汎用演算器参照命令Ｖ＿ＰＡＤＤ５６で指定された演算が実行される。したがって、図１２にタイミングチャートで示すように、１番目のサイクルで汎用演算器参照命令Ｖ＿ＰＡＤＤ５６がデコードステージ命令（Ｄｅｃ＿ｉｎｓｔ）として出力されてからＶＵＷＤＡＴＡ３１にＰＵ２の演算結果が現れてＶＵ１のＶＵレジスタ１５ａにライトバックされるまで３サイクル、すなわち、３クロックが消費されるだけとなる。したがって、ＶＵ１からＰＵ２にデータを転送するためにクロックは消費されず、ＰＵ２における演算時間だけでＰＵ２の演算機能をＶＵ１で利用することができる。
【００５７】  図１３に示したタイミングチャートは、実行に３サイクル（クロック）を消費するＶ＿ＰＡＤＤ命令を実行したケースであり、図４（ｂ）のケースに相当する。この協調処理用のＶＵ命令をフェッチすると、１番目のサイクルで汎用演算器参照命令Ｖ＿ＰＡＤＤ５６がデコードステージ命令（Ｄｅｃ＿ｉｎｓｔ）として出力され、２〜４サイクルにかけてＰＵ演算器２６ａを用いた処理が行われ、その結果が５サイクル目にＶＵＷＤＡＴＡ３１に現れる（Ｖ＿ＰＡＤＤ  ＯＵＴ）。そして、５番目のサイクルでＶＵ１のＶＵレジスタ１５ａにライトバックされる。したがって、実行に３クロックを消費する汎用演算器参照命令Ｖ＿ＰＡＤＤ５６を実行するために５サイクル、すなわち、５クロックが消費されるだけとなり、ＰＵ２あるいはＶＵ１が単独で、実行に３サイクルを消費する命令を実行したのと消費するクロックは変わらずに、ＶＵ１のデータをＰＵ２の演算器２６ａで処理することができる。
【００５８】  このように、本例のプロセッサ１０においては、汎用演算器参照命令Ｖ＿ＰＡＤＤ５６により、ＶＵ１からＰＵ２にデータを転送するためにクロックを消費せずに、ＰＵ２における演算時間だけでＰＵ２の演算機能をＶＵ１で利用することができる。したがって、ＰＵ２を用いた演算処理時間が大幅に短縮され、処理速度が向上する。さらに、この命令は上記のＶ＿ＯＰ命令の対称型の命令であり、ＰＵ２の演算器をプロセッサ１０としては二重に持つことなく、ＶＵ１のレジスタからこれをストレスなくアクセスして演算に利用することができる。これは、ＶＵ１として実装するユーザの仕様の中でＰＵ２の演算器を用いて処理できる演算があり、ＰＵ２と並列実行を行う必要がなければ、あるいはＰＵ２との並列実行する可能性を捨てれば、ＶＵ１に、該当する処理を実行するための演算器およびデータパスを実装しなくても良いことを意味し、ＶＵ１をコンパクトに設計することが可能となる。したがって、ユーザ論理を実装するＶＵ１の開発および設計工数、さらには検査工数の削減も図ることが可能であり、ＶＵ１を搭載し、かつ、さらに経済的なプロセッサを提供することが可能となる。
【００５９】  そして、上述したように、ＶＵ１からＰＵ２の演算器２６ａをストレスなく利用できる環境が提供されるので、図１０などに示したＰＵ演算器２６ａの多様な演算機能をＶＵ１から利用することが可能となり、ＶＵ１に実装されるユーザ論理、すなわち専用命令の自由度は大幅に向上する。そして、その自由度の高い専用命令（ＶＵ命令）を、データ転送のためのクロックを消費させずに、高速に実行することができる。したがって、ユーザあるいはアプリケーションで要求される仕様に極めて柔軟に対応できると共に、リアルタイム処理に適した実行速度も高く、低コストでコンパクトなプロセッサあるいはシステムＬＳＩを提供することができる。
【００６０】  図１４に汎用ＲＡＭ書き込み命令（メモリストア命令）Ｖ＿ＳＴ５７の命令フォーマットを示し、図１５に、この協調命令を実行したときのデータの流れと制御の流れを示してある。ＶＵ１のＶＵレジスタ１５ａの数が本例では１６個（Ｖ０〜Ｖ１５）なので、４ビットでＶＵレジスタを指定できる。したがって、本例の汎用ＲＡＭ書き込み命令Ｖ＿ＳＴ５７も、１ワードの命令コードとなり、命令コード５０の１ワード目５１で記述できる。
【００６１】  ＰＵ２においては、Ｖ＿ＳＴ命令５７がデコードステージ命令φｐｄとして出力されると、ＶＵ１から出力されてくるデータバスＶＵＲＤＡＴＡ３２の０〜１５ビットのデータがＰＵ２のデータＲＡＭ２７ａのアドレスにセットアップされ、ＶＵＲＤＡＴＡ３２の１６〜３１ビットのデータをデータＲＡＭ２７ａのライトデータにセットアップされるようにデータパスを形成する。
【００６２】  このため、図１５に示すように、データＲＡＭ２７ａ、アドレスのオフセットを加算する加算器２７ｂ、アドレス入力を選択するセレクタ２７ｃ、およびデータ入力を選択するセレクタ２７ｄを含む第３の汎用回路２７においては、デコードステージの信号φｐｄにより、セレクタ２７ｃおよび２７ｄがＶＵＲＤＡＴＡ３２からのデータを入力として選択するように設定される。そして、ＶＵ１からＶＵ／ＰＵ制御信号Ｃｖｐを通じてメモリライト指示があったときにメモリライトサイクルを実行し、データＲＡＭ２７ａにデータを書き込む。
【００６３】  一方、ＶＵ１においては、デコードステージの信号φｖｄにより、ＶＵレジスタ１５ａの選択された２つのレジスタのデータがデータバスＶＵＲＤＡＴＡ３２のビット０〜３１を介してＰＵ２に転送されるようにＶＵレジスタ１５ａとセレクタ１９がセットされる。なお、ＶＵ１においては、ＶＵ命令をデコードしたら、該当する、すなわち、ＶＵ１が複数ある場合に、本ＶＵ命令を実行するＶＵ側では、ＶＵレジスタ１５ａに対するフォワーディング機構または「ｎｏｐ」によるタイミング調整を行う機構が必要となる。
【００６４】  この汎用ＲＡＭ書き込み命令Ｖ＿ＳＴ５７によれば、ＰＵ汎用レジスタ２５ａを用いてデータ転送することなく、ＶＵ１のデータをＰＵ２のデータＲＡＭ２７ａに書き込むことができる。したがって、ＰＵ２の汎用レジスタを経由してＶＵ１のデータをストアする方式と比較し、１サイクル、すなわち１クロックでデータをストアすることができ、その処理のために消費するクロックを大幅に削減できるので、極めて大きな効果がある。この協調命令Ｖ＿ＳＴ５７によりＰＵ２の処理はＶＵ１の処理に拘束されるが、ＰＵ２において汎用レジスタ２５ａを介してデータ転送する処理を省くことが可能となるので、ＰＵ２の処理効率も大幅に向上できる。
【００６５】  図１６に、汎用ＲＡＭ読み込み命令Ｖ＿ＬＤ５８の命令フォーマットを示し、図１７に、この協調命令を実行したときのデータの流れと制御の流れを示してある。本例では、４ビットでＶＵレジスタを指定できるので、汎用ＲＡＭ読み込み命令（メモリロード命令）Ｖ＿ＬＤ５８も、１ワードの命令コードとなり、命令コード５０の１ワード目５１で記述できる。
【００６６】  ＰＵ２においては、Ｖ＿ＬＤ命令５８がデコードステージ命令φｐｄとして出力されると、ＶＵ１から出力されてくるデータバスＶＵＲＤＡＴＡ３２の０〜１５ビットのデータがＰＵ２のデータＲＡＭ２７ａのアドレスにセットアップされ、データＲＡＭ２７ａの出力がデータバスＶＵＷＤＡＴＡ３１の０〜１５ビットに出力されるようにデータパスを形成する。
【００６７】  このため、図１７に示すように、第３の汎用回路２７においては、デコードステージの信号φｐｄにより、セレクタ２７ｃがＶＵＲＤＡＴＡ３２からのデータを入力として選択するように設定され、第２の汎用回路２６のセレクタ２６ｄがデータＲＡＭ２７ａの出力をレジスタ２６ｂを介してＶＵＷＤＡＴＡ３１に出力するように設定される。そして、ＶＵ１からＶＵ／ＰＵ制御信号Ｃｖｐを通じてメモリリード指示があったときに、メモリリードサイクルを実行し、リードしたデータをレジスタ２６ｂにラッチしてバスＶＵＷＤＡＴＡ３１に出力する。
【００６８】  一方、ＶＵ１においては、デコードステージの信号φｖｄにより、ＶＵレジスタ１５ａの選択された１つのレジスタのデータがデータバスＶＵＲＤＡＴＡ３２のビット０〜１５を介してＰＵ２に転送されるようにＶＵレジスタ１５ａとセレクタ１９がセットされる。Ｖ＿ＬＤ命令５８の実行ステージは２クロック構成となっており、２クロック目でＰＵ２からの出力（レジスタ２６ｂの出力でＶＵＷＤＡＴＡ３１により供給されるデータ）をＶＵレジスタ１５ａの指定されたレジスタに書き込む。なお、この命令においても、ＶＵ１においては、ＶＵ命令をデコードしたら、該当する、すなわち、ＶＵ１が複数ある場合に、本ＶＵ命令を実行するＶＵ側では、ＶＵレジスタ１５ａに対するフォワーディング機構または「ｎｏｐ」によるタイミング調整を行う機構が必要となる。
【００６９】  この汎用ＲＡＭ読み込み命令Ｖ＿ＬＤ５８は、上記の汎用ＲＡＭ書き込み命令Ｖ＿ＳＴ５７の対称型の命令であり、同様に、ＰＵ汎用レジスタ２５ａを用いてデータ転送することなく、ＰＵ２のデータＲＡＭ２７ａのデータをＶＵ１のデータに書き込むことができる。したがって、ＰＵ２の汎用レジスタを経由してＶＵ１のデータをストアする方式と比較し、１サイクル、すなわち１クロックでデータをＶＵレジスタ１５ａにストアすることができ、その処理ために消費するクロックを大幅に削減できる。したがって、同様に極めて大きな効果を備えた協調制御型のＶＵ命令である。
【００７０】  これらの汎用レジスタ参照命令Ｖ＿ＯＰ５５、汎用演算器参照命令Ｖ＿ＰＡＤＤ５６、汎用ＲＡＭ書き込み命令Ｖ＿ＳＴ５７、および汎用ＲＡＭ読み込み命令Ｖ＿ＬＤ５８は、ＶＵ命令の体系で実装された協調命令であり、ＰＵ２のリソースの一部をＶＵ１に開放することにより、ＶＵ１における処理を実行するためのデータパスの一部としてＰＵ２のリソースを組み込めるようにしている。したがって、ＶＵ１とＰＵ２との間のデータ転送をＭＯＶＥ命令なしに行うことが可能となり、また、ＶＵ１の演算器を利用した演算、ＰＵ２の演算器を利用した演算、ＰＵ２のデータＲＡＭへのアクセスがクロックを浪費することなく行えることになる。このため、汎用機能を備えたＰＵ２をプラットフォームとしてユーザロジックを実現するＶＵ１を実装したプロセッサ（ＶＵＰＵプロセッサ）１０の処理効率を大きく改善することができる。この効果は、本発明を適用しないと、データ転送が頻繁に行われることになる、ＶＵ１における処理が数クロックで終えるような短いユーザ命令（ＶＵ命令）の場合に極めて顕著に効果を発揮することになる。
【００７１】  本例では、この効果を得るためにユーザはＶＵ命令の規定にしたがって協調命令を採用する必要が出てくる。この例では、４ビットＧＲＰコード５１ｃが命令フォーマット５０に規定されることになるが、全体で４８ビット長のオペランドフィールドを備えた命令フォーマットのなかでのＧＲＰコード５１ｃにより消費される４ビットの予約は、協調命令を採用することにより改善される処理速度の効果に比べれば十分許容できるものである。もちろん、協調命令を導入することは、データ転送などを目的とした他のユーザ定義の標準命令を定義しないということではなく、ＰＵ２の汎用レジスタ２５ａとＶＵ１のＶＵレジスタ１５ａの間でデータ転送を行うＭＯＶＥ命令なども使用できる。
【００７２】  さらに、ＰＵ２のリソースを開放する協調命令を実装するために、Ｖ＿ＯＰ命令５５に対しては、データバスＶＵＷＤＡＴＡ３１にＰＵレジスタ２５ａの指定されたレジスタの内容が出力され、ＰＵレジスタ２５ａの指定されたレジスタにデータバスＶＵＲＤＡＴＡ３２のデータが書き込まれるデータパスをＰＵ２に設けている。これらのデータパスの構成は、上記にて開示した回路に限定されるものではないが、汎用レジスタ参照命令５５に指定された汎用レジスタ２５ａのデータをＶＵ１に出力するデータパスと、ＶＵ１において処理されたデータを命令５５に指定された汎用レジスタ２５ａに書き込むデータパスとをＰＵ２に標準的に設けておくことにより、汎用レジスタ参照命令であるＶ＿ＯＰ命令５５をＶＵ命令として利用できるＶＵ１を実装するプロセッサ１０のプラットフォームとしてＰＵ２は機能する。このような構成にしても、ＰＵ２の汎用性が犠牲にされることはなく、協調命令に対応させることができる。
【００７３】  同様に、Ｖ＿ＰＡＤＤ命令５６に対しては、ＶＵ１から出力されてくるデータバスＶＵＲＤＡＴＡ３２のデータをＰＵ２の演算器２６ａの入力にアサインし、ＰＵ演算器２６ａで演算が実行されるようにデータパスを形成すると共に、ＰＵ演算器２６ａの出力をＶＵＷＤＡＴＡ３１によりＶＵ１に供給するデータパスを形成している。すなわち、ＰＵ２に、ＶＵ１から供給されたデータをＰＵ演算器において命令５６で指定された処理を行い、その結果をＶＵ１に出力するデータパスを設けることにより、汎用演算器参照命令であるＶ＿ＰＡＤＤ命令５６を実装可能なプラットフォームとすることができる。
【００７４】  また、Ｖ＿ＳＴ命令５７に対しては、ＶＵ１から出力されてくるデータバスＶＵＲＤＡＴＡ３２のデータがＰＵ２のデータＲＡＭ２７ａのアドレスとライトデータにセットアップするデータパスを設けている。すなわち、ＰＵ２に、ＶＵ１からデータＲＡＭのアドレスと書き込むデータとを取得するデータパスを設けることにより、汎用ＲＡＭ書き込み命令であるＶ＿ＳＴ命令５７を実装可能なＰＵ２を提供できる。さらに、Ｖ＿ＬＤ命令５８に対しては、ＶＵ１から出力されてくるデータバスＶＵＲＤＡＴＡ３２のデータがＰＵ２のデータＲＡＭ２７ａのアドレスにセットアップされ、データＲＡＭ２７ａの出力がデータバスＶＵＷＤＡＴＡ３１に出力されるようにデータパスを形成し、ＰＵ２に、ＶＵ１からデータＲＡＭのアドレスを取得し、そのアドレスのデータＲＡＭのデータをＶＵ１に出力するデータパスを設けることにより、汎用ＲＡＭ読み込み命令であるＶ＿ＬＤ命令５８を実装可能なＰＵ２を提供できる。
【００７５】  なお、協調命令の種類は本例で説明したものに限定されるものではないが、本例で例示した協調命令に対応したＰＵ２を提供することにより、ユーザ定義命令実行ユニットであるＶＵ１と基本実行ユニットであるＰＵ２の間をよりタイトなカップルとすることが可能となり、互いのリソースアクセスを可能とすることができる。協調命令を実行することにより、その間、上述したように、ＶＵ１とＰＵ２との並列処理は実現できないが、並列処理を優先したプログラミングも可能である。したがって、本発明の協調命令を実装可能とすることにより、より高いレベルで柔軟性と高速化とを実現しうるプロセッサを提供することができる。
【発明の効果】
【００７６】  以上に説明したように、上記にて説明したＶＵＰＵプロセッサは、ユーザ仕様などに従い高速化が必要とされる処理を専用回路化して実装することができるＶＵと、エラー処理などの汎用的な機能をサポートし、プログラムにより仕様変更などに対し極めて柔軟に対応することができるＰＵとを備えており、プログラマブルな柔軟性と、専用回路による高速性とを併せもつプロセッサである。そして、ＶＵはユーザ設計が可能であり、ユーザ命令をＶＵ命令として自由に組み込むことができる自由度の高いセミカスタムプロセッサでもある。したがって、アプリケーション専用プロセッサとして高機能のシステムＬＳＩを極めて短期間に低コストで開発および製造することが可能である。
【００７７】  そして、本発明においては、ＶＵとＰＵとの協調処理を規定した協調命令を導入している。この協調命令により、ＰＵのリソースをＶＣに開放することが可能となるので、ＶＵとＰＵとの間のデータ転送に必要なオーバヘッドを実質的になくすことが可能となりＶＵを用いた処理時間をさらに短縮でき、画像処理やネットワーク処理などのリアルタイム応答性が要求されるアプリケーションにさらに適したプロセッサを提供できる。加えて、ＰＵのリソースがＶＵに開放されることにより、ＰＵの機能をＶＵ命令、すなわち、ユーザ命令の一部として利用することが可能となり、ＶＵのリソースを増大させることなく、さらに自由度の高いＶＵ命令を組み込むことが可能となる。したがって、本発明のデータ処理装置は、さらに高いレベルで柔軟性と高速性とを同時に実現できるプロセッサあるいはシステムＬＳＩを提供可能であり、本発明により、高速ネットワーク、画像処理アプリケーションなどにさらに適したデータ処理装置を提供できる。
【図面の簡単な説明】
【図１】  本発明に係るデータ処理装置（プロセッサ）の概略構成を示すブロック図である。
【図２】  図２（ａ）は命令フォーマットを示す図であり、図２（ｂ）はＧＲＰとカテゴリとの対応を示す図である。
【図３】  ＦＵ３における処理の概要を示すフローチャートである。
【図４】  プロセッサ用のプログラムの概要を示す図であり、図４（ａ）はＰＵ命令およびＶＵ命令を含む部分を示し、図４（ｂ）はＰＵ命令および協調命令となるＶＵ命令を含む部分を示す図である。
【図５】  汎用レジスタ参照命令であるＶ＿ＯＰ命令のフォーマットを示す図である。
【図６】  汎用レジスタ参照命令が実行されるときのデータパスの概要を示す図である。
【図７】  汎用レジスタ参照命令を実行するときのタイミングチャートである。
【図８】  汎用演算器参照命令であるＶ＿ＰＡＤＤ命令のフォーマットを示す図である。
【図９】  汎用演算器参照命令が実行されるときのデータパスの概要を示す図である。
【図１０】  汎用演算器参照命令で指定可能な演算を示す図である。
【図１１】  図１０で示した演算の概要を示す図である。
【図１２】  汎用演算器参照命令を実行するときのタイミングチャートである。
【図１３】  汎用演算器参照命令を実行するときの異なるタイミングチャートである。
【図１４】  汎用ＲＡＭ書き込み命令であるＶ＿ＳＴ命令のフォーマットを示す図である。
【図１５】  汎用ＲＡＭ書き込み命令が実行されるときのデータパスの概要を示す図である。
【図１６】  汎用ＲＡＭ読み込み命令であるＶ＿ＬＤ命令のフォーマットを示す図である。
【図１７】  汎用ＲＡＭ読み込み命令が実行されるときのデータパスの概要を示す図である。
【符号の説明】１    専用処理ユニットＶＵ
２    汎用処理ユニットＰＵ
３    フェッチユニットＦＵ
４    コードＲＡＭ
５    プログラム
１０    プロセッサ（データ処理装置）
【図１】
0005372307.tif 000002
【図２】
0005372307.tif 000003
【図３】
0005372307.tif 000004
【図４】
0005372307.tif 000005
【図５】
0005372307.tif 000006
【図６】
0005372307.tif 000007
【図７】
0005372307.tif 000008
【図８】
0005372307.tif 000009
【図９】
0005372307.tif 000010
【図１０】
0005372307.tif 000011
【図１１】
0005372307.tif 000012
【図１２】
0005372307.tif 000013
【図１３】
0005372307.tif 000014
【図１４】
0005372307.tif 000015
【図１５】
0005372307.tif 000016
【図１６】
0005372307.tif 000017
【図１７】
0005372307.tif 000018