JP3031900B2 - データ処理装置及びレジスタファイル - Google Patents
データ処理装置及びレジスタファイルInfo
- Publication number
- JP3031900B2 JP3031900B2 JP10355480A JP35548098A JP3031900B2 JP 3031900 B2 JP3031900 B2 JP 3031900B2 JP 10355480 A JP10355480 A JP 10355480A JP 35548098 A JP35548098 A JP 35548098A JP 3031900 B2 JP3031900 B2 JP 3031900B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- overflow
- register
- flag
- signal
- 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
Description
バーフロー時の飽和処理機能を有するデータ処理装置
と、それに適したレジスタファイルとに関するものであ
る。
ディジタル信号プロセッサが実現可能となり、加減算や
乗算を含む複雑なデータ処理を1チップで実行できるよ
うになっている。特に携帯電話等の応用分野では、大量
の情報の圧縮・伸長を行うため、高速のデータ処理が必
要とされている。
M(static random access memory)等の大容量のメモ
リやROM(read-only memory)等の遅いメモリに加え
て小容量かつ高速のレジスタファイルを備えたパイプラ
イン制御方式のデータ処理装置が知られている。これ
は、各々データを格納するための複数のデータレジスタ
を有するレジスタファイルと、算術論理演算ユニット、
乗算ユニット等の複数の演算ユニットとをバス経由で接
続したものであり、高速レジスタファイルを演算データ
の格納に利用したものである。算術論理演算ユニット
は、例えば加算命令に応答して、レジスタファイルから
2個のオペランドを受け取り、両オペランドの加算を実
行する。この加算の結果を表すデータは、レジスタファ
イルの中の指定されたデータレジスタに書き込まれる。
乗算ユニットは、乗算命令に応答して、レジスタファイ
ルから2個のオペランドを受け取り、両オペランドの乗
算を実行する。この乗算の結果を表すデータは、レジス
タファイルの中の指定されたデータレジスタに書き込ま
れる。
定小数点数X及びYの演算を考える。これらの数X,Y
の各々の最上位ビットが符号ビット(このビットが0な
らば正であり、1ならば負である。)であり、該最上位
ビットとその下位ビットとの間に小数点があるものとす
る。したがって、−1≦X<1かつ−1≦Y<1であ
る。つまり、正数のうちの最大の絶対値を有する数は
“011…1(2進数表記)”であり、負数のうちの最
大の絶対値を有する数は“100…0(2進数表記)”
である。後者は10進数表記の“−1”に等しい。
ローが生じたときに該演算の結果に飽和処理を施すこと
が要求される場合がある。具体的には、2個の正数の加
算でオーバーフローが生じて負の結果が得られた場合に
は、該負の結果が正の飽和値(正数のうちの最大の絶対
値を有する数、上記の例では“011…1”)に修正さ
れる。2個の負数の加算で正の結果が得られた場合に
は、該正の結果が負の飽和値(負数のうちの最大の絶対
値を有する数、上記の例では“100…0”)に修正さ
れる。正の数から負の数を減算した結果が負になった場
合には該負の結果が正の飽和値に、負の数から正の数を
減算した結果が正になった場合には該正の結果が負の飽
和値にそれぞれ修正される。また、2個の負数の乗算で
オーバーフローが生じて負の結果が得られた場合には、
該負の結果が正の飽和値に修正される。ただし、上記の
例でオーバーフローが生じるのは(−1)×(−1)の
場合、すなわち2進数表記で(100…0)×(100
…0)の場合に限られる。
が生じた時点で、演算結果に代えて正又は負の飽和値が
直ちにデータレジスタに書き込まれるようになってい
た。
装置では、演算の結果から該演算におけるオーバーフロ
ーの発生の有無を示すオーバーフロー信号を生成し、そ
の後に演算結果を修正して得られる正又は負の飽和値を
データレジスタに書き込むという手順を踏むため、演算
の終了が遅れるという問題があった。
演算を早く終了させることにより、データ処理効率を向
上させることにある。また、本発明の他の目的は、デー
タ処理装置中の演算におけるオーバーフロー時の飽和処
理に適したレジスタファイルを提供することにある。
め、本発明は、演算におけるオーバーフローの発生の有
無を示すオーバーフロー信号を生成する機能を有する演
算ユニットと、該演算ユニットの演算結果を表すデータ
を記憶するためのデータレジスタとを用いたデータ処理
において、ある命令に応答して生成されたオーバーフロ
ー信号をフラグとして記憶しておき、他の命令に応答し
てデータレジスタから今将にデータが読み出されようと
した時点で該フラグがオーバーフロー有りを示している
場合には正又は負の飽和値を生成して、該生成した正又
は負の飽和値を演算結果の修正値として演算ユニットへ
供給するようにしたものである。つまり、従来とは違っ
て、演算結果を修正して得られる正又は負の飽和値がデ
ータレジスタに書き込まれることはなく、演算が早く終
了する。しかも、該演算の結果が今将に参照されようと
した時点で飽和値が生成される。この飽和値の生成に要
する時間は、データレジスタからのオーバーフロー無し
の場合のデータの読み出しに要する時間の陰に隠され
る。したがって、オーバーフロー結果を参照する演算の
開始が遅れることもない。
処理装置は、演算におけるオーバーフロー時の飽和処理
機能を有するものであって、ある命令により指定された
演算を実行しかつ該演算におけるオーバーフローの発生
の有無を示すオーバーフロー信号を生成する機能を有す
る演算ユニットと、該演算ユニットの演算結果を表すデ
ータを記憶するためのデータレジスタと、同演算ユニッ
トにより生成されたオーバーフロー信号をオーバーフロ
ーフラグとして記憶するためのオーバーフローフラグレ
ジスタと、他の命令に応答してデータレジスタからデー
タが読み出されようとした時点で、オーバーフローフラ
グがオーバーフロー無しを示している場合にはデータレ
ジスタに記憶されたデータを、オーバーフローフラグが
オーバーフロー有りを示している場合には既定の飽和値
をそれぞれ前記演算ユニットへ供給するためのセレクタ
とを備えた構成を採用したものである。
有りを示している場合には、データレジスタへのデータ
の書き込みを禁止する。これにより、データレジスタへ
の無効演算結果の書き込みに要する消費電力が削減され
る。また、上記他の命令に応答してデータレジスタから
データが読み出されようとした時点でオーバーフローフ
ラグがオーバーフロー有りを示している場合には、該デ
ータレジスタからのデータ読み出しを無効化する。これ
により、データレジスタからの無効演算結果の読み出し
に要する消費電力が削減される。
和値と負の飽和値とのいずれを選択すべきかは、サイン
フラグに応じて決定される。ここに、演算ユニットは、
演算においてオーバーフローが発生した場合には、該演
算の結果を正の飽和値と負の飽和値とのいずれに置き換
えるべきかを示す飽和値符号信号を生成する機能を更に
有する。この演算ユニットにより生成された飽和値符号
信号を上記サインフラグとして記憶するためのサインフ
ラグレジスタがデータ処理装置に更に設けられる。
各々アドレスで識別される複数のレジスタユニットを備
えたものであって、これら複数のレジスタユニットの各
々は、ある命令により指定された演算の実行結果を表す
データを記憶するためのデータレジスタと、該演算にお
けるオーバーフローの発生の有無を示すオーバーフロー
信号をオーバーフローフラグとして記憶するためのオー
バーフローフラグレジスタと、該演算においてオーバー
フローが発生した場合に該演算の結果を正の飽和値と負
の飽和値とのいずれに置き換えるべきかを示す飽和値符
号信号をサインフラグとして記憶するためのサインフラ
グレジスタとを有する構成を採用したものである。オー
バーフローフラグ及びサインフラグは、データレジスタ
へのデータの書き込みを指示する書き込み信号に応答し
て更新される。そして、他の命令に応答してデータレジ
スタからのデータの読み出しを指示する読み出し信号が
与えられた時点で、オーバーフローフラグがオーバーフ
ロー無しを示している場合にはデータレジスタに記憶さ
れたデータが、オーバーフローフラグがオーバーフロー
有りを示している場合にはオーバーフローフラグとサイ
ンフラグとがそれぞれ出力される。
て、図面を参照しながら説明する。ここでは、各々2の
補数表現された2個の固定小数点数の演算例を説明す
る。これらの数の各々の最上位ビットが符号ビット(こ
のビットが0ならば正であり、1ならば負である。)で
あり、該最上位ビットとその下位ビットとの間に小数点
があるものとする。ただし、本発明はこのような数表現
に限定されるものではない。
成例を示している。図1の装置は、与えられた命令IN
STを順次実行することによりデータ処理を進めていく
データ処理装置であって、各々データを格納するための
4個のデータレジスタを有するレジスタファイル10
と、加算命令、減算命令、論理演算命令等を実行するた
めの算術論理演算ユニット(ALU)51と、乗算命令
を実行するための乗算ユニット(MUL)52と、Aバ
ス61と、Bバス62と、Cバス63とを備えている。
レジスタファイル10は、オペランドをAバス61及び
/又はBバス62へ送出する機能と、Cバス63上のデ
ータをいずれかのデータレジスタへ格納する機能とを有
するものである。算術論理演算ユニット51は、例えば
加算命令に応答して、Aバス61からオペランドOP1
を、Bバス62からオペランドOP2をそれぞれ受け取
り、両オペランドの加算を実行する。この算術論理演算
ユニット51の演算結果を表すデータR_ALUは、C
バス63を経由してレジスタファイル10の中の指定さ
れたデータレジスタに書き込まれるようになっている。
乗算ユニット52は、乗算命令に応答して、Aバス61
からオペランドOP3を、Bバス62からオペランドO
P4をそれぞれ受け取り、両オペランドの乗算を実行す
る。この乗算ユニット52の演算結果を表すデータR_
MULもまた、Cバス63を経由してレジスタファイル
10の中の指定されたデータレジスタに書き込まれるよ
うになっている。
で実行された演算(各々2の補数表現された2個の固定
小数点数の加算又は減算)におけるオーバーフローの発
生の有無を示すオーバーフロー信号OV_ALUを生成
する機能と、オーバーフローが発生した場合に該演算の
結果を正の飽和値と負の飽和値とのいずれに置き換える
べきかを示す飽和値符号信号S_ALUを生成する機能
とを有するものである。OV_ALU=1は「オーバー
フロー有り」を、OV_ALU=0は「オーバーフロー
無し」を、S_ALU=0は「正の飽和値」を、S_AL
U=1は「負の飽和値」をそれぞれ示している。この
際、2個のオペランドOP1及びOP2の各々を1ビッ
トずつ上位に符号拡張したうえで加減算が実行され、該
加減算の符号拡張された結果の最上位2ビットが互いに
異なる場合にオーバーフロー信号OV_ALUが論理値
1に活性化されるようになっている。飽和値符号信号S
_ALUは、演算結果の拡張符号ビットにより、あるい
は演算結果の符号ビット(拡張符号ビットの1ビット下
位)により、あるいは演算の種類(加算・減算のいずれ
であるか)と一方のオペランドOP1の符号ビットとの
組み合わせにより、あるいは演算の種類と他方のオペラ
ンドOP2の符号ビットとの組み合わせにより決定され
る。乗算ユニット52は、該ユニットで実行された演算
(各々2の補数表現された2個の固定小数点数の乗算)
におけるオーバーフローの発生の有無を示すオーバーフ
ロー信号OV_MULを生成する機能と、オーバーフロ
ーが発生した場合に該演算の結果を正の飽和値と負の飽
和値とのいずれに置き換えるべきかを示す飽和値符号信
号S_MULを生成する機能とを有するものである。O
V_MUL=1は「オーバーフロー有り」を、OV_MU
L=0は「オーバーフロー無し」をそれぞれ示してい
る。オーバーフローの発生は(−1)×(−1)の場
合、すなわち2個のオペランドOP3及びOP4のいず
れもが“100…0(2進数表記)”である場合に限ら
れるため、負の飽和値が選択されることがないように、
飽和値符号信号S_MULの論理値は0に限定される。
レジスタファイル10は、算術論理演算ユニット51に
より生成されたオーバーフロー信号OV_ALU及び飽
和値符号信号S_ALUをそれぞれオーバーフローフラ
グ及びサインフラグとして記憶する機能と、乗算ユニッ
ト52により生成されたオーバーフロー信号OV_MU
L及び飽和値符号信号S_MULをそれぞれオーバーフ
ローフラグ及びサインフラグとして記憶する機能とを更
に有している。
術論理演算ユニット51との間に介在した第1のセレク
タ71と、Bバス62と算術論理演算ユニット51との
間に介在した第2のセレクタ72と、Aバス61と乗算
ユニット52との間に介在した第3のセレクタ73と、
Bバス62と乗算ユニット52との間に介在した第4の
セレクタ74と、与えられた命令INSTをデコードす
るための命令デコーダ90とを更に備えている。命令デ
コーダ90は、与えられた命令INSTに応じて、第1
の読み出しアドレスRAAdと、第2の読み出しアドレ
スRBAdと、書き込みアドレスWAdと、第1の読み
出しイネーブル信号RAEと、第2の読み出しイネーブ
ル信号RBEと、書き込みイネーブル信号WEと、加減
算実行信号ALUEXと、乗算実行信号MULEXとを
供給するものである。ここに、加減算実行信号ALUE
Xは、与えられた命令INSTが加減算命令である場合
に活性化される信号である。乗算実行信号MULEX
は、与えられた命令INSTが乗算命令である場合に活
性化される信号である。レジスタファイル10は、命令
デコーダ90からこれら8信号の供給を受ける。加減算
実行信号ALUEXは第1及び第2のセレクタ71,7
2へも、乗算実行信号MULEXは第3及び第4のセレ
クタ73,74へもそれぞれ供給される。レジスタファ
イル10は、各々Aバス側のオーバーフロー信号OVA
及び飽和値符号信号SAを第1及び第3のセレクタ7
1,73へ、各々Bバス側のオーバーフロー信号OVB
及び飽和値符号信号SBを第2及び第4のセレクタ7
2,74へそれぞれ供給する機能を更に有している。オ
ーバーフロー信号OVA及びOVBはレジスタファイル
10に記憶されたオーバーフローフラグに応じて、飽和
値符号信号SA及びSBはレジスタファイル10に記憶
されたサインフラグに応じてそれぞれ生成される。な
お、レジスタファイル10及び命令デコーダ90には、
これらの同期動作のために、共通のクロック信号CLK
が供給されている。
10の中のあるデータレジスタからAバス61経由で算
術論理演算ユニット51へデータが読み出されようとし
た時点で、OVA=0ならば該データレジスタに記憶さ
れたデータを、OVA=1かつSA=0ならば正の飽和
値“011…1(2進数表記)”を、OVA=1かつS
A=1ならば負の飽和値“100…0(2進数表記)”
をそれぞれ算術論理演算ユニット51へのオペランドO
P1として供給するためのセレクタである。第2のセレ
クタ72は、レジスタファイル10の中のあるデータレ
ジスタからBバス62経由で算術論理演算ユニット51
へデータが読み出されようとした時点で、OVB=0な
らば該データレジスタに記憶されたデータを、OVB=
1かつSB=0ならば正の飽和値“011…1”を、O
VB=1かつSB=1ならば負の飽和値“100…0”
をそれぞれ算術論理演算ユニット51へのオペランドO
P2として供給するためのセレクタである。第3のセレ
クタ73は、レジスタファイル10の中のあるデータレ
ジスタからAバス61経由で乗算ユニット52へデータ
が読み出されようとした時点で、OVA=0ならば該デ
ータレジスタに記憶されたデータを、OVA=1かつS
A=0ならば正の飽和値“011…1”を、OVA=1
かつSA=1ならば負の飽和値“100…0”をそれぞ
れ乗算ユニット52へのオペランドOP3として供給す
るためのセレクタである。第4のセレクタ74は、レジ
スタファイル10の中のあるデータレジスタからBバス
62経由で乗算ユニット52へデータが読み出されよう
とした時点で、OVB=0ならば該データレジスタに記
憶されたデータを、OVB=1かつSB=0ならば正の
飽和値“011…1”を、OVB=1かつSB=1なら
ば負の飽和値“100…0”をそれぞれ乗算ユニット5
2へのオペランドOP4として供給するためのセレクタ
である。これら既定の飽和値を供給するために、第1〜
第4のセレクタ71,72,73,74の各入力は論理
1ラインL1及び論理0ラインL0に接続されている。
を、図3は図2中のレジスタ回路14の詳細構成を、図
4は図2中のOR回路15の詳細構成をそれぞれ示して
いる。図2によれば、レジスタファイル10は、アドレ
スデコーダ11と、セレクタ12,13と、レジスタ回
路14と、OR回路15とを備えている。アドレスデコ
ーダ11は、第1の読み出しアドレスRAAdと、第2
の読み出しアドレスRBAdと、書き込みアドレスWA
dと、第1の読み出しイネーブル信号RAEと、第2の
読み出しイネーブル信号RBEと、書き込みイネーブル
信号WEとを命令デコーダ90から受け取り、かつ4個
のデータレジスタRn(n=0,1,2,3)の各々に
対応して、データレジスタRnからAバス61へのデー
タの読み出しを指示する第1の読み出し信号RAnと、
データレジスタRnからBバス62へのデータの読み出
しを指示する第2の読み出し信号RBnと、Cバス63
からデータレジスタRnへのデータの書き込みを指示す
る書き込み信号Wnとをレジスタ回路14へ供給する。
第1の読み出しアドレスRAAdは第1の読み出しイネ
ーブル信号RAEが与えられた時点で、第2の読み出し
アドレスRBAdは第2の読み出しイネーブル信号RB
Eが与えられた時点で、書き込みアドレスWAdは書き
込みイネーブル信号WEが与えられた時点でそれぞれ有
効である。セレクタ12は、ALUEX=1ならば算術
論理演算ユニット51により生成されたオーバーフロー
信号OV_ALUを、MULEX=1ならば乗算ユニッ
ト52により生成されたオーバーフロー信号OV_MU
Lをそれぞれ信号OVとして選択して、これをレジスタ
回路14へ供給するものである。セレクタ13は、AL
UEX=1ならば算術論理演算ユニット51により生成
された飽和値符号信号S_ALUを、MULEX=1な
らば乗算ユニット52により生成された飽和値符号信号
S_MULをそれぞれ信号Sとして選択して、これをレ
ジスタ回路14へ供給するものである。
1,R2,R3が明示されている。図3によれば、レジ
スタ回路14は各々アドレス0,1,2,3で識別され
る同一構成の4個のレジスタユニット21,22,2
3,24を備えており、これらレジスタユニットの各々
はデータレジスタ31と、オーバーフローフラグレジス
タ32と、サインフラグレジスタ33とを有している。
ユニット21について説明する。データレジスタ(R
0)31は、Cバス63から供給されたデータを、書き
込み信号W0に応答して記憶するものである。ただし、
セレクタ12から供給された信号OVの論理値が1であ
るならば、該データレジスタR0へのデータの書き込み
が禁止されるようになっている。オーバーフローフラグ
レジスタ32は、セレクタ12から供給された信号OV
を、データレジスタR0へのデータの書き込みを指示す
る書き込み信号W0に応答して、オーバーフローフラグ
OV0として記憶するものである。サインフラグレジス
タ33は、セレクタ13から供給された信号Sを、デー
タレジスタR0へのデータの書き込みを指示する書き込
み信号W0に応答して、サインフラグS0として記憶す
るものである。RA0はデータレジスタR0からAバス
61へのデータの読み出しを指示する第1の読み出し信
号であり、RB0はデータレジスタR0からBバス62
へのデータの読み出しを指示する第2の読み出し信号で
ある。したがって、データレジスタR0に記憶されたデ
ータは、第1の読み出し信号RA0に応答して動作する
トライステートバッファを介してAバス61へ、あるい
は第2の読み出し信号RB0に応答して動作するトライ
ステートバッファを介してBバス62へそれぞれ出力さ
れる。ただし、第1の読み出し信号RA0が与えられた
時点でオーバーフローフラグOV0の値がオーバーフロ
ー有りを示す論理値1である場合には、Aバス61が駆
動されないようになっている。また、第2の読み出し信
号RB0が与えられた時点でオーバーフローフラグOV
0の値がオーバーフロー有りを示す論理値1である場合
には、Bバス62が駆動されないようになっている。こ
れらの場合には、データレジスタR0のデータ読み出し
が無効化されることとなる。第1の読み出し信号RA0
が与えられた場合には、オーバーフローフラグOV0及
びサインフラグS0が各々Aバス側のオーバーフロー信
号OVA0及び飽和値符号信号SA0としてOR回路1
5へ出力される。第2の読み出し信号RB0が与えられ
た場合には、オーバーフローフラグOV0及びサインフ
ラグS0が各々Bバス側のオーバーフロー信号OVB0
及び飽和値符号信号SB0としてOR回路15へ出力さ
れる。アドレス1,2,3で識別されるレジスタユニッ
ト22,23,24の構成も同様である。したがって、
レジスタ回路14は、Aバス側のオーバーフロー信号O
VA0,OVA1,OVA2,OVA3と、Aバス側の
飽和値符号信号SA0,SA1,SA2,SA3と、B
バス側のオーバーフロー信号OVB0,OVB1,OV
B2,OVB3と、Bバス側の飽和値符号信号SB0,
SB1,SB2,SB3とをOR回路15へ出力する。
Rゲート41,42,43,44で構成される。ORゲ
ート41は、レジスタ回路14から供給されたオーバー
フロー信号OVA0,OVA1,OVA2,OVA3の
論理和信号をAバス側のオーバーフロー信号OVAとし
て第1及び第3のセレクタ71,73へ供給するもので
ある。ORゲート42は、レジスタ回路14から供給さ
れた飽和値符号信号SA0,SA1,SA2,SA3の
論理和信号をAバス側の飽和値符号信号SAとして第1
及び第3のセレクタ71,73へ供給するものである。
ORゲート43は、レジスタ回路14から供給されたオ
ーバーフロー信号OVB0,OVB1,OVB2,OV
B3の論理和信号をBバス側のオーバーフロー信号OV
Bとして第2及び第4のセレクタ72,74へ供給する
ものである。ORゲート44は、レジスタ回路14から
供給された飽和値符号信号SB0,SB1,SB2,S
B3の論理和信号をBバス側の飽和値符号信号SBとし
て第2及び第4のセレクタ72,74へ供給するもので
ある。
ト51との間に介在した第1のセレクタ71の詳細構成
を示している。第1のセレクタ71は、制御回路81
と、最上位ビット回路82と、複数の下位ビット回路8
3とで構成される。制御回路81は、加減算実行信号A
LUEXにより活性化された場合に限り、Aバス側のオ
ーバーフロー信号OVA及び飽和値符号信号SAに基づ
いて各ビット回路82,83の動作を制御するようにな
っている。論理1ラインL1は電源に接続される一方、
論理0ラインL0は接地されている。したがって、第1
のセレクタ71は、レジスタファイル10の中のあるデ
ータレジスタ31からAバス61経由で算術論理演算ユ
ニット51へデータが読み出されようとした時点で、O
VA=0ならばAバス61から供給されたデータを、O
VA=1かつSA=0ならば正の飽和値“011…1
(2進数表記)”を、OVA=1かつSA=1ならば負
の飽和値“100…0(2進数表記)”をそれぞれ算術
論理演算ユニット51へのオペランドOP1として供給
する。第2、第3及び第4のセレクタ72,73,74
の各々の詳細構成は、図5に示した第1のセレクタ71
と同様である。
説明する。ただし、4個のオーバーフローフラグOV
0,OV1,OV2,OV3がいずれも“0”に初期化
されているものとする。ここでは、次の2命令、すなわ
ち、 ADD R0,R1,R2 MUL R0,R0,R3 が順次実行されるものとする。第1の命令(ADD命
令)は、データレジスタR1に格納されたデータと、デ
ータレジスタR2に格納されたデータとの加算が算術論
理演算ユニット51により実行され、かつ該加算の結果
を表すデータがデータレジスタR0に書き込まれること
を要求するものである。すなわち、第1の命令は、第1
及び第2のソース・アドレスとしてそれぞれ1及び2を
伴い、かつデスティネーション・アドレスとして0を伴
った加算命令である。第2の命令(MUL命令)は、デ
ータレジスタR0に格納されたデータと、データレジス
タR3に格納されたデータとの乗算が乗算ユニット52
により実行され、かつ該乗算の結果を表すデータがデー
タレジスタR0に書き込まれることを要求するものであ
る。すなわち、第2の命令は、第1及び第2のソース・
アドレスとしてそれぞれ0及び3を伴い、かつデスティ
ネーション・アドレスとして0を伴った乗算命令であ
る。
令)をデコードすると、ALUEX=1、RAAd=
1、RBAd=2、WAd=0となる。したがって、ア
ドレスデコーダ11により、データレジスタR1に係る
読み出し信号RA1と、データレジスタR2に係る読み
出し信号RB2とがそれぞれ活性化される。その結果、
データレジスタR1からAバス61及び第1のセレクタ
71を経由してオペランドOP1が、データレジスタR
2からBバス62及び第2のセレクタ72を経由してオ
ペランドOP2がそれぞれ算術論理演算ユニット51へ
供給される。算術論理演算ユニット51は、両オペラン
ドOP1,OP2の加算、例えばいずれも正の固定小数
点数の加算を実行する。この加算例においてオーバーフ
ローが生じたものとすると、OV_ALU=1かつS_A
LU=0となる。このときWAd=0なので、アドレス
デコーダ11によりデータレジスタR0に係る書き込み
信号W0が活性化される。したがって、オーバーフロー
が発生していなければ算術論理演算ユニット51の演算
結果R_ALUがCバス63を経由してデータレジスタ
R0に書き込まれるところであるが、ここではOV=O
V_ALU=1なので、該データレジスタR0への演算
結果R_ALUの書き込みが禁止され、かつオーバーフ
ローフラグOV0が“1”に、サインフラグS0が
“0”にそれぞれ設定される。この際、演算結果R_A
LUに代わる正の飽和値がデータレジスタR0に書き込
まれることもないので、第1の命令(ADD命令)の実
行が早期に終了する。
令)をデコードすると、MULEX=1、RAAd=
0、RBAd=3、WAd=0となる。したがって、ア
ドレスデコーダ11により、データレジスタR0に係る
読み出し信号RA0と、データレジスタR3に係る読み
出し信号RB3とがそれぞれ活性化される。その結果、
データレジスタR0からAバス61へ、データレジスタ
R3からBバス62へそれぞれデータが読み出されよう
とする。このとき、OV3=0なので、データレジスタ
R3からBバス62へ実際にデータが読み出され、該読
み出されたデータが第4のセレクタ74を経由して乗算
ユニット52へオペランドOP4として供給される。と
ころが、OV0=1なので、データレジスタR0からA
バス61へのデータ読み出しは無効化される。そして、
オーバーフロー信号OVAと飽和値符号信号SAとが第
3のセレクタ73へ供給される。ここに、OVA=OV
A0=OV0=1であり、かつSA=SA0=S0=0
である。したがって、第3のセレクタ73は、前の命令
の演算結果R_ALUに代わる正の飽和値をオペランド
OP3として乗算ユニット52へ供給する。乗算ユニッ
ト52は、両オペランドOP3,OP4の乗算を実行す
る。この乗算においてオーバーフローが生じなかったも
のとすると、OV_MUL=0となる。このときWAd
=0なので、アドレスデコーダ11によりデータレジス
タR0に係る書き込み信号W0が活性化される結果、乗
算ユニット52の演算結果R_MULがCバス63を経
由してデータレジスタR0に書き込まれる。また、オー
バーフローフラグOV0が“0”にリセットされる。
が参照される例を説明したが、乗算命令に係るオーバー
フロー結果が参照される場合も同様である。
タレジスタ31の各々に対応してオーバーフローフラグ
レジスタ32及びサインフラグレジスタ33を備えたレ
ジスタファイル10の構成を採用し、かつデータが参照
される段階で第1〜第4のセレクタ71,72,73,
74により正又は負の飽和値を生成するようにしたの
で、飽和処理を含めたデータ処理効率が向上する。しか
も、プログラマはオーバーフローフラグレジスタ32及
びサインフラグレジスタ33の存在を意識する必要がな
い。また、オーバーフローに係る演算結果についてはレ
ジスタファイル10へのデータの書き込み及び同レジス
タファイル10からのデータの読み出しをしないことと
したので、オーバーフローの発生頻度が高くなればなる
ほど消費電力が大きく低減される。
74に関する補足説明をすると、例えばCバス63上の
データを算術論理演算ユニット51の入力へバイパスす
る必要がある場合には、第1のセレクタ71にバスセレ
クタの機能を付加すればよい。この場合の第1のセレク
タ71は、Aバス61上のデータ、Cバス63上のデー
タ、正の飽和値、又は負の飽和値のいずれかを算術論理
演算ユニット51へ供給する。他のセレクタ72,7
3,74も同様に変更可能である。データ処理装置に元
来備えられたバスセレクタに正又は負の飽和値を供給す
る機能を付加することでもよい。
レジスタ31の数は任意である。ただし、個々のデータ
レジスタ31に対応してオーバーフローフラグレジスタ
32及びサインフラグレジスタ33が設けられる。
ば、ある命令に応答して生成されたオーバーフロー信号
をフラグとして記憶しておき、他の命令に応答してデー
タレジスタからデータが読み出されようとした時点で該
フラグがオーバーフロー有りを示している場合には正又
は負の飽和値を生成して、該生成した正又は負の飽和値
を演算結果の修正値として演算ユニットへ供給するよう
にしたデータ処理装置の構成を採用したので、従来とは
違って演算結果を修正して得られる正又は負の飽和値が
データレジスタに書き込まれることがなくなる結果、オ
ーバーフローを生じた演算が早く終了し、データ処理効
率が向上する。
定された演算の実行結果を表すデータを記憶するための
データレジスタと、該演算におけるオーバーフローの発
生の有無を示すオーバーフローフラグを記憶するための
オーバーフローフラグレジスタと、該演算の結果を正の
飽和値と負の飽和値とのいずれに修正すべきかを示すサ
インフラグを記憶するためのサインフラグレジスタとを
複数のレジスタユニットの各々に設けてなるレジスタフ
ァイルの構成を採用し、他の命令に応答してデータレジ
スタからのデータの読み出しが指示された時点で、オー
バーフローフラグがオーバーフロー無しを示している場
合にはデータレジスタに記憶されたデータが、オーバー
フローフラグがオーバーフロー有りを示している場合に
はオーバーフローフラグとサインフラグとがそれぞれ出
力されることとしたので、オーバーフロー時の飽和処理
に適したレジスタファイルを提供できる。
ロック図である。
ロック図である。
である。
る。
図である。
Claims (8)
- 【請求項1】 演算におけるオーバーフロー時の飽和処
理機能を有するデータ処理装置であって、ある命令により 指定された演算を実行し、かつ該演算に
おけるオーバーフローの発生の有無を示すオーバーフロ
ー信号を生成する機能を有する演算ユニットと、 前記演算ユニットの演算結果を表すデータを記憶するた
めのデータレジスタと、 前記演算ユニットにより生成されたオーバーフロー信号
をオーバーフローフラグとして記憶するためのオーバー
フローフラグレジスタと、他の命令に応答して 前記データレジスタからデータが読
み出されようとした時点で、前記オーバーフローフラグ
がオーバーフロー無しを示している場合には前記データ
レジスタに記憶されたデータを、前記オーバーフローフ
ラグがオーバーフロー有りを示している場合には既定の
飽和値をそれぞれ前記演算ユニットへ供給するためのセ
レクタとを備えたことを特徴とするデータ処理装置。 - 【請求項2】 請求項1記載のデータ処理装置におい
て、 前記データレジスタは、前記オーバーフロー信号がオー
バーフロー有りを示している場合には、該データレジス
タへのデータの書き込みが禁止されることを特徴とする
データ処理装置。 - 【請求項3】 請求項1記載のデータ処理装置におい
て、 前記データレジスタは、前記他の命令に応答して該デー
タレジスタからデータが読み出されようとした時点で前
記オーバーフローフラグがオーバーフロー有りを示して
いる場合には、該データレジスタからのデータ読み出し
が無効化されることを特徴とするデータ処理装置。 - 【請求項4】 請求項1記載のデータ処理装置におい
て、 前記演算ユニットは、前記演算においてオーバーフロー
が発生した場合には、該演算の結果を正の飽和値と負の
飽和値とのいずれに置き換えるべきかを示す飽和値符号
信号を生成する機能を更に有し、 前記データ処理装置は、前記演算ユニットにより生成さ
れた飽和値符号信号をサインフラグとして記憶するため
のサインフラグレジスタを更に備え、 前記セレクタは、前記他の命令に応答して前記データレ
ジスタからデータが読み出されようとした時点で前記オ
ーバーフローフラグがオーバーフロー有りを示している
場合には、前記サインフラグに応じた正又は負の飽和値
を前記演算ユニットへ供給する機能を有することを特徴
とするデータ処理装置。 - 【請求項5】 演算におけるオーバーフローの発生の有
無を示すオーバーフロー信号を生成する機能を有する演
算ユニットと、該演算ユニットの演算結果を表すデータ
を記憶するためのデータレジスタとを用いたデータ処理
方法であって、ある命令に応答して生成された前記 オーバーフロー信号
をフラグとして記憶するステップと、他の命令に応答して 前記データレジスタからデータが読
み出されようとした時点で前記フラグがオーバーフロー
有りを示している場合には既定の飽和値を生成するステ
ップと、 前記生成された飽和値を前記演算ユニットへ供給するス
テップとを備えたことを特徴とするデータ処理方法。 - 【請求項6】 各々アドレスで識別される複数のレジス
タユニットを備えたレジスタファイルであって、 前記複数のレジスタユニットの各々は、ある命令により指定された演算の実行結果 を表すデータ
を記憶するためのデータレジスタと、 前記演算におけるオーバーフローの発生の有無を示すオ
ーバーフロー信号を、前記データレジスタへのデータの
書き込みを指示する書き込み信号に応答して、オーバー
フローフラグとして記憶するためのオーバーフローフラ
グレジスタと、 前記演算においてオーバーフローが発生した場合に該演
算の結果を正の飽和値と負の飽和値とのいずれに置き換
えるべきかを示す飽和値符号信号を、前記書き込み信号
に応答して、サインフラグとして記憶するためのサイン
フラグレジスタとを有し、他の命令に応答して 前記データレジスタからのデータの
読み出しを指示する読み出し信号が与えられた時点で、
前記オーバーフローフラグがオーバーフロー無しを示し
ている場合には前記データレジスタに記憶されたデータ
が、前記オーバーフローフラグがオーバーフロー有りを
示している場合には該オーバーフローフラグと前記サイ
ンフラグとがそれぞれ出力されることを特徴とするレジ
スタファイル。 - 【請求項7】 請求項6記載のレジスタファイルにおい
て、 前記データレジスタは、前記オーバーフロー信号がオー
バーフロー有りを示している場合には、該データレジス
タへのデータの書き込みが禁止されることを特徴とする
レジスタファイル。 - 【請求項8】 請求項6記載のレジスタファイルにおい
て、 前記データレジスタは、前記他の命令に応答して前記読
み出し信号が与えられた時点で前記オーバーフローフラ
グがオーバーフロー有りを示している場合には、該デー
タレジスタからのデータ読み出しが無効化されることを
特徴とするレジスタファイル。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10355480A JP3031900B2 (ja) | 1997-12-19 | 1998-12-15 | データ処理装置及びレジスタファイル |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP35053197 | 1997-12-19 | ||
JP9-350531 | 1997-12-19 | ||
JP10355480A JP3031900B2 (ja) | 1997-12-19 | 1998-12-15 | データ処理装置及びレジスタファイル |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11242584A JPH11242584A (ja) | 1999-09-07 |
JP3031900B2 true JP3031900B2 (ja) | 2000-04-10 |
Family
ID=26579222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10355480A Expired - Fee Related JP3031900B2 (ja) | 1997-12-19 | 1998-12-15 | データ処理装置及びレジスタファイル |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3031900B2 (ja) |
-
1998
- 1998-12-15 JP JP10355480A patent/JP3031900B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH11242584A (ja) | 1999-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5511173A (en) | Programmable logic array and data processing unit using the same | |
US7694109B2 (en) | Data processing apparatus of high speed process using memory of low speed and low power consumption | |
US5455955A (en) | Data processing system with device for arranging instructions | |
JP2001092662A (ja) | プロセッサコア及びこれを用いたプロセッサ | |
KR100465388B1 (ko) | Risc 구조의 8비트 마이크로 제어기 | |
KR20000076310A (ko) | 리스크 구조를 갖는 8 비트 마이크로콘트롤러 | |
JP2773471B2 (ja) | 情報処理装置 | |
WO1997032249A1 (en) | System for performing arithmetic operations with single or double precision | |
US6334135B2 (en) | Data processing system and register file | |
JP2559868B2 (ja) | 情報処理装置 | |
JP3031900B2 (ja) | データ処理装置及びレジスタファイル | |
US6230238B1 (en) | Method and apparatus for accessing misaligned data from memory in an efficient manner | |
JPH034936B2 (ja) | ||
US6260136B1 (en) | Substitute register for use in a high speed data processor | |
EP0334131B1 (en) | Data processor performing operation on data having length shorter than one-word length | |
US8583897B2 (en) | Register file with circuitry for setting register entries to a predetermined value | |
JP3570287B2 (ja) | マイクロコンピュータ | |
US6564312B1 (en) | Data processor comprising an arithmetic logic unit | |
US6233675B1 (en) | Facility to allow fast execution of and, or, and test instructions | |
JPS62156742A (ja) | デ−タ書込み制御方式 | |
US6289439B1 (en) | Method, device and microprocessor for performing an XOR clear without executing an XOR instruction | |
JP2856784B2 (ja) | 電子計算機 | |
JP2968288B2 (ja) | 中央演算処理装置 | |
US6351807B1 (en) | Data processing system utilizing multiple resister loading for fast domain switching | |
JP2869414B1 (ja) | データ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080210 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090210 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100210 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100210 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110210 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120210 Year of fee payment: 12 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120210 Year of fee payment: 12 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130210 Year of fee payment: 13 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130210 Year of fee payment: 13 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140210 Year of fee payment: 14 |
|
LAPS | Cancellation because of no payment of annual fees |