[go: up one dir, main page]

CN1890631A - 于卷标边界自指令缓存至追踪缓存的转换 - Google Patents

于卷标边界自指令缓存至追踪缓存的转换 Download PDF

Info

Publication number
CN1890631A
CN1890631A CNA200480036205XA CN200480036205A CN1890631A CN 1890631 A CN1890631 A CN 1890631A CN A200480036205X A CNA200480036205X A CN A200480036205XA CN 200480036205 A CN200480036205 A CN 200480036205A CN 1890631 A CN1890631 A CN 1890631A
Authority
CN
China
Prior art keywords
trace
cache
instruction
branch
instructions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA200480036205XA
Other languages
English (en)
Other versions
CN100520712C (zh
Inventor
M·阿尔苏普
G·W·什毛斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MediaTek Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN1890631A publication Critical patent/CN1890631A/zh
Application granted granted Critical
Publication of CN100520712C publication Critical patent/CN100520712C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明揭示了用来实施微处理器(100)的方法及系统的各实施例,该微处理器包含追踪缓存(160),并尝试唯有在卷标边界上才将提取自指令缓存(106)转变到追踪缓存(160)。在一实施例中,微处理器(100)可包含指令缓存(106)、支路预测单元(132)、及追踪缓存(160)。在该支路预测单元(132)输出支路指令的预测目标地址之前,预取单元(108)可自该指令缓存(106)提取指令。当该支路预测单元(132)输出预测目标地址时,该预取单元(108)可检查该追踪缓存(160)中是否有与该预测目标地址匹配的登录(162)。如果发现匹配,则该预取单元(108)可不自该指令缓存(106)提取指令,而是自该追踪缓存(160)提取一个或多个追踪。

Description

于卷标边界自指令缓存至追踪缓存的转换
技术领域
本发明系有关微处理器的领域,尤有关具有追踪缓存的微处理器。
背景技术
以微处理器处理的指令系编码为,由一和零所组成的序列。对于某些微处理器架构而言,可以如某一数目的字节等的一固定长度将指令编码。对于诸如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器件”及术语“周边器件”将是同义的。
在本说明书的用法中,术语“时脉周期”或“周期”意指指令处理管线的各阶段完成其工作所用的时间间隔。各存储元件(例如缓存器或数组)根据用来定义时脉周期的时脉信号而撷取指令及计算出的值。例如,存储元件可根据时脉信号的上升缘或下降缘而撷取一值。
熟习此项技术者在完全了解前文所揭示的本发明之后,将可易于作出各种变化及修改。将把最后的权利要求书诠释为包含所有此种变化及修改。
工业应用
本发明大致上可应用于微处理器的领域。

Claims (10)

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)的建构延迟到所接收的指令对应于转移卷标为止。
CNB200480036205XA 2003-12-03 2004-11-22 用来实施具有追踪缓存的微处理器的方法及系统 Expired - Lifetime CN100520712C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/726,902 US8069336B2 (en) 2003-12-03 2003-12-03 Transitioning from instruction cache to trace cache on label boundaries
US10/726,902 2003-12-03

Publications (2)

Publication Number Publication Date
CN1890631A true CN1890631A (zh) 2007-01-03
CN100520712C CN100520712C (zh) 2009-07-29

Family

ID=34633400

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB200480036205XA Expired - Lifetime CN100520712C (zh) 2003-12-03 2004-11-22 用来实施具有追踪缓存的微处理器的方法及系统

Country Status (8)

Country Link
US (1) US8069336B2 (zh)
JP (1) JP2007515715A (zh)
KR (1) KR20070001900A (zh)
CN (1) CN100520712C (zh)
DE (1) DE112004002365T5 (zh)
GB (1) GB2423852B (zh)
TW (1) TWI363992B (zh)
WO (1) WO2005062167A2 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102306092A (zh) * 2011-07-29 2012-01-04 北京北大众志微系统科技有限责任公司 超标量处理器实现指令缓存路选择的方法及装置
CN104978284A (zh) * 2014-04-04 2015-10-14 德克萨斯仪器德国股份有限公司 处理器子程序高速缓冲存储器
CN107103116A (zh) * 2017-03-27 2017-08-29 中国科学院计算技术研究所 一种复用追踪缓存的触发装置及设计方法
CN112286577A (zh) * 2020-10-30 2021-01-29 上海兆芯集成电路有限公司 处理器及其操作方法
CN113795823A (zh) * 2019-02-13 2021-12-14 诺基亚技术有限公司 处理器资源的可编程控制
CN114586003A (zh) * 2019-10-21 2022-06-03 超威半导体公司 使用页级跟踪的加载顺序队列的推测执行
CN121166209A (zh) * 2025-11-24 2025-12-19 上海壁仞科技股份有限公司 指令缓存及其预取方法

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7133969B2 (en) * 2003-10-01 2006-11-07 Advanced Micro Devices, Inc. System and method for handling exceptional instructions in a trace cache based processor
US7555633B1 (en) 2003-11-03 2009-06-30 Advanced Micro Devices, Inc. Instruction cache prefetch based on trace cache eviction
US8069336B2 (en) 2003-12-03 2011-11-29 Globalfoundries Inc. Transitioning from instruction cache to trace cache on label boundaries
US7213126B1 (en) 2004-01-12 2007-05-01 Advanced Micro Devices, Inc. Method and processor including logic for storing traces within a trace cache
US7197630B1 (en) 2004-04-12 2007-03-27 Advanced Micro Devices, Inc. Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation
TW200602974A (en) * 2004-05-19 2006-01-16 Arc Internat Uk Ltd Microprocessor architecture
US7365007B2 (en) * 2004-06-30 2008-04-29 Intel Corporation Interconnects with direct metalization and conductive polymer
US20060212654A1 (en) * 2005-03-18 2006-09-21 Vinod Balakrishnan Method and apparatus for intelligent instruction caching using application characteristics
US7949854B1 (en) 2005-09-28 2011-05-24 Oracle America, Inc. Trace unit with a trace builder
US7953961B1 (en) 2005-09-28 2011-05-31 Oracle America, Inc. Trace unit with an op path from a decoder (bypass mode) and from a basic-block builder
US7877630B1 (en) 2005-09-28 2011-01-25 Oracle America, Inc. Trace based rollback of a speculatively updated cache
US8499293B1 (en) 2005-09-28 2013-07-30 Oracle America, Inc. Symbolic renaming optimization of a trace
US8370576B1 (en) 2005-09-28 2013-02-05 Oracle America, Inc. Cache rollback acceleration via a bank based versioning cache ciruit
US8032710B1 (en) 2005-09-28 2011-10-04 Oracle America, Inc. System and method for ensuring coherency in trace execution
US7546420B1 (en) 2005-09-28 2009-06-09 Sun Microsystems, Inc. Efficient trace cache management during self-modifying code processing
US7783863B1 (en) 2005-09-28 2010-08-24 Oracle America, Inc. Graceful degradation in a trace-based processor
WO2007049150A2 (en) 2005-09-28 2007-05-03 Arc International (Uk) Limited Architecture for microprocessor-based systems including simd processing unit and associated systems and methods
US7987342B1 (en) 2005-09-28 2011-07-26 Oracle America, Inc. Trace unit with a decoder, a basic-block cache, a multi-block cache, and sequencer
US7937564B1 (en) 2005-09-28 2011-05-03 Oracle America, Inc. Emit vector optimization of a trace
US8051247B1 (en) 2005-09-28 2011-11-01 Oracle America, Inc. Trace based deallocation of entries in a versioning cache circuit
US8037285B1 (en) 2005-09-28 2011-10-11 Oracle America, Inc. Trace unit
US7953933B1 (en) 2005-09-28 2011-05-31 Oracle America, Inc. Instruction cache, decoder circuit, basic block cache circuit and multi-block cache circuit
US8019944B1 (en) 2005-09-28 2011-09-13 Oracle America, Inc. Checking for a memory ordering violation after a speculative cache write
US8024522B1 (en) 2005-09-28 2011-09-20 Oracle America, Inc. Memory ordering queue/versioning cache circuit
US7849292B1 (en) 2005-09-28 2010-12-07 Oracle America, Inc. Flag optimization of a trace
US7814298B1 (en) 2005-09-28 2010-10-12 Oracle America, Inc. Promoting and appending traces in an instruction processing circuit based upon a bias value
US8015359B1 (en) 2005-09-28 2011-09-06 Oracle America, Inc. Method and system for utilizing a common structure for trace verification and maintaining coherency in an instruction processing circuit
US7966479B1 (en) 2005-09-28 2011-06-21 Oracle America, Inc. Concurrent vs. low power branch prediction
US7870369B1 (en) 2005-09-28 2011-01-11 Oracle America, Inc. Abort prioritization in a trace-based processor
US11948629B2 (en) 2005-09-30 2024-04-02 Mosaid Technologies Incorporated Non-volatile memory device with concurrent bank operations
US7652922B2 (en) 2005-09-30 2010-01-26 Mosaid Technologies Incorporated Multiple independent serial link memory
TWI543185B (zh) 2005-09-30 2016-07-21 考文森智財管理公司 具有輸出控制之記憶體及其系統
US7797517B1 (en) 2005-11-18 2010-09-14 Oracle America, Inc. Trace optimization via fusing operations of a target architecture operation set
TWI448901B (zh) * 2006-03-28 2014-08-11 Mosaid Technologies Inc 非揮發性記憶體系統及控制非揮發性記憶體系統之方法
US8010745B1 (en) 2006-09-27 2011-08-30 Oracle America, Inc. Rolling back a speculative update of a non-modifiable cache line
US8370609B1 (en) 2006-09-27 2013-02-05 Oracle America, Inc. Data cache rollbacks for failed speculative traces with memory operations
TWI502357B (zh) * 2009-08-11 2015-10-01 Via Tech Inc 資料預先提取方法、裝置及電腦系統
KR101086457B1 (ko) * 2009-12-28 2011-11-25 전남대학교산학협력단 저 전력 트레이스 캐쉬 및 명령어 세트 예측기를 구비한 프로세서 시스템
GB2481385B (en) 2010-06-21 2018-08-15 Advanced Risc Mach Ltd Tracing speculatively executed instructions
US8935574B2 (en) 2011-12-16 2015-01-13 Advanced Micro Devices, Inc. Correlating traces in a computing system
US9158696B2 (en) * 2011-12-29 2015-10-13 Intel Corporation Hiding instruction cache miss latency by running tag lookups ahead of the instruction accesses
US9311247B1 (en) 2012-03-20 2016-04-12 Marvell International Ltd. Method and apparatus for detecting patterns of memory accesses in a computing system with out-of-order program execution
EP2831720A4 (en) * 2012-03-30 2015-12-09 Intel Corp PREFERRING MEDIA DEVICES WITH DETERMINED FUNCTIONS
US9164900B1 (en) 2012-05-23 2015-10-20 Marvell International Ltd. Methods and systems for expanding preload capabilities of a memory to encompass a register file
US8832500B2 (en) 2012-08-10 2014-09-09 Advanced Micro Devices, Inc. Multiple clock domain tracing
US8959398B2 (en) 2012-08-16 2015-02-17 Advanced Micro Devices, Inc. Multiple clock domain debug capability
KR20140134421A (ko) * 2013-05-14 2014-11-24 한국전자통신연구원 이중 명령어 페치 장치 및 방법
US10140210B2 (en) * 2013-09-24 2018-11-27 Intel Corporation Method and apparatus for cache occupancy determination and instruction scheduling
US20160335089A1 (en) * 2015-05-11 2016-11-17 Qualcomm Incorporated Eliminating redundancy in a branch target instruction cache by establishing entries using the target address of a subroutine
US20180054374A1 (en) * 2016-08-19 2018-02-22 Andes Technology Corporation Trace information encoding apparatus, encoding method thereof, and readable computer medium
US10606599B2 (en) * 2016-12-09 2020-03-31 Advanced Micro Devices, Inc. Operation cache
US10268630B1 (en) * 2017-10-24 2019-04-23 Hewlett Packard Enterprise Development Lp Noncoherent interprocessor communication remapping node controller
US20230305992A1 (en) * 2022-03-25 2023-09-28 Nokia Solutions And Networks Oy Processor using target instructions
US12265823B2 (en) 2023-07-14 2025-04-01 Apple Inc. Trace cache with filter for internal control transfer inclusion
US12530193B2 (en) 2023-07-14 2026-01-20 Apple Inc. Trace cache techniques based on biased control transfer instructions
US12436766B2 (en) 2023-07-14 2025-10-07 Apple Inc. Sharing branch predictor resource for instruction cache and trace cache predictions
US12423106B2 (en) * 2023-07-14 2025-09-23 Apple Inc. Next fetch predictor for trace cache
US12547409B2 (en) 2024-04-04 2026-02-10 Apple Inc. Trace cache that supports multiple different trace lengths

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3896419A (en) * 1974-01-17 1975-07-22 Honeywell Inf Systems Cache memory store in a processor of a data processing system
US5210843A (en) * 1988-03-25 1993-05-11 Northern Telecom Limited Pseudo set-associative memory caching arrangement
WO1993017385A1 (en) * 1992-02-27 1993-09-02 Intel Corporation Dynamic flow instruction cache memory
US5896528A (en) * 1995-03-03 1999-04-20 Fujitsu Limited Superscalar processor with multiple register windows and speculative return address generation
AU7550496A (en) * 1995-10-06 1997-04-28 Advanced Micro Devices Inc. Unified multi-function operation scheduler for out-of-order execution in a superscalar processor
US5745724A (en) * 1996-01-26 1998-04-28 Advanced Micro Devices, Inc. Scan chain for rapidly identifying first or second objects of selected types in a sequential list
US6167536A (en) 1997-04-08 2000-12-26 Advanced Micro Devices, Inc. Trace cache for a microprocessor-based device
US6018786A (en) * 1997-10-23 2000-01-25 Intel Corporation Trace based instruction caching
US6185675B1 (en) 1997-10-24 2001-02-06 Advanced Micro Devices, Inc. Basic block oriented trace cache utilizing a basic block sequence buffer to indicate program order of cached basic blocks
US6256728B1 (en) * 1997-11-17 2001-07-03 Advanced Micro Devices, Inc. Processor configured to selectively cancel instructions from its pipeline responsive to a predicted-taken short forward branch instruction
US5930497A (en) 1997-12-11 1999-07-27 International Business Machines Corporation Method and means for generation of realistic access patterns in storage subsystem benchmarking and other tests
US6182210B1 (en) * 1997-12-16 2001-01-30 Intel Corporation Processor having multiple program counters and trace buffers outside an execution pipeline
US6216206B1 (en) * 1997-12-16 2001-04-10 Intel Corporation Trace victim cache
US6014742A (en) * 1997-12-31 2000-01-11 Intel Corporation Trace branch prediction unit
US6219827B1 (en) * 1998-03-12 2001-04-17 Hewlett-Packard Company Trace ranking in a dynamic translation system
GB2381101B (en) 1998-04-20 2003-06-25 Intel Corp System and method for maintaining branch information
US6256727B1 (en) 1998-05-12 2001-07-03 International Business Machines Corporation Method and system for fetching noncontiguous instructions in a single clock cycle
US6493821B1 (en) * 1998-06-09 2002-12-10 Intel Corporation Recovery from writeback stage event signal or micro-branch misprediction using instruction sequence number indexed state information table
US6339822B1 (en) 1998-10-02 2002-01-15 Advanced Micro Devices, Inc. Using padded instructions in a block-oriented cache
US6233678B1 (en) * 1998-11-05 2001-05-15 Hewlett-Packard Company Method and apparatus for profiling of non-instrumented programs and dynamic processing of profile data
US6247097B1 (en) 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions
US6345295B1 (en) 1999-01-22 2002-02-05 International Business Machines Corporation Conducting traces in a computer system attachment network
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6357016B1 (en) 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US7260684B2 (en) 2001-01-16 2007-08-21 Intel Corporation Trace cache filtering
US6578128B1 (en) 2001-03-29 2003-06-10 Emc Corporation Address management for a shared memory region on a multi-processor controller board
US20020144101A1 (en) 2001-03-30 2002-10-03 Hong Wang Caching DAG traces
US6973543B1 (en) 2001-07-12 2005-12-06 Advanced Micro Devices, Inc. Partial directory cache for reducing probe traffic in multiprocessor systems
US6823428B2 (en) 2002-05-17 2004-11-23 International Business Preventing cache floods from sequential streams
US7139902B2 (en) * 2002-10-29 2006-11-21 Broadcom Corporation Implementation of an efficient instruction fetch pipeline utilizing a trace cache
US7024537B2 (en) * 2003-01-21 2006-04-04 Advanced Micro Devices, Inc. Data speculation based on addressing patterns identifying dual-purpose register
US7143273B2 (en) * 2003-03-31 2006-11-28 Intel Corporation Method and apparatus for dynamic branch prediction utilizing multiple stew algorithms for indexing a global history
US7178134B2 (en) * 2003-04-24 2007-02-13 International Business Machines Corporation Method and apparatus for resolving memory allocation trace data in a computer system
US7003629B1 (en) 2003-07-08 2006-02-21 Advanced Micro Devices, Inc. System and method of identifying liveness groups within traces stored in a trace cache
US7133969B2 (en) 2003-10-01 2006-11-07 Advanced Micro Devices, Inc. System and method for handling exceptional instructions in a trace cache based processor
US7219207B2 (en) * 2003-12-03 2007-05-15 Intel Corporation Reconfigurable trace cache
US8069336B2 (en) 2003-12-03 2011-11-29 Globalfoundries Inc. Transitioning from instruction cache to trace cache on label boundaries

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102306092A (zh) * 2011-07-29 2012-01-04 北京北大众志微系统科技有限责任公司 超标量处理器实现指令缓存路选择的方法及装置
CN102306092B (zh) * 2011-07-29 2014-04-09 北京北大众志微系统科技有限责任公司 超标量处理器实现指令缓存路选择的方法及装置
CN104978284A (zh) * 2014-04-04 2015-10-14 德克萨斯仪器德国股份有限公司 处理器子程序高速缓冲存储器
US10740105B2 (en) 2014-04-04 2020-08-11 Texas Instruments Incorporated Processor subroutine cache
US12455745B2 (en) 2014-04-04 2025-10-28 Texas Instruments Incorporated Processor subroutine cache
CN107103116A (zh) * 2017-03-27 2017-08-29 中国科学院计算技术研究所 一种复用追踪缓存的触发装置及设计方法
CN107103116B (zh) * 2017-03-27 2019-07-30 中国科学院计算技术研究所 一种复用追踪缓存的触发装置及设计方法
CN113795823A (zh) * 2019-02-13 2021-12-14 诺基亚技术有限公司 处理器资源的可编程控制
CN114586003A (zh) * 2019-10-21 2022-06-03 超威半导体公司 使用页级跟踪的加载顺序队列的推测执行
CN112286577A (zh) * 2020-10-30 2021-01-29 上海兆芯集成电路有限公司 处理器及其操作方法
US12056493B2 (en) 2020-10-30 2024-08-06 Shanghai Zhaoxin Semiconductor Co., Ltd. Processor and operating method thereof for renaming destination logical register of move instruction
CN121166209A (zh) * 2025-11-24 2025-12-19 上海壁仞科技股份有限公司 指令缓存及其预取方法

Also Published As

Publication number Publication date
GB2423852B (en) 2007-05-30
KR20070001900A (ko) 2007-01-04
CN100520712C (zh) 2009-07-29
DE112004002365T5 (de) 2006-11-09
GB2423852A (en) 2006-09-06
TWI363992B (en) 2012-05-11
TW200530912A (en) 2005-09-16
US20050125632A1 (en) 2005-06-09
WO2005062167A2 (en) 2005-07-07
WO2005062167A3 (en) 2006-02-09
GB0611775D0 (en) 2006-07-26
JP2007515715A (ja) 2007-06-14
US8069336B2 (en) 2011-11-29

Similar Documents

Publication Publication Date Title
CN1890631A (zh) 于卷标边界自指令缓存至追踪缓存的转换
US6151662A (en) Data transaction typing for improved caching and prefetching characteristics
CN100407134C (zh) 处置在基于跟踪缓存的处理器中的异常指令的系统及方法
CN1320452C (zh) 用于支持数据推测式执行的微处理器与方法
CN1199099C (zh) 紧密耦合式多处理器的快速多线程执行
US7213126B1 (en) Method and processor including logic for storing traces within a trace cache
US6880073B2 (en) Speculative execution of instructions and processes before completion of preceding barrier operations
US5944815A (en) Microprocessor configured to execute a prefetch instruction including an access count field defining an expected number of access
US7003629B1 (en) System and method of identifying liveness groups within traces stored in a trace cache
EP2204741B1 (en) Processor and method for using an instruction hint to prevent hardware prefetch from using certain memory accesses in prefetch calculations
CN1304962C (zh) 转译后备缓冲器清除滤波器
CN1209706C (zh) 具有不训练的存储至加载转送预测器
CN1625733A (zh) 将装载操作的猜测结果与寄存器值相连接的系统与方法
CN1625732A (zh) 使用猜测来源操作数以绕过装载/储存操作的系统与方法
US20050278505A1 (en) Microprocessor architecture including zero impact predictive data pre-fetch mechanism for pipeline data memory
KR100698493B1 (ko) 좁은 피연산자들에서 계산을 수행하는 방법 및 장치
JP2007536626A (ja) ロードオペレーションの投機的な結果をレジスタ値にリンクするメモリファイルを検証するためのシステムおよび方法
JP2002525741A (ja) 間接分岐ターゲットを計算するための方法
CN1806226A (zh) 具有重放机制的加载存储单元
CN110825442A (zh) 一种指令预取方法及处理器
CN1784655A (zh) 用于在数据推测微处理器中操作重放的系统及方法
US5946468A (en) Reorder buffer having an improved future file for storing speculative instruction execution results
US5915110A (en) Branch misprediction recovery in a reorder buffer having a future file
US7197630B1 (en) Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation
CN1581068A (zh) 预先读取脱序执行指令的方法及处理器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: GLOBALFOUNDRIES INC.

Free format text: FORMER OWNER: ADVANCED MICRO DEVICES INC.

Effective date: 20100730

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: CALIFORNIA STATE, USA TO: CAYMAN ISLANDS GRAND CAYMAN ISLAND

TR01 Transfer of patent right

Effective date of registration: 20100730

Address after: Grand Cayman, Cayman Islands

Patentee after: GLOBALFOUNDRIES Inc.

Address before: California, USA

Patentee before: ADVANCED MICRO DEVICES, Inc.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20201215

Address after: California, USA

Patentee after: Lattice chip (USA) integrated circuit technology Co.,Ltd.

Address before: Greater Cayman Islands, British Cayman Islands

Patentee before: GLOBALFOUNDRIES Inc.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210322

Address after: No.1, Duhang 1st Road, Hsinchu City, Hsinchu Science Park, Taiwan, China

Patentee after: MEDIATEK Inc.

Address before: California, USA

Patentee before: Lattice chip (USA) integrated circuit technology Co.,Ltd.

CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20090729