CN105308555B - 具有近似计算功能单元的处理器 - Google Patents

具有近似计算功能单元的处理器 Download PDF

Info

Publication number
CN105308555B
CN105308555B CN201480028774.3A CN201480028774A CN105308555B CN 105308555 B CN105308555 B CN 105308555B CN 201480028774 A CN201480028774 A CN 201480028774A CN 105308555 B CN105308555 B CN 105308555B
Authority
CN
China
Prior art keywords
instruction
calculating
error
processor
approximation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201480028774.3A
Other languages
English (en)
Other versions
CN105308555A (zh
Inventor
葛兰·G·亨利
泰瑞·派克斯
罗德尼·E·虎克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Zhaoxin Semiconductor Co Ltd
Original Assignee
Shanghai Zhaoxin Integrated Circuit Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Zhaoxin Integrated Circuit Co Ltd filed Critical Shanghai Zhaoxin Integrated Circuit Co Ltd
Publication of CN105308555A publication Critical patent/CN105308555A/zh
Application granted granted Critical
Publication of CN105308555B publication Critical patent/CN105308555B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3221Monitoring of peripheral devices of disk drive devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Executing Machine-Instructions (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
  • Indication And Recording Devices For Special Purposes And Tariff Metering Devices (AREA)
  • Complex Calculations (AREA)

Abstract

一种处理器,包括一指示器,被配置以表示一完整精确度模式或一近似计算模式;以及一功能单元,被配置以在该指示器表示该完整精确度模式时以一完整精确度执行计算,以及在该指示器表示该一近似计算模式时以低于该完整精确度的一较低精确度执行计算。

Description

具有近似计算功能单元的处理器
相关申请的交叉引用
本发明主张申请号为14/522,530、申请日为2014年10月23日的美国正式申请的优先权,此美国正式申请主张临时案号为61/937,741、申请日为2014年2月10日的美国临时申请的优先权,此美国临时申请名称为可执行近似计算指令的处理器;可从过多的近似计算误差中恢复的处理器;具有近似计算功能单元的处理器,其全部内容并入本申请中作参考。
技术领域
本发明涉及处理器技术领域,尤其涉及一种具有近似计算功能单元的处理器。
背景技术
在近似计算(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来执行,例如加法、减法、乘法、除法、融合的加法与乘法(fusedmultiply 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。
在一些较佳实施例中,当系统配置改变时(例如系统被插入一墙上的插座(wallsocket)或从该墙上的插座被拔除,或插入不同尺寸的一外部屏幕),该程序侦测该配置的改变且在步骤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;其中,举例而言,循环控制变量(loopcontrol 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实现或指定)以及透过集成电路制造而转换为硬件。此外,本文所述的装置与方法可透过硬件与软件的组合而加以实现。因此,本发明的范围不应受限于本文的任何示范性实施例,而只应以本发明的申请专利范围与其等效范围为准。应特别注意,本发明可实现于处理器装置中,而该处理器可使用于一般计算机之中。最后,任何所属技术领域中具有通常知识者应理解,基于本文所揭露的概念与实施例,任何设计或修饰其他架构以具备与本发明相同目的的应用,皆已包含于本发明的范围且皆已定义于本发明的申请专利范围中。

Claims (21)

1.一种处理器,其特征在于,包括:
一近似控制缓存器,保存指定该处理器的近似方针的信息,该近似控制缓存器包括一误差界限;
复数架构缓存器,被配置以提供复数指令操作数,每一个架构缓存器对应之误差储存器被配置以指示储存在上述架构缓存器的一结果内的一误差量;以及
一功能单元,依据储存在该近似控制缓存器的该近似方针以执行计算,并且在包括一旗标的一指示器表示一完整精确度模式时以一完整精确度执行计算,以及在该指示器表示一近似计算模式时以低于该完整精确度的一较低精确度执行计算,以及从上述架构缓存器接收一或多个指令操作数以及从上述架构缓存器对应之误差储存器接收上述误差量,以及将上述一或多个指令操作数在执行基于该近似方针之后续计算所产生的误差量累积起来,以及将该后续计算之结果以及所累积之误差量储存于一目的架构缓存器以及该目的架构缓存器所对应的误差寄存器,其中当所累积的误差量不超过该误差界限时,以近似计算模式执行计算;其中该功能单元包括一指令解码器,用以解码一指令转译器在转译一近似计算指令时所产生的微指令,借此判定所有或一部分除了该近似控制缓存器所提供之外的近似方针。
2.根据权利要求1所述的处理器,其特征在于,该功能单元被配置以在透过该较低精确度执行上述计算时,相较于透过该完整精确度执行上述计算时会有较少的功率消耗。
3.根据权利要求1所述的处理器,其特征在于,为了透过该较低精确度执行上述计算,该功能单元关闭复数晶体管,所述晶体管在以该完整精确度执行上述计算时是处于启动状态。
4.根据权利要求3所述的处理器,其特征在于,所述晶体管是在上述计算执行时,有关于该功能单元的输入操作数的复数较低位。
5.根据权利要求4所述的处理器,其特征在于,该功能单元包括一浮点乘法单元,其中所述晶体管在透过该较低精确度执行上述计算时关闭,而所述晶体管是该浮点乘法单元在以该完整精确度执行上述计算时,与该输入操作数的所述较低位相乘的晶体管。
6.根据权利要求1所述的处理器,其特征在于,该功能单元被配置以执行超越函数计算,并在透过该完整精确度执行所述超越函数计算时是使用一M次多项式,而在透过该较低精确度执行所述超越函数计算时是使用一N次多项式,其中N的数值小于M。
7.根据权利要求1所述的处理器,其特征在于,该功能单元被配置以一迭代方法执行除法计算,其中是以该较低精确度执行所述除法计算,当一目前迭代的一结果达到一预定程度的精确度时,停止迭代动作,而该预定程度的精确度是低于该功能单元可执行所述除法计算的该完整精确度。
8.根据权利要求1所述的处理器,其特征在于,该功能单元被配置以估计该误差量,该误差量是有关于该功能单元以该较低精确度执行上述计算所产生的一结果。
9.根据权利要求8所述的处理器,其特征在于,有关于该结果的该误差量包括一累积误差量,该累积误差量是有关于该功能单元的输入操作数以及该功能单元以该较低精确度执行上述计算所产生的该结果,其中当该累积误差量不超过该误差界限时,以近似计算模式执行计算。
10.根据权利要求1所述的处理器,其特征在于,其中有关于所述架构缓存器的每个缓存器的是一误差量的一指示,该指示是有关在对应的缓存器内执行的一近似计算的一结果。
11.根据权利要求10所述的处理器,其特征在于,当该功能单元如一输入操作数接收所述架构缓存器的一缓存器的该结果,该功能单元还接收有关该结果的该误差量的相关的该指示。
12.根据权利要求10所述的处理器,其特征在于,该处理器被配置以清除该指示以响应遇到吩咐该处理器清除该指示的一指令,而该指示是有关该对应的缓存器。
13.根据权利要求1所述的处理器,其特征在于,该指示器被设定至该完整精确度模式以响应遇到该处理器的一指令集架构的一第一预定指令,以及保留设定给该第一预定指令之后的指令直到遇到该指令集架构的一第二预定指令,该第二预定指令指示该处理器停止以该较低精确度执行上述计算。
14.根据权利要求1所述的处理器,其特征在于,该指示器仅为了一指令而被设定至该完整精确度一模式,该指令响应透过该较低精确度所执行的上述计算中的一计算。
15.根据权利要求14所述的处理器,其特征在于,该指令包括一前缀,该前缀指示该处理器以该较低精确度执行上述计算中的该计算。
16.一种透过具备一指示器与一功能单元的一处理器执行的方法,其特征在于,该方法包括:
设定该指示器包括一近似控制缓存器,保存指定该处理器的近似方针的信息,该近似控制缓存器包括一误差界限;
透过该处理器之复数架构缓存器存储复数指令操作数,每一个架构缓存器对应的误差储存器被配置以指示储存在上述架构缓存器的一结果内的一误差量;以及
透过该功能单元,依据储存在该近似控制缓存器的该近似方针以执行计算,并且在包括一旗标的一指示器表示一完整精确度模式时以一完整精确度执行计算,以及在该指示器表示一近似计算模式时以低于该完整精确度的一较低精确度执行计算,以及从上述架构缓存器接收一或多个指令操作数以及从上述架构缓存器对应之误差储存器接收上述误差量,以及将上述一或多个指令操作数在执行基于该近似方针之后续计算所产生的误差量累积起来,以及将该后续计算之结果以及所累积之误差量储存于一目的架构缓存器以及该目的架构缓存器所对应的误差寄存器,其中当所累积的误差量不超过该误差界限时,以近似计算模式执行计算;其中该功能单元包括一指令解码器,用以解码一指令转译器在转译一近似计算指令时所产生的微指令,借此判定所有或一部分除了该近似控制缓存器所提供之外的近似方针。
17.根据权利要求16所述的方法,其特征在于,所述以该较低精确度执行计算,包括关闭复数晶体管,所述晶体管在以该完整精确度执行上述计算时是处于启动状态。
18.根据权利要求16所述的方法,其特征在于,所述以该完整精确度执行计算,包括以该完整精确度并且使用一M次多项式以执行超越函数计算,所述以该较低精确度执行计算,包括以该较低精确度并且使用一N次多项式以执行超越函数计算,其中N的数值小于M。
19.根据权利要求16所述的方法,其特征在于,该功能单元被配置以一迭代方法执行除法计算,所述以该较低精确度执行计算,包括当一目前迭代的一结果达到一预定程度的精确度时,停止迭代动作,而该预定程度的精确度是低于该功能单元可执行所述除法计算的该完整精确度。
20.根据权利要求16所述的方法,其特征在于,还包括:
近似一错误量,该错误量是有关于该功能单元以该较低精确度执行上述计算所产生的一结果。
21.根据权利要求16所述的方法,其特征在于,还包括:
设定该指示器至该完整精确度模式以响应遇到该处理器的一指令集架构的一第一预定指令;以及
保留该指示器的设定给该第一预定指令之后的指令直到遇到该指令集架构的一第二预定指令,该第二预定指令指示该处理器停止以该较低精确度执行上述计算。
CN201480028774.3A 2014-02-10 2014-12-14 具有近似计算功能单元的处理器 Active CN105308555B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461937741P 2014-02-10 2014-02-10
US61/937,741 2014-02-10
US14/522,530 US10235232B2 (en) 2014-02-10 2014-10-23 Processor with approximate computing execution unit that includes an approximation control register having an approximation mode flag, an approximation amount, and an error threshold, where the approximation control register is writable by an instruction set instruction
US14/522,530 2014-10-23
PCT/IB2014/003137 WO2015118374A1 (en) 2014-02-10 2014-12-14 Processor with approximate computing functional unit

Publications (2)

Publication Number Publication Date
CN105308555A CN105308555A (zh) 2016-02-03
CN105308555B true CN105308555B (zh) 2019-03-15

Family

ID=52473757

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480028774.3A Active CN105308555B (zh) 2014-02-10 2014-12-14 具有近似计算功能单元的处理器

Country Status (5)

Country Link
US (1) US10235232B2 (zh)
EP (1) EP2908241B1 (zh)
KR (1) KR101770492B1 (zh)
CN (1) CN105308555B (zh)
WO (1) WO2015118374A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112286581A (zh) * 2020-12-25 2021-01-29 广东省新一代通信与网络创新研究院 一种流水线式计算加速协处理方法及系统

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9990203B2 (en) * 2015-12-28 2018-06-05 Advanced Micro Devices, Inc. Hardware accuracy counters for application precision and quality feedback
JP7174243B2 (ja) 2018-12-21 2022-11-17 富士通株式会社 情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法
CN111399803B (zh) * 2019-01-03 2022-07-15 北京小米松果电子有限公司 除法运算方法、装置、存储介质及电子设备
EP3792752A1 (en) * 2019-09-11 2021-03-17 Nokia Solutions and Networks Oy Arithmetic unit

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7325022B2 (en) * 2003-08-26 2008-01-29 Intel Corporation Methods and apparatus for determining approximating polynomials using instruction-embedded coefficients
US8402078B2 (en) * 2008-02-26 2013-03-19 International Business Machines Corporation Method, system and computer program product for determining required precision in fixed-point divide operations
CN105283858A (zh) * 2014-02-10 2016-01-27 上海兆芯集成电路有限公司 可执行近似计算指令的处理器

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3736566A (en) 1971-08-18 1973-05-29 Ibm Central processing unit with hardware controlled checkpoint and retry facilities
US4726024A (en) 1986-03-31 1988-02-16 Mieczyslaw Mirowski Fail safe architecture for a computer system
US4912707A (en) 1988-08-23 1990-03-27 International Business Machines Corporation Checkpoint retry mechanism
US5051885A (en) * 1988-10-07 1991-09-24 Hewlett-Packard Company Data processing system for concurrent dispatch of instructions to multiple functional units
US5386375A (en) 1993-11-01 1995-01-31 Motorola, Inc. Floating point data processor and a method for performing a floating point square root operation within the data processor
US5504859A (en) 1993-11-09 1996-04-02 International Business Machines Corporation Data processor with enhanced error recovery
WO1995031767A1 (en) 1994-05-11 1995-11-23 Vlsi Technology, Inc. Floating-point processor with apparent-precision based selection of execution-precision
US5644742A (en) 1995-02-14 1997-07-01 Hal Computer Systems, Inc. Processor structure and method for a time-out checkpoint
US6625749B1 (en) 1999-12-21 2003-09-23 Intel Corporation Firmware mechanism for correcting soft errors
US7171594B2 (en) 2002-03-06 2007-01-30 Hewlett-Packard Development Company, L.P. Pausing a transfer of data
US20050004958A1 (en) 2003-07-05 2005-01-06 General Instrument Corporation Single instruction multiple data implementation of finite impulse response filters including adjustment of result
US20050004957A1 (en) 2003-07-05 2005-01-06 General Instrument Corporation Single instruction multiple data implementations of finite impulse response filters
US20050228837A1 (en) 2004-04-08 2005-10-13 Paul Marostica Approximate number calculator
DE102004037713A1 (de) 2004-08-04 2006-03-16 Robert Bosch Gmbh Verfahren, Betriebssystem und Rechengerät zum Abarbeiten eines Computerprogramms
US7634687B2 (en) 2005-01-13 2009-12-15 Microsoft Corporation Checkpoint restart system and method
US7467325B2 (en) 2005-02-10 2008-12-16 International Business Machines Corporation Processor instruction retry recovery
US7421568B2 (en) 2005-03-04 2008-09-02 Qualcomm Incorporated Power saving methods and apparatus to selectively enable cache bits based on known processor state
US20060271615A1 (en) 2005-05-27 2006-11-30 Shearer James B Method to compute an approximation to the reciprocal of the square root of a floating point number in IEEE format
US8595279B2 (en) 2006-02-27 2013-11-26 Qualcomm Incorporated Floating-point processor with reduced power requirements for selectable subprecision
CN100435548C (zh) 2006-09-15 2008-11-19 北京大学 一种能够同时产生多位调频网点的方法及装置
US20110004644A1 (en) 2009-07-03 2011-01-06 Via Technologies, Inc. Dynamic floating point register precision control
US8458650B2 (en) 2010-03-29 2013-06-04 International Business Machines Corporation Injecting a fault into a stream operator in a data stream processing application
US8397187B2 (en) 2010-04-23 2013-03-12 International Business Machines Corporation Verifying the error bound of numerical computation implemented in computer systems
US8621321B2 (en) 2010-07-01 2013-12-31 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
US8627143B2 (en) 2010-07-12 2014-01-07 Hewlett-Packard Development Company, L.P. Dynamically modeling and selecting a checkpoint scheme based upon an application workload
US8676871B2 (en) 2010-09-24 2014-03-18 Intel Corporation Functional unit capable of executing approximations of functions
US20120197955A1 (en) 2011-01-31 2012-08-02 Nokia Corporation Method, apparatus, and computer program product for resource, time, and cost aware variable-precision solving of mathematical functions
US8510546B2 (en) 2011-03-29 2013-08-13 International Business Machines Corporation Run-ahead approximated computations
CN103959192B (zh) * 2011-12-21 2017-11-21 英特尔公司 用于估算超越函数的数学电路
US8954797B2 (en) 2012-04-16 2015-02-10 International Business Machines Corporation Reconfigurable recovery modes in high availability processors
WO2014032610A1 (zh) 2012-09-03 2014-03-06 东南大学 一种面向cpu流水线的错误恢复电路
CN103019876B (zh) 2012-12-26 2015-07-01 东南大学 一种面向cpu流水线的错误恢复电路
US9829956B2 (en) 2012-11-21 2017-11-28 Nvidia Corporation Approach to power reduction in floating-point operations
US9021313B2 (en) 2012-11-21 2015-04-28 Microsoft Technology Licensing, Llc Priority-assignment interface to enhance approximate computing
JP6044316B2 (ja) 2012-12-12 2016-12-14 株式会社デンソー 車載電子制御装置
US9317379B2 (en) 2014-01-24 2016-04-19 International Business Machines Corporation Using transactional execution for reliability and recovery of transient failures
US9588845B2 (en) 2014-02-10 2017-03-07 Via Alliance Semiconductor Co., Ltd. Processor that recovers from excessive approximate computing error

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7325022B2 (en) * 2003-08-26 2008-01-29 Intel Corporation Methods and apparatus for determining approximating polynomials using instruction-embedded coefficients
US8402078B2 (en) * 2008-02-26 2013-03-19 International Business Machines Corporation Method, system and computer program product for determining required precision in fixed-point divide operations
CN105283858A (zh) * 2014-02-10 2016-01-27 上海兆芯集成电路有限公司 可执行近似计算指令的处理器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Quality programmable vector processors for approximate computing;Swagath Venkataramani,et al.;《MICRO-46 proceedings of the 46th annual IEEE/ACM International Symposium on Microarchitecture》;20131231;第1-12页

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112286581A (zh) * 2020-12-25 2021-01-29 广东省新一代通信与网络创新研究院 一种流水线式计算加速协处理方法及系统

Also Published As

Publication number Publication date
EP2908241B1 (en) 2021-09-08
US20150227407A1 (en) 2015-08-13
EP2908241A3 (en) 2017-08-30
WO2015118374A1 (en) 2015-08-13
KR20160007517A (ko) 2016-01-20
KR101770492B1 (ko) 2017-08-22
EP2908241A2 (en) 2015-08-19
US10235232B2 (en) 2019-03-19
CN105308555A (zh) 2016-02-03

Similar Documents

Publication Publication Date Title
CN105283858B (zh) 可执行近似计算指令的处理器
CN105793825B (zh) 可从过多的近似计算误差中恢复的处理器
CN105308555B (zh) 具有近似计算功能单元的处理器
US20210026634A1 (en) Apparatus with reduced hardware register set using register-emulating memory location to emulate architectural register
TWI515654B (zh) 從區位格式轉換至十進制浮點格式
TWI691897B (zh) 用以執行融合單一週期遞增-比較-跳越之指令與邏輯
CN108369509B (zh) 用于基于通道的跨步分散操作的指令和逻辑
KR101636836B1 (ko) 명령어들의 고속 실패 핸들링을 위한 장치 및 방법
US10394562B2 (en) Microprocessor that fuses if-then instructions
TWI450189B (zh) 微處理器融合載入算術/邏輯運算及跳躍巨指令
TWI522906B (zh) 自十進制浮點格式轉換至區位格式
TW201241747A (en) Efficient conditional ALU instruction in read-port limited register file microprocessor
TW201732581A (zh) 用於載入索引與集中操作的指令及邏輯
CN104956319A (zh) 向量浮点测试数据类立即指令
WO2018231598A1 (en) Emulation of target system using jit compiler and bypassing translation of selected target code blocks
Yi et al. 32-bit RISC CPU based on MIPS instruction fetch module design
TWI543077B (zh) 處理器與透過處理器執行的方法
TWI627585B (zh) 處理器與透過處理器執行的方法
TWI559224B (zh) 處理器與透過處理器執行的方法
Chu Jr et al. Design a Fully MIPS32 ISA Processor with Corresponding Verification Environment

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
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203

Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd.

Address before: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203

Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd.