CN101770429A - 用于在硬件中保存有损失的元数据的元物理地址空间 - Google Patents

用于在硬件中保存有损失的元数据的元物理地址空间 Download PDF

Info

Publication number
CN101770429A
CN101770429A CN200910113666A CN200910113666A CN101770429A CN 101770429 A CN101770429 A CN 101770429A CN 200910113666 A CN200910113666 A CN 200910113666A CN 200910113666 A CN200910113666 A CN 200910113666A CN 101770429 A CN101770429 A CN 101770429A
Authority
CN
China
Prior art keywords
metadata
address
data
subclauses
physical
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
CN200910113666A
Other languages
English (en)
Other versions
CN101770429B (zh
Inventor
G·希菲尔
S·雷金
V·巴辛
R·萨德
E·科亨
O·马古利斯
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN101770429A publication Critical patent/CN101770429A/zh
Application granted granted Critical
Publication of CN101770429B publication Critical patent/CN101770429B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及用于在硬件中保存有损失的元数据的元物理地址空间。本文描述用于保存有损失的元数据的元物理地址空间的方法和设备。遇到引用数据项的数据地址的显式或隐式元数据访问操作。硬件将数据地址修改成包括元物理扩展的元数据地址。元物理扩展在数据地址空间上重叠一个或多个元物理地址空间。包括元物理扩展的元数据地址的一部分用于搜索保存数据项的高速缓冲存储器的标签阵列。因此,元数据访问操作仅根据元数据地址扩展来命中高速缓存的元数据条目。但是,由于元数据保存在高速缓存中,所以元数据可能与数据竞争高速缓存中的空间。

Description

用于在硬件中保存有损失的元数据的元物理地址空间
技术领域
本发明涉及处理器执行领域,具体来说,涉及指令组的执行。
交叉引用
本申请与下列同此提交的专利申请相关:美国专利申请No.12/346518(代理机构卷号P29129),标题为“在硬件中登记用户处理程序用于事务存储器事件处理”,Gad Sheaffer等人,2008年12月30日提交;美国专利申请No.12/346539(代理机构卷号P29131),标题为“用于事务存储器系统中的硬件属性的存储器模型”,Gad Sheaffer等人,2008年12月30日提交;美国专利申请No.12/346530(代理机构卷号P29130),标题为“事务存储器(TM)系统中的读和写监视属性”,Gad Sheaffer等人,2009年12月30日提交;美国专利申请No.12/346543(代理机构卷号P29132),标题为“扩展高速缓存相干性协议以支持本地缓冲数据”,Gad Sheaffer等人,2008年12月30日提交。
背景技术
半导体加工和逻辑设计方面的进步允许在集成电路装置上可存在的逻辑数量的增加。因此,计算机系统配置已经从系统中的单个或多个集成电路演进成单独集成电路上存在的多个核和多个逻辑处理器。处理器或集成电路通常包括单个处理器芯片,其中处理器芯片可包括任何数量的核或逻辑处理器。
集成电路上数量不断增加的核和逻辑处理器使更多软件线程能够同时执行。但是,可同时执行的软件线程的数量的增加引起使软件线程之间所共享的数据同步的问题。多个核或者多个逻辑处理器系统中访问共享数据的一种常见解决方案包括使用加锁来保证跨多个对共享数据访问的互斥。但是,运行多个软件线程的不断增加的能力可能引起错误争用和执行的串行化。
例如,考虑保存共享数据的哈希表。对于加锁系统,编程人员可对整个哈希表加锁,从而允许一个线程访问整个哈希表。但是,其它线程的吞吐量和性能可能受到不利影响,因为它们在释放加锁之前无法访问哈希表中的任何条目。备选地,可对哈希表中的各条目加锁。不管怎样,在将这个简单示例推延到大的可缩放程序之后,很显然,加锁争用、串行化、细粒度同步和死锁避免的复杂度成为编程人员非常棘手的负担。
另一种最近的数据同步技术包括使用事务存储器(TM)。事务执行通常包括运行分组的多个微操作、操作或指令。在以上示例中,两个线程在哈希表中运行,并且其存储器访问被监视/跟踪。如果两个线程访问/改变同一个条目,则可执行冲突解决以确保数据有效性。一种类型的事务执行包括软件事务存储器(STM),其中存储器访问、冲突解决、中止任务和其它事务任务的跟踪通过软件来执行,通常无需硬件支持。
另一种类型的事务执行包括硬件事务存储器(HTM)系统,其中包含硬件以支持访问跟踪、冲突解决和其它事务任务。先前,实际存储器阵列采用附加位来扩展,以便保存例如用于跟踪读、写和缓冲的硬件属性等信息,因此,数据随来自处理器的数据一起传播到存储器。这种信息通常认为是持久不变的,即,它在高速缓存收回(cacheeviction)时不会丢失,因为信息随数据在整个存储器层级结构中传播。然而,这种持久不变性在整个存储器层级结构系统施加更大开销。
存储相似信息的其它先前尝试已经通过扩展或添加与数据阵列分离的其它结构来实现,这些结构通常保存有损失的信息(即收回时丢失的信息),因为该信息没有随数据在整个存储器层级结构中传播。但是,保存这种数据的附加结构可能很昂贵。
发明内容
本发明一方面提供一种设备,包括:数据高速缓冲存储器,包括用于保存与数据项关联的有损失的元数据的第一数据条目,所述数据项保存在所述数据高速缓冲存储器的第二数据条目中。
本发明另一方面提供一种设备,包括:高速缓冲存储器的数据阵列,包括第一数据条目和第二数据条目;以及所述高速缓冲存储器的标签阵列,包括与所述第一数据条目关联的标签条目,其用于保存指明所述数据条目保存数据的物理值和指明所述数据条目保存数据项的元数据的元物理值,所述数据项保存在所述数据阵列的所述第二数据条目中。
本发明另一方面提供一种处理器,包括:高速缓冲存储器;以及耦合到所述高速缓冲存储器以便执行以下操作的逻辑:接收引用数据项的地址的至少一部分;将所述地址的所述部分与元物理扩展关联;以及确定高速缓冲存储器的元数据条目,以便根据所述地址和所述元物理扩展来访问与所述高速缓冲存储器的数据项条目中保存的数据项关联的元数据。
本发明另一方面提供一种设备,包括:高速缓冲存储器的数据阵列;地址转换逻辑,用于根据数据比元数据的压缩比将关联所述数据阵列的数据条目中的数据项的数据地址转换成关联所述高速缓冲存储器中的所述数据阵列的元数据条目的元数据地址;以及控制逻辑,耦合到所述地址转换逻辑和数据阵列,用于响应接收到引用所述数据地址的元数据访问操作和所述地址转换逻辑转换所述数据地址而访问所述数据阵列的所述元数据条目。
本发明另一方面提供一种方法,包括:遇到引用所述高速缓冲存储器的数据条目中保存的数据项的数据地址的元数据操作;从所述数据地址确定元数据地址;根据所述元数据地址来确定所述高速缓冲存储器的元数据条目;以及响应确定所述元数据条目而访问所述元数据条目中的元数据。
附图说明
附图中的各图以举例而不是限制的方式来说明本发明。
图1示出包括能够同时执行多个软件线程的多个处理元件的处理器的一个实施例。
图2a示出用于保存数据的元数据的元物理地址(metaphysicaladdress)空间的一个实施例。
图2b示出用于保存数据的元数据的元物理地址空间的另一个实施例。
图3a示出支持对元物理地址空间的访问的结构的一个实施例。
图3b示出支持对元物理地址空间的访问的结构的另一个实施例。
图4示出用于将数据压缩成元数据的一个实施例。
图5示出用于将数据压缩成元数据的另一个实施例。
图6示出访问数据的元数据的方法的流程图。
具体实施方式
在以下描述中,提出例如用于事务执行的具体硬件结构的示例、访问监视器的具体类型和实现、具体高速缓存实现、高速缓存相干模型的具体类型、具体数据粒度、以及存储器访问和位置的具体类型等的许多具体细节,以便提供对本发明的透彻了解。然而,本领域的技术人员会清楚地知道,这些具体细节不一定要用于实施本发明。在其它情况下,没有详细描述例如通过软件的事务的编码、事务的划分、具体和备选多核和多线程处理器架构、具体编译器方法/实现以及微处理器的具体操作细节等的众所周知的组件或方法,以免不必要地混淆对本发明的理解。
本文所述的方法和设备用于支持保存有损失的元数据的元物理地址空间。具体来说,元数据的元物理地址空间主要参照支持事务存储器系统来论述。但是,用于支持保存元数据的元物理地址空间的方法和设备并不局限于此,因为它们可通过保存关联数据项的元数据的存储器架构来实现。
参照图1,说明能够同时执行多个线程的处理器的一个实施例。注意,处理器100可包括用于硬件事务执行的硬件支持。处理器100还可与硬件事务执行结合或者单独地提供软件事务存储器(STM)的硬件加速、STM的单独执行或者其组合、如混合事务存储器(TM)系统的硬件支持。处理器100包括任何处理器,例如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器或者执行代码的其它装置。如图所示,处理器100包括多个处理元件。
在一个实施例中,处理元件表示线程单元、进程单元、上下文、逻辑处理器、硬件线程、核和/或任何其它元件,它能够保存处理器的状态、如执行状态或架构状态。换言之,在一个实施例中,处理元件表示能够与例如软件线程、操作系统、应用程序或其它代码等代码单独关联的任何硬件。物理处理器通常表示集成电路,它可能包括任何数量的其它处理元件、如核或硬件线程。
核通常表示位于集成电路上、能够保持独立架构状态的逻辑,其中各独立保持的架构状态与至少一部分专用执行资源关联。与核相比,硬件线程通常表示位于集成电路上、能够保持独立架构状态的任何逻辑,其中独立保持的架构状态共享对执行资源的访问。可以看到,当某些资源被共享而其它资源专用于架构状态时,核与硬件线程的命名之间的线路重叠。核和硬件线程又往往被操作系统看作是单独的逻辑处理器,其中操作系统能够单独调度各逻辑处理器上的操作。
如图1所示,物理处理器100包括两个核、即核101和102,它们共享对较高级高速缓存110的访问。虽然处理器100可包括不对称核、即具有不同配置、功能单元和/或逻辑的核,但示出的是对称核。因此,示为与核101相同的核102不作详细论述,以免重复论述。另外,核101包括两个硬件线程101a和101b,而核102包括两个硬件线程102a和102b。因此,软件实体、如操作系统可能将处理器100看作4个独立处理器,即,能够同时执行4个软件线程的4个逻辑处理器或处理元件。
在这里,第一线程与架构状态寄存器101a关联,第二线程与架构状态寄存器101b关联,第三线程与架构状态寄存器102a关联,以及第四线程与架构状态寄存器102b关联。如图所示,架构状态寄存器101a在架构状态寄存器101b中复制,因此单独的架构状态/上下文能够被存储用于逻辑处理器101a和逻辑处理器101b。例如重命名分配器逻辑130中的指令指针和重命名逻辑等其它较小资源对于线程101a和101b也可复制。例如重排序/引退单元135中的重排序缓冲器、ILTB 120、加载/存储缓冲器和队列等部分资源可通过划分来共享。例如通用内部寄存器、页表基址寄存器、低级数据高速缓存和数据TLB 115、执行单元140和无序单元135的部分等其它资源可能完全共享。
处理器100通常包括其它资源,它们可被完全共享、通过划分来共享或者由处理元件专用或专用于处理元件。图1中,示出具有处理器的说明性功能单元/资源的纯示范处理器的一个实施例。注意,处理器可包括或省略这些功能单元的任一个,以及包括未示出的任何其它已知功能单元、逻辑或固件。
如图所示,处理器100包括总线接口模块105,以便与处理器100外部的例如系统存储器175、芯片组、北桥或其它集成电路等装置进行通信。存储器175可以专用于处理器100或者由系统中的其它装置共享。较高级或更外层高速缓存110将高速缓存从较高级高速缓存110最近取出的元素。注意,较高级或更外层表示从执行单元增加或者进一步远离执行单元的高速缓存级。在一个实施例中,较高级高速缓存110是第二级数据高速缓存。但是,较高级高速缓存110并不局限于此,因为它可与指令高速缓存关联或者包括指令高速缓存。追踪高速缓存、即一种类型的指令高速缓存而是可耦合在解码器125之后,以便存储最近解码的追踪。模块120还可能包括预测待执行/采取的分支的分支目标缓冲器以及存储指令的地址转换条目的指令转换缓冲器(I-TLB)。
解码模块125耦合到取单元(fetch unit)120,以便对所取出的元素进行解码。在一个实施例中,处理器100与定义/指定在处理器100上可执行的指令的指令集架构(ISA)关联。在这里,ISA所识别的机器代码指令通常包括称作操作码的指令的一部分,它引用/指定待执行的指令或操作。
在一个示例中,分配器和重命名器块130包括保留资源的分配器、如寄存器文件,以便存储指令处理结果。但是,线程101a和101b可能能够无序执行,其中分配器和重命名器块130还保留其它资源、如重排序缓冲器,以便跟踪指令结果。单元130还可包括寄存器重命名器,以便将程序/指令引用寄存器重命名为处理器100内部的其它寄存器。重排序/引退单元135包括例如上述重排序缓冲器、加载缓冲器和存储缓冲器等组件,以便支持无序执行的指令的无序执行和稍后的按序引退。
在一个实施例中,调度器和执行单元块140包括调度执行单元上的指令/操作的调度器单元。例如,在具有可用浮点执行单元的执行单元的端口上调度浮点指令。还包括与执行单元关联的寄存器文件,以便存储信息指令处理结果。示范执行单元包括浮点执行单元、整数执行单元、转移执行单元、加载执行单元、存储执行单元和其它已知的执行单元。
较低级数据高速缓存和数据转换缓冲器(D-TLB)150耦合到执行单元140。数据高速缓存将存储最近使用/操作的元素、如数据操作数,它们可能保存在存储器相干状态。D-TLB将存储最近虚拟/线性到物理地址转换。作为一个特定示例,处理器可包括页表结构,以便将物理存储器分为多个虚拟页面。
在一个实施例中,处理器100能够硬件事务执行、软件事务执行或者它们的组合或混合。又可称作代码的临界或原子段的事务包括分组的将要作为原子组执行的指令、操作或微操作。例如,指令或操作可用于划分事务或临界段。在一个实施例中,下面更详细地进行描述,这些指令是指令集(如指令集架构(ISA))的一部分,它们是由处理器100的硬件、如上述解码器可识别的。这些指令在从高级语言编译成硬件可识别汇编语言时通常包括操作代码(操作码)或者解码器在解码阶段中识别的指令的其它部分。
在事务的执行期间,在提交事务之前,通常没有使对存储器的更新全局可见。作为一个示例,对某个位置的事务写入可能是本地线程可见的,然而,响应来自另一个线程的读取,直到提交包括事务写入的事务时才转发写数据。在事务仍然未决的同时,跟踪从存储器加载以及写入存储器的数据项/元素,下面更详细地进行论述。一旦事务达到提交点,如果对于该事务尚未检测到冲突,则提交事务,并且使事务期间所进行的更新全局可见。
但是,如果事务在其未决期间失效,则该事务被中止并且可能重新开始,而没有使更新全局可见。因此,本文所使用的“事务的未决”表示已经开始执行但尚未提交或中止、即未决的事务。
软件事务存储器(STM)系统通常涉及通过软件或者至少部分通过软件来执行访问跟踪、冲突解决或者其它事务存储器任务。在一个实施例中,处理器100能够执行编译器,以便编译程序代码以支持事务执行。在这里,编译器可插入操作、调用(call)、函数和其它代码,以便实现事务的执行。
编译器通常包括将源文本/代码转换成目标文本/代码的程序或程序集合。采用编译器编译程序/应用代码通常在多个阶段和遍数进行,以便将高级编程语言代码变换成低级机器或汇编语言代码。然而,单遍编译器仍然可用于简单编译。编译器可利用任何已知的编译技术,并且执行任何已知的编译器操作,例如词汇分析、预处理、解析、语义分析、代码生成、代码变换和代码优化。
较大编译器通常包括多个阶段,但是这些阶段几乎常常包含在两个一般阶段中:(1)前端,即,一般来说,其中可进行语法处理、语义处理和某种变换/优化;以及(2)后端,即,一般来说,其中进行分析、变换、优化和代码生成。某些编译器涉及中端,它说明编译器的前端与后端之间的描绘的模糊。因此,提及编译器的插入、关联、生成或其它操作可在上述阶段或遍数的任一个以及编译器的任何其它已知阶段或遍数中进行。作为一个说明性示例,编译器可能在编译的一个或多个阶段中插入事务操作、调用、函数,例如在编译的前端阶段中插入呼叫/操作,然后在事务存储器变换阶段中将调用/操作变换成较低级代码。
然而,尽管编译器的执行环境和动态或静态性质,但在一个实施例中,编译器编译程序代码,以便实现事务执行。因此,在一个实施例中,提及程序代码的执行表示:(1)动态或静态执行编译器程序,以便编译主要程序代码,保持事务结构,或者执行其它事务相关操作;(2)执行包括事务操作/调用的主要程序代码;(3)执行与主要程序代码关联的其它程序代码,例如库;或者(4)它们的组合。
在一个实施例中,处理器100能够利用硬件事务存储器(HTM)系统中的硬件/逻辑来执行事务。当实现HTM时,从架构和微架构的角度来看,都存在许多特定实现细节;其中的大多数在本文中不作论述,以免不必要地混淆对本发明的理解。但是,为了便于说明,公开了某些结构和实现。然而,应当注意,这些结构和实现不是必需的,而是可扩充和/或采用具有不同实现细节的其它结构来替换。
可由本地处理元件以及可能由其它处理元件对数据项进行访问和请求。在没有安全机制在事务存储器系统中的情况下,这些访问的一部分可能产生无效数据和执行,即,对数据的写入使读取失效,或者读取无效数据。因此,处理器100可能包括跟踪或监视向数据项以及从数据项的存储器访问的逻辑,以便识别可能的冲突。
数据项或数据元素可包括由硬件、软件或者它们的组合所定义的任何粒度等级的数据。数据、数据元素、数据项或者对其引用的非穷举列表包括存储器地址、数据对象、类、动态语言代码的类型的字段、动态语言代码的类型、变量、操作数、数据结构以及对存储器地址的间接引用。但是,任何已知的数据分组可称作数据元素或数据项。上述示例的几个、如动态语言代码的类型的字段和动态语言代码的类型表示动态语言代码的数据结构。为了进行说明,动态语言代码、例如来自Sun Microsystems,Inc的JavaTM是非常类型化的语言。各变量具有在编译时间已知的类型。类型分为两个类别-原语类型(布尔和数值,例如整数、浮点)和引用类型(类、接口和阵列)。引用类型的值是对于对象的引用。在JavaTM中,由字段组成的对象可以是类实例或阵列。给定类A的对象a,通常使用符号A::x来表示类型A的字段x,使用a.x来表示类A的对象a的字段x。例如,表达式可表达为a.x=a.y+a.z。在这里,加载字段y和字段z以便相加,并且结果将写入字段x。
因此,监视/缓冲对数据项的存储器访问可在任意数据级粒度执行。例如,在一个实施例中,对数据的存储器访问在类型级被监视。在这里,对字段A::x的事务写入和字段A::y的非事务加载可作为对同一个数据项(即类型A)的访问而被监视。在另一个实施例中,存储器访问监视/缓冲在字段级粒度执行。在这里,对A::x的事务写入和A::y的非事务加载没有作为对同一个数据项的访问而被监视,因为它们是对不同字段的引用。注意,在跟踪对数据项的存储器访问中可考虑其它数据结构或编程技术。作为一个示例,假定类A的对象的字段x和y(即A::x和A::y)指向类B的对象,初始化成新分配的对象,并且在初始化之后从未被写入。在一个实施例中,对A::x所指向的对象的字段B::z的事务写入,相对于A::y所指向的对象的字段B::z的非事务写入,不作为对同一个数据项的存储器访问而被监视。由这些示例推延,可以确定监视器可在任何数据粒度等级执行监视/缓冲。
在一个实施例中,监视器包括读监视器和写监视器,以便跟踪加载和存储,它们相应地被确定为受监视。作为一个示例,硬件读监视器和写监视器将以数据项的粒度来监视数据项,而不管基础存储结构的粒度。在一个实施例中,数据项由以存储结构的粒度所关联的跟踪机制来划界,以便确保适当地监视至少整个数据项。在Gad Sheaffer等人的同此提交的标题为“事务存储器(TM)系统中的读和写监视器属性”的共同未决申请No.XX/XXXXXX(代理机构卷号D71720)中更详细地论述利用读监视器/属性来监视数据项的一个示例。但是,监视器、属性、注释或其它跟踪机制可用于检测与利用数据或结构的任何粒度来保存数据的事务执行关联的冲突。
读或写属性包括用于保存与数据项关联的状态的任何逻辑、固件或结构。例如,数据项的属性包括位向量,其中位向量中的每个位表示数据项的属性,例如事务加载、事务写入、非事务加载、非事务写入、没有事务加载、没有事务写入、没有非事务加载、没有非事务写入、检测到访问冲突、没有检测到访问冲突、读请求、没有读请求、写请求、没有写请求、所有权请求、没有所有权请求或者与数据项或保存数据项的存储器位置关联的任何其它属性或状态。作为另一个示例,数据项的属性包括编码值。例如,状态,例如4种状态:(1)事务写入,(2)事务读取,(3)没有事务写入,以及(4)没有事务读取,利用2个属性位(即4个二进制值00、01、11和10)来编码。
根据该设计,高速缓存相干请求和被监视的高速缓存线的相干状态的不同组合引起可能的冲突,例如保存处于共享读取状态的数据项的高速缓存线,和指明对该数据项的写请求的窥探。相反,保存处于缓冲写入状态的数据项的高速缓存线和指明对该数据项的读请求的外部窥探可被认为可能冲突。在一个实施例中,为了检测访问请求和属性状态的这种组合,窥探逻辑耦合到冲突检测/报告逻辑、如用于冲突检测/报告的监视器和/或逻辑。
在一个实施例中,数据的元数据、如属性或性质,本地保存在存储器中。作为一个示例,数据高速缓存在高速缓冲存储器的条目中,而数据的元数据保存在高速缓存的另一个条目中。在这个示例中,即使元数据可能与数据竞争高速缓冲存储器中的空间,但是本地保存元数据而无需对数据阵列的附加扩展或无需附加单独存储结构的能力可能产生元数据的有效支持,而不会在整个存储器层级结构中激增持久不变元数据或者造成添加附加存储结构的昂贵成本。
在一个实施例中,硬件中的元数据到数据的物理映射不是软件直接可见的。因此,在这个示例中,元数据访问操作引用数据地址,并且依靠硬件来执行正确的转换(即映射),以便适当地访问元数据。在一个实施例中,一个或多个元物理地址空间在物理地址空间上重叠,用于访问元数据。本质上,引用存储器中保存的数据的数据地址被转换/操纵,以便获得元数据地址,它用于访问同一个存储器内不同的所转换位置的元数据。
为了进行说明,元物理值追加到数据地址,以便获得元数据地址。可利用将第一地址转换成第二地址的任何方法。将数据地址转换成元数据地址的一个示例包括利用物理地址或虚拟地址加上元物理值到来自元数据地址的单独数据地址的附加。作为另一个示例,数据地址可利用单独转换表/逻辑来转换,以便获得不同的元数据地址。
因此,存储器可按照相对于软件透明的方式来保存数据项的元数据。当硬件检测对元数据的访问操作时,通过显式操作代码(指令的操作码)或者将指令解码为元数据访问微操作,硬件相应地执行访问元数据的访问操作所引用的数据地址的必要转换。在这里,元数据可以是有损失的,即,元数据在选择保存元数据的条目供收回时丢失。但是,元数据的损失可按照与冲突的处理或者监视属性的损失相似的方式来保存,如Gad Sheaffer等人同此一起提交的标题为“在硬件中登记用户处理程序用于事务存储器事件处理”的申请序号XX/XXXXXX(代理机构卷号P29129)中所述。
如以上最初参照图1所述,为了便于论述,处理器100的架构是纯说明性的。类似地,转换用于引用元数据的数据地址的具体示例也是示范的,因为可利用将数据与同一个存储器的单独条目中的元数据关联的任何方法。
参照图2a,示出用于保存与数据关联的元数据的元物理地址空间的一个实施例。示出了例如控制逻辑250、标签阵列205和数据阵列207等的高速缓冲存储器的部分,而没有示出例如高速缓存查找、命中和未命中电路等具体控制电路及其它较大结构,以便简化论述。高速缓存的最常见示例包括数据高速缓存,例如图1所示的第一级高速缓存或第二级高速缓存。但是,高速缓存还可包括指令高速缓存、追踪高速缓存或其它已知高速缓存。
虽然没有详细描述高速缓存架构以免不必要地混淆对论述的理解,但是可按照许多方式来组织高速缓存。例如,高速缓存可以是全关联式(即,存储器地址可保存在高速缓存的任何位置)、集合关联式(其中某些范围的存储器地址限制到高速缓存的特定集合),或者是直接映射高速缓存(其中多个地址保存在高速缓存内的单个位置)。注意,本文所述的方法和设备可采用任何高速缓存组织来实现。
如图所示,高速缓存包括数据部分207(又可称作数据高速缓冲存储器或数据阵列)、与数据阵列207关联的标签阵列205以及与标签阵列205和数据阵列207关联的控制逻辑230。数据部分207包括元件210、215、220和225。本文所使用的高速缓存元件表示高速缓存的任何粒度的结构元件,例如高速缓存线、高速缓存条目、高速缓存位置或高速缓存集合。例如,元件210包括集合中的多个条目的一个条目,例如多条线路的一条线路。
如图所示,元数据209和数据项208保存在数据阵列207的单独条目中。但是,元数据209与数据项208关联,因为它表示数据项208的属性或性质,并且与条目210关联的数据项208的数据地址可用作或者转换成元数据地址,以便引用条目215中的元数据209。在一个实施例中,以这种方式保存元数据209被认为是有损失的。换言之,元数据209被认为是有损失的元数据。本质上,元数据209是本地构造,与通过存储器层级结构跟踪数据项208的持久不变数据不同。
例如,如果控制逻辑250选择条目215供收回,则元数据209被收回。由于元数据209在数据地址位置不存在,所以信息没有被保持或者回写到较高级存储器,即元数据209丢失。在这里,高速缓存控制逻辑250可因线路215的高速缓存相干状态、如无效状态或者因保存元数据值以指明条目215保存元数据209的扩展字段217而不执行回写,下面更详细地进行描述。
如上所述,元数据209包括与数据项208相关的任何属性、性质或信息。在事务存储器系统中,可按照多种有用方式来利用元数据209。作为第一示例,元数据209包括数据项208的例如读属性、写属性和/或缓冲属性等属性。在这里,当数据项208经事务读取时,更新元数据209以指明数据项208经读监视,即,对数据项208的外部写入则被认为是冲突。在这种实现中,窥探逻辑可修改成执行条目215中的元数据209的窥探、即条目215中的元数据的测试。
作为另一个示例,元数据包括其它事务相关信息,例如事务写入数据项208的备份位置、数据项208是否先前已经在事务中被访问和/或备份、数据项208是否与不可撤消/难抑制事务关联、数据项209是否已经丢失,或者其它已知事务相关描述信息。此外,如上所述,元数据的使用并不局限于事务信息。作为推论,元数据209还可包括与数据项208关联的信息、性质、属性或状态。
如图所示,标签阵列205包括分别与数据阵列207的数据条目210、215、220、225对应的标签条目211、216、221和226。通常,标签条目(如条目211)用于保存与条目210中保存的数据项208关联的地址的一部分。在对高速缓存访问时,搜索/查找标签阵列205利用来自访问操作地址的标签值以索引到正确的对应条目。在一个实施例中,地址(如地址201)采用扩展位被扩展,扩展位保存在标签阵列205中的标签扩展字段212、217、222和227中。在这里,扩展字段保存指明对应数据条目是否保存数据或元数据的值。作为一个示例,扩展字段212保存指明数据(如数据项208)保存在数据条目210中的数据值,而扩展字段217保存指明数据条目215保存元数据(如元数据209)的元物理值。
保存在扩展字段(如扩展字段217)中的元物理值可包括表示对应条目保存元数据的任何值。此外,元物理值可通过硬件(如控制寄存器)或者高速缓存控制逻辑250中的缺省设定(由指令参数提供)或者它们的组合来提供。
在一个实施例中,扩展字段217保存标签条目216的单个位,例如最高有效位(MSB)。在这里,当条目215保存元数据时,条目217则保存第一逻辑值、如逻辑高值。相反,扩展字段212保存第二逻辑值、如逻辑低值,以便指明条目210保存数据。为了进行说明,在数据地址与元数据地址之间的最基本转换方法的上下文中论述简化示例,即,其中标签条目211和216对于数据项208和209是相同的,其中只有扩展字段是不同的。在这里,地址201的一部分、如物理地址部分保存在标签阵列205的标签条目中。
假定接收到引用数据项208的数据地址的访问操作。控制逻辑208执行标签阵列205的搜索,以便确定对于该数据地址是否存在标签匹配。在这里,如果访问操作是访问数据项208的正常数据访问操作,则数据值与数据地址关联,并且搜索产生与条目211和扩展字段212的匹配。在这里,在条目216之间不存在匹配,因为扩展字段217包括元物理值(即这个示例中的逻辑1)。相反,如果访问操作包括元数据访问操作,则逻辑1的元物理值追加到数据地址,并且搜索产生条目216与扩展字段217的命中。类似地,不存在对条目211的命中,因为扩展字段212保存数据值。
如这个示例所示,程序可包括引用数据项、如数据项208的相同地址的例如数据访问操作或元数据访问操作等单独操作,并且硬件可将那些访问映射到不同的地址空间(例如物理地址空间和元物理地址空间)。在不同的值用于数据和元数据的标签条目的情况下,地址空间是正交的,即,元数据访问操作没有命中或修改数据条目,因为保存数据项的对应数据条目的扩展字段没有匹配元数据访问操作的查找扩展值。但是,由于元数据和数据地址空间竞争高速缓存中的空间,所以它们可通过竞争相互影响。
另外,在有损失的元数据的一个实施例中,元数据访问操作的标签阵列205的未命中不服务于高速缓冲存储器域外部的未命中。本质上,由于有损失的元数据209本地保存在高速缓存域中,所以没有理由在外部转发未命中以服务于请求。因此,可能以快速有效方式服务于对有损失的元数据的未命中。作为一个示例,高速缓存块被分配用于元数据,并且初始化成预定缺省值,而无需等待外部响应。
除了上述示例之外,在一个实施例中,标签阵列205的扩展字段包括多个位。作为第一示例,标签阵列205中的多个位可能包括在数据地址空间上重叠的多个单独的元物理地址空间。在这里,对于单独元数据、对于关联相同或不同元数据的单独处理元件、对于具有相同或不同元数据的程序的不同部分、对于具有相同或不同元数据的不同子系统或者对于与地址空间关联的任何其它已知元件,每个位或分组的位对应于元物理地址空间。
例如,假定两个处理元件、如两个核共享对高速缓存的访问。在这里,扩展字段217的第一位用于与第一处理元件关联的元物理地址空间,而扩展字段218的第二位用于与第二处理元件关联的第二元物理地址空间。基于上述示例,在对于第一处理元件遇到对数据地址201的元数据访问时,进行标签阵列205的搜索,且第一位设置成元物理逻辑值,它确保对第二处理元件的元物理地址空间的命中没有发生。
注意,在一些情况下,可能优选的是使处理元件访问不同的元物理地址空间,例如在第一处理元件检查是否由第二处理元件在第二元物理地址空间中设置了属性。在一个实施例中,扩展字段包括其它信息。例如,不是多个位用于多个处理元件,而是可在多个位中表示处理元件标识符、如上下文ID。此外,扩展字段的位可利用控制寄存器值、指令参数值或其它值来填充。
元数据访问操作可包括访问数据的显式指令/操作。在这里,处理器的解码器可根据指令集架构的操作代码(操作码)来识别元数据访问操作。另外,较大的更复杂指令在被解码时可包括元数据访问微操作。为了进行说明,将备份数据项208的指令解码成对备份位置执行数据项208的前一种形式的写入的第一微操作以及将元数据209更新成保存备份位置的地址的第二微操作。
如上所述,在一个实施例中,元数据209在硬件中与数据项208关联。如图所示,数据项208和元数据209未压缩(即元数据与数据之间的一对一关系)。换言之,元数据的大小与数据项208相同。下面更详细地论述元数据的压缩。然而,在一个实施例中,在硬件中元数据209与数据项208的关联包括将索引到数据项208的条目210的数据地址转换成索引到元数据209的条目215的元数据地址的逻辑。转换的示例包括添加了元物理值的无转换、添加了元物理值的正常数据地址转换以及采用元物理转换逻辑的单独转换。下面参照图3a-3b更详细地论述元数据到数据的转换的非穷举示例的这个列表。
快速参照图2b,示出用于保存与数据关联的元数据的元物理地址空间的另一个实施例。如上所述,元数据当保存在与数据相同的阵列中时可与数据竞争高速缓存空间。因此,如图2b所示,在一个实施例中,元数据保存在并行高速缓冲存储器260中。在这里,以上和以下描述的方法和设备、例如从数据地址获得元数据地址的步骤可按照相同方式来执行。但是,不是选择条目数据阵列207用于元数据地址,而是选择并行元数据阵列260中的条目。作为一个示例,复用器可用于根据元物理标识符值、如地址扩展230中保存的元物理值在阵列、集合、路、块等之间进行选择。因此,与本文中的描述相似,元数据地址可从给定数据项的数据地址获得。但是,在这个示例中,条目的选择在并行阵列260而不是在数据阵列207中进行。注意,元数据209按照相同方式与数据项208关联,但保存在不同的物理存储结构中。
来看图3a,示出支持对元物理地址空间的访问的结构的一个实施例。在这里,地址生成单元(AGU)320生成地址,这可响应访问操作而进行,如上所述。下面参照处理器利用虚拟地址转换、即通常利用处理器中定义的页表将所引用虚拟地址转换成物理地址的物理存储器的虚拟视图来论述寻址和转换。但是,寻址可按照许多方式来实现,并且相应地,本文所述的方法和设备可利用任何寻址方法来实现。
在一个实施例中,数据项通过数据地址301到元数据地址的转换而与元数据关联。作为第一示例,转换包括数据地址301的扩展而无需虚拟地址到物理地址的传统转换。本质上,数据地址的虚拟地址用于元数据地址。相反,元数据地址可按照与数据地址相似的方式通过转换结构来转换。
如图所示,转换后备缓冲器(TLB)325将虚拟地址、如虚拟地址201转换成物理地址。在某些处理器架构中,虚拟地址和物理地址共享地址的一部分,例如地址201的4K字节页面的位0-11。作为第一示例,元数据地址与数据地址相同。因此,阵列305中的高速缓存标签对于数据和关联元数据是相同的,除了扩展字段在数据与元数据条目之间有区别。
为了进行说明,又快速返回参照图2a。在这里,对应于元数据条目215的标签条目216与对应于数据条目210的标签条目211是相同的。但是,扩展字段212保存指明条目210保存数据的数据值,并且扩展字段217保存指明条目215保存元数据的元数据值。因此,在从数据条目215读取元数据209的高速缓存查找时,元数据值追加到标签值,以便命中与条目215对应的标签条目217。类似地,对于元数据209的存储操作,条目215在数据阵列207中分配有元物理值,元物理值根据指令参数或者寄存器中保存的值加载而在扩展字段217中。
从以上所述注意到,即使具有相同的数据地址,元数据访问也仅命中元数据条目,因为扩展标签条目中保存的数据值没有匹配追加/扩展的元数据值。在其中除了扩展字段之外没有修改数据标签值的情形下,元数据对数据的局部性(locality)可能是有利的。在这个示例中,条目210和215因用于选择数据阵列207中集合的地址的部分相同而可能在集合关联式高速缓存的相同集合中。
参照图3b,示出支持对元物理地址空间的访问的结构的另一个实施例。在这里,TLB 325仍然将虚拟地址301转换成物理地址。TLB325按照与查找表相似的方式进行操作以保存最近转换。另外,当没有发现最近转换时,虚拟地址通常根据在关联TLB的处理元件的寄存器中定义的页表来转换。在一个实施例中,提供元物理地址转换(MAT)缓冲器350用于数据地址到元数据地址的转换供元数据访问。作为一个示例,MAT缓冲器350按照与TLB 325相似的方式进行操作。在一个实施例中,MAT缓冲器350根据寄存器中定义的元物理页表或其它信息将数据地址301转换成元数据地址。
耦合到转换逻辑350的高速缓存查找逻辑响应元数据地址的标签部分匹配标签阵列中包含的标签条目所保存的标签值而确定对标签条目的命中。在这里,元数据值甚至当单独转换时也可追加到地址,以便帮助分离元物理和物理地址空间。因此,在这个示例中,元数据访问操作所引用的数据地址的命中包括通过元物理转换逻辑350将地址301转换成元数据地址,并且将元数据地址与标签阵列305中的高速缓存标签进行匹配。如以下所述,元物理地址转换逻辑350根据压缩比将数据地址转换成元数据地址。
但是,不管转换方法如何,即不管是没有修改还是通过单独表的转换,在一个实施例中,元数据到数据被压缩。换言之,压缩比是数据与元数据相比的量。例如,压缩比8、即8∶1包括8位数据与1位元数据或者8字节(四倍长字)数据与1字节元数据。
图4示出数据到元数据的压缩比为8的一个实施例。控制逻辑接收元数据访问操作所引用的数据地址401。对于压缩,log2(N)个位经过移位和/或删除,其中N是数据对元数据的压缩比。在所示示例中,对于压缩比为8,对于元数据地址402,三个位被向下移位并且删除。本质上,地址401(包括64位以引用存储器中的特定数据字节)被截取三个位,以便形成元数据字节地址402(其用于基于字节粒度引用存储器中的元数据);从其中选出一位元数据使用先前从该地址删除的三个位来形成元数据字节地址。
在一个实施例中,被移位/删除的位由其它位取代。如图所示,在地址401被移位之后,高阶位用零取代。但是,被删除/移位的位可用其它数据或信息(例如与元数据访问操作关联的上下文标识符(ID))取代。虽然最低数量的位在这个示例中被删除,但是任何位置的位可根据任何数量的因素来删除和取代,该因素例如高速缓存组织、高速缓存电路定时以及使数据与元数据之间的冲突为最小等。
例如,数据地址可以不被移位log2(N),而是使地址位0:2为零。因此,相同的物理地址和虚拟地址的位没有如上述示例中那样经过移位,这允许预先选择具有未修改位(如位11:3)的集合或存储体(bank)。在这里,不是利用被删除位0:2来选择位,而是使用不同的三个位、如高阶三个位来进行从字节选择一位。这种实现可能是定时友好的,但是,元数据可能没有与数据相邻,即,没有数据对元数据的局部性,因为高阶标签值是不同的。
在一个实施例中,无论地址401是否经过位移位、位删除或位取代,包含元物理值的地址扩展标签追加到元数据地址402。如图所示,元物理值包括逻辑1值,以便指明地址402是元数据地址。如上所述,元物理值可包括硬件、固件、软件或者它们的组合、如通过控制寄存器或指令参数所定义的任何固定值。另外,如上所述,在一个实施例中,不管是移位和调零的位、如位63-65或者是包括图4未示出的元物理值的扩展字段中的附加位,都采用其它信息来扩充。例如,例如核、上下文或线程ID等处理元件ID作为扩展追加到地址402。
一旦追加了适当的扩展位,则利用包括具有位64的扩展字段的元数据地址402的标签部分来搜索标签阵列405。注意,对于元数据加载/测试操作或者写操作,对标签阵列405搜索匹配标签值,即在元数据地址402与标签阵列405中的标签条目(如包括扩展字段417的标签条目416)之间匹配的标签中包含的虚拟地址的一部分和扩展位。
但是,当写元数据操作未命中标签阵列405、即尚未创建元数据时,则以正常方式为元数据的高速缓冲存储器分配条目。例如,根据元数据地址402和高速缓存替代算法(如最后最近使用(LRU)算法)来选择、分配条目(如条目415)并且将其初始化为元数据缺省值。因此,元数据可能与常规数据竞争空间。
现在来看图5,示出用于数据到元数据的压缩和扩展字段的利用的另一个实施例。在这里,一位元数据表示64个字节,即比率512∶1。与以上所述相似,数据地址501经过转换/修改,以便通过将数据地址501向下移位log2(512)个位(即9位),来形成元数据地址502。在这里,位6:8仍然用于选择位而不是位0:2,实际上通过以512位的粒度进行选择来创建压缩。因此,移位的虚拟地址的其余部分(即位63:21)被用作元数据地址502的标签值503的一部分。
但是,当地址502移位9位时,地址502的高阶部分具有9个开放位位置来保存信息。在一个实施例中,9个位保存标识符(例如上下文ID和/或线程ID)。另外,元物理空间值也可保存在这些位中,或者可将地址通过元物理空间位来扩展。按照与以上所述搜索和替代相似的方式,采用元数据标签503来搜索标签阵列505。在这里,如果标识符和地址空间不匹配,则没有发现命中,即确定未命中。因此,这个示例可能具有基于线程ID和/或上下文ID粒度提供元数据的能力。但是,在一些实现中,跨ID的访问可以是有利的(例如当另一个线程的监视器元数据由线程检查以确定关联的数据项是否由另一个线程来监视时)。在这种情形下,掩码可应用于标签比较值,以便允许一个线程命中另一个线程的元数据。
在一个实施例中,元数据的被移位的地址与常规数据访问被复用。在这里,元物理空间值可用作复用器输入,以便在常规数据高速缓存访问与元数据高速缓存访问之间进行选择。另外,存储元数据信息可按照与先前实现中执行存储转发相似的方式转发给元数据加载。但是,在一个实施例中,附加限制强加到元数据地址,例如以防止跨压缩比的转发。
在一个实施例中,多个并发压缩比由硬件来支持。在这里,压缩比的表示保存在扩展标签位中。因此,在标签阵列的搜索期间,考虑压缩比。此外,可测试压缩比,用于确定元数据存储是否应当转发给元数据加载。
在一个实施例中,高速缓存硬件利用单个压缩比来实现,但包括其它硬件支持,以便向软件提供多个压缩比。作为一个示例,假定高速缓存硬件利用8∶1压缩比来实现,如图4所示。然而,以不同粒度访问元数据的元数据访问操作经过解码以便包括读取缺省元数据量的微操作和测试所读取元数据的适当部分的测试微操作。作为一个示例,所读取的缺省元数据量为32位。但是,不同粒度/8∶1压缩的测试操作测试32位所读取的元数据的正确位,这可基于地址的一定数量的位、如元数据地址的多个LSB和/或上下文ID。
作为说明,在一种支持每字节数据一位元数据的未对齐数据的元数据的方案中,根据元数据地址的三个LSB从元数据的32个读取位中的八个最低有效位中来选择单个位。对于数据字,根据地址的三个LSB从32位读取元数据的16个最低有效位中选择两个连续的元数据位,并且一直继续进行到对于128位元数据大小的16位为止。
在一个实施例中,对于上述方案,掩码根据传递给它的元数据地址位通过左移位操作来产生。作为掩码的说明,产生左移位操作包括:
8∶1 compression:0xFFFE<<Address[2:0];
16∶1 compression:0xFFFC<<Address[2:0];
32∶1 compression:0xFFF0<<Address[2:0];
64∶1 compression:0xFF00<<Address[2:0];
128∶1 compression:0x0000<<Address[2:0].
这个掩码与加载/读取微操作所读取的32位元数据逐位经过逻辑“或”操作,然后所得32个位共同经过逻辑“与”操作以测试元数据/设置标志。
作为另一个实现示例,使用给定数据大小的单个位-因而不允许未对齐数据支持。在这个方案中,掩码根据传递给它的元数据地址位的子集和处理元件ID位通过左移位操作来产生。因此,对于每字节一位压缩的元数据,所有元数据位用于各字节。对于每个字一位压缩的元数据,仅使用每第2个位,等等,直到只有所读取的32元数据位中的单个位用于32字节数据操作数。由于元数据存储对于较大数据大小变得越来越稀疏(较高压缩率),所以有机会利用额外空间并列存储多个上下文的元数据,这意味着,右元数据位根据地址LSB位和上下文ID(CID)的组合从32个元数据位中选取。
作为产生左移位操作的掩码的说明,包括:
8∶1 compression:0x0001<<00&Address[2:0];
16∶1 compression:0x0001<<00&CID[0]&Address[2:1];
32∶1 compression:0x0001<<00&CID[1:0]&Address[2];
64∶1 compression:0x0001<<00&CID[2:0];
128∶1 compression:0x0001<<0&CID[3:0];
256∶1 compression:0x0001<<CID[4:0].
这个掩码与第一微操作所读取的32位元数据逐位经过逻辑“与”操作,并且所得32位共同经过逻辑“或”操作,以便测试元数据以及可能设置标志。
参照图6,示出访问数据的元数据的方法的流程图。虽然图6的流程按照基本串行方式示出,但是流程可至少部分并行地以及可能按照不同顺序来执行。在流程620,遇到引用给定数据项的数据地址的元数据操作。元数据操作的示例包括加载/测试和存储/写/清除操作或微操作。但是,元数据访问操作可以是访问元数据的显式软件指令/操作以及经解码作为较大的更复杂指令的一部分的隐式微操作(例如隐式要求更新关联元数据的对数据项的访问)。另外,实现可选择成根据例如保护环转变、转变成不同处理器操作模式或者重新映射存储器页面等的某些系统事件大批清除给定上下文、线程或处理器的所有元数据。
元数据地址从所引用数据地址来确定。确定元数据地址的示例包括:
利用虚拟到物理地址转换的正常数据将数据地址转换成数据地址,并且将元物理扩展追加到数据地址,以便形成元数据地址;
将元物理扩展追加到虚拟数据地址,以便形成元数据地址;
利用元物理转换表逻辑将数据地址转换成物理元数据地址,并且将元物理扩展追加到物理元数据地址,以便形成元数据地址。
此外,转换可结合、即基于数据与元数据的压缩比,以便单独为各压缩比存储元数据。
在流程630,高速缓冲存储器的元数据条目根据元数据地址来确定。作为一个示例,元数据地址的标签部分用于搜索标签阵列。如果包括元物理值的标签部分没有匹配标签条目,则发生未命中。在一个实施例中,不是发出服务于高速缓存未命中的窥探请求,而是本地服务于未命中,而无需高速缓存域外部的请求,因为元数据是仅在高速缓冲存储器中保存的有损失的元数据。因此,条目按照正常高速缓存分配策略分配有条目中保存的适当元数据标签,并且数据存储元件采用缺省元数据值来初始化。因此,元数据相对关联数据项的局部性和定时也可能得到改进。相反,如果发生命中,则直接确定元数据条目。
无论确定条目通过命中还是未命中和条目的分配来确定,适当地访问元数据。例如,对于加载或测试操作,读取元数据。相反,对于存储操作,在对应元数据条目中更新元数据。因此,可以看到,元数据可按照有损失的方式保存在本地高速缓冲存储器中,而无需向高速缓冲存储器的数据阵列注释位或者无需昂贵的附加存储结构。此外,元数据可按照压缩方式、即数据与元数据的压缩比来保存。硬件可实现单个或多个压缩比,并且在任一种情况下,向软件提供多个压缩比。
本文所使用的模块表示任何硬件、软件、固件或者它们的组合。示为单独的模块边界一般通常可改变并且可能重叠。例如,第一和第二模块可共享硬件、软件、固件或者它们的组合,同时可能保留一些独立的硬件、软件或固件。在一个实施例中,术语“逻辑”的使用包括例如晶体管、寄存器等硬件或者例如可编程逻辑装置等其它硬件。但是,在另一个实施例中,逻辑还包括与硬件集成的软件或代码,例如固件或微码。
本文所使用的值包括数值、状态、逻辑状态或者二进制逻辑状态的任何已知表示。逻辑电平、逻辑值或逻辑的值的使用又称作1和0,它只是表示二进制逻辑状态。例如,1表示高逻辑电平,而0表示低逻辑电平。在一个实施例中,存储元、如晶体管或闪存元可以能够保存单个逻辑值或多个逻辑值。但是,已经使用计算机系统中的值的其它表示。例如,十进制数10也可表示为二进制值1010以及十六进制字母A。因此,值包括能够在计算机系统中保存的信息的任何表示。
此外,状态可由值或者值的部分来表示。作为一个示例,第一值、如逻辑1可表示缺省或初始状态,而第二值、如逻辑0可表示非缺省状态。另外,在一个实施例中,术语“重置”和“设置”分别表示缺省和更新值或状态。例如,缺省值可能包括高逻辑值、即重置,而更新值可能包括低逻辑值、即设置。注意,值的任何组合可用于表示任何数量的状态。
以上提出的方法、软件、硬件、软件、固件或代码的实施例可经由机器可访问或机器可读介质上存储的、处理元件可执行的指令或代码来实现。机器可访问/可读介质包括以机器、如计算机或电子系统可读形式来提供(即存储和/或传送)信息的任何机构。例如,机器可访问介质包括:随机存取存储器(RAM),例如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪速存储器装置;电存储装置、光存储装置、声存储装置或者其它形式的传播信号(例如载波、红外信号、数字信号)存储装置等。例如,机器可通过从能够保存通过传播信号传送的信息的介质接收例如载波等传播信号来访问存储装置。
本说明书中提到“一个实施例”或“实施例”表示结合该实施例所述的具体特征、结构或特性包含在本发明的至少一个实施例中。因此,词语“在一个实施例中”或“在实施例中”在本说明书的各个位置的出现不一定都表示同一个实施例。此外,具体特征、结构或特性可按照任何适当方式结合在一个或多个实施例中。
在以上说明书中,参照具体示范实施例来提供具体实施方式。但是很明显,可对其进行各种修改和变更,而没有背离所附权利要求书所提出的本发明的广义精神和范围。因此,说明书和附图将被看作是说明性而不是限制性的。此外,实施例及其它示范语言的使用不一定表示相同的实施例或者相同的示例,而是可表示不同且有区别的实施例以及可能相同的实施例。

Claims (37)

1.一种设备,包括:
数据高速缓冲存储器,包括用于保存与数据项关联的有损失的元数据的第一数据条目,所述数据项保存在所述数据高速缓冲存储器的第二数据条目中。
2.如权利要求1所述的设备,还包括:与所述第一数据条目关联的第一扩展字段,用于保存指明所述第一数据条目保存元数据的元数据值;以及与所述第二数据条目关联的第二扩展字段,用于保存指明所述第二数据条目保存数据的数据值。
3.如权利要求2所述的设备,其中,所述第一扩展字段还用于保存指明与所述有损失的元数据关联的处理元件的处理元件标识符(ID)。
4.如权利要求1所述的设备,其中,与所述数据项关联的所述有损失的元数据包括所述数据项的属性,所述属性从读监视器属性、写监视器属性和缓冲属性组成的组中选取。
5.如权利要求2所述的设备,其中,所述第一扩展字段保存在对应于所述第一数据条目的第一标签条目中,以及其中所述第二扩展字段保存在对应于所述第二数据条目的第二标签条目中。
6.如权利要求5所述的设备,还包括:高速缓存控制逻辑,用于搜索包括所述第一标签条目和所述第二标签条目的标签阵列,以便响应元数据访问操作而根据包括保存所述元数据值的所述第一扩展字段的所述第一标签条目的值来查找与所述第一数据条目对应的所述第一标签条目,所述元数据访问操作引用与所述数据项关联的地址以访问所述有损失的元数据。
7.如权利要求5所述的设备,其中,所述第一标签条目还保存与所述有损失的元数据关联的处理元件标识符(ID)以及与所述数据项关联的地址的一部分。
8.如权利要求7所述的设备,还包括:高速缓存控制逻辑,用于接收引用所述数据项的地址以访问所述有损失的元数据的元数据访问操作,其中所述高速缓存控制逻辑用于根据压缩比将所述地址移位多个位、将所述处理元件ID追加到所述地址,以及将所述元数据值追加到所述地址以形成元数据地址,其中所述控制逻辑还用于采用所述元数据地址的标签部分来搜索包括所述第一标签条目和所述第二标签条目的标签阵列以查找所述第一标签条目。
9.如权利要求1所述的设备,还包括:高速缓存控制逻辑,用于选择所述第一数据条目供收回,以及用于响应与所述第一数据条目关联的保存指明所述第一数据条目保存元数据的所述元数据值的所述第一扩展字段而不发起所述有损失的元数据到较高级存储器的回写。
10.一种设备,包括:
高速缓冲存储器的数据阵列,包括第一数据条目和第二数据条
目;以及
所述高速缓冲存储器的标签阵列,包括与所述第一数据条目关联的标签条目,其用于保存指明所述数据条目保存数据的物理值和指明所述数据条目保存数据项的元数据的元物理值,所述数据项保存在所述数据阵列的所述第二数据条目中。
11.如权利要求10所述的设备,还包括:控制逻辑,耦合到所述标签阵列,用于接收具有元数据类型的访问操作所引用的地址,用于响应具有所述元数据类型的所述访问而将所述元物理值追加到所述地址以形成元数据地址,以及用于响应包括所述元物理值的所述元数据地址的标签部分匹配所述标签条目中保存的标签值而确定对所述第一数据条目的命中。
12.如权利要求11所述的设备,其中,用于保存指明所述数据条目保存元数据的所述第一标签条目包括保存设置成指明所述数据条目保存元数据的第一逻辑值的地址扩展位的所述第一标签条目,以及其中用于将所述元物理值追加到所述地址以形成元数据地址的所述控制逻辑包括用于将第一逻辑值追加到所述地址以形成所述元数据地址的所述控制逻辑。
13.如权利要求10所述的设备,还包括:
转换逻辑,用于接收引用与所述数据项关联的地址的元数据类型的访问操作,以及用于将所述地址转换成元数据地址;
高速缓存查找逻辑,耦合到所述转换逻辑,用于响应所述元数据地址的标签部分匹配所述标签阵列中包含的所述标签条目所保存的标签值而确定对所述标签条目的命中;以及
控制逻辑,耦合到所述高速缓存查找逻辑,用于响应所述高速缓存查找逻辑确定对关联所述第一数据条目的所述标签条目的所述命中而执行对所述第一数据条目的所述访问操作。
14.如权利要求13所述的设备,其中,将所述地址转换成所述元数据地址的所述转换逻辑基于压缩比N,以及其中N是数据量比元数据量。
15.如权利要求14所述的设备,其中,根据压缩比N将所述地址转换成所述元数据地址的所述转换逻辑包括将所述地址移位log2(N)位并且将所述元物理值追加到所述地址以形成所述元数据地址的所述转换逻辑。
16.如权利要求15所述的设备,还包括:控制寄存器,用于保存与所述访问操作关联的处理元件的处理元件标识符(ID),其中所述转换逻辑根据压缩比N将所述地址转换成所述元数据地址还包括从所述地址删除log2(N)个位,并且用所述处理元件ID取代所述被删除的log2(N)位的至少一部分。
17.如权利要求13所述的设备,还包括:用于定义元物理页表的寄存器,其中将所述地址转换成所述元数据地址的所述转换逻辑包括根据寄存器中定义的元-物理页表将所述地址转换成所述元数据地址的元-物理转换后备缓冲器(MTLB)。
18.一种处理器,包括:
高速缓冲存储器;以及
耦合到所述高速缓冲存储器以便执行以下操作的逻辑:
接收引用数据项的地址的至少一部分;
将所述地址的所述部分与元物理扩展关联;以及
确定高速缓冲存储器的元数据条目,以便根据所述地址和所述元物理扩展来访问与所述高速缓冲存储器的数据项条目中保存的数据项关联的元数据。
19.如权利要求18所述的处理器,其中,用于接收引用所述数据项的所述地址的至少一部分的所述逻辑响应控制逻辑接收引用所述地址的元数据访问操作。
20.如权利要求18所述的处理器,其中,用于将所述地址的所述部分与所述元物理扩展关联的所述逻辑包括用于将所述元物理扩展追加到所述地址的所述部分的最高有效位(MSB)的所述逻辑。
21.如权利要求20所述的处理器,其中,所述元物理扩展包括单个元物理扩展位。
22.如权利要求20所述的处理器,其中,所述元物理扩展包括多个元物理扩展位。
23.如权利要求22所述的处理器,其中,所述多个元物理扩展位分别对应于单独的元物理地址空间。
24.如权利要求22所述的处理器,其中,所述多个元物理扩展位包括单个元物理标识符位和多个处理元件标识符位。
25.如权利要求18所述的处理器,其中,与所述数据项关联的所述元数据在所述元数据条目从所述高速缓冲存储器收回时丢失,以及其中所述元数据包括所述数据项的属性。
26.一种设备,包括:
高速缓冲存储器的数据阵列;
地址转换逻辑,用于根据数据比元数据的压缩比将关联所述数据阵列的数据条目中的数据项的数据地址转换成关联所述高速缓冲存储器中的所述数据阵列的元数据条目的元数据地址;以及
控制逻辑,耦合到所述地址转换逻辑和数据阵列,用于响应接收到引用所述数据地址的元数据访问操作和所述地址转换逻辑转换所述数据地址而访问所述数据阵列的所述元数据条目。
27.如权利要求26所述的系统,其中,所述地址转换逻辑包括用于定义元物理页表的存储装置以及用于根据所述压缩比利用所述元物理页表将所述数据地址转换成所述元数据地址的元物理转换缓冲器。
28.如权利要求26所述的系统,其中,所述地址转换逻辑根据数据比元数据的所述压缩比将所述数据地址转换成所述元数据地址包括:将所述数据地址向下移位压缩比以2为底的对数个位以形成移位的地址,并且将所述移位的地址与元物理扩展值关联以形成所述元数据地址。
29.如权利要求28所述的系统,其中,所述地址转换逻辑根据数据比元数据的所述压缩比将所述数据地址转换成所述元数据地址还包括:在将所述移位的地址与所述元物理扩展值关联以形成所述元数据地址之前,将处理元件标识符与所述移位的地址关联。
30.一种方法,包括:
遇到引用所述高速缓冲存储器的数据条目中保存的数据项的数据地址的元数据操作;
从所述数据地址确定元数据地址;
根据所述元数据地址来确定所述高速缓冲存储器的元数据条目;以及
响应确定所述元数据条目而访问所述元数据条目中的元数据。
31.如权利要求30所述的方法,其中,从所述数据地址确定所述元数据地址包括将所述数据地址转换成数据地址,并且将元物理扩展追加到所述数据地址以形成所述元数据地址。
32.如权利要求30所述的方法,其中,从所述数据地址确定所述元数据地址包括利用元物理转换表逻辑以及将元物理扩展追加到所述物理元数据地址以形成所述元数据地址从而将所述数据地址转换成物理元数据地址。
33.如权利要求32所述的方法,其中,利用元物理转换表逻辑将所述数据地址转换成物理元数据地址基于数据比元数据的压缩比。
34.如权利要求30所述的方法,其中,所述数据地址包括虚拟数据地址,以及从所述数据地址确定所述元数据地址包括将元物理扩展追加到所述虚拟数据地址以形成所述元数据地址。
35.如权利要求30所述的方法,其中,所述元数据操作包括用于存储新数据的存储元数据操作,并且访问所述元数据条目中的元数据包括将新的元数据存储到所述元数据条目。
36.如权利要求30所述的方法,其中,所述元数据操作包括用于加载所述元-数据的加载元数据操作,并且访问所述元数据条目中的元数据包括从所述元数据条目加载所述元数据。
37.如权利要求30所述的方法,其中,所述元数据从所述数据项的属性、所述数据项的处理元件标识符和所述数据项的备份数据的位置组成的组中选取。
CN200910113666.7A 2008-12-30 2009-12-30 用于在硬件中保存有损失的元数据的元物理地址空间 Expired - Fee Related CN101770429B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/346500 2008-12-30
US12/346,500 US8806101B2 (en) 2008-12-30 2008-12-30 Metaphysical address space for holding lossy metadata in hardware

Publications (2)

Publication Number Publication Date
CN101770429A true CN101770429A (zh) 2010-07-07
CN101770429B CN101770429B (zh) 2014-09-10

Family

ID=42286183

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910113666.7A Expired - Fee Related CN101770429B (zh) 2008-12-30 2009-12-30 用于在硬件中保存有损失的元数据的元物理地址空间

Country Status (6)

Country Link
US (1) US8806101B2 (zh)
JP (1) JP5451776B2 (zh)
KR (1) KR101299317B1 (zh)
CN (1) CN101770429B (zh)
TW (1) TWI446261B (zh)
WO (1) WO2010077842A2 (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105637492A (zh) * 2013-10-04 2016-06-01 高通股份有限公司 多核异构系统转换后备缓冲器相干性
CN107735773A (zh) * 2015-05-20 2018-02-23 高通股份有限公司 用于高速缓冲存储标签压缩的方法及设备
CN108363668A (zh) * 2017-01-26 2018-08-03 英特尔公司 线性存储器地址变换和管理
CN108475234A (zh) * 2015-11-04 2018-08-31 三星电子株式会社 在多处理器系统中构建相干存储器的系统及方法
CN109416664A (zh) * 2016-07-02 2019-03-01 英特尔公司 增强的地址空间布局随机化
CN109690503A (zh) * 2016-09-29 2019-04-26 高通股份有限公司 用于高度相关联内容可寻址存储器(cam)阵列上的多路读取的面积高效架构
TWI661300B (zh) * 2017-09-15 2019-06-01 旺宏電子股份有限公司 記憶體的資料管理方法及記憶體裝置
CN110865945A (zh) * 2018-08-28 2020-03-06 上海天王星智能科技有限公司 存储设备的扩展地址空间
CN113168293A (zh) * 2019-01-31 2021-07-23 华为技术有限公司 用于访问集群存储系统中的缓存的方法和装置
CN114253464A (zh) * 2020-09-24 2022-03-29 爱德斯托科技有限公司 控制读取请求的方法和具有主机装置的存储器控制器

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652210B2 (en) * 2007-08-28 2017-05-16 Red Hat, Inc. Provisioning a device with multiple bit-size versions of a software component
US8806101B2 (en) 2008-12-30 2014-08-12 Intel Corporation Metaphysical address space for holding lossy metadata in hardware
US9785462B2 (en) 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
US8370577B2 (en) 2009-06-26 2013-02-05 Microsoft Corporation Metaphysically addressed cache metadata
US8250331B2 (en) 2009-06-26 2012-08-21 Microsoft Corporation Operating system virtual memory management for hardware transactional memory
US8812796B2 (en) 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations
US8489864B2 (en) * 2009-06-26 2013-07-16 Microsoft Corporation Performing escape actions in transactions
US20100332768A1 (en) * 2009-06-26 2010-12-30 Microsoft Corporation Flexible read- and write-monitored and buffered memory blocks
US8356166B2 (en) * 2009-06-26 2013-01-15 Microsoft Corporation Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers
US8229907B2 (en) * 2009-06-30 2012-07-24 Microsoft Corporation Hardware accelerated transactional memory system with open nested transactions
US8825936B2 (en) * 2009-08-03 2014-09-02 Quantum Corporation Systems and methods for increasing data volume sparseness
US8402218B2 (en) 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
US9092253B2 (en) * 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
US8539465B2 (en) * 2009-12-15 2013-09-17 Microsoft Corporation Accelerating unbounded memory transactions using nested cache resident transactions
US8533440B2 (en) 2009-12-15 2013-09-10 Microsoft Corporation Accelerating parallel transactions using cache resident transactions
US10223204B2 (en) 2011-12-22 2019-03-05 Intel Corporation Apparatus and method for detecting and recovering from data fetch errors
US8886883B1 (en) * 2012-03-31 2014-11-11 Emc Corporation System and method for improving cache performance
CN103207844B (zh) * 2013-04-18 2017-06-06 上海云间半导体科技有限公司 缓存系统及缓存访问方法
US9418018B2 (en) * 2013-12-31 2016-08-16 Samsung Electronics Co., Ltd. Efficient fill-buffer data forwarding supporting high frequencies
US10235338B2 (en) 2014-09-04 2019-03-19 Nvidia Corporation Short stack traversal of tree data structures
US9507628B1 (en) * 2015-09-28 2016-11-29 International Business Machines Corporation Memory access request for a memory protocol
US10936713B2 (en) 2015-12-17 2021-03-02 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10235176B2 (en) * 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10607665B2 (en) * 2016-04-07 2020-03-31 Micron Technology, Inc. Span mask generation
US10061698B2 (en) 2017-01-31 2018-08-28 Qualcomm Incorporated Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compression memory system when stalled write operations occur
GB2568059B (en) * 2017-11-02 2020-04-08 Advanced Risc Mach Ltd Method for locating metadata
WO2019152792A1 (en) 2018-02-02 2019-08-08 Dover Microsystems, Inc. Systems and methods for policy linking and/or loading for secure initialization
SG11202007272QA (en) 2018-02-02 2020-08-28 Charles Stark Draper Laboratory Inc Systems and methods for policy execution processing
EP3788488A1 (en) 2018-04-30 2021-03-10 Dover Microsystems, Inc. Systems and methods for checking safety properties
US11074013B2 (en) 2018-08-07 2021-07-27 Marvell Asia Pte, Ltd. Apparatus and methods for providing quality of service over a virtual interface for solid-state storage
US11656775B2 (en) 2018-08-07 2023-05-23 Marvell Asia Pte, Ltd. Virtualizing isolation areas of solid-state storage media
US11010314B2 (en) 2018-10-30 2021-05-18 Marvell Asia Pte. Ltd. Artificial intelligence-enabled management of storage media access
TW202022678A (zh) 2018-11-06 2020-06-16 美商多佛微系統公司 用於停滯主處理器的系統和方法
US20220012329A1 (en) * 2018-11-12 2022-01-13 Dover Microsystems, Inc. Systems and methods for metadata encoding
WO2020132012A1 (en) 2018-12-18 2020-06-25 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
US11481118B2 (en) 2019-01-11 2022-10-25 Marvell Asia Pte, Ltd. Storage media programming with adaptive write buffer release
US11656995B2 (en) * 2019-11-26 2023-05-23 Micron Technology, Inc. Dynamic access granularity in a cache media
US20230029331A1 (en) * 2021-07-26 2023-01-26 Microsoft Technology Licensing, Llc Dynamically allocatable physically addressed metadata storage

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8728494D0 (en) * 1987-12-05 1988-01-13 Int Computers Ltd Multi-cache data storage system
JP2651037B2 (ja) * 1990-04-23 1997-09-10 株式会社日立製作所 アドレスバス制御装置
US6549996B1 (en) * 1999-07-02 2003-04-15 Oracle Corporation Scalable multiple address space server
EP1111511B1 (en) * 1999-12-06 2017-09-27 Texas Instruments France Cache with multiple fill modes
US7035963B2 (en) * 2000-12-27 2006-04-25 Intel Corporation Method for resolving address space conflicts between a virtual machine monitor and a guest operating system
US20030005219A1 (en) * 2001-06-29 2003-01-02 Royer Robert J. Partitioning cache metadata state
US7032125B2 (en) * 2002-04-25 2006-04-18 Lsi Logic Corporation Method for loosely coupling metadata and data in a storage array
US6990557B2 (en) * 2002-06-04 2006-01-24 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with cache eviction based on thread identifier
US6868485B1 (en) * 2002-09-27 2005-03-15 Advanced Micro Devices, Inc. Computer system with integrated directory and processor cache
US7010645B2 (en) * 2002-12-27 2006-03-07 International Business Machines Corporation System and method for sequentially staging received data to a write cache in advance of storing the received data
US7047390B2 (en) * 2003-06-17 2006-05-16 International Business Machines Corporation Method, system, and program for managing a relationship between one target volume and one source volume
FR2859307A1 (fr) * 2003-08-27 2005-03-04 St Microelectronics Sa Memoire cache a lecture asynchrone et dispositif de controle de l'acces a une memoire de donnees comprenant une telle memoire cache
US7644239B2 (en) * 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
JP4753549B2 (ja) * 2004-05-31 2011-08-24 パナソニック株式会社 キャッシュメモリおよびシステム
CN100553209C (zh) * 2004-08-19 2009-10-21 诺基亚公司 为控制网络上多媒体数据的部署而对目录服务器数据进行高速缓存
KR100704037B1 (ko) * 2005-04-15 2007-04-04 삼성전자주식회사 이종의 비휘발성 메모리를 가지는 데이터 저장장치와 그의구동 방법
US7533215B2 (en) * 2005-09-15 2009-05-12 Intel Corporation Distributed and packed metadata structure for disk cache
US8225297B2 (en) * 2005-12-07 2012-07-17 Microsoft Corporation Cache metadata identifiers for isolation and sharing
US8001538B2 (en) * 2005-12-07 2011-08-16 Microsoft Corporation Software accessible cache metadata
US7991965B2 (en) * 2006-02-07 2011-08-02 Intel Corporation Technique for using memory attributes
US8195832B2 (en) * 2007-12-12 2012-06-05 Alcatel Lucent Facilitating management of layer 2 hardware address table based on packet priority information
JP2008305424A (ja) * 2008-07-28 2008-12-18 Hitachi Ltd ディスクシステムとそのキャッシュ制御方法
US8806101B2 (en) 2008-12-30 2014-08-12 Intel Corporation Metaphysical address space for holding lossy metadata in hardware
US8370577B2 (en) * 2009-06-26 2013-02-05 Microsoft Corporation Metaphysically addressed cache metadata

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105637492B (zh) * 2013-10-04 2018-04-20 高通股份有限公司 多核异构系统转换后备缓冲器相干性
CN105637492A (zh) * 2013-10-04 2016-06-01 高通股份有限公司 多核异构系统转换后备缓冲器相干性
CN107735773B (zh) * 2015-05-20 2021-02-05 高通股份有限公司 用于高速缓冲存储标签压缩的方法及设备
CN107735773A (zh) * 2015-05-20 2018-02-23 高通股份有限公司 用于高速缓冲存储标签压缩的方法及设备
US11615026B2 (en) 2015-11-04 2023-03-28 Samsung Electronics Co., Ltd. Systems and methods for implementing coherent memory in a multiprocessor system
CN108475234A (zh) * 2015-11-04 2018-08-31 三星电子株式会社 在多处理器系统中构建相干存储器的系统及方法
CN109416664A (zh) * 2016-07-02 2019-03-01 英特尔公司 增强的地址空间布局随机化
CN109416664B (zh) * 2016-07-02 2023-09-01 英特尔公司 用于增强的地址空间布局随机化的系统、设备和方法
CN109690503A (zh) * 2016-09-29 2019-04-26 高通股份有限公司 用于高度相关联内容可寻址存储器(cam)阵列上的多路读取的面积高效架构
CN109690503B (zh) * 2016-09-29 2023-07-07 高通股份有限公司 用于高度相关联内容可寻址存储器(cam)阵列上的多路读取的面积高效架构
CN108363668A (zh) * 2017-01-26 2018-08-03 英特尔公司 线性存储器地址变换和管理
CN108363668B (zh) * 2017-01-26 2024-03-08 英特尔公司 线性存储器地址变换和管理
TWI661300B (zh) * 2017-09-15 2019-06-01 旺宏電子股份有限公司 記憶體的資料管理方法及記憶體裝置
CN110865945A (zh) * 2018-08-28 2020-03-06 上海天王星智能科技有限公司 存储设备的扩展地址空间
CN113168293A (zh) * 2019-01-31 2021-07-23 华为技术有限公司 用于访问集群存储系统中的缓存的方法和装置
CN114253464A (zh) * 2020-09-24 2022-03-29 爱德斯托科技有限公司 控制读取请求的方法和具有主机装置的存储器控制器
CN114253464B (zh) * 2020-09-24 2023-12-08 爱德斯托科技有限公司 控制读取请求的方法和具有主机装置的存储器控制器

Also Published As

Publication number Publication date
CN101770429B (zh) 2014-09-10
US8806101B2 (en) 2014-08-12
US20100169382A1 (en) 2010-07-01
TWI446261B (zh) 2014-07-21
KR20110050719A (ko) 2011-05-16
KR101299317B1 (ko) 2013-08-26
JP2012512491A (ja) 2012-05-31
WO2010077842A2 (en) 2010-07-08
TW201030609A (en) 2010-08-16
WO2010077842A3 (en) 2010-09-23
JP5451776B2 (ja) 2014-03-26

Similar Documents

Publication Publication Date Title
CN101770429B (zh) 用于在硬件中保存有损失的元数据的元物理地址空间
CN101814018B (zh) 事务存储器(tm)系统中的读和写监控属性
US8370577B2 (en) Metaphysically addressed cache metadata
CN101814017B (zh) 提供硬件属性的存储器模型以支持事务执行的方法和设备
US9513904B2 (en) Computer processor employing cache memory with per-byte valid bits
CN101770397B (zh) 扩展高速缓存一致性协议以支持本地缓冲的数据的设备、处理器、系统和方法
US9280397B2 (en) Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata
CN101322103B (zh) 无约束事务存储器系统及其方法
CN102498477B (zh) Tlb预取
US7213126B1 (en) Method and processor including logic for storing traces within a trace cache
US8819392B2 (en) Providing metadata in a translation lookaside buffer (TLB)
CN100485638C (zh) 在处理器中用于减少功耗的微变换检测缓冲器及微标记符
JP4447580B2 (ja) 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ
CN101950259A (zh) 在硬件中登记用户处理程序以用于事务存储器事件处理
US7363435B1 (en) System and method for coherence prediction
US20080046736A1 (en) Data Processing System and Method for Reducing Cache Pollution by Write Stream Memory Access Patterns
JP2003067357A (ja) 不均一メモリ・アクセス(numa)データ処理システムおよびその操作方法
US20090216950A1 (en) Push for Sharing Instruction
CN103729306A (zh) 经由地址范围检查的多cpu块无效操作绕过
US7017025B1 (en) Mechanism for proxy management of multiprocessor virtual memory
US20040215900A1 (en) System and method for reducing contention in a multi-sectored cache
US20050216672A1 (en) Method and apparatus for directory-based coherence with distributed directory management utilizing prefetch caches
TW200307867A (en) Method and system for compression of address tags in memory structures

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: 20140910

Termination date: 20161230