JP2003058381A - プログラムによる例外処理設定を可能にしたプロセッサ - Google Patents

プログラムによる例外処理設定を可能にしたプロセッサ

Info

Publication number
JP2003058381A
JP2003058381A JP2001246567A JP2001246567A JP2003058381A JP 2003058381 A JP2003058381 A JP 2003058381A JP 2001246567 A JP2001246567 A JP 2001246567A JP 2001246567 A JP2001246567 A JP 2001246567A JP 2003058381 A JP2003058381 A JP 2003058381A
Authority
JP
Japan
Prior art keywords
exception
processing
instruction
register
processor
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.)
Withdrawn
Application number
JP2001246567A
Other languages
English (en)
Inventor
Katsunobu Nomura
勝信 野村
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2001246567A priority Critical patent/JP2003058381A/ja
Priority to US10/097,375 priority patent/US20030037227A1/en
Publication of JP2003058381A publication Critical patent/JP2003058381A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【課題】ユーザプログラムにより簡単に例外発生時の処
理を選択することができるプロセッサを提供する。 【解決手段】ユーザプログラムの命令コードを供給さ
れ,命令コードに対応する処理を行う通常処理ユニット
(34)を有するプロセッサにおいて,例外が発生した時の
処理を選択して対応する命令コードを処理ユニットに供
給する例外処理指令ユニット(36)を設けることを特徴と
する。例外処理指令ユニットは,複数の例外処理命令を
処理IDに対応して格納した例外処理命令メモリ(50)と,
ユーザプログラムにより設定された処理IDを格納する選
択処理IDレジスタ(52)と,例外発生時に生成される例外
発生信号を受信し,所定の例外が発生したことを識別す
る例外識別手段(58)と,例外識別手段により識別された
例外に対応する処理IDを前記選択処理IDレジスタから読
み出し,その処理IDにしたがって前記例外処理命令メモ
リ内に格納されている例外処理命令の命令コードを出力
する例外処理命令選択・出力手段(60)とを有する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は,所定のデータ処理
を行うプロセッサに関し,特に例外発生時の処理をユー
ザプログラムにより任意に設定可能にしたプロセッサに
関する。
【0002】
【従来の技術】CPUやデジタルシグナルプロセッサな
どの所定のデータ処理を行うプロセッサにおいて,デー
タ処理中に発生する例外的な事象に対して,任意の例外
処理を行わせることが必要になる。例外的な事象として
は,演算時のオーバーフロー,アンダーフロー,ゼロ除
算の発生などが考えられる。このような例外が発生する
と,通常,ALUなどの演算ユニットから例外発生信号
が出力され,それに応答して,割込を発生させOS管理
下の例外処理プログラムを実行する。従って,一般的に
はユーザプログラムにより例外処理を任意に設定するこ
とはあまり容易ではない。
【0003】ここでプログラムとは,プロセッサである
演算装置で所望の手続を行うための処理手順を記述した
ものであり,C言語やアセンブラー言語から実行可能な
オブジェクトに変換されたものや,それらの言語で記述
されたものまでを意味する。
【0004】図1は,従来の例外発生時の割込処理プロ
グラムによる処理例を説明するための図である。ここで
は,C言語で記述されたプログラムP1の繰り返し積和
演算時にオーバーフローの例外が発生したと仮定してい
る。このプログラムP1は,変数としてiとsumを整数
として定義し,レジスタの設定など所定の前処理Aを行
ってから,変数iを0から127までについて,処理B
と,a[i]×b[i]を変数sumに加算処理し,処理
Cを行った後に,オーバーフローが発生していたら例外
処理Dを行うことが記述されている。ここで,a,bは
大きさ128の配列変数である。かかるプログラムP1
において,積和演算でオーバーフローの例外が発生する
可能性がある。
【0005】かかる予期しない例外の発生に対応するた
めに,プロセッサは,例外発生時に割込を発生し,割込
処理プログラムを実行し,実行後に復帰する機能を有す
る。このような例外発生時の割込処理プログラムの実行
を可能にするために,プロセッサの処理ユニット内に特
別のハードウエアが設けられている。
【0006】図1の右側には,上記の例外が発生した時
の処理を行う処理ユニット内のハードウエア構成が示さ
れる。処理ユニット10内には,割込が発生したときに
割込処理プログラムを実行するための前処理と後処理を
行う割込コントローラ12と,例外が発生した事実を保
持する例外発生ステータスレジスタ14と,割込を許可
するか否かを示すイネーブルフラグが設定されるイネー
ブルフラグレジスタ16と,割込先の複数のアドレスを
保持するジャンプテーブル18と,分岐先アドレスレジ
スタ20と,割込時にレジスタ内のデータやプログラム
カウンタ24内のカウント値を退避させるスタックレジ
スタ22とを有する。割込コントローラ12が割込に必
要な前処理を完了すると,割込処理プログラム26が実
行され,それが終了すると割込コントローラ12が後処
理を行って,元のプログラムP1に復帰する。ジャンプ
テーブル18には,複数の例外に対応して割込処理プロ
グラムのアドレスが格納されていて,割込コントローラ
12は,割込発生信号により発生した例外の種類を判別
し,対応するアドレスへの分岐を可能にする。
【0007】図2は,上記の割込処理プログラムを用い
た例外処理の手順を示す図である。図中左側のプログラ
ムP1は,図1のプログラムP1と同じである。プログ
ラムP1を実行中に,i=0から127までの繰り返し
処理を伴う「for文」内にて,演算結果がオーバーフ
ローしてオーバーフロー例外が発生すると,図示しない
演算ユニットであるALUが例外発生信号を処理ユニッ
ト10に供給し,処理ユニット10内の割込コントロー
ラ12が処理を開始する(S1)。割込コントローラ1
2は,まず,例外発生ステータスレジスタ14に割込発
生フラグを書き込み,現在実行中のプログラムのアドレ
スであるプログラムカウンタ24内のアドレスをスタッ
クレジスタ22内に保存(退避,プッシュ)する(S
2)。このプッシュ処理では,レジスタ類のデータもス
タックレジスタ22に退避させられる。そして,割込コ
ントローラ12は,割込イネーブルフラグレジスタ16
内の割込フラグがイネーブル状態であることを確認し
て,発生した例外に対応する割込処理プログラムのアド
レスをジャンプテーブル18から取得する(S3)。そ
の後,取得した割込処理プログラムのアドレスをプログ
ラムカウンタ24に書き込んで(S4),割込処理プロ
グラムへの分岐のための前処理を完了する。
【0008】割込コントローラ12による前処理が終了
すると,プロセッサは,割込処理プログラムを実行し
て,例外発生時の処理を行う(S5)。それが終了する
と,割込コントローラ12は,スタックレジスタ22か
ら復帰先アドレスやレジスタデータを復帰(ポップ)さ
せて,プログラムカウンタ24にそのアドレスを書き込
み(S6),元のプログラムP1に復帰する(S7)。
【0009】上記の処理において,ユーザプログラムに
よりあらかじめ割込イネーブルフラグレジスタ16のイ
ネーブルフラグを割込許可(イネーブル)に設定してお
くことで,オーバーフローなどの例外が発生した時,バ
ックグランドで自動的に例外時の割込処理プログラムを
実行させることができる。但し,この割込処理プログラ
ムは,通常オペレーション・システム(OS)の管理下
で実行されるため,ユーザプログラムにより自由に処理
を設定することは困難若しくは不可能である。以上が,
例外処理を割込により対応する手順である。
【0010】また,ユーザプログラムにより,オーバー
フローの例外発生に対する割込のイネーブルフラグ16
をディセーブルに設定しておけば,処理ユニット10内
の割込コントローラ12は,単にオーバーフローの例外
が発生したことを示す例外発生ステータスをレジスタ1
4内に設定するだけであり,割込処理プログラム26へ
の分岐は行わない。その場合は,ユーザプログラムP1
では,オーバーフローの例外が発生しても,i=0〜1
27まで演算が繰り返され,演算終了後にオーバーフロ
ー発生の有無がステータスレジスタ14から取得するこ
とができるのみである。
【0011】
【発明が解決しようとする課題】上記の例外発生時の処
理方法は,ユーザプログラム実行のバックグランドでO
Sの管理下の割込処理プログラムを実行するものであ
り,ユーザプログラムから任意の処理に設定することは
困難である。もしそれが可能であっても,そのためには
レジスタ値を変更するなど複雑な処理を必要とし,ユー
ザプログラムから例外発生時の処理を任意に選択できる
というにはほど遠いものである。
【0012】例として,前述のユーザプログラムP1の
ように繰り返して積和演算が行われる処理において,オ
ーバーフローが発生した時点でその後の処理を中断して
繰り返し処理を抜ける必要がある場合を想定する。つま
り,オーバーフローが発生したら,それ以上積和算を繰
り返しても正しい演算結果が得られないので,繰り返し
処理を継続することに意味がない。
【0013】このような要求がある場合,図1,2に示
した割込コントローラ12と割込処理プログラム26と
を利用して繰り返し処理を抜けるためには,割込処理プ
ログラム26にユーザプログラムP1の繰り返し処理の
後のアドレスに分岐するという処理を行わせる必要があ
る。しかし,OS管理下の割込処理プログラム26でそ
のような処理を行わせることは複雑な設定,命令が必要
になり現実的ではない。しかも,割込コントローラ12
によるスタックレジスタへのプッシュ処理やポップ処理
が伴ってしまい,単なる分岐処理のために無駄なオーバ
ーヘッドを招いてしまう。
【0014】図3は,例外発生時の分岐処理をユーザプ
ログラム内に記述した例を示す図である。ユーザプログ
ラムP2内の繰り返し処理が行われるfor文内に,
「if (overflow==true)break;」のプログラム命令を追
加することで,オーバーフローの発生を示す例外発生ス
テータスレジスタ14が「true」になっているか否かの
監視を毎回実行し,例外が発生していれば,ブレーク命
令により分岐先命令に分岐するようにすることが可能で
ある。この例では,割込イネーブルフラグ16は,ディ
セーブルに設定されていることが前提であり,それに伴
い割込コントローラにより割込処理プログラムが実行さ
れることはない。
【0015】しかし,図3の方法では,for文のなか
でユーザプログラム内の例外監視・分岐命令を繰り返し
実行する必要があり,オーバフローの例外が発生してい
ない場合は,無駄な命令が繰り返されることになる。そ
して,かかる命令の実行には,プロセッサの処理時間を
必要とし,プロセッサのパフォーマンスの低下を招く。
従って,図3の方法は,繰り返し処理の回数が比較的少
ないユーザプログラムの場合に有利な方法である。
【0016】また,前述したとおり,ユーザプログラム
の前処理Aにて,割込イネーブルフラグ16をディセー
ブルに設定しておけば,例外が発生しても例外処理を行
うことなく,繰り返し処理を完了してそのループを抜け
てくることが可能になる。繰り返し処理回数が少ない場
合は,むしろこの方法が有利になる。
【0017】以上のように,例外が発生した時の対処方
法としては,(1)例外が発生しても何も処理を行わな
い方法,(2)割込が発生したら,図1,2に示したよ
うな割込コントローラと割込処理プログラムを利用して
割込処理を行う方法,(3)例外が発生したら指定した
アドレスへ分岐する方法など,様々な処理が考えられ
る。
【0018】しかしながら,従来のプロセッサは,図
1,2のような例外処理手段しか備えておらず,しかも
その例外処理を任意に設定することは困難である。更
に,従来のプロセッサは,プロセッサの内部状況や外部
状況に応じて,複数の例外処理を動的に選択できる構成
にはなっておらず,プロセッサの処理負荷に応じた最適
な例外処理の実行が難しいという課題もある。
【0019】そこで,本発明の目的は,ユーザプログラ
ムにより,例外発生時の処理を複数の処理から任意に選
択し設定することで,選択された処理を実行することが
できるプロセッサを提供することにある。
【0020】更に,本発明の別の目的は,ユーザプログ
ラムにより,プロセッサの外部または内部の状況に応じ
て例外発生時の処理を任意に選択し設定することができ
るプロセッサを提供することにある。
【0021】
【課題を解決するための手段】上記の目的を達成するた
めに,本発明の一つの側面によれば,ユーザプログラム
の命令コードを供給され,命令コードに対応する処理を
行う通常処理ユニットを有するプロセッサにおいて,例
外が発生した時の処理を選択して対応する命令コードを
処理ユニットに供給する例外処理指令ユニットを設ける
ことを特徴とする。例外処理指令ユニットは,複数の例
外処理命令を処理IDに対応して格納した例外処理命令メ
モリと,ユーザプログラムにより設定された処理IDを格
納する選択処理IDレジスタと,例外発生時に生成される
例外発生信号を受信し,所定の例外が発生したことを識
別する例外識別手段と,例外識別手段により識別された
例外に対応する処理IDを前記選択処理IDレジスタから読
み出し,その処理IDにしたがって前記例外処理命令メモ
リ内に格納されている例外処理命令の命令コードを出力
する例外処理命令選択・出力手段とを有する。
【0022】上記の発明において,好ましい実施例で
は,例外処理指令ユニットは,プロセッサ内部の負荷状
態を格納する第1のステータスレジスタと,プロセッサ
外部から供給される外部状態を格納する第2のステータ
スレジスタとを有し,選択処理IDレジスタは,ユーザプ
ログラムにより,前記第1または第2のステータスレジ
スタに格納されている状態に応じて処理IDが設定される
ことを特徴とする。そして,前記例外処理命令選択・出
力手段は,その処理IDにしたがって,前記例外処理命令
メモリ内に格納されている例外処理命令の命令コードを
出力する。
【0023】また,上記の発明において,好ましい実施
例では,前記選択処理IDレジスタは,ユーザプログラム
により,複数の処理IDが設定され,前記例外識別手段は
識別した例外IDを生成し,前記例外処理命令選択・出力
手段は,選択処理IDレジスタから識別された例外IDに対
応する処理IDを読み出すことを特徴とする。
【0024】本発明のプロセッサは,上記のような複数
の例外処理命令をあらかじめ格納し,ユーザプログラム
によりレジスタに設定された例外処理の命令コードを出
力する例外処理指令ユニットを設けているので,ユーザ
プログラムにより例外発生時の例外処理を選択して設定
するだけで,任意の例外処理を短い動作サイクルで実行
させることができる。
【0025】
【発明の実施の形態】以下,図面を参照して本発明の実
施の形態例を説明する。しかしながら,本発明の保護範
囲は,以下の実施の形態例に限定されるものではなく,
特許請求の範囲に記載された発明とその均等物にまで及
ぶものである。
【0026】図4は,本発明の概念図である。本発明で
は,ユーザプログラム上で例外発生時の処理を設定する
と(S10),プロセッサが例外発生時にその発生した
例外に対応する例外処理を選択し(S13),通常の処
理ユニットに対してその例外処理の動作指令を行う(S
14)。そのために,プロセッサは,プログラムメモリ
からの命令コードをデコードして処理する処理ユニット
に加えて,複数の例外処理命令を格納したメモリを有
し,例外発生時に対応する例外処理命令の命令コードを
処理ユニットに供給する例外処理指令ユニットを有す
る。
【0027】更に,図4に示されるとおり,プロセッサ
は,プロセッサの内部状態を常に監視し(S11),ま
たプロセッサの外部状態についての情報も外部端子から
取得し(S12),それらの状態に応じて,例外処理が
選択される(S13)。
【0028】従って,ユーザはユーザプログラムによ
り,例外発生時の例外処理を選択して設定するだけで,
ユーザプログラムの処理のバックグランドで任意の例外
処理を行わせることができる。また,その例外処理を,
プロセッサの内外の状況に応じて設定することもでき,
ユーザプログラムの処理のバックグランドで状況に応じ
た最適の例外処理を行わせることもできる。
【0029】図5は,本実施の形態例におけるプロセッ
サの全体構成図である。プロセッサは,ユーザプログラ
ムなどのプログラムの命令コードが格納されているプロ
グラムメモリ30と,そのプログラムメモリのアドレス
を格納するプログラムカウンタ24と,プログラムメモ
リ30から読み出された命令コードを処理する処理ブロ
ック32と,処理ブロック32内のレジスタRa,Rb
に格納されたデータを演算する第1の演算ユニット38
と,データが格納されているデータメモリ42とを有す
る。
【0030】処理ブロック32内には,プログラムカウ
ンタ24のアドレスにしたがって読み出された命令コー
ドをデコードして所定の処理を行いレジスタRa,Rb
などにデータを格納する通常処理ユニット34と,その
他に各種のレジスタ群REGとを有する。また,プロセッ
サには,プログラムカウンタ24のアドレスを制御する
ための第2の演算ユニット46とマルチプレクサ44と
が設けられる。この第2の演算ユニット46により,プ
ログラムカウンタ24のアドレスが+1ずつインクリメ
ントされたり,相対アドレスS38が加算されたりした
結果が,再度プログラムカウンタ24に格納される。更
に,プロセッサには,第1の演算ユニット38の出力デ
ータとレジスタRaのデータのいずれかを選択するマル
チプレクサ40が設けられる。
【0031】例えば,データメモリ42内のデータXに
データYを加算するというユーザプログラムが実行され
たと仮定する。かかるユーザプログラムは,例えば,
(1)データXをデータメモリ42から読み出してレジ
スタRaに格納する,(2)データYをデータメモリ42
から読み出してレジスタRbに格納する,(3)レジスタ
RaとRbのデータを加算して,レジスタRaに格納する,
(4)データXが格納されていたアドレスに,レジスタ
Ra内の加算データを書き込むという4つの命令コードを
有する。
【0032】従って,プログラムカウンタ24に上記命
令コード(1)のアドレスが設定され,そのアドレスS
24に対応する命令コード(1)がプログラムメモリ3
0から読み出され,処理ブロック32内の通常処理ユニ
ット34に供給される。通常処理ユニット34は,その
命令コード(1)をデコードして命令コードに含まれて
いたデータメモリのアドレスをレジスタRaに設定し,デ
ータメモリ42へのデータXの読み出し処理を行い,読
み出されたデータXをレジスタRbに格納する。次に,第
2の演算ユニット46により命令コード(1)のアドレ
スが+1インクリメントされ,プログラムカウンタ24
に格納される。そのアドレスに対応する命令コード
(2)がプログラムメモリ30から読み出され,通常処
理ユニット34に供給される。通常処理ユニット34
は,その命令コード(2)をデコードして命令コードに
含まれていたデータメモリのアドレスをレジスタRaに設
定し,データメモリ42へのデータYの読み出し処理を
行い,読み出されたデータYをレジスタRaに格納する。
更に,プログラムカウンタ24のアドレスが+1インク
リメントされ,それに対応する命令コード(3)がプロ
グラムメモリ30から読み出され,通常処理ユニット3
4に供給される。通常処理ユニット34は,その命令コ
ード(3)をデコードしてレジスタRa,Rbのデータを第
1の演算ユニット38で加算し,その結果のデータS3
8を,レジスタRaに格納する。更に,プログラムカウン
タのアドレスがインクリメントされ,命令コード(4)
がプログラムメモリ30から読み出され,通常処理ユニ
ット34に供給される。そこで,命令コード(4)がデ
コードされて,レジスタRaのデータがデータメモリ42
のデータXの領域に書き込まれる。
【0033】以上のとおり,通常処理ユニット34に命
令コードS30を供給することにより,命令コードに対
応した処理が実行される。
【0034】本実施の形態例におけるプロセッサは,処
理ブロック32内に,通常処理ユニット34に加えて,
例外処理が発生した時の処理を選択して,その命令コー
ドS36を通常処理ユニット34に供給する例外処理指
令ユニット36を有する。この例外処理指令ユニット3
6は,演算ユニット38がオーバーフロー,アンダーフ
ロー,ゼロ除算などの例外発生時に生成する例外発生信
号EXを受信し,その発生した例外に対応してユーザプロ
グラムによりあらかじめ設定された例外処理を選択し,
その例外処理の命令コードS36を,通常処理ユニット
34に供給する論理回路ユニットである。
【0035】従って,ユーザプログラム実行中に例外が
発生すると,ユーザプログラムによりあらかじめ設定さ
れていた例外処理がバックグランドで選択され,通常処
理ユニット34により例外処理が実行されるので,ユー
ザプログラムにより簡単に且つ任意の処理を選択して設
定することができる。
【0036】図6は,本実施の形態例における例外処理
指令ユニットの構成図である。例外処理指令ユニット3
6は,例外発生時に行われる複数の処理命令があらかじ
め記憶されている例外処理命令メモリ50を有する。こ
の例外処理命令メモリ50は,例えばROMまたは図示
しないROMから命令コードをイニシャルロードされる
RAMであり,例外発生時に行われる複数の処理命令
(命令コードリスト)#1〜#Nを処理IDに対応して格
納する。更に,例外処理指令ユニット36は,ユーザプ
ログラムにより設定可能であり選択された処理IDが格納
される選択処理IDレジスタ52と,プロセッサ内部の負
荷状態が格納されるステータスレジスタ56(第1のス
テータスレジスタ)と,プロセッサの外部端子経由で供
給されたプロセッサ外部の状態が格納されるフラグレジ
スタ54(第2のステータスレジスタ)と,分岐処理命
令に対応する分岐アドレスを格納する分岐アドレスレジ
スタ57とを有する。
【0037】そして,例外処理指令ユニット36は,演
算ユニット38などから供給される複数の例外発生信号
EXを受信し,所定の例外の発生を識別し,その識別信号
または例外IDを出力する例外識別手段58を有する。例
外識別手段58は,単一の例外を識別するときは識別信
号S58を出力し,複数の例外を識別するときはその例
外IDを出力する。単一の例外識別の時は,識別信号S5
8は,「0」(無し)または「1」(有り)により例外
の発生の有無を示し,複数の例外を識別するときは,識
別信号S58は,「0」(無し)または例外ID(有り)
となる。
【0038】更に,例外処理指令ユニット36は,例外
識別手段58が供給する例外IDに応答して,例外IDに対
応した処理IDを選択処理IDレジスタ52から読み出し,
その処理IDに対応する処理命令を例外処理命令メモリ5
0から読み出す例外処理命令選択手段60を有する。こ
の例外処理命令選択手段60により選択された処理命令
の命令コードS36が,動作指令手段62から通常処理
ユニット34に出力される。
【0039】上記の機能を実現するために,選択処理ID
レジスタ52は,処理を必要とする例外事象に対応して
処理IDを格納できるように構成される。例えば,処理を
必要とする例外事象が3種類(例えばオーバーフロー,
アンダーフロー,ゼロ除算)ある時は,それらに対応す
る処理IDを格納する3つのレジスタ52が設けられる。
その場合,各レジスタ52は,例外IDと対応付けられ
る。そして,レジスタ52への処理IDの設定は,他のレ
ジスタ類への設定と同様にして行うことができる。
【0040】図7は,第1のユーザプログラム例を示す
図である。このプログラムP11は,図1,2に示した
プログラムと異なり,前処理Aとして図中64に示され
るとおり,例外処理指令ユニット36内の選択処理IDレ
ジスタ52に選択処理IDの3を設定し,更に分岐アドレ
スレジスタ57に処理ID=3の分岐命令に必要な分岐アド
レス「_exit_address」を設定する。そして,その分岐
アドレス「_exit_address」をプログラムP11のfo
r文の後の任意の位置に記述する。
【0041】例外処理命令メモリ50には,一例として
3つの例外処理が格納されているとする。図7の右上に
示されるとおり,処理#1は例外が発生しても何も処理
せずに無視する命令,処理#2は例外が発生すると図
1,2に示したような割込を発生して所定の割込処理プ
ログラムを実行する命令,処理#3は例外が発生すると
指定した分岐アドレス(分岐アドレスレジスタ内のアド
レス)に分岐する命令である。
【0042】上記のとおり,図7のユーザプログラムの
前処理にて,例外処理指令ユニット36内のレジスタ5
2,57に処理IDの「3」と「_exit_address」とがそ
れぞれ設定される。それにより,図6の例外処理指令ユ
ニットは,演算実行中にオーバーフローの例外が発生す
ると,例外識別手段58が例外発生信号EXからそれを識
別してそれに対応する例外IDまたは例外信号S58を例
外処理命令選択手段60に供給する。例外処理命令選択
手段60は,例外IDに対応して設定された処理IDを選択
処理IDレジスタ52から読み出し,その処理IDに対応す
る処理#3の分岐命令を例外処理命令メモリ50から読
み出す。そして,分岐アドレスレジスタ57に設定され
ている分岐先アドレスと上記の読み出した分岐命令コー
ドとが,動作指令手段62から通常処理ユニット34に
供給される。
【0043】従って,ユーザプログラムP11におい
て,前処理として例外処理指令ユニット内のレジスタ5
2に,例外発生時の処理IDを設定するだけで,図3のよ
うなプログラム命令によらずに,例外発生時に選択した
処理をバックグランドで実行させることができる。そし
て,例外処理指令ユニット36内のレジスタの設定は,
通常処理ユニット34内のレジスタの設定と同等の処理
により行うことが可能である。単にレジスタの数が増え
ただけである。
【0044】図8は,第2のユーザプログラム例を示す
図である。このユーザプログラムP12は,前処理Aの
前に,if文を実行して,外部端子Signalの値に応じて例
外発生時の処理を選択して設定するプログラムコード6
6を有する。それ以外は,図7のプログラムP11と同
じである。また,この例でも例外処理命令メモリ50に
は,3つの処理#1,#2,#3があらかじめ格納され
ている。
【0045】外部端子経由で入力される外部信号Signal
は,プロセッサの外部のステータスに関連する信号であ
り,例えば,プロセッサ外部の処理負荷が重くなってい
る時にSignal=1が,処理負荷が軽くなっている時にSig
nal=0が,それぞれフラグレジスタ54に設定される。
【0046】そこで,プログラムコード66が実行され
ると,フラグレジスタ54に設定された外部状況に応じ
て,比較的軽い処理IDの「3」か,比較的重い割込処理
IDの「2」かが,選択処理IDレジスタ52に設定され
る。外部の処理負荷が重い時は比較的軽い処理IDの
「3」が,軽い時は重い処理IDの「2」がそれぞれレジ
スタ52に設定される。そして,分岐命令に対応する処
理IDの「3」が設定されるときは,それに伴う分岐アド
レス「_exit_address」が分岐アドレスレジスタ57に
設定される。
【0047】上記のとおり,前処理の一部にif文を利用
して外部状況に応じた例外処理を例外処理指令ユニット
36内のレジスタ52に設定することで,その後の繰り
返し演算実行時にオーバーフローなどの例外事象が発生
したとき,状況に応じた最適の例外処理を,ユーザプロ
グラム実行のバックグランドで実行させることができ
る。尚,処理#2の場合は,例外処理指令ユニット36
で,割込命令コードが例外処理命令メモリ50から読み
出され,通常処理ユニット34に供給され,通常処理ユ
ニット34では,その割込命令に伴い割込コントローラ
による処理と割込処理プログラムの実行とが行われる。
これについては,図1,2で説明したとおりである。
【0048】処理#2に対応する割込処理プログラム
は,例えば,オーバーフロー発生回数をカウントするプ
ログラムであり,その場合は,繰り返し積和演算の正確
な演算結果を求めるのにオーバーフロー回数が利用され
る。また,処理#3の分岐命令の場合は,繰り返し積和
演算中に繰り返し演算ループ外の分岐アドレスに分岐す
るので,プロセッサの負荷が下げられる。
【0049】図9は,第3のユーザプログラム例を示す
図である。このユーザプログラムP13は,前処理Aの
前に,if文を実行して,内部状況が格納されているステ
ータスレジスタ56内のデータLoadの値に応じて例外発
生時の処理を選択して設定するプログラムコード67を
有する。また,この例でも例外処理命令目メモリ50に
は,3つの処理#1,#2,#3があらかじめ格納され
ている。
【0050】内部状況を示すデータLoadがステータスレ
ジスタ56に設定される。例えば,直前の一定期間にお
けるスリープモードの累計時間に応じて,現在のプロセ
ッサ内部の処理負荷を示す指数が求められ,その指数が
0〜1.0の範囲のデータLoadとしてステータスレジスタ
56に設定されるとする。その場合,負荷指数Loadが0.
5を越える重い状態では,例外発生時に何も処理しない
比較的軽い処理IDの「1」が選択処理IDレジスタ52に
設定される。また,負荷指数Loadが0.5以下の軽い状態
では,例外発生時に通常の割込処理IDの「2」が選択処
理IDレジスタ52に設定される。
【0051】図9のプログラムP13では,分岐命令の
処理#3は設定されていないので,分岐アドレスレジス
タ57への設定は行われない。
【0052】上記の前処理による例外処理の設定によ
り,繰り返し積和演算中にオーバーフローの例外が発生
すると,何も処理しない例外処理#1か,通常の割込発
生処理#2かのいずれかが,バックグランドで実行され
る。
【0053】図10は,第4のユーザプログラム例を示
す図である。このプログラムP14では,前処理68と
して,3つの選択処理IDレジスタ52への処理ID設定
と,分岐処理#3に対応する分岐アドレスの分岐アドレ
スレジスタ56への設定とが行われる。また,上記2つ
の分岐アドレスが図中69,70にてプログラム中に記
述されている。
【0054】図11は,図10のプログラムに対応する
例外処理指令ユニット36の構成図である。例外識別手
段58が識別して出力する例外ID#1〜#Lに対応して,L
個の選択処理IDレジスタ52-1〜52-Lが設けられる。図1
0のプログラムP14では,3つの例外発生に対する処
理IDが3つのレジスタ52-1,52-2,52-3に「3」「1」
「3」と設定される。例えば,オーバーフロー(例外ID
=#1)の発生時は選択処理IDレジスタ52-1に処理IDとし
て「3」が設定され,分岐命令を実行するように設定さ
れる。また,アンダーフロー(例外ID=#2)の発生時は
選択処理IDレジスタ52-2に処理IDとして「1」が設定さ
れ,何も処理を実行しないように設定される。更に,ゼ
ロ除算(例外ID=#3)の発生時は選択処理IDレジスタ52-
3に処理IDとして「3」が設定される。
【0055】それに伴い,L個の選択処理IDレジスタ5
2に対応する分岐アドレスレジスタ57-1〜57-Lにも,分
岐アドレスが設定される。図10のプログラムP14の
例では,分岐アドレスレジスタ57-1,57-3にそれぞれの
分岐先アドレスが設定される。
【0056】上記の設定に伴い,その後の繰り返し積和
演算中に3つのうちいずれかの例外が発生すると,受信
した例外発生信号EXに従って,例外識別手段58が例外
IDを例外処理選択手段60に出力する。例外処理選択手
段60は,例外IDに対応する選択処理IDレジスタ52-1〜
52-L内の処理IDを読み出し,それに対応する処理命令コ
ードを,例外処理命令メモリ50から読み出す。そし
て,分岐命令の場合はそれに対応する分岐アドレスを分
岐アドレスレジスタ57から読み出し,動作指令手段6
2から,処理命令コードと必要な分岐アドレスとが出力
される。
【0057】以上のとおり,本実施の形態例のプロセッ
サは,複数の例外処理命令を格納した例外処理命令メモ
リと,例外発生時の処理を設定する選択処理IDレジスタ
52などを有する例外処理指令ユニット36を有するの
で,ユーザプログラムにより任意の例外処理を選択処理
IDレジスタに設定するだけで,例外発生時に選択した例
外処理をバックグランドで実行させることができる。
【0058】以上,実施の形態例をまとめると以下の付
記の通りである。
【0059】(付記1)所定の処理を行うプロセッサに
おいて,ユーザプログラムの命令コードを供給され,命
令コードに対応する処理を行う通常処理ユニットと,例
外事象が発生した時の処理を選択して対応する命令コー
ドを前記通常処理ユニットに供給する例外処理指令ユニ
ットとを有し,前記例外処理指令ユニットは,複数の例
外処理命令を処理IDに対応して格納した例外処理命令メ
モリと,前記ユーザプログラムにより設定される処理ID
を格納する選択処理IDレジスタと,例外発生時に生成さ
れる例外発生信号を受信し,所定の例外が発生したこと
を識別する例外識別手段と,例外識別手段により識別さ
れた例外に対応する処理IDを前記選択処理IDレジスタか
ら読み出し,その処理IDにしたがって前記例外処理命令
メモリ内に格納されている例外処理命令の命令コードを
出力する例外処理命令選択・出力手段とを有することを
特徴とするプロセッサ。
【0060】(付記2)付記1において,前記例外処理
指令ユニットは,プロセッサ内部の負荷状態を格納する
第1のステータスレジスタを有し,前記選択処理IDレジ
スタは,前記ユーザプログラムにより,前記第1のステ
ータスレジスタに格納されている状態に応じて処理IDが
設定されることを特徴とするプロセッサ。
【0061】(付記3)付記1において,前記例外処理
指令ユニットは,プロセッサ外部から供給される外部状
態を格納する第2のステータスレジスタを有し,前記選
択処理IDレジスタは,前記ユーザプログラムにより,前
記第2のステータスレジスタに格納されている状態に応
じて処理IDが設定されることを特徴とするプロセッサ。
【0062】(付記4)付記1において,前記例外処理
指令ユニットは,前記ユーザプログラムにより設定され
る分岐アドレスを格納する分岐アドレスレジスタを有
し,前記処理IDの分岐先アドレスが当該分岐アドレスレ
ジスタから読み出されることを特徴とするプロセッサ。
【0063】(付記5)付記1において,前記選択処理
IDレジスタは,複数の例外に対応して複数設けられ,前
記例外識別手段が識別した例外に対応する選択処理IDレ
ジスタから,処理IDが読み出されることを特徴とするプ
ロセッサ。
【0064】(付記6)付記5において,更に,選択処
理IDレジスタに格納された処理IDに対応する例外処理の
分岐アドレスを格納する複数の分岐アドレスレジスタを
有し,前記選択処理IDレジスタから読み出された処理ID
が分岐命令を含む例外処理に対応する時に,前記分岐命
令に対応する分岐先アドレスが,前記分岐アドレスレジ
スタから読み出されることを特徴とするプロセッサ。
【0065】(付記7)付記4,6のいずれかにおい
て,前記例外処理命令選択・出力手段は,分岐命令コー
ドと前記分岐アドレスレジスタから読み出した分岐先ア
ドレスとを,前記通常処理ユニットに供給することを特
徴とするプロセッサ。
【0066】(付記8)付記1において,前記例外事象
は,少なくともオーバーフロー,アンダーフロー,ゼロ
除算のいずれかを含むことを特徴とするプロセッサ。
【0067】(付記9)付記1において,前記例外処理
命令は,少なくとも例外を無視して何も処理を行わない
第1の処理と,割込を発生して所定の処理を実行する第
2の処理と,分岐先アドレスへ分岐する第3の処理のい
ずれかを含むことを特徴とするプロセッサ。
【0068】(付記10)付記1において,前記通常処
理ユニットは,供給された命令コードをデコードして命
令コードに対応する処理を行うことを特徴とするプロセ
ッサ。
【0069】(付記11)所定の処理を行うプロセッサ
において,ユーザプログラムの命令コードを供給され,
当該命令コードに対応する処理を行う通常処理ユニット
と,例外事象が発生した時の複数の処理命令を記憶する
例外処理命令メモリと,前記ユーザプログラムにより設
定される処理IDを格納する選択処理IDレジスタとを有
し,例外発生時に生成される例外発生信号に応答して,
発生した例外に対応する処理IDを前記選択処理IDレジス
タから読み出し,当該処理IDに対応する処理命令を前記
例外処理命令メモリから読み出し,当該処理命令の命令
コードを前記通常処理ユニットに供給する例外処理指令
ユニットとを有することを特徴とするプロセッサ。
【0070】(付記12)付記11において,前記例外
処理指令ユニットは,プロセッサ内部の負荷状態を格納
する第1のステータスレジスタを有し,前記選択処理ID
レジスタは,前記ユーザプログラムにより,前記第1の
ステータスレジスタに格納されている状態に応じて処理
IDが設定されることを特徴とするプロセッサ。
【0071】(付記13)付記11において,前記例外
処理指令ユニットは,プロセッサ外部から供給される外
部状態を格納する第2のステータスレジスタを有し,前
記選択処理IDレジスタは,前記ユーザプログラムによ
り,前記第2のステータスレジスタに格納されている状
態に応じて処理IDが設定されることを特徴とするプロセ
ッサ。
【0072】
【発明の効果】以上,本発明によれば,ユーザプログラ
ムから任意の例外発生時の処理を設定するだけで,バッ
クグランドで例外処理を実行させることができる。更
に,その処理の設定をプロセッサ内外の状況に応じて選
択的に設定することにより,最適の例外処理を実行させ
ることができる。
【図面の簡単な説明】
【図1】従来の例外発生時の割込処理プログラムによる
処理例を説明するための図である。
【図2】割込処理プログラムを用いた例外処理の手順を
示す図である。
【図3】例外発生時の分岐をユーザプログラム内に記述
した例を示す図である。
【図4】本発明の概念図である。
【図5】本実施の形態例におけるプロセッサの全体構成
図である。
【図6】本実施の形態例における例外処理指令ユニット
の構成図である。
【図7】第1のユーザプログラム例を示す図である。
【図8】第2のユーザプログラム例を示す図である。
【図9】第3のユーザプログラム例を示す図である。
【図10】第4のユーザプログラム例を示す図である。
【図11】図10のプログラムに対応する例外処理指令
ユニット36の構成図である。
【符号の説明】
32 処理ブロック 34 通常処理ユニット 36 例外処理指令ユニット S36 例外処理用命令コード 50 例外処理命令メモリ 52 選択処理IDレジスタ 54 第2のステータスレジスタ 56 第1のステータスレジスタ 57 分岐アドレスレジスタ 58 例外識別手段 60 例外処理命令選択手段 62 動作指令手段

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】所定の処理を行うプロセッサにおいて,ユ
    ーザプログラムの命令コードを供給され,命令コードに
    対応する処理を行う通常処理ユニットと,例外事象が発
    生した時の処理を選択して対応する命令コードを前記通
    常処理ユニットに供給する例外処理指令ユニットとを有
    し,前記例外処理指令ユニットは,複数の例外処理命令
    を処理IDに対応して格納した例外処理命令メモリと,前
    記ユーザプログラムにより設定される処理IDを格納する
    選択処理IDレジスタと,例外発生時に生成される例外発
    生信号を受信し,所定の例外が発生したことを識別する
    例外識別手段と,例外識別手段により識別された例外に
    対応する処理IDを前記選択処理IDレジスタから読み出
    し,その処理IDにしたがって前記例外処理命令メモリ内
    に格納されている例外処理命令の命令コードを出力する
    例外処理命令選択・出力手段とを有することを特徴とす
    るプロセッサ。
  2. 【請求項2】請求項1において,前記例外処理指令ユニ
    ットは,プロセッサ内部の負荷状態を格納する第1のス
    テータスレジスタを有し,前記選択処理IDレジスタは,
    前記ユーザプログラムにより,前記第1のステータスレ
    ジスタに格納されている状態に応じて処理IDが設定され
    ることを特徴とするプロセッサ。
  3. 【請求項3】請求項1において,前記例外処理指令ユニ
    ットは,プロセッサ外部から供給される外部状態を格納
    する第2のステータスレジスタを有し,前記選択処理ID
    レジスタは,前記ユーザプログラムにより,前記第2の
    ステータスレジスタに格納されている状態に応じて処理
    IDが設定されることを特徴とするプロセッサ。
  4. 【請求項4】請求項1において,前記例外処理指令ユニ
    ットは,前記ユーザプログラムにより設定される分岐ア
    ドレスを格納する分岐アドレスレジスタを有し,前記処
    理IDの分岐先アドレスが当該分岐アドレスレジスタから
    読み出されることを特徴とするプロセッサ。
  5. 【請求項5】請求項1において,前記選択処理IDレジス
    タは,複数の例外に対応して複数設けられ,前記例外識
    別手段が識別した例外に対応する選択処理IDレジスタか
    ら,処理IDが読み出されることを特徴とするプロセッ
    サ。
  6. 【請求項6】請求項5において,更に,選択処理IDレジ
    スタに格納された処理IDに対応する例外処理の分岐アド
    レスを格納する複数の分岐アドレスレジスタを有し,前
    記選択処理IDレジスタから読み出された処理IDが分岐命
    令を含む例外処理に対応する時に,前記分岐命令に対応
    する分岐先アドレスが,前記分岐アドレスレジスタから
    読み出されることを特徴とするプロセッサ。
  7. 【請求項7】請求項4,6のいずれかにおいて,前記例
    外処理命令選択・出力手段は,分岐命令コードと前記分
    岐アドレスレジスタから読み出した分岐先アドレスと
    を,前記通常処理ユニットに供給することを特徴とする
    プロセッサ。
  8. 【請求項8】所定の処理を行うプロセッサにおいて,ユ
    ーザプログラムの命令コードを供給され,当該命令コー
    ドに対応する処理を行う通常処理ユニットと,例外事象
    が発生した時の複数の処理命令を記憶する例外処理命令
    メモリと,前記ユーザプログラムにより設定される処理
    IDを格納する選択処理IDレジスタとを有し,例外発生時
    に生成される例外発生信号に応答して,発生した例外に
    対応する処理IDを前記選択処理IDレジスタから読み出
    し,当該処理IDに対応する処理命令を前記例外処理命令
    メモリから読み出し,当該処理命令の命令コードを前記
    通常処理ユニットに供給する例外処理指令ユニットとを
    有することを特徴とするプロセッサ。
JP2001246567A 2001-08-15 2001-08-15 プログラムによる例外処理設定を可能にしたプロセッサ Withdrawn JP2003058381A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2001246567A JP2003058381A (ja) 2001-08-15 2001-08-15 プログラムによる例外処理設定を可能にしたプロセッサ
US10/097,375 US20030037227A1 (en) 2001-08-15 2002-03-15 Processor enabling exception handling to be set by program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001246567A JP2003058381A (ja) 2001-08-15 2001-08-15 プログラムによる例外処理設定を可能にしたプロセッサ

Publications (1)

Publication Number Publication Date
JP2003058381A true JP2003058381A (ja) 2003-02-28

Family

ID=19076087

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001246567A Withdrawn JP2003058381A (ja) 2001-08-15 2001-08-15 プログラムによる例外処理設定を可能にしたプロセッサ

Country Status (2)

Country Link
US (1) US20030037227A1 (ja)
JP (1) JP2003058381A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007141240A (ja) * 2005-11-14 2007-06-07 Fujitsu Ltd コンピュータシステム及びコンピュータシステムにおけるインタラプトを処理するための方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7580350B1 (en) * 2004-03-30 2009-08-25 Extreme Networks, Inc. System for deriving packet quality of service indicator
US7962909B1 (en) * 2004-05-11 2011-06-14 Globalfoundries Inc. Limiting guest execution
US20060166013A1 (en) * 2005-01-24 2006-07-27 Hoden Seimitsu Kako Kenyusho Co., Ltd. Chromium-free rust inhibitive treatment method for metal products having zinc surface and metal products treated thereby
US7852486B2 (en) * 2008-02-07 2010-12-14 Board Of Regents, The University Of Texas System Wavelength and intensity monitoring of optical cavity
US8359479B2 (en) * 2008-07-17 2013-01-22 Lsi Corporation High performance arithmetic logic unit (ALU) for cryptographic applications with built-in countermeasures against side channel attacks
US8074116B2 (en) * 2009-05-06 2011-12-06 Microsoft Corporation Exception raised notification
CN102385508A (zh) * 2010-09-03 2012-03-21 金蝶软件(中国)有限公司 一种异常处理的方法、装置和软件***
US8605732B2 (en) 2011-02-15 2013-12-10 Extreme Networks, Inc. Method of providing virtual router functionality

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044460A (en) * 1998-01-16 2000-03-28 Lsi Logic Corporation System and method for PC-relative address generation in a microprocessor with a pipeline architecture
US6189093B1 (en) * 1998-07-21 2001-02-13 Lsi Logic Corporation System for initiating exception routine in response to memory access exception by storing exception information and exception bit within architectured register
US6405305B1 (en) * 1999-09-10 2002-06-11 Advanced Micro Devices, Inc. Rapid execution of floating point load control word instructions

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007141240A (ja) * 2005-11-14 2007-06-07 Fujitsu Ltd コンピュータシステム及びコンピュータシステムにおけるインタラプトを処理するための方法
JP4709728B2 (ja) * 2005-11-14 2011-06-22 富士通株式会社 コンピュータシステム及びコンピュータシステムにおけるインタラプトを処理するための方法

Also Published As

Publication number Publication date
US20030037227A1 (en) 2003-02-20

Similar Documents

Publication Publication Date Title
US6820155B1 (en) Interruption managing device and interruption managing method
JP2003058381A (ja) プログラムによる例外処理設定を可能にしたプロセッサ
KR100188374B1 (ko) 연산처리장치
JPH04241032A (ja) システムコール実行装置
JPH044630B2 (ja)
JPS59218569A (ja) マイクロ・コンピユ−タ
JP2000112754A (ja) データ処理装置
JP2008225710A (ja) コンピュータシステム及び該システムで用いられるプロセス切替え方法
JP2876629B2 (ja) データ処理装置
JP2001075778A (ja) 演算装置および方法
JPH0683640A (ja) 割込応答処理方式
JPH03204004A (ja) プログラマブルコントローラ
JP2671161B2 (ja) レジスタ干渉チェック方式
JPH0269826A (ja) 条件付命令制御方式
JPH09282165A (ja) 情報処理装置
JPH0492965A (ja) ベクトル命令処理方式
JPH08221271A (ja) パイプラインプロセッサ
JPS63240633A (ja) 中央処理装置
JPH10240702A (ja) 並列処理プロセッサおよびその処理方法
JPH02138630A (ja) マイクロプロセッサ制御装置
JP2002366370A (ja) 情報処理装置
JPH01236327A (ja) 割込みマスク制御方法
JPH0340013A (ja) 中央演算処理装置
JPH0883188A (ja) マルチタスク処理を行う計算機
JPH0683614A (ja) マイクロコンピュータ

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20081104