JPH0758460B2 - 浮動小数点演算の正規化制御方式 - Google Patents

浮動小数点演算の正規化制御方式

Info

Publication number
JPH0758460B2
JPH0758460B2 JP63128843A JP12884388A JPH0758460B2 JP H0758460 B2 JPH0758460 B2 JP H0758460B2 JP 63128843 A JP63128843 A JP 63128843A JP 12884388 A JP12884388 A JP 12884388A JP H0758460 B2 JPH0758460 B2 JP H0758460B2
Authority
JP
Japan
Prior art keywords
register
microprogram
operand
normalized
transfer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP63128843A
Other languages
English (en)
Other versions
JPH01297727A (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP63128843A priority Critical patent/JPH0758460B2/ja
Priority to US07/356,457 priority patent/US4991130A/en
Priority to DE68925235T priority patent/DE68925235T2/de
Priority to EP89109462A priority patent/EP0343668B1/en
Publication of JPH01297727A publication Critical patent/JPH01297727A/ja
Publication of JPH0758460B2 publication Critical patent/JPH0758460B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/226Microinstruction function, e.g. input/output microinstruction; diagnostic microinstruction; microinstruction format
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/264Microinstruction selection based on results of processing
    • G06F9/265Microinstruction selection based on results of processing by address selection on input of storage
    • 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
    • G06F9/30014Arithmetic instructions with variable precision

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (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)
  • Computing Systems (AREA)
  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明はLSIの方式設計に関し、特にマイクロプログラ
ム制御方式を用いて浮動小数点演算を行なうマイクロプ
ロセッサに関する。
〔従来の技術〕
浮動小数点演算を行なう場合、そのデータフォーマット
や例外に関する処理を規定したものにはいくつかの種類
があるが、マイクロプロセッサの世界においてほぼ標準
となっているものにIEEEが定めたIEEE P754浮動小数点
規格がある。この規格では、第10図Aに示すように、数
値は指数部と仮数部に分けて表現され、さらに通常はす
べて正規化数(仮数部の最上位ビットが1である状態;I
EEE P754の規定するデータフォーマットでは仮数部の小
数点は仮数部の最上位ビットとその1つ下のビットとの
間にあるため最上位ビットは仮数部の整数ビットとな
る)として保持することにしている。
また、第10図Bに示すように、数値として表現できる範
囲は指数部が最大値(指数部のすべての桁が1である
値)より1だけ少ない値から1までの間である。指数部
が最大値であるデータは無限大や否定など数値ではない
特殊な状態を表わす記号として規定しており、また指数
部がゼロのデータは正規化数として表現可能な最小数
(指数部が1、仮数部の整数ビットのみ1で他はすべて
0)とゼロの間を補間するための微小数値として使う
(デノーマル数)。(第10B図参照) マイクロプログラム制御方式を用いて浮動小数点演算を
行なうマイクロプロセッサを設計する場合、これらの正
規化数以外の数値もしくは記号が入力された場合の処理
も考えねばならない。無限大などの数値ではない入力の
場合は正規の演算をせずに例外処理として別のルーチン
へ分岐すればよいが、デノーマル数のように数値ではあ
るが正規化されていない数が入力された場合にはそのま
までは正規の演算処理ができない場合がある。
この場合、ソースオペランドを入力し、非正規化数であ
る場合には正規化を行なうサブルーチンを用いてソース
オペランドを正規化数に変換した後に演算処理を行なう
のが一般的な方法である。
しかし、この方法ではソースオペランドを入力し、正規
化数であることを判断するまで、演算処理が行なえな
い。よって、一般に入力されることが少ないと考えられ
る非正規化数のために本来の正規化数に対する演算処理
が遅くなってしまう、マイクロプログラムのステップ数
が増加する、などの欠点が生ずる。この事を従来の浮動
小数点演算マイクロプロセッサにおけるマイクロプログ
ラムを例にとり、以下に説明する。
第11図が従来の浮動小数点演算マイクロプロセッサにお
ける、マイクロシーケンサおよびマイクロ転送命令に関
するハードウェアのブロック図の例である。
1101はマイクロプログラムを格納しているマイクロプロ
グラムROM、1102はマイクロプログラムROM1101から読み
出されたマイクロ命令の制御フィールド(マイクロ命令
の各フィールドについては後述する)に基づきマイクロ
プロセッサ各部への制御信号を生成する制御回路、1103
は次に実行すべきマイクロ命令のアドレスを示すマイク
ロプログラムポインタ、1104はマイクロプログラムポイ
ンタ1103の内容をインクリメントし、マイクロプログラ
ムを進めるインクリメンタ、1105はマイクロプログラム
ポインタ1103に入力すべきマイクロアドレスを選択する
マイクロアドレスセレクタ、1106はマイクロプログラム
でのサブルーチンコール/リターン命令を可能にするた
めのマイクロアドレススタック、1107は制御回路1102か
らの制御信号によりマイクロプログラムがサブルーチン
コール命令の場合にマイクロプログラムポインタ1103の
内容をマイクロアドレススタック1106に格納するバッフ
ァ、1108はマイクロプログラムが実行を始める時にのみ
アクティブになるマイクロプログラム開始信号、1109は
マイクロプログラム開始信号1108によりマイクロプログ
ラムの最初にマイクロプログラムポインタ1103をマイク
ロプログラム開始アドレスに設定する初期化回路、1110
はプロセッサ外部に対し、ソースオペランド/ディステ
ィネーションオペランドを読み書きするためのオペラン
ドレジスタ、1111は通常演算対象となるAレジスタ、11
12はその他の内部レジスタ、1113は内部転送に用いる内
部データバス、1114はマイクロ命令の転送元レジスタ指
定フィールドの内容により転送元のレジスタを指定する
転送元レジスタ指定デコーダ、1115はマイクロ命令の転
送先レジスタ指定フィールドの内容により転送先のレジ
スタを指定する転送元レジスタ指定デコーダ、1116はA
レジスタが非正規化数であることを判定し、制御回路11
02にそのことを伝える判定回路である。
マイクロプログラムROM1101に格納されているマイクロ
命令は第12図に示すように転送元レジスタ指定フィール
ド、転送先レジスタ指定フィールド、演算フィールド、
制御フィールド、分岐先アドレス指定フィールドの5フ
ィールドに分れており転送命令、演算命令、制御命令の
3つを同時に指定することができる。なお、同一のアド
レスにこれらの3命令が存在する場合、制御命令、演算
命令は転送命令が終了した後に実行される。また、制御
命令に記述された命令が条件付き分岐命令の場合、その
条件は1命令前に実行されたマイクロ命令の結果によっ
て分岐/非分岐が決定される。また、1ステップのマイ
クロ命令の実行に1クロック必要である。
次に、このマイクロプロセッサを用いた場合の、非正規
化数入力を正規化・再実行するマイクロプログラムを記
述し、その問題点を明らかにする。
マイクロプログラムのフローチャートを第13図に示す。
Aレジスタ1111が演算処理の対象となるため、まず入力
されたソースオペランドをAレジスタ1111に転送し(ス
テップ)、次に判定器1116がAレジスタ1111の内容を
判断し、非正規化数である場合にはAレジスタ1111を正
規化するサブルーチンを呼び(ステップ)、Aレジス
タ1111に対して演算処理を行ない(ステップ)、結果
をAレジスタ1111からディスティネーションオペランド
に出力する(ステップ)。
このフローチャートを第14図に示したマイクロ命令セッ
トを使ってマイクロプログラムにしたものが第15図であ
る。なお、ステップに示した演算処理はOPE1,OPE2,OP
E3の3演算命令で実現できるものとする。このように、
実際の演算処理は3ステップであるため、結果の出力の
ための1クロックを考えても正規化数の演算に必要な実
行時間は4クロックであるにもかかわらず、入力データ
が非正規化数である場合にそれを正規化するまで演算処
理を待たなければならないために入力データが正規化数
であった場合にも6クロックの時間がかかってしまう。
またマイクロプログラム(メインルーチン)の大きさも
6ステップと長くなってしまう。
〔発明が解決しようとする課題〕
以上説明したように従来の浮動小数点演算プロセッサで
は、稀にしか入力されない非正規化数のために演算処理
を行なうことができない数ステップをマイクロプログラ
ムの先頭に用意せざるを得なく、このために実行速度が
低下し、マイクロプログラムも長くなってしまう、とい
う問題点があった。
〔課題を解決するための手段〕
本発明の正規化制御方式は、マイクロプログラムの開始
アドレスを保持するアドレスレジスタと、ソースオペラ
ンドを保持するオペランドレジスタと、演算データを一
時的に格納しておくテンポラリレジスタと、マイクロプ
ログラム開始時に前記オペランドレジスタを示すコード
を保持し、内部レジスタ間転送時には転送元レジスタを
示すポインタと、入力されたソースオペランドが非正規
化数である事を判定する判定器とを有している。
〔実施例〕
以下、図面を参照しながら本発明の構成と動作について
説明する。
第1図に本発明の前処理制御方式を用いたマイクロプロ
セッサのブロック図を示す。
101はマイクロプログラムを格納しているマイクロプロ
グラムROM、102はマイクロプログラムROM101から読み出
されたマイクロ命令の制御フィールドに基づきマイクロ
プロセッサ各部への制御信号を生成する制御回路であ
る。マイクロ命令の各フィールドの構成、命令の種類、
実行タイミングなどは〔従来の技術〕の項で示したマイ
クロプロセッサの例と同様であるため、説明は省略す
る。103は次に実行すべきマイクロ命令のアドレスを示
すマイクロプログラムポインタ、104はマイクロプログ
ラムポインタ103の内容をインクリメントし、マイクロ
プログラムを進めるインクリメントである。105はマイ
クロプログラムポインタ103に入力すべきマイクロアド
レスを選択するマイクロアドレスセレクタ、106はマイ
クロプログラムでのサブルーチンコール/リターン命令
を可能にするためのマイクロアドレススタックである。
107は制御回路102からの制御信号によりマイクロプログ
ラムがサブルーチンコール命令の場合にマイクロプログ
ラムポインタ103に内容をマイクロアドレススタック106
に格納するバッファ、108はマイクロプログラムが実行
を始める時にのみアクティブになるマイクロプログラム
開始信号である。109はマイクロプログラム開始信号108
によりマイクロプログラムの最初にマイクロプログラム
ポインタ103とマイクロアドレススタック106にマイクロ
プログラム開始アドレスを設定し、レジスタポインタ11
7にオペランドレジスタ110を示すコードを設定する初期
化回路、110はプロセッサ外部に対し、ソースオペラン
ド/ディスティネーションオペランドを読み書きするた
めのオペランドレジスタであり、111は通常演算対象と
なるAレジスタ、112は一時的にデータを格納しておくT
MPレジスタである。113は内部転送に用いる内部データ
バス、114はマイクロ命令の転送元レジスタ指定フィー
ルドの内容により転送元のレジスタを指定する転送元レ
ジスタ指定デコーダ、そして115はマイクロ命令の転送
先レジスタ指定フィールドの内容により転送先のレジス
タを指定する転送先レジスタ指定デコーダである。116
は、マイクロ命令の転送元レジスタ指定フィールドに基
づいて内部転送を直接転送とするか間接転送とするかを
示す直接転送/間接転送選択信号、117は転送元レジス
タを間接指定する場合にそのレジスタを示すコードを保
持するレジスタポインタである。118は転送元レジスタ
指定デコーダ114へ入力する転送元レジスタ指定コード
をマイクロ命令の中の転送元レジスタ指定フィールドの
値とするか、レジスタポインタの値とするかを直接転送
/間接転送選択信号116により決定する転送方法セレク
タ、119はAレジスタ111の内容が非正規化数である場合
に制御回路にそのことを示す信号を送る判定器である。
第11図に示した従来例に対して追加されたものは初期化
回路109のレジスタポインタ初期化機能と、レジスタポ
インタ117、転送方法セレクタ118の3つであり、これら
のハードウェアによってマイクロプログラムの高速化が
実現される。この動作をフローチャートとマイクロプロ
グラムの例を示して以下に説明する。
本発明の前処理制御方式を実現するマイクロプログラム
のフローチャートを第2図に示す。
フローチャートのレベルでは第8図に示した従来例とほ
ぼ同じ形になる。Aレジスタ111が演算処理の対象とな
るため、まずレジスタポインタ117による間接指定で指
定されたレジスタをAレジスタ111に転送するとともに
最初の演算処理を行い(ステップ)、次に2番目の演
算処理を行いながらAレジスタ111の内容を判断し、非
正規化数である場合にはAレジスタ111を正規化するサ
ブルーチンに分岐し、(ステップ)、Aレジスタ111
に対して最後の演算処理を行ない(ステップ)、結果
をAレジスタ111からオペランドレジスタ110に出力する
(ステップ)。
ここで、従来の例である第13図のフローチャートと異な
るところは4点ある。第1にマイクロプログラムの最初
でAレジスタ111にソースオペランドを転送する際に間
接転送を使って転送元のレジスタを指定している事、第
2にソースオペランドが正規化数であるという判断を持
たずに演算処理を始めている事、第3にステップによ
って非正規化数と判断された場合に従来例ではサブルー
チンコールを使って正規化ルーチンへ分岐しているのに
対し、本発明では通常分岐命令によって正規化ルーチン
へ分岐している事、第4に正規化ルーチン内において、
Aレジスタ111を正規化した結果をAレジスタ111に戻さ
ずにTMPレジスタ112に待避し、レジスタポインタ117にT
MPレジスタ112を示す転送コードを設定してリターンと
している事である。これらの変更点がどの様な効果をも
たらすかをマイクロプログラムとともに説明する。
このフローチャートを第9図に示したマイクロ命令セッ
トを使ってマイクロプログラムにしたものが第3図であ
る。なお目的の演算処理は従来例と同様、OPE1,OPE2,OP
E3の3演算命令で実現できるものとする。
まず、メインルーチンの第1行でレジスタポインタ117
による間接指定によりAレジスタ111に転送が行なわれ
る。レジスタポインタ117には初期化回路109によりオペ
ランドレジスタ110を指定するコードが設定されている
ため、Aレジスタ111にはオペランドレジスタ110の内容
が転送される。同時に演算命令‘OPE1'を実行し、演算
処理を開始する。ただし、この場合の演算処理は正規化
数でなければ正しい結果を返さないため、入力オペラン
ドが非正規化数である場合にはこの演算は無効となる。
メインルーチンの第2行で判定器119によりAレジスタ1
11に入力された値が判断され、非正規化数であった場合
にはジャンプ命令で正規化サブルーチンに分岐する。こ
の行でも演算命令‘OPE2'により演算処理を続行する。
第2行以降は入力オペランドにより処理が分れるため、
まず非正規化数の場合を説明する。
入力が非正規化数であるためにメインルーチン第2行か
ら正規化サブルーチンの第1行に分岐し、その行の転送
命令でレジスタポインタ117にTMPレジスタ112を示す転
送元レジスタ指定コードを設定する。同時に演算命令
‘NORM'を実行し、Aレジスタ111の正規化を行なう。本
来の演算処理のための‘OPE1'〜‘OPE3'は3命令すべて
を実行しなければ完了しないため、ここで‘OPE3'を行
わずに‘NORM'を行うことにより無効であった非正規化
数に対する演算処理は中断される。
正規化サブルーチンの第2行で正規化されたAレジスタ
111をTMPレジスタ112に保存し、リターン命令を実行す
る。
このサブルーチンにはメインルーチンの第2行からサブ
ルーチンコール命令ではなくジャンプ命令で分岐してき
たために、従来のマイクロプロセッサでは戻り番地が分
からずリターン命令が不可能であるが、本発明の場合は
初期化回路109によりマイクロプログラム開始時にマイ
クロアドレススタック106にマイクロプログラムの開始
番地が積まれているため、このリターン命令でマイクロ
プログラムの開始番地に戻ることができる。
ここで、マイクロプログラムの開始アドレスに戻るため
に通常の分岐命令ではなく、このように初期化ハードウ
ェアを追加してリターン命令で戻る形にしている理由を
述べておく。一般的に浮動小数点演算プロセッサでは、
1つの正規化サブルーチンを多数のメインルーチンが演
算前の正規化のために呼ぶことになり、正規化サブルー
チンにとっては戻るべき番地は各マイクロプログラムの
開始アドレスというだけで絶対アドレスはわからないた
めである。
メインルーチンの第1行から再び実行が開始され、もう
一度レジスタポインタ117による間接指定によりAレジ
スタ111に転送が行なわれる。今度はレジスタポインタ1
17には正規化サブルーチンの第1行によりTMPレジスタ1
12を指定するコードが設定されているため、Aレジスタ
111にはTMPレジスタ112の内容が転送される。この内容
は入力されたソースオペランドを正規化したものである
ため、以降は通常の正規化数に対する処理と同様にな
る。
次に、入力されたソースオペランドが正規化数である場
合のメインルーチン第2行以降の動作を説明する。
入力が正規化数であるためにメインルーチン第2行の条
件ジャンプ命令では分岐せず、メインルーチンの第3行
を実行する。この行で演算命令‘OPE3'が実行され、演
算処理が完了する。
第4行でAレジスタ111からオペランドレジスタ110に演
算処理の結果が転送され、制御命令‘END'でマイクロプ
ログラムが終了する。
このように、入力オペランドが正規化数であるか非正規
化数であるかにかかわらず、マイクロプログラムの最初
から演算処理を行い、途中で入力オペランドが非正規化
数であると判明した場合には入力オペランドを正規化し
直して再び最初から実行する、という制御を行うことに
より、入力オペランドが非正規化数でなかった場合には
必要最小限の実行時間(この場合は演算処理に3クロッ
ク、結果の出力に1クロックの計4クロック)でマイク
ロプログラムの実行を完了することができる。
またマイクロプログラムの大きさも入力オペランドを判
断するまで演算せずに待つためのステップが不要となる
ため、従来のマイクロプログラムより短くすることがで
きる。
前述の実施例では単項演算の場合の例を示したが、2項
演算においても本発明を用いることにより単項演算の場
合と同様、高速化とマイクロプログラムの短縮を図るこ
とができる。
第4図に2項演算を行うマイクロプロセッサに本発明を
施した例を他の実施例として示す。401はマイクロプロ
グラムROM、402はマイクロシーケンスである。403はマ
イクロアドレススタックである。マイクロシーケンサ40
2は第1図と同様にマイクロプログラムポインタ、イン
クリメンタ、マイクロアドレスセレクタ、判定器から成
っているがここでは省略して記述した。404はマイクロ
プログラム開始信号、405はマイクロプログラム開始時
にマイクロプログラム開始番地をマイクロアドレススタ
ック403のスタックトップに、オペランドレジスタS406
を示す転送コードをレジスタポインタS408に、オペラン
ドレジスタD407を示す転送コードをレジスタポインタD4
12にそれぞれ設定する初期化回路である。406は入力さ
れた第1のソースオペランドを保持するオペランドレジ
スタS、407は入力された第2のソースオペランドを保
持し、演算処理後にディスティネーションオペランドを
出力するオペランドレジスタDである。408はレジスタ
ポインタS、409は転送元レジスタ指定コードから転送
元レジスタを決定する転送元レジスタ指定デコーダであ
る。410は転送命令の転送元レジスタを直接指定とする
か、レジスタポインタS408を使った間接指定とするか、
もしくはレジスタポインタD412を使った間接指定とする
かをマイクロ命令の転送元レジスタ指定フィールドから
出力するレジスタ転送方法選択信号である。411はレジ
スタ転送方法選択信号410により転送元レジスタ指定デ
コーダ409に入力する転送元レジスタ指定コードを選択
するレジスタ転送方法セレクタ、412はレジスタポイン
タD、413は転送先レジスタ指定コードから転送先レジ
スタを決定する転送先レジスタ指定デコーダである。41
4は演算処理の第1対象となるAレジスタ、415は演算処
理の第2対象となるBレジスタ、416はCレジスタ、そ
して417はDレジスタである。418はAレジスタ414、B
レジスタ415に対し、マイクロ命令の演算フィールドで
指定された正規化処理、演算処理などを行う演算器、41
9は演算処理の結果、正規化結果などが出力されるRレ
ジスタ、420はAレジスタ414、Bレジスタ415の内容が
非正規化数である場合にマイクロシーケンサ402に通知
する非正規化数判定器である。
第5図に本発明の間接転送と初期化回路を使わずに従来
の方法で2項演算を行う場合のフローチャートを示す。
Aレジスタ414に第1ソースオペランドを入力し(ステ
ップ)、 Bレジスタ415に第2ソースオペランドを入力し(ステ
ップ)、 Aレジスタ414が非正規化数であった場合にはAレジス
タ414を正規化するサブルーチンを呼んでAレジスタ414
を正規化数とし(ステップ)、 Bレジスタ415が非正規化数であった場合にはBレジス
タ415を正規化するサブルーチンを呼んでBレジスタ415
を正規化数とし(ステップ)、 正規化数となったAレジスタ414とBレジスタ415に対
し、演算処理を行い、(ステップ)、 演算結果をディスティネーションオペランドに出力する
(ステップ)。
このフローチャートをマイクロプログラム化したものを
第7図に示す。なお、使用したマイクロ命令の内容を第
6図に示しておく。
メインルーチンの第1行でオペランドレジスタD407から
Aレジスタ414に第1ソースオペランドを転送し、 第2行でオペランドレジスタS406からBレジスタ415に
第2ソースオペランドを転送する。このとき、同時にA
レジスタ414が正規化数であるか非正規化数であるかを
判定し、必要なら正規化サブルーチン‘normA'をサブル
ーチンコールする。Aレジスタ414が非正規化数であっ
た場合にはサブルーチン内において正規化してからAレ
ジスタ414に戻し、メインルーチンの第3行に実行を戻
す。ここまでで、Aレジスタ414には必ず正規化数とな
った第1ソースオペランドが入っていることになる。
第3行では第2行で転送されたBレジスタ415が判定さ
れ、非正規化数の場合は正規化サブルーチン‘normB'を
サブルーチンコールする。Bレジスタ415が非正規化数
であった場合にはサブルーチン内において正規化してか
らBレジスタ415に戻し、メインルーチンの第4行に実
行を戻す。
マイクロプログラムがこの行まで実行すると、Aレジス
タ414、Bレジスタ415ともに必ず正規化数となっている
ことになるため、ここで始めて演算処理が開始できる。
第4行から第6行までの3ステップで演算命令‘DOP1'
〜‘DOP3'を実行し(この例では実行例1と同様、演算
処理に3ステップ費やすものとする)、その結果をRレ
ジスタ419からオペランドレジスタD407に転送し、ディ
スティネーションオペランドに出力する。
このように従来の方法では両ソースオペランドが正規化
数であると保証されるまで演算処理が開始できないた
め、マイクロプログラムの最初の部分に余計な3ステッ
プが費やされてしまう。
次に本発明を用いた場合のフローチャートを第8図に示
す。
Aレジスタ414に第1ソースオペランドを入力し(ステ
ップ)、 Bレジスタ415に第2ソースオペランドを入力し(ステ
ップ)、 演算処理の1ステップ目を行い(ステップ)、 Aレジスタ414が非正規化数であった場合にはAレジス
タ414を正規化するサブルーチンに分岐する(ステップ
)。
このサブルーチンではレジスタポインタD412にCレジス
タ416を示す転送元レジスタ指定コードを設定し、Aレ
ジスタ414を正規化してCレジスタ416に転送した後、さ
らにレジスタポインタS408にDレジスタ417を示す転送
元レジスタ指定コードを制定し、Bレジスタ415を正規
化した値をDレジスタ417に転送してからマイクロプロ
グラムの先頭に戻る。
Aレジスタ414が正規化数であった場合には続いて演算
処理の2ステップ目を行い(ステップ)、 Bレジスタ415が非正規化数であった場合にはBレジス
タ415を正規化するサブルーチンに分岐する(ステップ
)。
このサブルーチンではレジスタポインタS408にDレジス
タ417を示す転送元レジスタ指定コードを設定し、Bレ
ジスタ415を正規化した値をDレジスタ417に転送してか
らマイクロプログラムの先頭に戻る。
Bレジスタ415が正規化数であった場合には続いて演算
処理の最後のステップを行い(ステップ)、 演算結果をディスティネーションオペランドに出力する
(ステップ)。
このフローチャートをマイクロプログラム化したものを
第9図に示す。
Aレジスタ414、Bレジスタ415がそれぞれ正規化数であ
るか非正規化数であるかによって処理の流れが変わるた
め、まずAレジスタ414、Bレジスタ415がともに正規化
数である場合の説明を述べる。
メインルーチン第1行でレジスタポインタD412による間
接指定によりAレジスタ414へ転送を行う。マイクロプ
ログラムの開始時には初期化回路405がレジスタポイン
タD412にオペランドレジスタD407を示すコードを設定し
ているため、オペランドレジスタD407から第1ソースオ
ペランドが転送される。
メインルーチン第2行でレジスタポインタS408による間
接指定によりBレジスタ415へ転送を行う。メインルー
チン第1行と同様にマイクロプログラムの開始時には初
期化回路405がレジスタポインタS408にオペランドレジ
スタS406を示すコードを設定しているため、オペランド
レジスタS406から第2ソースオペランドが転送される。
このとき、同時に演算命令‘DOP1'を実行し、演算処理
を開始する。が、この演算処理は実施例1と同様に入力
オペランドが両方とも正規化数でなければ正しく動作し
ないため、どちらかのオペランドが非正規化数であった
場合にはこの演算処理は無効であるが、この場合、Aレ
ジスタ414,Bレジスタ415ともに正規化数であるため問題
ない。
また、メインルーチン第2行ではAレジスタ414が正規
化数であるか非正規化数であるかの判定も行い、必要な
ら正規化サブルーチン‘normAB'に分岐するが、この場
合、Aレジスタ414は正規化数であるため分岐しない。
メインルーチン第3行では演算命令‘DOP2'が実行され
演算処理を続行すると同時に第2行で転送されたBレジ
スタ415が判定され、非正規化数の場合は正規化サブル
ーチン‘normB'に分岐する。Bレジスタ415は正規化数
であるため分岐しない。
メインルーチン第4行において演算命令‘DOP3'を実行
し、演算処理を完了する。その結果を第5行でRレジス
タ419からオペランドレジスタD407に転送し、ディステ
ィネーションオペランドに出力してマイクロプログラム
を終了する。
つぎにAレジスタ414が非正規化数である場合の説明を
述べる。なお、この場合はBレジスタ415は正規化数で
あっても非正規化数であっても同じ動作になる。
メインルーチン第1行でレジスタポインタD412による間
接指定によりオペランドレジスタD407からAレジスタ41
4へ転送を行う。
メインルーチン第2行でレジスタポインタS408による間
接指定によりオペランドレジスタS406からBレジスタ41
5へ転送を行う。
このとき、同時に演算命令‘DOP1'を実行し、演算処理
を開始する。が、Aレジスタ414が非正規化数であるた
めこの演算処理は無効である。
また、メインルーチン第2行ではAレジスタ414が正規
化数であるか非正規化数であるかの判定も行っているた
め、正規化サブルーチン‘normAB'に(サブルーチンコ
ールではなく)ジャンプ命令により分岐する。
正規化したサブルーチンの第1行においてレジスタポイ
ンタD412にCレジスタ416を示すコードを設定し、Aレ
ジスタ414を正規化してから第2行でCレジスタ416に正
規化結果を転送する。
さらに、サブルーチンの第3行でレジスタポインタS408
にDレジスタ417を示すコードを設定し、Bレジスタ415
を正規化して第4行でその結果をDレジスタ417に転送
してからリターン命令を実行する。(ただし、Bレジス
タ415が正規化数である場合には正規化処理を行っても
変化せずに出力される。)このリターン命令により、マ
イクロアドレススタック403に積まれていたマイクロプ
ログラム開始アドレスが読み出され、メインルーチンの
第1行に実行を戻す。レジスタポインタD412がCレジス
タ416を示すよう、またレジスタポインタS408がDレジ
スタ417を示すよう書き換えられているため、今度は新
しい第1ソースオペランドとして最初の第1ソースオペ
ランドを正規化したデータが、新しい第2ソースオペラ
ンドとして最初の第2ソースオペランドを正規化したデ
ータがそれぞれ入力され、改めてマイクロプログラムを
最初からやり直すことになる。
なお、ここでAレジスタ414が非正規化数であった場合
に、Bレジスタ415によって処理を分けずに無条件にB
レジスタ415を正規化している理由を述べておく。
本発明ではソースオペランドが非正規化数であった場合
に、スタックにあらかじめ積んでおいたマイクロプログ
ラムの開始アドレスを使って再スタートさせているた
め、Aレジスタ414を正規化・再スタートさせたあと、
同じ方法でBレジスタ415を正規化・再スタートさせよ
うとしてもすでにスタックに積んでおいたマイクロプロ
グラムの開始アドレスはなくなっている。よって、正規
化・再スタートは1回に限られるためである。
次にAレジスタ414が正規化数であり、Bレジスタ415が
非正規化数である場合の動作を述べる。
メインルーチン第1行と第2行の転送まではAレジスタ
414が正規化数であった場合と同様である。第2行での
演算命令‘DOP1'はBレジスタ415が非正規化数であるた
め無効である。また、Aレジスタ414が正規化数である
ため、分岐はしない。
メインルーチン第3行では演算命令‘DOP2'が実行され
演算処理を続行すると同時に第2行で転送されたBレジ
スタ415が判定され、非正規化数であるため正規化サブ
ルーチン‘normB'に(コール命令ではなくジャンプ命令
により)分岐する。
正規化サブルーチン‘normB'は実際には正規化サブルー
チン‘normAB'の後半の部分であり、第9図における正
規化サブルーチン第3行からとなる。
そのサブルーチン第3行においてレジスタポインタS408
にDレジスタ417を示すコードを設定し、Bレジスタ415
を正規化してDレジスタ417に戻してからリターン命令
を実行する。このリターン命令により、メインルーチン
の第1行に実行を戻す。レジスタポインタS408がDレジ
スタ417を示すよう書き換えられているため、今度は新
しい第2ソースオペランドとして最初の第2ソースオペ
ランドを正規化したデータが入力され、改めてマイクロ
プログラムを最初からやり直すことになる。
このマイクロプログラムを実行させた場合、入力ソース
オペランドのいずれか一方でも非正規化数だった場合は
正規化処理を施してから再びマイクロプログラムを最初
からやり直さなければいけないため、実行時間がかかる
が、両方とも正規化数である場合には必要最小限の5ス
テップ(2オペランド揃うために1ステップ,演算処理
に3ステップ,結果の出力に1ステップ,の計5ステッ
プ)でマイクロプログラムの処理を終了することができ
る。
〔発明の効果〕
以上述べたように、本発明の正規化制御方式は、マイク
ロプログラム開始時にその開始アドレスをマイクロアド
レススタックに積み、レジスタポインタにオペランドレ
ジスタを示すコードを設定する初期化回路と、内部転送
レジスタの間接指定を可能にするハードウェアを用いる
ことにより、マイクロプログラムの実行時間を短縮し、
記述量を減少させる効果を発揮する。
【図面の簡単な説明】
第1図は本発明の一実施例によるマイクロプロセッサの
ブロック図、第2図は本発明を用いた単項演算の場合の
演算前正規化処理のフローチャート、第3図は第2図の
フローチャートのマイクロプログラム図、第4図は本発
明の他の実施例によるマイクロプログラムのブロック
図、第5図は従来の2項演算の場合の演算前正規化処理
のフローチャート、第6図は第7図、第9図のマイクロ
プログラムにおいて使用したマイクロ命令セット図、第
7図は第5図のフローチャートをマイクロプログラム
図、第8図は本発明を用いた2項演算の場合の演算前正
規化処理のフローチャート、第9図は第8図のフローチ
ャートをマイクロプログラム図、第10図Aは浮動小数点
表現の説明図、第10図Bは非正規化数の説明図、第11図
は従来のマイクロプロセッサのブロック図、第12図はマ
イクロ命令のフィールド区分の説明図、第13図は従来の
単項演算の場合の演算前正規化処理のフローチャート、
第14図は第3図,第15図のマイクロプログラムにおいて
使用したマイクロ命令セット図、第15図は第13図のフロ
ーチャートをマイクロプログラム図である。

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】マイクロプログラムの開始アドレスを保持
    するアドレスレジスタと、ソースオペランドを保持する
    オペランドレジスタと、演算データを一時的に格納して
    おくテンポラリレジスタと、マイクロプログラム開始時
    に前記オペランドレジスタを示すコードに初期化される
    ポインタと、入力されたソースオペランドが非正規化数
    である事を判定する判定器とを有し、ソースオペランド
    が非正規化数である場合には前記判定器によりマイクロ
    プログラムの実行を分岐することで、前記テンポラリレ
    ジスタに正規化したオペランドデータを格納し、前記ポ
    インタに前記テンポラリレジスタを示すコードを設定し
    た状態で、前記アドレスレジスタで指定されるアドレス
    よりマイクロプログラムを再び始めから実行することを
    特徴とする浮動小数点演算の正規化制御方式。
JP63128843A 1988-05-25 1988-05-25 浮動小数点演算の正規化制御方式 Expired - Fee Related JPH0758460B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP63128843A JPH0758460B2 (ja) 1988-05-25 1988-05-25 浮動小数点演算の正規化制御方式
US07/356,457 US4991130A (en) 1988-05-25 1989-05-25 Normalization control system for floating point arithmetic operation
DE68925235T DE68925235T2 (de) 1988-05-25 1989-05-26 Normalisationssteuerungssystem für gleitkommaarithmetische Operationen
EP89109462A EP0343668B1 (en) 1988-05-25 1989-05-26 Normalization control system for floating point arithmetic operations

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63128843A JPH0758460B2 (ja) 1988-05-25 1988-05-25 浮動小数点演算の正規化制御方式

Publications (2)

Publication Number Publication Date
JPH01297727A JPH01297727A (ja) 1989-11-30
JPH0758460B2 true JPH0758460B2 (ja) 1995-06-21

Family

ID=14994758

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63128843A Expired - Fee Related JPH0758460B2 (ja) 1988-05-25 1988-05-25 浮動小数点演算の正規化制御方式

Country Status (4)

Country Link
US (1) US4991130A (ja)
EP (1) EP0343668B1 (ja)
JP (1) JPH0758460B2 (ja)
DE (1) DE68925235T2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6154760A (en) * 1995-11-27 2000-11-28 Intel Corporation Instruction to normalize redundantly encoded floating point numbers
DE10051284A1 (de) * 2000-10-16 2002-04-25 Systemonic Ag Datenpfadanordnung
US6976153B1 (en) * 2002-09-24 2005-12-13 Advanced Micro Devices, Inc. Floating point unit with try-again reservation station and method of operation
US7243217B1 (en) 2002-09-24 2007-07-10 Advanced Micro Devices, Inc. Floating point unit with variable speed execution pipeline and method of operation
US9195463B2 (en) * 2011-11-30 2015-11-24 International Business Machines Corporation Processing core with speculative register preprocessing in unused execution unit cycles

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4412283A (en) * 1980-05-30 1983-10-25 Fairchild Camera & Instrument Corp. High performance microprocessor system
US4573118A (en) * 1983-03-31 1986-02-25 Fairchild Camera & Instrument Corporation Microprocessor with branch control
US4713750A (en) * 1983-03-31 1987-12-15 Fairchild Camera & Instrument Corporation Microprocessor with compact mapped programmable logic array
US4773035A (en) * 1984-10-19 1988-09-20 Amdahl Corporation Pipelined data processing system utilizing ideal floating point execution condition detection
JPS61296435A (ja) * 1985-06-25 1986-12-27 Panafacom Ltd マイクロプログラム制御方式
JPH01189727A (ja) * 1988-01-25 1989-07-28 Mitsubishi Electric Corp 情報処理装置

Also Published As

Publication number Publication date
DE68925235T2 (de) 1996-07-18
US4991130A (en) 1991-02-05
EP0343668A2 (en) 1989-11-29
DE68925235D1 (de) 1996-02-08
EP0343668A3 (en) 1991-09-11
JPH01297727A (ja) 1989-11-30
EP0343668B1 (en) 1995-12-27

Similar Documents

Publication Publication Date Title
US5349667A (en) Interrupt control system for microprocessor for handling a plurality of maskable interrupt requests
US5682545A (en) Microcomputer having 16 bit fixed length instruction format
US4862407A (en) Digital signal processing apparatus
US5596733A (en) System for exception recovery using a conditional substitution instruction which inserts a replacement result in the destination of the excepting instruction
JPH03116233A (ja) データプロセッサの命令処理システム
US4539635A (en) Pipelined digital processor arranged for conditional operation
US5440702A (en) Data processing system with condition code architecture for executing single instruction range checking and limiting operations
US6216222B1 (en) Handling exceptions in a pipelined data processing apparatus
JPH0810428B2 (ja) データ処理装置
EP0094535B1 (en) Pipe-line data processing system
JPH01137331A (ja) 制御ワード分岐方法
US6012138A (en) Dynamically variable length CPU pipeline for efficiently executing two instruction sets
US4373182A (en) Indirect address computation circuit
JPS645330B2 (ja)
US4888722A (en) Parallel arithmetic-logic unit for as an element of digital signal processor
JPH07120284B2 (ja) データ処理装置
EP0388735A2 (en) Microprogram controller having fixed-instruction generator and microprogram memory
EP0141232A2 (en) Vector processing unit
JPH0758460B2 (ja) 浮動小数点演算の正規化制御方式
JP2748957B2 (ja) データ処理装置
US6044455A (en) Central processing unit adapted for pipeline process
US4977497A (en) Data processor
EP0573071A2 (en) A microprocessor
JP2000029696A (ja) プロセッサおよびパイプライン処理制御方法
JPH0222413B2 (ja)

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees