CN105701022A - 基于内存访问类型以组块来分配的快取内存 - Google Patents
基于内存访问类型以组块来分配的快取内存 Download PDFInfo
- Publication number
- CN105701022A CN105701022A CN201510796666.7A CN201510796666A CN105701022A CN 105701022 A CN105701022 A CN 105701022A CN 201510796666 A CN201510796666 A CN 201510796666A CN 105701022 A CN105701022 A CN 105701022A
- Authority
- CN
- China
- Prior art keywords
- mat
- cache
- internal storage
- storage access
- branch
- 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
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/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
- G06F12/0261—Garbage collection, i.e. reclamation of unreferenced memory using reference counting
-
- 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
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/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/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- 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/1041—Resource optimization
- G06F2212/1044—Space efficiency 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/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
- G06F2212/284—Plural cache memories being distributed
-
- 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
-
- 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)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种集合关联快取内存,包括:具有存储组件的阵列,其被布置为M个集合与N个分路,其中所述M个集合中的每个组属于L个相互排斥的群组中的一个;分配单元,用以分配所述阵列的存储组件以因应于在所述快取内存中未命中的内存访问;其中所述内存访问的每一个选取所述M个集合中的一个集合;其中每个所述内存访问具有多个预定内存访问类型(MAT)其中一个相关联的MAT,其中所述MAT由所述快取内存所接收;映射用于L个相互排斥的群组中的每一个群组:为所述多个预定MAT中的每一个MAT,用以将所述MAT关联于所述阵列的N个分路中的一个或多个分路的子集;以及其中对于每个所述内存访问来说,所述分配单元分配所述選定集合的一个或多个分路的子集中的一個集合,所述選定集合經由映射關聯於内存访问的MAT以及所述L个相互排斥的群组中包括所述選定集合的一个群组。
Description
发明内容
本發明的一方面提出了一种集合关联快取内存,包括:具有存储组件的阵列,其被布置为M个集合与N个分路,其中所述M个集合中的每个集合属于L个相互排斥的群组中的一个;分配单元,用以分配所述阵列的存储组件以因应于在所述快取内存中未命中的内存访问;其中所述内存访问的每一个选取所述M个集合中的一个集合;其中每个所述内存访问具有多个预定内存访问类型(MAT)其中一个相关联的MAT,其中所述MAT由所述快取内存所接收;映射用于L个相互排斥的群组中的每一个群组:为所述多个预定MAT中的每一个MAT,用以将所述MAT关联于所述阵列的N个分路中的一个或多个分路的子集;以及其中对于每个所述内存访问来说,所述分配单元分配所述選定集合的一个或多个分路的子集中的一個集合,所述選定集合經由映射關聯於内存访问的MAT以及所述L个相互排斥的群组中包括所述選定集合的一个群组。
本發明的另一方面提出了一种用于操作集合关联快取内存的方法,所述集合关联快取内存包括具有存储组件的阵列,其被布置为M个集合与N个分路,其中所述M个集合中的每个集合属于L个相互排斥的群组中的一个,以及分配单元,用以分配所述阵列的存储组件以因应于在所述快取内存中未命中的内存访问,其中所述内存访问的每一个选取所述M个集合中的一个集合,其中每个所述内存访问具有多个预定内存访问类型(MAT)其中一个相关联的MAT,其特征在于,所述方法包括:存儲映射,用于L个相互排斥的群组中的每一个群组:为所述多个预定MAT中的每一个MAT,用以将所述MAT关联于所述阵列的N个分路中的一个或多个分路的子集;以及其中对于每个所述内存访问来说,分配所述選定集合的一个或多个分路的子集中的一個集合,所述選定集合經由映射關聯於内存访问的MAT以及所述L个相互排斥的群组中包括所述選定集合的一个群组。。
本發明的再一方面提出了一种集合关联快取内存,其特征在于,包括:具有存储组件的阵列,其被布置为M个集合与N个分路,其中所述M个组中的每个集合属于L个相互排斥的群组中的一个;映射,用以指定所述阵列的多个组块,其中组块所包括所述阵列的存储组件为所述L个相互排斥的群组其中一个和所述阵列的N个分路其中一个或多个的逻辑交集;分配单元,用以分配所述阵列的存储组件以因应于在所述快取内存中未命中的内存访问,其中所述内存访问的每一个选取所述M个集合中的一个集合;其中每个所述内存访问具有多个预定内存访问类型(MAT)其中一个相关联的MAT,其中所述MAT由所述快取内存所接收;所述映射更,为所述多个组块中的每一个组块,用以将所述多个MAT中的一个或多个关联于所述组块;以及其中对于每个所述内存访问来说,所述分配单元分配所述选定集合的一个分路,所述选定集合包含于所述多个组块与所述选定集合的交集里的一个组块。
本發明的再一方面提出了一种用于操作集合关联快取内存的方法,所述集合关联快取内存包括具有存储组件的阵列,其被布置为M个集合与N个分路,其中所述M个集合中的每个集合属于L个相互排斥的群组中的一个,以及分配单元,用以分配所述阵列的存储组件以因应于在所述快取内存中未命中的内存访问,其中所述内存访问的每一个选取所述M个集合中的一个集合,其特征在于,所述方法包括:持有映射,用以指定所述阵列的多个组块,其中组块所包括所述阵列的存储组件为所述L个相互排斥的群组其中一个和所述阵列的N个分路其中一个或多个的逻辑交集:其中每个所述内存访问具有多个预定内存访问类型(MAT)其中一个相关联的MAT,其中所述MAT由所述快取内存所接收;所述映射更,为所述多个组块中的每一个组块,用以将所述多个MAT中的一个或多个关联于所述组块;以及其中对于每个所述内存访问来说,所述分配单元分配所述选定集合的一个分路,所述选定集合包含于所述多个组块与所述选定集合的交集里的一个组块。
为让本发明的上述和其它目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
图1为一种集合关联快取内存的方块示意图。
图2为映射108,所述映射108将MAT映射到图1的快取内存102的分路子集。
图3为图1的快取内存102其部分之更详细方块示意图。
图4为一种处理器其运作流程图,所述处理器具有图1的快取内存102。
图5为图1的快取内存102其运作流程图。
图6为根据本发明一实施例之图5的方块504其运作流程图。
图7为一种系统其运作流程图,所述系统具有一种处理器,所述处理器具有图1的快取内存102。
图8为一种处理器的组件示意图,所述处理器包括图1的快取内存102。
图9为图8的处理器其运作流程图,所述处理器具有图1的快取内存102。
图10为集合关联快取内存1002之方块示意图。
图11为图10的快取内存1002其部分之更详细方块示意图。
图12为一种处理器其运作流程图,所述处理器具有图1之快取内存1002。
图13为图10的快取内存1002其运作流程图。
图14为根据本发明之一替代实施例之集合关联快取内存1402之方块示意图。
图15为根据本发明之一替代实施例之集合关联快取内存1502之方块示意图。
图16为图15的快取内存1502其运作流程图。
图17为根据本发明之一替代实施例之集合关联快取内存1702之方块示意图。
图18为图17的快取内存1702其运作流程图。
图19为集合关联快取内存1902之方块示意图。
图20为根据本发明之一实施例之包裹指定符2001和三重包裹指定符2021之方块示意图。
图21为图19的快取内存1902其部份更详细之方块示意图。
图22A为一种处理器其运作流程图,所述处理器具有图19的快取内存1902。
图22B为根据本发明之一实施例之图19的快取内存1902其运作流程图。
图22C为图19的快取内存1902其方块示意图,所述快取内存1902采用异质替换策略。
图22D为根据本发明之一实施例之图19的快取内存1902其方块示意图,所述快取内存1902其采用异质替换策略。
图22E为根据本发明之一实施例之图19的快取内存1902其方块示意图,所述快取内存1902其采用异质替换策略。
图23为全关联快取内存2302之方块示意图。
图24为根据本发明之一实施例之从MATs之一者到图23的阈值2308其映射之示意图。
图25为图1的快取内存102其部分之更详细之方块示意图。
图26为一种处理器其运作流程图,所述处理器具有图23的快取内存2302。
图27为图23的快取内存2302其运作流程图。
图28为图23之全关联快取内存2302其运作流程图。
图29为根据本发明一实施例之从MATs之一者到MAT群组2909的映射2908与从MAT群组2909到阈值2911的映射之示意图。
图30为图23的快取内存2302其运作流程图。
图31为集合关联快取内存3102之方块示意图。
图32为根据本发明之一实施例之从MATs之一者到图31的优先级3108其映射之示意图。
图33为考虑到快取线其MAT的快取线替换策略流程图。
图34为用于程序和程序阶段的映像其生成流程图。
图35为快取访问图形和从此图形提取的数据示意图。
图36为程序其阶段分析之流程图。
图37为蛮力方法之流程图,所述蛮力方法用于判定处理器其可配置方面(例如,其快取内存或预取器)的好的配置或映像。
图38为分析结果之圆形分格统计图表3801。
图39为处理器3900之方块示意图。
具体实施方式
为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的透明显示装置及具有透明显示装置的电子设备其具体结构、特征及功效,详细说明如后。
有关本发明的前述及其他技术内容、特点及功效,在以下配合参考图式的实施例详细说明中将可清楚的呈现。通过具体实施方式的说明,当可对发明为达成预定目的所采取的技术手段及功效得以更加深入且具体的了解,然而所附图式仅是提供参考与说明之用,并非用来对本发明加以限制。
请参考图1,其所绘示为一集合关联快取内存(setassociativecachememory)102之方块示意图。快取内存102包括由存储组件(storageelement)112所布置的阵列(array)104。阵列104被布置具有多个分路(way)。在图1的例子中,阵列104具有16个分路,其分别为分路0-15。阵列104亦被布置具有多个集合(set)。快取内存102用以接收内存访问(memoryaccess)122。内存访问122包括内存地址(memoryaddress)和内存访问类型(memoryaccesstype(MAT))101。快取内存102配置于处理器(processor)内,例如处理器3900,其相关说明请参照图39。
内存访问类型(MAT)是指内存访问的特征(characteristic),其衍生于生成此内存访问的指令(instruction)之特征、或是生成此内存访问的处理器的功能单元(functionalunit)之类型(type)、或是当此内存访问生成时,此时处理器的操作模式(operatingmode)、或是正被内存访问所访问的数据类型(datatype)。
所述指令的特征例如是被指令所指定的操作(operation)。所述处理器的功能单元其类型例如是加载单元(loadunit)、存储单元(storeunit)、整数单元(integerunit)、浮点单元(floatingpointunit)、媒体单元(mediaunit)、分页表寻访引擎(tablewalkengine)、指令获取单元(instructionfetchunit)和硬件预取器(hardwareprefetcher)(例如,指令预取器(instructionprefetcher)、数据流预取器(streamprefetcher)、框预取器(boxprefetcher)、L1D预取器(L1Dprefetcher))。所述处理器的操作模式例如是监控模式(supervisormode)(或特权模式(privilegedmode),或x86ring0),系统管理模式(systemmanagementmode)(例如,x86的系统管理模式(SMM)、保护模式(protectedmode)(例如,x86实模式(x86RealMode)、虚拟x86模式(Virtualx86mode)、保护模式、长模式(longmode))、虚拟机模式(virtualmachinemode)(例如,x86VirtualMachineeXtensions(VMX))。所述被访问的数据类型例如是代码(code)、描述符表(descriptortable)(例如,x86指令集架构全域描述符表(x86instructionsetarchitectureglobaldescriptortable(GDT))和中断描述符表(interruptdescriptortable,IDT))、页符表(pagetable)、系统管理模式(例如,x86SMM)状态保存空间(statesavespace)、虚拟机模式(例如,x86VMX)、状态保存空间、堆栈(stack)、压缩数据(compresseddata)、常数(constant)、浮点、加密密钥(cryptographickey)、加密有效载荷(cryptographicpayload)和连结表(linkedlist)。
由指令获取单元所生成的内存访问可被称为代码获取(codefetch),而由硬件指令预取器(hardwareinstructionprefetcher)所生成的内存访问可被称为代码预获取(codeprefetch)。
表1
在一实施例中,指令包括由处理器的指令解译器(instructiontransistor)所生成的微指令(microinstruction)。指令解译器用以将结构指令(architecturalinstruction)(例如,x86指令集结构指令(x86instructionsetarchitectureinstruction))解译成微指令。
内存访问102内地址的一部分,例如索引(index),其用以选择多个集合的其中之一。每一集合都包括存储空间(storage),其用以持有(hold)替换信息(replacementinformation)114、或替换策略位(replacementpolicybits)114、或替换位(replacementbits)114。当提供至分配单元(allocationunit)106的命中信号(hitsignal)124其具有伪值(falsevalue)而指出内存访问122在快取内存102中未能命中(miss)时,分配单元106使用替换信息114、替换策略位114或替换位114来判定所选定集合(selectedset)中那一个分路会被替换(replace)或分配(allocateinto)。具体的,分配单元106在替换分路指定符(replacementwayindicator)116中指出那一个分路会被替换。在不同的实施例中,替换位114可以具有不同数目的位以指示不同的信息。举例来说,在一实施例中,替换位114具有15位,其用于指出集合的pLRU(pseudo-leastrecentlyused)分路。在另一实施例中,替换位114具有16位,其为独热矢量(one-hotvector)而用以指出最后被取代的分路。所述最后被取代的分路可用于轮叫替换策略(round-robinreplacementpolicy)或替换方案(replacementscheme)。在另一实施例中,替换位114用以指出集合的真LRU分路。在另一实施例中,替换位114可被用于修改后pLRU替换方案(modifiedpLRUreplacementscheme);当在更新替换位114时,所述方案还考虑到那一个核(core)(在多核处理器(multi-coreprocessor)中)拥有快取线(cacheline)。在另一实施例中,替换位114可被用于修改后pLRU替换方案(modifiedpLRUreplacementscheme);当在更新替换位114时,所述方案还考虑到内存访问122的MAT101,举例来说,如果MAT101是已知(例如,通过离线分析(offlineanalysis))而趋向于非必要的,则替换方案更新替换位114,以使得被替换的分路被插入于较中间位置而非最近较常用的某个位置。
阵列104中的每个存储组件112用以持有(hold)快取线数据(data)、快取线标签(tag)、和快取线状态(status),例如,MESI状态。每个集合包括对应于每个分路(例如,共16个分路)的一个存储组件112。在一实施例中,快取线是64字节(byte)的数据,但本发明不以此为限。如上所述,每个集合包括替换位114。在一实施例中,阵列104是一个单一阵列(singlearray),其用以持有快取线数据、标签、状态以及替换位114。在另一实施例中,阵列104具有两个阵列,第一阵列用以持有快取线数据(数据阵列(dataarray))而第二阵列用以持有标签、状态以及替换位114(标签阵列(tagarray))。在另一实施例中,第三阵列(替换阵列(replacementarray))用以持有替换位114而非标签阵列。
在一实施例中,分配单元106是快取内存102其一个或多个标签管线(tagpipeline)的一部份。所述标签管线用以从,例如处理核心(processingcore)(例如是从一处理核心的内存子系统(memorysubsystem),例如是加载/存储列(load/storequeue)或专用快取内存(privatecachememories)),接收内存访问并访问阵列104以进行内存访问,例如是从阵列104读取数据或将数据写入到阵列104。优选地,标签管线是一种多级(stage)的管线,非常类似于处理器的管道级(pipelinestage)。每一级的管道用以进行内存访问的子操作(sub-operation)。所述子操作例如是使具有指定集合和分路的条目(entry)无效;为地址的状态询问(query)标签阵列;如果地址不存在,基于所选定集合其替换位来判定那个分路来做分配;更新指定集合和分路其状态;如果地址存在,生成用以从数据阵列中读取数据的请求;如果地址存在,生成用以写入数据至数据阵列中的请求等等。内存访问的全部操作可由所述多个子操作一起完成。有益地,通过具有多级的管线,当有需要时分配单元106可以执行一系列的子操作以完成相对复杂的替换方案。优选地,分配单元106更包括转发网络(forwardingnetwork),其用以转发较后级管道的结果至较前级管道。
快取内存102还包括映射(mapping)108,其用以将MAT映射到分路子集(waysubset)。当内存访问122在快取内存102中未能命中时,映射108被提供至分配单元106以用于判定所选定集合的那一个分路来做分配。一般来说,分配单元106会尝试分配快取内存102内无效(invalid)的分路;然而,有时也会替换有效(valid)的分路来做分配,因此这类的分配也被称为替换。更具体地,对于多个MAT中的每一个来说,映射106将MAT关联到阵列104其分路的一个子集。每个MAT可具有不同的关联子集;然而,多个MAT也可以关联到相同子集。当内存访问122在快取内存102中未能命中时,分配单元106分配与内存访问122其MAT101相关联的分路子集。相较于习知的快取内存采用的分配方法,例如,分配LRU分路而不考虑到内存访问的MAT,本发明的快取内存102更有效,例如,具有较高的命中率。具体地,映射108可以增加将较不太需要的快取线作替换的可能性。在一实施例中,有益地,映射108可以藉由执行程序(program)的离线分析、或在程序阶段(programphase))的特别需求而决定子集合、或是与每个MAT相关的快取内存102安排方式,使得当具有MAT101的内存访问122在快取内存102中未能命中时,分配单元106仅需要分配所选定组的分路,而所述选定组的分路存在于与MAT101相关联的子集中。映射108可通过更新输入(updateinput)126而被更新。
请参照图10、11、14、15、17、19、23和25,其为介绍快取内存的多个实施例之示意图。为避免重复上述冗长的描述,此处值得理解的是,图10、11、14、15、17、19、23和25所介绍的快取内存在多个方面与图1的快取内存102相似,相关实施例将只介绍其中的不同处。类似的,具有图10、11、14、15、17、19、23和25的快取内存的处理器与具有图1的快取内存102的处理器其说明类似。
优选地,具有快取内存102的处理器是多核处理器,而在多核处理器中,多个核心共享快取内存102。然而,本发明亦适用于单核处理器。此外,快取内存102可以是处理器的快取层次(cachehierarchy)的任何层级(level)。然而,优选地,快取内存102是处理器的末级快取(last-levelcache,LLC)。优选地,处理器包括指令快取(instructioncache),其用以提供指令至指令解码器(instructiondecoder)。指令解码器用以解码(decode)指令并将解码后的指令提供至指令调度器(instructiondispatcher)。指令调度器用以将指令调度给执行单元(executionunit)来执行。优选地,处理器的微结构(microarchitecture)是超纯量(superscalar)和非循序执行(out-of-orderexecution),然而本发明并不以此为限。在另一实施例中,指令调度器还包括指令调度器(instructionscheduler),其用以以超纯量和非循序方式将指令调度(scheduling)给多个执行单元。优选地,处理器还包括结构缓存器(architecturalregisters)与非结构缓存器(non-architecturalregisters)。结构缓存器用以持有处理器的结构状态(architecturalstate)。优选地,处理器还包括缓存器别名表(registeraliastable)(RAT)和排序缓冲器(reorderbuffer)(ROB)。缓存器别名表(RAT)用以执行缓存器重命名(registerrenaming)。排序缓冲器(ROB)以程序顺序(programorder)来引退指令(retireinstruction)。优选地,指令调度器包括指令解译器(instructiontranslator),其用以将结构指令解译为可被执行单元所执行的处理器的微指令集结构的微指令。处理器还包括内存子系统,其用以提供内存操作元(memoryoperand)至执行单元并从执行单元接收内存操作元。优选地,内存子系统包括一个或多个加载单元,一个或多个存储单元,加载列,存储列,用于向内存请求快取线的填充列(fillqueue),用于窥探(snooping)与处理器相互通信(incommunication)的内存总线(memorybus)的窥探列(snoopqueue),和其他相关的功能单元。内存子系统生成快取内存102的内存访问122。
请参照图2,其所绘示为根据本发明一实施例之映射108,所述映射108将MAT映射到图1的快取内存102的分路子集。图2所例示的映射108包括32个MAT,其对应于表1。图2所例示的映射108转载于下方的表2。
索引 | 内存访问类型(MAT) | 分路子集 |
0 | boxpf | 15 |
1 | fp_load | 0-8 |
2 | fp_store | 0-8 |
3 | fused_fp_store | 0-8 |
4 | fused_load | 0-12 |
5 | fused_store | 0-12 |
6 | fused_store_aps | 6-10 |
7 | fused_store_update | 0-3 |
8 | gpf | 159 --> |
9 | l1dpf | 14 |
10 | load | 0-15 |
11 | load_aps | 6-10 |
12 | load_descr | 15 |
13 | load_nac | 1,2,4 |
14 | load_nt | 0,4,8 |
15 | load_store | 6-12 |
16 | load_supervisor | 5 |
17 | load_zx | 7 |
18 | pf_l1d | 13 |
19 | pf_l2 | 12 |
20 | pf_nt | 11 |
21 | pf_w | 10 |
22 | store | 0-15 |
23 | store_aps | 6-10 |
24 | store_mask | 9 |
25 | store_nt | 0,4,8 |
26 | store_nt_aps | 6-10 |
27 | store_push | 15 |
28 | store_supervisor | 5 |
29 | store_update | 0-3 |
30 | store_update_nac | 3 |
31 | tablewalk | 15 |
表2
以图2为例子,当MAT101为store_nt的内存访问122在快取内存102中未能命中时,分配单元106仅分配所选定集合的分路0、4或8,亦即,仅分配经由映射108而关联于store_ntMAT的分路子集内的分路。在另一个例子中,当MAT101为load_descr的内存访问122在快取内存102中未能命中时,分配单元106仅分配所选定集合的分路15,亦即,仅分配经由映射108而关联于load_descrMAT的分路子集内的分路。
在一实施例中,映射108包括具16位矢量(16-bitvector)的阵列。所述矢量的每一位对应于快取内存102其16个分路之一。优选地,当对应的分路包含于子集时,位为1;而当对应的分路不包含于子集时,位为0。所述阵列包括32个矢量,每一矢量用于一个MAT,且所述32个矢量以MAT编号来索引。然而,本发明并不以此为限。在其他实施例中,映射108可具有其它形式,其相关说明请参照图3和6。
此处值得理解的是,虽然图2(和表2)描述了一组特定的MAT以及将MAT关联到其对应分路子集的特定映射,但前述的实施例仅用于示例之目的,本发明亦适用于具不同MAT组合和不同的映射。事实上,在一实施例中,当处理器在运作时,映射可基于正在运行的程序或程序阶段而动态地被更新(例如,通过图1的更新输入126),其更详细的相关内容请参照图7-9。
请参照图3,其所绘示为图1的快取内存102其部分之更详细方块示意图。在图3的实施例中,图1的映射108包括矢量304,其用于32个MAT中的每一个。多功器(MUX)302用以接收32个矢量304并基于内存访问122其MAT指定符101的值来选取32个矢量304的其中之一,选定的矢量304被提供至图1的分配单元106。分配单元106还接收图1中选定集合的替换位114,所述选定集合是指在快取内存102中由内存访问122内存地址的索引所选取的集合。基于选定的矢量304和替换位114,分配单元106生成图1的替换分路116。分配单元106还基于替换分路116的值来更新替换位114。举例来说,在一实施方案中,替换位114是pLRU矢量,其用以指示选定集合里所有分路中的pLRU分路。在其它例子中,替换位114是真LRU矢量或轮叫(round-robin)矢量。
在一实施例中,矢量304为位矢量(bitvector),其包括一个相应位用于快取内存102的每一分路(例如,16个分路)。当位值为真,代表其对应的分路包含于相关联MAT的子集;当位值为伪,代表其对应的分路不包含于相关联MAT的子集。在一替代实施例中,矢量304包括一对遮照(mask),其对pLRU矢量的替换位114进行布尔运算,相关说明请参照图6。
在一替代实施例中,快取内存102可以包括逻辑(logic),其用以将具有较大数目(例如32)的MAT映射到具有较小数目(例如4)的MAT群组(MATgroup)。举例来说,在图3的实施例中,MAT分组逻辑(MATgroupinglogic,未示出)接收MAT101且输出MAT群组编号。MAT群组编号可作为选取输入(selectioninput)而被提供至多功器(MUX)302(而非MAT101)。MAT分组逻辑将这32个MAT的每一个映射到这4个MAT群组之一。MAT分组逻辑可以随着映射108而被更新。映射108仅包括四个矢量304(而非32个),且多功器(MUX)302选取这四个矢量304的其中之一并提供给分配单元。本实施例中可有益地减少硬件成本。MAT数目的减少可能以可接受效率做交换,特别是对那些内存访问特征为聚集于不同MAT群组的程序而言更是如此。MAT分组逻辑可适用于本发明的各种实施例,因而减少所需的硬件数目。再者,MAT数目的减少与实施例所包含群组呈倍数相关,如图10-22所示。而将MAT映射到MAT群组的实施例请参考图29-30。
请参照图4,其所绘示为一处理器其运作流程图,所述处理器具有图1的快取内存102。所述流程开始于方块402。
在方块402中,处理器接收映射。所述映射将多个MAT(例如表1)中的每一个关联到快取内存102之一个分路子集(例如,图2与表2所示的映射)。优选地,快取内存102于制造时即具有默认(default)映射108。优选地,默认映射108用于多种程序使得快取内存102具有更高的操作效能,或至少为了有可能被具有快取内存102之处理器所执行的程序而制造。所述流程接着进行至方块404。
在方块404中,通过图1的更新输入126,处理器以在方块402所接收的映射来更新快取内存102的映射108。优选地,映射108是在系统初始化(systeminitialization)且/或操作系统(operatingsystem)开机(boot)时,由系统软件(例如,BIOS或操作系统)所更新。再者,优选地,映射108是以每个程序基础(perprogrambasis)和/或每个程序阶段基础(perprogramphasebasis)被更新,其相关说明请参照图7-9。所述流程结束于方块404。
请参照图5,其所绘示为图1的快取内存102其运作流程图。所述流程开始于方块502。
在方块502中,快取内存102接收在快取内存102中未能命中的内存访问122。内存访问122索引选取阵列104的一个集合。内存访问122指定MAT101。所述流程接着进行至方块504。
在方块504中,快取内存102分配选定集合的一个分路。更具体地,分配单元106分配分路子集中的一个分路,所述分路子集经由映射108关联于内存访问122的MAT101。其相关更详细的内容请参照图6。所述流程结束于方块504。
请参照图6,其所绘示为根据本发明一实施例之图5的方块504其运作流程图。所述流程开始于方块602。
在方块602中,分配单元106基于目前的替换位114和内存访问122其MAT101来判定替换分路116及对替换位114产生一新的值。在一实施例中,分配单元106判定替换分路116并对替换位114产生一新的值的方式请照图3的实施例,亦即,利用了由MAT101所选定的矢量304。在一实施例中,替换位114是pLRU矢量,且矢量304包括第一部分(AND_MASK)与第二部分(OR_MASK)。第一部分(AND_MASK)为布尔ANDed运算。布尔ANDed运算与pLRU矢量114产生第一结果。第二部分(AND_MASK)为布尔ORed运算。布尔ORed运算与第一结果产生第二结果。第二结果被用于判定替换分路116且生成所述新的值以更新pLRU矢量114。AND_MASK与OR_MASK的使用其相关更详细的内容请参照方块606。所述流程接着进行至方块604。
在方块604中,快取内存102分配替换分路116,其中替换分路116在方块602中由分配单元106所指示出来。所述流程接着进行至方块606。
在方块606中,快取内存102以在方块602所生成的新的值来更新替换位114。所述流程结束于方块606。
在一实施例中,用于具有16个分路的pLRU方案包括:每集合15个pLRU替换位114、用于从替换位114解码出LRU分路的逻辑、用于在新的分配中更新替换位114的逻辑、以及在内存访问122命中情况下,用于更新替换位114的逻辑。虽然分配在语意上与快取命中不同,分配更新逻辑可以LRU分路馈入命中途径的方式而有效地成为命中逻辑。
替换位114是一个15位矢量(15-bitvector),其本质地描述了一个二进制树(binarytree)且其每一位可视为一个内部节点(internalnode,所述15个节点分成4阶(level),每一叶(leaf)可视为一个分路。举例来说,如果所述15位被标记为A-O,所述pLRU树可以定义为如下:
由pLRU矢量来判定LRU分路之逻辑可经由pLRU树中各个节点位(nodebit)A-O的方向来确定。从根节点(rootnode)A开始,节点位A-O的值指出LRU的“方向”,其中0表示“左转”而1表示“右转”。例如在如下的例子中:
ABCDEFGHIJKLMNO
000000010000000
LRU分路是01(A=0、B=0、D=0、H=1)。
此处应当值得注意是,在上述特定的例子中,LRU分路仅由四个节点位决定:A、B、D和H。其他节点仍然存在并且存储有用的信息,但是它们此处在这个000000010000000例子中,并没有对LRU的判定作出贡献。
当因为命中或分配而使得pLRU阵列需要被更新时,此时需以当前状态与指定的分路函数来算出pLRU位的下一个状态。所述更新是一个包括两个步骤的过程。首先,判定pLRU节点位A-O中中的四个节点位{a、b、c、d},节点位{a、b、c、d}指向最近使用(themostrecentlyused)(MRU)位置。第二,对于pLRU节点位A-O中的每一个节点位X来说,如果X在{a、b、c、d}中的话,此节点位被更新为指向远离所考虑的分路。
举例来说,在上述例子中,在分路05中命中的加载会更新节点{A=>1、B=>0、E=>1、J=>0},使得这四个节点位中的每一个指向分路05的相反的方向。
以下将更详细地描述上述方块602中所提到的矢量304的第一部分(AND_MASK)和第二部分(Or_Mask)的使用。假设分路子集中需要被分配的分路是分路{0、5、6、7}。首先,将分路子集基于树形图(treediagram)转换成如下所示的AND_MASK和OR_Mask。
ABCDEFGHIJKLMNO
AND_MASK=01-01--0-11----
Or_Mask的=00-00--0-10----
此处虚线代表“无需注意”(“don’tcares”)的位位置(bitposition),因为遮照会避開他们。举例来说,结点位C是无需注意的,因为AND_MASK的节点位A为0,这意味着左边的分枝(branch)将会一直被用来决定LRU。
因命中或分配而更新LRU的方式与正常情况下pLRU的更新一样。然而,因为相对于LRU的行为,pLRU是较不完善(imperfect)的,因此,由于共享更换位114的性质,用于两个相互排斥(mutuallyexclusive)的子集的pLRU更新会相互影响。但是在大多数的情况,相互干扰(crosstalk)是可容忍的。
请参照图7,其所绘示为一系统其运作流程图,所述系统具有一种处理器,所述处理器具有图1的快取内存102。所述流程开始于方块702。
方块702中,设备驱动器(devicedriver)(或系统软件的其它部件)判定正在运行的程序(或正准备运行,例如,在操作系统的进程表(processtable)中指出的程序),并且所述程序是在设备驱动器所知道的程序表里而用于更新图1其映射108的映像或配置(configuration)存在。举例来说,用于对处理器上运行的程序的离线分析(通过处理器的软件仿真(softwaresimulation)或处理器的实际一部份)已被执行来判定用于改善快取内存102效率的映射。应当理解的是,所述映射并不提供100%的命中率;然而,所述映射可以提高快取内存102的效率。此外,此处应当理解的是,某些程序并不会从其相应的映射中获得显着的效率提升;然而,一些程序的分析显示,其确具有从映射中获益的倾向。所述流程接着进行至方块704。
在方块704中,处理器执行指令(例如,写入到模块指定缓存器(modelspecificregister,MSR),例如,X86WRMSR指令),其用以指示(instruct)处理器以指令所提供的映射来更新快取内存102的映射108。在一实施例中,映射位于内存,而映像的位置其内存地址由指令提供。优选地,指令是设备驱动程序代码(devicedrivercode)的一部分。设备驱动器还可以提供信息,其可被用于处理器去检测(detect)程序是否已进入各个不同阶段,其相关说明请参照图8。设备驱动器可以为每个阶段提供不同的映射。因应于指令,处理器更新映射108并且将初始阶段标识符(initialphaseidentifier)(如果提供的话)加载于阶段检测器(phasedetector)(图8的804)。所述流程结束于方块704。
请参考图8,其所绘示为一处理器的组件示意图,所述处理器包括图1的快取内存102。所述处理器包括阶段检测器804,其用以检测正在运行的程序是否已经进入一个新的阶段。阶段检测器804是基于其所接收的阶段标识符(phaseidentifier)802来做上述之检测,而阶段标识符802例如通过图7的组件驱动器所提供。阶段标识符802可包括程序指令的指令指标符(instructionpointer)(或程序计数器(programcounter))值。指令可以是子程序调用指令(subroutinecallinstruction),在这种情况下,阶段标识符802还可以包括调用指令的目标指令(targetinstruction)之指令指标符(或程序计数器)值。此外,阶段标识符802还可以包括一个或多个调用指令的参数值,例如,返回地址,缓存器值和/或堆栈(stack)值。一个阶段检测器例子为指纹单元(fingerprintunit),其更详细的说明请参考美国专利申请号14/050687和14/050757,二者提交于2013年10月10日,这两个专利皆主张美国临时申请号61/880620,提交于2013年9月20日之优先权,而这两个专利的全部内容在此皆做为参考之用。处理器还包括映射更新单元(mappingupdateunit)806。当阶段检测器804检测出已有新的阶段时,阶段检测器804即通知映射更新单元806接收所述新的阶段时的标识符(identifier)。映射更新单元806还接收映射信息(mappinginformation),例如,从图7的组件驱动器而来的信息。映射更新单元806用以更新位于快取内存102的映射108,其相关说明请参照图9。在一实施例中,映射更新单元806包括所述处理器其被阶段检测器804所调用的微码(microcode)。在一替代实施例中,映射更新单元806包括状态机(statemachine)。当阶段检测器804检测出已有新的阶段时,阶段检测器804即通知状态机接收所述新的阶段时的标识符。阶段分析其相关说明请参照图36。
请参照图9,其所绘示为图8的处理器其运作流程图,所述处理器具有图1的快取内存102。所述流程开始于方块902。
在方块902中,图8的阶段检测器804检测正在运行的程序已经进入一个新的阶段。因应于检测到新的阶段,阶段检测器804通知图8的映射更新单元806。所述流程接着进行至方块904。
在方块904中,映射更新单元806在映射信息808(例如,从图7的方块704中设备驱动器所接收)中查找(lookup)从阶段检测器804所接收的所述新阶段的标识符,并以所述查找中所发现的映射来更新快取内存102的映射108。此外,如果需要的话,映射更新单元806以新的阶段标识符802来更新阶段检测器804。在一实施例中,下一个需要被检视的阶段取决于目前的阶段;因此,即将被加载到阶段检测器804的阶段标识符802会取决于当前的阶段而有所不同。所述流程接着进行至方块906。
在方块906中,所述处理器执行正在运行的程序且生成内存访问到快取内存102,以因应于使得快取内存102基于方块904中更新的映射108,并用相关于图5-6所描述的方式来分配分路子集。所述流程结束于方块906。
此处应当理解的是,尽管本发明实施例所揭露的快取内存其具有特定数目和大小的分路、集合、内存线、标签、状态协议(statusprotocols)等等,但本发明不以此为限。在其它实施例中,快取内存可具有其它数目和大小的的分路、集合、内存线、标签、状态协议等等。
请参照图10,其所绘示为一集合关联快取内存1002之方块示意图。图10的快取内存1002在许多方面与图1的快取内存102相似,此外,其具有类似编号的组件亦相似。然而,图10的快取内存1002其所包括的映射1008与图1的映射108不同。在图10的快取内存1002中,每一个集合属于多个彼此互斥的L个群组(group)1001其中之一。更具体地说,图10的映射1008用以将每一个MAT关联到阵列104中多个分路的一个子集(更关联至L个群组中的一个群组1001)。亦即,对L个群组中的每个群组1001而言,可视为图2的映射108有效地包含于图10的映射1008中。因此,图2的映射108可被MAT101编号以一维方式来索引,而图10的映射1008可被MAT101编号以二维方式来索引。
在图10的例子中,其具有四个集合群组(setgroup),分别表示为群组01001-0,其包括集合0-511;群组11001-1,其包括集合512-1023;群组21001-2,其包括集合1024-1535;以及群组31001-3,其包括集合1536-2047。因此,对此四个群组1001的每一个来说,映射1008用以将每一个MAT关联到阵列104中16个分路的其中一个子集。也就是说,图10的映射1008不仅将MAT映像到分路子集,更以集合群组为基础做所述的映射,而不是如图1所示实施例中以整个快取内存102为基础做所述的映射。因此,分配单元106将依据内存访问122的MAT以及所选定集合和所属的群组1001来分配分路子集。
前述的分配对那些可能会聚集内存访问于快取内存1002特定集合合群组之某几个MATs的程序来说是特别有利的。举例来说,对于给定程序来说,具与堆栈操作(stackoperation)相关的MAT的内存访问倾向于聚集于快取内存1002其最初几个集合。在此情况下的,映射1008可使相关于MATs(其相关于包含快取内存1002的第一少数集合群组的堆栈操作)的子集包括具有极大数目分路。所述倾向可以在程序执行时,通过程序和程序线程(programthrend)的离线分析观察到,而判定出一种有效的映射并提供给快取内存1002,其用于更新映射1008使得快取内存1002更有效率,其相关详细说明请参照图7-9。
此处应当理解的是,尽管本发明实施例所揭露的群组其具有特定数目(例如,如图10的4个群组),但本发明不以此为限。在其它实施例中,群组1001可具有其它数目。此外,此处应当理解的是,群组1001的数目愈大,映射1008的尺寸也愈大。在一实施例中,群组的数目可以小到相等于快取内存1002其集合的数目。
请参照图11,其所绘示为图10的快取内存1002其部分之更详细方块示意图。图10所绘示的快取内存1002的所述部分在许多方面与图3相类似。图10的快取内存1002还包括群组选取逻辑(groupselectionlogic)1106,其用以将内存访问122映射到群组1001。更具体地,群组选取逻辑1106接收内存访问122(或更具体的,接收内存地址的索引)且生成集合群组编号(setgroupnumber)1104,以因应于具有被内存访问122索引所选定集合的群组1001所指定的数目。集合群组编号1104作为一个选取输入而被提供到多功器(mux)1102。多功器(mux)1102为每个集合组群(例如,图11的四个组群)接收矢量304(例如,每一个矢量304用于一个MAT,类似于图3)并选取与群组1001相关联的矢量304并提供给多功器302,其中群组1001由集合群组编号1104所指定。多功器302选取此32个被选取的矢量304其一个并提供给分配单元106。分配单元106基于选定的矢量304和选定的集合之替换位114以生成替换分路116,此部份类似于图3之相关描述。分配单元106还基于替换分路116的值来更新替换位114,此部份类似于图3之相关描述。
请参照图12,其所绘示为一处理器其运作流程图,所述处理器具有图1之快取内存1002。流程开始于方块1202。
在方块1202中,处理器接收映射,其用以,为快取内存1002的L个群组1001中的每一个,将多个MAT(例如表1)中的每一个关联到快取内存1002的分路子集。对于某些MAT,其可能关联到包括所有分路的子集。所述流程接着进行至方块1204。
在方块1204中,处理器以在方块1202所接收的映射通过图10的更新输入126来更新快取内存1002的映射1008。所述流程结束于方块1204。
请参照图13,其所绘示为图10的快取内存1002其运作流程图。所述流程开始于方块1302。
在方块1302中,快取内存1002接收在快取内存1002中未能命中的内存访问122。内存访问122索引选取阵列104的一个集合。内存访问122指定MAT101。所述流程接着进行至方块1304。
在方块1304中,快取内存1002分配所选定的集合其中一个分路。更具体地,分配单元106分配分路子集的其中一个分路,所述分路子集系对应属于所选取集合群组的映射1008,而关连于内存访问122的MAT101。优选地,分配单元106选取所述分路并使用用于所选定集合的所有分路的替换位114和替换策略来执行分配。举例来说,如果替换策略是LRU,则分配单元106选取LRU分路子集。优选地,分配单元106通过将被替换的分路作为最近使用的分路并老化(aging)所有其他分路来更新替换位114。在另一个例子中,如果替换策略是pLRU,分配单元106选取近似(approximate)pLRU分路子集。在一实施例中,分配单元106以类似图6方块602所描述的方法来更新替换位114。在另一例子中,如果替换策略是轮叫(round-robin),分配单元106所选定的分路子集其具有的分路编号是以轮叫指标符模数(modulo)子集内的分路数并将轮叫指标符施转1。在另一个例子中,如果替换策略是随机的,分配单元106随机选取子集中任个分路。所述流程结束于方块1304。
请参照图14,其所绘示为根据本发明之一替代实施例之一集合关联快取内存1402之方块示意图。图14的快取内存1402在许多方面类似于图10的快取内存1002。然而,图14的快取内存1402的集合其分组与图10不同。特别的,图10中群组1001的群组其具有相邻编号的集合,而图14中快取内存1402中群组的群组编号,与其内的集合利用一模数在其集合数量之模数运算(modulooperation)上所产生的结果相同,其中所述模数为群组数量。在图14的例子中,共有四个群组1401。群组01401-0,其包括所有集合编号模数(modulo)4为零的集合,即集合0、4、8、12、…2044;群组11401-1,其包括所有集合编号模数(modulo)4为1的集合,即集合1、5、9、13、…2045;群组21401-2,其包括所有集合编号模数(modulo)4为2的集合,即集合2、6、10、14、…2046;以及群组31401-3,其包括所有集合编号模数(modulo)4为3的集合,即集合3、7、11、15、…2047。图14的实施例其逻辑类似于图11,除了群组选取逻辑1106是以如上描述来生成群组编号,亦即,通过对集合编号并使用模数运算来生成。图14的实施例可能是有利于一些程序,特别是其表现与所述模数相关,并对某几个MATs具内存访问聚集倾向的程序。图14的实施方式可以与堆快取内存(bankedcachememory)之实施例共同使用。在堆快取内存中,其堆的数目对应于群组的数目,而每一堆的集合对应于所述群组的集合。
优选地,群组选取逻辑1106是可更新的,使得它可以根据所需的映射1008而生成集合群组编号(setgroupnumber)1104。映射1008可用于如图10所示的连续集合分组(consecutivesetgrouping),或是如图14所示的以模数为基础的集合分组(modulus-basedsetgrouping),或不同的分组方案(groupingscheme),例如散列(hash)集合编号、散列内存访问122的内存地址之标签位(tagbit)、或其组合。此外,优选地,群组选取逻辑1106是可更新的,以支持不同数目的群组。群组选取逻辑1106的更新可随着映射1008更新而执行,其相关说明请参照图12。群组选取逻辑1106的可更新性(updatability)会增加使用数值更新映射1008的可能性,这将提高快取内存1002/1402的效率,使得其可更广泛的运用在各种程序和程序阶段上。
请参照图15,其所绘示为根据本发明之一替代实施例之一集合关联快取内存1502之方块示意图。图15的快取内存1502在许多方面类似于图10的快取内存1002。图15的快取内存1502包括映射1508,其用以指定多个相互排斥的集合群组。在图15的实施例中具有四个群组1501,其类似于图10的实施例(虽然可具有其它的集合分组(setgrouping),例如图14的分组)。此外,图15的映射1508进一步指定阵列104的存储组件112其多个组块(chunk)。一般来说,假设阵列104具有N个分路和L个相互排斥的群组1501,则组块1503所包括存储组件112为L个相互排斥的群组1501其中一个和数组104N个分路其中一个或多个的逻辑交集(logicintersection)。在图15所示例中,其具有11个不同的组块1503。举例来说,组块21503-2是指位于群组01501-0和分路6-9的存储组件112;组块81503-8是指位于群组21501-2和分路10的存储组件112;而组块111503-11是指位于群组31501-3和分路7-12的存储组件112。在图15的实施例中,每个存储组件112包括于一个组块1503,而相比之下在图17的实施例中,某些群组中其一些分路并未被映射到组块,以下将更详细地描述。类似于图20-21的映像结构被采用以指定组块1501,所述映射结构亦从图22D观察出。然而,如果相同的替换方案被用于在整个集合以及所有替换位114被用于所述集合的所有分路,则包裹指定符(parcelspecifier)2001不必包括替换位指标符(replacementbitspointer)2012。
图15的实施例其另一个特征是,映射1508用以将MAT关联到组块1503。更具体地,对于一给定的群组1501,可能有一些MAT并未被映射1508关联到任何群组1501的组块1503。
请参照图16,其所绘示为图15的快取内存1502其运作流程图。所述流程开始于方块1602。
在方块1602中,快取内存1002接收在快取内存1002中未能命中的内存访问122。快取访问122索引选取阵列104的一个集合。快取访问122指定MAT101。所述流程接着进行至方块1604。
在方块1604中,快取内存1502判定MAT101相关的映射1508是否与选定集合有组块1503的交集。所述流程接着进行至判定方块1606。
在判定方块1606中,如果在方块1604中快取内存1502判定MAT101相关的映射1508与选定集合有组块1503之交集时,所述流程接着进行至方块1608;否则,所述流程接着进行至方块1612。
在方块1608中,分配单元106分配所选集合的一个分路。更具体地说,分配单元106分配所选定集合其交集的组块1503的一个分路,其相关说明请参照图13的方块1304。如果MAT101相关的映射1508将与选定集合的交集为多个组块1503时,则分配单元106为多个组块1503其联集中的任一个分路进行分配。所述流程结束于方块1608。
在方块1612中,分配单元106分配所选集合的任何一个分路。举例来说,替换位114可包括用以为整个集合保持(maintain)pLRU信息的位,因此分配单元106可以分配所选定集合的pLRU分路;可替代地,分配单元106可以以真LRU、轮叫、随机或其它在此处所叙述的替换策略(例如以MAT做输入至替代方案而运用优先级的方式)分配所选定的集合。所述流程结束于方块1612。
下面的示例映射旨在示出图15和16其实施例的一种使用方式。假设程序具有以下特征。第一,所述程序具有非常大量的调用/返回(call/return)特性并产生了大量的内存访问,例如fused_store_update、store_push、store_update和store_update_nacMAT(一般来说,与堆栈访问(stackaccess)关联的MAT组),而这些内存访问趋向于索引快取内存1902的上半四个组块。第二,伴随MATboxpf、fused_store_aps、load_aps、store_aps和store_nt_ap(一般来说,与媒体数据(mediadata)关联的MAT组)一同产生的内存访问趋向于主宰内存流量(memorytraffic)。第三,所述程序趋向于从具有专门用于tablewalkMAT内存访问的分路中受益,并且它们趋向于索引快取内存1902的下半四个。根据离线分析可发现,所述程序将受益于映射1008,其建立:组块0,其交集包括快取内存1902的上半四个的第一集合群组且将媒体MAT群组关联到分路0-13;组块1,其交集第一集合组群且将堆栈MAT群组关联到分路0-13;组块2,其交集包括快取内存1902的下半四个的第二集合组群且将媒体数据MAT群组关联到分路0-14;以及组块3,其交集第二集合群组且将堆栈访问MAT群组关联到分路0-13。在这种情况下,因为媒体数据和相关boxpf预取倾向于主控(dominate)(且倾向于需要快取内存1902的所有的分路),因此快取内存1902其中间部分的集合并未与组块映射,也就没有必要去将他们隔绝于分页表寻访或堆栈内存访问。
请参照图17,其所绘示为根据本发明之一替代实施例之一集合关联快取内存1702之方块示意图。图17的快取内存1702在许多方面类似于图15的快取内存1502。图17的快取内存1702包括映射1708,其不同于图15的映射1508。不同处是对于一些群组1701来说,映射1708可以不包括群组1701的组块1703其所有的分路。也就是说,有可能某些分路未映射到任何群组1701的组块1703。在图17的示例中,群组01701-0的分路0-1、群组11701-1的分路0以及群组21701-2的分路0-2未被映射1708映射到组块1703。
请参照图18,其所绘示为图17的快取内存1702其运作流程图。图18类似于图16,并且其具有相似编号的方块亦是相似的。然而,若方块1606判定为“否”,则所述流程接着进行至方块1812而非如图16所示的到方块1612。
在方块1812中,分配单元106分配所选集合其任何一个未被映射的分路,其相关说明请参照图13的方块1304。举例来说,如果选定集合属于群组21701-2,则分配单元106分配分路0-2的其中之一,所述分路0-2在图17中的例子中未被映射。所述流程结束于方块1812。
在不同的实施例中,可具有不同数目的组块。举例来说,在图10、14、15和17的实施例中,集合被分配在四个彼此互斥群组中,从而允许多达64个组块(4个集合群组×16个分路)。然而,本发明不以此为限。在一实施例中,每个集合可以是其自身的互斥群组,使得快取内存中的每个存储组件或条目即是一个组块。此处值得注意的是,群组的数目愈多,则快取内存对其具有更精细(fine-grained)的规划也越大,使得其符合所分析程序的需求。相反的,群组的数目愈少,需要来描述组块特性的控制位愈少。
请参照图19,其所绘示为一集合关联快取内存1902之方块示意图。图19的快取内存1902在许多方面类似于图1的快取内存102,并且其具有相似编号的组件亦是相似的。然而,图19的快取内存1902包括映射1908,其不同于图1的映射108。此外,替换位1914也不同于图1的替换位114。图19的映射1908和替换位1914使得快取内存1902能够采用异构替换方案(heterogeneousreplacementscheme)。亦即,每个集合具有多个分路子集,被称为包裹(parcel),而每个包裹都有其自己的替换方案。也就是说,集合的每个包裹可包括不同数目的分路,并且可以使用所述组其替换位1914的不同部分,并且可以采用不同的替代方案来替换包裹内的分路,其更详细的描述请参考如下。根据离线分析可能会发现,一些程序能受益于将MAT群组成包裹,然后再针对这些包裹使用不同的替换方案。
在图19中,选定集合的索引1500包括三个包裹1901。包裹01901-0包括所述集合的分路0-4;包裹11901-1包括集合5-12;以及包裹21901-2包括集合13-15。更换位1914包括用于每个包裹1901彼此分开的部分,其更详细的描述请参照图20。在一实施例中,包裹1901对快取内存1902的所有集合来说是全域的(global),亦即,阵列104的每一个集合被包裹成相同的,如图22C所示。本实施例与图1的实施例相容。在另一实施例中,包裹1901关联于集合群组,亦即,每一集合群组2291被包裹成相同的,如图22D所示。本实施例与图10-18的实施例相容。在另一实施例中,包裹1901关联于各自的集合,亦即,每一个集合有其自己的包裹,如图22E所示。
请参照图20,其所绘示为根据本发明之一实施例之一包裹指定符(parcelspecifier)2001和一三重包裹指定符(parcelspecifiertriplet)2021之方块示意图。包裹指定符2001包括有效位(V)2002、MAT矢量2004、分路矢量2006、替换方案2008和替代位指标符2012。有效位(V)2002用以表示包裹指定符2001是否有效。三重包裹指定符2021其真有效位(truevalidbit)2002的数量用以判定选定集合其包裹1901的数量,其更详细的描述请参考如下。
MAT矢量2004具有用于多个MAT(例如,表1中的32个MAT)中的每一个其对应的位。MAT矢量2004其集合位(setbit)用以表示其对应的MAT是否关联于包裹1901。在一替代实施例中,包裹指定符2001包括MAT群组矢量(MATgroupvector)而非MAT矢量2004。MAT群组矢量具有用于多个MAT群组(例如,4个MMAT群组)中的每一个其对应的位。在本实施例中,映射1908包括MAT到MAT群组映射(MATtoMATgroupmapping),其相关说明请参照图29。分配单元106将内存访问122的MAT101作为MAT到MAT群组映射的一个输入,并使用输出至所述包裹的包裹指定符2001的MAT群组来做分配。相比于MAT矢量2004,MAT群组矢量需要的位更少,如果包裹指定符2001的数量比较大,MAT群组矢量是特别有利的。
分路矢量2006具有对应的位,其用于对阵列104其N个分路(例如,16个分路)中的每一个。分路矢量2006的集合位(setbit)用以表示相应的分路是否包含于包裹1901。亦即,分路矢量2006指定包含于包裹1901的分路子集。在一替代实施例中,分路矢量2006包括第一部分和第二部分。第一部分和第二部分与关联于包裹1901的一部份替换位1914进行布尔(Boolean)操作以生成一新的值(例如,pLRU矢量),其用以更新替换位1914,相关说明请参照图6的一替代实施例。在本实施例中,包含于包裹1901的分路子集是被间接地指定,由分配单元106从分路矢量2006导出所包含的分路子集。在另一替代实施例中,包裹指定符2001包括分路指标符而非分路矢量2006。分路指标符用以指出包裹1901的第一个分路。在本实施例中,包裹里的所有分路是相邻的。指标符还可以指定分路的数目;或者,第一个包裹1901必须在其分路指标符指定分路0,然后分配单元106再算出分路的数目。
替换方案2008指定替换策略(replacementpolicy)。所述替换策略用以替换或分配关联的包裹1901。在一实施例中,不同的替换方案(例如,真LRU、pLRU、轮叫、随机、MAT优先级、包括MAT优先级的各种混合(hybrid)等等)被编号且替换方案2008持有所述替换方案的编码值。
替换位指标符2012指定替换位1914的一部份,所述部份用以作为关联的包裹1901的替换策略位。优选地,替换位指标符2012指向替换位1914的所述部份的第一个位,其用以作为用于关联的包裹1901的替换策略位。用于包裹1901所需替换位1914的数目取决于所述包裹1901其分路的数目和方案2008。在一实施例中,用于指标符2012的位并不包括在内,但分配单元106可以从有效包裹1901的数目,包裹1901其分路的数目以及方案2008计算出来。
在包裹1901仅包括单一分路的情况下,由于所述单一分路将一直被替换,因此包裹1901也没有必要消耗任何的替换位1914。在一包裹1901其包括两个分路且具有LRU替换方案2008的情况下,替换位1914其单一个位可被用于表示所述两个分路中的LRU分路。另外,在另一例子中,包裹1901包括四个分路且具有基于MAT优先级的替换方案2008,例如,MAT矢量2004将5个不同的MAT关联到所述包裹,而其中的两个(例如,load_supervisor和store_supervisor)其优先级高于另外3个MAT。在这个情况下,将具有4个替换位1914(等于所述包裹其分路的数目),并且如果其一替换位1914为真,则代表所述分路已被分配,以因应于具有较高优先级load_supervisor或store_supervisor的内存访问,否则此替换位1914为伪;分配单元106尝试以伪替代位1914来替换分路并避免以真替代位1914来替换分路。方才所述之替换方案2008其多出来的替换位1914用以指出关联于具较高优先级的MAT的所有分路中的LRU分路。因此,举例来说,如果包裹1901其四个分路皆关联于具较高优先级的MAT,分配单元106依据包裹1901的LRU相关替代位1914之指示而分配此4个分路中的LRU分路。其它纳入MAT优先级的替换方案亦可用于本实施例。所述其他替换方案2008包括轮叫,在轮叫中,替换位1914的所述部分指定包裹1901中最后一个被分配的分路。
三重包裹指定符(parcelspecifiertriplet)(PST)2021包括三个包裹指定符2001,其为包裹指定符12001-1、包裹指定符22001-2和包裹指定符32001-3。由于PST2021,图20的实施例限制了每个集合仅能包括三个包裹1901,然而在其他实施例里每个集合所包括的包裹1901其最大值可不同于三个,但是至少两个。在一实施例中,包裹1901对快取内存1902(例如,图22C)里所有的集合来说为全域(global)时,其具有用于快取内存1902的单一PST2021。在一实施例中,包裹1901关联于集合群组(例如,图22D),每个集合群组2291具有PST2021。在一实施例中,包裹1901关联于个别的集合(例如,图22E),每个集合具有PST2021。
请参照图21,其所绘示为图19的快取内存1902其部份更详细之方块示意图。在图21所描述的实施例中,包裹1901关联于集合群组(例如,图22D)。图19的映射1908包括PST2021,每个PST2021用于L个群组中的其中一个,如图21所示。多功器(MUX)302接收所述L个PST2021并且选取其一以提供给分配单元106。所述选取是基于集合群组编号(setgroupnumber)2104的值。集合群组编号2014由集合群组选取逻辑2106因应于内存访问122(特别地,内存访问122的索引部分)而生成。内存访问122的MAT指定符101被提供给分配单元106。在一实施例中,分配单元106基于MAT101和PST2021来选取关联于内存访问122的包裹1901。然而,在其他实施例中,分配单元106基于内存访问122的内存地址和PST2021来选取关联于内存访问122的包裹1901,而所述选取并未用到MAT101。亦即,异构替换方案可被用那些不接收MAT的快取内存所运用。分配单元106还接收图19中选定集合的替换位1914,所述选定集合由内存访问122内存地址的索引来选取。基于选定的PST2021以及被包裹指定符2001所指定的替换位1914的一部份,在其它实施例中,分配单元106亦基于MAT101生成图19的替换分路116。分配单元106还更新替换位1914的所述部份,所述部份由包裹指定符2001基于替换分路116的值来指定。
请参照图22A,其所绘示为一处理器其运作流程图,所述处理器具有图19的快取内存1902。所述流程开始于方块2202。
在方块2202中,处理器接收映射,其包括图20的三重包裹指定符2021。所述流程接着进行至方块2204。
在方块2204中,处理器以在方块2202所接收的映射(通过图19的更新输入126而来)以更新快取内存1902的映射1908。所述流程结束于方块2204。
请参照图22B,其所绘示为根据本发明之一实施例之图19的快取内存1902其运作流程图。所述流程开始于方块2212。
在方块2212中,快取内存1902接收在快取内存1902中未能命中的内存访问122。内存访问122索引选取阵列104的一个集合。内存访问122指定MAT101。内存访问122的内存地址还被用于判定与选定集合相关联的集合群组,例如,集合群组选取逻辑2106生成图21的集合群组编号2104以因应于内存访问122的内存地址。在全域包裹(globalparcel)的实施例中(例如,图22C),因为其只有单一的PST2021,因此没有必要去对PST2021作选取。在每集合包裹(parcel-per-set)的实施例中(例如,图22E),对集合的选取亦选取了PST2021,因为PST2021关联于选定的集合。所述流程接着进行至方块2214。
在方块2214中,分配单元106判定内存访问122关联于那一个包裹1901并且选取所述关联的包裹1901其包裹指定符2001。在图21的实施例中,分配单元106检视选定的PST2021并从中判定将选取那一个包裹指定符2001。分配单元106检视每个包裹指定符2001的MAT矢量2004以判定其中那一个指定MAT101。分配单元106选取指定的MAT101的包裹指定符2001。在一实施例中,如果MAT101没有被任何的包裹指定符2001其MAT矢量2004所指定,则分配单元106分配选定集合其任一个分路。
在一替代实施例中,分配单元106从内存访问122的内存地址判定包裹1901。所述判定并未参考MAT101而是藉由比较所述内存地址和提供给分配单元106的一集合或一范围的内存地址。在一实施例中,处理器的抖动检测器(thrashingdetector)(例如,布尔过滤器(bloomfilter))监控那些匹配最近引退的快取线分配。举例来说,因程序对大的数据结构产生随机内存器访问,抖动可能而发生。如果程序呈现这种行为,例如,程序通过内存而遍历(traverse)链接列表而为目前的替换方案(例如,pLRU)建立一个最坏的情况,此较差的时间和空间局部性可能会导致快取内存1902产生非常低的命中率。抖动检测器判定正产生抖动的一组内存地址并提供分配单元106。PST2021被更新以对关联于所述内存地址的集合建立不同的包裹1901,因此分配单元106利用一随机替代方案,并以由抖动检测器所指出之落入所述内存地址集合之内存地址122来为所述集合进行分配。切換至随机替换策略不见得能提高内存访问的命中率;然而,除了新的替换策略外,為其指定一包裹1901並并藉由将程序其余部分与这些行为不佳的内存访问相关区域予以隔离,可以提高程序的整体性能。
在另一实施例中,一流数据检测器(streamingdatadetector)用以检测流数据快取访问(streamingdatamemoryaccess)122。所述流数据检测器例如配置在处理器的预取器,例如边界框预取器(boundingboxprefetcher)。流数据快取访问122是在内存地址的一范围内,所述内存地址应被隔离为快取内存1902的一个小的分路子集和/或其可从不同替换方案获益。举例来说,假设一程序正以一规则的方式运行在内存的一个大型数据结构(例如,所述程序包括重复(iteratingover)一多维的对象阵列(multidimensionalarrayofobject)的嵌套循环(nestedloops)),此规律性可能对内存层级(memoryhierarchy)有不的良影响,其取决于阵列的大小、快取内存1902和/或替换策略。如果在所述数据结构中的对象是压缩的(compact)并且如果快取线是以常规的大范围(stride)被访问时,则对快取内存1902的影响是,当潜在有用的数据因其并非数据结构的一部分而被踢出时,能有效地以基本上为使用一次(use-once)的数据来填充(fillup)快取内存1902。此处应当指出的是,所述数据实际上可能并非仅使用一次,但如果所述数据结构是大到足以别名(alias)多次(如,大于快取内存1902其分路的数目,例如16)而到同一集合时,因为在快取内存1902被强迫去踢出第N个快取线以腾出空间给第N+16快取线前,所述第N个快取线不可能被再次访问,因此所述数据可能也仅被使用一次。在这种情形下,预取器确认這些提供給快取內存1902的数据流與信号(其係由预取器所產生且落入內存位址范围中的预取,並由预取器提供給分配单元106之內存訪問122),应被区隔为不同的且具有快取内存1902的小分路子集之包裹1901。在区隔新分配之外(或可能是以其他方式替代之),预取器会依据分配被导向的方式,将所述分路之快取内存1902做导向而使用不同的替代策略(例如轮叫/FIFO或随机),PSTs2021因此被更新并透过适当的替代策略而建立所需的包裹1902。
所述流程接着从方块2214进行至方块2216。
在方块2216中,分配单元106使用在方块2214中选定的包裹指定符2001来判定分路子集,替换方案,和与包裹1901相关联的替换位1914的一部份。所述流程接着进行至方块2218。
在方块2218中,分配单元106使用所述相关联的替换方案和所述替换位1914的一部份来分配分路子集,所述分路子集关联于所选定集合的包裹1901,例如依据替换分路指定符116之指示。所述流程接着进行至方块2222。
在方块2222中,分配单元106基于在方块2218中被分配的分路来更新替换位1914的一部份。所述替换位1914的一部份关联于包裹1901。所述流程结束于方块2222。
请参照图22C,其所绘示为图19的快取内存1902其方块示意图,所述快取内存1902采用异质替换策略。在图22C的实施例中,包裹1901对快取内存1902其所有的集合(即,阵列104的每个集合被以相同方式进行包裹)来说为全域的(global)。在图22C中,对阵列104的所有集合来说,分路0-5的子集其包含于包裹0且被包裹指定符0所指定,如图中由右上到左下的对角阴影线区域所示;分路6-9的子集其包含于包裹1且被包裹指定符1所指定,如图中由左上到右下的对角阴影线区域所示;以及分路10-15的子集其包含于包裹2且被包裹指定符2所指定,如图中的交叉阴影线区域所示。
请参照图22D,其所绘示为根据本发明之一实施例之图19的快取内存1902其方块示意图,所述快取内存1902其采用异质替换策略。在图22D的实施例中,包裹1901关联于集合群组2291,亦即每一个集合群组2291被以相同的方式进行包裹。在图22D中,对阵列104的集合群组02291-0(即,集合0-511)来说:分路0-5的子集其包含于包裹A且被包裹指定符1所指定;分路6-9的子集其包含于包裹B且被包裹指定符2所指定;以及分路10-15的子集其包含于包裹C且被包裹指定符3所指定。对阵列104的集合群组12291-1(即,集合512-1023)来说:分路0-3的子集其包含于包裹D且被包裹指定符4所指定;分路4-11的子集其包含于包裹E且被包裹指定符5所指定;以及分路12-15的子集其包含于包裹F且被包裹指定符6所指定。对阵列104的集合群组22291-2(即,集合1024-1535)来说:分路0-9的子集其包含于包裹G且被包裹指定符7所指定;以及分路10-15的子集其包含于包裹H且被包裹指定符8所指定。也就是说,群组22291-2只包括两个包裹1901。对阵列104的集合群组32291-3(即,集合1536-2047)来说:所有的分路0-15其包含于包裹J且被包裹指定符9所指定。也就是说,群组32291-3只包括一个包裹1901。
请参照图22E,其所绘示为根据本发明之一实施例之图19的快取内存1902其方块示意图,所述快取内存1902其采用异质替换策略。在图22E的实施例中,包裹1901关联于个别的集合,即,每一集合被有其自己的包裹。在图22E中,对集合0来说:分路0-5的子集其包含于包裹A且被包裹指定符1所指定;分路6-9的子集其包含于包裹B且被包裹指定符2所指定;以及分路10-15的子集其包含于包裹C且被包裹指定符3所指定。对阵列104的集合1来说:分路0-3的子集其包含于包裹D且被包裹指定符4所指定;分路4-11的子集其包含于包裹E且被包裹指定符5所指定;以及分路12-15的子集其包含于包裹F且被包裹指定符6所指定。对阵列104的集合2来说:分路0-9的子集其包含于包裹G且被包裹指定符7所指定;以及分路10-15的子集其包含于包裹H且被包裹指定符8所指定。对阵列104的集合2047来说:分路0-3的子集其包含于包裹J且被包裹指定符9所指定;分路4-7的子集其包含于包裹K且被包裹指定符10所指定;以及分路8-15的子集其包含于包裹L且被包裹指定符11所指定。在图22E中,仅以包裹1901为代表,为简洁之故,并非阵列104其所有的包裹1901被示出。
通过程序和程序线程的离线分析可观察到各种不同的倾向,并且当程序正在运行时,可以判定出一个高效的映射且提供到快取内存1902以更新映射1908而增加快取内存1902的效率。其方式类似于图7-9。
请参照图23,其所绘示为全关联快取内存(fullyassociativecachememory)2302之方块示意图。全关联快取内存2302包括由存储组件112所布置的阵列104。每个存储组件(storageelement)112具有索引。在图23的示例中,索引是从0-511。在其它实施例中,存储组件112可具有不同的数目。优选地,全关联快取内存2302是一个相对小的快取内存,用以实现可接受的时序(timing)。全关联快取内存2302接收内存访问122,所述内存访问122具有关联的MAT101。全关联快取内存2302包括分配单元106,其从阵列104接收命中指示(hitindication)124。存储组件112,内存访问122和分配单元106类似于之前所述,除非另有说明。阵列104中的每个存储组件112包括相应的MAT2314,所述MAT2314指定内存访问的MAT,所述MAT促成存储组件112的分配。
全关联快取内存2302还包括计数器2306,其每一关联于MAT且与分配单元106相通信。每个计数器2306用以保持(maintain)阵列104的有效条目(存储组件112)其数目的计数,所述阵列104其MAT2314是来自与计数器2306相关联的MAT。
全关联快取内存2302还包括阈值(threshold)2308,其每一关联于MAT且与分配单元106相通信。每个阈值2308用以指定阵列104中可被分配至内存访问122的有效条目的最大值,所述内存访问122具有关联于阈值2308的MAT。阈值2308可通过更新输入126而动态地被更新,阈值2308其相关说明请参照图24。
优选地,全关联快取内存2302还包指标符2304,其每一关联于MAT且与分配单元106相通信。在一实施例中,每个指标符2304用以指定阵列104中最近被替换的有效条目的索引。当所述MAT的计数2306已达到阈值2308,指标符2304对相关于具有MAT之有效条目以轮叫方式做分配。在另一实施例中,当所述MAT的计数2306已达到阈值2308时,每个指指标符2304指定与MAT相关之阵列104中有效条目的LRU或pLRU的索引。在另一实施例中,每個指标符2304被用于指示與MAT相关之阵列104中,其有效条目LRU或pLRU之一者的索引。所述指标符2304在当所述MAT的计数2306已达到阈值2308时,被用于对与MAT相关之阵列104的有效条目,以LRU或pLRU的方式进行分配。在一实施例中,部分MAT可以在一替换策略中采用指标符2304而其它的MAT可以在另一替换策略中采用指标符2304,其可透过离线分析而决定具有最高效的策略。指标符2304可以包括一个或多个位,其用以指示所期望采取的替换策略。
因应于未能在全关联快取内存2302中命中的内存访问122,分配单元106基于MAT101,计数器2306,阈值2308和指标符2304生成替换索引(replacementindex)2316。替换索引2316用以指定将被分配或取代的存储组件112的索引,其更详细描述请参考如下。
请参照图24,其所绘示为根据本发明之一实施例之从MAT到图23的阈值2308其映射之示意图。图24示例的映射包括对应于表1的32个MAT。图24的示例映射转载于表3。
内存访问类型(MAT) | 阈值 |
boxpf | 50 |
fp_load | 70 |
fp_store | 70 |
fused_fp_store | 70 |
fused_load | 90 |
fused_store | 90 |
fused_store_aps | 300 |
fused_store_update | 30 |
gpf | 45 |
l1dpf | 35 |
load | 150 |
load_aps | 44 |
load_descr | 73 |
load_nac | 99 |
load_nt | 90 |
load_store | 786 |
load_supervisor | 321 |
load_zx | 67 |
pf_l1d | 21 |
pf_l2 | 59 |
pf_nt | 102 |
pf_w | 115 |
store | 450 |
store_aps | 3325 --> |
store_mask | 90 |
store_nt | 5 |
store_nt_aps | 45 |
store_push | 56 |
store_supervisor | 88 |
store_update | 98 |
store_update_nac | 33 |
tablewalk | 100 |
表3
此处应当理解的是,虽然图24(和表3)描述了一组特定的MAT和从MAT到阈值的特定映射,但前述的实施例仅用于示例之目的,本发明亦适用于具不同MAT组合和从MAT到阈值的不同映射。事实上,在一实施例中,当处理器在运作时,所述映射可根据正在运行程序或程序阶段而动态地被更新(例如通过图1的更新输入126),其相关详细内容请参照图7-9。
请参照图25,其所绘示为图1的快取内存102其一部分之更详细之方块示意图。在图25的实施例中,用于32个MAT之指标符2304和阈值2308成对的被提供至多任务器302。多任务器302基于内存访问122的MAT指定符101的值来选取其中的一对,这对选定的指标符2304和阈值2308被提供给图23的分配单元106。
另外,用于32个MAT之每一的计数器2306被提供至第二多任务器2502。第二多任务器2502基于MAT101的值来选取计数器2306其中之一。基于选定的指标符2304、计数器2306和阈值2308,分配单元106生成图23的替换索引2316。分配单元106基于替换索引2316的值还更新图23的MAT2314、计数器2306和指标符2304,其更详细的相关说明请参照图27和30。
类似于图3的描述,在一替代实施例中,快取内存102可以包括逻辑,其用以将具有较大数目(例如,32个)的MAT映射到具有较小数目(例如,2个)的MAT群组,其相关说明请参照图29-30。举例来说,在图25的实施例中,MAT分组逻辑(MATgroupinglogic,未示出)接收MAT101且输MAT群组编号。MAT群组编号可作为选取输入而被提至供至多功器(MUX)302与2502(而非MAT101)。在本实施例中,经由降低计数器2306、阈值2308和指标符2304的数目,可有益地减少硬件成本以及MAT2314存储组件的尺寸。
请参照图26,其所绘示为一处理器其运作流程图,所述处理器具有图23的快取内存2302。所述流程开始于方块2602。
在方块2602中,处理器接收映射。所述映射将多个MAT(例如表1)中的每一个关联到阈值(例如,图24与表3所示的映射)。优选地,快取内存102于制造时即具有默认阈值2308的映射。优选地,默认阈值2308的映像用于多种不同程序使得快取内存102具有更高的操作效能,或至少为了被认为具特定需求、及/或有可能被具有快取内存102之处理器所执行的大多数程序而制造。所述流程接着进行至方块2604。
在方块2604中,通过图23的更新输入126,处理器以在方块2602所接收的映射来更新快取内存2302的阈值2308其映射。优选地,映射2308是在系统初始化(systeminitialization)且/或操作系统(operatingsystem)开机(boot)时,由系统软件(例如,BIOS或操作系统)所更新。再者,优选地,映射2308是以每个程序基础(perprogrambasis)和/或每个程序阶段基础(perprogramphasebasis)被更新,其相关详细说明请参照图7-9。所述流程结束于方块2604。
请参照图27,其所绘示为图23的快取内存2302其运作流程图。所述流程开始于方块2702。
在方块2702中,快取内存102接收未能在快取内存102中命中的内存访问122。内存访问122索引选取阵列104中的一个条目112。内存访问122指定MAT101。所述流程接着进行至方块2704。
在方块2704中,分配单元106判定与快取访问122的MAT101相关联的计数器2306是否已达到与MAT101相关联的阈值2308。所述流程接着进行至判定方块2706。
在判定方块2706中,如果与快取访问122的MAT101相关联的计数器2306已达到与MAT101相关联的阈值2308,所述流程接着进行至方块2708;否则,所述流程接着进行至方块2712。
在方块2708中,分配单元106替换阵列104其中一个有效条目(validentry)112,所述有效条目112其MAT2314匹配于快取访问122的MAT101。如图23所述,将被替换的条目112可以是通过各种不同的替换策略来选取,采用关联于MAT101的指标符2304为优选者。所述流程结束于方块2308。
在方块2712中,分配单元106分配阵列104中的任何一个条目112。此处所采用的替换策略可以是任何本案所述的任何替换策略。在一实施例中,全关联快取内存2302维持(maintain)全局指标符(globalpointer,未示出),其用以指向阵列104中与MAT无关的最近被取代的有效条目的索引。优选地,在指出条目112后,分配单元106经由无效或不具内存访问122的MAT101的指标符找到下一个条目112。所述流程接着进行至方块2714。
在方块2714中,分配单元106递增(increment)关联于内存访问122其MAT101的计数器2306。所述流程进行至判定方块2716。
在判定方块2716中,分配单元106判定被替换的条目112否有效。如果是,所述流程接着进行至方块2718;否则,所述流程结束。
在方块2718中,分配单元106递减(decrement)关联于被替换条目112其MAT2314的计数器2306。所述流程结束于方块2718。
请参照图28,其所绘示为图23之全关联快取内存2302其运作流程图。所述流程开始于方块2802。
在方块2802中,全关联快取内存2302使某一条目112无效,以因应于快取线从全关联快取内存2302中被引退(eviction)。所述流程接着进行至方块2804。
在方块2804中,全关联快取内存2302递减关联于被无效的条目112其MAT2314的计数器2306。所述流程结束于方块2804。
请参照图29,其所绘示为根据本发明一实施例之从MAT到MAT群组2909的映射2908与从MAT群组2909到阈值2911的映射之示意图。在图29的示例中,其具有四个MAT群组,分别表示为MAT群组0,MAT群组1,MAT群组2和MAT群组3。图29的阈值2911类似于图23的阈值2308,但其对应于四个MAT群组2909,而非对应于32个MAT。為了說明之故,圖29之MATs至MAT群組2909的映射实例包含32個與表1相關的MATs。图29的示例映射转载于表4。
内存访问类型(MAT) | MAT群组290927 --> |
boxpf | 0 |
fp_load | 1 |
fp_store | 1 |
fused_fp_store | 1 |
fused_load | 1 |
fused_store | 1 |
fused_store_aps | 0 |
fused_store_update | 2 |
gpf | 3 |
l1dpf | 0 |
load | 1 |
load_aps | 0 |
load_descr | 3 |
load_nac | 3 |
load_nt | 3 |
load_store | 1 |
load_supervisor | 2 |
load_zx | 1 |
pf_l1d | 1 |
pf_l2 | 1 |
pf_nt | 1 |
pf_w | 1 |
store | 1 |
store_aps | 0 |
store_mask | 3 |
store_nt | 3 |
store_nt_aps | 3 |
store_push | 2 |
store_supervisor | 2 |
store_update | 2 |
store_update_nac | 3 |
tablewalk | 3 |
表4
从MAT群组到阈值2911的映射其用以将MAT群组0映射到400条目112的阈值2911,将MAT群组0映射到400条目112的阈值2911,将MAT群组0映射到400条目112的阈值2911,以及将MAT群组0映射到400条目112的阈值2911。此处应该理解的是,虽然图29(和表4)描述了一组特定的MAT集合以及从MAT到MAT群组与从MAT群组到阈值的特定映射,但前述的实施例仅用于示例之目的,本发明亦适用于具不同MAT组和不同的从MAT到MAT群组以及从MAT群组到阈值的映射。事实上,在一实施例中,当处理器在运作时,所述映射可基于正在运行程序或程序阶段而动态地被更新(例如通过图1的更新输入126),其相关详细内容请参照图7-9。此外,具不同的数目的MAT群组2909亦可以被采用。
如图25中所描述的,全关联快取内存2302可以另包括逻辑,其用以提供MAT群组2909的使用,可有益地减少硬件数量(其系在所需的交换上以潜在较少的配置与有效运用全关联快取内存2302的方式来达成)。例如,优选地,全关联快取内存2302仅具有对计数器2306有用的MAT群组2909的数量、阈值2308和指标符2304,且每个条目的MAT2314持有条目112的MAT群组。
请参照图30,其所绘示为图23的快取内存2302其运作流程图。所述流程开始于方块3002。
在方块3002中,快取内存2302接收未能在快取内存202中命中的内存访问122。内存访问122索引选取阵列104中的一个条目112。内存访问122指定MAT101。分配单元106将MAT101映射到MAT群组2909。所述流程接着进行至方块3004。
在方块3004中,分配单元106判定与MAT群组2909相关联的计数器2306是否已达到与MAT群组2909相关联的阈值2911。所述流程进行至判定方块3006。
在判定方块3006中,如果与MAT群组2909相关联的计数器2306已达到与MAT群组2909相关联的阈值2911,所述流程接着进行至方块3008;否则,所述流程接着进行至方块3012。
在方块3008中,分配单元106替换阵列104其中一个有效条目112,所述有效条目112其MAT2314匹配于快取访问122的MAT群组2909。如图23所述,被替换的条目112可以是通过各种不同的替换策略来选取,而采用关联于MAT群组2909的指标符2304为优选者。所述流程结束于方块3008。
在方块3012中,分配单元106分配阵列104中的任何一个条目112,其类似于图27的方块2712所描述。所述流程接着进行至方块3014。
在方块3014中,分配单元106递增关联于内存访问122其MAT群组2909的计数器2306。所述流程接着进行至判定方块3016。
在判定方块3016中,分配单元106判定被替换的条目112否有效。如果是,所述流程接着进行至方块3018;否则,所述流程结束。
在方块3018中,分配单元106递减关联于被替换条目112其MAT2314的计数器2306。所述流程结束于方块3018。
当某一特定阶层的快取其被规划为具有两个MAT群组且其中的第一MAT群组仅能分配至多全关联快取内存2302其阈值的数量(例如,80%),则图29和30的实施例可用来对所述特定阶的快取来提高其效率。所述第一MAT群组可以包括所有与数据相关(data-realted)的MAT,而第二MAT群组可以包括所有与代码相关(code-realted)的MAT(例如,代码获取与代码预取),限制全关联快取内存2302中包含代码的快取线,可有效地在专用指令快取(privateinstructioncache)中防止与数据(例如,流数据)间的争用情形发生。
请参照图31,其所绘示为一集合关联快取内存3102之方块示意图。图31的快取内存3102在许多方面类似于图1的快取内存102,并且其具有相似编号的组件亦是相似的。然而,图31的快取内存3102包括映射3108,其不同于图1的映射108。图31的映射3108可以包括任何图1-22E所示的不同的映射;然而,图31的映射3108还包括将不同的多个MAT映射到MAT优先级的映射3108,图32为其中一个例子。另外,用于每个有效的快取线的MAT3114其存储在阵列104中。亦即,当存储组件112被分配给快取线时,使所述分配加速的内存访问122其MAT101则是储存在存储组件112。有利地,MAT3114连同MAT到MAT优先级映射3108的储存,能够使快取内存3102将阵列104的一选定集合的有效快取线的MAT3114包含于替换策略中,以选取所选定集合其一个分路来作分配,其更详细的描述请参考如下,特别是参考图33。
请参照图32,其所绘示为根据本发明之一实施例之从MAT到图31的优先级3108其映射之示意图。图32示例的映射包括对应于表1的32个MAT。图32的示例映射转载于表5。
内存访问类型(MAT) | MAT优先级 |
boxpf | 6 |
fp_load | 1 |
fp_store | 1 |
fused_fp_store | 1 |
fused_load | 3 |
fused_store | 1 |
fused_store_aps | 0 |
fused_store_update | 4 |
gpf | 3 |
l1dpf | 5 |
load | 1 |
load_aps | 3 |
load_descr | 3 |
load_nac | 4 |
load_nt | 3 |
load_store | 1 |
load_supervisor | 2 |
load_zx | 1 |
pf_l1d | 7 |
pf_l2 | 1 |
pf_nt | 6 |
pf_w | 1 |
store | 1 |
store_aps | 0 |
store_mask | 3 |
store_nt | 2 |
store_nt_aps | 330 --> |
store_push | 2 |
store_supervisor | 7 |
store_update | 2 |
store_update_nac | 3 |
tablewalk | 3 |
表5
此处应当理解的是,虽然图32(和表5)描述了特定的MAT集合和从MAT到MAT优先级的特定映射,但前述的实施例仅用于示例之目的,本发明亦适用于具不同MAT集合和从MAT到MAT优先级的不同映射。事实上,在一实施例中,当处理器在运作时,所述映射可根据正在运行程序或程序阶段而动态地被更新(例如通过图1的更新输入126),其相关详细内容请参照图7-9。
请参照图33,其所绘示为一考虑到快取线其MAT的快取线替换策略流程图。所述流程开始于方块3302。
在方块3302中,快取内存3102接收在快取内存3102中未能命中的内存访问122。内存访问122索引选取阵列104中的一个集合。内存访问122指定MAT101。所述流程接着进行至方块3304。
在方块3304中,分配单元106根据用于所选定集合的替换策略来决定最符合的替换分路与第二符合的替换分路。例如,如果替换策略是LRU/pLRU,分配单元106根据替换位114来决定所选定集合的LRU分路和第二符合的LRU分路。在另一例子中,如果替换策略是轮叫,分配单元106藉由替换位114的轮叫指标符来决定所指向的分路,并以轮叫顺序(round-robinorder)方向的下一个分路。在另一例子中,如果替换策略是是随机的,分配单元106随机地决定其中两个分路。此处应当理解的是,在一实施例里快取内存3102其分路、集合群组、组块或包裹的分配是有限的话,则分配单元106仅考虑所选取集合的一个分路子集,再检视所述分路子集里最符合和第二符合的分路的MAT优先级(MATpriority)。所述流程接着进行至方块3306。
在方块3306中,分配单元106检视在方块3304所决定之最符合分路的MAT3114和第二符合分路的MAT3114,然后比较此两个MAT3114其相对之MAT优先级3277。所述流程接着进行至判定方块3308。
在判定方块3308中,如果最符合分路的MAT优先级3377高于第二符合分路的MAT优先级3377,所述流程接着进行至方块3312;否则,所述流程接着进行至方块3314。在一实施例中,分配单元106计算最符合分路的MAT优先级3377与第二符合分路的MAT优先级3377之间的差值并判定此差值是否大于阈值,而不是仅测试最符合分路的MAT优先级3377是否高于第二符合分路的MAT优先级3377。此处应当注意的是,如果在选定集合(或其相关子集)具有无效的分路,则分配单元106分配此无效分路而不是替换最符合和第二符合的分路。
在方块3312中,分配单元106替换第二符合分路而非最符合分路。所述流程接着进行至方块3316。
在方块3314中,分配单元106替换最符合分路。所述流程接着进行至方块3316。
在方块3316中,分配单元106以快取访问122的MAT101来更新被替换分路的MAT3114。在这种方式下,阵列104的条目其MAT3114被保持。所述流程接着进行至方块3318。
在方块3318中,分配单元106检视快取访问122的MAT1011且判定其是否具有相对低的优先级,例如,低于阈值。举例来说,在图32的实施例中,分配单元106可判定快取访问122的MAT1011是否低于3。所述流程接着进行至判定方块3322。
在判定方块3322中,如果快取访问122的MAT1011具有相对低的优先级,所述流程接着进行至方块3326;否则,所述流程接着进行至方块3324。
在方块3324中,分配单元106根据替换方案将被替换的分路插入替换位114中最不适合的位置。举例来说,在LRU/pLRU方案下,分配单元106将被替换的分路插入最近使用位置。另一个例子,在轮叫方案下,分配单元106以刚刚超过(past)被替换分路者来更新轮叫指标符。所述流程结束于方块3324。
在方块3326中,分配单元106根据替换方案将被替换分路插入替换位114中适度(moderately)的位置,前述的分配基于快取访问122的MAT优先级3277有多低为优选者。举例来说,在LRU/pLRU方案下,分配单元106将被替换分路插入一中间位置。优选地,MAT优先级3277愈低,分配单元106将被替换分路插入愈接近中间位置。相反地,MAT优先级3277愈高,分配单元106将被替换分路插入愈远离中间位置且愈接近最近使用的位置。在一实施例中,对那些非常低的MAT优先级3277(例如,优先级为0的预取)来说,分配单元106将被替换分路插入在LRU或次于LRU(next-to-LRU)的位置。另一个例子,在轮叫方案下,分配单元106依据MAT优先级3327有多低,来以更多超过(past)被替换分路的位置来更新轮叫指标符。在一实施例中,当决定要将被替换分路插入于那个位置时,分配单元106还考虑到相对的MAT优先级3327,其关联于与最不适合位置之邻近的一个或多个分路其MAT3114。所述流程结束于方块3326。
虽然在前述实施例中是以两个最符合分路作考虑,但在其他实施例可以以更多的最符合分路来作考虑,例如,如果第三最符合分路其MAT优先级小于最符合分路和第二符合分路,则分配单元106取代第三最符合分路。
在本案所述快取内存的各种配置,例如基于分路、集合群组、组块、MAT群组阈值、或具不同替换策略的包裹的映射,其可以分类为静态分配(staticconfiguration)、动态配置(dynamicconfiguration)或同时具备此两者之配置。一般来说,静态分配是硅前(pre-silicon)的规划工作。也就是说,设计者使用直觉,优选地通过处理器设计的软件仿真(softwaresimulation)的辅助以判好的配置。所谓好的配置指其能潜在地改善处理器的性能,特别是快取内存的性能。处理器性能的改进能提高处理器执行程序的速度(例如,降低每個指令比率的時鐘數量或增加每個時鐘比率的指令数量)和/或减少功率的消耗。所述程序可以是操作系统、可执行的程序(例如,应用程序(application)、工具程序(utility)、标准检查程序(benchmark))、动态链接库(dynamiclinklibraries)等。所述软件仿真可用于进行程序的离线分析,进而去提高处理器的性能,其相关说明请参照图34-36(特别是相关于快取内存配置的叙述)。优选地,设计者可决定对大量程序集合有帮助的静态分配,而设计者可将静态分配加入至用于芯片制造的设计中。
相反的,一般而言,硅后(post-silicon)规划则是用来分析动态配置。亦即,在处理器被制造后,当处理器正在执行具不同于制造在硅芯片中静态分配(或是默认分配)的程序时,设计者执行不同种类的离线分析以判定处理器的效能。硅后测试可涉及更严谨(也许更蛮力(bruteforce))的技术,在此技术中用于进行相对于配置矩阵(configurationmatrix)的自动性能回归(automatedperformanceregression),然后进行回归性能数据(regressionperformancedata)分析,其相关说明请参照图37。设计者可以采用硅前测试的结果作为对硅后(post-silicon)测试的初始种子(initialseed),例如,以试图避免局部最大值(localmaxima)并非全局最大值(globalmaxima)的情况。
无论测试是硅前或硅后,经由动态配置测试(dynamicconfigurationtesting),在程序基础(per-programbasis)或甚至在程序阶段基础(per-programphasebasis)上即可判定出好的配置。然后,当系统(例如,设备驱动器)检测到已知程序正在处理器上运行(即,为所述程序的分析已被执行且已得知一个好的配置),所述系统提供此好的程序专用(program-specific)配置到所述处理器,并且当处理器运行时,所述处理器用动态方式以程序专用配置来更新快取内存。优选地,所述程序专用配置包括用于在程序不同阶段的不同配置。此外,因应于程序专用配置,所述处理器还检测阶段变化且动态更新配置,其相关说明请参照图36。
程序阶段是相对于一组给定特性,其是一种计算器程序的子集,且具有一致行为的特征。举例来说,假定相关特征是分支预测率(branchpredictionrate)和快取命中率(cachehitrate),则程序阶段则是指那些具有运行时间(runtime)行为的程序子集,在此程序子集里分支预测率和快取命中率是一致的。例如,离线分析可确定某一特定数据压缩程序(datacompressionprogram)有两个阶段:字典结构阶段(dictionaryconstructionphase)和字典查找阶段(dictionarylookupphase)。字典结构阶段(dictionaryconstructionphase)具有相对低的分支预测率(branchpredictionrate)和相对高的快取命中率(cachehitrate),与建立子字符串集合的方式一致(亦与建立字符串大量集合的方式一致);而,字典查找阶段(dictionarylookupphase)具有相对高的分支预测率(branchpredictionrate)和相对低的快取命中率(cachehitrate),与在字典中查找子字符串的方式一致(其查找范围较快取尺寸为大)。
在一实施例中,可使用“预言快取”(“oraclecache”)来进行离线分析,其中“预言快取”正如其名称所暗示的是对未来的预测。在快取内存有限的空间里,预言快取知道在任何时间点都应该在快取内存中的存在最有用的数据。预言快取可以被概念化为快取内容的逐周期(cycle-by-cycle)或逐指令(instruction-by-instruction)快照(snapshot),以产生最高命中率。
首先,为程序执行(programexecution)生成一系列的(sequence)预言内存快照(oraclecachesnapshot)和持续追踪内存访问的MAT,所述内存访问係在所述快照里产生快取线的分配者。然后,为每一个所述快照产生圆形分格统计图表(piechart)。其中,对于每个MAT或MAT群组来说,所述圆形分格统计图表示出快取内存被快取线占据的百分比,所述快取线因应于MAT的内存访问而被分配,其中的一个例子示于图38。然后,在所述程序的后续执行中,处理器不断利用一系列的圆形分格统计图表所示的MAT百分比来重新分配(re-budget)快取(或分路、集合群组、组块、包裹、阈值、MAT优先级,等等)。
当重新规划细致到频率周期(clockcycle)或指令是不切实际的情形时,可倾向以更长的持续时间来检视圆形分格统计图表系列,例如,完整的程序或程序阶段。然后,为每一个MAT算出所有圆形分格统计图表系列(程序或程序阶段)的平均值以根据平均圆形分格统计图表作分配。
从广义上说,预言快取的想法是因为预先知道所有的内存访问,预言快取可以预先执行(pre-execute)所有的内存访问。然后随着程序的执行,预言快取预测出在任何特定的时间点里快取中最好的快取线集合。举例来说,在图35中,预言快取将预测出MAT1的短持续时间快取线(上面数来第二条实线)在其最后被访问后将不会再被快取。使用这样的分析,可在每个MAT为基础之上得出对快取分配和替换策略的观察。
请参照图34,其所绘示为用于程序和程序阶段的一映像其生成流程图。所述流程开始于方块3402。
在方块3402中,设计者,优选地以自动方式,运行程序且记录由程序所生成并对快取内存122,例如由程序所生成之对102、1002、1402、1502、1702、1902、2302、3102访问的内存访问122。优选地,快取线的分配、命中和引退(eviction)被纪录下来。内存访问122的内存地址、MAT101和时间(例如,相对时序周期)被纪录下来。所述流程接着进行至方块3404。
在方块3404中,设计者,优选地以自动方式,定时地分析记录在方块3402的信息以及识别出明显的趋势以将程序分离成不同阶段,其相关说明请参照图36。举例来说,所述明显的趋势例如是识别MAT101的工作集合尺寸(workingsetsize)、MAT101的平均快取线寿命(averagecachelinelifetime)、MAT101的平均命中率。所述流程接着进行至方块3406。
在方块3406中,设计者,优选地以自动方式,基于在方块3404所进行的分析为不同的程序阶段来建立(create)映像或配置。举例来说,所述映像或配置是利用分路的快取分配映射(cachebudgetmapping),例如,图2的108;利用集合群组的快取分配映像,例如,图10、14或15的1008;利用组块的快取分配映像,例如,图15或17的1508或1708;支持异构替换策略的快取分配映像,例如,图19-22E的1908;基于MAT的条目分配阈值(MAT-basedentryallocationthreshold),例如,图23-24的2308;MAT至MAT群组和MAT群组至阈值的映像,例如,图29的2908;和MAT优先级映像,例如,图31-32的3108。在一实施例中,所述用于判定映像或配置的分析可以包括类似于图35-38所描述的分析。此处应当理解的是,一些程序可能不会表现出明显的趋势,使得它们在被分解成不同的阶段有不良影响,在这种情况下,单一的映像或配置对整个程序来说已是足够的。所述流程结束于方块3406。
请参照图35,其所绘示为一快取访问图形和从此图形提取的数据示意图。所述图形之内存访问由点(dot)来表示。在图中,水平轴为时间,其为独立变量(independentvariable);而纵轴为内存地址,其为因变量(dependentvariable)。在指定的内存地址,水平线对应于个别的快取线。线的左边缘表示快取线的分配,而线的右边缘表示快取线从快取内存中被引退。每一个快取线有一个相关联的MAT,即如图35所示的MAT1,MAT2,MAT3和MAT4.。在图35的例子中示出了6条快取线,其中两个具有关联的MAT1,两个具有关联的MAT2,一个具有关联的MAT3,以及一个具有关联的MAT4。
在图形下方所示出的是八个具一定间隔的时间间隔,总的工作集合尺寸(totalworkingsetsize)和相应于每一个MAT的工作集合尺寸。所述时间间隔可以是与基本块传输(basicblocktransfer)相关(其相关说明请参照图36)和用于为每一个程序阶段来判定其程序阶段和配置或者映像。举例来说,在一特定的程序或阶段期间,其配置或映像可根据具有相对较大工作组尺寸的MAT而分配更多的分路,集合群组,组块,或包裹;或者根据具有相对较小工作组尺寸的MAT而分配更少的分路;或者至少将工作集合尺寸列入考虑,如图35每个MAT所示。
另外,从图35的图形中亦可观察出每个个别的MAT其快取线其有用的长度,例如平均快取线寿命。平均快取线寿命可依据在程序阶段之个别MAT中,计算所有快取线其寿命(从分配到引退)的总合除以快取线的数目之值。这个信息可以被用来影响快取内存的替换策略。
如果预言快取所预测被快取的线其数目可以对应于集合和分路其在快取内存中的预期数目,则快取分配与平均寿命观测的准确性可能会增加。其它指标也可以被收集,例如每一MAT的快取线命中情形。
请参照图36,其所绘示为一程序其阶段分析之流程图。所述阶段分析是离线分析的一种形式,其可用于判定处理器的可配置方面(例如,其快取内存或预取器)其好的配置或映像。所述流程开始于方块3602。
在方块3602中,一程序其欲藉由处理器来改善其性能。首先,所述程序被进行分析且被分解以生成状态图(statediagram)。状态图的节点(node)是所述程序的基本块(basicblock)。基本块是过程控制指令(programcontrolinstruction)(例如,分支(branch)、跳转(jump)、调用(call)、返回(return)等等)之间的指令系列(sequenceofinstruction)。在所述状态图中的每个边缘(edge)是一个由边缘所指引的目标基本块(targetbasicblock)状态改变信息,如下所述,其可成为一阶段标识符。阶段标识符可包括控制转移指令(controltransferinstruction)的指令指标符(instructionpointer,IP)或程序计数器(programcounter,PC)、所述控制转移指令(controltransferinstruction)的目标地址(targetaddress)、和/或控制转移指令的调用堆栈(callstack)。所述调用堆栈(callstack)可包括调用的返回地址(returenaddress)和参数。程序阶段是具有一个或多个基本块的程序其一部分。所述流程接着进行至方块3604。
在方块3604中,所述程序用以分析某些特征。所述特征关于处理器其可配置的方面,例如,快取内存映射、预取器MAT分数(prefetcherMATscore)、和快取配置模式(cacheconfigurationmode)。所述特征例如包括快取命中率、分支预测准确性(branchpredictionaccuracy)、工作集合尺寸、平均快取线寿命、和快取污染(cachepollution)(例如,被预取但从未使用的快取线数目)。所述流程接着进行至方块3606。
在方块3606中,所述程序以一给定的配置(例如,给定的快取内存和/或预取器配置)而被执行,并且通过观察方块3604所分析出的特征中的稳态行为(steadystatebehavior)来确定所述程序的阶段。举例来说,假设快取命中率是分析出的感兴趣特征之一,并假设所述快取命中率从97%变为40%。所述快取命中率变化的趋向指出快取内存配置对所述程序来说之前是好的但是现在并不好。因此,在快取命中率变化之前的基本块系列可以被识别为第一阶段,而在快取命中率变化之后的基本块系列可以被识别为第二阶段。在另一个例子中,假设不同MAT其工作组尺寸是分析出的感兴趣特征之一,则工作组尺寸显着的大位移(shift)可表示出在程序中的一个理想位置以识别出阶段改变。所述流程接着进行至方块3608。
在方块3608中,一旦所述阶段被识别,用于每个阶段的好的配置、或映像、或配置值则可被决定。举例来说,各种不同的离线分析技术可以被使用,其相关说明请参照图34、35和37。所述流程接着进行至方块3612。
在方块3612中,将阶段标识符关联于阶段的变化。上述基本块切换(basicblocktransition)的状态改变信息(statechangeinformation)或潜在阶段标识符(potentialphaseidentifier)(如上所述,在特性分析时发生状态改变)会随着方块3608所判定的好的配置一起被纪录,而所述信息会在程序被测得即将执行时,由设备驱动器(例如是)提供给处理器。所述流程接着进行至方块3614。
在方块3614中,在接收到与所被分析的程序相关联的信息之后,处理器将如图8的阶段标识符802加载(load)到阶段检测器804,其相关详细说明请参照图7-9。所述流程结束于方块3614。
请参照图37,其所绘示为一蛮力方法(bruteforcemethod)之流程图,所述蛮力方法用于判定处理器其可配置方面(例如,其快取内存或预取器)的好的配置或映像。所述方法使用“坐标下降”(“coordinatedescent”)优化算法(optimizationalgorithm)。所述流程开始于方块3702。
在方块3702中,一程序或一程序阶段其欲藉由处理器来改善其性能。所述方法重复执行方块3704-3716直到一好的配置被判定(例如,在一个相对长的时间中没有改变的目前最好配置)或资源已经过期(例如,时间和/或计算资源)。所述流程接着进行至方块3704。
在方块3704中,所述目前最好的配置被设置为默认配置(defaultconfiguration),例如,快取内存或预取器的默认映射。在一实施例中,默认配置简单的就是处理器被制造时的配置。所述流程接着进行至方块3706。
在方块3706中,为每一个配置参数(configurationparameter)来进行方块3708-3712。所述配置参数的一个例子是单一配置位(singleconfigurationbit),其用以例如开启或关闭特征(feature)。所述配置参数的另一个例子是配置域(configurationfield),例如:矢量304、集合群组选取逻辑1106/2106、包裹指定符2001、阈值2308、MAT到MAT集合群组及MAT组群组到阈值映射2908、及MAT到MAT优先级映射3108。所述流程接着进行至方块3708。
在方块3708中,为方块3706配置参数其合理集合值中的每一个来进行方块3712-3716。所述配置参数其合理的集合值取决于配置参数的尺寸、参数的重要性、以及重复计算其值所需资源的量。举例来说,在单一配置位的情况下,单一配置位的两个值都在合理集合(reasonableset)内。举例来说,对于只有或少于16个参数,所述方法可以去尝试所有可能的值。然而,对于相对大的域,例如32位的域,尝试所有2^32个可能的值是不可行的。在此情况下,设计者可以提供一个包括多个值的合理集合给所述方法。举例来说,如上所述,设计者可以观察具有类似特性的MAT群组并将它们组合在一起,以限制可能的数量。如果设计者不能提供所述的值而可能的数量是相对较大,所述方法会用合理数目的参数随机值来重复执行方块3712-3716。所述流程接着进行至方块3712。
在方块3712中,所述程序或程序阶段以目前最好但被方块3708所得到的下一个参数值所修改的配置来运行,并且测量其性能。所述流程接着进行至判定方块3714。
在判定方块3714中,所述方法将方块3712所测量的性能与目前最好性能进行比较,如果前者比较好,所述流程接着进行至方块3716;否则流程接着进行至方块3712,以测试下一个参数值直到所有合理的数值都测试过,在此情况下,所述流程接着进行至方块3708,以重复下一个配置参数直到所有的配置参数都测试过,在此情况下,所述方法结束,而最终为所述程序或程序阶段生成目前最好配置。
在方块3716中,所述方法以在方块3712测试的配置来更新最好的配置。所述流程返回至方块3712,以测试目前参数的下一个数值直到合理的数值都测试过,在此情况下,所述流程返回至方块3708,以重复执行下一个配置参数直到所有的配置参数都测试过,在此情况下,所述方法结束,而最终为所述程序或程序阶段产生目前最好配置。
此处应当注意的是,设计者也许并不理解并且也不需要去理解为什么使用类似于图37的方法所生成的配置能产生好的结果。
请参照图38,其所绘示为一分析结果之圆形分格统计图表3801。根据图34、36和37所示不同的分析所得的结果,可以被概念化为一圆形分格统计图表,每个MAT具有一分片(slice),即每个MAT具有其百分比。在通过以分路来分配快取的情况下,每个MAT其分路子集大致对应其百分比。可替代地,如上所述,MAT可以被分组而每个MAT群组其分路子集大致对应在此群组内所有MAT其百分比的总合。图38示出了一个例子。在以集合群组、组块或包裹来分配快取的情况下,一圆形分格统计图表为每个组群,组块或包裹而被构造,然后以一类似的技术被应用。所述圆形分格统计图表(piechart)3801包括用于每个不同MAT群组的一个分片。在图38的例子中,一预取群组(prefetchgroup)是42%,一代码群组(codegroup)是19%,一浮点群组(floatingpointgroup)是23%,一流数据群组(floatingdatagroup)是11%,以及一堆栈和分页表群组(stackandtablewalkgroip)是5%。
请参照图39,其所绘示为一处理器3900之方块示意图。处理器3900包括指令快取3922,其用以提供指令给指令解码器3923。指令解码器3923用以解码所述指令且提供解码指令给指令调度器3924。指令调度器3924用以将所述指令调度给执行单元3926来执行。优选地,处理器3900的微结构是超纯量和非循序执行,然而本发明并不以此为限。在另一实施例中,指令调度器3924还包括指令调度程序,其用以以超纯量和非循序方式将所述指令调度(scheduling)给多个执行单元。优选地,处理器3900还包括结构缓存器(未示出)与非结构缓存器(未示出)。结构缓存器用以持有处理器3900的结构状态。优选地,处理器3900还包括缓存器别名表(RAT,未示出)和排序缓冲器(ROB,未示出)。所述缓存器别名表(RAT)用以进行缓存器重命名。所述排序缓冲器(ROB)以程序顺序来引退指令。优选地,所述指令调度器包括指令解译器(未示出),其用以将结构指令解译为可被执行单元3926所执行的处理器3900的微指令集结构的微指令。
处理器3900还包括内存子系统3928,其用以提供内存操作元至执行单元3926并从执行单元3926接收内存操作元。优选地,内存子系统3928包括一个或多个加载单元、一个或多个存储单元、加载列、存储列、用于向内存请求快取线的填充列、用于窥探与处理器3900相通信的内存总线的窥探列、分页表寻访引擎和其他相关的功能单元。
处理器3900还包括与内存子系统3928相通信的快取内存102。优选地,快取内存102类似于图1-38的快取内存。虽然图中仅绘出单一个快取内存102,快取内存102可以是较大的快取内存子系统其多个快取内存级之一,例如level-1(L1)指令快取、L1数据快取、与统一level-2(L2)快取,其用以支持L1快取。在一实施例中,快取子系统还包括level-3(L3)快取。处理器3900还可以包括一个或多个预取器,其用以将数据从内存预取至快取内存102。在一个实施例中,处理器3900是一多核处理器,每一个核都具有上述的功能单元,并且这些核共享快取内存102。
内存子系统3928生成快取内存102的内存访问122,其相关说明请参照图1-38的实施例。内存访问122包括内存地址,其为内存被访问的位置。每个内存访问122还包括内存访问类型(memoryaccesstype(MAT))101,如上所述。
虽然本发明的各种实施例已在本文中描述,但是此处应当理解的是,它们仅用于示例而不能以此限定本发明实施之范围,即大凡依本发明申请专利范围及发明说明内容所作之简单的等效变化与修饰,皆仍属本发明专利涵盖之计算器领域范围内。举例来说,软件可以启用本案说明书所描述的装置和方法其功能、制造、建模(modeling)、模拟、描述和/或测试。其可以通过使用通用编程语言(generalprogramminglangiage)来实现(例如,C、C++),硬件描述语言(HDL)其包括VerilogHDL、VHDL等,或其他可用的程序。所述的软件可以设置在任何已知的计算器可用介质,诸如磁带、半导体,磁盘、或光盘(例如,CD-ROM、DVD-ROM等)、网络、有线线路、无线或其它通信介质。本案的装置和方法实施例可以被包括在一半导体知识产权核心,诸如处理器核心(例如,具体或者指定的HDL)和转化为集成电路的硬件。另外,所述装置和方法可以被实施为硬件和软件的组合。因此,本发明不应当由本案描述的任何示例性实施例限制,但应当仅根据下面的权利要求及其等同物限定。具体地,本发明可以在通用计算器中使用的处理器装置所实现。最后,本领域的技术人员应该理解,他们可以容易地使用公开的概念和具体的实施例作为设计或修改其它结构以实施本发明的相同目的,而不脱离本发明的范围的基础所界定所附的权利要求。
以上所述,仅是本发明的实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (17)
1.一种集合关联快取内存,其特征在于,包括:
具有存储组件的阵列,其被布置为M个集合与N个分路,其中所述M个集合中的每个集合属于L个相互排斥的群组中的一个;
分配单元,用以分配所述阵列的存储组件以因应于在所述快取内存中未命中的内存访问;
其中所述内存访问的每一个选取所述M个集合中的一个集合;
其中每个所述内存访问具有多个预定内存访问类型(MAT)其中一个相关联的MAT,其中所述MAT由所述快取内存所接收;
映射用于L个相互排斥的群组中的每一个群组:
为所述多个预定MAT中的每一个MAT,用以将所述MAT关联于所述阵列的N个分路中的一个或多个分路的子集;以及
其中对于每个所述内存访问来说,所述分配单元分配所述選定的組的一个或多个分路的子集中的一個集合,所述選定的組經由映射關聯於内存访问的MAT以及所述L个相互排斥的群组中包括所述選定集合的一个群组。
2.如权利要求1所述的集合关联快取内存,其特征在于,其中所述分配单元包括选取逻辑,用以接收所述内存访问为输入且生成所述L个相互排斥的群组中包括所述选定集合的一个群组的指定符。
3.如权利要求2所述的集合关联快取内存,其特征在于,其中所述分配单元更包括第二选取逻辑,用以选取关联于L个相互排斥的群组中包括使用所述指定符的选定集合的一个群组的矢量集合。
4.如权利要求3所述的集合关联快取内存,其特征在于,其中所述矢量集合指定,为所述多个预定MAT中的每一个MAT,所述关联于所述MAT的阵列的N个分路的其中之一或多个的子集。
5.如权利要求4所述的集合关联快取内存,其特征在于,其中所述多个预定MAT包括以下列表中的至少三个:
由所述处理器的一硬件预取器所生成的一内存访问;
由一浮点指令所生成的一内存访问;
由一融合微指令所生成的一内存访问;
由一媒体指令所生成的一内存访问;
由一用以修改一内存地址的指令所生成的一内存访问;
由一软件预取指令所生成的一内存访问;
一用以加载一結构描述符的内存访问;
由一用以指定一非暂时数据的指令所生成的一内存访问;
由一用以进行非对齐检查的指令所生成的一内存访问;
由一监控特权级别指令所生成的一内存访问;
由一零扩展产指令所生成的一内存访问;
由一遮照移动指令所生成的一内存访问;
由一堆栈推入指令所生成的一内存访问;以及
由所述处理器的一硬件分页表寻访引擎所生成的一内存访问。
6.一种用于操作集合关联快取内存的方法,所述集合关联快取内存包括具有存储组件的阵列,其被布置为M个集合与N个分路,其中所述M个集合中的每个集合属于L个相互排斥的群组中的一个,以及分配单元,用以分配所述阵列的存储组件以因应于在所述快取内存中未命中的内存访问,其中所述内存访问的每一个选取所述M个集合中的一个集合,其中每个所述内存访问具有多个预定内存访问类型(MAT)其中一个相关联的MAT,其特征在于,所述方法包括:
存儲映射,用于L个相互排斥的群组中的每一个群组:
为所述多个预定MAT中的每一个MAT,用以将所述MAT关联于所述阵列的N个分路中的一个或多个分路的子集;以及
其中对于每个所述内存访问来说,分配所述選定集合的一个或多个分路的子集中的一個集合,所述選定集合經由映射關聯於内存访问的MAT以及所述L个相互排斥的群组中包括所述選定集合的一个群组。
7.如权利要求6所述的方法,更包括:
在所述快取内存的操作期间,更新所述映射。
8.如权利要求7所述的方法,更包括:
判定所述处理器上正在运行的程序,其中所述映射是由所述程序的离线分析所判定;以及
更新所述映射以因应于当判定所述处理器上正在运行程序。
9.一种集合关联快取内存,其特征在于,包括:
具有存储组件的阵列,其被布置为M个集合与N个分路,其中所述M个集合中的每个集合属于L个相互排斥的群组中的一个;
映射,用以指定所述阵列的多个组块,其中组块所包括所述阵列的存储组件为所述L个相互排斥的群组其中一个和所述阵列的N个分路其中一个或多个的逻辑交集;
分配单元,用以分配所述阵列的存储组件以因应于在所述快取内存中未命中的内存访问,其中所述内存访问的每一个选取所述M个集合中的一个集合;
其中每个所述内存访问具有多个预定内存访问类型(MAT)其中一个相关联的MAT,其中所述MAT由所述快取内存所接收;
所述映射更,为所述多个组块中的每一个组块,用以将所述多个MAT中的一个或多个关联于所述组块;以及
其中对于每个所述内存访问来说,所述分配单元分配所述选定集合的一个分路,所述选定集合包含于所述多个组块与所述选定集合的交集里的一个组块。
10.如权利要求9所述的集合关联快取内存,其特征在于,其中如果所述映射未将所述内存访问的MAT关联于被所述选定集合所交集的组块,所述分配单元分配所述选定集合的N个分路的任何一个。
11.如权利要求9所述的集合关联快取内存,其特征在于,
其中每个组的N个分路的至少一个没有被所述映射映射到所述多个组块的任何一个;以及
其中如果所述映射未将所述内存访问的MAT关联于被所述选定集合所交集的任何组块,所述分配单元分配所述选定集合的至少一个未被映射分路的任何一个。
12.如权利要求9所述的集合关联快取内存,其特征在于,其中所述多个预定MAT包括以下列表中的至少三个:
由所述处理器的一硬件预取器所生成的一内存访问;
由一浮点指令所生成的一内存访问;
由一融合微指令所生成的一内存访问;
由一媒体指令所生成的一内存访问;
由一用以修改一内存地址的指令所生成的一内存访问;
由一软件预取指令所生成的一内存访问;
一用以加载一結构描述符的内存访问;
由一用以指定一非暂时数据的指令所生成的一内存访问;
由一用以进行非对齐检查的指令所生成的一内存访问;
由一监控特权级别指令所生成的一内存访问;
由一零扩展产指令所生成的一内存访问;
由一遮照移动指令所生成的一内存访问;
由一堆栈推入指令所生成的一内存访问;以及
由所述处理器的一硬件分页表寻访引擎所生成的一内存访问。
13.一种用于操作集合关联快取内存的方法,所述集合关联快取内存包括具有存储组件的阵列,其被布置为M个集合与N个分路,其中所述M个集合中的每个集合属于L个相互排斥的群组中的一个,以及分配单元,用以分配所述阵列的存储组件以因应于在所述快取内存中未命中的内存访问,其中所述内存访问的每一个选取所述M个集合中的一个集合,其特征在于,所述方法包括:
持有映射,用以指定所述阵列的多个组块,其中组块所包括所述阵列的存储组件为所述L个相互排斥的群组其中一个和所述阵列的N个分路其中一个或多个的逻辑交集:
其中每个所述内存访问具有多个预定内存访问类型(MAT)其中一个相关联的MAT,其中所述MAT由所述快取内存所接收;
所述映射更,为所述多个组块中的每一个组块,用以将所述多个MAT中的一个或多个关联于所述组块;以及
其中对于每个所述内存访问来说,所述分配单元分配所述选定集合的一个分路,所述选定集合包含于所述多个组块与所述选定集合的交集里的一个组块。
14.如权利要求13所述的方法,更包括:
如果所述映射未将所述内存访问的MAT关联于被所述选定集合所交集的组块,则分配所述选定集合的N个分路的任何一个。
15.如权利要求13所述的方法,其特征在于,
其中每个集合的N个分路的至少一个没有被所述映射映射到所述多个组块的任何一个;以及
其中如果所述映射未将所述内存访问的MAT关联于被所述选定集合所交集的任何组块,則分配所述选定集合的至少一个未被映射分路的任何一个。
16.如权利要求15所述的方法,更包括:
在所述快取内存的操作期间,更新所述映射。
17.如权利要求16所述的方法,更包括:
判定所述处理器上正在运行的程序,其中所述映射是由所述程序的离线分析所判定;以及
更新所述映射以因应于当判定所述处理器上正在运行程序。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/IB2014/003260 WO2016097812A1 (en) | 2014-12-14 | 2014-12-14 | Cache memory budgeted by chunks based on memory access type |
IBPCT/IB2014/003260 | 2014-12-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105701022A true CN105701022A (zh) | 2016-06-22 |
CN105701022B CN105701022B (zh) | 2019-06-11 |
Family
ID=56126011
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510796666.7A Active CN105701022B (zh) | 2014-12-14 | 2015-11-18 | 组相联高速缓存 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9898411B2 (zh) |
EP (1) | EP3066572B1 (zh) |
CN (1) | CN105701022B (zh) |
TW (1) | TWI594123B (zh) |
WO (1) | WO2016097812A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111459550A (zh) * | 2020-04-14 | 2020-07-28 | 上海兆芯集成电路有限公司 | 具高度领先分支预测器的微处理器 |
CN114556309A (zh) * | 2020-12-07 | 2022-05-27 | 深圳市大疆创新科技有限公司 | 内存空间的分配方法、装置及存储介质 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101867143B1 (ko) * | 2014-12-14 | 2018-07-17 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 이종 치환 정책을 가진 셋트 연관 캐시 메모리 |
EP3066572B1 (en) * | 2014-12-14 | 2020-02-19 | VIA Alliance Semiconductor Co., Ltd. | Cache memory budgeted by chunks based on memory access type |
US9652398B2 (en) * | 2014-12-14 | 2017-05-16 | Via Alliance Semiconductor Co., Ltd. | Cache replacement policy that considers memory access type |
KR101817847B1 (ko) | 2014-12-14 | 2018-02-21 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 메모리 접근 타입에 기초한 통로에 의해 버짓화된 캐시 메모리 |
EP3230874B1 (en) * | 2014-12-14 | 2021-04-28 | VIA Alliance Semiconductor Co., Ltd. | Fully associative cache memory budgeted by memory access type |
US10474458B2 (en) | 2017-04-28 | 2019-11-12 | Intel Corporation | Instructions and logic to perform floating-point and integer operations for machine learning |
US11188234B2 (en) * | 2017-08-30 | 2021-11-30 | Micron Technology, Inc. | Cache line data |
US11934342B2 (en) | 2019-03-15 | 2024-03-19 | Intel Corporation | Assistance for hardware prefetch in cache access |
US20220197800A1 (en) | 2019-03-15 | 2022-06-23 | Intel Corporation | System and methods to provide hierarchical open sectoring and variable sector size for cache operations |
WO2020190796A1 (en) | 2019-03-15 | 2020-09-24 | Intel Corporation | Systems and methods for cache optimization |
WO2020190808A1 (en) | 2019-03-15 | 2020-09-24 | Intel Corporation | Sparse optimizations for a matrix accelerator architecture |
TWI697778B (zh) * | 2019-06-17 | 2020-07-01 | 慧榮科技股份有限公司 | 資料儲存裝置與資料處理方法 |
US11481219B2 (en) | 2020-05-07 | 2022-10-25 | International Business Machines Corporation | Store prefetches for dependent loads in a processor |
US11704250B2 (en) * | 2021-09-28 | 2023-07-18 | Advanced Micro Devices, Inc. | Using request class and reuse recording in one cache for insertion policies of another cache |
US11977783B2 (en) | 2021-10-28 | 2024-05-07 | Silicon Motion, Inc. | Method and apparatus for performing data access control of memory device with aid of predetermined command |
US12061800B2 (en) | 2021-10-28 | 2024-08-13 | Silicon Motion, Inc. | Method and apparatus for performing data access control of memory device with aid of predetermined command |
WO2024058801A1 (en) * | 2022-09-12 | 2024-03-21 | Google Llc | Time-efficient implementation of cache replacement policy |
CN116755951B (zh) * | 2023-08-16 | 2024-03-08 | 荣耀终端有限公司 | 内存颠簸的衡量方法、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101097547A (zh) * | 2006-05-04 | 2008-01-02 | 英特尔公司 | 用智能最近最少使用方案在高速缓存中进行功率性能调整 |
US20100064181A1 (en) * | 2008-09-05 | 2010-03-11 | Moyer William C | Error detection schemes for a unified cache in a data processing system |
CN101727406A (zh) * | 2008-10-20 | 2010-06-09 | 株式会社东芝 | 组相联方式的高速缓存装置、高速缓存方法及处理器系统 |
CN102662868A (zh) * | 2012-05-02 | 2012-09-12 | 中国科学院计算技术研究所 | 用于处理器的动态组相联高速缓存装置及其访问方法 |
US20140143495A1 (en) * | 2012-11-21 | 2014-05-22 | Advanced Micro Devices, Inc. | Methods and apparatus for soft-partitioning of a data cache for stack data |
Family Cites Families (84)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5255384A (en) * | 1985-02-22 | 1993-10-19 | Intergraph Corporation | Memory address translation system having modifiable and non-modifiable translation mechanisms |
US5353425A (en) * | 1992-04-29 | 1994-10-04 | Sun Microsystems, Inc. | Methods and apparatus for implementing a pseudo-LRU cache memory replacement scheme with a locking feature |
US6272595B1 (en) | 1994-08-05 | 2001-08-07 | Intel Corporation | N-way set-associative cache memory which includes a store hit buffer for improved data access |
US5584014A (en) | 1994-12-20 | 1996-12-10 | Sun Microsystems, Inc. | Apparatus and method to preserve data in a set associative memory device |
US5732242A (en) * | 1995-03-24 | 1998-03-24 | Silicon Graphics, Inc. | Consistently specifying way destinations through prefetching hints |
GB2311880A (en) | 1996-04-03 | 1997-10-08 | Advanced Risc Mach Ltd | Partitioned cache memory |
US6092149A (en) | 1997-05-28 | 2000-07-18 | Western Digital Corporation | Disk drive cache system using a dynamic priority sequential stream of data segments continuously adapted according to prefetched sequential random, and repeating types of accesses |
US6223256B1 (en) | 1997-07-22 | 2001-04-24 | Hewlett-Packard Company | Computer cache memory with classes and dynamic selection of replacement algorithms |
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 |
US6055605A (en) | 1997-10-24 | 2000-04-25 | Compaq Computer Corporation | Technique for reducing latency of inter-reference ordering using commit signals in a multiprocessor system having shared caches |
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 |
US6370622B1 (en) * | 1998-11-20 | 2002-04-09 | Massachusetts Institute Of Technology | Method and apparatus for curious and column caching |
JP2001109661A (ja) * | 1999-10-14 | 2001-04-20 | Hitachi Ltd | キャッシュメモリの割当方法及びオペレーティングシステム及びそのオペレーティングシステムを有するコンピュータシステム |
US6629206B1 (en) | 1999-12-31 | 2003-09-30 | Koninklijke Philips Electronics N.V. | Set-associative cache-management using parallel reads and serial reads initiated during a wait state |
US6889291B1 (en) | 2000-06-30 | 2005-05-03 | Intel Corporation | Method and apparatus for cache replacement for a multiple variable-way associative cache |
US6681295B1 (en) * | 2000-08-31 | 2004-01-20 | Hewlett-Packard Development Company, L.P. | Fast lane prefetching |
US7707397B2 (en) * | 2001-05-04 | 2010-04-27 | Via Technologies, Inc. | Variable group associativity branch target address cache delivering multiple target addresses per cache line |
JP3620473B2 (ja) | 2001-06-14 | 2005-02-16 | 日本電気株式会社 | 共有キャッシュメモリのリプレイスメント制御方法及びその装置 |
JP2003131946A (ja) | 2001-10-19 | 2003-05-09 | Nec Corp | キャッシュメモリ制御装置及び方法 |
US7266587B2 (en) * | 2002-05-15 | 2007-09-04 | Broadcom Corporation | System having interfaces, switch, and memory bridge for CC-NUMA operation |
US6912623B2 (en) * | 2002-06-04 | 2005-06-28 | Sandbridge Technologies, Inc. | Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy |
US6944713B2 (en) | 2002-06-18 | 2005-09-13 | Intel Corporation | Low power set associative cache |
JP3989312B2 (ja) | 2002-07-05 | 2007-10-10 | 富士通株式会社 | キャッシュメモリ装置およびメモリ割付方法 |
US7076609B2 (en) * | 2002-09-20 | 2006-07-11 | Intel Corporation | Cache sharing for a chip multiprocessor or multiprocessing system |
US7197605B2 (en) * | 2002-12-30 | 2007-03-27 | Intel Corporation | Allocating cache lines |
US7290093B2 (en) * | 2003-01-07 | 2007-10-30 | Intel Corporation | Cache memory to support a processor's power mode of operation |
US7020748B2 (en) * | 2003-01-21 | 2006-03-28 | Sun Microsystems, Inc. | Cache replacement policy to mitigate pollution in multicore processors |
US20040199727A1 (en) * | 2003-04-02 | 2004-10-07 | Narad Charles E. | Cache allocation |
US7711901B2 (en) * | 2004-02-13 | 2010-05-04 | Intel Corporation | Method, system, and apparatus for an hierarchical cache line replacement |
US20050198442A1 (en) | 2004-03-02 | 2005-09-08 | Mandler Alberto R. | Conditionally accessible cache memory |
JP4036206B2 (ja) * | 2004-03-31 | 2008-01-23 | 日本電気株式会社 | セットアソシアティブキャッシュシステム及びキャッシュメモリの制御方法 |
US7558920B2 (en) * | 2004-06-30 | 2009-07-07 | Intel Corporation | Apparatus and method for partitioning a shared cache of a chip multi-processor |
US7284095B2 (en) | 2004-08-18 | 2007-10-16 | International Business Machines Corporation | Latency-aware replacement system and method for cache memories |
US7930484B2 (en) * | 2005-02-07 | 2011-04-19 | Advanced Micro Devices, Inc. | System for restricted cache access during data transfers and method thereof |
JP4784974B2 (ja) * | 2005-07-15 | 2011-10-05 | 株式会社日立製作所 | 計算機システム、管理計算機及びデータベース管理システムの制御方法 |
CN1746865A (zh) * | 2005-10-13 | 2006-03-15 | 上海交通大学 | 数字信号处理器可重构指令高速缓存部分的实现方法 |
WO2007068122A1 (en) * | 2005-12-16 | 2007-06-21 | Univ Western Ontario | System and method for cache management |
CN100495362C (zh) | 2006-07-18 | 2009-06-03 | 威盛电子股份有限公司 | 可锁定码的快取及其处理器、控制器与控制方法 |
JP4299848B2 (ja) | 2006-08-09 | 2009-07-22 | エルピーダメモリ株式会社 | 半導体記憶装置 |
JP2008102733A (ja) | 2006-10-19 | 2008-05-01 | Hitachi Ltd | コード生成方法およびコンパイラ |
US9104599B2 (en) * | 2007-12-06 | 2015-08-11 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for destaging cached data |
US7917701B2 (en) | 2007-03-12 | 2011-03-29 | Arm Limited | Cache circuitry, data processing apparatus and method for prefetching data by selecting one of a first prefetch linefill operation and a second prefetch linefill operation |
US7921260B2 (en) * | 2007-10-24 | 2011-04-05 | International Business Machines Corporation | Preferred write-mostly data cache replacement policies |
US8335122B2 (en) * | 2007-11-21 | 2012-12-18 | The Regents Of The University Of Michigan | Cache memory system for a data processing apparatus |
US7962695B2 (en) | 2007-12-04 | 2011-06-14 | International Business Machines Corporation | Method and system for integrating SRAM and DRAM architecture in set associative cache |
JP5217432B2 (ja) * | 2007-12-28 | 2013-06-19 | 富士通株式会社 | セクタ機能付きキャッシュメモリ |
US8131951B2 (en) * | 2008-05-30 | 2012-03-06 | Freescale Semiconductor, Inc. | Utilization of a store buffer for error recovery on a store allocation cache miss |
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 |
US8195884B2 (en) * | 2008-09-18 | 2012-06-05 | International Business Machines Corporation | Network on chip with caching restrictions for pages of computer memory |
US8352684B2 (en) | 2008-09-23 | 2013-01-08 | International Business Machines Corporation | Optimal cache replacement scheme using a training operation |
US8364898B2 (en) * | 2009-01-23 | 2013-01-29 | International Business Machines Corporation | Optimizing a cache back invalidation policy |
JP2010244435A (ja) | 2009-04-08 | 2010-10-28 | Panasonic Corp | キャッシュ制御装置及びキャッシュ制御方法 |
US8171220B2 (en) * | 2009-04-24 | 2012-05-01 | International Business Machines Corporation | Cache architecture with distributed state bits |
US8291169B2 (en) * | 2009-05-28 | 2012-10-16 | International Business Machines Corporation | Cache line use history based done bit modification to D-cache replacement scheme |
US8250332B2 (en) | 2009-06-11 | 2012-08-21 | Qualcomm Incorporated | Partitioned replacement for cache memory |
JP5413001B2 (ja) * | 2009-07-09 | 2014-02-12 | 富士通株式会社 | キャッシュメモリ |
US8392658B2 (en) * | 2009-07-10 | 2013-03-05 | Apple Inc. | Cache implementing multiple replacement policies |
US8745618B2 (en) * | 2009-08-25 | 2014-06-03 | International Business Machines Corporation | Cache partitioning with a partition table to effect allocation of ways and rows of the cache to virtual machine in virtualized environments |
US8301842B2 (en) * | 2009-08-26 | 2012-10-30 | Via Technologies, Inc. | Efficient pseudo-LRU for colliding accesses |
US20110072218A1 (en) | 2009-09-24 | 2011-03-24 | Srilatha Manne | Prefetch promotion mechanism to reduce cache pollution |
US8412885B2 (en) | 2009-11-12 | 2013-04-02 | Intel Corporation | Searching a shared cache by using search hints and masked ways |
CN101763316B (zh) | 2009-12-25 | 2011-06-29 | 东南大学 | 基于虚存机制的指令片上异构存储资源动态分配的方法 |
US8838901B2 (en) * | 2010-05-07 | 2014-09-16 | International Business Machines Corporation | Coordinated writeback of dirty cachelines |
US8909867B2 (en) | 2010-08-24 | 2014-12-09 | Advanced Micro Devices, Inc. | Method and apparatus for allocating instruction and data for a unified cache |
US9183135B2 (en) | 2011-01-21 | 2015-11-10 | Micron Technology, Inc. | Preparation of memory device for access using memory access type indicator signal |
US8688915B2 (en) * | 2011-12-09 | 2014-04-01 | International Business Machines Corporation | Weighted history allocation predictor algorithm in a hybrid cache |
US20130219125A1 (en) | 2012-02-21 | 2013-08-22 | Microsoft Corporation | Cache employing multiple page replacement algorithms |
IN2014DN09685A (zh) | 2012-04-17 | 2015-07-31 | Zte Corp | |
US9767025B2 (en) | 2012-04-18 | 2017-09-19 | Qualcomm Incorporated | Write-only dataless state for maintaining cache coherency |
US10019381B2 (en) * | 2012-05-01 | 2018-07-10 | Nvidia Corporation | Cache control to reduce transaction roll back |
US10140219B2 (en) * | 2012-11-02 | 2018-11-27 | Blackberry Limited | Multi-port shared cache apparatus |
US9075730B2 (en) * | 2012-12-21 | 2015-07-07 | Advanced Micro Devices, Inc. | Mechanisms to bound the presence of cache blocks with specific properties in caches |
US20140189244A1 (en) * | 2013-01-02 | 2014-07-03 | Brian C. Grayson | Suppression of redundant cache status updates |
US9223710B2 (en) | 2013-03-16 | 2015-12-29 | Intel Corporation | Read-write partitioning of cache memory |
EP3077885B1 (en) * | 2013-12-05 | 2020-09-23 | NXP USA, Inc. | Bandwidth estimation circuit, computer system, method for estimating and predicting the bandwidth and computer readable program product |
CN105793833B (zh) * | 2014-09-18 | 2019-08-06 | 上海兆芯集成电路有限公司 | 处理器及其操作方法、计算机可读存储介质 |
US9275714B1 (en) * | 2014-09-26 | 2016-03-01 | Qualcomm Incorporated | Read operation of MRAM using a dummy word line |
US9798668B2 (en) * | 2014-12-14 | 2017-10-24 | Via Alliance Semiconductor Co., Ltd. | Multi-mode set associative cache memory dynamically configurable to selectively select one or a plurality of its sets depending upon the mode |
KR101867143B1 (ko) * | 2014-12-14 | 2018-07-17 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 이종 치환 정책을 가진 셋트 연관 캐시 메모리 |
EP3066572B1 (en) * | 2014-12-14 | 2020-02-19 | VIA Alliance Semiconductor Co., Ltd. | Cache memory budgeted by chunks based on memory access type |
EP3230874B1 (en) * | 2014-12-14 | 2021-04-28 | VIA Alliance Semiconductor Co., Ltd. | Fully associative cache memory budgeted by memory access type |
US9652398B2 (en) * | 2014-12-14 | 2017-05-16 | Via Alliance Semiconductor Co., Ltd. | Cache replacement policy that considers 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 |
EP3055774B1 (en) * | 2014-12-14 | 2019-07-17 | VIA Alliance Semiconductor Co., Ltd. | Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or a subset of its ways depending on the mode |
-
2014
- 2014-12-14 EP EP14891607.5A patent/EP3066572B1/en active Active
- 2014-12-14 WO PCT/IB2014/003260 patent/WO2016097812A1/en active Application Filing
- 2014-12-14 US US14/890,898 patent/US9898411B2/en active Active
-
2015
- 2015-11-18 CN CN201510796666.7A patent/CN105701022B/zh active Active
- 2015-11-25 TW TW104139177A patent/TWI594123B/zh active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101097547A (zh) * | 2006-05-04 | 2008-01-02 | 英特尔公司 | 用智能最近最少使用方案在高速缓存中进行功率性能调整 |
US20100064181A1 (en) * | 2008-09-05 | 2010-03-11 | Moyer William C | Error detection schemes for a unified cache in a data processing system |
CN102138129A (zh) * | 2008-09-05 | 2011-07-27 | 飞思卡尔半导体公司 | 用于数据处理系统中的统一高速缓存的错误检测方案 |
CN101727406A (zh) * | 2008-10-20 | 2010-06-09 | 株式会社东芝 | 组相联方式的高速缓存装置、高速缓存方法及处理器系统 |
CN102662868A (zh) * | 2012-05-02 | 2012-09-12 | 中国科学院计算技术研究所 | 用于处理器的动态组相联高速缓存装置及其访问方法 |
US20140143495A1 (en) * | 2012-11-21 | 2014-05-22 | Advanced Micro Devices, Inc. | Methods and apparatus for soft-partitioning of a data cache for stack data |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111459550A (zh) * | 2020-04-14 | 2020-07-28 | 上海兆芯集成电路有限公司 | 具高度领先分支预测器的微处理器 |
CN114556309A (zh) * | 2020-12-07 | 2022-05-27 | 深圳市大疆创新科技有限公司 | 内存空间的分配方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
TWI594123B (zh) | 2017-08-01 |
TW201633142A (zh) | 2016-09-16 |
EP3066572A1 (en) | 2016-09-14 |
EP3066572A4 (en) | 2017-03-29 |
EP3066572B1 (en) | 2020-02-19 |
US20160350227A1 (en) | 2016-12-01 |
CN105701022B (zh) | 2019-06-11 |
US9898411B2 (en) | 2018-02-20 |
WO2016097812A1 (en) | 2016-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105701022A (zh) | 基于内存访问类型以组块来分配的快取内存 | |
CN105701032A (zh) | 具多样替换策略的集合关联快取内存 | |
CN105701023A (zh) | 考虑到内存访问类型的快取内存替换策略 | |
CN105701034A (zh) | 基于内存访问类型以分路来分配的快取内存 | |
TWI606338B (zh) | 以記憶體存取類型來分配的全關聯快取記憶體及其操作方法 | |
CN105701033B (zh) | 取决于模式而可动态配置的高速缓存存储器 | |
CN105701031A (zh) | 取决于模式而可动态配置以选择分配至全部或是一个组的多模式组相联高速缓存存储器 | |
CN105701030A (zh) | 根据卷标比特的动态高速缓存置换路选择 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
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. |
|
CP01 | Change in the name or title of a patent holder |