CN108139879B - 一种数据访问的方法及内存控制器 - Google Patents
一种数据访问的方法及内存控制器 Download PDFInfo
- Publication number
- CN108139879B CN108139879B CN201680057289.8A CN201680057289A CN108139879B CN 108139879 B CN108139879 B CN 108139879B CN 201680057289 A CN201680057289 A CN 201680057289A CN 108139879 B CN108139879 B CN 108139879B
- Authority
- CN
- China
- Prior art keywords
- data
- command
- access command
- slave device
- read
- 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/16—Sound input; Sound output
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Dram (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例公开了一种数据访问的方法及内存控制器,在该方法中,内存控制器构造提前访问命令,提前访问命令中包含访问请求携带的目的地址;然后根据预设提前量向DDR从设备发送提前访问命令,该提前访问命令用于控制DDR从设备执行数据访问的预处理流程;当内存控制器向DDR从设备发送数据访问命令时;可根据数据访问命令的发送时间和预设的数据访问延迟时间启动数据传输链路,完成数据访问。采用本发明,可使得内存控制器基于DDR总线访问DDR从设备时,避免时延过大导致系统出错情况,提高了内存控制器访问DDR从设备的效率。
Description
技术领域
本发明涉及信息技术领域,尤其涉及一种数据访问的方法及内存控制器。
背景技术
随着通信技术的进步和用户通信需求的提升,海量数据、超大规模并发的大数据时代已经来临。为了满足快速增长的计算、数据处理以及存储需求,数据中心的架构也在不断演进。系统互连技术是数据中心的关键技术,低延迟、高带宽的互连决定了数据中心内部的通信效率和处理吞吐量。双倍数据速率(Double Data Rate,简称DDR)技术已经演进至第四代并商用,即DDR4,具有高带宽(最高可达200G)、低延迟(数十纳秒级别)的特点,具有承载系统互连的潜力;除了系统互连之外,快速高效的实现海量内存/非易失性存储器(Non-Volatile Memory,简称NVM)存储扩展也是下一代数据中心的关键研究内容。通过内存扩展,可以满足大数据处理对于内存计算的需求,提高计算性能,降低任务的处理时延;通过NVM扩展,可以提高数据存储的容量和访问性能,满足海量存储需求。由于DDR接口具有高带宽、低延迟的特点,并且其工作模式的设计就是为了访问内存,是扩展内存和NVM的首选。
但是,由于DDR总线原本被设计用来直接访问动态随机存取存储器 (DynamicRandom Access Memory,简称DRAM)内存颗粒,只需十几到几十个纳秒即可完成一次读写访问,时延很短,因此DDR协议中规定的关键时延参数:列地址脉冲选通潜伏期(CAS Latency,简称CL)/读取潜伏期(Read latency,简称RL)(即从读取命令到第一个读数据返回之间的时间间隔)、列地址脉冲选通写入潜伏期(CAS write latency,简称CWL)/写入潜伏期(Write latency,简称WL)(即从写入命令到发送第一个写数据之间的时间间隔)的有效时延范围较小,例如DDR4协议中的CL有效时延范围为9~24个时钟周期,最大值为30纳秒。由于内存控制器(Memory Controller,简称MC)也是基于DDR 协议设计和实现,能够设置的读写延迟同样较短,因此直接将系统内原来不存在的DDR从设备如扩展内存、远端互联设备等与内存控制器互连,配合现有的内存进行访问扩展时,如果DDR从设备内部需要进行数据传输导致内存控制器无法直接通过DDR总线访问DDR从设备的存储单元时,会出现访问时序无法满足DDR协议的要求的情况,使得挂载在DDR总线上,用于响应内存控制器的数据访问命令的DDR从设备无法和内存控制器正常通信。例如当内存控制器发出一个读取命令后,DDR从设备必须在DDR协议规定的时间内回复正确的数据,否则内存控制器就会采集到错误的数据,从而引起系统错误,但是由于DDR从设备中的控制器需要先从其存储单元获取数据才能回复给内存控制器,因此时延过大无法满足DDR协议的要求。
发明内容
本发明实施例所要解决的技术问题在于,提供一种数据访问的方法及内存控制器。以解决内存控制器基于DDR总线访问DDR从设备时系统出错的问题。
第一方面,本发明实施例提供了一种数据访问的方法,应用于包含内存控制器以及DDR从设备的计算机系统,包括:
内存控制器构造提前访问命令,所述提前访问命令中包含访问请求携带的目的地址;
根据预设提前量向所述DDR从设备发送所述提前访问命令,所述提前访问命令用于控制所述DDR从设备执行数据访问的预处理流程;
向所述DDR从设备发送数据访问命令;
根据所述数据访问命令的发送时间和预设的数据访问延迟时间启动数据传输链路,完成数据访问。
实施上述实施方式,通过构造提前访问命令,并提前发送给DDR从设备,使得DDR从设备可以在接收到数据访问命令之前,执行数据访问的预处理流程,提前做好数据访问的准备,当内存控制器发送数据访问命令时,可以在较短的延迟时间内与数据总线之间完成数据访问,内存控制器可在符合DDR协议的前提下采样到正确的数据,简化了DDR总线扩展访问的方法和流程,提高了DDR总线的传输效率。
结合第一方面,在第一方面第一种可能的实现方式中,所述内存控制器构造提前访问命令,包括:
基于模式寄存器设置MRS命令中的预留字段构造提前访问命令;或者
基于DDR协议中预留的字段构造提前访问命令。
实施上述实施方式,可以基于现有已使用的资源进行改造或基于现有已存在但未使用的资源进行构造,构造的提前访问命令可以很好的兼容现有DDR 协议,且提高了现有资源的利用率。
结合第一方面或结合第一方面第一种可能的实现方式,在第一方面第二种可能的实现方式中,所述内存控制器基于模式寄存器设置MRS命令中的预留字段构造提前访问命令,包括:
所述内存控制器修改所述MRS命令中的第一预留字段的值以区分MRS 命令和提前访问命令;
将所述MRS命令中的第二预留字段的值修改为目的地址信息。
实施上述实施方式,通过修改MRS命令中的预留字段以携带提前访问标识和目的地址,实现了对现有MRS命令的改造,既不会和现有MRS命令冲突,又能完美兼容现有DDR协议。
结合第一方面,在第一方面第三种可能的实现方式中,所述预设提前量的获取方式包括:
从所述DDR从设备的串行存在检测SPD模块中读取所述DDR从设备所支持的扩展数据访问延迟时间,所述扩展数据访问延迟时间为所述内存控制器发送提前访问命令到根据数据访问命令访问到第一个数据时的延迟时间;
选择所述内存控制器发送数据访问命令到根据数据访问命令访问到第一个数据时的数据访问延迟时间,利用所述扩展数据访问延迟时间减去所述数据访问延迟时间得到所述预设提前量。
实施上述实施方式,可以得到比较精确的提前量来发送提前访问命令,既不会提前太多导致DDR从设备一直等待,也不会由于提前量不够导致系统出错。
结合第一方面,在第一方面第四种可能的实现方式中,所述预设提前量的获取方式包括:
对数据访问链路进行训练得到所述预设提前量,将读取提前量设置为N,通过对已知数值的位置进行读取,若未读取到已知数值,则对读取提前量进行递增并继续对已知数值的位置进行读取直至读取到的数值与已知数值相同,记录当前的读取提前量为读取数据的预设提前量;在读取数据的预设提前量确定之后,将写入提前量设置为M,向预设位置写入已知数值并读取检查,若未读取到已知数值,则对写入提前量递增并继续预设位置的值进行读取直至读取到已知数值,记录当前的写入提前量为写入数据的预设提前量,其中,M、N 均为大于或等于1的整数。
实施上述实施方式,通过链路训练的方式同样可以得到比较精确的提前量来发送提前访问命令,既不会提前太多导致DDR从设备一直等待,也不会由于提前量不够导致系统出错。
结合第一方面第一至第四种任一可能的实现方式,在第一方面第五种可能的实现方式中,若所述数据访问命令为数据读取命令,则所述内存控制器根据 MRS命令中的预留字段构造第一提前访问命令和第二提前访问命令,所述第一提前访问命令携带所述目的地址的部分地址信息,所述第二提前访问命令携带所述目的地址的剩余部分地址信息,在向所述DDR从设备发送数据读取命令之前,根据第一预设提前量将所述第一提前访问命令和第二提前访问命令发送给所述DDR从设备,所述第一提前访问命令和第二提前访问命令用于控制所述DDR从设备根据所述目的地址从目标位置读取数据并将读取的数据传输至数据总线上;
所述内存控制器发送数据读取命令至所述DDR从设备,采样所述数据总线上的数据,完成读取访问。
实施上述实施方式,可以使得读取访问正常进行,实现DDR从设备的扩展,提升系统容量,确保数据读取访问的正常进行。
结合第一方面第一至第四种任一可能的实现方式,在第一方面第六种可能的实现方式中,若所述数据访问命令为数据写入命令,则所述内存控制器根据 MRS命令中的预留字段构造第三提前访问命令和第四提前访问命令,所述第三提前访问命令携带所述目的地址的部分地址信息,所述第四提前访问命令携带所述目的地址的剩余部分地址信息,在向所述DDR从设备发送数据写入命令之前,根据第二预设提前量将所述第三提前访问命令和第四提前访问命令发送给所述DDR从设备,所述第三提前访问命令和第四提前访问命令用于控制所述DDR从设备根据所述目的地址启动接收链路接收数据总线上的数据;
所述内存控制器发送数据写入命令至所述DDR从设备,将数据发送到所述数据总线上,完成写入访问。
实施上述实施方式,可以使得写入访问正常进行,实现DDR从设备的扩展,提升系统容量,确保数据写入访问的正常进行。
第二方面,本发明实施例提供了一种内存控制器,应用于包含DDR从设备的计算机系统,包括:
构造单元,用于构造提前访问命令,所述提前访问命令中包含访问请求携带的目的地址;
发送单元,用于根据预设提前量向所述DDR从设备发送所述提前访问命令,所述提前访问命令用于控制所述DDR从设备执行数据访问的预处理流程;
所述发送单元还用于向所述DDR从设备发送数据访问命令;
传输控制单元,用于根据所述数据访问命令的发送时间和预设的数据访问延迟时间启动数据传输链路,完成数据访问。
结合第二方面,在第二方面第一种可能的实现方式中,所述构造单元具体用于:
基于模式寄存器设置MRS命令中的预留字段构造提前访问命令;或者
基于DDR协议中预留的字段构造提前访问命令。
结合第二方面或结合第二方面第一种可能的实现方式,在第二方面第二种可能的实现方式中,所述构造单元具体用于:
修改所述MRS命令中的第一预留字段的值以区分MRS命令和提前访问命令;
将所述MRS命令中的第二预留字段的值修改为目的地址信息。
结合第二方面,在第二方面第三种可能的实现方式中,所述内控控制器还包括:
获取单元,用于从所述DDR从设备的串行存在检测SPD模块中读取所述 DDR从设备所支持的扩展数据访问延迟时间,所述扩展数据访问延迟时间为所述内存控制器发送提前访问命令到根据数据访问命令访问到第一个数据时的延迟时间;
选择所述内存控制器发送数据访问命令到根据数据访问命令访问到第一个数据时的数据访问延迟时间,利用所述扩展数据访问延迟时间减去所述数据访问延迟时间得到所述预设提前量。
结合第二方面,在第二方面第四种可能的实现方式中,所述内控控制器还包括:
获取单元,用于对数据访问链路进行训练得到所述预设提前量,将读取提前量设置为N,通过对已知数值的位置进行读取,若未读取到已知数值,则对读取提前量进行递增并继续对已知数值的位置进行读取直至读取到的数值与已知数值相同,记录当前的读取提前量为读取数据的预设提前量;在读取数据的预设提前量确定之后,将写入提前量设置为M,向预设位置写入已知数值并读取检查,若未读取到已知数值,则对写入提前量递增并继续预设位置的值进行读取直至读取到已知数值,记录当前的写入提前量为写入数据的预设提前量,其中,M、N均为大于或等于1的整数。
结合二方面第一至第四种任一可能的实现方式,在第二方面第五种可能的实现方式中,若所述数据访问命令为数据读取命令,则所述构造单元用于根据 MRS命令中的预留字段构造第一提前访问命令和第二提前访问命令,所述第一提前访问命令携带所述目的地址的部分地址信息,所述第二提前访问命令携带所述目的地址的剩余部分地址信息,所述发送单元用于在向所述DDR从设备发送数据读取命令之前,根据第一预设提前量将所述第一提前访问命令和第二提前访问命令发送给所述DDR从设备,所述第一提前访问命令和第二提前访问命令用于控制所述DDR从设备根据所述目的地址从目标位置读取数据并将读取的数据传输至数据总线上;
所述发送单元还用于发送数据读取命令至所述DDR从设备,所述传输控制单元用于采样所述数据总线上的数据,完成读取访问。
结合二方面第一至第四种任一可能的实现方式,在第二方面第六种可能的实现方式中,若所述数据访问命令为数据写入命令,则所述构造单元用于根据 MRS命令中的预留字段构造第三提前访问命令和第四提前访问命令,所述第三提前访问命令携带所述目的地址的部分地址信息,所述第四提前访问命令携带所述目的地址的剩余部分地址信息,所述发送单元用于在向所述DDR从设备发送数据写入命令之前,根据第二预设提前量将所述第三提前访问命令和第四提前访问命令发送给所述DDR从设备,所述第三提前访问命令和第四提前访问命令用于控制所述DDR从设备根据所述目的地址启动接收链路接收数据总线上的数据;
所述发送单元还用于发送数据写入命令至所述DDR从设备,所述传输控制单元用于将数据发送到所述数据总线上,完成写入访问。
第三方面,本发明实施例提供了一种内存控制器,应用于包含DDR从设备的计算机系统,与所述DDR从设备通过DDR总线连接,包括:
处理器、存储器、接口电路和总线,所述处理器、存储器和接口电路通过所述总线连接并完成相互间的通信,其中,所述存储器用于存储一组程序代码,所述处理器用于调用所述存储器中存储的程序代码,执行以下操作:
构造提前访问命令,所述提前访问命令中包含访问请求携带的目的地址;
根据预设提前量并通过所述接口电路向所述DDR从设备发送所述提前访问命令,所述提前访问命令用于控制所述DDR从设备执行数据访问的预处理流程;
通过所述接口电路向所述DDR从设备发送数据访问命令;
根据所述数据访问命令的发送时间和预设的数据访问延迟时间启动数据传输链路,完成数据访问。
结合第三方面,在第三方面第一种可能的实现方式中,所述处理器构造提前访问命令的方式具体包括:
基于模式寄存器设置MRS命令中的预留字段构造提前访问命令;或者
基于DDR协议中预留的字段构造提前访问命令。
结合第三方面或结合第三方面第一种可能的实现方式,在第三方面第二种可能的实现方式中,所述处理器基于模式寄存器设置MRS命令中的预留字段构造提前访问命令,具体包括:
修改所述MRS命令中的第一预留字段的值以区分MRS命令和提前访问命令;
将所述MRS命令中的第二预留字段的值修改为目的地址信息。
结合第三方面,在第三方面第三种可能的实现方式中,所述处理器获取所述预设提前量的方式具体包括:
从所述DDR从设备的串行存在检测SPD模块中读取所述DDR从设备所支持的扩展数据访问延迟时间,所述扩展数据访问延迟时间为所述内存控制器发送提前访问命令到根据数据访问命令访问到第一个数据时的延迟时间;
选择所述内存控制器发送数据访问命令到根据数据访问命令访问到第一个数据时的数据访问延迟时间,利用所述扩展数据访问延迟时间减去所述数据访问延迟时间得到所述预设提前量。
结合第三方面,在第三方面第四种可能的实现方式中,所述处理器获取所述预设提前量的方式具体包括:
对数据访问链路进行训练得到所述预设提前量,将读取提前量设置为N,通过对已知数值的位置进行读取,若未读取到已知数值,则对读取提前量进行递增并继续对已知数值的位置进行读取直至读取到的数值与已知数值相同,记录当前的读取提前量为读取数据的预设提前量;在读取数据的预设提前量确定之后,将写入提前量设置为M,向预设位置写入已知数值并读取检查,若未读取到已知数值,则对写入提前量递增并继续预设位置的值进行读取直至读取到已知数值,记录当前的写入提前量为写入数据的预设提前量,其中,M、N 均为大于或等于1的整数。
结合三方面第一至第四种任一可能的实现方式,在第三方面第五种可能的实现方式中,若所述数据访问命令为数据读取命令,则所述处理器具体用于根据MRS命令中的预留字段构造第一提前访问命令和第二提前访问命令,所述第一提前访问命令携带所述目的地址的部分地址信息,所述第二提前访问命令携带所述目的地址的剩余部分地址信息,在通过所述接口电路向所述DDR从设备发送数据读取命令之前,根据第一预设提前量将所述第一提前访问命令和第二提前访问命令发送给所述DDR从设备,所述第一提前访问命令和第二提前访问命令用于控制所述DDR从设备根据所述目的地址从目标位置读取数据并将读取的数据传输至数据总线上;
通过所述接口电路发送数据读取命令至所述DDR从设备,采样所述数据总线上的数据,完成读取访问。
结合三方面第一至第四种任一可能的实现方式,在第三方面第六种可能的实现方式中,若所述数据访问命令为数据写入命令,则所述处理器具体用于根据MRS命令中的预留字段构造第三提前访问命令和第四提前访问命令,所述第三提前访问命令携带所述目的地址的部分地址信息,所述第四提前访问命令携带所述目的地址的剩余部分地址信息,在通过所述接口电路向所述DDR从设备发送数据写入命令之前,根据第二预设提前量将所述第三提前访问命令和第四提前访问命令发送给所述DDR从设备,所述第三提前访问命令和第四提前访问命令用于控制所述DDR从设备根据所述目的地址启动接收链路接收数据总线上的数据;
通过所述接口电路发送数据写入命令至所述DDR从设备,将数据发送到所述数据总线上,完成写入访问。
第四方面,本发明实施例提供了一种计算机存储介质,所述计算机存储介质包括一组程序代码,用于执行如本发明实施例第一方面任一实现方式所述的方法。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。
图1为本发明实施例提供的内存控制器访问DDR从设备的系统架构示意图;
图2为本发明实施例提供的一种数据访问的方法的流程示意图;
图3为本发明实施例提供的另一种数据访问的方法的流程示意图;
图4为使用图3所述方法进行数据访问的时序示意图;
图5为本发明实施例提供的又一种数据访问的方法的流程示意图;
图6为使用图5所述方法进行数据访问的时序示意图;
图7为本发明实施例读取数据时链路训练得到预设提前量的流程示意图;
图8为本发明实施例提供的一种内存控制器的组成示意图;
图9为本发明实施例提供的另一种内存控制器的组成示意图;
图10为本发明实施例提供的又一种内存控制器的组成示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参照图1,为本发明实施例提供的内存控制器访问DDR从设备的系统架构示意图。在该典型应用场景中,粗线表示DDR总线,细线为设备内部的总线,箭头表示命令或数据可能的传输方向。在该系统架构中可包括内存控制器10、内存20以及DDR从设备30(DDRSlave),内存控制器20通过DDR 总线与内存20以及DDR从设备30连接。内存控制器10基于DDR协议与内存20进行通信。DDR从设备30可以是简单的存储设备如扩展内存等,内存控制器10可以基于DDR协议直接与其通信;在本发明实施例中,DDR从设备还可以是具备处理器31和存储单元32如闪存(Flash)的互联设备,内存控制器10基于DDR协议与其通信时,由于DDR从设备30的处理器31在接收到内存控制器10的数据访问命令之后,需要与存储单元32进行内部的通信,这样DDR从设备30将无法在DDR协议规定的时间内回复正确的数据给内存控制器10。本发明基于这种情况,对DDR协议中的MRS命令或DDR协议中预留的字段进行改造,由内存控制器10构造提前访问命令发送给DDR从设备 30,使得DDR从设备30可以提前为数据访问做好准备,如在读取访问命令之前将内存控制器10需要读取的数据从DDR从设备30的存储单元31读取并发送到数据总线上,这样内存控制器10发送正常的数据读取指令之后,在DDR 协议规定的时延内就可以从数据总线上采样到正确的数据,完成读访问;又例如在写入访问命令之前提前准备好接收链路准备接收数据总线上的数据,这样内存控制器10发送正常的数据写入指令并传输数据到数据总线上时,就可以在DDR协议规定的时延内将数据发送到数据总线上,完成写访问。
其中,贯穿本说明书,术语“DDR从设备”是指挂载在DDR总线上,响应CPU或内存控制器的访问命令的设备,其可以包括但不限于双列直插式内存模组(Dual In-line MemoryModule,DIMM)、DDR访问扩展设备等,其可以作为CPU或内存控制器与NVM设备、扩展内存或远端互联设备之间的中转设备,与NVM设备、扩展内存或远端互联设备分离设置,也可以作为NVM 设备、扩展内存或远端互联设备挂载的载体,与其集成设置,本发明实施例不作任何限定。贯穿本说明书,术语“内存控制器”可以集成在CPU内,也可以独立设置,本发明实施例同样不作任何限定。贯穿本说明书,术语“数据访问的预处理流程”根据数据访问命令的种类不同而有所不同,当数据访问命令为数据读取命令时,数据访问的预处理流程指的是DDR从设备在接收到提前访问命令后,预先将目的地址对应的DDR从设备的存储单元的数据读取并传输到数据总线上以供内存控制器采样;当数据访问命令为数据写入命令时,数据访问的预处理流程指的是DDR从设备在接收到提前访问指令之后,预先将目的地址对应的DDR设备的接收链路开启以在内存控制器写入数据时直接接收数据。
基于描述的便利性,减少数据或命令的转发流程,下面以DDR从设备与 NVM设备、扩展内存或远端互联设备集成设置,内存控制器与CPU集成设置的方式对本发明数据访问的方法进行详细说明。分离设置的时候,可适应性的增加数据转发流程,
请参考图2,为本发明实施例提供的一种数据访问的方法的流程示意图。在本实施例中,所述方法包括:
S101,内存控制器构造提前访问命令。
其中,所述提前访问命令中包含访问请求携带的目的地址。
可选地,在构造提前访问命令时,可以使用新的资源构造全新的提前访问命令;也可以根据现有DDR协议中的一些命令进行改造,例如,可以基于模式寄存器设置(Moderegister Settings,简称MRS)命令中的预留字段构造提前访问命令,或者,还可以基于DDR协议中预留的字段即保留以供将来使用 (Reserved For Future Use,简称RFU)的字段构造提前访问命令,本发明实施例不作任何限定。
S102,在向所述DDR从设备发送数据访问命令之前,根据预设提前量向所述DDR从设备发送所述提前访问命令。
其中,所述提前访问命令用于控制所述DDR从设备执行数据访问的预处理流程DDR从设备在接收到提前访问命令之后,便可以根据所述提前访问命令中的目的地址为数据访问做好准备。
S103,向所述DDR从设备发送数据访问命令。
S104,根据所述数据访问命令的发送时间和预设的数据访问延迟时间启动数据传输链路,完成数据访问。
可选地,在步骤S101中,现有DDR4协议中,MRS命令被设计用来配置 DDR内存的多种运行参数和访问模式,ACT(激活)命令提供行地址(Row Address,简称RA),RD(读取)/WR(写入)命令提供列地址,其命令编码格式如表1所示:
其中,CS_n(片选)、ACT_n(激活)、BAS_n/A16(行地址选择)、CAS_n /A15(列地址选择)、WE_n A14(读写标识)中的_n的含义表示低有效。BG/BA 是DDR协议中的概念,分别代表Bank Group和Bank Address。DDR4内存最大可能分为4个Bank Group(用Bank Group寻址),每个Bank Group中又分为4个Bank(用Bank Address寻址)。
根据DDR4协议,发送MRS命令时BG1需设为0,且MR Select的有效取值范围为0~6,MRS命令的其余BG/BA组合未使用。因此在本发明实施例中,可以对MRS的命令编码进行重新构造,以用于指示DDR从设备提前进行数据传输,从而克服当前DDR访问时延较短,导致内存控制器无法采集到正确数据的问题。
可选地,在步骤S101中,由于现有DDR4协议中存在一些RFU的字段,因此,也可以使用这些字段来构造提前访问命令。与使用MRS命令构造提前访问命令类似地,可以使用部分RFU的字段提前访问命令的标识,部分RFU 的字段携带访问的目的地址。这样,DDR从设备在接收到这样的提前访问命令时,便可以识别命令的身份并根据目的地址执行数据访问的预处理流程。
在步骤S102中,当内存控制器需要对DDR从设备进行数据访问时,可以先发送提前访问命令,等待DDR从设备进行数据传输,做好迎接内存控制器数据访问的准备工作,再发送数据访问命令。DDR从设备可以根据接收到的提前读取/写入命令,执行读写访问;若是读则在访问得到目标位置的数据后送回内存控制器;若是写则在接收到DDR总线上的数据后写入目标位置如 NVM设备、扩展内存或远端互连设备。
具体地,当内存控制器需要读取DDR从设备目标位置的数据时,由于DDR 从设备返回数据的时延较大将导致内存控制器无法在数据总线上采样到正确的数据,因此可以在发送数据读取命令之前,先发送提前访问命令,这样, DDR从设备可以提前从目标位置读取数据并把数据传输到数据总线上,当 DDR从设备之后接收到正常的数据读取命令时,内存控制器便可以在数据总线上采样获取正确的数据,完成数据访问。
可选地,内存控制器可以等待DDR从设备将数据完成传输至数据总线上再发送数据读取命令,当然,为了减少时延,也可以将正常的读取数据的延迟时间计算在内,在DDR从设备准备数据时便开始发送数据读取命令,当数据刚好传输至数据总线内存控制器便开始采样,这样可以进一步的降低时延。
而提前发送提前访问命令的时间即预设提前量可以读取DDR从设备扩展数据访问时延以及基于DDR协议的数据访问时延,计算得到预设提前量,或者也可以通过内存控制器与DDR从设备之间的数据传输链路训练得到。
可选地,预设提前量的获取方式包括:
从所述DDR从设备的串行存在检测SPD模块中读取所述DDR从设备的设计规格所支持的从发送提前访问命令到根据数据访问命令访问到第一个数据时的扩展数据访问延迟时间,选择所述DDR从设备发送数据访问命令到访问到第一个数据时的数据访问延迟时间,利用所述扩展数据访问延迟时间减去所述数据访问延迟时间得到所述预设提前量;其中,扩展数据访问延迟时间可以保存在SPD模块寄存器的保留字段中。
或者还可以对数据访问链路进行训练得到所述预设提前量,例如,将读取提前量设置为N,通过对已知数值的位置进行读取,若未读取到已知数值,则对读取提前量进行递增并继续对已知数值的位置进行读取直至读取到的数值与已知数值相同,记录当前的读取提前量为读取数据的预设提前量;在读取数据的预设提前量确定之后,将写入提前量设置为M,向预设位置写入已知数值并读取检查,若未读取到已知数值,则对写入提前量递增并继续预设位置的值进行读取直至读取到已知数值,记录当前的写入提前量为写入数据的预设提前量,其中,M、N均为大于或等于1的整数。
在步骤S103中,内存控制器向DDR从设备发送数据访问命令。
DDR从设备接收到此类命令可忽略。
可选地,若数据访问的行未被激活,则在发送数据访问命令之前,可以先发送ACT(激活)命令,若已激活,则无需发送。
在步骤S104中,预设的延迟时间即为现有DDR协议中所规定的延迟时间。由于DDR从设备已经提前准备好了数据,因此内存控制器可以按照正常的DDR协议中规定的延迟时间以及发送访问命令的时间来进行数据访问。不会发生系统错误的情况。
在本实施例中,通过构造提前访问命令,并提前发送给DDR从设备,使得DDR从设备可以在接收到数据访问命令之前,执行数据访问的预处理流程,提前做好数据访问的准备,当内存控制器发送数据访问命令时,可以在较短的延迟时间内与数据总线之间完成数据访问,内存控制器可在符合DDR协议的前提下采样到正确的数据,简化了DDR总线扩展访问的方法和流程,提高了 DDR总线的传输效率。
下面分别对数据读取和数据写入的过程进行详细说明。
请一并参考图3和图4,图3为本发明实施例提供的另一种数据访问的方法的流程示意图,图4为使用图3所述方法进行数据访问的时序示意图。在本实施例中,数据访问命令为数据读取命令。所述方法包括:
S201,内存控制器根据MRS命令中的保留编码构造第一提前访问命令和第二提前访问命令。
S202,在向所述DDR从设备发送数据访问命令之前,根据第一预设提前量将所述第一提前访问命令和第二提前访问命令发送给所述DDR从设备。
以便所述DDR从设备译码得到目的地址并根据目的地址从目标位置读取数据,将读取的数据传输至数据总线上。
S203,向所述DDR从设备发送数据读取命令。
发送了数据读取命令后,所述内存控制器可以根据所述数据读取命令的发送时间和预设的读取延迟时间启动接收链路。
S204,采样所述数据总线上的数据,完成读访问。
在步骤S201中,由于单个命令可携带的信息有限,为了给DDR从设备提供详细的目的地址,因此需要构造两个提前访问命令,并在这两个提前访问命令中携带目的地址的行地址和列地址。这样,DDR从设备接收到第一提前访问命令和第二提前访问命令之后,便可以对其译码,拼接地址信息得到完整的目的地址,并使用该地址来访问目标位置。
可选地,在构造提前访问命令时,可以将所述MRS命令中的第一保留编码的值由0修改为1以区分MRS命令和提前访问命令;
将所述MRS命令中的第二保留编码的值由寄存器编码修改为不同的二级制编码以区分第一提前访问命令和第二提前访问命令;
将所述MRS命令中的第三保留编码的值由操作码修改为部分行地址以得到所述第一提前访问命令,并将所述MRS命令中的第三保留编码的值由操作码修改为剩余部分的行地址以及全部的列地址以得到所述第二提前访问命令。
具体可参见表2:
其中,BG1由0修改为1,BG0,BA[1:0]设置为三位数的二级制编码,例如PR1可设置为000,PR2可设置为010。而A17,A[13:10]可设置为携带地址信息,如PR1中携带部分行地址信息,PR2中携带剩余部分的行地址信息以及全部列地址信息。当然,根据字段容量,每个位置携带的信息可以进行调整,本发明实施例不做任何限定。
当使用RFU的字段构造提前访问命令时,同样可以设置BG1为0或者1 用以作为提前访问命令的标识,然后设置BG0,BA[1:0]为三位数的二级制编码以区分不同的提前访问命令,最后,设置A17,A[13:10]和A[9:0]用于携带行地址或列地址,由于RFU的字段最初并未使用,因此具体设置的方式可以多种多样,其中携带提前访问命令的标识和访问的目的地址即可。
在步骤S203中,可选地,若数据读取命令中指向的行未被激活,则在发送数据读取命令之前,可以先发送ACT(激活)命令,若已激活,则无需发送。
具体的数据读取流程可参考图5,如图5所示,最上方为时钟信号,第二行为命令发送的时序,第三行表示数据总线上的数据。当内存控制器发送PR1 之后,可以接着发送PR2,然后根据行的激活与否发送ACT,接着发送RD,等待CL之后可采样数据。在本实施例中,DDR从设备的扩展数据访问(读) 延迟时间以发送PR2为起点,当然,也可以以发送PR1为起点。预设提前量为N1,其等于扩展数据访问延迟时间-数据访问(读)延迟时间。这样,由于提前发送了提前访问命令,DDR从设备可以在RD发送之前从目标位置读取数据并发送到数据总线(DQ)上,这样,当接收到RD时,内存控制器便可以在RL的时延内从DQ上采样到正确的数据,实现扩展访问。
请一并参考图5和图6,图5为本发明实施例提供的又一种数据访问的方法的流程示意图;图6为使用图5所述方法进行数据访问的时序示意图;在本实施例中,所述方法包括:
S401,内存控制器根据MRS命令中的保留编码构造第三提前访问命令和第四提前访问命令。
S402,在向所述DDR从设备发送数据访问命令之前,根据第二预设提前量将所述第三提前访问命令和第四提前访问命令发送给所述DDR从设备。
以便所述DDR从设备译码得到目的地址,启动接收链路接收数据总线上的数据。
S403,向所述DDR从设备发送数据写入命令。
内存控制器根据数据写入命令的发送时间和预设的写入延迟时间启动发送链路。
S404,将数据发送到所述数据总线上,完成写访问。
当数据发送到数据总线上时,DDR从设备便可以从所述数据总线接收到数据后,根据译码得到的目的地址将数据写入目标位置。
具体地,在步骤S401中,内存控制器根据MRS命令中的保留编码构造第三提前访问命令和第四提前访问命令,可以包括:
将所述MRS命令中的第一保留编码的值由0修改为1以区分MRS命令和提前访问命令;
将所述MRS命令中的第二保留编码的值由寄存器编码修改为不同的二级制编码以区分第三提前访问命令和第四提前访问命令;
将所述MRS命令中的第三保留编码的值由操作码修改为部分行地址以得到所述第三提前访问命令,并将所述MRS命令中的第三保留编码的值由操作码修改为剩余部分的行地址以及全部的列地址以得到所述第四保留编码。
具体可参见表2所示的内容:其中,BG1由0修改为1,BG0,BA[1:0] 设置为三位数的二级制编码,例如PW1可设置为100,PW2可设置为110。而A17,A[13:10]可设置为携带地址信息,如PW1中携带部分行地址信息, PW2中携带剩余部分的行地址信息以及全部列地址信息。当然,根据字段容量,每个位置携带的信息可以进行调整,本发明实施例不做任何限定。
使用RFU的字段构造提前访问命令的方式前文已描述,此处不再赘述。
而具体的数据写入流程可参考图6,如图6所示,最上方为时钟信号,第二行为命令发送的时序,第三行表示数据总线上的数据。当内存控制器发送 PW1之后,可以接着发送PW2,然后根据行的激活与否发送ACT,接着发送 WR,等待CWL之后可写入数据。在本实施例中,DDR从设备的扩展数据访问(写)延迟时间以发送PW2为起点,当然,也可以以发送PW1为起点。预设提前量为N2,其等于扩展数据访问延迟时间-数据访问(写)延迟时间。这样,由于提前发送了提前访问命令,DDR从设备可以在WR发送之前启动数据接收链路准备接收DQ总线上的数据。这样,当接收到WR时,内存控制器便可以在CWL的时延内将数据发送到DQ总线上,而DDR从设备也可以快速的将DQ总线上的数据写入到目标位置,实现扩展访问。
请参考图7,为本发明实施例读取数据时链路训练得到预设提前量的流程示意图;具体包括:
S601,链路训练开始,设提前量为N。
S602,内存控制器向DDR从设备发送PR1、PR2和RD命令。
S603,判断读到的数据是否正确。若是,则执行步骤S604,否则执行步骤S605。
S604,记录当前的提前量。
S605,将提前量增加1,即N’=N+1。并反复读取直至读到正确的数据。
通过训练的方式可以简单的获取到读命令的提前量。而对于写命令的提前量,同样可以通过训练的方式完成,在读训练完成后,通过不断调整写命令的提前量,向DDR从设备写入特定数据、并读回检查的方法训练便可以得到写命令提前量。
请参考图8,为本发明实施例提供的一种内存控制器的组成示意图,应用于包含DDR从设备的计算机系统,在本实施例中,所述内存控制器包括:
构造单元100,用于构造提前访问命令,所述提前访问命令中包含访问请求携带的目的地址;
发送单元200,用于根据预设提前量向所述DDR从设备发送所述提前访问命令,所述提前访问命令用于控制所述DDR从设备执行数据访问的预处理流程;
所述发送单元200还用于向所述DDR从设备发送数据访问命令;
传输控制单元300,用于根据所述数据访问命令的发送时间和预设的数据访问延迟时间启动数据传输链路,完成数据访问。
可选地,所述构造单元100具体用于:
基于模式寄存器设置MRS命令中的预留字段构造提前访问命令;或者
基于DDR协议中预留的字段构造提前访问命令。
可选地,所述构造单元100具体用于:
修改所述MRS命令中的第一预留字段的值以区分MRS命令和提前访问命令;
将所述MRS命令中的第二预留字段的值修改为目的地址信息。
若所述数据访问命令为数据读取命令,则所述构造单元100用于根据MRS 命令中的预留字段构造第一提前访问命令和第二提前访问命令,所述第一提前访问命令携带所述目的地址的部分地址信息,所述第二提前访问命令携带所述目的地址的剩余部分地址信息,所述发送单元200用于在向所述DDR从设备发送数据读取命令之前,根据第一预设提前量将所述第一提前访问命令和第二提前访问命令发送给所述DDR从设备,所述第一提前访问命令和第二提前访问命令用于控制所述DDR从设备根据所述目的地址从目标位置读取数据并将读取的数据传输至数据总线上;
所述发送单元200还用于发送数据读取命令至所述DDR从设备,所述传输控制单元300用于采样所述数据总线上的数据,完成读取访问。
若所述数据访问命令为数据写入命令,则所述构造单元100用于根据MRS 命令中的预留字段构造第三提前访问命令和第四提前访问命令,所述第三提前访问命令携带所述目的地址的部分地址信息,所述第四提前访问命令携带所述目的地址的剩余部分地址信息,所述发送单元200用于在向所述DDR从设备发送数据写入命令之前,根据第二预设提前量将所述第三提前访问命令和第四提前访问命令发送给所述DDR从设备,所述第三提前访问命令和第四提前访问命令用于控制所述DDR从设备根据所述目的地址启动接收链路接收数据总线上的数据;
所述发送单元200还用于发送数据写入命令至所述DDR从设备,所述传输控制单元300用于将数据发送到所述数据总线上,完成写入访问。
需要说明的是,上述装置实施例根据各部件的逻辑功能对内存控制器进行了逻辑上的划分,在硬件架构上,所述的内存控制器可以是一个集成在处理器或独立设置的功能电路,如图1所示,其可以包括处理电路11、DDR总线接口12和控制电路13,其中,处理电路11可以执行上述构造单元100的功能,构造提前访问命令,并通过DDR总线接口12发送到DDR从设备;控制电路 13可以执行上述传输控制单元300的功能,在需要进行数据访问时,控制数据链路的开启或关闭,并通过DDR总线接口接收或发送数据,具体在数据传输时,可以直接通过DDR总线接口发送至处理电路11或先发给控制电路13 之后再发送给处理电路11。当然,控制电路13可以与处理电路11分别独立设置,也可以与处理电路11集成设置,本发明实施例不作任何限定。
请参照图9,为本发明实施例提供的又一种内存控制器的组成示意图,与图8所示的内存控制器相比,在本发明实施例中,所述内存控制器除了包括构造单元100、发送单元200以及传输控制单元300之外,还包括:
获取单元400,用于从所述DDR从设备的串行存在检测SPD模块中读取所述DDR从设备所支持的扩展数据访问延迟时间,所述扩展数据访问延迟时间为所述内存控制器发送提前访问命令到根据数据访问命令访问到第一个数据时的延迟时间;
选择所述内存控制器发送数据访问命令到根据数据访问命令访问到第一个数据时的数据访问延迟时间,利用所述扩展数据访问延迟时间减去所述数据访问延迟时间得到所述预设提前量。
可选地,所述获取单元400,用于对数据访问链路进行训练得到所述预设提前量,将读取提前量设置为N,通过对已知数值的位置进行读取,若未读取到已知数值,则对读取提前量进行递增并继续对已知数值的位置进行读取直至读取到的数值与已知数值相同,记录当前的读取提前量为读取数据的预设提前量;在读取数据的预设提前量确定之后,将写入提前量设置为M,向预设位置写入已知数值并读取检查,若未读取到已知数值,则对写入提前量递增并继续预设位置的值进行读取直至读取到已知数值,记录当前的写入提前量为写入数据的预设提前量,其中,M、N均为大于或等于1的整数。
可选地,获取单元400的功能可以集成在如图1所示的处理电路11中。
请参照图10,为本发明实施例提供的另一种内存控制器的组成示意图,在本发明实施例中,应用于包含DDR从设备的计算机系统,与所述DDR从设备通过DDR总线连接,所述内存控制器包括:
处理器500、存储器600、接口电路700和总线800,所述处理器500、存储器600和接口电路700通过所述总线800连接并完成相互间的通信,其中,所述存储器600用于存储一组程序代码,所述处理器500用于调用所述存储器 600中存储的程序代码,执行以下操作:
构造提前访问命令,所述提前访问命令中包含访问请求携带的目的地址;
根据预设提前量并通过所述接口电路700向所述DDR从设备发送所述提前访问命令,所述提前访问命令用于控制所述DDR从设备执行数据访问的预处理流程;
通过所述接口电路700向所述DDR从设备发送数据访问命令;
根据所述数据访问命令的发送时间和预设的数据访问延迟时间启动数据传输链路,完成数据访问。
可选地,所述处理器500构造提前访问命令的方式具体包括:
基于模式寄存器设置MRS命令中的预留字段构造提前访问命令;或者
基于DDR协议中预留的字段构造提前访问命令。
可选地,所述处理器500基于模式寄存器设置MRS命令中的预留字段构造提前访问命令,具体包括:
修改所述MRS命令中的第一预留字段的值以区分MRS命令和提前访问命令;
将所述MRS命令中的第二预留字段的值修改为目的地址信息。
可选地,所述处理器500获取所述预设提前量的方式具体包括:
从所述DDR从设备的串行存在检测SPD模块中读取所述DDR从设备所支持的扩展数据访问延迟时间,所述扩展数据访问延迟时间为所述内存控制器发送提前访问命令到根据数据访问命令访问到第一个数据时的延迟时间;
选择所述内存控制器发送数据访问命令到根据数据访问命令访问到第一个数据时的数据访问延迟时间,利用所述扩展数据访问延迟时间减去所述数据访问延迟时间得到所述预设提前量。
可选地,所述处理器500获取所述预设提前量的方式具体包括:
对数据访问链路进行训练得到所述预设提前量,将读取提前量设置为N,通过对已知数值的位置进行读取,若未读取到已知数值,则对读取提前量进行递增并继续对已知数值的位置进行读取直至读取到的数值与已知数值相同,记录当前的读取提前量为读取数据的预设提前量;在读取数据的预设提前量确定之后,将写入提前量设置为M,向预设位置写入已知数值并读取检查,若未读取到已知数值,则对写入提前量递增并继续预设位置的值进行读取直至读取到已知数值,记录当前的写入提前量为写入数据的预设提前量,其中,M、N 均为大于或等于1的整数。
可选地,若所述数据访问命令为数据读取命令,则所述处理器500具体用于根据MRS命令中的预留字段构造第一提前访问命令和第二提前访问命令,所述第一提前访问命令携带所述目的地址的部分地址信息,所述第二提前访问命令携带所述目的地址的剩余部分地址信息,在通过所述接口电路700向所述 DDR从设备发送数据读取命令之前,根据第一预设提前量将所述第一提前访问命令和第二提前访问命令发送给所述DDR从设备,所述第一提前访问命令和第二提前访问命令用于控制所述DDR从设备根据所述目的地址从目标位置读取数据并将读取的数据传输至数据总线上;
通过所述接口电路700发送数据读取命令至所述DDR从设备,采样所述数据总线上的数据,完成读取访问。
可选地,若所述数据访问命令为数据写入命令,则所述处理器500具体用于根据MRS命令中的预留字段构造第三提前访问命令和第四提前访问命令,所述第三提前访问命令携带所述目的地址的部分地址信息,所述第四提前访问命令携带所述目的地址的剩余部分地址信息,在通过所述接口电路700向所述 DDR从设备发送数据写入命令之前,根据第二预设提前量将所述第三提前访问命令和第四提前访问命令发送给所述DDR从设备,所述第三提前访问命令和第四提前访问命令用于控制所述DDR从设备根据所述目的地址启动接收链路接收数据总线上的数据;
通过所述接口电路700发送数据写入命令至所述DDR从设备,将数据发送到所述数据总线上,完成写入访问。
需要说明的是,这里的处理器500可以是一个处理器,也可以是多个处理元件的统称。例如,该处理器可以是中央处理器(Central Processing Unit,CPU),也可以是特定集成电路(Application Specific Integrated Circuit,ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器600可以是一个存储装置,也可以是多个存储元件的统称,且用于存储可执行程序代码。且存储器600可以包括随机存储器(RAM),也可以包括非易失性存储器(non-volatile memory),例如磁盘存储器,闪存(Flash)等。
总线800为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的任何数据访问的方法的部分或全部步骤。
通过上述实施例的描述,本发明具有以下优点:
通过构造提前访问命令,并提前发送给DDR从设备,使得DDR从设备可以在接收到数据访问命令之前,执行数据访问的预处理流程,提前做好数据访问的准备,当内存控制器发送数据访问命令时,可以在较短的延迟时间内与数据总线之间完成数据访问,内存控制器可在符合DDR协议的前提下采样到正确的数据,简化了DDR总线扩展访问的方法和流程,提高了DDR总线的传输效率。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:磁碟、光盘、只读存储记忆体(Read-Only Memory,简称ROM) 或随机存储记忆体(Random Access Memory,简称RAM)等。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (15)
1.一种数据访问的方法,其特征在于,应用于包含内存控制器以及DDR从设备的计算机系统,该方法包括:
内存控制器构造提前访问命令,所述提前访问命令中包含访问请求携带的目的地址;
根据预设提前量向所述DDR从设备发送所述提前访问命令,所述提前访问命令用于控制所述DDR从设备执行数据访问的预处理流程;
向所述DDR从设备发送数据访问命令;
根据所述数据访问命令的发送时间和预设的数据访问延迟时间启动数据传输链路,完成数据访问;
其中,所述DDR从设备是指挂载在DDR总线上,响应CPU或内存控制器的访问命令的设备;
所述预设提前量的获取方式包括:
对数据访问链路进行训练得到所述预设提前量,将读取提前量设置为N,通过对已知数值的位置进行读取,若未读取到已知数值,则对读取提前量进行递增并继续对已知数值的位置进行读取直至读取到的数值与已知数值相同,记录当前的读取提前量为读取数据的预设提前量;在读取数据的预设提前量确定之后,将写入提前量设置为M,向预设位置写入已知数值并读取检查,若未读取到已知数值,则对写入提前量递增并继续预设位置的值进行读取直至读取到已知数值,记录当前的写入提前量为写入数据的预设提前量,其中,M、N均为大于或等于1的整数。
2.根据权利要求1所述的方法,其特征在于,所述内存控制器构造提前访问命令,包括:
基于模式寄存器设置MRS命令中的预留字段构造提前访问命令;或者
基于DDR协议中预留的字段构造提前访问命令。
3.根据权利要求2所述的方法,其特征在于,所述内存控制器基于模式寄存器设置MRS命令中的预留字段构造提前访问命令,包括:
所述内存控制器修改所述MRS命令中的第一预留字段的值以区分MRS命令和提前访问命令;
将所述MRS命令中的第二预留字段的值修改为目的地址信息。
4.根据权利要求2或3所述的方法,其特征在于,若所述数据访问命令为数据读取命令,则所述内存控制器根据MRS命令中的预留字段构造第一提前访问命令和第二提前访问命令,所述第一提前访问命令携带所述目的地址的部分地址信息,所述第二提前访问命令携带所述目的地址的剩余部分地址信息,在向所述DDR从设备发送数据读取命令之前,根据第一预设提前量将所述第一提前访问命令和第二提前访问命令发送给所述DDR从设备,所述第一提前访问命令和第二提前访问命令用于控制所述DDR从设备根据所述目的地址从目标位置读取数据并将读取的数据传输至数据总线上;
所述内存控制器发送数据读取命令至所述DDR从设备,采样所述数据总线上的数据,完成读取访问。
5.根据权利要求2或3所述的方法,其特征在于,若所述数据访问命令为数据写入命令,则所述内存控制器根据MRS命令中的预留字段构造第三提前访问命令和第四提前访问命令,所述第三提前访问命令携带所述目的地址的部分地址信息,所述第四提前访问命令携带所述目的地址的剩余部分地址信息,在向所述DDR从设备发送数据写入命令之前,根据第二预设提前量将所述第三提前访问命令和第四提前访问命令发送给所述DDR从设备,所述第三提前访问命令和第四提前访问命令用于控制所述DDR从设备根据所述目的地址启动接收链路接收数据总线上的数据;
所述内存控制器发送数据写入命令至所述DDR从设备,将数据发送到所述数据总线上,完成写入访问。
6.一种内存控制器,应用于包含DDR从设备的计算机系统,其特征在于,包括:
构造单元,用于构造提前访问命令,所述提前访问命令中包含访问请求携带的目的地址;
发送单元,用于根据预设提前量向所述DDR从设备发送所述提前访问命令,所述提前访问命令用于控制所述DDR从设备执行数据访问的预处理流程;
所述发送单元还用于向所述DDR从设备发送数据访问命令;
传输控制单元,用于根据所述数据访问命令的发送时间和预设的数据访问延迟时间启动数据传输链路,完成数据访问;
其中,所述DDR从设备是指挂载在DDR总线上,响应CPU或内存控制器的访问命令的设备;
所述内存控制器还包括:
获取单元,用于对数据访问链路进行训练得到所述预设提前量,将读取提前量设置为N,通过对已知数值的位置进行读取,若未读取到已知数值,则对读取提前量进行递增并继续对已知数值的位置进行读取直至读取到的数值与已知数值相同,记录当前的读取提前量为读取数据的预设提前量;在读取数据的预设提前量确定之后,将写入提前量设置为M,向预设位置写入已知数值并读取检查,若未读取到已知数值,则对写入提前量递增并继续预设位置的值进行读取直至读取到已知数值,记录当前的写入提前量为写入数据的预设提前量,其中,M、N均为大于或等于1的整数。
7.根据权利要求6所述的内存控制器,其特征在于,所述构造单元具体用于:
基于模式寄存器设置MRS命令中的预留字段构造提前访问命令;或者
基于DDR协议中预留的字段构造提前访问命令。
8.根据权利要求7所述的内存控制器,其特征在于,所述构造单元具体用于:
修改所述MRS命令中的第一预留字段的值以区分MRS命令和提前访问命令;
将所述MRS命令中的第二预留字段的值修改为目的地址信息。
9.根据权利要求7或8所述的内存控制器,其特征在于,
若所述数据访问命令为数据读取命令,则所述构造单元用于根据MRS命令中的预留字段构造第一提前访问命令和第二提前访问命令,所述第一提前访问命令携带所述目的地址的部分地址信息,所述第二提前访问命令携带所述目的地址的剩余部分地址信息,所述发送单元用于在向所述DDR从设备发送数据读取命令之前,根据第一预设提前量将所述第一提前访问命令和第二提前访问命令发送给所述DDR从设备,所述第一提前访问命令和第二提前访问命令用于控制所述DDR从设备根据所述目的地址从目标位置读取数据并将读取的数据传输至数据总线上;
所述发送单元还用于发送数据读取命令至所述DDR从设备,所述传输控制单元用于采样所述数据总线上的数据,完成读取访问。
10.根据权利要求7或8所述的内存控制器,其特征在于,
若所述数据访问命令为数据写入命令,则所述构造单元用于根据MRS命令中的预留字段构造第三提前访问命令和第四提前访问命令,所述第三提前访问命令携带所述目的地址的部分地址信息,所述第四提前访问命令携带所述目的地址的剩余部分地址信息,所述发送单元用于在向所述DDR从设备发送数据写入命令之前,根据第二预设提前量将所述第三提前访问命令和第四提前访问命令发送给所述DDR从设备,所述第三提前访问命令和第四提前访问命令用于控制所述DDR从设备根据所述目的地址启动接收链路接收数据总线上的数据;
所述发送单元还用于发送数据写入命令至所述DDR从设备,所述传输控制单元用于将数据发送到所述数据总线上,完成写入访问。
11.一种内存控制器,应用于包含DDR从设备的计算机系统,与所述DDR从设备通过DDR总线连接,其特征在于,包括:
处理器、存储器、接口电路和总线,所述处理器、存储器和接口电路通过所述总线连接并完成相互间的通信,其中,所述存储器用于存储一组程序代码,所述处理器用于调用所述存储器中存储的程序代码,执行以下操作:
构造提前访问命令,所述提前访问命令中包含访问请求携带的目的地址;
根据预设提前量并通过所述接口电路向所述DDR从设备发送所述提前访问命令,所述提前访问命令用于控制所述DDR从设备执行数据访问的预处理流程;
通过所述接口电路向所述DDR从设备发送数据访问命令;
根据所述数据访问命令的发送时间和预设的数据访问延迟时间启动数据传输链路,完成数据访问;
其中,所述DDR从设备是指挂载在DDR总线上,响应CPU或内存控制器的访问命令的设备;
所述处理器获取所述预设提前量的方式具体包括:
对数据访问链路进行训练得到所述预设提前量,将读取提前量设置为N,通过对已知数值的位置进行读取,若未读取到已知数值,则对读取提前量进行递增并继续对已知数值的位置进行读取直至读取到的数值与已知数值相同,记录当前的读取提前量为读取数据的预设提前量;在读取数据的预设提前量确定之后,将写入提前量设置为M,向预设位置写入已知数值并读取检查,若未读取到已知数值,则对写入提前量递增并继续预设位置的值进行读取直至读取到已知数值,记录当前的写入提前量为写入数据的预设提前量,其中,M、N均为大于或等于1的整数。
12.根据权利要求11所述的内存控制器,其特征在于,所述处理器构造提前访问命令的方式具体包括:
基于模式寄存器设置MRS命令中的预留字段构造提前访问命令;或者
基于DDR协议中预留的字段构造提前访问命令。
13.根据权利要求12所述的内存控制器,其特征在于,所述处理器基于模式寄存器设置MRS命令中的预留字段构造提前访问命令,具体包括:
修改所述MRS命令中的第一预留字段的值以区分MRS命令和提前访问命令;
将所述MRS命令中的第二预留字段的值修改为目的地址信息。
14.根据权利要求12或13所述的内存控制器,其特征在于,若所述数据访问命令为数据读取命令,则所述处理器具体用于根据MRS命令中的预留字段构造第一提前访问命令和第二提前访问命令,所述第一提前访问命令携带所述目的地址的部分地址信息,所述第二提前访问命令携带所述目的地址的剩余部分地址信息,在通过所述接口电路向所述DDR从设备发送数据读取命令之前,根据第一预设提前量将所述第一提前访问命令和第二提前访问命令发送给所述DDR从设备,所述第一提前访问命令和第二提前访问命令用于控制所述DDR从设备根据所述目的地址从目标位置读取数据并将读取的数据传输至数据总线上;
通过所述接口电路发送数据读取命令至所述DDR从设备,采样所述数据总线上的数据,完成读取访问。
15.根据权利要求12或13所述的内存控制器,其特征在于,若所述数据访问命令为数据写入命令,则所述处理器具体用于根据MRS命令中的预留字段构造第三提前访问命令和第四提前访问命令,所述第三提前访问命令携带所述目的地址的部分地址信息,所述第四提前访问命令携带所述目的地址的剩余部分地址信息,在通过所述接口电路向所述DDR从设备发送数据写入命令之前,根据第二预设提前量将所述第三提前访问命令和第四提前访问命令发送给所述DDR从设备,所述第三提前访问命令和第四提前访问命令用于控制所述DDR从设备根据所述目的地址启动接收链路接收数据总线上的数据;
通过所述接口电路发送数据写入命令至所述DDR从设备,将数据发送到所述数据总线上,完成写入访问。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2016/080816 WO2017185375A1 (zh) | 2016-04-29 | 2016-04-29 | 一种数据访问的方法及内存控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108139879A CN108139879A (zh) | 2018-06-08 |
CN108139879B true CN108139879B (zh) | 2020-09-08 |
Family
ID=60161716
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680057289.8A Active CN108139879B (zh) | 2016-04-29 | 2016-04-29 | 一种数据访问的方法及内存控制器 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108139879B (zh) |
WO (1) | WO2017185375A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113424160B (zh) * | 2019-03-30 | 2024-01-30 | 华为技术有限公司 | 一种处理方法、装置及相关设备 |
CN110489259B (zh) * | 2019-07-29 | 2023-03-24 | 深圳中电长城信息安全系统有限公司 | 一种内存故障检测方法及设备 |
CN112631966B (zh) * | 2020-12-17 | 2024-01-26 | 海光信息技术股份有限公司 | 一种数据处理方法、内存控制器、处理器及电子设备 |
CN118057532A (zh) * | 2022-11-21 | 2024-05-21 | 华为技术有限公司 | 命令处理方法和装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4450586B2 (ja) * | 2003-09-03 | 2010-04-14 | 株式会社ルネサステクノロジ | 半導体集積回路 |
US7423928B2 (en) * | 2007-01-30 | 2008-09-09 | Atmel Corporation | Clock circuitry for DDR-SDRAM memory controller |
CN101354641B (zh) * | 2008-08-20 | 2010-08-11 | 炬力集成电路设计有限公司 | 一种外部存储器的访问控制方法及访问控制装置 |
CN101464839B (zh) * | 2009-01-08 | 2011-04-13 | 中国科学院计算技术研究所 | 一种访存缓冲装置及方法 |
CN102543159B (zh) * | 2010-12-29 | 2014-06-25 | 炬才微电子(深圳)有限公司 | 一种ddr控制器及其实现方法和芯片 |
CN105095138B (zh) * | 2015-06-29 | 2018-05-04 | 中国科学院计算技术研究所 | 一种扩展同步内存总线功能的方法和装置 |
-
2016
- 2016-04-29 WO PCT/CN2016/080816 patent/WO2017185375A1/zh active Application Filing
- 2016-04-29 CN CN201680057289.8A patent/CN108139879B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108139879A (zh) | 2018-06-08 |
WO2017185375A1 (zh) | 2017-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109074333B (zh) | 非确定性存储器协议 | |
CN107924698B (zh) | Dram设备、错误校正管理的方法和存储器控制器 | |
KR102282971B1 (ko) | 반도체 메모리 장치, 및 상기 반도체 메모리 장치를 포함하는 메모리 시스템 | |
CN101441896B (zh) | 用于存储器技术的系统、方法和设备 | |
CN108139879B (zh) | 一种数据访问的方法及内存控制器 | |
CN107210063A (zh) | 对具有存储体分组架构的存储器设备内的存储体进行预充电和刷新 | |
KR20160034913A (ko) | 미―준수 메모리 기술을 포함하거나 이와 인터페이스하는 메모리 모듈에 대한 응답 제어 | |
CN108351850B (zh) | 对存储器设备中的非易失性存储器和易失性存储器进行同时存取的技术 | |
US20180239557A1 (en) | Nonvolatile memory device, data storage device including the same, and operating method of data storage device | |
US20190220220A1 (en) | Data storage device, operating method thereof and nonvolatile memory device | |
US20190354483A1 (en) | Controller and memory system including the same | |
NL2031713B1 (en) | Double fetch for long burst length memory data transfer | |
US10754768B2 (en) | Memory system using descriptor lookup tables to access setting information for a non-volatile memory, and an operating method thereof | |
CN108139993B (zh) | 内存装置、内存控制器、数据缓存装置及计算机系统 | |
US20210149796A1 (en) | Data storage device and operating method thereof | |
EP4141662A1 (en) | Deferred ecc (error checking and correction) memory initialization by memory scrub hardware | |
CN107301872B (zh) | 半导体存储器装置的操作方法 | |
US9201748B2 (en) | Virtual device sparing | |
CN110097898B (zh) | 页面大小感知调度方法和非暂时性计算机可读记录介质 | |
US8006029B2 (en) | DDR flash implementation with direct register access to legacy flash functions | |
US20190163602A1 (en) | Memory system and operating method thereof | |
KR20110041613A (ko) | Dram 인터페이스와 공유 메모리 영역을 통한 비휘발성 메모리 장치와 자기 기록 매체에 접근할 수 있는 장치 | |
KR102267388B1 (ko) | 메모리 프로토콜 | |
KR101285883B1 (ko) | 다수의 프로세서 신호를 하나의 메모리로 전송하기 위한신호 처리 방법 및 장치 | |
US20180335950A1 (en) | Data storage device and operating method thereof |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210426 Address after: Unit 3401, unit a, building 6, Shenye Zhongcheng, No. 8089, Hongli West Road, Donghai community, Xiangmihu street, Futian District, Shenzhen, Guangdong 518040 Patentee after: Honor Device Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |