JP3781519B2 - プロセッサの命令制御機構 - Google Patents
プロセッサの命令制御機構 Download PDFInfo
- Publication number
- JP3781519B2 JP3781519B2 JP22408197A JP22408197A JP3781519B2 JP 3781519 B2 JP3781519 B2 JP 3781519B2 JP 22408197 A JP22408197 A JP 22408197A JP 22408197 A JP22408197 A JP 22408197A JP 3781519 B2 JP3781519 B2 JP 3781519B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- register
- field
- value
- immediate
- 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 - Fee Related
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/3017—Runtime instruction translation, e.g. macros
- G06F9/30178—Runtime instruction translation, e.g. macros of compressed or encrypted 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
-
- 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
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
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)
Description
【発明の属する技術分野】
本発明は、効率的な命令セットを簡単な機構で実行できるプロセッサの命令制御機構に関し、特に命令コードを効率的に圧縮し、プログラムサイズを小さくできる短縮長命令が使用できると共に多数の命令を効率よく使用できる命令セットを実行できるプロセッサの命令制御機構を簡単な機構で実現する技術に関する。
【0002】
【従来の技術】
プロセッサでは実行できる命令セットが決められている。命令セットを構成する命令コードは、命令フィールド(オペレーションコード)とオペランドから構成される。命令フィールドは、処理の内容を示す部分で、オペランドは処理の対象となるレジスタやメモリアドレスを示す部分で、処理に使用する数値であることもある。このような数値は即値又はリテラルと呼ばれる。
【0003】
命令には、ジャンプ命令などのようにオペランドが1個の命令や、2個のオペランドの値に対して加算などの演算を行ってその結果を一方のオペランドに格納したり、2個のオペランドの一方から他方に値を移動させるなどのオペランドが2個の命令や、2個のオペランドの値に対して加算などの演算を行ってその結果を別のオペランドに格納するなどのオペランドが3個の命令がある。なお、この3個のオペランドを使用する命令は、2個のオペランドを使用する命令を組み合わせることにより実現できるので、3個のオペランドを使用する命令を持たない命令セットもある。ここでは、上記の、オペランドを1個、2個及び3個使用する3種のアドレッシングモードを有する命令セットを例として、以下の説明を行う。なお、レジスタのみを使用したアドレシイングモードの命令はレジスタ命令、即値を使用したアドレシイングモードの命令はイミーディエート命令と呼ばれる。
【0004】
図1は、レジスタ命令と即値(イミーディエート)命令の命令コードの従来の構成例を示す図であり、(1)がレジスタ命令の構成を、(2)が即値命令の構成を示す。図示のように、レジスタ命令と即値命令は同じ長さであり、本発明はこのようなレジスタ命令と即値命令の長さが同じ命令セットを対象とする発明である。上記のメモリアドレスを直接指示するメモリアドレシッング命令は、レジスタ命令や即値命令と長さが同じ場合も異なる場合もあるが、本発明はこれには直接関係しないので、いずれであってもよい。
【0005】
図1に示すように、レジスタ命令は、上位6ビットが命令フィールドOP1であり、次の5ビットが演算対象の第1のレジスタRs1を示し、次の5ビットが演算結果を格納する結果格納先レジスタRdを示す。ここまでは即値命令も同じである。レジスタ命令では、更に次の5ビットが演算対象の第2のレジスタRs2を示すが、即値命令では次の16ビットが即値を示す。レジスタ命令の第2のレジスタRs2の後の残りの11ビットは第2の命令フィールドOP2であり、OP1と合せて命令フィールドを形成する。従ってレジスタ命令は即値命令より種類が多い。
【0006】
図2は、図1のような命令セットを実行するプロセッサの命令制御機構の従来例の構成を示す図である。プログラムはメモリに格納されており、メモリから読み出された命令コードは、命令保持用フリップフロップ11から14に一時的に保持される。参照番号11が命令フィールドOP1の示す値を保持する部分で、12が第1の演算対象レジスタRs1を指示する値を保持する部分で、13が第1の結果格納先レジスタRdを指示する値を保持する部分で、14がレジスタ命令の時には第2の演算対象レジスタRs2を指示する値と第2の命令フィールドOP2を示す値を保持し、即値命令の時には即値を保持する部分である。フリップフロップ11と14に保持された命令フィールドOP1とOP2は命令デコーダ15に出力され、そこで解読されて、処理する内容が演算器28と29に指示されると共に、命令に応じて第2の演算対象レジスタRs2の値を使用するか即値が使用されるかが選択される。フリップフロップ12、13及び14(Rs2の部分のみ)に保持された値により、レジスタ18、19、17が指示される。また、フリップフロップ14に保持された値は更にフリップフロップ23に保持される。命令デコーダ15の解読結果に応じて、レジスタ19の値又はフリップフロップ23に保持された値が内部バスに出力され、同時に出力されるレジスタ18と共に演算器28、29に入力され、そこで命令フィールドOPで指示された演算が行われる。その演算結果は、レジスタ17に格納される。このようにして1つの命令コードに対する処理が完了し、プログラムで指示される命令コードを順次行う。
【0007】
【発明が解決しようとする課題】
図1及び図2の例は、もっとも一般的な命令セット及びプロセッサの命令制御機構の従来例であるが、近年プロセッサの高速化・低価格化により、従来は専用回路を用いて行っていた様々な処理を、1つのプロセッサでプログラムを切り換えながら処理できるようになってきた。その反面、プログラムサイズが膨大になり、キャッシュなどのチップ内蔵メモリや外部メモリが増大したり、それらのメモリのアクセス頻度が高くなるために消費電力が増大するといった問題が生じている。
【0008】
最近のように、メディア機器の携帯化が進むと、プロセッサのコストや消費電力は、機器トータルのコストや消費電力の増大にとって大きな割合を占めるようになってきており、このため、いかに全体のプログラムサイズを圧縮するかがプロセッサの課題となっている。そのため、同じ長さの命令セットであれば、できるだけ多数の命令コードが表現できることが望ましい。
【0009】
また、このような課題を解決するための別の方法に、短縮長命令を使用することがある。短縮長命令を使用できれば、プログラムサイズを圧縮することが可能である。従来から基本長命令と共に短縮長命令が使用できるようにサポートしているプロセッサがある。図3は、基本長命令と短縮長命令が両方使用できるようにした従来例における命令コードの従来例の構成を示す図である。この方法は、あらかじめ命令フィールド中に命令長を示すビットを持たせることにより、プログラム中の命令が基本長命令と短縮長命令のいずれであるかが識別できるようにする方法であり、図3では最上位ビットをこれに割り当てている。しかし、この場合、1ビットがこのような識別に使用されることになり、その分他のフィールのビットが減少することになる。図3では、命令フィールドの1ビットを基本長命令と短縮長命令の識別に割り当てており、命令フィールドの長さが6ビットから5ビットに減少している。6ビットであれば64通りの命令が表されるのに、5ビットであれば32通りの命令しか表せなくなる。基本長命令と短縮長命令の識別のための1ビットを他の部分、例えば、即値の部分の1ビットを基本長命令と短縮長命令の識別に割り当てることも考えられるが、その場合には即値の範囲が半分に減少することになる。短縮長命令は、そもそも命令コードの長さが限られるため特に問題である。
【0010】
そこで、プロセッサにモード切り換え機構を設け、プログラム中のモード切り換え命令でモードを切り換えられるようにする。短縮長命令モードであれば、命令コードはすべて短縮長命令であるとして処理される。図4は、モード切り換えを可能にした場合の命令コードの従来例の構成を示す図である。しかし、この方法では、当然のことながら短縮長命令に割り当てられなかった命令は使用できないが、すべての基本長命令セットを短縮長命令セットに割り当てることは原理的に不可能であるため、基本長命令セットにはあるが短縮長命令としては使用できない命令が存在することになる。そのため、短縮長命令モードにおいてはこのような命令が使用できず、そのような命令を使用する場合には、一旦基本長命令モードに切り換える必要が生じる。これでは、プログラムが複雑で、サイズも大きくなる。
【0011】
上記の2つの方法では、基本長命令も短縮長命令も命令フィールドは同じ長さであるとしたが、基本長命令セットと短縮長命令セットで命令フィールドの体系を大きく異ならせることにより、多くの命令を短縮長命令として持つことができるようになる。しかし、この場合、モード切り換えにより両方の命令セットを実行できるプロセッサでは、命令デコーダを共通に使用するためには、短縮長命令フィールドを基本長命令フィールドに変換するために、図5に示すような回路が必要になる。この回路は、短縮長命令モード時には、短縮長命令の命令フィールドを、対応する処理内容の基本長命令コードの命令フィールドに変換する命令コード変換エンコーダ31と、その出力を一時保持するフリップフロップ32で構成される。通常の処理においては、この変換回路での処理のためにパイプラインの1段分を消費するか、あるいは、1段分を消費しない場合でもデコーダのクリティカルパスを圧迫することになり、ハードウエアの増加を招くだけでなく、分岐ペナルティの増大で性能の低下を招くといった問題がある。
【0012】
本発明は、コードの長さが同じ命令セットであれば、できるだけ多数の種類の命令コードが表現できるようにすることで、プログラムの長さを短くした命令コードのセットを実行できるプロセッサの命令制御機構を簡単な構成で実現することを目的とする。また、所定の長さのコードで多数の短縮長命令を効率よく実行できるプロセッサの命令制御機構を簡単な構成で実現することを目的とする。
【0013】
【課題を解決するための手段】
上記目的を実現するため、本発明のプロセッサの命令制御機構は、命令コードのうち、処理対象のレジスタ名又は即値を記載した第2のフィールドにおいてレジスタ名を記載した場合には、第2のフィールドに使用しない第2の命令フィールドがあることに着目した。そして、第2のフィールドに処理対象のレジスタ名を記憶するレジスタ命令については、命令フィールドに特定の値を割り当て、実際の命令内容は第2の命令フィールドに記載するようにし、即値命令については、命令フィールドにこの特定の値以外の値を割り当て、しかも、即値とレジスタを使用する以外は同一の処理である少なくとも一部の即値命令コードと即値類似レジスタ命令コードには、命令フィールドと第2の命令フィールドに同一の値を割り当てる。これであれば、命令デコーダなどを複雑にすることもない。
【0014】
すなわち、本発明のプロセッサの命令制御機構は、命令フィールドと、処理対象のレジスタ名を記載した第1のフィールドと、処理対象の他のレジスタ名又は即値を記載した第2のフィールドで構成される命令コードを有する命令セットを解読して実行するプロセッサの命令制御機構であって、命令フィールドの値を解読する命令デコーダと、処理対象のレジスタ名及び処理対象の他のレジスタ名で指示されるレジスタと、即値を記憶する記憶回路と、レジスタ又はレジスタと記憶回路に記憶された値に対して、命令デコーダの解読結果に対応する処理を行う演算回路とを備えるプロセッサの命令制御機構において、第2のフィールドに処理対象の他のレジスタを記載したレジスタ命令コードは、命令フィールドを特定の値とし、第2のフィールドのうちの処理対象の他のレジスタを記載した以外の部分に第2の命令フィールドを記載することにより表され、第2のフィールドに即値を記載した即値命令コードは、命令フィールドに特定の値以外の値が記載され、即値と処理対象の他のレジスタを使用する以外は同一の処理である少なくとも一部の即値命令コードと即値類似レジスタ命令コードには、命令フィールドと第2の命令フィールドに同一の値が割り当てられ、命令フィールドが特定の値であるかを判定するレジスタ命令検出回路と、レジスタ命令検出回路の判定結果に従って、命令フィールドが特定の値である時には第2の命令フィールドが、命令フィールドが特定の値でない時には命令フィールドが、命令デコーダに入力されるように切り換える選択回路を備えることを特徴とする。
【0015】
また、即値命令コード及び即値類似レジスタ命令コードと類似した処理であるが、即値及び処理対象の他のレジスタの値は使用しない第2のレジスタ命令コードの少なくとも一部には、命令フィールドに特定の値以外の第2の特定の値で、第2の命令フィールドに即値類似レジスタ命令コードの第2の命令フィールドの値と同一の値を割り当てるようにし、レジスタ命令検出回路が、命令フィールドが第2の特定の値であるかも判定するようにすることが望ましい。このような命令の例としては、レジスタ間転送命令がある。
【0016】
本発明のプロセッサの命令制御機構においては、基本長命令を実行するモードと短縮長命令を実行するモードを切り換えて、両方の命令が実行できるようにする。そこで、短縮長命令コードの命令フィールドは、基本長命令コードの命令フィールドと同じ位置で、処理内容が類似の即値類似レジスタの第2の命令フィールドと同一の値とし、基本長命令コードを処理する基本長モードと短縮長命令コードを処理する短縮長モードを切り換えるモード切り換え回路を設け、命令デコーダは、モードに応じて解読処理を変化させる。
【0017】
ここで、短縮長モード時に、レジスタ命令検出回路が命令フィールドが特定の値であることを検出した時には、命令デコーダは、この命令コードを基本長命令コードとして処理するようにすれば、短縮命令を実行するモードにおいても、そのまま基本長命令が実行できるようになる。
【0018】
【発明の実施の形態】
図6は、本発明の実施例における命令コードの構造を示す図であり、(1)が基本長命令を、(2)が短縮長命令を示し、それぞれ(a)がレジスタアドレッシング命令を、(b)が即値アドレッシング命令を示す。図示のように、本実施例の命令コードにおいては、短縮長命令及び基本長の即値アドレッシング命令は、図4の従来の命令コードと同じ構造であり、異なるのは基本長のレジスタアドレッシング命令の構造である。基本長のレジスタアドレッシング命令では、上位6ビットの第1の命令フィールドOP1の値が000000又は000100であり、従来例においては使用されなかった下位11ビットに第2の命令フィールドOP2と第3の命令フィールドOP3が記載される。
【0019】
図7は、実施例における基本長の即値アドレッシング命令のセットを示す図である。ここでは各命令の詳しい説明は省略するが、命令は46個あり、空白の部分は対応する命令が規定されておらず、斜線の部分、すなわち000000と000100は基本長のレジスタアドレッシング命令であることを示す。
図8及び図9は、基本長のレジスタアドレッシング命令のセットを示す図である。図示のように、基本長のレジスタアドレッシング命令の第1の命令フィールドOP1の値は000000又は000100であり、第2の命令フィールドOP2の値により処理の内容が規定される。ここで重要なのが第2の命令フィールドOP2の値は、類似の処理を行う基本長の即値アドレッシング命令の第1の命令フィールドOP1の値と同じである点である。例えば、第1の命令フィールドOP1の値が000010の基本長のレジスタアドレッシング命令の乗算命令MUL(Rs1,Rs2,Rd)の第2の命令フィールドOP2の値は110111であり、対応する基本長の即値アドレッシング命令MULI(Rs1,#16,Rd)の第1の命令フィールドOP1の値と同じである。また、第1の命令フィールドOP1の値が000100の基本長のレジスタアドレッシング命令の加算命令ADD(Rs1,Rs2,Rd)の第2の命令フィールドOP2の値は001111であり、対応する基本長の即値アドレッシング命令ADDI(Rs1,#16,Rd)の第1の命令フィールドOP1の値と同じである。
【0020】
ここで、第1の命令フィールドOP1の値が000000の基本長のレジスタアドレッシング命令についても、同様に、第2の命令フィールドOP2の値は、類似の処理を行う基本長の即値アドレッシング命令の第1の命令フィールドOP1の値と同じである。例えば、加算命令には、符号なし飽和処理付き32ビット加算(ADD)や、符号付き飽和処理付き32ビット加算(ADDSS)や、オペランドを上位と下位で16ビットずつに分け、それぞれに符号付き飽和処理付きの16ビット加算を同時に行う加算(ADDHSS)や、オペランドを上位と下位で16ビットずつに分け、それぞれに符号なし飽和処理付きの16ビット加算を同時に行う加算(ADDHUS)などの各種の加算処理がある。本実施例では、ADDは、第1の命令フィールドOP1の値が000100の基本長のレジスタアドレッシング命令として規定し、ADDSSとADDHSSとADDHUSは、第1の命令フィールドOP1の値が000000の基本長のレジスタアドレッシング命令として規定している。ADDSSとADDHSSとADDHUSの第2の命令フィールドOP2の値は001111であり、第3の命令フィールドOP3の値を異ならせることにより、これらの処理を識別している。このように、同じような処理であるが、処理内容が細部で異なる処理を第3の命令フィールドOP3により規定している。
【0021】
図7に示すように、第1の命令フィールドOP1は6ビットであり、そこでは最大64通りの命令を規定できる。従来は、この64通りで、即値アドレッシング命令を規定していた。レジスタアドレッシング命令については、OP1とOP2と合せて命令を規定していた。これに対して、本実施例では、46通りの即値アドレッシング命令が規定され、72通りのレジスタアドレッシング命令が規定されており、即値アドレッシング命令は62通りまで(2つの値をレジスタアドレッシング命令に割り当てるとした場合)、レジスタアドレッシング命令は第2の命令フィールドOP2だけで規定したとしても62通り(000000と000100除くとする)規定することが可能であり、第3の命令フィールドOP3も使用するとすれば更に32倍のレジスタアドレッシング命令を規定することが可能である。
【0022】
図10は、短縮長命令の例を示す図であり、ここでは加算命令の例を示している。ここで重要なのは、短縮長命令の命令フィールドの値001111は、類似の処理を行う基本長の即値アドレッシング命令の第1の命令フィールドOP1の値及び基本長のレジスタアドレッシング命令の第2の命令フィールドOP2の値と同じである点である。また、上記のADD、ADDSS、ADDHSS及びADDHUSのいずれの加算命令であるかは、9ビット目と5ビット目の値の組合せで規定している。なお、短縮長命令においては、演算対象の第1のレジスタRs1と演算結果を格納する結果格納先レジスタRdは同じレジスタであり、Rs1/Rdで指示されるレジスタの値に対して処理を行い、その処理結果を同じレジスタに格納する。
【0023】
図11と図12は、本発明の実施例のプロセッサの命令制御機構の構成を示す図である。基本長命令を処理するモードであるか、短縮長命令を処理するモードであるかは、プログラム中の命令により、モードレジスタに所定の値をセットすることにより設定されるようになっている。いずれのモードにおいても、メモリから32ビット分の命令コードが読み出され、命令保持用フリップフロップ(FF)41と42に一時的に保持される。命令保持用フリップフロップは、上位16ビットを保持するFF41と下位16ビットを保持するFF42で構成される。従って、基本長命令の場合には、第1の命令フィールドOP1と第1の演算対象レジスタRs1と格納先レジスタRdがFF41に保持され、第2の演算対象レジスタRs2と第2の命令フィールドOP2と第3の命令フィールドOP3又は即値#16がFF42に保持され、短縮長命令の場合には、一方の命令フィールドOPとRs/RdとRs2(又は即値#4)がFF41に保持され、他方のOPと第1のレジスタRs/Rdと第2のレジスタRs2(又は即値#4)がFF42に保持される。
【0024】
まず、基本長命令を処理するモード時の動作について説明する。OP1はデコーダ43に入力され、その値が000100又は000000であるかが判定される。OP1が000100又は000000であればレジスタアドレッシング命令であり、000100と000000以外であれば即値アドレッシング命令である。デコーダ43は、この判定結果とモード信号に従って命令モード信号を出力する。セレクタ44には、OP1(FF41のOPと同じ)、OP2、FF42のOPが入力される。セレクタ44は、命令モード信号に従って、レジスタアドレッシング命令であれば入力される信号のうちからOP2を選択し、即値アドレッシング命令であればOP1を選択して、命令デコーダ45に出力する。前述のように、レジスタアドレッシング命令のOP2と即値アドレッシング命令OP1は、類似の処理であれば同じ値であるから、命令デコーダ45は最大62通りの命令が識別できればよい。命令デコーダ45は入力されるOP1又はOP2を解読して、演算器制御信号を出力する。
【0025】
セレクタ51には、FF41のRs1とRdとRs1/Rd及びFF42のRs1/Rdが入力され、セレクタ52には、FF41のRs2(#4)及びFF42のRs2とRs2(#4)が入力され、セレクタ53には、FF42の即値#16(Rs2とOP2とOP3)が入力される。セレクタ51は、命令モード信号に従って、Rs1とRdをそれぞれレジスタ55のアドレスデコーダD(Rs1)とD(Rd)に入力する。ここで、フリップフロップFF54は、基本長命令を実行するモードの場合には通過状態になる。同様に、セレクタ52は、命令モード信号に従って、Rs2をレジスタ55のアドレスデコーダD(Rs2)に入力する。更に、セレクタ53は、命令モード信号に従って、FF42の即値#16を選択してFF56に出力する。なお、図では命令モード信号のセレクタ51、52及び53への配線を省略してある。
【0026】
命令モード信号が基本長命令を示す時には、カウント値発生回路68が4を発生し、それをプログラムカウンタ47に印加する。プログラムカウンタ47はFF48に保持された直前のプログラムカウント値にこの4を加えてプログラムカウンタの値を増加させる。また、セレクタ49は、短縮長命令にのみ関係するセレクタであり、基本長命令には関係しない。デコーダ50には、セレクタ49の出力と命令モード信号の一部が入力される。デコーダ50は、基本長命令の場合には、命令モード信号の一部を選択し、それをRs2/即値選択信号として出力する。
【0027】
図12に示すように、レジスタ55の読み書きポートP(Rs1)から出力された値は一方の内部バス62に出力される。Rs2/即値選択信号に従って、レジスタ55の読み書きポートP(Rs2)の出力とFF56の出力の一方が、他方の内部バス61に出力される。演算器63と64は、内部バス61と62上の値に対して、命令デコーダ45の出力する演算制御信号により指示された処理を行い、その結果を出力ポート65と66を介して更に別の内部バス67に出力する。内部バス67に出力された値は、適当なタイミングでレジスタ55の読み書きポートP(Rd)に書き込まれる。
【0028】
以上のようにして、レジスタアドレッシング命令の場合には、Rs1とRs2で指示されたレジスタの値に対して演算が行われ、その結果がRdで指示されるレジスタに記憶され、即値アドレッシング命令の場合には、Rs1で指示されたレジスタの値と即値#16に対して演算が行われ、その結果がRdで指示されるレジスタに記憶される。
【0029】
次に、短縮長命令を処理するモード時の動作について説明する。短縮長命令のFF41に保持されるOPはOP1と同じビットであり、デコーダ43に入力され、その値が000100又は000000であるかが判定される。OPが000100又は000000であれば短縮長命令を処理するモード時であっても、基本長のレジスタアドレッシング命令であると判定され、上記の基本長命令用の処理が行われる。ただし、短縮長命令に基本長命令を混在させる場合には、基本長命令は4バイトの境界、すなわち、FF41のOP(OP1)に保持されるように制限されているものとする。OPが000100又は000000でなければ短縮長命令であり、カウント値発生回路49は2を発生して、プログラムカウンタ47は2増加する。
【0030】
デコーダ43は、判定結果とモード信号に従って命令モード信号を出力する。セレクタ44は、短縮長命令の場合には、プログラムカウンタ47の出力をラッチしたFF48の出力の最下位のビットを判定して、FF41のOPを選択すべきか、FF42のOPを選択すべきかを判定して出力する。具体的には、FF48の出力の最下位のビットが「0」の時にはFF41のOPを、「1」の時にはFF42のOPを選択する。上記のように、基本長のレジスタアドレッシング命令と判定された場合には、FF41のOP、すなわちOP1を選択して出力する。命令デコーダ45はセレクタ45の出力を解読して演算制御信号を発生させる。前述のように、短縮長命令のOPとレジスタアドレッシング命令のOP2は、類似の処理であれば同じ値であるから、命令デコーダ45は基本長命令と同じ解読処理を行えばよい。
【0031】
セレクタ51は、短縮長命令で、FF48の出力の最下位のビットが「0」の時には、FF41のRs1/Rdをレジスタ55のD(Rs1)に、「1」の時には、FF42のRs1/Rdをレジスタ55のD(Rs1)に出力する。同時に、セレクタ51の出力は、FF54で一旦保持された後、レジスタ55のD(Rd)に入力される。これは、演算器65と66での処理後にその処理結果をRs1/Rdで指示される読み書きポートP(Rd)に書き込むためである。なお、基本長命令の場合には、セレクタ51は、FF41のRs1とRdをそれぞれレジスタ55のD(Rs1)とD(Rd)に出力する。
【0032】
同様に、セレクタ52は、短縮長命令で、FF48の出力の最下位のビットが「0」の時には、FF41のRs2(#4)をレジスタ55のD(Rs2)に、「1」の時には、FF42のRs2(#4)をレジスタ55のD(Rs2)に出力する。基本長命令の場合には、セレクタ52は、FF42のRs2をレジスタ55のD(Rs2)に出力する。
【0033】
また、セレクタ53は、短縮長命令で、FF48の出力の最下位のビットが「0」の時には、FF41のRs2(#4)を、「1」の時には、FF42のRs2(#4)をレジスタ55のD(Rs2)に出力する。前述のように、基本長命令の場合には、セレクタ53は、FF42の#16を出力する。ただし、短縮長命令に基本長の即値アドレッシング命令を混在させることはできないので、短縮長命令を実行するモードで、セレクタ53が#16を出力することは有り得ない。FF42は、#16を保持して出力するので、短縮長命令の時には、Rs2(#4)の上位に12個の「0」を付加する。
【0034】
図10に示したように、短縮長命令では、9ビット目と5ビット目(25ビット目と20ビット目)が共に「0」の時が即値アドレッシング命令である。セレクタ49は、25ビット目、20ビット目、9ビット目及び5ビット目の値、すなわち、図においてFF41とFF42で斜線で示した部分のビットが入力され、プログラムカウンタの値に応じて、25ビット目と20ビット目、9ビット目と5ビット目のいずれかを選択し、2つの値が共に「0」の時にFF56から出力される即値を選択し、「1」の時にレジスタ55の読み書きポートP(Rs2)から出力されたRs2で指示されるレジスタの値を選択するRs2/即値選択信号を出力する。
【0035】
後の処理は、基本長命令の場合と同じである。
ここで、短縮長命令では、すべての基本長命令を規定することができないため、プログラムサイズを小さくするために短縮長命令を使用している場合でも、短縮長命令セットで規定されない命令を使用する場合には、基本長命令を使用する必要がある。また、短縮長命令では、レジスタを指定するオペランドRs1、Rs2及びRdのビット数が基本長命令より小さいため、基本長命令で使用できるレジスタをすべて使用することはできない。そのため、短縮長命令で使用できないレジスタを使用する場合には、基本長命令を使用する必要がある。本実施例では、上記の説明のように、短縮長命令を実行するモード時でも、第1の命令フィールドOP1(FF41に保持されるOP)が000100又は000000である時には、自動的に基本長命令であると判定してそれに対応する処理が行われる。従って、短縮長命令を実行している途中で基本長命令(但し、レジスタアドレッシング命令のみ)を実行する場合にも、モードの切り換えを行う必要がなく、プログラムを簡単にできる。
【0036】
【発明の効果】
以上のように、本発明によれば、命令コードの無駄を生ぜずに短縮長命令と基本長命令を混在させることができるため、プログラムサイズを効率よく圧縮することが可能になる。
また、短縮長命令モード中に、同一命令について基本長命令と短縮長命令を混在させることができるため、すべてのレジスタを有効に使用することができる。
【0037】
更に、本発明では、命令デコーダは共通の処理内容であるため、その構成を非常に簡単にでき、パイプラインの段数を増加させる必要がなく、命令数を増加させてもデコーダのハードウエアの増加を最小限にすることができる。
【図面の簡単な説明】
【図1】レジスタ及び即値(イミーディエート)アドレッシングモードの命令コードの従来の構成例を示す図である。
【図2】プロセッサの命令制御機構の従来の構成例を示す図である。
【図3】短縮長命令を有する命令コードの従来の構成例(その1)を示す図である。
【図4】短縮長命令を有する命令コードの従来の構成例(その2)を示す図である。
【図5】短縮長命令を基本長命令に変換する従来の変換機構を示す図である。
【図6】本発明の実施例の命令コードの構造を示す図である。
【図7】実施例の基本長の即値アドレッシング命令の命令フィールドOP1のセットを示す図である。
【図8】実施例の基本長のレジスタアドレッシング命令の命令フィールドのセットを示す図である。
【図9】実施例の基本長のレジスタアドレッシング命令の命令フィールドのセットを示す図である。
【図10】実施例の短縮長命令の例を示す図である。
【図11】実施例の命令制御機構の構成を示す図である。
【図12】実施例の命令制御機構の構成を示す図である。
【符号の説明】
41、42…命令保持用フリップフロップ(FF)
43…デコーダ
44…セレクタ
45…命令デコーダ
Claims (5)
- 命令フィールドと、処理対象のレジスタ名を記載した第1のフィールドと、処理対象の他のレジスタ名又は即値を記載した第2のフィールドで構成される命令コードを有する命令セットを解読して実行するプロセッサの命令制御機構であって、
前記命令フィールドの値を解読する命令デコーダと、
前記処理対象のレジスタ名及び前記処理対象の他のレジスタ名で指示されるレジスタと、
前記即値を記憶する記憶回路と、
前記レジスタ又は前記レジスタと前記記憶回路に記憶された値に対して、前記命令デコーダの解読結果に対応する処理を行う演算回路とを備えるプロセッサの命令制御機構において、
前記第2のフィールドに前記処理対象の他のレジスタを記載したレジスタ命令コードは、前記命令フィールドを特定の値とし、前記第2のフィールドのうちの前記処理対象の他のレジスタを記載した以外の部分に第2の命令フィールドを記載することにより表され、
前記第2のフィールドに前記即値を記載した即値命令コードは、前記命令フィールドに前記特定の値以外の値が記載され、
前記即値と前記処理対象の他のレジスタを使用する以外は同一の処理である少なくとも一部の即値命令コードと即値類似レジスタ命令コードには、前記命令フィールドと前記第2の命令フィールドに同一の値が割り当てられ、
前記命令セットは、前記即値命令コードと前記即値類似レジスタ命令コードの少なくとも一部に対応し、前記即値命令コードと即値類似レジスタ命令コードの基本長命令コードより短い短縮長命令コードを有し、
該短縮長命令コードの命令フィールドは、前記基本長命令コードの命令フィールドと同じ位置で、処理内容が類似の前記即値類似レジスタの前記第2の命令フィールドと同一の値を有し、
前記命令フィールドが前記特定の値であるかを判定するレジスタ命令検出回路と、
該レジスタ命令検出回路の判定結果に従って、前記命令フィールドが前記特定の値である時には前記第2の命令フィールドが、前記命令フィールドが前記特定の値でない時には前記命令フィールドが、前記命令デコーダに入力されるように切り換える選択回路と、
前記基本長命令コードを処理する基本長モードと前記短縮長命令コードを処理する短縮長モードを切り換えるモード切り換え回路と、を備え、
前記命令デコーダは、モードに応じて解読処理を変化させることを特徴とするプロセッサの命令制御機構。 - 請求項1に記載のプロセッサの命令制御機構であって、
前記即値命令コード及び前記即値類似レジスタ命令コードと類似した処理であるが、前記即値及び処理対象の他のレジスタの値は使用しない第2のレジスタ命令コードの少なくとも一部には、前記命令フィールドが前記特定の値以外の第2の特定の値で、前記第2の命令フィールドに前記即値類似レジスタ命令コードの前記第2の命令フィールドの値と同一の値が割り当てられ、
前記レジスタ命令検出回路は、前記命令フィールドが前記第2の特定の値であるかも判定するプロセッサの命令制御機構。 - 請求項1に記載のプロセッサの命令制御機構であって、
前記短縮長モード時に、レジスタ命令検出回路が前記命令フィールドが前記特定の値であることを検出した時には、前記命令デコーダは、当該命令コードを前記基本長命令コードとして処理するプロセッサの命令制御機構。 - 請求項2に記載のプロセッサの命令制御機構であって、
前記短縮長モード時に、レジスタ命令検出回路が前記命令フィールドが前記特定の値又は前記第2の特定の値であることを検出した時には、前記命令デコーダは、当該命令コードを前記基本長命令コードとして処理するプロセッサの命令制御機構。 - 請求項3又は4に記載のプロセッサの命令制御機構であって、
レジスタ間転送命令を、前記第2のレジスタ命令コードに割り当てたプロセッサの命令制御機構。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22408197A JP3781519B2 (ja) | 1997-08-20 | 1997-08-20 | プロセッサの命令制御機構 |
US08/994,329 US5938759A (en) | 1997-08-20 | 1997-12-19 | Processor instruction control mechanism capable of decoding register instructions and immediate instructions with simple configuration |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22408197A JP3781519B2 (ja) | 1997-08-20 | 1997-08-20 | プロセッサの命令制御機構 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH1165839A JPH1165839A (ja) | 1999-03-09 |
JP3781519B2 true JP3781519B2 (ja) | 2006-05-31 |
Family
ID=16808271
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP22408197A Expired - Fee Related JP3781519B2 (ja) | 1997-08-20 | 1997-08-20 | プロセッサの命令制御機構 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5938759A (ja) |
JP (1) | JP3781519B2 (ja) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6567910B2 (en) * | 1998-02-13 | 2003-05-20 | Texas Instruments Incorporated | Digital signal processing unit with emulation circuitry and debug interrupt enable register indicating serviceable time-critical interrupts during real-time emulation mode |
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 |
JP3839835B2 (ja) * | 1999-04-30 | 2006-11-01 | 株式会社ルネサステクノロジ | データ処理装置及びマイクロコンピュータ |
US6552625B2 (en) | 2001-06-01 | 2003-04-22 | Microchip Technology Inc. | Processor with pulse width modulation generator with fault input prioritization |
US6604169B2 (en) | 2001-06-01 | 2003-08-05 | Microchip Technology Incorporated | Modulo addressing based on absolute offset |
US20020184566A1 (en) | 2001-06-01 | 2002-12-05 | Michael Catherwood | Register pointer trap |
US6601160B2 (en) | 2001-06-01 | 2003-07-29 | Microchip Technology Incorporated | Dynamically reconfigurable data space |
US6728856B2 (en) | 2001-06-01 | 2004-04-27 | Microchip Technology Incorporated | Modified Harvard architecture processor having program memory space mapped to data memory space |
JP3578735B2 (ja) * | 2001-08-02 | 2004-10-20 | 松下電器産業株式会社 | 情報処理装置及び情報処理方法 |
US6552567B1 (en) | 2001-09-28 | 2003-04-22 | Microchip Technology Incorporated | Functional pathway configuration at a system/IC interface |
US20040021483A1 (en) * | 2001-09-28 | 2004-02-05 | Brian Boles | Functional pathway configuration at a system/IC interface |
US6986023B2 (en) * | 2002-08-09 | 2006-01-10 | Intel Corporation | Conditional execution of coprocessor instruction based on main processor arithmetic flags |
GB2402764B (en) | 2003-06-13 | 2006-02-22 | Advanced Risc Mach Ltd | Instruction encoding within a data processing apparatus having multiple instruction sets |
US7581082B2 (en) * | 2005-05-13 | 2009-08-25 | Texas Instruments Incorporated | Software source transfer selects instruction word sizes |
JP4999361B2 (ja) * | 2006-05-24 | 2012-08-15 | 三洋電機株式会社 | 処理装置 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3781823A (en) * | 1972-07-28 | 1973-12-25 | Bell Telephone Labor Inc | Computer control unit capable of dynamically reinterpreting instructions |
JPS6029126B2 (ja) * | 1977-01-14 | 1985-07-09 | 株式会社日立製作所 | デ−タ処理装置 |
US4876639A (en) * | 1983-09-20 | 1989-10-24 | Mensch Jr William D | Method and circuitry for causing sixteen bit microprocessor to execute eight bit op codes to produce either internal sixteen bit operation or internal eight bit operation in accordance with an emulation bit |
JP2635057B2 (ja) * | 1987-11-04 | 1997-07-30 | 株式会社日立製作所 | マイクロプロセッサ |
US5179691A (en) * | 1989-04-12 | 1993-01-12 | Unisys Corporation | N-byte stack-oriented CPU using a byte-selecting control for enhancing a dual-operation with an M-byte instruction word user program where M<N<2M |
JPH0476626A (ja) * | 1990-07-13 | 1992-03-11 | Toshiba Corp | マイクロコンピュータ |
JP2669158B2 (ja) * | 1991-01-22 | 1997-10-27 | 三菱電機株式会社 | データ処理装置 |
JP3172214B2 (ja) * | 1991-09-30 | 2001-06-04 | 富士通株式会社 | 状態モード設定方式 |
JPH07121352A (ja) * | 1993-10-21 | 1995-05-12 | Canon Inc | 演算処理装置 |
GB9406666D0 (en) * | 1994-04-05 | 1994-05-25 | Communicate Ltd | Computer system |
GB2289354B (en) * | 1994-05-03 | 1997-08-27 | Advanced Risc Mach Ltd | Multiple instruction set mapping |
GB2289353B (en) * | 1994-05-03 | 1997-08-27 | Advanced Risc Mach Ltd | Data processing with multiple instruction sets |
GB2290395B (en) * | 1994-06-10 | 1997-05-28 | Advanced Risc Mach Ltd | Interoperability with multiple instruction sets |
US5826089A (en) * | 1996-01-04 | 1998-10-20 | Advanced Micro Devices, Inc. | Instruction translation unit configured to translate from a first instruction set to a second instruction set |
US5790824A (en) * | 1996-03-18 | 1998-08-04 | Advanced Micro Devices, Inc. | Central processing unit including a DSP function preprocessor which scans instruction sequences for DSP functions |
US5867681A (en) * | 1996-05-23 | 1999-02-02 | Lsi Logic Corporation | Microprocessor having register dependent immediate decompression |
-
1997
- 1997-08-20 JP JP22408197A patent/JP3781519B2/ja not_active Expired - Fee Related
- 1997-12-19 US US08/994,329 patent/US5938759A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US5938759A (en) | 1999-08-17 |
JPH1165839A (ja) | 1999-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7979676B2 (en) | Method for instructing a data processor to process data | |
US7473293B2 (en) | Processor for executing instructions containing either single operation or packed plurality of operations dependent upon instruction status indicator | |
JP3781519B2 (ja) | プロセッサの命令制御機構 | |
US5269007A (en) | RISC system capable of simultaneously executing data interlocked shift and arithmetic/logic instructions in one clock cycle by bypassing register | |
US4954943A (en) | Data processing system | |
US20010029577A1 (en) | Microprocessor employing branch instruction to set compression mode | |
US7552313B2 (en) | VLIW digital signal processor for achieving improved binary translation | |
US5041968A (en) | Reduced instruction set computer (RISC) type microprocessor executing instruction functions indicating data location for arithmetic operations and result location | |
JP2003525476A (ja) | プログラムの命令を実行するための装置及び方法 | |
GB2402764A (en) | Instruction endcoding within a data processing apparatus having multiple instruction sets | |
US6026486A (en) | General purpose processor having a variable bitwidth | |
US6209080B1 (en) | Constant reconstruction processor that supports reductions in code size and processing time | |
JP4502532B2 (ja) | データ処理装置 | |
US20040024992A1 (en) | Decoding method for a multi-length-mode instruction set | |
JP3570287B2 (ja) | マイクロコンピュータ | |
US5072372A (en) | Indirect literal expansion for computer instruction sets | |
US5187782A (en) | Data processing system | |
JPH04104350A (ja) | マイクロプロセッサ | |
WO2005036384A2 (en) | Instruction encoding for vliw processors | |
JP3019818B2 (ja) | データ処理方法 | |
JP3511691B2 (ja) | 演算処理装置 | |
JPH0524537B2 (ja) | ||
JP2004005738A (ja) | データ処理装置及び命令セット拡張方法 | |
JP2000029686A (ja) | デ―タ処理装置及び命令フォ―マット | |
KR100260814B1 (ko) | 엠펙 오디오 비트스트림 복호화를 위한 전처리장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040419 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20051201 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051206 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060116 |
|
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: 20060207 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060307 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |