CN111656322A - 针对联动存储器设备调度存储器请求 - Google Patents

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

Info

Publication number
CN111656322A
CN111656322A CN201880087934.XA CN201880087934A CN111656322A CN 111656322 A CN111656322 A CN 111656322A CN 201880087934 A CN201880087934 A CN 201880087934A CN 111656322 A CN111656322 A CN 111656322A
Authority
CN
China
Prior art keywords
memory
address
data
given
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201880087934.XA
Other languages
English (en)
Inventor
詹姆斯·雷蒙德·马格罗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN111656322A publication Critical patent/CN111656322A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • G06F13/1631Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Dram (AREA)
  • Memory System (AREA)

Abstract

公开了用于对计算系统执行有效的存储器访问的系统、装置和方法。计算系统包括用于处理应用程序的一个或多个客户端。存储器控制器在所述存储器控制器与各自连接到存储器设备的两个通道之间传输流量。客户端发送具有指示的64字节存储器请求,所述指示指定在相同页面内存在以非连续数据为目标的两个32字节请求。所述存储器控制器生成两个地址,并且将单一命令和所述两个地址发送到两个通道以同时访问相同页面中的非连续数据。

Description

针对联动存储器设备调度存储器请求
发明背景
背景技术
维持相对高水平的性能通常需要快速访问所存储数据。若干类型的数据密集型应用程序依赖于对数据存储的快速访问,以向若干个本地和远程程序及其用户提供可靠的高性能。多种计算设备利用集成了多种类型的IC以提供系统功能性的异构集成。多种功能包括音频/视频(A/V)数据处理,用于医学领域和商业领域的其他高数据并行应用程序、通用指令集架构(ISA)的处理指令、数字、模拟、混合信号和射频(RF)功能等。存在用于将处理节点放置在系统封装中以集成多种类型的IC的多种选择。一些实例是片上系统(SOC)、多芯片模块(MCM)和系统级封装(SiP)。
无论选取哪种系统封装,在若干种用途中,一个或多个计算系统的性能都可取决于处理节点。在一个实例中,处理节点在运行若干种不同类型的应用程序并且可能一次将信息中继给多个用户(本地和远程两者)的移动计算设备内使用。在另一个实例中,处理节点在桌面内使用。在又另一个实例中,处理节点是多插座服务器插座中的多个处理节点中的一个。服务器用于向远程计算设备中的其他计算机程序以及服务器内的计算机程序提供服务。
上述各种计算系统中的每一个中的存储器层次结构从相对较快的易失性存储器(诸如处理器管芯上的寄存器以及位于处理器管芯上或连接到处理器管芯的高速缓存)转变到非易失性且相对较慢的存储器(诸如磁性硬盘)。存储器层次结构对维持高性能以满足运行的计算机程序对快速访问的需求提出了挑战。一项挑战是减少系统存储器中的时间量,所述系统存储器是位于高速缓存子系统之外的随机访问存储器(RAM),但不包括非易失性盘存储器。同步动态RAM(SDRAM)和其他常规存储器技术由于有限的带宽而减少了系统存储器的停顿时间,但是利用这些技术并不能改善访问延迟。此外,大量的管芯上面积和功率消耗用于支持接口和协议以访问存储在系统存储器中的数据。
鉴于以上内容,期望用于对计算系统执行有效的存储器访问的有效方法和系统。
附图说明
通过结合附图参考以下描述,可更好地理解本文所述的方法和机制的优点,在附图中:
图1是计算系统的一个实施方案的框图。
图2是存储器控制器的一个实施方案的框图。
图3是用于对计算系统执行有效的存储器访问的方法的一个实施方案的流程图。
图4是用于对计算系统执行有效的存储器访问的方法的一个实施方案的流程图。
虽然本发明容易有各种修改和替代形式,但是通过举例方式在附图中示出特定的实施方案并且在本文中对其进行详细描述。应当理解的是,图式和对其的详述并不意图将本发明限于所公开的特定形式,而是相反地,本发明将涵盖落入如所附权利要求书所限定的本发明范围内的所有修改、等效物和替代方案。
具体实施方式
在以下描述中,阐述了许多特定细节以提供对本文呈现的方法和机制的透彻理解。然而,本领域的一般技术人员应当认识到,可在没有这些特定细节的情况下实现各种实施方案。在一些情况下,并未详细示出众所周知的结构、分量、信号、计算机程序指令和技术,以避免混淆本文所述的方法。应当理解,为了使说明清楚简单,附图中所示的元素未必按比例绘制。例如,元素中的一些的尺寸可相对于其他元件被放大。
公开了用于对计算系统执行有效的存储器访问的各种系统、装置、方法和计算机可读介质。在各种实施方案中,计算系统包括用于处理应用程序的一个或多个客户端。客户端的实例是通用中央处理单元(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)。程序指令存储在非暂时性计算机可读存储介质上。许多类型的存储介质可用。在使用期间,计算系统可访问存储介质,以将程序指令和附带的数据提供给计算系统以用于程序执行。计算系统包括至少一个或多个存储器和被配置来执行程序指令的一个或多个处理器。
应该强调的是,上述实施方案仅仅是实施方式的非限制性实例。一旦充分理解上述公开内容,许多变化和修改对于本领域的技术人员将变得显而易见。意图将所附权利要求书解释为包含所有此类变化和修改。

Claims (20)

1.一种存储器控制器,其包括:
第一接口,所述第一接口用于接收存储器请求;
第二接口,所述第二接口包括:
命令总线,所述命令总线用于向存储器设备发送对应于所述存储器请求的存储器访问命令;
第一地址总线,所述第一地址总线用于向所述存储器设备发送地址;以及
第二地址总线,所述第二地址总线用于向所述存储器设备发送地址;
控制逻辑,其中响应于确定给定存储器访问命令被调度成在给定时间点处发出,所述控制逻辑被配置来:
在所述给定时间点处将所述给定存储器访问命令发送到所述存储器设备;
在所述给定时间点处在所述第一地址总线上发送第一地址,其中所述第一地址指向所述存储器设备中存储第一数据的第一位置;并且
在所述给定时间点处在所述第二地址总线上发送第二地址,其中所述第二地址指向所述存储器设备中存储与所述第一数据非连续的第二数据的第二位置。
2.如权利要求1所述的存储器控制器,其中所述控制逻辑进一步被配置来响应于确定第一存储器请求和第二存储器请求中的每一者以给定存储器地址范围内的数据为目标,存储所述给定存储器访问命令服务于所述第一存储器请求和所述第二存储器请求中的每一者的指示。
3.如权利要求2所述的存储器控制器,其中所述给定存储器地址范围是存储器页面的范围。
4.如权利要求1所述的存储控制器,其中第一存储器请求包括指向所述第一位置的地址,并且第二存储器请求包括指向所述第二位置的地址。
5.如权利要求1所述的存储器控制器,其中所述第二地址相对于所述第一地址偏移。
6.如权利要求1所述的存储器控制器,其中所述给定存储器访问命令访问所述第一数据和所述第二数据中的每一者。
7.如权利要求1所述的存储器控制器,其中所述第二接口还包括用于在所述存储器控制器与所述存储器设备之间传输数据的数据总线,并且其中所述第一数据和所述第二数据中的每一者具有小于大小阈值的大小。
8.如权利要求7所述的存储器控制器,其中所述第一数据和所述第二数据在所述数据总线上同时传输。
9.如权利要求1所述的存储器控制器,其中所述控制逻辑进一步被配置来响应于确定所述给定存储器访问命令已完成,将第一存储器请求和与所述第一存储器请求不同的第二存储器请求中的每一者标记为完成。
10.一种方法,其包括:
由第一接口接收存储器请求;
由第二接口中的命令总线向存储器设备发送对应于所述存储器请求的存储器访问命令;
由所述第二接口中的第一地址总线向所述存储器设备发送地址;
由所述第二接口中的第二地址总线向所述存储器设备发送地址;
响应于确定给定存储器访问命令被调度成在给定时间点处发出:
在所述给定时间点处将所述给定存储器访问命令发送到所述存储器设备;
在所述给定时间点处在所述第一地址总线上发送第一地址,其中所述第一地址指向所述存储器设备中存储第一数据的第一位置;并且
在所述给定时间点处在所述第二地址总线上发送第二地址,其中所述第二地址指向所述存储器设备中存储与所述第一数据非连续的第二数据的第二位置。
11.如权利要求10所述的方法,其还包括响应于确定第一存储器请求和第二存储器请求中的每一者以给定存储器地址范围内的数据为目标,存储所述给定存储器访问命令服务于所述第一存储器请求和所述第二存储器请求中的每一者的指示。
12.如权利要求10所述的方法,其中第一存储器请求包括指向所述第一位置的地址,并且第二存储器请求包括指向所述第二位置的地址。
13.如权利要求10所述的方法,其中所述第二地址相对于所述第一地址偏移。
14.如权利要求10所述的方法,其中所述给定存储器访问命令访问所述第一数据和所述第二数据中的每一者。
15.如权利要求10所述的方法,其中所述第二接口还包括用于在所述存储器控制器与所述存储器设备之间传输数据的数据总线,并且其中所述第一数据和所述第二数据中的每一者具有小于大小阈值的大小。
16.如权利要求10所述的方法,其还包括响应于确定所述给定存储器访问命令已完成,将第一存储器请求和与所述第一存储器请求不同的第二存储器请求中的每一者标记为完成。
17.一种计算系统,其包括:
处理器,所述处理器被配置来针对存储在存储器设备中的数据生成存储器访问请求;以及
存储器控制器,所述存储器控制器耦接到所述存储器设备;
其中响应于确定给定存储器访问命令被调度成在给定时间点处发出,所述存储器控制器被配置来:
在所述给定时间点处将所述给定存储器访问命令发送到所述存储器设备;
在所述给定时间点处在所述第一地址总线上发送第一地址,其中所述第一地址指向所述存储器设备中存储第一数据的第一位置;并且
在所述给定时间点处在所述第二地址总线上发送第二地址,其中所述第二地址指向所述存储器设备中存储与所述第一数据非连续的第二数据的第二位置。
18.如权利要求17所述的计算系统,其中所述存储器控制器进一步被配置来响应于确定第一存储器请求和第二存储器请求中的每一者以给定存储器地址范围内的数据为目标,存储所述给定存储器访问命令服务于所述第一存储器请求和所述第二存储器请求中的每一者的指示。
19.如权利要求17所述的计算系统,其中所述第二地址相对于所述第一地址偏移。
20.如权利要求17所述的计算系统,其中所述存储器控制器进一步被配置来响应于确定所述给定存储器访问命令已完成,将第一存储器请求和与所述第一存储器请求不同的第二存储器请求中的每一者标记为完成。
CN201880087934.XA 2017-12-21 2018-09-19 针对联动存储器设备调度存储器请求 Pending CN111656322A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/851,479 2017-12-21
US15/851,479 US11422707B2 (en) 2017-12-21 2017-12-21 Scheduling memory requests for a ganged memory device
PCT/US2018/051791 WO2019125563A1 (en) 2017-12-21 2018-09-19 Scheduling memory requests for a ganged memory device

Publications (1)

Publication Number Publication Date
CN111656322A true CN111656322A (zh) 2020-09-11

Family

ID=63915096

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880087934.XA Pending CN111656322A (zh) 2017-12-21 2018-09-19 针对联动存储器设备调度存储器请求

Country Status (6)

Country Link
US (1) US11422707B2 (zh)
EP (2) EP3729267A1 (zh)
JP (1) JP7384806B2 (zh)
KR (1) KR20200100151A (zh)
CN (1) CN111656322A (zh)
WO (1) WO2019125563A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11054998B1 (en) * 2019-12-12 2021-07-06 Facebook, Inc. High bandwidth memory system with distributed request broadcasting masters
KR20210081093A (ko) * 2019-12-23 2021-07-01 주식회사 실리콘웍스 메모리 컨트롤러, 및 이의 동작 방법
US20230304091A1 (en) 2020-08-10 2023-09-28 Cutis Biomedical Research Center Minimally invasive kit for diagnosing skin condition, comprising microneedle patch
US11494316B2 (en) * 2020-08-24 2022-11-08 Advanced Micro Devices, Inc. Memory controller with a plurality of command sub-queues and corresponding arbiters
US11775197B2 (en) * 2021-03-25 2023-10-03 Kyocera Document Solutions Inc. Single command for reading then clearing dynamic random access memory
US20220374237A1 (en) * 2021-05-21 2022-11-24 Telefonaktiebolaget Lm Ericsson (Publ) Apparatus and method for identifying and prioritizing certain instructions in a microprocessor instruction pipeline
CN117743196A (zh) * 2022-09-13 2024-03-22 创鑫智慧股份有限公司 内存查找装置及内存查找方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030002376A1 (en) * 2001-06-29 2003-01-02 Broadcom Corporation Method and system for fast memory access
JP2007519121A (ja) * 2004-01-22 2007-07-12 クゥアルコム・インコーポレイテッド マルチプルアドレス2チャンネルバス構造
US7492368B1 (en) * 2006-01-24 2009-02-17 Nvidia Corporation Apparatus, system, and method for coalescing parallel memory requests

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2932855B2 (ja) * 1992-09-08 1999-08-09 日本電気株式会社 多重入出力メモリ
US5446855A (en) * 1994-02-07 1995-08-29 Buslogic, Inc. System and method for disk array data transfer
JP2000099397A (ja) 1998-09-18 2000-04-07 Hitachi Ltd データ処理装置
US6526484B1 (en) 1998-11-16 2003-02-25 Infineon Technologies Ag Methods and apparatus for reordering of the memory requests to achieve higher average utilization of the command and data bus
US6195727B1 (en) * 1999-03-31 2001-02-27 International Business Machines Corporation Coalescing raid commands accessing contiguous data in write-through mode
US6457078B1 (en) 1999-06-17 2002-09-24 Advanced Micro Devices, Inc. Multi-purpose bi-directional control bus for carrying tokens between initiator devices and target devices
US6944731B2 (en) 2001-12-19 2005-09-13 Agere Systems Inc. Dynamic random access memory system with bank conflict avoidance feature
US6839797B2 (en) 2001-12-21 2005-01-04 Agere Systems, Inc. Multi-bank scheduling to improve performance on tree accesses in a DRAM based random access memory subsystem
US7373471B2 (en) 2005-02-09 2008-05-13 International Business Machines Corporation Executing background writes to idle DIMMs
JP5055989B2 (ja) 2006-12-08 2012-10-24 富士通セミコンダクター株式会社 メモリコントローラ
US8060692B2 (en) 2008-06-27 2011-11-15 Intel Corporation Memory controller using time-staggered lockstep sub-channels with buffered memory
JP2011013835A (ja) 2009-06-30 2011-01-20 Canon Inc メモリシステム、メモリアクセス方法、及びプログラム
JP2013137713A (ja) 2011-12-28 2013-07-11 Toshiba Corp メモリコントローラ、メモリシステムおよびメモリ書込み方法
US9569393B2 (en) 2012-08-10 2017-02-14 Rambus Inc. Memory module threading with staggered data transfers
US20140052906A1 (en) 2012-08-17 2014-02-20 Rambus Inc. Memory controller responsive to latency-sensitive applications and mixed-granularity access requests
US9639466B2 (en) * 2012-10-30 2017-05-02 Nvidia Corporation Control mechanism for fine-tuned cache to backing-store synchronization
US20150081967A1 (en) * 2013-09-18 2015-03-19 Hewlett-Packard Development Company, L.P. Management of storage read requests
US10146691B2 (en) * 2016-12-09 2018-12-04 Intel Corporation System and method for performing partial cache line writes without fill-reads or byte enables
US10643707B2 (en) * 2017-07-25 2020-05-05 Western Digital Technologies, Inc. Group write operations for a data storage device
US10296230B1 (en) 2017-12-22 2019-05-21 Advanced Micro Devices, Inc. Scheduling memory requests with non-uniform latencies
US10606713B2 (en) * 2018-01-03 2020-03-31 International Business Machines Corporation Using dual channel memory as single channel memory with command address recovery
US10546628B2 (en) * 2018-01-03 2020-01-28 International Business Machines Corporation Using dual channel memory as single channel memory with spares

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030002376A1 (en) * 2001-06-29 2003-01-02 Broadcom Corporation Method and system for fast memory access
JP2007519121A (ja) * 2004-01-22 2007-07-12 クゥアルコム・インコーポレイテッド マルチプルアドレス2チャンネルバス構造
US7492368B1 (en) * 2006-01-24 2009-02-17 Nvidia Corporation Apparatus, system, and method for coalescing parallel memory requests

Also Published As

Publication number Publication date
WO2019125563A1 (en) 2019-06-27
EP3729267A1 (en) 2020-10-28
JP2021507414A (ja) 2021-02-22
EP4361827A3 (en) 2024-07-17
KR20200100151A (ko) 2020-08-25
EP4361827A2 (en) 2024-05-01
US11422707B2 (en) 2022-08-23
JP7384806B2 (ja) 2023-11-21
US20190196721A1 (en) 2019-06-27

Similar Documents

Publication Publication Date Title
EP3729281B1 (en) Scheduling memory requests with non-uniform latencies
JP7384806B2 (ja) 連動メモリデバイスに対するメモリ要求のスケジューリング
US20210073152A1 (en) Dynamic page state aware scheduling of read/write burst transactions
CN112088368B (zh) 动态的每存储体和全存储体刷新
US11474942B2 (en) Supporting responses for memory types with non-uniform latencies on same channel
JP7036925B2 (ja) キャッシュ制御を考慮したメモリコントローラ
US20190196996A1 (en) Dynamically determining memory access burst length
US20120137090A1 (en) Programmable Interleave Select in Memory Controller
US20200401321A1 (en) Speculative hint-triggered activation of pages in memory
US20180174624A1 (en) Memory component with adjustable core-to-interface data rate ratio
US11526278B2 (en) Adaptive page close prediction

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination