CN107710175B - 存储器模块以及操作系统和方法 - Google Patents
存储器模块以及操作系统和方法 Download PDFInfo
- Publication number
- CN107710175B CN107710175B CN201680036145.4A CN201680036145A CN107710175B CN 107710175 B CN107710175 B CN 107710175B CN 201680036145 A CN201680036145 A CN 201680036145A CN 107710175 B CN107710175 B CN 107710175B
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- subsystem
- command
- volatile memory
- 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/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种存储器模块,包括:易失性存储器子系统,经配置耦接到计算机系统中的存储器信道并且能够用作计算机系统的主存储器;非易失性存储器子系统,为计算机系统提供存储;以及模块控制器,耦接到易失性存储器子系统、非易失性存储器子系统和存储器信道。模块控制器响应于经由存储器信道接收的NV访问请求从非易失性存储器子系统读取第一数据,并且从易失性存储器子系统读取第二数据,并且响应于经由C/A总线接收的虚拟写入存储器命令,使第一数据的至少一部分写入易失性存储器子系统中。模块控制装置包括由计算机系统经由存储器信道可访问的状态寄存器。
Description
相关申请的交叉引用
本申请要求于2015年4月20日提交的题为“Hybrid Memory Module for ComputerSystem”的美国临时专利申请No.62/150,272以及于2015年5月7日提交的题为“MemoryModule and System and Method of Operation”的美国专利申请No.14/706,873的优先权,这两个申请的全部内容均通过引证结合于此。
技术领域
本文中的公开总体上涉及存储器模块,并且更具体地,涉及具有易失性和非易失性子系统的存储器模块及操作其的系统和方法。
背景技术
诸如网络服务器、个人计算机、PDA、移动电话、视频游戏、科学仪器、工业机器人、医疗电子器件等的计算机系统在很大程度上依赖于其系统或主存储器的容量和吞吐量及其为了最佳性能而对其访问的速度。目前,动态随机访问存储器(DRAM)通常用作系统存储器。DRAM是一种将每一位数据存储在集成电路中的独立电容器中的随机访问存储器。电容器可以被充电或放电,以便这两种状态用来表示一个比特的两个值,通常称为0和1。由于电容器泄漏电荷,所以信息最终会消失,除非周期性地刷新电容器电荷。由于这个刷新要求,所以与SRAM和其他静态存储器截然相反,这是动态存储器。
DRAM的结构简单性允许DRAM芯片达到非常高的密度,因为数十亿个晶体管和电容器对可以装配在单个存储器芯片上。另一方面,DRAM是易失性存储器,当去除电源时,会迅速丢失数据。与作为可被电擦除和重新编程的一种电子非易失性计算机存储介质的闪存相比,DRAM也昂贵得多。例如,高密度DRAM的成本可以是高性能闪存器件的20倍。而且,闪存芯片可具有比DRAM芯片更高的密度,这使得相同尺寸的存储器模块可以打包更多,以达到远远更大的存储容量。
附图说明
图1是根据某些实施例的计算机或服务器系统的框图;
图2是根据某些实施例的计算机或服务器系统的软件栈的框图;
图3是根据某些实施例的具有DRAM和闪存的存储器模块的框图;
图4是根据某些实施例的存储器模块中的模块控制器的框图;
图5是根据某些实施例的模块控制器中的控制逻辑电路的框图;
图6是示出根据某些实施例的存储器模块的实际的存储器地址空间的框图;
图7是根据某些实施例的计算机或服务器系统中的响应于页面错误的数据传输的流程图;
图8至图10是示出根据某些实施例的存储器模块上的各种数据传输的示图;
图11是示出根据某些实施例的页面进入数据流与正常存储器访问交错以避免数据访问冲突的定时图;
图12是示出根据某些实施例的状态报告处理的流程图;
图13是示出根据某些实施例的存储器模块上的状态寄存器的框图;
图14是示出根据某些实施例的计算机或服务器系统中的系统存储器地址空间的框图。
具体实施方式
如图1所示,根据某些实施例的计算机或服务器系统(计算机系统)100包括中央处理单元(CPU)或处理器、存储器控制器(MC)、系统存储器总线、经由系统存储器总线耦接到存储器控制器的一个或多个存储器模块。一个或多个存储器模块包括提供系统存储器的一个或多个HypervaultTM(HV)存储器模块,并且还可以提供内存信道存储器(memory channelstorage,MCS)。在某些实施例中,MC可以集成到CPU中。在进一步的实施例中,计算机系统还可以包括也耦接到系统总线的直接数据管理控制器(DMA)。具有或没有MC和/或DMA的CPU或一部分或整个计算机系统100在下文中有时被称为“系统(System)”或“系统(system)”。
在某些实施例中,计算机系统100还可以包括网卡以及一个或多个I/O装置,例如,键盘、监控器、触摸屏、麦克风、扬声器等。网卡可以或可以不集成到CPU中并在计算机系统100与局域网和/或广域网之间提供网络接口功能(有线或无线)。计算机系统100还可以包括耦接到北桥的PCI总线,所述北桥经由存储器总线耦接到存储器控制器或者并入到存储器控制器中。一个或多个存储装置(例如,硬盘驱动器、CD/DVD驱动器和USB驱动器)经由南桥耦接到PCI总线。
除了图1中所示的硬件组件之外,计算机系统100还包括软件/固件组件。在某些实施例中,软件/固件组件可以粗略地表示为硬件层201上的软件/固件层200的堆栈。如图2所示,软件/固件层200的堆栈包括位于操作系统层220上的应用层210。应用程序210是执行特定任务的软件程序。操作系统220管理计算机系统100的硬件和软件资源,并充当应用程序210和计算机系统100的硬件组件之间的介质。
操作系统220包括内核221,内核是管理来自其他软件程序(或处理)的输入/输出请求的计算机程序,并且将这些请求转换成计算机系统100的CPU和/或其他硬件组件的数据处理指令。内核可以包括:中断处理程序(interrupt handler),其处理竞争内核服务的所有请求或完成的I/O操作;调度程序,其确定哪些程序以什么顺序共享内核的处理时间;以及管理程序(supervisor),其在调度时实际上将计算机用于每个处理。内核还可能在内存或存储器中包括操作系统地址空间的管理器。内核的服务是由操作系统的其他部分或由应用程序通过一组指定的程序接口来请求的(有时称为系统调用)。
在内核和硬件层之间是基本输入/输出系统(BIOS)层230,其在某些实施例中是存储在某种永久存储器(例如,可编程只读存储器(PROM)或电可编程只读存储器(EPROM))或闪存中的固件,并且包括用于初始化和测试系统硬件组件的程序代码,并且当计算机系统100启动时,从大容量存储装置加载操作系统。BIOS可以额外提供硬件组件的抽象层,以便为应用程序和操作系统提供与硬件组件(例如,系统存储器和输入/输出装置)交互的一致方式。
在某些实施例中,软件栈还包括例如内核中的HV驱动器250。HV驱动器250是这样的软件程序,其用于控制对HV存储器模块的系统访问,使得HV存储器模块可以像标准的双列直插式存储器模块(DIMM)(例如,双倍数据速率(DDR)3寄存的DIMM RDIMM)或DDR3负载降低DIMM(LRDIMM)、DDR4RDIMM或DDR4LRDIMM)那样操作,而不需要对BIOS进行任何更改。HV驱动器250访问CPU中的存储器空间260以及用于存储HV驱动器250可以根据需要咨询和/或更新的查找表或其他配置信息的某些存储器位置。在某些实施例中,驱动器拦截某些系统调用,以访问HV存储器模块,并且指示存储器控制器响应于系统调用并且依照系统正在使用的存储器接口标准(例如,联合电子器件工程委员会(JEDEC)DDR3或DDR4RDIMM或LRDIMM标准)来发送控制、地址和数据信号,如下面进一步详细讨论的。
图3是根据某些实施例的可用于提供计算机/服务器系统100的系统存储器和/或MCS的HypervaultTM双列直插存储器模块(HVDIMM)300的框图。如图3所示,HVDIMM 300包括安装在模块板301上的易失性存储器子系统(HV-DRAM)310、非易失性存储器子系统(HV-闪存320)320和模块控制子系统(HV控制)330,模块板可以包括一个或多个印刷电路板。HVDIMM 300还可以包括缓存存储器340,并且还可以包括网络接口控制器(HV-NIC)。HVDIMM300还可以包括数据路由或路由器电路350,数据路由或路由器电路包括例如开关电路(例如,场效应晶体管或FET开关)和/或多路复用器,其在HV控制330的控制下,在HV-DRAM 310和系统存储器总线、HV-DRAM 310和HV控制330、HV-DRAM 310和缓存存储器340、缓存存储器340和HV控制330、和/或缓存存储器340和系统存储器总线之间选择性地路由数据信号。HVDIMM还可以包括缓存在系统和HVDIMM 300之间的读/写数据的数据缓存电路360。HVDIMM300还包括数据信号线(如虚线所示)和控制/地址(C/A)信号线(如实线所示)。
如图3所示,HVDIMM 300耦接到系统存储器总线,并且可以使用例如I2C协议或其变体进一步耦接到系统管理(SM)总线。系统存储器总线包括控制/地址(C/A)信号线和数据/选通(DQ/DQS)信号线。C/A信号线在正常操作期间耦接到HV-DRAM 310中的寄存器控制装置(RCD),并且进一步耦接到HV控制330。因此,RCD和HV控制330都可以响应于来自系统的C/A信号。在某些实施例中,HV-DRAM 310进一步包括开关电路(例如,FET开关、FET-A),其可由HV控制330控制,以将RCD耦接到C/A总线和HV控制330,使得HV-DRAM 310在例如系统访问HVDIMM 300中的DRAM地址空间时的正常操作期间响应来自系统的C/A信号,或者在例如HVDIMM 300在电力故障之后备份HV-DRAM 310中的内容或者在电力恢复之后将内容恢复回DRAM中时的备份/恢复操作期间响应来自HV控制330的C/A信号。
在某些实施例中,HV控制330被配置成监控来自存储器控制器的C/A信号并识别和作用于响应于系统调用而制定的C/A信号,以访问HV-闪存320和/或缓存存储器340。
在某些实施例中,缓存存储器340包括诸如千兆字节DRAM存储器(TBM)的DRAM或SRAM。缓存存储器340用于临时存储数据,以使得缓存存储器340中的数据传输更加快速和高效。由于通常数据可以以比至和自系统传输数据更慢的速度传入和传出闪存存储器,所以缓存存储器340用于缓存至/自闪存存储器的数据使得系统不必减速并且等待数据写入到HV-闪存320或从HV-闪存320读取数据。当系统将数据写入到HV-闪存320时,数据以DRAM数据I/O速度缓存到缓存存储器340中,这比闪存数据I/O速度快得多。例如,基于先进先出(FIFO),缓存的数据可以写入闪存存储器。读取方向也是如此。因此,当从HV-闪存320进行读取时,CPU可以与主存储器一起参与其他处理,直到缓存存储器340已经缓存预定量的数据,用于以DRAM速度传送到主存储器或系统。另一方面,当数据从主存储器传送到存储器时,根据来自系统或HV控制330的一组控制/地址(C/A)信号从HV-DRAM 310读取数据,并根据来自HV控制330的另一组C/A信号将数据写入到缓存存储器340中。虽然DRAM可以与系统一起参与其他任务,但是通过从缓存存储器340中读取数据并将数据写入存储器,HV控制330可以将数据从缓存存储器340传送到HV-闪存320。在进一步的实施例中,缓存存储器340可以包括两组缓存存储器BufA和BufB。
在某些实施例中,HV-DRAM 310可以包括双倍数据速率(例如,DDR3或DDR4)DRAM装置和寄存器控制装置(RCD)的多个存储排(rank)(例如,DRAM R1和DRAM R2)。在某些实施例中,HV-闪存320包括MLC NAND闪存,其被分区,以支持快速访问并增强虚拟复制的纠错能力。在某些实施例中,HV-闪存320包括均具有嵌入式多媒体接口的多个(例如,9个)标准嵌入式多媒体卡(eMMC)封装,如于2014年11月7日提交的题为“Hybrid Memory Module andSystem and Method of Operating the Same”的美国专利申请号14/536,588中所述,其通过引用结合于此。
在某些实施例中,HVDIMM 300还包括可由系统经由SM总线访问的串行存在检测(SPD)装置370。SPD装置370包括诸如电可擦除可编程只读存储器(EEPROM)的非易失性存储器,用于在其中存储HVDIMM 300的关键参数,例如,基本存储器类型、模块数据宽度、定时参数、存储器密度(例如,位宽(bank)的大小)、制造商ID、序列号等。这些关键参数通常由制造商编写。在系统启动期间,BIOS读取SPD信息,以配置存储器控制器。
可以将HVDIMM 300中的组件(例如,HV控制330、主存储器子系统(或易失性存储器子系统)、缓存存储器340、HV-闪存320(或非易失性存储器子系统))安装在相同的印刷电路板上或彼此靠近设置,以允许在其间快速且平稳的数据传输。
图4是根据某些实施例的HV控制330的框图。HV控制330可以使用一个或多个专用集成电路(ASIC)和/或可编程现场门阵列(FPGA)装置来实现。如图4所示,HV控制330包括控制逻辑410、数据缓存器420、本地存储器430和寄存器440。HV控制330还包括DRAM接口450、闪存接口460、系统管理总线接口470和网络接口480。在某些实施例中,HV控制330控制HV-DRAM 310和HV-闪存320之间的数据传输。在本地存储器片上存储器空间中保存地址管理表,操作路由器350和开关电路FET-A,并向HV-DRAM 310、HV-闪存320和缓存存储器340产生适当的命令和地址信号,以控制其间的数据传输。
在某些实施例中,闪存接口经由数据信号线461和控制/地址信号线463耦接到HV-删除320,DRAM接口450提供多组C/A信号线,以同时控制存储器模块300上的不同DRAM。例如,C/A信号线451用于在备份/恢复操作期间向HV-DRAM 310发送C/A信号,并且当在缓存存储器340中设置有BufA和BufB时,C/A信号线452用于向缓存存储器340中的BufA发送C/A信号,C/A信号线453用于向缓存存储器340中的BufB发送C/A信号,以便BufA和BufB可以同时参与不同的数据传输活动。DRAM接口450还提供耦接到路由器350的多组DQ/DQS信号线(例如,454和455),使得HV控制330可以同时处理多个数据传输。例如,当在BufB和HV-闪存320之间传送数据时,HV控制330可以对在BufA中缓存的数据执行纠错。
在某些实施例中,响应于电力故障事件,可操作HVDIMM 300,以备份DRAM中的数据。当DRAM中的数据传送到闪存时,HV控制330为将以DLL关闭模式操作的HV-DRAM 310提供正确定时。HV控制330还为备份和恢复处理提供正确的操作程序。开关电路FET-A可以被配置为隔离RCD 320并且允许RCD 320在备份和恢复处理期间从HV控制330接收C/A信号。HV控制330还控制路由器350在备份操作期间将数据从HV-DRAM 310路由到HV控制330,并在恢复操作期间将数据从HV控制330路由到HV-DRAM 310。
在某些实施例中,系统可以经由SM总线访问HVDIMM 300。例如,系统可以通过设置HV控制330中的某些寄存器,使用SM总线来配置HV控制330。HV控制330还可以使用SM总线在某个操作完成时或者当遇到错误时利用预先配置的中断信号,或者通过更新HV控制330的系统总线接口中或者DMA中的预定义的状态寄存器来通知系统。
在某些实施例中,HV控制330还结合HV-NIC管理HVDIMM 300与任何局域网或广域网之间的网络接口,以促进HVDIMM 300与局域网或广域网中的其他存储装置之间的直接数据传输。在某些实施例中,HV控制330包括网络接口和/或被耦接到可以从HV-DRAM 310和/或HV-闪存320获取数据的网络接口卡(HV-NIC),并且构建具有适当源地址和目的地址的网络分组。通常,源地址是由系统预先配置的。在某些实施例中,HV控制330的HV-NIC或网络接口以及一些或全部其他组件可以嵌入到相同的ASIC或FPGA中。
在某些实施例中,如图5所示,控制逻辑410包括监控来自系统的C/A信号、产生用于耦接到DRAM接口450的HV-DRAM 310和/或缓存存储器340的C/A信号和/或用于耦接到闪存接口460的HV-闪存320的C/A信号的逻辑电路和/或一个或多个处理单元或处理器510,并且响应于来自该系统的C/A信号,控制路由器350和开关电路FET-A。在某些实施例中,逻辑电路和/或处理器可以被配置为预处理从闪存传输到DRAM的数据,以便通过卸载传统上由CPU完成的一些计算工作,来节省DRAM存储器空间并减少存储器信道中的数据流量,如在2014年8月22日提交的题为“Apparatus and Methods for Transferring StorageContent”的美国临时专利申请No.62/041,024中所描述的,其通过引用结合于此。在某些实施例中,HV控制330还包括执行错误检测/校正例程的纠错电路520,以确保从HV-闪存传输的数据的完整性,如在2014年11月7日提交的题为“Hybrid Memory Module and Systemand Method of Operating the Same”的美国专利申请No.14/536,588号中所描述的,其通过引用结合于此。
图6示出了根据某些实施例的由HVDIMM 300提供的存储空间600。如图6所示,存储器空间600包括HV-DRAM空间610和HV-闪存空间620。HV-闪存空间620分成多个区域,包括非易失性(NV)备份区域621、主存储器本地存储(MMLS)区域623、MCS存储区域625等,其中每一个都可用于支持HV存储器的不同功能。例如,NV备份区域可用于在停电期间在HV-DRAM中存储内容的副本;并且MMLS区域可以用作交换空间,和/或用作部分或全部主存储器。在某些实施例中,系统随机访问的工作数据以DRAM数据格式存储在MMLS区域中。MCS区域可以用作传统的闪存存储器。在某些实施例中,闪存存储器中的存储器空间还包括提供额外存储容量的额外配置区域。在某些实施例中,额外配置区域对于系统是隐藏的,并用于通过在更大的群体上分配写入和擦除来提高性能。
HV-DRAM空间610包括用于系统随机访问的实际存储空间。该空间可以被在系统100上运行的多个进程或应用程序共享。为了有效地管理存储器空间610,系统100可以提供其主存储器的抽象(被称为虚拟存储器或虚拟地址空间),其将程序使用的存储器地址(即,虚拟地址)映射到HV-DRAM 310中的实际地址内。为了实现虚拟存储器,系统100可以包括存储器管理单元(MMU),该存储器管理单元跟踪页面及其地址转换,当运行程序试图访问被映射到系统的虚拟地址空间内但未加载到HV-DRAM 310设置的实际的存储器中的存储器页面中的数据时,发生页面错误,并且系统可能引起中断,其通过使存储器模块300将请求的数据从HV-闪存320移动到HV-DRAM 310,来提示HV驱动器250处理页面错误,以便允许程序继续操作,就好像没有发生页面错误。
在某些实施例中,对于涉及HV-闪存320或缓存存储器340的操作,例如,交换入或交换出操作,HV驱动器250在需要在DRAM(主存储器)和闪存(存储器)之间传送数据时向存储器控制器发送NV访问请求,并随同所述的请求提供DRAM地址和闪存地址。之后,HV驱动器250和HV控制330共同操作,以将数据移入或移出HV-DRAM 310,而不会与正常系统访问主存储器相冲突。在某些实施例中,存储器控制器可以交错进行存储访问和正常系统内存访问。
例如,图7至图10示出了响应于页面错误701由HV驱动器250和HV控制330执行的处理程序700。如图7所示,HV驱动器250通过使存储器控制器经由C/A总线向HVDIMM 300发送第一组C/A信号以及经由数据总线向HVDIMM 300发送与第一组C/A信号相关联的第一组数据信号来启动页面错误操作(703)。在某些实施例中,第一组C/A信号包括不指向HV-DRAM310的写入命令。例如,C/A信号可以包括一个或多个芯片选择信号,其中没有一个信号声明选择HV-DRAM 310中的任何一个存储排(rank)。第一组数据信号包括其它用于页面错误操作的信息,例如,HV-闪存中存有将要被索取的数据的一个或多个地址位置。HV控制330通过引导路由器350识别第一组C/A信号并将第一数据信号路由到HV控制330而不是HV-DRAM310来开始DIMM上的页面错误操作(705)。HV控制330然后基于第一组C/A信号和从存储器控制器接收到的第一数据信号来生成闪存C/A信号,以开始闪存读取(707),使HV-闪存输出将要加载到DRAM中的页面输入数据。HV控制330可以通过引导路由器350形成数据路径810来使页面输入数据存储在BufA(709)中,如图8所示,并根据BufA中存储器装置的定时要求,在页面输入数据之前将一组C/A信号发送到BufA。
同时,HV驱动器250继续处理页面错误操作。HV驱动器250可以将一些数据从HV-DRAM 310中交换出来,以便为将加载到DRAM中的存储器页面留出空间。在某些实施例中,HV驱动器250通过使存储器控制器发送包括读取命令和读取地址的第二组C/A信号来做到这一点(711),这使得HV-DRAM输出页面输出数据。由RCD和HV控制330接收第二组C/A信号。HV控制330将第二组C/A信号识别为页面错误操作的一部分,因为读取地址与在第一组C/A信号中的地址相关。作为响应,HV控制330通过引导路由器350形成数据路径820(如图8所示)以将页面输出数据路由到BufB中,来偷取页面输出数据(713)。根据BufB中的存储器装置的定时要求,HV控制330还通过在页面输出数据之前向BufB发送一组C/A信号来使页面输出数据被写入BufB内(715)。数据也可以直接路由到HV控制330,并在之后写入BufB。在至少一部分页面输入数据写入BufA的同时,至少一部分页面输出数据写入BufB(709)。
在HVDIMM 300继续上面讨论的数据传输时,HV驱动器250现在等待(717)。在某些实施例中,HV控制330可以向页面输出数据添加纠错码(ECC)(719),如在2014年11月7日提交的题为“Hybrid Memory Module and System and Method of Operating the Same”的美国专利申请No.14/536,588所讨论的,该申请通过引用结合于此。在某些实施例中,在页面输出数据通过HV控制330经由数据路径910传送到HV-闪存320时,进行ECC编码,如图9所示。HV控制330还发送闪存C/A信号,以使ECC编码的页面输出数据存储在HV-闪存320中(721)。在某些实施例中,HV控制330管理HV-闪存320地址并且纪录实际的闪存地址与系统所知的虚拟/实际地址之间的关联。这可以通过创建和更新地址映射表来完成,该表将系统(虚拟/实际)地址映射到闪存实际地址。HV控制330使用地址映射表将页面输出数据正确地放置在HV-闪存320中的适当位置。
HV控制330可以对从HV-闪存读出的页面输入数据执行纠错(723),如在2014年11月7日提交的题为“Hybrid Memory Module and System and Method of Operating theSame”的美国专利申请No.14/536,588中所讨论的,该申请通过引用结合于此。在某些实施例中,HV控制330通过在路由器350中形成数据路径920来做到这一点,如图9所示,这允许HV控制330读取存储在BufA中的页面输入数据,对页面输入数据执行错误检测和校正,并且将校正的页面输入数据存储回BufA。根据页面输入数据的大小,HV控制330可以将页面输入数据分成多个部分,并通过读出页面输入数据的每个部分,对每个部分执行错误检测和校正,并且在读出页面输入数据的下一部分用于纠错之前,将校正部分写回到BufA中,来一次一个部分地对页面输入数据执行纠错。
如上所述,当HVDIMM 300准备页面输入数据时,HV控制330指示路由器350形成数据路径930,如图9所示,这允许HVDIMM 330响应于来自系统的命令执行正常的主存储器操作。当HV控制330完成上面讨论的数据传送和纠错时,HV控制330可以经由例如SM总线向HV驱动器250发送中断信号(725)。作为响应,HV驱动器通过使存储器控制器向HVDIMM 300发送包括写入命令和写入地址的第三组C/A信号来启动虚拟写入操作。在某些实施例中,虚拟写入命令类似于正常的写入命令,除了后面跟有虚拟数据或没有来自存储器控制器的数据之外。第三组C/A信号由RCD和HV控制330接收。HV控制330将第三组C/A信号识别为页面错误操作的一部分,因为其写入地址与在第一组或第二组C/A信号中的地址相关。作为响应,HV控制330将读取命令发送到BufA,这使得BufA输出页面输入数据。HV控制330还引导路由器350形成数据路径1010,如图10所示,以将页面输入数据路由至HV-DRAM 310。HV-DRAM310响应于从第三组C/A信号导出的来自RCD的C/A信号而接收页面输入数据。因此,来自存储器控制器的虚拟数据被忽略或丢弃。
在某些实施例中,系统对主存储器的正常系统访问在系统与HV-DRAM 310之间进行,HV驱动器350或HV控制330没有太多介入。在某些实施例中,计算机系统100中的存储器接口被设计成没有每命令握手规定(per command handshake provision)的从接口。因此,系统不知道是否有任何on-DIMM(模块内)活动正在占用HV-DRAM 310中的DRAM输入/输出(I/O)引脚。例如,如果占用DRAM I/来在主存储器和存储器之间传输数据,并且系统(存储器控制器)启动数据读或写命令,期望DRAM准备好执行系统命令,则DRAM将不能执行系统读/写操作,并且系统会遇到“内存故障”,这可能导致系统故障。
在某些实施例中,响应于来自系统的虚拟写入命令,HV控制330从BufB读取页面输入数据,然后将页面输入数据从HV控制330提供给HV-DRAM 310。HV控制器经配置监控来自存储器控制器的存储器命令,并相应调度on-DIMM(模块内)数据传输,以避免数据访问冲突。在某些实施例中,当在DRAM I/O处放置页面输入数据时,HV控制330将绕开系统内存访问工作,以避免与这种数据访问冲突引起的系统故障。例如,如图11所示,当数据A到G从缓存存储器340(TBM)被页面输入到主存储器(MM)时,系统可能会发出内存访问命令,以将数据M、M+1、M+2、M+3写入主存储器(MM)。存储器控制器可如下调度来自系统的存储器命令和来自HV驱动器350的虚拟写入命令:
CAS TBM A(未示出)-其是来自HV驱动器350的用于将数据A从TBM传输到主存储器(MM)的虚拟写入命令;
CAS TBM B-其是来自HV驱动器350的用于将数据B从TBM传送到主存储器(MM)的虚拟写入命令;
CAS sys M-其是将数据M从系统写入MM的正常写入命令;
CAS TBM C-其是来自HV驱动器350的用于将数据C从TBM传送到主存储器(MM)的虚拟写入命令;
CAS sys M+1-其是用于将数据M+1从系统写入MM的正常写入命令;
CAS sys M+2-其是用于将数据M+2从系统写入MM的正常写入命令;
CAS TBM D-其是来自HV驱动器350的用于将数据C从TBM传送到主存储器(MM)的虚拟写入命令;
CAS TBM E-其是来自HV驱动器350的用于将数据C从TBM传送到主存储器(MM)的虚拟写入命令;
CAS TBM G--其是来自HV驱动器350的用于将数据C从TBM传送到主存储器(MM)的虚拟写入命令;
CAS sys M+3-其是用于将数据M+3从系统写入MM的正常写入命令;以及
CAS TBM H(未示出)-其是来自HV驱动器350的用于将数据H从TBM传送到主存储器(MM)的虚拟写入命令。
在系统发出CAS TBM B命令之前,HV控制330(在图中,称为“FPGA”)可能已经向BufA发出了CAS TBM A'、CAS TBM B'和CAS TBM C'命令,以向HV控制330输出数据A、数据B和数据C。HV控制可以从TBM(如在“来自TBM的FPGA pg-in输入”中的数据块A和B所示)预先加载数据A和数据B,并将其放置在HV控制器中的数据缓存器420中。之后,响应于来自HV控制的CAS TBM C',从TBM输出数据C。
HV控制器继续向TBM发出CAS TBM D',这时HV控制观察到来自系统的CAS sys M命令。作为响应,HV控制器向TBM发出DES/NOP命令,以暂停TBM和MM之间的数据传输。因此,FPGA页面输入(Pg-in)输出暂停,如FPGA Pg-in输出中的数据B和数据C之间的间隙所示,并且在MM输入处接收到系统数据M(Sys)。之后,在从系统中观察到CAS系统M+1和稍后的CAS系统M+2之后,HV控制器继续向TBM发出CAS TBM E'。作为响应,HV控制器发出两个连续的DES/NOP命令,来暂停TBM输出数据到HV控制器。结果,在数据E和数据F之间没有来自TBM的数据输出,并且在数据C和数据D之间的没有从HV控制驱动到MM的数据,因而在从HV控制到MM的输出中留下间隙,以允许MM接收系统数据M+1和M+2(Sys)。
在某些实施例中,HV控制330还被配置为在HV-DRAM 310和HV-闪存320之间执行阴影数据传输操作。例如,当系统命令针对的DRAM的地址是已经被预编程为要求从HV-闪存320传送数据的地址时,HV控制330将执行这样的传送,以使得系统能够适当地访问该预编程的地址。
在某些实施例中,存储器总线上的HVDIMM是服从装置,因为除了通过异步(例如,I2C)接口外,其不发起与系统的通信。因此,系统可以经由存储器总线发送命令,但是当向HV驱动器250发送中断时,HVDIMM 300经由SM总线进行响应,以指示完成on-DIMM数据传输。HV驱动器250通常花费几微秒来处理这些信号。因此,系统100的性能由于异步接口信号的相对长的处理时间而受到影响。因此,经由异步接口通知系统会导致数百微秒或更长的读取延迟。
为了避免与异步接口相关联的读取延迟,可以实施轮询协议,这允许系统周期性地监控HVDIMM中的数据传输的准备状态。然而,轮询准备状态可能需要多次尝试,并且每个轮询活动需要由系统存储器控制器调度,这导致用于常规内存访问活动的有价值的主内存带宽减少。
在某些实施例中,HV控制330中的寄存器440包括用于存储数据传输状态信息的状态寄存器,并且系统(例如,HV驱动器250)针对每个存储读取操作执行“预测和校正”方法1200,如图12所示。在某些实施例中,HV驱动器250保留用于状态寄存器的内存空间(即,状态寄存器空间),该空间是存在于系统100的系统地址空间中的虚拟DRAM地址空间,尽管不存在与之相关的实际的DRAM。HV驱动器启动到状态寄存器空间的写入或读取命令,用于写入状态寄存器或从状态寄存器中读取。
在某些实施例中,预测和校正方法1200包括:发起NV访问请求(1210)。这可以通过例如使用以上参考图7讨论的处理703或者涉及将数据传送出(或传送入)HV-闪存320的任何其他操作来发起页面错误操作来完成。HV驱动器330然后基于历史数据并基于从HV-闪存320传送的数据的大小,预测HVDIMM执行数据传送可能花费的时间段。HV驱动器在发起寻址到状态寄存器空间的存储器读取操作之前等待一段时间(1220),以读取状态寄存器中的信息(1230),并确定来自状态寄存器的信息是否指示来自HV-闪存320的数据已缓存在缓存存储器340中(1240)。如果来自状态寄存器的信息指示数据已被缓存,则HV驱动器250发起写入操作,以使缓存的数据写入HV-DRAM(1250)。否则,在再次读取状态寄存器之前,HV驱动器250再等待一段时间,并重复上述处理。可以基于来自状态寄存器的信息确定额外的时间量。
在某些实施例中,响应于接收到NV访问请求,HV控制330接收并解码与NV访问请求相关联的数据,该数据包括关于要从HV-闪存320读取的存储数据的位置的信息。然后,HV控制330发出闪存读取命令,以将存储数据从闪存传送到缓存存储器340,监控数据传送,并相应地更新状态寄存器中的信息。
在某些实施例中,HV控制330中的寄存器440还包括NV访问队列寄存器,或者状态寄存器可用作NV访问队列寄存器。HV控制330使用NV访问队列寄存器将来自系统的NV访问请求排队,并且计算在NV访问队列寄存器中排队的每个NV访问请求的“估计等待时间”。基于历史数据传输速率和先前排队的NV访问请求的数量,周期性地更新估计的等待时间。当从闪存到缓存存储器340的数据传输完成时,在状态寄存器中设置就绪位,并且将相应的“估计的等待时间”更新为零。
例如,如果由NV访问请求所请求的存储数据的大小为1MB,则HV控制器在开始数据传输时启动定时器。测量移动1MB存储数据的多个10KB块中的每一块需要花费多长时间,并计算移动存储数据的10KB块的平均时间(例如,1微秒或μsec)。基于每次数据传输剩下多少个10kB块,控制器计算数据传输的剩余时间,并更新存储估计的等待时间的状态寄存器,以反映当存储数据移动到缓存存储器340时的剩余时间。
例如,如果存在4个排队命令,即,当前正在传送其存储数据的第一命令、用于移动1MB存储数据的第二命令、用于移动2MB存储数据的第三命令以及用于移动1MB存储数据的第四命令。假设当前的数据传输还剩下约10秒要完成,则这些命令的估计等待时间是:
第一命令(在队列0中)-10μsec,
第二命令(在队列1中)-110μsec,
第三命令(在队列2)-310μsec,以及
第四命令(在队列3中)-410μsec。
这些估计的等待时间与相应的就绪位一起存储在状态寄存器中,并被周期性地(例如,每10μsec)更新。在某些实施例中,每个相应命令的状态数据由一组状态位表示,该组状态位包括指示相关数据传送完成的就绪位(例如,位0)以及存储与相应的命令相关联的进一步状态信息的多个信息位,例如,要完成的相应估计等待时间,如图13所示,其示出了n组状态寄存器1300-1、1300-2、...、1300-n,每个状态寄存器用于存储相应排队命令的状态位和关联的ECC码。系统基于数据未被读出的排队或未完成命令的顺序知道每组状态寄存器代表哪个排队命令。当系统读取状态寄存器并且设置就绪位时,系统可以继续以从缓存存储器340读取数据。如果未设置就绪位,则系统可以读取“估计的等待时间”,并且在发出读取命令以读取存储数据或重新读取状态寄存器之前等待该时间段。
因此,在上述示例中,如果系统在20μsec之后读出缓存的存储数据,则与第一命令相关联的数据应当准备好并且读出,而每个其他排队的命令以以下状态信息在队列中向前移动:
第二命令(在队列0中)-90μsec,
第三命令(在队列1)-290μsec,
第四命令(在队列2)-390μsec,以及
第五命令(在队列3)-xxx。
如果系统有500μsec没有读出缓存存储数据,则等待时间可以是(在500μsec之后)
第一命令(在队列0中)-0μsec(数据就绪,并且设置就绪位),
第二命令(在队列1中)-0μsec(数据就绪,并且设置就绪位),
第三命令(在队列2中)-0μsec(数据就绪,并且设置就绪位),以及
第四命令(在队列3中)-0μsec(数据就绪,并且设置就绪位)
因此,系统可以累积数据读出操作,并且基于来自状态寄存器的信息一起执行全部这些操作。
在某些实施例中,每组状态寄存器1200还包括用于存储与相应的状态数据相关联的ECC码的ECC位。许多现代个人计算机以及大多数中高端工作站和服务器系统中使用的具有ECC能力的存储器控制器可以使用每个数据字附带的ECC码,来检测和纠正每64位数据字(即,总线传输单位)的单位错误,并检测(但不校正)每64位数据字的两位错误。存储器控制器可能会丢弃状态数据,除非正确检出ECC。
在某些实施例中,为了产生用于状态数据的正确的ECC,HV驱动器250使得存储器控制器将各种预定义的状态码写入覆盖大部分或所有可能的状态情况的HVDIMM 300中。系统存储器控制器在将预定义状态码写入分配给HV控制330的内部存储器的地址之前将声明正确的ECC码。HV控制330将每个预定义的64位状态码连同其ECC字节一起存储到HV控制330中的寄存器或本地存储器中,并使用预定义的状态码及其ECC码更新状态寄存器。例如,如果HV控制330需要用状态信息“在完成之前的估计等待时间90μsec”更新用于排队的NV访问请求的一组状态寄存器,则HV控制330将在其本地存储器中查找与该状态信息对应的预定义的状态码,并用预定义的状态码及其相关联的ECC码更新这组状态寄存器。当系统通过读取状态寄存器来请求NV访问请求的状态时,HV控制330可以简单地从状态寄存器中读取预定义的状态码以及正确的ECC,并将其发送到系统。
在某些实施例中,还可以使用状态寄存器来存储其他状态信息,例如,HVDIMM上的“闪存的健康”、闪存存储器的剩余寿命、在操作期间收集的任何统计数据等。
因此,系统可以避免实施轮询协议,并使用动态同步通信接口来经由存储器总线从HVDIMM 300获得状态信息。系统还可以基于从状态寄存器获得的信息有效地动态调度CPU活动(进程队列)。
在某些实施例中,存储器控制器在插槽(CPU)、信道和存储排之间执行ECC编码/解码和交织,以提高错误处理能力。存储器控制器在地址和数据上执行这些操作。因此,系统地址和数据(包括高速缓存)与DIMM地址空间有一对一的映射关系。然而,任何特定的映射通常仅对具有特定版本的BIOS和内存参考代码(MRC)的特定版本的服务器平台有效。一些计算机中的内存参考代码(或者MRC)确定如何对计算机的存储器(RAM)进行读取和写入,并且正确地调整存储器定时算法,以有助于用户或计算机硬件设置的任何修改。换言之,甚至对于同一平台,如果安装了新版本的BIOS或MRC,转换映射也可能会失效。因此,对于HVDIMM300,设计者需要针对特定版本的服务器平台和BIOS/MRC,或者需要找到一种方法来解决与服务器平台的不确定性和BIOS/MRC变化相关的问题。对于支持DRAM主存储器空间以及存储空间的HVDIMM,这个问题变得更加重要,因为这两个地址空间并不总是在存储器表上共存。
在某些实施例中,系统使用存储器映射I/O(MMIO)访问协议来访问HVDIMM 300的存储空间,允许系统区分系统地址空间和存储空间。这个MMIO空间可能不在传统的MMIO系统地址空间中。例如,在3.75GB-4GB系统地址中定义了非均匀内存访问(NUMA)。由于系统地址解码器提供比主存储器地址解码更高的优先级,以针对该范围的传统MMIO解码,因此在传统的MMIO空间中定义HVDIMM 300的MMIO空间,可能无法正确工作。因此,在某些实施例中,在主存储器空间中定义用于HVDIMM 300的MMIO空间,并且因此不同于传统的MMIO空间。为此,用于HVDIMM 300的MMIO空间在本文称为伪MMIO(PMMIO)空间。
在某些实施例中,为了能够经由存储器总线访问HVDIMM中的存储空间,系统了解哪个系统地址空间实际映射到闪存存储器空间620,并且将这些存储器空间标记为HVDIMM的PMMIO空间。
在某些实施例中,并非开发通用映射表以包含所有不同版本(即,平台版本、BIOS版本和MRC版本)的映射表,而是开发自动配置的映射表,以提供在包含一个或多个HVDIMM的特定系统的系统地址(实际地址)与DIMM地址之间的关系。
自动配置的映射表包含与系统地址相关联的DIMM和存储排号。该映射表可以是映射或实际查找表的一组算术表达式,并且建立在系统操作时地址关系(一对一)不改变的事实上。这也意味着该表可以在启动和初始化期间配置,并且在整个操作期间有效。
在某些实施例中,采用以下程序来配置映射或查找表:
·设置DIMM填充规则;
·在on-DIMM串行存在检测(SPD)装置中,将大于实际DRAM密度的DIMM密度编码(例如,对于具有8GB DRAM密度的DIMM,SPD被配置为16GB DIMM);
·读取BIOS/MRC寄存器,用于交错偏移配置;
·将DIMM地址反向映射到系统地址;并且
·将不存在的DRAM空间的地址空间标记为PMMIO操作的保留空间,从而创建NV访问地址空间。
由于插槽、信道和列交织,该保留的空间不可能是连续的系统地址空间。HV驱动器250将该保留的地址空间用作特定HVDIMM的PMMIO空间。HV控制330将以NV访问地址空间为目标的任何地址识别为MMIO命令访问,并将相关联的数据解码为MMIO命令。
DIMM上的NV访问空间可用于支持在HV-闪存与系统之间的任何数据传输。这也有助于支持在主存储器DRAM和闪存之间的DIMM数据传输,而无需通过CPU中的缓存器。这可以通过建立将系统地址与实际的HV-闪存位置一起映射到关联的DIMM位置的内存关联表来完成。关联表可以存储为一个查找表260,如图2所示,并且可由HV驱动器250访问。
例如,如图14所示,插槽(CPU)0、信道0、VDIMM 0上的DRAM的系统地址被反向映射到12GB-13GB和16GB-17GB。同一HVDIMM的PMMIO空间被映射到系统地址空间20GB-21GB和24GB-25GB。系统可以使这些地址空间关联,以便可以在PMMIO空间20GB-21GB/24GB-25GB和DRAM空间12GB-13GB/16GB-17GB之间传输数据。
这种关联映射的一种有效使用是主存储器数据(DRAM)交换空间可以嵌入同一DIMM上的HVDIMM中,并且数据交换可以直接进行,而不需要CPU中的缓存器的任何参与。这还允许通过执行on-DIMM直接数据交易来交换(例如,页面输入或页面输出)非常大的数据大小,而没有开销,如上面参考图7至图10所讨论的。
因此,可以有效地使用HVDIMM 300中的存储器,而不限于特定的服务器平台或BIOS或MRC。
Claims (20)
1.一种用在计算机系统中的存储器模块,所述计算机系统包括耦接到存储器信道的存储器控制器,所述存储器信道包括数据总线和控制/地址(C/A)总线,所述存储器模块包括:
易失性存储器子系统,耦接到所述存储器信道,所述易失性存储器子系统包括双倍数据速率动态随机访问存储器;
非易失性(NV)存储器子系统;
缓存存储器,包括第一缓存存储器和第二缓存存储器;以及
模块控制装置,耦接到所述易失性存储器子系统、所述非易失性存储器子系统、所述缓存存储器以及所述存储器信道,其中,所述模块控制装置经配置响应于经由所述存储器信道接收的NV访问请求,将第一数据从所述非易失性存储器子系统传输到所述第一缓存存储器并且将第二数据从所述易失性存储器子系统传输到所述第二缓存存储器,所述模块控制装置进一步经配置响应经由所述C/A总线接收的虚拟写入存储器命令,使所述第一数据的至少一部分传输到所述易失性存储器子系统,其中所述易失性存储器子系统经配置由所述C/A总线接收所述虚拟写入存储器命令并响应于所述虚拟写入存储器命令而接收所述第一数据的至少一部分,其中所述虚拟写入存储器命令与所述NV访问请求相关。
2.根据权利要求1所述的存储器模块,其中,所述模块控制装置经配置将所述第二数据从所述第二缓存存储器传输到所述非易失性存储器子系统,并且其中,在将所述第二数据从所述第二缓存存储器传输到所述非易失性存储器子系统的同时,所述模块控制装置进一步经配置对存储在所述第一缓存存储器中的所述第一数据执行纠错。
3.根据权利要求1所述的存储器模块,其中,所述NV访问请求包括经由所述C/A总线接收的一组C/A信号和经由所述数据总线接收的一组数据信号,所述一组数据信号包括关于在所述非易失性存储器子系统中的一个或多个位置的信息。
4.根据权利要求1所述的存储器模块,其中,所述模块控制装置包括能够由所述计算机系统经由所述存储器信道访问的状态寄存器,在所述状态寄存器内存储有用于所述NV访问请求的状态位,并且其中,所述模块控制装置响应于从所述存储器控制器接收的读取命令和读取地址,经由所述存储器信道将所述状态位提供给所述存储器控制器,所述读取地址在分配给所述状态寄存器的地址空间中。
5.根据权利要求4所述的存储器模块,其中,所述状态寄存器还存储与所述状态位相关联的ECC码,并且其中,所述模块控制装置将所述ECC码与所述状态位一起提供。
6.根据权利要求4所述的存储器模块,其中,所述状态位包括关于所述第一数据存储到所述第一缓存存储器中的估计等待时间的信息。
7.根据权利要求1所述的存储器模块,还包括以比所述易失性存储器子系统的存储器密度更大的存储器密度编码的串行存在检测装置,从而允许所述计算机系统创建在所述易失性存储器子系统的存储器地址空间之外的NV访问地址空间,其中,所述NV访问请求包括所述NV访问地址空间中的地址。
8.一种用在计算机系统中的存储器模块,所述计算机系统包括耦接到存储器信道的存储器控制器,所述存储器信道包括数据总线和控制/地址(C/A)总线,所述存储器模块包括:
易失性存储器子系统,耦接到所述存储器信道,所述易失性存储器子系统包括双倍数据速率动态随机访问存储器;
非易失性(NV)存储器子系统;
缓存存储器;以及
模块控制装置,耦接到所述易失性存储器子系统、所述非易失性存储器子系统、所述缓存存储器以及所述存储器信道,其中,所述模块控制经配置响应于经由所述存储器信道接收的NV访问请求,将第一数据从所述非易失性存储器子系统传输到所述缓存存储器,所述模块控制装置进一步经配置响应于经由所述C/A总线接收的虚拟写入存储器命令,使所述第一数据的至少一部分传输到所述易失性存储器子系统中;其中所述易失性存储器子系统经配置由所述C/A总线接收所述虚拟写入存储器命令并响应于所述虚拟写入存储器命令而接收所述第一数据的至少一部分,其中所述虚拟写入存储器命令与所述NV访问请求相关;
其中,所述模块控制装置包括能够由所述计算机系统经由所述存储器信道访问的状态寄存器,在所述状态寄存器内存储有用于所述NV访问请求的状态位,并且其中,所述模块控制装置响应于从所述存储器控制器接收的读取命令和读取地址,经由所述存储器信道将所述状态位提供给所述存储器控制器,所述读取地址在分配给所述状态寄存器的地址空间中。
9.根据权利要求8所述的存储器模块,其中,所述状态寄存器还存储与所述状态位相关联的ECC码,并且其中,所述模块控制装置将所述ECC码与所述状态位一起提供。
10.根据权利要求8所述的存储器模块,其中,所述状态位包括关于所述第一数据存储到所述缓存存储器中的估计等待时间的信息。
11.一种操作计算机系统中的存储器模块的方法,所述计算机系统包括经由存储器信道耦接到所述存储器模块的存储器控制器,所述存储器信道包括数据总线和控制/地址(C/A)总线,所述存储器模块包括易失性存储器子系统和非易失性(NV)存储器子系统,所述易失性存储器子系统包括双倍数据速率动态随机访问存储器,所述方法包括:
经由所述存储器信道接收NV访问请求;
响应于所述NV访问请求,从所述非易失性存储器子系统读取第一数据,并从所述易失性存储器子系统读取第二数据;
将第一数据写入第一缓存存储器;
将第二数据写入第二缓存存储器;
通过所述C/A总线接收虚拟写入存储器命令;其中所述虚拟写入存储器命令与所述NV访问请求相关;并且
响应于所述虚拟写入存储器命令,使所述第一数据的至少一部分传输到所述易失性存储器子系统中,其中所述易失性存储器子系统经配置由所述C/A总线接收所述虚拟写入存储器命令并响应于所述虚拟写入存储器命令而接收所述第一数据的至少一部分。
12.根据权利要求11所述的方法,其中,在所述第一数据的至少一部分写入所述第一缓存存储器中的同时,所述第二数据的至少一部分写入所述第二缓存存储器中。
13.根据权利要求11所述的方法,还包括:
将所述第二数据从所述第二缓存存储器传输到所述非易失性存储器子系统,并且在将所述第二数据的至少一部分从所述第二缓存存储器传输到所述非易失性存储器子系统的同时,对存储在所述第一缓存存储器中的所述第一数据执行纠错。
14.根据权利要求11所述的方法,其中,接收所述NV访问请求包括经由所述C/A总线接收一组C/A信号和经由所述数据总线接收一组数据信号,所述一组数据信号包括关于在所述非易失性存储器子系统中的一个或多个位置的信息。
15.根据权利要求11所述的方法,还包括存储用于所述NV访问请求的状态信息,并响应于用于读取所述状态信息的读取命令,并且经由所述存储器信道向所述存储器控制器提供所述状态信息。
16.根据权利要求15所述的方法,还包括存储与所述状态信息相关联的ECC码,并且将所述ECC码与所述状态信息一起提供。
17.根据权利要求15所述的方法,其中,所述状态信息包括关于在所述第一数据被写入所述易失性存储器子系统内之前将所述第一数据存储到所述第一缓存存储器中的估计等待时间的信息。
18.一种操作计算机系统中的存储器模块的方法,所述计算机系统包括经由存储器信道耦接到所述存储器模块的存储器控制器,所述存储器信道包括数据总线和控制/地址(C/A)总线,所述存储器模块包括易失性存储器子系统和非易失性存储器子系统,所述方法包括:
经由所述存储器信道接收NV访问请求;
响应于所述NV访问请求,从所述非易失性存储器子系统读取第一数据;
将第一数据写入缓存存储器;
存储用于所述NV访问请求的状态信息;
经由所述控制/地址(C/A)总线接收状态读取命令和读取地址;
响应于接收到所述状态读取命令,经由所述存储器信道向所述存储器控制器提供所述状态信息;
经由所述C/A总线接收虚拟写入存储器命令;其中所述虚拟写入存储器命令与所述NV访问请求相关;并且
响应于所述虚拟写入存储器命令,使所述第一数据的至少一部分传输到所述易失性存储器子系统中,其中所述易失性存储器子系统经配置由所述C/A总线接收所述虚拟写入存储器命令并响应于所述虚拟写入存储器命令而接收所述第一数据的至少一部分。
19.根据权利要求18所述的方法,还包括存储与所述状态信息相关联的ECC码,并且将所述ECC码与所述状态信息一起提供。
20.根据权利要求18所述的方法,其中,所述状态信息包括关于在所述第一数据被写入所述易失性存储器子系统内之前将所述第一数据存储到所述缓存存储器中的估计等待时间的信息。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562150272P | 2015-04-20 | 2015-04-20 | |
US62/150,272 | 2015-04-20 | ||
US14/706,873 US10198350B2 (en) | 2011-07-28 | 2015-05-07 | Memory module having volatile and non-volatile memory subsystems and method of operation |
US14/706,873 | 2015-05-07 | ||
PCT/US2016/026874 WO2016171934A1 (en) | 2015-04-20 | 2016-04-11 | Memory module and system and method of operation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107710175A CN107710175A (zh) | 2018-02-16 |
CN107710175B true CN107710175B (zh) | 2021-12-14 |
Family
ID=57144216
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680036145.4A Active CN107710175B (zh) | 2015-04-20 | 2016-04-11 | 存储器模块以及操作系统和方法 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP3286654B1 (zh) |
CN (1) | CN107710175B (zh) |
WO (1) | WO2016171934A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102505913B1 (ko) * | 2018-04-04 | 2023-03-07 | 삼성전자주식회사 | 메모리 모듈 및 메모리 모듈을 포함하는 메모리 시스템 |
KR102549584B1 (ko) * | 2018-03-27 | 2023-06-30 | 삼성전자주식회사 | 메모리 모듈을 포함하는 메모리 시스템, 메모리 모듈, 그리고 메모리 모듈의 동작 방법 |
US10984881B1 (en) * | 2019-12-13 | 2021-04-20 | Micron Technology, Inc. | Memory sub-system self-testing operations |
CN111783378B (zh) * | 2020-06-30 | 2022-05-17 | 迈普通信技术股份有限公司 | 数据处理方法及fpga |
CN116368473A (zh) * | 2020-12-24 | 2023-06-30 | 阿里巴巴集团控股有限公司 | 兼具存储处理和属性数据管理的混合存储器管理系统和方法 |
CN114756487A (zh) * | 2022-04-22 | 2022-07-15 | 电子科技大学 | 一种串行eeprom的型号识别及控制器设计方法 |
CN114936173B (zh) * | 2022-06-16 | 2023-03-31 | 科东(广州)软件科技有限公司 | 一种eMMC器件的读写方法、装置、设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101563729A (zh) * | 2006-12-20 | 2009-10-21 | 莫塞德技术公司 | 具有易失性和非易失性存储器的混合固态存储器系统 |
CN103890688A (zh) * | 2011-07-28 | 2014-06-25 | 奈特力斯公司 | 一种flash-dram混合存储器模块 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4230122B2 (ja) * | 2001-03-30 | 2009-02-25 | 株式会社ルネサステクノロジ | マイクロコンピュータ、書込み方法及び消去方法 |
US7301831B2 (en) * | 2004-09-15 | 2007-11-27 | Rambus Inc. | Memory systems with variable delays for write data signals |
US7562271B2 (en) * | 2005-09-26 | 2009-07-14 | Rambus Inc. | Memory system topologies including a buffer device and an integrated circuit memory device |
US7716411B2 (en) * | 2006-06-07 | 2010-05-11 | Microsoft Corporation | Hybrid memory device with single interface |
US8301833B1 (en) * | 2007-06-01 | 2012-10-30 | Netlist, Inc. | Non-volatile memory module |
US9129674B2 (en) | 2013-06-27 | 2015-09-08 | Intel Corporation | Hybrid memory device |
-
2016
- 2016-04-11 CN CN201680036145.4A patent/CN107710175B/zh active Active
- 2016-04-11 EP EP16783594.1A patent/EP3286654B1/en active Active
- 2016-04-11 WO PCT/US2016/026874 patent/WO2016171934A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101563729A (zh) * | 2006-12-20 | 2009-10-21 | 莫塞德技术公司 | 具有易失性和非易失性存储器的混合固态存储器系统 |
CN103890688A (zh) * | 2011-07-28 | 2014-06-25 | 奈特力斯公司 | 一种flash-dram混合存储器模块 |
Also Published As
Publication number | Publication date |
---|---|
WO2016171934A1 (en) | 2016-10-27 |
EP3286654A4 (en) | 2019-01-23 |
CN107710175A (zh) | 2018-02-16 |
EP3286654A1 (en) | 2018-02-28 |
EP3286654B1 (en) | 2021-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10198350B2 (en) | Memory module having volatile and non-volatile memory subsystems and method of operation | |
US10248328B2 (en) | Direct data move between DRAM and storage on a memory module | |
CN107710175B (zh) | 存储器模块以及操作系统和方法 | |
US10380022B2 (en) | Hybrid memory module and system and method of operating the same | |
US11243886B2 (en) | Hybrid memory module and system and method of operating the same | |
US9009580B2 (en) | System and method for selective error checking | |
US11379381B2 (en) | Main memory device having heterogeneous memories, computer system including the same, and data management method thereof | |
US10860244B2 (en) | Method and apparatus for multi-level memory early page demotion | |
US11663121B2 (en) | Memory module having volatile and non-volatile memory subsystems and method of operation | |
US20230214326A1 (en) | Computer Memory Expansion Device and Method of Operation | |
US11561715B2 (en) | Method and apparatus for presearching stored data | |
US12026397B2 (en) | Hybrid memory module having a volatile memory subsystem and a module controller configurable to provide data to accompany externally sourced data strobes to the volatile memory subsystem | |
US10769074B2 (en) | Computer memory content movement | |
CN115543861A (zh) | 管理地址映射的方法和近存储器处理双列直插式存储器模块 | |
JP5614337B2 (ja) | メモリの制御方法、メモリの制御回路、記憶装置、及び電子機器 |
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 |