CN101059777B - 使用存储属性的技术 - Google Patents

使用存储属性的技术 Download PDF

Info

Publication number
CN101059777B
CN101059777B CN2007101016755A CN200710101675A CN101059777B CN 101059777 B CN101059777 B CN 101059777B CN 2007101016755 A CN2007101016755 A CN 2007101016755A CN 200710101675 A CN200710101675 A CN 200710101675A CN 101059777 B CN101059777 B CN 101059777B
Authority
CN
China
Prior art keywords
load
instruction
cache line
attribute
memory
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.)
Active
Application number
CN2007101016755A
Other languages
English (en)
Other versions
CN101059777A (zh
Inventor
Q·雅各布森
A·布雷斯
H·王
J·沈
P·哈马隆德
M·默滕
S·斯里尼瓦斯
K·多施
G·蔡亚
B·萨哈
A·-R·阿德尔-塔巴塔拜
G·希菲尔
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 CN101059777A publication Critical patent/CN101059777A/zh
Application granted granted Critical
Publication of CN101059777B publication Critical patent/CN101059777B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • 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
    • 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
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • 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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明涉及使用存储属性的技术。本发明尤其涉及一种使用存储属性向程序或者其它代理传递信息的技术。更具体地,本发明的实施例涉及以高效率的方式使用存储属性来校验各种存储性能。

Description

使用存储属性的技术
技术领域
本发明的实施例涉及微处理器和微处理器系统。更具体地,本发明的实施例涉及使用、校验和设置存储器状态或与一个或多个存储器位置相关联的其它信息的技术,该技术使用与所述一个或多个存储器位置相对应的属性位。
背景技术
现代计算机系统中,微处理器或微处理器核可以访问大量存储器地址空间,其可能包括很多种存储器类型。例如,计算机系统中存储器的一地址范围可能存储只能由特定的处理器或处理器核访问的信息,而其它地址范围则可被多个处理器或处理器核访问。存储器的排他性仅是一个可能与存储器地址范围相关联的属性。
一些现有技术系统中,操作系统(OS)以虚拟存储页的相对粗糙的粒度,通过虚拟存储器管理来控制存储器许可或访问规则。在一些现有技术系统中,虚拟存储页的粒度大小从约4千字节(KB)到很多兆字节(MB)不等。考虑到系统等待时间、芯片占地面积(die real estate)或系统成本,改变存储器权限将是个开销大的操作。
在某些情况下,程序在访问存储器之前要先校验存储器地址。例如,当在各种计算机编程语言(如Java)中调试程序、校验边界和类型安全性时,为了分析程序性能而剖析(profiling)程序时,或者由于其它原因,程序在访问存储器之前要先校验地址。
如果程序按照一组规则进行地址校验,那么它至少可使用两种现有方法:一种方法是使用OS来确保不满足规则的地址将被虚拟存储器管理检测出。这种方法中,粒度可能被限制成虚拟存储器管理寻址模式的相对粗糙颗粒,且改变访问规则代价很高;另一种方法是在利用地址访问存储器之前,在程序本身内对该地址进行一组校验,这组校验可以在任何粒度下将该地址与任何一组规则进行比较。该方法的缺点是为了进行适当的校验,为每一次存储器引用(memory reference)都要付出大量的运行开销。
发明内容
本发明的实施例涉及微处理器和微处理器系统。更具体地,本发明的实施例涉及使用存储属性位以高效率的方式来校验各种存储性能。
在本发明的一个实施例中,与存储器的特定段或者“块”相关联的存储属性可以被用来指示所述存储器块的各种特性。例如,在一个实施例中,用户可以通过定义与每一个存储器块相关联的属性位,来指示它们所关联的存储器块的任何数量的特性,例如,访问权限。在一个实施例中,每一个存储器块可对应于高速缓冲存储器的一特定行,例如一级(L1)或二级(L2)高速缓冲存储器内的高速缓存行,且所述的属性用定位于高速缓冲存储器的行或者以其他方式与高速缓冲存储器的行相关联的位存储位置来表示。在其它的实施例中,属性所关联的存储器块可能包括不止一个高速缓冲存储器行,或者与其它类型的存储器相关联,例如DRAM。
附图说明
本发明的实施例通过举例进行说明,而不局限于附图中的实施例,其中相同的附图标记表示相似的部件,且其中:
图1示出了根据本发明的一个实施例的高速缓冲存储器,其中各种高速缓存行(cache line)具有与其相关联的一个或者多个属性位。
图2示出了在其中使用了本发明的至少一个实施例的计算机系统存储器分级体系。
图3示出了根据本发明的一个实施例,与校验与一个或者多个高速缓存行相关联的属性有关的操作的流程图。
图4示出了在其中使用了本发明的至少一个实施例的共享总线计算机系统。
图5示出了在其中使用了本发明的至少一个实施例的点对点总线计算机系统。
具体实施方式
图1示出了根据本发明的一个实施例的高速缓冲存储器的一部分,它的每一行都具有一组相关的属性位存储位置。具体地,图1所示的高速缓冲存储器100包括高速缓存行105,其对应于一个特定的存储器块(未示出)。所述的高速缓存行105具有与其相关联的以位的形式存储在存储位置110内的多个属性。在一个实施例中,存储位置是寄存器堆,然而在其它实施例中,可以使用另一种类型的存储区。在所述的存储位置110内是一组与高速缓存行105相关联的属性位115,其可以存储用来表示高速缓存行的各种属性的位,其可以由访问高速缓存行105的软件程序使用。
在图1中所示的实施例中,该组属性位包含4位,其可以表示所述的高速缓存行的一个或者多个属性,这取决于如何分配所述属性位。例如,在一个实施例中,这些属性位指示最近已经校验过程序,从而所述的存储器块适合被所述程序的当前部分访问。在另外的实施例中,所述的属性位可以指示程序已经记录了对该存储器块的最近的访问,以利用例如性能监控工具随后进行分析。在另外的实施例中,属性位可以指定其它许可、特性等。
除了所述的属性位之外,高速缓冲存储器的每一行也可以具有与其相关联的存储在状态存储位置120中的状态值。例如,在一个实施例中,所述的状态存储位置120包括与高速缓存行105相关联的状态位125,其指明所述的高速缓存行是修改状态(M)、独占状态(E)、共享状态(S)还是无效状态(I)。所述MESI状态能够控制各种软件线程、核或者处理器是否能够使用和/或修改存储在该特定高速缓存行中的信息。在一些实施例中,所述MESI状态属性包含在高速缓存行105的属性位115中。
在一个实施例中,具有相关联属性位的、与图1类似的一种高速缓冲存储器,可以由多核处理器中的多个核访问,每一个处理器核能够执行从操作系统内的序列发生器发出的多个软件线程。通过为每一个高速缓存行分配合适的属性位,在计算机系统中每一个处理器的每一个核内的每一个线程都可以具有其可以访问、控制和/或修改的一个或者多个高速缓存行。
图2是从计算机系统内的处理器核上执行的软件线程的观点出发,本发明的实施例如何简化高速缓冲存储器的体系结构的概念性说明。例如,在图2中每个线程可以概念化为具有相关高速缓冲存储器205-20m的单线程核心201-20n,所述高速缓冲存储器由被指定为只能由在所述概念化单线程核心上运行的该特定对应线程控制的高速缓存行构成。例如,在一个实施例中,对于概念化高速缓冲存储器205-20m,仅仅由表示为单线程核心201-20n的线程修改它们的MESI状态。虽然实际上高速缓冲存储器205-20m中每一个都可以由遍及一个或多个高速缓冲存储器分布的高速缓存行组成,但是以图2中所示的方式概念化所述布置将有助于理解本发明的某些实施例。
在本发明的一个实施例中,可以利用特定操作,例如指令或者从指令中解码的微操作,来访问、修改和以其他方式控制与存储器块相关联的属性。例如,在一个实施例中,可以使用从高速缓存行中加载信息并设置相应的属性位的指令(例如,“load_set”指令)。在另一个实施例中,除了load_set指令之外,还可以使用从高速缓存行加载信息并校验相应属性位的指令(例如,“load_check”指令)。
在其它的实施例中,可以使用其它指令来控制属性位以及存取相应高速缓存数据。例如,在一个实施例中,可以使用将信息存储到高速缓存行同时校验或者设置(校验并设置)相应属性位的指令(例如,“store_set”和/或“store_check”指令)。在一些实施例中,可以使用指令来控制或者存取没有相关联高速缓冲存储器操作(例如加载或者存储)的属性位。
在指令校验与高速缓存行相关联的属性的情况下,可以在一个或者多个处理核心中定义一个或者多个结构化方案(architectural scenario),以便基于被校验的属性执行某些事件。可能存在响应于属性校验被执行的其它类型的事件。例如,在一个实施例中,可以定义一结构化方案,以将属性位与一组具体数据进行比较,并且基于比较结果调用轻量输出(light weight yield)事件。所述轻量输出事件尤其在将控制返回系统中运行的线程或者其它进程之前,调用响应于所述方案结果执行各种操作的服务程序。在另一个实施例中,可以设置标记或者寄存器来指示该结果。在又一个实施例中,寄存器可以被写入特定值。可以包括其它事件作为合适的响应。
例如,可定义的方案是这样一个方案,其在检测到意外存储状态时调用轻量输出和相应处理程序。如果线程或者其它进程试图访问希望其处于某种MESI状态的高速缓存行,而该高速缓存行处于另一种存储状态(表明该高速缓存行可能并不与该特定线程或进程相关联),这是有用的。这样,只有由特定线程控制的高速缓存行才可以被成功地访问、修改或者校验。在其它的实施例中,可以基于高速缓存行存储属性的校验定义其它的方案。在其它的实施例中,也可以校验比高速缓存行粒度更精细的存储位置的属性。
图3是说明本发明的至少一个实施例的操作的流程图,其中使用load_set和load_check指令来设置或者校验与特定高速缓存行或者高速缓存行内的地址范围相关的属性位。在其它实施例中,可以使用其他的指令或者微指令执行如图3所示的操作。在操作301,确定是否执行load_set或load_check指令。如果执行了load_set指令,则在操作305中修改与由该指令的加载部分寻址的高速缓存行相关的属性位。在一个实施例中,load_set指令可以包含从load_set指令解码的加载微指令和设置微指令。在其他的实施例中,可以与加载和设置操作一起包含其它操作。
如果执行的指令是load_check指令,而后在操作310读取与由load_check指令的加载部分指定的地址相关联的属性位。在一个实施例中,所述load_check指令可以包括从load_check指令解码的加载微指令和校验微指令。在其他的实施例中,可以与加载和校验操作一起包含其他操作。在操作315,基于属性位的状态执行一个方案。在一个实施例中,所述方案通过校验来查看在操作310读取的属性位是否指示所述高速缓存行的未知状态。如果是,而后在操作320,发生合适的事件。在一个实施例中,发生轻量输出,并且执行事件处理程序以响应于其执行操作。完成事件处理程序之后(或者在一些实施例中,在事件处理程序完成之前),在由其发生轻量输出的指令之后,控制以程序顺序(program order)返回到所述指令。
一个备选实施例是代替校验属性位,简单地将属性位读入到寄存器中。而后由程序使用该值。一个例子是程序可以比较该值,并且根据该值有条件地转移到不同的代码路径分支。
图4说明了其中使用了本发明的一个实施例的前端总线(FSB)计算机系统。处理器405从一级(L1)高速缓冲存储器410和主存储器415存取数据。在本发明的另一个实施例中,高速缓冲存储器可以是二级(L2)高速缓存或者计算机系统存储器分级结构内的其它存储器。此外,在一些实施例中,图4的计算机系统可以既包含L1高速缓存又包含L2高速缓存。
在图4的处理器内示出的是机器状态的存储区406。在一个实施例中,存储区可以是一组寄存器,而在其他的实施例中存储区可以是其它存储器结构。根据一个实施例,也在图4中示出的是用于保存区段的存储区407。在另一个实施例中,保存区段可以在其他设备或者存储器结构中。所述处理器可以有任何数量的处理核心。但是,本发明的其它实施例,可以在系统内的其它设备(例如独立总线代理)中实施,或者以硬件、软件或其组合贯穿整个系统分布。
主存储器可以以各种存储器资源实施,例如动态随机存取存储器(DRAM)、硬盘驱动器(HDD)420或者通过网络接口430从包含各种存储设备和技术的计算机系统远程定位的存储器源。高速缓冲存储器可定位于处理器内或者非常接近处理器,例如在处理器的本地总线407上。
此外,高速缓冲存储器可包含相对快速的存储单元,例如六晶体管(6T)单元,或者其它具有近似相同或者更快存取速度的存储单元。图4的计算机系统可以是总线代理的点对点(PtP)网络,所述总线代理例如是微处理器,其经由总线在PtP网络上通信专用于每个代理的信号。图5示出以点对点(PtP)配置设置的计算机系统。具体地,图5示出了通过多个点对点接口将处理器、存储器和输入/输出设备互连的系统。
图5的系统可以包含若干个处理器,为了清楚仅仅示出了2个处理器,即处理器570、580。处理器570、580可分别包括与存储器22、24连接的本地存储器控制集线器(MCH)572、582。处理器570、580可使用PtP接口电路578、588经由点对点(PtP)接口550交换数据。处理器570、580可分别使用点对点接口电路576、594、586、598经由独立的PtP接口552、554与芯片组590交换数据。芯片组590也可以通过高性能图形接口539与高性能图形电路(graphics circuit)538交换数据。本发明的实施例可以位于具有任何数量的处理核心的任意处理器内,或者图5中的每一个PtP总线代理内。
但是,本发明的其它实施例,可以存在于图5的系统内的其他电路、逻辑单元或设备中。此外,在本发明的其它实施例中,本发明的实施例可以遍布于图5所示的若干电路、逻辑单元或设备。
在这里描述的本发明的实施例可以通过使用互补金属氧化物半导体器件的电路,或者“硬件”实现,或者使用存储在介质中的一组指令(当由例如处理器的机器执行这组指令时,这组指令执行与本发明的实施例相关联的操作),或者“软件”来实现。或者,本发明的实施例可以使用硬件和软件的结合来实现。
虽然已经根据说明性实施例描述了本发明,但不应当以限制性的意义理解该描述。对于本领域技术人员来说显而易见的、对所述说明性实施例的各种修改以及其他实施例,都被认为包含在本发明的精神和范围内。

Claims (35)

1.一种使用存储属性的装置,包括:
存储块,所述存储块具有与包含多个软件线程的程序的仅一个软件线程相对应的一组相关属性,
其中响应于load_set指令或load_check指令中的一个或多个来访问所述存储块,其中所述load_set指令或load_check指令中的一个或多个被解码成多个微操作。
2.根据权利要求1所述的装置,其中所述存储块与高速缓冲存储器中的高速缓存行相关联。
3.根据权利要求2所述的装置,其中所述高速缓冲存储器包括用来存储该组属性的属性位存储区的存储区。
4.根据权利要求3所述的装置,其中所述位存储区具有至少一个与仅一个高速缓存行相关联的位存储子区域。
5.根据权利要求4所述的装置,其中该组属性包括指示该仅一个高速缓存行对应于所述多个软件线程中的哪一个的信息。
6.根据权利要求5所述的装置,其中所述高速缓冲存储器的每一个高速缓存行都具有与其相关联的属性位。
7.根据权利要求6所述的装置,其中所述高速缓冲存储器是数据高速缓冲存储器。
8.根据权利要求6所述的装置,其中所述高速缓冲存储器是用来存储数据和指令的统一高速缓冲存储器。
9.一种使用存储属性的方法,该方法包括下列步骤:
读取与高速缓存行相关联的属性位,所述高速缓存行与多线程程序中的仅一个软件线程对应,其中响应于load_set指令或load_check指令中的一个或多个来执行读取,其中所述load_set指令或load_check指令中的一个或多个被解码成多个微操作;
确定该属性位的值;
响应于确定所述属性位的值来执行轻量输出事件。
10.根据权利要求9所述的方法,其中确定所述属性位的值包括:在处理器中执行结构化方案。
11.根据权利要求9所述的方法,进一步包括设置属性位。
12.根据权利要求9所述的方法,进一步包括校验所述属性位作为执行一个指令的结果。
13.根据权利要求12所述的方法,进一步包括通过执行load_check指令读取所述属性。
14.根据权利要求12所述的方法,进一步包括通过执行load_set指令设置所述属性。
15.根据权利要求10所述的方法,进一步包括通过所述方案确定所述高速缓存行是否处于意外状态。
16.一种使用存储属性的系统,包括:
存储器,用于存储load_set指令和load_check指令,其中所述load_set指令或load_check指令中的一个或多个被解码成多个微操作;
至少一个处理器,其具有至少一个处理核心,用于提取load_set和load_check指令中的至少一个。
17.根据权利要求16所述的系统,其中所述load_set指令用来从高速缓存行加载信息并设置相关属性位。
18.根据权利要求16所述的系统,其中所述load_check指令用来从高速缓存行加载信息并校验相关属性位。
19.根据权利要求18所述的系统,其中所述至少一个处理器包括响应于校验所述属性位来执行方案的逻辑电路。
20.根据权利要求19所述的系统,其中如果所述属性指示所述高速缓存行处于意外状态,则所述方案导致轻量输出事件。
21.根据权利要求20所述的系统,其中如果导致了轻量输出事件,则调用处理程序以对检测出的意外状态作出响应。
22.根据权利要求16所述的系统,其中所述load_set指令和load_check指令与包含多个软件线程的程序中的仅一个软件线程相关联。
23.根据权利要求17或18所述的系统,其中所述属性位是与所述高速缓存行相关联的多个属性位中的一个。
24.根据权利要求23所述的系统,其中所述多个属性位是用户定义的。
25.一种处理器,包括:
取指令单元,用于提取用来设置与高速缓存行相关联的多个属性位的第一指令以及用来校验所述多个位的第二指令,其中所述第一指令或第二指令中的一个或多个被解码成多个微操作;
逻辑电路,用于响应于对所述多个属性位的校验来执行方案。
26.根据权利要求25所述的处理器,进一步包括多个处理核心,每一个处理核心能够执行多个软件线程。
27.根据权利要求26所述的处理器,其中如果所述多个属性位指示相应的高速缓存行处于意外状态,则用于执行方案的逻辑电路引发处理程序的执行。
28.根据权利要求27所述的处理器,其中所述高速缓存行可以处于多种状态中的一种,所述多种状态包括:修改状态、独占状态、共享状态以及无效状态。
29.根据权利要求28所述的处理器,进一步包括其中包含高速缓存行的高速缓冲存储器。
30.根据权利要求25所述的处理器,其中所述第一和第二指令包括从所述高速缓存行加载信息的操作。
31.一种使用存储属性的方法,包括:
将属性位存储在存储位置;
读取与高速缓存行相关联的属性位,该属性位指示程序是否已经记录了对该高速缓存行的先前引用,来供工具分析,所述工具选自包括性能监测工具和调试工具的组,其中响应于load_set指令或load_check指令中的一个或多个来执行读取,其中所述load_set指令或load_check指令中的一个或多个被解码成多个微操作;
确定所述属性位的值。
32.根据权利要求31所述的方法,其中所述高速缓存行与多线程程序中的软件线程对应。
33.根据权利要求31所述的方法,进一步包括响应于确定所述属性位的值来执行轻量输出事件。
34.根据权利要求31所述的方法,其中确定所述属性位的值包括在处理器中执行结构化方案。
35.根据权利要求31所述的方法,其中所述程序是测试设备程序。
CN2007101016755A 2006-02-07 2007-02-07 使用存储属性的技术 Active CN101059777B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/349,661 US7991965B2 (en) 2006-02-07 2006-02-07 Technique for using memory attributes
US11/349661 2006-02-07

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN2010102750409A Division CN101916231B (zh) 2006-02-07 2007-02-07 使用存储属性的技术

Publications (2)

Publication Number Publication Date
CN101059777A CN101059777A (zh) 2007-10-24
CN101059777B true CN101059777B (zh) 2010-11-03

Family

ID=37898905

Family Applications (2)

Application Number Title Priority Date Filing Date
CN2007101016755A Active CN101059777B (zh) 2006-02-07 2007-02-07 使用存储属性的技术
CN2010102750409A Active CN101916231B (zh) 2006-02-07 2007-02-07 使用存储属性的技术

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN2010102750409A Active CN101916231B (zh) 2006-02-07 2007-02-07 使用存储属性的技术

Country Status (7)

Country Link
US (3) US7991965B2 (zh)
JP (1) JP4764360B2 (zh)
KR (1) KR100933820B1 (zh)
CN (2) CN101059777B (zh)
DE (1) DE102007006190B4 (zh)
GB (2) GB2451003B (zh)
TW (1) TWI335512B (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7991965B2 (en) 2006-02-07 2011-08-02 Intel Corporation Technique for using memory attributes
US7610448B2 (en) * 2006-12-27 2009-10-27 Intel Corporation Obscuring memory access patterns
US8185698B2 (en) * 2007-04-09 2012-05-22 Bratin Saha Hardware acceleration of a write-buffering software transactional memory
US8806101B2 (en) * 2008-12-30 2014-08-12 Intel Corporation Metaphysical address space for holding lossy metadata in hardware
CN102460376B (zh) * 2009-06-26 2016-05-18 英特尔公司 无约束事务存储器(utm)系统的优化
US20120239887A1 (en) * 2011-03-16 2012-09-20 Advanced Micro Devices, Inc. Method and apparatus for memory control
US9495305B1 (en) 2012-11-02 2016-11-15 David Fuchs Detecting pointer errors for memory protection
US9361103B2 (en) * 2012-11-02 2016-06-07 Advanced Micro Devices, Inc. Store replay policy
GB2517453B (en) * 2013-08-20 2017-12-20 Imagination Tech Ltd Improved use of memory resources
WO2015180068A1 (zh) * 2014-05-28 2015-12-03 华为技术有限公司 一种实现虚拟化网管的方法、装置及系统
US10042737B2 (en) 2016-08-31 2018-08-07 Microsoft Technology Licensing, Llc Program tracing for time travel debugging and analysis
US10031834B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10310977B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using a processor cache
US10489273B2 (en) * 2016-10-20 2019-11-26 Microsoft Technology Licensing, Llc Reuse of a related thread's cache while recording a trace file of code execution
US10324851B2 (en) 2016-10-20 2019-06-18 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using way-locking in a set-associative processor cache
US10310963B2 (en) * 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using index bits in a processor cache
US10540250B2 (en) 2016-11-11 2020-01-21 Microsoft Technology Licensing, Llc Reducing storage requirements for storing memory addresses and values
US10318332B2 (en) 2017-04-01 2019-06-11 Microsoft Technology Licensing, Llc Virtual machine execution tracing
US10296442B2 (en) 2017-06-29 2019-05-21 Microsoft Technology Licensing, Llc Distributed time-travel trace recording and replay
US11119914B2 (en) * 2019-11-15 2021-09-14 Micron Technology, Inc. Method of operating a memory with dynamically changeable attributes

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974438A (en) * 1996-12-31 1999-10-26 Compaq Computer Corporation Scoreboard for cached multi-thread processes
US5974507A (en) * 1997-04-14 1999-10-26 International Business Machines Corporation Optimizing a cache eviction mechanism by selectively introducing different levels of randomness into a replacement algorithm
US6189112B1 (en) * 1998-04-30 2001-02-13 International Business Machines Corporation Transparent processor sparing
US6366946B1 (en) * 1998-12-16 2002-04-02 Microsoft Corporation Critical code processing management

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2573255B2 (ja) * 1987-09-30 1997-01-22 株式会社東芝 データキャッシュ制御方式
JPH01125638A (ja) * 1987-11-11 1989-05-18 Matsushita Electric Ind Co Ltd キャッシュメモリ装置
JPH0210448A (ja) * 1988-06-28 1990-01-16 Hitachi Ltd キャッシュメモリシステム
JPH03193684A (ja) 1989-12-20 1991-08-23 Kobe Steel Ltd 炭素又は炭素複合材料の製造方法
US5428761A (en) 1992-03-12 1995-06-27 Digital Equipment Corporation System for achieving atomic non-sequential multi-word operations in shared memory
KR940015822A (ko) 1992-12-30 1994-07-21 양승택 다중 프로세서 시스템에서 메모리 모듈의 상태변화 시험방법
US6461696B1 (en) 1993-11-16 2002-10-08 Baxter International Inc. Multi-layered polymer based moisture barrier structure for medical grade products
JP3266470B2 (ja) * 1994-10-03 2002-03-18 インターナショナル・ビジネス・マシーンズ・コーポレーション 強制順序で行う要求毎ライト・スルー・キャッシュを有するデータ処理システム
US5761536A (en) * 1996-08-21 1998-06-02 International Business Machines Corporation System and method for reducing memory fragmentation by assigning remainders to share memory blocks on a best fit basis
US5909698A (en) 1997-03-17 1999-06-01 International Business Machines Corporation Cache block store instruction operations where cache coherency is achieved without writing all the way back to main memory
US6412056B1 (en) 1997-10-01 2002-06-25 Compac Information Technologies Group, Lp Extended translation lookaside buffer with fine-grain state bits
US6332181B1 (en) 1998-05-04 2001-12-18 International Business Machines Corporation Recovery mechanism for L1 data cache parity errors
JP3331592B2 (ja) * 1998-05-22 2002-10-07 日本電気株式会社 キャッシュメモリ
US6430657B1 (en) * 1998-10-12 2002-08-06 Institute For The Development Of Emerging Architecture L.L.C. Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock
US6636950B1 (en) * 1998-12-17 2003-10-21 Massachusetts Institute Of Technology Computer architecture for shared memory access
US6496909B1 (en) * 1999-04-06 2002-12-17 Silicon Graphics, Inc. Method for managing concurrent access to virtual memory data structures
JP3607540B2 (ja) * 1999-08-18 2005-01-05 エヌイーシーシステムテクノロジー株式会社 プログラム単位メモリアクセス属性管理方式
JP3813393B2 (ja) * 1999-10-01 2006-08-23 富士通株式会社 キャッシュメモリの制御方法及び情報処理装置
JP3611295B2 (ja) 2000-03-09 2005-01-19 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータシステム、メモリ管理方法及び記憶媒体
EP1139222A1 (en) * 2000-03-31 2001-10-04 Texas Instruments Incorporated Prefetch for TLB cache
US6748496B1 (en) 2000-04-18 2004-06-08 Ati International Srl Method and apparatus for providing cacheable data to a peripheral device
US6748501B2 (en) 2000-12-30 2004-06-08 International Business Machines Corporation Microprocessor reservation mechanism for a hashed address system
US6704840B2 (en) * 2001-06-19 2004-03-09 Intel Corporation Computer system and method of computer initialization with caching of option BIOS
JP2003006046A (ja) 2001-06-25 2003-01-10 Sanyo Electric Co Ltd メモリプロテクション方法および回路
US6898694B2 (en) * 2001-06-28 2005-05-24 Intel Corporation High instruction fetch bandwidth in multithread processor using temporary instruction cache to deliver portion of cache line in subsequent clock cycle
JP4434534B2 (ja) 2001-09-27 2010-03-17 株式会社東芝 プロセッサ・システム
JP4226816B2 (ja) * 2001-09-28 2009-02-18 株式会社東芝 マイクロプロセッサ
US7120762B2 (en) * 2001-10-19 2006-10-10 Wisconsin Alumni Research Foundation Concurrent execution of critical sections by eliding ownership of locks
US6854039B1 (en) 2001-12-05 2005-02-08 Advanced Micro Devices, Inc. Memory management system and method providing increased memory access security
EP1456750A1 (en) 2001-12-12 2004-09-15 Telefonaktiebolaget LM Ericsson (publ) Collision handling apparatus and method
JP2003223360A (ja) * 2002-01-29 2003-08-08 Hitachi Ltd キャッシュメモリシステムおよびマイクロプロセッサ
US6859868B2 (en) * 2002-02-07 2005-02-22 Sun Microsystems, Inc. Object addressed memory hierarchy
JP3866597B2 (ja) 2002-03-20 2007-01-10 株式会社東芝 内部メモリ型耐タンパプロセッサおよび秘密保護方法
US6862664B2 (en) * 2003-02-13 2005-03-01 Sun Microsystems, Inc. Method and apparatus for avoiding locks by speculatively executing critical sections
DE10309919B4 (de) 2003-03-07 2008-09-25 Qimonda Ag Pufferbaustein und Speichermodule
US7089373B2 (en) * 2003-06-12 2006-08-08 International Business Machines Corporation Shadow register to enhance lock acquisition
US7493618B2 (en) * 2003-09-19 2009-02-17 International Business Machines Corporation Fault tolerant mutual exclusion locks for shared memory systems
US20050138306A1 (en) * 2003-12-19 2005-06-23 Panchbudhe Ankur P. Performance of operations on selected data in a storage area
US7174428B2 (en) * 2003-12-29 2007-02-06 Intel Corporation Method and system for transforming memory location references in instructions
US7562361B2 (en) 2004-02-26 2009-07-14 Microsoft Corporation Thread-based limitation on computer application
KR100620609B1 (ko) * 2004-04-07 2006-09-13 한국해양연구원 저층수인양장치
US7594234B1 (en) * 2004-06-04 2009-09-22 Sun Microsystems, Inc. Adaptive spin-then-block mutual exclusion in multi-threaded processing
US20070124546A1 (en) * 2005-11-29 2007-05-31 Anton Blanchard Automatic yielding on lock contention for a multi-threaded processor
US7616218B1 (en) 2005-12-05 2009-11-10 Nvidia Corporation Apparatus, system, and method for clipping graphics primitives
US7987452B2 (en) * 2005-12-15 2011-07-26 International Business Machines Corporation Profile-driven lock handling
US7991965B2 (en) 2006-02-07 2011-08-02 Intel Corporation Technique for using memory attributes

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974438A (en) * 1996-12-31 1999-10-26 Compaq Computer Corporation Scoreboard for cached multi-thread processes
US5974507A (en) * 1997-04-14 1999-10-26 International Business Machines Corporation Optimizing a cache eviction mechanism by selectively introducing different levels of randomness into a replacement algorithm
US6189112B1 (en) * 1998-04-30 2001-02-13 International Business Machines Corporation Transparent processor sparing
US6366946B1 (en) * 1998-12-16 2002-04-02 Microsoft Corporation Critical code processing management

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JP特开2001-56783A 2001.02.27

Also Published As

Publication number Publication date
TW200817896A (en) 2008-04-16
DE102007006190A1 (de) 2007-08-30
GB2451003A (en) 2009-01-14
JP2007242003A (ja) 2007-09-20
TWI335512B (en) 2011-01-01
DE102007006190B4 (de) 2017-10-26
KR100933820B1 (ko) 2009-12-24
US8560781B2 (en) 2013-10-15
US20140025901A1 (en) 2014-01-23
CN101916231A (zh) 2010-12-15
GB2451003B (en) 2010-06-23
GB0702377D0 (en) 2007-03-21
JP4764360B2 (ja) 2011-08-31
CN101059777A (zh) 2007-10-24
US8812792B2 (en) 2014-08-19
GB2434892A (en) 2007-08-08
GB0813998D0 (en) 2008-09-10
GB2434892B (en) 2008-11-26
US7991965B2 (en) 2011-08-02
KR20070080589A (ko) 2007-08-10
US20110264866A1 (en) 2011-10-27
US20070186055A1 (en) 2007-08-09
CN101916231B (zh) 2013-11-20

Similar Documents

Publication Publication Date Title
CN101059777B (zh) 使用存储属性的技术
US11687471B2 (en) Solid state drive with external software execution to effect internal solid-state drive operations
US6542861B1 (en) Simulation environment cache model apparatus and method therefor
CN100375067C (zh) 异构多核微处理器局部空间共享存储方法
US8019947B2 (en) Technique for thread communication and synchronization
EP0952524A1 (en) Multi-way cache apparatus and method
US8181185B2 (en) Filtering of performance monitoring information
CN109952567B (zh) 用于旁通高级dram存储器控制器的内部高速缓存的方法和装置
KR20150057798A (ko) 캐시 제어 장치 및 방법
EP3407184A2 (en) Near memory computing architecture
DE102020117350A1 (de) Speichersystem einschliesslich heterogener speicher, computersystem mit dem speichersystem und datenverwaltungsverfahren dafür
US7991966B2 (en) Efficient usage of last level caches in a MCMP system using application level configuration
US20060149940A1 (en) Implementation to save and restore processor registers on a context switch
CN100520737C (zh) 高速缓存系统、方法及计算机系统
US6658536B1 (en) Cache-coherency protocol with recently read state for extending cache horizontally
CN114327769B (zh) 一种操作系统事件记录方法、装置及计算机系统
US20120159087A1 (en) Ensuring Forward Progress of Token-Required Cache Operations In A Shared Cache
US20230161678A1 (en) Classification of different types of cache misses
JP2023538241A (ja) メモリロケーションに記憶されたデータが修正されたかどうかを識別するためのメモリロケーションの監視
CN115794670A (zh) 一种缓存系统及其管理方法
CN114816781A (zh) 核间通信的方法、处理器和电子设备

Legal Events

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