CN101097544A - 虚拟化事务存储器的全局溢出方法 - Google Patents
虚拟化事务存储器的全局溢出方法 Download PDFInfo
- Publication number
- CN101097544A CN101097544A CNA2007101290073A CN200710129007A CN101097544A CN 101097544 A CN101097544 A CN 101097544A CN A2007101290073 A CNA2007101290073 A CN A2007101290073A CN 200710129007 A CN200710129007 A CN 200710129007A CN 101097544 A CN101097544 A CN 101097544A
- Authority
- CN
- China
- Prior art keywords
- affairs
- memory
- overflow
- execution
- overall
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
本文描述用于虚拟化和/或扩充事务存储器的方法及装置。事务采用本地共享事务存储器、如高速缓冲存储器来执行。在使共享事务存储器溢出时,事务存储器被虚拟化和/或扩充到高级存储器、如系统存储器。在溢出事件、如先前在当前未决事务期间访问的高速缓存行的逐出时,设置溢出标记,以便通知处理器/核心:事务存储器将在全局溢出表中虚拟化。全局溢出表的基址也可能被存储,以便引用高级存储器中的全局溢出表的基址。
Description
技术领域
本发明涉及处理器执行领域,具体来说,涉及执行操作组。
背景技术
半导体加工和逻辑设计方面的进步允许在集成电路器件上可存在的逻辑数量的增加。因此,计算机系统配置已经从系统中的单个或多个集成电路发展到各个集成电路上存在的多个核心和多个逻辑处理器。处理器或集成电路通常包括单个处理器管芯,在其中,处理器管芯可包括任何数量的核心或逻辑处理器。
作为一个实例,单个集成电路可能具有一个或多个核心。术语“核心”通常表示集成电路上的逻辑保持独立体系结构状态的能力,在其中,各独立体系结构状态与至少一部分专用执行资源关联。作为另一个实例,单个集成电路或单个核心可具有用于执行多个软件线程的多个硬件线程,这又称作多线程集成电路或多线程核心。多个硬件线程通常共享公共数据高速缓存、指令高速缓存、执行单元、分支预测器、控制逻辑、总线接口及其它处理器资源,同时保持各逻辑处理器的特有体系结构状态。
集成电路上数量不断增加的核心和逻辑处理器使更多软件线程能够被执行。但是,可同时执行的软件线程的数量的增加对于使软件线程之间共享的数据同步造成问题。多个核心或多个逻辑处理器系统中访问共享数据的一个常见解决方案包括使用锁定来保证对共享数据的多个访问的互斥。但是,执行多个软件线程的不断增加的能力可能引起错误争用和执行的串行化。
另一个数据同步技术包括事务存储器(TM)的使用。事务执行往往包括推测地执行一组的多个微操作、操作或指令。但是,在先前的硬件TM系统中,如果事务对于存储器变得过大、即溢出,则通常重启事务。在这里,执行事务一直到溢出所花费的时间可能被浪费。
发明内容
根据本发明的一个方面,提供一种装置,包括:执行事务的执行模块;耦合到所述执行模块的第一存储器,所述第一存储器包括多个存储器行,其中,所述多个存储器行中的存储器行与对应的跟踪字段关联,以便跟踪所述事务执行期间对所述存储器行的访问;以及溢出逻辑,在所述事务执行期间,响应与所述存储器行关联的溢出事件,支持所述第一存储器到第二存储器的扩充。
根据本发明的另一方面,提供一种装置,包括:执行组合为事务的多个操作的执行单元;耦合到所述执行模块的事务存储器,所述存储器包括多个块;以及耦合到所述执行单元、存储事务溢出标记的寄存器,如果组合为所述事务的所述多个操作之一使所述存储器溢出,则将设置所述事务溢出标记。
根据本发明的又一方面,提供一种装置,包括:处理器,其中包括执行事务中的多个操作的执行单元;耦合到所述执行单元的高速缓存,所述高速缓存包括多个高速缓存行;响应与所述事务中的所述多个操作中的操作关联的溢出事件而存储全局溢出表的基址的表示的基址寄存器。
根据本发明的又一方面,提供一种装置,包括:执行事务的执行模块;耦合到所述执行模块的存储器,所述存储器包括多个块,其中,所述多个块中的块与第一位和第二位关联,以便跟踪在所述事务执行期间对所述块的访问;存储溢出标记的第一存储元件,如果当前访问将逐出所述块,以及所述第一或第二位跟踪到在所述事务执行期间对所述块的先前访问,则在对所述存储器的所述当前访问时将设置所述溢出标记;以及在设置了所述溢出标记时存储全局溢出表的基址的第二存储元件。
根据本发明的又一方面,提供一种系统,包括:微处理器,其中包括执行事务的执行单元;耦合到所述执行单元的事务存储器(TM),所述TM包括多行,其中,各行包括跟踪在所述事务执行期间的访问的对应事务跟踪字段;响应在所述事务执行期间发生的溢出事件而支持所述TM的虚拟化的溢出逻辑;以及存储所述虚拟化TM的在存储器分级结构中比所述TM更高级的第二存储器。
根据本发明的又一方面,提供一种方法,包括:检测与将作为事务的一部分被执行的操作关联的溢出事件,所述操作引用事务存储器中的存储器行;如果当前没有设置溢出位,则响应所述溢出事件而设置溢出位;以及响应设置溢出位而把所述事务存储器扩充到第二存储器。
根据本发明的又一方面,提供一种方法,包括:执行组合为事务的多个操作中的操作;根据所述操作选择高速缓存中要逐出的高速缓存行;以及如果先前在所述事务未决期间访问了所选高速缓存行:如果当前没有设置全局溢出,则设置全局溢出位;如果当前没有分配用于全局溢出表的第一页面,则为所述全局溢出表分配第二存储器中的存储器的第一页面,其中,所述全局溢出表存储与所述事务关联的状态信息;以及在为所述全局溢出表分配所述第一页面时,把系统存储器中的第一页面的基址写入基址寄存器。
附图说明
附图中的各图以举例而不是限定的方式来说明本发明。
图1说明能够扩充事务存储器的多核心处理器的一个实施例。
图2a说明包括让各核心存储溢出标记的寄存器的多核心处理器的一个实施例。
图2b说明包括存储溢出标记的全局寄存器的多核心处理器的另一个实施例。
图3说明包括让各核心存储溢出表的基址的基址寄存器的多核心处理器的一个实施例。
图4a说明溢出表的一个实施例。
图4b说明溢出表的另一个实施例。
图5说明包括多个页面的溢出表的另一个实施例。
图6说明虚拟化事务存储器的系统的一个实施例。
图7说明用于虚拟化事务存储器的流程图的一个实施例。
图8说明用于虚拟化事务存储器的流程图的另一个实施例。
具体实施方式
在以下描述中,阐述了大量具体细节,诸如用于事务执行的具体硬件支持的实例、处理器中本地/存储器的具体类型以及存储器访问和位置的具体类型等,以便提供对本发明的透彻理解。然而,本领域的技术人员会清楚,这些具体细节不一定要用于实施本发明。在其它情况下,没有详细描述诸如采用软件的事务的编码、事务的划分、具体多核心和多线程处理器体系结构、中断生成/处理、高速缓存组织以及微处理器的具体操作细节之类的众所周知的组件或方法,以免不必要地影响对本发明的理解。
本文所述的方法及装置用于扩充和/或虚拟化事务存储器(TM),以便在事务执行期间支持本地存储器的溢出。具体来说,主要参照多核心处理器计算机系统来论述虚拟化和/或扩充事务存储器。但是,用于扩充/虚拟化事务存储器的方法及装置不限于此,因为它们可在诸如蜂窝电话、个人数字助理、嵌入控制器、移动平台、桌面平台和服务器平台之类的任何集成电路装置或系统上实现或者与其关联地实现,以及结合利用事务存储器的其它资源、如硬件/软件线程来实现。
参照图1,说明能够扩充事务存储器的多核心处理器100的一个实施例。事务执行通常包括把多个指令或操作组合为事务、代码的原子段或者代码的临界段。在某些情况中,单词“指令”的使用表示由多个操作组成的宏指令。有两种常见方式来标识事务。第一实例包括以软件划分事务。在这里,某种软件划分包含在代码中以便标识事务。在可结合前述软件划分来实现的另一个实施例中,事务通过硬件来组合或者通过表明事务的开始和事务的结束的指令来识别。
在处理器中,推测地执行或者非推测地执行事务。在第二种情况中,以某种形式的锁定或保证对于待访问存储器位置的有效访问来执行指令组。在该备选方案中,事务的推测执行更普遍,在其中,事务被推测地执行和在事务结束时提交。本文所使用的“事务未决”表示已经开始执行但没有提交或中止、即未决的事务。
在事务的推测执行期间,在提交事务之前通常没有使对存储器的更新全局可见。在事务仍然未决的同时,跟踪从存储器加载以及写入存储器的位置。在成功验证那些存储器位置时,事务被提交,以及使事务期间进行的更新全局可见。但是,如果事务在其未决期间失效,则重新开始事务而没有使更新全局可见。
在所述实施例中,处理器100包括两个核心、即核心101和102;但是,可存在任何数量的核心。核心通常表示位于集成电路上的能够保持独立体系结构状态的任何逻辑,其中,各独立保持的体系结构状态与至少一部分专用执行资源关联。例如,在图1中,核心101包括执行单元110,而核心102包括执行单元115。即使执行单元110和115表示为在逻辑上是分离的,它们也可在物理上设置成同一个单元的组成部分或者非常接近。但是,作为一个实例,调度器120不能在执行单元115上为核心101调度执行。
与核心相比,硬件线程通常表示位于集成电路上的能够保持独立体系结构状态的任何逻辑,其中,独立保持的体系结构状态共享对执行资源的访问。可以看到,由于某些处理资源被共享而其它的专用于体系结构状态,所以硬件线程与核心的命名之间界限重叠。然而,核心和硬件线程常被操作系统看作是单独的逻辑处理器,其中各逻辑处理器能够执行线程。因此,处理器、如处理器100能够执行诸如线程160、165、170和175之类的多个线程。虽然各核心、如核心101表示为能够执行诸如线程160和165之类的多个软件线程,但是核心有可能也只能够执行单个线程。
在一个实施例中,处理器100包括对称核心101和102。在这里,核心101和核心102是具有相似组件和体系结构的相似核心。或者,核心101和核心102可以是具有不同组件和配置的不对称核心。然而,由于核心101和102被表示为对称核心,所以将论述核心101中的功能块,避免对核心102进行重复论述。注意,所示的功能块是逻辑功能块,它们可包括在其它功能块之间共享或者与其它功能块的边界重叠的逻辑。另外,功能块中的每个不一定都需要,并且可能以不同配置来互连。例如,取和解码块140可包括取和/或预取单元、耦合到取单元的解码单元以及耦合在取单元之前、解码单元之后或者耦合到取和解码这两个单元的指令高速缓存。
在一个实施例中,处理器100包括用于与外部装置进行通信的总线接口单元150以及在核心101与102之间共享的高级高速缓存145、如二级高速缓存。在一个备选实施例中,核心101和102各包括分开的二级高速缓存。
取、解码和分支预测单元140耦合到二级高速缓存145。在一个实例中,核心101包括取指令的取单元,对所取指令解码的解码单元,以及存储所取指令、已解码指令或者所取和已解码指令的组合的指令高速缓存或跟踪高速缓存。在另一个实施例中,取和解码块140包括具有分支预测器和/或分支目标缓冲器的预取器。另外,只读存储器、如微码ROM 135可能用来存储更长或更复杂的已解码指令。
在一个实例中,分配器和重命名器块130包括分配器,用于预留资源、如寄存器文件,以便存储指令处理结果。但是,核心101可能能够无序执行,在其中,分配器和重命名器块130还预留其它资源、如重排序缓冲器,以便跟踪指令。块130还可包括寄存器重命名器,以便把程序/指令参考寄存器重命名为核心101内部的其它寄存器。重排序/退出单元125包括诸如上述重排序缓冲器之类的组件,以便支持无序执行以及无序执行的指令的稍后退出。作为一个实例,加载到重排序缓冲器中的微操作由执行单元无序执行,然后再以与微操作进入重排序缓冲器相同的顺序从重排序缓冲器中取出、即退出。
在一个实施例中,调度器和寄存器文件块120包括在执行单元110上调度指令的调度器单元。实际上,可能按照其类型以及执行单元110的可用性在执行单元110上调度指令。例如,在具有可用浮点执行单元的执行单元110的端口上调度浮点指令。还包括与执行单元110关联的寄存器文件,以便存储信息指令处理结果。核心101中可用的示范执行单元包括浮点执行单元、整数执行单元、转移执行单元、加载执行单元、存储执行单元以及其它已知的执行单元。在一个实施例中,执行单元110还包括保留台和/或地址生成单元。
在所述实施例中,低级高速缓存103用作事务存储器。具体来说,低级高速缓存103是存储当前使用/操作的元素、如数据操作数的一级高速缓存。高速缓存103包括诸如行104、105和106之类的高速缓存行,它们又可称作高速缓存103中的存储器位置或块。在一个实施例中,高速缓存103被组织成集合关联高速缓存;但是,高速缓存103可被组织成全关联、集合关联、直接映射或者其它已知的高速缓存组织。
如图所示,行104、105和106包括部分或字段,例如部分104a和字段104b。在一个实施例中,行、位置、块或字,例如行104、105和106的部分104a、105a和106a能够存储多个元素。元素表示任何指令、操作数、数据操作数、变量或者共同存储在存储器中的其它逻辑值组。作为一个实例,高速缓存行104在部分104a中存储四个元素,其中包含指令和三个操作数。高速缓存行104a中存储的元素可处于打包或压缩状态以及未压缩状态。此外,元素可能存储在没有与高速缓存103的行、集合或路的边界对齐的高速缓存103中。下面参照示范实施例更详细地论述存储器103。
处理器100中的高速缓存103以及其它特征和装置存储逻辑值和/或对其进行操作。逻辑电平、逻辑值的使用又常称作1和0,它只是表示二元逻辑状态。例如,1表示高逻辑电平,以及0表示低逻辑电平。在计算机系统中已经使用值的其它表示,例如逻辑值或二进制值的十进制和十六进制表示。例如,以十进制数10为例,它以二进制值表示为1010,以及以十六进制表示为字母A。
在图1所示的实施例中,跟踪对行104、105和106的访问,以便支持事务执行。诸如字段104b、105b和106b之类的访问跟踪字段用来跟踪对其相应的存储器行的访问。例如,存储器行/部分104a与对应的跟踪字段104b关联。在这里,访问跟踪字段104b与高速缓存行104a关联并且与其对应,因为跟踪字段104b包含作为高速缓存行104的一部分的位。关联可通过如图所示的物理布置进行,或者通过其它关联,例如在硬件或软件查找表中把访问跟踪字段104b与地址引用存储器行104a或104b相关或者映射。实际上,事务访问字段以硬件、软件、固件或者它们的任何组合来实现。
因此,在事务执行期间对行104a访问时,访问跟踪字段104b跟踪该访问。访问包括诸如读取、写入、存储、加载、逐出、窥探或者对存储器位置的其它已知访问之类的操作。
作为一个简化的说明性实例,假定访问跟踪字段104b、105b和106b包括两个事务位:第一读取跟踪位和第二写入跟踪位。在缺省状态、即第一逻辑值,访问跟踪字段104b、105b和106b中的第一和第二位分别表示高速缓存行104、105和106在事务执行期间、即事务未决期间没有被访问。在来自高速缓存行104a或者与高速缓存行104a关联的系统存储器位置的加载操作产生从行104a的加载时,访问字段104b中的第一读取跟踪位被设置为第二状态/值、如第二逻辑值,以表示在事务执行期间已经发生从高速缓存行104的读取。类似地,在写入高速缓存行105a时,访问字段105b中的第二写入跟踪位被设置为第二状态,以表示事务执行期间发生了对高速缓存行105的写入。
因此,如果与行104a关联的字段104a中的事务位被检查,以及事务位表示缺省状态,则高速缓存行104在事务未决期间没有被访问。相反,如果第一读取跟踪位表示第二值,则高速缓存行104先前在事务未决期间已经被访问。更具体来说,在事务执行期间发生从行104a的加载,如所设置的访问字段104b中的第一读取跟踪位表示。
访问字段104b、105b和106b在事务执行期间也可能具有其它用途。例如,事务的验证在传统上以两种方式进行。首先,如果跟踪到使事务中止的无效访问,则在无效访问时,事务被中止以及可能重新开始。或者,事务执行期间被访问的行/位置的验证在提交之前在事务结束时进行。在那个时候,如果验证成功,则提交事务,或者如果验证不成功,则中止事务。在任一种情况中,访问跟踪字段104b、105b和106b是有用的,因为它们标识哪些行在事务执行期间已经被访问。
作为另一个简化的说明性实例,假定第一事务正在执行,以及在第一事务执行期间,发生来自行105a的加载。因此,对应的访问跟踪字段105b表示在事务执行期间发生了对行105的访问。如果第二事务导致对于行105a的冲突,则第一或者第二事务可根据第二事务对行105的访问而立即中止,因为访问跟踪字段105b表示由第一未决事务从行105加载。
在一个实施例中,在第二事务导致对于行105的冲突时,其中对应的字段105b表明由第一未决事务进行的先前访问,则产生中断。当冲突在两个未决事务之间发生时,那个中断由缺省处理机和/或发起第一或第二事务的中止的中止处理机来处理。
在中止或提交事务时,在事务执行期间设置的事务位被清除,以便确保事务位的状态重置为缺省状态,用于以后在后续事务中的访问的跟踪。在另一个实施例中,访问跟踪字段还可存储诸如核心ID或线程ID之类的资源ID以及事务ID。
如上所述以及接下来参照图1所述,低级高速缓存103用作事务存储器。但是,事务存储器不受此限制。实际上,高级高速缓存145可能用作事务存储器。在这里,对高速缓存145的行的访问被跟踪。如上所述,标识符、如线程ID或事务ID可能用于高级存储器、如高速缓存145中,以便跟踪哪一个事务、线程或资源执行了在高速缓存145中跟踪的访问。
作为可能的事务存储器的又一个实例,与处理元件或资源关联的、作为存储变量、指令或数据的执行空间或高速暂存区的多个寄存器用作事务存储器。在这个实例中,存储器位置104、105和106是包括寄存器104、105和106的一组寄存器。事务存储器的其它实例包括高速缓存、多个寄存器、寄存器文件、静态随机存取存储器(SRAM)、多个锁存器或其它存储元件。注意,在从存储器位置读取或写入其中时,处理器100或者处理器100上的任何处理资源可对系统存储器位置、虚拟存储器地址、物理地址或其它地址进行寻址。
只要事务没有使事务存储器、如低级高速缓存103溢出,则事务之间的冲突通过分别跟踪对于对应的行104、105和106的访问的访问字段104b、105b和106b的操作来检测。如上所述,事务可采用访问跟踪字段104b、105b和106b来验证、提交、失效和/或中止。但是,当事务使存储器103溢出时,溢出模块107将支持事务存储器103的虚拟化和/或扩充,即响应溢出事件而把事务的状态存储到第二存储器。因此,不是在存储器103溢出时中止事务,这导致与执行事务中的先前操作关联的执行时间的损失,而是使事务状态虚拟化以便继续执行。
溢出事件可包括存储器103的任何实际溢出或者存储器103的溢出的任何预测。在一个实施例中,溢出事件选择先前在当前未决事务的执行期间被访问的存储器103中的行的逐出或实际逐出。换言之,操作正使存储器103溢出,因为存储器103充满了已经由当前未决事务访问的存储器行。因此,存储器103选择待逐出的与未决事件关联的行。存储器103基本上已满,并且尝试通过逐出与仍然未决的事务关联的行来创建空间。已知或者可用的技术可用于高速缓存替换、行的逐出、提交、访问跟踪、事务冲突检查以及事务验证。
但是,溢出事件可能不限于存储器103的实际溢出。例如,关于事务对于存储器103来说过大的预测可构成溢出事件。在这里,算法或其它预测方法用来确定事务的大小,并在存储器103实际溢出之前创建溢出事件。在另一个实施例中,溢出事件是嵌套事务的开始。由于嵌套事务更为复杂并且在传统上采用更多存储器来支持,所以一级嵌套事务或后续级嵌套事务的检测可能产生溢出事件。
在一个实施例中,溢出逻辑107包括存储溢出位的溢出存储元件、如寄存器以及基址存储元件。虽然溢出逻辑107在相同功能块中表示为高速缓存控制逻辑,但是存储溢出位的溢出寄存器和基址寄存器可能出现在微处理器100中的任何位置。作为一个实例,处理器100上的各核心包括存储全局溢出表的基址的表示和溢出位的溢出寄存器。但是,溢出位和基址的实现不受此限制。实际上,处理器100上的所有核心或线程均可见的全局寄存器可包括溢出位和基址。或者,各核心或硬件线程包括基址寄存器,以及全局寄存器包括溢出位。可以看到,可实现任何数量的配置来存储溢出表的溢出位和基址。
溢出位根据溢出事件来设置。继续上述实施例,在其中,选择先前在未决事务的执行期间被访问的存储器103中的行供逐出构成溢出事件,溢出位根据用于逐出的先前在未决事务的执行期间被访问的存储器103中的行的选择来设置。
在一个实施例中,当诸如行104之类的行被选择用于逐出并且先前在未决事务期间被访问时,溢出位采用硬件、如设置溢出位的逻辑来设置。例如,高速缓存控制器107根据任何数量的已知或者可用的高速缓存替换算法来选择行104供逐出。实际上,高速缓存替换算法可能对替换先前在未决事务的执行期间被访问的高速缓存行、如行104存在偏见。然而,在选择行104供逐出时,高速缓存控制器或者其它逻辑检查访问跟踪字段104b。逻辑根据字段104b中的值来确定是否在未决事务的执行期间已经访问了高速缓存行104,如上所述。如果先前在未决事务期间已经访问高速缓存行104,则处理器100中的逻辑设置全局溢出位。
在另一个实施例中,软件或固件设置全局溢出位。在一个类似的情况中,在确定先前在未决事务期间访问了行104时,产生中断。那个中断由设置全局溢出位的执行单元110中执行的用户处理机和/或中止处理机来处理。注意,如果当前设置了全局溢出位,则硬件和/或软件无需再次设置该位,因为存储器103已经溢出。
作为溢出位的使用的一个说明性实例,一旦设置了溢出位,硬件和/或软件跟踪对高速缓存行104、105和106的访问,验证事务,检查冲突,以及执行通常与存储器103和采用扩展事务存储器的访问字段104b、105b和106b关联的其它事务相关操作。
基址用来标识虚拟化事务存储器的基址。在一个实施例中,虚拟化事务存储器存储在大于存储器103的第二存储器装置、如高级高速缓存145或者与处理器100关联的系统存储器装置中。因此,第二存储器能够处理使存储器103溢出的事务。
在一个实施例中,已扩充事务存储器称作存储事务的状态的全局溢出表。因此,基址表示存储事务的状态的全局溢出表的基址。对于访问跟踪字段104b、105b和106b,全局溢出表在操作上与存储器103相似。作为一个说明性实例,假定行106被选择供逐出。但是,访问字段106b表示先前在未决事务的执行期间已经访问行106。如上所述,如果当前没有设置全局溢出位,则全局溢出位根据溢出事件来设置。
如果全局溢出表仍未建立,则为该表分配第二存储器的大小。作为一个实例,产生页面错误,表明仍未分配溢出表的初始页面。操作系统则向全局溢出表分配第二存储器的范围。第二存储器的范围可称作全局溢出表的页面。全局溢出表的基址的表示则存储在处理器100中。
在逐出行106之前,事务的状态存储在全局溢出表中。在一个实施例中,存储事务的状态包括在全局溢出表中存储对应于操作和/或行106的条目,它与溢出事件关联。该条目可包括与行106关联的诸如物理地址之类的地址、访问跟踪字段106b的状态、与行106关联的数据元素、行106的大小、操作系统控制字段和/或其它字段的任何组合。下面参照图3-5更详细地论述全局溢出表和第二存储器。
因此,当作为事务的组成部分的指令或操作通过处理器100的流水线传递时,跟踪对事务存储器、如高速缓存103的访问。此外,当事务存储器已满、即溢出时,事务存储器被扩充到处理器100上或者与处理器100关联/耦合的其它存储器。另外,整个处理器100上的寄存器可能存储溢出标记,以便表示事务存储器溢出,并且存储基址以标识已扩充事务存储器的基址。
虽然参照图1所示的示范多核心体系结构具体论述了事务存储器,但是事务存储器的扩充和/或虚拟化可通过用于对数据执行指令/进行操作的任何处理系统来实现。作为一个实例,能够并行执行多个事务的嵌入处理器可能实现虚拟化事务存储器。
来看图2a,说明多核心处理器200的一个实施例。在这里,处理器200包括四个核心、即核心205-208,但可采用其它任何数量的核心。在一个实施例中,存储器210是高速缓冲存储器。在这里,存储器210表示为处于核心205-208的功能框的外部。在一个实施例中,存储器210是共享高速缓存,例如二级或其它高级高速缓存。但是,在一个实施例中,功能块205-208表示核心205-208的体系结构状态,以及存储器210是分配给核心之一、如核心205或核心205-208/与其关联的一级或低级高速缓存。因此,所示的存储器210可能是诸如图1所示的存储器103之类的核心中的低级高速缓存、诸如图1所示的高速缓存145之类的高级高速缓存、或者诸如以上所述的寄存器集合的实例的其它存储元件。
各核心包括寄存器,例如寄存器230、235、240和245。在一个实施例中,寄存器230、235、240和245是机器特定寄存器(MSR)。然而,寄存器230、235、240和245可以是处理器200中的任何寄存器,例如作为各核心的体系结构状态寄存器集合的一部分的寄存器。
寄存器中的每个包括事务溢出标记:标记231、236、241和246。如上所述,在溢出事件时,设置事务溢出标记。溢出标记通过硬件、软件、固件或它们的任何组合来设置。在一个实施例中,溢出标记为一位,它可能具有两种逻辑状态。但是,溢出标记可能是任何数量的位或者是标识存储器已经溢出的时间的状态的其它表示。
例如,如果作为在核心205上执行的事务的一部分的操作使高速缓存210溢出,则被调用以处理溢出中断的诸如逻辑之类的硬件或者诸如用户处理机之类的软件设置标记231。在作为缺省状态的第一逻辑状态中,核心205采用存储器210执行事务。常规逐出、访问跟踪、冲突检查和验证采用高速缓存210来完成,它包括块215、220和225以及对应的字段216、221和226。但是,当标记231设置为第二状态时,高速缓存210被扩充。根据所设置的一个标记、如标记231,也可设置其余的标记236、241和246。
例如,在核心205-208之间发送的协议消息根据所设置的一个溢出位来设置其它标记。作为一个实例,假定溢出标记231根据在存储器210中发生的溢出事件来设置,在本例中,存储器210是核心205中的一级数据高速缓存。在一个实施例中,在设置标记231之后,广播消息在总线互连核心205-208上发送,以便设置标记236、241和246。在核心205-208以点到点、环形或其它格式连接的另一个实施例中,来自核心205的消息被发送给各核心或者逐个核心转发,以便设置标记236、241和246。注意,类似的消息传递等等可采用多处理器格式来进行,以便确保在多个物理处理器之间设置标记,下面进行论述。当设置了核心205-208中的标记时,通知后续事务执行,以便针对访问跟踪、冲突检查和/或验证来检查虚拟/扩充存储器。
前面的论述包括其中包含多个核心的单个物理处理器200。但是,当核心205-208是在系统中分离的物理处理器时,采用类似的配置、协议、硬件和软件。在这种情况中,各处理器具有溢出寄存器,例如具有其相应溢出标记的寄存器230、235、240和245。在设置一个溢出标记时,也可通过在处理器之间的互连上的协议通信的类似方式来设置其余标记。在这里,广播总线或点到点互连上的通信的交换传递设置为表示已发生溢出事件的值的溢出标记的值。
随后参照图2b,说明具有溢出标记的多核心处理器的另一个实施例。与图2a相比,不是各核心205-208包括溢出寄存器和溢出标记,而是在处理器200中存在单个溢出寄存器250和溢出标记251。因此,在溢出事件时,标记251被设置,并且对于核心205-208中的每个是全局可见的。因此,如果设置了标记251,则访问跟踪、验证、冲突检查和其它事务执行操作采用全局溢出表来执行。
作为一个说明性实例,假定存储器210在事务执行期间已经溢出,因而设置了寄存器250中的溢出位251。另外,已经采用虚拟化事务存储器来跟踪后续操作。如果在提交事务之前只有存储器210被检查是否有冲突或者用于验证,则溢出存储器跟踪的冲突/访问不会被发现。但是,如果冲突检查和验证采用溢出存储器来进行,则可检测到冲突,并且事务被中止而不是提交有冲突的事务。
如上所述,在设置当前未设置的溢出标记时,如果仍未分配空间,则请求/分配用于全局溢出表的空间。相反,当事务被提交或中止时,对应于事务的全局溢出表中的条目被释放。在一个实施例中,释放条目包括清除条目中的访问跟踪状态或其它字段。在另一个实施例中,释放条目包括从全局溢出表中删除该条目。当溢出表中的最后条目被释放时,全局溢出位重新清除到缺省状态。实质上,释放全局溢出表中的最后条目表示任何未决事务适合高速缓存210,以及溢出存储器当前没有用于事务执行。图3-5更详细地论述溢出存储器、具体来说为全局溢出表。
再来看图3,说明包括耦合到高级存储器的多个核心的处理器的一个实施例。存储器310包括行315、320和325。访问跟踪字段316、321和326分别对应于行315、320和325。访问字段中的每个将跟踪对存储器310中它们的对应行的访问。处理器300还包括核心305-308。注意,存储器310可以是核心305-308中的任何核心中的低级高速缓存、核心305-308共享的高级高速缓存或者在处理器中将用作事务存储器的其它任何已知或者可用的存储器。各核心包括存储全局溢出表的基址的寄存器,诸如寄存器330、335、340和345。当采用存储器310执行事务时,基址331、336、341和346可能没有存储全局溢出表的基址,因为可能没有分配全局溢出表。
但是,在使存储器310溢出时,分配溢出表355。在一个实施例中,当仍未分配溢出表355时,根据使存储器310溢出的操作产生中断或页面错误。用户处理机或内核级软件根据中断或页面错误向溢出表355分配高级存储器350的范围。作为另一个实例,全局溢出表根据所设置的溢出标记来分配。在这里,当设置了溢出标记时,尝试对全局溢出表的写入。如果写入失败,则分配全局溢出表中的新页面。
高级存储器350可以是高级高速缓存、仅与处理器300关联的存储器、包括处理器300的系统共享的系统存储器或者比存储器310更高级的其它任何存储器。分配给溢出表355的存储器350的第一范围称作溢出表355的第一页面。参照图5更详细地论述多页面溢出表。
在向溢出表355分配空间时或者在向溢出表355分配存储器之后,溢出表355的基址被写入寄存器330、335、340和/或345。在一个实施例中,内核级代码把全局溢出表的基址写入基址寄存器330、335、340和345中的每一个。或者,硬件、软件或固件把基址写入基址寄存器330、335、340或345之一,以及那个基址通过核心305-308之间的消息传递协议传播到其余的基址寄存器。
如图所示,溢出表355包括条目360、365和370。条目360、365和370包括地址字段361、366和371以及事务状态信息(T.S.I)字段362、367和372。作为溢出表355的操作的一个非常简化的实例,假定来自第一事务的操作已经访问行315、320和325,如对应的访问字段316、321和326的状态所表示。在第一事务未决期间,行315被选择用于逐出。由于访问跟踪字段316的状态表示先前在仍然未决的第一事务期间访问了行315,发生溢出事件。如上所述,可能设置溢出标记/位。另外,如果没有分配页面或者需要附加页面,则向溢出表355分配存储器350中的页面。
如果不需要页面分配,则全局溢出表的当前基址由寄存器330、335、340或345存储。或者,在初始分配时,溢出表355的基址被写入/传播到寄存器330、335、340或345。根据溢出事件,条目360被写入溢出表355。条目360包括存储与行315关联的地址的表示的地址字段361。
在一个实施例中,与行315关联的地址是行315中存储的元素的位置的物理地址。例如,物理地址是元素存储在其中的主机存储装置、如系统存储器中的位置的物理地址的表示。通过把物理地址存储在溢出表355中,溢出表可能检测到核心305-308进行的所有访问之间的冲突。
相反,当虚拟存储器地址存储在地址字段361、366和367时,具有不同虚拟存储器基址和偏移的处理器或核心具有存储器的不同逻辑视图。因此,对相同物理存储器位置的访问可能不会被检测为冲突,因为在核心之间可能以不同方式看待物理存储器位置的虚拟存储器地址。但是,如果虚拟地址存储器位置结合OS控制字段中的上下文标识符存储在溢出表355中,则全局冲突可能是可发现的。
与行315关联的地址的表示的其它实施例包括部分或整个虚拟存储器地址、高速缓存行地址或其它物理地址。地址的表示包括十进制、十六进制、二进制、散列值或者地址的所有或任何部分的其它表示/处理。在一个实施例中,作为地址的一部分的标签值是地址的表示。
除了地址字段361之外,条目360还包括事务状态信息362。在一个实施例中,T.S.I.字段362将存储访问跟踪字段316的状态。例如,如果访问跟踪字段316包括两个位、即事务写入位和事务读取位,以便跟踪分别对行315的写入和读取,则事务写入位和事务读取位的逻辑状态存储到T.S.I.字段362。但是,任何事务相关信息可存储在T.S.I.362中。参照图4a-4b论述溢出表355和溢出表355中可能存储的其它字段。
图4a说明全局溢出表的一个实施例。全局溢出表400包括条目405、410和415,它们对应于在事务执行期间已经使存储器溢出的操作。作为一个实例,执行事务中的操作使存储器溢出。条目405被写入全局溢出表400。条目405包括物理地址字段406。在一个实施例中,物理地址字段406将存储与使存储器溢出的操作所引用的存储器中的行关联的物理地址。
作为一个说明性实例,假定作为事务的一部分所执行的第一操作引用具有物理地址ABCD的系统存储器位置。根据该操作,高速缓存控制器选择通过物理地址的一部分ABC映射到高速缓存行供逐出的高速缓存行,从而产生溢出事件。注意,ABC的映射还可包括到与地址ABC关联的虚拟存储器地址的转换。由于发生了溢出事件,因此与操作和/或高速缓存行关联的条目405被写入溢出表400。在这个实例中,条目405包括物理地址字段406中的物理地址ABCD的表示。由于许多高速缓存组织、如直接映射和集合关联组织把多个系统存储器位置映射到单个高速缓存行或高速缓存行集合,因此高速缓存行地址可能引用多个系统存储器位置,例如ABCA、ABCB、ABCC、ABCE等。因此,通过把物理地址ABCD或者它的某种表示存储在物理地址406中,可能易于检测事务冲突。
除了物理地址字段406之外,其它字段包括数据字段407、事务状态字段408和操作系统控制字段409。数据字段407将存储元素,诸如与使存储器溢出的操作关联的指令、操作数、数据或者其它逻辑信息。注意,各存储器行可能能够存储多个数据元素、指令或其它逻辑信息。在一个实施例中,数据字段407将把一个或多个数据元素存储在将被逐出的存储器行中。在这里,可能可选地使用数据字段407。例如,在溢出事件时,元素没有存储在条目405中,除非要被逐出的存储器行处于修改状态或者其它高速缓存相干状态。另外,对于指令、操作数、数据元素和其它逻辑信息,数据字段407还可包括其它信息、如存储器行的大小。
事务状态字段408将存储与使事务存储器溢出的操作关联的事务状态信息。在一个实施例中,高速缓存行的附加位是用于存储与高速缓存行的访问相关的事务状态信息的访问跟踪字段。在这里,附加位的逻辑状态存储在事务状态字段408中。实质上,被逐出的存储器行被虚拟化并与物理地址和事务状态信息一起存储在高级存储器中。
此外,条目405包括操作系统控制字段409。在一个实施例中,OS控制字段409将跟踪执行上下文。例如,OS控制字段409是存储上下文ID的表示以便跟踪与条目405关联的执行上下文的64位字段。多个条目、如条目410和415包括类似字段,例如物理地址字段411和416、数据字段412和413、事务状态字段413和418以及OS字段414和419。
随后参照图4b,说明存储事务状态信息的溢出表的一个具体说明性实施例。溢出表400包括与参照图4a所述相似的字段。相比之下,条目405、410和415包括事务读取(Tr)字段451、456和461以及事务写入(Tw)字段452、457和462。在一个实施例中,Tr字段451、456和461以及Tw字段452、457和462将分别存储读取位和写入位的状态。在一个实例中,读取位和写入位将分别跟踪对关联高速缓存行的读取和写入。在把条目405写入溢出表400时,读取位的状态被存储在Tr字段451中,以及写入位的状态被存储在Tw字段452中。因此,通过在Tr和Tw字段中表明在事务未决期间已经访问哪些条目,事务的状态被存储到溢出表400。
来看图5,说明多页面溢出表的一个实施例。在这里,存储在存储器500中的溢出表505包括多个页面,例如页面510、515和520。在一个实施例中,处理器中的寄存器存储第一页面510的基址。在写入表505时,偏移、基址、物理地址、虚拟地址或者它们的组合引用表505中的位置。
页面510、515和520可能在溢出表505中是邻接的,但不要求是邻接的。实际上,在一个实施例中,页面510、515和520是页面的链表。在这里,前一页面、如页面510把下一页面515的基址存储在某个条目、如条目511中。
溢出表505中的多个页面最初可能不存在。例如,在没有发生溢出时,可能没有向溢出表505分配空间。在使未示出的另一个存储器溢出时,则向溢出表505分配页面510。页面510中的条目随着溢出状态中事务执行延续被写入。
在一个实施例中,当页面510已满时,对溢出表505的尝试写入导致页面错误,因为在页面510中没有更多空间。在这里,分配附加的或下一页面515。条目的前一次尝试写入通过把条目写入页面515来完成。另外,页面515的基址存储在页面510中的字段511中,以便形成溢出表505的页面的链表。类似地,在分配了页面520时,页面515把页面520的基址存储在字段516中。
随后参照图6,说明能够虚拟化事务存储器的系统的一个实施例。微处理器600包括为高速缓冲存储器的事务存储器610。在一个实施例中,TM 610是核心630中的一级高速缓存,与图1中的高速缓存103的说明相似。类似地,TM 610可以是核心635中的低级高速缓存。在该备选方案中,高速缓存610是处理器600中的高级高速缓存或者存储器的可用段。高速缓存610包括行615、620和625。与高速缓存行615、620和625关联的附加字段是事务读取(Tr)字段616、621和626以及事务写入(Tw)字段617、622和627。作为一个实例,Tr字段616和Tw字段617对应于高速缓存行615,并且将跟踪对高速缓存行615的访问。
在一个实施例中,Tr字段616和Tw字段617均为高速缓存行615中的单个位。缺省情况下,Tr字段616和Tw字段617被设置为缺省值、例如逻辑一。在未决事务的执行期间从行615读取或加载时,Tr字段616设置为第二值、例如逻辑零,以表示在未决事务的执行期间发生的读取/加载。相应地,如果对行615的写入或存储在未决事务期间发生,则Tw字段617设置为第二值,以表示在未决事务的执行期间发生的写入或存储。在中止或提交事务时,与待提交或中止的事务关联的所有Tr字段和Tw字段被重置为缺省状态,以便实现对于对应高速缓存行的访问的后续跟踪。
微处理器600还包括执行事务的核心630和核心635。核心630包括具有溢出标记632和基址633的寄存器631。此外,在TM 610处于核心630中的实施例中,TM 610是核心630中的一级高速缓存或者可用存储区。类似地,核心635包括溢出标记637、基址638和可能的TM 610,如上所述。虽然寄存器631和636在图6中表示为分离的寄存器,但是,用于存储溢出标记和基址的其它配置是可行的。例如,微处理器600上的单个寄存器存储溢出标记和基址,以及核心630和635全局查看寄存器。或者,微处理器400或核心630和635上的分离寄存器包括分离的溢出寄存器和分离的基址寄存器。
初始事务执行采用事务存储器610来执行事务。访问的跟踪、冲突检查、验证和其它事务执行技术采用Tr和Tw字段来执行。但是,在使事务存储器610溢出时,事务存储器610被扩充到存储器650。如图所示,存储器650是专用于处理器600或者在系统中共享的系统存储器。但是,存储器650还可能是处理器600上的存储器、如二级高速缓存,如上所述。在这里,存储在存储器650中的溢出表655用来扩充事务存储器610。到高级存储器的扩充也可能称作虚拟化事务存储器或者扩充到虚拟存储器。基址字段633和638将把全局溢出表655的基址存储在系统存储器650中。在溢出表655是多页面溢出表的一个实施例中,先前页面、如页面660把溢出表655的下一页面、即页面665的下一个基址存储在某个字段、如字段661中。通过把下一页面地址存储在先前页面中,创建存储器650中的页面的链表,从而形成多页面溢出表655。
为了说明虚拟化事务存储器的系统的一个实施例的操作,论述以下实例。第一事务从行615加载、从行625加载,执行计算操作,把结果回写到行620中,然后在尝试验证/提交之前执行其它各种操作。在从行615加载时,Tr字段616从缺省逻辑状态1设置为逻辑值0,以表示在仍然未决的第一事务的执行期间发生了从行615的加载。类似地,Tr字段626设置为逻辑值0,以表示从行625的加载。当写入行620发生时,Tw字段622设置为逻辑0,以表示在第一事务未决期间发生了对行620的写入。
现在假定第二事务包括未命中高速缓存行615的操作,并且通过替换算法、如最近最少使用算法,高速缓存行615被选择供逐出,同时第一事务仍然是未决的。高速缓存控制器或未示出的其它逻辑检测行615的逐出,这产生溢出事件,因为Tr字段616设置为逻辑零,表示在仍然未决的第一事务的执行期间从行615读取。在一个实施例中,逻辑根据溢出事件设置溢出标记、如溢出标记632。在另一个实施例中,当高速缓存行615被选择供逐出、其中Tr字段616设置为逻辑零时,产生中断。溢出标记632则由处理机根据中断的处理来设置。核心630与636之间的通信协议用来设置溢出标记637,因此,两个核心得到关于发生了溢出事件并且事务存储器610将被虚拟化的通知。
在逐出高速缓存行615之前,事务存储器610被扩充到存储器650。在这里,事务状态信息存储在溢出表655中。最初,如果没有分配溢出表655,则产生页面错误、中断或者对内核级程序的其它通信,以便请求分配溢出表655。然后,在存储器650中分配溢出表655的页面660。溢出表655、即页面660的基址被写入基址字段633和638。如上所述,基址可被写入一个核心、如核心635,并且通过消息传递协议,溢出表655的基址被写入另一个基址字段633。
如果已经分配溢出表655的页面660,则条目被写入页面660。在一个实施例中,条目包括与行615中存储的元素关联的物理地址的表示。也可以说,物理地址也与高速缓存行615以及使事务存储器610溢出的操作关联。条目还包括事务状态信息。在这里,条目包括分别为逻辑0和逻辑1的Tr字段616和Tw字段617的当前状态。
条目中的其它可能的字段包括存储操作数、指令或存储在高速缓存行615中的其它信息的元素字段以及存储OS控制信息、如上下文标识符的操作系统控制字段。元素字段和/或元素大小字段可根据高速缓存行615的高速缓存相干状态来可选地使用。例如,如果高速缓存行是MESI协议中的修改状态,则元素存储在该条目中。或者,如果元素处于独占、共享或无效状态,则元素不存储在该条目中。
假定对页面660的条目的写入因页面660充满条目而导致页面错误,则对于附加页面进行对内核级程序、如操作系统的请求。向溢出表655分配附加页面665。页面665的基址存储在前一页面660中的字段661中,以便形成页面的链表。该条目则被写入新增页面667。
在另一个实施例中,与第一事务关联的其它条目、如基于从行625的加载以及对行620的写入的条目根据溢出被写入溢出表655,以便虚拟化整个第一事务。但是,不需要把事务所访问的所有行复制到溢出表。实际上,访问跟踪、验证、冲突检查和其它事务执行技术可在事务存储器610以及存储器650中执行。
例如,如果第二事务写入与行625中当前存储的元素相同的物理存储器位置,则可检测到第一与第二事务之间的冲突,因为Tr 626表示从行625加载的第一事务。因此,产生中断,并且用户处理机/中止处理机发起第一或第二事务的中止。另外,如果第三事务将写入作为与行615关联的页面660中的条目的一部分的物理地址。溢出表用来检测访问与发起类似中断/中止处理机例程之间的冲突。
如果在第一事物的执行期间没有检测到无效访问/冲突或者验证成功,则提交第一事务。与第一事务关联的溢出表655中的所有条目被释放。在这里,释放条目包括从溢出表655中删除该条目。或者,释放条目包括重置条目中的Tr字段和Tw字段。当溢出表655中的最后条目被释放时,溢出标记632和637被重置为缺省状态,从而表明事务存储器610当前没有溢出。溢出表655可以可选地被取消分配,以便对存储器650进行有效利用。
来看图7,说明虚拟化事务存储器的方法的流程图的一个实施例。在流程705中,检测到与将作为事务的一部分被执行的操作关联的溢出事件。操作引用事务存储器中的存储器行。在一个实施例中,存储器是物理处理器上的多个核心中的一个核心中的低级数据高速缓存。在这里,第一核心包括事务存储器,而其它核心通过能够窥探/请求低级高速缓存中存储的元素来共享对存储器的访问。或者,事务存储器是在多个核心之间直接共享的二级或高级高速缓存。
引用存储器行的地址包括对地址的引用,它通过转换、处理或其它计算,引用与存储器行关联的地址。例如,操作引用虚拟存储器地址,它在被转换时,引用系统存储器中的物理位置。高速缓存往往通过地址的一部分或标签值来索引。因此,对高速缓存的共享行进行索引的地址的标签值通过被转换和/或处理为标签值的虚拟存储器地址来引用。
在一个实施例中,如果未决事务先前访问了存储器中的行,则溢出事件包括在操作所引用的存储器中逐出该行或选择该行供逐出。或者,溢出的任何预测或导致溢出的事件也可视为溢出事件。
在流程710中,根据溢出事件来设置溢出位/标记。在一个实施例中,当存储器溢出时,访问在调度成执行事务的核心或处理器中存储溢出位/标记的寄存器,以便设置溢出标记。寄存器中的单个溢出位可由所有核心或处理器全局查看,以便确保各核心都了解存储器已经溢出并且已经虚拟化。或者,各核心或处理器包括通过消息传递协议设置的溢出位,以便通知各处理器关于溢出和虚拟化。
如果设置了溢出位,则存储器被虚拟化。在一个实施例中,虚拟化存储器包括在全局溢出表中保存与存储器行关联的事务状态信息。实质上,涉及存储器的溢出的存储器的行的表示被虚拟化、扩充和/或在高级存储器中部分复制。在一个实施例中,与操作所引用的存储器的行关联的访问跟踪字段的状态和物理地址存储在高级存储器中的全局溢出表中。通过跟踪访问、检测冲突、执行事务验证等,以与存储器相同的方式使用高级存储器中的条目。
参照图8,说明虚拟化事务存储器的系统的流程图的一个说明性实施例。在流程805,执行事务。事务包括一组的多个操作或指令。如上所述,事务以软件、通过硬件或者通过它们的组合来划分。操作通常引用虚拟存储器地址,它在被转换时,引用系统存储器中的线性和/或物理地址。在事务执行期间,在处理器或核心之间共享的事务存储器、如高速缓存用来跟踪访问,检测冲突,执行验证等。在一个实施例中,各高速缓存行对应于用于执行上述操作的访问字段。
在流程810,高速缓存中的高速缓存行被选择以便逐出。在这里,尝试访问存储器位置的另一个事务或操作引起待逐出的高速缓存行的选择。任何已知或者可用的高速缓存替换算法可由高速缓存控制器或其它逻辑用来选择供逐出的行。
然后,在判定流程815,确定先前在事务未决期间是否访问了所选高速缓存行。在这里,检查访问跟踪字段,以便确定是否发生了对所选高速缓存行的访问。如果没有跟踪到访问,则该高速缓存行在流程820中被逐出。如果逐出是事务中的操作的结果,则可跟踪逐出/访问。但是,如果在仍然未决的事务的执行期间跟踪到访问,则在流程825,确定当前是否设置了全局溢出位。
在流程830,如果当前没有设置全局溢出位,则通过逐出在未决事务的执行期间被访问的高速缓存行来设置全局溢出位,因为已发生高速缓存的溢出。注意,在一个备选实现中,流程825可在流程815、820和830之前执行,以及如果当前设置了表明高速缓存已经溢出的全局溢出位,则流程815、820和830可省略。实质上,在备选实现中,不需要检测溢出事件,因为溢出位已经表示高速缓存溢出。
但是,回到所示流程图,如果设置了全局溢出位,则在流程835,确定是否分配了全局溢出表的第一页面。在一个实施例中,确定是否分配了全局溢出表的第一页面包括与内核级程序进行通信以确定是否分配了该页面。如果没有分配全局溢出表,则在流程840中分配第一页面。在这里,要求操作系统分配存储器页面的请求引起全局溢出表的分配。在另一个实施例中,下面更详细论述的流程855-870用来确定是否分配了第一页面并分配第一页面。这个实施例包括尝试采用基址对全局溢出表进行写入,它在没有分配该表时导致页面错误,然后根据页面错误来分配页面。总之,在分配溢出表的初始页面时,溢出表的基址被写入执行事务的处理器/核心中的寄存器。因此,后续写入可引用偏移或其它地址,它与被写入寄存器的基址结合,引用条目的正确物理存储器位置。
在流程850,与高速缓存行关联的条目被写入全局溢出表。如上所述,全局溢出表可能包括下列字段的任何组合:地址;元素;高速缓存行的大小;事务状态信息;以及操作系统控制字段。
在流程855,确定在写入时是否发生页面错误。如上所述,页面错误可能是没有溢出表的初始分配的结果或者溢出表当前已满。如果写入成功,则常规执行、验证、访问跟踪、提交、中止等继续返回到流程805。但是,如果发生页面错误,表明在溢出表中需要更多空间,则在流程860,为全局溢出表分配附加页面。在流程870,附加页面的基址被写入前一页面。这形成链表类型的多页面表。然后通过把条目写入新分配的附加页面来完成尝试的写入。
如上所述,对于较小的不太复杂的事务获得采用本地事务存储器以硬件来执行事务的好处。另外,当所执行的事务的数量以及那些事务的复杂度增加时,事务存储器被虚拟化,以便在本地共享事务存储器的溢出时支持连续执行。不是中止事务和浪费执行时间,而是事务执行、冲突检查、验证和提交采用全局溢出表来完成,直到事务存储器不再溢出为止。全局溢出可能存储物理地址,以便确保具有虚拟存储器的不同视图的上下文之间的冲突被检测。
以上阐述的方法、软件、固件或代码的实施例可经由机器可访问或机器可读媒体中存储的、处理元件可执行的指令或代码来实现。机器可访问/可读媒体包括以机器、如计算机或电子系统可读形式提供(即存储和/或传送)信息的任何机构。例如,机器可访问媒体包括:随机存取存储器(RAM),例如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储媒体;闪速存储装置;电、光、声或其它形式的传播信号(例如载波、红外信号、数字信号)等等。
在以上说明中,参照具体示范实施例提供详细描述。但是显然可对其进行各种修改及变更,而没有背离所附权利要求阐述的本发明的广义精神和范围。因此,说明书和附图将被看作是说明性而不是限制性的。此外,实施例及其它示范语言的上述使用不一定表示相同的实施例或者相同的实例,而是可能表示不同和有区别的实施例以及可能相同的实施例。
Claims (45)
1.一种装置,包括:
执行事务的执行模块;
耦合到所述执行模块的第一存储器,所述第一存储器包括多个存储器行,其中,所述多个存储器行中的存储器行与对应的跟踪字段关联,以便跟踪所述事务执行期间对所述存储器行的访问;以及
溢出逻辑,在所述事务执行期间,响应与所述存储器行关联的溢出事件,支持所述第一存储器到第二存储器的扩充。
2.如权利要求1所述的装置,其特征在于,所述第二存储器响应所述溢出事件而存储与所述存储器行关联的事务状态信息。
3.如权利要求2所述的装置,其特征在于,所述溢出逻辑包括:
存储元件,存储响应所述溢出事件而要设置的溢出位;
基址存储元件,在所述第二存储器中存储全局溢出表的基址的表示,其中,所述全局溢出表将存储与所述存储器行关联的所述事务状态信息。
4.如权利要求3所述的装置,其特征在于,跟踪在所述事务执行期间对所述存储器行的访问的所述对应跟踪字段包括:
跟踪在所述事务执行期间从所述存储器行的加载的第一位;
跟踪在所述事务执行期间对所述存储器行的存储的第二位。
5.如权利要求4所述的装置,其特征在于,存储与所述存储器行关联的所述事务状态信息的所述全局溢出表包括:
在所述溢出表中的溢出条目中存储与存储器行关联的元素的元素字段;
在所述溢出条目中存储与所述元素关联的物理地址的地址字段;
在所述溢出条目中存储所述对应跟踪字段的第一位的状态的事务读取状态字段;以及
在所述溢出条目中存储所述对应跟踪字段的第二位的状态的事务写入状态字段。
6.如权利要求5所述的装置,其特征在于,所述第一存储器是高速缓冲存储器,以及所述第二存储器是在多个核心之间共享的高级存储器,以及如果设置了所述溢出位,则所述多个核心中的各核心在验证期间检查所述全局溢出表以查找冲突。
7.如权利要求4所述的装置,其特征在于,溢出事件包括,当所述第一位跟踪到在所述事务执行期间从所述存储器行的先前加载时或者所述第二位跟踪到在所述事务执行期间对所述存储器行的先前存储时,选择所述存储器行供逐出。
8.如权利要求4所述的装置,其特征在于,溢出事件包括执行在所述事务中嵌套的第二事务的开始事务指令。
9.一种装置,包括:
执行组合为事务的多个操作的执行单元;
耦合到所述执行模块的事务存储器,所述存储器包括多个块;以及
耦合到所述执行单元、存储事务溢出标记的寄存器,如果组合为所述事务的所述多个操作之一使所述存储器溢出,则将设置所述事务溢出标记。
10.如权利要求9所述的装置,其特征在于,所述寄存器中的所述事务溢出标记是多个核心可见的。
11.如权利要求9所述的装置,其特征在于,存储所述事务溢出标记的所述寄存器处于执行组合为所述事务的所述多个操作的多个核心之一中。
12.如权利要求10所述的装置,其特征在于,在检查冲突时,如果设置了所述事务溢出标记,则所述多个核心中的每个访问全局溢出表以检查冲突。
13.如权利要求12所述的装置,其特征在于,当所述全局溢出表中的最后条目被释放时,所述事务溢出标记被清除。
14.如权利要求9所述的装置,其特征在于,存储所述事务溢出标记的所述寄存器是机器特定寄存器(MSR)。
15.如权利要求9所述的装置,其特征在于,使所述存储器溢出的组合为所述事务的所述多个操作之一包括:组合为所述事务的所述多个操作之一,在被执行时,逐出所述存储器中的所述多个块中先前在所述事务执行期间访问的块。
16.一种装置,包括:
处理器,包括
执行事务中的多个操作的执行单元;
耦合到所述执行单元的高速缓存,所述高速缓存包括多个高速缓存行;
响应与所述事务中的所述多个操作中的操作关联的溢出事件而存储全局溢出表的基址的表示的基址寄存器。
17.如权利要求16所述的装置,其特征在于,所述全局溢出表将存储与所述多个操作中的所述操作所引用的所述多个高速缓存行中的高速缓存行关联的条目,所述条目包括与所述高速缓存行关联的物理地址和事务状态信息。
18.如权利要求17所述的装置,其特征在于,事务状态信息包括:与所述操作所引用的所述高速缓存行关联的第一位的状态和第二位的状态,所述第一位跟踪从所述高速缓存行的读取,以及所述第二位跟踪对所述高速缓存行的写入。
19.如权利要求18所述的装置,其特征在于,如果所述高速缓存行处于修改状态,则所述条目还包括与所述高速缓存行关联的数据元素的副本。
20.如权利要求18所述的装置,其特征在于,所述条目还包括:操作系统(OS)控制字段。
21.如权利要求16所述的装置,其特征在于,溢出表还在所述溢出表中存储下一页面的物理地址。
22.一种装置,包括:
执行事务的执行模块;
耦合到所述执行模块的存储器,所述存储器包括多个块,其中,所述多个块中的块与第一位和第二位关联,以便跟踪在所述事务执行期间对所述块的访问;
存储溢出标记的第一存储元件,如果当前访问将逐出所述块,以及所述第一或第二位跟踪到在所述事务执行期间对所述块的先前访问,则在对所述存储器的所述当前访问时将设置所述溢出标记;以及
在设置了所述溢出标记时存储全局溢出表的基址的第二存储元件。
23.如权利要求22所述的装置,其特征在于,跟踪在事务执行期间对所述块的访问的所述第一位和所述第二位包括:
在所述事务执行期间从所述块加载时设置所述第一位的逻辑;
在所述事务执行期间对所述块存储时设置所述第二位的逻辑;以及
如果在所述事务执行期间设置了所述第一位,在提交所述事务时清除所述第一和第二位的逻辑。
24.如权利要求23所述的装置,其特征在于,如果设置了所述全局溢出位,则所述全局溢出表将存储与所述块关联的条目,所述条目包括:
与所述块关联的物理地址;
如果所述块处于第一状态,与所述块关联的数据元素;以及
所述第一位的逻辑值;
所述第二位的逻辑值;
操作系统(OS)控制字段。
25.如权利要求24所述的装置,其特征在于,所述存储器是高速缓存,以及所述第一状态是修改状态。
26.如权利要求22所述的装置,其特征在于,所述溢出标记和所述基址存储在机器特定寄存器(MSR)中。
27.如权利要求22所述的装置,其特征在于,所述第一存储元件是溢出寄存器,以及所述第二存储元件是基址寄存器。
28.如权利要求22所述的装置,其特征在于,所述溢出标记是溢出位,所述存储器是高速缓冲存储器,以及所述全局溢出表的所述基址是存储器分级结构中比所述高速缓冲存储器更高级的存储器中的物理基址。
29.一种系统,包括:
微处理器,包括
执行事务的执行单元;
耦合到所述执行单元的事务存储器(TM),所述TM包括多行,其中,各行包括跟踪在所述事务执行期间的访问的对应事务跟踪字段;
响应在所述事务执行期间发生的溢出事件而支持所述TM的虚拟化的溢出逻辑;以及
存储所述虚拟化TM的在存储器分级结构中比所述TM更高级的第二存储器。
30.如权利要求29所述的系统,其特征在于,所述TM的虚拟化包括把所述事务的状态保存在全局溢出表中,以及所述第二存储器将存储所述全局溢出表。
31.如权利要求30所述的系统,其特征在于,所述溢出逻辑包括:
存储响应在所述事务执行期间发生的所述溢出事件而要设置的溢出位的第一寄存器;
在所述系统存储器中存储所述全局溢出表的物理基址的第二寄存器。
32.如权利要求31所述的系统,其特征在于,所述第二存储器中的所述全局溢出表包括多个页面,所述多个页面中的各页面将存储所述全局溢出表的下一页面的下一个物理基址。
33.如权利要求31所述的系统,其特征在于,所述TM是高速缓冲存储器,以及所述第二存储器是系统存储器,以及溢出事件包括,如果所述对应的事务跟踪字段先前跟踪到在所述事务执行期间对所述高速缓存行的访问,选择所述多个高速缓存行中要逐出的高速缓存行。
34.如权利要求33所述的系统,其特征在于,选择所述多个高速缓存行中要逐出的高速缓存行由高速缓存控制器来完成,以及如果所述对应的事务跟踪字段先前跟踪到在所述事务执行期间对所述高速缓存行的访问,根据选择所述多个高速缓存行中要逐出的高速缓存行来设置所述溢出位包括:
如果所述对应的事务跟踪字段先前跟踪到在所述事务执行期间对所述高速缓存行的访问,则产生中断;以及
采用被调用以处理所述中断的处理机来设置所述溢出位。
35.一种方法,包括:
检测与将作为事务的一部分被执行的操作关联的溢出事件,所述操作引用事务存储器中的存储器行;
如果当前没有设置溢出位,则响应所述溢出事件而设置溢出位;以及
响应设置溢出位而把所述事务存储器扩充到第二存储器。
36.如权利要求35所述的方法,其特征在于,响应设置所述溢出位而把所述事务存储器扩充到第二存储器包括:响应设置所述溢出位而把所述事务的状态存储在全局溢出表中。
37.如权利要求35所述的方法,其特征在于,检测与将作为事务的一部分被执行的操作关联的溢出事件包括:
选择要逐出的存储器行;
从与所述存储器行关联的访问跟踪字段中确定先前在所述事务执行期间是否访问了所述存储器行;以及
如果确定先前在所述事务执行期间已经访问所述存储器行,则检测溢出事件。
38.如权利要求35所述的方法,其特征在于,所述溢出位存储在多个核心可查看的机器特定寄存器(MSR)中。
39.如权利要求36所述的方法,其特征在于,在所述全局溢出表中存储所述事务的状态包括:
把条目写入所述全局溢出表,其中所述条目包括
与所述存储器行关联的物理地址;
用于跟踪在所述事务执行期间从所述存储器行的加载的第一跟踪字段的状态;
用于跟踪在所述事务执行期间对所述存储器行的存储的第二跟踪字段的状态;以及
如果所述存储器行处于修改状态,与所述物理地址关联的数据元素。
40.一种方法,包括:
执行组合为事务的多个操作中的操作;
根据所述操作选择高速缓存中要逐出的高速缓存行;以及
如果先前在所述事务未决期间访问了所选高速缓存行:
如果当前没有设置全局溢出,则设置全局溢出位;
如果当前没有分配用于全局溢出表的第一页面,则为所述全局溢出表分配第二存储器中的存储器的第一页面,其中,所述全局溢出表存储与所述事务关联的状态信息;以及
在为所述全局溢出表分配所述第一页面时,把系统存储器中的第一页面的基址写入基址寄存器。
41.如权利要求40所述的方法,其特征在于,还包括:
如果先前在所述事务未决期间访问了所选高速缓存行,则产生中断;以及
采用处理机来处理所述中断,其中,所述全局溢出位根据所述中断的处理来设置。
42.如权利要求41所述的方法,其特征在于,与所述事务关联的状态信息包括跟踪在所述事务未决期间对所述高速缓存行的访问的访问跟踪字段的状态。
43.如权利要求42所述的方法,其特征在于,所述全局溢出表还存储:
与所述高速缓存行关联的物理地址;以及
操作系统(OS)控制字段信息。
44.如权利要求43所述的方法,其特征在于,所述OS将根据所述中断来分配所述第二存储器中的存储器的第一页面。
45.如权利要求40所述的方法,其特征在于,还包括:
如果发生溢出页面错误,并且当前为所述全局溢出表分配了至少所述第一页面,则为所述全局溢出表分配所述第二存储器中的附加页面;以及
把所述第二存储器中的所述附加页面的附加基址写入所述第二存储器中的前一页面,在所述全局溢出表中所述前一页面在逻辑上处于所述附加页面之前。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/479,902 US20080005504A1 (en) | 2006-06-30 | 2006-06-30 | Global overflow method for virtualized transactional memory |
US11/479902 | 2006-06-30 | ||
US11/479,902 | 2006-06-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101097544A true CN101097544A (zh) | 2008-01-02 |
CN101097544B CN101097544B (zh) | 2013-05-08 |
Family
ID=38878245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101290073A Expired - Fee Related CN101097544B (zh) | 2006-06-30 | 2007-06-30 | 虚拟化事务存储器的全局溢出方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20080005504A1 (zh) |
JP (1) | JP5366802B2 (zh) |
KR (1) | KR101025354B1 (zh) |
CN (1) | CN101097544B (zh) |
DE (2) | DE112007001171T5 (zh) |
TW (1) | TWI397813B (zh) |
WO (1) | WO2008005687A2 (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101739298A (zh) * | 2008-11-27 | 2010-06-16 | 国际商业机器公司 | 共享缓存管理方法和系统 |
CN101587447B (zh) * | 2008-05-23 | 2013-03-27 | 国际商业机器公司 | 基于预测的事务执行系统和方法 |
CN103154908A (zh) * | 2010-07-28 | 2013-06-12 | 英特尔公司 | 用于事务存储器的最后分支记录指示符 |
CN105164650A (zh) * | 2012-11-30 | 2015-12-16 | 英特尔公司 | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 |
US9265004B2 (en) | 2011-02-02 | 2016-02-16 | Altair Semiconductor Ltd | Intermittent shutoff of RF circuitry in wireless communication terminals |
CN105683922A (zh) * | 2014-10-03 | 2016-06-15 | 英特尔公司 | 实现监视对地址的写入的指令的可扩展机制 |
CN106991056A (zh) * | 2015-12-10 | 2017-07-28 | Arm 有限公司 | 用于芯片内和芯片间哈希的系统地址映射 |
CN107408079A (zh) * | 2015-03-27 | 2017-11-28 | 英特尔公司 | 带有一致单元的多级别系统存储器的存储器控制器 |
CN107870872A (zh) * | 2016-09-23 | 2018-04-03 | 伊姆西Ip控股有限责任公司 | 用于管理高速缓存的方法和设备 |
CN108363620A (zh) * | 2017-01-27 | 2018-08-03 | 三星电子株式会社 | 提供虚拟内存容量的内存模块及其操作方法 |
CN111033482A (zh) * | 2017-08-30 | 2020-04-17 | 美光科技公司 | 高速缓存缓冲器 |
US10705961B2 (en) | 2013-09-27 | 2020-07-07 | Intel Corporation | Scalably mechanism to implement an instruction that monitors for writes to an address |
Families Citing this family (88)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8190859B2 (en) * | 2006-11-13 | 2012-05-29 | Intel Corporation | Critical section detection and prediction mechanism for hardware lock elision |
US7802136B2 (en) | 2006-12-28 | 2010-09-21 | Intel Corporation | Compiler technique for efficient register checkpointing to support transaction roll-back |
US8132158B2 (en) * | 2006-12-28 | 2012-03-06 | Cheng Wang | Mechanism for software transactional memory commit/abort in unmanaged runtime environment |
US8719807B2 (en) * | 2006-12-28 | 2014-05-06 | Intel Corporation | Handling precompiled binaries in a hardware accelerated software transactional memory system |
US8185698B2 (en) * | 2007-04-09 | 2012-05-22 | Bratin Saha | Hardware acceleration of a write-buffering software transactional memory |
US9280397B2 (en) * | 2007-06-27 | 2016-03-08 | Intel Corporation | Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata |
US8140773B2 (en) | 2007-06-27 | 2012-03-20 | Bratin Saha | Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM |
US8990527B1 (en) * | 2007-06-29 | 2015-03-24 | Emc Corporation | Data migration with source device reuse |
US7620860B2 (en) * | 2007-09-07 | 2009-11-17 | Dell Products, Lp | System and method of dynamically mapping out faulty memory areas |
US8719553B2 (en) * | 2008-01-31 | 2014-05-06 | Arm Norway As | Method for re-circulating a fragment through a rendering pipeline |
US8719555B2 (en) * | 2008-01-31 | 2014-05-06 | Arm Norway As | Method for overcoming livelock in a multi-threaded system |
US8930644B2 (en) * | 2008-05-02 | 2015-01-06 | Xilinx, Inc. | Configurable transactional memory for synchronizing transactions |
JP2011529603A (ja) * | 2008-07-28 | 2011-12-08 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | バーチャル化可能な高度な同期機構 |
US8627017B2 (en) * | 2008-12-30 | 2014-01-07 | Intel Corporation | Read and write monitoring attributes in transactional memory (TM) systems |
US8799582B2 (en) * | 2008-12-30 | 2014-08-05 | Intel Corporation | Extending cache coherency protocols to support locally buffered data |
US9785462B2 (en) * | 2008-12-30 | 2017-10-10 | Intel Corporation | Registering a user-handler in hardware for transactional memory event handling |
US8627014B2 (en) | 2008-12-30 | 2014-01-07 | Intel Corporation | Memory model for hardware attributes within a transactional memory system |
US8127057B2 (en) * | 2009-08-13 | 2012-02-28 | Advanced Micro Devices, Inc. | Multi-level buffering of transactional data |
US8473723B2 (en) * | 2009-12-10 | 2013-06-25 | International Business Machines Corporation | Computer program product for managing processing resources |
KR101639672B1 (ko) * | 2010-01-05 | 2016-07-15 | 삼성전자주식회사 | 무한 트랜잭션 메모리 시스템 및 그 동작 방법 |
US9104690B2 (en) | 2011-01-27 | 2015-08-11 | Micron Technology, Inc. | Transactional memory |
US9582275B2 (en) | 2011-05-31 | 2017-02-28 | Intel Corporation | Method and apparatus for obtaining a call stack to an event of interest and analyzing the same |
US9043363B2 (en) * | 2011-06-03 | 2015-05-26 | Oracle International Corporation | System and method for performing memory management using hardware transactions |
KR101540451B1 (ko) * | 2011-12-27 | 2015-07-31 | 네이버 주식회사 | 사용자들간의 친밀도에 기초하여 친구의 친구를 추천하는 소셜 네트워크 서비스 시스템 및 방법 |
US9104681B2 (en) | 2011-12-27 | 2015-08-11 | Nhn Corporation | Social network service system and method for recommending friend of friend based on intimacy between users |
US9146871B2 (en) * | 2011-12-28 | 2015-09-29 | Intel Corporation | Retrieval of previously accessed data in a multi-core processor |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US9317460B2 (en) | 2012-06-15 | 2016-04-19 | International Business Machines Corporation | Program event recording within a transactional environment |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US8880959B2 (en) | 2012-06-15 | 2014-11-04 | International Business Machines Corporation | Transaction diagnostic block |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US9367323B2 (en) | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US8682877B2 (en) | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US8966324B2 (en) | 2012-06-15 | 2015-02-24 | International Business Machines Corporation | Transactional execution branch indications |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US9442737B2 (en) | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
CN102761487B (zh) * | 2012-07-12 | 2016-04-27 | 国家计算机网络与信息安全管理中心 | 数据流处理方法和系统 |
US9182986B2 (en) | 2012-12-29 | 2015-11-10 | Intel Corporation | Copy-on-write buffer for restoring program code from a speculative region to a non-speculative region |
US9547594B2 (en) * | 2013-03-15 | 2017-01-17 | Intel Corporation | Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage |
KR102219288B1 (ko) | 2013-12-09 | 2021-02-23 | 삼성전자 주식회사 | 캐시 모드 및 메모리 모드 동작을 지원하는 메모리 장치 및 이의 동작 방법 |
US20150242216A1 (en) * | 2014-02-27 | 2015-08-27 | International Business Machines Corporation | Committing hardware transactions that are about to run out of resource |
US9495108B2 (en) | 2014-06-26 | 2016-11-15 | International Business Machines Corporation | Transactional memory operations with write-only atomicity |
US9489142B2 (en) | 2014-06-26 | 2016-11-08 | International Business Machines Corporation | Transactional memory operations with read-only atomicity |
US10025715B2 (en) | 2014-06-27 | 2018-07-17 | International Business Machines Corporation | Conditional inclusion of data in a transactional memory read set |
US10175984B2 (en) | 2014-12-14 | 2019-01-08 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor |
US10120689B2 (en) | 2014-12-14 | 2018-11-06 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor |
US9740271B2 (en) | 2014-12-14 | 2017-08-22 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor |
US10146540B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor |
US10089112B2 (en) | 2014-12-14 | 2018-10-02 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor |
US10088881B2 (en) | 2014-12-14 | 2018-10-02 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude I/O-dependent load replays in an out-of-order processor |
WO2016097803A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude uncacheable-dependent load replays in out-of-order processor |
JP6286067B2 (ja) | 2014-12-14 | 2018-02-28 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサでの長いロードサイクルに依存するロードリプレイを除外するメカニズム |
WO2016097793A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on off-die control element access in out-of-order processor |
US10114646B2 (en) | 2014-12-14 | 2018-10-30 | Via Alliance Semiconductor Co., Ltd | Programmable load replay precluding mechanism |
WO2016097800A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Power saving mechanism to reduce load replays in out-of-order processor |
US10108421B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude shared ram-dependent load replays in an out-of-order processor |
US9804845B2 (en) | 2014-12-14 | 2017-10-31 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor |
US10228944B2 (en) | 2014-12-14 | 2019-03-12 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method for programmable load replay preclusion |
WO2016097791A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method for programmable load replay preclusion |
EP3049956B1 (en) | 2014-12-14 | 2018-10-10 | VIA Alliance Semiconductor Co., Ltd. | Mechanism to preclude i/o-dependent load replays in out-of-order processor |
KR101837817B1 (ko) | 2014-12-14 | 2018-03-12 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 비순차 프로세서에서 페이지 워크에 따라 로드 리플레이를 억제하는 메커니즘 |
WO2016097811A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on fuse array access in out-of-order processor |
US10108420B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor |
WO2016097814A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude shared ram-dependent load replays in out-of-order processor |
US10146539B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd. | Load replay precluding mechanism |
US10083038B2 (en) | 2014-12-14 | 2018-09-25 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on page walks in an out-of-order processor |
US10133580B2 (en) | 2014-12-14 | 2018-11-20 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor |
KR101820221B1 (ko) | 2014-12-14 | 2018-02-28 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 프로그래머블 로드 리플레이 억제 메커니즘 |
US10127046B2 (en) | 2014-12-14 | 2018-11-13 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude uncacheable-dependent load replays in out-of-order processor |
WO2016097797A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Load replay precluding mechanism |
WO2016097790A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude non-core cache-dependent load replays in out-of-order processor |
KR20170100643A (ko) * | 2014-12-31 | 2017-09-04 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 트랜잭션 충돌 검출 방법과 장치 및 컴퓨터 시스템 |
US10361940B2 (en) * | 2015-10-02 | 2019-07-23 | Hughes Network Systems, Llc | Monitoring quality of service |
US9514006B1 (en) | 2015-12-16 | 2016-12-06 | International Business Machines Corporation | Transaction tracking within a microprocessor |
US11294743B2 (en) | 2017-10-26 | 2022-04-05 | SK Hynix Inc. | Firmware event tracking for NAND-based storage devices, and methods and instruction sets for performing the same |
US10877897B2 (en) * | 2018-11-02 | 2020-12-29 | Intel Corporation | System, apparatus and method for multi-cacheline small object memory tagging |
KR20200107101A (ko) | 2019-03-06 | 2020-09-16 | 에스케이하이닉스 주식회사 | 주소 변환 기능을 갖는 메모리 관리 유닛, 이를 포함하는 데이터 처리 구조 및 주소 변환 정보 생성 방법 |
US11625479B2 (en) | 2020-08-27 | 2023-04-11 | Ventana Micro Systems Inc. | Virtually-tagged data cache memory that uses translation context to make entries allocated during execution under one translation context inaccessible during execution under another translation context |
US11620377B2 (en) * | 2020-08-27 | 2023-04-04 | Ventana Micro Systems Inc. | Physically-tagged data cache memory that uses translation context to reduce likelihood that entries allocated during execution under one translation context are accessible during execution under another translation context |
KR102579320B1 (ko) | 2023-04-19 | 2023-09-18 | 메티스엑스 주식회사 | 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법 |
KR102639415B1 (ko) * | 2023-07-18 | 2024-02-23 | 메티스엑스 주식회사 | 프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060085588A1 (en) * | 2004-09-30 | 2006-04-20 | Ravi Rajwar | Transactional memory execution utilizing virtual memory |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4761733A (en) * | 1985-03-11 | 1988-08-02 | Celerity Computing | Direct-execution microprogrammable microprocessor system |
US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
JP4235753B2 (ja) * | 1997-08-04 | 2009-03-11 | 東洋紡績株式会社 | 空気清浄用フィルタ濾材 |
JP3468041B2 (ja) * | 1997-08-07 | 2003-11-17 | 三菱電機株式会社 | 浴水浄化ユニット |
US6684398B2 (en) * | 2000-05-31 | 2004-01-27 | Sun Microsystems, Inc. | Monitor entry and exit for a speculative thread during space and time dimensional execution |
WO2004001527A2 (en) * | 2001-06-26 | 2003-12-31 | Sun Microsystems, Inc. | Method and apparatus for facilitating speculative loads in a multiprocessor system |
US6704841B2 (en) * | 2001-06-26 | 2004-03-09 | Sun Microsystems, Inc. | Method and apparatus for facilitating speculative stores in a multiprocessor system |
US7568023B2 (en) * | 2002-12-24 | 2009-07-28 | Hewlett-Packard Development Company, L.P. | Method, system, and data structure for monitoring transaction performance in a managed computer network environment |
TWI220733B (en) * | 2003-02-07 | 2004-09-01 | Ind Tech Res Inst | System and a method for stack-caching method frames |
US7269694B2 (en) * | 2003-02-13 | 2007-09-11 | Sun Microsystems, Inc. | Selectively monitoring loads to support transactional program execution |
US7089374B2 (en) * | 2003-02-13 | 2006-08-08 | Sun Microsystems, Inc. | Selectively unmarking load-marked cache lines during transactional program execution |
US7269717B2 (en) * | 2003-02-13 | 2007-09-11 | Sun Microsystems, Inc. | Method for reducing lock manipulation overhead during access to critical code sections |
US6862664B2 (en) * | 2003-02-13 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus for avoiding locks by speculatively executing critical sections |
US7269693B2 (en) * | 2003-02-13 | 2007-09-11 | Sun Microsystems, Inc. | Selectively monitoring stores to support transactional program execution |
US7340569B2 (en) * | 2004-02-10 | 2008-03-04 | Wisconsin Alumni Research Foundation | Computer architecture providing transactional, lock-free execution of lock-based programs |
US7206903B1 (en) * | 2004-07-20 | 2007-04-17 | Sun Microsystems, Inc. | Method and apparatus for releasing memory locations during transactional execution |
US7856537B2 (en) * | 2004-09-30 | 2010-12-21 | Intel Corporation | Hybrid hardware and software implementation of transactional memory access |
US7984248B2 (en) * | 2004-12-29 | 2011-07-19 | Intel Corporation | Transaction based shared data operations in a multiprocessor environment |
-
2006
- 2006-06-30 US US11/479,902 patent/US20080005504A1/en not_active Abandoned
-
2007
- 2007-06-20 KR KR1020087031869A patent/KR101025354B1/ko not_active IP Right Cessation
- 2007-06-20 JP JP2009511265A patent/JP5366802B2/ja not_active Expired - Fee Related
- 2007-06-20 WO PCT/US2007/071711 patent/WO2008005687A2/en active Application Filing
- 2007-06-20 DE DE112007001171T patent/DE112007001171T5/de not_active Ceased
- 2007-06-20 DE DE202007019502U patent/DE202007019502U1/de not_active Expired - Lifetime
- 2007-06-27 TW TW096123333A patent/TWI397813B/zh not_active IP Right Cessation
- 2007-06-30 CN CN2007101290073A patent/CN101097544B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060085588A1 (en) * | 2004-09-30 | 2006-04-20 | Ravi Rajwar | Transactional memory execution utilizing virtual memory |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101587447B (zh) * | 2008-05-23 | 2013-03-27 | 国际商业机器公司 | 基于预测的事务执行系统和方法 |
US8799590B2 (en) | 2008-05-23 | 2014-08-05 | International Business Machines Corporation | System enabling transactional memory and prediction-based transaction execution method |
CN101739298A (zh) * | 2008-11-27 | 2010-06-16 | 国际商业机器公司 | 共享缓存管理方法和系统 |
US9354878B2 (en) | 2010-07-28 | 2016-05-31 | Intel Corporation | Last branch record register for storing taken branch information and transactional memory transaction indicator to be used in transaction execution analysis |
CN103154908A (zh) * | 2010-07-28 | 2013-06-12 | 英特尔公司 | 用于事务存储器的最后分支记录指示符 |
CN103154908B (zh) * | 2010-07-28 | 2015-11-25 | 英特尔公司 | 用于事务存储器的最后分支记录的装置、方法和系统 |
US10073719B2 (en) | 2010-07-28 | 2018-09-11 | Intel Corporation | Last branch record indicators for transactional memory |
US9265004B2 (en) | 2011-02-02 | 2016-02-16 | Altair Semiconductor Ltd | Intermittent shutoff of RF circuitry in wireless communication terminals |
CN106648553A (zh) * | 2012-11-30 | 2017-05-10 | 英特尔公司 | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 |
CN106648553B (zh) * | 2012-11-30 | 2019-06-18 | 英特尔公司 | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 |
CN105164650B (zh) * | 2012-11-30 | 2019-04-09 | 英特尔公司 | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 |
CN105164650A (zh) * | 2012-11-30 | 2015-12-16 | 英特尔公司 | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 |
US10705961B2 (en) | 2013-09-27 | 2020-07-07 | Intel Corporation | Scalably mechanism to implement an instruction that monitors for writes to an address |
CN105683922B (zh) * | 2014-10-03 | 2018-12-11 | 英特尔公司 | 实现监视对地址的写入的指令的可扩展机制 |
CN105683922A (zh) * | 2014-10-03 | 2016-06-15 | 英特尔公司 | 实现监视对地址的写入的指令的可扩展机制 |
CN107408079A (zh) * | 2015-03-27 | 2017-11-28 | 英特尔公司 | 带有一致单元的多级别系统存储器的存储器控制器 |
CN106991056A (zh) * | 2015-12-10 | 2017-07-28 | Arm 有限公司 | 用于芯片内和芯片间哈希的系统地址映射 |
CN107870872A (zh) * | 2016-09-23 | 2018-04-03 | 伊姆西Ip控股有限责任公司 | 用于管理高速缓存的方法和设备 |
CN107870872B (zh) * | 2016-09-23 | 2021-04-02 | 伊姆西Ip控股有限责任公司 | 用于管理高速缓存的方法和设备 |
CN108363620A (zh) * | 2017-01-27 | 2018-08-03 | 三星电子株式会社 | 提供虚拟内存容量的内存模块及其操作方法 |
CN108363620B (zh) * | 2017-01-27 | 2023-01-10 | 三星电子株式会社 | 提供虚拟内存容量的内存模块及其操作方法 |
CN111033482A (zh) * | 2017-08-30 | 2020-04-17 | 美光科技公司 | 高速缓存缓冲器 |
Also Published As
Publication number | Publication date |
---|---|
JP5366802B2 (ja) | 2013-12-11 |
KR101025354B1 (ko) | 2011-03-28 |
TWI397813B (zh) | 2013-06-01 |
JP2009537053A (ja) | 2009-10-22 |
WO2008005687A2 (en) | 2008-01-10 |
US20080005504A1 (en) | 2008-01-03 |
DE112007001171T5 (de) | 2009-04-30 |
WO2008005687A3 (en) | 2008-02-21 |
TW200817894A (en) | 2008-04-16 |
KR20090025295A (ko) | 2009-03-10 |
CN101097544B (zh) | 2013-05-08 |
DE202007019502U1 (de) | 2013-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101097544B (zh) | 虚拟化事务存储器的全局溢出方法 | |
US8706973B2 (en) | Unbounded transactional memory system and method | |
CN108885583B (zh) | 高速缓存存储器访问 | |
US7827354B2 (en) | Victim cache using direct intervention | |
TWI526829B (zh) | 電腦系統、用於存取儲存裝置之方法及電腦可讀儲存媒體 | |
KR100259433B1 (ko) | 대칭형 멀티프로세서 시스템 버스를 위한 요구-기반larx-예약 프로토콜 | |
US6748501B2 (en) | Microprocessor reservation mechanism for a hashed address system | |
US5715428A (en) | Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system | |
US5148533A (en) | Apparatus and method for data group coherency in a tightly coupled data processing system with plural execution and data cache units | |
KR100204741B1 (ko) | 제1및 제2캐시 메모리 사용방법 | |
US7549025B2 (en) | Efficient marking of shared cache lines | |
US20060184743A1 (en) | Cache memory direct intervention | |
CN108268385B (zh) | 具有集成目录高速缓存的优化的高速缓存代理 | |
JP3714617B2 (ja) | キャッシュ階層で首尾一貫性を維持する方法、コンピュータ・システム、及び処理ユニット | |
JP2011198091A (ja) | 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム | |
CN101593161A (zh) | 确保微处理器的快取存储器层级数据一致性的装置与方法 | |
US6898676B2 (en) | Computer system supporting both dirty-shared and non-dirty-shared data processing entities | |
US20230161704A1 (en) | Computing system with direct invalidation in a hierarchical cache structure based on at least one designated key identification code | |
US5848283A (en) | Method and system for efficient maintenance of data coherency in a multiprocessor system utilizing cache synchronization | |
US7051164B2 (en) | Coherence-free cache | |
KR20060102565A (ko) | 라이트 백 캐시 내에서 동시 발생하는 스누프 푸시 또는스누프 킬 연산중에 라이트 백 연산을 취소하는 시스템 및방법 | |
US7464227B2 (en) | Method and apparatus for supporting opportunistic sharing in coherent multiprocessors | |
US7000080B2 (en) | Channel-based late race resolution mechanism for a computer system | |
US6347361B1 (en) | Cache coherency protocols with posted operations | |
US20110213933A1 (en) | Information processing apparatus and memory control apparatus |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130508 Termination date: 20180630 |