无分配高速缓存策略的制作方法

文档序号:18219115发布日期:2019-07-19 22:52阅读:164来源:国知局
无分配高速缓存策略的制作方法

相关技术的描述

在各个实施方案中,微处理器耦合至高速缓存层级的一个或多个层。如本领域中所熟知,高速缓存用于减少对存储在存储器中的数据的请求的时延。一般来说,高速缓存存储一个或多个数据块,每个数据块是存储在系统存储器中的对应地址处的数据的副本。当在高速缓存中时,数据可以在由微处理器操作时更新。由于高速缓存具有有限大小,因此高速缓存块的总数本身受限。另外,映射至组关联高速缓存中的给定组的块数目受限制。

一旦特定数据占用可用的高速缓存存储位置,所占用的高速缓存位置就不可用于其它数据,直到当前存储在所述位置中的数据被逐出为止。然而,在一些情况下,预期存储在高速缓存中的特定数据不会被重用,或仅会被重用少于给定次数(例如,数据可能预期仅被重用一次或相对较少次数)。因此,占用高速缓存的预期不重用的数据会阻止可能具有更高预测重用率的其它数据使用高速缓存的所述位置。因此,可能会增加访问时延并降低总体性能。

鉴于上述内容,需要用于有效地执行高速缓存存储器中的数据分配的有效方法和系统。

附图说明

图1是数据存储装置的一个实施方案的概括图。

图2是用于处理具有预期不重用数据的应用的方法的一个实施方案的概括图。

图3是用于执行对预期不重用数据的读取访问请求的方法的一个实施方案的概括图。

图4是用于执行对预期不重用数据的写入访问请求的方法的一个实施方案的概括图。

尽管本发明容许各种修改和替代形式,但是特定实施方案借助于图式中的实例示出并且在本文中详细地描述。然而,应理解,附图以及对其的详细描述并不意图将本发明限于所公开的特定形式,相反,本发明将涵盖处于由所附权利要求书限定的本发明的范围内的所有修改、等效物和替代。

具体实施方式

在以下描述中,阐述许多特定细节以提供对本发明的全面理解。然而,本领域普通技术人员应认识到,可以在不具有这些具体细节的情况下实践本发明。在其它例子中,不详细示出众所周知的电路、结构和技术,以免混淆本发明。此外,应了解,为了说明的简单和清楚起见,图中所示的元件不必按比例绘制。例如,一些元件的尺寸相对于其它元件放大。

设想用于分配预期不会在存储阵列中重用的数据的系统和方法。在各种实施方案中,存储阵列包括用于存储数据的多个块,并且存储控制器耦合至存储阵列以控制对所述多个块的访问。在一些实施方案中,存储阵列是组关联高速缓存阵列。然而,在其它实施方案中,存储阵列是各种存储资源中的一个,例如,完全关联队列、内容可寻址存储器(cam)阵列、先进先出(fifo)队列、直接映射的高速缓存等。

在各种实施方案中,存储在存储阵列中的数据标记为预期不重用的数据。在一些实施方案中,对存储阵列中的给定数据的访问请求包括预期不重用所访问的给定数据的指示。在一些实施方案中,通过确定访问请求将特定地址范围作为目标还是与给定源标识符(id)相关联,存储控制器确定访问请求是否对应于预期不重用的数据。此外,在各种实施方案中,当存储控制器在存储阵列中未找到用于访问请求的给定数据时,存储控制器阻止在存储阵列中分配预期不重用类型的给定数据。

转至图1,示出数据存储装置100的一个实施方案的概括框图。存储阵列110包括用于存储数据和对应元数据的多个条目。在各种实施方案中,存储阵列110由多个线程共享,所述多个线程由通用处理器或例如图形处理单元或数据信号处理器的平行架构处理器进行处理。在一个实施方案中,存储阵列110对应于用于存储器核心上的数据存储的队列。在其它实施方案中,存储阵列110对应于高速缓存存储器层级的一个或多个层中的给定层内的高速缓存阵列。例如,存储阵列是组关联高速缓存阵列。然而,在其它实施方案中,存储阵列是各种存储资源中的一种,例如,完全关联队列、内容可寻址存储器(cam)阵列、先进先出(fifo)队列、直接映射的高速缓存等。

如图所示,存储阵列110的每个条目包括多个字段112至118。尽管存储在字段112至118中的信息被示为以连续方式存储,但是在各种实施方案中,数据以不同次序存储,以非连续方式存储并通过未示出的其它字段存储。另外,在一些实施方案中,存储阵列110包括用于存储字段112至118的两个或更多个单独阵列。

在各种实施方案中,重用数据类型字段112指示与条目相关联的数据是无分配数据类型120。尽管以下论述描述“无分配数据类型”,但是这可以被视为与数据而不是数据类型本身相关联的高速缓存策略。因此,在提及无分配数据类型的情况下,这可以替代地读取为与数据相关联的无分配策略。在各种实施方案中,无分配数据类型指示预期不重用数据。例如,生成数据并确定数据被使用一次,而其它数据可以预期被重用多次。在一个实例中,视频图形渲染包括矢量阴影计算。重用一些顶点着色结果进行有效处理,而其它顶点着色结果被使用一次。顶点索引用于指示哪些结果被重用以及哪些结果被使用一次。指示为被使用一次的结果标记为无分配数据类型120。

在各种实施方案中,无分配数据类型120改变算法用来处理存储阵列110的读取/写入操作的步骤。如稍后所描述,这些改变旨在减少存储预期不重用数据的存储阵列110中的所分配条目的数目。在各种实施方案中,访问请求源确定何时数据预期不会被重用,并且提供数据对应于无分配数据类型120的指示。

在一些实施方案中,确定特定数据预期被使用给定次数。在以上顶点着色实例中,与结果数据相关联的顶点索引指示结果数据被使用两次,而不是一次。在一些实施方案中,表格存储数据帧的分区的顶点索引,并且从表格中确定顶点索引指示相关联结果数据稍后被使用的次数。在各种实施方案中,保存结果数据的预期使用次数的计数。当每次在计算完成基础上、线程完成基础上、访问完成基础上或其它方式使用结果数据之后,数据得到更新,例如递减。当计数指示结果数据预期不再被重用时,结果数据标记为无分配数据类型120。随后,数据可以处理为对应于无分配类型。

在一些实施方案中,其它数据属性字段114指示存储在条目中的数据对应于特定计算、过程标识符(id)和/或线程id、优先级、节点所有权id、节点拥有者为远程还是本地的指示等。在各种实施方案中,状态字段116存储年龄信息,例如,与存储控制器130所采用的存储块替换算法相关联地使用的最近最少使用(lru)高速缓存替换策略信息。状态字段116还存储所存储数据的干净(未修改)或脏(修改)状态的指示,以及所存储数据的有效状态的指示。在一些实施方案中,状态字段116还存储指定高速缓存一致性状态的指示,例如修改、独占、拥有、共享和无效的指示。存储块118将数据存储在所分配条目中。各种大小中的一个用于存储在存储块118中的数据。在各种实施方案中,存储块118是组关联高速缓存的多个通路中的一个通路。

存储控制器130包括控制逻辑132和控制寄存器134。在各种实施方案中,控制逻辑132包括硬件电路和/或软件,用于实施针对分配和释放存储阵列110中的条目的算法,并且用于更新存储在存储阵列110中的计数器、指针和状态信息。在一些实施方案中,控制寄存器134包括由控制逻辑132使用来实施算法的可编程控制和状态寄存器。存储控制器130内的控制逻辑132和控制寄存器134还可以称为控制单元。存储控制器130还包括用于与存储阵列110、其它存储器和结果总线通信的接口逻辑(未示出)。

在各种实施方案中,存储阵列110是用于存储结果数据的高速缓存阵列,并且存储控制器130是高速缓存控制器。如本文所使用,术语“块”用于指存储在连续存储器位置中的一组字节,其被视为用于一致性目的的高速缓存中的单元。如本文所使用,术语“高速缓存块”、“块”、“高速缓存线”和“线”可互换。在一些实施方案中,块是高速缓存中的分配和释放单元。使用各种大小中的任一大小来指示块中的字节数目。

如本文所使用,关于高速缓存存储器子系统的术语“访问”指执行读取或写入请求操作,如果对应请求地址的所请求数据驻留在存储阵列110中,则所述读取或写入请求操作引起高速缓存命中。如果对应请求地址的所请求数据未驻留在存储阵列110中,则读取或写入请求操作引起高速缓存未命中。如果出现高速缓存未命中,则由存储控制器130生成读取请求并且通过存储控制器传输至低级存储器。将具有所请求块的对应高速缓存填充线传送至存储阵列110,以便在操作未通过稍后描述的有限重用数据类型修改时,完成原始读取或写入请求。另外,高速缓存填充线置于高速缓存内。

当存储阵列110内不存在可用存储块118时,由存储控制器130实施的最近最少使用(lru)算法(或其它替换策略算法)确定哪个条目(例如,组关联高速缓存内的哪个通路)的数据从高速缓存中逐出并由高速缓存填充线数据替换。如本文所使用,术语“分配”指在高速缓存未命中特定高速缓存之后,将从存储器层级的较低层提取的高速缓存填充线存储至所述特定高速缓存的通路中。在各种实施方案中,从高速缓存逐出的高速缓存块的选择是基于存储在字段112、114和116中的参数中的一个或多个。

在各种实施方案中,在存储控制器130中的算法之后的步骤基于无分配数据类型/策略120改变。例如,存储控制器130接收访问请求102。在一些实施方案中,访问请求102指示相关联数据是否具有无分配数据类型120。在其它实施方案中,存储控制器130内的可编程控制寄存器134得到更新,并且控制逻辑132确定与所接收访问请求102相关联的数据是否具有无分配数据类型120。例如,控制逻辑132使用特定源、使用数据的特定计算的指示等来确定与所接收访问请求102相关联的数据是否具有无分配数据类型120。在另外的实施方案中,指示对应于访问请求102的数据具有无分配数据类型120的指示存储在存储阵列130的字段112中,或存储控制器130内的表格中。

如果存储控制器130确定给定数据具有无分配数据类型120并且存储控制器130另外在存储阵列110中找到数据,则存储控制器130不更新数据的高速缓存替换策略信息来延长其在高速缓存内的寿命。例如,响应于访问而不更新数据的lru数据。在各种实施方案中,存储控制器130另外阻止在针对读取请求发生未命中之后在存储阵列110中分配给定数据。

现在参考图2,示出用于处理具有预期不重用数据的应用的方法200的一个实施方案。出于论述的目的,以连续次序示出此实施方案中(以及图3至图4中)的步骤。然而,在其它实施方案中,一些步骤以与所示不同的次序发生,一些步骤同时执行,一些步骤与其它步骤组合,并且一些步骤不存在。

针对预期不重用的数据形成无分配数据类型或策略(框202)。例如,选择特定编码以识别预期不重用的数据。在各种实施方案中,通过所述特定编码对一个或多个控制和状态寄存器进行编程,以在给定存储阵列的访问请求期间用于控制逻辑中。在一些实施方案中,控制和状态寄存器处于例如高速缓存控制器的存储控制器中。在一些实施方案中,数据预期不重用的确定基于生成访问请求的特定源、使用数据的特定计算、正访问的特定地址范围,或其它方面。

如先前所描述,在各种实施方案中,一种特定类型的计算包括图形处理管线中的顶点着色。在处理期间重用一些顶点着色结果,而其它顶点着色结果仅使用一次。在一些实施方案中,使用存储在特定表格中的顶点索引来识别预期不重用的数据。在图2的框204中,执行程序指令并访问例如高速缓存的存储装置。如果特定数据作为在应用程序的处理期间预期不重用的数据(条件框206的“是”分支),则特定数据被标记为无分配数据类型(框208)。如果随后检测到高速缓存访问(条件框210的“是”分支),但所请求数据未进行标记或以其它方式指示为具有无分配数据类型(条件框212的“否”分支),则高速缓存访问不会被处理为无分配数据类型(框214),如与图3和图4相关联地描述。

然而,如果检测到高速缓存访问(条件框210的“是”分支),并且数据被标记或以其它方式确定为具有无分配数据类型(条件框212的“是”分支),则以使得限制高速缓存中的数据寿命的方式处理高速缓存访问(框216),如与图3和图4相关联地描述。例如,在高速缓存未命中之后,高速缓存控制器可以阻止在高速缓存中分配相关联数据。通过执行这些步骤来限制具有无分配数据类型的高速缓存块的数目,可在高速缓存中为更可能重用的数据留出更多空间。

现在转向图3,示出用于执行对预期不重用数据的读取访问请求的方法300的一个实施方案。当正处理一个或多个软件应用程序时,检测数据访问请求(框302)并访问高速缓存中的数据。如先前所描述,可以使用多个方法来确定对应于访问请求的数据是否具有无分配数据类型。在这种情况下,读取请求用于具有无分配数据类型的数据。针对读取请求执行对高速缓存的查找操作。如果出现命中(条件框304的“是”分支),则从高速缓存阵列读取所请求数据并且将其返回给请求者(框306)。尽管在高速缓存阵列中访问所存储数据,但是在一个实施方案中,高速缓存控制器不更新所访问的高速缓存块来指示此最近访问(框308)。例如,高速缓存控制器不会基于访问而更新用于高速缓存替换策略的数据。在一个实施方案中,不更新数据的最后使用年龄或任何其它最近最少使用(lru)信息。因此,访问不会增加数据保留在高速缓存中的时间量。相反,所访问的高速缓存数据的高速缓存替换策略数据保持不变,就像未发生访问一样。

如果对高速缓存阵列的查找操作导致未命中(条件框304的“否”分支),则从低级存储器检索所请求数据(框310)。返回所请求数据,以便服务于请求(框312)。然而,不将检索到的数据分配至高速缓存中(框314)。因此,无分配数据类型的数据(预期不重用的数据)的量在高速缓存中未增加。

现在参考图4,示出用于执行对预期不重用数据的写入访问请求的方法400的一个实施方案。当正处理一个或多个软件应用程序时,访问高速缓存中的数据。如先前所描述,可以使用多个方法来确定对应于访问请求的数据是否具有无分配数据类型。在所示实例中,检测到对无分配数据类型的数据的高速缓存写入请求(框402)。针对写入请求执行对高速缓存的查找操作。如果出现命中(条件框404的“是”分支),并且未检测到绕过高速缓存的指示(条件框410的“否”分支),则将写入请求数据写入至高速缓存阵列中(框412)。尽管在高速缓存中访问并更新所存储数据,但是高速缓存控制器不更新高速缓存块的高速缓存替换策略数据,例如最近最少使用数据(框414)。因此,高速缓存中的数据的寿命不会由于访问而延长。

如果出现命中(条件框404的“是”分支),并且检测到绕过高速缓存的指示(条件框410的“是”分支),则减少高速缓存中的无分配数据类型的数据量变得更有挑战性。例如,如果存储在高速缓存中并且由写入请求作为目标的数据是干净的(未修改)(条件框416的“是”分支),则从高速缓存中释放目标数据(或使其失效)(框418),并且将写入请求数据发送至低级存储器,用于更新低级存储器中的目标数据的副本(框420)。

如果检测到绕过高速缓存的指示(条件框410的“是”分支),但存储在高速缓存中并且由写入请求作为目标的数据是脏的(修改过)(条件框416的“否”分支),则方法400的控制流移至框412,其中将写入请求数据写入至高速缓存阵列中。在一些实施方案中,在目标数据内识别干净子块和脏子块两者。在一些实施方案中,子块是多字节高速缓存线内的一个或多个字节。使用位矢量来指示哪些子块是干净的以及哪些子块是脏的。如果出现命中(条件框404的“是”分支),并且检测到绕过高速缓存的指示(条件框410的“是”分支),则从高速缓存中释放干净子块,而保留脏子块。如果写入请求将任一个脏子块作为目标,则在高速缓存内通过写入请求数据修改所述脏子块。如果写入请求将任一个干净子块作为目标,则在低级存储器中通过写入请求数据修改所述干净子块。

如果对高速缓存阵列的查找操作导致未命中(条件框404的“否”分支),则将写入请求数据发送至低级存储器,用于更新目标数据(框406)。阻止将目标数据分配至高速缓存中(框408)。因此,在高速缓存中减少有限重用数据类型的数据的量。

应注意,上述实施方案中的一个或多个包括软件。在这些实施方案中,实施方法和/或机制的程序指令在计算机可读介质上传送或存储。被配置成存储程序指令的多种类型的介质可用,并且包括硬盘、软盘、cd-rom、dvd、闪存存储器、可编程rom(prom)、随机存取存储器(ram),以及各种其它形式的易失性或非易失性存储装置。一般来说,计算机可访问存储介质包括在使用期间可由计算机访问以向计算机提供指令和/或数据的任何存储介质。例如,计算机可访问存储介质包括例如以下存储介质:磁性或光学介质,例如磁盘(固定或可移动)、磁带、cd-rom,或dvd-rom、cd-r、cd-rw、dvd-r、dvd-rw,或蓝光。存储介质还包括易失性或非易失性存储器介质,例如,ram(例如,同步动态ram(sdram)、双倍数据速率(ddr、ddr2、ddr3等)sdram、低功耗ddr(lpddr2等)sdram、rambusdram(rdram)、静态ram(sram)等)、rom、闪存存储器、可通过例如通用串行总线(usb)接口等的外围接口访问的非易失性存储器(例如,闪存存储器)。存储介质包括微机电系统(mems),以及可通过例如网络和/或无线链路的通信介质访问的存储介质。

另外,在各种实施方案中,程序指令包括呈例如c的高级编程语言,或例如verilog的设计语言(hdl)、vhdl,或例如gdsii流格式(gdsii)的数据库格式的硬件功能性的行为级描述或寄存器传送级(rtl)描述。在一些情况下,由综合工具读取描述,所述综合工具合成描述以产生网表,所述网表包括来自合成库的门列表。网表包括一组门,所述组门还表示包括系统在内的硬件的功能。然后,放置和路由网表以产生数据集,所述数据集描述要应用于掩模的几何形状。随后在各种半导体制造步骤中使用掩模,以产生对应于系统的一个或多个半导体电路。或者,根据需要,计算机可访问存储介质上的指令是网表(具有或不具有合成库)或数据集。另外,指令用于由来自例如和mentor的供应商的基于硬件类型仿真器进行仿真的目的。

尽管上文已相当详细地描述了实施方案,但是在完全理解以上公开内容之后,本领域技术人员将明白多种变化和修改。旨在将以上权利要求解释为涵盖所有此类变化和修改。

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