JP6979076B2 - 回路、システム、および組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備えたプロセッサにより実装される方法 - Google Patents

回路、システム、および組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備えたプロセッサにより実装される方法 Download PDF

Info

Publication number
JP6979076B2
JP6979076B2 JP2019538506A JP2019538506A JP6979076B2 JP 6979076 B2 JP6979076 B2 JP 6979076B2 JP 2019538506 A JP2019538506 A JP 2019538506A JP 2019538506 A JP2019538506 A JP 2019538506A JP 6979076 B2 JP6979076 B2 JP 6979076B2
Authority
JP
Japan
Prior art keywords
resettable
unit
result
units
intermediate result
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.)
Active
Application number
JP2019538506A
Other languages
English (en)
Other versions
JP2020507154A (ja
Inventor
リヒテナウ、セドリック
クライン、マイケル
ホフマン、ニコル
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2020507154A publication Critical patent/JP2020507154A/ja
Application granted granted Critical
Publication of JP6979076B2 publication Critical patent/JP6979076B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • 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/52Multiplying; Dividing
    • 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/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Logic Circuits (AREA)
  • Complex Calculations (AREA)

Description

本開示は、概してプロセッサ演算設計に関し、より詳細には、実行ユニットを組み合わせて単一の広いスカラー結果を演算することに関する。
現代のチップ/コア設計では、コグニティブ・コンピューティングのように、新たに発生するワークロードを処理することができる。ただし、これらの発生するワークロードには、取り組む問題に基づいて、要件が変動する非常に大きな演算能力が必要であり、この演算は、大規模な短精度計算と高精度計算との間で変動する。要件が変動することにより、「フリーサイズ」のユニットを構築する場合に、現代のチップ/コア設計が難しくなる。このような難しさとしては、所望の低精度スループットをもたらさない少数の高精度ユニットと複雑な高精度演算を行うのにソフトウェア・オーバヘッドを要する多数の低精度ユニットとを両立させることが挙げられる。
従って本発明が解決しようとする課題は、複数の実行ユニットの組合せによる単一の広いスカラー結果の演算を行う回路、システム、および方法を提供することである。
1つまたは複数の実施形態によれば、回路が提供される。この回路は、組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備える。複数の再設定可能ユニットのうちの第1の再設定可能ユニットの第1の中間結果が、複数の再設定可能ユニットのうちの第2の再設定可能ユニットの第2の中間結果と交換される。複数の再設定可能ユニットのうちの第1の再設定可能ユニットは、第2の中間結果を利用して組合せ結果の第1の部分を演算する。複数の再設定可能ユニットのうちの第2の再設定可能ユニットは、第1の中間結果を利用して組合せ結果の第2の部分を演算する。
1つまたは複数の実施形態によれば、システムが提供される。このシステムは、プロセッサおよびメモリを備える。プロセッサは、組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備える。複数の再設定可能ユニットのうちの第1の再設定可能ユニットの第1の中間結果が、複数の再設定可能ユニットのうちの第2の再設定可能ユニットの第2の中間結果と交換される。複数の再設定可能ユニットのうちの第1の再設定可能ユニットは、第2の中間結果を利用して組合せ結果の第1の部分を演算する。複数の再設定可能ユニットのうちの第2の再設定可能ユニットは、第1の中間結果を利用して組合せ結果の第2の部分を演算する。
1つまたは複数の実施形態によれば、方法が提供される。この方法は、組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備えたプロセッサにより実装される。この方法は、再設定可能な複数の再設定可能ユニットのうちの第1の再設定可能ユニットの第1の中間結果を、再設定可能な複数の再設定可能ユニットのうちの第2の再設定可能ユニット交換の第2の中間結果と交換することを含む。この方法は、複数の再設定可能ユニットのうちの第1の再設定可能ユニットにより、第2の中間結果を利用して組合せ結果の第1の部分を演算することと、複数の再設定可能ユニットのうちの第2の再設定可能ユニットにより、第1の中間結果を利用して組合せ結果の第2の部分を演算することと、を含む。
本明細書の最後の特許請求の範囲において、主題を詳細に挙げるとともに明確に請求する。本明細書の実施形態の上記および他の特徴および利点については、添付の図面と併せた以下の詳細な説明によって明らかとなる。
1つまたは複数の実施形態に係るシステムを示した図である。 1つまたは複数の実施形態に係るシステムの一実装例を示した図である。 1つまたは複数の実施形態に係るシステムのプロセス・フローを示した図である。 1つまたは複数の実施形態に係るシステムの一実装例を示した図である。 1つまたは複数の実施形態に係るシステムを示した図である。
一般的に、並列コンピューティングは、大きな問題を解決するために多くの計算またはプロセス、あるいはその両方が同時に実行される種類の演算である。大きな問題の例としては、天の川銀河のモデリング、コグニティブ・コンピューティング・モデルの構築およびトレーニング、がん研究の計算の実装、3次元アニメーションのレンダリング等が挙げられる。並列コンピューティングでは、大きな問題を分割して、後で同時に解決できる小さな計算とする。問題(および、アルゴリズム)に基づいて、低精度演算、高精度演算、または両者の混合が必要となる。並列コンピューティングには複数の異なる形態(たとえば、現代のチップ/コア設計)が存在し、それぞれに欠点がある。
たとえば、シリコン・エリア上でパワーが増大するモバイル機器において使用される現代のシステム・オン・チップ大型/小型コア設計は、チップが特定の物理的サイズを超えられないことでエリアが同じく注目される高性能のサーバ・チップには適していない。グラフィックス処理ユニットとインターフェースして多数の低精度演算コアを提供し得る現代の高精度コア・チップもまた、これらの低精度コアと現代の高精度コア・チップとの間の相対的な「距離」(単位:サイクル)および帯域幅に関して、大きな性能ペナルティをもたらす。高性能コア・チップへの別のアプローチでは、可能な限り多くのコアに適合するように、コア上の高精度演算ユニットのサイズを最小限に抑えようとする。これでもなお、高精度演算要件と低精度演算要件とを両立させる問題は基本的に解決されない。
ここで、本発明の態様の概説に移って、本明細書に開示の実施形態には、シングル・インストラクション・マルチプル・データ(SIMD)ユニットを組み合わせて、SIMDユニット間で部分的結果を交換することにより単一の高精度で複雑な算術演算を実行するシステム、方法、またはコンピュータ・プログラム製品(本明細書においては、システム)、あるいはその組合せを含んでいてもよい。SIMDユニットは、複数のデータ・ポイントで同じ演算を同時に実行可能な複数の処理要素を備える。このシステムの技術的効果および利点として、(高精度乗算・加算のような)高精度の複雑な演算を行う容量を依然として保ちつつ、範囲外の市場向けの高効率小型低精度ブロックの構築が可能である。このシステムの技術的効果および利点として、SIMDユニットのパイプライン化による如何なる結果的な配線オーバヘッドまたは遅延、あるいはその両方も制限・秘匿可能である。このため、本明細書に記載の実施形態は必然的に、事前演算を実行することにより、プロセッサ演算設計の領域で具体的に起こる問題を克服するシステムのプロセッサに基づく(たとえば、これらの問題には、非常に大きな演算精度の要件が変動することを考慮して、少数の高精度ユニットと多数の低精度ユニットとを平衡させることを含む)。
ここで、図1を参照して、システム100は、n個の小型低精度xビット・ユニット(SIMDユニット120.0・・・120.n−1(nは、ゼロより大きな整数))を組み合わせて、n個の小型低精度xビット・ユニット間で部分的結果を交換することにより(矢印140参照)、(たとえば、n*xビットまで(xは、ゼロより大きな整数))単一の高精度で複雑な算術演算を実行する。システム100は、算術的な乗算演算または乗算・加算演算、あるいはその両方に利用可能である(すなわち、乗算を伴うこれらの演算では、SIMDユニット間の単純なキャリア伝搬からシステム100を区別する)。
たとえば、SIMDユニット120.0・・・120.n−1は、広いxビット数の複数回の乗算を演算し、2*xビットの結果を合計して組合せ結果を生成するように再設定可能である。組合せ結果としては、高精度の単一で広くて複雑なスカラー結果も可能であるし、高精度の単一で広くて複雑なスカラー結果の一部も可能である。なお、SIMDユニット120.0・・・120.n−1の組合せにより、広い結果の並列(すなわち、非逐次的)演算が可能となる。
さらに、各SIMDユニット120.0・・・120.n−1は、2*xビットの累算器結果を組合せ結果に加算するように再設定可能である。非限定的な一実施形態によれば、4つのSIMDユニットから成る群が、非限定的に乗算演算を含む4つの1倍精度、2つの2倍精度、または1つの4倍精度の複雑な算術演算の実行を提供可能である。
たとえば、システム100のSIMDユニット120は、(ブロック150により表される)n個のxビット入力オペランドまたはn*xビットの入力オペランドを受信する(矢印141参照)xビットのユニットを含み得る。これらのオペランド上で、複雑な算術演算がSIMDユニット120により実行される。
複雑な算術演算において、SIMDユニット120はそれぞれ、部分的結果を交換する(矢印140参照)。非限定的な一実施形態において、nが2に等しい場合は、第1の中間結果を生成する複雑な算術演算の高次部分をSIMDユニット120の一方(たとえば、SIMDユニット120.0)が実行し、第2の中間結果を生成する複雑な算術演算の低次部分をSIMDユニット120の他方(たとえば、SIMDユニット120.1)が実行することができる。
部分的結果は、n*xビットのスカラー結果も可能な最終結果160の各部の演算に利用される(矢印151参照)。非限定的な実施形態の続きとして、SIMDユニット120.0は、SIMDユニット120.1からの中間結果の一部を利用して、最終結果160の高次部分を生成可能である。SIMDユニット120.1は、SIMDユニット120.0からの中間結果の一部を利用して、最終結果160の低次部分を生成可能である。その後、低次部分および高次部分が連結されて(組み合わされて)、最終結果160が生成される。
ここで、図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を備える。
ここで、図3のプロセス・フロー300に関する非限定的な一実施形態に係るシステム200の動作を説明する。なお、プロセス・フロー300は、第1の演算ユニット201の観点から動作を説明するが、第2の演算ユニット202においても、類似の動作が並列して起こる。
一般的に、データ要素低精度演算ブロック(たとえば、演算ユニット201および202)はそれぞれ、SIMDのデータ要素のうちの1つについて結果を演算する低精度演算ブロックである(マルチプル・データ要素インストラクション)。これらのデータ要素低精度演算ブロック(たとえば、演算ユニット201および202)からの中間結果が交換され、組合せによって高精度のデータ結果が演算される。
プロセス・フロー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ビット積が提供される。
なお、非限定的な一実施形態において、システム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ビット合計を生成する。
ブロック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)が利用される。
ブロック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)が生成される。
ここで、図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を備える。
例示的な一動作において、システム400は、第1の演算ユニット401および第2の演算ユニット402全体で一組のオペランドを受信する。一組のオペランドには、オペランドA 403a、オペランドB 403b、オペランドC 403c、オペランドD 403dと併せて、数402を含み得る。本例において、第1の演算ユニット401は数402の高次ビットを管理し、第2の演算ユニット402は数402の低次ビットを管理する。
図4に示すように、オペランドA 403aおよびオペランドB 403bは、システム400の乗算器405により乗算されて、第1の積が生成される。オペランドC 403cおよびオペランドD 403dは、システム400の乗算器406により乗算されて、第2の積が生成される。
システム400は、第1の積を加算して、数402の高次ビットに「ゼロ」ビットをアペンドした結果としての第1の合計を生成する。さらに、システム400は、第2の積を加算して、数402の低次ビットに「ゼロ」ビットをプリペンドした結果としての第2の合計を生成する。
システム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に提供可能である。
第2の加算器418は、第1の中間結果の下位部分および第2の中間結果の下位部分を加算して、最終結果の下位部を生成する。そして、第2の最終結果がマルチプレクサ426により、フォーマッタ422から出力された正規化中間結果と多重化されて、組合せ結果490の低次ビットが生成される。第2の加算器417は、第1の中間結果の上位部分、第2の中間結果のキャリー・ビット、および第2の中間結果の上位部分を加算して、最終結果の上位部を生成する。そして、第1の最終結果がマルチプレクサ425により、フォーマッタ421から出力された正規化中間結果と多重化されて、組合せ結果490の高次ビットが生成される。
図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が使用する読み書きメモリである。
図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に相互接続可能である。
このため、図5に設定の通り、システム500は、プロセッサ501の形態の処理機能と、システム・メモリ503およびマス・ストレージ510を含む記憶機能と、キーボードおよびマウス等の入力手段と、スピーカおよびディスプレイ515を含む出力機能とを具備する。一実施形態においては、IBM Corporationによるz/OSまたはAIXオペレーティング・システム等のオペレーティング・システムをシステム・メモリ503およびマス・ストレージ510の一部がまとめて記憶することにより、図5に示すさまざまなコンポーネントの機能を統合する。
本発明は、任意の考え得る技術的詳細集約レベルのシステム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってもよい。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含んでいてもよい。
コンピュータ可読記憶媒体としては、命令実行装置が使用する命令を保持・記憶し得る有形デバイスが可能である。コンピュータ可読記憶媒体は、たとえば電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置、または上記の任意適当な組合せであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的一覧には、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去可能プログラム可能リード・オンリー・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、携帯型コンパクト・ディスク・リード・オンリー・メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチ・カードまたは命令が記録された溝中の***構造等の機械的符号化デバイス、および上記の任意適当な組合せを含む。本明細書において使用するコンピュータ可読記憶媒体は、無線波または自由伝搬電磁波、導波路または伝送媒体を伝搬する電磁波(たとえば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通って伝わる電気信号等の一時的信号それ自体として解釈されないものとする。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理装置にダウンロードすることも可能であるし、たとえばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組合せ等のネットワークを介して、外部コンピュータまたは外部記憶装置にダウンロードすることも可能である。ネットワークには、銅製伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含んでいてもよい。各コンピューティング/処理装置のネットワーク・アダプタ・カードまたはネットワーク・インターフェースがネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を転送して、各コンピューティング/処理装置内のコンピュータ可読記憶媒体に記憶する。
本発明の動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用設定データ、またはSmalltalk、C++等のオブジェクト指向プログラミング言語および「C」プログラミング言語もしくは類似のプログラミング言語等の手続き型プログラミング言語等の1つもしくは複数のプログラミング言語の任意の組合せにより記述されたソース・コードもしくはオブジェクト・コードであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上ですべてが実行されるようになっていてもよいし、独立型ソフトウェア・パッケージとしてユーザのコンピュータ上で一部が実行されるようになっていてもよいし、ユーザのコンピュータ上で一部が実行されるとともにリモート・コンピュータ上で一部が実行されるようになっていてもよいし、リモート・コンピュータまたはサーバ上で全体が実行されるようになっていてもよい。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)等の任意の種類のネットワークを通じてユーザのコンピュータに接続されていてもよいし、(たとえば、インターネット・サービス・プロバイダによりインターネットを通じて)外部のコンピュータに接続されていてもよい。いくつかの実施形態においては、たとえばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA)等の電子回路がコンピュータ可読プログラム命令の状態情報を利用してコンピュータ可読プログラム命令を実行することにより、電子回路をカスタマイズして本発明の態様を実行するようにしてもよい。
本明細書においては、本発明の実施形態に係る方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図、あるいはその両方を参照して、本発明の態様を説明した。フローチャート図またはブロック図、あるいはその両方の各ブロックならびにフローチャート図またはブロック図、あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装可能であることが理解される。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行する当該命令によって、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックに指定の機能/動作を実装する手段が構成されるように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを生成するようになっていてもよい。また、これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックに指定の機能/動作の態様を実装する命令を含む製造品を含むように、コンピュータ、プログラム可能なデータ処理装置、または他の機器、あるいはその組合せが特定の様態で機能するように指示可能なコンピュータ可読記憶媒体に記憶されていてもよい。
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能な装置、または他の機器上で実行する当該命令が、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックに指定の機能/動作を実装するように、コンピュータ、他のプログラム可能なデータ処理装置、または他の機器にロードされ、一連の動作ステップがコンピュータ、他のプログラム可能な装置、または他の機器上で実行されてコンピュータ実装プロセスを生成するようになっていてもよい。
図面中のフローチャートおよびブロック図は、本発明の種々実施形態に係るシステム、方法、およびコンピュータ・プログラム製品の考え得る実施態様の構成、機能、および動作を示している。この点、フローチャートまたはブロック図の各ブロックは、命令のモジュール、セグメント、または部分を表していてもよく、指定の論理的機能を実装する1つまたは複数の実行可能な命令を含む。いくつかの代替の実施態様において、各ブロックに記載の機能は、図面に記載の順序から外れて生じ得る。たとえば、関与する機能に応じて、連続して示す2つのブロックが実際のところ、実質的に同時に実行されるようになっていてもよいし、各ブロックが場合により逆の順序で実行されるようになっていてもよい。また、ブロック図またはフローチャート図、あるいはその両方の各ブロックならびにブロック図またはフローチャート図、あるいはその両方におけるブロックの組合せは、指定の機能または動作を実行するか、あるいは専用ハードウェアおよびコンピュータ命令の組合せを実行する専用ハードウェアに基づくシステムにより実装可能であることに留意する。
本明細書において使用する専門用語は、特定の実施形態を説明することを目的としているに過ぎず、何ら限定する意図はない。本明細書において、単数形「a」、「an」、および「the」は、文脈上の別段の明確な指定のない限り、複数形も同様に含むことが意図される。本明細書において使用する場合の用語「備える(comprisesまたはcomprising、あるいはその両方)」は、記載の特徴、整数、ステップ、動作、要素、またはコンポーネント、あるいはその組合せの存在を指定するものの、1つまたは複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、またはその群、あるいはその組合せの存在または追加を除外するものではないことがさらに理解される。
本明細書における種々実施形態の説明は、例示を目的として提示しているものの、何ら網羅的でもなければ、開示の実施形態に限定されることを意図したものでもない。上記実施形態の範囲および思想から逸脱することなく、当業者には、多くの改良および変形が明らかとなるであろう。本明細書において使用する専門用語は、上記実施形態の原理、実際の用途、もしくは市場において見られる技術の技術的改良を最もよく説明すること、または、当業他者が本明細書に開示の実施形態を理解できるようにすることを目的として選定したものである。

Claims (20)

  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に記載の方法。
JP2019538506A 2017-01-23 2018-01-08 回路、システム、および組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備えたプロセッサにより実装される方法 Active JP6979076B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/412,429 2017-01-23
US15/412,429 US10275391B2 (en) 2017-01-23 2017-01-23 Combining of several execution units to compute a single wide scalar result
PCT/IB2018/050102 WO2018134694A1 (en) 2017-01-23 2018-01-08 Combining of several execution units to compute a single wide scalar result

Publications (2)

Publication Number Publication Date
JP2020507154A JP2020507154A (ja) 2020-03-05
JP6979076B2 true JP6979076B2 (ja) 2021-12-08

Family

ID=62906484

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019538506A Active JP6979076B2 (ja) 2017-01-23 2018-01-08 回路、システム、および組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備えたプロセッサにより実装される方法

Country Status (7)

Country Link
US (1) US10275391B2 (ja)
JP (1) JP6979076B2 (ja)
CN (1) CN110199255B (ja)
DE (1) DE112018000138B4 (ja)
GB (1) GB2573685B (ja)
TW (1) TWI659360B (ja)
WO (1) WO2018134694A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11269651B2 (en) * 2019-09-10 2022-03-08 International Business Machines Corporation Reusing adjacent SIMD unit for fast wide result generation

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4612628A (en) * 1983-02-14 1986-09-16 Data General Corp. Floating-point unit constructed of identical modules
JPH0724811Y2 (ja) * 1988-12-15 1995-06-05 横河電機株式会社 デジタルフィルタ
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US7062526B1 (en) 2000-02-18 2006-06-13 Texas Instruments Incorporated Microprocessor with rounding multiply instructions
JP3542342B2 (ja) * 2001-09-14 2004-07-14 独立行政法人 科学技術振興機構 半導体演算装置
US8736623B1 (en) * 2004-11-15 2014-05-27 Nvidia Corporation Programmable DMA engine for implementing memory transfers and video processing for a video processor
CN100555212C (zh) * 2007-07-18 2009-10-28 中国科学院计算技术研究所 一种浮点乘加器及其乘法csa压缩树的进位校验装置
US8106914B2 (en) 2007-12-07 2012-01-31 Nvidia Corporation Fused multiply-add functional unit
US8682639B2 (en) 2010-09-21 2014-03-25 Texas Instruments Incorporated Dedicated memory window for emulation address
US9400636B2 (en) * 2011-02-11 2016-07-26 Infineon Technologies Ag Apparatus and method for calculating a result in a scalar multiplication
FR2974645A1 (fr) * 2011-04-28 2012-11-02 Kalray Operateur de multiplication et addition fusionnees a precision mixte
US9727336B2 (en) 2011-09-16 2017-08-08 International Business Machines Corporation Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers
JP6064435B2 (ja) 2012-08-21 2017-01-25 富士通株式会社 演算回路、演算処理装置、及び除算方法
WO2014116712A1 (en) * 2013-01-22 2014-07-31 Samplify Systems, Inc. Data compression and decompression using simd instructions
US9189200B1 (en) * 2013-03-14 2015-11-17 Altera Corporation Multiple-precision processing block in a programmable integrated circuit device
US9256433B2 (en) 2013-03-15 2016-02-09 Intel Corporation Systems and methods for move elimination with bypass multiple instantiation table
US9489197B2 (en) 2013-07-09 2016-11-08 Texas Instruments Incorporated Highly efficient different precision complex multiply accumulate to enhance chip rate functionality in DSSS cellular systems
EP3123303A1 (en) * 2014-03-27 2017-02-01 Intel Corporation Processor logic and method for dispatching instructions from multiple strands
US9467279B2 (en) * 2014-09-26 2016-10-11 Intel Corporation Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality
US20160179470A1 (en) 2014-12-23 2016-06-23 Shay Gueron Method and apparatus for performing big-integer arithmetic operations
US20160188327A1 (en) * 2014-12-24 2016-06-30 Elmoustapha Ould-Ahmed-Vall Apparatus and method for fused multiply-multiply instructions
CN105652660B (zh) * 2016-01-07 2018-11-30 北京北广科技股份有限公司 一种基于单片机的获取分频频率控制字的方法
US10007487B1 (en) * 2016-06-30 2018-06-26 Altera Corporation Double-precision floating-point operation

Also Published As

Publication number Publication date
GB2573685A (en) 2019-11-13
GB201910346D0 (en) 2019-09-04
CN110199255B (zh) 2022-10-28
US10275391B2 (en) 2019-04-30
JP2020507154A (ja) 2020-03-05
DE112018000138T5 (de) 2019-07-11
WO2018134694A1 (en) 2018-07-26
CN110199255A (zh) 2019-09-03
US20180210859A1 (en) 2018-07-26
TWI659360B (zh) 2019-05-11
DE112018000138B4 (de) 2022-03-24
TW201830236A (zh) 2018-08-16
GB2573685B (en) 2020-04-22

Similar Documents

Publication Publication Date Title
CN114402289B (zh) 多模式运算电路
US9519460B1 (en) Universal single instruction multiple data multiplier and wide accumulator unit
US9098332B1 (en) Specialized processing block with fixed- and floating-point structures
JP3940542B2 (ja) データプロセッサ及びデータ処理システム
JP6744913B2 (ja) 浮動小数点数の丸め処理
US9940102B2 (en) Partial stochastic rounding that includes sticky and guard bits
JP4349265B2 (ja) プロセッサ
JPH0727457B2 (ja) 乗算器
CN114930311B (zh) Fpga重复单元之间的级联通信
US20210326111A1 (en) FPGA Processing Block for Machine Learning or Digital Signal Processing Operations
CN110737628A (zh) 一种可重构处理器和可重构处理器***
TWI808259B (zh) 具有壓縮進位之數位電路
US10140090B2 (en) Computing and summing up multiple products in a single multiplier
JP6979076B2 (ja) 回路、システム、および組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備えたプロセッサにより実装される方法
KR20230041818A (ko) 하이브리드 형식들에 대한 부동 소수점 계산
JP2006039790A (ja) ブロードキャスト型並列処理のための演算処理装置
Sima et al. An 8x8 IDCT Implementation on an FPGA-augmented TriMedia
JP3537378B2 (ja) 加算器および集積回路
US9164728B1 (en) Ternary DSP block
US8924447B2 (en) Double precision approximation of a single precision operation
JP6302682B2 (ja) 複数データ形式を支援する加算器、及びその加算器を利用した複数データ形式の加減演算支援方法
US11113028B2 (en) Apparatus and method for performing an index operation
JPH05324694A (ja) 再構成可能並列プロセッサ
KR101974779B1 (ko) 16비트 이하 양의 정수용 파이프라인형 제곱기
Karthick et al. VLSI Implementation of Multipliers for Artificial Intelligence Applications: A Survey

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200722

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210727

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211020

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: 20211109

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211112

R150 Certificate of patent or registration of utility model

Ref document number: 6979076

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150