高速缓存控制感知的存储器控制器

文档序号:1174206 发布日期:2020-09-18 浏览:14次 >En<

阅读说明:本技术 高速缓存控制感知的存储器控制器 (Cache control aware memory controller ) 是由 拉温德拉·N·巴尔加瓦 加内什·巴拉里斯南 于 2018-09-19 设计创作,主要内容包括:公开了用于执行计算系统的高效存储器访问的系统、设备和方法。外部系统存储器用作最后层级高速缓存并且包括多种类型的动态随机存取存储器(DRAM)中的一种。存储器控制器基于相同的单个接收到的存储器请求来生成标签请求和单独的数据请求。所述标签请求的发送优先于发送所述数据请求。在所述标签请求的处理期间执行部分标签比较。如果针对所述部分标签比较检测到标签未命中,则取消所述数据请求,并且将所述存储器请求发送到主存储器。如果针对所述部分标签比较检测到一个或多个标签命中,则对所述数据请求的处理取决于完整标签比较的结果。(Systems, devices, and methods for performing efficient memory access for computing systems are disclosed. The external system memory serves as a last level cache and includes one of a plurality of types of Dynamic Random Access Memory (DRAM). The memory controller generates a tag request and a separate data request based on the same single received memory request. The tag request is sent prior to sending the data request. A partial tag comparison is performed during processing of the tag request. If a tag miss is detected for the partial tag comparison, the data request is cancelled and the memory request is sent to main memory. Processing the data request is dependent on a result of the full tag comparison if one or more tag hits are detected for the partial tag comparison.)

高速缓存控制感知的存储器控制器

背景技术

相关技术的描述

随着半导体制造过程发展和片上几何尺寸减小,半导体芯片提供更多的功能性和性能。然而,在处理和集成电路设计的现代技术中仍然出现可限制潜在益处的设计问题。一个问题是,在连续数代的二维平面布局芯片中,每单位长度的互连等待时间持续增加。另外,各个芯片之间的高电阻抗会增加等待时间。另外,由于在这些较长信号路径上的寄生电容增加,因此从片外横越到另一个管芯的信号可能会显著增加这些信号的功耗(例如,增加10到100倍)。因此,用于系统存储器(诸如片外动态随机存取存储器(DRAM))的存储器访问等待时间是可观的。

另一个设计问题是,大多数访问大量数据的软件应用程序通常受存储器限制,因为计算时间通常由存储器带宽确定。片外动态随机存取存储器(DRAM)的存储器访问等待时间可能是数百个至超过一千个时钟周期,并且处理器设计中核心数量的增加加剧了存储器带宽问题。

鉴于以上内容,期望用于执行计算系统的高效存储器访问的高效方法和系统。

具体实施方式

在以下描述中,阐述了许多特定细节以提供对本文呈现的方法和机制的透彻理解。然而,本领域的普通技术人员应当认识到,可在没有这些特定细节的情况下实践各种实施方案。在一些情况下,并未详细示出众所周知的结构、部件、信号、计算机程序指令和技术,以避免混淆本文所述的方法。应当理解,为了说明的简单和清楚起见,附图中所示的元件不一定按比例绘制。例如,一些元件的尺寸可相对于其他元件被放大。

公开了用于执行计算系统的高效存储器访问的各种系统、设备、方法和计算机可读介质。在一个实施方案中,一种计算系统包括一个或多个计算资源和外部系统存储器。计算资源的实例包括通用中央处理单元(CPU)、图形处理单元(GPU)、加速处理单元(APU)等。计算资源生成存储器访问请求。在各种实施方案中,给定计算资源包括高速缓存存储器子系统。当给定计算资源确定存储器访问请求在高速缓存存储器子系统内未命中时,给定计算资源将存储器访问请求发送到给定存储器控制器。

给定存储器控制器耦接到与存储器访问请求的目标地址相关联的存储器装置。如果计算系统包括多个存储器装置,则操作系统在多个存储器装置之间分配地址空间。存储器控制器支持在计算资源的请求地址与指向一个或多个存储器装置中的存储位置的地址之间的映射。在一些实施方案中,存储器控制器连接到单个存储器装置。在其他实施方案中,存储器控制器连接到多个存储器装置。在各种实施方案中,存储器控制器包括用于存储存储器访问请求的一个或多个队列。在一个实施方案中,存储器控制器包括用于存储存储器读取请求的读取队列和用于存储存储器写入请求的单独的写入队列。在其他实施方案中,存储器控制器包括用于存储存储器读取请求和存储器写入请求两者的统一队列。

在又一实施方案中,存储器控制器包括用于存储所接收的存储器访问请求的一个或多个队列和用于存储选自一个或多个队列的调度的存储器访问请求的单独队列。因此,存储器控制器支持基于优先级和目标地址来向存储器装置无序地发送存储器访问请求。在一些实施方案中,存储器控制器还支持至少基于优先级来向计算资源无序地发送响应。

外部系统存储器以多种类型的动态随机存取存储器(DRAM)中的一种实现。DRAM在微处理器封装内至少提供千兆字节的集成存储器。在各种实施方案中,在访问使用更多DRAM和/或片外磁盘存储器或固态存储器实现的系统存储器之前,将相对大量的基于行的存储器存储装置用作最后层级高速缓存(LLC)。在各种实施方案中,耦接到DRAM的存储器控制器将所接收的单个存储器访问请求划分成两个单独的存储器访问请求。在一个实施方案中,存储器控制器基于所接收的存储器访问请求来生成标签访问请求,并且基于所接收的存储器访问请求来生成与标签访问请求不同的数据访问请求。

在一些实施方案中,存储器控制器存储指示,所述指示指定标签访问请求和数据访问请求中的每一者根据相同的所接收的存储器访问请求生成。在一个实施方案中,所述指示被存储在标签访问请求和数据访问请求中的每一者内。在一些实施方案中,读取队列和写入队列中的每一者被划分成标签队列和单独的数据队列。在一个实施方案中,所述指示是根据以下中的一者或多者生成的唯一识别符:根据自由列表生成的识别符、线程或进程识别符、计算源识别符、目标地址、年限或时间戳等。

在各种实施方案中,存储器控制器阻止发送数据访问请求,直到通过处理标签访问请求生成的信息可用为止。因此,如果根本未发送数据访问请求,则在数据访问请求之前将标签访问请求发送到存储器装置。读取存储器装置内的多个行中的给定行。给定行由标签访问请求中的目标地址指向。例如,目标地址内的页面索引用于识别给定行。在一个实施方案中,给定行将一个或多个标签存储在给定行的一部分内。

所述存储器控制器将存储在所述给定行中的所述一个或多个标签的仅一部分与所述标签访问请求的所述目标地址中的标签的仅一部分进行比较。在各种实施方案中,部分标签比较具有比完整标签比较明显更小的等待时间。如果未检测到匹配项,则发生标签未命中,并且存储器控制器取消向存储器装置发送数据访问请求。存储器控制器使存储数据访问请求的队列条目无效或以其他方式对其解除分配。因此,相对早地知悉所请求的数据不在DRAM中实现的最后层级高速缓存中。例如,与在完整标签比较的明显较大的等待时间之后知悉相比,在部分标签比较的明显较小的等待时间之后就已知悉。

对于标签未命中,存储器控制器还将单个存储器访问请求发送到片外系统存储器和/或主存储器,诸如磁盘存储器或固态存储器。在一个实施方案中,存储器控制器在队列中维持单个存储器访问请求的副本。在其他实施方案中,存储器控制器根据标签访问请求和单独的数据访问请求中的一者或多者再生单个存储器访问请求。

在一个实施方案中,当存储器控制器基于部分标签比较确定发生一个或多个标签命中时,存储器控制器将给定行中的一个或多个标签的整体与标签访问请求的目标地址中的标签的整体进行比较。在各种实施方案中,完整标签比较具有比部分标签比较明显更长的等待时间。如果完整标签比较导致标签未命中,则存储器控制器执行用于根据部分标签比较确定标签未命中的上述步骤。如果完整标签比较导致标签命中,则存储器控制器将数据访问请求发送到存储器装置。

存储器控制器基于数据访问请求的访问类型来执行给定行中的数据的读取访问或写入访问。在一个实施方案中,存储器控制器基于对应于给定行内的标签命中的标签的位置来识别要访问的给定行中的数据,所述位置指示给定行内的数据的位置。

参见图1,示出了计算系统100的一个实施方案的一般化框图。如图所示,计算系统100包括在存储器控制器130中的每一个与计算资源110之间的通信结构120。在所示的实施方案中,计算资源包括中央处理单元(CPU)112、图形处理单元(GPU)114和集线器116。集线器116用于与多媒体引擎118通信。尽管示出了单个存储器控制器130,但是在其他实施方案中,在计算系统100中使用另一数量的存储器控制器。存储器控制器130通过通信结构120从计算资源110接收存储器访问请求,并且将所述存储器访问请求发送到片外主存储器162和被实现为动态随机存取存储器(DRAM)170的系统存储器中的一者或多者。存储器控制器130还从DRAM 170和主存储器162接收响应,并且将响应发送到计算资源110中的请求的对应源。

在一些实施方案中,计算系统100的部件是诸如片上系统(SOC)的集成电路(IC)上的单个管芯。在其他实施方案中,部件是系统级封装(SiP)或多芯片模块(MCM)中的单个管芯。在一个实施方案中,计算系统100是以下内的独立系统:移动计算机、智能电话、智能手表或平板电脑;桌上型电脑;服务器;或其他项。CPU 112、GPU 114和多媒体引擎118是能够生成存储器访问请求的计算资源的实例。尽管未示出,但是在其他实施方案中,在计算资源110中包括其他类型的计算资源。

CPU 112中的一个或多个处理器核心中的每一个包括用于根据给定的选定指令集架构(ISA)执行指令的电路。在各种实施方案中,CPU 112中的处理器核心中的每一个包括用于处理给定的ISA的指令的超标量、多线程微架构。在一个实施方案中,GPU 114包括具有大量并行执行通道的高并行数据微架构。在一个实施方案中,微架构将单指令多数据(SIMD)管道用于并行执行通道。多媒体引擎118包括用于处理多媒体应用的音频数据和视觉数据的处理器。

在一个实例中,加速处理单元(APU)、显示控制器、音频处理器等是要包括在计算资源110中的另外的候选装置。APU的一个实例是CPU,所述CPU与GPU、FPGA或其他处理单元集成在相同管芯上,从而提高了这些单元之间的数据传送速率,同时降低了功耗。在其他实施方案中,APU包括视频处理和其他专用加速器。

在各种实施方案中,通信结构120在计算资源110与存储器控制器130之间来回传送业务,并且包括用于支持相应的通信协议的接口。在一些实施方案中,通信结构120至少包括用于存储请求和响应的队列、用于在跨内部网络发送请求之前在所接收的请求之间进行仲裁的选择逻辑、用于构建分组并对其进行解码的逻辑以及用于选择分组的路由的逻辑。

在一些实施方案中,计算系统100的地址空间至少在CPU 112、GPU 114和集线器116以及一个或多个其他部件(诸如输入/输出***装置(未显示))与其他类型的计算资源之间划分。维护存储器映射以用于确定将哪个地址映射到哪个部件,并因此确定应当将对特定地址的存储器请求路由到CPU 112、GPU 114和集线器116中的哪一者。随着软件应用程序访问越来越多的数据,存储器子系统得到了越来越多的利用。等待时间变得更为关键。更多的片上存储器存储装置用于减少互连等待时间。例如,计算资源110内的计算资源中的一者或多者包括高速缓存存储器子系统,以用于减少相应的处理器核心的存储器等待时间。在各种实施方案中,在访问片外系统存储器(未示出)之前,将DRAM 170中相对大量的基于行的存储器存储装置用作最后层级高速缓存(LLC),所述片外系统存储器可以是更多的DRAM或者作为磁盘存储器或固态存储器的主存储器162。

在各种实施方案中,DRAM 170将数据的每一位存储在集成电路内的单独的电容器中。电容器可以是充电的或者放电的。这两种状态用于表示位的两个逻辑值。DRAM 170每位利用单个晶体管和电容器。与片上同步RAM(SRAM)中使用的六个晶体管相比,DRAM达到更高的密度。与HDD和快闪存储器不同,DRAM 170是易失性存储器而不是非易失性存储器。DRAM170在移除电源时相对快速地丢失其数据。

最近,在包括竖直和水平集成到单个电路中的两层或更多层有源电子部件的三维集成电路(3D IC)方面已经取得了进展。称为系统级封装(SiP)或芯片堆叠多芯片模块(MCM)的3D封装通过将单独的芯片堆叠在单个封装中来节省空间。这些层内的部件使用片上信令(竖直地或水平地)进行通信。此信令在已知的二维平面布局电路上提供了缩短的互连信号等待时间。

在一个实施方案中,DRAM 170包括多通道存储器架构。这种类型的架构通过在其间添加更多的通信通道来提高数据到存储器控制器130的传送速度。在一个实施方案中,多通道架构利用多个存储器模块和母板和/或能够支持多个通道的卡。在另一个实施方案中,如前所述,DRAM 170利用三维集成电路(3D IC)来提供最后层级高速缓存。可能存在并设想使用包括一个或多个行缓冲器或其他等效结构的基于行的访问方案的用于最后层级高速缓存的其他存储器技术。其他存储器技术的实例包括相变存储器、自旋扭矩转移电阻式存储器、忆阻器等。

如前所述,在各种实施方案中,DRAM 170在访问系统存储器之前用作最后层级高速缓存(LLC)。在一些实施方案中,存储器控制器130包括用于处理RAM事务(诸如DRAM打开/激活、预充电、关闭和刷新命令)的控制逻辑。另外,存储器控制器130包括用于处理诸如标签比较的高速缓存访问并且识别基于标签比较读出的较大数据的一部分的控制逻辑。在各种实施方案中,DRAM 170通过I/O控制器和总线160以及存储器总线150填充有来自系统存储器(未示出)和主存储器162中的一者或多者的数据。具有所请求的块的对应的高速缓存填充线从DRAM 170传送到计算资源110中的高速缓存存储器子系统中的对应的高速缓存存储器子系统,以便完成原始的存储器访问请求。高速缓存填充线放置在一个或多个层级的高速缓存中。

用于存储器控制器130的相应接口的协议的一个实例是双倍数据速率(DDR)类型的协议。所述协议确定用于信息传送的值,诸如每时钟周期的数据传送次数、信号电压电平、信号定时、信号和时钟相位以及时钟频率。协议实例包括DDR2SDRAM、DDR3SDRAM、GDDR4(图形双倍数据速率,版本4)SDRAM和GDDR5(图形双倍数据速率,版本5)SDRAM。存储器控制器130包括用于与存储器通道交接并遵循对应的协议的控制电路。

如图所示,DRAM 170包括多个存储器阵列存储体174A至174B。存储体174A至174B中的每一个存储体包括行缓冲器172A至172B中的相应的行缓冲器。行缓冲器172A至172B中的每一个行缓冲器将数据存储在存储器阵列存储体174A至174B内的多行中的所访问的行中。所访问的行由所接收的存储器访问请求中的DRAM地址识别。DRAM 170的逻辑138内的控制逻辑执行复杂的事务,诸如激活(打开)事务以及对DRAM 170内的数据和控制线进行预充电,一次是访问所识别的行,并且一次是在关闭交易期间将存储在行缓冲器中的经修改的内容放回到所识别的行。不同的DRAM事务(诸如激活/打开、列访问、读取访问、写入访问和预充电/关闭)中的每一者具有不同的相应等待时间。通常,激活和预充电事务具有比读取访问和写入访问事务明显更高的等待时间。

在各种实施方案中,DRAM 170包括一个或多个存储器通道、每通道的一个或多个存储器模块或装置、每存储器模块的一个或多个排、每排的一个或多个存储体以及每存储体的一个或多个行。通常,每一行存储一页数据。页面的大小是基于设计考虑来选择的。基于设计选择,页面可以是1千字节(1KB)、4千字节(4KB)或任何大小。

计算资源110中的高速缓存存储器子系统(未示出)包括被配置为存储数据块的高速的高速缓存存储器。如本文所使用的,“块”是存储在连续存储器位置中的一组字节,所述一组字节出于一致性目的而被视为一个单元。如本文所使用的,术语“高速缓存块”、“块”、“高速缓存线”和“线”中的每一者是可互换的。在一些实施方案中,块还可以是高速缓存中的分配和解除分配的单元。块中的字节数根据设计选择而变化,并且可以具有任何大小。另外,术语“高速缓存标签”、“高速缓存线标签”和“高速缓存块标签”中的每一者是可互换的。在各种实施方案中,高速缓存存储器子系统被实现为高速缓存的层次结构。

如本文所使用的,术语“访问”是指执行存储器读取请求或存储器写入请求操作,如果对应请求地址的所请求的数据驻留在高速缓存中,则所述操作导致高速缓存命中。替代地,如果所请求的数据未驻留在高速缓存中,则存储器访问请求导致高速缓存未命中。如本文所使用的,“存储器读取请求”也称为读取请求,并且类似地,“存储器写入请求”也称为写入请求。

如果在计算资源110中的高速缓存存储器子系统中未发现所请求的数据,则生成存储器访问请求并将其传输到存储器控制器130。如图所示,存储器控制器130包括用于使通过通信结构120从计算资源110接收的存储器访问请求排队的请求队列132。存储器控制器130还具有用于存储从DRAM 170接收的响应的响应队列134。在一个实施方案中,请求队列132包括用于存储存储器访问请求的一个或多个队列。在另一个实施方案中,请求队列132包括用于存储存储器读取请求的读取队列和用于存储存储器写入请求的单独的写入队列。在其他实施方案中,请求队列132包括用于存储存储器读取请求和存储器写入请求两者的统一队列。

在又一实施方案中,请求队列132包括用于存储所接收的存储器访问请求的一个或多个队列和用于存储选自一个或多个队列的调度的存储器访问请求的单独队列。调度器136包括用于选择存储在请求队列132中的存储器访问请求以向DRAM 170无序地发送的一个或多个调度块。因此,存储器控制器130支持基于优先级和目标地址来向DRAM 170无序地发送存储器访问请求。

在各种实施方案中,存储器总线150支持在给定时间量内(诸如在读取模式和写入模式的给定模式期间)在单个方向上发送数据业务,并且然后在另一给定时间量内(诸如在读取模式和写入模式的其他模式期间)在相反的方向上发送数据业务。在一个实施方案中,存储器总线150至少利用命令总线和数据总线,并且存储器总线150支持用于将数据总线上的数据业务从DRAM 170发送到存储器控制器130的读取模式。另外,存储器总线150支持用于将数据总线上的数据业务从存储器控制器130发送到DRAM 170的写入模式。

在一些实施方案中,存储器控制器130还支持至少基于优先级来向计算资源110无序地发送响应。在各种实施方案中,存储器控制器130中的调度器136基于服务质量(QoS)或其他优先级信息、年限、进程或线程识别符(ID)以及与(诸如针对相同的存储器通道、针对相同的排、针对相同的存储体和/或针对相同的页面的)其他所存储的请求的关系来调度所存储的存储器访问请求的发送。

在各种实施方案中,高速缓存控制器和存储器装置控制器逻辑138(其还称为逻辑138)将所接收的单个存储器访问请求划分成两个单独的存储器访问请求。在一个实施方案中,逻辑138基于所接收的存储器访问请求来生成标签访问请求,并且基于所接收的存储器访问请求来生成与标签访问请求不同的数据访问请求。标签访问请求和数据访问请求也可称为高速缓存标签访问请求和高速缓存数据访问请求。在一些实施方案中,请求队列132内的读取队列和写入队列中的每一者被划分成标签队列和单独的数据队列。在一个实施方案中,逻辑138根据以下中的一者或多者生成唯一识别符:根据自由列表生成的识别符、线程或进程识别符、计算源识别符、目标地址、年限或时间戳等。在一些实施方案中,逻辑138将所生成的唯一识别符存储在标签访问请求和数据访问请求中的每一者中。

在一些实施方案中,逻辑138基于通过处理标签访问请求而生成的信息来调度发送数据访问请求。在各种实施方案中,逻辑138阻止发送数据访问请求,直到通过处理标签访问请求生成的信息可用为止。因此,如果根本未发送数据访问请求,则在发送数据访问请求之前将标签访问请求发送到存储器装置。在一个实施方案中,目标地址内的页面索引被用于识别存储体174A至174B中所针对的存储体中的多个行中的给定行。在一个实施方案中,给定行将一个或多个标签存储在给定行的一部分内。由于DRAM 170被用作诸如RAM高速缓存存储器的最后层级高速缓存,因此所述存储器装置可称为RAM高速缓存存储器装置。

在各种实施方案中,逻辑138在存储在给定行中的一个或多个标签与存储在标签访问请求中的单个存储器访问请求的目标地址中的标签之间执行部分标签比较。在各种实施方案中,部分标签比较具有比完整标签比较明显更小的等待时间。如果未检测到匹配项,则发生标签未命中,并且逻辑138取消向DRAM 170发送数据访问请求。存储器控制器使存储数据访问请求的队列条目无效或以其他方式对其解除分配。因此,较早地知悉所请求的数据不在系统存储器中,诸如与在完整标签比较的明显较大的等待时间之后知悉相比,在部分标签比较的明显较小的等待时间之后就已知悉。对于标签未命中,逻辑138还将单个存储器访问请求发送到主存储器162。在一些实施方案中,完整标签比较与部分标签比较同时开始。如果未检测到部分标签比较的匹配项,则关闭或停止完整标签比较,或者允许继续进行完整标签比较,但是结果将被丢弃。

在一个实施方案中,当逻辑138基于部分标签比较确定发生一个或多个标签命中时,逻辑138将给定行中的一个或多个标签的整体与标签访问请求的目标地址中的标签的整体进行比较。如先前所述,在一些实施方案中,完整标签比较与部分标签比较同时开始。在各种实施方案中,此完整标签比较具有比部分标签比较明显更长的等待时间。如果完整标签比较导致标签未命中,则逻辑138执行用于根据部分标签比较确定标签未命中的上述步骤。如果完整标签比较导致标签命中,则逻辑138将数据访问请求发送到DRAM 170。在一个实施方案中,完整标签命中结果用于识别稍后通过数据访问请求的处理而读出的行的特定部分。例如,所述行中的特定高速缓存线由标签命中结果识别。

片外磁盘存储器162可提供数据的非易失性、随机访问二级存储。在一个实施方案中,片外磁盘存储器162可包括一个或多个硬盘驱动器(HDD)。HDD通常包括一个或多个旋转磁盘,每个磁盘都涂覆有磁性介质。这些磁盘以每分钟几千转的速率旋转。磁性致动器负责定位旋转磁盘上的磁性读取/写入装置。在另一个实施方案中,片外磁盘存储器162利用固态磁盘(SSD)。固态磁盘也可称为固态驱动器。SSD可模拟HDD接口,但是SSD利用固态存储器而不是HDD中发现的机电装置来存储持久数据。例如,SSD可能包括快闪存储器的存储体。

现在参见图2,示出了存储器控制器200的一个实施方案的一般化框图。在所示的实施方案中,存储器控制器200包括经由通信结构的计算资源的接口210、用于存储所接收的存储器访问请求和所接收的响应的队列220、控制单元250以及经由存储器总线的至少一个数据总线的存储器装置的接口280。接口210和280中的每一者都支持相应的通信协议。

在一个实施方案中,队列220包括用于基于所接收的读取请求来存储所生成的请求的读取标签队列232和读取数据队列234。在一个实施方案中,队列220包括用于基于所接收的写入请求来存储所生成的请求的写入标签队列236和写入数据队列238。在一个实施方案中,队列220包括用于存储调度的存储器访问请求的队列239,所述调度的存储器访问请求选自队列232-238或统一队列(在使用统一队列的情况下)中的一者或多者。

在一些实施方案中,读取调度器252包括用于无序地从读取标签队列232中选择读取标签请求的仲裁逻辑。读取调度器252基于服务质量(QoS)或其他优先级信息、年限、进程或线程标识符(ID)以及与(诸如针对相同的存储器通道、针对相同的排、针对相同的存储体和/或针对相同的页面的)其他所存储的请求的关系来调度向存储器装置无序地发送读取标签队列232内的所存储的标签读取请求。写入调度器254包括用于写入标签队列236的类似选择逻辑。在一个实施方案中,响应调度器256包括用于基于优先级向计算资源无序地发送从存储器装置接收的响应的类似逻辑。

在一些实施方案中,控制寄存器270存储当前模式的指示。例如,片外存储器数据总线和存储器装置在给定时间处支持读取模式或者写入模式。因此,业务在当前模式期间在给定单个方向上进行路由,并且当在数据总线周转等待时间之后更改当前模式时改变方向。在各种实施方案中,控制寄存器270存储在读取模式期间要发送的阈值数量的读取请求(读取突发长度)。

在一个实施方案中,高速缓存控制器逻辑260将所接收的单个存储器访问请求划分成两个单独的存储器访问请求。在一个实施方案中,逻辑260基于所接收的存储器访问请求来生成标签访问请求,并且基于所接收的存储器访问请求来生成与标签访问请求不同的数据访问请求。在一些实施方案中,逻辑260存储指示,所述指示指定标签访问请求和数据访问请求中的每一者根据相同的所接收的存储器访问请求生成。在一个实施方案中,所述指示被存储在标签访问请求和数据访问请求中的每一者内。在一个实施方案中,所述指示是根据以下中的一者或多者生成的唯一识别符:根据自由列表生成的识别符、线程或进程识别符、计算源识别符、目标地址、年限或时间戳等。在其他实施方案中,逻辑260将指示存储在对应的队列条目中,诸如存储读取标签请求的内容的读取标签队列232中的条目以及存储单独但对应的读取数据请求的内容的读取数据队列234中的条目。写入标签队列236和写入数据队列238存储用于写入请求的类似指示。

在各种实施方案中,存储器装置逻辑262阻止发送数据访问请求,直到通过处理标签访问请求生成的信息可用为止。因此,如果根本未发送数据访问请求,则在数据访问请求之前将标签访问请求发送到存储器装置。在一个实施方案中,目标地址内的页面索引被逻辑262用于识别存储器装置的所针对的存储体中的多个行中的给定行。在一个实施方案中,给定行将一个或多个标签存储在给定行的一部分内。

在各种实施方案中,逻辑262在存储在给定行中的一个或多个标签与存储在标签访问请求中的单个存储器访问请求的目标地址中的标签之间执行部分标签比较。如果未检测到匹配项,则发生标签未命中,并且逻辑262取消向存储器装置发送数据访问请求。逻辑262基于访问类型使读取数据队列234或者写入数据队列238中的队列条目无效或以其他方式对其解除分配。对于标签未命中,逻辑262还将单个存储器访问请求发送到单独的系统存储器或主存储器。在一些实施方案中,逻辑262与执行部分标签比较同时开始执行完整标签比较。如果未检测到部分标签比较的匹配项,则关闭或停止完整标签比较,或者允许继续进行完整标签比较,但是结果将被丢弃。

在一个实施方案中,当逻辑262基于部分标签比较确定发生一个或多个标签命中时,逻辑262将给定行中的一个或多个标签的整体与标签访问请求的目标地址中的标签的整体进行比较。如果完整标签比较导致标签未命中,则逻辑262执行用于根据部分标签比较确定标签未命中的上述步骤。如果完整标签比较导致标签命中,则逻辑262将数据访问请求发送到DRAM 170。

现在参见图3,示出用于将存储器访问请求发送到DRAM中的最后层级高速缓存存储布置的方法300的一个实施方案。出于讨论的目的,以顺序的次序示出此实施方案中(以及图4至图5中)的步骤。然而,应注意,在所描述方法的各种实施方案中,所描述元件中的一个或多个同时执行、以不同于所示的次序执行或者被完全省略。还可根据需要执行其他另外的元件。本文所述的各种系统或设备中的任一者被配置为实现方法300。

一个或多个计算资源执行计算机程序或软件应用程序。计算资源的实例已在前面给出。计算资源确定给定存储器访问请求在计算资源内的高速缓存存储器子系统内未命中。计算资源通过存储器控制器将存储器访问请求发送到诸如DRAM的系统存储器。

在计算机程序的执行期间(框302),检测计算资源内未命中的存储器请求(框304)。将给定存储器请求发送到耦接到至少一个存储器装置的存储器控制器(框306),在所述存储器控制器处,将给定存储器请求划分成标签请求和单独的数据请求(框308)。将标签请求与其他标签请求一起调度以发送到存储器装置(框310)。阻止发送数据请求,直到通过处理标签请求生成的信息可用为止(框312)。将通过调度器选择的标签请求发送到存储器装置(框314)。在一些情况下,标签请求是唯一的标签请求,因为给定存储器请求是唯一的存储器请求。在这种情况下,调度不使用来自多个标签请求的信息。在一些实施方案中,当仅存在单个标签请求和单个数据请求时,如果存储器请求是读取请求,则推测性地将数据请求与标签请求一起发送。如果最终发生完整标签未命中,则可丢弃所检索的数据。否则,如在即将到来的对方法400和方法500的描述中进一步描述的,在发送数据请求之前执行部分标签比较。

参见图4,示出用于处理对DRAM中的最后层级高速缓存存储布置的标签访问请求的方法400的另一个实施方案。在所示的实例中,将标签请求发送到存储器装置(框402)。如前所述,在各种实施方案中,用于高速缓存控制器的逻辑(例如,图2的逻辑260)根据单个接收到的存储器请求生成标签请求和单独的数据请求。然后,高速缓存控制器逻辑将标签请求发送到用于存储器控制器的逻辑或用于存储器装置的逻辑(即,图2的逻辑262)。存储器控制器内用于存储器装置的逻辑将标签请求发送到存储器装置。响应于标签请求,在DRAM高速缓存内识别对应于标签请求中的地址的给定行(框404)。由激活事务打开给定行(框406)。将来自行的信息存储在行缓冲器中(框408)。将存储在行缓冲器中的一个或多个标签的一部分与标签请求的地址中的标签的一部分(部分标签比较)进行比较(框410)。

如果未发生基于部分标签比较的标签未命中(条件框412的“否”分支),则已发生部分标签命中并且处理单独的数据请求(框414)。在一个实施方案中,单独的数据请求是读取请求,并且通过将数据请求发送到存储器装置来推测性地处理所述数据请求。在一些实施方案中,还执行完整标签比较。在一些实施方案中,用于存储器装置的逻辑执行部分标签比较,并且用于高速缓存控制器的逻辑执行完整标签比较。如果数据请求是写入请求,则不对数据请求进行处理,直到执行完整标签比较为止。将存储在行缓冲器中的一个或多个标签的整体与标签请求的目标地址中的标签的整体进行比较。在各种实施方案中,完整标签比较的等待时间比部分标签比较的等待时间长。如果基于完整标签比较确定了完整标签未命中,则丢弃通过发送读取请求而检索到的数据。如果数据请求是读取请求并且已经被发送到存储器装置,则丢弃所检索的数据并且用于高速缓存控制器的逻辑将对应的存储器请求发送到系统存储器。如果数据请求尚未发送,则用于高速缓存控制器的逻辑取消数据请求并且将对应的存储器请求发送到系统存储器。如果基于完整标签比较确定了完整标签命中,则将通过发送数据请求(读取请求)而检索到的数据发送到用于高速缓存控制器的逻辑,以服务于对应的存储器请求。如果发生完整标签命中并且数据请求是写入请求,则将数据请求发送到存储器装置以服务于存储器请求。否则,如果基于部分标签比较确定发生了标签未命中(条件框412的“是”分支),则取消向存储器装置发送对应的数据请求(框416),并且将存储器请求发送到系统存储器(框418)以在DRAM高速缓存中提供填充数据。在各种实施方案中,使用存储器控制器的逻辑与高速缓存控制器的逻辑之间的上述通信,以及将以上步骤用于丢弃数据、取消数据请求或服务请求。在一些实施方案中,用于存储器装置的逻辑(即,图2的逻辑262)将部分标签未命中的指示发送到用于高速缓存控制器的逻辑(即,图2的逻辑260),所述用于高速缓存控制器的逻辑丢弃推测性地检索到的数据或取消数据请求。在其他实施方案中,用于存储器装置的逻辑丢弃推测性地检索到的数据并且将部分标签未命中的指示发送到用于高速缓存控制器的逻辑。

参见图5,示出用于处理独立于对DRAM中的最后层级高速缓存存储布置的标签访问请求的数据访问请求的方法500的另一个实施方案。针对标签请求确定部分标签命中(框502)。随后,将行缓冲器中的一个或多个标签的整体与标签请求的地址中的标签的整体进行比较(框504)。如果确定发生了完整标签未命中(条件框506的“否”分支),则将存储器请求发送到系统存储器以在DRAM高速缓存中提供填充数据(框508)。如前所述,在各种实施方案中,如果数据请求是读取请求,并被推测性地发送到存储器装置,则将丢弃所检索的数据,并且用于高速缓存控制器的逻辑将对应的存储器请求发送到系统存储器。如果数据请求尚未被发送,则用于高速缓存控制器的逻辑取消数据请求并且将对应的存储器请求发送到系统存储器。

如果确定发生了完整标签命中(条件框506的“是”分支),则将数据请求发送到存储器装置(框510),并且在DRAM高速缓存内识别对应于数据请求中的地址的给定行(框512)。基于访问类型执行对行缓冲器中的对应的高速缓存线的读取或写入访问(框514),在行缓冲器中更新对应的元数据(框516),并且关闭对应于行缓冲器中的信息的行(框518)。如前所述,在一些实施方案中,当数据请求是读取请求时,在完成完整标签比较之前,基于部分标签比较推测性地将数据请求发送到存储器装置。在这种情况下,如果完整标签比较确定完整标签未命中,则丢弃所检索的数据。如果完整标签比较确定完整标签命中,则较早地提供所检索的数据,以服务于读取请求。

在各种实施方案中,使用软件应用程序的程序指令来实现先前所述的方法和/或机制。所述程序指令以诸如C的高级编程语言来描述硬件的行为。替代地,使用诸如Verilog的硬件设计语言(HDL)。程序指令存储在非暂时性计算机可读存储介质上。可使用多种类型的存储介质。在使用期间,计算系统可访问存储介质,以将程序指令和随附数据提供到计算系统以用于程序执行。计算系统至少包括一个或多个存储器和被配置为执行程序指令的一个或多个处理器。

应当强调的是,上述实施方案仅是实现方式的非限制性实例。一旦充分理解上述公开内容,许多变化和修改对于本领域的技术人员将变得显而易见。意图将所附权利要求解释为包含所有此类变化和修改。

19页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:超规模的云化N路路由保护

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类