CN101158925A - 用于支持跟踪和标准高速缓存行的同时存储的装置和方法 - Google Patents
用于支持跟踪和标准高速缓存行的同时存储的装置和方法 Download PDFInfo
- Publication number
- CN101158925A CN101158925A CNA2007101367766A CN200710136776A CN101158925A CN 101158925 A CN101158925 A CN 101158925A CN A2007101367766 A CNA2007101367766 A CN A2007101367766A CN 200710136776 A CN200710136776 A CN 200710136776A CN 101158925 A CN101158925 A CN 101158925A
- Authority
- CN
- China
- Prior art keywords
- tracks
- row
- cache
- instruction
- follow
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 29
- 230000008878 coupling Effects 0.000 claims description 28
- 238000010168 coupling process Methods 0.000 claims description 28
- 238000005859 coupling reaction Methods 0.000 claims description 28
- 238000003491 array Methods 0.000 claims description 4
- 238000013500 data storage Methods 0.000 claims 2
- 230000000873 masking effect Effects 0.000 claims 2
- 238000004445 quantitative analysis Methods 0.000 claims 2
- 238000013508 migration Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 4
- 238000005192 partition Methods 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 238000006386 neutralization reaction Methods 0.000 description 1
- 230000004044 response Effects 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
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
- G06F2212/6082—Way prediction in set-associative cache
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
单个统一的第一级指令高速缓存,其中某些行可以包含跟踪而同一同余类中的其他行可以包含与常规高速缓存行一致的指令块。描述了用于索引到高速缓存中并选择期望的行的机制。在哪些行上施以控制被包含在高速缓存内。做出了用于在标记比较步骤期间跟踪行和常规行都匹配时在这二者之间进行选择的规定。
Description
技术领域
本发明涉及用于支持跟踪和标准高速缓存行的同时存储的装置和方法。
背景技术
传统的处理器设计利用各种高速缓存结构来存储指令和数据的本地拷贝,以避免典型DRAM存储器的长存取时间。在典型的高速缓存层次结构中,比较靠近处理器的高速缓存(L1)往往较小并且非常快,而比较靠近DRAM的高速缓存(L2或L3)则往往大得多但是也较慢(较长的存取时间)。较大的高速缓存往往既处理指令也处理数据,而处理器系统在L1级上(即最靠近处理器核心)经常将包括分开的数据高速缓存和指令高速缓存。熟悉高速缓存结构和操作的人理解,处理器核心将发出请求,如果可能的话,则这些请求在最靠近的高速缓存中处理,在所述高速缓存中找到响应数据(“高速缓存命中,cache hit”),请求被从一层“向下传”到下一层,因为可能存在高速缓存未命中(cache miss)。
所有这些高速缓存通常具有类似的结构,主要差别在于具体大小(例如高速缓存行大小、每同余类路线(ways per congruence class)的数量、同余类的数量)。在指令高速缓存的情况下,当代码执行到达先前读取(fetch)的高速缓存行的末端时,或者当在先前读取的高速缓存行内遇到采用的(或者至少预测采用的)分支时,高速缓存被访问。在任一情况下,下一指令地址被呈现给高速缓存。在典型操作中,同余类通过缩略地址(忽略高序位)被选择,并且通过将地址匹配到该同余类内每一路线的标记内的地址字段的内容来选择该同余类内的特定路线。用于索引和用于匹配标记的地址可以使用有效地址或真实地址(取决于系统问题,其超出本公开范围)。通常,为了索引到标记阵列中和为了比较标记内容,低序地址位(例如在高速缓存行内选择特定字节或字)被忽略。这是因为对于常规高速缓存,所有这些字节/字将被存储在相同的高速缓存行中。
近来,已经使用存储指令执行的跟踪(trace)的指令高速缓存,以英特尔奔腾4最为出名。这些“跟踪高速缓存”通常将来自不同地址区域的指令块(即本来要求多个常规高速缓存行的指令块)进行组合。跟踪高速缓存的目的是更有效地处理分支,至少当分支被很好地预测时是这样。分支目标地址处的指令就是跟踪行中的下一指令,允许处理器像其执行无分支的长代码块一样有效地执行具有高分支密度的代码。就像几个常规高速缓存行的一些部分可以组成单个跟踪行一样,几个跟踪行可以包含同一常规高速缓存行的一些部分。因此,在跟踪高速缓存中必须对标记进行不同地处理。在常规高速缓存中,低序地址线被忽略,但对于跟踪行,在标记中必须使用完整地址。
相关的差别在于对于到高速缓存行中的索引的处理。对于常规高速缓存行,在选择高速缓存行(索引和标记比较)时,最低有效位被忽略,但是在进入新高速缓存行的分支的情况下,这些最低有效位被用来确定从用于读取分支目标处的第一个指令的高速缓存行的开始处的偏移。相反,分支目标的地址将是跟踪行中的第一个指令。因此不需要偏移。从前一高速缓存行的末端经过顺序指令执行的直通(flow-through)简单地使用零偏移,因为它将执行下一高速缓存行中的第一个指令(和其是否是跟踪行无关)。完整的标记比较将从同余类中选择合适的行。在期望的分支目标地址在跟踪行内但不是该跟踪行中的第一个指令的情况下,跟踪高速缓存将声明未命中(miss),并可能构造在该分支目标处开始的新跟踪行。
跟踪高速缓存的一个限制是在构造要被存储在跟踪高速缓存中的跟踪之前,分支预测必须相当地准确。对于大多数代码执行,这就意味着延迟跟踪的构造,直到分支历史已被记录得长到足以确保准确的预测为止。但是,某些代码路径包含本质上不可预测的分支。例如,动态数据可以确定是否采用特定分支。除了L1指令跟踪高速缓存以外,某些实施方案添加常规的L1指令高速缓存,以便更好地处理不能可预测地执行的代码。这不是一种非常有效的实施方案,因为必须使跟踪高速缓存大小适合,以处理所有期望的跟踪行,并且必须使常规高速缓存大小适合,以处理所有不能可预测地执行的指令。由于对于不同的应用这两种资源之间的平衡可能不同,所以这样的设计通常不会实现对两种资源的充分利用。
发明内容
本发明的一个目的是通过在单个统一的指令高速缓存中既处理可预测代码也处理不可预测代码来实现灵活的资源平衡。因此,某些行可能包含跟踪,而同一同余类中的其他行可能包含与常规高速缓存行相容的指令块。本发明的一个方面是用于索引到高速缓存中和选择期望的行的机制。本发明的另一个方面是控制在高速缓冲中包含哪些行。又一个方面是当在标记比较期间跟踪行和常规行二者都匹配时,在这两者之间的选择。
附图说明
已经陈述了本发明的一些目的,结合附图,随着描述的开展,其他的目的将会出现,在附图中:
图1是计算机系统中央处理器和分层的存储器的工作耦合的图示,所述分层的存储器具有第一级、第二级和第三级高速缓存及DRAM;
图2是L1高速缓存指令高速缓存的结构的图示;和
图3是流程图,绘出了在根据本发明的第一级指令高速缓存的操作中涉及的过程。
具体实施方式
虽然此后将参考附图更全面地描述本发明,其中示出了本发明的优选实施例,但是从下面的描述一开始就要理解,本领域普通技术人员可以修改这里所描述的发明而仍取得本发明的有利结果。因此,下面的描述要被理解为针对本领域普通技术人员的广泛的教导性的公开,而非对本发明的限制。
这里所使用的术语“程序化方法(programmed method)”被定义为表示一个或更多个目前被执行的过程步骤;或者,一个或更多个被使得能够在未来时间点执行的过程步骤。术语程序化方法构思了三种可选形式。第一,程序化方法包含目前执行的过程步骤。第二,程序化方法包含具体实施计算机指令的计算机可读介质,所述指令当被计算机系统执行时执行一个或更多个过程步骤。第三,程序化方法包含已经被软件、硬件、固件或其任意组合编程以便执行一个或更多个过程步骤的计算机系统。要理解,术语程序化方法不应被理解为同时具有多于一种可选形式,而是要以可选形式的最真实意义理解,其中,在任意给定的时间点,只存在多种可选形式中的一种。
对于如图1中所示的耦合到计算机系统处理器并且每个行具有2L字节、每同余类具有M个路线并具有2N个同余类的L1指令高速缓存,呈现给高速缓存子系统(图2)的指令地址(分支目标或来自前一高速缓存行的直通)将被划分为下列字段:
最低L位(行内的地址字节)
接下来的N位(到特定同余类中的索引)
最高有效位
对于32K字节的总高速缓存大小,典型的实施方案可能具有L=6(每行16指令或64字节)、每同余类M=4个路线,以及N=7(128个同余类)。典型的实施方案也可能将每一个高速缓存行划分为多个段。例如,64字节行可以由来自4个不同阵列(每阵列16字节或4个指令)的数据组成。这种划分的动机是在某些情况下,无需对整个高速缓存行供电就可以访问所要求的数据,从而节省功率。
要注意,在图2中示出的高速缓存子系统单元包括标记阵列、数据阵列以及和这两个阵列可操作地关联的控制逻辑。根据本发明,控制逻辑电路实施如这里所描述的第一级高速缓存的活动。两个阵列一般类似于现有高速缓存子系统,并将被普通技术人员所理解。现在注意力将转向本发明所构思的高速缓存子系统的操作和控制逻辑。
访问高速缓存的过程包括如图3流程图中所示的下列步骤:
取目标指令地址的中间分区中的N位用作到标记阵列中的索引。
对于来自在步骤1中选择的同余类的标记阵列中的M个条目中的每一个,将标记字段与完整的目标指令地址比较。
如果找到匹配,则其是跟踪行?
如果其是跟踪行,检查标记中的跟踪长度参数。只使能数据阵列中访问跟踪内容所要求的分区。
从数据阵列访问高速缓存行,并将跟踪转发到执行流水线,并退出过程。(在具有相同起始地址的高速缓存中只允许一个高速缓存行。这可以是跟踪行或常规的高速缓存行。在常规的高速缓存行的情况下,只有目标指令地址指向高速缓存行的第一个指令,才在这个步骤期间发现这种情况。)
如果没有找到匹配,则将目标指令地址的最低L位屏蔽(为零)。
在所选择的同余类内重复与标记的比较。如果找到匹配,则验证其是常规高速缓存行(即执行在第一个指令以外的某处开始)。注意,如果其是具有最低有效位为零的起始地址的跟踪行,则其不是和分支目标匹配的跟踪行,并且不能被使用。
从数据阵列访问高速缓存行。使用来自目标指令地址的最低L位来只选择数据阵列的目标分区。这以等于数据阵列分区大小(例如4个指令)的增量跳过了具有低于分支指令的地址的指令组。
以无效指令的指示(强制为NOP)覆盖分支目标指令左边的指令(在和分支目标相同的分区内)。然后将指令转发到执行流水线。如果没有找到匹配,则声明L1高速缓存中未命中,并从L2高速缓存读取目标地址。
然后建立新的跟踪行,选择匹配或最近最少使用的(LRU),并代替该被选择的行。
为了确保正确操作,当将一行(常规的或跟踪行)添加到高速缓存时,必须施行某些规则:
如果要添加的行中的第一个指令的地址与已经在高速缓存中的行的标记匹配,则为了添加新行必须去除匹配行。这确保标记将是唯一的。如果标记中没有匹配,则最近最少使用的行(如LRU或伪LRU所指示的)被新的行代替。
在附图和说明书中已经给出了本发明的优选实施例,虽然使用了特定术语,但是这样给出的描述仅以通用和描述性的意义而非为了限制的目的使用术语。
Claims (17)
1.一种装置,包含:
计算机系统中央处理器;和
可操作地耦合到所述中央处理器并可由其访问的分层存储器,所述分层存储器具有第一级高速缓存;
所述第一级高速缓存在可互换的位置中存储标准高速缓存行和跟踪行。
2.如权利要求1所述的装置,其中,所述第一级高速缓存具有用于数据存储的预定能力,而且其中,所述存储能力按每个高速缓存行存储的字节数量、每个同余类的链接数量以及同余类的数量分析数据。
3.如权利要求2所述的装置,其中,呈现给所述第一级高速缓存的指令地址被划分为对应于高速缓存行内的地址字节、到特定同余类中的索引、以及最高有效位的字段。
4.如权利要求2所述的装置,其中,存储在每一个高速缓存行中的数据被划分为从不同阵列抽取的多个段。
5.如权利要求1所述的装置,其中,所述第一级高速缓存包含标记阵列、数据阵列和控制逻辑,所述控制逻辑与所述标记阵列和数据阵列可操作地关联,并控制从标准高速缓存行和跟踪行的可互换位置的检索。
6.如权利要求5所述的装置,其中,所述控制逻辑执行呈现给所述第一级高速缓存的指令地址与所述标记阵列中的条目的连续比较,并在检索到的作为跟踪行的高速缓存行和检索到的作为标准高速缓存行的高速缓存行之间进行区分。
7.一种装置,包含:
计算机系统中央处理器和耦合到所述中央处理器并可由其访问的分层存储器,所述分层存储器包括第一级高速缓存;
和所述第一级高速缓存相关联的控制逻辑电路,所述控制逻辑电路控制在所述分层存储器的第一级高速缓存的可互换位置中选择性地存储标准高速缓存行和跟踪行;
所述控制逻辑电路对呈现给第一级高速缓存的指令地址进行划分;将指令地址索引到第一级高速缓存的标记阵列中;并且对指令地址和标记阵列进行第一次比较以便确定是否找到匹配;和
如果在第一次比较中找到匹配,则
确定匹配是否是跟踪行;
如果匹配是跟踪行,则检查跟踪地址,访问所要求的分区,并转发指令以便由中央处理器执行。
8.一种方法,包含:
将计算机系统中央处理器和可由所述中央处理器访问的分层存储器耦合在一起;和
在所述分层存储器的第一级高速缓存的可互换位置中选择性地存储标准高速缓存行和跟踪行。
9.如权利要求8所述的方法,其中,第一级高速缓存具有用于数据存储的预定能力,并且该方法还包含按每个高速缓存行存储的字节数量、每个同余类的链接数量以及同余类的数量分析移动到高速缓存和从高速缓存移来的数据。
10.如权利要求9所述的方法,还包含把呈现给第一级高速缓存的指令地址划分为对应于高速缓存行内的地址字节、到特定同余类中的索引,以及最高有效位的字段。
11.如权利要求9所述的方法,还包含把呈现给第一级高速缓存的指令地址划分为从不同阵列抽取的多个段。
12.如权利要求9所述的方法,其中,标准高速缓存行和跟踪行的选择性存储由与标记阵列和数据阵列相关联的控制逻辑控制。
13.一种程序化方法,包含:
将计算机系统中央处理器和可由所述中央处理器访问的分层存储器耦合在一起,该分层存储器包括第一级高速缓存;
在所述分层存储器的第一级高速缓存的可互换位置中选择性地存储标准高速缓存行和跟踪行;
划分呈现给第一级高速缓存的指令地址;
将指令地址索引到第一级高速缓存的标记阵列中;
将指令地址和标记阵列进行第一次比较以便确定是否找到匹配;和
如果在第一次比较中找到匹配,则
确定匹配是否是跟踪行;
如果匹配是跟踪行,则检查跟踪地址,访问所要求的分区,并转发指令以便由中央处理器执行。
14.如权利要求13所述的程序化方法,其中
如果在第一次比较中没有找到跟踪行,则
检查目标地址,访问所要求的分区,将前面的指令强制为NOP,并转发指令以便由中央处理器执行,然后
建立新跟踪行,选择要被代替的高速缓存行,并用新跟踪行代替被选择的高速缓存行。
15.如权利要求13所述的程序化方法,其中:
如果在第一次比较中没有找到匹配,则
屏蔽指令地址的最低有效位;和
将被屏蔽的指令地址与标记阵列进行第二次比较以便确定是否找到匹配;
如果在第二次比较中找到匹配;则
如果匹配是跟踪行,则声明第一级高速缓存未命中,并从高一级的高速缓存读取指令,转发指令以便由中央处理器执行,建立新跟踪行,选择要被代替的高速缓存行,并代替被选择的高速缓存行。
16.如权利要求15所述的程序化方法,其中:
如果在第二次比较中找到的匹配不是跟踪行,则检查跟踪地址,访问所要求的分区,将前面的指令强制为NOP,并转发指令以便由中央处理器执行;然后
建立新跟踪行,选择要被代替的高速缓存行,并用新跟踪行代替被选择的高速缓存行。
17.一种程序化方法,包含:
将计算机系统中央处理器和可由所述中央处理器访问的分层存储器耦合在一起,分层存储器包括高速缓存;
在所述分层存储器的高速缓存的可互换位置中选择性地存储标准高速缓存行和跟踪行;
划分呈现给高速缓存的指令地址;
将指令地址索引到高速缓存的标记阵列中;
将指令地址和标记阵列进行第一次比较以便确定是否找到匹配;
如果在第一次比较中找到匹配,则
确定匹配是否是跟踪行;
如果匹配是跟踪行,则检查跟踪地址,访问所要求的分区,并转发指令以便由中央处理器执行;
如果在第一次比较中没有找到跟踪行,则
检查目标地址,访问所要求的分区,将前面的指令强制为
NOP,并转发指令以便由中央处理器执行,然后
建立新跟踪行,选择要被代替的跟踪行并用新跟踪行代替
被选择的高速缓存行;
如果在第一次比较中没有找到匹配,则
屏蔽指令地址的最低有效位;和
将被屏蔽的指令地址与标记阵列进行第二次比较以便确定是否找到匹配;
如果在第二次比较中找到匹配;则
如果在第二次比较中找到的匹配是跟踪行,则声明高速缓存中未命中,并从高一级的存储器读取指令,转发指令以便由中央处理器执行,建立新跟踪行,选择要被代替的高速缓存行,并代替被选择的高速缓存行;
如果在第二次比较中找到的匹配不是跟踪行,则检查跟踪地址,访问所要求的分区,将前面的指令强制为NOP,并转发指令以便由中央处理器执行;然后
建立新跟踪行,选择要被代替的高速缓存行,并用新跟踪行代替被选择的高速缓存行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/538,445 US7644233B2 (en) | 2006-10-04 | 2006-10-04 | Apparatus and method for supporting simultaneous storage of trace and standard cache lines |
US11/538,445 | 2006-10-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101158925A true CN101158925A (zh) | 2008-04-09 |
CN101158925B CN101158925B (zh) | 2010-06-09 |
Family
ID=39275851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101367766A Expired - Fee Related CN101158925B (zh) | 2006-10-04 | 2007-07-27 | 用于支持跟踪和标准高速缓存行的同时存储的装置和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7644233B2 (zh) |
CN (1) | CN101158925B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102841777A (zh) * | 2011-06-17 | 2012-12-26 | 飞思卡尔半导体公司 | 数据处理器中的分支目标缓存器寻址 |
CN106155928A (zh) * | 2015-04-13 | 2016-11-23 | 上海芯豪微电子有限公司 | 一种存储层次预取系统和方法 |
CN106897246A (zh) * | 2015-12-17 | 2017-06-27 | 三星电子株式会社 | 处理器和方法 |
CN113785277A (zh) * | 2019-05-02 | 2021-12-10 | 微软技术许可有限责任公司 | 用于时间行程调试的基于协处理器的日志记录 |
CN114860785A (zh) * | 2022-07-08 | 2022-08-05 | 深圳云豹智能有限公司 | 缓存数据处理系统、方法、计算机设备和存储介质 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8386712B2 (en) * | 2006-10-04 | 2013-02-26 | International Business Machines Corporation | Structure for supporting simultaneous storage of trace and standard cache lines |
US7934081B2 (en) * | 2006-10-05 | 2011-04-26 | International Business Machines Corporation | Apparatus and method for using branch prediction heuristics for determination of trace formation readiness |
US20080250206A1 (en) * | 2006-10-05 | 2008-10-09 | Davis Gordon T | Structure for using branch prediction heuristics for determination of trace formation readiness |
JP2009020696A (ja) * | 2007-07-11 | 2009-01-29 | Toshiba Corp | 情報処理装置及びシステム |
US8041899B2 (en) * | 2008-07-29 | 2011-10-18 | Freescale Semiconductor, Inc. | System and method for fetching information to a cache module using a write back allocate algorithm |
US9804747B2 (en) * | 2008-09-30 | 2017-10-31 | Microsoft Technology Licensing, Llc | Techniques to manage access to organizational information of an entity |
GB2507759A (en) * | 2012-11-08 | 2014-05-14 | Ibm | Hierarchical cache with a first level data cache which can access a second level instruction cache or a third level unified cache |
GB2507758A (en) | 2012-11-08 | 2014-05-14 | Ibm | Cache hierarchy with first and second level instruction and data caches and a third level unified cache |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6167536A (en) | 1997-04-08 | 2000-12-26 | Advanced Micro Devices, Inc. | Trace cache for a microprocessor-based device |
US6185732B1 (en) | 1997-04-08 | 2001-02-06 | Advanced Micro Devices, Inc. | Software debug port for a microprocessor |
US6170038B1 (en) | 1997-10-23 | 2001-01-02 | Intel Corporation | Trace based instruction caching |
US6018786A (en) | 1997-10-23 | 2000-01-25 | Intel Corporation | Trace based instruction caching |
US6185675B1 (en) | 1997-10-24 | 2001-02-06 | Advanced Micro Devices, Inc. | Basic block oriented trace cache utilizing a basic block sequence buffer to indicate program order of cached basic blocks |
US6073213A (en) | 1997-12-01 | 2000-06-06 | Intel Corporation | Method and apparatus for caching trace segments with multiple entry points |
US6076144A (en) | 1997-12-01 | 2000-06-13 | Intel Corporation | Method and apparatus for identifying potential entry points into trace segments |
US6216206B1 (en) * | 1997-12-16 | 2001-04-10 | Intel Corporation | Trace victim cache |
US6014742A (en) | 1997-12-31 | 2000-01-11 | Intel Corporation | Trace branch prediction unit |
US6256727B1 (en) | 1998-05-12 | 2001-07-03 | International Business Machines Corporation | Method and system for fetching noncontiguous instructions in a single clock cycle |
US6105032A (en) | 1998-06-05 | 2000-08-15 | Ip-First, L.L.C. | Method for improved bit scan by locating a set bit within a nonzero data entity |
US6145123A (en) | 1998-07-01 | 2000-11-07 | Advanced Micro Devices, Inc. | Trace on/off with breakpoint register |
US6223339B1 (en) | 1998-09-08 | 2001-04-24 | Hewlett-Packard Company | System, method, and product for memory management in a dynamic translator |
US6223228B1 (en) | 1998-09-17 | 2001-04-24 | Bull Hn Information Systems Inc. | Apparatus for synchronizing multiple processors in a data processing system |
US6223338B1 (en) | 1998-09-30 | 2001-04-24 | International Business Machines Corporation | Method and system for software instruction level tracing in a data processing system |
US6339822B1 (en) | 1998-10-02 | 2002-01-15 | Advanced Micro Devices, Inc. | Using padded instructions in a block-oriented cache |
US6332189B1 (en) | 1998-10-16 | 2001-12-18 | Intel Corporation | Branch prediction architecture |
US6442674B1 (en) | 1998-12-30 | 2002-08-27 | Intel Corporation | Method and system for bypassing a fill buffer located along a first instruction path |
US6247097B1 (en) | 1999-01-22 | 2001-06-12 | International Business Machines Corporation | Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions |
US6418530B2 (en) | 1999-02-18 | 2002-07-09 | Hewlett-Packard Company | Hardware/software system for instruction profiling and trace selection using branch history information for branch predictions |
US6453411B1 (en) | 1999-02-18 | 2002-09-17 | Hewlett-Packard Company | System and method using a hardware embedded run-time optimizer |
US6327699B1 (en) | 1999-04-30 | 2001-12-04 | Microsoft Corporation | Whole program path profiling |
US6457119B1 (en) | 1999-07-23 | 2002-09-24 | Intel Corporation | Processor instruction pipeline with error detection scheme |
US6578138B1 (en) | 1999-12-30 | 2003-06-10 | Intel Corporation | System and method for unrolling loops in a trace cache |
US6792525B2 (en) | 2000-04-19 | 2004-09-14 | Hewlett-Packard Development Company, L.P. | Input replicator for interrupts in a simultaneous and redundantly threaded processor |
US6854075B2 (en) | 2000-04-19 | 2005-02-08 | Hewlett-Packard Development Company, L.P. | Simultaneous and redundantly threaded processor store instruction comparator |
US6823473B2 (en) | 2000-04-19 | 2004-11-23 | Hewlett-Packard Development Company, L.P. | Simultaneous and redundantly threaded processor uncached load address comparator and data value replication circuit |
US6854051B2 (en) | 2000-04-19 | 2005-02-08 | Hewlett-Packard Development Company, L.P. | Cycle count replication in a simultaneous and redundantly threaded processor |
US6598122B2 (en) | 2000-04-19 | 2003-07-22 | Hewlett-Packard Development Company, L.P. | Active load address buffer |
US6549987B1 (en) | 2000-11-16 | 2003-04-15 | Intel Corporation | Cache structure for storing variable length data |
US7062640B2 (en) * | 2000-12-14 | 2006-06-13 | Intel Corporation | Instruction segment filtering scheme |
US6877089B2 (en) | 2000-12-27 | 2005-04-05 | International Business Machines Corporation | Branch prediction apparatus and process for restoring replaced branch history for use in future branch predictions for an executing program |
US20020087831A1 (en) * | 2000-12-28 | 2002-07-04 | Samra Nicholas G. | Instruction packetization based on rename capacity |
US6807522B1 (en) | 2001-02-16 | 2004-10-19 | Unisys Corporation | Methods for predicting instruction execution efficiency in a proposed computer system |
US6804799B2 (en) * | 2001-06-26 | 2004-10-12 | Advanced Micro Devices, Inc. | Using type bits to track storage of ECC and predecode bits in a level two cache |
US6950903B2 (en) | 2001-06-28 | 2005-09-27 | Intel Corporation | Power reduction for processor front-end by caching decoded instructions |
US6964043B2 (en) | 2001-10-30 | 2005-11-08 | Intel Corporation | Method, apparatus, and system to optimize frequently executed code and to use compiler transformation and hardware support to handle infrequently executed code |
US6950924B2 (en) | 2002-01-02 | 2005-09-27 | Intel Corporation | Passing decoded instructions to both trace cache building engine and allocation module operating in trace cache or decoder reading state |
US7437512B2 (en) * | 2004-02-26 | 2008-10-14 | Marvell International Ltd. | Low power semi-trace instruction/trace hybrid cache with logic for indexing the trace cache under certain conditions |
US7475291B2 (en) * | 2005-03-31 | 2009-01-06 | International Business Machines Corporation | Apparatus and method to generate and save run time data |
US7395416B1 (en) * | 2006-09-12 | 2008-07-01 | International Business Machines Corporation | Computer processing system employing an instruction reorder buffer |
-
2006
- 2006-10-04 US US11/538,445 patent/US7644233B2/en not_active Expired - Fee Related
-
2007
- 2007-07-27 CN CN2007101367766A patent/CN101158925B/zh not_active Expired - Fee Related
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102841777A (zh) * | 2011-06-17 | 2012-12-26 | 飞思卡尔半导体公司 | 数据处理器中的分支目标缓存器寻址 |
CN102841777B (zh) * | 2011-06-17 | 2016-09-28 | 飞思卡尔半导体公司 | 数据处理器中的分支目标缓存器寻址 |
CN106155928A (zh) * | 2015-04-13 | 2016-11-23 | 上海芯豪微电子有限公司 | 一种存储层次预取系统和方法 |
CN106897246A (zh) * | 2015-12-17 | 2017-06-27 | 三星电子株式会社 | 处理器和方法 |
CN106897246B (zh) * | 2015-12-17 | 2021-06-29 | 三星电子株式会社 | 处理器和使用处理器处理数据的方法 |
CN113785277A (zh) * | 2019-05-02 | 2021-12-10 | 微软技术许可有限责任公司 | 用于时间行程调试的基于协处理器的日志记录 |
CN114860785A (zh) * | 2022-07-08 | 2022-08-05 | 深圳云豹智能有限公司 | 缓存数据处理系统、方法、计算机设备和存储介质 |
CN114860785B (zh) * | 2022-07-08 | 2022-09-06 | 深圳云豹智能有限公司 | 缓存数据处理系统、方法、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US7644233B2 (en) | 2010-01-05 |
US20080086596A1 (en) | 2008-04-10 |
CN101158925B (zh) | 2010-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101158925B (zh) | 用于支持跟踪和标准高速缓存行的同时存储的装置和方法 | |
JP6916751B2 (ja) | ハイブリッドメモリーモジュール及びその動作方法 | |
US7783837B2 (en) | System and storage medium for memory management | |
CN105701033B (zh) | 取决于模式而可动态配置的高速缓存存储器 | |
CN101228506B (zh) | 用于预测分支指令的方法和设备 | |
CN105701031B (zh) | 处理器及其高速缓存存储器和高速缓存存储器的操作方法 | |
US6782454B1 (en) | System and method for pre-fetching for pointer linked data structures | |
US20080114964A1 (en) | Apparatus and Method for Cache Maintenance | |
CN108463811A (zh) | 记录组指示符 | |
US20080250207A1 (en) | Design structure for cache maintenance | |
CN101449238A (zh) | 本地和全局分支预测信息存储 | |
CN101013401A (zh) | 用于预取数据线的方法和处理器 | |
CN102169429A (zh) | 预取单元、数据预取方法以及微处理器 | |
US7996618B2 (en) | Apparatus and method for using branch prediction heuristics for determination of trace formation readiness | |
CN102306093A (zh) | 实现现代处理器间接转移预测的装置及方法 | |
CN101826056A (zh) | 数据处理设备和方法 | |
CN101937331A (zh) | 自适应处理远程原子执行 | |
CN101013360A (zh) | 用于预取指令线的方法和处理器 | |
CN102236541A (zh) | 预加载指令控制 | |
KR101109210B1 (ko) | 데이터 액세스 위반을 검출하기 위한 방법 및 장치 | |
US6865649B2 (en) | Method and apparatus for pre-fetching data during program execution | |
CN101390047A (zh) | 数据处理系统和用于预取数据和/或指令的方法 | |
CN101158926B (zh) | 跟踪高速缓存中节省功率的装置和方法 | |
CN101419543B (zh) | 预测高速寄存器的存取位置的方法及系统 | |
US8386712B2 (en) | Structure for supporting simultaneous storage of trace and standard cache lines |
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: 20100609 |