CN105808455B - 访问内存的方法、存储级内存及计算机系统 - Google Patents
访问内存的方法、存储级内存及计算机系统 Download PDFInfo
- Publication number
- CN105808455B CN105808455B CN201410856607.XA CN201410856607A CN105808455B CN 105808455 B CN105808455 B CN 105808455B CN 201410856607 A CN201410856607 A CN 201410856607A CN 105808455 B CN105808455 B CN 105808455B
- Authority
- CN
- China
- Prior art keywords
- address
- memory
- dram
- scm
- storage unit
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1694—Configuration of memory controller to different memory types
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
-
- 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
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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
- 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/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/406—Management or control of the refreshing or charge-regeneration cycles
- G11C11/40615—Internal triggering or timing of refresh, e.g. hidden refresh, self refresh, pseudo-SRAMs
-
- 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/406—Management or control of the refreshing or charge-regeneration cycles
- G11C11/40622—Partial refresh of memory arrays
-
- 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)
- Dram (AREA)
Abstract
本发明实施例提供了一种访问内存的方法、存储级内存及计算机系统。所述计算机系统包括内存控制器和混合内存,所述混合内存包括动态随机存取存储器DRAM和存储级内存SCM。所述内存控制器用于向所述DRAM和所述SCM发送第一访问指令。所述SCM在确定接收的所述第一访问指令中的第一地址指向的所述DRAM的第一存储单元集合中包括保持时间比所述DRAM的刷新周期短的存储单元时,可以获得与所述第一地址具有映射关系的第二地址。进一步的,所述SCM根据所述第二地址将所述第一访问指令转换为访问SCM的第二访问指令,以实现对SCM的访问。本发明实施例提供的计算机系统能够在降低DRAM刷新功耗的基础上保证数据的正确性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种访问内存的方法、存储级内存及计算机系统。
背景技术
传统的系统主存通常由动态随机存取存储器(Dynamic Random Access Memory,DRAM)组成。DRAM的结构简单并且读取速度快。DRAM的最基本存储单元为DRAM cell,每个DRAM cell包括一个晶体管和一个电容。DRAM cell利用电容存储电量的多寡来代表0和1。根据这种方式,一个DRAM cell可以存储一个比特(bit)。由于电容存在漏电现象,如果电容中的电荷不足,会导致存储的数据出错,因此,实际应用中,需要对电容进行周期性的充电。通过电容的充电和放电,可以实现对DRAM cell的读写更新,也可以称为对DRAM进行周期性的刷新。实际应用中,DRAM中的DRAM cell被排列分布成一个矩阵,这个矩阵我们称之为DRAM bank,通过相应的行列解码器可以定位到DRAM bank中的任意一个bit。多个DRAMbank可以组成一个DRAM chip,多个DRAM chip可以组成一个DRAM rank,多个DRAM rank又可以被集成为一个双列直插式存储模块(Dual-Inline-Memory-Modules,DIMM)。
联合电子设备工程委员会(Joint Electron Device Engineering Council,JEDEC)是固态及半导体工业界的一个标准化组织,根据JEDEC发布的与内存相关的标准,DRAM必须在64ms内对每一行至少刷新一次。换一种表达方式,JEDEC规定的DRAM的刷新周期为64ms。因此,目前的DRAM基本都是按照64ms刷新保证数据不会丢失的标准制造的。实际应用中,DRAM控制器必须每隔7.8us发送一次刷新指令,每条指令负责刷新DRAM bank中的一行或多行,以确保64ms内DRAM中的所有行均被刷新。随着DRAM容量增大行数增多,每次刷新操作需要刷新的行数也随之增加,系统功耗也随之增长。因此随着DRAM容量不断增大,降低DRAM刷新频率对节省系统功耗是非常重要的。然而,若为了降低系统功耗而延长DRAM刷新周期,则可能会使内存中的数据出现错误。
发明内容
本发明实施例中提供的一种访问内存的方法、存储级内存及计算机系统,能够在降低系统功耗的基础上保证内存中的数据的正确性。
第一方面,本发明实施例提供了一种计算机系统,所述计算机系统包括内存控制器和混合内存,所述混合内存包括动态随机存取存储器DRAM和存储级内存SCM,其中:
所述内存控制器,用于向所述DRAM和所述SCM发送第一访问指令,其中所述第一访问指令中携带有第一地址,所述第一地址用于指向要访问的所述DRAM的第一存储单元集合;
所述DRAM,用于根据所述第一访问指令访问所述第一存储单元集合中的存储单元;
所述SCM用于:
接收所述内存控制器发送的所述第一访问指令;
确定所述第一存储单元集合中包括保持时间比所述DRAM的刷新周期短的存储单元,其中,所述DRAM的刷新周期比标准刷新周期长;
获得与所述第一地址具有映射关系的第二地址,其中,所述第二地址用于指向所述SCM的第二存储单元集合;
根据所述第二地址将所述第一访问指令转换为第二访问指令,其中,所述第二访问指令中包括第二地址;
根据所述第二访问指令对所述第二存储单元集合中的存储单元进行访问。
结合第一方面,在第一方面的第一种可能的实现方式中,所述SCM具体用于:
根据内容可寻址存储器CAM中存储的所述第一地址确定所述第一存储单元集合中包括保持时间比所述DRAM的刷新周期短的存储单元,其中,所述CAM中存储有包括所述第一地址在内的在所述DRAM中保持时间比所述DRAM的刷新周期短的存储单元的地址;
根据所述第一地址以及所述CAM中存储的所述第一地址与所述第二地址的映射关系获得与所述第一地址具有映射关系的第二地址,其中,所述第一地址指向的所述DRAM的第一存储单元集合中的存储单元与所述第二地址指向的所述SCM的第二存储单元集合中的存储单元用于存储相同的数据。
结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述内存控制器,还用于向所述DRAM和所述SCM发送第三访问指令,其中,所述第三访问指令中携带有第三地址,所述第三地址用于指向要访问的所述DRAM的第三存储单元集合;
所述DRAM,还用于根据所述第三访问指令访问所述第三存储单元集合中的存储单元;
所述SCM,还用于:
接收所述内存控制器发送的所述第三访问指令;
确定所述第三存储单元集合中未包括保持时间比所述DRAM的刷新周期短的存储单元;
删除所述第三访问指令。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述混合内存还包括:
数据选择器MUX,用于当所述第一访问指令为读指令时,向所述内存控制器输出所述SCM的第二存储单元集合中的存储单元中存储的数据;或
当所述第三访问指令为读指令时,向所述内存控制器输出所述DRAM的第三存储单元集合中的存储单元中存储的数据。
第二方面,本发明实施例提供了一种存储级内存SCM。所述SCM应用于包括混合内存的计算机系统中,其中,所述混合内存包括动态随机存取存储器DRAM和所述SCM。所述SCM包括:
SCM控制器,用于接收所述计算机系统的内存控制器发送的第一访问指令,其中,所述第一访问指令中携带有第一地址,所述第一地址用于指向要访问的所述DRAM的第一存储单元集合;
内容可寻址存储器CAM,用于确定所述第一存储单元集合中包括保持时间比所述DRAM的刷新周期短的存储单元,并获得与所述第一地址具有映射关系的第二地址,其中,所述DRAM的刷新周期比标准刷新周期长,所述第二地址用于指向所述SCM的第二存储单元集合;
所述SCM控制器,还用于根据所述第二地址将所述第一访问指令转换为第二访问指令,并根据所述第二访问指令对所述第二存储单元集合中的存储单元进行访问,其中,所述第二访问指令中包括第二地址;
存储单元,用于存储数据。
结合第二方面,在第二方面的第一种可能的实现方式中,所述CAM具体用于:
根据CAM中预先存储的所述第一地址确定所述第一存储单元集合中包括保持时间比所述DRAM的刷新周期短的存储单元,其中,所述CAM中存储有包括所述第一地址在内的在所述DRAM中保持时间比所述DRAM的刷新周期短的存储单元的地址;
根据所述第一地址以及所述CAM中存储的所述第一地址与所述第二地址的映射关系获得与所述第一地址具有映射关系的第二地址,其中,所述第一地址指向的所述DRAM的第一存储单元集合中的存储单元与所述第二地址指向的所述SCM的第二存储单元集合中的存储单元用于存储相同的数据。
结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述SCM控制器,还用于接收所述内存控制器发送的所述第三访问指令,其中,所述第三访问指令中携带有第三地址,所述第三地址用于指向要访问的所述DRAM的第三存储单元集合;
所述CAM,还用于根据所述第三地址确定所述第三存储单元集合中未包括保持时间比所述DRAM的刷新周期短的存储单元;
所述SCM控制器,还用于删除所述第三访问指令。
结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述混合内存还包括数据选择器MUX,所述CAM还用于:
当所述第一访问命令为读命令时,在确定所述第一存储单元集合中包括保持时间比所述DRAM的刷新周期短的存储单元之后,向所述混合内存中的所述MUX发送第一指示信号,所述第一指示信号用于指示所述MUX向所述内存控制器输出SCM中存储的数据。
第三方面,本发明实施例提供了一种访问内存的方法。所述方法应用于包括混合内存的计算机系统,其中,所述混合内存包括动态随机存取存储器DRAM和存储级内存SCM,所述方法由SCM执行。所述方法包括:
接收所述计算机系统的内存控制器发送的第一访问指令,所述第一访问指令中携带有第一地址,所述第一地址用于指向要访问的所述DRAM的第一存储单元集合;
确定所述第一存储单元集合中包括保持时间比所述DRAM的刷新周期短的存储单元,其中,所述DRAM的刷新周期比标准刷新周期长;
获得与所述第一地址具有映射关系的第二地址,其中,所述第二地址用于指向SCM的第二存储单元集合;
根据所述第二地址将所述第一访问指令转换为第二访问指令,其中,所述第二访问指令中包括所述第二地址;
根据所述第二访问指令对所述二存储单元集合中的存储单元进行访问。
结合第三方面,在第三方面的第一种可能的实现方式中,所述确定所述第一存储单元集合中包括保持时间比所述DRAM的刷新周期短的存储单元包括:
根据内容可寻址存储器CAM中存储的所述第一地址确定所述第一存储单元集合中包括保持时间比所述DRAM的刷新周期短的存储单元,其中,所述CAM中存储有包括所述第一地址在内的在所述DRAM中保持时间比所述DRAM的刷新周期短的存储单元的地址。
结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述获得与所述第一地址具有映射关系的第二地址包括:
根据所述CAM中存储的所述第一地址与所述第二地址的映射关系表获得与所述第一地址具有映射关系的第二地址,其中,所述第一地址指向的所述DRAM的第一存储单元集合中的存储单元与所述第二地址指向的所述SCM的第二存储单元集合中的存储单元用于存储相同的数据。
结合第三方面,在第三方面的第三种可能的实现方式中,所述方法还包括:
接收所述内存控制器发送的第三访问指令,其中,所述第三访问指令中携带有第三地址,所述第三地址用于指向要访问的所述DRAM的第三存储单元集合;
确定所述第三存储单元集合中未包括保持时间比所述DRAM的刷新周期短的存储单元;
删除所述第三访问指令。
结合第三方面,在第三方面的第四种可能的实现方式中,所述方法还包括:
当所述第一访问命令为读命令时,在确定所述第一存储单元集合中包括保持时间比所述DRAM的刷新周期短的存储单元之后,向所述混合内存中的数据选择器MUX发送第一指示信号,所述第一指示信号用于指示所述MUX向所述内存控制器输出SCM中存储的数据。
第四方面,本发明实施例提供了一种计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述第三方面中所述的方法。
在本发明实施例提供的计算机系统中,动态随机存取存储器DRAM和存储级内存SCM共同构成所述计算机系统的混合内存,且所述DRAM的刷新周期比标准刷新周期长。SCM在确定接收的第一访问指令中的第一地址指向的DRAM的第一存储单元集合中包括保持时间比所述DRAM的刷新周期短的存储单元时,可以获得与所述第一地址具有映射关系的第二地址。进一步的,所述SCM根据所述第二地址将所述第一访问指令转换为访问SCM的第二访问指令,以实现对SCM的访问。本发明实施例提供的计算机系统能够在降低DRAM刷新功耗的基础上保证数据的正确性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例。
图1-A为本发明实施例提供的一种基于混合内存的计算机系统架构示意图;
图1-B为本发明实施例提供的再一种基于混合内存的计算机系统架构示意图;
图1-C为本发明实施例提供的又一种基于混合内存的计算机系统架构示意图;
图2为本发明实施例提供的一种访问内存的方法的流程示意图;
图3为本发明实施例提供的一种访问内存的方法的流程示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。
本发明实施例基于混合内存的系统架构提出了一种内存访问方法,能够在降低内存刷新功耗的基础上保证内存中存储的数据的准确性。图1-A、图1-B和图1-C为本发明实施例提供的基于混合内存的计算机系统架构示意图。在图1-A、图1-B和图1-C所示的计算机系统架构中,动态随机存储器DRAM与存储级内存(Storage-Class Memory,SCM)被视为一体,共同作为计算机系统100的主存。由于图1-A、图1-B和图1-C所示的计算机系统架构类似,下面将以图1-A为主,对本发明实施例提供的计算机系统100进行详细介绍。
如图1-A所示,中央处理器(Central Processing Unit,CPU)10是一台计算机系统100的运算核心(Core)和控制核心(Control Unit)。CPU 10可以是一块超大规模的集成电路。在CPU 10中安装有操作系统和其他软件程序,从而CPU 10能够实现对内存、缓存及磁盘的访问。可以理解的是,在本发明实施例中,CPU 10仅仅是处理器的一个示例。除了CPU 10外,处理器还可以是其他特定集成电路ASIC(Application Specific IntegratedCircuit),或者是被配置成实施本发明实施例的一个或多个集成电路。CPU10中可以包括内存管理单元(Memory Management Unit,MMU),MMU用于实现逻辑地址到内存物理地址的转换。
内存控制器(Memory Controller)20是计算机系统100内部控制内存30并用于管理与规划从内存30到CPU 10间的数据传输速度的总线电路控制器。通过内存控制器20,内存30与CPU 10之间可以交换数据。内存控制器20可以是一个单独的芯片,并通过系统总线与CPU 10连接。本领域技术人员可以知道,内存控制器20也可以被集成到相关的大型芯片里,例如,内存控制器20可以被集成到微处理器(例如CPU10)中或被内置于北桥中。本发明实施例不对内存控制器20的具体位置进行限定。为了方便描述,在图1-A所示的系统架构中,以内存控制器20单独设置为例进行描述。内存控制器20控制必要的逻辑以将数据写入内存30或从内存30中读取数据。
内存30是计算机系统100的主存。内存30通常用来存放操作系统中各种正在运行的软件、输入和输出数据以及与外存交换的信息等。为了提高CPU 10的访问速度,内存30需要具备访问速度快的优点。在传统的计算机系统架构中,通常采用动态随机存取存储器(Dynamic Random Access Memory,DRAM)作为内存30。随着存储级内存(Storage-ClassMemory,SCM)的发展,由于SCM具有访问速度快以及非易失的特点,因此,SCM也逐渐被作为内存使用。
如图1-A所示,在图1-A所示的混合内存的系统架构中,内存30可以包括动态随机存取存储器(Dynamic Random Access Memory,DRAM)40以及存储级内存(Storage-ClassMemory,SCM)50。CPU 10能够通过内存控制器20高速访问DRAM 40和SCM 50,对DRAM 40和SCM 50中的任意一个存储单元进行读操作和写操作。
如前所述,DRAM 40是利用电容存储电量的多寡来代表数据0和1。由于电容存在漏电现象,如果电容中的电荷不足,会导致存储的数据出错。因此,每隔一段时间,内存控制器20会刷新DRAM 40中的数据,以防止DRAM 40丢失数据。并且,DRAM 40是易失性的,当计算机系统100关闭电源后,DRAM 40中的信息将不再保存。DRAM 40可以包括多块DRAM芯片(DRAMchip)。实际应用中,DRAM 40可以以双列直插式存储模块(Dual-Inline-Memory-Modules,DIMM)的形式存在。
SCM 50是新一代的非易失性内存。SCM 50的存取速度与传统的内存(例如,DRAM40)的存取速度相当,但SCM 50又具有半导体产品的可靠性,且在写入数据时,无需擦除(erase)SCM 50中旧数据就能直接将数据写入SCM 50。SCM 50包括相变存储器(PhaseChange Memory,PCM)、阻变存储器(Resistive Random Access Memory,RRAM)、磁性随机存储器(Magnetic Random Access Memory,MRAM)和铁电式随机存储器(FerroelectricRandom Access Memory,FRAM)等为代表的下一代非易失性存储器(Non-Volatile Memory,NVM)。由于下一代NVM具有访问速度快,并且能够按字节(Byte)寻址,将数据以位(bit)为单位写入非易失性存储器中,因此,SCM 50能够挂在内存总线上,作为内存被CPU 10直接访问。SCM 50与传统的DRAM不同,是非易失(Non-Volatile)的,当计算机系统100关闭电源后,SCM 50中的信息依然存在。
SCM 50可以包括存储级内存SCM控制器52以及存储模块54。SCM控制器52用于实现对存储模块54的访问,或者对存储模块54中的存储数据进行管理等等。例如,SCM控制器52可以根据接收的内存控制器20转发的内存访问指令访问存储模块54,向存储模块54中写入数据或者从存储模块54中读取数据。并且,SCM控制器52还可以用于控制写入存储模块54的数据时序等等。SCM控制器52可以包括控制电路、中央处理器CPU、特定集成电路(Application Specific Integrated Circuit,ASIC)或者被配置成实施本发明实施例的一个或多个集成电路。
存储模块54用于存储数据。存储模块54可以由多个存储单元组成。例如,存储模块54可以是由多个存储单元构成的存储阵列。在本发明实施例中,存储模块54中的存储单元是指用于存储数据的最小存储单元。存储单元也是构成存储阵列的最小单位。通常,一个存储单元可以存储1位(bit)数据。当然,有的存储单元也可以实现多值存储,对于能够实现多值存储的存储单元,一个存储单元也可能存储2bit的数据。在此不对存储单元存储数据的具体位数做限定。在本发明实施例中,存储模块54中的存储单元可以包括相变存储单元、磁性存储单元、阻变存储单元等下一代新型非易失性存储单元。
在本发明实施例中,为了描述方便,将对DRAM 40和SCM 50执行读操作和写操作所造成的能量开销称为动态功耗,将DRAM 40和SCM 50未执行读操作和写操作期间所造成的能量开销称为静态功耗。与DRAM 40相比,对SCM 50执行读操作造成的能量开销与对DRAM40执行读操作造成的能量开销相当,对SCM 50执行写操作造成的能量开销远大于对DRAM40执行读操作造成的能量开销,因此,SCM 50的动态功耗要大于DRAM 40的动态功耗。然而,由于DRAM 40需要进行刷新,而SCM 50不需要刷新,因此,DRAM 40的静态功耗要大于SCM 50的静态功耗。实际应用中,如果内存30全部使用SCM 50或使用大量的SCM 50会造成系统动态功耗过高,并且,系统成本也较高。为了降低系统功耗以及系统成本,在本发明实施例中描述的计算机系统100中,内存30中DRAM 40的使用量要大于SCM 50的使用量。根据这种方式,DRAM 40的容量要大于SCM 50的容量。例如,在内存30中,DRAM 40和SCM50的使用量的比例可以为10:1或20:1等。在本发明实施例中不对DRAM 40和SCM50的使用量的具体比例进行限制,只要DRAM 40的使用量大于SCM 50的使用量即可。实际应用中,可以根据实际需求将DRAM 40和SCM50配合使用。由于DRAM 40的容量要大于SCM 50的容量,因此可以将DRAM 40作为主内存使用,将SCM 50作为辅内存使用。根据这种方式,大量的数据都被存储在DRAM40中,只有少量的数据会被存储在SCM 50中。
本领域技术人员可以知道,目前的DRAM芯片基本都是按照标准规定的64ms的刷新周期来生产的。刷新周期与DRAM芯片中的每个储单元(DRAM cell)的保持时间(retentiontime)有关。其中,保持时间是指存储单元保持数据的时间。超过保持时间,存储单元中存储的数据就会丢失。为了使DRAM芯片中存储的数据不丢失,需要按照刷新周期对DRAM芯片进行刷新。然而,实际应用中发现,由于DRAM芯片中的每个存储单元(DRAM cell)的保持时间(retention time)存在波动。64ms实际上是最差的存储单元的保持时间。因此,在本发明实施例中,可以通过延长刷新周期来节约DRAM刷新所带来的系统功耗和延迟时间。然而,单纯延长DRAM芯片的刷新周期可能会带来数据的错误。
为了在降低系统功耗的基础上保证数据的正确性,在本发明实施例所示的计算机系统架构中,在内存30中还可以包括内容可寻址存储器(content addressable memory,CAM)60。CAM 60是一种专用存储器件,可进行快速大量并行搜索。CAM 60可以由非易失性存储器件构成,从而使CAM 60具有非易失性。当然,可以理解的是,CAM 60也可以由易失性存储器件构成,在此不做限定。在本发明实施例中,以CAM 60由非易失性存储器件构成为例进行描述。在CAM 60中可以存储不合格的DRAM 40地址和SCM 50的地址的映射关系。其中,所述不合格的DRAM地址是指DRAM 40中保持时间(retention time)比刷新周期短的存储单元(DRAM cell)的地址。不合格的DRAM地址可以有多个。在本发明实施例中,可以将保持时间短的存储单元的地址映射到SCM 50中,从而将对保持时间短的存储单元的访问转换为对SCM 50的访问,以保证数据的正确性。可以理解的是,若CAM 60由易失性存储器件构成,则可以将不合格的DRAM 40地址和SCM 50的地址的映射关系预先存储在外存中,当系统上电时,可以从外存中获取不合格的DRAM 40地址和SCM 50的地址的映射关系并将所述映射关系写入CAM 60。
由于本发明实施例应用于基于混合内存的计算机系统架构中,因此在内存30中还可以包括数据选择器(multiplexer,MUX)70。MUX 70可以在选择信号的控制下,从多路数据中选择一路数据作为输出信号。在本发明实施例中,MUX 70的输入端分别连接DRAM 40和SCM 50,MUX 70的输出端连接内存控制器20。当需要从内存30读取数据时,MUX 70可以选择向内存控制器20输出DRAM 40中存储的数据或向内存控制器20输出SCM 50中存储的数据。例如,在MUX70中可以包括用于缓存从DRAM 40输出的数据的缓存(buffer)以及用于缓存SCM 50输出的数据的缓存(buffer)。
需要说明的是,在本发明实施例中,不对CAM 60的具体位置进行限定。例如,一种情形下,在图1-A和图1-C所示的计算机系统中,CAM 60可以位于SCM 50中,作为SCM 50中的一个器件。另一种情形下,在图1-B所示的计算机系统中。CAM 60可以是独立于SCM 50的一个存储器件。并且,在本发明实施例中,也不对CAM60与其他器件的连接关系进行限定。例如,一种情形下,如图1-A和图1-B所示,CAM 60可以分别与内存控制器20、SCM控制器52以及数据选择器70连接。另一种情形下,如图1-C所示,CAM 60也可以只与SCM控制器52和MUX 70连接。
实际应用中,一种情形下,如图1-A和图1-C所示,SCM控制器52、存储模块54以及CAM 60可以集成到同一块芯片中。另一种情形下,如图1-B所示,CAM 60可以为一块独立的芯片,SCM控制器52和存储模块54可以集成在一块芯片中。又一种情形下,CAM 60和SCM控制器52可以集成在一块芯片中,存储模块54可以为一块独立的芯片。在本发明实施例中,不对CAM 60、SCM控制器52以及存储模块54的硬件形式进行限定。此外,SCM控制器52、存储模块54、CAM 60以及MUX 70也可以集成为一块芯片,与DRAM40一起组成DIMM。在本发明实施例中,也不对DRAM 40、CAM 60、SCM 50以及MUX 70的硬件形式做具体限定。
在本发明实施例提供的图1-A至图1-C所示的计算机系统架构中,为了能够在降低系统成本和系统功耗的基础上保证数据的正确性,内存控制器20可以主要访问DRAM40,只有当CAM 60判断需要访问SCM 50时,SCM控制器52才会根据内存控制器20的访问指令执行访问操作。换一种表达方式,当需要访问内存30,SCM 50并不会执行内存控制器20下发的每一个访问指令,只有当CAM 60判断需要访问SCM 50时,SCM 50才会根据CAM 60输出的信号执行内存控制器20下发的访问指令。
需要说明的是,本发明实施例提供的计算机系统中,除了图1-A、图1-B和图1-C所示的器件外,计算机系统100还可以包括通信接口以及作为外存的磁盘等其他器件,在此不做限制。基于上述对本发明实施例提供的基于混合内存的计算机系统架构的描述,下面将对本发明实施例提供的访问内存的方法进行详细描述。由于图1-A、图1-B及图1-C所示的计算机系统架构类似,为了描述方便,下面将主要结合图1-A所示的计算机系统架构,对本发明实施例提供的访问内存的方法进行详细描述。
图2为本发明实施例提供的一种访问内存的方法流程图。该方法可以应用于图1-A所示的计算机系统100中。该方法可以由图1-A中的SCM 50来执行,具体的,该方法可以由SCM 50中的SCM控制器52来执行。如图2所示,该方法可以包括下述步骤。
在步骤200中,SCM控制器52接收内存控制器20发送的第一访问指令,所述第一访问指令中包含有第一地址。其中,所述第一访问指令用于访问内存30,所述第一地址用于指向要访问的DRAM 40的存储单元集合。本领域人员可以知道,当CPU10需要访问内存时,可以通过CPU 10中的MMU实现逻辑地址与内存的物理地址的转换,内存控制器20可以根据MMU转换的物理地址对内存30进行寻址,获得内存30中存储的数据或将数据写入内存30中。在本发明实施例提供的如图1-A所示计算机系统架构中,由于DRAM 40的容量大于SCM 50的容量,DRAM 40可以被作为主内存使用,而SCM 50可以被作为辅内存使用。当内存控制器20对内存30进行访问时,内存控制器20可以将访问指令发送给DRAM 40和SCM 50。根据这种方式,CPU 10向内存控制器20发送的访问指令中携带的地址都可以是指向DRAM 40提供的物理空间的地址。在本发明实施例中,所述第一地址可以指向要访问的DRAM 40中的多个存储单元集合提供的物理空间。
如前所述,DRAM 40中的DRAM cell被排列分布成一个矩阵,这个矩阵我们称之为DRAM bank。当需要访问内存30时,内存控制器20可以根据所述第一地址通过相应的行列解码器定位到DRAM bank中的任意一个DRAM cell。需要说明的是,所述第一地址可以是一个地址,也可以是一段地址。例如,当所述内存访问指令为写指令时,所述第一地址可以为待写入数据的起始地址。当所述内存访问指令为读指令时,所述第一地址可以包括要访问的首地址和要访问的地址空间的大小(size)。在本发明实施例中,第一地址指向的内存中的存储空间可以是字节(Byte)为粒度,也可以是以行(line)为粒度,还可以是以页(page)为粒度。根据这种方式,第一地址指向的内存中的存储空间可以包括至少一个字节、或包括至少一行或包括至少一页。所述第一地址指向的存储单元集合中可以包括一个存储单元,也可以包括多个存储单元。在此不做限定。
在步骤205中,SCM控制器52确定所述第一地址指向的DRAM 40的存储单元集合中包括保持时间比所述DRAM的刷新周期短的存储单元,其中,所述DRAM的刷新周期大于标准刷新周期。在本发明实施例中,由于将DRAM 40作为主内存使用,并且在技术研究过程中发现,DRAM 40中大部分的DRAM cell的保持时间比DRAM的标准刷新周期要长,因此,为了降低DRAM 40的静态功耗,可以通过延长DRAM 40的刷新周期的方式来减少DRAM 40的刷新次数。在现有技术中,联合电子设备工程委员会(Joint Electron Device EngineeringCouncil,JEDEC)规定的DRAM的标准刷新周期为64ms,DRAM也是按照标准刷新周期制造的。在本发明实施例中,可以通过为DRAM 40设置新的刷新周期的方式来减少DRAM 40的刷新次数,其中,设置的DRAM 40的刷新周期比标准规定的DRAM的标准刷新周期长。例如,若标准刷新周期为64ms,则本发明实施例中设置的DRAM 40的刷新周期可以为128ms或256ms。可以理解的是,随着技术的发展,DRAM的标准刷新周期也可能会长于现在规定的64ms,则在本发明实施例中,设置的DRAM 40的刷新周期也可以更长,在此不对设置的DRAM 40的刷新周期做具体的限定,只要比标准规定的DRAM的刷新周期更长即可。
可以理解的是,在本发明实施例中,由于延长了DRAM 40的刷新周期,可能会导致DRAM 40中保持时间比设置的DRAM 40的刷新周期短的存储单元(cell)丢失数据。因此,在本发明实施例中,可以预先将DRAM 40中保持时间比设置的DRAM的刷新周期短的存储单元检测出来,并将DRAM 40中保持时间比设置的DRAM的刷新周期短的存储单元的地址存储在图1-A至图1-C所示的CAM 60中。从而,在步骤205中,SCM控制器52具体可以通过CAM 60来判断所述第一地址指向的DRAM 40的第一存储单元集合中是否包括保持时间比设置的DRAM的刷新周期短的存储单元。例如,CAM 60查询其存储的数据项中是否包括第一地址,如果包括第一地址,则说明第一地址命中CAM 60,第一地址指向的DRAM 40的第一存储单元集合中包括保持时间比设置的DRAM的刷新周期短的存储单元。
实际应用中,一种情形下,在如图1-A和图1-B所示的计算机系统架构中,CAM60分别与内存控制器20和SCM控制器52连接,当内存控制器20向DRAM 40和SCM 50发送第一访问指令时,内存控制器20可以同时将第一访问指令中的第一地址发送给CAM60。CAM 60通过将内存控制器20输入的第一地址与CAM 60中存储的数据项进行比较,当确定CAM 60中存储数据项中包括第一地址时,CAM 60可以向SCM 52输出CAM 60中存储的与第一地址具有映射关系的第二地址。又一种情形下,在如图1-C所示的计算机系统架构中,CAM 60并没有与内存控制器20直接连接。当SCM控制器52接收到内存控制器20发送的第一访问指令时,SCM控制器52可以将第一访问指令中携带的第一地址发送给CAM 60,以查询CAM 60中是否存储有包括第一地址的数据项。若CAM 60确定其存储的数据项中包括第一地址,则CAM 60可以向SCM52输出CAM 60中存储的与第一地址具有映射关系的第二地址。
实际应用中,当CAM 60确定其存储的数据项中包括第一地址时,CAM 60还可以向MUX 70发送第一指示信号,所述第一指示信号用于通知MUX 70等待SCM 50输出数据。可以理解的是,如果第一访问指令为读指令,则MUX 70可以根据CAM 60发送的第一指示信号向内存控制器20输出SCM 50中存储的数据。如果所述第一访问指令为写指令,则MUX 70在设定的时间内未接收到数据时,可以不向内存控制器20输出数据。
进一步的,由于DRAM读数据的速度比SCM执行读操作的速度快,且在本发明实施例中,DRAM 40作为主内存使用,访问内存的指令的时序可以是按照DRAM的访问时限来确定的,因此,若第一访问指令为读指令,则为了保证数据的正确性,当CAM 60根据第一地址判断确定所述第一地址指向的DRAM 40的存储单元集合中包括保持时间比所述DRAM的刷新周期短的存储单元时,CAM 60还可以向内存控制器20发送保持(hold)指令。该保持指令用于指示内存控制器20保持预设的等待时间,以等待接收SCM 50输出的数据。可以理解的是,在图1-A和图1-B所示的计算机系统架构中,CAM 60可以直接向内存控制器20发送保持(hold)指令。在图1-C所示的计算机系统架构中,CAM 60可以通过SCM控制器52向内存控制器20发送保持(hold)指令,或者,当SCM控制器52收到CAM 60发送的第二地址时,SCM控制器52主动向内存控制器发送保持(hold)指令。在此不做限定。
可以理解的是,实际应用中,第一地址可以是第一访问指令中的要访问的地址范围中的一部分地址,第一访问指令中还可以包括除第一地址以外没有指向保持时间比设置的DRAM的刷新周期短的存储单元的其他地址。
在步骤210中,SCM控制器52获得与所述第一地址具有映射关系的第二地址,其中,所述第二地址用于指向SCM 50中的第二存储单元集合。如前所述,在本发明实施例中,可以预先将DRAM 40中保持时间比设置的DRAM的刷新周期短的存储单元的地址存储在CAM 60中。由于保持时间比设置的DRAM的刷新周期短的存储单元会造成数据的丢失,为了保证存储在内存30中的数据的正确性和完整性,在本发明实施例中,可以将DRAM 40中保持时间比设置的DRAM的刷新周期短的存储单元提供的物理空间映射到SCM 50提供的物理空间中。换一种表达方式,将SCM 50中的存储单元作为DRAM 40中保持时间比设置的DRAM的刷新周期短的存储单元的备份存储单元。通过这种方式,可以将需要写入DRAM 40中保持时间比设置的DRAM的刷新周期短的存储单元的数据也写入SCM 50的存储单元中,以防止这部分数据的丢失。
具体的,可以建立检测到的DRAM 40中保持时间比设置的DRAM的刷新周期短的存储单元的地址与SCM 50中的地址的映射关系,具有相互映射关系的DRAM 40中的地址与SCM50中的地址用于存储相同的数据。实际应用中,在系统初始化过程中,可以将检测到的DRAM40中保持时间比设置的DRAM的刷新周期短的存储单元的地址写入CAM60中,并在CAM 60中保存检测到的DRAM 40中保持时间比设置的DRAM的刷新周期短的存储单元的地址与SCM 50中存储单元的地址的映射关系。为了描述方便,在本发明实施例中,将保持时间比设置的DRAM的刷新周期短的存储单元的地址称为不合格的DRAM地址。在本发明实施例中,可以在CAM 60中存储不合格的DRAM地址与SCM地址的映射关系。例如,不合格的DRAM地址与SCM地址的映射关系可以如表一所示:
(表一)
在表一中,不合格的DRAM地址用于表示DRAM 40中保持时间比设置的DRAM的刷新周期短的存储单元的地址。SCM地址用于表示与不合格的DRAM地址具有映射关系的指向SCM50中的物理空间的地址。如表一所示,ADDR0和SCM_ADDR0为具有映射关系的一对地址,ADDR0和SCM_ADDR0用于存储相同的数据。依次类推,ADDR1和SCM_ADDR1也具有映射关系并用于存储相同的数据。在此不再赘述。在本发明实施例中,不合格的DRAM地址可以是至少一个字节的地址。不合格的DRAM地址还可以是一段地址范围,该段地址范围可以包括保持时间比设置的DRAM的刷新周期短的存储单元的地址在内的一行或多行的地址。当然,不合格的DRAM地址还可以指向一个页(page)或多个页,在此不做限定。
在本步骤中,CAM 60可以根据上述表一判断第一地址是否为不合格的DRAM地址。若第一地址为不合格的DRAM地址,则可以根据表一进一步确定与第一地址具有映射关系的第二地址,其中第二地址为SCM 50中第二存储单元集合中的存储单元的地址。在图2所示的实施例中,以第一地址为不合格的DRAM地址为例。例如,第一地址为表一中的ADDR1,则CAM60可以向SCM控制器52输出与第一地址具有映射关系的第二地址:SCM_ADDR1。
在本发明实施例中,为了保证数据的正确性,所述第一地址指向的所述DRAM的第一存储单元集合中的存储单元与所述第二地址指向的所述SCM的第二存储单元集合中的存储单元用于存储相同的数据。并且,所述第二存储单元集合中的存储单元的总存储容量不小于第一存储单元集合的存储单元的总存储容量。例如,第一存储单元集合的存储单元的总存储容量可以是1kB(Byte),则第二存储单元集合中的存储单元的总存储容量不小于1kB。
需要说明的是,CAM 60中存储的不合格的DRAM地址可以在该DRAM出厂时根据延长后的刷新周期检测获得。对于一个DRAM而言,不合格的DRAM地址是确定的。在系统初始化过程中,可以调整与不合格的DRAM地址具有映射关系的SCM地址。换一种表达方式,上述表一中的映射关系并不是固定不变的,例如,在调整映射关系后,可以将SCM_ADDR3与ADDRA0建立映射关系。在此不做限定。
在步骤215中,SCM控制器52根据所述第二地址将所述第一访问指令转换为第二访问指令,其中,所述第二访问指令中包括所述第二地址。具体的,在SCM控制器52接收到内存控制器20发送的第一访问指令后,可以先缓存第一访问指令,待SCM控制器52接收到CAM 60输出的第二地址后,可以将第一访问指令中待访问地址由第一地址替换为第二地址,从而可以将第一访问指令转换为第二访问指令,其中,第二访问指令中携带的待访问地址为所述第二地址。例如,第一访问指令为:read(ADDR1,1kB),转换后的第二访问指令为:read(SCM_ADDR1,1kB),其中,ADDR1用于表示待访问的第一地址,SCM_ADDR1用于表示第二地址,1kB用于表示要读取的数据的大小。
在步骤220中,SCM控制器52根据所述第二访问指令对所述二存储单元集合中的存储单元进行访问。例如,若所述内存访问指令为写数据的指令,则内存控制器20可以根据第二地址将数据写入第二地址指向的所述SCM 50的第二存储单元集合中的存储单元中。若所述内存访问指令为读数据的指令,则内存控制器20可以从第二地址指向的SCM 50的第二存储单元集合中的存储单元中读取数据。
在本发明实施例提供的访问内存的方法中,由于DRAM 40的刷新周期比标准规定的刷新周期长,并且在CAM 60中预先建立有保持时间比DRAM 40的刷新周期短的存储单元的地址与SCM 50中的存储单元的地址的映射关系。从而,SCM控制器52在确定访问指令中包含有对不合格的DRAM存储单元(DRAM cell)的访问时,可以将对DRAM的访问转换为对SCM50的访问。采用本发明实施例提供的方法能够在降低DRAM刷新功耗的基础上保证数据的正确性。
并且,在本发明实施例提供的访问内存的方法中,由于将DRAM 40作为主内存进行访问,因此,DRAM 40会执行内存控制器20下发的每一个指令。根据这种方式,在SCM 50根据内存控制器下发的访问指令访问SCM 50的过程中,DRAM 40也会执行根据该访问指令。由于DRAM 40中保持时间比DRAM40的刷新周期短的存储单元只是DRAM 40的所有存储单元中的一小部分,因此,采用在本发明实施例所示的方法,只有部分访问指令会由SCM 50根据图2所示的方法对SCM 50执行访问操作。并且由于DRAM 40的读写速度较快,本发明实施例所示的方法能够在节约系统成本的基础上,不会降低系统的访问速度,并且也能在降低系统功耗的基础上保证系统的访问速度。
图3是本发明实施例提供的一种方法的流程图。该方法仍然可以应用于图1-A至图1-C所示的计算机系统100中。下面主要结合图1-A对图3所示的访问内存的方法进行详细描述。该方法可以由图1-A中的SCM 50来执行,具体的,该方法可以由SCM 50中的SCM控制器52来执行。如图3所示,该方法可以包括下述步骤。
在步骤300中,SCM控制器52接收所述内存控制器发送的第三访问指令。其中,所述第三访问指令中携带有第三地址,所述第三地址用于指向要访问的所述DRAM的第三存储单元集合。实际应用中,内存控制器20可以同时向DRAM 40和SCM 50发送第三访问指令。由于在本发明实施例所示的系统架构中,DRAM 40被作为主内存使用,DRAM 40需要执行内存控制器下发的所有访问指令,则第三指令中的第三地址是指向DRAM 40中的存储单元的地址。步骤300与图2中所示的步骤200类似,具体可以参见步骤200的描述,在此不再赘述。
在步骤305中,SCM控制器52判断所述第三存储单元集合中是否包括保持时间比所述DRAM的刷新周期短的存储单元。其中,所述DRAM的刷新周期比标准刷新周期长。如果,SCM控制器52判断所述第三存储单元集合中未包括保持时间比所述DRAM的刷新周期短的存储单元,则该方法进入步骤310,否则,进入步骤315。具体的,SCM控制器52可以通过CAM 60判断所述第三存储单元集合中是否包括保持时间比所述DRAM的刷新周期短的存储单元。如果第三地址命中CAM 60,则CAM 60会向SCM控制器52输出与第三地址具有映射关系的第四地址,说明所述第三存储单元集合中包括保持时间比所述DRAM的刷新周期短的存储单元。如果第三地址没有命中CAM 60,则说明所述第三存储单元集合中没有包括保持时间比所述DRAM的刷新周期短的存储单元。步骤305与图2中所示的步骤205类似,具体可以参见步骤205的描述,在此不再赘述。
在步骤310中,SCM控制器52删除所述第三访问指令。实际应用中,SCM控制器52接收到内存控制器20发送的第三访问指令后,并不会立即执行所述第三访问指令,而是会先缓存所述第三访问指令。因此,在步骤305中,若SCM控制器52没有接收到CAM60发送的第四地址,则说明SCM控制器52通过CAM 60确定第三访问指令中的第三地址指向的第三存储单元集合中没有包括保持时间比所述DRAM的刷新周期短的存储单元。在这种情况下,SCM控制器52可以删除所述第三访问指令,不根据第三访问指令访问SCM。
在步骤315中,SCM控制器52获得与所述第三地址具有映射关系的第四地址。其中,所述第四地址用于指向SCM 50的第四存储单元集合。在步骤320中,SCM控制器52根据所述第四地址将所述第三访问指令转换为第四访问指令,其中,所述第四访问指令中包括所述第四地址。在步骤325中,SCM控制器52根据所述第四访问指令对所述SCM 50进行访问。具体的,SCM控制器52根据所述第四访问指令对所述SCM50中所述第四存储单元集合中的存储单元进行访问。可以理解的是,步骤315-步骤325分别与图2所示的步骤210-步骤220类似,具体可以分别参见图2所示实施例中的相关步骤的描述,在此不再赘述。
本发明实施例还提供一种数据处理的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述任意一个方法实施例所述的方法流程。本领域普通技术人员可以理解,前述的存储介质包括:U盘、移动硬盘、磁碟、光盘、随机存储器(Random-Access Memory,RAM)、固态硬盘(Solid State Disk,SSD)或者非易失性存储器(non-volatile memory)等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
需要说明的是,本申请所提供的实施例仅仅是示意性的。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本发明实施例、权利要求以及附图中揭示的特征可以独立存在也可以组合存在。在本发明实施例中以硬件形式描述的特征可以通过软件来执行,反之亦然。在此不做限定。
Claims (16)
1.一种计算机系统,其特征在于,所述计算机系统包括内存控制器和混合内存,所述混合内存包括动态随机存取存储器DRAM和存储级内存SCM,其中:
所述内存控制器,用于向所述DRAM和所述SCM发送第一访问指令,其中,所述SCM与所述内存控制器相连接,所述第一访问指令中携带有第一地址,所述第一地址用于指向要访问的所述DRAM的第一存储单元集合;
所述DRAM,用于根据所述第一访问指令访问所述第一存储单元集合中的存储单元;
所述SCM包括SCM控制器和内容可寻址存储器CAM,
所述SCM控制器用于:
接收所述内存控制器发送的所述第一访问指令;
所述CAM用于:确定所述第一存储单元集合中包括保持时间比所述DRAM的刷新周期短的存储单元,其中,所述DRAM的刷新周期比标准刷新周期长;
获得与所述第一地址具有映射关系的第二地址,其中,所述第二地址用于指向所述SCM的第二存储单元集合;
所述SCM控制器还用于:根据所述第二地址将所述第一访问指令转换为第二访问指令,其中,所述第二访问指令中包括第二地址;
根据所述第二访问指令对所述第二存储单元集合中的存储单元进行访问。
2.根据权利要求1所述的计算机系统,其特征在于,所述SCM具体用于:
根据CAM中存储的所述第一地址确定所述第一存储单元集合中包括保持时间比所述DRAM的刷新周期短的存储单元,其中,所述CAM中存储有包括所述第一地址在内的在所述DRAM中保持时间比所述DRAM的刷新周期短的存储单元的地址;
根据所述第一地址以及所述CAM中存储的所述第一地址与所述第二地址的映射关系获得与所述第一地址具有映射关系的第二地址,其中,所述第一地址指向的所述DRAM的第一存储单元集合中的存储单元与所述第二地址指向的所述SCM的第二存储单元集合中的存储单元用于存储相同的数据。
3.根据权利要求1或2所述的计算机系统,其特征在于:
所述内存控制器,还用于向所述DRAM和所述SCM发送第三访问指令,其中,所述第三访问指令中携带有第三地址,所述第三地址用于指向要访问的所述DRAM的第三存储单元集合;
所述DRAM,还用于根据所述第三访问指令访问所述第三存储单元集合中的存储单元;
所述SCM,还用于:
接收所述内存控制器发送的所述第三访问指令;
确定所述第三存储单元集合中未包括保持时间比所述DRAM的刷新周期短的存储单元;
删除所述第三访问指令。
4.根据权利要求3所述的计算机系统,其特征在于,所述混合内存还包括:
数据选择器MUX,用于当所述第一访问指令为读指令时,向所述内存控制器输出所述SCM的第二存储单元集合中的存储单元中存储的数据;或
当所述第三访问指令为读指令时,向所述内存控制器输出所述DRAM的第三存储单元集合中的存储单元中存储的数据。
5.根据权利要求1或2所述的计算机系统,其特征在于:所述第二存储单元集合中的存储单元的总存储容量不小于第一存储单元集合的存储单元的总存储容量。
6.一种存储级内存SCM,所述SCM应用于包括混合内存的计算机系统中,其中,所述混合内存包括动态随机存取存储器DRAM和所述SCM,其特征在于,所述SCM与所述计算机系统的内存控制器相连接,所述SCM包括:
SCM控制器,用于接收所述计算机系统的内存控制器发送的第一访问指令,其中,所述第一访问指令中携带有第一地址,所述第一地址用于指向要访问的所述DRAM的第一存储单元集合;
内容可寻址存储器CAM,用于确定所述第一存储单元集合中包括保持时间比所述DRAM的刷新周期短的存储单元,并获得与所述第一地址具有映射关系的第二地址,其中,所述DRAM的刷新周期比标准刷新周期长,所述第二地址用于指向所述SCM的第二存储单元集合;
所述SCM控制器,还用于根据所述第二地址将所述第一访问指令转换为第二访问指令,并根据所述第二访问指令对所述第二存储单元集合中的存储单元进行访问,其中,所述第二访问指令中包括第二地址;
存储单元,用于存储数据。
7.根据权利要求6所述的SCM,其特征在于,所述CAM具体用于:
根据CAM中预先存储的所述第一地址确定所述第一存储单元集合中包括保持时间比所述DRAM的刷新周期短的存储单元,其中,所述CAM中存储有包括所述第一地址在内的在所述DRAM中保持时间比所述DRAM的刷新周期短的存储单元的地址;
根据所述第一地址以及所述CAM中存储的所述第一地址与所述第二地址的映射关系获得与所述第一地址具有映射关系的第二地址,其中,所述第一地址指向的所述DRAM的第一存储单元集合中的存储单元与所述第二地址指向的所述SCM的第二存储单元集合中的存储单元用于存储相同的数据。
8.根据权利要求6或7所述的SCM,其特征在于:
所述SCM控制器,还用于接收所述内存控制器发送的第三访问指令,其中,所述第三访问指令中携带有第三地址,所述第三地址用于指向要访问的所述DRAM的第三存储单元集合;
所述CAM,还用于根据所述第三地址确定所述第三存储单元集合中未包括保持时间比所述DRAM的刷新周期短的存储单元;
所述SCM控制器,还用于删除所述第三访问指令。
9.根据权利要求6所述的SCM,其特征在于,所述混合内存还包括数据选择器MUX,所述CAM还用于:
当所述第一访问命令为读命令时,在确定所述第一存储单元集合中包括保持时间比所述DRAM的刷新周期短的存储单元之后,向所述混合内存中的所述MUX发送第一指示信号,所述第一指示信号用于指示所述MUX向所述内存控制器输出SCM中存储的数据。
10.根据权利要求6或7所述的SCM,其特征在于:所述第二存储单元集合中的存储单元的总存储容量不小于第一存储单元集合的存储单元的总存储容量。
11.一种内存访问的方法,所述方法应用于包括混合内存的计算机系统,其中,所述混合内存包括动态随机存取存储器DRAM和存储级内存SCM,所述方法由SCM执行,其特征在于,所述SCM与所述计算机系统的内存控制器相连接,所述SCM包括SCM控制器和内容可寻址存储器CAM,所述方法包括:
接收所述计算机系统的内存控制器发送的第一访问指令,所述第一访问指令中携带有第一地址,所述第一地址用于指向要访问的所述DRAM的第一存储单元集合;
确定所述第一存储单元集合中包括保持时间比所述DRAM的刷新周期短的存储单元,其中,所述DRAM的刷新周期比标准刷新周期长;
获得与所述第一地址具有映射关系的第二地址,其中,所述第二地址用于指向SCM的第二存储单元集合;
根据所述第二地址将所述第一访问指令转换为第二访问指令,其中,所述第二访问指令中包括所述第二地址;
根据所述第二访问指令对所述二存储单元集合中的存储单元进行访问。
12.根据权利要求11所述的方法,其特征在于,所述确定所述第一存储单元集合中包括保持时间比所述DRAM的刷新周期短的存储单元包括:
根据CAM中存储的所述第一地址确定所述第一存储单元集合中包括保持时间比所述DRAM的刷新周期短的存储单元,其中,所述CAM中存储有包括所述第一地址在内的在所述DRAM中保持时间比所述DRAM的刷新周期短的存储单元的地址。
13.根据权利要求12所述的方法,其特征在于,所述获得与所述第一地址具有映射关系的第二地址包括:
根据所述CAM中存储的所述第一地址与所述第二地址的映射关系表获得与所述第一地址具有映射关系的第二地址,其中,所述第一地址指向的所述DRAM的第一存储单元集合中的存储单元与所述第二地址指向的所述SCM的第二存储单元集合中的存储单元用于存储相同的数据。
14.根据权利要求11所述的方法,其特征在于,所述方法还包括:
接收所述内存控制器发送的第三访问指令,其中,所述第三访问指令中携带有第三地址,所述第三地址用于指向要访问的所述DRAM的第三存储单元集合;
确定所述第三存储单元集合中未包括保持时间比所述DRAM的刷新周期短的存储单元;
删除所述第三访问指令。
15.根据权利要求11所述的方法,其特征在于,所述方法还包括:
当所述第一访问命令为读命令时,在确定所述第一存储单元集合中包括保持时间比所述DRAM的刷新周期短的存储单元之后,向所述混合内存中的数据选择器MUX发送第一指示信号,所述第一指示信号用于指示所述MUX向所述内存控制器输出SCM中存储的数据。
16.根据权利要求11-15任意一项所述的方法,其特征在于:所述第二存储单元集合中的存储单元的总存储容量不小于第一存储单元集合的存储单元的总存储容量。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410856607.XA CN105808455B (zh) | 2014-12-31 | 2014-12-31 | 访问内存的方法、存储级内存及计算机系统 |
PCT/CN2015/097961 WO2016107429A1 (zh) | 2014-12-31 | 2015-12-18 | 访问内存的方法、存储级内存及计算机系统 |
KR1020177018657A KR101968433B1 (ko) | 2014-12-31 | 2015-12-18 | 메모리 액세스 방법, 저장-클래스 메모리, 및 컴퓨터 시스템 |
JP2017535038A JP6408712B2 (ja) | 2014-12-31 | 2015-12-18 | メモリアクセス方法、ストレージクラスメモリ、およびコンピュータシステム |
EP15875107.3A EP3220277B1 (en) | 2014-12-31 | 2015-12-18 | Memory accessing method, storage-class memory, and computer system |
US15/638,582 US10223273B2 (en) | 2014-12-31 | 2017-06-30 | Memory access method, storage-class memory, and computer system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410856607.XA CN105808455B (zh) | 2014-12-31 | 2014-12-31 | 访问内存的方法、存储级内存及计算机系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105808455A CN105808455A (zh) | 2016-07-27 |
CN105808455B true CN105808455B (zh) | 2020-04-28 |
Family
ID=56284220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410856607.XA Active CN105808455B (zh) | 2014-12-31 | 2014-12-31 | 访问内存的方法、存储级内存及计算机系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10223273B2 (zh) |
EP (1) | EP3220277B1 (zh) |
JP (1) | JP6408712B2 (zh) |
KR (1) | KR101968433B1 (zh) |
CN (1) | CN105808455B (zh) |
WO (1) | WO2016107429A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10277677B2 (en) * | 2016-09-12 | 2019-04-30 | Intel Corporation | Mechanism for disaggregated storage class memory over fabric |
WO2019169615A1 (zh) * | 2018-03-09 | 2019-09-12 | 深圳市汇顶科技股份有限公司 | 访问指令sram的方法和电子设备 |
KR102505913B1 (ko) | 2018-04-04 | 2023-03-07 | 삼성전자주식회사 | 메모리 모듈 및 메모리 모듈을 포함하는 메모리 시스템 |
US10990463B2 (en) | 2018-03-27 | 2021-04-27 | Samsung Electronics Co., Ltd. | Semiconductor memory module and memory system including the same |
KR102583266B1 (ko) | 2018-10-24 | 2023-09-27 | 삼성전자주식회사 | 스토리지 모듈, 스토리지 모듈의 동작 방법, 및 스토리지 모듈을 제어하는 호스트의 동작 방법 |
US11061828B1 (en) | 2020-02-25 | 2021-07-13 | International Business Machines Corporation | Using multi-tiered cache to satisfy input/output requests |
CN118779250A (zh) * | 2020-02-27 | 2024-10-15 | 华为技术有限公司 | 内存设备的数据处理方法、装置和系统 |
JP2022050017A (ja) | 2020-09-17 | 2022-03-30 | キオクシア株式会社 | キャッシュメモリシステムおよびキャッシュメモリ制御方法 |
CN112257363B (zh) * | 2020-10-30 | 2023-04-18 | 上海兆芯集成电路有限公司 | 内存的选择方法及装置 |
JP2023007761A (ja) | 2021-07-02 | 2023-01-19 | キオクシア株式会社 | メモリシステム |
CN115794692A (zh) * | 2021-09-09 | 2023-03-14 | 瑞昱半导体股份有限公司 | 存取内存的电子装置及数据写入方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5758056A (en) * | 1996-02-08 | 1998-05-26 | Barr; Robert C. | Memory system having defective address identification and replacement |
CN102831087A (zh) * | 2012-07-27 | 2012-12-19 | 国家超级计算深圳中心(深圳云计算中心) | 基于混合存储器的数据读写处理方法和装置 |
CN103810126A (zh) * | 2014-01-27 | 2014-05-21 | 上海新储集成电路有限公司 | 混合dram存储器及降低该dram存储器刷新时功耗的方法 |
CN103810112A (zh) * | 2014-01-28 | 2014-05-21 | 华中科技大学 | 一种非易失性内存系统及其管理方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5197026A (en) * | 1989-04-13 | 1993-03-23 | Microchip Technology Incorporated | Transparent EEPROM backup of DRAM memories |
GB9205551D0 (en) * | 1992-03-13 | 1992-04-29 | Inmos Ltd | Cache memory |
JP2003308691A (ja) | 2002-04-11 | 2003-10-31 | Elpida Memory Inc | 半導体記憶装置 |
JP2005285190A (ja) * | 2004-03-29 | 2005-10-13 | Sanyo Electric Co Ltd | メモリ |
JP5049733B2 (ja) * | 2007-10-17 | 2012-10-17 | 株式会社東芝 | 情報処理システム |
JP2009252005A (ja) * | 2008-04-08 | 2009-10-29 | Kawasaki Microelectronics Inc | 不良アドレス変換装置 |
US8626997B2 (en) * | 2009-07-16 | 2014-01-07 | Micron Technology, Inc. | Phase change memory in a dual inline memory module |
WO2011081232A1 (ko) * | 2009-12-29 | 2011-07-07 | 주식회사 프롬나이 | Nvram과 휘발성 램을 이용하여 선택적으로 프로세스의 영속성을 구현하는 컴퓨팅 시스템 및 방법 |
US9037928B2 (en) * | 2012-01-01 | 2015-05-19 | Mosys, Inc. | Memory device with background built-in self-testing and background built-in self-repair |
US9245653B2 (en) * | 2010-03-15 | 2016-01-26 | Intelligent Intellectual Property Holdings 2 Llc | Reduced level cell mode for non-volatile memory |
JP5553309B2 (ja) | 2010-08-11 | 2014-07-16 | 国立大学法人 東京大学 | データ処理装置 |
US8521981B2 (en) | 2010-12-16 | 2013-08-27 | Microsoft Corporation | Memory power tokens |
BR112014013606B1 (pt) | 2011-12-28 | 2021-11-03 | Intel Corporation | Método, dispositivo e sistema para distribuir armazenamentos de dados entre memória volátil e memória não volátil |
US9257169B2 (en) * | 2012-05-14 | 2016-02-09 | Samsung Electronics Co., Ltd. | Memory device, memory system, and operating methods thereof |
US9524248B2 (en) | 2012-07-18 | 2016-12-20 | Micron Technology, Inc. | Memory management for a hierarchical memory system |
WO2015106162A1 (en) * | 2014-01-09 | 2015-07-16 | SanDisk Technologies, Inc. | Selective copyback for on die buffered non-volatile memory |
CN103811048B (zh) * | 2014-02-26 | 2017-01-11 | 上海新储集成电路有限公司 | 一种混合存储器结构的低功耗刷新方法 |
US10559344B2 (en) * | 2016-09-16 | 2020-02-11 | Aspiring Sky Co. Limited | Hybrid non-volatile memory devices with static random access memory (SRAM) array and non-volatile memory (NVM) array |
-
2014
- 2014-12-31 CN CN201410856607.XA patent/CN105808455B/zh active Active
-
2015
- 2015-12-18 KR KR1020177018657A patent/KR101968433B1/ko active IP Right Grant
- 2015-12-18 EP EP15875107.3A patent/EP3220277B1/en active Active
- 2015-12-18 JP JP2017535038A patent/JP6408712B2/ja active Active
- 2015-12-18 WO PCT/CN2015/097961 patent/WO2016107429A1/zh active Application Filing
-
2017
- 2017-06-30 US US15/638,582 patent/US10223273B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5758056A (en) * | 1996-02-08 | 1998-05-26 | Barr; Robert C. | Memory system having defective address identification and replacement |
CN102831087A (zh) * | 2012-07-27 | 2012-12-19 | 国家超级计算深圳中心(深圳云计算中心) | 基于混合存储器的数据读写处理方法和装置 |
CN103810126A (zh) * | 2014-01-27 | 2014-05-21 | 上海新储集成电路有限公司 | 混合dram存储器及降低该dram存储器刷新时功耗的方法 |
CN103810112A (zh) * | 2014-01-28 | 2014-05-21 | 华中科技大学 | 一种非易失性内存系统及其管理方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3220277A1 (en) | 2017-09-20 |
KR101968433B1 (ko) | 2019-04-11 |
JP6408712B2 (ja) | 2018-10-17 |
EP3220277B1 (en) | 2021-10-27 |
US10223273B2 (en) | 2019-03-05 |
WO2016107429A1 (zh) | 2016-07-07 |
KR20170093211A (ko) | 2017-08-14 |
CN105808455A (zh) | 2016-07-27 |
US20170300419A1 (en) | 2017-10-19 |
EP3220277A4 (en) | 2018-02-21 |
JP2018500695A (ja) | 2018-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105808455B (zh) | 访问内存的方法、存储级内存及计算机系统 | |
US9558805B2 (en) | Memory modules and memory systems | |
US8832354B2 (en) | Use of host system resources by memory controller | |
US8935467B2 (en) | Memory system, and a method of controlling an operation thereof | |
US20130329491A1 (en) | Hybrid Memory Module | |
US20170060434A1 (en) | Transaction-based hybrid memory module | |
US20190384534A1 (en) | Memory system and operating method thereof | |
US10846220B2 (en) | Memory system and operation method thereof | |
KR102701812B1 (ko) | 휘발성 메모리를 캐쉬로 사용하는 비휘발성 메모리 시스템 | |
CN103984509A (zh) | 异构nand型固态硬盘及提高其性能的方法 | |
CN114115715B (zh) | 执行存储器的低时延存取的设备和方法 | |
US9424183B2 (en) | Data storage device and method for operating the same | |
US9824743B2 (en) | Memory refresh operation with page open | |
US20220019370A1 (en) | Partial zone memory unit handling in a zoned namespace of a memory device | |
KR20170093053A (ko) | 리프레시 정보 생성기를 포함하는 휘발성 메모리 장치 및 전자 장치, 그것의 정보 제공 방법, 그리고 그것의 리프레시 제어 방법 | |
US12019550B2 (en) | Concurrent page cache resource access in a multi-plane memory device | |
US11756604B2 (en) | Managing write disturb for units of memory in a memory sub-system using a randomized refresh period | |
US8639879B2 (en) | Sorting movable memory hierarchies in a computer system | |
US10185510B2 (en) | Bank interleaving controller and semiconductor device including the same | |
CN105608021B (zh) | 一种利用内容寻址mram存储装置和方法 | |
US20230395121A1 (en) | Row hammer refresh operation | |
US11934690B2 (en) | Memory sub-system refresh | |
US20240029778A1 (en) | Bank selection for refreshing | |
US20230043238A1 (en) | Managing write disturb for units of a memory device using weighted write disturb counts | |
KR20160110690A (ko) | 디램 메모리 어드레스 맵핑 방법 및 그 방법을 이용하는 메모리 시스템 |
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 |