CN105701033B - 取决于模式而可动态配置的高速缓存存储器 - Google Patents
取决于模式而可动态配置的高速缓存存储器 Download PDFInfo
- Publication number
- CN105701033B CN105701033B CN201510796862.4A CN201510796862A CN105701033B CN 105701033 B CN105701033 B CN 105701033B CN 201510796862 A CN201510796862 A CN 201510796862A CN 105701033 B CN105701033 B CN 105701033B
- Authority
- CN
- China
- Prior art keywords
- cache memory
- group
- label
- mode
- bit
- 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
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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- 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
-
- 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
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- 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
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- 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/601—Reconfiguration of cache memory
-
- 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/6032—Way prediction in set-associative cache
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
Abstract
一种高速缓存存储器存储了2^J字节的高速缓存线并且包含了2^N组的数组,每一组含有每个为X比特的多个卷标,一个输入端接收一个为Q比特的内存地址,内存地址[(Q‑1):0],其具有卷标内存地址[(Q‑1):(Q‑X)]以及索引内存地址[(Q‑X‑1):J]。Q是至少为(N+J+X‑1)的整数。在第一模式之下,组选取逻辑使用索引以及卷标的最低有效比特选取一个组,比较逻辑把卷标中除了最低有效比特之外的所有比特对照于所选取组中的每一卷标中除了最低有效比特之外的所有比特,并且若对照结果为匹配则标示为命中,若反之,则分配逻辑分配至所选取的组。在第二模式之下,组选取逻辑使用索引选取二个组,比较逻辑把卷标对照于所选取的二组中的每一个卷标,并且若对照结果为匹配则标示为命中,若反之,则分配至所选取的二组中的其中一组。
Description
技术领域
本发明是关于一种高速缓存存储器,特别是关于取决于模式而可动态配置以选择一或多个组的多模式组相联高速缓存存储器。
背景技术
现今的处理器被要求执行的程序是处理具有广泛不同特性的数据组(set)并且是以广泛而不同的方式来存取数据。数据组的特性以及存取模式影响着处理器的高速缓存存储器的执行效率。执行效率主要是依照命中比(hit ratio)来判断。
发明内容
本发明的一个目的在于提供一种高速缓存存储器,其用于存储2^J字节的高速缓存线,J为大于3的整数,所述高速缓存存储器包括:一数组,所述数组为2^N组且每一组具有多个卷标,每一卷标为X比特,其中N以及X都是大于5的整数;一输入端,所述输入端接收Q比特的内存地址,所述内存地址[(Q-1):0]具有:卷标内存地址[(Q-1):(Q-X)];以及一索引内存地址[(Q-X-1):J];其中,当操作在一第一模式之下:一组选取逻辑使用所述索引以及所述卷标的最低有效比特选取所述数组的其中一组;一比较逻辑将卷标中除了最低有效比特之外的所有比特对照于所选取的组中的每一卷标中除了最低有效比特之外的所有比特,并在对照结果为匹配时标示为命中;以及若对照结果为不匹配则分配逻辑分配至所选取的组;以及当操作在一第二模式之下:所述组选取逻辑使用所述索引选取数组的其中二组;所述比较逻辑将所述卷标对照于所选取的二组中的每一卷标,并在对照结果为匹配时标示为命中;以及若对照结果为不匹配则所述分配逻辑分配至所选取的二组的其中一组。
本发明的另一个目的在于提供一种高速缓存存储器的操作方法,用于存储2^J字节的高速缓存线,J是大于3的整数,所述高速缓存存储器具有2^N组的一数组,每一组具有多个卷标,每一卷标为X比特,N以及X都是大于5的整数,所述高速缓存存储器的操作方法包括:接收一Q比特内存地址[(Q-1):0],其包含:一卷标内存地址[(Q-1):(Q-X)];以及一索引内存地址[(Q-X-1):J];其中Q是至少为(N+J+X-1)的整数;以及当操作在一第一模式之下:使用所述索引以及所述卷标的最低有效比特选取所述数组的其中一组;将所述卷标除了最低有效比特之外的所有比特对照于所选取的一组中的每一卷标除了最低有效比特之外的所有比特并且在对照结果为匹配的时候标示为命中;以及在对照结果为不匹配的时候,分配至所选取的一组。
承上述,当操作在一第二模式之下:使用所述索引选取所述数组的其中二组;将所述卷标对照于所选取的二组中的每一卷标并且在对照结果为匹配的时候标示为命中;以及在对照结果为不匹配的时候,分配至所选取的二组的其中之一。
本发明的又一个目的在于提供一种处理器,其包括:一高速缓存存储器,用以存储2^J字节的高速缓存线,J为大于3的整数,所述高速缓存存储器包括:一数组,所述数组为2^N组且每一组具有多个卷标,每一卷标为X比特,其中N以及X都是大于5的整数;一输入端,所述输入端接收Q比特的内存地址,所述内存地址[(Q-1):0]具有:一卷标内存地址[(Q-1):(Q-X)];以及一索引内存地址[(Q-X-1):J];其中,当操作在一第一模式之下:一组选取逻辑使用所述索引以及所述卷标的最低有效比特选取所述数组的其中一组;一比较逻辑将卷标中除了最低有效比特之外的所有比特对照于所选取的组中的每一卷标中除了最低有效比特之外的所有比特,并在对照结果为匹配时标示为命中;以及若对照结果为不匹配则分配逻辑分配至所选取的组;以及当操作在一第二模式之下:所述组选取逻辑使用所述索引选取数组的其中二组;所述比较逻辑将所述卷标对照于所选取的二组中的每一卷标,并在对照结果为匹配时标示为命中;以及若对照结果为不匹配则所述分配逻辑分配至所选取的二组的其中一组。
附图说明
图1所示为高速缓存存储器的方块图。
图2所示为图1中的高速缓存存储器操作在一般模式之下的方块图。
图3所示为图1中的高速缓存存储器操作在一般模式之下的操作流程图。
图4所示为图1中的高速缓存存储器操作在大量模式之下的方块图
图5所示为图1中的高速缓存存储器102操作在大量模式之下的操作流程图。
图6所示为图1中的高速缓存存储器102操作被指示转换离开大量模式的操作流程图。
图7所示为图1中的高速缓存存储器102操作在少量模式下以做为直接映像高速缓存的方块图。
图8所示为图1中的高速缓存存储器102操作在少量直接映像模式之下的操作流程图。
图9所示为图1中的高速缓存存储器操作在少量模式之下以做为8路组相关高速缓存的方块图。
图10所示为图1中的高速缓存存储器102操作在少量8路模式之下的操作流程图。
图11所示为图1中的高速缓存存储器102更详细的方块图。
图12A以及图12B统称为图12,图12所示为所示为图11中的高速缓存存储器102的区域致能逻辑方块图。
图13所示为图11中的高速缓存存储器102的命中产生逻辑的方块图。
图14A所示为包含了一个具有图1中的高速缓存存储器102的处理器的系统的操作流程图。
图14B所示为包含了图1中的高速缓存存储器102的处理器的部件方块图。
图14C所示为包含了图1中的高速缓存存储器102的图14B中的处理器的操作流程图。
图15所示为包含了图1中的高速缓存存储器102的处理器的系统的操作流程图。
图16所示为高速缓存存储器的方块图。
图17所示为逻辑方块图,其是用来选取高速缓存存储器102根据图16中的卷标以及分配模式所分配至的路的子组的逻辑方块图。
图18所示为图16中的高速缓存存储器的操作流程图。
图19所示为包含了图16中的高速缓存存储器的处理器的系统的操作流程图。
图20所示为产生高速缓存存储器模式配置给程序以及程序时程的操作流程图。
图21所示为内存存取图表以及从此内存存取图表中萃取出的数据。
图22所示为程序的时程分析的操作流程图。
图23所示为用来给处理器可配置特性决定出一个较佳配置的蛮力(bruteforce)法的操作流程图。
图24所示为处理器的方块图。
主要组件标号说明
102 高速缓存存储器
104 内存地址
106、112 卷标
108 模式
114 索引
116 偏移
302、304、306、312、314 流程
502、504、506、512、514、516 流程
602、604 流程
802、804、806、808、812、814 流程
1002、1004、1006、1008、1012、1013、1014、1016 流程
1102A 卷标信道A
1104A 接口A
1102B 卷标信道B
1104B 接口B
1106-0 区域0
1106-1 区域1
1106-2 区域2
1106-3 区域3
1200 区域致能逻辑
1200A 接口A区域致能逻辑
1209 大量模式
104-A 内存地址
1204-0、1208-0、1204-1、1208-2 非门
1202-0、1202-1、1202-2、1202-3 或门
1206-0、1206-1、1206-2、1206-3 与门
1212-0A 接口A区域0致能提示
1212-1A 接口A区域1致能提示
1212-2A 接口A区域2致能提示
1212-3A 接口A区域3致能提示
1200B 接口B区域致能逻辑
1212-0B 接口B区域0致能提示
1212-1B 接口B区域1致能提示
1212-2B 接口B区域2致能提示
1212-3B 接口B区域3致能提示
1214-0、1214-1、1214-2、1214-3 或门
1216-0 区域0致能提示
1216-1 区域1致能提示
1216-2 区域2致能提示
1216-3 区域3致能提示
1300 命中产生逻辑
1301 组J路0分配
1303 组J路0重新分配
1304 比较器
1302 有效比特
1306 与门
1308-J0~1308-J15 组J路0~15命中
1314-J 组J命中
1308-K0~1308-K15 组K路0~15命中
1314-K 组J命中
1316 或门
1318 大量模式命中
1322 多任务器
1324 命中
1402、1404 流程
1412 时程辨识码
1414 时程侦测器
1416 模式更新单元
1418 来自于装置驱动程序的新模式信息
1422、1424、1426 流程
1502、1504 流程
1602 高速缓存存储器
1608 分配模式
1606、1612 卷标
1614 索引
1616 偏移
1702 逻辑
19、N 比特数
1736 多任务器
1732 组合逻辑
1738 多任务器1736所输出的N比特
1734 路的子组
1802、1804、1806、1808、1812、1814、1816 流程
1902、1904、1906 流程
3402、3404、3406 流程
3602、3604、3606、3608、3612、3614 流程
3702、3704、3706、3706、3712、3714、3716 流程
3900 处理器
3922 指令高速缓存
3923 指令译码器
3924 指令排程器以及发送器
3926 执行单元
3928 内存子系统
具体实施方式
现今的处理器被要求执行的程序是处理具有广泛不同特性的数据组(set)并且是以广泛而不同的方式来存取数据。数据组的特性以及存取模式影响着处理器的高速缓存存储器的执行效率。执行效率主要是依照命中比(hit ratio)来判断。
除了容量之外,高速缓存存储器的相联性会大幅影响其执行效率。高速缓存存储器的相联性指的是高速缓存存储器可以配置高速缓存线(cache line)的可能位置或是项目(entry),高速缓存线是依据存储器的地址而被配置。高速缓存线能够配置或是分配的可能位置越多,高速缓存存储器的相联性就越高。某些程序适合具有较高的相联性的高速缓存存储器而某些程序适合具有较低的相联性的高速缓存存储器。
以下的实施方式所叙述的高速缓存存储器可以在处理器的运作期间被动态地配置以将其相联性变更为高于其一般模式的相联性及/或变更为小于其一般的相联性。
请参阅图1,图1绘示了一个高速缓存存储器102。高速缓存存储器102从一个输入端接收了一个内存地址(memory address,MA)104而从另一个输入端接收了一个模式(mode)108。模式108具体指示了高速缓存存储器102是否要用在「一般」模式、「大量」模式或是「少量」模式下运作。所述的各种模式将于后面详细叙述。
内存地址104被分为三个部分,每一个部分具有多个比特(bit):卷标(tag)112、索引(index)114以及偏移(offset)116。偏移116指出移入选定的缓存线的一个偏移字节。卷标112以及索引114的用途将在后文中详细叙述。为了方便描述,图1中举例了一个大小为36个比特且将36个比特分为卷标112=MA[35:16]、索引114=MA[15:6]以及偏移116=MA[5:0]的内存地址104。然而,要特别注意的是,高速缓存存储器102的相联性的动态变更性,也就是在一般模式、大量模式以及少量模式之间的转换(transition),在高速缓存存储器被执行时高速缓存存储器可接收一个具有不同数量比特的内存地址104且在内存地址104的卷标112、索引114以及偏移116中可为不同数量的比特。偏移116中的比特数量具体指的是缓存线的大小(例如:64个字节),索引114则根据模式108而从高速缓存存储器102中选出一或两组,如后文所述。
高速缓存存储器102被设计为由多个路(way)以及多个组相乘。为了方便叙述,例如图1中所示的高速缓存存储器102具有2048个组以及16个路。然而,需要特别注意的是,在此描述的动态相联性变更性可在具有不同组数与不同路数的高速缓存存储器上执行。每一组/路的组合可识别出存储有缓存线的高速缓存存储器102的项目。每个项目包括用来存储缓存线数据的存储元(storage),也包括用来存储缓存线状态(例如:MESI状态)以及缓存线卷标106的存储元。卷标106以及缓存线所在组数的组合具体指出了缓存线的内存地址。在图1的实施例中,卷标106相当于内存地址104的卷标112的大小而为20比特。较佳的情况,高速缓存存储器102包括多个独立的存储器数组以存储缓存线数据、卷标106以及置换信息。
在以下更加详细的描述中,在大量模式的查找中索引114是用来选出高速缓存存储器102中的两个不同组,内存地址104的完整卷标112被用来与所选出的两个组的每一路的完整卷标106来对照以侦测是否命中。而索引114以及卷标112的最低有效比特(leastsignificant bit,LSB)在一般模式以及少量模式中被用来在高速缓存存储器102当中选出一个组,内存地址104的卷标112除了最低有效比特之外的比特都被用来与所选出组的每一路的卷标106除了最低有效比特之外的比特对照以侦测是否命中。当操作于大量模式的时候,这种做法把有效相联性加倍且把高速缓存存储器102的路数量减半。反过来说,当操作于少量模式的时候,基于卷标112的一个或多个较低比特,高速缓存存储器102将缓存线可被配置的路限制于所有路的子组(例如:由16而为8、为4、为2或为1),而有效相联性也减少了用来限制路的子组的卷标112的比特数量的二倍。为了从大量模式中转换出来,写回(writeback)与无效(invalidate)操作必须于某些缓存线执行,如后所述。然而,相较于为了让某些编码串流(code stream)操作于大量模式所能带来的好处,写回与无效操作所带来的坏处可以被容忍。转换至少量模式或从少量模式转换出来不需要写回与无效操作。
请参阅图2,图2所示为图1的高速缓存存储器102当操作于一般模式之下的方块图。更具体来说,输入的模式108具体指示一个指向于一般模式的值。在一般模式之下,高速缓存存储器102选取出一个单一的组,在藉由索引114所选取出的组中,把每一路的项目卷标106除了最低有效比特之外的所有比特与内存地址104的卷标112除了最低有效比特之外的所有比特做对照,若未命中则分配到所选取出的组的任一路之中,在后图3中有更加详细的描述。以图2为例子,在一般模式之下,高速缓存存储器102操作如一个2048组乘以16路的相联性高速缓存。
请参阅图3,图3所示为图1的高速缓存存储器102操作于一般模式之下的流程图。流程起始于方块302。
在方块302中,当输入的模式108指向一般模式的时候,高速缓存存储器102接收来自于处理核心的加载请求。加载请求包含内存地址104。流程接着进行至方块304。
在方块304中,高速缓存存储器102使用与索引114相连的卷标112的最低有效比特,以图1为例子来说的话就是MA[16:6],来选取出一个单一的组,如图3中的组J。流程接着进行至方块306。
在方块306中,以所选取出的组J的所有16路的每一项目来说,高速缓存存储器102把内存地址104的卷标112除了最低有效比特之外的所有比特对照于项目卷标106除了最低有效比特之外的所有比特。所述的对照也一并确认以检视该项目是否有效。流程接着进行至方块308。
在方块308中,高速缓存存储器102判断方块306所执行的对照是否产生有效的匹配。若判断结果为是,流程接着进行至方块312,若判断结果为否,则流程接着进行至方块314。
在方块312中,高速缓存存储器102指向于命中。流程结束于方块312。
在方块314中,高速缓存存储器102分配至所选取的组J的一个项目。在较佳的情况下,高速缓存存储器102分配至组J的一路中的一个项目,该项目是最久未存取(LRU)或是拟为最久未存取(Pseudo-LRU)的,然而也可以使用其它的置换算法,例如随机或循环式的。流程接着进行至方块314。
请参阅图4,图4所示为图1的高速缓存存储器102操作于大量模式之下的方块图。更具体来说,输入的模式108具体指示一个指向大量模式的值。在大量模式之下,高速缓存存储器102选取出两个组,把藉由索引114所选取出的组中的每一路的项目卷标106对照于内存地址104的卷标112,若未命中则分配至所选取的两个组的任一个的任一路之中,在后图5中有更加详细的描述。如此一来有效地把路的数量加倍并把高速缓存存储器102的组的数量减半。以图4为例子,在大量模式之下,高速缓存存储器102操作如一个1024组乘以32路的组相联性高速缓存。
请参阅图5,图5所示为图1的高速缓存存储器102操作在大量模式之下的流程图。流程始于方块502。
在方块502中,当输入的模式108指向大量模式的时候,高速缓存存储器102接收来自于处理核心的加载请求。加载请求包含一个内存地址104。流程接着进行至方块504。
在方块504中,高速缓存存储器102选取出两个组,如图5所示的组J以及组K。组J是用相连于卷标112的二进制的0所选出,以图1为例子来说的话就是相连于MA[15:6]的二进制的0。组K是用相连于卷标112的二进制的1所选出,以图1为例子来说的话就是相连于MA[15:6]的二进制的1。流程接着进行至方块506。
在方块506中,以被选取出的组K以及组J的所有32路的每一项目来说,高速缓存存储器102把内存地址104的卷标112对照于项目卷标106。所述的对照一并确认以检视该项目是否有效。流程接着进行至判断方块508。
在判断方块508中,高速缓存存储器102判断是否方块506所执行的对照产生有效的匹配。若判断结果为是,流程接着进行至方块512,否若判断结果为否,则流程接着进行至方块514。
在方块512中,高速缓存存储器102指向于命中。流程结束于方块512。
在方块514中,高速缓存存储器102由组J以及组K中选取出一个来做为一个置换组。在一个实施例中,高速缓存存储器102基于内存地址104的被选取比特的散列(hash)至一个单一比特来选取出置换组以至于若所述的散列产生的是二进制的0则选出组J且若所述的散列产生的是二进制的1则选出组K,一般用以在伪随机方式(pseudo-randomfashion)选取置换组。在其它实施例中,高速缓存存储器102使用每一个组所储存的置换信息中的额外一个或是更多的比特选取出的置换组,该置换信息是除了例如用来选取组的最久未存取(LRU)的路的储存信息。举例来说,一个额外的比特可指出组J或组K曾是最久未存取(LRU)的。流程接着进行至方块516。
在方块516中,高速缓存存储器102分配到置换组的一个项目。在较佳的情况下,高速缓存存储器根据最久未存取(LRU)或是拟为最久未存取(pseudo-LRU)的配置方案来102分配到置换组的一个项目,然而也可以是运用其它的置换算法,例如随机或循环式。流程结束于方块516。
请参阅图6,图6所示为图1的高速缓存存储器102被指示由大量模式之中转换出来的操作流程图。流程起始于方块602。
在方块602中,高速缓存存储器102被指示由大量模式之中转换出来,例如,模式108从大量模式中转换到一般模式或是少量模式。流程接着进行至方块604。
在方块604中,高速缓存存储器102通过搜寻高速缓存存储器102的每个组(亦即:每个组数),以及组中的每个项目,把卷标106的最低有效比特与组数的最高有效比特做对照。若对照后发现未匹配,则高速缓存存储器102将该项目无效。然而,在无效该项目之前,若缓存线的状态为脏(dirty),也就是被更改过,则高速缓存存储器102把缓存线的资料写回至内存。上述做法是为了维持高速缓存存储器102的一致性。流程结束于方块604。
运行在大量模式下的潜在风险是可能比运行在非大量模式下要消耗更多的电力,因为必须比较两组的卷标。然而,某些用户在某些系统中愿意以更多的电力消耗来换取更好的缓存效能。除此之外,在多核心处理器中,若核心未全数运行,则多余的卷标数组存取(例如:在图11实施例中的区域(bank)存取)是可被接受的,因为高速缓存存储器102可以是被设计为支持全核心存取高速缓存存储器102的需求。
请参阅图7,图7所示为图1的高速缓存存储器102用于操作在少量模式之下来做为直接映像(direct-mapped)高速缓存的方块图。更具体来说,输入的模式108具体指出一个指向于少量直接映像模式的值。在少量模式之下,高速缓存存储器102选取一个单一的组,把藉由索引114所选取出的组中的每一路的项目卷标106除了最低有效比特之外的所有比特对照于内存地址104的卷标112除了最低有效比特之外的所有比特,类似于一般模式,然而,在少量直接映像模式之下,若未命中则高速缓存存储器102分配至所选取组的唯一一路。此一路是通过内存地址104中被预先决定的比特来指定。在较佳的情况下,被预先决定的比特是卷标112的下一个最低有效的log2N个比特,N是高速缓存存储器102的路数。也就是说,被预先决定的比特是卷标112中除了最低有效比特外最低有效的log2N个比特,以图1为例子的话就是MA[20:17],后图8会有更详细的叙述。在图7的例子中,在少量直接映像模式之下,高速缓存存储器102操作如同一个32768组的直接映像高速缓存。
请参阅图8,图8所示为图1的高速缓存存储器102用以操作在少量直接映像模式下的流程图。流程起始于方块802。
在方块802中,当输入的模式108指向于少量直接映像模式的时候,高速缓存存储器102接收来自于处理核心的加载请求。加载请求包含了一个内存地址104。流程接着进行至方块804。
在方块804中,高速缓存存储器102使用相连于索引114的卷标112的最低有效比特,以图1为例子的话就是MA[16:6],选取出一个单一的组,如图8的组J。流程接着进行至方块806。
在方块806中,对所选取的组J的全部16路的每个项目,高速缓存存储器102把内存地址104的卷标112除了最低有效比特之外的所有比特对照于项目卷标106除了最低有效比特之外的所有比特。所述的对照操作一并确认以检视项目是否为有效。流程接着进行至方块808。
在方块808中,高速缓存存储器102判断在方块806中所执行的对照操作结果是否为有效匹配。若判断结果为是,流程接着进行至方块812,若判断结果为否,则流程接着进行至814。
在方块812中,高速缓存存储器102指向于命中。流程结束于方块812。
在方块814中,高速缓存存储器102分配至路的项目,此路是通过所选取的组J的内存地址MA[20:17]来选定。以这种方式,当用在少量映像模式之下,高速缓存存储器102操作如一个直接映像高速缓存。流程结束于方块814。
如前面所提到的,有好处的是,转换入或是从少量模式转换出并不需要写回以及无效操作。然而,需要注意的是,在转换后可能会有短时间的比特置换(例如:最久未存取(LRU)或是拟为最久未存取(Pseudo-LRU)的比特)的小缺点。举例来说,当从少量模式转换到一般模式的时候,置换的比特或许不会有预期中的一般模式最久未存取的值。
请参阅图9,图9所示为图1的高速缓存存储器102用以在少量下模式之下操作如一个8路组相联的高速缓存的方块图。更具体来说,输入的模式108具体指出一个指向于少量8路模式的值。在少量8路模式之下,高速缓存存储器102选取一个单一个组,把通过索引114而选取出的组中每一路的项目卷标106除了最低有效比特以外的所有比特对照于内存地址104的卷标112除了最低有效比特以外的所有比特,就类似于一般模式,然而,在少量8路模式之下,在未命中时高速缓存存储器102分配至所选取的组的16路中的任一个子组(subset)。所述的子组是通过内存地址104中被预先决定的比特而被指定为所选取组的8个奇数的路或是所选取组的8个偶数的路。在一个实施例中,被决定的比特是卷标112的下一个最低有效比特。也就是说,被决定的比特是卷标112除了最低有效比特以外最低有效的,以图1的实施例来说就是相当于内存地址MA[17],在后图10会有更详细的叙述。在其它的实施例中,被预先决定的比特是用其它的方式来产生。举例来说,被预先决定的比特可以是通过卷标112中多数个比特的布尔(Boolean)逻辑闸中的互斥闸(XOR)来产生(在较佳的情况下排除了用来选取出组的卷标112的比特,例如:内存地址MA[16])。这样子的做法特别有助于在高速缓存线不正常别名化(pathologically aliasing)至同样的组,如后面所述。互斥闸外的其它函数也可被用来将卷标112的多个比特凝聚成一个单一比特。在图9的例子中,高速缓存存储器102在少量8路模式之下操作如一个4096组乘以8路的组相联高速缓存。
请参阅图10,图10所示为图1的高速缓存存储器102用以操作在少量8路模式之下的流程图。流程起始于方块1002。
在方块1002中,当输入的模式108指向于少量8路模式的时候,高速缓存存储器102接收来自于处理核心的加载请求。加载请求包含一个内存地址104。流程接着进行至方块1004。
在方块1004中,高速缓存存储器102使用相连于索引114的卷标112的最低有效比特,以图1为例子来说就是内存地址MA[16:6],选取出一个单一的组,如图10中的组J。流程接着进行至方块1006。
在方块1006中,高速缓存存储器102对所选取的组J的全部16路中的每个项目,把内存地址104的卷标112除了最低有效比特之外的所有比特对照于项目卷标106除了最低有效比特之外的所有比特。所述的对照一并确认以检视该项目是否有效。流程接着进行至方块1008。
在方块1008中,高速缓存存储器102判断在方块1006中所执行的对照结果是否是有效的匹配。若判断结果为是,流程接着进行至方块1012,若判断结果为否,则流程接着进行至方块1013。
在方块1012中,高速缓存存储器102指向于命中。流程结束于方块1012。
在方块1013中,高速缓存存储器102检查内存地址中的比特MA[17]。若比特MA[17]是二进制的1,流程接着进行至方块1016,否则,若比特MA[17]是二进制的0,则流程接着进行至方块1014。如图9所描述的,在其它实施例中,在判断方块1013中检查的比特是卷标112中不同于比特MA[17]的比特(亦即:卷标112的下一个最低有效比特),或是通过卷标112的多个比特的函数来产生。
在方块1014中,高速缓存存储器102分配至所选取组中的任一偶数路的一个项目。在较佳的情况下,高速缓存存储器102是根据一个最久未存取(LRU)或是拟为最久未存取(Pseudo-LRU)的置换方案来分配至所选取的偶数路的一个项目,但也可使用其它的置换算法,例如随机的或是循环式的。流程结束于方块1014。
在方块1016中,高速缓存存储器102分配至所选取组的任一个奇数路的一个项目。在较佳的情况下,高速缓存存储器102根据最久未存取(LRU)或是拟为最久未存取(Pseudo-LRU)的置换方案来分配至所选取的奇数路的一个项目,但也可使用其它的置换算法,例如随机的或是循环式的。流程结束于方块1016。
需要注意的是,虽然已经叙述了两个少量模式的实施例,例如:少量直接映像模式以及少量8路模式,这都是用来描述少量模式,但并不用以限制于这两个实施例。关于图1所描述的实施例,举例来说,一个少量4路模式也可被配置,其中的内存地址MA[18:17]可被用来选择4个路中的4个子组,每个子组可以用来做置换,且一个少量2路模式也可被配置,其中的内存地址MA[19:17]可被用来选择2个路中的8个子组,每个子组可以用来做置换。在其它实施例中,如前面所提到的,卷标112的其它比特也可以被用来选取路的子组以置换,而这些比特可被输入至一个函数(例如:互斥闸)以产生用来选取用以置换的路的子组的比特。
少量模式可以替某些不善于利用最久未存取(LRU)或是拟为最久未存取(Pseudo-LRU)的置换措施的不正常程序带来好处。举例来说,假设这个程序正运行通过内存且具有不正常的别名化效应以至于请求加载时在高速缓存存储器102中经常未命中且驱走程序所需要的真正的下一正常线。然而,当高速缓存存储器102的有效相联性由于转换至少量模式而减少,可以避免上述的问题。
举例来说,所述的程序可能在存取内存中的大量数据结构,高速缓存存储器102的组当中较低的一半别名化至当中较高的一半。然而,较低的一半跟较高的一半具有不同的使用模式而使得最久未存取置换无效。通过少量8路模式而减少高速缓存存储器102的有效相联性,高速缓存存储器102内的一半的数据结构被有效地与另外一半分隔。这种不正常类型的例子可以用程序的脱机分析来判断,而用来对高速缓存存储器102做重新配置,如后图14A-14C中所叙述。
以另一个例子来说,假设所述的程序存取两个数据组,因为除了在卷标112的更高位比特有所不同之外,两者是同一个地址,因而别名化至高速缓存存储器102的同个组。在这个例子中,把一个资料组的置换措施与另外一个分隔开来可能会带来好处。而这可以通过使用卷标112的比特来达成,所述的卷标112的比特相当于所述的两个数据组不同的卷标112的更高位比特,并使用所述更高位比特产生用来限制要被选取的组的子组以供置换的比特。这种做法是可以被达成的,举例来说,使用如图15所述的方法,通过重复选定卷标112的地址一直到达成增加高速缓存存储器102的效率,或者是如图14A-14C中所述藉由程序的脱机分析来达成。
请参阅图11,图11所示为图1的高速缓存存储器102更详细实施例的方块图。特别的是,图11的实施例是一个双接口(dual-ported)的区域高速缓存存储器102。高速缓存存储器102包含4个区域1106,标示为区域0 1106-0,区域1 1106-1,区域2 1106-2以及区域31106-3。每个区域1106具有可储存四分之一的高速缓存存储器102的组的容量,也就是512组。在图11的实施例中,区域0 1106-0具有始于0且4个一数的组,区域1 1106-1具有始于1且4个一数的组,区域2 1106-2具有始于2且4个一数的组,区域3 1106-3具有始于3且4个一数的组,如图所示。
高速缓存存储器102还包含两个接口1104,标示为接口A 1104A以及接口B 1104-B。每个接口1104耦接于每个区域1106。每个接口1104接收输入的模式108。
高速缓存存储器102还包含两个卷标信道1102,标示为卷标信道A 1102A以及卷标信道B 1102B。卷标信道A 1102A通过接口A 1104A来存取区域1106,而卷标信道B 1102B通过接口B 1104B来存取区域1106。每个卷标信道1102接收模式108以做为输入。区域1106的选取或是致能以在不同模式之下选组的详细叙述于图12,高速缓存存储器102在不同模式之下的命中产生则详细描述于图13。在较佳的情况下,卷标信道1102包含已描述于此的多个实施例的执行选一组(或是在大量模式之下选两组)的选取逻辑(图未示);已描述于此的多个实施例的把内存地址的特定比特对照于储存在数组中的卷标的特定比特的对照逻辑(图未示);以及已描述于此的多个实施例的分配至数组的分配逻辑(图未示)。除此之外,在较佳的情况下,卷标信道1102包含对卷标比特执行函数的逻辑,卷标比特是通过图16-19的实施例的分配模式输入而被指定。在较佳的情况下,卷标信道1102包含多数个阶,每个阶执行不同的操作以实现不同实施例在此描述的选组、卷标比较、路分配以及路子组判断。
只要不选择同一个区域1106的话,接口A 1104A以及接口B 1104B可以被同时动作。这么一来从四个单接口的区域1106有效提供了一个双接口的高速缓存存储器102。在较佳的情况下,高速缓存存储器102的判断逻辑会试图从存取了非冲突区域1106的两个卷标信道1102来选取判断请求,特别是当高速缓存存储器102处在大量模式之下的时候。
请参阅图12A以及12B,图12所示为图11的高速换存存储器102的区域致能逻辑1200。请参阅图12A,区域致能逻辑1200包含区域致能逻辑单元1200A,其从卷标信道A1102A接收一个大量模式提示1209以及一个内存地址MA 104-A且对应产生区域致能提示(ENxA,x表示为区域号码)1212-xA给接口A 1104A。在高速缓存存储器102操作于大量模式之下的时候,大量模式提示1209的值为真,反之则为否,其是由接收了模式提示108的逻辑单元(图未示)所产生。区域致能逻辑1200还包含了区域致能逻辑单元1200B,其从卷标信道B 1102B接收一个大量模式提示1209以及一个内存地址MA 104-B且对应产生区域致能提示(ENxB,x表示为区域号码)1212-xB给接口B 1104B。接口A的区域致能逻辑单元1200A以及接口B的区域致能逻辑单元1200B除了输入以及输出之外,已详细描述如上。
区域致能逻辑单元1200A包含了接收内存地址MA[7]104-A的第一非门1204-0、接收内存地址MA[6]104-A的的第二非门1208-0、接收非门1204-0的输出以及大量模式指示1209的第一或门1202-0以及接收第一或门1202-0以及第二非门1208-0的输出以产生区域致能提示EN0A 1212-0A的第一与门1206-0,区域致能提示EN0A 1212-0A用来给接口A1104A致能区域0 1106-0。
区域致能逻辑单元1200A还包含了接收内存地址MA[7]104-A的第三非门1204-1、接收了第三非门1204-0的输出以及大量模式提示1209的第二或门1202-1以及接收了第二或门1202-1的输出以及内存地址MA[6]104-A以产生区域致能提示EN1A 1212-1A的第二与门1206-1,区域致能提示EN1A 1212-1A用来给接口A 1104A致能区域1 1106-1。
区域致能逻辑单元1200A还包含了接收内存地址MA[6]104-A的第四非门1208-2、接收内存地址MA[7]104-A以及大量模式提示1209的第三或门1202-2以及接收了第三或门1202-2以及第四非门1208-2的输出以产生区域致能提示EN2A 1212-2A的第三与门1206-2,区域致能提示EN2A 1212-2A用来给接口A 1104A致能区域2 1106-2。
区域致能逻辑单元1200A还包含了接收内存地址MA[7]104-A以及大量模式提示1209的第四或门1202-3以及接收了第四或门1202-3的输出以及内存地址MA[6]104-A以产生区域致能提示EN3A 1212-3A的第四与门1206-3,区域致能提示EN3A 1212-3A用来给接口A 1104A致能区域3 1106-3。
请参阅图12B,区域致能逻辑1200包含了第一或门1214-0,其接收来自于接口A的区域致能逻辑单元1200A的区域致能提示EN0A 1212-0A以及来自于接口B的区域致能逻辑单元1200B的区域致能提示EN0B 1212-0B以产生区域致能提示EN0 1216-0,区域致能提示EN0 1216-0提供至区域0 1106-0。区域致能逻辑1200还包含了第二或门1214-1,其接收来自于接口A的区域致能逻辑单元1200A的区域致能提示EN1A 1212-1A以及来自于接口B的区域致能逻辑单元1200B的区域致能提示EN1B 1212-1B以产生区域致能提示EN1 1216-1,区域致能提示EN1 1216-1提供至区域1 1106-1。区域致能逻辑1200还包含了第三或门1214-2,其接收来自于接口A的区域致能逻辑单元1200A的区域致能提示EN2A 1212-2A以及来自于接口B的区域致能逻辑单元1200B的区域致能提示EN2B 1212-2B以产生区域致能提示EN21216-2,区域致能提示EN2 1216-2提供至区域2 1106-2。区域致能逻辑1200还包含了第四或门1214-3,其接收来自于接口A的区域致能逻辑单元1200A的区域致能提示EN3A 1212-3A以及来自于接口B的区域致能逻辑单元1200B的区域致能提示EN3B 1212-3B以产生区域致能提示EN3 1216-3,区域致能提示EN3 1216-3提供至区域3 1106-3。
请参阅图13,图13所示为图11的高速缓存存储器102的命中产生逻辑1300。所示的存储单元存有图1的高速缓存存储器102的项目卷标106。在图13的实施例中,存储单元存了一个20比特的卷标106。所示的另一个存储单元接收接口的有效指示1302。卷标106的存储单元接收内存地址MA[35:16]104,而且当分配讯号1301为真的时候,内存地址MA[35:16]104的值会被写入至卷标106而且有效指示1302会被更新以用来指示项目为有效。反之,当移除分配讯号1303为真的时候,有效指示1302会被更新以用来指示项目为无效。如图13所示,分配讯号1301以及移除分配讯号1303专属于特定的组以及路,即图13中的组J以及路0。然而,需要注意的是,在高速缓存存储器102的每一组以及路中皆有分配讯号1301以及移除分配讯号1303。
命中产生逻辑1300包含了比较器1304,其接收卷标106以及内存地址MA[35:16]104。比较器1304也接收了图12中的大量模式指示1209。当大量模式指示1209为真,比较器1304把卷标106的全部20比特对照于内存地址MA[35:16]而产生输出指示匹配是否发生,例如图5中的方块506。然而,当大量模式指示1209为假,比较器1304只把卷标106较高的19比特对照于内存地址MA[35:17]而产生输出,分别是例如图3中的方块306、图8中的方块806以及图10中的方块1006。与门1306接收比较器1304的输出以及有效比特1302而产生组J路0的命中讯号1308-J0用来指向于是否有命中发生在组J路0。如图13所示,组J路0的命中讯号1308-J0专属于特定的组以及路,然而,需要注意的是,在高速缓存存储器102的每一组以及路中皆有组路的命中讯号1308。
命中产生逻辑1300还包含了第一或门1312-J,其接收组J路x的命中讯号1308-Jx用于组J的每一路,x表示为路的号码,也就是用于16个不同的路,其在图13中标示为0到15。或门1312-J产生组J的命中讯号1314-J。
命中产生逻辑1300还包含了第二或门1312-K,其接收组K路x的命中讯号1308-Kx用于组K的16路的每一路。组K在大量模式中是第二个被选取的组,例如:根据图5中的方块504,组是通过1:MA[15:6]而选出。或门1312-K产生组K的命中讯号1314-K。
命中产生逻辑1300还包含了或门1316,其接收组J命中讯号1314-J以及组K的命中讯号1314-K以产生大量模式命中讯号1318。命中产生逻辑1300还包含了多任务器1322,其接收组J的命中讯号1314-J以及大量模式命中讯号1318,若大量模式命中讯号1209为假则选择命中讯号1314-J反之若命中讯号1209为真则选择命中讯号1318以做为输出命中讯号1324,命中讯号1324指出高速缓存存储器102是否有命中发生,分别是例如图3中的方块312、图5中的方块512、图8中的方块812以及图10中的方块1012。
请参阅图14,图14所示为系统的操作流程图,此系统中的处理器包含了图1中的高速缓存存储器102。流程起始于方块1402。
在方块1402中,系统侦测运行中的新的进程或是程序。在其中一个实施例中,运行在处理器100上的系统软件侦测此新的进程,例如:装置的驱动程序监测运行中的系统进程表。系统软件可提供信息至处理器而该信息可被处理器用来侦测程序进入的每个不同时程,例如后图14B所描述的,且系统软件可具体指出每个时程的不同模式。依据指令,处理器更新模式108且若初始时程标识符存在的话,将初始时程标识符(图14中的组件1412)加载至时程侦测器(图14B中的组件1414)。在其中一个实施例中,处理器本身侦测新的进程,例如:处理器侦测进程前后标识符(process context identifier,PCID)中的变换,例如:有一个新的值被加载到x86指令组结构CR3寄存器的PCID。在一个实施例中,处理器侦测目前运行中的程序转换至新的时程而不是程序的变换。流程接着进行至方块1404。
在方块1404中,高速缓存存储器102被转换,例如:经由模式指示108,转换至预先决定的新模式以做为程序或是时程的最佳执行模式,基于方块1402所侦测的进程脱机分析。在一个实施例中,处理器的微指令(microcode)改变高速缓存存储器102的模式108。若高速缓存存储器102转换离开大量模式,所有的内存操作都会停止,并进行如图6中所描述的操作,接着内存操作将恢复。在一个实施例中,当系统软件侦测到新的进程运行(方块1402),系统软件会提供新的模式。在一个实施例中,处理器100从内存(例如:处理器100的局部封闭内存(local private memory)或系统内存)取用新的模式以响应于侦测PCID的变换或是程序时程转换,在较佳的情况下,处理器100从使用PCID或是时程标识符从一列表中来识别新的模式。模式的信息可包含不同的模式以用于程序的不同时程而且是经由脱机分析来决定。流程结束于方块1404。
请参照图14B,图14所示为包含了如图1中高速缓存存储器102的处理器的部件方块图。处理器包含了图1的高速缓存存储器102。处理器包含了时程侦测器1414,其侦测已经进入新时程的运行中的程序。时程侦测器1414基于时程辨识码1412而做出上述的侦测,例如经由如图14A所描述的装置驱动程序。时程辨识码1412可包含程序指令的指令指示器(或是程序计数器)值。所述的指令可以是一个子程序调用指令,在这种情况下时程辨识码1412还可包含调用指令的目标指令的指令指示器值。更进一步来说,时程辨识码1412还可包含一或多个调用指令的参数值,例如:返回地址、寄存器值及/或堆栈值。时程侦测器的其中一个例子,如公元2013年10月10日申请的美国专利申请号14/050,687以及14/050,757所教示的指纹感测单元,其所有功效都可在此达成。处理器还包含了模式更新单元1416,其被时程侦测器1414通知有一个新的时程已被侦测且接收新时程的标识符。模式更新单元1416还接收模式信息,例如:来自于如图14A所述的装置驱动程序。模式更新单元1416更新高速缓存存储器102中的模式108,如图14C中所描述的。在一个实施例中,模式更新单元1416包含了涉及于时程侦测器1414的处理器的微指令。在另一个实施例中,模式更新单元1416包含了状态机,其从时程侦测器1414接收其侦测了一个新的时程的一个指示以及新时程的标识符。时程分析会在后图22有更详细的描述。
请参阅图14C,图14C所示为图14B中的处理器操作流程图,处理器包含了图1的高速缓存存储器102。流程起始于方块1422。
在方块1422中,图14B中的时程侦测器1414侦测运行中的程序已经进入新的时程。响应于侦测到的新时程,时程侦测器1414通知图14B中的模式更新单元1416。流程接着进行至方块1424。
在方块1424中,模式更新单元1416在模式信息1418(例如:从图14A的方块1404中装置驱动程序所接收到的信息)当中查询从时程侦测器1414所接收到的新时程的标识符并且以查询到的模式来更新高速缓存存储器102的模式108。除此之外,在必要时,模式更新单元1416以新时程标识符1412来更新时程侦测器1414。在一个实施例中,下一个要被查询的时程取决于目前的时程,因此,下一个要被加载到时程侦测器1414的时程标识符1412会取决于目前的时程而有所不同。流程接着进行至方块1426。
在方块1426中,处理器执行运行中的程序并且产生内存存取指令给高速缓存存储器102,接着高速缓存存储器102就会根据如方块1424中更新后的模式108来操作。流程结束于方块1426。
请参照图15,图15所示为包含了图1的高速缓存存储器102的处理器的系统操作流程图。流程起始于方块1502。
在方块1502中,处理器侦测高速缓存存储器102在目前的模式之下无效率地执行中。举例来说,执行计数器指出高速缓存存储器102目前的未命中率超过了临界值。流程接着进行至方块1504。
在方块1504中,高速缓存存储器102转换至一个不同于目前模式的新模式。在其中一个实施例中,处理器的微指令改变了高速缓存存储器102的模式108。若是高速缓存存储器102从大量模式中转换出来,所有的内存操作都会停止,进行如图6所述的操作,接着内存操作会恢复。在较佳的情况下,处理器(例如:微指令)持续追踪高速缓存存储器102模式的这种自动变化以避免模式被反复推移,例如在程序及/或数据组不论任何模式皆为高未命中率的情况。在一个实施例中,所有的模式(正常、大量、不同的各种少量模式)若有需要都会被使用。在其它实施例中,这些模式的子组会被使用。例如:因为在一般模式以及任何一个少量模式之间或是在其中一个少量模式以及另外的少量模式之间没有与转换有关联的写回-无效损失,子组可以被限制在除了大量模式之外的这些模式当中。不同的少量模式应该被理解是包含了不只有被限制在关于路的子组进入的高速缓存线如何分配的不同少量模式,还包含了更改卷标的一个或多个比特来选择以限制子组的不同少量模式,例如图9所有少量8路模式中的内存地址MA[17]、互斥或门XOR(内存地址MA[26]、MA[23]或MA[22]。流程结束于方块1504。
请参阅图16,图16所示为高速缓存存储器1602的方块图。高速缓存存储器1602类似于图1的高速缓存存储器102。图16中的高速缓存存储器1602的好处在于当其操作在不同分配模式的时候可以动态配置,具体是由分配模式输入1608来被指定。分配模式1608选择了内存地址104的卷标的一或多个比特的不同函数而判断出经由内存地址104的索引选取出高速缓存存储器1602会分配进入的组的路的一个子组,后面将做更详细的描述。
跟图1的实施例类似,图16的实施例中,内存地址104区分为三个部分,卷标1612、索引1614以及偏移1616,但使用的比特有些许不同。为了描述上的方便,举例一个内存地址104,其如图16所示大小有36比特且区分为卷标1612=MA[35:17],索引1614=MA[16:6]以及偏移1616=MA[5:0]。然而,需要注意的是,基于地址卷标比特的动态路选择的实施例可被执行于高速缓存存储器,其接收的内存地址104具有不同比特数且其卷标1612、索引1614以及偏移1616区分成不同比特数。图1以及图6所示例子的其它不同之处在于存储于图16的高速缓存存储器1602的项目中的卷标1606有19比特。
请参阅图17,图17所示为逻辑1702的方块图,其基于如图16所示的卷标1612以及分配模式1608选取高速缓存存储器102分配至的路的子组。逻辑1702包含了多任务器1736,其接收卷标1612的比特(例如19比特)并且选取一或多个卷标1612的比特,图17中标示为N比特1738,N是1或更多,取决于分配模式1608。逻辑1702还包含了组合逻辑1732,其根据分配模式1608来从多个函数中选出一个,接着对多任务器1736所输出的N比特1738执行所选取的函数以产生一个向量,其指向于高速缓存存储器102的分配逻辑分配至的路的子组1734,如后图18所述。
选取出的卷标1612的比特以及执行于所选取出的N比特1738的函数例子如下。举一个例子来说,子组是经由内存地址104中事先决定的一个比特而指定选取组的8奇数路或是选取组的8偶数路。在一个例子当中,事先决定的比特是卷标1612的最低有效比特。在其它的例子当中,事先决定的比特是经由其它的方法来产生。举例来说,事先决定的比特可以是由卷标1612的多个比特的布尔逻辑的互斥闸(XOR)来产生。如前面所叙述的,在高速缓存线不正常的别名化至同个组的时候,这可以带来好处。除了互斥闸之外的函数也可以被用来将卷标112的多个比特汇集成一个单一比特,例如布尔逻辑的或门、与门、非门或是其之间的不同组合。举第二个例子,卷标1612的二或更多比特被轮转分配模式1608指定的比特以限制高速缓存线可分配到全部路的一个子组,例如:从16到4,16到2或16到1,在这些情况下N比特1738分别是2,3或4。除此之外,在N比特1738是2,3或4的情况下,每一个N比特1738可以各自经由卷标1612中相同的或是不同的比特的布尔函数来产生。虽然指出了如上所述的多个实施例,需要注意的是,其它的实施例也可以用来计算由多任务器1736选取的卷标1612的数量以及特定的比特,而其它实施例也可以用来计算执行于所选取的N比特1738来选取路1734的子组的特定函数1732。
请参阅图18,图18所示为图16中的高速缓存存储器1602的操作流程图。流程起始于方块1802。
在方块1802中,当分配模式1608指向于目前的分配模式,高速缓存存储器1602接收来自于处理核心的加载请求。加载请求包含图16的内存地址104。流程接着进行至方块1804。
在方块1804中,高速缓存存储器1602利用索引1614而选取一个单一的组,如图18所示的组J。流程接着进行至方块1806。
在方块1806中,对于所选取的组J的全部16路的每个项目,高速缓存存储器1602把内存地址104的卷标1612对照于项目卷标1606。所述的对照一并确认以检视项目是否无效。流程接着进行至判断方块1808。
在方块1808中,高速缓存存储器1602判断在方块1806所执行的对照结果是否为有效匹配。若判断结果为是,流程接着进行至方块1812,若判断结果为否,则流程接着进行至方块1814。
在方块1814中,图17的逻辑1702基于分配模式1608指定的函数1732以及卷标1612的一或更多比特决定在方块1804所选取的组的路的子组1734。流程接着进行至方块1816。
在方块1816中,高速缓存存储器1602分配至所选取的组J中的任一个路,其是在方块1814中决定的路的子组。在较佳的情况下,高速缓存存储器1602分配至子组中的一个路其是最久未存取(LRU)或是拟为最久未存取(Pseudo-LRU)的,而也可采用其它的置换算法,例如随机或是循环式。流程结束于方块1816。
请参阅图19,图19所示为包含处理器的系统操作流程图,处理器包含如图16的高速缓存存储器1602。流程起始于方块1902。
在方块1902中,当操作在目前分配模式1608的时候,处理器监测高速缓存存储器102的效率(例如:高速缓存存储器102在最近的预设期间内的命中率)。流程接着进行至判断方块1904。
在判断方块1904中,处理器判断高速缓存存储器102的效率是否低于一临界值。若判断结果为是,流程接着进行至方块1906,若判断结果为否,则流程结束。在较佳的情况下,所述的临界值是可程序化的,例如经由系统软件。
在方块1906中,处理器更新高速缓存存储器102的分配模式1608至一个新的分配模式,新的分配模式不同于目前分配模式。在一个实施例中,处理器的微指令更新高速缓存存储器102的分配模式1608。在较佳的情况下,处理器(例如是微指令)持续追踪此一分配模式1608的更新以避免多个分配模式被反复推移,例如在程序及/或数据组不论任何模式皆为高未命中率的情况。在一个实施例中,所有的分配模式在必要时都会被使用。在其它的实施例中,分配模式的子组会被使用。好处在于,在不同的分配模式1608之间并没有与转换有关联的写回-无效的损失。流程从方块1906回到方块1902。
本发明描述的不同方式的高速缓存存储器的模式配置,例如高速缓存存储器大量模式,少量模式,经由卷标置换比特的函数的分配,可以是经由静态配置及/或是动态配置。一般来说,静态配置是硅前(pre-silicon)的。也就是说,设计人员以直观的方式,较佳的情况下经由处理器设计仿真软件的协助来决定较好的配置方式,也就是说,在一般的情况下可改善处理器的执行效能,特别是高速缓存存储器的效能的配置方式。处理器的执行效能改善是改善处理器执行程序时的速度(例如:减少每个指令执行的时钟或是增加每个时钟频率中的执行指令)及/或减少耗电量。程序可操作系统,可执行的程序(例如:应用程序,实用程序,性能分析程序),动态链接软件库,等等。软件仿真可用于执行程序的脱机分析而其用于改善处理器的执行效能,如图20至图22中所述的例子,特别是关于高速缓存存储器的模式配置。在较佳的情况下,设计人员决定了一个在多种程序中较佳的静态配置。设计人员接着把较佳的静态配置纳入硅制程的设计里面。
反过来说,一般而言决定动态配置的分析是在后硅(post-silicon)的阶段执行。也就是说,在处理器被制造以后,设计人员执行不同种类的脱机分析来决定当以不同于静态的配置(也就是按照预定的方式将配置制造于硅芯片中)来执行程序的时候处理器效能如何。后硅的测试更严格且更费力,针对配置数组是以自动效能衰退的技术来执行,接着分析衰退的效能数据,例如是后图23中所描述的。设计人员可以为众多程序采用硅前测试的结果作为初始值来进行硅后测试,例如:试着避免不是全局最大值的局部最大值。
无论是硅前或是硅后测试,以动态配置测试,较佳的配置方式可以被决定在每一个程序的基础上,甚至是在每一个程序的时程基础上。接着,当系统(例如是装置驱动程序)侦测一个已知的程序运行在处理器上的时候(亦即:程序分析已被执行而已知较佳的配置方式),系统提供较佳的程序指定配置给处理器,且当运行中的时候,处理器以动态的方式来以程序指定配置而更新高速缓存存储器模式。在较佳的情况下,程序特定配置包含给程序的不同时程的不同配置,且处理器侦测时程变化并响应于时程特定配置来动态更新配置,例如图22中所描述的。
关于一个被赋予的特征组,程序时程是一个计算器程序的子组,其特征在于多个特征当中的一贯行为。举例来说,假设相应的特征是分支预测率以及高速缓存命中率,程序的时程是程序运行时的行为的子组,其中分支预测率以及高速缓存命中率是一致的。举例来说,脱机分析可以决定一个特定的数据压缩程序有两个时程:字词建构时程以及字词查询时程。字词建构时程具有相对低的分支预测率以及相对高的高速缓存命中率,与建立一个共通于串流的较大组的串流子组一致,而字词查询时程具有相对高的分支预测率以及相对低的高速缓存命中率,与在大于高速缓存的大小的字词查询子串流一致。
在一个实施例中,脱机分析是运用「预言高速缓存」(oracle cache)的概念来实行,如其名称的意思,具有预测的功能。对于高速缓存存储器有限的空间,预言高速缓存会知道应该及时放在高速缓存中的最有用资料。其可被概念化为可以产生最高的命中率的高速缓存的内容的每个周期或是每个指令的快照。
首先,产生程序执行的预言高速缓存快照的一序列以及追踪产生快照内的每一个高速缓存线的分配的内存存取。接着,在程序的后续执行中,处理器使用快照中的信息来继续更新高速缓存模式。
当以一个频率周期或指令更新高速缓存模式显得不实用时,可以在更长的时间周期中检视趋势,例如:在全部程序或程序时程,以及例如:经由从程序或时程的序列取出平均值。
广泛来说,预言高速缓存的概念是在于,因为其会预先知道全部的内存存取,其能够预先实行全部的内存存取。接着当程序执行时,预言高速缓存预测在任何时间点要及时给高速缓存的高速缓存线的最佳组。举例来说,在图21中,预言高速缓存将会预测短期间高速缓存线(以实线描绘的上面第二条线)不应该在其最后一次存取后被存入。使用此种分析,可引申出高速缓存模式的观测。
请参阅图20,图20所示为用在程序以及程序时程的高速缓存存储器模式配置的产生流程图。流程起始于方块3402。
在方块3402中,设计人员较佳的是以自动的方式运行一个程序并且记录程序对高速缓存存储器如102,1602的内存存取。在较佳的情况下,高速缓存线的分配、命中以及离开都会被记录下来。内存存取的内存地址以及时间(例如相对的时钟周期)会被记录下来。流程接着进行至方块3404。
在方块3404中,设计人员较佳的是以自动的方式的定期时间区间内分析在方块3402中所记录的信息并且辨识出显着的趋势以将程序分为时程,例如后图22中所描述的。举例来说,在工作组的大小,平均的高速缓存线使用期,平均的命中率的显着的趋势会被辨识出来。流程接着进行至方块3406。
在方块3406中,设计人员较佳的是以自动的方式基于在方块3404中所实行的分析来创造要给不同程序时程的配置。举例来说,配置可以是高速缓存存储器模式。在一个实施例中,决定配置的分析可包含类似像是后图21至后图23中所描述的分析。需要注意的是,某些程序或许没有显现出显着的趋势以至于容易分散成不同时程,在这种情况下单一的配置足够用于全部的程序。流程结束于方块3406。
请参阅图21,图21所示为内存存取图表以及从此图表中萃取数据的示意图。图表描绘了内存存取,经由点来标示,其中水平轴所示的时间是自变量,而垂直轴所示的内存存取是因变量。水平线对应于指定的内存地址中个别的高速缓存线。线的最左端表示高速缓存线的分配,而线的最右端表示高速缓存线从高速缓存存储器中离开。
图表下面显示,在8个不同的定期时间区间的总工作组的大小。时间区间可以例如是与后图22中所描述的基础方块转换有关联,且被用于决定每个程序时程的程序时程以及配置。
除此之外,可以观测高速缓存线趋势在多久的时间是有用的,例如平均的高速缓存线使用期。平均的高速缓存线使用期是计算是以时程中全部的高速缓存线的使用期(从分配到离开)的总和除以高速缓存线的数量。这个信息可以用来影响高速缓存存储器的操作模式。
若是预言高速缓存限制存取线的数量以对应于被包含在高速缓存存储器中预期的组数以及路数,高速缓存模式以及平均的使用期观察准确率可以提升。其它的指示也可以被包含在内,例如高速缓存线命中。
请参阅图22,图22所示为程序的时程分析流程图。时程分析是脱机分析的一种形式,其可被用来决定关于处理器的可能配置中的较佳配置,例如其高速缓存存储器或预取器(prefetcher)。流程起始于方块3602。
在方块3602中,运行中的期望经由处理器改善执行效率的程序被分析且分解而产生状态图。状态图的节点是程序的基础区块。基础区块在程序控制指令中是指令的序列(例如是分析、跳跃、呼叫、返回,等等)。状态图中的每个边缘都是一个目标基础区块其中这些边缘引领并且指出改变信息,其可以成为一个时程辨识码,如下所述的。时程辨识码可包含一个控制转换指令的指令指示器(instruction pointer,IP)或是程序计数器(programcounter,PC),控制转换指令的一个目标地址,及/或一个控制转换指令的呼叫堆。呼叫堆可包含返回地址以及呼叫的参数。程序时程是程序的一部分,其包含一或多个基础区块。流程继续进行至方块3604。
在方块3604中,程序被仪器化以分析关于处理器的可配置特征例如是高速缓存存储器配置模式。这些特征的例子包含了高速缓存命中率、分支预测准确率、工作组大小、平均高速缓存线使用期以及高速缓存污染(例如被预取但是从未被使用的高速缓存线的数量)。流程继续进行至方块3606。
在方块3606中,程序是以给定的配置来执行,例如是高速缓存存储器及/或预取器的配置,且程序的时程经由观测方块3604中分析出的特征中的稳定状态行为来辨别。举例来说,假设高速缓存命中率是关注中的分析特征,并假设高速缓存命中率从97%变成40%。高速缓存命中率的改变趋势指出高速缓存存储器配置在改变前是有利于程序的而在改变后是不利于程序的。因此,高速缓存命中率改变前的基础区块可被辨识为一个时程且高速缓存命中率改变后的基础区块可被辨识为另一个时程。以另外一个例子来说,假设工作组的大小是关注的分析特征,那么在工作组大小中的明显的大转换可以指出一个在程序中时程改变的位置。流程继续进行至方块3608。
在方块3608中,一旦时程被辨别,较好的配置或是配置值会被决定给每个时程。举例来说,可以使用不同的脱机分析技术,例如先前图20以及图21当中所描述的或是后图23中所要描述的。流程继续进行至方块3612。
在方块3612中,时程辨识码与时程改变有关。先前描述的基础方块转换的状态改变信息也就是潜在的时程辨识码,其中分析特性中的改变的发生以及在方块3608中被决定给程序的较好的配置值被记录,使该信息被例如装置驱动程序侦测到分析后的程序即将运行的时候可被提供给处理器。流程继续进行至方块3614。
在方块3614中,在接收了与分析后的程序有关的信息后,处理器如先前图14A到图14C所描述的以图14B中的时程辨识码1412加载时程侦测器1414。流程结束于方块3614。
请参阅图23,图23所示为决定一个较好配置给处理器的可配置特性例如高速缓存存储器或预取器的蛮力(brute force)法流程图。所述的方法采用「坐标递减」概念优化算法。流程起始于方块3702。
在方块3702中,对每个程序或是程序时程来说,在识别理想上可改善处理器的执行效能的程序的列表中,此方法经由方块3704至方块3716而反复操作直到决定出一个较好的配置(例如:最佳的目前配置并未在一段相对长的时间内被改变)或是资源已过期(例如时间及/或计算资源)。流程继续进行至方块3704。
在方块3704中,目前的最佳配置被设定为预定的配置,例如是一个高速缓存存储器的预定模式,其在一个实施例中就是处理器被制造时的模式。流程继续进行至方块3706。
在方块3706中,对于每个配置参数来说,方块3708至方块3712被实施。配置参数的一个例子是一个单一配置比特,例如,其可开启或关闭一个功能。配置参数的另外一个例子是一个配置域,例如模式108。流程继续进行至方块3708。
在方块3708当中,方块3706的配置参数值的合理的组的每一个值,执行方块3172至方块3716。配置参数值的合理的组取决于配置参数的大小、参数被认为的重要性以及反复操作所需的资源量。举例来说,在单一配置比特的例子中,两个值都在合理的组中。举例来说,此方法可以对具有16或是更少值的任意参数尝试所有可能的值。然而,对于相对大的域来说,例如一个32比特的域,要尝试全部2^32个值是不可行的。以这个例子来说,设计人员要提供数值的合理的组给这个方法。若设计人员没有提供数值且可能性的数量很大,此方法可以一个合理数目的参数随机数值在方块3712至方块3176反复操作。流程继续进行至方块3712。
在方块3712中,程序或是程序时程是以目前最佳配置来运行但是经由方块3708中参数的下一个数值来调整,且执行效能会被量测。流程继续进行至判断方块3714。
在判断方块3714中,该方法把在方块3712中测得的执行效能对照于目前的最佳执行效能且若前者较佳,流程继续进行至方块3716,否则流程回到方块3712去试目前参数的下一个数值一直到全部的合理数值都被试过,此时流程回到方块3708而反复操作下一个配置参数一直到全部的配置参数都被试过,此时方法结束,产生目前的最佳配置套用于该程序或该程序时程。
在方块3716中,该方法以方块3712中所试的配置来更新目前的最佳配置。流程回到方块3712去尝试目前参数的下一个数值一直到全部的合理数值都被试过,此时流程回到方块3708以反复操作下一个配置参数一直到全部的配置参数都被试过,在这个例子当中该方法结束,产生目前的最佳配置套用于该程序或该程序时程。
需要注意的是,使用类似于图23的方法所找到的较佳配置,设计人员并不会或不需要理解为什么该特定配置会产生较好的结果。
请参照图24,图24所示为处理器3900的方块图。处理器3900包含一个指令高速缓存3922,其提供指令给一个指令译码器3923,译码器3923将该指令译码并且把该译码后的指令提供给一个发送器3924,发送器3924把该指令发送至执行单元3926以执行。在较佳的情况下,处理器3900的微架构是超标量而乱序(out-of-order)执行,也可考虑其它的实施例,如此一来指令发送器3924还包含了一个指令排程器以将指令的发送排程以超标量乱序的方式至多个执行单元3926。在较佳的情况下,处理器3900还包含了架构寄存器(图未示),其包含处理器3900的架构状态,还有非架构寄存器(图未示)。在较佳的情况下,处理器3900还包含寄存器别名表(register alias table,RAT)(图未示)以用来执行寄存器重新命名以及重新排序缓冲器(reorder buffer,ROB)(图未示)以用来在程序排序中退出指令。在较佳的情况下,指令发送器包含指令转译器(图未示)其用来把架构指令转译为处理器3900的微指令组架构的微指令,其可被执行单元3926执行。
处理器3900还包含内存子系统3928其提供内存运算域给执行单元3926并且从执行单元3926接收内存运算域。内存子系统3928较佳为包含一个或多个加载单元,一个或多个存储单元,加载列,存储列,用来从内存请求高速缓存线的填入列,与处理器3900通信的内存总线的侦测有关的侦测列,列表引擎,以及其它相关功能的单元。
处理器3900还包含一个沟通于内存子系统3928的高速缓存存储器102。在较佳的情况下,高速缓存存储器102类似于描述于图1(以及图16中的1602)的高速缓存存储器。虽然示出的是一个单一的高速缓存存储器102,但高速缓存存储器102可以是一个更大的高速缓存存储器子系统的其中一个,其包含高速缓存存储器的一个分层,例如是阶层1的指令高速缓存,阶层1的数据高速缓存,以及支持阶层1高速缓存的统合的阶层2高速缓存。在一个实施例中,高速缓存子系统还包含阶层3高速缓存。处理器3900还包含一或多个预取器其从内存预取资料至高速缓存存储器102。在一个实施例中,处理器3900是一个多核心处理器,每一个核心具有如前所述的功能单元,且高速缓存存储器102由多个核心共享。
内存子系统3928存取高速缓存存储器102,如图1至图23中所描述的实施例一般。内存存取包含要被存取的内存位置的内存地址104。
虽然实施例已经用高速缓存存储器的区域以及接口的数量的特定配置来描述了,需要注意的是,在其它实施例中可以考虑包含在高速缓存存储器中的接口的不同数量,且区域的不同数量也被包含在其中,还有非区域的配置。在本揭露当中,包含权利要求中的标记2^N指的是2的N次方。
虽然本发明的多个不同实施例已被描述于此,需要注意的是,其是用以举例而非限制本发明。计算器领域的相关技术人员显而易见可知不同的形式或细部的改变都在本发明的保护范围之内。举例来说,软件可以启动,举例来说,功能、制程、模型、仿真、描述及/或本文中所描述的装置和方法的测试。其可经由一般的程序语言(例如C,C++)的使用来实现,硬件描述语言(HDL)包含Verilog硬件描述语言等等,或是其它可能的程序。所述的软件可配置于任何已知的计算器可用媒介例如是磁带,半导体,磁盘,或是光盘(例如CD-ROM,DVD-ROM等等),因特网,有线,无线或是其它通信媒介。本文所述的装置以及方法的实施例可被包含在半导体智慧产权核心,例如处理器核心(例如嵌入式或是具体式的,在硬件描述语言中)以及转变至硬件集成电路的制造中。除此之外,本文所描述的装置以及方法可被体现如硬件以及软件的组合。因此,本发明不被文中所描述的任何举例出的实施例所限制而是仅被根据本发明的权利要求及其同位物所定义。具体来说,本发明可以被实现在处理器装置中,其可用在一般用途的计算器。最后,本领域技术人员可以很容易的使用本文所揭露的概念和具体实施方式以做为设计或是修改其它架构的基础以实现出本发明的相同功效而不脱离本发明的权利要求所限定的范围。
Claims (19)
1.一种高速缓存存储器,用于存储2^J字节的高速缓存线,J为大于3的整数,该高速缓存存储器包括:
一数组,该数组为2^N组且每一组具有多个卷标,每一卷标为X比特,其中N以及X都是大于5的整数;
一输入端,该输入端接收Q比特的内存地址,该内存地址[(Q-1):0]具有:
一卷标内存地址[(Q-1):(Q-X)];以及
一索引内存地址[(Q-X-1):J];
其中Q是至少为(N+J+X-1)的整数;以及
其中,当操作在一第一模式之下:
一组选取逻辑使用该索引以及该卷标的最低有效比特选取该数组的其中一组;
一比较逻辑将卷标中除了最低有效比特之外的所有比特对照于所选取的组中的每一卷标中除了最低有效比特之外的所有比特,并在对照结果为匹配时标示为命中;以及
若对照结果为不匹配则一分配逻辑分配至所选取的组;以及
当操作在一第二模式之下:
该组选取逻辑使用该索引选取数组的其中二组;
该比较逻辑将该卷标对照于所选取的二组中的每一卷标,并在对照结果为匹配时标示为命中;以及
若对照结果为不匹配则该分配逻辑分配至所选取的二组的其中一组。
2.根据权利要求1所述的高速缓存存储器,其中当该高速缓存存储器从该第二模式转换至该第一模式的时候,若是脏的则该高速缓存存储器进行写回,并且无效该高速缓存存储器中其卷标的最低有效比特不匹配于其组的最高有效比特的每一高速缓存线。
3.根据权利要求1所述的高速缓存存储器,其中该分配逻辑根据该卷标比特中至少某些的一散列分配至所选取的二组的其中一组。
4.根据权利要求1所述的高速缓存存储器,其中该分配逻辑根据存储在该高速缓存存储器中的一或多个置换比特而分配至所选取的二组的其中一组。
5.根据权利要求1所述的高速缓存存储器,
其中该数组具有2^W路,其中W是大于1的整数;
其中当操作在一第三模式之下:
该组选取逻辑使用该索引以及该卷标的最低有效比特选取该数组中的其中一组;
该比较逻辑将该卷标除了最低有效比特之外的所有比特对照于所选取的一组中的每一卷标除了最低有效比特之外的所有比特并且在比较结果为匹配的时候标示为命中,以及
当该比较逻辑标示为不匹配的时候,该分配逻辑:
当操作在一第一模式之下,分配至所选取的一组的2^W路中的其中之一;以及
当操作在一第二模式之下,分配至所选取的一组的2^W路中的其中一子组,其中该2^W路的子组由一或多个内存地址[(Q-X+W):(Q-X+1)]限定。
6.根据权利要求1所述的高速缓存存储器,其中该2^N组的该数组包含了多个实体区域,其中当操作在该第二模式之下,该组选取逻辑所选取的该数组中的二组是在该些实体区域中的不同实体区域。
7.根据权利要求1所述的高速缓存存储器,其中当运行在包含该高速缓存存储器的一处理器上的一新进程被侦测到的时候,该高速缓存存储器从该第一模式转换至该第二模式。
8.根据权利要求7所述的高速缓存存储器,其中当该处理器正在运行该新进程的时候,经由脱机分析出该高速缓存存储器在该第二模式之下执行得比在该第一模式之下更有效率的时候做出一决定。
9.根据权利要求1所述的高速缓存存储器,其中当在该第一模式之下的未命中率超过一临界值的情况被侦测到的时候,该高速缓存存储器从该第一模式转换至该第二模式。
10.根据权利要求1所述的高速缓存存储器,其中J为6,N为11,X为20而Q为36。
11.根据权利要求1所述的高速缓存存储器,其中每一2^N组包含了W路,其中W是大于1的整数。
12.一种高速缓存存储器的操作方法,用于存储2^J字节的高速缓存线,J是大于3的整数,该高速缓存存储器具有2^N组的一数组,每一组具有多个卷标,每一卷标为X比特,N以及X都是大于5的整数,该高速缓存存储器的操作方法包括:
接收一Q比特内存地址[(Q-1):0],其包含:
一卷标内存地址[(Q-1):(Q-X)];以及
一索引内存地址[(Q-X-1):J];
其中Q是至少为(N+J+X-1)的整数;以及
当操作在一第一模式之下:
使用该索引以及该卷标的最低有效比特选取该数组的其中一组;
将该卷标除了最低有效比特之外的所有比特对照于所选取的一组中的每一卷标除了最低有效比特之外的所有比特并且在对照结果为匹配的时候标示为命中;以及
在对照结果为不匹配的时候,分配至所选取的一组;以及
当操作在一第二模式之下:
使用该索引选取该数组的其中二组;
将该卷标对照于所选取的二组中的每一卷标并且在对照结果为匹配的时候标示为命中;以及
在对照结果为不匹配的时候,分配至所选取的二组的其中之一。
13.根据权利要求12所述的高速缓存存储器的操作方法,更包括:
当该高速缓存存储器从该第二模式转换至该第一模式的时候,若是脏的则进行写回,并且无效该高速缓存存储器中其卷标的最低有效比特不匹配于其组的最高有效比特的每一高速缓存线。
14.根据权利要求12所述的高速缓存存储器的操作方法,其中该分配的执行是根据该卷标比特中至少某些的一散列而执行该分配至所选取的二组的其中一组。
15.根据权利要求12所述的高速缓存存储器的操作方法,其中该分配的执行是根据存储在高速缓存存储器中的一或多个置换比特而执行该分配至所选取的二组的其中一组。
16.根据权利要求12所述的高速缓存存储器的操作方法,
其中该数组具有2^W路,其中W是大于1的整数;
其中当操作在一第三模式之下:
使用该索引及该卷标的最低有效比特选取该数组中的其中一组;
将该卷标除了最低有效比特之外的所有比特对照于所选取的一组中的每一卷标除了最低有效比特之外的所有比特并且在比较结果为匹配的时候标示为命中,以及
当该比较结果为不匹配的时候:
当操作在一第一模式之下,分配至所选取的一组的2^W路中的其中之一;以及
当操作在一第二模式之下,分配至所选取的一组的2^W路中的其中一子组,其中该2^W路的子组由一或多个内存地址[(Q-X+W):(Q-X+1)]限定。
17.根据权利要求12所述的高速缓存存储器的操作方法,更包括:
当运行在包含该高速缓存存储器的一处理器上的一新进程被侦测到的时候,将该高速缓存存储器从该第一模式转换至该第二模式。
18.根据权利要求17所述的高速缓存存储器的操作方法,其中当该处理器正在运行该新进程的时候,经由脱机分析出该高速缓存存储器在该第二模式之下执行得比在该第一模式之下更有效率的时候做出一决定。
19.根据权利要求12所述的高速缓存存储器的操作方法,更包括:
当在该第一模式之下的未命中率超过一临界值的情况被侦测到的时候,将该高速缓存存储器从该第一模式转换至该第二模式。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IBPCT/IB2014/003231 | 2014-12-14 | ||
PCT/IB2014/003231 WO2016097810A1 (en) | 2014-12-14 | 2014-12-14 | Multi-mode set associative cache memory dynamically configurable to selectively select one or a plurality of its sets depending upon mode |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105701033A CN105701033A (zh) | 2016-06-22 |
CN105701033B true CN105701033B (zh) | 2019-03-15 |
Family
ID=56126010
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510796862.4A Active CN105701033B (zh) | 2014-12-14 | 2015-11-18 | 取决于模式而可动态配置的高速缓存存储器 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9798668B2 (zh) |
JP (1) | JP6207765B2 (zh) |
KR (1) | KR101820223B1 (zh) |
CN (1) | CN105701033B (zh) |
TW (1) | TWI620065B (zh) |
WO (1) | WO2016097810A1 (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016097795A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or subset or tis ways depending on mode |
US9811468B2 (en) * | 2014-12-14 | 2017-11-07 | Via Alliance Semiconductor Co., Ltd. | Set associative cache memory with heterogeneous replacement policy |
EP3055775B1 (en) * | 2014-12-14 | 2019-08-21 | VIA Alliance Semiconductor Co., Ltd. | Cache replacement policy that considers memory access type |
WO2016097806A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Fully associative cache memory budgeted by memory access type |
EP3066571B1 (en) | 2014-12-14 | 2018-06-13 | VIA Alliance Semiconductor Co., Ltd. | Cache memory budgeted by ways on memory access type |
US10698827B2 (en) | 2014-12-14 | 2020-06-30 | Via Alliance Semiconductor Co., Ltd. | Dynamic cache replacement way selection based on address tag bits |
WO2016097812A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Cache memory budgeted by chunks based on memory access type |
US9846648B2 (en) * | 2015-05-11 | 2017-12-19 | Intel Corporation | Create page locality in cache controller cache allocation |
JP2018005667A (ja) * | 2016-07-05 | 2018-01-11 | 富士通株式会社 | キャッシュ情報出力プログラム、キャッシュ情報出力方法及び情報処理装置 |
JP2018133038A (ja) * | 2017-02-17 | 2018-08-23 | Necプラットフォームズ株式会社 | 情報処理装置、制御装置、制御方法及びプログラム |
US10229061B2 (en) | 2017-07-14 | 2019-03-12 | International Business Machines Corporation | Method and arrangement for saving cache power |
CN107526688B (zh) * | 2017-09-12 | 2020-05-29 | 上海兆芯集成电路有限公司 | 储存装置以及配置方法 |
GB2570299B (en) * | 2018-01-17 | 2020-04-08 | Advanced Risc Mach Ltd | Increasing effective cache associativity |
EP3622518B1 (en) * | 2018-01-23 | 2023-10-11 | Tadao Nakamura | Marching memory and computer system |
GB2572158B (en) * | 2018-03-20 | 2020-11-25 | Advanced Risc Mach Ltd | Random tag setting instruction |
US11467966B2 (en) * | 2020-09-02 | 2022-10-11 | Shenzhen GOODIX Technology Co., Ltd. | Cache memory having a programmable number of ways |
US20230089349A1 (en) * | 2021-09-21 | 2023-03-23 | Wisconsin Alumni Research Foundation | Computer Architecture with Register Name Addressing and Dynamic Load Size Adjustment |
GB2627524A (en) * | 2023-02-27 | 2024-08-28 | Imagination Tech Ltd | Flexible cache structure for caching compressed and uncompressed data |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
CN101097547A (zh) * | 2006-05-04 | 2008-01-02 | 英特尔公司 | 用智能最近最少使用方案在高速缓存中进行功率性能调整 |
CN102099786A (zh) * | 2008-07-22 | 2011-06-15 | 松下电器产业株式会社 | 程序优化方法 |
CN104011692A (zh) * | 2011-12-26 | 2014-08-27 | 瑞萨电子株式会社 | 数据处理装置 |
Family Cites Families (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3259969B2 (ja) | 1991-07-09 | 2002-02-25 | 株式会社東芝 | キャッシュメモリ制御装置 |
JPH0520193A (ja) | 1991-07-15 | 1993-01-29 | Oki Electric Ind Co Ltd | キヤツシユ・メモリ装置 |
US5325504A (en) | 1991-08-30 | 1994-06-28 | Compaq Computer Corporation | Method and apparatus for incorporating cache line replacement and cache write policy information into tag directories in a cache system |
US5367653A (en) | 1991-12-26 | 1994-11-22 | International Business Machines Corporation | Reconfigurable multi-way associative cache memory |
US5465342A (en) | 1992-12-22 | 1995-11-07 | International Business Machines Corporation | Dynamically adaptive set associativity for cache memories |
US6223255B1 (en) | 1995-02-03 | 2001-04-24 | Lucent Technologies | Microprocessor with an instruction level reconfigurable n-way cache |
JPH0952582A (ja) * | 1995-08-14 | 1997-02-25 | Suzuki Motor Corp | 車両のトランクルーム構造 |
JPH0962582A (ja) | 1995-08-21 | 1997-03-07 | Toshiba Corp | 疑似セットアソシアティブ方式キャッシュメモリ装置 |
US5809562A (en) | 1996-05-20 | 1998-09-15 | Integrated Device Technology, Inc. | Cache array select logic allowing cache array size to differ from physical page size |
US6138209A (en) * | 1997-09-05 | 2000-10-24 | International Business Machines Corporation | Data processing system and multi-way set associative cache utilizing class predict data structure and method thereof |
US6047358A (en) | 1997-10-31 | 2000-04-04 | Philips Electronics North America Corporation | Computer system, cache memory and process for cache entry replacement with selective locking of elements in different ways and groups |
US6192458B1 (en) | 1998-03-23 | 2001-02-20 | International Business Machines Corporation | High performance cache directory addressing scheme for variable cache sizes utilizing associativity |
JP2954178B1 (ja) | 1998-06-26 | 1999-09-27 | 甲府日本電気株式会社 | 可変式キャッシュ方式 |
JP3495266B2 (ja) * | 1998-11-13 | 2004-02-09 | Necエレクトロニクス株式会社 | キャッシュロック装置及びキャッシュロック方法 |
US6405287B1 (en) | 1999-11-17 | 2002-06-11 | Hewlett-Packard Company | Cache line replacement using cache status to bias way selection |
US6681295B1 (en) | 2000-08-31 | 2004-01-20 | Hewlett-Packard Development Company, L.P. | Fast lane prefetching |
JP2002236616A (ja) * | 2001-02-13 | 2002-08-23 | Fujitsu Ltd | キャッシュメモリシステム |
US6874056B2 (en) | 2001-10-09 | 2005-03-29 | Agere Systems Inc. | Method and apparatus for reducing cache thrashing |
JP2003131945A (ja) | 2001-10-25 | 2003-05-09 | Hitachi Ltd | キャッシュメモリ装置 |
US7096323B1 (en) | 2002-09-27 | 2006-08-22 | Advanced Micro Devices, Inc. | Computer system with processor cache that stores remote cache presence information |
JP2004171177A (ja) | 2002-11-19 | 2004-06-17 | Renesas Technology Corp | キャッシュシステムおよびキャッシュメモリ制御装置 |
US7191291B2 (en) | 2003-01-16 | 2007-03-13 | Ip-First, Llc | Microprocessor with variable latency stack cache |
JP4036206B2 (ja) | 2004-03-31 | 2008-01-23 | 日本電気株式会社 | セットアソシアティブキャッシュシステム及びキャッシュメモリの制御方法 |
US7543113B2 (en) * | 2004-07-02 | 2009-06-02 | Hewlett-Packard Development Company, L.P. | Cache memory system and method capable of adaptively accommodating various memory line sizes |
US7257678B2 (en) | 2004-10-01 | 2007-08-14 | Advanced Micro Devices, Inc. | Dynamic reconfiguration of cache memory |
US8593474B2 (en) | 2005-12-30 | 2013-11-26 | Intel Corporation | Method and system for symmetric allocation for a shared L2 mapping cache |
EP1988466A4 (en) | 2006-02-24 | 2009-12-23 | Fujitsu Ltd | CACHE MEMORY ARRANGEMENT AND CACHE MEMORY CONTROL METHOD |
US8046775B2 (en) | 2006-08-14 | 2011-10-25 | Marvell World Trade Ltd. | Event-based bandwidth allocation mode switching method and apparatus |
US20090006756A1 (en) | 2007-06-29 | 2009-01-01 | Donley Greggory D | Cache memory having configurable associativity |
US8352684B2 (en) * | 2008-09-23 | 2013-01-08 | International Business Machines Corporation | Optimal cache replacement scheme using a training operation |
US8661179B2 (en) | 2008-10-03 | 2014-02-25 | Agere Systems Llc | Cache memory architecture having reduced tag memory size and method of operation thereof |
US8549208B2 (en) | 2008-12-08 | 2013-10-01 | Teleputers, Llc | Cache memory having enhanced performance and security features |
JP5435617B2 (ja) | 2009-01-22 | 2014-03-05 | エヌイーシーコンピュータテクノ株式会社 | キャッシュメモリ制御回路およびキャッシュメモリ管理方法 |
US8250332B2 (en) * | 2009-06-11 | 2012-08-21 | Qualcomm Incorporated | Partitioned replacement for cache memory |
US8990506B2 (en) | 2009-12-16 | 2015-03-24 | Intel Corporation | Replacing cache lines in a cache memory based at least in part on cache coherency state information |
US9582431B2 (en) | 2010-03-22 | 2017-02-28 | Seagate Technology Llc | Storage address space to NVM address, span, and length mapping/converting |
US20120096226A1 (en) | 2010-10-18 | 2012-04-19 | Thompson Stephen P | Two level replacement scheme optimizes for performance, power, and area |
US20120290793A1 (en) * | 2011-05-10 | 2012-11-15 | Jaewoong Chung | Efficient tag storage for large data caches |
WO2012169142A1 (en) | 2011-06-09 | 2012-12-13 | Semiconductor Energy Laboratory Co., Ltd. | Cache memory and method for driving the same |
US9110830B2 (en) | 2012-01-18 | 2015-08-18 | Qualcomm Incorporated | Determining cache hit/miss of aliased addresses in virtually-tagged cache(s), and related systems and methods |
US9824013B2 (en) * | 2012-05-08 | 2017-11-21 | Qualcomm Incorporated | Per thread cacheline allocation mechanism in shared partitioned caches in multi-threaded processors |
US20140047175A1 (en) | 2012-08-09 | 2014-02-13 | International Business Machines Corporation | Implementing efficient cache tag lookup in very large cache systems |
US9734059B2 (en) * | 2012-11-21 | 2017-08-15 | Advanced Micro Devices, Inc. | Methods and apparatus for data cache way prediction based on classification as stack data |
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 |
US9911508B2 (en) * | 2014-09-18 | 2018-03-06 | Via Alliance Semiconductor Co., Ltd | Cache memory diagnostic writeback |
JP2016091242A (ja) * | 2014-10-31 | 2016-05-23 | 富士通株式会社 | キャッシュメモリ、キャッシュメモリへのアクセス方法及び制御プログラム |
US10698827B2 (en) | 2014-12-14 | 2020-06-30 | Via Alliance Semiconductor Co., Ltd. | Dynamic cache replacement way selection based on address tag bits |
WO2016097795A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or subset or tis ways depending on mode |
-
2014
- 2014-12-14 WO PCT/IB2014/003231 patent/WO2016097810A1/en active Application Filing
- 2014-12-14 US US14/891,333 patent/US9798668B2/en active Active
- 2014-12-14 JP JP2016564433A patent/JP6207765B2/ja active Active
- 2014-12-14 KR KR1020157033313A patent/KR101820223B1/ko active IP Right Grant
-
2015
- 2015-11-18 CN CN201510796862.4A patent/CN105701033B/zh active Active
- 2015-11-20 TW TW104138634A patent/TWI620065B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
CN101097547A (zh) * | 2006-05-04 | 2008-01-02 | 英特尔公司 | 用智能最近最少使用方案在高速缓存中进行功率性能调整 |
CN102099786A (zh) * | 2008-07-22 | 2011-06-15 | 松下电器产业株式会社 | 程序优化方法 |
CN104011692A (zh) * | 2011-12-26 | 2014-08-27 | 瑞萨电子株式会社 | 数据处理装置 |
Also Published As
Publication number | Publication date |
---|---|
KR20160086766A (ko) | 2016-07-20 |
US9798668B2 (en) | 2017-10-24 |
JP6207765B2 (ja) | 2017-10-04 |
TWI620065B (zh) | 2018-04-01 |
WO2016097810A1 (en) | 2016-06-23 |
CN105701033A (zh) | 2016-06-22 |
US20160357681A1 (en) | 2016-12-08 |
JP2017503299A (ja) | 2017-01-26 |
TW201631475A (zh) | 2016-09-01 |
KR101820223B1 (ko) | 2018-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105701033B (zh) | 取决于模式而可动态配置的高速缓存存储器 | |
CN105701031B (zh) | 处理器及其高速缓存存储器和高速缓存存储器的操作方法 | |
CN105701030B (zh) | 根据卷标比特的动态高速缓存置换路选择 | |
CN105701022B (zh) | 组相联高速缓存 | |
CN105701032B (zh) | 具备多种替换策略的组相联高速缓存存储器 | |
CN104615548B (zh) | 数据预取方法以及微处理器 | |
CN102841865B (zh) | 高性能缓存系统和方法 | |
KR100341431B1 (ko) | 다수의 예측 분기 명령을 통한 명령 페치의 정렬 명령캐시 제어 | |
CN105701023B (zh) | 考虑到内存访问类型的快取内存替换策略 | |
US8458408B2 (en) | Cache directed sequential prefetch | |
CN105701034B (zh) | 处理器以及用于操作处理器的方法 | |
Zhang et al. | Two fast and high-associativity cache schemes | |
CN106569958A (zh) | 以内存访问类型来分配的全关联快取内存 | |
US9753855B2 (en) | High-performance instruction cache system and method | |
GB2627060A (en) | Data storage structure |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |