具有世代重命名的计算机处理器的制造方法

文档序号:9287722阅读:354来源:国知局
具有世代重命名的计算机处理器的制造方法
【专利说明】
[0001] 相关申请的交叉引用
[0002] 该非临时性申请要求保护于2014年4月25日提交的题为"具有世代重命名的计 算机处理器"的美国临时申请号61/984, 709、于2014年4月25日提交的题为"零开销循环" 的美国临时申请号61/984, 710,、于2014年4月25日提交的题为"分支预测"的美国临时 申请号61/984, 711、于2014年4月25日提交的题为"解读机构(stuntbox)"的美国临时 申请号61/984, 708、于2014年4月25日提交的题为"用于VLIW处理器中的加载/存储调 度的资源锁定"的美国临时申请号61/984, 707、以及于2014年4月25日提交的题为"具有 世代号的重命名"的美国临时申请号61/984, 706的权益,通过引用将所有公开内容结合在 此。
技术领域
[0003] 本公开整体涉及计算机处理器。
【背景技术】
[0004] 半导体制造的超前发展使得可以整合集成电路中的大量逻辑线路。从而,这又导 致了数字系统架构的超前发展。数字系统架构中从包括单集成电路中的各种逻辑线路的功 能而受益极大的一方特殊领域就是处理器设计。

【发明内容】

[0005] 根据本发明的一个方面,提供了一种处理器,包括:预留队列(reservation queue);重命名器,所述重命名器耦接至所述预留队列并且被配置为产生世代号 (generationnumber)且将所述世代号通信至所述预留队列;寄存器,所述寄存器耦接至所 述预留队列并且被配置为存储值;执行管线(executionpipe),所述执行管线耦接至所述 预留队列;以及缓冲器,所述缓冲器耦接至所述执行管线并且被配置为接收所述执行管线 的输出,并且所述缓冲器进一步耦接至所述预留队列且被配置为将所述执行管线的所述输 出通信至所述预留队列。
[0006] 根据一个实施方式,该处理器进一步包括:小型重置DHLGshare分支预测单元。
[0007] 根据一个实施方式,该处理器进一步包括:加载/存储单元,所述加载/存储单元 被配置为调度对多个队列加载和存储指令中的每个的内存的访问;其中,所述加载/存储 单元包括被配置为防止冲突的内存操作被同时调度的资源锁定电路。
[0008] 根据本发明的另一个方面,提供了一种处理器,包括:指令高速缓存(instruction cache);指令解码器,所述指令解码器耦接至所述指令高速缓存;预留队列,所述预留队列 耦接至所述指令解码器;寄存器,所述寄存器耦接至所述预留队列并且被配置为存储值; 小型重置DHLGshare分支预测单元,所述小型重置DHLGshare分支预测单元親接至所述 指令高速缓存并且被配置为生成地址且将所述地址通信至所述指令高速缓存;执行管线, 所述执行管线耦接至所述预留队列;缓冲器,所述缓冲器耦接至所述执行管线并且被配置 为接收所述执行管线的输出,并且所述缓冲器进一步耦接至所述预留队列且被配置为将所 述执行管线的所述输出通信至所述预留队列。
[0009] 根据本发明的另一个方面,提供了一种处理器,包括:指令高速缓存;指令解码 器,所述指令解码器耦接至所述指令高速缓存;分支预测单元,所述分支预测单元耦接至所 述指令高速缓存并且被配置为生成指令地址且将所述指令地址提供至所述指令高速缓存; 寄存器堆(registerfile),所述寄存器堆被親接至接收寄存器地址;重命名器单元,所述 重命名器单元耦接至所述指令高速缓存并且耦接至所述指令解码器;多个预留队列,所述 多个预留队列中的每个预留队列均耦接至所述寄存器堆、所述指令解码器、以及所述重命 名器单元;多个执行管线,所述多个执行管线中的每个执行管线均耦接至所述多个预留队 列中的相应一个,并且被配置为从所述多个预留队列中的所述相应一个接收指令和数据且 执行所述指令;解读机构(stuntbox),所述解读机构親接至所述多个执行管线中的每个执 行管线并且被配置为接收所述多个执行管线中的每个执行管线的输出;其中,所述寄存器 堆被配置为响应所述指令解码器的输出提供指令中指定为寄存器来源的内容;并且所述重 命名器被配置为响应所述指令解码器的所述输出同时提供世代号。
[0010] 根据一个实施方式,所述分支预测单元包括小型重置DHLGshare分支预测器。 [0011] 根据一个实施方式,所述指令高速缓存被配置为接收并且存储VLIW指令。
[0012] 根据一个实施方式,所述解读机构的输出耦接至所述多个执行管线中的每个执行 管线的输入,并且进一步耦接至所述多个预留队列中的每个预留队列的输入。
[0013] 根据一个实施方式,处理器进一步包括:加载/存储单元,所述加载/存储单元耦 接至所述解读机构并且耦接至所述寄存器堆;和内存,所述内存耦接至所述加载/存储单 元;其中,所述加载/存储单元被配置为接收来自所述解读机构的输入并且接收来自所述 寄存器堆的输入。
[0014] 根据一个实施方式,所述多个预留队列中的每个预留队列均被配置为存储指令操 作码、目的地寄存器地址、以及目的地寄存器世代号。
[0015] 根据一个实施方式,所述多个预留队列中的每个预留队列进一步被配置为存储第 一源寄存器地址、第一寄存器世代号、第一寄存器值、第一有效位、第二源寄存器地址、第二 寄存器世代号、第二寄存器值、以及第二有效位。
[0016] 根据一个实施方式,所述指令解码器识别指定成对寄存器操作的指令。
[0017] 根据一个实施方式,所述寄存器堆包括多个寄存器;并且所述重命名器单元包括 用于所述多个寄存器中的每个寄存器的寄存器重命名块。
[0018] 根据一个实施方式,所述解读机构被配置为将双宽输出(pair-wideoutput)和单 宽输出(single-wideoutput)同时放置在所述操作数复制网络上。
[0019] 根据一个实施方式,处理器进一步包括指令取出单元。
[0020] 根据一个实施方式,所述指令取出单元包括:循环计数寄存器,所述循环计数寄存 器被配置为存储循环计数值或者存储推测性循环计数值;循环开始寄存器,所述循环开始 寄存器被配置为存储循环开始地址;以及循环匹配寄存器,所述循环匹配寄存器被配置为 存储循环匹配地址。
[0021] 根据一个实施方式,所述指令取出单元耦接至所述指令解码器和SIN分配器,并 且所述指令取出单元被配置为将指示表示推测性循环执行的循环计数值的信号提供给所 述SIN分配器。
[0022] 根据一个实施方式,所述指令解码器耦接至所述循环计数寄存器、所述循环开始 寄存器、以及所述循环匹配寄存器。
[0023] 根据一个实施方式,所述指令取出单元被配置为生成循环匹配信号。
[0024] 根据一个实施方式,所述指令解码器被配置为从所述指令取出单元接收所述循环 匹配信号。
【附图说明】
[0025] 参考附图描述了示例性实施方式。在附图中,类似参考标号指相同或者功能相似 的元件。此外,参考标号中最左侧的数字确定其中参考标号首先出现的附图。
[0026] 图1是示例性处理器的高级框图。
[0027] 图2是实现寄存器重命名的示例性处理器的高级框图。
[0028] 图3是示出了根据示例性实施方式的寄存器重命名过程的流程图。
[0029] 图4是具有资源锁定的示例性处理器的高级框图。
[0030] 图5是示出了根据示例性实施方式的状态确定过程的流程图。
[0031] 图6是示出了根据示例性实施方式的指令状态更新过程的流程图。
[0032] 图7是实现解读机构的示例性处理器的高级框图。
[0033] 图8是实现解读机构的另一示例性处理器的高级框图。
[0034] 图9是示出了根据示例性实施方式的结果选择过程的流程图。
[0035] 图10示出了根据本公开的实施方式的示例性分支预测单元。
[0036] 图11进一步详细地示出了根据本公开的实施方式的分支预测单元。
[0037] 图12示出了根据本公开的实施方式的全局分支历史寄存器的示例性更新。
[0038] 图13示出了根据本公开的实施方式的全局分支历史寄存器的预置。
[0039] 图14示出了根据本公开的实施方式的提供访问更大分支历史表中的条目的索引 的示例性系统。
[0040] 图15示出了根据本公开的实施方式的提供访问小型分支历史表、混合选择器、以 及更新计数器中的每一个中的条目的索引的系统。
[0041] 图16示出了根据本公开的实施方式的用于更新存储在大型分支历史表和小型分 支历史表中的分支预测条目的示例性状态机。
[0042] 图17示出了用于实现根据本公开的实施方式的零开销(zerooverhead)循环的 架构的一部分。
[0043] 图18示出了用于实现根据本公开的实施方式的零开销循环的架构的一部分。
[0044] 图1至图18示出了本领域中易于实施的各个部件、其布置、以及互连,图不一定按 比例绘制。
【具体实施方式】
[0045] 下列细节描述参考了示出示例性实施方式的附图。在细节描述中,参考"一种示例 性实施方式"、"示出性实施方式"、"示例性实施方式"等指所描述的示例性实施方式可包括 具体特性、结构、或者特征,但是,每种示例性实施方式不一定必须包括该具体特性、结构、 或者特征。而且,该短语不一定必须指相同的示例性实施方式。此外,当结合示例性实施方 式描述具体特性、结构、或者特征时,相关领域技术人员利用常识结合其他示例性实施方式 (无论是否明确进行描述)影响该特性、结构、或者特征。
[0046] 出于示出性之目的而非限制之目的提供此处所描述的示例性实施方式。其他示例 性实施方式是可以的,并且在本公开的实质和范围内可以对示例性实施方式做出更改。
[0047] 应当理解的是,此处的措辞或者术语出于描述而非限制之目的,由相关领域技术 人员根据此处的教导解释本说明书的术语或者措辞。
[0048] 术语
[0049] 在电子领域中,术语"芯片"、"裸片"、"集成电路"、"半导体器件"、以及"微电子器 件"等通常可相互使用。
[0050] 如此处使用的,FET指金属氧化物半导体场效应晶体管(M0SFET)。n沟道FET被 称之为NFET。p沟道FET被称之为PFET。
[0051] CMOS是代表互补金属氧化物半导体的简称,并且指其中NFET和PFET形成在同一 芯片上的半导体制造工艺。
[0052] CMOS电路指其中一起使用NFET和PFET的电路。
[0053] SoC是代表片上系统的简称,并且指包括通常通过总线互连的两个或者多个电路 块的芯片,其中,这些电路块提供如此高级的功能以至于之前将这些块视为系统级部件。例 如,至今,具有必备功能的电路块包括标量、超标量、以及极长指令字处理器、DRAM控制器 (例如,DDR3、DDR4、以及DDR5)、闪存存储控制器、通用串行总线(USB)控制器等。该列表旨 在为示出性并且并不具有限制性。描述SoC的另一种常见方式是包括实现诸如计算机系统 或者基于计算机的系统等电子系统所需的所有部件的芯片。
[0054] VLIW是极长指令字的简称。
[0055] 如在此处描述示例性实施方式时所使用的,VLIW指令指用于呈现给指令解码器的 分组到一起的一组指令。该组指令中的独立指令被分配给用于执行指令的多个执行管线中 的一个。
[0056] ICO指到指令高速缓存的输入端上的伪阶段(pseudo-stage)。
[0057] IC1指指令高速缓存阶段。在该周期中,发出对指令高速缓存的取出请求,并且同 时计算以确定下一步取出哪一PC。在该阶段,提供之前请求的VLIW指令。
[0058] DE1指的是指令解码器的第一阶段。
[0059] DE1_操作指在指令解码器的第一阶段中执行的逻辑操作。
[0060] DE1_时间指其中执行DE1_操作的一个周期。
[0061] DE2指的是指令解码器的第二阶段。
[0062] DE2_操作指在指令解码器的第二阶段中执行的逻辑操作。
[0063] 0£2_时间指其中发生读取和重命名通用寄存器堆(GRF)和预测寄存器堆(PREG) 的一个周期。
[0064] RS指预留站。存在若干个不同预留站,指令或操作可被入队(enqueue)至这些预 留站。在最佳情况下,这是一个单周期阶段,然而,在这里,操作可在多个周期中结束排队。 [0065] Exn指执行管线的第n个阶段。执行管线的实施例包括ALU短管线和长管线、 BRANCH、以及加载存储单元。
[0066]SHP指短执行管线。使用短执行管线执行单周期操作。
[0067]L0P指长执行管线。使用长执行管线执行需要2至8个周期才可完成的指令。 [0068]LSU指加载存储单元。
[0069]DTCM指数据紧密耦接内存。
[0070]PBUS指连接至外围内存的总线。
[0071 ] DCACHE指用于缓存访问外围内存的数据缓存。
[0072] 入队指其中将DE2中的VILW指令分割成其分量操作并且然后使管线向下前移至 预留站中的动作。
[0073] 发布指将操作从预留站移至执行单元。当操作从预留站移至执行单元时,操作被 称之为发布。操作是VLIW指令的组成部分。
[0074] 当前PC指用于当前在给定阶段中的指令的程序计数器(PC)的值。管线的每个阶 段具有自身版本的当前PC。
[0075] 下一PC指从Icache取出的下一个PC。对于直线码,则为当前PC+当前指令宽度, 对于重定向码,则为新目标PC。
[0076] 循环开始地址指循环体中的第一指令的地址,S卩,被分支到以开始新循环迭代的 地址。
[0077] 循环结束地址指循环体之后的第一指令的地址,S卩,被分支到以自然退出该循环 的地址。
[0078] 循环体指以循环开始地址开始并且以循环匹配地址结束的指令。
[0079] 循环匹配地址指循环体中的最后指令的地址。
[0080] 循环计数指应执行的循环的迭代次数。这来自用于LOOP操作的中间字段,或者来 自用于一个ZL00P和多个ZL00P操作的通用寄存器。
[0081] SIN指推测索引号,S卩,用于识别在分支附近处被推测地入队的指令。
[0082] SIN决策指确定是否正确推测分支。在EX1中执行SIN决策。
[0083] SIN验证指EX1中正确推测的分支,其从而对与正确推测分支附近处的操作相关 联的SIN进行验证。验证操作是更新架构状态的一种操作。
[0084] SIN撤消指的是EX1中不正确推测的分支,其从而将撤消所有突出的SIN并且执行 EX1重定向,从而从执行管线有效移除位于分支附近的所有操作。在一种实施方式中,移除 位于不正确推测分支附近的操作包括改变与执行管线中的每个指令相关联的位的状态。
[0085] 状态一致性执行(SCE)指由内部机构执行的防止未来操作发生不一致机器状态 的动作。
[0086] 捕获事件指同步、异步、以及故障事件的集合。
[0087]同步捕获事件涉及特定指令并且被及时检测,以防止导致该事件的指令入队。管 理程序调用(SVC)指令填充该目录。由于同步捕获事件发生在指令流中的架构限定位置, 所以其比较精确。
[0088] 异步捕获事件(中断)与当前指令序列单独发生。异步异常符合这种情况。
[0089] 故障捕获事件防止程序流恢复。故障捕获事件的例子是未对准PC和数据中止。具 有寄存器目的地的故障操作必须完成寄存器值。
[0090] 处理器概况
[0091]公开了一种处理器架构,该处理器架构包括具有多个寄存器的寄存器堆、被配置 为用于乱序指令执行、并且进一步包括重命名器单元,重命名器单元产生与寄存器堆地址 相关联的世代号,从而提供与现有版本的寄存器临时偏移的重命名版本的寄存器、而非指 定非程序员可见物理寄存器作为重命名寄存器。处理器架构包括耦接至指令高速缓存并且 被配置为将推测性地址提供至指令高速缓存的小型重置双重历史长度(DHUGshare分支 预测单元。处理器架构适于实现集成电路。通常,但不一定必须是,利用CMOS线路实现集 成电路。
[0092] 在示例性实施方式中,在作为嵌入式处理器的集成电路中实现根据本公开的处理 器。
[0093] 图1是示出了根据本公开的示例性处理器的主要块的高级框图。示例性处理器包 括指令高速缓存102,指令高速缓存102被耦接为从分支预测单元104接收VLIW指令地址, 并且进一步被耦接为将输出提供至分支预测单元104、指令解码器106、寄存器堆108、以及 世代重命名器110。世代重命名器110耦接至分支执行单元118以接收SIN控制信号、耦接 至SIN分配器以接收SIN号、耦接至解读机构124以接收来自操作数(oprand)复制网络的 输出、并且耦接至分支预留队列112、执行管线预留队列114六、1148、114(:、1140、和加载/存 储预留队列116。寄存器堆108耦接至解读机构124,以接收来自操作数复制网络的输入,并 且进一步耦接至分支预留队列112、执行管线预留队列114六、1148、114(:、1140、以及加载/ 存储预留队列116。分支预留队列112耦接至分支执行单元118。执行管线预留队列114A、 1148、114(:、1140各自分别耦接至相应的执行管线12(^、12(?、120(:、以及1200。执行管线 120A、120B、120C、以及120D各自耦接为将输出提供至解读机构124。执行管线120A、120B、 120C、以及120D各自分别耦接为将其输出提供回至其输入,并且每个进一步耦接至分支执 行单元118的输出,以接收SIN控制信号。内存122耦接至加载/存储单元116。并且加载 /存储单元116进一步耦接至系统总线126。
[0094] 指令高速缓存102保存之前通过指令取出单元(未示出)而取出的VLIW指令。通 常,从设置在处理器本身的外部的内存取出VLIW指令。分支预测单元104被示出为耦接至 指令高速缓存102。分支预测单元104提供供取出的VLIW指令的地址。如果请求的VLIW 指令存在于指令高速缓存102中,则将其提供给指令解码器106。如果请求的VLIW指令不 存在于指令高速缓存102中,则发生缓存未命中(miss),并且从设置在处理器外部的内存 取出请求指令。
[0095] 分支预测单元104具有若干种功能,其中包括提供指令高速缓存102所需的程序 计数值,以及整个处理器的不同阶段和逻辑块需要的程序计数值。对于连续执行的程序代 码,程序计数值仅通过刚刚取出的指令长度而改变。但是,当检测到分支指令时,分支预测 单元104则确定下一指令应从哪一地址取出什么。在该示例性处理其中红,分支预测单元 104使用小型重置DHLGshare分支预测机构来确定下一指令地址。
[0096]指令解码器106解码VLIW指令的内容并且将控制信息提供给处理器的各个其他 块。
[0097] 寄存器堆108包含预定数目的程序员可见寄存器。这些寄存器保存在程序执行过 程
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1