针对联动存储器设备调度存储器请求

文档序号:1146102 发布日期:2020-09-11 浏览:5次 >En<

阅读说明:本技术 针对联动存储器设备调度存储器请求 (Scheduling memory requests for ganged memory devices ) 是由 詹姆斯·雷蒙德·马格罗 于 2018-09-19 设计创作,主要内容包括:公开了用于对计算系统执行有效的存储器访问的系统、装置和方法。计算系统包括用于处理应用程序的一个或多个客户端。存储器控制器在所述存储器控制器与各自连接到存储器设备的两个通道之间传输流量。客户端发送具有指示的64字节存储器请求,所述指示指定在相同页面内存在以非连续数据为目标的两个32字节请求。所述存储器控制器生成两个地址,并且将单一命令和所述两个地址发送到两个通道以同时访问相同页面中的非连续数据。(Systems, apparatuses, and methods for performing efficient memory access for computing systems are disclosed. The computing system includes one or more clients for processing applications. A memory controller transmits traffic between the memory controller and two channels each connected to a memory device. The client sends a 64 byte memory request with an indication specifying that there are two 32 byte requests targeting non-contiguous data within the same page. The memory controller generates two addresses and sends a single command and the two addresses to both channels to access non-contiguous data in the same page at the same time.)

针对联动存储器设备调度存储器请求

发明背景

背景技术

维持相对高水平的性能通常需要快速访问所存储数据。若干类型的数据密集型应用程序依赖于对数据存储的快速访问,以向若干个本地和远程程序及其用户提供可靠的高性能。多种计算设备利用集成了多种类型的IC以提供系统功能性的异构集成。多种功能包括音频/视频(A/V)数据处理,用于医学领域和商业领域的其他高数据并行应用程序、通用指令集架构(ISA)的处理指令、数字、模拟、混合信号和射频(RF)功能等。存在用于将处理节点放置在系统封装中以集成多种类型的IC的多种选择。一些实例是片上系统(SOC)、多芯片模块(MCM)和系统级封装(SiP)。

无论选取哪种系统封装,在若干种用途中,一个或多个计算系统的性能都可取决于处理节点。在一个实例中,处理节点在运行若干种不同类型的应用程序并且可能一次将信息中继给多个用户(本地和远程两者)的移动计算设备内使用。在另一个实例中,处理节点在桌面内使用。在又另一个实例中,处理节点是多插座服务器插座中的多个处理节点中的一个。服务器用于向远程计算设备中的其他计算机程序以及服务器内的计算机程序提供服务。

上述各种计算系统中的每一个中的存储器层次结构从相对较快的易失性存储器(诸如处理器管芯上的寄存器以及位于处理器管芯上或连接到处理器管芯的高速缓存)转变到非易失性且相对较慢的存储器(诸如磁性硬盘)。存储器层次结构对维持高性能以满足运行的计算机程序对快速访问的需求提出了挑战。一项挑战是减少系统存储器中的时间量,所述系统存储器是位于高速缓存子系统之外的随机访问存储器(RAM),但不包括非易失性盘存储器。同步动态RAM(SDRAM)和其他常规存储器技术由于有限的带宽而减少了系统存储器的停顿时间,但是利用这些技术并不能改善访问延迟。此外,大量的管芯上面积和功率消耗用于支持接口和协议以访问存储在系统存储器中的数据。

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

具体实施方式

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

公开了用于对计算系统执行有效的存储器访问的各种系统、装置、方法和计算机可读介质。在各种实施方案中,计算系统包括用于处理应用程序的一个或多个客户端。客户端的实例是通用中央处理单元(CPU)、图形处理单元(GPU)、加速处理单元(APU)、输入/输出(I/O)设备等。存储器控制器被配置来在存储器控制器与各自连接到存储器设备的两个通道之间传输流量。在一些实施方案中,两个存储器设备中的一个或多个是双列直插式存储器模块(DIMM)上的多种随机访问存储器(RAM)中的一个。在其他实施方案中,两个存储器设备中的一个或多个是平面安装式RAM设备,所述平面安装式RAM设备是***到或焊接到母板上的RAM设备。在又其他实施方案中,两个存储器设备中的一个或多个是三维集成电路(3DIC)。在实施方案中,存储器控制器中的命令处理器将从客户端接收的存储器请求转换成将由所选择类型的存储器设备处理的命令。

在实施方案中,客户端发送具有指示的64字节存储器请求,所述指示指定在相同页面内存在以非连续数据为目标的两个32字节请求。存储器控制器生成两个地址。存储器控制器将单一命令和两个地址发送到两个通道以访问相同页面中的数据。在一个实施方案中,存储器控制器将单独生成的两个地址或其一部分发送到两个通道。在一些实施方案中,一个地址相对于两个所生成地址中的另一个地址偏移。在一些实施方案中,具有两个地址的单一命令访问相同页面中的非连续数据。在其他实施方案中,具有两个地址的单一命令访问相同页面中的连续数据。因此,同时访问作为连续数据或非连续数据的相邻数据(在相同页面内)。因此,存储器控制器不会针对单一32字节存储器请求传输64字节,并且丢弃64字节中的32字节,这是效率低下的。而是,存储器控制器针对访问存储器地址范围内(诸如存储器页面内)数据的两个32字节存储器请求传输64字节。

参考图1,示出计算系统100的一个实施方案的一般化框图。如图所示,客户端110和112通过数据结构120向存储器控制器130A和130B发送存储器请求。如图所示,每个存储器控制器具有能够发送两个地址的单一存储器通道。例如,存储器控制器130A包括具有地址生成器142A和地址生成器144A的存储器通道140A。类似地,存储器控制器130B包括具有地址生成器142B和地址生成器144B的存储器通道140B。存储器控制器130A将通道152A和154A上的命令、地址和数据传输到存储器设备160A和162A。存储器控制器130B将通道152B和154B上的命令、地址和数据传输到存储器设备160B和162B。

为了易于说明,在计算系统100中未示出用于I/O设备的输入/输出(I/O)接口、电源管理器以及用于网络连接的任何链路和接口。在一些实施方案中,计算系统100的部件是集成电路(IC)(诸如片上系统(SOC))上的单个管芯。在其他实施方案中,部件是系统级封装(SiP)或多芯片模块(MCM)中的单个管芯。在一些实施方案中,客户端110和112包括中央处理单元(CPU)、图形处理单元(GPU)、多媒体引擎集线器等中的一者或多者。客户端110和112中的每一个是能够处理应用程序并生成存储器请求的多种计算资源中的一种。

当客户端110-112中的一个是中央处理单元(CPU)时,在一些实施方案中,CPU中的一个或多个处理器核中的每一个包括用于根据给定的所选择指令集架构(ISA)执行指令的电路。在各种实施方案中,CPU中处理器核中的每一个包括用于处理给定ISA的指令的超标量、多线程微架构。在实施方案中,当客户端110-112中的一个是图形处理单元(GPU)时,它包括具有大量并行执行道的高并行数据微架构。在一个实施方案中,微架构将单指令多数据(SIMD)流水线用于并行执行道。当客户端110-112中的一个是多媒体引擎时,它包括用于处理多媒体应用程序的音频数据和视觉数据的处理器。针对客户端110-112生成存储器请求的处理单元的其他实例是可能的并且是可设想的。

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

在各种实施方案中,存储器控制器130A-130B通过通信结构120从客户端110-112接收存储器请求,将存储器请求转换为命令,并且将命令发送到片外盘存储器(未示出)和系统存储器中的一者或多者,所述系统存储器在存储器设备160A、162A、160B和162B中实现为多种随机访问存储器(RAM)中的一者。存储器控制器130还从存储器设备160A、162A、160B和162B以及盘存储器接收响应,并且将所述响应发送到客户端110-112的对应源。

在一些实施方案中,计算系统100的地址空间至少在客户端110-112和一个或多个其他部件(诸如输入/输出***设备(未示出)和其他类型的计算资源)之间划分。维持存储器映射以用于确定将哪个地址映射到哪个部件,并且因此应将针对特定地址的存储器请求路由至客户端110-112中的哪一个。客户端110-112中的一个或多个包括高速缓存存储器子系统以减少相应处理器核的存储器延迟。此外,在一些实施方案中,在访问存储器设备160A、162A、160B和162B之前,共享的高速缓存存储器子系统由处理器核作为末级高速缓存(LLC)使用。如本文所使用,术语“存储器访问”是指执行存储器读取请求或存储器写入请求操作,如果对应的请求地址的请求数据驻留在高速缓存中,则所述存储器读取请求或存储器写入请求操作导致高速缓存命中。可替代地,如果所请求的数据未驻留在高速缓存中,则存储器访问请求导致高速缓存未命中。

在各种实施方案中,系统存储器包括多通道存储器架构。这种类型的架构通过在通信通道(诸如通道152A、154A、152B和154B)之间添加更多的通信通道来增加数据到存储器控制器130A和130B的传输速度。在实施方案中,多通道架构利用多个存储器模块和母板和/或能够支持多个通道的卡。

在一些实施方案中,计算系统100利用多种动态RAM(DRAM)中的一个来提供系统存储器。在其他实施方案中,计算系统100利用三维集成电路(3D IC)来提供系统存储器。在这种实施方案中,3D集成DRAM提供低延迟互连和另外的片上存储器存储以减少片外存储器访问。使用包括一个或多个行缓冲器或其他等效结构的基于行的访问方案的用于系统存储器的其他存储器技术是可能的并且可以是可设想的。其他存储器技术的实例包括相变存储器、自旋扭矩转移电阻式存储器、忆阻器等。

在各种实施方案中,存储器控制器130B内的部件具有与存储器控制器130A中的部件相同的功能。在一些实施方案中,存储器控制器130A和130B内的控制单元132A和132B将接收的存储器请求转换为事务(诸如读取/写入事务以及激活和预充电事务)。如本文所使用,“事务”也称为“命令”。在各种实施方案中,通道152A、154A、152B和154B中的每一者是链路,所述链路包括用于存储器设备160A、162A、160B和162B中的相应一个内的多个存储体的命令总线、地址总线和数据总线。

在各种实施方案中,存储器设备160A、162A、160B和162B包括多个存储体,每个存储体具有多个存储器阵列存储体。存储体中的每一个包括多个行和一个行缓冲器。每个行缓冲器存储对应于存储器阵列存储体内多个行中所访问行的数据。所访问的行由接收的存储器请求中的DRAM地址标识。通常,每个行存储一个数据页面。页面的大小是基于设计考虑来选取。这种页面大小可以是一千字节(1KB)、四千字节(4KB)或任何其他大小。

存储器通道140A和140B与PHY 150A和150B接口连接。在一些实施方案中,物理接口PHY 150A和150B中的每一个以给定定时将命令流从存储器控制器130A和130B传送到存储器设备160A、162A、160B和162B。协议确定用于信息传输的值,诸如每个时钟周期的数据传输次数、信号电压电平、信号定时、信号和时钟相位以及时钟频率。在一些实施方案中,PHY 150A和150B中的每一个包括用于在协议中指定的初始化和校准序列的状态机。

此外,在实施方案中,PHY 150A和150B中的每一个包括自测试、诊断以及错误检测和校正硬件。PHY 150A和150B与存储器设备160A、162A、160B和162B之间的相应接口的协议实例包括DDR2SDRAM、DDR3 SDRAM、GDDR4(图形双倍数据速率,版本4)SDRAM、GDDR5 SDRAM和GDDR6 SDRAM。

如图所示,存储器通道140A包括地址生成器142A和144A,并且存储器通道140B包括地址生成器142B和144B。在各种实施方案中,地址生成器142A和144A将由存储器控制器130A接收的存储器请求地址转换为标识存储器设备160A和162A中的一个中的给定等级、给定存储体和给定行的值。尽管示出两个地址生成器,但是在其他实施方案中,另一数量的地址生成器包括在存储器控制器130A中。

在一些实施方案中,地址生成器144A将第二地址生成为相对于由地址生成器142A生成的第一地址偏移。在一个实施方案中,地址生成器144A在第二地址中使用与由地址生成器142A生成的第一地址相同的标识符,以用于标识存储器设备160A和162A中的一个内的给定等级和给定存储体以及给定行。此外,在实施方案中,第一地址标识所标识行中的所请求第一数据的起始字节,并且第二地址标识与第一数据不重叠的所请求第二数据的起始字节。在实施方案中,第二数据在所标识行中与第一数据连续。在其他实施方案中,第二数据在所标识行中与第一数据不连续。因此,单一存储器控制器130A将数据和命令传输到两个通道152A和154A,同时还支持针对两个不同请求同时访问相同行中的数据。

在各种实施方案中,当控制单元132A确定第一存储器请求和第二存储器请求中的每一者以给定存储器地址范围内的数据为目标时,控制单元132A存储给定存储器访问命令服务于第一存储器请求和不同于第一存储器请求的第二存储器请求中的每一者的指示。在实施方案中,给定存储器地址范围是存储器设备160A和162A中的一个中的存储器页面的范围。在一些实施方案中,响应于确定给定存储器访问命令已完成,控制单元130A将第一存储器请求和第二存储器请求中的每一者标记为完成。

参考图2,示出存储器控制器200的一个实施方案的一般化框图。在所示出的实施方案中,存储器控制器200包括:接口210,所述接口210用于通过通信结构与计算资源连接;队列220,所述队列220用于存储接收的存储器访问请求和接收的响应;控制单元250;以及接口280,所述接口280用于通过至少一个物理接口和至少两个通道与存储器设备连接。接口210和280中的每一个支持相应通信协议。

在实施方案中,队列220包括用于存储接收的读取请求的读取队列232和用于存储接收的写入请求的单独的写入队列234。在其他实施方案中,队列220包括用于存储存储器读取请求和存储器写入请求两者的统一队列。在一个实施方案中,队列220包括用于存储从读取队列232、写入队列234或统一队列(如果使用一个队列的话)中选择的调度的存储器访问请求的队列236。队列236也称为未决队列236。在一些实施方案中,控制寄存器270存储当前模式的指示。例如,片外存储器数据总线和存储器设备在给定时间处支持读取模式或写入模式。因此,流量在当前模式期间沿给定单一方向路由并且在当前模式结束时改变方向。

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

在各种实施方案中,命令处理器272将接收的存储器请求转换为一个或多个事务(或命令)(诸如读取/写入事务以及激活和预充电事务)。在一些实施方案中,命令存储在队列232-236中。在其他实施方案中,使用单独一组队列。如图所示,控制单元250包括地址生成器260和262。在各种实施方案中,地址生成器260和262将由存储器控制器130A接收的存储器请求地址转换为标识连接到存储器控制器200的存储器设备中的一个中的给定等级、给定存储体和给定行的值。尽管示出两个地址生成器,但是在其他实施方案中,另一数量的地址生成器包括在控制单元250中。

在一些实施方案中,地址生成器262将第二地址生成为相对于由地址生成器260生成的第一地址偏移。在一个实施方案中,地址生成器262在第二地址中使用与第一地址相同的标识符,以用于标识存储器设备中的一个内的给定等级和给定存储体和给定行。此外,在实施方案中,第一地址标识所标识行中的所请求数据的起始字节,并且第二地址标识与第一数据不重叠并且与所标识行中的第一数据不连续的所请求数据的起始字节。因此,单一存储器控制器200将数据和命令传输到至少两个通道,同时还支持同时访问非连续数据。

在各种实施方案中,当控制单元250确定第一存储器请求和第二存储器请求中的每一者以给定存储器地址范围内的数据为目标时,控制单元250存储在队列220中存储的给定存储器访问命令服务于第一存储器请求和不同于存储在队列220中的第一存储器请求的第二存储器请求中的每一者的指示。在实施方案中,给定存储器地址范围是存储器设备中的一个中的存储器页面的地址范围。在一些实施方案中,响应于确定给定存储器访问命令已完成,控制单元250将第一存储器请求和第二存储器请求中的每一者标记为完成。

在一些实施方案中,控制寄存器270存储当前模式的指示。例如,存储器数据总线和存储器设备在给定时间处支持读取模式或写入模式。因此,流量在当前模式期间沿给定单一方向路由并且在当前模式在数据总线反转延迟之后发生改变时改变方向。在各种实施方案中,控制寄存器270存储在读取模式期间要发送的阈值数量的读取请求(读取突发长度)。在一些实施方案中,控制寄存器270将由选择算法使用的标准的权重存储在读取调度器252和写入调度器254中,以用于选择存储在队列232-236中要发出的请求。

类似于计算系统100,将两个存储器通道连接到存储器控制器200称为“联动”。通过物理接口连接到存储器控制器200的至少两个通道中的每一个接收访问所选择存储器设备内相同页面中的数据的相同命令。此外,每个通道具有其自己的地址。例如,第一通道从地址生成器260接收第一地址,并且不同于第一通道的第二通道从地址生成器262接收第二地址。在实施方案中,由地址生成器260和262生成的地址是用于DRAM的列地址。在各种实施方案中,存储器控制器200同时访问非连续数据。

在一些实施方案中,存储器控制器200支持GDDR6 DRAM协议。在此类实施方案中,接口280支持宽度为16位(2字节)并且突发长度为16的(两个通道中的)每个通道的读取事务和写入事务。两个联动的16位宽通道提供相当于32位(4字节)宽通道。对于64字节请求,由两个通道提供并且突发长度为16的32位(4字节)宽等效通道将传输64字节,以用于服务于64字节存储器请求。这两个通道是联动的,并且存储器控制器200管理两个16位宽接口。

在使用GDDR6协议的实施方案中,控制单元250将64字节接口管理为用于32字节请求的两个独立的32字节接口。在实施方案中,控制单元250发送命令以跨两个16位通道同时打开相同页面。例如,控制单元250同时向两个通道中的每一个发出激活命令,并且同时向两个通道中的每一个发出存储器访问命令,但是控制单元250通过地址生成器260和262发送两个不同的地址以同时并独立地访问打开的页面。同时访问也作为非连续数据的相邻数据(在相同页面内)。因此,存储器控制器200不会针对单一32字节存储器请求传输64字节,并且丢弃64字节中的32字节,这是效率低下的。而是,存储器控制器200针对访问存储器地址范围内(诸如存储器页面内)的非连续数据的两个32字节存储器请求传输64字节。

在一些实施方案中,控制单元250确定两个32字节存储器请求访问存储器设备中的一个中相同页面内的非连续数据的时间。在其他实施方案中,客户端(诸如GPU)确定两个32字节存储器请求访问存储器设备中的一个中相同页面的时间。客户端发送具有指示的64字节存储器请求,所述指示指定在相同页面内存在以非连续数据为目标的两个32字节请求。在实施方案中,当控制单元250发出64字节命令时,来自地址生成器262的地址被忽略。

现参考图3,示出用于对计算系统执行有效的存储器访问的方法300的一个实施方案。出于论述的目的,按顺序示出此实施方案中(以及图4中)的步骤。然而,应注意,在所描述的方法的各种实施方案中,所描述的元素中的一个或多个以与所示不同的顺序并发地执行,或者整个被省略。也可根据需要执行其他另外的元素。本文所述的各种系统或装置中的任一个被配置来实现方法300。

一个或多个客户端执行计算机程序或软件应用程序。客户端在高速缓存存储器子系统内确定给定存储器访问请求未命中,并且通过存储器控制器将存储器访问请求发送到系统存储器。当存储器请求被接收时存储所述存储器请求(框302)。如果接收的存储器请求并不请求数据大小小于大小阈值的数据(条件框304的“否”分支),则将存储器请求转换为命令(框310)。在一些实施方案中,存储器请求请求大小为64字节和32字节的数据。在实施方案中,大小阈值被设置为64字节。因此,请求数据大小为64字节的数据的存储器请求并不请求数据大小小于大小阈值的数据。

在各种实施方案中,基于正在被访问的存储器,将存储器请求(诸如存储器读取请求)转换成一个或多个命令。例如,DRAM内的控制逻辑执行复杂的事务(诸如激活(打开)事务以及对DRAM内的数据和控制线进行预充电),一次用来访问标识的行,一次用来在关闭事务期间将存储在行缓冲器中的修改后的内容放回至标识的行。不同DRAM事务中的每一者(诸如激活/打开、列访问、读取访问、写入访问和预充电/关闭)具有不同相应的延迟。

调度要发出的存储器访问命令以服务于存储器请求(框312)。在一些实施方案中,至少基于对应的存储器请求的优先级和目标,将存储器访问命令标记为无序发出。在其他实施方案中,在转换为命令之前调度存储器请求。因此,存储器控制器支持存储器请求的无序发出。

如果接收的存储器请求的数据大小小于大小阈值(条件框304的“是”分支),并且第一存储器请求和第二存储器请求并不以相同的给定地址范围为目标(条件框306的“否”分支),则方法300移动至框310,在所述框310中将存储器请求转换为命令。然而,如果接收的存储器请求的数据大小小于存储器数据总线的大小(条件框304的“是”分支),并且第一存储器请求和第二存储器请求以相同的给定地址范围为目标(条件框306的“是”分支),则存储给定存储器访问命令服务于第一存储器请求和第二存储器请求中的每一者的指示(框308)。之后,方法300移动至框310,在框310中将存储器请求转换为命令。

转向图4,示出用于对计算系统执行有效的存储器访问的方法400的一个实施方案。检测到给定存储器访问命令服务于第一存储器请求和第二存储器请求中的每一者的指示(框402)。将给定存储器访问命令发送到存储器设备(框404)。例如,存储器控制器中的调度逻辑基于优先级水平、使用年限等来选择要发出至存储器设备的给定存储器访问命令。

存储器控制器向存储器设备发送指向存储器设备中存储第一数据的第一位置的第一地址(框406)。存储器控制器向存储器设备发送指向存储器设备中存储与第一数据非连续的第二数据的第二位置的第二地址(框408)。响应于确定给定存储器访问命令已完成,将第一存储器请求和第二存储器请求中的每一者标记为完成(框410)。

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

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

14页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:应用运行时确定的异构计算资源的动态分配

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!