JP2008262399A - マイクロプロセッサ、マイクロコンピュータ、電子機器 - Google Patents

マイクロプロセッサ、マイクロコンピュータ、電子機器 Download PDF

Info

Publication number
JP2008262399A
JP2008262399A JP2007104847A JP2007104847A JP2008262399A JP 2008262399 A JP2008262399 A JP 2008262399A JP 2007104847 A JP2007104847 A JP 2007104847A JP 2007104847 A JP2007104847 A JP 2007104847A JP 2008262399 A JP2008262399 A JP 2008262399A
Authority
JP
Japan
Prior art keywords
instruction
pipeline
output
interrupt
input
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.)
Granted
Application number
JP2007104847A
Other languages
English (en)
Other versions
JP4284559B2 (ja
Inventor
Hiroki Matsuoka
弘樹 松岡
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.)
Seiko Epson Corp
Original Assignee
Seiko Epson 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 Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2007104847A priority Critical patent/JP4284559B2/ja
Priority to US12/100,560 priority patent/US20080256335A1/en
Publication of JP2008262399A publication Critical patent/JP2008262399A/ja
Application granted granted Critical
Publication of JP4284559B2 publication Critical patent/JP4284559B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Microcomputers (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】パイプライン処理のための回路を有効利用して割り込み命令の実行処理を高速化するマイクロプロセッサを提供すること。
【解決手段】マイクロプロセッサ10は、パイプライン処理を制御するパイプライン制御部300を含む。パイプライン制御部300は、割り込み命令の第1の命令実行ステージにおいて、割り込み命令の命令コードをデコードし、デコードした結果に基づいて、即値生成部100に、ベクタテーブル220に格納された割り込み命令に対応する分岐先アドレスの情報を参照するためのベクタアドレスを生成させる。パイプライン制御部300は、割り込み命令の第1の命令実行ステージの終了時に、パイプラインレジスタ1(60)にベクタアドレスが設定され、パイプラインレジスタ2(70)にスタックポインタ50の値が設定され、パイプラインレジスタ3(80)に所定の定数値が設定されるように制御する。
【選択図】図1

Description

本発明は、マイクロプロセッサ、マイクロコンピュータ、電子機器に関する。
今日の多くのマイクロプロセッサでは、プログラムの高速処理を実現するために、プログラムを構成する各命令の実行処理を1クロックサイクルで終了する複数の工程に分割し、連続する複数の命令間でそれぞれ異なる工程の処理を並行して行い、プログラム全体としての処理を高速化するパイプライン処理を行うアーキテクチャが採用されている。例えば、各命令の処理工程の数を統一し、各工程の処理時間を短くするために、単純な命令セットの組み合わせで複雑な処理を実現することによりパイプライン処理の高速化を図るRISC(Reduced Instruction Set Computer)プロセッサが知られている。
特公平8−1604号公報
多くのマイクロプロセッサでは、通常動作時は無駄のないパイプライン処理を実現することができるが、何らかの割り込み要因が発生すると割り込み命令が実行されて割り込み処理プログラムへの分岐が発生するため、パイプライン処理が停止される。割り込み処理に時間がかかるとプログラムの応答性が低下するため、割り込み処理プログラムの実行時間の短縮化のみならず、割り込み命令の実行時間の短縮化も要求される。
一般に、割り込み命令の実行は、割り込み命令のデコード処理、分岐先アドレスの生成、プログラムカウンタ値やステータス情報のスタックへの退避、分岐先アドレスへのジャンプの過程を踏まなければならない。
分岐先アドレスは割り込み要因毎に異なり、割り込み要因と分岐先アドレスの対応テーブル(ベクタテーブル)が設けられている。そのため、分岐先アドレスの生成過程では、ベクタテーブルを参照するためのアドレス(ベクタアドレス)の生成及びベクタアドレスで参照される記憶領域から分岐先アドレスの読み出しの処理が必要である。
また、スタックへの退避過程では、スタックポインタの更新、プログラムカウンタ値のデータバスへの出力、プログラムカウンタ値のスタックへの退避、ステータス情報のデータバスへの出力、ステータス情報のスタックへの退避の処理が必要である。
結果的に、従来のマイクロプロセッサでは、分岐先アドレスの生成過程の実行に少なくとも2〜3クロックサイクルを要し、スタックへの退避過程の実行に少なくとも3〜5クロックサイクルを要しており、割り込み命令の実行に7〜10クロックサイクル程度を要していた。
割り込み命令の実行のための専用回路を付加すれば、割り込み命令の実行に要するクロックサイクルを削減することができる。しかし、割り込み命令は頻繁に実行されるわけではないので、コストアップにつながる専用回路の付加は得策ではない。
本発明は、以上のような問題点に鑑みてなされたものであり、パイプライン処理のための回路を有効利用して割り込み命令の実行処理を高速化するマイクロプロセッサを提供することを目的とする。
(1)本発明に係るマイクロプロセッサは、
所定のメモリに命令コードが格納されている各命令の実行において、前記命令コードをフェッチする命令フェッチステージと、前記各命令を実行する1以上の命令実行ステージを含むパイプライン処理を行う機能を有するマイクロプロセッサであって、
前記パイプライン処理を制御するパイプライン制御部と、
前記命令コードの格納先を参照するためのプログラムカウンタと、
少なくとも2つの入力に基づいて所定の算術演算を実行する汎用の算術演算ユニットと、
少なくとも前記プログラムカウンタの値を退避させるスタック領域を参照するためのスタックポインタと、
少なくとも割り込み命令に対応する分岐先アドレスの情報が格納されたメモリのアドレスを設定するために使用される第1のパイプラインレジスタと、
少なくとも前記算術演算ユニットの第1の入力を設定するために使用される第2のパイプラインレジスタと、
少なくとも前記算術演算ユニットの第2の入力を設定するために使用される第3のパイプラインレジスタと、を含み、
前記パイプライン制御部は、
複数の命令実行ステージにより実行される割り込み命令の第1の命令実行ステージにおいて、
前記割り込み命令の命令コードをデコードし、
デコードした結果に基づいて、所定のブロックに、前記割り込み命令に対応する分岐先アドレスの情報を参照するためのベクタアドレスを生成させ、
前記割り込み命令の第1の命令実行ステージの終了時に、
前記第1のパイプラインレジスタに前記ベクタアドレスが設定され、
前記第2のパイプラインレジスタに前記スタックポインタの値が設定され、
前記第3のパイプラインレジスタに所定の定数値が設定されるように制御することを特徴とする。
命令コードが格納されている所定のメモリは、例えば、ROM(Read Only Memory)であってもよい。
各命令毎に命令実行ステージの数が異なっていてもよい。
例えば、ソフトウェア割り込みの場合は、割り込み命令の命令コードはあらかじめ所定のメモリに格納されていてもよいし、ハードウェア割り込みの場合は、割り込み要因を埋め込んだ割り込み命令の命令コードを生成してもよい。
割り込み命令に対応する分岐先アドレスの情報が格納されたメモリは、本発明に係るマイクロプロセッサの内部にあってもよいし、外部にあってもよい。
パイプラインレジスタは、パイプライン処理の次のステージの処理に必要な情報を設定するために使用されるレジスタである。
ベクタアドレスを生成させる所定のブロックは、即値アドレスや即値データを生成するための即値生成部であってもよいし、汎用の算術演算ユニットでもよいし、ベクタアドレスを生成する専用のブロックであってもよい。
所定の定数値は、例えば、スタック領域が少なくともバイトアクセス及びワードアクセスが可能なメモリに割り当てられている場合、1ワードに相当するビット数を1バイトに相当するビット数で除算した値であってもよい。例えば、1ワードが32ビットの場合、所定の定数値は4であってもよい。
本発明によれば、割り込み命令の第1の命令実行ステージにおいて、命令コードのデコードとベクタアドレスの生成を行うことができる。また、本発明によれば、割り込み命令の第1の命令実行ステージの終了時点で、各パイプラインレジスタに、分岐先アドレスの情報が格納されたメモリのアドレス(ベクタアドレス)の設定及びスタックポインタ更新のための算術演算入力の設定をすることができる。従って、割り込命令の実行に要するクロックサイクルを削減することができる。
(2)本発明に係るマイクロプロセッサは、
即値アドレス又は即値データを生成するための即値生成部を含み、
前記パイプライン制御部は、
前記割り込み命令の第1の命令実行ステージにおいて、前記即値生成部に前記ベクタアドレスを生成させることを特徴とする。
本発明によれば、割り込み命令の第1の命令実行ステージにおいて、即値生成部を使用してベクタアドレスを生成するので、専用回路を使用する場合と比較して面積コストを削減することができる。
(3)本発明に係るマイクロプロセッサは、
前記即値生成部の出力から前記第1のパイプラインレジスタの入力に至る信号経路と、
前記第1のパイプラインレジスタの出力から前記分岐先アドレスの情報が記憶されているメモリのアドレス入力に至る信号経路と、
前記スタックポインタの出力から前記第2のパイプラインレジスタの入力に至る信号経路と、
前記第2のパイプラインレジスタの出力から前記算術演算ユニットの第1の入力に至る信号経路と、
前記所定の定数値の供給源から前記第3のパイプラインレジスタの入力に至る信号経路と、
前記第3のパイプラインレジスタの出力から前記算術演算ユニットの第2の入力に至る信号経路と、を含むことを特徴とする。
本発明によれば、即値生成部の出力から第1のパイプラインレジスタの入力に至る信号経路及び第1のパイプラインレジスタの出力から分岐先アドレスの情報が記憶されているメモリのアドレス入力に至る信号経路が存在するので、1クロックサイクルで、当該メモリのアドレス入力に即値生成部が生成したベクタアドレスを供給することができる。また、本発明によれば、スタックポインタの出力から第2のパイプラインレジスタの入力に至る信号経路及び第2のパイプラインレジスタの出力から算術演算ユニットの第1の入力に至る信号経路が存在するので、1クロックサイクルで、算術演算ユニットの第1の入力にスタックポインタの値を供給することができる。また、本発明によれば、所定の定数値の供給源から第3のパイプラインレジスタの入力に至る信号経路及び第3のパイプラインレジスタの出力から算術演算ユニットの第2の入力に至る信号経路が存在するので、1クロックサイクルで、算術演算ユニットの第2の入力に所定の定数値を供給することができる。従って、割り込命令の実行に要するクロックサイクルを削減することができる。
(4)本発明に係るマイクロプロセッサは、
汎用データバスを含み、
前記第n(nは1、2、3のいずれか)のパイプラインレジスタは、
前記汎用データバスの少なくとも一部に所定のデータを供給するためにも使用され、
前記パイプライン制御部は、
前記割り込み命令の第2の命令実行ステージにおいて、
前記スタックポインタの値及び前記所定の定数値に基づいて、前記算術演算ユニットに所定の算術演算を実行させ、
前記割り込み命令の第2の命令実行ステージの終了時に、
前記スタックポインタに前記算術演算の結果が設定され、
前記第nのパイプラインレジスタに前記プログラムカウンタの値が設定され、
前記プログラムカウンタに前記ベクタアドレスによって参照される前記分岐先アドレスの情報が設定されるように制御することを特徴とする。
所定の算術演算は、例えば、加算であってもよいし、減算であってもよい。例えば、4バイトが1ワードに相当するメモリにスタック領域が割り当てられている場合、所定の定数値は4であってもよく、算術演算ユニットはスタックポインタの値−4の算術演算をするようにしてもよい。
本発明によれば、割り込み命令の第2の命令実行ステージにおいて、スタックポインタの値及び所定の定数値からスタックポインタの更新値を計算することができる。また、本発明によれば、割り込み命令の第2の命令実行ステージの終了時点で、スタックポインタの更新、第nのパイプラインレジスタへのプログラムカウンタ値の設定(汎用データバスの少なくとも一部へのプログラムカウンタ値の供給)及びプログラムカウンタへの分岐先アドレスの情報の設定をすることができる。さらに、本発明によれば、第nのパイプラインレジスタにプログラムカウンタ値の設定を行うので、プログラムカウンタ値をスタック領域に退避する前に、プログラムカウンタに分岐先アドレスの情報を設定することができる。従って、割り込命令の実行に要するクロックサイクルを削減することができる。また、汎用の算術演算ユニットを使用してスタックポインタの更新値の計算をするので、専用回路を使用する場合と比較して面積コストを削減することができる。
(5)本発明に係るマイクロプロセッサは、
前記プログラムカウンタの出力から前記第nのパイプラインレジスタの入力までの信号経路と、
前記第nのパイプラインレジスタの出力から前記汎用データバスの少なくとも一部までの信号経路と、を含むことを特徴とする。
本発明によれば、プログラムカウンタの出力から第nのパイプラインレジスタの入力までの信号経路及び第nのパイプラインレジスタの出力から汎用データバスの少なくとも一部までの信号経路が存在するので、1クロックサイクルで、汎用データバスにプログラムカウンタ値を供給することができる。従って、割り込命令の実行に要するクロックサイクルを削減することができる。
(6)本発明に係るマイクロプロセッサは、
汎用データバスと、
少なくとも前記汎用データバスの少なくとも一部に所定のデータを供給するために使用される第4のパイプラインレジスタと、
前記プログラムカウンタの出力から前記第4のパイプラインレジスタの入力までの信号経路と、
前記第4のパイプラインレジスタの出力から汎用データバスの少なくとも一部までの信号経路と、を含み、
前記パイプライン制御部は、
前記割り込み命令の第2の命令実行ステージにおいて、
前記スタックポインタの値及び所定の定数値に基づいて、前記算術演算ユニットに所定の算術演算を実行させ、
前記割り込み命令の第2の命令実行ステージの終了時に、
前記スタックポインタに前記算術演算の結果が設定され、
前記第4のパイプラインレジスタに前記プログラムカウンタの値が設定され、
前記プログラムカウンタに前記ベクタアドレスによって参照される前記分岐先アドレスの情報が設定されるように制御することを特徴とする。
本発明によれば、割り込み命令の第2の命令実行ステージにおいて、スタックポインタの値及び所定の定数値からスタックポインタの更新値を計算することができる。また、本発明によれば、割り込み命令の第2の命令実行ステージの終了時点で、スタックポインタの更新、第4のパイプラインレジスタへのプログラムカウンタ値の設定及びプログラムカウンタへの分岐先アドレスの情報の設定をすることができる。さらに、本発明によれば、第4のパイプラインレジスタにプログラムカウンタ値の設定を行うので、プログラムカウンタ値をスタック領域に退避する前に、プログラムカウンタに分岐先アドレスの情報を設定することができる。従って、割り込命令の実行に要するクロックサイクルを削減することができる。また、汎用の算術演算ユニットを使用してスタックポインタの更新値の計算をするので、専用回路を使用する場合と比較して面積コストを削減することができる。
また、本発明によれば、プログラムカウンタの出力から第4のパイプラインレジスタの入力までの信号経路及び第4のパイプラインレジスタの出力から汎用データバスの少なくとも一部までの信号経路が存在するので、1クロックサイクルで、汎用データバスにプログラムカウンタ値を供給することができる。従って、割り込命令の実行に要するクロックサイクルを削減することができる。さらに、本発明によれば、第4のパイプラインレジスタの出力から汎用データバスまでの信号経路が存在するので、第1〜3のパイプラインレジスタを介することなく、汎用データバスに所望のデータを供給することができる。例えば、汎用データバスへのデータ供給と算術演算ユニットの入力の供給を同一の実行ステージで行うことができる。従って、割り込み処理命令以外の命令においても実行サイクルを削減することができる。
(7)本発明に係るマイクロプロセッサは、
前記マイクロプロセッサの所定の状態を表示する状態レジスタを含み、
前記パイプライン制御部は、
前記割り込み命令の第3の命令実行ステージにおいて、
前記パイプラインレジスタに設定された前記プログラムカウンタの値及び前記状態レジスタの値が、前記スタック領域に書き込まれるように制御することを特徴とする。
本発明によれば、割り込み命令の第3の命令実行ステージにおいて、プログラムカウンタの値のスタック領域への退避及び状態レジスタの値のスタック領域への退避を同時に行うことができる。従って、割り込命令の実行に要するクロックサイクルを削減することができる。
(8)本発明に係るマイクロプロセッサは、
前記状態レジスタの出力から前記汎用データバスの少なくとも一部までの信号経路と、
前記汎用データバスから前記スタック領域を有するメモリのデータ入力までの信号経路と、を含むことを特徴とする。
本発明によれば、状態レジスタの出力から汎用データバスの少なくとも一部までの信号経路及び汎用データバスからスタック領域を有するメモリのデータ入力までの信号経路が存在するので、1クロックサイクルで、スタック領域を有するメモリのデータ入力に汎用データバス上のデータを供給することができる。従って、割り込命令の実行に要するクロックサイクルを削減することができる。
(9)本発明に係るマイクロプロセッサは、
前記プログラムカウンタは、
iビット(iは1以上の整数)のビット幅を有し、
前記状態レジスタは、
jビット(jは1以上の整数)のビット幅を有し、
前記スタック領域を有するメモリは、
kビット幅(kは1以上の整数)の入力データバスを有し、
kはi+j以上であることを特徴とする。
例えば、プログラムカウンタが24ビット、状態レジスタが8ビット、スタック領域を有するメモリの入力データバスが32ビットであってもよい。
本発明によれば、スタック領域を有するメモリの入力データバスのビット数が、プログラムカウンタのビット数と状態レジスタのビット数の和以上であるので、1クロックサイクルで、プログラムカウンタの値及び状態レジスタの値をスタック領域に退避することができる。従って、割り込命令の実行に要するクロックサイクルを削減することができる。
(10)本発明に係るマイクロプロセッサは、
前記スタック領域を有するメモリは、
前記スタック領域を有するメモリは、
kビット幅(kは1以上の整数)の入力データバスを有し、
前記スタックポインタは、kビット境界のアドレスを指定して前記スタック領域を参照することを特徴とする。
kビット境界のアドレスは、スタック領域を有するkビット幅の入力データバスのメモリにkビットのデータを1クロックサイクルで書き込むことができるアドレスであればよい。例えば、1バイト(8ビット)の記憶領域毎にアドレスが割り当てられているメモリが32ビットに入力データバスを有する場合であれば、32ビットのデータは4アドレス分の記憶領域に格納されるので、例えば、32ビット境界のアドレスは、下位2ビットが0のアドレスであってもよい。
本発明によれば、kビットのデータを1クロックサイクルでスタック領域に書き込むことができる。従って、プログラムカウンタのビット数と状態レジスタのビット数の和がk以下の場合は、1クロックサイクルで、プログラムカウンタの値及び状態レジスタの値をスタック領域に退避することができる。
(11)本発明は、
上記に記載のマイクロプロセッサを含むことを特徴とするマイクロコンピュータである。
(12)本発明は、
上記に記載のマイクロコンピュータと、
前記マイクロコンピュータの処理対象となるデータの入力手段と、
前記マイクロコンピュータにより処理されたデータを出力するための出力手段とを含むことを特徴とする電子機器である。
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成の全てが本発明の必須構成要件であるとは限らない。
1.マイクロプロセッサ
図1は、本実施形態に係るマイクロプロセッサの一部の構成例を説明するための図である。図1では、特に、本実施形態に係るマイクロプロセッサに含まれる割り込み処理に関連する部分の回路構成例を示している。
RAM200は、例えば、32kバイトのRAMであり、24ビットアドレス空間の0x000000〜0x007FFFにマッピングされている。RAM200は、少なくとも1クロックサイクルのバイトアクセス(8ビットアクセス)及びワードアクセス(32ビットアクセス)が可能な構成になっている。RAM200は、24ビットアドレスの下位2ビットが00〜11の4バイト毎にワード境界(32ビット境界)が設定されており、ワード境界(32ビット境界)のアドレス(下位2ビットが00のアドレス)を指定してワードアクセスをすれば、1クロックサイクルで1ワード(32ビット)データの書き込み又は読み出しが可能である。RAM200は、マイクロプロセッサ10の内部メモリであってもよいし、外部メモリであってもよい。
マイクロプロセッサ10は、24ビットのプログラムカウンタ20を含む。プログラムカウンタ20の出力はROM30のアドレス入力に接続されており、プログラムカウンタ20はROM30を参照するために使用される。ROM30は、例えば、64kバイトのROMであり、24ビットのアドレス空間の0x010000〜0x01FFFFにマッピングされている。ROM30には複数の命令コードが先頭アドレスから順に格納されている。例えば、各命令コードは16ビット固定長であり、連続する2つのアドレスに格納されている。プログラムカウンタ20の入力は3to1セレクタ24の出力に接続されている。プログラムカウンタ20は、クロック信号(図示せず)の立ち上がりで3to1セレクタ24の出力を取り込んで更新される。3to1セレクタ24の3つの入力はそれぞれ、プログラムカウンタ20の出力、インクリメンタ40の出力、32ビットの汎用データバス150の下位24ビットに接続されている。3to1セレクタ24は、各命令コードに従い、プログラムカウンタ20の出力、インクリメンタ40の出力又は汎用データバス150上のデータのいずれかを選択してプログラムカウンタ20の入力に供給する。例えば、ROM30に格納された命令コードをアドレス順に読み出す場合には、3to1セレクタ24はインクリメンタ40の出力を選択する。例えば、各命令コードがROM30の連続する2つのアドレスに格納されている場合、インクリメンタ40はプログラムカウンタ20の値に2を加えた値を出力する。また、例えば、ROM30に格納された次の命令コードの読み出しを待たせる場合には、3to1セレクタ24はプログラムカウンタ20の出力を選択する。また、例えば、分岐先命令の分岐先アドレスをプログラムカウンタ20に設定するためには、3to1セレクタ24は汎用データバス150の下位24ビットを選択する。
8つの24ビット汎用レジスタR0〜R7は、各命令コードの実行処理において汎用的に使用される。また、マイクロプロセッサ10は、24ビットのスタックポインタ(SP)50を含む。スタックポインタ50は、RAM200に設けられたスタック領域210のアドレスを参照するために使用される。汎用レジスタR0〜R7及びスタックポインタ50の各入力は2to1セレクタ54の出力に接続されている。2to1セレクタ54の一方の入力は汎用データバス150の下位24ビットに接続されており、他方の入力はALU(算術演算ユニット)90の出力に接続されている。2to1セレクタ54は、各命令コードに従い、汎用データバス150上の下位24ビットのデータ又はALU90の出力のいずれかを選択して汎用レジスタR0〜R7及びスタックポインタ50の各入力に供給する。汎用レジスタR0〜R7及びスタックポインタ50の各出力は、9to1セレクタ64及び9to1セレクタ74の各入力に接続されている。9to1セレクタ64及び9to1セレクタ74の各出力はそれぞれ2to1セレクタ66及び3to1セレクタ76の1つの入力に接続されている。2to1セレクタ66の他方の入力は、プログラムカウンタ20の出力に接続されている。3to1セレクタ76の他の2つの入力は、2to1セレクタ54の出力及び即値生成部100の出力に接続されている。2to1セレクタ66の出力は、パイプラインレジスタ2(PREG2)(70)のデータ入力に接続されている。3to1セレクタ76の出力は、パイプラインレジスタ1(PREG1)(60)のデータ入力及び2to1セレクタ84の一方の入力に接続されている。2to1セレクタ84の他方の入力には、定数値4が供給される。2to1セレクタ84の出力は、パイプラインレジスタ3(PREG3)(80)のデータ入力に接続されている。従って、9to1セレクタ64及び2to1セレクタ66は、各命令コードに従い、汎用レジスタR0〜R7のいずれかの出力、スタックポインタ50の出力又はプログラムカウンタ20の出力のいずれかを選択してパイプラインレジスタ2(70)のデータ入力に供給する。また、9to1セレクタ74及び3to1セレクタ76は、各命令コードに従い、汎用レジスタR0〜R7のいずれかの出力、スタックポインタ50の出力、2to1セレクタ54の出力又は即値生成部100の出力のいずれかを選択してパイプラインレジスタ1(60)のデータ入力に供給する。さらに、9to1セレクタ74、3to1セレクタ76及び2to1セレクタ84は、各命令コードに従い、汎用レジスタR0〜R7のいずれかの出力、スタックポインタ50の出力、2to1セレクタ54の出力、即値生成部100の出力又は定数値4のいずれかを選択してパイプラインレジスタ3(80)のデータ入力に供給する。
即値生成部100は、各命令コードに従い、各種の即値アドレス又は即値データを生成する。割り込み命令の実行時には、17ビットのTTBR(Trap Table Base Register)レジスタ120の出力及び5ビットのベクタコード(割り込み番号)312が即値生成部100に供給される。TTBRレジスタ120にはベクタテーブルのベースアドレスが設定されている。ベクタコード312は割り込み命令の命令コードの所定の5ビットに割り当てられており、デコード処理部310が割り込み命令をデコードしてベクタコード312を出力する。割り込み命令の実行時には、即値生成部100は、TTBRレジスタ120の出力とベクタコード312を結合し、さらに下位2ビットに0を付加して24ビットのベクタアドレスを生成する。
マイクロプロセッサ10は、パイプラインレジスタ1(60)(第1のパイプラインレジスタ)、パイプラインレジスタ2(70)(第2のパイプラインレジスタ)及びパイプラインレジスタ3(80)(第3のパイプラインレジスタ)を含む。パイプラインレジスタ1(60)、パイプラインレジスタ2(70)、パイプラインレジスタ3(80)は、例えば24ビットのレジスタであり、パイプライン処理を実現するために使用される。
パイプラインレジスタ1(60)の出力はRAM200のアドレス入力に接続されており、パイプラインレジスタ1(60)はRAM200のアドレスを設定するために使用される。RAM200には、汎用のデータ記憶領域(図示せず)に加えて、スタック領域210が割り当てられている。また、RAM200にはベクタテーブル220が格納されている。スタック領域210は、分岐命令を実行する際にプログラムカウンタ20の値を退避させるために使用され、また、割り込み命令を実行する際にプログラムカウンタ20の値及び状態レジスタ110の値を退避させるために使用される。従って、分岐命令又は割り込み命令の実行時には、所定のタイミングでパイプラインレジスタ1(60)にスタックポインタ50の値が設定される。ベクタテーブル220は、割り込み命令に対応する割り込み処理ルーチンへの分岐先アドレスの情報を有する。従って、割り込み命令の実行時には、所定のタイミングでパイプラインレジスタ1(60)に分岐先アドレスの情報を参照するためのベクタアドレスが設定される。
RAM200のデータ入出力は汎用データバス150に接続されている。また、パイプラインレジスタ2(70)の出力は汎用データバス150に接続されており、パイプラインレジスタ2(70)は、32ビットの汎用データバス150の少なくとも一部(例えば、下位24ビット)に所定のデータを供給するために使用される。また、パイプラインレジスタ2(70)の出力はALU90の第1の入力に接続されており、ALU90の第1の入力を設定するために使用される。すなわち、パイプラインレジスタ2(70)は汎用データバス150に供給されるデータ又はALU90の第1の入力データを設定するためのパイプラインレジスタである。
パイプラインレジスタ3(80)の出力はALU90の第2の入力に接続されており、ALU90の第2の入力を設定するために使用される。
マイクロプロセッサ10は、ALU90を含む。ALU90は、少なくとも2つの入力に基づいて所定の算術演算を実行する汎用の算術演算ユニットであり、例えば、24ビットの2つの入力データに対して各種の算術演算(加算、減算、乗算、論理演算等)を行い、24ビットの演算結果を出力する。ALU90の出力は2to1セレクタ54の一方の入力に接続されている。従って、ALU90の演算結果は、2to1セレクタ54を介して汎用レジスタR0〜R7又はスタックポインタ50のいずれかに格納することができる。また、ALU90の演算結果は、2to1セレクタ54及び3to1セレクタ76を介してパイプラインレジスタ1(60)に格納することもできる。さらに、ALU90の演算結果は、2to1セレクタ54、3to1セレクタ76及び2to1セレクタ84を介してパイプラインレジスタ3(80)に格納することもできる。
汎用データバス150には、パイプラインレジスタ2(70)の出力、RAM200のデータ入出力、状態レジスタ110の出力、2to1セレクタ24の一方の入力及び2to1セレクタ54の一方の入力が接続されている。状態レジスタ110は、マイクロプロセッサの所定の状態を表示する8ビットレジスタである。汎用データバス150には、パイプラインレジスタ2(70)の出力及び状態レジスタ110の出力、RAM200の出力のいずれか一つのみが供給されるように制御される。ここで、汎用データバス150は32ビットなので、例えば、汎用データバス150の下位24ビットにパイプラインレジスタ2(70)の出力を供給すると同時に、汎用データバス150の上位8ビットに状態レジスタ110の出力を供給することが可能である。
割り込み命令生成部130は、例えば、32種類の割り込み要因(割り込み番号0〜31)のいずれかによるハードウェア割り込みが発生した場合に、割り込み番号0〜31に対応して発生する割り込み信号INT0〜INT31から割り込み命令の16ビット命令コード132を生成する。割り込み生成部130の出力は、2to1セレクタ144の一方の入力に接続されている。2to1セレクタ144の他方の入力には、ROMのデータ出力が接続されている。2to1セレクタ144の出力は、16ビットの命令フェッチレジスタ140の入力に接続されている。2to1セレクタ144は、ROM30から読み出した命令コード32又は割り込み命令生成部130が生成した命令コード132のいずれかを選択して命令フェッチレジスタ140の入力に供給する。例えば、ハードウェア割り込みが発生した場合には、2to1セレクタ144は割り込み命令生成部130が生成した命令コード132を選択する。一方、ハードウェア割り込みが発生していない場合は、2to1セレクタ144はROM30から読み出した命令コード32を選択する。命令フェッチレジスタは、クロック信号(図示せず)の立ち上がりで2to1セレクタ144の出力を取り込んで命令コードをフェッチする。
マイクロプロセッサ10は、パイプライン制御部300を含む。パイプライン制御部300は、ROM20(所定のメモリ)に命令コードが格納されている各命令の実行において、命令コードをフェッチする命令フェッチステージと、各命令を実行する1以上の命令実行ステージを含むパイプライン処理を制御する。パイプライン制御部300は、デコード処理部310及び制御信号生成部320を含んで構成されていてもよい。デコード処理部310の入力は命令フェッチレジスタ140の出力に接続されている。デコード処理部310は、命令フェッチレジスタ140の出力142(フェッチした命令コード)をデコードし、命令を解読する。制御信号生成部320は、デコード処理部310の出力(デコード結果)に基づいて、各命令のパイプライン処理を制御するための制御信号322−1〜mを生成する。制御信号322−1〜mには、セレクタ24、54、64,66、74、76、84、144の各選択信号、汎用レジスタR0〜R7、スタックポインタ50、パイプラインレジスタ1、2、3(60、70、80)の各書き込み信号、ALU90の算術演算選択信号、パイプラインレジスタ2(70)、状態レジスタ110、RAM200の汎用データバス150への出力制御信号、RAM200に対する書き込みイネーブル信号などが含まれる。
図2は状態レジスタの構成例を説明するための図である。状態レジスタ110は、マイクロプロセッサの所定の状態を表示する、例えば、8ビットレジスタである。例えば、ビット7〜0は、それぞれ以下のようなマイクロプロセッサの状態表示が割り当てられる。ビット7〜5の3ビットに割り当てられたIL[2:0](Interrupt Level)ビットは、割り込みの優先レベルを表示するビットであり、IL[2:0]ビットの設定値よりも高い優先度の割り込みのみが受け付けられる。ビット4に割り当てられたIE(Interrupt Enable)ビットは、外部割り込みを受け付けるか否かを決定するビットであり、例えば、IEビットが1の時に外部割り込みが受け付けられる。ビット3に割り当てられたC(Carry)ビットはALU90の算術演算において、桁上げ又は桁借りが発生した時に1になるビットである。ビット2に割り当てられたV(Overflow)ビットはALU90の算術演算において、オーバーフロー又はアンダーフローが発生した時に1になるビットである。ビット1に割り当てられたZ(Zero)ビットはALU90の出力が0の時に1になるビットである。ビット0に割り当てられたN(Neg ative)ビットはALU90の出力の符号ビット(最上位ビット(ビット23))と一致する。
図3は、ベクタテーブルの構成例を説明するための図である。ベクタテーブル220は、割り込み番号0〜31に対応して分岐先アドレス0〜31を格納する記憶領域m0〜m31を有する。各記憶領域m0〜m31はそれぞれ、TTBR×128+0x00〜TTBR×128+0x7Cのワード(32ビット)境界のアドレスに割り当てられている。例えば、TTBRの値を0x0007Eとすると、各記憶領域m0〜m31はそれぞれ、0x003F00〜0x003F7Cアドレスに割り当てられる。
図4は、割り込み命令の命令コードの構成例を説明するための図である。割り込み命令は、プログラムカウンタ値と状態レジスタ値をスタック領域に退避し、割り込み要因毎に用意された割り込み処理ルーチンの開始アドレスに分岐する命令である。割り込み命令の命令コードは、例えば、16ビットのフィールドを有する。例えば、ビット15〜7の上位9ビットのフィールドには、命令の種類を識別するためのOPコードが割り当てられる。例えば、割り込み命令のOPコードは0x0E8である。また、例えば、ビット6〜2の5ビットフィールドには、割り込み番号0〜31のいずれか、すなわち、0x00〜0x1Fのいずれかが埋め込まれる。最下位の2ビットは、例えば、未定義のビットである。
ソフトウェア割り込みの場合は、パイプライン制御部300のデコード処理部310は、命令コード142をデコードし、上位9ビットが0x0E8に一致すれば割り込み命令と判断する、また、デコード処理部310は、例えば、命令コード142のビット6〜2の5ビットをベクタコード312として出力する。
ハードウェア割り込みの場合は、割り込み命令生成部130は、例えば、32種類の割り込み要因(割り込み番号0〜31)のいずれかによるハードウェア割り込みが発生した場合に、ビット15〜7の上位9ビットを0x0E8とし、発生したハードウェア割り込みに対応する割り込み番号をビット6〜2の5ビットに埋め込んで割り込み命令の命令コード132を生成する。
図5は、本実施形態に係るマイクロプロセッサがソフトウェア割り込みを実行する場合の動作を説明するための図である。以下、図1を参照しながら図5の割り込み動作について説明する。なお、以下の説明では、時刻T0〜T6においてパイプライン制御部300(制御信号生成部320)は、セレクタ144がROM30から読み出された命令コード32を選択するように選択信号を生成しており、セレクタ144の出力には命令コード32が伝播している。
時刻T0におけるクロックの立ち上がりでプログラムカウンタ20が更新され、プログラムカウンタ20には割り込み命令の1つ前の命令の命令コードが格納されたアドレスが設定され、ROM30から割り込み命令の1つ前の命令の命令コードが読み出される。時刻T0〜T1において、パイプライン制御部300(制御信号生成部320)は、セレクタ24がインクリメンタ40の出力を選択するように選択信号を生成しており、セレクタ24の出力にはプログラムカウンタ20の値+2の計算結果が伝播している。時刻T1におけるクロックの立ち上がりで、命令フェッチレジスタ140に、割り込み命令の1つ前の命令の命令コードが格納される。時刻T0〜T1は、割り込み命令の1つ前の命令の命令フェッチステージに対応する。
時刻T1におけるクロックの立ち上がりでプログラムカウンタ20の値が+2増加する。その結果、プログラムカウンタ20には割り込み命令の命令コードが格納されたアドレスが設定され、ROM30から割り込み命令の命令コードが読み出される。時刻T1〜T2において、パイプライン制御部300(制御信号生成部320)は、セレクタ24がインクリメンタ40の出力を選択するように選択信号を生成しており、セレクタ24の出力にはプログラムカウンタ20の値+2の計算結果が伝播している。さらに、パイプライン制御部300は、命令フェッチレジスタ140に格納された命令コード(割り込み命令の1つ前の命令の命令コード)をデコードし、デコード結果に基づいて制御信号322−1〜mを生成する。例えば、割り込み命令の1つ前の命令が何らかの算術演算命令であれば、ALU90が所望のデータの算術演算を実行することができるように、セレクタ54、64、66、74、76、84等を制御する制御信号322−1〜mが生成される。時刻T2におけるクロックの立ち上がりで、パイプラインレジスタ1、2、3(60、70、80)に所望のデータが設定される。また、時刻T2におけるクロックの立ち上がりで、命令フェッチレジスタ140に、割り込み命令の命令コードが格納される。時刻T1〜T2は、割り込み命令の1つ前の命令の第1の命令実行ステージ及び割り込み命令の命令フェッチステージに対応する。
時刻T2におけるクロックの立ち上がりでプログラムカウンタ20の値が+2増加する。その結果、プログラムカウンタ20には割り込み命令の1つ後の命令の命令コードが格納されたアドレスが設定され、ROM30から割り込み命令の1つ後の命令の命令コードが読み出される。時刻T2〜T3において、パイプライン制御部300は、命令フェッチレジスタ140に格納された命令コード(割り込み命令の命令コード)をデコードし、デコード結果に基づいて制御信号322−1〜mを生成する。具体的には、パイプライン制御部300(デコード処理部310)が、割り込み命令の命令コードをデコードして割り込み要因に対応するベクタコード312を生成する。さらに、即値生成部100は、TTBRレジスタ120の値とベクタコード312の値を結合し、下位2ビットに0を付加してベクタアドレスを生成する。また、時刻T2〜T3において、パイプライン制御部300(制御信号生成部320)は、即値生成部100の出力(ベクタアドレス)がパイプラインレジスタ1(60)の入力に伝播するようにセレクタ54、76の各選択信号を生成し、スタックポインタ50の出力がパイプラインレジスタ2(70)の入力に伝播するようにセレクタ64、66の各選択信号を生成し、定数値4がパイプラインレジスタ3(80)の入力に伝播するようにセレクタ84の選択信号を生成する。さらに、パイプライン制御部300(制御信号生成部320)は、セレクタ24がプログラムカウンタ20の出力を選択するように選択信号を生成しており、セレクタ24の出力にはプログラムカウンタ20の値が伝播している。ここで、パイプライン制御部300(制御信号生成部320)が、時刻T0〜T2と異なり、セレクタ24がインクリメンタ40の出力を選択するように選択信号を生成しないのは、後述するように、割り込み処理の終了後に割り込み命令の1つ後の命令のフェッチからやり直すために、割り込み命令の1つ後の命令の命令コードが格納されているアドレス値をスタック領域210に退避するためである。時刻T3におけるクロックの立ち上がりで、パイプラインレジスタ1、2、3(60、70、80)にそれぞれ、ベクタアドレス、スタックポインタ50の値、定数値4が設定される。また、時刻T3におけるクロックの立ち上がりで、割り込み命令の1つ前の命令が何らかの算術演算命令であれば、ALU90の出力が、例えば、汎用レジスタR0に格納される。なお、パイプライン制御部300(制御信号生成部320)は、時刻T3におけるクロックの立ち上がりで、命令フェッチレジスタ140に、割り込み命令の1つ後の命令コードがフェッチされないように制御する。時刻T2〜T3は、割り込み命令の1つ前の命令の第2の命令実行ステージ及び割り込み命令の第1の命令実行ステージに対応する。
時刻T3〜T4において、パイプライン制御部300(制御信号生成部320)は、割り込み命令のデコード結果及び実行ステートに基づいて制御信号322−1〜mを生成する。具体的には、パイプライン制御部300(制御信号生成部320)は、ALU90が減算を実行するように制御信号を生成し、汎用データバス150にRAM200の出力データが供給されるように制御信号を生成する。従って、ALU90は、パイプラインレジスタ2(70)の値とパイプラインレジスタ3(80)の値の減算を行い、減算結果(スタックポインタ50の値−4)を出力する。また、パイプラインレジスタ1(60)により指定されるベクタアドレスによりRAM200のベクタテーブル220から分岐先アドレスが読み出され、汎用データバス150に供給される。さらに、時刻T3〜T4において、パイプライン制御部300(制御信号生成部320)は、ALU90の出力がスタックポインタ50の入力及びパイプラインレジスタ1(60)の入力に伝播するようにセレクタ54、76の各選択信号を生成し、プログラムカウンタ20の出力がパイプラインレジスタ2(70)の入力に伝播するようにセレクタ66の選択信号を生成し、汎用データバス150のデータがプログラムカウンタ20の入力に伝播するようにセレクタ24の選択信号を生成する。時刻T4におけるクロックの立ち上がりで、スタックポインタ50及びパイプラインレジスタ1(60)にスタックポインタ50の値−4が設定され、パイプラインレジスタ2(70)にプログラムカウンタ20の値(割り込み命令の1つ後の命令の命令コードが格納されているアドレス値)が設定される。さらに、時刻T4におけるクロックの立ち上がりで、プログラムカウンタ20に汎用データバス150のデータ(分岐先アドレス)が設定される。なお、パイプライン制御部300(制御信号生成部320)は、時刻T4におけるクロックの立ち上がりで、命令フェッチレジスタ140に、割り込み命令の1つ後の命令コードがフェッチされないように制御する。時刻T3〜T4は、割り込み命令の第2の命令実行ステージに対応する。
時刻T4〜T5において、パイプライン制御部300(制御信号生成部320)は、割り込み命令のデコード結果及び実行ステートに基づいて制御信号322−1〜mを生成する。具体的には、パイプライン制御部300(制御信号生成部320)は、汎用データバス150にパイプラインレジスタ2(70)の出力及び状態レジスタ110の出力が供給されるように制御信号を生成し、RAM200に対する書き込みイネーブル信号を生成する。さらに、パイプライン制御部300(制御信号生成部320)は、インクリメンタ40の出力がプログラムカウンタ20の入力に伝播するようにセレクタ24の選択信号を生成する。時刻T5におけるクロックの立ち上がりで、RAM200の入力データにパイプラインレジスタ2(70)の値(割り込み命令の1つ後の命令の命令コードが格納されているアドレス値)及び状態レジスタ110の値が設定され、RAM200のアドレスにパイプラインレジスタ1(60)(スタックポインタ50)の出力が設定されて、書き込みが行われる。その結果、RAM200のスタック領域210に割り込み命令の1つ後の命令の命令コードが格納されているアドレス値及び状態レジスタ110の値が退避される。また、時刻T5におけるクロックの立ち上がりで、命令フェッチレジスタ140に、分岐先アドレスに格納された命令(分岐先命令)の命令コードが格納される。時刻T4〜T5は、割り込み命令の第3の命令実行ステージ及び分岐先命令の命令フェッチステージに対応する。
時刻T5におけるクロックの立ち上がりでプログラムカウンタ20の値が+2増加する。その結果、プログラムカウンタ20には分岐先命令の1つ後の命令の命令コードが格納されたアドレスが設定され、ROM30から分岐先命令の1つ後の命令の命令コードが読み出される。時刻T5〜T6において、パイプライン制御部300(制御信号生成部320)は、命令フェッチレジスタ140に格納された命令コード(分岐先命令の命令コード)をデコードし、デコード結果に基づいて制御信号322−1〜mを生成する。時刻T6におけるクロックの立ち上がりで、命令フェッチレジスタ140に、分岐先命令の1つ後の命令の命令コードが格納される。時刻T5〜T6は、分岐先命令の第1の命令実行ステージ及び分岐先命令の1つ後の命令の命令フェッチステージに対応する。以降は、分岐先の割り込み処理プログラムが実行される。
以上説明したとおり、本実施形態に係るマイクロプロセッサは、割り込み命令を3クロックサイクル(第1〜3の命令実行ステージ)で実行することができる。
図6は、割り込み実行時におけるプログラムカウンタ及び状態レジスタのスタック領域への退避動作を説明するための図である。以下、図1及び図5を参照しながら図6について説明する。
スタック領域210は、24ビットアドレス空間0x000000〜0x007FFFにマッピングされたRAM200に含まれており、例えば、0x007F00〜0x007FFFにマッピングされた256バイトの記憶領域である。割り込み命令を実行する前(図5の時刻T0〜T2)は、スタックポインタ50(SP)の値は0x007F14であり、スタックポインタ50(SP)は0x007F14アドレスに割り当てられた記憶領域211を指している。0x007F14アドレスは、下位2ビットが00のアドレスなので、ワード境界(32ビット境界)のアドレスである。図5で説明したように、割り込み命令を実行すると、第2の命令実行ステージの最後(時刻T4)に、スタックポインタ50及びパイプラインレジスタ1(60)にスタックポインタ50の値−4の計算値、すなわち、0x007F10が設定される。ここで、0x007F10アドレスは、下位2ビットが00のアドレスなので、ワード境界(32ビット境界)のアドレスである。次に、第3の命令実行ステージ(時刻T4〜T5)において、プログラムカウンタ20の出力及び状態レジスタ110の出力が汎用データバス150に供給される。例えば、32ビットのデータバスの下位24ビット及び上位8ビットにそれぞれプログラムカウンタ20の24ビット出力(PC[23:0])及び状態レジスタ110の8ビット出力(PSR[7:0])が供給される。そして、第3の命令実行ステージの最後(時刻T5)に、汎用データバス150に供給された32ビットのデータがスタック領域の0x007F10アドレスに退避される。具体的には、32ビットデータが1バイト(8ビット)毎に区切られ、アドレス0x007F10〜0x007F14に割り当てられた記憶領域211〜214にそれぞれ、PC[7:0]、PC[15:8]、PC[23:16]、PSR[7:0]が格納される。ここで、プログラムカウンタ20の24ビットと状態レジスタ110の8ビットを加えてもRAM200の入力データバスの32ビット幅以下となるように構成し、かつ、ワード境界(32ビット境界)のアドレス0x007F10を指定してワードアクセスをしているので、1クロックサイクルでのスタック領域210への退避を可能にしている。
2.マイクロコンピュータ
図7は、本実施の形態のマイクロコンピュータのハードウエアブロック図の一例である。
本マイクロコンピュータ700は、CPU510(本実施形態に係るマイクロプロセッサ)、キャッシュメモリ520、ROM710、RAM720、MMU730、LCDコントローラ530、リセット回路540、プログラマブルタイマ550、リアルタイムクロック(RTC)560、DMAコントローラ570、割り込みコントローラ580、通信制御回路590、バスコントローラ600、A/D変換器610、D/A変換器620、入力ポート630、出力ポート640、I/Oポート650、クロック発生装置660、プリスケーラ670、クロック停止制御回路740及びそれらを接続する汎用バス680、専用バス750等、各種ピン690等を含む。
3.電子機器
図8に、本実施の形態の電子機器のブロック図の一例を示す。本電子機器800は、マイクロコンピュータ(またはASIC)810、入力部820、メモリ830、電源生成部840、LCD850、音出力部860を含む。
ここで、入力部820は、種々のデータを入力するためのものである。マイクロコンピュータ810は、この入力部820により入力されたデータに基づいて種々の処理を行うことになる。メモリ830は、マイクロコンピュータ810などの作業領域となるものである。電源生成部840は、電子機器800で使用される各種電源を生成するためのものである。LCD850は、電子機器が表示する各種の画像(文字、アイコン、グラフィック等)を出力するためのものである。
音出力部860は、電子機器800が出力する各種の音(音声、ゲーム音等)を出力するためのものであり、その機能は、スピーカなどのハードウェアにより実現できる。
図9(A)に、電子機器の1つである携帯電話950の外観図の例を示す。この携帯電話950は、入力部として機能するダイヤルボタン952や、電話番号や名前やアイコンなどを表示するLCD954や、音出力部として機能し音声を出力するスピーカ956を備える。
図9(B)に、電子機器の1つである携帯型ゲーム装置960の外観図の例を示す。この携帯型ゲーム装置960は、入力部として機能する操作ボタン962、十字キー964や、ゲーム画像を表示するLCD966や、音出力部として機能しゲーム音を出力するスピーカ968を備える。
図9(C)に、電子機器の1つであるパーソナルコンピュータ970の外観図の例を示す。このパーソナルコンピュータ970は、入力部として機能するキーボード972や、文字、数字、グラフィックなどを表示するLCD974、音出力部976を備える。
本実施の形態のマイクロコンピュータを図9(A)〜図9(C)の電子機器に組みむことにより、低価格でプログラムの応答性の高い電子機器を短期間で提供することができる。
なお、本実施形態を利用できる電子機器としては、図9(A)、(B)、(C)に示すもの以外にも、携帯型情報端末、ページャー、電子卓上計算機、タッチパネルを備えた装置、プロジェクタ、ワードプロセッサ、ビューファインダ型又はモニタ直視型のビデオテープレコーダ、カーナビゲーション装置等のLCDを使用する種々の電子機器を考えることができる
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
例えば、図1で説明した本発明に係るマイクロプロセッサの一部の構成は、他の構成とすることもできる。例えば、マイクロプロセッサ10に、乗算等の複雑な計算を高速に実行するコプロセッサが接続されるような場合、セレクタ54の入力にコプロセッサの出力を接続する構成であってもよいし、パイプラインレジスタ2、3(70、80)の出力をコプロセッサの各データ入力に接続する構成であってもよい。
また、例えば、パイプラインレジスタ4(第4のパイプラインレジスタ)を追加し、パイプラインレジスタ2(70)をALU90の入力データの設定用に専用に使用し、パイプラインレジスタ4をRAM200のアドレス設定用に専用に使用する構成にしてもよい。その場合は、図5の時刻T4において、パイプラインレジスタ2(70)にプログラムカウンタ20の値を格納する代わりに、パイプラインレジスタ4にプログラムカウンタ20の値を格納するように変更し、時刻T5において、パイプラインレジスタ2(70)の値をスタック領域に退避する代わりに、パイプラインレジスタ4の値をスタック領域に退避するように変更すれば、図5の説明を同様に適用することができる。
また、例えば、セレクタ66の一方の入力に、プログラムカウンタ20の出力の代わりにインクリメンタ40の出力を接続してもよい。その場合は、図5の時刻T4において、パイプラインレジスタ2(70)にプログラムカウンタ20の値を格納する代わりに、インクリメンタ40の出力値を格納するように変更すれば、図5の説明を同様に適用することができる。
また、例えば、割り込み命令の第1の命令実行ステージにおいて、ALU90にベクタアドレスを生成させるようにしてもよい。例えば、パイプラインレジスタ2(70)の出力とALU90の第1の入力の間に2to1セレクタを挿入し、2to1セレクタの一方の入力にはパイプラインレジスタ2(70)の出力を接続し、2to1セレクタの他方の入力にはTTBRレジスタ120の出力を接続する。さらに、パイプラインレジスタ3(80)の出力とALU90の第2の入力の間にも2to1セレクタを挿入し、2to1セレクタの一方の入力にはパイプラインレジスタ3(80)の出力を接続し、2to1セレクタの他方の入力にはベクタコード312を接続する。この場合、例えば、図5の時刻T2〜T3において、パイプライン制御部300(制御信号生成部320)は、これら2つの2to1セレクタがそれぞれ、TTBRレジスタ120の出力及びベクタコード312を選択するように選択信号を生成し、ALU90が加算を実行するように制御信号を生成し、ALU90の出力(ベクタアドレス)がパイプラインレジスタ1(60)の入力に伝播するようにセレクタ54、76の各選択信号を生成するようにしてもよい。また、時刻T3〜T4において、パイプライン制御部300(制御信号生成部320)は、これら2つの2to1セレクタがそれぞれ、パイプラインレジスタ2、3(70、80)を選択するように選択信号を生成し、ALU90が減算を実行するように制御信号を生成するようにしてもよい。
また、図5では本発明に係るマイクロプロセッサがソフトウェア割り込みを実行する場合の動作を説明したが、ハードウェア割り込みを実行する場合も同様に適用することができる。ハードウェア割り込みを実行する場合は、時刻T1において、ハードウェア割り込みの発生を検出する処理を追加し、時刻T1〜T2の命令フェッチステージにおいて、ROM30から割り込み命令を読み出す処理を、割り込み命令生成部が割り込み要因INT0〜INT31を埋め込んだ割り込み命令の命令コードを生成する処理に変更すれば、時刻T2以降の処理を同様に適用することができる。
本発明は、実施の形態で説明した構成と実質的に同一の構成(例えば、機能、方法及び結果が同一の構成、あるいは目的及び効果が同一の構成)を含む。また、本発明は、実施の形態で説明した構成の本質的でない部分を置き換えた構成を含む。また、本発明は、実施の形態で説明した構成と同一の作用効果を奏する構成又は同一の目的を達成することができる構成を含む。また、本発明は、実施の形態で説明した構成に公知技術を付加した構成を含む。
本実施形態に係るマイクロプロセッサの一部の構成例を説明するための図。 状態レジスタの構成例を説明するための図。 ベクタテーブルの構成例を説明するための図。 割り込み命令の命令コードの構成例を説明するための図。 本実施形態に係るマイクロプロセッサがソフトウェア割り込みを実行する場合の動作を説明するための図。 割り込み実行時におけるプログラムカウンタ及び状態レジスタのスタック領域への退避動作を説明するための図。 本実施の形態のマイクロコンピュータのハードウエアブロック図の一例である。 集積回路装置を含む電子機器のブロック図の一例を示す。 図9(A)(B)(C)は、種々の電子機器の外観図の例である。
符号の説明
10 マイクロプロセッサ、20 プログラムカウンタ、24 セレクタ、30 ROM、32 命令コード、40 インクリメンタ、50 スタックポインタ、54 セレクタ、60 パイプラインレジスタ1、64 セレクタ、66 セレクタ、70 パイプラインレジスタ2、74 セレクタ、76 セレクタ、80 パイプラインレジスタ3、84 セレクタ、90 ALU(算術演算ユニット)、100 即値生成部、110 状態レジスタ、120 TTBR(Trap Table base Register)レジスタ、130 割り込み命令生成部、132 割り込み命令コード、140 命令フェッチレジスタ、142 命令コード、144 セレクタ、150 汎用データバス、200 RAM、210 スタック領域、220 ベクタテーブル、300 パイプライン制御部、310 デコード処理部、312 ベクタコード、320 制御信号生成部、322−1〜m 制御信号、510 CPU、520 キャッシュメモリ、530 LCDコントローラ、540 リセット回路、550 プログラマブルタイマ、560 リアルタイムクロック(RTC)、570 DMAコントローラ兼バスI/F、580 割り込みコントローラ、590 通信制御回路(シリアルインターフェース)、600 バスコントローラ、610 A/D変換器、620 D/A変換器、630 入力ポート、640 出力ポート、650 I/Oポート、660 クロック発生装置(PLL)、670 プリスケーラ、680 汎用バス、690 各種ピン、700 マイクロコンピュータ、710 ROM、720 RAM、730 MMU、740 クロック停止制御回路、750 専用バス、800 電子機器、810 マイクロコンピュータ(ASIC)、820 入力部、830 メモリ、840 電源生成部、850 LCD、860 音出力部、950 携帯電話、952 ダイヤルボタン、954 LCD、956 スピーカ、960 携帯型ゲーム装置、962 操作ボタン、964 十字キー、966 LCD、968 スピーカ、970 パーソナルコンピュータ、972 キーボード、974 LCD、976 音出力部

Claims (12)

  1. 所定のメモリに命令コードが格納されている各命令の実行において、前記命令コードをフェッチする命令フェッチステージと、前記各命令を実行する1以上の命令実行ステージを含むパイプライン処理を行う機能を有するマイクロプロセッサであって、
    前記パイプライン処理を制御するパイプライン制御部と、
    前記命令コードの格納先を参照するためのプログラムカウンタと、
    少なくとも2つの入力に基づいて所定の算術演算を実行する汎用の算術演算ユニットと、
    少なくとも前記プログラムカウンタの値を退避させるスタック領域を参照するためのスタックポインタと、
    少なくとも割り込み命令に対応する分岐先アドレスの情報が格納されたメモリのアドレスを設定するために使用される第1のパイプラインレジスタと、
    少なくとも前記算術演算ユニットの第1の入力を設定するために使用される第2のパイプラインレジスタと、
    少なくとも前記算術演算ユニットの第2の入力を設定するために使用される第3のパイプラインレジスタと、を含み、
    前記パイプライン制御部は、
    複数の命令実行ステージにより実行される割り込み命令の第1の命令実行ステージにおいて、
    前記割り込み命令の命令コードをデコードし、
    デコードした結果に基づいて、所定のブロックに、前記割り込み命令に対応する分岐先アドレスの情報を参照するためのベクタアドレスを生成させ、
    前記割り込み命令の第1の命令実行ステージの終了時に、
    前記第1のパイプラインレジスタに前記ベクタアドレスが設定され、
    前記第2のパイプラインレジスタに前記スタックポインタの値が設定され、
    前記第3のパイプラインレジスタに所定の定数値が設定されるように制御することを特徴とするマイクロプロセッサ。
  2. 請求項1において、
    即値アドレス又は即値データを生成するための即値生成部を含み、
    前記パイプライン制御部は、
    前記割り込み命令の第1の命令実行ステージにおいて、前記即値生成部に前記ベクタアドレスを生成させることを特徴とするマイクロプロセッサ。
  3. 請求項2において、
    前記即値生成部の出力から前記第1のパイプラインレジスタの入力に至る信号経路と、
    前記第1のパイプラインレジスタの出力から前記分岐先アドレスの情報が記憶されているメモリのアドレス入力に至る信号経路と、
    前記スタックポインタの出力から前記第2のパイプラインレジスタの入力に至る信号経路と、
    前記第2のパイプラインレジスタの出力から前記算術演算ユニットの第1の入力に至る信号経路と、
    前記所定の定数値の供給源から前記第3のパイプラインレジスタの入力に至る信号経路と、
    前記第3のパイプラインレジスタの出力から前記算術演算ユニットの第2の入力に至る信号経路と、を含むことを特徴とするマイクロプロセッサ。
  4. 請求項1乃至3のいずれかにおいて、
    汎用データバスを含み、
    前記第n(nは1、2、3のいずれか)のパイプラインレジスタは、
    前記汎用データバスの少なくとも一部に所定のデータを供給するためにも使用され、
    前記パイプライン制御部は、
    前記割り込み命令の第2の命令実行ステージにおいて、
    前記スタックポインタの値及び前記所定の定数値に基づいて、前記算術演算ユニットに所定の算術演算を実行させ、
    前記割り込み命令の第2の命令実行ステージの終了時に、
    前記スタックポインタに前記算術演算の結果が設定され、
    前記第nのパイプラインレジスタに前記プログラムカウンタの値が設定され、
    前記プログラムカウンタに前記ベクタアドレスによって参照される前記分岐先アドレスの情報が設定されるように制御することを特徴とするマイクロプロセッサ。
  5. 請求項4において、
    前記プログラムカウンタの出力から前記第nのパイプラインレジスタの入力までの信号経路と、
    前記第nのパイプラインレジスタの出力から前記汎用データバスの少なくとも一部までの信号経路と、を含むことを特徴とするマイクロプロセッサ。
  6. 請求項1乃至3のいずれかにおいて、
    汎用データバスと、
    少なくとも前記汎用データバスの少なくとも一部に所定のデータを供給するために使用される第4のパイプラインレジスタと、
    前記プログラムカウンタの出力から前記第4のパイプラインレジスタの入力までの信号経路と、
    前記第4のパイプラインレジスタの出力から汎用データバスの少なくとも一部までの信号経路と、を含み、
    前記パイプライン制御部は、
    前記割り込み命令の第2の命令実行ステージにおいて、
    前記スタックポインタの値及び所定の定数値に基づいて、前記算術演算ユニットに所定の算術演算を実行させ、
    前記割り込み命令の第2の命令実行ステージの終了時に、
    前記スタックポインタに前記算術演算の結果が設定され、
    前記第4のパイプラインレジスタに前記プログラムカウンタの値が設定され、
    前記プログラムカウンタに前記ベクタアドレスによって参照される前記分岐先アドレスの情報が設定されるように制御することを特徴とするマイクロプロセッサ。
  7. 請求項4乃至6のいずれかにおいて、
    前記マイクロプロセッサの所定の状態を表示する状態レジスタを含み、
    前記パイプライン制御部は、
    前記割り込み命令の第3の命令実行ステージにおいて、
    前記パイプラインレジスタに設定された前記プログラムカウンタの値及び前記状態レジスタの値が、前記スタック領域に書き込まれるように制御することを特徴とするマイクロプロセッサ。
  8. 請求項7において、
    前記状態レジスタの出力から前記汎用データバスの少なくとも一部までの信号経路と、
    前記汎用データバスから前記スタック領域を有するメモリのデータ入力までの信号経路と、を含むことを特徴とするマイクロプロセッサ。
  9. 請求項7又は8において、
    前記プログラムカウンタは、
    iビット(iは1以上の整数)のビット幅を有し、
    前記状態レジスタは、
    jビット(jは1以上の整数)のビット幅を有し、
    前記スタック領域を有するメモリは、
    kビット幅(kは1以上の整数)の入力データバスを有し、
    kはi+j以上であることを特徴とするマイクロプロセッサ。
  10. 請求項7乃至9のいずれかにおいて、
    前記スタック領域を有するメモリは、
    kビット幅(kは1以上の整数)の入力データバスを有し、
    前記スタックポインタは、kビット境界のアドレスを指定して前記スタック領域を参照することを特徴とするマイクロプロセッサ。
  11. 請求項1乃至10のいずれかに記載のマイクロプロセッサを含むことを特徴とするマイクロコンピュータ。
  12. 請求項11に記載のマイクロコンピュータと、
    前記マイクロコンピュータの処理対象となるデータの入力手段と、
    前記マイクロコンピュータにより処理されたデータを出力するための出力手段とを含むことを特徴とする電子機器。
JP2007104847A 2007-04-12 2007-04-12 マイクロプロセッサ、マイクロコンピュータ、電子機器 Expired - Fee Related JP4284559B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007104847A JP4284559B2 (ja) 2007-04-12 2007-04-12 マイクロプロセッサ、マイクロコンピュータ、電子機器
US12/100,560 US20080256335A1 (en) 2007-04-12 2008-04-10 Microprocessor, microcomputer, and electronic instrument

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007104847A JP4284559B2 (ja) 2007-04-12 2007-04-12 マイクロプロセッサ、マイクロコンピュータ、電子機器

Publications (2)

Publication Number Publication Date
JP2008262399A true JP2008262399A (ja) 2008-10-30
JP4284559B2 JP4284559B2 (ja) 2009-06-24

Family

ID=39854824

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007104847A Expired - Fee Related JP4284559B2 (ja) 2007-04-12 2007-04-12 マイクロプロセッサ、マイクロコンピュータ、電子機器

Country Status (2)

Country Link
US (1) US20080256335A1 (ja)
JP (1) JP4284559B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200138340A (ko) * 2018-03-31 2020-12-09 마이크론 테크놀로지, 인크. 멀티 스레드, 자체 스케줄링 재구성 가능한 컴퓨팅 패브릭

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201036343A (en) * 2009-03-20 2010-10-01 Ind Tech Res Inst Address generator of communication data interleaver and communication data decoded circuit

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6341344B1 (en) * 1998-03-20 2002-01-22 Texas Instruments Incorporated Apparatus and method for manipulating data for aligning the stack memory

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200138340A (ko) * 2018-03-31 2020-12-09 마이크론 테크놀로지, 인크. 멀티 스레드, 자체 스케줄링 재구성 가능한 컴퓨팅 패브릭
KR102504080B1 (ko) 2018-03-31 2023-02-28 마이크론 테크놀로지, 인크. 멀티 스레드, 자체 스케줄링 재구성 가능한 컴퓨팅 패브릭

Also Published As

Publication number Publication date
US20080256335A1 (en) 2008-10-16
JP4284559B2 (ja) 2009-06-24

Similar Documents

Publication Publication Date Title
TWI541658B (zh) 資料處理裝置及半導體積體電路裝置
US20090235052A1 (en) Data Processing Device and Electronic Equipment
JP3627725B2 (ja) 情報処理装置及び電子機器
US5809327A (en) Eight-bit microcontroller having a risc architecture
JP2001504959A (ja) Riscアーキテクチャを有する8ビットマイクロコントローラ
JPH0546383A (ja) データ処理装置
US20060218378A1 (en) Integrated circuit device
JP4284559B2 (ja) マイクロプロセッサ、マイクロコンピュータ、電子機器
JPH07239780A (ja) 1クロック可変長命令実行処理型命令読み込み電子計 算機
JP4800582B2 (ja) 演算処理装置
JP2007207075A (ja) Cpu、集積回路装置、マイクロコンピュータ、電子機器、及びcpuの制御方法
JP3570287B2 (ja) マイクロコンピュータ
JP2007193572A (ja) Cpu、集積回路装置、マイクロコンピュータ及び電子機器
JP3867804B2 (ja) 集積回路装置
JP2000039995A (ja) 高性能マイクロプロセッサで使用するためのフレキシブル累算レジスタファイル
JP3760999B2 (ja) 情報処理装置、マイクロコンピュータ及び電子機器
JP3019818B2 (ja) データ処理方法
EP0907124A1 (en) Microcomputer and electronic equipment
JPH1173301A (ja) 情報処理装置
JP2002182905A (ja) ディジタル信号処理プロセッサ
JP5263498B2 (ja) 信号処理プロセッサ及び半導体装置
JP5263497B2 (ja) 信号処理プロセッサ及び半導体装置
JP2020140290A (ja) 中央演算処理装置
JP2006285761A (ja) 集積回路装置、マイクロコンピュータ及び電子機器
JPH11338697A (ja) 情報処理装置、音声処理装置、及び特定用途向け情報処理装置の製造方法

Legal Events

Date Code Title Description
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: 20090225

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090310

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

Free format text: PAYMENT UNTIL: 20120403

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4284559

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120403

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130403

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130403

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20140403

Year of fee payment: 5

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees