设备和系统的制作方法

文档序号:19104442发布日期:2019-11-12 22:30阅读:169来源:国知局
设备和系统的制作方法

本公开内容大体涉及用于存储的设备和系统。



背景技术:

处理核心和包括处理核心的设备(诸如处理器、移动电话、平板电脑、膝上型计算机、台式计算机、嵌入式处理系统等)通常可以包括一个或多个高速缓冲存储器(例如指令高速缓冲存储器、数据高速缓冲存储器、处理器高速缓冲存储器、组合的高速缓冲存储器等),其可以例如使用一个或多个随机存取存储器(RAM)来实现。高速缓冲存储器临时存储将来可能被处理核心使用的代码或数据,诸如最近使用的代码或数据。高速缓冲替换算法促进利用将来更可能被使用的代码和数据来替换将来不太可能被使用的代码和数据。常规地,采用随机替换算法或最久未使用(LRU)算法。



技术实现要素:

为了更加有效地管理存储器,本实用新型提供一种用于存储的设备和系统。

根据一个方面,提供了一种设备,包括:存储器阵列,具有多个通路和多个地址线路;以及高速缓冲控制电路,耦合到存储器阵列,并且高速缓冲控制电路在操作中,通过以下项来对与多个地址线路中的地址线路相关联的高速缓冲未命中做出响应:基于指示多个通路中的通路的第一控制变量以及与地址线路相关联并且与多个通路中的相应通路相关联的第二控制变量集合,选择多个通路中的通路;将与高速缓冲未命中相关联的数据写入到所选择的通路;基于第二控制变量集合,设置第二控制变量集合中的与除了所选择的通路之外的通路相关联的变量;设置第二控制变量集合中的与所选择的通路相关联的变量,以指示所选择的通路的地址线路最近被替换;以及设置第一控制变量以指示所选择的通路;以及通过以下项来对与地址线路相关联的高速缓冲命中做出响应:保持第一控制变量和第二控制变量集合的当前值。

在一些实施例中,存储器阵列被组织成四个通路。

在一些实施例中,第一控制变量指示多个通路中的最新被替换的通路。

在一些实施例中,第二控制变量集合指示多个通路中的相关联的通路是否最近被替换。

在一些实施例中,基于第一控制变量和第二控制变量集合来选择多个通路中的通路包括:确定是否第二控制变量集合中的所有变量都指示相关联的通路最近被替换;响应于确定第二控制变量集合中的所有变量都指示相关联的通路最近被替换,选择除了由第一控制变量指示的通路之外的通路;以及响应于确定不是第二控制变量集合中的所有变量都指示相关联的通路最近被替换,识别未指示相关联的通路最近被替换的第二控制变量,并且选择与所识别的第二控制变量相关联的通路。

在一些实施例中,识别未指示相关联的通路最近被替换的第二控制变量包括:以与除了由第一控制变量识别的通路之外的通路相关联的第二控制变量开始。

在一些实施例中,与除了由第一控制变量识别的通路之外的通路相关联的第二控制变量被顺序地评估。

在一些实施例中,除了由第一控制变量识别的通路之外的通路的第二控制变量被随机地评估。

在一些实施例中,基于第二控制变量集合来设置第二控制变量集合中的与除了所选择的通路之外的通路相关联的变量包括:确定是否第二控制变量集合中的所有变量都指示相关联的通路最近被替换;以及响应于确定第二控制变量集合中的所有变量都指示相关联的通路最近被替换,重置地址线路的第二控制变量集合中的与除了所选择的通路之外的通路相关联的变量。

在一些实施例中,与地址线路相关联的第二控制变量集合被存储在地址线路的相应通路的一位字段中。

在一些实施例中,第一控制变量被存储在两位触发器中。

根据一个方面,提供了一种系统,包括:处理核心;以及高速缓冲存储器,耦合到处理核心,高速缓冲存储器包括:高速缓冲存储器阵列,具有多个通路和多个地址线路;以及控制电路,耦合到高速缓冲存储器阵列,并且控制电路在操作中,通过以下项来对与多个地址线路中的地址线路相关联的高速缓冲未命中做出响应:基于第一控制变量以及第二控制变量集合来选择多个通路中的通路,第一控制变量指示多个通路中的通路,第二控制变量集合与地址线路相关联并且与多个通路中的相应通路相关联;将与高速缓冲未命中相关联的数据写入到所选择的通路;基于第二控制变量集合,设置第二控制变量集合中的与除了所选择的通路之外的通路相关联的变量;设置第二控制变量集合中的与所选择的通路相关联的变量,以指示所选择的通路的地址线路最近被替换;以及设置第一控制变量以指示所选择的通路是最新被替换的通路;以及通过以下项来对与地址线路相关联的高速缓冲命中做出响应:保持第一控制变量和第二控制变量集合的当前值。

在一些实施例中,第二控制变量集合指示多个通路中的相关联的通路是否最近被替换。

在一些实施例中,基于第一控制变量和第二控制变量集合来选择多个通路中的通路包括:确定是否第二控制变量集合中的所有变量都指示相关联的通路最近被替换;响应于确定第二控制变量集合中的所有变量都指示相关联的通路最近被替换,选择除了由第一控制变量指示的通路之外的通路;以及响应于确定不是第二控制变量集合中的所有变量都指示相关联的通路最近被替换,识别未指示相关联的通路最近被替换的第二控制变量,并且选择与所识别的第二控制变量相关联的通路。

在一些实施例中,基于第二控制变量集合来设置第二控制变量集合中的与除了所选择的通路之外的通路相关联的变量包括:确定是否第二控制变量集合中的所有变量都指示相关联的通路最近被替换;以及响应于确定第二控制变量集合中的所有变量都指示相应通路最近被替换,重置第二控制变量集合中的与除了所选择的通路之外的通路相关联的变量。

在一些实施例中,包括耦合到处理核心并且耦合到高速缓冲存储器的主存储器。

本实用新型可以实现有益的技术效果。

附图说明

图1是根据一个实施例的具有处理核心和高速缓冲存储器的电子设备或系统的一个实施例的功能框图。

图2图示了采用随机高速缓冲替换的4通路高速缓冲存储器的一个实施例。

图3图示了采用最久未使用(LRU)高速缓冲替换的4通路高速缓冲存储器的一个实施例。

图4图示了采用最新被替换(MRR)高速缓冲替换的一个实施例的4通路高速缓冲存储器的一个实施例。

图5图示了管理高速缓冲存储器中的数据的替换的方法的一个实施例。

图6图示了响应于高速缓冲未命中而选择高速缓冲存储器中的存储数据的通路的方法的一个实施例。

图7图示了管理高速缓冲存储器中的数据的替换的方法的一个实施例。

具体实施方式

在以下描述中,阐述了某些细节以便提供对设备、系统、方法和物品的各种实施例的透彻理解。然而,本领域技术人员将理解,可以在没有这些细节的情况下实践其他实施例。在其他情况下,例如与诸如晶体管、乘法器、加法器、除法器、比较器、晶体管、集成电路、逻辑门、有限状态机、存储器、接口、总线系统等的电路相关联的公知结构和方法在一些附图中未被示出或详细描述,以避免不必要地使对实施例的描述模糊不清。

除非上下文另有要求,否则在整个说明书和随后的权利要求书中,词语“包括(comprise)”及其变形诸如“包括(comprising)”和“包括(comprises)”应在开放的包含性意义上来理解,也就是说,被理解为“包括,但不限于”。

在整个本说明书中对“一个实施例”或“实施例”的引用意味着:结合该实施例描述的特定特征、结构或特性被包括在至少一个实施例中。因此,在整个本说明书各处出现的短语“在一个实施例中”或“在实施例中”不一定是指相同的实施例或所有实施例。此外,特定特征、结构或特性可以以任何合适的方式在一个或多个实施例中组合,以获得另外的实施例。

标题仅出于方便而提供,并不解释本公开内容的范围或含义。

附图中的元素的大小和相对位置不一定是按比例绘制的。例如,各种元素的形状和角度并不是按比例绘制的,并且这些元素中的一些元素被放大和定位以改善绘图易读性。此外,绘制的元素的特定形状不一定意图传达关于特定元素的实际形状的任何信息,并且仅仅为了易于在附图中识别而被选择。

图1是将要描述的实施例可以应用到的类型的电子设备或系统100的一个实施例的功能框图。系统100包括一个或多个处理核心或电路102。处理核心102可以包括例如一个或多个处理器、状态机、微处理器、可编程逻辑电路、分立电路、逻辑门、寄存器等、及其各种组合。处理核心可以控制系统100的整体操作、由系统100对应用程序的执行等。系统100包括一个或多个存储器,诸如一个或多个易失性和/或非易失性存储器,其可以存储例如与由系统100执行的应用和操作有关的指令和数据中的全部或部分。如所图示的,系统100包括高速缓冲存储器104、主存储器106和辅助存储器108。系统100包括:一个或多个其他电路150,其可以包括接口、收发器、天线、电源等;以及主要总线系统160,其可以包括耦合到系统100的各种组件的一个或多个数据、地址、功率和/或控制总线。如所图示的,系统100包括额外总线系统,诸如:总线系统162,其通信地耦合高速缓冲存储器104和处理核心102;总线系统164,其通信地耦合高速缓冲存储器104和主存储器106;总线系统166,其通信地耦合主存储器106和处理核心102;以及总线系统168,其通信地耦合主存储器106和辅助存储器108。

在一些实施例中,系统100可以包括比图示的组件更多的组件,可以包括比图示的组件更少的组件,可以将图示的组件分成单独的组件,可以组合图示的组件等,以及其各种组合。例如,除了内部辅助存储器或者代替内部辅助存储器,辅助存储器108可以包括通过接口耦合到系统100的外部存储器。

主存储器106通常是系统100的工作存储器(例如处理核心102在其上工作的存储器),并且通常可以是有限大小的易失性存储器。辅助存储器108通常可以是非易失性存储器,其存储在系统100需要时可以取回并存储在主存储器中的指令和数据。与辅助存储器108相比,高速缓冲存储器104是相对较快的存储器,并且通常具有可能大于主存储器106的大小的有限大小。

高速缓冲存储器104临时存储供系统100稍后使用的代码和数据。代替从辅助存储器108中取回所需的代码或数据以存储在主存储器104中,系统100可以首先检查高速缓冲存储器104以查看数据或代码是否已经被存储在高速缓冲存储器104中。高速缓冲存储器104可以通过减少取回供系统100使用的数据和代码所需的时间和其他资源来显著改善系统(例如系统100)的性能。当代码和数据(例如从辅助存储器108)被取回以供系统100使用时,或者当数据或代码被写入(例如写到主存储器106或辅助存储器108中)时,数据或代码的副本可以被存储在高速缓冲存储器104中以供系统100稍后使用。当在高速缓冲中找到所需的数据或代码时,这被称为命中。当在高速缓冲中找不到所需的数据或代码时,这被称为未命中。为了方便起见,对存储在高速缓冲中的数据的引用也可以指代存储在高速缓冲中的代码。

高速缓冲替换算法促进利用将来更可能被使用的代码和数据来替换将来不太可能被使用的代码和数据。常规地,采用随机替换算法或最久未使用(LRU)算法作为高速缓冲替换算法。

在图2中示出了使用随机替换的4通路高速缓冲存储器200的示例结构。高速缓冲存储器200包括四个通路202以及高速缓冲控制逻辑或电路206,每个通路具有多个线路204。如所图示的高速缓冲控制逻辑206包括随机数发生器208,如所图示的,随机数发生器208使用2位触发器210来实现。在随机替换算法中,随机选择并替换高速缓冲的通路。随机数发生器210随着每个时钟周期被更新,并且存储在触发器中的值被用于在未命中的情况下挑选替换的通路。随机替换在区域方面和在实现选择过程的功率方面具有低成本。然而,在高未命中率和频繁高速缓冲重填方面存在高成本,这导致高功耗。

在图3中示出了使用LRU替换算法的4通路高速缓冲存储器300的示例结构。在LRU算法中,通路的使用被跟踪,并且最久未使用的通路被替换。高速缓冲300包括四个通路302以及高速缓冲控制逻辑或电路306,每个通路具有多个线路304。每个通路302的每个线路304包括用于记录使用信息的2个位312,2个位312针对到线路的每个读取和写入在每个通路302中被更新。2个位312可以被称为存储器中的切块(cut)。备选地,可以采用单独的存储器来存储使用信息。当发生未命中时,比较线路的每个通路的使用数据,并且选择最久未使用的通路。用新数据替换所选择的通路中的数据。2位的数据针对线路的每个通路被更新,以反映所选择的通路是最新使用的通路并且更新其他通路的使用信息(例如所选择的通路的位被设置为[1,1],先前设置为[1,1]的通路的位被更新为[1,0],先前设置为[1,0]的通路的位被更新为[0,1],先前设置为[0,1]的通路的位被更新为[0,0])。当命中发生时,命中的通路的位被更新以反映该通路为线路的最新使用的通路,并且其他通路的其他位被相应地更新。LRU替换算法具有低未命中率,但是以针对到高速缓冲的线路的每个读取和写入而更新使用信息(例如线路的四个通路中的每个通路的两位信息)的LRU替换算法的高存储器区域和功耗为代价。

发明人已经认识到,代替跟踪最久未使用(LRU)通路(其要求在每次使用地址线路时都更新所有通路的存储的使用历史信息),跟踪最新被替换(MRR)通路可能更有效率。比LRU替换方案中需要存储更少的信息,并且存储的信息可以在每次未命中时适当地更新,而不是每次到高速缓冲的读取和写入时都需要被更新。MMR高速缓冲替换的实施例促进提供比随机替换更低的未命中率,同时使用比LRU替换更少的存储器和功率。在一个实施例中,MMR高速缓冲替换具有类似于LRU替换的未命中率以及类似于随机替换的功耗。

图4图示了4通路高速缓冲存储器400的一个实施例,其在操作中可以使用MRR高速缓冲替换的实施例来管理高速缓冲存储器400中的线路的通路替换。高速缓冲存储器400的实施例例如可以用作图1的系统100中的高速缓冲存储器104。

高速缓冲存储器400包括被组织成(例如逻辑地、物理地或两者)四个通路402的存储器阵列401以及高速缓冲控制逻辑或电路406,每个通路具有多个地址线路404。存储器阵列401可以在概念上被看作被组织成列(通路)和行(线路)的阵列。如所图示的,每个通路402的每个线路404包括用于记录通路402的线路404是否最近被替换的位414(用于存储控制变量的RR位,统称为存储控制变量集合的RR位,每个控制变量与线路和相应通路相关联),位414可以比存储的以在LRU替换中使用的最久未使用的信息更不频繁地被更新。在未命中的情况下,当在通路402的线路404中存储的数据被替换时,通路402的线路404的位414被设置,并且在未命中的情况下当存储在通路402的线路404中的数据不被替换时可以被重置,如下面更详细讨论的。备选地,可以采用高速缓冲400(例如存储器418)的单独的存储器来存储最近被替换的信息,诸如存储包括用于存储器阵列401的每个线路的控制变量集合的数据阵列。

高速缓冲控制逻辑406包括控制电路416和存储器418,如所图示的,存储器418包括一个或多个两位触发器420,以记录一个或多个最新被替换的(MMR)指示符或控制变量。MRR指示符是通路集合中的最新被替换的通路的指示(way_MMR)。在一个实施例中,单个way_MMR指示符可以例如被存储在单个两位触发器中,该单个两位触发器在通路中的任何线路被替换时被更新以指示最新被替换的通路。在一个实施例中,额外的way_MMR指示符可以例如被存储在额外的触发器中,每个way_MMR指示符对应于对应通路的线路的集合,并且将通路中的一个通路指示为针对线路集合的最新被替换的通路。在一个实施例中,way_MMR指示符的集合可以例如被存储在触发器中,每个way_MMR指示符对应于通路的线路。通过针对通路集合存储单个MMR值,可以获得改进的未命中率。针对通路集合存储多于一个MMR指示符(例如,针对具有N个线路的通路的第一N/2个线路的一个存储的way_MMR指示符,以及针对下一N/2个线路的一个存储的way_MMR指示符)以用于额外存储的额外区域为代价促进进一步减少未命中率。

控制电路406保持way_MMR值,其可以被视为一个或多个第一控制变量的集合,控制变量的第一集合中的相应变量的值指示多个通路中的与一个或多个地址线路相关联的通路。控制电路406还保持RR位,如所图示的,针对每个通路的每个线路有一个RR位,RR位可以被视为第二控制变量的集合,相应第二控制变量的值指示与该变量相关联的通路的线路的替换状态。默认值或随机值可以在启动时设置或响应于重置而设置。

在一些实施例中,高速缓冲400可以包括比图示的组件更多的组件,可以包括比图示的组件更少的组件,可以将图示的组件分成单独的组件,可以组合图示的组件等,以及其各种组合。例如,代替在每个通路402的每个线路404中包括用于存储最近被替换的信息的位,高速缓冲400的存储器418可以包括专用于存储通路402的线路404的最近被替换的信息的存储器。在另一示例中,高速缓冲存储器可以采用比四个更多或更少的通路。

图5图示了通过跟踪线路中的最新被替换的通路来管理高速缓冲存储器中的数据替换的方法500的一个实施例,出于方便将参考图1的系统100和图4的高速缓冲存储器400对其进行描述。方法500在502处开始并且前进到504。方法500可以例如响应于读取高速缓冲400中的线路404的尝试而开始。

在504处,方法500确定访问高速缓冲存储器400中的地址线路404的尝试是否为未命中。例如,高速缓冲存储器400的高速缓冲控制逻辑406可以确定访问高速缓冲存储器400中的地址线路404的尝试是否为未命中。应当指出,高速缓冲控制逻辑406可以执行其他高速缓冲管理功能,诸如在命中的情况下控制来自高速缓冲存储器400的数据的输出等。

当在504处未确定访问高速缓冲存储器中的地址线路的尝试为未命中时,方法返回到504以等待访问高速缓冲存储器400中的线路的下一尝试。指示相关联的通路是否最近被替换以及通路是否是最新被替换的通路的所存储的信息(例如控制变量)不需要被更新,并且当前值可以被保持。

当在504处确定访问高速缓冲存储器中的地址线路的尝试为未命中时,方法500从504前进到506。在506处,方法500取回与未命中的线路相关联的通路402的RR位或控制变量的集合的值以及与该未命中的线路相关联的MMR指示符的值(例如控制变量way_MMR)。例如,高速缓冲控制电路416可以取回与未命中相关联的线路404的位414的值以及存储在一个或多个触发器420中的触发器中的值,该一个或多个触发器420存储一个或多个MMR指示符(例如,与阵列401相关联的MMR指示符、与阵列的线路子集相关联的MMR指示符等)。为了简化讨论,在假设针对通路的集合存储单个MMR指示符(例如,MMR指示符与阵列的所有线路相关联)的情况下,讨论图5的实施例。方法500从506前进到508。

在508处,方法500基于所取回的MMR指示符和与未命中的线路相关联的所取回的RR值来确定或选择存储与线路404中的未命中相关联的数据的通路402。例如,这可以通过如下方式来完成:如果通路中的至少一个通路最近未被替换,则选择最近未被替换的通路,并且当所有RR值都指示通路的相关联的线路最近被替换时,选择除了由MMR指示符指示的通路之外的通路。图6图示了方法或子例程600的一个实施例,该方法或子例程600可以由方法500采用以选择存储数据的通路402。方法500从508前进到510。

在510处,方法500替换所选择的通路402的线路404中的数据。这可以以常规方式来完成,并且可以例如在高速缓冲控制逻辑406、处理器核心102、主存储器106及其各种组合的控制下被执行。方法500从510前进到512。

在512处,方法500基于所取回的RR值和在510处选择的通路来更新与线路相关联的RR值。例如,如果所有所取回的RR值被设置为指示相应通路的线路404最近被替换(例如与线路相关联的所有RR位被设置为有效(例如,1)),则可以更新与除了所选择的通路之外的通路相关联的RR值的集合中的RR值,以指示相关联的通路的线路最近未被替换(例如与未选择的通路中的线路相关联的位被重置为无效(例如,设置为0)),并且所选择的通路的RR值可以被设置以指示所选择的线路最近被替换。如果不是所有所取回的RR值都被设置为指示相关联的通路的线路404最近被替换,则所选择的通路的RR值可以被设置以指示所选择的通路最近被替换,并且可以使未被选择的通路的RR值不变。方法500从512前进到514。

在514处,方法500更新MMR指示符值,以指示在508处选择的通路是与线路相关联的最新被替换的通路(例如用与所选择的通路相关联的值替换变量way_MMR)。这可以例如通过将触发器420设置为与所选择的通路相关联的值来完成(例如参考图4,设置为[0,0]以指示通路0、设置为[0,1]以指示通路1、设置为[1,0]以指示通路2、以及设置为[1,1]以指示通路3)。方法500从514前进到516。

在516处,方法500确定是否继续。当在516处确定继续时,方法500返回到504以等待访问高速缓冲存储器的线路中的数据的下一尝试。当在516处未确定继续时,方法500从516前进到518,在518处该方法例如可以响应于重置命令而终止。

管理高速缓冲存储器中的数据替换的方法的实施例可以包含图5中未示出的额外动作,可以不包含图5中示出的所有动作,可以以各种顺序执行图5中示出的动作,并且可以在各个方面被修改。例如,方法500可以在执行动作512之前或与执行动作512并行地在514处执行,可以包括确定是否所有所取回的RR值被设置为有效的额外动作等。

图6示出了方法或子例程600的一个实施例,该方法或子例程600可以由方法500采用以响应于高速缓冲未命中而选择存储数据的通路402。出于方便将参考图1的系统100、图4的高速缓冲存储器400和图5的方法500来描述图6。

方法600在602处开始并且前进到604。方法600可以例如响应于来自图5的方法500的动作508的调用而开始。

在604处,方法600确定是否与发生未命中的线路相关联的所有RR值都指示通路的线路中的数据最近被替换(例如,与线路相关联的RR值集合中的所有RR值被设置为有效)。当在604处确定所有RR值指示通路的线路中的数据最近被替换时,该方法前进到606,在606处选择除了最新被替换的通路之外的通路中的一个通路(例如,除了与所取回的way_MMR的值相关联的通路之外的通路)。如所图示的,在606处,按顺序选择下一通路(例如,选择对应于way_MMR加1的值的通路,并且将way_MMR+1的值返回到调用程序以指示按顺序选择下一通路)。

当在604处未确定与发生未命中的线路相关联的所有RR值都指示通路的线路中的数据最近被替换(例如,与线路相关联的RR值中的至少一个RR值被设置为无效)时,该方法前进到608。

在608处,方法600确定是否与除了最新被替换的通路之外的通路中的一个通路(例如,除了与所取回的way_MMR的值相关联的通路之外的通路)相关联的RR值不指示通路最近被替换。如所图示的,在608处,该方法确定是否与按顺序的下一通路相关联的RR值(例如,与way_MMR+1相关联的RR值)不指示通路最近被替换(例如,RR值或位无效)。当在608处确定与按顺序的下一通路相关联的RR值不指示通路最近被替换时,该方法从608前进到606,在606处way_MMR+1的值被返回以指示按顺序的下一通路是所选择的通路。当在608处未确定与按顺序的下一通路相关联的RR值不指示通路最近被替换(例如,RR值或位是有效的)时,该方法从608前进到610。

在610处,方法600确定是否与除了最新被替换的通路之外的通路中的另一通路(如所图示的,与way_MMR+2的值相关联的通路)相关联的RR值不指示通路最近被替换。当在610处确定该RR值不指示通路最近被替换时,该方法从610前进到612,在612处way_MMR+2的值被返回以指示所选择的通路是与way_MMR+2相关联的通路。当在610处未确定与way_MMR+2的值相关联的RR值未指示通路最近被替换(例如,RR值或位是有效的)时,该方法从610前进到614。

在614处,方法600确定是否与除了最新被替换的通路之外的通路中的另一通路(如所图示的,与way_MMR+3的值相关联的通路)相关联的RR值不指示通路最近被替换。当在614处确定该RR值不指示通路最近被替换时,方法从614前进到616,在616处way_MMR+3的值被返回以指示所选择的通路是与way_MMR+3相关联的通路。当在614处未确定与way_MMR+3的值相关联的RR值不指示通路最近被替换(例如,RR值或位是有效的)时,该方法从614前进到618。

在618处,way_MMR的值被返回以指示所选择的通路是与way_MMR的值相关联的通路。应当指出,在一些情况下(例如,在启动高速缓冲存储器400时、在重置之后等),与所存储的MMR指示符的值(例如,way_MMR)相关联的通路的RR值或位可以被设置以指示通路最近未被替换(例如设置无效),尽管在正常操作中,与所存储的MMR指示符的值相关联的通路的RR值将被设置为指示通路最近被替换。

在高速缓冲存储器中选择用于替换的通路的方法的实施例可以包含未在图6中示出的额外动作,可以不包含图6中示出的所有动作,可以以各种顺序执行图6中示出的动作,并且可以在各个方面被修改。例如,方法600可以在608处被修改以确定是否与除了和MMR指示符的值相关联的通路之外的随机通路相关联的RR值指示随机通路最近未被替换,并且如果这样的话,则选择随机通路。

图7图示了通过跟踪线路中的最新被替换的通路来管理高速缓冲存储器中的数据的替换的方法700的一个实施例,出于方便将参考图1的系统100和图4的高速缓冲存储器400对其进行描述。方法700在702处开始并前进到704。方法700可以例如响应于读取高速缓冲400中的一个或多个线路404的尝试而开始。

为了简化讨论,在假设针对通路的集合存储单个MMR指示符(例如,MMR指示符与阵列的所有线路相关联)的情况下,讨论图7的实施例。

在704处,方法700确定是否访问高速缓冲存储器400中的一个或多个地址线路404的尝试为未命中。例如,高速缓冲存储器400的高速缓冲控制逻辑406可以确定是否访问高速缓冲存储器400中的地址线路404的尝试为未命中。要指出,高速缓冲控制逻辑406可以执行其他高速缓冲管理功能,例如在命中的情况下控制来自高速缓冲存储器400的数据的输出等。

当在704处未确定访问高速缓冲存储器中的地址线路的尝试为未命中时,方法700返回到704以等待访问高速缓冲存储器400中的线路的下一尝试。指示相关联的通路是否最近被替换以及通路是否为最新被替换的通路的所存储的信息(例如控制变量)不需要被更新,并且当前值可以被保持。

当在704处确定访问高速缓冲存储器中的地址线路的尝试为未命中时,方法700从704前进到706。在706处,方法700取回与未命中的线路相关联的通路402的RR位或控制变量的集合的值以及与存储器阵列401相关联的MMR指示符的值。例如,高速缓冲控制电路416可以取回针对与未命中相关联的线路404的位414的值以及存储在触发器420中的值。方法700从706前进到708。

在708处,该方法确定是否与发生未命中的线路相关联的所有RR值都指示通路的线路中的数据最近被替换(例如,与线路相关联的RR值的集合中的所有RR值被设置为有效)。该确定可以被临时存储。当在708处确定与线路相关联的RR值的集合中的所有RR值被设置时,该方法从708前进到710。

在710处,方法700选择除了由所取回的MMR指示符的值指示的通路之外的通路中的一个通路。如所图示的,与MMR指示符加1的值(way_MMR+1)相关联的通路被选择。然而,除了由所取回的MMR指示符的值指示的通路之外的通路中的任何通路可以被选择。该方法从710前进到712。

在712处,与除了所选择的通路之外的通路相关联的线路的RR值被重置。在图示的实施例中,对应于way_MMR、way_MMR+2和way_MMR+3的线路的RR值被重置。方法700从712前进到728。

当在708处未确定与线路相关联的RR值集合中的所有RR值被设置时,该方法从708前进到714。在714处,方法700确定是否与除了最新被替换的通路之外的通路中的一个通路(例如,除了与所取回的way_MMR的值相关联的通路之外的通路)相关联的RR值不指示通路最近被替换(例如,为无效)。如所图示的,在714处,该方法确定是否与按顺序的下一通路相关联的RR值(例如,与way_MMR+1相关联的RR值)不指示通路最近被替换(例如,RR值或位为无效)。将在对图7的剩余描述中假设通路的顺序评估,以简化讨论。当在714处确定与按顺序的下一通路相关联的RR值不指示通路最近被替换时,该方法从714前进到716,在716处对应于way_MMR+1的通路被选择。方法700从716前进到728。

当在714处未确定与way_MMR+1相关联的RR值为无效时,该方法从714前进到718。在718处,方法700确定与对应于way_MMR+2的通路相关联的RR值是否为无效。当在718处确定与对应于way_MMR+2的通路相关联的RR值为无效时,该方法从718前进到720,在720处对应于way_MMR+2的通路被选择。方法700从720前进到728。

当在718处未确定与way_MMR+2相关联的RR值为无效时,该方法从718前进到722。在722处,方法700确定与对应于way_MMR+3的通路相关联的RR值是否为无效。当在722处确定与对应于way_MMR+3的通路相关联的RR值为无效时,该方法从722前进到724,在724处对应于way_MMR+3的通路被选择。方法700从724前进到728。

当在722处未确定与对应于way_MMR+3的通路相关联的RR值为无效时,该方法从722前进到726,在726处对应于way_MMR的通路被选择。方法700从726前进到728。

在728处,方法700替换所选择的通路402的线路404中的数据,并更新MMR指示符的值以指示所选择的通路。所选择的通路的线路中的数据的替换可以以常规方式来完成,并且可以例如在高速缓冲控制逻辑406、处理器核心102、主存储器106以及其各种组合的控制下来执行。MMR指示符可以通过更新存储在2位触发器中的值来更新,以指示所选择的通路。方法700从728前进到730。

在730处,方法700设置所选择的通路的线路的RR值。方法700从730前进到732,在732处可以进行进一步处理。例如,方法700可以确定是否继续。

管理高速缓冲存储器中的数据替换的方法的实施例可以包含未在图7中示出的额外动作,可以不包含图7中示出的所有动作,可以以各种顺序执行图7中示出的动作,并且可以在各个方面被修改。例如,方法700可以将动作728分成两个动作,例如在一个动作中替换所选择的通路中的数据并在另一动作中更新MMR指示以指示所选择的通路等。

一些实施例可以采取计算机程序产品的形式或包括计算机程序产品。例如,根据一个实施例,提供了一种计算机可读介质,其包括适于执行上述方法或功能中的一个或多个方法或功能的计算机程序。介质可以是物理存储介质,诸如例如只读存储器(ROM)芯片,或者诸如数字多用盘(DVD-ROM)、紧凑盘(CD-ROM)、硬盘之类的盘,存储器,网络或便携式介质物品,以通过适当的驱动器或经由适当的连接被读取,包括编码在存储在一个或多个这样的计算机可读介质上的一个或多个条形码或其他相关代码中,并且可由适当的读取器设备读取。

此外,在一些实施例中,方法和/或功能中的一些或全部可以以其他方式来实现或提供,诸如至少部分地用固件和/或硬件,包括但不限于一个或多个专用集成电路(ASIC)、数字信号处理器、分立电路、逻辑门、标准集成电路、控制器(例如,通过执行适当的指令,并且包括微控制器和/或嵌入式控制器)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)等、以及采用RFID技术的设备、及其各种组合。

上述各种实施例可以被组合以提供另外的实施例。在必要时,可以修改实施例的各方面,以利用各种实施例和公布的概念来提供另外的其他实施例。

鉴于以上详细描述,可以对实施例做出这些和其他改变。通常,在所附权利要求中,所使用的术语不应当被理解为将权利要求限制于说明书和权利要求中公开的具体实施例,而是应该被理解为包括所有可能的实施例以及这样的权利要求被授予的等同物的全范围。因此,权利要求不受本公开内容限制。

在一个实施例中,一种设备包括:存储器阵列,其具有多个通路和多个地址线路;以及高速缓冲控制电路,其耦合到存储器阵列,并且高速缓冲控制电路在操作中,通过以下项来对与多个地址线路中的地址线路相关联的高速缓冲未命中做出响应:基于指示多个通路中的通路的第一控制变量以及与地址线路相关联并且与多个通路中的相应通路相关联的第二控制变量集合,来选择多个通路中的通路;将与高速缓冲未命中相关联的数据写入到所选择的通路;基于第二控制变量集合,来设置第二控制变量集合中的与除了所选择的通路之外的通路相关联的变量;设置第二控制变量集合中的与所选择的通路相关联的变量,以指示所选择的通路的地址线路最近被替换;以及设置第一控制变量以指示所选择的通路;以及通过以下项来对与地址线路相关联的高速缓冲命中做出响应:保持第一控制变量和第二控制变量集合的当前值。在一个实施例中,存储器阵列被组织成四个通路。在一个实施例中,第一控制变量指示多个通路中的最新被替换的通路。在一个实施例中,第二控制变量集合指示多个通路中的相关联的通路是否最近被替换。在一个实施例中,基于第一控制变量和第二控制变量集合来选择多个通路中的通路包括:确定是否第二控制变量集合中的所有变量都指示相关联的通路最近被替换;响应于确定第二控制变量集合中的所有变量都指示相关联的通路最近被替换,选择除了由第一控制变量指示的通路之外的通路;以及响应于确定不是第二控制变量集合中的所有变量都指示相关联的通路最近被替换,识别不指示相关联的通路最近被替换的第二控制变量,并且选择与所识别的第二控制变量相关联的通路。在一个实施例中,识别不指示相关联的通路最近被替换的第二控制变量包括:以与除了由第一控制变量识别的通路之外的通路相关联的第二控制变量开始。在一个实施例中,与除了由第一控制变量识别的通路之外的通路相关联的第二控制变量被顺序地评估。在一个实施例中,除了由第一控制变量识别的通路之外的通路的第二控制变量被随机地评估。在一个实施例中,基于第二控制变量集合来设置第二控制变量集合中的与除了所选择的通路之外的通路相关联的变量包括:确定是否第二控制变量集合中的所有变量都指示相关联的通路最近被替换;以及响应于确定第二控制变量集合中的所有变量指示相关联的通路最近被替换,重置地址线路的第二控制变量集合中的与除了所选择的通路之外的通路相关联的变量。在一个实施例中,与地址线路相关联的第二控制变量集合被存储在地址线路的相应通路的一位字段中。在一个实施例中,第一控制变量被存储在两位触发器中。

在一个实施例中,一种系统包括:处理核心;以及高速缓冲存储器,其耦合到处理核心,高速缓冲存储器包括:高速缓冲存储器阵列,其具有多个通路和多个地址线路;以及控制电路,其耦合到高速缓冲存储器阵列,并且控制电路在操作中,通过以下项来对与多个地址线路中的地址线路相关联的高速缓冲未命中做出响应:基于第一控制变量和第二控制变量集合来选择多个通路中的通路,第一控制变量指示多个通路中的通路,第二控制变量集合与地址线路相关联并且与多个通路中的相应通路相关联;将与高速缓冲未命中相关联的数据写入到所选择的通路;基于第二控制变量集合,来设置第二控制变量集合中的与除了所选择的通路之外的通路相关联的变量;设置第二控制变量集合中的与所选择的通路相关联的变量,以指示所选择的通路的地址线路最近被替换;以及设置第一控制变量以指示所选择的通路;以及通过以下项来对与地址线路相关联的高速缓冲命中做出响应:保持第一控制变量和第二控制变量集合的当前值。在一个实施例中,第一控制变量指示多个通路中的最新被替换的通路,并且第二控制变量集合指示多个通路中的相关联的通路是否最近被替换。在一个实施例中,基于第一控制变量和第二控制变量集合来选择多个通路中的通路包括:确定是否第二控制变量集合中的所有变量都指示相关联的通路最近被替换;响应于确定第二控制变量集合中的所有变量都指示相关联的通路最近被替换,选择除了由第一控制变量指示的通路之外的通路;以及响应于确定不是第二控制变量集合中的所有变量都指示相关联的通路最近被替换,识别不指示相关联的通路最近被替换的第二控制变量,并且选择与所识别的第二控制变量相关联的通路。在一个实施例中,基于第二控制变量集合来设置第二控制变量集合中的与除了所选择的通路之外的通路相关联的变量包括:确定是否第二控制变量集合中的所有变量都指示相关联的通路最近被替换;以及响应于确定第二控制变量集合中的所有变量都指示相应通路最近被替换,重置第二控制变量集合中的与除了所选择的通路之外的通路相关联的变量。在一个实施例中,系统包括耦合到处理核心并且耦合到高速缓冲存储器的主存储器。

在一个实施例中,一种方法包括:由被组织成多个通路和多个地址线路的高速缓冲存储器通过以下项来对与多个地址线路中的地址线路相关联的高速缓冲未命中做出响应:基于指示多个通路中的通路的第一控制变量以及与地址线路相关联并且与多个通路中的相应通路相关联的第二控制变量集合,来选择多个通路中的通路;将与高速缓冲未命中相关联的数据写入到所选择的通路;基于第二控制变量集合,来设置第二控制变量集合中的与除了所选择的通路之外的通路相关联的变量;设置第二控制变量集合中的与所选择的通路相关联的变量,以指示所选择的通路的地址线路;以及设置第一控制变量以指示所选择的通路;以及由高速缓冲存储器通过以下项来对与地址线路相关联的高速缓冲命中做出响应:保持第一控制变量和第二控制变量集合的当前值。在一个实施例中,第一控制变量指示多个通路中的最新被替换的通路,并且第二控制变量集合指示多个通路中的相关联的通路是否最近被替换。在一个实施例中,基于第一控制变量和第二控制变量集合来选择多个通路中的通路包括:确定是否第二控制变量集合中的所有变量都指示相关联的通路最近被替换;响应于确定第二控制变量集合中的所有变量都指示相关联的通路最近被替换,选择除了由第一控制变量指示的通路之外的通路;以及响应于确定不是第二控制变量集合中的所有变量都指示相关联的通路最近被替换,识别不指示相关联的通路最近被替换的第二控制变量,并且选择与所识别的第二控制变量相关联的通路。

在一个实施例中,一种非瞬态计算机可读介质具有使得被组织成多个通路和多个地址线路的高速缓冲存储器执行一种方法的内容,该方法包括:通过以下项来对与多个地址线路中的地址线路相关联的高速缓冲未命中做出响应:基于指示多个通路中的通路的第一控制变量以及与地址线路相关联并且与多个通路中的相应通路相关联的第二控制变量集合,来选择多个通路中的通路;将与高速缓冲未命中相关联的数据写入到所选择的通路;基于第二控制变量集合,来设置第二控制变量集合中的与除了所选择的通路之外的通路相关联的变量;设置第二控制变量集合中的与所选择的通路相关联的变量,以指示所选择的通路的地址线路最近被替换;以及设置第一控制变量以指示所选择的通路;以及由高速缓冲存储器通过以下项来对与地址线路相关联的高速缓冲命中做出响应:保持第一控制变量和第二控制变量集合的当前值。在一个实施例中,第一控制变量指示多个通路中的最新被替换的通路,并且第二控制变量集合指示地址线路的多个通路中的相应通路是否最近被替换。在一个实施例中,基于第一控制变量和第二控制变量集合来选择多个通路中的通路包括:确定是否第二控制变量集合中的所有变量都指示相关联的通路最近被替换;响应于确定第二控制变量集合中的所有变量指示相关联的通路最近被替换,选择除了由第一控制变量指示的通路之外的通路;以及响应于确定不是第二控制变量集合中的所有变量都指示相关联的通路最近被替换,识别不指示相关联的通路最近被替换的第二控制变量,并且选择与所识别的第二控制变量相关联的通路。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1