引退前-后混合硬件锁定省略(hle)方案的制作方法

文档序号:6469095阅读:215来源:国知局
专利名称:引退前-后混合硬件锁定省略(hle)方案的制作方法
技术领域
本发明涉及处理器执行领域,具体来说,涉及跟踪执行期间的存 储器访问。
背景技术
半导体处理和逻辑设计的发展允许集成电路装置上存在的逻辑 的数量增加。结果,计算机系统配置从系统中的单个或多个集成电路 发展到在各个集成电路上存在多个核和多个逻辑处理器。处理器或集 成电路通常包括单个处理器管芯,其中该处理器管芯可以包括任意数 量的核或逻辑处理器。集成电路上数量不断增加的核和逻辑处理器使得能够执行更多 的软件线程。然而,可以同时执行的软件线程的数量的增加已经造成 了在软件线程之间共享的数据的同步问题。在多核或多逻辑处理器系 统中访问共享数据的 一个通常的解决方法包括使用锁定来保证对共 享数据的多个访问间的互斥。然而,不断增长的执行多个软件线程的 能力潜在地导致,£竟争和执行串行化。例如,考虑保存共享数据的散列表。利用锁定系统,程序员可以 锁定整个散列表,以允许一个线程访问整个散列表。然而,其他线程 的吞吐量和性能会潜在地受到不利的影响,因为在解除锁定之前,它 们不能访问散列表中的任何条目。或者,可以锁定散列表中的每个条 目。然而,这会增加编程复杂性,因为程序员必须考虑散列表中的更 多锁定。另一种数据同步技术包括使用事务存储器(TM)。事务执行通 常包括推测性地执行多个微操作、操作或指令的分组。在上述示例中, 两个线程都在散列表中执行,并且它们的访问受到监视/跟踪。如果两个线程访问/改变相同的条目,那么会中止其中一个事务以解决沖突。 然而,某些应用可以不利用事务存储器编程。结果,利用通常称为硬件锁定省略(HLE—Hardware Lock Elision )的硬件数据同步技术来去 掉锁定以获得类似于事务存储器的同步益处。因此,通过使用事务存 储器和HLE来执行代码的临界段时,通常会产生有效地跟踪存储器访 问的问题。发明内容本发明涉及一种设备,包括处理元件,用于执行代码的非临界段和代码的临界段;与所述处理元件相关联的存储器,其中所述存储器的行将与跟踪 字段相关联,并且所述代码的临界段将包含引用所述行的操作;与所述存储器相关联的跟踪逻辑,其响应于所述代码的临界段是 代码的随后连续临界段,启动对所述跟踪字段的操作引退后更新(a post-retire of the operation update)以指示在所述临界段执行期间发生了 对所述行的访问,并且响应于所述代码的临界段不是代码的随后连续 临界段,启动对所述跟踪字段的操作引退前更新(a pre-retire of the operation update)以指示在所述代码的临界段执行期间发生了对所述 行的访问。本发明涉及一种系统,包括集成电路,包括能够执行代码的临界段(CS)的执行单元,所述CS包括引 用地址的加载操作,其中所述CS将通过开始CS操作和结束CS操作 进行划分;耦合到所述执行单元的存储器,所述存储器包括与所述地址 相关联的存储器行,其中加载跟踪字段将与所述存储器行相关联;与所述执行单元相关联的临界段逻辑,用于确定所述临界段 是否是连续临界段;以及耦合到所述临界段逻辑的加载緩沖器,用于保存将与所述加载操作相关联的加载条目,其中所述加载条目将包括存储器更新字 段,所述存储器更新字段响应于所述临界段逻辑确定所述临界段不是 连续临界段而保持第一值以指示将执行对所迷加栽跟踪字段的引退前更新,并且响应于所述临界段逻辑确定所述临界段是连续临界段而 保持第二值以指示将执行对所述加栽跟踪字段的引退后更新;以及耦合到所述集成电路的较高级的存储器,用于在与所述地址相关 联的存储单元上存储元素。本发明涉及一种方法,包括执行对第一访问跟踪字段的引退前更新,以指示在第一未决临界 段的执行期间访问了对存储器的第一行的访问,所述存储器的第一行与所述第一访问跟踪字段相关联;以及执行对第二访问跟踪字段的引退后更新,以指示在第二未决临界 段的执行期间访问了对存储器的第二行的访问,所述存储器的第二行 与所述第二访问跟踪字段相关联。


通过附图中的各图举例说明本发明,但不希望本发明受到附图中 的各图的限制。图1示出能够执行引退前和引退后存储器访问跟踪的多处理元件 处理器的实施例。图2示出用于对连续临界段存储器访问执行引退后访问跟踪的跟 踪逻辑的实施例。图3示出执行引退前和引退后访问跟踪的方法的流程图的实施例。图4a示出用于跟踪临界段的开始的方法的流程图的实施例。 图4b示出用于跟踪临界段的结束的方法的流程图的实施例。 图4c示出执行引退前和引退后访问跟踪的方法的流程图的实施例。图5示出示范性的连续临界段时间线。
具体实施方式
在下面的描述中,阐述了许多特定的细节,例如硬件锁定省略(HLE)的特定石更件支持、特定的跟踪/元数据方法、处理器中的特定 类型的局部/存储器、以及特定类型的存储器访问和单元等的示例,以 便充分理解本发明。然而,本领域的技术人员将明白,不需要采用这 些特定的细节也可实施本发明。在其他情况下,没有详细描述^^知的 组件或方法,例如软件形式的临界段的编码、临界段的划分、特定的 多核和多线程处理器体系结构、中断生成/处理、高速緩存组织、和微 处理器的特定操作细节,以免不必要地使本发明晦涩难懂。本文描述的方法和设备是用于对临界段的执行期间的试探性访问 进行引退前和引退后混合跟踪的。具体来说,主要参考多核处理器计 算机系统来论述混合方案。然而,混合访问跟踪的方法和设备不限于 此,它们可以在任何集成电路装置或系统上实现或者与任何集成电路 装置或系统联合地实现,集成电路装置或系统如蜂窝电话、个人数字 助理、嵌入式控制器、移动平台、桌面平台和服务器平台;并且它们 可以结合执行临界段的诸如硬件/软件线程的其他资源执行。此外,还 将主要参考HLE期间的访问跟踪来论述混合方案。然而,可以在任何 存储器访问方案期间,例如在事务执行期间,利用混合存储器访问跟 踪。参考图1 ,示出能够执行引退前和引退后混合访问跟踪的多核处理 器100的实施例。如图所示,物理处理器100包括任何数量的处理元 件。处理元件是指线程、进程、上下文、逻辑处理器、硬件线程、核 和/或潜在地共享对处理器资源的访问的任何处理元件,处理器资源如 预约单元、执行单元、管线和较高级高速緩存/存储器。物理处理器通 常是指集成电路,它可以包括任何数量的处理元件,如核或硬件线程。 核通常是指位于集成电路上能够保持独立的体系结构状态的逻 辑,其中每个独立保持的体系结构状态与至少一些专用执行资源相关 联。与核相比,硬件线程通常是指位于集成电路上能够保持独立的体 系结构状态的任何逻辑,其中独立保持的体系结构状态共享对执行资源的访问。如图1所示,物理处理器100包括两个核,即核101和102, 它们共享对较高级高速緩存110的访问。此外,核101包括两个硬件 线程101a和101b,而核102包括两个硬件线程102a和102b。因此, 诸如操作系统或应用程序的软件实体潜在地将处理器100视为是四个 独立的处理器,而处理器100能够执行四个软件线程。可见,当某些资源是共享的而其他资源专用于某个体系结构状态 时,硬件线程和核的命名之间的线重叠。然而,操作系统通常将核和 硬件线程视为是单独的逻辑处理器,其中操作系统能够在每个逻辑处 理器上单独地调度操作。因此,处理元件包括前面提到的能够保存上 下文的任何实体,例如核、线程、硬件线程、虚拟机或其他资源。在一个实施例中,处理器IOO是能够并行执行多个线程的多核处 理器。此处,第一线程与体系结构状态寄存器101a相关联,第二线程 与体系结构状态寄存器101b相关联,第三线程与体系结构状态寄存 器102a相关联,并且第四线程与体系结构状态寄存器102b相关联。 在一个实施例中,提到处理器100中的处理元件时包括提到核101和 102以及线程101a、 101b、 102a和102b。在另一个实施例中,处理元 件是指位于处理域的层级中的相同级别的元件。例如,核101和102 处于相同的域级别,线程101a和101b处于核101内的相同的域级别, 并且线程101a、 101b、 102a和102b处于相同的域级别。尽管处理器IOO可以包括不对称的核,即,具有不同配置、功能 单元和/或逻辑的核,但是图中示出对称核。因此,不再详细论述与核 101等同示出的核102,以免使论述晦涩难懂。如图所示,由于体系结构状态寄存器101a是从体系结构状态寄存 器101b中复制的,所以能够为逻辑处理器101a和逻辑处理器101b 存储独立的体系结构状态/上下文。还可为线程101a和101b复制其他 更小的资源,例如指令指针和重命名分配器逻辑130中的重命名逻辑。 可以通过分区来共享一些资源,诸如重排序器/引退单元135中的重排 序緩冲器、ILTB120、加载/存储緩冲器和队列。可潜在地完全共享其 他资源,例如通用内部寄存器、页表基址寄存器、低级数据高速緩存和数据-TLB 110、执行单元140和无序单元135。总线接口模块105用于与位于处理器100外部的装置通信,这些 装置如系统存储器175、芯片组、北桥或其他集成电路。存储器175 可专用于处理器100或与系统中的其他装置共享。存储器175的示例 包括动态随机存取存储器(DRAM)、静态RAM (SRAM)、非易失 性存储器(NV存储器)和长期存储设备。通常,总线接口单元105包括用于在互连170上发送和接收总线 信号的输7v/输出(I/O)緩沖器。互连170的示例包括射电收发逻辑 (GTL )总线、GTL+总线、双倍数据速率(DDR )总线、并发总线(pumped bus)、差分总线、高速緩存相干总线、点对点总线、多点总线或其他 已知的用于实现任何已知的总线协议的互连。所示的总线接口单元 105还与较高级的高速緩存110通信。较高级或更远离的高速緩存110用于緩存最近提取和/或操作的 元素。注意,较高级或更远离(ftirther-out)是指增加的或进一步远离 (increasing or getting further way from)执行单元的高速緩存级。在一 个实施例中,较高级的高速緩存IIO是二级数据高速緩存。然而,较 高级的高速緩存110并不限于此,它可以是或者可以包括指令高速緩 存(又可称为踪迹高速緩存)。踪迹高速緩存而是可以耦合在解码器 125之后以便存储最近的解码踪迹。模块120还潜在地包括用于预测 将要执行/采取的分支的分支目标緩冲器以及用于存储指令的地址转 换条目的指令-转换緩冲器(I-TLB)。此处,能够进行推测性执行的 处理器潜在地预取并且推测性地执行所预测的分支。解码才莫块125耦合到提取单元120以解码所提取的元素。在一个 实施例中,处理器100与定义/指定可在处理器100上执行的指令的指 令集体系结构(ISA)相关联。此处,由ISA辨识的机器代码指令通 常包括被称为操作码的指令的 一部分,其引用/指定将要执行的指令或 操作。在一个示例中,分配器和重命名器块130包括分配器以用于预约 资源,例如用于存储指令处理结果的寄存器文件。然而,线程101a和101b潜在地能够无序执行,其中分配器和重命名器块130还预约 其他资源,例如用于跟踪指令结果的重排序緩冲器。单元130还可包 括寄存器重命名器以用来将程序/指令引用寄存器重命名为位于处理 器100内部的其他寄存器。如图所示,跟踪逻辑180也与分配;f莫块130 相关联。如稍后将论述,在一个实施例中,跟踪逻辑180从"前端" 角度帮助确定临界段的边界。重排序器/引退单元135包括用于支持无序执行以及稍后对无序 执行的指令的有序引退的组件,例如上文提到的重排序緩冲器、加载 緩沖器和存储緩沖器。此外,跟踪逻辑180也分布在引退逻辑135中。 在一个实施例中,跟踪逻辑180从"后端"角度确定临界段的边界。 尽管图中将跟踪逻辑180示为是分布在处理器100中并且与分配和引 退逻辑相关联,但跟踪逻辑180不限于此。事实上,跟踪逻辑180可 以设置在一个区域中,并且与处理器管线的前端或后端的任何部分相 关联。此外,跟踪逻辑180的部分可以包含在高速緩存150、高速緩 存控制逻辑或较高级的高速緩存110中。在一个实施例中,调度器和执行单元块140包括用于在执行单元 上调度指令/操作的调度器单元。事实上,潜在地根据它们的类型可用 性而在执行单元上调度指令/操作。例如,在具有可用的浮点执行单元 的执行单元的端口上调度浮点指令。还包括与执行单元相关联的寄存 器文件以用于存储信息指令处理结果。示范性的执行单元包括浮点执 行单元、整数执行单元、跳转执行单元、加栽执行单元、存储执行单 元和其/f也已知的扭J亍单元。从上文注意到,如所说明的,处理器100能够执行至少四个软件 线程。此外,在一个实施例中,处理器100能够进行事务执行。事务 执行通常包括将多个指令或者操作分組为事务、代码的原子段、或代 码的临界段。在一些情况中,字指令的使用涉及由多个操作组成的宏 指令。在处理器中,通常推测性地"J丸行事务,并且在事务结束后提交 事务。本文所用的事务的未决是指已经开始执行但尚未提交或中止 (即,未决)的事务。通常,当事务仍然未决时,跟踪从存储器加载和写入到存储器内的单元。
在成功确认那些存储单元后,提交事务,并使在事务期间所做的 更新变为全局可见。然而,如果事务在它的未决期间是无效的,则重 新开始事务而不需要使更新全局可见。通常,以代码形式包含软件划 分以识别事务。例如,可以通过指示事务开始和事务结束的指令来将 事务分组。然而,事务执行通常利用程序员或编译器来插入事务的开 始和结束指令。
因此,在一个实施例中,处理器100能够进行硬件锁定省略
(HLE),其中硬件能够去掉对临界段的锁定并且同时执行它们。此处, 没有事务支持的预先编译的二进制数或利用锁定编程的新编译的二 进制数能够从通过支持HLE的同步执行中获益。作为提供透明兼容性 的结果,HLE通常包括用于检测临界段以及跟踪存储器访问的硬件。 事实上,由于去掉了确保数据排斥的锁定,所以可以按照与事务执行 期间相类似的方式跟踪存储器访问。因此,可以在事务执行、HLE、 其他存储器访问跟踪方案、或其组合期间利用本文论述的引退前和引 退后混合访问跟踪方案。因此,下文对临界段的执行的论述潜在地包 括提到事务的临界段或由HLE检测的临界段。
在一个实施例中,利用正被访问的存储器装置来跟踪来自临界段 的访问。例如,利用较低级的数据高速緩存150来跟踪来自临界段的 访问;这些临界段要么与事务执行相关联,要么与HLE相关联。高速 緩存150用于存储最近访问的元素,例如数据操作数,其潜在地保持 在存储器相干状态(例如修改、独占、共享和无效(MESI)状态)中。 高速緩存150可以组织成全关联、组关联、直4妄映射、或其他已知的 高速緩存组织。尽管没有示出,但D-TLB可以与高速緩存150相关联 以存储最近的虚拟/线性-物理地址转换。
如图所示,行151、 152和153包括多个部分和多个字段,例如 部分151a和字段151b。在一个实施例中,字段151b、 152b和153b 以及部分151a、 152a和153a是组成行151、 152和153的相同存储器 阵列的部分。在另一个实施例中,字段151b、 152b和153b是通过来自行151a、 152a和153a的独立的专用端口访问的独立阵列的部分。 然而,即使当字段151b、 152b和153b是独立阵列的部分时,字段151b、 152b和153b仍分别与部分151a、 152a和153a相关联。因此,当提 到高速缓存150的行151时,行151潜在地包括部分151a、 151b或其 组合。例如,当从行151加载时,可以从部分151a加载。另外,当设 置跟踪字段以跟踪从行151的加载时,访问字段151b。
在一个实施例中,行、单元、块或字(例如行151a、 152a和153a) 能够存储多个元素。元素是指通常存储在存储器中的任何指令、操作 数、数据操作数、变量或其他逻辑值分组(grouping)。作为一个示 例,高速緩存行151在部分151a中存储四个元素,例如四个操作数。 存储在高速緩存行151a中的元素可以处于打包或者压缩状态、以及未 压缩状态。此外,元素可以与高速緩存150的行、组或路的边界对准 或不对准地存储在高速緩存150中。下文将参考示范性实施例更详细 地论述存储器150。
高速緩存150和处理器100中的其他特征和装置存储和/或操作逻 辑<直。通常,逻辑级、或逻辑ii (logic values/logical values)的4吏用 又称为1和0,其简单地表示二进制逻辑状态。例如,1表示高逻辑 级,而0表示低逻辑级。还使用计算机系统中的其他值表示,例如逻 辑值或二进制值的十进制和十六进制表示。例如,釆用十进制数IO, 其用二进制值表示为1010,而用十六进制则表示为字母A。
在如图1所示的实施例中,跟踪对行151、 152和153的访问以 支持临界段的执行。访问包括各种操作,例如读、写、存储、加载、 驱逐、探听或者其他已知的对存储单元的访问。利用诸如字段151b、 152b和153b的访问跟踪字段来跟踪对它们的相应存储器行的访问。 例如,存储器行/部分151a与相应的跟踪字段151b相关联。此处,访 问跟踪字段151b与高速緩存行151a相关联并且对应于高速緩存行 151a,因为跟踪字段151b包括作为高速緩存行151的部分的位。关联 可以通过如图所示的物理放置进行,或者可以通过其他关联进行,例 如在硬件或软件查找表中将访问跟踪字段151b关联或映射到存储器行151a或151b。
作为简化的说明性示例,假设访问跟踪字段151b、 152b和153b 包括两个事务位笫一读跟踪位和第二写跟踪位。在默认状态中,即 在第一逻辑值,访问跟踪字段151b、 152b和153b中的第一和第二位 分别表示在临界段的执行期间并未访问高速緩存行151、 152和153。
假设在临界段中遇到从行151 a加载的加载操作。利用引退前和引 退后混合跟踪方案,将第 一读跟踪位从默认状态更新到第二访问状 态,例如第二逻辑值。如下所述,在混合方案中,可以在加载操作引 退之前(即,引退前)、或者在操作引退之后(即,在引退时或者在 引退之后)启动对第一读跟踪位的更新。此处,保持第二逻辑值的第 一读跟踪位表示在临界段的执行期间发生了从高速緩存行151的读取 /加载。可以按照类似于更新第 一写跟踪位的方式来处理存储操作以指 示在临界段的执行期间发生了对存储单元的存储。
因此,如果检查与行151相关联的字段151b中的跟踪位,并且 事务位表示默认状态,那么在临界段的未决期间并未访问高速緩存行 151。相反地,如果第一读跟踪位表示第二值,那么之前在临界段的 执行期间已经读取过高速緩存行151。此外,如果第一写跟踪位表示 第二值,那么在临界段的未决期间发生了对行151的写入。
潜在地使用访问字段151b、 152b和153b来支持任何类型的事 务执行或HLE。在处理器100能够进行硬件事务执行的一个实施例中, 如下所述,通过引退前和引退后访问来设置访问字段151b、 152b和 153b,以便检测冲突并执行确认。在对事务执行利用硬件事务存储器 (HTM)、软件事务存储器(STM)或其混合的另一个实施例中,访 问跟踪字段151b、 152b和153b提供类似的引退前和引退后混合跟踪 功能。
作为如何潜在地利用访问字段、具体来说是利用跟踪位来帮助事 务执行的第一示例,题为 "Hardware acceleration for A Software Transactional Memory System (用于软件事务存储器系统的硬件加 速)"、序列号为11/349787的共同未决的申请公开使用访问字段/事务位来加速STM。作为另一个示例,在题为"Global Overflow Method for Virtualized Transactional Memory(用于虚拟化事务存储器的全局溢 出方法)"、序列号为11/479902、代理人案号为042390.P23547的共 同未决的申请中论述了包括将访问字段/事务跟踪位的状态存储到第 二存储器中的事务存储器扩展/虚拟化。
在一个实施例中,跟踪逻辑180用于启动引退前访问以更新与临 界段中的加载相关联的跟踪字段。例如,假设临界段中的加载操作引 用(reference)行151。默认地,如果检测到临界段内的加载操作,那么 将执行对跟踪字段151b的引退前访问/更新。然而,当提交、成功执 行或者中止临界段时,将访问字段重置到它们的默认状态以准备跟踪 随后的临界段或者重新执行中止的临界段。然而,在能够进行无序 (OOO)执行的处理器中,来自随后的临界段的操作可能已经在高速 緩存150中设置了跟踪信息。因此,在重置访问跟踪字段后,随后临 界段的跟踪信息可能会丟失。因此,如果包括加载操作的临界段是连 续的临界段,即,在当前临界段结束之前就开始的随后的临界段,那 么将执行加载操作引退后访问以更新字段151b,从而确保准确的跟踪 信息。
转到图2,示出用于对连续的临界段启动引退后访问字段更新的 跟踪逻辑的实施例。如上所述,事务通常由开始事务和结束事务指令 来划分(demarcate),这允许容易地识别临界段。然而,HLE包括检 测/识别临界段,去掉划分临界段的锁定(lock),在临界段中止后对寄 存器状态进行检查点操作以用于回滚,跟踪试探性存储器更新,以及 检测潜在的数据冲突。检观'V识别临界段的一个困难在于规则锁定指令 和划分临界段的锁定/锁定解除指令之间的定界(delineating)。
在一个实施例中,对于HLE,通过锁定指令(即,开始临界段指 令)和匹配的锁定解除指令(即,结束临界段指令)来定义临界段。 锁定(lock)指令可以包括从地址位置加载,即,检查锁定是否可用; 以及对该地址位置进行修改/写入,即,更新该地址位置以便设置锁定。 可以用作锁定指令的指令的几个例子包括比较和交换指令、位测试和设置指令、以及交换和增加指令。在英特尔的IA-32和IA-64指令集 中,前面提到的指令包括CMPXCHG、 BTS和XADD,如在上面论述 的Intel 64和IA-32指令集文件中所描述的。
作为检测/辨识诸如CMPXCHG、 BTS和XADD的预定指令的示 例,检测逻辑和/或解码逻辑利用操作码字段或指令的其他字段来检测 指令。作为示例,CMPXCHG与下面的操作码相关联OF B0/r, REX+0F B0/r,和REX.W+0F Bl/r。在另一个实施例中,利用与指令相关联的 操作来检测锁定指令。例如,在x86中,通常使用下面这三个存储器 微操作来执行指示潜在的锁定指令的原子存储器更新(1 )操作码 为0x63的Load—Store—Intent(L_S_I); (2 )操作码为0x76的STA; 以及(3)操作码为0x7F的STD。此处,L—S—I在独占所有权状态获 得该存储单元并对该存储单元进行读取,而STA和STD操作对该存 储单元进行修改和写入。换言之,检测逻辑搜索具有存储意图的加载 (L—S—I)以定义临界段的开始。注意,锁定指令可以具有任意数量的 与读、写、修改存储器操作相关联的其他非存储器以及其他存储器操 作。
尽管在图2中没有示出,但通常利用堆栈(例如锁定堆栈)来保 存与锁定指令(检测到时)相关联的条目。锁定指令条目(L正)可 以包括任意数量的字段以存储与临界段相关的信息,例如锁定指令存 储物理地址(LIStrPA)、锁定指令加载值和加载大小、锁定指令存 储值和大小、微操作计数、解除标志、稍后锁定的获得标志、以及上 一个指令指针字段。
此处,对应于锁定指令的锁定解除指令划分临界段的结束。检测 逻辑搜索对应于由锁定指令修改的地址的锁定解除指令。注意,由锁 定指令修改的地址可以保存在锁定堆栈上的锁定指令条目(LIE)中。 因此,在一个实施例中,锁定解除指令包括将由相应锁定指令修改的 地址设置回到未锁定值的任何存储操作。将存储在锁定堆栈中的 L—S—I指令所引用的地址与随后的存储指令进行比较以检测相应的锁 定解除指令。关于临界段的检测和预测的更多信息可以参见题为"ACRITICAL SECTION DETECTION AND PREDICTION MECHANISM FOR HARDWARE LOCK ELISION (硬件锁定省略的临界段检测和预 测机制)"、申请序列号为11/599009的共同未决的申请。
换言之,在HLE的情况下,通过L一S—I指令和相应的锁定解除指 令来划分临界段。类似地,通过开始事务指令和结束事务指令来定义 事务的临界段。因此,提到开始临界段操作/指令时包括开始HLE、
事务存储器或其他临界段的任何指令,而提到结束临界段操作/指令时 包括启动HLE、事务存储器或其他临界段结束指令。
Fend(前端)205用于保存前端计数以指示执行处于临界段内的时 间。在一个实施例中,Fend205包括前端计数器。作为示例,将前端 计数器初始化为零默认值。响应于检测到开始临界段指令,前端计数 器递增,并且响应于检测到结束临界段指令,前端计数器递减。作为 说明,假设检测到L_S—I指令。在分配指令后,例如在分配加载后, Fend 205递增为l。因此,假设随后的指令在分配时位于临界段内, 这是因为Fend 205包括非零值1。
在一个实施例中,Fend 205还提供临界段的嵌套深度。此处,如 果分配多个开始临界段操作,那么Fend205相应地递增,以便表示临 界段的嵌套深度。例如,假设在第二临界段内嵌套有第一临界段,而 第二临界段嵌套在笫三临界段内。因此,在分配第三临界段的L_S_I 后,Fend 205递增到1,在分配第二临界段的L—S—I后递增到2,并 在分配第一临界段的L_S—I后递增到3。此外,响应于锁定解除指令 (即,相应的存储操作)的引退,Fend205递减。
因此,响应于执行锁定解除的第 一临界段的存储操作的引退, Fend 205递减到2,并且依次类推,直到第三临界段的锁定解除使Fend 205递减到0为止。此处,因为Fend 205保持零值,所以假设随后的 指令/操作不在临界段内。注意,在一个实施例中,将在分支之前对
Fend205的值进行检查点操作,这是因为Fend205的值可能因错误预 测的路径(即,分支错误预测)而需要恢复。
在一个实施例中,诸如加载緩沖器或存储緩冲器的访问緩冲器用于保存与存储器访问操作相关联的访问条目。每个访问緩冲器条目包 括跟踪字段部分和/或存储器更新字段。默认地,存储器更新字段用于 保持第一值,如逻辑0,以指示将不执行任何引退前访问跟踪。然而,
当Fend 205是指示操作位于临界段之内的非0时,将存储器更新字段 更新为第二值,如逻辑1,以指示将执行引退前访问以更新访问跟踪字段。
尽管在图2中示出了加载緩冲器220,但诸如存储緩沖器的任何 访问緩冲器都可按照类似的方式操作。因此,下面将详细论述加载緩 冲器220以说明访问緩沖器的示范性操作。加载緩冲器220包括多个 加载緩沖器条目,如条目226-233。当遇到加栽操作时,在加载緩冲 器220中创建/存储加载緩沖器条目。在一个实施例中,加载緩沖器 220按照程序顺序(即,指令或操作在程序代码中的排序的顺序)存 储加载緩沖器条目。此处,加载尾指针235引用最新的加载緩沖器条 目226,即,最近存储的加载緩冲器条目。相反,加载头指针236引 用最早的加载緩沖器条目230,它不是较早的加载。
在有序执行的处理元件中,按照存储在加载緩沖器中的程序顺序 执行加载操作。因此,首先执行最早的緩冲器条目,并且将加载头指 针236重新指向下一个最早的条目,例如条目229。相比之下,在无 序机器中,根据调度,按任何顺序执行操作。然而,通常会按照程序 顺序移除条目,即,从加载緩冲器解除条目分配。因此,加载头指针 236和加载尾指针235按照类似方式在两种类型的执行之间进行操作。
在一个实施例中,每个加载緩冲器条目(如条目230)包括存储 器更新字段225,它又可称作跟踪字段、设置高速緩存位字段和更新 事务位字段。加载緩冲器条目230可以包括任何类型的信息,例如存 储器更新值、指针值、对相关联的加载操作的引用、对与加栽操作相 关联的地址的引用、从地址加载的值、以及其他相关联的加载緩冲器 值、标志或引用。
作为示例,假设与加载条目230相关联的加载操作引用系统存储 器地址。无论是高速緩存行271a原始拥有并位于高速緩存行271a中还是响应于高速緩存270未命中而提取的,都假设系统存储器地址引 用的元素当前驻留在高速緩存行271a中。因此,当在临界段执行期间 从高速緩存行271a加载时,将更新读跟踪位271r以指示在临界段的 未决期间已经访问了相关联的高速緩存行271a。
当分配加载操作时,基于Fend 205的值更新存储器更新字段225。 响应于Fend 205保持值0而指示加载操作不在临界段之内,将更新字 段225更新为逻辑O,以指示将不进行对跟踪位271r的引退前访问。 注意,位、值或字段的更新不一定指示位、值或字段的改变。例如, 如果先前将字段225设置为逻辑0,那么对逻辑0的更新潜在地包括 将逻辑0重写到字段225、以及不采取任何动作而让字段225保持逻 辑0。
与上面论述的情景相反,如果在分配加载操作后Fend 205保持非 零值,那么将字段225设置为引退前(pre-retire)值,例如逻辑l,以指 示将执行对跟踪位271r的引退前访问。在一个实施例中,更新逻辑 210将在分配与条目230相关联的加载操作后更新字段225。作为示 例,更新逻辑210包括用于读取/保存来自Fend 205的当前值的寄存 器或其他逻辑和用于更新条目230中的字段225的逻辑。此处,引退 前访问包括在引退与条目230相关联的加载操作之前更新读跟踪位 271r的任何访问。在一个实施例中,当字段225保持引退前值时,响 应于与条目230相关联的加载操作的分派,启动对位271r的更新。换 言之,当分派与条目230相关联的加载时,如果字段225保持引退前 值,则调度用于更新位271r的访问。相反,如果字段225保持非引退 前值,如逻辑O,那么在分派后不调度任何访问。
然而,在无序执行的处理器中,可以无序地执行指令/操作。在一 个实例中,可以在引退当前临界段指令的结束以使Fend 205递减之前 分配随后的非临界段加载。因此,与非临界段加载相关联的加载缓沖 器条目包括引退前值,这导致假的访问跟踪,即,即使加载不在临界 段之内,仍跟踪高速緩存中的加载。然而,假(spurious)的访问跟踪不 会导致不正确的数据,并且很少导致由于不正确的数据争夺检测而引起的假中止。
或者,假设在引退来自当前临界段的结束指令之前分配从随后临 界段的加载。与加载相关联的加栽緩沖器条目将保持引退前值。然而, 如果结束指令现在是在分派加栽之前引退的,那么重置包括保持引退 前值的相关联的加载緩冲器条目的加载緩沖器中的更新跟踪字段。因
此,在分派(dispatch)加载后,不调度任何引退前访问。此处,另一处 理元件可以更新所加载的单元并且没有检测到数据冲突,这是因为访 问跟踪字段已经不再跟踪访问了 。
因此,在引退加载操作后,如果与加载操作相关联的加栽緩冲器 条目230的存储器更新字段225包括诸如逻辑0的重置值,那么检查 后端(Bend)逻辑215。 Bend215以类似于Fend205的方式操作,不 同之处在于,并不是关于Fend 205 ^f皮分配,当引退开始临界段指令时, Bend 215递增。此外,响应于结束临界段操作的引退,Bend 215递减。 如果如上所述,Bend保持指示临界段内的执行的非0值并且字段225 保持重置值,那么调度对高速緩存270的引退后访问以更新读跟踪位 271r。
图5包括连续临界段的简化的说明性实施例。注意,省略了指令 /操作的操作/访问、分配和分派以简化示例,并且这些操作可以按任 何顺序进行。在时间1 (tl),分配开始临界段1指令/操作。作为响 应,Fend 205递增到l。随后,在t2,引退开始临界段l操作,这使 Bend215递增到1。在t3,分配开始临界段2操作,由此导致Fend205 递增到2。随后,在时间t4,分配从临界段2的加载,它将从高速緩 存270的行271a加栽。由于Fend205保持值2,即,非零值,所以更 新逻辑210将加载緩沖器条目230中的访问跟踪字段225设置为引退 前值逻辑l。注意,加载緩冲器条目230与从临界段2的加载相关联。
在t5 ,尽管没有示出分配,但引退结束临界段1操作,这导致Fend 205递减到1,而Bend 215递减到0。响应于Bend 215递减到0,将 访问跟踪字段225重置为0。在t6,分派从临界段2的加载;然而, 更新/访问跟踪字段保持0,因此不调度对高速緩存270的引退前访问。因此,位271r仍处于指示在临界段2期间没有访问的默认状态。在t7, 引退开始临界段2操作,这使Bend 215递增到1 。
此外,在t8,引退从临界段2的加栽。此处,更新字段225保持 值0,而Bend 215保持非零值,即1。作为更新逻辑260所采取的那 些状况的结果,调度对高速緩存270的引退前访问。更新位271r以指 示在临界段2的执行期间发生了对行271a的访问。可见,通过实现引 退前和引退后混合系统,可以避免不跟踪从连续临界段的加栽的可 能。因此,在一个实施例中,对临界段存储器访问执行引退前更新, 但对随后的连续临界段,执行引退后更新。在上述的示例中,根据存 储器更新字段225保持O值并且Bend 215保持非零值来确定连续临界 段。换言之,在一个实施例中,连续临界段位于在分配第二临界段操 作的开始之前不引退第一临界段操作的结束的位置。此处,可在临界 段之间分配和/或执行几个或一些非事务搡作。然而,可以利用检测/ 确定连续临界段的任何方法。
用于更新访问跟踪字段的引退后访问可以按任何方式执行。在一 个实施例中,访问緩冲器能够保存较早的访问以允许引退后访问。如 图2所示,加载緩冲器220包括用于保存较早的加栽緩冲器条目 231-233的较早的加载部分250。当引退加载、例如与加载緩冲器条目 230相关联的加载时,加载头指针236指向下一个最早的条目229, 并且条目230变成较早的加栽部分250的部分。如果较早的加栽緩沖 器条目未指定用于引退后更新,即,按照保持引退前值的字段225的 指定执行引退前访问或者访问不在临界段之内,那么可立即从加载緩 冲器220中解除对它的分配。然而,当加载较早头指针237指向条目 230时,那么通过调度器来调度引退后访问以更新读跟踪字段271r。 题为"A POST-RETIRE SCHEME FOR TRACKING TENTATIVE ACCESSES DURING TRANSACTIONAL EXECUTION (用于跟踪事 务执行期间的试探性访问的引退后方案)"、申请序列号为11/517029 的共同未决申请更详细地论述了较早访问緩冲器条目和用于跟踪试 探性存储器访问的引退后访问。接下来参考图3,示出用于执行引退前和引退后混合更新以跟踪 试探性访问的方法的流程图的实施例。在流程305中,确定操作是否 是连续临界段的部分。在一个实施例中,临界段是事务存储器临界段。 在另一个实施例中,临界段是HLE检测的临界段。如上所述,在一个 实施例中,连续临界段包括在引退另 一个未决临界段的结束临界段之 前分配的临界段的开始临界段操作。作为示例,如上所述,根据诸如 前端计数器和后端计数器的计数器来确定分配和引退。因此,连续临 界段可以在代码中互相紧跟,或者相反,可在连续临界段之间存在非 事务操作。
如果操作是非连续临界段的部分,那么在流程310中,执行对存 储器的引退前访问以更新跟踪信息。在一个实施例中,跟踪信息包括 读和写位/字段以分别指示是否在临界段的未决期间发生了读和写。作 为示例,在分派该操作后,调度对存储器的访问以更新读和写位/字段。
相反,如果操作是连续临界段的部分,那么在流程320中,执行 对存储器的引退后访问以更新跟踪信息。换言之,如果之前的临界段 的结束临界段操作尚未引退并且当前的连续临界段的开始事务操作 已经分配完成,那么当引退之前的结束临界段时,可以重置或以其他 方式影响当前连续临界段的引退前跟踪数据。因此,在这个示例中, 引退后跟踪连续临界段的存储器访问。在一个实施例中,在引退该操 作后,与该操作相关联的访问緩冲器条目成为较早的访问緩沖器条 目。响应于操作变为较早的访问,操作引退后调度对跟踪信息的更新。
图4a-4c示出执行引退前和引退后混合访问跟踪的方法的流程图 的实施例。参考图4a,在流程405中,检测临界段操作的开始。在一 个实施例中,开始临界段操作是具有存储意图的加载(L_S_I)操作。 如上所述,在序列号为11/599009的共同未决申请中论述了临界段的 检测和预测示例。
在另一个实施例中,开始临界段操作包括开始事务操作。编译器 通常插入开始事务操作。例如,开始事务函数调用可以置于临界段之 前以执行特定的事务功能,例如检查点操作(checkpointing)、确认和日志记录。随后,在流程410中,分配开始临界段操作。注意,可以包 含和分配多于一个开始临界段操作。继续上面的示例,分配L—S—I操 作。
在流程415中,Fend计数响应于开始临界段操作的分配而递增。 注意,流程图从流程415分支到判定流程A。稍后的图中将说明,利 用Fend计数变量作为流程中的其他判定的输入。尽管流程415通过 递增来影响Fend计数的值,但诸如图4b的流程440的其他流程也会 影响Fend计数的值。
然后,在分派之后,在流程420引退开始临界段操作。例如,如 果开始临界段操作是L_S—I,那么引退加栽条目,并且稍后潜在地从 加载緩冲器解除对加载条目的分配。在流程425中,Bend计数响应于 引退开始临界段操作而递增。类似于判定流程A,判定流程B采用 Bend的递增作为输入。
接着参考图4b,在流程430中,在流程430检测并在流程435引 退结束临界段操作。在一个实施例中,结束临界段操作是将锁定值更 新为未锁定的相应的存储操作。在另一个实施例中,结束临界段操作 是结束事务指令/操作。类似于开始事务指令,编译器可插入操作以执 行各种任务,例如确认、回滚和提交。
在流程440和445中,Fend和Bend都响应于引退结束临界段操 作而递减。此处,在HLE临界段情况下,如上文提到的,可能需要地 址比较以确定临界段操作的HLE结束。通常,在分配该操作后,因此 即使在一个实施例中,Fend在分配结束临界段操作后递减,地址仍是 不可用的;此处,在引退结束临界段操作时,也递减Fend。如上所述, Fend和Bend的递减分别被作为判定流程A和B的输入。尽管未示出, {旦参考图4c更详细地论述的更新访问字,殳可以响应Bend递减到零而 重置、清零或更新。
转到图4c,在流程450中分配加载操作。在流程455中,确定 Fend是否为非零。来自图4a和4b的判定流程A ^皮输入到流程455。 如果Fend保持0值,那么在流程460中继续正常的非临界段执行。否则,如果Fend因开始临界段操作而递增并且不会因结束临界段操 作而递减到o,那么假设加载操作位于执行临界段之内。此处,对访
问字段、更新跟踪字段或与加栽操作相关联的加栽緩冲器条目中的其
他字段进行更新以指示将在流程465中执行对加载跟踪字段的引退前访问。
在流程470中,分派加栽。如果根据判定流程475中所确定的, 将访问字段设置为流程465中的引退前访问值,那么在流程480中启 动对加载跟踪字段的引退前访问。在一个实施例中,调度器基于在分 派相关联的加载操作后保持引退前值的访问字段调度访问。在启动引 退前访问之后或者直接在判定流程475之后,将在流程485中引退加 栽操作。
响应于引退加载操作,在流程490中确定Bend是否是非零并且 访问字段是否指示无引退前访问。注意,判定流程B是流程490的输 入。如果Bend是非零并且访问字段指示没有引退前访问,那么在流 程495中,启动对加载跟踪字段的引退后更新。否则,执行按正常继续。
如上所述,可以对大部分临界段执行引退前访问跟踪。然而,为 了保证有效的访问跟踪,可以对连续的临界段执行引退后更新。因此, 通过执行大部分引退前更新,因为不必访问高速緩存两次,即, 一次 用于访问而一次用于更新跟踪信息,所以可以节约功率。然而,通过 使用对跟踪信息的 一些引退后更新而保持了数据跟踪的准确性。
上述方法、软件、固件或代码的实施例可以经由存储在可由处理 元件执行的机器可访问或机器可读介质上的指令或代码来实现。机器 可访问/可读介质包括以诸如计算机或电子系统的机器可读的形式提 供(即,存储和/或发送)信息的任何机构。例如,机器可访问介质包 括随机存取存储器(RAM),如静态RAM (SRAM)或动态RAM (DRAM);只读存储器(ROM);磁或光存储介质;以及闪存装置。 作为另一个示例,机器可访问/可读介质包括用于接收、复制、存储、 传送或以其他方式操纵包括上述方法、软件、固件或代码的实施例的电、光、声或其他形式的传播信号(例如栽波、红外信号、数字信号) 等等的任何机构。
整篇说明书中提到"一个实施例"或"实施例"时意味着,结合 该实施例描述的特定的特征、结构或特性包含在本发明的一个实施例 中,并且不需要出现在所论述的所有实施例中。因此,在整篇说明书 的不同地方出现短语"在一个实施例中"或"在实施例中,,时不一定 都指相同的实施例。此外,可以在一个或多个实施例中以任何合适的 方式组合这些特定的特征、结构或特性。
在以上说明中,参考特定的示范性实施例给出了详细描述。然而, 很明显,在不脱离如随附权利要求所述的本发明的更宽的精神和范围 的情况下,可以对此做出各种修改和变化。因此,应将i兌明书和附图 视为是具说明性意义而不是限制性意义的。此外,上文对实施例和其 他示范性语言的使用不一定指相同的实施例或相同的示例,而是可以 指完全不同的实施例,同时也可以潜在地指相同的实施例。
权利要求
1、一种设备,包括处理元件,用于执行代码的非临界段和代码的临界段;与所述处理元件相关联的存储器,其中所述存储器的行将与跟踪字段相关联,并且所述代码的临界段将包含引用所述行的操作;与所述存储器相关联的跟踪逻辑,其响应于所述代码的临界段是代码的随后连续临界段,启动对所述跟踪字段的操作引退后更新以指示在所述临界段执行期间发生了对所述行的访问,并且响应于所述代码的临界段不是代码的随后连续临界段,启动对所述跟踪字段的操作引退前更新以指示在所述代码的临界段执行期间发生了对所述行的访问。
2、 根据权利要求1所述的设备,其中所述跟踪逻辑包括用于确 定所述操作包含在所述代码的临界段中的前端跟踪逻辑。
3、 根据权利要求2所述的设备,其中所述前端跟踪逻辑包括前 端计数器,所述前端计数器响应于分配所述临界段操作的开始而递 增,并且响应于所述前端计数器保持大于所述前端计数器的预定值的 值,确定所述操作包含在所述代码的临界段中。
4、 根据权利要求3所述的设备,其中所述前端计数器响应于引 退所述临界段操作的结束而递减,并且所述临界段操作的开始包括具 有存储意图的加载(L_S—I)操作,而所述临界段操作的结束包括引 用对应于所述L—S_I操作的地址的存储操作。
5、 根据权利要求3所述的设备,其中所述前端计数器响应于分 配所述临界段操作的结束而递减,并且所述临界段操作的开始包括开 始事务操作,而所述临界段操作的结束包括结束事务操作。
6、 根据权利要求3所述的设备,其中所述跟踪逻辑还包括后端 计数器,所述后端计数器响应于引退所述临界段操作的开始而递增, 并且响应于引退所述临界段操作的结束而递减。
7、 根据权利要求6所述的设备,还包括能够保存较早访问条目的访问緩冲器,所述访问緩冲器包括对应于所述操作的访问条目,其 中所述访问条目包括跟踪字段部分。
8、 根据权利要求7所述的设备,其中所述操作是加载操作,所 述访问緩沖器包括能够保存较早加载条目的加载緩冲器,并且所述访 问条目包括对应于所述加载操作的加载条目。
9、 根据权利要求7所述的设备,还包括耦合到所述前端计数器 和所述访问緩冲器的更新逻辑,响应于在分配所述操作后所述前端计 数器保持大于默认值的值,所述更新逻辑更新所述访问条目的跟踪字 段部分以指示将启动对所述跟踪字段的所述操作引退前更新。
10、 根据权利要求9所述的设备,其中所述更新逻辑还耦合到所 述后端计数器,响应于所述后端计数器递减到默认值,所述更新逻辑 重置所述访问条目的跟踪字段部分以指示将不启动对所逸跟踪字段 的所述操作引退前更新。
11、 根据权利要求10所述的设备,其中所述跟踪逻辑响应于所 述代码的临界段是代码的随后连续临界段而启动对所述跟踪字段的 所述操作引退后更新以指示在所述临界段执行期间发生的对所述行 的访问包括所述跟踪逻辑响应于所述访问条目的跟踪字段部分的重 置以及所述后端计数器保持大于所述默认值的值而启动对所述跟踪 字段的所述操作引退后更新。
12、 一种系统,包括 集成电路,包括能够执行代码的临界段(CS)的执行单元,所述CS包括引 用地址的加载操作,其中所述CS将通过开始CS操作和结束CS操作 进行划分;耦合到所述执行单元的存储器,所述存储器包括与所述地址 相关联的存储器行,其中加载跟踪字段将与所述存储器行相关联;与所述执行单元相关联的临界段逻辑,用于确定所述临界段 是否是连续临界段;以及耦合到所述临界段逻辑的加载緩冲器,用于保存将与所述加载操作相关联的加载条目,其中所述加载条目将包括存储器更新字 段,所述存储器更新字段响应于所述临界段逻辑确定所述临界段不是 连续临界段而保持第一值以指示将执行对所述加载跟踪字段的引退 前更新,并且响应于所述临界段逻辑确定所述临界段是连续临界段而 保持第二值以指示将执行对所述加载跟踪字段的引退后更新;以及耦合到所述集成电路的较高级的存储器,用于在与所述地址相关 联的存储单元上存储元素。
13、 根据权利要求12所述的系统,其中所述临界段逻辑包括 第一计数器,其响应于^r测到所述开始CS操作而递增并且响应于引退所述结束CS操作而递减;第二计数器,其响应于引退所述开始CS操作而递增并且响应于 引退所述结束CS操作而递减。
14、 根据权利要求13所述的系统,其中响应于在所述第一计数 器保持非零值时检测到所述加载操作,将所述存储器更新字段设置为所述第一值,并且响应于所述第二计数器递减到零值,将所述存储器 更新字段设置为所述第二值。
15、 根据权利要求14所述的系统,其中所述临界段逻辑确定所 述临界段是否是连续临界段包括响应于所述存储器更新字段保持所 述第二值并且所述第二计数器保持非零值,确定所述临界段是连续临界段。
16、 根据权利要求15所述的系统,其中所述开始CS操作是从由 开始事务操作、具有存储意图的加载(L—S—I)操作、以及组合的加 载和存储操作组成的组中选择的操作,并且所述结束CS操作是从由 结束事务操作、对应于之前的I^S—I操作的存储操作、以及组合的算 术和存储操作組成的组中选择的。
17、 根据权利要求15所述的系统,其中所述加载緩冲器能够保 存较早的加载条目,并且当引用所述加栽条目作为所述加载緩冲器中 的头较早加载条目时,将执行对所述存储器行的引退后更新。
18、 根据权利要求15所述的系统,其中对所述加载跟踪字段的所述引退前和所述引退后更新将更新所述跟踪字段以指示在所述临 界段的执行期间发生了从所述存储器行的加载。
19、 一种方法,包括执行对第 一访问跟踪字段的引退前更新,以指示在第一未决临界 段的执行期间访问了对存储器的第一行的访问,所述存储器的第一行 与所述第一访问跟踪字段相关联;以及执行对第二访问跟踪字段的引退后更新,以指示在第二未决临界 段的执行期间访问了对存储器的第二行的访问,所述存储器的第二行 与所述第二访问跟踪字段相关联。
20、 根据权利要求19所述的方法,还包括确定所述第一未决 临界段是非连续未决临界段;以及确定所述第二未决临界段是连续未 决临界段。
21、 根据权利要求20所述的方法,其中确定所述第一未决临界 段是非连续未决临界段包括响应于分配开始临界段操作而将前端计数递增; 响应于引退结束临界段操作而将所述前端计数递减; 响应于在分配所述访问后所述前端计数表示非零值,将对应于与所述存储器的第 一 行相关联的访问的访问緩冲器条目中的字段更新为引退前值;以及响应于在引退所述访问后所述访问緩沖器条目中的所述字段保持所述引退前值,确定所述第一未决临界段是非连续临界段。
22、 根据权利要求21所述的方法,其中保持所述第一值的所述 第一访问緩冲器条目中的所述字段用于指示将响应于分派所述第一 访问而执行对所述第 一访问跟踪字段的引退前更新。
23、 根据权利要求20所述的方法,其中确定所述第二未决临界 段是连续未决临界段包括响应于引退开始临界段操作而将后端计数递增; 响应于引退结束临界段操作而将所述后端计数递减; 响应于所述后端计数递减到零,将对应于与所述存储器的第二行响应于在引退所述访问之后所述访问緩冲器条目中的所述字段 保持所述非访问值并且所述后端计数保持非零值,确定所述第二未决 临界段是连续临界段。
全文摘要
本文描述一种用于进行引退前和引退后混合试探性访问跟踪的方法和设备。通常在临界段的执行期间执行访问跟踪,临界段可以通过传统的锁定或事务存储器指令定义。执行对存储器的引退前访问以更新临界段执行期间的访问的跟踪信息。然而,当引退之前的结束临界段操作时,对管线中的随后的连续临界段访问执行对跟踪信息的引退后更新。
文档编号G06F9/46GK101533363SQ200810190809
公开日2009年9月16日 申请日期2008年11月7日 优先权日2007年11月7日
发明者G·S·谢菲尔, H·阿卡里, R·拉瓦, S·T·斯里尼瓦桑, S·雷金 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1