使用存储属性的技术转让专利

申请号 : CN200710101675.5

文献号 : CN101059777B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : Q·雅各布森A·布雷斯H·王J·沈P·哈马隆德M·默滕S·斯里尼瓦斯K·多施G·蔡亚B·萨哈A·-R·阿德尔-塔巴塔拜G·希菲尔

申请人 : 英特尔公司

摘要 :

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

权利要求 :

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所述的方法,其中所述程序是测试设备程序。

说明书 :

技术领域

本发明的实施例涉及微处理器和微处理器系统。更具体地,本发明的实施例涉及使用、校验和设置存储器状态或与一个或多个存储器位置相关联的其它信息的技术,该技术使用与所述一个或多个存储器位置相对应的属性位。

背景技术

现代计算机系统中,微处理器或微处理器核可以访问大量存储器地址空间,其可能包括很多种存储器类型。例如,计算机系统中存储器的一地址范围可能存储只能由特定的处理器或处理器核访问的信息,而其它地址范围则可被多个处理器或处理器核访问。存储器的排他性仅是一个可能与存储器地址范围相关联的属性。
一些现有技术系统中,操作系统(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所示的若干电路、逻辑单元或设备。
在这里描述的本发明的实施例可以通过使用互补金属氧化物半导体器件的电路,或者“硬件”实现,或者使用存储在介质中的一组指令(当由例如处理器的机器执行这组指令时,这组指令执行与本发明的实施例相关联的操作),或者“软件”来实现。或者,本发明的实施例可以使用硬件和软件的结合来实现。
虽然已经根据说明性实施例描述了本发明,但不应当以限制性的意义理解该描述。对于本领域技术人员来说显而易见的、对所述说明性实施例的各种修改以及其他实施例,都被认为包含在本发明的精神和范围内。