操作高速缓存的制作方法

文档序号:18235893发布日期:2019-07-24 08:42阅读:228来源:国知局
操作高速缓存的制作方法
本申请要求2016年12月9日提交的美国专利申请号15/374,727和2016年12月13日提交的欧洲申请号EP16203863.2的权益,所述申请以引用方式并入,如同在本文中充分地阐述。
背景技术
:传统上,经由具有指令高速缓存取出和指令解码级的流水线来分派指令。与固定长度指令相比,对于高带宽多指令每周期解码,诸如x86处理器中使用的那些可变长度指令引起相当大的额外硬件复杂性。这进而需要额外的流水线级进行指令流解析和解码,并且当必须重新开始流水线时,诸如在重定向指令取出的所采取或错误预测的分支上,这些额外级消耗额外的功率并且导致增加的时延。这限制了每周期总指令带宽,从而影响性能。还导致在不做有用的工作时消耗功率的更多空闲流水线级,直到来自重定向的指令沿流水线向下传播为止。需要绕过这些额外的解码级并且使操作(op)高速缓存(OC)中的指令服务流线化。附图说明可以从结合附图以举例的方式给出的以下描述中获得更详细的理解,在附图中:图1示出了根据某些实现方式的处理器的核心处理单元;图2示出了图1的核心处理单元的op高速缓存内的op高速缓存(OC)条目;图3示出了跨指令高速缓存行分开的指令的基本块以及op高速缓存内的多个相关联OC条目;图4示出了指令高速缓存、分支预测和OC流水线的过程的流程图;图5示出了op取出流水线的过程的流程图;图6示出了OC构建流水线的过程的流程图;图7示出了执行图4的指令高速缓存、分支预测和OC流水线的方法;图8示出了执行图5的OC取出流水线的方法;以及图9是可以实施一个或多个公开的实施方案的示例性装置的框图。具体实施方式op高速缓存(OC)是先前解码的指令、特别是已经从原始可变长度格式解码为固定长度规范格式的指令的高速缓存。代替使用传统指令高速缓存取出和指令解码流水线级,OC可以服务用于分派的指令。OC服务指令通过减小重定向流水线时延并且简化更宽的并行指令分派来改进每周期指令(IPC)计数,从而增加每周期总指令带宽。OC服务指令通过避免对重新取出和重新解码指令的需要并且通过减少流水线级在重定向时空闲的时间量来改进功率使用。OC在一组中提供多个链接以便服务高速缓存行中的任意数量的指令。OC通过物理地编索引和加标签而使得能够在线程之间共享其内容。OC通过与立即/位移存储共享op存储来最大化容量。OC含有固定长度格式的解码的指令。因此,OC不需要确定指令边界,也不需要从字节流中拾取单独指令。在使用OC时指令不需要解码成它们的组成部分(诸如前缀;操作代码(操作码);ModRM(在操作码之后的指定基于模式(Mod)、寄存器(R)和存储器(M)变量的地址计算的字节));SIB(操作码之后的指定基于变址(S)、索引(I)和基址(B)的地址计算的字节);以及例如,立即/位移字段)。公开了一种用于使用OC的系统和方法。所述系统和方法包括OC,所述OC用于高速缓存先前解码的基本指令块,其中基本指令块以分支的目标开始并且以分支指令结束,并且另外地,在这样的块跨越高速缓存行边界的情况下,所述基本指令块在此类边界处分成目标基本块和一个或多个顺序基本块,在所越过的每个连续高速缓存行边界处形成附加顺序块。所述OC包括多个物理地编索引且加标签的条目,以允许在线程之间共享那些条目。通过多种方式将所述OC链接起来,从而允许多个OC条目服务高速缓存行中的不同多个指令。所述OC的一部分能够存储op信息或立即/位移值直至最大容量。所述系统和方法包括使用OC执行指令取出直到高速缓存行或采取的分支的结束。这包括:接收基本块的预测取出指令以用作多个微标签的输入;将所接收的预测取出地址写入解耦队列中;以及确定所接收的取出地址是否命中多个微标签中的一者。如果取出地址命中多个微标签中的一者,则操作模式切换到OC模式。随后将取出地址转发到op高速缓存队列。所述系统和方法包括执行OC取出。这包括从OC队列读取取出地址并且使用它来访问OC标签阵列以针对OC命中来检查这样被访问的OC标签。如果比较返回没有命中,则将取出重定向到指令高速缓存中以进行传统取出处理。如果比较返回命中,则读取并解码OC数据阵列,并且输出任何立即/位移值、op和微代码条目地址。将立即/位移信息(如果存在的话)排入立即/位移队列;将op条目排入操作队列;并且将任何现有的微代码条目点地址排入条目地址队列。图1是根据某些实现方式的处理器100的核心处理单元105的高级框图和流程图。处理单元105包括,但不限于,向调度器和/或执行单元115提供操作(op)的解码器单元110。解码器单元110包括,但不限于,连接到指令高速缓存122和OC124的分支预测器120。指令高速缓存122进一步连接到解码器126。解码器126和OC124连接到op队列128。调度器和/或执行单元115包括,但不限于,整数调度器和/或执行单元130和浮点调度器和/或执行单元132,它们两者都连接到高速缓存134。高速缓存134进一步连接到L2高速缓存136、加载队列138和存储队列140。加载队列138、存储队列140和高速缓存134共同被称为加载存储(LS)单元139。整数调度器和/或执行单元130包括,但不限于,连接到调度器151的整数重命名器150,所述调度器151包括算术逻辑单元(ALU)调度器(ALSQ)152和地址生成单元(AGU)调度器(AGSQ)154。调度器151并且具体地ALSQ152和AGSQ154分别进一步连接到ALU156和AGU158。整数调度器和/或执行单元130还包括整数物理文件寄存器160。浮点调度器和/或执行单元132包括,但不限于,连接到调度器172的浮点重命名器170。调度器172进一步连接到乘法器174和加法器176。浮点调度器和/或执行单元132还包括浮点物理文件寄存器178。流水线处理器需要馈送到流水线中的稳定指令流。分支预测器120预测应取出哪个指令集并在流水线处理器中执行。取出这些指令并存储在指令高速缓存122中,并且当从指令高速缓存122读取时,所述指令被解码器126解码成op。OC124在解码器126生成op时对它们进行高速缓存。op队列128存储来自解码器126和OC124的op并将它们排队,以分派op进行执行。在常规流水线处理中,op队列将某些op(加载或存储op)直接分派到加载队列和/或存储队列,所述加载队列和/或存储队列保持有效载荷,诸如从op解码的控制信息和与op相关联的存储器地址。出于说明的目的,存储队列可以接受来自op队列的多个op并且在分派时间将有效载荷写入存储队列中。在地址生成时间,存储队列随后接收来自调度器的队列索引以指定处理哪个存储条目。调度器读出分派有效载荷并将其发送到分割逻辑以进行分割检查,并且发送到加载队列以在op流水线上进行可能的拾取。也就是说,常规流水线处理是相对于存储队列和加载队列的双程写入过程;一次在针对有效载荷的分派处并且再次在地址生成处以在存储器中生成地址。根据实现方式,仅将op分派到整数调度器和/或执行单元130和浮点调度器和/或执行单元132,而不是按照常规流水线处理直接写入加载队列138和存储队列140。具体地,将op:(1)经由整数重命名器150定向到调度器151;以及(2)经由浮点重命名器170定向到调度器172。调度器151将用于op的所有分派有效载荷(例如,用于存储op的分派有效载荷)保持在AGSQ154中。也就是说,AGSQ154保持op(例如,加载op和存储op),直到适当加载队列138和/或存储队列140中的队列条目可用为止。一旦队列条目可用并且寄存器160的来源准备就绪,AGSQ154就生成地址、读取分派有效载荷,并且将分派有效载荷发送到加载队列138和/或存储队列140。为了维持按年龄次序的操作或有序队列,每个存储op与特定队列条目或队列标识符相关联。具体地,调度器151需要知道AGSQ154何时可以执行地址生成以及调度器151何时可以将存储的数据(即,分派有效载荷)发送到存储队列140。因此,当特定队列可用时,由存储队列140将特定队列传送到AGSQ154。加载队列138和存储队列140向调度器151(AGSQ154和ALSQ152)发送提交解除分配信号,使得调度器151(AGSQ154和ALSQ152)可以更新其最陈旧的存储op存储队列索引,以实现地址生成或发送用于较新存储op的存储数据,因为这些较陈旧存储op解除分配并释放它们相应的存储队列条目。这可以例如通过在调度器151(AGSQ154和ALSQ152)处将来自加载队列138和存储队列140的输出(未示出)添加到输入来实施。加载op不一定是按年龄次序,并且可以使用本领域技术人员已知的其他技术来控制指令的执行顺序。在实现方式中,加载op可以与存储op类似地操作。一旦由AGSQ154执行地址生成并且根据需要将数据/分派有效载荷存储在加载队列138和存储队列140中,核心处理单元105就执行op。加载队列138和存储队列140分别返回用于加载op的数据和针对存储op执行写入。对于其他类型的操作,调度器151和调度器172在它们的相应来源准备就绪时向整数调度器和/或执行单元130和浮点调度器和/或执行单元132发布op。图2示出了OC124内的条目200。条目200被设计成保持每条目高达8个操作,以用于在一个时钟周期中同时分派。操作上,在实现方式中,条目200是在相应字节位置如图所示分配在字节信息250中的74个字节(总共592个位),如下。条目200包括条目信息210。条目200包括用于在图2中被标识为操作0至7的8个操作220的存储。利用用于与高达四个微代码指令对应的四个微代码条目点(UcodeEP)230的存储。如图2所示,这些微代码EP230存储在与操作220相同的位置(4)并且是所述操作的替代。在实现方式中,操作220是7个字节长,如字节250表示所示。立即和位移(Imm/Disp)信息240被包括在条目200内。在实现方式中,Imm/Disp信息240被格式化为在条目200的结束附近开始并且与用于操作220的存储部分地重叠,因为不经常使用操作220的这个部分。操作位置5、6和7可以根据需要存储操作或立即/位移值。在实现方式中,Imm/Disp信息240包括8个4字节条目。OC微标签内容与条目200相关联。微标签阵列是具有与条目阵列(高速缓存的数据部分)和整个标签阵列(OC标签)相同的索引和通路的单独物理结构。逻辑上,微标签阵列被视作相同阵列的一部分,但物理地是单独的并且在流水线中的不同点处使用,因此总的来说它们可以不被视作一个统一的单元。微标签阵列提供期望条目可能在或不在OC中的快速提示,而主OC标签阵列提供对命中或未命中的真实指示。表1中描述了OC微标签内容。表1OC微标签内容字段宽度描述有效1标签条目有效位。微标签13物理地址位的散列(PA[47:11]和PA[5:0])。OC标签内容与条目200相关联。标签阵列是单独的物理结构。标签阵列包括与条目阵列(高速缓存的数据部分)和微标签阵列(OC微标签)相同的索引和通路。逻辑上,标签阵列被视作相同阵列的一部分,但物理地是单独的并且在流水线的不同级处使用,因此总的来说它们可以不被视作一个统一的单元。表2中描述了OC标签内容。表2OC标签内容条目信息210包括每条目200而不是每操作220或每Imm/Disp信息240的混杂位。这个条目信息210包括表3中示出的信息。表3条目信息字段每个条目具有用于编号为0至7的高达8个操作220的存储。op被编码为56位。每个条目200具有用于高达4个32位Imm/Disp值240的专用存储。附加Imm/Disp240值(总计高达8)通过替换从最高编号的操作220(7)开始的操作220并且向下(根据需要)工作到操作220(5)来与操作220共享位存储。当Imm/Disp存储需要时,这减少可用数量的操作220。由于操作220是56位并且Imm/Disp信息240是32位,因此具有8个Imm/Disp信息240的条目可以含有最多5个操作220。64位的Imm/Disp信息240占用两个32位位置,如表4所示。表4Imm/Disp字段微代码EP230被设计成使得当条目含有任何微编码指令时,仅操作220(0至3)可以含有有效操作。操作220(4)用来存储1至4微代码EP230。在这种情况下,操作220(5至7)不能含有有效操作,但操作220(5至7)仍可以用于Imm/Disp信息240存储。这意味着最多4个操作220可以存储在含有任何微编码指令的条目中。除了其条目点存储之外,微编码指令仍消耗正常操作220位置。微代码EP230为14位。图3示出了OC条目在概念上如何与指令高速缓存行中的基本块排成行的示例。图3示出了跨越两个指令高速缓存行的两个基本块300以及多个相关联OC条目200。此处,基本块300包括四个OC条目310a、310b、310c、310d。OC条目310a、310b、310c、310d在两个高速缓存行350a、350b内对齐。第一OC条目310a对应于在分支目标330处开始的基本块的开始。它含有所述基本块的8个解码的指令。一旦完成第一OC条目310a(被示为完全地容纳在第一高速缓存行350a内),就存储第二OC条目310b。针对OC条目310b的指令也被容纳在第一高速缓存行350a内。在这种情况下,只有两个指令留在高速缓存行中,因此仅使用OC条目310b中的两个op,其中剩余的op存储保持为空。一旦完成第一OC条目310b(被示为完全地容纳在第一高速缓存行350a内),就存储第三OC条目310c。第三OC条目310c以高速缓存行350a中的最后指令开始,从而刚好跨过64B边界进入高速缓存行350b中。这个指令占用OC条目310c中的第一op位置,并且高速缓存行350b中的接下来(高达7个)指令填写OC条目310c中的剩余op。以类似于完成第一OC条目310a和第二OC条目310b的方式,一旦完成第三OC条目310c(被示为在第一高速缓存行350a和第二高速缓存行350b两者中),就存储第四OC条目310d。如图所示,第四OC条目310d被容纳在第二高速缓存行350b内。它可以以采取的分支或完全容纳在高速缓存行350b内的最后指令结束,或者出于说明的目的,仅以采取的分支结束。两个基本块300包括第一基本块300a和第二基本块300b(共同被称为基本块300)。基本块300完全地容纳在两个相邻高速缓存行350内。基本块300中的任一者可以是某一最大大小和对齐。如本实现方式所示和论述,这个大小和对齐对应于64B的高速缓存行。基本块300中的一者在高速缓存行的开始处开始(在顺序走入高速缓存行的情况下)或在采取的分支目标处开始。基本块300中的一者在高速缓存行的结束处(顺序走出)结束或在采取的分支指令的最后字节处结束。在实现方式中,高速缓存行350是64B对齐存储器区域。前两个OC条目310a、310b在第一基本块300a中。后两个OC条目310c、310d在第二基本块300b中。对于跨越基本块的指令(即,指令为多个字节)比如第三OC条目310c的第一指令360的情况,关于指令与哪个条目和基本块相关联存在一些余地。在实现方式中,跨越高速缓存行的指令与含有指令的结束字节的高速缓存行(基本块)相关联(在图3中,OC条目310c与基本块300b相关联)。这意味着,含有高速缓存行跨越指令的条目将始终具有所述指令作为所述条目中的第一指令。在实现方式中,基本块300中的一者跨越任意数量的OC条目310。在实现方式中,通过使用标签的顺序偏移字段进行链接来实现基本块对OC条目310的任意跨越,其中链接端点在预测采取的分支处。顺序偏移和顺序基本块字段还支持将基本块中的最后OC条目链接到顺序基本块中的第一OC条目。以此方式,OC条目的链接可以跨越多个基本块。图3中还示出了融合的指令。下文将论述这个融合的指令。图4示出了OC流水线的过程400的流程图。过程400提供流水线从指令高速缓存(IC)模式到op高速缓存模式的转变。在重置时,流水线处于IC模式。也就是说,经由指令高速缓存来执行取出。在IC模式下,所有的取出沿传统指令高速缓存取出和解码流水线向下递送。根据实现方式,过程400用来确定微标签是不是允许在OC模式下经由OC流水线来服务取出的命中。过程400开始跟踪或接收用来检查OC微标签的取出地址。OC微标签420利用取出地址来预测OC高速缓存中是否将存在命中。将取出地址提供到解耦队列(DQ)430并且输入到DQ绕过多路复用器(MUX)440。DQ430将分支预测(BP)流水线从指令高速缓存(IC)流水线(未示出)和OC流水线解耦,从而在活动流水线停止时允许取出请求排队。DQ430接收取出地址并被提供给OC取出重定向490,并且输出到DQ绕过MUX440。如果物理取出地址在微标签中命中,则模式切换到op高速缓存模式。这个匹配仅针对分支目标取出和重定向目标取出来完成,因为这些是取出流水线中已知指令开始位置的唯一时间。一旦在MUX440处接收到来自OC微标签420和DQ430的信息并且确定命中,就进行指令高速缓存到op高速缓存模式转变。op高速缓存保持停止,直到传统取出和解码流水线变空为止。一旦传统取出和解码流水线变空,它便解除停止,并且不早于在从解码流水线递送最后操作之后的周期而开始将操作递送到操作队列(OPQ)。给定转变到op高速缓存模式,op高速缓存队列(OCQ)460和MUX470随后从MUX440接收物理取出地址。OCQ460允许取出请求在OC流水线停止时排队,并且将输出的排队取出地址提供到OCQ绕过多路复用器(MUX)470。随后从OCQ460读取取出地址,或者如果OCQ460为空,则在新地址到达时绕过OCQ460,并且用于标签读取480中的OC标签阵列查找。使用由物理地址位10:6组成的组索引来读取标签阵列中的一组,并且将所述组中的8个通路中的每一者的标签地址与取出地址进行比较。如果8个通路中的一者中的地址匹配取出地址(以及上文表2中包括的其他条件),则命中OC,并且取出继续在OC流水线中处理。如果地址不匹配,则OC未命中并且用信号通知OC取出重定向490(这结合图5、特别是标签比较520更详细地描述)。图5示出了OC取出流水线的过程500的流程图。过程500通过接收取出地址505并将所述地址作为输入提供给OCQ460和OCQ绕过MUX470而开始,如上文关于图4所述。OCQ460为在OC流水线停止时接收的取出地址提供存储,从而将OC流水线与取出生成逻辑解耦。如果OCQ460中没有等待的取出地址,则MUX470选择取出地址505,否则它选择OCQ460中的下一等待地址并将其输出到标签读取480,所述标签读取480将选定的标签以及读取地址输出到OC标签比较520中。顺序偏移575与标签读取480被配置成循环,以提供顺序OC条目的链接。在op高速缓存模式下,IC不再读取IC微标签,并且在它读取op高速缓存微标签时,这仅仅用于确定有效的通路而不用于确定OC与IC流水线之间的整体命中/未命中或操纵。IC取出生成逻辑将顺序和分支目标取出递送到OC流水线,直到它接收到来自OC流水线的重定向为止,此时进入IC模式并且将取出沿传统指令高速缓存和解码流水线向下递送。这允许OC流水线控制何时切换回到IC模式,并且还确保在模式切换之后OC流水线中没有未提交的op,否则在新IC模式对管线写入解码之后所述未提交的op可能会被写入OPQ550中。在标签比较(cmp)520中将选定的标签与取出地址进行比较。如果没有命中,则OC经由OC取出重定向490将取出重定向到IC并且模式切换回到IC模式。如果存在由在标签cmp520中进行的比较确定的命中,则标签cmp520将OC数据阵列地址输出到数据阵列读取530。数据阵列读取530将含有高达8个op的被访问OC条目输出到解码540。解码540对OC条目中的op和其他信息执行一些简单的解码并且将输出提供到操作队列(OPQ)550、立即/位移队列(IDQ)560和条目地址队列(EAQ)570。OPQ550将待分派的op排队。IDQ560是立即/位移队列,并且EAQ570是微代码条目点队列,这在上文论述。OPQ550是将分派馈送到机器流水线的寄存器重命名部分150、170中的队列。一般来说,此类队列将流水线的区段解耦。OPQ550将op高速缓存流水线或传统解码流水线(取决于操作模式)级从分派流水线级解耦。这个解耦允许op高速缓存或传统解码流水线产生op并且具有用于所产生的op的存储,而不考虑下游流水线级(在这种情况下,分派级)是否能够提前。重定向和重新同步应优先考虑上文关于图5的正常模式转变。将重定向目标取出与如上所述的OC微标签进行匹配,并且匹配导致转变到op高速缓存模式,而不匹配导致在重定向地址处转变到IC模式。重新同步目标取出有时迫使转变到IC模式。这确保在OC中融合(见下文)的指令被解码并分派为单独的指令以用于适当的异常处理。在实现方式中,某些相邻指令(例如,比较指令紧跟着是分支指令)可以组合或融合到单个操作中以提高效率。在此类情况下,OC构建逻辑创建覆盖两个指令的单个OC条目,如图3中大体示为融合的指令。图6示出了OC构建流水线的过程600的流程图,所述OC构建流水线是传统解码流水线的延伸。过程600将解码的指令序列安装到OC中。在构建期间,累积解码的指令直到出现以下中的最早一者为止:(1)获取第8个操作,(2)获取第8个Imm/Disp,(3)操作与Imm/Disp共享空间之间将出现冲突,(4)如果存在任何微编码指令,则是获取第4个操作,(5)遇到延伸超过高速缓存行的结束的指令,(6)遇到预测采取的分支指令,或(7)遇到两个以上具有相关联分支预测的指令。向OC提供的取出地址是分支目标地址或顺序取出地址,后者指向连续64B块。当取出窗口含有预测采取的分支指令时,取出地址伴随着取出窗口终止偏移,所述取出窗口终止偏移定位高速缓存行内的这个指令的最后字节。在OC条目构建过程期间,这个取出窗口终止偏移指示构建应在哪里停止。在OC取出过程期间,这指示待发送到OPQ的最后op。如果在没有预测采取所述分支时已经构建了OC条目,则这将导致中间退出点,所述中间退出点在比否则将由条目信息210NumOps字段指示的更早op位置终止op分派。如果通过有条件且预测采取的第一分支构建OC条目,那么当之后从OC取出所述条目时,如果预测不采取所述条件分支则有可能生成未命中,因为需要所述分支之后的顺序指令但所述顺序指令不存在于OC条目中。在那种情况下,将取出重定向到用于传统处理的IC,以便为落空的路径生成op,并且针对这个路径以所述分支之后的第一指令的开始点来开始新OC条目。过程600示出了op高速缓存条目的构建。在过程600中,解码器610(IC取出流水线中的传统解码器)向OC条目累加器620输出每周期高达4个解码的指令(op)和(当存在时)相关联imm/disp值和/或微代码条目点。OC条目累加器620向OC构建队列(OCBQ)630输出组合的OC条目内容和相关联取出地址。OCBQ630进而向OC微标签写入器640、OC标签写入器650和/或OC数据写入器660输出条目和标签,以分别写入OC微标签阵列、OC标签阵列和OC数据阵列。OCBQ630为若干OC条目和标签提供缓存,直到它们可以写入它们的OC存储位置为止。在实现方式中,为了节省功率并改进位速率,OC仅构建频繁使用的高速缓存行。指令高速缓存访问计数用作构建限定符。对于对应于从指令高速缓存以上的存储器层级满足的需求或预取请求(即,在指令高速缓存中未命中的请求)的取出,访问计数为零。对于在指令高速缓存中命中的每个后续取出,访问计数为一。访问计数的这种实施(在1处饱和)不需要指令高速缓存标签的任何存储,而是依赖于了解取出在指令高速缓存中是命中还是未命中。作为进一步简化,在实现方式中,指令高速缓存标签命中用作访问计数的代理(标签未命中对应于访问计数零,并且标签命中对应于访问计数一)。除了归因于使用标签信息的子集而出现指令高速缓存标签混淆的情况外,这种计数的准确性较高。在实现方式中,使用实际上实施与每个指令高速缓存行相关联的一个或多个计数位的方案,这花费标签位。当取出处于IC模式时,OC流水线可以进入构建模式。构建模式基于从解码流水线递送操作而开始和停止,如上文所指示。在实现方式中,op的构建在以下情况下开始:在IC模式下取出指令并且所述指令是分支目标、解码重定向目标(不包括重新同步)或OC重定向目标且其对应的高速缓存行满足指令高速缓存访问计数构建资格。在实现方式中,op的构建在以下情况下停止:取出切换到OC模式,指令的对应高速缓存行不满足指令高速缓存访问计数构建资格,所述指令是重新同步目标,处理器的操作模式以影响指令解码的方式改变,检测到非法或不完全的指令,或者无效的探查命中在构建流水线中处于飞行状态的指令。图7示出了使用OC执行指令取出直到高速缓存行或采取的分支的结束的方法700。在步骤710处,方法700接收预测的取出目标地址以用作微标签的输入。在步骤720处,将预测的取出地址写入DQ。在步骤730处,判定预测的取出地址是否命中微标签(可选地在IC模式下)。在步骤740处,基于步骤730的判定而作出是否需要切换模式(IC/OC)的判定。在步骤750处,如果切换到或留在OC模式,则将取出地址写入op高速缓存队列中。在步骤760处,从OC标签阵列读取标签。图8示出了执行图5的OC取出流水线的方法800。在步骤810处,方法800包括从OC标签阵列读取标签。在步骤820处,将取出地址与标签阵列(8路)中的标签进行比较。在步骤830处,如果步骤820的比较中存在命中,则读取数据阵列。如果步骤820中不存在命中,则在步骤840处,进行OC取出重定向并且方法800返回到方法700的步骤710。在步骤830中读取数据阵列之后,在步骤850处,对数据阵列输出(被访问的OC条目)执行相对简单的解码。在步骤860处,进行向OPQ、IDQ和EAQ的输出。在步骤870处,将op排入OPQ。在步骤880处,将立即/位移值排入IDQ。在步骤890处,将微代码条目排入EAQ。图9是可以实施一个或多个公开的实施方案的示例装置900的框图。装置900可以包括例如计算机、游戏装置、手持式装置、机顶盒、电视机、移动电话或平板计算机。装置900包括处理器902、存储器904、存储设备906、一个或多个输入装置908,以及一个或多个输出装置910。装置900还可以任选地包括输入驱动器912和输出驱动器914。应理解,装置900可以包括图9中未示出的附加部件。处理器902可以包括中央处理单元(CPU)、图形处理单元(GPU)、位于同一管芯上的CPU和GPU,或者一个或多个处理器核心,其中每个处理器核心可以是CPU或GPU。存储器904可以与处理器902位于同一管芯上,或可以与处理器902分开定位。存储器904可以包括易失性或非易失性存储器,例如随机存取存储器(RAM)、动态RAM或高速缓存。存储设备906可以包括固定存储设备或可移动存储设备,例如硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入装置908可以包括键盘、小键盘、触摸屏、触摸板、检测器、麦克风、加速计、陀螺仪、生物识别扫描器或网络连接(例如,用于发射和/或接收无线IEEE802信号的无线局域网卡)。输出装置910可以包括显示器、扬声器、打印机、触觉反馈装置、一个或多个灯、天线或网络连接(例如,用于发射和/或接收无线IEEE802信号的无线局域网卡)。输入驱动器912与处理器902和输入装置908通信,并且容许处理器902接收来自输入装置908的输入。输出驱动器914与处理器902和输出装置910通信,并且容许处理器902向输出装置910发送输出。应注意,输入驱动器912和输出驱动器914是任选部件,并且如果输入驱动器912和输出驱动器914不存在,则装置900将以相同方式操作。应理解,基于本文的公开内容,许多变型是可能的。尽管上文以特定组合描述了特征和元件,但是每个特征或元件可以在没有其他特征和元件的情况下单独使用,或者以具有或没有其他特征和元件的各种组合使用。所提供的方法可以在通用计算机、处理器或处理器核心中实现。合适的处理器包括例如通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、任何其他类型的集成电路(IC)和/或状态机。可以通过使用经处理的硬件描述语言(HDL)指令的结果和包括网表的其他中间数据(此类指令能够存储在计算机可读介质上)配置制造过程来制造此类处理器。这种处理的结果可以是掩模件,所述掩模件随后在半导体制造过程中用来制造实现实施方案的各方面的处理器。本文提供的方法或流程图可以用并入非暂时性计算机可读存储介质中以供通用计算机或处理器执行的计算机程序、软件或固件来实现。非暂时性计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储器装置、诸如内部硬盘和可移动磁盘的磁性介质、磁光介质以及诸如CD-ROM盘和数字通用盘(DVD)的光学介质。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1