CN111448543B - 内存访问技术及计算机系统 - Google Patents
内存访问技术及计算机系统 Download PDFInfo
- Publication number
- CN111448543B CN111448543B CN201780097436.9A CN201780097436A CN111448543B CN 111448543 B CN111448543 B CN 111448543B CN 201780097436 A CN201780097436 A CN 201780097436A CN 111448543 B CN111448543 B CN 111448543B
- Authority
- CN
- China
- Prior art keywords
- data
- memory controller
- sent
- controller
- 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
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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/1607—Details of the supervisory signal
- H04L1/1642—Formats specially adapted for sequence numbers
-
- 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/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/0656—Data buffering 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/0673—Single storage device
-
- 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]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1867—Arrangements specially adapted for the transmitter end
- H04L1/1874—Buffer management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种内存访问技术及计算机系统(100)。所述计算机系统(100)包括内存控制器(106)、介质控制器(110)以及与所述介质控制器(110)连接的内存(112)。在所述计算机系统(100)中,当检测到所述介质控制器(110)响应所述内存控制器(106)发送的第一send命令(705)返回的第一数据发生错误时,所述内存控制器(106)确定所述第一send命令(705)在从发送所述第一send命令(705)时到当前时间的时间段内所述内存控制器(106)已发送的多个send命令中的序列信息,并向所述介质控制器(110)发送数据重传命令(710)以指示所述介质控制器(110)根据序列信息重新发送所述第一数据。所述计算机系统(100)能够降低恢复错误数据的延时,提升了计算机系统(100)的性能。
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)协议的一个总线访问协议。
根据NVDIMM-P协议,当内存控制器从NVDIMM读数据时,读命令所读取的数据的返回时间并不固定。现有技术中,内存控制器只有在取回数据并对该取回的数据解析之后,才能获知该取回的数据是哪个读命令待读取的数据。在读取数据后,若内存控制器发现读取的数据发生了不可恢复的错误,内存控制器只能重新执行该错误数据的最近一个读取了正确数据的读命令之后的所有读命令。然而,这种方式可能导致重新执行的读命令较多,并且,由于执行读命令所需的处理时间较长,因此,这种方式会降低计算机系统的性能。
发明内容
本申请中提供的一种内存访问技术及计算机系统,能够在读取的数据出现错误时,快速恢复错误数据,提升系统性能。
第一方面,本申请提供了一种存储器。该存储器包括存储介质以及分别与内存控制器和与所述NVM连接的介质控制器。所述存储介质用于存储数据。所述介质控制器用于在接收了所述内存控制器发送的用于指示所述介质控制器重新发送第一数据的数据重传命令之后,根据所述数据重传命令中包含的序列信息确定所述第一数据在备份缓存中的位置信息。其中,所述第一数据是所述介质控制器响应所述内存控制器发送的第一send命令发送给所述内存控制器的数据,所述序列信息用于指示所述第一send命令在从发送所述第一send命令时到当前时间的时间段内所述内存控制器已发送的多个send命令中的序列。所述备份缓存用于备份所述介质控制器已发送给所述内存控制器的数据。之后,所述介质控制器根据所述位置信息将所述备份缓存中备份的所述第一数据发送给所述内存控制器。
本申请实施例提供的存储器,由于设置有用于备份已发送给内存控制器的数据的备份缓存,因此,在接收到内存控制器发现接收的第一数据发生错误时发送的数据重传命令时,存储器中的介质控制器能够根据数据重传命令中的序列信息确定所述第一数据在备份缓存中的位置信息,从而能够根据该第一数据的位置信息将备份缓存中的数据重新发送给内存控制器。从而在数据出现错误时,介质控制器无需重新从存储介质重新读取数据,降低了恢复错误数据的延时,提升了计算机系统的性能。
在第一方面的第一种可能的实现方式中,所述介质控制器还用于根据所述第一数据的位置信息将备份缓存中缓存的所述第一数据拷贝到读缓存中,其中,所述读缓存用于缓存所述介质控制器待发送给所述内存控制器的数据。在接收所述内存控制器发送的第二send命令后,所述介质控制器根据所述第二send命令,将所述读缓存中的所述第一数据发送给所述内存控制器。
结合第一方面以及第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述介质控制器还用于:在根据所述第一send命令向所述内存控制器发送所述第一数据时,将所述第一数据缓存在所述备份缓存中。
结合第一方面以及第一方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,所述备份缓存中缓存有所述介质控制器已经发送给所述内存控制器的多个数据。所述多个数据是所述介质控制器分别根据已响应的多个send命令而缓存在所述备份缓存中的。所述介质控制器还用于根据所述多个send命令的接收顺序依先进先出的规则调度所述备份缓存中的数据。
结合第一方面以及第一方面的任意一种可能的实现方式,在另一种可能的实现方式中,备份缓存的容量可以根据所述内存控制器发出所述第一send命令到所述内存控制器完成对所述第一数据的ECC检测的时间段内,所述内存控制器发送的send命令的数量S来确定。具体的,备份缓存的容量的最小值为S个数据块的大小,其中,
S=INT{(tRL+tBurst+tecc_check)/tBurst}+1;
其中,INT为指取整运算符。tRL用于指示从内存控制器发出所述第一send命令到第一send命令读出的数据出现在总线上的延时。tBurst用于指示数据传输所需要的时钟周期的数量。tecc_check是指从第一数据出现在总线上到内存控制器完成对第一数据的ECC检测的延时。tecc_check至少包括所述内存控制器的端口物理层(Port Physical Layer,PHY)的延时以及对第一数据进行ECC检测的延时。“1”用于指示从内存控制器检测出所述第一数据出现错误到内存控制器发送数据重传指令的最小延时可以为1个周期。
第二方面,本申请提供一种内存控制器。所述内存控制器连接介质控制器,所述介质控制器连接内存。所述内存控制器向所述介质控制器发送第一发送(send)命令,所述第一send命令用于指示介质控制器向所述内存控制器返回数据。在检测到所述介质控制器响应所述第一send命令返回的第一数据发生错误时,所述内存控制器确定所述第一send命令在从发送所述第一send命令时到当前时间的时间段内所述内存控制器已发送的多个send命令中的序列信息。其中,所述第一数据为所述介质控制器读取的所述内存中的数据。之后,所述内存控制器向所述介质控制器发送数据重传命令,所述数据重传命令中包含有所述序列信息,所述数据重传命令用于指示所述介质控制器根据所述序列信息重新发送所述第一数据。
本申请实施例提供的内存控制器,在检测到介质控制器返回的第一数据发生错误时,内存控制器可以根据所述第一数据对应的第一send命令的序列信息指示所述介质控制器重新传输所述第一数据,从而实现了对错误的第一数据的快速恢复。本申请提供的内存控制器无需重新执行出现错误之前最近一个读取了正确数据的读命令之后的所有读命令来获取正确的第一数据,从而降低了计算机系统恢复错误数据的延时,提升了计算机系统的性能。
结合第二方面,在第一种可能的实现方式中,所述第一send命令是所述内存控制器已发送给所述介质控制器的某个前一send命令的下一个send命令,所述某个前一send命令和所述第一send命令的发送时间之间具有第一时延,所述内存控制器还用于在检测到所述第一数据发生错误时,经过第二时延后向所述介质控制器发送其他send命令,其中,所述第二时延大于所述第一时延,所述第二时延相当于所述内存控制器检测到所述第一数据发生错误前最近一次发送的send命令和检测到所述第一数据发生错误后第一次发送的send命令发送时间之间的时间段。根据这种方式,不会造成命令或数据在总线上的冲突。
结合第二方面以及第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述数据重传命令是所述内存控制器在所述第二时延内向所述介质控制器发送的,所述第二时延包括传输所述数据重传命令的时间以及所述介质控制器执行所述数据重传指令的时间。
结合第二方面以及第二方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,所述内存控制器还用于记录从发送所述第一send命令时到当前时间的时间段内所述内存控制器已发送的send命令的数量。其中,所述数量用于指示所述第一send命令在从发送所述第一send命令时到当前时间的时间段内所述内存控制器已发送的send命令内的序列信息。
第三方面,本申请提供一种内存数据的错误恢复方法,所述方法包含有内存控制器和介质控制器的计算机系统中,所述方法由所述介质控制器执行以实现上述第一方面或第一方面的任意一种可能的实现方式提供的存储器中的介质控制器的功能。
第四方面,本申请提供了又一种内存数据的错误恢复方法。所述方法包含有内存控制器和介质控制器的计算机系统中。所述方法由所述内存控制器执行以实现上述第二方面或第二方面的任意一种可能的实现方式提供的内存控制器的功能。
第五方面,本申请提供了一种计算机系统。所述计算机系统包括内存控制器、介质控制器以及与所述介质控制器连接的内存。所述内存用于存储数据。所述内存控制器连接所述介质控制器。所述内存控制器具有上述第二方面以及第二方面的任意一种可能的实现方式提供的内存控制器的功能,所述介质控制器具有上述第二方面以及第二方面的任意一种可能的实现方式提供的存储器中的介质控制器的功能。
第六方面,本申请提供了一种内存控制器。该内存控制器包括通信接口以及与所述通信接口连接的控制电路。所述控制器电路能够实现上述第四方面提供的内存数据的错误恢复方法。
第七方面,本申请还提供了一种计算机程序产品,包括程序代码,所述程序代码包括的指令被计算机所执行,以实现前述第三方面或第四方面中所述的方法。
第八方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码包括的指令被计算机所执行,以实现前述第三方面或第四方面中所述的方法。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例。
图1为本申请实施例提供的一种计算机系统架构示意图;
图2为本申请实施例提供的一种恢复错误数据的方法的信令图;
图3为本申请实施例提供的一种send命令等待队列的示意图;
图4为本申请实施例提供的一种介质控制器备份已发送数据的示意图;
图5-A为本申请实施例提供的一种数据重传命令和send命令的格式示意图;
图5-B为本申请实施例提供的另外一种数据重传命令和send命令的格式示意图;
图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中的Core 104例如可以是中央处理器(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中读取数据。控制电路1064可以包括硬件、软件或硬件及软件共同实现的控制逻辑(logic orcircuitry)。内存控制器106也可以包含处理器(processor)以执行软件内的程式指令。
NVDIMM 108是计算机系统100的一种随机存取存储器RAM,可以作为计算机系统100的内存或存储。NVDIMM 108可以包括介质控制器110、至少一个非易失性内存NVM 112、读缓存114以及备份缓存116。介质控制器110可以包括具有控制能力的逻辑电路。NVM 112用于存放操作系统中各种正在运行的软件、输入和输出数据以及与外存交换的信息等。其中,NVM 112可以以芯片的形式存在。可以理解的是,NVDIMM 108中可以存放指令,处理器102可以执行NVDIMM108中存储的指令以执行相应的操作。如前所述,NVM 112可以包括相变存储器(phase change memory,PCM)、电阻性随机存取存储器(resistive random accessmemory,RRAM)、磁性随机存取存储器(magnetic random access memory,MRAM)、自旋扭矩转换磁性随机存取存储器(spin-transfer torque MRAM,STT MRAM)等可以作为内存的非易失性存储器。可以理解的是,NVM 112只是存储介质的一种示例。
内存控制器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根据读命令中的目标地址从NVM 112中获取到待读取的数据后,NVDIMM 108会向内存控制器106通过读数据准备(ready)反馈线发送用于通知数据已经在NVDIMM 108中准备好的ready信号。内存控制器106在接收到NVDIMM 108发送的Ready信号后,会通过命令/地址总线向NVDIMM 108发送用于获取数据的send命令。所述send命令用于指示介质控制器110向所述内存控制器106发送数据。在内存控制器106发送send命令的固定时延后,内存控制器106可以通过数据总线接收介质控制器110响应所述send命令而发送的缓存中准备好的数据。在内存控制器发送读命令后,该读命令待读取的数据并不能立即返回,并且,由于NVDIMM-P协议支持NVM读命令的乱序执行,因此,实际应用中,内存控制器106在发送send命令时,无法知道介质控制器110返回的数据是哪个读命令的数据。
读缓存114用于缓存介质控制器110从NVM 112读取的数据。读缓存114可以包含至少一个缓存队列。通常,缓存队列都是采用先入先出(first in first out,FIFO)的顺序缓存数据。介质控制器110可以根据读缓存114中的数据的先后顺序调度读缓存114中的数据。例如,介质控制器110可以按照缓存队列中缓存的数据的先后顺序将读缓存的数据发送给内存控制器106。在本申请实施例中,介质控制器110也可以不按照先入先出的顺序调度数据,而是按照数据的优先级或按照应用需要调度所述缓存队中的数据的先后顺序。可以理解的是,实际应用中,在NVDIMM108中还可以包括用于缓存待写入NVM112的数据的写缓存(图1中未示出)。
当从NVM中读取的数据出错时,为了减少恢复错误数据的时间,本申请实施例提供的NVDIMM 108中还设置有备份缓存116。备份缓存116用于缓存介质控制器110发送给内存控制器106的数据的备份数据。在本申请实施例中,备份缓存116中设置有备份队列,备份队列采用先入先出(first in first out,FIFO)的顺序调度备份数据。可以理解的是,读缓存114和备份缓存116可以采用DRAM等访问速度较快的易失性存储介质,也可以采用访问速度较快的非易失性存储介质NVM,在此不对读缓存114和备份缓存116的存储介质类型进行限定。
本领域技术人员可以知道,由于NVDIMM-P协议支持NVM读命令的乱序执行,因此,内存控制器106在向介质控制器110发送send命令以获取数据时无法知道介质控制器110返回的数据属于哪个读命令的数据,只有在内存控制器106取回数据,对取回的数据进行检测、解析后,才能根据数据中携带的read ID信息才能知道是哪个读命令读取的数据。并且,为了防止数据在传输过程中发生错误,通常传输数据时会携带错误校验码(ErrorCorrection Code,ECC)。内存控制器106接收到介质控制器110根据send命令发送的数据后,通常先根据ECC信息对接收的数据进行纠错,再对纠错后的正确数据进行解析。然而,当内存控制器106发现接收的数据发生了不可恢复的错误时,由于内存控制器106无法对数据进行正确纠错,因此也无法进行解析,进而无法确定是哪个读命令读取的数据发生了错误。因此,现有技术中内存控制器106会重新执行出现错误之前最近一个读取了正确数据的读命令之后的所有读命令,从而实现对错误数据的恢复。然而,如前所述,由于执行读命令所需的延时较长,现有技术中的这种方式会降低计算机系统的性能。
下面将结合图1对计算机系统100发现读取的数据错误时如何恢复错误数据的方法进行详细的介绍。图2为本申请实施例提供的一种恢复错误数据的方法的信令图。如图2所示,该方法可以包括下述步骤。
在步骤202中,内存控制器106向介质控制器110发送读命令。所述读命令用于读取第一数据。其中,所述读命令中携带有所述读命令的标识(ID)、地址以及长度,所述长度用于指示所述读命令待读取的所述第一数据的大小。所述地址用于指示所述第一数据在NVM112中的物理地址。在本申请实施例中,以第一数据为例进行描述。
在步骤204中,所述介质控制器110根据所述读命令从所述NVM112中读取所述第一数据。具体的,介质控制器110可以根据所述地址及长度从NVM112中读取所述第一数据。在读取所述第一数据后,介质控制器110可以将所述第一数据缓存在读缓存(buffer)114中。在本申请实施例中,介质控制器110在读取第一数据后,可以将第一数据按照64B的粒度为单位进行分块缓存。例如,若第一长度为128B,则可以将第一数据分为2个64B的数据块,分别缓存在NVDIMM108的读缓存114中。实际应用中,在读缓存114中包含有数据输出队列,当介质控制器110从NVM 112读取数据后,可以将读取的数据放入数据输出队列中。从而,介质控制器110可以将数据输出队列中的数据发送给内存控制器106。本领域技术人员可以知道,介质控制器110通常按照先入先出FIFO的方式将数据输出队列中的数据依次发送给内存控制器。可以理解的是,介质控制器110也可以乱序调度数据输出队列中的数据,将数据输出队列中的数据乱序发送给内存控制器。
在步骤206中,NVM控制器110向内存控制器106发送第一ready信号。如前所述,当介质控制器110检测到读缓存114中有数据时,介质控制器110会通过读数据准备(ready)反馈线向内存控制器106发送一个ready信号,用于指示内存控制器待读取的数据已经准备好。在本申请实施例中,为了描述清楚,将本步骤中的ready信号称为第一ready信号。
在步骤208中,内存控制器106向NVM控制器110发送第一send命令。具体的,内存控制器106在接收到介质控制器110发送的第一Ready信号后,会通过命令/地址总线向NVDIMM108发送用于获取数据的第一send命令。所述第一send命令用于指示介质控制器110向内存控制器106发送数据。在本申请实施例中,在内存控制器106中设置有一个send命令等待队列,用于记录发送的send命令及该命令获得的数据的相关信息。
如图3所示,send命令等待队列中每一条条目至少包括“计时器”、“计数器”、“有效位”、“数据”以及“ECC结果”等信息。其中,“计时器”用于记录从发送某个send命令到当前经过的时钟周期。在本申请实施例中,每经过一个时钟周期,有效位为有效的条目的计数器需要增加预设的固定值。例如,每经过一个时钟周期,send命令等待队列中有效位为有效的条目的“计数器”的值需要增加1。“计数器”用于记录内存控制器发送某个send命令后又发送的其他send命令个数。在本申请实施例中,每发出一个send命令,send命令等待队列中有效位为有效的条目的“计数器”的值需要增加预设的固定值。例如,每发出一个send命令,send命令等待队列中有效位为有效的条目的“计数器”的值需要增加1。
“有效位”用于指示该send命令的条目是否有效。换一种表达方式,有效位用于指示该send命令是否完成。如果该send命令已经完成,则将该send命令对应的条目的有效位设置为指示“无效”的标识。若该send命令未完成,则将对应的有效位设置为用于指示“有效”的标识。在本申请实施例中,send命令已经完成是指根据send命令返回的数据已经经过ECC检测没有错误,并且,内存控制器已经开始对send命令取回的数据进行ECC检测后的其他处理流程(例如,数据包解析等处理流程)。若send命令待获取的数据尚未取回,或send命令取回的数据未完成ECC检测,均认为该send命令未完成,则设置该send命令的有效位为用于指示“有效”的标识。在本申请实施例中,用于指示“有效”的标识可以为“1”,用于指示“无效”的标识可以为“0”。实际应用中也可以用其他标识表示“有效”和“无效”,在此不做限定。
“数据”用于记录send命令取回的数据。本领域技术人员可以知道,在内存控制器106发送send命令后的固定时钟周期内,介质控制器会向内存控制器返回数据。在本申请实施例中,当有数据从NVDIMM-P总线上返回时,内存控制器106可以通过匹配计时器的方式,将返回的数据存储到对应的send命令等待队列的条目中。“ECC结果”用于记录内存控制器106根据数据中携带的ECC编码对数据进行检测的结果。实际应用中,可以用设定的检测标识来指示ECC检测结果。例如,可以用“1”表示该数据正确,用“0”表示数据错误。当然,实际应用中,还可以用其他标识来表示检测结果。当数据匹配到对应的send命令等待队列中的条目后,内存控制器106可以开始对该数据进行ECC检测,ECC检测结束后,可以将ECC检测结果记录于该条目的“ECC结果”域中。
在本申请实施例中,当内存控制器106发送一个send命令,会在send命令等待队列中增加一个条目。在增加条目时,需要按照队列的同一个方向增加。例如,在增加条目时,均从队列的头部依次增加。或者,也可以都从队列的尾部依次增加。例如,当内存控制器106发送了第一send命令时,内存控制器106可以将第一send命令增加到send命令等待队列的尾部,并将第一send命令对应的条目中的各个信息分别设置为:计时器值:0;计数器值:0;有效位:有效;数据位:空;ECC结果:空。当内存控制器106发送了第二send命令时,可以在send命令等待队列的尾部再增加一个新的条目,并将第二send命令对应的条目中的各个信息分别设置为:计时器值:0;计数器值:0;有效位:有效;数据位:空;ECC结果:空。将第一send命令对应的条目中信息进行更新,例如,将第一send命令的条目中的计数器值更新为1。
可以理解的是,实际应用中,内存控制器可以根据发送的send命令的数量以及对取回的数据的处理情况对send命令等待队列中的信息进行更新,具体可以如图3所示。本领域技术人员可以理解的是,由于内存控制器发送的多个send命令的是一样,且send命令的发送时间与该send命令取回的数据的接收时间之间具有固定时延(如根据计时器的设定),因此,实际应用中,send命令等待队列中可以不包括send命令标识这一项信息。在这种情况下,内存控制器可以根据各send命令的发送时间以及对应数据的接收时间区分各数据对应的send命令。
在步骤210中,介质控制器110向内存控制器106发送第一数据。如前所述,在内存控制器106发送send命令的固定时延后,介质控制器110会将其缓存中准备好的数据通过数据总线返回给内存控制器106。然而,由于NVM读延时不固定,且NVDIMM-P协议支持读命令的乱序调度。因此,内存控制器在解析读取的数据之前并不知道取回的是哪个读命令的数据。为了方便描述,将内存控制器106发送第一send命令的固定时延后介质控制器110返回的数据称为第一数据。在本申请实施例中,也可以将介质控制器110向内存控制器106发送的数据称为是内存控制器106发送的send命令获取的数据。例如,第一send命令获取的数据为第一数据。
在步骤212中,介质控制器110备份所述第一数据。在本申请实施例中,为了在读取的数据出现错误时,使内存控制器能够快速获得正确的数据,NVM控制110在将读缓存114中输出队列中的数据发送给内存控制器106时,还需要将发送的数据进行备份。如前所述,在本申请实施例提供的NVDIMM中,还设置有一个备份缓存116。备份缓存116用于缓存介质控制器110发送给内存控制器106的数据。具体的,在本步骤中,介质控制器110将第一数据发送给内存控制器106时,也将第一数据缓存在备份缓存116中。在本申请实施例中,备份缓存116中可以设置一个备份队列,该队列以先入先出FIFO的调度规则调度备份的数据。根据这种方式,备份数据需要按照同一个方向进入备份队列。
图4为介质控制器106备份已发送数据的示意图。如图4所示,介质控制器分别响应内存控制器发送的多个send命令,通过输出接口404将数据输出队列402中的数据分别发送给内存控制器。具体的,介质控制器每发送一个数据,会将该数据备份在备份缓存116的备份队列中。数据输出队列402为一段存储空间,备份队列406也是一段存储空间。在本申请实施例中,数据输出队列用于缓存介质控制器待发送给内存控制器的数据,备份队列506用于缓存介质控制器已发送给内存控制器的数据的备份数据。备份队列406可以为一个先进先出的队列。备份数据4062进入备份队列406的方向可以如408所示。实际应用中,根据备份数据4062在备份队列406中的位置,可以获得各备份数据4062在备份队列406中对应的地址4064。为了描述清楚,备份数据在备份队列406中的地址可以如图4中的4064所示。由于备份数据4062是依次从同一个方向进入备份队列的,因此,可以将备份数据在备份队列的序列号作为该备份数据在备份队列中的地址。可以理解的是,随着进入备份队列的数据的增加,则备份队列中的各备份数据的序列号会发生变化,从而,一个备份数据在备份队列中的地址也会随着进入队列的备份数据的增加而发生变化。
例如,当介质控制器110响应第一send命令,将数据Data 0发送给内存控制器时,Data 0被备份到备份队列406中,此时,Data 0在备份队列406中的地址为0。随后,当介质控制器110响应第二send命令,将数据Data 1发送给内存控制器106时,Data 1也进入备份队列406,此时,Data 1在备份队列406中的地址为0,而Data 0在备份队列406中的地址变为1。进一步的,当介质控制器110响应第三send命令,将数据Data 2发送给内存控制器106时,Data 2也进入备份队列406。在这种情况下,如图4所示,由于Data 2为最新进入备份队列406的数据,Data 2在备份队列406中的地址为0,而Data 1在备份队列406中的地址更新为1,Data 0在备份队列406中的地址更新为2。
本领域技术人员可以知道,介质控制器110响应send命令在向内存控制器106返回数据时,每次返回的均是一个固定粒度的数据块,该固定粒度例如可以是64字节或128字节等,在此不做限定。在本申请实施例中,备份缓存116能缓存的数据块的数量必须大于等于内存控制器106发出第一send命令到内存控制器106完成第一数据的ECC校验这个时间段内,内存控制器106能够发送的send命令的数量。例如,以图4所示的Data 0为本申请实施例所述的第一数据为例,则备份缓存116的容量必须大于等于内存控制器106发出用于获取Data 0的第一send命令到内存控制器106完成对Data 0的ECC校验这个时间段内,内存控制器能够发送的send命令获取的数据的总量。由于每个send命令获取的数据都是固定大小的数据,因此,备份缓存116的容量可以根据所述内存控制器发出所述第一send命令到所述内存控制器完成对所述第一数据的ECC检测的时间段内,所述内存控制器发送的send命令的数量来确定。实际应用中,内存控制器106发出第一send命令到内存控制器106完成第一数据的ECC校验这个时间段内,内存控制器106能够发送的send命令的数量S可以根据下述公式获得:
S=INT{(tRL+tBurst+tecc_check)/tBurst}+1;
其中,INT为指取整运算符。tRL用于指示从内存控制器发出所述第一send命令到第一send命令读出的数据出现在总线上的延时。tBurst用于指示数据传输所需要的时钟周期的数量。tecc_check是指从第一数据出现在总线上到内存控制器完成对第一数据的ECC检测的延时。tecc_check至少包括所述内存控制器的端口物理层(Port Physical Layer,PHY)的延时以及对第一数据进行ECC检测的延时。“1”用于指示从内存控制器检测出所述第一数据出现错误到内存控制器发送数据重传指令的最小延时可以为1个周期。根据这种方式,备份缓存116的容量的最小值为S个数据块的大小。需要说明的是,在本申请实施例中,第一数据也指第一数据块。
在步骤214中,内存控制器106检测到所述第一数据出现错误。如前所述,为了防止数据在传输过程中发生错误,通常传输数据时会携带错误校验码(Error CorrectionCode,ECC)。在本步骤中,内存控制器106在接收到第一数据后,可以根据第一数据中携带的ECC信息对接收的所述第一数据进行校验和纠错。当内存控制器106发现该数据出现不可恢复的错误时,该方法进入步骤215。
在步骤215中,内存控制器106停止发送用于获取数据的其他send命令。在本申请实施例中,当内存控制器106检测到其接收的第一数据出现错误时,为了恢复错误的第一数据,内存控制器106将停止用于获取其他数据的send命令。需要说明的是,在本申请实施例中,内存控制器106虽然会停止发送其他send命令,但依然可以接收介质控制器110返回的数据。该方法进入步骤216。
根据一实施例,内存控制器106可设于正常状态或非正常状态。用于获取数据的send命令只限在正常状态时发送。当内存控制器106在非正常状态时,将停止发送用于获取数据的send命令。例如,内存控制器106可以包含一计时器用以设定在正常状态下何时发送send命令。换一种表达方式,内存控制器可以根据计时器来确定发送相邻两个时间点发送的send命令之间的时延。在非正常状态下,内存控制器106可以关掉计时器以进入非正常状态,停止发送send命令。当然,可以理解的是,实际应用中,内存控制器106也可以按照其他方式控制何时发送send命令或停止发送send命令。
在步骤216中,内存控制器106确定(determine)所述第一send命令在从发送所述第一send命令时到当前时间的时间段内所述内存控制器已发送的多个send命令中的序列信息。在本申请实施例中,所述第一数据的序列信息可以根据所述send命令等待队列中与所述第一数据对应的条目中的计数器的值获得。本申请实施例中以获取第一数据的send命令为第一send命令为例,所述第一数据对应的条目中的计数器的值即为第一send命令的序列信息。并且,由于第一send命令对应的条目是从发送第一send命令后开始记录,因此,所述第一send命令的序列信息也可以用于指示发送所述第一send命令后至当前检测出所述第一数据为错误数据时所述内存控制器又发送的send命令的数量。
在步骤218中,内存控制器106向介质控制器110发送数据重传命令。所述数据重传命令用于指示所述介质控制器110重新向所述内存控制器发送第一数据。其中,所述数据重传命令中包含有所述第一send命令的序列信息。实际应用中,数据重传命令可以通过图1所示的总线105的命令/地址总线进行传输。数据重传命令的格式遵从NVDIMM-P协议。
图5-A为本申请实施例提供的一种数据重传命令和发送(send)命令的格式示意图。图5-A所示的数据重传命令504和send命令502的格式是以NVDIMM 108与内存控制器连接的接口为第五代双倍数据率同步动态随机存取内存(double data rate fifth-generation synchronous dynamic random-access memory,DDR5)接口为例来进行示例的。为了描述方便,以数据重传命令504为例进行详细描述。如图5-A所示,一个数据重传命令可以分为两个周期传输,第一个周期的片选信号(chip select,CS)为低(L),第二个周期紧跟着第一个周期,第二个周期的片选信号为高(H)。每个周期又包括时钟的上升沿和时钟的下降沿。如图5-A所示,根据NVDIMM-P协议,命令/地址总线时钟信号的上升沿和下降沿均可以用于传输数据信息。例如,如图5-A所示,时钟的上升沿传输的信息可以参见图5-A中的“Command/Address Signal Rising CLK_t”部分。时钟的下降沿传输的信息可以参见图5-A中的“Command/Address Signal Falling CLK_t”部分。具体的,本申请实施例提供的数据重传命令504中可以包括下述字段。“CS”位为片选信号字段,用于指示该NVDIMM是否被选中(selected)。Rec Pointer[3:0]字段用于指示第一send命令的序列信息。换一种表达方式,Rec Pointer[3:0]字段用于指示待重传的数据所对应的send命令的序列信息。从而介质控制器可以根据该信息确定待重传的数据在备份缓存中的位置。“Mod”字段以及上升沿传输的CA0-CA6部分结合起来用于指示该命令是否为数据重传命令。实际应用中,对于数据重传命令和Send命令,上升沿传输的CA0-CA6部分的信息可以相同,但可以通过“Mod”字段对send命令502和数据重传命令504进行区分。例如,如图5-A所示,对于数据重传命令504和Send命令502,上升沿传输的CA0-CA6位都可以分别为H、L、H、H、H、L和RFU,但send命令502的“Mod”字段和数据重传命令504的“Mod”字段不同。例如,send命令502的“Mod”字段的值可以为000,数据重传命令504的“Mod”字段的值可以为001。图5-A所示的send命令和数据重传命令中的“RFU”字段为未用到的预留字段。
图5-B为本申请实施例提供的另外一种数据重传命令和send命令的格式示意图。图5-B所示的数据重传命令508和send命令506的格式是以NVDIMM 108与内存控制器连接的接口为第四代双倍数据率同步动态随机存取内存(double data rate fourth-generationsynchronous dynamic random-access memory,DDR4)接口为例来进行示例的。为了描述方便,仍然以数据重传命令508为例进行描述。如图5-B所示,“CKE_0”位用于指示时钟信息。“CS_n”位为片选信号,用于指示该NVDIMM是否被选中(selected)。“ACT_n”为激活信号,用于指示该NVDIMM是否被激活。Send命令506和数据重传命令508的A16、A15、A14位可以相同,“A13”位用于区分该命令是否为数据重传命令。例如,当“A13”位指示为高电平“H”时,用于指示该命令为数据重传命令;当“A13”位指示为高电平“H”时,用于指示该命令为send命令。当该命令为数据重传命令时,Rec Pointer[3:0]字段用于指示第一send命令的序列信息。换一种表达方式,Rec Pointer[3:0]字段用于指示待重传的数据所对应的send命令的序列信息。图5-B所示的send命令和数据重传命令中的“RFU”字段为未用到的预留字段。
可以理解的是,图5-A和图5-B仅仅是本申请实施例所示的数据重传命令和发送命令的命令格式的示例。可以理解的是,图5-A和图5-B所示的数据重传命令是根据send命令进行构造的。实际应用中,数据重传命令还可以根据具体协议类型按照类似的命令进行构造。
在步骤219中,介质控制器110根据所述序列信息确定所述第一数据在备份缓存116中的位置信息。由于内存控制器发送一个send命令,在固定的时延后,介质控制器就会返回一个数据,因此,内存控制器发送的send命令和介质控制器根据send命令发送的数据具有一一对应的关系。并且,在本申请实施例中,由于介质控制器备份数据时是按照同一个方向依次放入备份队列的,且备份队列中的数据是按照先入先出FIFO的顺序进行调度的。因此,第一send命令的序列信息又可以指示第一数据在所述备份队列中的位置。具体的,在接收到内存控制器发送的数据重传命令后,介质控制器可以根据数据重传命令中携带的第一send命令的序列信息获得需要重传的所述第一数据在备份缓存116中的位置信息。例如,以第一数据为Data 0为例。内存控制器检测到Data 0错误时,会根据图3所示的send命令的记录信息中的计数器的值获得所述第一send命令的序列信息为2。当介质控制器接收到内存控制器发送的数据重传命令后,会根据数据重传命令中的所述第一send命令的序列信息确定所述第一数据在在备份缓存116中的位置信息为2。
在步骤220中,介质控制器110从备份缓存116中获取备份的第一数据。实际应用中,介质控制器110在确定了所述第一数据在备份缓存116中的位置信息后,可以从备份缓存116中获取对应位置的第一数据,并将所述第一数据放入读缓存114的数据输出队列402中。从而,介质控制器110可以将数据输出队列402中的所述第一数据再次发送给内存控制器。图6为本申请实施例提供的一种介质控制器获取备份数据的示意图。具体的,如图6所示,假设第一数据的位置信息为2,则介质控制器110可以将备份队列中备份FIFO地址为2对应的第一数据的拷贝到读缓存114的数据输出队列402中,具体可以如图6中的602所示。实际应用中,介质控制器110可以将第一数据放入数据输出队列402的尾部,也可以放在数据输出队列402的头部,在此不做限定。
在步骤221中,内存控制器106恢复发送send命令。如前所述,在内存控制器106检测到所述第一数据出现错误时,内存控制器106会停止发送用于获取介质控制器110的读缓存114中的数据的send命令。在本步骤中,当内存控制器106向介质控制器110发送了数据重传命令后,内存控制器106可以恢复向介质控制器110发送用于获取其他数据的send命令。为了描述清楚,在本申请实施例中将内存控制器在发送数据重传命令后恢复发送的第一个send命令称为第二send命令。
在本申请实施例中,由于NVDIMM-P总线协议是兼容标准DDR总线协议的,其数据总线是复用的。根据这种方式,内存控制器106发送的写命令以及用于获取数据的send命令都是复用相同的数据总线。因此,为了防止各命令在总线上的冲突,内存控制器106在向介质控制器110发送命令时,必须遵循一定的时序,从而能够精确调度各访存命令。在本申请实施例中,内存控制器106发送数据重传命令后恢复发送send命令时,数据重传命令和所述第二send命令之间也需要满足一定的时序,否则会造成冲突。为了描述清楚,本申请实施例提供了一种内存控制器发送的各命令之间的时序图。如图7所示,在本申请实施例中,内存控制器通过地址命令总线702向介质控制器发送send命令。若内存控制器106发送所述第一send命令的前一send命令703与发送所述第一send命令705之间具有第一时延704,内存控制器106在图7所示的T1时刻检测到第一数据发生错误。在检测到所述第一数据发生错误的情况下,内存控制器106可以经过第二时延706后向所述介质控制器110恢复发送其他send命令。其中,所述第二时延706大于所述第一时延704。所述第二时延706相当于所述内存控制器106检测到所述第一数据发生错误前最近一次发送的send命令707和检测到所述第一数据发生错误后第一次发送的send命令709之间的时间段。所述第一send命令的前一send命令703与发送所述第一send命令705为发送时间点相邻的两个send命令。可以理解的是,在恢复发送send命令709后,内存控制器还可以按照第一时延704发送下一个send命令711。
实际应用中,为了不造成命令冲突,所述第二时延706还需要大于完成所述数据重传命令的时间708。其中,所述完成数据重传命令的时间708包括将内存控制器106发送数据重传命令710到内存控制器106检测到所述第一数据发生错误后第一次发送的send命令709之间的延时。具体的,完成所述数据重传命令需要的延时至少包括数据重传命令在总线上的传输时间、介质控制器110解析所述数据重传命令的时间以及介质控制器110执行该数据重传命令将数据从备份缓存116的备份FIFO中拷贝到数据输出FIFO的时间。实际应用中,第一时延704以及第二时延706的大小可以根据内存总线带宽、send命令获取的数据的大小等具体情况具体设置,在此不作限定。
在步骤222中,介质控制器110向内存控制器106发送第二ready信号。具体的,当介质控制器110将所述第一数据放入读缓存114的数据输出队列中后,介质控制器110会向内存控制器106发送ready信号以通知所述内存控制器106介质控制器110已经准备好数据。为了描述清楚,本申请实施例将本步骤中介质控制器110发送给内存控制器106的ready信号称为第二ready信号。
在步骤224中,内存控制器106向介质控制器110发送第二send命令。实际应用中,当内存控制器106接收到介质控制器110发送第二ready命令后,内存控制器106会向介质控制器110发送一个send命令,以取回所述NVDIMM的读缓存114中的数据。为了描述清楚,本申请实施例将本步骤中内存控制器106发送给介质控制器110的send命令称为第二send命令。
在步骤226中,介质控制器110向内存控制器106发送第一数据。具体的,介质控制器110接收到所述第二send命令后,在固定的时延后,响应所述第二命令,将所述数据输出FIFO中的所述第一数据重新发送给所述内存控制器106。
需要说明的是,由于send命令是不带标识的,每个send命令都是用于获取固定粒度的数据,内存控制器106发送send命令时,并不知道该send命令取回的是哪个数据。介质控制器110在响应send命令向所述内存控制器发送数据时,也并不知道其响应的是哪个send命令。在本申请实施例中,只是为了方便清楚,将内存控制器发送的几个send命令分别称为第一send命令、第二send命令等。
根据本申请实施例提供的恢复错误数据的方法,当内存控制器检测到介质控制器返回的第一数据发生错误时,内存控制器可以通过确定第一数据对应的第一send命令的序列信息,并向介质控制器发送包含所述序列信息的数据重传指令,从而,介质控制器可以根据接收的所述序列信息从备份缓存中获取备份的第一数据,并将备份的所述第一数据发送给内存控制器,实现对错误的第一数据的恢复。根据本申请实施例提供的方法,内存控制器无需重新执行出现错误之前最近一个读取了正确数据的读命令之后的所有读命令来获取正确的第一数据,从而降低了计算机系统恢复错误数据的延时,提升了计算机系统的性能。
图8为本申请实施例提供的一种内存控制器的结构示意图。如图8所示,内存控制器800可以包括发送模块802、接收模块804、检测模块806、确定模块808。所述发送模块802用于向所述介质控制器发送第一发送(send)命令,所述第一send命令用于指示介质控制器向所述内存控制器返回数据。所述接收模块804用于接收所述介质控制器响应所述第一send命令发送的第一数据。其中,所述第一数据是所述介质控制器读取的所述内存中的数据。所述检测模块806用于检测所述介质控制器响应所述第一send命令返回的第一数据发生错误。所述确定模块808用于确定所述第一send命令在从发送所述第一send命令时到当前时间的时间段内所述内存控制器已发送的多个send命令内的序列信息。所述发送模块802还用于向所述介质控制器发送数据重传命令,所述数据重传命令中包含有所述序列信息,所述数据重传命令用于指示所述介质控制器根据所述序列信息重新发送所述第一数据。
在又一种情况下,所述第一send命令是所述内存控制器已发送给所述介质控制器的某个前一send命令的下一个send命令。换言之,所述某个前一send命令和所述第一send命令为所述内存控制器发送时间点相邻的两个send命令。所述某个前一send命令和所述第一send命令的发送时间之间具有第一时延。在一实施例中,所述内存控制器在正常状态下,每一对相邻的send命令发送时间,都有第一时延的时间间隔限制。
所述发送模块802还用于在检测到所述第一数据发生错误的情况下,经过第二时延后向所述介质控制器发送其他send命令。其中,所述第二时延大于所述第一时延,所述第二时延相当于所述内存控制器检测到所述第一数据发生错误前最近一次发送的send命令和检测到所述第一数据发生错误后第一次发送的send命令发送时间之间的时间段。实际应用中,所述数据重传命令是所述内存控制器在所述第二时延内向所述介质控制器发送的,所述第二时延包括传输所述数据重传命令的时间以及所述介质控制器执行所述数据重传指令的时间。
在又一种情况下,所述内存控制器还包括记录模块810。所述记录模块810用于记录从发送所述第一send命令时到当前时间的时间段内所述内存控制器已发送的send命令的数量。其中,所述数量用于指示所述第一send命令在从发送所述第一send命令时到当前时间的时间段内所述内存控制器已发送的send命令内的序列信息。
需要说明的是,图8所示的内存控制器可以为图1中的内存控制器106。图8所示的内存控制器中各模块的具体功能可以参见前述方法实施例中内存控制器执行的方法步骤的具体描述,在此不再赘述。
图9为本申请实施例提供的一种介质控制器的结构示意图。如图9所示,介质控制器900可以包括接收模块902、确定模块904、发送模块906。具体的,接收模块902用于接收所述内存控制器发送的用于指示所述介质控制器重新发送第一数据的数据重传命令,所述数据重传命令中包含有获取所述第一数据的第一发送(send)命令的序列信息,其中,所述第一数据是所述介质控制器响应所述内存控制器发送的第一send命令发送给所述内存控制器的数据,所述序列信息用于指示所述第一send命令在从发送所述第一send命令时到当前时间的时间段内所述内存控制器已发送的多个send命令中的序列。
所述确定模块904用于根据所述序列信息确定所述第一数据在备份缓存中的位置信息,其中,所述备份缓存用于备份所述介质控制器已发送给所述内存控制器的数据。所述发送模块906用于根据所述位置信息将所述备份缓存中备份的所述第一数据发送给所述内存控制器。其中,所述备份缓存中缓存有所述介质控制器已经发送给所述内存控制器的多个数据,所述多个数据是所述介质控制器分别根据已响应的多个send命令而缓存在所述备份缓存中的,所述介质控制器还用于根据所述多个send命令的接收顺序依先进先出的规则调度所述备份缓存中的数据。
在又一种情况下,所述介质控制器900还包括备份模块908,所述备份模块908用于在根据所述第一send命令向所述内存控制器发送所述第一数据时,将所述第一数据缓存在所述备份缓存中。
在又一种情况下,所述介质控制器还包括拷贝模块905,所述拷贝模块905用于根据所述确定模块904确定的所述第一数据在备份缓存中的位置信息,将将备份缓存中缓存的所述第一数据拷贝到读缓存中。其中,所述读缓存用于缓存所述介质控制器待发送给所述内存控制器的数据。所述接收模块902,还用于接收所述内存控制器发送的第二send命令。所述发送模块906具体用于根据所述第二send命令,将所述读缓存中的所述第一数据重新发送给所述内存控制器。
需要说明的是,图9所示的介质控制器可以为图1中的介质控制器110。图9所示的介质控制器中各模块的具体功能可以参见前述方法实施例中关于介质控制器110执行的方法步骤的具体描述,在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如软盘、硬盘、磁带)、光介质(例如光盘)、或者半导体介质(例如,固态硬盘(solid-statedrive,SSD))等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
需要说明的是,本申请所提供的实施例仅仅是示意性的。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本申请实施例、权利要求以及附图中揭示的特征可以独立存在也可以组合存在。在本申请实施例中以硬件形式描述的特征可以通过软件来执行,反之亦然。在此不做限定。
Claims (23)
1.一种存储器,包括:
存储介质,用于存储数据;
介质控制器,分别与内存控制器以及所述存储介质连接,所述介质控制器用于:
接收所述内存控制器发送的用于指示所述介质控制器重新发送第一数据的数据重传命令,所述数据重传命令中包含有获取所述第一数据的第一发送send命令的序列信息,其中,所述第一数据是所述介质控制器响应所述内存控制器发送的第一send命令发送给所述内存控制器的数据,所述序列信息用于指示所述第一send命令在从发送所述第一send命令时到当前时间的时间段内所述内存控制器已发送的多个send命令中的序列;
根据所述序列信息确定所述第一数据在备份缓存中的位置信息,其中,所述备份缓存用于备份所述介质控制器已发送给所述内存控制器的数据;
根据所述位置信息将所述备份缓存中备份的所述第一数据发送给所述内存控制器。
2.根据权利要求1所述的存储器,其特征在于,所述介质控制器还用于:
根据所述第一数据的位置信息将备份缓存中缓存的所述第一数据拷贝到读缓存中,其中,所述读缓存用于缓存所述介质控制器待发送给所述内存控制器的数据;
接收所述内存控制器发送的第二send命令;
其中,所述介质控制器根据所述第二send命令,将所述读缓存中的所述第一数据发送给所述内存控制器。
3.根据权利要求1或2所述的存储器,其特征在于,所述介质控制器还用于:
在根据所述第一send命令向所述内存控制器发送所述第一数据时,将所述第一数据缓存在所述备份缓存中。
4.根据权利要求1或2所述的存储器,其特征在于,所述备份缓存中缓存有所述介质控制器已经发送给所述内存控制器的多个数据,所述多个数据是所述介质控制器分别根据已响应的多个send命令而缓存在所述备份缓存中的,所述介质控制器还用于根据所述多个send命令的接收顺序依先进先出的规则调度所述备份缓存中的数据。
5.一种内存控制器,所述内存控制器连接介质控制器,所述介质控制器连接内存,所述内存控制器用于:
向所述介质控制器发送第一发送send命令,所述第一send命令用于指示介质控制器向所述内存控制器返回数据;
检测所述介质控制器响应所述第一send命令返回的第一数据发生错误,其中,所述第一数据是所述介质控制器读取的所述内存中的数据;
确定所述第一send命令在从发送所述第一send命令时到当前时间的时间段内所述内存控制器已发送的多个send命令中的序列信息;
向所述介质控制器发送数据重传命令,所述数据重传命令中包含有所述序列信息,所述数据重传命令用于指示所述介质控制器根据所述序列信息重新发送所述第一数据。
6.根据权利要求5所述的内存控制器,其特征在于,所述第一send命令是所述内存控制器已发送给所述介质控制器的某个前一send命令的下一个send命令,所述某个前一send命令和所述第一send命令的发送时间之间具有第一时延,所述内存控制器还用于:
在检测到所述第一数据发生错误时,经过第二时延后向所述介质控制器发送其他send命令,其中,所述第二时延大于所述第一时延,所述第二时延相当于所述内存控制器检测到所述第一数据发生错误前最近一次发送的send命令和检测到所述第一数据发生错误后第一次发送的send命令发送时间之间的时间段。
7.根据权利要求6所述的内存控制器,其特征在于,所述数据重传命令是所述内存控制器在所述第二时延内向所述介质控制器发送的,所述第二时延包括传输所述数据重传命令的时间以及所述介质控制器执行所述数据重传命令的时间。
8.根据权利要求5-7任意一项所述的内存控制器,其特征在于,所述内存控制器还用于:
记录从发送所述第一send命令时到当前时间的时间段内所述内存控制器已发送的send命令的数量,其中,所述数量用于指示所述第一send命令在从发送所述第一send命令时到当前时间的时间段内所述内存控制器已发送的send命令内的序列信息。
9.一种内存数据的错误恢复方法,所述方法应用于计算机系统中,所述计算机系统包括内存控制器以及介质控制器,所述方法包括:
所述介质控制器接收所述内存控制器发送的用于指示所述介质控制器重新发送第一数据的数据重传命令,所述数据重传命令中包含有获取所述第一数据的第一发送send命令的序列信息,其中,所述第一数据是所述介质控制器响应所述内存控制器发送的第一send命令发送给所述内存控制器的数据,所述序列信息用于指示所述第一send命令在从发送所述第一send命令时到当前时间的时间段内所述内存控制器已发送的多个send命令中的序列;
所述介质控制器根据所述序列信息确定所述第一数据在备份缓存中的位置信息,其中,所述备份缓存用于备份所述介质控制器已发送给所述内存控制器的数据;
所述介质控制器根据所述位置信息将所述备份缓存中备份的所述第一数据发送给所述内存控制器。
10.根据权利要求9所述的方法,其特征在于,所述介质控制器根据所述位置信息将所述备份缓存中备份的所述第一数据发送给所述内存控制器包括:
所述介质控制器根据所述第一数据的位置信息将备份缓存中缓存的所述第一数据拷贝到读缓存中,其中,所述读缓存用于缓存所述介质控制器待发送给所述内存控制器的数据;
所述介质控制器接收所述内存控制器发送的第二send命令;
所述介质控制器根据所述第二send命令,将所述读缓存中的所述第一数据发送给所述内存控制器。
11.根据权利要求9或10所述的方法,其特征在于,还包括:
所述介质控制器在根据所述第一send命令向所述内存控制器发送所述第一数据时,将所述第一数据缓存在所述备份缓存中。
12.根据权利要求9或10所述的方法,其特征在于,所述备份缓存中缓存有所述介质控制器已经发送给所述内存控制器的多个数据,所述多个数据是所述介质控制器分别根据已响应的多个send命令而缓存在所述备份缓存中的,所述方法还包括:
所述介质控制器根据所述多个send命令的接收顺序依先进先出的规则调度所述备份缓存中的数据。
13.一种内存数据的错误恢复方法,所述方法应用于计算机系统中,所述计算机系统包括内存控制器以及介质控制器,所述方法包括:
所述内存控制器向所述介质控制器发送第一发送send命令,所述第一send命令用于指示介质控制器向所述内存控制器返回数据;
所述内存控制器检测所述介质控制器响应所述第一send命令返回的第一数据发生错误,其中,所述第一数据是所述介质控制器读取的所述内存中的数据;
所述内存控制器确定所述第一send命令在从发送所述第一send命令时到当前时间的时间段内所述内存控制器已发送的多个send命令内的序列信息;
所述内存控制器向所述介质控制器发送数据重传命令,所述数据重传命令中包含有所述序列信息,所述数据重传命令用于指示所述介质控制器根据所述序列信息重新发送所述第一数据。
14.根据权利要求13所述的方法,其特征在于,所述第一send命令是所述内存控制器已发送给所述介质控制器的某个前一send命令的下一个send命令,所述某个前一send命令和所述第一send命令的发送时间之间具有第一时延,所述方法还包括:
在检测到所述第一数据发生错误时,所述内存控制器经过第二时延后向所述介质控制器发送其他send命令,其中,所述第二时延大于所述第一时延,所述第二时延相当于所述内存控制器检测到所述第一数据发生错误前最近一次发送的send命令和检测到所述第一数据发生错误后第一次发送的send命令发送时间之间的时间段。
15.根据权利要求14所述的方法,其特征在于,所述数据重传命令是所述内存控制器在所述第二时延内向所述介质控制器发送的,所述第二时延至少包括传输所述数据重传命令的时间以及所述介质控制器执行所述数据重传命令的时间。
16.根据权利要求13-15任意一项所述的方法,其特征在于,还包括:
所述内存控制器记录从发送所述第一send命令时到当前时间的时间段内所述内存控制器已发送的send命令的数量,所述数量用于指示所述第一send命令在从发送所述第一send命令时到当前时间的时间段内所述内存控制器已发送的send命令内的序列信息。
17.一种计算机系统,其特征在于,包括内存控制器、介质控制器以及与所述介质控制器连接的内存,所述内存控制器用于:
向所述介质控制器发送第一发送send命令,所述第一send命令用于指示介质控制器向所述内存控制器返回数据;
检测所述介质控制器响应所述第一send命令返回的第一数据发生错误,其中,所述第一数据是所述介质控制器读取的所述内存中的数据;
确定所述第一send命令在从发送所述第一send命令时到当前时间的时间段内所述内存控制器已发送的多个send命令中的序列信息;
向所述介质控制器发送数据重传命令,所述数据重传命令中包含有所述序列信息,所述数据重传命令用于指示所述介质控制器根据所述序列信息重新发送所述第一数据。
18.根据权利要求17所述的计算机系统,其特征在于,所述介质控制器用于:
接收所述内存控制器发送的用于指示所述介质控制器重新发送所述第一数据的所述数据重传命令;
根据所述数据重传命令中的所述序列信息确定所述第一数据在备份缓存中的位置信息,其中,所述备份缓存用于备份所述介质控制器已发送给所述内存控制器的数据;
根据所述位置信息将所述备份缓存中备份的所述第一数据发送给所述内存控制器。
19.根据权利要求17或18所述的计算机系统,其特征在于,所述介质控制器还用于:
根据所述第一数据的位置信息将备份缓存中缓存的所述第一数据拷贝到读缓存中,其中,所述读缓存用于缓存所述介质控制器待发送给所述内存控制器的数据;
接收所述内存控制器发送的第二send命令;
其中,所述介质控制器根据所述第二send命令,将所述读缓存中的所述第一数据发送给所述内存控制器。
20.根据权利要求17或18所述的计算机系统,其特征在于,所述介质控制器还用于:
在根据所述第一send命令向所述内存控制器发送所述第一数据时,将所述第一数据缓存在备份缓存中。
21.根据权利要求18所述的计算机系统,其特征在于,所述备份缓存中缓存有所述介质控制器已经发送给所述内存控制器的多个数据,所述多个数据是所述介质控制器分别根据已响应的多个send命令而缓存在所述备份缓存中的,所述介质控制器还用于根据所述多个send命令的接收顺序依先进先出的规则调度所述备份缓存中的数据。
22.根据权利要求17或18所述的计算机系统,其特征在于,所述第一send命令是所述内存控制器已发送给所述介质控制器的某个前一send命令的下一个send命令,所述某个前一send命令和所述第一send命令的发送时间之间具有第一时延,所述内存控制器还用于:
在检测到所述第一数据发生错误时,经过第二时延后向所述介质控制器发送其他send命令,其中,所述第二时延大于所述第一时延,所述第二时延相当于所述内存控制器检测到所述第一数据发生错误前最近一次发送的send命令和检测到所述第一数据发生错误后第一次发送的send命令发送时间之间的时间段。
23.根据权利要求17或18所述的计算机系统,其特征在于,所述内存控制器还用于:
记录从发送所述第一send命令时到当前时间的时间段内所述内存控制器已发送的send命令的数量,所述数量用于指示所述第一send命令在从发送所述第一send命令时到当前时间的时间段内所述内存控制器已发送的send命令内的序列信息。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2017/114997 WO2019109299A1 (zh) | 2017-12-07 | 2017-12-07 | 内存访问技术及计算机系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111448543A CN111448543A (zh) | 2020-07-24 |
CN111448543B true CN111448543B (zh) | 2021-10-01 |
Family
ID=66750009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780097436.9A Active CN111448543B (zh) | 2017-12-07 | 2017-12-07 | 内存访问技术及计算机系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11784756B2 (zh) |
CN (1) | CN111448543B (zh) |
WO (1) | WO2019109299A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11132145B2 (en) * | 2018-03-14 | 2021-09-28 | Apple Inc. | Techniques for reducing write amplification on solid state storage devices (SSDs) |
WO2019200142A1 (en) * | 2018-04-12 | 2019-10-17 | Micron Technology, Inc. | Replay protected memory block command queue |
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 |
KR20210087350A (ko) * | 2020-01-02 | 2021-07-12 | 삼성전자주식회사 | 저장 장치 및 이의 동작 방법 |
CN112261142B (zh) * | 2020-10-23 | 2023-07-14 | 浪潮(北京)电子信息产业有限公司 | 一种rdma网络的数据重传方法、装置及fpga |
CN114399895A (zh) * | 2021-12-24 | 2022-04-26 | 北京经纬恒润科技股份有限公司 | 一种车用遥控器和控制器的匹配方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101000590A (zh) * | 2007-01-22 | 2007-07-18 | 北京中星微电子有限公司 | 一种读取内存中数据的方法和系统 |
CN101546291A (zh) * | 2009-05-12 | 2009-09-30 | 华为技术有限公司 | 提高内存数据健壮性的存取方法和装置 |
CN102385533A (zh) * | 2010-08-30 | 2012-03-21 | 鸿富锦精密工业(深圳)有限公司 | 计算机及其内存运行错误时的重启方法 |
CN102880529A (zh) * | 2012-09-13 | 2013-01-16 | 新浪网技术(中国)有限公司 | 内存数据备份方法及内存数据备份系统 |
CN106407130A (zh) * | 2016-09-12 | 2017-02-15 | 深圳易充新能源(深圳)有限公司 | 一种Nandflash内存数据管理的方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8595435B2 (en) * | 2009-07-30 | 2013-11-26 | Cleversafe, Inc. | Dispersed storage write process |
EP2102999A4 (en) * | 2006-12-21 | 2016-09-14 | Optis Wireless Technology Llc | METHOD AND ARRANGEMENT IN A COMMUNICATION SYSTEM |
JP4627327B2 (ja) * | 2008-05-23 | 2011-02-09 | 富士通株式会社 | 異常判定装置 |
US8365015B1 (en) | 2010-08-09 | 2013-01-29 | Nvidia Corporation | Memory-based error recovery |
JP5899893B2 (ja) * | 2011-12-19 | 2016-04-06 | 富士通株式会社 | ストレージ装置、コマンド実行制御方法、およびプログラム |
US9753793B2 (en) | 2014-06-30 | 2017-09-05 | Intel Corporation | Techniques for handling errors in persistent memory |
KR20170131797A (ko) * | 2016-05-20 | 2017-11-30 | 삼성전자주식회사 | 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 태그 에러 테스트 방법 |
US10592114B2 (en) | 2016-03-03 | 2020-03-17 | Samsung Electronics Co., Ltd. | Coordinated in-module RAS features for synchronous DDR compatible memory |
US10152237B2 (en) * | 2016-05-05 | 2018-12-11 | Micron Technology, Inc. | Non-deterministic memory protocol |
US20180059933A1 (en) * | 2016-08-26 | 2018-03-01 | Sandisk Technologies Llc | Electrically-Buffered NV-DIMM and Method for Use Therewith |
US10127074B2 (en) * | 2017-01-27 | 2018-11-13 | Futurewei Technologies, Inc. | Transaction identification synchronization |
-
2017
- 2017-12-07 WO PCT/CN2017/114997 patent/WO2019109299A1/zh active Application Filing
- 2017-12-07 CN CN201780097436.9A patent/CN111448543B/zh active Active
-
2020
- 2020-06-05 US US16/893,748 patent/US11784756B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101000590A (zh) * | 2007-01-22 | 2007-07-18 | 北京中星微电子有限公司 | 一种读取内存中数据的方法和系统 |
CN101546291A (zh) * | 2009-05-12 | 2009-09-30 | 华为技术有限公司 | 提高内存数据健壮性的存取方法和装置 |
CN102385533A (zh) * | 2010-08-30 | 2012-03-21 | 鸿富锦精密工业(深圳)有限公司 | 计算机及其内存运行错误时的重启方法 |
CN102880529A (zh) * | 2012-09-13 | 2013-01-16 | 新浪网技术(中国)有限公司 | 内存数据备份方法及内存数据备份系统 |
CN106407130A (zh) * | 2016-09-12 | 2017-02-15 | 深圳易充新能源(深圳)有限公司 | 一种Nandflash内存数据管理的方法 |
Non-Patent Citations (2)
Title |
---|
AS8-static random access memory (SRAM): asymmetric SRAM architecture for soft error hardening enhancement;Ihsen Alouani 等;《IET Circuits, Devices & Systems》;20170101;全文 * |
内存计算技术研究综述;罗乐 等;《软件学报》;20160801;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111448543A (zh) | 2020-07-24 |
US11784756B2 (en) | 2023-10-10 |
WO2019109299A1 (zh) | 2019-06-13 |
US20200304238A1 (en) | 2020-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111448543B (zh) | 内存访问技术及计算机系统 | |
EP3702927B1 (en) | Flit-based parallel-forward error correction and parity | |
KR102384907B1 (ko) | 비-휘발성 메모리에 대한 기록 크레딧 관리 | |
US20130254457A1 (en) | Methods and structure for rapid offloading of cached data in a volatile cache memory of a storage controller to a nonvolatile memory | |
JP7162102B2 (ja) | メモリアクセス技術およびコンピュータシステム | |
US11650765B2 (en) | Apparatus and method for performing persistent write operations using a persistent write command | |
US20150370655A1 (en) | Memory module controller supporting extended writes | |
US9021147B1 (en) | Command queuing in disk drives | |
JP5932947B2 (ja) | ホスト及びシステム | |
CN112384899A (zh) | 用于能量支持存储器的持久写入数据 | |
EP3542519B1 (en) | Faster data transfer with remote direct memory access communications | |
WO2024037076A1 (zh) | 数据交互方法、装置、系统、电子设备和存储介质 | |
US7437593B2 (en) | Apparatus, system, and method for managing errors in prefetched data | |
US10901868B1 (en) | Systems and methods for error recovery in NAND memory operations | |
JP2008129885A (ja) | ディスク装置、データ転送システム及びそれに用いるデータ転送方法 | |
KR20080066463A (ko) | 멀티미디어 저장장치 및 그 제어방법 | |
KR20190052490A (ko) | 반도체 메모리 모듈, 반도체 메모리 시스템, 그리고 반도체 메모리 모듈을 액세스하는 액세스 방법 | |
RU2780441C2 (ru) | Постоянные записи для энергонезависимой памяти | |
US20070174738A1 (en) | Disk device, method of writing data in disk device, and computer product | |
CN113934671A (zh) | 一种接口控制芯片及网络设备 |
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 |