CN105760135B - 使用紧凑的运算处理元件进行处理的计算设备 - Google Patents
使用紧凑的运算处理元件进行处理的计算设备 Download PDFInfo
- Publication number
- CN105760135B CN105760135B CN201610080760.7A CN201610080760A CN105760135B CN 105760135 B CN105760135 B CN 105760135B CN 201610080760 A CN201610080760 A CN 201610080760A CN 105760135 B CN105760135 B CN 105760135B
- Authority
- CN
- China
- Prior art keywords
- equipment
- lphdr
- execution unit
- dynamic range
- total quantity
- 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
Links
- 238000000034 method Methods 0.000 title claims description 65
- 238000004364 calculation method Methods 0.000 title description 15
- 230000008569 process Effects 0.000 title description 10
- 238000012545 processing Methods 0.000 claims abstract description 60
- 238000013461 design Methods 0.000 claims description 58
- 238000005516 engineering process Methods 0.000 claims description 32
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 claims description 25
- 229910052710 silicon Inorganic materials 0.000 claims description 25
- 239000010703 silicon Substances 0.000 claims description 25
- 238000007667 floating Methods 0.000 claims description 22
- 230000014509 gene expression Effects 0.000 claims description 21
- 238000004519 manufacturing process Methods 0.000 claims description 8
- 238000012360 testing method Methods 0.000 description 69
- 238000004422 calculation algorithm Methods 0.000 description 34
- 239000013598 vector Substances 0.000 description 31
- HUTDUHSNJYTCAR-UHFFFAOYSA-N ancymidol Chemical compound C1=CC(OC)=CC=C1C(O)(C=1C=NC=NC=1)C1CC1 HUTDUHSNJYTCAR-UHFFFAOYSA-N 0.000 description 23
- 238000004088 simulation Methods 0.000 description 23
- 238000003860 storage Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 19
- 230000007246 mechanism Effects 0.000 description 18
- 230000008901 benefit Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 10
- 230000002708 enhancing effect Effects 0.000 description 8
- 230000006399 behavior Effects 0.000 description 7
- 239000003990 capacitor Substances 0.000 description 7
- 241000321461 Mycteroperca phenax Species 0.000 description 6
- 238000004590 computer program Methods 0.000 description 6
- 229910002056 binary alloy Inorganic materials 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000001965 increasing effect Effects 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 4
- 239000000047 product Substances 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 3
- 235000013399 edible fruits Nutrition 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 210000000056 organ Anatomy 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 238000012421 spiking Methods 0.000 description 2
- 239000000126 substance Substances 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 108010032595 Antibody Binding Sites Proteins 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- 238000000342 Monte Carlo simulation Methods 0.000 description 1
- 241001282153 Scopelogadus mizolepis Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013142 basic testing Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000003814 drug Substances 0.000 description 1
- 229940079593 drug Drugs 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000003475 lamination Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000000329 molecular dynamics simulation Methods 0.000 description 1
- 239000002071 nanotube Substances 0.000 description 1
- 239000002070 nanowire Substances 0.000 description 1
- 210000005036 nerve Anatomy 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000000704 physical effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000003325 tomography Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/4833—Logarithmic number system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/5235—Multiplying only using indirect methods, e.g. quarter square method, via logarithmic domain
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17724—Structural details of logic blocks
- H03K19/17728—Reconfigurable logic blocks, e.g. lookup tables
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Nonlinear Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
- Image Processing (AREA)
- Complex Calculations (AREA)
- Multi Processors (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明涉及处理器或其它设备,例如可编程和/或大规模并行的处理器或其它设备,包括设计成对低精度但高动态范围(LPHDR运算)的数值执行运算操作(可能但不一定包括例如加法、乘法、减法和除法中的一个或多个)的处理元件。这样的处理器或其它设备可例如在单芯片上实现。不管是否在单芯片上实现,在本发明的某些实施例中的处理器或其它设备中的LPHDR运算元件的数量都明显超过(例如,大于其3倍至少20个)在处理器或其它设备中的被设计成执行传统精度的高动态范围运算(例如32位或64位浮点运算)的运算元件(如果有的话)的数量。
Description
本申请是申请日为2010年6月16日、申请号为201080036873.8,以及发明名称为“使用紧凑的运算处理元件进行处理”的中国发明专利申请的分案申请。
技术领域
本发明通常涉及数据处理,特别是涉及数据计算。
背景技术
快速计算的能力已变得对人类非常重要。天气和气候预报、医疗应用(例如药物设计和无创成像)、国防、地理勘探、金融建模、互联网搜索、网络通信、在各种领域中的科学研究,以及甚至新计算硬件的设计,每个都变得依赖于快速执行大量计算的能力。可看到、听到和理解的未来的进步,例如复杂纳米级系统的计算机辅助设计或消费产品的发展,将要求经济地获得甚至更大的计算能力。
戈登·摩尔(Gordon Moore)的预测(每美元的计算性能将每两年加倍)已证明在过去30年间是有效的,且看起来可能以某种形式继续。但尽管有这个快速的指数增加,事实是,可从硅获得的固有计算能力比从软件可获得的固有计算能力增长得快得多。换句话说,虽然计算硬件的理论计算能力指数地增长,但是,对于任何接近硬件的理论最大计算能力的情况,软件访问硬件所需要的接口限制了软件使用硬件来执行计算的能力。
考虑包含大约十亿个晶体管的现代硅微处理器芯片,时钟大约是1GHz。在每个周期上,芯片将大约一个有用的运算操作传送到它正运行的软件。例如,一个值可能在寄存器之间传递,而另一值可能递增,也许实现乘法。这并不与芯片在30年前做的事情十分不同,虽然今天时钟速率也许快1000倍。
真正的计算机被构造为物理设备,且由其构造了机器的物理机制常常展示复杂和有意义的行为。例如,硅MOSFET晶体管是能够执行有意义的非线性运算(例如求幂) 的设备。两条电线的连接可增加电流。如果被正确地配置,十亿硅晶体管和电线应能够在基本部件的几个传播延迟(如果总体设计是传统的数字设计,则是“周期”)内执行十亿次有意义的计算运算中的相当大的一部分。然而,今天的CPU芯片使用十亿个晶体管来使软件每周期只能够执行几次这样的运算,而不是执行十亿次中的相当大一部分的这样的运算(这本来是有可能的)。
发明内容
本发明的实施例的目的在于处理器或其它设备,例如可编程的和/或大规模并行的处理器或其它设备,其包括设计成对低精度但高动态范围的数值(“LPHDR运算”)执行运算操作(可能但不一定包括例如加法、乘法、减法和除法中的一个或多个)的处理元件。这样的处理器或其它设备可例如在单个芯片上实现。不管是否在单个芯片上实现,在本发明的某些实施例中的处理器或其它设备中的LPHDR运算元件的数量都明显超过处理器或其它设备中被设计成执行传统精度的高动态范围运算(例如32位或64位浮点运算)的运算元件的数量(例如,超过后者的数量的三倍加至少20个之和)。
在一些实施例中,“低精度”处理元件执行运算操作,其产生的结果常常与精确结果相差至少0.1%(1%的十分之一)。这是比广泛使用的IEEE 754单精度浮点标准差得多的精度。本发明的可编程实施例可使用即使对于这些异乎寻常地大的相对误差也能合适地起作用的算法来编程。在一些实施例中,处理元件具有“高动态范围”,其含意是,它们能够在跨越至少高达从百万分之一到一百万的范围上执行输入操作和/或产生输出。
附图说明
图1是根据本发明的一个实施例的SIMD处理器的示例性总体设计。
图2是根据本发明的一个实施例的SIMD处理器的处理元件阵列的例子。
图3是根据本发明的一个实施例,处理元件阵列中的处理元件如何与处理器的其它部分通信的例子。
图4是根据本发明的一个实施例的处理元件的示例性设计。
图5是根据本发明的一个实施例的示例性LPHDR数据字格式。
图6是根据本发明的一个实施例的LPHDR运算单元的示例性设计。
图7是初始图像。
图8是根据本发明的一个实施例通过模糊核模糊的图像。
图9是根据本发明的一个实施例使用浮点运算通过重叠合法(Richardson Lucy)去卷积产生的图像。
图10是根据本发明的一个实施例,添加了噪声(fp+噪声)的使用LPHDR浮点运算通过Richardson Lucy去卷积产生的图像。
图11是根据本发明的一个实施例使用LPHDR对数运算(Ins)通过Richardson Lucy去卷积产生的图像。
具体实施方式
如上所述,今天的CPU芯片没有充分地利用其晶体管。例如,包含十亿个晶体管的常规CPU芯片可能使软件能够每时钟周期只执行几次运算。虽然这是高度低效的,但由于被广泛接受的有效的原因,本领域的普通技术人员以这种方式设计CPU。例如,这样的设计满足与早期设计的软件兼容的(常常必要的)要求。此外,它们提供极大的精度,使用一般32或64位长的整数执行精确的运算,并使用32和64位浮点数执行相当准确和广泛归一化的运算。很多应用需要这种精度。作为结果,常规CPU一般被设计成使用大约百万量级的晶体管来执行运算操作,以提供这样的精度。
有很多经济上重要的应用,然而,其不是对精度特别敏感的,且如果有能力大大提高对那些百万量级的晶体管中的固有的计算能力的利用比率(以每晶体管的应用性能的形式),将会是非常有利的。用于一般用途计算的当前结构未能提供这个能力。
由于常规计算机(例如一般微处理器)的弱点,其它类型的计算机被发展以获得更高的性能。这些机器包括单指令流多数据流(SIMD)设计、多指令流多数据流(MIMD) 设计、可重构结构(例如现场可编程门阵列(FPGA))和图形处理单元设计(GPU),其在应用于一般用途计算时,可被视为单指令流多线程(SIMT)设计。
SIMD机器遵循顺序的程序,每个指令对一组数据执行运算。它们以两种主要类型出现:矢量处理器和阵列处理器。矢量处理器通过一个处理元件(或小量这样的元件) 使数据涌出。数据流的每个部分都被类似地处理。矢量机器通过消除很多指令获取/解码运算并通过对处理器采用流水线技术来增加速度,从而使得运算的时钟速度增加。
阵列处理器将数据分布在处理元件(PE)的栅格各处。每个元件具有其自己的存储器。指令被从中央控制单元顺序地广播到PE。每个PE对其本地数据执行广播指令(常常有使该周期保持空闲的选择)。阵列处理器通过有效地使用硅(使用仅仅一个指令获取/解码单元,以并行地驱动很多小的简单执行单元)来增加速度。
使用定点运算在多种位宽(例如1、4、8和更宽)构造阵列处理器,并使用浮点运算来构造阵列处理器。小的位宽允许小的处理元件,这允许将它们中的更多个装配在计算机中,但很多运算必须被顺序地实施以执行常规运算计算。较宽的宽度允许常规运算操作在单个周期中完成。实际上,较宽的宽度是合乎需要的。最初设计有小位宽的机器,例如连接机器-1和Goodyear大规模并行处理器(每个使用1位宽处理元件),朝着更宽的数据路径发展,以更好地支持快速运算,产生例如连接机器-2和MasPar机器的机器,连接机器-2包括32位浮点硬件,MasPar机器继Goodyear机器之后,并在MasPar-1中提供4位处理元件和在MasPar-2中提供32位处理元件。
阵列处理器还被设计成使用数字的模拟表示和模拟电路来执行计算。SCAMP是这样的机器。这些机器提供低精度运算,其中每个运算可能在其结果中引入也许几个百分点的误差。它们还将噪声引入其计算中,所以该计算是不可重复的。此外,它们只代表例如相应于8位定点值的小范围的值,而不是提供一般32位或64位浮点表示的大动态范围。由于这些限制,SCAMP没有被预期为通用计算机,而相反被设计并用于图像处理和对生物早期视觉过程建模。这样的应用不需要硬件中的全范围的运算操作,且 SCAMP例如从其设计中省略了通用除法和乘法。
虽然SIMD机器在八十年代是流行的,随着微处理器的价格/性能改进,设计者开始从大量通信微处理器构造机器。这些MIMD机器是快速的,并可具有与其部件微处理器相当的价格/性能,但它们展示与那些部件相同的低效率,因为它们向其软件传送相对小的每晶体管的计算能力。
现场可编程门阵列(FPGA)是包含通用数字元件的大栅格的集成电路,在那些元件之间有可重构的布线。该元件最初是单数字门,例如与门和或门,但发展到较大的元件,所述较大的元件能例如被编程为根据任何布尔函数将6个输入映射到1个输出。这个结构允许FPGA被从外部源配置以执行多种数字计算,这允许该设备被用作CPU的联合处理器以加速计算。然而,对整数(特别是对浮点数)的运算操作(例如乘法和除法),需要很多门(gate),并可吸收一大部分的FPGA的通用资源。由于这个原因,现代FPGA常常使其区域的相当大一部分专用于提供数十个或数百个乘法器块,其可被用于代替通用资源来进行需要乘法的计算。这些乘法器块一般执行18位或更宽的整数乘法,并使用很多晶体管,与乘法器电路在作为通用CPU的一部分时所做的类似。
现有的现场可编程模拟阵列(FPAA)与FPGA类似,但它们的可重构元件执行模拟处理。这些设备通常被预期进行信号处理,例如帮助型神经回路。它们的精度相对低,具有相对低的动态范围,并将噪声引入计算中。它们没有被设计为或预期用作通用计算机。例如,它们没有被本领域的普通技术人员看作可使用浮点运算运行各种复杂算法的机器,这些算法一般在高性能数字计算机上运行。
最后,图形处理单元(GPU)是各种并行处理器,这些并行处理器发展以便为个人计算机提供高速图形能力。它们为某些任务提供具有非常高性能的标准浮点计算能力。它们的计算模型有时基于具有数千个几乎相同的计算线程(SIMT),其由一组类似SIMD 的内部计算引擎执行,每个计算引擎被指向并重定向以执行工作,缓慢的外部DRAM 存储器已为该工作提供有数据。如同执行标准浮点运算的其它机器,它们对该运算使用很多晶体管。它们,在上述讨论的意义上,与通用CPU一样浪费那些晶体管。
一些GPU包括对16位浮点值的支持(有时称为“半”格式)。GPU制造商(目前例如NVIDIA或AMD/ATI)将这个能力描述为用于再现具有比通常的32位RGBA格式更高的动态范围的图像,该格式对每种颜色使用8位定点数据,同时也节省空间,优于对颜色分量使用32位浮点。工业光魔特效公司(ILM)在其OpenEXR标准中独立地定义了相同的表示,他们将其描述为“由工业光魔开发的用在计算机成像应用中的高动态范围(HDR)图像文件格式”。维基百科2008年底(late 2008)这样描述了该16位浮点表示:这个格式被用在几种计算机图形环境中,包括OpenEXR、OpenGL和D3DX。优于8位或16位二进制整数的优点是,增加的动态范围允许更多的细节以加亮和阴影保存。优于32位单精度二进制格式的优点是,它需要一半的存储和带宽。
当图形处理器包括对16位浮点的支持时,该支持与对32位浮点以及递增地对64位浮点的支持并行。也就是说,对需要16位浮点格式的那些应用,支持16位浮点格式,但也支持较高的精度格式,因为它们被认为对传统图形应用,以及也对所谓的“通用” GPU应用是需要的。因此,现有的GPU使相当多的资源专用于32(以及递增地64)位运算,并且在上述讨论的意义上是对晶体管的浪费。
上面提到的各种结构都试图从硅得到比在传统处理器设计中可获得的更多的性能。但传统处理器的设计者也努力用可用晶体管的巨大增加来提高其机器的性能。由于历史和经济原因,这些机器常常需要支持大的现有指令集,例如Intel×86指令集。由于收益递减的法则,这是困难的,该法则不能通过使晶体管数量加倍来使待传送的性能加倍。这些设计者的努力的一个方面提高了运算操作的精度,因为晶体管是大量的,且一些应用可被明显加速,如果处理器本地(natively)支持长(例如,64位)数字。随着本地定点精度从8位到16位到32位到64位以及浮点从32位到64以及有时128位的增加,程序设计者从高精度方面考虑,并基于计算机处理器提供这样的精度的假设来发展算法,因为它作为每个新一代硅芯片的整体部分出现,因此是“自由的”。
本发明的实施例使用与上述那些方法根本不同的方法来有效地提供计算能力。特别是,本发明的实施例的目的是用于使用低精度高动态范围(LPHDR)处理元件来执行计算(例如运算操作)的计算机处理器或其它设备。
一种LPHDR运算代表具有大约0.1%的精度的从一百万分之一直到一百万的值。如果使用浮点运算的方法来表示和操作这些值,它们将具有不多于10位加上符号位的二进制尾数,以及至少5位加上符号位的二进制指数。然而,乘和除这些浮点值的电路将相对大。可选的实施例的一个例子是使用这些值的对数表示。在这样的方法中,这些值需要相同数量的位来表示,但乘法和除法分别被实现为对数表示的加法和减法。加法和减法可如下所述被有效地实现。作为结果,运算电路的区域保持相对小,且较大数量的计算元件可被安装到给定的硅区域中。这意味着机器可每时间单位或每单位功率执行较大数量的运算,这为其提供了那些计算能够在LPHDR框架中被表达的优点。
另一实施例是使用模拟表示和处理机制。LPHDR运算的模拟实现可能胜过数字实现,因为它往往使用晶体管或其它物理设备的原生模拟物理性质,而不是只使用设备的行为的数字子集。设备的原生能力的这个较充分的使用可允许用于完成LPHDR运算的较小机制。在最近几年中,在硅电路的领域中,模拟方法已被数字方法代替。这部分地是由于与模拟设计比较,进行数字设计更容易。也部分地是由于与模拟技术比较,数字技术的连续快速微缩(摩尔定律)。特别是,在深亚微米维度,模拟晶体管不再如它们在早先年代的较大尺寸的技术中那样工作。这种常见行为的变化使模拟设计近年来更加困难。然而,数字晶体管实际上是以数字方式使用的模拟晶体管,意味着数字电路实际上是被设计成试图在完全打开和完全关闭状态之间转换晶体管的模拟电路。随着微缩的继续,甚至对晶体管的这个使用也开始面对模拟行为的真实性。用于数字使用的晶体管的微缩预期会停止或需要数字设计者逐渐承认和处理模拟问题。由于这些原因,数字化的实施方式可能不再是容易的、可靠的和可微缩的,且LPHDR运算的模拟实施例可在商业结构中占优势。
因为LPHDR处理元件相对小,单个处理器或其它设备可包括适合于彼此并行地操作的非常大数量的LPHDR处理元件,并因此可构成大规模并行LPHDR处理器或其它设备。由于至少两个原因,这样的处理器或其它设备被描述或实践为由本领域的普通技术人员用于一般目的计算的装置。首先,本领域的普通技术人员通常认为,LPHDR计算且特别是大量LPHDR计算,不管是否以大规模并行方式被执行,作为对适度地一般的计算的基础都不是实际的。其次,本领域的普通技术人员通常认为,如通过紧凑的运算处理单元实现的,在机器内以及进出机器的处理单元之间的带宽不相应地增加的情况下,在单芯片上或在单个机器中的大量更高精度计算是没有用的,因为计算是受到线限制的,且运算方法可被认为是在没有成本的情况下可获得的。
尽管有这些观点(在芯片上或在大规模并行机器中的大量运算不是有用的,以及大量LPHDR运算甚至更糟),本文公开的本发明的实施例证明,大规模并行的LPHDR设计实际上是有用的,并在至少几种重要应用中提供相当实际的益处。
总之,现代数字计算系统提供高精度运算,但该精度是昂贵的。现代双精度浮点乘法器可能需要大约百万量级的晶体管,尽管只有少量晶体管需要执行低精度乘法。尽管在本领域的普通技术人员中的一般看法是现代应用需要高精度处理,实际上各种有用的算法以低得多的精度发挥合适的作用。作为结果,这样的算法可由根据本发明的实施例实现的处理器或其它设备执行,这较接近于实现使用几个晶体管来相乘和使用线连接来相加的目标,因而能够使用相对少量的物理资源(例如,单硅芯片)执行大规模并行运算计算。虽然某些专门的任务可以低精度起作用,但是,一般今天在通用计算机上执行的相对通用的计算可以低精度进行并不是显而易见的(且实际上被本领域的普通技术人员明确地视为是错误的)。然而,实际上,可产生各种有用和重要的算法,以在比32位精度低得多时,在大规模并行计算框架中发挥合适的作用,且本发明的某些实施例支持这样的算法,从而大大提高晶体管的使用效率,且从而提供与常规计算机相比提高的速度、功率和/或成本。
现在将描述根据本发明的实施例实现的各种计算设备。这些实施例的一些可以是SIMD计算机结构的实例。可使用其它结构,例如MIMD结构、可编程阵列结构(例如 FPGA和FPAA)、或GPU/SIMT结构。本文公开的技术可例如使用任何具有这样的现有结构的处理器或其它设备来实现,并以本文公开的任何方式使用LPHDR运算单元(如果有的话)来代替或增大在处理器或其它设备中的一些或所有现有的运算单元。然而,根据本发明的实施例实现的设备不需要以现有的处理器设计开始,而相反可从头开始,以将LPHDR运算单元包括在刚刚描述的任何结构或任何其它结构内。
可例如使用特定类型的SIMD计算机的结构(阵列处理器)来实现本发明的实施例。存在在科学和商业文献中描述的阵列处理器的很多变形和特定实例。例子包括llliac 4、连接机器1和2、Goodyear MPP和MasPar系列的计算机。
然而,本发明的实施例不需要被实现为SIMD计算机。例如,本发明的实施例可被实现为FPGA、FPAA或用于灵活连接一组处理元件的有关结构。例如,本发明的实施例可被实现为GPU/SIMT和MIMD,等等。例如,本发明的实施例可被实现为使用LPHDR 运算处理元件来提供与传统结构相比使用少量资源(例如,晶体管或体积)进行计算的任何类型的机器。此外,在本文对本发明的实施例内所提及的“处理元件”应被更一般地理解为任何类型的执行单元,不管是用于执行LPHDR运算还是其它。
在图1中示出了示例性SIMD计算系统100。计算系统100包括一组多个处理元件(PE)104。有时还包括控制单元(CU)106、I/O单元(IOU)108、各种外围设备110 和主机计算机102。这组PE在本文被称为“处理元件阵列”(PEA),尽管它不需要是二维的或阵列或栅格或其它特定的布局。一些机器包括额外的部件,例如在固特异 (Goodyear)MPP中被称为“驿站存储器”的额外的存储系统,但这些额外的元件在计算机中不是必需的,也不需要以此理解本发明的实施例,因此在这里为了解释的清楚而省略。本发明的一个实施例是在图1中所示类型的SIMD计算系统,其中在PEA 104 中的一个或多个(例如全部)PE是LPHDR元件,正如该术语在本文所使用的含义那样。
主机102负责计算系统100的总体控制。它执行对传统单一处理器典型的连续或大部分连续的计算。主机102可具有更复杂的结构,当然包括各种并行性。确实,在单个机器中组合多个计算结构的不同种类的计算系统是对本发明的实施例的良好使用。
主机102的目的是使PEA 104以有用的方式执行大量计算。它通过使PE一般对数据执行彼此并行的计算来完成,所述数据被局部存储在每个PE中。如果有很多PE,在每个时间单位期间完成很多工作。
在PEA 104中的PE可能能够大致与主机102执行其计算一样快地执行其单独的计算。这意味着,对于使主机102试图在与主机或PEA的最小时间步长一样精细的时间尺度上控制PEA 104,可能是效率低的。(在传统数字设计中,该最小时间将是时钟周期。)由于这个原因,在该结构中可包括专门的控制单元(CU)106。CU 106的主要任务是从在概念上是CU106的一部分的指令存储器取回并解码指令,以及将部分解码的指令发到PEA 104中的所有PE。(这可被CU软件视为对所有PE大致同时发生,虽然它不需要是确切地同步的,且事实上使用异步设计可能是有效的,在异步设计中,在不同的完成阶段的多个指令同时逐渐穿过PEA而传播,例如作为一系列波前来传播。)
在包括CU 106的设计中,主机102一般将对PEA 104的指令(程序)载入CU指令存储器(在图1中未示出)中,接着指示CU 106解释程序,并使PEA 104根据指令进行计算。程序可例如通常看起来类似于一般机器语言程序,具有在PE中和PE之间产生数据移动、逻辑运算、运算操作等的指令,以及在CU 106内与控制流运算一起进行类似的运算的其它指令。因此,CU 106可运行一般类型的程序,但具有将大量并行指令发到PEA 104的能力。
为了使数据进出CU 106和PEA 104,I/O单元108可使CU 106和PEA 104通过接口连接于主机102、主机的存储器(在图1中未示出),和系统的外围设备110(例如外部存储器(例如磁盘驱动器),用于计算结果的可视化的显示设备,以及有时是特殊的高带宽输入设备(例如视觉传感器))。PEA的比主机102更快的处理数据的能力对使IOU 108对其一些数据传输能够完全绕过主机102是有用的。此外,主机102可具有其自己的与外围设备110进行通信的方式。
图1所示的特定实施例只为了举例的目的而示出,且并不构成本发明的限制。例如,可替代地,由CU 106执行的功能可相反由省略了CU 106的主机102执行。CU 106可被实现为远离PEA 104(例如,片外)的硬件,或CU 106可接近于PEA 104(例如,片上)。I/O可通过省略了IOU 108的CU 106被路由,或通过单独的I/O控制器108被路由,如所示。此外,主机102是可选的;CU 106可包括例如CPU,或者包括足以代替主机102所执行的功能的部件。图1所示的外围设备110是可选的。图1所示的设计可具有特殊存储器,例如Goodyear MPP的“驿站存储器”,其提供中间水平的局部存储。可例如使用三维制造技术将这样的存储器接合到LPHDR芯片,以从PEA 104中的PE 提供对存储器的相对快的并行访问。
除了与CU 106和IOU 108以及可能其它机构通信以外,PEA 104本身还具有使数据在阵列内移动的方式。例如,PEA 104可以被实现成,使得数据可只从PE移动到其最近邻,也就是说,没有长距离转移。图2和3示出使用这种方法的本发明的实施例,其中最近邻是朝着北、东、西和南的四个相邻的PE,称为NEWS设计。例如,图2示出PEA 104中的PE的子集,即,PE202、PE 204、PE 206、PE 208和PE 210。当CU 106 发出数据移动指令时,所有PE访问来自其各自的特定最近邻的数据,或将数据发送到其各自的特定最近邻。例如,每个PE可访问在其西部的邻居中的特定数据值,并将它复制到其自己的本地存储器中。在一些实施例,例如一些模拟实施例中,这些类型的转移可能导致所复制的值的一些降级。
图3示出包括到IOU 108的数据连接的PE 302。PE 302在北部连接到PE 304、在东部连接到PE 306、在南部连接到PE 308和在西部连接到PE 310。然而,将信号从PEA 104内部驱动出而到IOU 108通常需要物理上相对大的驱动电路或类似的机构。在每个PE处有那些电路,可能会吸收硬件实现技术(例如VLSI区域)的很多可用资源。此外,具有从每个PE到IOU 108的独立连接,意味着很多这样的连接和长连接,其也可能会吸收很多可用的硬件资源。由于这些原因,在PE和IOU 108之间的连接可被限制到在 PE阵列104的边缘处的那些PE。在这种情况下,为了获得从PEA 104出来,或也许进入PEA 104的数据,数据在阵列的边缘处被读取和写入,且CU指令被执行,以在PEA 104的边缘和内部之间移动数据。该设计可允许使用直接连接将数据从IOU 108向内推到阵列中的任何PE,但实现数据的读出则可能需要使用CU 106以将数据移动到可被 IOU 108读取的边缘。
在CU 106和PEA 104之间的连接具有类似的变化。一种设计可包括大致同时将指令驱动到所有PE中的能力,但另一方法是使指令穿过PEA 104逐渐流动(例如,以分立的时间步长移动)以到达PE。可以在本发明的实施例中实施的一些SIMD设计具有一种功能,通过该功能,PEA 104中的每个PE的态的“线或”或“线与”可在大约一个指令延迟时间中由CU106读取。
在文献中对这些问题有很多被充分研究的变化形式,其中的任一个可被合并到本发明的实施例中。例如,可使用互连(如8向局部互连)。该局部连接可包括各种距离跳跃的混合,例如距离4或16以及距离1。外部边缘可使用任何拓扑(例如环面或扭曲环面)连接。代替局部互连或除了局部互连以外,还可使用更复杂的全局互连,例如超立方体设计。此外,PEA 104(例如,芯片)的物理实现可被复制(例如,铺设在电路板上)以产生较大的PEA。该复制可形成单个栅格或其它布置,如同部件PEA那样,可以但不必要是栅格。
图4示出对PE 400的示例性设计(其可用于实现在PEA 104中的一个或多个PE)。PE 400存储局部数据。局部数据的存储器的数量从一个设计到另一设计明显地变化。它可依赖于可用于制造PE 400的实现技术。有时很少变化的值(常量)比频繁变化的值(寄存器)占用更小的空间,且一种设计可比寄存器提供更多的常量。例如,这可以是对常量使用单晶体管单元(例如,浮点闪存单元)而对寄存器使用多晶体管单元(例如, 6晶体管SRAM单元)的数字实施例的情况。有时情况反转,如可能是在模拟实施例中的情况,其中电容的相当大的区域可能需要确保常量的稳定的长期存储,且这样的实施例可具有比常量更多的寄存器。一般存储容量可以是存储在每个PE中的寄存器中和常量中的数十或数百个运算值,但这些容量可由寄存器调节。一些设计例如可具有寄存器存储但没有常量存储。一些设计可具有存储在每个PE中的数千或甚至多得多的值。所有这些变化都可反映在本发明的实施例中。
每个PE需要对其本地数据操作。由于这个原因,在PE 400内有数据路径402a-i、路由机构(例如复用器MUX 404)、以及执行某组逻辑和运算操作的部件(例如逻辑单元406和LPHDR运算单元408)。LPHDR运算单元408执行LPHDR运算操作,正如该术语在本文使用的含义那样。由PE 400接收、输出和操作的输入、输出和中间“值”可例如采取代表数值的电信号的形式。
PE 400也可具有在图4中被示为掩码410的一个或多个标志位。掩码410的目的是使一些PE(其中设置特定的掩码位的PE)能够忽略由CU 106发出的一些指令。这允许在PEA104中的所有PE的常见同步行为的某种变化。例如,CU 106可根据PE中的特定寄存器是正的还是负的,来发出使每个PE将其掩码410复位或置位的指令。随后的指令,例如运算指令,可包括意味着指令应只由掩码410复位的那些PE执行的位。这个组合具有有条件地执行每个PE中的那些运算指令的效应,取决于在该PE中的特定寄存器是否是正的。如同传统计算机的比较指令一样,对置位和清除掩码的机构有很多可能的设计选择。
PE的运算由从CU 106接收的控制信号412a-d控制,为了举例而不是限制的目,在图4中只示出其中四个控制信号。我们并未示出这个机构的细节,但控制信号412a-d 指定PE 400或其邻居之一中的哪些寄存器或常量存储器值发送到数据路径,哪些运算应由逻辑406或运算408或其它处理机构执行,结果应存储在寄存器中的哪些位置,如何置位、复位和使用掩码410,等等。这些问题在关于SIMD处理器的文献中被充分描述。
该PE 400和PEA设计的很多变化是可能的,并落在本发明的范围内。数字PE可具有移位器、查询表和例如在文献中描述的很多其它机构。模拟PE可具有基于时间的运算符、过滤器、具有全局广播信号的比较器以及例如在文献中描述的很多其它机构。 PEA 104可包括全局机构,例如对数字PEA的线或或线与,或对模拟PEA的线求和。同样地,在文献中充分描述有关于数字和模拟计算结构的很多变化。
例如,不同于和/或,除了加法和乘法,还可支持LPHDR操作。例如,只可执行乘法和函数(1-X)的机器可用于对加法和其它运算操作近似。其它组的LPHDR运算可用于使用本领域的普通技术人员公知的技术来对LPHDR运算操作(例如加法、乘法、减法和除法)做近似。
本发明的实施例的独特的一个方面是将LPHDR运算机构包括在PE中。现在将描述这样的机构的实施例。
LPHDR运算单元408的一个数字实施例对数值的数字(二进制)表示进行操作。在一个数字实施例中,这些数值由其对数表示。这样的表示称为对数数值系统(LNS),其被本领域的普通技术人员充分理解。
在LNS中,数值被表示为符号和指数。当使用数字硬件工作时,存在对数的隐式底数,一般是2。在本实施例中,底数2用于举例的目的。作为结果,值(比如B)由其符号和其绝对值的底数为2的对数(比如b)表示。对于有至多比如1%(百分之一) 的表示误差的数值,这个对数的分数部分应以足够的精度表示,在分数中的最不可能的变化相应于值B的大约1%的变化。如果分数使用6位来表示,将分数增加或减少1,相应于将B乘以或除以2的64次方根,其大约为1.011。这意味着在本实施例中数值可以大约1%的倍增误差表示。所以,在本示例性实施例中,该表示的分数部分具有6位。
此外,在本实施例中处理的值的空间具有高动态范围。为了表示绝对值从比如一百万分之一到一百万的数值,对数的整数部分必须长到足以表示正或负的十亿的以2为底的对数。该对数为大约29.9。在本实施例中,对数表示的整数部分是5位长,以表示从 0到31的值,这就足够了。还有在指数中的符号位。负对数使用2的补充表示来表示。
在LNS中,零值相应于对数负无穷大。可选择一种表示来明确地表示这个特殊值。然而,为了使运算电路使用的资源(例如,区域)最小化,本实施例由最负的可能对数表示零,该对数是-32,相应于2的互补位表示“100000 000000”,并表示大约2.33E-10 的值。
当计算时,可能出现运算不能产生合理的值的情况。一个例子是太大而不能以选定的字格式表示的数值,例如当乘以或加上两个大数值时,或当被零(或接近零)除时。对这个问题的一个一般方法是,允许值被标记为不是数值(NAN),并确保,如果问题出现或如果其输入的任一个是NAN,则每个运算产生NAN。本实施例使用如将在下文中描述的这种方法。
图5示出在本实施例中的这些数值的字格式500。它具有一个NAN位502a、值的符号的一个位502b、以及表示对数的12位502c-e。对数位包括5位整数部分502d和6 位分数部分502e。为了允许对数是负的,有对数的符号位502c,其以2的互补形式表示。如果在计算值时出现某种问题,NAN位被置位。图5所示的字格式500只是一个例子,而不构成本发明的限制。可使用其它变化,只要它们具有低精度和高动态范围。
图6对图5所示的表示示出LPHDR运算单元408的示例性数字实现。单元408接收两个输入A 602a和B 602b,并产生输出602c。输入602a-b和输出602c可例如采取根据图5所示的表示来表示数值的电信号形式,如也适用于通过单元408的部件在单元 408内传输的信号。每个输入602a-b和输出602c由值和NAN(不是数值)位组成。单元408由来自CU 106的控制信号412a-d控制,控制信号确定将对输入602a-b执行哪些可用的运算操作。在这个实施例中,由加法器/减法器604、乘法器606和除法器608对输入602a-b并行地执行所有可用的运算操作。加法器/减法器604执行LPHDR加法和减法,乘法器606执行LPHDR乘法,而除法器608执行LPHDR除法。
期望结果(来自加法器/减法器604、乘法器606和除法器608的输出中)由复用器(MUX)610a和610b选择。右手MUX 610b将期望值发送到输出602c。左手MUX 610a 将来自期望运算的相应NAN位发送到或门612,如果任一输入是NAN或如果特定的运算操作产生NAN,则或门612输出被置位的NAN位。计算结构文献讨论了很多变化,其可合并到图6所示的实施例中。
LNS运算具有极大优点,在于乘法(MUL)和除法(DIV)非常容易计算,并占用很少几个物理资源(例如,硅实施例中的小区域)。结果的符号是操作数的符号的异或(exclusive-or)。在MUL的情况下,输出的对数部分是和,或在DIV的情况下,输出的对数部分是差。对数的和或差可溢出,产生NAN结果。在LNS运算中某些其它运算也是容易的。例如,平方根相应于将对数分为两半,其在我们的表示中意指简单地将它向右移动一位位置。
因此,图6中的乘法器606和除法器608被实现为简单地加或减其输入的电路,其是2的互补二进制数值(其又碰巧是对数)。如果有溢出,它们对NAN输出1。
在LNS中,即,图6中的加法器/减法器604中实现加法和减法,遵循在关于LNS 的文献中使用的一般方法。考虑加法。如果我们有由其对数b和c表示的两个正值B和 C,B和C的和的表示是log(B+C)。本领域技术人员公知的计算这个结果的方法基于注意到log(B+C)=log(B*(1+C/B))=log(B)+log(1+C/B)=b+F(c-b),其中F(x)=log(1+2^x)。因此,本实施例使用本领域技术人员已知的标准数字技术来计算c-b,通过F馈送,并将结果加到b。
关于LNS的很多已公布的文献涉及如何计算F(x),对ADD的特殊函数以及对SUM 的类似函数。这两个函数常常共享电路,且这就是为什么单个组合的加法器/减法器604 被用于图6的实施例中。有计算这些函数或对它们的近似的很多已公布的方式,包括当值具有低精度时如何完成此计算的讨论。可使用任何这样的方法或其它方法。一般来说,对大规模并行LPHDR运算的更适当的变化是需要最少使用资源例如电路区域的的变化,利用下列事实:在图6的实施例中使用的表示是低精度,以及运算操作不需要是确定性的,也不返回在低精度表示内的最准确的可能答案。因此,本发明的实施例可使用不计算最佳可能答案的电路,甚至在低精度表示中可用的有限选择中。
为了实现选定的PE的条件运算,本实施例能够基于计算的结果来将掩码标志410复位和置位。用于完成此操作的机制是CU 106包括使每个PE中的掩码410无条件地将其标志复位或置位的指令,以及对进入数据路径402f上的掩码410的值执行基本测试,并相应地设置标志的其它指令。这些后面的指令的例子包括将数据路径402f上的字的符号位或NAN位复制到掩码位410中。另一例子是如果数据路径402f上的字的12 位值部分等于二进制零,则使掩码位410置位。有用于完成此操作的很多额外和可选的方式,其正好类似于传统处理器中的比较指令,且其被本领域技术人员充分理解。
值得注意的是,虽然使用上面的LNS运算的明显方法是进行LPHDR运算,程序设计者也可将选定的值考虑为12位2的互补二进制数值。MUL和DIV可用于加和减这样的值,因为那精确地是其在LNS实现中的行为。掩码置位指令可比较这些简单的二进制值。所以除了进行LPHDR计算以外,使用LNS的这个数字实施例还可对短的带符号的整数执行简单的二进制运算。
本发明的一些实施例可包括模拟表示和处理方法。这样的实施例可例如将LPHDR值表示为电荷、电流、电压、频率、脉冲宽度、脉冲密度、各种形式的尖峰信号、或非传统数字实现的特征的其它形式。有在文献中讨论的很多这样的表示,以及用于处理这样表示的值的机制。常常称为模拟方法的这样的方法可用于在我们已讨论的各种结构中执行LPHDR运算,其中SIMD是一个例子。
模拟SIMD结构的例子是Dudek的SCAMP设计(以及有关设计)。因为设计值具有被大致准确到1%内的低动态范围。值由电容器上的电荷表示。那些电容器一般是晶体管的门。每个PE具有类似于图4所示的寄存器的几个存储器单元。通过从两个操作数打开通道晶体管来执行加法,通道晶体管将其电荷转移到模拟总线上,其中它通过电荷和电线的原生物理性质来求和,在电线上它被选通到另一寄存器上,以对其电容器充电,电容器接着表示操作数的和。Dudek公开的详细机制实际上产生和的负数,但基本概念如所述,并且是使用模拟表示和简单的处理机制来执行加法和减法的简单方式。
SCAMP设计的变化形式被制造并用于执行与图像处理有关的低精度范围、低动态范围的计算。这些设计不执行高动态范围运算,它们也不包括用于执行存储在寄存器中的值的乘法或除法的机制。然而,Dudek设计建议构造模拟SIMD机器的一般可行性。下文描述如何构造执行LPHDR运算的模拟SIMD机器,且因此是本发明的实施例。
本发明的一个实施例将值表示为模拟和数字形式的混合。该实施例将值表示为低精度、归一化的底数为2的浮点数值,其中尾数是模拟值,而指数是二进制数值。模拟值可按照Dudek的方法精确到大约1%,这完全在合理的模拟处理技术的范围内。指数可以是6位长,或提供期望的高动态范围所需的任何长度。
为了使值相乘,实施例通过类推来继续进行到传统浮点方法。数字指数使用二进制运算加法器、标准数字技术来求和。模拟尾数被相乘。因为它们表示在大约1/2和1之间的归一化值,它们的乘积可以小至大约1/4。这样的乘积值需要被归一化回1/2到1 的范围。在本实施例中,这通过使用阈值电路比较模拟尾数与1/2的模拟表示来完成。如果尾数低于1/2,则它被加倍,且从指数减去1,其中这样的减法是简单的数字相减。使尾数加倍,以相应于选定的模拟表示的方式实现。例如,用于使两个模拟值相加的任何装置可用于通过将尾数加到自己的副本而使尾数加倍。例如,如果尾数被表示为电流,例如可通过电流镜或其它适当的机构产生副本,且加法可由电流求和结点执行。
用于使初始模拟尾数相乘的装置取决于选定的表示。例如,如果尾数按照SCAMP使用电荷来表示,则可使用来自文献的任何已知的方法将电荷转换成电流。例如,因为电容器上的电荷确定电容器上的电压,这可被实现为从电压到电流的转换,这是本领域技术人员已知的模拟电子器件中的基本技术。在任何情况下,如果尾数被表示为电流,或一旦尾数转换成电流,则可使用例如Gilbert技术来使它们相乘。Gilbert乘法器产生表示乘积的电流,其可在必要时接着转换回电荷(或使用任何表示)。这些仅仅是所需运算可如何被执行的例子。文献详尽地讨论了这些问题,且这些类型的模拟电路对本领域技术人员是已知的。
加上和减去值要求将这些值预归一化到同一指数,如在传统数字浮点运算中所做的那样。这在本实施例中通过比较指数并选择较小的指数来完成。接着使用数字手段将较小的指数从较大的指数中减去。差指定相应于较小的指数的尾数需要除以2多少次。如果该尾数由电流表示(或转换成电流),则模拟R-2R型梯可用于以所需次数将电流除以 2,梯的阶由如上计算的指数的差指定。因而产生的按比例缩小的电流被加到相应于与较大的指数相关的尾数的电流(或从该电流减去,如果这是LPHDR相减操作),以产生输出尾数。与输出尾数相同的输出指数是较大的指数。此时可能需要后归一化。如果输出尾数大于1,则它需要除以2,且输出指数需要被递增。如果它小于1/2,则它需要加倍足够的次数,以超过1/2,且输出指数必须相应地递减,这可由一系列阈值电路、倍加器电路和相关的递减器电路执行。二进制数字指数的这些递增和递减,以及模拟尾数电流的相应加倍和减半,是本领域技术人员公知的简单运算。
本实施例将指数表示为数字二进制数值。可选的实施例可将指数表示为模拟值。然而,重要的是,指数可在存储和计算中被表示,使得噪声和其它误差都不引起它所表示的值的变化。指数的这样的变化可能引起所存储的数值的值的两个(或在一些实施例中更大)变化的因子。为了维持指数的精确度,实施例可将指数量化到相对低的水平,例如16个值加上符号位。在处理期间,指数的模拟表示的轻微变化可接着由电路移除,该电路将值恢复到16个标准量化水平。为了在这样的实施例中得到足够的动态范围,浮点数值可被处理为底数为4的数值,而不是通常的底数为2的数值。这意味着例如归一化尾数在1/4到1的范围内。上面所讨论的关于加法、减法和乘法的方法如所述被应用,有轻微和简单的变化。
上面讨论的模拟和混合信号实施例只是例子,而不构成本发明的限制。关于神经形态学、模拟和混合信号技术的所公布的文献提供了使LPHDR存储和处理能够被实现的大量方法。这样的存储和处理可将噪声以及制造误差引入到执行LPHDR运算的机器的行为中。我们在下文提出的在使用“fp+噪声”运算运行的软件应用上的结果表明,尽管有这些非常“非数字的”量,以这种方式构造的机器是惊人地有用的。
现在提供LPHDR在几种重要的实际计算应用中是有用的证据。对本发明的各种实施例提出该证据,从而说明有用性并不太依赖于具体的实施方式。
为了说明有用性的目的,我们选择LPHDR机器的非常一般的实施例。我们的机器模型是,它提供至少下列能力:(1)是大规模并行的,(2)提供可能有噪声的LPHDR 运算,(3)提供每个运算单元的少量本地存储器,(4)提供在二维物理布局中的运算/ 存储单元,在单元之间只有局部连接(而不是某种更强大、灵活或复杂的连接机制),以及(5)只提供在机器和主机之间的有限带宽。注意,该模型仅仅是为了展示本发明的各种实施例的效用的目的而使用的例子,且并不构成本发明的限制。该模型除了其他以外还包括数字或模拟或混合的实现,具有零噪声或更多噪声,具有FPGA型、SIMD 型或MIMD型结构,或以另外的方式满足模型的假设。更一般的结构例如共享存储器设计、GPU型设计或其它复杂的设计包含该模型的能力,所以在那些结构中的LPHDR 运算也是有用的。虽然我们因此说明LPHDR运算对各种设计是有用的,其中SIMD只是例子,但为了下面讨论的目的,我们调用每个单元,其使存储器与运算元件、处理元件或“PE”配对。
下面讨论几个应用。对于每个应用,该讨论说明:(1)当在可能有干扰的LPHDR 运算中执行计算时,结果是有用的,以及(2)可在二维中物理地安排计算,在单元之间只有局部数据流,每个单元内只有有限的存储器,以及只有到主机/从主机出来的有限的数据流,使得计算有效地利用机器的资源(区域,时间,功率)。第一要求被称为“精确度”,而第二要求被称为“效率”。在这个模型中运行的满足这两个要求的应用将对很多类型的LPHDR机器很好地起作用,因此那些机器是广泛有用的发明。
使用机器的运算的两个实施例来测试应用。一个实施例使用准确的浮点运算,但使每个运算操作的结果乘以在0.99和1.01之间的统一选择的随机数。在下面的讨论中,该实施例被表示为“fp+噪声”。它可代表机器的模拟实施例所产生的结果。
第二实施例使用具有如图5所示的值表示的对数运算。该运算是可接受的,也就是说,没有干扰,但由于短分数大小,它在每个运算中产生高达大约1-2%的误差。在下面的讨论中,该实施例被表示为“Ins”。它可代表机器的特定数字实施例所产生的结果。
为了展示本发明的实施例的有用性,我们将讨论由本发明的实施例实现的并且又依次实现各种实际应用的三个计算任务。这些任务中的两个与找到最近邻有关,而另一个与处理视觉信息有关。我们将描述这些任务,记录其实际应用,并接着示范可使用上面描述的一般模型来解决每个任务,因此可使用本发明的实施例来解决。
应用1:找到最近邻
给定称为实例的一大组矢量,并给定称为测试的矢量,最近邻问题(NN)是找到最接近于测试的实例,其中距离度量是欧几里德距离的平方(在相应的分量之间的距离的平方和)。
NN是广泛有用的计算。一个用途是针对数据压缩,其中它被称为“矢量量化”。在本申请中,我们有在“码本”中的一组相对长的矢量(这些是实例)和相关的短码字(例如,在码本中的矢量的索引)。我们在一序列待压缩的矢量中移动,且对于每个这样的矢量(测试),找到码本中的最近矢量并输出相应的码字。这将该序列矢量减少到较短序列的码字。因为码字不完全指定矢量的初始序列,这是数据压缩的有损耗形式。除了其它应用以外,它还可用在语音压缩中和MPEG标准中。
NN的另一应用将是确定视频的片断是否出现在大视频数据库中。在此,我们可使用已知的方法,例如颜色柱状图、比例不变的特征提取等,将来自片断的视频帧提取。例子将是从视频数据库提取的相似特征矢量。我们意欲知道来自片断的任何矢量是否接近于来自数据库的任何矢量,该NN可帮助我们决定。
在最近邻的很多应用中,我们将宁愿找到真实最近邻,但如果我们有时找到只稍微远离的另一邻居,或如果我们几乎总是找到真实最近邻,这是可接受的。因此,对最近邻的近似解决方案是有用的,特别是如果它可特别快地、或在低功率处、或使用与精确解决方案相比的某个其它优点来计算。
我们现在将说明使用本发明的实施例以满足准确度和效率的标准的方式可计算的近似最近邻。
算法。下文描述可由根据本发明的实施例实现的机器执行的算法,例如通过执行包括用于执行该算法的指令的软件。对该算法的输入是一组实例和测试矢量。该算法试图找到最接近(或几乎最接近)测量的实例。
在对数的最简单的版本中,实例的数量可以不大于PE的数量,且每个矢量必须足够短,以适合在单个PE的存储内。实例被放置在与PE相关的存储器中,使得一个实例被放置在每个PE中。给出测试,测试依次穿过所有PE。在测试穿过PE时,伴随测试的是,从测试到迄今为止找到的最接近的实例的距离,以及指示什么PE(且因此什么实例)产生迄今为止找到的最接近的实例的信息。每个PE计算存储在该PE的存储器中的测试和实例之间的距离,并接着传递测试以及距离和传递到该PE中的指示符(如果由这个PE计算的距离超过传递到PE中的距离),或这个PE计算的距离以及指示这个PE的实例是迄今为止最接近的信息(如果这个PE所计算的距离小于被传递到PE中的距离)。因此,当测试穿过这组PE时,运算进行简单的最小化操作。当测试和相关的信息离开最后一个PE时,输出是哪个PE(以及实例)最接近于测试,以及在该实例和测试之间的距离的表示。
在该算法的更有效的变化中,测试首先沿着例如顶行传递,接着每列向下传递测试和相关信息,有效地与其它列并行地进行搜索,且一旦该信息到达底部,它就越过底行传递,当它越过行传递时,计算迄今为止处理的所有列的最小距离实例。这意味着处理测试所需的时间与一行或列中的PE的数量(的较大者)成比例。
这个算法的增强如上继续进行,但计算并传递指示迄今为止找到的最接近或第二接最近的实例的信息。当该信息退出PE的阵列时,托管PE阵列的数字处理器计算(以高精度)测试和由PE阵列指示的两个实例之间的距离,且这两个中的较接近者被输出为测试的可能最近邻。
准确度。我们将上面描述的增强算法所执行的运算表示为C编程语言。该代码计算在此讨论的最近邻以及下面讨论的加权分数。
C代码使用与本发明的实际实现相同的执行运算的方法,例如在硬件中实现的方法,来以相同的顺序执行同一组运算操作。它因此当在本发明的实现上运行时,产生与增强算法将产生的结果相同的结果。(下面在关于效率的章节中讨论算法如何被组织,以有效地在这样的实现上运行。)
特别是,当计算在测试和每个实例之间的距离时,代码使用下面讨论的Kahan的方法,来执行形成在测试和实例的矢量分量之间的距离的平方和所需的可能长的求和。
C代码包含如上讨论的运算的几种实现。当使用“#define fp”编译时,运算使用IEEE 标准浮点来完成。如果命令行参数被传递以实现有干扰的运算,则随机噪声被加到每次计算的结果。这是运算的“fp+噪声”形式。当不使用“#define fp”编译时,运算使用具有6位以2为底数的分数的低精度对数运算来完成。这是运算的“Ins”形式。
当代码运行时,它产生显示它执行的计算的结果的痕迹。下面示出的这些痕迹表明使用某些命令行参数,增强算法产生LPHDR最近邻计算的某些结果。这些结果提供显示该方法的有用性的细节。我们将在此简要地讨论这些结果。
第一结果是针对“fp+噪声”。十个截然不同的运行被执行。每个运行产生长度为五的一百万个随机实例矢量,其中每个矢量的每个分量从N(0,1)引出——具有零均值和标准偏差1的高斯(正常)分布。每个运行接着产生长度为五的一百个测试矢量,其中每个矢量的每个分量也从N(0,1)引出。对于每次测试,根据上面的增强算法,并根据使用高精度浮点运算的标准最近邻方法来计算最近邻。计数增强算法产生与标准浮点方法相同的结果的次数。结果如下:
%./a.out 5 10 1000000 100 1
表示是具有噪声的浮点。
运行1.对100次测试,100(100.0%)匹配以及0.81%平均分数误差。
运行2.对100次测试,100(100.0%)匹配以及0.84%平均分数误差。
运行3.对100次测试,100(100.0%)匹配以及0.98%平均分数误差。
运行4.对100次测试,100(100.0%)匹配以及0.81%平均分数误差。
运行5.对100次测试,100(100.0%)匹配以及0.94%平均分数误差。
运行6.对100次测试,100(100.0%)匹配以及0.82%平均分数误差。
运行7.对100次测试,100(100.0%)匹配以及0.78%平均分数误差。
运行8.对100次测试,100(100.0%)匹配以及0.86%平均分数误差。
运行9.对100次测试,100(100.0%)匹配以及0.85%平均分数误差。
运行10.对100次测试,100(100.0%)匹配以及0.86%平均分数误差。
时间LPHDER的平均百分比(使用最终DP校正)找到最接近的实例=99.90%。
在LPHDR和DP之间的平均分数误差=0.85%。
“平均分数误差”值在讨论中被认为低于加权分数。“机器”信息在此是相关的。
在这十个运行中,只有一个具有在所执行的100次测试中的任何测试,其产生与通常高精度方法所产生的不同的最近邻。因此,在使用“fp+噪声”运算运行的增强算法和常见方法之间的匹配的平均百分比是99.9%。
接着使用“Ins”运算来执行类似的计算。在这种情况下,结果是:
%./a.out 5 10 1000000 100 0
表示是没有噪声的LNS。
运行1.对100次测试,100(100.0%)匹配以及0.15%平均分数误差。
运行2.对100次测试,100(100.0%)匹配以及0.07%平均分数误差。
运行3.对100次测试,100(100.0%)匹配以及0.08%平均分数误差。
运行4.对100次测试,100(100.0%)匹配以及0.09%平均分数误差。
运行5.对100次测试,100(100.0%)匹配以及0.11%平均分数误差。
运行6.对100次测试,100(100.0%)匹配以及0.16%平均分数误差。
运行7.对100次测试,100(100.0%)匹配以及0.07%平均分数误差。
运行8.对100次测试,100(100.0%)匹配以及0.13%平均分数误差。
运行9.对100次测试,99(99.0%)匹配以及0.17%平均分数误差。
运行10.对100次测试,98(98.0%)匹配以及0.16%平均分数误差。
时间LPHDER的平均百分比(使用最终DP校正)找到最接近的实例=99.70%。
在LPHDR和DP之间的平均分数误差=0.12%。
平均匹配百分比是99.7%,比对“fp+噪声”稍微差。
由增强最近邻算法使用LPHDR运算的两种形式示出的准确度是惊人的。以1%的误差顺序地执行很多计算,且仍然以小于1%的误差产生最终结果可能看起来是违反直觉的。虽然如此,LPHDR运算证明是有效的,且所示的准确度高到足以在应用中是有用的,近似的最近邻计算对所述应用是有用的。
作为极端的情况,测试fp+噪声的变量,其中噪声均匀地从+10%变化到-5%。因此,每个运算操作产生在太大的10%和太小的5%之间的结果。如上所述的增强的最近邻算法被执行,其中每个运行产生100,000个实例矢量。下述的惊人的结果表明,即使使用该极端水平的不精确、有干扰和非零平均LPHDR运算,也可获得有用的结果。
运行1.对100次测试,97(97.0%)匹配。
运行2.对100次测试,100(100.0%)匹配。
运行3.对100次测试,100(100.0%)匹配。
运行4.对100次测试,98(98.0%)匹配。
运行5.对100次测试,98(98.0%)匹配。
运行6.对100次测试,99(99.0%)匹配。
运行7.对100次测试,99(99.0%)匹配。
运行8.对100次测试,99(99.0%)匹配。
运行9.对100次测试,99(99.0%)匹配。
运行10.对100次测试,99(99.0%)匹配。
时间LPHDER的平均百分比(使用最终DP校正)找到最接近的实例=98.80%。
效率。与惊人的准确度结果相反,本领域的普通技术人员清楚,增强的最近邻算法的计算可有效地在所提出的计算模型中执行,其中只使用PE之间的局部通信来在二维物理布局中连接运算/存储单元。然而,这不处理保持机器忙于只使用低带宽完成对主机机器有用的工作的问题。
当计算对单个测试的最近邻时,测试穿过阵列中的所有PE流动。如上所述,如果阵列是M×M栅格,测试穿过机器并将结果返回到主机花费至少O(M)个步骤。在这个时间期间,机器执行O(M×M)次最近邻距离计算,但因为在每个步骤机器能够执行O(M ×M)次计算,O(M)因子丧失。
与串行机器比较,O(M)因子的这个加速明显且有用。然而,如果足够多的测试矢量比如O(M)或更多矢量将被处理,则它们可流到机器中并以管路方式流过,效率可能甚至更高。处理O(M)次测试的时间保持为O(M),与对单次测试的时间相同,但现在机器执行O(M)xO(M×M)次距离计算,因此在常数因子内,使用机器的全部计算容量。
因此,如果机器处理至少与PE的数量的平方根一样多的测试矢量,机器特别有效。存在完全适合这种形式的应用,例如很多独立测试(例如,图像的块、文件的部分、独立库存的价格历史)的模式识别或压缩,以及在实例组中找到每个实例的最近邻的问题。这与如上所述的本领域的普通技术人员的一般观点相反,该一般观点是,在单个芯片或类似结构上具有非常多的运算处理元件的机器不是非常有用的。
应用2:距离加权评分
与最近邻有关的任务是距离加权评分。在这个任务中,每个实例具有相关的分数。这是以某种方式表征实例的数值。例如,如果实例是给定库存的价格的历史的抽象,则分数可以是价格是否将增加或降低的历史概率。给定测试矢量,该任务是形成所有实例的分数的加权和,其中权重是从测试到相应的实例的距离的减函数。例如。这个加权分数可被认为是库存的未来价格的预测,该库存的历史由测试表示。本发明的实施例的这个使用可帮助支持例如库存的高速交易,如由某些“量化”对冲基金所执行的,尽管本领域的普通技术人员的一般观点是低精度计算在金融应用中是没有用的。
上述的C代码计算加权分数以及最近邻。在这个计算中分配给实例的分数是从范围 [0,1]统一提取的随机数。在这个计算中的每个实例的权重被定义为,对除以所有实例的非归一化权重的和的实例的非归一化权重,其中每个矢量的非归一化权重被定义为,一加上从实例到测试矢量的平方距离的和的倒数。如上所述,代码执行多个运行,每个运行产生很多实例和测试,并将传统浮点计算的结果与使用fp+噪声和Ins运算计算的结果进行比较。
再次考虑上面的运行模拟的迹线结果,我们看到,对于fp+噪声,LPHDR平均加权分数在正确值的.85%内,且绝没有高达1%的差异。对于Ins运算,误差甚至更小,平均只有.12%的误差。
这些结果是惊人的,假定计算总加权分数涉及对与每个实例相关的单独的加权分数求和。因为每个运行处理1,000,000个实例,这意味着总和超过一百万个小的正值。在每次加法中以大约1%的误差对一百万个小值求和的原生方法应产生近似噪声的结果。然而,代码使用Kahan(威廉·卡亨(1965年1月),(Kahan,William(January 1965)),“对减少截断误差的进一步评论”《美国计算机协会通讯》40卷第8期(1)”("Further remarks onreducing truncation errors",Communications of the ACM 8(1):40)所发明的长期已知的方法来执行其求和。该方法使执行长的求和是可行的,例如对距离加权分数进行的,或如当使用蒙特卡洛Monte Carlo方法计算衍生证券的价格时,可能在计算金融中使用的,或用于执行在图像处理算法中的去卷积,如接下来将讨论的。
这个算法的效率类似于如早些时候讨论的NN的效率。如果很多测试矢量被立即处理,则机器执行特别有效。
应用3:移除图像中的运动模糊
为了收集足够的光来形成图像,常常使摄像机快门保持足够长时间的打开,这使摄像机运算可能引起模糊。这可作为在廉价的客户摄像机中的摄像机,以及安装在卫星或飞机上的非常昂贵但快速的运动摄像机中的摇动的结果而发生。如果摄像机的运动路径是已知的(或可被计算),则实质上可使用各种去模糊算法来移除模糊。一种这样的算法是Richardson-Lucy法(RL),且我们在这里表明,本发明的实施例可运行该算法,并产生有用的结果。按照上面的讨论格式,我们讨论准确度和效率的标准。
算法。Richardson-Lucy算法是公知的且广泛可用的。假定使用已知的内核使图像变模糊。特别是,假定内核是直线,且图像被定向成使得模糊完全在水平方向上出现。考虑特定的内核,对于其,在变模糊的图像中的每行的第J'个(J'th)像素是在初始未模糊的图像中的像素J到J+31的统一加权平均。
准确度。我们使用C编程语言实现使用LPHDR运算的RL方法的简单版本。程序读取测试图像,使用上述内核使它变模糊,接着使用fp+噪声或Ins运算使它去模糊。 RL算法计算和,例如当求内核与去模糊图像的当前近似的卷积时。我们的实现使用早些时候讨论的Kahan法来计算这些和。图7示出以初始形式的测试图像。它是在巴拉克·奥巴马(BarackObama)的就职典礼期间使用的建筑物的卫星图像。图8示出被内核变得非常模糊的图像。很难在这个图像中看到任何特定的物体。图9示出使用标准浮点运算去模糊的结果。图10示出使用fp+噪声运算去模糊的结果,以及图11示出使用Ins 运算去模糊的结果。在所有这些情况下,图像被充分恢复,可能识别建筑物、街道、停车场和汽车。
除了在此显示图像,用于使用人眼判断以外,我们还计算去模糊性能的数字测量。我们计算在图像中的所有像素上的,在每个初始像素值(从0到255的灰度值)和由 RL方法重建的图像中的相应值之间的平均差。那些数值测量在下面的表1中示出:
<u>图像类型</u> | <u>平均像素误差</u> |
模糊 | 32.0 |
使用标准浮点的RL | 13.0 |
使用fp+噪声的RL | 13.8 |
使用lns的RL | 14.8 |
表1
这些结果以及由人眼做出的主观但重要的判断表明,LPHDR运算提供与标准浮点运算相比的相当大和有用的去模糊程度。此外,在这个例子中,我们选择极端的模糊度,以更好地使用LPHDR运算来传送去模糊的概念和视觉影响。在更柔和及一般的模糊内核上,因而产生的去模糊图像比在这种情况下的离原物更接近得多,如可通过在这些更一般的情况下缩短内核长度,并使用LPHDR运算运行RL算法可知。
效率。本领域的普通技术人员很清楚,使用局部内核的Richardson-Lucy只执行局部计算操作。将被去模糊的图像可被装入PE阵列中,每个PE存储一个或多个像素, RL的去卷积操作可接着重复数十或数百次,且去模糊的图像可被读回到主机处理器。只要执行足够的迭代,就能有效地利用机器。
图像去模糊的极端形式是在计算X射线断层成像中使用的迭代重建方法。从二维投影重建三维体是计算量极大的任务。上面讨论的方法自然概括到迭代重建,并有效地利用机器。
下面是在本发明的实施例的优点中的一个或多个。
根据本发明的某些实施例实现的PE对于可进行运算的PE相对小。这意味着每资源单位(例如,晶体管、区域、体积)有很多PE,这又意味着每资源单位有大量运算计算能力。这使得能使用给定数量的资源来解决比传统计算机设计能完成的更大的问题。例如,与在常规CPU中的数百次计算或常规微核CPU中的少量计算相反,被构造为使用现有技术制造的大硅芯片的本发明的数字实施例可每周期执行成千上万次运算操作。这些比率反映了当制造技术继续提高时应坚持的本发明的实施例的结构优点,即使当我们达到纳米技术或用于数字和模拟计算的其它实现方式。
使用少量资源进行运算通常意味着,且在所示实施例中特别意味着,使用低能力来进行运算。作为结果,根据本发明的实施例实现的机器可具有带有合理的功率(例如数十瓦特)的非常高的性能或具有合理地高的性能的低功率(例如一瓦特的一部分)。这意味着这样的实施例可适合于从超计算机经过台式计算机一直到可移动计算的全范围的计算。类似地,且因为成本通常与可用资源的数量相关,本发明的实施例与常规技术设备相比,可提供每单位成本相对高数量的计算能力。
SIMD结构相当老,且作为被本领域的普通技术人员的计算机设计的方法,被频繁地丢弃。然而,如果SIMD机器的处理元件可被制造得特别小,同时保持重要的功能,例如一般运算能力,则结构可能是有用的。这里提出的实施例精确地具有这些性能。
大量LPHDR运算作为相当一般的计算框架是有用的,该发现与它不是有用的一般看法相反,可以是在任何(大规模或非大规模)并行机器设计或非并行设计中的优点,而不仅仅在SIMD实施例中。它可用在FPGA、FPAA、GPU/SIMT机器、MIMD机器中,以及在使用紧凑运算处理元件来利用少量资源(如晶体管或体积)执行大量计算的任何类型的机器中。
本发明的实施例的另一优点是,它们不仅对通常有效地执行计算是有用的,而且它们可用于应付一般被认为需要高精度计算元件的各种实际问题,即使这样的实施例只(或主要)包括低精度计算元件。虽然本文提出了这样的实际问题的几个例子,且虽然我们也成功地实现了对分子动态模拟和其它任务的非键合力场的计算,但这些仅仅是例子,且不构成本发明的实施例可用于解决的实际问题的完备集。
上面公开的实施例仅仅是例子,而不构成本发明的限制。更确切地,本发明的实施例可用各种其它方式例如下面的方式实现。
例如,本发明的实施例可用各种方式中的任何一种表示值,例如通过使用数字或模拟表示,例如定点、对数或浮点表示、电压、电流、电荷、脉冲宽度、脉冲密度、频率、概率、尖峰信号、计时或它们的组合。可单独地或组合地使用这些基础表示来表示 LPHDR值。可以各种方式中的任何一种实现LPHDR运算电路,例如通过使用各种数字方法(其可以是并行或串行的、管道式的或非管道式的)或模拟方法或它们的组合。可使用各种连接结构,例如最近4、最近8、变化程度的跳跃以及可以或可以不是矩形或栅格状的结构来连接运算元件。任何方法可用于在运算元件中的通信,例如并行或串行、数字或模拟或混合模式通信。运算元件可同步或异步地操作,并可全局地同时操作或非同时操作。可例如在单个物理设备例如硅芯片上实现运算元件,或在多个设备中扩展运算元件,且从多个设备构造的实施例可具有其以各种方式连接的运算元件,包括例如作为栅格、拓扑、超立方体、树或其它方法来连接。可用各种方式将运算元件连接到主机机器(如果有的话),取决于特定实施例的成本和带宽以及其它要求。例如,可能有很多连接到一组运算元件的主机机器。
虽然本发明的某些实施例被描述为以SIMD结构实现,但这仅仅是例子而不构成本发明的限制。例如,本发明的实施例可被实现为可重构的结构,例如但不限于可编程逻辑设备、现场可编程模拟阵列、或现场可编程门阵列结构,例如用本文公开的任何类型的LPHDR运算元件代替FPGA的现有乘法器块的设计或由该LPHDR运算元件实现的设计,或例如LPHDR运算元件被包括在新的或现有的可重构设备设计中。作为另一例子,本发明的实施例可被实现为GPU或SIMT型结构,其合并本文公开的任何类型的 LPHDR运算元件。例如,LPHDR元件可补充或代替在当前或新的图形处理单元设计中的传统运算元件。作为又一例子,本发明的实施例可被实现为合并本文公开的任何类型的LPHDR运算元件的MIMD型结构。例如,LPHDR运算元件可补充或代替在当前或新的MIMD计算系统设计中的传统运算元件。作为又一例子,本发明的实施例可被实现为,包括与传统结构相比,使用紧凑运算处理元件来利用少量资源(例如,晶体管或区域或体积)提供大量运算计算能力的任何类型的机器,包括大规模并行机器。
虽然本发明的某些实施例在本文被描述为执行软件,但这仅仅是例子而不构成本发明的限制。可选地,例如,本发明的实施例可使用微码或硬件定序器或状态机或控制本文公开的任何类型的LPHDR运算元件的其它控制器来实现。可选地,例如,本发明的实施例可使用硬线的、刻录的或控制本文公开的任何类型的LPHDR运算元件的其它预编程的控制器来实现。
虽然本发明的某些实施例在本文被描述为使用定制硅作为硬件来实现,但这仅仅是例子而不构成本发明的限制。可选地,例如,本发明的实施例可使用FPGA或其它可重构的芯片例如基础硬件来实现,其中FPGA或其它可重构的芯片被配置成执行本文公开的LPHDR操作。作为另一例子,本发明的实施例可使用利用软件来编程,以执行本文公开的LPHDR操作的任何可编程常规数字或模拟计算结构(包括使用高精度计算元件的结构,包括使用其它类型的非LPHDR硬件来执行LPHDR运算的结构,且包括大规模并行的结构)来实现。例如,本发明的实施例可使用本文公开的功能的软件模拟器来实现。
作为又一例子,本发明的实施例可使用三维制造技术来实现,不管是基于硅芯片或其它。一些示例性实施例是存储器芯片可被粘接到处理器或其它设备芯片上或几个存储器和/或处理器或其它设备芯片彼此粘接成叠层的实施例。本发明的三维实施例非常有用,因为它们可能比二维实施例更密集,并可实现在处理单元之间的信息的三维传递。与二维实施例比较,这使更多的算法能够有效地在那些实施例上运行。
虽然本发明的某些实施例在本文被描述为使用硅芯片制造技术来实现,但这仅仅是例子而不构成本发明的限制。可选地,例如,本发明的实施例可使用可实现其它类型的传统数字和模拟计算处理器或其它设备的技术来实现。这样的技术的例子包括各种纳米机械和纳米电子技术,例如用于DNA计算的基于化学的技术,基于纳米线和纳米管的技术、光学技术、机械技术、生物技术和基于晶体管与否的其它技术,晶体管能够实现本文公开的类型的LPHDR结构。
本发明的某些实施例在本文被描述为“大规模并行”实施例。虽然本发明的某些实施例可包括数千、数百万或更多的运算单元,但本发明的实施例可包括任何数量的运算单元(少至一个)。例如,甚至包括只有单个LPHDR单元的实施例,可用于串行处理单元或其它设备内,以在小的廉价处理器或其它设备中提供相当大的LPHDR处理能力。
对于本发明的某些实施例,即使只使用数字技术来实现,运算操作也可在选定的低精度表示中不产生确定性的、可重复的或最准确的可能结果。例如,在某些特定的输入值上,运算操作可产生不是在选定的表示中最接近真实运算结果的值。
“低精度高动态范围”运算元件的精确度可从一个实现到另一实现变化。例如,在某些实施例中,LPHDR运算元件产生包括分数的结果,也就是说,大于零且小于一的值。例如,在某些实施例中,LPHDR运算元件产生有时(或一直)不小于正确结果的 0.05%的结果(也就是说,在所产生的结果和正确结果之间的差的绝对值不小于正确结果的绝对值的0.05%)。作为另一例子,LPHDR运算元件可产生有时(或一直)不小于正确结果的0.1%的结果。作为另一例子,LPHDR运算元件可产生有时(或一直)不小于正确结果的0.2%的结果。作为又一例子,LPHDR运算元件可产生有时(或一直)不小于正确结果的0.5%的结果。作为再一例子,LPHDR运算元件可产生有时(或一直) 不小于正确结果的1%、或2%、或5%、或10%、或20%的结果。
除了有不同的可能的精确度以外,实施例还可以在它们处理的值的空间的动态范围上变化。例如,在某些实施例中,LPHDR运算元件处理范围可大致从百万分之一到一百万的空间中的值。作为另一例子,在某些实施例中,LPHDR运算元件处理在范围可大致从十亿分之一到十亿的空间中的值。作为又一例子,在某些实施例中,LPHDR运算元件处理在范围可大致从六万五千分之一到六万五千的空间中的值。作为再一例子,在某些实施例中,LPHDR运算元件处理在范围可在零和六万五千分之一之间的任何特定的值一直到大于六万五千的任何特定的值的空间中的值。作为再一例子,其它实施例可处理在具有可合并和可落在在先的例子之间的动态范围的空间中的值,例如范围从大约十亿分之一到一千万。在本发明的所有这些示例性实施例中,以及在其它实施例中,我们正讨论的值可以带符号,所以上面的描述表征正被讨论的数值的绝对值。
LPHDR运算元件可仅产生对正确结果的近似的频率可从一个实现到另一实现变化。例如,考虑LPHDR运算元件可执行一个或多个运算(也许包括例如三角函数)的实施例,且对于每个运算,每个LPHDR元件接受从有效值的范围提取的一组输入,且对于每个特定组的输入值,每个LPHDR元件产生一个或多个输出值(例如,同时计算输入的正弦和余弦),且为特定的一组输入产生的输出值可以是确定性的或非确定性的。在这样的示例性实施例中,进一步考虑有效输入的分数F和LPHDR元件所计算的结果可能与数学上正确的结果相差的相对误差量E。在本发明的某些实施例中,对于每个 LPHDR运算元件,对于LPHDR单元能够执行的至少一个运算,对该运算的可能有效的输入的至少一部分F,对于该运算所产生的至少一个输出信号,通过重复执行,由 LPHDR单元的该输出信号代表的数值的统计平均(当对那些相应输入的每个执行该运算时)与对那些相同的输入值的运算的精确算术计算的结果相差至少E,其中F是1%,而E是0.05%。在几个其它示例性实施例中,F不是1%,而是2%、或5%、或10%、或20%、或50%中的一个。对于这些示例性实施例中的每个,每个有某个特定的F值,存在其它示例性实施例,其中E不是0.05%,而是0.1%、或0.2%、或0.5%、或1%、或2%、或5%、或10%、或20%。这些变化的实施例仅仅是例子,而不构成本发明的限制。
对于根据本发明体现的某些设备(例如计算机或处理器或其它设备),在设备(例如,计算机或处理器或其它设备)中的LPHDR运算元件的数量超过设备中的可设计成执行传统精度的高动态范围运算(即,具有32位或更多位的字长的浮点运算)的运算元件的数量,可能为零。如果NL是在这样的设备中的LPHDR元件的总数量,而NH 是在设备中的被设计成执行传统精度的高动态范围运算的运算元件的数量,则NL超过 T(NH),其中T()是某个函数。各种函数的任一个可用作函数T()。例如,在某些实施例中,T(NH)可以是20加上NH的三倍,且在设备中的LPHDR运算元件的数量可超过在设备中的被设计成执行传统精度的高动态范围运算的运算元件(如果有的话)的数量,超过后者的数量的三倍加20个之和。作为另一例子,在某些实施例中,在设备中的 LPHDR运算元件的数量可超过在设备中的被设计成执行传统精度的高动态范围运算的运算元件(如果有的话)的数量,超过后者的数量的五倍加50个之和。作为又一例子,在某些实施例中,在设备中的LPHDR运算元件的数量可超过在设备中的设计成执行传统精度的高动态范围运算的运算元件(如果有的话)的数量,超过后者的数量的五倍加 100个之和。作为又一例子,在某些实施例中,在设备中的LPHDR运算元件的数量可超过在设备中的被设计成执行传统精度的高动态范围运算的运算元件(如果有的话)的数量,超过后者的数量的五倍加1000个之和。作为再一例子,在某些实施例中,在设备中的LPHDR运算元件的数量可超过在设备中的设计成执行传统精度的高动态范围运算的运算元件(如果有的话)的数量,超过后者的数量的五倍加5000个之和。本发明的某些实施例可在单个物理设备内实现,例如但不限于硅芯片或芯片叠层或芯片封装或电路板,且在物理设备中的LPHDR元件的数量NL和设计成执行传统精度的高动态范围运算的元件的数量NH可以是在该物理设备内的相应元件的总数。本发明的某些实施例可在包括多于一个的物理设备的计算系统中实现,例如但不限于使用任何装置(例如总线、开关、任何类型的网络连接或其它通信装置)彼此耦合并彼此通信的一组硅芯片或芯片叠层或芯片封装或电路板,且在这种情况下,在计算系统中的LPHDR元件的数量NL和在计算系统中的被设计成执行传统精度的高动态范围运算的元件的数量可以是在所有那些物理设备联合在一起内的相应元件的总数。
本发明的某些实施例可构成处理器或可以是处理器的部分,处理器是能够执行软件以执行计算的设备。这样的处理器可包括用于存储软件、用于使用软件来确定执行什么操作、用于执行那些操作、用于存储数字数据、用于根据软件特有的操作修改数据、以及用于与连接到处理器的设备进行通信的机构。处理器可以是可重构的设备,例如没有限制地是现场可编程阵列。处理器可以是帮助主机机器的协处理器,或可能够独立地操作外部主机。处理器可形成为各种类型的一组部件主机处理器和协处理器,例如CPU、 GPU、FPGA、或其它处理器或其它设备,其在本领域中可被称为异构处理器设计或异构计算系统,这些部件中的一些或全部可合并本发明的相同或不同类别的实施例。
然而本发明的实施例可在另外的处理器或不同于处理器的设备中实现。例如,包括处理器和其它部件(例如通过数据路径耦合到处理器的存储器)的计算机,其中包括用于以本文公开的任何方式执行LPHDR运算的部件的处理器是本发明的实施例的例子。更一般地,任何设备或设备的组合不管是否落在执行本文公开的功能的“处理器”的意义内,都可构成本发明的实施例的例子。
更一般地,上面描述的任何技术可例如在硬件、有形地存储在计算机可读介质上的软件、固件、或它们的任何组合中实现。上面描述的技术可在一个或多个计算机程序中实现,这些程序在包括处理器的可编程计算机、处理器可读的存储介质(包括例如易失性和非易失性存储器和/或存储元件),至少一个输入设备和至少一个输出设备上执行。程序代码可应用于使用输入设备输入的输入,以执行所述功能并产生输出。输出可被提供到一个或多个输出设备。
在下面的权利要求的范围内的每个计算机程序可用任何编程语言例如汇编语言、机器语言、高级过程编程语言或面向对象的编程语言来实现。编程语言可例如是被编译或解释的编程语言。
每个这样的计算机程序可在计算机程序产品中实现,所述计算机程序产品被有形地体现在机器可读存储设备中,用于由计算机处理器执行。本发明的方法步骤可由计算机处理器执行,计算机处理器执行被有形地体现在机器可读介质上的程序,以通过操作输入并产生输出来执行本发明的功能。适当的处理器作为例子包括通用和专用微处理器。通常,处理器从只读存储器和/或随机存取存储器接收指令和数据。适合于有形地体现计算机程序指令的存储设备包括例如所有形式的非易失性存储器,例如半导体存储设备,包括EPROM、EEPROM和闪存设备;磁盘例如内部硬盘和可移动盘;磁光盘;以及 CD-ROM。任何前述部件可由专门设计的ASIC(专用集成电路)或FPGA(现场可编程门阵列)补充,或合并在ASIC或FPGA中。计算机通常也可从存储介质例如内部盘 (未示出)或可移动盘接收程序和数据。这些元件也将在常规台式计算机或工作站计算机以及适合于执行实现本文描述的方法的计算机程序的其它计算机中找到,这些元件可结合任何数字打印引擎或标记引擎、显示监视器、或能够在纸张、胶片、显示屏或其它输出介质上产生颜色或灰度级像素的其它光栅输出设备来使用。
Claims (75)
1.一种计算设备,所述计算设备包括至少一个运算元件;
其中所述至少一个运算元件能被配置成对一组输入信号执行运算操作,以产生输出信号;
其中所述一组输入信号中的每个信号代表根据数字表示的数值;
其中所述输出信号代表根据所述数字表示的数值;
其中由所述数字表示所代表的所述数值的数值范围至少是从六万五千分之一至六万五千;
其中对于所述运算操作的有效的输入的特定比例X%,所述X至少等于5,当所述至少一个运算元件对所述有效的输入的特定比例X%的输入信号执行所述运算操作时,由所述输出信号代表的数值与对由所述有效的输入的特定比例X%的输入信号代表的数值执行所述运算操作所得的数学上正确的结果相比,具有相对误差E%,所述E至少等于0.2;
并且,其中在所述设备中的所述至少一个运算元件的数量超过在所述设备中的被设计成执行具有至少32位字长的浮点数的浮点运算加法、减法、乘法和除法的运算元件的数量。
2.如权利要求1所述的设备,其中所述至少一个运算元件包括现场可编程门阵列FPGA的至少一部分。
3.如权利要求1所述的设备,其中所述设备中的所述至少一个运算元件的数量超过在所述设备中的被设计成执行传统精度的具有32位或更多位的字长的浮点运算加法、减法、乘法和除法的执行单元的总的数量,超过后者的执行单元的总的数量的三倍加20个之和。
4.如权利要求3所述的设备,其中所述至少一个运算元件包括现场可编程门阵列FPGA的至少一部分。
5.如权利要求1所述的设备,其中所述设备中的所述至少一个运算元件的数量超过在所述设备中的被设计成执行传统精度的具有32位或更多位的字长的浮点运算加法、减法、乘法和除法的执行单元的总的数量,超过后者的执行单元的总的数量的五倍加50个之和。
6.如权利要求1所述的设备,其中在所述设备中的所述至少一个运算元件的数量超过在设备中的被设计成执行传统精度的具有32位或更多位的字长的浮点运算加法、减法、乘法和除法的执行单元的总的数量,超过后者的执行单元的总的数量的五倍加1000个之和。
7.如权利要求1所述的设备,其中所述设备中的所述运算元件的数量超过在所述设备中的被设计成执行传统精度的具有32位或更多位的字长的浮点运算加法、减法、乘法和除法的执行单元的总的数量,超过后者的执行单元的总的数量的五倍加100个之和。
8.如权利要求1所述的设备,其中在所述设备中的所述至少一个运算元件的数量超过在设备中的被设计成执行传统精度的具有32位或更多位的字长的浮点运算加法、减法、乘法和除法的执行单元的总的数量,超过后者的执行单元的总的数量的五倍加5000个之和。
9.如权利要求1所述的设备,其中所述X至少等于10。
10.如权利要求1所述的设备,其中所述运算操作是乘法。
11.如权利要求1所述的设备,还包括:
数字处理器,其用于控制所述至少一个运算元件的操作。
12.如权利要求11所述的设备,还包括:
存储器,所述至少一个运算元件能够对所述存储器进行本地访问。
13.如权利要求12所述的设备,其中所述设备使用数字技术在硅芯片上实现。
14.一种计算设备,所述计算设备包括至少一个运算元件;
其中所述至少一个运算元件能被配置成对一组输入信号执行运算操作,以产生输出信号;
其中所述一组输入信号中的每个信号代表根据混合信号表示的数值,所述混合信号表示由使用模拟表示代表的尾数和使用二进制数值表示代表的指数组成;
其中所述输出信号代表根据混合信号表示的数值;
其中由所述混合信号表示代表的所述数值的数值范围至少是从六万五千分之一至六万五千;
其中对于所述运算操作的有效的输入的特定比例X%,所述X至少等于5,当所述至少一个运算元件对所述有效的输入的特定比例X%的输入信号执行所述运算操作时,由所述输出信号代表的数值与对由所述有效的输入的特定比例X%的输入信号代表的数值执行所述运算操作所得的数学上正确的结果相比,具有相对误差E%,所述E至少等于0.2;
并且,其中在所述设备中的所述至少一个运算元件的数量超过在所述设备中的被设计成执行具有至少32位字长的浮点数的浮点运算加法、减法、乘法和除法的运算元件的数量。
15.如权利要求14所述的设备,其中所述设备中的所述至少一个运算元件的数量超过在所述设备中的被设计成执行传统精度的具有32位或更多位的字长的浮点运算加法、减法、乘法和除法的执行单元的总的数量,超过后者的执行单元的总的数量的三倍加20个之和。
16.如权利要求14所述的设备,其中所述设备中的所述至少一个运算元件的数量超过在所述设备中的被设计成执行传统精度的具有32位或更多位的字长的浮点运算加法、减法、乘法和除法的执行单元的总的数量,超过后者的执行单元的总的数量的五倍加50个之和。
17.如权利要求14所述的设备,其中在所述设备中的所述至少一个运算元件的数量超过在设备中的被设计成执行传统精度的具有32位或更多位的字长的浮点运算加法、减法、乘法和除法的执行单元的总的数量,超过后者的执行单元的总的数量的五倍加1000个之和。
18.如权利要求14所述的设备,其中所述设备中的所述运算元件的数量超过在所述设备中的被设计成执行传统精度的具有32位或更多位的字长的浮点运算加法、减法、乘法和除法的执行单元的总的数量,超过后者的执行单元的总的数量的五倍加100个之和。
19.如权利要求14所述的设备,其中在所述设备中的所述至少一个运算元件的数量超过在设备中的被设计成执行传统精度的具有32位或更多位的字长的浮点运算加法、减法、乘法和除法的执行单元的总的数量,超过后者的执行单元的总的数量的五倍加5000个之和。
20.如权利要求14所述的设备,其中所述X至少等于10。
21.如权利要求14所述的设备,其中所述运算操作是乘法。
22.如权利要求14所述的设备,还包括:
数字处理器,其用于控制所述至少一个运算元件的操作。
23.如权利要求22所述的设备,还包括:
存储器,所述至少一个运算元件能够对所述存储器进行本地访问。
24.一种计算设备,
包括至少一个第一低精度高动态范围LPHDR执行单元,其适合于对代表第一数值的第一输入信号执行第一运算,以产生代表第二数值的第一输出信号,
其中,对所述第一运算的有效的输入的动态范围是至少宽至从1/65,000到65,000,和对于所述第一运算的有效的输入的特定比例X%,所述X大于等于5,当对来自所述第一运算的有效的输入的所述特定比例X%内的每一个特定输入重复地执行所述第一运算时,其中,对所述特定输入执行所述第一运算的所述低精度高动态范围LPHDR单元的所述第一输出信号所代表的数值的统计平均为所产生的结果,对所述特定输入的数值的利用IEEE 754单精度浮点运算进行的所述第一运算的数学计算的结果为正确的结果,所述所产生的结果与所述正确的结果之间的差的绝对值不小于所述正确的结果的绝对值的Y,其中Y=0.05%;
其中所述计算设备使用三维制造技术实现。
25.如权利要求24所述的设备,其中所述至少一个第一低精度高动态范围LPHDR执行单元包括现场可编程门阵列FPGA的至少一部分。
26.如权利要求24所述的设备,其中,在所述设备中的所述低精度高动态范围LPHDR执行单元的总的数量超过在所述设备中的被设计成执行传统精度的具有32位或更多位的字长的浮点运算加法、减法、乘法和除法的执行单元的总的数量,超过后者的执行单元的总的数量的三倍加20个之和。
27.如权利要求24所述的设备,其中所述至少一个第一低精度高动态范围LPHDR执行单元包括现场可编程门阵列FPGA的至少一部分。
28.如权利要求24所述的设备,其中在所述设备中的低精度高动态范围LPHDR执行单元的总的数量超过在所述设备中的被设计成执行传统精度的具有32位或更多位的字长的浮点运算加法、减法、乘法和除法的执行单元的总的数量,超过后者的执行单元的总的数量的五倍加50个之和。
29.如权利要求24所述的设备,其中在所述设备中的低精度高动态范围LPHDR执行单元的总的数量超过在所述设备中的被设计成执行传统精度的具有32位或更多位的字长的浮点运算加法、减法、乘法和除法的执行单元的总的数量,超过后者的执行单元的总的数量的五倍加100个之和。
30.如权利要求24所述的设备,其中在所述设备中的低精度高动态范围LPHDR执行单元的总的数量超过在所述设备中的被设计成执行传统精度的具有32位或更多位的字长的浮点运算加法、减法、乘法和除法的执行单元的总的数量,超过后者的执行单元的总的数量的五倍加100个之和,其中所述设备包括所述至少一个低精度高动态范围LPHDR执行单元局部可访问的存储器,且其中所述设备使用数字技术在硅芯片上实现。
31.一种计算设备,
包括至少一个第一低精度高动态范围LPHDR执行单元,其适合于对代表第一数值的第一输入信号执行第一运算,以产生代表第二数值的第一输出信号,
其中,对所述第一运算的有效的输入的动态范围是至少宽至从1/65,000到65,000,和对于所述第一运算的有效的输入的特定比例X%,所述X大于等于5,当对来自所述第一运算的有效的输入的所述特定比例X%的每一个特定输入重复地执行所述第一运算时,对所述特定输入执行所述第一运算的所述低精度高动态范围LPHDR单元的所述第一输出信号所代表的数值的统计平均为所产生的结果,对所述特定输入的数值的利用IEEE 754单精度浮点运算进行的所述第一运算的数学计算的结果为正确的结果,所述所产生的结果与所述正确的结果之间的差的绝对值不小于所述正确的结果的绝对值的Y,其中Y=0.05%,
其中在所述设备中的低精度高动态范围LPHDR执行单元的总的数量超过在所述设备中的被设计成执行传统精度的具有32位或更多位的字长的浮点运算加法、减法、乘法和除法的执行单元的总的数量;
其中所述计算设备使用三维制造技术实现。
32.如权利要求31所述的设备,其中所述至少一个第一低精度高动态范围LPHDR执行单元包括现场可编程门阵列FPGA的至少一部分。
33.如权利要求24-32中的任一项所述的设备,其中所述X大于等于10。
34.如权利要求24-32中的任一项所述的设备,其中Y=0.1%。
35.如权利要求24-32中的任一项所述的设备,其中Y=0.2%。
36.如权利要求24-32中的任一项所述的设备,其中所述X大于等于10,且其中Y=0.1%。
37.如权利要求24-32中的任一项所述的设备,其中所述X大于等于10,且其中Y=0.2%。
38.如权利要求24-32中的任一项所述的设备,其中对所述第一运算的有效的输入的动态范围是至少宽至从1/1,000,000到1,000,000。
39.如权利要求24或31所述的设备,其中所述至少一个低精度高动态范围LPHDR执行单元包括多个局部连接的低精度高动态范围LPHDR执行单元。
40.如权利要求24或31所述的设备,其中所述设备具有单指令流多数据流SIMD结构。
41.如权利要求24或31所述的设备,其中所述设备包括所述至少一个低精度高动态范围LPHDR执行单元局部可访问的存储器。
42.如权利要求24或31所述的设备,其中所述设备在硅芯片上实现。
43.如权利要求24或31所述的设备,其中所述设备使用数字技术在硅芯片上实现。
44.如权利要求24或31所述的设备,其中所述设备还包括适合于控制所述至少一个低精度高动态范围LPHDR执行单元的运算的数字处理器。
45.如权利要求24或31所述的设备,其中所述设备用于执行可移动计算。
46.如权利要求24或31所述的设备,其中所述至少一个第一低精度高动态范围LPHDR执行单元使用对数表示来表示数值。
47.如权利要求24或31所述的设备,其中所述至少一个第一低精度高动态范围LPHDR执行单元使用浮点表示来表示数值。
48.如权利要求24或31所述的设备,其中所述设备用于执行可移动计算。
49.如权利要求24或31所述的设备,其中所述设备适合于执行最近邻搜索。
50.一种计算设备,
包括至少一个第一低精度高动态范围LPHDR执行单元,其适合于对代表第一数值的第一输入信号执行第一运算,以产生代表第二数值的第一输出信号,
其中,对所述第一运算的有效的输入的动态范围是至少宽至从1/65,000到65,000,和对于所述第一运算的有效的输入的特定比例X%,所述X大于等于5,当对来自所述第一运算的有效的输入的所述特定比例X%内的每一个特定输入重复地执行所述第一运算时,其中,对所述特定输入执行所述第一运算的所述低精度高动态范围LPHDR单元的所述第一输出信号所代表的数值的统计平均为所产生的结果,对所述特定输入的数值的利用IEEE 754单精度浮点运算进行的所述第一运算的数学计算的结果为正确的结果,所述所产生的结果与所述正确的结果之间的差的绝对值不小于所述正确的结果的绝对值的Y,其中Y=0.05%;
其中所述计算设备是图形处理单元设计GPU或具有单指令流多线程SIMT型结构或具有多指令流多数据流MIMD型结构。
51.如权利要求50所述的设备,其中所述至少一个第一低精度高动态范围LPHDR执行单元包括现场可编程门阵列FPGA的至少一部分。
52.如权利要求50所述的设备,其中,在所述设备中的所述低精度高动态范围LPHDR执行单元的总的数量超过在所述设备中的被设计成执行传统精度的具有32位或更多位的字长的浮点运算加法、减法、乘法和除法的执行单元的总的数量,超过后者的执行单元的总的数量的三倍加20个之和。
53.如权利要求50所述的设备,其中所述至少一个第一低精度高动态范围LPHDR执行单元包括现场可编程门阵列FPGA的至少一部分。
54.如权利要求50所述的设备,其中在所述设备中的低精度高动态范围LPHDR执行单元的总的数量超过在所述设备中的被设计成执行传统精度的具有32位或更多位的字长的浮点运算加法、减法、乘法和除法的执行单元的总的数量,超过后者的执行单元的总的数量的五倍加50个之和。
55.如权利要求50所述的设备,其中在所述设备中的低精度高动态范围LPHDR执行单元的总的数量超过在所述设备中的被设计成执行传统精度的具有32位或更多位的字长的浮点运算加法、减法、乘法和除法的执行单元的总的数量,超过后者的执行单元的总的数量的五倍加100个之和。
56.如权利要求50所述的设备,其中在所述设备中的低精度高动态范围LPHDR执行单元的总的数量超过在所述设备中的被设计成执行传统精度的具有32位或更多位的字长的浮点运算加法、减法、乘法和除法的执行单元的总的数量,超过后者的执行单元的总的数量的五倍加100个之和,其中所述设备包括所述至少一个低精度高动态范围LPHDR执行单元局部可访问的存储器,且其中所述设备使用数字技术在硅芯片上实现。
57.一种计算设备,
包括至少一个第一低精度高动态范围LPHDR执行单元,其适合于对代表第一数值的第一输入信号执行第一运算,以产生代表第二数值的第一输出信号,
其中,对所述第一运算的有效的输入的动态范围是至少宽至从1/65,000到65,000,和对于所述第一运算的有效的输入的特定比例X%,所述X大于等于5,当对来自所述第一运算的有效的输入的所述特定比例X%的每一个特定输入重复地执行所述第一运算时,对所述特定输入执行所述第一运算的所述低精度高动态范围LPHDR单元的所述第一输出信号所代表的数值的统计平均为所产生的结果,对所述特定输入的数值的利用IEEE 754单精度浮点运算进行的所述第一运算的数学计算的结果为正确的结果,所述所产生的结果与所述正确的结果之间的差的绝对值不小于所述正确的结果的绝对值的Y,其中Y=0.05%,
其中在所述设备中的低精度高动态范围LPHDR执行单元的总的数量超过在所述设备中的被设计成执行传统精度的具有32位或更多位的字长的浮点运算加法、减法、乘法和除法的执行单元的总的数量;
其中所述计算设备是图形处理单元设计GPU或具有单指令流多线程SIMT型结构或具有多指令流多数据流MIMD型结构。
58.如权利要求57所述的设备,其中所述至少一个第一低精度高动态范围LPHDR执行单元包括现场可编程门阵列FPGA的至少一部分。
59.如权利要求50-58中的任一项所述的设备,其中所述X大于等于10。
60.如权利要求50-58中的任一项所述的设备,其中Y=0.1%。
61.如权利要求50-58中的任一项所述的设备,其中Y=0.2%。
62.如权利要求50-58中的任一项所述的设备,其中所述X大于等于10,且其中Y=0.1%。
63.如权利要求50-58中的任一项所述的设备,其中所述X大于等于10,且其中Y=0.2%。
64.如权利要求50-58中的任一项所述的设备,其中对所述第一运算的有效的输入的动态范围是至少宽至从1/1,000,000到1,000,000。
65.如权利要求50或57所述的设备,其中所述至少一个低精度高动态范围LPHDR执行单元包括多个局部连接的低精度高动态范围LPHDR执行单元。
66.如权利要求50或57所述的设备,其中所述设备具有单指令流多数据流SIMD结构。
67.如权利要求50或57所述的设备,其中所述设备包括所述至少一个低精度高动态范围LPHDR执行单元局部可访问的存储器。
68.如权利要求50或57所述的设备,其中所述设备在硅芯片上实现。
69.如权利要求50或57所述的设备,其中所述设备使用数字技术在硅芯片上实现。
70.如权利要求50或57所述的设备,其中所述设备还包括适合于控制所述至少一个低精度高动态范围LPHDR执行单元的运算的数字处理器。
71.如权利要求50或57所述的设备,其中所述设备用于执行可移动计算。
72.如权利要求50或57所述的设备,其中所述至少一个第一低精度高动态范围LPHDR执行单元使用对数表示来表示数值。
73.如权利要求50或57所述的设备,其中所述至少一个第一低精度高动态范围LPHDR执行单元使用浮点表示来表示数值。
74.如权利要求50或57所述的设备,其中所述设备用于执行可移动计算。
75.如权利要求50或57所述的设备,其中所述设备适合于执行最近邻搜索。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US21869109P | 2009-06-19 | 2009-06-19 | |
US61/218,691 | 2009-06-19 | ||
US12/816,201 | 2010-06-15 | ||
US12/816,201 US8150902B2 (en) | 2009-06-19 | 2010-06-15 | Processing with compact arithmetic processing element |
CN201080036873.8A CN102576304B (zh) | 2009-06-19 | 2010-06-16 | 使用紧凑的运算处理元件进行处理 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080036873.8A Division CN102576304B (zh) | 2009-06-19 | 2010-06-16 | 使用紧凑的运算处理元件进行处理 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105760135A CN105760135A (zh) | 2016-07-13 |
CN105760135B true CN105760135B (zh) | 2019-05-10 |
Family
ID=43355205
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610080760.7A Active CN105760135B (zh) | 2009-06-19 | 2010-06-16 | 使用紧凑的运算处理元件进行处理的计算设备 |
CN201080036873.8A Active CN102576304B (zh) | 2009-06-19 | 2010-06-16 | 使用紧凑的运算处理元件进行处理 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080036873.8A Active CN102576304B (zh) | 2009-06-19 | 2010-06-16 | 使用紧凑的运算处理元件进行处理 |
Country Status (8)
Country | Link |
---|---|
US (17) | US8150902B2 (zh) |
EP (2) | EP2443551A4 (zh) |
JP (7) | JP2012530966A (zh) |
KR (1) | KR101235997B1 (zh) |
CN (2) | CN105760135B (zh) |
BR (1) | BRPI1011808A2 (zh) |
CA (1) | CA2768731C (zh) |
WO (1) | WO2010148054A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11842166B2 (en) | 2009-06-19 | 2023-12-12 | Singular Computing Llc | Processing with compact arithmetic processing element |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012052774A2 (en) * | 2010-10-21 | 2012-04-26 | Bluwireless Technology Limited | Data processing units |
US8971599B2 (en) * | 2010-12-20 | 2015-03-03 | General Electric Company | Tomographic iterative reconstruction |
CN102651121B (zh) * | 2011-02-23 | 2014-04-02 | 中国科学院声学研究所 | 一种基于fpga的3*3均值滤波算法的实现方法 |
US9553590B1 (en) * | 2012-10-29 | 2017-01-24 | Altera Corporation | Configuring programmable integrated circuit device resources as processing elements |
US9936579B2 (en) * | 2013-02-01 | 2018-04-03 | Apple Inc. | Low profile packaging and assembly of a power conversion system in modular form |
CN103647708A (zh) * | 2013-11-29 | 2014-03-19 | 曙光信息产业(北京)有限公司 | 基于atca的数据报文处理板 |
JP6381215B2 (ja) * | 2014-01-29 | 2018-08-29 | キヤノン株式会社 | 画像処理装置、画像処理方法、表示装置、表示装置の制御方法、及び、プログラム |
US10042813B2 (en) * | 2014-12-15 | 2018-08-07 | Intel Corporation | SIMD K-nearest-neighbors implementation |
CN105843586B (zh) * | 2016-04-02 | 2020-06-30 | 严发宝 | 一种高速数据采集实时加除计算实现方法 |
CN106126191B (zh) * | 2016-06-06 | 2018-07-31 | 大连大学 | 基于映射模块的16位加减法器的方法 |
US10007487B1 (en) | 2016-06-30 | 2018-06-26 | Altera Corporation | Double-precision floating-point operation |
CN106155814B (zh) * | 2016-07-04 | 2019-04-05 | 合肥工业大学 | 一种支持多种工作模式的可重构运算单元及其工作方式 |
CN107066706B (zh) * | 2017-03-27 | 2019-07-30 | 中国科学院计算技术研究所 | Gpu ffma指令在双发射模式下的通量测试方法 |
WO2018182742A1 (en) * | 2017-03-31 | 2018-10-04 | Intel Corporation | Computation unit composed of stacked resistive elements |
US10726514B2 (en) * | 2017-04-28 | 2020-07-28 | Intel Corporation | Compute optimizations for low precision machine learning operations |
KR102477516B1 (ko) | 2017-05-17 | 2022-12-14 | 구글 엘엘씨 | 하드웨어에서 매트릭스 곱셈을 수행 |
US20180357287A1 (en) * | 2017-06-10 | 2018-12-13 | ScaleFlux, Inc. | Hybrid software-hardware implementation of edit distance search |
US10289413B2 (en) * | 2017-10-02 | 2019-05-14 | Advanced Micro Devices, Inc. | Hybrid analog-digital floating point number representation and arithmetic |
US11216250B2 (en) * | 2017-12-06 | 2022-01-04 | Advanced Micro Devices, Inc. | Dynamic, variable bit-width numerical precision on field-programmable gate arrays for machine learning tasks |
CN108089958B (zh) * | 2017-12-29 | 2021-06-08 | 珠海市君天电子科技有限公司 | Gpu测试方法、终端设备和计算机可读存储介质 |
DE102018209901A1 (de) * | 2018-06-19 | 2019-12-19 | Robert Bosch Gmbh | Recheneinheit, Verfahren und Computerprogramm zum Multiplizieren zumindest zweier Multiplikanden |
CN110865882B (zh) * | 2018-08-28 | 2022-07-08 | 清华大学 | 数据处理方法、装置、计算机设备和存储介质 |
CN109840067B (zh) * | 2019-01-14 | 2021-04-20 | 中国人民解放军国防科技大学 | 一种基于数学近似的浮点程序精度缺陷修复方法 |
US11106430B1 (en) * | 2019-05-16 | 2021-08-31 | Facebook, Inc. | Circuit and method for calculating non-linear functions of floating-point numbers |
CN112732221A (zh) * | 2019-10-14 | 2021-04-30 | 安徽寒武纪信息科技有限公司 | 用于浮点运算的乘法器、方法、集成电路芯片和计算装置 |
US11514594B2 (en) | 2019-10-30 | 2022-11-29 | Vergence Automation, Inc. | Composite imaging systems using a focal plane array with in-pixel analog storage elements |
CN111104091B (zh) * | 2019-12-12 | 2021-11-26 | 北京科技大学 | 一种动态浮点误差分析中精度特定计算的检测和转换方法 |
CN111126587B (zh) * | 2019-12-30 | 2021-02-02 | 上海安路信息科技有限公司 | 交并比电路 |
US11709225B2 (en) * | 2020-06-19 | 2023-07-25 | Nxp B.V. | Compression of data employing variable mantissa size |
US11188304B1 (en) * | 2020-07-01 | 2021-11-30 | International Business Machines Corporation | Validating microprocessor performance |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0262032B1 (fr) * | 1986-09-22 | 1991-11-27 | Francis Jutand | Additionneur binaire comportant un opérande fixé, et multiplieur binaire parallèle-série comprenant un tel additionneur |
US5226003A (en) * | 1990-07-17 | 1993-07-06 | Kabushiki Kaisha Toshiba | Multi-path multiplier |
CN1472636A (zh) * | 2002-07-29 | 2004-02-04 | 矽统科技股份有限公司 | 浮点数的对数运算方法和装置 |
CN101042638A (zh) * | 2006-03-23 | 2007-09-26 | 富士通株式会社 | 浮点数求和的处理方法及计算机系统 |
CN101334766A (zh) * | 2008-06-30 | 2008-12-31 | 东软飞利浦医疗设备系统有限责任公司 | 一种并行微处理器及其实现方法 |
Family Cites Families (96)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5346577B2 (zh) | 1974-03-25 | 1978-12-14 | ||
US4380046A (en) | 1979-05-21 | 1983-04-12 | Nasa | Massively parallel processor computer |
JPS5630322A (en) * | 1979-08-21 | 1981-03-26 | Toshiba Corp | D/a converter |
US4493048A (en) | 1982-02-26 | 1985-01-08 | Carnegie-Mellon University | Systolic array apparatuses for matrix computations |
JPS5952380A (ja) * | 1982-09-17 | 1984-03-26 | Victor Co Of Japan Ltd | 補間装置 |
US4583222A (en) | 1983-11-07 | 1986-04-15 | Digital Equipment Corporation | Method and apparatus for self-testing of floating point accelerator processors |
US4985832A (en) | 1986-09-18 | 1991-01-15 | Digital Equipment Corporation | SIMD array processing system with routing networks having plurality of switching stages to transfer messages among processors |
US5170484A (en) | 1986-09-18 | 1992-12-08 | Digital Equipment Corporation | Massively parallel array processing system |
US4933895A (en) | 1987-07-10 | 1990-06-12 | Hughes Aircraft Company | Cellular array having data dependent processing capabilities |
JPH01183732A (ja) | 1988-01-18 | 1989-07-21 | Daikin Ind Ltd | 浮動小数点数から整数への変換装置および変換方法 |
US5153848A (en) | 1988-06-17 | 1992-10-06 | Bipolar Integrated Technology, Inc. | Floating point processor with internal free-running clock |
WO1990005335A1 (en) | 1988-11-04 | 1990-05-17 | Hitachi, Ltd. | Apparatus for multiplication, division and extraction of square root |
JP2765882B2 (ja) * | 1988-11-14 | 1998-06-18 | 株式会社日立製作所 | 並列計算機,ベクトルレジスタ間データフロー同期装置およびネットワークプリセット装置 |
US5293500A (en) | 1989-02-10 | 1994-03-08 | Mitsubishi Denki K.K. | Parallel processing method and apparatus |
US5226166A (en) | 1989-02-10 | 1993-07-06 | Mitsubishi Denki K.K. | Parallel operation processor with second command unit |
JPH0314128A (ja) | 1989-06-13 | 1991-01-22 | Tomio Kurokawa | 対数表現数値利用の演算装置 |
DE4002501A1 (de) * | 1990-01-29 | 1991-08-01 | Thomson Brandt Gmbh | Verfahren zur umwandlung von digitalen signalen in analoge signale |
JP2605916B2 (ja) | 1990-03-19 | 1997-04-30 | ヤマハ株式会社 | 波形信号発生装置 |
EP0463966B1 (en) | 1990-06-29 | 1998-11-25 | Digital Equipment Corporation | High-performance multi-processor having floating point unit and operation method |
US5966528A (en) | 1990-11-13 | 1999-10-12 | International Business Machines Corporation | SIMD/MIMD array processor with vector processing |
WO1993011503A1 (en) | 1991-12-06 | 1993-06-10 | Norman Richard S | Massively-parallel direct output processor array |
JP2647327B2 (ja) * | 1992-04-06 | 1997-08-27 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 大規模並列コンピューティング・システム装置 |
US5790834A (en) | 1992-08-31 | 1998-08-04 | Intel Corporation | Apparatus and method using an ID instruction to identify a computer microprocessor |
EP0632369A1 (en) | 1993-06-29 | 1995-01-04 | Stichting voor de Technische Wetenschappen | CORDIC algorithms and architectures |
US5623616A (en) | 1993-07-22 | 1997-04-22 | Hewlett-Packard Company | Floating point operaton throughput control |
DE69429061T2 (de) | 1993-10-29 | 2002-07-18 | Advanced Micro Devices Inc | Superskalarmikroprozessoren |
US5375084A (en) | 1993-11-08 | 1994-12-20 | International Business Machines Corporation | Selectable interface between memory controller and memory simms |
US5442577A (en) | 1994-03-08 | 1995-08-15 | Exponential Technology, Inc. | Sign-extension of immediate constants in an alu |
JPH0877282A (ja) | 1994-09-09 | 1996-03-22 | Radic:Kk | アナログ演算回路 |
US5631859A (en) * | 1994-10-27 | 1997-05-20 | Hewlett-Packard Company | Floating point arithmetic unit having logic for quad precision arithmetic |
US5581485A (en) | 1994-12-08 | 1996-12-03 | Omni Microelectronics, Inc. | Analog vector distance measuring and vector quantization architecture |
US5689677A (en) | 1995-06-05 | 1997-11-18 | Macmillan; David C. | Circuit for enhancing performance of a computer for personal use |
JP3405864B2 (ja) | 1995-09-12 | 2003-05-12 | 富士通株式会社 | 演算装置、相関演算装置、動画像圧縮装置、ずれ検出方法およびずれ検出装置 |
US5943242A (en) | 1995-11-17 | 1999-08-24 | Pact Gmbh | Dynamically reconfigurable data processing system |
US5666071A (en) | 1995-12-01 | 1997-09-09 | Advanced Micro Devices, Inc. | Device and method for programming high impedance states upon select input/output pads |
JP2806346B2 (ja) * | 1996-01-22 | 1998-09-30 | 日本電気株式会社 | 演算処理装置 |
US6018232A (en) | 1996-02-27 | 2000-01-25 | Fujitsu Limited | Method of operating battery powered computing device with radio transmitter |
US5892962A (en) * | 1996-11-12 | 1999-04-06 | Lucent Technologies Inc. | FPGA-based processor |
DE19651075A1 (de) | 1996-12-09 | 1998-06-10 | Pact Inf Tech Gmbh | Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen |
US5887160A (en) | 1996-12-10 | 1999-03-23 | Fujitsu Limited | Method and apparatus for communicating integer and floating point data over a shared data path in a single instruction pipeline processor |
US6065209A (en) | 1997-05-23 | 2000-05-23 | S-Cal Research Corp. | Method of fabrication, tooling and installation of downhole sealed casing connectors for drilling and completion of multi-lateral wells |
US6023753A (en) | 1997-06-30 | 2000-02-08 | Billion Of Operations Per Second, Inc. | Manifold array processor |
US5867693A (en) | 1997-07-03 | 1999-02-02 | Modern Video Technology, Inc. | Extended resolution phase measurement |
JPH11212763A (ja) * | 1998-01-30 | 1999-08-06 | Denso Corp | 電子制御装置 |
DE69935361T2 (de) | 1998-02-17 | 2007-11-29 | Anadec Gmbh | Verfahren und elektronische Schaltung zur Datenverarbeitung, insbesondere für die Berechnung von Wahrscheinlichkeitsverteilungen |
US6173388B1 (en) | 1998-04-09 | 2001-01-09 | Teranex Inc. | Directly accessing local memories of array processors for improved real-time corner turning processing |
US6065029A (en) | 1998-05-26 | 2000-05-16 | N*Able Technologies, Inc. | Method and system for providing a random number generator |
US6650327B1 (en) | 1998-06-16 | 2003-11-18 | Silicon Graphics, Inc. | Display system having floating point rasterization and floating point framebuffering |
US6226737B1 (en) * | 1998-07-15 | 2001-05-01 | Ip-First, L.L.C. | Apparatus and method for single precision multiplication |
EP1113388B1 (en) * | 1998-09-10 | 2007-03-07 | Ecchandes Inc. | Visual device |
JP2969115B1 (ja) * | 1998-11-25 | 1999-11-02 | 株式会社日立製作所 | 半導体装置 |
US6622135B1 (en) | 1998-12-29 | 2003-09-16 | International Business Machines Corporation | Method for detecting and classifying anomalies using artificial neural networks |
US7242414B1 (en) * | 1999-07-30 | 2007-07-10 | Mips Technologies, Inc. | Processor having a compare extension of an instruction set architecture |
JP2001043385A (ja) * | 1999-05-25 | 2001-02-16 | Ecchandesu:Kk | 多帯域動画像中の移動物体のエッジ情報生成装置及び多帯域動画像中の移動物体のエッジ情報生成方法 |
US7346643B1 (en) | 1999-07-30 | 2008-03-18 | Mips Technologies, Inc. | Processor with improved accuracy for multiply-add operations |
US6675292B2 (en) | 1999-08-13 | 2004-01-06 | Sun Microsystems, Inc. | Exception handling for SIMD floating point-instructions using a floating point status register to report exceptions |
JP2001184335A (ja) | 1999-12-24 | 2001-07-06 | Kanazawa Inst Of Technology | プログラマブル・ディジタル演算icとそのプログラマブル・ディジタル演算icを用いた装置ならびにそのプログラマブル・ディジタル演算icの製造方法 |
US6647507B1 (en) | 1999-12-31 | 2003-11-11 | Intel Corporation | Method for improving a timing margin in an integrated circuit by setting a relative phase of receive/transmit and distributed clock signals |
GB2370381B (en) | 2000-12-19 | 2003-12-24 | Picochip Designs Ltd | Processor architecture |
FI113714B (fi) | 2000-12-28 | 2004-05-31 | Ari Paasio | Prosessori, piiri ja menetelmä kuvien käsittelemiseksi rinnakkaisprosessoriverkossa |
JP3949915B2 (ja) * | 2001-07-05 | 2007-07-25 | 日本電信電話株式会社 | 空間変換に基づく楕円体問合せ方法および装置と空間変換に基づく楕円体問合せプログラムおよび該プログラムを記録した記録媒体 |
US6941334B2 (en) | 2002-02-01 | 2005-09-06 | Broadcom Corporation | Higher precision divide and square root approximations |
US6920574B2 (en) | 2002-04-29 | 2005-07-19 | Apple Computer, Inc. | Conserving power by reducing voltage supplied to an instruction-processing portion of a processor |
US7234169B2 (en) | 2002-04-29 | 2007-06-19 | The Boeing Company | Method and apparatus for integrating and monitoring key digital cinema system components as a means to verify system integrity |
US6600222B1 (en) | 2002-07-17 | 2003-07-29 | Intel Corporation | Stacked microelectronic packages |
US7133772B2 (en) | 2002-07-30 | 2006-11-07 | Global Locate, Inc. | Method and apparatus for navigation using instantaneous Doppler measurements from satellites |
US7194615B2 (en) * | 2002-09-17 | 2007-03-20 | Nokia Corporation | Reconfigurable apparatus being configurable to operate in a logarithmic scale |
US7209867B2 (en) | 2002-10-15 | 2007-04-24 | Massachusetts Institute Of Technology | Analog continuous time statistical processing |
US7243333B2 (en) | 2002-10-24 | 2007-07-10 | International Business Machines Corporation | Method and apparatus for creating and executing integrated executables in a heterogeneous architecture |
JP4184921B2 (ja) * | 2002-11-06 | 2008-11-19 | 松下電器産業株式会社 | 確率型演算素子 |
US20070124565A1 (en) | 2003-06-18 | 2007-05-31 | Ambric, Inc. | Reconfigurable processing array having hierarchical communication network |
JP3845636B2 (ja) | 2004-01-21 | 2006-11-15 | 株式会社東芝 | 関数近似値の演算器 |
US7669035B2 (en) | 2004-01-21 | 2010-02-23 | The Charles Stark Draper Laboratory, Inc. | Systems and methods for reconfigurable computing |
US7779177B2 (en) | 2004-08-09 | 2010-08-17 | Arches Computing Systems | Multi-processor reconfigurable computing system |
US7225323B2 (en) * | 2004-11-10 | 2007-05-29 | Nvidia Corporation | Multi-purpose floating point and integer multiply-add functional unit with multiplication-comparison test addition and exponent pipelines |
US7446773B1 (en) * | 2004-12-14 | 2008-11-04 | Nvidia Corporation | Apparatus, system, and method for integrated heterogeneous processors with integrated scheduler |
JP4547668B2 (ja) * | 2004-12-24 | 2010-09-22 | カシオ計算機株式会社 | 動き補償予測符号化装置及び動き補償予測符号化方法 |
US20070247189A1 (en) | 2005-01-25 | 2007-10-25 | Mathstar | Field programmable semiconductor object array integrated circuit |
US7921425B2 (en) | 2005-03-14 | 2011-04-05 | Cisco Technology, Inc. | Techniques for allocating computing resources to applications in an embedded system |
EP1724823A3 (fr) | 2005-05-11 | 2009-09-09 | Stmicroelectronics Sa | Procédé de connexion d'une microplaquette de semi-conducteur sur un support d'interconnexion |
JP2006350907A (ja) * | 2005-06-20 | 2006-12-28 | Ricoh Co Ltd | Simd型マイクロプロセッサ、データ転送装置、及びデータ変換装置 |
CN101228692B (zh) | 2005-07-25 | 2012-10-03 | Arm有限公司 | 功率控制集成电路单元 |
US7856618B2 (en) | 2005-08-04 | 2010-12-21 | International Business Machines Corporation | Adaptively generating code for a computer program |
US7512282B2 (en) | 2005-08-31 | 2009-03-31 | International Business Machines Corporation | Methods and apparatus for incremental approximate nearest neighbor searching |
US7301436B1 (en) | 2005-11-14 | 2007-11-27 | National Semiconductor Corporation | Apparatus and method for precision trimming of integrated circuits using anti-fuse bond pads |
US8595279B2 (en) | 2006-02-27 | 2013-11-26 | Qualcomm Incorporated | Floating-point processor with reduced power requirements for selectable subprecision |
US7912887B2 (en) | 2006-05-10 | 2011-03-22 | Qualcomm Incorporated | Mode-based multiply-add recoding for denormal operands |
US20080059764A1 (en) | 2006-09-01 | 2008-03-06 | Gheorghe Stefan | Integral parallel machine |
JP4461135B2 (ja) | 2006-12-25 | 2010-05-12 | 富士通株式会社 | 演算回路及び演算方法並びに情報処理装置 |
US8421794B2 (en) * | 2007-03-23 | 2013-04-16 | Qualcomm Incorporated | Processor with adaptive multi-shader |
US8463835B1 (en) | 2007-09-13 | 2013-06-11 | Xilinx, Inc. | Circuit for and method of providing a floating-point adder |
US8258410B2 (en) | 2008-01-26 | 2012-09-04 | International Business Machines Corporation | Construction of reliable stacked via in electronic substrates—vertical stiffness control method |
WO2010051547A2 (en) * | 2008-10-31 | 2010-05-06 | University Of Southern California | Distance quantization in computing distance in high dimensional space |
US7746108B1 (en) * | 2009-04-02 | 2010-06-29 | Xilinx, Inc. | Compute-centric architecture for integrated circuits |
US7746104B1 (en) | 2009-04-02 | 2010-06-29 | Xilinx, Inc. | Dynamically controlled output multiplexer circuits in a programmable integrated circuit |
US8150902B2 (en) | 2009-06-19 | 2012-04-03 | Singular Computing Llc | Processing with compact arithmetic processing element |
-
2010
- 2010-06-15 US US12/816,201 patent/US8150902B2/en active Active
- 2010-06-16 CN CN201610080760.7A patent/CN105760135B/zh active Active
- 2010-06-16 EP EP10790095A patent/EP2443551A4/en not_active Ceased
- 2010-06-16 CN CN201080036873.8A patent/CN102576304B/zh active Active
- 2010-06-16 KR KR1020127001525A patent/KR101235997B1/ko active IP Right Grant
- 2010-06-16 JP JP2012516227A patent/JP2012530966A/ja active Pending
- 2010-06-16 WO PCT/US2010/038769 patent/WO2010148054A2/en active Application Filing
- 2010-06-16 CA CA2768731A patent/CA2768731C/en active Active
- 2010-06-16 BR BRPI1011808A patent/BRPI1011808A2/pt not_active Application Discontinuation
- 2010-06-16 EP EP18177602.2A patent/EP3410291A1/en active Pending
-
2012
- 2012-02-17 US US13/399,884 patent/US8407273B2/en active Active
-
2013
- 2013-03-25 US US13/849,606 patent/US9218156B2/en active Active
-
2014
- 2014-04-03 JP JP2014077372A patent/JP6184897B2/ja active Active
-
2015
- 2015-12-21 US US14/976,852 patent/US9792088B2/en active Active
-
2017
- 2017-07-26 JP JP2017144389A patent/JP6371451B2/ja active Active
- 2017-10-16 US US15/784,359 patent/US10120648B2/en active Active
-
2018
- 2018-07-12 JP JP2018132055A patent/JP6599522B2/ja active Active
- 2018-10-30 US US16/175,131 patent/US10416961B2/en active Active
-
2019
- 2019-09-16 US US16/571,871 patent/US10664236B2/en active Active
- 2019-10-02 JP JP2019182315A patent/JP6796177B2/ja active Active
- 2019-11-06 US US16/675,693 patent/US10656912B2/en active Active
-
2020
- 2020-05-25 US US16/882,686 patent/US10754616B1/en active Active
- 2020-05-25 US US16/882,694 patent/US11169775B2/en active Active
- 2020-09-23 US US17/029,780 patent/US11768659B2/en active Active
- 2020-11-13 JP JP2020189077A patent/JP7273018B2/ja active Active
-
2021
- 2021-07-02 US US17/367,071 patent/US11327715B2/en active Active
- 2021-07-02 US US17/367,051 patent/US11327714B2/en active Active
- 2021-07-02 US US17/367,097 patent/US11354096B2/en active Active
-
2022
- 2022-12-02 US US18/073,972 patent/US11842166B2/en active Active
- 2022-12-15 JP JP2022200644A patent/JP2023040014A/ja active Pending
-
2023
- 2023-01-26 US US18/102,020 patent/US11768660B2/en active Active
- 2023-12-08 US US18/533,372 patent/US20240103806A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0262032B1 (fr) * | 1986-09-22 | 1991-11-27 | Francis Jutand | Additionneur binaire comportant un opérande fixé, et multiplieur binaire parallèle-série comprenant un tel additionneur |
US5226003A (en) * | 1990-07-17 | 1993-07-06 | Kabushiki Kaisha Toshiba | Multi-path multiplier |
CN1472636A (zh) * | 2002-07-29 | 2004-02-04 | 矽统科技股份有限公司 | 浮点数的对数运算方法和装置 |
CN101042638A (zh) * | 2006-03-23 | 2007-09-26 | 富士通株式会社 | 浮点数求和的处理方法及计算机系统 |
CN101334766A (zh) * | 2008-06-30 | 2008-12-31 | 东软飞利浦医疗设备系统有限责任公司 | 一种并行微处理器及其实现方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11842166B2 (en) | 2009-06-19 | 2023-12-12 | Singular Computing Llc | Processing with compact arithmetic processing element |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105760135B (zh) | 使用紧凑的运算处理元件进行处理的计算设备 | |
US20240112007A1 (en) | Neural network accelerator using logarithmic-based arithmetic | |
Bekiaris et al. | Kinematic modelling of disc galaxies using graphics processing units | |
US20220350662A1 (en) | Mixed-signal acceleration of deep neural networks | |
Mingas et al. | Population-based MCMC on multi-core CPUs, GPUs and FPGAs | |
US20210056446A1 (en) | Inference accelerator using logarithmic-based arithmetic | |
US20210056399A1 (en) | Asynchronous accumulator using logarithmic-based arithmetic | |
JP2006039790A (ja) | ブロードキャスト型並列処理のための演算処理装置 | |
US11537859B2 (en) | Flexible precision neural inference processing unit | |
Ghidouche et al. | Efficient high degree polynomial root finding using GPU | |
Abellán et al. | Simulating and executing circuits employing the quantum computing paradigm | |
US20220180177A1 (en) | An efficient method for vlsi implementation of useful neural network activation functions | |
Fox | Specialised architectures and arithmetic for machine learning | |
Urquhart | VLSI architectures for the linear discriminant function classifier | |
Xin et al. | A Versatility-Performance Balanced Hardware Architecture for Scene Text Detection | |
Song et al. | Extending Neural Processing Unit and Compiler for Advanced Binarized Neural Networks | |
Aziz et al. | The implementation of a new 3-D parallel filtering algorithm on the SHARC ADSP21060 platform | |
Patel | A 3D convolution engine for computing the reciprocal-space ewald electrostatic energy in molecular dynamics simulations | |
Amin | The design of image processing algorithms on parallel computers | |
Patel | A 3D convolution engine for computing the reciprocal-space Ewald electrostatic energy in molecular dynamics simulations. | |
Christiani | Design of a Stochastic No-Propagation Multilayer Perceptron | |
BAAGYERE | KWAME NKRUMAH UNIVERSITY OF SCIENCE AND TECHNOLOGY, KUMASI, GHANA. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |