CN100444135C - 用于短暂高速缓存存储的方法和处理器 - Google Patents
用于短暂高速缓存存储的方法和处理器 Download PDFInfo
- Publication number
- CN100444135C CN100444135C CNB2006101262153A CN200610126215A CN100444135C CN 100444135 C CN100444135 C CN 100444135C CN B2006101262153 A CNB2006101262153 A CN B2006101262153A CN 200610126215 A CN200610126215 A CN 200610126215A CN 100444135 C CN100444135 C CN 100444135C
- Authority
- CN
- China
- Prior art keywords
- cache
- high speed
- speed information
- cache lines
- short duration
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 21
- 230000001052 transient effect Effects 0.000 title abstract description 29
- 230000006870 function Effects 0.000 claims abstract description 17
- 238000013507 mapping Methods 0.000 claims description 5
- 230000000717 retained effect Effects 0.000 claims 4
- 230000014759 maintenance of location Effects 0.000 claims 3
- 230000004044 response Effects 0.000 claims 2
- 238000013461 design Methods 0.000 abstract description 5
- 230000006399 behavior Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 16
- 230000008901 benefit Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000002349 favourable effect Effects 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000005352 clarification Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1491—Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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
-
- 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/0804—Addressing 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
-
- 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/12—Replacement control
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
用于短暂高速缓存存储的方法和处理器。公开了无需在处理器设计上投入大量费用的存储非关键处理器信息的方法和设备。短暂数据被存储在处理器本地高速缓存层次结构。额外控制位形成部分高速缓存地址,其中具有该控制位的地址被指定为“短暂存储地址”。短暂存储地址不回写到外部主存储器,并且当从高速缓存的最后等级逐出时,短暂存储地址被丢弃。优选地,短暂存储地址的“特权”在于它们对软件不可访问或只可被具有适当权限的超级用户或管理员级软件访问。提供若干管理函数/指令以允许管理员/超级用户软件管理和/或修改短暂高速缓存的行为。这个短暂存储模式允许高速缓存层次结构存储可以被处理器核心使用、但分配给外部存储器可能代价过高的数据项。
Description
技术领域
本发明一般涉及计算机系统的高速缓存结构领域。具体地,本发明涉及允许存在用于存储踪迹(trace)数据和其它先验信息的高速缓存线的高速缓存系统,其中这些特定高速缓存线不回写到主存储器。
背景技术
当前处理器产生和收集准备改进计算机系统的性能的多个数据。这包含性能监视数据(例如,分布(profile)数据)、分支预测数据、性能监视器数据、预解码的指令信息、分支历史信息,分支预测表等等。这种数据中的某些数据被存储在专用数组或表(例如,分布数据表、分支历史表或分支目标地址高速缓存)中,而其它数据与指令结合被存储在L1(一级)指令高速缓存器中(例如,预解码信息,或在某些情况下,次级分支预测信息)。
可以被收集和利用的其它数据继续被发现,所以这种收集和存储用于形成决定的数据的趋势是日益增多的现象。当要存储的数据量超出可用专用数组的大小时,这些数据现在通常被丢弃并且以后重新产生。在某些情况下,当必须全部重新获得分支预测信息时,可能丢失有用的信息。在其它情况下,数据可以被重新产生,但是以在重新计算信息方面付出额外时间或功率为代价。随着与允许收集信息相关的面积成本或设计/验证成本超过所收集的信息的价值,则会导致成本/收益折衷。
在某些情况下,可以引入专用辅助存储层次来存储这个信息,但是以额外硅面积和设计测试复杂度为代价。使用这种专用辅助存储层次的现有技术的某些例子可以在美国专利No.4679141(POMERENE等人)1987-07-07,和由制造商Advanced Micro Devices公司(″Hammer″核心)和Intel公司(Itanium 2)开发的处理器核心中找到。
现有处理器设计使用专用辅助存储层次的主要原因之一是,把处理器元数据与涉及这种元数据的数据或指令的地址相关通常是有利的。例如,涉及使条件在处理器中发生的指令的元数据应当优选地以某种形式与底层指令的地址相关。为此最简单的方式是为元数据提供与底层指令相同的数值地址。然而,由于这两个数据段在高速缓存中具有冲突存储地址,所以这样做的问题是排斥在相同高速缓存结构中存储元数据和底层数据或指令。由于元数据在没有其引用的底层数据或指令时具有最小价值,所以有必要创建存储元数据的单独高速缓存层次,或使用″隐藏位″或其它形式的辅助存储来存储元数据。
因此,所需的是为有用但不一定关键的数据提供更好存储性能的手段,而无需增加大量系统成本。还需要允许数据和处理器元数据共存于统一高速缓存层次中而无需使用例如″隐藏位″的辅助数据存储构造的方法。动态地使这种元数据存储适应处理器操作期间的立即性能和资源需求也是有利的。本发明提供针对这些和其它问题的解决方案,并且提供优于以前的解决方案的其它优点。
发明内容
本发明提供一种存储非关键处理器信息的方法和设备,其包含例如指令踪迹和分支预测信息的先验和经验信息,而无需给处理器设计带来大量成本。基于本发明的优选实施例,短暂数据被存储在处理器本地高速缓存层次(在另一个实施例中,使用多个处理器共享的高速缓存层次)。通过在当在处理器本地高速缓存层次操作时所请求的或提供的地址中提供额外的控制位来实现这点。在一个实施例中,这个额外控制位形成用于确定在具体高速缓存线中特定高速缓存访问是否已经命中或命中失误的标记的部分。在另一个实施例中,这个位被用于确定在执行高速缓存查找时使用的等价类(equivalence class)。
设置有控制位(即,为″1″)的地址在这里被称作″短暂存储地址″。短暂存储地址不回写到外部主存储器,并且当从高速缓存的最后层级逐出时,短暂存储地址被丢弃。优选地,短暂存储地址的″特权″在于它们对软件不可访问或只可被具有适当权限的超级用户或管理员级软件访问。
在一个优选实施例中,提供若干管理函数/指令以允许管理员/超级用户软件管理和/或修改短暂高速缓存存储的行为。这些函数可以包含定义短暂存储地址空间的大小,使一或多个短暂存储条目/高速缓存线无效,在多个应用程序间划分/分配短暂存储地址空间,和直接地针对短暂存储空间读取或写入。
上述是一个概述,并且因而有必要包含具体内容的简化,概括和省略;因此,本领域的技术人员会理解,该概述只是示例性的,并且不被用于任何方式的限制。如通过权利要求书单独定义的本发明的其它方面,发明特征和优点将在下面提出的非限制性详细描述中阐明。
附图说明
通过参考附图,可以更好地了解本发明,并且本发明的许多目的,特征和优点对本领域的技术人员更清晰,其中:
图1是图解已知本领域的分层高速缓存结构的框图;
图2的框图基于本发明的优选实施例图解了使用用于存储踪迹信息的动态确定长度的短暂存储的分层高速缓存结构;
图3的框图基于本发明的优选实施例图解了使用利用次级高速缓存目录映射的动态确定长度的短暂存储的分层高速缓存结构;
图4的框图基于本发明的优选实施例图解了使用用于存储微结构元信息的动态确定长度的短暂存储的分层高速缓存结构;
图5的框图基于本发明的优选实施例图解了使用多处理器系统中的动态确定长度的短暂存储的分层高速缓存结构;
图6的框图基于本发明的优选实施例图解了支持短暂高速缓存的高速缓存条目;
图7的框图基于本发明的优选实施例图解了在多个处理器中共享的高速缓存条目;
图8的流程图基于本发明的优选实施例图解了对短暂高速缓存进行写入的处理;而
图9的流程图基于本发明的优选实施例图解了使用短暂高速缓存提供踪迹高速缓存的处理。
具体实施方式
下面提供本发明的例子的详细描述,并且不应被认为是本发明自身的限制。当然,任何数量的变型均可处于本发明的范围内,该范围在说明书之后的权利要求中定义。
图1是图解可以在本发明的优选实施例中使用的多层高速缓存结构的框图。中央处理单元(CPU)100包括主处理器数据路径101,一级(L1)指令高速缓存102和一级(L1)数据高速缓存104。L1高速缓存102和104通过提供快速访问的、从中读取指令(指令高速缓存102)和读、写数据(数据高速缓存104)的当前使用存储器位置的处理器本地复本,改进CPU 100的存储器访问性能。如图1所示,使用分立L1指令和数据高速缓存的方式允许对哈佛式计算机体系结构带来性能益处(即同时从不同存储器系统读取指令和数据的能力),同时保持冯诺依曼式体系结构(其中指令和数据驻留在公共地址空间)的计算灵活性。CPU 100还包含二级(L2)高速缓存106(比L1高速缓存102和104更大和略微慢),其提供快速访问的信息复本以便快速复制到L1高速缓存102和104。CPU外部(L3)高速缓存108介于L2高速缓存106和主存储器110之间,并且向L2高速缓存106提供类似中间高速缓存功能。
这个多层高速缓存结构的每个层次提供有限数量的快速访问临时存储位置,其通常被分成包括连续存储器地址块的″高速缓存线″。当在特定高速缓存级中占用所有可用高速缓存线,并且有必要向当前未存储在该高速缓存级的高速缓存线访问存储器地址时,至少一个高速缓存线必须从该高速缓存级中逐出以为新高速缓存线腾出空间。当这个发生时,被逐出的高速缓存线通常被″回写″到下一个最低高速缓存级(例如,从二级到三级),或在高速缓存线正被从最低高速缓存级逐出的情况下″回写″到主存储器。这个模式被称作″回写″高速缓存。在另一种高速缓存,即″写遍(write through)″高速缓存中,每个高速缓存线的写入被立即传播到所有高速缓存级,所以不必在高速缓存线最终被逐出高速缓存时执行回写操作。
如图2-5所示,在若干变型中,本发明的优选实施例使用分层高速缓存以提供用于记录各种非关键处理器数据的短暂存储空间。允许高速缓存中某数量的高速缓存线用于短暂存储。短暂存储高速缓存线不回写至或写遍至主存储器,而是在逐出最低级的高速缓存时被简单地删除(可选地,短暂存储高速缓存线可以在从更高级高速缓存逐出时被删除,而不是允许它们到达最低高速缓存级)。如图6所示(参见),额外地址位被用于指示高速缓存中的指定高速缓存线是否正被用于短暂存储。
如这里描述的短暂高速缓存的一个特别有用的应用是在处理器的基于踪迹的指令调度的领域。通过基于踪迹的调度,程序内的某些组的基本模块(例如构成循环的一组基本模块)被处理器识别,并且存储对应于那些模块的执行的踪迹信息以供以后使用。这些组被称作″踪迹组″。当以前已经执行对应于踪迹组的代码时,处理器可以使用所存储的踪迹信息执行分支预测并且提高该代码的总体性能。
图2是分层高速缓存系统的框图,其中结合短暂存储来使用踪迹高速缓存,以允许高效存储和检索指令踪迹信息。CPU 200包括处理器数据路径202以及三个一级高速缓存(踪迹高速缓存204,指令高速缓存206和数据高速缓存208)。踪迹高速缓存204被用于存储在随后的基于踪迹的调度中使用的指令踪迹信息。在二级和后续级高速缓存212中的某数量的高速缓存线被分配用作短暂存储211。动态确定短暂存储211的大小,即,短暂存储211的大小可以在CPU 200执行代码时增大或减少。
在本发明的一个优选实施例中,提供特殊指令以允许程序(例如操作系统)根据需要动态地设置短暂存储211的大小。例如,从计算角度看,某些程序(例如数据库引擎)相对简单,但是需要访问大量存储器;这种程序会因相对其余高速缓存具有更小短暂存储空间而带来好处。另一方面,信号处理软件或执行数值数学计算的软件可能不需要很多存储器空间,但是可能使用会因具有更大短暂存储空间而受益的嵌套循环或其它复杂控制结构。因此,动态调整短暂空间的大小的能力是本发明的优选实施例的非常有益的特征。
由于把踪迹信息与踪迹信息涉及到的程序代码的存储器地址相关通常是有利的,所以踪迹高速缓存204中的条目通常具有与指令高速缓存206中的指令地址匹配的地址。虽然这在其中使用单独踪迹和指令高速缓存的第一高速缓存级中没有问题,但在其中来自踪迹高速缓存204,指令高速缓存206和数据高速缓存208的条目被聚合的第二和更低高速缓存级212中有问题。如果正产生或使用具有与来自指令高速缓存206的指令相同的高速缓存级212中对应高速缓存线的踪迹信息,则该踪迹信息将与高速缓存级212中的指令冲突,因而阻止在高速缓存级212中同时保持两段信息。由于踪迹信息只在可以访问它对应的指令的情况下有用,所以在指令和其踪迹信息被映射到更低高速缓存级212中的相同高速缓存线的情况下,显然存在问题。为了补救这种情况,散列函数210被应用于踪迹高速缓存204中的条目的地址,以便把指定高速缓存线的踪迹信息映射到更低高速缓存级212中与踪迹信息所对应的指令不同的地址。这允许踪迹高速缓存204中的条目具有与它们所属的指令高速缓存206中的指令相同的地址,同时保证在来自踪迹高速缓存204和指令高速缓存206的条目被写入更低高速缓存级212时,对应条目将占用更低高速缓存级212中的不同(无冲突)条目。
可以被用来消除更低高速缓存级中的冲突、更加通用的另一种策略是使用如图3中的踪迹高速缓存目录310。在图3描述的实施例中,踪迹高速缓存目录310是把踪迹高速缓存304中的高速缓存线的地址映射到更低高速缓存级312的短暂存储311中的对应条目的表或其它数据结构。通过这种方式,来自指令高速缓存306的指令可以被直接映射到其更低高速缓存级312中对应的条目,同时通过由踪迹高速缓存目录310提供的附加间接层级把踪迹高速缓存条目304映射到更低高速缓存级312中的无冲突高速缓存线。
图4图解了前述附图的基本模式的其它变型。具体地,图4图解了短暂存储可以被用来存储除了踪迹信息之外的更一般形式的信息,例如有关在指定时间或执行指定指令期间CPU 400的微结构的状态的信息,如微结构元信息高速缓存404所示。图4还图解了短暂存储不必限于片上高速高速缓存。图4图解了包含短暂存储条目411的处理器内部二级(L2)高速缓存412以及包含相应短暂存储条目413的外部三级(L3)高速缓存414。
同样,尽管未在图4中明确说明,然而本领域的技术人员将认识到,具有图2-3中使用的类型的避免高速缓存线冲突的高速缓存地址间接也可以被用于基于图4的实施例。具体地,地址散列函数(例如,地址散列210)或目录(例如,踪迹高速缓存目录310)或其它适当地址间接技术可以被用于例如图4中描述的高速缓存结构。
图5图解了前面附图中描述的基本短暂存储概念的另一个变型。图5图解了使用基于本发明的短暂存储的共享存储器/共享高速缓存多处理器系统体系结构。在图5中,使用了两个CPU 500和501,每个CPU在其各自L2高速缓存中维护其自身的短暂存储(L2高速缓存512中的短暂存储511和L2高速缓存515中的短暂存储513)。CPU 500和501共享L3高速缓存518,两个处理器使用其存储短暂元信息(短暂存储517)。在L3高速缓存515中以与在单处理器中整合L1高速缓存条目非常相同的方式整合来自CPU 500和501的短暂信息高速缓存条目。
如图7中所图解的(参见),通过在L3高速缓存518中使用的高速缓存地址中使用处理器ID位,可以避免处理器之间的冲突短暂存储地址。可选地,可从利用在单处理器环境中如图2和3所示的其它形式的地址冲突回避来代替处理器ID位或作为其补充。
本领域的技术人员将认识到,图5中图解的模式可以被扩展到具有任何数量的单个处理器的多处理器系统,并且图5中提供的双处理器例子并不是限制性的。
图6和7图解了在本发明的优选实施例中把存储器地址映射到高速缓存线的地址的方式。图6图解了单处理器情况,例如可以在图2-4中描述的优选实施例的环境中使用,而图7图解了多处理器情况,例如可以在基于图5的实施例的环境中使用。
图6基于本发明的优选实施例描述了高速缓存中的存储器位置的地址的格式600。在这个优选实施例中,每个地址包括45位。第一位即控制位602指示地址是否表示普通存储或短暂存储(例如,如果是普通存储则为″0″,如果是短暂存储则为″1″)。剩余44位表示物理地址604。通过按照这种方式使用控制位602,可以具有通过地址的44位部分与普通物理地址一般相关的短暂存储地址。这在收集关于例如特定指令或数据存储器位置的统计数据时是有用的。
为了解释地址以便索引高速缓存内的高速缓存线,控制位602和物理地址604的前若干位被用作与地址600(等价设置位608)的接下来的若干位一起唯一标识特定高速缓存线的标记606。该高速缓存线内特定存储器位置的偏移由地址的最低有效位610提供。在典型的操作中,等价设置位608被用作把指定高速缓存线映射到有限数量的可用高速缓存线的索引,而标记606允许高速缓存存储的高速缓存线与其在主存储器中的相应地址范围相关。
在可选实施例中,控制位602可以用于形成等价设置位608,并且/或各个字段(控制位,等价设置位,标记位等等)的相对顺序可以不同。在另一个实施例中,索引函数或散列函数可以被用于把标记位和/或等价设置位映射到高速缓存中的实际物理地址;这可以被用于允许否则会映射到高速缓存中的相同位置的两个高速缓存线被同时存储在不同高速缓存位置。例如,如果短暂存储高速缓存线通过相同44位物理地址与另一个普通存储高速缓存线相关,则索引函数或散列函数可用于把两个高速缓存线映射到高速缓存中的不同位置,使得两者可以被同时访问或快速相继访问,而无需导致必须切换一个高速缓存线到另一个的实质性能损失。本领域的技术人员将认识到,在不偏离本发明的范围和实质的前提下,地址的具体格式和长度可以有许多变化。
在一个优选实施例中,短暂存储地址的″特权″在于它们对软件不可访问或只可被具有适当权限的管理员或超级用户软件访问。基于这个优选实施例,通过发布特殊短暂存储相关函数或通过用于此目的的专用寄存器,提供若干函数以允许管理员/超级用户软件(例如操作系统,管理程序或其它系统软件)管理和/或修改短暂高速缓存的行为。
这些函数可以包含定义短暂存储地址空间的大小,使一或多个短暂存储条目/高速缓存线无效,在多个应用程序间划分/分配短暂存储地址空间(例如,使用本领域所知的存储器保护模式),和直接地针对短暂存储空间读取或写入。
当在多个处理器中共享高速缓冲存储器系统的情况下,可以使用例如图7中描述的地址格式700的可选地址格式。基于地址格式700,其中控制位被清除(例如,控制位702),地址对应于普通存储器存储并且剩余44位704示出物理地址。然而,如果控制位被设置(例如,控制位706和712),则处理器ID位字段(图7中的位字段708和714)指示与该短暂存储地址相关的特定处理器,并且剩余位(图7中的位字段710和716)被用于存储特定于处理器的短暂存储地址。在图7描述的例子中,使用2位处理器ID字段(其允许最多四个处理器),但是本领域的技术人员认识到可以在具有不同数量的处理器的系统中使用不同数量的位。
图8是基于本发明的优选实施例描述写入短暂存储高速缓存线的处理的流程图。图8图解了传统高速缓存和基于本发明的优选实施例的短暂存储的操作之间的差异。此外,本领域的技术人员认识到,尽管只在图8中明确地描述写入,但相应读取操作紧接在下面讨论的后面。还应当注意,尽管图8中的流程图假定两级高速缓存,但本领域的技术人员认识到,图8中描述的通用模式适用于具有任何数量的层级的高速缓存。
现在参照图8中图解的具体动作,短暂存储的高速缓存线的写操作在块800启动。如果高速缓存线存在于高速缓存的顶级(块802:是),则数据被简单地直接写入到高速缓存的现有高速缓存线(块804)并且处理结束。
然而,如果高速缓存线不存在于高速缓存(块802:否),则确定是否已经在高速缓存中分配最大数量的短暂存储高速缓存线(块806)(在可选实施例中,这个确定可以被省略,以令短暂存储访问动态地争夺L2高速缓存资源)。如果否(块806:否),则确定顶级高速缓存中的适当位置是否已满(块810)。如果不是这样(块810:否),则创建新短暂存储高速缓存线(块808)并且数据写入到该新高速缓存线(块804)。
然而,如果顶级高速缓存中的适当位置已满(块810:是),则选择顶级高速缓存中的适当高速缓存线以逐出到更低级高速缓存(块812)。如果更低级高速缓存满(块814:是),则从更低级高速缓存中选择和丢弃高速缓存线以为从顶级高速缓存逐出的高速缓存线腾出空间(块813)。从顶级高速缓存逐出的高速缓存线接着被回写到更低级高速缓存(块816)。在顶级高速缓存中创建新短暂存储高速缓存线(块808)并且新数据被写入到该新高速缓存线(块804)。
图9是表示利用短暂存储来存储在基于踪迹的调度中使用的踪迹组信息的处理的流程图。在这个实施例中,用于踪迹组信息的短暂存储增加有一个目录,以允许把踪迹组信息存储在具有与踪迹组自身的起始相同的44位物理地址的短暂存储位置,或在必要或合适的情况下存储在另一个位置。现在参照图9,处理开始时通过把踪迹组自身的44位地址用作踪迹组信息的短暂存储中的起始地址,尝试访问对应于特定踪迹组的信息(块900)。如果在该位置找到条目(块902:是),则该执行使用高速缓存踪迹组信息继续进行,直到处理器退出该组(块904)。
如果使用组的起始地址未找到条目(块902:否),则搜索目录以查看踪迹组高速缓存信息是否已经被存储在另一个地址(块908)。如果是(块910:是),则从短暂存储中的适当位置获取信息(块912)。接着,检查所获取的信息的完整性,以确定信息是否实际已从高速缓存逐出并且因此不可使用(块914)。如果信息尚未被从高速缓存逐出(块914:否),则该执行使用高速缓存踪迹组信息继续进行,直到处理器退出该组(块904)。
如果所获取的信息被预先从高速缓存逐出(块914:是)或如果在目录中未找到条目(块910:否),则产生新指令踪迹组并且执行与之对应的指令(块916)。如果前一条目必须被逐出以为新组信息腾出空间(块918:是),则所逐出的指令踪迹组被存储在次级存储器结构,并且产生针对所逐出的组信息的目录条目(块920)。接着,新指令踪迹组被存储在短暂存储内的踪迹组高速缓存中(块922)。
一旦当前踪迹组结束执行,则确定下一个指令踪迹组的起始地址(块906)。接着,处理循环回到块900以处理下一个踪迹组。
本领域的技术人员会认识到,这里公开的本发明的大量其它变化可以在不偏离本发明的实质的范围的前提下进行实践。例如,在一个可能的实施例中,短暂存储地址可以通过使用指示到短暂存储地址的映射的专用页表条目(例如,在分页虚拟存储器系统中)被映射到一或多个程序的地址空间。于是,例如操作系统的特权程序可以使用这样映射的地址存储和/或检索短暂程序数据。可选地,可以允许用户程序以这种方式存储和检索短暂程序数据。
在另一个可能的实施例中,针对已经逐出(因此失败)的短暂地址的请求通过提供缺省值(或″空″值)来满足。在另一个实施例中,失败的请求可以通过触发某种通知事件来指示,其可以通过设置处理器中的寄存器或条件标记值,或通过进行程序状态的某些其它改变来指示。可选地,通知事件可以具有激活的异常或中断的形式。本领域的技术人员会认识到,在本发明的实际实施例中,在不受限制和不偏离其范围或宗旨的前提下,可以使用其它形式的失败请求通知。
本发明的一个可能实现是具有例如可以驻留在计算机随机访问存储器中的代码模块中的一组指令(微码)或其它功能描述材料。直到计算机需要,该组指令可以被存储在例如硬盘驱动器,或例如光盘(CDROM中最终使用)或软盘(软盘驱动器中最终使用)的可移动存储器的另一个计算机存储器中,或通过因特网或其它计算机网络下载。因而,本发明可以被实现成计算机使用的计算机程序产品。另外,尽管在通用计算机中通过软件有选择地激活或重新配置方便地实现所描述的各种方法,但是本领域的普通技术人员还认识到,这些方法可以在硬件,固件或构造成执行所需的方法步骤的更专用的装置中执行。功能描述材料是把功能赋予设备的信息。功能描述材料包含但不限于计算机程序,指令,规则,事实,可计算函数的定义,对象和数据结构。
虽然示出和描述了本发明的具体实施例时,然而本领域的技术人员明白,基于这里的指导,可以在不偏离本发明和其广泛方面的前提下进行变化和修改。因此,所附权利要求书试图在其范围内覆盖在本发明的真实宗旨和范围内的所有这种变化和修改。此外,应当理解本发明由所附权利要求单独定义。本领域的技术人员理解,如果想要包含特定数量的所引入的权利要求要素,则这种意图将在权利要求中被明确记载,并且在没有这种记载时,则不存在这种限定。作为非限制性例子,为帮助理解,下面所附权利要求包含引入性短语″至少一个″和″一或多个″的使用以引入权利要求要素。然而,这种短语的使用不应该解释为暗示由不定冠词″a″或″an″对权利要求要素的引入,将任何包含这种引入的权利要求要素的具体权利要求限制于只包含一个这种要素的发明,即使在相同权利要求包含引入性短语″一或多个″或″至少一个″和不定冠词例如″a″或″an″;这同样适用于定冠词的权利要求中的使用。
Claims (14)
1.一种计算机实现的方法,包括:
确定应当从高速缓存清除的信息高速缓存线;
对与该信息高速缓存线相关的地址应用索引函数,以把该信息高速缓存线映射到高速缓存中的位置;
确定该信息高速缓存线是否已经指定为短暂存储;和
仅在确定该信息高速缓存线尚未被指定为短暂存储的情况下,把该信息高速缓存线保留在主存储器中。
2.如权利要求1所述的方法,还包括:
如果确定该信息高速缓存线已经指定为短暂存储,则响应于确定应当从高速缓存中清除该信息高速缓存线,丢弃该信息高速缓存线。
3.如权利要求1所述的方法,其中高速缓存是上级高速缓存,并且该方法还包括:
仅在确定该信息高速缓存线尚未被指定为短暂存储的情况下,把该信息高速缓存线保留在更低级高速缓存中。
4.如权利要求1所述的方法,还包括:
确立短暂存储高速缓存线的最大数量,使得可以在高速缓存内分配不超过该最大数量的短暂存储高速缓存线。
5.如权利要求1所述的方法,其中该信息高速缓存线包含指令踪迹组信息。
6.如权利要求1所述的方法,其中通过在与该信息高速缓存线相关的地址中包含至少一个控制位,将该信息高速缓存线指定为短暂存储。
7.如权利要求1所述的方法,其中该信息高速缓存线与计算机系统中的多个处理器中的一个处理器相关,并且在该多个处理器间共享高速缓存的至少一部分。
8.一种处理器,其包括:
第一确定逻辑,其中第一确定逻辑确定应当从高速缓存中清除信息高速缓存线;
映射逻辑,其中映射逻辑对与该信息高速缓存线相关的地址应用索引函数,以把该信息高速缓存线映射到高速缓存中的位置;
第二确定逻辑,其中第二确定逻辑确定该信息高速缓存线是否已经指定为短暂存储;和
条件保留逻辑,其中仅在确定该信息高速缓存线尚未被指定为短暂存储的情况下,条件保留逻辑把该信息高速缓存线保留在主存储器中。
9.如权利要求8所述的处理器,还包括:
丢弃逻辑,其中如果确定该信息高速缓存线已经指定为短暂存储,则丢弃逻辑响应于确定应当从高速缓存中清除该信息高速缓存线,丢弃该信息高速缓存线。
10.如权利要求8所述的处理器,其中高速缓存是上级高速缓存,并且条件保留逻辑仅在确定该信息高速缓存线尚未被指定为短暂存储的情况下,把该信息高速缓存线保留在更低级高速缓存中。
11.如权利要求8所述的处理器,还包括:
短暂存储限制逻辑,其中短暂存储限制逻辑对短暂存储高速缓存线实施数值限定,使得可以在高速缓存内分配不超过最大数量的短暂存储高速缓存线。
12.如权利要求8所述的处理器,其中该信息高速缓存线包含指令踪迹组信息。
13.如权利要求8所述的处理器,其中通过在与该信息高速缓存线相关的地址中包含至少一个控制位,该信息高速缓存线被指定为短暂存储。
14.如权利要求8所述的处理器,其中该信息高速缓存线与计算机系统中的多个处理器中的一个处理器相关,并且在该多个处理器间共享高速缓存的至少一部分。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/295,300 | 2005-12-06 | ||
US11/295,300 US7461209B2 (en) | 2005-12-06 | 2005-12-06 | Transient cache storage with discard function for disposable data |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1979452A CN1979452A (zh) | 2007-06-13 |
CN100444135C true CN100444135C (zh) | 2008-12-17 |
Family
ID=38120036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101262153A Active CN100444135C (zh) | 2005-12-06 | 2006-08-25 | 用于短暂高速缓存存储的方法和处理器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7461209B2 (zh) |
KR (1) | KR101013266B1 (zh) |
CN (1) | CN100444135C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103513959A (zh) * | 2012-06-15 | 2014-01-15 | 国际商业机器公司 | 无需执行的特殊情况寄存器更新 |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8250305B2 (en) * | 2008-03-19 | 2012-08-21 | International Business Machines Corporation | Method, system and computer program product for data buffers partitioned from a cache array |
US20100257318A1 (en) * | 2009-04-03 | 2010-10-07 | Samsung Electronics Co., Ltd. | Evicting code sections from secondary memory to improve the security of computing systems |
US20100257514A1 (en) * | 2009-04-03 | 2010-10-07 | Samsung Electronics Co., Ltd. | Effective mapping of code sections to the same section of secondary memory to improve the security of computing systems |
KR101056460B1 (ko) * | 2009-06-05 | 2011-08-11 | 세종대학교산학협력단 | 캐쉬 제어기 및 캐쉬 블록 교체 방법 |
US9104583B2 (en) | 2010-06-24 | 2015-08-11 | International Business Machines Corporation | On demand allocation of cache buffer slots |
US9323527B2 (en) | 2010-10-15 | 2016-04-26 | International Business Machines Corporation | Performance of emerging applications in a virtualized environment using transient instruction streams |
US8924632B2 (en) * | 2011-09-16 | 2014-12-30 | Apple Inc. | Faster tree flattening for a system having non-volatile memory |
US20140244932A1 (en) * | 2013-02-27 | 2014-08-28 | Advanced Micro Devices, Inc. | Method and apparatus for caching and indexing victim pre-decode information |
US20150293847A1 (en) * | 2014-04-13 | 2015-10-15 | Qualcomm Incorporated | Method and apparatus for lowering bandwidth and power in a cache using read with invalidate |
US11620220B2 (en) * | 2014-07-14 | 2023-04-04 | Via Alliance Semiconductor Co., Ltd. | Cache system with a primary cache and an overflow cache that use different indexing schemes |
US9430396B2 (en) | 2014-12-22 | 2016-08-30 | Intel Corporation | Updating persistent data in persistent memory-based storage |
US9690716B2 (en) * | 2015-02-13 | 2017-06-27 | Intel Corporation | High performance persistent memory for region-centric consistent and atomic updates |
US10042737B2 (en) | 2016-08-31 | 2018-08-07 | Microsoft Technology Licensing, Llc | Program tracing for time travel debugging and analysis |
US10031833B2 (en) | 2016-08-31 | 2018-07-24 | Microsoft Technology Licensing, Llc | Cache-based 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 |
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 |
US10310977B2 (en) | 2016-10-20 | 2019-06-04 | Microsoft Technology Licensing, Llc | Facilitating recording a trace file of code execution using a processor cache |
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 |
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 |
US10540250B2 (en) | 2016-11-11 | 2020-01-21 | Microsoft Technology Licensing, Llc | Reducing storage requirements for storing memory addresses and values |
CN106776698A (zh) * | 2016-11-14 | 2017-05-31 | 北京北纬通信科技股份有限公司 | 基于优化缓存的票务信息刷新方法及系统 |
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 |
US10459824B2 (en) | 2017-09-18 | 2019-10-29 | Microsoft Technology Licensing, Llc | Cache-based trace recording using cache coherence protocol data |
US10558572B2 (en) | 2018-01-16 | 2020-02-11 | Microsoft Technology Licensing, Llc | Decoupling trace data streams using cache coherence protocol data |
US11907091B2 (en) | 2018-02-16 | 2024-02-20 | Microsoft Technology Licensing, Llc | Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches |
US10642737B2 (en) | 2018-02-23 | 2020-05-05 | Microsoft Technology Licensing, Llc | Logging cache influxes by request to a higher-level cache |
US10496537B2 (en) | 2018-02-23 | 2019-12-03 | Microsoft Technology Licensing, Llc | Trace recording by logging influxes to a lower-layer cache based on entries in an upper-layer cache |
US11556477B2 (en) * | 2018-06-15 | 2023-01-17 | Arteris, Inc. | System and method for configurable cache IP with flushable address range |
US11023162B2 (en) | 2019-08-22 | 2021-06-01 | Apple Inc. | Cache memory with transient storage for cache lines |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1229953A (zh) * | 1998-02-17 | 1999-09-29 | 国际商业机器公司 | 具有全局和局部标记状态的高速缓存相干性协议 |
US6327643B1 (en) * | 1998-09-30 | 2001-12-04 | International Business Machines Corp. | System and method for cache line replacement |
CN1502077A (zh) * | 2000-12-29 | 2004-06-02 | ض� | 在系统逻辑器件中使用随机存取存储器来优化计算机系统中的数据流的方法和装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4414644A (en) * | 1981-04-03 | 1983-11-08 | International Business Machines Corporation | Method and apparatus for discarding data from a buffer after reading such data |
US4679141A (en) | 1985-04-29 | 1987-07-07 | International Business Machines Corporation | Pageable branch history table |
US5297269A (en) | 1990-04-26 | 1994-03-22 | Digital Equipment Company | Cache coherency protocol for multi processor computer system |
US5592634A (en) | 1994-05-16 | 1997-01-07 | Motorola Inc. | Zero-cycle multi-state branch cache prediction data processing system and method thereof |
US5675768A (en) | 1996-02-01 | 1997-10-07 | Unisys Corporation | Store software instrumentation package instruction |
US6108764A (en) | 1998-12-17 | 2000-08-22 | International Business Machines Corporation | Non-uniform memory access (NUMA) data processing system with multiple caches concurrently holding data in a recent state from which data can be sourced by shared intervention |
US7260684B2 (en) * | 2001-01-16 | 2007-08-21 | Intel Corporation | Trace cache filtering |
US6728854B2 (en) * | 2001-05-15 | 2004-04-27 | Microsoft Corporation | System and method for providing transaction management for a data storage space |
WO2003044670A1 (en) | 2001-11-16 | 2003-05-30 | Sun Microsystems, Inc. | Coherence message prediction mechanism and multiprocessing computer system employing the same |
GB0227825D0 (en) * | 2002-11-29 | 2003-01-08 | Ibm | High-performance lock management for flash copy in n-way shared storage systems |
US6983347B2 (en) | 2002-12-05 | 2006-01-03 | International Business Machines Corporation | Dynamically managing saved processor soft states |
-
2005
- 2005-12-06 US US11/295,300 patent/US7461209B2/en active Active
-
2006
- 2006-08-25 CN CNB2006101262153A patent/CN100444135C/zh active Active
- 2006-11-17 KR KR1020060113779A patent/KR101013266B1/ko not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1229953A (zh) * | 1998-02-17 | 1999-09-29 | 国际商业机器公司 | 具有全局和局部标记状态的高速缓存相干性协议 |
US6327643B1 (en) * | 1998-09-30 | 2001-12-04 | International Business Machines Corp. | System and method for cache line replacement |
CN1502077A (zh) * | 2000-12-29 | 2004-06-02 | ض� | 在系统逻辑器件中使用随机存取存储器来优化计算机系统中的数据流的方法和装置 |
Non-Patent Citations (2)
Title |
---|
Trace Cache及Trace处理器技术. 杜贵然,罗金平,徐明,胡瀚涛,周兴铭.计算机工程与科学,第23卷第1期. 2001 |
Trace Cache及Trace处理器技术. 杜贵然,罗金平,徐明,胡瀚涛,周兴铭.计算机工程与科学,第23卷第1期. 2001 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103513959A (zh) * | 2012-06-15 | 2014-01-15 | 国际商业机器公司 | 无需执行的特殊情况寄存器更新 |
Also Published As
Publication number | Publication date |
---|---|
US20070130237A1 (en) | 2007-06-07 |
KR101013266B1 (ko) | 2011-02-09 |
CN1979452A (zh) | 2007-06-13 |
US7461209B2 (en) | 2008-12-02 |
KR20070059957A (ko) | 2007-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100444135C (zh) | 用于短暂高速缓存存储的方法和处理器 | |
US10657101B2 (en) | Techniques for implementing hybrid flash/HDD-based virtual disk files | |
TWI784084B (zh) | 資料管理方法、多處理器系統以及非暫態電腦可讀取儲存媒體 | |
CN111344684B (zh) | 多层缓存安置机制 | |
CN110232031A (zh) | 保护缓存免受侧信道攻击的方法、系统和存储介质 | |
US6112285A (en) | Method, system and computer program product for virtual memory support for managing translation look aside buffers with multiple page size support | |
CN100437523C (zh) | 用于程序员控制的超高速缓冲存储器线回收策略的方法 | |
CN100476760C (zh) | 用于分级高速缓存行替换的方法、系统及装置 | |
US4775955A (en) | Cache coherence mechanism based on locking | |
US9182927B2 (en) | Techniques for implementing hybrid flash/HDD-based virtual disk files | |
US9280300B2 (en) | Techniques for dynamically relocating virtual disk file blocks between flash storage and HDD-based storage | |
CN109815165A (zh) | 用于存储和处理高效压缩高速缓存行的系统和方法 | |
US8145870B2 (en) | System, method and computer program product for application-level cache-mapping awareness and reallocation | |
KR20240082308A (ko) | 멀티 프로세서 시스템 및 이에 포함된 프로세서의 데이터 관리 방법 | |
US7721047B2 (en) | System, method and computer program product for application-level cache-mapping awareness and reallocation requests | |
JP4068185B2 (ja) | コンピュータ・システムでのメモリ・ストレージ・モードの効果的な選択 | |
CN100514311C (zh) | 用于实现组合式数据/相关性高速缓存的方法和装置 | |
Li et al. | Phast: Hierarchical concurrent log-free skip list for persistent memory | |
Fevgas et al. | LB-Grid: An SSD efficient grid file | |
Venkatesan et al. | Ex-tmem: Extending transcendent memory with non-volatile memory for virtual machines | |
EP0220451B1 (en) | A cache coherence mechanism based on locking | |
Liu et al. | HATree: A hotness-aware tree index with in-node hotspot cache for NVM/DRAM-based hybrid memory architecture | |
Bhattacharjee | Appendix L: Advanced Concepts on Address Translation | |
Li et al. | Algorithm-Switching-Based Last-Level Cache Structure with Hybrid Main Memory Architecture | |
JPS63284649A (ja) | キャッシュメモリ制御方法 |
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 |