JP4114946B2 - データ処理装置 - Google Patents

データ処理装置 Download PDF

Info

Publication number
JP4114946B2
JP4114946B2 JP2007208214A JP2007208214A JP4114946B2 JP 4114946 B2 JP4114946 B2 JP 4114946B2 JP 2007208214 A JP2007208214 A JP 2007208214A JP 2007208214 A JP2007208214 A JP 2007208214A JP 4114946 B2 JP4114946 B2 JP 4114946B2
Authority
JP
Japan
Prior art keywords
register
bank
interrupt
instruction
return
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 - Lifetime
Application number
JP2007208214A
Other languages
English (en)
Other versions
JP2007317232A (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 Technology Corp
Original Assignee
Renesas Technology 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 Technology Corp filed Critical Renesas Technology Corp
Priority to JP2007208214A priority Critical patent/JP4114946B2/ja
Publication of JP2007317232A publication Critical patent/JP2007317232A/ja
Application granted granted Critical
Publication of JP4114946B2 publication Critical patent/JP4114946B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)

Description

本発明は、レジスタバンクを有するデータ処理装置、更には、割り込み例外(割り込み及び例外を総称する)処理やタスクスイッチに伴うレジスタセットの退避及び復帰に関し、例えばシングルチップマイクロコンピュータに適用して有効な技術に関する。
割り込み例外処理、或はマルチタスク環境下でタスク切換え(タスクスイッチ)が行なわれるとき、元の状態に復帰可能なように、その時の汎用レジスタやステータスレジスタ等の所定のレジスタセットに対する退避が行なわれる。退避先として、外部メモリ等に割当てられるスタック領域を利用することも可能であるが、レジスタセットの退避及び復帰を高速化するためにレジスタバンクを用いることができる。レジスタバンク方式を利用することにより割込み応答時間の短縮が可能になる。
特許文献1には、汎用レジスタを内蔵RAM(ランダム・アクセス・メモリ)でバンク構成とし、そのための専用バスを設けたシングルチップマイクロコンピュータについて記載がある。特許文献2にはレジスタファイルと内蔵RAMの間に専用バスを設けたレジスタバンク構成の情報処理装置が記載される。特許文献3にはレジスタファイル構成として内蔵RAMとの間に専用のバスを設けた拡張中央処理装置について記載がある。
特開平05−165641号公報 特開平06−309169号公報 特開平05−265753号公報
本発明者は割込み応答時間の短縮化を契機としてレジスタバンク方式について検討した。先ず、レジスタバンクに対するオーバーフローの考慮である。割り込み発生時、割り込み処理ルーチンの中でも、割り込み要因フラグクリアなどの緊急度の高いクリティカルなセクションだけその割り込みレベルでマスクし、その処理が終了した後は同じあるいは低いレベルの割り込みの再入力を受け付ける場合がある。このような、割り込みレベルを意図的に低くして割り込み処理を行う場合には、割り込みレベル数以上の割り込みが発生するため、割り込みレベル数分用意してあるレジスタバンクがオーバーフローしてしまう。そのため、オーバーフロー時の対策を施していないCPU(中央処理装置)では不所望にその動作が停止する虞がある。
第2は、OS(オペレーティング・システム)を用いる場合に、割り込みでタスクスイッチを行なう場合についての考慮である。即ち、タスクスイッチに際して、タスク切換え前のレジスタセットのデータをOS内部テーブルに退避した後、切換え後のタスクに関するレジスタセットのデータをOS内部テーブルからレジスタセットに回復することが必要である。そうしなければ、再び元のタスクに戻ることができない。
本発明はデータ処理装置におけるレジスタバンクの退避・復帰に関し、動作不良の虞を回避する技術を提供することにある。
本発明の具体的な目的は、レジスタバンクのオーバーフローによる不所望な動作停止を生ずることのないデータ処理装置を提供することにある。
本発明の別の具体的な目的は、タスクスイッチを伴う場合、タスクスイッチを伴わない場合の何れに対しても割り込みからの復帰を円滑に、且つ無駄無く行なうことができ、マルチタスク処理への適応性に優れたデータ処理装置を提供することにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
〔1〕ステータスレジスタと複数のレジスタバンクを利用して命令を実行するデータ処理装置において、前記ステータスレジスタは前記複数のレジスタバンクのオーバーフローを示すためのオーバーフローフラグを有する。
本発明の更に具体的な形態として、データ処理装置は、ステータスレジスタと所定のレジスタセットを有する中央処理装置と、前記所定のレジスタセットに応ずる複数のレジスタバンクとを有し、前記複数のレジスタバンクは割り込み発生時に前記所定のレジスタセットが保有する記憶情報の退避に利用され、前記ステータスレジスタは複数のレジスタバンクのオーバーフローを示すためのオーバーフローフラグを有する。
上記オーバーフローフラグを設けることにより、レジスタセットへのデータ復帰処理では、レジスタバンクのオーバーフローを認識することができる。
例えば、レジスタバンクの全てのバンクに退避が行われている状態で割り込み例外(割り込み要求)が発生し、受け付けられた割り込み例外がレジスタバンクの使用を許可されているとき、中央処理装置は、スタック領域にレジスタセットのデータを退避させ、前記オーバーフローフラグにオーバーフロー状態を反映させる。そして、オーバーフローフラグがオーバーフロー状態になっているとき、レジスタバンクからレジスタセットへのデータ復帰が指示されると、中央処理装置はスタック領域からレジスタセットにデータを復帰する。
ここで注意すべきは、割り込み例外処理においては、少なくともオーバーフローフラグを持つステータスレジスタとプログラムカウンタをスタック領域に退避する動作を行い、かつ、割り込み復帰命令(RTE命令)は、前記スタック領域から、プログラムカウンタとステータスレジスタの値を復帰する動作を行うことが条件である。すなわち、割り込みサービス処理の多重処理を考えた場合でも、どの割り込みサービスルーチン中からでも、ステータスレジスタ中のオーバーフローフラグ(オーバーフロービット)を観測すれば、当該割り込みによってレジスタバンクがオーバーフローしたかどうかを知ることができる。
ただし、OSによるタスク切換えを割り込みで行っている場合は、割り込みサービスルーチンからの復帰命令(RTE命令)の実行前に、切換え先タスクに対応するステータスレジスタ値を復帰値が置かれるスタック領域にあらかじめ準備しておく必要がある。しかし、これはOSでのタスク切換え処理での必然の動作であり、今回の発明によって余分に増える処理とはならない。
これにより、レジスタバンクのオーバーフローによるデータ処理装置の不所望な動作停止を抑止することができる。
レジスタバンクの全てのバンクに退避が行われている状態で割り込み例外が発生し、受け付けられた割り込み例外がレジスタバンクの使用を許可されていないときは、中央処理装置は所定の例外処理ルーチンを実行すればよい。
前記複数のレジスタバンクをRAMで構成し、前記RAMと所定のレジスタセットの接続に専用化されたバスを採用し、前記バスには前記レジスタセットに含まれる複数のレジスタ単位で並列にデータ転送可能なビット数を与える。専用化されたバスによるレジスタセットの待避処理に並行して割込み例外処理の実行が可能になり、割り込み応答速度を更に高速化可能になる。要するに、複数レジスタ同時退避により、割り込み処理時間(割り込み応答性能・割り込み復帰性能)を向上させることができる。バンク領域を専用バス接続し並列処理することにより、見かけ上レジスタ退避・復帰処理オーバヘッドを低減する事ができる。
〔2〕割り込み例外処理を利用してOSによるタスクスイッチを行なう場合に着目する。前記中央処理装置は、割り込み例外処理の発生に応答して前記レジスタバンクへの退避処理を開始する。割り込みサービスルーチンから復帰するとき、前記中央処理装置は、レジスタ復帰命令(RESBANK命令)を実行し、最後に退避されたレジスタバンクから前記所定のレジスタセットに記憶情報を復帰する。このとき、割り込みサービスルーチンからの復帰先が別のタスクである場合、すなわちタスクスイッチを行なう場合、OSにより、中央処理装置はスイッチ前のタスクの汎用レジスタをOSの管理領域に保存し、スイッチ後のタスクに関する保存データをOSの管理領域からレジスタセットに復帰する。この後、中央処理装置は、OSによって調整された、スタック領域に格納されているプログラムカウンタの値とステータスレジスタの値をそれぞれ復帰させてスイッチ先のプログラム実行処理を開始可能にするリターン命令(RTE命令)を実行する。ここで重要なことは、割り込みによりレジスタバンクへレジスタ群の値を退避する中央処理装置において、OSによるタスク切換えを行う場合は、その中央処理装置は、前記レジスタ復帰命令(RESBANK命令)とリターン命令(RTE命令)を別々に持つ必要がある。タスクスイッチを全く伴わなければ、上記レジスタ回復命令の処理に続くOSによるタスクスイッチ用の処理は不要であり、前記レジスタ復帰命令の処理とリターン命令の処理を分ける必要がなく、割り込みサービスルーチンからの復帰命令(RTE命令)において、レジスタバンクからの復帰動作も一括して実施すればいい。しかし前述のとおり双方の命令を一つの命令にすると、タスク切換えを行なうことが困難になる。
本発明の更に具体的な形態では、前記データ処理装置はOSの制御に基づいて割り込み例外処理が可能にされ、また、割り込み例外処理を用いてタスクスイッチが可能にされる。割り込み例外処理では、前記所定のレジスタセットをレジスタバンクに退避して、割り込み例外処理ルーチン(割り込みサービスルーチン)を実行し、割り込み例外処理ルーチンからの復帰において、前記レジスタ復帰命令(RESBANK命令)を実行して最後の退避に利用されたレジスタバンクのデータをレジスタセットに回復し、前記リターン命令(RTE命令)を実行して元のプログラム実行処理に復帰する。割り込み例外処理を用いたタスクスイッチでは、割り込み例外処理ルーチンからの復帰において、前記レジスタ復帰命令を実行してスイッチ元タスクにおけるレジスタバンクのデータをレジスタセットに復帰し、復帰データをOSが管理する領域に保存し、スイッチ先タスクのレジスタセットデータをOS管理領域から前記所定のレジスタセットに回復し、前記リターン命令を実行して、スイッチ先タスクのプログラム実行処理に移行する。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、レジスタバンクのオーバーフローフラグを採用するから、レジスタセットへのデータ復帰処理では、レジスタバンクのオーバーフローを認識することができる。これにより、レジスタバンクのオーバーフローによるデータ処理装置の不所望な動作停止を抑止することができる。
バンク復帰命令をリターン命令とは独立のバンク回復専用命令とするから、タスクスイッチを伴う場合、タスクスイッチを伴わない場合の何れに対しても割り込みからの復帰を円滑に、且つ無駄無く行なうことができ、マルチタスク処理への適応性に優れる。
複数レジスタ同時退避により、割り込み処理時間を向上させることができる。バンク領域を専用バス接続し並列処理することにより、見かけ上レジスタ退避・復帰処理のオーバヘッドを低減する事ができる。
《レジスタバンク》
図1には本発明の一例に係るデータプロセッサのブロック図が例示される。同図に示されるデータプロセッサ1は、例えばCMOS集積回路製造技術により単結晶シリコンのような1個の半導体基板(半導体チップ)に形成されている。
同図に示されるデータプロセッサ1は、代表的に示されたCPU2、バンクメモリ3、割り込みコントローラ(INTC)4、バスステートコントローラ(BSC)5、ROM(リード・オンリ・メモリ)6、及びRAM7を有して成る。
CPU2はデータバス10及びデータアドレスバス11を介してRAM7に、命令データバス12及び命令アドレスバス13を介してROM6に接続される。RAM7はCPU2のワーク領域もしくはデータ一時記憶領域とされる。ROM6はCPU2の動作プログラムとして例えばOSや制御プログラムが格納される。前記バス10〜13はバスステートコントローラ5を介して周辺データバス14及び周辺アドレスバス15にインタフェースされ、ここには割り込みコントローラ4、I/Oポート16などの外部入出力回路が設けられる。前記バンクメモリ3は複数のレジスタバンクRBK0〜RBKiを構成し、レジスタバンク専用バス17でCPU2に接続される。前記I/Oポート16は図示を省略するデータプロセッサ外部のバスと接続される。
CPU2は、命令レジスタ20にフェッチした命令を命令デコーダ21で解読し、解読結果にしたがってレジスタ回路23、演算回路24、アドレス演算回路25及びシステムコントローラ26などを制御して、その命令を実行する。アドレス演算回路25は、プログラムカウンタ(PC)27が保有する命令アドレスやレジスタ回路23が保有するアドレス情報などに従って、命令アドレスを命令アドレスバス13に、オペランドアドレスをデータアドレスバス11に出力する。前記割り込みコントローラ4はデータプロセッサの内外からの割り込み要求を入力し、割り込み優先レベルなどにしたがって割込み要求を調停し、割込み要求を受付けるとCPU2に割り込み信号IRQをアサートする。割り込み信号IRQとしては、割り込みベクタ番号(IVN)の情報を含む複数の信号線からなる形態が考えられる。
演算回路24は夫々図示を省略する算術論理演算器、シフタ、乗算器等によって構成される。レジスタ回路23は、汎用レジスタR0〜R15(SP)、乗算レジスタMACH、MACL、プロシージャレジスタPR、グローバルベースレジスタGBR、リードデータバッファレジスタRBR、ライトデータバッファレジスタWDR、及びステータスレジスタSR等を有する。
前記汎用レジスタR0〜R15は、アドレスレジスタとしてもデータレジスタとしても使用することができる。汎用レジスタR15には、汎用レジスタとしての機能に加えて、スタックポインタSPとしての機能が割当てられる。割り込み時やサブルーチンコール時の戻り先アドレスや汎用レジスタなどに対する退避、復帰は、スタックポインタSPを用いてスタック領域との間で行なわれる。前記スタックポインタSPはスタック領域のスタック可能なアドレスを指す。スタック領域は例えば前記RAM7、又は前記I/Oポート16に接続される外部バス上のメモリ(図示せず)に割当てられる。
プログラムカウンタ(PC)27はCPU2が実行する命令のアドレスを示す。ステータスレジスタSRは、CPU2の状態を示すレジスタである。プロシージャレジスタPRはサブルーチンコール時に戻り先アドレスを格納する。
図2にはレジスタバンクと退避・復帰対象のレジスタセットが例示される。ここでは、割り込み処理におけるレジスタ退避・復帰を、従来のスタック領域ではなく、レジスタ退避専用バンク領域としてレジスタバンクRBK0〜RBKiを利用する。レジスタバンクRBK0〜RBKiはバンクメモリ3のメモリセルアレイに割当てられる。バンクメモリ3は例えばSRAM(スタティック・ランダム・アクセス・メモリ)から構成される。
退避・復帰対象レジスタは、割り込みによってその内容が破壊される虞のある所定のレジスタセットとされ、例えば、汎用レジスタR0〜R14、グローバルベースレジスタGBR、乗算レジスタMACH、MACL、プロシージャレジスタPR、およびデバック情報としての当該割り込みに対応するベクタ番号(IVN)とされる。レジスタバンクRBK0〜RBKiには夫々前記レジスタセットを保持することができる記憶容量が割当てられる。
レジスタバンクRBK0〜RBKiの数は割り込みがネスト(割り込みが多重)する度にレジスタ退避・復帰する必要があるため、最低限、割り込みレベル数分だけレジスタバンクを用意することが望ましい。例えば割込み優先レベルが15段階あれば、レジスタバンクRBK0〜RBKiは15個備えられるべきである。
前記所定のレジスタセットR0〜R14、GBR、MACH、MACL、PR、及びベクタ番号IVNは割り込み発生時のCPU処理で自動的に所定のレジスタバンクにストアされる。レジスタバンクにストアされた所定のレジスタセットのデータ(レジスタセットデータ)をレジスタセットに復帰する処理はCPU2が所定のレジスタ復帰命令を実行する事により行なわれる。ここでは所定のレジスタ復帰命令としてRESBANK命令を採用する。
《退避・復帰用の制御レジスタ》
図3には所定のレジスタセットに対する退避・復帰用の制御レジスタの一例が示される。割り込みコントローラ4にはバンクコントロールレジスタIBCR、バンク番号レジスタIBNRが設けられる。バンクコントロールレジスタIBCRは割り込み優先レベル或は割込要因(割り込み要求)に対して、レジスタバンクRBK0〜RBKi使用の許可/禁止を設定するレジスタである。ここでは、割り込み優先レベルが1〜15とされ、レベルが大きいほど割り込み優先度が高いとされ、0はマスクされる。さらに、その夫々に対して、レジスタバンク使用の許可/禁止を設定するE1〜E15がビット1〜ビット15に割当てられる。“0”は使用禁止、“1”は使用許可を意味する。ビット0は予約ビットとされる。
図3に示されるバンク番号レジスタIBNRは、マスタイネーブルME、バンク番号BNのフィールドを有する。マスタイネーブルMEの“00”は全ての割り込みでレジスタバンクの使用を禁止することを意味する。このとき、バンクコントロールレジスタIBCRの状態は無視される。マスタイネーブルMEの“01”はNMI(ノン・マスカブル・インタラプト)以外の全ての割り込みでバンク使用を許可することを意味する。マスタイネーブルMEが“11”のときはレジスタバンクの使用はバンクコントロールレジスタIBCRの設定に従う。マスタイネーブルMEの“10”は予約とされる。バンク番号BNは、次に退避されるバンク番号を示す。
《レジスタバンクのFILO制御》
前記レジスタバンクRBK0〜RBKiの動作形態はFILO(ファーストイン・ラストアウト)動作、即ち先入れ・後出し動作される。レジスタバンクRBK0〜RBKiのFILO動作にはシステムコントローラ26及び命令デコーダ21の制御が介在される。前記バンク番号BNはシステムコントローラ26に与えられる。システムコントローラ26は割り込みコントローラ4から割込み信号IRQが与えられ、命令デコーダ21から所定の命令デコード信号が与えられる。その他に図示を省略するモード信号などが与えられる。システムコントローラ26は命令実行のフロー制御、動作モード制御、バンクメモリ3のアクセス制御等を行なうロジック回路とされる。
図4にはレジスタバンクRBK0〜RBKiの動作形態が示される。ここでは、システムコントローラ26によるバンクメモリ3のFILOアクセス制御を説明する。リセット直後のバンク番号BNの値は0である。レジスタバンクを使用する割り込みが受付けられると、システムコントローラ26がバンク番号BNが示すバンクにレジスタセットの退避を行ない、バンク番号BNを+1する。RESBANK命令が実行されると、システムコントローラ26はバンク番号BNを−1した後、バンク番号BNが示すレジスタバンクから前記所定のレジスタセットに対するレジスタセットデータの回復(データ復帰)を行なう。ここではバンク番号BNに対するインクリメント及びデクリメントの演算は割り込みコントローラ4の内部でインクリメンタ・デクリメンタ29により行なわれる。
《CPU処理とレジスタ退避処理の並列化》
図5には割り込み発生時のCPU例外処理と並行してレジスタ退避処理が可能にされる様子が例示される。前記所定のレジスタセットの各レジスタは例えば32ビットとされる。このとき、レジスタバンク操作用の前記専用バス17は、例えば4個のレジスタを並列に入出力可能な128ビットとされる。専用バス17をそのようにワイドバス幅とすれば、複数レジスタを同時に転送可能となり、転送効率が上がる。レジスタバンク操作用のバス17はそれに専用化されるから、CPU2は他の処理と並行してレジスタセットに対する退避・復帰処理を行うことができる。割り込み発生時のCPU例外処理と並行してレジスタ退避処理を行い、見かけ上レジスタ退避によるオーバヘッドをゼロ若しくは大幅に低減することも可能である。図5では、レジスタセットの退避は、割り込み受付によって自動的に開始されるから、割り込みサービスルーチンの先頭命令が割り込みベクタに従ってフェッチされる前に開始され、割り込み応答性能は更に向上する。
図6には上記レジスタバンク方式による割り込み応答処理時間と割り込み復帰処理時間の一例が示される。図7にはその比較例としてレジスタバンクを採用せずデータ転送命令を用いてスタック領域との間で退避・復帰する場合の割り込み応答処理時間と割り込み復帰処理時間が示される。
《レジスタバンクのオーバーフロー処理》
次にレジスタバンクのオーバーフロー処理について説明する。レジスタバンクがオーバーフローしたことを検知可能にするため、ステータスレジスタSRに、レジスタバンクがオーバーフローしたことを示すオーバーフローフラグBOを設定する。図8にオーバーフローフラグBOが例示される。
レジスタバンクの全てのバンクに退避が行われている状態で割り込みが発生し、さらにCPU2で受け付けられた割り込みがレジスタバンクの使用を許可されている場合(レジスタバンクのオーバーフロー状態)、レジスタバンクの代わりにスタック領域に自動的にレジスタセットデータの退避を行なう。スタック領域への自動退避・復帰の動作は以下の通りである。
退避動作では、先ず、スタックポインタSPの値にしたがってステータスレジスタSR、プログラムカウンタPC、及び前記所定のレジスタセットR0〜R14,GBR,MACH,MACL,PRをスタック領域に退避する。次にステータスレジスタSRのレジスタバンクオーバーフロービットBOを“1”にセットする。バンク番号レジスタIBNRのバンク番号BNは最大値のまま変化させない。
復帰動作では、ステータスレジスタSRのレジスタバンクオーバーフロービットBOが“1”にセットされている状態で、バンク復帰命令RESBANK命令が実行されると、次のように動作する。先ず、スタックポインタSPの値にしたがってスタック領域から所定のレジスタセットR0〜R14,GBR,MACH,MACL,PRにデータを復帰する。バンク番号レジスタIBNRのバンク番号BNは最大値のまま変化させない。
一方、レジスタバンクの全てのバンクに退避が行われている状態で割り込みが発生し、さらにCPU2で受け付けられた割り込みがレジスタバンクの使用を許可されていて、かつレジスタバンクエラー例外処理の発生を割り込みコントローラ内の所定の設定で選択していた場合、下記のレジスタバンクエラー例外処理が開始される。先ず、ステータスレジスタSRをスタック領域に退避する。次に、プログラムカウンタ(PC)27をスタック領域に退避する。退避するプログラムカウンタ(PC)27の値は、最後に実行した命令の次命令の先頭アドレスになっている。そして、発生したレジスタバンクエラーに対応する例外処理ベクタテーブルから例外サービスルーチンスタートアドレスを取り出し、そのアドレスからプログラムを実行する。この場合は、レジスタバンクへの退避は行われず、バンク番号BNも変化しない。これは、レジスタバンクがオーバフローしていてそれを使うことができなかったことを検出して、必要な処理を採ることが要求されているアプリケーションを考慮したものである。所望の性能が得られないことの検出や、あるいは少なくともデバック時には有効と考えられる。
ところでレジスタバンク復帰命令(RESBANK命令)を、レジスタバンクが空(BN=0)のときに実行した場合も、レジスタバンクエラー例外処理を行う。これは明らかに異常動作であり、その検出を必要と考えたものである。
上記オーバーフローフラグBOを設けることにより、レジスタセットへのデータ復帰処理では、レジスタバンクのオーバーフローを認識することができる。これにより、レジスタバンクのオーバーフローによるデータ処理装置の不所望な動作停止を抑止することができる。
《タスクスイッチの考慮》
CPU2がOSの管理の下でマルチタスク処理を行なう場合、図9に例示されるように、割り込み処理の後の復帰先は必ずしも割り込み発生元とはならない。OSが管理するイベントの状況により、別のタスク(タスクB)に復帰する場合もある。
図10にはタスクスイッチが行なわれるときの処理手順が示される。図11には図10の処理におけるレジスタセット、レジスタバンク、及びOS内部テーブルの関係が例示される。図10及び図11を参照しながら、上記割り込みによるタスクスイッチについて考察する。前記CPU2は、割り込み例外処理の発生に応答して前記レジスタバンクへの退避処理を開始する(S1)。割り込み例外処理後の割り込みサービスルーチンすなわちOS処理内では、前記CPU2は、最後に退避されたレジスタバンクから前記所定のレジスタセットに記憶情報を復帰させるRESBANK命令を実行する(S2)。このとき、OSが管理するイベントの状況により、タスクスイッチを行なう場合、中央処理装置はスイッチ前のタスク(タスクA)のレジスタセットデータをOS内部テーブルに保存し(S3)、スイッチ後のタスク(タスクB)に関するレジスタセットの保存データをOS内部テーブルからレジスタセットに回復する(S4)。S3及びS4の処理はOSに基づく処理とされる。この後、CPU2は、タスクBとしての復帰先プログラムカウンタの値とステータスレジスタの値がOSによってスタック領域中に準備調整されてから、それらをスタック領域から復帰させてスイッチ先のプログラム実行処理に復帰可能にするリターン命令(RTE命令)を実行する。中央処理装置は、前記RESBANK命令(レジスタ回復命令)とRTE命令(リターン命令)を別々に持つ。これは、割り込み例外処理においてOSからの復帰はタスクスイッチを伴う場合があることを考慮している。タスクスイッチを伴わなければ、上記レジスタ回復命令の後に続くOSによるS3及びS4の処理は不要となり、前記レジスタ回復命令の処理とリターン命令の処理を分ける必要がなくなるが、双方の命令を一つの命令にすると、タスク切替えを行なうことが困難になり、オーバヘッドを生ずる。また、双方の命令を一つの命令にした場合、OSによる処理内容に対応した動作を当該命令のパラメータで指示したりすることが必要になり、OS内部テーブルに対するアドレシングモード、タスクスイッチの有無による処理ルーチンの相違の指示等を特定しなければならず、パラメータが増え、命令が複雑化する。
前記RESBANK命令(バンク復帰命令)をサブルーチンリターン命令のようなRTE命令とは独立のバンク回復専用命令とするから、タスクスイッチを伴う場合、タスクスイッチを伴わない場合の何れに対しても割り込みからの復帰を円滑に、且つ無駄無く行なうことができ、マルチタスク処理への適応性に優れる。
《レジスタバンク転送命令》
CPU2の命令セットには図12に示すように、レジスタバンク転送命令がある。レジスタバンク転送命令は、デバッグ用命令であり、レジスタバンクの任意のデータを汎用レジスタR0との間で転送する命令である。LDBANK命令はRmが示すレジスタバンクアドレスからの4バイトデータをR0に転送する命令である。STBANK命令はR0をRnが示すレジスタバンクアドレスへ転送する命令である。
図13にはレジスタバンク転送命令のアドレス(LDBANKはRm、STBANKはRnの値)と、レジスタバンクのエントリの対応を示す。アドレスの15〜7ビット(BN)でバンク番号を指定し、アドレスの6〜2ビット(EN)でバンク内のエントリ(R0〜R14、GBR、MACH、MACL、PR、IVN)を指定する。アドレスの31〜16ビットと1〜0ビットは全て0にされて利用される。
レジスタバンク転送命令により、一命令でレジスタバンクの任意のデータを転送する事が可能になる。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、浮動小数点演算ユニット(FPU)、ディジタル信号処理プロセッシングユニット(DSP)といったコプロセッサレジスタもレジスタセットに含めて汎用レジスタ等と一緒に退避・復帰するようにしてもよい。割り込み処理でコプロセッサレジスタを使用する場合、これらのレジスタも同時退避・復帰できるようにすると、より性能が向上する。ただし、コプロセッサレジスタを使用しない割り込み処理の考慮や、より多くのバンク領域を用意する必要がある。コプロセッサレジスタの退避・復帰処理時間を削減することができる。
また、割り込み数分のバンク領域を確保できない場合、割り込み選択型レジスタバンクという方式を採ることも可能である。割り込み発生時、バンクに空きがなかった際はスタック領域を使用することになるが、割り込みネスト状況によっては高レベルの割り込みがバンクを使用できないという事態が発生し、リアルタイムシステムにおいては致命傷となる可能性がある。このため、バンクに空きがない場合には、バンクを使用する割り込みを選択できるようにして、リアルタイム性を確保する。バンク領域が制限されたマイクロコンピュータでの割り込み性能の改善に役立つ。
更に具体的には、割り込みレベル毎に、「バンク割り込み(必ずバンクを使用する割り込みレベル)」と「don't care割り込み(バンク、スタックどちらを使用しても良い割り込みレベル)」を静的に決定する。そして、割り込み発生時のバンク切り換え命令によって、発生した割り込みがバンク割り込みであればレジスタバンクを切り換える(例:カレントバンク0→1)。don't care割り込みであれば、「残りバンク数−残りバンク割り込み数」が1以上のときバンクを切り換え、0のときはカレントバンクの内容をスタックに退避することで、don't care割り込みもバンクを有効に活用する。レジスタ退避先が、バンクとスタックにまたがるため、CPUは、どのバンクを使用中に何回スタッキングがあったかを記憶しておき、バンク切り換え命令がその情報をもとにバンクを切り換え、スタック・ポップ(pop)を制御する。ただし、バンクとスタック制御が必要になるため、全割り込みバンク方式より性能は劣り、CPUのハードウェアも複雑になる。
また、割り込みだけでなく、全タスクにそれぞれレジスタバンクを設けることで、タスク切り換え時のレジスタ退避・回復処理を省く事ができる。タスクのレジスタ退避・復帰も高速化できる。ハードウェアはOSのタスクを認識できないため、どのタスクがどのバンクに割り当てられているかという情報をもとにバンク切り換えを行う必要がある。この方式の場合、上記同様、CPUのハードウェアが複雑になり、大容量バンクを必要とする。
また、RAM領域とは異なる専用バスを用いた領域を設ける。命令の他の実行ステージと並列にメモリアクセス可能とし、見かけ上メモリアクセスオーバヘッドゼロとなる。本領域は、アドレス空間に割り当てられ、通常のメモリ領域と同様にアクセス可能とする。スタック専用メモリ領域によるレジスタ退避・復帰の高速化、割り込み処理及びタスク処理の性能向上を図ることができるが、RAM兼用とすることで用途を広げることもできる。
また、レジスタバンクはCPU内のレジスタセットに対してRAM上に割当てられる回路に限定されない。概念としては、複数のレジスタセットを構成するレジスタファイルによって構成してもよい。
本発明の一例に係るデータプロセッサのブロック図である。 レジスタバンクと退避・復帰対象のレジスタセットを例示する説明図である。 所定のレジスタセットに対する退避・復帰用の制御レジスタの一例を示す説明図である。 レジスタバンクRBK0〜RBKiの動作形態を例示する説明図である。 割り込み発生時のCPU処理と並行してレジスタ退避処理が可能にされる様子を例示するタイミングチャートである。 レジスタバンク方式による割り込み応答処理時間と割り込み復帰処理時間の一例を示す説明図である。 図6の比較例としてレジスタバンクを採用せずデータ転送命令を用いてスタック領域との間で退避・復帰する場合の割り込み応答処理時間と割り込み復帰処理時間を例示する説明図である。 ステータスレジスタに対するオーバーフローフラグの配置を示す説明図である。 CPUがOSの管理の下でマルチタスク処理を行なう場合に割り込み処理の後の復帰先は必ずしも割り込み発生元とはならず、タスクスイッチされる場合のあることを示す説明図である。 タスクスイッチが行なわれるときの処理手順を例示する説明図である。 図10の処理におけるレジスタセット、レジスタバンク、及びOS内部テーブルの関係を例示する説明図である。 レジスタバンク転送命令の説明図である。 レジスタバンク転送命令が指定するアドレスとレジスタバンクのエントリの対応を示す説明図である。
符号の説明
1 データプロセッサ
2 CPU
3 バンクメモリ
RBK0〜RBKi レジスタバンク
4 割り込みコントローラ
IRQ 割り込み信号
IBCR バンクコントロールレジスタ
IBNR バンク番号レジスタ
BN バンク番号
7 RAM
17 レジスタバンク専用バス
21 命令デコーダ
23 レジスタ回路
26 システムコントローラ
27 プログラムカウンタ(PC)
R0〜R15 汎用レジスタ
SP スタックポインタ
MACH,MACL 乗算レジスタ
PR プロシージャレジスタ
GBR グローバルベースレジスタ
IVN 割り込みベクタレジスタ
RBR リードバッファレジスタ
WBR ライトバッファレジスタ
SR ステータスレジスタ
BO オーバーフローフラグ

Claims (1)

  1. 所定のレジスタセットを有する中央処理装置と、
    前記所定のレジスタセットに応ずる複数のレジスタバンクと有し、
    前記複数のレジスタバンクは前記所定のレジスタセットが保有する記憶情報の退避に利用され、
    前記退避処理は、前記中央処理装置による割込処理ルーチンの先頭命令のフェッチ前に開始され、
    前記中央処理装置の命令セットには、最後に退避されたレジスタバンクから記憶情報を前記所定のレジスタセットに復帰させるレジスタ復帰命令と、割り込み例外処理でスタック領域に退避したプログラムカウンタの値とステータスレジスタの値をそれぞれ復帰させて元のプログラム実行処理に復帰させるリターン命令と、を別々に有し、
    前記データ処理装置は、割込み例外処理を用いたタスクスイッチに際して、割り込み例外処理からの復帰において、前記レジスタ復帰命令を実行してスイッチ元タスクにおけるレジスタバンクのデータをレジスタセットに復帰し、復帰データをOSが管理するOS内部テーブルに保存し、スイッチ先タスクのレジスタセットデータをOS内部テーブルから前記所定のレジスタセットに復帰し、前記リターン命令を実行してスイッチ先タスクのプログラム実行処理に移行することを特徴とするデータ処理装置。
JP2007208214A 2007-08-09 2007-08-09 データ処理装置 Expired - Lifetime JP4114946B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007208214A JP4114946B2 (ja) 2007-08-09 2007-08-09 データ処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007208214A JP4114946B2 (ja) 2007-08-09 2007-08-09 データ処理装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2002320788A Division JP2004157636A (ja) 2002-11-05 2002-11-05 データ処理装置

Publications (2)

Publication Number Publication Date
JP2007317232A JP2007317232A (ja) 2007-12-06
JP4114946B2 true JP4114946B2 (ja) 2008-07-09

Family

ID=38850970

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007208214A Expired - Lifetime JP4114946B2 (ja) 2007-08-09 2007-08-09 データ処理装置

Country Status (1)

Country Link
JP (1) JP4114946B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0718890A (ja) * 1993-06-30 1995-01-20 Nippon Shiyoukouki Maintenance Kk 立体駐車装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016015475A (ja) * 2014-06-13 2016-01-28 株式会社半導体エネルギー研究所 半導体装置、及び電子機器
JP7072545B2 (ja) * 2019-09-10 2022-05-20 株式会社藤商事 遊技機

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0718890A (ja) * 1993-06-30 1995-01-20 Nippon Shiyoukouki Maintenance Kk 立体駐車装置

Also Published As

Publication number Publication date
JP2007317232A (ja) 2007-12-06

Similar Documents

Publication Publication Date Title
US20080046697A1 (en) Data processor
US5557766A (en) High-speed processor for handling multiple interrupts utilizing an exclusive-use bus and current and previous bank pointers to specify a return bank
AU618142B2 (en) Tightly coupled multiprocessor instruction synchronization
US7590774B2 (en) Method and system for efficient context swapping
EP0511674A2 (en) Single chip microcomputer
WO2010004243A2 (en) Interrupt processing
JPS5841538B2 (ja) マルチプロセツサシステム ノ ユウセンセイギヨホウシキ
JPH07248897A (ja) コンピュータ・システムにおける例外からの回復方法、及びそのための装置
JP2011175625A (ja) インターラプトプロキシ機能を具備したシステムオンチップ及びそのインターラプトプロキシ処理方法
JP4114946B2 (ja) データ処理装置
JPH081604B2 (ja) マイクロプロセッサ
GB2461851A (en) Processor, which stores interrupt enable flags in a location used for other functions
JP2677458B2 (ja) システムコール実行装置
JP4756599B2 (ja) データ処理装置
JP2006039874A (ja) 情報処理装置
JP3659048B2 (ja) オペレーティングシステム及び計算機
JP3539984B2 (ja) プロセッサ
JPH0895798A (ja) データ処理装置
JPS60195646A (ja) デ−タ処理装置
JPH0668725B2 (ja) データ処理システムにおける割込条件に応答する装置及び非同期割込条件に応答する方法
JPH07219766A (ja) 演算処理装置
JP2008225710A (ja) コンピュータシステム及び該システムで用いられるプロセス切替え方法
JP2562838B2 (ja) プロセッサ及びストアバッファ制御方法
JP2007094812A (ja) 並列演算装置
JPS62267869A (ja) ベクトル・プロセツサにおける演算例外時の処理方式

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080121

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080414

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

Free format text: PAYMENT UNTIL: 20110425

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4114946

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110425

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

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

Free format text: PAYMENT UNTIL: 20110425

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20120425

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120425

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130425

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20140425

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

EXPY Cancellation because of completion of term