CN111742305B - 调度具有不统一等待时间的存储器请求 - Google Patents
调度具有不统一等待时间的存储器请求 Download PDFInfo
- Publication number
- CN111742305B CN111742305B CN201880089656.1A CN201880089656A CN111742305B CN 111742305 B CN111742305 B CN 111742305B CN 201880089656 A CN201880089656 A CN 201880089656A CN 111742305 B CN111742305 B CN 111742305B
- Authority
- CN
- China
- Prior art keywords
- memory
- time
- memory access
- command
- access command
- 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.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 737
- 230000004044 response Effects 0.000 claims abstract description 126
- 238000000034 method Methods 0.000 claims abstract description 54
- 230000005540 biological transmission Effects 0.000 claims description 71
- 230000008685 targeting Effects 0.000 claims description 19
- 238000004891 communication Methods 0.000 claims description 10
- 239000004744 fabric Substances 0.000 claims description 8
- 238000012545 processing Methods 0.000 abstract description 21
- 238000012546 transfer Methods 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 31
- 238000013500 data storage Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/22—Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management
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)
- Dram (AREA)
- Memory System (AREA)
- Bus Control (AREA)
- Multi Processors (AREA)
- Communication Control (AREA)
Abstract
公开了用于执行调度要发射给两种不同存储器类型的存储器请求的系统、装置和方法。一种计算系统包括用于处理应用程序的一个或多个客户端。存储器控制器内的异构存储器信道在所述存储器控制器与连接到第一存储器和不同于所述第一存储器的第二存储器中的每一者的存储器总线之间传输存储器流量。所述存储器控制器确定尚未调度读取响应数据以在所述存储器总线上驱动的下一给定时间点。所述存储器控制器确定是否有时间调度用于访问所述第一存储器的第一存储器访问命令和用于访问所述第二第二存储器的第二存储器访问命令。如果针对每一者都有足够的时间,则基于加权标准选择所述访问命令中的一个。
Description
背景技术
相关技术描述
多种计算设备利用集成多种类型的IC以用于提供系统功能性的异构集成。多个功能设置在处理节点中,并且多个功能包括音频/视频(A/V)数据处理、用于医学和商业领域的其他高数据并行应用程序、通用指令集架构(ISA)的处理指令、数字、模拟、混合信号和射频(RF)功能等。存在用于将处理节点放置在系统封装中以集成多种类型的IC的多种选择。一些实例是片上系统(SOC)、多芯片模块(MCM)和系统级封装(SiP)。
无论对系统封装的选择如何,在若干用途中,一个或多个计算系统的性能都可取决于处理节点。在一个实例中,处理节点是多套接字服务器的套接字中的多个处理节点中的一个。服务器用于向远程计算设备中的其他计算机程序以及服务器内的计算机程序提供服务。在另一个实例中,处理节点在运行若干不同类型的应用程序的移动计算设备内使用,并且可能一次将信息中继到多个用户(本地和远程两种)。
维持性能处于相对高的水平通常需要对所存储数据的快速访问。若干类型的数据密集型应用程序依赖于对数据存储的快速访问来为若干本地和远程程序及其用户提供可靠的高性能。存储器层次结构从相对快的易失性存储器(诸如处于处理器管芯上的寄存器以及位于处理器管芯上或连接到处理器管芯的高速缓存)转变为非易失性且相对慢的存储器。用于不同类型的存储器的接口和访问机制也发生改变。因此,用于在层次结构中组合两种不同类型的存储器的任何混合提议给维持高性能以满足运行中计算机程序的快速访问需求带来挑战。
鉴于以上内容,期望用于调度要发射到两种不同存储器类型的存储器请求的有效方法和系统。
附图说明
通过结合附图参考以下描述,可更好地理解本文描述的方法和机制的优点,在附图中:
图1是计算系统的一个实施方案的框图。
图2是时序图的一个实施方案的框图。
图3是时序图的另一个实施方案的框图。
图4是时序图的另一个实施方案的框图。
图5是时序图的另一个实施方案的框图。
图6是计算系统的另一个实施方案的框图。
图7是存储器控制器的一个实施方案的框图。
图8是用于调度存储器请求以用于发射给两种不同存储器类型的方法的一个实施方案的流程图。
图9是用于调度存储器请求以用于发射给两种不同存储器类型的方法的另一个实施方案的流程图。
图10是用于调度存储器请求以用于发射给两种不同存储器类型的方法的另一个实施方案的流程图。
图11是用于调度存储器请求以用于发射给两种不同存储器类型的方法的另一个实施方案的流程图。
图12是用于调度存储器请求以用于发射给两种不同存储器类型的方法的另一个实施方案的流程图。
虽然本发明容易有各种修改和替代形式,但是通过举例方式在附图中示出特定的实施方案并在本文中对其进行详细描述。然而,应理解,附图及其详细描述并不意图将本发明局限于所公开的特定形式,而是相反地,本发明将涵盖落入如所附权利要求限定的本发明的范围内的所有修改、等效物和替代方案。
具体实施方式
在以下描述中,阐述了众多特定细节以提供对本文呈现的方法和机制的透彻理解。然而,本领域普通技术人员应认识到,可在没有这些特定细节的情况下实践各种实施方案。在一些情况下,并未详细示出众所周知的结构、部件、信号、计算机程序指令和技术,以避免混淆本文描述的方法。应理解,为了使说明清楚简单,附图中所示的元件未必按比例绘制。例如,一些元件的尺寸可相对于其他元件放大。例如,一些元件的尺寸可相对于其他元件放大。
公开了用于标识从两种不同存储器类型乱序到达的响应数据的各种系统、装置、方法和计算机可读介质。在各种实施方案中,计算系统包括用于处理应用程序的一个或多个客户端。客户端的实例是通用中央处理单元(CPU)、图形处理单元(GPU)、加速处理单元(APU)、输入/输出(I/O)设备等。存储器控制器内的异构存储器信道在存储器控制器与连接到第一存储器和第二存储器中的每一者的存储器总线之间传输存储器流量。
在各种实施方案中,第一存储器和第二存储器利用不同的数据存储技术并具有不同的访问等待时间。例如,第一存储器和第二存储器中的每一者可包括多种随机存取存储器(RAM)(诸如多种动态随机存取存储器(DRAM))中的一种、多种非易失性(NV)双列直插式存储器模块(DIMM)中的一种(诸如NVDIMM-P)、另一种类型的数据存储技术(诸如相变存储器(PCM)、铁电存储器(FeRAM)、磁阻存储器(MRAM)、电阻存储器(ReRAM或RRAM)、三维(3D)交叉点(XPoint)存储器)中的一种等。因此,第一存储器的一个或多个访问等待时间与第二存储器的一个或多个访问等待时间之间的差可超过阈值。在一些实施方案中,从读取命令的发射到具有有效数据的所接收响应测量的第一存储器的访问等待时间在数十纳秒的尺度上。在各种实施方案中,从存储器访问命令的发射到所接收响应测量的第二存储器的访问等待时间在数百纳秒的尺度上。因此,等待时间之间的差超过数百纳秒,这可能高于给定阈值时间量。
在各种实施方案中,命令处理器或其他逻辑将每个所接收存储器请求转换为一个或多个命令。存储器控制器中的调度器确定是否有两个未决存储器访问命令,诸如用于第一存储器类型的第一命令和用于第二存储器类型的第二命令。调度器确定是否可发射第一命令和第二命令中的每一者而不在共享存储器数据总线上造成数据冲突。例如,除了第一存储器和第二存储器中的每一者的访问等待时间之外,基于用于发射所选择命令的时间点,存储器控制器跟踪调度读取响应数据以在共享存储器数据总线上抵达时的时间点。在一些实施方案中,按时钟周期测量时间点。如果选择第一命令和第二命令中的任一者不会调度共享存储器数据总线上的数据冲突,则第一命令和第二命令中的每一者仍然是用于发射的候选者。在这种情况下,调度器基于仲裁逻辑从第一命令和第二命令中选择命令。
在其他实施方案中,为了避免共享存储器数据总线上的数据冲突,存储器控制器中的调度器确定尚未调度读取响应数据以在存储器数据总线上驱动的下一给定时间点。调度器确定是否有时间调度用于访问第一存储器的第一存储器访问命令以在给定时间点提供响应数据。调度器还确定是否有时间调度用于访问第二存储器的第二存储器访问命令以在给定时间点提供响应数据。
如果有足够的时间让第一访问命令和第二访问命令中的至少一者在给定时间点提供响应数据,则调度器基于仲裁逻辑选择第一存储器访问命令和第二存储器访问命令中的一者。在一个实施方案中,仲裁逻辑使用加权标准。标准包括至少优先级别、年限等。此后,调度器经由异构存储器信道将所选择访问命令发射给第一存储器和第二存储器中的一者。
在一些实施方案中,当调度器调度给定命令来发射时,调度器确定将调度所请求读取数据以在共享存储器数据总线上抵达的给定时间点。在一个实施方案中,调度器将给定命令的等待时间加到调度器调度来发射给定命令的时间点。在一些实施方案中,调度器生成标识符作为存储对应于给定命令的信息的请求队列中的条目的指示。在其他实施方案中,标识符基于线程标识符和对应于给定命令的存储器请求的目标地址的一部分中的一者或多者的组合生成标识符。调度器存储标识符与给定时间点的关联。在一个实施方案中,使用表。因此,调度器能够基于给定时间点通过共享存储器数据总线上的抵达所请求读取数据而不是基于插入在给定命令中的标签或通过与抵达所请求读取数据相关联的分组来标识给定命令。
参考图1,示出计算系统100的一个实施方案的一般化框图。如图所示,客户端110和112将存储器请求发送给存储器控制器120。存储器控制器120内的异构存储器信道124在存储器控制器120与存储器总线130之间传输存储器流量。存储器140和存储器150中的每一者存储由客户端110和112访问的数据。在各种实施方案中,存储器140和存储器150使用不同的数据存储技术,并且因此具有不同的访问等待时间。在各种实施方案中,存储器140和存储器150中的一者或多者由客户端110和112用作系统存储器。
为了便于说明,在计算系统100中未示出通信织构、用于输入/输出(I/O)设备的I/O接口以及用于网络连接的任何链路和接口。在一些实施方案中,计算系统100的部件是集成电路(IC)上的单独管芯,诸如片上系统(SOC)。在其他实施方案中,部件是系统级封装(SiP)或多芯片模块(MCM)中的单独管芯。在一些实施方案中,客户端110和112包括中央处理单元(CPU)、图形处理单元(GPU)、用于多媒体引擎的集线器等中的一者或多者。客户端110和112中的每一者是能够处理应用程序并生成存储器请求的多种计算资源中的一种。
尽管示出单个存储器控制器120,但是在其他实施方案中,在计算系统100中使用另一数量的存储器控制器。在各种实施方案中,存储器控制器120从客户端110和112接收存储器请求,并且调度器122调度存储器请求并经由异构存储器信道124将所调度存储器请求发送给存储器140和150中的一者。在一些实施方案中,存储器控制器120内的调度器122包括控制逻辑,其与调度以存储器150中的存储器位置为目标的存储器请求分开地调度以存储器140中的存储器位置为目标的存储器请求。此后,调度器122在以存储器140为目标的存储器请求与以存储器150为目标的存储器请求之间进行选择。在一个实施方案中,调度器122混合以存储器140和存储器150为目标的访问。
调度器122中用于调度存储器请求的控制逻辑使用诸如以下的信息:存储器请求的服务质量(QoS)或其他优先级别、存储器请求的进程或软件线程标识符(ID)、存储器请求的年限、自向存储器140发射存储器请求以来的时间量、自向存储器150发射存储器请求以来的时间量等。因此,调度器122支持存储器请求的乱序发射。当调度器122选择存储器请求来发送给存储器140和存储器150中的一者时,调度器122将所选择存储器请求发送给异构存储器信道120以便传输。
异构存储器信道124与存储器140和存储器150中的每一者接口连接。异构存储器信道124支持用于与存储器140接口连接的协议,并且支持用于与存储器150接口连接的另一个协议。所述协议确定用于信息传输的值,诸如每时钟周期的数据传输次数、信号电压电平、信号时序、信号和时钟相位以及时钟频率。
在各种实施方案中,存储器总线130支持在给定时间量内(诸如在读取模式和写入模式中的给定模式期间)在单个方向上发送数据流量,然后在另一个给定时间量内(诸如在读取模式和写入模式的另一种模式期间)在相反方向上发送数据流量。在一个实施方案中,存储器总线130利用单个命令总线和单个数据总线。因此,得以以避免存储器总线130上的数据冲突的方式执行调度存储器请求到存储器140和存储器150的发射。
如早前所述,存储器140和存储器150使用不同的数据存储技术,并且因此具有不同的访问等待时间。如图所示,存储器140具有与存储器150的访问等待时间134相差至少阈值时间量的访问等待时间132。尽管针对存储器140和存储器150中的每一者示出单个访问等待时间,但是在其他实施方案中,存储器140和存储器150中的一者或多者具有多个访问等待时间。然而,存储器140的多个访问等待时间中的每一个与存储器150的多个访问等待时间中的每一个相差至少阈值时间量。
在一个实施方案中,存储器140和存储器150中的一者包括多种动态随机存取存储器(DRAM)中的一种,而存储器140和存储器150中的另一者包括多种非易失性(NV)双列直插式存储器模块(DIMM)中的一种,诸如NVDIMM-P。在其他实施方案中,针对存储器140和存储器150使用具有不同访问等待时间的其他存储器类型。例如,除了使用多种类型的随机存取存储器(RAM)技术和NVDIMM技术之外,在一些实施方案中,存储器140和存储器150中的每一者包括数据存储技术的其他实例,诸如相变存储器(PCM)、铁电存储器(FeRAM)、磁阻存储器(MRAM)、电阻存储器(ReRAM或RRAM)、三维(3D)交叉点(XPoint)存储器等。在各种实施方案中,存储器140的访问等待时间与存储器150的访问等待时间之间的差高于阈值。因此,调度器122包括用于以混合方式发射以存储器140和存储器150中的位置为目标的存储器访问命令的控制逻辑和顺序元件。
在一些实施方案中,存储器控制器120包括用于将每个所接收存储器请求转换为一个或多个命令的命令处理器。在一个实施方案中,调度器122确定是否有两个未决存储器访问命令,诸如用于存储器140的第一命令和用于存储器150的第二命令。调度器122确定是否可发射第一命令和第二命令中的每一者而不在共享存储器数据总线130上造成数据冲突。例如,基于用于发射所选择命令的时间点、访问等待时间132和访问等待时间134,存储器控制器120跟踪将调度数据以在共享存储器数据总线130上抵达时的时间点。未决的第一命令和第二命令可以是读取访问或写入访问。在一些实施方案中,按时钟周期测量时间点。如果选择第一命令和第二命令中的任一者不会调度共享存储器数据总线130上的数据冲突,则第一命令和第二命令中的每一者仍然是用于发射的候选者。在这种情况下,调度器122基于仲裁逻辑从第一命令和第二命令中选择命令。在一个实施方案中,仲裁逻辑使用加权标准。
在其他实施方案中,为了避免存储器总线130上的数据冲突而不管访问等待时间132与访问等待时间134之间的明显的差,但是,调度器122确定存储器总线130被调度为可用的下一给定时间点。换句话说,调度器122确定尚未调度读取响应数据或写入数据以在存储器总线130上驱动的下一给定时间点。在一些实施方案中,按时钟周期测量时间点。调度器122还确定是否有时间调度用于访问存储器140的第一命令和用于访问存储器150的第二命令以在给定时间点提供数据。如早前所述,命令处理器将所接收存储器请求转换为命令。在一个实施方案中,第一命令和第二命令中的一者或多者具有一个或多个在前命令和/或一个或多个在后命令,当第一命令和第二命令可发射时,所述在前命令和/或在后命令增加等待时间和延迟。
如果有足够的时间让第一访问命令和第二访问命令中的至少一者在存储器总线130可用时的给定时间点提供数据,则调度器122选择第一存储器访问命令和第二存储器访问命令中的一者。调度器122可使用早前描述的标准,诸如优先级别、年限等。此后,调度器122经由异构存储器信道124将所选择访问命令发送给存储器140和存储器150中的一者。
参考图2,示出时序图200的一个实施方案的一般化框图。在所示实施方案中,存储器访问命令被示出为在时间线上的不同时间发射。存储器访问命令发射给具有不同访问等待时间的两种不同类型的存储器中的一种。在各种实施方案中,第一类型的存储器(存储器类型1)使用与第二类型的存储器(存储器类型2)不同的数据存储技术,并且因此,存储器类型1具有与存储器类型2的访问等待时间相差至少阈值时间量的访问等待时间。
如图所示,标注为A、B和C的三个存储器访问命令在由标记t1、t2和t3指示的时间发射。这些存储器访问命令发射给存储器类型1。对这些存储器访问命令的响应被示出为在由标记t4、t5和t6指示的时间抵达。在一些实施方案中,时间线上的标记等效于时钟周期。在其他实施方案中,时间线上的标记等效于指示给定时间点的其他时间量度。除了具有时间线上的三个标记的确定性访问等待时间之外,响应还被示出为相对于发射存储器访问命令A、B和C的次序有序抵达。
另外地,另一个存储器访问命令D被示出为在由标记t7指示的时间发射。存储器访问命令D发射给存储器类型2。响应被示出为在由标记t12指示的时间被接收。发射给存储器类型2的存储器访问命令D的访问等待时间大于发射给存储器类型1的存储器访问命令A、B和C的访问等待时间。在一些实施方案中,存储器类型2的访问等待时间是时间线上的五个标记。
在所示实施方案中,存储器类型2具有第二访问等待时间。例如,存储器访问命令E在由时间线上的标记t13指示的时间发射给存储器类型2。在一些实施方案中,存储器类型2的第二访问等待时间是时间线上的六个标记。如图所示,对存储器访问命令E的响应被示出为在由标记t19指示的时间抵达。在一些实施方案中,对于存储器类型1和存储器类型2来说,读取访问等待时间等于写入访问等待时间。在其他实施方案中,对于存储器类型1和存储器类型2中的一者或多者来说,读取访问等待时间不同于写入访问等待时间。在所示实施方案中,访问命令A-E具有不同的访问等待时间210和220,并且命令A-E被示出为彼此分开地发射。然而,这种发射方案效率低下。
参考图3,示出时序图300的另一个实施方案的一般化框图。在所示实施方案中,存储器访问命令被示出为在时间线上的不同时间发射。存储器访问命令发射给具有明显不同的访问等待时间(诸如相差至少阈值时间量)的两种不同类型的存储器中的一种。如图所示,发射给存储器类型1的访问命令的等待时间310小于发射给存储器类型2的访问命令的等待时间320。
类似于时序图200,在一些实施方案中,时间线上的标记等效于时钟周期。在其他实施方案中,时间线上的标记等效于指示时间点的其他时间量度。如图所示,标注为A、B和C的三个存储器访问命令在由标记t1、t2和t3指示的时间发射。这些存储器访问命令发射给存储器类型1。除了具有时间线上的三个标记的确定性等待时间之外,对这些存储器访问命令的响应被示出为在由标记t4、t5和t6指示的时间抵达,并且相对于发射存储器访问命令A、B和C的次序是有序的。
存储器访问命令D在由标记t7指示的时间发射给存储器类型2。在接收到响应之前,另一个存储器访问命令E在由标记t8指示的时间发射给存储器类型1。在由标记t9指示的时间,不可能向存储器类型1发射另一个存储器访问命令而不发生数据冲突。在此实例中,已知发射给存储器类型1的存储器访问命令的访问等待时间是时间线上的三个标记,并且发射给存储器类型2的存储器访问命令的访问等待时间是至少时间线上的五个标记。因此,已知由于存储器访问命令D的调度,存储器数据总线在由标记t12指示的时间不可用。如果存储器访问命令在由标记t9指示的时间发射给存储器类型1,则在t12处将会发生数据冲突。
示出了发射的其他访问命令,诸如在t13处发射给存储器类型2的存储器访问命令F以及在时间t14和t15处发射给存储器类型1的存储器访问命令G和H。在此实例中,存储器访问命令F的访问等待时间是时间线上的六个标记。因此,已知由于存储器访问命令F的调度,存储器数据总线在由标记t19指示的时间不可用。如果存储器访问命令在由标记t16指示的时间发射给存储器类型1,则在t19处将会发生数据冲突。因此,经由异构存储器信道向两种类型的存储器发射存储器访问命令的调度器考虑存储器数据总线由于命令的等待时间而不可用的时间,以便避免存储器数据总线上的数据冲突。
参考图4,示出时序图400的另一个实施方案的一般化框图。在所示实施方案中,存储器访问命令420和430被示出为在基于时钟410的不同时间发射。在所示实施方案中,时钟410的时钟周期用于提供时间量度以标识时间点。存储器访问命令发射给具有彼此相差至少阈值时间量的访问等待时间的两种不同类型的存储器中的一种。在一个实施方案中,命令420发射给第一类型的存储器(存储器类型1),并且命令430发射给第二类型的存储器(存储器类型2)。
如图所示,访问命令420的等待时间小于访问命令430的等待时间。为了便于说明,未按比例绘制等待时间。在一些实施方案中,从读取命令的发射到具有有效数据的所接收响应测量的存储器类型1的访问等待时间在数十纳秒的尺度上。在所示实例中,等待时间被示出为2个时钟周期。在各种实施方案中,从存储器访问命令的发射到所接收响应(可包括或可不包括有效数据)测量的存储器类型2的访问等待时间在数百纳秒的尺度上。为了便于说明,等待时间被示出为5个时钟周期,而不是按比例绘制。
在各种实施方案中,基于访问存储器而将存储器请求(诸如存储器读取请求或存储器写入请求)转换成一个或多个命令。例如,DRAM内的控制逻辑执行复杂事务(诸如激活(打开)事务和对DRAM内的数据和控制线的预充电)一次以访问所标识行,并在关闭事务期间执行一次以将存储在行缓冲区中的修改内容放回到所标识行。不同的DRAM事务(诸如激活/打开、列访问、读取访问、写入访问和预充电/关闭)中的每一者具有不同的相应等待时间。通常,激活和预充电事务与读取访问和写入访问事务相比具有明显更高的等待时间。
在所示实例中示出的命令的虚线表示与存储器访问命令一起发射的可能的附加命令。例如,可使用用于DRAM的激活/打开命令和预充电/关闭命令,但在时序图400中未示出所述命令。类似地,对于NVDIMM-P,事务读取(X-READ)命令、发送读取(SREAD)命令和推测状态读取命令中的每一者后面通常跟着扩展地址(AXDR)命令,这允许针对大的线性地址扩展地址。这些附加命令未具体示出,但由命令420与430之间的可能布置的虚线表示。因此,通常不在背对背时钟周期上发射背对背访问命令。具有异构存储器信道的存储器控制器的调度器在调度存储器访问命令以用于发射时考虑可能的附加命令。
响应被示出为响应440,并且它们在共享的单个存储器数据总线上被接收。如图所示,用于存储器类型1的存储器访问命令“READ A”在时钟周期(CC)1处发射。在本实例中的两个时钟周期的访问等待时间的情况下,有效响应数据在CC3处抵达。如本实例中所示,有效数据消耗两个时钟周期,诸如CC 3和CC 4。在每个时钟周期期间,等于数据总线宽度的数据量返回到存储器控制器。数据总线的所支持大小是基于设计选择。
在一个实施方案中,存储器控制器中的调度器或其他控制逻辑确定将存储器数据总线调度为可用的下一给定时间点是在CC 4之后,即为CC 5。调度器确定有时间调度用于存储器类型1的存储器访问命令和用于存储器类型2的存储器访问命令。用于存储器类型1的存储器访问命令的响应数据量将不与用于存储器类型2的早前存储器访问命令的响应数据抵达冲突。因此,调度器在CC 2处发射用于存储器类型2的读取命令“READ B”,并在CC 3处发射用于存储器类型1的存储器访问命令“READ C”。在本实例中的两个时钟周期的访问等待时间的情况下,“READ C”的有效响应数据在CC 5和CC 6处抵达。在本实例中的五个时钟周期的访问等待时间的情况下,对于“READ B”,有效响应数据被调度以在CC 7和CC 8处抵达。然而,如图所示,所请求数据尚未准备好从存储器类型2中进行检索。指明所请求数据尚未可用的指示由存储器控制器接收并由调度器用来在稍后的时间进行重试。
调度器确定尚未调度读取响应数据以在存储器数据总线上驱动的下一给定时间点是CC 9。调度器确定有时间调度用于存储器类型1的存储器访问命令和用于存储器类型2的存储器访问命令。为了选择下一存储器访问命令来发射,调度器使用诸如以下的信息:存储器请求的服务质量(QoS)或其他优先级别、存储器请求的进程或软件线程标识符(ID)、存储器请求的年限、自向存储器类型1发射存储器访问请求以来的时间量、自向存储器类型2发射存储器访问请求以来的时间量等。在所提供实例中,调度器在CC 4处发射用于存储器类型2的读取访问命令“READ D”。在本实例中的五个时钟周期的访问等待时间的情况下,有效响应数据被调度以在CC 9和CC 10处抵达。
调度器确定存储器数据总线可用的下一给定时间点为CC 11。调度器确定有时间调度用于存储器类型1的存储器访问请求和用于存储器类型2的存储器访问请求。调度器基于早前标准诸如优先级别、年限等选择下一存储器访问命令来发射。在一些实施方案中,调度器给标准中的每一者分配给定权重并执行加权和。选择具有最大和的存储器访问命令以用于发射。
在一个实施方案中,存储器控制器在另一个信道或链路接口上接收现在可从存储器类型2获得“READ B”的响应数据的指示。尽管存储器访问命令“READ E”与对应于早前读取命令“READ B”的发送读取命令“SREAD B”相比具有更高的加权和,但是调度器确定存储器访问命令“READ E”的响应数据量将与早前读取命令“READ D”的响应数据抵达冲突。因此,调度器在CC 8处发射发送读取命令“SREAD B”,并在CC 9处发射存储器访问命令“READE”。在本实例中的两个时钟周期的访问等待时间的情况下,“READ E”的有效响应数据在CC11和CC 12处抵达。在本实例中的对于“SREAD B”的五个时钟周期的访问等待时间的情况下,有效响应数据被调度以在CC 13和CC 14(未示出)处抵达。尽管时序图400是关于读取访问命令描述的,但是在其他实施方案中,针对写入访问命令使用类似的时序图,其中写入数据设置在共享存储器数据总线上,并且可能与读取响应数据或其他写入访问命令的其他写入数据发生数据冲突。
在一些实施方案中,所接收响应数据包括标识哪个命令与响应数据相关联的标签或其他标识符。在其他实施方案中,请求数据的抵达时序用于标识哪个命令与响应数据相关联。因此,尽管请求数据脱离对应于命令的发射的次序抵达,但是存储器控制器中的调度器能够跟踪哪个所接收数据属于哪个命令。
参考图5,示出时序图500的另一个实施方案的一般化框图。在所示实施方案中,存储器访问命令520和530被示出为在基于时钟510的不同时间发射。在所示实施方案中,时钟510的时钟周期用于提供时间量度以标识时间点。存储器访问命令发射给具有不同访问等待时间的两种不同类型的存储器中的一种。在一个实施方案中,命令520发射给第一类型的存储器,所述第一类型的存储器为常规DRAM,并且命令530发射给第二类型的存储器,所述第二类型的存储器为NVDIMM-P。然而,具有不同访问等待时间的其他类型的存储器也是可能的并被设想到。
为了便于说明,未按比例绘制命令等待时间。在一些实施方案中,常规DRAM的命令等待时间在数十纳秒的尺度上。在所示实例中,等待时间被示出为2个时钟周期。在各种实施方案中,NVDIMM-P的访问等待时间在数百纳秒的尺度上。在所示实例中,等待时间被示出为7个时钟周期。在各种实施方案中,基于访问存储器而将存储器请求(诸如存储器读取请求)转换成一个或多个命令。如早前所述,DRAM内的控制逻辑执行复杂事务,诸如激活事务和关闭事务。另外,产生了其他信号,诸如行地址的选通和列地址的选通560。
类似于早前时序图400,时序图500是关于读取访问命令描述的。然而,在其他实施方案中,针对写入访问命令使用类似的时序图,其中写入数据设置在共享存储器数据总线上,并且可能与读取响应数据或其他写入访问命令的其他写入数据发生数据冲突。响应被示出为响应540,并且它们在单个存储器数据总线上被接收。调度器基于早前标准诸如优先级别、年限等选择下一存储器访问命令来发射。在一些实施方案中,调度器给标准中的每一者分配给定权重并执行加权和以便在选择下一命令来发射时使用。
如图所示,调度器在CC 2处发射用于存储器类型2的事务读取命令“X-READ A”。允许针对大的线性地址扩展地址的扩展地址命令“XADR A”在CC 3处紧跟着。在本实例中的7个时钟周期的访问等待时间的情况下,有效响应数据被调度以在CC 9处抵达。在一些实施方案中,等待时间是从命令“XADR A”而不是从命令“X-READ A”测量的。在各种实施方案中,所请求数据消耗多个时钟周期。然而,为了便于说明,命令“X-READ A”的所请求数据消耗单个时钟周期。
调度器在CC 3处发射用于存储器类型1的存储器访问命令“READ B”。在本实例中的两个时钟周期的访问等待时间的情况下,有效响应数据在CC 5处抵达。如图所示,激活命令“ACTIVATE”在CC 1处发射以为在CC 3处发射命令“READ B”做准备。选通560上的列地址选通(CAS)在CC 3处被断言具有逻辑低值。行地址和列地址在标记为指针570的地址线上提供、与对应选通的断言对准。如图所示,命令“READ B”的所请求数据消耗四个时钟周期,诸如CC 5、CC 6、CC 7和CC8。调度器在确定存储器数据总线可用的下一给定时间点时考虑由所接收所请求数据消耗的时钟周期数。
在一个实施方案中,调度器确定存储器数据总线可用的下一给定时间点为CC 10。调度器确定有时间调度用于存储器类型1的存储器访问命令,但是没有时间调度用于存储器类型2的存储器访问命令。如图所示,发射用于存储器类型2的下一存储器访问命令的最早时间点是在命令“XADR A”之后,即为CC 4。在7个时钟周期的命令等待时间的情况下,所请求数据被调度以在CC 11处而不是在CC 10处抵达。因此,调度器在CC 8处发射用于存储器类型1的存储器访问命令“READ C”。在本实例中的两个时钟周期的访问等待时间的情况下,有效响应数据在CC 10处抵达。
如图所示,预充电命令“PRECHARGE”和激活命令“ACTIVATE”分别在CC 4和CC 6处发射,以为在CC 8处发射命令“READ C”做准备。在标记为指针570的地址线上的“BANK”数据中指明要关闭的存储体。在一些实施方案中,所接收响应数据包括标识哪个命令与响应数据相关联的标签或其他标识符。在其他实施方案中,请求数据的抵达时序用于标识哪个命令与响应数据相关联。因此,尽管请求数据脱离对应于命令的发射的次序抵达,但是存储器控制器中的调度器能够跟踪哪个所接收数据属于哪个命令。
参考图6,示出计算系统600的另一个实施方案的一般化框图。如图所示,计算系统600包括在客户端610中的每一者与存储器控制器630之间的通信织构620。存储器控制器630包括用于经由存储器总线650在存储器控制器630与存储器670和存储器680之间传输存储器流量的异构存储器信道638。存储器670和存储器680中的每一者存储由客户端610访问的数据。在一些实施方案中,系统600的部件是集成电路(IC)上的单独管芯,诸如片上系统(SOC)。在其他实施方案中,部件是系统级封装(SiP)或多芯片模块(MCM)中的单独管芯。为了便于说明,未示出电源控制器、中断控制器、网络链路接口等。
在各种实施方案中,存储器总线650利用双向共享总线结构。在各种实施方案中,存储器670和存储器680使用不同的数据存储技术,并且因此,存储器670具有与存储器680的访问等待时间相差至少阈值时间量的访问等待时间。在各种实施方案中,存储器670和存储器680中的一者或多者由客户端610用作系统存储器。
在一个实施方案中,当存储器670和存储器680中的一者是多种类型的DRAM中的一种时,用于异构存储器信道638与存储器控制器630之间的相应接口的协议的一个实例是双数据速率(DDR)类型的协议。所述协议确定用于信息传送的值,诸如每时钟周期的数据传送次数、信号电压电平、信号定时、信号和时钟相位以及时钟频率。协议实例包括DDR2 SDRAM、DDR3 SDRAM、GDDR4(图形双数据速率,第4版)SDRAM、GDDR5 SDRAM、GDDR6、HBM2等。存储器控制器630包括用于接口连接到异构存储器信道638和其他存储器信道(未示出)并遵循对应协议的控制电路。
尽管示出单个存储器控制器630,但是在其他实施方案中,在计算系统600中使用另一数量的存储器控制器。如图所示,存储器控制器630包括用于对经由通信织构620从客户端610接收的存储器访问请求进行排队的请求队列632。存储器控制器630还具有用于存储从存储器670和存储器680接收的响应的响应队列634。在一个实施方案中,请求队列632包括用于存储存储器读取请求的用于存储器670和存储器680中的每一者的单独读取队列。另外,请求队列632包括用于存储存储器写入请求的用于存储器670和存储器680中的每一者的单独写入队列。在一些实施方案中,当存储器670和存储器680中的一者或多者包括提供未命中状态作为对访问的响应的数据存储技术时,存储器控制器630还包括未命中队列639。在一个实施方案中,存储器670和存储器680中的一者是提供未命中状态响应的NVDIMM-P。
在一些实施方案中,请求队列632包括用于存储所接收存储器访问请求的一个或多个队列,以及用于存储从所接收请求转换并从一个或多个队列中选择的所调度存储器访问命令的单独队列。调度器636包括用于选择存储在请求队列632中的存储器访问命令以乱序发射给存储器670和存储器680的控制逻辑。因此,存储器控制器630支持存储器访问命令到存储器670和存储器680的乱序发射。
在各种实施方案中,存储器控制器130中的调度器636基于以下来调度所存储的存储器访问命令的发射:服务质量(QoS)或其他优先级信息、年限、进程或线程标识符(ID)、自向存储器670布发存储器访问命令以来的时间量、自向存储器680发射存储器访问命令以来的时间量,以及与其他所存储请求的关系(诸如以相同的存储器信道为目标、以相同的等级为目标、以相同的存储体为目标和/或以相同的页面为目标)。在一些实施方案中,调度器636给标准中的每一者分配给定权重并执行加权和。选择具有最大和的存储器访问命令或状态访问命令以用于发射。
在各种实施方案中,通信织构620在客户端610与存储器控制器630之间来回传输流量,并且包括用于支持相应通信协议的接口。在一些实施方案中,通信织构620包括至少用于存储请求和响应的队列、用于在跨内部网络发送请求之前在所接收请求之间进行仲裁的选择逻辑、用于构建分组并对其进行解码的逻辑以及用于为分组选择路线的逻辑。
在所示实施方案中,客户端610包括中央处理单元(CPU)612、图形处理单元(GPU)614和集线器616。集线器616用于与多媒体引擎618通信。CPU 612、GPU 614和多媒体引擎618是能够处理应用程序的计算资源的实例。尽管未示出,但是在其他实施方案中,客户端610中包括其他类型的计算资源。在一些实施方案中,CPU 612中的一个或多个处理器核心中的每一个包括用于根据给定的所选择指令集架构(ISA)来执行指令的电路。在各种实施方案中,CPU 612中的处理器核心中的每一个包括用于处理给定ISA的指令的超标量多线程微架构。
在一个实施方案中,GPU 614包括具有大量并行执行通道的高并行数据微架构。在一个实施方案中,微架构针对并行执行通道使用单指令多数据(SIMD)流水线。多媒体引擎618包括用于处理多媒体应用程序的音频数据和视觉数据的处理器。在一些实施方案中,计算系统600的地址空间在至少CPU 612、GPU 614和集线器616以及一个或多个其他部件(诸如输入/输出(I/O)外围设备(未示出))与其他类型的计算资源之间划分。维持存储器映射以用于确定哪些地址被映射到哪个部件,并且因此确定应将对特定地址的存储器请求路由到CPU 612、GPU 614和集线器616中的哪一者。
在各种实施方案中,存储器670和存储器680中的一者或多者通过I/O控制器和总线660以及存储器总线650以来自磁盘存储器662的数据填充。具有所请求块的对应高速缓存填充线从存储器670和存储器680中的一一者或多者输送到客户端610中的高速缓存存储器子系统中的对应一个,以便完成原始的存储器访问请求。高速缓存填充线放置在一个或多个层级的高速缓存中。在一个实施方案中,磁盘存储器662提供对数据的非易失性二级存储。在一个实施方案中,磁盘存储器662包括一个或多个硬盘驱动器(HDD)。在其他实施方案中,磁盘存储器662包括固态磁盘(SSD)。
参考图7,示出存储器控制器700的一个实施方案的一般化框图。在所示实施方案中,存储器控制器700包括:经由通信织构到客户端的接口710;用于存储所接收存储器访问请求和所接收响应的队列720;控制单元750;以及经由存储器数据总线和异构存储器信道到多个存储器设备(它们各自使用不同的存储器技术)的接口780。接口710、780和782中的每一者都支持相应的通信协议。在一个实施方案中,接口780是到存储器命令总线的接口,用于向存储器设备发送对应于经由接口710接收的存储器请求的存储器访问命令,所述存储器设备包括第一存储器类型的数据存储技术。在一个实施方案中,接口782是到存储器数据总线的接口,用于在存储器控制器700与另一个存储器设备之间传输数据,所述另一个存储器设备包括不同于第一存储器类型的第二存储器类型的数据存储技术。在各种实施方案中,第一存储器类型的访问等待时间与第二存储器类型的访问等待时间相差至少阈值时间量。
在所示实施方案中,队列720包括请求队列730、响应队列740和未命中队列742。在一个实施方案中,队列720包括用于存储以第一存储器类型为目标的所接收读取请求的第一读取队列732,以及用于存储以第二存储器类型为目标的所接收读取请求的第二读取队列734。尽管示出两个读取队列来接收以两种不同存储器类型为目标的读取请求,但是在其他实施方案中,可使用另一数量的读取队列来接收以另一数量的不同存储器类型为目标的读取请求。另外,队列720包括用于存储以第一存储器类型为目标的所接收写入请求的第一写入队列736,以及用于存储以第二存储器类型为目标的所接收写入请求的第二写入队列738。在一些实施方案中,当第一存储器类型和第二存储器类型中的一者或多者包括提供未命中状态作为对访问的响应的数据存储技术时,队列720还包括未命中队列742。在一个实施方案中,第一存储器类型和第二存储器类型中的一者是提供未命中状态响应的NVDIMM-P。在一个实施方案中,队列720包括用于存储从队列732-738中的一者或多者或统一队列(如果使用统一队列的话)中选择的所调度存储器访问请求的队列739。
在一些实施方案中,读取调度器752包括用于从第一读取队列732中乱序选择读取请求以及用于从第二读取队列734中乱序选择读取请求的仲裁逻辑。在一个实施方案中,当相应请求可供用于在给定的时钟周期中从第一读取队列732或第二读取队列734进行调度时,读取调度器752从第一读取队列732或第二读取队列734中选择请求。在一些实施方案中,读取调度器752基于以下来调度读取请求以乱序发射给第一存储器类型和第二存储器类型中的一者:服务质量(QoS)或其他优先级信息、年限、进程或线程标识符(ID),以及与其他所存储请求的关系(诸如以相同的存储器信道为目标、以相同的等级为目标、以相同的存储体为目标和/或以相同的页面为目标)。
为了避免存储器数据总线上的数据冲突而不管第一存储器类型和第二存储器类型的多个确定性访问等待时间,在一个实施方案中,读取调度器752确定存储器数据总线可用的下一给定时间点。在一些实施方案中,按时钟周期测量时间点。读取调度器752确定是否有足够的时间调度对应于存储在第一读取队列732中的所选择读取请求的第一存储器访问命令以在给定时间点提供响应数据。另外,读取调度器752还确定是否有足够的时间调度对应于存储在第二读取队列734中的所选择读取请求的第二存储器访问命令以在给定时间点提供响应数据。换句话说,读取调度器752确定是否可调度由第一读取队列732或第二读取队列734接收的新存储器访问命令以用于发射给第一存储器设备或第二存储器设备,使得将在给定时间点在存储器数据总线上接收对新存储器访问命令的响应。在各种实施方案中,给定时间点是其中存储器数据总线未被调度以使数据在存储器数据总线上驱动并且尚未被考虑用于调度的下一可用时间点。
在一些实施方案中,尽管第一存储器类型和第二存储器类型中的一者或多者的访问等待时间是非确定性的,但是响应具有确定性等待时间。在确定性等待时间之后,将响应与指明响应中是否包括有效数据的指示一起返回。如果响应中不包括有效数据,则稍后尝试重试。因此,将存储器访问命令存储在未命中队列742中以供稍后重试。如早前所述,有时与存储器访问命令一起另外使用其他命令。这些其他命令也将等待时间添加到存储器访问命令的等待时间。
如果有足够的时间发射第一访问命令和第二访问命令中的至少一者以在给定时间点在存储器数据总线上提供响应数据,则读取调度器752选择第一存储器访问命令和第二存储器访问命令中的一者。调度器752可使用早前描述的标准,诸如优先级别、年限等。另外,可使用加权值。在一个实施方案中,读取调度器752在经由异构存储器信道将所选择访问命令发送给对应存储器类型之前将所选择访问命令放置在队列739中。为了确定是否可调度存储在第一读取队列732或第二读取队列734中的任一者中的新未决存储器访问命令以用于在给定时间点发射,在一个实施方案中,读取调度器752确定新存储器访问命令的响应等待时间为N个时钟周期,其中N为整数。读取调度器752标识在给定时间点之前对应于N个时钟周期的较早时间点,并且确定存储器命令总线在较早时间点是否可用。
如果读取调度器752确定有足够的时间调度以上新存储器访问命令,则读取调度器752调度新存储器访问命令以用于在较早时间点发射,并存储所述存储器数据总线在给定时间点不可用的指示。在一些实施方案中,位向量存储在寄存器中以指示哪些时间点存储器数据总线可用以及哪些时间点存储器数据总线不可用。在一个实施方案中,使用寄存器存储指明哪些时间点尚未被考虑用于调度以及哪些时间点已被考虑用于调度的指示。在各种实施方案中,可使用这些所存储指示来确定用于将来调度命令以用于发射的其他给定时间点。
在一些实施方案中,为了避免存储器数据总线上的数据冲突而不管第一存储器类型和第二存储器类型的多个确定性访问等待时间,与最初确定存储器数据总线可用的下一给定时间点对比,读取调度器752确定存储器命令总线可用的下一时间点。同样,在一些实施方案中,按时钟周期测量时间点。在一些实施方案中,读取调度器752通过将相应等待时间添加到存储器命令总线可用的下一时间点来确定存储在第一读取队列732和第二读取队列734中的每种不同类型的未决存储器访问命令的相应给定时间点。
为了确定是否可调度存储在第一读取队列732或第二读取队列734中的任一者中的新未决存储器访问命令以用于在存储器命令总线可用的下一时间点发射,在一个实施方案中,读取调度器752确定新存储器访问命令的响应等待时间为N个时钟周期,其中N为整数。读取调度器752标识在存储器命令总线可用的时间点之后对应于N个时钟周期的较后给定时间点。此后,读取调度器752确定存储器数据总线在较后给定时间点是否可用。
在一些实施方案中,读取调度器752使用如早前所述所存储的位向量来确定针对存储在第一读取队列732和第二读取队列734中的一个或多个未决存储器访问命令中的每一个的相应的一个或多个给定时间点中的每一个,存储器数据总线是否可用。如果存储器数据总线在相应给定时间点期间仅可供用于单个未决存储器访问命令,则读取调度器752在存储器命令总线可用的下一时间点调度所述单个未决存储器访问命令。如果存储器数据总线在相应给定时间点期间可供用于多个未决存储器访问命令,则读取调度器752基于早前所述的标准(诸如优先级别、年限等)选择未决存储器访问命令中的一个来发射。读取调度器752在存储器命令总线可用的下一时间点调度所选择未决存储器访问命令。
写入调度器754包括与读取调度器752所使用相似的用于第一写入队列736和第二写入队列738的选择逻辑。在各种实施方案中,写入调度器754还考虑由在共享存储器数据总线上驱动的数据造成的数据冲突。写入调度器754也使用读取调度器752所使用的实现决策算法的控制逻辑。在一个实施方案中,响应调度器756包括用于基于优先级向客户端乱序发射响应的类似逻辑。在一些实施方案中,所接收响应数据包括响应调度器756用来标识存储在第一读取队列732或第二读取队列734中的哪个命令与响应数据相关联的标签或其他标识符。在其他实施方案中,响应调度器756使用存储器数据总线上的请求数据的抵达时序来标识哪个命令与响应数据相关联。因此,尽管请求数据脱离对应于命令的发射的次序抵达,但是响应调度器756能够跟踪哪个所接收数据属于哪个命令。
在一些实施方案中,当读取调度器752调度给定命令来发射时,响应调度器756确定调度所请求读取数据以在共享存储器数据总线上抵达的给定时间点。在一个实施方案中,响应调度器756将给定命令的等待时间添加到读取调度器752调度来发射给定命令的时间点。在一些实施方案中,响应调度器756生成标识符。在一些实施方案中,标识符是存储对应于给定命令的信息的请求队列中的条目的指示。在其他实施方案中,标识符是线程标识符和对应于给定命令的存储器请求的目标地址的一部分中的一者或多者的组合。响应调度器756存储标识符与给定时间点的关联。在一个实施方案中,使用表。因此,响应调度器756能够基于给定时间点通过共享存储器数据总线上的抵达所请求读取数据而不是基于插入在给定命令中的标签或通过与抵达所请求读取数据相关联的分组来标识给定命令。
在一些实施方案中,控制寄存器770存储当前模式的指示。例如,片外存储器数据总线和存储器设备在给定时间支持读取模式或写入模式。因此,流量在当前模式期间在给定单个方向上路由,并且当在数据总线周转等待时间之后改变当前模式时改变方向。在各种实施方案中,控制寄存器770存储要在读取模式期间发送的读取请求的阈值数量(读取突发长度)。在一些实施方案中,控制寄存器770存储读取调度器752和写入调度器754中用于选择存储在队列732-738中的请求来发射的选择算法所使用的标准的权重。
参考图8,示出用于调度存储器请求以用于发射给两种不同的存储器类型的方法800的一个实施方案。出于讨论的目的,按顺序次序示出此实施方案中(以及图9至图12中)的步骤。然而,应注意,在所描述方法的各种实施方案中,所描述元素中的一个或多个同时地执行,以与所示不同的次序执行,或者完全省略掉。也可根据需要执行其他附加元素。本文描述的各种系统或装置中的任一者都被配置来实现方法800。
节点内的一个或多个客户端执行计算机程序或软件应用程序。计算资源确定给定存储器访问请求在一个或多个客户端中的给定客户端内的高速缓存存储器子系统内未命中。客户端经由存储器控制器向由两个不同存储器实现的系统存储器发送存储器访问请求,所述存储器控制器具有连接到两个不同存储器中的每一个的异构存储器信道。第一类型的存储器的一个或多个访问等待时间与第二类型的存储器的一个或多个访问等待时间之间的差超过阈值时间量。在接收到对连接到给定存储器信道的第一类型的存储器的存储器请求时,存储所述存储器请求(框802)。在接收到对连接到给定存储器信道的第二类型的存储器的存储器请求时,存储所述存储器请求(框804)。
至少基于存储器请求的优先级和目标,标记对第一类型的存储器的存储器请求以乱序发射(框806)。至少基于存储器请求的优先级和目标,标记对第二类型的存储器的存储器请求以乱序发射(框808)。因此,存储器控制器支持针对第一存储器和第二存储器中的每一者的乱序发射。以在给定时间点提供响应数据的方式调度存储器请求以用于发射(框810)。例如,以混合方式调度存储器请求而在共享存储器数据总线上没有数据冲突而不管不同的访问等待时间。
在各种实施方案中,存储器控制器中的调度器或其他控制逻辑确定是否有两个未决存储器访问命令,诸如用于第一存储器类型的第一命令和用于第二存储器类型的第二命令。调度器确定是否可发射第一命令和第二命令中的每一者而不在共享存储器数据总线上造成数据冲突。例如,除了第一类型的存储器和第二类型的存储器中的每一者的访问等待时间之外,基于用于发射第一命令和第二命令中的所选择命令的时间点,存储器控制器跟踪调度读取响应数据或写入数据以在共享存储器数据总线上抵达的时间点。在一些实施方案中,按时钟周期测量时间点。
如果选择第一命令和第二命令中的任一者不会调度共享存储器数据总线上的数据冲突,则第一命令和第二命令中的每一者仍然是用于发射的候选者。在这种情况下,调度器基于仲裁逻辑从第一命令和第二命令中选择命令。在其他实施方案中,确定是发射第一命令还是第二命令开始于选择在共享存储器数据总线上驱动读取响应数据或写入数据的特定给定时间点。
现在转向图9,示出用于调度存储器请求以用于发射给两种不同的存储器类型的方法900的一个实施方案。标识在存储器数据总线上驱动读取响应数据的下一给定时间点(框902)。例如,在确定下一给定时间点时,考虑每个所发射的存储器访问命令和状态访问命令的访问等待时间和要返回的所请求数据的所调度量两者。在一些实施方案中,按时钟周期测量时间点。
如果针对给定时间点已经调度读取响应数据以抵达(条件框904的“是”分支),则方法900的控制流程返回到框902,在框902中标识下一给定时间点。例如,考虑当前所选择时钟周期之后的下一时钟周期。替代地,将一定计数添加到当前时钟周期,所述计数等于调度读取请求数据以从两个不同存储器中的一个抵达所消耗的给定时钟周期数。如果针对给定时间点未调度读取响应数据以抵达(条件框904的“否”分支),则确定是否有足够的时间调度用于第一存储器类型的存储器访问命令以在给定时间点提供响应数据(框906)。接下来,确定是否有足够的时间调度用于不同于第一存储器类型的第二存储器类型的存储器访问命令以在给定时间点提供响应数据(框908)。
在一些实施方案中,还确定是否有足够的时间调度用于第二存储器类型的状态访问命令以在给定时间点提供响应数据(框910)。在一些实施方案中,状态访问命令的访问等待时间与用于第二存储器类型的存储器访问命令的访问等待时间不同。从能够在给定时间点提供响应数据的候选命令中选择命令(框912)。在各种实施方案中,调度器基于早前所述的标准(诸如优先级别、年限等)选择下一存储器访问命令或状态访问命令来发射。调度所选择命令以用于在允许所选择命令在给定时间点提供响应数据的时间点发射(框914)。例如,在调度存储器访问命令和状态访问命令来发射时,具有异构存储器信道的存储器控制器的调度器考虑用于将所选择命令准备好来发射的可能的附加命令及其相应等待时间。
如上所述,方法900描述了避免存储器数据总线上的数据冲突而不管第一存储器类型和第二存储器类型的多个确定性访问等待时间的步骤。然而,如早前所述,在其他实施方案中,与最初确定存储器数据总线可用的下一给定时间点对比,具有异构存储器信道的存储器控制器的调度器确定存储器命令总线可用的下一时间点。在一些实施方案中,按时钟周期测量时间点。在一些实施方案中,调度器通过将相应等待时间添加到存储器命令总线可用的下一时间点来确定每种不同类型的未决存储器访问命令的相应给定时间点。
为了确定是否可调度新未决存储器访问命令以用于在存储器命令总线可用的下一时间点发射,在一个实施方案中,调度器确定新存储器访问命令的响应等待时间为N个时钟周期,其中N为整数。调度器标识在存储器命令总线可用的时间点之后对应于N个时钟周期的较后给定时间点。此后,调度器确定存储器数据总线在较后给定时间点是否可用。
如果存储器数据总线在相应给定时间点期间仅可供用于单个未决存储器访问命令,则调度器在存储器命令总线可用的下一时间点调度所述单个未决存储器访问命令。如果存储器数据总线在相应给定时间点期间可供用于多个未决存储器访问命令,则调度器基于早前所述的标准(诸如优先级别、年限等)选择未决存储器访问命令中的一个来发射。调度器在存储器命令总线可用的下一时间点调度所选择未决存储器访问命令。
以下针对方法1000-1200的描述描述了用于最初确定存储器数据总线可用的下一给定时间点、随后确定调度存储器访问命令以在存储器命令总线上发射的较早时间点的步骤。然而,在各种其他实施方案中,如上所述,调度器确定存储器命令总线可用的下一时间点、随后确定调度读取响应数据以在存储器数据总线上抵达而无冲突的较后时间点。尽管方法900-1200中的步骤是关于读取访问命令描述的,但是在其他实施方案中,针对写入访问命令使用类似的逻辑和步骤,其中写入数据设置在共享存储器数据总线上,并且可能与正在共享存储器数据总线上驱动的读取响应数据或其他写入访问命令的其他写入数据发生数据冲突。
现在转向图10,示出用于调度存储器请求以用于发射给两种不同存储器类型的方法1000的一个实施方案。为了选择访问命令并调度访问命令以用于在允许所选择访问命令在目标给定时间点提供响应数据的时间点发射,评估特定时序值。在一些实施方案中,在(图9的)方法900的框914之后执行以下步骤。确定用于命令发射的给定时间点与用于第一存储器类型的所调度第一访问命令的最近时间点之间的第一时间量(框1002)。将为用于第一存储器类型的访问命令的可能的下一次发射做准备的任何必要的附加命令的等待时间添加到用于第一存储器类型的访问命令的第一等待时间(框1004)。针对用于第二存储器类型的访问命令执行类似的步骤。例如,确定给定时间点与用于第二存储器类型的所调度第二访问命令的最近时间点之间的第二时间量(框1006)。将为用于第二存储器类型的访问命令的可能的下一次发射做准备的任何必要的附加命令的等待时间添加到用于第二存储器类型的访问命令的第二等待时间(框1008)。
确定给定时间点与用于第二存储器类型的所调度第三访问命令的最近时间点之间的第三时间量(框1010)。将为用于第二存储器类型的第三访问命令的可能的下一次发射做准备的任何必要的附加命令的等待时间添加到用于第二存储器类型的第三访问命令的第三等待时间(框1012)。将第一时间量、第二时间量和第三时间量中的每一者与第一等待时间、第二等待时间和第三等待时间中的相应一者进行比较(框1014)。
现在转向图11,示出用于调度存储器请求以用于发射给两种不同存储器类型的方法1100的一个实施方案。为了选择访问命令并调度访问命令以用于在允许所选择访问命令在目标给定时间点提供响应数据的时间点发射,对时序值进行特定比较。在一些实施方案中,在(图10的)方法1000的框1014之后执行以下步骤。
如果第一等待时间不大于第一时间量(条件框1102的“否”分支),则将用于第一存储器类型的第一存储器访问命令插入用于发射的候选命令集中(框1104)。换句话说,如果用于第一存储器类型的存储器访问命令和用于准备存储器访问命令以用于发射的任何附加命令的累积等待时间小于或等于用于第一存储器类型的任何命令的最后发射与给定时间点之间的时间量,则有足够的时间发射用于第一存储器类型的存储器访问命令。例如,再次参考(图5的)时序图500,在于CC 8处发射“READ C”与在CC 4之前完成发射“READ B”之间需要至少四个时钟周期。
如果第一等待时间大于第一时间量(条件框1102的“是”分支),则将用于第一存储器类型的第一存储器访问命令从考虑作为用于发射的候选命令中移除(框1106)。针对用于第二存储器类型的第二存储器访问命令执行类似的步骤。例如,如果第二等待时间不大于第二时间量(条件框1108的“否”分支),则将用于第二存储器类型的第二存储器访问命令插入用于发射的候选命令集中(框1110)。否则,如果第二等待时间大于第二时间量(条件框1108的“否”分支),则将用于第二存储器类型的第二存储器访问命令从用于发射的候选命令集中移除(框1112)。
针对用于第二存储器类型的第三存储器访问命令执行类似的步骤。然而,在一些实施方案中,检查是否已经针对对应的原始存储器访问命令返回了所请求读取数据。再次简要地参考(图4的)时序图400,由于未针对原始事务读取命令“READ B”返回所请求读取数据,发射读取命令“SREAD B”。在CC 7处,所请求读取数据被调度以抵达,但它并未从第二存储器类型返回。然而,由于在CC 9处的所调度给定时间点返回所请求读取数据,针对读取命令“READ D”没有发射后续读取命令。在一些实施方案中,存储器控制器在另一个信道或链路接口上接收指明读取访问命令的响应数据现在是否可供用于第一存储器类型和第二存储器类型中的特定存储器类型的指示。在其他实施方案中,存储器控制器发射推测读取命令以确定响应数据是否就绪。
如果第三等待时间不大于第三时间量(条件框1114的“否”分支),并且确定对应响应数据还未返回(条件框1116的“否”分支),则将用于第二存储器类型的第三存储器访问命令插入用于发射的候选命令集中(框1118)。如果第三等待时间不大于第三时间量(条件框1114的“否”分支),并且确定对应响应数据已返回(条件框1116的“是”分支),则将用于第二存储器类型的第三存储器访问命令从用于发射的候选命令集中移除(框1120)。同样地,如果第三等待时间大于第三时间量(条件框1114的“是”分支),则将用于第二存储器类型的第三存储器访问命令从用于发射的候选命令集中移除(框1120)。
现在转向图12,示出用于调度存储器请求以用于发射给两种不同的存储器类型的方法1200的一个实施方案。为了选择访问命令并调度访问命令以用于在允许所选择访问命令在目标给定时间点提供响应数据的时间点发射,在合格的候选命令集之间进行仲裁。在一些实施方案中,在(图11的)方法1100的步骤之后执行以下步骤。给用于从用于发射的候选命令集中选择命令的标准分配权重(框1202)。
如早前所述,标准包括以下中的一者或多者:QoS或其他优先级信息、年限、进程或线程标识符(ID)、自向第一存储器类型发射存储器访问命令以来的时间量以及自向第二存储器类型发射存储器访问命令或状态访问命令以来的时间量。在一些实施方案中,可编程控制和状态寄存器存储分配给所选择标准的权重。确定用于发射的候选命令集(框1204)。在一个实施方案中,命令是在先前方法900-1100的步骤之后合格的。如果所述集包含单个命令(条件框1206的“是”分支),则选择所述单个命令以用于发射(框1208)。
如果所述集包含多个命令(条件框1206的“否”分支),则基于加权标准从多个候选者之中选择单个命令(框1210)。如早前所述,在一些实施方案中,调度器给标准中的每一者分配给定权重并执行加权和。选择具有最大和的存储器访问命令或状态访问命令以用于发射。从调度读取响应数据以抵达的时间点减去包括为所选择命令的发射做准备的任何必要的附加命令的所选择命令的总等待时间(框1212)。调度附加命令和所选择访问命令以在通过执行减法找到的所确定时间点发射(框1214)。
在各种实施方案中,使用软件应用程序的程序指令来实现先前所述的方法和/或机制。程序指令以高级编程语言(诸如C)描述硬件的行为。替代地,使用硬件设计语言(HDL),诸如Verilog。程序指令存储在非暂时性计机算可读存储介质上。多种类型的存储介质可用。存储介质可由计算系统在使用期间访问以向计算系统提供程序指令和随附数据以用于程序执行。计算系统包括至少一个或多个存储器和被配置来执行程序指令的一个或多个处理器。
应当强调的是,上述实施方案仅是实现方式的非限制性实例。一旦完全理解以上公开内容,许多变化和修改对于本领域技术人员而言将变得明显。以下权利要求意图解释为包含所有此类变化和修改。
Claims (20)
1.一种存储器控制器,其包括:
第一接口,所述第一接口用于接收存储器请求;
第二接口,所述第二接口包括:
命令总线,所述命令总线用于将对应于所述存储器请求的存储器访问命令发送到第一存储器设备或不同于所述第一存储器设备的第二存储器设备;以及
数据总线,所述数据总线用于在所述存储器控制器与所述第一存储器设备和所述第二存储器设备两者之间传输数据;和
控制逻辑,其中响应于确定所述数据总线被调度为在第一时间点可用,所述控制逻辑被配置来确定是否能够调度新存储器访问命令来发射给所述第一存储器设备和所述第二存储器设备中的一者,使得将在所述第一时间点在所述数据总线上接收到对所述新存储器访问命令的响应;
其中所述第一时间点早于对发射给所述第一存储器设备和所述第二存储器设备中的另一者的未完成的存储器访问命令的响应将在所述数据总线上被接收的第二时间点。
2.如权利要求1所述的存储器控制器,其中所述第一时间点是其中所述数据总线未被调度以使数据在所述数据总线上驱动并且尚未被考虑用于调度的下一可用时间点。
3.如权利要求1所述的存储器控制器,其中为了确定是否能够调度所述新存储器访问命令来发射,所述控制逻辑被配置来:
确定所述新存储器访问命令的响应等待时间为N个时钟周期,其中N为整数;并且
标识在所述第一时间点之前对应于N个时钟周期的第三时间点;并且
确定所述命令总线在所述第三时间点是否可用。
4.如权利要求3所述的存储器控制器,其中响应于确定存在具有所述响应等待时间的两个或更多个未决存储器访问命令,所述控制逻辑被配置来调度所述两个或更多个未决存储器访问命令中的一个来在所述第三时间点发射。
5.如权利要求3所述的存储器控制器,其中响应于确定有足够的时间来调度所述新存储器访问命令,所述控制逻辑被配置来:
调度所述新存储器访问命令来在所述第三时间点发射;并且
存储所述数据总线在所述第一时间点不可用的指示。
6.如权利要求3所述的存储器控制器,其中响应于确定存在具有所述响应等待时间的两个或更多个未决存储器访问命令,所述控制逻辑被配置来基于以下中的一者或多者来在所述第三时间点调度所述两个或更多个未决存储器访问命令中的一个:
所述第一时间点与存储器访问命令被发射到所述第一存储器设备的最近时间点之间的第一时间量;以及
所述第一时间点与存储器访问命令被发射到所述第二存储器设备的最近时间点之间的第二时间量。
7. 如权利要求6所述的存储器控制器,其中所述控制逻辑进一步被配置来基于以下中的一者或多者来选择所述两个或更多个未决存储器访问命令中的一个来发射:
第一存储器访问命令和第二存储器访问命令的优先级别;以及
所述第一存储器访问命令和所述第二存储器访问命令的年限。
8.如权利要求6所述的存储器控制器,其中响应于确定具有所述响应等待时间的给定存储器访问命令未决,所述控制逻辑进一步被配置来:
确定所述给定存储器访问命令是以与访问所述第二存储器设备的较早发射的存储器访问命令相同的地址为目标的状态访问命令;并且
确定所述较早发射的存储器访问命令的读取响应数据未抵达。
9.一种方法,其包括:
由第一接口接收存储器请求;
由第二接口经由命令总线将对应于所述存储器请求的存储器访问命令发送到第一存储器设备或不同于所述第一存储器设备的第二存储器设备;
由所述第二接口经由数据总线在存储器控制器与所述第一存储器设备和所述第二存储器设备两者之间传输数据;
响应于确定所述数据总线被调度为在第一时间点可用,确定是否能够调度新存储器访问命令来发射给所述第一存储器设备和所述第二存储器设备中的一者,使得将在所述第一时间点在所述数据总线上接收到对所述新存储器访问命令的响应;
其中所述第一时间点早于对发射给所述第一存储器设备和所述第二存储器设备中的另一者的未完成的存储器访问命令的响应将在所述数据总线上被接收的第二时间点。
10.如权利要求9所述的方法,其中所述第一时间点是其中所述数据总线未被调度以使数据在所述数据总线上驱动并且尚未被考虑用于调度的下一可用时间点。
11.如权利要求9所述的方法,其中为了确定是否能够调度所述新存储器访问命令来发射,所述方法还包括:
确定所述新存储器访问命令的响应等待时间为N个时钟周期,其中N为整数;以及
标识在所述第一时间点之前对应于N个时钟周期的第三时间点;以及
确定所述命令总线在所述第三时间点是否可用。
12.如权利要求11所述的方法,其中响应于确定存在具有所述响应等待时间的两个或更多个未决存储器访问命令,所述方法还包括:调度所述两个或更多个未决存储器访问命令中的一个来在所述第三时间点发射。
13.如权利要求11所述的方法,其中响应于确定有足够的时间来调度所述新存储器访问命令,所述方法还包括:
调度所述新存储器访问命令来在所述第三时间点发射;以及
存储所述数据总线在所述第一时间点不可用的指示。
14.如权利要求11所述的方法,其中响应于确定存在具有所述响应等待时间的两个或更多个未决存储器访问命令,所述方法还包括:基于以下中的一者或多者来在所述第三时间点调度所述两个或更多个未决存储器访问命令中的一个:
所述第一时间点与存储器访问命令被发射到所述第一存储器设备的最近时间点之间的第一时间量;以及
所述第一时间点与存储器访问命令被发射到所述第二存储器设备的最近时间点之间的第二时间量。
15.如权利要求14所述的方法,其中所述方法还包括:基于以下中的一者或多者来选择所述两个或更多个未决存储器访问命令中的一个来发射:
第一存储器访问命令和第二存储器访问命令的优先级别;以及
所述第一存储器访问命令和所述第二存储器访问命令的年限。
16.如权利要求14所述的方法,其中响应于确定具有所述响应等待时间的给定存储器访问命令未决,所述方法还包括:
确定所述给定存储器访问命令是以与访问所述第二存储器设备的较早发射的存储器访问命令相同的地址为目标的状态访问命令;以及
确定所述较早发射的存储器访问命令的读取响应数据未抵达。
17.一种计算系统,其包括:
第一存储器设备;
第二存储器设备,所述第二存储器设备不同于所述第一存储器设备;
处理器,所述处理器被配置来生成对存储在所述第一存储器设备或所述第二存储器设备中的数据的存储器访问请求;
通信织构,所述通信织构被配置来传输数据;以及
存储器控制器,所述存储器控制器通过所述通信织构耦接到所述处理器,并且所述存储器控制器耦接到所述第一存储器设备和所述第二存储器设备中的每一者,其中所述存储器控制器被配置来:
经由命令总线将对应于所述存储器访问请求的存储器访问命令发送到所述第一存储器设备或所述第二存储器设备;
经由数据总线在所述存储器控制器与所述第一存储器设备和所述第二存储器设备两者之间传输数据;
响应于确定所述数据总线被调度为在第一时间点可用,确定是否能够调度新存储器访问命令来发射给所述第一存储器设备和所述第二存储器设备中的一者,使得将在所述第一时间点在所述数据总线上接收到对所述新存储器访问命令的响应;
其中所述第一时间点早于对发射给所述第一存储器设备和所述第二存储器设备中的另一者的未完成的存储器访问命令的响应将在所述数据总线上被接收的第二时间点。
18.如权利要求17所述的计算系统,其中所述第一时间点是其中所述数据总线未被调度以使数据在所述数据总线上驱动并且尚未被考虑用于调度的下一可用时间点。
19.如权利要求17所述的计算系统,其中为了确定是否能够调度所述新存储器访问命令来在所述第一时间点发射,所述存储器控制器被配置来:
确定所述新存储器访问命令的响应等待时间为N个时钟周期,其中N为整数;并且
标识在所述第一时间点之前对应于N个时钟周期的第三时间点;并且
确定所述命令总线在所述第三时间点是否可用。
20.如权利要求19所述的计算系统,其中响应于确定有足够的时间来调度所述新存储器访问命令,所述存储器控制器被配置来:
调度所述新存储器访问命令来在所述第三时间点发射;并且
存储所述数据总线在所述第一时间点不可用的指示。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/853,090 | 2017-12-22 | ||
US15/853,090 US10296230B1 (en) | 2017-12-22 | 2017-12-22 | Scheduling memory requests with non-uniform latencies |
PCT/US2018/051858 WO2019125564A1 (en) | 2017-12-22 | 2018-09-20 | Scheduling memory requests with non-uniform latencies |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111742305A CN111742305A (zh) | 2020-10-02 |
CN111742305B true CN111742305B (zh) | 2024-12-31 |
Family
ID=63794709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880089656.1A Active CN111742305B (zh) | 2017-12-22 | 2018-09-20 | 调度具有不统一等待时间的存储器请求 |
Country Status (6)
Country | Link |
---|---|
US (2) | US10296230B1 (zh) |
EP (1) | EP3729281B1 (zh) |
JP (1) | JP7063999B2 (zh) |
KR (1) | KR102442081B1 (zh) |
CN (1) | CN111742305B (zh) |
WO (1) | WO2019125564A1 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11422707B2 (en) | 2017-12-21 | 2022-08-23 | Advanced Micro Devices, Inc. | Scheduling memory requests for a ganged memory device |
US10296230B1 (en) | 2017-12-22 | 2019-05-21 | Advanced Micro Devices, Inc. | Scheduling memory requests with non-uniform latencies |
US10545701B1 (en) * | 2018-08-17 | 2020-01-28 | Apple Inc. | Memory arbitration techniques based on latency tolerance |
US11048437B2 (en) * | 2019-02-28 | 2021-06-29 | Micron Technology, Inc. | Double threshold controlled scheduling of memory access commands |
US11537521B2 (en) * | 2019-06-05 | 2022-12-27 | Samsung Electronics Co., Ltd. | Non-volatile dual inline memory module (NVDIMM) for supporting dram cache mode and operation method of NVDIMM |
US11687244B2 (en) | 2019-10-24 | 2023-06-27 | Micron Technology, Inc. | Quality of service for memory devices using weighted memory access operation types |
US11237731B2 (en) | 2019-10-24 | 2022-02-01 | Micron Technology, Inc. | Quality of service for memory devices using suspend and resume of program and erase operations |
US11620053B2 (en) * | 2019-10-24 | 2023-04-04 | Micron Technology, Inc. | Quality of service for the multiple functions in memory devices |
US11262946B2 (en) * | 2019-11-25 | 2022-03-01 | Micron Technology, Inc. | Cache-based memory read commands |
US11455098B2 (en) | 2019-12-26 | 2022-09-27 | Micron Technology, Inc. | Host techniques for stacked memory systems |
US11561731B2 (en) | 2019-12-26 | 2023-01-24 | Micron Technology, Inc. | Truth table extension for stacked memory systems |
US11099786B2 (en) | 2019-12-30 | 2021-08-24 | Advanced Micro Devices, Inc. | Signaling for heterogeneous memory systems |
US11137941B2 (en) | 2019-12-30 | 2021-10-05 | Advanced Micro Devices, Inc. | Command replay for non-volatile dual inline memory modules |
US11531601B2 (en) | 2019-12-30 | 2022-12-20 | Advanced Micro Devices, Inc. | Error recovery for non-volatile memory modules |
US20230221866A1 (en) * | 2020-06-10 | 2023-07-13 | Arm Limited | An apparatus and method for handling memory access requests |
CN119271429A (zh) * | 2021-03-12 | 2025-01-07 | 华为技术有限公司 | 实现内存共享控制的方法、设备、计算机设备和系统 |
JP7574728B2 (ja) * | 2021-04-27 | 2024-10-29 | 富士通株式会社 | 制御装置及び制御方法 |
US12008265B2 (en) * | 2021-05-05 | 2024-06-11 | Micron Technology, Inc. | Quality-of-service information for a multi-memory system |
US11556472B1 (en) | 2021-08-04 | 2023-01-17 | International Business Machines Corporation | Data processing system having masters that adapt to agents with differing retry behaviors |
KR20230046356A (ko) * | 2021-09-29 | 2023-04-06 | 삼성전자주식회사 | 메모리 장치, 메모리 장치의 동작 방법, 그리고 메모리 장치를 포함하는 전자 장치 |
US12079144B1 (en) * | 2022-09-21 | 2024-09-03 | Apple Inc. | Arbitration sub-queues for a memory circuit |
KR20240162226A (ko) * | 2023-05-08 | 2024-11-15 | 삼성전자주식회사 | 입출력 요청 스케줄링 방법 및 스토리지 장치 |
CN119045720A (zh) * | 2023-05-29 | 2024-11-29 | 华为技术有限公司 | 分配方法和电子设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US7418540B2 (en) * | 2004-04-28 | 2008-08-26 | Intel Corporation | Memory controller with command queue look-ahead |
US7373471B2 (en) | 2005-02-09 | 2008-05-13 | International Business Machines Corporation | Executing background writes to idle DIMMs |
US9262326B2 (en) | 2006-08-14 | 2016-02-16 | Qualcomm Incorporated | Method and apparatus to enable the cooperative signaling of a shared bus interrupt in a multi-rank memory subsystem |
US7660952B2 (en) * | 2007-03-01 | 2010-02-09 | International Business Machines Corporation | Data bus bandwidth scheduling in an FBDIMM memory system operating in variable latency mode |
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 |
US9563369B2 (en) * | 2014-04-14 | 2017-02-07 | Microsoft Technology Licensing, Llc | Fine-grained bandwidth provisioning in a memory controller |
US10810144B2 (en) * | 2016-06-08 | 2020-10-20 | Samsung Electronics Co., Ltd. | System and method for operating a DRR-compatible asynchronous memory module |
US10679722B2 (en) * | 2016-08-26 | 2020-06-09 | Sandisk Technologies Llc | Storage system with several integrated components and method for use therewith |
US10296230B1 (en) | 2017-12-22 | 2019-05-21 | Advanced Micro Devices, Inc. | Scheduling memory requests with non-uniform latencies |
-
2017
- 2017-12-22 US US15/853,090 patent/US10296230B1/en active Active
-
2018
- 2018-09-20 JP JP2020534175A patent/JP7063999B2/ja active Active
- 2018-09-20 EP EP18783278.7A patent/EP3729281B1/en active Active
- 2018-09-20 CN CN201880089656.1A patent/CN111742305B/zh active Active
- 2018-09-20 US US16/959,503 patent/US12204754B2/en active Active
- 2018-09-20 WO PCT/US2018/051858 patent/WO2019125564A1/en unknown
- 2018-09-20 KR KR1020207021186A patent/KR102442081B1/ko active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
Also Published As
Publication number | Publication date |
---|---|
WO2019125564A1 (en) | 2019-06-27 |
JP2021507399A (ja) | 2021-02-22 |
US20210096750A1 (en) | 2021-04-01 |
US10296230B1 (en) | 2019-05-21 |
JP7063999B2 (ja) | 2022-05-09 |
KR20200099586A (ko) | 2020-08-24 |
EP3729281A1 (en) | 2020-10-28 |
KR102442081B1 (ko) | 2022-09-08 |
US12204754B2 (en) | 2025-01-21 |
CN111742305A (zh) | 2020-10-02 |
EP3729281B1 (en) | 2022-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111742305B (zh) | 调度具有不统一等待时间的存储器请求 | |
CN111684430B (zh) | 支持同一信道上对不统一等待时间的存储器类型的响应 | |
US12282439B2 (en) | Dynamic page state aware scheduling of read/write burst transactions | |
JP7257401B2 (ja) | バンク毎及び全てのバンクの動的リフレッシュ | |
CN111684427B (zh) | 高速缓存控制感知的存储器控制器 | |
US20190196996A1 (en) | Dynamically determining memory access burst length | |
CN111656322B (zh) | 针对联动存储器设备调度存储器请求 | |
US20220404978A1 (en) | Speculative hint-triggered activation of pages in memory | |
US8856459B1 (en) | Matrix for numerical comparison |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |