JP2007122626A - マイクロプロセッサ - Google Patents
マイクロプロセッサ Download PDFInfo
- Publication number
- JP2007122626A JP2007122626A JP2005317158A JP2005317158A JP2007122626A JP 2007122626 A JP2007122626 A JP 2007122626A JP 2005317158 A JP2005317158 A JP 2005317158A JP 2005317158 A JP2005317158 A JP 2005317158A JP 2007122626 A JP2007122626 A JP 2007122626A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- data
- data length
- register
- selection information
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
- G06F9/30152—Determining start or end of instruction; determining instruction length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
【課題】 同一の命令コードを各種データ長のデータを処理対象とする各命令として解釈するようにしたマイクロプロセッサを提供する。
【解決手段】 マイクロセッサのデコード部にデータ長選択用情報を保持するデータ長保持回路を設け、レジスタR1に8ビットの即値データを格納する命令等の汎用レジスタに格納したデータのデータ長を特定する命令を予め第1種命令として定めておき、データ長を明示的に特定しない命令つまり各種データ長のデータを処理対象とし得る命令であって、汎用レジスタに格納されているデータを処理対象とする命令を、予め第2種命令として定めておき、デコード部は、第1種命令をデコードする際にその第1種命令に応じてデータ長選択用情報を更新し、第2種命令については、データ長選択用情報を参照することによりデータ長を特定してその第2種命令をデコードする。
【選択図】 図1
【解決手段】 マイクロセッサのデコード部にデータ長選択用情報を保持するデータ長保持回路を設け、レジスタR1に8ビットの即値データを格納する命令等の汎用レジスタに格納したデータのデータ長を特定する命令を予め第1種命令として定めておき、データ長を明示的に特定しない命令つまり各種データ長のデータを処理対象とし得る命令であって、汎用レジスタに格納されているデータを処理対象とする命令を、予め第2種命令として定めておき、デコード部は、第1種命令をデコードする際にその第1種命令に応じてデータ長選択用情報を更新し、第2種命令については、データ長選択用情報を参照することによりデータ長を特定してその第2種命令をデコードする。
【選択図】 図1
Description
本発明は、マイクロプロセッサに関し、特に命令解釈方式に関する。
従来、解釈実行可能な命令セットに、複数の演算語長それぞれに対応した命令コードを含むマイクロプロセッサが広く利用されている。
演算語長は、命令における処理対象データのデータ長であり、命令コード毎に定められる。
例えば、2つのレジスタそれぞれに格納された数値データを加算して結果をあるレジスタに格納する処理を指定する場合において、その数値データを1バイトのデータとして処理するときと、2バイトのデータとして処理するときと、4バイトのデータとして処理するときとでは、それぞれ異なる命令コードにより指定可能になる。
演算語長は、命令における処理対象データのデータ長であり、命令コード毎に定められる。
例えば、2つのレジスタそれぞれに格納された数値データを加算して結果をあるレジスタに格納する処理を指定する場合において、その数値データを1バイトのデータとして処理するときと、2バイトのデータとして処理するときと、4バイトのデータとして処理するときとでは、それぞれ異なる命令コードにより指定可能になる。
このように、ある程度同様の処理内容にもかかわらず、処理対象データのデータ長別に複数の命令コードを必要とすることは、固定長命令フォーマットの場合において命令セットに、多様な命令つまり多くの種類の命令を含めることの妨げになる点で、好ましいことではない。
この問題の解決に関連する技術として、命令によりアクセスするデータメモリのアドレス範囲とデータ長との関係を予め設定しておいて、命令コードが同一であってもデータメモリへ出力するアドレスに基づいてデータ長を切り替えて命令解釈(デコード)を行うマイクロプロセッサが提案されている(特許文献1参照)。
この問題の解決に関連する技術として、命令によりアクセスするデータメモリのアドレス範囲とデータ長との関係を予め設定しておいて、命令コードが同一であってもデータメモリへ出力するアドレスに基づいてデータ長を切り替えて命令解釈(デコード)を行うマイクロプロセッサが提案されている(特許文献1参照)。
このマイクロプロセッサによれば、同一の命令コードを、各種データ長のデータを処理対象とする各命令として解釈することが可能になるため、命令コード中にデータ長を識別するためのビットフィールドを設ける必要がなくなる。
特開2004−206214号公報
本発明は、上述の特許文献1に記載された技術とは異なる方式で、同一の命令コードを各種データ長のデータを処理対象とする各命令として解釈するようにしたマイクロプロセッサを提供することを目的とする。
上記課題を解決するために、本発明に係るマイクロプロセッサは、命令を逐次読み込んで解釈し実行するマイクロプロセッサであって、処理対象データのデータ長を示すデータ長選択用情報を保持する保持手段と、逐次、各命令について、当該命令に呼応して行うべき命令実行処理の内容を特定する命令解釈処理を行うデコード手段と、各命令について、命令解釈処理の結果に従って命令実行処理を行う実行手段とを備え、前記デコード手段は、(a)第1種命令について命令解釈処理を行うときに当該第1種命令に基づいて前記保持手段に保持される前記データ長選択用情報を更新し、(b) 第2種命令について命令解釈処理を行うときには、前記保持手段に保持されているデータ長選択用情報に応じて、当該第2種命令の処理対象データのデータ長を選択して当該命令解釈処理を行うことを特徴とする。
上記構成により、本発明に係るマイクロプロセッサは、第2種命令に属する1つの命令をデコードする場合において、その前に第1種命令をデコードした際に更新されたデータ長選択用情報次第で、その1つの第2種命令の命令コードがどのデータ長のデータを処理対象とする命令であるかを特定してデコードを行うことになる。従って、同一の命令コードを、各種データ長のデータを処理対象とする各命令として解釈することが可能になり、第2種命令については命令コード中に明示的にデータ長を識別するためのビットフィールドを設ける必要がなくなり、そのため、固定長命令フォーマットの場合において命令セットに多様な命令を含め得る余地を広げることができる。
なお、第1種命令のうちには、例えば、メモリから1バイト(8ビット)のデータをあるレジスタに転送する命令や、メモリから2バイト(16ビット)のデータをあるレジスタに転送する命令等、命令コードにデータ長を識別するためのビットフィールドを含む命令が含まれ得る。
また、本発明に係るマイクロプロセッサは、命令実行処理の段階ではなく、命令解釈処理を行うときにデータ長選択用情報の更新や参照を行うので、例えば、命令読み込み(フェッチ)、命令解釈(デコード)、実行をそれぞれ別個のパイプラインステージとしたパイプライン構成を採用した場合でも、第1種命令の直後に第2種命令が連続しているときに、第1種命令に応じて更新されたデータ長選択用情報を第2種命令のデコード段階において活用することが可能になる。
また、本発明に係るマイクロプロセッサは、命令実行処理の段階ではなく、命令解釈処理を行うときにデータ長選択用情報の更新や参照を行うので、例えば、命令読み込み(フェッチ)、命令解釈(デコード)、実行をそれぞれ別個のパイプラインステージとしたパイプライン構成を採用した場合でも、第1種命令の直後に第2種命令が連続しているときに、第1種命令に応じて更新されたデータ長選択用情報を第2種命令のデコード段階において活用することが可能になる。
また、前記第1種命令には、一のデータ長のデータをレジスタに格納することを指示するデータ格納命令、及び他のデータ長のデータをレジスタに格納することを指示するデータ格納命令が含まれ、前記デコード手段は、いずれかのデータ長のデータをレジスタに格納することを指示する前記各データ格納命令について命令解釈処理を行うときに、前記保持手段内のデータ長選択用情報を、命令解釈処理対象の当該データ格納命令に係るデータ長を示すものとなるように更新することとしてもよい。
これにより、例えばメモリの特定箇所のあるバイト数に記憶されているデータを読み出してレジスタへと格納する命令等の、あるデータをレジスタに格納するタイプの各種命令についてデコードを行うことと並行して、その命令に基づいて、特にその命令によりレジスタに設定されるデータのデータ長に基づいて、データ長選択用情報の保持内容を定めて保持内容の更新を行うことになる。即ち、第1種命令は、一般的なデータをレジスタに格納する命令に、データ長選択用情報の更新機能を兼ね備えさせたものとなる。従って、マイクロプロセッサにより解釈実行されるプログラムについてみれば、データ長選択用情報の保持内容を更新することのみを目的とする専用命令等を挿入する必要性を抑えることができる。
また、一般的なプログラムは、局所的にみれば、レジスタにデータを格納する命令の直後又はその少し後に、そのレジスタに格納されたデータを演算や転送等の処理の対象とする命令が実行されるように構成されることが多いため、演算対象のデータ長が選択可能な命令を第2種命令として適切に定めておきさえすれば、基本的には、第2種命令におけるデータ長が適切に選択されるようになる。即ち、演算対象のデータ長毎に別個の命令をマイクロプロセッサが処理可能な命令セット中に設けておく必要がなくなる。
なお、例外的に、処理するデータ長が複雑に混在するプログラム等、データ長が適切に選択されないような構成のプログラムについては、例えば、データ長選択用情報の保持内容を更新することを目的とする専用命令等をプログラム中に設けることにより対応すれば足りる。この場合、マイクロプロセッサがサポートする命令セットとして、第2種命令の数がその専用命令の数より多いようにしておくことにより、このために必要な命令数を抑えることができるので、固定長命令フォーマットを採用した命令セットに、他の多様な命令を含ませ得る余地を増やすことができる。
また、前記第1種命令には、nビットの値をレジスタへ設定することを指示する命令、2nビットの値をレジスタに設定することを指示する命令、メモリ中のnビットのデータをレジスタへと転送することを指示する命令、及びメモリ中の2nビットのデータをレジスタへと転送することを指示する命令が含まれ、前記デコード手段は、(a) nビットの値をレジスタへ設定することを指示する命令について命令解釈処理を行うときに、前記保持手段内のデータ長選択用情報を、nビットを示すものとなるように更新し、(b) 2nビットの値をレジスタへ設定することを指示する命令について命令解釈処理を行うときに、前記保持手段内のデータ長選択用情報を、2nビットを示すものとなるように更新し、(c) メモリ中のnビットのデータをレジスタへと転送することを指示する命令について命令解釈処理を行うときに、前記保持手段内のデータ長選択用情報を、nビットを示すものとなるように更新し、(d) メモリ中の2nビットのデータをレジスタへと転送することを指示する命令について命令解釈処理を行うときに、前記保持手段内のデータ長選択用情報を、2nビットを示すものとなるように更新することとしてもよい。
これにより、プログラムにおいて、オペランドにより指定された即値をレジスタに設定するための命令や、メモリ内のデータをレジスタに転送するための命令の後に置かれて、それらの命令で設定したサイズと同一のデータ長のレジスタ内データを演算や転送等の処理の対象とすることが想定される命令については、扱うデータ長を明示的には特定しない第2種命令と定めておくことができ、これにより、演算対象のデータ長毎に別個の命令を、マイクロプロセッサがサポートすべき命令セット中に設けておく必要がなくなる。
また、前記第1種命令であってかつ前記第2種命令であるものには、乗算命令が含まれ、前記デコード手段は、前記乗算命令について命令解釈処理を行うときには、前記保持手段内に保持されているデータ長選択用情報に応じて、乗算命令の演算対象となるデータのデータ長を選択して当該命令解釈処理を行い、かつ、その保持されているデータ長選択用情報の示すデータ長を、所定値にするように更新することとしてもよい。
例えば、マイクロプロセッサの動作中に、第1種命令としての、レジスタへの1バイトのデータを格納する命令のデコード等を起因として、データ長選択用情報が1バイトというデータ長を示しているときにおいて、あるレジスタの内容と他のレジスタの内容との乗算を指示する乗算命令がデコードされると、それらの入力されるレジスタ内のデータのデータ長は1バイトとして扱われるが、1バイトのデータ同士の積は2バイトで表されるデータになる。このマイクロプロセッサによれば、この場合に対応することができ、乗算命令に後続してその積を処理対象とする第2種命令が2バイトのデータ長のデータを処理するように仕向けることができるようになる。
また、前記データ長選択用情報は、複数のデータ長を選択的に示すものであり、前記デコード手段は、第1種命令について命令解釈処理を行う毎に、前記データ長選択用情報の示すデータ長を、複数のデータ長のなかでの予め定めた繰り返し順序における、次の順のデータ長にするように更新することとしてもよい。
これにより、例えば、特段の実行処理をしない旨の従来のnop命令を第1種命令として、nop命令がデコードされる毎に、データ長選択用情報が示すデータ長が1バイト、2バイト、4バイト、1バイト、2バイト、4バイト、1バイト等と巡回的に移り変わるようにすることができる。従って、例えば、プログラム中の必要な箇所に、nop命令を必要な個数挿入しておくことにより任意のデータ長を示すようにデータ長選択用情報を更新することができる。従って、データ長選択用情報が特定値を示すように設定するための命令を、命令セット中に複数設ける必要がなくなる。なお、第1種命令は、必ずしも従来のnop命令である必要はない。
これにより、例えば、特段の実行処理をしない旨の従来のnop命令を第1種命令として、nop命令がデコードされる毎に、データ長選択用情報が示すデータ長が1バイト、2バイト、4バイト、1バイト、2バイト、4バイト、1バイト等と巡回的に移り変わるようにすることができる。従って、例えば、プログラム中の必要な箇所に、nop命令を必要な個数挿入しておくことにより任意のデータ長を示すようにデータ長選択用情報を更新することができる。従って、データ長選択用情報が特定値を示すように設定するための命令を、命令セット中に複数設ける必要がなくなる。なお、第1種命令は、必ずしも従来のnop命令である必要はない。
また、前記マイクロプロセッサは、命令により処理対象データの格納場所として指定され得るレジスタを複数有し、前記保持手段は、処理対象データの格納場所として指定され得る複数のレジスタそれぞれに対応して、データ長を示すデータ長選択用情報を保持し、前記第1種命令は、あるデータ長のデータをあるレジスタに格納することを指示するものであり、前記第2種命令は、あるレジスタに格納されている、あるデータ長のデータを処理対象として、ある演算処理を行うことを指示するものであり、前記デコード手段は、(a)第1種命令について命令解釈処理を行うときに、当該第1種命令によりデータの格納が指示されるレジスタに対応するデータ長選択用情報を更新し、(b) 第2種命令について命令解釈処理を行うときには、当該第2種命令により処理対象データが格納されているとして指示されるレジスタに対応する前記データ長選択用情報に応じて、当該データのデータ長を選択し、選択したデータ長分の当該データを処理対象として演算処理が行われるように命令実行処理の内容を特定することとしてもよい。
これにより、マイクロプロセッサが、演算やデータ転送の処理対象となるデータを格納するために有するレジスタ毎に、データ長が保持され、それが第1種命令により更新され、それが第2種命令のデコードに際して参照されるようになるため、データ長の異なる各種データを扱うプログラム等を実行対象とする場合に有用となる。例えば、プログラムにおいて、順次、1バイトの即値データを第1レジスタに格納する命令(1バイト値格納用命令)、2バイトの即値データを第2レジスタに格納する命令(2バイト値格納用命令)、第1レジスタの内容を演算等の処理の対象とする命令、第2レジスタの内容を演算等の処理の対象とする命令が並んでいた場合に、これら4つの命令のうち後の2つの命令は、明示的にデータ長を指定する命令でなくても、それぞれ、第1レジスタの内容を1バイトの値として処理対象とする命令と、第2レジスタの内容を2バイトの値として処理対象とする命令としてデコードされるようになる。
また、前記マイクロプロセッサは、命令により処理対象データの格納場所として指定され得るレジスタを複数有し、前記保持手段は更に、処理対象データの格納場所として指定され得る複数のレジスタそれぞれに対応して、命令解釈処理に際してデータ長選択用情報を有効と扱うか無効と扱うかを示す有効性情報を保持し、前記第1種命令は、あるデータ長のデータをあるレジスタに格納することを指示するものであり、前記第2種命令は、あるレジスタに格納されている、あるデータ長のデータを処理対象として、ある演算処理を行うことを指示するものであり、前記デコード手段は、(a)第1種命令について命令解釈処理を行うときに当該第1種命令に基づいて前記データ長選択用情報を更新するとともに、当該第1種命令によりデータの格納が指示されるレジスタに対応する有効性情報を、有効を示すように更新し、(b)第3種命令について命令解釈処理を行うときに当該第3種命令に基づいて、あるレジスタに対応する有効性情報を、無効を示すように更新し、(c) 第2種命令について命令解釈処理を行う場合において、当該第2種命令により処理対象データが格納されているとして指示されるレジスタに対応する前記有効性情報が有効を示すときには前記データ長選択用情報に応じて当該データのデータ長を選択し、当該有効性情報が無効を示すときには所定のデータ長を当該データのデータ長として選択し、選択したデータ長分の当該データを処理対象として演算処理が行われるように命令実行処理の内容を特定することとしてもよい。
マイクロプロセッサが、例えば1バイトのデータを処理対象として扱うプログラムを実行している間においては、基本的には、データ長選択用情報は1バイトを示すようになる。そして、プログラム中に、汎用レジスタをその1バイトのデータの格納用に用いる部分のみならず、その汎用レジスタを例えば4バイトのメモリアドレス値の格納用に用いる部分も含まれているような場合において、汎用レジスタをメモリアドレス格納用に用いているような命令を第3種命令として定めておけば、その第3種命令により指定された汎用レジスタについては、データ長選択用情報を参照せずにデータ長を定めるように、デコードできるようになる。従って、このマイクロプロセッサは、ある汎用レジスタを、所定のデータ長のデータを格納するために用いる場合と、メモリアドレスを格納するために用いる場合とを、切り替えて活用するようなプログラムを実行対象とするために適したものとなる。
<1.実施形態1>
以下、本発明の実施形態1に係るマイクロプロセッサについて説明する。
<1-1.構成>
図1は、本発明の実施形態1に係るマイクロプロセッサ100の構成図である。
マイクロプロセッサ100は、固定長命令フォーマットの命令セットに属する各命令コードをフェッチしデコードし実行する集積回路であり、同図に示すように、デコード部110、汎用レジスタ120、演算ユニット130、命令メモリ140、データメモリ150及びインタフェース部160を備える。
以下、本発明の実施形態1に係るマイクロプロセッサについて説明する。
<1-1.構成>
図1は、本発明の実施形態1に係るマイクロプロセッサ100の構成図である。
マイクロプロセッサ100は、固定長命令フォーマットの命令セットに属する各命令コードをフェッチしデコードし実行する集積回路であり、同図に示すように、デコード部110、汎用レジスタ120、演算ユニット130、命令メモリ140、データメモリ150及びインタフェース部160を備える。
ここで、汎用レジスタ120は、演算や転送等の処理対象又は処理結果となるデータを一時的に格納するためのデータ記憶回路であり、より詳しくは、32ビットのデータを格納可能なレジスタR0、レジスタR1、レジスタR2、・・・、レジスタR7の8つのレジスタの集合である。
演算ユニット130は、汎用レジスタ120に格納されたデータ或いはデータメモリ150に格納されたデータを処理対象として、加算、乗算、その他の各種演算を行うための回路である。
演算ユニット130は、汎用レジスタ120に格納されたデータ或いはデータメモリ150に格納されたデータを処理対象として、加算、乗算、その他の各種演算を行うための回路である。
命令メモリ140は、実行対象となるプログラムを構成する命令列が格納されているメモリである。
データメモリ150は、命令の実行に際してデータを書き込み又は読み出すための書き換え可能なメモリである。
インタフェース部160は、バスを含み、汎用レジスタ120又は演算ユニット130と、データメモリ150との間でのデータ転送を制御し、また命令メモリ140からデコード部110への命令コードの転送を制御する機能を担う回路である。
データメモリ150は、命令の実行に際してデータを書き込み又は読み出すための書き換え可能なメモリである。
インタフェース部160は、バスを含み、汎用レジスタ120又は演算ユニット130と、データメモリ150との間でのデータ転送を制御し、また命令メモリ140からデコード部110への命令コードの転送を制御する機能を担う回路である。
また、デコード部110は、命令メモリ140から逐次読み出された命令コードに基づいて、その命令コードに対応する動作を演算ユニット130及びインタフェース部160に行わせるための制御内容を決定し、その制御を行うための制御信号をインタフェース部160に伝送する機能、即ち命令をデコードする機能を担う回路であり、図1に示すように、命令デコーダ111、第1種命令対応回路112、第2種命令対応回路113及びデータ長保持回路119を有する。
ここで、命令デコーダ111は、デコードに必要な各種制御を実行する回路である。
データ長保持回路119は、いわゆる演算語長等、演算やデータ転送の処理対象となるデータのデータ長を示すデータ長選択用情報を保持するための記憶回路である。
第1種命令対応回路112は、デコード対象の命令コードが第1種命令である場合に、その第1種命令の内容に応じてデータ長保持回路119の内容を更新する機能を有する回路である。なお、第1種命令については、後に詳しく説明する。
データ長保持回路119は、いわゆる演算語長等、演算やデータ転送の処理対象となるデータのデータ長を示すデータ長選択用情報を保持するための記憶回路である。
第1種命令対応回路112は、デコード対象の命令コードが第1種命令である場合に、その第1種命令の内容に応じてデータ長保持回路119の内容を更新する機能を有する回路である。なお、第1種命令については、後に詳しく説明する。
また、第2種命令対応回路113は、デコード対象の命令コードが第2種命令である場合に、データ長保持回路119の内容に基づいて、その第2種命令の命令コードに応じた処理の対象となるデータのデータ長を特定し、そのデータ長に応じたデコードを命令デコーダ111に行わせるために、そのデータ長を命令デコーダ111に伝達する機能を有する回路である。なお、第2種命令については、後に詳しく説明する。
<1-2.データ>
以下、マイクロプロセッサ100において用いられるデータ長選択用情報及び各種命令について説明する。
<1-2-1.データ長選択用情報>
図2は、データ長保持回路119の保持内容を示す図である。
以下、マイクロプロセッサ100において用いられるデータ長選択用情報及び各種命令について説明する。
<1-2-1.データ長選択用情報>
図2は、データ長保持回路119の保持内容を示す図である。
同図に示すように、データ長保持回路119は、汎用レジスタ毎に2ビットのデータ長選択用情報を記憶する。即ち、レジスタR0対応のデータ長選択用情報から、レジスタR7対応のデータ長選択用情報までの合計16ビットの情報が、データ長保持回路119に記憶されることになる。
なお、その2ビットのデータ長選択用情報における各値の意味は、次のようになっている。2ビットの00b(b:2進数表記)は、8ビット(1バイト)のデータ長を示し、01bは、16ビット(2バイト)のデータ長を示し、10bは、32ビット(4バイト)のデータ長を示す。
なお、その2ビットのデータ長選択用情報における各値の意味は、次のようになっている。2ビットの00b(b:2進数表記)は、8ビット(1バイト)のデータ長を示し、01bは、16ビット(2バイト)のデータ長を示し、10bは、32ビット(4バイト)のデータ長を示す。
<1-2-2.命令フォーマット>
図3は、マイクロプロセッサ100がデコード可能な命令の命令フォーマットを示す図である。
同図に示すように命令は、命令コードを識別するための16ビットのオペコードフィールド10と、命令コードに応じて0ビット〜32ビットの所定サイズに定まるオペランドデータフィールド20とから構成される。
図3は、マイクロプロセッサ100がデコード可能な命令の命令フォーマットを示す図である。
同図に示すように命令は、命令コードを識別するための16ビットのオペコードフィールド10と、命令コードに応じて0ビット〜32ビットの所定サイズに定まるオペランドデータフィールド20とから構成される。
ここで、オペコードフィールド10は、基本的な命令種別の識別のための8ビットのメインフィールド11(main)、詳細な命令種別の識別又はデータ長の識別のための2ビットのサブフィールド12(sub)、及び、いずれかの汎用レジスタを処理対象として指定するための各3ビットのソースレジスタフィールド13(src)とディスティネーションレジスタフィールド14(dst)から構成される。
<1-2-3.第1種命令>
図4は、第1種命令対応回路112の処理対象となる第1種命令を例示した図である。
以下、図4に例示した各第1種命令について、ニモニックコードを用いて、その命令の意味と、その命令に対応して第1種命令対応回路112によりなされるデータ長選択用情報の更新とを説明する。
(a) 「mov (d32),Rn」というmov命令は、32ビット(4バイト)のオペランドデータフィールドで指定されたメモリアドレスが指し示す位置の、データメモリ150内の8ビットのデータを、ディスティネーションレジスタフィールドで示すレジスタR0〜R7のいずれかに転送することを指示する命令である。このmov命令をデコードする際には、第1種命令対応回路112は、そのディスティネーションレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報を、8ビットを示す値(00b)に更新する。
(b) 「mov (d32):16,Rn」というmov命令は、32ビットのオペランドデータフィールドで指定されたメモリアドレスが指し示す位置の、データメモリ150内の16ビットのデータを、ディスティネーションレジスタフィールドで示すレジスタR0〜R7のいずれかに転送することを指示する命令である。このmov命令をデコードする際には、第1種命令対応回路112は、データ長選択用情報を、16ビットを示す値(01b)に更新する。このmov命令をデコードする際には、第1種命令対応回路112は、そのディスティネーションレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報を、16ビットを示す値(01b)に更新する。なお、このmov命令は、オペコードフィールドの内容については、前述の「mov (d32),Rn」というmov命令とは、データ長の識別に用いられたサブフィールド(sub)の内容のみが異なる。
(c) 「mov imm8,Rn」というmov命令は、8ビットのオペランドデータフィールドで指定された即値を、ディスティネーションレジスタフィールドで示すレジスタR0〜R7のいずれかに格納することを指示する命令である。このmov命令をデコードする際には、第1種命令対応回路112は、そのディスティネーションレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報を、8ビットを示す値(00b)に更新する。
(d) 「mov imm16,Rn」というmov命令は、16ビットのオペランドデータフィールドで指定された即値を、ディスティネーションレジスタフィールドで示すレジスタR0〜R7のいずれかに格納することを指示する命令である。このmov命令をデコードする際には、第1種命令対応回路112は、そのディスティネーションレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報を、16ビットを示す値(01b)に更新する。なお、このmov命令は、オペコードフィールドの内容については、前述の「mov imm8,Rn」というmov命令とは、データ長の識別に用いられたサブフィールド(sub)の内容のみが異なる。
(e) 「ext Rn」というext命令は、ディスティネーションレジスタフィールドで示すレジスタR0〜R7のいずれかの内容を、8ビットのデータから16ビットのデータへと拡張することを指示する命令である。このext命令をデコードする際には、第1種命令対応回路112は、そのディスティネーションレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報を、16ビットを示す値(01b)に更新する。
(f) 「mov Rn,Rm」というmov命令は、ソースレジスタフィールドで示すレジスタR0〜R7のいずれかの内容を、ディスティネーションレジスタフィールドで示すレジスタR0〜R7のいずれかに転送することを指示する命令である。このmov命令をデコードする際には、第1種命令対応回路112は、そのディスティネーションレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報の内容を、ソースレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報の内容と同一になるように更新する。
(g) 「mul Rn,Rm」というmul命令は、ソースレジスタフィールドで示すレジスタR0〜R7のいずれかの内容と、ディスティネーションレジスタフィールドで示すレジスタR0〜R7のいずれかの内容とを乗算して、その結果である積を、そのディスティネーションレジスタフィールドで示す汎用レジスタに格納することを指示する命令である。このmul命令をデコードする際には、第1種命令対応回路112は、そのディスティネーションレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報の内容を、その更新前のソースレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報の内容が指し示すデータ長の2倍のデータ長を示すものとなるように、更新する。
図4は、第1種命令対応回路112の処理対象となる第1種命令を例示した図である。
以下、図4に例示した各第1種命令について、ニモニックコードを用いて、その命令の意味と、その命令に対応して第1種命令対応回路112によりなされるデータ長選択用情報の更新とを説明する。
(a) 「mov (d32),Rn」というmov命令は、32ビット(4バイト)のオペランドデータフィールドで指定されたメモリアドレスが指し示す位置の、データメモリ150内の8ビットのデータを、ディスティネーションレジスタフィールドで示すレジスタR0〜R7のいずれかに転送することを指示する命令である。このmov命令をデコードする際には、第1種命令対応回路112は、そのディスティネーションレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報を、8ビットを示す値(00b)に更新する。
(b) 「mov (d32):16,Rn」というmov命令は、32ビットのオペランドデータフィールドで指定されたメモリアドレスが指し示す位置の、データメモリ150内の16ビットのデータを、ディスティネーションレジスタフィールドで示すレジスタR0〜R7のいずれかに転送することを指示する命令である。このmov命令をデコードする際には、第1種命令対応回路112は、データ長選択用情報を、16ビットを示す値(01b)に更新する。このmov命令をデコードする際には、第1種命令対応回路112は、そのディスティネーションレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報を、16ビットを示す値(01b)に更新する。なお、このmov命令は、オペコードフィールドの内容については、前述の「mov (d32),Rn」というmov命令とは、データ長の識別に用いられたサブフィールド(sub)の内容のみが異なる。
(c) 「mov imm8,Rn」というmov命令は、8ビットのオペランドデータフィールドで指定された即値を、ディスティネーションレジスタフィールドで示すレジスタR0〜R7のいずれかに格納することを指示する命令である。このmov命令をデコードする際には、第1種命令対応回路112は、そのディスティネーションレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報を、8ビットを示す値(00b)に更新する。
(d) 「mov imm16,Rn」というmov命令は、16ビットのオペランドデータフィールドで指定された即値を、ディスティネーションレジスタフィールドで示すレジスタR0〜R7のいずれかに格納することを指示する命令である。このmov命令をデコードする際には、第1種命令対応回路112は、そのディスティネーションレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報を、16ビットを示す値(01b)に更新する。なお、このmov命令は、オペコードフィールドの内容については、前述の「mov imm8,Rn」というmov命令とは、データ長の識別に用いられたサブフィールド(sub)の内容のみが異なる。
(e) 「ext Rn」というext命令は、ディスティネーションレジスタフィールドで示すレジスタR0〜R7のいずれかの内容を、8ビットのデータから16ビットのデータへと拡張することを指示する命令である。このext命令をデコードする際には、第1種命令対応回路112は、そのディスティネーションレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報を、16ビットを示す値(01b)に更新する。
(f) 「mov Rn,Rm」というmov命令は、ソースレジスタフィールドで示すレジスタR0〜R7のいずれかの内容を、ディスティネーションレジスタフィールドで示すレジスタR0〜R7のいずれかに転送することを指示する命令である。このmov命令をデコードする際には、第1種命令対応回路112は、そのディスティネーションレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報の内容を、ソースレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報の内容と同一になるように更新する。
(g) 「mul Rn,Rm」というmul命令は、ソースレジスタフィールドで示すレジスタR0〜R7のいずれかの内容と、ディスティネーションレジスタフィールドで示すレジスタR0〜R7のいずれかの内容とを乗算して、その結果である積を、そのディスティネーションレジスタフィールドで示す汎用レジスタに格納することを指示する命令である。このmul命令をデコードする際には、第1種命令対応回路112は、そのディスティネーションレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報の内容を、その更新前のソースレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報の内容が指し示すデータ長の2倍のデータ長を示すものとなるように、更新する。
第1種命令は、汎用レジスタに特定のデータ長の即値データを格納することを指示する命令や、汎用レジスタにデータメモリ内の特定のデータ長のデータを転送することを指示する命令等、汎用レジスタに格納されたデータのデータ長を特定する働きをする命令であるので図4に例示した命令の他にも存在し、第1種命令対応回路112は、第1種命令それぞれについて、予め定められたアルゴリズムに従って、データ長選択用情報を更新する。
<1-2-4.第2種命令>
図5は、第2種命令対応回路113の処理対象となる第2種命令を例示した図である。
以下、図5に例示した各第2種命令について、ニモニックコードを用いて、その命令の意味と、その命令に対応して第2種命令対応回路113によりなされるデータ長の選択とを説明する。
(a) 「mov Rn,(d32,Rm)」というmov命令は、ソースレジスタフィールドで示すレジスタR0〜R7のいずれかに格納されている不特定データ長のデータを、データメモリ150内の、32ビット(4バイト)のオペランドデータフィールドで指定されたメモリアドレス値とディスティネーションレジスタフィールドで示すレジスタR0〜R7のいずれかに格納されている値との和であるメモリアドレスが指し示す位置に転送することを指示する命令である。このmov命令をデコードする際には、第2種命令対応回路113は、そのソースレジスタフィールドで示す汎用レジスタに対応するデータ長選択用情報を参照して、そのデータ長選択用情報が示すデータ長を選択することで、不特定データ長を特定する。なお、第2種命令対応回路113により特定されたデータ長は、命令デコーダ111に伝達され、命令デコーダ111において、そのデータ長を命令の処理対象とするものとして命令実行に係る制御がなされる。
(b) 「mov Rn,Rm」というmov命令は、上述したように第1種命令でもあり、また第2種命令でもある。このmov命令をデコードする際には、第2種命令対応回路113は、そのソースレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報が示すデータ長を選択することにより、そのmov命令で指定された各汎用レジスタに格納されたデータのデータ長を特定する。
(c) 「add Rn,Rm」というadd命令は、ソースレジスタフィールドで示すレジスタR0〜R7のいずれかの内容と、ディスティネーションレジスタフィールドで示すレジスタR0〜R7のいずれかの内容とを加算して、その結果である和を、そのディスティネーションレジスタフィールドで示す汎用レジスタに格納することを指示する命令である。このadd命令をデコードする際には、第2種命令対応回路113は、そのソースレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報が示すデータ長を選択することにより、そのadd命令で指定された各汎用レジスタに格納されたデータのデータ長を特定する。
(d) 「sub Rn,Rm」というsub命令は、ソースレジスタフィールドで示すレジスタR0〜R7のいずれかの内容から、ディスティネーションレジスタフィールドで示すレジスタR0〜R7のいずれかの内容を減算して、その結果である差を、そのディスティネーションレジスタフィールドで示す汎用レジスタに格納することを指示する命令である。このsub命令をデコードする際には、第2種命令対応回路113は、そのソースレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報が示すデータ長を選択することにより、そのsub命令で指定された各汎用レジスタに格納されたデータのデータ長を特定する。
図5は、第2種命令対応回路113の処理対象となる第2種命令を例示した図である。
以下、図5に例示した各第2種命令について、ニモニックコードを用いて、その命令の意味と、その命令に対応して第2種命令対応回路113によりなされるデータ長の選択とを説明する。
(a) 「mov Rn,(d32,Rm)」というmov命令は、ソースレジスタフィールドで示すレジスタR0〜R7のいずれかに格納されている不特定データ長のデータを、データメモリ150内の、32ビット(4バイト)のオペランドデータフィールドで指定されたメモリアドレス値とディスティネーションレジスタフィールドで示すレジスタR0〜R7のいずれかに格納されている値との和であるメモリアドレスが指し示す位置に転送することを指示する命令である。このmov命令をデコードする際には、第2種命令対応回路113は、そのソースレジスタフィールドで示す汎用レジスタに対応するデータ長選択用情報を参照して、そのデータ長選択用情報が示すデータ長を選択することで、不特定データ長を特定する。なお、第2種命令対応回路113により特定されたデータ長は、命令デコーダ111に伝達され、命令デコーダ111において、そのデータ長を命令の処理対象とするものとして命令実行に係る制御がなされる。
(b) 「mov Rn,Rm」というmov命令は、上述したように第1種命令でもあり、また第2種命令でもある。このmov命令をデコードする際には、第2種命令対応回路113は、そのソースレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報が示すデータ長を選択することにより、そのmov命令で指定された各汎用レジスタに格納されたデータのデータ長を特定する。
(c) 「add Rn,Rm」というadd命令は、ソースレジスタフィールドで示すレジスタR0〜R7のいずれかの内容と、ディスティネーションレジスタフィールドで示すレジスタR0〜R7のいずれかの内容とを加算して、その結果である和を、そのディスティネーションレジスタフィールドで示す汎用レジスタに格納することを指示する命令である。このadd命令をデコードする際には、第2種命令対応回路113は、そのソースレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報が示すデータ長を選択することにより、そのadd命令で指定された各汎用レジスタに格納されたデータのデータ長を特定する。
(d) 「sub Rn,Rm」というsub命令は、ソースレジスタフィールドで示すレジスタR0〜R7のいずれかの内容から、ディスティネーションレジスタフィールドで示すレジスタR0〜R7のいずれかの内容を減算して、その結果である差を、そのディスティネーションレジスタフィールドで示す汎用レジスタに格納することを指示する命令である。このsub命令をデコードする際には、第2種命令対応回路113は、そのソースレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報が示すデータ長を選択することにより、そのsub命令で指定された各汎用レジスタに格納されたデータのデータ長を特定する。
なお、このsub命令は、オペコードフィールドの内容については、前述のsub命令とは、詳細な命令種別の識別に用いられたサブフィールド(sub)の内容のみが異なる。この例は、add命令とsub命令とがデータ長を指定する命令ではなく、サブフィールド(sub)をデータ長の識別に用いる必要がないため、サブフィールド(sub)を詳細な命令種別の識別に用いている例であり、このような方法で、命令セット中に、より多くの命令を包含させ得るようになることを表している。
(e) 「mul Rn,Rm」というmul命令も、上述したように第1種命令でもあり、また第2種命令でもある。このmul命令をデコードする際には、第2種命令対応回路113は、そのソースレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報が示すデータ長を選択することにより、そのmul命令で指定された各汎用レジスタに格納されたデータのデータ長を特定する。なお、mul命令をデコードする際に、命令デコーダ111は、乗算結果についてのデータ長が、その第2種命令対応回路113において特定されたデータ長の2倍であるとして、命令実行に係る制御を行う。
(e) 「mul Rn,Rm」というmul命令も、上述したように第1種命令でもあり、また第2種命令でもある。このmul命令をデコードする際には、第2種命令対応回路113は、そのソースレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報が示すデータ長を選択することにより、そのmul命令で指定された各汎用レジスタに格納されたデータのデータ長を特定する。なお、mul命令をデコードする際に、命令デコーダ111は、乗算結果についてのデータ長が、その第2種命令対応回路113において特定されたデータ長の2倍であるとして、命令実行に係る制御を行う。
なお、第2種命令は、それ自身では処理対象となるデータのデータ長を特定することができない命令であって、図5に例示した命令の他にも存在し、第2種命令対応回路113は、第2種命令それぞれについて、予め定められたアルゴリズムに従って、データ長選択用情報を参照して、命令の処理対象となるデータのデータ長を特定する。
<1-3.動作>
以下、上述した構成を備えるマイクロプロセッサ100の動作について説明する。
<1-3.動作>
以下、上述した構成を備えるマイクロプロセッサ100の動作について説明する。
図6は、マイクロプロセッサ100の動作を示すフローチャートである。
同図に示すように、マイクロプロセッサ100は、命令メモリ140から命令を読み出してデコード部110に取り込む命令読出処理(ステップS1)と、デコード部110による命令解釈処理(ステップS2)と、演算ユニット130及びインタフェース部160の動作によって命令の実行を行う命令実行処理(ステップS3)とを、例えばクロック供給停止等による停止指示が生じるまで(ステップS4)、繰り返す。
同図に示すように、マイクロプロセッサ100は、命令メモリ140から命令を読み出してデコード部110に取り込む命令読出処理(ステップS1)と、デコード部110による命令解釈処理(ステップS2)と、演算ユニット130及びインタフェース部160の動作によって命令の実行を行う命令実行処理(ステップS3)とを、例えばクロック供給停止等による停止指示が生じるまで(ステップS4)、繰り返す。
図7は、デコード部110の行う命令解釈処理を示すフローチャートである。
デコード部110は、命令メモリ140から読み込まれた命令を、命令デコーダ111によりデコードして命令実行の準備のための制御を行い(ステップS11)、その命令が第2種命令であれば(ステップS12)、第2種命令対応回路113を動作させる。なお、ステップS11の段階のデコードでは、不特定データ長の命令については、データ長に係る制御はなされない。
デコード部110は、命令メモリ140から読み込まれた命令を、命令デコーダ111によりデコードして命令実行の準備のための制御を行い(ステップS11)、その命令が第2種命令であれば(ステップS12)、第2種命令対応回路113を動作させる。なお、ステップS11の段階のデコードでは、不特定データ長の命令については、データ長に係る制御はなされない。
第2種命令対応回路113は、その命令で指定された特定の汎用レジスタに対応するデータ長選択用情報を参照して(ステップS13)、前述したようにデータ長を特定して(ステップS14)、そのデータ長を命令デコーダ111に伝達し、命令デコーダ111は、伝達されたデータ長が8ビットであれば、命令を、8ビットのデータを処理対象とする命令として更にデコードし(ステップS15)、伝達されたデータ長が16ビットであれば、命令を、16ビットのデータを処理対象とする命令として更にデコードし(ステップS16)、或いは伝達されたデータ長が32ビットであれば、命令を32ビットのデータを処理対象とする命令として更にデコードする(ステップS17)。
続いて、命令デコーダ111は、その命令が第1種命令であれば(ステップS18)、第1種命令対応回路112を動作させ、その第1種命令対応回路112は、その命令で指定された特定の汎用レジスタに対応するデータ長選択用情報を、前述したように更新する(ステップS19)。
なお、命令メモリ140から読み込まれた命令が第2種命令でなければ、ステップS13〜S17は行われず、その読み込まれた命令が第1種命令でなければ、ステップS19は行われない。
なお、命令メモリ140から読み込まれた命令が第2種命令でなければ、ステップS13〜S17は行われず、その読み込まれた命令が第1種命令でなければ、ステップS19は行われない。
以下、デコード部110が、不特定データ長の命令の処理対象となるデータのデータ長を特定する具体的動作について、図8及び図9を用いて説明する。
図8は、マイクロプロセッサが解釈実行するプログラムの例を示す図である。
図9は、各命令のデコードに基づくデータ長選択用情報の遷移を示す図である。同図は、図8の命令1、命令2、命令3、・・・のそれぞれのデコード終了直後に相当する各時刻t1、t2、t3、・・・における各汎用レジスタに対応するデータ長選択用情報を表している。
(a) まず、命令1をデコード部110がデコードすると、命令1が8ビットの即値であるaah(h:16進数表記)をレジスタR0に格納する第1種命令なので、第1種命令対応回路112によりレジスタR0に対応するデータ長選択用情報が、8ビットのデータ長を示すように00b(b:2進数表記)に更新される(図9中時刻t1参照)。
(b) 次に、不特定データ長のレジスタR0の内容をレジスタR2に転送することを指示する命令2を、デコード部110がデコードする。この際には、レジスタR0に対応するデータ長選択用情報が8ビットを示すため、第2種命令対応回路113により8ビットがデータ長として特定され、命令2が、レジスタR0の8ビットのデータがレジスタR2に転送される命令としてデコードされる。また第1種命令対応回路112によって、そのレジスタR0に対応するデータ長選択用情報の内容が、レジスタR2に対応するデータ長選択用情報の内容としてコピーされる。この結果として、レジスタR2に対応するデータ長選択用情報は、00bになる(図9中時刻t2参照)。
(c) 次に、不特定データ長のレジスタR0の内容とレジスタR2の内容とを乗算してその積をレジスタR2に格納することを指示する命令3を、デコード部110がデコードする。この際には、レジスタR0に対応するデータ長選択用情報が8ビットを示すため、第2種命令対応回路113により8ビットがデータ長として特定され、命令3が、レジスタR0とレジスタR2とのそれぞれ8ビットのデータを演算対象として乗算が行われるべきものとしてデコードされる。また第1種命令対応回路112によって、レジスタR2に対応するデータ長選択用情報は、8ビットの2倍である16ビットを示す値01bに更新される(図9中時刻t3参照)。
(d) 続いて不特定データ長のレジスタR2の内容をデータメモリ150内に転送することを指示する命令4がデコード部110にデコードされた後に、データメモリ150内の16ビットのデータがレジスタR1に転送されることを指示する命令5がデコードされる。この際には、第1種命令対応回路112によって、レジスタR1に対応するデータ長選択用情報は、16ビットを示す値01bに更新される(図9中時刻t5参照)。
(e) 次に、レジスタR0に係るext命令である命令6を、デコード部110がデコードする。この際に、第1種命令対応回路112によって、レジスタR0に対応するデータ長選択用情報は、16ビットを示す値01bに更新される(図9中時刻t6参照)。
(f) 続いて不特定データ長のレジスタR0の内容とレジスタR1の内容を加算することを指定する命令7がデコード部110にデコードされる。この際に、第2種命令対応回路113により加算対象の各データのデータ長は、レジスタR0に対応するデータ長選択用情報の参照により、01bで示される16ビットであるものとして、加算が行われる。
図8は、マイクロプロセッサが解釈実行するプログラムの例を示す図である。
図9は、各命令のデコードに基づくデータ長選択用情報の遷移を示す図である。同図は、図8の命令1、命令2、命令3、・・・のそれぞれのデコード終了直後に相当する各時刻t1、t2、t3、・・・における各汎用レジスタに対応するデータ長選択用情報を表している。
(a) まず、命令1をデコード部110がデコードすると、命令1が8ビットの即値であるaah(h:16進数表記)をレジスタR0に格納する第1種命令なので、第1種命令対応回路112によりレジスタR0に対応するデータ長選択用情報が、8ビットのデータ長を示すように00b(b:2進数表記)に更新される(図9中時刻t1参照)。
(b) 次に、不特定データ長のレジスタR0の内容をレジスタR2に転送することを指示する命令2を、デコード部110がデコードする。この際には、レジスタR0に対応するデータ長選択用情報が8ビットを示すため、第2種命令対応回路113により8ビットがデータ長として特定され、命令2が、レジスタR0の8ビットのデータがレジスタR2に転送される命令としてデコードされる。また第1種命令対応回路112によって、そのレジスタR0に対応するデータ長選択用情報の内容が、レジスタR2に対応するデータ長選択用情報の内容としてコピーされる。この結果として、レジスタR2に対応するデータ長選択用情報は、00bになる(図9中時刻t2参照)。
(c) 次に、不特定データ長のレジスタR0の内容とレジスタR2の内容とを乗算してその積をレジスタR2に格納することを指示する命令3を、デコード部110がデコードする。この際には、レジスタR0に対応するデータ長選択用情報が8ビットを示すため、第2種命令対応回路113により8ビットがデータ長として特定され、命令3が、レジスタR0とレジスタR2とのそれぞれ8ビットのデータを演算対象として乗算が行われるべきものとしてデコードされる。また第1種命令対応回路112によって、レジスタR2に対応するデータ長選択用情報は、8ビットの2倍である16ビットを示す値01bに更新される(図9中時刻t3参照)。
(d) 続いて不特定データ長のレジスタR2の内容をデータメモリ150内に転送することを指示する命令4がデコード部110にデコードされた後に、データメモリ150内の16ビットのデータがレジスタR1に転送されることを指示する命令5がデコードされる。この際には、第1種命令対応回路112によって、レジスタR1に対応するデータ長選択用情報は、16ビットを示す値01bに更新される(図9中時刻t5参照)。
(e) 次に、レジスタR0に係るext命令である命令6を、デコード部110がデコードする。この際に、第1種命令対応回路112によって、レジスタR0に対応するデータ長選択用情報は、16ビットを示す値01bに更新される(図9中時刻t6参照)。
(f) 続いて不特定データ長のレジスタR0の内容とレジスタR1の内容を加算することを指定する命令7がデコード部110にデコードされる。この際に、第2種命令対応回路113により加算対象の各データのデータ長は、レジスタR0に対応するデータ長選択用情報の参照により、01bで示される16ビットであるものとして、加算が行われる。
命令8以後についても、デコード部110により順次デコードされる。
<2.実施形態2>
以下、本発明の実施形態2に係るマイクロプロセッサについて説明する。
<2-1.概要>
実施形態2に係るマイクロプロセッサは、実施形態1に係るマイクロプロセッサを部分的に変形したものである。実施形態1においては、データ長保持回路には、汎用レジスタ毎に対応してデータ長選択用情報が保持されるものとし、その各データ長選択用情報を活用して不特定データ長の命令におけるデータ長の特定を行うマイクロプロセッサを示した。これに対し、実施形態2に係るマイクロプロセッサは、データ長保持回路に、データ長選択用情報を1つだけ保持させ、更に汎用レジスタそれぞれに対応して、そのデータ長選択用情報の参照が有効か否かを示す有効性情報を保持させておき、その1つのデータ長選択用と各有効性情報との組を活用して不特定データ長の命令におけるデータ長の特定を行うものである。この実施形態2に係るマイクロプロセッサは、汎用レジスタ毎にデータ長選択用情報を有していないため、実行対象プログラムが例えば、プログラム全体或いはある程度大きな単位で、基本的に8ビットや16ビット等の単一のデータ長のデータを取り扱うプログラムである場合に特に適している。
<2.実施形態2>
以下、本発明の実施形態2に係るマイクロプロセッサについて説明する。
<2-1.概要>
実施形態2に係るマイクロプロセッサは、実施形態1に係るマイクロプロセッサを部分的に変形したものである。実施形態1においては、データ長保持回路には、汎用レジスタ毎に対応してデータ長選択用情報が保持されるものとし、その各データ長選択用情報を活用して不特定データ長の命令におけるデータ長の特定を行うマイクロプロセッサを示した。これに対し、実施形態2に係るマイクロプロセッサは、データ長保持回路に、データ長選択用情報を1つだけ保持させ、更に汎用レジスタそれぞれに対応して、そのデータ長選択用情報の参照が有効か否かを示す有効性情報を保持させておき、その1つのデータ長選択用と各有効性情報との組を活用して不特定データ長の命令におけるデータ長の特定を行うものである。この実施形態2に係るマイクロプロセッサは、汎用レジスタ毎にデータ長選択用情報を有していないため、実行対象プログラムが例えば、プログラム全体或いはある程度大きな単位で、基本的に8ビットや16ビット等の単一のデータ長のデータを取り扱うプログラムである場合に特に適している。
<2-2.構成>
図10は、本発明の実施形態2に係るマイクロプロセッサ200の構成図である。
マイクロプロセッサ200は、実施形態1に係るマイクロプロセッサ100のデコード部について変形したものであり、同図に示すように、デコード部210、汎用レジスタ120、演算ユニット130、命令メモリ140、データメモリ150及びインタフェース部160を備える。なお、実施形態1で説明した部分と同一のものについては、同じ符号を付しており、ここでは詳しく説明しない。
図10は、本発明の実施形態2に係るマイクロプロセッサ200の構成図である。
マイクロプロセッサ200は、実施形態1に係るマイクロプロセッサ100のデコード部について変形したものであり、同図に示すように、デコード部210、汎用レジスタ120、演算ユニット130、命令メモリ140、データメモリ150及びインタフェース部160を備える。なお、実施形態1で説明した部分と同一のものについては、同じ符号を付しており、ここでは詳しく説明しない。
デコード部210は、命令メモリ140から逐次読み出された命令コードに基づいて、その命令コードに対応する動作を演算ユニット130及びインタフェース部160に行わせるための制御内容を決定し、その制御を行うための制御信号をインタフェース部160に伝送する機能、即ち命令をデコードする機能を担う回路であり、図10に示すように、命令デコーダ211、第1種命令対応回路212、第2種命令対応回路213、第3種命令対応回路214及びデータ長保持回路219を有する。
ここで、命令デコーダ211は、デコードに必要な各種制御を実行する回路である。
データ長保持回路219は、いわゆる演算語長等、演算やデータ転送の処理対象となるデータのデータ長を示すデータ長選択用情報を1つ保持し、更に各汎用レジスタに対応する有効性情報を保持する回路である。図11は、データ長保持回路219の保持内容を示す図である。同図に示すように、1ビットの各有効性情報は、値0bで有効を示し、値1bで無効を示す。
データ長保持回路219は、いわゆる演算語長等、演算やデータ転送の処理対象となるデータのデータ長を示すデータ長選択用情報を1つ保持し、更に各汎用レジスタに対応する有効性情報を保持する回路である。図11は、データ長保持回路219の保持内容を示す図である。同図に示すように、1ビットの各有効性情報は、値0bで有効を示し、値1bで無効を示す。
第1種命令対応回路212は、デコード対象の命令コードが第1種命令(図4参照)である場合に、その第1種命令の内容に応じてデータ長保持回路219の内容を更新する機能を有する回路である。
この第1種命令対応回路212は、実施形態1で示した第1種命令対応回路112が第1種命令で指定された汎用レジスタに対応するデータ長選択用情報をその第1種命令に応じて更新するものであることとは異なり、第1種命令で指定された汎用レジスタに対応する有効性情報を、有効を示すように設定した上で、その汎用レジスタがいずれであっても1つのデータ長選択用情報をその第1種命令に応じて更新する回路である。
この第1種命令対応回路212は、実施形態1で示した第1種命令対応回路112が第1種命令で指定された汎用レジスタに対応するデータ長選択用情報をその第1種命令に応じて更新するものであることとは異なり、第1種命令で指定された汎用レジスタに対応する有効性情報を、有効を示すように設定した上で、その汎用レジスタがいずれであっても1つのデータ長選択用情報をその第1種命令に応じて更新する回路である。
第2種命令対応回路213は、デコード対象の命令コードが第2種命令(図5参照)である場合に、データ長保持回路219の内容に基づいて、その第2種命令の命令コードに応じた処理の対象となるデータのデータ長を特定し、そのデータ長に応じたデコードを命令デコーダ211に行わせるために、そのデータ長を命令デコーダ211に伝達する機能を有する回路である。
この第2種命令対応回路213は、実施形態1で示した第2種命令対応回路113が、第2種命令に応じて、処理対象のデータが格納されているはずの汎用レジスタに対応するデータ長選択用情報を参照して、その第2種命令における処理対象データのデータ長を選択的に特定するものであることとは異なり、処理対象のデータが格納されているはずの汎用レジスタに対応する有効性情報を参照した上で、その有効性情報が有効を示すときに限って唯一のデータ長選択用情報を参照して、その第2種命令における処理対象データのデータ長を選択的に特定する回路である。
第3種命令対応回路214は、デコード対象の命令コードが第3種命令である場合に、データ長保持回路219に保持されている有効性情報を更新する機能を有する回路である。第3種命令は、例えば「レジスタR1に、あるメモリアドレス値を格納する」ための命令等、汎用レジスタに格納されている内容をデータメモリ150に対応したメモリアドレスを指し示す値として用いる働きをする命令であり、これに対応して第3種命令対応回路214は、第3種命令によりメモリアドレス値が格納されるものとして指定される汎用レジスタに対応する有効性情報を、無効を示すように更新する。
<2-3.動作>
以下、上述した構成を備えるマイクロプロセッサ200の動作について説明する。
マイクロプロセッサ200は、マイクロプロセッサ100と同様に図6に示す動作を行う。但し、デコード部210による命令解釈処理(図7参照)は、次のように変形したものとなる。
(a) まず、命令デコーダ211は、命令メモリ140から読み出された命令をデコードする。
(b) 続いて、第2種命令対応回路213は、その命令が第2種命令であるか否かを判別し、その結果、第2種命令である場合において、第2種命令で処理対象データが格納されているものとして指定されている汎用レジスタに対応する有効性情報が有効を示すときに限り、データ長選択用情報で示されるデータ長を、処理対象データのデータ長として特定し、データ長を命令デコーダ211に伝達することで、命令デコーダ211によりそのデータ長に対応した更なるデコードがなされる。なお、第2種命令対応回路213は、その汎用レジスタに対応する有効性情報が無効を示すときには、メモリアドレスを指定するために必要とされる所定の長さ、例えば32ビットを、処理対象データのデータ長として特定して、命令デコーダ211に伝達する。
(c) 続いて、デコードした命令が第1種命令であるか否かを判断し、その結果、第1種命令である場合においては、第1種命令に応じて、データ長選択用情報を更新した上にその第1種命令で指定されている汎用レジスタに対応する有効性情報を、有効を示すように更新する。
(d) 次に、デコードした命令が第3種命令であるか否かを判別し、その結果、第3種命令である場合においては、第3種命令において指定されている汎用レジスタに対応する有効性情報を無効を示すように更新する。
以下、上述した構成を備えるマイクロプロセッサ200の動作について説明する。
マイクロプロセッサ200は、マイクロプロセッサ100と同様に図6に示す動作を行う。但し、デコード部210による命令解釈処理(図7参照)は、次のように変形したものとなる。
(a) まず、命令デコーダ211は、命令メモリ140から読み出された命令をデコードする。
(b) 続いて、第2種命令対応回路213は、その命令が第2種命令であるか否かを判別し、その結果、第2種命令である場合において、第2種命令で処理対象データが格納されているものとして指定されている汎用レジスタに対応する有効性情報が有効を示すときに限り、データ長選択用情報で示されるデータ長を、処理対象データのデータ長として特定し、データ長を命令デコーダ211に伝達することで、命令デコーダ211によりそのデータ長に対応した更なるデコードがなされる。なお、第2種命令対応回路213は、その汎用レジスタに対応する有効性情報が無効を示すときには、メモリアドレスを指定するために必要とされる所定の長さ、例えば32ビットを、処理対象データのデータ長として特定して、命令デコーダ211に伝達する。
(c) 続いて、デコードした命令が第1種命令であるか否かを判断し、その結果、第1種命令である場合においては、第1種命令に応じて、データ長選択用情報を更新した上にその第1種命令で指定されている汎用レジスタに対応する有効性情報を、有効を示すように更新する。
(d) 次に、デコードした命令が第3種命令であるか否かを判別し、その結果、第3種命令である場合においては、第3種命令において指定されている汎用レジスタに対応する有効性情報を無効を示すように更新する。
デコード部210は、以上の(a)〜(d)の手順を命令毎に繰り返すことになる。
<3.実施形態3>
以下、本発明の実施形態3に係るマイクロプロセッサについて説明する。
<3-1.概要>
実施形態3に係るマイクロプロセッサは、実施形態2に係るマイクロプロセッサを部分的に変形したものである。実施形態2においては、データ長保持回路に、唯一のデータ長選択用情報の他に各汎用レジスタに対応して有効性情報を保持し、第1種命令及び第3種命令に応じてデータ長保持回路の内容を更新し、その内容を第2種命令における処理対象データのデータ長を特定するために活用するマイクロプロセッサを示した。これに対して、実施形態3に係るマイクロプロセッサは、データ長保持回路に、1つのデータ長選択用情報だけを保持させて有効性情報は保持させず、特に第1種命令及び第3種命令に係る処理は行わず、第2種命令における処理対象データのデータ長を特定するためのデータ長選択用情報を、NOP命令をデコードする度に、巡回的に8ビット、16ビット、32ビット、8ビット、16ビット、32ビット、8ビット、・・・というデータ長を示すように更新するものである。
<3.実施形態3>
以下、本発明の実施形態3に係るマイクロプロセッサについて説明する。
<3-1.概要>
実施形態3に係るマイクロプロセッサは、実施形態2に係るマイクロプロセッサを部分的に変形したものである。実施形態2においては、データ長保持回路に、唯一のデータ長選択用情報の他に各汎用レジスタに対応して有効性情報を保持し、第1種命令及び第3種命令に応じてデータ長保持回路の内容を更新し、その内容を第2種命令における処理対象データのデータ長を特定するために活用するマイクロプロセッサを示した。これに対して、実施形態3に係るマイクロプロセッサは、データ長保持回路に、1つのデータ長選択用情報だけを保持させて有効性情報は保持させず、特に第1種命令及び第3種命令に係る処理は行わず、第2種命令における処理対象データのデータ長を特定するためのデータ長選択用情報を、NOP命令をデコードする度に、巡回的に8ビット、16ビット、32ビット、8ビット、16ビット、32ビット、8ビット、・・・というデータ長を示すように更新するものである。
<3-2.構成>
実施形態3に係るマイクロプロセッサ(以下、「変形マイクロプロセッサ」という。)は、実施形態2で示したマイクロプロセッサ200(図10参照)とある程度同じ構成要素を備える。但し、この変形マイクロプロセッサは、マイクロプロセッサ200から第3種命令対応回路を削除し、第1種命令対応回路に代えてNOP命令対応回路を設け、データ長保持回路の保持内容を、唯一のデータ長選択用情報のみにしたという点でマイクロプロセッサ200と異なる。なお、命令デコーダは、NOP命令をデコードする際にNOP命令対応回路を動作させ、そのNOP命令対応回路は、データ長選択用情報の内容を、巡回的に更新する。
実施形態3に係るマイクロプロセッサ(以下、「変形マイクロプロセッサ」という。)は、実施形態2で示したマイクロプロセッサ200(図10参照)とある程度同じ構成要素を備える。但し、この変形マイクロプロセッサは、マイクロプロセッサ200から第3種命令対応回路を削除し、第1種命令対応回路に代えてNOP命令対応回路を設け、データ長保持回路の保持内容を、唯一のデータ長選択用情報のみにしたという点でマイクロプロセッサ200と異なる。なお、命令デコーダは、NOP命令をデコードする際にNOP命令対応回路を動作させ、そのNOP命令対応回路は、データ長選択用情報の内容を、巡回的に更新する。
<3-3.動作>
以下、変形マイクロプロセッサの動作について説明する。
変形マイクロプロセッサは、マイクロプロセッサ200と同様に図6に示す動作を行う。但し、デコード部による命令解釈処理は、次のように変形したものとなる。なお、デコード部は、プログラムを解釈するために命令解釈処理を実行開始する前に、データ長選択用情報を例えば8ビットという所定データ長を示す値に初期設定する。
以下、変形マイクロプロセッサの動作について説明する。
変形マイクロプロセッサは、マイクロプロセッサ200と同様に図6に示す動作を行う。但し、デコード部による命令解釈処理は、次のように変形したものとなる。なお、デコード部は、プログラムを解釈するために命令解釈処理を実行開始する前に、データ長選択用情報を例えば8ビットという所定データ長を示す値に初期設定する。
図12は、変形マイクロプロセッサのデコード部により行われる命令解釈処理を示すフローチャートである。
デコード部は、命令メモリ140から読み込まれた命令を、命令デコーダによりデコードして命令実行の準備のための制御を行い(ステップS31)、その命令が第2種命令であれば(ステップS32)、第2種命令対応回路を動作させる。なお、ステップS31の段階のデコードでは、不特定データ長の命令については、データ長に係る制御はなされない。
デコード部は、命令メモリ140から読み込まれた命令を、命令デコーダによりデコードして命令実行の準備のための制御を行い(ステップS31)、その命令が第2種命令であれば(ステップS32)、第2種命令対応回路を動作させる。なお、ステップS31の段階のデコードでは、不特定データ長の命令については、データ長に係る制御はなされない。
第2種命令対応回路は、データ長選択用情報を参照して(ステップS33)、データ長を特定して(ステップS34)、そのデータ長を命令デコーダに伝達し、命令デコーダは、伝達されたデータ長が8ビットであれば、命令を、8ビットのデータを処理対象とする命令として更にデコードし(ステップS35)、伝達されたデータ長が16ビットであれば、命令を、16ビットのデータを処理対象とする命令として更にデコードし(ステップS36)、或いは伝達されたデータ長が32ビットであれば、命令を32ビットのデータを処理対象とする命令として更にデコードする(ステップS37)。
また、命令デコーダは、読み込まれた命令が第2種命令でなくNOP命令であれば(ステップS38)、NOP命令対応回路を動作させ、そのNOP命令対応回路は、そのデータ長選択用情報が8ビットを示すものであれば16ビットを示すように更新し(ステップS40、S41)、データ長選択用情報が16ビットを示すものであれば32ビットを示すように更新し(ステップS40、S42)、データ長選択用情報が32ビットを示すものであれば8ビットを示すように更新する(ステップS40、S43)。
<4.補足>
以上、本発明に係るマイクロプロセッサについて実施形態1〜3に基づいて説明したが、以下のように変形することもでき、本発明は上述の実施形態で示したマイクロプロセッサに限られないことは勿論である。
(1) 上述の実施形態では、レジスタR0〜R7という8つの汎用レジスタに格納されるデータに関してデータ長選択用情報を反映してデータ長を特定するマイクロプロセッサを示したが、マイクロプロセッサが有する汎用レジスタの数は8つには限られることはなく、また、一部の汎用レジスタについてのみ、その格納するデータのデータ長の特定を、データ長選択用情報を用いて行う構成としてもよい。
<4.補足>
以上、本発明に係るマイクロプロセッサについて実施形態1〜3に基づいて説明したが、以下のように変形することもでき、本発明は上述の実施形態で示したマイクロプロセッサに限られないことは勿論である。
(1) 上述の実施形態では、レジスタR0〜R7という8つの汎用レジスタに格納されるデータに関してデータ長選択用情報を反映してデータ長を特定するマイクロプロセッサを示したが、マイクロプロセッサが有する汎用レジスタの数は8つには限られることはなく、また、一部の汎用レジスタについてのみ、その格納するデータのデータ長の特定を、データ長選択用情報を用いて行う構成としてもよい。
また、汎用レジスタのサイズは、32ビットデータが格納可能なサイズであることとしたが、必ずしも32ビットに限られず、例えば16ビットであっても64ビットであっても差し支えない。そのサイズに応じて、より詳しくは、各演算やデータ転送の処理対象に関するデータ長として取り得るサイズに応じて、データ長選択用情報が表されるようにしておけばよい。例えば、8ビットと16ビットしかデータ長として取り得ないのであれば、データ長選択用情報はその2つのデータ長を識別可能な情報であれば足りる。
(2) 実施形態1〜3で示したデコード部が、命令のデコードの際に、その命令による処理対象データのデータ長を特定したときに、更にその特定したデータ長分のデータの演算処理又は転送処理に必要な限度の回路だけを動作可能にするような省電力制御を行うこととしてもよい。例えば、32ビットのデータを格納可能な汎用レジスタに格納されているデータが8ビットであると特定できた際には、その残りの24ビットのデータを汎用レジスタ中で維持したり、入出力したりするために必要な電力を削減するようにマイクロプロセッサを構成してもよい。
(3) 実施形態1〜3で示したマイクロプロセッサが、命令読み込み(フェッチ)、命令解釈(デコード)、実行をそれぞれ別個のパイプラインステージとしたパイプライン構成を採るマイクロプロセッサであることとしてもよい。
(4) 実施形態1では、デコード部が、mul命令のデコードの際にデータ長選択用情報を2倍にする例を示したが、例えばレジスタR0とレジスタR1とを乗算してその結果をレジスタR1に格納するというmul命令をデコードする際において、レジスタR0に対応するデータ長選択用情報が示すデータ長と、レジスタR1に対応するデータ長選択用情報が示すデータ長との和を、新たにレジスタR1に対応するデータ長選択用情報が示すように、データ長選択用情報の更新を行うこととしてもよい。また、mul命令に限らず、除算用の命令、ビット操作用の命令等、演算対象のデータのデータ長と演算結果のデータのデータ長が異なるような命令については第1種命令と定めておき第1種命令対応回路によりデータ長選択用情報の更新を行うようにしてもよい。
(2) 実施形態1〜3で示したデコード部が、命令のデコードの際に、その命令による処理対象データのデータ長を特定したときに、更にその特定したデータ長分のデータの演算処理又は転送処理に必要な限度の回路だけを動作可能にするような省電力制御を行うこととしてもよい。例えば、32ビットのデータを格納可能な汎用レジスタに格納されているデータが8ビットであると特定できた際には、その残りの24ビットのデータを汎用レジスタ中で維持したり、入出力したりするために必要な電力を削減するようにマイクロプロセッサを構成してもよい。
(3) 実施形態1〜3で示したマイクロプロセッサが、命令読み込み(フェッチ)、命令解釈(デコード)、実行をそれぞれ別個のパイプラインステージとしたパイプライン構成を採るマイクロプロセッサであることとしてもよい。
(4) 実施形態1では、デコード部が、mul命令のデコードの際にデータ長選択用情報を2倍にする例を示したが、例えばレジスタR0とレジスタR1とを乗算してその結果をレジスタR1に格納するというmul命令をデコードする際において、レジスタR0に対応するデータ長選択用情報が示すデータ長と、レジスタR1に対応するデータ長選択用情報が示すデータ長との和を、新たにレジスタR1に対応するデータ長選択用情報が示すように、データ長選択用情報の更新を行うこととしてもよい。また、mul命令に限らず、除算用の命令、ビット操作用の命令等、演算対象のデータのデータ長と演算結果のデータのデータ長が異なるような命令については第1種命令と定めておき第1種命令対応回路によりデータ長選択用情報の更新を行うようにしてもよい。
なお、第1種命令には、8ビットの即値データを汎用レジスタに格納することを指示するmov命令と16ビットの即値データを汎用レジスタに格納することを指示するmov命令、8ビットのメモリ中のデータを汎用レジスタに格納することを指示するmov命令、16ビットのメモリ中のデータを汎用レジスタに格納することを指示するmov命令等といった一のデータ長のデータをレジスタに格納することを指示するデータ格納命令及び他のデータ長のデータをレジスタに格納することを指示するデータ格納命令が含まれるように定めておき、それに応じた処理を第1種命令対応回路が行うようにしておくとよい。
(5) 実施形態2では、第3種命令として汎用レジスタに32ビット(4バイト)のメモリアドレス値を格納することを指示するような命令を定めたが、メモリアドレス値は32ビットに限定されず例えば16ビットであってもよく、その場合には第3種命令対応回路は、その第3種命令に応じてデータ長選択用情報は16ビットを示す値に更新するようにすればよい。
(6) 実施形態3では、一般に、特段の制御処理を行わないことを指示する命令として命令セット中に備えられているNOP命令に、データ長選択用情報の巡回的な更新の機能を兼ね備えさせた例を示したが、データ長選択用情報を特定のデータ長を示す値に明示的に更新することを指示する各専用命令、例えば8ビットを示すように更新することを指示する専用命令、16ビットを示すように更新することを指示する専用命令、32ビットを示すように更新することを指示する専用命令等を、命令セット中に設けてマイクロプロセッサがその専用命令に対応してデータ長選択用情報の更新を行うようにしてもよい。なお、NOP命令を第1種命令として定め、NOP命令に対応して、上述したような巡回的な更新第1種命令対応回路で行うようにしてもよい。
(5) 実施形態2では、第3種命令として汎用レジスタに32ビット(4バイト)のメモリアドレス値を格納することを指示するような命令を定めたが、メモリアドレス値は32ビットに限定されず例えば16ビットであってもよく、その場合には第3種命令対応回路は、その第3種命令に応じてデータ長選択用情報は16ビットを示す値に更新するようにすればよい。
(6) 実施形態3では、一般に、特段の制御処理を行わないことを指示する命令として命令セット中に備えられているNOP命令に、データ長選択用情報の巡回的な更新の機能を兼ね備えさせた例を示したが、データ長選択用情報を特定のデータ長を示す値に明示的に更新することを指示する各専用命令、例えば8ビットを示すように更新することを指示する専用命令、16ビットを示すように更新することを指示する専用命令、32ビットを示すように更新することを指示する専用命令等を、命令セット中に設けてマイクロプロセッサがその専用命令に対応してデータ長選択用情報の更新を行うようにしてもよい。なお、NOP命令を第1種命令として定め、NOP命令に対応して、上述したような巡回的な更新第1種命令対応回路で行うようにしてもよい。
また、実施形態1、2におけるデコード部も、実施形態3で示したNOP命令に対応してデコード部が行うデータ長選択用情報の更新、又はデータ長選択用情報を特定のデータ長を示す値に明示的に更新する各専用命令に対応したその更新を、行うようにしてもよい。
また、実施形態3では、例えばデータ長選択用情報が8ビットを示す場合に、32ビットを示すように変更したいときには、その部分においてNOP命令を2つ連続してマイクロプロセッサに実行させるようなプログラムを作成しておくと良い。このように、NOP命令以外の特定の命令であっても、その特定の命令をある一定のパターンで並べることによって、データ長選択用情報を特定の値にすることを可能にするように、マイクロプロセッサを構成してもよい。
また、実施形態3では、例えばデータ長選択用情報が8ビットを示す場合に、32ビットを示すように変更したいときには、その部分においてNOP命令を2つ連続してマイクロプロセッサに実行させるようなプログラムを作成しておくと良い。このように、NOP命令以外の特定の命令であっても、その特定の命令をある一定のパターンで並べることによって、データ長選択用情報を特定の値にすることを可能にするように、マイクロプロセッサを構成してもよい。
100、200 マイクロプロセッサ
110、210 デコード部
111、211 命令デコーダ
112、212 第1種命令対応回路
113、213 第2種命令対応回路
119、219 データ長保持回路
120 汎用レジスタ
130 演算ユニット
140 命令メモリ
150 データメモリ
160 インタフェース部
214 第3種命令対応回路
110、210 デコード部
111、211 命令デコーダ
112、212 第1種命令対応回路
113、213 第2種命令対応回路
119、219 データ長保持回路
120 汎用レジスタ
130 演算ユニット
140 命令メモリ
150 データメモリ
160 インタフェース部
214 第3種命令対応回路
Claims (7)
- 命令を逐次読み込んで解釈し実行するマイクロプロセッサであって、
処理対象データのデータ長を示すデータ長選択用情報を保持する保持手段と、
逐次、各命令について、当該命令に呼応して行うべき命令実行処理の内容を特定する命令解釈処理を行うデコード手段と、
各命令について、命令解釈処理の結果に従って命令実行処理を行う実行手段とを備え、
前記デコード手段は、
(a)第1種命令について命令解釈処理を行うときに当該第1種命令に基づいて前記保持手段に保持される前記データ長選択用情報を更新し、
(b) 第2種命令について命令解釈処理を行うときには、前記保持手段に保持されているデータ長選択用情報に応じて、当該第2種命令の処理対象データのデータ長を選択して当該命令解釈処理を行う
ことを特徴とするマイクロプロセッサ。 - 前記第1種命令には、一のデータ長のデータをレジスタに格納することを指示するデータ格納命令、及び他のデータ長のデータをレジスタに格納することを指示するデータ格納命令が含まれ、
前記デコード手段は、いずれかのデータ長のデータをレジスタに格納することを指示する前記各データ格納命令について命令解釈処理を行うときに、前記保持手段内のデータ長選択用情報を、命令解釈処理対象の当該データ格納命令に係るデータ長を示すものとなるように更新する
ことを特徴とする請求項1記載のマイクロプロセッサ。 - 前記第1種命令には、nビットの値をレジスタへ設定することを指示する命令、2nビットの値をレジスタに設定することを指示する命令、メモリ中のnビットのデータをレジスタへと転送することを指示する命令、及びメモリ中の2nビットのデータをレジスタへと転送することを指示する命令が含まれ、
前記デコード手段は、
(a) nビットの値をレジスタへ設定することを指示する命令について命令解釈処理を行うときに、前記保持手段内のデータ長選択用情報を、nビットを示すものとなるように更新し、
(b) 2nビットの値をレジスタへ設定することを指示する命令について命令解釈処理を行うときに、前記保持手段内のデータ長選択用情報を、2nビットを示すものとなるように更新し、
(c) メモリ中のnビットのデータをレジスタへと転送することを指示する命令について命令解釈処理を行うときに、前記保持手段内のデータ長選択用情報を、nビットを示すものとなるように更新し、
(d) メモリ中の2nビットのデータをレジスタへと転送することを指示する命令について命令解釈処理を行うときに、前記保持手段内のデータ長選択用情報を、2nビットを示すものとなるように更新する
ことを特徴とする請求項1記載のマイクロプロセッサ。 - 前記第1種命令であってかつ前記第2種命令であるものには、乗算命令が含まれ、
前記デコード手段は、
前記乗算命令について命令解釈処理を行うときには、前記保持手段内に保持されているデータ長選択用情報に応じて、乗算命令の演算対象となるデータのデータ長を選択して当該命令解釈処理を行い、かつ、その保持されているデータ長選択用情報の示すデータ長を、所定値にするように更新する
ことを特徴とする請求項1記載のマイクロプロセッサ。 - 前記データ長選択用情報は、複数のデータ長を選択的に示すものであり、
前記デコード手段は、第1種命令について命令解釈処理を行う毎に、前記データ長選択用情報の示すデータ長を、複数のデータ長のなかでの予め定めた繰り返し順序における、次の順のデータ長にするように更新する
ことを特徴とする請求項1記載のマイクロプロセッサ。 - 前記マイクロプロセッサは、命令により処理対象データの格納場所として指定され得るレジスタを複数有し、
前記保持手段は、処理対象データの格納場所として指定され得る複数のレジスタそれぞれに対応して、データ長を示すデータ長選択用情報を保持し、
前記第1種命令は、あるデータ長のデータをあるレジスタに格納することを指示するものであり、
前記第2種命令は、あるレジスタに格納されている、あるデータ長のデータを処理対象として、ある演算処理を行うことを指示するものであり、
前記デコード手段は、
(a)第1種命令について命令解釈処理を行うときに、当該第1種命令によりデータの格納が指示されるレジスタに対応するデータ長選択用情報を更新し、
(b) 第2種命令について命令解釈処理を行うときには、当該第2種命令により処理対象データが格納されているとして指示されるレジスタに対応する前記データ長選択用情報に応じて、当該データのデータ長を選択し、選択したデータ長分の当該データを処理対象として演算処理が行われるように命令実行処理の内容を特定する
ことを特徴とする請求項1記載のマイクロプロセッサ。 - 前記マイクロプロセッサは、命令により処理対象データの格納場所として指定され得るレジスタを複数有し、
前記保持手段は更に、処理対象データの格納場所として指定され得る複数のレジスタそれぞれに対応して、命令解釈処理に際してデータ長選択用情報を有効と扱うか無効と扱うかを示す有効性情報を保持し、
前記第1種命令は、あるデータ長のデータをあるレジスタに格納することを指示するものであり、
前記第2種命令は、あるレジスタに格納されている、あるデータ長のデータを処理対象として、ある演算処理を行うことを指示するものであり、
前記デコード手段は、
(a)第1種命令について命令解釈処理を行うときに当該第1種命令に基づいて前記データ長選択用情報を更新するとともに、当該第1種命令によりデータの格納が指示されるレジスタに対応する有効性情報を、有効を示すように更新し、
(b)第3種命令について命令解釈処理を行うときに当該第3種命令に基づいて、あるレジスタに対応する有効性情報を、無効を示すように更新し、
(c) 第2種命令について命令解釈処理を行う場合において、当該第2種命令により処理対象データが格納されているとして指示されるレジスタに対応する前記有効性情報が有効を示すときには前記データ長選択用情報に応じて当該データのデータ長を選択し、当該有効性情報が無効を示すときには所定のデータ長を当該データのデータ長として選択し、選択したデータ長分の当該データを処理対象として演算処理が行われるように命令実行処理の内容を特定する
ことを特徴とする請求項1記載のマイクロプロセッサ。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005317158A JP2007122626A (ja) | 2005-10-31 | 2005-10-31 | マイクロプロセッサ |
CNA2006101528585A CN1959630A (zh) | 2005-10-31 | 2006-10-20 | 微处理器 |
US11/584,515 US20070101101A1 (en) | 2005-10-31 | 2006-10-23 | Microprocessor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005317158A JP2007122626A (ja) | 2005-10-31 | 2005-10-31 | マイクロプロセッサ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007122626A true JP2007122626A (ja) | 2007-05-17 |
Family
ID=37997980
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005317158A Withdrawn JP2007122626A (ja) | 2005-10-31 | 2005-10-31 | マイクロプロセッサ |
Country Status (3)
Country | Link |
---|---|
US (1) | US20070101101A1 (ja) |
JP (1) | JP2007122626A (ja) |
CN (1) | CN1959630A (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8935512B2 (en) * | 2006-11-21 | 2015-01-13 | Nec Corporation | Instruction operation code generation system |
CN101763244B (zh) * | 2010-01-21 | 2013-09-18 | 龙芯中科技术有限公司 | 存储器与寄存器之间的数据传输装置和方法 |
CN103455280B (zh) * | 2012-05-31 | 2016-12-14 | 国际商业机器公司 | 用于执行存储器复制的方法和系统 |
CN104216842B (zh) * | 2013-06-05 | 2017-06-06 | 上海华虹宏力半导体制造有限公司 | 寄存器组与存储器数据双向传输结构及数据双向传输方法 |
US9513920B2 (en) * | 2014-05-29 | 2016-12-06 | Mill Computing, Inc. | Computer processor employing split-stream encoding |
CN110995285B (zh) * | 2019-12-27 | 2023-05-05 | 成都达安众科技有限公司 | 一种uhf rfid分步式指令解码方法及芯片 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4530050A (en) * | 1981-08-26 | 1985-07-16 | Hitachi, Ltd. | Central processing unit for executing instructions of variable length having end information for operand specifiers |
JP2617974B2 (ja) * | 1988-03-08 | 1997-06-11 | 富士通株式会社 | データ処理装置 |
EP0498654B1 (en) * | 1991-02-08 | 2000-05-10 | Fujitsu Limited | Cache memory processing instruction data and data processor including the same |
US5371864A (en) * | 1992-04-09 | 1994-12-06 | International Business Machines Corporation | Apparatus for concurrent multiple instruction decode in variable length instruction set computer |
JP2832899B2 (ja) * | 1993-05-31 | 1998-12-09 | 松下電器産業株式会社 | データ処理装置およびデータ処理方法 |
US5542059A (en) * | 1994-01-11 | 1996-07-30 | Exponential Technology, Inc. | Dual instruction set processor having a pipeline with a pipestage functional unit that is relocatable in time and sequence order |
JP3451595B2 (ja) * | 1995-06-07 | 2003-09-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ |
US5809272A (en) * | 1995-11-29 | 1998-09-15 | Exponential Technology Inc. | Early instruction-length pre-decode of variable-length instructions in a superscalar processor |
US5740392A (en) * | 1995-12-27 | 1998-04-14 | Intel Corporation | Method and apparatus for fast decoding of 00H and OFH mapped instructions |
US5935237A (en) * | 1996-05-30 | 1999-08-10 | Nec Corporation | Microprocessor capable of carrying out different data length instructions |
US6170050B1 (en) * | 1998-04-22 | 2001-01-02 | Sun Microsystems, Inc. | Length decoder for variable length data |
US6292845B1 (en) * | 1998-08-26 | 2001-09-18 | Infineon Technologies North America Corp. | Processing unit having independent execution units for parallel execution of instructions of different category with instructions having specific bits indicating instruction size and category respectively |
EP1050796A1 (en) * | 1999-05-03 | 2000-11-08 | STMicroelectronics S.A. | A decode unit and method of decoding |
JP3805578B2 (ja) * | 1999-09-14 | 2006-08-02 | 松下電器産業株式会社 | プロセッサ |
US7353368B2 (en) * | 2000-02-15 | 2008-04-01 | Intel Corporation | Method and apparatus for achieving architectural correctness in a multi-mode processor providing floating-point support |
JP4203979B2 (ja) * | 2000-08-02 | 2009-01-07 | 富士通株式会社 | パケット処理装置 |
GB2367651B (en) * | 2000-10-05 | 2004-12-29 | Advanced Risc Mach Ltd | Hardware instruction translation within a processor pipeline |
US20060174089A1 (en) * | 2005-02-01 | 2006-08-03 | International Business Machines Corporation | Method and apparatus for embedding wide instruction words in a fixed-length instruction set architecture |
-
2005
- 2005-10-31 JP JP2005317158A patent/JP2007122626A/ja not_active Withdrawn
-
2006
- 2006-10-20 CN CNA2006101528585A patent/CN1959630A/zh active Pending
- 2006-10-23 US US11/584,515 patent/US20070101101A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20070101101A1 (en) | 2007-05-03 |
CN1959630A (zh) | 2007-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7823142B2 (en) | Processor for executing instructions in units that are unrelated to the units in which instructions are read, and a compiler, an optimization apparatus, an assembler, a linker, a debugger and a disassembler for such processor | |
US6405302B1 (en) | Microcomputer | |
JP2816248B2 (ja) | データプロセッサ | |
JPH0810428B2 (ja) | データ処理装置 | |
JP2007122626A (ja) | マイクロプロセッサ | |
US4945511A (en) | Improved pipelined processor with two stage decoder for exchanging register values for similar operand instructions | |
US5542060A (en) | Data processor including a decoding unit for decomposing a multifunctional data transfer instruction into a plurality of control codes | |
US6631459B1 (en) | Extended instruction word folding apparatus | |
JP3905552B2 (ja) | 複数の命令セットを有するデータ処理装置内における命令エンコード | |
JP2003044273A (ja) | データ処理装置及びデータ処理方法 | |
JPH1049369A (ja) | データ処理装置 | |
US7415599B1 (en) | Instruction operation and operand memory location determined based on preceding instruction operation and operand memory location | |
WO2019102662A1 (ja) | プロセッサ、情報処理装置および処理方法 | |
JPH04260926A (ja) | ビット検索回路及びそれを備えたデータ処理装置 | |
JP2002024008A (ja) | データ処理装置およびプログラム変換装置 | |
JPH0769806B2 (ja) | データ処理装置 | |
JP3670801B2 (ja) | プロセッサ | |
JP2000112754A (ja) | データ処理装置 | |
JPH0713757A (ja) | データ処理装置 | |
JP5263497B2 (ja) | 信号処理プロセッサ及び半導体装置 | |
JPH04260928A (ja) | データ処理装置 | |
JPH1196001A (ja) | プログラム実行装置及びプログラム変換方法 | |
JP5311008B2 (ja) | 信号処理プロセッサ及び半導体装置 | |
JP5263498B2 (ja) | 信号処理プロセッサ及び半導体装置 | |
JP2004005738A5 (ja) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080707 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20081003 |