JP2006293490A - Cpu - Google Patents

Cpu Download PDF

Info

Publication number
JP2006293490A
JP2006293490A JP2005110074A JP2005110074A JP2006293490A JP 2006293490 A JP2006293490 A JP 2006293490A JP 2005110074 A JP2005110074 A JP 2005110074A JP 2005110074 A JP2005110074 A JP 2005110074A JP 2006293490 A JP2006293490 A JP 2006293490A
Authority
JP
Japan
Prior art keywords
register
instruction
fixed data
decoder
cpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005110074A
Other languages
English (en)
Inventor
Masahiro Kamiya
政裕 神谷
Hideaki Ishihara
秀昭 石原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Corp
Original Assignee
Denso Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Denso Corp filed Critical Denso Corp
Priority to JP2005110074A priority Critical patent/JP2006293490A/ja
Publication of JP2006293490A publication Critical patent/JP2006293490A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】 汎用レジスタを、簡単な取扱いでより効率的に利用することができるCPUを提供する。
【解決手段】 CPU1のレジスタ部5における特定汎用レジスタ8(r0)を、固定データ値「0」を読み出すためのレジスタとしても使用可能に構成する。シーケンサのレジスタ書き換え制御部9は、デコーダ6のデコード結果がレジスタr0に対する書込み操作を示す場合、セレクタ4に演算部3による演算結果データを選択させ、デコーダ6のデコード結果について特定条件が成立すると、セレクタ4に初期値「0」側を選択させる。
【選択図】 図1

Description

本発明は、フェッチした命令をデコードするデコーダと、デコード結果に応じて演算を実行する演算部と、演算に使用されるデータが格納される複数の汎用レジスタとを備えてなるCPUに関する。
CPUの汎用レジスタは、データ値やアドレス値を記憶するために使用されるが、近年のCPUは取扱うデータ量が多くなる傾向にあるため、それに応じてアドレス空間も大きくなる傾向にある。例えば、アドレスビット数が20ビット以上となるものも存在する。
斯様なアドレス空間の拡大に対して、例えば、0xff1010番地にアクセスする場合、0xff0000番地を先頭アドレスとしてCPUの汎用レジスタやベースアドレスレジスタなどに予めセットしておき、前記先頭アドレスに対する相対アドレス0x1010を指定すると、命令の実行時に(先頭アドレス)+(オフセットアドレス)の加算処理を行うことで0xff1010番地にアクセスさせる方式がある。これは、所謂「オフセット付きレジスタ間接命令」と言われるアドレッシング方式である。即ち、オフセット付きレジスタ間接命令を使用する場合は、フルアドレスが3バイトである場合でも、オフセットアドレスを1バイトや2バイトで指定することができる。
尚、上記のような従来技術は、極めて一般的に実施されている周知技術であるから、特に先行技術文献を提示するまでもないと考える。
しかしながら、上記のような従来の方式では、レジスタの1つがアドレス指定用に専有されてしまう。若しくは、前記レジスタを別の目的にも使用したい場合は、所定の処理が終了した後に、当該レジスタにアドレス値をセットし直さなければならず、処理が煩雑になるという問題がある。
本発明は上記事情に鑑みてなされたものであり、その目的は、汎用レジスタを、簡単な取扱いでより効率的に利用することができるCPUを提供することにある。
請求項1記載のCPUによれば、複数の汎用レジスタの一部を、固定データ値を読み出すためのレジスタとしても使用可能に構成する。即ち、レジスタ制御手段は、デコーダのデコード結果が前記レジスタに対する書込み操作を示す場合は、演算部における演算結果を当該レジスタに対する書込みデータとして出力する。そして、デコード結果について特定条件が成立すると、デコードされた命令を演算部が実行した後に、前記レジスタに固定データを出力する。
つまり、所定の演算を行なう目的でレジスタに書き込まれたデータは、当該データが前記演算に使用された後は不要となる。従って、特定条件が成立した場合は、固定データ読出しレジスタに固定データを出力してセットさせることで、一々固定データを書き戻す操作を行うことなく、当該レジスタを汎用レジスタとして使用すると共に、例えばベースアドレスレジスタなどのように、固定データを付与するためのレジスタにも兼用することができる。
請求項2記載のCPUによれば、特定条件を、デコーダが特定の命令をデコードした場合に成立させる。即ち、前記特定命令が、固定データ読出しレジスタに書き込まれたデータを使用する演算を実行するものであれば、当該命令の実行後に前記データが不要となることが確実になる。従って、そのような特定命令がデコードされた場合に応じて固定データを出力すれば、適切なタイミングで固定データ読出しレジスタを初期化(ここでは、固定データを書込むことを称す)することができる。
請求項3記載のCPUによれば、特定命令を、デコーダによるデコード結果が固定データ読出しレジスタに対する読出し操作となる命令とする。即ち、固定データ読出しレジスタに対する読出し操作が行われれば、書き込まれたデータがデコードされた命令の実行に使用されるので、その後に固定データ読出しレジスタを初期化すれば良い。
請求項4記載のCPUによれば、命令の一部に、固定データ読出しレジスタの初期化を指定するためのフラグをセット可能に構成する。そして、特定条件を、デコーダが、初期化指定フラグがセットされている命令をデコーダした場合に成立させる。斯様に構成すれば、固定データ読出しレジスタの初期化タイミングをプログラミングによって制御することができる。
請求項5記載のCPUによれば、シーケンサは、デコーダのデコード結果が、固定データ読出しレジスタに対する書込み操作を示す場合、セレクタに演算結果データ側を選択させ、デコーダのデコード結果について特定条件が成立するとセレクタに固定データ側を選択させる。従って、レジスタ制御手段を、演算実行を制御するシーケンサを利用して効率的に構成することができる。
以下、本発明の一実施例について図1及び図2を参照して説明する。図1は、CPUの内部構成を本発明の要旨に係る部分について概略的に示す機能ブロック図である。CPU1は、制御部2、演算部3、セレクタ(レジスタ制御手段)4、レジスタ部5などを備えている。制御部2は、図示しない外部のプログラムメモリよりフェッチした命令をデコードするデコーダ6、前記デコードの結果に応じて演算部3における命令実行を制御するシーケンサ7で構成されている。
レジスタ部5は、複数のステータスレジスタや制御レジスタ,汎用レジスタ,また、これらのレジスタに対してデータの書込みや読出しを行うためのロジックなどから構成されている。そして、演算部3は、レジスタ部5のレジスタに格納されるデータ値を読み出して演算を行なったり、演算結果をレジスタに格納するようになっている。
また、レジスタ部5における汎用レジスタの一部は、固定データ値を読み出すためのレジスタとしても使用可能に構成されており、ここで、そのレジスタを特定汎用レジスタと称す。例えば図1に示す汎用レジスタr0が特定汎用レジスタ(固定データ読み出しレジスタ)8であるものとする。
セレクタ4は、演算部3と特定汎用レジスタ8との間に位置しており、演算部3における演算結果データと固定データ(初期値,例えば0x00000000)との何れかを選択して、特定汎用レジスタ8に出力する。その選択切替えは、シーケンサ7に内蔵されているレジスタ書き換え制御部(レジスタ制御手段)9によって行われる。
即ち、レジスタ書き換え制御部9は、セレクタ4に対して制御信号1,2を出力するようになっている。制御信号1は、フェッチした命令をデコーダ6がデコードした結果が、特定汎用レジスタ8の読み出し操作である場合にアクティブ(ロウ)となる。また、制御信号1は、フェッチした命令をデコーダ6がデコードした結果が、特定汎用レジスタ8の書き込み操作である場合にアクティブ(ロウ)となる。
そして、セレクタ4は、制御信号1がアクティブになると固定データ側を選択して出力し、制御信号2がアクティブになると演算部3側を選択してデータを特定汎用レジスタ8に出力する。また、CPU1のリセットが解除された場合、特定汎用レジスタ8に対しては、固定データがセットされるように初期化が行われる。尚、例えば
add r0,r0
という命令が実行されると制御信号1,2が同時にアクティブとなるが、この場合、セレクタ4は制御信号2を優先して演算部3側を選択する。
次に、本実施例の作用について図2も参照して説明する。先ず、比較のため、従来の一般的なCPUにおいて行われる汎用レジスタの操作例について説明する。例えば、以下のような命令を実行する場合を想定する。尚、r0,r1は一般的な汎用レジスタであり、r0の値は0x00000000とする。
(1)mov.b @(0x1000,r0),r1
(2)mov.l #0x00010000,r0
(3)mov.b @(0x1000,r0),r0
(4)add r0,r1
(5)mov.bu #0,r0
(1)レジスタr1に、アドレス0x00001000の1バイトデータを格納。
(2)レジスタr0に、データ0x00010000を格納。
(3)レジスタr0に、アドレス0x00011000の1バイトデータを格納。
(4)レジスタr1に、(アドレス0x00011000の値)
+(アドレス0x00001000の値)の実行結果を格納。
(5)レジスタr0を、0x00000000に初期化(必要に応じて)。
即ち、従来構成では、レジスタr0に、演算に使用するデータを書き込んで使用した後、レジスタr0を0x00000000に初期化する場合は、(5)を実行する必要がある。
これに対して、本願発明の場合は、(4)の加算命令が実行されると特定汎用レジスタ8:レジスタr0のデータが読み出されるので、その加算命令の実行後に、レジスタr0は自動的に0x00000000に初期化される。斯様に構成されるレジスタr0は、例えばデータ「0」を代入する場合やデータ「0」との比較を行う場合のデータレジスタとして使用される。また、オフセット付きレジスタ間接命令が実行される場合、「0」を基準として命令コードで指定可能なオフセット範囲のデータにアクセスするためにも使用可能である。
加えて、上記(1)〜(4)に示したように、演算に使用されるデータを一時的に格納するための汎用レジスタとしても使用できる。更に、別の用途としては、多くの命令を持つCPUに対して、命令の一部を削減して小型化したCPUを構成した場合、上位CPUとの互換性を維持するため削減された命令を実行する必要がある場合は、レジスタr0をワークレジスタとして使用すれば、他のレジスタ内容を破壊することなく削減された命令を実行することもできる。
例えば、上位CPUは、符号なし(unsigned)即値データの比較命令「cmp.bu」を備えているが、下位CPUには当該命令が削除されているとする。即ち、上位CPUで実行可能な命令、
cmp.bu #0x12,r1
は、即値0x12とレジスタr1の内容とを比較する命令である。この命令を、下位CPUにおいて他の命令を使用して実現する場合に、他のレジスタの内容を破壊してはならない、という制約があるものとする。この時、下位CPUでは、以下のようにして等価な処理を実現できる。
(1)mov.bu #0x12,r0
(2)cmp r0,r1
(1)レジスタr0に、即値0x12を代入
(2)レジスタr0の内容と、レジスタr1の内容とを比較
すると、(2)の比較命令が実行されると特定汎用レジスタr0のデータが読み出されるので、その比較命令の実行後に、レジスタr0は自動的に0x00000000に初期化される。従って、他のレジスタの内容を破壊することなく、削減された命令と等価な処理を実行できる。
次に、本発明のCPU1が上記命令(1),(2)を実行する場合について、図2に示すタイミングチャートを参照して説明する。各命令は、フェッチ,デコード,実行,のサイクルがパイプラインで処理されるものとする。また、各命令の実行時間は1サイクルである。
<第1サイクル>
命令(1)がフェッチされる。
<第2サイクル>
命令(1)がデコードされると共に、命令(2)がフェッチされる。
<第3サイクル>
命令(1)が実行されると共に、命令(2)がデコードされる。第2サイクルにおける
命令(1)のデコード結果はレジスタr0に対する書込み操作を示すので、レジスタ書き換え制御部9は、制御信号2をアクティブにする。すると、セレクタ4を介して演算部3より即値0x12がレジスタr0に出力される。そして、制御信号2の立上がりエッジによって、レジスタr0の内容は即値0x12に書き換えられる。
<第4サイクル>
命令(2)が実行される。命令(2)については、第3サイクルにおけるデコードの結果、レジスタr0の内容とレジスタr1の内容とを比較するためレジスタr0について読み出し操作を行うことになるので、レジスタ書き換え制御部9は、制御信号1をアクティブにする。すると、セレクタ4を介して演算部3より初期値「0」がレジスタr0に出力されるので、レジスタ部5が有するロジックにより、制御信号1の立上がりエッジによってレジスタr0の内容は初期値「0」に書き換えられる。
以上のように本実施例によれば、CPU1のレジスタ部5における特定汎用レジスタ8(r0)を、固定データ値「0」を読み出すためのレジスタとしても使用可能に構成する。即ち、シーケンサのレジスタ書き換え制御部9は、デコーダ6のデコード結果が、レジスタr0に対する書込み操作を示す場合、セレクタ4に演算部3による演算結果データを選択させ、デコーダ6のデコード結果について特定条件が成立すると、セレクタ4に初期値「0」側を選択させるようにした。
即ち、所定の演算を行なう目的でレジスタr0に書き込まれたデータは、当該データがその演算に使用された後は不要となる。従って、特定条件が成立した場合はレジスタr0に初期値を出力してセットさせることで、一々固定データを書き戻す操作を行うことなく、当該レジスタr0を汎用レジスタとして使用すると共に、例えばベースアドレスレジスタなどのように固定データを付与するためのレジスタとしても兼用できる。また、デコード結果に応じて演算部3を制御するシーケンサ7を利用して、レジスタ制御手段を効率的に構成することができる。
そして、デコーダ6が特定命令として、レジスタr0に対する読出し操作となる命令をデコードした場合に、特定条件が成立したものとして制御信号2をアクティブにする。即ち、レジスタr0に対する読出し操作が行われれば、レジスタr0に書き込まれたデータがデコードされた命令の実行に使用されるので、その後にレジスタr0を適切なタイミングで初期化することができる。
また、例えばレジスタr0を固定データ読み出し用として使用し続ける場合でも、ノイズ等の影響によってデータ化けが発生することも想定されるが、本発明によれば、レジスタr0は初期値がセットされリフレッシュされることになる。従って、データの読み誤りを防止することができる。
本発明は上記又は図面に記載した実施例にのみ限定されるものではなく、以下のような変形が可能である。
固定データ読み出しレジスタを複数設けても良い。
また、固定データ読み出しレジスタにセットするデータ値は、0x00000000に限ることなく、個別のケースに応じて適当な値を設定すれば良い。
特定条件は、デコード結果が固定データ読み出しレジスタの読み出し操作となるものに限らず、その他特定の命令がデコードされた場合に成立するように設定しても良い。
例えば、図3に示すように、命令の一部に、固定データ読出しレジスタの初期化を指定するためのフラグをセット可能に構成する。図3は、例えばデータレジスタ1の内容とデータレジスタ2の内容を比較する命令であり、冒頭7ビットは命令コードである。そして、特定条件を、デコーダ6が、初期化指定フラグがセットされている命令をデコードした場合に成立させるようにしても良い。斯様に構成すれば、特定汎用レジスタ8の初期化タイミングをプログラミングによって制御することができる。
レジスタ制御手段は、シーケンサ7の一部として構成するものに限らず、独立の構成として別途設けても良い。
本発明の一実施例を示すものであり、CPUの内部構成を本発明の要旨に係る部分について概略的に示す機能ブロック図 CPUが命令を実行する場合のタイミングチャート 変形例として、命令の一部に初期化フラグを設けた場合を示す図
符号の説明
図面中、1はCPU、3は演算部、4はセレクタ(レジスタ制御手段)、7はシーケンサ、8は特定汎用レジスタ(固定データ読み出しレジスタ)、9はレジスタ書き換え制御部(レジスタ制御手段)を示す。

Claims (5)

  1. フェッチした命令をデコードするデコーダと、前記デコーダのデコード結果に応じて演算を実行する演算部と、前記演算に使用されるデータが格納される複数の汎用レジスタとを備えてなるCPUにおいて、
    前記複数の汎用レジスタの一部は、固定データ値を読み出すための固定データ読出しレジスタとしても使用可能に構成され、
    前記デコーダのデコード結果が、前記固定データ読出しレジスタに対する書込み操作を示す場合は、前記演算部における演算結果を前記固定データ読出しレジスタに対する書込みデータとして出力し、前記デコーダが行なうデコードについて特定条件が成立した場合は、デコードされた命令を前記演算部が実行した後に、前記固定データ読出しレジスタに固定データを出力するように制御を行うレジスタ制御手段を備えたことを特徴とするCPU。
  2. 前記特定条件は、前記デコーダが特定の命令をデコードした場合に成立することを特徴とする請求項1記載のCPU。
  3. 前記特定命令は、前記デコーダによるデコード結果が、前記固定データ読出しレジスタに対する読出し操作となる命令であることを特徴とする請求項2記載のCPU。
  4. 命令の一部に、前記固定データ読出しレジスタの初期化を指定するためのフラグをセット可能に構成され、
    前記特定条件は、前記デコーダが、前記初期化指定フラグがセットされている命令をデコードした場合に成立することを特徴とする請求項2記載のCPU。
  5. 前記レジスタ制御手段は、前記デコーダのデコード結果に応じて演算部を制御するシーケンサと、前記固定データ読出しレジスタに対する書込みデータとして、前記演算部における演算結果データと前記固定データとを選択して出力するためのセレクタとで構成され、
    前記シーケンサは、
    前記デコーダのデコード結果が、前記固定データ読出しレジスタに対する書込み操作を示す場合は、前記セレクタに前記演算結果データ側を選択させ、
    前記デコーダのデコード結果について特定条件が成立した場合は、前記セレクタに前記固定データ側を選択させることを特徴とする請求項1乃至4の何れかに記載のCPU。

JP2005110074A 2005-04-06 2005-04-06 Cpu Pending JP2006293490A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005110074A JP2006293490A (ja) 2005-04-06 2005-04-06 Cpu

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005110074A JP2006293490A (ja) 2005-04-06 2005-04-06 Cpu

Publications (1)

Publication Number Publication Date
JP2006293490A true JP2006293490A (ja) 2006-10-26

Family

ID=37414031

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005110074A Pending JP2006293490A (ja) 2005-04-06 2005-04-06 Cpu

Country Status (1)

Country Link
JP (1) JP2006293490A (ja)

Similar Documents

Publication Publication Date Title
US7340566B2 (en) System and method for initializing a memory device from block oriented NAND flash
US9032185B2 (en) Active memory command engine and method
JP2003510682A5 (ja)
US20020188830A1 (en) Bit replacement and extraction instructions
JP2010500682A (ja) フラッシュメモリアクセス回路
KR101668314B1 (ko) 특수 뱅킹 명령어들을 갖는 마이크로컨트롤러
JPH0682320B2 (ja) データ処理装置
JP4471947B2 (ja) データ処理装置及びデータ処理方法
CN107851015B (zh) 向量操作数位大小控制
JP2006293490A (ja) Cpu
JP4889235B2 (ja) プログラム制御プロセッサ
US20040054873A1 (en) Indirect indexing instructions
TWI389027B (zh) 中央處理單元及微控制器
JP5292831B2 (ja) プログラマブルコントローラ
JP4151497B2 (ja) パイプライン処理装置
JPH0954694A (ja) パイプラインプロセッサおよびその処理方法
JP2008071084A (ja) マイクロプロセッサ及び画像形成装置
JP2680371B2 (ja) プログラマブルコントローラ
JP2005063311A (ja) プロセッサシステムのパッチ方法およびパッチ適用プログラム
JP2689894B2 (ja) マイクロプログラム制御型情報処理装置
JP2010092273A (ja) 情報処理装置
JP2007316871A (ja) プロセッサユニット
JPS59178693A (ja) メモリ読み出し方式
JPH02249027A (ja) 命令フェッチ解読装置
JP2007172331A (ja) マイクロコンピュータ及び不揮発性メモリの書き換え方法