CN105264608B - 存储数据的方法、内存控制器和中央处理器 - Google Patents
存储数据的方法、内存控制器和中央处理器 Download PDFInfo
- Publication number
- CN105264608B CN105264608B CN201480000446.2A CN201480000446A CN105264608B CN 105264608 B CN105264608 B CN 105264608B CN 201480000446 A CN201480000446 A CN 201480000446A CN 105264608 B CN105264608 B CN 105264608B
- Authority
- CN
- China
- Prior art keywords
- cache lines
- write
- internal memory
- data
- set commands
- 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
Classifications
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C14/00—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
- G11C14/0009—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell
- G11C14/0045—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell and the nonvolatile element is a resistive RAM element, i.e. programmable resistors, e.g. formed of phase change or chalcogenide material
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C14/00—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
- G11C14/0054—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a SRAM cell
- G11C14/009—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a SRAM cell and the nonvolatile element is a resistive RAM element, i.e. programmable resistors, e.g. formed of phase change or chalcogenide material
-
- 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/1048—Data bus control circuits, e.g. precharging, presetting, equalising
-
- 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/1016—Performance improvement
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
本发明公开了一种存储数据的方法、内存控制器和中央处理器。该方法包括:接收CPU发送的预设置命令,该预设置命令指示将缓存线在内存中对应的位置写1;根据该预设置命令,将该缓存线在该内存中对应的位置写1;接收该CPU发送的将该缓存线中的数据写入该内存的写命令;根据该写命令,将该缓存线中的0数据写入该0数据在该内存中对应的位置。本发明实施例的存储数据的方法、内存控制器和中央处理器,能够降低访问时延。
Description
技术领域
本发明涉及信息技术领域,并且更具体地,涉及存储数据的方法、内存控制器和中央处理器。
背景技术
相变内存(Phase change Memory,PCM)作为新一代的非易失固态存储(Non-Violate Memory,NVM)介质,具有读写时延短,寿命长的特点。然而,PCM写时延远大于读时延,并且PCM在写0和写1时的时延具有不对称性,即写0(或者说reset)时延很低,写1(或者说set)时延很大,两者相差十几倍以上,而读时延则最低。
对于PCM,现有技术不区分写0和写1,由于写1时延的限制,导致PCM页面的访问时延比较大。
发明内容
本发明实施例提供了一种存储数据的方法、内存控制器和中央处理器,能够降低访问时延。
第一方面,提供了一种存储数据的方法,包括:
接收CPU发送的预设置命令,该预设置命令指示将缓存线在内存中对应的位置写1;
根据该预设置命令,将该缓存线在该内存中对应的位置写1;
接收该CPU发送的将该缓存线中的数据写入该内存的写命令;
根据该写命令,将该缓存线中的0数据写入该0数据在该内存中对应的位置。
结合第一方面,在第一种可能的实现方式中,该预设置命令由该CPU在将该缓存线的监控标识置位时生成。
结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,在根据该写命令,将该缓存线中的0数据写入该0数据在该内存中对应的位置之前,该方法还包括:
确定该预设置命令已执行完;或者,
确定正在执行该预设置命令,等待该预设置命令执行完。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,该方法还包括:
在接收到该写命令时,若确定预设置命令队列中存在该预设置命令,则从该预设置命令队列中移除该预设置命令;
将该缓存线中的数据写入该缓存线中的数据在该内存中对应的位置。
结合第一方面或第一方面的第一至三种可能的实现方式中的任一种可能的实现方式,在第四种可能的实现方式中,根据该预设置命令,将该缓存线在该内存中对应的位置写1,包括:
根据该预设置命令,确定该缓存线在该内存中对应的位置;
确定该缓存线在该内存中对应的位置中数据为0的位置;
将该数据为0的位置写1。
结合第一方面或第一方面的第一至四种可能的实现方式中的任一种可能的实现方式,在第五种可能的实现方式中,该内存为相变内存PCM或电阻式随机存取内存ReRAM。
第二方面,提供了一种存储数据的方法,包括:
向内存控制器发送预设置命令,该预设置命令指示将缓存线在内存中对应的位置写1;
向该内存控制器发送将该缓存线中的数据写入该内存的写命令,以使该内存控制器根据该写命令,将该缓存线中的0数据写入该0数据在该内存中对应的位置。
结合第二方面,在第一种可能的实现方式中,在向内存控制器发送预设置命令之前,该方法还包括:
在将该缓存线的监控标识置位时,生成该预设置命令。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,生成该预设置命令,包括:
根据该缓存线的标签信息和索引信息,确定该预设置命令对应的内存的起始地址;
根据该起始地址和该缓存线的大小,生成该预设置命令。
结合第二方面或第二方面的第一或二种可能的实现方式,在第三种可能的实现方式中,该内存为相变内存PCM或电阻式随机存取内存ReRAM。
第三方面,提供了一种内存控制器,包括:
接收模块,用于接收CPU发送的预设置命令,该预设置命令指示将缓存线在内存中对应的位置写1;
预设置模块,用于根据该预设置命令,将该缓存线在该内存中对应的位置写1;
该接收模块还用于接收该CPU发送的将该缓存线中的数据写入该内存的写命令;
存储模块,用于根据该写命令,将该缓存线中的0数据写入该0数据在该内存中对应的位置。
结合第三方面,在第一种可能的实现方式中,该预设置命令由该CPU在将该缓存线的监控标识置位时生成。
结合第三方面或第三方面的第一种可能的实现方式,在第二种可能的实现方式中,该存储模块还用于:
在根据该写命令,将该缓存线中的0数据写入该0数据在该内存中对应的位置之前,确定该预设置命令已执行完,或者,确定正在执行该预设置命令,等待该预设置命令执行完。
结合第三方面的第二种可能的实现方式,在第三种可能的实现方式中,该存储模块还用于,在该接收模块接收到该写命令时,若确定预设置命令队列中存在该预设置命令,则从该预设置命令队列中移除该预设置命令,并将该缓存线中的数据写入该缓存线中的数据在该内存中对应的位置。
结合第三方面或第三方面的第一至三种可能的实现方式中的任一种可能的实现方式,在第四种可能的实现方式中,该预设置模块具体用于:
根据该预设置命令,确定该缓存线在该内存中对应的位置;
确定该缓存线在该内存中对应的位置中数据为0的位置;
将该数据为0的位置写1。
结合第三方面或第三方面的第一至四种可能的实现方式中的任一种可能的实现方式,在第五种可能的实现方式中,该内存为相变内存PCM或电阻式随机存取内存ReRAM。
第四方面,提供了一种中央处理器CPU,包括:
生成模块,用于生成预设置命令,该预设置命令指示将缓存线在内存中对应的位置写1
发送模块,用于向内存控制器发送该预设置命令;
该生成模块还用于生成将该缓存线中的数据写入该内存的写命令;
该发送模块还用于向该内存控制器发送该写命令,以使该内存控制器根据该写命令,将该缓存线中的0数据写入该0数据在该内存中对应的位置。
结合第四方面,在第一种可能的实现方式中,该生成模块具体用于,在将该缓存线的监控标识置位时,生成该预设置命令。
结合第四方面或第四方面的第一种可能的实现方式,在第二种可能的实现方式中,该生成模块具体用于:
根据该缓存线的标签信息和索引信息,确定该预设置命令对应的内存的起始地址;
根据该起始地址和该缓存线的大小,生成该预设置命令。
结合第四方面或第四方面的第一或二种可能的实现方式,在第三种可能的实现方式中,该内存为相变内存PCM或电阻式随机存取内存ReRAM。
基于上述技术方案,本发明实施例通过先根据CPU发送的预设置命令将缓存线在内存中对应的位置写1,再在接收到CPU发送的写命令时,将该缓存线中的0数据写入该0数据在该内存中对应的位置,能够降低访问时延。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例的一个应用场景的示意图。
图2是根据本发明一个实施例的存储数据的方法的示意性流程图。
图3是根据本发明另一实施例的存储数据的方法的示意性流程图。
图4是根据本发明实施例的内存控制器的示意性框图。
图5是根据本发明实施例的CPU的示意性框图。
图6是根据本发明实施例的存储数据的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
应理解,本发明实施例的技术方案可以应用于各种写0和写1时延具有非对称性的存储介质,例如:PCM、电阻式随机存取内存(Resistive Random Access Memory,ReRAM)等。为了描述方便,下述实施例中将以PCM为例进行说明。
在本发明实施例中,内存控制器(Memory Controller)可以为单独的器件,也可以集成到中央处理器(Central Processing Unit,CPU)中,本发明并不限定。
图1为可应用本发明实施例的一个场景的示意图。在图1中,内存采用PCM 130,CPU110通过内存控制器120访问PCM 130上的数据,其中,访问粒度为缓存线(cache line)。
图2示出了根据本发明实施例的存储数据的方法200的示意性流程图。该方法200由内存控制器(例如图1中的内存控制器120)执行。如图2所示,该方法200包括:
S210,接收CPU发送的预设置命令,该预设置命令指示将缓存线在内存中对应的位置写1;
S220,根据该预设置命令,将该缓存线在该内存中对应的位置写1;
S230,接收该CPU发送的将该缓存线中的数据写入该内存的写命令;
S240,根据该写命令,将该缓存线中的0数据写入该0数据在该内存中对应的位置。
在本发明实施例中,在将缓存线中的数据写(即回写)入内存前,CPU先向内存控制器发送预设置(preset)命令,该预设置命令指示将缓存线在内存中对应的位置写1。内存控制器接收到该预设置命令后,执行该预设置命令,将该缓存线在该内存中对应的位置写1。也就是说,通过该预设置命令,即将回写的缓存线在内存中对应的位置全部预填充1。在回写该缓存线时,CPU向内存控制器发送将该缓存线中的数据写入该内存的写命令。内存控制器接收到该写命令后,将该缓存线中的0数据写入该0数据在该内存中对应的位置。也就是说,在执行该写命令时,内存控制器只需将值为0的数据写入内存中相应的位置,对于值为1的数据,由于内存中相应的位置已经是1,因此不需要再写。这样,写过程为选择性写0的过程,对于写0时延小于写1时延的存储介质,能够降低写时延。
因此,本发明实施例的存储数据的方法,通过先根据CPU发送的预设置命令将缓存线在内存中对应的位置写1,再在接收到CPU发送的写命令时,将该缓存线中的0数据写入该0数据在该内存中对应的位置,能够降低访问时延。
在本发明实施例中,可选地,该预设置命令由该CPU在将该缓存线的监控标识置位时生成。也就是说,CPU可以在将该缓存线的监控标识置位时,生成该预设置命令。
例如,该监控标识可以是脏(dirty)标识。CPU在对缓存线第一次脏写时,置位dirty标识,并生成预设置命令发送给内存控制器。
应理解,预设置命令也可以在其他时刻生成,例如,在监控标识置位之前或之后,而且还可以与监控标识置位没有关系,本发明并不限定。
CPU根据该缓存线的标签(tag)信息和索引(index)信息,确定该预设置命令对应的内存的起始地址,并根据该起始地址和该缓存线的大小,生成该预设置命令。也就是说,该预设置命令中包含预设置的内存位置,其起始地址由CPU根据缓存线的标签信息和索引信息确定,大小为该缓存线的大小。
内存控制器在接收到CPU发送的预设置命令后,根据该预设置命令,将该缓存线在该内存中对应的位置写1。
在本发明实施例中,可选地,根据该预设置命令,将该缓存线在该内存中对应的位置写1,包括:
根据该预设置命令,确定该缓存线在该内存中对应的位置;
确定该缓存线在该内存中对应的位置中数据为0的位置;
将该数据为0的位置写1。
具体而言,内存控制器在接收到CPU发送的预设置命令后,解析该预设置命令,确定预设置的内存位置,即确定该缓存线在该内存中对应的位置,然后确定这些位置中数据为0的位置,并将数据为0的位置写1。例如,内存控制器解析预设置命令,得到预设置的内存的行(row)和列(column)地址,将该地址的数据读取到缓冲区,判断其中值为0的位置,将值为0的位置写1。应理解,也可以不确定缓存线在内存中对应的位置中数据为0的位置,而将缓存线在内存中对应的位置全部写1,这也应涵盖在本发明的保护范围之内。
CPU在回写该缓存线到内存中对应的位置时,向该内存控制器发送将该缓存线中的数据写入该内存的写命令。内存控制器根据该写命令,将该缓存线中的0数据写入该0数据在该内存中对应的位置。也就是说,内存控制器只需将该缓存线中值为0的数据写入内存中相应的位置。
在本发明实施例中,可选地,在根据该写命令,将该缓存线中的0数据写入该0数据在该内存中对应的位置之前,该方法200还包括:
确定该预设置命令已执行完;或者,
确定正在执行该预设置命令,等待该预设置命令执行完。
具体而言,预设置命令和写命令可能存在冲突,例如,内存控制器在接收到写命令时,相同地址(即相同缓存线)的预设置命令还未执行完或者还未执行。因此,内存控制器可以在确定该预设置命令已执行完时,将该缓存线中的0数据写入该0数据在该内存中对应的位置;或者,在确定正在执行该预设置命令时,等待该预设置命令执行完,再将该缓存线中的0数据写入该0数据在该内存中对应的位置。
对于预设置命令还未执行的情况,即接收到写命令时,预设置命令队列中存相同缓存线的预设置命令,可以将该预设置命令从预设置命令队列中移除,然后将该缓存线中的数据写入该缓存线中的数据在该内存中对应的位置。
因此,可选地,作为本发明的一个实施例,该方法200还可以包括:
在接收到该写命令时,若确定预设置命令队列中存在该预设置命令,则从该预设置命令队列中移除该预设置命令;
将该缓存线中的数据写入该缓存线中的数据在该内存中对应的位置。
可选地,在确定正在执行该预设置命令时,也可以不等待该预设置命令执行完,而是取消预设置操作,即停止执行该预设置命令,然后将该缓存线中的数据写入该缓存线中的数据在该内存中对应的位置。
本发明实施例的存储数据的方法,对于写0时延小于写1时延的存储介质,能够降低写时延,达到动态随机存取存储器(Dynamic Random Access Memory,DRAM)的水平,从而能够用PCM等替代DRAM做主存。
应理解,本发明实施例的技术方案还适用于写0时延小于写1时延的存储介质与DRAM混合使用的场景。例如用DRAM和PCM做ScratchPad(暂存器)方式的混合内存场景。对于DRAM和PCM做ScratchPad方式的混合内存,可以根据缓存线的tag判断该缓存线对应于PCM还是DRAM,如果是对应于PCM,则可采用本发明实施例的技术方案,例如,在第一次脏写时下发预设置命令。
以上从内存控制器的角度详细描述了根据本发明实施例的存储数据的方法,下面从CPU的角度详细描述根据本发明实施例的存储数据的方法。
图3示出了根据本发明实施例的存储数据的方法300的示意性流程图。该方法300由CPU(例如图1中的CPU 110)执行。如图3所示,该方法300包括:
S310,向内存控制器发送预设置命令,该预设置命令指示将缓存线在内存中对应的位置写1;
S320,向该内存控制器发送将该缓存线中的数据写入该内存的写命令,以使该内存控制器根据该写命令,将该缓存线中的0数据写入该0数据在该内存中对应的位置。
在本发明实施例中,在将缓存线中的数据写(即回写)入内存前,CPU先向内存控制器发送预设置命令,该预设置命令指示将缓存线在内存中对应的位置写1。内存控制器接收到该预设置命令后,执行该预设置命令,将该缓存线在该内存中对应的位置写1。也就是说,通过该预设置命令,即将回写的缓存线在内存中对应的位置全部预填充1。在回写该缓存线时,CPU向内存控制器发送将该缓存线中的数据写入该内存的写命令。内存控制器接收到该写命令后,将该缓存线中的0数据写入该0数据在该内存中对应的位置。也就是说,在执行该写命令时,内存控制器只需将值为0的数据写入内存中相应的位置,对于值为1的数据,由于内存中相应的位置已经是1,因此不需要再写。这样,写过程为选择性写0的过程,对于写0时延小于写1时延的存储介质,能够降低写时延。
因此,本发明实施例的存储数据的方法,通过先向内存控制器发送预设置命令,使内存控制器将缓存线在内存中对应的位置写1,再向内存控制器发送写命令,使内存控制器将缓存线中的0数据写入该0数据在内存中对应的位置,能够降低访问时延。
在本发明实施例中,可选地,在向内存控制器发送预设置命令之前,该方法300还包括:
在将该缓存线的监控标识置位时,生成该预设置命令。
例如,该监控标识可以是dirty标识。CPU在对缓存线第一次脏写时,置位dirty标识,并生成预设置命令发送给内存控制器。
在本发明实施例中,可选地,生成该预设置命令,包括:
根据该缓存线的标签信息和索引信息,确定该预设置命令对应的内存的起始地址;
根据该起始地址和该缓存线的大小,生成该预设置命令。
也就是说,该预设置命令中包含预设置的内存位置,其起始地址由CPU根据缓存线的标签信息和索引信息确定,大小为该缓存线的大小。
CPU生成预设置命令后,将该预设置命令发送给内存控制器。内存控制器根据该预设置命令,将该缓存线在该内存中对应的位置写1。详细描述请参见前述内存控制器侧的实施例中的描述,在此不再赘述。
CPU在回写该缓存线到内存中对应的位置时,向该内存控制器发送将该缓存线中的数据写入该内存的写命令。内存控制器根据该写命令,将该缓存线中的0数据写入该0数据在该内存中对应的位置。也就是说,内存控制器只需将该缓存线中值为0的数据写入内存中相应的位置。
应理解,在本发明实施例中,内存控制器侧描述的内存控制器与CPU之间的交互及相关特性、功能等与CPU侧的描述相应,为了简洁,在此不再赘述。
本发明实施例的存储数据的方法,对于写0时延小于写1时延的存储介质,能够降低写时延,达到DRAM的水平,从而能够用PCM等替代DRAM做主存。
应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
上文中详细描述了根据本发明实施例的存储数据的方法,下面将描述根据本发明实施例的内存控制器和CPU。
图4示出了根据本发明实施例的内存控制器400的示意性框图。如图4所示,该内存控制器400包括:
接收模块410,用于接收CPU发送的预设置命令,该预设置命令指示将缓存线在内存中对应的位置写1;
预设置模块420,用于根据该预设置命令,将该缓存线在该内存中对应的位置写1;
该接收模块410还用于接收该CPU发送的将该缓存线中的数据写入该内存的写命令;
存储模块430,用于根据该写命令,将该缓存线中的0数据写入该0数据在该内存中对应的位置。
在本发明实施例中,在将缓存线中的数据写(即回写)入内存前,CPU先向内存控制器发送预设置命令,该预设置命令指示将缓存线在内存中对应的位置写1。内存控制器的400的接收模块410接收到该预设置命令后,预设置模块420执行该预设置命令,将该缓存线在该内存中对应的位置写1。也就是说,通过该预设置命令,即将回写的缓存线在内存中对应的位置全部预填充1。在回写该缓存线时,CPU向内存控制器发送将该缓存线中的数据写入该内存的写命令。接收模块410接收到该写命令后,存储模块430将该缓存线中的0数据写入该0数据在该内存中对应的位置。也就是说,在执行该写命令时,内存控制器只需将值为0的数据写入内存中相应的位置,对于值为1的数据,由于内存中相应的位置已经是1,因此不需要再写。这样,写过程为选择性写0的过程,对于写0时延小于写1时延的存储介质,能够降低写时延。
因此,本发明实施例的内存控制器,通过先根据CPU发送的预设置命令将缓存线在内存中对应的位置写1,再在接收到CPU发送的写命令时,将该缓存线中的0数据写入该0数据在该内存中对应的位置,能够降低访问时延。
在本发明实施例中,可选地,该预设置命令由该CPU在将该缓存线的监控标识置位时生成。
在本发明实施例中,可选地,该存储模块430还用于:
在根据该写命令,将该缓存线中的0数据写入该0数据在该内存中对应的位置之前,确定该预设置命令已执行完,或者,确定正在执行该预设置命令,等待该预设置命令执行完。
在本发明实施例中,可选地,该存储模块430还用于,在该接收模块410接收到该写命令时,若确定预设置命令队列中存在该预设置命令,则从该预设置命令队列中移除该预设置命令,并将该缓存线中的数据写入该缓存线中的数据在该内存中对应的位置。
在本发明实施例中,可选地,该预设置模块420具体用于:
根据该预设置命令,确定该缓存线在该内存中对应的位置;
确定该缓存线在该内存中对应的位置中数据为0的位置;
将该数据为0的位置写1。
在本发明实施例中,可选地,该内存为PCM或ReRAM。
根据本发明实施例的内存控制器400可对应于根据本发明实施例的存储数据的方法中的内存控制器,并且内存控制器400中的各个模块的上述和其它操作和/或功能分别为了实现前述各个方法的相应流程,为了简洁,在此不再赘述。
本发明实施例的内存控制器,对于写0时延小于写1时延的存储介质,能够降低写时延,达到DRAM的水平,从而能够用PCM等替代DRAM做主存。
图5示出了根据本发明实施例的CPU 500的示意性框图。如图5所示,该CPU 500包括:
生成模块510,用于生成预设置命令,该预设置命令指示将缓存线在内存中对应的位置写1
发送模块520,用于向内存控制器发送该预设置命令;
该生成模块510还用于生成将该缓存线中的数据写入该内存的写命令;
该发送模块520还用于向该内存控制器发送该写命令,以使该内存控制器根据该写命令,将该缓存线中的0数据写入该0数据在该内存中对应的位置。
在本发明实施例中,在将缓存线中的数据写(即回写)入内存前,CPU500的生成模块510生成预设置命令,该预设置命令指示将缓存线在内存中对应的位置写1。发送模块520向内存控制器发送该预设置命令。内存控制器接收到该预设置命令后,执行该预设置命令,将该缓存线在该内存中对应的位置写1。也就是说,通过该预设置命令,即将回写的缓存线在内存中对应的位置全部预填充1。在回写该缓存线时,生成模块510生成将该缓存线中的数据写入该内存的写命令,发送模块520向该内存控制器发送该写命令。内存控制器接收到该写命令后,将该缓存线中的0数据写入该0数据在该内存中对应的位置。也就是说,在执行该写命令时,内存控制器只需将值为0的数据写入内存中相应的位置,对于值为1的数据,由于内存中相应的位置已经是1,因此不需要再写。这样,写过程为选择性写0的过程,对于写0时延小于写1时延的存储介质,能够降低写时延。
因此,本发明实施例的CPU,通过先向内存控制器发送预设置命令,使内存控制器将缓存线在内存中对应的位置写1,再向内存控制器发送写命令,使内存控制器将缓存线中的0数据写入该0数据在内存中对应的位置,能够降低访问时延。
在本发明实施例中,可选地,该生成模块510具体用于,在将该缓存线的监控标识置位时,生成该预设置命令。
在本发明实施例中,可选地,该生成模块510具体用于:
根据该缓存线的标签信息和索引信息,确定该预设置命令对应的内存的起始地址;
根据该起始地址和该缓存线的大小,生成该预设置命令。
在本发明实施例中,可选地,该内存为PCM或ReRAM。
根据本发明实施例的CPU 500可对应于根据本发明实施例的存储数据的方法中的CPU,并且CPU 500中的各个模块的上述和其它操作和/或功能分别为了实现前述各个方法的相应流程,为了简洁,在此不再赘述。
本发明实施例的CPU,对于写0时延小于写1时延的存储介质,能够降低写时延,达到DRAM的水平,从而能够用PCM等替代DRAM做主存。
图6示出了本发明的又一实施例提供的存储数据的装置600的结构示意图。存储数据的装置600包括CPU 610,内存控制器620、存储器630和总线640。总线640用于实现这些部件之间的连接通信。内存控制器620也可以集成在CPU 610中。存储器630包括内存631,内存631为写0和写1时延具有非对称性的存储介质,例如PCM。CPU 610中包含缓存,该缓存由至少一个缓存线组成。
CPU 610用于向内存控制器620发送预设置命令,该预设置命令指示将缓存线在内存631中对应的位置写1;
内存控制器620用于接收CPU 610发送的该预设置命令,根据该预设置命令,将该缓存线在该内存631中对应的位置写1;
CPU 610还用于向该内存控制器620发送将该缓存线中的数据写入该内存631的写命令;
内存控制器620还用于接收该CPU 610发送的该写命令,根据该写命令,将该缓存线中的0数据写入该0数据在该内存631中对应的位置。
可选地,CPU 610用于在将该缓存线的监控标识置位时,生成该预设置命令。
可选地,CPU 610用于:
根据该缓存线的标签信息和索引信息,确定该预设置命令对应的内存的起始地址;
根据该起始地址和该缓存线的大小,生成该预设置命令。
可选地,内存控制器620用于:
在根据该写命令,将该缓存线中的0数据写入该0数据在该内存中对应的位置之前,确定该预设置命令已执行完,或者,确定正在执行该预设置命令,等待该预设置命令执行完。
可选地,内存控制器620用于,在接收到该写命令时,若确定预设置命令队列中存在该预设置命令,则从该预设置命令队列中移除该预设置命令,并将该缓存线中的数据写入该缓存线中的数据在该内存中对应的位置。
可选地,内存控制器620用于:
根据该预设置命令,确定该缓存线在该内存中对应的位置;
确定该缓存线在该内存中对应的位置中数据为0的位置;
将该数据为0的位置写1。
从本发明实施例提供的以上技术方案可以看出,本发明实施例通过先将缓存线在内存中对应的位置写1,再将该缓存线中的0数据写入该0数据在该内存中对应的位置,能够降低访问时延。
应理解,在本发明实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (18)
1.一种存储数据的方法,其特征在于,包括:
接收中央处理器CPU发送的预设置命令,所述预设置命令指示将缓存线在内存中对应的位置写1;
根据所述预设置命令,将所述缓存线在所述内存中对应的位置写1;
接收所述CPU发送的将所述缓存线中的数据写入所述内存的写命令;
根据所述写命令,将所述缓存线中的0数据写入所述0数据在所述内存中对应的位置;
所述根据所述预设置命令,将所述缓存线在所述内存中对应的位置写1,包括:
根据所述预设置命令,确定所述缓存线在所述内存中对应的位置;
确定所述缓存线在所述内存中对应的位置中数据为0的位置;
将所述数据为0的位置写1。
2.根据权利要求1所述的方法,其特征在于,所述预设置命令由所述CPU在将所述缓存线的监控标识置位时生成。
3.根据权利要求1所述的方法,其特征在于,在所述根据所述写命令,将所述缓存线中的0数据写入所述0数据在所述内存中对应的位置之前,所述方法还包括:
确定所述预设置命令已执行完;或者,
确定正在执行所述预设置命令,等待所述预设置命令执行完。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在接收到所述写命令时,若确定预设置命令队列中存在所述预设置命令,则从所述预设置命令队列中移除所述预设置命令;
将所述缓存线中的数据写入所述缓存线中的数据在所述内存中对应的位置。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述内存为相变内存PCM或电阻式随机存取内存ReRAM。
6.一种存储数据的方法,其特征在于,包括:
向内存控制器发送预设置命令,所述预设置命令指示将缓存线在内存中对应的位置中数据为0的位置写1;
向所述内存控制器发送将所述缓存线中的数据写入所述内存的写命令,以使所述内存控制器根据所述写命令,将所述缓存线中的0数据写入所述0数据在所述内存中对应的位置。
7.根据权利要求6所述的方法,其特征在于,在所述向内存控制器发送预设置命令之前,所述方法还包括:
在将所述缓存线的监控标识置位时,生成所述预设置命令。
8.根据权利要求7所述的方法,其特征在于,所述生成所述预设置命令,包括:
根据所述缓存线的标签信息和索引信息,确定所述预设置命令对应的内存的起始地址;
根据所述起始地址和所述缓存线的大小,生成所述预设置命令。
9.根据权利要求6至8中任一项所述的方法,其特征在于,所述内存为相变内存PCM或电阻式随机存取内存ReRAM。
10.一种内存控制器,其特征在于,包括:
接收模块,用于接收中央处理器CPU发送的预设置命令,所述预设置命令指示将缓存线在内存中对应的位置写1;
预设置模块,用于根据所述预设置命令,将所述缓存线在所述内存中对应的位置写1;
所述接收模块还用于接收所述CPU发送的将所述缓存线中的数据写入所述内存的写命令;
存储模块,用于根据所述写命令,将所述缓存线中的0数据写入所述0数据在所述内存中对应的位置;
所述预设置模块具体用于:
根据所述预设置命令,确定所述缓存线在所述内存中对应的位置;
确定所述缓存线在所述内存中对应的位置中数据为0的位置;
将所述数据为0的位置写1。
11.根据权利要求10所述的内存控制器,其特征在于,所述预设置命令由所述CPU在将所述缓存线的监控标识置位时生成。
12.根据权利要求10所述的内存控制器,其特征在于,所述存储模块还用于:
在根据所述写命令,将所述缓存线中的0数据写入所述0数据在所述内存中对应的位置之前,确定所述预设置命令已执行完,或者,确定正在执行所述预设置命令,等待所述预设置命令执行完。
13.根据权利要求12所述的内存控制器,其特征在于,所述存储模块还用于,在所述接收模块接收到所述写命令时,若确定预设置命令队列中存在所述预设置命令,则从所述预设置命令队列中移除所述预设置命令,并将所述缓存线中的数据写入所述缓存线中的数据在所述内存中对应的位置。
14.根据权利要求10至13中任一项所述的内存控制器,其特征在于,所述内存为相变内存PCM或电阻式随机存取内存ReRAM。
15.一种中央处理器CPU,其特征在于,包括:
生成模块,用于生成预设置命令,所述预设置命令指示将缓存线在内存中对应的位置中数据为0的位置写1;
发送模块,用于向内存控制器发送所述预设置命令;
所述生成模块还用于生成将所述缓存线中的数据写入所述内存的写命令;
所述发送模块还用于向所述内存控制器发送所述写命令,以使所述内存控制器根据所述写命令,将所述缓存线中的0数据写入所述0数据在所述内存中对应的位置。
16.根据权利要求15所述的CPU,其特征在于,所述生成模块具体用于,在将所述缓存线的监控标识置位时,生成所述预设置命令。
17.根据权利要求16所述的CPU,其特征在于,所述生成模块具体用于:
根据所述缓存线的标签信息和索引信息,确定所述预设置命令对应的内存的起始地址;
根据所述起始地址和所述缓存线的大小,生成所述预设置命令。
18.根据权利要求15至17中任一项所述的CPU,其特征在于,所述内存为相变内存PCM或电阻式随机存取内存ReRAM。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2014/076553 WO2015165055A1 (zh) | 2014-04-30 | 2014-04-30 | 存储数据的方法、内存控制器和中央处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105264608A CN105264608A (zh) | 2016-01-20 |
CN105264608B true CN105264608B (zh) | 2018-03-06 |
Family
ID=54358014
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480000446.2A Active CN105264608B (zh) | 2014-04-30 | 2014-04-30 | 存储数据的方法、内存控制器和中央处理器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20170047119A1 (zh) |
CN (1) | CN105264608B (zh) |
WO (1) | WO2015165055A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109543476B (zh) * | 2018-11-14 | 2022-02-22 | 捷德(中国)科技有限公司 | 数据处理方法、装置及存储介质 |
US11693790B2 (en) * | 2019-05-24 | 2023-07-04 | Texas Instmments Incorporated | Methods and apparatus to facilitate write miss caching in cache system |
US11113213B2 (en) * | 2019-12-30 | 2021-09-07 | Micron Technology, Inc. | Determining write commands for deletion in a host interface |
US11941291B2 (en) * | 2021-09-02 | 2024-03-26 | Micron Technology, Inc. | Memory sub-system command fencing |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101359504A (zh) * | 2008-08-05 | 2009-02-04 | 中国科学院上海微系统与信息技术研究所 | 高速写入相变存储器及其高速写入方法 |
CN101404179A (zh) * | 2008-11-07 | 2009-04-08 | 中国科学院上海微系统与信息技术研究所 | 提升相变存储器编程速度的方法及实现方法 |
CN101923901A (zh) * | 2010-05-13 | 2010-12-22 | 中国科学院上海微系统与信息技术研究所 | 一种相变存储器编程驱动系统及驱动方法 |
US8180981B2 (en) * | 2009-05-15 | 2012-05-15 | Oracle America, Inc. | Cache coherent support for flash in a memory hierarchy |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3786513B2 (ja) * | 1997-12-11 | 2006-06-14 | 株式会社東芝 | 不揮発性半導体記憶装置 |
CN1316377C (zh) * | 2004-06-03 | 2007-05-16 | 华为技术有限公司 | 一种磁盘阵列结构中的写处理方法 |
JP2010123164A (ja) * | 2008-11-18 | 2010-06-03 | Elpida Memory Inc | 半導体記憶装置及びその制御方法 |
US8792273B2 (en) * | 2011-06-13 | 2014-07-29 | SMART Storage Systems, Inc. | Data storage system with power cycle management and method of operation thereof |
CN102592665A (zh) * | 2011-10-24 | 2012-07-18 | 北京时代全芯科技有限公司 | 一种相变存储器的高速数据写入结构及写入方法 |
-
2014
- 2014-04-30 CN CN201480000446.2A patent/CN105264608B/zh active Active
- 2014-04-30 WO PCT/CN2014/076553 patent/WO2015165055A1/zh active Application Filing
-
2016
- 2016-10-28 US US15/337,710 patent/US20170047119A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101359504A (zh) * | 2008-08-05 | 2009-02-04 | 中国科学院上海微系统与信息技术研究所 | 高速写入相变存储器及其高速写入方法 |
CN101404179A (zh) * | 2008-11-07 | 2009-04-08 | 中国科学院上海微系统与信息技术研究所 | 提升相变存储器编程速度的方法及实现方法 |
US8180981B2 (en) * | 2009-05-15 | 2012-05-15 | Oracle America, Inc. | Cache coherent support for flash in a memory hierarchy |
CN101923901A (zh) * | 2010-05-13 | 2010-12-22 | 中国科学院上海微系统与信息技术研究所 | 一种相变存储器编程驱动系统及驱动方法 |
Non-Patent Citations (1)
Title |
---|
PreSET: Improving performance of phase change memories by exploiting asymmetry in write times;Moinuddin K. Qureshi;《Computer Architecture (ISCA), 2012 39th Annual International Symposium on》;20120613;论文正文第380-383页、附图1和6 * |
Also Published As
Publication number | Publication date |
---|---|
US20170047119A1 (en) | 2017-02-16 |
CN105264608A (zh) | 2016-01-20 |
WO2015165055A1 (zh) | 2015-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10282132B2 (en) | Methods and systems for processing PRP/SGL entries | |
US11048645B2 (en) | Memory module, operation method therof, and operation method of host | |
CN105264608B (zh) | 存储数据的方法、内存控制器和中央处理器 | |
US11036396B2 (en) | Media controller and data storage apparatus including the same | |
CN107526534B (zh) | 管理存储设备的输入输出(i/o)的方法和设备 | |
US9753655B2 (en) | Computing system with write buffer including speculative storage write and method of operation thereof | |
CN101877666B (zh) | 基于零拷贝方式的多应用程序报文接收方法和装置 | |
CN102859504A (zh) | 有效分区存储缓存 | |
CN104317716B (zh) | 分布式节点间的数据传输方法及分布式节点设备 | |
CN104866432A (zh) | 具有绕回-至-连续读取的存储器子系统 | |
US20180018104A1 (en) | Dynamic write latency for memory controller using data pattern extraction | |
US8250319B2 (en) | Operating an emulated electrically erasable (EEE) memory | |
IL223098A (en) | Processing system, method of communication, and non-transient computer-readable means of making reference drawings on an address channel | |
CN109726147A (zh) | 使用数据保护访问带内存储器的设备和方法 | |
US20170344311A1 (en) | Method of operating a memory device | |
CN110720126B (zh) | 传输数据掩码的方法、内存控制器、内存芯片和计算机系统 | |
US20180081796A1 (en) | Data Storage Device and Data Writing Method Thereof | |
CN107832240B (zh) | 一种基于信息记录结构体的dma数据交互方法和装置 | |
TWI629638B (zh) | 儲存裝置及其任務執行方法、對應於儲存裝置的主機及其任務執行方法、以及應用於儲存裝置的控制單元 | |
JP2008276739A (ja) | 情報処理システム及び情報処理プログラム | |
CN109634516A (zh) | 一种芯片存储器的读、写数据方法及系统 | |
CN109992198B (zh) | 神经网络的数据传输方法及相关产品 | |
JP6718798B2 (ja) | スイッチおよびそのデータアクセス方法 | |
CN109783021A (zh) | 数据存储系统及数据存储、读取方法、装置、电子设备 | |
US20100138577A1 (en) | Apparatus and method for writing bitwise data in system on chip |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into 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: 20210421 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. |