JP4311087B2 - プロセッサおよび例外処理方法 - Google Patents
プロセッサおよび例外処理方法 Download PDFInfo
- Publication number
- JP4311087B2 JP4311087B2 JP2003161489A JP2003161489A JP4311087B2 JP 4311087 B2 JP4311087 B2 JP 4311087B2 JP 2003161489 A JP2003161489 A JP 2003161489A JP 2003161489 A JP2003161489 A JP 2003161489A JP 4311087 B2 JP4311087 B2 JP 4311087B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- exception
- register
- instruction
- address
- 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
Links
Images
Landscapes
- Advance Control (AREA)
Description
【発明の属する技術分野】
本発明は、読み込んだ命令に従って演算処理等の種々の処理を行うプロセッサおよび例外処理方法に関し、特に、例外や割り込み発生時の処理時間を短縮するプロセッサおよび例外処理方法に関する。
【0002】
【従来の技術】
現在、コンピュータや携帯端末はもとより、あらゆる電子機器においてマイクロプロセッサが用いられている。従来のマイクロプロセッサは、演算等の処理を指定するオペコードが与えられて、このオペコードをデコードすることにより、各演算器等の制御を行っていた。
【0003】
図9は、従来のプロセッサの構成例を示す機能ブロック図である。
図9に示すプロセッサは、命令の取得と命令の発行とを行う命令制御部110と、命令に従って演算等を実行するデータパス部120と、データパス部120による処理の実行結果を確定する確定処理部130とを具備する。データパス部120は、例えば、整数演算器121、浮動小数演算器122、読み出し/書き出し器123等を具備する。
【0004】
命令制御部110は、図示しない外部バスを介して読み込んだ命令に対するデコード処理を行い、命令実行のための内部の制御信号を生成する。データパス部120は、命令制御部110からの制御信号に従って、各種演算等の処理を行う。例えば、整数演算器121は、整数に対する加算、乗算等の演算を行う。また、浮動小数演算器122は、浮動小数に対する加算、乗算等の演算を行う。また、読み出し/書き出し器123は、図示しない外部メモリとの間でデータの読み出しや書き出しを行う。確定処理部130は、データパス部120による処理結果を確定値としてよいか否かを判定する。
【0005】
ところで、このようなプロセッサにおいて、例外や割り込みが発生した場合には、通常、命令制御部110が発行した命令の順序通りに、データパス部120における処理結果が確定処理部130によって確定される必要がある。これにより、例外や割り込みの発生状態を正確に特定してこのときのレジスタ状態を保持するとともに、後続の命令を中止させることができる。一方、命令の実行結果の確定順を命令の記述順に行わない場合は、例外や割り込みの発生状態の特定が不正確になってしまう。
【0006】
なお、例外発生時の多重例外の発生を禁止し、例外からの復帰時の処理の整合性を向上させた例外処理装置として、以下のようなものがあった(特許文献1参照)。この例外処理装置は、並列同時実行可能な演算ユニットにおいて例外発生を検出すると、命令の実行が終了していない演算ユニットの動作を中断し、プログラムカウンタや実行中断した命令の数など、例外処理ハンドラが必要とする例外情報を退避させる。そして、例外要因が除去され、例外処理ハンドラから復帰する場合には、退避された実行が中断された命令の個数に基づいて、中断された命令の再実行を繰り返し、例外発生前シーケンスに復帰する。
【0007】
【特許文献1】
特開平5−20070号公報
【0008】
【発明が解決しようとする課題】
上述したように、従来のプロセッサでは、例外や割り込みの発生状態を正確に特定するために、命令の実行結果の確定順を命令の記述順に行うように制御する必要があった。このため、実行結果の確定順を制御する確定処理部130のような余分なハードウェアが必要となるとともに、このような制御処理が処理速度の高速化を妨げる要因となっていた。
【0009】
また、上記の特許文献1で開示された例外処理装置では、例外の発生時に、実行が終了していないすべての演算が中断される構造となっているため、復帰時に再び演算を実行する必要があり、処理速度の高速化を阻害する原因となる。
【0010】
本発明はこのような課題に鑑みてなされたものであり、例外や割り込みの発生時に、その発生状態を正確に特定可能でありながら全体の処理速度を向上させることが可能なプロセッサ及び例外処理方法を提供することを目的とする。
【0011】
【課題を解決するための手段】
本発明では上記課題を解決するために、読み込んだ命令に従って動作するプロセッサにおいて、レジスタ間でデータを転送するためのレジスタ間転送手段と、前記レジスタ間転送手段を通じてデータが入力される演算データレジスタとデータが出力される結果格納レジスタとを具備し、すべての前記演算データレジスタにデータが入力されると、入力されたデータを用いて所定の演算処理を行い、その演算結果を前記結果格納レジスタに書き込み、例外の発生で処理を中断して例外発生信号を出力する、それぞれ単一の演算機能を有する複数の演算手段と、前期例外発生信号を伝える例外発生信号線に接続し、前記例外発生信号が出力されたことを検出すると、その例外原因を特定し、例外発生の通知を行う例外受付手段と、例外発生時の情報を格納する退避レジスタを具備し、通常時にはデータの転送先および転送元のレジスタを指定する情報が記述された前記命令を読み込んでデコードすることにより前記レジスタ間転送手段を通じたデータ転送動作を制御し、前記例外発生の通知によって転送実行中の命令を停止し、前記命令および次に実行される命令が格納されているアドレスを示すプログラムカウンタの値を前記退避レジスタに格納し、例外処理を実行させるためのプログラムが格納された先頭アドレスを前記プログラムカウンタに書き込むことによって前記例外処理に制御を移す転送制御手段と、を有することを特徴とするプロセッサが提供される。
【0012】
このようなプロセッサでは、通常時には、転送制御手段によって、演算手段が具備する演算データレジスタと、同一または別の演算手段が具備する結果格納レジスタとの間のレジスタ間転送手段を通じたデータ転送動作が制御される。各演算手段は、すべての演算データレジスタにデータが入力されることによって、動作を開始するので、転送制御手段によるデータ転送制御のみにより、各演算手段の動作が制御される。演算手段は例外が発生すると、処理を中断して例外発生信号を出力する。例外受付手段は、この例外発生信号を検出すると、例外原因を特定し、例外発生を転送制御手段に通知する。転送制御手段は、そのとき実行していたデータの転送命令を停止し、この命令およびこの命令の次に実行される命令が格納されているアドレスを示すプログラムカウンタの値を退避レジスタに格納し、プログラムカウンタに例外処理のためのプログラムの先頭アドレスを書き込むことによって例外処理に制御を移す。従って、例外が発生した演算手段以外は、それぞれの演算処理終了後に自動的に停止する。
【0013】
また、上記課題を解決するために、読み込んだ命令に従って動作するプロセッサの例外処理方法において、レジスタ間でデータを転送するレジスタ間転送手段を通じてデータが入力される演算データレジスタにデータが入力されると、入力されたデータを用いて所定の演算処理を行い、前記レジスタ間転送手段を通じてデータが出力される結果格納レジスタにその演算結果を書き込むとともに、例外の発生で処理を中断して例外発生信号を出力する、それぞれ単一の演算機能を有する複数の演算手段を、データの転送先および転送元のレジスタを指定する情報が記述された前記命令をデコードして前記レジスタ間転送手段を通じたデータ転送を制御することによって動作制御し、前記演算手段の出力した前記例外発生信号を検出すると、前記例外発生信号に基づいてその例外原因を検出し、例外発生時に転送実行中の命令を停止し、前記命令および次に実行される命令が格納されているアドレスを示すプログラムカウンタの値を退避レジスタに退避し、前記例外原因に応じた例外処理を実行させるためのプログラムが格納された先頭アドレスを前記プログラムカウンタに書き込むことによって制御を前記例外処理に移すことを特徴とする例外処理方法、が提供される。
【0014】
このような例外処理方法では、演算手段が具備する演算データレジスタと、結果格納レジスタとの間のレジスタ間転送手段を通じたデータ転送を制御することによって演算手段の動作が制御されている演算手段に例外が発生し、例外発生信号が出力されると、この例外発生信号に基づいて例外原因を特定し、このとき実行していたデータの転送命令を停止し、この命令およびこの命令の次に実行される命令が格納されているアドレスを示すプログラムカウンタの値を退避レジスタに格納し、プログラムカウンタに例外処理のためのプログラムの先頭アドレスを書き込むことによって例外処理に制御を移す。
【0015】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
図1は、本発明のプロセッサの構成例を示す機能ブロック図である。
【0016】
図1に示すプロセッサ1は、命令の取得と命令の発行とを行う命令取り出し器(図中ではFetchと表示)2と、入力された命令に従って、アドレスバス31、データバス32および例外バス33によってなる内部バスに接続された各種のデータ転送器や演算器の動作を制御するバスマスタ3と、外部から読み込まれた命令を記憶する命令キャッシュ4aと、処理結果や外部から読み込まれたデータを記憶するデータキャッシュ4bと、外部からのデータ等の読み込みや、処理結果の外部への出力を行うための外部バスI/F(インタフェース)5と、例外発生および外部割込みを監視する例外処理部6と、を具備する。
【0017】
また、内部のアドレスバス31およびデータバス32には、例えば外部とのデータ転送処理等を行うデータ転送器や、各種の演算処理を行う演算器等が接続されている。データ転送器としては、読み出し器(図中ではLoadと表示)61、書き出し器(同Store)62、メモリ転送器(同Move)63、スタック処理器(同Stack)64、およびデータ交換器(同Swp)65が接続されている。また、演算器としては、比較器(同Cmp)66、整数加算器(同Add)67、整数減算器(同Sub)68、整数乗算器(同Mul)69、整数除算器(同Div)70、論理積演算器(同And)71、論理和演算器(同Or)72、排他的論理積演算器(同Xand)73、排他的論理和演算器(同Xor)74、ビット反転演算器(同Not)75、浮動小数加算器(同Fadd)76、浮動小数減算器(同Fsub)77、浮動小数乗算器(同Fmul)78、浮動小数除算器(同Fdiv)79、および積和演算器(同Muladd)80が接続されている。さらに、これらとともに、アドレスバス31およびデータバス32には、汎用レジスタ81が接続されている。
【0018】
また、これらの演算器およびデータ転送器のうち、例外を発生させる可能性のあるものは、例外発生信号を伝える例外発生信号線(以下、例外バスとする)33を介して例外処理部6と接続している。例えば、データ転送器は、データキャッシュ4bを介して外部とのデータ転送処理を行う際に、ページフォルト等の例外が発生する場合がある。また、演算器は、演算によりオーバーフローやアンダーフロー、ゼロ割などによって有効範囲外のデータ入力や演算結果が得られた場合に例外が発生する。
【0019】
また、このプロセッサ1の外部には、割込みコントローラ8と、外部バスI/F5から外部のアドレスバス51およびデータバス52を介して、書き換え可能なメモリ10とが接続されている。
【0020】
命令取り出し器2は、命令キャッシュ4aおよび外部バスI/F5を介して、外部のメモリ10から命令を読み込み、バスマスタ3に対して出力する。バスマスタ3は、入力された命令を解析し、アドレスバス31にセレクト信号を出力してレジスタのアドレス指定を行い、場合によってはデータバス32を通じて即値を送信することにより、アドレスバス31およびデータバス32に接続した各データ転送器の間のデータ転送動作を制御する。また、読み込んだ命令中に命令実行回数の情報が含まれている場合には、この命令を指定された回数分だけ繰り返して実行させる。
【0021】
命令キャッシュ4aは、外部バスI/F5を通じてメモリ10から読み込まれた命令を記憶しておき、命令取り出し器2により指定されたメモリ10上のアドレスがヒットした場合に、記憶していた命令を命令取り出し器2に対して出力する。データキャッシュ4bは、外部バスI/F5を通じてメモリ10から読み込まれたデータを記憶しておき、読み出し器61により指定されたメモリ10上のアドレスがヒットした場合に、記憶していたデータを読み出し器61に出力する。外部バスI/F5は、プロセッサ1の内部の信号を外部のバス信号に変換し、例えばメモリ10等の外部とのデータの読み書きを行う。
【0022】
アドレスバス31およびデータバス32に接続された読み出し器61、書き出し器62、メモリ転送器63、スタック処理器64、データ交換器65、比較器66、整数加算器67、整数減算器68、整数乗算器69、整数除算器70、論理積演算器71、論理和演算器72、排他的論理積演算器73、排他的論理和演算器74、ビット反転演算器75、浮動小数加算器76、浮動小数減算器77、浮動小数乗算器78、浮動小数除算器79および積和演算器80は、入力用のレジスタおよび出力がある場合には出力用のレジスタを具備している。これらはともにアドレスバス31およびデータバス32に接続されている。バスマスタ3によりアドレスバス31を通じて指定された入力用のレジスタに、データバス32を通じてデータが入力されると、所定のデータ処理を開始する。これらのデータ転送器および演算器は、それぞれ1つの処理機能のみ有している。データ処理が終了し、得られた処理結果のデータは、出力用のレジスタに格納する。この格納されたデータは、バスマスタ3によるアドレス指定に基づいて、他のデータ転送器や演算器等に転送される。
【0023】
読み出し器61は、それぞれ1つずつのアドレスレジスタとデータレジスタを具備する。読み出し器61は、アドレスレジスタにデータが格納されると、格納されたデータを読み出しアドレスとして、データキャッシュ4bおよび外部バスI/F5を通じて外部のメモリ10にアクセスする。そして、メモリ10上の対応するアドレスからデータを読み出し、データレジスタに格納する。また、出力した読み出しアドレスがデータキャッシュ4bにおいてヒットした場合には、このデータキャッシュ4bから対応するデータを読み出し、データレジスタに格納する。
【0024】
書き出し器62は、アドレスレジスタとデータレジスタを1つずつ具備しており、アドレスレジスタにはメモリ10上のデータ書き出し先のアドレスが格納され、データレジスタには、メモリ10に書き出すデータが格納される。アドレスレジスタおよびデータレジスタの双方にデータが入力されると、データキャッシュ4bおよび外部バスI/F5を通じて外部のメモリ10にアクセスし、メモリ10上の対応するアドレスにデータを書き出す。
【0025】
メモリ転送器63は、2つのアドレスレジスタと1つの転送量レジスタを具備しており、一方のアドレスレジスタには、メモリ10あるいは他のメモリ上の転送元となるアドレスが格納され、もう一方のアドレスレジスタには転送先となるアドレスが格納される。また、転送量レジスタには、指定されたアドレスから読み出すデータのデータサイズが格納される。これらのデータが入力されると、データキャッシュ4bおよび外部バスI/F5を通じて外部のメモリ10あるいはその他のメモリにアクセスし、対応するアドレス間のデータ転送を指示する。
【0026】
スタック処理器64は、ポインタレジスタと、データレジスタとを具備しており、ポインタレジスタには、メモリ10上のアドレスを指定するためのスタックポインタが格納され、データレジスタには、メモリ10への書き出し対象となるデータが格納される。これらのデータが入力されると、データレジスタにおける読み書きによりメモリ10からの読み出しおよび書き出しの各動作を判断し、読み出し動作の場合は、ポインタレジスタへのデータ格納動作が完了すると、メモリ10にアクセスして、対応するアドレスからデータを読み出し、データレジスタに格納する。また、書き出し動作の場合は、ポインタレジスタおよびデータレジスタの双方へのデータ格納動作が完了すると、メモリ10の対応するアドレスに対してデータを書き出す。
【0027】
データ交換器65は、アドレスレジスタと、入力データレジスタと、出力データレジスタとを具備しており、入力データレジスタおよびアドレスレジスタへのデータ格納が完了すると、アドレスレジスタの示すメモリ10内のアドレスに、データキャッシュ4bおよび外部バスI/F5を通じてアクセスする。そして、メモリ10上の対応するアドレスからデータを読み出し、出力データレジスタに格納する。
【0028】
比較器66は、データ入力用の2つのデータレジスタと、演算結果を格納するステータスレジスタを具備しており、2つのデータレジスタ双方へのデータ入力が完了すると、入力された各データを比較して、比較結果をステータスレジスタに格納する。
【0029】
整数加算器67は、2つの入力レジスタと、1つの出力レジスタを具備しており、2つの入力レジスタに、それぞれ加算される数値と加算する数値が入力されると、各データを使用して整数加算処理を行い、加算結果を出力レジスタに格納する。
【0030】
整数減算器68、整数乗算器69および整数除算器70は、整数加算器67と同様に、2つの入力レジスタと、1つの出力レジスタを具備している。整数加算器67と同様に、2つの入力レジスタに演算対象のデータが入力されると、各データを使用して、整数減算器68は整数減算処理、整数乗算器69は整数乗算処理、および整数除算器70は整数除算処理を開始し、演算結果を出力レジスタに格納する。
【0031】
論理積演算器71、論理和演算器72、排他的論理積演算器73および排他的論理和演算器74も、整数加算器67等と同様に、2つの入力レジスタと、1つの出力レジスタをそれぞれ具備している。論理積演算器71は、2つの入力レジスタに、演算対象のデータが格納されると、各データを使用して論理積演算処理を行い、演算結果を出力レジスタに格納する。同様に、2つの入力レジスタに演算対象のデータが格納されると、論理和演算器72は論理和演算処理、排他的論理積演算器73は排他的論理積演算処理、および排他的論理和演算器74は排他的論理和演算処理を行い、演算結果を出力レジスタに格納する。
【0032】
ビット反転演算器75は、データの入出力が可能な1つの入出力データレジスタを具備し、入出力レジスタへのデータ格納動作が完了すると、この格納データによるビット反転処理を開始し、演算結果を入出力レジスタに書き戻す。
【0033】
浮動小数加算器76、浮動小数減算器77、浮動小数乗算器78および浮動小数除算器79も、整数加算器67等と同様に、2つの入力レジスタと、1つの出力レジスタをそれぞれ具備している。浮動小数加算器76は、2つの入力レジスタに演算対象のデータが格納されると、これらのデータによる浮動小数加算処理を開始し、この演算結果を出力レジスタに格納する。同様に、2つの入力レジスタに演算対象のデータが格納されると、浮動小数減算器77は浮動小数減算処理、浮動小数乗算器78は浮動小数乗算処理、および浮動小数除算器79は浮動小数除算処理を開始し、この演算結果を出力レジスタに格納する。
【0034】
積和演算器80は、3つの入力レジスタと、出力レジスタを具備しており、3つの入力レジスタに演算対象の数値が入力されると、入力された数値による積和演算処理を行い、演算結果を出力レジスタに格納する。
【0035】
また、これらのデータ転送器および演算器のうち、例外を発生させる可能性のあるものは、例外バス33に接続される。図の例では、演算器の比較器66、整数加算器67、整数減算器68、整数乗算器69、整数除算器70、浮動小数加算器76、浮動小数減算器77、浮動小数乗算器78、浮動小数除算器79および積和演算器80と、データ転送器の読み出し器61、書き出し器62、メモリ転送器63、スタック処理器64およびデータ交換器65が例外バス33に接続されている。
【0036】
汎用レジスタ81は、各データ転送器および演算器の処理結果等を一時的に記憶し、バスマスタ3によるアドレス指定に基づいて、記憶したデータを他のデータ転送器もしくは演算器等に転送する。
【0037】
外部に接続されたメモリ10は、命令とデータとを格納しており、外部バスI/F5がアドレスバス51を介して要求するアドレスの命令またはデータを、データバス52を介して供給する。なお、外部のアドレスバス51およびデータバス52上には、メモリ10の他に例えば、プログラムや各種のデータを記憶するROM(Read Only Memory)やHDD(ハードディスクドライブ)のI/F、データ入力用のキーボードやモニタ、各種の通信ネットワーク等に接続するためのI/F等(いずれも図示せず)が接続されており、コンピュータシステムを構成している。プロセッサ1が、データバス52を通じてROMやHDD等からプログラムを読み込んで実行し、データバス52上の各部とのデータの読み書きを行うことにより、このコンピュータシステムが動作する。
【0038】
割込みコントローラ8は、例えば、データ受信完了等の外部の状態変化を検出すると、割り込み信号を発生させ、外部の状態変化を例外処理部6へ伝える。
このプロセッサ1では、メモリ10から命令が読み出され、バスマスタ3に順次供給されると、バスマスタ3はこの命令に従って、アドレスバス31およびデータバス32に接続されたデータ転送器や演算器の間のデータ転送動作を制御する。各データ転送器および演算器は、データバス32からのデータ入力用のレジスタを具備し、また一部のデータ転送器とすべての演算器はデータ出力用のレジスタを具備する。
【0039】
各データ転送器および各演算器は、単一の処理機能を有しており、入力用のレジスタへのデータ入力が完了すると、自動的に所定のデータ処理を実行する。また、出力用のレジスタを具備するものは処理結果をそのレジスタに格納する。これにより、バスマスタ3によって転送元のレジスタと転送先のレジスタとが指定されるだけで、各データ転送器および演算器を動作させることが可能となる。従って、バスマスタ3は基本的に、発行された命令を基に、転送元および転送先の各レジスタを指定する情報のみ解読すればよく、命令が単純化され、バスマスタ3におけるデコード処理が高速化されている。各データ転送器および各演算器は、処理の途中で例外が発生すると、実行中の処理を中断し、例外発生信号を出力する。例外発生信号は、例外原因が除去されるまで保持される。例外発生信号が出力されたことは、例外バス33によって例外処理部6へ伝わる。
【0040】
また、割込みコントローラ8は、予め指定されている外部の状態変化によって、割り込み信号を発生させる。割り込み信号は、割り込み信号線(図示せず)によって例外処理部6へ伝わる。
【0041】
例外処理部6は、例外発生信号または割り込み信号が出力されたことを検出すると、これらの信号から例外原因を示すデータを作成し、バスマスタ3へ例外発生または割り込み発生の通知を行う。なお、割り込み信号の受付は、例外が発生していない場合のみ行う。例外バス33は、各データ転送器および演算器に接続しており、例外処理部6は、例外発生信号を出力したデータ転送器あるいは演算器を正確に特定することができる。
【0042】
バスマスタ3は、そのとき実行していた転送命令を停止し、例外処理に制御を移す。従って、例外発生により中断されたデータ転送器または演算器以外のデータ転送器または演算器は、処理が終了した後、自動的に停止することになる。
【0043】
このように、レジスタ間のデータ転送を制御することによって、単一の処理を実行する各データ転送器および各演算器の動作が制御されているため、例外が発生した場合に、実行中の他のデータ転送器と演算器の処理を中断させなくても例外が発生した処理機能を正確に特定することができる。また、従来のように確定処理を実行する必要がないことから、確定処理を行う余分なハードウェアを設ける必要がなく、例外処理時間を短縮することができる。さらに、例外が発生した以外のデータ転送器および演算器は、その処理を中断されないため、復帰に要する時間も短縮することができる。
【0044】
次に、図2を用いて、命令取り出し器2、バスマスタ3および例外処理部6について、さらに詳しく説明する。なお、図2では、説明を簡略化するために、アドレスバス31およびデータバス32が1組のみ設けられているものとしているが、これらは複数組設けられてもよい。また、例外バス33は、アドレスバス31およびデータバス32と1対1に対応している必要はなく、複数組のアドレスバス31およびデータバス32に対して、1組設けられていてもよい。
【0045】
図2は、命令取り出し器、バスマスタおよび例外処理部の各内部構成を示すブロック図である。
図2に示すように、命令取り出し器2は、プログラムカウンタ21と、アドレス生成器22と、命令発行器23と、命令格納レジスタ24と、プログラムカウンタ退避レジスタ25を具備している。
【0046】
プログラムカウンタ21は、入力される図示しないクロック信号に同期して、アドレス生成器22に対してカウント値を順次出力する。また、アドレスバス31およびデータバス32に接続しており、アドレスバス31を通じてセレクト信号により選択されると、データバス32を通じて転送されたデータによって、カウント値が書き換えられる。
【0047】
アドレス生成器22は、プログラムカウンタ21から出力されるカウント値を、メモリ10における読み出しアドレスとして、命令発行器23に対して出力する。
【0048】
命令発行器23は、アドレス生成器22から出力された読み出しアドレスを、命令キャッシュ4aおよび外部バスI/F5を通じてメモリ10に転送する。そして、メモリ10から読み込まれた命令を命令格納レジスタ24に転送する。また、出力した読み出しアドレスが命令キャッシュ4aにおいてヒットした場合には、この命令キャッシュ4aから対応する命令を読み出し、命令格納レジスタ24に転送する。さらに、比較器66のステータスレジスタからのステータス信号の供給を受け、このステータス信号に応じて動作させることが可能となっている。
【0049】
命令格納レジスタ24は、命令発行器23から出力された命令を保持し、所定のタイミングでバスマスタ3に転送する。また、アドレスバス31およびデータバス32に接続して、データバス32からのデータ入力用のレジスタとしても機能し、アドレスバス31を通じてセレクト信号により選択されると、データバス32を通じて転送されたデータによって、出力する命令が書き換えられる。
【0050】
プログラムカウンタ退避レジスタ25は、例外発生時に停止された命令、あるいは割り込み発生で終了された命令の次に実行される命令が格納されているアドレスを示すプログラムカウンタを一時退避するためのレジスタである。アドレスバス31およびデータバス32に接続して、データバス32からのデータ入力レジスタおよび出力レジスタとして機能する。アドレスバス31を通じてセレクト信号により選択されると、入力レジスタとして機能する場合には、データバス32を通じて転送されたプログラムカウンタの値を書き込む。また、出力レジスタとして機能する場合には、データバス32を通じて保持しているプログラムカウンタの値を転送する。
【0051】
バスマスタ3は、デコーダ3aと、残実行回数退避レジスタ3bと、実行中命令退避レジスタ3cを具備している。
デコーダ3aは、アドレスバス31およびデータバス32に接続し、命令取り出し器2の命令格納レジスタ24より出力された命令を解析し、アドレスバス31に対してセレクト信号を出力して、アドレスバス31に接続された各データ転送器または各演算器等のレジスタを選択する。このとき、データ転送元のレジスタと、データ転送先のレジスタとを選択することにより、選択されたレジスタ間でのデータバス32を通じたデータ転送が行われる。また、デコーダ3aは、入力された命令に応じて、即値データを生成し、データ転送先のレジスタを選択してこのレジスタにデータバス32を通じて即値データを転送することも可能である。さらに、入力された命令中に実行回数を指定する情報が含まれる場合は、指定された回数分だけ同じ転送動作を繰り返すことも可能である。
【0052】
また、デコーダ3aは、セレクト信号の出力後にデータバス32を通じてWait信号を受信した場合には、Wait信号の受信が解除されるまでの間、このデータバス32および対応するアドレスバス31における制御状態を保持し、新たな命令のデコードに応じたセレクト信号および即値の出力を停止する。なお、アドレスバス31およびデータバス32が複数組設けられている場合には、Wait信号が受信されていない他のバスに対するデータ転送を継続させることが可能である。
【0053】
残実行回数退避レジスタ3bは、デコーダ3aと接続し、デコーダ3aから転送された繰り返し処理の残りの実行回数を書き込む。また、デコーダ3aから読み出しがあれば、格納された残実行回数をデコーダ3aに転送する。
【0054】
実行中命令退避レジスタ3cは、デコーダ3aと接続し、デコーダ3aから転送された実行中の命令が格納されたメモリ10上のアドレスを書き込む。また、デコーダ3aから読み出しがあれば、格納された実行中命令のメモリ10上のアドレスをデコーダ3aに転送する。
【0055】
デコーダ3aは、例外処理部6から例外信号を入力すると、転送実行中の命令を停止し、停止した命令のアドレスを実行中命令退避レジスタ3cに退避する。また、転送実行中の命令が実行回数付き命令である場合には、残りの実行回数を残実行回数退避レジスタ3bに退避する。なお、実行回数付きでない命令を実行中であった場合には、残りの実行回数を1として残実行回数退避レジスタ3bに退避する。また、割り込み信号が入力した場合には、転送実行中の命令が終了した後、同様の退避を行う。
【0056】
例外処理部6は、例外を発生させる可能性のある演算器もしくはデータ転送器が例外発生信号を出力する例外バス33と、外部割り込みを発生させる割込みコントローラに接続している。また、アドレスバス31、データバス32に接続した例外原因レジスタ6aを具備している。
【0057】
例外原因レジスタ6aは、例外の原因となった演算器もしくはデータ転送器を示すデータ、あるいは、割り込みが発生された原因を示すデータが格納されており、格納されたデータは、アドレスバス31およびデータバス32を使ってバスマスタ3あるいは命令取り出し器2などから読み出すことができる。
【0058】
例外処理部6は、例外バス33を通じて、例外バス33に接続する演算器もしくはデータ転送器が出力する例外発生信号を検出すると、例外発生信号に基づいて例外原因となる演算器もしくはデータ転送器を特定し、例外原因レジスタ6aへ特定された例外原因を格納する。また、例外が発生していない状態では、割込みコントローラからの割り込み信号を検出した場合には、これを受け付け、例外原因レジスタ6aに割り込み原因を格納する。さらに、例外もしくは割り込みが発生した場合、バスマスタ3に例外信号を出力し、例外もしくは割り込みが発生したことを通知する。この例外信号は、例外処理を行う例外ハンドラによって例外原因が除去されるか、割り込みハンドラによって割り込み処理が終了するまで保持される。
【0059】
このようなプロセッサ1では、命令取り出し器2では、命令発行器23が、プログラムカウンタ21に従ってアドレス生成器22が生成するアドレスを読み出しアドレスとして、順次メモリ10から命令を読み出し、命令格納レジスタ24経由でバスマスタ3へ転送する。
【0060】
バスマスタ3では、デコーダ3aが命令格納レジスタ24より出力された命令を解析し、アドレスバス31に接続された図示しないデータ転送器または演算器のレジスタを選択する。このとき、データ転送元のレジスタと、データ転送先のレジスタとが選択されることにより、選択されたレジスタ間でのデータバス32を通じたデータ転送が行われる。データ転送器または演算器は、単一の機能を有しており、このようなデータ転送によって入力レジスタにデータが格納されると、所定の処理を開始し、出力レジスタがある場合には、出力レジスタに演算結果を格納する。また、処理の途中で例外が発生した場合には、処理を中断し、例外バス33を通じて例外発生出力信号を出力する。さらに、具備するレジスタの読み出しを許可し、例外処理部6あるいはバスマスタ3からレジスタの内容が読み出せるようにしておく。
【0061】
例外処理部6は、例外バス33を通じて例外発生信号が出力されたことを検出すると、例外原因のデータ転送器または演算器を特定して例外原因レジスタ6aに格納し、例外信号をバスマスタ3へ出力する。例えば、例外が発生すると、レジスタの読み出しが可能となることから、これにより判別してもよい。
【0062】
バスマスタ3は、例外信号を受け付けると、データ転送処理を停止し、停止した命令のアドレスを実行中命令退避レジスタ3cに格納し、残りの実行回数を残実行回数退避レジスタ3bへ格納する。その後、プログラムカウンタ21の値を読み出し、プログラムカウンタ退避レジスタ25へ格納し、プログラムカウンタ21に例外ハンドラの先頭アドレスをプログラムカウンタ21に転送する。
【0063】
以上のように、例外の発生したデータ転送器もしくは演算器のみを停止し、例外ハンドラへ移行しても、例外の発生した演算器やデータ転送器は出力データの準備ができていないため、もし後続命令が例外の発生した演算器やデータ転送器のレジスタにアクセスしようとしても待たされ、後続命令の実行結果に例外発生の影響が及ぶことがない。また、例外の発生した演算器やデータ転送器の入力レジスタも同様に書き込みが待たされるため、入力レジスタのデータを解析すれば例外の原因の特定ができる。
【0064】
ここで、図3、図4、図5を用いて、各演算器もしくはデータ転送器と、例外処理部6と、バスマスタ3の動作について、具体的に説明する。ここでは、例として、例外が発生した場合について説明する。なお、割り込みが発生した場合の処理の内容は、例外処理部6およびバスマスタ3とも例外時の場合とは、命令の中断を行わず終了後に行うことを除き、同様である。ただし、例外ハンドラは、割り込みハンドラになる。
【0065】
図3、図4、図5は、各演算器もしくはデータ転送器、例外処理部およびバスマスタの間のシーケンス例を示す図である。
図3は、例外発生から例外信号出力までのシーケンス例である。
【0066】
タイミングT101において、演算器もしくはデータ転送器9に例外が発生する。続いて、タイミングT102において、例外が発生した演算器もしくはデータ転送器9の処理が停止される。さらに、タイミングT103において、例外バス33を通じて例外発生信号が出力される。その後、タイミングT104において、入力レジスタおよび出力レジスタがアドレスバス31およびデータバス32を通じて読み出せるように、レジスタ読み出しが許可される。以降、例外が発生した演算器もしくはデータ転送器9は、例外原因が除去されるのを待つ。
【0067】
一方、タイミングT105において、例外バス33に接続する例外処理部6によって、演算器もしくはデータ転送器9が出力した例外発生信号が検出され、例外を発生させた演算器もしくはデータ転送器9が特定され例外原因レジスタ6aに格納される。続いて、バスマスタ3に対して例外信号が出力される。
【0068】
次に、図4を用いて説明する。図4は、例外信号出力からハンドラ実行までのシーケンス例である。
タイミングT107において、例外処理部6によって出力された例外信号がバスマスタ3に入力され、データ転送命令の実行が停止される。続いて、タイミングT108において、停止したデータ転送命令のアドレスが実行中命令退避レジスタ3cに退避され、実行回数付き命令の残りの実行回数である残回数を残実行回数退避レジスタ3bに退避される。続く、タイミングT109において、命令取り出し器2のプログラムカウンタ21がプログラムカウンタ退避レジスタ25に退避され、例外処理復帰後の最初の命令のアドレスが退避される。その後、タイミングT110において、プログラムカウンタ21に、例外ハンドラのアドレスが転送され、制御が例外ハンドラに移る。例外ハンドラは、例外原因に応じて処理が異なるが、処理の分岐は、例外ハンドラが例外原因レジスタ6aの内容を参照し、対象の演算器もしくはデータ転送器9のレジスタ内容を確認することにより、原因を特定して行う。また、分岐は、バスマスタ3が例外原因レジスタ6aを参照して行うようにしてもよい。以上のようにして、プログラムカウンタ21の内容が例外ハンドラのアドレスに書き換わり、タイミングT111において、ハンドラルーチンの実行が開始される。
【0069】
次に、図5を用いて説明する。図5は、ハンドラ実行から例外復帰までのシーケンス例である。
図4のタイミングT111においてハンドラルーチンが開始されると、ハンドラルーチンでは、例外が発生した演算器もしくはデータ転送器9のレジスタを読み出し、例外原因を除去する処理を行う。例えば、データ転送器において、ページフォルトが発生したような場合には、ページングを行う。例外ハンドラのハンドラルーチンによって例外が除去されると、例外処理部6および演算器もしくはデータ転送器9によって例外原因が除去されたことが検出される。
【0070】
タイミングT112では、例外が発生していた演算器もしくはデータ転送器9の例外原因が除去されており、例外発生信号の出力が停止される。続いて、タイミングT113において、演算器もしくはデータ転送器9が初期化され、初期状態になる。一方、タイミングT112において、例外処理部6によっても例外原因が除去されたことが検出され、例外原因レジスタ6aから例外原因が削除される。続いて、例外信号の出力が停止される。図4では、同一のタイミングで例外発生信号の停止と例外原因削除が行われるとしたが、これらの処理は個々に行われるため、タイミングがずれてもかまわない。また、例外処理部6は、タイミングT112において演算器もしくはデータ転送器9が例外発生信号の出力を停止したことを受けて、例外原因削除を行うようにすることもできる。
【0071】
以上の処理によって、演算器もしくはデータ転送器9が初期化され、復帰可能な状態になる。また、例外信号が停止したことは、バスマスタ3へ通知される。
次のタイミングT114において、例外信号が停止されたことを検出したバスマスタ3によって、プログラムカウンタが復帰される。続いて、タイミングT115において、実行命令と繰り返し命令の残回数が復帰される。このとき、必要に応じて、例外を発生した演算器もしくはデータ転送器9にデータ転送を行い、例外が発生した命令を再実行させる。この場合、プログラムカウンタ21には、実行中命令退避レジスタ3cの示すアドレスが転送される。そして、この処理が実行された後、プログラムカウンタ退避レジスタ25に格納されたプログラムカウンタが、プログラムカウンタ21に転送される。その後、例外ハンドラの処理を抜ける。
【0072】
以上の処理によって、プロセッサ1は、例外発生前の状態に戻る。そして、タイミングT116において、中断されていた処理が再開され、新規命令の受け取りが開始される。
【0073】
なお、上記の説明では、アドレスバス31とデータバス32が1組の場合について説明したが、これらのバスが複数組ある場合には、例外処理部6は、例外が発生した演算器もしくはデータ転送器9の属するバスマスタを特定し、特定されたバスマスタに対してのみ例外信号を出力する。他のバスマスタは、そのまま処理の実行を続ける。また、演算器もしくはデータ転送器9は、例外処理部6によって特定されたバスマスタのみすべてのレジスタを読み出し許可にし、そのほかのバスマスタからの選択に対してはwait信号を出力する。
【0074】
次に、本発明のプロセッサを用いた例外処理方法について説明する。ここでは、例として、図1に示したデータ読み出し器61に例外が発生した場合の読み出し器61の動作と、それに対する例外処理方法について説明する。
【0075】
図6は、読み出し器における処理の流れを示すフローチャートである。
ステップS01において、読み出し器61は、入力レジスタのデータ格納が完了したかどうかを確認している。入力レジスタのデータ格納が完了していない場合は、完了するまでステップS01の待ち状態を継続する。入力レジスタのデータ格納が完了している場合は、次のステップS02へ処理を進める。
【0076】
ステップS02において、パワーセーブ機能を解除する。なお、パワーセーブ機能は、それぞれが具備するデータ入力用のレジスタに、各処理を開始するために必要なデータ入力が行われていない処理待機状態において、処理回路への電流供給量を抑制する機能である。
【0077】
ステップS03において、データの読み出し処理を開始する。処理が開始された後、入力レジスタあるいは出力レジスタにおいてセレクト信号が受信された場合には、データ読み出し処理が終了するまでデータバス32上にWait信号を出力する。
【0078】
ステップS04において、入力レジスタに格納されたデータを読み出しアドレスとして、データキャッシュ4bおよび外部バスI/F5を通じて外部のメモリ10にアクセスし、データの読み出しを行う。
【0079】
ステップS05において、データ読み出し時に、例外が発生したかどうかを確認する。例外が発生していない場合は、処理をステップS06へ進め、例外が発生した場合には、ステップS11からステップS15までの例外発生時の処理を行う。
【0080】
ステップS06において、読み出したデータを出力用の結果格納レジスタに転送する。
ステップS07において、ステップS03において出力されたWait信号の出力を停止し、ステップS06で格納された結果格納レジスタのデータを読み出し可能にする。
【0081】
ステップS08において、パワーセーブ機能を設定し、次の処理開始までの消費電力を抑える。
以上の手順により、データ読み出しが行われる。
【0082】
ここで、例外発生時の処理について説明する。
ステップS11において、例外が発生したので、データ読み出し処理を停止する。
【0083】
ステップS12において、例外発生信号を例外バス33へ出力し、例外が発生したことを例外処理部6へ通知する。
ステップS13において、例外を発生した命令のデータ転送を行った特定バスマスタに対して、すべてのレジスタの読み出しを許可する。
【0084】
ステップS14において、例外原因が除去されたかどうかを確認する。例外原因が除去されていない場合は、ステップS14で待機状態を継続する。例外原因が除去された場合は、ステップS15へ処理を進める。
【0085】
ステップS15において、例外発生信号の出力を停止し、必要であれば初期化を行い、処理可能な状態に復帰させる。復帰後、処理をステップS07へ戻す。以上の処理手順により、例外発生が例外処理通知され、例外ハンドラによって例外原因が除去される。例外原因が除去され、処理可能な状態となった場合、ステップS07に戻って、次の命令処理のための動作を再開する。
【0086】
次に、例外処理方法について説明する。
図7は、例外処理が起動されるまでの処理の流れを示すフローチャートである。
【0087】
ステップS21において、命令取り出し器2よりデータ転送元のレジスタとデータ転送先のレジスタを指定した命令を受け取る。
ステップS22において、受け取った命令をデコードする。
【0088】
ステップS23において、命令のデコード結果に応じて、転送元レジスタおよび転送先レジスタに対して、それぞれアドレスバス31を通じてセレクト信号を出力する。また、命令に即値が含まれていた場合は、アドレスバス31を通じて転送先レジスタにセレクト信号を出力するとともに、即値データを生成してデータバス32に出力する。
【0089】
ステップS24において、例外処理部6が出力する例外信号を受信したか否かを確認する。例外信号を受信している場合は、ステップS25の例外処理を行う。例外信号を受信していない場合は、ステップS26へ処理を進める。
【0090】
ステップS25において、後述する例外処理の実行により例外ハンドラを起動し、例外原因を除去する。例外原因が除去された後、ステップS21に戻って、次の命令処理の実行を再開させる。
【0091】
ステップS26において、データバス32よりWait信号を受信したか否かを判断する。Wait信号を受信した場合は、ステップS27に進み、受信していない場合はステップS28に進む。ステップS27において、現在のセレクト信号の出力状態を保持する。従って、ステップS26での判断により、Wait信号の受信が停止するまでの間、ステップS27でのセレクト信号の出力状態が保持される。
【0092】
ステップS28において、受け取った命令中で実行回数が指定されていた場合に、残りの実行回数が「0」であるか否かを判断し、「0」である場合はステップS21に進んで新たな命令を受け取る。また、「0」でない場合はステップS29に進む。ステップS29において、残りの実行回数の値を「1」だけ減じて、ステップS23に戻る。従って、指定された実行回数の分だけ、ステップS23〜S28の処理が繰り返される。
【0093】
ここで、例外処理について説明する。
図8は、例外処理の流れを示すフローチャートである。
ステップS31において、データ転送処理を停止する。すなわち、アドレスバス31を通じてのセレクト信号の出力を停止し、命令に即値が含まれていた場合は、データバス32を通じての即値データの出力を停止する。
【0094】
ステップS32において、データ転送処理を停止した実行命令のアドレスと、実行回数が指定されている命令の場合の残りの実行回数をそれぞれ実行中命令退避レジスタ3cと、残実行回数退避レジスタ3bに退避させる。
【0095】
ステップS33において、アドレスバス31とデータバス32を通じて、プログラムカウンタ21の内容を読み出しプログラムカウンタ退避レジスタ25へ書き込む。
【0096】
以上の処理により、実行中のデータ転送命令が停止され、その命令のアドレスおよび残実行回数と、プログラムカウンタがそれぞれの退避レジスタに退避される。
【0097】
ステップS34において、アドレスバス31とデータバス32を通じて、プログラムカウンタ21に、例外を処理する例外ハンドラの先頭アドレスを転送する。プログラムカウンタ21を例外ハンドラの先頭アドレスにしたことにより、次に実行される命令は、例外ハンドラの先頭命令となり、例外ハンドラに制御が移る。
【0098】
ステップS35において、ステップS34の処理によって例外ハンドラの命令が順次実行される。例外ハンドラでは、例外原因を特定し、その例外原因を除去する処理が行われる。これにより、例外原因が削除され、これに伴って、例外処理部6による例外信号の出力は停止され、データ読み出し器は初期状態に復帰し、例外発生信号の出力が停止される。この後、必要に応じて例外を発生したデータ読み出し器にデータ転送を行い、例外が発生した命令を再び実行させる。最後に、それぞれの退避レジスタに格納されたプログラムカウンタ、実行命令アドレス、残実行回数を復帰し、例外ハンドラを抜ける。
【0099】
ステップS36において、例外ハンドラによる例外除去処理が完了し、実行が再開される。
例外が発生しても、処理が停止されるのは例外を発生した演算器もしくはデータ転送器のみであり、そのとき動作していた他の演算器もしくはデータ転送器は、正常に処理を行った後、停止している。もし、例外の発生した演算器もしくはデータ転送器のレジスタにアクセスしようとしても、Wait信号により待たされた状態を継続する。このため、他の演算器もしくはデータ転送器の実行結果に例外発生の影響が及ぶことがない。従って、例外処理により例外が発生した演算器もしくはデータ転送器の例外原因が除去され、例外が発生した命令が再度実行されて正常に完了すれば、そのまま処理を再開させることができる。このように、例外からの復帰時に例外が発生した以外の演算器もしくはデータ転送器に再度演算を実行させる必要がなく、例外からの復帰に要する時間を短縮することができる。この結果、全体の処理速度を向上させることができる。
【0100】
【発明の効果】
以上説明したように、本発明のプロセッサでは、転送制御手段によるデータ転送制御のみによって、各演算手段の動作が制御される。従って、例外発生時に転送制御手段は、例外発生時に、実行命令やプログラムカウンタを退避レジスタに退避し、処理を停止させる。このとき、例外受付手段は、演算手段の出力する例外発生信号により例外が発生した演算手段を正確に特定している。さらに、例えば、その演算手段のレジスタを読み出すことにより、例外の発生状態をより正確に特定することができる。また、例外が発生した以外の演算手段は、処理終了後に自動的に停止するため、例外の復帰時に再度演算をさせる必要がない。この結果、例外からの復帰に要する時間を短縮し、全体の処理速度を向上させることができる。
【0101】
また、本発明の例外処理方法では、レジスタ間のデータ転送制御のみによって各演算手段の動作が制御されるプロセッサに例外が発生した場合、例外発生時の実行命令とプログラムカウンタを退避レジスタに退避し、例外が発生したことが特定された演算手段のレジスタを読み出すことにより、例外の発生状態を正確に特定することができる。
【図面の簡単な説明】
【図1】本発明のプロセッサの構成例を示す機能ブロック図である。
【図2】命令取り出し器、バスマスタおよび例外処理部の各内部構成を示すブロック図である。
【図3】例外発生から例外信号出力までのシーケンス例である。
【図4】例外信号出力からハンドラ実行までのシーケンス例である。
【図5】ハンドラ実行から例外復帰までのシーケンス例である。
【図6】データ読み出し器における処理の流れを示すフローチャートである。
【図7】例外処理が起動されるまでの処理の流れを示すフローチャートである。
【図8】例外処理の流れを示すフローチャートである。
【図9】従来のプロセッサの構成例を示す機能ブロック図である。
【符号の説明】
1・・・・・・プロセッサ、2・・・・・・命令取り出し器、3・・・・・・バスマスタ、3a・・・・・・デコーダ、3b・・・・・・残実行回数退避レジスタ、3c・・・・・・実行中命令退避レジスタ、4a・・・・・・命令キャッシュ、4b・・・・・・データキャッシュ、5・・・・・・外部バスI/F、6・・・・・・例外処理部、6a・・・・・・例外原因レジスタ、10・・・・・・メモリ、21・・・・・・プログラムカウンタ、22・・・・・・アドレス生成器、23・・・・・・命令発行器、24・・・・・・命令格納レジスタ、25・・・・・・プログラムカウンタ退避レジスタ、31・・・・・・アドレスバス、32・・・・・・データバス、33・・・・・・例外バス、61・・・・・・読み出し器、62・・・・・・書き出し器、63・・・・・・メモリ転送器、64・・・・・・スタック処理器、65・・・・・・データ交換器、67・・・・・・整数加算器、68・・・・・・整数減算器、69・・・・・・整数乗算器、70・・・・・・整数除算器、71・・・論理積演算器、72・・・・・・論理和演算器、73・・・・・・排他的論理積演算器、74・・・・・・排他的論理和演算器、75・・・・・・ビット反転演算器、76・・・・・・浮動小数加算器、77・・・・・・浮動小数減算器、78・・・・・・浮動小数乗算器、79・・・・・・浮動小数除算器、80・・・・・・積和演算器、81・・・・・・汎用レジスタ
Claims (10)
- 読み込んだ命令に従って動作するプロセッサにおいて、
レジスタ間でデータを転送するためのレジスタ間転送手段と、
前記レジスタ間転送手段を通じてデータが入力される演算データレジスタとデータが出力される結果格納レジスタとを具備し、すべての前記演算データレジスタにデータが入力されると、入力されたデータを用いて所定の演算処理を行い、その演算結果を前記結果格納レジスタに書き込み、例外の発生で処理を中断して例外発生信号を出力する、それぞれ単一の演算機能を有する複数の演算手段と、
前記例外発生信号を伝える例外発生信号線に接続し、前記例外発生信号が出力されたことを検出すると、その例外原因を特定し、例外発生の通知を行う例外受付手段と、
例外発生時の情報を格納する退避レジスタを具備し、通常時にはデータの転送先および転送元のレジスタを指定する情報が記述された前記命令を読み込んでデコードすることにより前記レジスタ間転送手段を通じたデータ転送動作を制御し、前記例外発生の通知によって転送実行中の命令を停止し、前記命令および次に実行される命令が格納されているアドレスを示すプログラムカウンタの値を前記退避レジスタに格納し、例外処理を実行させるためのプログラムが格納された先頭アドレスを前記プログラムカウンタに書き込むことによって前記例外処理に制御を移す転送制御手段と、
を有し、前記例外発生の通知は前記転送制御手段にのみ通知される、
ことを特徴とするプロセッサ。 - 前記例外受付手段は、さらに、外部割り込みを発生させる割り込み制御手段と接続し、前記割り込み制御手段が発生させる外部割り込み信号を検出すると、割り込み発生の通知を行い、
前記転送制御手段は、前記割り込み発生の通知によって、転送実行中の命令が終了すると、前記命令および前記プログラムカウンタの値を前記退避レジスタに格納し、割り込み処理を実行させるためのプログラムが格納された先頭アドレスを前記プログラムカウンタに書き込むことによって前記割り込み処理に制御を移すことを特徴とする請求項1記載のプロセッサ。 - 前記転送制御手段は、前記例外処理または前記割り込み処理から制御が戻ってきた場合、前記退避レジスタに格納した停止させた転送実行中の命令の復帰と次の命令アドレスを前記プログラムカウンタに転送し、処理を復帰させることを特徴とする請求項2記載のプロセッサ。
- 少なくとも前記例外発生時に、前記演算手段の前記演算データレジスタに入力されたデータを読み出し、要求元へ転送する入力データ転送手段を有することを特徴とする請求項1記載のプロセッサ。
- 前記例外受付手段は、前記例外原因を格納し、レジスタのデータを要求元へ転送するデータ転送手段を通じて前記例外原因を読み出し可能な例外原因レジスタを具備し、特定された前記例外原因を前記例外原因レジスタに格納することを特徴とする請求項1記載のプロセッサ。
- 前記転送制御手段は、前記例外原因レジスタに格納された前記例外原因に応じて前記例外原因ごとに用意された前記例外処理の先頭アドレスを選択し、前記プログラムカウンタに転送することを特徴とする請求項5記載のプロセッサ。
- 外部のメモリから読み込んだデータ、および前記メモリへ書き出すデータを一時記憶するデータキャッシュと、
前記レジスタ間転送手段を通じてデータの入出力が行われる第1のアドレスレジスタと第1のデータレジスタを具備し、前記第1のアドレスレジスタにデータが入力されると前記データキャッシュを通じて前記第1のアドレスレジスタのデータで指示される前記メモリからデータを読み出して前記第1のデータレジスタに転送するデータ読み出し手段と、
前記レジスタ間転送手段を通じてデータの入出力が行われる第2のアドレスレジスタと第2のデータレジスタを具備し、前記第2のアドレスレジスタと前記第2のデータレジスタの双方にデータが入力されると前記データキャッシュを通じて前記第2のデータレジスタのデータを前記第2のアドレスレジスタのデータで指示される前記メモリに転送するデータ転送手段と、
前記レジスタ間転送手段を通じてデータの入出力が行われる第3のアドレスレジスタと第4のアドレスレジスタを具備し、前記第3のアドレスレジスタと前記第4のアドレスレジスタの双方にデータが入力されると、入力されたデータをそれぞれ転送元アドレスおよび転送先アドレスとして前記データキャッシュを通じて前記メモリ上のデータ転送を行うメモリ転送手段と、
をさらに有し、
前記データ読み出し手段、前記データ転送手段および前記メモリ転送手段は、例外が発生すると処理を中断して前記例外発生信号を出力することを特徴とする請求項1記載のプロセッサ。 - 少なくとも前記例外発生時に、前記データ読み出し手段、前記データ転送手段および前記メモリ転送手段の前記アドレスレジスタあるいは前記データレジスタに入力されたデータを読み出し、要求元へ転送する入力データ転送手段を有することを特徴とする請求項7記載のプロセッサ。
- 前記命令は、その実行回数を指定する情報をさらに含み、
前記転送制御手段は、前記例外発生時に前記実行回数が指定された命令を実行中の場合は停止した時点での残りの実行回数を前記退避レジスタに格納することを特徴とする請求項1記載のプロセッサ。 - 読み込んだ命令に従って動作するプロセッサの例外処理方法において、
レジスタ間でデータを転送するレジスタ間転送手段を通じてデータが入力される演算データレジスタにデータが入力されると、入力されたデータを用いて所定の演算処理を行い、前記レジスタ間転送手段を通じてデータが出力される結果格納レジスタにその演算結果を書き込むとともに、例外の発生で処理を中断して例外発生信号を出力する、それぞれ単一の演算機能を有する複数の演算手段を、データの転送先および転送元のレジスタを指定する情報が記述された前記命令をデコードして前記レジスタ間転送手段を通じたデータ転送を制御することによって動作制御し、
前記演算手段の出力した前記例外発生信号を検出すると、前記例外発生信号に基づいてその例外原因を検出し、
例外発生時に転送実行中の命令を停止し、前記命令および次に実行される命令が格納されているアドレスを示すプログラムカウンタの値を退避レジスタに退避し、
前記例外原因に応じた例外処理を実行させるためのプログラムが格納された先頭アドレスを前記プログラムカウンタに書き込むことによって制御を前記例外処理に移すことを特徴とする例外処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003161489A JP4311087B2 (ja) | 2003-06-06 | 2003-06-06 | プロセッサおよび例外処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003161489A JP4311087B2 (ja) | 2003-06-06 | 2003-06-06 | プロセッサおよび例外処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004362368A JP2004362368A (ja) | 2004-12-24 |
JP4311087B2 true JP4311087B2 (ja) | 2009-08-12 |
Family
ID=34053883
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003161489A Expired - Fee Related JP4311087B2 (ja) | 2003-06-06 | 2003-06-06 | プロセッサおよび例外処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4311087B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113608914B (zh) * | 2021-08-10 | 2024-04-26 | 安谋科技(中国)有限公司 | 一种芯片、芯片的功能安全检测方法、介质和电子设备 |
-
2003
- 2003-06-06 JP JP2003161489A patent/JP4311087B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004362368A (ja) | 2004-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4119945B2 (ja) | タスク処理装置 | |
US6772355B2 (en) | System and method for reducing power consumption in a data processor having a clustered architecture | |
JPH0816870B2 (ja) | 命令パイプラインをドレーンさせるためのシステム | |
JPH09138716A (ja) | 電子計算機 | |
JP3439033B2 (ja) | 割り込み制御装置及びプロセッサ | |
JPWO2008023427A1 (ja) | タスク処理装置 | |
JP4689087B2 (ja) | 情報処理装置及び省電力移行制御方法 | |
KR101077425B1 (ko) | 효율적 인터럽트 리턴 어드레스 저장 메커니즘 | |
JP2011013775A (ja) | 情報処理装置、情報処理装置の制御方法及びプログラム | |
JP4311087B2 (ja) | プロセッサおよび例外処理方法 | |
JP4800582B2 (ja) | 演算処理装置 | |
JPH1196006A (ja) | 情報処理装置 | |
US5784606A (en) | Method and system in a superscalar data processing system for the efficient handling of exceptions | |
JPH1049373A (ja) | パイプライン・デジタル・プロセッサにおいて多重で高精度の事象を操作する方法と装置 | |
CN116841614B (zh) | 乱序访存机制下的顺序向量调度方法 | |
JPH03175548A (ja) | マイクロプロセッサ及びアドレス制御方式 | |
JP4264622B2 (ja) | プロセッサ | |
KR100765867B1 (ko) | 계산기와 그 제어 방법 | |
JP3729142B2 (ja) | 並列演算処理装置 | |
JPH0133856B2 (ja) | ||
JPH0524537B2 (ja) | ||
JP3719241B2 (ja) | 演算装置 | |
CN114579264A (zh) | 处理装置、处理系统和处理方法 | |
JP2761324B2 (ja) | 高速演算処理方式 | |
JP3206394B2 (ja) | 5段パイプライン構造のプログラマブルコントローラ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060418 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080808 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080819 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081017 |
|
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: 20090421 |
|
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: 20090504 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120522 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120522 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |