JPH09212362A - マイクロプロセッサ - Google Patents

マイクロプロセッサ

Info

Publication number
JPH09212362A
JPH09212362A JP8336647A JP33664796A JPH09212362A JP H09212362 A JPH09212362 A JP H09212362A JP 8336647 A JP8336647 A JP 8336647A JP 33664796 A JP33664796 A JP 33664796A JP H09212362 A JPH09212362 A JP H09212362A
Authority
JP
Japan
Prior art keywords
floating point
instruction
data
floating
cpu
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
JP8336647A
Other languages
English (en)
Inventor
Bisuwasu Purasenjitsuto
ビスワス プラセンジット
Shunpei Kawasaki
俊平 河崎
Norio Nakagawa
典夫 中川
Osamu Nishii
修 西井
Kunio Uchiyama
邦男 内山
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPH09212362A publication Critical patent/JPH09212362A/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/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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • 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, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor

Abstract

(57)【要約】 【課題】 16ビット固定長浮動小数点命令セットを採
用する場合に浮動小数点命令の種類が少なくなることに
よる浮動小数点処理の制限を極力減らす。 【解決手段】 CPU(218)とFPU(210)を
含むマイクロプロセッサに16ビット固定長の浮動小数
点命令セットを採用する。このとき、CPUがFPUの
ためのアドレシング処理を行うことによって浮動小数点
ユニットは中央処理装置と同様に強力なアドレシングモ
ードをサポートしなくても済む。CPUとFPUとの間
でのデータ転送をコミュニケーションレジスタ(41
8)を介して行うことにより、CPUとFPUとの間で
データ転送を行うための浮動小数点命令の種類を減らす
ことができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、浮動小数点ユニッ
ト及び中央処理装置を含んだマイクロプロセッサ、特
に、16ビット固定長浮動小数点命令セットを有するコ
ンピュータアーキテクチャに係り、例えば機器組み込み
制御用途のRISC型マイクロプロセッサに適用して有
効な技術に関するものである。
【0002】
【従来の技術】あるRISC(縮小命令セットコンピュ
ータ)マイクロプロセッサはFPU(浮動小数点ユニッ
ト)を持つ。浮動小数点ユニットは浮動小数点演算を実
行する回路である。RISCは、マイクロプロセッサの
複雑さを低減するために相対的に単純で固定サイズの命
令を用いる、コンピュータアーキテクチャである。RI
SCアーキテクチャにおける殆どの命令は、汎用レジス
タを利用してオペランドを処理し、その結果を汎用レジ
スタに格納する。これらのレジスタはメモリからロード
される。典型的には、レジスタの内容は、プログラムの
実行の間再利用される。殆どのRISCアーキテクチャ
は16個以上の汎用レジスタを有する。典型的なRIS
Cアーキテクチャにおける浮動小数点命令は、少なくと
も32ビットの長さ(ビット数)を有する。そのような
RISCマイクロプロセッサの例としてはパワーPCが
ある。パワーPCはIBM及びモトローラによって広め
られた。同様に、MIPS、その他のRISCベースの
マイクロプロセッサもまた、夫々の浮動小数点命令に3
2ビットを要求する。MIPSマイクロプロセッサは、
カリフォルニア、サンニバルのMIPS・コンピュータ
・システム・インコーポレーテッドによって製造されて
いる。
【0003】図1はパワーPCのための典型的な32ビ
ット長浮動小数点命令110を示す。命令110の17
ビットはオペレーションコード114に割り当てられ
る。浮動小数点命令110の15ビット118はアドレ
スレジスタ(address registers)に利用される。浮動
小数点命令110のオペレーションコード114は、浮
動小数点命令110を実行するために、15ビット11
8を利用してアドレス指定されたレジスタの内容を処理
する。
【0004】RISCアーキテクチャが一般に少なくと
も32ビット長の浮動小数点命令を要求する理由は、そ
のような命令は一般に32個の浮動小数点レジスタのバ
ンクから選択された複数個のレジスタで3個のオペラン
ドを利用するからである。32個のレジスタをアドレス
指定するには5ビット必要である。それ故、32個のレ
ジスタから夫々のオペランドを選択するには15ビット
要求される。明かではあるが、残りの複数ビットはオペ
レーションコード114のために要求される。
【0005】
【発明が解決しようとする課題】RISCマイクロプロ
セッサのCPU(中央処理装置)のレジスタとFPUの
レジスタとの間でのデータの転送に関する問題がある。
レジスタは例えばラッチのアレイである。一般に浮動小
数点ユニットは浮動小数点フォーマットでデータを格納
するためのレジスタを持つ。同様に、CPUは整数フォ
ーマットでデータを格納する整数レジスタを持つ。整数
レジスタと浮動小数点レジスタとの間でのデータ転送は
しばしば、RISCマクロプロセッサのキャッシュメモ
リのようなメモリを介して起こる。例えば、FPUがC
PUにデータを転送する必要があるとき、FPUは最
初、浮動小数点レジスタからキャッシュメモリにデータ
を転送する。次に、CPUはキャッシュメモリに格納さ
れているこのデータをCPUレジスタの記憶領域に獲得
する。しかしながら、データの格納又は獲得のためにキ
ャッシュメモリにアクセスするのは、格納又は獲得のた
めにレジスタからデータをアクセスするのに比べて一般
に遅い。更に、メモリをアクセスできるということは、
メモリアクセス回路によって費やされるチップ面積をC
PU及びFPUに要求するということである。しかしな
がら、そのようなチップ面積の増大は、例えばエンベデ
ッド・アプリケーション(組み込み機器制御)への応用
にとっては重大である。エンベデッド・アプリケーショ
ンは、例えばプロセッサをゲームのような特定機能の制
御に割り当てる。より複雑なRISCプロセッサにはC
PUとFPUレジスタとの間のデータ転送のために特別
な直結パスが割り当てられているものいがある。しかし
ながら、この追加されたパスは前記チップ面積の増加を
要求する。
【0006】本発明者は、16ビット固定長浮動小数点
命令セットを採用することについて検討した。浮動小数
点命令のビット数を減らせば、浮動小数点命令を格納す
るメモリサイズを小さくできるなどの利点がある反面、
浮動小数点命令の種類が少なくなり、浮動小数点演算に
利用するデータをフェッチするためのアドレシングモー
ド、浮動小数点演算に利用し或いは浮動小数点演算され
たデータを転送する処理、イミディエイトデータを利用
する浮動小数点処理などに関して制限を受けることが明
らかにされた。
【0007】本発明の目的は、16ビット固定長浮動小
数点命令セットを採用する場合に浮動小数点命令の種類
が少なくなることによる制限を極力減らすことができる
マイクロプロセッサを提供することにある。
【0008】本発明の別の目的は、CPUとFPUとの
間のデータ転送を高速化することができるマイクロプロ
セッサを提供することにある。
【0009】本発明の更に別の目的は、CPUとFPU
との間でデータ転送を行うための浮動小数点命令の種類
を減らすことができるマイクロプロセッサを提供するこ
とにある。
【0010】本発明のその他の目的は、16ビット固定
長浮動小数点命令セットを採用する場合にもイミディエ
イト値をオペランドとして浮動小数点処理を行えるマイ
クロプロセッサを提供することにある。
【0011】更に本発明は、浮動小数点ユニットを含み
機器組み込み制御用途に最適なマイクロプロセッサを提
供することにある。
【0012】本発明の前記並びにその他の目的と新規な
特徴は本明細書の記述及び添付図面から明らかになるで
あろう。
【0013】
【課題を解決するための手段】本願において開示される
発明のうち代表的なものの概要を簡単に説明すれば下記
の通りである。
【0014】本発明は、16ビット固定長浮動小数点命
令を有する32ビットRISCアーキテクチャに関す
る。浮動小数点命令長を16ビットに減少させるとコン
ピュータプログラムを格納するためのメモリ領域を節約
出来る。例えば、浮動小数点命令長を32ビットから1
6ビットに減少すると、それら命令を格納するために必
要なメモリを半減出来る。命令サイズの減少はキャッシ
ュミス率を減少させ、なぜなら、多くの命令をキャッシ
ュメモリに格納出来るからである。さらに、浮動小数点
命令長を短くすることは、命令フェッチの待ち時間(la
tency)を改善する。16ビット命令は32ビットブロ
ックでフェッチされる。したがって、メモリからの1回
のフェッチで2命令を獲得することができ、それに対し
て32ビット命令の場合には1回のメモリアクセスで1
命令をフェッチ出来るだけである。浮動小数点命令長を
短くすることは、浮動小数点命令を格納するために要求
されるメモリサイズの減少を可能にし、それ故に、オン
チップキャッシュメモリのために利用されるチップ面積
を減少する。
【0015】浮動小数点命令を16ビットにすると上述
の利点がある反面、浮動小数点命令の種類が少なくなる
ことによる制限を受けることになる。その制限を極力減
らすという意味において以下の手段を採用する。
【0016】先ず第1に、中央処理装置がマイクロプロ
セッサのための全てのアドレシング処理を行う。すなわ
ち、アドレスバス及びデータバスに結合された中央処理
装置と、前記データバスに結合された浮動小数点ユニッ
トとを含むマイクロプロセッサに関し、前記浮動小数点
ユニットは16ビット固定長浮動小数点命令セットを用
いて浮動小数点処理を実行するが、このとき、前記中央
処理装置は前記浮動小数点ユニットが浮動小数点処理を
実行するための命令とデータを得るのに必要なアドレシ
ング処理を行う。浮動小数点ユニットはレジスタ相対な
どの強力なアドレシングモードをサポートしなくてもよ
く、これによって、浮動小数点命令の種類が少なくて
も、浮動小数点処理には支障ない。
【0017】第2に、CPUとFPUとの間のデータは
コミュニケーションレジスタを介して転送される。すな
わち、前記浮動小数点ユニットは、浮動小数点ユニット
とプロセッサとの間でのデータ交換を行うためにデータ
バスを介して中央処理装置に接続されるコミュニケーシ
ョンレジスタを含む。前記浮動小数点ユニットは、前記
中央処理装置によってコミュニケーションレジスタにロ
ードされたデータを用いて浮動小数点命令に従った浮動
小数点処理を行う。このように、コミュニケーションレ
ジスタへのデータ転送はレジスタ相対などの強力なアド
レシングモードを有する中央処理装置が行い、浮動小数
点ユニットは強力なアドレシングモードをサポートしな
くても、浮動小数点処理に必要などのようなデータもコ
ミュニケーションレジスタから高速に得ることができ
る。
【0018】第3に、16ビット固定長命令のグループ
は、浮動小数点数0又は1のイミディエイト値をロード
する特別な命令を持つ。すなわち、記浮動小数点ユニッ
トは、複数個の浮動小数点レジスタを有し、前記16ビ
ット固定長浮動小数点命令セットは、所定の前記浮動小
数点レジスタに、命令のデコード結果に従って浮動小数
点数0をロードする第1のイミディエイト値ロード命令
を含む。同様に、前記16ビット固定長浮動小数点命令
セットは、所定の前記浮動小数点レジスタに、命令のデ
コード結果に従って浮動小数点数1をロードする第2の
イミディエイト値ロード命令を含む。前記イミディエイ
ト値ロード命令は、それ自体がイミディエイトデータを
有する必要はなく、そのオペレーションコードのデコー
ド結果に従って0又は1の浮動小数点数イミディエイト
データを浮動小数点レジスタにロードさせるから、16
ビットの命令長であっても、イミディエイトデータを用
いた浮動小数点処理を可能にする。イミディエイト値1
又は0だけをサポートする理由は、グラフィック制御な
どを企図した機器組み込み制御用途において多用される
イミディエイト値1又は0を専らサポートして、マイク
ロプロセッサのチップ面積の増大を極力押させるためで
ある。
【0019】また、データプロセッサは、IEEE浮動
小数点標準No.754の例外の全てをサポートしな
い。また、IEEE丸めモードの全てがサポートされる
ことを必要としない。同様に、値を生成する浮動小数点
処理の結果が正規化された数でないなら、それをゼロと
みなす。すなわち、浮動小数点ユニットは、第1及び第
2の浮動小数点数に基づいて第3の浮動小数点数を形成
する加算手段と、前記加算手段の出力、第1の浮動小数
点数、第2の浮動小数点数及び浮動小数点数0を入力
し、選択制御信号に従って前記入力の一つを選択して出
力する選択手段と、前記第1の浮動小数点数と第2の浮
動小数点数が非正規化数であるかを検出する検出手段
と、前記検出手段の出力を受け、前記第1の浮動小数点
数と第2の浮動小数点数の双方が正規化数であるときは
前記加算手段の出力を前記選択手段に選択させ、前記第
1の浮動小数点数と第2の浮動小数点数の内の何れか非
正規化数であるときは正規化数としての第1の浮動小数
点数又は第2の浮動小数点数を前記選択手段に選択さ
せ、前記第1の浮動小数点数と第2の浮動小数点数の双
方が非正規化数であるときは浮動小数点数0を前記選択
手段に選択させる、選択制御信号を生成する選択信号回
路とを含む。乗算手段に対しては、前記検出手段の出力
を受け、前記第1の浮動小数点数と第2の浮動小数点数
の双方が正規化数であるときは前記乗算手段の出力を前
記選択手段に選択させ、前記第1の浮動小数点数と第2
の浮動小数点数の内の少なくとも何れか一方が非正規化
数であるときは浮動小数点数0を前記選択手段に選択さ
せる、選択制御信号を生成する選択信号回路を採用す
る。上記IEEE浮動小数点標準から逸脱した上記内容
は、マイクロプロセッサのチップ面積と実行サイクル時
間を節約する。
【0020】
【発明の実施の形態】本発明の好適な実施の態様は32
ビットRISCアーキテクチャであり、16ビット固定
長浮動小数点命令を有する。浮動小数点命令長を16ビ
ットに縮小することはコンピュータプログラムを格納す
るメモリスペースを節約する。例えば、浮動小数点命令
長を32ビットから16ビットに縮小することは、それ
ら命令を格納するのに要求されるメモリを半減する。命
令サイズの縮小はキャッシュミス率を低減し、なぜな
ら、より多くの命令をキャッシュメモリに格納出来るか
らである。さらに、浮動小数点命令長を縮小すること
は、命令フェッチの待ち時間を改善する。フェッチの待
ち時間は、メモリから命令をフェッチするのに要求され
る時間に関係する。16ビット命令は32ビットブロッ
クでフェッチされる。したがって、メモリからの1回の
フェッチで2個の命令を獲得することができ、32ビッ
ト命令ではメモリシーケンス毎に1個の命令をフェッチ
できるに過ぎない。浮動小数点命令長を縮小すること
は、浮動小数点命令を格納するのに要求されるメモリサ
イズを縮小することができ、これによって、オンチップ
キャッシュメモリに費やされるチップ面積を縮小するこ
とができる。
【0021】この実施の態様は特に3次元グラフィック
スを十分にサポートする必要を持つエンベデッド・アプ
リケーション(例えばビデオ・ゲーム)への応用に有効
である。一般に、単精度浮動小数点を表現するデータは
IEEE浮動小数点標準に従う。しかしながら、効率化
のために、この実施の態様はIEEE浮動小数点標準の
すべての例外をサポートしない。また、IEEE丸めモ
ードの全てについてもサポートされない。同様に、値を
生成する浮動小数点処理の結果が正規化された数でない
なら、それはゼロに一括消去される。即ち、浮動小数点
演算において最下位ビットを順次シフトして落としてい
く過程で、正規化された浮動小数点数の最小値よりも小
さく0よりも大きな数が発する。これを非正規化数(de
normalized number)と呼ぶ。非正規化数は指数が0で
あるが、仮数は0よりも大きい数である。このように、
非正規化数は正規化数に比べて小さく、そのような非正
規化数は実質的に無視し得るほど小さいものとして取り
扱うということになる。この取り扱いは、科学技術計算
のような高い演算精度を要求する応用分野では適さない
が、3次元グラフィック若しくはゲームなどの機器組み
込み制御への応用に対しては、実害なはない。IEEE
浮動小数点標準からのそのような逸脱は、むしろ、チッ
プ面積と実行サイクル時間を節約する上において好まし
い。IEEE浮動小数点標準からの逸脱に関しては以下
の更に詳細な説明によって論ぜられる。
【0022】図2は本発明の実施の態様に係るプロセッ
サのダイヤグラムを示す。マイクロプロセッサ(単にプ
ロセッサとも記す)210は浮動小数点ユニット(FP
U)214を有する。さらに、前記プロセッサ210は
中央処理装置(CPU)218を有し、このCPU21
8は整数を処理する能力を持つ。CPU218にとって
16ビット固定長命令を利用する有利な点と詳細は、文
献“SH3:高いコード効率、ローパワー、IEEE
Micro,PP. 11-19, 12月 1995年(SH3: Hi
gh Code Density, Low Power, IEEE Micro, pp. 11-19,
December 1995)”で論ぜられている。前記CPU21
8は32ビットデータバス222を介して前記FPU2
14に結合されている。整数累積乗算ユニット(IMA
C)220がデータバス222に結合されている。図2
に示される回路間のインタフェース信号はCPU218
とFPU214との間のインタフェース信号224及び
225を除いて示されていない。前記CPU18は32
ビット論理アドレスバス226を介してメモリマネージ
メント装置(TLBコントローラ)2345に結合され
る。TLBはアドレス変換バッファを意味する。前記T
LBコントローラ234は命令とデータに共用されるT
LB238を制御する。TLB238は32ビット物理
アドレスバス230を介してキャッシュコントローラ2
42に接続される。キャッシュコントローラ242は命
令とデータに共用されるキャッシュメモリ246を制御
する。キャッシュメモリ246は32ビットデータバス
222を介してCPU218とFPU214に結合され
る。
【0023】マイクロプロセッサ210は更に、周辺デ
ータバス250及び周辺アドレスバス251に接続され
たシリアルコミュニケーションインタフェース252、
タイマ253等を備え、それら周辺データバス250及
び周辺アドレスバス251はバスステートコントローラ
254を介して前記データバス222及び物理アドレス
バス230にインタフェースされる。内外からの割込み
要求の調停等は割り込みコントローラ255が行う。チ
ップ外部とのバスインタフェースは外部バスインタフェ
ース回路256によって行われる。この説明と図2に示
された名称に基づけば、図2に示されているその他の回
路の機能は当業者にとっては自ずと理解されるであろ
う。
【0024】プロセッサ210の機能は次の例によって
理解されるであろう。FPU214は浮動小数点処理の
ためにメモリからデータ又は命令を要求することにな
る。この実施の態様において、前記FPU214はキャ
ッシュメモリ246にデータをストアし又はキャッシュ
メモリ246からデータを獲得するためにメモリをアド
レシングする能力を持っていない。これは、FPUのメ
モリ・アドレシング回路の必要性を取り除くことによっ
てチップ面積を節約する。それに代え、CPU218は
FPU214に代わってキャッシュメモリなどををアド
レシングする機能を有する。したがって、FPU214
若しくは浮動小数点命令は、CPU210と同様の強力
なアドレシングモードをサポートする必要はなく、その
機能を全てCPU210が負担する。CPU218はF
PU214のためにメモリからデータのフェッチを行う
だけでなく、CPU218はまたFPU214のために
浮動小数点命令を含む全ての命令をメモリからフェッチ
する。更に、以下に詳述されるように、FPU214と
CPU218との間でのデータ転送はメモリアクセスを
伴わずに行われ、それに代えて、より速いレジスタアク
セスを通して行われる。
【0025】データと命令を獲得するために、CPU2
18は、演算を行って、32ビット論理アドレスバス2
26を介してメモリマネージメント装置234に論理ア
ドレス(即ち仮想アドレス)を送って、メモリ246か
らのデータ又は命令を要求する。もしも対応する物理ア
ドレスがTLB238に格納されていないなら、TLB
ミスを生じ、TLBコントローラ234はマッピング情
報を利用して論理アドレスを物理アドレスに変換するプ
ログラムシーケンスを行う。メモリマネージメント装置
234はそのときTLB238にその物理アドレスを格
納する。TLB238は将来の利用、即ちCPU218
がそれと同じアドレス範囲のデータを要求するとき、の
ために、その物理アドレスを格納する。TLB238は
32ビット物理アドレスバス230を介してキャッシュ
コントローラ242にその物理アドレスを送る。キャッ
シュコントローラ242は命令とデータに共用されるキ
ャッシュメモリ246を操作して、32ビットデータバ
ス222にデータ又は命令を置く。もしも、要求された
アドレスがキャッシュメモリ246上で有効でないな
ら、キャッシュミスを生じ、要求された情報が外部メモ
リからキャッシュメモリにフェッチされるまで、CPU
218とFPU214の処理はキャッシュミス信号の適
用によってフリーズされる。ここで、フリーズとは、命
令それ事態の配列に起因して生ずるようなメモリコンフ
リクトやレジスタコンフリクトのような状態に応じてパ
イプラインを止めるストールとは異なる概念を一般に持
つ。すなわち、フリーズとは、命令の配列(命令の実行
順序)に起因しない要因、例えば、キャッシュミスやT
LBミスなどによってパイプラインをある期間止めるこ
とを意味する。ストールもフリーズも、ハザード(障
害)に対処する一つの手段であることには変わりない。
【0026】命令はCPU218とFPU14の双方に
よるデコードのためにピックアップされる。命令及びデ
ータはCPU218とFPU214によって共有される
32ビットの共通データバス上4で利用可能である。F
PU214はデータや命令をフェッチするためにメモリ
をアドレシングすることはできない。
【0027】CPU218がキャッシュメモリ246か
らフェッチする浮動小数点データは、標準的なIEEE
単精度フォーマットで格納される。しかしながら、マイ
クロプロセッサ210における浮動小数点処理は、先に
述べたように、IEEE浮動小数点標準に絶対的に固執
するものではない。その逸脱はマイクロプロセッサ21
0のチップ面積を縮小し、プロセッサ210の実行サイ
クル数を縮小する。この逸脱はエンベデッド・アプリケ
ーションに妥協を許す。例えば、正規化されていない浮
動小数点数(単に非正規化数とも記す)は、値を生成す
る浮動小数点処理によってゼロに一括消去される(即
ち、ゼロにセットされる)。正規化されていない浮動小
数点数は値がゼロの基底付き指数を持つ。非正規化数は
正規化数に比べて小さく、そのような非正規化数は実質
的に無視し得るほど小さいものとして取り扱うというこ
とになる。値を生成する浮動小数点処理の例は、浮動小
数点加算、浮動小数点減算、浮動小数点乗算、浮動小数
点除算である。しかしながら、コピー命令のような、値
を生成しない浮動小数点処理は、正規化されていない浮
動小数点数をゼロに一括消去しない。
【0028】非正規化数をゼロに一括消去(フラッシン
グ)する回路310は図3に示される。この回路310
はキャリー伝達加算器(CPA)322への浮動小数点
数の入力314,318を持つ。加算器322は浮動小
数点数AとBを加算して、その結果326を選択回路3
30に供給する。データパス334,338は入力31
4,318に結合され、直接選択回路330に至る。入
力314,318はまた、非正規化数検出器342に結
合される。また、選択回路330には値ゼロの浮動小数
点数344の入力が結合される。信号経路346は選択
信号回路350に前記非正規化数検出器342を接続す
る。選択信号パス354は選択回路330に選択信号回
路330を結合する。前記選択回路330は出力358
を供給することができる。
【0029】回路310は以下のようにして、非正規化
数をゼロにフラッシングする。非正規化数検出器342
は、浮動小数点数A,Bの少なくとも一つが非正規化数
であるかを検出する。非正規化数検出器342はその検
出情報を信号パス346を介して選択信号回路350に
送る。浮動小数点数A又はBのどれか一つが非正規化数
なら、そのとき、選択信号回路350は選択パス354
を介して正規化されている数314又は318を直接選
択するように選択回路330を制御する。もしも、浮動
小数点数A,Bのどちらも非正規化数で無いならば、選
択信号回路350は選択回路330を制御して選択回路
330の出力358のために演算結果326を選択す
る。
【0030】しかしながら、双方の浮動小数点数A,B
が非正規化数であるなら、そのときは、選択信号回路3
50は選択回路330を制御して、選択回路330の出
力358のためにゼロ344を選択する。
【0031】この記述に基づけば、当業者は、他の浮動
小数点処理のために非正規化数A又は/及びBを処理す
るのに、どのように回路310を変更すればよいかを、
理解するであろう。例えば、明らかなように、加算器3
22は浮動小数点数A,Bの互いの減算にも利用でき
る。同様に、加算器322の代わりに、乗算器が浮動小
数点数A,Bを乗算することがもできる。しかし、乗算
の場合、浮動小数点数A,Bの一方だけが非正規化数で
あったとしても、選択信号回路350は選択回路330
を制御して値ゼロ344を選択することが望ましい。
【0032】また、当業者であれば、加算器322が除
算器に変更されたとしても、選択信号回路350はセレ
クタ330を制御して値ゼロ344又は浮動小数点数の
無限標記の一方を選択するであろうことを、上記記述に
基づいて認識するであろう。特別な選択は、浮動小数点
数A,Bのどちらが非正規仮数であるかに依存するであ
ろう。
【0033】上述のように、FPU214の複雑なハー
ドウェアを更に単純化するには、浮動小数点数はゼロに
丸められる。即ち切り捨てられる。ゼロへの丸めによっ
てハードウェアの複雑さが縮小されるだけでなく、加え
るに、クロックサイクル数が節約される。
【0034】図15は浮動小数点数をゼロに丸めるため
の回路1408を示す。図15において、レジスタFR
m1410とFRn1414の内容が操作される。双方
の内容1410,1414は浮動小数点数である。正規
化器1418は浮動小数点数1410,1414を正規
化し、例えば、これら二つの数1410,1414の加
算が要求されるかもしれいない。浮動小数点数141
0,1414に対する浮動小数点処理が例えば加算であ
るとき、2mビットCPAのような加算器1422が浮
動小数点数1410,1414を加算する。
【0035】もちろん、加算に代えて、加算器1422
によって実行される処理が減算であってもよい。加算器
1422の出力1424は先行1検出器(leading one
detector)及び正規化回路1425に入力される。回路
1425による2mビットの加算結果は中間レジスタ1
425に供給される。中間レジスタ1426の下位側の
mビット1430は無視される。それに対して、レジス
タ1426の上位側mビット1446は丸めの結果14
50として通過される。だから、回路1408の処理結
果としての、数値1410と1414に対する浮動小数
点処理結果の下位側mビットは、ゼロに設定される。
【0036】回路1408が浮動小数点数1410,1
414を加算する間、その他の回路は浮動小数点数14
10,1414を互いに乗算又は除算するであろう。回
路1408の記述に基づけば、回路1408に示された
浮動小数点数の加算に代えて、他の回路が浮動小数点数
1410,1414を乗算又は除算できることは、当業
者にとって明らかであり、その場合に、丸めの結果14
50を達成するには、回路1408の一部分1454が
変更される必要はないであろう。前記一部分1454は
加算器の出力1424に代えて他のどんな出力も採るこ
とことができ、下位側mビット1430をゼロにセット
することができる。
【0037】浮動小数点命令と浮動小数点命令に関係す
るCPU命令の完全なリストは図16に示される。これ
ら命令は図17〜図48にその詳細が記述され、それに
は命令のC言語標記が含まれている。図17〜図48に
列挙されたこれら命令は、命令の意味に関して重要性の
無いアンダーラインを示している。
【0038】CPU218とFPU214との間でのデ
ータ転送(交換)は、それに割り当てられたコミュニケ
ーションレジスタ(FPUL)418(図4参照)を介
して行われる。上述のように、従来のRISCプロセッ
サにおけるCPU218とFPU214との間のデータ
交換はキャッシュメモリ246のようなメモリを経由し
て行われる。キャッシュメモリ246を介するデータ転
送は、FPULレジスタ418のようなレジスタを介す
るデータ転送に比べて一般に遅い。
【0039】図4はFPU214からそしてFPU21
4へのデータ転送のための回路のブロックダイヤグラム
を示す。そのようなデータ転送は、FPU214とCP
U218との間のデータ転送を含むだけでなく、FPU
214がデータフェッチのために間接的にキャッシュメ
モリ246をアクセスする機構も含む。図4において、
CPU218はレジスタファイル410、即ち、R0〜
R15の範囲に複数のレジスタを有する。同様に、FP
U214はレジスタファイル、即ちFR0〜FR15の
範囲に複数のレジスタを有する。さらに、FPU14は
コミュニケーションレジスタ(FPUL)418を有す
る。CPU18はデータパス422を介してFPU2
14に結合される。データパス422はCPU218
をデータバス222に結合するセグメント426を含
む。データパス422はまたデータバス222を(F
PUL)418に結合するセグメント430を含む。F
PU214のレジスタファイル414はデータパス4
34を介してコミュニケーションレジスタ(FPUL)
418に結合される。FPUレジスタ414はまた、デ
ータパス438を介してキャッシュメモリ246に結
合される。データパスはFPUレジスタ414をデー
タバス222に結合するパスセグメント422を含む。
データパスはまた、データバス222をキャッシュメ
モリ246に結合するセグメント446を含む。更に、
データパスはそれに関連するアドレスリンク450を
持つ。アドレスリンク450はアドレシングを目的とし
てCPU218をデータバス222に結合する。そし
て、データパス454はFPUデータレジスタ414
を互いに結合する。
【0040】特定のデータパスに沿ったデータ転送に利
用されるCPU命令又はFPU命令群がある。データパ
ス422、434、438、454は命令グル
ープ458、462、464及び468に夫々関係す
る。
【0041】図5は図16に示される浮動小数点命令の
一つ、すなわち16ビット浮動小数点命令468、特に
データパス454に関係するものを示す。命令468
は、フローティングポイントレジスタ(浮動小数点レジ
スタ)FRmの内容を、浮動小数点レジスタFRnに転
送する命令であって、それは図16のニーモニック(mn
emonic)の欄にアッセンブルコードで示され、図47に
示されており、サフィックス“m”と“n”は0〜15
の値を取るものと考えられる。このムーブ命令(move i
nstruction)468は夫々4ビットの長さを有する4個
の領域を備える。ムーブ命令468の2個の領域51
4,514はオペレーションコード(図16のop code
の欄を参照)を構成する。図5(及び図16のop code
の欄)では16進数フォーマットで示されている残りの
2個の領域518,522はオペランドを表し、例えば
レジスタはFRnとFRmを夫々識別している。オペレ
ーションコード514は、浮動小数点ムーブ命令を達成
するために518と522によって識別されるレジスタ
を操作する。
【0042】データパスに関係するもう一つの命令と図
4の回路のオペレーションを示すために、データパス
422に関連する命令グループ458に含まれる、CP
U・ロード・コミュニケーションレジスタ・命令(CP
UがコミュニケーションレジスタFPULにロードする
命令)を次に説明する。命令“LDS Rm,FPU
L”、すなわちCPU・ロード・コミュニケーションレ
ジスタ・命令は、図40に示されているように、CPU
の汎用レジスタRmの内容を浮動小数点コミュニケーシ
ョンレジスタ(FPUL)418にコピーする。CPU
・ロード・コミュニケーションレジスタ・命令を実行す
るために、CPUはレジスタRmの内容をデータバス2
22に転送する。レジスタ指定“Rm”において、mは
CPU218の汎用レジスタ410のどれかを識別する
ために0〜15の値を採る。そのときCPU218は、
データバス430から転送されたデータをFPU214
がFPULレジスタ418に格納するのに十分な時間だ
け、データバス222上のデータを有効(利用可能)に
する。この命令“LDS Rm,FPUL”により、F
PU214は、CPU218がFPULレジスタ418
にロードしたデータを利用して浮動少数点演算を行うこ
とができる。このデータロードに際して、そのためのア
ドレシング(メモリアクセス)はCPU218が行う。
CPU218はレジスタ相対などの各種アドレシングモ
ードをサポートしているので、FPU214それ自体は
そのような強力なアドレシングモードを一切サポートし
なくてもよい。16ビット固定長浮動小数点命令セット
を採用することによって浮動小数点命令の種類が少なく
なっても、CPUとFPUとの間ので^他転送には一切
不自由はない。
【0043】図6には、CPU218とFPU214が
命令を実行するために利用するパイプラインを示す。F
PUパイプライン610とCPUパイプライン614は
単一の命令フェッチステージ618を共有する。更に、
FPUパイプライン610は4個のパイプラインステー
ジ、すなわち、デコードステージ(Df)622、第1
実行ステージ(E1)626、第2実行ステージ(E
2)630及びライトバックステージ(Sf)634を
持つ。同様に、CPUパイプライン614は更に4個の
ステージ、すなわち、デコードステージ(Di)63
8、実行ステージ(E)642、メモリアクセスステー
ジ(A)646及びライトバックステージ(Bi)65
0を持つ。Diステージ638は、図6の矢印655で
示されるように、FPUパイプラインステージのために
バイパス、ストール及びキャンセルのための信号を生成
する。Diステージ638は、信号パス655を経由し
て、E1ステージ626とE2ステージ630へのバイ
パス信号を供給し、そして、FPUステージ622,6
26,630,634並び共有されたIステージ618
にキャンセル信号を供給し、更に、ストールに関連され
る信号をDfステージ622に供給し、並びに、E1ス
テージ626にストール信号を供給する。それらの信号
については更に次に説明する。
【0044】データバス222上で利用可能な命令は、
最初命令フェッチステージ618によって獲得される。
命令フェッチステージ618でフェッチされた命令は双
方のデコードステージDf622,Di638がデコー
ドする。デコードステージの第1段階は、その命令がC
PU命令かFPU命令かを識別する処理を含む。FPU
命令は、命令の上位4ビットにおけるF(16進数)に
よって識別される。もしも命令が浮動小数点タイプでな
いなら、Dfステージ622は命令を更にデコードしな
い。同様に、Diステージは浮動小数点命令を完全にデ
コードしない。Diステージ638は、実行されるべき
浮動小数点処理を識別するための浮動小数点命令のデコ
ードを行なわない。これによって、ハードウェアの複雑
化に対して大きな縮小をもたらす。もしもシングルデコ
ードステージを利用するとすれば、FPUデータパスを
制御するために要求される全ての信号は、CPU218
からFPU214に交差されてチップエリアの増大をも
たらすことになるであろう。フェッチされた命令が浮動
小数点命令のときは、FPUパイプライン610のE1
ステージ626が命令を実行し始める。FPUパイプラ
イン610のE2ステージ630は、そのとき、この浮
動小数点命令の実行を完了する。命令の要求に応じて、
FPUパイプライン610のSfステージ634が命令
の実行結果を浮動小数点レジスタに格納する。
【0045】同様に、フェッチされた命令が、整数を処
理するようなCPU命令である場合、CPUパイプライ
ン614のEステージ642は、その命令を実行する。
特定の命令が実行されることによって呼ばれたとき、C
PUパイプライン614のAステージ646がキャッシ
ュメモリ246をアクセスする。最後に、CPUパイプ
ライン614のSiステージ650は、命令実行結果を
例えばCPUレジスタ410の一つに書き込むことがで
きる。FPUパイプライン610とCPUパイプライン
614の一方の利用だけを要求する命令は、利用されて
いないパイプラインに関してはそれを単に通過して実質
的なオペレーションを行わずに終わる。例えば、命令フ
ェッチステージ618が整数加算命令をフェッチしたと
き、CPUパイプライン614はこの整数加算命令を実
行ステージ(E1)642で実行し、そして実行結果を
Siステージ650でレジスタに格納する。しかしなが
ら、整数加算命令がデコードされたとき、FPUパイプ
ライン610のDfステージ622は整数加算命令をE
1ステージ626を単に通過させる。そして整数加算命
令は続けてその後のクロックサイクルの期間にFPUパ
イプライン610の残りのステージを通過する。同様
に、フェッチされた命令が純粋な浮動小数点命令である
ときは、Diステージ638は浮動小数点命令をEステ
ージ642に通過させ、その後のサイクルの期間にはC
PUパイプライン614の残りのステージに通過させ
る。ここでいう“通過”とは、表裏の関係にあるCPU
パイプラインとFPUパイプラインの何れか一方におい
て実質的なオペレーションを伴わないパイプラインステ
ージが単に形式的に通過していくということを意味する
に過ぎない。
【0046】ここで、CPUパイプラインとFPUパイ
プラインとを図6に例示されるように構成することの意
義を説明する。すなわち、FPUパイプライン610と
CPUパイプライン614のパイプライン段数(パイプ
ラインのステージ数)を相互に等しくしてある。ストー
ルを行う期間、パイプラインステージ間のバイパスをど
のステージからどのステージに対して行うかという制御
は、パイプラインステージの長さ(段数)に依存する。
通常、ストールの制御はストールされるべきパイプライ
ン側で制御し、また、バイパス制御はバイパスされるデ
ータの受け側で制御する。そうすると、FPUパイプラ
インとCPUパイプラインの段数が相違する場合には、
バイパスに代表されるようなパイプライン間でのデータ
交換、ストール、フリーズ、及びキャンセル等のための
制御を行うリソース、即ち、パイプラインのフロー制御
などを行うためのロジック回路やバイパスのための制御
線などを、CPUパイプラインとFPUパイプラインと
の間で殆ど個別化しなければならなくなる。図6に例示
されるように、FPUパイプライン610とCPUパイ
プライン614のパイプライン段数を相互に等しくする
と、CPUパイプライン614とFPUパイプライン6
10とのフロー制御等のためのパイプライン制御用のリ
ソースをFPUパイプラインとCPUパイプラインで殆
ど共有させることができ、このパイプラインリソースの
共有によってパイプライン制御のための物理的な回路規
模を縮小することができる。しかもCPUパイプライン
614とFPUパイプライン610との同期化も容易に
なる。
【0047】ある命令はFPUパイプライン610とC
PUパイプライン614との間のデータ転送をコールす
る。そのような命令の例としては、データパスを利用
するCPU・ロード・コミュニケーション・レジスタ命
令472“LDS Rm,FPUL”がある。図7はF
PUパイプライン610、CPUパイプライン614及
び双方のパイプライン610、614の間におけるデー
タ転送のためのタイミングを示す。パイプラインの構成
は図6に示される通りである。パイプラインの夫々のス
テージは、単一クロックサイクル例えば位相1のクロッ
ク708(位相2のクロックは示されていない)に相当
することに着目すべきである。前記CPUロード・コミ
ュニケーション・レジスタ命令472はCPU218の
命令である。しかしながら、上述のように、全ての命令
はFPUパイプライン610とCPUパイプライン61
4の双方のデコードステージ622、638によってデ
コードされる。だから、CPUロード・コミュニケーシ
ョン・レジスタ命令472をデコードすると、Dfステ
ージ622は、FPUパイプライン610で必要な処理
が含まれるであろうことを認識し、それによって、FP
U214はFPULレジスタ418へのアクセスを制御
する。最初、CPUロード・コミュニケーション・レジ
スタ命令472はCPUパイプライン614によってE
ステージ642で実行される。同時に、FPUパイプラ
イン610のE1ステージ626は何ら動作することな
く文字Tによって示されるように命令を通過させる。言
い換えれば、CPUロード・コミュニケーション・レジ
スタ命令472は単にE1ステージを通される。
【0048】ここで、E1ステージに関連する別の説明
を行う。一般的に、パイプライン610,614の夫々
のステージは実行に1サイクルを要する。しかしなが
ら、パイプラインステージにおいて1サイクル以上を費
やす特別な命令がある。その場合、命令は特定のパイプ
ラインステージが繰り返される。例えば、図24及び図
25に示されるような浮動小数点除算命令“FDIV”
は、13サイクルの待ち時間を有する。ここで、待ち時
間とは、例えばFPUパイプライン610の実行ステー
ジ626,630で命令が費やす全サイクル数を意味す
る尺度である。浮動小数点命令はE2ステージ630で
1サイクル費やす。これによって明らかなように、浮動
小数点除算命令はE1ステージ626で12サイクルを
費やす。図24には浮動小数点除算命令のピッチ(pitc
h)が示されており、このピッチは、現在の命令の次の
命令がパイプラインで実行開始できる前のクロックサイ
クルによる尺度である。例えば、浮動小数点除算命令の
後に続く次の命令は12サイクル後に実行を始めること
ができ、浮動小数点除算命令のピッチは12サイクルに
等しい。数値12のピッチは、浮動小数点除算命令がE
1ステージ626で12サイクルを費やすということを
示す。したがって、次の浮動小数点命令はE1ステージ
626に入る前に12サイクル待たなければならない。
【0049】ロード・コミュニケーション・レジスタ命
令472の説明に戻ると、前述の通り、同じ命令がFP
Uパイプライン610とCPUパイプライン614の双
方を流れるから、E1ステージ626のリソース(例え
ばレジスタFPUL)は、CPUパイプライン614の
Eステージ642が実行するサイクル数と同じ量だけ保
持されるであろう。次に、CPUパイプライン614の
Aステージ646は、LDS CPUロード・コミュニ
ケーション・レジスタ命令472における“Rm”で参
照されたレジスタの内容をソースとしてデータバスに与
える。これはキャッシュメモリアクセスを要求しない命
令であるから、Aステージ646はCPUレジスタファ
イル410からデータバスにロードするだけである。A
(T’)714はメモリアクセスが生じないことを示し
ている。
【0050】CPUパイプラインがレジスタ“Rm”の
内容をデータバス222に置いている間、FPUパイプ
ライン610のE2ステージ630は、文字“T”によ
って示されるように何ら動作を伴うことなく命令を通過
させる。CPUステージA646はレジスタRmの内容
を、限られた期間、即ちデータ・レディー時間718の
間、データバス222上で利用可能にする。前記“デー
タ・レディー時間”は、CPUロード・コミュニケーシ
ョン・レジスタ命令472に関係するデータ転送によっ
てデータバスがビジー状態である時間とされる。データ
バス222上のデータが利用可能な718の期間、FP
Uパイプライン610のライトバックステージ634が
データバス222のデータを獲得し、そのデータをFP
ULレジスタに格納する。
【0051】この例からも明らかなように、CPUパイ
プライン214とFPUパイプライン210とのパイプ
ラインステージの段数は同じであり、双方は並行して流
れるから、CPU118にとってはメモリへの書込みと
同様のシーケンスを採れば(実際にはメモリアクセスは
行われない)、FPUパイプライン210はステージS
fでそのデータをFPULレジスタに取り込むことがで
きる。このようにして、FPUはCPUがレジスタFP
ULにロードしたデータを利用して浮動小数点処理を行
うことができる。浮動小数点命令が16ビット固定長で
あっても、FPUそれ自体は豊富な種類のデータ転送命
令を持たなくてもよく、また、データフェッチもCPU
がやるからFPUは強力なアドレシングモードを持つ必
要もない。
【0052】CPUストア命令“STS FPUL、R
n”は、図7の(b)に示されるように、同様に二つの
パイプライン610,614によって実行される。CP
Uストア命令476はFPULレジスタの内容をCPU
汎用レジスタRnにコピーする。しかし、CPUストア
命令476の場合、FPU214はFPULレジスタの
内容がデータバス222の上で利用可能な期間722を
制御する。すなわちFPUパイプラインはFPULレジ
スタの内容を322の期間だけデータバスに載せ、CP
Uパイプライン214はこのデータをステージSiでレ
ジスタRnに取り込む。
【0053】図9はFPUパイプライン610の更に詳
細な回路806を示す。図9の回路には、FPUパイプ
ラインステージ622,626,630及び634に夫
々含まれるラッチ814,818,822及び826が
示される。FPUパイプラインステージ622,62
6,630及び634はそれらに対応されるラッチ81
4,818,822及び826の出力を、1相目クロッ
ク808,708の立ち下がりエッジ又は2相目クロッ
ク810の立ち下がりエッジでストアする。また、更に
以下で詳述するバイパス信号828が示されている。F
PUパイプライン回路806の機能は、すぐにそして更
に以下で記述される例によって示される。CPUロード
・コミュニケーション・レジスタ命令472の例では、
FPUデコードステージ(Df)622は、マルチプレ
クサ834の選択信号経路830上の選択信号をアサー
トすることによって、データバス222からレジスタR
mの内容を取得するのを制御し、それによって、データ
はFPULレジスタ418にロードされる。
【0054】一方、図4に示される浮動小数点命令のグ
ループ458,462,464及び468(図16に列
挙されている)は、上述のように、データ転送命令であ
る。特に、図16は、浮動小数点積和演算(FMAC)
命令“FMAC FR0,FRm,FRn”を示してい
る。図10は基本的なFMAC回路910であり、FM
AC命令を実行する。図10において浮動小数点乗算器
914は浮動小数点レジスタ(FR0)918の内容を
浮動小数点レジスタ(FRm)922の内容によって乗
算する。浮動小数点レジスタ(FRn)926の内容
は、前正規化器930に結合される。文字“m”と
“n”は図4の浮動小数点レジスタ414のどれかを指
定する。乗算器914と共に前正規化器930は、キャ
リー伝達加算器のような加算器934に結合される。加
算器934の出力は正規化器938に結合され、この正
規化器938は先行する“1”の検出器(先行1検出器
とも称する)940に結合される。正規化器938の出
力942は浮動小数点レジスタ(FRn)946に結合
される。
【0055】FMAC910は浮動小数点レジスタ(F
Rn)946にFMAC910の出力を積算することに
よって機能する。例えば、幾つかの連続的なFMACの
命令が実行されるかもしれない。複数の連続的なFMA
C命令を実行する必要性は、3次元グラフィックスやビ
デオゲームのアプリケーションなどにある。夫々のFM
AC命令はそのときFMACオペレーションの結果を異
なる浮動小数点レジスタ946に積算することができ
る。これは、連続的に実行されるFMAC命令の間にお
けるパイプラインストールを防止する。あるパイプライ
ンステージにおけるストールは、パイプラインにおける
他のステージにおける動作を停止しない。代わりにNO
P(ノー・オペレーション)命令が、ストールを持つパ
イプラインのステージに挿入される。このとき、NOP
はパイプラインの通過が許容される。従属的なストール
は連続的にFMAC命令が同じ浮動小数点レジスタに積
算するときに発生する。しかしながら、この実施の態様
では、連続的なFMACオペレーションは、異なる浮動
小数点レジスタに積算することができる。これは、連続
するFMAC命令の間で従属的に発生するストールを防
止する。
【0056】図16に列挙された他の命令は、イミディ
エイトデータ(即値)“0”と“1”をロードする浮動
小数点命令である。RISCマイクロプロセッサは、通
常そのような浮動小数点命令を持っていない。これら命
令を持つ代わりに、他のRISC浮動小数点命令セット
は、浮動小数点の値“0”又は“1”を浮動小数点レジ
スタにロードする命令シーケンスを要求している。換言
すれば、浮動小数点処理のためにイミディエイト値をロ
ードする命令のビット数は通常16ビットでは間に合わ
ない。この好適な実施の形態例では、16ビット固定長
命令であっても、浮動小数点処理のためにイミディエイ
ト値を浮動小数点レジスタにロードする命令と実質的に
同じオペレーションを実現するための前記浮動小数点命
令(ロード・イミディエイト命令)を持つ。この場合、
当該ロード・イミディエイト命令はグラフィック制御等
に多用されるイミディエイト値“1”,“0”だけをサ
ポートする。他のRISCマイクロプロセッサは、浮動
小数点レジスタ(例えば32個のレジスタ以外の7個)
を定数“0”と“1”の保持に割り当てるものがある。
この実施の形態におけるような命令セットでは、レジス
タの割り当ては、コンパイラによるスケジューリングに
対して浮動小数点レジスタの利用を厳格に規定するであ
ろう。浮動小数点数“0”の即値をロードし、或いは浮
動小数点数“1”の即値をロードする命令を実行するた
めの回路ブロック図は図11に示される。
【0057】図11は浮動小数点数の即値1又は0をロ
ードするための回路1008を示す。回路1008はフ
ェッチステージ(I)618(図6参照)から、浮動小
数点の即値1又は0のロード命令(ロード・イミディエ
イト命令)を受け取る。命令がデコードされると、FP
Uパイプライン610のデコードステージ(Df)62
2はロード・イミディエイト命令1010を次のステー
ジ(E1)626に移動させる。次にE1ステージ62
6は、文字“T”710で示されるようにロード・イミ
ディエイト命令1010を通過させる。同様に、E2ス
テージ630の相1の部分(phase one part)1014
はロード・イミディエイト命令1010を通過させる。
E2ステージ630の相2の部分1018は、キャリー
伝達加算器(CPA)1022のような加算器を含み、
そのキャリー伝達加算器1022は、E2ステージの相
1の部分10144に結合されると共に、マルチプレク
サ1030の出力1026に結合されている。マルチプ
レクサ1030は幾つかの入力を持つ。マルチプレクサ
の入力の一つは、0信号1034である。もう一つの信
号は1信号1038である。デコードステージ(Df)
622はマルチプレクサ1030の選択信号1042に
定数選択信号を適用することができる。Dfステージ6
22が0信号1034を選択するか1信号1038を選
択するかは、Dfステージ622がフェッチステージ6
18から受け取ったのはどちらのロード・イミディエイ
ト命令であるかに依存する。加算器1022の出力10
46は浮動小数点レジスタファイル414に結合され、
レジスタファイル414はSfステージ634の相1の
部分1050の一部分である。
【0058】図12はFPUパイプライン610のデコ
ードステージ(Df)622のブロック図である。デコ
ードステージ(Df)622の機能は、ストール信号1
210(図13参照)に依存する。このストール信号1
210はCPUパイプライン218のデコードステージ
(Di)638によって生成される。このストール信号
1210は、E1ステージ626でNOP1214を生
成するためにFPUパイプライン610の実行ステージ
(E1)626で利用される。Dfステージ622がス
トール状態を検出したとき、図12のDfステージ62
2はDfステージ622でデコードされた命令をDfス
テージの出力1114から帰還する。帰還経路1118
を介する帰還はDi638からの制御信号1110がマ
ルチプレクサ1108の入力1106を選択(制御信号
=1)することによって達成される。
【0059】図12はまた、フリーズ信号の選択経路1
122を示す。上述のように、フリーズ信号は、全体の
パイプラインにおいて全ての実行を停止させる。ストー
ル信号と同様に、フリーズ信号はFPUパイプラインと
CPUパイプラインの双方に適用される。フリーズ信号
1122はラッチ1124をディスエーブルにする。ま
た、図12はキャンセル信号の選択パス1126を示
す。キャンセル信号選択パス1126は、NOP113
0を挿入することによってパイプラインのその地点でど
んな命令もキャンセルすることができる。1134で示
される部分には、FPUパイプライン610のデコード
ステージ622に適用される信号を更に記述する。シン
ボルで示された信号(信号AやB)の説明はC言語標記
である。1134で示される部分において、信号名の定
義中に含まれる垂直線は論理的なOR(論理和)を示
し、“&”は論理的なAND(論理積)を示す。“〜”
は論理的な反転を示す。
【0060】図13にはFPUパイプライン610の最
初の実行ステージE1のブロック図が示される。ストー
ルが第1の実行ステージ(E1)626で生ずると、C
PUのデコードステージ638は、上述のようにストー
ル信号パス1210にストール信号を適用する。これ
は、FPUデコードステージ622の出力1138がE
1ステージに渡されるのを妨げる。代わりに、パス12
10でストール信号をアサートすることにより、E1ス
テージ626に挿入されるべきNOPが生成させる。図
13においてフリーズとキャンセル信号の適用は、図1
2のそれと同様である。夫々の信号については1214
で示される部分に更に説明されている。
【0061】図14はFPUパイプライン610のDf
ステージ622、E1ステージ626、E2ステージ6
30及びSfステージ634のブロックダイヤグラムの
一例を示す。FPUパイプライン回路1308は幾つか
の入力を示している。入力1310はCPU又はFPU
命令の第1オペランドのためにあり、入力1314はC
PU又はFPU命令の第2オペランドのためにある。入
力1318はE2ステージ630の出力をE1ステージ
の入力に帰還させるためのバイパスデータを受け取る。
入力1322はデータバス(S2_D)の内容をE1ス
テージの入力にバイパスさせるためにある。入力132
6はレジスタファイル414のレジスタFR0からの入
力である。夫々部分的にハッチングが付されている複数
のラッチは、クロック信号の2相目に同期して動作され
る。上記説明並びに図14に記述された名称に基づけ
ば、当業者は回路1308のその他の部分を理解するこ
とができるであろう。
【0062】以上本発明者によってなされた発明を実施
形態に基づいて具体的に説明したが、本発明はそれに限
定されるものではなく、その要旨を逸脱しない範囲にお
いて種々変更可能であることは言うまでもない。
【0063】例えば、CPUとFPUのパイプライン段
数は夫々5段に限定されず適宜変更可能である。また、
本発明はRISCプロセッサに限定されずCISCプロ
セッサなど、その他のアーキテクチャを有するマイクロ
プロセッサに適用可能である。また、この明細書におい
てマイクロプロセッサは、マイクロコンピュータ、シン
グルチップマイクロコンピュータ、データプロセッサを
含む概念として用いている。
【0064】
【発明の効果】本願において開示される発明のうち代表
的なものによって得られる効果を簡単に説明すれば下記
の通りである。
【0065】すなわち、16ビット固定長の浮動小数点
命令セットを採用すれば、32ビット固定長の場合に比
べて、浮動小数点命令を格納するメモリサイズを小さく
できるなどの利点がある。
【0066】このとき、中央処理装置が浮動小数点ユニ
ットのためのアドレシング処理を行うことによって浮動
小数点ユニットは中央処理装置と同様に強力なアドレシ
ングモードをサポートしなくても済む。
【0067】中央処理装置と浮動小数点ユニットとの間
でのデータ転送をコミュニケーションレジスタを介して
行うことにより、浮動小数点ユニットは強力なアドレシ
ングモードをサポートしなくても、浮動小数点処理に必
要などのようなデータをコミュニケーションレジスタか
ら高速に得ることができる。中央処理装置と浮動小数点
ユニットとの間でデータ転送を行うための浮動小数点命
令の種類を減らすことができる。
【0068】16ビット固定長命令セットは、それ自体
がイミディエイトデータを持たなくても、デコード結果
に従って浮動小数点数1又は0のイミディエイトデータ
を浮動小数点レジスタにロードする特別な命令を持つ。
これによって、16ビット固定長浮動小数点命令セット
を採用する場合にもイミディエイト値をオペランドとし
て浮動小数点処理を行える。
【0069】上記により、16ビット固定長浮動小数点
命令セットを採用する場合に浮動小数点命令の種類が少
なくなることによる浮動小数点処理の制限を極力減らす
ことができる。
【0070】浮動小数点演算処理に際して演算対象が非
正規化数か否かに応じて演算結果を0とみなしたりする
処理を行う浮動小数点ユニットを採用することにより、
機器組み込み制御用途に対して過不足のない機能とチッ
プ面積の低減とを達成できる。
【0071】それらにより、機器組み込み制御用途に最
適なマイクロプロセッサを実現できる。
【図面の簡単な説明】
【図1】パワーPCのための典型的な32ビット長浮動
小数点命令を例示する命令フォーマット図である。
【図2】本発明に係るマイクロプロセッサの一例ブロッ
ク図である。
【図3】正規化されていない浮動小数点数をゼロに一括
消去する回路を例示するブロック図である。
【図4】FPUへそしてFPUからデータを転送するた
めの回路構成の一例を示すブロック図である。
【図5】本発明の一例に係るマイクロプロセッサによる
16ビット浮動小数点命令の一例フォーマット図であ
る。
【図6】FPUとCPUのパイプラインの関係を示す説
明図である。
【図7】命令“LDS Rm,FPUL”の実行に際し
てのFPUパイプライン及びCPUのパイプライン、そ
して双方のパイプライン間でのデータ交換のタイミング
を示す説明図である。
【図8】命令“STS FPUL,Rn”の実行に際し
てのFPUパイプライン及びCPUのパイプライン、そ
して双方のパイプライン間でのデータ交換のタイミング
を示す説明図である。
【図9】FPUパイプラインの更に詳細な一例を示すブ
ロック図である。
【図10】FMAC命令を実行する基本的なFMAC回
路を示すブロック図である。
【図11】ロード・イミディエイト・フローティング・
ポイント“1”又はロード・イミディエイト・フローテ
ィング・ポイント“0”命令を実行する回路を示すブロ
ック図である。
【図12】浮動小数点パイプラインのデコードステージ
を示す一例ブロック図である。
【図13】FPUパイプラインの第1の実行ステージE
1を例示するブロック図である。
【図14】FPUパイプラインの詳細な一例ブロック図
である。
【図15】浮動小数点数をゼロに丸めるための回路を例
示するブロック図である。
【図16】図1のマイクロプロセッサがサポートする命
令セットの内、浮動小数点命令と浮動小数点命令に関連
するCPU命令とを列挙した説明図である。
【図17】浮動小数点命令“FABS”の説明図であ
る。
【図18】浮動小数点命令“FADD”の説明図であ
る。
【図19】図18に続く浮動小数点命令“FADD”の
説明図である。
【図20】図19に続く浮動小数点命令“FADD”の
説明図である。
【図21】浮動小数点命令“FCMP”の説明図であ
る。
【図22】図21に続く浮動小数点命令“FCMP”の
説明図である。
【図23】図22に続く浮動小数点命令“FCMP”の
説明図である。
【図24】浮動小数点命令“FDIV”の説明図であ
る。
【図25】図24に続く浮動小数点命令“FDIV”の
説明図である。
【図26】浮動小数点命令“FLDI0”の説明図であ
る。
【図27】浮動小数点命令“FLDI1”の説明図であ
る。
【図28】浮動小数点命令“FLDS”の説明図であ
る。
【図29】浮動小数点命令“FMUL”の説明図であ
る。
【図30】図29に続く浮動小数点命令“FMUL”の
説明図である。
【図31】浮動小数点命令“FNEG”の説明図であ
る。
【図32】浮動小数点命令“FSQRT”の説明図であ
る。
【図33】浮動小数点命令“FSTS”の説明図であ
る。
【図34】浮動小数点命令“FSUB”の説明図であ
る。
【図35】図34に続く浮動小数点命令“FSUB”の
説明図である。
【図36】図35に続く浮動小数点命令“FSUB”の
説明図である。
【図37】浮動小数点命令“FTRC”の説明図であ
る。
【図38】図37に続く浮動小数点命令“FTRC”の
説明図である。
【図39】浮動小数点命令“FTST”の説明図であ
る。
【図40】CPU命令“LDS”の説明図である。
【図41】図40に続くCPU命令“LDS”の説明図
である。
【図42】CPU命令“STS”の説明図である。
【図43】図42に続くCPU命令“STS”の説明図
である。
【図44】浮動小数点命令“FLOAT”の説明図であ
る。
【図45】浮動小数点命令“FMAC”の説明図であ
る。
【図46】図45に続く浮動小数点命令“FMAC”の
説明図である。
【図47】浮動小数点命令“FMOVの説明図である。
【図48】図47に続く浮動小数点命令“FMOVの説
明図である。
【符号の説明】
210 マクロプロセッサ 214 FPU 218 CPU 222 32ビットデータバス 226 32ビット論理アドレスバス 246 キャッシュメモリ 322 キャリー伝達加算器 342 非正規化数検出器 350 選択信号回路 330 選択回路 410 汎用レジスタ 414 浮動小数点レジスタ 418 コミュニケーションレジスタ(FPUL)
───────────────────────────────────────────────────── フロントページの続き (72)発明者 中川 典夫 東京都小平市上水本町五丁目20番1号 株 式会社日立製作所半導体事業部内 (72)発明者 西井 修 東京都国分寺市東恋ケ窪一丁目280番地 株式会社日立製作所中央研究所内 (72)発明者 内山 邦男 東京都国分寺市東恋ケ窪一丁目280番地 株式会社日立製作所中央研究所内

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】 アドレスバス及びデータバスに結合され
    た中央処理装置と、前記データバスに結合された浮動小
    数点ユニットとを含むマイクロプロセッサであって、 前記浮動小数点ユニットは16ビット固定長浮動小数点
    命令セットを用いて浮動小数点処理を実行し、 前記中央処理装置は前記浮動小数点ユニットが浮動小数
    点処理を実行するための命令とデータを得るのに必要な
    アドレシング処理を行うものであることを特徴とするマ
    イクロプロセッサ。
  2. 【請求項2】 前記浮動小数点ユニットは、浮動小数点
    ユニットとプロセッサとの間でのデータ交換を行うため
    にデータバスを介して中央処理装置に接続されるコミュ
    ニケーションレジスタを含むものであることを特徴とす
    る請求項1記載のマイクロプロセッサ。
  3. 【請求項3】 前記浮動小数点ユニットは、前記中央処
    理装置によってコミュニケーションレジスタにロードさ
    れたデータを用いて浮動小数点命令に従った浮動小数点
    処理を行うものであることを特徴とする請求項2記載の
    マイクロプロセッサ。
  4. 【請求項4】 前記浮動小数点ユニットは、複数個の浮
    動小数点レジスタを有し、前記16ビット固定長浮動小
    数点命令セットは、所定の前記浮動小数点レジスタに、
    命令のデコード結果に従って浮動小数点数0をロードす
    る第1のイミディエイト値ロード命令を含んで成るもの
    であることを特徴とする請求項1記載のマイクロプロセ
    ッサ。
  5. 【請求項5】 前記浮動小数点ユニットは、複数個の浮
    動小数点レジスタを有し、前記16ビット固定長浮動小
    数点命令セットは、所定の前記浮動小数点レジスタに、
    命令のデコード結果に従って浮動小数点数1をロードす
    る第2のイミディエイト値ロード命令を含んで成るもの
    であることを特徴とする請求項1又は4記載のマイクロ
    プロセッサ。
  6. 【請求項6】 汎用レジスタを含む中央処理装置と、デ
    ータバスを介して前記中央処理装置に結合された浮動小
    数点ユニットと、前記浮動小数点ユニットに含まれ前記
    データバスに接続されたコミュニケーションレジスタ
    と、前記中央処理装置にアドレスバスと前記データバス
    を介して結合されたメモリとを含み、 前記中央処理装置は、前記浮動小数点ユニットとの間で
    のデータ交換のために前記汎用レジスタにフェッチした
    データをデータバスに出力し、これに同期して前記浮動
    小数点ユニットはデータバスのデータをコミュニケーシ
    ョンレジスタに取り込むものであることを特徴とするマ
    イクロプロセッサ。
  7. 【請求項7】 前記中央処理装置は前記浮動小数点ユニ
    ットが浮動小数点処理を実行するための命令とデータを
    得るのに必要なアドレシング処理を行うものであること
    を特徴とする請求項6記載のマイクロプロセッサ。
  8. 【請求項8】 アドレスバス及びデータバスに結合され
    た中央処理装置と、前記データバスに結合された浮動小
    数点ユニットとを含むマイクロプロセッサであって、 第1及び第2の浮動小数点数に基づいて第3の浮動小数
    点数を形成する加算手段と、 前記加算手段の出力、第1の浮動小数点数、第2の浮動
    小数点数及び浮動小数点数0を入力し、選択制御信号に
    従って前記入力の一つを選択して出力する選択手段と、 前記第1の浮動小数点数と第2の浮動小数点数が非正規
    化数であるかを検出する検出手段と、 前記検出手段の出力を受け、前記第1の浮動小数点数と
    第2の浮動小数点数の双方が正規化数であるときは前記
    加算手段の出力を前記選択手段に選択させ、前記第1の
    浮動小数点数と第2の浮動小数点数の内の何れか一方が
    非正規化数であるときは正規化数としての第1の浮動小
    数点数又は第2の浮動小数点数を前記選択手段に選択さ
    せ、前記第1の浮動小数点数と第2の浮動小数点数の双
    方が非正規化数であるときは浮動小数点数0を前記選択
    手段に選択させる、選択制御信号を生成する選択信号回
    路と、を前記浮動小数点ユニットが含むことを特徴とす
    るマイクロプロセッサ。
  9. 【請求項9】 アドレスバス及びデータバスに結合され
    た中央処理装置と、前記データバスに結合された浮動小
    数点ユニットとを含むマイクロプロセッサであって、 第1及び第2の浮動小数点数に基づいて第3の浮動小数
    点数を形成する乗算手段と、 前記乗算手段の出力及び浮動小数点数0を入力し、選択
    制御信号に従って前記入力の一つを選択して出力する選
    択手段と、 前記第1の浮動小数点数と第2の浮動小数点数が非正規
    化数であるかを検出する検出手段と、 前記検出手段の出力を受け、前記第1の浮動小数点数と
    第2の浮動小数点数の双方が正規化数であるときは前記
    乗算手段の出力を前記選択手段に選択させ、前記第1の
    浮動小数点数と第2の浮動小数点数の内の少なくとも一
    方が非正規化数であるときは浮動小数点数0を前記選択
    手段に選択させる、選択制御信号を生成する選択信号回
    路と、を前記浮動小数点ユニットが含むことを特徴とす
    るマイクロプロセッサ。
JP8336647A 1996-01-31 1996-12-17 マイクロプロセッサ Withdrawn JPH09212362A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/594750 1996-01-31
US08/594,750 US6012139A (en) 1996-01-31 1996-01-31 Microprocessor including floating point unit with 16-bit fixed length instruction set

Publications (1)

Publication Number Publication Date
JPH09212362A true JPH09212362A (ja) 1997-08-15

Family

ID=24380237

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8336647A Withdrawn JPH09212362A (ja) 1996-01-31 1996-12-17 マイクロプロセッサ

Country Status (2)

Country Link
US (1) US6012139A (ja)
JP (1) JPH09212362A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016058098A (ja) * 2006-09-22 2016-04-21 インテル コーポレイション 命令に応じた丸め処理の実行
JP2017527014A (ja) * 2014-07-15 2017-09-14 クゥアルコム・インコーポレイテッドQualcomm Incorporated 算術論理ユニットにおいて使用するためのベクトルスケーリング命令

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860000A (en) * 1996-01-31 1999-01-12 Hitachi Micro Systems, Inc. Floating point unit pipeline synchronized with processor pipeline
US6477638B1 (en) * 1999-10-01 2002-11-05 Hitachi, Ltd. Synchronized instruction advancement through CPU and FPU pipelines
JP3776644B2 (ja) * 1999-10-05 2006-05-17 富士通株式会社 パイプライン演算装置、情報処理装置およびパイプライン演算装置の演算方法
US20010049781A1 (en) * 2000-02-29 2001-12-06 Hideo Miyake Computer with high-speed context switching
US9870339B2 (en) 2015-06-26 2018-01-16 Intel Corporation Hardware processors and methods for tightly-coupled heterogeneous computing

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4171537A (en) * 1978-01-09 1979-10-16 National Semiconductor Number oriented processor
US4729094A (en) * 1983-04-18 1988-03-01 Motorola, Inc. Method and apparatus for coordinating execution of an instruction by a coprocessor
JPH0766365B2 (ja) * 1985-03-08 1995-07-19 株式会社日立製作所 コ・プロセツサ制御方式
US5193159A (en) * 1986-09-24 1993-03-09 Hitachi, Ltd. Microprocessor system
JPH01147656A (ja) * 1987-12-03 1989-06-09 Nec Corp マイクロプロセッサ
US5129065A (en) * 1989-10-27 1992-07-07 Sun Microsystems, Inc. Apparatus and methods for interface register handshake for controlling devices
US5053631A (en) * 1990-04-02 1991-10-01 Advanced Micro Devices, Inc. Pipelined floating point processing unit
US5487022A (en) * 1994-03-08 1996-01-23 Texas Instruments Incorporated Normalization method for floating point numbers

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016058098A (ja) * 2006-09-22 2016-04-21 インテル コーポレイション 命令に応じた丸め処理の実行
JP2017527014A (ja) * 2014-07-15 2017-09-14 クゥアルコム・インコーポレイテッドQualcomm Incorporated 算術論理ユニットにおいて使用するためのベクトルスケーリング命令

Also Published As

Publication number Publication date
US6012139A (en) 2000-01-04

Similar Documents

Publication Publication Date Title
US8069340B2 (en) Microprocessor with microarchitecture for efficiently executing read/modify/write memory operand instructions
US5860000A (en) Floating point unit pipeline synchronized with processor pipeline
US5416912A (en) System for handling exceptions occurring during parallel execution of microinstructions
EP1390835B1 (en) Microprocessor employing a performance throttling mechanism for power management
US7739480B2 (en) Method and apparatus for obtaining a scalar value directly from a vector register
JP3983394B2 (ja) 幾何学処理プロセッサ
US6058465A (en) Single-instruction-multiple-data processing in a multimedia signal processor
US7831805B2 (en) Coupling a general purpose processor to an application specific instruction set processor
US6671796B1 (en) Converting an arbitrary fixed point value to a floating point value
US5694565A (en) Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions
US4763294A (en) Method and apparatus for floating point operations
TWI479412B (zh) 操作具有可重新組構之浮點單元的處理器之方法及系統
US5559977A (en) Method and apparatus for executing floating point (FP) instruction pairs in a pipelined processor by stalling the following FP instructions in an execution stage
JPH10116268A (ja) ベクトルレジスタの複数バンクを用いた単一命令複数データ処理
JP2001501330A (ja) デジタル信号処理集積回路アーキテクチャ
JP2004171573A (ja) 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ
US5771366A (en) Method and system for interchanging operands during complex instruction execution in a data processing system
US5875326A (en) Data processing system and method for completing out-of-order instructions
JPH09212362A (ja) マイクロプロセッサ
US5768553A (en) Microprocessor using an instruction field to define DSP instructions
Edenfield et al. The 68040 processor. I. Design and implementation
KR19980018071A (ko) 멀티미디어 신호 프로세서의 단일 명령 다중 데이터 처리
KR100237989B1 (ko) 슈퍼스칼라 프로세서에서 리네임 버퍼를 효율적으로 사용하기 위한 방법 및 시스템
Weems et al. Real-time computing: implications for general microprocessors
Okada et al. A PA-RISC microprocessor PA/50L for low-cost systems

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: 20040302