JP5507317B2 - マイクロコンピュータ及び割込み制御方法 - Google Patents

マイクロコンピュータ及び割込み制御方法 Download PDF

Info

Publication number
JP5507317B2
JP5507317B2 JP2010091688A JP2010091688A JP5507317B2 JP 5507317 B2 JP5507317 B2 JP 5507317B2 JP 2010091688 A JP2010091688 A JP 2010091688A JP 2010091688 A JP2010091688 A JP 2010091688A JP 5507317 B2 JP5507317 B2 JP 5507317B2
Authority
JP
Japan
Prior art keywords
save
interrupt
register
control circuit
instruction
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
Application number
JP2010091688A
Other languages
English (en)
Other versions
JP2011221867A (ja
Inventor
英樹 松山
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics 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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2010091688A priority Critical patent/JP5507317B2/ja
Priority to US13/084,946 priority patent/US8959317B2/en
Priority to CN201110094387.8A priority patent/CN102214085B/zh
Publication of JP2011221867A publication Critical patent/JP2011221867A/ja
Application granted granted Critical
Publication of JP5507317B2 publication Critical patent/JP5507317B2/ja
Priority to US14/584,778 priority patent/US9116870B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/327Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for interrupts
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt

Landscapes

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

Description

本発明は、割込み処理を行うマイクロコンピュータ及びマイクロコンピュータにおける割込み制御方法に関し、特に、割込み処理時のデータ退避方法に関する。
近年、携帯電子機器(例示:携帯電話)や家電製品、あるいは自動車の電子制御装置等、様々な電子機器にマイクロコンピュータが搭載されている。このような電子機器やコンピュータの高性能化に伴い、マイクロコンピュータの処理能力の更なる向上が望まれている。
マイクロコンピュータ内のプロセッサでは、実行中の命令より優先度の高い割込みが発生した場合、実行中の命令を中断して、割込みシーケンスが実行される。割り込み処理が開始されると、プロセッサは、プログラムステータスワード(PSW)、プログラムカウンタ(PC)の内容や汎用レジスタの内容(コンテクスト)を一時的にスタックメモリ等に退避する。又、割込み処理の終了後、退避したコンテクストを再びPSW、PC、及び汎用レジスタに戻すことにより、中断していた処理を再開することができる。
図1A及び図1Bは、従来技術によるマイクロコンピュータにおける割込み処理に係る回路ブロックの構成を示す図である。図1A及び図1Bを参照して従来技術による割込み機能の詳細を説明する。
従来技術によるマイクロコンピュータは、割込みコントローラ100、プロセッサ200、命令メモリ300、データメモリ400を具備する。割込みコントローラ100は、入力された割込み信号に応じて、プロセッサ200に対する割込みベクタINTVCT及び割込み要求INTREQをセットする。この際、割込みコントローラ100は、割込み信号毎に設定された優先度PRを参照し、優先度PRが高い割込みベクタINVCTを優先してプロセッサ200に出力する。
プロセッサ200は、割込み要求INTREQが“1”にセットされると、割込みベクタINVCTに応じた命令コードを命令メモリ300から読み出して実行する。この際、プロセッサ200は、実行中の処理を中断し、当該処理においてレジスタファイル204に格納されていたデータ(コンテクスト)をデータメモリ400に退避する。
詳細には、プロセッサ200は、割込み処理制御回路201、命令フェッチ制御回路202、命令実行部203、レジスタファイル204を備える。割込み処理制御回路201は、命令フェッチ制御回路202を制御して割込み処理の実行を制御するとともに、割込み処理の受付や実行終了を割込みコントローラ100に通知する。割込み処理制御回路201は、割込み要求INTREQに応じて、命令フェッチ制御回路202を制御し、割込みベクタINVCTに応じた命令コードをフェッチさせる。命令実行部203は、命令フェッチ制御回路202でフェッチされた命令コードを実行する。
命令実行部203は、割込み処理を開始するとレジスタファイル204内のデータをデータメモリ400(例えばスタックメモリ)に退避する。詳細には、命令実行部203は、先ずPC及びPSWの内容をデータメモリ400に退避し、続いて、汎用レジスタR0〜R31の内容をデータメモリ400に退避する。レジスタファイル204内のデータの退避が終了すると、命令実行部203は割込み要求に応じた処理を実行する。
割込み処理が終了すると、命令実行部203は、リターン命令に応じてデータメモリ400に退避したデータをレジスタファイル204に復帰させ、中断していた処理を再開する。
このように、レジスタファイル204内のデータを退避してから割込み処理を実行することで、レジスタファイル204内のデータを破壊することなく、任意の汎用レジスタを使用して割込み処理を実行することができる。
割込み処理時に退避対象となる汎用レジスタのバリエーションは、割込み処理の内容毎に決まっている場合がある。しかし、従来技術では、割込み処理時に退避対象となる汎用レジスタを指定することができないため、実行され得る全ての割込み処理の退避対象レジスタを、割込み処理の内容に関係なく常に指定する必要がある。例えば、第1の割込み処理時に退避するべき汎用レジスタがレジスタR0〜R4であり、第2の割込み処理時に退避するべき汎用レジスタがレジスタR10〜R14である場合、実行される割込み処理が第1の割込み処理であっても、レジスタR0〜R4、R10〜R14内のデータを退避する必要がある。この場合、レジスタR10〜R14内のデータを退避する時間や、退避先で使用されるメモリ容量が無駄となってしまう。
以上のように、従来技術における割込み処理では、割込み要因が異なっても同じレジスタを退避しているため、退避する必要のないレジスタまで退避してしまう。このためレジスタ退避に要する時間が増大し、退避に必要なメモリ領域を大きくする必要があった。特に、割込み処理の頻度が増加した場合、レジスタの退避処理に多くの時間を要し、プログラムに対する処理能力低下の原因になっていた。
このような問題を解決する技術が、特開平9−134292に記載されている(特許文献1参照)。特許文献1では、ユーザプログラムが利用するレジスタ群を特定するレジスタ利用識別子を用意し、これを用いて退避レジスタを指定することで、割込み処理時の退避対象レジスタを限定している。これにより、割込みに応じて退避するレジスタはユーザプログラム毎に変更され、退避及び復帰に要する時間や退避先のメモリ容量等の無駄を排除することが可能となる。
特開平9−134292
特許文献1に記載の割込み制御方法では、ユーザプログラム毎に設定されたレジスタ利用識別子を用いて、退避対象レジスタと、レジスタの復帰及び退避を行う命令列とを特定し、特定した命令列を実行することでユーザプログラムに対応するレジスタ群の退避及び復帰を行っている。
特許文献1では、予め設定されたレジスタ利用識別子、又はユーザプログラムの実行時に設定された当該プログラムに対応するレジスタ利用識別子を用いて、退避対象レジスタを特定している。このため、割込み処理によって変更されるレジスタに関係なく実行中のプログラムが利用するレジスタ群のみを退避することができる。
一般に、メインルーチンで使用するレジスタ数は、割込みによって実行されるサブルーチン(割込みハンドラ)で使用されるレジスタ数より多い。このため、メインルーチンとして実行されるユーザプログラムに基づいて指定した退避レジスタの数は、割込み処理で使用するレジスタ数よりも多くなるのが一般的である。このため、ユーザプログラムに基づいて退避レジスタを決定した場合、割込みによって破壊される恐れのないレジスタを退避することがあり、退避時間や退避先のメモリ容量の増大を招く恐れがある。
又、特許文献1では、プログラム毎に退避命令列及び復帰命令列をメモリ内に用意しているため、メモリ容量を増大させる必要がある。特に、割込みのネスティング(多重割込み)を考慮した場合、割込み処理を行うプログラムにもレジスタ利用識別子、退避命令列及び復帰命令列を用意する必要がある。これらの識別子や命令列は、他のプログラムで使用可能なメモリ領域を圧迫するため、メモリ容量の増大を招く要因となる。
更に、割込みのネスティングが発生した場合のレジスタの退避方法は、特許文献1に記載されていない。仮に、ユーザプログラムと同様に、実行中の割り込み処理に対応するレジスタ利用識別子を利用して退避レジスタを指定する場合、割込みが発生する毎にレジスタ利用識別子を設定する処理が必要となり、プロセッサにおける処理時間が長大化してしまう。
又、レジスタ利用識別子によって特定された退避命令列を実行する場合、当該命令列をメモリからフェッチする必要がある。特に、割込みのネスティングが発生した場合、発生した割込みの数だけフェッチによる処理の遅延は累積され、プロセッサの処理能力を低下させる原因となる。
上記の課題を解決するために、本発明は、以下に述べられる手段を採用する。その手段を構成する技術的事項の記述には、[特許請求の範囲]の記載と[発明を実施するための形態]の記載との対応関係を明らかにするために、[発明を実施するための形態]で使用される番号・符号が付加されている。ただし、付加された番号・符号は、[特許請求の範囲]に記載されている発明の技術的範囲を限定的に解釈するために用いてはならない。
本発明によるマイクロコンピュータは、複数の退避レジスタリスト(270)、命令フェッチ制御回路(22)、レジスタ退避制御回路(25)、命令実行部(23)を具備する。複数の退避レジスタリスト(270)には、複数の割込み要因に対応する複数の退避パタンが設定される。命令フェッチ制御回路(22)は、受け付けられた割込み要求に応じて、命令メモリ(3)から命令コードをフェッチする。レジスタ退避制御回路(25)は、受け付けられた割込み要因に対応する退避パタンを、複数の退避レジスタリスト(270)から取得し、取得した退避パタンで指定された退避レジスタ内のコンテクストをデータメモリ(4)に退避するためのマイクロ命令を発行する。命令実行部(23)は、フェッチされた命令コードよりも前に、マイクロ命令を実行する。
本発明による割込み制御方法は、複数の退避レジスタリスト(270)に、複数の割込み要因に対応する複数の退避パタンを設定するステップと、命令フェッチ制御回路(22)が、受け付けられた割込み要求に応じて、命令メモリ(3)から命令コードをフェッチするステップと、レジスタ退避制御回路(25)が、プロセッサ(2)において受け付けられた割込み要因に対応する退避パタンを、複数の退避レジスタリスト(270)から取得するステップと、取得した退避パタンで指定された退避レジスタ内のコンテクストをデータメモリ(4)に退避するためのマイクロ命令を発行するステップと、命令実行部(23)が、フェッチされた命令コードよりも前に、マイクロ命令を実行するステップとを具備する。
本発明では、割込み要因に応じて退避対象のレジスタを特定できるため、レジスタを退避するための命令コードをフェッチすることなくマルチサイクルによるマイクロ命令で退避処理が可能となる。このため、退避のための命令コードのフェッチに要する時間を削減できるとともに、退避対象レジスタを割込み要因に応じて特定することが可能となる。
従って、本発明によれば、割込み処理時に退避するデータ量を削減することができる。
又、割込み処理時間を短縮することができる。
更に、割込み受付からコンテクストの退避開始までの時間を短縮することができる。
図1Aは、従来技術によるマイクロコンピュータにおける割込み処理に係る回路ブロックの構成を示す図である。 図1Bは、従来技術によるマイクロコンピュータにおける割込み処理に係る回路ブロックの構成を示す図である。 図2Aは、本発明によるマイクロコンピュータにおける割込み処理に係る回路ブロックの第1の実施の形態における構成を示す図である。 図2Bは、本発明によるマイクロコンピュータにおける割込み処理に係る回路ブロックの第1の実施の形態における構成を示す図である。 図3は、割込み要因毎に設定された退避パタンの一例を示す図である。 図4は、本発明に係るレジスタ退避パタン番号設定レジスタユニットの設定例を示す図である。 図5は、本発明に係るPTN設定レジスタの設定例を示す図である。 図6は、本発明による割込み受付から復帰までの動作の一例を示すフロー図である。 図7Aは、本発明による割込み処理の動作の詳細を示すフロー図である。 図7Bは、本発明による割込み処理の動作の詳細を示すフロー図である。 図8Aは、本発明による割込み処理の第1の実施の形態における動作の一例を示すタイミングチャートである。 図8Bは、本発明による割込み処理の第1の実施の形態における動作の一例を示すタイミングチャートである。 図9Aは、従来技術による割込み処理の動作の一例を示すタイミングチャートである。 図9Bは、従来技術による割込み処理の動作の一例を示すタイミングチャートである。 図10は、本発明による復帰処理の第1の実施の形態における動作を示すフロー図である。 図11Aは、本発明による復帰処理の第1の実施の形態における動作の一例を示すタイミングチャートである。 図11Bは、本発明による復帰処理の第1の実施の形態における動作の一例を示すタイミングチャートである。 図12Aは、本発明によるマイクロコンピュータにおける割込み処理に係る回路ブロックの第2の実施の形態における構成を示す図である。 図12Bは、本発明によるマイクロコンピュータにおける割込み処理に係る回路ブロックの第2の実施の形態における構成を示す図である。 図13は、本発明による割込み処理の第2の実施の形態における動作の一例を示すタイミングチャートである。 図14は、従来技術によるパイプライン処理による割込み動作の一例を示すタイミングチャートである。 図15Aは、本発明によるマイクロコンピュータにおける割込み処理に係る回路ブロックの第3の実施の形態における構成を示す図である。 図15Bは、本発明によるマイクロコンピュータにおける割込み処理に係る回路ブロックの第3の実施の形態における構成を示す図である。 図16Aは、第3の実施の形態におけるPTN生成回路が従うPTNテーブルの一例を示す図である。 図16Bは、第3の実施の形態におけるPTN生成回路の構成の一例を示す図である。 図17Aは、本発明による復帰処理の第4の実施の形態における動作を示すタイミングチャートである。 図17Bは、本発明による復帰処理の第4の実施の形態における動作を示すタイミングチャートである。
(概要)
本発明によるマイクロコンピュータは、割込み要因毎に設定された識別子(退避パタン識別番号)によって、退避対象のレジスタを特定し、実行する割込み処理で退避が必要なレジスタのみを退避する。これにより、割込み処理時に退避するデータ量が従来に比べて削減され、退避先のメモリ容量を小さくすることができるとともにレジスタ退避に要する時間を短縮することができる。
又、本発明によるマイクロコンピュータは、マイクロ命令によって退避処理を制御するレジスタ退避制御回路を具備している。レジスタ退避制御回路は、レジスタ内のコンテクストを退避するためのマイクロ命令によって命令実行部を制御する。命令実行部は、割込み処理のための命令コードがフェッチされている間に当該マイクロ命令を実行し、退避パタン識別番号で指定されたレジスタ内のコンテクストをデータメモリに退避する。これにより、レジスタの退避から割込み処理を実行するまでの時間が短縮され、プロセッサの利用効率を高めることができる。
以下、添付図面を参照しながら本発明の実施の形態を説明する。図面において同一、又は類似の参照符号は、同一、類似、又は等価な構成要素を示す。
1.第1の実施の形態
図2A及び図2Bは、本発明によるマイクロコンピュータにおける割込み処理に係る回路ブロックの第1の実施の形態における構成を示す図である。図2A及び図2Bを参照して、本発明によるマイクロコンピュータは、割込みコントローラ1(INTC1)、プロセッサ2(CPU2)、命令メモリ3、データメモリ4を具備する。
割込みコントローラ1は、優先度判定回路11、複数の割込みフラグレジスタ群12−0〜12−(n−1)、ISPRレジスタ13、制御回路14を備える。ここでnは2以上の整数である。
複数の割込みフラグレジスタ群12−0〜12−(n−1)は、対応する複数の割込み信号線INT0〜INTn−1に接続されている。複数の割込みフラグレジスタ群12−0〜12−(n−1)のそれぞれは、フラグレジスタ121、優先レベル設定レジスタ(PRレジスタ)122、及び退避パタン識別番号設定レジスタ(PTN設定レジスタ)123を備える。
複数の割込み信号線INT0〜INTn−1のそれぞれには、それぞれ異なる割込み要因に対応する割込み信号が入力される。割込みフラグレジスタ群12−0〜12−(n−1)内の各レジスタは、自身に接続された割込み信号線INTから入力される割込み信号に応じた値がセットされる。すなわち、複数の割込みフラグレジスタ群12−0〜12−(n−1)のそれぞれには、異なる割込み要因に対応した値がセットされる。
詳細には、フラグレジスタ121には、割込み要因の発生有無を示す1ビットの割込み要因フラグがセットされる。割込み要因が発生した場合、フラグレジスタ121には割込み要因フラグとして“1”がセットされ、割込み要因がない場合は“0”がセットされる。PRレジスタ122には、割込み要因に設定された優先度がセットされる。PRレジスタ122は優先度のレベル数に応じたサイズのレジスタである。例えば、4つの優先度が設定される場合、2ビットのPRレジスタ122が割込み信号線INT0〜INTn−1の各々に設けられる。
フラグレジスタ121及びPRレジスタ122の構成は、従来技術と同様であるが、本実施の形態による割込みコントローラ1には、割込み要因毎(割込み信号線INT0〜INTn−1のそれぞれ)に対応づけられたPTN設定レジスタ123が更に設けられる。PTN設定レジスタ123には、割込み要因に対応する退避パタンを特定するための退避パタン識別番号(以下、PTNと称す)が設定される。ここで退避パタンとは、割込み要因が発生したときに退避させるべきレジスタを指定する情報である。退避パタンは割込み要因毎に設定されており、割込み要因によっては同じ退避パタンが設定されていても構わない。
例えば、n本の割込み信号線INT(n個の割込み要因)に対し4つのPTN(“0”、“1”、“2”、“3”)が設定される場合、2ビットのPTN設定レジスタ123が、割込み信号線INT0〜INTn−1の各々に設けられ、それぞれに4つの退避パタン識別番号PTNのいずれかが設定される。この際、割込み信号線INTの数は4以上でも構わない。
ISPRレジスタ13には、現在実行中の割込み処理のサービスレベル(優先度)がセットされる。例えば、ISPRレジスタ13は4ビットのレジスタ“0000B”で構成される。この場合、各ビット位置は、下位から順に優先度“0”、“1”、“2”、“3”に対応し、実行中の優先度に対応するビット位置に“1”が設定される。優先度判定回路1は、割込み要因フラグがセットされた割込み要因の優先度と、現在実行中の処理の優先度とを比較し、優先度の高い処理を優先してプロセッサ2に実行させる。ここで、優先度判定回路1は、複数の割込みフラグレジスタ群12−0〜12−(n−1)を参照し、割込み要因フラグがセットされたフラグレジスタ121に対応するPRレジスタ122の優先度の中で最も高い優先度と、ISPRレジスタ13に設定された優先度とを比較する。
セットされた割込み要因フラグの中で最も高い優先度が、実行中の処理の優先度より高い場合、優先度判定回路1は、割込み要求フラグINTREQに“1”を設定するとともに、最も高い優先度の割込み要因に対応する割込みベクタINTVCT(割込みハンドラ開始番地)をプロセッサ2に出力する。この際、本実施の形態における優先度判定回路11は、当該割込み要因に対応するPTN設定レジスタ123から取得した退避パタン識別番号INTPTNをプロセッサ2に出力する。
一方、セットされた割込み要因フラグの優先度が、実行中の処理の優先度より同じ又は低い場合、優先度判定回路1は、当該割込み要因に応じた割込みベクタINTVCTの出力を待機する。この場合、割込み処理の終了に応じて、セットされた割込み要因フラグの中で最も高い優先度の割込み要因に応じた割込み要求がプロセッサ2に発行される。この際、本実施の形態における優先度判定回路11は、当該割込み要因に対応するPTN設定レジスタ123から取得した退避パタン識別番号INTPTNをプロセッサ2に出力する。
制御回路14は、プロセッサ2からの割込み受付通知INTACTに応じて、プロセッサ2で実行中の割り込み処理のサービスレベル(優先度)をISPRレジスタ13に設定する。又、制御回路14は、プロセッサ2からの割込み処理終了通知INTFINに応じて、終了した割込み処理に対応するフラグレジスタ121に“0”をセットする(リセットする)。
プロセッサ2は、割込み処理制御回路21、命令フェッチ制御回路22、命令実行部23、レジスタファイル24、レジスタ退避制御回路25、レジスタリスト選択回路26、レジスタ退避パタン番号設定レジスタユニット27を備える。
割込み処理制御回路21は、命令フェッチ制御回路22を制御して割込み処理の実行を制御するとともに、割込み処理の受付や実行終了を割込みコントローラ1に通知する。割込み処理制御回路21は、割込み要求INTREQに応じて、命令フェッチ制御回路22を制御し、割込みベクタINVCTに応じた命令コードをフェッチさせる。
命令実行部23は、命令フェッチ制御回路22でフェッチされた命令コードや、レジスタ退避制御回路25から発行されるマイクロ命令を実行する。命令実行部23は、フェッチされた命令コードよりもレジスタ退避制御回路25から発行される命令コードを優先的に実行する。
詳細には、命令実行部23は、レジスタ退避制御回路25からのマルチサイクルのマイクロ命令に応じて、レジスタファイル24内のデータをデータメモリ4に退避する。この際、レジスタ退避制御回路25は、レジスタリスト選択回路26によって選択された退避パタンに従って、退避対象となるレジスタを命令実行部23に指定する。
レジスタファイル24内のデータの退避が終了すると、命令実行部23は、命令フェッチ制御回路22によってフェッチされた命令コード(割り込み処理)を実行する。
レジスタ退避制御回路25は、割込み処理制御回路21から通知された退避パタン識別番号PTNを格納するPTNレジスタ250を備える。レジスタ退避制御回路25は、割込み処理制御回路21からの割込み要求及び退避パタン識別番号の通知を受け取ると、PTNレジスタ250に格納するとともにレジスタリスト選択回路26に出力する。レジスタリスト選択回路26は、レジスタ退避パタン番号設定レジスタユニット27内の複数の退避レジスタリスト270から、PTNレジスタ250に格納された退避パタン番号PTNに対応する退避レジスタリスト270を選択する。退避レジスタリスト270には、割込み要因毎に設定された退避対象レジスタを指定する退避パタンが退避パタン識別番号PTNに対応付けられて設定されている。レジスタリスト選択回路26は、選択した退避レジスタリスト270内の退避パタンを抽出し、レジスタ退避制御回路25に出力する。
レジスタ退避制御回路25は、レジスタの退避処理を制御するためのマイクロプログラムが格納されたRAMを有し、退避パタンを含めたマイクロ命令を命令実行部23に発行することで、割込み要因に対応する退避対象レジスタの退避処理を実行させる。
レジスタファイル24は、プログラムカウンタ(PC)を格納するPCレジスタ241、プログラムステータスワード(PSW)を格納するPSWレジスタ242、割込み処理時にPCの退避先となるEIPCレジスタ243、割込み処理時にPSWの退避先となるEIPSWレジスタ244、及び複数の汎用レジスタ240(例えば32ビットの汎用レジスタR0〜R31)を備える。
以上のような構成により、プロセッサ2は、割込み許可状態において優先度が最も高い割込み要因を受付け、当該割込み要因に対応する退避パタンで指定されたレジスタ内のコンテクストをデータメモリ4に退避する。
図3から図5を参照して、割込み要因毎に設定される退避パタン(退避対象レジスタ)のバリエーションについて説明する。図3は、割込み要因毎に設定された退避パタンの一例を示す図である。ここでは、以下の4つの退避パタンを例示する。
(1)割込み信号線INT0−15の16CHは、OS用の割込みとして使用される。この場合、OSによって破壊される可能性のある汎用レジスタR3、R20〜R31の13本のレジスタを退避する必要があり、これらを退避対象レジスタとして指定する退避パタンが退避レジスタリスト270に設定される。
(2)割込み信号線INT16−31の16CHは、ユーザ割込みAとして使用される。この場合、割込みハンドラによって破壊される可能性のある汎用レジスタ240(R0〜R4)、EIPCレジスタ243、EIPSWレジスタ244の7本のレジスタを退避する必要があり、これらを退避対象レジスタとして指定する退避パタンが退避レジスタリスト270に設定される。
(3)割込み信号線INT32−47の16CHは、ユーザ割込みBとして使用される。この場合、割込みハンドラによって破壊される可能性のある汎用レジスタ240(R10〜R14)、EIPCレジスタ243、EIPSWレジスタ244の7本のレジスタを退避する必要があり、これらを退避対象レジスタとして指定する退避パタンが退避レジスタリスト270に設定される。
(4)割込み信号線INT48−63の16CHは、ユーザ割込みCとして使用される。この場合、割込みハンドラによって破壊される可能性のある汎用レジスタ240(R3、R10〜R14、R30、R31)、EIPCレジスタ243、EIPSWレジスタ244の10本のレジスタを退避する必要があり、これらを退避対象レジスタとして指定する退避パタンが退避レジスタリスト270に設定される。
上述の(1)〜(4)の退避パタンは、それぞれ退避パタン識別番号PTNである“0”、“1”、“2”、“3”に対応付けられる。図4は、本発明に係るレジスタ退避パタン番号設定レジスタユニット27の設定例を示す図である。退避レジスタリスト270は、退避パタン識別番号PTNに対応付けられた複数のレジスタによって構成される。図4に示す一例では、退避レジスタとして、4つの退避パタン識別番号PTNに対応付けられた4つのレジスタリスト270で構成されている。退避レジスタリスト270は、例えば34bitのフリップフロップによって構成され、それぞれのビット位置は、汎用レジスタ240(R0〜R31)、及びEIPCレジスタ243、EIPSWレジスタ244に対応している。
退避レジスタリスト270において、退避対象レジスタに対応するビット位置に“1”を設定し、退避しないレジスタに対応するビット位置に“0”を設定することで、退避レジスタリスト270に退避パタンを設定することができる。レジスタ退避パタン番号設定レジスタユニット27内の各退避レジスタリスト270は、退避パタン識別番号PTN毎に設けられているため、退避パタン識別番号PTNを指定することで、退避パタンを一意に特定することができる。図4に示す一例では、上述の(1)〜(4)で示す処理に対応する退避パタンは、それぞれ、退避パタン識別番号PTN“0”〜“3”に対応付けられてレジスタ退避パタン番号設定レジスタユニット27に設定される。
例えば、退避パタン識別番号PTN“1”がプロセッサ2に通知された場合、これに対応するレジスタリスト270が選択され、“1”が設定されたレジスタ内のデータが、データメモリ4に退避される。
一方、本実施の形態における割込みコントローラ1には、割込み要因(割込み信号線)毎に退避パタン識別番号PTNが設定される。図5は、本発明に係るPTN設定レジスタ123の設定例を示す図である。図5に示す一例では、64本の割込み信号線INT0〜INT63のそれぞれに2ビットのPTN設定レジスタ123が設けられ、それぞれに割込み要因に対応する退避パタン識別番号PTNが設定される。ここでは、割込み信号線INT0〜INT15(INT番号0〜15)に対して退避パタン識別番号“0”が設定され、割込み信号線INT16〜INT31(INT番号16〜31)に対して退避パタン識別番号“1”が設定され、割込み信号線INT32〜INT47(INT番号32〜47)に対して退避パタン識別番号“2”が設定され、割込み信号線INT48〜INT63(INT番号48〜63)に対して退避パタン識別番号“3”が設定される。
本実施の形態における割込みコントローラ1は、割込み要因の発生に応じて、割込み信号線に対応する退避パタン識別番号PTNを取得し、プロセッサ2に通知する。これにより、レジスタ退避制御回路25は、通知された退避パタン識別番号PTNを利用することで、割込みの受付処理を開始すると同時に退避対象となるレジスタ(退避パタン)を特定し、退避処理を実行することができる。
次に、図6から図11Bを参照して、第1の実施の形態における割込み処理の動作の詳細を説明する。
図6は、本発明による割込み受付から復帰までの動作の一例を示すフロー図である。図6を参照して、割込み受付からメインルーチンに復帰するまでの多重割込み動作の一例を説明する。
メインルーチンを実行中に、割込みが許可されると優先度が最も高い割り込みが受付けられる(ステップS101、S102)。ここでは、発生した割込み要因の優先度“1”が、実行中のメインルーチンのサービスレベル(優先度)よりも高いため、プロセッサ2は割込みを受け付け、割込みハンドラに分岐して、割込みルーチン1を実行する。この際、プロセッサ2は、受け付けた割込み要因によって一意に決まるレジスタをデータメモリ4に退避する。
割り込みルーチン1を実行中に、割込みが許可されると、入力された割り込み信号のうち最も高い優先度が実行中ルーチンのサービスレベル(優先度)より高い場合、当該割込み処理が受付けられる(ステップS201、S202)。ここでは、新たに発生した割込み要因の優先度“0”が、実行中の割込みルーチン1の優先度“1”よりも高いため、プロセッサ2は割込みを受け付け、割込みハンドラに分岐して、割込みルーチン2を実行する。この際、プロセッサ2は、受け付けた割込み要因によって一意に決まるレジスタをデータメモリ4に退避する。
割込みルーチン2の実行中に、割込みが許可された後、割込みルーチン2が終了すると、プロセッサ2は復帰命令(RET命令)を実行する(ステップS301、S302)。ここでは、ステップS202においてデータメモリ4に退避したデータをレジスタファイル24に復帰させ、中断していた割込みルーチン1を再開する。
割込みルーチン1が終了すると、プロセッサ2は復帰命令(RET命令)を実行する(ステップS203)。ここでは、ステップS102においてデータメモリ4に退避したデータをレジスタファイル24に復帰させ、中断していたメインルーチンを再開する。
以上のように、本発明では、多重割込み処理においても、各割込み受付の際に割込み要因に応じたレジスタ内のコンテクストを退避している。このため、割込み処理によって破壊されないレジスタの退避を防止し、退避データ量の削減が実現される。
図7A〜図8Bを参照して、本発明による割込み受付処理の動作の詳細を説明する。ここでは一例として、マイクロコンピュータに図3から図5に示す退避パタン及び退避パタン識別番号PTNが設定されているものとして説明する。
図7A及び図7Bは、図6に示すステップS102、S202における割込み受付処理の動作の詳細を示すフロー図である。
図7A及び図7Bを参照して、割込みコントローラ1は、フラグレジスタ121を参照して割込み要因の検索を行い、検出した割込み要因の優先度の判定を行う(ステップS11)。ここで、割込みコントローラ1は、フラグレジスタ121に“1”が設定された割込み要因の優先度の中で最も高い優先度を選択し、当該優先度が現在実行中のサービスレベル(優先度)より高いか否かを判定する。
選択した優先度が現在のサービスレベルより高い場合、割込みコントローラ1は、当該優先度の割込み要因に対応する割込み要求INTREQに“1”をセットするとともに、当該割込み要因に対応する割込みベクタINTVCT及び退避パタン識別番号INTPTNを出力する(ステップS12Yes、S13)。一方、選択した優先度が現在のサービスレベルより低い場合、ステップS11に移行する(ステップS12No)。
プロセッサ2に対する割込みが許可されている場合(PSWの割り込み禁止フラグDI=“0”)、プロセッサ2は、“1”が設定された割込み要求INTREQに応じて、割込みベクタINTVCT及び退避パタン識別番号INTPTNを取得する(ステップS14Yes、S15)。このとき、プロセッサ2は、割込み要求INTREQを受け付けたことを示す割込み受付通知INTACTを割込みコントローラ1に通知する。一方、プロセッサ2に対して割込みが禁止されている場合(PSWの割り込み禁止フラグDI=“1”)、ステップS11に移行する(ステップS14No)。
割込みコントローラ1は、割込み受付通知INACTに応じて、プロセッサ2によって受け付けられた割込み要因のサービスレベル(優先度)をISPRレジスタ13に設定し、当該割込み要因に対応するフラグレジスタ121から割込み要因フラグを消去する(ステップS16)。
ステップS15の後、プロセッサ2は、割込み要求INTREQに応じて、現在実行中の命令を中断し割込み禁止状態となる(ステップS17〜S19)。詳細には、プロセッサ2は、割込み許可状態である場合、割込み要求INTREQに応じて現在実行中の命令を中断するとともに、中断時のPC及びPSWをEIPCレジスタ243及びEIPSWレジスタ244に保存する(ステップS17、S18)。これにより、割込み処理を実行する前のプロセッサ2の内部状態が保存される。
内部状態が保存されると、プロセッサ2は、割込み禁止状態(PSWの割り込み禁止フラグDI=“1”)に設定される(ステップS19)。又、割込みベクタINTVCTで指定された割込みハンドラのフェッチが開始される(ステップS20)。更に、割込みパタン識別信号INTPTNに対応するレジスタが選択され、レジスタ退避制御回路25によるマイクロ命令に応じて当該レジスタ内のデータがデータメモリ4に退避される(ステップS21)。尚、ステップS19〜S21の処理は同じタイミングで開始される。
割込み退避パタン識別番号INTPTNで指定されたレジスタの退避が終了すると、プロセッサ2は、割込み退避パタン識別番号INTPTNに応じた退避パタン識別番号PTNをデータメモリ4に退避する(ステップS22)。
レジスタ及び退避パタン識別番号PTNの退避が終了すると、プロセッサ2は、フェッチされた割込みハンドラを実行する(ステップS23)。割込み処理が開始されることで割込み受付処理は終了する。
以上のように、本発明では、割込み要因の発生に応じて優先度判定が行われ、受け付けられた割込みハンドラがフェッチされている間に受け付けられた割込み要因に応じたレジスタの退避が行われる。
本発明では、退避パタン識別番号PTNによって退避対象レジスタを一意に特定しているため、割込みによって破壊される恐れのあるレジスタのみを選択して退避することができる。これにより、退避に必要なメモリ容量や退避時間を削減することができる。又、退避処理は、レジスタ退避制御回路25のマイクロプログラムを実行することで実現されるため、命令コードを命令メモリ3からフェッチする必要がない。このため、退避命令のフェッチに要する時間を削減でき、退避処理に要する時間を短縮することができる。
図8A及び図8Bは、本発明による割込み処理の第1の実施の形態における動作の一例を示すタイミングチャートである。図8A及び図8Bを参照して、第1の実施の形態における割込み処理の動作の詳細を説明する。ここでは、優先度“1”の割込みが発生した後、優先度“1”より高い優先度“0”の多重割込みが発生した場合の動作について説明する。尚、ここでは、退避パタン、レジスタ退避パタン番号設定レジスタユニット27、及びPTN設定レジスタ123の各設定が、図3、図4及び図5のように設定されているものとする。又、フラグレジスタ121に設定される割込み要因フラグの優先度は、以下のとおりである。すなわち、割込み要因INT30〜INT31には優先度“1”(Pri1)、割込み要因INT32には優先度“0”(Pri0)、割込み要因INT34〜INT36には優先度“2”(Pri2)、割込み要因INT33、INT37には優先度“3”(Pri3)が設定されている。
先ず、クロックC0において、割込みコントローラ1に優先度“3”(Pri3)の割込み要因信号INT33が入力される。この際、ISPRとして“0000B”が設定されており(実行中割込み処理なし)、割込み要因信号INT34以外の割込み要因の発生はない。このため、割込みコントローラ1は、割込み要因INT33の発生から2クロック後のクロックC2において、割込み要因INT33の発生をプロセッサ2に通知する。ここでは、割込み要求フラグINTREQに“1”が設定され、割込みベクタINTVCTとして“310H”、退避パタン識別番号INTPTNとして“2H”が出力される。
又、クロックC1において、割込みコントローラ1に優先度“2”(Pri2)の割込み要因信号INT34が入力される。この際、ISPRとして“0000B”が設定されており(実行中割込み処理なし)、割込み要因信号INT34は、発生した他の割込み要因の中で最高優先度を示す。このため、割込みコントローラ1は、割込み要因INT34の発生から2クロック後のクロックC3で割込み要因INT34の発生をプロセッサ2に通知する。ここでは、割込み要求フラグINTREQに“1”が設定され、割込みベクタINTVCTとして“320H”、退避パタン識別番号INTPTNとして“2H”が出力される。
更に、クロックC2において、割込みコントローラ1に優先度“1”(Pri1)の割込み要因信号INT31が入力される。この際、ISPRとして“0000B”が設定されており(実行中割込み処理なし)、割込み要因信号INT31は発生した他の割込み要因の中で最高優先度を示す。このため、割込みコントローラ1は、割込み要因INT31の発生から2クロック後のクロックC4で割込み要因INT31の発生をプロセッサ2に通知する。ここでは、割込み要求フラグINTREQに“1”が設定され、割込みベクタINTVCTとして“2F0H”、退避パタン識別番号INTPTNとして“1H”が出力される。
クロックC0〜C3の間、プロセッサ2は割込み許可の状態であるが、プロセッサ2の内部状態によって割込みを受け付けられない状態となっている。この間、INT33、INT34は受け付けられない。クロックC4において、プロセッサ2が割込み受付可能となると、プロセッサ2は、割込みコントローラ1から出力された割込みベクタINTVCT“2F0H”(割込み要因INT31)を受付け、割込み受付通知INTACTを割込みコントローラ1に返す。
クロックC4において、割込み処理が受け付けられると、プロセッサ2の内部状態(PC、PSWの値:ins4(PC)、ins4(PSW))がEIPCレジスタ243及びEIPSWレジスタ244に保存される。
クロックC5において、割込みコントローラ1では、割込み受付通知INACTに応じて割込み要因INT31の要因フラグがクリアされる。又、プロセッサ2で受け付けられた割込み要因INT31の優先度“Pri1”に応じてISPRレジスタ13の下位2ビット目が“1”(“0010B”)に設定される。更に、割込み受付通知INACTを出力したプロセッサ2では、PSWにおける割り込み禁止フラグDIに“1”がセットされることで割込み禁止状態となる。
又、クロックC5において、割込みを受け付けた割込み処理制御回路21からの制御によって、命令フェッチ制御回路22は、割込みハンドラの命令コード(EI命令)をフェッチし、レジスタ退避制御回路25は、レジスタの退避を開始する。この際、退避パタン識別番号PTN“1H(PTN1)”がPTNレジスタ250に設定される。
詳細には、レジスタ退避制御回路25は、退避パタン識別番号INTPTN“1H(PTN1)”に応じた退避パタンをレジスタ退避パタン番号設定レジスタユニット27から抽出する。そして、レジスタ退避制御回路25は、この退避パタン“PTN1”を含む退避命令(マルチサイクルのマイクロ命令)を命令実行部23に供給する。命令実行部23は、フェッチされたEI命令を待機させ、先にレジスタ退避制御回路25からの退避命令を実行する。これにより、クロックC5〜C11において、退避パタン識別番号INTPTN“1H(PTN1)”で指定されたEIPCレジスタ243、EIPSWレジスタ244、汎用レジスタ240(R0、R1、R2、R3、R4)のそれぞれにセットされたコンテクストがデータメモリ4に退避され、クロックC12においてPTNレジスタ250内の退避パタン識別番号PTN“1H(PTN1)”がデータメモリ4に退避される。
命令実行部23は、退避対象として指定されたレジスタの退避を終了すると、フェッチされているEI命令(割込み許可命令)を実行する(クロックC13)。以降、割込みベクタ“2F0H”で指定された領域から命令コードがフェッチされ、命令実行部23において割込みハンドラが実行される。尚、クロックC13におけるEI命令の実行により、次のクロックC14で割込み禁止は解除される。
本発明では、割込みを受け付けた直後のクロックC5にEI命令がフェッチされるが、EI命令を実行せずにクロックC5からレジスタ退避制御回路25のマイクロ命令が実行される。
一方、クロックC9において、優先度“0”(Pri0)の割込み要因信号INT32が入力される。この際、ISPRとして“0010B”が設定されており(サービスレベルPri1の割込み処理中)、割込み要因信号INT32は発生した他の割込み要因の中で最高優先度を示す。このため、割込みコントローラ1は、割込み要因INT32の発生から2クロック後のクロックC11で割込み要因INT31の発生をプロセッサ2に通知する。ここでは、割込み要求フラグINTREQに“1”が設定され、割込みベクタINTVCTとして“300H”、退避パタン識別番号INTPTNとして“2H”が出力される。
クロックC14においてEI命令の実行によりプロセッサ2への割込みが許可され、クロックC16において割込みの受付が可能な状態となると、プロセッサ2は、割込みコントローラ1から出力された割込みベクタINTVCT“300H”(割込み要因INT32)を受付け、割込み受付通知INTACTを割込みコントローラ1に返す。
以降、クロックC4からC13と同様に、実行中の割込み処理を中断し、割込み要因INT32に応じたレジスタの退避及び割込み処理が実行される。
詳細には、クロックC16において、割込み処理が受け付けられると、プロセッサ2の内部状態(PC、PSWの値:int12(PC)、int12(PSW))がEIPCレジスタ243及びEIPSWレジスタ244に保存される。
クロックC17において、割込みコントローラ1では、割込み受付通知INACTに応じて割込み要因INT32の要因フラグがクリアされる。又、プロセッサ2で受け付けられた割込み要因INT32の優先度“Pri0”に応じてISPRレジスタ13の下位1ビット目が“1”(“0011B”)に設定される。更に、割込み受付通知INACTを出力したプロセッサ2では、PSWにおける割り込み禁止フラグDIに“1”がセットされることで割込み禁止状態となる。
又、クロックC17において、割込みを受け付けた割込み処理制御回路21からの制御によって、命令フェッチ制御回路22は、割込みハンドラの命令コード(EI命令)をフェッチし、レジスタ退避制御回路25は、レジスタの退避を開始する。この際、退避パタン識別番号PTN“2H(PTN2)”がPTNレジスタ250に設定される。
ここでは、レジスタ退避制御回路25は、退避パタン識別番号INTPTN“2H(PTN2)”に応じた退避パタンをレジスタ退避パタン番号設定レジスタユニット27から抽出する。そして、レジスタ退避制御回路25は、この退避パタン“PTN1”を含む退避命令(マルチサイクルのマイクロ命令)を命令実行部23に供給する。命令実行部23は、フェッチされたEI命令を待機させ、先にレジスタ退避制御回路25からの退避命令を実行する。これにより、クロックC17〜C23において、退避パタン識別番号INTPTN“2H(PTN2)”で指定されたEIPCレジスタ243、EIPSWレジスタ244、汎用レジスタ240(R10、R11、R12、R13、R14)のそれぞれにセットされたコンテクストがデータメモリ4に退避され、クロックC24においてPTNレジスタ250内の退避パタン識別番号PTN“2H(PTN2)”がデータメモリ4に退避される。
命令実行部23は、退避対象として指定されたレジスタの退避を終了すると、フェッチされているEI命令(割込み許可命令)を実行する(クロックC25)。以降、割込みベクタ“300H”で指定された領域から命令コードがフェッチされ、命令実行部23において割込みハンドラが実行される。尚、クロックC25におけるEI命令の実行により、次のクロックC26で割込み禁止は解除される。
以上のように、本発明では、割込み要因によって一意に特定されるレジスタを退避対象として指定することができるため、実行する割込み処理毎に、データ破壊を防止するための最小限のレジスタのみを退避することができる。
次に、図9A及び図9Bに示す従来例を参照して、本発明による割込み受付処理による効果について説明する。図9A及び図9Bは、従来技術による割込み処理の動作の一例を示すタイミングチャートである。
従来技術では、クロックC4においてプロセッサ200によって割込み割込みが受け付けられると、クロックC4でフェッチされた処理を取りやめ、クロックC5においてPC及びPSWの値をEIPCレジスタ及びEIPSWレジスタに保存する。そして次のクロックC5以降、EIPC、EIPSW、及び汎用レジスタを退避するための命令コードがフェッチ及び実行される。
従来技術では、レジスタ退避の命令コードをフェッチしてから実行しているため、実行中の処理を中断してからレジスタ退避が開始(実行)されるまでの期間が2クロックとなる。一方、本発明では、割込み処理制御回路21からの割込み指示に応じて動作するレジスタ退避制御回路25によるマイクロ命令によってレジスタ退避が制御されている。すなわち、実行中の処理を中断後、レジスタ退避命令をフェッチすることなく実行できるため、処理を中断してからレジスタの退避を開始するまでの期間は1クロックとなり、従来技術よりも早くレジスタ退避を開始できる。
又、本発明では、レジスタ退避を実行している間にも退避後に実行する予定の命令コード(ここではEI命令)をフェッチしているため、レジスタの退避完了後、直ぐに割込みハンドラを開始することができる。
従来技術では、割込み要因毎に退避対象となるレジスタを選択できない。このため、多重割込みが発生するようなシステムでは、どの割込みが発生しても内部状態が破壊されないように、実行され得る全ての割込み処理の退避対象レジスタを、割込み処理の内容に関係なく常に指定する必要がある。図9A及び図9Bに示す一例では、汎用レジスタR0〜R4、R10〜R14を退避対象として設定されている。この場合、例えば、割込み要因INT31によって破壊される可能性のある汎用レジスタが汎用レジスタR0〜R4であっても、汎用レジスタR10〜R14も退避され、レジスタ退避に要する時間は、クロックC6〜C16の11クロックとなる。
一方、本発明では、割込み要因毎に退避対象レジスタを選択できるため、例えば、割込み要因INT31の割込み処理を実行する場合、レジスタR0〜R4のみを選択して退避できる。この場合、レジスタ退避に要する時間は、退避パタン識別番号PTNの退避を含めてもクロックC5〜C12の8クロックとなり、従来技術に比べて大幅に短縮される。
又、従来技術では、汎用レジスタR10〜R14を退避するためのメモリ容量が無駄に使用されることとなるが、本発明では、不必要なレジスタ退避は行われないため、退避に要するメモリ容量を削減することができる。これにより、データメモリ4の容量を小さくすることができ、回路規模を縮小化することが可能となる。
次に、図10から図11Bを参照して、本発明による割込み復帰処理の動作の詳細を説明する。
図10は、図6に示すステップS203、S302における復帰処理の動作の詳細を示すフロー図である。
図10を参照して、プロセッサ2は、割込み処理のRET命令の実行により、データメモリ4内のスタックポイント(SP)が示すスタックから退避パタン識別番号PTNを読み出す(ステップS31)。続いて、読み出された退避パタン識別番号PTNに対応するレジスタが選択され、レジスタ退避制御回路25によるマイクロ命令に応じてデータメモリ4から読み出されたデータが当該レジスタに書き込まれる(ステップS32)。ここでは、レジスタ退避制御回路25が、読み出された退避パタン識別番号PTNを利用して退避パタン(ここでは復帰パタン:復帰対象となるレジスタ)を特定し、マイクロ命令によって復帰させる。これにより、割込み処理時にデータメモリ4に退避されたレジスタ値が復帰する。
ステップS32において、EIPC及びEIPSWの復帰が行われた場合、それぞれが復帰した次のタイミングで、プロセッサ2の内部状態(PC、PSW)の値が復帰される(ステップS33)。ここでは、ステップS32において復帰したEIPCレジスタ243及びEIPSWレジスタ244の値がPCレジスタ241及びPSWレジスタ242に保存される。
続いて、プロセッサ2からの割込み終了通知INTFINに応じて割込みコントローラ1におけるISPR(割込みサービスレベル)が変更される(ステップS34)。詳細には、プロセッサ2は、レジスタ退避制御回路25からのRET命令を実行すると割込み終了通知INTFINを1クロック間“1”に設定し、これに応じて割込みコントローラ1は、ISPRレジスタ13の値を変更する。
以上のように、本発明では、読み出された退避パタン識別番号PTNによって復帰対象レジスタを一意に特定しているため、退避したレジスタのみを復帰することができる。又、復帰処理は、レジスタ退避制御回路25のマイクロプログラムを実行することで実現されるため、命令コードを命令メモリ3からフェッチする必要がない。このため、復帰処理に必要な一連の命令を格納するためのメモリ容量を削減することができる。又、復帰命令のフェッチに要する時間を削減でき、復帰処理に要する時間を短縮することができる。
図11A及び図11Bは、本発明による復帰処理の実施の形態における動作の一例を示すタイミングチャートである。図11A及び図11Bを参照して、実施の形態における復帰処理の動作の詳細を説明する。ここでは一例として、図8A及び図8Bで示された割込み処理からの復帰について説明する。
先ず、クロックC0において、割込み要因INT32による割込み処理が終了し、RET命令の命令コードがフェッチされる。続くクロックC1において、プロセッサ2はレジスタ退避制御回路25によるマイクロ命令を実行し、退避パタン識別番号PTNをデータメモリ4から読み出す。詳細には、割込み処理制御回路21は、RET命令のフェッチに応じてレジスタ退避制御回路25に対し退避指示を発行する。クロックC1において、レジスタ退避制御回路25は、退避指示に応じて退避処理を行うためのマイクロ命令を命令実行部23に出力する。命令実行部23は、マイクロ命令をマルチサイクルで実行し、SPで示されたスタックから退避パタン識別番号PTN“2H(PTN2)”を読み出して、クロックC2においてPTNレジスタ250に格納する。尚、SPはマイクロ命令の実行の度に、最上位から順に更新(デクリメント)される。
クロックC3〜C9において、プロセッサ2は、復帰したPTNレジスタ250内の退避パタン識別番号PTN“2H(PTN2)”によって復帰対象レジスタを特定し、マイクロ命令による復帰処理を実行する。
詳細には、レジスタ退避制御回路25は、退避パタン識別番号INTPTN“2H(PTN2)”に応じた退避パタンをレジスタ退避パタン番号設定レジスタユニット27から抽出する。そして、レジスタ退避制御回路25は、この退避パタン“PTN2”を含む復帰命令(マルチサイクルのマイクロ命令)を命令実行部23に供給する。命令実行部23は、レジスタ退避制御回路25からの復帰命令を実行する。これにより、クロックC3〜C9において、SPで指定されたスタックからコンテクスト“R14〜R10”、PSW“int12(PSW)”、及びPC“int12(PC)”が読み出され、それぞれ次のクロックにおいて退避パタン識別番号INTPTN“2H(PTN2)”で指定された汎用レジスタ240(R14、R13、R12、R11、R10)、EIPSWレジスタ244、及びEIPCレジスタ243に復帰する。
クロックC10において、レジスタ退避制御回路25からのRET命令が命令実行部23で実行されると、プロセッサ2(割込み処理制御回路21)は復帰終了通知INTFINを1クロック間“1”に設定する。この際、プロセッサ2の内部状態(PC、PSW)は、EIPCレジスタ243及びEIPSWレジスタ244の値(int12(PC)、int12(PSW))によって復帰する。
続くクロックC11以降において、復帰したPC及びPSWに基づき、割込みによって完了していなかった処理が再開される。ここでは、クロックC11で命令コード“int12”がフェッチされ、クロックC12で実行される。
割込みによって中断された処理が終了すると、クロックC13において、RET命令の命令コードがフェッチされる。続くクロックC14において、プロセッサ2はレジスタ退避制御回路25によるマイクロ命令を実行し、退避パタン識別番号PTNをデータメモリ4から読み出す。
以降、クロックC1からC9と同様に、クロックC14からC22において、退避パタン識別番号PTN“1H(PTN1)”、データメモリ4に退避されていたコンテクスト“R4〜R0”、PSW“int4(PSW)”、及びPC“int4(PC)”が順に読み出され、それぞれ次のクロックにおいて、PTNレジスタ250、退避パタン識別番号INTPTN“1H(PTN1)”で指定された汎用レジスタ240(R4、R3、R2、R1、R0)、EIPSWレジスタ244、及びEIPCレジスタ243に復帰する。
又、クロックC24以降、各レジスタの復帰終了に応じて、割込みによって中断していたint4以降のメインルーチンが実行される。
以上のように、本実施の形態による復帰処理では、退避していた退避パタン識別番号PTNを復帰し、これを用いて復帰先のレジスタを特定することができる。このため、マイクロ命令による復帰処理が可能となり、復帰命令コードのフェッチに要する時間を削減することができる。
2.第2の実施の形態
次に、図12Aから図14を参照して、第2の実施の形態における割込み処理の動作の詳細を説明する。第1の実施の形態では、割込みハンドラの命令コードをフェッチすることなく退避処理を実行できることから、退避処理の開始が従来よりも1クロック早く実行できた。第2の実施の形態では、退避処理が従来よりも早く開始できる効果が、第1の実施の形態よりも顕著に現れる形態を説明する。
図12A及び図12Bは、本発明によるマイクロコンピュータにおける割込み処理に係る回路ブロックの第2の実施の形態における構成を示す図である。図12A及び図12Bを参照して、第2の実施の形態における命令実行部23は、多段のパイプライン構成を示す。命令実行部23以外の構成は、第1の実施の形態と同様であるので詳細な説明は省略する。
第2の実施の形態における命令実行部23は、ディスパッチステージ231(DP231)、インストラクションデコードステージ232(ID232)、演算ステージ233(EX233)、アドレス転送ステージ234(DT234)、データフェッチステージ235(DF235)、ライトバックステージ236(WB236)を備える。DP231は、命令フェッチ制御回路22によってフェッチされた命令コードをデコードし、実行ユニットを決定する。ID232は、命令コードをデコードし、 イミディエイトデータの作成と、DP231又はマイクロ命令で指定された命令レジスタからのデータの読み出しを実行する。EX233は、命令レジスタから読み出された命令を演算し、メモリアクセスのためのアドレスを生成する。DT234は、EX233で生成されたアドレスをデータメモリ4に転送し、メモリアクセスを実行する。DF235は、EX233における演算結果をデータメモリ4から取得しWB233に転送する。WB236は、EX233における演算結果を汎用レジスタ240に書き込む。
第2の実施の形態におけるマイクロコンピュータでは、パイプライン処理によって、割込み処理や復帰処理が前倒しで実行される。本発明では、レジスタ退避制御回路25によるマイクロ命令を実行することで、命令コードのフェッチ及びデコードに要する2クロック分の処理が省略される。これにより、従来に比べて少なくとも2クロック分早くレジスタの退避や復帰処理を開始することができる。
図13は、本発明による割込み処理の第2の実施の形態における動作の一例を示すタイミングチャートである。図13を参照して、第2の実施の形態における割込み処理の動作の詳細を説明する。ここでは、メインルーチンの実行中のクロックC4において割込みが発生した場合の動作について説明する。
割込みコントローラ1は、第1の実施の形態と同様に割込み要因INT31の発生から2クロック後のクロックC4で割込み要因INT31の発生をプロセッサ2に通知する。ここでは、割込み要求フラグINTREQに“1”が設定され、割込みベクタINTVCTとして“2F0H”、退避パタン識別番号INTPTNとして“1H”が出力される。
クロックC4において、プロセッサ2が割込み受付可能となると、プロセッサ2は、割込みコントローラ1から出力された割込みベクタINTVCT“2F0H”(割込み要因INT31)を受付け、割込み受付通知INTACTを割込みコントローラ1に返す。
クロックC4において、割込み処理が受け付けられると、プロセッサ2の内部状態(PC、PSWの値:ins4(PC)、ins4(PSW))がEIPCレジスタ243及びEIPSWレジスタ244に保存される。
クロックC5において、割込みを受け付けた割込み処理制御回路21からの制御によって、命令フェッチ制御回路22は、割込みハンドラの命令コード(EI命令)をフェッチし、レジスタ退避制御回路25は、レジスタの退避を開始する。この際、退避パタン識別番号PTN“1H(PTN1)”がPTNレジスタ250に設定される。
詳細には、レジスタ退避制御回路25は、退避パタン識別番号INTPTN“1H(PTN1)”に応じた退避パタンをレジスタ退避パタン番号設定レジスタユニット27から抽出する。そして、レジスタ退避制御回路25は、この退避パタン“PTN1”を含む退避命令(マルチサイクルのマイクロ命令)を命令実行部23に供給する。クロックC6において命令実行部23は、DP231においてフェッチされたEI命令を処理し、次のステージにおける処理を待機させる。
EI命令をDP231で待機させている間、レジスタ退避制御回路25からの退避命令をID232以降の各ステージにて実行する。ここでは、マイクロ命令に従ったID232からWB236までのパイプライン処理により、レジスタの退避が行われる。本一例では、退避パタン“PTN1”によってEIPCレジスタ243、EIPSWレジスタ244、及び汎用レジスタ240(R0〜R4)が退避対象レジスタとして指定されている。このため、クロックC5〜C11におけるID232、クロックC6〜C12におけるEX233、クロックC7〜C13におけるDT234の各処理によって、退避パタン“PTN1”で指定されたEIPCレジスタ243、EIPSWレジスタ244、及び汎用レジスタ240(R0〜R4)のそれぞれにセットされたコンテクストデータメモリ4に退避される。又、クロックC12におけるID232、クロックC13におけるEX233、クロックC14におけるDT234の各処理によって、PTNレジスタ250内の退避パタン識別番号PTN“1H(PTN1)”がデータメモリ4に退避される。
命令実行部23は、ID232において、退避パタン識別番号PTNを退避するためのSTPTN命令を処理すると、次のクロックC13以降で、DP231で待機しているEI命令に対してパイプライン処理にて実行する。以降、割込みベクタ“2F0H”で指定された命令ハンドラが令実行部23において実行される。
以上のように、本発明では、割込みの受付と同時に退避すべきレジスタを特定でき、マイクロ命令によってレジスタの退避処理を実行できるため、パイプライン処理におけるIFステージ及びDPステージの処理を省略することが可能となる。このため、従来よりも2クロック分だけ早くレジスタの退避を行うことができる。
図14は、退避対象レジスタが、EIPCレジスタ243、EIPSWレジスタ244、及び汎用レジスタ240(R0〜R4)である場合のパイプライン処理による割込み処理の動作の一例(従来技術)を示すタイミングチャートである。
図14に示すように、退避対象が図13に示す場合と同じレジスタである場合、従来技術では、レジスタ退避処理を実行する際、IFステージ及びDPステージを経るため、本発明に比べて、2クロック分退避処理が遅くなる。
又、第2の実施の形態における割込み処理方法においても、割込み要因によって一意に特定されるレジスタを退避対象として指定することができるため、実行する割込み処理毎に、データ破壊を防止するための最小限のレジスタのみを退避することができる。このため、第1の実施の形態と同様に、割込みに際して退避するデータ量を削減できるとともに、退避に要する時間を短縮することができる。
更に、復帰処理についても同様に、パイプライン処理により2クロック分早くレジスタの復帰処理が可能となる。
3.第3の実施の形態
次に、図15Aから図16Bを参照して、第3の実施の形態におけるマイクロコンピュータを説明する。図15A及び図15Bは、本発明によるマイクロコンピュータにおける割込み処理に係る回路ブロックの第3の実施の形態における構成を示す図である。図15A及び図15Bを参照して、第3の実施の形態におけるマイクロコンピュータは、第1の実施の形態における構成からPTN設定レジスタ123が削除され、PTN生成回路5を新たに備える構成である。これ以外の構成は、第1の実施の形態と同様であるため、その説明は省略する。
第1の実施の形態では、割込み要因INT0〜INTn−1のそれぞれに対応付けられて設けられたPTN設定レジスタ123によって割込み要因毎の退避パタン識別番号PTNが特定され、プロセッサ2に通知されていた。第3の実施の形態では、割込みベクタINTVCTに応じてパタン識別番号PTNを出力するPTN生成回路5が設けられる。PTN生成回路5は、予め用意された割込みベクタINTVCTと退避パタン識別番号PTNとを対応付けたPTNテーブルに基づいて、入力された割込みベクタINTVCTに対応する退避パタン識別番号PTNを特定し、退避パタン識別番号INTPTNとして、プロセッサ2に出力する。これにより、割込み要因INT毎にPTN設定レジスタ123を設ける必要がなくなり、回路規模を縮小することができる。
図16A及び図16Bを参照して、PTN生成回路5の構成の一例について説明する。図16Aは、PTN生成回路5が従うPTNテーブルの一例を示す図である。図16Bは、PTN生成回路5の構成の一例を示す図である。
図16Aに示す一例では、INT0〜INT15に対応する割込みベクタINTVCT“0100H”〜“01F0H”に退避パタン識別番号PTN“0”が対応付けられ、INT16〜INT31に対応する割込みベクタINTVCT“0200H”〜“02F0H”に退避パタン識別番号PTN“1”が対応付けられ、INT32〜INT47に対応する割込みベクタINTVCT“0300H”〜“03F0H”に退避パタン識別番号PTN“2”が対応付けられ、INT48〜INT61に対応する割込みベクタINTVCT“0400H”〜“04F0H”に退避パタン識別番号PTN“3”が対応付けられる。
この場合、PTN生成回路5は、16ビットの割込みベクタINTVCT“0000H”〜“1111H”の入力に応じて2ビットの退避パタン識別番号PTN“00B”、“01B”“10B”“11B”を出力する回路で構成される。例えば、図16Bに示すように、16ビットの割込みベクタ信号線INTVCT[15:0]を入力とし、2ビットの退避パタン識別番号信号線INTPTN[1:0]を出力とするPTN生成回路5が設けられる。このとき、PTN生成回路5は、図16Aで示されるような対応テーブルに従って退避パタン識別番号PTN“00B”〜“11B”を決定するように構成される。本一例では、INTVCT[10:8]=000のときINTPTN[1:0]=00(PTN“0”)、INTVCT[10:8]=001のときINTPTN[1:0]=01(PTN“1”)、INTVCT[10:8]=011のときINTPTN[1:0]=10(PTN“2”)、INTVCT[10:8]=100のときINTPTN[1:0]=11(PTN“3”)となる回路によって、図17Aの対応テーブルに従うPTN生成回路5が実現できる。
このように、PTN生成回路5によって、割込みベクタINTVCTに応じて退避パタン識別番号PTNを生成することができるため、割込み要因INT毎にレジスタを用意する必要がない。特に、図16Aに示す一例のように、退避パタンが複数の割込み要因で共通し、64本の割込み要因に対して4つの退避パタン(退避パタン識別番号PTN)が割り当てられている場合、第1の実施の形態では64本のPTN設定レジスタ123を用意する必要があるが、本実施の形態では、これらを用意せずに、退避パタン識別番号PTNを得ることができる。すなわち、本実施の形態では、退避が必要なレジスタが複数の割込み要因INTで共通する場合、PTN生成回路5の設置によるPTN設定レジスタ123の削減効果は顕著に現れる。
4.第4の実施の形態
次に、第4の実施の形態におけるマイクロコンピュータを説明する。第1の実施の形態では、レジスタ退避処理時に退避していた退避パタン識別番号PTNを用いて、復帰処理において復帰対象とするレジスタを指定していた。第4の実施の形態におけるマイクロコンピュータでは、退避パタン識別番号PTNの退避及び復帰処理は行わず、コンテクスト復帰命令(CXPOP命令)によって、復帰対象レジスタを指定する。本実施の形態におけるマイクロコンピュータの構成は、第1の実施の形態と同様であるが、レジスタ退避処理において、退避パタン識別番号PTNの退避が行われないことと、レジスタ退避制御回路25が、CXPOP命令によって復帰対象レジスタを指定する退避パタン識別番号PTNを取得することが第1の実施の形態と異なる。これ以外の構成及び動作は、第1の実施の形態と同様であるため、その説明は省略する。
図17A及び図17Bは、本発明による復帰処理の第4の実施の形態における動作を示すフロー図である。図17A及び図17Bを参照して、第4の実施の形態における復帰処理の動作の詳細を説明する。
先ず、クロックC0において、割込み要因INT32による割込み処理が終了し、CXPOP命令の命令コードがフェッチされる。CXPOP命令によって、復帰する退避パタン識別番号PTNが指定される。続くクロックC1において、レジスタ退避制御回路25はCXPOP命令に基づいて復帰対象のレジスタを指定し、マイクロ命令による復帰処理を命令実行部23に実行させる。これにより、クロックC1〜C7において、SPで指定されたスタックからコンテクスト“R14〜R10”、PSW“int12(PSW)”、及びPC“int12(PC)”が読み出され、レジスタ退避制御回路25から指定された汎用レジスタ240、EIPSWレジスタ244、EIPCレジスタ243に復帰される。
一方、クロックC1において、割込み処理が終了し、RET命令の命令コードがフェッチされる。ここで、レジスタ退避制御回路25の制御による復帰処理が終了するクロックC8まで、フェッチされたRET命令の実行は待機状態となる。
クロックC8において、レジスタ退避制御回路25からのRET命令が命令実行部23で実行されると、プロセッサ2(割込み処理制御回路21)は復帰終了通知INTFINを1クロック間“1”に設定する。この際、プロセッサ2の内部状態(PC、PSW)は、EIPCレジスタ243及びEIPSWレジスタ244の値(int12(PC)、int12(PSW))によって復帰する。
続くクロックC9以降において、復帰したPC及びPSWに基づき、割込みによって完了していなかった処理が再開される。ここでは、クロックC9で命令コード“int12”がフェッチされ、クロックC10で実行される。
割込みによって中断された処理が終了すると、クロックC11においてCXPOP命令の命令コードがフェッチされる。続くクロックC12において、プロセッサ2はレジスタ退避制御回路25によるマイクロ命令を実行し、CXPOP命令で指定された退避パタン識別番号PTNに基づいて退避処理を開始する。
以降、クロックC1からC7と同様に、クロックC12からC18において、データメモリ4に退避されていたコンテクスト“R4〜R0”、PSW“int4(PSW)”、及びPC“int4(PC)”が順に読み出され、それぞれ次のクロックにおいて、PTNレジスタ250、退避パタン識別番号INTPTN“1H(PTN1)”で指定された汎用レジスタ240(R4、R3、R2、R1、R0)、EIPSWレジスタ244、及びEIPCレジスタ243に復帰する。
又、クロックC20以降、各レジスタの復帰終了に応じて、割込みによって中断していたint4以降のメインルーチンが実行される。
以上のように、本実施の形態による復帰処理では、CXPOP命令により復帰先となるレジスタを特定できるため、退避パタン識別番号PTNの退避処理や復帰処理を省略することができる。これにより、割込み処理における退避処理や復帰処理に要するメモリ領域や時間を更に削減できる。すなわち本実施の形態によれば、更に、割込み処理や復帰処理に要する時間を短縮することが可能となる。
本発明によるマイクロコンピュータでは、割込み要因毎に設定された割込みパタン識別番号PTNによって退避(又は復帰)対象レジスタを特定できるため、命令コードをフェッチすることなくマルチサイクルによるマイクロ命令で退避処理が可能となる。このため、退避のための命令コードのフェッチに要する時間を削減できるとともに、退避対象レジスタを割込み要因に応じて特定することが可能となる。
又、退避処理を、マイクロ命令を実行することで実現できるため、多重割込みが発生しても、従来のように退避処理のためのフェッチ時間が累積することがない。このため、本発明では、多重割込みが発生した場合、従来に比べて割込み処理に係る時間が更に短縮され、プロセッサの処理能力を向上させることが可能となる。
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。上述の実施の形態では、技術的に矛盾のない範囲で組み合わせて適用できる。例えば、第2の実施の形態と第4の実施の形態を組み合わせることで、更に割込み処理や復帰処理の時間を短縮することができる。あるいは、第3の実施の形態と第2又は/及び第4の実施の形態を組み合わせることで、回路面積を縮小しつつ割込み処理や復帰処理の時間を短縮することができる。
1 :割込みコントローラ
2 :プロセッサ
3 :命令メモリ
4 :データメモリ
5 :PTN生成回路
11:優先度判定回路
12−0〜12−(n−1):割込みフラグレジスタ群
13:ISPRレジスタ
14:制御回路
21:割込み処理制御回路
22:命令フェッチ制御回路
23:令実行部
24:レジスタファイル
25:レジスタ退避制御回路
26:レジスタリスト選択回路
27:レジスタ退避パタン番号設定レジスタユニット
121:フラグレジスタ
122:PRレジスタ
123:PTN設定レジスタ
231:データポインタステージ(DP)
232:インストラクションデコードステージ(ID)
233:演算ステージ(EX)
234:アドレス転送ステージ(DT)
235:データフェッチステージ(DF)
236:ライトバックステージ(WB)
240:汎用レジスタ
241:PCレジスタ
242:PSWレジスタ
243:EIPCレジスタ
244:EIPSWレジスタ
250:PTNレジスタ
270:レジスタリスト

Claims (20)

  1. 複数のレジスタと、
    複数の割込み要因に対応する複数の退避パタンが設定された複数の退避レジスタリストと、
    受け付けられた割込み要求に応じて、命令メモリから割り込みハンドラの命令コードをフェッチする命令フェッチ制御回路と、
    受け付けられた割込み要因に対応する退避パタンを、前記複数の退避レジスタリストから取得し、前記複数のレジスタの中から前記取得した退避パタンで指定された退避レジスタ内のコンテクストをデータメモリに退避するためのマイクロ命令を発行するレジスタ退避制御回路と、
    前記フェッチされた命令コードよりも前に、前記マイクロ命令を実行する命令実行部と
    複数の割込み信号線のいずれかに入力される割込み信号に応じた割込みベクタを出力する割込みコントローラと
    を具備し、
    前記割込みコントローラは、前記複数の割込み信号線に対応して設けられた複数の退避パタン識別番号設定レジスタを有し、当該複数の退避パタン識別番号設定レジスタには前記複数の退避パタンに対応する複数の退避パタン識別番号が格納され、
    前記割込みコントローラは、第1割込み信号線から入力される割込み信号に応じた割込みベクタと、前記第1割込み信号線に対応する退避パタン識別番号設定レジスタ内の退避パタン識別番号とを対応付けて出力し、
    前記レジスタ退避制御回路は、前記退避パタン識別番号に応じた退避パタンを前記複数の退避レジスタリストから取得することを特徴とする
    マイクロコンピュータ。
  2. 請求項に記載のマイクロコンピュータにおいて、
    前記レジスタ退避制御回路は、前記退避レジスタ内のコンテクストの退避に利用した退避パタンに対応する退避パタン識別番号を前記データメモリに退避し、復帰処理の際、前記データメモリに退避したデータを、前記退避した退避パタン識別番号に対応する退避パタンで指定された前記退避レジスタに格納する
    マイクロコンピュータ。
  3. 請求項1又は2に記載のマイクロコンピュータにおいて、
    前記レジスタ退避制御回路は、他の処理の終了後に発行されるポップ命令に応じて復帰先の前記退避レジスタを特定し、前記データメモリに退避したデータを復帰するためのマイクロ命令を発行し、
    前記命令実行部は、前記データメモリに退避したデータを復帰するためのマイクロ命令を実行する
    マイクロコンピュータ。
  4. 請求項1からのいずれか1項に記載のマイクロコンピュータにおいて、
    前記命令実行部は、前記レジスタ退避制御回路から発行されるマイクロ命令をパイプライン処理する
    マイクロコンピュータ。
  5. 請求項1から4のいずれか1項に記載のマイクロコンピュータにおいて、
    前記複数の割込み信号線のいずれかは、同じ退避パタンに対応付けられる
    マイクロコンピュータ。
  6. 請求項1から5のいずれか1項に記載のマイクロコンピュータにおいて、
    前記レジスタ退避制御回路は、前記マイクロ命令を格納するメモリを具備する
    マイクロコンピュータ。
  7. 複数のレジスタと、
    複数の割込み要因に対応する複数の退避パタンが設定された複数の退避レジスタリストと、
    受け付けられた割込み要求に応じて、命令メモリから割り込みハンドラの命令コードをフェッチする命令フェッチ制御回路と、
    受け付けられた割込み要因に対応する退避パタンを、前記複数の退避レジスタリストから取得し、前記複数のレジスタの中から前記取得した退避パタンで指定された退避レジスタ内のコンテクストをデータメモリに退避するためのマイクロ命令を発行するレジスタ退避制御回路と、
    前記フェッチされた命令コードよりも前に、前記マイクロ命令を実行する命令実行部と、
    複数の割込み信号線のいずれかに入力される割込み信号に応じた割込みベクタを出力する割込みコントローラと、
    前記複数の退避パタンに対応する複数の退避パタン識別番号と、割込みベクタとが対応付けられて設定された退避パタン識別番号設定テーブルに基づいて、前記割込みコントローラから出力された割込みベクタに対応する退避パタン識別番号を出力する退避パタン識別番号生成回路と
    を具備し、
    前記レジスタ退避制御回路は、前記出力された退避パタン識別番号に対応する退避パタンを前記複数の退避レジスタリストから取得することを特徴とする
    マイクロコンピュータ。
  8. 請求項7に記載のマイクロコンピュータにおいて、
    前記レジスタ退避制御回路は、前記退避レジスタ内のコンテクストの退避に利用した退避パタンに対応する退避パタン識別番号を前記データメモリに退避し、復帰処理の際、前記データメモリに退避したデータを、前記退避した退避パタン識別番号に対応する退避パタンで指定された前記退避レジスタに格納する
    マイクロコンピュータ。
  9. 請求項7又は8に記載のマイクロコンピュータにおいて、
    前記レジスタ退避制御回路は、他の処理の終了後に発行されるポップ命令に応じて復帰先の前記退避レジスタを特定し、前記データメモリに退避したデータを復帰するためのマイクロ命令を発行し、
    前記命令実行部は、前記データメモリに退避したデータを復帰するためのマイクロ命令を実行する
    マイクロコンピュータ。
  10. 請求項7から9のいずれか1項に記載のマイクロコンピュータにおいて、
    前記命令実行部は、前記レジスタ退避制御回路から発行されるマイクロ命令をパイプライン処理する
    マイクロコンピュータ。
  11. 請求項7から10のいずれか1項に記載のマイクロコンピュータにおいて、
    前記複数の割込み信号線のいずれかは、同じ退避パタンに対応付けられる
    マイクロコンピュータ。
  12. 請求項7から11のいずれか1項に記載のマイクロコンピュータにおいて、
    前記レジスタ退避制御回路は、マイクロ命令を格納するメモリを具備する
    マイクロコンピュータ
  13. 複数の退避レジスタリストに複数の割込み要因に対応する複数の退避パタンを設定するステップと、
    命令フェッチ制御回路が、プロセッサにおいて受け付けられた割込み要求に応じて、命令メモリから割り込みハンドラの命令コードをフェッチするステップと、
    レジスタ退避制御回路が、プロセッサにおいて受け付けられた割込み要因に対応する退避パタンを、前記複数の退避レジスタリストから取得するステップと、
    前記レジスタ退避制御回路が、前記取得した退避パタンで指定された退避レジスタ内のコンテクストをデータメモリに退避するためのマイクロ命令を発行するステップと、
    命令実行部が、前記フェッチされた命令コードよりも前に、前記マイクロ命令を実行するステップと
    割込みコントローラが複数の割込み信号線のいずれかに入力される割込み信号に応じた割込みベクタを出力するステップと、
    前記複数の割込み信号線に対応して設けられた複数の退避パタン識別番号設定PTNレジスタに、前記複数の退避パタンに対応する複数の退避パタン識別番号を格納するステップと
    を具備し、
    前記退避パタンを取得するステップは、
    前記割込みコントローラが、第1割込み信号線から入力される割込み信号に応じた割込みベクタと、前記第1割込み信号線に対応する退避パタン識別番号設定PTNレジスタ内の退避パタン識別番号とを対応付けて出力するステップと、
    前記レジスタ退避制御回路が、前記出力された退避パタン識別番号に対応する退避パタンを前記複数の退避レジスタリストから取得するステップと
    を備える
    割込み制御方法。
  14. 請求項13に記載の割込み制御方法において、
    前記レジスタ退避制御回路が、前記退避レジスタ内のコンテクストの退避に利用した退避パタンに対応する退避パタン識別番号を前記データメモリに退避するステップと、
    復帰処理の際、前記レジスタ退避制御回路が、前記データメモリに退避したデータを、前記退避した退避パタン識別番号に対応する退避パタンで指定された前記退避レジスタに格納するステップと
    を更に具備する
    割込み制御方法。
  15. 請求項13又は14に記載の割込み制御方法において、
    前記レジスタ退避制御回路が、他の処理の終了後に発行されるポップ命令に応じて復帰先の前記退避レジスタを特定し、前記データメモリに退避したデータを復帰するためのマイクロ命令を発行するステップと、
    前記命令実行部が、前記データメモリに退避したデータを復帰するためのマイクロ命令を実行するステップと
    を更に具備する
    割込み制御方法。
  16. 請求項13から15のいずれか1項に記載の割込み制御方法において、
    前記コンテクストを退避するためのマイクロ命令を実行するステップは、前記命令実行部が、前記レジスタ退避制御回路から発行されるマイクロ命令をパイプライン処理するステップを備える
    割込み制御方法。
  17. 複数の退避レジスタリストに複数の割込み要因に対応する複数の退避パタンを設定するステップと、
    命令フェッチ制御回路が、プロセッサにおいて受け付けられた割込み要求に応じて、命令メモリから割り込みハンドラの命令コードをフェッチするステップと、
    レジスタ退避制御回路が、プロセッサにおいて受け付けられた割込み要因に対応する退
    避パタンを、前記複数の退避レジスタリストから取得するステップと、
    前記レジスタ退避制御回路が、前記取得した退避パタンで指定された退避レジスタ内のコンテクストをデータメモリに退避するためのマイクロ命令を発行するステップと、
    命令実行部が、前記フェッチされた命令コードよりも前に、前記マイクロ命令を実行するステップと、
    割込みコントローラが複数の割込み信号線のいずれかに入力される割込み信号に応じた割込みベクタを出力するステップと
    を具備し、
    前記退避パタンを取得するステップは、
    退避パタン識別番号生成回路が、前記複数の退避パタンに対応する複数の退避パタン識別番号と、割込みベクタとが対応付けられて設定された退避パタン識別番号設定PTNテーブルに基づいて、前記割込みコントローラから出力された割込みベクタに対応する退避パタン識別番号を出力するステップと、
    前記レジスタ退避制御回路が、前記出力された退避パタン識別番号に対応する退避パタンを前記複数の退避レジスタリストから取得するステップと
    を備える
    割込み制御方法。
  18. 請求項17に記載の割込み制御方法において、
    前記レジスタ退避制御回路が、前記退避レジスタ内のコンテクストの退避に利用した退避パタンに対応する退避パタン識別番号を前記データメモリに退避するステップと、
    復帰処理の際、前記レジスタ退避制御回路が、前記データメモリに退避したデータを、
    前記退避した退避パタン識別番号に対応する退避パタンで指定された前記退避レジスタに格納するステップと
    を更に具備する
    割込み制御方法。
  19. 請求項17又は18に記載の割込み制御方法において、
    前記レジスタ退避制御回路が、他の処理の終了後に発行されるポップ命令に応じて復帰
    先の前記退避レジスタを特定し、前記データメモリに退避したデータを復帰するためのマイクロ命令を発行するステップと、
    前記命令実行部が、前記データメモリに退避したデータを復帰するためのマイクロ命令
    を実行するステップと
    を更に具備する
    割込み制御方法。
  20. 請求項17から19のいずれか1項に記載の割込み制御方法において、
    前記コンテクストを退避するためのマイクロ命令を実行するステップは、前記命令実行
    部が、前記レジスタ退避制御回路から発行されるマイクロ命令をパイプライン処理するス
    テップを備える
    割込み制御方法。
JP2010091688A 2010-04-12 2010-04-12 マイクロコンピュータ及び割込み制御方法 Expired - Fee Related JP5507317B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2010091688A JP5507317B2 (ja) 2010-04-12 2010-04-12 マイクロコンピュータ及び割込み制御方法
US13/084,946 US8959317B2 (en) 2010-04-12 2011-04-12 Processor and method for saving designated registers in interrupt processing based on an interrupt factor
CN201110094387.8A CN102214085B (zh) 2010-04-12 2011-04-12 微型计算机和中断控制方法
US14/584,778 US9116870B2 (en) 2010-04-12 2014-12-29 Process and method for saving designated registers in interrupt processing based on an interrupt factor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010091688A JP5507317B2 (ja) 2010-04-12 2010-04-12 マイクロコンピュータ及び割込み制御方法

Publications (2)

Publication Number Publication Date
JP2011221867A JP2011221867A (ja) 2011-11-04
JP5507317B2 true JP5507317B2 (ja) 2014-05-28

Family

ID=44745408

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010091688A Expired - Fee Related JP5507317B2 (ja) 2010-04-12 2010-04-12 マイクロコンピュータ及び割込み制御方法

Country Status (3)

Country Link
US (2) US8959317B2 (ja)
JP (1) JP5507317B2 (ja)
CN (1) CN102214085B (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6081300B2 (ja) * 2013-06-18 2017-02-15 株式会社東芝 情報処理装置及びプログラム
JP6803504B2 (ja) * 2016-08-09 2020-12-23 株式会社ソフイア 遊技機
JP2018180768A (ja) * 2017-04-07 2018-11-15 ルネサスエレクトロニクス株式会社 半導体装置
CN108804139B (zh) * 2017-06-16 2020-10-20 上海兆芯集成电路有限公司 可编程设备及其操作方法和计算机可用介质
CN107770090B (zh) * 2017-10-20 2020-05-01 深圳市楠菲微电子有限公司 用于控制流水线中寄存器的方法和装置
CN108182083B (zh) * 2017-12-06 2021-12-24 中国航空工业集团公司西安航空计算技术研究所 一种支持断点调试的取指译码电路
CN108037951B (zh) * 2017-12-27 2020-11-20 山东师范大学 一种dtp处理器的中断快速切换方法及装置
CN111353595A (zh) * 2018-12-20 2020-06-30 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN109933549B (zh) * 2019-01-30 2022-04-05 中山大学 一种适用于risc-v处理器的中断控制器

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3440619A (en) * 1967-07-14 1969-04-22 Ibm Control system for maintaining register contents during interrupt and branch conditions in a digital computer
US4020471A (en) * 1975-06-30 1977-04-26 Honeywell Information Systems, Inc. Interrupt scan and processing system for a data processing system
JPH056281A (ja) * 1990-10-04 1993-01-14 Nec Corp 情報処理装置
CA2060555A1 (en) * 1991-04-24 1992-10-25 Robert J. Bullions, Iii System and method for draining an instruction pipeline
EP0945787A3 (en) * 1991-07-08 2008-12-31 Seiko Epson Corporation Risc microprocessor architecture implementing fast trap and exception state
JP3619939B2 (ja) * 1994-09-26 2005-02-16 株式会社ルネサステクノロジ 中央処理装置
JPH09134292A (ja) 1995-11-10 1997-05-20 Hitachi Ltd 割り込み制御方法
US6298370B1 (en) * 1997-04-04 2001-10-02 Texas Instruments Incorporated Computer operating process allocating tasks between first and second processors at run time based upon current processor load
JP2005275703A (ja) * 2004-03-24 2005-10-06 Toshiba Corp プロセッサ及びコンテキスト切り替え方法
CN101639516B (zh) * 2008-07-31 2013-08-28 华为技术有限公司 一种数据处理方法、控制器及系统

Also Published As

Publication number Publication date
US20150113248A1 (en) 2015-04-23
US20110252221A1 (en) 2011-10-13
CN102214085A (zh) 2011-10-12
JP2011221867A (ja) 2011-11-04
CN102214085B (zh) 2015-03-18
US8959317B2 (en) 2015-02-17
US9116870B2 (en) 2015-08-25

Similar Documents

Publication Publication Date Title
JP5507317B2 (ja) マイクロコンピュータ及び割込み制御方法
JP5405320B2 (ja) 仮想計算機制御装置、仮想計算機制御方法及び仮想計算機制御プログラム
US10489188B2 (en) Method for reducing interrupt latency in embedded systems
TW200540634A (en) Processor system, dma control circuit, dma control method, control method for DMA controller, graphic processing method, and graphic processing circuit
US20130036426A1 (en) Information processing device and task switching method
JPWO2009022371A1 (ja) タスク処理装置
JPS6298434A (ja) デ−タ処理システム
US6647488B1 (en) Processor
JP2006243864A (ja) プロセッサおよび情報処理方法
JP2007206933A (ja) 情報処理装置、情報処理装置におけるブートローダ生成方法およびプログラム転送方法
JP2008537248A (ja) デジタルシグナルプロセッサ上でのマルチタスクの実施
JP2010272072A (ja) メモリ管理装置
JP5233078B2 (ja) プロセッサ及びその処理方法
CN108628639B (zh) 处理器和指令调度方法
US7702836B2 (en) Parallel processing device and exclusive control method
US20030018842A1 (en) Interrupt controller
JPH056281A (ja) 情報処理装置
JP5017784B2 (ja) プロセッサ及びこのプロセッサ適用される割込み処理制御方法
US8255672B2 (en) Single instruction decode circuit for decoding instruction from memory and instructions from an instruction generation circuit
JP2011150636A (ja) マイクロプロセッサ及びその制御方法
JP2005275703A (ja) プロセッサ及びコンテキスト切り替え方法
JP4389797B2 (ja) プロセッサおよび情報処理方法
JP2876791B2 (ja) 例外処理装置および例外処理方法
JP2018120484A (ja) Dma転送制御装置、dma転送制御方法、及び、dma転送制御プログラム
CN114579264A (zh) 处理装置、处理系统和处理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130215

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131219

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140214

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: 20140304

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140319

R150 Certificate of patent or registration of utility model

Ref document number: 5507317

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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