于卷标边界自指令缓存至追踪缓存的转换的制作方法

文档序号:6501704阅读:111来源:国知局
专利名称:于卷标边界自指令缓存至追踪缓存的转换的制作方法
技术领域
本发明系有关微处理器的领域,尤有关具有追踪缓存的微处理器。
背景技术
以微处理器处理的指令系编码为,由一和零所组成的序列。对于某些微处理器架构而言,可以如某一数目的字节等的一固定长度将指令编码。对于诸如x86架构等的其它架构而言,指令的长度可以改变。x86微处理器架构指定可变长度的指令集(亦即,以不同数目的字节分别指定各指令的指令集)。例如,80386及后来的x86微处理器版本采用1至15个字节来指定一特定的指令。指令有可以是1至2字节的运算码,且可加入额外的字节,以便指定寻址模式、操作数、以及与所要执行的指令有关的额外细节。
在某些微处理器架构中,在执行之前,可将每一指令译码成一个或多个较简单的操作。将一指令译码也可能涉及存取一缓存器更名对应表(renaming map),以便决定指令中每一逻辑缓存器所对应到的实体缓存器,和/或分配用来储存该指令的结果的实体缓存器。
通常指令系以若干连续区块的方式自系统内存提取到指令缓存。这些区块中包含的指令系按照编译后的顺序而储存在指令缓存。在程序执行期间,如当在指令码内执行一支路时,通常系按照不同的顺序执行各指令。在此种情形中,通常无法在与支路指令相同的周期中自指令缓存提取在所执行的支路之后的指令,这是因为这些指令被储存在一些非连续的位置。为了尝试克服提取频宽的限制,许多超纯量微处理器(superscalar microprocessors)采用一追踪缓存(trace cache)。
追踪缓存不同于指令缓存的处在于。通常系按照执行顺序。而非按照编译后的顺序,储存追踪缓存中所储存的指令。按照执行顺序储存各操作时,可在单一周期中自追踪缓存存取含有执行的支路操作的指令序列,而自指令缓存存取相同的序列时,将需要数个周期。
超纯量微处理器通常在每一时脉周期中将数个指令译码。与在追踪缓存中以起始追踪地址译码的群组内的每一指令的地址匹配所需的硬件数量可能是过高的。因而可能增加了某些情形中决定追踪缓存中的一命中的困难度。

发明内容
本发明揭示了用来实施一微处理器的方法及系统的各实施例,该微处理器包含追踪缓存,并尝试唯有在卷标边界(label boundary)上将提取自指令缓存转变到追踪缓存。在一实施例中,微处理器可包含指令缓存、支路预测单元、及追踪缓存。在该支路预测单元输出支路指令的预测目标地址之前,预取单元可自该指令缓存提取指令。当该支路预测单元输出预测目标地址时,该预取单元可检查该追踪缓存中是否有与该预测目标地址匹配的登录。如果发现匹配,则该预取单元可不自该指令缓存提取指令,而是自该追踪缓存提取一个或多个追踪。
当支路预测单元遇到预测要采取支路的支路指令时,该支路预测单元可输出预测目标地址。例如,这将是任何无条件支路指令或预测将要满足支路条件的任何有条件支路指令的情形。当该微处理器的任何组成部分发现已发生支路错误预测时,该支路预测单元亦可输出预测目标地址。当有条件支路指令已进入执行管线时,功能单元可评估当必要数据为有效时的相关联的支路条件。在一些情形中,纵使在先前提取指令时预测不要采取某一支路,上述的评估也可能使得该支路受到采取。也可能发生相反的情形,且任何一种情形都可能造成支路错误预测,而该支路错误预测可能使该支路预测单元输出预测目标地址。
该微处理器亦可包含追踪产生器。在一些实施例中,该追踪产生器可自己执行且退除的指令建构各追踪。在其它的实施例中,该追踪产生器可自执行之前译码的或部分译码的指令建构各追踪。在一些实施例中,追踪可与标记(tag)相关联,而该标记包含该追踪内储存的按照程序顺序为最早的指令的地址。该追踪亦可包含流程控制字段,而该字段包含该追踪所包含的每一支路指令中作为控制转移目标的指令的卷标。
该追踪产生器在开始新追踪的建构之前,可等候到其接收到对应于支路目标地址的指令为止。一旦开始追踪的建构之后,该追踪产生器可检查该追踪缓存中是否有该追踪的重复的拷贝,且如果发现该拷贝,则该追踪产生器可舍弃正在建构中的追踪。在一些实施例中,当该追踪产生器在该追踪缓存中识别出正在建构中的追踪的重复的拷贝时,该追踪产生器可检查该追踪缓存中是否有对应于将要产生的次一追踪的登录,且如果发现了该登录,则该追踪产生器可舍弃正在建构中的追踪。


若参照前文中的详细说明并配合下列的图式,将可更易于了解本发明,这些图式有图1示出根据一实施例的设有追踪缓存的微处理器;图2示出根据一实施例的例示追踪缓存项;图3是根据一实施例而自指令缓存提取指令或自追踪缓存提取追踪的方法的流程图;图4是根据一实施例而建构追踪的方法的流程图;图5示出计算机系统的一实施例;以及图6示出计算机系统的另一实施例。
虽然易于对本发明作出各种修改及替代形式,但是将以图式举例的方式示出本发明的一些特定实施例,且本说明书已详细说明了这些特定实施例。然而,我们当了解,本发明的该等图式及详细说明的用意并非将本发明限于所揭示的特定形式,相反地,本发明将涵盖在最后权利要求书所界定的本发明精神及范围内的所有修改、等效物、及替代方式。本文所用的标题只是为了组织上的目的,并非用来限制或诠释说明或权利要求书。此外,请注意,在本申请案全文的用法中,措词“可能”(“may”)是一种容许性的用法(亦即,其意义具有可能性),而不是一种强制性的用法(亦即,其意义为必须)。措词“包括”(“include”)及其衍生语意指“包括但不限于”(“including,but not limited to”)。术语“连接”(“connected”)意指“直接地或间接地连接”,且术语“耦合”(“coupled”)意指“直接地或间接地耦合”。
具体实施例方式
图1是包含在于卷标边界上自指令缓存(106)转变到追踪缓存(160)的微处理器(100)的一实施例中的各逻辑组成部分的方块图。微处理器(100)系组构成(configured)执行系统内存(200)中储存的指令。许多这些指令对系统内存(200)中储存的数据执行操作。请注意,系统内存(200)可以在实体上分散于一计算机系统各处,且一个或多个微处理器(100)可存取该系统内存(200)。在一些实施例中,可将微处理器(100)设计成与x86架构兼容。请注意,除了图中所示的那些组成部分之外,微处理器(100)亦可包含和/或耦合至许多其它的构件。例如,可在微处理器(100)与系统内存(200)之间包含额外的缓存层级(在微处理器(100)之内和/或之外)。同样地,微处理器(100)在一些实施例中可包含组构成控制系统内存(200)的内存控制器。此外,各逻辑组成部分间之内联机可随着不同的实施例而有所不同。
微处理器(100)可包含指令缓存(106)及数据缓存(128)。微处理器(100)可包含耦合到系统内存(200)的预取单元(108)。预取单元(108)可自系统内存(200)预取指令码,以供储存在指令缓存(106)内。在一实施例中,可将预取单元(108)组构成自系统内存(200)将整段的指令码丛发到指令缓存(106)。预取单元(108)可采用各种特定的指令码预取技术及算法。预取单元(108)亦可自指令缓存(106)提取指令到调度单元(104),并自追踪缓存(160)提取追踪到调度单元(104)。可响应特定的指令地址并未命中追踪缓存(160),而自指令缓存(106)提取指令。同样地,可响应特定的地址并未命中指令缓存(106),而自系统内存(200)提取指令。
可将一调度单元(104)系组构成自指令缓存(106)接收指令,并自追踪缓存(160)接收译码的和/或部分译码的操作。调度单元(104)可包含译码单元(140),用以将自指令缓存(106)接收的指令译码。调度单元(dispatch unit)(104)亦可包含在处理微码指令时使用的微码单元。
调度单元(104)系组构成将操作派发到一个或多个排程器(118)。该等一个或多个排程器(118)可耦合成自调度单元(104)接收被派发的操作,并耦合成将操作发出到一个或多个执行核心(124)。执行核心(124)可包含组构成执行对数据缓存(128)的存取的加载/储存单元(126)。可将执行核心(124)所产生的结果耦合到一结果总线(130)。这些结果可作为后续发出的指令的操作数值及(或)储存到缓存器文件(116)。可将退除队列(retire queue)(102)耦合到一个或多个排程器(118)及调度单元(104)。可将该退除队列的组构设定成决定何时可使每一发出的操作退除。
在调度单元(104)接收到指令之前,指令缓存(106)可暂时储存这些指令。可经由预取单元(108)自系统内存(200)预取指令码,而将指令码提供给指令缓存(106)。可以各种组构(例如,组关系型、完全关系型、或直接对应式)来组构指令缓存(106)。
调度单元(104)可输出其中包括执行核心(124)可执行的位编码操作、操作数地址、立即数据、和/或位移数据的信号。译码单元(140)可用于将某些指令译码成执行核心(124)可执行的一个或多个操作。简单的指令可对应于单一操作。较复杂的指令可对应于多个操作。调度单元(104)接收到涉及缓存器的更新的操作时,可保留缓存器文件(116)内的缓存器位置,以便储存预测的缓存器状态(在替代实施例中,可将重新排序缓冲区用来储存每一缓存器的一个或多个预测的缓存器状态)。缓存器对应表可将来源及目标操作数的逻辑缓存器名称转换为实体缓存器名称,以助于缓存器更名。该缓存器对应表可追踪缓存器文件(116)内的哪些缓存器目前被分配及未被分配。
当调度单元(104)处理各操作时,如果所需的操作数是缓存器位置,则可将缓存器地址信息传送到缓存器对应表或重新排序缓冲区。例如,在x86架构中,有八个32位的逻辑缓存器(例如,EAX、EBX、ECX、EDX、EBP、ESI、EDI、及ESP)。实体缓存器文件(116)(或重新排序缓冲区)包含用于会改变这些逻辑缓存器之内容的结果的储存空间,因而可供非循序执行。可分配缓存器文件(116)中的实体缓存器,用以储存将修改其中一个逻辑缓存器之内容的每一操作的结果。因此,在执行特定程序的各时点上,缓存器文件(116)(或替代实施例中的重新排序缓冲区)可具有存放了特定逻辑缓存器的推测式执行内容的一个或多个缓存器。
缓存器对应表可将实体缓存器分派给指定予操作的操作数的特定逻辑缓存器。缓存器文件(116)可具有分派给指定予特定操作的来源操作数的逻辑缓存器的一个或多个先前分配的实体缓存器。该缓存器对应表可提供最近分派给该逻辑缓存器的实体缓存器的标记。可将该标记用来存取缓存器文件(116)中的操作数的数据值,或用来经由结果总线(130)上转送的结果而接收数据值。如果该操作数对应于记忆位置,则可经由加载/储存单元(126)而在该结果总线(用于结果转送及/或缓存器文件(116)中的储存内容)上提供该操作数值。当由其中一个排程器(118)发出该操作时,可将操作数数据值提供给执行核心(124)。请注意,在替代实施例中,当派发操作时,可将操作数值提供给对应的排程器(118)(并不是在发出操作时将操作数值提供给对应的执行核心(124))。
图1所示的微处理器(100)支持非循序执行。退除队列(102)(或替代实施例中的重新排序缓冲区)可针对缓存器读取及写入操作而追踪原始的程序顺序,可进行推测式指令执行及支路错误预测的恢复,并可协助精确的异常处理。在许多实施例中,退除队列(102)的功能可类似于重新排序缓冲区。然而,不同于典型的重新排序缓冲区,退除队列(102)可不提供任何数据值的储存。在替代实施例中,退除队列(102)的功能更像重新排序缓冲区,且将数据值储存提供给预测的缓存器状态,而也支持缓存器更名。在某些实施例中,可以先进先出的组构来组构退除队列(102),而在该组构中,当操作确认时,该等操作移到该缓冲区的“底部”,而将空间让给在该队列的“顶部”的新登录。当操作退除时,退除队列(102)可将缓存器文件(116)中不再需要储存预测的缓存器状态的缓存器解除分配,并将用来指示哪些缓存器现在空出来的信号提供给缓存器对应表。藉由维护缓存器文件(116)内(或在替代实施例中为在重新排序缓冲区内)的预测的缓存器状态到产生这些状态的该等操作确认为止,因而若支路预测是错误的,则可在缓存器文件(116)中使以推测方式执行的操作的结果以及错误预测的路径无效。
退除队列(102)亦可将用来识别程序追踪的信号提供给追踪产生器(170)。亦可将追踪产生器(170)描述为填充单元。追踪产生器(170)可将退除队列(102)所识别的追踪储存到追踪缓存(160)。每一追踪可包含系为数个不同的基本区块的部分的操作。可将一基本区块(basic block)定义为一组连续的指令,其中如果执行基本区块中的任一指令,则将执行该基本区块中的所有指令。一种类型的基本区块可以是恰好在支路指令之后开始且终止于另一支路操作的一组指令。在某些实施例中,储存在追踪缓存(160)的追踪可包含数个译码的或部分译码的指令。可将译码的或部分译码的指令称为操作。在本说明书的用法中,一“追踪”(“trace”)是储存在追踪缓存(160)中的单一的追踪缓存登录内的一组指令或操作。
预取单元(108)可将操作自追踪缓存(160)提取到调度单元(104)。在一些实施例中,可利用来自退除队列(102)的译码的或部分译码的指令建构追踪。当自该追踪缓存提取此种追踪时,可至少部分地绕过译码单元(140),因而造成追踪缓存操作中有较少数目的派发周期。因此,如果执行追踪多于一次,则追踪缓存(160)可在数次执行反复中让调度单元(104)分摊在译码单元(140)中将缓存中储存的操作部分(或完全)译码所耗用的时间。
可将调度单元(104)的输出端上提供的位编码操作及立即数据传送到一个或多个排程器(118)。请注意,在本说明书的用法中,排程器是一种侦测操作何时准备好可执行并将准备好的操作发出到一个或多个执行单元的器件。例如,指令保留站(reservation station)是一种排程器。每一排程器(118)可保留数个等候发出到执行核心(124)的待处理的操作的操作信息(例如,经位编码的执行位及操作数值、操作数标记、和/或立即数据)。在一些实施例中,每一排程器(118)可不提供操作数值储存空间。每一排程器替代的方式为可监视发出的操作及缓存器文件(116)中可取得的结果,以便决定一个或多个执行核心(124)何时可(自缓存器文件(116)或结果总线(130))取得操作数值。在一些实施例中,可使每一排程器(118)与专用的执行核心(124)相关联。在其它的实施例中,单一的排程器(118)可将操作发出到一个以上的执行核心(124)。
可提供排程器(118)以暂时性地储存将要由一个或多个执行核心(124)执行的操作信息。如前文所述,每一排程器(118)可储存待处理的操作的操作信息。此外,每一排程器可储存已执行过但仍然可能再度发出的操作的操作信息。系响应于执行时可取得任何一个或多个所需操作数的值,而将操作发出到一个或多个执行核心(124)。因此,各操作的执行顺序可能与原始程序指令序列的顺序并不相同。
在一实施例中,每一执行核心(124)可包含组构成执行加法及减法的整数算术运算、以及移位、旋转、逻辑运算、及支路操作的若干构件。亦可包含浮点单元,以便配合浮点运算。可将一个或多个执行核心(124)组构成为加载/储存单元(126)将要执行的加载及储存记忆体操作而执行地址产生。
执行核心(124)亦可将与有条件支路指令的执行有关的信息提供给支路预测单元(132)。如果来自执行核心(124)的信息指示支路预测是错误的,则支路预测单元(132)可清除在该错误预测的支路之后的已进入指令处理管线的各指令,并重新指示预取单元(108)。受重新指示的预取单元(108)然后可开始自指令缓存(106)、追踪缓存(160)、和/或系统内存(200)提取一组正确的指令。在此种情形中,可舍弃原始程序序列中在该错误预测的支路指令之后发生的指令结果,其中包括先前以推测方式执行的且暂时被储存在加载/储存单元(126)和/或缓存器文件(116)中的那些指令结果。
如果正在更新缓存器值,则可经由结果总线(130)将一个或多个执行核心(124)内的各构件所产生的结果输出到缓存器文件(116)。如果正在改变一记忆位置之内容,则可将一个或多个执行核心(124)内产生的结果提供给加载/储存单元(126)。
追踪缓存可将追踪产生器(170)组构成自退除队列(102)接收已退除的操作的基本区块,并将这些基本区块储存在追踪缓存(160)中的各追踪内。请注意,在替代实施例中,可将追踪产生器(170)耦合到微处理器之前端(例如,在调度单元之前或之后),并将追踪产生器(170)组构成利用在微处理器的管线内的该点上所侦测到的基本区块而产生追踪。在追踪建构的期间,追踪产生器(170)可对自退除队列(102)接收的操作的基本区块执行变换,以便形成追踪。在某些实施例中,这些变换可包括各操作的重新排序、及操作的取消。
图2示出追踪缓存(160)以及耦合到该追踪缓存和/或与该追踪缓存互动的微处理器(100)的一些组成部分的一实施例。追踪缓存(160)可包含数个追踪缓存登录(162)。每一追踪缓存登录(162)可储存称为追踪(166)的一组操作。除了追踪(166)之外,每一追踪缓存登录(162)亦可包含识别标记(164)及流程控制(F.C.)信息(168)。追踪缓存登录(162)可包含追踪中的每一支路的流程控制字段(168)。每一控制字段(168)可包含地址信息,用以决定在要采取或不采取支路的情形中接下去要执行的指令。例如,流程控制字段(168A)可对应于追踪缓存登录(162)中包含的第一支路指令。该第一支路可以是有条件的,且流程控制字段(168A)可存放有两个地址。其中一个地址可以是在该条件为真的情形中于该支路指令之后将要执行的指令的地址。另一地址可指示在该支路条件为假的情形中接下去要执行的指令的地址。流程控制字段(168B、168A)可对应于追踪缓存登录(162)中包含的第二支路指令。该支路可以是无条件的,且流程控制字段(168B)因而可只存放有在任何情况中都应将控制流转移到的指令的地址。
标记(164)可类似于指令缓存(106)中的标记,而该标记可让预取单元(108)决定某一操作是命中或是未命中追踪缓存(160)。例如,标记(164)可包含用来识别追踪缓存登录内的一操作的全部或部分的地址位(例如,该标记可包含该追踪内储存的按照程序顺序为最早的操作的地址)。在一些实施例中,该标记可包含足够的信息,因而可在追踪内独立地寻址到某些操作。例如,可利用该标记内储存的信息而寻址到每一基本区块内的第一操作。在其它的实施例中,只可寻址到一追踪内的第一操作。
在一些实施例中,流程控制信息(168)可包含该追踪内包含的每一支路操作的一卷标。该卷标可以是用来识别控制应支路到的地址的指示。例如,汇编程序码的一区段可包含支路指令,用以将执行流程的控制转移到在程序代码撰写顺序上并非紧接在该支路之后的指令的指令。为了顾及程序设计师的方便,一些编译器可容许将一个或多个文数字符号(alpha-numerical symbol)加入支路指令。亦可在作为该支路指令目标的指令之前一汇编程序码中包含该卷标。在编译该汇编程序码时,编译器可决定作为该支路指令目标的指令的地址,且可以该地址替代该支路指令中包含的该等文数字符号,且该目标指令的地址现在可变为该卷标。在其它的实施例中,可将卷标用来识别任何基本区块的指令。卷标边界此时可以是指令码中用来将控制流程转移到其地址是卷标的指令的任何点。追踪的产生及命中追踪缓存的尝试可在各卷标边界上执行指令时发生。
在许多实施例中,追踪缓存登录(162)可包含多个支路指令及多个流程控制字段(168)。可使流程控制信息(168)的每一字段与特定的支路操作相关联。例如,在一实施例中,可使追踪内的流程控制信息储存位置(168A)与该追踪中的第一支路操作相关联,并可使另一流程控制信息储存位置(168B)与该追踪中的第二支路相关联。或者该流程控制信息可包含标记、或用来识别与该流程控制信息相关联的支路操作的其它信息。在其它的实施例中,可将支路预测及(或)用来识别哪一流程控制信息对应于支路操作的信息连同该支路操作储存在操作储存区(166)内。
指令/追踪提取预取单元(108)可自内存(200)提取行指令,并将该行指令储存在指令缓存(106)。可按照编译后的顺序将各指令储存在指令缓存(106)。视执行期间的状况而定,指令缓存(106)中的各指令的执行顺序可能经常不同于该等指令的编译后的顺序。例如,执行来自指令缓存(106)的支路指令时,可能造成控制流程跳到在编译后的顺序下与该支路指令隔离了许多介于中间的指令的指令。因而可能造成预取单元(108)自系统内存(200)提取另一行指令。当正在加载在下一行指令的指令缓存时,各执行核心(124)可能处于闲置状态,而等候次一操作。
在一些实施例中,预取单元(108)可将支路目标地址的一部分用来作为到追踪缓存(160)的指针。如果有效的追踪缓存登录(162)存在于该指针所指向的位置,则该预取单元可将标记字段(164)与该支路目标地址比较。如果该标记与该目标地址相符,则预取单元(108)可将追踪(166)提取到调度单元(104),以供执行。视自该等执行核心和/或支路预测单元接收的信息而定,预取单元(108)可持续将各追踪自追踪缓存(160)提取到调度单元(104),直到再也找不到其标记字段对应于要执行的次一指令的地址的任何登录为止。预取单元(108)然后可重新开始自指令缓存(106)提取指令。
图3是根据一实施例而自指令缓存提取指令或自追踪缓存提取追踪的方法的流程图。如步骤(301)所示,可自该指令缓存提取一个或多个指令。在一些情形中,对提取的指令的处理可能不会造成支路目标地址的产生。例如,在并未自该等指令中译码出任何支路操作或并未采取译码后的支路操作的情形中,前一句所述的状况可以是真的。在此种情形下,如步骤(303)所示,将继续自该指令缓存提取指令。
在其它的情形中,对提取的指令的处理可能会造成一支路目标地址的产生。例如,如果预测将要满足有条件支路的条件,或者如果碰到无条件支路,或者如果发生支路目标错误预测,则可产生支路目标地址。在这些情形中,将执行对追踪缓存的搜寻。可将所产生的支路目标地址的一部分用来作为到该追踪缓存的指针,且如果有效登录储存在对应的位置,则可将该登录的标记字段与该支路目标地址的另一部分比较,如步骤(305)所示。如果比对相符,则该预取单元可将追踪自该追踪缓存中对应的登录提取到该调度单元,如步骤(307)所示。该预取单元可持续提取追踪,直到其碰到未命中该追踪缓存的地址为止。此时,可持续自该指令缓存提取。
追踪建构如前文所述,自指令缓存提取受预测要采取支路的该支路指令时,可使该预取单元开始提取其中包含该支路目标指令的列(line)。此种方式可能造成将指令提供给该调度单元时的严重延迟,尤其在储存在该支路目标指令的列并未存在于指令缓存时更是会严重延迟。
在支路指令及各后续的指令退除时,追踪产生器(170)可建构跨越支路卷标边界的追踪。纵使可能已将支路及目标指令储存在指令缓存的不同列中,该等指令也可能同时退除,且追踪产生器(170)可建构一包含与这两个指令对应的操作的追踪。
如果后来再度经过包含该支路指令的指令码部分,则该预取单元可自追踪缓存(160)提取对应的追踪,而非自指令缓存(106)提取指令。因为业已将作为该支路指令目标的各操作放入该追踪中,所以可以比执行来自指令缓存(106)的各原始指令快许多的速度来执行该追踪。
自追踪缓存(160)提取而非自指令缓存(106)提取所得到的微处理器效能的提高系与追踪的长度(追踪包含的操作数目)成正比。因此,最好是建构其中包含所能达到的最多的操作的追踪。在一些实施例中,追踪产生器(170)可利用自指令缓存(106)提取的退除操作来建构追踪。当预取单元由自指令缓存提取指令切换到自追踪缓存提取追踪时,该追踪产生器可终止追踪的建构。因此,最好是限制提取自指令缓存切换到追踪缓存的发生率。可将预取单元对命中追踪缓存的尝试限制在各卷标边界,而达到上述的目的。
追踪产生器(170)所建构的追踪的长度可与预取单元(108)尝试命中追踪缓存(160)的频度成反比。例如,如果针对自指令缓存提取的每一指令而进行对命中追踪缓存的尝试,则预取单元可能频繁地识别对应的追踪并由亦提取指令切换到提取追踪。该追踪产生器可终止追踪的建构,并产生包含自前一次切换开始退除的那些操作的追踪。如果系在少数的指令内即发生前一次命中追踪缓存,则在过渡期间中退除的操作数目将也是少的,因而产生了只包含少数的操作的追踪。
提取且执行以前文所述方式形成的短追踪时,可能造成预取单元(108)在指令缓存与追踪缓存之间切换的频度进一步增加。例如,当追踪产生器(170)因提取自指令缓存切换到追踪缓存而终止追踪的建构时,原先可能并入于终止的追踪的某些操作或许可能因在该切换之前尚未退除,而无法并入于该追踪。执行贸然受到终止的追踪时,可能造成自追踪缓存切换到指令缓存以提取未命中的指令。与执行来自指令缓存的原始指令比较时,执行较短的追踪在提高微处理器效率上可能只有很小的效益。
在一些实施例中,预取单元(108)可将命中追踪缓存的尝试延迟到支路预测单元(132)产生了目标指令的地址为止。自指令缓存提取支路指令时,可能在执行时造成支路预测单元(132)预测要采取或是不采取该支路。如果该预测是将要采取该支路,则该支路预测单元可产生作为该支路指令的目标的指令的地址。在发生支路错误预测的情形中,支路预测单元(132)亦可产生在支路指令之后将要执行的次一指令的地址。例如,如果提取有条件支路指令,且支路预测单元(132)预测将采取该支路,但是在有该条件的解答时决定不应采取该支路,则预取单元(108)可使用按照编译后的顺序在该有条件支路之后的次一指令的先前产生的地址作为将要提取的次一指令的地址。藉由将命中追踪缓存(160)的尝试延迟到可得到预测要采取的支路的支路目标或支路错误预测之后的支路目标,即可产生较长的追踪。
在预取单元在尝试命中追踪缓存之前先等候卷标边界的实施例中,用于比对的地址通常可以是一支路目标。如前文所述,可在任何时间进行自追踪缓存至指令缓存的提取切换,以便提取在追踪缓存中并未命中的指令。因此,可在与卷标边界有关的任何时点开始进到追踪产生器(170)的退除流程。在只于卷标边界上进行命中追踪缓存的尝试的实施例中,可延迟追踪建构的开始时间,以便与各卷标边界一致。此种方式可确保各追踪的第一指令的地址将是卷标。
当该追踪产生器执行对该追踪缓存的搜寻时,如果发现与新完成的追踪的标记相符的现有的登录,则可使该相符的登录无效,可舍弃新完成的追踪,且该追踪产生器在开始建构新追踪之前,可等候将要退除的来自次一支路边界的操作。在一些实施例中,当该追踪产生器在追踪缓存中识别出与建构中的追踪完全相同的拷贝时,该追踪产生器可检查追踪缓存中是否有与将要产生的次一追踪对应的登录,如果找到该登录,则该追踪产生器可舍弃建构中的该追踪。在其它的实施例中,该追踪产生单元可先等候到两个或更多个相继产生的追踪登录与追踪缓存中现有的登录完全相同,然后才舍弃该等追踪,并将新建构的开始延迟至到达卷标边界为止。在另外的其它实施例中,当在追踪缓存中识别出相同的现有登录时,可使这些登录无效。
图4是根据一实施例而建构追踪的方法的流程图。步骤(351)显示接收指令。在步骤(353)中,在追踪缓存中并未识别出与正在建构中的追踪和/或将要建构的次一追踪相同的一个或多个追踪,则可在步骤(355)中将对应于该指令的操作用来填满追踪中空的操作位置。另一方面,如果在决定步骤(353)中识别出一个或多个相同的追踪,则可检查该指令以决定该指令是否对应于支路卷标。如果在决定步骤(357)中决定该指令并不对应于支路卷标,则可舍弃该指令。可继续舍弃指令,直到接收到与支路卷标对应的指令为止。
在步骤(357)中,如果决定所接收的操作是在支路卷标上的第一操作,则可在步骤(359)中开始填满次一追踪的各操作位置。如步骤(361)所示,当完成追踪时,可在步骤(363)中搜寻该追踪缓存,以便识别各对应的登录。如果识别出相符的登录,则可在步骤(367)中舍弃刚刚完成的追踪。如果在步骤(363)中并未发现任何相同的登录,则可将该新追踪储存在一追踪缓存登录中。在一些实施例中,在发现数个连续的相同登录之前,可以不舍弃相同的登录。
例示计算机系统图5示出计算机系统(400)的一实施例的一方块图,该计算机系统(400)包含微处理器(100),该微处理器(100)经由总线桥接器(402)而耦合到各种系统组件。微处理器(100)可包含前文所述的追踪产生器(170)的实施例。计算机系统的其它实施例也是可行的且可考虑采用。在所示的系统中,主存储器(404)系经由内存总线(406)而耦合到总线桥接器(402),且一图形控制器(408)系经由一AGP总线(410)而被耦合到总线桥接器(402)。数个PCI器件(412A至412B)系经由PCI总线(414)而耦合到总线桥接器(402)。亦可设有第二总线桥接器(416),以便经由EISA/ISA总线(420)而提供一个或多个EISA或ISA器件(418)的电性接口。在该例子中,微处理器(100)系经由CPU总线(424)而耦合到总线桥接器(402),且耦合到任选L2缓存(optional L2 cache)(428)。在一些实施例中,微处理器(100)可包含整合式L1缓存(未图标)。
总线桥接器(402)提供了微处理器(100)、主存储器(404)、图形控制器(408)、与连接到PCI总线(414)的各器件间的接口。当自连接到总线桥接器(402)的其中一个器件接收到操作时,总线桥接器(402)识别该操作的目标(例如特定的器件,或者在PCI总线(414)的情形中,该目标是在PCI总线(414)上)。总线桥接器(402)将该操作传送到目标器件。总线桥接器(402)通常将操作由来自来源器件或总线所使用的协议转换为目标器件或总线所使用的协议。
辅助总线桥接器(416)除了将ISA/EISA总线的接口提供给PCI总线(414),还可具有额外的功能。亦可在计算机系统(400)内设有在辅助总线桥接器(416)之外或与辅助总线桥接器(416)整合的输入/输出控制器(未图标),以便将操作支持提供给键盘及鼠标(422)、以及各种串行端口及并行端口。在其它的实施例中,亦可将一外部缓存单元(未图标)在微处理器(100)与总线桥接器(402)之间耦合到CPU总线(424)。或者,可将该外部缓存耦合到总线桥接器(402),可使该外部缓存的缓存控制逻辑整合到总线桥接器(402)。图中所示的L2缓存(428)是在微处理器(100)的背部组构中。请注意,L2缓存(428)可与微处理器(100)分离,可连同微处理器(100)而被整合到卡匣(例如扩充槽1或扩充槽A)中,或者甚至可连同微处理器(100)而整合到半导体基材中。
主存储器(404)是一种应用程序储存在其中且微处理器(100)执行时所主要使用的内存。适用的主存储器(404)可包括动态随机存取内存(Dynamic Random Access Memory;简称DRAM)。例如,复数组的同步DRAM(Synchronous DRAM;简称SDRAM)或RambusDRAM(Rambus DRAM;简称RDRAM)可能是适当的。
PCI器件(412A至412B)是诸如网络适配卡、视讯加速器、声卡、硬盘机或软盘机或其控制器、小型计算机系统接口(Small ComputerSystem Interface;简称SCSI)配接器、以及电话适配卡等各种周边器件的范例。同样地,ISA器件(418)是诸如调制解调器、声卡、以及GPIB或现场总线适配卡(field bus interface card)等各种数据撷取适配卡等的各种类型的周边器件的范例。
设有图形控制器(408),用以控制显示器(426)上的文字及影像的着色。图形控制器(408)可采用此项技术中习知的一典型图形加速器,用以将可有效地移进及移出主存储器(404)的三维数据结构着色。图形控制器(408)因而可以是AGP总线(410)的主控器件,这是因为图形控制器(408)可要求并接收对总线桥接器(402)内的目标接口的主控权,因而可存取主存储器(404)。专用的图形总线可配合自主存储器(404)迅速地撷取数据。图形控制器(408)可针对一些操作而进一步组构成产生AGP总线(410)上的PCI协议交易。总线桥接器(402)的AGP接口因而可包含用来支持AGP协议交易以及PCI协议目标及发出者交易的功能。显示器(426)是其上可呈现影像或文字的任何电子显示器。适用的显示器(426)包括阴极射线管(Cathode Ray Tube;简称CRT)及液晶显示器(Liquid Crystal Display;简称LCD)等的显示器。
请注意,虽然前文说明中以使用AGP、PCI、及ISA或EISA总线作为例子,但是亦可视需要而以任何总线架构代的。又请注意,计算机系统(400)可以是包含额外的微处理器(例如图中示为计算机系统(400)的任选组件的微处理器(100a))的多重处理计算机系统。微处理器(100a)可类似于微处理器(100)。更具体而言,在一实施例中,微处理器(100a)可与微处理器(100)完全相同。微处理器(100a)可经由独立的总线(如图5所示)而连接到总线桥接器(402),或者可与微处理器(100)共享CPU总线(424)。此外,微处理器(100a)可耦合到类似于L2缓存(428)的任选的L2缓存(428a)。
现在请参阅图6,图中示出可包含所述的追踪产生器(170)的计算机系统(400)的另一实施例。其它实施例也是可行的且可被考虑采用。在图6所示的实施例中,计算机系统(400)包含数个处理节点(612A)、(612B)、(612C)、及(612D)。每一处理节点系经由每一各别处理节点(612A至612D)内包含的一内存控制器(616A至616D)而耦合到各别的内存(614A至614D)。此外,处理节点(612A至612D)包含用来在该等处理节点(612A至612D)之间通讯的接口逻辑。例如,处理节点(612A)包含用来与处理节点(612B)通讯的接口逻辑(618A)、用来与处理节点(612C)通讯的接口逻辑(618B)、以及用来与另一处理节点(未图标)通讯的接口逻辑(618C)。同样地,处理节点(612B)包含接口逻辑(618D)、(618E)、及(618F);处理节点(612C)包含接口逻辑(618G)、(618H)、及(618I);且处理节点(612D)包含接口逻辑(618J)、(618K)、及(618L)。处理节点(612D)耦合成经由接口逻辑(618L)与多个输入/输出器件(在菊炼组构(daisy chain configuration)中的器件(620A至620B))通讯。其它的处理节点可以类似的方式而与其它的I/O器件通讯。
处理节点(612A至612D)实施封包型链路,以便进行处理节点间的通讯。在本实施例中,系将该链路实施为若干组的单向线路(例如,利用线路(624A)将封包自处理节点(612A)传输到处理节点(612B),且利用线路(624B)将封包自处理节点(612B)传输到处理节点(612A))。利用其它组的线路(624C至624H)在图6所示的其它处理节点之间传输封包。一般而言,每一组线路(624)可包含一条或多条数据线路、对应于该等数据线路的一条或多条时脉线路、以及用来指示传输的封包类型的一条或多条控制线路。系以一种缓存一致的方式操作该链路,以便进行各处理节点间的通讯,或者以一种非一致的方式操作该链路,以便进行处理节点与I/O器件(或通到诸如PCI总线或ISA总线等的传统结构的I/O总线的总线桥接器)间的通讯。此外,在如图所示的各I/O器件之间,可使用菊炼结构而以一种非一致的方式操作该链路。请注意,将要自一处理节点传输到另一处理节点的一封包可通过一个或多个中间节点。例如,如图6所示,由处理节点(612A)传输到处理节点(612D)的一封包可通过处理节点(612B)或处理节点(612C)。可使用任何适当的路由算法。计算机系统(400)的其它实施例可包含比图6所示实施例多或少的处理节点。
一般而言,可在各节点之间经由线路(624)而以一个或多个位时间(bit time)的方式传输封包。位时间可以是对应的时脉线路上的时脉信号的上升缘或下降缘。该等封包可包括用来激活交易的命令封包、用来维持缓存一致性的探测封包、以及来自对探测及命令封包的响应的响应封包。处理节点(612A至612D)除了包含内存控制器及接口逻辑之外,尚可包含一个或多个微处理器。广义而言,处理节点包含至少一个处理节点,且可任意包含用来与一内存及其它的逻辑电路通讯的一内存控制器。更具体而言,每一处理节点(612A至612D)可包含一个或多个微处理器(100)。外部接口单元(18)可包含节点内的接口逻辑(618)、以及内存控制器(616)。
内存(614A至614D)可包括任何适用的内存器件。例如,一内存(614A至614D)可包括一个或多个RAMBUS DRAM(RDRAM)、同步DRAM(SDRAM)、及静态RAM。计算机系统(400)的地址空间系分布在内存(614A至614D)之间。每一处理节点(612A至612D)可包含一内存对应表,用以决定内存(614A至614D)对应到哪些地址,并因而决定应将对特定地址的内存要求传送到哪一处理节点(612A至612D)。在一实施例中,计算机系统(400)内的一地址的一致性点是耦合到用来储存该地址的字节的内存的内存控制器(616A至616D)。换言之,内存控制器(616A至616D)负责确保以一种缓存一致性的方式进行对该对应的内存(614A至614D)的每一内存存取。内存控制器(616A至616D)可包含作为内存(614A至614D)的接口的控制电路。此外,内存控制器(616A至616D)可包含用来使各内存要求排队等候的若干请求队列。
接口逻辑(618A至618L)可包含各种缓冲器,用以自该链路接收封包,并缓冲储存将要在该链路上传输的封包。计算机系统(400)可采用用来传输封包的任何适当的封包流控制机制。例如,在一实施例中,每一接口逻辑(618)储存用来连接该接口逻辑的链路的另一端上的接收器内的每一类型的缓冲器的数目。除非接收端的接口逻辑有可储存封包的未使用的缓冲器,否则该接口逻辑将不传输该封包。将一接收端的缓冲器向前绕送一封包而将该缓冲器空出时,接收端的接口逻辑将指示该缓冲器已空出的一讯息传输到该传送端的接口逻辑。可将该机制称为一“配给券型(coupon-based)”系统。
I/O器件(620A至620B)可以是任何适用的I/O器件。例如,I/O器件(620A至620B)可包含用来使其可耦合到的另一计算机系统通讯的器件(例如网络适配卡或调制解调器)。此外,I/O器件(620A至620B)可包括视讯加速器、声卡、硬盘机或软盘机或其控制器、小型计算机系统接口(Small Computer System Interface;简称SCSI)配接器、电话适配卡、以及诸如GPIB或现场总线适配卡等的各种数据撷取适配卡。请注意,在本说明书中,术语“I/O器件”及术语“周边器件”将是同义的。
在本说明书的用法中,术语“时脉周期”或“周期”意指指令处理管线的各阶段完成其工作所用的时间间隔。各存储元件(例如缓存器或数组)根据用来定义时脉周期的时脉信号而撷取指令及计算出的值。例如,存储元件可根据时脉信号的上升缘或下降缘而撷取一值。
熟习此项技术者在完全了解前文所揭示的本发明之后,将可易于作出各种变化及修改。将把最后的权利要求书诠释为包含所有此种变化及修改。
工业应用本发明大致上可应用于微处理器的领域。
权利要求
1.一种微处理器(100),包含组构成储存指令的指令缓存(106);转移预测单元(132);组构成储存多个指令追踪(166)的追踪缓存(160);以及耦合到该指令缓存(106)、该转移预测单元(132)、及该追踪缓存(160)的预取单元(108);其中该预取单元(108)被组构成在该转移预测单元(132)输出预测目标地址之前自该指令缓存(106)提取指令;以及其中如果该预取单元(108)在该追踪缓存(160)中识别该预测目标地址具有匹配,则该预取单元(108)组构成自该追踪缓存(160)提取多个追踪(166)中的一个或多个追踪。
2.如权利要求1所述的微处理器(100),进一步包含追踪产生器(170),其中该追踪产生器(170)被组构成以对应于卷标边界的指令而开始追踪(166)。
3.如权利要求2所述的微处理器(100),其中该追踪产生器(170)被组构成检查该追踪缓存(160)中是否有该追踪产生器(170)正在建构的该追踪(166)的完全相同的拷贝。
4.如权利要求1所述的微处理器(100),其中多个追踪(166)中的每一追踪包含若干部分译码的指令。
5.如权利要求1所述的微处理器(100),其中使多个追踪(166)中的每一追踪与一标记(164)相关联,而该标记包含该追踪(166)内所储存的按照程序顺序为最早的指令的地址。
6.如权利要求1所述的微处理器(100),其中使多个追踪(166)中的每一追踪与一流程控制字段(168)相关联,而该流程控制字段(168)包含将在该追踪(166)中包含的每一转移操作中作为控制转移的目标的指令的卷标。
7.一种计算机系统(400),包含系统存储器(404);以及耦合到该系统存储器(404)的微处理器(100),该微处理器(100)包含组构成储存指令的指令缓存(106);转移预测单元(132);组构成储存多个指令追踪(166)的追踪缓存(160);以及耦合到该指令缓存(106)、该转移预测单元(132)、及该追踪缓存(160)的预取单元(108);其中该预取单元(108)被组构成在该转移预测单元(132)输出预测目标地址之前自该指令缓存(106)提取指令;以及其中如果该预取单元(108)在该追踪缓存中(160)识别该预测目标地址具有匹配,则该预取单元(108)被组构自该追踪缓存(160)提取多个追踪(166)中的一个或多个追踪。
8.一种方法,包含下列步骤自指令缓存(106)提取指令;在产生转移目标地址之前,持续从该指令缓存(106)提取指令;如果产生转移目标地址,则搜寻追踪缓存(160)中是否有与该转移目标地址对应的登录(162)。
9.如权利要求8所述的方法,进一步包含下列步骤如果在该追踪缓存(160)中识别出与该转移目标地址对应的登录(162),则自该追踪缓存(160)提取一个或多个追踪(166)。
10.如权利要求8所述的方法,进一步包含下列步骤接收退除的指令;如果所接收的该指令与转移卷标相关联,则开始新追踪(166)的建构;如果正在建构中之前一追踪(166)与追踪缓存(160)中的一追踪(166)完全相同,则将该新追踪(166)的建构延迟到所接收的指令对应于转移卷标为止。
全文摘要
本发明揭示了用来实施微处理器(100)的方法及系统的各实施例,该微处理器包含追踪缓存(160),并尝试唯有在卷标边界上才将提取自指令缓存(106)转变到追踪缓存(160)。在一实施例中,微处理器(100)可包含指令缓存(106)、支路预测单元(132)、及追踪缓存(160)。在该支路预测单元(132)输出支路指令的预测目标地址之前,预取单元(108)可自该指令缓存(106)提取指令。当该支路预测单元(132)输出预测目标地址时,该预取单元(108)可检查该追踪缓存(160)中是否有与该预测目标地址匹配的登录(162)。如果发现匹配,则该预取单元(108)可不自该指令缓存(106)提取指令,而是自该追踪缓存(160)提取一个或多个追踪。
文档编号G06F9/30GK1890631SQ200480036205
公开日2007年1月3日 申请日期2004年11月22日 优先权日2003年12月3日
发明者M·阿尔苏普, G·W·什毛斯 申请人:先进微装置公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1