JP2001005640A - 浮動小数点ユニットにおいてロードバイパスを実行する方法及び装置 - Google Patents

浮動小数点ユニットにおいてロードバイパスを実行する方法及び装置

Info

Publication number
JP2001005640A
JP2001005640A JP2000149198A JP2000149198A JP2001005640A JP 2001005640 A JP2001005640 A JP 2001005640A JP 2000149198 A JP2000149198 A JP 2000149198A JP 2000149198 A JP2000149198 A JP 2000149198A JP 2001005640 A JP2001005640 A JP 2001005640A
Authority
JP
Japan
Prior art keywords
floating point
unit
data
point unit
conversion process
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
JP2000149198A
Other languages
English (en)
Other versions
JP3693556B2 (ja
Inventor
Preston J Renstrom
プレストン・ジェイ・レンストローム
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JP2001005640A publication Critical patent/JP2001005640A/ja
Application granted granted Critical
Publication of JP3693556B2 publication Critical patent/JP3693556B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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
    • 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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling

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)
  • Mathematical Physics (AREA)
  • Nonlinear Science (AREA)
  • Advance Control (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

(57)【要約】 【課題】 浮動小数点ユニットにおいてデータ変換と共
にロードバイパスを実行することが可能な方法及び装置
を提供すること。 【解決手段】 キャッシュメモリ要素(81)からの命令及
びデータの読み出し、該命令のデコード、メモリフォー
マットからレジスタフォーマットへの変換の実行、及び
該変換したデータの浮動小数点ユニット(50)のレジスタ
ファイルブロック(56)への書き込みを行うプロセスは、
ロード動作として知られる。ロード動作は多数サイクル
に亙って発生する。本発明によればロード動作の実行に
必要なサイクル数が削減され、これにより浮動小数点ユ
ニット(50)の全体的なスループットが劇的に向上する。
本発明によれば浮動小数点ユニット(50)は、変換と共に
ロードバイパスを実行し(113,121)、これによりロード
動作時間が大幅に短縮される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、浮動小数点ユニッ
トに関し、特にロード動作を完了させるのに必要となる
時間を削減するためにデータ変換と共にロードバイパス
を実行することが可能な浮動小数点ユニットに関する。
【0002】
【従来の技術】プロセッサのパフォーマンスを向上させ
るために、一般に「バイパス処理(bypassing)」と呼ば
れる技術を実施する浮動小数点ユニットが開発されてい
る。浮動小数点ユニットが実行する第1の演算の結果
を、該浮動小数点ユニットが実行する後続の演算におい
て使用する必要がある場合、バイパス処理が実行されな
ければ、第1の演算の結果が使用可能となり浮動小数点
ユニットのレジスタファイルブロックに格納されるまで
第2の演算を開始することができない。しかし、一般
に、第1の演算の結果は典型的には、該結果がレジスタ
ファイルブロックに格納される前のある時点で利用可能
となる。このため、バイパス処理を使用して第1の演算
の結果を第2の演算へとバイパスさせることにより、第
1の演算の結果が使用可能となって該結果がレジスタフ
ァイルブロックに格納される前に第2の演算を開始させ
ることが可能となる。したがって、バイパス処理は、第
1の演算がレジスタファイルブロックに書き戻されるま
で第2の演算を開始することができない場合に生じる無
動作状態(dead state)を無くすことにより浮動小数点
ユニットの処理スループットを向上させるものとなる。
【0003】ロードバイパス処理は、浮動小数点ユニッ
トに関連して実行されてきた。一般に、ロード動作は、
実行すべき特定の動作に関する命令及びデータをオンチ
ップ又はオフチップメモリ要素から取り出し、該命令を
デコードし、該デコードした命令を浮動小数点ユニット
による使用に適した形態へと変換し、及び該変換したデ
ータをレジスタファイルブロックに格納することを含む
ものである。これらのロード動作は、典型的には多数の
サイクルを必要とするものである。1回のロード動作に
必要とされるサイクルの数を1サイクル程度削減するこ
とができれば、浮動小数点ユニットの全スループットを
大幅に向上させることが可能である、ということが判明
している。
【0004】
【発明が解決しようとする課題】しかし、ロードバイパ
スの実行は、困難を伴うものとなる。
【0005】ロードバイパスの実行に付随する主な問題
は、命令がデコードされた後であってデータがレジスタ
ファイルブロックにロードされる前に発生する上述のデ
ータ変換プロセスにより引き起こされる。該データ変換
は、キャッシュメモリ要素から取り出されたデータの型
に依存するものである。例えば、様々な型のデータが浮
動小数点ユニットにより一般に処理されるが、それらの
データ型は、米国電気電子学会(IEEE)浮動小数点規格
によって定義されている。一般に、これらデータ型は、
「非正規(non-normal)」データ型と呼ばれ、非正規化
(de-normalized)数、無限、及び非数(NAN:not a numbe
r)定数を含む。IEEE規格によって定義されていない他
のデータ型もまた存在し、それらは固有のアーキテクチ
ャを有するものであるため、追加の変換(例えば、指数
を特定の定数値に変更する等)が必要となる。
【0006】この追加の指数変換を行うために必要な時
間により、現在のロード命令Aから該Aの結果を使用す
る浮動小数点算術命令Bへのロードバイパスを実行する
ことが特に困難となる。したがって、変換と共にロード
バイパスを実行することが可能な浮動小数点ユニットが
必要とされている。
【0007】
【課題を解決するための手段】本発明は、浮動小数点ユ
ニットにおいてデータ変換と共にロードバイパスを実行
する方法及び装置を提供する。キャッシュメモリ要素か
らの命令及びデータの読み出し、該命令のデコード、メ
モリフォーマットからレジスタフォーマットへの変換の
実行、及び該変換したデータの浮動小数点ユニットのレ
ジスタファイルブロックへの書き込みを行うプロセス
は、ロード動作として知られるものである。ロード動作
は、多数のサイクルに亙って発生する。本発明によれ
ば、ロード動作の実行に通常必要となるサイクルの数が
大幅に削減され、これにより浮動小数点ユニットの全体
的なスループットが劇的に向上する。本発明によれば、
浮動小数点ユニットは、変換と共にロードバイパスを実
行し、これによりロード動作時間が大幅に短縮される。
【0008】本発明の装置は、レジスタファイルと、少
なくとも1つのバイパス要素と、少なくとも1つの乗算
累算ユニットとを有する浮動小数点ユニットを備えてい
る。前記レジスタファイルは、演算が行われるべきオペ
ランドデータを格納し、及び浮動小数点ユニットにより
実行された演算の結果を格納するための、複数のレジス
タを備えている。前記バイパス要素は、メモリフォーマ
ットからレジスタフォーマットへの変換を実行するよう
構成されている。このメモリフォーマットからレジスタ
フォーマットへの変換は、部分変換プロセス及び最終変
換プロセスを含む。該部分変換プロセスは、レジスタフ
ァイルのレジスタへの格納に適したフォーマットにデー
タをフォーマットし、演算が行われるべきオペランドデ
ータがスペシャルケース指数(special case exponent)
を含むか否かを検出し、及びスペシャルケース指数が検
出されたか否かを示す少なくとも1つのスペシャルケー
スフラグを生成する、という各ステップを含む。
【0009】乗算累算ユニットは、オペランドデータに
ついて算術演算を実行するよう構成されている。乗算累
算ユニットはまた、スペシャルケースフラグを含む部分
変換プロセスの結果を受容し、及び最終変換プロセスを
実行するよう構成されている。バイパス要素は、部分変
換プロセスを実行すると、該部分変換プロセスの結果
(スペシャルケースフラグを含む)を乗算累算ユニット
へとバイパスする。スペシャルケースフラグを含む部分
変換プロセスの結果を乗算累算ユニットへとバイパスす
る一方、バイパス要素は、最終変換プロセスを実行し、
該最終変換プロセスの結果をレジスタファイルに書き込
む。最終変換プロセスは、メモリフォーマットからレジ
スタフォーマットへの変換を完了する。
【0010】バイパス要素が最終変換プロセスの結果を
レジスタファイルに書き込んでいる間に、乗算累算ユニ
ットは、部分変換プロセスの結果についての演算を開始
し、これと同時に最終変換プロセスを実行する。最終変
換プロセス中に、乗算累算ユニットは、スペシャルケー
スフラグを利用して、変換された指数値を取得する。乗
算累算ユニットは、最終変換プロセスを実行している間
に、部分的に変換された結果についての算術演算の実行
を開始する。この算術演算の第1段階は、完全に変換さ
れた結果を必要としない。しかし、該算術演算の第2及
び第3段階は、完全に変換された結果を必要とする。こ
れは、最終変換プロセス中に取得される指数値が必要と
なるからである。最終変換プロセスは、乗算累算ユニッ
トが完全に変換された結果を必要とするまでに完了す
る。
【0011】本発明の上述その他の特徴及び利点につい
ては、以下の説明、図面、及び特許請求の範囲から明ら
かとなろう。
【0012】
【発明の実施の形態】本発明の方法及び装置は、実際に
はいかなる浮動小数点ユニットにおいても実現すること
ができるものである。本発明の説明を目的として、ロー
ドバイパスを実行する本発明の方法及び装置に関連し
て、図1及び図2に示す2つの異なる浮動小数点ユニッ
トアーキテクチャについて説明する。本発明が、これら
の特定のアーキテクチャと共に使用することに限定され
るものではなく、いかなる浮動小数点アーキテクチャも
本発明の方法及び装置を実施することが可能であること
が当業者には理解されよう。
【0013】本発明の方法及び装置を説明する前に、図
1及び図2に示す浮動小数点ユニットの説明を行い、こ
れら異なる浮動小数点ユニットがそれぞれの演算を実行
する態様を概略的に示すこととする。これら浮動小数点
ユニットの各々は、従来のデータ型フォーマット、及び
単一命令多重データ(SIMD)型フォーマットについて演
算を行うことが可能なものである。しかし、図1及び図
2の浮動小数点ユニットは、これら演算を実行するため
の構成が異なっている。概して、図1に示す浮動小数点
ユニットは、図2の浮動小数点ユニットよりもスループ
ットが大きい。しかし、図2の浮動小数点ユニットは、
図1の浮動小数点ユニットよりも消費するチップ面積(d
ie area)が少ない。したがって、これら浮動小数点ユニ
ットの各々は、他方に対して幾つかの利点を有するもの
となる。図1及び図2の浮動小数点ユニットについて説
明した後に、本発明の方法及び装置の詳細な説明につい
て説明する。
【0014】プロセッサ速度が向上しデータサイズが増
大したため、一度に浮動小数点ユニットに与えることが
可能なデータの量に関して浮動小数点演算の計算性能に
重大なボトルネックが存在することとなった。64ビット
又はそれ以上のアーキテクチャへのプロセッサアーキテ
クチャの進化と共に、このボトルネックによる影響を低
減させるための幾つかの技術が開発されてきた。かかる
技術の1つは、図1及び図2の浮動小数点ユニットによ
り利用されるものであり、64ビットデータをより小さい
データへと分割し、それらのより小さいデータに多数の
演算を実行するというものである。この種の演算は、一
般に、単一命令多重データ(SIMD)演算と呼ばれる。SI
MD命令は、多数片のデータについて同一の演算を同時に
(即ち、並列に)実行させるものである。
【0015】しかし、図1及び図2の浮動小数点ユニッ
トは、従来のデータ型フォーマットついて演算を実行す
ることも可能である。一般に、従来のデータ型フォーマ
ットは、SIMDデータ型フォーマットよりも広いビットサ
イズを有している。これら両方のタイプの演算をサポー
トするために、図1の浮動小数点ユニットは、SIMD演算
を実行する専用のSIMD用MACユニットと、従来のデータ
型フォーマットについて演算を実行する標準的なMACユ
ニットとを使用する。図1の浮動小数点ユニット1は、
2つのSIMD用MACユニット3,4、2つの標準的なMACユニ
ット6,7、2つのバイパスブロック8,9、及びレジスタフ
ァイルブロック11を備えている。標準的なMACユニット
6,7は、従来のデータ型フォーマットについて浮動小数
点演算を実行する。SIMD用MACユニット3,4は、SIMDデー
タ型フォーマットについて算術演算を実行する。
【0016】これら2つのデータ型フォーマットを図3
に示す。典型的な、即ち従来のデータ型フォーマット15
は、64ビットの仮数値、17ビットの指数値、及び1ビッ
トの符号値を有している。これに対し、SIMDデータ型フ
ォーマット16は、2つの23ビット仮数値、2つの8ビッ
ト指数値(即ち、各仮数値に1つずつ関連するもの)、
及び2つの符号ビット(即ち、各仮数値及びその指数値
に1ビットずつ関連するもの)を有している。これら両
データ型フォーマットは、当業界で周知のものであり、
浮動小数点演算に関してIEEE規格で文書化されている。
これらデータ型フォーマットについて演算が実行される
態様もまた当業界で周知のものである。したがって、本
明細書では、簡潔化のために、これら浮動小数点データ
型及びそれらについて実行される演算について詳述しな
いこととする。
【0017】図1に示す浮動小数点ユニット1におい
て、標準的なMACユニット6,7の各々は、乗算累算演算
(即ち、A+B×C)を実行することが可能である。図3
に示すデータ型フォーマット15について乗算累算演算が
実行される場合には、オペランドA,B,Cがバイパスブロ
ック8,9へ供給される。浮動小数点ユニット1が2つの標
準的なMACユニット6,7を備えているため、2つの乗算累
算演算を同時に実行することができる(即ち、一方の乗
算累算演算を標準的なMACユニット6で実行し、他方の乗
算累算演算を標準的なMACユニット7で実行する)。
【0018】標準的なMACユニット6,7の各々は、1つの
82ビット加算器と1つの82ビット乗算器とを備えてい
る。演算が行われるべきオペランドは、プロセッサアー
キテクチャにより構成された命令デコーダ(図示せず)
からレジスタファイルブロック11によって受容される。
該命令デコーダは、それらオペランドと共に制御ビット
をレジスタファイルブロック11に提供し、これら制御ビ
ットは、オペランドについて実行される算術演算(例え
ば、加算、減算、乗算等)の種類を決定するためにMAC
ユニットにより使用される。レジスタファイルブロック
11は、それ自体が受容したオペランドを格納するための
複数のレジスタを備えている。
【0019】レジスタファイルブロック11により受容さ
れる制御ビットは、オペランドの読み出し及び書き込み
のためにレジスタファイルブロック11中のどのレジスタ
を使用すべきかを示すものとなる。バイパスブロック8,
9は、それぞれ、1組のオペランドを処理する。バイパ
スブロック8,9はまた、それらに提供される制御ビット
を利用して、浮動小数点ユニット1内の特定の宛先にど
のレジスタ内容を経路指定すべきかを決定する。上述し
たように、バイパスブロック89は、1つの演算の結果を
該結果が利用可能となった際に(該利用可能な演算結果
がレジスタファイルブロックに書き込まれるのを待つの
ではなく)別の演算へとバイパスすることにより、パフ
ォーマンスを向上させる。本発明によれば、図3〜図5
を参照して後に詳述するように、バイパスブロック8,9
はロードもまたバイパスする。
【0020】オペランドがレジスタファイルブロック11
中の適当なレジスタに書き込まれた後、レジスタファイ
ルブロック11は、適当なレジスタからオペランドを読み
出し、該オペランドを(レジスタファイルブロック11か
らバイパスブロック8に向けられたライン20,21,22上の
矢印によって示されるように)適当なバイパスブロック
に渡す。ライン20,21,22は、浮動小数点ユニット1内に
設けられたオペランドバスに対応し、該ライン20,21,22
の各々は、マルチビットオペランドA,B,Cの移送に必要
な複数のラインに対応している。図1の円は、それらが
位置しているブロックへのバス入力を示すことを意図し
たものである。レジスタファイルブロック11は、レジス
タファイルブロック11中の適当なレジスタから第2組の
オペランドA,B,Cを読み出し、該オペランドを、ライン2
4,25,26上の矢印で示すように、適当なバイパスブロッ
クへと経路指定する。これらラインもまた、複数のオペ
ランドバスラインを表している。
【0021】バイパスブロック8は、レジスタファイル
ブロック11から読み出された1組のオペランドを、バス
入力28,29,30を介して標準的なMACユニット6に渡し、又
はバス入力32,33,34を介してSIMD用MACユニット4に渡
す。同様に、バイパスブロック9は、その1組のオペラ
ンドのセットを、バス入力36,37,38を介して標準的なMA
Cユニット7に渡し、又はバス入力41,42,43を介してSIMD
用MACユニット3に渡す。
【0022】図3に示すデータ型フォーマット15の場
合、バイパスブロック8,9は、標準的なMACユニット6,7
にそれぞれオペランドを提供することになる。標準的な
MACユニット6,7がそれぞれの算術演算を実行すると、そ
の結果は、該標準的なMACユニット6,7によってバイパス
ブロック8,9へと渡される。バイパスブロック8,9は、そ
の算術演算の結果をバス51,52を介してレジスタファイ
ルブロック11へ渡し、該レジスタファイルブロック11
は、その結果をレジスタファイルブロック11中の1つ又
は2つ以上のレジスタに格納する。
【0023】浮動小数点ユニット1により演算が実行さ
れる場合には必ず、レジスタファイルブロック11により
受容される制御ビットが、関連する演算の実行が完了し
た際に該演算の結果がどのレジスタに格納されるかを示
す。また、バイパスブロック8,9は、制御ビットを受容
し、該制御ビットを利用してバイパスを何時実行すべき
か決定する。
【0024】SIMD用MACユニット3,4の各々は、2つの32
ビット加算器及び2つの32ビット乗算器を備えている。
SIMD用MACユニット3,4の各々は、3つのオペランドA,B,
Cを処理して、命令デコーダにより示される算術演算を
実行することが可能である。SIMD用MACユニット3,4及び
標準的なMACユニット6,7が図3に示すデータ型フォーマ
ット15,16について演算を行う態様は、当業者には周知
のものである。したがって、本明細書では、これらのユ
ニットがそれらの乗算累算演算(即ち、A+B×C)を実
行する態様については詳述しないこととする。
【0025】浮動小数点ユニット1は、従来のデータ型
フォーマットとSIMDデータ型フォーマットとを処理する
ことができるが、SIMD用MACユニット3,4は、チップ面積
を消費するものとなる。SIMD演算はめったに実行され
ず、標準的なMAC6,7によって従来のデータ型フォーマッ
トが処理されている場合にはいつでも、SIMD用MACユニ
ット3,4は休止状態となっている。同様に、SIMD用MACユ
ニット3,4によりSIMD演算が実行されている場合にはい
つでも、標準的なMACユニット6,7は休止状態となってい
る。したがって、SIMD用MACユニット3,4及び標準的なMA
Cユニット6,7は、全ての演算のために利用されない場合
であってもチップ面積を消費するものとなる。しかし、
専用のSIMD用MACユニットを利用することにより、処理
スループットが向上する。
【0026】第2の浮動小数点ユニット50を図2に示
す。好ましくは、本発明は、浮動小数点ユニット50にお
いて実施される。この浮動小数点ユニットは、SIMDデー
タ型フォーマットについて実行されるべき演算を含む全
ての算術演算を実行するために標準的なMACユニット51,
52を使用する。このため、図1に示す専用のSIMD用MAC
ユニット3,4が除去される。これにより、浮動小数点ユ
ニット50の実施に必要なチップ面積の量に関して節約を
実現することが可能となる。しかし、この節約は、後に
詳述するようなパフォーマンス上の不利益を生じさせる
ものともなる。
【0027】標準的なMACユニット51,52は、好ましくは
図1に示す標準的なMACユニット6,7と非常に類似したも
のとなる。この場合、標準的なMACユニット51,52の各々
は、1つの82ビット加算器及び1つの82ビット乗算器
(図示せず)を備えている。しかし、該標準的なMACユ
ニット51,52の各々は、後に詳述するように、特定のビ
ットを受容し、該ビットを利用して64ビットワードの適
当な半分を選択するように構成される。
【0028】浮動小数点ユニット50が従来のデータ型フ
ォーマット15を処理する場合、標準的なMACユニット51,
52はそれらの通常の演算を実行する。一方、浮動小数点
ユニット50がSIMDデータ型フォーマット16を処理する場
合には、SIMDビットフィールドが2つの32ビットワード
へと分割され、該SIMDワードの下位32ビットが標準的な
MACユニット51により処理され、該SIMDワードの上位32
ビットが標準的なMACユニット52により処理される。64
ビットワード全体が標準的なMACユニット51,52の両方に
供給されるが、該標準的なMACユニット51,52により受容
された上述のビットによって、該標準的なMACユニット5
1,52は、適当な32ビットワードを選択することとなる。
次いで、該標準的なMACユニット51,52は、それら32ビッ
トワードについてそれぞれの演算を実行する。
【0029】上述のように、標準的なMACユニット51,52
は、通常は82ビットワードを処理する。SIMDワードを処
理する場合には、標準的なMACユニット51,52は下位64ビ
ットのみを使用する。上位18ビットは定数値にセットさ
れ、一般には無視される。標準的なMACユニット51,52
が、64ビットSIMDワードのそれぞれの部分の処理を完了
すると、バイパスブロック54,55が、32ビットの結果を
合体させて64ビットのSIMD結果とする。バイパスブロッ
ク54,55は、それぞれ、下位及び上位の32ビットワード
をレジスタファイルブロック56に書き込む。この書き込
みは、レジスタファイルブロック56に書き込まれた64ビ
ット結果が、図1に示すSIMD用MACユニット3,4等のSIMD
用MACユニットによって処理された場合と同様の結果と
なるような態様で、レジスタファイルブロック56中の隣
接するビットフィールドにビットを書き込むことによっ
て行われる。
【0030】図2の浮動小数点ユニット50内に示すライ
ンは、図1においてバスを示すために使用されたのと同
様に使用されている。矢印は、データの流れる方向を示
すために使用されており、円は、バス入力を示すために
使用されている。符号61,62,63で示すライン(バス61,6
2,63)は、SIMDワードの下位32ビットを表している。し
たがって、SIMDモードでは、バス61,62,63は、それぞれ
32ビットのオペランド(即ち、A,B,C)を移送する。SIM
Dワードが浮動小数点ユニット50に渡されると、レジス
タファイルブロック56が、受容した制御ビットに従って
レジスタファイルブロック56の適当なレジスタにSIMDビ
ットをロードする。バイパスブロック54は、SIMDワード
の下位32ビット部分を選択し、該32ビットワードをバス
61,62,63を介してレジスタファイルブロック56から標準
的なMACユニット51へと経路指定する。同時に、バイパ
スブロック55は、バス65,66,67を介してSIMDワードの上
位32ビット部分を標準的なMACユニット52へ経路指定す
る。
【0031】標準的なMACユニット51及び標準的なMACユ
ニット52は、SIMDワードのそれぞれの部分について乗算
累算演算を同時に実行する。標準的なMACユニット51,52
は共に32ビットの結果を生成し、該結果はそれぞれバス
71,72を介してバイパスブロック54,55へと経路指定され
る。次いで、該結果がバイパスブロック54,55により合
体されて64ビットのSIMD結果が生成され、該結果がレジ
スタファイルブロック56中の適当なレジスタに書き込ま
れる。
【0032】図1に示す浮動小数点ユニット1は、2つ
のSIMD演算を同時に実行して、2つずつペアになった4
つのSIMD結果を生成することが可能である点に留意され
たい。図2に示す浮動小数点ユニット50の場合には、一
度に1つのSIMD演算しか実行することができない。した
がって、SIMD演算のパフォーマンスに関して、図2に示
す浮動小数点ユニット50のスループットは、図1に示す
浮動小数点ユニット1のスループットのほぼ半分とな
る。SIMD演算が頻繁に実行される場合には、浮動小数点
ユニット50の全スループットは浮動小数点ユニット1の
全スループットよりもかなり低下することになる。しか
し、一般にSIMD演算は、浮動小数点ユニットによって実
行される全演算の5%未満しか表さないものである。し
たがって、標準的なMACユニット51,52でのSIMD演算の実
行の結果として生じる浮動小数点ユニット50のスループ
ットの低下は大して重要ではなく、ダイ領域の節約によ
って相殺されるものである。
【0033】ここで、本発明の方法及び装置について図
4〜図6を参照して説明する。例示のため、ロードバイ
パスを実行する本発明の方法及び装置は、図1の浮動小
数点ユニット1において実施されるものとする。しか
し、既述のように、本発明は、いかなる特定の浮動小数
点ユニットでの実現にも限定されないものである。図4
は、キャッシュメモリ要素81から浮動小数点ユニット50
への命令及びデータのロードと、浮動小数点ユニット50
からのデータの格納及びキャッシュメモリ要素81へのデ
ータの格納を制御するプロセッサアーキテクチャの回路
80を示している。該回路80は、キャッシュメモリ要素81
からのデータの取り出し及び該キャッシュメモリ要素81
へのデータの格納と、浮動小数点ユニット50へのデータ
のロード及び該浮動小数点ユニット50からのデータの取
り出しとを制御する命令デコーダ83を備えている。
【0034】回路80はメモリ要素85と通信し、該メモリ
要素85は好ましくはオフチップ要素であり、キャッシュ
メモリ要素81に存在しない命令及びデータを格納する。
該メモリ要素85をオンチップメモリ要素とすることが可
能であることが当業者には理解されよう。しかし、メモ
リ要素85のオンチップでの実施は、チップ面積という点
でコスト高となる。このため、オフチップ要素として実
施するのが好ましい。
【0035】回路80の外部にあるコンパイラ87は、キャ
ッシュメモリ要素81にどの命令及びデータを存在させる
か、及びメモリ要素85にどの命令及びデータを存在させ
るかを制御する。コンパイラ87は典型的には、様々な最
適化技術(例えば、コード再配置(code reordering)
等)を利用することによりプログラムの実行を最適化す
るソフトウェア要素であることが当業者には理解されよ
う。コンパイラ87は、かかる最適化技術を利用し、コー
ド及びデータの特定部分をメモリ要素85からキャッシュ
メモリ要素81へ(及びその逆に)移動させる。
【0036】命令デコーダ83は、キャッシュメモリ要素
81から命令及びデータを読み出し、そのデータについて
実行される演算の種類を決定する。次いで、命令デコー
ダ83は、該データをバイパスブロック8,9の一方にロー
ドさせる。該バイパスブロックの各々は、メモリフォー
マットからレジスタフォーマットへの変換を実行する変
換回路を備えている。該変換が実行されると、変換され
たデータは、浮動小数点ユニット50のレジスタファイル
ブロック56の適当なレジスタに書き込まれる。キャッシ
ュメモリ要素から命令及びデータを読み出し、該命令を
デコードし、変換を実行し、該変換されたデータをレジ
スタファイルブロックに書き込むという上記プロセス
は、ロード動作として知られるものである。
【0037】ロード動作は、多くのサイクルに亙って発
生する。本発明によれば、ロード動作を実行するために
必要なサイクルの数を1サイクル程度低減することがで
きれば、浮動小数点ユニットの全体的なスループットを
劇的に向上させることが可能であることが明確となって
いる。本発明によれば、浮動小数点ユニット1がロード
バイパスを実行することにより、少なくとも2サイクル
分のロード動作時間が短縮される。本発明がロードバイ
パスを実行する態様を例証するために、まず最初にメモ
リフォーマットからレジスタフォーマットへの変換につ
いて説明する。この種の変換プロセスは、今日用いられ
ているプロセッサアーキテクチャで現在利用されている
多くの浮動小数点ユニットで実行されている。したがっ
て、この種の変換プロセスは、当業者には理解されるも
のであり、簡潔化のため、本明細書では該変換プロセス
の概説のみを行うこととする。
【0038】この変換プロセスは、一般に第1の部分と
第2の部分とから構成されている。変換プロセスの第1
の部分では、浮動小数点ユニットに渡されたデータが、
浮動小数点ユニット1の82ビットレジスタに適応するよ
うフォーマットされる。該データは、それが単精度ワー
ドである場合には、82ビットワードへと伸張され、50の
未使用ビットが定数値に設定される。また、該データが
倍精度ワードである場合には、82ビットワードへと伸張
され、18の未使用ビットが定数値に設定される。したが
って、実行される変換のタイプは、キャッシュメモリ要
素から読み出されたデータの型、及び浮動小数点ユニッ
トのアーキテクチャによって決まる。
【0039】変換プロセスの第2の部分は、データに含
まれる指数値及び仮数値の特定の範囲を識別し、変換さ
れた指数を定数値に設定することに関するものである。
浮動小数点ユニットが扱うよう通常設計されるスペシャ
ルケース指数には幾つかのタイプがある。これらスペシ
ャルケース指数は、IEEE浮動小数点規格において定義さ
れており、非正規化値(denormals)、倍精度の非正規
化値、倍拡張精度(double extended precision)の非
正規化値、ゼロ、及び最大指数を含むものである。これ
らは各々、関連するスペシャルケース指数定数を有して
いる。変換プロセス中に、これらのスペシャルケースが
検出され、該スペシャルケースの検出に応じてスペシャ
ルケースフラグが生成される。次いで、これらスペシャ
ルケースフラグがマルチプレクサ(図示せず)により使
用される。該マルチプレクサは、定数を多重化して適当
なビット位置でデータにすることにより、変換された指
数値を取得する。変換プロセスの第1及び第2の部分の
実行が完了すると、演算を実行するMACユニットがデー
タを完全に処理し、次いでレジスタファイルブロック11
へと書き戻すことが可能となる。
【0040】変換プロセスの第1の部分は、比較的迅速
に実行することができるが、該変換プロセスの第2の部
分は、その実行により長い時間を要する。これは、指数
定数の検出及び適当なスペシャルケースフラグの設定の
プロセスが、回路内で実現するには比較的複雑な機能で
あることによる。変換プロセス全体を実行するために必
要となる時間の長さに起因して、演算を実行することが
意図されたMACユニットがデータを必要とするまでに、
完全に変換されたデータを該MACユニットにバイパスす
ることができなくなる。しかし、本発明によれば、部分
的に変換された結果をMACユニットにバイパスするよう
変換プロセスの一部を適時に完了させることが可能とな
ることが明確となっている。
【0041】これが達成される態様を図5を参照して説
明する。ブロック91で表す変換プロセスの第1の部分
は、ブロック93で表す変換プロセスの第2の部分に伴う
スペシャルケース検出プロセスと並行して実行される。
これらプロセスは両方とも、バイパスブロック内に設け
られた変換回路(図示せず)により実行される。次い
で、変換プロセスの第1の部分の結果と、スペシャルケ
ース検出プロセス中に生成されたスペシャルケースフラ
グとが、MACユニットにバイパスされる。バイパスブロ
ックがMACユニットにデータをバイパスしている時、ブ
ロック95に示すように、バイパスブロック内の変換回路
は、変換プロセスを完了させ、完全に変換したデータを
レジスタファイルブロック中の適当なレジスタに格納す
る。変換回路は、スペシャルケースフラグを利用してデ
ータの適当なビット位置で適当な指数定数の多重化を行
う。
【0042】浮動小数点ユニットのMACユニットはま
た、変換プロセスの残りを実行するための変換回路を有
している。この変換回路もまた、ブロック97に示すよう
に、スペシャルケースフラグを利用してデータの適当な
ビット位置で適当な指数定数の多重化を行って変換を完
了させる。データが完全に変換されると、ブロック97,9
9,101に示すように、MACユニットが該データについての
演算を実行する。次いで、それらの演算の結果がバイパ
スブロックによりレジスタファイルブロックに書き込ま
れる。該結果はまた、該結果が生成されたMACユニット
から、別の演算で該結果を利用することが可能な(即
ち、一般的な演算を実行することが可能な)別のMACユ
ニットへとバイパスすることが可能である。
【0043】MACユニットは、オペランドデータについ
て算術演算を実行する際、該演算の第1サイクルでは指
数を必要としない。指数は、演算の第2サイクルまで必
要とされない。したがって、部分的な変換結果及びスペ
シャルケースフラグがMACユニットへとバイパスされる
とき、該MACユニットは、変換の残りを実行する1サイ
クルを有した後に指数を必要とする。したがって、ブロ
ック99に示すように、第1段階の演算を実行すると共
に、部分的に変換されたデータを完全に変換することが
できる。
【0044】図6は、バイパスブロック及びMACユニッ
トにおいて実行される演算のタイミングを示すタイミン
グチャートである。ブロック群110は、バイパスブロッ
クの1つで実行される演算に対応するものである。また
ブロック群120は、MACユニットのうちの1つで実行され
る演算に対応するものである。第1の時間T0〜T1では、
ブロック112で示す部分変換プロセス及びスペシャルケ
ース検出プロセスが実行される。第2の時間T1〜T0で
は、ブロック113,121で示すように、スペシャルケース
フラグ及び部分的に変換されたデータがMACユニットに
バイパスされる。時間T1〜T2でデータ及びフラグがMAC
ユニットにバイパスされている間に、バイパスブロック
が変換の残りを実行する。時間T2〜T3では、ブロック11
4に示すように、変換されたデータをバイパスブロック
がレジスタファイルブロックに書き込む。
【0045】完全に変換されたデータが、バイパスブロ
ックによりレジスタファイルブロックに書き戻されてい
る間に、MACユニットは、ブロック122で示す乗算累算演
算の第1段階を開始する。MACユニットは、該演算の第
1段階を実行している間に、変換の残りも並列に実行し
ている。ブロック123,124で示す乗算累算演算の第2及
び第3段階では、ブロック122で示す最終変換プロセス
中に得られる指数を利用する。該演算の第2及び第3段
階は、時間T3〜T5において実行される。次いで、該演算
の結果が時間T5〜T6においてレジスタファイルブロック
に書き戻される。該ステップはブロック125に示されて
いる。
【0046】MACユニットが、完全に変換されたデータ
がレジスタファイルブロックに書戻されるのを待ち、該
レジスタファイルブロックから該データを取得し、次い
で乗算累算演算の実行を開始する場合には、ブロック12
2で示す演算の第1段階は、時刻T3の幾分か後まで(即
ち、ブロック114に示す書き戻しステップの後まで)開
始することができない、ということは図6のタイミング
チャートより明らかである。実際に、レジスタファイル
ブロックからMACユニットへデータを渡すステップが実
行されるため、乗算累算演算は時刻T4まで開始すること
ができない。本発明のロードバイパスを実施することに
より、ロード動作の実行に必要な時間量が大幅に低減さ
れる。時間がサイクルを表しているものとすると、ロー
ド動作の実行に通常必要となる時間を少なくとも2サイ
クル削減することができる。上述のように、その結果と
して処理スループット全体が大幅に向上する、というこ
とが当業者には理解されよう。
【0047】なお、図6に示す時間は、クロックサイク
ルに対応してもしなくてもよい。各時間は、1サイクル
の一部に対応すること又は1クロックサイクルよりも長
い時間に対応することが可能である。本発明は、図6に
示すブロックで表される機能の実行に必要な時間に対し
て限定されるものではない、ということが当業者には理
解されよう。
【0048】当業者であれば、本発明が好ましい実施の
形態に関して説明されていること、及び本発明が上記実
施形態に限定されないことが理解されよう。また、当業
者であれば、上述の実施形態に対して本発明の範囲内で
変更を行うことが可能である、ということが認識されよ
う。また、当業者であれば、ハードウェアのみにより実
施されるものとして説明されている本発明の幾つかの要
素を、ハードウェア、ソフトウェア、又はハードウェア
及びソフトウェアの組み合わせで実施することが可能で
ある、ということが理解されよう。
【0049】以下においては、本発明の種々の構成要件
の組み合わせからなる例示的な実施態様を示す。 1. ロードバイパス動作を実行するよう構成された浮
動小数点ユニット(50)であって、演算が行われるべきオ
ペランドデータを格納すると共に該浮動小数点ユニット
(50)により実行された演算の結果を格納する複数のレジ
スタを備えたレジスタファイル(56)と、メモリフォーマ
ットからレジスタフォーマットへの変換を実行するよう
構成された少なくとも1つのバイパス要素(54,55)であ
って、該変換が、部分変換プロセス(91)及び最終変換プ
ロセス(95)とを含み、前記部分変換プロセス(91)が、前
記レジスタファイル(56)のレジスタへの格納に適したフ
ォーマットへとデータをフォーマットし、演算が行われ
るべきオペランドデータがスペシャルケース指数を含む
か否かを検出し(93)、及びスペシャルケースの指数が検
出されたか否かを示す少なくとも1つのスペシャルケー
スフラグを生成する、という各ステップを有するもので
ある、少なくとも1つのバイパス要素(54,55)と、前記
オペランドデータについて算術演算を実行するよう構成
された少なくとも1つの乗算累算ユニット(51,52)であ
って、前記少なくとも1つのスペシャルケースフラグを
含む前記部分変換プロセス(91)の結果を受容し、及び最
終変換プロセス(97)を実行するよう構成された、少なく
とも1つの乗算累算ユニット(51,52)とを備えている、
浮動小数点ユニット(50)。 2. 前記バイパス要素(54,55)が、前記少なくとも1
つのスペシャルケースフラグを含む前記部分変換プロセ
ス(91)の結果を前記乗算累算ユニット(51,52)へとバイ
パスし、前記少なくとも1つのスペシャルケースフラグ
を含む前記部分変換プロセス(91)の結果を前記乗算累算
ユニット(51,52)へとバイパスしている間に、前記バイ
パス要素(54,55)が前記最終変換プロセス(97)を実行す
ると共にその最終変換プロセス(97)の結果を前記レジス
タファイル(56)に書き込み、前記最終変換プロセス(97)
が前記メモリフォーマットからレジスタフォーマットへ
の変換を完了させる、請求項1に記載の浮動小数点ユニ
ット(50)。 3. 前記バイパス要素(54,55)が前記最終変換プロセ
ス(97)の結果を前記レジスタファイル(56)に書き込んで
いる間に、前記乗算累算ユニット(51,52)が、前記部分
変換プロセス(99)の結果についての演算を開始すると同
時に前記最終変換プロセス(97)を実行し、該最終変換プ
ロセス(97)中に、前記少なくとも1つのスペシャルケー
スフラグを利用して、変換された指数値を得る、請求項
2に記載の浮動小数点ユニット(50)。 4. 第1の時間T0〜T1において、前記バイパス要素(5
4,55)が前記部分変換プロセス(91)を実行し、時間T1〜T
2において、前記バイパス要素(54,55)が前記最終変換プ
ロセス(95)を実行して前記少なくとも1つのスペシャル
ケースフラグを含む前記部分変換プロセス(91)の結果を
前記乗算累算ユニット(51,52)へとバイパスし、時間T2
〜T3において、前記バイパス要素(54,55)が前記最終変
換プロセス(95)の結果を前記レジスタファイル(56)に書
き込み、前記バイパス要素(54,55)が前記時間T2〜T3に
おいて前記最終変換プロセス(97)の結果を前記レジスタ
ファイル(56)に書き込んでいる間に、前記乗算累算ユニ
ット(51,52)が、前記最終変換プロセス(97)を実行する
と同時に第1の演算段階(99)を実行し、及びその間に前
記部分変換プロセス(97)の結果についての算術演算の実
行を開始し、時間T3〜T4において、前記乗算累算ユニッ
ト(51,52)が、第2の演算段階(101)を実行し、その間に
前記最終変換プロセス(97)の結果についての前記算術演
算を実行し続け、時間T4〜T5において、前記乗算累算ユ
ニット(51,52)が、第3の演算段階(101)を実行し、その
間に前記最終変換プロセス(97)の結果についての前記算
術演算を完了させる、請求項3に記載の浮動小数点ユニ
ット(50)。 5. 前記乗算累算ユニット(51,52)が式A+B×Cで定義
される演算を実行し、該A,B,Cが前記乗算累算ユニット
(51,52)により演算が行われるべきオペランドであり、
前記第1の演算段階において算術演算中に指数値が必要
とされず、該指数値が、前記第2の演算段階の開始時に
利用可能となるように前記乗算累算ユニット(51,52)に
より実行される前記最終変換プロセス(97)中に取得さ
れ、該指数値が前記第2及び第3の演算段階で利用され
る、請求項4に記載の浮動小数点ユニット(50)。 6. 浮動小数点ユニット(50)においてデータを処理す
る方法であって、前記浮動小数点ユニット(50)のバイパ
ス要素(54,55)においてメモリフォーマットからレジス
タフォーマットへの部分的な変換を実行し(91,112)、前
記浮動小数点ユニット(50)の前記バイパス要素(54,55)
を利用して前記メモリフォーマットからレジスタフォー
マットへの部分的な変換の結果を前記浮動小数点ユニッ
ト(50)の乗算累算ユニット(51,52)へとバイパスし(12
1)、前記乗算累算ユニット(51,52)において前記メモリ
フォーマットからレジスタフォーマットへの変換を完了
させる(122)、という各ステップを有する、浮動小数点
ユニット(50)においてデータを処理する方法。 7. メモリフォーマットからレジスタフォーマットへ
の部分的な変換プロセスを実行する前記ステップが、前
記浮動小数点ユニット(50)により構成されるレジスタフ
ァイル(56)のレジスタへの格納に適したフォーマットへ
とオペランドデータをフォーマットし、演算が行われる
べきオペランドデータがスペシャルケース指数を含むか
否かを検出し(93,112)、スペシャルケース指数が検出さ
れたか否かを示す少なくとも1つのスペシャルケースフ
ラグを生成する、という各ステップを有する、請求項6
に記載の方法。 8. 前記バイパスステップ(121)中に、前記バイパス
要素(54,55)が、前記最終変換プロセス(95,113)を実行
し、及び該最終変換プロセスの結果を前記レジスタファ
イル(56)に書き込み(114)、該最終変換プロセス(95,11
3)が前記メモリフォーマットから前記レジスタフォーマ
ットへの変換を完了させる、請求項7に記載の方法。 9. 前記バイパス要素(54,55)が前記最終変換プロセ
ス(97)の結果を前記レジスタファイル(56)に書き込んで
いる間に、前記乗算累算ユニット(51,52)が前記部分変
換プロセス(91)の結果についての演算を開始する(122)
と同時に前記変換プロセスを完了させ、前記変換プロセ
スを完了させる間に前記乗算累算ユニット(51,52)が前
記少なくとも1つのスペシャルケースフラグを利用し
て、変換された指数値を得る、請求項8に記載の方法。 10. 時間T0〜T1において、前記バイパス要素(54,55)
が前記部分変換プロセス(112)を実行し、時間T1〜T2に
おいて、前記バイパス要素(54,55)が前記最終変換プロ
セス(113)を実行し、及び前記少なくとも1つのスペシ
ャルケースフラグを含む前記部分変換プロセスの結果を
前記乗算累算ユニット(51,52)へとバイパスし、時間T2
〜T3において、前記バイパス要素(54,55)が前記最終変
換プロセス(97)の結果を前記レジスタファイル(56)に書
き込み(114)、前記バイパス要素(54,55)が前記時間T2〜
T3において前記最終変換プロセス(97)の結果を前記レジ
スタファイル(56)に書き込んでいる際に、前記乗算累算
ユニット(51,52)が、前記最終変換プロセスを実行する
(122)と同時に第1の演算段階(122)を実行し、及びその
間に前記部分変換プロセス(91)の結果についての算術演
算の実行を開始し、時間T3〜T4において、前記乗算累算
ユニット(51,52)が、第2の演算段階を実行し、その間
に前記最終変換プロセス(97)の結果についての前記算術
演算を実行し続け(123)、時間T4〜T5において、前記算
術累算ユニット(51,52)が、第3の演算段階(124)を実行
し、この間に前記最終変換プロセスの結果についての前
記算術演算を完了させる、請求項9に記載の方法。
【図面の簡単な説明】
【図1】SIMD演算を実行する2つの専用のSIMD用MACユ
ニットを利用する浮動小数点ユニットを示す機能ブロッ
ク図である。
【図2】SIMD演算を実行するために専用のSIMD用MACユ
ニットを利用しないが、SIMD演算を含むすべての算術演
算を実行するために標準的なMACユニットを利用する、
浮動小数点ユニットを示す機能ブロック図である。
【図3】図1及び図2に示す浮動小数点ユニットにより
演算を行うことが可能な2つの異なるデータ型フォーマ
ットのビットフィールドを示す説明図である。
【図4】浮動小数点ユニットを含む本発明のプロセッサ
アーキテクチャの一部を示す機能ブロック図である(ロ
ード動作のパフォーマンスを例証するために使用す
る)。
【図5】本発明の方法及び装置を実施した浮動小数点ユ
ニットにおけるパイプステージを機能的に示す機能ブロ
ック図である。
【図6】本発明の方法及び装置を組み込んだ浮動小数点
ユニットによるロードバイパスのパフォーマンスを例証
するタイミングチャートである。
【符号の説明】
50 浮動小数点ユニット 51,52 標準的なMACユニット 54,55 バイパスブロック 56 レジスタファイルブロック 91,112 部分変換プロセス 93,112 スペシャルケース検出プロセス 95,113 最終変換プロセス 97,122 最終変換プロセス 99,101 演算実行プロセス 114 書き戻しプロセス 121 バイパスプロセス 123 第2の乗算累算演算プロセス 124 第3の乗算累算演算プロセス

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】ロードバイパス動作を実行するよう構成さ
    れた浮動小数点ユニット(50)であって、 演算が行われるべきオペランドデータを格納すると共に
    該浮動小数点ユニット(50)により実行された演算の結果
    を格納する複数のレジスタを備えたレジスタファイル(5
    6)と、 メモリフォーマットからレジスタフォーマットへの変換
    を実行するよう構成された少なくとも1つのバイパス要
    素(54,55)であって、該変換が、部分変換プロセス(91)
    及び最終変換プロセス(95)とを含み、前記部分変換プロ
    セス(91)が、前記レジスタファイル(56)のレジスタへの
    格納に適したフォーマットへとデータをフォーマット
    し、演算が行われるべきオペランドデータがスペシャル
    ケース指数を含むか否かを検出し(93)、及びスペシャル
    ケースの指数が検出されたか否かを示す少なくとも1つ
    のスペシャルケースフラグを生成する、という各ステッ
    プを有するものである、少なくとも1つのバイパス要素
    (54,55)と、 前記オペランドデータについて算術演算を実行するよう
    構成された少なくとも1つの乗算累算ユニット(51,52)
    であって、前記少なくとも1つのスペシャルケースフラ
    グを含む前記部分変換プロセス(91)の結果を受容し、及
    び最終変換プロセス(97)を実行するよう構成された、少
    なくとも1つの乗算累算ユニット(51,52)とを備えてい
    る、浮動小数点ユニット(50)。
JP2000149198A 1999-05-21 2000-05-22 浮動小数点ユニットにおいてロードバイパスを実行する方法及び装置 Expired - Fee Related JP3693556B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US316418 1999-05-21
US09/316,418 US6393452B1 (en) 1999-05-21 1999-05-21 Method and apparatus for performing load bypasses in a floating-point unit

Publications (2)

Publication Number Publication Date
JP2001005640A true JP2001005640A (ja) 2001-01-12
JP3693556B2 JP3693556B2 (ja) 2005-09-07

Family

ID=23228973

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000149198A Expired - Fee Related JP3693556B2 (ja) 1999-05-21 2000-05-22 浮動小数点ユニットにおいてロードバイパスを実行する方法及び装置

Country Status (3)

Country Link
US (1) US6393452B1 (ja)
EP (1) EP1054320A3 (ja)
JP (1) JP3693556B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004005222A (ja) * 2002-05-31 2004-01-08 Internatl Business Mach Corp <Ibm> 格納形式が異なる記録装置のためのバックアップ技術
US7308527B2 (en) * 2005-01-24 2007-12-11 International Business Machines Corporation System for indicating a plug position for a memory module in a memory system
US20060179286A1 (en) * 2005-02-09 2006-08-10 International Business Machines Corporation System and method for processing limited out-of-order execution of floating point loads
US8667250B2 (en) * 2007-12-26 2014-03-04 Intel Corporation Methods, apparatus, and instructions for converting vector data
CN102779023A (zh) * 2011-05-12 2012-11-14 中兴通讯股份有限公司 一种处理器的环回结构及数据环回处理方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5161117A (en) * 1989-06-05 1992-11-03 Fairchild Weston Systems, Inc. Floating point conversion device and method
US5590365A (en) * 1990-03-30 1996-12-31 Kabushiki Kaisha Toshiba Pipeline information processing circuit for floating point operations
US5267186A (en) * 1990-04-02 1993-11-30 Advanced Micro Devices, Inc. Normalizing pipelined floating point processing unit
US5548545A (en) * 1995-01-19 1996-08-20 Exponential Technology, Inc. Floating point exception prediction for compound operations and variable precision using an intermediate exponent bus
US5805475A (en) * 1995-02-10 1998-09-08 International Business Machines Corporation Load-store unit and method of loading and storing single-precision floating-point registers in a double-precision architecture
US5687106A (en) * 1995-03-31 1997-11-11 International Business Machines Corporation Implementation of binary floating point using hexadecimal floating point unit
US5748516A (en) * 1995-09-26 1998-05-05 Advanced Micro Devices, Inc. Floating point processing unit with forced arithmetic results
US5892697A (en) * 1995-12-19 1999-04-06 Brakefield; James Charles Method and apparatus for handling overflow and underflow in processing floating-point numbers
US5940311A (en) * 1996-04-30 1999-08-17 Texas Instruments Incorporated Immediate floating-point operand reformatting in a microprocessor

Also Published As

Publication number Publication date
JP3693556B2 (ja) 2005-09-07
US6393452B1 (en) 2002-05-21
EP1054320A2 (en) 2000-11-22
EP1054320A3 (en) 2003-04-02

Similar Documents

Publication Publication Date Title
US6970994B2 (en) Executing partial-width packed data instructions
US6230257B1 (en) Method and apparatus for staggering execution of a single packed data instruction using the same circuit
US5864703A (en) Method for providing extended precision in SIMD vector arithmetic operations
US6122725A (en) Executing partial-width packed data instructions
US6192467B1 (en) Executing partial-width packed data instructions
US6233671B1 (en) Staggering execution of an instruction by dividing a full-width macro instruction into at least two partial-width micro instructions
JPH07295813A (ja) 複数の型のオペレーションを同時並列で実行するためのプロセッサコア、およびオペレーションに用いられるオペランドデータを処理し通信する方法
US20080184007A1 (en) Method and system to combine multiple register units within a microprocessor
JP3683773B2 (ja) Simd演算を実行するために標準macユニットを利用する浮動小数点ユニット
JPH10228376A (ja) 複数レジスタ命令を処理する方法及びプロセッサ
CN113703832B (zh) 一种立即数转移指令的执行方法、装置及介质
US20030005261A1 (en) Method and apparatus for attaching accelerator hardware containing internal state to a processing core
JPH1165844A (ja) パイプラインバイパス機能を有するデータ処理装置
US5815420A (en) Microprocessor arithmetic logic unit using multiple number representations
JP2669158B2 (ja) データ処理装置
JPH1165839A (ja) プロセッサの命令制御機構
US6055628A (en) Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
JP3693556B2 (ja) 浮動小数点ユニットにおいてロードバイパスを実行する方法及び装置
US6078940A (en) Microprocessor with an instruction for multiply and left shift with saturate
JP2646855B2 (ja) データ処理装置
JP3658879B2 (ja) パイプライン計算機
JPH0991138A (ja) 演算処理方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050609

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050614

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050621

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees