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

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

Info

Publication number
JPH01297727A
JPH01297727A JP63128843A JP12884388A JPH01297727A JP H01297727 A JPH01297727 A JP H01297727A JP 63128843 A JP63128843 A JP 63128843A JP 12884388 A JP12884388 A JP 12884388A JP H01297727 A JPH01297727 A JP H01297727A
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.)
Granted
Application number
JP63128843A
Other languages
English (en)
Other versions
JPH0758460B2 (ja
Inventor
Shingo Kojima
小嶋 伸吾
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)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

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

Claims (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 true JPH01297727A (ja) 1989-11-30
JPH0758460B2 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
US7243217B1 (en) 2002-09-24 2007-07-10 Advanced Micro Devices, Inc. Floating point unit with variable speed execution pipeline and method of operation
US6976153B1 (en) * 2002-09-24 2005-12-13 Advanced Micro Devices, Inc. Floating point unit with try-again reservation station 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

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01189727A (ja) * 1988-01-25 1989-07-28 Mitsubishi Electric Corp 情報処理装置

Family Cites Families (5)

* 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
US4713750A (en) * 1983-03-31 1987-12-15 Fairchild Camera & Instrument Corporation Microprocessor with compact mapped programmable logic array
US4573118A (en) * 1983-03-31 1986-02-25 Fairchild Camera & Instrument Corporation Microprocessor with branch control
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 マイクロプログラム制御方式

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01189727A (ja) * 1988-01-25 1989-07-28 Mitsubishi Electric Corp 情報処理装置

Also Published As

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

Similar Documents

Publication Publication Date Title
US5349667A (en) Interrupt control system for microprocessor for handling a plurality of maskable interrupt requests
US4471433A (en) Branch guess type central processing unit
US5430862A (en) Emulation of CISC instructions by RISC instructions using two pipelined stages for overlapped CISC decoding and RISC execution
EP0455345A2 (en) Programmable controller
EP0612012A1 (en) A pipeline computer with scoreboard
US5097407A (en) Artificial intelligence processor
EP0094535B1 (en) Pipe-line data processing system
KR970003321B1 (ko) 코프로세서 지정 시스템
JPS61204758A (ja) コ・プロセツサ制御方式
JPS645330B2 (ja)
US4764869A (en) Method and apparatus for controlling interruption in the course of instruction execution in a processor
US4631672A (en) Arithmetic control apparatus for a pipeline processing system
JPH07120338B2 (ja) 共同プロセッサによる命令の実行をデータプロセッサが調整する方法および該データプロセッサ
EP0223150B1 (en) Information processing apparatus
JPH0673105B2 (ja) 命令パイプライン方式のマイクロプロセッサ
JPH01297727A (ja) 浮動小数点演算の正規化制御方式
JPS6212529B2 (ja)
EP0385136B1 (en) Microprocessor cooperating with a coprocessor
JP2690406B2 (ja) プロセッサおよびデータ処理システム
EP0306891A2 (en) Pipelined slave protocol for high performance CPU-FPU cluster
JP2520882B2 (ja) デ−タ処理装置およびデ−タ処理方法
JPS6160459B2 (ja)
EP0573071A2 (en) A microprocessor
JPH02148164A (ja) 情報処理システム
JPH0222413B2 (ja)

Legal Events

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