JP2004038521A - マイクロコンピュータ - Google Patents
マイクロコンピュータ Download PDFInfo
- Publication number
- JP2004038521A JP2004038521A JP2002194100A JP2002194100A JP2004038521A JP 2004038521 A JP2004038521 A JP 2004038521A JP 2002194100 A JP2002194100 A JP 2002194100A JP 2002194100 A JP2002194100 A JP 2002194100A JP 2004038521 A JP2004038521 A JP 2004038521A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- flag
- data
- prefix
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Executing Machine-Instructions (AREA)
- Microcomputers (AREA)
Abstract
【課題】プリフィックス命令の命令コードに配置するフラグにより、ターゲット命令の機能を拡張する機構を備えるマイクロコンピュータを提供すること。
【解決手段】デコーダ210と、命令レジスタ211と、レジスタファイル213と、演算器214を有するマイクロコンピュータであって、前記デコーダ210でプリフィックス命令の命令コードに配置したフラグを、プリフィックス命令入力後のターゲット命令のオペコードに対応してデコードするとともに、前記フラグに基づいてターゲット命令の機能を拡張する命令機能拡張実行回路241、242をそれぞれ前記レジスタファイル213と前記演算器214の内部に備える。
【選択図】 図2
【解決手段】デコーダ210と、命令レジスタ211と、レジスタファイル213と、演算器214を有するマイクロコンピュータであって、前記デコーダ210でプリフィックス命令の命令コードに配置したフラグを、プリフィックス命令入力後のターゲット命令のオペコードに対応してデコードするとともに、前記フラグに基づいてターゲット命令の機能を拡張する命令機能拡張実行回路241、242をそれぞれ前記レジスタファイル213と前記演算器214の内部に備える。
【選択図】 図2
Description
【0001】
【発明の属する技術分野】
本発明は、マイクロコンピュータに係り、特に、命令の直前に該命令を修飾するプリフィックス命令を挿入して、これにより命令の機能を拡張する場合に、プリフィックス命令の命令コードに含まれているフラグを制御することにより命令の機能を拡張し、多様な命令が容易に実現できる技術に関する。
【0002】
【従来の技術】
従来、RISC方式のマイクロコンピュータでは、固定長ビット幅の命令コードが用いられている。これは、可変長ビット幅の命令コードを用いる場合と比較すると、命令のデコードに要する時間を短縮でき、かつ回路規模を小さくすることができるからである。
【0003】
命令コード体系を決定した後に新規の命令機能を有した命令コードを追加しようとした場合、従来とのオブジェクト互換性を保つために、新命令コードの割付が困難であるという問題が生じてくる。すなわち、新規に命令を追加しようとした場合、ビット数制限の中で割り振られた従来の命令コード体系との互換性を保つために、空いている数少ない命令コードに割り付ける必要があるため、新規の命令機能を有した命令コードを大量に割り付けることが困難であった。
【0004】
この不具合を解決するために、例えば特開平9−231070号公報記載の如く、ターゲット命令の入力直前に該ターゲット命令の機能を拡張するためのプリフィックス命令を入力することで、該ターゲット命令の即値を拡張したり、オペランドの数を増加させることで命令機能の拡張を行っている。
【0005】
【発明が解決しようとする課題】
前記従来技術による命令機能の拡張は、プリフィックス命令入力直後のターゲット命令の即値及びオペランドに対する拡張であり、プリフィックス命令自体の機能の拡張ではない。
【0006】
このため、従来の命令コード体系で割り当てられた命令の機能とは異なる命令を新規に追加しようとする場合には、従来技術によるプリフィックス命令の命令機能の拡張では不可能である。そのため、空いている数少ない命令コードに割り付ける必要が有り、新規に命令を追加することは困難である。
【0007】
本発明の目的は、前記従来技術による不具合を除去することであり、命令自体の機能を拡張することが可能なプリフィックス命令を提供することである。
【0008】
【課題を解決するための手段】
前記目的を達成するため、ターゲット命令の直前に挿入されたプリフィックス命令を実行することでターゲット命令を修飾し、ターゲット命令のオペレーション内容を拡張するマイクロコンピュータの制御方法において、前記プリフィックス命令の命令コード内に1つ以上のフラグを備え、該フラグの状態をターゲット命令に反映することでターゲット命令のオペレーションコードで指定された機能に別の機能を付加することによりターゲット命令の機能を拡張する。
【0009】
【発明の実施の形態】
以下、本発明の実施形態を、例を用いて図面により詳細に説明する。
【0010】
図1は、本発明の実施例に係るプリフィックス命令とこの直後に表れるターゲット命令の関係を示す図である。プリフィックス命令100は16ビット固定長であり、プリフィックス命令100の命令コードは、ビット15からビット8に8ビットのオペコードを指定する領域106と、ビット7からビット4にそれぞれ1ビットのフラグF1からF4を指定する領域102〜105と、ビット3からビット0に4ビットのオペコードを指定する領域107とを有している。ターゲット命令はオペコードとこのオペコードの実行に必要な情報を持つ領域とからなっている。
【0011】
F1からF4のフラグを命令コードの中に配置したプリフィックス命令100の直後に表れるターゲット命令110を実行する場合、ターゲット命令110のオペコードに応じてセレクタ111により、前記フラグ102〜105のいずれかが選択され、他のフラグに対応する信号は“0”に強制される。すなわち、プリフィックス命令100は直後に表れるターゲット命令110と対応して所定の機能を果たすことができるものである。本発明では、領域102〜105のフラグ(F1からF4)の設定によってプリフィックス命令100を汎用的なものとして使用できるものとされているから、直後に表れるターゲット命令110のオペコードに応じてフラグ(F1からF4)のいずれか1つを選択することでターゲット命令110の機能に別の機能を付加することが必要となる。
【0012】
図1では、フラグ102(F1)によりターゲット命令に機能を付加している例を模式的に示す。プリフィックス命令100の領域102〜105のフラグF1からF4は、ターゲット命令110のオペコードに応じて、フラグF1が選択されており、選択されなかったフラグに対応する選択信号は全て“0”とされる。選択されたフラグは、その内容に応じて“0”か“1”が出力される。
【0013】
フラグの選択に応じて、ターゲット命令の機能は付加された機能を実行できることになるが、この実施例では、表1に示す機能がフラグに対応して実行可能となるものとした。
【0014】
【表1】
図1の例では、プリフィックス命令のフラグを指定する領域が4ビットしか割り当てていないが、フラグを指定する領域は4ビットに固定するものではなく、命令コードの割り当てスペースが空いていればフラグを指定する領域は4ビット以上に割り当てることが可能である。また、これを単純にフラグ対応とするのではなく、4ビットでコード化されたものとして処理するものとすれば、24個の種類の機能とできる。
【0015】
このように、本発明の特徴であるプリフィックス命令のフラグが、一つのプリフィックス命令に複数配置できることから、それぞれ独立に、且つ、一度に、ターゲット命令に対する機能の付加が可能となる。そのため、本発明によれば、プリフィックス命令のみ命令コードに割り当てることで、命令コードの消費を最小限に抑えられ、命令の機能拡張が可能となる。なお、本実施例では、プリフィックス命令が16ビット固定長として説明したが、プリフィックス命令の命令ビット長は16ビットに固定されるものではない。
【0016】
次に、マイクロコンピュータを例に取り、本発明のプリフィックス命令を実現するための構成の一例について説明する。
【0017】
図2は、本発明の実施例に係るCPU(Central Processing Unit)とその周辺の構成を示すブロック図である。CPU200はデータバス203、データアドレスバス204、命令データバス205、および命令アドレスバス206に、それぞれ、接続されている。図では、ROM(Read Only Memory)201は、命令データバス205および命令アドレスバス206に、また、RAM(Random Access Memory)202は、データバス203およびデータアドレスバス204に、それぞれ、接続されている。データバス203、データアドレスバス204、命令データバス205および命令アドレスバス206は、メモリ以外の外部デバイスに接続される構成も可能であるが、本実施例では省略する。前記ROM201には、CPU200に実行させる処理を記述した命令コードが格納されており、前記プリフィックス命令の命令コードも含んでいる。前記RAM202は、実行に使用するデータを格納している。
【0018】
前記CPU200は、デコーダ210、命令レジスタ211、レジスタファイル213および演算器214を有する。また、本発明のプリフィックス命令を実現するための機構として、前記デコーダ210の中にプリフィックス命令をデコードするプリフィックス命令専用デコーダ240を、前記レジスタファイル213および前記演算器214の中に命令機能拡張実行回路241および242を、それぞれ、設ける。ここで、前記デコーダ210の機能には、図1で説明したセレクタ111に対応する機能を果たす機能が含まれる。
【0019】
命令レジスタ211は、前記ROM201から、命令データバス205を介して入力された命令コードを格納する。デコーダ210は、命令レジスタ211に格納された命令コードを解読し、実行に必要な制御信号232をレジスタファイル213に、制御信号233を演算器214に出力する。
【0020】
演算器214は、前記デコーダ210から出力された制御信号233に基づき、レジスタファイル213のレジスタに格納された値や前記RAM202のデータに対して、算術演算、論理演算あるいはシフト演算を実行し、その結果を必要なら、演算結果235をレジスタファイル213にフィードバックする。
【0021】
本発明の特徴であるプリフィックス命令専用デコーダ240は、デコーダ210が、プリフィックス命令の命令コードに配置したフラグの状態をターゲット命令のオペコードに対応して解読、判断して実行に必要な制御信号251を命令機能拡張実行回路241に、制御信号252を命令機能拡張実行回路242に出力する。
【0022】
以上のような方法で、プリフィックス命令のフラグによりターゲット命令の機能を拡張することが可能となる。
【0023】
(第1の実施形態)
図3(A)は、ターゲット命令の命令コードで指定する汎用レジスタの番号を選択できる機能を有するフラグの詳細仕様を示す表、(B)はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図である。
【0024】
図3は、ターゲット命令の命令コードで指定する汎用レジスタの番号を選択できる機能をフラグ102(F1)に割り当てた場合で、かつターゲット命令の命令コードで汎用レジスタを指定するビット数が4ビットである場合を例とした。
フラグ102の値が“0”のときは、ターゲット命令の命令コードで指定した汎用レジスタの番号が0〜15のいずれかを使用する。フラグ102の値が“1”のときは、ターゲット命令の命令コードで指定した汎用レジスタの番号が16〜31のいずれかを使用する。
【0025】
次に、図3(B)を参照して動作の具体例を説明する。レジスタファイル213はレジスタ群361と命令機能拡張実行回路241を有する。デコーダ210でターゲット命令コードを解読し、汎用レジスタの番号を示した4ビットのコード領域323を、4ビットの制御信号332を介して4ビットの領域341に読み出す。同様に、汎用レジスタの番号を示した4ビットのコード領域324を、4ビットの制御信号333を介して4ビットの領域343に読み出す。その後、命令機能拡張実行回路241で領域341と領域343のMSB(Most Significant Bit)側に新たにプリフィックス命令100の前記フラグ102(F1)を付加する。ここでは、図1で説明したようにフラグ102(F1)が選択されているので、他のフラグについての表示は省略した。生成された5ビットの汎用レジスタ指定領域は、制御信号351、352を介してレジスタ群361に出力される。
【0026】
(第2の実施形態)
図4(A)は、ターゲット命令が除算命令の時に、剰余の算出の有無を選択できる機能を有するフラグの詳細仕様を示す表、(B)はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図である。
【0027】
図4は剰余の算出の有無を選択できる機能を有するフラグF2を103に割り当てた場合を例とした。また、除算命令の商と剰余は32ビット以下の数で表す場合を例とした。フラグ103(F2)の値が“0”のときは、除算命令を実行した場合、剰余をレジスタに格納しない。フラグ103(F2)の値が“1”のときは、除算命令を実行した場合、剰余をレジスタに格納する。
【0028】
次に、図4(B)、図5を参照して動作の具体例を説明する。演算器214は除算回路441と命令機能拡張実行回路242を有する。除算回路441は32ビットの商データ452と32ビットの剰余データ451を出力する。除算回路414で出力された32ビットの商データ452は命令機能拡張実行回路242の入力となるデータ453と、レジスタファイルへ出力されるデータ454に伝達される。データ454は除算回路441の商をレジスタへ格納する役割を果たしている。命令機能拡張実行回路242は、除算回路441から出力された剰余データ451と、商データ453と、プリフィックス命令100のフラグ103を入力とし、実行結果であるデータ455あるいは除算回路441の商データ454を図2における制御信号235に対応するものとしてレジスタファイル213へ格納する。ここでも、図1で説明したようにフラグ103(F2)が選択されているので、他のフラグについての表示は省略した。
【0029】
図5は、図4で示した命令機能拡張実行回路242の機能ブロックの一例を示す図である。命令機能拡張実行回路242は、フラグ103(F2)の信号値により剰余データ451と商データ453を選択するセレクタ510を有している。フラグ103が“0”の場合、セレクタ510は商データ453をセレクタ510の出力455とすることで、剰余のレジスタへの格納を妨げている。フラグ103(F2)が“1”の場合、セレクタ510は剰余データ453をセレクタ510の出力455とする。なお、剰余の算出を行わない場合に商データ453を出力する理由は、セレクタ510の出力データ455と、除算回路441から出力された商データ454が等しい場合には、剰余の算出を行っていないと簡単に判断できるため、デバッグが容易になるからである。
【0030】
(第3の実施形態)
図6(A)は、ターゲット命令が加算命令もしくは減算命令の時に、飽和判定の有無を選択できる機能を有するフラグの詳細仕様を示す表、(B)はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図である。
【0031】
図6は飽和判定の有無を選択できる機能を有するフラグF3を104に割り当てた場合を例とした。フラグ104(F3)の値が“0”のときは、ターゲット命令に加算命令もしくは減算命令を実行した場合、飽和判定を行わない。フラグ104(F3)の値が“1”のときは、ターゲット命令に加算命令もしくは減算命令を実行した場合、飽和判定を行う。
【0032】
次に、図6(B)、図7を参照して動作の具体例を説明する。演算器214はALU(Arithmetic Logic Unit)641と命令機能拡張実行回路242を有する。ALU641は演算結果を32ビットのデータ651に出力する。命令機能拡張実行回路242は、ALU641から出力されたデータ651と、レジスタファイル213から出力されたデータ234と、プリフィックス命令100のフラグ103を入力とし、実行結果であるデータ652を図2における制御信号235に対応するものとしてレジスタファイル213へ格納する。ここでも、図1で説明したようにフラグ104(F3)が選択されているので、他のフラグについての表示は省略した。
【0033】
図7は、図6(B)で示した命令機能拡張実行回路242の機能ブロック図である。命令機能拡張実行回路242は、飽和判定回路700とセレクタ701を有している。飽和判定回路700は、ALUの出力データ710と、レジスタファイル213から出力されたデータ234を入力としている。飽和判定回路700は、入力データが飽和値を超えていた場合飽和値をデータ711に出力し、飽和値を超えていなかった場合には入力データをそのままデータ711に出力する。飽和値については、予めレジスタファイル213内のレジスタに格納した値を飽和値とみなし、データ234として読み出されて使用される。そして、セレクタ701は、フラグ104(F3)の制御信号により、ALUの出力データ710と飽和判定回路出力データ711を選択する。フラグ104(F3)が“0”の場合、飽和の判定を行わないので、セレクタ701はALUデータ710を出力する。フラグ104(F3)が“1”の場合、飽和の判定を行うので、セレクタ701は飽和判定回路700の出力データ711を出力する。セレクタ701で選択された出力652を図2におけるデータ234に対応するものとしてレジスタファイル213へ格納する。
【0034】
(第4の実施形態)
図8(A)は、符号付きと無符号のデータを選択できる機能を有するフラグの詳細仕様を示す表、(B)はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図である。
【0035】
図8は符号付きと無符号のデータを選択できる機能を有するフラグF4を105に割り当てた場合を例とした。フラグ105(F4)の値が“0”のときは、無符号のデータを用いる。フラグ105(F4)の値が“1”のときは、符号付きのデータを用いる。ここでも、図1で説明したようにフラグ104(F3)が選択されているので、他のフラグについての表示は省略した。
【0036】
次に図8(B)、図9を参照して、動作の具体例を説明する。レジスタファイル213は命令機能拡張実行回路241とレジスタ840を有する。命令機能拡張実行回路241は、データバスから出力されたデータ226と、プリフィックス命令100のフラグ105(F4)を入力とし、実行結果であるデータ851をレジスタ840へ転送する。
【0037】
図9は、図8(B)で示した命令機能拡張実行回路241の機能ブロック図である。命令機能拡張実行回路241は、符号拡張実行回路900、ゼロ拡張実行回路901およびセレクタ902を有している。符号拡張実行回路900は、データバス203からのデータ226が8ビットの場合には、ビット7の値をビット8からビット31に、データバス203からのデータ226が16ビットの場合には、ビット15の値をビット16からビット31に付加することで、32ビットの符号付きデータを生成する。ゼロ拡張実行回路901は、データバス203からのデータ226が8ビットの場合には、ビット8からビット31まで“0”を、データバス203からのデータ226が16ビットの場合には、ビット16からビット31まで“0”を付加することで、32ビットの無符号のデータを生成する。データバス203からのデータ226が32ビットの場合には、符号拡張実行回路900、ゼロ拡張実行回路901とも、入力と同じデータを出力する。セレクタ902は、フラグ105(F4)の制御信号により、符号拡張実行回路出力データ913とゼロ拡張実行回路出力データ914とのいずれかを選択する。フラグ105(F4)が“0”の場合、無符号のデータを取り扱うので、セレクタ902はゼロ拡張実行回路901の出力データ914を出力する。フラグ105(F4)が“1”の場合、符号付きのデータを取り扱うので、セレクタ701は符号拡張実行回路900の出力データ913を出力する。セレクタ902で選択された出力851をレジスタ840へ格納する。
【0038】
以上、本発明の具体的な実施形態を述べてきたが、それらに制限される訳ではない。プリフィックス命令の命令コードに配置したフラグによるターゲット命令の機能拡張との本発明の思想を逸脱しない範囲で様々な実施形態が考えられる。
【0039】
【発明の効果】
以上、本発明によれば、プリフィックス命令の命令コードに配置したフラグを用いることで、命令コードのスペースを消費することなく、プリフィックス命令後に入力したターゲット命令自体の機能を拡張することが容易となる。
【図面の簡単な説明】
【図1】本発明の実施例に係るプリフィックス命令とこの直後に表れるターゲット命令の関係を示す図。
【図2】本発明の実施例に係るCPU(Central Processing Unit)とその周辺の構成を示すブロック図。
【図3】(A)は、ターゲット命令の命令コードで指定する汎用レジスタの番号を選択できる機能を有するフラグの詳細仕様を示す表、(B)はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図。
【図4】(A)は、ターゲット命令が除算命令の時に、剰余の算出の有無を選択できる機能を有するフラグの詳細仕様を示す表、(B)はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図。
【図5】図4(B)で示した命令機能拡張実行回路242の機能ブロックの一例を示す図。
【図6】(A)は、ターゲット命令が加算命令もしくは減算命令の時に、飽和判定の有無を選択できる機能を有するフラグの詳細仕様を示す表、(B)はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図。
【図7】図6(B)で示した命令機能拡張実行回路242の機能ブロックの一例を示す図。
【図8】(A)は、符号付きと無符号のデータを選択できる機能を有するフラグの詳細仕様を示す表、(B)はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図。
【図9】図8(B)で示した命令機能拡張実行回路241の機能ブロックの一例を示す図。
【符号の説明】
100:プリフィックス命令、102,103,104,105:フラグ、106,107:オペコード、110:ターゲット命令、200:CPU、201:ROM、202:RAM、203:データバス、204:データアドレスバス、205:命令データバス、206:命令アドレスバス、210:デコーダ、211:命令レジスタ、213:レジスタファイル、214:演算器、234,235,451〜455,651,652,710,711,851,913,914:データ線、232,233,251,252,332,333,351,352:制御信号、240:プリフィックス命令専用デコーダ、241,242:命令機能拡張実行回路、323,341:Rm、324,343:Rn、361:レジスタ群、441:除算回路、510,701,902:セレクタ、641:ALU、700:飽和判定回路、840:レジスタ、900:符号拡張実行回路、901:ゼロ拡張実行回路。
【発明の属する技術分野】
本発明は、マイクロコンピュータに係り、特に、命令の直前に該命令を修飾するプリフィックス命令を挿入して、これにより命令の機能を拡張する場合に、プリフィックス命令の命令コードに含まれているフラグを制御することにより命令の機能を拡張し、多様な命令が容易に実現できる技術に関する。
【0002】
【従来の技術】
従来、RISC方式のマイクロコンピュータでは、固定長ビット幅の命令コードが用いられている。これは、可変長ビット幅の命令コードを用いる場合と比較すると、命令のデコードに要する時間を短縮でき、かつ回路規模を小さくすることができるからである。
【0003】
命令コード体系を決定した後に新規の命令機能を有した命令コードを追加しようとした場合、従来とのオブジェクト互換性を保つために、新命令コードの割付が困難であるという問題が生じてくる。すなわち、新規に命令を追加しようとした場合、ビット数制限の中で割り振られた従来の命令コード体系との互換性を保つために、空いている数少ない命令コードに割り付ける必要があるため、新規の命令機能を有した命令コードを大量に割り付けることが困難であった。
【0004】
この不具合を解決するために、例えば特開平9−231070号公報記載の如く、ターゲット命令の入力直前に該ターゲット命令の機能を拡張するためのプリフィックス命令を入力することで、該ターゲット命令の即値を拡張したり、オペランドの数を増加させることで命令機能の拡張を行っている。
【0005】
【発明が解決しようとする課題】
前記従来技術による命令機能の拡張は、プリフィックス命令入力直後のターゲット命令の即値及びオペランドに対する拡張であり、プリフィックス命令自体の機能の拡張ではない。
【0006】
このため、従来の命令コード体系で割り当てられた命令の機能とは異なる命令を新規に追加しようとする場合には、従来技術によるプリフィックス命令の命令機能の拡張では不可能である。そのため、空いている数少ない命令コードに割り付ける必要が有り、新規に命令を追加することは困難である。
【0007】
本発明の目的は、前記従来技術による不具合を除去することであり、命令自体の機能を拡張することが可能なプリフィックス命令を提供することである。
【0008】
【課題を解決するための手段】
前記目的を達成するため、ターゲット命令の直前に挿入されたプリフィックス命令を実行することでターゲット命令を修飾し、ターゲット命令のオペレーション内容を拡張するマイクロコンピュータの制御方法において、前記プリフィックス命令の命令コード内に1つ以上のフラグを備え、該フラグの状態をターゲット命令に反映することでターゲット命令のオペレーションコードで指定された機能に別の機能を付加することによりターゲット命令の機能を拡張する。
【0009】
【発明の実施の形態】
以下、本発明の実施形態を、例を用いて図面により詳細に説明する。
【0010】
図1は、本発明の実施例に係るプリフィックス命令とこの直後に表れるターゲット命令の関係を示す図である。プリフィックス命令100は16ビット固定長であり、プリフィックス命令100の命令コードは、ビット15からビット8に8ビットのオペコードを指定する領域106と、ビット7からビット4にそれぞれ1ビットのフラグF1からF4を指定する領域102〜105と、ビット3からビット0に4ビットのオペコードを指定する領域107とを有している。ターゲット命令はオペコードとこのオペコードの実行に必要な情報を持つ領域とからなっている。
【0011】
F1からF4のフラグを命令コードの中に配置したプリフィックス命令100の直後に表れるターゲット命令110を実行する場合、ターゲット命令110のオペコードに応じてセレクタ111により、前記フラグ102〜105のいずれかが選択され、他のフラグに対応する信号は“0”に強制される。すなわち、プリフィックス命令100は直後に表れるターゲット命令110と対応して所定の機能を果たすことができるものである。本発明では、領域102〜105のフラグ(F1からF4)の設定によってプリフィックス命令100を汎用的なものとして使用できるものとされているから、直後に表れるターゲット命令110のオペコードに応じてフラグ(F1からF4)のいずれか1つを選択することでターゲット命令110の機能に別の機能を付加することが必要となる。
【0012】
図1では、フラグ102(F1)によりターゲット命令に機能を付加している例を模式的に示す。プリフィックス命令100の領域102〜105のフラグF1からF4は、ターゲット命令110のオペコードに応じて、フラグF1が選択されており、選択されなかったフラグに対応する選択信号は全て“0”とされる。選択されたフラグは、その内容に応じて“0”か“1”が出力される。
【0013】
フラグの選択に応じて、ターゲット命令の機能は付加された機能を実行できることになるが、この実施例では、表1に示す機能がフラグに対応して実行可能となるものとした。
【0014】
【表1】
図1の例では、プリフィックス命令のフラグを指定する領域が4ビットしか割り当てていないが、フラグを指定する領域は4ビットに固定するものではなく、命令コードの割り当てスペースが空いていればフラグを指定する領域は4ビット以上に割り当てることが可能である。また、これを単純にフラグ対応とするのではなく、4ビットでコード化されたものとして処理するものとすれば、24個の種類の機能とできる。
【0015】
このように、本発明の特徴であるプリフィックス命令のフラグが、一つのプリフィックス命令に複数配置できることから、それぞれ独立に、且つ、一度に、ターゲット命令に対する機能の付加が可能となる。そのため、本発明によれば、プリフィックス命令のみ命令コードに割り当てることで、命令コードの消費を最小限に抑えられ、命令の機能拡張が可能となる。なお、本実施例では、プリフィックス命令が16ビット固定長として説明したが、プリフィックス命令の命令ビット長は16ビットに固定されるものではない。
【0016】
次に、マイクロコンピュータを例に取り、本発明のプリフィックス命令を実現するための構成の一例について説明する。
【0017】
図2は、本発明の実施例に係るCPU(Central Processing Unit)とその周辺の構成を示すブロック図である。CPU200はデータバス203、データアドレスバス204、命令データバス205、および命令アドレスバス206に、それぞれ、接続されている。図では、ROM(Read Only Memory)201は、命令データバス205および命令アドレスバス206に、また、RAM(Random Access Memory)202は、データバス203およびデータアドレスバス204に、それぞれ、接続されている。データバス203、データアドレスバス204、命令データバス205および命令アドレスバス206は、メモリ以外の外部デバイスに接続される構成も可能であるが、本実施例では省略する。前記ROM201には、CPU200に実行させる処理を記述した命令コードが格納されており、前記プリフィックス命令の命令コードも含んでいる。前記RAM202は、実行に使用するデータを格納している。
【0018】
前記CPU200は、デコーダ210、命令レジスタ211、レジスタファイル213および演算器214を有する。また、本発明のプリフィックス命令を実現するための機構として、前記デコーダ210の中にプリフィックス命令をデコードするプリフィックス命令専用デコーダ240を、前記レジスタファイル213および前記演算器214の中に命令機能拡張実行回路241および242を、それぞれ、設ける。ここで、前記デコーダ210の機能には、図1で説明したセレクタ111に対応する機能を果たす機能が含まれる。
【0019】
命令レジスタ211は、前記ROM201から、命令データバス205を介して入力された命令コードを格納する。デコーダ210は、命令レジスタ211に格納された命令コードを解読し、実行に必要な制御信号232をレジスタファイル213に、制御信号233を演算器214に出力する。
【0020】
演算器214は、前記デコーダ210から出力された制御信号233に基づき、レジスタファイル213のレジスタに格納された値や前記RAM202のデータに対して、算術演算、論理演算あるいはシフト演算を実行し、その結果を必要なら、演算結果235をレジスタファイル213にフィードバックする。
【0021】
本発明の特徴であるプリフィックス命令専用デコーダ240は、デコーダ210が、プリフィックス命令の命令コードに配置したフラグの状態をターゲット命令のオペコードに対応して解読、判断して実行に必要な制御信号251を命令機能拡張実行回路241に、制御信号252を命令機能拡張実行回路242に出力する。
【0022】
以上のような方法で、プリフィックス命令のフラグによりターゲット命令の機能を拡張することが可能となる。
【0023】
(第1の実施形態)
図3(A)は、ターゲット命令の命令コードで指定する汎用レジスタの番号を選択できる機能を有するフラグの詳細仕様を示す表、(B)はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図である。
【0024】
図3は、ターゲット命令の命令コードで指定する汎用レジスタの番号を選択できる機能をフラグ102(F1)に割り当てた場合で、かつターゲット命令の命令コードで汎用レジスタを指定するビット数が4ビットである場合を例とした。
フラグ102の値が“0”のときは、ターゲット命令の命令コードで指定した汎用レジスタの番号が0〜15のいずれかを使用する。フラグ102の値が“1”のときは、ターゲット命令の命令コードで指定した汎用レジスタの番号が16〜31のいずれかを使用する。
【0025】
次に、図3(B)を参照して動作の具体例を説明する。レジスタファイル213はレジスタ群361と命令機能拡張実行回路241を有する。デコーダ210でターゲット命令コードを解読し、汎用レジスタの番号を示した4ビットのコード領域323を、4ビットの制御信号332を介して4ビットの領域341に読み出す。同様に、汎用レジスタの番号を示した4ビットのコード領域324を、4ビットの制御信号333を介して4ビットの領域343に読み出す。その後、命令機能拡張実行回路241で領域341と領域343のMSB(Most Significant Bit)側に新たにプリフィックス命令100の前記フラグ102(F1)を付加する。ここでは、図1で説明したようにフラグ102(F1)が選択されているので、他のフラグについての表示は省略した。生成された5ビットの汎用レジスタ指定領域は、制御信号351、352を介してレジスタ群361に出力される。
【0026】
(第2の実施形態)
図4(A)は、ターゲット命令が除算命令の時に、剰余の算出の有無を選択できる機能を有するフラグの詳細仕様を示す表、(B)はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図である。
【0027】
図4は剰余の算出の有無を選択できる機能を有するフラグF2を103に割り当てた場合を例とした。また、除算命令の商と剰余は32ビット以下の数で表す場合を例とした。フラグ103(F2)の値が“0”のときは、除算命令を実行した場合、剰余をレジスタに格納しない。フラグ103(F2)の値が“1”のときは、除算命令を実行した場合、剰余をレジスタに格納する。
【0028】
次に、図4(B)、図5を参照して動作の具体例を説明する。演算器214は除算回路441と命令機能拡張実行回路242を有する。除算回路441は32ビットの商データ452と32ビットの剰余データ451を出力する。除算回路414で出力された32ビットの商データ452は命令機能拡張実行回路242の入力となるデータ453と、レジスタファイルへ出力されるデータ454に伝達される。データ454は除算回路441の商をレジスタへ格納する役割を果たしている。命令機能拡張実行回路242は、除算回路441から出力された剰余データ451と、商データ453と、プリフィックス命令100のフラグ103を入力とし、実行結果であるデータ455あるいは除算回路441の商データ454を図2における制御信号235に対応するものとしてレジスタファイル213へ格納する。ここでも、図1で説明したようにフラグ103(F2)が選択されているので、他のフラグについての表示は省略した。
【0029】
図5は、図4で示した命令機能拡張実行回路242の機能ブロックの一例を示す図である。命令機能拡張実行回路242は、フラグ103(F2)の信号値により剰余データ451と商データ453を選択するセレクタ510を有している。フラグ103が“0”の場合、セレクタ510は商データ453をセレクタ510の出力455とすることで、剰余のレジスタへの格納を妨げている。フラグ103(F2)が“1”の場合、セレクタ510は剰余データ453をセレクタ510の出力455とする。なお、剰余の算出を行わない場合に商データ453を出力する理由は、セレクタ510の出力データ455と、除算回路441から出力された商データ454が等しい場合には、剰余の算出を行っていないと簡単に判断できるため、デバッグが容易になるからである。
【0030】
(第3の実施形態)
図6(A)は、ターゲット命令が加算命令もしくは減算命令の時に、飽和判定の有無を選択できる機能を有するフラグの詳細仕様を示す表、(B)はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図である。
【0031】
図6は飽和判定の有無を選択できる機能を有するフラグF3を104に割り当てた場合を例とした。フラグ104(F3)の値が“0”のときは、ターゲット命令に加算命令もしくは減算命令を実行した場合、飽和判定を行わない。フラグ104(F3)の値が“1”のときは、ターゲット命令に加算命令もしくは減算命令を実行した場合、飽和判定を行う。
【0032】
次に、図6(B)、図7を参照して動作の具体例を説明する。演算器214はALU(Arithmetic Logic Unit)641と命令機能拡張実行回路242を有する。ALU641は演算結果を32ビットのデータ651に出力する。命令機能拡張実行回路242は、ALU641から出力されたデータ651と、レジスタファイル213から出力されたデータ234と、プリフィックス命令100のフラグ103を入力とし、実行結果であるデータ652を図2における制御信号235に対応するものとしてレジスタファイル213へ格納する。ここでも、図1で説明したようにフラグ104(F3)が選択されているので、他のフラグについての表示は省略した。
【0033】
図7は、図6(B)で示した命令機能拡張実行回路242の機能ブロック図である。命令機能拡張実行回路242は、飽和判定回路700とセレクタ701を有している。飽和判定回路700は、ALUの出力データ710と、レジスタファイル213から出力されたデータ234を入力としている。飽和判定回路700は、入力データが飽和値を超えていた場合飽和値をデータ711に出力し、飽和値を超えていなかった場合には入力データをそのままデータ711に出力する。飽和値については、予めレジスタファイル213内のレジスタに格納した値を飽和値とみなし、データ234として読み出されて使用される。そして、セレクタ701は、フラグ104(F3)の制御信号により、ALUの出力データ710と飽和判定回路出力データ711を選択する。フラグ104(F3)が“0”の場合、飽和の判定を行わないので、セレクタ701はALUデータ710を出力する。フラグ104(F3)が“1”の場合、飽和の判定を行うので、セレクタ701は飽和判定回路700の出力データ711を出力する。セレクタ701で選択された出力652を図2におけるデータ234に対応するものとしてレジスタファイル213へ格納する。
【0034】
(第4の実施形態)
図8(A)は、符号付きと無符号のデータを選択できる機能を有するフラグの詳細仕様を示す表、(B)はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図である。
【0035】
図8は符号付きと無符号のデータを選択できる機能を有するフラグF4を105に割り当てた場合を例とした。フラグ105(F4)の値が“0”のときは、無符号のデータを用いる。フラグ105(F4)の値が“1”のときは、符号付きのデータを用いる。ここでも、図1で説明したようにフラグ104(F3)が選択されているので、他のフラグについての表示は省略した。
【0036】
次に図8(B)、図9を参照して、動作の具体例を説明する。レジスタファイル213は命令機能拡張実行回路241とレジスタ840を有する。命令機能拡張実行回路241は、データバスから出力されたデータ226と、プリフィックス命令100のフラグ105(F4)を入力とし、実行結果であるデータ851をレジスタ840へ転送する。
【0037】
図9は、図8(B)で示した命令機能拡張実行回路241の機能ブロック図である。命令機能拡張実行回路241は、符号拡張実行回路900、ゼロ拡張実行回路901およびセレクタ902を有している。符号拡張実行回路900は、データバス203からのデータ226が8ビットの場合には、ビット7の値をビット8からビット31に、データバス203からのデータ226が16ビットの場合には、ビット15の値をビット16からビット31に付加することで、32ビットの符号付きデータを生成する。ゼロ拡張実行回路901は、データバス203からのデータ226が8ビットの場合には、ビット8からビット31まで“0”を、データバス203からのデータ226が16ビットの場合には、ビット16からビット31まで“0”を付加することで、32ビットの無符号のデータを生成する。データバス203からのデータ226が32ビットの場合には、符号拡張実行回路900、ゼロ拡張実行回路901とも、入力と同じデータを出力する。セレクタ902は、フラグ105(F4)の制御信号により、符号拡張実行回路出力データ913とゼロ拡張実行回路出力データ914とのいずれかを選択する。フラグ105(F4)が“0”の場合、無符号のデータを取り扱うので、セレクタ902はゼロ拡張実行回路901の出力データ914を出力する。フラグ105(F4)が“1”の場合、符号付きのデータを取り扱うので、セレクタ701は符号拡張実行回路900の出力データ913を出力する。セレクタ902で選択された出力851をレジスタ840へ格納する。
【0038】
以上、本発明の具体的な実施形態を述べてきたが、それらに制限される訳ではない。プリフィックス命令の命令コードに配置したフラグによるターゲット命令の機能拡張との本発明の思想を逸脱しない範囲で様々な実施形態が考えられる。
【0039】
【発明の効果】
以上、本発明によれば、プリフィックス命令の命令コードに配置したフラグを用いることで、命令コードのスペースを消費することなく、プリフィックス命令後に入力したターゲット命令自体の機能を拡張することが容易となる。
【図面の簡単な説明】
【図1】本発明の実施例に係るプリフィックス命令とこの直後に表れるターゲット命令の関係を示す図。
【図2】本発明の実施例に係るCPU(Central Processing Unit)とその周辺の構成を示すブロック図。
【図3】(A)は、ターゲット命令の命令コードで指定する汎用レジスタの番号を選択できる機能を有するフラグの詳細仕様を示す表、(B)はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図。
【図4】(A)は、ターゲット命令が除算命令の時に、剰余の算出の有無を選択できる機能を有するフラグの詳細仕様を示す表、(B)はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図。
【図5】図4(B)で示した命令機能拡張実行回路242の機能ブロックの一例を示す図。
【図6】(A)は、ターゲット命令が加算命令もしくは減算命令の時に、飽和判定の有無を選択できる機能を有するフラグの詳細仕様を示す表、(B)はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図。
【図7】図6(B)で示した命令機能拡張実行回路242の機能ブロックの一例を示す図。
【図8】(A)は、符号付きと無符号のデータを選択できる機能を有するフラグの詳細仕様を示す表、(B)はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図。
【図9】図8(B)で示した命令機能拡張実行回路241の機能ブロックの一例を示す図。
【符号の説明】
100:プリフィックス命令、102,103,104,105:フラグ、106,107:オペコード、110:ターゲット命令、200:CPU、201:ROM、202:RAM、203:データバス、204:データアドレスバス、205:命令データバス、206:命令アドレスバス、210:デコーダ、211:命令レジスタ、213:レジスタファイル、214:演算器、234,235,451〜455,651,652,710,711,851,913,914:データ線、232,233,251,252,332,333,351,352:制御信号、240:プリフィックス命令専用デコーダ、241,242:命令機能拡張実行回路、323,341:Rm、324,343:Rn、361:レジスタ群、441:除算回路、510,701,902:セレクタ、641:ALU、700:飽和判定回路、840:レジスタ、900:符号拡張実行回路、901:ゼロ拡張実行回路。
Claims (5)
- ターゲット命令の直前に該命令を修飾するプリフィックス命令を配置するとともに、前記プリフィックス命令の命令コード内に1つ以上のフラグを備え、該フラグの状態を前記ターゲット命令のオペコードを参照して解読してフラグの状態を前記ターゲット命令に反映することで該ターゲット命令のオペレーションコードで指定された機能とは異なる機能を実行可能とすることを特徴とするマイクロコンピュータ。
- 前記プリフィックス命令の命令コードに含まれているフラグが、使用する汎用レジスタの番号を選択する請求項1項記載のマイクロコンピュータ。
- 前記プリフィックス命令の命令コードに含まれているフラグが、前記ターゲット命令が除算命令の場合、剰余算出有無を選択する請求項1項記載のマイクロコンピュータ。
- 前記プリフィックス命令の命令コードに含まれているフラグが、前記ターゲット命令が加算命令もしくは減算命令の場合、演算結果の飽和判定の有無を選択する請求項1項記載のマイクロコンピュータ。
- 前記プリフィックス命令の命令コードに含まれているフラグが、符号つきのデータと符号無しのデータのどちらかを選択する請求項1項記載のマイクロコンピュータ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002194100A JP2004038521A (ja) | 2002-07-03 | 2002-07-03 | マイクロコンピュータ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002194100A JP2004038521A (ja) | 2002-07-03 | 2002-07-03 | マイクロコンピュータ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004038521A true JP2004038521A (ja) | 2004-02-05 |
Family
ID=31702874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002194100A Pending JP2004038521A (ja) | 2002-07-03 | 2002-07-03 | マイクロコンピュータ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004038521A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009163442A (ja) * | 2007-12-28 | 2009-07-23 | Fujitsu Ltd | 演算処理装置及び命令の拡張方法 |
US7664933B2 (en) | 2005-01-17 | 2010-02-16 | Denso Corporation | Microcomputer and encoding system for instruction code and CPU |
US7917734B2 (en) | 2003-06-30 | 2011-03-29 | Intel Corporation | Determining length of instruction with multiple byte escape code based on information from other than opcode byte |
-
2002
- 2002-07-03 JP JP2002194100A patent/JP2004038521A/ja active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7917734B2 (en) | 2003-06-30 | 2011-03-29 | Intel Corporation | Determining length of instruction with multiple byte escape code based on information from other than opcode byte |
US7966476B2 (en) | 2003-06-30 | 2011-06-21 | Intel Corporation | Determining length of instruction with escape and addressing form bytes without evaluating opcode |
US8161269B2 (en) | 2003-06-30 | 2012-04-17 | Intel Corporation | Determining length of instruction with address form field exclusive of evaluating instruction specific opcode in three byte escape opcode |
US8402252B2 (en) | 2003-06-30 | 2013-03-19 | Intel Corporation | Determining length of instruction with address form field exclusive of evaluating instruction specific opcode in three byte escape opcode |
US8793470B2 (en) | 2003-06-30 | 2014-07-29 | Intel Corporation | Length determination of instruction code with address form field and escape opcode value by evaluating portions other than instruction specific opcode |
US7664933B2 (en) | 2005-01-17 | 2010-02-16 | Denso Corporation | Microcomputer and encoding system for instruction code and CPU |
US7991982B2 (en) | 2005-01-17 | 2011-08-02 | Denso Corporation | Microcomputer and encoding system for executing peripheral function instructions |
JP2009163442A (ja) * | 2007-12-28 | 2009-07-23 | Fujitsu Ltd | 演算処理装置及び命令の拡張方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3711422B2 (ja) | 情報処理回路 | |
US7363466B2 (en) | Microcomputer | |
EP1063586B1 (en) | Apparatus and method for processing data with a plurality of flag groups | |
JPH04172533A (ja) | 電子計算機 | |
US6195740B1 (en) | Constant reconstructing processor that execute an instruction using an operand divided between instructions | |
JPS62197830A (ja) | デ−タ処理システム | |
US5938759A (en) | Processor instruction control mechanism capable of decoding register instructions and immediate instructions with simple configuration | |
JPH1049369A (ja) | データ処理装置 | |
KR100222032B1 (ko) | 디지탈 신호 처리기에서의 2배 정밀도 곱셈연산 수행방법 | |
CN110688153B (zh) | 一种指令分支执行控制方法及相关设备、指令结构 | |
US5077659A (en) | Data processor employing the same microprograms for data having different bit lengths | |
JP2004038521A (ja) | マイクロコンピュータ | |
US6209080B1 (en) | Constant reconstruction processor that supports reductions in code size and processing time | |
US6779098B2 (en) | Data processing device capable of reading and writing of double precision data in one cycle | |
JP3727395B2 (ja) | マイクロコンピュータ | |
JP3570287B2 (ja) | マイクロコンピュータ | |
JP2565495B2 (ja) | デ−タ処理システム | |
JP3841820B2 (ja) | マイクロコンピュータ | |
JPS623332A (ja) | 情報処理装置 | |
JP3619343B2 (ja) | データ処理装置と方法 | |
JP2000112754A (ja) | データ処理装置 | |
JP2006092158A (ja) | デジタル信号処理回路 | |
US7010562B2 (en) | Arithmetic circuit | |
JP3733137B2 (ja) | マイクロコンピュータ | |
US20070055847A1 (en) | Operational processor with a status information register serving as a data register |