米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 計算機;電気通信 -> ヒューレット・パッカード・カンパニー

発明の名称 SIMD演算を実行するために標準MACユニットを利用する浮動小数点ユニット
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2001−27945(P2001−27945A)
公開日 平成13年1月30日(2001.1.30)
出願番号 特願2000−149271(P2000−149271)
出願日 平成12年5月22日(2000.5.22)
代理人 【識別番号】100063897
【弁理士】
【氏名又は名称】古谷 馨 (外2名)
発明者 プレストン・ジェイ・レンストローム
要約 目的


構成
特許請求の範囲
【請求項1】 データに対して算術演算を実行するための浮動小数点ユニット(50)であって、複数のレジスタを含み、それらのレジスタにデータの格納およびそれらのレジスタからデータの読出しを行うことができるレジスタファイル(56)と、複数のデータ型フォーマット(15、16)に対して算術演算を実行するよう構成された第1の乗算累算ユニット(51)と、複数のデータ型フォーマット(15、16)に対して算術演算を実行するよう構成された第2の乗算累算ユニット(52)と、第1の乗算累算ユニット(51)およびレジスタファイル(56)に電気的に結合され、レジスタファイル(56)のレジスタから読出されたデータを受取ると共に、その読出されたデータを第1の乗算累算ユニット(51)に渡すよう構成され、また、第1の乗算累算ユニット(51)から第1の乗算累算ユニット(51)によって実行された算術演算の結果を受取ると共に、その結果を第1の乗算累算ユニット(51)からレジスタファイル(56)に渡すよう構成される第1のバイパスコンポーネント(54)であって、前記結果がレジスタファイル(56)の1つまたは複数のレジスタに格納される、第1のバイパスコンポーネント(54)と、及びレジスタファイル(56)の1つまたは複数のレジスタから読出されたデータを受取ると共に、その受取ったデータをレジスタファイル(56)から第2の乗算累算ユニット(52)に渡すよう構成され、第2の乗算累算ユニット(52)によって実行された算術演算の結果を受取ると共に、第2の乗算累算ユニット(52)によって実行された前記算術演算の結果をレジスタファイル(56)に渡すよう構成される第2のバイパスコンポーネント(55)であって、第2の乗算累算ユニット(52)によって実行された前記演算の結果がレジスタファイル(56)の1つまたは複数のレジスタに格納される、第2のバイパスコンポーネント(55)とを含む、装置。
発明の詳細な説明
【0001】
【発明の属する技術分野】本発明は、浮動小数点ユニットに関し、特に、在来のデータ型フォーマットとSIMDデータ型フォーマットとに対する演算を実行するために標準MACユニットを利用することができる浮動小数点ユニットに関する。
【0002】
【従来の技術】プロセッサ速度が向上しデータサイズが増大することにより、浮動小数点ユニットにもたらすことができるデータの量に関して、浮動小数点演算の計算性能に重大な妨げが常時存在する。プロセッサアーキテクチャが64ビット以上のアーキテクチャに発展することで、より多くのデータロードポート、ひいてはより広いロード帯域幅を利用することによるか、あるいは、64ビットデータをより小さい複数のデータ片に分割してこれら小さい複数のデータ片に多重演算を実行することによってのみ、この妨げの影響を低減することができる。この後者の技術は、特に、1つの64ビットの浮動小数点数ほど高い精度を要求しない多くの小さい演算を実行する場合に有用である。なお、この64ビットの浮動小数点数は、米国電気電子学会(IEEE)の浮動小数点形式規格においてダブルワード(倍長語)と呼ばれる。例えば、一般的なグラフィクス表示演算において、浮動小数点演算は計算集約的であるが、64ビット数が表すことができる範囲は必要でない。従って、データをより小さいデータ片に分割してこれら小さいデータ片に対して演算を行うという後者の方法は、この種の環境において有利に使用することができる。
【0003】この技術を実現するよう設計された周知のアーキテクチャには、一般に単一命令多重データ(SIMD)演算と呼ばれるものを利用するものがある。SIMD命令により、複数のデータに対してまったく同じ演算が同時に、すなわち並列に実行される。1つの大きいレジスタに複数の小さいデータ片を格納すると、複数の小さいレジスタに複数の小さいデータ片を格納するよりも、より効率よくダイの面積を使用することができる。従って、SIMD演算は、通常、単一の大きいレジスタにある複数の小さいデータ片に対して同時に実行される。また、SIMD演算の要件を満たすために、複数の小さいデータ片に対して同時にSIMD演算を実行することが必要である。
【0004】目下、プロセッサアーキテクチャは、在来のデータ型フォーマットとSIMD型データ型フォーマットとの両方をサポートするよう設計されている。在来のデータ型フォーマットは、一般に、SIMDデータ型フォーマットよりビットサイズが大きい。これら両タイプの演算をサポートする手段として、これらアーキテクチャにおいて、在来のデータ型フォーマットおよびSIMDデータ型フォーマットを処理するために、SIMD機能ユニットおよび標準機能ユニットが実装されている。これら機能ユニットのうちの1つのタイプは、一般に乗算累算(MAC)ブロックと呼ばれているが、それら機能ユニットは、供給されるデータに対し例えば加算、減算および乗算等のあらゆる種類の算術機能を実行する。SIMD演算を処理するために専用のMACを利用する主な理由は、これら専用のMACが2つのSIMD演算を同時に実行することができる、ということである。しかしながら、浮動小数点ユニットにこれら専用のSIMD用MACを実装することは、SIMD用MACによって消費される追加のダイの面積の量という点でコストがかかる。更に、一般にSIMD演算は、浮動小数点ユニットが実行するすべての演算のおよそ5%未満に相当するにすぎないため、処理スループットに対するダイの面積の妥協は高くつくことになる。
【0005】
【発明が解決しようとする課題】従って、複数のデータ型フォーマットに対して演算することができ、且つ異なるデータ型フォーマットの各々について専用のハードウェアを必要としない浮動小数点ユニットが必要とされている。
【0006】
【課題を解決するための手段】本発明は、浮動小数点演算を実行するための方法および装置を提供する。本発明の装置は、複数のデータ型フォーマットに対して乗算累算演算を実行することができる2つの標準乗算累算ユニット(MAC)を含む浮動小数点ユニットを含む。この標準MACは、在来のデータ型フォーマットと単一命令多重データ(SIMD)型フォーマットとに対して演算するように構成されている。従って、専用のSIMD用MACユニットが必要でないため、ダイの面積の大幅な節約を実現することができる。
【0007】本発明によれば、SIMD命令に対しMACユニットの1つによって演算が行われる時、データは、64ビットワードとして上位および下位のMACユニットに対して与えられる。また、各MACユニットは、1つまたは複数のビットを受取る。そのビットは、MACユニットの各々に対し、各MACユニットに応じて64ビットワードの上位半分または下位半分のいずれかを選択させるものである。例えば、下位32ビットワードは、上位MACユニットによって処理され、上位32ビットワードは、下位MACユニットによって処理される。
【0008】各MACユニットは、各々の32ビットワードに対して演算を行う。そして、MACユニットが実行した演算の結果は、浮動小数点ユニットのバイパスブロックによって合体されて64ビットワードになる。これらの結果は、その結果が専用のSIMDハードウェアを利用する浮動小数点ユニットにおいて得られる結果とまったく同じに見えるように合体される。
【0009】本発明のこれらのおよび他の特長と利点とは、以下の説明、図面および特許請求の範囲から明らかとなろう。
【0010】
【発明の実施の形態】図1は、在来のデータ型フォーマットとSIMDデータ型フォーマットとに対して演算を行うことができる浮動小数点ユニット1の機能ブロック図である。この浮動小数点ユニット1は、2つのSIMD用MACユニット3、4と、2つの標準MACユニット6、7と、2つのバイパスブロック8、9と、レジスタファイルブロック11と、を含む。標準MACユニット6、7は、在来のデータ型フォーマットに対して浮動小数点演算を実行する。SIMD用MACユニット3、4は、SIMDデータ型フォーマットに対して算術演算を実行する。従って、図1に示す浮動小数点ユニット1は、SIMD演算を実行する専用のSIMD用MACユニット3、4と、標準、すなわち在来のデータ型フォーマットに対する演算を実行する標準MACユニット6、7と、を有している。これら2つのデータ型フォーマットが、図3に示されている。演算が行われる一般的なデータ型フォーマット15は、64ビットの仮数値、17ビットの指数値および1ビットの符号値を含む。対照的に、SIMDデータ型フォーマット16は、2つの23ビット仮数値、2つの8ビット指数値(すなわち、各仮数値に1つが関連付けられている)および2つの符号ビット(すなわち、各仮数値およびその指数値に1ビットが関連付けられている)を含む。SIMDデータ型フォーマットは、本技術分野において周知であり、浮動小数点演算に対するIEEE規格において文書化されている。これらデータ型フォーマットに対して演算が実行される方法もまた、本技術分野において周知である。従って、本明細書では、簡潔にするために、これら浮動小数点データ型演算について詳述しない。
【0011】図1に示す浮動小数点ユニット1において、標準MACユニット6、7の各々は、乗算累算演算を実行することができる。図3に示す一般的なデータ型フォーマット15に対して乗算累算演算が実行される場合、オペランドA、B、Cは、バイパスブロック8、9に受渡される。浮動小数点ユニット1が2つの標準MACユニット6、7を含むため、2つの乗算累算演算を同時に実行することができる(すなわち、標準MACユニット6において一方の乗算累算演算が実行され、標準MACユニット7において他方の乗算累算演算が実行される。)
【0012】標準MACユニット6、7は、各々、1つの82ビット加算器と1つの82ビット乗算器とを含む。演算されるオペランドは、プロセッサアーキテクチャによって構成された命令デコーダ(図示せず)からレジスタファイルブロック11によって受取られる。命令デコーダは、それらオペランドと共に制御ビットをレジスタファイルブロック11に供給し、これら制御ビットは、MACユニットによってオペランドに対して実行される算術演算、例えば加算、減算、乗算等の種類を決定するために使用される。レジスタファイルブロック11は、自身が受取るオペランドが格納される複数のレジスタを含む。
【0013】レジスタファイルブロック11によって受取られる制御ビットは、オペランドの読出しおよび書込みのためにレジスタファイルブロック11のいずれのレジスタが使用されるべきかを示す。バイパスブロック8、9の各々は、オペランドの1つのセットを処理する。バイパスブロック8、9はまた、それらに供給される制御ビットを利用して、浮動小数点ユニット1の特定の宛先にいずれのレジスタの内容を経路指定すべきかを決定する。バイパスブロック8、9は、プロセッサアーキテクチャの技術分野において周知の機能を実行する。従って、本明細書では、バイパスブロック8、9が実行する機能について詳述しない。
【0014】オペランドがレジスタファイルブロック11の適切なレジスタにロードされた後、レジスタファイルブロック11は、適切なレジスタからオペランドを読み出し、レジスタファイルブロック11からバイパスブロック8に向けられたライン20、21、22上の矢印によって示されるように、それらを適切なバイパスブロックに経路指定する。ライン20、21、22は、浮動小数点ユニット1内に構成されたバスに対応し、ライン20、21、22の各々は、マルチビットオペランドA、B、Cの移送に必要な複数のラインに対応している。図1の円は、それらが位置するブロックへのバス入力を示すことが意図されている。レジスタファイルブロック11は、レジスタファイルブロック11の適切なレジスタからオペランドA、B、Cの第2のセットを読出し、バイパスブロック9は、ライン24、25、26上の矢印によって示されるように、それらを適切なMACユニットに経路指定する。これらラインもまた、複数のバスラインを表している。
【0015】バイパスブロック8は、レジスタファイルブロック11から読出されたそのオペランドのセットを、バス入力28、29、30を介して標準MACユニット6に、またはバス入力32、33、34を介してSIMD用MACユニット4に受渡す。同様に、バイパスブロック9は、そのオペランドのセットを、バス入力36、37、38を介して標準MACユニット7に、またはバス入力41、42、43を介してSIMD用MACユニット3に受渡す。
【0016】図3に示すデータ型フォーマット15の場合、バイパスブロック8、9は、各々標準MACユニット6、7にオペランドを供給する。一旦標準MACユニット6、7が各々の算術演算を実行すると、その結果は、標準MACユニット6、7によってバイパスブロック8、9に受渡される。バイパスブロック8、9は、その算術演算の結果をバス51、52を介してレジスタファイルブロック11に渡し、レジスタファイルブロック11は、その結果をレジスタファイルブロック11の1つまたは複数のレジスタに格納する。
【0017】浮動小数点ユニット1により演算が実行される時はいつでも、レジスタファイルブロック11が受取る制御ビットは、いったん演算が実行されると関連する演算の結果がいずれのレジスタに格納されるべきかを示す。また、バイパスブロック8、9は、制御ビットを受取り、その制御ビットを利用して、演算の結果を格納すべきレジスタを決定する。
【0018】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)を実行する態様について詳述しない。
【0019】浮動小数点ユニット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および標準MACユニット6、7は、すべての演算のために利用されない場合であっても、比較的大きい量のダイの面積を消費する。
【0020】本発明によれば、SIMDデータ型フォーマットに対して実行される演算を含むすべての算術演算を実行するために標準MACユニット51、52を利用する浮動小数点ユニット50(図2)が提供される。従って、図1に示す専用のSIMD用MACユニット3、4の必要が無くなり、浮動小数点ユニット50に必要なダイの面積の量を大幅に節約することができる。標準MACユニット51、52は、好ましくは図1に示す標準MACユニット6、7と非常に類似している。従って、標準MACユニット51、52は、好ましくは各々1つの82ビット加算器と1つの82ビット乗算器(図示せず)を含む。しかしながら、標準MACユニット51、52は各々、後に詳述するように、特定のビットを受取り、このビットを利用して64ビットワードの適切な半分を選択するよう構成されている。
【0021】浮動小数点ユニット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ユニット51、52は適切な32ビットワードを選択する。そして、標準MACユニット51、52は、これら32ビットワードに対して各々の演算を実行する。
【0022】上述したように、標準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の隣接するビットフィールドにビットを書込むことによって行われる。
【0023】図2の浮動小数点ユニット50内に示すラインは、図1においてそれらがバスを示すために使用されたのと同様に使用されている。矢印は、データの流れの方向を示すために使用されており、円はバス入力を示すために使用されている。61、62、63で示されるラインは、SIMDワードの下位32ビットを表している。従って、SIMDモードにおいて、バス61、62、63の各々は、32ビットのオペランド(すなわち、A、B、C)を移送する。SIMDワードが浮動小数点ユニット50に受渡されると、レジスタファイルブロック56が、受取った制御ビットに従ってSIMDビットをレジスタファイルブロック56の適切なレジスタにロードする。バイパスブロック54は、SIMDワードの下位32ビット部分を選択して、その32ビットワードをバス61、62、63を介してレジスタファイルブロック56から標準MACユニット51に経路指定する。同時に、バイパスブロック55は、バスライン65、66、67を介してSIMDワードの上位32ビット部分を標準MACユニット52に経路指定する。
【0024】標準MACユニット51および標準MACユニット52は、SIMDワードの各部分に対し同時に乗算累算演算を実行する。SIMDモードにおいて、標準MACユニット51、52は共に、32ビットの結果を生成し、それらは各々バスライン71、72を介してバイパスブロック54、55に経路指定される。そして、その結果はバイパスブロック54、55によって合体されて64ビットのSIMD結果となり、レジスタファイルブロック56の適切なレジスタに書込まれる。
【0025】なお、図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のスループットの低下は、大して重要ではない。
【0026】更に、浮動小数点ユニット1と比較した浮動小数点ユニット50のスループットの低下は、図1に示す専用のSIMD用MACユニット3、4を取除いた結果として実現されるダイの面積の大幅な節約という点で、正当であると考えられる。更に、浮動小数点ユニット50は、図4および図5に関して後に詳述するように、SIMD用MACユニット3、4の除去に起因するスループットの低下の影響を更に低減するよう設計されている。
【0027】図4は、キャッシュメモリコンポーネント81から浮動小数点ユニット50への命令およびデータのロードと、浮動小数点ユニット50からのデータの格納およびキャッシュメモリコンポーネント81へのデータの格納を制御するプロセッサアーキテクチャの回路80を示している。回路80は、キャッシュメモリコンポーネント81からのデータの検索およびキャッシュメモリコンポーネント81へのデータの格納と、浮動小数点ユニット50へのデータのロードおよび浮動小数点ユニット50からのデータの検索と、を制御する命令デコーダ83を含む。回路80は、メモリコンポーネント85と通信するが、このメモリコンポーネント85は、好ましくはオフチップであって、キャッシュメモリコンポーネント81に存在していない命令およびデータを格納する。当業者には、メモリコンポーネント85をオンチップメモリコンポーネントとすることができる、ということが理解されよう。しかしながら、メモリコンポーネント85をオンチップで実装することは、ダイの面積という点では費用がかかる。従って、好ましくは、オフチップコンポーネントとして実装される。
【0028】回路80の外部にあるコンパイラ87は、キャッシュメモリコンポーネント81にいずれの命令およびデータを存在させるか、および、いずれをメモリエレメント(メモリコンポーネント)85に存在させるか、を制御する。当業者により理解されるように、コンパイラ87は一般に、例えばコードの再順序付け(codereordering)等の各種最適化技術を利用することによりプログラム実行を最適化するソフトウェアコンポーネントである。コンパイラ87は、これら最適化技術を利用し、特定のコードおよびデータをメモリエレメント85からキャッシュメモリコンポーネント81へ、およびその逆に移動させる。
【0029】命令デコーダ83は、キャッシュメモリコンポーネント81から命令およびデータを読出し、そのデータに対して実行される演算の種類を決定する。そして、命令デコーダ83は、そのデータが、浮動小数点ユニット50のレジスタファイルブロック56の適切なレジスタにロードされるようにする。命令デコーダ83は、浮動小数点ユニット50に、データが格納されるレジスタとそれらレジスタに格納されたデータが処理される態様とをレジスタファイルブロック56に対して命令する制御ビットを供給する。命令デコーダ83により、浮動小数点ユニット50は処理された後のデータを格納すると共に、メモリエレメント85またはキャッシュメモリコンポーネント81のいずれかにそれを供給する。命令デコーダ83は、コンパイラ87からの情報を利用して、メモリエレメント85またはキャッシュコンポーネント81のいずれにデータを格納すべきかを決定する。
【0030】図5は、命令デコーダ83がSIMD命令をデコードする時点から、合体した64ビットSIMD結果がレジスタファイルブロック56のレジスタに書戻された時点までの、SIMD演算の実行の高レベルタイミング図を示している。なお、時間間隔T0〜T7は、このプロセッサアーキテクチャで発生する周期を必ずしも表しているものではなく、単に、互いに対する様々なタスクの実行の相対的なタイミングを説明することを意図したものである。浮動小数点ユニット50および命令デコーダ83は、演算が実行される速度を最大化するように設計されている。
【0031】SIMD演算は、命令デコーダ83がキャッシュメモリコンポーネント81から読出された命令をデコードし、レジスタファイルブロック56のいずれのレジスタがSIMD演算のオペランドとして使用されるかを決定した時に開始する。このステップは、図5のタイミング図におけるブロック91によって示されている。このデコードステップは、ブロック91で表されており、時間T0〜T1の第1のユニットにおいて発生する。第2の時間T1〜T2において、命令デコーダ83により、SIMDワードのオペランドがレジスタファイルブロック56の適切なレジスタからダンプされる。このオペランドダンプステップは、ブロック92によって表されている。
【0032】時間T2〜T3の間、SIMDワードは下位部分と上位部分とに分割され、その下位部分および上位部分は、それぞれバイパスブロック54、55によって標準MACユニット51、52に供給され、標準MACユニット51、52において算術演算が実行される。この一連のステップは、ブロック93によって表されている。時間T4〜T5の間、SIMD結果(バス71、72(図2))は、標準MACユニット51、52によってバイパスブロック54、55に渡される。時間T5〜T6の間、結果(バス71、72)は、バイパスブロック54、55において合体されて単一の64ビットのSIMD結果となり、この64ビットのSIMD結果は、レジスタファイルブロック56の適切なレジスタに書込まれる。
【0033】上述したように、場合によっては、浮動小数点ユニット50は、後続する演算の実行を開始することができる前に、演算の結果がレジスタファイルブロック56の適切なレジスタに書戻されるのを待たなければならない。例えば、浮動小数点ユニット50によって実行される第1の演算において、オペランドA、B、CがレジスタR4、R6、R8にそれぞれ格納され、演算の結果がレジスタR11に格納される。第2の演算は、演算を実行するためにレジスタR11、R14、R19の内容を利用しなければならず、その結果はレジスタR60に格納されることとなる。この場合、浮動小数点ユニット50は、第2の演算の実行を開始することができる前に、第1の演算の結果がレジスタR11に書込まれるまで待たなければならない。それは、第2の演算においてレジスタR11の内容を利用しなければならないことによる。
【0034】逆に、浮動小数点ユニット50は、次の演算の実行前に先行する演算の結果を待つ必要がない場合、標準MACユニット51、52がパイプライン設計を採用しているため、時間T1までには第2の演算を開始することができる。
【0035】先行する演算の結果がレジスタファイルブロック56に書戻されると、第2の演算のデコードステップ96を開始することができる。従って、先行する演算において書戻しステップ95が発生する前にデコードステップ96を開始することができる。第2の演算のオペランドダンプステップ97は、先行する演算の書戻しステップ95中に発生し、それによって、ブロック98の処理ステップに対して先行する演算の結果と次の演算のオペランドとを同時に得ることができる。
【0036】命令デコーダ83は、これらのタイプの演算の依存性を追跡し、浮動小数点ユニット50によって実行される演算のデータの完全性を保持しながら、浮動小数点ユニット50のスループットが最大化されるように、適切な時間に命令を送出する。従って、浮動小数点ユニット50は、専用のSIMD用MACユニットを利用しないことにより性能の犠牲を被るが、この性能の犠牲の重要度は、浮動小数点ユニット50の実装に必要なダイの面積の量という点の大幅な節約を実現する場合最小である。
【0037】当業者には、本発明が好ましい実施態様に関連して説明されており、本発明がこの実施態様に限定されない、ということが理解されよう。また、当業者には、上述した実施態様に対し、修正を行うことが可能であり、これが本発明の範囲内にあるということも理解されよう。更に、当業者には、ハードウェアにおいてのみ実施されているように説明された本発明のいくつかのコンポーネントが、ハードウェア、ソフトウェアまたはハードウェアとソフトウェアの組合せにおいて実施され得る、ということが理解されよう。また、当業者には、本発明が特定のデータ型フォーマットおよびビットワード長に関して説明されたが、いかなる特定のデータ型フォーマットまたはビットワード長に限定されるものではなく、本発明の概念があらゆるデータ型フォーマットおよびビットワード長に適用が可能であるということが理解されよう。
【0038】以下においては、本発明の種々の構成要件の組み合わせからなる例示的な実施態様を示す。
1.データに対して算術演算を実行するための浮動小数点ユニット(50)であって、複数のレジスタを含み、それらのレジスタにデータの格納およびそれらのレジスタからデータの読出しを行うことができるレジスタファイル(56)と、複数のデータ型フォーマット(15、16)に対して算術演算を実行するよう構成された第1の乗算累算ユニット(51)と、複数のデータ型フォーマット(15、16)に対して算術演算を実行するよう構成された第2の乗算累算ユニット(52)と、第1の乗算累算ユニット(51)およびレジスタファイル(56)に電気的に結合され、レジスタファイル(56)のレジスタから読出されたデータを受取ると共に、その読出されたデータを第1の乗算累算ユニット(51)に渡すよう構成され、また、第1の乗算累算ユニット(51)から第1の乗算累算ユニット(51)によって実行された算術演算の結果を受取ると共に、その結果を第1の乗算累算ユニット(51)からレジスタファイル(56)に渡すよう構成される第1のバイパスコンポーネント(54)であって、前記結果がレジスタファイル(56)の1つまたは複数のレジスタに格納される、第1のバイパスコンポーネント(54)と、及びレジスタファイル(56)の1つまたは複数のレジスタから読出されたデータを受取ると共に、その受取ったデータをレジスタファイル(56)から第2の乗算累算ユニット(52)に渡すよう構成され、第2の乗算累算ユニット(52)によって実行された算術演算の結果を受取ると共に、第2の乗算累算ユニット(52)によって実行された前記算術演算の結果をレジスタファイル(56)に渡すよう構成される第2のバイパスコンポーネント(55)であって、第2の乗算累算ユニット(52)によって実行された前記演算の結果がレジスタファイル(56)の1つまたは複数のレジスタに格納される、第2のバイパスコンポーネント(55)とを含む、装置。
2.乗算累算ユニット(51、52)が演算できる第1のデータ型フォーマット(15)は、64ビット仮数値、17ビット指数値および1ビット符号値からなる82ビットワードであり、前記乗算累算ユニットが演算できる第2のデータ型フォーマット(16)は、2つの32ビットワードからなり、それぞれの32ビットワードは、23ビット仮数値、8ビット指数値および1ビット符号値からなる、上記1記載の装置。
3.第2のデータ型フォーマット(16)に従ってフォーマットされた64ビットワードに対して演算される場合に、その64ビットワードの上位32ビットに対しては、第1の乗算累算ユニット(51)によって演算され、また、その64ビットワードの下位32ビットに対しては、第2の乗算累算ユニット(52)によって演算され、各乗算累算ユニットは、32ビットの結果を生成し、第1の乗算累算ユニット(51)において生成された結果と第2の乗算累算ユニット(52)において生成された結果とが、レジスタファイル(56)において前記バイパスコンポーネントによって合体されることにより、レジスタファイル(56)の1つまたは複数のレジスタに格納される64ビットワードを生成する、上記2記載の装置。
4.乗算累算ユニット(51、52)の各々は、64ビットワードを受取り、第1の乗算累算ユニット(51)は、前記64ビットワードのうちの演算すべき上位32ビットを選択し、第2の乗算累算ユニット(52)は、前記64ビットワードのうちの演算すべき下位32ビットを選択し、前記乗算累算ユニットの各々に、前記64ビットワードのうちのいずれの32ビット部分が各乗算累算ユニットより演算されるべきかを決定するために、それら乗算累算ユニットが使用する1つまたは複数のビットが供給される、上記3記載の装置。
5.3つのオペランドバス(61、62、63)が、レジスタファイル(56)から第1の乗算累算ユニットに32ビットワードを移送し、各オペランドバス(61、62、63)が、32ビットオペランドを移送することができ、3つの32ビットバス(65、66、67)が、レジスタファイル(56)から前記第2の乗算累算ユニットにデータを移送し、各バス(65、66、67)が、レジスタファイル(56)から前記第2の乗算累算ユニットに32ビットオペランドを移送することができ、32ビットバス(71、73)が、第1の乗算累算ユニット(51)からレジスタファイル(56)に演算結果を移送し、32ビットバスが、第2の乗算累算ユニット(52)からレジスタファイル(56)に演算結果を移送し、前記32ビットバスで前記第1および第2の乗算累算ユニットからレジスタファイル(56)に移送された前記32ビットの結果が、合体され、レジスタファイル(56)の1つまたは複数のレジスタに64ビットワードとして格納される、上記4記載の装置。
6.レジスタファイル(56)から第1の乗算累算ユニット(51)にデータを移送する3つの32ビットオペランドバス(61、62、63)は、第1のバイパスコンポーネント(54)に接続されており、レジスタファイル(56)から第2の乗算累算ユニット(52)にデータを移送する3つの32ビットバス(65、66、67)は、第2のバイパスコンポーネント(55)に接続されており、第1および第2のバイパスコンポーネント(54、55)に供給される1つまたは複数の制御ビットは、前記第1および第2のバイパスコンポーネントにより、レジスタファイル(56)の特定のレジスタに格納されたデータがレジスタファイル(56)から第1および第2の乗算累算ユニット(51、52)に移送される時に、そのデータが前記32ビットオペランドバスに出力されるようにするために使用され、第1および第2のバイパスコンポーネント(54、55)に受渡される1つまたは複数の制御ビットが、第1および第2のバイパスコンポーネント(54、55)によって、乗算累算ユニット(51、52)からレジスタファイル(56)に移送中のデータがレジスタファイル(56)の1つまたは複数の特定のレジスタに格納されるようにするために利用される、上記5記載の装置。
7.第1および第2の乗算累算ユニットを含む浮動小数点ユニット(50)において、単一命令多重データ(SIMD)に対して算術演算を実行するための方法であって、予め決められた数のビットからなる複数のワードを、第1および第2の乗算累算ユニット(51、52)に供給するステップであって、そのワードの各々が、オペランドに対応する、ステップと、第1の乗算累算ユニット(51)において、前記ワードの各々の特定の部分を選択するステップと、第2の乗算累算ユニット(52)において、第1の乗算累算ユニット(51)によって選択されたワードの部分とは異なる前記ワードの各々の特定の部分を選択するステップと、第1の乗算累算ユニット(51)において、第1の乗算累算ユニット(51)によって選択された前記ワードの部分に対して乗算累算演算を実行するステップと、第2の乗算累算ユニット(52)において、第2の乗算累算ユニット(52)によって選択された前記ワードの部分に対して乗算累算演算を実行するステップと、第1および第2の乗算累算ユニット(51、52)において実行された前記演算の結果を合体して単一のSIMD結果のワードにするステップと、を含む、方法。
8.第1および第2の乗算累算ユニット(51、52)に供給される前記ワードの各々は、64ビットワードであり、それぞれの64ビットワードは2つの32ビットワードからなり、それぞれの32ビットワードは、23ビット仮数値、8ビット指数値および1ビット符号値からなり、第1の乗算累算ユニット(51)は、前記64ビットワードの上位32ビットワードを選択し、第2の乗算累算ユニット(52)は、前記64ビットワードの下位32ビットワードを選択し、第1および第2の乗算累算ユニット(51、52)によって実行された演算の結果は、合体されて64ビットワードとなり、その合体された64ビットワードはそれぞれ、2つの32ビットワードからなり、それぞれの32ビットワードは、23ビット仮数値、8ビット指数値および1ビット符合値からなる、上記7記載の方法。
9.乗算累算ユニット(51、52)の各々は、1つの82ビット加算器と1つの82ビット乗算器とを含み、各乗算累算ユニット(51、52)は、その内部に含められた前記82ビット加算器と前記82ビット乗算器とを利用して前記32ビットワードに対する演算を実行する、上記8記載の方法。
10.各乗算累算ユニット(51、52)は、A+B×Cで定義される算術演算を実行し、A、B、Cは各々、乗算累算ユニット(51、52)によって演算される32ビットオペランドの1つに対応しており、前記乗算累算ユニットに含められた前記乗算器は、前記オペランドBおよびCに対して演算し、前記乗算累算ユニットに含められた前記加算器は、前記オペランドAと前記乗算器からの結果とに対して演算することにより、後に合体される結果を生成し、その合体された結果を、浮動小数点ユニット(50)のレジスタファイル(56)の1つまたは複数のレジスタに格納する、上記9記載の方法。
【0039】
【発明の効果】本発明により、複数のデータ型フォーマットに対して演算することができ、且つ異なるデータ型フォーマットの各々について専用のハードウェアを必要としない浮動小数点ユニットが提供される。




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013