掌桥专利:专业的专利平台
掌桥专利
首页

用于存储数据的区域的缓存

文献发布时间:2023-06-19 11:55:48


用于存储数据的区域的缓存

背景技术

相关技术的描述

随着半导体制造工艺进步和裸片上几何尺寸减小,半导体芯片提供更多的功能性和性能。然而,在处理和集成电路设计方面的现代技术中仍然出现限制了潜在的益处的设计问题。一个问题是在连续数代的二维平面布局芯片中的每单位长度的互连延迟不断增加。而且,单独的芯片之间的高电阻抗增加了等待时间。另外,在芯片外横越至另一裸片的信号由于这些较长的信号路线上的增加的寄生电容而增加了这些信号的功率消耗。

另一设计问题是存取大量数据的大多数软件应用通常受到存储器限制,因为计算时间一般由存储器带宽确定。芯片外动态随机存取存储器(DRAM)的存储器存取等待时间是数百个时钟循环乃至超过一千个时钟循环,并且处理器设计中的核心的增加的数目已经加重了存储器带宽问题。近年来,在用于实施封装内存储器的存储器技术方面已经有进展,其在存取封装外DRAM和主存储器之前提供对大型、低等待时间、高带宽存储器的存取。

所述存储器技术的一个示例是三维集成电路(3D IC),所述三维集成电路用于包括竖直地和水平地集成到单个电路中的两层或更多层有效电子部件。3D封装,被称为封装内系统(SiP)或芯片堆叠多芯片模块(MCM),通过将单独的芯片堆叠在单个封装中而节省了空间。这些层内的部件使用芯片上信令竖直地或水平地进行通信。此信令与已知的二维平面布局电路相比提供减小的互连信号延迟。

以上描述中的制造趋势导致单个封装内的千兆字节的集成存储器。在一些情况下,计算系统使用额外的芯片上存储装置作为在存取芯片外存储器之前的末级缓存。由额外的存储器实现的降低的不命中率有助于隐藏在处理器与其芯片外存储器之间的等待时间间隙。然而,对于此额外的集成存储器,基于行的存储器的缓存存取机制是低效的。大标签数据阵列,诸如多千兆字节缓存的数百兆字节,放置在微处理器裸片上是昂贵的,并且提供用于查找大标签阵列的高等待时间。因为标签和数据是以连续方式读出,所以查找和数据检索消耗太多时间。

增加额外的集成存储器的数据缓存线的大小,诸如从64字节线增长至4千字节(KB)线,减小了集成存储器中的缓存线的数目和对应标签的大小。然而,仍然在原始缓存线大小(64字节线)的粒度上维持脏位和相干信息。因此,封装上DRAM提供了大量额外的数据存储,但缓存和DRAM存取机制是低效的。

鉴于以上内容,需要用于高效地执行计算系统中的存储器存取的有效的方法和系统。

附图说明

通过结合附图参考以下描述,可更好地理解本文描述的方法和机制的优点,在附图中:

图1是数据存储的一个实施方案的框图。

图2是用于执行计算系统中的有效存储器存取的方法的一个实施方案的流程图。

图3是计算系统的一个实施方案的框图。

图4是封装内系统(SiP)的一个实施方案的框图。

图5是数据存储的一个实施方案的框图。

图6是数据存储的一个实施方案的框图。

图7是数据存储的一个实施方案的框图。

图8是数据存储的一个实施方案的框图。

图9是数据存储的一个实施方案的框图。

图10是用于执行计算系统中的高效存储器存取的方法的一个实施方案的流程图。

图11是数据存储的一个实施方案的框图。

图12是数据存储的一个实施方案的框图。

图13是数据存储的一个实施方案的框图。

图14是用于执行计算系统中的高效存储器存取的方法的一个实施方案的流程图。

虽然本发明容易有各种修改和替代形式,但通过附图中的示例示出特定实施方案,并且在本文详细描述了所述特定实施方案。然而,应理解,附图和对附图的详细描述无意将本发明限制于所公开的特定形式,相反,本发明将覆盖落在由所附权利要求限定的本发明的范围内的所有修改、等同物和替代方案。

具体实施方式

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

公开了用于高效地执行计算系统中的存储器存取的各种系统、设备、方法和计算机可读介质。计算系统中的一个或多个客户端处理应用。此类客户端的示例包括通用中央处理单元(CPU)、图形处理单元(GPU)、加速处理单元(APU)、输入端/输出端(I/O)装置等。所述计算系统还包括用于在客户端之间传递数据的多个链接接口。另外,所述一个或多个客户端中的每一者经由通信构造从末级缓存存取数据。

在各种实施方案中,使用与系统存储器分开的低等待时间、高带宽存储器来实施缓存。在一些实施方案中,缓存用作缓存子系统中的末级缓存。在其他实施方案中,缓存是缓存子系统内的另一层级。系统存储器包括多种封装外动态随机存取存储器(DRAM)和诸如硬盘驱动器(HDD)和固态盘(SSD)的主存储器中的一者。在一些实施方案中,计算系统使用与客户端中的一者的处理单元一起包括在封装内系统(SiP)中的集成DRAM(诸如三维(3D)DRAM)来实施缓存。在其他实施方案中,所述计算系统包括用于实施缓存的其他存储器技术中的一者,诸如同步RAM(SRAM)、嵌入式DRAM(eDRAM)、诸如固态盘的闪存存储器以及多种非易失性存储器中的一者。非易失性存储器的示例是相变存储器、记忆电阻器和自旋转移矩(STT)磁阻随机存取存储器(MRAM)。

用于缓存的缓存控制器包括一个或多个队列。每个队列存储相应类型的存储器存取请求。例如,在一些设计中,第一队列存储存储器读取请求,并且第二队列存储存储器写入请求。缓存控制器内的逻辑选择一个或多个队列中的队列并且从选定的队列选择存储器存取请求。所述逻辑确定与存储在系统存储器中的相连数据的第一区域相对应的地址范围,所述第一区域具有存储在缓存的第二区域中的所述相连数据的副本。如本文使用,“相连数据”是指在数据存储中位于彼此旁边的一个或多个位的数据。在一些实施方案中,相连数据的大小的范围在缓存线的大小(例如,64字节)与页的大小(例如,4千字节)之间,以便提供与正在执行的软件应用的所预测的即将到来的数据存取的区域相对应的大小粒度。在其他实施方案中,使用另一大小的相连数据。

在较早的时间点,当所述逻辑确定所预测的即将到来的数据存取的区域被限定时,所述逻辑将来自此区域(在此示例中,其为系统存储器的第一区域)的相连数据的副本存储到缓存的第二区域中。第一区域中的相连数据包括与所预测的即将到来的数据存取相对应的数据。所述逻辑还初始化用于表征所述区域的多个参数。例如,所述逻辑维持第一开始地址,所述第一开始地址指向在系统存储器的起点处存储数据的存储器位置。另外,所述逻辑维持第二开始地址,所述第二开始地址指向在缓存的第二区域的起点处存储数据的存储器位置。此外,所述逻辑维持所述第二区域的大小。

在一个实施方案中,通过监视所接收的存储器存取请求并且识别模式,所述逻辑预测即将到来的存储器存取将要存取的系统存储器的区域。所述逻辑识别此区域。作为响应,所述逻辑执行以上步骤,诸如存储来自此区域的相连数据的副本并且更新对应的参数。在另一实施方案中,所述逻辑从软件接收识别或用于识别所预测的即将到来的数据存取的区域的一个或多个提示。

当所述逻辑检测到第二区域的大小的变化时,所述逻辑确定开始于第一开始地址并且结束于作为第一开始地址和第二区域的新大小的总和的地址的地址范围。在一些实施方案中,当在第二区域中更新数据时,发生对第一开始地址和第二区域的大小中的一者或多者的更新。对第二区域的更新包括以下各项中的一者或多者:在第二区域中添加数据、移除数据以及覆写现有的数据。当所述逻辑从多个队列中的一者选择存储器存取请求时,缓存控制器的逻辑将选定的存储器存取请求的请求地址与所述地址范围进行比较。所述逻辑确定请求地址是否在此范围内。因此,为了确定在末级缓存内是存在缓存命中还是缓存未命中,所述逻辑将所述请求地址与此维持的地址范围进行比较,而不是执行对缓存中的标签阵列的集合关联查找或完全关联查找。所述比较是比缓存的索引和标签的查找操作更快的操作。

当所述逻辑确定选定的存储器存取请求的请求地址不在所述地址范围内时,所述逻辑向系统存储器发送用于服务的选定的存储器存取请求。然而,当所述逻辑确定请求地址在所述地址范围内时,所述逻辑通过从缓存存取数据来服务所述存储器存取请求。为了这样做,所述逻辑基于请求地址与第一开始地址之间的差值而确定偏移。之后,所述逻辑基于所述偏移和第二开始地址而确定被转译的地址。接着,所述逻辑通过从被转译的地址开始从缓存存取数据来服务存储器存取请求。

参看图1,示出了数据存储100的一个实施方案的通用框图。如图示,系统存储器110和末级缓存130中的每一者都存储数据。虽然描述内容将缓存130描述成末级缓存,但在其他实施方案中,缓存130是缓存子系统内的另一层级。出于说明简易起见,未示出处理单元、通信接口等。数据126是存储在系统存储器110的区域120中的相连数据。末级缓存130在区域140中存储区域120的相连数据126的副本。区域参数150表征区域120和140。

在各种设计中,系统存储器110包括封装外DRAM、硬盘驱动器(HDD)和固态盘(SSD)中的一者或多者。在一些设计中,末级缓存130包括与系统存储器110分开的封装上低等待时间、高带宽存储器。在一些设计中,末级缓存130包括3D DRAM。在其他设计中,末级缓存130包括同步RAM(SRAM)、嵌入式DRAM(eDRAM)、闪存存储器(诸如固态盘)以及多种非易失性存储器中的一者。非易失性存储器的示例是相变存储器,记忆电阻器和自旋转移矩(STT)磁阻随机存取存储器(MRAM)。

在所说明的实施方案中,地址122(其还称为“x”)指向在区域120的起点处存储数据的存储器位置。此处,通用值“x”是以任何方式表示的任何值,诸如整数、十六进制等。区域120具有大小124,其还称为“S字节”。以类似的方式,地址142(其还称为“a”)指向在区域140的起点处存储数据的存储器位置。区域140具有大小144,其还称为“S字节”,并且所述大小等于区域120的大小124。值“x”、“S”和“a”是正整数。

在一些实施方案中,用于末级缓存130的缓存控制器中的连续元件存储区域参数150。连续元件的示例是寄存器、触发器电路和锁存器。在一个实施方案中,区域参数150包括状态信息152,诸如有效位和元数据。元数据的示例是数据126的生产者的标识符、数据126的消费者的标识符、数据126的缓存相干信息、数据126的清洁/脏信息等。生产者和消费者的标识符包括处理单元标识符、进程标识符、线程标识符中的一者或多者。在其他实施方案中,区域参数150不包括状态信息152,因为此信息存储在缓存控制器的其他队列和连续元件中。

在一个实施方案中,区域参数150包括两个地址。第一地址154是地址122的副本,其指向在区域120的起点处存储数据的存储器位置。第二地址156是地址142的副本,其指向在区域140的起点处存储数据的存储器位置。因此,区域参数150包括在区域120的起点与区域140的起点之间的存储器映射。例如,区域参数150当前存储地址122(“x”)与地址142(“a”)之间的存储器映射。在一些实施方案中,区域参数150还包括区域140的大小158。在一个实施方案中,缓存控制器中的逻辑使用大小字段158中的零字节的大小值来指示没有有效区域存储在末级缓存中,而不是使用状态字段152中的有效位来指示。

通过使用区域参数150,缓存控制器中的逻辑使用比较操作来确定末级缓存130的缓存命中或缓存未命中,所述比较操作比大标签阵列中的查找操作更快。在一个示例中,所述逻辑确定有效区域是否存储在末级缓存130中。如果使用状态字段152并且取消有效位,则没有有效区域存储在末级缓存130中。如果不使用状态字段152并且大小字段158存储零字节的值,则没有有效区域存储在末级缓存130中。在此类情况下,缓存控制器中的逻辑确定存在缓存未命中,并且向系统存储器110发送用于服务的具有请求地址的存储器存取请求。因此,所述逻辑跳过在由请求地址的索引选定的一组大标签阵列中执行集合关联查找操作,这减小了处置存储器存取请求的等待时间。

如果使用状态字段152并且断言有效位,或如果不使用状态字段152但大小字段158存储正的非零整数,则缓存控制器的逻辑确定存在存储在末级缓存130中的有效区域。在此情况下,当缓存控制器中的逻辑确定区域140的地址122(“x”)和大小158(“S”)中的一者或多者的变化时,所述逻辑确定地址范围。所述逻辑将所述地址范围确定为开始于地址122(“x”)并且结束于作为区域140的地址122和大小158(“S”)的总和的地址。通过使用所说明的实施方案中的符号,所述地址范围是“x+S”。所述逻辑确定请求地址是否在此范围内。例如,如果请求地址表示为“y”,则所述逻辑确定表达x

如果所述逻辑确定对末级缓存130的存取是缓存未命中,则缓存控制器向系统存储器110发送用于服务的具有请求地址的存储器存取请求。然而,如果所述逻辑确定对末级缓存130的存取是缓存命中,则所述逻辑通过从末级缓存130检索数据来服务存储器存取请求。为此,所述逻辑基于请求地址(“y”)与地址122(“x”)之间的差值而确定偏移,其表达为(y–x)。所述逻辑基于所述偏移(y–x)和地址142(“a”)而确定被转译的地址,其为两个值的总和并且被表达为(a+(y–x))。所述逻辑通过从被转译的地址或由(a+(y–x))表示的地址开始从末级缓存130存取数据来服务存储器存取请求。所述逻辑跳过在由请求地址的索引选定的一组大标签阵列中执行集合关联查找操作。而是,在用于确定缓存命中的比较操作之后,使用简单的算术操作来识别将所请求的数据存储在末级缓存130中的位置。

现在参看图2,示出了用于高效地执行计算系统中的存储器存取的方法200的一个实施方案。出于讨论的目的,以连续次序示出在此实施方案中(以及在图10和图14中)的步骤。然而,应注意,在所描述的方法的各种实施方案中,同时地、按照与所示出的次序不同的次序执行所描述的要素中的一者或多者,或者完全省略所述要素。还在需要时执行其他附加的要素。本文描述的各种系统或设备中的任一者被配置为实施方法200、1000和1400。

一个或多个处理单元执行一个或多个计算机程序或软件应用。处理单元的示例是通用中央处理单元(CPU)、图形处理单元(GPU)或其他内的处理器核心。在一些实施方案中,封装内系统(SiP)包括处理单元和封装上低等待时间、高带宽存储器。此类存储器的一个示例是3D集成存储器,诸如3D DRAM。在一个实施方案中,处理单元利用3D DRAM的至少一部分作为缓存。在一个实施方案中,所述缓存是末级缓存。虽然以下描述内容描述了低等待时间、高带宽存储器用作末级缓存,但在其他实施方案中,高带宽存储器用作一级(L1)、二级(L2)或缓存体系中的除了末级之外的其他层级。处理单元在低于末级缓存的层级中确定缓存子系统内的存储器请求未命中(框202)。

处理单元向末级缓存发送与存储器请求相对应的请求地址(框204)。在一个实施方案中,用于末级缓存的缓存控制器中的逻辑维持对系统存储器中的相连数据的第一区域的识别,所述第一区域具有存储在末级缓存的第二区域中的相连数据的副本。在一些实施方案中,所述识别包括识别所述第一区域的起点的第一开始地址。另外,所述识别包括所述第二区域的大小。用于末级缓存的缓存控制器中的逻辑确定此第一区域的地址范围,所述地址范围是系统存储器地址空间内的指向存储了存储在系统存储器中的相连数据的存储器位置的地址范围(框206)。此相连数据具有存储在末级缓存中的副本。在一些设计中,所述逻辑使用早先在(图1的)数据存储100的描述中描述的表达。

如果所述请求地址不在所述范围内(条件框208的“否”分支),则逻辑向系统存储器发送包括所述请求地址的存储器请求(框210)。针对所述存储器请求的对末级缓存的存取被视为缓存未命中,并且相应地,向存储器子系统的更低层级(诸如系统存储器)发送存储器请求。如果所述请求地址在选定范围内(条件框208的“是”分支),则逻辑基于请求地址与系统存储器中的所述范围的开始地址之间的差值而确定偏移(框212)。逻辑基于所述偏移和末级缓存中的所述范围的开始地址而确定被转译的地址(框214)。例如,所述被转译的地址是所述偏移与末级缓存中的所述范围的开始地址的总和。逻辑通过从被转译的地址开始从末级缓存存取数据来服务存储器请求(框216)。

现在转向图3,示出了利用低等待时间、高带宽缓存的计算系统300的一个实施方案的通用框图。在各种实施方案中,计算系统300利用三维(3D)封装,诸如封装内系统(SiP)310。SiP 310经由存储器总线350连接至存储器362和封装外DRAM 370。在一个实施方案中,计算系统300是以下各者内的独立系统:移动计算机、智能电话或平板计算机;桌上型计算机;服务器;或其他。SiP 310使用处理单元320和低等待时间、高带宽缓存330。处理单元310和缓存330通过低等待时间互连件348进行通信。封装内低等待时间互连件348使用水平路线和/或竖直路线中的一者或多者,所述互连件具有比在不使用SiP时的长芯片外互连件更短的长度。

但在一些实施方案中,SiP 310利用DRAM存储器技术,诸如3DDRAM,使用包括一个或多个行缓冲器或其他等效结构的低等待时间、高带宽和基于行的存取方案的其他存储器技术是可能的并且是预期的。其他存储器技术的示例是相变存储器、自旋矩转移电阻性存储器、记忆电阻器、嵌入式DRAM(eDRAM)等。在一些设计中,处理单元320是通用微处理器,而在其他设计中,处理单元320是另一种类型的处理单元。其他类型的处理单元包括图形处理单元(GPU)、现场可编程门阵列(FPGA)、加速处理单元(APU),所述加速处理单元是包括额外的处理能力的芯片。此额外的处理能力加速了在通用CPU之外的一种或多种类型的计算。在一个实施方案中,APU包括与GPU、FPGA或其他处理单元集成在同一裸片上的通用CPU,从而提高了在这些单元之间的数据传递速率,同时降低了功率消耗。在其他实施方案中,APU包括视频处理和其他专用的加速器。

执行引擎322基于处理单元320的类型而使用一个或多个处理器核心。另外,在一些设计中,执行引擎322使用用于传递通信消息的通信构造(或“构造”)。通信消息的示例是相干探测、中断以及读取和写入存取命令和对应的数据。所述构造中的互连件的示例是总线架构、基于交叉开关的架构、芯片上网络(NoC)通信子系统、裸片之间的通信信道、硅中介层和穿硅通孔(TSV)。在许多设计中,处理单元320在接口逻辑326中并入有系统总线控制器,所述系统总线控制器利用各种协议中的一种协议将执行引擎322的处理器核心连接至存储器362、DRAM 370、外围输入/输出(I/O)装置和其他处理单元。

计算系统300使用封装外存储器362作为主存储器或系统存储器。存储器362是硬盘驱动器(HDD)和固态盘(SSD)中的一者。封装外DRAM 370是多种类型的DRAM中的一者。计算系统300通过I/O控制器和总线360以及存储器总线350使用来自芯片外存储器362的数据填充芯片外DRAM 370。接口逻辑360支持用于封装外存储器362和封装外DRAM 370中的每一者的通信协议、地址格式和包格式。

执行引擎322内的处理器核心中的每一者使用缓存子系统的一个或多个层级来为所述处理器核心减小存储器等待时间。在一些设计中,所述处理器核心另外存取执行引擎322内的共享缓存。当执行引擎322内的缓存子系统不包括由处理器核心请求的数据时,执行引擎322向封装内缓存330发送存储器存取请求。接口逻辑340支持用于在封装内缓存330与处理单元320之间传递信息的通信协议、地址格式和包格式。

类似于其他DRAM拓扑,在一些设计中,封装内缓存330使用被分割为多个组的多个存储器阵列332。在这些情况下,所述组中的每一者包括相应的行缓冲器。所述行缓冲器中的每一者存储对应的存储器阵列组内的多个行的被存取行中的数据。在一些实施方案中,队列342、区域参数344和使用区域参数344的逻辑346的部分的功能性位于逻辑336中。例如,此功能性包括在用于封装内缓存330的缓存控制器中。在其他实施方案中,此功能性位于所示出的接口逻辑340中。逻辑336和逻辑346中的每一者是由软件、诸如用于组合式逻辑和连续元件的电路的硬件或软件与硬件的组合实施。

当接口逻辑340从执行引擎322接收到存储器存取请求时,逻辑346基于存取类型而将所接收的存储器存取请求存储在多个队列342中的一者中。例如,队列342中的第一队列存储存储器读取请求,并且队列342中的第二队列存储存储器写入请求。逻辑346内的仲裁逻辑选择多个队列342中的队列,并且从选定的队列选择存储器存取请求。对于选定的存储器存取请求,逻辑346确定与系统存储器的第一区域(诸如区域372)相对应的地址范围,其中数据的副本存储在封装内缓存330的第二区域(诸如区域338)中。系统存储器是由封装外存储器362与封装外DRAM 370的组合实施。

当逻辑346确定存储器存取请求的请求地址不在区域372的地址范围内时,逻辑346向系统存储器发送选定的存储器存取请求。当逻辑346确定请求地址在区域372的地址范围内时,缓存控制器通过从封装内缓存330内的存储器阵列332存取数据来服务选定的存储器请求。逻辑346将区域参数344用于以上确定。在各种实施方案中,区域参数344等同于(图1的)区域参数150。

逻辑346使用多种技术中的一种技术来用于确定何时存储封装外系统存储器中的区域372的副本作为封装内缓存330中的区域338。在一些实施方案中,逻辑346监视来自执行引擎322的存储器存取以检测流式传输或连续存储器存取模式。逻辑346使用多种技术中的一种技术来检测流式传输存取模式,诸如至少由硬件预取器使用的技术。当逻辑346检测到流式传输模式时,逻辑346限定新的区域。在一些实施方案中,当存储器请求存取区域338的末尾的L个字节内的地址时,逻辑336和逻辑346中的一者将区域338的大小扩展P个字节,其中L和P是正的非零整数。在一个实施方案中,L和P的值存储在控制和状态寄存器(CSR)347中的可编程寄存器中。在一些实施方案中,初始区域大小也存储在CSR 347中的可编程寄存器中。

在其他实施方案中,逻辑346使用软件提示来用于确定何时限定和产生封装内缓存330中的区域338。软件使用特定指令来更新由应用或操作系统存取的某些寄存器。另外,所述软件能够更新接口逻辑340中的一个或多个控制和状态寄存器(CSR)347。当处理深度神经网络时,软件应用知晓何时其完成处理多层神经网络的一个层以及何时其移至多层网络的下一层。当横越多层网络的每个层时(无论向前还是向后),软件应用利用软件提示向逻辑346和CSR 347中的一者或多者告知系统存储器中的正在被处理的当前区域。在一些实施方案中,软件应用提供提示以指示何时增加或减小区域372和338的大小。所述提示还指示从区域372和338的左边方向或右边方向改变所述大小。

另外,所述软件提示指示通过移至系统存储器中的另一区域来改变区域372和338的整个内容。存储在CSR 347中的界限阻止区域338超过封装内缓存330的大小。在一些实施方案中,如果逻辑346已经限定了区域,则逻辑346基于标准而在支持现有的区域和新的区域之间进行选择。所述标准的示例是区域的大小、存取区域的数据的应用的优先级水平、现有的区域的寿命等。

在执行一个或多个软件应用期间,所述应用修改区域338的内容。如果逻辑346调整区域338的大小或部分使得区域338的经修改的部分不再有效,则逻辑336和逻辑346中的一者向封装外DRAM370发送经修改的数据。在一些设计中,逻辑336和逻辑346中的一者使用直写式缓存策略或回写式缓存策略来控制封装内缓存330。直写式缓存策略随时间向封装外DRAM 370传播写入操作。相比而言,回写式缓存策略在区域338的大小减小之前延迟写入操作。在此时间,逻辑336或逻辑346以写入业务的突发的形式向封装外DRAM370发送用于经修改的数据的写入操作。在其他设计中,逻辑336和逻辑346中的一者使用直写式缓存策略与回写式缓存策略的组合来控制封装内缓存330以权衡所述两种策略的益处和成本。

如早先描述,在一些设计中,封装内缓存330使用低等待时间、高带宽存储器技术,诸如SRAM、相变存储器、自旋矩转移电阻性存储器、记忆电阻器、嵌入式DRAM(eDRAM)等。在其他设计中,封装内缓存330使用低等待时间、高带宽3D DRAM。现在转向图4,示出了封装内系统(SiP)400和440的实施方案的通用框图。所说明的SiP包括一个或多个三维集成电路(3D IC)。3D IC包括竖直地和/或水平地集成到单个电路中的有效电子部件的两个或更多个层。在一些设计中,制造技术使用基于中介层的集成,借此所述制造技术将3D IC放置在处理单元420旁边。可替代地,制造技术将3D IC直接堆叠在另一IC顶部上。

裸片堆叠技术是使得能够使用高带宽和低等待时间互连件将单独的多件硅(集成芯片)一起物理地堆叠在同一封装中的制造过程。所述裸片并排堆叠在硅中介层上,或直接竖直地堆叠在彼此顶部上。SiP的一个配置是将一个或多个DRAM芯片堆叠在处理单元旁边和/或处理单元顶部上。堆叠的DRAM芯片为处理单元提供非常大的缓存。在一些设计中,此大缓存具有大约数百MB(或更多)的大小。

如图示,在一个实施方案中,SiP 400包括处理单元420和通过水平的低等待时间互连件410与处理单元420通信的一个或多个三维(3D)DRAM 430和432。同样,处理单元420是以下各项中的一者:通用CPU、图形处理单元(GPU)、加速处理单元(APU)、现场可编程门阵列(FPGA)或利用基于行的存储器(诸如缓存)的其他数据处理装置。

封装内水平低等待时间互连件410相对于在不使用SiP时的长芯片外互连件提供互连信号的减小的长度。封装内水平低等待时间互连件410使用特定信号和协议,如同诸如处理单元420和3D DRAM 430和432的芯片安装在电路板上的单独封装中一样。SiP 400另外包括触及封装外部连接414的后侧通孔或穿硅体通孔412。封装外部连接414用于输入/输出(I/O)信号和电力信号。

在另一实施方案中,SiP 440包括直接堆叠在处理单元420的顶部上的3D DRAM450。虽然未示出,但对于SiP 400和SiP 440中的每一者,多个芯片或装置层堆叠在彼此顶部上,其中直接的竖直互连件416隧穿它们。可在不同的装置层之间隧穿的竖直互连件416的大小和密度基于用于制造3D IC的基础技术而变。

参看图5,示出了数据存储500的一个实施方案的通用框图。先前描述的电路和逻辑被同等编号。如图示,系统存储器110和末级缓存130中的每一者都存储数据。同样,虽然描述内容将缓存330描述成末级缓存,但在其他实施方案中,缓存330是缓存子系统内的另一层级。数据126是存储在系统存储器110中的相连数据。数据526是向系统存储器110中的区域添加的用以产生区域520的相连数据。系统存储器110中的被复制为区域的相连数据的大小从大小124增长至大小524。

末级缓存130在区域540中存储区域520的相连数据126和数据526的副本。因此,末级缓存130中的被维持为区域的相连数据的大小从大小144增长至大小544。区域参数150表征区域520和540。开始地址122和142保持相同。因此,字段154和156在区域参数150中保持不变。然而,逻辑将大小字段158更新为增加的量。在示例中,所述逻辑将大小字段158从S字节更新为S+T字节,其中S和T是正的非零整数。

现在转向图6,示出了数据存储600的一个实施方案的通用框图。先前描述的电路和逻辑被同等编号。数据126是存储在系统存储器110中的相连数据。数据626是向系统存储器110中的区域添加的用以产生区域620的相连数据。系统存储器110中的被复制为区域的相连数据的大小从大小124增长至大小624。

末级缓存130在区域640中存储区域620的相连数据126和数据626的副本。因此,末级缓存130中的被维持为区域的相连数据的大小从大小144增长至大小644与大小646的总和。相连数据回绕末级缓存130。区域参数150表征区域620和640。开始地址122和142保持相同。因此,字段154和156在区域参数150中保持不变。然而,逻辑将大小字段158更新为增加的量。在示例中,所述逻辑将大小字段158从S字节更新为S+T+U字节,其中S、T和U是正的非零整数。

对回绕区域的存取更改了对用于末级缓存130的被转译的地址的计算。在一个示例中,区域620使用地址空间2,000至2,700,其中地址被表达为数字。整个末级缓存130使用地址空间5,000至6,000,其中地址也表达为数字。区域640使用回绕至5,500的地址空间5,800。当所接收的存储器请求使用请求地址2,400时,逻辑确定偏移是(2,400–2,000)或400。所述逻辑向5,800的区域开始地址添加所述偏移以获得(5,800+400)或6,200。此值超过了区域640的界限。作为响应,所述逻辑确定差值,其为(6,200–6,000)或200。所述逻辑向开始地址添加所述差值以获得(5,000+200)或5,200。被转译的地址是5,200,并且所述逻辑使用被转译的地址5,200从末级缓存130存取数据以便服务存储器请求。

参看图7,示出了数据存储700的一个实施方案的通用框图。类似于数据存储500和600和即将到来的数据存储800-900和1300,先前描述的电路和逻辑被同等地编号。如图示,系统存储器110和末级缓存130中的每一者都存储数据。虽然描述内容将缓存330描述成末级缓存,但在其他实施方案中,缓存330是缓存子系统内的另一层级。数据126是存储在系统存储器110中的相连数据。数据726是向系统存储器110中的区域添加的用以产生区域720的相连数据。系统存储器110中的被复制为区域的相连数据的大小从大小124增长至大小724。所述增加是在左边方向上而不是右边方向。因此,指向在区域720的起点处存储数据的存储器位置的地址是地址722(“x2”)而不是地址122(“x1”)。

末级缓存130在区域740中存储区域720的相连数据126和数据726的副本。因此,末级缓存130中的被维持为区域的相连数据的大小从大小144增长至大小744。所述增加是在左边方向上而不是右边方向。因此,指向在区域740的起点处存储数据的存储器位置的地址是地址742(“a2”)而不是地址142(“a1”)。区域参数170表征区域720和740。开始地址122和142改变,并且字段154和156指示区域参数150的变化。逻辑还将大小字段158更新为增加的量。在示例中,所述逻辑将大小字段158从S字节更新为S+V字节,其中S和V是正的非零整数。

参看图8,示出了数据存储800的一个实施方案的通用框图。数据126是存储在系统存储器110中的相连数据。数据826是向系统存储器110中的区域添加的用以产生区域820的相连数据。系统存储器110中的被复制为区域的相连数据的大小从大小124增长至大小824。所述增加是在左边方向上而不是右边方向。因此,指向在区域820的起点处存储数据的存储器位置的地址是地址822(“x2”)而不是地址122(“x1”)。

末级缓存130在区域840中存储区域820的相连数据126和数据826的副本。因此,末级缓存130中的被维持为区域的相连数据的大小从大小144增长至大小844与大小846的总和。相连数据回绕末级缓存130。所述增加是在左边方向上而不是右边方向。因此,指向在区域840的起点处存储数据的存储器位置的地址是地址842(“a2”)而不是地址142(“a1”)。区域参数150表征区域820和840。开始地址122和142改变,并且字段154和156指示区域参数150的变化。逻辑还将大小字段158更新为增加的量。在示例中,所述逻辑将大小字段158从S字节更新为S+V+W字节,其中S、V和W是正的非零整数。对回绕区域的存取更改了对用于末级缓存130的被转译的地址的计算。逻辑使用早先针对数据存储600所描述的计算。

参看图9,示出了数据存储900的一个实施方案的通用框图。数据126是存储在系统存储器110中的相连数据。数据926是从系统存储器110中的区域移除的用以产生区域920的相连数据。系统存储器110中的被复制为区域的相连数据的大小从大小124减小至大小924。所述减小是在右边方向上而不是左边方向。因此,指向在区域920的起点处存储数据的存储器位置的地址是地址922(“x2”)而不是地址122(“x1”)。

末级缓存130在区域940中存储区域920的相连数据126的副本。因此,末级缓存130中的被维持为区域的相连数据的大小从大小144减小至大小944。所述减小是在右边方向上而不是左边方向。因此,指向在区域940的起点处存储数据的存储器位置的地址是地址942(“a2”)而不是地址142(“a1”)。区域参数150表征区域920和940。开始地址122和142改变,并且字段154和156指示区域参数150的变化。逻辑还将大小字段158更新为减小的量。在示例中,所述逻辑将大小字段158从S字节更新为S-U字节,其中S和U是正的非零整数。应注意,如果区域的大小的减小出现在区域的末尾处和左边方向上而不是右边方向,则在地址122和142保持相同的同时仍然更新大小字段158。

现在参看图10,示出了用于执行计算系统中的存储器存取的方法1000的一个实施方案。逻辑监视存储器存取模式和/或接收数据存取的软件提示(框1002)。如早先描述,使用具有用作提示的特定指令的软件技术、诸如由硬件预取器使用的技术的硬件技术或组合来确定何时开始限定存储器的区域。

如果逻辑不预测即将到来的数据存取的区域(条件框1004的“否”分支),则方法1000的控制流返回到框1002,其中逻辑监视存储器存取模式和/或接收软件提示。如果逻辑预测到即将到来的数据存取的区域(条件框1004的“是”分支),则逻辑初始化表征所预测的即将到来的数据存取的区域的参数(框1006)。例如,所述逻辑将即将到来的数据存取的区域的开始地址存储在系统存储器中,并且将此区域的开始地址存储在末级缓存中。另外,所述逻辑存储此区域的区域大小。在一些实施方案中,在多个控制寄存器和状态寄存器中的可编程寄存器中提供初始区域大小。在一些设计中,初始大小在缓存线大小(例如,64字节)与页大小(例如,4千字节或更多)的细粒度之间。

逻辑将来自系统存储器中的即将到来的数据存取的区域的相连数据的副本存储到末级缓存中。例如,所述逻辑将来自系统存储器的第一区域的数据的副本存储到末级缓存的第二区域中(框1008),其中第一区域和第二区域中的每一者对应于系统存储器中的所预测的即将到来的数据存取的区域。逻辑通过从第二区域存取数据而服务目标为第一区域的存储器请求(框1010)。如果逻辑确定第二区域改变大小(条件框1012的“是”分支),则逻辑更新表征所述区域的参数以指示所述大小变化(框1014)。

如果逻辑确定第二区域的大小未改变(条件框1012的“否”分支),并且对第二区域的存取尚未完成(条件框1016的“否”分支),则方法1000的控制流返回到框1010。在框1010中,逻辑通过从第二区域存取数据而服务目标为第一区域的存储器请求。如果对第二区域的存取已经完成(条件框1016的“是”分支),则逻辑更新表征所述区域的参数以指示不存在区域(框1018)。之后,方法1000的控制流返回到框1002,其中逻辑监视存储器存取模式和/或接收软件提示。

参看图11,示出了数据存储1100的一个实施方案的通用框图。系统存储器1110和末级缓存1130中的每一者都存储数据。出于说明简易起见,未示出处理单元、通信接口等。虽然描述内容将缓存1130描述成末级缓存,但在其他实施方案中,缓存1130是缓存子系统内的另一层级。数据1120-1128是存储在系统存储器1110中的相连数据。末级缓存1130在不同的时间点存储相连数据1120-1128的一部分的副本。

在一个设计示例中,大(深)神经网络的权重存储在系统存储器1110(诸如封装外DRAM)中。所述权重(诸如数据1120-1128)太大而无法容纳在末级缓存1130(诸如封装内3DDRAM)中。在训练神经网络期间,由执行软件应用的处理单元评估权重。从时间点t1至11t7(或时间t1至t7),存储在末级缓存1130中的区域的大小和内容改变。数据1120对应于多层神经网络的第一层权重。数据1122对应于多层神经网络的第二层权重,依此类推。

起初,在时间t0将数据1120复制到末级缓存1130中(未示出)。在稍后的时间t1,向存储在末级缓存1130中的区域添加数据1122。类似地,在时间t2和t3,向存储在末级缓存1130中的区域添加数据1124和数据1126。当对神经网络的评估通过推理或前向传播而进行下去时,末级缓存1130中的区域进行扩展以便存储权重。对神经网络的权重的存取通过常规的可预测的方式进行下去。因此,末级缓存1130中的区域在评估权重之前得到充分增加。如早先描述,(图3的)CSR 347的可编程寄存器存储参数L和P以指示何时改变存储在末级缓存中的区域的大小以及改变多少。因此,处理单元存取封装内末级缓存中的权重,而不是封装外DRAM中的权重。

在时间t3,整个末级缓存1130被填充。此时,缓存控制器或处理单元中的逻辑通过从左减少大小来调整区域的大小。在时间t4,逻辑从末级缓存1130中的区域移除数据1120。逻辑相应地更新区域参数。由于执行对权重的训练的软件应用的性质,一旦处理单元评估了给定层,当前推理或前向传播便不再需要对应的权重。因此,在一些设计中,从末级缓存1130的区域移除给定层权重。在时间t5,向末级缓存1130的区域添加数据1126。所述区域回绕末级缓存1130。对回绕区域的存取更改了对用于末级缓存130的被转译的地址的计算。逻辑使用早先针对数据存储600所描述的计算。

在时间t6,逻辑从末级缓存1130中的区域移除数据1122。逻辑相应地更新区域参数。在时间t7,逻辑向末级缓存1130的区域添加数据1128。在处理单元已经处理了神经网络的最后一层之后,所述处理单元生成最终输出。所述处理单元通常将此最终输出与预期值进行比较以计算误差或损失。对神经网络的训练随后以后向传播阶段继续。在后向传播期间,处理单元以相反次序处理多层神经网络的层。逻辑通过支持相反次序的方式来分配和解除分配末级缓存1130的区域。

参看图12,示出了数据存储1200的一个实施方案的通用框图。系统存储器1210存储数据。出于说明简易起见,未示出处理单元、通信接口等。系统存储器1210存储多个区域的数据。所述区域的示例包括由地址1212(“w0”)指向的第一区域1220、由地址1214(“x0”)指向的第二区域1222的数据、由地址1216(“y0”)指向的第三区域1224的数据,以及由地址1218(“z0”)指向的第四区域1226的数据。

在此示例中,软件应用执行类模板计算,其中存储在由地址1218(“z0”)指向的区域中的输出向量中的每个元素是由地址1212-1216(“w0”-“y0”)指向的其他向量中的元素的总和。例如,如果输出向量表示为向量“d”,并且其他区域中的向量中的每一者表示为“a”至“c”,则向量d的元素d[i]的值是[i-1]+a[i]+a[i+1]+b[i-1]+b[i]+b[i+1]+c[i-1]+c[i]+c[i+1]。加法器1230对输入向量的元素的值求和以生成输出向量中的元素。在许多情况下,没有输入向量容纳在封装内缓存内。然而,封装内缓存内的每个区域能够存储每个相应的向量的有效部分。随着计算进行下去,更新所述区域中的每一者以维持每个向量的有效部分。在以下描述中示出了此方案的示例。

参看图13,示出了数据存储1300的一个实施方案的通用框图。先前描述的电路和逻辑被同等编号。末级缓存(LLC)1330存储了存储在系统存储器1210中的数据的副本。虽然描述将缓存1330描述成末级缓存,但在其他实施方案中,缓存1330是缓存子系统内的另一层级。出于说明简易起见,未示出处理单元、通信接口等。末级缓存1330存储多个区域的数据。所述区域的示例包括由地址1332(“a0”)指向的具有大小1334(“S字节”)的第一区域、由地址1336(“b0”)指向的具有大小1338(“T字节”)的第二区域、由地址1340(“c0”)指向的具有大小1342(“U字节”)的第三区域1224,以及由地址1344(“d0”)指向的具有大小1346(“V字节”)的第四区域。

表格1350存储用于存储在末级缓存1330中的区域的区域参数。在许多设计中,字段1352-1358等同于(图1的)区域参数150的字段152-158。此处,表格1350支持多个单独的区域,而不是单个区域。在所说明的实施方案中,表格1350包括用于支持末级缓存1330中的四个区域的四个有效行(条目)。虽然示出了四个区域和条目,但在其他示例中使用任何数目个条目和区域。为了支持多个区域,逻辑维持表格1350中的信息以确保多个区域增长、减小并且回绕末级缓存1330,而不超出另一区域。对于对末级缓存1330的每个存储器存取,逻辑将请求地址与末级缓存1330中的每个有效的所支持的区域进行比较。在各种设计中,表格1350以完全关联方式存储信息。所请求的地址现在检查所有N组区域定义寄存器(类似于完全关联缓存结构)。

现在参看图14,示出了用于执行计算系统中的存储器存取的方法1400的一个实施方案。一个或多个处理单元执行一个或多个计算机程序或软件应用。处理单元的示例是CPU、GPU或其他内的处理器核心。在一些实施方案中,封装内系统(SiP)包括处理单元和高带宽存储器。高带宽存储器的一个示例是3D集成存储器,诸如3D DRAM。在一个实施方案中,处理单元利用3D DRAM的至少一部分作为缓存。处理单元在低于末级缓存的层级中确定缓存子系统内的存储器请求未命中(框1402)。在各种实施方案中,处理单元利用高带宽存储器的至少一部分作为末级缓存。处理单元向末级缓存发送与存储器请求相对应的地址(框1404)。

逻辑选择系统存储器地址空间内的一个或多个地址范围中的具有存储在末级缓存中的数据的范围(框1406)。如果逻辑确定请求地址不在所述选定的范围内(条件框1408的“否”分支),并且未到达最后一个范围(条件框1410的“否”分支),则方法1400的控制流返回到框1406。在框1406中,逻辑选择一个或多个地址范围中的另一范围。如果逻辑确定请求地址不在所述选定的范围内(条件框1408的“否”分支),并且到达最后一个范围(条件框1410的“是”分支),则逻辑向系统存储器发送包括请求地址的存储器请求(框1412)。

如果逻辑确定所述请求地址在选定范围内(条件框1408的“是”分支),则逻辑基于地址与系统存储器中的所述范围的开始地址之间的差值而确定偏移(框1414)。逻辑基于所述偏移和末级缓存中的所述范围的开始地址而确定被转译的地址(框1416)。逻辑通过从被转译的地址开始从末级缓存存取数据来服务存储器请求(框1418)。

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

应该强调一下,上述实施方案仅为实现方式的非限制性示例。一旦完全了解以上公开内容,众多变化和修改对于本领域技术人员来说将变得显而易见。期望以下权利要求被理解为包含所有此类变化和修改。

相关技术
  • 用于存储数据的区域的缓存
  • 用于线程本地存储数据访问的私有高速缓存
技术分类

06120113106601