CN109478168B - 内存访问技术及计算机系统 - Google Patents
内存访问技术及计算机系统 Download PDFInfo
- Publication number
- CN109478168B CN109478168B CN201780043116.5A CN201780043116A CN109478168B CN 109478168 B CN109478168 B CN 109478168B CN 201780043116 A CN201780043116 A CN 201780043116A CN 109478168 B CN109478168 B CN 109478168B
- Authority
- CN
- China
- Prior art keywords
- data
- sub
- length
- memory controller
- controller
- 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
Images
Classifications
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- 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/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Systems (AREA)
- Memory System (AREA)
- Saccharide Compounds (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
一种内存访问技术及计算机系统(100),所述计算机系统(100)包括内存控制器(106)、介质控制器(110)以及与所述介质控制器(110)连接的非易失性内存NVM(112)。在接收所述内存控制器(106)发送的第一读命令之后,所述介质控制器(110)可以根据所述第一读命令中的第一地址从所述NVM(112)中读取第一数据。之后,所述介质控制器(110)能够根据所述内存控制器(106)发送的至少两个Send命令向所述内存控制器(106)返回固定长度的至少两个子数据块以及所述至少两个子数据块的元数据。其中,所述元数据中包含有用于指示对应的子数据块在所述第一数据中的偏移量的位置标识。所述内存控制器(106)根据所述至少两个子数据块的元数据中的位置标识将所述至少两个子数据块合并为所述第一数据。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种内存访问技术及计算机系统。
背景技术
非易失性双列直插式内存模块(non-volatile dual in-line memory module,NVDIMM)是一种计算机的随机存取存储器(random access memory,RAM)。NVDIMM上可以包括多个非易失性内存(non-volatile memory,NVM)芯片。NVDIMM能够在系统完全断电的时候依然保存完整的内存数据。可以理解的是,NVDIMM上的NVM芯片具体可以为非易失性随机存取存储器(non-volatile random access memory,NVRAM)。NVDIMM上的NVM可以包括相变存储器(phase change memory,PCM)、电阻性随机存取存储器(resistive random accessmemory,RRAM)、磁性随机存取存储器(magnetic random access memory,MRAM)、自旋扭矩转换磁性随机存取存储器(spin-transfer torque MRAM,STT MRAM)等等。NVDIMM采用NVDIMM-P协议与内存控制器通信。NVDIMM-P协议是兼容双倍速率(double data rate,DDR)协议的一个总线访问协议。
本领域技术人员可以知道,处理器通常会存在读取不同长度数据的读需求。因此,处理器可能向内存控制器发送用于读取不同长度数据的访存请求。例如,处理器可能根据需求向内存控制器发送读取64B(Byte)的访存请求或读取128B的访存请求。现有技术中,内存控制器通常向NVDIMM发送用于读取固定长度的数据的读命令。例如,在一种情况下,内存控制器可以向NVDIMM发送用于读取64B数据的读命令。在这种情况下,当内存控制器接收到处理器发送的用于读取128B数据的访存请求时,内存控制器需要将该访存请求拆分成两个64B的读命令,并通过两个读命令从NVDIMM读取处理器所需的128B的数据。这种处理方式会浪费命令总线的带宽,影响系统性能。在另一种情况下,内存控制器固定向NVDIMM发送用于读取128B数据的读命令。在这种情况下,当内存控制器接收到处理器发送的用于读取64B数据的访存请求时,内存控制器需要将该64B的访存请求变为128B的读命令,并向NVDIMM发送该128B的读命令。显然,这种方式会浪费数据总线的带宽。
发明内容
本申请中提供的一种内存访问技术及计算机系统,能够在不浪费总线带宽的基础上支持获取不同长度数据的读命令,提升系统性能。
第一方面,本申请提供了一种计算机系统。所述计算机系统包括内存控制器、介质控制器以及与所述介质控制器连接的非易失性内存NVM。所述NVM用于存储数据。所述内存控制器连接所述介质控制器。在所述内存控制器向所述介质控制器发送第一读命令之后,所述介质控制器可以根据所述第一读命令中的第一地址从所述NVM中读取所述第一数据。其中,所述第一读命令中携带有第一ID、所述第一地址以及第一长度,所述第一ID为所述第一读命令的标识,所述第一长度用于指示所述第一读命令待读取的第一数据的大小。所述内存控制器向所述介质控制器发送至少两个Send命令,其中,所述至少两个send命令用于获取至少两个第三长度的数据,所述第三长度小于所述第一长度。所述介质控制器响应所述至少两个send命令,向所述内存控制器返回所述第三长度的至少两个子数据块以及所述至少两个子数据块的元数据。其中,所述元数据中包含有所述第一ID以及位置标识,所述位置标识用于指示对应的子数据块在所述第一数据中的偏移量。所述内存控制器根据所述至少两个子数据块的元数据中的位置标识将所述至少两个子数据块合并为所述第一数据。
本申请提供的计算机系统在接收到用于获取较大数据的访存请求时,可以在不增加读命令的情况下支持系统的访存请求。从而能够减少总线带宽的浪费,提升系统性能。
实际应用中,所述位置标识至少为一个比特。所述内存控制器和所述介质控制器之间的通信遵从NVDIMM-P协议。
结合第一方面,在第一种可能的实现方式中,所述内存控制器还用于向所述介质控制器发送第二读命令,所述第二读命令中携带有第二ID、第二地址以及第二长度,所述第二长度用于指示所述第二读命令待读取的第二数据的大小。所述介质控制器还用于根据所述第二地址从所述NVM中获取所述第二数据。所述内存控制器还用于向所述介质控制器发送第二Send命令,所述第二send命令用于获取所述第三长度的数据块,所述第二长度等于所述第三长度。所述介质控制器还用于响应所述第二send命令,向所述内存控制器返回所述第二数据以及所述第二数据的元数据,所述第二数据的元数据中携带有所述第二ID。
本申请提供的计算机系统,能够在不增加读命令的数量且不浪费总线带宽的基础上,支持读取不同长度的数据的读需求。提升了系统性能。
结合第一方面以及第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述介质控制器还用于将从所述NVM读取的所述第一数据分为所述至少两个子数据块进行缓存,并记录所述至少两个子数据块的元数据。
结合第一方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,所述每个子数据块的元数据中还包括传输标识,所述传输标识用于指示所述子数据块是否为所述第一数据中待传输的最后一个子数据块。所述计算机系统还包括缓存,所述缓存用于缓存从所述NVM读取的所述第一数据的至少两个子数据块以及所述第二数据。所述介质控制器还用于当所述第二数据在所述缓存中位于所述第一数据的第一子数据块之后,且位于所述第一数据的第二子数据块之前时,将所述第二数据优先于所述第一子数据块发送给所述内存控制器。其中,所述第一子数据块的传输标识指示所述第一子数据块不是所述第一数据中待传输的最后一个子数据块,所述第二子数据块的传输标识指示所述第二子数据块为所述第一数据中待传输的最后一个子数据块。
本申请提供的计算机系统,由于在介质控制器返回内存控制器的子数据块的元数据中携带有待传输标识,从而介质控制器在向内存控制器返回数据的过程中,能够根据所述待传输标识调整发送给内存控制器的子数据块的发送顺序,从而不仅处理读取不同长度的数据的读命令上,还能够降低内存控制器106接收数据的等待延时,进一步提高了计算机系统的处理效率。
结合第一方面或第一方面的第一种至第三种中任意一种可能的实现方式,在第四种可能的实现方式中,所述计算机系统还包括处理器。所述处理器用于向所述内存控制器发送第一访存请求。所述第一访存请求包括所述第一ID、所述第一地址以及所述第一长度。所述内存控制器还用于根据所述第一访存请求向所述介质控制器发送所述第一读命令。根据该可能的实施方式所述的计算机系统,即使在接收到处理器发送的用于读取较大的数据的访存请求的情况下,也不会将处理器发送的访存请求变为多个小数据的读命令,从而与现有技术相比,能够减少读命令的数量,节省总线带宽,提高计算机系统的性能。
第二方面,本申请提供了一种存储器。该存储器包括非易失性内存NVM以及与所述NVM连接的介质控制器。所述NVM用于存储数据。所述介质控制器用于接收计算机系统中的内存控制器发送的第一读命令,并根据所述第一读命令中第一地址从所述NVM中读取所述第一数据。其中,所述第一读命令中携带有第一ID、所述第一地址以及第一长度,所述第一ID为所述第一读命令的标识,所述第一长度用于指示所述第一读命令待读取的第一数据的大小。在接收到所述内存控制器发送的至少两个Send命令之后,所述介质控制器响应所述内存控制器发送的至少两个send命令,向所述内存控制器返回第三长度的至少两个子数据块以及所述至少两个子数据块的元数据。其中,所述至少两个send命令用于获取第三长度的数据,所述第三长度小于所述第一长度。每个子数据块的元数据中均包含有所述第一ID以及位置标识。所述位置标识用于指示对应的子数据块在所述第一数据中的偏移量,以便根据所述至少两个子数据块中的位置标识使所述至少两个子数据块能够被合并为所述第一数据。
结合第二方面,在第一种可能的实现方式中,所述介质存储器还用于接收所述内存控制器发送的第二读命令,并根据所述第二读命令中的第二地址从所述NVM中获取第二数据。其中,所述第二读命令中携带有第二ID、第二地址以及第二长度,所述第二长度用于指示所述第二读命令待读取的第二数据的大小。在接收到所述内存控制器发送的第二send命令之后,所述介质控制器响应所述第二send命令,向所述内存控制器返回所述第二数据以及所述第二数据的元数据。其中,所述第二send命令用于获取所述第三长度的数据块,所述第二长度等于所述第三长度,所述第二数据的元数据中携带有所述第二ID。
结合第二方面或第二方面的第一种可能的实现方式,所述存储器还包括缓存,所述缓存用于缓存所述介质存储器从所述NVM中读取的所述第一数据的所述至少两个子数据块。所述介质控制器还用于记录所述至少两个子数据块的元数据。
结合第二方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,所述每个子数据块的元数据中还包括传输标识,所述传输标识用于指示所述子数据块是否为所述第一数据中待传输的最后一个子数据块。所述缓存还用于缓存所述第二数据。所述介质控制器还用于当所述第二数据在所述缓存中位于所述第一数据的第一子数据块之后,且位于所述第一数据的第二子数据块之前时,将所述第二数据优先于所述第一子数据块发送给所述内存控制器。其中,所述第一子数据块的传输标识指示所述第一子数据块不是所述第一数据中待传输的最后一个子数据块,所述第二子数据块的传输标识指示所述第二子数据块为所述第一数据中待传输的最后一个子数据块。
第三方面,本申请提供一种内存访问方法,所述方法应用于上述第一方面或第一方面的任意一种可能的实现方式提供的计算机系统中,实现上述第一方面或第一方面的任意一种可能的实现方式提供的计算机系统的功能。
第四方面,本申请提供了又一种内存访问方法。所述方法由上述第一方面或第一方面的任意一种可能的实现方式提供的计算机系统中的介质控制器执行,用于实现上述第一方面或第一方面的任意一种可能的实现方式提供的计算机系统中的介质控制器的功能。
第五方面,本申请提供了又一种内存访问方法。所述方法由上述第一方面或第一方面的任意一种可能的实现方式提供的计算机系统中的内存控制器执行,用于实现上述第一方面或第一方面的任意一种可能的实现方式提供的计算机系统中的内存控制器的功能。
第六方面,本申请提供了一种内存控制器。该内存控制器包括通信接口以及与所述通信接口连接的控制电路。该通信接口用于向计算机系统中的介质控制器发送第一读命令,所述第一读命令中携带有第一ID、第一地址以及第一长度,所述第一ID为所述第一读命令的标识,所述第一长度用于指示所述第一读命令待读取的第一数据的大小。该通信接口还用于向所述介质控制器发送至少两个Send命令,并接收所述介质控制器响应所述至少两个send命令发送的第三长度的至少两个子数据块以及所述至少两个子数据块的元数据。其中,所述至少两个send命令用于获取至少两个所述第三长度的数据,所述第三长度小于所述第一长度。所述至少两个子数据块是所述介质控制器根据所述第一地址从计算机系统中的非易失性内存NVM中获取的。每个子数据块的元数据中均包含有所述第一ID以及位置标识,所述位置标识用于指示对应的子数据块在所述第一数据中的位置。所述控制电路用于根据所述至少两个子数据块的元数据中的位置标识将所述至少两个子数据块合并为所述第一数据。
结合第六方面,在第六方面的第一种可能的实现方式中,所述通信接口还用于向所述介质控制器发送第二读命令。其中,所述第二读命令中携带有第二ID、第二地址以及第二长度,所述第二长度用于指示所述第二读命令待读取的第二数据的大小。之后,所述通信接口向所述介质控制器发送第二send命令,并接收所述介质控制器根据所述第二send命令返回的所述第二数据以及所述第二数据的元数据。其中,所述第二send命令用于获取所述第三长度的数据块,所述第二长度等于所述第三长度。所述第二数据是所述介质控制器根据所述第二地址从所述NVM中获取的,所述第二数据的元数据中携带有所述第二ID。
第七方面,本申请还提供了一种计算机程序产品,包括程序代码,所述程序代码包括的指令被计算机所执行,以实现前述第三方面、第四方面或第五方面中所述的方法。
第八方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码包括的指令被计算机所执行,以实现前述第三方面、第四方面或第五方面中所述的方法。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例。
图1为本发明实施例提供的一种计算机系统架构示意图;
图2为本发明实施例提供的一种内存访问方法的信令图;
图3为本发明实施例提供的一种读命令的数据结构示意图;
图4为本发明实施例提供的一种介质控制器向内存控制器返回的数据结构示意图;
图5为本发明实施例提供的一种介质控制器向内存控制器返回的数据中的元数据的数据结构示意图;
图6为本发明实施例提供的又一种内存访问方法的信令图;
图7为本发明实施例提供的一种调度方法流程图;
图8为本发明实施例提供的一种调度方法示意图;
图9为本发明实施例提供的又一种调度方法示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述。显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。
图1为本发明实施例提供的一种计算机系统架构示意图。如图1所示,计算机系统100至少可以包括处理器102、内存控制器106以及非易失性双列直插式内存模块(non-volatile dual in-line memory module,NVDIMM)108。通常,内存控制器106可以集成在处理器102中。需要说明的是,本发明实施例提供的计算机系统中,除了图1所示的器件外,计算机系统100还可以包括通信接口以及作为外存的磁盘等其他器件,在此不做限制。
处理器(processor)102是计算机系统100的运算核心和控制核心(controlunit)。处理器102中可以包括多个处理器核(core)104。处理器102可以是一块超大规模的集成电路。在处理器102中安装有操作系统和其他软件程序,从而处理器102能够实现对NVDIMM108、缓存及磁盘的访问。可以理解的是,在本发明实施例中,处理器102中的Core104例如可以是中央处理器(central processing unit,CPU),还可以是其他特定集成电路(application specific integrated circuit,ASIC)。
内存控制器(memory controller)106是计算机系统100内部控制NVDIMM108并用于管理与规划从NVDIMM 108到Core 104间的数据传输的总线电路控制器。通过内存控制器106,NVDIMM 108与Core 104之间可以交换数据。内存控制器106可以是一个单独的芯片,并通过系统总线与Core 104连接。本领域技术人员可以知道,内存控制器106也可以被集成到处理器102中(如图1所示)也可以被内置于北桥中。本发明实施例不对内存控制器106的具体位置进行限定。实际应用中,内存控制器106可以包括通信接口1062和控制电路1064,内存控制器106可以通过通信接口1062与处理器102和NVDIMM108进行通信。内存控制器106可以控制电路1064控制必要的逻辑以将数据写入NVDIMM 108或从NVDIMM108中读取数据。
NVDIMM 108是计算机系统100的一种随机存取存储器RAM,可以作为计算机系统100的内存或存储。NVDIMM 108可以包括介质控制器110、至少一个非易失性内存NVM 112以及缓存114。介质控制器110可以包括具有控制能力的逻辑电路。NVM 112用于存放操作系统中各种正在运行的软件、输入和输出数据以及与外存交换的信息等。其中,NVM 112可以以芯片的形式存在。如前所述,NVM 112可以包括相变存储器(phase change memory,PCM)、电阻性随机存取存储器(resistive random access memory,RRAM)、磁性随机存取存储器(magnetic random access memory,MRAM)、自旋扭矩转换磁性随机存取存储器(spin-transfer torque MRAM,STT MRAM)等可以作为内存的非易失性存储器。
内存控制器106通过总线105和NVDIMM 108进行连接。内存控制器106与NVDIMM108之间的通信遵从NVDIMM-P协议。NVDIMM-P协议是兼容双倍速率(double data rate,DDR)协议的一个总线访问协议。介质控制器110可以根据内存控制器106的访存命令对NVM112中存储的数据进行访问。可以理解的是,内存控制器106发送的访存命令可以是读命令或写命令。介质控制器110可以根据内存控制器106发送的读命令从NVM 112中读取数据,或者,介质控制器110还可以根据内存控制器106发送的写命令将数据写入NVM 112中。
本发明实施例中总线105可以包括数据总线、命令/地址总线以及读数据准备(ready)反馈线。其中,数据总线用于传输数据及元数据。命令/地址总线用于传输读命令、写命令等访存命令。读数据准备反馈线用于发送用于通知内存控制器106待读取的数据已经在NVDIMM中准备好的ready信号。实际应用中,当内存控制器106通过总线105从NVDIMM108中读取数据时,内存控制器106会先根据命令/地址总线发送读命令。NVDIMM108中的介质控制器110根据读命令中的目标地址从NVM112中获取到待读取的数据后,NVDIMM 108会向内存控制器106通过读数据准备(ready)反馈线发送用于通知数据已经在NVDIMM中准备好的ready信号。内存控制器106在接收到NVDIMM 108发送的Ready信号后,会通过命令/地址总线向NVDIMM108发送用于获取数据的send命令。在内存控制器106发送send命令的固定时延后,介质控制器110会将其缓存中准备好的数据通过数据总线返回给内存控制器106。由于NVDIMM-P协议支持NVM读命令的乱序执行,因此,实际应用中,内存控制器106在发送send命令时,无法知道介质控制器110返回的数据是哪个读命令的数据。
缓存114用于缓存介质控制器110从NVM 112读取的数据。缓存114可以包含一个缓存队列。通常,缓存队列都是采用先入先出的顺序缓存数据。介质控制器110可以根据缓存114中的数据的先后顺序调度缓存114中的数据。例如,介质控制器110可以按照缓存队列中缓存的数据的先后顺序将缓存的数据发送给内存控制器106,或者将数据写入NVM 112。在本发明实施例中,介质控制器110也可以不按照先入先出的顺序调度数据,而是按照数据的优先级或按照应用需要调度所述缓存队中的数据的先后顺序。可以理解的是,实际应用中,在NVDIMM108中还可以包括用于缓存待写入NVM112的数据的写缓存(图1中未示出)。
本领域技术人员可以知道,由于NVDIMM-P总线协议是兼容标准DDR总线协议的,其数据总线是复用的。根据这种方式,内存控制器发送的写命令以及用于获取数据的send命令都是复用相同的数据总线。因此,为了防止各命令在总线上的冲突,内存控制器在向介质控制器发送某个send命令时,必须确定根据该send命令返回的数据的传输时间,以便能够确定下一个命令的发送时间,从而能够精确调度各访存命令。然而,由于NVDIMM-P协议支持NVM读命令的乱序执行,因此,在处理访问不同长度的数据的读命令的过程中,内存控制器在发送send命令时无法知道介质控制器110返回的数据属于哪个读命令的数据,从而无法知道其接收的数据的长度,进而,内存控制器在发送send命令时无法确定返回的数据的传输时间。基于上述原因,如前所述,现有技术中,内存控制器106通常都是向NVDIMM 108发送固定长度的读命令。例如,内存控制器106向NVDIMM 108发送用于读取64B数据的读命令或者用于读取128B数据的读命令。但由于处理器会存在不同长度的数据的读需求,因此,内存控制器106向NVDIMM 108发送固定长度的读命令的方式可能造成读命令数量的增加或者浪费总线105的带宽,影响系统性能的提升。并且,NVDIMM内部通常需要根据接收的访存命令进行磨损均衡,命令数量的增多可能增加执行磨损均衡的工作,因此现有技术中的内存访问方法也不利于系统性能的提升。因此,为了不浪费带宽,且能够提高系统性能,提供一种能够支持内存控制器106从NVDIMM 108中读取不同长度数据的计算机系统很有必要。
下面就结合图1对计算机系统100如何根据不同需求读取NVDIMM108中不同长度的数据进行详细的介绍。换一种表达方式,本发明实施例提供的计算机系统100能够支持变长(multi-length)的读命令。为了与现有技术中的读命令进行区别,在本发明实施例中将内存控制器106发送给介质控制器110的读命令称为XREAD命令。图2为本发明实施例提供的一种数据读取方法的信令图。如图2所示,该方法可以包括下述步骤。
在步骤202中,处理器102向内存控制器106发送第一访存请求。所述第一访存请求中携带有第一逻辑地址和第一长度,所述第一长度用于指示所述处理器102待读取的第一数据的大小,所述第一逻辑地址用于指示待读取的第一数据的地址。
在步骤204中,内存控制器106根据所述第一访存请求向介质控制器110发送第一读命令,所述第一读命令中携带有第一ID、第一地址以及第一长度,所述第一长度用于指示所述第一读命令待读取的第一数据的大小。所述第一地址用于指示所述第一数据在NVM112中的物理地址。
在本发明实施例中,所述第一读命令的格式可以如图3所示。图3为本发明实施例提供的XREAD命令的数据结构示意图。一个XREAD命令是分为两个周期传输的,第一个周期的片选信号(chip select,CS)为低(L),第二个周期紧跟着第一个周期,第二个周期的片选信号为高(H)。每个周期又包括时钟的上升沿和时钟的下降沿。如图3所示,根据NVDIMM-P协议,命令/地址总线时钟信号的上升沿和下降沿均可以用于传输数据信息。例如,如图3所示,时钟的上升沿传输的信息可以参见图3中的“Command/Address Signal Rising CLK_t”部分。时钟的下降沿传输的信息可以参见图3中的“Command/Address Signal FallingCLK_t”部分。具体的,本发明实施例提供的XREAD命令中可以包括下述字段。“CS”位为片选信号字段,用于指示该NVDIMM是否被选中(selected)。Length[2:0]字段用于指示该XREAD命令要读取的数据的长度。ADDR[11:5]及ADDR[4:1]字段用于指示所述XREAD命令要读取的数据的地址。RID[9:7]及RID[6:0]字段用于指示所述XREAD命令的ID。“RFU”字段为未用到的预留字段。本领域技术人员可以知道,图3所示的XREAD命令中的各个字段可以通过图1所示的总线105的命令/地址总线进行传输。其中,总线105遵从NVDIMM-P协议。
本发明实施例中,第一读命令可以包括第一读命令的第一ID,第一ID为所述第一读命令的标识。例如,第一ID可以采用图3中的RID[9:7]及RID[6:0]字段来标识。并且,所述第一读命令还可以包括待读取的数据的地址,为了描述方便,在本发明实施例中,将第一读命令中携带的待读取的数据的地址称为第一地址。例如,第一地址可以采用图3所示的ADDR[11:5]及ADDR[4:1]字段来标识。需要说明的是,第一地址为第一数据在NVM 112中的物理地址。
为了使本发明实施例提供的计算机系统能够支持处理器的变长(multi-length)的读命令,在内存控制器106发送给介质控制器110的第一读命令中,还需要采用部分字段来指示所述第一读命令待读取的第一数据的长度。例如,可以用图3中的“Length[2:0]”字段来指示所述第一数据的长度。根据这种方式,“Length[2:0]”字段可以用于指示内存控制器106待读取的数据包括多少个64B(byte)块。例如,如图3所示,“Length[2:0]”字段可以有3位,“Length[2:0]”字段可以表示为000~111,相应的,“Length[2:0]”字段可以用于指示的内存控制器待读取的数据的长度可以为64B至512B。换一种表达方式,根据图3所示的XREAD命令的数据格式,计算机系统100能够支持一次读取512B数据的读操作。
需要说明的是,图3中的“Length[2:0]”字段仅仅是一种示例,并不对待读取的数据的长度进行限制。实际应用中,还可以采用更多的预留字段来表示待读取的数据的长度。例如,实际应用中,还可以将图3中所示的“RFU”字段也用于指示待读取的数据的长度。在这种情况下,用于指示待读取的数据的长度的字段就可以包括4bit,该字段能够指示的值可以从0000~1111。计算机系统100能够读取的数据最多可以为64B*16=1024B。并且,在本发明实施例中,“Length[2:0]”字段指示的待读取的数据的大小是以64B为粒度进行举例,根据这种方式,待读取的数据的大小均为64B的倍数。实际应用中,“Length[2:0]”字段指示的还可以以32B、128B或其他大小为粒度,在本发明实施例中不进行限制。
在步骤206中,介质控制器110根据所述第一地址从NVM 112中读取所述第一数据。具体的,介质控制器110可以根据所述第一地址及第一长度从NVM 112中读取所述第一数据。在读取所述第一数据后,介质控制器110可以将所述第一数据缓存在缓存(buffer)中。在本发明实施例中,介质控制器110在读取第一数据后,可以根据第一数据按照64B的粒度为单位进行分块缓存。例如,若第一长度为128B,则可以将第一数据分为2个64B的数据块,分别缓存在NVDIMM108的缓存114中。在缓存各数据块时,可以在各数据块中标识该数据块所属的读命令的ID以及该数据块在所述读命令待读取的数据中的位置。例如,若第一数据的第一长度为128B,介质控制器110可以将第一数据分成第一子数据块以及第二子数据块进行缓存,并在第一子数据块的元数据信息中记录第一ID以及第一子数据块在所述第一数据中的位置。第一子数据块在所述第一数据中的位置是指第一子数据块在第一数据中的偏移量。例如,若第一子数据块为第一数据中的高64B,第二子数据块为第一数据中的低64B,则可以在第一子数据块的元数据中记录第一子数据块的位置信息为1,在第二子数据块的元数据中记录第二子数据块的位置信息为0。
可以理解的是,“0”和“1”仅仅是数据块的元数据中的位置标识的一个示例。可以理解的是,数据块的元数据中的位置指示位可以不仅仅是一个bit,可以有多个bit的字段用于指示数据块在待读取的数据中的位置。例如,若以3个bit的字段来指示数据块的位置,则可以采用000~111分别指示各数据块在待读取的数据中的8个不同位置。
在步骤208中,介质控制器110向内存控制器106发送ready信号。所述ready信号用于通知内存控制器106,在介质控制器110的buffer中缓存有待读取的数据。本领域技术人员可以知道,由于NVM的访问延时不固定,因此NVDIMM无法同动态随机存储器DRAM一样在收到读命令之后的固定时间内向内存控制器返回该读命令要读取的数据,因此,NVDIMM-P协议定义了一个在读数据的过程中用于反馈数据的ready信号。这也是NVDIMM-P协议和DDR总线协议的一个区别。Ready信号用于通知内存控制器NVDIMM已经准备好内存控制器要读取的数据,内存控制器接收到Ready信号后,可以通过send命令从NVDIMM的缓存(buffer)中获取准备好的数据。
在步骤210中,内存控制器106向介质控制器110发送send命令。所述send命令用于读取NVDIMM缓存中缓存第三长度的数据块。需要说明的是,在NVDIMM的缓存中缓存有数据时,介质控制器就会向内存控制器106发送ready信号。由于NVDIMM-P协议支持NVM读命令的乱序执行,因此内存控制器106此时并不能知道NVDIMM准备的是哪个读命令的数据。如前所述,在处理用于读取变长数据的读命令的情况下,内存控制器106在向介质控制器110发送send命令时,并不知道其取回的数据的大小,因此无法确定返回的数据的传输时间。在本发明实施例中,为了不造成总线上命令的紊乱,即使在处理器发送的访存请求会读取不同长度的数据的情况下,内存控制器106仍然按照用于获取固定长度(例如,第三长度)的数据的方式来发送send命令。根据这种方式,即使不同的访存请求待读取的数据的大小不同,但由于一次获取的数据的长度固定,因此介质控制器110返回的数据的传输时间即可以确定,从而内存控制器106可以按照固定的数据传输时间向介质控制器110发送send命令以从NVDIMM获取待读取的数据。可以理解的是,所述第三长度可以根据实际应用进行设置。实际应用中,为了不浪费带宽,所述第三长度可以为64B。
在步骤212中,介质控制器110根据所述send命令向所述内存控制器106返回第三长度的数据块及相应的元数据。本领域技术人员可以知道,介质控制器110收到一个send命令,则会返回与所述第三长度大小相同的数据块及相应的元数据。其中,数据的元数据是指用于描述数据的信息。实际应用中,介质控制器110根据send命令向内存控制器106返回数据时,通常会将数据块和相应的元数据一起返回。为了描述方便,在本发明实施例中,也可以将介质控制器110返回的第三长度的数据块及相应的元数据统称为返回的数据。介质控制器110返回的数据的格式可以如图4所述。如图4所示,返回的数据中可以包括下述信息:Data 402、ECC 404、ID 406以及Location 408。其中,所述Data 402字段为所述第三长度的数据块。例如,所述Data 402字段可以为64B的数据块。可以理解的是,第三长度可以根据实际需要进行设置,例如,第三长度可以设置为64B或128B,只要是固定的长度即可。所述ECC404字段用于指示所述数据块的纠错信息。实际应用中,所述ECC 404字段可以占用12B。并且,实际应用中,返回的数据中也可以不包括所述ECC404字段。所述ID 406字段用于指示所述数据块所属的读命令。例如,以前述的第一读命令为例,若第一读命令待读取的第一数据被划分为第一子数据块和第二子数据块,则在介质控制器110根据内存控制器106发送的两个send命令返回的数据块的元数据中,第一子数据块的ID和第二子数据块的ID均可以为所述第一读命令的ID。Location 408用于指示返回的子数据块在ID 406指示的读命令待读取的数据中的位置。例如,当介质控制器110返回第一子数据块时,Location 408可以为“1”,用于返回的所述第一子数据块为第一读命令待读取的数据中的高64B。
实际应用中,ECC 404字段、字段ID 406和字段Location 408可以包含在返回的子数据块的元数据中。图5为本发明实施例提供的一种根据send命令返回的数据块的元数据的结构示意图。如图所示,M0和M1用于指示传输元数据的两根信号线上传输的信号。“RID”字段用于指示所述数据块所属的读命令。换一种表达方式,内存控制器106在接收到介质控制器110返回的数据块后,可以根据“RID”字段识别出返回的数据块为哪个读命令读取的数据。“SB”字段用于指示返回的数据块在“RID”字段指示的读命令待读取的数据中的偏移量。
图5所示的结构中,以RID占用10个比特(bit),SB占用3个比特进行描述。其中,元数据中的RID信息与图3所示XREAD命令中的RID[9:7]及RID[6:0]字段对应,用于指示子数据块所属的读命令。SB占用的3个bit用于和图3所示的XREAD命令中的“Length[2:0]”中的3个bit对应。根据这种方式,若XREAD中的Length[2:0]=7,则表示需要读取的数据的长度是8个64B的数据块,则返回的数据块中,若SB[2:0]=0则表示该返回的子数据块为待读取的数据中的第1个子数据块,若SB[2:0]=7则表示该返回的子数据块为待读取的数据中的第8个分块。可以理解的是,实际应用中可以根据实际需要设置字段ID 406和字段Location408所占用的位数。在本发明实施例中不进行限定。
本领域技术人员可以知道,当NVDIMM108中用于缓存待返回的读数据的缓存114中有数据时,介质控制器110就会向内存控制器106发送ready信号。内存控制器106收到介质控制器110发送的ready信号后,会向介质控制器110发送send命令。介质控制器110接收到send命令后,会向内存控制器106返回send命令的所述第三长度的数据块。因此,可以理解的是,当某个读命令待读取的数据较大时,例如大于设置的第三长度时,则需要执行至少两次步骤208至步骤212,才能从NVDIMM中完整读取该读命令待读取的数据。在本发明实施例中,以第一数据大于所述第三长度为例,则内存控制器需要发送至少两个send命令,才能从NVDIMM取回所述第一数据。例如,内存控制器106通过发送至少两个send命令,所述介质控制器分别响应所述至少两个send命令,分别向所述内存控制器106发送所述第一数据的至少两个子数据块。
在步骤214中,内存控制器106根据接收的所述至少两个子数据块获得所述第一数据。具体的,内存控制器106收到介质控制器110根据send指令返回的数据后,可以根据返回的子数据块的元数据确定所述子数据块所属的读命令。以本发明实施例中第一读命令待读取的第一数据大于所述第三长度为例。当内存控制器106接收到至少两个包含第一ID的子数据块后,可以根据所述至少两个数据块的元数据中的SB字段分别获得各子数据块在所述第一数据中的位置,从而内存控制器106能够根据各子数据块在所述第一数据中的偏移量将包含所述第一ID的至少两个子数据块获得所述第一数据。在步骤216中,所述内存控制器106向所述处理器102返回所述第一数据。
图2所示的实施例是以读取大数据为例对计算机系统100如何进行内存访问进行描述。由于本计算机系统能够支持不同需求的读命令,下面再以另一种情况为例对计算机系统100读取小数据的过程进行描述。图6为本发明实施例提供的又一种情况下的内存访问方法信令图。如图6所示,该方法可以包括下述步骤。
在步骤602中,处理器向内存控制器106发送第二访存请求。所述第二访存请求中包含有待读取的第二数据的第二长度,所述第二长度不大于所述第三长度。在本发明实施例中,以第二数据为64B为例进行描述。
在步骤604中,内存控制器106向介质控制器110发送第二读命令。所述第二读命令中包含有第二ID、第二地址以及所述第二长度。其中,第二读命令的数据格式也可以如图3所示。所述第二长度用于指示所述第二读命令待读取的所述第二数据的大小。在步骤606中,介质控制器110从NVM112中读取所述第二数据。同步骤206类似,介质控制器110可以根据第二地址和所述第二长度从NVM 112中读取所述第二数据。并将读取的所述第二数据缓存在NVDIMM的缓存中。在缓存第二数据的过程中,不仅需要缓存第二数据还需要缓存所述第二数据的元数据。第二数据的元数据可以包括所述第二读命令的ID以及所述第二数据的位置。由于第二数据较小,介质控制器110不必对所述第二数据进行分块缓存。
在步骤608中,介质控制器110向内存控制器106发送ready信号。在步骤610中,内存控制器106向所述介质控制器110发送send命令。在步骤612中,介质控制器110向内存控制器106返回所述第二数据以及所述第二数据的元数据。其中,介质控制器106返回的数据格式可以如图4所示。第二数据的元数据可以如图5所示。由于第二数据的大小为64B,当内存控制器获得介质控制器110返回的第二数据之后,在步骤614中,内存控制器106可以直接向所述处理器102返回所述第二数据。
需要说明的是,在本发明实施例中,由于第二数据等于send命令读取的数据的长度,因此,在介质控制器110返回第二数据时,可以所述第二数据的元数据中的将位置标识设置为000,用于指示所述第二数据只有1个数据块。在另一种情况下,当内存控制器106接收到介质控制器110返回的所述第二数据时,根据所述第二数据的元数据中的第二ID可以获知该数据属于所述第二读命令待读取的数据,进而可以获知所述第二读命令的长度等于所述第三长度,因此,内存控制器106能够知道第二数据只有一个数据块,从而内存控制器106可以将所述第二数据的元数据中的位置标识视为无意义的标识。
图6所示的实施例与图2所示的实施例类似,因此,图6所示的实施例中的相关步骤可以具体参见图2中相应步骤的描述。与图2所示的实施例不同的是,由于第二访存请求待读取的所述第二数据较小,内存控制器106通过一个send命令即可取回所述第二数据。因此,在内存控制器106根据介质控制器110返回的第二数据的元数据获得第二读命令待读取的所述第二数据已经完整返回后,则内存控制器可以直接向处理器102返回所述第二数据。
实际应用中,本发明实施例提供的计算机系统100可以并行处理访问不同NVM112芯片的多个不同的读命令。例如,计算机系统100可以并行处理第一读命令和第二读命令。图2和图6仅仅是对计算机系统100处理的用于读取不同长度数据的读命令的执行方法的示意。并且,本发明实施例提供的计算机系统100还能够支持读命令的乱序执行。根据这种方式,图2中的各个步骤与图6中的各个步骤可能交叉执行。例如,在步骤208之前,内存控制器可能执行步骤604。在介质控制器向内存控制器106返回数据时,可能先返回图2所示的第一读命令待读取的第一数据中的至少部分数据块也可能先返回图6中所示的第二读命令的待读取的第二数据。因此,在本发明实施例中,不对上述图2及图6所示的内存访问方法的各步骤的执行顺序进行限定。
在上述实施例提供的计算机系统中,在处理器102发送的用于读取不同长度数据的访存请求时,内存控制器106可以根据接收的访存请求向NVDIMM 108发送用于读取不同长度数据的读命令。当内存控制器106发送的用于读取较大数据(例如第一数据)的第一读命令时,内存控制器106可以向NVDIMM108中的介质控制器发送至少两个用于读取固定长度(例如第三长度)数据的send命令,其中,所述第三长度小于所述第一长度。介质控制器110可以根据接收到至少两个send命令向内存控制器106至少两个第三长度的子数据块及元数据,其中,每个子数据块对应的元数据中包含有用于指示该子数据块在所述第一数据中的位置标识。从而内存控制器106可以根据返回的至少两个子数据块的元数据中的位置标识将所述至少两个子数据块合并为所述第一数据。根据本发明实施例提供的方法,能够在不增加读命令的数量且不浪费总线带宽的基础上,支持读取不同长度的数据的读需求。
实际应用中,由于计算机系统100可并行处理多个不同的读命令,根据这种方式,在NVDIMM 108的缓存114中可能缓存有多个读命令待读取的数据。实际应用中,当缓存114中缓存有数据时,介质控制器110就会向内存控制器106发送ready消息通知内存控制器106取数据。为了优化内存控制器获得数据时的等待延时。在本发明实施例中,还可以通过优化缓存中的数据块的调度顺序来减少内存控制器的等待时延。下面将结合图5及图7具体描述本发明实施例提供的计算机系统100如何优化内存控制器获取数据时的等待时延。
在本发明实施例中,为了减少内存控制器获取数据时的等待时延,在图5所示的元数据中还可以增加一个传输标识(LB)。其中,传输标识LB只占用图5所示的元数据中的一个比特,具体的,可以从图5所示的元数据结构中的未使用的位中(例如,图5中RFU指示的位)选择一个比特作为所述传输标识。所述传输标识用于指示该子数据块是否为RID所指示的读命令待读取的数据中的待传输的最后一个数据块。例如,当第一数据被划分为至少两个子数据块进行缓存时,可以将所述至少两个子数据块中的任意一个子数据块作为所述第一数据中待传输的最后一个子数据块。根据这种方式,可以将确定的待传输的最后一个子数据块的元数据中的LB位标识为“1”,而将所述第一数据中的其他子数据块的元数据中的LB位标识为“0”。可以理解的是,“1”仅仅是用于指示该子数据块为待传输的最后一个子数据块的标识的示例,“0“也仅仅是用于指示该子数据块不是待传输的最后一个子数据块的标识的示例,实际应用中还可以采用其他标识,在此不做限定。
在本发明实施例中,为了减少内存控制器110接收读命令的数据的等待延时,在上述图2所示的步骤212和图6所示的步骤612中,介质控制器110还可以优化缓存114中缓存的各读命令的子数据块的返回顺序。下面将结合图7-9对本发明实施例中介质控制器110如何向内存控制器106返回数据块进行详细描述。图7为本发明实施例提供的一种调度方法流程图。图8为本发明实施例提供的一种调度方法示意图。图9为本发明实施例提供的又一种调度方法示意图。为了描述清楚,在图7所述的实施例中以缓存114中缓存有所述第一数据的至少两个子数据块以及所述第二数据为例进行描述。如图7所示,介质控制器110在向所述内存控制器106返回数据块时可以采用下述步骤。
在步骤702中,介质控制器110确定述第二数据在所述缓存114中位于所述第一数据的第一子数据块之后,且位于所述第一数据的第二子数据块之前。其中,所述第一子数据块的传输标识指示所述第一子数据块不是所述第一数据中待传输的最后一个子数据块,所述第二子数据块的传输标识指示所述第二子数据块为所述第一数据中待传输的最后一个子数据块。
为了描述清楚,结合图8进行举例说明。如图8所示,以第一读命令A和第二读命令B为例,其中,第一读命令A待读取的数据包括子数据块A0、子数据块A1及子数据块A2(LB),第二读命令B待读取的数据包括子数据块B0(LB)。A2(LB)用于表示A2为第一读命令A读取的数据中待传输的最后一个子数据块,B0(LB)用于指示B0为第二读命令B读取的数据中待传输的最后一个子数据块。各子数据块在缓存114中的缓存顺序如802所示,其中,子数据块B0(LB)位于子数据块A0和子数据块A1之后,且位于子数据块A2(LB)之前。
在步骤704中,介质控制器110响应所述内存控制器106发送的send命令,将所述第二数据优先于所述第一子数据块发送给所述内存控制器110。具体的,如图8中的调度顺序804所示,所述介质控制器110可以先响应内存控制器106发送的一个send命令,将第二数据B0(LB)发送给内存控制器106,再响应内存控制器106发送的其他至少两个send命令,将第一子数据块A0、第二子数据块A1、及第三子数据块A2(LB)返回给所述内存控制器106。
假设传输一个子数据块的传输延时是4个周期。如果介质控制器110按照图8中802所示的缓存顺序将各子数据块发送给内存控制器106,内存控制器110收到第一读命令A的所有子数据块的等待延时为16个周期,内存控制器110收到第二读命令B的所有子数据块的等待延时为12个周期。为了减少内存控制器110的等待延时,按照本发明实施例所示的方法调整缓存114中的各个子数据块的发送顺序后,例如,根据调度顺序804所示,介质控制器110可以将第二读命令B的数据B0(LB)优先于第一读命令A的子数据块A0和A1发送给内存控制器110。在这种情况下,内存控制器110接收到第一读命令A的所有子数据块的等待延时没有改变,仍然为16个周期,但内存控制器110接收到第二读命令B的所有子数据块的等待延时为4个周期。从而减少了内存控制器110接收第二读命令B的子数据块的延时,提高了内存控制器110处理第二读命令B的处理效率。
图8是以第二读命令待读取的数据只包含一个子数据块B0(LB)为例进行说明。实际应用中,如果第二读命令待读取的数据中包含有多个子数据块,只要第二读命令待读取的各子数据块在缓存中均位于第一读命令待读取的数据中一个子数据块之后,且位于第一读命令待读取的数据中待传输的最后一个子数据块之前,则介质控制器110可以将第二读命令待读取的子数据优先于第一读命令待读取的子数据块发送给内存控制器106。如图9中的902所示,第二读命令B待读取的数据包含B0和B1(LB),B0和B1(LB)在缓存114中均位于第一读命令A待读取的一个子数据块A0之后,且B0和B1(LB)均位于第一读命令A待读取的数据中待传输的最后一个子数据块A2(LB)之前,则介质控制器110可以按照904所示的调度顺序将各子数据块发送给内存控制器110。具体的,可以将第二读命令待读取的数据B0和B1(LB)优先于第一读命令A待读取的子数据块A0发送给内存控制器。仍然以传输一个子数据块的传输延时为4个周期为例,经过调整发送顺序后,内存控制器110接收第二读命令B读取的数据的延时由16个延时减少为4个延时,内存控制器110接收第一读命令A读取的数据的延时仍然为20个延时。从而在一定程度上优化了内存控制器的处理效率。
另外,为了兼顾公平性,避免内存控制器106接收某个读命令的数据的延时的增加,在本发明实施例中,介质控制器110不能将在缓存中位于第一读命令的数据中待传输的最后一个子数据块之后的其他读命令待读取的子数据块优先于所述第一读命令的子数据块发送给内存控制器。例如,如图8和图9所示,第三读命令C的子数据块C0(LB)在缓存114中位于第一读命令A的子数据块A2(LB)之后,则介质控制器110不能将C0(LB)优先于第一读命令的子数据块A0、A1及A2(LB)发送给内存控制器106。否则会造成内存控制器110接收第一读命令A的数据块延时的增加。例如,在图8所示的示例中个,假设最后发送第一读命令A的子数据块,则内存控制器106接收第一读命令A的数据的延时将从16个周期增加到20个周期。
需要说明的是,在本发明实施例中,介质控制器110在调整数据块的发送顺序时,某个读命令读取的数据中待传输的最后一个数据块不能优先于该命令的其他数据块发送。例如,介质控制器110不能将第一读命令中的子数据块A2(LB)优先于子数据块A0或A1发送给内存控制器106。
根据上述描述可以看出,在采用本发明实施例图2和图6的方法的基础上,在介质控制器110向内存控制器106返回读取的数据的过程中,通过调整各读命令读取的数据的返回顺序。不仅能够处理读取不同长度的数据的读命令,还能够降低内存控制器106接收数据的等待延时,提高了内存控制器106的处理效率。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如软盘、硬盘、磁带)、光介质(例如光盘)、或者半导体介质(例如固态硬盘(solid-state drive,SSD))等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
需要说明的是,本申请所提供的实施例仅仅是示意性的。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本发明实施例、权利要求以及附图中揭示的特征可以独立存在也可以组合存在。在本发明实施例中以硬件形式描述的特征可以通过软件来执行,反之亦然。在此不做限定。
Claims (20)
1.一种计算机系统,包括内存控制器、介质控制器以及与所述介质控制器连接的非易失性内存NVM,其中,所述内存控制器与所述介质控制器的通信遵从兼容双倍速率(doubledata rate,DDR)协议的总线访问协议;
所述NVM,用于存储数据;
所述内存控制器连接所述介质控制器,所述内存控制器用于向所述介质控制器发送第一读命令,所述第一读命令中携带有第一ID、第一地址以及第一长度,所述第一ID为所述第一读命令的标识,所述第一长度用于指示所述第一读命令待读取的第一数据的大小;
所述介质控制器,用于根据所述第一地址从所述NVM中读取所述第一数据;
所述内存控制器,用于向所述介质控制器发送至少两个Send命令,其中,所述至少两个send命令用于获取至少两个第三长度的数据,所述第三长度小于所述第一长度;
所述介质控制器,用于响应所述至少两个send命令,向所述内存控制器返回所述第三长度的至少两个子数据块以及所述至少两个子数据块的元数据,其中,所述元数据中包含有所述第一ID以及位置标识,所述位置标识用于指示对应的子数据块在所述第一数据中的偏移量;
所述内存控制器用于根据所述至少两个子数据块的元数据中的位置标识将所述至少两个子数据块合并为所述第一数据。
2.根据权利要求1所述的计算机系统,其特征在于:
所述内存控制器,还用于向所述介质控制器发送第二读命令,所述第二读命令中携带有第二ID、第二地址以及第二长度,所述第二长度用于指示所述第二读命令待读取的第二数据的大小;
所述介质控制器,还用于根据所述第二地址从所述NVM中获取所述第二数据;
所述内存控制器,还用于向所述介质控制器发送第二Send命令,所述第二send命令用于获取所述第三长度的数据块,所述第二长度等于所述第三长度;
所述介质控制器,还用于响应所述第二send命令,向所述内存控制器返回所述第二数据以及所述第二数据的元数据,所述第二数据的元数据中携带有所述第二ID。
3.根据权利要求1或2所述的计算机系统,其特征在于,所述介质控制器还用于:
将从所述NVM读取的所述第一数据分为所述至少两个子数据块进行缓存,并记录所述至少两个子数据块的元数据。
4.根据权利要求2所述的计算机系统,其特征在于:所述每个子数据块的元数据中还包括传输标识,所述传输标识用于指示所述子数据块是否为所述第一数据中待传输的最后一个子数据块;
所述计算机系统还包括:
缓存,用于缓存从所述NVM读取的所述第一数据的至少两个子数据块以及所述第二数据;
所述介质控制器,还用于当所述第二数据在所述缓存中位于所述第一数据的第一子数据块之后,且位于所述第一数据的第二子数据块之前时,将所述第二数据优先于所述第一子数据块发送给所述内存控制器,其中,所述第一子数据块的传输标识指示所述第一子数据块不是所述第一数据中待传输的最后一个子数据块,所述第二子数据块的传输标识指示所述第二子数据块为所述第一数据中待传输的最后一个子数据块。
5.根据权利要求1、2和4中任意一项所述的计算机系统,其特征在于,还包括:
处理器,用于向所述内存控制器发送第一访存请求,所述第一访存请求包括所述第一ID、所述第一地址以及所述第一长度;
所述内存控制器,还用于根据所述第一访存请求向所述介质控制器发送所述第一读命令。
6.一种存储器,包括:
非易失性内存NVM,用于存储数据;
与所述NVM连接的介质控制器,所述介质控制器用于:
接收计算机系统中的内存控制器发送的第一读命令,其中,所述内存控制器与所述介质控制器的通信遵从兼容双倍速率(doubledata rate,DDR)协议的总线访问协议,所述第一读命令中携带有第一ID、第一地址以及第一长度,所述第一ID为所述第一读命令的标识,所述第一长度用于指示所述第一读命令待读取的第一数据的大小;
根据所述第一地址从所述NVM中读取所述第一数据;
接收所述内存控制器发送的至少两个Send命令,其中,所述至少两个send命令用于获取第三长度的数据,所述第三长度小于所述第一长度;
响应所述内存控制器发送的至少两个send命令,向所述内存控制器返回所述第三长度的至少两个子数据块以及所述至少两个子数据块的元数据,其中,每个子数据块的元数据中均包含有所述第一ID以及位置标识,所述位置标识用于指示对应的子数据块在所述第一数据中的偏移量,以便根据所述至少两个子数据块中的位置标识使所述至少两个子数据块能够被合并为所述第一数据。
7.根据权利要求6所述的存储器,其特征在于,所述介质控制器还用于:
接收所述内存控制器发送的第二读命令,其中,所述第二读命令中携带有第二ID、第二地址以及第二长度,所述第二长度用于指示所述第二读命令待读取的第二数据的大小;
根据所述第二地址从所述NVM中获取所述第二数据;
接收所述内存控制器发送的第二send命令,所述第二send命令用于获取所述第三长度的数据块,所述第二长度等于所述第三长度;
响应所述第二send命令,向所述内存控制器返回所述第二数据以及所述第二数据的元数据,所述第二数据的元数据中携带有所述第二ID。
8.根据权利要求7所述的存储器,其特征在于,还包括:
缓存,用于缓存所述介质存储器从所述NVM中读取的所述第一数据的所述至少两个子数据块;
所述介质控制器还用于:记录所述至少两个子数据块的元数据。
9.根据权利要求8所述的存储器,其特征在于,所述每个子数据块的元数据中还包括传输标识,所述传输标识用于指示所述子数据块是否为所述第一数据中待传输的最后一个子数据块;
所述缓存还用于缓存所述第二数据;
所述介质控制器,还用于当所述第二数据在所述缓存中位于所述第一数据的第一子数据块之后,且位于所述第一数据的第二子数据块之前时,将所述第二数据优先于所述第一子数据块发送给所述内存控制器,其中,所述第一子数据块的传输标识指示所述第一子数据块不是所述第一数据中待传输的最后一个子数据块,所述第二子数据块的传输标识指示所述第二子数据块为所述第一数据中待传输的最后一个子数据块。
10.一种内存访问方法,所述方法应用于计算机系统中,所述计算机系统包括内存控制器、介质控制器以及与所述介质控制器连接的非易失性内存NVM,所述方法包括:
所述内存控制器向所述介质控制器发送第一读命令,其中,所述内存控制器与所述介质控制器的通信遵从兼容双倍速率(doubledata rate,DDR)协议的总线访问协议,所述第一读命令中携带有第一ID、第一地址以及第一长度,所述第一ID为所述第一读命令的标识,所述第一长度用于指示所述第一读命令待读取的第一数据的大小;
所述介质控制器根据所述第一地址从所述NVM中读取所述第一数据;
所述内存控制器向所述介质控制器发送至少两个Send命令,其中,所述至少两个send命令用于获取至少两个第三长度的数据,所述第三长度小于所述第一长度;
所述介质控制器响应所述至少两个send命令,向所述内存控制器返回所述第三长度的至少两个子数据块以及所述至少两个子数据块的元数据,其中,每个子数据块中的元数据中均包含有所述第一ID以及位置标识,所述位置标识用于指示对应的子数据块在所述第一数据中的位置;
所述内存控制器根据所述至少两个子数据块的元数据中的位置标识将所述至少两个子数据块合并为所述第一数据。
11.根据权利要求10所述的内存访问方法,其特征在于,还包括:
所述内存控制器向所述介质控制器发送第二读命令,所述第二读命令中携带有第二ID、第二地址以及第二长度,所述第二长度用于指示所述第二读命令待读取的第二数据的大小;
所述介质控制器根据所述第二地址从所述NVM中获取所述第二数据;
所述内存控制器向所述介质控制器发送第二Send命令,所述第二send命令用于获取所述第三长度的数据块,所述第二长度等于所述第三长度;
所述内存控制器接收所述介质控制器根据所述第二send命令返回的所述第二数据以及所述第二数据的元数据,其中,所述第二数据的元数据中携带有所述第二ID。
12.根据权利要求10或11所述的内存访问方法,其特征在于,还包括:
所述介质控制器将从所述NVM读取的所述第一数据分为所述至少两个子数据块进行缓存,并记录所述至少两个子数据块的元数据。
13.根据权利要求11所述的内存访问方法,其特征在于,所述计算机系统还包括缓存,所述每个子数据块的元数据中还包括传输标识,所述传输标识用于指示所述子数据块是否为所述第一数据中待传输的最后一个子数据块;
所述方法还包括:
当所述第二数据在所述缓存中位于所述第一数据的第一子数据块之后,且位于所述第一数据的第二子数据块之前时,所述介质控制器将所述第二数据优先于所述第一子数据块发送给所述内存控制器,其中,所述第一子数据块的传输标识指示所述第一子数据块不是所述第一数据中待传输的最后一个子数据块,所述第二子数据块的传输标识指示所述第二子数据块为所述第一数据中待传输的最后一个子数据块。
14.根据权利要求10、11和13中任意一项所述的方法,其特征在于,还包括:
所述内存控制器接收所述计算机系统的处理器发送的第一访存请求,所述第一访存请求包括所述第一ID、所述第一地址以及所述第一长度;
所述内存控制器根据所述第一访存请求向所述介质控制器发送所述第一读命令。
15.一种内存访问方法,所述方法应用于计算机系统中,所述计算机系统包括内存控制器、介质控制器以及与所述介质控制器连接的非易失性内存NVM,所述方法包括:
所述介质控制器接收所述内存控制器发送的第一读命令,其中,所述内存控制器与所述介质控制器的通信遵从兼容双倍速率(doubledata rate,DDR)协议的总线访问协议,所述第一读命令中携带有第一ID、第一地址以及第一长度,所述第一ID为所述第一读命令的标识,所述第一长度用于指示所述第一读命令待读取的第一数据的大小;
所述介质控制器根据所述第一地址从所述NVM中读取所述第一数据;
所述介质控制器接收所述内存控制器发送的至少两个Send命令,其中,所述至少两个send命令用于获取第三长度的数据,所述第三长度小于所述第一长度;
所述介质控制器响应所述内存控制器发送的至少两个send命令,向所述内存控制器返回所述第三长度的至少两个子数据块以及所述至少两个子数据块的元数据,其中,每个子数据块的元数据中均包含有所述第一ID以及位置标识,所述位置标识用于指示对应的子数据块在所述第一数据中的偏移量,以便根据所述至少两个子数据块中的位置标识使所述至少两个子数据块能够被合并为所述第一数据。
16.根据权利要求15所述的方法,其特征在于,还包括:
所述介质控制器接收所述内存控制器发送的第二读命令,所述第二读命令中携带有第二ID、第二地址以及第二长度,所述第二长度用于指示所述第二读命令待读取的第二数据的大小;
所述介质控制器根据所述第二地址从所述NVM中获取所述第二数据;
所述介质控制器接收所述内存控制器发送的第二send命令,所述第二send命令用于获取所述第三长度的数据块,所述第二长度等于所述第三长度;
所述介质控制器响应所述第二send命令,向所述内存控制器返回所述第二数据以及所述第二数据的元数据,所述第二数据的元数据中携带有所述第二ID。
17.根据权利要求15或16所述的方法,其特征在于,还包括:
所述介质控制器将从所述NVM读取的所述第一数据分为所述至少两个子数据块进行缓存,并记录所述至少两个子数据块的元数据。
18.根据权利要求16所述的方法,其特征在于,所述计算机系统还包括缓存,所述每个子数据块的元数据中还包括传输标识,所述传输标识用于指示所述子数据块是否为所述第一数据中待传输的最后一个子数据块;
所述方法还包括:
当所述第二数据在所述缓存中位于所述第一数据的第一子数据块之后,且位于所述第一数据的第二子数据块之前时,所述介质控制器将所述第二数据优先于所述第一子数据块发送给所述内存控制器,其中,所述第一子数据块的传输标识指示所述第一子数据块不是所述第一数据中待传输的最后一个子数据块,所述第二子数据块的传输标识指示所述第二子数据块为所述第一数据中待传输的最后一个子数据块。
19.一种内存访问方法,所述方法应用于计算机系统中,所述计算机系统包括内存控制器、介质控制器以及与所述介质控制器连接的非易失性内存NVM,所述方法包括:
所述内存控制器向所述介质控制器发送第一读命令,其中,所述内存控制器与所述介质控制器的通信遵从兼容双倍速率(doubledata rate,DDR)协议的总线访问协议,所述第一读命令中携带有第一ID、第一地址以及第一长度,所述第一ID为所述第一读命令的标识,所述第一长度用于指示所述第一读命令待读取的第一数据的大小;
所述内存控制器向所述介质控制器发送至少两个Send命令,其中,所述至少两个send命令用于获取至少两个第三长度的数据,所述第三长度小于所述第一长度;
所述内存控制器接收所述介质控制器响应所述至少两个send命令发送的所述第三长度的至少两个子数据块以及所述至少两个子数据块的元数据,其中,所述至少两个子数据块是所述介质控制器根据所述第一地址从所述NVM中获取的,每个子数据块的元数据中均包含有所述第一ID以及位置标识,所述位置标识用于指示对应的子数据块在所述第一数据中的位置;
根据所述至少两个子数据块的元数据中的位置标识将所述至少两个子数据块合并为所述第一数据。
20.根据权利要求19所述的方法,其特征在于,还包括:
所述内存控制器向所述介质控制器发送第二读命令,所述第二读命令中携带有第二ID、第二地址以及第二长度,所述第二长度用于指示所述第二读命令待读取的第二数据的大小;
所述内存控制器向所述介质控制器发送第二send命令,所述第二send命令用于获取所述第三长度的数据块,所述第二长度等于所述第三长度;
所述内存控制器接收所述介质控制器根据所述第二send命令返回的所述第二数据以及所述第二数据的元数据,其中,所述第二数据是所述介质控制器根据所述第二地址从所述NVM中获取的,所述第二数据的元数据中携带有所述第二ID。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2017/089774 WO2018232736A1 (zh) | 2017-06-23 | 2017-06-23 | 内存访问技术及计算机系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109478168A CN109478168A (zh) | 2019-03-15 |
CN109478168B true CN109478168B (zh) | 2020-12-04 |
Family
ID=64735409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780043116.5A Active CN109478168B (zh) | 2017-06-23 | 2017-06-23 | 内存访问技术及计算机系统 |
Country Status (8)
Country | Link |
---|---|
US (3) | US10732876B2 (zh) |
EP (3) | EP3480702B1 (zh) |
JP (2) | JP6900518B2 (zh) |
KR (3) | KR102443106B1 (zh) |
CN (1) | CN109478168B (zh) |
BR (1) | BR112019026942B1 (zh) |
ES (1) | ES2840423T3 (zh) |
WO (1) | WO2018232736A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10877669B1 (en) * | 2011-06-30 | 2020-12-29 | Amazon Technologies, Inc. | System and method for providing a committed throughput level in a data store |
US10831650B2 (en) * | 2018-03-07 | 2020-11-10 | Exten Technologies, Inc. | Systems and methods for accessing non-volatile memory and write acceleration cache |
WO2019200142A1 (en) * | 2018-04-12 | 2019-10-17 | Micron Technology, Inc. | Replay protected memory block command queue |
US10969994B2 (en) * | 2018-08-08 | 2021-04-06 | Micron Technology, Inc. | Throttle response signals from a memory system |
US11409436B2 (en) * | 2018-08-08 | 2022-08-09 | Micron Technology, Inc. | Buffer management in memory systems for read and write requests |
US11074007B2 (en) | 2018-08-08 | 2021-07-27 | Micron Technology, Inc. | Optimize information requests to a memory system |
US10782916B2 (en) | 2018-08-08 | 2020-09-22 | Micron Technology, Inc. | Proactive return of write credits in a memory system |
US11210093B2 (en) | 2019-04-08 | 2021-12-28 | Micron Technology, Inc. | Large data read techniques |
US11256423B2 (en) * | 2019-10-14 | 2022-02-22 | Western Digital Technologies, Inc. | Efficiently identifying command readiness based on system state and data spread in multi queue depth environment |
CN110781120B (zh) * | 2019-10-23 | 2023-02-28 | 山东华芯半导体有限公司 | 一种axi总线主机设备跨4kb传输的实现方法 |
US11599485B2 (en) * | 2020-11-25 | 2023-03-07 | Micron Technology, Inc. | Status check using signaling |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609378A (zh) * | 2012-01-18 | 2012-07-25 | 中国科学院计算技术研究所 | 一种消息式内存访问装置及其访问方法 |
CN104375946A (zh) * | 2013-08-16 | 2015-02-25 | 华为技术有限公司 | 一种数据处理的方法及装置 |
CN106471485A (zh) * | 2014-06-02 | 2017-03-01 | 美光科技公司 | 用于在可扩展存储器系统协议中重新排序数据包传输的系统及方法 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07302176A (ja) * | 1994-05-09 | 1995-11-14 | Toshiba Corp | 半導体ディスク装置 |
US7480781B2 (en) * | 2004-12-30 | 2009-01-20 | Intel Corporation | Apparatus and method to merge and align data from distributed memory controllers |
WO2010093356A1 (en) * | 2009-02-11 | 2010-08-19 | Stec, Inc. | A flash backed dram module |
US8438453B2 (en) | 2009-05-06 | 2013-05-07 | Apple Inc. | Low latency read operation for managed non-volatile memory |
US20110041039A1 (en) * | 2009-08-11 | 2011-02-17 | Eliyahou Harari | Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device |
TWI454906B (zh) * | 2009-09-24 | 2014-10-01 | Phison Electronics Corp | 資料讀取方法、快閃記憶體控制器與儲存系統 |
CN101876944B (zh) * | 2009-11-26 | 2012-02-15 | 威盛电子股份有限公司 | 动态随机存取存储器控制器和控制方法 |
JP5611889B2 (ja) | 2011-05-17 | 2014-10-22 | 株式会社東芝 | データ転送装置、データ送信システムおよびデータ送信方法 |
US9294564B2 (en) * | 2011-06-30 | 2016-03-22 | Amazon Technologies, Inc. | Shadowing storage gateway |
US8793343B1 (en) * | 2011-08-18 | 2014-07-29 | Amazon Technologies, Inc. | Redundant storage gateways |
CN103034603B (zh) | 2012-12-07 | 2014-06-18 | 天津瑞发科半导体技术有限公司 | 多通道闪存卡控制装置及其控制方法 |
CN104216837A (zh) * | 2013-05-31 | 2014-12-17 | 华为技术有限公司 | 一种内存系统、内存访问请求的处理方法和计算机系统 |
JP6217241B2 (ja) | 2013-08-28 | 2017-10-25 | コニカミノルタ株式会社 | 胸部診断支援システム |
US9021154B2 (en) | 2013-09-27 | 2015-04-28 | Intel Corporation | Read training a memory controller |
JP6287571B2 (ja) * | 2014-05-20 | 2018-03-07 | 富士通株式会社 | 演算処理装置、情報処理装置、及び、演算処理装置の制御方法 |
KR102249416B1 (ko) * | 2014-06-11 | 2021-05-07 | 삼성전자주식회사 | 메모리 시스템 및 메모리 시스템의 구동 방법 |
JP6306737B2 (ja) * | 2014-11-04 | 2018-04-04 | 株式会社日立製作所 | 半導体メモリデバイス、及び、半導体メモリデバイスを有するストレージ装置 |
US9711194B2 (en) * | 2015-01-28 | 2017-07-18 | Xilinx, Inc. | Circuits for and methods of controlling the operation of a hybrid memory system |
US9778864B2 (en) * | 2015-03-10 | 2017-10-03 | SK Hynix Inc. | Data storage device using non-sequential segment access and operating method thereof |
JP6515602B2 (ja) * | 2015-03-12 | 2019-05-22 | 日本電気株式会社 | データ処理装置及びデータ処理方法 |
JP6541998B2 (ja) * | 2015-03-24 | 2019-07-10 | 東芝メモリ株式会社 | メモリデバイス、半導体装置および情報処理装置 |
US10353747B2 (en) * | 2015-07-13 | 2019-07-16 | Futurewei Technologies, Inc. | Shared memory controller and method of using same |
US10254990B2 (en) * | 2015-12-07 | 2019-04-09 | Netapp, Inc. | Direct access to de-duplicated data units in memory-based file systems |
US9460791B1 (en) * | 2015-12-08 | 2016-10-04 | Inphi Corporation | Data clock synchronization in hybrid memory modules |
US10152237B2 (en) * | 2016-05-05 | 2018-12-11 | Micron Technology, Inc. | Non-deterministic memory protocol |
KR102554416B1 (ko) * | 2016-08-16 | 2023-07-11 | 삼성전자주식회사 | 메모리 장치의 내부 상태 출력 장치 및 이를 적용하는 메모리 시스템 |
US20180059933A1 (en) * | 2016-08-26 | 2018-03-01 | Sandisk Technologies Llc | Electrically-Buffered NV-DIMM and Method for Use Therewith |
CN106843772A (zh) * | 2017-02-14 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种基于一致性总线扩展非易失内存的系统及方法 |
US10542089B2 (en) * | 2017-03-10 | 2020-01-21 | Toshiba Memory Corporation | Large scale implementation of a plurality of open channel solid state drives |
-
2017
- 2017-06-23 BR BR112019026942-8A patent/BR112019026942B1/pt active IP Right Grant
- 2017-06-23 EP EP17914958.8A patent/EP3480702B1/en active Active
- 2017-06-23 KR KR1020217039534A patent/KR102443106B1/ko active IP Right Grant
- 2017-06-23 WO PCT/CN2017/089774 patent/WO2018232736A1/zh unknown
- 2017-06-23 KR KR1020227031161A patent/KR102532173B1/ko active IP Right Grant
- 2017-06-23 KR KR1020207001375A patent/KR102336232B1/ko active IP Right Grant
- 2017-06-23 JP JP2019570989A patent/JP6900518B2/ja active Active
- 2017-06-23 EP EP20195180.3A patent/EP3822798B1/en active Active
- 2017-06-23 EP EP22188013.1A patent/EP4152166A3/en active Pending
- 2017-06-23 ES ES17914958T patent/ES2840423T3/es active Active
- 2017-06-23 CN CN201780043116.5A patent/CN109478168B/zh active Active
-
2019
- 2019-02-25 US US16/284,609 patent/US10732876B2/en active Active
-
2020
- 2020-07-13 US US16/927,066 patent/US11231864B2/en active Active
-
2021
- 2021-06-15 JP JP2021099325A patent/JP7162102B2/ja active Active
-
2022
- 2022-01-06 US US17/569,911 patent/US11681452B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609378A (zh) * | 2012-01-18 | 2012-07-25 | 中国科学院计算技术研究所 | 一种消息式内存访问装置及其访问方法 |
CN104375946A (zh) * | 2013-08-16 | 2015-02-25 | 华为技术有限公司 | 一种数据处理的方法及装置 |
CN106471485A (zh) * | 2014-06-02 | 2017-03-01 | 美光科技公司 | 用于在可扩展存储器系统协议中重新排序数据包传输的系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
JP7162102B2 (ja) | 2022-10-27 |
KR20210150611A (ko) | 2021-12-10 |
EP4152166A2 (en) | 2023-03-22 |
KR102336232B1 (ko) | 2021-12-07 |
EP3480702A4 (en) | 2019-09-04 |
US20190196716A1 (en) | 2019-06-27 |
JP2020524859A (ja) | 2020-08-20 |
US11681452B2 (en) | 2023-06-20 |
ES2840423T3 (es) | 2021-07-06 |
EP4152166A3 (en) | 2023-04-26 |
KR20220129100A (ko) | 2022-09-22 |
WO2018232736A1 (zh) | 2018-12-27 |
EP3480702A1 (en) | 2019-05-08 |
BR112019026942A2 (pt) | 2020-07-07 |
US11231864B2 (en) | 2022-01-25 |
US20200393965A1 (en) | 2020-12-17 |
US10732876B2 (en) | 2020-08-04 |
JP6900518B2 (ja) | 2021-07-07 |
EP3822798A3 (en) | 2021-06-09 |
EP3822798B1 (en) | 2022-08-24 |
EP3822798A2 (en) | 2021-05-19 |
JP2021152933A (ja) | 2021-09-30 |
KR102532173B1 (ko) | 2023-05-16 |
US20220206686A1 (en) | 2022-06-30 |
KR102443106B1 (ko) | 2022-09-14 |
BR112019026942B1 (pt) | 2024-02-15 |
KR20200019706A (ko) | 2020-02-24 |
CN109478168A (zh) | 2019-03-15 |
EP3480702B1 (en) | 2020-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109478168B (zh) | 内存访问技术及计算机系统 | |
TWI546672B (zh) | 用於低電力記憶體裝置之通用晶粒實作技術 | |
US20200218662A1 (en) | Data caching device and control method therefor, data processing chip, and data processing system | |
US8683126B2 (en) | Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory | |
CN107783727B (zh) | 一种内存设备的访问方法、装置和系统 | |
US11036412B2 (en) | Dynamically changing between latency-focused read operation and bandwidth-focused read operation | |
KR20200100151A (ko) | 집단화된 메모리 장치에 대한 메모리 요청 스케줄링 | |
US11550508B2 (en) | Semiconductor storage device and control method thereof | |
CN110781107B (zh) | 基于dram接口的低延迟融合io控制方法和装置 | |
CN113377288B (zh) | 硬件队列管理系统、方法、固态硬盘控制器及固态硬盘 | |
US8959278B2 (en) | System and method for scalable movement and replication of data | |
US20150212942A1 (en) | Electronic device, and method for accessing data in electronic device | |
CN117312201B (zh) | 一种数据传输方法、装置及加速器设备、主机和存储介质 | |
US6847990B2 (en) | Data transfer unit with support for multiple coherency granules | |
WO2023142114A1 (zh) | 数据处理方法、装置以及电子设备 | |
CN116569128A (zh) | 存储器热点识别 | |
CN118051174A (zh) | 高带宽ddr双列直插式存储模块、存储系统及其操作方法 |
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 |