IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インテル・コーポレーションの特許一覧

<>
  • 特開-浮動小数点仮数のための丸め回路 図1
  • 特開-浮動小数点仮数のための丸め回路 図2
  • 特開-浮動小数点仮数のための丸め回路 図3
  • 特開-浮動小数点仮数のための丸め回路 図4
  • 特開-浮動小数点仮数のための丸め回路 図5
  • 特開-浮動小数点仮数のための丸め回路 図6
  • 特開-浮動小数点仮数のための丸め回路 図7
  • 特開-浮動小数点仮数のための丸め回路 図8
  • 特開-浮動小数点仮数のための丸め回路 図9
  • 特開-浮動小数点仮数のための丸め回路 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022101463
(43)【公開日】2022-07-06
(54)【発明の名称】浮動小数点仮数のための丸め回路
(51)【国際特許分類】
   G06F 7/499 20060101AFI20220629BHJP
   G06F 7/483 20060101ALI20220629BHJP
【FI】
G06F7/499 647
G06F7/499 101
G06F7/483
【審査請求】未請求
【請求項の数】25
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2021175162
(22)【出願日】2021-10-27
(31)【優先権主張番号】17/133,861
(32)【優先日】2020-12-24
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.VERILOG
2.OPENCL
(71)【出願人】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】マーティン ラングハマー
(72)【発明者】
【氏名】アレクサンダー ハイネッケ
(57)【要約】      (修正有)
【課題】浮動小数点算術を行うように設計された集積回路に関し、特に浮動小数点仮数に対する可変丸め点を利用するシステム、方法及びデジタル信号処理回路を提供する。
【解決手段】浮動小数点乗算器200は、浮動小数点仮数を生成し、入力ビットに基づいて、浮動小数点仮数を算出する伝播ネットワーク208を有する算術回路を含む。浮動小数点乗算器はまた、浮動小数点仮数を丸める丸め回路213を含む。丸め回路は、入力ビットの第1入力ビット又は丸めビット207を選択的に入力する、浮動小数点仮数に対する丸め処理ロケーションにおける正規化マルチプレクサ204を含む。丸め回路はまた、入力ビットの第2入力ビットを丸めビットとORするORゲートを含む。さらに、第2入力ビットは、第1入力ビットよりも下位ビットである。
【選択図】図6
【特許請求の範囲】
【請求項1】
算術回路であって、浮動小数点仮数を生成し、
複数の入力ビットに基づいて、前記浮動小数点仮数を算出する伝播ネットワークと、
前記浮動小数点仮数を丸める丸め回路であって、前記丸め回路は、
前記複数の入力ビットの第1入力ビットまたは丸めビットを選択的に入力する、前記浮動小数点仮数に対する丸めロケーションにおけるマルチプレクサと、
前記複数の入力ビットの第2入力ビットを、前記丸めビットとORするORゲートであって、前記第2入力ビットは前記第1入力ビットよりも下位ビットであるORゲートとを含む、丸め回路と
を有する算術回路を備えるシステム。
【請求項2】
前記算術回路は、
第1浮動小数点数を受け取る第1入力と、
第2浮動小数点数を受け取る第2入力であって、前記算術回路は、第1浮動小数点数と第2浮動小数点数との乗算に少なくとも部分的に基づいて、前記浮動小数点仮数を生成する、第2入力と
を含む乗算器回路を有する、請求項1に記載のシステム。
【請求項3】
前記乗算器回路は、第1および第2浮動小数点数に少なくとも部分的に基づいて、前記複数の入力ビットを生成するために、1または複数の値を合計する加算器を含む、請求項2に記載のシステム。
【請求項4】
前記伝播ネットワークから前記浮動小数点仮数を受け取り、前記浮動小数点仮数を正規化する出力マルチプレクサを備える請求項1から3のいずれか一項に記載のシステム。
【請求項5】
前記複数の入力ビットは、複数のXORゲートにおいて受け取られた値に対するXOR演算に少なくとも部分的に基づく、請求項1から4のいずれか一項に記載のシステム。
【請求項6】
前記複数の入力ビットは、
複数のANDゲートにおいて受け取られた前記値から生成される生成ビットと、
複数のORゲートにおいて受け取られた前記値から生成される伝搬ビットと
を含む、請求項5に記載のシステム。
【請求項7】
前記伝播ネットワークは、並列プレフィックス伝播回路を有する、請求項1から6のいずれか一項に記載のシステム。
【請求項8】
前記丸め回路は、
前記浮動小数点仮数に対する追加の丸めロケーションにおいて、前記複数の入力ビットのうちのそれぞれの入力ビット、または複数の追加の丸めビットのうちのそれぞれの丸めビットを選択的に入力する複数の追加のマルチプレクサと、
前記複数の入力ビットのうちそれぞれの入力ビットを、前記丸めビットとORする複数の追加のORゲートであって、複数の追加のマルチプレクサの各々は、前記複数の追加のORゲートのうち1または複数のORゲートと、前記追加の丸めロケーションのうちそれぞれの追加の丸めロケーションとに対応し、前記対応する1または複数のORゲートは、前記複数の追加のマルチプレクサのうちの前記それぞれの追加のマルチプレクサよりも下位ビットと関連付けられる、複数の追加のORゲートと
を有する、請求項1から7のいずれか一項に記載のシステム。
【請求項9】
前記複数の追加のマルチプレクサは、前記複数の入力ビットのうち不連続のビットと対応する、請求項8に記載のシステム。
【請求項10】
複数の追加のORゲートの数は、前記複数の追加のマルチプレクサの数よりも大きい、請求項9に記載のシステム。
【請求項11】
方法であって、
2つの値を受け取る段階と、
前記2つの値のそれぞれのビットのペアに基づいて、入力ビットを生成する段階と、
前記2つの値を組み合わせた結果に対する丸めビットを決定する段階と、
前記入力ビットの少なくとも一部を伝播ネットワークに伝送する段階と、
前記伝播ネットワークにおいて、前記入力ビットの少なくとも一部に少なくとも部分的に基づいて、出力を生成する段階と、
丸めマルチプレクサを用いて、前記入力ビットのうち第1入力ビット、または前記伝播ネットワークの第1ロケーションでの丸めビットを選択的に伝送する段階と、
前記入力ビットのうち第2入力ビットを、前記伝播ネットワークの第2ロケーションでの前記丸めビットと共に、ORゲートに伝送する段階であって、前記第1ロケーションは、丸めロケーションを有し、前記第2ロケーションは、前記入力ビットの下位の値にある、段階と、
前記丸めマルチプレクサの出力と、前記ORゲートの出力とに少なくとも部分的に基づいて、前記出力を丸める段階と
を備える方法。
【請求項12】
前記入力ビットを生成する段階は、前記それぞれのビットのペアをXORする段階と、前記それぞれのビットのペアをANDする段階と、前記それぞれのビットのペアをORする段階とを有する、請求項11に記載の方法。
【請求項13】
前記第2入力ビットは、それぞれのビットのペアをORした結果である、請求項12に記載の方法。
【請求項14】
前記出力は、キャリービットを含む、請求項12または13に記載の方法。
【請求項15】
前記キャリービットは、結果ビットを生成するために、前記それぞれのビットのペアをXORしたそれぞれの出力とXORされる、請求項14に記載の方法。
【請求項16】
出力マルチプレクサ内において、前記結果ビットを正規化する段階を備える請求項15に記載の方法。
【請求項17】
前記出力マルチプレクサ内における正規化は、前記伝播ネットワークからのオーバーフローに少なくとも部分的に基づく、請求項16に記載の方法。
【請求項18】
前記オーバーフローは、前記伝播ネットワークの最上位ビットに基づく、請求項17に記載の方法。
【請求項19】
算術回路であって、浮動小数点仮数を生成し、
複数の入力ビットに基づいて、前記浮動小数点仮数を算出する伝播ネットワークと、
前記浮動小数点仮数を、複数の丸めロケーションのうち1つに丸める丸め回路であって、前記丸めロケーションは、
前記複数の入力ビットの第1入力ビットまたは丸めビットを選択的に入力する、上記浮動小数点仮数に対するそれぞれの丸めロケーションにおける、それぞれのマルチプレクサと、
前記複数の入力ビットの第2入力ビットを、前記丸めビットとORするORゲートであって、前記第2入力ビットは前記第1入力ビットよりも下位ビットである、ORゲートとに対応する丸め回路と
を有する算術回路を備えるシステム。
【請求項20】
前記複数の丸めロケーションは、前記複数の入力ビットのうちの不連続のビットを含む、請求項19に記載のシステム。
【請求項21】
システムであって、
2つの値を受け取るための手段と、
前記2つの値のそれぞれのビットのペアに基づいて、入力ビットを生成するための手段と、
前記2つの値を組み合わせた結果に対する丸めビットを決定するための手段と、
前記入力ビットの少なくとも一部を伝播ネットワークに伝送するための手段と、
前記伝播ネットワークにおいて、前記入力ビットの少なくとも一部に少なくとも部分的に基づいて、出力を生成するための手段と、
前記入力ビットのうち第1入力ビット、または前記伝播ネットワークの第1ロケーションでの丸めビットを選択的に伝送するための手段と、
前記入力ビットのうち第2入力ビットを、前記伝播ネットワークの第2ロケーションでの前記丸めビットと共に、ORゲートに伝送するための手段であって、前記第1ロケーションは、丸めロケーションを有し、前記第2ロケーションは、前記入力ビットの下位の値にある、手段と、
前記丸めマルチプレクサの出力と、前記ORゲートの出力とに少なくとも部分的に基づいて、前記出力を丸めるための手段と
を備えるシステム。
【請求項22】
前記入力ビットを生成するための手段は、前記それぞれのビットのペアをXORするため、前記それぞれのビットのペアをANDするため、および前記それぞれのビットのペアをORするための手段を備える、請求項21に記載のシステム。
【請求項23】
結果ビットを生成するために、キャリービットを、前記それぞれのビットのペアをXORするための前記手段のそれぞれの出力とXORするための手段と、
前記結果ビットを正規化するための手段と
を備える請求項22に記載のシステム。
【請求項24】
デジタル信号処理回路であって、
複数の入力ビットに基づいて、浮動小数点仮数を算出する伝播ネットワークと、
前記複数の入力ビットの第1入力ビットまたは丸めビットを選択的に入力するそれぞれの複数のマルチプレクサと、前記複数の入力ビットの第2入力ビットを前記丸めビットとORするORゲートとに対応する、複数の丸めロケーションのうち1つに、前記浮動小数点仮数を丸める丸め回路であって、前記第2入力ビットは前記第1入力ビットよりも下位ビットである、丸め回路と
を備えるデジタル信号処理回路。
【請求項25】
前記複数の丸めロケーションは、少なくとも2ビットだけ、互いに離れている、請求項24に記載のデジタル信号処理回路。
【発明の詳細な説明】
【背景技術】
【0001】
この開示は、浮動小数点算術を行うように設計された集積回路に関する。特に、本開示は、浮動小数点仮数に対する可変丸め点を利用することに関する。
【0002】
このセクションは、読者に本開示の様々な態様に関連し得る技術分野の様々な態様を紹介することが意図されており、当該態様は、以下に説明されるおよび/または特許請求の範囲に記載される。この議論は、本開示の様々な態様のより良好な理解を促進するための背景情報を読者に提供するのに役立つと考えられる。したがって、これらの記述は、先行技術の承認としてではなく、この観点から読まれるべきであることを理解されたい。
【0003】
人口知能(AI)は、ますます流布する適用分野となっている。AIを適用した浮動小数点演算の丸め回路実装は、特定用途向けに開発された汎用の集積回路(ASSP:application-specific standard product)と、中央演算処理装置(CPU:central processing unit)との両方の設計にとっての構造上のボトルネックとして出現した。
【0004】
AIは、浮動小数点形式の、多くの異なる数(例えば、8、16及び32)のビットを、格納および計算に用いる。但し、内積が計算される時、上記形式の少なくとも一部は、共通の形式を用いてよい。例えば、内積の累積が、IEEE float32を用いて行われて、ニューラルネットワークの入力および/または出力に用いられる精度のレベルに関わらず、高い精度を維持してよい。AI、具体的にはディープラーニングは、データがこれを通じて伝播する、多層トポロジを構築する。各演算への入力が、低い精度の形式(例えば、float16)のうちの1つで提供されると、アキュムレータ結果は、内積の完了後に、対応するターゲット精度にダウン変換される。この精度のレベルが用いられることで、丸められたアキュムレータ結果は、AI実装(例えば、ニューラルネットワーク)の次の層に正常に供給される。
【図面の簡単な説明】
【0005】
この開示の様々な態様は、以下の詳細な説明を読み、図面を参照すると、より良好に理解され得る。
【0006】
図1】一実施形態による、浮動小数点乗算器丸め処理を実装するためのシステムのブロック図である。
【0007】
図2】一実施形態による、乗算器が実装されてよい、集積回路デバイスのブロック図である。
【0008】
図3】一実施形態による、丸め処理を用いて浮動小数点乗算を行う浮動小数点乗算器のブロック図を示す。
【0009】
図4】一実施形態による、図3の浮動小数点乗算器の別の実施形態である浮動小数点乗算器のブロック図である。
【0010】
図5】一実施形態による、混合整数および浮動小数点乗算器のブロック図である。
【0011】
図6】一実施形態による、浮動小数点乗算器のブロック図である。
【0012】
図7】一実施形態による、図6の浮動小数点乗算器において用いられてよいBrent-Kung伝播ネットワークの遅延プロファイルを示すグラフである。
【0013】
図8】一実施形態による、複数の非接触の丸め点を行うための浮動小数点丸め演算を行うシステムのブロック図である。
【0014】
図9】一実施形態による、複数の非接触の丸め点のための浮動小数点算術を実装するシステムのブロック図である。
【0015】
図10】一実施形態による、1または複数の浮動小数点乗算器丸め回路が実装されてよいデータ処理システムのブロック図である。
【発明を実施するための形態】
【0016】
1または複数の具体的な実施形態が以下に説明される。これらの実施形態の簡潔な説明を提供するために、実際の実装の全ての特徴が本明細書において説明されるわけではない。かかる実際の実装の開発では、エンジニアリングまたは設計プロジェクトにおいてと同様、実装ごとに異なり得るシステム関連およびビジネス関連の制約への準拠など、開発者固有の目標を達成するために、実装固有の多数の決定を行う必要があることが理解されるだろう。さらに、かかる開発努力は複雑で時間がかかる可能性があるが、それにもかかわらず、この開示の利益を享受する当業者にとっては、設計、製造、および製造の日常的な仕事であることは理解されるだろう。
【0017】
本開示の様々な実施形態の要素を導入する場合、冠詞「a」、「an」、および「the」は、1または複数の要素があることを意味することを意図している。用語「含む」および「有する」は、包括的であり、列挙されている要素の他に追加の要素があり得ることを意味することを意図している。追加的に、本開示の「いくつかの実施形態」、「実施形態」または「1つの実施形態」の言及は、記載された特徴もまた包含する追加の実施形態の存在を排除するものとして解釈されることを意図しないことを理解されたい。さらに、文言A「に基づく」Bは、Aが少なくとも部分的にBに基づくことを意味することを意図する。さらに、用語「または」は、包括的(例えば論理OR)であり、排他的(例えば論理XOR)ではないことを意図する。換言すれば、文言A「または」Bは、A、B、またはAとBとの両方を意味することを意図する。
【0018】
以下にさらなる詳細を説明するように、本開示の実施形態は、概して、1つ以上の浮動小数点精度レベルを利用するシステムにおける、丸めるため、および/または1または複数の仮数丸め位置を算出するためのロジック回路に関する。かかる計算は、複数の加算器を用いてよいが、複数の加算器は、サイズおよび/またはコストにおいて高くなり得る。対照的に、近年の設計ツールを用いて、加算と丸め処理とを行う、複合加算器を実装するために、桁上げ伝播加算器(CPA)が用いられてよい。しかしながら、CPAと複合加算器とを利用した回路は、複数の選択可能な丸めロケーションを実装するには、非常に複雑になり得る。本明細書において説明されるように、並列プレフィックス伝播回路と共同で、丸め回路は、仮数における丸め開始点が自由に制御されることを可能にし得る。仮数における丸め開始点を自由に制御することは、並列プレフィックス伝播回路が、丸め計算の全部を行うのではなく、設定された丸め点(例えば上位ビット)において、計算を始め得るので、結果的に、計算における遅延を減らし得る。
【0019】
前述のことを念頭において、図1は、浮動小数点乗算器丸め処理を実装し得るシステム10のブロック図を示す。設計者は、(フィールドプログラマブルゲートアレイ(FPGA)などの)集積回路デバイス12上に、様々な丸め位置における多数の丸め演算に関わる機能性を実装することを望むかもしれない。設計者は、OpenCLプログラムなどの、実装する高水準プログラムを指定してよく、これにより、設計者が、低水準ハードウェア記述言語(例えば、VerilogまたはVHDL)に関する具体的な知識を要することなく、より効率的におよび容易に、プログラミング命令を提供して、集積回路デバイス12にプログラマブルロジックセルのセットを構成することを可能にし得る。例えば、OpenCLは、C++などの、他の高水準プログラミング言語と非常に類似するので、かかるプログラミング言語に精通しているプログラマブルロジックの設計者は、集積回路デバイス12に新たな機能性を実装するために、なじみのない低水準ハードウェア記述言語を学習しなければならない設計者よりも緩やかな学習曲線を有し得る。
【0020】
設計者は、設計ソフトウェア14を用いて、彼らの高水準設計を実装してよい。設計ソフトウェア14は、コンパイラ16を用いて、高水準プログラムをより低い水準の記述に変換してよい。また、設計ソフトウェア14を用いて、設計における効率を最適化および/または増大させてよい。コンパイラ16は、高水準プログラムを表す機械可読命令を、ホスト18と集積回路デバイス12とに提供してよい。ホスト18は、カーネルプログラム20により実装され得るホストプログラム22を受け取ってよい。ホストプログラム22を実装するために、ホスト18は、通信リンク24を介して、集積回路デバイス12に、ホストプログラム22からの命令を伝達してよく、通信リンク24は例えば、ダイレクトメモリアクセス(DMA)通信またはペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)通信であってよい。いくつかの実施形態において、カーネルプログラム20とホスト18とは、集積回路デバイス12上で浮動小数点算術回路26を構成することを可能にしてよい。浮動小数点算術回路26は、回路および/または他のロジック要素を含んでよく、また、例えば、浮動小数点算術ロジックおよび/または機械学習演算を実装するよう構成されてよい。
【0021】
ここで、集積回路デバイス12に関してより詳細な議論に変え、図2は、FPGAなどのプログラマブルロジックデバイスであってよい、集積回路デバイス12のブロック図を示す。さらに、集積回路デバイス12は、任意の他の適切なタイプのプログラマブルロジックデバイス(例えば特定用途向け集積回路および/または特定用途向け標準装置)であってよいことを理解されたい。示されるように、集積回路デバイス12は、入力/出力ピン44を介して、信号をデバイスから離れるように追いやる、および他のデバイスから信号を受け取る、入力/出力回路42を有してよい。グローバルおよびローカルな垂直および水平の導電性のラインおよびバスなどの、相互接続資源46は、集積回路デバイス12上で信号をルーティングするのに用いられてよい。追加的に、相互接続資源46は、固定の相互接続(導電性のライン)と、プログラマブル相互接続(すなわち、それぞれの固定相互接続の間のプログラマブル接続)とを含んでよい。プログラマブルロジック48は、組合せおよび順序ロジック回路を含んでよい。例えば、プログラマブルロジック48は、ルックアップテーブル、レジスタおよびマルチプレクサを含んでよい。様々な実施形態において、プログラマブルロジック48は、カスタムロジック機能を行うよう構成されてよい。相互接続資源と関連付けられるプログラマブル相互接続は、プログラマブルロジック48の一部分として考えられてよい。プログラマブルロジック48は、異なる階層(tier)のプログラマビリティの、複数の様々なタイプのプログラマブルロジック48を含んでよい。例えば、プログラマブルロジック48は、算術論理演算器(ALU)、または様々な数学関数(例えば浮動小数点乗算計算)を行うよう構成され得る構成可能なロジックブロック(CLB)などの、様々な数学的ロジックユニットを含んでよい。集積回路デバイス12などの集積回路は、プログラマブルロジック48内にプログラマブル要素50を含んでよい。例えば、設計者(例えば顧客)は、プログラマブルロジック48をプログラミング(例えば構成)して、1または複数の所望の関数(例えば、浮動小数点算術)を行い得る。
【0022】
プログラマブルロジック48において用いられ得る浮動小数点乗算演算を硬化回路において実装するために、様々なメカニズムが、用いられてよい。図3は、丸め処理を用いて浮動小数点乗算を行う浮動小数点乗算器100のブロック図を示す。この実施形態は、桁上げ伝播加算器(CPA)102と丸めCPA108とを用いてよい。浮動小数点丸め処理の特定の実施形態は、CPA102と丸めCPA108とが、A+BとA+B+1とを同時に算出し得る単一構造によって置き換えられ得る、複合加算器を含む。いくつかの実施形態において、A+B+2もまた算出され得る。これは、2つの別個の追加の演算よりも効率的な構造に帰着し得る。
【0023】
浮動小数点乗算器100の仮数乗算を形成するために、整数乗算の特定の方法が用いられてよい。浮動小数点乗算器は、複数の部分積を作成する部分積生成器と、2つの出力ベクトルを用いて、冗長形式で様々な部分積を合計するN-2コンプレッサと、上記2つのベクトルを合計するCPAとを含んでよい。
【0024】
さらに、図3は、浮動小数点乗算器100における浮動小数点乗算と丸め処理との個別の段階を示す。浮動小数点乗算器100は、精度pの2つの仮数を取り込む。これらの仮数は、暗黙的に指定された先行1を有し、それにより上記乗算器の結果は、実際2p+2ビット幅であり得る。入力の値は、したがって、1.Xと1.Yである。よって、積は、とり得る2つの範囲は、
【数1】
以上
【数2】
以下と、2.0以上
【数3】
以下とであるだろう。出力は、正規化されてよく、結果が1.0から
【数4】
までの範囲にあることを確実にする。この正規化は、1または複数の最上位ビットの値を検査することと、正規化マルチプレクサ104を用いてビットの数(例えば1)だけ右シフトすることとにより遂げられてよい。換言すれば、正規化マルチプレクサ104は、(上記数の指数に、対応する変化を生じさせつつ)正しいロケーションに上記数を正規化するために、用いられてよい。乗算器出力の下位ビットは、正規化条件と組み合わせられ、丸めビットの値を定めてよい。その後、丸めビットは、丸めCPA108内の仮数に加えられ得る。出力の正規化された値が、
【数5】
である場合、2.0へのオーバーフロー(桁あふれ)があり得る。この場合、指数の値は、1だけ増加し得る。図3からわかるように、この杓子定規な浮動小数点乗算器丸め処理の方法は、より長いクリティカルパスに帰着する。クリティカルパスにおいて、まず「Sum」ビットと「Carry」ビットとが第1CPA102に入力される。その後、CPA102からの出力が、正規化マルチプレクサ104と、丸め回路106とに出力される。その後、正規化マルチプレクサ104と丸め回路106とからの出力は、丸めCPA108に出力される。丸めCPA108は、仮数値を出力し、任意のキャリー(carry)ビットは、コンポーネント110に出力される。浮動小数点乗算器100は、正しい結果を生成するが、特定用途向け集積回路(ASIC)において用いるための最も効果的な選択肢ではない場合がある。浮動小数点乗算器100は、CPAが集積回路デバイス12上のかなりのスペースを占めることにより、ASICに不適当であり得、費用がかかり、代替的な実装よりも非効率的であり得る。特定のASIC浮動小数点乗算器アーキテクチャにおいて、丸め回路106は、丸めCPA108と組み合わされてよい。
【0025】
図4は、図3に記載された浮動小数点乗算器100の代替的な実施形態である浮動小数点乗算器120のブロック図を示す。主に、図3における丸めCPA108は、並列プレフィックス伝播回路122と置き換えられ得る。並列プレフィックス伝播回路122は、全ての出力が、その位置の前の入力のビット単位でのANDであり得る、構造である。そして、上記入力をANDした出力は、その後、丸めビットとANDされてよい。並列プレフィックス伝播回路122は、Brent-Kung、Ladner-Fischer、または別の適切なプレフィックストポロジなどの、任意の適切なプレフィックストポロジと並列して効率的に実装され得る。並列プレフィックス伝播回路122の出力は、その後、正規化マルチプレクサ104の出力ビットとXORされてよい。並列プレフィックス伝播回路122の最上位ビット出力は、オーバーフローを示すだろう。丸めCPA108を並列プレフィックス伝播回路122と置き換えることの利点は、スペースを節約し、浮動小数点乗算器120におけるレイテンシを減らすほどの、並列プレフィックス伝播回路122のそのサイズと単純さである。
【0026】
開示される改善を最先端にせしめる一技術的側面には、図1に記載されるものなどの、合成ツールおよび設計ソフトウェアの改善がある。以前は、回路設計者が、複合浮動小数点丸め処理またはCPA回路のゲートごとの実装を指定する必要があった。電子設計自動化(EDA)ツールは、公開された数論トポロジのライブラリが存在する程度まで改善し、EDAツールは、CPAアーキテクチャに対するコンプレッサの影響を含みつつ、多数の手法を迅速に評価できる。結果的に、CPAが行動的に指定される浮動小数点乗算器を構築することは、浮動小数点乗算器100および120を用いて実装された回路よりも小さな回路のサイズを作成し得る。図4の丸め実装(すなわち並列プレフィックス伝播回路122)を構築するための追加の要素のコストは、図3に示す、明示的に定められた対応物(すなわち丸めCPA108)よりも小さい。
【0027】
図5は、並列プレフィックス加算器154と共に、混合整数および浮動小数点乗算器150の簡易ブロック図を示す。まず、回路152は、ベクトルx(i)と、生成ベクトルg(i)と、伝播ベクトルp(i)との部分積を計算する。2つの入力ベクトルa(i)とb(i)とは、(1)ビット単位でXORされ、ベクトルx(i)に帰着し、(2)ビット単位でANDされ、生成ベクトルg(i)に帰着し、(3)ビットごとにORされ、伝播ベクトルp(i)に帰着してよい。生成ベクトルg(i)と伝播ベクトルp(i)とは、その後、並列プレフィックス加算器154に入力され、並列プレフィックス加算器154は、キャリーベクトルc(i)を出力してよい。ベクトルx(i)とc(i)とは、その後、結果ベクトルr(i)を生産するXORゲート160に入力されてよい。様々なプレフィックストポロジ(例えばBrent-KungまたはLadner-Fischerネットワーク)は、並列プレフィックス加算器154を実装するために用いられてよい。
【0028】
混合整数および浮動小数点乗算器150は、示されているよりも複雑であってよく、集積回路デバイス12上の消費される増大したスペースと集積回路デバイス12における増大したレイテンシとを引き起こし得る。浮動小数点仮数がCPA102の上部にあり、また、丸めCPA108が丸め処理判断のためにのみ用いられることを、図3から思い出されたい。図5のベクトルはよって、二等分に分割され、各々は、並列プレフィックス加算器154aおよび154bを介して、合計さてよい。混合整数および浮動小数点乗算器150は、整数乗算に再利用されてよく、出力の全部が用いられてよい。よって、並列プレフィックス加算器154cは、並列プレフィックス加算器154aと154bとの出力を任意選択的に組み合わせるために、加えられてよい。結果として、仮数は、2.0から
【数6】
までの範囲にあり得る。この範囲を収容するため、半加算器層162は、追加の領域を、仮数ロケーションの最下位ビットに挿入するために用いられてよい。追加の領域のこの挿入は、混合整数および浮動小数点乗算器150が位置0または位置1に丸め処理を挿入することを可能にする。
【0029】
追加の丸めロケーションを加えることは、図5に示される混合整数および浮動小数点乗算器150などのシステムにおいて実装することが困難であるかもしれない。追加の丸めロケーションを加えるために、混合整数および浮動小数点乗算器150は、追加の並列プレフィックス加算器154を加えることと、混合整数および浮動小数点乗算器150におけるこれらの位置を再フォーマットすることとを利用し得るが、これは、潜在的に混合整数および浮動小数点乗算器150の複雑性を増大させる。対照的に、図6は、追加の丸めロケーションを図5の混合整数および浮動小数点乗算器150よりも効率的に加えるために、用いられてよい浮動小数点乗算器200を記載する。例えば、浮動小数点乗算器200は、丸め点を複数のロケーションに提供しつつ、半加算器層162を省略してよい。
【0030】
前述のように、図3に図示されたCPA102および丸めCPA108は、複数の加算演算が個別に実行される構造よりも効率のよい単一構造によって置き換えられ得る。図6は、浮動小数点乗算器200の一実施形態の簡易ブロック図を示し、浮動小数点乗算器200が、演算を個別に継続しつつ、複数の加算演算を効率的に実装することができる構造を表す。これは、より維持可能で、検証可能である、より単純な設計のコードベースに帰着し得る。
【0031】
図6におけるCPA回路202は、明示的に定められてよく、またはEDAツールを用いて行動的に指定されてよい。CPA回路202は、処理回路206、丸め回路213、および伝播ネットワーク208を駆動する。処理回路206は、CPA回路202からの出力および/または他の制御信号を用いて、丸めビット207を生成する。丸め回路213は、丸めロケーションにおいて、丸めビット207、またはCPA回路202からの対応するビットを伝播ネットワーク208に出力するよう構成される丸めマルチプレクサ210を含む。また、1または複数のORゲート212は、丸めロケーションの右方にある1または複数のビット(例えば伝播ビット)を伝播ネットワーク208においてロジック値(例えばhigh)まで追いやるために、浮動小数点乗算器200に含まれてよい。丸めロケーションの右方にある1または複数のビットをhighに押しやることで、浮動小数点乗算器200に伝播ネットワーク208における計算が丸め処理が挿入された位置にて開始するかのように挙動させてよい。換言すると、これらのビットをhighに追いやると、浮動小数点乗算器200の一部の部分(例えば正規化マルチプレクサ204)をクリティカルパスの外へ動かし得る。
【0032】
浮動小数点乗算器200において、伝播ネットワーク208の最上位ビット出力は、正規化マルチプレクサ204と指数調整との両方を駆動し、例外処理がそれに続く。仮数値は、例外処理が完了するまで用いられなくてよい。例外処理は、(例えば、プログラマブルロジック48内の指定された関数によって)浮動小数点乗算器200の外部ではあるが集積回路デバイス12内において発生してよく、および/または単純さのために図面では省略されている回路を用いて浮動小数点乗算器200内で対処されてよい。正規化マルチプレクサ204は、XOR218の後に発生する。XOR218は、伝播ネットワーク208からの桁上げ値を、その後、正規化マルチプレクサ204によって多重化される値に適用してよい。
【0033】
伝播ネットワーク208は、EDAツールなどの設計ソフトウェアによって、行動的に指定されてよい。明示的に定義されている回路は、大きく、複雑であってよい。これは、回路がバグを被りやすく、集積回路デバイス12上でより広いスペースが消費され、レイテンシおよび電力消費が増大することを引き起こし得る。行動的に指定する回路は、代わりに、検証を行いやすく、単純化された回路に帰着し得る。
【0034】
図7は、図6の正規化マルチプレクサ204が何故クリティカルパスに存在しなくなるのかを示す遅延プロファイルグラフ220を示す。換言すると、正規化マルチプレクサ204は、伝播ネットワーク208の最も遅い出力ビットに依存しなくなる。図4において、浮動小数点乗算器120は、並列プレフィックス伝播回路122が処理を始め得る前に、並列プレフィックス伝播回路122が正規化マルチプレクサ104の結果を受け取ることに依存するように動作してよく、これにより浮動小数点乗算器120のレイテンシを増大させている。しかしながら、図6において、最上位ビット出力は、伝播ネットワーク208からのいくつかの最下位ビットよりも、早く利用可能にされてよい。前述のように、図6は、伝播ネットワーク208の最上位ビット出力は、正規化マルチプレクサ204と指数調整との両方を駆動し、例外処理がそれに続くことを示す。
【0035】
特定の伝播ネットワーク(例えばBrent-Kungネットワーク)において、中間ビットは、最上位ビットよりも算出に長い時間がかかる。これらのタイプのネットワークに対する遅延プロファイルが、図7に示される。図7は、遅延プロファイルグラフ220を示す。遅延プロファイルグラフ220は、より大きなビットインデックスを左側に、より低いビットインデックスを右側に表すx軸222を含む。遅延プロファイルグラフ220は、増加する深さが増大する遅延を表すy軸224を含む。また、図7は、伝播ネットワーク208のある部分226と伝播ネットワーク208の別の部分228とを示す。x軸222上およびy軸224上における部分226のポジショニングからわかるように、部分226におけるビットは、伝播ネットワーク208の中間ビットを表す部分228におけるビットよりも少ない遅延を経験する。伝播ネットワーク208の最上位ビットは、正規化マルチプレクサ204を駆動し、伝播ネットワーク208の中間ビットは、概して最も大きい遅延を有するので、正規化マルチプレクサ204はクリティカルパスの外部にあることが分かり得る。
【0036】
図8は、複数の丸め点を有するシステム250のブロック図を示す。システム250は、ワンホットエンコーダ252、単進エンコーダ254、マルチプレクサのセット256、ORゲートのセット258、および伝播ネットワーク208を含む。ワンホットエンコーダ252、単進エンコーダ254、マルチプレクサのセット256、およびORゲート258のセットは、集合的に丸め回路260を形成する。丸め回路260は、図6において説明される丸め回路213に対する代替的な実施形態であってよい。丸め回路260において、丸め位置(例えば位置2)となる特定の位置が、マルチプレクサのセット256により選ばれた場合、ワンホットエンコーダ252の出力は、選ばれたビット位置を1に、全ての他の位置を0に設定する。例えば、ビット位置2で丸める4ビットの丸め回路において、ワンホットエンコーダ252は、「0100」を出力するであろう。単進エンコーダ254に関しては、丸め位置(例えば位置2)になる位置が選ばれた場合、単進エンコーダ254は、丸め位置におけるビットと丸め位置の左方にある全てのビットとに対して0を出力するであろう。また、単進エンコーダ254は、丸め位置の右方にある全てのビットに対して1を出力する。これらの1は、丸め位置の右方にある全てのORゲート258がビット位置の右方にあるビットに対して1を出力させる。例えば、位置2における丸め位置を有する4ビットの丸め回路において、単進エンコーダ254の出力は、「0011」である。別の例として、丸め回路260が、選ばれた丸め位置としてビット6を有する、10ビットの位置(9:0)の丸め回路である場合、ワンホットエンコーダ252の出力は、「0001000000」であり、単進エンコーダ254の出力は「0000111111」であるだろう。その後、出力は、ORゲート258によって、対応するロケーション(例えば伝播ベクトルp(i))において伝播ネットワーク208へと挿入されるべきである。
【0037】
丸め回路260を丸め回路213の代わりに用いることは、正規化マルチプレクサ204が伝播ネットワーク208の前に実装されることを可能にする。正規化マルチプレクサ204を、伝播ネットワーク208の出力に動かすことで、集積回路デバイス12が、(丸めビット207などの)2つの隣接する位置の間の丸めビットを多重化することを可能にする。
【0038】
図9は、複数の非接触の丸め位置を有するシステム270のブロック図である。図9は、ワンホットエンコーダ252、単進エンコーダ254、マルチプレクサのセット256、ORゲートのセット258、および伝播ネットワーク208を有するシステム270を示す。ワンホットエンコーダ252、単進エンコーダ254、マルチプレクサのセット256、およびORゲートのセット258は、集合的に丸め回路272を形成する。図9のシステム270は、特定のサイズの丸め回路272を含んでよいが、丸め回路272内の1または複数のビットは、マルチプレクサのセット256のうちの一マルチプレクサに接続されない場合があり、よって、丸め位置として利用可能でない場合がある。例えば、仮にシステム270が8ビットの丸め回路272(7:0)である場合、4つのビットのみが、マルチプレクサのセット256のうちの一マルチプレクサと連結されてよく、よって、丸めビットとして利用可能であってよい(例えば、ビット7、6、3および0のみが丸めロケーションとして利用可能なビットであってよい)。換言すると、システムは、非接触の、異なった丸めロケーションの使用を可能にする。例えば、仮にビット6が、丸め位置として選択された場合、単進エンコーダ254は、ビット6の右方にある全てのORゲート258をトリガし、ビット6の右方にあるビット(例えば、5:0)を、1に設定させるだろう。この状況において、伝播ネットワーク208は、丸め計算が、ビット6において始まるかのように機能してよい。
この例は、4つの利用可能な丸め位置を有する8ビットの丸め回路272を説明している一方で、他の実施形態は、任意の数の利用可能な丸め位置を有する、任意のサイズの丸め回路272を含んでよいことを留意されたい。例えば、マルチプレクサ256は、異なった方式のニューラルネットワークに関する仮数で頻繁に用いられる特定のビットロケーションに位置してよい。例えば、ビットロケーションは、2、4、8、16、32、または任意の他の好適なロケーション(例えば、2^nを用いて導出される任意の数)に設定されてよい。
【0039】
図3図9において示される実施形態は、図2において記載される集積回路デバイス12などの、多数の集積回路デバイスに実装されてよい。図2の集積回路デバイス12は、ASICまたはFPGAであってよい。集積回路デバイス12は、図10に示されるデータ処理システム300などの、データ処理システムであってよい、または、そのコンポーネントであってよい。データ処理システム300は、ホストプロセッサ302と、メモリおよび/または記憶回路304と、ネットワークインタフェース306とを含んでよい。データ処理システム300は、より多くのまたはより少ないコンポーネント(例えば、電子ディスプレイ、ユーザインタフェース構造、またはASIC)を含んでよい。ホストプロセッサ302は、(例えば、機械学習、ビデオ処理、音声認識、画像認識、データ圧縮、データベース検索ランク付け、バイオインフォマティクス、ネットワークセキュリティパターンの認識、または空間ナビゲーションなどを行うように)データ処理システム300へのデータ処理要求を管理し得る、インテルXeon(登録商標)または縮小命令プロセッサ(例えば、縮小命令セットコンピュータ(RISC)、またはAdvanced RISC Machine(ARM)プロセッサ)などの、好適なプロセッサであってよい。メモリおよび/または記憶回路304は、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、1または複数のハードドライブ、またはフラッシュメモリなどを含んでよい。メモリおよび/または記憶回路304は、データ処理システム300によって処理されるべきデータを保持してよい。また、場合によっては、メモリおよび/または記憶回路304は、集積回路デバイス12をプログラミングするためのコンフィギュレーションプログラム(ビットストリーム)を格納してよい。ネットワークインタフェース306は、データ処理システム300が他の電子デバイスと通信することを可能にしてよい。データ処理システム300は、いくつかの異なるパッケージを含んでよく、または単一のパッケージ基板上の単一のパッケージ内に含有されてよい。
【0040】
1つの例において、データ処理システム300は、様々な異なる要求を処理するデータセンタの一部分であってよい。例えば、データ処理システム300は、ネットワークインタフェース306を介して、データ処理要求を受け取って、機械学習、ビデオ処理音声認識、画像認識、データ圧縮、データベース検索ランク付け、バイオインフォマティクス、ネットワークセキュリティパターンの認識、空間ナビゲーション、または他の何らかの専門タスクを行ってよい。ホストプロセッサ302は、集積回路デバイス12のプログラマブルロジック構造が、要求タスクを実装するのに好適な乗算器を用いてプログラミングされることを可能にしてよい。例えば、ホストプロセッサ302は、メモリおよび/または記憶回路304上に格納されるコンフィギュレーションデータ(ビットストリーム)が集積回路デバイス12のプログラマブルロジック構造にプログラムされるように指示してよい。コンフィギュレーションデータ(ビットストリーム)は、1または複数の浮動小数点乗算器、または本明細書に説明される技術によるプログラマブルロジックに、マッピングおよびパッキングが共にされ得る他の浮動小数点算術演算を用いるために設定された、回路設計を表してよい。効率的に浮動小数点乗算器をマッピングおよびパッキングすることで、集積回路デバイス12上で、要求タスクを行うために用いられるスペース、レイテンシおよび/または経路資源が減らされ得る。
【0041】
本開示に記載される実施形態が様々な修正および代替的形態に影響されやすい場合がある一方で、具体的な実施形態が、図面における例により示されており、本明細書において詳細に説明されている。しかしながら、本開示は開示された特定の形態に限定されないことが意図されているものではないことが理解され得る。本開示は、以下に添付される特許請求の範囲により定義されるように、本開示の趣旨および範囲内に含まれる全ての修正、均等物、および代替物をカバーするものである。
【0042】
本明細書において提示および特許請求される技術は、本技術分野を明らかに向上する実用的な性質の有形物および具体例に参照および適用され、よって、抽象的な、無形な、または純粋に理論上のものではない。さらに、本明細書の末尾に添付されている任意の請求項は、「[機能]を[行う]ための手段」または「[機能]を[行う]段階」として指定される1または複数の要素を含む場合、そのような要素が、米国特許法112条(f)の下で解釈されるべきであることを意図する。但し、任意の他の態様で指定される要素を含む任意の請求項に関しては、そのような要素が、米国特許法112条(f)の下で解釈されるべきであることを意図していない。(本開示の例示的な実施形態)
【0043】
以下の番号付きの節は、本開示の特定の実施例を定義する。
【0044】
(実施例1)
算術回路であって、浮動小数点仮数を生成し、
複数の入力ビットに基づいて、上記浮動小数点仮数を算出する伝播ネットワークと、
上記浮動小数点仮数を丸める丸め回路であって、上記丸め回路は、
上記複数の入力ビットの第1入力ビットまたは丸めビットを選択的に入力する、上記浮動小数点仮数に対する丸めロケーションにおけるマルチプレクサと、
上記複数の入力ビットの第2入力ビットを、上記丸めビットとORするORゲートであって、上記第2入力ビットは上記第1入力ビットよりも下位ビットであるORゲートとを含む、丸め回路と
を有する算術回路を備えるシステム。
【0045】
(実施例2)
上記算術回路は、
第1浮動小数点数を受け取る第1入力と、
第2浮動小数点数を受け取る第2入力であって、上記算術回路は、第1浮動小数点数と第2浮動小数点数との乗算に少なくとも部分的に基づいて、上記浮動小数点仮数を生成する、第2入力と
を含む乗算器回路を有する、実施例1に記載のシステム。
【0046】
(実施例3)
上記乗算器回路は、第1および第2浮動小数点数に少なくとも部分的に基づいて、上記複数の入力ビットを生成するために、1または複数の値を合計する加算器を含む、実施例2に記載のシステム。
【0047】
(実施例4)
上記伝播ネットワークから上記浮動小数点仮数を受け取り、上記浮動小数点仮数を正規化する出力マルチプレクサを備える実施例1に記載のシステム。
【0048】
(実施例5)
上記複数の入力ビットは、複数のXORゲートにおいて受け取られた値に対するXOR演算に少なくとも部分的に基づく、実施例1に記載のシステム。
【0049】
(実施例6)
上記複数の入力ビットは、
複数のANDゲートにおいて受け取られた上記値から生成される生成ビットと、
複数のORゲートにおいて受け取られた上記値から生成される伝搬ビットと
を含む、実施例5に記載のシステム。
【0050】
(実施例7)
上記伝播ネットワークは、並列プレフィックス伝播回路を有する、実施例1に記載のシステム。
【0051】
(実施例8)
上記丸め回路は、
上記浮動小数点仮数に対する追加の丸めロケーションにおいて、上記複数の入力ビットのうちのそれぞれの入力ビット、または複数の追加の丸めビットのうちのそれぞれの丸めビットを選択的に入力する複数の追加のマルチプレクサと、
上記複数の入力ビットのうちそれぞれの入力ビットを、上記丸めビットとORする複数の追加のORゲートであって、複数の追加のマルチプレクサの各々は、上記複数の追加のORゲートのうち1または複数のORゲートと、上記追加の丸めロケーションのうちそれぞれの追加の丸めロケーションとに対応し、上記対応する1または複数のORゲートは、上記複数の追加のマルチプレクサのうちの上記それぞれの追加のマルチプレクサよりも下位ビットと関連付けられる、複数の追加のORゲートと
を有する、実施例1に記載のシステム。
【0052】
(実施例9)
上記複数の追加のマルチプレクサは、上記複数の入力ビットのうち不連続のビットと対応する、実施例8に記載のシステム。
【0053】
(実施例10)
複数の追加のORゲートの数は、上記複数の追加のマルチプレクサの数よりも大きい、実施例9に記載のシステム。
【0054】
(実施例11)方法であって、
2つの値を受け取る段階と、
上記2つの値のそれぞれのビットのペアに基づいて、入力ビットを生成する段階と、
上記2つの値を組み合わせた結果に対する丸めビットを決定する段階と、
上記入力ビットの少なくとも一部を伝播ネットワークに伝送する段階と、
上記伝播ネットワークにおいて、上記入力ビットの少なくとも一部に少なくとも部分的に基づいて、出力を生成する段階と、
丸めマルチプレクサを用いて、上記入力ビットのうち第1入力ビット、または上記伝播ネットワークの第1ロケーションでの丸めビットを選択的に伝送する段階と、
上記入力ビットのうち第2入力ビットを、上記伝播ネットワークの第2ロケーションでの上記丸めビットと共に、ORゲートに伝送する段階であって、上記第1ロケーションは、丸めロケーションを有し、上記第2ロケーションは、上記入力ビットの下位の値にある、段階と、
上記丸めマルチプレクサの出力と、上記ORゲートの出力とに少なくとも部分的に基づいて、上記出力を丸める段階と
を備える方法。
【0055】
(実施例12)
上記入力ビットを生成する段階は、上記それぞれのビットのペアをXORする段階と、上記それぞれのビットのペアをANDする段階と、上記それぞれのビットのペアをORする段階とを有する、実施例11に記載の方法。
【0056】
(実施例13)
上記第2入力ビットは、それぞれのビットのペアをORした結果である、実施例12に記載の方法。
【0057】
(実施例14)
上記出力は、キャリービットを含む、実施例12に記載の方法。
【0058】
(実施例15)
上記キャリービットは、結果ビットを生成するために、上記それぞれのビットのペアをXORしたそれぞれの出力とXORされる、実施例14に記載の方法。
【0059】
(実施例16)
出力マルチプレクサ内において、上記結果ビットを正規化する段階を備える実施例11に記載の方法。
【0060】
(実施例17)
上記出力マルチプレクサ内における正規化は、上記伝播ネットワークからのオーバーフローに少なくとも部分的に基づく、実施例16に記載の方法。
【0061】
(実施例18)
上記オーバーフローは、上記伝播ネットワークの最上位ビットに基づく、実施例17に記載の方法。
【0062】
(実施例19)
算術回路であって、浮動小数点仮数を生成し、
複数の入力ビットに基づいて、上記浮動小数点仮数を算出する伝播ネットワークと、
上記浮動小数点仮数を、複数の丸めロケーションのうち1つに丸める丸め回路であって、上記丸めロケーションは、
上記複数の入力ビットの第1入力ビットまたは丸めビットを選択的に入力する、上記浮動小数点仮数に対するそれぞれの丸めロケーションにおける、それぞれのマルチプレクサと、
上記複数の入力ビットの第2入力ビットを、上記丸めビットとORするORゲートであって、上記第2入力ビットは上記第1入力ビットよりも下位ビットであるORゲートとに対応する、丸め回路と
を有する算術回路を備えるシステム。
【0063】
(実施例20)
上記複数の丸めロケーションは、上記複数の入力ビットのうちの不連続のビットを含む、実施例19に記載のシステム。
[他の考えられる項目]
(項目1)
算術回路であって、浮動小数点仮数を生成し、
複数の入力ビットに基づいて、上記浮動小数点仮数を算出する伝播ネットワークと、
上記浮動小数点仮数を丸める丸め回路であって、上記丸め回路は、
上記複数の入力ビットの第1入力ビットまたは丸めビットを選択的に入力する、上記浮動小数点仮数に対する丸めロケーションにおけるマルチプレクサと、
上記複数の入力ビットの第2入力ビットを、上記丸めビットとORするORゲートであって、上記第2入力ビットは上記第1入力ビットよりも下位ビットであるORゲートとを含む、丸め回路と
を有する算術回路を備えるシステム。
(項目2)
上記算術回路は、
第1浮動小数点数を受け取る第1入力と、
第2浮動小数点数を受け取る第2入力であって、上記算術回路は、第1浮動小数点数と第2浮動小数点数との乗算に少なくとも部分的に基づいて、上記浮動小数点仮数を生成する、第2入力と
を含む乗算器回路を有する、項目1に記載のシステム。
(項目3)
上記乗算器回路は、第1および第2浮動小数点数に少なくとも部分的に基づいて、上記複数の入力ビットを生成するために、1または複数の値を合計する加算器を含む、項目2に記載のシステム。
(項目4)
上記伝播ネットワークから上記浮動小数点仮数を受け取り、上記浮動小数点仮数を正規化する出力マルチプレクサを備える項目1に記載のシステム。
(項目5)
上記複数の入力ビットは、複数のXORゲートにおいて受け取られた値に対するXOR演算に少なくとも部分的に基づく、項目1に記載のシステム。
(項目6)
上記複数の入力ビットは、
複数のANDゲートにおいて受け取られた上記値から生成される生成ビットと、
複数のORゲートにおいて受け取られた上記値から生成される伝搬ビットと
を含む、項目5に記載のシステム。
(項目7)
上記伝播ネットワークは、並列プレフィックス伝播回路を有する、項目1に記載のシステム。
(項目8)
上記丸め回路は、
上記浮動小数点仮数に対する追加の丸めロケーションにおいて、上記複数の入力ビットのうちのそれぞれの入力ビット、または複数の追加の丸めビットのうちのそれぞれの丸めビットを選択的に入力する複数の追加のマルチプレクサと、
上記複数の入力ビットのうちそれぞれの入力ビットを、上記丸めビットとORする複数の追加のORゲートであって、複数の追加のマルチプレクサの各々は、上記複数の追加のORゲートのうち1または複数のORゲートと、上記追加の丸めロケーションのうちそれぞれの追加の丸めロケーションとに対応し、上記対応する1または複数のORゲートは、上記複数の追加のマルチプレクサのうちの上記それぞれの追加のマルチプレクサよりも下位ビットと関連付けられる、複数の追加のORゲートと
を有する、項目1に記載のシステム。
(項目9)
上記複数の追加のマルチプレクサは、上記複数の入力ビットのうち不連続のビットと対応する、項目8に記載のシステム。
(項目10)
複数の追加のORゲートの数は、上記複数の追加のマルチプレクサの数よりも大きい、項目9に記載のシステム。
(項目11)
方法であって、
2つの値を受け取る段階と、
上記2つの値のそれぞれのビットのペアに基づいて、入力ビットを生成する段階と、
上記2つの値を組み合わせた結果に対する丸めビットを決定する段階と、
上記入力ビットの少なくとも一部を伝播ネットワークに伝送する段階と、
上記伝播ネットワークにおいて、上記入力ビットの少なくとも一部に少なくとも部分的に基づいて、出力を生成する段階と、
丸めマルチプレクサを用いて、上記入力ビットのうち第1入力ビット、または上記伝播ネットワークの第1ロケーションでの丸めビットを選択的に伝送する段階と、
上記入力ビットのうち第2入力ビットを、上記伝播ネットワークの第2ロケーションでの上記丸めビットと共に、ORゲートに伝送する段階であって、上記第1ロケーションは、丸めロケーションを有し、上記第2ロケーションは、上記入力ビットの下位の値にある、段階と、
上記丸めマルチプレクサの出力と、上記ORゲートの出力とに少なくとも部分的に基づいて、上記出力を丸める段階と
を備える方法。
(項目12)
上記入力ビットを生成する段階は、上記それぞれのビットのペアをXORする段階と、上記それぞれのビットのペアをANDする段階と、上記それぞれのビットのペアをORする段階とを有する、項目11に記載の方法。
(項目13)
上記第2入力ビットは、それぞれのビットのペアをORした結果である、項目12に記載の方法。
(項目14)
上記出力は、キャリービットを含む、項目12に記載の方法。
(項目15)
上記キャリービットは、結果ビットを生成するために、上記それぞれのビットのペアをXORしたそれぞれの出力とXORされる、項目14に記載の方法。
(項目16)
出力マルチプレクサ内において、上記結果ビットを正規化する段階を備える項目11に記載の方法。
(項目17)
上記出力マルチプレクサ内における正規化は、上記伝播ネットワークからのオーバーフローに少なくとも部分的に基づく、項目16に記載の方法。
(項目18)
上記オーバーフローは、上記伝播ネットワークの最上位ビットに基づく、項目17に記載の方法。
(項目19)
算術回路であって、浮動小数点仮数を生成し、
複数の入力ビットに基づいて、上記浮動小数点仮数を算出する伝播ネットワークと、
上記浮動小数点仮数を、複数の丸めロケーションのうち1つに丸める丸め回路であって、上記丸めロケーションは、
上記複数の入力ビットの第1入力ビットまたは丸めビットを選択的に入力する、上記浮動小数点仮数に対するそれぞれの丸めロケーションにおける、それぞれのマルチプレクサと、
上記複数の入力ビットの第2入力ビットを、上記丸めビットとORするORゲートであって、上記第2入力ビットは上記第1入力ビットよりも下位ビットであるORゲートとに対応する、丸め回路と
を有する算術回路を備えるシステム。
(項目20)
上記複数の丸めロケーションは、上記複数の入力ビットのうちの不連続のビットを含む、項目19に記載のシステム。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
【外国語明細書】