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

文档序号:6585931阅读:140来源:国知局
专利名称:有效提升指令融合的技术的制作方法
技术领域
一般来说,本发明的实施例涉及信息处理领域,更具体地说,涉及计算系统和微处 理器中的指令融合领域。
背景技术
指令融合是指将两个指令组合成单个指令的过程,其导致处理器内的一个操作 (或微操作“uop”)序列。存储在处理器指令队列(IQ)中的指令可在从IQ中读出之后以 及在发送到指令解码器之前或者在通过指令解码器解码之后进行“融合”。通常,在指令解 码前发生的指令融合称为“宏融合”,而在指令解码(例如,成为uop)后发生的指令融合称 为“微融合”。宏融合的一个例子是将比较(“CMP”)指令或测试(“TEST”)指令(“CMP/ TEST”)与条件转移(“JCC”)指令组合在一起。例如,CMP/TEST和JCC指令对可定期地在 循环末端出现在程序中,在其中进行比较,并基于比较的结果,采取或不采取分支。由于宏 融合可有效地增加指令吞吐量,所以希望能够找到尽可能多的机会来融合指令。对于在一些现有技术的处理器微体系结构中找到的指令融合机会,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读取、降低的指 令吞吐量以及过量功耗。

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


在附图的各图中示例性而非限制性地示出本发明的实施例,附图中相似的附图标 记指代相似的元件,其中图1示出可在其中使用本发明的至少一个实施例的微处理器的框图;图2示出可在其中使用本发明的至少一个实施例的共享总线计算机系统的框图;图3示出可在其中使用本发明的至少一个实施例的点对点互连计算机系统的框 图;图4示出可用于实现本发明的至少一个实施例的状态机的框图;图5是可用于执行本发明的至少一个实施例的操作的流程图;图6是在至少一个实施例中执行的操作的流程图。
具体实施例方式本发明的实施例可用于提高处理器中的指令吞吐量和/或减少处理器的功耗。在 一个实施例中,找到否则将错失的指令融合机会,并且因此进行指令融合。在一个实施例 中,通过以下方法来找到原本将错失的指令融合机会将从指令队列(IQ)中读取最后一个 指令的时间或者将从IQ中读取的最后一个指令发给解码阶段的时间延迟阈值周期数(a threshold number ofcycles),以使得可以提取任何随后的可融合指令,将它们存储在IQ 中(或者至少加以标识而不一定存储在IQ中),并且随后将它们与最后一个可融合指令进 行融合。在一个实施例中,将对第一可融合指令的读取或发送延迟阈值周期数可以提高处 理器性能,因为这样做可以避免将两个否则可融合的指令分开而不是作为单个指令来解码 和处理。阈值等待周期数的选择取决于其中使用特定实施例的微体系结构。例如,在一个 实施例中,阈值周期数可以是2,而在其他实施例中,阈值周期数可以多于或少于2。在一个 实施例中,阈值等待周期数提供了等待将存储在IQ中的随后可融合指令的最大时间量,同 时保持了相对于将可融合指令作为单独指令来处理在等待随后可融合指令方面的总体等 待时间/性能优势。在例如功率更关键的其他实施例中,阈值等待周期数可以更大,以便确 保不使用额外功率来单独处理这两个可融合指令,即使这些等待周期可能会引起指令吞吐 量的降低(虽然是暂时的)。图1示出可在其中使用本发明的至少一个实施例的微处理器。具体来说,图1示 出具有一个或多个处理器核105和110的微处理器100,每个处理器核分别具有与其相关联 的本地高速缓存107和113。图1中还示出共享高速缓冲存储器115,它可存储每个本地高 速缓存107和113中所存储的信息的至少一些信息的版本。在一些实施例中,微处理器100 还可包括未在图1中示出的其他逻辑,例如集成的存储器控制器、集成的图形控制器、以及用于执行计算机系统内的其他功能(例如I/O控制)的其他逻辑。在一个实施例中,多处 理器系统中的每个微处理器或多核处理器中的每个处理器核可包括逻辑119或以其他方 式与逻辑119相关联,以便根据至少一个实施例实现中断通信技术。该逻辑可包括电路、软 件或两者,以便实现比一些现有技术的实现更有效的指令融合。在一个实施例中,逻辑119可包括用于减小错失指令融合机会的可能性的逻辑。 在一个实施例中,当在IQ或其他提取指令存储结构中没有存储随后指令时,逻辑119延迟 从IQ中读取第一指令(例如CMP)。在一个实施例中,逻辑119使第一可融合指令的读取 或发送持续阈值周期数(例如两个周期),然后再读取IQ或将第一可融合指令发给解码器 或其他处理逻辑,使得如果可与第一指令融合的第二可融合指令尚未存储在IQ中(例如, 由于这两个可融合指令存储在存储器或高速缓存的不同存储边界中),那么不会错失融合 这两个可融合指令的机会。在一些实施例中,阈值可以是固定的,而在其他实施例中,阈值 可由用户或者根据独立于用户的算法改变、更改。在一个实施例中,第一可融合指令是CMP 指令,而第二可融合指令是JCC指令。在其他实施例中,第一和/或第二指令可以不是CMP 或JCC指令,而是任何可融合指令。此外,本发明的实施例可应用于融合多于两个指令。例如,图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相关联,以使得能够提高指令融合的效率。除了如图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相关联,以使得能够提高 指令融合的效率。在至少一个实施例中,在诸如IQ清除操作的一些中间操作发生(在第一和第二可 融合指令之间发生)之前,第二可融合指令可能没有存储在IQ中,从而导致错失融合这两 个否则可融合的指令的机会。在一个实施例中,其中高速缓存(或缓冲器)存储将要调度 (可能多次)以便由处理器执行的解码指令(在将其从IQ中读取和解码后)或uop (例如,“解码流缓冲器(decoded stream buffer) ” 或 “DSB”、“跟踪高速缓存(trace cache) ” 或 “TC”)的相关序列,第一可融合uop (例如CMP)可存储在高速缓存中,而在相同的可寻址范 围(例如,相同的高速缓存路径)内没有可融合的第二 uop (例如JCC)。这可在例如JCC横 跨高速缓存行(由于高速缓存错失)或横跨页边界(由于翻译后援缓冲器错失)的情况下 发生,在这种情况下,高速缓存可存储CMP而不存储JCC。随后,如果在存储CMP之后、但在 将JCC存储在高速缓存中之前将处理器核管线清除(例如,由于断言“清除”信号),那么高 速缓存只将CMP存储在它的路径之一中而不存储JCC。在随后查找存储CMP的高速缓存行时,高速缓存可将错失JCC解释为错失的访 问,并且可将JCC标记为下一个高速缓存填充操作的附加点。然而,因为CMP+JCC可作为 融合的而从IQ中读取,所以可能找不到这个附加点。因此,所请求的JCC可能不会与来自 IQ的将要填充的任何uop匹配,并且因此高速缓存将不能填充错失JCC,而是在预期融合 的CMP+JCC的行上继续错失。此外,在一个利用未决填充请求队列(PFRQ)来存储uop高 速缓存填充请求的实施例中,为特定的融合指令填充而保留的条目可能不会被解除分配 (deallocate)(因为预期的融合指令填充从未发生),并且可能一直保持无用,直到下一个 清除操作。在一个实施例中,每次访问错失的融合指令条目时都会发生PFRQ条目锁定,并 且因而可以防止对相同位置的任何随后填充。为了防止对PFRQ条目的不正确或不当锁定,在一个实施例中,可以使用状态机来 监视从IQ中读取的uop,以检测由于例如达到对应PFRQ条目的最后一个uop但没有检测 到填充起始点而完全错失具有该对应PFRQ条目的区域(例如,标记用于填充的区域)的情 况。在一个实施例中,当遇到这种情况时,状态机可导致对PFRQ条目解除分配。在其他实 施例中,在不存在两个可融合指令的情况下,可通过不在高速缓存中创建可从IQ中读取的 可融合指令来避免不当PFRQ条目锁定。例如,如果在CMP之后紧跟非JCC指令,则可在高 速缓存中创建融合指令条目,但是只有当从IQ中单独读出CMP时(例如,在阈值等待时间 到期之后),才不会将这个融合指令条目填充到高速缓存中。在其他实施例中,可对状态机 检测到跳过的填充区域的次数计数,可在跳过填充区域的次数达到某个阈值计数之后执行 高速缓存刷新或无效操作。然后,可从高速缓存移除该填充区域,并且随后重新填充这个融 合指令。图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中的状态机可在硬件逻 辑、软件、或其某个组合中实现。在其他实施例中,可以使用其他状态机或逻辑。图5示出可以结合本发明的至少一个实施例使用的操作的流程图。在操作501,确定IQ中当前访问的指令是否可与任何随后指令融合。如果不能,则在操作505,从IQ中访 问下一个指令,并将延迟计数复位。如果可以,则在操作510,将延迟计数器递增,并且在操 作515,确定是否达到延迟计数阈值。如果没有达到,那么在操作520,不对当前访问的指令 执行任何指令融合。如果达到了,则在操作505,从IQ中访问下一个指令,并将延迟计数复 位。在其他实施例中,可执行其他操作以提高指令融合的效率。图6示出可以结合至少一个实施例执行的操作的流程图。为了在具有多个解码器 电路的处理器中执行一个实施例,有益的是确保在能够解码融合指令的特定解码器电路上 解码第一可融合指令。在图6中,在操作601,确定特定指令是否是融合指令对中的第一指 令。如果不是,那么在操作605,发送融合指令。如果是,那么在操作610,确定在第一可融 合指令之后是否紧跟IQ中的有效指令。如果是,则在操作610,发送(issue)融合指令。如 果不是,则在操作615,确定是否将第一可融合指令发给能够支持融合指令的解码器。在一 个实施例中,解码器-0能够解码融合指令。如果没有将第一可融合指令发给解码器-0,那 么在操作620,将第一可融合指令移动或“撤掉(nuke)”到不同的解码器,直到它对应于解 码器-0。在操作625,将计数器设置为初始值N,并且在操作630,如果在该指令之后是有效 指令,或者如果计数器为0,那么在操作635,发送融合指令。否则,在操作640,将计数器递 减,并且撤掉无效指令。在其他实施例中,计数器可递增到最终值。在其他实施例中,除了 撤掉操作外,其他操作也可清除无效指令。至少一个实施例的一个或多个方面可由存储在机器可读介质上的代表性数据实 现,这些代表性数据表示处理器中的各种逻辑,当由机器读取时其会导致机器构造逻辑以 执行本文描述的技术。这些称为“IP核”的表示可存储在有形机器可读介质(“磁带”)中, 并提供给各种客户或制造设施以加载到实际制造逻辑或处理器的制造机器中。因此,描述了用于指导微体系结构存储器区域访问的方法和装置。应该理解,上述 描述旨在说明性而非限制性。在阅读和理解上述描述之后,本领域技术人员将明白许多其 他实施例。因此,本发明的范围应参考随附权利要求以及赋予这些权利要求的等价物的全 部范围一起来确定。
权利要求
一种装置,包括指令队列(IQ);逻辑,用于将对第一可融合指令的处理延迟阈值时间量,使得如果在所述阈值时间量内将可与所述第一可融合指令融合的第二可融合指令存储在所述IQ中,那么可将所述第二可融合指令与所述第一可融合指令融合。
2.根据权利要求1所述的装置,其中在存储在所述IQ之前,所述第一可融合指令和所 述第二可融合指令跨越提取边界存储。
3.根据权利要求1所述的装置,其中只有当所述第一可融合指令是存储在所述IQ中的 最后一个指令时,所述逻辑才延迟对所述第一可融合指令的处理。
4.根据权利要求1所述的装置,其中所述逻辑包括计数器,所述计数器对于在所述第 一可融合指令存储在所述IQ中并且是所述IQ中的最后一个指令之后的每个周期递增一 次,直到达到对应于所述阈值时间量的阈值周期数。
5.根据权利要求1所述的装置,还包括状态机,所述状态机用于在存储在所述IQ中的 所述第一可融合指令和存储在所述IQ中的所述第二可融合指令之间执行中间指令时防止 填充缓冲请求队列(FBRQ)锁定对应于所述第一和第二可融合指令的条目。
6.根据权利要求5所述的装置,其中所述中间指令将导致清除所述IQ。
7.一种方法,包括确定指令队列(IQ)中当前访问的指令是否可与将存储在所述IQ中的任何随后指令融合;如果当前访问的指令与将存储在所述IQ中的随后指令不可融合,那么从所述IQ访问 下一个指令并将所述延迟计数器复位;如果当前访问的指令是可融合的并且是所述IQ中的最后一个指令,那么将所述延迟 计数器递增。
8.根据权利要求7所述的方法,还包括如果所述第一和第二指令是可融合的并且所 述延迟计数器没有达到阈值,那么将当前访问的指令与所述随后指令进行融合。
9.根据权利要求8所述的方法,还包括如果所述第一和第二指令是不可融合的,那么 将当前访问的指令与所述随后指令分开来处理。
10.根据权利要求8所述的方法,还包括如果所述延迟计数器已经达到所述阈值,那 么将当前访问的指令与所述随后指令分开来处理。
11.根据权利要求7所述的方法,还包括如果当前访问的指令和所述随后指令是可融 合的,并且在将随后指令存储在高速缓存中之前以及在将所述当前访问的指令存储在所述 高速缓存中之后执行中间事件,那么防止填充缓冲请求队列(FBRQ)锁定对应于所述当前 访问指令和所述随后指令的条目。
12.—种系统,包括存储设备,用于分别在第一和第二访问边界内存储第一和第二可融合指令;处理器,具有用于将所述第一和第二可融合指令提取到指令队列(IQ)中的提取逻辑;延迟逻辑,用于将从所述IQ中读取所述第一可融合指令的时间延迟阈值周期量;指令融合逻辑,用于在所述第一可融合指令之后以及在达到所述阈值周期量之前如果 将所述第二可融合指令存储在所述IQ中则融合所述第一和第二可融合指令。
13.根据权利要求12所述的系统,还包括计数器,如果所述第一可融合指令是所述IQ 中的唯一指令,则所述计数器递增;当达到所述阈值周期量时,所述计数器停止计数。
14.根据权利要求13所述的系统,其中如果在达到所述阈值周期量之前将所述第二可 融合指令存储在所述IQ中,则所述计数器将复位。
15.根据权利要求13所述的系统,其中如果在达到所述阈值周期量之前将所述第二可 融合指令存储在所述IQ中,则所述计数器将复位。
16.根据权利要求12所述的系统,其中所述存储设备包括指令高速缓存,并且所述第 一和第二边界的大小均为64字节。
17.根据权利要求12所述的系统,其中所述存储设备包括动态随机存取存储器,并且 所述第一和第二边界的大小均为4096字节。
18.根据权利要求12所述的系统,其中所述第一可融合指令是CMP/TEST指令,而所述 第二可融合指令是JCC指令。
19.根据权利要求18所述的系统,其中所述阈值周期数是2。
20.根据权利要求12所述的系统,还包括状态机,所述状态机用于在存储在所述高速 缓存中的所述第一可融合指令和存储在所述高速缓存中的所述第二可融合指令之间执行中间事件时防止填充缓冲请求队列(FBRQ)锁定对应于所述第一和第二可融合指令的条目。
全文摘要
一种用于在计算机系统中实现有效指令融合的技术。在一个实施例中,如果指令队列中的第一指令可与第二指令融合,那么处理器逻辑将对第二指令的处理延迟阈值时间量。
文档编号G06F9/30GK101901128SQ20091025308
公开日2010年12月1日 申请日期2009年10月30日 优先权日2008年10月30日
发明者I·欧奇尔, L·拉波波特, P·拉古文施, R·加波尔, R·瓦伦丁 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1