特許第6979076号(P6979076)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許6979076回路、システム、および組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備えたプロセッサにより実装される方法
<>
  • 特許6979076-回路、システム、および組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備えたプロセッサにより実装される方法 図000002
  • 特許6979076-回路、システム、および組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備えたプロセッサにより実装される方法 図000003
  • 特許6979076-回路、システム、および組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備えたプロセッサにより実装される方法 図000004
  • 特許6979076-回路、システム、および組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備えたプロセッサにより実装される方法 図000005
  • 特許6979076-回路、システム、および組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備えたプロセッサにより実装される方法 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6979076
(24)【登録日】2021年11月16日
(45)【発行日】2021年12月8日
(54)【発明の名称】回路、システム、および組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備えたプロセッサにより実装される方法
(51)【国際特許分類】
   G06F 7/57 20060101AFI20211125BHJP
   G06F 15/80 20060101ALI20211125BHJP
   G06F 9/38 20060101ALI20211125BHJP
【FI】
   G06F7/57 204
   G06F15/80
   G06F9/38 370C
   G06F9/38 370A
【請求項の数】20
【全頁数】13
(21)【出願番号】特願2019-538506(P2019-538506)
(86)(22)【出願日】2018年1月8日
(65)【公表番号】特表2020-507154(P2020-507154A)
(43)【公表日】2020年3月5日
(86)【国際出願番号】IB2018050102
(87)【国際公開番号】WO2018134694
(87)【国際公開日】20180726
【審査請求日】2020年7月22日
(31)【優先権主張番号】15/412,429
(32)【優先日】2017年1月23日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】リヒテナウ、セドリック
(72)【発明者】
【氏名】クライン、マイケル
(72)【発明者】
【氏名】ホフマン、ニコル
【審査官】 佐賀野 秀一
(56)【参考文献】
【文献】 米国特許第08725990(US,B1)
【文献】 特表2002−544587(JP,A)
【文献】 特開2010−086547(JP,A)
【文献】 米国特許出願公開第2014/0089371(US,A1)
【文献】 特開2008−250471(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 5/01
G06F 7/38− 7/537
G06F 7/57− 7/575
G06F 7/74− 7/78
G06F 9/38
G06F 15/80
(57)【特許請求の範囲】
【請求項1】
組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備え、
前記複数の再設定可能ユニットのうちの第1の再設定可能ユニットの第1の中間結果が、前記複数の再設定可能ユニットのうちの第2の再設定可能ユニットの第2の中間結果と交換され、
前記複数の再設定可能ユニットのうちの前記第1の再設定可能ユニットが、前記第2の中間結果を利用して前記組合せ結果の第1の部分を演算し、
前記複数の再設定可能ユニットのうちの前記第2の再設定可能ユニットが、前記第1の中間結果を利用して前記組合せ結果の第2の部分を演算する、回路。
【請求項2】
各再設定可能ユニットが、個々の結果を演算するように再設定可能である、請求項1に記載の回路。
【請求項3】
各再設定可能ユニットが、再設定可能低精度演算ユニットを備えた、請求項1に記載の回路。
【請求項4】
各再設定可能ユニットが、乗算・加算演算回路を備えた、請求項3に記載の回路。
【請求項5】
前記乗算・加算演算回路が、乗算器、第1の加算器、フォーマッタ、および第2の加算器を備えた、請求項4に記載の回路。
【請求項6】
前記第1の中間結果および前記第2の中間結果の前記交換が、前記第1の再設定可能ユニットからの上位xビットおよび前記第2の再設定可能ユニットからの下位xビットの提供を含む、請求項1に記載の回路。
【請求項7】
前記複数の再設定可能ユニットが、xビット数の複数回の乗算を演算し、2*xビットの結果を合計して前記組合せ結果を生成するように再設定可能である、請求項1に記載の回路。
【請求項8】
各再設定可能ユニットが、2*xビットの累算器結果を前記組合せ結果に加算するように再設定可能である、請求項7に記載の回路。
【請求項9】
前記複数の再設定可能ユニットのうちの4つの再設定可能ユニットから成る群が、乗算演算および加算演算を含む4つの1倍精度、2つの2倍精度、または1つの4倍精度の複雑な算術演算の実行を提供する、請求項1に記載の回路。
【請求項10】
プロセッサおよびメモリを備え、
前記プロセッサが、組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備え、
前記複数の再設定可能ユニットのうちの第1の再設定可能ユニットの第1の中間結果が、前記複数の再設定可能ユニットのうちの第2の再設定可能ユニットの第2の中間結果と交換され、
前記複数の再設定可能ユニットのうちの前記第1の再設定可能ユニットが、前記第2の中間結果を利用して前記組合せ結果の第1の部分を演算し、
前記複数の再設定可能ユニットのうちの前記第2の再設定可能ユニットが、前記第1の中間結果を利用して前記組合せ結果の第2の部分を演算する、システム。
【請求項11】
各再設定可能ユニットが、個々の結果を演算するように再設定可能である、請求項10に記載のシステム。
【請求項12】
各再設定可能ユニットが、再設定可能低精度演算ユニットを備えた、請求項11に記載のシステム。
【請求項13】
各再設定可能ユニットが、乗算・加算演算回路を備えた、請求項12に記載のシステム。
【請求項14】
前記乗算・加算演算回路が、乗算器、第1の加算器、フォーマッタ、および第2の加算器を備えた、請求項13に記載のシステム。
【請求項15】
前記第1の中間結果および前記第2の中間結果の前記交換が、前記第1の再設定可能ユニットからの上位xビットおよび前記第2の再設定可能ユニットからの下位xビットの提供を含む、請求項10に記載のシステム。
【請求項16】
前記複数の再設定可能ユニットが、xビット数の複数回の乗算を演算し、2*xビットの結果を合計して前記組合せ結果を生成するように再設定可能である、請求項10に記載のシステム。
【請求項17】
各再設定可能ユニットが、2*xビットの累算器結果を前記組合せ結果に加算するように再設定可能である、請求項16に記載のシステム。
【請求項18】
組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備えたプロセッサにより実装される方法であって、
再設定可能な前記複数の再設定可能ユニットのうちの第1の再設定可能ユニットの第1の中間結果を、再設定可能な前記複数の再設定可能ユニットのうちの第2の再設定可能ユニットの第2の中間結果と交換することと、
前記複数の再設定可能ユニットのうちの前記第1の再設定可能ユニットにより、前記第2の中間結果を利用して前記組合せ結果の第1の部分を演算することと、
前記複数の再設定可能ユニットのうちの前記第2の再設定可能ユニットにより、前記第1の中間結果を利用して前記組合せ結果の第2の部分を演算することと、
を含む、方法。
【請求項19】
各再設定可能ユニットが、個々の結果を演算するように再設定可能である、請求項18に記載の方法。
【請求項20】
各再設定可能ユニットが、再設定可能低精度演算ユニットを備えた、請求項19に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概してプロセッサ演算設計に関し、より詳細には、実行ユニットを組み合わせて単一の広いスカラー結果を演算することに関する。
【背景技術】
【0002】
現代のチップ/コア設計では、コグニティブ・コンピューティングのように、新たに発生するワークロードを処理することができる。ただし、これらの発生するワークロードには、取り組む問題に基づいて、要件が変動する非常に大きな演算能力が必要であり、この演算は、大規模な短精度計算と高精度計算との間で変動する。要件が変動することにより、「フリーサイズ」のユニットを構築する場合に、現代のチップ/コア設計が難しくなる。このような難しさとしては、所望の低精度スループットをもたらさない少数の高精度ユニットと複雑な高精度演算を行うのにソフトウェア・オーバヘッドを要する多数の低精度ユニットとを両立させることが挙げられる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
従って本発明が解決しようとする課題は、複数の実行ユニットの組合せによる単一の広いスカラー結果の演算を行う回路、システム、および方法を提供することである。
【課題を解決するための手段】
【0004】
1つまたは複数の実施形態によれば、回路が提供される。この回路は、組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備える。複数の再設定可能ユニットのうちの第1の再設定可能ユニットの第1の中間結果が、複数の再設定可能ユニットのうちの第2の再設定可能ユニットの第2の中間結果と交換される。複数の再設定可能ユニットのうちの第1の再設定可能ユニットは、第2の中間結果を利用して組合せ結果の第1の部分を演算する。複数の再設定可能ユニットのうちの第2の再設定可能ユニットは、第1の中間結果を利用して組合せ結果の第2の部分を演算する。
【0005】
1つまたは複数の実施形態によれば、システムが提供される。このシステムは、プロセッサおよびメモリを備える。プロセッサは、組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備える。複数の再設定可能ユニットのうちの第1の再設定可能ユニットの第1の中間結果が、複数の再設定可能ユニットのうちの第2の再設定可能ユニットの第2の中間結果と交換される。複数の再設定可能ユニットのうちの第1の再設定可能ユニットは、第2の中間結果を利用して組合せ結果の第1の部分を演算する。複数の再設定可能ユニットのうちの第2の再設定可能ユニットは、第1の中間結果を利用して組合せ結果の第2の部分を演算する。
【0006】
1つまたは複数の実施形態によれば、方法が提供される。この方法は、組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備えたプロセッサにより実装される。この方法は、再設定可能な複数の再設定可能ユニットのうちの第1の再設定可能ユニットの第1の中間結果を、再設定可能な複数の再設定可能ユニットのうちの第2の再設定可能ユニット交換の第2の中間結果と交換することを含む。この方法は、複数の再設定可能ユニットのうちの第1の再設定可能ユニットにより、第2の中間結果を利用して組合せ結果の第1の部分を演算することと、複数の再設定可能ユニットのうちの第2の再設定可能ユニットにより、第1の中間結果を利用して組合せ結果の第2の部分を演算することと、を含む。
【0007】
本明細書の最後の特許請求の範囲において、主題を詳細に挙げるとともに明確に請求する。本明細書の実施形態の上記および他の特徴および利点については、添付の図面と併せた以下の詳細な説明によって明らかとなる。
【図面の簡単な説明】
【0008】
図1】1つまたは複数の実施形態に係るシステムを示した図である。
図2】1つまたは複数の実施形態に係るシステムの一実装例を示した図である。
図3】1つまたは複数の実施形態に係るシステムのプロセス・フローを示した図である。
図4】1つまたは複数の実施形態に係るシステムの一実装例を示した図である。
図5】1つまたは複数の実施形態に係るシステムを示した図である。
【発明を実施するための形態】
【0009】
一般的に、並列コンピューティングは、大きな問題を解決するために多くの計算またはプロセス、あるいはその両方が同時に実行される種類の演算である。大きな問題の例としては、天の川銀河のモデリング、コグニティブ・コンピューティング・モデルの構築およびトレーニング、がん研究の計算の実装、3次元アニメーションのレンダリング等が挙げられる。並列コンピューティングでは、大きな問題を分割して、後で同時に解決できる小さな計算とする。問題(および、アルゴリズム)に基づいて、低精度演算、高精度演算、または両者の混合が必要となる。並列コンピューティングには複数の異なる形態(たとえば、現代のチップ/コア設計)が存在し、それぞれに欠点がある。
【0010】
たとえば、シリコン・エリア上でパワーが増大するモバイル機器において使用される現代のシステム・オン・チップ大型/小型コア設計は、チップが特定の物理的サイズを超えられないことでエリアが同じく注目される高性能のサーバ・チップには適していない。グラフィックス処理ユニットとインターフェースして多数の低精度演算コアを提供し得る現代の高精度コア・チップもまた、これらの低精度コアと現代の高精度コア・チップとの間の相対的な「距離」(単位:サイクル)および帯域幅に関して、大きな性能ペナルティをもたらす。高性能コア・チップへの別のアプローチでは、可能な限り多くのコアに適合するように、コア上の高精度演算ユニットのサイズを最小限に抑えようとする。これでもなお、高精度演算要件と低精度演算要件とを両立させる問題は基本的に解決されない。
【0011】
ここで、本発明の態様の概説に移って、本明細書に開示の実施形態には、シングル・インストラクション・マルチプル・データ(SIMD)ユニットを組み合わせて、SIMDユニット間で部分的結果を交換することにより単一の高精度で複雑な算術演算を実行するシステム、方法、またはコンピュータ・プログラム製品(本明細書においては、システム)、あるいはその組合せを含んでいてもよい。SIMDユニットは、複数のデータ・ポイントで同じ演算を同時に実行可能な複数の処理要素を備える。このシステムの技術的効果および利点として、(高精度乗算・加算のような)高精度の複雑な演算を行う容量を依然として保ちつつ、範囲外の市場向けの高効率小型低精度ブロックの構築が可能である。このシステムの技術的効果および利点として、SIMDユニットのパイプライン化による如何なる結果的な配線オーバヘッドまたは遅延、あるいはその両方も制限・秘匿可能である。このため、本明細書に記載の実施形態は必然的に、事前演算を実行することにより、プロセッサ演算設計の領域で具体的に起こる問題を克服するシステムのプロセッサに基づく(たとえば、これらの問題には、非常に大きな演算精度の要件が変動することを考慮して、少数の高精度ユニットと多数の低精度ユニットとを平衡させることを含む)。
【0012】
ここで、図1を参照して、システム100は、n個の小型低精度xビット・ユニット(SIMDユニット120.0・・・120.n−1(nは、ゼロより大きな整数))を組み合わせて、n個の小型低精度xビット・ユニット間で部分的結果を交換することにより(矢印140参照)、(たとえば、n*xビットまで(xは、ゼロより大きな整数))単一の高精度で複雑な算術演算を実行する。システム100は、算術的な乗算演算または乗算・加算演算、あるいはその両方に利用可能である(すなわち、乗算を伴うこれらの演算では、SIMDユニット間の単純なキャリア伝搬からシステム100を区別する)。
【0013】
たとえば、SIMDユニット120.0・・・120.n−1は、広いxビット数の複数回の乗算を演算し、2*xビットの結果を合計して組合せ結果を生成するように再設定可能である。組合せ結果としては、高精度の単一で広くて複雑なスカラー結果も可能であるし、高精度の単一で広くて複雑なスカラー結果の一部も可能である。なお、SIMDユニット120.0・・・120.n−1の組合せにより、広い結果の並列(すなわち、非逐次的)演算が可能となる。
【0014】
さらに、各SIMDユニット120.0・・・120.n−1は、2*xビットの累算器結果を組合せ結果に加算するように再設定可能である。非限定的な一実施形態によれば、4つのSIMDユニットから成る群が、非限定的に乗算演算を含む4つの1倍精度、2つの2倍精度、または1つの4倍精度の複雑な算術演算の実行を提供可能である。
【0015】
たとえば、システム100のSIMDユニット120は、(ブロック150により表される)n個のxビット入力オペランドまたはn*xビットの入力オペランドを受信する(矢印141参照)xビットのユニットを含み得る。これらのオペランド上で、複雑な算術演算がSIMDユニット120により実行される。
【0016】
複雑な算術演算において、SIMDユニット120はそれぞれ、部分的結果を交換する(矢印140参照)。非限定的な一実施形態において、nが2に等しい場合は、第1の中間結果を生成する複雑な算術演算の高次部分をSIMDユニット120の一方(たとえば、SIMDユニット120.0)が実行し、第2の中間結果を生成する複雑な算術演算の低次部分をSIMDユニット120の他方(たとえば、SIMDユニット120.1)が実行することができる。
【0017】
部分的結果は、n*xビットのスカラー結果も可能な最終結果160の各部の演算に利用される(矢印151参照)。非限定的な実施形態の続きとして、SIMDユニット120.0は、SIMDユニット120.1からの中間結果の一部を利用して、最終結果160の高次部分を生成可能である。SIMDユニット120.1は、SIMDユニット120.0からの中間結果の一部を利用して、最終結果160の低次部分を生成可能である。その後、低次部分および高次部分が連結されて(組み合わされて)、最終結果160が生成される。
【0018】
ここで、図2を参照して、この図は、1つまたは複数の実施形態に係るシステム100の一実装例を示している。実装例は、乗算・加算演算回路をそれぞれ含む第1の演算ユニット201および第2の演算ユニット202(たとえば、2進浮動小数点演算ユニット)を備えたシステム200として示している。第1および第2の演算ユニット201および202の乗算・加算演算回路はそれぞれ、乗算器205および206(たとえば、サム・キャリー乗算器)、第1の加算器213および214(たとえば、組み込み加算器)、第2の加算器217および218、フォーマッタ221および222(たとえば、正規化器または丸め器)、ならびにマルチプレクサ225および226を備える。
【0019】
ここで、図3のプロセス・フロー300に関する非限定的な一実施形態に係るシステム200の動作を説明する。なお、プロセス・フロー300は、第1の演算ユニット201の観点から動作を説明するが、第2の演算ユニット202においても、類似の動作が並列して起こる。
【0020】
一般的に、データ要素低精度演算ブロック(たとえば、演算ユニット201および202)はそれぞれ、SIMDのデータ要素のうちの1つについて結果を演算する低精度演算ブロックである(マルチプル・データ要素インストラクション)。これらのデータ要素低精度演算ブロック(たとえば、演算ユニット201および202)からの中間結果が交換され、組合せによって高精度のデータ結果が演算される。
【0021】
プロセス・フロー300はブロック305で開始となり、システム200は、第1の演算ユニット201全体で一組のオペランドを受信する。一組のオペランドには、少なくとも3つのオペランドA、B、およびCを含み得る。本例において、第1の演算ユニット201は、これら3つのオペランドA、B、およびCの高次ビットを管理する。図2に示すように、第1の演算ユニット201によってAHIGH、BHIGH、およびCHIGHが受信される。なお、非限定的な一実施形態において、各オペランドA、B、およびCが2xビット(たとえば、128ビット)の場合、高次ビットは、xビット(たとえば、64ビット)へと均等に分割される。ブロック310において、システム200の乗算器205はそれぞれ、一組のオペランドの第1のオペランド(たとえば、AHIGH)および第2のオペランド(たとえば、CHIGH)を乗算して積を生成する。図2に示すように、乗算器205はAHIGHおよびCHIGHを乗算するが、これにより、第1の2xビット積(たとえば、128ビット積)および第2の2xビット積が提供される。
【0022】
なお、非限定的な一実施形態において、システム200は、積(たとえば、第1および第2の2xビット積)を加算して合計を生成することができる。ブロック320において、システム200は、一組のオペランドの第3のオペランド(たとえば、BHIGH)に「ゼロ」ビットをアペンドして、積の幅と整合させる(こうして、拡張された第3のオペランドを生成する)。なお、アペンド演算によって2番目の合計の2xビット数が生成されるが、このアペンド演算は、第1の加算器213(たとえば、3入力・出力加算器)において起こり得る。たとえば、図2に示すように、第1の加算器213は、第1および第2の2xビット積を加算して第1の2xビット合計を生成するとともに、BHIGHおよび「ゼロ」ビットを加算して第2の2xビット合計を生成する。
【0023】
ブロック325において、システム200は、積および拡張された第3のオペランドを加算して、中間結果を生成する。なお、中間結果としては、2xビット数が可能である。ブロック330において、システム200は、第2の演算ユニット202により中間結果の一部を交換する。たとえば、図2に示すように、第1の加算器213は、第1および第2の2xビット合計を加算して、中間結果を生成する。第1の加算器213からの中間結果の一部が第2の演算ユニット202に与えられる。また、第1の加算器214からの中間結果の一部が第1の演算ユニット201に与えられる。このように、各中間結果の一部が交換される。なお、図2では、第1の2進浮動小数点ユニット201からの中間結果の下位xビット(たとえば、64L;RLow)が第2の2進浮動小数点ユニット202からの中間結果の上位xビット(たとえば、64H;RHIGH)と交換されることを示している。このように、乗算または乗算・加算、あるいはその両方の広い結果の演算に、一部の結果(たとえば、RHIGHおよびRLOW)が利用される。
【0024】
ブロック335において、システム200は、中間結果の一部および第2の演算ユニットから受信された中間結果の一部を加算して、最終結果の一部を生成する。図2に示すように、第2の加算器217は、第1の2進浮動小数点ユニット201からの中間結果の上位64ビット(たとえば、64H)および第2の2進浮動小数点ユニット202からの中間結果の上位64ビット(たとえば、64H;RHIGH)を最終結果に加算する。また、第2の加算器217は、第2の加算器218からのキャリー・ビット(たとえば、CLOW)も利用可能である。そして、最終結果がマルチプレクサ225により、フォーマッタ221から出力された正規化中間結果と多重化されて、最終結果の高次ビット(たとえば、RESHIGH)が生成される。上述の通り、第2の演算ユニット202においても類似の演算が並列して行われ、最終結果の低次ビット(たとえば、RESLOW)が生成される。
【0025】
ここで、図4を参照して、この図は、1つまたは複数の実施形態に係るシステム100の一実装例を示している。実装例は、第1の演算ユニット401および第2の演算ユニット402(たとえば、2進浮動小数点演算ユニット)を備えたシステム400として示している。第1および第2の演算ユニット401および402はそれぞれ、乗算器405および406、第1の加算器409および410、第2の加算器417および418、フォーマッタ421および422、ならびにマルチプレクサ425および426を備える。
【0026】
例示的な一動作において、システム400は、第1の演算ユニット401および第2の演算ユニット402全体で一組のオペランドを受信する。一組のオペランドには、オペランドA 403a、オペランドB 403b、オペランドC 403c、オペランドD 403dと併せて、数402を含み得る。本例において、第1の演算ユニット401は数402の高次ビットを管理し、第2の演算ユニット402は数402の低次ビットを管理する。
【0027】
図4に示すように、オペランドA 403aおよびオペランドB 403bは、システム400の乗算器405により乗算されて、第1の積が生成される。オペランドC 403cおよびオペランドD 403dは、システム400の乗算器406により乗算されて、第2の積が生成される。
【0028】
システム400は、第1の積を加算して、数402の高次ビットに「ゼロ」ビットをアペンドした結果としての第1の合計を生成する。さらに、システム400は、第2の積を加算して、数402の低次ビットに「ゼロ」ビットをプリペンドした結果としての第2の合計を生成する。
【0029】
システム400は、第1の加算器409を利用して第1の合計および第1の積を加算することにより、第1の中間結果を生成する。システム400は、第1の加算器410を利用して第2の合計および第2の積を加算することにより、第2の中間結果を生成する。第1および第2の中間結果はそれぞれ、第1および第2の中間結果の一部が交換されて第2の加算器417および418に供給されるように分割される。たとえば、第1の中間結果の下位部分を第2の2進浮動小数点ユニット402に提供可能である一方、第1の中間結果の上位部分を第2の加算器417に提供可能である。第2の中間結果の上位部分を第1の2進浮動小数点ユニット401に提供可能である一方、第2の中間結果の下位部分を第2の加算器418に提供可能である。なお、第1および第2の中間結果はそれぞれ、全体をフォーマッタ421および422に提供可能である。
【0030】
第2の加算器418は、第1の中間結果の下位部分および第2の中間結果の下位部分を加算して、最終結果の下位部を生成する。そして、第2の最終結果がマルチプレクサ426により、フォーマッタ422から出力された正規化中間結果と多重化されて、組合せ結果490の低次ビットが生成される。第2の加算器417は、第1の中間結果の上位部分、第2の中間結果のキャリー・ビット、および第2の中間結果の上位部分を加算して、最終結果の上位部を生成する。そして、第1の最終結果がマルチプレクサ425により、フォーマッタ421から出力された正規化中間結果と多重化されて、組合せ結果490の高次ビットが生成される。
【0031】
図5は、1つまたは複数の実施形態に係るシステム500の一例を示している。システム500は、1つまたは複数の中央演算処理装置(CPU)501a、501b、501c等(プロセッサ501と総称する)を有する。処理回路とも称するプロセッサ501は、システム・バス502を介して、システム・メモリ503および他のさまざまなコンポーネントに結合されている。システム・メモリ503には、リード・オンリー・メモリ(ROM)504およびランダム・アクセス・メモリ(RAM)505を含み得る。ROM504は、システム・バス502に結合され、システム500の特定の基本機能を制御する基本入出力システム(BIOS)を含んでいてもよい。RAMは、システム・バス502に結合されてプロセッサ501が使用する読み書きメモリである。
【0032】
図5は、システム・バス502に結合された入出力(I/O)アダプタ506および通信アダプタ507をさらに示している。I/Oアダプタ506は、ハード・ディスク508またはその他任意の類似コンポーネント、あるいはその両方と通信する小型コンピュータ用周辺機器インターフェース(SCSI)アダプタであってもよい。本明細書において、I/Oアダプタ506およびハード・ディスク508は、マス・ストレージ510と総称する。マス・ストレージ510には、システム500上で実行されるソフトウェア511が記憶されていてもよい。マス・ストレージ510は、プロセッサ501可読の有形記憶媒体の一例であり、ソフトウェア511は、図3を参照して本明細書に記載したようにシステム500を動作させるようにプロセッサ501が実行する命令として記憶される。コンピュータ・プログラム製品およびこのような命令の実行の例については、本明細書においてより詳細に論じる。図5を再び参照して、通信アダプタ507は、外部ネットワークでもあり得るネットワーク512とシステム・バス502を相互接続して、システム500がこのような他のシステムと通信できるようにする。システム・バス502には、グラフィックス集約的なアプリケーションの性能を向上させるグラフィックス・コントローラおよびビデオ・コントローラを含み得るディスプレイ・アダプタ516によって、ディスプレイ(たとえば、スクリーン、表示モニタ)515が接続されている。一実施形態において、アダプタ506、507、および516は、中間バス・ブリッジ(図示せず)を介してシステム・バス502に接続された1つまたは複数のI/Oバスに接続されていてもよい。ハード・ディスク・コントローラ、ネットワーク・アダプタ、およびグラフィックス・アダプタ等の周辺機器を接続する適当なI/Oバスは通常、周辺機器相互接続(PCI)等の共通プロトコルを含む。インターフェース・アダプタ520およびディスプレイ・アダプタ516を介してシステム・バス502に接続されるものとして、別の入出力装置が示される。たとえば複数のデバイス・アダプタを単一の集積回路に統合するスーパーI/Oチップを含み得るインターフェース・アダプタ520を介して、キーボード、マウス、スピーカ等をシステム・バス502に相互接続可能である。
【0033】
このため、図5に設定の通り、システム500は、プロセッサ501の形態の処理機能と、システム・メモリ503およびマス・ストレージ510を含む記憶機能と、キーボードおよびマウス等の入力手段と、スピーカおよびディスプレイ515を含む出力機能とを具備する。一実施形態においては、IBM Corporationによるz/OSまたはAIXオペレーティング・システム等のオペレーティング・システムをシステム・メモリ503およびマス・ストレージ510の一部がまとめて記憶することにより、図5に示すさまざまなコンポーネントの機能を統合する。
【0034】
本発明は、任意の考え得る技術的詳細集約レベルのシステム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってもよい。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含んでいてもよい。
【0035】
コンピュータ可読記憶媒体としては、命令実行装置が使用する命令を保持・記憶し得る有形デバイスが可能である。コンピュータ可読記憶媒体は、たとえば電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置、または上記の任意適当な組合せであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的一覧には、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去可能プログラム可能リード・オンリー・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、携帯型コンパクト・ディスク・リード・オンリー・メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチ・カードまたは命令が記録された溝中の隆起構造等の機械的符号化デバイス、および上記の任意適当な組合せを含む。本明細書において使用するコンピュータ可読記憶媒体は、無線波または自由伝搬電磁波、導波路または伝送媒体を伝搬する電磁波(たとえば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通って伝わる電気信号等の一時的信号それ自体として解釈されないものとする。
【0036】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理装置にダウンロードすることも可能であるし、たとえばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組合せ等のネットワークを介して、外部コンピュータまたは外部記憶装置にダウンロードすることも可能である。ネットワークには、銅製伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含んでいてもよい。各コンピューティング/処理装置のネットワーク・アダプタ・カードまたはネットワーク・インターフェースがネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を転送して、各コンピューティング/処理装置内のコンピュータ可読記憶媒体に記憶する。
【0037】
本発明の動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用設定データ、またはSmalltalk、C++等のオブジェクト指向プログラミング言語および「C」プログラミング言語もしくは類似のプログラミング言語等の手続き型プログラミング言語等の1つもしくは複数のプログラミング言語の任意の組合せにより記述されたソース・コードもしくはオブジェクト・コードであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上ですべてが実行されるようになっていてもよいし、独立型ソフトウェア・パッケージとしてユーザのコンピュータ上で一部が実行されるようになっていてもよいし、ユーザのコンピュータ上で一部が実行されるとともにリモート・コンピュータ上で一部が実行されるようになっていてもよいし、リモート・コンピュータまたはサーバ上で全体が実行されるようになっていてもよい。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)等の任意の種類のネットワークを通じてユーザのコンピュータに接続されていてもよいし、(たとえば、インターネット・サービス・プロバイダによりインターネットを通じて)外部のコンピュータに接続されていてもよい。いくつかの実施形態においては、たとえばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA)等の電子回路がコンピュータ可読プログラム命令の状態情報を利用してコンピュータ可読プログラム命令を実行することにより、電子回路をカスタマイズして本発明の態様を実行するようにしてもよい。
【0038】
本明細書においては、本発明の実施形態に係る方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図、あるいはその両方を参照して、本発明の態様を説明した。フローチャート図またはブロック図、あるいはその両方の各ブロックならびにフローチャート図またはブロック図、あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装可能であることが理解される。
【0039】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行する当該命令によって、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックに指定の機能/動作を実装する手段が構成されるように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを生成するようになっていてもよい。また、これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックに指定の機能/動作の態様を実装する命令を含む製造品を含むように、コンピュータ、プログラム可能なデータ処理装置、または他の機器、あるいはその組合せが特定の様態で機能するように指示可能なコンピュータ可読記憶媒体に記憶されていてもよい。
【0040】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能な装置、または他の機器上で実行する当該命令が、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックに指定の機能/動作を実装するように、コンピュータ、他のプログラム可能なデータ処理装置、または他の機器にロードされ、一連の動作ステップがコンピュータ、他のプログラム可能な装置、または他の機器上で実行されてコンピュータ実装プロセスを生成するようになっていてもよい。
【0041】
図面中のフローチャートおよびブロック図は、本発明の種々実施形態に係るシステム、方法、およびコンピュータ・プログラム製品の考え得る実施態様の構成、機能、および動作を示している。この点、フローチャートまたはブロック図の各ブロックは、命令のモジュール、セグメント、または部分を表していてもよく、指定の論理的機能を実装する1つまたは複数の実行可能な命令を含む。いくつかの代替の実施態様において、各ブロックに記載の機能は、図面に記載の順序から外れて生じ得る。たとえば、関与する機能に応じて、連続して示す2つのブロックが実際のところ、実質的に同時に実行されるようになっていてもよいし、各ブロックが場合により逆の順序で実行されるようになっていてもよい。また、ブロック図またはフローチャート図、あるいはその両方の各ブロックならびにブロック図またはフローチャート図、あるいはその両方におけるブロックの組合せは、指定の機能または動作を実行するか、あるいは専用ハードウェアおよびコンピュータ命令の組合せを実行する専用ハードウェアに基づくシステムにより実装可能であることに留意する。
【0042】
本明細書において使用する専門用語は、特定の実施形態を説明することを目的としているに過ぎず、何ら限定する意図はない。本明細書において、単数形「a」、「an」、および「the」は、文脈上の別段の明確な指定のない限り、複数形も同様に含むことが意図される。本明細書において使用する場合の用語「備える(comprisesまたはcomprising、あるいはその両方)」は、記載の特徴、整数、ステップ、動作、要素、またはコンポーネント、あるいはその組合せの存在を指定するものの、1つまたは複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、またはその群、あるいはその組合せの存在または追加を除外するものではないことがさらに理解される。
【0043】
本明細書における種々実施形態の説明は、例示を目的として提示しているものの、何ら網羅的でもなければ、開示の実施形態に限定されることを意図したものでもない。上記実施形態の範囲および思想から逸脱することなく、当業者には、多くの改良および変形が明らかとなるであろう。本明細書において使用する専門用語は、上記実施形態の原理、実際の用途、もしくは市場において見られる技術の技術的改良を最もよく説明すること、または、当業他者が本明細書に開示の実施形態を理解できるようにすることを目的として選定したものである。
図1
図2
図3
図4
図5