JP2006302324A - データ処理装置 - Google Patents

データ処理装置 Download PDF

Info

Publication number
JP2006302324A
JP2006302324A JP2006221496A JP2006221496A JP2006302324A JP 2006302324 A JP2006302324 A JP 2006302324A JP 2006221496 A JP2006221496 A JP 2006221496A JP 2006221496 A JP2006221496 A JP 2006221496A JP 2006302324 A JP2006302324 A JP 2006302324A
Authority
JP
Japan
Prior art keywords
instruction
unit
data
bit
register
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
Application number
JP2006221496A
Other languages
English (en)
Inventor
Masahito Matsuo
雅仁 松尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Technology Corp
Original Assignee
Renesas Technology Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Renesas Technology Corp filed Critical Renesas Technology Corp
Priority to JP2006221496A priority Critical patent/JP2006302324A/ja
Publication of JP2006302324A publication Critical patent/JP2006302324A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】実行可能な命令を多数実装しつつも、基本命令長を短くでき、コード効率を向上させることが可能なデータ処理装置を提供すること。
【解決手段】並列に実行する他方の命令のオペレーションについて、16ビットのサチュレーションを行なうことを指示するMOD_SAT命令が左コンテナに配置され、ADD命令が右コンテナに配置されている。命令デコード部がこれらの命令をデコードするときに、命令実行部に対してサチュレーション処理を伴ったADD命令の実行を指示する。したがって、命令の組合せによって多くの命令のオペレーションを修飾でき、基本命令長を短くできると共に、コード効率を向上させることが可能となる。
【選択図】図19

Description

本発明は、命令コードをフェッチして順次実行するデータ処理装置に関し、特に、単独でも実行可能な命令のオペレーション内容を修飾する機能を有するデータ処理装置に関する。
近年、アプリケーションの高機能化、多機能化などに伴って、マイクロプロセッサなどのデータ処理装置に要求される命令の種類も多くなっている。一般に、データ処理装置の設計時において命令セットを決定する際、ターゲットアプリケーション、コストなどを考慮して命令の取捨選択が行なわれる。
たとえば、製品コストを抑えるためにはコード効率を向上させることが重要である。プログラムがROM(Read Only Memory)に書込まれるような機器組込み用途のデータ処理装置においては、プログラムサイズが製品コストを決める大きな要因となるので、コード効率を向上させることが特に重要である。
コード効率の向上は、実行頻度の高い命令を選択し、その命令をより短いコードサイズの命令として実装することによって達成される。しかし、基本命令長を短くするために命令数を削減し過ぎると、所望の機能や性能が得られなくなる。また、所定の処理を実現するために必要となる命令数が増えてしまい、かえってコードサイズが大きくなる場合もある。
一方、ある程度汎用性のあるデータ処理装置を開発する場合には、ターゲットとなるアプリケーションを効率よく処理するためにそのアプリケーションにおいて使用される命令をデータ処理装置に実装する必要がある。たとえば、マルチメディア処理に効率よく対応するためには、積和演算命令などを含んだ命令が追加される。このように、コード効率の向上によるコスト低減と、高機能化のための命令追加とは相反する。
たとえば、信号処理を行なうデータ処理装置においては、飽和(以下、サチュレーションとも呼ぶ。)演算が多用される。飽和演算を行なうことによってオーバーフローが発生した場合には最大値を、アンダーフローが発生した場合には最小値を演算結果として設定することによって、最大値から最小値に、または最小値から最大値に演算結果が変わってしまうことを防止することが可能となる。
しかし、加減算、符号反転、絶対値計算、シフトなど、飽和演算として実装されていた方がよい演算命令は多い。また、これらの1つの演算についても、オペランドが即値で与えられるものや、オペランドがレジスタ、アキュムレータまたはメモリに格納されるものなどがあり、オペランドの種類によっても多くの命令を備えなければならない。
このように、飽和演算機能付き命令と飽和演算機能なし命令とを共に備えると実装する命令数が増大し、命令に必要となるビット幅が増大してコード効率が低下する。特に、汎用的なデータ処理装置においては、命令のサイズが少なくともバイト(8ビット)単位となっている。さらには、ハードウェア制御を単純にし、動作周波数を向上させ、高性能化を図るために、16/32/64ビット単位の命令セットを採用しているデータ処理装置が多い。したがって、命令の割当てに関する制約が大きくなり、多くの命令を短い命令長に割当てることが困難となり、コストの低減が難しくなる。
このような問題を解決するために、動作モードを指定する機能を備え、同じ命令コードであっても、動作モードによって異なる演算内容を実行できるデータ処理装置が開発されている。しかし、一般的にはアドレス計算などにおいては飽和演算は行われない。アドレス計算とデータ演算とで同一の命令を使用し、かつデータ演算において飽和演算を必要とする場合などにおいて、モード設定変更を頻繁に行なう必要が生じる。したがって、このような場合にモード設定変更に要するオーバヘッドが大きくなり、性能が大きく低下することが考えられる。
また、命令コードのみではオペレーションの内容が決定されないので、プログラムのデバッグが困難になると共に、プログラムにバグが混入される可能性が高くなる。たとえば、同一の処理をサブルーチン化する場合に、そのサブルーチンを呼出すときのモード設定が異なっていれば、その状態によってサブルーチンの動作内容が異なり、不具合を生じるなどの問題が起こり得る。
上述したように、従来のデータ処理装置においては、性能向上のために多くの独立した演算命令を実装しようとすると基本命令長が長くなり、コード効率が低下して、製品コストが高くなるといった問題点があった。
また、モード設定によって同一の命令で異なる演算を実行させる場合には、プログラムのデバッグが困難になり、プログラムにバグが混入される可能性が高くなると共に、モード設定変更に伴うオーバヘッドが大きくなり、処理性能が低下するといった問題点があった。
本発明は、上記問題点を解決するためになされたものであり、第1の目的は、実行可能な命令を多数実装しつつも、基本命令長を短くでき、コード効率を向上させることが可能なデータ処理装置を提供することである。
第2の目的は、ソフトウェアのデバッグが容易であり、ソフトウェアにバグが混入されるのを防止したデータ処理装置を提供することである。
請求項1に記載のデータ処理装置は、命令コードをフェッチする命令フェッチ部と、命令フェッチ部によってフェッチされた命令コードをデコードする命令デコード部と、命令デコード部によるデコード結果に応じて、命令を実行する命令実行部とを含むデータ処理装置であって、命令コードがオペレーション修飾命令コードである場合、命令実行部にオペレーション修飾命令コードで指定されるオペレーション修飾対象の複数の実行単位の他の命令コードに関して、オペレーションを修飾して実行させる手段をさらに含む。
請求項2に記載のデータ処理装置は、請求項1記載のデータ処理装置であって、命令実行部は、オペレーションを修飾して他の命令コードを実行する場合に、複数組のデータに対して他の命令コードで指定されるオペレーションを実行する。
請求項3に記載のデータ処理装置は、請求項2記載のデータ処理装置であって、命令実行部は、オペレーションを修飾して他の命令コードを実行する場合に、各々処理対象となるデータを複数に分割し、分割された複数組のデータの各々に対して他の命令コードで指定されるオペレーションを実行する。
請求項4に記載のデータ処理装置は、請求項2記載のデータ処理装置であって、命令実行部は、オペレーションを修飾して他の命令コードを実行する場合に、他の命令コードで指定されるデータと予め定められた規則に基づき他の命令コードで暗黙に指定されるデータとの複数組のデータに対して他の命令コードで指定されるオペレーションを実行する。
請求項1に記載のデータ処理装置によれば、命令実行部にオペレーション修飾命令コードで指定されるオペレーション修飾対象の複数の実行単位の他の命令コードに関して、オペレーションを修飾して実行させる手段を含むので、命令の組合せによって多くの命令のオペレーションを修飾でき、基本命令長を短くできると共に、コード効率を向上させることが可能となった。また、命令コードのみでオペレーションの内容が決まるので、ソフトウェアのデバッグが容易であり、ソフトウェアにバグが混入されるのを防止することが可能となる。さらには、1つの命令コードで複数の他の命令コードのオペレーションを修飾するので、さらにコード効率を向上させることが可能となった。
請求項2に記載のデータ処理装置によれば、1つのデータに対してオペレーションを実行する命令を実装するだけで、複数組のデータに対してオペレーションを実行できるようになり、コード効率を向上させることが可能となった。
請求項3に記載のデータ処理装置によれば、1つのデータに対してオペレーションを実行する命令を実装するだけで、複数組のデータの各々に対してオペレーションを実行できるようになり、コード効率を向上させることが可能となった。
請求項4に記載のデータ処理装置によれば、様々なデータの組合せに対するオペレーションを実行することが可能となった。
(第1の実施の形態)
本発明の第1の実施の形態においては、データ処理装置が16ビットプロセッサであり、アドレスおよびデータのビット長が16ビットの場合について説明するが、アドレスおよびデータのビット長が32ビットや64ビットの場合にも適用可能である。
図1は、本発明の第1の実施の形態におけるデータ処理装置のレジスタセットを説明するための図である。このデータ処理装置は、ビット順およびバイト順に関してビッグエンディアンを採用しており、ビット位置においてはMSB(Most Significant Bit)がビット0となる。
16本の汎用レジスタR0(1)〜R15(16,17)は、データやアドレス値を格納する。レジスタR13(14)は、サブルーチンジャンプ時における戻り先アドレスを格納するためのリンク(LINK)レジスタとして割当てられている。レジスタR15(16,17)は、スタックポインタ(SP)であり、割込み用のスタックポインタSPI16と、ユーザ用のスタックポインタSPU17とを含む。これらのレジスタは、後述するプロセッサ・ステータス・ワード(PSW)18内のスタックモードビットによって切替えられる。以下、SPI16およびSPU17を総称してスタックポインタ(SP)と呼ぶ。なお、特別な場合を除き、4ビットのレジスタ指定フィールドでオペランドとなるレジスタの番号が指定される。
また、本実施の形態におけるデータ処理装置においては、PSW(CR0)18、図示しないプログラムカウンタ(PC)などの制御レジスタを備えている。これらの制御レジスタも汎用レジスタと同様に、レジスタの番号が4ビットで示される。なお、これらのレジスタは本発明と直接関係がないため詳細な説明は省略する。
レジスタA0(21)およびA1(22)は、40ビットのアキュムレータを示している。
図2は、PSW18の詳細を説明するための図である。このPSW18は、割込み用スタックポインタSPI16およびユーザ用スタックポインタSPU17のいずれを選択するかを示すスタックモード(SM)ビット31と、比較命令などでセットされ、条件分岐命令などの条件として参照される条件フラグであるF0フラグ33、F1フラグ34、サチュレーション(S)フラグ35およびキャリー(C)フラグ36とを含む。その他の状態フラグやモードビット32は、本発明と直接関係がないため詳細な説明は省略する。
図3は、本実施の形態におけるデータ処理装置の命令フォーマットを説明するための図である。本実施の形態におけるデータ処理装置は、2ウェイのVLIW(Very Long Instruction Word)命令セットを処理する。基本命令長は、32ビット固定であり、32ビット境界に整置されている。PC値は32ビットの命令ワードアドレスで管理される。
図3に示すように、32ビットの命令コードは、命令のフォーマットを示す2ビットのフォーマット指定(FM)ビット51と、15ビットの左コンテナ52と、15ビットの右コンテナ53とによって構成される。左コンテナ52および右コンテナ53は、それぞれ15ビットのショートフォーマットのサブ命令を格納できる他、2つのコンテナで30ビットのロングフォーマットのサブ命令を格納することもできる。以下、簡単のために、ショートフォーマットのサブ命令をショート命令と呼び、ロングフォーマットのサブ命令をロング命令と呼ぶことにする。
図4は、FMビット51の内容を説明するための図である。FMビット51は、命令のフォーマットおよび2つのショート命令の実行順序を指定する。命令実行順序において、第1は先に実行される命令を示し、第2は後で実行される命令を示している。FMビット51が“11”の場合には、左コンテナ52および右コンテナ53が30ビットの1つのロング命令を保持することを示している。それ以外の場合には、左コンテナ52および右コンテナ53が、それぞれショート命令を保持することを示している。
FMビット51が“00”の場合には、2つのショート命令を並列に実行することを示している。また、FMビット51が“01”の場合には、左コンテナ52に保持されるショート命令を実行した後、右コンテナ53に保持されるショート命令を実行することを示している。また、FMビット51が“10”の場合には、右コンテナ53に保持されるショート命令を実行した後、左コンテナ52に保持されるショート命令を実行することを示している。このように、シーケンシャルに実行される2つのショート命令を1つの32ビット命令にエンコードできるようにして、コード効率の向上を図っている。
図5〜図7は、本実施の形態におけるデータ処理装置の典型的な命令のビット割付けの一例を示す図である。図5は、2つのオペランドを持ったショート命令のビット割付けを示している。フィールド61および64は、オペレーションコードフィールドである。また、フィールド64によって、アキュムレータ番号を指定する場合もある。
フィールド62および63は、オペランドとして参照または更新されるデータの格納位置を、レジスタ番号やアキュムレータ番号で指定する。また、フィールド63によって、4ビットの即値を指定する場合もある。
図6は、ショートフォーマットの分岐命令のビット割付けを示している。この命令フォーマットは、7ビットのオペレーションコードフィールド71と、8ビットの分岐変位フィールド72とによって構成される。分岐変位は、PC値と同様に、当該命令ワード(32ビット)からのオフセットで指定される。
図7は、16ビットの変位や即値を持った3オペンランド命令やロード/ストア命令のビット割付けを示している。この命令フォーマットは、オペレーションコードフィールド81と、ショートフォーマットと同様にレジスタ番号などを指定するフィールド82および83と、16ビットの変位や即値などを指定する拡張データフィールド84とによって構成される。
上述した命令フォーマット以外に、NOP(No OPeration)命令のように、15ビット全てがオペレーションコードとなる命令や、1オペランド命令などの特殊なビット割付けを有する命令もある。
本実施の形態におけるデータ処理装置に実装される各サブ命令は、RISC(Reduced Instruction Set Computer)ライクな命令セットとなっている。メモリにアクセスする命令はロード/ストア命令のみである。演算命令は、レジスタまたはアキュムレータに格納されたオペランドや、即値オペランドに対する演算を行なう。
オペランドデータに対するアクセスのアドレッシングモードとしては、レジスタ間接モード、ポストインクリメント付きレジスタ間接モード、ポストデクリメント付きレジスタ間接モード、プッシュモードおよびレジスタ相対間接モードの5種類がある。これら5種類のニーモニックはそれぞれ、“@Rsrc”、“@Rsrc+”、“@Rsrc−”、“@−SP”および“@(disp16,Rsrc)”で示される。Rsrcはベースアドレスを指定するレジスタ番号を示し、disp16は16ビットの変位値を示している。なお、オペランドのアドレスはバイトアドレスで指定される。
レジスタ相対間接モード以外のロード/ストア命令は、図5に示す命令フォーマットとなる。すなわち、フィールド63によってベースレジスタ番号が指定され、フィールド62によってメモリからロードした値を書込むレジスタの番号またはストアする値を保持するレジスタの番号が指定される。
レジスタ間接モードにおいては、ベースレジスタとして指定されたレジスタの値がオペランドアドレスとなる。
ポストインクリメント付きレジスタ間接モードにおいては、ベースレジスタとして指定されたレジスタの値がオペランドアドレスとなり、このベースレジスタの値がオペランドのサイズ(バイト数)分だけポストインクリメントされてレジスタに書き戻される。
ポストデクリメント付きレジスタ間接モードにおいては、ベースレジスタとして指定されたレジスタの値がオペランドアドレスとなり、このベースレジスタの値がオペランドのサイズ(バイト数)分だけポストデクリメントされてレジスタに書き戻される。
プッシュモードは、ストア命令であり、かつベースレジスタがR15(SP)の場合にのみ使用可能であり、SP値がオペランドのサイズ(バイト数)だけポストデクリメントされてオペランドアドレスとなり、そのデクリメントされた値がSPに書き戻される。
レジスタ相対間接モードのロード/ストア命令のフォーマットは、図7に示す命令フォーマットとなる。フィールド83によってベースレジスタの番号が指定され、フィールド82によってメモリからロードした値を書込むレジスタの番号またはメモリにストアする値を保持するレジスタの番号が指定される。また、フィールド84によってベースアドレスからの変位値が指定される。このレジスタ相対間接モードにおいては、ベースレジスタとして指定されたレジスタの値に16ビットの変位値が加算されて、オペランドアドレスとされる。
ジャンプ命令のジャンプ先アドレス指定には、ジャンプ先アドレスをレジスタに格納された値で指定するレジスタ間接モードと、PC値からの分岐変位でジャンプ先アドレスを指定するPC相対間接モードとがある。このPC相対間接モードにおいては、分岐変位を8ビットで指定するショートフォーマットと、分岐変位を16ビットで指定するロングフォーマットとの2種類がある。
図8は、本発明の第1の実施の形態におけるデータ処理装置の概略構成を示すブロック図である。このデータ処理装置100は、MPU(Micro Processing Unit)コア部101と、MPUコア部101からの要求に応じて命令データをフェッチする命令フェッチ部102と、内蔵命令メモリ103と、MPUコア部101からの要求に応じてオペランドデータのアクセスを行なうオペランドアクセス部104と、内蔵データメモリ105と、命令フェッチ部102およびオペランドアクセス部104からの要求を調停し、データ処理装置100の外部にあるメモリ対してアクセスを行なう外部バスインタフェース部106とを含む。
また、MPUコア部101は、MPUコア部101の全体的な制御を行なう制御部111と、レジスタファイル115と、第1演算部116と、第2演算部117と、PC値を制御するPC部118とを含む。さらには、制御部111は、命令キュー112と、命令デコード部113とを含む。
命令キュー112は、2エントリの32ビット命令バッファ、その有効ビットおよび入出力ポインタなどによって構成され、FIFO(First In First Out)方式で制御される。命令キュー112は、命令フェッチ部102によってフェッチされた命令データを一時保持し、この命令データを命令デコード部113へ送出する。命令デコード部113は、実行する命令データをデコードし、命令の実行に必要な制御信号を生成する。
図9は、命令デコード部113をさらに詳細に説明するためのブロック図である。図9に示すブロック図は、本実施の形態におけるデータ処理装置の説明に必要な接続関係のみを示しており、その説明に関係しない部分については図示していない。
この命令デコード部113は、命令キュー112から受けた命令データを保持する命令レジスタ121と、第1デコーダ122と、第2デコーダ123と、プリデコーダ124と、拡張データ生成部125と、Dステージ制御部126とを含む。
命令レジスタ121は、命令キュー112から受けたデコード対象の命令データを保持する。なお、この命令レジスタ121に保持される命令データのフォーマットは、図3に示す命令フォーマットと同様である。
命令デコード部113は、実行制御信号等を生成する2つのデコーダ(第1デコーダ122、第2デコーダ123)を備えており、2つのショート命令を並列にデコードすることが可能である。
第1デコーダ122は、第1演算部116が実行する命令をデコードするものであり、主として第1演算部116、PC部118およびレジスタファイル115の命令実行制御信号や、分岐/ジャンプ/オペランドアクセスに関連した制御信号などを生成する。
第2デコーダ123は、第2演算部117が実行する命令をデコードするものであり、主として第2演算部117およびレジスタファイル115の命令実行制御信号を生成する。
プリデコーダ124は、2つのショート命令がシーケンシャルに実行される場合、先行して実行されるショート命令の実行中に後で実行するショート命令をデコードして、先行命令の実行後に第1デコーダ122および第2デコーダ123のどちらで後続命令のデコードを行なうかを判定する。
なお、第1デコーダ122、第2デコーダ123およびプリデコーダ124は、それぞれマルチプレクサ(MUX)を有しており、左コンテナ52に保持されるショート命令と右コンテナ53に保持されるショート命令とのいずれかを選択的に入力することが可能である。
拡張データ生成部125は、第1デコーダ122からデコード結果を受け、第1演算部116における命令実行に必要な即値、変位等の拡張データを切出す。ロングフォーマット命令の拡張データの切出しを行なうために、右コンテナ53に格納されるデータも拡張データ生成部125へ転送される。なお、第2演算部117における命令実行に必要な即値、変位等を生成する部分は、第2デコーダ123に含めて図示している。
Dステージ制御部126は、後述する命令デコードステージ(Dステージ)における命令デコードの状態制御を行なう。なお、Dステージ制御部126は、命令デコード部113に含める必要はないが、命令の解析が関係するので、本実施の形態においては命令デコード部113に含めて説明するものとする。
32ビット命令のデコードの第1サイクルにおいては、必ず左コンテナ52に格納される命令コードが第1デコーダ122において解析され、右コンテナ53に格納される命令コードが第2デコーダ123において解析される。ただし、FMビット51と左コンテナ52のビット0およびビット1とは、両方のデコーダによって解析される。したがって、最初に実行される命令は、その命令を実行する演算部に対応する位置に置かれなければならない。
2つのショート命令がシーケンシャルに実行される場合には、プリデコーダ124におけるデコード結果にしたがって、先行するショート命令がデコードされた後、後で実行されるショート命令がデコードするべきデコーダに取込まれ、解析される。後で実行されるショート命令が、どちらのデコーダによっても処理できる命令の場合には、第1デコーダ122がそのショート命令をデコードする。
レジスタファイル115は、図1に示す汎用レジスタR0〜R15(1〜17)に相当し、処理対象となるアドレス値やデータを保持する。このレジスタファイル115は、第1演算部116、第2演算部117、PC部118およびオペランドアクセス部104と複数のバスで接続されている。ワード/2ワードロード命令実行時には、ロードデータがオペランドアクセス部104から直接レジスタファイル115に取込まれる。
第1演算部116は、主としてロード/ストア命令、分岐命令、算術演算命令、論理演算命令、比較命令、転送命令などを実行する。この第1演算部116は、レジスタファイル115、PC部118およびオペランドアクセス部104と複数のバスで接続されており、それらとの間で命令の実行に必要なデータやアドレスの転送を行なう。また、第1演算部116は、演算に必要な即値、変位等の拡張データを拡張データ生成部125から取込む。
また、第1演算部116は、図示しないALU(Arithmetic and Logic Unit)を備えており、転送、比較、算術演算、論理演算、オペランドアドレスの計算/転送、オペランドアドレス値のインクリメント/デクリメント、ジャンプ先アドレスの計算/転送などを行なう。第1演算部116は、演算結果やアドレス更新結果をバスを介して、命令で指定されたレジスタファイル115内のレジスタに書き戻す。
ロード/ストア命令実行時には、第1演算部116は、計算したオペランドアドレスをオペランドアクセス部104へ出力する。また、ジャンプ/分岐命令実行時には、ジャンプ先アドレスをPC部118へ出力する。
ストア命令実行時には、第1演算部116は、レジスタファイル115から読出したストアデータを保持/整置した後、オペランドアクセス部104へ出力する。また、バイトロード時には、第1演算部116は、オペランドアクセス部104から取込んだロードデータのバイト整置およびゼロ/符号拡張を行ない、レジスタファイル115へ出力する。
PC部118は、インクリメンタ等の演算器やラッチなどを備えており、制御部111の制御によって、命令のパイプライン処理に同期して命令フェッチアドレスの管理/更新、実行命令PC値の管理/更新を行なう。リセット直後を含め命令の処理シーケンスが切替わった場合に、PC部118はジャンプ先アドレスを第1演算部116から取込み、PC部118内の種々のアドレスラッチの値が初期設定される。
命令フェッチ時には、PC部118は、次にフェッチする命令のアドレスを命令フェッチ部102へ出力する。また、分岐命令の処理時には、PC部118は、分岐先アドレスの計算に必要な分岐命令のアドレスを第1演算部116へ出力する。また、サブルーチンジャンプ/分岐命令の場合には、PC部118は、サブルーチンジャンプ/分岐命令の次命令アドレスを戻り先アドレスとしてレジスタファイル115へ出力する。
第2演算部117は、主として積和演算を含む算術演算、シフト処理、ビット操作、比較、転送などの処理を行なう。第2演算部117は、レジスタファイル115と複数のバスで接続されており、参照オペランドデータをレジスタファイル115から読出し、書込みオペランドデータをレジスタファイル115へ出力する。
第2演算部117は、40ビットALU、40ビットバレルシフタ、17ビット×17ビット乗算器、プライオリティエンコーダなどの演算器と、図1に示す2本の40ビットアキュムレータ31および32とを含む。
図10は、本発明の第1の実施の形態におけるデータ処理装置100のパイプライン処理を説明するための図である。データ処理装置100は、命令データのフェッチを行なう命令フェッチ(IF)ステージ401と、命令の解析を行なう命令デコード(D)ステージ402と、演算実行を行なう命令実行(E)ステージ403と、データメモリに対するアクセスを行なうメモリアクセス(M)ステージ404と、メモリからロードしたバイトオペランドをレジスタに書込むライトバック(W)ステージ405との5段のパイプライン処理を行なう。
Eステージ403における演算結果のレジスタへの書込みは、Eステージ403で完了する。また、ワード(2バイト)、2ワード(4バイト)ロード時におけるレジスタへのデータ書込みは、Mステージ404で完了する。積和/積差演算については、さらに乗算と加算との2段のパイプラインで命令の実行が行なわれる。この後段の処理(加算)を命令実行2(E2)ステージ406と呼ぶ。このように、2段のパイプラインで乗算と加算とを行なうことにより、連続する積和/積差演算を1回/1クロックサイクルのスループットで実行できる。
IFステージ401においては、主として命令のフェッチおよび命令キュー112の管理が行なわれる。命令フェッチ部102、内蔵命令メモリ103、外部バスインタフェース部106およびPC部118の命令フェッチアドレス管理に関する部分や、制御部111のIFステージ制御、命令フェッチ制御、PC部118の制御などを行なう部分が、このIFステージ401の制御で動作する。IFステージ401は、Eステージ403におけるジャンプの実行時に初期化される。
IFステージ401においては、命令キュー112に空きがある場合、制御部111が命令フェッチ要求を命令フェッチ部102へ出力する。命令フェッチ部102は、PC部118から転送された命令フェッチアドレスの値に応じて、命令データのフェッチを行なう。
対応する命令データが内蔵命令メモリ103にある場合には、命令フェッチ部102は内蔵命令メモリ103から命令データをフェッチする。この場合、1クロックサイクルで32ビットの命令データのフェッチが完了する。
対応する命令データが内蔵命令メモリ103にない場合には、命令フェッチ部102は外部バスインタフェース部106に命令フェッチ要求を出力する。外部バスインタフェース部106は、この命令フェッチ要求とオペランドアクセス部104からの要求との調停を行ない、命令のフェッチが可能となったときに外部メモリから命令データを取込み、命令フェッチ部102へ出力する。外部バスインタフェース部106は、最小2クロックサイクルで外部メモリに対するアクセスを行なうことが可能である。命令フェッチ部102は、フェッチした命令を命令キュー112へ出力する。命令キュー112に取込まれた命令データが、順次命令デコード部113へ出力される。
Dステージ402においては、命令デコード部113がオペレーションコードの解析を行ない、第1演算部116、第2演算部117、PC部118などの命令の実行に関連した部分を制御するための制御信号群を生成する。Dステージ402は、Eステージ403におけるジャンプの実行時に初期化される。Dステージ402において、命令キュー112から無効な命令コードが転送された場合には、アイドルサイクルとなって有効な命令コードが転送されるまで待機する。
Eステージ403が次の処理を開始できない場合には、命令デコーダ113は演算器などに出力する制御信号を無効化し、Eステージ403における先行命令の処理の終了を待つ。たとえば、Eステージ403で実行中の命令がメモリアクセスを行なう命令であり、そのときMステージ404でメモリアクセスを行なっている場合には、Eステージ403における先行命令の処理が待たされて、このような状態になる。
また、Dステージ402においては、シーケンシャルに実行が行なわれる2命令の分割や、2サイクル実行命令のシーケンス制御も行なわれる。さらに、Dステージ402において、図示しないスコアボードレジスタを用いたロードオペランドの干渉チェックや、第2演算部117の演算器の干渉チェックなども行なわれ、干渉が検出された場合には、干渉が解消されるまで処理の発行を抑止する。
ワードまたは2ワードのロード命令の直後に、ロードするオペランドを参照する演算命令がある場合には、レジスタへのロードが完了するまで演算命令の実行開始を抑止する。この場合、メモリアクセスが1クロックサイクルで終了する場合でも、1クロックサイクルのストールが発生する。バイトデータをロードする場合には、さらにWステージ405でレジスタファイル115への書込みが完了するため、さらに1サイクルだけストール期間が延びる。
また、積和演算命令の直後に加算器を使用する丸め処理がある場合には、命令デコード部113は、先行の積和演算命令の演算が終了するまで丸め命令の実行開始を抑止する。この場合、1クロックサイクルのストールが発生する。積和演算命令が連続する場合には、ストールは発生しない。
Eステージ403においては、演算、比較、制御レジスタを含むレジスタ間転送、ロード/ストア命令のオペランドアドレス計算、ジャンプ命令のジャンプ先アドレスの計算、ジャンプ処理、EIT(例外、割込み、トラップ)検出、各EITのベクタアドレスへのジャンプなど、メモリアクセスと積和/積差演算命令の加減算処理とを除く命令処理に関するほとんど全ての処理が行なわれる。
Eステージ403は、Dステージ402から処理が発行されないと、アイドル状態となる。Eステージ403で処理中の命令がオペランドアクセスを行なう命令であり、Mステージ404でメモリアクセスが完了していない場合には、Eステージ403における処理の完了が待たされる。
Eステージ403において、第1演算部116は、算術演算、論理演算、比較、転送、メモリオペランドのアドレスや分岐先のアドレス計算などを行なう。Eステージ403において、レジスタファイル115内の汎用レジスタ、第1演算部116やPC部118内の制御レジスタ、命令デコード部113から取込まれた即値、変位などの拡張データの値がソースオペランドとして読出される。
演算命令の実行時には、第1演算部116内のALUにおいて転送を含む演算が行なわれる。デスティネーションオペランドが汎用レジスタや制御レジスタの場合には、ALUにおける演算結果がレジスタファイル115、若しくは、第1演算部116またはPC部118内の制御レジスタに書込まれる。
ロード/ストア命令の場合には、第1演算部116が演算結果(アドレス値)をオペランドアクセス部104へ転送する。ジャンプ命令の場合には、第1演算部116がジャンプ先アドレスをPC部118へ転送する。また、ストア命令の場合には、第1演算部116がレジスタファイル115から読出したストアデータを整置し、その値を保持する。
また、Eステージ403においては、実行する命令に依存しないPC値の更新も行なわれる。PC部118は、実行中の命令のPC値の管理や、次に実行する命令のアドレスの生成を行なう。Eステージ403において、ジャンプが起こった場合には、第1演算部116がジャンプ先アドレスをPC部118へ転送し、初期化が行なわれる。シーケンシャルにショート命令の実行が行なわれる場合には、32ビット命令の処理が開始されるたびに、PC部118内の図示しないインクリメンタがPC値を1だけインクリメントする。
Eステージ403において、第2演算部117は、算術演算、論理演算、比較、転送、シフトなど、積和演算の加算以外の全ての演算処理を行なう。第2演算部117は、オペランドの値として、レジスタファイル115やアキュムレータに保持される値、第2デコーダ123によって切出された即値を読出し、第2演算部117内の演算器でその値に指定された演算を行なう。そして、演算結果がレジスタファイル115またはアキュムレータに書込まれる。
Eステージ403においては、第1演算部116または第2演算部117における演算結果によるPSW中のフラグ値の更新制御も行なわれる。また、Eステージ403は、第2デコーダ123が生成した積和/積差演算における加算/減算の実行のための演算制御信号を保持する。メモリアクセス情報、ロードレジスタ情報は、Mステージ404に転送される。なお、Eステージ403のステージ制御は制御部111によって行なわれる。
Mステージ404は、制御部111からのオペランドアクセス要求に応じて、第1演算部116から転送されたアドレスを用いてオペランドのアクセスを行なう。オペランドアクセス部104は、オペランドが内蔵データメモリ105や図示しないチップ内I/Oにある場合には、内蔵データメモリ105やチップ内I/Oに対して、1クロックサイクルで1回のオペランドの読出し、または書込みを行なう。
オペランドが内蔵データメモリ105やチップ内I/Oにない場合には、外部バスインタフェース106に対してデータアクセス要求を出力する。外部バスインタフェース部106は、データアクセス要求を受けると、外部メモリに対してデータアクセスを行なう。
ロードの場合には、オペランドアクセス部104は、外部バスインタフェース部106によって読出されたデータをバスを介して転送する。バイトデータの場合には、第1演算部116へデータが転送される。また、ワードまたは2ワードデータの場合には、レジスタファイル115に直接データが書込まれる。
ストアの場合には、オペランドアクセス部104が第1演算部116から整置されたストアデータを受け、外部バスインタフェース部106を介して、対象となる外部メモリにデータを書込む。非整置アクセス時における後半アクセスのアドレス生成およびアクセス制御は、Mステージ404において行なわれる。
バイトデータのロードの場合には、Wステージ405において、第1演算部116内に保持されたロードオペランド(バイト)が、整置、ゼロ/符号拡張された後、レジスタファイル115に書込まれる。
E2ステージ406においては、積和/積差演算の加算処理または減算処理が行なわれ、加算結果または減算結果がアキュムレータに書き戻される。
本実施の形態におけるデータ処理装置は、入力クロックに基づいて内部制御を行ない、最短の場合、各パイプラインステージは1クロックサイクルで処理を終了する。なお、本実施の形態においては、クロック制御が直接関係しないので、詳細な説明は省略する。
次に、各サブ命令の処理の一例について説明する。加算/減算、論理演算、比較などの演算命令やレジスタ間の転送命令は、IFステージ401、Dステージ402およびEステージ403の3段で処理が終了する。演算やデータ転送は、Eステージ403で行なわれる。
積和/積差演算命令は、Eステージ403における乗算処理と、E2ステージ406における加算/減算処理との2クロックサイクルで演算実行される。したがって、IFステージ401、Dステージ402、Eステージ403およびE2ステージ406の4段で処理が終了する。
バイトロード命令は、IFステージ401、Dステージ402、Eステージ403、Mステージ404およびWステージ405の5段で処理が終了する。ワード/2ワードロード命令やストア命令は、IFステージ401、Dステージ402、Eステージ403およびMステージ404の4段で処理が終了する。
非整置アクセスの場合には、Mステージ404においては、オペランドアクセス部104が2回のアクセスに分割して、メモリアクセスを行なう。Eステージ403においては、1クロックサイクルで処理が終了する。実行に2サイクルを要する命令においては、第1命令デコーダ122または第2命令デコーダ123が各サイクル毎に実行制御信号を生成して出力し、第1演算部116または第2演算部117が2サイクルで演算実行を行なう。
ロング命令は、上述したように、1つの32ビット命令が1つのロング命令で構成されているが、この1つのロング命令の処理によって32ビット命令の実行が完了する。
2つのショート命令がパラレルで実行される場合には、2つのショート命令のうち処理サイクルの大きい方の命令の処理に律速される。たとえば、2サイクルで実行する命令と、1サイクルで実行する命令との組合わせの場合、この2つのショート命令の実行に2サイクルを要する。
2つのショート命令がシーケンシャルに実行される場合には、各サブ命令の組合せによって処理サイクルが決定される。すなわち、デコード段階で各命令がシーケンシャルにデコードされ、各命令がシーケンシャルに実行される。たとえば、Eステージ403において1サイクルで実行が完了する2つの加算命令の場合、Dステージ402とEステージ403とのそれぞれが各命令に1サイクル、計2サイクルで処理を終了する。Eステージ403における先行命令の実行と並列に、Dステージ402における後続命令のデコードが行なわれる。
次に、本発明の第1の実施の形態におけるデータ処理装置が実行するオペレーション修飾命令について詳細に説明する。図11〜図14は、オペレーション修飾命令のビット割付けを説明するための図である。
図11に示すMOD_SAT命令は、並列実行においてのみ使用可能な命令であり、並列に実行する他方の命令のオペレーションについて、16ビットのサチュレーションを行なうことを指示する命令である。
図12に示すMOD_SATB命令は、図11に示すMOD_SAT命令と同様に、並列実行においてのみ使用可能な命令であり、並列に実行する他方の命令のオペレーションについて、8ビットのサチュレーションを行なうことを指示する命令である。
図13に示すMOD_SATN命令は、次命令のオペレーションについて、サチュレーションを行なうことを指示する命令である。ロングフォーマットのサブ命令や、並列実行する2つのショートフォーマットのサブ命令についてサチュレーションを行なう場合に使用される。
図14に示すMOD_SATX命令は、並列に実行する他方の命令と次命令とのオペレーションについて、サチュレーションを行なうことを指示する命令である。
これらのオペレーション修飾命令は、自身では処理を行なわないNOP命令である。また、オペレーション修飾命令は、左コンテナ52および右コンテナ53のいずれにも配置可能である。
図15は、レジスタ間の16ビット加算を行なうADD命令のビット割付けを説明するための図である。このADD命令が実行されると、Rdestによって指定されるレジスタの値に、Rsrcによって指定されるレジスタの値が加算され、加算結果がRdestによって指定されるレジスタに書き戻される。この加算命令は単独で実行可能である。この場合には、サチュレーションは行なわれない。
図16は、2つのADD命令を並列に実行する場合の32ビット命令を示す図である。第1演算部116によって“ADD R0,R2”が実行され、第2演算部117によって“ADD R1,R3”が実行される。この32ビット命令が単独で実行される場合には、サチュレーションは行なわれない。
図17および図18は、“ADD R0,R2”が単独で実行された場合の演算の前後のレジスタ値およびサチュレーション(S)フラグの値を示す図である。なお、“0x”はそれ以下が16進数で表記されていることを示している。図17においては、符号付き16ビット数を加算する場合であって、オーバーフローが発生する例を示している。しかし、サチュレーション処理は行なわれず、16ビットとして加算した演算結果がそのままレジスタR0に書込まれる。このとき、Sフラグは変化しない。
図18においては、符号付き16ビット数を加算する場合であって、アンダーフローが発生する例を示している。この場合もサチュレーション処理は行なわれず、16ビットとして加算した演算結果がそのままレジスタR0に書込まれる。このときも、Sフラグは変化しない。
図19は、ADD命令がMOD_SAT命令と並列に実行される場合の32ビット命令を示す図である。左コンテナ52にMOD_SAT命令が配置され、右コンテナ53にADD命令が配置されている。命令デコード部113は、2つの命令を並列にデコードする。第1デコーダ122は、MOD_SAT命令をデコードし、実行制御情報として有効な処理を行なわないノーオペレーション情報を生成して、第1演算部116などへ出力する。第1デコーダ122は、第2デコーダ123に対して、第2デコーダ123がデコード中の命令に対して16ビットのサチュレーションを行なうよう演算内容を修飾することを指示する情報を、信号線127を介して第2デコーダ123へ出力する。
第2デコーダ123は、ADD命令をデコードし、加算処理を行なうための演算制御情報を生成し、レジスタファイル115および第2演算部117に出力する。このとき、信号線127によって、16ビットのサチュレーションを行なうよう演算内容を修飾することが指示されていれば、第2デコーダ123はサチュレーションを行なうための制御信号を生成して第2演算部117などに出力する。
図20は、第2演算部117内のALU、シフタおよびその周辺回路の構成を示すブロック図である。なお、第2演算部117は、他の多くの演算器を備えているが、本発明と直接関係しない部分については省略している。
第2演算部117は、ALU演算用のラッチA131およびB132と、ALU133と、ALU演算用オーバーフロー判定回路134と、ALU133の出力を選択するセレクタ135と、シフト量入力ラッチSC141と、シフトデータ入力ラッチSD142と、シフタ143と、シフト演算用オーバーフロー判定回路144と、シフタ143の出力を選択するセレクタ145と、即値部(IMM)151とを含む。
即値部151は、命令コードから切出された即値を取込み、即値を符号/ゼロ拡張したり、ビット演算用ビットマスクデータを作成したりする。
次に、図19に示す命令が実行される場合の第2演算部117の動作について、図20を参照しながら説明する。左コンテナ52にMOD_SAT命令があるので、第1演算部116は有効な演算を行なわない。第2演算部117は、サチュレーションを伴う加算処理を行なう。
まず、レジスタR0およびR2の値がレジスタファイル115から読出され、それぞれラッチA131およびB132に転送される。ALU133は、ラッチA131およびB132に保持される値に対して加算処理を行なう。サチュレーション制御信号136によって、16ビットのサチュレーションを行なうことが指示されているので、判定回路134はALU133の演算結果(ビット0およびビット1のキャリー出力情報など)に基づき、オーバーフローまたはアンダーフローの判定を行ない、その判定結果をセレクタ135の選択信号として出力する。
オーバーフローが検出された場合には、セレクタ135は、正の最大値“0x7fff”を出力する。また、アンダーフローが検出された場合には、セレクタ135は、負の最小値“0x8000”を出力する。また、オーバーフローもアンダーフローも検出されなかった場合には、セレクタ135は、ALU133の出力を選択して出力する。このセレクタ135の出力は、レジスタR0に書き戻される。
また、オーバーフローまたはアンダーフローが検出された場合には、制御部111内のSフラグ35が“1”にセットされる。オーバーフローもアンダーフローも検出されなかった場合には、制御部111内のSフラグ35がゼロクリアされる。第2の演算部117から制御部111への演算結果の出力やフラグ制御の詳細は、本発明の説明に必要ないので説明を省略する。
図21および図22は、オペレーションが修飾された命令“ADD R0,R2”が実行された場合の演算の前後のレジスタ値およびSフラグの値を示す図である。図21においては、符号付き16ビット数を加算する場合であって、オーバーフローが発生する例を示している。サチュレーション処理が行なわれるので、演算実行後のレジスタR0には正の最大値“0x7fff”が書込まれる。このとき、オーバーフローが発生するので、Sフラグは“1”となる。
図22においては、符号付き16ビット数を加算する場合であって、アンダーフローが発生する例を示している。この場合もサチュレーション処理が行なわれるので、演算後のレジスタR0には負の最小値“0x8000”が書込まれる。このとき、アンダーフローが発生するので、Sフラグは“1”となる。
図16に示すようなオペレーションが修飾されないADD命令が実行される場合には、第2デコーダ123は、信号線127によってオペレーション修飾を行なわないことを示す情報を受け、サチュレーション制御信号136によってサチュレーションを行なわないことを指示する。この場合、オーバーフローまたはアンダーフローが発生したか否かに関係なく、セレクタ135がALU133の出力を選択する。この加算結果がレジスタファイル115に書き戻される。また、制御部111内のSフラグ35は、このADD命令の実行の影響を受けない。
次に、シフト命令についてオペレーション修飾が行なわれる場合の第2演算部117の動作について説明する。図23は、シフト量が4ビットの即値で指定される左シフト命令SLLIのビット割付けを説明するための図である。Rdestによって指定されるレジスタの値が、imm4によって指定されるシフト量分だけ左シフトされ、Rdestによって指定されるレジスタに書き戻される。
オペレーション修飾を行なわない場合には、オーバーフローまたはアンダーフローが発生したか否かに関係なく、シフトした値がそのままレジスタに書き戻される。オペレーション修飾を行なう場合には、シフトアウトされたデータも含めてオーバーフローまたはアンダーフローの判定が行なわれ、サチュレーション処理が行なわれる。また、制御部111内のSフラグ35も演算の実行による影響を受ける。
図24は、SLLI命令がMOD_SAT命令と並列に実行される場合の32ビット命令を示す図である。左コンテナ52にMOD_SAT命令が配置され、右コンテナ53にSLLI命令が配置されている。命令のデコード方法は、実行される命令が加算命令ではなく、シフト命令であることを除き、図19を用いて説明した方法と同様である。
次に、図24に示す命令が実行される場合の第2演算部117の動作について、図20を参照しながら説明する。左コンテナ52にMOD_SAT命令があるので、第1演算部116は有効な演算を行なわない。第2演算部117は、サチュレーションを伴う左シフト処理を行なう。
まず、レジスタR0の値がレジスタファイル115から読出され、ラッチSD142に転送される。また、命令コードから切出された即値がIMM151によってゼロ拡張され、ラッチSC141に転送される。シフタ143は、ラッチSC141およびSD142に保持される値を参照して左シフト処理を行ない、シフト結果をセレクタ145へ出力する。
サチュレーション制御信号146によって、サチュレーションを行なうことが指示されているので、判定回路144はシフタ143に入力される値に基づき、オーバーフローまたはアンダーフローの判定を行ない、その判定結果をセレクタ145の選択信号として出力する。判定回路144は、ラッチSC141に保持されるシフト量に基づいて、ラッチSD142に保持される値(シフトデータ)のMSB側の2ビット目から、LSB側へシフト量分だけ“1”になっているマスクデータを生成する。
そして、シフトデータのMSB側の2ビット目からLSBまでの各ビットと、符号ビット(MSBの値)との排他的論理和を演算し、この演算結果の各ビット毎にマスクデータとの論理積を演算する。その結果、いずれかのビットが“1”であり、かつシフトデータの符号が正(MSBが“0”)であれば、オーバーフローが発生したと判定する。また、いずれかのビットが“1”であり、かつシフトデータの符号が負(MSBが“1”)であれば、アンダーフローが発生したと判定する。
オーバーフローが検出された場合には、セレクタ145は、正の最大値“0x7fff”を出力する。また、アンダーフローが検出された場合には、セレクタ145は、負の最小値“0x8000”を出力する。また、オーバーフローもアンダーフローも検出されなかった場合には、セレクタ145は、シフタ143の出力を選択して出力する。このセレクタ145の出力は、レジスタR0に書き戻される。
また、オーバーフローまたはアンダーフローが検出された場合には、制御部111内のSフラグ35が“1”にセットされる。オーバーフローもアンダーフローも検出されなかった場合には、制御部111内のSフラグ35がゼロクリアされる。
次に、右コンテナ53にオペレーション修飾命令がある場合の動作について説明する。図25は、ADD命令が左コンテナ52に配置され、MOD_SAT命令が右コンテナ53に配置される場合の32ビット命令を示す図である。命令デコード部113は、2つの命令を並列にデコードする。第2デコーダ123は、MOD_SAT命令をデコードし、実行制御情報として有効な処理を行なわないノーオペレーション情報を生成して、第2演算部117などへ出力する。第2デコーダ123は、第1デコーダ122に対して、第1デコーダ122がデコード中の命令に対して16ビットのサチュレーションを行なうよう演算内容を修飾することを指示する情報を、信号線128を介して第1デコーダ122へ出力する。
第1デコーダ122は、ADD命令をデコードし、加算処理を行なうための演算制御情報を生成し、レジスタファイル115および第1演算部116に出力する。このとき、信号線128によって、サチュレーションを行なうよう演算内容を修飾することが指示されていれば、第1デコーダ122はサチュレーションを行なうための制御信号を生成して第1演算部116などに出力する。
図26は、第1演算部116内のALU、整置回路およびその周辺回路の構成を示すブロック図である。なお、第1演算部116は、他の多くの演算器を備えているが、本発明と直接関係しない部分については省略している。
第1演算部116は、ALU演算用のラッチA161およびB162と、ALU163と、ALU演算用オーバーフロー判定回路164と、ALU163の出力を選択するセレクタ165と、アドレスを保持するラッチ166と、整置用のラッチ171、172および175と、サチュレーション(SAT)回路173と、整置回路174とを含む。
ALU163およびその周辺回路161、162、164および165は、図20に示す第2演算部117内のALU133およびその周辺回路131、132、134および135と同様であるので、詳細な説明は繰返さない。なお、ラッチ166は、アドレスを保持して出力する。
図25に示す命令が実行される場合、右コンテナ53にMOD_SAT命令があるので、第2演算部117は有効な演算を行なわない。第1演算部116は、サチュレーションを伴う加算処理を行なう。なお、図25に示す命令が実行される場合の動作は、図19に示す命令が実行される場合の動作と同様であるので、詳細な説明は繰返さない。
図27は、レジスタ間接モードのバイトストア(STB)命令の命令ビット割付けを示す図である。このSTB命令が実行されると、Rsrc1で指定されるレジスタの値の下位8ビットが、Rsrc2で指定されるレジスタの値が示すアドレスにストアされる。
図28は、STB命令がMOD_SATB命令と並列に実行される場合の32ビット命令を示す図である。左コンテナ52にSTB命令が配置され、右コンテナ53にMOD_SATB命令が配置されている。命令デコード部113は、2つの命令を並列にデコードする。第2デコーダ123は、MOD_SATB命令をデコードし、実行制御情報として有効な処理を行なわないノーオペレーション情報を生成して、第2演算部117などへ出力する。第2デコーダ123は、第1デコーダ122に対して、第1デコーダ122がデコード中の命令に対して8ビットのサチュレーションを行なうよう演算内容を修飾することを指示する情報を、信号線128を介して第1デコーダ122へ出力する。
次に、図28に示す命令が実行される場合の第1演算部116の動作について、図26を参照しながら説明する。右コンテナ53にMOD_SATB命令があるので、第2演算部117は有効な演算を行なわない。第1演算部116は、サチュレーションを伴うストア処理を行なう。
まず、レジスタR0の値(ストアデータ)がレジスタファイル115から読出され、ラッチ171に転送される。サチュレーション制御信号176によって、8ビットのサチュレーションを行なうことが指示されているので、サチュレーション回路173は16ビットデータを入力とし、8ビットで表現できる値にサチュレーションを行なう。すなわち、“0x007f”以上の値は“0x007f”にクリッピングされ、“0xff80”以下の値は“0xff80”にクリッピングされて出力される。なお、サチュレーションを行なわない場合には、入力された値がそのまま出力される。
整置回路174は、ラッチA161に保持されるアドレスに基づいて整置を行なう。この整置された値はラッチ175によって保持され、オペランドアクセス部104へ出力される。また、オペランドアドレスについては、レジスタファイル115内のレジスタR8の値がラッチA161に保持され、ラッチ166を介してオペランドアクセス部104へ出力される。オペランドアクセス部104は、ラッチ175に保持されるオペランドを、ラッチ166に保持されるオペランドアドレスにストアする。
次に、左コンテナ52に保持されるレジスタ間転送命令“MV Rdest,Rsrc”と、右コンテナ53に保持されるMOD_SATB命令とが並列に実行される場合について説明する。MV命令を実行する場合、第1演算部116において、Rsrcで指定されたレジスタの値がラッチ171に転送される。サチュレーション回路173は、ラッチ171に保持される値に対してサチュレーションを行ない、レジスタファイル115内のRdestで指定されたレジスタにその値を書き戻す。このようにして、16ビットデータを8ビットデータにサチュレーションすることが可能である。
次に、次命令のオペレーションを修飾するMOD_SATN命令の動作について説明する。図29は、即値の加算を行なう3オペランド加算(ADD3)命令の命令ビット割付けを示す図である。このADD3命令が実行されると、Rsrcで指定されるレジスタの値と、imm16で指定される16ビットの即値とが加算され、この加算結果がRdestで指定されるレジスタに書き戻される。
このADD3命令は、ロングフォーマットの命令であるため、MOD_SAT命令を使用することができない。図30は、ロングフォーマットのADD命令のオペレーションを修飾する場合の一例を示す図である。図30に示すように、ADD3命令のオペレーションを修飾する場合、MOD_SATN命令の実行直後に、ADD3命令が実行される。
MOD_SATN命令が右コンテナ53に格納されているため、MOD_SATN命令は第2デコーダ123でデコードされる。MOD_SATN命令自体は、有効なオペレーションを行なわないNOP命令である。第2デコーダ123がMOD_SATN命令をデコードすると、Dステージ制御部126に対して、次命令のオペレーションを修飾することを指示する情報を出力する。Dステージ制御部126は、この情報を次命令がデコードされるまで保持し、次命令デコード時にこの情報を第1デコーダ122および第2デコーダ123へ出力する。
第1デコーダ122がADD3命令をデコードするが、このときDステージ制御部126から出力される次命令のオペレーションの修飾を指示する情報にしたがって、サチュレーションを伴うことを示す演算制御信号を生成し、第1演算部116へ出力する。第1演算部116は、この演算制御信号を受けて、サチュレーションを伴う加算処理を行なう。
まず、レジスタファイル115内のレジスタR0の値がラッチA161に転送され、第1デコーダ122から出力された即値がラッチB162に転送される。ALU163は、ラッチA161およびB162に保持される値を加算し、サチュレーション処理を行なった後、その演算結果をセレクタ165を介してレジスタファイル115内のR0に書き戻す。
次に、並列に実行する命令と次に実行する命令とのオペレーションを修飾するMOD_SATX命令について説明する。図31は、MOD_SATX命令の使用方法の一例を示す図である。このMOD_SATX命令がデコードされるときに、MOD_SAT命令とMOD_SATN命令との両方の処理が行なわれる。したがって、MOD_SATX命令と並列に実行される命令“ADD R8,R9”と、次に実行される命令“ADD R0,R2”および“ADD R1,R3”とがサチュレーションを伴って実行される。
オペレーション修飾命令としてサチュレーションを行なう場合について説明した。画像処理ではバイトデータを扱う場合も多い。このため、本実施の形態におけるデータ処理装置では、2つのバイトデータに関するSIMD(Single Instruction Multiple Data stream)演算機能を備えている。以下、オペレーション修飾命令としてSIMD演算を行なう場合について説明する。
図32は、並列に実行するペアの命令のオペレーションについて、8ビットの2つの演算を並列に行なうことを指示するMOD_2B命令であり、並列実行のみ可能な命令である。MOD_2B命令自身は、演算処理を行なわない(NOP)。MOD_2B命令は、左コンテナ52および右コンテナのいずれにも配置可能である。
図33は、SUB命令が、MOD_2B命令と並列に実行される場合の一例を示す図である。“SUB R0,R2”命令は、R0の値からR2の値を減算し、R0に書戻す命令である。左コンテナ52にMOD_2B命令が、右コンテナ53にSUB命令が配置されており、図9に示した命令デコード部113において2つの命令が並列にデコードされる。MOD_2B命令は第1デコーダ122でデコードされ、第1演算部116に転送する実行制御情報として有効な処理を行なわないノーオペレーション情報を生成し、第1演算部116等に出力する。
また、第1デコーダ122から、第2デコーダ123でデコード中の命令に対して、2つのバイトオペレーションを行なうように演算内容を修飾することを指示する情報が信号線127で第2デコーダ123に送られる。SUB命令は第2デコーダ123でデコードされ、減算処理を行なうための演算制御情報が生成され、レジスタファイル115および第2演算部117に出力される。このとき、信号線127で2つのバイトオペレーションを行なうよう演算内容を修飾することが指示されている場合には、2つのバイトオペレーションを行なうための制御信号が生成され、出力される。
図34は、2つのバイトオペレーションのSIMD処理を説明するために、第2演算部117内のALU133周りのブロック構成を詳細に示した図である。上位8ビットと下位8ビットとが各々独立に算術演算できる機能を有している。図34において、図20と同一の構成および機能を有する部分には同一の参照符号が付けられている。なお、第2演算部117は、他の多くの制御信号が存在するが、本発明と直接関係しない部分については省略している。
第2演算部117は、上位8ビットのALU用のラッチ131aおよび132aと、下位8ビットのALU用のラッチ131bおよび132bと、上位8ビットのALU部分であるALU_H133aと、下位8ビットのALU部分であるALU_L133bと、ALU_H133aへのキャリー入力を選択するセレクタ133cと、ALU演算用オーバーフロー判定回路134と、ALU_H133aおよびALU_L133bの出力を選択するセレクタ135とを含む。
図33に示した命令が実行される場合の第2演算部117動作について、図34を参照しながら説明する。2つのバイトデータのSIMD演算を行なう場合、本実施の形態におけるデータ処理装置は1つの16ビットレジスタの上位8ビットと下位8ビットとに各々処理対象のバイトデータが格納されているものとして処理を行なう。
第1演算部116は、左コンテナ52にMOD_2B命令があるので、第1演算部116は有効な演算を行なわない。第2演算部117は、2つのバイト(8ビット)減算処理を行なう。レジスタR0およびR2の値がそれぞれレジスタファイル115から読出され、上位8ビットが各々ラッチA_H131aおよびラッチB_H132aに転送され、下位8ビットが各々ラッチA_L131bおよびB_L132bに転送される。
ALU_H133aおよびALU_L133bにおける減算処理は、キャリー入力CYIを“1”にし、ラッチA_H131aまたはA_L131bから取込まれた値に、ラッチB_H132aまたはB_L132bから取込まれた値の反転値を加えることによって実現される。図33に示す命令実行時において、第2デコーダ123は、キャリー入力138を“1”とし、キャリー選択信号137をセレクタ133cがキャリー入力138を選択する値にする。
このように制御することによって、ALU_H133aにおいて上位8ビットの減算処理が行なわれ、ALU_L133bにおいて下位8ビットの減算処理が行なわれる。2つのバイト減算結果は連結され、セレクタ135を介してレジスタファイル115内のレジスタR0に書戻される。
図35は、2つのバイトデータの減算処理の結果の一例を示す図である。上位8ビットの“0x00−0x01”と、下位8ビットの“0x01−0x02”とがそれぞれ計算され、その演算結果である“0xff”(上位8ビット)と“0xff”(下位8ビット)とが連結されて、レジスタR0に書戻される。
“SUB R0,R2”命令が第2演算部117において単独で実行される場合についても簡単に説明しておく。この場合、16ビットの減算処理が行なわれる。命令デコード時に、信号127でオペレーション修飾を行なわない情報が第2デコーダ123に転送され、キャリー選択信号137でセレクタ133cがALU_L133bからのキャリー出力CYO139を選択する値がセレクタ139に転送される。その他の演算制御信号は、2つのバイトデータを演算する場合と同様である。このようにして、16ビットの減算処理が実現される。
図36は、図35と同じ初期値で16ビットデータの減算処理を行なった場合の演算処理を説明するための図である。図35と異なり、演算結果として16ビットの演算結果である“0xfeff”がレジスタR0に書戻される。
上述したオペレーション修飾命令として、サチュレーションを行なうMOD_SATN命令やMOD_SATX命令と同様に、本実施の形態におけるデータ処理装置は、次命令のオペレーションについて2つのバイトオペレーションを行なうようオペレーションを修飾するMOD_2BN命令や、並列に実行する命令と次に実行する命令とについて2つのバイトオペレーションを行なうようオペレーションを修飾するMOD_2BX命令も備えるが、オペレーションの修飾内容が異なるのみで、MOD_SATN命令やMOD_SATX命令と同様の制御が行なわれるので、詳細な説明は繰返さない。
以上、本実施の形態におけるデータ処理装置について説明したが、命令セット、パイプライン構成、データビット長などが異なる場合であっても、本発明を適用することができることは言うまでもない。
また、オペレーションの修飾として、サチュレーション処理やSIMD演算を行なう場合について説明したが、それ以外の様々な処理を伴うようにすることも可能である。たとえば、デフォルトのオペレーションサイズと異なる演算を行なう場合のオペレーションサイズの指定、丸めモードの指定、アドレスのビット長が複数ある場合(たとえば、16ビットモードと32ビットモード)のアドレスビット長の指定、モジュロアドレッシングなどを行なう場合のアドレッシング方法の指定、アドレスの特殊な修飾、アドレスの特殊な更新方法の指定などのような、オペレーション内容の修飾を行なう場合にも本発明を適用することが可能である。また、既存のデータ処理装置が実装している命令のオペレーション内容を変更する場合であっても、オペレーションの修飾を行なう命令を追加するだけで、互換性を維持したままオペレーション内容を変更することも可能である。
また、本実施の形態においては、16ビットのデータ処理装置について説明したが、32ビットや64ビットのデータ処理装置に本発明を適用することも可能である。
また、本実施の形態においては、VLIW方式のデータ処理装置について説明したが、次命令の演算のオペレーションを修飾するMOD_SATN命令やMOD_2BN命令は、VLIW以外の命令セットを処理するデータ処理装置に適用することも可能である。また、MOD_SATN命令等にスーパースカラー技術を適用して、オペレーション修飾命令とオペレーション修飾対象命令とを並列に処理するようにすれば、さらに性能を向上させることも可能である。
さらに、可変長命令セットでプリフィックスワードのようにオプション指定扱いするようにしてもよい。
また、本実施の形態においては、簡単のために2命令を並列に実行するデータ処理装置について説明したが、3命令以上を並列に実行するデータ処理装置に本発明を適用することも可能である。
また、サチュレーションを行なうようにオペレーションを修飾する命令として、加算命令、左シフト命令、ストア命令を例にして説明したが、符号反転命令、絶対値命令、加減算命令、転送命令など、どのような命令を修飾することも可能である。また、SIMD演算については減算の場合を例に挙げて説明したが、絶対値や乗算/積和を含む他の算術演算命令やシフト命令など、どのような命令を修飾することも可能である。
さらに、1つの命令に対して複数のオペレーション修飾が可能なように構成してもよい。
本実施の形態ではSIMD演算修飾を行なう場合に、1つの16ビットレジスタに2つのバイトデータが保持される場合に対する適用例を挙げているが、3つ以上のデータに対応するようにしてもよい。たとえば、32ビット演算で、4つのバイト演算を行なうようにしてもよい。
また、ハードウェアを追加して、2つ以上の16ビット演算を行なえるようにしてもよい。たとえば、16ビット加算器とレジスタファイルとに接続されるバスを追加し、“ADD R0,R2”に対して、SIMD演算修飾を行なった場合、R0の値とR2の値との加算結果をR0に書戻し、R1の値とR3の値との加算結果をR1に書戻すようにしてもよい。R1およびR3は、それぞれR0およびR2のレジスタ番号に“1”を加算した番号のレジスタであり、明示的にではなく予め決められた規則にしたがって指定される。どのような指定方法にするかは特に制限はなく、自由に決めればよい。
さらに、積和演算や絶対値和等の演算命令に対してSIMD演算修飾を適用する場合、複数の乗算器や絶対値計算回路と3入力加算器を実装し、乗算や絶対値演算については2組の演算を行ない、最後の加算の段階で3値加算を行なうことにより、1つのアキュムレータやレジスタに加算結果を累積する等を行なってもよい。
どのような演算に対して、どのような修飾を行なうかについては、ターゲットアプリケーション、命令の出現頻度、追加されるハードウェアコストや検証コストなどを考慮して自由に選択すればよい。また、どの命令との組合せを実装するかについても、同様のトレードオフを考慮して選択すればよい。
本実施の形態では命令デコーダでオペレーションの修飾を行なっているが、命令をデコードして実行するまでのどの段階でオペレーションの修飾制御を行なうようにしてもよい。
また、本実施の形態においては、MOD_SATN命令は次に実行する命令のオペレーションのみを修飾しているが、オペレーションを修飾する命令数を指定するようにして、1つのオペレーション修飾命令で多くの命令のオペレーションを修飾するようにしてもよい。
以上説明したように、本実施の形態におけるデータ処理装置によれば、オペレーション修飾命令を実装することによって、オペレーションが異なる命令毎に異なる命令コードを割当てる必要がなくなり、命令の基本命令長を短くすることができ、コード効率を向上させることが可能となった。したがって、プログラムがROMに書込まれるような機器組込み用途のデータ処理装置において、製品コストを低減することが可能となる。
また、命令の組合わせによって、多くの命令のオペレーションの修飾が可能となるので、実装する命令の数を増やすのと実質的に同様の効果が得られ、データ処理装置の性能が向上するといった効果が得られる。また、極少ないオペレーション修飾命令を実装するだけで、多くの命令のオペレーションを修飾することができるので、データ処理装置の開発コストの削減も可能となった。
また、モードビットによって動作モードを切替える場合と比較して、本発明は命令コードのみでオペレーションの内容が決まるので、ソフトウェアのデバッグが容易であり、ソフトウェアにバグが混入されるのを防止することが可能となった。
さらには、MOD_SATX命令やMOD_2BX命令のように、1つの命令で複数の命令のオペレーションを修飾する場合には、さらにコード効率を向上させることが可能となった。
(第2の実施の形態)
本発明の第2の実施の形態におけるデータ処理装置は、命令プリフィックスワードを備えたデータ処理装置に関するものである。
図37は、本発明の第2の実施の形態におけるデータ処理装置が実行する基本命令のフォーマットを示す図である。この命令フォーマットは、プリフィックスワード501と、第1コンテナ502と、第2コンテナ503と、第3コンテナ504とを含む。プリフィックスワード501は、サブ命令の長さ、並列に実行する命令の数、実行条件などを指定するほか、各コンテナに格納されたサブ命令のオペレーション内容を修飾することができる。
図38は、図37に示すプリフィックスワード501の詳細を説明するための図である。簡単のために、サチュレーションを行なう場合のみ説明する。フィールド511が“0001”であれば、各コンテナにおいて指定される命令のオペレーションを修飾して、サチュレーションを伴うようにすることが可能となる。
S1フィールド512は、第1コンテナ502のサブ命令のオペレーションの修飾を指定する。S2フィールド513は、第2コンテナ503のサブ命令のオペレーションの修飾を指定する。第3コンテナ514は、第3コンテナ504のサブ命令のオペレーションを修飾する。これらのフィールド512〜514が“0”であれば、対応するコンテナのサブ命令のオペレーションの修飾を行なわないことを示している。また、フィールド512〜514が“1”であれば、対応するコンテナのサブ命令のオペレーションの修飾を行ない、サチュレーション処理を伴うことを示している。
図39は、本発明の第2の実施の形態におけるデータ処理装置の概略構成を示すブロック図である。このデータ処理装置600は、MPUコア部601と、MPUコア部601からの要求に応じて命令データをフェッチする命令フェッチ部602と、内蔵命令メモリ603と、MPUコア部601からの要求に応じてオペランドデータのアクセスを行なうオペランドアクセス部604と、内蔵データメモリ605と、命令フェッチ部602およびオペランドアクセス部604からの要求を調停し、データ処理装置600の外部にあるメモリに対してアクセスを行なう外部バスインタフェース部606とを含む。
なお、命令フェッチ部602、内蔵命令メモリ603、オペランドアクセス部604、内蔵データメモリ605および外部バスインタフェース部606は、図8に示す第1の実施の形態における命令フェッチ部102、内蔵命令メモリ103、オペランドアクセス部104、内蔵データメモリ105および外部バスインタフェース部106と同様であるので、詳細な説明は繰返さない。
また、MPUコア部601は、MPUコア部601の全体的な制御を行なう制御部611と、PC値を制御するPC部614と、レジスタファイル615と、第1演算部616と、第2演算部617と、第3演算部618とを含む。なお、PC部614、レジスタファイル615、第1演算部616および第2演算部617は、図8に示す第1の実施の形態におけるPC部118、レジスタファイル115、第1演算部116および第2演算部117と同様であるので、詳細な説明は繰返さない。
第3演算部618は、レジスタファイル615と複数のバスで接続されており、第1演算部616や第2演算部617と並列に算術演算を行なうことができる。
制御部611は、命令キュー612と、命令デコード部613とを含む。また、命令デコード部613は、命令キュー612から受けた命令データを保持する命令レジスタ621と、Dステージ制御部622と、第1デコーダ623と、第2デコーダ624と、第3デコーダ625とを含む。
命令レジスタ621は、命令キュー612から受けたデコード対象の命令データを保持する。なお、この命令レジスタ621に保持される命令データのフォーマットは、図37に示す命令フォーマットと同様である。
命令デコード部613は、実行制御信号等を生成する3つのデコーダ(第1デコーダ623、第2デコーダ624、第3デコーダ625)を備えており、3つのサブ命令を並列にデコードすることが可能である。
第1デコーダ623は、第1コンテナ502に格納された命令をデコードし、デコード結果に応じて第1演算部616が命令を実行する。第2デコーダ624は、第2コンテナ503に格納された命令をデコードし、デコード結果に応じて第2演算部617が命令を実行する。第3デコーダ625は、第3コンテナ504に格納された命令をデコードし、デコード結果に応じて第3演算部618が命令を実行する。
プリフィックスワード501は、主としてDステージ制御部622においてデコードされるが、プリフィックスワード501内のフィールド511は、第1〜第3デコーダ623〜625においてもデコードされる。また、S1フィールド512は第1デコーダ623においてもデコードされ、S2フィールド513は第2デコーダ624においてもデコードされ、S3フィールド514は第3デコーダ625においてもデコードされる。
フィールド511が“0001”であり、S1フィールド512、S2フィールド513およびS3フィールド514のいずれかが“1”であれば、“1”となっているフィールドに対応するコンテナに格納されたサブ命令に関して、サチュレーションを伴う演算および処理が行なわれる。なお、Dステージ制御部622は、図9に示す第1の実施の形態におけるDステージ制御部126と同様の処理を行なうことにより、第1デコーダ623、第2デコーダ624および第3デコーダ625を制御する。
以上、第2の実施の形態について説明したが、命令セット、パイプライン構成、データビット長などが異なる場合であっても、本発明を適用できることは言うまでもない。
オペレーションコードの数が可変に制御できるようにしてもよいし、プリフィックスワードをオプション扱いし、必ずしもそれが含まれないような命令エンコーディング方法を採用しても構わない。
また、オペレーションの修飾内容や対象となるオペレーションが作用する命令等も第1の実施の形態と同様、どのようなものに適用してもよい。また、1つの命令に対して複数のオペレーション修飾が行なえるようにしてもよい。
以上説明したように、本実施の形態におけるデータ処理装置によれば、プリフィックスワード501で命令のオペレーションを修飾するようにしたので、基本命令の命令コード長を短くすることができ、コード効率を向上させることが可能となった。
また、1つのプリフィックスワード501で複数の命令のオペレーションを修飾できるので、複数の命令のオペレーションを修飾する場合でも短い命令長でそれを実現することができ、コード効率を向上させることが可能となった。したがって、プログラムがROMに書込まれるような機器組込み用途のデータ処理装置において、製品コストを低減することが可能となる。
また、モードビットによって動作モードを切替える場合と比較して、本発明は命令コードのみでオペレーションの内容が決まるので、ソフトウェアのデバッグが容易であり、ソフトウェアにバグが混入されるのを防止することが可能となった。
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
本発明の第1の実施の形態におけるデータ処理装置のレジスタセットを説明するための図である。 PSW18の詳細を説明するための図である。 本発明の第1の実施の形態におけるデータ処理装置の命令フォーマットを説明するための図である。 FMビット51の内容を説明するための図である。 2つのオペランドを持ったショート命令のビット割付けを示す図である。 ショートフォーマットの分岐命令のビット割付けを示す図である。 16ビットの変位や即値を持った3オペンランド命令やロード/ストア命令のビット割付けを示す図である。 本発明の第1の実施の形態におけるデータ処理装置の概略構成を示すブロック図である。 命令デコード部113をさらに詳細に説明するためのブロック図である。 本発明の第1の実施の形態におけるデータ処理装置100のパイプライン処理を説明するための図である。 オペレーション修飾命令MOD_SATのビット割付けを説明するための図である。 オペレーション修飾命令MOD_SATBのビット割付けを説明するための図である。 オペレーション修飾命令MOD_SATNのビット割付けを説明するための図である。 オペレーション修飾命令MOD_SATXのビット割付けを説明するための図である。 レジスタ間の16ビット加算を行なうADD命令のビット割付けを説明するための図である。 2つのADD命令を並列に実行する場合の32ビット命令を示す図である。 “ADD R0,R2”が単独で実行された場合であり、オーバーフローが発生する場合の演算の前後のレジスタ値およびSフラグの値を示す図である。 “ADD R0,R2”が単独で実行された場合であり、アンダーフローが発生する場合の演算の前後のレジスタ値およびSフラグの値を示す図である。 ADD命令がMOD_SAT命令と並列に実行される場合の32ビット命令を示す図である。 第2演算部117内のALU、シフタおよびその周辺回路の構成を示すブロック図である。 オペレーションが修飾された命令“ADD R0,R2”が実行された場合であり、オーバーフローが発生する場合の演算の前後のレジスタ値およびSフラグの値を示す図である。 オペレーションが修飾された命令“ADD R0,R2”が実行された場合であり、アンダーフローが発生する場合の演算の前後のレジスタ値およびSフラグの値を示す図である。 シフト量が4ビットの即値で指定される左シフト命令SLLIのビット割付けを説明するための図である。 SLLI命令がMOD_SAT命令と並列に実行される場合の32ビット命令を示す図である。 ADD命令が左コンテナ52に配置され、MOD_SAT命令が右コンテナ53に配置される場合の32ビット命令を示す図である。 第1演算部116内のALU、整置回路およびその周辺回路の構成を示すブロック図である。 レジスタ間接モードのバイトストア(STB)命令の命令ビット割付けを示す図である。 STB命令がMOD_SATB命令と並列に実行される場合の32ビット命令を示す図である。 即値の加算を行なう3オペランド加算(ADD3)命令の命令ビット割付けを示す図である。 ロングフォーマットのADD命令のオペレーションを修飾する場合の一例を示す図である。 MOD_SATX命令の使用方法の一例を示す図である。 並列に実行するペアの命令のオペレーションについて、8ビットの2つの演算を並列に行なうことを指示するMOD_2B命令の命令ビット割付けを示す図である。 SUB命令が、MOD_2B命令と並列に実行される場合の一例を示す図である。 2つのバイトオペレーションのSIMD処理を説明するために、第2演算部117内のALU133周りのブロック構成を詳細に示した図である。 2つのバイトデータの減算処理の結果の一例を示す図である。 図35と同じ初期値で16ビットデータの減算処理を行なった場合の演算処理を説明するための図である。 本発明の第2の実施の形態におけるデータ処理装置が実行する基本命令のフォーマットを示す図である。 図37に示すプリフィックスワード501の詳細を説明するための図である。 本発明の第2の実施の形態におけるデータ処理装置の概略構成を示すブロック図である。
符号の説明
100,600 データ処理装置、101,601 MPUコア部、102,602 命令フェッチ部、103,603 内蔵命令メモリ、104,604 オペランドアクセス部、105,605 内蔵データメモリ、106,606 外部バスインタフェース部、111,611 制御部、112,612 命令キュー、113,613 命令デコード部、115,615 レジスタファイル、116,616 第1演算部、117,617 第2演算部、118,614 PC部、121,621 命令レジスタ、122,623 第1デコーダ、123,624 第2デコーダ、124 プリデコーダ、125 拡張データ生成部、126,622 Dステージ制御部、131,132,141,142,161,162,166,171,172,175 ラッチ、133,163 ALU、134,144,164 判定回路、135,145,165 セレクタ、143 シフタ、151 即値部、173 サチュレーション回路、174 整置回路、401 IFステージ、402 Dステージ、403 Eステージ、404 Mステージ、405 Wステージ、406 E2ステージ、618 第3演算部、625 第3デコーダ。

Claims (4)

  1. 命令コードをフェッチする命令フェッチ部と、
    前記命令フェッチ部によってフェッチされた命令コードをデコードする命令デコード部と、
    前記命令デコード部によるデコード結果に応じて、命令を実行する命令実行部とを含むデータ処理装置であって、
    命令コードがオペレーション修飾命令コードである場合、前記命令実行部に前記オペレーション修飾命令コードで指定されるオペレーション修飾対象の複数の実行単位の他の命令コードに関して、オペレーションを修飾して実行させる手段をさらに含む、データ処理装置。
  2. 前記命令実行部は、オペレーションを修飾して前記他の命令コードを実行する場合に、複数組のデータに対して前記他の命令コードで指定されるオペレーションを実行する、請求項1記載のデータ処理装置。
  3. 前記命令実行部は、オペレーションを修飾して前記他の命令コードを実行する場合に、各々処理対象となるデータを複数に分割し、分割された複数組のデータの各々に対して前記他の命令コードで指定されるオペレーションを実行する、請求項2記載のデータ処理装置。
  4. 前記命令実行部は、オペレーションを修飾して前記他の命令コードを実行する場合に、前記他の命令コードで指定されるデータと予め定められた規則に基づき前記他の命令コードで暗黙に指定されるデータとの複数組のデータに対して前記他の命令コードで指定されるオペレーションを実行する、請求項2記載のデータ処理装置。
JP2006221496A 2006-08-15 2006-08-15 データ処理装置 Pending JP2006302324A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006221496A JP2006302324A (ja) 2006-08-15 2006-08-15 データ処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006221496A JP2006302324A (ja) 2006-08-15 2006-08-15 データ処理装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2002211060A Division JP3856737B2 (ja) 2002-07-19 2002-07-19 データ処理装置

Publications (1)

Publication Number Publication Date
JP2006302324A true JP2006302324A (ja) 2006-11-02

Family

ID=37470456

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006221496A Pending JP2006302324A (ja) 2006-08-15 2006-08-15 データ処理装置

Country Status (1)

Country Link
JP (1) JP2006302324A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010066893A (ja) * 2008-09-09 2010-03-25 Renesas Technology Corp データプロセッサ
JP2012150589A (ja) * 2011-01-18 2012-08-09 Toshiba Corp 演算装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010066893A (ja) * 2008-09-09 2010-03-25 Renesas Technology Corp データプロセッサ
JP2012150589A (ja) * 2011-01-18 2012-08-09 Toshiba Corp 演算装置

Similar Documents

Publication Publication Date Title
JP3856737B2 (ja) データ処理装置
JP3658072B2 (ja) データ処理装置およびデータ処理方法
US6345357B1 (en) Versatile branch-less sequence control of instruction stream containing step repeat loop block using executed instructions number counter
EP1102163A2 (en) Microprocessor with improved instruction set architecture
JP2006004042A (ja) データ処理装置
US20030061471A1 (en) Data processor
JP3670668B2 (ja) データ処理装置
JPH10134036A (ja) マルチメディア信号プロセッサの単一命令多重データ処理
JP2018500657A5 (ja)
JPH0766324B2 (ja) データ処理装置
JP3543181B2 (ja) データ処理装置
JP3789583B2 (ja) データ処理装置
JPH03158928A (ja) データ処理装置
JPH01214932A (ja) データ処理装置
KR20070107814A (ko) 의존성 명령을 패킷으로 그룹핑하여 실행하는 프로세서 및방법
JP4502532B2 (ja) データ処理装置
JP2002229779A (ja) 情報処理装置
JPH10143494A (ja) スカラ/ベクトル演算の組み合わせられた単一命令複数データ処理
JP2006302324A (ja) データ処理装置
JP2020502669A (ja) ベクトル生成命令
JP2522048B2 (ja) マイクロプロセッサ及びそれを使用したデ―タ処理装置
JP4382076B2 (ja) データ処理装置
JP2006171827A (ja) 演算処理装置および演算処理プログラム
JP2005134987A (ja) パイプライン演算処理装置
JP2006031329A (ja) データ処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060815

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081021

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090303