具多样替换策略的集合关联快取内存的制作方法

文档序号:9921973阅读:254来源:国知局
具多样替换策略的集合关联快取内存的制作方法【专利说明】具多样替换策略的集合关联快取内存【
发明内容】[0001]本發明的一方面提出了一种集合关联快取内存,包括:具有存储组件的阵列,其被布置为Μ个集合与N个分路;分配单元,用以分配所述阵列的存储组件以因应于在所述快取内存中未命中的内存访问,其中所述内存访问的每一个选取所述Μ个集合中的一个集合;包裹指定符,用于多个包裹中的每一个包裹,所述包裹指定符用以指定:包含于所述包裹的Ν个分路的分路子集,其中关联于选定集合的包裹的分路子集相互排斥;以及多个预定替换方案中且关联于所述包裹的其中一个替换方案;以及其中对于每个所述内存访问来说,所述分配单元:选取所述多个包裹的其中一个包裹的包裹指定符以因应于所述内存访问;以及使用关联于所述包裹的替换方案来分配所述包含于包裹的被选取集合的Ν个分路中的子集。[0002]本發明的另一方面提出了一种用于操作集合关联快取内存的方法,所述集合关联快取内存包括具有存储组件的阵列且其被布置为Μ个集合与Ν个分路以及分配单元用以分配所述阵列的存储组件以因应于在所述快取内存中未命中的内存访问,其中所述内存訪問中的每一个选取所述Μ个集合中的其中一个,其特征在于,所述方法包括:为多个包裹中的每一个包裹来存儲包裹指定符,所述包裹指定符用以指定:包含于所述包裹的Ν个分路的子集,其中关联于选定集合的包裹的分路子集相互排斥;以及多个预定替换方案中且关联于所述包裹的一个替换方案;以及对于每个所述内存访问来说:选取所述多个包裹的其中一个包裹的包裹指定符以因应于所述内存访问;以及使用关联于所述包裹的替换方案来分配所述包含于包裹的被选取集合的Ν个分路中的子集。[0003]本發明的再一方面提出了一种集合关联快取内存,其特征在于,包括:具有存储组件的阵列,其被布置为Μ个集合与Ν个分路;分配单元,用以分配所述阵列的存储组件以因应于在所述快取内存中未命中的内存访问,其中所述内存訪問的每一个选取所述Μ个集合的其中一个集合;以及其中当分配所述被选取集合的Ν个分路中的第一子集时,所述分配单元使用第一替换方案,当分配所述被选取集合的Ν个分路中的第二子集时,所述分配单元使用第二替换方案;以及其中所述第一替换方案和第二替换方案不同。[0004]本發明的再一方面提出了一种集合关联快取内存,其特征在于,包括:具有存储组件的阵列,其被布置为Μ个集合与Ν个分路,其中所述Ν个集合的每一个组抱括相关联的替换位;分配单元,用以分配所述阵列的存储组件以因应于在所述快取内存中未命中的内存访问,其中所述内存访问的每一个选取所述Μ个集合的其中一个集合;其中当分配所述被选定集合的Ν个分路中的第一子集时,所述分配单元使用所述替换位的第一子集,当分配所述被选取集合的Ν个分路中的第二子集时,所述分配单元使用所述替换位的第二子集;以及其中所述替换位的第一子集和第二子集相互排斥。[0005]为让本发明的上述和其它目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。【附图说明】[0006]图1为一种集合关联快取内存的方块示意图。[0007]图2为映射108,所述映射108将MAT映射到图1的快取内存102的分路子集。[0008]图3为图1的快取内存102其部分之更详细方块示意图。[0009]图4为一种处理器其运作流程图,所述处理器具有图1的快取内存102。[0010]图5为图1的快取内存102其运作流程图。[0011]图6为根据本发明一实施例之图5的方块504其运作流程图。[0012]图7为一种系统其运作流程图,所述系统具有一种处理器,所述处理器具有图1的快取内存102。[0013]图8为一种处理器的组件示意图,所述处理器包括图1的快取内存102。[0014]图9为图8的处理器其运作流程图,所述处理器具有图1的快取内存102。[0015]图10为集合关联快取内存1002之方块不意图。[0016]图11为图10的快取内存1002其部分之更详细方块示意图。[0017]图12为一种处理器其运作流程图,所述处理器具有图1之快取内存1002。[0018]图13为图10的快取内存1002其运作流程图。[0019]图14为根据本发明之一替代实施例之集合关联快取内存1402之方块示意图。[0020]图15为根据本发明之一替代实施例之集合关联快取内存1502之方块示意图。[00211图16为图15的快取内存1502其运作流程图。[0022]图17为根据本发明之一替代实施例之集合关联快取内存1702之方块示意图。[0023]图18为图17的快取内存1702其运作流程图。[0024]图19为集合关联快取内存1902之方块示意图。[0025]图20为根据本发明之一实施例之包裹指定符2001和三重包裹指定符2021之方块示意图。[0026]图21为图19的快取内存1902其部份更详细之方块示意图。[0027]图22A为一种处理器其运作流程图,所述处理器具有图19的快取内存1902。[0028]图22B为根据本发明之一实施例之图19的快取内存1902其运作流程图。[0029]图22C为图19的快取内存1902其方块示意图,所述快取内存1902采用异质替换策略。[0030]图22D为根据本发明之一实施例之图19的快取内存1902其方块示意图,所述快取内存1902其采用异质替换策略。[0031]图22E为根据本发明之一实施例之图19的快取内存1902其方块示意图,所述快取内存1902其采用异质替换策略。[0032]图23为全关联快取内存2302之方块示意图。[0033]图24为根据本发明之一实施例之从MATs之一者到图23的阈值2308其映射之示意图。[0034]图25为图1的快取内存102其部分之更详细之方块示意图。[0035]图26为一种处理器其运作流程图,所述处理器具有图23的快取内存2302。[0036]图27为图23的快取内存2302其运作流程图。[0037]图28为图23之全关联快取内存2302其运作流程图。[0038]图29为根据本发明一实施例之从MATs之一者到MAT群组2909的映射2908与从MAT群组2909到阈值2911的映射之示意图。[0039]图30为图23的快取内存2302其运作流程图。[0040]图31为集合关联快取内存3102之方块示意图。[0041]图32为根据本发明之一实施例之从MATs之一者到图31的优先级3108其映射之示意图。[0042]图33为考虑到快取线其MAT的快取线替换策略流程图。[0043]图34为用于程序和程序阶段的映像其生成流程图。[0044]图35为快取访问图形和从此图形提取的数据示意图。[0045]图36为程序其阶段分析之流程图。[0046]图37为蛮力方法之流程图,所述蛮力方法用于判定处理器其可配置方面(例如,其快取内存或预取器)的好的配置或映像。[0047]图38为分析结果之圆形分格统计图表3801。[0048]图39为处理器3900之方块示意图。【具体实施方式】[0049]为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的透明显示装置及具有透明显示装置的电子设备其具体结构、特征及功效,详细说明如后。[0050]有关本发明的前述及其他技术内容、特点及功效,在以下配合参考图式的实施例详细说明中将可清楚的呈现。通过【具体实施方式】的说明,当可对发明为达成预定目的所采取的技术手段及功效得以更加深入且具体的了解,然而所附图式仅是提供参考与说明之用,并非用来对本发明加以限制。[0051]请参考图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。[0052]内存访问类型(MAT)是指内存访问的特征(characteristic),其衍生于生成此内存访问的指令(instruction)之特征、或是生成此内存访问的处理器的功能单元(functionalunit)之类型(type)、或是当此内存访问生成时,此时处理器的操作模式(operatingmode)、或是正被内存访问所访问的数据类型(datatype)。[OO53]所述指令的特征例如是被指令所指定的操作(operation)。所述处理器的功能单元其类型例如是加载单元(loadunit)、存储单元(storeunit)、整数单元(integerunit)、浮点单元(floatingpointunit)、媒体单元(mediaunit)、分页表寻访引擎(tablewalkengine)、指令获取单元(instructionfetchunit)和硬件预取器(hardwareprefetcher)(例如,指令预取器(instructionprefetcher)、数据流预取器(streamprefetcher)、框预取器(boxprefetcher)、L1D预取器(LIDprefetcher))。所述处理器的操作模式例如是监控模式(supervisormode)(或特权模式(privilegedmode),或x86ring0),系统管理模式(systemmanagementmode)(例如,x86的系统管理模式(SMM)、保护模式(protectedmode)(例如,x86实模式(x86RealMode)、虚拟x86模式(Virtualx86mode)、保护模式、长模式(longmode))、虚拟机模式(virtualmachinemode)(例如,x86VirtualMachineeXtensions(VMX))D所述被访问的数据类型例如是代码(code)、描述符表(descriptortable)(例如,x86指令集架构全域描述符表(x86instructionsetarchitectureglobaldescriptortable(GDT))和中断描述符表(interruptdescriptortable,IDT))、页符表(pagetable)、系统管理模式(例如,x86SMM)状态保存空间(statesavespace)、虚拟机模式(例如,x86VMX)、状态保存空间、堆栈(stack)、压缩数据(compresseddata)、常数(constant)、浮点、加密密钥(cryptographickey)、加密有效载荷(cryptographicpayload)和连结表(linkedlist)〇[0054]由指令获取单元所生成的内存访问可被称为代码获取(codefetch),而由硬件指令预取器(hardwareinstructionprefetcher)所生成的内存访问可被称为代码预获取(codeprefetch)〇[0058]表1[0059]在一实施例中,指令包括由处理器的指令解译器(instructiontransistor)所生成的微指令(microinstruction)。指令解译器用以将结构指令(architecturalinstruction)(例如,x86指令集结构指令(x86instructionsetarchitectureinstruction))解译成微指令。[0060]内存访问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))而趋向于非必要的,贝lj替换方案更新替换位114,以使得被替换的分路被插入于较中间位置而非最近较常用的某个位置。[0061]阵列104中的每个存储组件112用以持有(hold)快取线数据(data)、快取线标签(tag)、和快取线状态(status),例如,MESI状态。每个集合包括对应于每个分路(例如,共16个分路)的一个存储组件112。在一实施例中,快取线是64字节(byte)的数据,但本发明不以此为限。如上所述,每个集合包括替换位114。在一实施例中,阵列104是一个单一阵列(singlearray),其用以持有快取线数据、标签、状态以及替换位114。在另一实施例中,阵列104具有两个阵列,第一阵列用以持有快取线数据(数据阵列(dataarray))而第二阵列用以持有标签、状态以及替换位114(标签阵列(tagarray))。在另一实施例中,第三阵列(替换阵列(replacementarray))用以持有替换位114而非标签阵列。[0062]在一实施例中,分配单元106是快取内存102其一个或多个标签管线(tagpipeline)的一部份。所述标签管线用以从,例如处理核心(processingcore)(例如是从一处理核心的内存子系统(memorysubsystem),例如是加载/存储列(load/storequeue)或专用快取内存(privatecachememories)),接收内存访问并访问阵列104以进行内存访问,例如是从阵列104读取数据或将数据写入到阵列104。优选地,标签管线是一种多级(stage)的管线,非常类似于处理器的管道级(pipelinestage)。每一级的管道用以进行内存访问的子操作(sub-operation)。所述子操作例如是使具有指定集合和分路的条目(entry)无效;为地址的状态询问(query)标签阵列;如果地址不存在,基于所选定集合其替换位来判定那个分路来做分配;更新指定集合和分路其状态;如果地址存在,生成用以从数据阵列中读取数据的请求;如果地址存在,生成用以写入数据至数据阵列中的请求等等。内存访问的全部操作可由所述多个子操作一起完成。有益地,通过具有多级的管线,当有需要时分配单元106可以执行一系列的子操作以完成相对复杂的替换方案。优选地,分配单元106更包括转发网络(forwardingnetwork),其用以转发较后级管道的结果至较前级管道。[0063]快取内存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而被更新。[0064]请参照图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的处理器其说明类似。[0065]优选地,具有快取内存102的处理器是多核处理器,而在多核处理器中,多个核心共享快取内存102。然而,本发明亦适用于单核处理器。此外,快取内存102可以是处理器的快取层次(cachehierarchy)的任何层级(level)。然而,优选地,快取内存102是处理器的末级快取(last-levelcache,LLC)。优选地,处理器包括指令快取(instructioncache),其用以提供指令至指令解码器(instructiondecoder)。指令解码器用以解码(decode)指令并将解码后的指令提供至指令调度器(instructiondispatcher)。指令调度器用以将指令调度给执行单元(eXecutiοnunit)来执行。优选地,处理器的微结构(microarchitecture)是超纯量(superscalar)和非循序执行(out-〇f-〇rderexecution),然而本发明并不以此为限。在另一实施例中,指令调度器还包括指令调度器(instructionscheduler),其用以以超纯量和非循序方式将指令调度(scheduling)给多个执行单元。优选地,处理器还包括结构缓存器(architecturalregisters)与非结构缓存器(11〇11-architecturalregisters)。结构缓存器用以持有处理器的结构状态(architecturalstate)。优选地,处理器还包括缓存器别名表(registeraliastable)(RAT)和排序缓冲器(reorderbuffer)(ROB)。缓存器别名表(RAT)用以执行缓存器重命名(registerrenaming)。排序缓冲器(ROB)以程序顺序(programorder)来引退指令(retireinstruction)。优选地,指令调度器包括指令解译器(instructiontranslator),当前第1页1 2 3 4 5 6 
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1