可从过多的近似计算误差中恢复的处理器的制作方法

文档序号:16839570发布日期:2019-02-12 21:23阅读:231来源:国知局
可从过多的近似计算误差中恢复的处理器的制作方法

本申请主张申请号为14/522,520、2014年10月23日提交的美国正式申请的优先权,此美国正式申请主张申请序号为61/937,741、2014年2月10日提交的美国临时申请的优先权,此美国临时申请的名称为可执行近似计算指令的处理器(PROCESSOR THAT PERFORMS APPROXIMATE COMPUTING INSTRUCTIONS);可从过多的近似计算误差中恢复的处理器(PROCESSOR THAT RECOVERS FROM EXCESSIVE APPROXIMATE COMPUTING ERROR);具有近似计算功能单元的处理器(PROCESSOR WITH APPROXIMATE COMPUTING FUNCTIONAL UNIT),其全部内容在此通过引用并入本申请。



背景技术:

在近似计算(approximate computing)领域中,已经存在大量的理论基础。近似计算尝试以一种减少功率消耗的方式以执行计算,而代价为可能会降低计算的精确度。虽然近似计算已成为学术界最受欢迎的题目,但几乎没有应用于商业上可使用的处理器中。



技术实现要素:

本发明提供一种处理器。该处理器包括一储存器,该储存器被配置以接收该处理器以一近似方法执行一组计算前的一状态的一快照。该处理器还包括一指示器,该指示器指示以该近似方法执行的该组计算所累积的一误差量。当该处理器侦测该误差量累积超过一误差界限,该处理器被配置以从该储存器恢复该处理器的状态至该快照。

在另一实施例中,本发明提供一种操作于一处理器的方法。该方法包括执行该处理器的一状态的一快照,该状态为该处理器以一近似方法执行一组计算前的状态,判别一误差量的一指示器,该误差量是由该近似方法执行的该组计算所累积,以及当该处理器侦测到该误差量已累积超过一误差界限时,恢复该处理器的状态至该快照。

在另一实施例中,本发明提供一种计算机程序产品,于计算机装置中嵌入可用的至少一非瞬时计算机可读储存媒体,该计算机程序产品包括在该计算机可读储存媒体中嵌入计算机可用程序代码,用以指定一微处理器用。该计算机可用程序代码包括第一程序代码指定一储存器,被配置以接收该处理器以一近似方法执行一组计算前的一状态的一快照。该计算机可用程序代码还包括第二程序代码指定一指示器,当以该近似方法执行该组计算,该指示器指示以该近似方法执行的该组计算所累积的一误差量。当该处理器侦测该误差量累积超过一误差界限,该处理器被配置以从该储存器恢复该处理器的状态至该快照。

附图说明

图1是说明处理器的一实施例的方块图。

图2是说明图1的近似功能单元的三种实施例的方块图。

图3是说明近似指令的方块图。

图4是说明依据本发明一实施例的图1的处理器的操作的流程图。

图5是说明在一计算机系统中图1的处理器的操作的流程图。

图6是说明三种不同的计算系统的方块图。

图7是说明图6的计算系统的操作的流程图。

图8是说明运行于一近似计算感知处理器的软件的开发过程的流程图。

图9是说明运行于一近似计算感知处理器的软件的另一开发过程的流程图。

图10是说明图1的处理器用以运行一个执行近似计算的程序的操作的流程图。

图11是更为详细地说明依据本发明一实施例的图10的方块1014的操作的流程图。

图12是更为详细地说明依据本发明另一实施例的图10的方块1014的操作的流程图。

具体实施方式

本发明将描述执行近似计算的一处理器的各种实施例。近似计算的使用时机是一计算以低于一完整精确度(full accuracy)的一精确度等级来执行时,并且可透过该处理器的指令集架构(instruction set architecture)来指示。

图1表示本发明一实施例的处理器100的方块图。处理器100包括一可程序化数据处理器,用以执行已储存的指令,例如一中央处理单元(CPU)或一图形处理单元(GPU)。处理器100包括一指令快取102;一指令转译器104,耦接至指令快取102;一或多个近似功能单元106,耦接指令转译器104并接收源自指令转译器104的微指令(microinstruction);架构缓存器108,耦接近似功能单元106以提供指令操作数(operand)166至近似功能单元106;一近似控制缓存器132,耦接至近似功能单元106;一数据高速缓存138,耦接至近似功能单元106;以及一快照(snapshot)储存器134,耦接至近似功能单元106。处理器100还可包括其他单元,举例而言,一重新命名单元、指令排程器和/或保留站(reservation station)可被使用于指令转译器104以及近似功能单元106之间,以及一重排序缓冲器(reorder buffer)可被使用以提供乱序指令的执行。

指令快取102储存架构指令174,架构指令174是从内存读取且由处理器100执行。架构指令174可包括近似计算指令,例如图3的近似计算指令399。近似计算指令399控制处理器100的近似计算方针(policy),也即,近似功能单元106是以一完整精确度或小于一完整精确度来执行计算。近似计算指令399还控制一误差量的清除动作,该误差量是有关于本实施例的处理器100的每个通用缓存器。在较佳实施例中,处理器100包括其他非近似的功能单元。在一实施例中,架构指令174实质上符合一x86指令集架构(ISA),该x86指令集架构是被修改以包括本发明所述的近似计算指令399。在其他实施例中,处理器100还可使用x86指令集架构以外的指令集架构。

指令转译器104透过指令快取102接收架构指令174。指令转译器104包括一指令解码器,用以解码架构指令174并且转译成微指令。上述微指令是透过非架构指令集的一指令集以定义,也即一微架构的(microarchitectural)指令集。上述微指令用以实现架构指令174。

在一较佳实施例中,指令转译器104还包括微码(microcode)136,微码136包括微码指令,上述微码指令偏好储存于处理器100的一只读存储器。在一实施例中,上述微码指令是微指令(microinstruction)。在另一实施例中,上述微码指令透过一微转译器以转译成微指令。微码136实现处理器100的指令集架构的架构指令174的一子集(subset),该子集并非透过指令转译器104的一可程序化逻辑数组以直接转译成微指令。此外,微码136用以处理微架构的异常(exception)(如异常172),例如在一实施例中,当累积误差界限(cumulative error bound)超出一误差界限时所产生的异常,其中上述累积误差界限是由近似计算所产生。

架构缓存器108提供指令(例如微指令)操作数166至近似功能单元106且接收似功能单元106所产生的结果,较佳的实施方式是透过一重排序缓存器以执行(图中未示出)。有关于每个架构缓存器108的误差储存器109,可保持储存在架构缓存器108的结果内的误差量的示值(indication)。每当一近似功能单元106产生一结果164(该结果164是被写入一架构缓存器108),近似功能单元106还产生一误差168的一示值,而误差168是有关于结果164,且该示值是由于近似计算而产生累积。误差168是被写入与架构缓存器108有关的误差储存器109。此外,每当一架构缓存器108提供一操作数至一近似功能单元106时,相关的误差储存器109提供与该操作数有关的误差162至近似功能单元106。此一动作致使近似功能单元106同时累积该计算的指令操作数166的误差以及近似功能单元106执行该近似计算时所产生的误差。

快照储存器134可保存处理器100的状态(state)的一快照。在处理器100开始执行近似计算以前,处理器100把自身的状态写入快照储存器134,以便若一近似计算的结果的累积误差超过一误差界限时,处理器100可透过快照储存器134恢复自身的状态,并且以非近似计算的方式重新执行计算,以下将透过一实施例详细描述此动作。在一实施例中,快照储存器134包括处理器100的一专有内存。在一较佳实施例中,快照储存器134包括执行近似计算的一指令集的第一指令的一地址。在一实施例中(例如图10),微码136致使该指令集以非近似方法重新执行,微码136致使该第一指令的该地址的一分支(branch)在快照储存器134中执行。

数据高速缓存138储存系统内存位置的数据。在一实施例中,数据高速缓存138为高速缓存的一阶层,上述高速缓存包括一第一层快取以及一第二层快取,且该第二层快取支持指令快取102以及该第一层快取。在一实施例中,若一程序参与恢复动作,采用该近似计算的该程序必须确保该程序的数据对数据高速缓存138不会造成溢位(overflow),其中该恢复动作是在处理器100发生超过该误差界限的状况下执行。

在一实施例中,近似控制缓存器132保存指定处理器100的近似方针176的信息,且提供至近似功能单元106。在一较佳实施例中,近似控制缓存器132包含一近似旗标(flag)、一近似量以及一误差界限(error bound)(或误差临界值)。该近似旗标表示由近似功能单元106所执行的计算应为完整精确度计算或近似计算,也即是完整精确度模式或近似计算模式(或近似模式)。该近似量指示近似功能单元106低于完整精确度的一精确程度,该精确程度可使用于执行近似计算。该误差界限指定误差168的一累积量,该累积量可为一近似计算的结果164所容许,而处理器100发送该误差界限已被超越的讯号时,该计算将偏好以非近似方法重新执行。在一实施例中,近似功能单元106依据储存在近似控制缓存器132的该近似方针以执行计算。在另一实施例中,每个指令指定该近似方针至近似功能单元106,例如透过一前缀。在一实施例中,近似控制缓存器132可被处理器100的该指令集架构的一指令所写入。

近似功能单元106可选择性地执行正常计算(例如以该指令集架构指定的完整精确度以执行)或近似计算(例如以该指令集架构指定的低于该完整精确度的精确度以执行)。每个近似功能单元106是一硬件或硬件与处理器100的微码的一组合,且执行有关于一指令的处理的一功能。更加具体而言,该硬件或硬件与微码的该组合执行一计算以产生一结果。功能单元的实施例可包括但不限于执行单元,例如一整数(integer)单元;一单指令多数据(SIMD)单元;一多媒体单元;以及一浮点单元,例如一浮点乘法器、浮点除法器以及浮点加法器。近近似功能单元106在执行近似计算时比执行正常计算时消耗较少的功率。近似功能单元106的实施例将会透过图2而更加详细地描述。

图2是图1的近似功能单元106的三种实施例的方块图。分别为一近似浮点乘法器106A、一近似超越函数(transcendental function)计算单元106B以及一近似除法器106C。

近似浮点乘法器106A接收架构缓存器108的指令操作数166且产生图1的结果164。近似浮点乘法器106A包括最高有效位乘法闸202,用以执行指令操作数166的最高有效位的乘法;以及最低有效位乘法闸204,用以执行指令操作数166的最低有效位的乘法。近似浮点乘法器106A还包括电源控制206,用以根据近似方针176以控制选择性电源供应至最低有效位乘法闸204。例如,若所使用的近似模式是使用完整精确度,电源控制206致使电源供应至最低有效位乘法闸204的晶体管;若该近似模式是使用低于该完整精确度的精确度,电源控制206致使电源不被提供至最低有效位乘法闸204的晶体管。在一实施例中,所述最低有效位乘法闸204被编组,且电源供应206根据近似方针176的该近似量以关闭相关的部分最低有效位乘法闸。在一较佳实施例中,近似浮点乘法器106A被配置以提供最低有效位乘法闸204的中间结果(intermediate results)至最高有效位乘法闸202(例如进位),且当最低有效位乘法闸204于近似计算模式中关闭时,默认值(例如零)将以该中间结果的形式提供至最高有效位乘法闸202。

一般而言,近似浮点乘法器106A可执行两个N位的指令操作数166的乘法,其中N位是该指令集架构指定的完整精确度。而近似浮点乘法器106A还可执行两个低于N位的指令操作数166的乘法以产生精确度低于完整精确度的结果164。在一较佳实施例中,当执行乘法时,近似浮点乘法器106A排除指令操作数166的M位的最低有效位,其中M的数值小于N。举例而言,当指令操作数166的尾数(mantissas)为53位时,近似浮点乘法器106A的最低有效位乘法闸204的复数晶体管会被关闭,其中所述晶体管通常会使用于指令操作数166的53位的较低M位的乘法中。所述晶体管的关闭使得指令操作数166的较低M位并未包含于该近似乘法中,其中该M位数是由该近似方针所指定,例如近似控制缓存器132中。在此操作下,近似浮点乘法器106A的近似模式潜在地比完整精确度模式消耗较少的功率,因为近似模式可关闭通常使用于执行被排除的位的乘法的晶体管。在一较佳实施例中,被排除的M位的数量会被量化(quantized),借此使得只有一受限制的数量的M的值可透过该近似方针而被指定,进而减少电源供应206的复杂度。

近似超越函数计算单元106B接收架构缓存器108的指令操作数166且产生图1的结果164。近似超越函数计算单元106B包括超越计算逻辑214,用以对指令操作数166执行超越函数,以基于一多项式产生结果164。该多项式是透过多任务器216所选择,多任务器216可基于近似方针176的一选择控制输入选择一高次多项式212A或一低次多项式212B,例如该近似模式。也就是说,当该近似模式是使用完整精确度时,多任务器216选择高次多项式212A;当该近似模式是使用低于该完整精确度的精确度时,多任务器216选择低次多项式212B。一般而言,近似超越函数计算单元106B使用一N次多项式以执行完整精确度的超越函数,且使用一M次多项式(其中M的数值小于N)以执行低于完整精确度的超越函数,其中M是由该近似方针所指定。通过在近似模式采用一较低次多项式以执行该超越函数计算,近似超越函数计算单元106B可相较于在完整精确度执行下消耗较少功率且更佳地执行。上述优势是因为采用一较低次多项式,可相较于一高次多项式而要求较少乘法器与加法器。

近似除法器106C接收架构缓存器108的指令操作数166且产生图1的结果164。近似除法器106C包括除法逻辑222以及迭代(iteration)控制逻辑224。除法逻辑222对指令操作数166执行一除法计算以产生结果164以及产生在第一次迭代期间的结果164的一精确度指示226。结果164以除法逻辑222的输入的形式回授至除法逻辑222,且精确度指示226被提供至迭代控制逻辑224。在后续的迭代动作中,除法逻辑222对指令操作数166以及前一次迭代的结果164执行一除法计算以产生另一个结果164以及目前迭代动作的结果164的迭代精确度指示226,而结果164以除法逻辑222的输入的形式回授至除法逻辑222,且精确度指示226被提供至迭代控制逻辑224。迭代控制逻辑224监测精确度指示226,并且当精确度指示226达到近似方针176的一可接受程度时停止上述迭代动作。当该近似方针指示近似模式时,通过执行较少次迭代以换取低于完整精确度的精确度,近似除法器106C可借此达成降低功率消耗的目的。

在一实施例中,每个近似功能单元106包括一查找表,以输出关于结果164的误差168的量值,其中结果164是透过近似功能单元106基于误差162以及该近似方针的误差量而产生。由该查找表输出的误差168的量值是一近似值,该近似值是指定有关于结果164的一最大误差量值。

在一实施例中近似功能单元106包括一指令解码器,用以解码指令转译器104在转译近似计算指令399时所产生的微指令,借此判定所有或一部分除了近似控制缓存器132所提供之外的近似方针。在另一实施例中,该指令解码器用以解码近似计算指令399本身,例如,在一实施例中指令转译器104单纯地解码架构指令174以安排至合适的近似功能单元106的路线,且近似功能单元106解码架构指令174以判别该近似方针。

图3是依据本发明一实施例的近似计算指令399的方块图。更加具体而言,该近似计算指令399包括具备一近似前缀的计算指令300;一近似计算指令310;一具备一开始近似前缀的计算指令320;一开始近似指令330;一具备一停止近似前缀的计算指令340;一停止近似指令350;一具备一清除误差前缀的计算指令360;一清除误差指令370;以及一负载缓存器与清除误差指令380。

具备一近似前缀的计算指令300包括一操作码(opcode)与其他栏(field)304,例如一般处理器100的指令集的内容。操作码与其他栏304可指定任何不同的计算,该等计算可由近似功能单元106来执行,例如加法、减法、乘法、除法、融合的加法与乘法(fused multiply add)、平方根、倒数、倒数平方根以及超越函数,举例而言,透过可执行该计算的近似功能单元106以产生一低于完整精确度的一结果是可能执行的,也即依据该完整精确度模式。具备一近似前缀的计算指令300还包括一近似前缀302。在一实施例中,近似前缀302包括一预定值,该预定值存在于指令的字节流且位于操作码与其他栏304之前,用以指示处理器100以一近似方法执行所指定的计算。在一实施例中,该预定值是尚未被使用如指令集架构的一前缀值的一个值,例如x86指令集架构。在一实施例中,近似前缀302的一部分用以指定该近似方针或至少该近似方针的一部分(例如该近似量和/或误差界限)以被采用于操作码与其他栏304所指定的计算。在另一实施例中,近似前缀302单纯表示操作码与其他栏304所指定的该计算须以近似方法执行,而该近似方针是从处理器100于先前通信的整体近似方针中所采取,且可被储存,例如在一缓存器中(例如近似控制缓存器132)。其他实施例预期具备一近似前缀的计算指令300的该近似方针是衍生自近似前缀302与该整体近似方针。

在另一实施例中,近似计算指令310包括一近似计算操作码与其他栏312。近似计算操作码与其他栏312的近似计算操作码的值是与其他处理器100的指令集的操作码的值不同。也即,该近似计算操作码的值与其他一般(例如不具备如近似前缀302的前缀)用以指示处理器100以完整精确度执行一计算的操作码的值不同。该指令集包括复数近似计算指令310,且各自执行一种类型的计算,例如,一近似计算指令310具备本身不同的操作码以执行加法;以及一近似计算指令310具备本身不同的操作码以执行减法等。

具备一开始近似前缀的计算指令320包括一操作码与其他栏324,例如一般处理器100的指令集的内容。操作码与其他栏324的操作码可指定任何不同的计算,或者该操作码可为一非计算的指令。具备一开始近似前缀的计算指令320还包括一开始近似前缀322。在一实施例中,开始近似前缀322包括一预定值,该预定值存在于指令的字节流且位于操作码与其他栏324之前,用以指示处理器100以一近似方法执行后续的计算(包括具备一开始近似前缀的计算指令320所指定的计算),直到被指示以停止由一近似方法执行计算(例如透过下文的具备一停止近似前缀的计算指令340以及停止近似指令350)。在一实施例中,该预定值是尚未被使用如指令集架构的一前缀值的一个值,例如x86指令集架构,且不同于其他本文所述的前缀(例如近似前缀302、停止近似前缀342以及清除误差前缀362)。开始近似前缀322的各实施例是相似于近似前缀302,其相似处在于开始近似前缀322的一部分可指定该近似方针,或单纯表示后续计算应透过该整体近似方针以近似方法执行,或透过上述特征的组合以执行。

在另一实施例中,开始近似指令330包括一开始近似操作码332。开始近似指令330指示处理器100以一近似方法执行后续计算,直到被指示停止以一近似方法执行计算。开始近似操作码332的各种实施例是相似于近似前缀302,其相似处在于该近似方针的指定。近似操作码332的值是不同于其他处理器100的指令集的操作码的值。

具备一停止近似前缀的计算指令340具备一操作码与其他栏344,例如一般处理器100的指令集的内容。操作码与其他栏344的操作码可指定任何不同的计算,或者该操作码可为一非计算的指令。具备一停止近似前缀的计算指令340还包括一停止近似前缀342。在一实施例中,停止近似前缀342包括一预定值,该预定值存在于指令的字节流且位于操作码与其他栏344之前,用以指示处理器100停止(直到被指示以一近似方法执行计算,如具备一近似前缀的计算指令300、近似计算指令310、具备一开始近似前缀的计算指令320或开始近似指令330)以一近似方法执行计算(包括具备一停止近似前缀的计算指令340所指定的计算)。在一实施例中,该预定值是尚未被使用如指令集架构的一前缀值的一个值,例如x86指令集架构,且不同于其他本文所述的前缀。

在另一实施例中,停止近似指令350包括一停止近似操作码352。停止近似指令350指示处理器100停止以一近似方法执行计算(直到被指示以一近似方法执行计算)。停止近似操作码352的值是不同于其他处理器100的指令集的操作码的值。在一实施例中,处理器100的一异常的产生还会指示处理器100停止以一近似方法执行计算,也即致使该近似模式被设定成完整精确度。

具备一清除误差前缀的计算指令360具备一操作码与其他栏364,例如一般处理器100的指令集的内容。操作码与其他栏364的操作码可指定任何不同的计算。具备一清除误差前缀的计算指令360还包括一缓存器栏366,用以指定处理器100写入该计算的该结果的目的缓存器。具备一清除误差前缀的计算指令360还包括一清除误差前缀362。在一实施例中,清除误差前缀362包括一预定值,该预定值存在于指令的字节流且位于操作码与其他栏364之前,用以指示处理器100清除有关于架构缓存器108的误差储存器109,其中架构缓存器108是由缓存器栏366所指定。在一实施例中,该预定值是尚未被使用如指令集架构的一前缀值的一个值,例如x86指令集架构,且不同于其他本文所述的前缀。

在另一实施例中,清除误差指令370包括一清除误差操作码372以及一缓存器栏376。清除误差指令370指示处理器100清除有关于架构缓存器108的误差储存器109,其中架构缓存器108是由缓存器栏376所指定。清除误差操作码372的值是不同于其他处理器100的指令集的操作码的值。

负载缓存器与清除误差指令380包括一负载缓存器操作码382、内存地址操作数栏384以及一缓存器栏386。负载缓存器操作码382指示处理器100将内存地址操作数栏384所指定的一内存地址的数据,载入缓存器栏386所指定的目的缓存器。负载缓存器操作码382还指示处理器100清除有关于架构缓存器108的误差储存器109,其中架构缓存器108是由缓存器栏386所指定。

在一实施例中,清除误差指令370为了所有架构缓存器108而清除误差储存器109,而非单一架构缓存器108。举例而言,缓存器栏376的值可为一默认值以指示进行清除所有架构缓存器108。一相似的实施例是有关于含有具备一清除误差前缀的计算指令360、负载缓存器以及负载缓存器与清除误差指令380的计算指令。

在一实施例中,指令转译器104维持一旗标,该旗标表示处理器100是在近似计算模式或完整精确度模式。举例而言,指令转译器104可设定该旗标以响应于开始近似指令330或具备一开始近似前缀的计算指令320,以及可清除该旗标以响应于停止近似指令350或具备一停止近似前缀的计算指令340。每个微指令包括一指示器(indicator),用以表示该微指令所指定的该计算应以完整精确度或一近似方法来执行。当指令转译器104转译指令操作数166为一或多个微指令时,指令转译器104将基于目前该旗标的值填入该指示器。另一方面,在一架构近似计算指令下,例如具备一近似前缀的计算指令300或近似计算指令310,指令转译器104填入根据近似前缀302或近似计算操作码与其他栏312的微指令的指示器。在又一实施例中,该微指令的该指示器包括一微指令操作码(不同于微架构指令集的内容),该微指令操作码指定一近似计算。

图4A与图4B是依据本发明一实施例中,图1的处理器100的操作流程图。流程开始于步骤402。

在步骤402中,处理器100解码指令操作数166,流程进入步骤404。

在步骤404中,处理器100判别指令操作数166是否为一开始近似指令,例如图3的具备一开始近似前缀的计算指令320或开始近似指令330。若是,流程进入步骤406;若不是,流程进入步骤414。

在步骤406中,处理器100依据该近似方针(例如由开始近似指令所指定的近似方针、近似控制缓存器132所指定的近似方针,或上述的组合)以执行后续计算,直到遇到一停止近似指令,例如图3的具备一停止近似前缀的计算指令340或停止近似指令350。流程结束于步骤406。

在步骤414中,处理器100判别指令操作数166是否为一停止近似指令,例如图3的具备一停止近似前缀的计算指令340或停止近似指令350。若是,流程进入步骤416;若不是,流程进入步骤424。

在步骤416中,处理器100停止以一近似方法执行计算,而是以完整精确度执行所述计算(直到遇到一开始近似指令如图3的具备一开始近似前缀的计算指令320或开始近似指令330,或近似计算指令如图3的具备一近似前缀的计算指令300或近似计算指令310),流程结束于步骤416。

在步骤424中,处理器100判别指令操作数166是否为一清除误差指令,例如图3的具备一清除误差前缀的计算指令360或清除误差指令370或负载缓存器与清除误差指令380。若是,流程进入步骤426;若不是,流程进入步骤434。

在步骤426中,处理器100清除有关于架构缓存器108的误差储存器109,其中架构缓存器108是由缓存器栏366或376或386所指定。流程停止于步骤426。

在步骤434中,处理器100判别指令操作数166是否为一计算指令。若是,流程进入步骤452;若不是,流程进入步骤446。

在步骤446中,处理器100执行其他指令操作数166,也即近似计算指令399以外的指令集架构的指令。流程结束于步骤446。

在步骤452中,相对应的近似功能单元106接收指令操作数166且进行解码。流程进入步骤454。

在步骤454中,近似功能单元106判别该近似方针是近似或完整精确度。若为近似,流程进入步骤456;若为完整精确度,流程进入步骤458。

在步骤456中,近似功能单元106以一近似方法执行该计算,如前文的图2所述。流程结束于步骤456。

在步骤458中,近似功能单元106以一非近似方法执行该计算,也即近似功能单元106是以完整精确度执行该计算。流程结束于步骤458。

图5是一计算机系统中,图1的处理器100的操作流程图。流程开始于步骤502。

在步骤502中,处理器100所执行的一程序(例如操作系统或其他程序)判别处理器100所使用的一近似方针,以使处理器100执行计算。在一些较佳实施例中,该近似方针指定可容许的误差界限,以及上述计算的近似量(也即每个近似功能单元106在每次近似计算应采用的近似量)。该程序基于目前系统配置以判别该近似方针(至少一部分)。举例而言,该程序可侦测该计算机系统是使用电池的电力或是一实际上无限的电力来源,如壁挂电源(wall power)的交流电。此外,该程序可侦测该计算机系统的硬件配置,例如显示尺寸以及喇叭质量。该程序可考虑上述因素,借此判别透过近似地而非完整精确地执行特定计算的可取性(desirability)和/或可接受性,例如有关音讯/视讯的计算。流程进入步骤504。

在步骤504中,该程序提供该近似方针至处理器100。在一实施例中,该程序将该近似方针写入至近似控制缓存器132。在一实施例中,该程序执行一x86WRMSR指令以提供处理器100新的近似方针。流程结束于步骤504。

在一些较佳实施例中,当系统配置改变时(例如系统被插入一墙上的插座(wall socket)或从该墙上的插座被拔除,或插入不同尺寸的一外部屏幕),该程序侦测该配置的改变且在步骤502变更该近似方针,以及在步骤504给予处理器100新的近似方针。

图6是本发明的计算系统的三种实施例的方块图。每个计算系统包括图1的可近似计算的处理器100、一显示器606(606A~606C)以及一缓冲器604,缓冲器604包含处理器100执行像素渲染(render pixels)计算并显示于显示器606的数据,且使用如图3的近似计算指令399。

第一个系统为一桌面计算机602A,包括一大型的显示器606A(例如24吋或更大尺寸),并且从一实际上无限的电力来源接收电力,例如墙上的插座。第二个系统为一笔记本电脑602B,包括一中型的显示器606B(例如15吋),并且从墙上的插座或一电池以接收电力,端视使用者的选择而定。第三个系统为一手持计算机602C(例如智能型手机或平板计算机),包括一相对小型(例如4.8吋)的屏幕606C,并且主要从一电池以接收电力来源。在上述实施例中,是假设上述各显示器具备大致相同的分辨率,而可容许/可接受的近似量主要是基于显示器的尺寸,虽然该近似量计算还可依据上述显示器的分辨率变化而改变。上述三种实施例在此统称为系统602,而系统602是用以代表包括可近似计算的处理器100的系统,以及提供各种用以比较的特征以说明本发明近似计算的各种应用的实施例。然而,可以预期其他实施例也可存在,且可近似计算的处理器100的应用并不受限于上述实施例。

桌面计算机602A倾向不能容忍近似而是要求高精确度,因为像素渲染的近似所造成的视觉变形(visual distortion)在大型显示器606A中可能会相当明显,且电源可能因为非必要的近似计算而提出省电需求。

笔记本电脑602B倾向要求一适量的精确度且容许一适量的近似,特别是在使用电池的电力运作时,因为适量的近似所造成的视觉变形可能是显而易见的(虽然少于在相似分辨率的大型显示器),但在基于改善电池寿命的权衡之下,上述操作为可接受的一种作法。另一方面,当笔记本电脑602B插入一壁挂电源时,较佳的近似方针可与桌面计算机602A相似。

手持计算机602C倾向要求最低精确度,因为近似所造成的视觉变形在小型显示器606C的正常显示中是非显而易见地,或相当不明显地,且手持计算机602C对于节省电池的电力的需求是相对较大的。

图7是图6的系统602的系统操作流程图。流程开始于步骤702。

在步骤702中,一程序侦测系统602的显示器606(即606A~606C)的类型,例如在系统602启动或重置时。另外,该程序可侦测显示器606的变化,例如在一外部显示器插入或拔出笔记本电脑602B时。此外,该程序可侦测电源的变化,例如插入墙上的插座或从墙上的插座拔出。流程进入步骤502。

在步骤502中,该程序基于系统配置以判别近似方针,如前述图5所记载的内容。流程进入步骤504。

在步骤504中,该程序提供该近似方针至处理器100,如前述图5所记载的内容。流程进入步骤708。

在步骤708中,处理器100基于所接收的该近似方针以执行计算,例如图4以及下文的图10至图12。流程结束于步骤708。

另外,处理器100所运行的软件(例如图形软件)包括不同代码的例程(routine)(包括近似计算指令399),上述例程是有关于不同的近似方针(例如与图6的每个不同系统配置有关的不同的近似方针),且该软件基于目前的系统配置以开拓(branch)至适合的例程。

图8是运行于一近似计算感知(computing-aware)的处理器100的软件的开发流程图。流程开始于步骤802。

在步骤802中,一程序设计器(programmer)透过一熟知程序语言开发一程序(例如一图形程序),例如C语言,且使用一近似指示(directive)以应用一近似感知(approximation-aware)编译器。该近似感知编译器知道处理器100的近似计算能力,更加具体而言,处理器100支持该等近似计算指令399。该近似指示可为一命令行(command-line)选项或其他与编译程序通信的方法,而编译程序所产生的目标代码(object code)应包括近似计算指令399以执行近似计算。在较佳的实施例中,该近似感知编译程序应用该近似指示,且仅编译计算的例程,而所述计算是由容许近似计算的程序语言所指定;其中,其他不容许近似计算的例程不透过该近似指示进行编译;而上述方法产生的目标档案是一起链接(link)至一可执行程序。近似容许例程(approximation-tolerant routine)倾向为相对特别例程。举例而言,像素渲染例程可包括浮点数据计算,浮点数据计算可为近似计算,用于该近似感知编译器产生近似计算指令399;其中,举例而言,循环控制变量(loop control variable)可为整数数据,且该近似感知编译器不会产生近似计算指令399以执行更新该循环控制变量的计算。流程进入步骤804。

在步骤804中,该近似感知编译器编译该程序且产生机械语言指令,该等机器语言指令包括近似计算指令399,近似计算指令399指示处理器100执行近似计算以为目标代码。在一实施例中,该近似感知编译器产生的该机械语言是相似于其他不使用该近似指示所产生的机械语言,但在一些上述指令中是在指令前端设置一近似相关前缀,例如图3的近似前缀302、开始近似前缀322、停止近似前缀342或清除误差前缀362。在一实施例中,该近似感知编译器产生近似计算指令310以代替正常计算指令,而该正常计算指令在没有该近似指示下产生。在一实施例中,该近似感知编译器产生正常指令序列,该正常指令序列透过开始/停止近似指令330/350和/或开始/停止近似前缀322/342以进行中断。在一实施例中,该近似感知编译程序产生多个代码例程,每个代码例程采用一不同近似方针(如前文所述)以及该近似感知编译器基于目前系统配置以产生呼叫适合的子程序(subroutine)的代码,而该程序可由本身进行判别或可从操作系统获得。流程结束于步骤804。

图9是运行于一近似计算感知的处理器100的软件的另一开发流程图。流程开始于步骤902。

在步骤902中,一程序设计器开发一程序,过程相似于上述步骤802且应用一近似感知编译器。然而,所用的程序语言以及该近似感知编译器支持近似指示和/或近似容许数据类型。举例而言,C语言的一语法(dialect)可支持上述指示和/或数据类型。该近似指示可包括编译指示(例如近似于C语言的#include或#define指示),且程序设计器可包含于原始码(source code)以标示可选择程序变量如近似容许数据。相似地,该程序设计器可包含于原始码程序变量中,该原始码程序变量被宣告如近似容许数据类型变量,用于使该近似感知编译程序知道以产生近似计算指令399,近似计算指令399致使近似计算透过上述变量以执行。流程进入步骤904。

在步骤904中,该近似感知编译器编译该程序以产生目标代码,上述操作相似于步骤804所描述的方法,但响应包含于已编译的原始码中的该近似指示和/或近似容许数据类型。流程结束于步骤904。

图10是图1的处理器100运行一程序的操作流程图,该程序是执行近似计算的程序。流程开始于步骤1002。

在步骤1002中,相似于前文所述的内容,该程序提供一近似方针至处理器100。另外,该程序本身提供该近似方针(并且在退离(exit)后恢复目前的近似方针)。此外,另一代码路径用以被指定不执行近似计算,上述情况是在超出误差界限时执行,如下文所述。流程进入步骤1004。

在步骤1004中,处理器100针对目前本身的状态执行一快照并将本身状态写入图1的快照储存器134。在一实施例中,处理器100执行该快照以响应于遇到该程序所执行的一指令。在一实施例中,该指令包括一x86WRMSR指令。在一实施例中,执行该快照包括写回至内存未清除高速缓存行(memory dirty cache line),该内存未清除高速缓存行将被该程序的所述近似计算所修饰以清除数据高速缓存138的该高速缓存行的复制,进而特别标示该高速缓存行可为近似计算的目标。由于该高速缓存行被特别标示(表示该等高速缓存行被近似计算的结果所修饰),所述高速缓存行不会被写回内存,至少直到证实该程序可在不超过误差界限下完成。所以,若处理器100判别该误差界限已被超越(例如步骤1012),则该特别表示的高速缓存行被设为无效(invalidated)且标示为非特别(non-special),而所述高速缓存的预先近似(pre-approximate)计算状态设可为内存所使用,且用于后续非近似(non-approximate)的计算(例如步骤1014)。在一实施例中,该程序设计器须注意有关所述特殊标示的高速缓存行必须不能溢出(spill out of)数据高速缓存138;否则处理器100视上述情况为超出误差界限。在一较佳实施例中,在一多核处理器中,数据高速缓存138必须设置于执行所述近似计算的核心。流程进入步骤1006。

在步骤1006中,处理器100、特别是功能近似单元106,执行透过基于该近似方针的一程序指令以执行一近似计算,借以产生一结果164。功能近似单元106还将结果164的误差168近似于输入操作数的误差162以及该近似计算所产生的误差,如前文所述。流程进入步骤1008。

在步骤1008中,功能近似单元106将累积的误差168写至有关于架构缓存器108的误差储存器109,其中架构缓存器108接收近似的结果164。流程进入步骤1012。

在步骤1012中,处理器100判别步骤1008中产生的误差168是否超过该近似方针的误差界限。若是,流程进入步骤1014;若不是,流程返回步骤1006以执行该程序的另一近似计算。

在步骤1014中,处理器100恢复处理器100的状态至该快照,而该快照是储存于快照储存器134,且处理器100以非近似方法重新执行该程序,或至少一部分以非近似方法重新执行,上述动作是在步骤1004中执行该快照后执行,而该步骤1004是涉及超过该误差界限的以近似方法执行的计算。步骤1014的操作实施例将透过图11以及图12于下文描述。流程结束于步骤1014。

图11是依据本发明一实施例中,图10的步骤1014的详细操作流程图。流程开始于步骤1102。

在步骤1102中,透过响应于侦测到该误差界限已被超越的状况(在步骤1012中)而产生的一微异常(micro-exception)(即依非架构异常(non-architectural exception)),控制方式转换为处理器100的微码136。微码136恢复处理器100的状态至该快照,如上述图10所描述的内容。此外,微码136产生一架构异常(architectural exception)。流程进入步骤1104。

在步骤1104中,架构异常处理器(handler)将控制转换至图10的步骤1002所指定的其他代码路径,因此所述近似计算是以完整精确度执行。在一实施例中,该架构异常处理器设定该近似方针为关闭近似功能(也即设定该近似方针为完整精确度)并且跳至一代码,该代码还为在先前近似开启时所执行且现在以近似关闭状态执行的代码。流程结束于步骤1104。

图12是依据本发明另一实施例中,图10的步骤1014的详细操作流程图。流程开始于步骤1202。

在步骤1202中,透过响应于侦测到该误差界限已被超越的状况而产生的一微异常,控制方式转换为处理器100的微码136。微码136恢复处理器100的状态至该快照。流程进入步骤1204。

在步骤1204中,微码136设定该近似方针(例如写入近似控制缓存器132)至完整精确度。微码136还清除有关于所有架构缓存器108的误差储存器109。微码136还致使该程序的重新执行,例如在步骤1004的该快照之后执行。在一实施例中,微码136从储存在快照储存器134中的一指令地址以重新执行该程序。流程结束于步骤1204。

虽然本发明的各实施例已阐述近似计算可执行音讯与视讯的应用,然而其他近似计算的实施例还可能执行其他领域的应用,例如计算机游戏的物理计算的传感器计算。举例而言,模拟至数字转换器用以计算的值的分辨率,可能只有16位的准确度,而上述游戏的物理计算分析所使用的53位精确度,实际上是非必要的。

本发明已透过各种实施例描述于此,上述实施例应理解为本发明所呈现的范例,而不应对本发明产生任何限制。任何所属技术领域中具有通常知识者应明显的了解到,在不偏离本发明的精神和范围内,当可进行任何形式上或细节的改变或润饰。举例而言,可用软件实现,如本文所述的装置与方法的功能、制造、建模、仿真、描述和/或测试。上述可透过使用一般程序语言(例如C、C++)、包括Verilog HDL、VHDL等的硬件描述语言(HDL)或其他可用的程序而加以实现。上述软件可被设置于任何熟知的计算机可用媒体,例如磁带(magnetic tape)、半导体、磁盘或光盘(例如CD-ROM、DVD-ROM等)、一网络、有线或无线或其他通讯媒体。本文所述的装置与方法的各种实施例可包括一半导体知识产权核心(semiconductor intellectual property core),例如一处理器核心(例如透过HDL实现或指定)以及透过集成电路制造而转换为硬件。此外,本文所述的装置与方法可透过硬件与软件的组合而加以实现。因此,本发明的范围不应受限于本文的任何示范性实施例,而只应以本发明的申请专利范围与其等效范围为准。应特别注意,本发明可实现于处理器装置中,而该处理器可使用于一般计算机之中。最后,任何所属技术领域中具有通常知识者应理解,基于本文所揭露的概念与实施例,任何设计或修饰其他架构以具备与本发明相同目的的应用,皆已包含于本发明的范围且皆已定义于本发明的申请专利范围中。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1