CN110968451B - 内存访问技术及计算机系统 - Google Patents
内存访问技术及计算机系统 Download PDFInfo
- Publication number
- CN110968451B CN110968451B CN201811369316.2A CN201811369316A CN110968451B CN 110968451 B CN110968451 B CN 110968451B CN 201811369316 A CN201811369316 A CN 201811369316A CN 110968451 B CN110968451 B CN 110968451B
- Authority
- CN
- China
- Prior art keywords
- data
- dram
- memory
- value
- values
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
- G11C11/4096—Input/output [I/O] data management or control circuits, e.g. reading or writing circuits, I/O drivers or bit-line switches
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/4076—Timing circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
- G11C11/4093—Input/output [I/O] data interface arrangements, e.g. data buffers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Databases & Information Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请提供了一种内存访问技术及计算机系统。本申请提供的内存访问方法可以根据待写入DRAM内存的数据中“1”和“0”的数量以及DRAM的存储模式,确定是否将待存储数据进行翻转存储,以减少动态随机存储器DRAM中高电荷的存储单元的数量,降低数据的出错概率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种内存访问技术及计算机系统。
背景技术
动态随机存取存储器(Dynamic Random Access Memory,DRAM)是各种计算系统的核心部件。随着需要处理数据量的不断增大,DRAM成为影响整个计算系统性能和功耗的最重要因素之一。DRAM是用电容来存储电荷,电容中电荷的多寡状态决定了这个DRAM单位的逻辑状态是1还是0。但是由于电容不可避免的存在漏电现象,漏电现象包括单元的电荷流失(Cell leakage)、串音(Crosstalk)等等。如果电荷不足会导致数据出错,因此电容必须被周期性的刷新来补充电容的漏电电荷,这种刷新操作也被称为预充电操作。通常,内存控制器设计每个行的刷新时间间隔是固定的,例如,刷新时间间隔可以为64ms。然而,如果DRAM中最坏单元的错误率很高,就需要将刷新时间间隔降低,从而会造成对DRAM的频繁刷新,增加系统功耗并占用系统带宽。
发明内容
本申请中提供的一种内存访问技术及计算机系统,能够降低DRAM内存中存储的数据的出错概率。
第一方面,本申请提供了一种内存访问方法。根据该方法,在接收待写入动态随机存储器DRAM的第一数据后,确定所述第一数据中第一数值的数量大于第二数值的数量,并确定所述DRAM用于在位线为高电压时存储所述第一数值且在位线为低电压时存储所述第二数值。响应于上述确定,将所述第一数据进行翻转以获得第二数据,并将所述第二数据存储于所述DRAM中。
本申请提供的上述内存访问方法可以根据待写入DRAM内存的第一数据中第一数值和第二数值的数量以及DRAM的存储模式,确定是否将待存储的所述第一数据进行翻转存储,以减少动态随机存储器DRAM中高电荷的存储单元的数量,降低所述第一数据的出错概率。
根据第一方面,在第一种可能的实现方式中,将所述第一数据中的所述第一数值翻转为所述第二数值,将所述第一数据中的所述第二数值翻转为所述第一数值,以获得所述第二数据。
根据第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,根据数据总线翻转DBI信号确定所述第一数据中第一数值的数量大于第二数值的数量。根据这种方式,本申请所述的方法,可以复用现有的内存总线上的数据总线翻转DBI信号,使得该方法实施起来更简单。
根据第一方面、第一方面的第一种或第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述第一数值为“1”,所述第二数值为“0”;或者,所述第一数值为“0”,所述第二数值为“1”。
根据第一方面或第一方面的上述任意一种实现方式,在第一方面的第四种可能的实现方式中,所述方法还包括在接收读请求后,根据所述读请求中携带的第一地址从所述DRAM中读取所述第二数据。在确定所述第二数据为翻转后存储的数据后,对所述第二数据进行翻转以获得所述第一数据。
结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述确定所述第二数据为翻转后存储的数据包括:根据所述第二数据的ECC编码中的翻转标识位确定所述第二数据为翻转后被存储的数据。
第二方面,本申请提供了一种计算机设备,所述计算机设备包括动态随机存储器DRAM,与所述DRAM连接的内存控制器,所述内存控制器用于执行上述第一方面以及第一方面的任意一种可能的实现方式中的方法。
第三方面,本申请提供了一种存储器,所述存储器包括动态随机存储器DRAM、通信接口以及翻转模块。所述DRAM用于存储数据,所述通信接口与所述DRAM连接并用于确定所述第一数据中第一数值的数量大于第二数值的数量,确定所述DRAM用于在位线为高电压时存储所述第一数值且在位线为低电压时存储所述第二数值,并响应于上述确定,将所述第一数据进行翻转以获得第二数据,并将所述第二数据存储于所述DRAM中。
结合第三方面,在第一种可能的实现方式中,所述翻转模块用于将所述第一数据中的所述第一数值翻转为所述第二数值,将所述第一数据中的所述第二数值翻转为所述第一数值,以获得所述第二数据。
结合第三方面或第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述翻转模块用于根据第一数据总线翻转DBI信号的指示将接收的数据中的第一数值转变为第二数值,以获得所述第二数据。
结合第三方面或第三方面上述任意一种可能的实现方式,在第三种可能的实现方式中,所述通信接口还用于接收读请求,所述读请求中携带有第一地址。所述翻转模块还用于确定根据所述第一地址从所述DRAM中读取的所述第二数据为翻转后存储的数据,并响应于上述确定,对所述第二数据进行翻转以获得所述第一数据。
结合第三方面或第三方面上述任意一种可能的实现方式,在第三方面的第四种可能的实现方式中,所述第一数值为“1”,所述第二数值为“0”;或所述第一数值为“0”,所述第二数值为“1”。
第四方面,本申请提供了一种内存访问方法,该方法包括在接收待写入动态随机存储器DRAM的第一数据后,确定所述第一数据中“1”的数量大于“0”的数量且所述DRAM的存储模式为位线为高电压时存储数据为逻辑“1”的存储模式。响应于上述判断,将所述第一数据进行翻转以获得第二数据,并将所述第二数据存储于所述DRAM中。
第五方面,本申请提供了又一种内存访问方法,该方法包括在接收待写入动态随机存储器DRAM的第三数据后,确定所述第三数据中“1”的数量小于“0”的数量且所述DRAM的存储模式为位线为高电压时存储数据为逻辑“0”的存储模式。响应于上述判断,将所述第三数据进行翻转以获得第四数据,并将所述第四数据存储于所述DRAM中。
本申请提供的第四方面或第五方面的内存访问方法可以根据待写入DRAM内存的数据中“1”和“0”的数量以及DRAM的存储模式,确定是否将待存储数据进行翻转存储,以减少动态随机存储器DRAM中高电荷的存储单元的数量,降低数据的出错概率。
第六方面,本申请还提供了一种计算机程序产品,包括程序代码,所述程序代码包括的指令被计算机所执行,以实现所述第一方面或第二方面中所述的方法。
第七方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码包括的指令被计算机所执行,以实现前述第一方面、第四方面、或第五方面中所述的方法。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例。
图1为本发明实施例提供的一种计算机系统架构示意图;
图2为本发明实施例提供的一种内存控制器的结构示意图;
图3为本发明实施例提供的一种数据翻转方法的流程示意图;
图4为本发明实施例提供的又一种内存控制器的结构示意图;
图5为本发明实施例提供的又一种计算机系统的结构示意图;
图6为本发明实施例提供的一种读数据的方法流程图;
图7为本发明实施例提供的一种写数据的示意图;
图8为本发明实施例提供的一种读数据的示意图;
图9为本发明实施例提供的一种内存访问方法的流程图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述。显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。
图1为本发明实施例提供的计算机系统架构示意图。如图1所示,计算机系统100至少可以包括处理器102、内存控制器106以及内存108。通常,内存控制器106可以集成在处理器102中。需要说明的是,本发明实施例提供的计算机系统中,除了图1所示的器件外,计算机系统100还可以包括通信接口以及作为外存的磁盘等其他器件,在此不做限制。
处理器(Processor)102是计算机系统100的运算核心和控制核心(ControlUnit)。处理器102中可以包括多个处理器核(core)104。处理器102可以是一块超大规模的集成电路。在处理器102中安装有操作系统和其他软件程序,从而处理器102能够实现对内存108、缓存及磁盘的访问。可以理解的是,在本发明实施例中,处理器102中的Core 104例如可以是中央处理器(Central Processing unit,CPU),还可以是其他特定集成电路(Application Specific Integrated Circuit,ASIC)。
内存控制器(Memory Controller)106是计算机系统100内部控制内存108并用于管理与规划从内存108到Core 104间的数据传输的总线电路控制器。通过内存控制器106,内存108与Core 104之间可以交换数据。内存控制器106可以是一个单独的芯片,并通过系统总线与Core 104连接。本领域技术人员可以知道,内存控制器106也可以被集成到处理器102中(如图1所示)也可以被内置于北桥中。本发明实施例不对内存控制器20的具体位置进行限定。实际应用中,内存控制器106可以控制必要的逻辑以将数据写入内存108或从内存108中读取数据。
内存108是计算机系统100的主存。内存108通过双倍速率(double data rate,DDR)总线和内存108相连。内存108通常用来存放操作系统中各种正在运行的软件、输入和输出数据以及与外存交换的信息等。为了提高处理器102的访问速度,内存108需要具备访问速度快的优点。在传统的计算机系统架构中,通常采用动态随机存取存储器(DynamicRandom Access Memory,DRAM)作为内存108。处理器102能够通过内存控制器106高速访问内存108,对内存1080中的任意一个存储单元进行读操作和写操作。
在本发明实施例中,以内存108为DRAM为例进行描述,因此,内存108也可以被称为DRAM 108。数据存储于DRAM 108的存储单元(又可以被称为DRAM cell)中,在本发明实施例中,存储单元是指用于存储数据的最小存储单元(cell)。通常,一个存储单元可以存储1位(bit)数据。当然,有的存储单元也可以实现多值存储。如前所述,DRAM是利用电容存储电量的多寡来代表数据0和1。由于电容存在漏电现象,如果电容中的电荷不足,会导致存储的数据出错。因此,每隔一段时间,内存控制器106会刷新DRAM108中的数据,以防止DRAM 108丢失数据。并且,DRAM 108是易失性的,当计算机系统100关闭电源后,DRAM 108中的信息将不再保存。
实际应用中,DRAM 108中的DRAM cell被排列分布成一个矩阵,这个矩阵我们称之为DRAM bank,内存控制器106通过相应的行列解码器可以定位到DRAM bank中的任意一个bit。多个DRAM bank可以组成一个DRAM chip(又可被称为内存芯片),多个DRAM chip可以组成一个DRAM rank。多个DRAM rank又可以被集成为一个双列直插式存储模块(Dual-Inline-Memory-Modules,DIMM)。例如,如图1所示,DRAM 108可以包括多个通道(channel)110。每个通道110中可以包括至少一个rank,每个rank中可以包括至少一个bank。每个bank都包括多个用于存储数据的存储单元。本领域技术人员可以知道,rank指的是连接到同一个片选(chip select)信号的内存颗粒(chip)。内存控制器106能够对同一个rank中的chip进行写操作,而在同一个rank的chip也共享同样的控制信号。内存控制器106可以通过内存总线分别访问DRAM 108中各个通道内的存储单元中的数据。
实际应用中,DRAM bank中的存储单元分别连接字线(word line)和位线(bitline),字线在水平方向上连接多个存储单元,位线用于在垂直方向上连接多个存储单元。字线用于使能存储单元,位线用于向各存储单元中的电容充电,从而可以利用电容存储电量的多寡来代表数据0和1。可以理解的是,当位线为高电平时,电容中存储的电量较多,或者说,电容中的电荷较多。当位线为低电平时,电容中存储的电量较少,或者说,电容中的电荷较少。可以应用中,一种情况下,当电容中电荷较多时可以用于指示存储单元中存储的数据为“1”,电荷较少时用于指示存储的数据为“0”。在另一种情况下,当电容中电荷较多时也可以用于指示存储的数据为“0”,电荷较少时用于指示存储的数据为“1”。
从理论上分析,DRAM存储单元可以认为是一个噪声信道(noisy channel)。发明人在实现本发明的过程中发现,DRAM中的数据发生错误情况可以分为两种,一种是数据由逻辑0变成逻辑1,另外一种是数据由逻辑1变成逻辑0。经研究表明,假设DRAM存储单元中的电荷量较高时表示逻辑1,则数据由逻辑0变成逻辑1的概率远小于由逻辑1变成逻辑0的概率。因此,降低DRAM阵列中存储高电荷的存储单元的数量可以大大降低DRAM阵列的出错概率。
为了降低DRAM中存储的数据的出错概率,本发明实施例提出了一种内存访问方法,该方法可以在内存控制器中来实现,也可以在DRAM内存中来实现。下面将先结合图1、图2和图3对如何在内存控制器中实现来进行描述。图2为本发明实施例提供的一种内存控制器的结构示意图。如图2所示,内存控制器106可以包括通信接口1061、ECC模块1062以及翻转模块1063。通信接口1061可以基于现有的DDR总线接口协议来实现。通信接口1061用于接收Core 104发送的待写入内存DRAM 108的待写入数据。ECC模块1062,用于对通信接口1061接收的待写入数据进行校验和纠错,以获得所述待写入数据的ECC编码。翻转模块1063可以用于执行图3所示的数据翻转方法。图3为本发明实施例提供的一种数据翻转方法的流程图,具体的,如图3所示,该方法可以包括下述步骤。可以理解的是,图3所示的数据翻转方法也可以被称为本发明实施例提供的一种内存访问方法。
在步骤302中,接收待写入内存的第一数据。实际应用中,内存控制器106能够通过内存控制器106与core 104之间的通信接口1061接收core 104发送的第一数据。实际应用中,所述第一数据的大小可以根据DDR总线的带宽来确定,例如,第一数据可以为64比特(bit)或32bit。在此不对第一数据的大小进行限定。
在步骤304中,判断所述第一数据中“1”的数量是否大于“0”的数量。当所述第一数据中“1”的数量大于“0”的数量时,该方法进入步骤306。当所述第一数据中“1”的数量小于“0”的数量时,该方法进入步骤308。
在步骤306中,判断所述DRAM的存储模式是否为第一模式,其中,所述第一模式用于指示存储单元中电容中的电荷量较高时对应的数据为逻辑“1”的存储形式。当所述DRAM的存储模式为第一模式时,该方法进入步骤310。当所述DRAM的存储模式不为第一模式时,该方法进入步骤314。在本发明实施例中,DRAM的存储模块可以包括第一模式和第二模式,其中,所述第一模式也可以被称为true cell位存储模式,所述true cell位存储模式是指DRAM阵列中存储单元的电容中的电荷量较高对应的数据为逻辑“1”时的存储模式。所述第二模式也可以被称为anti cell位存储模式,所述anti cell位存储模式是指存储单元的电容中的电荷量较高对应的数据为逻辑“0”的存储形式。换一种表达方式,true cell位存储模式是指位线为高电压时存储逻辑“1”,位线为低电压时存储逻辑“0”的存储模式。anticell位存储模式是指位线为低电压时存储逻辑“1”,位线为高电压时存储逻辑“0”的存储模式。在本发明实施例中,第一模式也就是指位线为高电压时存储数据为逻辑“1”的存储模式,第二模式也就是指位线为高电压时存储数据为逻辑“0”的存储模式。需要说明的是,DRAM的存储模式可以根据生产DRAM芯片的生产商给的出厂信息获得,也可以自行进行检测得到。
若在步骤304中判断所述第一数据中的“1”的数量大于“0”的数量,且在本步骤中,判断存储模式为位线为高电压时存储数据为逻辑“1”的存储模式,则该方法进入步骤310。若本步骤中,判断存储模式为位线为高电压时存储数据为逻辑“0”的存储模式,则该方法进入步骤314。
在步骤308中,判断所述DRAM的存储模式是否为第一模式,其中,所述第一模式用于指示存储单元的电容中的电荷量较高时对应的数据为逻辑“1”的存储形式。当所述DRAM的存储模式为第一模式时,该方法进入步骤314。当所述DRAM的存储模式不为第一模式时,该方法进入步骤310。具体的,若在步骤304中判断出所述第一数据中的“1”的数量小于“0”的数量,且若在本步骤中进一步判断出存储模式为位线为高电压时存储数据为逻辑“1”的存储模式,则该方法进入步骤314。若在在本步骤中进一步判断存储模式不是位线为高电压时存储的数据为逻辑“1”的存储模式,也就是说若DRAM的存储模式为位线为高电压时存储的数据为逻辑“0”的存储模式,则该方法进入步骤310。
在步骤310中,对所述第一数据中的各位数据进行翻转(flip),获得第二数据,并进入步骤312。具体的,可以将第一数据中的逻辑“1”翻转为逻辑“0”,将第一数据中的逻辑“0”翻转为逻辑“1”。在本发明实施例中,将对第一数据进行翻转后得到的数据称为第二数据。实际应用中,可以利用翻转电路来实现。例如,翻转电路可以通过非门阵列对每位数值进行取反来实现。
在步骤312中,将所述第二数据写入DRAM的存储单元中。具体的,内存控制器可以将翻转后的第二数据发送给内存108,并将翻转标识携带在ECC模块获得的ECC编码中发送给内存108,内存108可以将获得的第二数据和ECC编码存储于DRAM阵列中。在本发明实施例中,翻转标识用于指示是否对接收的第一数据进行了翻转。换一种表达方式,翻转标识用于指示存储于DRAM中的第二数据是否为翻转后的数据。在本发明实施例中,可以将翻转标识携带在ECC编码中,通过预设的ECC编码中预设的位来指示是否所述第二数据是否为翻转后的数据。在本发明实施例中不对翻转标识的标识进行具体限定,例如,可以用逻辑“1”指示对所述第一数据进行了翻转,用逻辑“0”指示未对所述第一数据进行翻转。
在步骤314中,将所述第一数据写入DRAM中。具体的,内存控制器将所述第一数据以及ECC编码模块根据所述第一数据获得的ECC编码写入DRAM的存储单元中。
基于上述实施例的描述可以知道,在本发明实施例中,针对不同的数据写入不同存储模式的DRAM时,可能会出现下述四种情形。在一种情形下,结合步骤304、306和310可以知道,若在步骤304中确定所述第一数据中的“1”的数量大于“0”的数量,且在步骤306中进一步判断所述DRAM的存储模式为位线为高电压时存储的数据为逻辑“1”的存储模式,则说明将所述第一数据写入DRAM后,用于存储所述第一数据的存储单元中高电荷的存储单元较多,这就可能使得存储单元中数据出错(例如,逻辑“1”变成逻辑“0”)的概率增大。因此,为了降低出错概率,需要对第一数据中的各位数据进行翻转,将翻转后获得的第二数据写入DRAM中。
在第二种情形下,结合步骤304、308和310可以知道,若在步骤304中确定所述第一数据中的“1”的数量小于“0”的数量,且在步骤308中进一步判断所述DRAM的存储模式为位线为高电压时存储的数据为逻辑“0”的存储模式,则说明将所述第一数据写入DRAM后,用于存储所述第一数据的存储单元中高电荷的存储单元也较多,这就可能使得存储单元中的数据出错的概率增大。因此,在这种情形下也需要对第一数据中的各位数据进行翻转后存储。
结合在本发明实施例中的步骤304、306和314可以知道,在第三种情形下,若在步骤304中确定所述第一数据中的“1”的数量大于“0”的数量,且在步骤306中进一步判断所述DRAM的存储模式不是位线为高电压时存储的数据为逻辑“1”的存储模式,而是位线为高电压时存储的数据为逻辑“0”的存储模式,则说明将所述第一数据写入DRAM后,用于存储所述第一数据的存储单元中高电荷的存储单元不多,在这种情形下,出错的概率并不高,因此,无需对所述第一数据进行翻转后存储。
结合在本发明实施例中的步骤304、308和314可以知道,在第四种情形下,若在步骤304中确定所述第一数据中的“1”的数量小于“0”的数量,且在步骤308中进一步确定所述DRAM的存储模式是位线为高电压时存储的数据为逻辑“1”的存储模式,则说明将所述第一数据写入DRAM后,用于存储所述第一数据的存储单元中高电荷的存储单元也并不多。在这种情形下,出错的概率也并不高,因此,无需对所述第一数据进行翻转后存储。
根据本发明实施例提供的内存访问方法,在将数据写入DRAM内存时,可以根据待写入数据中的逻辑“1”和逻辑“0”的数量的大小以及DRAM的存储模式来确定是否对待存储的数据进行翻转后存储,从而在将数据存储于DRAM中后,能够降低DRAM阵列中的高电荷的存储单元的数量,降低数据的出错概率。
需要说明的是,本发明实施例是以第一数据为例说明将一个数据写入具有不同存储模式的DRAM时可能出现的不同情形。实际应用中,由于一个DRAM内存的存储模式在出厂时就是固定的,假设第一DRAM阵列的存储模式为第一模式,第二DRAM阵列的存储模式为第二模式,则将第一数据写入第一DRAM时,可能会出现上述步骤304、306和310描述的第一种情形。将第三数据写入第二DRAM时,可能会出现上述步骤304、308和310描述的第二种情形,例如,若需要将第三数据写入第二DRAM,第三数据中的逻辑“0”的数量多于逻辑“1”的数量,且第二DRAM的存储模式为高电压时存储的数据为逻辑“0”的存储模式,则可以对所述第三数据中进行翻转获得第四数据,并将获得的第四数据写入所述第二DRAM中,以减少第二DRAM中高电荷的存储单元的数量,降低出错概率。当然,将其他数据存储于不同的DRAM中时,也可能出现上述第三和第四种情形。
如前所述,在本发明实施例中,可以将翻转标识携带在ECC编码中,通过预设的ECC编码中预设的位来指示是否对待写入所述DRAM的第一数据进行了翻转存储。通常,对于64bits的数据需要8bits的ECC编码。在本发明实施例中可以利用8bits中的一部分作为翻转标识。例如,可以利用ECC编码中的最后1位作为翻转标识,也可以利用ECC编码中的最后2位或3位作为翻转标识。实际应用中,可以根据具体情况确定翻转标识所占的bit数量。可以理解的是,具体需要多少位翻转标识可以根据被执行翻转的数据的大小来决定。例如,假设第一数据的大小为64bits,执行翻转时也是对64bits进行翻转,则可以利用ECC编码中的1个bit作为翻转标识。若执行翻转时是分别对第一数据中的高32位和低32位分别确定是否进行了翻转,则可以利用ECC编码中的2bits来作为翻转标识。
为了更好的理解本方案,下面将以一个具体的示例对图2和图3描述的方法进行描述。例如,第一数据为64bits的数据,当内存控制器106的通信接口1061接收到所述第一数据后,所述第一数据可以被分别发送给ECC模块1062和翻转模块1063。ECC模块1062对所述第一数据进行ECC处理,获得6bits的ECC编码。翻转模块1063可以根据上述图3所示的方法对所述第一数据的高32bit和低32bit分别进行处理,以确定是否对高32bit和低32bit的数据进行翻转存储,并生成2bits的翻转标识。其中,翻转标识中的1bit用于指示是否对所述第一数据中的高32bits的数据进行了翻转,另外1bit用于指示是否对所述第一数据中的低32bits的数据进行了翻转。可以理解的是,无论是否对所述第一数据进行了翻转,内存控制器向内存108发生的数据均为64bits。
在获得6bits的ECC编码和2bit的翻转标识后,内存控制器106可以将64bits的数据、6bits的ECC编码以及2bits的翻转标识一起发送给内存108以存储到DRAM的存储单元中。具体的,在传输时,内存控制器106可以通过DQ线上的DQ[63:0]传输待存储与DRAM中的64bits的数据,通过DQ[69:64]来传输6bits的ECC编码,并通过DQ[71:70]传输翻转标识。其中,翻转标识和ECC编码可以一起被存储于ECC存储芯片区域内。从上述实施例可以看出,由于本实施例将数据翻转和ECC编码并行进行,因此,并没有引入额外的翻转延迟。
实际应用中,在另一种情形下,还可以先确定是否对接收的第一数据进行翻转,在获得翻转标识后,将翻转标识和第一数据一起输入ECC模块1062进行ECC编码。在这种情形下,可以如图4所示,图4为本发明实施例提供的另一种内存控制器106的结构示意图。图4所示的内存控制器除了包括如图2所示的通信接口1061、ECC模块1062以及翻转模块1063外,还包括数据队列1064。仍以上述64bits的第一数据为例,在图4所示的内存控制器中,当通信接口1061接收到所述第一数据后,可以利用翻转模块1063对所述第一数据按照上述图3所示的方法确定是否进行翻转处理,并获得翻转标识。在获得翻转标识后,可以将翻转模块1063处理后的数据以及翻转标识分别发送到数据队列1064和ECC模块1062。可以理解的是,翻转模块处理后的数据包括将所述第一数据进行翻转后获得的第二数据,也可以是指未进行翻转的所述第一数据。ECC模块1062可以对翻转模块1063处理后的数据以及翻转标识一起进行ECC编码,在获得ECC编码后,可以将数据队列1064中的翻转模块1063处理后的数据、翻转标识以及ECC编码一起发送到内存108进行存储。可以理解的是,图4所示的实施例与图2所示的实施例的不同点在于,在图2所示的实施例中,ECC模块1062只对输入的所述第一数据进行编码,而在图4所示的实施例中,ECC模块可以对翻转模块1063处理后的数据以及获得的翻转标识一起进行ECC处理获得ECC编码。
上面的实施例是以图3所示的数据翻转方法在内存控制器中实现为例进行描述。实际应用中,本发明实施例提供的内存访问方法还可以在DRAM内存模块中来实现。下面将结合图3和图5对本发明实施例提供的又一种实现方法进行描述。本领域技术人员可以知道,现有的DDR4具有DBI技术,主要用于对总线上的数据进行翻转,以减少数据在总线上传输时的功耗。如果图5所示的实施例就是基于现有计算机系统中的DBI方案进行设计。
图5为本发明实施例提供的一种计算机系统的结构示意图。如图5所示,图5所示的计算机系统中内存控制器106中包括通信接口1061、ECC模块1062以及主DDR物理层接口(Physical Interface,PHY)1065。其中通信接口1061用于与core104进行通信,接收core104发送的待写入内存108的第一数据。ECC模块1062用于对所述第一数据进行ECC校验,获得ECC编码。
主DDR物理层接口(又可称为主DDR PHY)1065是主机侧与内存108连接的物理层接口。主DDR PHY1065具有数据总线翻转(Data Bus Inversion,DBI)功能。根据现有的DBI技术,当总线上传输逻辑“1”时所需的功耗较少,因此,现有的DBI技术会根据待传输中的数据中“1”的数量来确定是否需要对待传输的数据进行翻转传输。具体的,在内存控制器106侧的主DDR PHY1065以及在内存108侧的从DDR物理层接口均具有DBI功能。内存控制器106侧的主DDR PHY1065主要用于对内存控制器106发送给内存108的数据中的“1”的数量进行检测,以确定是否需要进行翻转后传输。并通过dbi_n信号通知内存108中的从DDR物理层接口(从DDR PHY)1081其接收的数据是否为被翻转传输的数据。需要说明的是,图5所示的计算机系统中,并未对内存控制器106的结构进行改动。
在图5所示的计算机系统中的内存108中包括从DDR物理层接口(PhysicalInterface,PHY)1081以及与从DDR PHY 1081连接的DRAM阵列1084。其中,从DDR PHY 1081中可以包括翻转模块1082以及第二DBI模块1083。DRAM阵列1084中包括多个DRAM rank,每个rank中包括多个用于存储数据的DRAM存储单元(又称为:DRAM cell)。
第二DBI模块1082为与内存控制器106侧第一DBI模块1066对应的DBI模块,用于在第一DBI模块1066对第一数据实现翻转传输后,根据dbi_n信号将接收的数据再次进行翻转,以得到core 104发送给内存控制器的待存储数据。可以理解的是,如果第一DBI模块1066未对第一数据进行翻转传输,则第二DBI模块根据接收的dbi_n信号也不会对其接收的数据进行翻转处理。根据这种方式,第二DBI模块输出的数据即为core 104发送给内存控制器的待存储数据。
在本发明实施例中,为了降低存储于DRAM阵列1084中的数据的错误率,在现有的从DDR PHY 1081中增加了翻转模块1083。其中,翻转模块1083用于接收第二DBI模块1082处理后的数据,并根据图3所示的数据翻转方法对输入翻转模块1083的数据进行处理。具体的,翻转模块1083可以复用主DDR PHY 1065发送的dbi_n信号指示以判断是否需要对第二DBI模块1082输出的数据进行翻转存储。
具体的,仍然以第一数据为例进行描述。由于DBI技术是要保证总线上传输的逻辑“1”尽量多,以降低总线传输的功耗。因此,当从DDR PHY 1081中的第二DBI模块1083当接收的dbi_n信号指示主DDR PHY 1065对所述第一数据未进行翻转传输,则说明第一数据中的逻辑“1”的数量大于逻辑“0”的数量。当从DDR PHY 1081中的第二DBI模块1083当接收的dbi_n信号指示主DDR PHY 1065对所述第一数据进行了翻转传输,则说明第一数据中的逻辑“1”的数量小于逻辑“0”的数量。在获得待存储的数据中的逻辑“1”的数量的占比后,翻转模块1083会进一步根据DRAM阵列的存储模式确定是否需要对第二DBI模块输出的数据进行翻转处理后存储于DRAM中。翻转模块1083的具体处理方法可以参见前述对图3的具体描述,在此不再赘述。需要说明的是,在本发明实施例中,dbi_n信号也可以被称为数据总线翻转DBI信号。
需要说明的是,本发明实施例在内存侧实现数据翻转方法时,翻转模块1083只是复用了现有的DBI功能中的dbi_n信号来判断待存储数据中的逻辑“1”和逻辑“0”的数量的大小,而不需要自行去检测。并且,需要说明的是,图5是以翻转模块1083位于从DDR PHY1081中来描述,实际应用中,翻转模块1083也可以独立于从DDR PHY 1081而独立存在。在此不做限定。
可以理解的是,在图3和图5所示的实施例中,由于翻转模块1083复用了DDR PHY1081中的DBI功能,对内存控制器没有改变,因此,实际应用中很容易实现。
上述实施例从写数据的过程对数据的翻转处理方法进行描述。下面将简单介绍一下读数据的过程。对于基于上述翻转存储后的数据,在读数据的过程中可以通过图6所述的读数据方法进行处理。如图6所示,该读数据的方法可以包括下述步骤。
在步骤602中,接收主机发送的读请求,所述读请求中携带有待读取数据的地址。在步骤604中,根据所述地址从所述内存中读取第二数据及相应的ECC编码。为了描述方便,本发明实施例以前述写数据流程中存储的第二数据为例进行描述。在步骤606中,根据所述ECC编码中的翻转标识确定所述第二数据为翻转后被存储的数据。在步骤608中,对所述第二数据进行解码以获得所述第一数据。具体的,根据所述翻转标识对所述第二数据进行翻转以获得所述第一数据。
可以理解的是,上述读数据的方法可以由内存控制器106来实现,具体可以由图2和图4中所示的内存控制器106中的翻转模块1063来实现,也可以由内存108中的翻转模块1083来实现。在此不做限定。实际应用中,图5所示的内存控制器106中的翻转模块1083也可以独立于内存控制器存在。
在实际应用中,在另一种情况下,图5中的翻转模块1083也不是必须的,可以直接复用从DDR PHY1081中的第二DBI模块1082来实现图3所示的方法。具体的,在内存控制器可以生成两个标志位来单独控制Host端的DBI功能和内存模组断的DBI功能。内存控制器从数据中1的个数生成flip标志位通知Host端的DBI功能是否进行翻转数据操作。内存控制器也并行从地址和Anti Cell/True Cell的映射关系生成dbi_n信号直接发送给内存模组来控制模组上要不要进行翻转操作。最后数据、翻转标识(flip标志位)和ECC编码都被存储到DRAM颗粒中。如图7所示,图7分别以第一数据为0000和1111为例对如何结合DBI功能将数据写入不同存储模式的DRAM进行了示例性描述。
如图7所示,在第一种情形下,假设第一数据为“0000”,所述第一数据待存储的地址对应的DRAM的存储模式为true cell的情况下,内存控制器生成的翻转标识位(如图7中的flip标识位)以及dbi_n信号,其中,翻转(flip)标识位(flip)为1,dbi_n信号为1。所述翻转标识位用于指示如图5所示的内存控制器106中的第一DBI模块1066(主机端的DBI模块)执行翻转操作。如前所述,翻转标识位可以携带在所述第一数据的ECC编码中。当第一DBI模块1066接收到第一数据以及所述第一数据的ECC编码时,根据所述flip标识位对所述第一数据“0000”进行翻转得到数据Data’:“1111”,并将翻转后的数据“1111”通过内存总线传输给从DDR HPY中的第二DBI模块1082。并且,所述内存控制器通过内存总线将所述dbi_n信号发送给从DDR HPY中的第二DBI模块1082。当所述第二DBI模块1082接收到所述dbi_n信号后,将对从内存总线上接收的数据Data’:“1111”进行翻转得到数据Data”:0000,并将翻转后的数据Data”:0000存储在DRAM阵列的存储单元中。其中,翻转后的数据Data”:0000与所述第一数据相同。根据这种方式,在所述第一数据为0000,且存储模式为true cell的情况下,在存储数据时可以不将数据进行翻转存储。
在第二种情形下,当所述第一数据Data为“1111”,所述第一数据的地址对应的存储模式为true cell的存储模式下,内存控制器生成flip标识为0,且生成的dbi_n信号为1。根据所述flip标识,所述主机端的第一DBI模块1066将不对所述第一数据进行翻转,而是直接通过内存总线传输所述第一数据“1111”。当第二DBI模块1082接收到所述第一数据“1111”以及dbi_n:1信号时,所述第二DBI模块1082将根据所述dbi_n信号对接收的所述第一数据进行翻转,得到翻转后的第二数据(Data”:0000)存储到DRAM阵列中。根据这种方式,在所述第一数据为“1111”,且存储模式为true cell的情况下,可以通过复用现有内存中的DBI模块(如图5中的第二DBI模块1082)将待存储的所述第一数据进行翻转后进行存储。
在第三种情况下,当所述第一数据Data为0000,待存储所述第一数据的内存地址对应的存储模式为anti cell的存储模式时,内存控制器生成flip标识为1,且生成的dbi_n信号为0。所述主机端的DBI模块(如图5中第一DBI模块1066)根据所述flip标识对所述第一数据“0000”进行翻转获得Data’:1111,并将翻转后的数据Data’:1111通过内存总线发送给内存中的第二DBI模块1082。当所述第二DBI模块1082接收到数据Data’:1111后,由于dbi_n信号为0,因此,第二DBI模块1082并不对接收到的数据Data’:1111进行翻转,而直接将内存控制器侧的第一DBI模块1066翻转后的数据Data’:1111存储在所述DRAM阵列的存储单元中。在这种情形下,在所述第一数据为“0000”,且存储模式为anti cell的情况下,可以通过复用现有图5所示的内存控制器中的第一DBI模块1066对数据翻转的结果存储数据,也同样能够达到降低数据的错误率的效果。
继续参见图7,在第四种情形下,当所述第一数据Data为1111,待存储所述第一数据的内存地址对应的存储模式为anti cell的存储模式时,内存控制器生成flip标识为0,且生成的dbi_n信号为0。所述主机端的DBI模块(如图5中第一DBI模块1066)根据所述flip标识不对所述第一数据“1111”进行翻转传输,当内存侧的第二DBI模块1082从内存总线接收到数据1111(参见图7中的Data’:1111)以及dbi_n信号后,由于所述dbi_n信号为0,用于指示不对接收的数据进行翻转,因此,第二DBI模块1082不会对接收的第一数据1111进行翻转,可以直接将第一数据1111(参见图7中的Data”:1111)存储在所述DRAM阵列中。在这种情形下,在所述第一数据为“1111”,且存储模式为anti cell的情况下,第一DBI模块和第二DBI模块均不需要对所述第一数据进行翻转。
可以理解的是,上述描述是以第一数据分别为“0000”和“1111”为例,通过复用现有计算机系统中的DBI模块,对将第一数据分别存储于true cell的DRAM和anti cell的DRAM中是否需要进行翻转存储的情形进行了详细描述。可以理解的是数据“1111”只是“1”的数量大于“0”的数量的第一数据的一种示例,“0000”也只是“0”的数量大于“1”的数量的第一数据的一种示例。如前所述,true cell是指位线为高电压时存储数据为“1”的存储模式,anti cell是指位线为高电压时存储数据为“0”的存储模式。在图7所示的实施例中,是以flip标识位为“1”指示需要对数据进行翻转,flip标识位为“0”指示不需要对数据进行翻转为例进行描述。并且,图7所示的实施例中,是以dbi_n信号为“1”指示需要对数据进行翻转,dbi_n信号为“0”用于指示不需要对数据进行翻转为例进行描述。可以理解的是,实际应用中,也可以以flip标识位为“0”指示需要对数据进行翻转,dbi_n信号为“0”指示需要对数据进行翻转。在此不做限定。
图7以复用现有计算机系统中的DBI模块为例,对写数据的流程如何减少存储数据的出错概率进行了举例描述。图8将对复用DBI模块如何读数据的流程进行简单介绍。如图8所示,在读数据过程中,在本发明读数据被内存颗粒返回的时候,内存控制器发送读请求和dbi_n信号给内存模组。内存模组接收dbi_n信号的时候就配置DDR PHY的DBI模块(如图5中的第二DBI模块1082)是否将读数据翻转。在需要翻转的情况下,读数据从DRAM颗粒回来之后,通过内存模组的DBI模块被翻转,然后对应的数据、翻转标识(flip标志位)和ECC编码被返回给主机侧的DRR PHY。主机使用对应flip标志位的DQ线来判断是否对接收的数据进行数据翻转。最后数据和ECC被返回到内存控制器。如图8所示,图8分别以读取第一数据,且第一数据为0000和1111为例对如何结合DBI功能从不同存储模式的DRAM读出数据进行了示例性描述。
例如,如图8所示,在第一种情形下,当DRAM的存储模式为True cell的存储模式,可以配置dbi_n信号为“1”,用于指示内存中的DBI模块(如图5中的第二DBI模块1082)对数据进行翻转。如图7所示,当所述第一数据为“0000”,且存储模式为True cell的存储模式时,DRAM阵列中存储的数据为Data”:0000,且ECC编码中的flip标识位为1。因此,在读数据的过程中,如图8所示,当待读取的数据为“0000”时,从DRAM中读取的数据为Data”:0000,第二DBI模块1082根据配置的dbi_n信号对读取的数据Data”:0000进行翻转,获得Data’:1111,并将翻转后的数据Data’:1111通过内存总线发送给主DDR PHY侧的第一DBI模块1066,第一DBI模块1066接收到Data’:1111后,根据ECC编码中的flip标识位“1”判断需要对接收的数据Data’:1111进行翻转,因此第一DBI模块1066可以将接收的数据Data’:1111翻转后得到待读取的数据(Data:0000),并将翻转后的数据“0000”及ECC编码发送给内存控制器。
可以理解的是,图8所示的读流程是与图7中对应的写流程的一个相反的过程。从True cell的DRAM中读取数据1111的过程可以参见图8第二种情形的图示,从Anti cell的DRAM中读取数据0000的过程可以参见图8第三种情形的图示,从Anti cell的DRAM中读取数据1111的过程可以参见图8第四种情形的图示。对图8中第二种至第四种情形的理解可以参见对第一种情形的具体描述,在此不再赘述。
需要说明的是,在图7和图8所示的实施例中,当存储模式为True cell模式时,配置dbi_n信号为“1”,用于指示内存中的第二DBI模块对接收的数据进行翻转。当存储模式为Anti cell模式时,配置dbi_n信号为“0”,用于指示内存中的第二DBI模块对接收的数据不进行翻转。可以理解的是,第二DBI模块接收的数据包括从内存总线接收的内存控制器发送的数据,也包括从DRAM阵列读取的数据。实际应用中,也可以用dbi_n信号为“0”用于指示内存中的第二DBI模块对接收的数据进行翻转。本发明实施例不对dbi_n信号的具体标识进行限制。
需要说明的是,上述实施例分别以第一数据中“1”和“0”的数量为例分别对是否需要对所述第一数据进行翻转存储进行了描述。下面将简单对本发明实施例提供的内存访问方法进行总结描述。图9为本发明实施例提供的一种内存访问方法流程图,如图9所示,该方法可以由内存控制器执行,也可以由内存模块中的翻转模块(又可以被称为翻转电路)执行。为了描述方便,下面以内存控制器为例对图9所示的方法进行描述。
如图9所示,在步骤902中,内存控制器接收待写入动态随机存储器DRAM的第一数据。在步骤904中,判断所述第一数据中第一数值的数量大于第二数值的数量且所述DRAM的存储模式为位线为高电压时存储数据为所述第一数值的存储模式。在本发明实施例中,第一数值或第二数值用于指示第一数据中比特位的值。例如,在一种情形下,第一数值为“1”,第二数值为“0”。在另一种情形下,第一数值为“0”,第二数值为“1”。
当第一数值为“1”,第二数值为“0”时,如果所述DRAM中的存储模式为位线为高电压时存储数据为第一数值(即“1”)的存储模式(即前述的True cell存储模式),则在步骤906中,所述内存控制器响应于上述判断,将所述第一数据进行翻转以获得第二数据。具体的,所述内存控制器需要分别将第一数据中的第一数值“1”翻转为第二数值“0”,将所述第一数据中的第二数值“0”翻转为第一数值“1”,以得到第二数据。然后在步骤908中,将所述第二数据存储于所述DRAM中。可以理解的是,将所述第一数据进行翻转后,得到的所述第二数据中第一数值“1”的数量小于第二数值“0”的数量。又由于所述DRAM的存储模式为位线为高电压时存储数据为“1”的存储模式(即True cell存储模式),因此,将所述第二数据存储于所述DRAM中后,所述DRAM中存储所述第二数据的存储单元中高电荷的数量比较少,所述第二数据出错的概率将小于所述第一数据的错误概率。
在另一种情形下,当第一数值为“0”,第二数值为“1”时,如果所述DRAM中的存储模式为位线为高电压时存储数据为第一数值(即“0”)的存储模式(即前述的Anti cell存储模式),则在步骤906中,所述内存控制器也会响应于上述判断,将所述第一数据进行翻转以获得第二数据。具体的,所述内存控制器需要分别将第一数据中的第一数值“0”翻转为第二数值“1”,将所述第一数据中的第二数值“1”翻转为第一数值“0”,以得到第二数据。然后在步骤908中,将所述第二数据存储于所述DRAM中。可以理解的是,将所述第一数据进行翻转后,得到的所述第二数据中第一数值“0”的数量小于第二数值“1”的数量。又由于所述DRAM的存储模式为位线为高电压时存储数据为“0”的存储模式(即Anti cell存储模式),因此,将所述第二数据存储于所述DRAM中后,所述DRAM中存储所述第二数据的存储单元中高电荷的数量比较少,所述第二数据出错的概率将小于所述第一数据的错误概率。
可以理解的是,实际应用中,可以根据数据总线翻转DBI信号(即前述实施例中的dbi_n信号)来判断所述第一数据中的第一数值的数量大于所述第二数值的数量。如前所述,所述DBI信号用于指示是否需要将数据翻转传输。当所述数据中的“1”的数量大于“0”的数量时,总线传输的功耗较小。因此,在本发明实施例中,当第一数值为“1”,所述第二数值为“0”,可以根据第一数据总线翻转DBI信号判断所述第一数据中第一数值的数量大于第二数值的数量,其中,所述第一DBI信号用于指示所述第一数据为不需要经过翻转后在数据总线上传输的数据。换一种表达方式,当第一数值为“1”,所述第二数值为“0”,可以根据所述第一DBI信号获知所述第一数据中“1”的数量大于“0”,不需要对所述第一数据进行翻转传输也可以节省总线传输功耗。
当所述第一数值为“0”,所述第二数值为“1”时,可以根据第二数据总线翻转DBI信号判断所述数据中所述第一数值的数量大于所述第二数值的数量,其中,所述第二DBI信号用于指示所述第一数据为需要翻转后在数据总线上传输的数据。换一种表达方式,当第一数值为“0”,所述第二数值为“1”,可以根据所述第二DBI信号获知所述第一数据中“0”的数量大于“1”,需要对所述第一数据进行翻转传输以节省总线传输功耗。
可以理解的是,在按照图9所示的方法将第一数据翻转写入DRAM后,当需要读取第一数据时,可以参照图6所示的方法对从DRAM中读取的数据进行判断是否需要翻转。读取数据的过程可以参加前述图6的实施例的描述,在此不再赘述。从本发明实施例提供的上述方法可以看出,本发明实施例为了降低存储于DRAM阵列中的数据的出错概率,根据待存储数据中的逻辑“1”和逻辑“0”的数量,结合存储数据的DRAM阵列中DRAM芯片的存储模式确定是否对待存储的数据进行翻转存储,以减少DRAM阵列中高电荷的存储单元的数量,降低数据的错误率。
可以理解的是,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,上述实施例所讨论的模块相互之间的连接可以是电性、机械或其他形式。所述作为分离部件说明的模块可以是物理上分开的,也可以不是物理上分开的。作为模块显示的部件可以是物理模块或者也可以不是物理模块。另外,在申请实施例各个实施例中的各功能模块可以独立存在,也可以集成在一个处理模块中。
本发明实施例还提供一种数据处理的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述任意一个方法实施例所述的方法流程。本领域普通技术人员可以理解,前述的存储介质包括:U盘、移动硬盘、磁碟、光盘、随机存储器(Random-Access Memory,RAM)、固态硬盘(Solid State Disk,SSD)或者非易失性存储器(non-volatile memory)等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
需要说明的是,本申请所提供的实施例仅仅是示意性的。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本发明实施例、权利要求以及附图中揭示的特征可以独立存在也可以组合存在。在本发明实施例中以硬件形式描述的特征可以通过软件来执行,反之亦然。在此不做限定。
Claims (8)
1.一种内存访问方法,其特征在于,包括:
接收待写入动态随机存储器DRAM的第一数据;
确定所述第一数据中第一数值的数量大于第二数值的数量;所述确定所述第一数据中第一数值的数量大于第二数值的数量包括:
根据数据总线翻转DBI信号确定所述第一数据中第一数值的数量大于第二数值的数量;确定所述DRAM用于在位线为高电压时存储所述第一数值且在位线为低电压时存储所述第二数值;所述第一数值为“1”,所述第二数值为“0”;或所述第一数值为“0”,所述第二数值为“1”;
响应于上述确定,将所述第一数据进行翻转以获得第二数据;所述将所述第一数据进行翻转以获得第二数据包括:将所述第一数据中的所述第一数值翻转为所述第二数值,将所述第一数据中的所述第二数值翻转为所述第一数值,以获得所述第二数据;
将所述第二数据存储于所述DRAM中。
2.根据权利要求1所述的方法,其特征在于,还包括:
接收读请求,所述读请求中携带有第一地址;
根据所述第一地址从所述DRAM中读取所述第二数据;
确定所述第二数据为翻转后存储的数据;
响应于所述确定所述第二数据为翻转后存储的数据,对所述第二数据进行翻转以获得所述第一数据。
3.根据权利要求2所述的方法,其特征在于,所述确定所述第二数据为翻转后存储的数据包括:
根据所述第二数据的ECC编码中的翻转标识位确定所述第二数据为翻转后被存储的数据。
4.一种计算机设备,其特征在于,包括:
动态随机存储器DRAM,用于存储数据;
内存控制器,与所述DRAM连接并用于:
接收待写入所述DRAM的第一数据;
确定所述第一数据中第一数值的数量大于第二数值的数量;所述确定所述第一数据中第一数值的数量大于第二数值的数量包括:
根据数据总线翻转DBI信号确定所述第一数据中第一数值的数量大于第二数值的数量;
确定所述DRAM用于在位线为高电压时存储所述第一数值且在位线为低电压时存储所述第二数值;所述第一数值为“1”,所述第二数值为“0”;或所述第一数值为“0”,所述第二数值为“1”
响应于上述确定,将所述第一数据进行翻转以获得第二数据;所述内存控制器用于:将所述第一数据中的所述第一数值翻转为所述第二数值,将所述第一数据中的所述第二数值翻转为所述第一数值,以获得所述第二数据;
将所述第二数据存储于所述DRAM中。
5.根据权利要求4所述的计算机设备,其特征在于,所述内存控制器用于:
接收读请求,所述读请求中携带有第一地址;
根据所述第一地址从所述DRAM中读取所述第二数据;
确定所述第二数据为翻转后存储的数据;
响应于所述确定所述第二数据为翻转后存储的数据,对所述第二数据进行翻转以获得所述第一数据。
6.一种存储器,其特征在于,包括:
动态随机存储器DRAM,用于存储数据;
通信接口,与所述DRAM连接并用于接收待写入所述DRAM的第一数据;
翻转模块,与所述通信接口连接并用于:
确定所述第一数据中第一数值的数量大于第二数值的数量;所述确定所述第一数据中第一数值的数量大于第二数值的数量包括:
根据数据总线翻转DBI信号确定所述第一数据中第一数值的数量大于第二数值的数量;
确定所述DRAM用于在位线为高电压时存储所述第一数值且在位线为低电压时存储所述第二数值;所述第一数值为“1”,所述第二数值为“0”;或所述第一数值为“0”,所述第二数值为“1”;
响应于上述确定,将所述第一数据进行翻转以获得第二数据;所述翻转模块用于将所述第一数据中的所述第一数值翻转为所述第二数值,将所述第一数据中的所述第二数值翻转为所述第一数值,以获得所述第二数据;
将所述第二数据存储于所述DRAM中。
7.根据权利要求6所述的存储器,其特征在于:
所述翻转模块用于根据第一数据总线翻转DBI信号的指示将接收的数据中的第一数值转变为第二数值,以获得所述第二数据。
8.根据权利要求6或7所述的存储器,其特征在于:
所述通信接口还用于接收读请求,所述读请求中携带有第一地址;
所述翻转模块还用于:
确定根据所述第一地址从所述DRAM中读取的所述第二数据为翻转后存储的数据;
响应于所述确定根据所述第一地址从所述DRAM中读取的所述第二数据为翻转后存储的数据,对所述第二数据进行翻转以获得所述第一数据。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2019/108122 WO2020063735A1 (zh) | 2018-09-30 | 2019-09-26 | 内存访问技术及计算机系统 |
US17/217,570 US11521674B2 (en) | 2018-09-30 | 2021-03-30 | Memory access technology and computer system for reducing data error probability |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811163105 | 2018-09-30 | ||
CN2018111631053 | 2018-09-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110968451A CN110968451A (zh) | 2020-04-07 |
CN110968451B true CN110968451B (zh) | 2021-09-21 |
Family
ID=70029531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811369316.2A Active CN110968451B (zh) | 2018-09-30 | 2018-11-16 | 内存访问技术及计算机系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11521674B2 (zh) |
CN (1) | CN110968451B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114327995A (zh) * | 2020-09-30 | 2022-04-12 | 长鑫存储技术有限公司 | 读写方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101859594A (zh) * | 2010-07-01 | 2010-10-13 | 秉亮科技(苏州)有限公司 | 集成弱写测试功能的自定时写跟踪型静态随机存储器及其校准方法 |
CN102956261A (zh) * | 2011-08-23 | 2013-03-06 | 深圳市国微电子股份有限公司 | 一种用于fpga的可编程存储单元电路 |
CN106409339A (zh) * | 2015-07-30 | 2017-02-15 | 旺宏电子股份有限公司 | 具有均匀译码器的存储器系统及其操作方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3883687B2 (ja) * | 1998-02-16 | 2007-02-21 | 株式会社ルネサステクノロジ | 半導体装置、メモリカード及びデータ処理システム |
US7145819B2 (en) | 2001-06-11 | 2006-12-05 | Analog Devices, Inc. | Method and apparatus for integrated circuit with DRAM |
JP4928830B2 (ja) * | 2006-05-18 | 2012-05-09 | 株式会社東芝 | Nand型フラッシュメモリ装置及びメモリデバイス |
US7805658B2 (en) | 2007-02-12 | 2010-09-28 | International Business Machines Corporation | DRAM Cache with on-demand reload |
US7729166B2 (en) * | 2008-07-02 | 2010-06-01 | Mosaid Technologies Incorporated | Multiple-bit per cell (MBC) non-volatile memory apparatus and system having polarity control and method of programming same |
US7848131B2 (en) * | 2008-10-19 | 2010-12-07 | Juhan Kim | High speed ferroelectric random access memory |
KR101775660B1 (ko) * | 2011-09-29 | 2017-09-07 | 삼성전자주식회사 | 워드 라인 전압의 변화없이 상이한 문턱 전압들을 갖는 메모리 셀들을 읽는 방법 및 그것을 이용한 불 휘발성 메모리 장치 |
US9583207B2 (en) * | 2015-02-10 | 2017-02-28 | Sandisk Technologies Llc | Adaptive data shaping in nonvolatile memory |
US9842634B2 (en) * | 2015-02-23 | 2017-12-12 | Qualcomm Incorporated | Wordline negative boost write-assist circuits for memory bit cells employing a P-type field-effect transistor (PFET) write port(s), and related systems and methods |
CN104681085B (zh) * | 2015-03-03 | 2018-09-04 | 中国科学院微电子研究所 | 一种基于翻转编码电路的阻变存储器及相应数据存储方法 |
US9721640B2 (en) | 2015-12-09 | 2017-08-01 | Intel Corporation | Performance of additional refresh operations during self-refresh mode |
US10146451B2 (en) * | 2015-12-10 | 2018-12-04 | SK Hynix Inc. | Reducing read disturb in data storage |
CN205656856U (zh) * | 2016-05-20 | 2016-10-19 | 西安紫光国芯半导体有限公司 | 一种超低写功耗的静态随机存储器 |
CN105895148B (zh) * | 2016-05-20 | 2018-11-09 | 西安紫光国芯半导体有限公司 | 一种低功耗的静态随机存储器及其写操作的控制方法 |
CN106406767A (zh) | 2016-09-26 | 2017-02-15 | 上海新储集成电路有限公司 | 一种非易失性双列直插式存储器及存储方法 |
-
2018
- 2018-11-16 CN CN201811369316.2A patent/CN110968451B/zh active Active
-
2021
- 2021-03-30 US US17/217,570 patent/US11521674B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101859594A (zh) * | 2010-07-01 | 2010-10-13 | 秉亮科技(苏州)有限公司 | 集成弱写测试功能的自定时写跟踪型静态随机存储器及其校准方法 |
CN102956261A (zh) * | 2011-08-23 | 2013-03-06 | 深圳市国微电子股份有限公司 | 一种用于fpga的可编程存储单元电路 |
CN106409339A (zh) * | 2015-07-30 | 2017-02-15 | 旺宏电子股份有限公司 | 具有均匀译码器的存储器系统及其操作方法 |
Also Published As
Publication number | Publication date |
---|---|
US11521674B2 (en) | 2022-12-06 |
US20210217464A1 (en) | 2021-07-15 |
CN110968451A (zh) | 2020-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11681579B2 (en) | Semiconductor memory devices and memory systems including the same | |
US8127204B2 (en) | Memory system and method using a memory device die stacked with a logic die using data encoding, and system using the memory system | |
CN112837725A (zh) | 半导体存储器件和操作半导体存储器件的方法 | |
KR101968433B1 (ko) | 메모리 액세스 방법, 저장-클래스 메모리, 및 컴퓨터 시스템 | |
KR102223007B1 (ko) | 반도체 메모리 장치, 이의 리프레쉬 방법 및 반도체 메모리 장치의 리프레쉬 카운터 | |
US20160299719A1 (en) | Memory device and method for data exchanging thereof | |
US11955159B2 (en) | Semiconductor memory device and memory system including the same | |
EP4141872A1 (en) | Memory controller and memory system including the same | |
US11928363B2 (en) | Operating method of host device and storage device and storage device | |
US10528423B2 (en) | Memory management systems and methods | |
CN115966229A (zh) | 半导体存储器件及操作半导体存储器件的方法 | |
CN110968451B (zh) | 内存访问技术及计算机系统 | |
US20240038292A1 (en) | Semiconductor memory device and memory system including the same | |
US20230376427A1 (en) | Memory system and computing system including the same | |
KR102393144B1 (ko) | Ssd용 버스 멀티플렉서 그리드를 위한 고급 ce 인코딩 | |
KR20190119489A (ko) | 반도체 메모리 장치 및 이를 포함하는 메모리 시스템 | |
WO2020063735A1 (zh) | 内存访问技术及计算机系统 | |
CN110097898B (zh) | 页面大小感知调度方法和非暂时性计算机可读记录介质 | |
US10564896B2 (en) | Data storage device and operating method thereof | |
KR102545175B1 (ko) | 어드레스 테이블을 포함하는 메모리 장치, 및 메모리 컨트롤러의 동작 방법 | |
US20240028221A1 (en) | Semiconductor memory device and memory system including the same | |
US12079488B2 (en) | Memory system and method of operating the same | |
EP4383261A2 (en) | Memory device and method for performing error check and scrub (ecs) operation | |
US20240118970A1 (en) | Techniques for memory scrubbing associated with reliability availability and serviceability features |
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 |