CN101802779B - 具有可重新组构的浮点单元的处理器 - Google Patents

具有可重新组构的浮点单元的处理器 Download PDF

Info

Publication number
CN101802779B
CN101802779B CN200880012791.2A CN200880012791A CN101802779B CN 101802779 B CN101802779 B CN 101802779B CN 200880012791 A CN200880012791 A CN 200880012791A CN 101802779 B CN101802779 B CN 101802779B
Authority
CN
China
Prior art keywords
processor
instruction
bit
computing
unit
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
CN200880012791.2A
Other languages
English (en)
Other versions
CN101802779A (zh
Inventor
A·艾哈迈德
K·D·戈维亚斯
M·克拉克
J·伊利克
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN101802779A publication Critical patent/CN101802779A/zh
Application granted granted Critical
Publication of CN101802779B publication Critical patent/CN101802779B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix 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/3017Runtime instruction translation, e.g. macros
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Nonlinear Science (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

一种运作处理器(100)的技术,包括决定处理器的浮点单元(FPU)(120)是要运作在全位模式(full-bit mode)或是在减少的位模式(reduced-bit mode)中。当指示为全位模式时,指令被提取且指令被译码成为单一运算,或当指示为减少的位模式时,译码成为多重运算。

Description

具有可重新组构的浮点单元的处理器
技术领域
本发明大体上系关于处理器,且更具体地说,系关于具有可重新组构的浮点单元(reconfigurable floating point unit)的处理器。
背景技术
众所皆知的,浮点单元(floating point unit,FPU)系为特别被设计来执行浮点数字上的运算(operation)的处理器系统的一部份。典型的浮点运算包括加法、减法、乘法、除法和平方根。一些处理器系统也可执行许多非代数的(transcendental)功能,例如指数的或三角学的计算,尽管在多数的现代处理器里,这些是以软件例程库来做的。在多数现代一般用途的计算机架构中,FPU包括多重执行单元。在这些架构中,浮点运算通常是独立于整数运算而被执行且一般是管线化处理(pipeline)。FPU的执行单元可被专门化地分成较简单的运算(例如加法和乘法)与更复杂的运算(例如除法)。在一些情况中,只有简单的运算是用硬件来完成的,而更复杂的运算是用仿真的。
众所皆知的,指令集定义处理器可执行的指令。指令包括算数指令(例如加法与减法)、逻辑指令(例如,AND、OR与NOT指令)、与数据指令(例如,移动、输入、输出、加载、与储存指令)。指令集或指令集架构(ISA)是处理器架构有关程序设计的一部份,包括原始(native)数据型式、指令、缓存器、寻址模式、存储器架构、中断和异常处置、与外部输入/输出(I/O)。ISA包括运算码(operational code,opcode)的集合的说明,也就是由特别的中央处理单元(CPU)架构执行的原始命令。众所皆知的,运算码是可指定要被执行的运算的机器语言指令的一部份。完整的机器语言指令包括运算码与通常指定一个或多个操作数,也就是,要在上面执行运算的数据。运算码运算的操作数可依据CPU架构而包含缓存器、存储器里的数值、储存在堆栈里的数值、I/O端口、数据总线等等。
众所皆知的,有不同微架构的计算机可分享一般的指令集。举例来说,来自不同制造商的处理器可执行几乎相同的指令集版本,例如x86指令集,但是本质上是不同的内部设计。典型的复杂指令集计算机(complex instruction set computer,CISC)有将一个或两个基本运算(如「加法」和「乘法」)结合到固有的指令的指令以存取存储器、根据使用来增加缓存器、或解参考(de-reference)储存在存储器或缓存器的位置。精简指令集计算机(reduced instruction-set computer,RISC)牺牲较简单与较快指令集的执行而换得较低的码密度(也就是执行给定的任务要更多程序存储器空间)。RISC指令典型上只执行单一固有的运算,例如两个缓存器的「加法」或「加载」一个存储器位置到一个缓存器里。
许多不同的指令集已经被使用在x86型式处理器好几年了。举例来说,矩阵数学延伸(matrix math extension,MMX)指令集是在1997年被引进。一般来说,虽然MMX被设计来再利用先前CPU设计的现存浮点缓存器,但是正在执行MMX指令的CPU不能同时运作浮点与单指令多数据(single-instruction multiple-data,SIMD)型式的数据。此外,MMX指令集只被设计来运作整数。数据流SIMD延伸(streaming SIMDextension,SSE)指令集是在1999年被引进来增加MMX指令集的功能。SSE指令集加入八个参照到XMM0到XMM7的新的128位缓存器。每个128位缓存器可被四个32位单精度浮点数一起塞入。在SSE指令集中,128位缓存器在操作系统明确地激活它们且是操作系统需要维持在那边的任务交换的附加程序状态之前是被预设不可用的。因为额外的支持浮点,所以SSE指令集(与SSE指令集的较新版本)比MMX指令集更广为被使用。
SSE2指令集增加全部运作在先前与SSE一起引进的相同128位XMM向量缓存器档案的倍精度(64位)浮点和8/16/32位整数数据型式的新算数指令。SSE3指令集增加以数学指令与一些步骤(执行绪(thread))管理指令为目的的少数的数字讯号处理器(DSP)到SSE2指令集中。SSE3指令集增加16个新的运算码(到SSE3指令集中),其包括排列位组成为字符、乘16位定点数字时正确舍入(rounding)且在字符累积指令之内。SSE4指令集加入点乘积(dot product)指令、额外整数指令等等。
发明内容
根据本发明的多种观点,揭露一种处理器设计,包括浮点单元(FPU),该浮点单元(FPU)包含共享控制区域和两个实质相同的64位数据路径,也就是,被使用来执行128位指令集的浮点指令的上端数据路径(top data path)和下端数据路径(bottom data path)。经由例如模式位(mode bit)的指示器(indicator)来组构控制区域,以执行设定在包含上端和下端数据路径的128位数据路径上或是在下端数据路径上的128位指令集。处理器设计适用于具有三个不同组构的处理器芯片,也就是,具有用于最大效能之128位FPU的处理器芯片、具有用于减低电力消耗之64位FPU的处理器芯片、或具有用于较低的电力消耗之可动态下放(down-bin)成64位FPU的128位FPU的处理器芯片。在可下放的处理器芯片中,下放可依据电力需求而在激活(boot-up)时或在运作(run-time)时被完成。
处理器设计使用在不同组构间共享的共享控制区域(逻辑)是有益的,该共享控制区域(逻辑)例如为一个或多个前端译码器、浮点(FP)重命名单元、FP排程单元、FP异常和管线控制单元、和FP收回(retire)单元。在任何情况中,前端译码器依照模式位来分解(crack)128位指令成为单一128位原始运算或是两个64位运算。许多指令集的单指令多数据(SIMD)性质允许上端数据路径为下端数据路径的复制品(duplicate)。如上所提及的,上端和下端数据路径两者都有共享控制区域(接口),其允许相同区块被使用在64位数据路径和128位数据路径。对于128位数据路径,原始运算被重映像(remap)到两个64位半运算(half operation,hop),也就是,被分别提供到上端和下端数据路径的高半运算(hi hop)和低半运算(lo hop)。对于64位数据路径,原始运算被直接转变成一个64位半运算(也就是,低半运算(lo hop))。
对于运作在128位数据上的非SIMD(non-SIMD)指令,旁路(bypass)单元被实行以在上端和下端数据路径间混洗(shuffle)数据,以至于128位混洗、填塞(pack)、和取出(unpack)指令可被适当地执行。旁路单元被组构来在相同数据路径中的数据路径区块间(例如在下端FP加法器和下端FP乘法器间)转送(forward)数据,以及从在上端和下端数据路径中任一者的缓存器档案中读取数据。在此使用的用词「耦接(coupled)」包括以一个或多个插置(intervening)组件(或单元)来实现的在组件(或单元)间的直接电性连接及在组件(或单元)间的非直接电性连接。
根据本发明的一个观点,一种运作处理器的方法包括决定处理器的浮点单元(FPU)是要运作在全位模式(full-bit mode)或是在减少的位模式(reduced-bit mode)。当指示为全位模式时,提取的指令被译码成单一运算,或当指示为减少的位模式时,提取的指令被译码成多重运算。举例来说,全位模式可为128位模式,而减少的位模式可为64位模式。另一个例子,全位模式可为256位模式,而减少的位模式可为32位模式。又另一个例子,全位模式可为128位模式,而减少的位模式可为32位模式。
根据本发明的另一个观点,一种处理器包括指示器、译码器和浮点单元(FPU)。译码器被耦接到指示器,且依据指示器来译码指令成为单一运算或多重运算。FPU被耦接到译码器,且依据指示器来开始在一个处理器周期中执行单一运算或在一个或多个处理器周期中执行多重运算。
又根据本揭露的另一个观点,一种系统包括指示器、处理器、和被耦接到处理器的存储器子系统。处理器包括译码器和浮点单元(FPU)。译码器被耦接到指示器,且依据指示器来译码指令成为单一运算或多重运算。FPU被耦接到译码器,且依据指示器来开始在一个处理器周期中执行单一运算或在一个或多个处理器周期中执行多重运算。
附图说明
藉由参照随附的图式,可更佳地了解本发明且其许多特性和优点对于那些熟悉此项技术者是明白的。
图1为根据本发明的实施例而组构的处理器的相关部分的电性方块图。
图2为图1处理器的浮点单元(FPU)的相关部分的电性方块图。
图3为包含根据图2而组构的处理器的计算机系统的相关部分的电性方块图。
图4为用于依据指示器来译码指令的方法的流程图。
在不同图式里使用相同组件符号代表相似或相同的项目。
具体实施方式
参照图1,显示包括可重新组构的浮点单元(FPU)的处理器100的相关部分。处理器100包括当作指令快取使用的高速缓存(快取)102。在一个或多个实施例中,快取102包含一阶(L1)变换后备缓冲区(translation look-aside buffer,TLB)、二阶(L2)TLB、预译码(pre-decode)快取和分支预测表。快取102被耦接到总线接口单元(BIU)138与L2快取控制器136。被耦接到快取102和指令译码器106的提取/译码控制单元104接收到来自可对应于缓存器、熔丝(fuse)等等的指示器110的结构信号(FP128信号)。FP128信号的逻辑阶级决定处理器100运作在128位模式或64位模式。虽然在此的讨论主要针对处理器是运作在128位模式或64位模式,但是可预期的是,本揭露技术同样可应用到不同的模式,例如256位模式和128位模式。提取/译码控制单元104控制提取来自快取102的指令与控制被指令译码器106译码的指令。被译码的指令从指令译码器106提供到指令控制单元(ICU)108,其除了别的功能外尚决定被译码的指令(运算)应该被发送到无顺序执行单元112的整数单元111或浮点单元(FPU)113。
整数单元111包括被耦接到执行整数运算的复数个整数执行单元(IEU)116与耦接到为整数运算产生地址的复数个地址产生单元(AGU)118的整数排程器114。IEU 116和AGU 118也被耦接到被耦接到快取134的加载/储存(load/store,LS)单元132。快取134作用如同数据快取并可执行L1 TLB和L2 TLB。快取134被耦接到BIU 138和L2快取控制器136。FPU 113包括FPU堆栈映像/重命名单元120、FPU排程器122和FPU缓存器档案124。FPU缓存器档案124被耦接到三个逻辑管(pipe),也就是,储存控制(STC)管126、浮点加法(FADD)管128和浮点乘法(FMUL)管130,其中每一个都可以包括有多重级(slage)的一个或多个执行单元。三个逻辑管也被耦接到LS单元132。
参照到图2,将进一步描述图1的处理器100的相关部分。如上所提到的,提取/译码控制单元104(图1)导致一个或多个指令(例如SSE指令)的快取线被从快取102提取出来并被指令译码器106译码。在典型的架构中,每个快取列包括多重指令。在一个实施例中,指令译码器106每次译码三个指令。然而可以预期的是,本揭露技术同样可应用到每次译码比三个指令多或少的处理器。虽然在此的讨论主要针对SSE指令,但是可预期的是,本揭露技术可广泛地应用到执行例如SSE2、SSE3、SSSE3、SSE4、MMX、3DNOW!TM等等的任何指令集架构(ISA)。由译码器106所提供的被译码的指令(运算)被储存在位在例如指令控制单元(ICU)108里的指令队列208里。如上所提到的,指示器110指出提取/译码控制单元104如何组构指令译码器106来译码从快取102中提取的指令。
在揭露之实施例中,指示器110提供指出FPU 113如何被组构以及指令从而如何被处理的逻辑信号(FP128信号)。FP128信号被分配到许多不同的逻辑方块以控制FPU 113如何运算。举例来说,当FP128信号确立(assert)指示为全位模式且FPU 113被组构来包括上端和下端两者数据路径250和270时,就其本身而论,FPU 113被组构来执行128位指令的128位运算。在此情况中,每个128位指令被译码成为一个运算。当FP128信号不被确立时则指出为减少的位模式,且FPU只使用下端数据路径270,而不管上端和下端数据路径250和270两者是否被包括在处理器100里。当FP128信号未被确立时,则FPU 113被组构来执行64位运算,且就其本身而论,指令译码器106分解每个128位指令成为两个64位运算。扫描对准器/微码引擎(scanaligner/microcode engine,SA/ME)202包括SA 204和ME 206且可举例来说被包括在ICU 108里。SA 204被组构从指令队列(queue)208中拉出指令,如处理器100的运作过程中所需要的。举例来说,SA 204可从指令队列208中每次拉出三个指令。应该了解的是,在此揭露的技术可广泛地应用到能够在每个处理器周期从指令队列中拉出多于或少于三个指令的处理器中。
如图所示的,SA 204被组构对每个处理器周期拉出和发送三个快速路径(fastpath)(也就是非微码的)指令。在图标的实施例中,指令为ADDPD、MULPD、和MOVAPD,其分别代表填塞两次(packed-double)的加法指令、填塞两次的乘法指令、和填塞两次的移动指令。假设FP128信号被确立(也就是FPU 113是在128位模式中),则SA 204的上面多任务器205上标示‘1’的输入被提供在上面多任务器205的相关输出上。在128位模式中,每次三个128位指令被发送。另一方面,如果FP128信号没有被确立(也就是,FPU 113是在64位模式中),则SA 204的每个上面多任务器205上标示‘0’的输入被提供在上面多任务器205的相关输出上。在此情况中,当128位指令被分解成为两个64位运算时,ADDPD指令的两个运算(也就是ADDLO和ADDHI)分别被设置在槽0和1。此外,MULPD指令的第一个运算(MULLO)被设置在槽2。
因此,在64位模式中,对每个处理器周期发送一与二分之一(1.5)个128位指令。在下一个处理器周期中,MULPD指令的第二个运算(MULHI)被设置在槽0且MOVAPD指令的两个运算(MOVALO和MOVAHI)分别被设置在槽1和槽2。因此,在64位模式例子中,ADDLO、ADDHI和MULLO在第一个处理器周期中被发送。MULHI、MOVALO和MOVAHI在接下来的第二个处理器周期中被发送。应该要注意的是,图2的多任务器205的结构可应用在64位模式中的第一个处理器周期。简而言之,在128位模式中,三个128位快速路径指令(例如三个x86 SSE指令)可在每个周期中被发送。同样地,在64位模式中,一与二分之一个128位快速路径指令(例如1.5个128位x86SSE指令)可在每个处理器周期中被发送。
如图所示的,可包括合适大小只读存储器(ROM)的微码引擎(ME)206提供用于非快速路径指令的微码。ME 206可包括128位微码、64位微码或分享的微码(也就是被分享在128位和64位令间的微码))。指令译码器106决定指令是快速路径指令还是需要微码的指令。当指出是微码指令时,ME 206提供运算到被包含在SA 204内的三个下面多任务器207的输入。快速路径信号被从指令译码器106提供到三个下面多任务器207的选择线。所有三个下面多任务器207指向相同的途径且提供不是快速路径就是微码运算。举例来说,假设来自指令队列208的下一个指令是复杂指令(例如浮点正弦(FSIN)指令),则在相应到微码指令的所有运算已经从ME 206中被拉出之前,没有其它指令从指令队列208中被拉出。
在微码指令的侦测之后,产生指向微码里的项目以相应到微码指令。然后一个或多个运算线被读出ME 206,直到相应到微码指令的所有运算都已经被读到为止。举例来说,ME 206每个线可包括三个运算。在至少一个实施例中,在相同处理器周期中,快速路径指令不能被发送成为微码指令。在此情况,来自SA/ME 202的槽里的磁泡(bubbles)可能会发生。应该了解的是,设计者可借着执行逻辑以预测微码的使用与相应到复杂指令的运算数量来减低或消除磁泡。一般说来,微码指令有多于两个的关联运算。在典型的情况,只有两个运算的指令可如同快速路径两倍指令(fastpath double instruction)被执行。在相应到微码指令的微码序列的尾端之后,然后下一个指令可从指令队列208中被拉出。在此时应该了解的是,依据可用的资源,运算不被发送。
依照处理器架构,资源可以是槽特有的。举例来说,整数单元可有只可用在某些槽里的专用资源。举例来说,整数单元可包括只出现在槽0上的整数乘法器。在此情况中,微码编程器(programmer)将须确保整数相乘运算没被放在槽1或2中。此外,当分享的资源只存在整数部分上时,微码编程器将须确保资源在需要资源的运算的分配槽里是可用的。一般说来,不分享整数部分资源的浮点运算可到任何槽。应该了解的是,一旦运算到达排程器,运算可依据可用的资源来被重新安排及无顺序地执行。
在一个实施例中,SA/ME 202提供的运算系为x86运算。在SA/ME202的槽0、1和2上的运算被提供到可被包含在FPU堆栈映像/重命名单元120里的浮点重命名1(FPRN1)单元212的槽0、1和2。FPRN1单元212除了其它功能之外自分配每个运算到适合的管(例如,管0、管1和管2)。FPRN1单元212包括在每个槽0、1和2上的128位译码器214和64位译码器216。译码器214译码x86运算成为用于128位运算的执行运算(exop_0、exop_1和exop_2)。同样地,译码器216译码x86运算成为用于64位运算的执行运算。执行运算有它们自己的压缩运算码(运算的码)空间、缓存器空间、地址空间等等,且可例如为12位执行运算。FP 128信号依据FPU 113的结构来指出译码器214和216的哪一个是被选择的。
如果确立FP128信号,则多任务器218选择译码器214。如果没确立FP128信号,则多任务器218选择译码器216。图标的执行运算的助记码(mnemonics)为分别对应到图标的x86运算ADDPD、MULPD和MOVAPD的FPKADDPD、FPKMULPD和FPKMOVPD。执行运算从FPRN1单元212到浮点重命名2(FPRN2)单元220被提供在每个槽上。FPRN1单元212和FPRN2单元220两者都可在FPU堆栈映像/重命名单元120中被执行。在FPRN2单元220中,执行运算从逻辑重命名(LRN)空间被映像到实体重命名(PRN)空间。在一个实施例中,FPRN2单元220包括有48项目(0至47)的缓存器档案。在此实施例中,在128位模式中只使用上面32(0至31)项目而在64位模式中使用所有48个项目。在128位模式中,每个SSE缓存器只有一个项目(从16到31)。在64位模式中,每个SSE缓存器有两个项目(从16至47),如同该等缓存器被看作一半的缓存器。在64位模式中,所有缓存器指定(disignations)具有低(例如xmm0.lo)指定和高(例如xmm0.hi)指定。低指定对应到项目16至31而高指定对应到项目32至47。
FPRN2单元220连通到可被包括在FPU堆栈映像/重命名单元120里的浮点收回队列(FPRQ)单元240,以归还旧的缓存器到空闲缓存器列表(free register list)并从空闲缓存器列表中接受新的缓存器。FPRQ单元240依据处理器的模式有不是128位就是64位槽。举例来说,如果处理器是在128位模式中,则3个指令将占领3个槽。另一方面,如果处理器是在64位模式,则1.5个指令(例如ADDLO、ADDHI和MULLO)将占领FPRQ单元240的3个槽。FPRN2单元220的输出被提供到被组构来例如包括36个项目的浮点单元排程器(FPSC)230。FPSC 230被组构来依据资源可用度以选择运算。
运算依据相依性(dependency)可被无顺序地发给适当的管(也就是在揭露的例子里的管0、管1或管2)。在揭露的实施例中,三个独立的运算选择器(operation picker)(对于每个管有一个运算选择器)被使用在FPSC 230里。每个选择器检查FPSC 230里的项目来定位可被发给到关联的管的运算。被分配到每个执行运算的管是带有关联执行运算地被写入到FPSC 230里的一部份信息。在一个实施例中,如果选择器找到超过一个的准备好要执行的执行运算,则选择器选择最旧的执行运算。FPSC 230可藉由放置最新的运算在队列的最上端及放置最旧的运算在队列的最底端以维持期龄顺序。被选择到的运算是被提供到浮点异常管线控制(floating point exception pipeline control,FPEPC)单元242。FPSC 230和FPEPC单元242可被包含在FPU排程器122里面。
如图所示的,数据地址从FPSC 230被提供到浮点缓存器档案124,浮点缓存器档案124可包括在上端数据路径250里的浮点缓存器档案高(floating point register file high,FPRFHI)252与在下端数据路径270里的浮点缓存器档案低(floating point register file low,FPRFLO)272。依照实施例,可不用提供上端数据路径250或是提供了而可不被使用到。数据路径250和270每个都包含浮点缓存器档案(分别是FPRFHI 252和FPRFLO 272),分享浮点旁路(FPBYP)单元254,包含第一管(包含浮点加(FPA)单元和MMX ALU(MMA)单元),包含第二管(包含浮点乘(FPM)单元、MMX乘法器(MMM)单元和MMX整数乘法器(IMM)单元)与包含第三管(包含储存控制(STC)单元)。应该要了解的是,不同或额外的单元可被提供在管里。在图标的实施例中,五个读取地址(对应到五个数据来源,也就是,两个是FPA/MMA单元的、两个是FPM/MMM/IMM单元的与一个是STC单元的)被提供到可包含FPRFHI 252和FPRFLO 272的浮点缓存器档案(FPRF)。
FPEPC单元242接收对于每个槽(也就是槽0、1和2)的每个执行运算的N位(例如12位)运算码(与额外控制信息)。FPEPC单元242包含译码器(FP128HI)244、译码器(FP128LO)246与对于每个槽(也就是槽0、1和2)的多任务器248。对于128位指令的执行运算可被分开成为两个半运算(hop)。在此情况中,执行运算具有关联的高半运算(hi hop)和低半运算(lo hop)。典型上来说,hi hop与lo hop完全相同。然而,某些执行运算的hi hop与lo hop并不完全相同。当hi hop与lo hop不完全相同时,译码器244和246运行以分别提供hi hop与lo hop。假设处理器100被组构在64位模式中,多任务器248选择通过式(feed-through)路径(也就是,不使用译码器244和246)。在此情况中,执行运算不被改变地通过且运算被提供到下端数据路径270,也就是执行的FPALO/MMALO单元276(管0)、FPMLO/MMMLO/IMMLO单元278(管1)与STCLO单元280(管2)。
当处理器100被组构在128位模式中时,多任务器248选择译码器246且译码器244和246被使用在所有的槽上。在此情况中,低半运算(lo hop)被提供到下端数据路径270,也就是FPALO/MMALO单元276(管0)、FPMLO/MMMLO/IMMLO单元278(管1)与STCLO单元280(管2),而高半运算(hi hop)被提供到上端数据路径250,也就是执行的FPAHI/MMAHI单元256(管0)、FPMHI/MMMHI/IMMHI单元258(管1)与STCHI单元260(管2)。
来自可被执行在STC126里面的STC单元260和280的数据被提供到LS单元132。当FPU缓存器档案124包含FPRFHI 252和FPRFLO272时,在LS单元132里的加载数据经由转换器262、264、282和284被提供到FPU缓存器档案124。转换器262、264、282和284被提供来将加载数据从64位数据转换成为例如90位数据。来自上端数据路径250里的管0和管1的适当单元的结果数据分别被多任务器266和268来选择。同样地,来自下端数据路径270里的管0和管1的适当单元的结果数据分别被多任务器286和288来选择。
移动到图3,计算机系统300被图标为包含可包括根据图1、图2所示的处理器而组构的一个或多个处理器的处理器302。处理器302被耦接到包含应用适当数量的依电性存储器和非依电性存储器的存储器子系统304。处理器也被耦接到例如鼠标、键盘等等的输入器件302以及例如液晶显示器(LCD)的显示器。转到图4,显示用来决定指令如何被译码的译码例程(routine)400。在方块402例程400被起始,其指向控制转移到于方块404,方块404提取一个或多个指令。接着,在决定方块406里决定例如缓存器之指示器是否被确立。如果指示器被确立将控制从方块406转移到方块408,则被提取的指令将当作单一运算来被译码。在方块408之后,控制转移到例程400结束的方块412。当在方块406里指示器没有确立时,控制转移到方块410,于此被提取的指令将被译码为多重运算。在方块410之后,控制转移到方块412。
因此,在此已经揭露的技术允许被提取的指令被译码成为单一运算或多重运算。举例来说,128位指令可依据指示器被译码成为单一128位运算或两个64位运算。
本发明的其它实施例、使用和优点对于熟悉此项技术者在思考过说明书与实行在此揭露的本发明后是显而易见的。说明书与图式应该了解为只是示范性质,本发明的范围将只限制在下列的申请专利范围与其均等物中。

Claims (10)

1.一种运作处理器的方法,包括:
提取步骤,提取指令(404);
译码步骤,将该指令译码成为响应该处理器的浮点单元运作在全位模式的单一运算;以及
译码步骤,将该指令译码成为响应该浮点单元运作在减少的位模式的多重运算(408)。
2.如权利要求1所述的方法,进一步包括:
依据指示器决定该处理器是要运作在该全位模式或该减少的位模式(406)。
3.如权利要求1所述的方法,其中,该指令为128位指令,该全位模式为128位模式,且该减少的位模式为64位模式,以及进一步包括:
决定该处理器是要运作在该128位模式或该64位模式。
4.如权利要求3所述的方法,进一步包括:
依据该决定将该128位指令译码成为用于该128位模式的一个运算或用于该64位模式的两个运算。
5.如权利要求1所述的方法,其中,该单一运算对应于一个128位运算,而该多重运算对应于两个64位运算。
6.一种处理器,包括:
指示器(110);
译码器(106),耦接到该指示器(110),其中,该译码器(106)响应该指示器指示全位模式,将第一精度的指令译码成为单一运算,或响应该指示器指示减少的位模式,将该第一精度的指令译码成为多重运算;以及
浮点单元(120),耦接到该译码器(106),其中,该浮点单元(120)依据该指示器来开始在一个处理器周期中执行该单一运算或在一个或多个处理器周期中执行该多重运算。
7.如权利要求6所述的处理器,其中,该指令为128位指令,且该译码器(106)依据该指示器将该128位指令译码成为对应于128位运算的该单一运算或对应于两个64位运算的该多重运算。
8.如权利要求6所述的处理器,其中,该多重运算包含两个运算,且该浮点单元(120)进一步包括:
下端数据路径(270),其中,该下端数据路径(270)开始在一个或多个处理器周期中执行该两个运算。
9.如权利要求6所述的处理器,其中,该浮点单元(120)进一步包括:
上端数据路径(250),执行该单一运算的第一半;以及
下端数据路径(270),执行该单一运算的第二半。
10.如权利要求9所述的处理器,进一步包括:
共享控制区域(212、220、230),耦接到该上端数据路径(250)和该下端数据路径(270)。
CN200880012791.2A 2007-02-28 2008-02-28 具有可重新组构的浮点单元的处理器 Active CN101802779B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/680,331 2007-02-28
US11/680,331 US7565513B2 (en) 2007-02-28 2007-02-28 Processor with power saving reconfigurable floating point unit decoding an instruction to single full bit operation or multiple reduced bit operations
PCT/US2008/002619 WO2008106184A1 (en) 2007-02-28 2008-02-28 Processor with reconfigurable floating point unit

Publications (2)

Publication Number Publication Date
CN101802779A CN101802779A (zh) 2010-08-11
CN101802779B true CN101802779B (zh) 2014-05-07

Family

ID=39431246

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200880012791.2A Active CN101802779B (zh) 2007-02-28 2008-02-28 具有可重新组构的浮点单元的处理器

Country Status (6)

Country Link
US (1) US7565513B2 (zh)
EP (2) EP2118741B1 (zh)
KR (1) KR101473906B1 (zh)
CN (1) CN101802779B (zh)
TW (1) TWI479412B (zh)
WO (1) WO2008106184A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8185495B2 (en) * 2008-02-01 2012-05-22 Microsoft Corporation Representation of qualitative object changes in a knowledge based framework for a multi-master synchronization environment
US20090248919A1 (en) * 2008-03-25 2009-10-01 Jerzy Szwagrzyk Method for external fifo acceleration
US8386807B2 (en) * 2008-09-30 2013-02-26 Intel Corporation Power management for processing unit
KR101687995B1 (ko) 2010-09-27 2016-12-20 삼성전자주식회사 프로세서 및 그 동작 방법
US9176738B2 (en) * 2011-01-12 2015-11-03 Advanced Micro Devices, Inc. Method and apparatus for fast decoding and enhancing execution speed of an instruction
US9128697B1 (en) * 2011-07-18 2015-09-08 Apple Inc. Computer numerical storage format with precision type indicator
US9170772B2 (en) * 2011-12-23 2015-10-27 Intel Corporation Method and apparatus for decimal floating-point data logical extraction
US10754983B2 (en) * 2017-03-31 2020-08-25 Interset Software Inc. Anonymization of sensitive data for use in user interfaces
DE102018110607A1 (de) 2017-05-08 2018-11-08 Nvidia Corporation Verallgemeinerte Beschleunigung von Matrix-Multiplikations-und-Akkumulations-Operationen
US10338919B2 (en) 2017-05-08 2019-07-02 Nvidia Corporation Generalized acceleration of matrix multiply accumulate operations
US11544065B2 (en) * 2019-09-27 2023-01-03 Advanced Micro Devices, Inc. Bit width reconfiguration using a shadow-latch configured register file
US11599359B2 (en) 2020-05-18 2023-03-07 Advanced Micro Devices, Inc. Methods and systems for utilizing a master-shadow physical register file based on verified activation
US20220365783A1 (en) * 2021-05-13 2022-11-17 Nvidia Corporation Matrix multiplication and accumulation operations on compressed matrices
KR20230090254A (ko) 2021-12-14 2023-06-21 서울대학교산학협력단 부동 소수점 연산 방법 및 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5590365A (en) * 1990-03-30 1996-12-31 Kabushiki Kaisha Toshiba Pipeline information processing circuit for floating point operations
US6732259B1 (en) * 1999-07-30 2004-05-04 Mips Technologies, Inc. Processor having a conditional branch extension of an instruction set architecture

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5574928A (en) * 1993-10-29 1996-11-12 Advanced Micro Devices, Inc. Mixed integer/floating point processor core for a superscalar microprocessor with a plurality of operand buses for transferring operand segments
US5631859A (en) * 1994-10-27 1997-05-20 Hewlett-Packard Company Floating point arithmetic unit having logic for quad precision arithmetic
US5889679A (en) * 1997-07-15 1999-03-30 Integrated Device Technology, Inc. Fuse array control for smart function enable
US6230257B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Method and apparatus for staggering execution of a single packed data instruction using the same circuit
US6308252B1 (en) * 1999-02-04 2001-10-23 Kabushiki Kaisha Toshiba Processor method and apparatus for performing single operand operation and multiple parallel operand operation
US6857061B1 (en) 2000-04-07 2005-02-15 Nintendo Co., Ltd. Method and apparatus for obtaining a scalar value directly from a vector register
US7290121B2 (en) * 2003-06-12 2007-10-30 Advanced Micro Devices, Inc. Method and data processor with reduced stalling due to operand dependencies
US7346763B2 (en) * 2004-06-02 2008-03-18 Broadcom Corporation Processor instruction with repeated execution code
US7268577B2 (en) * 2004-12-17 2007-09-11 International Business Machines Corporation Changing chip function based on fuse states

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5590365A (en) * 1990-03-30 1996-12-31 Kabushiki Kaisha Toshiba Pipeline information processing circuit for floating point operations
US6732259B1 (en) * 1999-07-30 2004-05-04 Mips Technologies, Inc. Processor having a conditional branch extension of an instruction set architecture

Also Published As

Publication number Publication date
US20080209184A1 (en) 2008-08-28
TWI479412B (zh) 2015-04-01
EP2118741A1 (en) 2009-11-18
WO2008106184A1 (en) 2008-09-04
KR101473906B1 (ko) 2014-12-17
EP2118741B1 (en) 2012-05-30
TW200842701A (en) 2008-11-01
EP2487581A1 (en) 2012-08-15
KR20090118985A (ko) 2009-11-18
EP2487581B1 (en) 2013-07-24
CN101802779A (zh) 2010-08-11
US7565513B2 (en) 2009-07-21

Similar Documents

Publication Publication Date Title
CN101802779B (zh) 具有可重新组构的浮点单元的处理器
US11379229B2 (en) Apparatus and method for adaptable and efficient lane-wise tensor processing
US11093250B2 (en) Apparatus and method for gang invariant operation optimizations using dynamic evaluation
US7293159B2 (en) Coupling GP processor with reserved instruction interface via coprocessor port with operation data flow to application specific ISA processor with translation pre-decoder
KR100236527B1 (ko) 벡터 레지스터의 복수 뱅크를 사용한 단일 명령복수 데이터 처 리
CN113050990A (zh) 用于矩阵操作加速器的指令的装置、方法和系统
US10915328B2 (en) Apparatus and method for a high throughput parallel co-processor and interconnect with low offload latency
US10831505B2 (en) Architecture and method for data parallel single program multiple data (SPMD) execution
US20140331031A1 (en) Reconfigurable processor having constant storage register
WO2012151331A1 (en) Methods and apparatus for constant extension in a processor
EP1261914B1 (en) Processing architecture having an array bounds check capability
CN108733412B (zh) 一种运算装置和方法
CN114253607A (zh) 用于由集群化解码流水线对共享微代码定序器的乱序访问的方法、系统和装置
CN116501389B (zh) 指令缓冲单元、处理器及计算机系统
KR0175116B1 (ko) 명령 인출 및 해제제어를 함유한 슈퍼스칼라 마이크로프로세서명령파이프라인
KR100267089B1 (ko) 스칼라/벡터연산이조합된단일명령복수데이터처리
EP1220089B1 (en) Method for executing conditional branch instructions in a data processor and corresponding data processor
KR19980018071A (ko) 멀티미디어 신호 프로세서의 단일 명령 다중 데이터 처리
CN101615114A (zh) 完成两次乘法两次加法两次位移的微处理器实现方法
Lozano et al. A deeply embedded processor for smart devices
EP4315040A1 (en) Apparatuses, methods, and systems for instructions for downconverting a tile row and interleaving with a register
JP6307975B2 (ja) 演算処理装置及び演算処理装置の制御方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant