有效提升指令融合的技术的制作方法

文档序号:6537942阅读:174来源:国知局
有效提升指令融合的技术的制作方法
【专利摘要】一种用于在计算机系统中实现有效指令融合的技术。在一个实施例中,如果指令队列中的第一指令可与第二指令融合,那么处理器逻辑将对第二指令的处理延迟阈值时间量。
【专利说明】有效提升指令融合的技术
【技术领域】
[0001]一般来说,本发明的实施例涉及信息处理领域,更具体地说,涉及计算系统和微处理器中的指令融合领域。
【背景技术】
[0002]指令融合是指将两个指令组合成单个指令的过程,其导致处理器内的一个操作(或微操作“uop”)序列。存储在处理器指令队列(IQ)中的指令可在从IQ中读出之后以及在发送到指令解码器之前或者在通过指令解码器解码之后进行“融合”。通常,在指令解码前发生的指令融合称为“宏融合”,而在指令解码(例如,成为uop)后发生的指令融合称为“微融合”。宏融合的一个例子是将比较(“CMP”)指令或测试(“TEST”)指令(“CMP/TEST”)与条件转移(“JCC”)指令组合在一起。例如,CMP/TEST和JCC指令对可定期地在循环末端出现在程序中,在其中进行比较,并基于比较的结果,采取或不采取分支。由于宏融合可有效地增加指令吞吐量,所以希望能够找到尽可能多的机会来融合指令。
[0003]对于在一些现有技术的处理器微体系结构中找到的指令融合机会,CMP/TEST和JCC指令需要同时驻存在IQ中,使得当从IQ中读取这些指令时,可以将它们进行融合。然而,如果在IQ中存在可融合的CMP/TEST指令,并且尚未将进一步的指令写入IQ中(即,CMP/TEST指令是IQ中的最后一个指令),那么即使程序顺序中的下一个指令是JCC指令,仍会从IQ中读取CMP/TEST指令,并将它发送到解码器而不加以融合。举一个可能会出现错失融合机会的例子,如果CMP/TEST和JCC碰巧跨越(across)存储边界(例如,16字节边界),那么就会导致在一个周期内将CMP/TEST写入IQ,而在接下来的周期内写入JCC。在这种情况下,如果不存在停止(stalling)情形,那么就会在从IQ中读取CMP/TEST的同时或之后将JCC写入到IQ中,因此将错失融合机会,从而导致多个不必要的IQ读取、降低的指令吞吐量以及过量功耗。

【发明内容】

[0004]一种装置,包括:
[0005]指令队列(IQ);
[0006]逻辑,用于将对第一可融合指令的处理延迟阈值时间量,使得如果在所述阈值时间量内将可与所述第一可融合指令融合的第二可融合指令存储在所述IQ中,那么可将所述第二可融合指令与所述第一可融合指令融合。
[0007]该装置包括状态机,所述状态机用于在存储在所述IQ中的所述第一可融合指令和存储在所述IQ中的所述第二可融合指令之间执行中间指令时防止填充缓冲请求队列(fill buffer request queue)FBRQ锁定对应于所述第一和第二可融合指令的条目。
[0008]一种系统,包括:
[0009]存储设备,用于分别在第一和第二访问边界(access boundary)内存储第一和第二可融合指令;[0010]处理器,具有用于将所述第一和第二可融合指令提取到指令队列(IQ)中的提取逻辑;
[0011]延迟逻辑,用于将从所述IQ中读取所述第一可融合指令延迟阈值周期数;
[0012]指令融合逻辑,用于在所述第一可融合指令之后以及在达到所述阈值周期量之前如果将所述第二可融合指令存储在所述IQ中则融合所述第一和第二可融合指令。
【专利附图】

【附图说明】
[0013]在附图的各图中示例性而非限制性地示出本发明的实施例,附图中相似的附图标记指代相似的元件,其中:
[0014]图1示出可在其中使用本发明的至少一个实施例的微处理器的框图;
[0015]图2示出可在其中使用本发明的至少一个实施例的共享总线计算机系统的框图;
[0016]图3示出可在其中使用本发明的至少一个实施例的点对点互连计算机系统的框图;
[0017]图4示出可用于实现本发明的至少一个实施例的状态机的框图;
[0018]图5是可用于执行本发明的至少一个实施例的操作的流程图;
[0019]图6是在至少一个实施例中执行的操作的流程图。
【具体实施方式】
[0020]本发明的实施例可用于提高处理器中的指令吞吐量和/或减少处理器的功耗。在一个实施例中,找到否则将错失的指令融合机会,并且因此进行指令融合。在一个实施例中,通过以下方法来找到原本将错失的指令融合机会:将从指令队列(IQ)中读取最后一个指令的时间或者将从IQ中读取的最后一个指令发给解码阶段的时间延迟阈值周期数(athreshold number ofcycles),以使得可以提取任何随后的可融合指令,将它们存储在IQ中(或者至少加以标识而不一定存储在IQ中),并且随后将它们与最后一个可融合指令进行融合。在一个实施例中,将对第一可融合指令的读取或发送延迟阈值周期数可以提高处理器性能,因为这样做可以避免将两个否则可融合的指令分开而不是作为单个指令来解码和处理。
[0021]阈值等待周期数的选择取决于其中使用特定实施例的微体系结构。例如,在一个实施例中,阈值周期数可以是2,而在其他实施例中,阈值周期数可以多于或少于2。在一个实施例中,阈值等待周期数提供了等待将存储在IQ中的随后可融合指令的最大时间量,同时保持了相对于将可融合指令作为单独指令来处理在等待随后可融合指令方面的总体等待时间/性能优势。在例如功率更关键的其他实施例中,阈值等待周期数可以更大,以便确保不使用额外功率来单独处理这两个可融合指令,即使这些等待周期可能会引起指令吞吐量的降低(虽然是暂时的)。
[0022]图1示出可在其中使用本发明的至少一个实施例的微处理器。具体来说,图1示出具有一个或多个处理器核105和110的微处理器100,每个处理器核分别具有与其相关联的本地高速缓存107和113。图1中还示出共享高速缓冲存储器115,它可存储每个本地高速缓存107和113中所存储的信息的至少一些信息的版本。在一些实施例中,微处理器100还可包括未在图1中示出的其他逻辑,例如集成的存储器控制器、集成的图形控制器、以及用于执行计算机系统内的其他功能(例如I/O控制)的其他逻辑。在一个实施例中,多处理器系统中的每个微处理器或多核处理器中的每个处理器核可包括逻辑119或以其他方式与逻辑119相关联,以便根据至少一个实施例实现中断通信技术。该逻辑可包括电路、软件或两者,以便实现比一些现有技术的实现更有效的指令融合。
[0023]在一个实施例中,逻辑119可包括用于减小错失指令融合机会的可能性的逻辑。在一个实施例中,当在IQ或其他提取指令存储结构中没有存储随后指令时,逻辑119延迟从IQ中读取第一指令(例如CMP)。在一个实施例中,逻辑119使第一可融合指令的读取或发送持续阈值周期数(例如两个周期),然后再读取IQ或将第一可融合指令发给解码器或其他处理逻辑,使得如果可与第一指令融合的第二可融合指令尚未存储在IQ中(例如,由于这两个可融合指令存储在存储器或高速缓存的不同存储边界中),那么不会错失融合这两个可融合指令的机会。在一些实施例中,阈值可以是固定的,而在其他实施例中,阈值可由用户或者根据独立于用户的算法改变、更改。在一个实施例中,第一可融合指令是CMP指令,而第二可融合指令是JCC指令。在其他实施例中,第一和/或第二指令可以不是CMP或JCC指令,而是任何可融合指令。此外,本发明的实施例可应用于融合多于两个指令。
[0024]例如,图2示出可在其中使用本发明的一个实施例的前端总线(FSB)计算机系统。任何处理器201、205、210或215可访问来自位于处理器核223、227、233、237、243、247、253、257之一内或以其他方式与其相关联的任何本地一级(LI)高速缓冲存储器220、225、230、235、240、245、250、255的信息。此外,任何处理器201、205、210或215可访问来自共享二级(L2)高速缓存203、207、213、217中任何一个的信息,或通过芯片组265访问来自系统存储器260的信息。根据至少一个实施例,图2的处理器中的一个或多个处理器可包括逻辑219或以其他方式与逻辑219相关联,以使得能够提高指令融合的效率。
[0025]除了如图2所示的FSB计算机系统以外,还可以结合本发明的各种实施例使用其他系统配置,包括点对点(P2P)互连系统和环形互连系统。例如,图3中的P2P系统可包括几个处理器,其中只举例示出两个处理器370、380。处理器370、380均可包括与存储器32、34连接的本地存储器控制器集线器(MCH)372、382。处理器370、380可经由点对点(PtP)接口 350利用PtP接口电路378、388来交换数据。处理器370、380均可经由各自的PtP接口 352、354利用点对点接口电路376、394、386、398来与芯片组390交换数据。芯片组390也可以经由高性能图形接口 339与高性能图形电路338交换数据。本发明的实施例可位于具有任何数量的处理核的任何处理器内,或位于图3的每个PtP总线代理中。在一个实施例中,任何处理器核可包括本地高速缓冲存储器(未示出)或以其他方式与其相关联。此夕卜,在这两个处理器外部的任一处理器中可包含共享高速缓存(未示出),它也经由p2p互连与这些处理器连接,使得如果处理器处于低功率模式,则可将任一个或者两个处理器的本地高速缓存信息存储在共享高速缓存中。根据至少一个实施例,图3的处理器或核中的一个或多个处理器或核可包括逻辑319或以其他方式与逻辑319相关联,以使得能够提高指令融合的效率。
[0026]在至少一个实施例中,在诸如IQ清除操作的一些中间操作发生(在第一和第二可融合指令之间发生)之前,第二可融合指令可能没有存储在IQ中,从而导致错失融合这两个否则可融合的指令的机会。在一个实施例中,其中高速缓存(或缓冲器)存储将要调度(可能多次)以便由处理器执行的解码指令(在将其从IQ中读取和解码后)或uop (例如,“解码流缓冲器(decoded stream buffer) ” 或 “DSB”、“跟踪高速缓存(trace cache) ” 或“TC”)的相关序列,第一可融合uop (例如CMP)可存储在高速缓存中,而在相同的可寻址范围(例如,相同的高速缓存路径)内没有可融合的第二 uop (例如JCC)。这可在例如JCC横跨高速缓存行(由于高速缓存错失)或横跨页边界(由于翻译后援缓冲器错失)的情况下发生,在这种情况下,高速缓存可存储CMP而不存储JCC。随后,如果在存储CMP之后、但在将JCC存储在高速缓存中之前将处理器核管线清除(例如,由于断言“清除”信号),那么高速缓存只将CMP存储在它的路径之一中而不存储JCC。
[0027]在随后查找存储CMP的高速缓存行时,高速缓存可将错失JCC解释为错失的访问,并且可将JCC标记为下一个高速缓存填充操作的附加点。然而,因为CMP+JCC可作为融合的而从IQ中读取,所以可能找不到这个附加点。因此,所请求的JCC可能不会与来自IQ的将要填充的任何uop匹配,并且因此高速缓存将不能填充错失JCC,而是在预期融合的CMP+JCC的行上继续错失。此外,在一个利用未决填充请求队列(PFRQ)来存储uop高速缓存填充请求的实施例中,为特定的融合指令填充而保留的条目可能不会被解除分配(deallocate)(因为预期的融合指令填充从未发生),并且可能一直保持无用,直到下一个清除操作。在一个实施例中,每次访问错失的融合指令条目时都会发生PFRQ条目锁定,并且因而可以防止对相同位置的任何随后填充。
[0028]为了防止对PFRQ条目的不正确或不当锁定,在一个实施例中,可以使用状态机来监视从IQ中读取的uop,以检测由于例如达到对应PFRQ条目的最后一个uop但没有检测到填充起始点而完全错失具有该对应PFRQ条目的区域(例如,标记用于填充的区域)的情况。在一个实施例中,当遇到这种情况时,状态机可导致对PFRQ条目解除分配。在其他实施例中,在不存在两个可融合指令的情况下,可通过不在高速缓存中创建可从IQ中读取的可融合指令来避免不当PFRQ条目锁定。例如,如果在CMP之后紧跟非JCC指令,则可在高速缓存中创建融合指令条目,但是只有当从IQ中单独读出CMP时(例如,在阈值等待时间到期之后),才不会将这个融合指令条目填充到高速缓存中。在其他实施例中,可对状态机检测到跳过的填充区域的次数计数,可在跳过填充区域的次数达到某个阈值计数之后执行高速缓存刷新或无效操作。然后,可从高速缓存移除该填充区域,并且随后重新填充这个融合指令。
[0029]图4示出根据一个实施例的状态机,该状态机可用于避免由于IQ中错失的可融合指令而引起的不想要的PFRQ条目锁定情况。在状态401,IQ中的指令不在标记用于填充的区域中,“填充区域开始”信号指示IQ将要处理映射到填充区域的指令(根据高速缓存散列来自填充区域的指令),但不会从保存在PFRQ中的线性指令指针(“唇部(lip)”)开始(405)。这可导致状态机移到状态410。如果IQ中的下一个指令(不久将会对其解码)结束填充区域(例如,结束由高速缓存散列的行,或者是所采取的分支),则状态机导致对相应PFRQ条目解除分配415,并且状态机返回到状态401。然而,如果在状态401或在状态410时填充指针等于填充区域唇部(430),则状态机进入状态420,在状态420,访问位于填充区域中并且在填充开始点之后。从状态420,填充区域指示中的最后一个uop将会使状态机返回425到状态401,而不会对相应PFRQ条目解除分配。图4中的状态机可在硬件逻辑、软件、或其某个组合中实现。在其他实施例中,可以使用其他状态机或逻辑。
[0030]图5示出可以结合本发明的至少一个实施例使用的操作的流程图。在操作501,确定IQ中当前访问的指令是否可与任何随后指令融合。如果不能,则在操作505,从IQ中访问下一个指令,并将延迟计数复位。如果可以,则在操作510,将延迟计数器递增,并且在操作515,确定是否达到延迟计数阈值。如果没有达到,那么在操作520,不对当前访问的指令执行任何指令融合。如果达到了,则在操作505,从IQ中访问下一个指令,并将延迟计数复位。在其他实施例中,可执行其他操作以提高指令融合的效率。
[0031]图6示出可以结合至少一个实施例执行的操作的流程图。为了在具有多个解码器电路的处理器中执行一个实施例,有益的是确保在能够解码融合指令的特定解码器电路上解码第一可融合指令。在图6中,在操作601,确定特定指令是否是融合指令对中的第一指令。如果不是,那么在操作605,发送融合指令。如果是,那么在操作610,确定在第一可融合指令之后是否紧跟IQ中的有效指令。如果是,则在操作610,发送(issue)融合指令。如果不是,则在操作615,确定是否将第一可融合指令发给能够支持融合指令的解码器。在一个实施例中,解码器-O能够解码融合指令。如果没有将第一可融合指令发给解码器-0,那么在操作620,将第一可融合指令移动或“撤掉(nuke) ”到不同的解码器,直到它对应于解码器-O。在操作625,将计数器设置为初始值N,并且在操作630,如果在该指令之后是有效指令,或者如果计数器为0,那么在操作635,发送融合指令。否则,在操作640,将计数器递减,并且撤掉无效指令。在其他实施例中,计数器可递增到最终值。在其他实施例中,除了撤掉操作外,其他操作也可清除无效指令。
[0032]至少一个实施例的一个或多个方面可由存储在机器可读介质上的代表性数据实现,这些代表性数据表示处理器中的各种逻辑,当由机器读取时其会导致机器构造逻辑以执行本文描述的技术。这些称为“IP核”的表示可存储在有形机器可读介质(“磁带”)中,并提供给各种客户或制造设施以加载到实际制造逻辑或处理器的制造机器中。
[0033]因此,描述了用于指导微体系结构存储器区域访问的方法和装置。应该理解,上述描述旨在说明性而非限制性。在阅读和理解上述描述之后,本领域技术人员将明白许多其他实施例。因此,本发明的范围应参考随附权利要求以及赋予这些权利要求的等价物的全部范围一起来确定。
【权利要求】
1.一种用于提升有效指令融合的处理器,所述处理器包括: 指令队列(IQ); 延迟逻辑组件,在没有存储在所述IQ中的后续指令时将对第一可融合指令的处理延迟阈值量的时钟周期。
2.如权利要求1所述的处理器,包括: 解码器,对所述第一可融合指令进行解码,其中可与所述第一可融合指令融合的第二可融合指令将通过所述解码器与所述第一可融合指令融合,如果在所述阈值量的时钟周期内所述第二可融合指令被存储在所述IQ中的话。
3.如权利要求2所述的处理器,其中所述第一可融合指令和所述第二可融合指令在被存储在所述IQ中之前被跨越指令提取边界存储。
4.如权利要求1所述的处理器,包括: 状态逻辑组件,防止填充缓冲请求队列(FBRQ)锁定对应于所述第一和第二可融合指令的条目,如果在所述第一可融合指令被存储在高速缓存中和所述第二可融合指令被存储在所述高速缓存中之间执行中间事件的话。
5.如权利要求4所述的处理器,其中所述中间事件要引起所述IQ被清除。
6.如权利要求1所述的处理器,其中周期的阈值数目为2。
7.如权利要求1所述的处理器,包括: 计数器,如果所述第一可融合指令是所述IQ中的唯一指令则递增,并且当所述阈值量的周期已经到达时或者当所述第一`可融合指令不是所述IQ中的唯一指令时停止计数。
8.如权利要求1所述的处理器,其中所述第一可融合指令是CMP/TEST指令,并且所述第二可融合指令是JCC指令。
9.如权利要求1所述的处理器,包括: 计数器,如果在所述IQ中所述第一可融合指令被有效第二可融合指令跟随则递减,并且当所述阈值量的周期已经被消耗时或者当在所述IQ中所述第一可融合指令被所述有效第二可融合指令跟随时停止计数。
10.如权利要求9所述的处理器,其中,在所述阈值量的周期已经被消耗之前如果所述有效第二可融合指令被存储在所述IQ中,则所述计数器要复位。
11.一种用于提升有效指令融合的方法,所述方法包括: 在指令队列(IQ)中存储第一可融合指令; 确定后续指令是否被存储在所述IQ中; 在没有存储在所述IQ中的后续指令时,延迟对所述第一可融合指令的处理阈值量的时钟周期。
12.如权利要求11所述的方法,包括: 当在所述IQ中所述第一可融合指令没有被有效第二可融合指令跟随时,将计数器递减;和 当所述阈值量的周期已经被消耗时或者当在所述IQ中所述第一可融合指令被所述有效第二可融合指令跟随时,停止所述计数器。
13.如权利要求11所述的方法,其中所述第一可融合指令是CMP/TEST指令,并且所述第二可融合指令是JCC指令。
14.如权利要求11所述的方法,包括: 如果所述第一可融合指令是所述IQ中的唯一指令,则将计数器递增;和 在所述阈值量的周期已经到达时或者当所述第一可融合指令不是所述IQ中的唯一指令时,停止所述计数器。
15.如权利要求11所述的方法,其中周期的阈值数目是2。
16.如权利要求11所述的方法,包括: 防止填充缓冲请求队列(FBRQ)锁定对应于所述第一可融合指令和第二可融合指令的条目,如果在所述第一可融合指令被存储在高速缓存中和所述第二可融合指令被存储在所述高速缓存中之间执行中间事件的话。
17.如权利要求16所述的方法,其中所述中间事件要引起所述IQ被清除。
18.如权利要求11所述的方法,包括: 解码所述第一可融合指令,其中可与所述第一可融合指令融合的第二可融合指令要通过所述解码器与所述第一可融合指令融合,如果在所述阈值量的时钟周期内所述第二可融合指令被存储在所述IQ中的话。
19.如权利要求18所述的方法,其中所述第一可融合指令和所述第二可融合指令在被存储在所述IQ中之前被跨越指`令提取边界存储。
【文档编号】G06F9/30GK103870243SQ201410054184
【公开日】2014年6月18日 申请日期:2009年10月30日 优先权日:2008年10月30日
【发明者】I.欧奇尔, L.拉波波特, R.瓦伦丁, R.加波尔, P.拉古文施 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1