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

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

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

特開2022-101473効率的なデュアルパス浮動小数点算術演算子
<>
  • 特開-効率的なデュアルパス浮動小数点算術演算子 図1
  • 特開-効率的なデュアルパス浮動小数点算術演算子 図2
  • 特開-効率的なデュアルパス浮動小数点算術演算子 図3
  • 特開-効率的なデュアルパス浮動小数点算術演算子 図4
  • 特開-効率的なデュアルパス浮動小数点算術演算子 図5
  • 特開-効率的なデュアルパス浮動小数点算術演算子 図6
  • 特開-効率的なデュアルパス浮動小数点算術演算子 図7
  • 特開-効率的なデュアルパス浮動小数点算術演算子 図8
  • 特開-効率的なデュアルパス浮動小数点算術演算子 図9
  • 特開-効率的なデュアルパス浮動小数点算術演算子 図10
  • 特開-効率的なデュアルパス浮動小数点算術演算子 図11
  • 特開-効率的なデュアルパス浮動小数点算術演算子 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022101473
(43)【公開日】2022-07-06
(54)【発明の名称】効率的なデュアルパス浮動小数点算術演算子
(51)【国際特許分類】
   G06F 7/483 20060101AFI20220629BHJP
   G06F 7/499 20060101ALI20220629BHJP
   G06F 9/38 20060101ALI20220629BHJP
【FI】
G06F7/483
G06F7/499 647
G06F7/499 101
G06F9/38 370C
【審査請求】未請求
【請求項の数】25
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2021181806
(22)【出願日】2021-11-08
(31)【優先権主張番号】17/133,933
(32)【優先日】2020-12-24
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.VERILOG
(71)【出願人】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】マーティン ラングハマー
(72)【発明者】
【氏名】テオ ドレイン
【テーマコード(参考)】
5B013
【Fターム(参考)】
5B013DD03
(57)【要約】
【課題】 浮動小数点数に対して算術演算を行うことに関連するシステム及び方法を提供する。
【解決手段】 浮動小数点算術回路は、2つの浮動小数点数を受け取るように構成される。浮動小数点算術回路は、2つの浮動小数点数の間のサイズの差に少なくとも部分的に基づいて、2つの浮動小数点数に対して第1の演算を行うように構成された第1のパスを含む。浮動小数点算術回路は、2つの浮動小数点数の間のサイズの差に少なくとも部分的に基づいて、2つの浮動小数点数に対して第2の演算を行うように構成された第2のパスを含む。第1のパス及び第2のパスは、浮動小数点算術回路で浮動小数点数を受け取った後に、互いに分岐し、第1の演算及び第2の演算に使用される共有加算器に収束する。
【選択図】図4
【特許請求の範囲】
【請求項1】
システムであって、当該システムは、
2つの浮動小数点数を受け取る浮動小数点算術回路を含み、
該浮動小数点算術回路は、
前記2つの浮動小数点数の間のサイズの差に少なくとも部分的に基づいて、前記2つの浮動小数点数に対して第1の演算を行う第1のパスと、
前記2つの浮動小数点数の間のサイズの差に少なくとも部分的に基づいて、前記2つの浮動小数点数に対して第2の演算を行う第2のパスと、を含み、
前記第1のパス及び前記第2のパスは、互いに分岐して、前記第1のパス及び前記第2のパスが再び分岐する前に、前記第1の演算及び前記第2の演算に使用される共有加算器に収束する、
システム。
【請求項2】
前記2つの浮動小数点数の指数同士の間の指数差を決定する比較器を含み、前記差が閾値未満である場合に、前記第1のパスは、前記2つの浮動小数点数に対して前記第2の演算を行う、請求項1に記載のシステム。
【請求項3】
前記第1の演算は、前記差が前記閾値以上である場合に減算を含む、請求項2に記載のシステム。
【請求項4】
前記第1の演算は、前記差が前記閾値以上である場合に加算を含む、請求項2に記載のシステム。
【請求項5】
前記第1の演算は、前記差が前記閾値未満である場合に加算を含む、請求項2乃至4のいずれか一項に記載のシステム。
【請求項6】
前記第2の演算は、前記差が前記閾値未満である場合に減算を含む、請求項2乃至4のいずれか一項に記載のシステム。
【請求項7】
前記閾値は、2を含む、請求項2乃至4のいずれか一項に記載のシステム。
【請求項8】
第1のシフトした仮数を前記第1のパスから前記共有加算器に送信することと、第2のシフトした仮数を前記第2のパスから前記共有加算器に送信することとの間で選択するマルチプレクサを含む、請求項1乃至7のいずれか一項に記載のシステム。
【請求項9】
前記第1のパスは、前記第1のシフトした仮数を生成するマルチビットシフターを含む、請求項8に記載のシステム。
【請求項10】
前記第2のパスは、前記第2のシフトした仮数を生成する単一ビットシフターを含む、請求項8に記載のシステム。
【請求項11】
前記第2のパスは、
前記共有加算器から結果を受け取り、該結果の先行ゼロの数をカウントする先行ゼロカウント回路と、
前記結果をシフトして、前記先行ゼロの数に少なくとも部分的に基づいて正規化した出力を生成する正規化シフターと、を含む、請求項1乃至7のいずれか一項に記載のシステム。
【請求項12】
前記第2のパスは、シフト検出を実行し、対数構造に従って複数の入力ビットを結合する複数のレベルを使用して前記共有加算器による結果からの前記複数の入力ビットを結合することによってシフトを適用する結合回路を含む、請求項1乃至7のいずれか一項に記載のシステム。
【請求項13】
前記第1のパスは、前記共有加算器から結果を受け取り、該結果を丸める丸め処理及び加算回路を含む、請求項1乃至7のいずれか一項に記載のシステム。
【請求項14】
前記丸め処理及び加算回路は、
前記結果を受け取る並列プレフィックス回路と、
該並列プレフィックス回路の丸めビットで丸め処理を制御するマルチプレクサと、
前記丸めビットの位置に基づいて、前記並列プレフィックス回路の伝搬ビットをHighにさせるORゲートと、
前記並列プレフィックス回路の出力を左又は右に1ビットだけシフトする出力マルチプレクサと、を含む、請求項13に記載のシステム。
【請求項15】
方法であって、当該方法は、
第1の浮動小数点数を受け取るステップと、
第2の浮動小数点数を受け取るステップと、
前記第1の浮動小数点数の第1の仮数を第1のパス及び第2のパスに分割するステップと、
前記第1のパスの第1のシフター内の第1の仮数をシフトして、第1のシフトした仮数を生成するステップと、
前記前記第2のパスの第2のシフター内の第1の仮数をシフトして、第2のシフトした仮数を生成するステップであって、前記第1のシフターは前記第2のシフターよりも大きい、生成するステップと、
前記第1のシフトした仮数及び前記第2のシフトした仮数から選択される仮数を選択するステップと、
前記選択した仮数を加算器/減算器の前記第2の浮動小数点数の第2の仮数に加算する又は前記第2の仮数から前記選した仮数を減算するステップと、
前記加算器/減算器からの結果を第3のパス及び第4のパスに送信するステップと、
前記第3のパスと前記第4のパスとの間の出力を選択するステップと、を含む、
方法。
【請求項16】
前記第1の浮動小数点数は、前記第2の浮動小数点数よりも小さい指数を有する、請求項15に記載の方法。
【請求項17】
正規化のためにどれくらいシフトするかを決定し、前記結果を前記第3のパスで正規化するステップを含む、請求項15又は16に記載の方法。
【請求項18】
前記結果を前記第4のパスの丸め処理回路で丸めるステップを含み、前記丸め処理回路は、前記結果を丸めた後に、前記結果を正規化するように構成された単一ビットシフトを含む、請求項15乃至17のいずれか一項に記載の方法。
【請求項19】
システムであって、当該システムは、
第1の浮動小数点数の第1の仮数を受け取るように構成された第1の入力部と、
第2の浮動小数点数の第2の仮数を受け取るように構成された第2の入力部と、
前記第1の仮数を第1のシフトされる仮数としてシフトするように構成された第1のシフターを有する第1のパスと、
前記第1の仮数を第2のシフトされる仮数としてシフトするように構成された第2のシフターを有する第2のパスであって、前記第2のシフターは前記第1のシフターよりも小さく、前記第2のシフターは単一ビットシフターを含む、第2のパスと、
前記第1のシフトした仮数と前記第2のシフトした仮数との間で選択し、選択した仮数を出力するように構成されたマルチプレクサと、
加算器/減算器であって、該加算器/減算器から前記選択した仮数を受け取るように構成された加算器/減算器と、
結果のビット値に基づいて前記加算器/減算器から前記結果をどれくらいシフトするかを決定し、該シフトを実行するように構成された第3のパスと、
前記加算器/減算器からの前記結果を丸めるように構成された第4のパスと、
前記第3のパスの前記結果及び前記第4のパスの前記結果から当該システムの出力を選択するように構成された出力マルチプレクサと、を含む、
システム。
【請求項20】
前記第3のパスは、前記結果の複数の入力を複数のレベルで結合して複数の出力ビットを生成するように構成された論理ツリー構造を使用して前記シフト及び決定を実行するように構成された結合回路を含む、請求項19に記載のシステム。
【請求項21】
システムであって、当該システムは、
第1の浮動小数点数を受け取るための手段と、
第2の浮動小数点数を受け取るための手段と、
前記第1の浮動小数点数の第1の仮数を第1のパス及び第2のパスに分割するための手段と、
前記第1のパスの第1のシフター内の前記第1の仮数をシフトして、第1のシフトした仮数を生成するための手段と、
前記第2のパスの第2のシフター内の前記第1の仮数をシフトして、第2のシフトした仮数を生成するための手段であって、前記第1のシフターは前記第2のシフターよりも大きい、生成するための手段と、
前記第1のシフトした仮数及び前記第2のシフトした仮数から選択される仮数を選択するための手段と、
前記選択した仮数を加算器/減算器の前記第2の浮動小数点数の第2の仮数に加算する又は該第2の仮数から前記選択した仮数を減算するための手段と、
前記加算器/減算器からの結果を第3のパス及び第4のパスに送信するための手段と、
前記第3のパスと前記第4のパスとの間で出力を選択するための手段と、を含む、
システム。
【請求項22】
前記第1の浮動小数点数は、前記第2の浮動小数点数よりも小さい指数を有する、請求項21に記載のシステム。
【請求項23】
正規化のためにどれくらいシフトするかを決定し、前記結果を第3のパスで正規化するための手段を含む、請求項21又は22に記載のシステム。
【請求項24】
前記結果を前記第4のパスの丸め処理回路で丸めるための手段を含み、前記丸め処理回路は、前記結果を丸めた後に、前記結果を正規化するように構成された単一ビットシフトを含む、請求項21乃至23のいずれか一項に記載のシステム。
【請求項25】
集積回路装置であって、当該集積回路装置は、
2つの浮動小数点数の間のサイズの差に少なくとも部分的に基づいて、前記2つの浮動小数点数に対して第1の演算を行う第1の回路パスと、
前記2つの浮動小数点数の間のサイズの前記差に少なくとも部分的に基づいて、前記2つの浮動小数点数に対して第2の演算を行う第2の回路パスと、
前記第1の回路パスと前記第2の回路パスとの間で共有される共有加算器であって、前記第1の回路パス及び前記第2の回路パスは互いに分岐して前記共有加算器に収束し、前記共有加算器は、第1のパス及び第2のパスが再び分岐する前に、前記第1の演算及び前記第2の演算に使用される、共有加算器と、
前記2つの浮動小数点数の指数同士の間の指数差を決定する比較器と、を含み、
第1のパスは、前記差が閾値未満である場合に、前記2つの浮動小数点数に対して前記第2の演算を行い、
前記第1の演算は、前記差が閾値以上である場合に減算を含む、
集積回路装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、浮動小数点演算を行うように設計された集積回路に関する。より具体的には、本開示は、効率的なデュアルパス浮動小数点演算子及び/又は浮動小数点演算子における効率的な先行ゼロカウント(count-leading zeros)回路の作製に関する。
【背景技術】
【0002】
集積回路装置は、強化した回路ベースの浮動小数点演算子を利用して、浮動小数点数に対して浮動小数点演算を行うことができる。浮動小数点演算子の数が集積回路装置内で増大するにつれて、浮動小数点演算子を実装する際の効率に対する要求が高まる可能性がある。例えば、以前の集積回路装置には数十から数百の浮動小数点演算子が含まれる可能性があるが、今後の集積回路装置の設計には数千又は数万の浮動小数点演算子が含まれる可能性がある。従って、以前の集積回路装置で適切であった効率のレベルは、浮動小数点演算子の数が増大するため、今後の装置ではあまり適切ではない可能性がある。
【0003】
この段落は、本開示の様々な態様に関連し得る従来技術の様々な態様を読者に紹介することを意図しており、それら本開示の様々な態様は以下に説明され及び/又は特許請求の範囲に記載される。この議論は、本開示の様々な態様のより良い理解を容易にするための背景情報を読者に提供するのに役立つと考えている。従って、これらの陳述は、先行技術の承認としてではなく、この観点から読むべきである。
【図面の簡単な説明】
【0004】
本開示の様々な態様は、以下の詳細な説明を読み、以下の図面を参照することにより、より良く理解され得る。
図1】本開示の一実施形態による、浮動小数点加算を実施するためのシステムのブロック図である。
図2】本開示の一実施形態による、浮動小数点加算器を実装することができる集積回路のブロック図である。
図3】本開示の一実施形態による、集積回路に実装され得る単一パス浮動小数点加算器のブロック図である。
図4】本開示の一実施形態による、集積回路に実装され得る1つのパスの専用の減算器を使用するデュアルパス浮動小数点加算器のブロック図である。
図5】本開示の一実施形態による、図3又は図4の浮動小数点加算器に実装され得る加算及び丸め処理回路のブロック図である。
図6】本開示の一実施形態による、図3又は図4の浮動小数点加算器に実装され得る単一ビットシフターを備えた加算及び丸め処理回路のブロック図である。
図7】本開示の一実施形態による、入力値を加算及び丸める複合加算器のブロック図である。
図8】本開示の一実施形態による、加算及び丸め処理を効率的に実施する加算器及び丸め処理回路のブロック図である。
図9】本開示の一実施形態による、デュアルパスを収束させて、専用の加算器又は減算器をいずれかのパスに含めずに、両方のパスに同じ加算器/減算器を使用するデュアルパス加算器のブロック図である。
図10】本開示の一実施形態による、図9のデュアルパス加算器のブロック図であり、図9のデュアルパス加算器の先行ゼロカウント回路及び正規化シフターを置き換える複合回路を含む。
図11】本開示の一実施形態による、図10の結合回路の対数構造である。
図12】本開示の一実施形態による、1つ又は複数の浮動小数点演算子を実装することができるデータ処理システムの図である。
【発明を実施するための形態】
【0005】
1つ又は複数の特定の実施形態について以下に説明する。これらの実施形態の簡潔な説明を与えるために、実際の実施態様の全ての特徴を本明細書に説明しているわけではない。エンジニアリング又は設計プロジェクトの場合と同様に、このような実際の実施態様の開発では、システム関連及びビジネス関連の制約に伴う準拠等、開発者の特定の目標を達成するために、実装固有の多数の決定を行う必要があることを理解でき、その目標は、実施態様毎に異なる場合がある。さらに、そのような開発努力は複雑で時間がかかり得るが、それにもかかわらず、本開示の利益を有する通常の技術者にとって、設計、製作、及び製造の日常的な作業であることが理解され得る。
【0006】
本開示の様々な実施形態の要素を導入する場合に、冠詞「1つの(a, an)」、及び「その(the)」は、1つ又は複数の要素が存在することを意味することを意図している。「含む、有する(including)」及び「有する、含む(having)」という用語は、包括的であることを意図しており、リストされた要素以外の追加の要素が存在し得ることを意味する。さらに、本開示の「いくつかの実施形態」、「実施形態」、「1つの実施形態」、又は「一実施形態」への言及は、列挙された特徴も組み込む追加の実施形態の存在を除外するものとして解釈されることを意図しないことを理解されたい。さらに、Bに「基づく」Aという句は、Aが少なくとも部分的にBに基づくことを意味することを意図する。さらに、「又は」という用語は、包括的(例えば、論理OR)であり、排他的(例えば、論理XOR)ではないことを意図する。換言すれば、A「又は」Bという句は、A、B、又はAとBとの両方を意味することを意図している。
【0007】
以下でさらに詳細に議論するように、本開示の実施形態は、一般に、浮動小数点演算子を有する論理回路に関する。浮動小数点演算子の数が集積回路(IC)装置内で増大するにつれて、浮動小数点演算子によって消費されるリソースは、浮動小数点演算子を実装する際の効率に対する要求を高める可能性がある。例えば、以前のIC装置には数十から数百の浮動小数点演算子が含まれる可能性があるが、今後のIC装置の設計には数千又は数万の浮動小数点演算子が含まれる可能性がある。このような効率を改善するための1つのメカニズムには、回路を合成するために使用される設計ツールの使用が含まれる場合があり、その回路には、演算される数の指数がかなりかけ離れている場合のファーパス(far path)と、数の指数が互いに近い場合のニアパス(near path)とを含む複数(例えば、10,000)の浮動小数点演算論理ユニット(ALU)が含まれ得る。ALUは、加算器/減算器を丸め演算から分離するファーパス加算器に適用される丸め(rounding:丸め処理)方法を使用することができる。ファーパス加算器/減算器は、ニアパス減算器としても使用でき、両方のパスの間で回路を再利用できる。さらに、ニアパスは、先行ゼロカウント機能をシフト(例えば、左シフト)と組み合わせて、より単純で、より速く、より小さな回路を作成する合成回路を含み得る。
【0008】
前述のことを念頭に置いて、図1は、効率的な仮数丸め処理技術を実装することができるシステム10のブロック図を示している。設計者は、集積回路装置12(フィールドプログラマブルゲートアレイ(FPGA)等のIC)上で浮動小数点数演算を含む機能を実装することを望む場合がある。設計者は、OpenCLプログラム等の実装される高レベルプログラムを指定することができ、このプログラムによって、設計者が、低レベルのハードウェア記述言語(例えば、Verilog又はVHDL等)の特定の知識を必要とせずに、集積回路装置12のためのプログラム可能な論理セルのセットを構成するためのプログラミング命令をより効率的且つ容易に提供するのを可能にする。例えば、OpenCLがC++等の他の高レベルプログラミング言語と非常に似ているため、そのようなプログラミング言語に精通しているプログラマブルロジックの設計者は、なじみのない低レベルのハードウェア記述言語を学習して新しい機能をICに実装する必要がある設計者よりも学習曲線が短くなる可能性がある。
【0009】
設計者は、インテル社によるインテル(登録商標)Quartus(登録商標)のバージョン等の設計ソフトウェア14を使用して、高レベルの設計を実装することができる。設計ソフトウェア14は、コンパイラ16を使用して、高レベルのプログラムを低レベルの記述に変換することができる。設計ソフトウェア14を使用して、設計の効率を最適化及び/又は向上させることもできる。コンパイラ16は、高レベルプログラムを表すマシン可読命令をホスト18及び集積回路装置12に提供することができる。ホスト18は、カーネルプログラム20によって実装され得るホストプログラム22を受け取ることができる。ホストプログラム22を実装するために、ホスト18は、命令をホストプログラム22から通信リンク24を介して集積回路装置12に通信することができ、これは、例えば、直接メモリアクセス(DMA)通信又は周辺コンポーネント相互接続エクスプレス(PCIe)通信であり得る。いくつかの実施形態では、カーネルプログラム20及びホスト18は、集積回路装置12上の浮動小数点算術回路26の構成を可能にし得る。浮動小数点算術回路26は、回路及び/又は他の論理要素を含み得、例えば、浮動小数点乗算、浮動小数点加算、丸め処理等を行うように構成された強化回路に浮動小数点算術ロジックを実装するため構成され得る。
【0010】
ここで、集積回路装置12のより詳細な議論に移る。図2は、フィールドプログラマブルゲートアレイ(FPGA)等のプログラム可能な論理装置であり得る集積回路装置12を示している。さらに、集積回路装置12は、任意の他の適切なタイプのプログラム可能な論理装置(例えば、特定用途向け集積回路及び/又は特定用途向け標準製品)であり得ることを理解されたい。示されるように、集積回路装置12は、装置から信号を駆動し、入力/出力ピン44を介して他の装置から信号を受け取るための入力/出力回路42を有し得る。グローバル及びローカルの垂直及び水平の導電線及びバス等の相互接続リソース46を使用して、集積回路装置12に信号をルーティングすることができる。さらに、相互接続リソース46は、固定相互接続(導電線)及びプログラム可能な相互接続(すなわち、それぞれの固定相互接続の間のプログラム可能な接続)を含み得る。プログラマブルロジック48は、組合せ論理回路及び順次論理回路を含み得る。例えば、プログラマブルロジック48は、ルックアップテーブル、レジスタ、及びマルチプレクサを含み得る。様々な実施形態において、プログラマブルロジック48は、カスタム論理関数を実行するように構成され得る。相互接続リソースに関連付けられたプログラマブル相互接続は、プログラマブルロジック48の一部であると見なすことができる。プログラマブルロジックは、異なる層のプログラム可能性の複数の様々なタイプのプログラマブルロジック48を含み得る。例えば、プログラマブルロジック48は、算術論理ユニット(ALU)等の様々な数学的論理ユニットを含み得、各ユニットが様々な数学的関数(例えば、浮動小数点算術計算)を実行するように構成される。
【0011】
前で議論したように、プログラマブルロジックは、浮動小数点ALU(FP ALU)等の比較的多数(例えば、数百、数千、数万等)のALUを含み得る。FP ALUは、様々なレベルの効率の様々な手法を使用して実装できる。本明細書に開示される合成方法を使用することにより、FP加算器は、より少ない待ち時間で物理的に小さな空間に実装され得る。具体的には、本明細書に開示するFP加算器は、分岐し、次に収束して、再び分岐する前にいくつかの回路を共有する別個のニアパス及びファーパスを利用することができる。追加的又は代替的に、合成アプローチを使用して、先行ゼロをクリアし、組み合わせたシフト先行ゼロ回路にシフトすることができる。
【0012】
これを念頭に置いて、図3は、FP加算器100の一実施形態の簡略化したブロック図である。FP加算器100は、2つ以上の浮動小数点数を受け取り、浮動小数点数を結合(例えば、加算又は減算)して結果を得る。各浮動小数点数には、符号(sign)、指数、及び仮数が含まれる。例えば、FP32番号では、FP32番号には、単一の符号ビット、8ビットの指数、及び23ビットの仮数が含まれる。FP加算器100では、浮動小数点数のこれらの別個の成分は、FP加算器100で受け取られる。例えば、FP加算器100は、マルチプレクサ106及び108で仮数102及び104を受け取る。
【0013】
マルチプレクサ106及び108は、比較器114における指数110と112との間の比較の結果に基づいて制御される。2つの浮動小数点数が、先行する1(leading one)を有する正規化した浮動点数として受け取られるので、その数のうちの1つ(例えば、小さい方の数)を非正規化して、2つの浮動小数点数を同じ指数に揃える(align)ことができる。こうして、比較器114は、より高い指数を有する数を選択し、対応する制御信号116をマルチプレクサ118に送信する。比較器114はまた、制御信号120及び122をマルチプレクサ106及び108に送信する。これらの制御信号120及び122を使用して、マルチプレクサ106及び108によって、FP加算器100が、より小さな数(例えば、より小さな指数)に対応する仮数124がマルチプレクサ108から送信され、より大きな数に対応する仮数126がマルチプレクサ106から送信されるのを保証するのを可能にする。従って、より大きな数の指数を基本指数(base exponent)として選択することができる。小さい数を大きい数の指数に揃える必要があり得るので、仮数124は、それぞれの指数の差に対応する数の場所だけシフター128内で右シフトされ得る。シフトした仮数130は、シフター128から出力される。シフトした仮数130及び仮数126は、入力浮動小数点数の符号及びFP加算器100の選択した演算(例えば、加算又は減算)に基づいて値を加算又は減算し得る加算器/減算器132に送信される。加算又は減算した後に、結果134は非正規化され得る。従って、先行ゼロカウント回路(CLZ)136を使用して、最初の1の前のゼロの数をカウントして、結果134が暗黙の先行1フォーマットで正規化するためにどれくらいシフトされるかを示す(例えば、IEEEE754FP)制御138を出力することができる。このようなシフトでは、FP加算器100は、加算器/減算器142を使用して基本指数140(例えば、より大きい数の指数)を加算又はこの基本指数140から減算して、出力指数144を生成する。加算器/減算器142で加算又は減算される数は、正規化した結果148を生成するために、シフター146によってどれくらいのシフトが結果146に適用されるかも示す。
【0014】
前に述べたように、図3は、FP加算器100の一実施形態の簡略化したブロック図を示している。実際に、追加の回路が、FP加算器100に含まれ得るが、簡素化するために図3から省略され得る。例えば、FP加算器100は、入力及び/又は出力に対して例外処理を利用することができる。FP加算器100は、加算器/減算器132の合計又は差の丸め処理等の内部関数を利用することもできる。丸め処理は、複雑であり得、FP加算器100の実際の実施態様に著しく影響を与える可能性がある。
【0015】
FP加算器100は、FP加算器100よりも高速且つ効率的に実行することができるデュアルパス実施態様を使用して実装することができる。具体的には、FP加算器100のクリティカルパスは、シフター128、加算器/減算器132、CLZ136、及びシフター146を含み得る。シフター128は、加算器/減算器132、及びCLZ136とシフター146との組合せと略同じサイズ及び速度であり得る。
【0016】
浮動小数点の加算/減算では、2つの一般的なケース:ニアケース(near case)及びファーケース(far case)が存在する。ニアケースでは、2つの入力数は、指数110及び112が互いに等しいか、又は閾値(例えば、1)以下の数だけ異なるという点で殆ど同じである。このため、シフター128は、ビットの最大閾値数(例えば、1)だけある方向(例えば、右)にシフトし得る。これらのニア(near)数値を差し引くと、結果が非常に小さくなる可能性があり、これは、大きなシフトが使用される可能性があることを意味する。例えば、1.5から1.4999を差し引くと、0.0001の結果は、正規化のために右に複数回シフトする。
【0017】
ファーケースでは、指数110及び112は、閾値数よりも大きく異なる。例えば、指数110及び112は、2以上異なる場合がある。ここで、シフター128の右シフトはおそらく大きいが、減算の結果は、正規化においてより少ないシフトを使用して正規化した範囲に近くなる。例えば、正規化シフト(例えば、左シフト)は、1ビット以下に制限され得る。
【0018】
ファーケースとニアケースとの両方において、加算は、正規化のために最大1ビットの右シフトをもたらす。これらの特性を使用して、FP加算器は、ニアケース減算のためのニアパスと、ファーケース加算及び減算のためのファーパスとに分割され得る。ニアケース加算とファーケース加算との両方が小さな加算後シフターを利用するため、ファーパスを使用してニアケース加算を処理することもできる。
【0019】
図4は、ファーパス164及びニアパス166を含むFP加算器160の実施形態の簡略化したブロック図を示している。ファーパス164とニアパス166との両方が仮数124、126を受け取り、ニアパス出力とファーパス出力との間で選択するように構成された出力マルチプレクサ167に送信されるそれぞれの出力をFP加算器160の出力として生成する。図示されるように、仮数124、126は、図3のFP加算器100に関連して前述したように生成される。同様に、シフター128及び加算器/減算器132は両方とも、シフター128及び加算器/減算器132がFP加算器160のファーパス164にあることを除いて、図3のFP加算器100に関して前述したように機能する。しかしながら、加算器/減算器132からの結果は、出力マルチプレクサ167に送信されるファーパス出力170を生成するために右又は左にシフトさせる単一ビットシフター168に送信される。単一ビットシフター168におけるシフトのサイズ(例えば、0又は1)及び方向は、加算器/減算器172に送信されて、基本指数140からファー指数174を生成する。ファーパス出力170が出力マルチプレクサ167によって選択される場合に、ファー指数は、ファーパス出力17と共に使用されて、浮動小数点出力を形成する。
【0020】
ニアパス166は、仮数124をシフター176で受け取り、シフター176は、仮数124を閾値数(例えば、1ビット)以下だけシフトして、仮数124を、シフトした仮数177としてより大きな数に揃える。シフトした仮数177は、減算器178において仮数126から減算されて、出力180を生成する。出力180は、CLZ136及びシフター146に送信されて、正規化した結果148及び出力指数144を生成する。CLZ136及びシフター146は、図3のFP加算器100に関連して説明したように機能する。出力マルチプレクサ167は、正規化した結果148及び出力指数144をニアケース減算のために選択する。
【0021】
ニアパス166とファーパス164との両方は、FP加算器100と比較して、FP加算器160内の追加のシフター(例えば、単一ビットシフター168及びシフター176)を利用する。しかしながら、これらのシフターは、完全精度(full precision:フルプレシジョン)シフター(シフター128及び146等)と比較して、面積及び待ち時間が小さい可能性がある。従って、クリティカルパスは、大きなシフター(例えば、シフター128及び146)、加算器、及び小さなシフターに縮小する。ニアパス166では、加算器は、丸め処理を利用しない減算器178としてのみ使用される。従って、減算器178は、ファーパス164の加算器/減算器132よりも小さい。FP加算器160の個々の構成要素のサイズは、FP加算器100よりも大きくなり得るが、タイミングクロージャが達成される現実の世界では、FP加算器160は、2つの別個のパスを合成して速度を上げることが容易であるため、より小さくすることができる。
【0022】
前述したように、減算器178は、減算の性質のために丸め処理を利用しない場合がある。しかしながら、ファーパス164内の加算器/減算器132は、加算後の丸め処理に対応するように丸め処理を利用することができる。図5は、加算及び丸め処理(rounding:丸め)回路200の簡略化したブロック図である。加算及び丸め処理回路200は、仮数126及びシフトした仮数130を受け取って、結果134を生成する加算器/減算器132を含む。加算及び丸め処理回路200はまた、1つ又は複数の入力203を受け取って、結果134がどのように丸められるかを制御する丸め値204を計算/生成する処理回路202を含む。入力203は、シフター128、単一ビットシフター168、及び/又は丸めるかどうか、及び丸め処理を適用する場所を選択する集積回路装置12内の他の場所から受け取ることができる。丸め値204は、加算器206内の結果134に加算され、結果134として単一ビットシフター168に送信される丸めた結果208が生成される。
【0023】
実際の実施態様では、複数のキャリー(carry:桁上げ)伝搬加算器(例えば、加算器/減算器132及び加算器206)を一緒に連鎖させることは、面積及び待ち時間の点で費用がかかる可能性がある。図6に示されるように、加算及び丸め処理回路210において、このコストは、加算器/減算器132と加算器206との間のシフター212における左又は右シフトとして実現される丸め点によってさらに複雑になり得る。この加算及び丸め処理回路210は、加算器/減算器132、シフター212における丸め点選択、処理回路202における丸め値計算、及び加算器206を単一レベルの論理に結合する単一の複合加算器に結合することができる。
【0024】
図7は、複合加算器218の実施形態の簡略化したブロック図である。複合加算器218では、入力オペランド(例えば、仮数126及び130のビット)が、中間信号222を計算するために、それぞれのXORゲート220に送信される。入力オペランドは、それぞれの生成信号226を計算するために、それぞれのANDゲート224にも送信される。入力オペランドは、伝搬信号230を計算するために、それぞれのORゲート228にも送信される。生成信号226及び伝搬信号230は、並列プレフィックス回路232に送信され、並列プレフィックス回路232は、生成信号226及び伝搬信号230を使用して、それぞれのキャリー(桁上げ)信号236を計算する。キャリー信号の計算は、丸め処理回路ノード234を使用して実行され得る。いくつかの実施形態では、並列プレフィックス回路232のプレフィックスツリーは、Brent-Kungネットワーク又はKogge-Stoneネットワーク等のトポロジーを含み得る。いくつかの実施形態では、追加の層が、プレフィックスネットワークに続いて、フラグ付きプレフィックス加算器として知られる構造を実装することができる。換言すれば、丸め処理回路ノード234は、計算したキャリー信号237を生成するために、並列プレフィックス回路232の複数の層にいくつかの層を追加する。計算したキャリー信号237及びそれぞれの中間信号222は、それぞれのXORゲート238に送信されて、出力信号240を生成する。
【0025】
前述の回路の組合せは、複雑なネットワークで解決することができる。以下で議論するように、ニアパス166及びファーパス164の重複部分を組み合わせて、そのようなネットワークを単純化し、効率を高め、及び/又は待ち時間を短くすることができる。
【0026】
図8は、加算及び丸め処理回路250に丸め機能を埋め込むための代替の実施形態を示している。加算及び丸め処理回路250は、加算器/減算器132、処理回路202、並列プレフィックス回路232、及びXORゲート238を含む。しかしながら、並列プレフィックス回路232の出力をシフトするのではなく、マルチプレクサ252を使用して、丸めビット(例えば、丸め値204)を並列プレフィックス回路232の1つ又は複数の最下位ビットの上にある結果134と多重化することができ、その最下位ビットは、結果134を丸め値204と論理和する1つ又は複数のORゲート254を使用して強制High(ハイ;高い)伝搬ビットを有する。Highに強制された伝搬ビットは、結果134から丸められたビットに対応する。
【0027】
丸め処理が、並列プレフィックス回路232の最下位ビットの特定の数(例えば、3)に対してのみ実行されるので、加算及び丸め処理回路250は、比較的安価である。ビットが並列プレフィックス回路232から伝搬する場合に、丸め処理によるオーバーフロー256が発生し、基本指数が1だけ調整される。従って、シフター212は、必要に応じて、性能を損なうことなく、又は面積を増大させることなく、XORゲート238の後に配置され得る。並列プレフィックス回路232を使用するマルチプレクサ及びORゲートベースの丸め処理に関する追加の詳細は、2020年12月24日に出願された、“Rounding Circuitry for Floating-Point Mantissas”という表題の米国特許出願第17/133,861号に見出すことができ、この文献は、その全体があらゆる目的のために組み込まれる。
【0028】
前述したように、シフター212における丸めシフトは、加算及び丸め処理回路250の終了時及び/又は加算後にファーパス164において実行され得る。これにより、図9に示されるFP加算器270の構築が可能になり、ここで、ファーパス272及びニアパス274は、別個の部分を有するが、単一の2:1マルチプレクサ276のコストに関する加算器/減算器132を共有する。丸め処理回路277が、ファーパス272がニアパス274とは別個であり且つ加算器/減算器132とは別個である部分に実装され得るため、単純な加算器機能が、複合加算器218の全てを使用せずに直接アクセスすることができるので、加算器/減算器132は、ファーパス272とニアパス274との間で共有され得る。加算器/減算器132の丸め処理回路277からのこの分離は、複合加算器218よりも面積又は待ち時間を増大させることなく実施することができる。唯一の増大には、単一の2:1マルチプレクサ276が含まれる。しかしながら、単一の2:1マルチプレクサ276による増大は、ニアパス166で使用される別個の減算器178を省略することによって、依然として面積を節約することができる。
【0029】
FP加算器270は、FP加算器100及び160に関連して使用されるのと同じ技術を使用して、仮数126及び仮数124を導出する。ニアケースの2つの浮動小数点数が受け取られると、ニアパス272において、より小さい数に対応する仮数124は、シフター278内でシフトされ得る。シフター278は、仮数124を閾値数(例えば、1ビット)以下だけシフトして、仮数124を、シフトした仮数280としてより大きい数に正規化する。例えば、ニアケースに同じ指数に対応する仮数124及び126が含まれる場合に、シフトした仮数280は仮数124からシフト解除(unshifted)される。シフトした仮数280は、ファーパス274のために、シフトした仮数130とともに単一の2:1マルチプレクサ276に送信される。単一の2:1マルチプレクサ276は、シフトした仮数130とシフトした仮数280との間で、選択した仮数282として選択する。選択した仮数282は、入来データがニアケースであるかファーケースであるかに関係なく、加算器/減算器132内の仮数126に加算される、又は仮数126から減算される。
【0030】
ニアケースでは、加算器/減算器132からの結果284がCLZ136に送信され、ニアパス274は、FP加算器100が結果134から正規化結果148を生成する方法と同様に、正規化結果148を生成するために結果284を処理することを含む。理解され得るように、CLZ136及びシフター146は、衒学的な(pedantic)実装であり得る。実際の実装では、この計算を分割して遅延を最適化するために、はるかに複雑な設計が行われる場合がある。例えば、CLZ136は、先行ゼロ予測子(加算器/減算器132への2つの入力に基づいてシフトをかなり正確に推測する)と、それに続くCLZ136が微調整される微調整との2つの部分で構成され得る。これにより、CLZ136の複雑な計算部分を加算器と並行して実行しながら、微調整をCLZ136の他の部分よりもはるかに小さく(そして高速に)行うことができる。
【0031】
丸め処理を利用するファーケースでは、結果284は、丸め及び/又は正規化のために丸め処理回路277に送られ、ファーパス出力170を生成する。丸め処理が利用されない場合に、ファーパス出力170は、丸め処理回路277の正規化あり又はなしの結果284と同じである。
【0032】
図示のように、シフター146を使用するニアパス274の正規化シフトは、シフター128におけるファーパス272の非正規化シフトよりも複雑である。これは、CLZ136が正規化シフト量を決定するために使用されるために当てはまる。任意の適切なCLZ136実装をFP加算器270で使用することができる。しかしながら、いくつかの実施形態では、CLZ136及びシフター146は、単一の論理ユニットに結合することができる。例えば、図10は、結合回路302を使用してCLZ136及びシフター146を置き換えて正規化結果148を生成することができるという点を除いて、FP加算器260と同一のFP加算器300を示している。別個のCLZ136及びシフター146を別々に使用する代わりに、正規化した結果148は、両方の回路の結果を全体的に調べることによって決定することができる。例えば、CLZ136及びシフター146の動作は、IF‐THEN‐ELSEチェーンとして説明することができる。CLZ136が第1のビットが1であると判定した場合に、シフトは発生せず、シフトの判定は後続のビット位置で行われない。CLZ136が、第2のビットが第1のビットの0に続く1を有すると判定した場合に、単一の左シフトが発生し、シフトの判定は後続のビット位置で行われない。IF‐THEN‐ELSEチェーンも同様に、先頭の1が見つかるまで(複数の)ビットを介して続行できる。仮数が23ビットのFP32番号に対してこのようなステートメントを使用すると、条件は次のように記述できる。
near(23)=!near(23)ANDnear(22)=!near(23)AND!near(22)ANDnear(21)=!near(23)AND!near(22)AND!near(21)AND!near(20)AND!near(19)AND!near(18)ANDnear(17) (式1)、
ここで、near(i)はシフトする量及びシフトを実行する量を示し、ANDはブール(Boolean)ANDであり、!near(i)はnear(i)の補集合を示す。式1を使用すると、各条件を再帰的に抽出することができる。例えば、再帰的な条件には次のものが含まれる。
f_a=!near(23)AND!near(22)AND!near(21)AND!near(20)AND!near(19) (式2)
near(17)=f_aANDnear(18) (式3)
near(16)=f_aAND!near(18)ANDnear(17) (式4)
near(15)=f_aAND!near(18)AND!near(17)ANDnear(16) (式5)。
【0033】
これらの関数を使用すると、シフトの各レベルを同じ大きさで処理でき、出力の全てのビットの複雑さが異なる場合がある。このような方程式は、OR及び/又はANDゲートを使用して実装できる。しかしながら、これらの構造は、電子設計支援ツールを使用して論理再構築を通じてより高速な対数構造に変換して、結合回路302内に回路を形成することができる。論理再構成の結果は、以下を含み得る。
【数1】
【0034】
図11は、CLZをマージする構造310の一実施形態であり、正規化シフトは、論理再構成後にFP32加算器のビット21の結合回路302に実装され得る。図示されるように、構造310は、入力ビット312を受け取り、図示のようにレベル314、316、318、320、322、及び324の入力ビット312を結合して、CLZ及び正規化シフトを含む出力326を生成する。構造の記述は手動で再帰呼び出しすることができ、特に大規模なシステムの一部である場合に、合成中に異なる結果が得られる可能性がある。さらに、前述は23ビットの仮数を有するFP32について言及しているが、同様の手法を異なるサイズの仮数を有する他の浮動小数点フォーマットに適用することができる。従って、この結合回路302を使用することにより、CLZ136及びシフター146のサイズを縮小し、別個のCLZ136及びシフター136を有する実装よりも効率を高めることができる。
【0035】
さらに、FP加算器300の図示の実施形態が、共有加算器/減算器132及び結合回路302を備えたデュアルパス技術を含むが、浮動小数点演算子のいくつかの実施形態は、本明細書で使用されるデュアルパス技術を配備することができる一方、他の実施形態は、デュアルパス技術なしで結合回路302を配備することができる。
【0036】
集積回路装置12は、図12に示されるデータ処理システム350等のデータ処理システムであり得るか、又はその構成要素であり得る。データ処理システム350は、ホストプロセッサ352、メモリ及び/又はストレージ回路354、及びネットワークインターフェイス356を含み得る。データ処理システム350は、より多くの又はより少ない構成要素(例えば、電子ディスプレイ、ユーザインターフェイス構造、又はASIC)を含み得る。ホストプロセッサ352は、INTEL(登録商標)Xeon(登録商標)プロセッサ又は縮小命令プロセッサ(例えば、縮小命令セットコンピュータ(RISC)、又は高度RISCマシン(ARM)プロセッサ)等の任意の適切なプロセッサを含み得、このプロセッサは、(例えば、機械学習、ビデオ処理、音声認識、画像認識、データ圧縮、データベース検索ランキング、バイオインフォマティクス、ネットワークセキュリティパターン識別、空間ナビゲーション等を実行するために)データ処理システム350のデータ処理要求を管理することができる。メモリ及び/又はストレージ回路354は、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、1つ又は複数のハードドライブ、フラッシュメモリ等を含み得る。メモリ及び/又はストレージ回路354は、データ処理システム350によって処理されるデータを保持することができる。場合によっては、メモリ及び/又はストレージ回路304は、集積回路装置12をプログラミングするための構成プログラム(ビットストリーム)も記憶することができる。ネットワークインターフェイス356によって、データ処理システム350が他の電子装置と通信することが可能になり得る。データ処理システム350は、いくつかの異なるパッケージを含み得るか、又は単一のパッケージ基板上の単一のパッケージ内に含まれ得る。
【0037】
一例では、データ処理システム350は、様々な異なる要求を処理するデータセンターの一部であり得る。例えば、データ処理システム350は、機械学習、ビデオ処理、音声認識、画像認識、データ圧縮、データベース検索ランキング、バイオインフォマティクス、ネットワークセキュリティパターン識別、空間ナビゲーション、又は他の特殊なタスクを実行するために、ネットワークインターフェイス356を介してデータ処理要求を受け取ることができる。ホストプロセッサ352は、集積回路装置12のプログラム可能な論理ファブリックを、要求したタスクを実施するのに適した乗算器でプログラムさせることができる。例えば、ホストプロセッサ352は、メモリ及び/又はストレージ回路354に格納された構成データ(ビットストリーム)が、集積回路装置12のプログラム可能な論理ファブリックにプログラムされるように指示することができる。構成データ(ビットストリーム)は、1つ又は複数の浮動小数点乗算器のセットのための回路設計を表し得、これは、本明細書で説明する技術に従って、プログラマブルロジックにマッピングされ、一緒にパックされ得る。
【0038】
本明細書に提示される及び特許請求の範囲に記載される技術は、現在の技術分野を明らかに改善し、そのため、抽象的、無形、又は純粋に理論的ではない、実用的な性質の材料物体及び具体例に参照及び適用される。さらに、本明細書の末尾に添付された特許請求の範囲に、「・・・[機能]を[実行]するための手段」又は「・・・[機能]を[実行]するためのステップ」として指定された1つ又は複数の要素が含まれる場合に、それは、そのような要素が米国特許法112条(f)の下で解釈すべきであることを意図している。しかしながら、他の方法で指定された要素を含む請求項については、そのような要素が米国特許法112条(f)に基づいて解釈すべきでないことを意図している。
【0039】
本開示に記載した実施形態は、様々な修正及び代替形態の影響を受け易い可能性があるが、特定の実施形態は、例として図面に示され、本明細書に詳細に説明している。しかしながら、本開示は、開示した特定の形態に限定されることを意図していないことが理解され得る。本開示は、以下の添付の例示的な実施形態によって規定されるように、本開示の精神及び範囲内にある全ての修正、均等物、及び代替物を網羅するだろう。
【0040】
開示の実施例
【0041】
以下の番号が付けられた項(節)は、本開示の特定の例示的な実施形態を規定する。
【0042】
例示的な実施形態1
システムであって、このシステムは、
2つの浮動小数点数を受け取る浮動小数点算術回路を含み、
浮動小数点算術回路は、
2つの浮動小数点数の間のサイズの差に少なくとも部分的に基づいて、2つの浮動小数点数に対して第1の演算を行う第1のパスと、
2つの浮動小数点数の間のサイズの差に少なくとも部分的に基づいて、2つの浮動小数点数に対して第2の演算を行う第2のパスと、を含み、
第1のパス及び第2のパスは、互いに分岐して、第1のパス及び第2のパスが再び分岐する前に、第1の演算及び第2の演算に使用される共有加算器に収束する。
【0043】
例示的な実施形態2
2つの浮動小数点数の指数同士の間の指数差を決定する比較器を含み、差が閾値未満である場合に、第1のパスは、2つの浮動小数点数に対して第2の演算を行う、例示的な実施形態1のシステム。
【0044】
例示的な実施形態3
第1の演算は、差が閾値以上である場合に減算を含む、例示的な実施形態2のシステム。
【0045】
例示的な実施形態4
第1の演算は、差が閾値以上である場合に加算を含む、例示的な実施形態2のシステム。
【0046】
例示的な実施形態5
第1の演算は、差が閾値未満である場合に加算を含む、例示的な実施形態2のシステム。
【0047】
例示的な実施形態6
第2の演算は、差が閾値未満である場合に減算を含む、例示的な実施形態2のシステム。
【0048】
例示的な実施形態7
閾値は、2を含む、例示的な実施形態2のシステム。
【0049】
例示的な実施形態8
第1のシフトした仮数を第1のパスから共有加算器に送信することと、第2のシフトした仮数を第2のパスから共有加算器に送信することとの間で選択するマルチプレクサを含む、例示的な実施形態1のシステム。
【0050】
例示的な実施形態9
第1のパスは、第1のシフトした仮数を生成するマルチビットシフターを含む、例示的な実施形態8のシステム。
【0051】
例示的な実施形態10
第2のパスは、第2のシフトした仮数を生成する単一ビットシフターを含む、例示的な実施形態8のシステム。
【0052】
例示的な実施形態11
第2のパスは、
共有加算器から結果を受け取り、結果の先行ゼロ(leading zero)の数をカウントする先行ゼロカウント回路と、
結果をシフトして、先行ゼロの数に少なくとも部分的に基づいて正規化した出力を生成する正規化シフターと、を含む、例示的な実施形態1のシステム。
【0053】
例示的な実施形態12
第2のパスは、シフト検出を実行し、対数構造に従って複数の入力ビットを結合する複数のレベルを使用して共有加算器による(from)結果からの複数の入力ビットを結合することによってシフトを適用する結合回路を含む、例示的な実施形態1のシステム。
【0054】
例示的な実施形態13
第1のパスは、共有加算器から結果を受け取り、結果を丸める丸め処理及び加算回路を含む、例示的な実施形態1のシステム。
【0055】
例示的な実施形態14
丸め処理及び加算回路は、
結果を受け取る並列プレフィックス回路と、
並列プレフィックス回路の丸めビット(rounding bit)で丸め処理を制御するマルチプレクサと、
丸めビットの位置に基づいて、並列プレフィックス回路の伝搬ビットをHigh(ハイ;高)にさせるORゲートと、
並列プレフィックス回路の出力を左又は右に1ビットだけシフトする出力マルチプレクサと、を含む、例示的な実施形態13のシステム。
【0056】
例示的な実施形態15
方法であって、この方法は、
第1の浮動小数点数を受け取るステップと、
第2の浮動小数点数を受け取るステップと、
第1の浮動小数点数の第1の仮数を第1のパス及び第2のパスに分割するステップと、
第1のパスの第1のシフター内の第1の仮数をシフトして、第1のシフトした仮数を生成するステップと、
第2のパスの第2のシフター内の第1の仮数をシフトして、第2のシフトした仮数を生成するステップであって、第1のシフターは第2のシフターよりも大きい、生成するステップと、
第1のシフトした仮数及び第2のシフトした仮数から選択される仮数を選択するステップと、
選択した仮数を加算器/減算器の第2の浮動小数点数の第2の仮数に加算する又は第2の仮数から選択した仮数を減算するステップと、
加算器/減算器からの結果を第3のパス及び第4のパスに送信するステップと、
第3のパスと第4のパスとの間の出力を選択するステップと、を含む。
【0057】
例示的な実施形態16
第1の浮動小数点数は、第2の浮動小数点数よりも小さい指数を有する、例示的な実施形態15の方法。
【0058】
例示的な実施形態17
正規化のためにどれくらいシフトするか(正規化のためのシフト量)を決定し、結果を第3のパスで正規化するステップを含む、例示的な実施形態15の方法。
【0059】
例示的な実施形態18
結果を第4のパスの丸め処理回路で丸めるステップを含み、丸め処理回路は、結果を丸めた後に、結果を正規化するように構成された単一ビットシフトを含む、例示的な実施形態15の方法。
【0060】
例示的な実施形態19
システムであって、このシステムは、
第1の浮動小数点数の第1の仮数を受け取るように構成された第1の入力部と、
第2の浮動小数点数の第2の仮数を受け取るように構成された第2の入力部と、
第1の仮数を第1のシフトされる仮数としてシフトするように構成された第1のシフターを有する第1のパスと、
第1の仮数を第2のシフトされる仮数としてシフトするように構成された第2のシフターを有する第2のパスであって、第2のシフターは第1のシフターよりも小さく、第2のシフターは単一ビットシフターを含む、第2のパスと、
第1のシフトした仮数と第2のシフトした仮数との間で選択し、選択した仮数を出力するように構成されたマルチプレクサと、
加算器/減算器であって、加算器/減算器から選択した仮数を受け取るように構成された加算器/減算器と、
結果のビット値に基づいて加算器/減算器から結果をどれくらいシフトするか(結果のシフト量)を決定し、シフトを実行するように構成された第3のパスと、
加算器/減算器からの結果を丸めるように構成された第4のパスと、
第3のパスの結果及び第4のパスの結果からシステムの出力を選択するように構成された出力マルチプレクサと、を含む。
【0061】
例示的な実施形態20
第3のパスは、結果の複数の入力を複数のレベルで結合して複数の出力ビットを生成するように構成された論理ツリー構造を使用してシフト及び決定を実行するように構成された結合回路を含む、例示的な実施形態19のシステム。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
【外国語明細書】