在浮点操作中功率降低的方法
【专利摘要】提供用于使能在浮点操作中功率降低的方法。在一个示例中,系统接收混合乘加指令的浮点数。系统确定混合乘加指令针对浮点数不要求遵从精度标准。系统生成选通信号用于配置为实施混合乘加指令的操作的集成电路。系统随后将选通信号发送到集成电路以关闭包括在集成电路中的多个逻辑门。
【专利说明】:于任何位置。在浮点数的内部表示中该位学计数法的计算机实现。若干年来,计算机990年以来,最常见的表示法是由电气和电
从1222754标准中的标准。在高性能计算育的是,这类支持在集成电路上的面积和功:准所阐述的精度和舍入遵从时该成本尤其
机系统中实施浮点操作的更高效的方法。
5浮点操作中功率降低的方法。方法包括接)指令的操作数八、操作数8和操作数 ?:,其)口上操作数 ;确定混合乘加指令针对浮点81811211)用于集成电路,集成电路配置为通I操作数8的积的低阶位来实施混合乘加指`具有其他等效的实现方案。
[0009]图1是示出配置为实现本发明的一个或多个方面的计算机系统的框图。
[0010]图2是根据本发明的一个实施例的、示出并行处理子系统的框图。
[0011]图3是根据本发明的一个实施例的、示范性浮点数的示图。
[0012]图4是根据本发明的一个实施例的、示范性混合乘加(FMA)指令的示意图。
[0013]图5是根据本发明的一个实施例的、另一示范性FMA指令的示意图。
[0014]图6是根据本发明的一个实施例的、又一示范性FMA指令的示意图。
[0015]图7是根据本发明的一个实施例的、示范性乘法器阵列的示意图。
[0016]图8是根据本发明的一个实施例的、图2的运算子系统的示意图。
[0017]图9是根据本发明的一个实施例的、用于使能在浮点操作中降低功率的方法步骤的流程图。
【具体实施方式】
[0018]在下面的描述中,将阐述大量的具体细节以提供对本发明更透彻的理解。然而,本领域的技术人员应该清楚,本发明可以在没有一个或多个这些具体细节的情况下得以实施。在其他实例中,未描述公知特征以避免对本发明造成混淆。
[0019]系统概述
[0020]图1是示出配置为实现本发明的一个或多个方面的计算机系统100的框图。计算机系统100包括中央处理单元(CPU) 102和包括设备驱动程序103的系统存储器104。CPU102和系统存储器104经由可以包括存储器桥105的互连路径进行通信。存储器桥105可以是例如北桥芯片,经由总线或其他通信路径106 (例如超传输(HyperTransport)链路等)连接到输入/输出(I/O)桥107。I/O桥107,其可以是例如南桥芯片,从一个或多个用户输入设备108 (例如键盘、鼠标等)接收用户输入并且经由路径106和存储器桥105将该输入转发到CPU102。并行处理子系统112经由总线或其他通信路径113 (例如高速外围部件互连(PCI)express、加速图形端口(AGP)和/或超传输链路等)耦连到存储器桥105。在一个实现方案中,并行处理子系统112是将像素传递到显示设备110(例如常规的基于阴极射线管(CRT)和/或液晶显示器(IXD)的监视器等)的图形子系统。系统盘114也连接到I/O桥107。交换器116提供I/O桥107与诸如网络适配器118以及各种插卡120和121的其他部件之间的连接。其他部件(未明确示出),包括通用串行总线(USB)和/或其他端口连接、压缩光盘(CD)驱动器、数字视频光盘(DVD)驱动器、胶片录制设备及类似部件,也可以连接到I/O桥107。可使用任何合适的协议,诸如PC1、高速PCI Express (PCIe)、AGP、超传输和/或任何其他总线或点对点通信协议来实现图1中将各部件互连的通信路径,并且不同设备之间的可使用不同协议的连接在本领域中是已知的。设备是硬件或硬件和软件的组合。
[0021]如下文结合图3-9更详细描述的,并行处理子系统112包括并行处理单元(PTO),其配置为通过使用使能浮点操作中的功率降低的电路来执行软件应用(例如设备驱动程序103)。那些分组类型通过由通信路径113所使用的通信协议来指定。在新分组类型被引入到通信协议中的情况下(例如由于通信协议的增强),并行处理子系统112可配置为基于新分组类型生成分组并使用新分组类型来跨通信路径113与CPU102 (或其他处理单元)交换数据。
[0022]在一个实现方案中,并行处理子系统112包含经优化用于图形和视频处理的电路,包括例如视频输出电路,并且构成图形处理单元(⑶们。在另一实现方案中,并行处理子系统112包含经优化用于通用处理的电路,同时保留本文更详细描述的底层(皿(161171叩)的计算架构。在又一实现方案中,可以将并行处理子系统112与一个或多个其他系统元件集成,诸如存储器桥105、0^102以及1/0桥107,以形成片上系统(^…)。
[0023]应该理解,本文所示系统是示意性的,并且变化和修改都是可能的。连接拓扑,包括桥的数目和布置、0^102的数目以及并行处理子系统112的数目,可根据需要修改。例如,在一些实现方案中,系统存储器104直接连接到0^102而不是通过桥,并且其他设备经由存储器桥105和0^102与系统存储器104通信。在其他替代性拓扑中,并行处理子系统112连接到1/0桥107或直接连接到0^102,而不是连接到存储器桥105。而在其他实现方案中,1/0桥107和存储器桥105可能被集成到单个芯片上。大型实现方案可以包括两个或两个以上的0^102以及两个或两个以上的并行处理系统112。本文所示的特定部件是可选的;例如,任意数目的插卡或外围设备都可能得到支持。在一些实现方案中,交换器116被去掉,网络适配器118和插卡120、121直接连接到1/0桥107。
[0024]图2是示出根据本发明的一个实施例的、并行处理子系统112的框图。如所示的,并行处理子系统112包括一个或多个并行处理单元〔??们202,每个并行处理单元202都耦连到本地并行处理(^?)存储器204。通常,并行处理子系统包括V个其中0 1。(本文中,类似对象的多个实例需要时以标识对象的参考数字和标识实例的括号中的数字来表示。)^^^202和并行处理存储器204可使用一个或多个集成电路设备来实现,诸如可编程处理器、专用集成电路(八310或存储器设备,或者以任何其他技术可行的方式来实现。
[0025]再参考图1,在一些实现方案中,并行处理子系统112中的一些或所有??口202是具有渲染管线的图形处理器,其可以配置为实施与下述相关的各种任务:经由存储器桥105和总线113从0^102和/或系统存储器104所供应的图形数据生成像素数据,与本地并行处理存储器204 (可被用作图形存储器,包括例如常规帧缓冲区打虹))交互以存储和更新像素数据,传递像素数据到显示设备110等等。在一些实现方案中,并行处理子系统112可包括一个或多个作为图形处理器而操作的??口202以及一个或多个用于通用计算的其他??口202。这些??口可以是同样的或不同的,并且每个??口可具有其自身专用并行处理存储器设备或不具有专用并行处理存储器设备。一个或多个??似02可输出数据到显示设备110,或者每个??似02可输出数据到一个或多个显示设备110。
[0026]在操作中,0^102是计算机系统100的主处理器,控制和协调其他系统部件的操作。具体地,0^102发出控制??口202的操作的命令。在一些实现方案中,0^102写入用于每个??口202的命令流到入栈缓冲区(叩也―打虹)中(在图1或图2中未明确示出),该数据结构可位于系统存储器104、并行处理存储器204、或0^102和??似02都可访问的另一存储位置中。?叩202从入栈缓冲区读取命令流,然后相对于0^102的操作异步地执行命令。
[0027]现在返回参考图2,每个??口202包括经由连接到存储器桥105 (或者,在一个替代性实现方案中,直接连接到0^102)的通信路径113与计算机系统100的其余部分通信的1/0单元205。??^202到计算机系统100的其余部分的连接也可以变化。在一些实现方案中,并行处理子系统112可实现为可插入到计算机系统100的扩展槽中的插卡。在其他实现方案中,?叩202可以和诸如存储器桥105或1/0桥107的总线桥集成在单个芯片上。而在其他实现方案中,?叩202的一些或所有元件可以和0^102集成在单个芯片上。
[0028]在一个实现方案中,通信路径113是链路,如本领域所知的,其中专用通道被分配到每个??口202。也可以使用其他通信路径。如上文所述,还可使用逆流互连以实现通信路径113以及计算机系统100、0^102、或??口202内的任何其他通信路径。1/0单元205生成用于在通信路径113上传送的包(或其他信号),并且还从通信路径113接收所有传入包(或其他信号),将传入包引导到??似02的适当部件。例如,可将与处理任务相关的命令引导到主机接口 206,而将与存储器操作相关的命令(例如,对并行处理存储器204的读取或写入)引导到存储器交叉开关单元210。主机接口 206读取每个入栈缓冲区,并且将由入栈缓冲区所指定的工作输出到前端212。
[0029]有利地,每个??[202都实现高度并行处理架构。如详细示出的,??似02 (0)包括运算子系统230,其包括个通用处理集群1。每个0^208能够并发执行大量的(例如,几百或几千)线程,其中每个线程是程序的实例在各种应用中,可分配不同的⑶0208用于处理不同类型的程序或用于实施不同类型的计算。⑶(:208的分配可以取决于因每种类型的程序或计算所产生的工作量而变化。[0030]6?0208经由工作分布单元200接收要执行的处理任务,该工作分布单元200从前端单元212接收定义处理任务的命令。处理任务可包括浮点操作,诸如^8+(:的混合乘加⑶嫩)指令。工作分布单元200可配置为获取与任务相对应的操作数(例如八、8和0,或者工作分布单元200可从前端212接收操作数(例如八、8和0。前端212确保0^208在由入栈缓冲区所指定的处理被发起之前配置为有效状态。
[0031]当??似02用于图形处理时,例如,用于每个浮点操作的处理工作量可分成近似相等大小的任务以使操作能够分布到多个⑶0208。工作分布单元200可配置为以能够将任务提供到多个61^208用于处理的频率产生任务。在一个实现方案中,工作分布单元200可以足够快地产生任务以同时维护忙碌的多个⑶0208。相反,在常规系统中,处理典型地由单个处理引擎来实施,而其他处理引擎保持空闲,在开始它们的处理任务之前等待该单个处理引擎完成其任务。在本发明的一些实现方案中,⑶0208的各部分配置为实施不同类型的处理。例如,第一部分可配置为实施顶点着色和拓扑生成。第二部分可配置为实施曲面细分“688611社1011)和几何体着色。第三部分可配置为在屏幕空间中实施像素着色以产生被渲染的图像。由⑶0208所产生的中间数据可存储在缓冲区中以允许中间数据在⑶(:208之间传送用于进一步处理。
[0032]存储器接口 214包括0个分区单元215,每个分区单元215直接耦连到并行处理存储器204的一部分,其中0≥1。如所示的,分区单元215的数目一般等于0狀1220的数目。在其他实现方案中,分区单元215的数目也可以不等于存储器设备的数目。动态随机存取存储器(0狀1)220可以由其他合适的存储设备来替代并且可以是一般常规的设计。诸如帧缓冲区或纹理映射图的渲染目标可以跨0狀1220加以存储,这允许分区单元215并行写入每个渲染目标的各部分以有效地使用并行处理存储器204的可用带宽。
[0033]任何一个0^208都可以处理要被写到并行处理存储器204内的任何0狀1220的数据。交叉开关单元210配置为路由每个⑶(:208的输出到任何分区单元215的输入或到另一个0^208用于进一步处理。⑶(:208通过交叉开关单元210与存储器接口 214通信,以对各种外部存储器设备进行读取或写入。在一个实现方案中,交叉开关单元210具有到存储器接口 214的连接以和I/O单元205通信,以及到本地并行处理存储器204的连接,从而使得在不同GPC208内的处理核心能够与系统存储器104或对于PPU202而言非本地的其他存储器通信。在图2所示的实现方案中,交叉开关单元210直接与I/O单元205连接。交叉开关单元210可使用虚拟信道来分开GPC208与分区单元215之间的业务流。
[0034]另外,GPC208可被编程以执行与种类繁多的应用相关的处理任务,包括但不限于,线性和非线性数据变换、视频和/或音频数据过滤、建模操作(例如,应用物理定律以确定对象的位置、速率和其他属性)、图像渲染操作(例如,曲面细分着色器、顶点着色器、几何着色器、和/或像素着色器程序)等等。PPU202可将数据从系统存储器104和/或本地并行处理存储器204转移到内部(片上)存储器中,处理该数据,并且将结果数据写回到系统存储器104和/或本地并行处理存储器204,其中这样的数据可以由其他系统部件访问,所述其他系统部件包括CPU102或另一个并行处理子系统112。
[0035]PPU202可配备有任何容量(amount)的本地并行处理存储器204,包括没有本地存储器,并且可以以任何组合方式使用本地存储器和系统存储器。例如,在统一存储器架构(UMA)实现方案中,PPU202可以是图形处理器。在这样的实现方案中,将不提供或几乎不提供专用的图形(并行处理)存储器,并且PPU202会以排他或几乎排他的方式使用系统存储器。在UMA实现方案中,PPU202可集成到桥式芯片中或处理器芯片中,或作为具有高速链路(例如,PCIe)的分立芯片提供,所述高速链路经由桥式芯片或其他通信手段将PPU202连接到系统存储器。
[0036]如上所示,在并行处理子系统112中可以包括任何数目的PPU202。例如,可在单个插卡上提供多个PPU202、或可将多个插卡连接到通信路径113、或可将一个或多个PPU202集成到桥式芯片中。在多PPU系统中的PPU202可以彼此同样或不同。例如,不同的PPU202可能具有不同数目的处理核心、不同容量的本地并行处理存储器等等。在存在多个PPU202的情况下,可并行操作那些PI3U从而以高于单个PPU202所可能达到的吞吐量来处理数据。包含一个或多个PPU202的系统可以以各种配置和形式因素来实现,包括台式电脑、笔记本电脑或手持式个人计算机、服务器、工作站、游戏控制台、嵌入式系统等等。
[0037]本发明的一个实施例可被实现为用于在诸如例如图1的计算机系统100的计算机系统上使用的程序产品。该程序产品的一个或多个程序定义实施例的各功能(包括本文中描述的方法)并且可以被包含在各种计算机可读存储介质上。示例性计算机可读存储介质包括但不限于:(i)不可写的存储介质(例如,计算机内的只读存储器设备,诸如可由CD-ROM驱动器读取的CD-ROM盘、闪存存储器、ROM芯片或任何类型的固态非易失性半导体存储器),在其上存储永久性信息;和(ii)可写的存储介质(例如,磁盘驱动器或硬盘驱动器内的软盘或者任何类型的固态随机存取半导体存储器),在其上存储可更改的信息。
[0038]使能浮点操作中的功率降低
[0039]本技术用精度换取在浮点密集应用中的功率节约,其中节能被视为最重要的目标,排名在对遵从IEEE标准的需求之上。为浮点数提供规则的示范性标准包括但不限于IEEE754、IEEE754-1985、IEEE854-1987 和 IEEE754-2008,以及其他标准。
[0040]在一些应用中,严格遵从IEEE标准是不必要的。例如,在计算机图形中,存在一些情况,在其中稍微低一些的精度和/或较少理想数位的舍入操作是可接受的。例如,在一些图形应用中,首要目标是亮化正确的像素,这典型地不要求以高精度进行处理。配置为处置这些任务的集成电路消耗动态功率。动态功率消耗与电路的切换部件和翻转(toggle)触发器的部分是成比例的。如果集成电路的较少部件正在切换和/或翻转,那么集成电路可能消耗较少功率。本技术利用在舍入保真度中的可允许降低以提供动态功率耗散的节省。[0041 ] 本技术可实现在GPU上,在该GPU中有用于渲染图形的专用电路,所有操作不严格要求IEEE遵从。然而,如下文参考图8所进一步描述的,模式选择器设备815使运算电路能够是模态的(modal)并支持IEEE舍入遵从模式和非遵从的功率耗散降低模式二者。该灵活性(例如模态操作)在需要适当舍入的那些情况中使能功率节省的伺机使用而不用牺牲生成适当舍入的能力。为进一步支持该效用引数(argument),注意许多迭代计算,诸如牛顿-拉弗森方法,针对中间操作均不要求完全的遵从IEEE的计算。下文的描述包括浮点数的简要说明,随后是用于降低集成电路中的切换量、从而降低动态功率消耗的技术的更多细节。
[0042]图3是根据本发明的一个实施例的、示范性浮点数300的示图。IEEE754格式中的浮点数包括三个字段:符号位、偏置指数和小数。下面的示例示出每一个的意义。十进制数0.1562500在二进制中的表示是以2为基的0.00101 (也就是说,十进制形式中的1/8+1/32)。类推到其中数被写为在十进制小数点左边具有单个非零数位的科学计数法,重新写该数使得数在“二进制小数点”左边具有单个位I。数随后乘以适当的2的幂以对将位左移三个位置加以补偿,如下面的公式I所示:
[0043]0.0OlOl2=1.012X2-3等式 1
[0044]在公式I中,小数是.0l2并且指数是-3。在图3的示例中,该数的IEEE754表示法中的三个字段如下。符号=0,因为数是正的。(I指示负)。偏置指数=-3加“偏置值(bias)”。在单精度中,偏置值是127,所以在该示例中偏置指数是124。在双精度中,偏置值是1023,所以在该示例中偏置指数是1020。小数是以2为基的.01000...。
[0045]IEEE754标准将偏置值加到指数使得数在许多情况中可由对有符号的二补数的整数加以比较的相同硬件来常规地加以比较。使用偏置指数,两个正浮点数中的较小者将显出“小于”遵循对符号和量级整数的相同排序的较大者。如果两个浮点数具有不同符号,那么符号和量级比较也采用偏置指数来起作用。然而,如果两个偏置指数浮点数均是负的,那么排序必须反过来。如果指数被表示为例如二补数的数,那么对为了查看两个数中的哪一个较大的比较将不是很方便。在图3的该示例中,有效数(signficand)是23位,其中省略前导(leading)位I。由于除了零的所有数均采用前导I开始,所以前导I是固有的并且不需要被存储,从而“空闲”提供精度的额外位。在另一实现方案中,有效数包括24位。
[0046]在典型的浮点数据路径中,存在对操作A*B+C的支持,其中每个操作数A、B和C是混合乘加(FMA)指令中的浮点数。注意字母和“C”在此用作标识操作数的标志;本技术不限于使用这些特定标志A、B和C。该构造块还经由下面的等式2和3提供混合加(Fadd)和混合乘(Fmul)指令:
[0047]Fadd=A*1.0+C。等式 2
[0048]Fmul=A*B+0.0。等式 3
[0049]在遵从IEEE的场景中,A*B积的内部精度可以其整体被维护而与C操作数的相对量级无关以确保适当舍入。如下文参考图7和8所描述的,这类遵从导致相对大的乘法器阵列和非常宽的移位器阵列用于积或C加数这二者之一,或二者全部(取决于特定实现方案)。
[0050]图4是根据本发明的一个实施例的、示范性混合乘加(FMA)指令的示意图。在该示例中,A*B积的有效数410包括47位,其中省略前导位I。C加数的有效数412。加数412包括23位加固有的I。系统通过首先检查传入操作数的指数来评估FMA。在一个实现方案中,系统可调整指数以对非规格化(denormalized)的输入负责。系统基于A*B积的指数(未示出)和C加数的指数(未示出)之间的差将这些有效数(410、412)移位。系统配置为在指数的相对大小的数个情况之间加以区分,数个情况诸如当两个指数可比较时、当加数的指数比积的指数大得多和/或极大于(>>)积的指数时、以及当积的指数比加数的指数大得多和/或极大于(>>)加数的指数时。
[0051]在图4的示例中,A*B积的指数(未示出)可与C加数的指数(未示出)相比较。这些指数之间的小的差暗示积A*B和加数C的量级是类似的。在这类情况中,系统使能不同的中间权衡点,其每个提供在精度、舍入和功率节省之间的可接受的折衷。系统可将权衡点402以下的位指派为低阶位406,并将权衡点402以上的位指派为高阶位404。权衡点基于浮点数的输入指数中的相对差。权衡点基于为了节省将被支出以针对输入的给定场景计算低阶位的能量而低阶位可被忽略的程度。注意,系统不是被简单地设计为不采用相关联的较低位逻辑。这类极端的设计将使系统不灵活。而是,在各实施例中,系统配置为采用模态选通逻辑,其在一些情况下使能精准的舍入,并且在其他情况下使能该逻辑的时钟选通。例如,系统可对将另外处理低阶位406的逻辑(例如触发器)时钟选通。同时,系统使能处理高阶位404的逻辑。进行时钟选通针对非遵从IEEE的操作使能功率降低模式。功率被降低,因为生成实际和并不需要生成适当舍入的结果所需的大部分硬件(例如,逻辑被时钟选通,如上文所述)。因此,系统可从A*B+C的最终结果的全体生成中移除A*B积和/或C加数的低阶位的某部分。
[0052]图5是根据本发明的一个实施例的、另一示范性FM指令场景的示意图。在该示例中,加数C的指数(未示出)比积A*B的指数(未示出)大得多和/或极大于(>>)积A*B的指数(未示出)。A*B积的有效数510包括48位。C加数的有效数512包括23位小数,其中加前导位I以形成24位。在另一实现方案中,加数512可包括24位。再一次地,系统通过首先检查传入操作数的指数来评估FMA。系统可将权衡点502以下的位指派为低阶位506,并将权衡点502以上的位指派为高阶位504。因此,在该情况中,系统可从A*B+C的最终结果的全体生成中移除整个A*B积。
[0053]图6是根据本发明的一个实施例的、又一示范性FMA指令场景的示意图。在该示例中,加数C的指数(未示出)比积A*B的指数(未示出)小得多和/或极小于(〈O积A*B的指数(未示出)。A*B积的有效数610包括48位。C加数的有效数612包括24位,其中包括前导位I。再一次地,系统通过首先检查传入操作数的指数来评估FMA。系统可将权衡点602以下的位指派为低阶位606,并将权衡点602以上的位指派为高阶位604。因此,在该情况中,系统可从A*B+C的最终结果的全体生成中移除加数C和全体积的一部分。
[0054]图7是根据本发明的一个实施例的、示范性乘法器阵列700的示意图。乘法器阵列700是系统用来将两个二进制数相乘(例如A*B)的电子电路。乘法器阵列700可通过使用二进制加法器来建立。系统可实现多种计算机运算技术以生成乘法器阵列700。大多数技术涉及计算一组部分积(partial product),并随后对部分积一起求和。如下文进一步描述的,用于将以2为基的整数(例如二进制整数)相乘的技术类似于用于在以10为基的整数(例如十进制整数)上进行长乘法的技术。
[0055]乘法器阵列700被描绘为常见的向右倾的不规则四边形。操作数八由第一数八
八。来描绘。操作数8由第二数8^-8。来描绘。在二进制编码中,第一数化…八。乘以第二数8^-8。的一个数位(0或0。结果是部分积1^-1。的阵列,其中每个部分积是适当移位的行。使用部分积的该乘法比在十进制中容易的多,因为乘以0或1只等于0或第一数八八。。因此,两个二进制数的乘法降低为计算部分积1^-1。(其是0或第一数?、将部分积左移并随后将部分积加在一起(当然,是二进制加X
[0056]二进制中的乘法比在十进制系统中简单得多,因为不存在要记住的乘法表,只有移位和加操作。该技术具有小型0^可通过使用0^运算逻辑单元的移位和加的特征、而非使用专用电路来实施乘法的优点。然而该技术是缓慢的,因为该技术要求数个中间加法操作,其每个均花费时间。较旧的乘法器架构采用移位器和累加器以对每个部分积求和,通常每循环一个部分积,这针对裸片面积权衡速度。可设计较快的乘法器以进行较少的加法。现代乘法器架构使用8311811 ~ 100167算法、华莱士树、或达达(0^1(1(121)乘法器以在单个循环中将部分积加在一起。有时通过对两个被乘数中的一个进行经修改的布斯(800访)编码来改进华莱士树实现方案的性能,该布斯编码降低必须被求和的部分积的数目。
[0057]如上文参考图3-6所描述的,系统(例如运算子系统230)可将权衡点702以下的位指派为低阶位706,并将权衡点702以上的位指派为高阶位704。系统可使用门控电路708来对将另外处理低阶位706的逻辑(例如触发器)进行时钟选通。同时,系统使能处理高阶位704的逻辑。因此,进行时钟选通针对非遵从12现的操作使能功率降低的模式。图2的运算子系统230的功率降低的模式在下文参考图8进行进一步的描述。
`[0058]作为通过使用部分精度(例如不遵从巧现)进行处理的示例,在例如需要仅32位的精度的情况下系统可写入像素值。假定系统正进行^8+(:操作并将结果作为32位颜色(或深度)值写在帧缓冲区中。假定用于八、8和中的每一个的有效数是24位。假定32位颜色或深度值被视为是八$8+(:计算的整数部分。因此,系统可忽视二进制小数点右边的有效位。在一个实现方案中,系统可断开(职丨6 0?;012位组块(011111110中的乘或加法的部分,而其他配置是可能的。
[0059]作为4*8相乘的示例,由下面的公式定义操作:
[0060]4=1.1*210等式 4
[0061]8=1.01*2 — 2等式 5
[0062]4*8=1.111*212等式 6
[0063]遵从1222 (例如完全精度)的计算将产生完全48位有效数。相反,本系统配置为选择性地或模态地使用部分精度,如下文参考图8所进一步描述的。检查指数,系统可确定结果的少于24位是重要的。有效数的最右24位在权衡点右边。系统可断开乘法器阵列700的低阶位(例如较低的24位)的触发器并仅让高阶位(例如较高的24位)的触发器进行乘操作。例如,在加操作中仅涉及部分积的高阶位704。
[0064]随后,系统可将操作数加到积4*8。下文的等式是操作数的示例:
[0065]0=1.101010101*2^10等式 7[0066]当系统将C加到A*B时,显而易见,需要少于12位。C的较低的12位在二进制小数点的右边。因此,系统可断开加操作的右边12位。
[0067]图8是根据本发明的一个实施例的、图2的运算子系统230的示意图。运算子系统230配置为针对浮点数实行混合乘加(FMA)指令。如上文所述,FMA指令可由A*B+C来表示,其中A、B和C是浮点数。运算子系统230包括但不限于操作数设备810、模式选择器设备815、检查器设备820和FMA设备832。
[0068]操作数设备810配置为接收操作数A、操作数B和操作数C。每个操作数(A、B、或C)是浮点数。操作数A包括但不限于指数Ae和有效数As。操作数B包括指数和有效数Bso操作数C包括指数(;和有效数Cs。操作数设备810通过将指数(Ae、Be、(;)发送到检查器设备820并将有效数(As、Bs, Cs)发送到FM设备832来过滤操作数。
[0069]检查器设备820包括逻辑设备,其配置为检查操作数(A、B、C)的指数(Ae、Be、Ce)和对位en加以使能。检查器设备820策略性地置于运算子系统230中,使得检查器设备820不对运算子系统230施加大量时序压力。因此,运算子系统230不必要必须采用功率较高的部件来配置,该功率较高的部件将是较快的并因此丧失运算子系统230可提供的功率节省。进一步地,在一个实现方案中,检查器设备820不独立选通每个单个触发器。针对确定何时选通每个触发器还有触发器的实际选通这二者,存在与逻辑和电路相关联的非零成本。因此,检查器设备820配置为将一个或多个选通信号发送到FMA设备832以在FMA设备832处使能触发器的选通的较宽泛的协作。
[0070]在一个实现方案中,设计者(例如程序员和/或代码作者)指定针对FMA设备832进行选通的粒度程度,并将粒度程度输入到具有运算子系统230的计算机中。粒度程度可基于例如对特定FM操作所要求的精度的确定。检查器设备820配置为接收设计者指定的粒度程度。检查器设备820配置为使用粒度程度和逻辑分析用于确定选通信号以发送到FM设备832。
[0071]在第一逻辑检查中,检查器设备820确定运算子系统230是否需要操作在遵从IEEE模式中用于操作数的处理。因此,模式选择器设备815配置为基于使能位(UK、CE, Pe)设置操作的适当模式(例如遵从IEEE或不遵从IEEE)。模式选择器815基于模式选择器815可能接收的模式请求来为操作确定模式。模式选择器设备815可接收用户请求UK、编译器请求Ck、或应用请求Ρκ,以及其他类型的请求。用户请求Uk可与从用户输入设备所接收的手动超控(override)相关联。例如,移动设备(例如蜂窝电话、智能电话、或平板电脑)的用户出于其他考虑(例如图形渲染的保真度)可能期望功率节省。编译器请求Ck可针对在编译时间处所已知的操作来配置检查器设备820,其针对浮点数可以或可以不要求完全的遵从IEEE的精度。应用请求Pk可针对特定应用量身定制。例如,应用的作者可将应用指派为针对浮点数要求或不要求完全的遵从IEEE的精度。例如,特定应用可要求小于高保真度的图形渲染。因此,在该情况下,模式选择器设备815可确定操作在非遵从IEEE的模式中是可接受的。模式选择器815随后将由使能位en所表示的模式发送到检查器设备820。
[0072]在第二逻辑检查中,检查器设备820检查输入A、B和C的指数(Ae、Be、Ce)。例如,检查器设备820可将指数(Ae、Be)求和用于积A*B的操作数。检查器设备820可随后将该和与加数C的指数Ce相比较。如上文参考图4所解释的,如果两个指数是可比较的(例如K加Be的和与Ce相比较),那么系统可从A*B+C的最终结果的全体生成中移除A*B积和/或0加数的低阶位的某部分。检查器设备820配置为相应地设置选通信号,以便设备832可实施适当选通。如上文参考图5所解释的,如果加数的指数比积的指数大得多和/或极大于(^)积的指数,那么系统可从八$8+(:的最终结果的全体生成中移除八#8积。检查器设备820配置为相应地设置选通信号。如上文参考图6所解释的,如果加数的指数比积的指数小得多和/或极小于的最终结果的全体生成中移除加数积。
[0073]因此,基于使能位6。和指数(^、^、匕),检查器设备820配置为生成一个或多个控制选通信号。检查器设备820将选通信号发送到设备832。此外,设备832配置为接收来自检查器设备820的选通信号,以及接收有效数…為乂)。设备832使用选通信号以断电(例如断开)一个或多个乘法器或加法器阵列中的所指派的电路,如上文参考图4-7所描述的。離设备832可生成完全精度的运算操作(例如遵从1现幻或部分精度的运算操作(例如不遵从巧现)。部分精度的运算操作一般是耗电较小的。因此,检查器设备820配置设备832用于更节能的操作。设备832因此配置为采用乘法器和加法器阵列实施实际的节能操作。如上所述,所接收的输入(例如选通信号和有效数)基于以下各项的组合:软件考量、编译时间、代码写入时间、代码执行时间和用户时间以及实际实时操作数,以及其他因素。
[0074]如图8中所示,设备832包括乘法器阵列800,相似于上文参考图7所描述的乘法器阵列700。在一个实现方案中,图8中的乘法器阵列800是典型的根据常见接受标准所配置的乘法器阵列。離设备832配置为使用乘法器阵列800的较低部分以生成4*8积的低阶位和指向乘法器的较高部分的实行信号1-。
[0075]当来自检查器设备820的选通信号配置设备832以操作在功率节省模式(即非遵从1222的模式)中时,设备832可关闭乘法器阵列800的被标明为门控电路808的较低部分。例如,设备832可使用时钟门、功率轨或用于关闭电路的任何其他合适的机制来关闭较低部分,以便降低由離设备832所消耗的总功率。可以以类似于使用完全的乘法器阵列800的方式来进行操作。然而,在功率节省模式中,实行信号被指派为零或指示较低位未正被使用的任`何其他值。该指派最后可导致近似于一个最小精度单位⑶⑶)的不正确的值,其在操作的所选择的功率节省模式中是可接受的。
[0076]设备832进一步配置为在涉及操作数0到积4*8的加法的操作中断开较多电路,如上文参考图4-6所描述的。離设备832可在功率节省模式中将操作数加到积八祁以生成仏8+(:的结果。随后,?嫩设备832配置为输出仏8+(:的结果。
[0077]因此,假定在功率降低的情况中对逻辑电路的一部分加以选通,系统配置为特别注意以确保结果八$8+(:不依赖恰好在时钟选通之前所接收的最近操作数输入。如果情况不是如此,那么结果八$8+(:将不只是取决于目前的输入。随后,逻辑电路的使用将难以检验和调试,并且对于基于状态的系统将没有明显的益处。
[0078]系统的一部分取决于能够标识与^8+(:计算的特定部分(例如计算)相关联的浮点操作并对图8的離设备832的触发器应用时钟选通信号。在所有逻辑被手动地指定、并因此被手动地管线化的情况下,这类选通可以由设计者指定的时间完成。然而,考虑到这些设计的复杂性,在一个实现方案中,可通过使用市场上可买到的用于生成门级网表的合成包来配置系统。系统可随后实行后处理步骤以提取这些适合用于选通的触发器并添加用于无障碍选通所必要的锁存器。
[0079]有利地,系统使能在精度(例如舍入)和功率节省之间做出的数个不同的中间权衡点。权衡点还基于为了节省能量而低阶位可被忽略的程度,否则该能量将被支出以针对浮点数的给定场景完全地计算低阶位。在一个实现方案中,权衡点基于混合乘加⑶嫩)指令的操作数的指数中的相对差。权衡点的示例在上文参考图4-6进行描述。
[0080]虽然本技术是可针对单精度运算和双精度运算来工作的,但系统特别适合于单精度。不常存在使用双精度宽度的操作数还不期望精准舍入的场景。可能的例外是使用迭代算法的情况,诸如其中中间值不需要被舍入的用于计算倒数或平方根的情况。
[0081]方法概述
[0082]图9是根据本发明的一个实施例的、用于使能在浮点操作中降低功率的方法步骤的流程图。虽然结合图1-8的系统描述了方法步骤,但本领域技术人员将理解的是,配置为以任何次序实现方法步骤的任何系统落在本发明的范围内。在一个实施例中,可由图2和8的运算子系统230实行方法步骤。运算子系统230包括检查器设备820和设备832,以及其他设备。由于系统操作的细节被参考其他示图描述,所以在此以概括方式呈现图9的方法900。
[0083]如所示,方法900开始于动作910,在该处运算子系统230 (例如检查器设备820)接收指令的浮点数和/或接收用于指令的操作模式。例如,浮点数可包括混合乘加⑶嫩)操作的操作数八、操作数8和操作数 可以以数学术语将?嫩操作表示为八祁+1:。如上文参考图8所述,检查器设备820可从模式选择器设备接收操作模式(例如,使能位),该模式选择器设备标识指令的处理是否是遵从1现2的(例如全精度
[0084]在决策操作915处,如果运算子系统230 (例如检查器设备820)确定指令针对浮点数要求遵从全精度的标准,那么方法900移动到动作920,在该处运算子系统230 (例如離设备832)实施遵从标准的用于指令的操作。
[0085]然而,如果在决策操作915中运算子系统230确定指令不要求遵从标准,那么方法900移动到动作925,在该处运算子系统230生成选通信号用于集成电路的一部分。例如,如上文参考图8所描述的,检查器设备820可通过检查操作数八、8和的指数来生成选通信号。检查器设备820可确定要实施混合乘加指令而不使用操作数的低阶位和/或不使用八#8的积的低阶位。检查器设备可随后生成适当的选通信号用于集成电路。
[0086]在动作930中,运算子系统230 (例如检查器设备820)将选通信号发送到集成电路的该部分。例如,检查器设备820将选通信号发送到集成电路的要被断开的触发器。
[0087]在动作935中,运算子系统230 (例如设备832)通过使用选通信号来断开集成电路的该部分。例如,设备832断开(例如断电)集成电路的触发器,否则触发器将在低阶位上实施乘和/或加操作。在动作940中,运算子系统230实施指令的操作而不考虑遵从标准。例如,?嫩设备通过使用本技术的部分精度,離设备832在集成电路中的触发器当中经历较少切换并因此以降低的功率进行操作。
[0088]在决策操作945中,如果运算子系统230确定针对另一指令要实施更多操作,那么方法900随后再次移动到动作910,在该处运算子系统230接收其他浮点数和/或接收操作的另一模式。然而,如果运算子系统230确定针对另一指令不实施操作,那么方法900结束。
[0089]该方法900可包括该方法概述中未讨论的其他动作和/或细节。其他动作和/或细节参考其他示图加以讨论并可以是方法900的一部分,这取决于实现方案。
[0090]上文已参考具体实现方案描述本发明。然而,本领域技术人员将理解的是,可对其进行各种修改和改变而不脱离本发明如所附权利要求中所阐述的宽泛精神和范围。因此,前述描述和示图被视为是示例性的而非限制性的意义。
【权利要求】
1.一种用于使能在浮点操作中功率降低的计算机实现的方法,所述方法包括: 接收浮点数,包括混合乘加指令的操作数A、操作数B和操作数C,其中所述混合乘加指令表示为所述操作数A乘以所述操作数B加上所述操作数C ; 确定所述混合乘加指令针对浮点数不要求遵从精度标准; 生成选通信号用于集成电路,所述集成电路配置为通过标识所述操作数C的低阶位并且标识所述操作数A乘以所述操作数B的积的低阶位来实施所述混合乘加指令的操作;以及 将所述选通信号发送到所述集成电路以关闭包括在所述集成电路中的多个逻辑门。
2.一种用于使能在浮点操作中功率降低的运算子系统,所述运算子系统包括检查器设备,所述检查器设备配置为实施动作: 接收浮点数,包括混合乘加指令的操作数A、操作数B和操作数C,其中所述混合乘加指令表示为所述操作数A乘以所述操作数B加上所述操作数C ; 确定所述混合乘加指令针对浮点数不要求遵从精度标准; 生成选通信号用于集成电路,所述集成电路配置为通过标识所述操作数C的低阶位并且标识所述操作数A乘以所述操作数B的积的低阶位来实施所述混合乘加指令的操作;以及 将所述选通信号发送到所述集成电路以关闭包括在所述集成电路中的多个逻辑门。
3.根据权利要求2所述的运算子系统,其中所述检查器设备进一步配置为通过检查操作数的指数生成所述选通信号,所述检查操作数的指数通过: 接收所述操作数A的指数、所述操作数B的指数和所述操作数C的指数; 计算所述操作数A的所述指数与所述操作数B的所述指数的和;以及将所述操作数C的所述指数与所述操作数A的所述指数与所述操作数B的所述指数的所述和相比较。
4.根据权利要求2所述的运算子系统,进一步包括混合乘加设备,其配置为实施动作: 经由所述选通信号关闭包括在所述集成电路中的所述多个逻辑门;以及 实施与所述指令相关联的一个或多个操作而不考虑遵从所述精度标准。
5.根据权利要求2所述的运算子系统,其中所述精度标准包括电气和电子工程师协会(IEEE) 754、IEEE754-1985、IEEE854-1987 和 IEEE754-2008 中的至少一个。
6.根据权利要求2所述的运算子系统,其中确定所述混合乘加指令不要求遵从所述精度标准包括接收用于所述混合乘加指令的操作模式,所述操作模式与以下各项中的至少一个相关联: 接收自用户输入设备的手动超控; 指示所述混合乘加指令不要求遵从所述精度标准的编译器通信;以及 指示所述应用不要求遵从所述精度标准的应用通信。
7.根据权利要求2所述的运算子系统,其中确定所述混合乘加指令不要求遵从所述精度标准与要求小于高保真度的图形渲染的特定应用相关联。
8.根据权利要求2所述的运算子系统,进一步包括混合乘加设备,所述混合乘加设备配置为通过使用基于一个或多个部分积的乘法器阵列将所述操作数A乘以所述操作数B,并且其中所述操作数设备进一步配置为标识所述部分积的低阶位和所述部分积的高阶位,并且其中所述混合乘加设备进一步配置为断开所述部分积的所述低阶位的触发器。
9.根据权利要求2所述的运算子系统,其中所述检查器设备进一步配置为通过由确定所述操作数(6:的指数极大于所述操作数八的指数和所述操作数8的指数的和来检查操作数的指数而生成所述选通信号,并且其中所述运算子系统进一步包括混合乘加设备,所述混合乘加设备配置为断开所述集成电路的配置为将所述操作数八乘以所述操作数8的触发器。
10.根据权利要求2所述的运算子系统,其中所述检查器设备进一步配置为通过检查操作数的指数生成所述选通信号,并且其中检查操作数的指数包括确定操作数的指数极小于操作数六的指数加上操作数8的指数的和,并且其中所述运算子系统进一步包括混合乘加设备,所述混合乘加设备配置为断开所述集成电路的配置为加上所述操作数的触发器。
【文档编号】G06F9/302GK103838549SQ201310596158
【公开日】2014年6月4日 申请日期:2013年11月21日 优先权日:2012年11月21日
【发明者】戴维·孔拉尔·坦伦包姆, 科林·斯普林克尔, 斯图尔特·F·奥伯曼, 萧耀明, 斯里尼瓦桑·耶尔, 恩池·颜·孔 申请人:辉达公司