CN110199255B - 组合若干执行单元以计算单一宽标量结果 - Google Patents

组合若干执行单元以计算单一宽标量结果 Download PDF

Info

Publication number
CN110199255B
CN110199255B CN201880007833.7A CN201880007833A CN110199255B CN 110199255 B CN110199255 B CN 110199255B CN 201880007833 A CN201880007833 A CN 201880007833A CN 110199255 B CN110199255 B CN 110199255B
Authority
CN
China
Prior art keywords
reconfigurable
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
CN201880007833.7A
Other languages
English (en)
Other versions
CN110199255A (zh
Inventor
C·里彻特纳
M·克莱恩
N·霍夫曼
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 CN110199255A publication Critical patent/CN110199255A/zh
Application granted granted Critical
Publication of CN110199255B publication Critical patent/CN110199255B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/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 Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Logic Circuits (AREA)
  • Complex Calculations (AREA)

Abstract

一种电路包括能够重构以计算组合结果的可重构单元。所述可重构单元中的第一可重构单元的第一中间结果与所述可重构单元中的第二可重构单元的第二中间结果进行交换。第一可重构单元利用第二中间结果来计算组合结果的第一部分。所述可重构单元中的第二可重构单元利用第一中间结果计算组合结果的第二部分。

Description

组合若干执行单元以计算单一宽标量结果
技术领域
本公开通常涉及处理器算术设计,更具体地,涉及组合多个执行单元以计算单一宽标量结果。
背景技术
当代的芯片/核心设计能够处理新出现的工作负荷,像认知计算。然而,这些新出现的工作负荷需要大规模计算能力并且要求基于受到攻击的问题而变化,并且计算在大规模短精度数学与高精度数学之间发生变化。当建造“万能(one size fits all)”单元时,变化的要求向当代的芯片/核心设计提供了难题。这些难题包括对少许高精度单元与海量低精度单元之间的平衡的冲击,其中,高精度单元将不传递期望的较低精度吞吐量,低精度单元将需要软件开销以进行复杂的高精度计算。
发明内容
根据一个或多个实施例,提供一种电路。该电路包含能够重构以计算组合结果的多个可重构单元。多个可重构单元中的第一可重构单元的第一中间结果与多个可重构单元中的第二可重构单元的第二中间结果进行交换。多个可重构单元中的第一可重构单元利用第二中间结果计算组合结果的第一部分。多个可重构单元中的第二可重构单元利用第一中间结果计算组合结果的第二部分。
根据一个或多个实施例,提供一种系统。该系统包括处理器和存储器。该处理器包括能够重构以计算组合结果的多个可重构单元。多个可重构单元中的第一可重构单元的第一中间结果与多个可重构单元中的第二可重构单元的第二中间结果交换。多个可重构单元中的第一可重构单元利用第二中间结果计算组合结果的第一部分。多个可重构单元中的第二可重构单元利用第一中间结果计算组合结果的第二部分。
根据一个或多个实施例,提供一种方法。该方法由处理器实施,该处理器包括能够重构以计算组合结果的多个可重构单元。该方法包括交换多个可重构单元中的第一可重构单元的第一中间结果与多个可重构单元的第二可重构单元的第二中间结果。该方法包括由多个可重构单元中的第一可重构单元利用第二中间结果计算组合结果的第一部分;以及由多个可重构单元中的第二可重构单元利用第一中间结果计算组合结果的第二部分。
附图说明
在本说明书的结尾处的权利要求中特别指出并明确要求本主题的权利。在此,实施例的前述和其他特征以及优点根据结合附图进行的以下详细描述是显而易见的,其中:
图1描绘根据一个或多个实施例的系统;
图2描绘根据一个或多个实施例的系统的实施实例;
图3描绘根据一个或多个实施例的系统的过程流程;
图4描绘根据一个或多个实施例的系统的实施实例;
图5描绘根据一个或多个实施例的系统。
具体实施方式
一般而言,并行计算是许多计算和/或过程同时进行以求解大型问题的一种计算。大型问题的实例包括对银河系建模、建立并训练认知计算模型、实现癌症研究计算、渲染三维动画等。并行计算将大型问题划分成可同时求解的较小计算。基于问题(和算法),需要低精度算术或高精度算术或者两者的混合。存在若干不同的并行计算形式(例如,当代的芯片/核心设计),每一个都有缺点。
例如,用在其中能力相对于硅面积是优先的移动设备中的当代的片上系统大/小核心设计对于高端服务器芯片是负担不起的,因为在高端服务器芯片中,由于芯片不能超过特定物理大小,因此面积也是焦点。可与图形处理单元接口以提供具有较低精度算术的海量核心的当代高精度核心芯片也关于这些较低精度核心与当代的高精度核心芯片之间的相对“距离”(采用循环)和带宽提供大的性能损失。另一种针对高性能核心芯片的方法是试图使核心上的高精度算术单元的大小最小化以适合尽可能多的核心。这仍然不能从根本上解决对高精度算术要求与低精度算术要求之间的平衡的冲击的问题。
现对本发明的各方面进行概述,在本文中公开的实施例可包括组合单指令多数据(SIMD)单元以通过在SIMD单元之间交换部分结果来计算单个高精度复杂算术运算的系统、方法和/或计算机程序产品(在本文中是系统)。SIMD单元包括可对多个数据点同时执行同一运算的多个处理部件。该系统的技术效果和益处包括能够针对超规模市场建立高效小型较低精度块,同时仍保持进行高精度复杂算术(如高精度乘法-加法)的能力。该系统的技术效果和益处包括能够通过对SIMD单元应用流水线设计来限制并隐藏任何所产生的布线开销和/或延迟。因此,本文中所描述的实施例的根源必定在于系统的处理器执行抢先操作以克服在处理器算术设计的范围中具体出现的问题(例如,这些问题包括考虑到变化的大规模运算精度要求而在少许高精度单元与海量低精度单元之间达成平衡)。
现在转至图1,系统100组合n个小型较低精度x位单元(SIMD单元120.0…120.n-1,其中n是大于零的整数)以通过在n个小型较低精度x位单元之间交换部分结果(参见箭头140)来计算单个高精度复杂算术运算(例如,高达n*x位,其中x是大于零的整数)。系统100可用于算术乘法运算和/或乘法-加法运算(即,这些运算中,乘法区分系统100与SIMD单元之间的简单进位传播)。
例如,SIMD单元120.0…120.n-1可重构以计算x位宽的数的多次乘法,并将2*x位结果相加在一起以产生组合结果。组合结果可以是具有较高精度的单一宽复杂标量结果,或者可以是具有较高精度的单一宽复杂标量结果的一部分。请注意,SIMD单元120.0…120.n-1的组合使得能够并行(即,非顺序地)计算宽结果。
进一步地,每个SIMD单元120.0…120.n-1可重构以将2*x位累加器结果加到组合结果中。根据非限制性实施例,一组四个SIMD单元可提供包含但不限于乘法运算的四个单精度、两个双精度或一个四精度的复杂算术运算的执行。
例如,系统100的SIMD单元120可包括x位单元,其接收(参见箭头141)n个x位输入操作数或n*x位输入操作数(由框150表示)。复杂算术运算由SIMD单元120对这些操作数执行。
在复杂算术运算期间,SIMD单元120中的每一个交换部分结果(参见箭头140)。在非限制性实施例中,当n等于二时,SIMD单元120中的一个(例如,SIMD单元120.0)可执行复杂算术运算的产生第一中间结果的高位部分,SIMD单元120中的另一个(例如,SIMD单元120.1)可执行复杂算术运算的产生第二中间结果的低位部分。
部分结果用于计算最终结果160的每个相应部分,最终结果160可以是n*x位标量结果(参见箭头151)。继续上述非限制性实施例,SIMD单元120.0可利用来自SIMD单元120.1的中间结果的部分以产生最终结果160的高位部分。SIMD单元120.1可利用来自SIMD单元120.0的中间结果的部分以产生最终结果160的低位部分。然后,低位部分和高位部分被串接(组合)以产生最终结果160。
现在转至图2,描绘了根据一个或多个实施例的系统100的实施实例。该实施实例被显示为包括第一算术单元201和第二算术单元202(例如,二进制浮点算术单元)的系统200,第一算术单元201和第二算术单元的每一个包括乘法-加法算术电路。第一算术单元201和第二算术单元202的乘法-加法算术电路的每一个分别包括乘法器205和206(例如,总和与进位乘法器)、第一加法器213和214(例如,合并加法器)、第二加法器217和218、格式器221和222(例如,规格化器或舍入器)以及多路器225和226。
现在,根据非限制性实例并相对于图3的过程流程300来描述系统200的操作。请注意,虽然过程流程300从第一算术单元201的角度描述操作,但是,类似的操作在第二算术单元202处并行地发生。
一般而言,每个数据元素低精度算术块(例如,算术单元201和202)是低精度算术块,对SIMD的数据元素中的一个计算结果(多数据元素指令)。来自这些数据元素低精度算术块(例如,算术单元201和202)的中间结果被交换并组合以计算高精度数据结果。
过程流程300开始于框305,其中系统200接收第一算术单元201上的一组操作数。该组操作数可包括至少三个操作数A、B和C。在该实例中,第一算术单元201管理这三个操作数A、B和C的高位位。如图2所示,第一算术单元201接收AHIGH、BHIGH和CHIGH。请注意,在非限制性实施例中,如果每个操作数A、B和C是2x位(例如,128位),则高位位被均匀地分割成x位(例如,64位)。在框310处,系统200的乘法器205分别将该组操作数中的第一操作数(例如,AHIGH)与第二操作数(例如,CHIGH)相乘以产生乘积。如图2所示,乘法器205将AHIGH与CHIGH相乘,提供第一2x位乘积(例如,128位乘积)和第二2x位乘积。
请注意,在非限制性实施例中,系统200可将乘积(例如,第一2x位乘积和第二2x位乘积)相加以产生总和。在框320处,系统200将“零”位附加到该组操作数中的第三操作数(例如,BHIGH)的后面以匹配乘积的宽度(并产生扩展的第三操作数)。请注意,附加操作产生用于第二总和的2x位数,并且附加操作可发生在第一加法器213(例如,三个输入和输出加法器)内。例如,如图2所示,第一加法器213将第一2x位乘积与第二2x位乘积相加以产生第一2x位总和,第一加法器213将BHIGH与“零”位相加以产生第二2x位总和。
在框325处,系统200将乘积与扩展的第三操作数相加以产生中间结果。请注意,中间结果可以是2x位数。在框330处,系统200与第二算术单元202交换中间结果的一部分。例如,如图2所示,第二加法器213将第一2x位总和与第二2x位总和相加以产生中间结果。来自第二加法器213的中间结果的一部分被提供给第二算术单元202。此外,来自第二加法器214的中间结果的一部分被提供给第一算术单元201。这样,每个中间结果的一部分被交换。请注意,图2描绘了来自第一二进制浮点单元201的中间结果的较低x位(例如,64L;RLow)与来自第二二进制浮点单元202的中间结果的较高x位(例如,64H;RHIGH)进行交换。这样,部分结果(例如,RHIGH及RLow)用于计算乘法和/或乘法-加法的宽结果。
在框335处,系统200将中间结果的一部分与从第二算术单元接收的中间结果的一部分相加,以产生最终结果的一部分。如图2所示,第二加法器217将来自第一二进制浮点单元201的中间结果的较高64位(例如,64H)与来自第二二进制浮点单元202的中间结果的较高64位(例如,64H;RHIGH)相加成最终结果。第二加法器217也可利用来自第二加法器218的进位位(例如,CLOW)。然后,最终结果被多路器225复用,其中规格化的中间结果从格式器221输出以产生最终结果的高位位(例如,RESHIGH)。如上文所指出的,类似的操作在第二算术单元202处并行地发生,产生最终结果的低位位(例如,RESLOW)。
现在转至图4,描绘了根据一个或多个实施例的系统100的实施实例。该实施实例被显示为包括第一算术单元401和第二算术单元402(例如,二进制浮点单元)的系统400。第一算术单元401和第二算术单元402中的每一个分别包括乘法器405和406、第一加法器409和410、第二加法器409和410、格式器421和422、以及多路器425和426。
在示例性操作中,系统400接收第一算术单元401和第二算术单元402上的一组操作数。该组操作数可包括数402以及操作数A 403a、操作数B403b、操作数C 403c和操作数D403d。在该实例中,第一算术单元401管理数402的高位位,第二算术单元402管理数402的低位位。
如图4所示,操作数A 403a和操作数B 403b通过系统400的乘法器405相乘,该乘法器将这些操作数相乘以产生第一乘积。操作数C 403c和操作数D 403d通过系统400的乘法器406相乘,该乘法器将这些操作数相乘以产生第二乘积。
系统400加上第一乘积以产生第一总和,该第一总和由数402的高位位在后面附加“零”位产生。进一步地,系统400加上第二乘积以产生第二总和,该第二总和由数402的低位位在前面附加“零”位产生。
系统400利用第一加法器409将第一总和与第一乘积相加以产生第一中间结果。系统400利用第一加法器410将第二总和与第二乘积相加以产生第二中间结果。第一中间结果和第二中间结果的每一个被划分,以使得第一中间结果和第二中间结果的多个部分被交换并提供给第二加法器417和418。例如,第一中间结果的低部分可被提供给第二二进制浮点单元402,而第一中间结果的高部分可被提供给第二加法器417。第二中间结果的高部分可被提供给第一二进制浮点单元401,而第二中间结果的低部分可被提供给第二加法器418。请注意,第一中间结果和第二中间结果的每一个可被完全提供给格式器421和422。
第二加法器418将第一中间结果的低部分和第二中间结果的低部分相加以产生最终结果的低部分。然后,第二最终结果被多路器426复用,其中规格化的中间结果从格式器421输出以产生组合结果490的低位位。第二加法器417将第一中间结果的高部分、第二中间结果的进位位和第二中间结果的高部分相加以产生最终结果的高部分。然后,第一最终结果被多路器425复用,其中规格化的中间结果从格式器421输出以产生组合结果490的高位位。
图5描绘了根据一个或多个实施例的系统500的实例。系统500具有一个或多个中央处理单元(CPU)501a、501b、501c等(统称为或通常称为处理器501)。也被称为处理电路的处理器501经由系统总线502耦接到系统存储器503和各种其他组件。系统存储器503可包括只读存储器(ROM)504和随机存取存储器(RAM)505。ROM 504耦接到系统总线502,并可包括控制系统500的某些基本功能的基本输入/输出系统(BIOS)。RAM是耦接到系统总线502以供处理器501使用的读写存储器。
图5进一步描绘了耦接到系统总线502的输入/输出(I/O)适配器506和通信适配器507。I/O适配器506可以是与硬盘508和/或任何其他类似组件通信的小型计算机系统接口(SCSI)适配器。I/O适配器506和硬盘508在本文中统称为大容量存储设备510。用于在系统500上执行的软件511可存储在大容量存储设备510中。大容量存储设备510是处理器501可读的有形存储介质的实例,其中,软件511被存储为指令以由处理器501执行以使系统500进行操作,诸如本文中参照图3描述的。计算机程序产品的实例和这种指令的执行在本文中更详细地论述。再次参见图5,通信适配器507将系统总线502与网络512(其可以是外部网络)互连,使得系统500能够与其他这样的系统通信。显示器(例如,屏幕、显示监视器)515通过显示适配器516连接到系统总线502,显示适配器可包括用于改善图形密集型应用的性能的图形控制器以及视频控制器。在一个实施例中,适配器506、507和516可连接到一个或多个I/O总线,这些I/O总线经由中间总线网桥(未示出)连接到系统总线502。用于连接外围设备(诸如硬盘控制器、网络适配器和图形适配器)的合适的I/O总线通常包括通用协议,诸如外围组件互连(PCI)。其它输入/输出设备被显示为经由接口适配器520和显示适配器516连接到系统总线502。键盘、鼠标、扬声器等可经由接口适配器520互连到系统总线502,接口适配器520可包括例如将多个设备适配器集成为单个集成电路的超级I/O芯片。
因此,如图5所配置的,系统500包括采用处理器501形式的处理能力、包括系统存储器503和大容量存储设备510的存储能力、诸如键盘和鼠标的输入部件、以及包括扬声器和显示器515的输出能力。在一个实施例中,系统存储器503和大容量存储设备510的一部分共同存储操作系统,诸如IBM公司的z/OS或AIX操作系统,以协调图5所示的各种组件的功能。
本发明可以是在整合的任何可能技术详细层级处的系统、方法和/或计算机程序产品。计算机程序产品可包括(一个或多个)计算机可读存储介质,在其上具有计算机可读程序指令以使处理器执行本发明的各方面。
计算机可读存储介质可以是有形设备,其可保留和存储指令以由指令执行设备使用。计算机可读存储介质可以是(例如但不限于)电子存储装置、磁性存储装置、光学存储装置、电磁存储装置、半导体存储装置或前述各者的任何合适组合。计算机可读存储介质的更特定实例的非穷尽列表包括:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字通用光盘(DVD)、存储棒、软盘、机械编码装置(诸如在其上记录有指令的凹槽中的打孔卡片或凸起结构)以及前述各者的任何合适组合。如本文所使用的,计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光缆传递的光脉冲)、或者通过导线传输的电信号。
本文中所描述的计算机可读程序指令可从计算机可读存储介质下载到相应的计算/处理设备或者经由网络(例如,因特网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可包括铜传输缆线、光学传输光纤、无线传输、路由器、防火墙、交换机、网关计算机及/或边缘服务器。在每个计算/处理装置中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以用于存储在相应的计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是采用一个或多个编程语言的任何组合编写的汇编指令、指令集体系架构(ISA)指令、机器指令、机器相关指令、微码、固件指令、状态设置数据、用于集成电路的配置数据、或者源代码或对象码(object code),编程语言包括诸如Smalltalk、C++等的面向对象的编程语言和诸如C编程语言等或类似编程语言的过程编程语言。计算机可读程序指令可全部在用户的计算机上执行、部分在用户的计算机上作为单独软件包执行、部分在用户的计算机上且部分在远程计算机上执行、或全部在远程计算机或服务器上执行。在后面的情形中,远程计算机可通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可(例如使用因特网服务提供商通过因特网)连接到外部计算机。在一些实施例中,例如包括可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可通过利用计算机可读程序指令的状态信息以个性化电子电路来执行计算机可读程序指令,以便执行本发明的各个方面。
在本文中,本发明的各方面参考根据本发明的实施例的方法、设备(系统)和计算机程序产品的流程图示和/或方框图进行了描述。应当理解,流程图示和/或方框图的每个框以及流程图示和/或方框图的框的组合可通过计算机可读程序指令实现。
这些计算机可读程序指令可被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,以使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或方框图框中指定的功能/动作的构件。这些计算机可读程序指令也可存储在计算机可读存储介质中,其可指导计算机、可编程数据处理装置和/或其他设备以特定方式起作用,以使得在其中存储有指令的计算机可读存储介质包括制品,该制品包括实施在流程图和/或方框图框中指定的功能/动作的各方面的指令。
计算机可读程序指令也可被加载到计算机、其他可编程数据处理装置或其他设备上,以使一系列操作步骤在该计算机、其他可编程装置或其他设备上执行以产生计算机实现的过程,以使得在计算机、其他可编程装置或其他设备上执行的指令实现在流程图和/或方框图框中指定的功能/动作。
附图中的流程图和方框图说明根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这一方面,流程图或方框图中的每个框可表示模块、片段、或指令的部分,其包括用于实现所指定的逻辑功能的一个或多个可执行指令。在一些替代实现中,框中所指出的功能可不按图中的顺序发生。例如,取决于所涉及的功能,显示为连续的两个框实际上可基本同时执行,或者这些框有时可按相反的顺序执行。也应注意,方框图和/或流程图示的每个框以及方框图和/或流程图示中的框的组合可由执行所指定的功能或动作或者执行专用硬件和计算机指令的组合的基于专用硬件的系统实施。
本文中所使用的术语仅用于描述特定实施例的目的,而并不旨在限制。如本文中所使用的,单数形式“一”和“该”旨在也包括复数形式,除非上下文另外明确指出。进一步应了解,术语“包括”在本说明书中使用时指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但并不排除存在或附加一个或多个其他特征、整数、步骤、操作、元件、组件和/或其群组。
已提供各种实施例的描述以用于说明的目的,但不旨在穷尽或限于所公开的实施例。在不脱离所描述的实施例的范畴和精神的情况下,许多修改和变化对于本领域技术人员是显而易见的。本文中所使用的术语被选取以最好地解释实施例的原理、实际应用或对市场中发现的技术的技术改进、或者使得本领域技术人员能够理解本文所公开的实施例。

Claims (20)

1.一种电路,包括:
多个可重构单元,其能够重构以计算组合结果,
其中,所述多个可重构单元中的第一可重构单元的第一中间结果与所述多个可重构单元中的第二可重构单元的第二中间结果进行交换,
其中,所述多个可重构单元中的所述第一可重构单元利用所述第二中间结果计算所述组合结果的第一部分,
其中,所述多个可重构单元中的所述第二可重构单元利用所述第一中间结果计算所述组合结果的第二部分。
2.根据权利要求1所述的电路,其中,每个可重构单元能够重构以计算单个结果。
3.根据权利要求1所述的电路,其中,每个可重构单元包括可重构低精度算术单元。
4.根据权利要求3所述的电路,其中,每个可重构单元包括乘法-加法算术电路。
5.根据权利要求4所述的电路,其中,所述乘法-加法算术电路包括乘法器、第一加法器、格式器以及第二加法器。
6.根据权利要求1所述的电路,其中,所述第一中间结果与所述第二中间结果的所述交换包括:提供来自所述第一可重构单元的x个高位和来自所述第二可重构单元的x个低位。
7.根据权利要求1所述的电路,其中,所述多个可重构单元能够重构以计算x位数的多重乘法并将2*x位结果相加在一起以产生所述组合结果。
8.根据权利要求7所述的电路,其中,每个可重构单元能够重构以将2*x位累加器结果加到所述组合结果中。
9.根据权利要求1所述的电路,其中,所述多个可重构单元中的一组四个可重构单元提供四个单精度、两个双精度或一个四精度的复杂算术运算的执行,所述复杂算术运算包括乘法运算和加法运算。
10.一种系统,包括处理器和存储器,所述处理器包括:
多个可重构单元,其能够重构以计算组合结果,
其中,所述多个可重构单元中的第一可重构单元的第一中间结果与所述多个可重构单元中的第二可重构单元的第二中间结果进行交换,
其中,所述多个可重构单元中的所述第一可重构单元利用所述第二中间结果计算所述组合结果的第一部分,
其中,所述多个可重构单元中的所述第二可重构单元利用所述第一中间结果计算所述组合结果的第二部分。
11.根据权利要求10所述的系统,其中,每个可重构单元能够重构以计算单个结果。
12.根据权利要求11所述的系统,其中,每个可重构单元包括可重构低精度算术单元。
13.根据权利要求12所述的系统,其中,每个可重构单元包括乘法-加法算术电路。
14.根据权利要求13所述的系统,其中,所述乘法-加法算术电路包括乘法器、第一加法器、格式器以及第二加法器。
15.根据权利要求10所述的系统,其中,所述第一中间结果与所述第二中间结果的所述交换包括:提供来自所述第一可重构单元的x个高位和来自所述第二可重构单元的x个低位。
16.根据权利要求10所述的系统,其中,所述多个可重构单元能够重构以计算x位数的多重乘法并将2*x位结果相加在一起以产生所述组合结果。
17.根据权利要求16所述的系统,其中,每个可重构单元能够重构以将2*x位累加器结果加到所述组合结果中。
18.一种由处理器实现的方法,所述处理器包括多个可重构单元,所述多个可重构单元能够重构以计算组合结果,所述方法包括:
交换所述多个可重构单元中的第一可重构单元的第一中间结果与所述多个可重构单元中的第二可重构单元的第二中间结果;
由所述多个可重构单元中的所述第一可重构单元利用所述第二中间结果计算所述组合结果的第一部分;以及
由所述多个可重构单元中的所述第二可重构单元利用所述第一中间结果计算所述组合结果的第二部分。
19.根据权利要求18所述的方法,其中,每个可重构单元能够重构以计算单个结果。
20.根据权利要求19所述的方法,其中,每个可重构单元包括可重构低精度算术单元。
CN201880007833.7A 2017-01-23 2018-01-08 组合若干执行单元以计算单一宽标量结果 Active CN110199255B (zh)

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
CN110199255A CN110199255A (zh) 2019-09-03
CN110199255B true CN110199255B (zh) 2022-10-28

Family

ID=62906484

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880007833.7A Active CN110199255B (zh) 2017-01-23 2018-01-08 组合若干执行单元以计算单一宽标量结果

Country Status (7)

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

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

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0284425U (zh) * 1988-12-15 1990-06-29
JP2003084966A (ja) * 2001-09-14 2003-03-20 Japan Science & Technology Corp 半導体演算装置
US7062526B1 (en) * 2000-02-18 2006-06-13 Texas Instruments Incorporated Microprocessor with rounding multiply instructions
US8725990B1 (en) * 2004-11-15 2014-05-13 Nvidia Corporation Configurable SIMD engine with high, low and mixed precision modes
CN105652660A (zh) * 2016-01-07 2016-06-08 北京北广科技股份有限公司 一种基于单片机的获取分频频率控制字的方法

Family Cites Families (18)

* 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
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
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 富士通株式会社 演算回路、演算処理装置、及び除算方法
EP2949047B1 (en) * 2013-01-22 2021-03-31 Altera Corporation 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
RU2016134918A (ru) * 2014-03-27 2018-03-01 Интел Корпорейшн Логика обработки и способ диспетчеризации команд от многочисленных нитей
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
US10007487B1 (en) * 2016-06-30 2018-06-26 Altera Corporation Double-precision floating-point operation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0284425U (zh) * 1988-12-15 1990-06-29
US7062526B1 (en) * 2000-02-18 2006-06-13 Texas Instruments Incorporated Microprocessor with rounding multiply instructions
JP2003084966A (ja) * 2001-09-14 2003-03-20 Japan Science & Technology Corp 半導体演算装置
US8725990B1 (en) * 2004-11-15 2014-05-13 Nvidia Corporation Configurable SIMD engine with high, low and mixed precision modes
CN105652660A (zh) * 2016-01-07 2016-06-08 北京北广科技股份有限公司 一种基于单片机的获取分频频率控制字的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
并行计算机计算模型;H.T.Kung等;《计算机工程与科学》;19901231(第02期);全文 *

Also Published As

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

Similar Documents

Publication Publication Date Title
CN114402289B (zh) 多模式运算电路
TWI635446B (zh) 權重位移裝置、方法、系統以及機器可存取儲存媒體
US9519460B1 (en) Universal single instruction multiple data multiplier and wide accumulator unit
JP3940542B2 (ja) データプロセッサ及びデータ処理システム
JP2018055677A (ja) 外積累算演算のためのプロセッサおよび方法
CN110955406A (zh) 浮点动态范围扩展
US7558943B2 (en) Processing unit for broadcast parallel processing
MX2008010873A (es) Procesador de punto de flotacion con requerimientos de potencia reducidos para suprecision seleccionable.
US9940102B2 (en) Partial stochastic rounding that includes sticky and guard bits
US20210326111A1 (en) FPGA Processing Block for Machine Learning or Digital Signal Processing Operations
JP7129138B2 (ja) 16ビット浮動小数点乗算器を用いた行列と行列の乗算による複数精度整数乗算器
US10140090B2 (en) Computing and summing up multiple products in a single multiplier
CN110199255B (zh) 组合若干执行单元以计算单一宽标量结果
US11029921B2 (en) Performing processing using hardware counters in a computer system
AU2022231845B2 (en) Hexadecimal floating point multiply and add instruction
US8924447B2 (en) Double precision approximation of a single precision operation
TWI852292B (zh) 執行指令以將輸入值從一種資料格式轉換為另一種資料格式之硬體裝置
US12056460B2 (en) Dadda architecture that scales with increasing operand size
US20240211211A1 (en) Mac apparatus using floating point unit and control method thereof
JP2024529665A (ja) マスクされたシフト加算演算
CN118176482A (zh) 融合模乘加运算
Irwin et al. Introduction to the Special Issue on Computer Arithmetic
Kumar et al. Mode Enabled Coprocessor for Precision Multipliers
JP2013515319A (ja) 分岐なし高速ベクトル除算計算

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant