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

データ処理装置 Download PDF

Info

Publication number
JP3901670B2
JP3901670B2 JP2003290766A JP2003290766A JP3901670B2 JP 3901670 B2 JP3901670 B2 JP 3901670B2 JP 2003290766 A JP2003290766 A JP 2003290766A JP 2003290766 A JP2003290766 A JP 2003290766A JP 3901670 B2 JP3901670 B2 JP 3901670B2
Authority
JP
Japan
Prior art keywords
instruction
register
address
format
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2003290766A
Other languages
English (en)
Other versions
JP2004005738A (ja
JP2004005738A5 (ja
Inventor
雅逸 中島
武 岸田
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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2003290766A priority Critical patent/JP3901670B2/ja
Publication of JP2004005738A publication Critical patent/JP2004005738A/ja
Publication of JP2004005738A5 publication Critical patent/JP2004005738A5/ja
Application granted granted Critical
Publication of JP3901670B2 publication Critical patent/JP3901670B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Description

本発明はCPU又はマイクロプロセッサ等と称されるデータ処理装置の改良に関し、より詳細には、プログラムの小型化に適した命令セットを有するデータ処理装置に関する。
近年の半導体技術とプロセッサアーキテクチャ技術の進展に伴い、CPUと呼ばれるプログラム制御可能なデータ処理装置の性能は著しく向上している。このCPUは、その応用分野によって、大きく2つに分類することができる。第1は汎用マイクロプロセッサであり、第2は各種制御機器や民生用途に用いられる組み込み用マイクロコントローラーである。第1の汎用マイクロプロセッサにおいて、最も重要視される項目は性能の向上であり、性能の向上を図るために、様々な技術が用いられている。これに対し、組み込み用マイクロコントローラーにおいては、性能向上も大きな項目の一つであるが、それにも増して、この性能向上に低コスト及び低消費電力を加えたこれ等3つの項目がバランスよく実現されることが重要である。この中で、特に重要な項目は、民生での応用の観点から、低コストの実現である。
低コストを実現するポイントは2点あり、第1はCPU自体(CPUコア面積)の縮小であり、第2はプログラムサイズ(ROMサイズ)の縮小である。ここで、近年では、CPU性能の向上に伴い、同一のCPUにおいて実現される機能が増大しており、それに応じてアプリケーションプログラムサイズも一層増大しているため、プログラムを格納するROMのサイズが、CPUコアの面積よりも、チップのコストに対して支配的になってきている。従って、如何にプログラムサイズの小さいCPUを提供するかが、低コスト化を実現する大きな課題になっている。
この課題に対処する従来の技術を説明する。この技術は、汎用マイクロプロセッサの命令セットアーキテクチャに追加拡張を施し、プログラムサイズを縮小しようとするものである。
図22に、この従来の技術によるMIPSアーキテクチャに基づくデータ処理装置の命令フォーマットの一例を示す。同図(a)の命令フォーマットは、レジスタ-レジスタ間演算命令について、基本命令語長が32ビット固定のMIPSーII/IIIの命令フォーマットであり、同図(b)の命令フォーマットは、基本命令語長が16ビット固定の命令語長のMIPS16の命令フォーマットである。
MIPSアーキテクチャは、32個のレジスタを備えるため、MIPSーII/IIIの命令フォーマットにおいては、各5ビットのレジスタアドレス指定フィールドがあり、更に、3つのオペランドを指定する命令フォーマットであるため、3つのレジスタアドレス指定フィールドrs、rt、rdを備える。命令の動作及び機能については、6ビットのOPフィールド、5ビットのshamtフィールド、及び6ビットのfuncフィールドを用いて定義されており、全体で32ビット固定長の命令となる。
これに対して、MIPS16の命令セットでは、レジスタ-レジスタ間演算命令として、2種の命令フォーマットが定義されている。1つは、3ビットのレジスタアドレス指定フィールドrx、ryを2つ備え、5ビットのOPフィールド及び5ビットのfuncフィールドを用いて命令の動作及び機能を定義する2つのオペランド指定型の命令フォーマットである。他の一つは、3つの3ビットのレジスタアドレス指定フィールドrx、ry、rzを備え、5ビットのOPフィールド及び2ビットのFフィールドを用いて命令の動作及び機能を定義する3つのオペランド指定型の命令フォーマットである。
同図(b)に示したMIPS16の命令フォーマットでは、レジスタアドレス指定フィールドが3ビットしか使用できないため、元のMIPSーII/IIIのアーキテクチャが備える32個のレジスタセットのうち、全てではなく、一部のレジスタしかアクセスすることができない。
MIPS16の命令フォーマットの命令は、全てMIPSーII/IIIの命令フォーマットに置き換えることが可能であり、MIPS16の命令フォーマットの命令をMIPSーII/IIIの命令フォーマットに置き換えることを命令の伸長と呼ぷ。
図23は、前記MIPS16の命令及びMIPSーII/IIIの命令を実行するデータ処理装置の要部を示すブロック図である。以下に、その動作を説明する。
命令フェッチユニット300は、命令をフェッチするブロックであり、16ビット固定長のMIPS16の命令フォーマットによる命令列、又は、32ビット固定長のMIPSーII/IIIの命令フォーマットによる命令列をフェッチして、命令伸長ユニット310に出力する。命令列がMIPS16の命令フォーマットによるものか、MIPSーII/IIIの命令フォーマットによるものかは、モード設定信号によって常に指定される。
命令伸長ユニット310は、モード設定信号によって制御され、入力されたMIPS16の命令フォーマットをMIPSーII/IIIの命令フォーマットに伸長するブロックであって、入力された命令がMIPSーII/IIIの命令フォーマットの場合には、伸長動作をせずに、そのまま出力する。伸長動作を行うか否かは、モード設定信号によって制御され、命令では判断することができない。モード設定信号は、プログラマブルに変更することが可能であり、任意のタイミングでモードを切り替えることができる。
命令解読器320は、命令伸長ユニット310から出力されたMIPSーII/IIIの命令フォーマットを解読して制御信号を生成するブロックである。この命令解読器320で生成された制御信号により、データ処理装置の動作が制御される。
以上のような構成を有するデータ処理装置においては、基本命令長が16ビットのMIPS16の命令フォーマットによってプログラムされたプログラムと、基本命令長が32ビットのMIPSーII/IIIの命令フォーマットによってプログラムされたプログラムとの双方が実行可能になる。従って、コード量を優先する場合には、16ビット固定長のMIPS16の命令フォーマットを用いてプログラムし、一方、性能を優先して多くのレジスタファイルをアクセスする必要がある場合には、MIPSーII/IIIの命令フォーマットを用いてプログラムすることが可能になり、性能とコードサイズとのトレードオフを取りながら、柔軟なプログラム開発が可能となる。但し、何れの命令フォーマットを使用するのかの選択は、システムによって固定か、又はタスク単位等のある程度の大きさのプログラム単位に限定されることになる。
ところで、マイクロプロセッサにおいて、信号処理等のように多くのレジスタを必要とするアプリケーションを実行する場合には、この信号処理等をより一層高速に行い得る高性能化を目差して、既存のレジスタに複数のレジスタを追加したい要求がある。この場合、既存の命令フォーマットよりも多数のレジスタを指定できる命令フォーマットを作成し、この命令フォーマットを既存の命令フォーマットに代えて使用することも考えられる。しかし、この考えはプログラムサイズが著しく増大する欠点がある。
そこで、前記従来技術を利用した次の技術が考えられる。即ち、既存の命令フォーマットに新たな命令フォーマットを追加し、この新たな命令フォーマットで多数のレジスタを指定する構成とし、この新たな命令フォーマットと既存の命令フォーマットとを前記従来技術のモード設定信号で切換える技術が考えられる。
しかしながら、前記従来技術のモード設定信号を用いる場合には、やはりコード量が増大する欠点を招く。即ち、命令フォーマットの切り換え時には、前記モード設定信号を発生させるための切換命令が必要であり、このため、前記両フォーマットで記述された命令を混在させようとすると、前記切換命令も多数必要とし、その結果、コード量が増大する欠点が生じる。
本発明の目的は、マイクロプロセッサにおいて、既存のレジスタに複数のレジスタを追加する場合に、複数種類の命令フォーマットを使用すると共に、これ等命令フォーマットで記述された混在する命令を前記従来技術のモード設定信号を用いることなく切換えて、コード量を有効に低減することにある。
前記課題を解決するために、本発明では、所定数のレジスタを指定可能な第1の命令フォーマットと、前記所定数を越える多数のレジスタを指定可能な第2の命令フォーマットとを使用し、これ等命令フォーマットをその命令フォーマットで記述された自己の命令自体で識別しながら、信号処理等を多数のレジスタを用いてより一層高速に行うこととする。
即ち、請求項1記載の発明のデータ処理装置は、所定個のレジスタを持つ第1レジスタファイルと、前記第1レジスタファイルのレジスタ数よりも多い個数のレジスタを持つ第2レジスタファイルと、前記第1レジスタファイルのレジスタを指定するための第1レジスタ指定領域を有する第1命令フォーマットで記述される命令と、前記第2レジスタファイルのレジスタを指定するための第2レジスタ指定領域を有する第2命令フォーマットで記述される命令と、前記第2レジスタファイルのレジスタを指定するための第2レジスタ指定領域を有する第3命令フォーマットで記述される命令とを受け、この第1第2及び第3の命令フォーマットで記述される各命令を各々解読する命令解読器と、前記命令解読器が前記第1命令フォーマットで記述される命令及び前記第3命令フォーマットで記述される命令を解読すると、この命令を前記第1レジスタファイルに保持されたデータを用いて実行し、前記命令解読器が前記第2命令フォーマットで記述される命令を解読すると、この命令を前記第2レジスタファイルに保持されたデータを用いて実行する複数個の演算器とを備え、前記第1命令フォーマット及び前記第2命令フォーマットでは、各々、前記複数個の演算器の1つを用いた単一演算命令のみが指定され、前記第3命令フォーマットでは前記複数個の演算器の複数を用いた並列演算命令指定され、前記命令解読器が前記第3命令フォーマットによって指定される並列演算命令を解読すると、それぞれが前記第2レジスタファイルに保持されたデータを用いる複数の演算を、前記複数個の演算器を用いて並列に実行することを特徴とする。
請求項2記載の発明は、前記請求項1に記載のデータ処理装置において、前記第2レジスタ指定領域は、前記第1レジスタ指定領域よりも大きいことを特徴とする。
請求項3記載の発明は、前記請求項1に記載のデータ処理装置において、前記第1命令フォーマットで記述される命令と前記第2命令フォーマットで記述される命令と前記第3命令フォーマットで記述される命令とを保持する命令レジスタを備え、前記命令解読器は、前記命令レジスタから命令が直接に供給されることを特徴とする。
請求項4記載の発明は、前記請求項1に記載のデータ処理装置において、前記命令解読器は、前記第1命令フォーマットで記述される命令を、前記第2又は第3命令フォーマットに変換することなく、解読することを特徴とする。
請求項5記載の発明は、前記請求項1に記載のデータ処理装置において、前記命令解読器は、前記第2及び第3命令フォーマットで記述される命令を、前記第1命令フォーマットに変換することなく、解読することを特徴とする。
請求項6記載の発明は、前記請求項1に記載のデータ処理装置において、前記第2レジスタファイルは、前記第1レジスタファイルが持つ所定個のレジスタを含んで構成されることを特徴とする。
請求項7記載の発明は、前記請求項6に記載のデータ処理装置において、前記命令解読器は、前記第1命令フォーマットで記述される命令を受け、この命令が指定する第1レジスタファイルのレジスタのアドレスを、前記第2又は第3命令フォーマットで記述されるレジスタのアドレスに変換するアドレス変換部を備えることを特徴とする。
請求項8記載の発明は、前記請求項7に記載のデータ処理装置において、前記命令解読器は、各命令を記述する命令フォーマットが前記第1、第2又は第3命令フォーマットであることを識別する識別手段を有し、前記識別手段は、識別された命令フォーマットが前記第1命令フォーマットであるとき、前記アドレス変換部により変換されたアドレスを前記第1レジスタファイルに出力させることを特徴とする。
請求項9記載の発明のデータ処理装置は、複数個の演算器を備え、第1レジスタ指定領域を有する第1の命令コード並びに第2レジスタ指定領域を有する第1及び第2の追加命令コードを実行するデータ処理装置であって、前記第1及び第2の追加命令コード中の前記第2レジスタ指定領域によって指定される基本レジスタ及び拡張レジスタを備え、前記第1の命令コードは、他のデータ処理装置によっても実行される命令コードであり、前記第1及び第2の追加命令コードは前記他のデータ処理装置によっては実行されない命令コードであり、前記第1及び第2の追加命令コードは前記第1の命令コードに対して互換性を有し、前記第1の命令コード及び前記第1の追加命令コードでは前記複数個の演算器の1つを用いた単一演算命令のみが実行され、前記第2の追加命令コードでは前記複数個の演算器の複数を用いた並列演算命令実行され、前記第2の追加命令コードで並列演算命令が実行される場合は、複数の演算のいずれの演算についても前記基本レジスタと前記拡張レジスタとの両方からデータを取り出して演算を行うことができ、前記他のデータ処理装置は、拡張レジスタを有さず、基本レジスタのみを有して、この基本レジスタのみを指定するためにあって前記第2レジスタ指定領域よりもビット幅の小さい前記第1レジスタ指定領域を有する前記第1の命令コードを実行し、前記第1の命令コードは前記拡張レジスタを指定しないことを特徴とする。
以上の構成により、請求項1ないし請求項9記載の本発明では、命令自身が識別手段に入力されて、その命令のフォーマットの種類が識別される。この際、識別手段は、入力された命令自身、例えばその命令の第1番目の命令フィールドの内容に基づいて命令フォーマットの種類を識別する。従って、従来のようにモード設定信号等を発生させるための特別な命令を用いる必要がなく、コード量の無駄な増大がない。従って、異なるフォーマットで記述された複数の命令を混在させながら、プログラムサイズを有効に小さくすることが可能である。
しかも、第1の命令フォーマットで記述された命令では、第1のレジスタファイル内の個数の少ないレジスタのみを指定するのに対し、第2の命令フォーマットで記述された命令では、第2のレジスタファイル内の多数のレジスタを指定し、これにより、これ等多数のレジスタを用いた演算動作を1つの命令で記述できるので、メモリへのアクセス頻度が少なくなって、データ処理が高速化することになる。
以上のことから、プログラムサイズを有効に小さくしながら、使用するレジスタの個数を増やして、データ処理の高速化を図ることが可能である。
更に、本発明では、第3の命令フォーマットには複数の操作が記述されるので、1つの命令でこれ等複数の操作を並列に実行でき、データ処理がより一層高速化する。
加えて、本発明では、同一レジスタに対する命令コード上のビット割付けが、第1及び第2命令フォーマット間で異なる場合であっても、アドレス変換部でのアドレス変換により、同一レジスタのアドレスが同一にされるので、一方の命令フォーマットの命令セットをそのまま使用できる上位互換性が得られる。
更に、本発明では、第2の命令フォーマットが第1レジスタ指定領域よりも大きい第2レジスタ指定領域を有するので、前記第2の命令フォーマットにおいて複数の演算の並列操作を記述することができ、複数の演算の同時実行が可能である。
以上説明したように、請求項1ないし請求項9記載の本発明によれば、第1の命令フォーマットと、この命令フォーマットよりも多数のレジスタを指定できる第2の命令フォーマットとを使用し、これ等の命令フォーマットを用いた命令を混在させつつ、その命令のフォーマットの種類を自己の命令自身で識別し、解読して、実行するので、従来のモード設定信号等を出力する特別の命令を用いる必要をなくして、プログラムサイズを有効に小さくしつつ、1つの命令で多数のレジスタを用いた動作を実行できて、信号処理等のデータ処理の処理速度を高速化できる。
更に、本発明によれば、複数の操作を記述する第3の命令フォーマットを用意したので、1つの命令で複数の操作を並列に実行でき、データ処理を一層高速化できると共に、プログラムサイズの更なる縮小が実現できる。
加えて、本発明によれば、同一レジスタに対する命令コード上のビット割付けが、第1及び第2命令フォーマット間で異なる場合であっても、アドレス変換により、同一レジスタのアドレスが同一にされるので、一方の命令フォーマットの命令セットをそのまま使用できる上位互換性が得られる。
更に、本発明によれば、第1レジスタ指定領域よりも大きい第2レジスタ指定領域を有する第2の命令フォーマットを追加したので、この第2の命令フォーマットにおいて複数の演算の並列操作を記述することができ、複数の演算の同時実行が可能である。
以下、本発明の実施の形態について、図1から図21を用いて説明する。先ず、データ処理装置の構成を説明する前に、本実施の形態で使用する3種の命令フォーマットについて説明する。
図16から図19は、本実施の形態のアーキテクチャに基づく第1の命令フォーマットの概要を示す。
前記第1の命令フォーマットは、最小命令語長を1バイトとした可変長命令であり、レジスタアドレス指定フィールド(レジスタ指定領域)としては、2ビットのフィールドが使用される。従って、1つのレジスタアドレス指定フィールドで4個のレジスタが指定可能である。本アーキテクチャでは、4個のアドレスレジスタと、4個のデータレジスタが定義される。命令動作として、アドレスレジスタを使用するか、データレジスタを使用するかを区別することにより、命令で前記合計8個のレジスタを使用できるように構成される。
図16は、最小命令語長である1バイト目の第1の命令フィールドが、オペレーション指定フィールドと、任意の数のレジスタアドレス指定フィールドとから構成される第1の命令フォーマット(1)のビット割り付けを示したものである。以下、説明する。
第1の命令フォーマット(1)-(a)は、第1の命令フィールド内に2ビットのレジスタアドレス指定フィールドを2フィールド含み、最小命令語長である1バイトで構成される命令フォーマットであり、2つのオペランドが指定可能な命令フォーマットである。
第1の命令フォーマット(1)-(b)は、第1の命令フィールド内に2ビットのレジスタアドレス指定フィールドを2フィールド含み、更に付加情報フィールドを追加して、合計2バイト以上の命令語長を持つ命令フォーマットである。
第1の命令フォーマット(1)-(c)は、第1の命令フィールド内に2ビットのレジスタアドレス指定フィールドを1つ含み、最小命令語長である1バイトで構成される命令フォーマットであり、1つのオペランドが指定可能な命令フォーマットである。
第1の命令フォーマット(1)-(d)は、第1の命令フィールド内に2ビットのレジスタアドレス指定フィールドを1フィールド含み、更に付加情報フィールドを追加した2バイト以上の命令語長を持つ命令フォーマットである。
第1の命令フォーマット(1)-(e)は、第1の命令フィールド内にレジスタアドレス指定フィールドを含まず、最小命令語長である1バイトで構成される命令フォーマットであり、アドレスを用いたオペランド指定不可能な命令フォーマットである。
第1の命令フォーマット(1)-(f)は、第1の命令フィールド内にレジスタアドレス指定フィールドを含まず、更に付加情報フィールドを追加した2バイト以上の命令語長を持つ命令フォーマットである。
図17は、図16で示された個々のビット割り付けについて、具体的な命令のリストの一部を示したものである。左側に命令のニーモニックを、右側に命令の動作を各々示している。
図18は、最小命令語長である1バイト目の第1の命令フィールドが命令語長指定フィールドからなり、第2の命令フィールドが、オペレーション指定フィールドと、任意の数のレジスタアドレス指定フィールドとから構成される第1の命令フォーマット(2)のビット割り付けを示したものである。以下、詳細に説明する。
第1の命令フォーマット(2)-(a)は、第2の命令フィールド内に2ビットのレジスタアドレス指定フィールドを2フィールド含み、2バイトで構成される命令フォーマットであり、2つのオペランドが指定可能な命令フォーマットである。
第1の命令フォーマット(2)-(b)は、第2の命令フィールド内に2ビットのレジスタアドレス指定フィールドを2フィールド含み、更に付加情報フィールドを追加して、合計3バイト以上の命令語長を持つ命令フォーマットである。
第1の命令フォーマット(2)-(c)は、第2の命令フィールド内に2ビットのレジスタアドレス指定フィールドを1つ含み、2バイトで構成される命令フォーマットであり、1つのオペランドが指定可能な命令フォーマットである。
第1の命令フォーマット(2)-(d)は、第2の命令フィールド内に2ビットのレジスタアドレス指定フィールドを1フィールド含み、更に付加情報フィールドを追加した3バイト以上の命令語長を持つ命令フォーマットである。
第1の命令フォーマット(2)-(e)は、第2の命令フィールド内にレジスタアドレス指定フィールドを含まず、2バイトで構成される命令フォーマットであり、アドレスを用いたオペランド指定が不可能な命令フォーマットである。
第1の命令フォーマット(2)-(f)は、第2の命令フィールド内にレジスタアドレス指定フィールド含まず、更に付加情報フィールドを追加した3バイト以上の命令語長を持つ命令フォーマットである。
図19は、図18で示された個々のビット割り付けについて、具体的な命令のリストの一部を示したものである。左側に命令のニーモニックを、右側に命令の動作を各々示している。
従って、前記図16から図19に示した第1の命令フォーマットでは、第1の命令フィールドは、第1から第Mの命令フィールドを最長命令語長Mとして、N命令語長(Nは1〜M間での整数)の可変長命令を特定するものである。また、この第1の命令フォーマットは、最小命令語長が1バイトであるという他にない特徴を備えるので、プログラムサイズの縮小に適した命令フォーマットとなっている。
図20は、本データ処理装置に備える第1のレジスタファイル220を示す。この第1のレジスタファイル220は、4個のアドレスレジスタA0〜A3と、4個のデータレジスタD0〜D3と、スタックポインタSP223と、内部のステータス情報及び制御情報を保持するPSW(Processor Status Word)224と、プログラムカウンタPC225とを含み、読み出しポートを2ポート、書き込みポートを1ポート有する。即ち、同時に2つのレジスタ(重複は可)の読み込みと、1つのレジスタの書き込みとを許す。
更に、図21は、前記第1のレジスタファイル220のアドレスレジスタA0〜A3及びデータレジスタD0〜D3へのアクセスについて、より詳細に示した図である。同図は、命令の中で指定されるレジスタ名と、レジスタアドレス指定フィールドで指定される命令コードでのビット割付と、物理的なレジスタにアクセスするための物理的なレジスタ番号、及びアクセスする対象となる物理的なレジスタ名を一覧にして示したものである。
図21に示すように、第1の命令フォーマットにおいては、4個のアドレスレジスタA0〜A3へアクセスするために命令内に指定される命令アドレス指定フィールドと、4個のデータレジスタD0〜D3へアクセスするために命令内に指定される命令アドレス指定フィールドとは、全く同一である。即ち、レジスタのアドレスを指定するために2ビット命令アドレス指定フィールドを使用し、命令動作そのものでアドレスレジスタにアクセスするか、データレジスタにアクセスするかを区別させている。
次に、本アーキテクチャの基本命令フォーマットである前記図16及び図18の第1の命令フォーマットに対して、追加拡張する第2の命令フォーマットのビット割り付けを図1に、更に追加拡張する第3の命令フォーマットのビット割付けを図3に示す。
図1に示した第2の命令フォーマットのビット割り付けは、最小命令語長である1バイト目の第1の命令フィールドが命令語長指定フィールドからなり、第2及び第3の命令フィールドが、オペレーション指定フィールドと、任意の数のレジスタアドレス指定フィールドとから構成される。第2の命令フォーマットにおけるレジスタアドレス指定フィールドは4ビットから構成される。以下、説明する。
図1において、第2の命令フォーマット(a)は、第3の命令フィールド内に4ビットのレジスタアドレス指定フィールドを2フィールド含み、3バイトで構成される命令フォーマットであり、2つのオペランドが指定可能な命令フォーマットである。
第2の命令フォーマット(b)は、第3の命令フィールド内に4ビットのレジスタアドレス指定フィールドを2フィールド含み、更に付加情報フィールドを追加して、合計4バイト以上の命令語長を持つ命令フォーマットである。
第2の命令フォーマット(c)は、第3の命令フィールド内に4ビットのレジスタアドレス指定フィールドを1つ含み、3バイトで構成される命令フォーマットであり、1つのオペランドが指定可能な命令フォーマットである。
第2の命令フォーマット(d)は、第3の命令フィールド内に4ビットのレジスタアドレス指定フィールドを1フィールド含み、更に付加情報フィールドを追加した4バイト以上の命令語長を持つ命令フォーマットである。
従って、前記第2の命令フォーマットにおいても、第1の命令フィールドは、第1から第Mの命令フィールドを最長命令語長Mとして、N命令語長(Nは1〜M間での整数)の可変長命令を特定する。
図2は、図1で示された個々のビット割り付けについて、具体的な命令のリストの一部を示したものである。左側に命令のニーモニックを、右側に命令の動作を各々示している。ニーモニックの中で、Rm、Rn、又はRiは、レジスタアドレスの指定を表すが、指定できるレジスタとして、4個のアドレスレジスタA0〜A3、4個のデータレジスタD0〜D3、及び8個の拡張レジスタE0〜E7から構成される16個の汎用レジスタである。詳細は、後にレジスタの構成と共に説明する。
図3に示した第3の命令フォーマットのビット割付けは、最小命令語長である1バイト目の第1の命令フィールドが命令語長指定フィールドから成り、第2の命令フィールドが4ビットの第1のオペレーション指定フィールドと4ビットの第2のオペレーション指定フィールドとから構成される。第3及び第4の命令フィールドは、4ビットのレジスタアドレス指定フィールドが2つ、又は4ビットのレジスタアドレス指定フィールドと4ビットのオペレーション指定フィールドとから構成される。第3の命令フォーマットにおけるレジスタアドレス指定フィールドは、4ビットから構成される。この第3の命令フォーマットで記述される命令の中の第2の命令フィールドの第1及び第2のオペレーション指定フィールドで指定されるを、以下、「ユニット」と定義して、詳細に説明する。
前記第3の命令フォーマットで記述される命令を構成する各ユニットは、第2の命令フォーマットで記述される命令のうち、特に使用頻度の高い命令で構成される。これにより、第3の命令フォーマットでは、第2の命令フォーマットに比べて、オペレーション指定フィールドが8ビットから例えば4ビットへと縮小されて、並列実行させる2つの操作を1対のオペレーション指定フィールド内に記述することが可能になる。従って、第3の命令フォーマットでは、記述できる操作の種類は限定されるものの、そのコードサイズは、第2の命令フォーマットで命令を記述する場合に比べて小さくなる。
図3において、第3の命令フォーマット(a)は、4バイトで構成される命令フォーマットであって、第2の命令フィールドが4ビットの第1のオペレーション指定フィールドと4ビットの第2のオペレーションフィールドとから構成され、第3の命令フィールド及び第4の命令フィールド内に4ビットのレジスタアドレス指定フィールドを各々2フィールド含み、4つのオペランドが指定可能な命令フォーマットである。
第3の命令フォーマット(b)は、4バイトで構成される命令フォーマットであって、第2の命令フィールドが4ビットの第1のオペレーション指定フィールドと4ビットの第2のオペレーションフィールドとから構成され、第3の命令フィールドは4ビットのレジスタアドレス指定フィールドと4ビットの第1のオペレーション指定フィールドとから構成され、第4の命令フィールドは4ビットのレジスタアドレス指定フィールド2つから構成され、3つのオペランドが指定可能な命令フォーマットである。
第3の命令フォーマット(c)は、4バイトで構成される命令フォーマットであって、第2の命令フィールドは4ビットの第1のオペレーション指定フィールドと4ビットの第2のオペレーションフィールドとから構成され、第3の命令フィールドは4ビットのレジスタアドレス指定フィールド2つから構成され、第4の命令フィールドは4ビットのレジスタアドレス指定フィールドと4ビットの第2のオペレーション指定フィールドとから構成され、3つのオペランドが指定可能な命令フォーマットである。
第3の命令フォーマット(d)は、4バイトで構成される命令フォーマットであって、第2の命令フィールドは4ビットの第1のオペレーション指定フィールドと4ビットの第2のオペレーションフィールドとから構成され、第3の命令フィールドは4ビットのレジスタアドレス指定フィールドと4ビットの第1のオペレーション指定フィールドとから構成され、第4の命令フィールドは4ビットのレジスタアドレス指定フィールドと4ビットの第2のオペレーション指定フィールドとから構成され、2つのオペランドが指定可能な命令フォーマットである。
第3の命令フォーマット(e)は、4バイトで構成される命令フォーマットであって、第2の命令フィールドは4ビットの第1のオペレーション指定フィールドと4ビットの第2のオペレーションフィールドとから構成され、第3の命令フィールドは4ビットのレジスタアドレス指定フィールド2つから構成され、第4の命令フィールドは4ビットの第1のオペレーション指定フィールドと4ビットの第2のオペレーション指定フィールドとから構成され、2つのオペランドが指定可能な命令フォーマットである。
ここで、第3の命令フォーマットの第2の命令フィールドの第1のオペレーション指定フィールドで指定される第1のユニットと、第2のオペレーション指定フィールドで指定される第2のユニットとは、図2に示した第2の命令フォーマット(a)で記述される命令、又は第2の命令フォーマット(d)で示される命令の即値のビット幅を4ビットに限定した第2の命令フォーマットの命令から構成される。
従って、前記第3の命令フォーマットでは、第1の命令フィールドは、第1から第4の命令フィールドの4命令語長の可変長命令を特定する。
図4は、前記図3で示された個々のビット割り付けについて具体的な命令のリストの一部を示したものである。左側に命令のニーモニックを、右側に命令の動作を各々示している。ニーモニックの中で、Rm1、Rn1、Rm2又はRn2と示されたものは、レジスタアドレスの指定を表すが、指定できるレジスタとしては、アドレスレジスタA0〜A3、データレジスタD0〜D3、拡張レジスタE0〜E7から構成される16個の汎用レジスタである。また、imm4は4ビットの即値を示している。更に、Rm1、Rn1は第2の命令フィールドの第1のオペレーション指定フィールドで指定される第1のユニットで使用され、Rm2、Rn2は第2の命令フィールドの第2のオペレーション指定フィールドで指定される第2のユニットで使用される。詳細は、以下の動作説明と共に説明する。
図5は、本発明における実施の形態のデータ処理装置の全体構成を示すブロック図である。
このデータ処理装置は、命令フェッチステージ(IFステージ)、解読及びレジスタ読み出しステージ(DECステージ)、実行ステージ(EXステージ)、メモリアクセスステージ(MEMステージ)、レジスタ書き込みステージ(WBステージ)の5つのステージからなる5段パイプライン構造を成している。
図5において、101はプログラムを格納する命令メモリ、102は前記命令メモリ101から前記第1又は第2又は第3の命令フォーマットで特定される可変長命令を読み出す命令フェッチ部、103は命令フェッチ部102を介して読み出された可変長命令を格納する命令レジスタである。
110は、前記命令レジスタ103に格納された可変長命令を受け、この可変長命令を解読する命令解読器であって、以下の回路部を持つ。
即ち、命令解読器110内において、111は、命令レジスタ103に格納された可変長命令を解読し、命令フォーマットが第1のフォーマットであるか第2のフォーマットであるか第3のフォーマットであるかを判定する命令型判定部(識別手段)、112は命令レジスタ103に格納された可変長命令が第1の命令フォーマットであるとして、2ビットのレジスタアドレスフィールドを抽出する第1のレジスタアドレス抽出部、113は、第1のレジスタアドレス抽出部112により抽出されたレジスタアドレスフィールドの値を4ビットのレジスタファイルの番号に変換するレジスタアドレス変換部、114は、命令レジスタ103に格納された可変長命令が第2の命令フォーマットであるとして、4ビットのレジスタアドレスフィールドを抽出する第2のレジスタアドレス抽出部、115は命令レジスタ103に格納された可変長命令が第3の命令フォーマットであるとして、4ビットのレジスタアドレスフィールドを抽出し、第1のユニットのレジスタアドレスを第1のレジスタアドレスセレクタ117に供給し、第2のユニットのレジスタアドレスを第2のレジスタアドレスセレクタ118に供給する第3のレジスタアドレス抽出部である。
116は命令レジスタ103に格納された可変長命令を受け、命令解読を行い、演算部に供給する制御信号を生成するオペレーション解読部、117は命令型判定部111の判定結果に従って、レジスタアドレス変換部113からの出力、第2のレジスタアドレス抽出部114からの出力、又は第3のレジスタアドレス抽出部115からの出力を選択的に出力する第1のレジスタアドレスセレクタ、118は前記第2のレジスタアドレス抽出部114からの出力、又は第3のレジスタアドレス抽出部115からの出力を選択的に出力する第2のレジスタアドレスセレクタである。尚、本実施の形態では、レジスタアドレス変換部113は、抽出されたレジスタアドレスを命令フォーマットの種類に拘わらず変換しているが、命令型判定部111の判定動作が早期に終了する場合には、第1の命令フォーマットであると判定された命令の場合にのみアドレス変換を行うように構成してもよいのは勿論である。
レジスタファイル(第2のレジスタファイル)120は、前記図20に示した第1のレジスタファイル220を含み、更に、8個の拡張レジスタE0〜E7を追加して、合計16個の汎用レジスタA0〜A3、D0〜D3、E0〜E7を備える。これ等のレジスタのアドレスは、第1の命令フォーマット又は第2の命令フォーマットの命令の場合、前記命令解読器110の第1のレジスタアドレスセレクタ117から入力され、更に第3の命令フォーマットの命令の場合は、第2のレジスタアドレスセレクタ118からも入力される。この第2のレジスタファイル120は、前記図20に示した第1のレジスタファイル220とは、8個の拡張レジスタE0〜E7を備える点でのみ異なる。他の4個のアドレスレジスタA0〜A3、及び4個のデータレジスタD0〜D3は両レジスタファイル120、220で共用される。
131、132、134、135は、各々、レジスタファイル120からの出力を格納するEXステージのパイプラインレジスタE0レジスタ、E1レジスタ、E2レジスタ、E3レジスタ、133はE0レジスタ131及びE1レジスタ132の内容を用いて算術論理演算を実行する演算器、136はE2レジスタ134及びE3レジスタ135の内容を用いて算術論理演算を実行する演算器である。また、141は演算器133からの出力を格納するMEMステージのパイプラインレジスタであるM0レジスタ、142は演算器136からの出力を格納するMEMステージのパイプラインレジスタであるM1レジスタ、143はM0レジスタ141又はM1レジスタ142の内容でデータを格納するデータメモリ、151はデータメモリ143からの出力を格納するWBステージのパイプラインレジスタであるW0レジスタ、152はデータメモリ143からの出力を格納するWBステージのパイプラインレジスタであるW1レジスタである。
図6は、前記第2のレジスタファイル120を取り出して示したものである。更に、そのうちの汎用レジスタ部分へのアクセスについてより詳細に示したものが図7及び図8である。
図7は、第1の命令フォーマットで定義された命令を実行する際に、命令の中で指定されるレジスタ名と、レジスタアドレス指定フィールドで指定される命令コード上でのビット割り付けと、物理的なレジスタにアクセスするための物理的なレジスタ番号、及び、アクセスする対象となる物理的なレジスタ名を一覧にして示したものである。第1の命令フォーマットでは、レジスタ指定フィールドは2ビットしかないが、汎用レジスタは16個で4ビットのアドレスでアクセスする必要がある関係から、アドレスの変換をする必要がある。例えば、アドレスレジスタA0をアクセスする際には、物理的なアドレス番号として“1000”が、データレジスタD1をアクセスする際には、物理的なアドレス番号として、“1101”を生成し、汎用レジスタファイル121に出力する必要がある。
図8は、第2の命令フォーマットで定義された命令を実行する際に、命令の中で指定されるレジスタ名と、レジスタアドレス指定フィールドで指定される命令コード上でのビット割り付けと、物理的なレジスタにアクセスするための物理的なレジスタ番号、及び、アクセスする対象となる物理的なレジスタ名を一覧にして示したものである。第2の命令フォーマットでは、4ビットのレジスタアドレス指定フィールドを有しているので、その4ビットをそのまま、物理的なレジスタ番号として指定することになる。
以上のように構成された本実施の形態のデータ処理装置について、以下、図5から図8を用いて、その動作を説明する。
図5の命令型判定部111に供給された命令は第1の命令フィールドの特定のビットをデコードすることにより、その命令が第1の命令フォーマットか第2の命令フォーマットか第3の命令フォーマットかを判断し、各々のフォーマットに応じて、制御信号を生成する。この命令フォーマットの種類の識別を以下具体的に説明する。
図24は命令フォーマットの具体例を示す。同図において、第1の命令フォーマット(1)はS0、S1、S2、S4、S6の5通りがあり、1バイトのオペレーションコードOPのみの最小のものと、オペレーションコードOPの後に8、16、32又は48の即値imm、変位d、又は絶対absが配置される2、3、5及び7バイトのものとがある。第1の命令フォーマット(2)はD0、D1、D2、D4、D5の5通りがあり、2バイトのオペレーションコードOPのみの最小のものと、8、16、32又は40の即値imm、変位d、又は絶対absが配置される3、4、6及び7バイトのものとがある。更に、第2の命令フォーマットはT0、T1、T3、T4の4通りがあり、3バイトのオペレーションコードOPのみの最小のものと、8、24又は32の即値imm、変位d、又は絶対absが配置される4、6、及び7バイトのものとがある。第3の命令フォーマットはQ0の1通りであり、4バイトのオペレーションコードOPのみである。図24に示した命令フォーマットでは、オペレーションコードOPのみに着目すると、第2の命令フォーマットT0〜T4の命令フィールドの数(3個)は、第1の命令フォーマット(1)S0〜S6の数(1個)及び第1の命令フォーマット(2)D0〜D5の数(2個)よりも多い。また、第3の命令フォーマットQ0の命令フィールドの数(4個)は、第2の命令フォーマットT0〜T4の数よりも多い。第1の命令フォーマット(1)及び(2)では、少ない領域で記述でき且つ頻繁に使用する命令が割り当てられる。一方、第2の命令フォーマットでは、比較的多い領域を用いて記述され且つさほど使用されない命令が割り当てられる。
図24に示した可変長命令体系では、その種類S0〜S6、D0〜D5、T0〜T4、Q0別に、第1バイトのビットコードが同図に示すように割り当てられる。従って、この第1バイトのビットコードを認識することにより、受けた命令のフォーマットが第1、第2又は第3の命令フォーマットかを一意に識別することができる。尚、本実施の形態では、第1バイトのビットコードのみで命令フォーマットの種類を識別するが、本発明はこれに限定されず、例えば第1バイトに加えて第2バイトの第4ビット(下位ニブルの最上位ビット)等をも利用して識別したり、第1バイトの全体ではなくその一部で識別したり、更には第1バイトに限らず、予め決めた所定バイト目の全体又は一部で命令フォーマットの種類を識別してもよい。
先ず、第1の命令フォーマットにおけるMOV A0,D0 という命令を、実行する際のタイミングを含めて説明する。この命令は、アドレスレジスタA0の内容を読み出してデータレジスタD0に格納するというレジスタ間転送の命令である。
<IFステージ>
命令フェッチ部102が命令メモリ101から命令を読み出して、命令レジスタ103に格納する。
<DECステージ>
命令型判定部111は、命令レジスタ103に格納された命令を解読して、この命令が第1の命令フォーマットによる命令であることを出力する。第1のレジスタアドレス抽出部112は、ソースのレジスタアドレスとしてアドレスレジスタ“00”を、格納先のアドレスとしてデータレジスタのレジスタアドレス“00”を抽出する。レジスタアドレス変換部113は、アドレスレジスタのアドレス“00”を4ビットのアドレス“1000”に、データレジスタのアドレス“00”を4ビットのアドレス“1100”に変換する。第1のレジスタアドレスセレクタ117は、命令型判定部111からの制御信号に応じて、レジスタアドレス変換部113から出力されるアドレスをレジスタファイル120に出力する。オペレーション解読部116は、アドレスレジスタA0からデータレジスタD0へのレジスタ間転送命令であることを解読し、その制御信号を生成する。
レジスタファイル120からは、ソースのオペランドとして、物理アドレス“1000”に対応したアドレスレジスタA0の内容が読み出され、E0レジスタ131に格納される。
<EXステージ>
E0レジスタ131に格納されたデータが演算器133をスルーして、M0レジスタ141に格納される。
<MEMステージ>
M0レジスタ141に格納されたデータがデータメモリ143をスルーして、W0レジスタ151に格納される。
<WBステージ>
W0レジスタに格納されたデータが、物理アドレス“1100”に対応したデータレジスタD0に書き込まれる。
以上説明したような動作により、第1の命令フォーマットによる命令が実行可能となる。
続いて、第2の命令フォーマットにおけるMOV A0,E7 という命令を、実行する際のタイミングを含めて説明する。この命令は、アドレスレジスタA0の内容を読み出して拡張レジスタE7に格納するというレジスタ間転送の命令である。
<IFステージ>
命令フェッチ部102が命令メモリ101から命令を読み出して、命令レジスタ103に格納する。
<DECステージ>
命令型判定部111は、命令レジスタ103に格納された命令を解読して、この命令が第2の命令フォーマットによる命令であることを出力する。第2のレジスタアドレス抽出部114は、ソースのレジスタアドレスとして“1000”を、格納先のアドレスとしてレジスタアドレス“0111”を抽出する。第1のレジスタアドレスセレクタ117は、命令型判定部111からの制御信号に応じて、第2のレジスタアドレス抽出部114から出力されるアドレスをレジスタファイル120に出力する。オペレーション解読部116は、アドレスレジスタA0から拡張レジスタE7へのレジスタ間転送命令であることを解読し、その制御信号を生成する。
レジスタファイル120からは、ソースのオペランドとして、物理アドレス“1000”に対応したアドレスレジスタA0の内容が読み出され、E0レジスタ131に格納される。
<EXステージ>
E0レジスタ131に格納されたデータが演算器133をスルーして、M0レジスタ141に格納される。
<MEMステージ>
M0レジスタ141に格納されたデータがデータメモリ143をスルーして、W0レジスタ151に格納される。
<WBステージ>
W0レジスタに格納されたデータが、物理アドレス“0111”に対応した拡張レジスタE7に書き込まれる。
以上説明したような動作により、第2の命令フォーマットによる命令が実行可能となる。
更に、第3の命令フォーマットにおける MOV_MOV E5,E6,E4,E7 という命令を実行する際のタイミングを含めて説明する。この命令は、拡張レジスタE5の内容を読み出して拡張レジスタE6に格納し、同時に拡張レジスタE4の内容を読み出して拡張レジスタE7に格納するという並列レジスタ間転送命令である。
<IFステージ>
命令フェッチ部102が命令メモリ101から命令を読み出して、命令レジスタ103に格納する。
<DECステージ>
命令型判定部111は、命令レジスタ103に格納された命令を解読して、この命令が第3の命令フォーマットによる命令であることを出力する。
第3のレジスタアドレス抽出部115は、第1の転送命令のソースのレジスタアドレスとして“0101”と、格納先のアドレスとしてレジスタアドレス“0110”とを抽出する。更に、第2の転送命令のソースのレジスタアドレスとして“0100”と、格納先のアドレスとしてレジスタアドレス“0111”とを抽出する。
第1のレジスタアドレスセレクタ117は、命令型判定部111からの制御信号に応じて、第3のレジスタアドレス抽出部115から出力される第1のアドレスをレジスタファイル120に出力する。更に、レジスタアドレスセレクタ118は命令型判定部111からの制御信号に応じて、第3のレジスタアドレス抽出部115から出力される第2のアドレスをレジスタファイル120に出力する。
オペレーション解読部116は、拡張レジスタE5から拡張レジスタE6及び拡張レジスタE4から拡張レジスタE7への並列レジスタ間転送のVLIW命令であることを解読し、制御信号を生成する。
レジスタファイル120からは、第1のソースのオペランドとして、物理アドレス“0101”に対応した拡張レジスタE5の内容が読み出され、E0レジスタ131に格納される。同時に、第2のソースのオペランドとして、物理アドレス“0100”に対応した拡張レジスタE4の内容が読み出され、E2レジスタ134に格納される。
<EXステージ>
E0レジスタ131に格納されたデータが演算器133をスルーしてM0レジスタ141に格納され、同時に、E2レジスタ131に格納されたデータが演算器136をスルーしてM1レジスタ142に格納される。
<MEMステージ>
M0レジスタ141に格納されたデータがデータメモリ143をスルーしてW0レジスタ151に格納され、同時にM1レジスタ142に格納されたデータがデータメモリ143をスルーしてW1レジスタ152に格納される。
<WBステージ>
W0レジスタ151に格納されたデータが、物理アドレス“0110”に対応した拡張レジスタE6に書き込まれ、同時にW1レジスタ152に格納されたデータが、物理アドレス“0111”に対応した拡張レジスタE7に書き込まれる。
以上説明したような動作により、第3の命令フォーマットによる命令が実行される。
これ等の説明により明確なように、本実施の形態のデータ処理装置は、第1の命令フォーマットと第2の命令フォーマットと更に第3の命令フォーマットとで記述された各命令を、モード等の切り替えなく、何れも実行可能であり、コードサイズ縮小に最適化された命令セットに対して、その上位互換性を保持しながら、使用できるレジスタ数を大幅に拡張したデータ処理装置となっている。
次に、第1の命令フォーマットによる命令と第2の命令フォーマットによる命令との使い方について、例を上げて説明する。
図9にC言語で書かれたプログラムの短い例を示す。変数aの内容を変数bの内容と加算して変数aに格納し、変数cの内容を変数dの内容と加算して変数cに格納するという簡単なものである。
このプログラムが第1の命令フォーマットの命令にコンパイルされた結果の例を、図10、図11及び図12に示す。
図10は、データレジスタに全ての変数が割り当てられた場合の命令列であり、変数aをデータレジスタD0に、変数bをデータレジスタD1に、変数cをデータレジスタD2に、変数dをデータレジスタD3に割り付けできた場合の命令列である。この場合は、2つの加算命令で実現可能であるが、元々4個しかデータレジスタが存在しないため、全てがレジスタに割り付けられることは難しい。
図11は、データメモリ上のスタック領域に各変数が割り付けられた場合の命令列であり、変数aを(SP+#4)に、変数bを(SP+#8)に、変数cを(SP+#12)に、変数dを(SP+#16)に割り付けできた場合の命令列である。この場合は、2つの加算命令に加えて、メモリレジスタ間でのデータ転送命令(命令1、命令2、命令4、命令5、命令6、命令8)が発生し、大きく処理性能を落とすことになる。
図12は、図11の場合に、加算に使用しているデータレジスタD0、データレジスタD1の内容を退避、復帰するためのデータ転送命令(命令1、命令2、命令11、命令12)が追加されたものであり、非破壊レジスタしか使用できない場合は、このような命令列になる。
これに対して、図13は、第2の命令フォーマットを使用して、拡張レジスタに全ての変数を割り付けた場合の命令列を示している。変数aを拡張レジスタE0に、変数bを拡張レジスタE1に、変数cを拡張レジスタE2に、変数dを拡張レジスタE3に割り付けできた場合の命令列である。この場合は、2つの加算命令で実現可能となる。拡張レジスタにも数量的な制限が存在するために、常に拡張レジスタで十分なレジスタを確保できるとは限らないが、使用可能なレジスタ数が大きく増加することにより、レジスタ数が少ないためにメモリアクセスが頻発して性能を落とすことが少なくなる。従って、信号処理のように多くのレジスタを必要とするアプリケーションプログラムを短時間で実行しようとする場合には、拡張レジスタE0〜E7を追加すると共に、第2の命令フォーマットの命令を使用することにより、メモリとのアクセス回数を少なく制限できて、処理性能の向上を図ることができる。
しかも、本実施の形態では、同一のレジスタに対して、第1の命令フォーマットで指定するアドレスと、第2の命令フォーマットで指定するアドレスとが異なっていても、第1の命令フォーマットで指定するアドレスを変換して、前記第2の命令フォーマットで指定するアドレスに一致させたので、拡張レジスタを追加してレジスタ数を増加させた場合であっても、第1の命令フォーマットを使用できて、完全な上位互換性を保持しながら、第2の命令フォーマットを使用できて、レジスタの追加に柔軟に対応できるという顕著な効果も得られる。
次に、第3の命令フォーマットによる命令の使い方について、例を挙げて説明する。
図14に第3の命令フォーマットの命令を使用せずに記述したソフトモデム等のメディア処理に用いられるFIRフィルタの主要部のプログラムを示す。オペランド部の右に各々の命令のコードサイズを示している。
命令1は第1の命令フォーマットのレジスタ-メモリ間のハーフワード転送命令(ストア)を示し、命令2は第2の命令フォーマットのハーフワードスワップ(入れ換え)命令を、命令3は第2の命令フォーマットのレジスタ-メモリ間のハーフワード転送命令(ストア)を示し、命令4は第2の命令フォーマットのハーフワード並列累積積和演算命令を、命令5は第2の命令フォーマットの減算命令、命令6及び命令7は第2の命令フォーマットのメモリ-レジスタ間の転送命令(ロード)、命令8は第1の命令フォーマットの条件分岐命令を各々示している。
以下、詳細にその動作タイミングについて述べる。
命令1 MOVH D0,(#-6,A3) は、第1の命令フォーマットにおける命令でデータレジスタD0の値を、アドレスレジスタA3に格納されたアドレス値から“6”を引いたメモリアドレスに格納するというレジスタ-メモリ間転送(ストア)の命令である。
<IFステージ>
命令フェッチ部102が命令メモリ101から命令を読み出して、命令レジスタ103に格納する。
<DECステージ>
命令型判定部111は、命令レジスタ103に格納された命令を解読して、この命令が第1の命令フォーマットによる命令であることを出力する。第1のレジスタアドレス抽出部112は、ソースのデータアドレスとして、データレジスタのアドレス“00”とアドレスレジスタのアドレス”11”とを抽出する。レジスタアドレス変換部113は、データレジスタのアドレス“00”を4ビットのアドレス“1100”に、アドレスレジスタのアドレス“11”を4ビットのアドレス“1011”に変換する。
第1のレジスタアドレスセレクタ117は、命令型判定部111からの制御信号に応じて、レジスタアドレス変換部113から出力されるデータレジスタの4ビットのアドレス“1100”と、アドレスレジスタの4ビットのアドレス“1011”とを、レジスタファイル120に出力する。
オペレーション解読部116は、データレジスタD0の値を、アドレスレジスタA3に格納されたアドレス値から“6”を引いたメモリアドレスに格納するというレジスタ-メモリ間転送(ストア)の命令であることを解読し、その制御信号を生成する。
レジスタファイル120からは、ソースのオペランドとして、物理アドレス“1100”に対応したデータレジスタD0の内容が読み出され、その内容がE0レジスタ131に格納されると共に、物理アドレス“1011”に対応したアドレスレジスタA3の内容が読み出され、その内容がE1レジスタ132に格納される。
<EXステージ>
E0レジスタ131に格納されたデータが演算器133をスルーして、M0レジスタ141に格納され、E1レジスタ132に格納されたアドレスは、オペレーション解読部116からの制御信号によって“6”だけ減算処理され、その演算結果をデータメモリ143のアドレス入力部に出力する。
<MEMステージ>
M0レジスタ141に格納されたデータが、演算器133の演算結果で得られたアドレス値のデータメモリ143に格納される。
<WBステージ>
オペレーションはない。
命令2 SWHW E0,E2 は、第2の命令フォーマットにおける命令で拡張レジスタE0の上位ハーフワードと下位ハーフワードとを入れ換えたデータを拡張レジスタE2に格納する命令である。
<IFステージ>
命令フェッチ部102が命令メモリ101から命令を読み出して、命令レジスタ103に格納する。
<DECステージ>
命令型判定部111は、命令レジスタ103に格納された命令を解読して、この命令が第2の命令フォーマットによる命令であることを出力する。第2のレジスタアドレス抽出部114は、ソースのデータアドレスとして”0000”を、格納先のアドレスとしてレジスタアドレス“0010”を抽出する。
第1のレジスタアドレスセレクタ117は、命令型判定部111からの制御信号に応じて、第2のレジスタアドレス抽出部114から出力されるアドレスをレジスタファイル120に出力する。オペレーション解読部116は、拡張レジスタE0の上位ハーフワードと下位ハーフワードを入れ換えたデータを拡張レジスタ E2に格納する命令であることを解読し、その制御信号を生成する。
レジスタファイル120からは、ソースのオペランドとして、物理アドレス“0000”に対応した拡張レジスタE0の内容が読み出され、この内容がE0レジスタ131に格納される。
<EXステージ>
E0レジスタ131に格納されたデータを入力とし、演算器133はオペレーション解読部116から供給される制御信号を元に、その上位ハーフワードと下位ハーフワードとを入れ換えたデータを生成し、その結果をM0レジスタ141に格納する。
<MEMステージ>
M0レジスタ141に格納されたデータがデータメモリ143をスルーし、W0レジスタ151に格納される。
<WBステージ>
W0レジスタ151に格納されたデータが読み出され、このデータが、レジスタファイル120の第2のレジスタアドレス抽出部112が出力する格納先アドレス”0010”に格納される。
命令3 MOVH E2,(#-4,A3) は、第2の命令フォーマットにおける命令で拡張レジスタE2の値を、アドレスレジスタA3に格納されたアドレス値から“4”を引いたメモリアドレスに格納するというレジスタ-メモリ間転送(ストア)の命令である。
<IFステージ>
命令フェッチ部102が命令メモリ101から命令を読み出して、命令レジスタ103に格納する。
<DECステージ>
命令型判定部111は、命令レジスタ103に格納された命令を解読して、この命令が第2の命令フォーマットによる命令であることを出力する。第1のレジスタアドレス抽出部112は、ソースのデータアドレスとしてアドレスレジスタのアドレス”11”を抽出する。第2のレジスタアドレス抽出部114は、ソースのデータアドレスとして拡張レジスタのアドレス”0010”を抽出する。レジスタアドレス変換部113は、アドレスレジスタのアドレス“11”を4ビットのアドレス“1011”に 変換する。
第1のレジスタアドレスセレクタ117は、命令型判定部111からの制御信号に応じて、レジスタアドレス変換部113から出力されるアドレスレジスタの4ビットのアドレス“1011”と、拡張レジスタの4ビットのアドレス“0010”とを、レジスタファイル120に出力する。
オペレーション解読部116は、拡張レジスタE2の値を、アドレスレジスタA3に格納されたアドレス値から“4”を引いたメモリアドレスに格納するというレジスタ-メモリ間転送(ストア)の命令であることを解読し、その制御信号を生成する。
レジスタファイル120からは、ソースのオペランドとして、物理アドレス“0010”に対応した拡張レジスタE2の内容が読み出され、その内容がE0レジスタ131に格納されると共に、物理アドレス“1011”に対応したアドレスレジスタA3の内容が読み出され、その内容がE1レジスタ132に格納される。
<EXステージ>
E0レジスタ131に格納されたデータが演算器133をスルーして、M0レジスタ141に格納され、E1レジスタ132に格納されたアドレスは、オペレーション解読部116からの制御信号によって“4”だけ減算処理され、その演算結果をデータメモリ143のアドレス入力部に出力する。
<MEMステージ>
M0レジスタ141に格納されたデータが、演算器133の演算結果で得られたアドレス値のデータメモリ143に格納される。
<WBステージ>
オペレーションはない。
命令4 DMACH E6,E1 は、第2の命令フォーマットにおける命令で拡張レジスタE6の上位ハーフワードと拡張レジスタE1の上位ハーフワードとの乗算結果と、拡張レジスタE6の下位ハーフワードと拡張レジスタE1の下位ハーフワードとの乗算結果とを加算し、その加算結果を拡張レジスタE1に累算する演算命令である。
<IFステージ>
命令フェッチ部102が命令メモリ101から命令を読み出して、命令レジスタ103に格納する。
<DECステージ>
命令型判定部111は、命令レジスタ103に格納された命令を解読して、この命令が第2の命令フォーマットによる命令であることを出力する。第2のレジスタアドレス抽出部114は、ソースのデータアドレスとして”0110”を、格納先のアドレスとしてレジスタアドレス“0001”を抽出する。
第1のレジスタアドレスセレクタ117は、命令型判定部111からの制御信号に応じて、第2のレジスタアドレス抽出部114から出力されるアドレスをレジスタファイル120に出力する。オペレーション解読部116は、拡張レジスタE6の上位ハーフワードと拡張レジスタE1の上位ハーフワードとの乗算結果と、拡張レジスタE6の下位ハーフワードと拡張レジスタE1の下位ハーフワードとの乗算結果とを加算し、その加算結果を拡張レジスタE1に累算する演算命令であることを解読し、その制御信号を生成する。
レジスタファイル120からは、ソースのオペランドとして物理アドレス“0110”に対応した拡張レジスタE6の内容が読み出され、その内容がE0レジスタ131に格納され、ソースのオペランドとして物理アドレス”0001”に対応した拡張レジスタE1の内容が読み出される。
<EXステージ>
演算器133において、E0レジスタ131に格納されたデータの上位ハーフワードとE1レジスタ132に格納されたデータの上位ハーフワードとが抽出され、これ等の乗算が実行され、同時に、E0レジスタ131に格納されたデータの下位ハーフワードとE1レジスタ132に格納されたデータの下位ハーフワードとが抽出され、これ等の乗算が実行され、この2つの乗算結果とE1レジスタ132に格納されたデータとの加算が実行され、その加算結果がM0レジスタ141に格納される。
<MEMステージ>
M0レジスタ141に格納されたデータがデータメモリ143をスルーし、W0レジスタ151に格納される。
<WBステージ>
W0レジスタ151に格納されたデータが読み出され、このデータが、レジスタファイル120の第2のレジスタアドレス抽出部114が出力する格納先アドレス”0001”に格納される。
命令5 SUB 1,E3 は、第2の命令フォーマットにおける命令で拡張レジスタ E3に格納された値から“1”の減算を実行し、その演算結果を拡張レジスタE3に格納する演算命令である。
<IFステージ>
命令フェッチ部102が命令メモリ101から命令を読み出して、命令レジスタ103に格納する。
<DECステージ>
命令型判定部111は、命令レジスタ103に格納された命令を解読して、この命令が第2の命令フォーマットによる命令であることを出力する。第2のレジスタアドレス抽出部114は、ソースのデータアドレスとして”0011”を、格納先のアドレスとしてレジスタアドレス“0011”を抽出する。
第1のレジスタアドレスセレクタ117は、命令型判定部111からの制御信号に応じて、第2のレジスタアドレス抽出部114から出力されるアドレスをレジスタファイル120に出力する。オペレーション解読部116は、拡張レジスタ E3から“1”だけ減算する演算命令であることを解読し、その制御信号を生成する。
レジスタファイル120からは、ソースのオペランドとして、物理アドレス“0011”に対応した拡張レジスタE3の内容が読み出され、その内容がE0レジスタ131に格納される。
<EXステージ>
演算器133において、E0レジスタ131に格納されたデータが読み出され、“1”の減算が実行され、その結果がM0レジスタ141に格納される。
<MEMステージ>
M0レジスタ141に格納されたデータがデータメモリ143をスルーし、W0レジスタ151に格納される。
<WBステージ>
W0レジスタ151に格納されたデータが読み出され、このデータが、レジスタファイル120の第2のレジスタアドレス抽出部114が出力する格納先アドレス”0011”に格納される。
命令6 MOV (#4,E4+),E6 は、第2の命令フォーマットにおける命令で拡張レジスタE4で示されるメモリアドレスからデータを読み出し、このデータを拡張レジスタE6に格納し、データ格納後、拡張レジスタE4の値を“4”だけ加算するポストインクリメントメモリ-レジスタ間転送命令である。
<IFステージ>
命令フェッチ部102が命令メモリ101から命令を読み出して、命令レジスタ103に格納する。
<DECステージ>
命令型判定部111は、命令レジスタ103に格納された命令を解読して、この命令が第2の命令フォーマットによる命令であることを出力する。第2のレジスタアドレス抽出部114は、ソースのデータアドレスとして”0100”を、格納先のアドレスとしてレジスタアドレス“0110”を抽出する。
第1のレジスタアドレスセレクタ117は、命令型判定部111からの制御信号に応じて、第2のレジスタアドレス抽出部114から出力されるアドレスをレジスタファイル120に出力する。オペレーション解読部116は、拡張レジスタ E4で示されるメモリアドレスからデータを読み出し、このデータを拡張レジスタE6に格納し、データ格納後、拡張レジスタE4の値を“4”だけ加算するポストインクリメントメモリ-レジスタ間転送命令であることを解読し、その制御信号を生成する。
レジスタファイル120からは、ソースのオペランドとして物理アドレス”0100”に対応した拡張レジスタE4の内容が読み出され、この内容がE0レジスタ131に格納される。
<EXステージ>
演算器133において、E0レジスタ131に格納されたデータが読み出され、このデータをオペレーション解読部116からの制御信号によってデータメモリ143のアドレス入力部に出力する。また、“4”の加算を実行し、その結果がM0レジスタ141に格納される。
<MEMステージ>
M0レジスタ141に格納されたデータがデータメモリ143をスルーし、W0レジスタ151に格納される。また、オペレーション解読部116からの制御信号により、指定されるメモリアドレスのデータメモリ143からデータを読み出し、W0レジスタ151に格納する。
<WBステージ>
W0レジスタ151に格納されたデータが読み出され、このデータが、レジスタファイル120の第2のレジスタアドレス抽出部114が出力する格納先アドレス”0110”に格納される。
命令7 MOV (#4,E5+),E1 は、第2の命令フォーマットにおける命令で拡張レジスタE5で示されるメモリアドレスからデータを読み出して、拡張レジスタE1に格納し、データ格納後、拡張レジスタE5の値を“4”だけ加算するポストインクリメントメモリ-レジスタ間転送命令である。
<IFステージ>
命令フェッチ部102が命令メモリ101から命令を読み出して、命令レジスタ103に格納する。
<DECステージ>
命令型判定部111は、命令レジスタ103に格納された命令を解読して、この命令が第2の命令フォーマットによる命令であることを出力する。第2のレジスタアドレス抽出部114は、ソースのデータアドレスとして”0101”を、格納先のアドレスとしてレジスタアドレス“0001”を抽出する。
第1のレジスタアドレスセレクタ117は、命令型判定部111からの制御信号に応じて、第2のレジスタアドレス抽出部114から出力されるアドレスをレジスタファイル120に出力する。オペレーション解読部116は、拡張レジスタE5で示されるメモリアドレスからデータを読み出し、このデータを拡張レジスタE1に格納し、このデータ格納後、拡張レジスタE5の値を“4”だけ加算するポストインクリメントメモリ-レジスタ間転送命令であることを解読し、その制御信号を生成する。
レジスタファイル120からは、ソースのオペランドとして物理アドレス”0101”に対応した拡張レジスタE5の内容が読み出され、この内容がE0レジスタ131に格納される。
<EXステージ>
演算器133において、E0レジスタ131に格納されたデータが読み出され、このデータが、オペレーション解読部116からの制御信号によってデータメモリ143のアドレス入力部に出力される。また、“4”の加算を実行し、その結果がM0レジスタ141に格納される。
<MEMステージ>
M0レジスタ141に格納されたデータがデータメモリ143をスルーし、W0レジスタ151に格納される。また、オペレーション解読部116からの制御信号によって、指定されるメモリアドレスのデータメモリ143からデータを読み出し、このデータをW0レジスタ151に格納する。
<WBステージ>
W0レジスタ151に格納されたデータが読み出され、このデータは、レジスタファイル120の第2のレジスタアドレス抽出部114が出力する格納先アドレス”0001”に格納される。
命令8 LGE は、第1の命令フォーマットにおける命令で前記命令4で実行された減算命令の結果が“0”以上の値の場合には、前記命令1の前に示されるLOOP 番地にプログラムカウンタ124の値を変更し、ループ命令を実行する命令である。
<IFステージ>
命令フェッチ部102が命令メモリ101から命令を読み出して、命令レジスタ103に格納する。
<DECステージ>
命令型判定部111は、命令レジスタ103に格納された命令を解読して、この命令が第1の命令フォーマットによる命令であることを出力する。オペレーション解読部116はループ命令であることを解読し、その制御信号を生成する。
オペレーション制御部116から出力される制御信号に基づいてレジスタファイル120内のプログラムカウンタ124の値がE0レジスタ131に格納される。
<EXステージ>
演算器133において、E0レジスタ131に格納されたデータが読み出され、オペレーション解読部116から出力される制御信号に基づいて、ループの飛び先アドレス値がM0レジスタ141に格納される。
<MEMステージ>
M0レジスタ141に格納されたデータがデータメモリ143をスルーし、W0レジスタ151に格納される。
<WBステージ>
W0レジスタ151に格納されたデータが、レジスタファイル120内のプログラムカウンタ124に格納される。
以上、図14で示した命令において、命令3及び命令5は4バイト命令、命令1、命令2、命令4、命令6及び命令7は3バイト命令、命令8は1バイト命令である。図14で示した命令はトータルで24バイトのコードサイズとなっている。
図15は、前記図14に示した命令を第3の命令フォーマットを用いて書き換えた命令を示している。図14の命令4及び命令5をマージして命令4”DMACH_SUB”に、図14の命令7及び命令8をマージして命令6”MOV_LGE”に各々置き換えている。
図15で示した命令は、各々、命令1は第1の命令フォーマットのメモリへのハーフワード転送命令を示し、命令2は第2の命令フォーマットのハーフワードスワップ(入れ換え)命令を、命令3は第2の命令フォーマットのメモリへのハーフワード転送命令を示し、命令4はハーフワード並列積和演算命令及び即値減算命令の並列実行命令を、命令5は第2の命令フォーマットのメモリからの転送命令を、命令6はメモリからのデータ転送及びと条件分岐の並列実行命令を示している。
以下、詳細にその動作タイミングについて述べる。
命令1 MOVH D0,(#-6,A3) は、第1の命令フォーマットにおける命令でデータレジスタD0の値を、アドレスレジスタA3に格納されたアドレス値から“6”を引いたメモリアドレスに格納するというレジスタ-メモリ間転送(ストア)の命令である。
<IFステージ>
命令フェッチ部102が命令メモリ101から命令を読み出して、命令レジスタ103に格納する。
<DECステージ>
命令型判定部111は、命令レジスタ103に格納された命令を解読して、この命令が第1の命令フォーマットによる命令であることを出力する。第1のレジスタアドレス抽出部112は、ソースのデータアドレスとしてデータレジスタのアドレス“00”とアドレスレジスタのアドレス”11”とを抽出する。レジスタアドレス変換部113は、データレジスタのアドレス“00”を4ビットのアドレス“1100”に、アドレスレジスタのアドレス“11”を4ビットのアドレス“1011”に各々変換する。
第1のレジスタアドレスセレクタ117は、命令型判定部111からの制御信号に応じて、レジスタアドレス変換部113から出力されるデータレジスタの4ビットのアドレス“1100”と、アドレスレジスタの4ビットのアドレス“1011”とを、レジスタファイル120に出力する。
オペレーション解読部116は、データレジスタD0の値を、アドレスレジスタA3に格納されたアドレス値から“6”を引いたメモリアドレスに格納するというレジスタ-メモリ間転送(ストア)の命令であることを解読し、その制御信号を生成する。
レジスタファイル120からは、ソースのオペランドとして、物理アドレス“1100”に対応したデータレジスタD0の内容が読み出され、その内容がE0レジスタ131に格納され、物理アドレス“1011”に対応したアドレスレジスタA3の内容が読み出され、その内容がE1レジスタ132に格納される。
<EXステージ>
E0レジスタ131に格納されたデータが演算器133をスルーして、Mレジスタ141に格納され、E1レジスタ132に格納されたアドレスは、オペレーション解読部116からの制御信号によって“6”だけ減算処理され、その演算結果をデータメモリ143のアドレス入力部に出力する。
<MEMステージ>
M0レジスタ141に格納されたデータが、演算器133の演算結果で得られたアドレス値のデータメモリ143に格納される。
<WBステージ>
オペレーションはない。
命令2 SWHW E0,E2 は、第2の命令フォーマットにおける命令で拡張レジスタ E0の上位ハーフワードと下位ハーフワードとを入れ換えたデータを拡張レジスタE2に格納する命令である。
<IFステージ>
命令フェッチ部102が命令メモリ101から命令を読み出して、命令レジスタ103に格納する。
<DECステージ>
命令型判定部111は、命令レジスタ103に格納された命令を解読して、この命令が第2の命令フォーマットによる命令であることを出力する。第2のレジスタアドレス抽出部114は、ソースのデータアドレスとして”0000”を、格納先のアドレスとしてレジスタアドレス“0010”を抽出する。
第1のレジスタアドレスセレクタ117は、命令型判定部111からの制御信号に応じて、第2のレジスタアドレス抽出部114から出力されるアドレスをレジスタファイル120に出力する。オペレーション解読部116は、拡張レジスタ E0の上位ハーフワードと下位ハーフワードとを入れ換えたデータを拡張レジスタE2に格納する命令であることを解読し、その制御信号を生成する。
レジスタファイル120からは、ソースのオペランドとして、物理アドレス“0000”に対応した拡張レジスタE0の内容が読み出され、その内容がE0レジスタ131に格納される。
<EXステージ>
演算器133は、E0レジスタ131に格納されたデータを入力とし、演算器133はオペレーション解読部116から供給される制御信号を元に、その上位ハーフワードと下位ハーフワードとを入れ換えたデータを生成し、その結果をM0レジスタ141に格納する。
<MEMステージ>
M0レジスタ141に格納されたデータがデータメモリ143をスルーし、W0レジスタ151に格納される。
<WBステージ>
W0レジスタ151に格納されたデータが読み出され、このデータがレジスタファイル120の第2のレジスタアドレス抽出部114が出力する格納先アドレス”0010”に格納される。
命令3 MOVH E2,(#-4,A3) は、第2の命令フォーマットにおける命令で拡張レジスタE2の値を、アドレスレジスタA3に格納されたアドレス値から“4”を引いたメモリアドレスに格納するというレジスタ->メモリ間転送(ストア)の命令である。
<IFステージ>
命令フェッチ部102が命令メモリ101から命令を読み出して、命令レジスタ103に格納する。
<DECステージ>
命令型判定部111は、命令レジスタ103に格納された命令を解読して、この命令が第2の命令フォーマットによる命令であることを出力する。第1のレジスタアドレス抽出部112は、ソースのデータアドレスとしてアドレスレジスタのアドレス”11”を抽出する。第2のレジスタアドレス抽出部114は、ソースのデータアドレスとして拡張レジスタのアドレス”0010”を抽出する。レジスタアドレス変換部113は、アドレスレジスタのアドレス“11”を4ビットのアドレス“1011”に変換する。
第1のレジスタアドレスセレクタ117は、命令型判定部111からの制御信号に応じて、レジスタアドレス変換部113から出力されるアドレスレジスタの4ビットのアドレス“1011”と、拡張レジスタの4ビットのアドレス“0010”とを、レジスタファイル120に出力する。
オペレーション解読部116は、拡張レジスタE2の値を、アドレスレジスタA3に格納されたアドレス値から“4”を引いたメモリアドレスに格納するというレジスタ-メモリ間転送(ストア)の命令であることを解読し、その制御信号を生成する。
レジスタファイル120からは、ソースのオペランドとして、物理アドレス“0010”に対応した拡張レジスタE2の内容が読み出され、その内容がE0レジスタ131に格納され、物理アドレス“1011”に対応したアドレスレジスタA3の内容が読み出され、その内容がE1レジスタ132に格納される。
<EXステージ>
E0レジスタ131に格納されたデータが演算器133をスルーして、M0レジスタ141に格納され、E1レジスタ132に格納されたアドレスは、オペレーション解読部116からの制御信号によって“4”だけ減算処理され、その演算結果をデータメモリ143のアドレス入力部に出力する。
<MEMステージ>
M0レジスタ141に格納されたデータが、演算器133の演算結果で得られたアドレス値のデータメモリ143に格納される。
<WBステージ>
オペレーションはない。
命令4 DMACH_SUB E6,E1,1,E3 は、第3の命令フォーマットにおける命令で拡張レジスタE6の上位ハーフワードと拡張レジスタE1の上位ハーフワードとの乗算結果と、拡張レジスタE6の下位ハーフワードと拡張レジスタE1の下位ハーフワードとの乗算結果とを加算し、その加算結果を拡張レジスタE1に累算するユニットと、拡張レジスタE3から“1”だけ減算するユニットとから構成され、これ等のユニットを並列に実行する命令である。
<IFステージ>
命令フェッチ部102が命令メモリ101から命令を読み出して、命令レジスタ103に格納する。
<DECステージ>
命令型判定部111は、命令レジスタ103に格納された命令を解読して、この命令が第3の命令フォーマットによる命令であることを出力する。第2のレジスタアドレス抽出部114は、ソースのデータアドレスとして”0110”を、格納先のアドレスとしてレジスタアドレス“0001”を抽出する。また、第3のレジスタアドレス抽出部115は、ソース及び格納先のデータアドレスとして、”0011”を抽出する。
第1のレジスタアドレスセレクタ117は、命令型判定部111からの制御信号に応じて、第2のレジスタアドレス抽出部114から出力されるアドレスをレジスタファイル120に出力する。オペレーション解読部116は、拡張レジスタE0の上位ハーフワードと拡張レジスタE1の上位ハーフワードとの乗算結果と、拡張レジスタE6の下位ハーフワードと拡張レジスタE1の下位ハーフワードとの乗算結果とを加算し、その加算結果を拡張レジスタE1に累算する演算命令であることを解読し、その制御信号を生成する。
レジスタファイル120からは、ソースのオペランドとして、物理アドレス“0110”に対応した拡張レジスタE6の内容が読み出され、その内容がE0レジスタ131に格納され、ソースのオペランドとして、物理アドレス”0001”に対応した拡張レジスタE1の内容がE1レジスタ132に読み出される。また、並行して、レジスタファイル120からは、ソースのオペランドとして、物理アドレス”0011”に対応した拡張レジスタE3の値がE2レジスタ134に読み出される。
<EXステージ>
演算器133において、E0レジスタ131に格納されたデータの上位ハーフワードとE1レジスタ132に格納されたデータの上位ハーフワードとが抽出され、それ等の乗算が実行され、同時に、E0レジスタ131に格納されたデータの下位ハーフワードとE1レジスタ132に格納されたデータの下位ハーフワードとが抽出され、それ等の乗算が実行され、この2つの乗算結果と、E1レジスタ132に格納されたデータとの加算が実行され、その結果がM0レジスタ141に格納される。また、並行して、E2レジスタ134に格納されたデータから、“1”の減算を実行し、その減算結果をM1レジスタ142に格納する。
<MEMステージ>
M0レジスタ141に格納されたデータがデータメモリ143をスルーし、W0レジスタ151に格納されると共に、M1レジスタ142に格納されたデータがデータメモリ143をスルーし、W1レジスタに格納される。
<WBステージ>
W0レジスタ151に格納されたデータが読み出され、このデータが、レジスタファイル120の第2のレジスタアドレス抽出部114が出力する格納先アドレス”0001”に格納され、これに並行して、W1レジスタ152に格納されたデータが読み出され、このデータが、レジスタファイル120の第3のレジスタアドレス抽出部115が出力する格納先アドレス”0011”に格納される。
命令5 MOV (#4,E4+),E6 は、第2の命令フォーマットにおける命令で拡張レジスタE4で示されるメモリアドレスからデータを読み出し、このデータを拡張レジスタE6に格納し、データ格納後、拡張レジスタE4の値を“4”だけ加算するポストインクリメントメモリ-レジスタ間転送命令である。
<IFステージ>
命令フェッチ部102が命令メモリ101から命令を読み出して、命令レジスタ103に格納する。
<DECステージ>
命令型判定部111は、命令レジスタ103に格納された命令を解読して、この命令が第2の命令フォーマットによる命令であることを出力する。第2のレジスタアドレス抽出部114は、ソースのデータアドレスとして”0100”を、格納先のアドレスとしてレジスタアドレス“0110”を抽出する。
第1のレジスタアドレスセレクタ117は、命令型判定部111からの制御信号に応じて、第2のレジスタアドレス抽出部114から出力されるアドレスをレジスタファイル120に出力する。オペレーション解読部116は、拡張レジスタ E4で示されるメモリアドレスからデータを読み出し、このデータを拡張レジスタE6に格納し、データ格納後、拡張レジスタE4の値を“4”だけ加算するポストインクリメントメモリ-レジスタ間転送命令であることを解読し、その制御信号を生成する。
レジスタファイル120からは、ソースのオペランドとして、物理アドレス”0100”に対応した拡張レジスタE4の内容が読み出され、その内容がE0レジスタ131に格納される。
<EXステージ>
演算器133において、E0レジスタ131に格納されたデータが読み出され、このデータを、オペレーション解読部116からの制御信号によってデータメモリ143のアドレス入力部に出力する。また、“4”の加算を実行し、その結果がM0レジスタ141に格納される。
<MEMステージ>
M0レジスタ141に格納されたデータがデータメモリ143をスルーし、W0レジスタ151に格納される。また、オペレーション解読部116からの制御信号によって、指定されるメモリアドレスのデータメモリ143からデータを読み出し、このデータをW0レジスタ151に格納する。
<WBステージ>
W0レジスタ151に格納されたデータが読み出され、レジスタファイル120の第2のレジスタアドレス抽出部114が出力する格納先アドレス”0110”に格納される。
命令6 MOV_LGE (#4,E5+),E1 は、第3の命令フォーマットにおける命令で拡張レジスタE5で示されるメモリアドレスからデータを読み出し、このデータを拡張レジスタE1に格納し、データ格納後、拡張レジスタE5の値を“4”だけ加算するポストインクリメントメモリ-レジスタ間転送命令であるユニットと、前記命令4で実行された減算命令の結果が“0”以上の値の場合には、前記命令1の前に示されるLOOP番地にプログラムカウンタ124の値を変更するループ命令であるユニットとを並列に実行する命令である。
<IFステージ>
命令フェッチ部102が命令メモリ101から命令を読み出して、命令レジスタ103に格納する。
<DECステージ>
命令型判定部111は、命令レジスタ103に格納された命令を解読して、この命令が第3の命令フォーマットによる命令であることを出力する。第2のレジスタアドレス抽出部114は、ソースのデータアドレスとして”0101”を、格納先のアドレスとしてレジスタアドレス“0001”を抽出する。
第1のレジスタアドレスセレクタ117は、命令型判定部111からの制御信号に応じて、第2のレジスタアドレス抽出部114から出力されるアドレスをレジスタファイル120に出力する。オペレーション解読部116は、拡張レジスタ E5で示されるメモリアドレスからデータを読み出し、このデータを拡張レジスタ E1に格納し、データ格納後、拡張レジスタE5の値を“4”だけ加算するポストインクリメントメモリ-レジスタ間転送命令であることを解読し、その制御信号を生成する。
レジスタファイル120からは、ソースのオペランドとして、物理アドレス”0101”に対応した拡張レジスタE5の内容が読み出され、この内容がE0レジスタ131に格納される。
更に、オペレーション解読部116は、もう一方のユニットがループ命令であることを解読し、その制御信号を生成する。
オペレーション制御部116から出力される制御信号に基づいて、レジスタファイル120内のプログラムカウンタ124の値がE2レジスタ134に格納される。
<EXステージ>
演算器133において、E0レジスタ131に格納されたデータが読み出され、このデータを、オペレーション解読部116からの制御信号によってデータメモリ143のアドレス入力部に出力する。また、“4”の加算を実行し、その結果がM0レジスタ141に格納される。
演算器136において、E2レジスタ134に格納されたデータが読み出され、オペレーション解読部116から出力される制御信号に基づいてループの飛び先アドレス値がM1レジスタ142に格納される。
<MEMステージ>
M0レジスタ141に格納されたデータがデータメモリ143をスルーし、W0レジスタ151に格納される。また、オペレーション解読部116からの制御信号によって、指定されるメモリアドレスのデータメモリ143からデータを読み出し、このデータをW0レジスタ151に格納する。
M1レジスタ142に格納されたデータがデータメモリ143をスルーし、W1レジスタ152に格納される。
<WBステージ>
W0レジスタ151に格納されたデータが読み出され、このデータが、レジスタファイル120の第2のレジスタアドレス抽出部114が出力する格納先アドレス”0001”に格納される。
W1レジスタ152に格納されたデータは、レジスタファイル120内のプログラムカウンタ124に格納される。
図15で示した命令において、命令3及び命令5は4バイト命令、命令1及び命令2は3バイト命令、命令4は4バイト命令、命令6は4バイト命令を示している。図15で示した命令はトータルで22バイトのコードサイズとなっている。
このように、本実施の形態で示した第3の命令フォーマットを持つ命令により、コードサイズが24バイトから22バイトへとコードサイズの縮小を図れることが示された。更には、図14から図15へ命令を変更することにより、命令の数も8命令から6命令に削減でき、実行性能の向上も実現されることが示されている。
尚、本発明は、以上で説明した実施の形態のデータ処理装置に限られないことは勿論である。例えば、本実施の形態では、アドレスレジスタ及びデータレジスタを拡張したが、汎用レジスタを拡張してもよい。また、本実施の形態では、アドレスレジスタを4個、データレジスタを4個、拡張レジスタを8個として説明したが、レジスタの個数は何個でもよい。更に、本実施の形態では、第1の命令フォーマットで第1のレジスタファイル220を指定し、第2の命令フォーマットで第1のレジスタファイル220を含んだ第2のレジスタファイル120を指定したが、本発明はこれに限定されず、第2のレジスタファイルのレジスタ数を第1のレジスタファイルのレジスタ数よりも多くし、第2の命令フォーマットでこの第2のレジスタファイルのみを指定し、第1のレジスタファイルは指定しない構成としても良い。
また、第3の命令フォーマットとして、2つのユニットを並列実行する命令のフォーマットを採用したが、2つのユニットに限定されず、3つ以上のユニットを並列実行する命令のフォーマットとしてもよいのは勿論である。
以上説明したように、本発明は、従来のモード設定信号等を出力する特別の命令を用いる必要をなくして、プログラムサイズを有効に小さくしつつ、1つの命令で多数のレジスタを用いた動作を実行できて、信号処理等のデータ処理の処理速度を高速化できるので、CPU又はマイクロプロセッサ等のデータ処理装置として有用である。
本発明の実施の形態によるデータ処理装置の第2の命令フォーマットを示す図である。 同データ処理装置の第2の命令フォーマットの命令のリストの一部を示す図である。 本発明の実施の形態によるデータ処理装置の第3の命令フォーマットを示す図である。 同データ処理装置の第3の命令フォーマットの命令のリストの一部を示す図である。 同データ処理装置の全体構成を示すブロック図である。 同データ処理装置のレジスタファイルの構成を示すブロック図である。 同データ処理装置において、第1の命令フォーマットの命令実行時のレジスタファイルのレジスタ番号を示す図である。 同データ処理装置において、第2の命令フォーマットの命令の実行時のレジスタファイルのレジスタ番号を示す図である。 C言語で記載したプログラムの一例を示す図である。 図9のプログラムを第1の命令フォーマットを用いてコンパイルした第1の例を示す図である。 図9のプログラムを第1の命令フォーマットを用いてコンパイルした第2の例を示す図である。 図9のプログラムを第1の命令フォーマットを用いてコンパイルした第3の例を示す図である。 図9のプログラムを第2の命令フォーマットを用いてコンパイルした例を示す図である。 本発明の実施の形態による第3の命令フォーマットの命令を使用せず記述したFIRフィルタ処理のプログラムを示す図である。 本発明の実施の形態による第3の命令フォーマットの命令を使用して図14で記述したFIRフィルタ処理プログラムを書き換えたプログラムを示す図である。 本発明の実施の形態によるデータ処理装置の第1の命令フォーマット(1)を示す図である。 同データ処理装置の第1の命令フォーマット(1)の命令のリストの一部示す図である。 同データ処理装置の第1の命令フォーマット(2)を示す図である。 同データ処理装置の第1の命令フォーマット(2)の命令のリストの一部示す図である。 同データ処理装置において、第1のレジスタファイルの構成を示すブロック図である。 同データ処理装置の第1の命令フォーマットの命令の実行時のレジスタファイルのレジスタ番号を示す図である。 従来のデータ処理装置の命令フォーマットを示す図である。 従来のデータ処理装置の命令デコーダ周辺の要部構成を示すブロック図である。 本発明の実施の形態で用いる第1、第2及び第3の命令フォーマットの具体例を示す図である。
符号の説明
101 命令メモリ
102 命令フェッチ部
103 命令レジスタ
110 命令解読器
111 命令型判定部(識別手段)
112 第1のレジスタアドレス抽出部
113 レジスタアドレス変換部
114 第2のレジスタアドレス抽出部
115 第3のレジスタアドレス抽出部
116 オペレーション解読部
117 第1のレジスタアドレスセレクタ
120 レジスタファイル(第2のレジスタファイル)
121 汎用レジスタ
122 スタックポインタ
123 Processor Status Word
124 プログラムカウンター
E0〜E7 拡張レジスタ
133、136 演算器
220 第1のレジスタファイル

Claims (9)

  1. 所定個のレジスタを持つ第1レジスタファイルと、
    前記第1レジスタファイルのレジスタ数よりも多い個数のレジスタを持つ第2レジスタファイルと、
    前記第1レジスタファイルのレジスタを指定するための第1レジスタ指定領域を有する第1命令フォーマットで記述される命令と、前記第2レジスタファイルのレジスタを指定するための第2レジスタ指定領域を有する第2命令フォーマットで記述される命令と、前記第2レジスタファイルのレジスタを指定するための第2レジスタ指定領域を有する第3命令フォーマットで記述される命令とを受け、この第1第2及び第3の命令フォーマットで記述される各命令を各々解読する命令解読器と、
    前記命令解読器が前記第1命令フォーマットで記述される命令を解読すると、この命令を前記第1レジスタファイルに保持されたデータを用いて実行し、前記命令解読器が前記第2命令フォーマットで記述される命令及び前記第3命令フォーマットで記述される命令を解読すると、この命令を前記第2レジスタファイルに保持されたデータを用いて実行する複数個の演算器とを備え、
    前記第1命令フォーマット及び前記第2命令フォーマットでは、各々、前記複数個の演算器の1つを用いた単一演算命令のみが指定され、
    前記第3命令フォーマットでは前記複数個の演算器の複数を用いた並列演算命令指定され、
    前記命令解読器が前記第3命令フォーマットによって指定される並列演算命令を解読すると、それぞれが前記第2レジスタファイルに保持されたデータを用いる複数の演算を、前記複数個の演算器を用いて並列に実行する
    ことを特徴とするデータ処理装置。
  2. 前記請求項1に記載のデータ処理装置において、
    前記第2レジスタ指定領域は、前記第1レジスタ指定領域よりも大きい
    ことを特徴とするデータ処理装置。
  3. 前記請求項1に記載のデータ処理装置において、
    前記第1命令フォーマットで記述される命令と前記第2命令フォーマットで記述される命令と前記第3命令フォーマットで記述される命令とを保持する命令レジスタを備え、
    前記命令解読器は、前記命令レジスタから命令が直接に供給される
    ことを特徴とするデータ処理装置。
  4. 前記請求項1に記載のデータ処理装置において、
    前記命令解読器は、前記第1命令フォーマットで記述される命令を、前記第2又は第3命令フォーマットに変換することなく、解読する
    ことを特徴とするデータ処理装置。
  5. 前記請求項1に記載のデータ処理装置において、
    前記命令解読器は、前記第2及び第3命令フォーマットで記述される命令を、前記第1命令フォーマットに変換することなく、解読する
    ことを特徴とするデータ処理装置。
  6. 前記請求項1に記載のデータ処理装置において、
    前記第2レジスタファイルは、前記第1レジスタファイルが持つ所定個のレジスタを含んで構成される
    ことを特徴とするデータ処理装置。
  7. 前記請求項6に記載のデータ処理装置において、
    前記命令解読器は、前記第1命令フォーマットで記述される命令を受け、この命令が指定する第1レジスタファイルのレジスタのアドレスを、前記第2又は第3命令フォーマットで記述されるレジスタのアドレスに変換するアドレス変換部を備える
    ことを特徴とするデータ処理装置。
  8. 前記請求項7に記載のデータ処理装置において、
    前記命令解読器は、各命令を記述する命令フォーマットが前記第1、第2又は第3命令フォーマットであることを識別する識別手段を有し、
    前記識別手段は、識別された命令フォーマットが前記第1命令フォーマットであるとき、前記アドレス変換部により変換されたアドレスを前記第1レジスタファイルに出力させる
    ことを特徴とするデータ処理装置。
  9. 複数個の演算器を備え、第1レジスタ指定領域を有する第1の命令コード並びに第2レジスタ指定領域を有する第1及び第2の追加命令コードを実行するデータ処理装置であって、
    前記第1及び第2の追加命令コード中の前記第2レジスタ指定領域によって指定される基本レジスタ及び拡張レジスタを備え、
    前記第1の命令コードは、他のデータ処理装置によっても実行される命令コードであり、前記第1及び第2の追加命令コードは前記他のデータ処理装置によっては実行されない命令コードであり、前記第1及び第2の追加命令コードは前記第1の命令コードに対して互換性を有し、
    前記第1の命令コード及び前記第1の追加命令コードでは前記複数個の演算器の1つを用いた単一演算命令のみが実行され、
    前記第2の追加命令コードでは前記複数個の演算器の複数を用いた並列演算命令実行され、
    前記第2の追加命令コードで並列演算命令が実行される場合は、複数の演算のいずれの演算についても前記基本レジスタと前記拡張レジスタとの両方からデータを取り出して演算を行うことができ、
    前記他のデータ処理装置は、拡張レジスタを有さず、基本レジスタのみを有して、この基本レジスタのみを指定するためにあって前記第2レジスタ指定領域よりもビット幅の小さい前記第1レジスタ指定領域を有する前記第1の命令コードを実行し、
    前記第1の命令コードは前記拡張レジスタを指定しない
    ことを特徴とするデータ処理装置。
JP2003290766A 1998-03-11 2003-08-08 データ処理装置 Expired - Lifetime JP3901670B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003290766A JP3901670B2 (ja) 1998-03-11 2003-08-08 データ処理装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP5968098 1998-03-11
JP11558898 1998-04-24
JP2003290766A JP3901670B2 (ja) 1998-03-11 2003-08-08 データ処理装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP06223099A Division JP3472504B2 (ja) 1998-03-11 1999-03-09 命令解読方法、命令解読装置及びデータ処理装置

Publications (3)

Publication Number Publication Date
JP2004005738A JP2004005738A (ja) 2004-01-08
JP2004005738A5 JP2004005738A5 (ja) 2005-09-29
JP3901670B2 true JP3901670B2 (ja) 2007-04-04

Family

ID=30448907

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003290766A Expired - Lifetime JP3901670B2 (ja) 1998-03-11 2003-08-08 データ処理装置

Country Status (1)

Country Link
JP (1) JP3901670B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9727336B2 (en) 2011-09-16 2017-08-08 International Business Machines Corporation Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers
US9411585B2 (en) 2011-09-16 2016-08-09 International Business Machines Corporation Multi-addressable register files and format conversions associated therewith
CN113157636B (zh) * 2021-04-01 2023-07-18 西安邮电大学 协处理器、近数据处理装置和方法

Also Published As

Publication number Publication date
JP2004005738A (ja) 2004-01-08

Similar Documents

Publication Publication Date Title
US7664934B2 (en) Data processor decoding instruction formats using operand data
EP1734440B1 (en) Processor for executing highly efficient VLIW instructions
US7676653B2 (en) Compact instruction set encoding
US6490673B1 (en) Processor, compiling apparatus, and compile program recorded on a recording medium
JP2816248B2 (ja) データプロセッサ
JPH0926878A (ja) データ処理装置
KR0167005B1 (ko) 중앙처리장치
US4945511A (en) Improved pipelined processor with two stage decoder for exchanging register values for similar operand instructions
JP3781519B2 (ja) プロセッサの命令制御機構
JP2003044273A (ja) データ処理装置及びデータ処理方法
US7047396B1 (en) Fixed length memory to memory arithmetic and architecture for a communications embedded processor system
JP3901670B2 (ja) データ処理装置
US6925548B2 (en) Data processor assigning the same operation code to multiple operations
US6209080B1 (en) Constant reconstruction processor that supports reductions in code size and processing time
JP3472504B2 (ja) 命令解読方法、命令解読装置及びデータ処理装置
JP2004005738A5 (ja)
WO2019102662A1 (ja) プロセッサ、情報処理装置および処理方法
JP3915019B2 (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
JP3199603B2 (ja) コードサイズ縮小化マイクロプロセッサ
JP3634292B2 (ja) ファンクション・オペランド分割型プロセッサ
JPH117388A (ja) プロセッサ
JPH10105399A (ja) データ処理装置
JP2000099329A (ja) プロセッサ

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050715

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050715

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060411

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060609

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060704

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060829

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060928

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20061107

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20061212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061226

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110112

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110112

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120112

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130112

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130112

Year of fee payment: 6

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term