CN114265794A - 具有数据缓存功能的混合存储器模块、数据缓存器和方法 - Google Patents
具有数据缓存功能的混合存储器模块、数据缓存器和方法 Download PDFInfo
- Publication number
- CN114265794A CN114265794A CN202111088557.1A CN202111088557A CN114265794A CN 114265794 A CN114265794 A CN 114265794A CN 202111088557 A CN202111088557 A CN 202111088557A CN 114265794 A CN114265794 A CN 114265794A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- path
- write
- strobe
- 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.)
- Pending
Links
Images
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
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- 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/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/21—Employing a record carrier using a specific recording technology
- G06F2212/217—Hybrid disk, e.g. using both magnetic and solid state storage devices
-
- 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/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
-
- 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/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Dram (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请提供的一种可在计算机系统中操作的存储器模块、数据缓存器和方法。存储器模块包括易失性存储器子系统和耦合到易失性存储器子系统的模块控制器。易失性存储器子系统可用于耦合到包括数据总线的存储器通道,并且包括动态随机存取存储器(DRAM)设备。存储器模块允许独立地控制DRAM装置和数据总线之间的选通路径和数据路径,并且可用于执行存储器写入操作和存储器读取操作,在存储器写入操作期间,写入数据与经由DRAM装置和数据总线之间的第一选通路径传输的写入选通一起被提供给易失性存储器子系统,在存储器读取操作期间,来自易失性存储器子系统的读取数据与经由模块控制器和数据总线之间的第二选通路径传输的读取选通一起被输出到数据总线。
Description
技术领域
本申请一般涉及存储器模块,特别涉及具有数据缓存功能的混合存储器模块以及操作该混合存储器模块的系统和方法。
背景技术
诸如网络服务器、个人计算机、PDA、移动电话、视频游戏、科学仪器、工业机器人、医疗电子器件等的计算机系统在很大程度上依赖于其系统或主存储器的容量和吞吐量及其为了最佳性能而对其访问的速度。目前,动态随机访问存储器(DRAM)通常用作系统存储器。DRAM是一种将每一位数据存储在集成电路中的独立电容器中的随机访问存储器。电容器可以被充电或放电,以便这两种状态用来表示一个比特的两个值,通常称为0和1。由于电容器泄漏电荷,所以信息最终会消失,除非周期性地刷新电容器电荷。由于这个刷新要求,所以与SRAM和其他静态存储器截然相反,这是动态存储器。
DRAM的结构简单性允许DRAM芯片达到非常高的密度,因为数十亿个晶体管和电容器对可以装配在单个存储器芯片上。另一方面,DRAM是易失性存储器,当去除电源时,会迅速丢失数据。与作为可被电擦除和重新编程的一种电子非易失性计算机存储介质的闪存相比,DRAM也昂贵得多。例如,高密度DRAM的成本可以是高性能闪存器件的20倍。而且,闪存芯片可具有比DRAM芯片更高的密度,这使得相同尺寸的存储器模块可以打包更多,以达到远远更大的存储容量。
发明内容
根据一些实施例,包括DRAM装置的存储器模块可在计算机系统中操作,所述计算机系统包括耦合到存储器通道的存储器控制器,所述存储器通道包括数据总线和控制/地址C/A总线。所述存储器模块允许独立控制DRAM装置和数据总线之间的数据路径和选通路径,以促进各种操作之间的平滑过渡。
在一些实施例中,存储器模块包括可用于耦合到所述存储器通道的易失性存储器子系统,所述易失性存储器子系统包括动态随机存取存储器DRAM装置、耦合到所述易失性存储器子系统的模块控制器、所述DRAM装置和所述数据总线之间的第一选通路径、以及所述模块控制器和所述数据总线之间的第二选通路径。所述存储器模块可用于执行存储器写入操作和存储器读取操作,在所述存储器写入操作期间,来自所述存储器控制器的写入数据与经由所述第一选通路径传输的写入选通一起被提供给所述易失性存储器子系统,在所述存储器读取操作期间,来自所述易失性存储器子系统的读取数据与经由所述第二选通路径传输的读取选通一起被输出到所述数据总线。
在一些实施例中,所述存储器模块还包括耦合到所述模块控制器的非易失性NV存储器子系统。所述存储器模块可用于执行数据传输写入操作,在所述数据传输写入操作期间,来自所述NV存储器子系统的NV数据被传输到所述易失性存储器子系统。所述NV数据与经由所述第一选通路径传输的NV写入选通一起被提供给所述易失性存储器子系统。在一些实施例中,所述易失性存储器子系统可用于响应于经由所述C/A总线从所述存储器控制器接收虚拟写入存储器命令而根据所述NV写入选通来接收所述NV数据。
在一些实施例中,所述存储器模块还可用于执行NV写入操作,在所述NV写入操作期间,来自所述存储器控制器的NV写入数据被写入所述NV存储器子系统。所述NV写入数据与经由所述第二选通路径传输的NV写入选通一起被提供给所述模块控制器。
在一些实施例中,所述存储器模块还可用于执行NV读取操作,在所述NV读取操作期间,来自所述非易失性存储器子系统的NV读取数据与经由所述第二选通路径传输的NV读取选通一起被输出到所述数据总线。
在一些实施例中,所述存储器模块还可用于执行数据传输读取操作,在所述数据传输读取操作期间,来自所述易失性存储器子系统的DRAM数据被传输到所述NV存储器子系统。所述DRAM数据被提供给所述模块控制器并且与经由所述第二选通路径传输的读取选通一起被输出到所述数据总线。
在一些实施例中,所述存储器模块还包括用于传输所述写入数据和所述读取数据的数据路径,并且所述第一选通路径可用于使其自身被启用或禁用与所述数据路径被启用或禁用无关。
在一些实施例中,所述易失性存储器子系统还包括第一数据缓存器和第二数据缓存器,所述第一数据缓存器可用于提供所述第一选通路径,所述第二数据缓存器可用于提供所述第二选通路径和所述数据路径。
在一些实施例中,所述DRAM装置被设置在一个或多个存储排中,其中,所述易失性存储器子系统还包括耦合在所述DRAM装置的相应部分与所述数据总线的相应段之间的多个数据缓存器。所述多个数据缓存器的每个相应数据缓存器可用于提供相应组的所述数据路径、相应组的所述第一选通路径以及相应组的所述第二选通路径。
在一些实施例中,所述易失性存储器子系统还包括寄存器控制装置,所述寄存器控制装置用于对来自所述C/A总线的C/A信号进行寄存,并且所述相应的数据缓存器可用于响应于从所述寄存器控制装置和所述模块控制器中的一个或两个接收的数据缓存器控制信号而使能所述相应组的所述数据路径、所述相应组的所述第一选通路径和所述相应组的所述第二选通路径中的一些或全部。
在一些实施例中,数据缓存器包括可用于传输读取或写入数据的数据路径、可用于传输第一读取或写入选通的第一选通路径、可用于传输第二读取或写入选通的第二选通路径、以及用于响应于由所述数据缓存器接收的控制信号来控制所述数据路径、所述第一选通路径和所述第二选通路径的控制电路。所述第一选通路径可用于使其自身被所述控制电路的启用或禁用与所述数据路径被所述控制电路的启用或禁用无关。
在一些实施例中,所述第一选通路径可用于使其自身被所述控制电路的启用或禁用与所述第二选通路径被所述控制电路的启用或禁用无关。
在一些实施例中,所述控制电路可用于:响应于包括第一命令的控制信号,启用所述数据路径以传输写入数据,以及启用所述第一选通路径和所述第二选通路径中的至少一个以传输写入选通;响应于包括第二命令的控制信号,启用所述第一选通路径以传输附加写入选通,以及禁用所述第二选通路径和所述数据路径;和响应于包括第三命令的控制信号,启用所述数据路径以传输读取数据,启用所述第二选通路径以传输读取选通,以及禁用第一选通路径。
在一些实施例中,所述第一选通路径在第一集成电路中,所述第二选通路径和所述数据路径在第二集成电路中。
在一些实施例中,所述第一集成电路和所述第二集成电路是相同的。
在一些实施例中,所述控制电路包括所述第一集成电路中的第一控制电路和所述第二集成电路中的第二控制电路,其中,所述控制信号包括由所述第一集成电路接收的第一组控制信号和由所述第二集成电路接收的第二组控制信号。
在一些实施例中,方法由可在计算机系统中操作的存储器模块执行。所述计算机系统包括耦合到存储器通道的存储器控制器,所述存储器通道包括数据总线和控制/地址C/A总线,所述存储器模块包括耦合到所述存储器通道的易失性存储器子系统和耦合到所述易失性存储器子系统的模块控制器,所述易失性存储器子系统包括动态随机存取存储器DRAM装置。该方法包括:执行存储器写入操作,包括经由所述数据总线从所述存储器控制器接收写入数据和写入选通,以及将所述写入数据和所述写入选通提供给所述易失性存储器子系统;和执行存储器读取操作,包括将来自所述易失性存储器子系统的读取数据与来自所述模块控制器的读取选通一起输出到所述数据总线。
在一些实施例中,所述存储器模块还包括耦合到所述模块控制器的非易失性NV存储器子系统,并且该方法还包括:执行数据传输写入操作,包括将NV数据从所述NV存储器子系统传输到所述模块控制器;从所述存储器控制器接收NV写入选通;以及将所述NV数据与所述NV写入选通一起提供给所述易失性存储器子系统。
在一些实施例中,该方法还包括在所述易失性存储器子系统处:经由所述C/A总线从所述存储器控制器接收虚拟写入存储器命令,以及响应于经由所述C/A总线从所述存储器控制器接收所述虚拟写入存储器命令,根据所述NV写入选通来接收所述NV数据。
在一些实施例中,该方法还包括执行数据传输读取操作,包括从所述易失性存储器子系统读取DRAM数据,将所述DRAM数据提供给所述模块控制器,以及将所述DRAM数据与来自所述模块控制器的读取选通一起输出到所述数据总线。
附图说明
图1是根据某些实施例的计算机或服务器系统的示意图;
图2是根据某些实施例的计算机或服务器系统的软件栈的示意图;
图3是根据某些实施例的具有易失性存储器子系统(DRAM)和非易失性存储器子系统(NVM)两者的存储器模块的示意图;
图4是根据某些实施例的存储器模块中的模块控制器的示意图;
图5A是根据一些实施例的存储器模块中的易失性存储器子系统的框图;
图5B是根据一些实施例的存储器模块中的数据缓存器的示意图;
图6示出了根据某些实施例的存储器模块的物理存储器地址空间的示意图;
图7是根据某些实施例的响应于计算机或服务器系统中的页面错误的数据传输的流程图;
图8示出了根据某些实施例的页面输入数据流与正常存储器访问的交织以避免数据访问冲突的时序图;
图9A是根据一些实施例的存储器模块中连续写入周期的理想操作的时序图;
图9B示出了根据一些实施例的与存储器模块中的各种数据传输相关联的事件;
图10A示出了根据一些实施例的存储器模块的一部分的示意图,该存储器模块包括耦合到数据总线的段中的数据/选通信号线以及耦合到模块数据线和模块选通信号线的数据缓存器;
图10B示出了根据一些实施例的系统存储器写入操作(DRAM-WR)和系统发起的非易失性(NV)写入操作(SDxWR);
图10C示出了根据一些实施例的从NVM到DRAM(DDxWR)的模块内数据传输期间的DQ和DQS信号路径;
图10D示出了根据一些实施例的系统存储器读取操作(DRAM-RD)和系统发起的NV读取操作(SDxRD);
图10E示出了根据一些实施例的从DRAM到NVM(DDxRD)的模块内数据传输期间的DQ和DQS信号路径;
图11A示出了根据一些实施例的存储器模块中的数据缓存器的双缓存器实现;
图11B和11C分别是根据一些实施例的在数据缓存器中实现的第一和第二数据缓存器电路的示意图;
图11D是根据一些实施例的在集成电路中实现的数据缓存器的示意图;
图12是根据一些实施例的用于在存储器模块中训练数据缓存器的过程的流程图。
具体实施方式
如图1所示,根据某些实施例的计算机或服务器系统(计算机系统)100包括中央处理单元(CPU)或处理器102、存储器控制器(MC)106、系统存储器总线108、经由系统存储器总线108耦接到存储器控制器106的一个或多个存储器模块110。一个或多个存储器模块110包括提供系统存储器的一个或多个混合双列直插式存储器模块(HybriDIMMTM),并且还可以提供内存信道存储器(memory channel storage,MCS)。在某些实施例中,MC 106可以集成到CPU 102中。在进一步的实施例中,计算机系统还可以包括也耦接到系统总线108的直接数据管理控制器(DMA)104。具有或没有MC 106和/或DMA 104的CPU 102或一部分或整个计算机系统100在下文中有时被称为“系统(System)”或“系统(system)”。
在某些实施例中,计算机系统100还可以包括网卡112以及一个或多个I/O装置114,例如,键盘、监控器、触摸屏、麦克风、扬声器等。网卡112可以或可以不集成到CPU中并在计算机系统100与局域网和/或广域网101之间提供网络接口功能(有线或无线)。计算机系统100还可以包括外围组件120,例如耦接到北桥的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可以额外提供硬件组件的抽象层,以便为应用程序和操作系统提供与硬件组件(例如,系统存储器和输入/输出装置)交互的一致方式。
在某些实施例中,软件栈还包括例如内核中的HybriDIMM驱动器250。HybriDIMM驱动器250是这样的软件程序,其用于控制对HybriDIMM存储器模块的系统访问,使得HybriDIMM存储器模块可以像标准的双列直插式存储器模块(DIMM)(例如,双倍数据速率(DDR)3寄存的DIMM RDIMM)或DDR3负载降低DIMM(LRDIMM)、DDR4 RDIMM或DDR4LRDIMM)那样操作,而不需要对BIOS进行任何更改。HybriDIMM驱动器250访问CPU中的存储器空间260以及用于存储HybriDIMM驱动器250可以根据需要咨询和/或更新的查找表或其他配置信息的某些存储器位置。在某些实施例中,驱动器拦截某些系统调用,以访问HybriDIMM存储器模块,并且指示存储器控制器响应于系统调用并且依照系统正在使用的存储器接口标准(例如,联合电子器件工程委员会(JEDEC)DDR3或DDR4RDIMM或LRDIMM标准)来发送控制、地址和数据信号,如下面进一步详细讨论的。
图3是根据某些实施例的可用于提供计算机/服务器系统100的系统存储器和/或MCS的HybriDIMM存储器模块300的示意图。如图3所示,HybriDIMM 300包括安装在模块板301上的易失性存储器子系统(包括动态随机访问存储器或DRAM装置)310、非易失性存储器子系统(或NVM)320和模块控制子系统(HMC)330,模块板可以包括一个或多个印刷电路板。HybriDIMM 300还可以包括缓存存储器(例如,太字节缓存存储器或TBM)340,并且还可以包括网络接口控制器(NIC)。HybriDIMM 300还可以包括信号路由电路,该信号路由电路包括例如信号线351-355、开关电路(例如,场效应晶体管或FET开关)和/或多路复用器,其在易失性存储器子系统(或DRAM)310和系统存储器总线、DRAM 310和HMC 330、缓存存储器340和HMC 330、HMC 330和系统存储器总线、和/或缓存存储器340和NVM 320之间路由信号。信号线351-355还包括数据/选通信号线(如虚线所示)和控制/地址(C/A)信号线(如实线所示)。
如图3所示,HybriDIMM 300耦接到系统存储器总线,并且可以使用例如I2C协议或其变体进一步耦接到系统管理(SM)总线。系统存储器总线包括控制/地址(C/A)信号线和数据/选通(DQ/DQS)信号线。C/A信号线在正常操作期间耦接到DRAM 310中的寄存器控制装置(RCD),并且进一步耦接到HMC 330。因此,RCD和HMC 330都可以响应于来自系统的C/A信号。在某些实施例中,开关电路(例如,FET-A)可由HMC 330控制,以将RCD耦接到C/A总线和HMC330,使得DRAM 310在系统访问HybriDIMM 300中的存储器地址空间时的存储器操作期间响应来自系统的C/A信号,或者在例如HybriDIMM 300在电力故障之后备份DRAM 310中的内容或者在电力恢复之后将内容恢复回DRAM中时的备份/恢复操作期间响应来自HMC 330的C/A信号。
在某些实施例中,HMC 330用于监控来自存储器控制器的C/A信号并识别和作用于响应于系统调用而制定的C/A信号,以访问非易失性存储器子系统(或NVM)320和/或缓存存储器340。
在某些实施例中,缓存存储器340包括诸如太字节DRAM存储器(TBM)的DRAM或SRAM。缓存存储器340用于临时存储数据,以使得缓存存储器340中的数据传输更加快速和高效。由于通常数据可以以比至和自系统传输数据更慢的速度传入和传出闪存存储器,所以缓存存储器340用于缓存至/自闪存存储器的数据使得系统不必减速并且等待数据写入到NVM 320或从NVM 320读取数据。当系统将数据写入到NVM 320时,数据以DRAM数据I/O速度缓存到缓存存储器340中,这比闪存数据I/O速度快得多。例如,基于先进先出(FIFO),缓存的数据可以写入闪存存储器。读取方向也是如此。因此,当从NVM 320进行读取时,CPU可以与主存储器(例如,DRAM 310)一起参与其他处理,直到缓存存储器340已经缓存预定量的数据,用于以DRAM速度传送到主存储器或系统。另一方面,当数据从主存储器传送到存储器时,根据来自系统或HMC 330的一组控制/地址(C/A)信号从DRAM 310读取数据,并根据来自HMC 330的另一组C/A信号将数据写入到缓存存储器340中。虽然DRAM可以与系统一起参与其他任务,但是通过从缓存存储器340中读取数据并将数据写入存储器,HMC 330可以将数据从缓存存储器340传送到NVM 320。在进一步的实施例中,缓存存储器340可以包括两组缓存存储器BufA和BufB。
在某些实施例中,DRAM 310可以包括双倍数据速率(例如,DDR3或DDR4)同步DRAM装置和寄存器控制装置(RCD)的多个存储排(rank)(例如,DRAM R0和DRAM R1)。在某些实施例中,NVM 320包括任何形式的存储介质,无论是易失性还是非易失性,包括但不限于NANDFlash、MRam、SDRAM、SRAM、d-XPointTM装置。在某些实施例中,NVM 320包括MLCNAND闪存,其被分区,以支持快速访问并增强虚拟复制的纠错能力。在某些实施例中,MLCNAND闪存包括均具有嵌入式多媒体接口的多个(例如,9个)标准嵌入式多媒体卡(eMMC)封装,如于2014年11月7日提交的题为“Hybrid Memory Module and System and Method ofOperating the Same”的美国专利申请号14/536,588中所述,其通过引用结合于此。
在某些实施例中,HybriDIMM 300还包括可由系统经由SM总线访问的串行存在检测(SPD)装置370。SPD装置370包括诸如电可擦除可编程只读存储器(EEPROM)的非易失性存储器,用于在其中存储HybriDIMM 300的关键参数,例如,基本存储器类型、模块数据宽度、时序参数、存储器密度(例如,位宽(bank)的大小)、制造商ID、序列号等。这些关键参数通常由制造商编写。在系统启动期间,BIOS读取SPD信息,以配置存储器控制器。
可以将HybriDIMM 300中的组件(例如,HMC 330、主存储器子系统(或易失性存储器子系统)、缓存存储器340、NVM 320(或非易失性存储器子系统))安装在相同的印刷电路板上或彼此靠近设置,以允许在其间快速且平稳的数据传输。
图4是根据某些实施例的HMC 330的框图。HMC 330可以使用一个或多个专用集成电路(ASIC)和/或可编程现场门阵列(FPGA)装置来实现。如图4所示,HMC 330包括控制逻辑410、数据缓存器420、本地存储器430和寄存器440。HMC 330还包括DRAM接口450、NVM接口460、系统管理总线接口470和网络接口480。在某些实施例中,HMC 330控制DRAM 310和NVM320之间的数据传输。在本地存储器片上存储器空间中保存地址管理表,操作开关电路FET-A,并向DRAM 310、NVM 320和缓存存储器340产生适当的命令和地址信号,以控制其间的数据传输。
在某些实施例中,NVM接口经由数据信号线461和控制/地址信号线463耦接到NVM320,DRAM接口450提供多组C/A信号线,以同时控制存储器模块300上的不同DRAM。例如,C/A信号线451用于根据MC 106模块操接收C/A信号并在备份/恢复操作期间向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还提供分别耦接到BufA和BufB的DQ/DQS信号线(例如,454和455),使得HMC 330可以同时处理多个数据传输。例如,当在BufB和NVM 320之间传送数据时,HMC 330可以对在BufA中缓存的数据执行纠错。在一些实施例中,如下面进一步详细讨论的,DRAM接口还提供耦合到DRAM子系统310的DQ/DQS信号线456,并且包括用于漂移调整的单独的DQS输入457。
在某些实施例中,响应于电力故障事件,可操作HybriDIMM 300,以备份DRAM中的数据。当DRAM中的数据传送到NVM 320时,HMC 330为将以DLL关闭模式操作的DRAM 310提供正确时序。HMC 330还为备份和恢复处理提供正确的操作程序。开关电路FET-A可以用于隔离RCD 320并且允许RCD 320在备份和恢复处理期间从HMC 330接收C/A信号。HMC 330还控制开关电路FET-A在备份操作期间将数据从DRAM 310路由到HMC 330,并在恢复操作期间将数据从HMC 330路由到DRAM 310。
在某些实施例中,系统可以经由SM总线访问HybriDIMM 300。例如,系统可以通过设置HMC 330中的某些寄存器,使用SM总线来配置HMC 330。HMC 330还可以使用SM总线在某个操作完成时或者当遇到错误时利用预先配置的中断信号,或者通过更新HMC 330的系统总线接口中或者DMA中的预定义的状态寄存器来通知系统。
在某些实施例中,HMC 330还管理HybriDIMM 300与任何局域网或广域网之间的网络接口,以促进HybriDIMM 300与局域网或广域网中的其他存储装置之间的直接数据传输。在某些实施例中,HMC 330包括网络接口和/或被耦接到可以从DRAM 310和/或NVM 320获取数据的网络接口卡(NIC),并且构建具有适当源地址和目的地址的网络分组。通常,源地址是由系统预先配置的。在某些实施例中,HMC 330的NIC或网络接口以及一些或全部其他组件可以嵌入到相同的ASIC或FPGA中。
在一些实施例中,HMC 330可用于控制DRAM 310中的数据缓存器,且包括数据缓存器控制接口485,该数据缓存器控制接口485用于经由数据缓存器控制信号线486输出数据缓存器控制信号。
图5A是根据一些实施例的DRAM 310的框图。如图所示,DRAM 310包括排列成一个或多个存储排(例如,存储排R0和R1)的存储器设备(例如,双倍数据速率动态随机存取存储器(DDR DRAM)设备或DDR DRAM)510、可用于在存储器设备510和数据总线312之间缓存数据信号的数据缓存器(DB)520、以及寄存器控制设备(RCD)530。该RCD 530用于经由系统控制/地址(C/A)信号线从MC接收由一组C/A信号表示的系统存储器命令,以及基于来自系统的C/A信号产生寄存C/A信号531和数据缓存器控制信号532。RCD 530还接收系统时钟并响应于系统时钟信号产生模块时钟信号或寄存时钟信号CK。
系统C/A信号的示例包括但不限于芯片选择(或/CS)信号,其用于选择在存储器(读或写)操作期间要访问的一排存储器设备;行地址选通(或/RAS)信号,其主要用于锁存行地址和启动存储器循环;列地址选通(或/CAS)信号,其主要用于锁存列地址和启动读或写入操作;地址信号,包括存储体地址信号和行/列地址信号,其用于选择存储器设备或芯片上的存储器位置;写入使能(或/WE)信号,其用于指定读取操作或写入操作;输出使能(或/OE)信号,用于在读取操作期间输出数据;以及系统时钟信号MCK。
寄存C/A信号的示例包括但不限于寄存/CS信号,该寄存/CS信号可以从系统/CS信号和一个或多个其他系统C/A信号中导出,诸如一个或多个存储体地址信号和/或一个或多个行/列地址信号;寄存/RAS信号,其可以是例如系统/RAS信号的寄存版本;寄存/CAS信号,其可以是例如系统/CAS信号的寄存版本;寄存地址信号,其可以是例如部分或全部地址信号的寄存版本;寄存/WE信号,其可以是例如系统/WE信号的寄存版本;寄存/OE信号,例如可以是系统/OE信号的寄存版本。在某些实施例中,寄存时钟信号CK与寄存C/A信号一起提供。
数据缓存器控制信号532可用于将各种命令从RCD 530和/或HMC传送到数据缓存器(DB)520,这些命令包括用于系统存储器写入操作(DRAM-WR)、系统启动的非易失性(NV)(例如,闪存)写入操作、模块内数据从NVM传输到DRAM(DDxWR),系统存储器读取操作(DRAM-RD)、系统启动的NVM读取操作(SDxRD)以及模块内数据从DRAM传输到NVM(DDxRD)操作的的命令。在一些实施例中,数据缓存器控制信号532可以包括一组或多组用于写入操作、无操作(No-op)和各种训练操作等的BCOM信号,如JEDEC-LRDIMM标准中所规定的,如在2019年8月公布的“DDR4寄存器时钟驱动器(DDR4RCD02)JESD82-31 A”中所定义的,以及如在2019年8月公布的“DDR4数据缓存器定义(DDR4DB02),JESD82-32A”中所定义的,上述文件的全部内容通过引用并入本文。在一些实施例中,部分或全部数据缓存器控制信号可由HMC 330提供,如下所述。
RCD经由寄存C/A信号线531a将寄存C/A信号531发送到排列成一个或多个存储排(例如,R0和R1)的存储器装置(MD)。存储器装置112响应于寄存C/A信号而运行以接收写入数据或输出读取数据。RCD经由数据缓存器(DB)控制信号线532a向DB发送DB控制信号532。如图5A所示,同一存储排的至少部分存储器装置(MD)510共享同一组寄存C/A信号线531a,并且至少部分数据缓存器(DB)共享同一组DB控制信号线532a。
在一些实施例中,数据缓存器(DB)520耦合在数据总线312的相应段或部分中的相应组系统数据/选通(DQ/DQS)信号线和存储器模块上的相应存储器数据/选通(MDQ/MDQS)信号线511之间。数据缓存器(DB)用于响应于数据缓存器控制信号532,在存储器装置(MD)510相应部分的数据输入/输出(I/O)和数据总线312中的相应数据/选通(DQ/DQS)信号线之间缓存数据/选通信号。存储设备510的每个部分包括在一个或多个存储排的每排中的一个或多个存储器设备510。在一些实施例中,也如图5A所示,HMC与存储器设备(MD)510的数据I/O耦合,并用于与存储器设备510和数据缓存器520通信数据/选通信号。在一些实施例中,如图5B所示,每个DB包括DB控制电路521和数据(DQ)路径522。如下文进一步详细讨论的,DB控制电路521用于响应于从RCD 530和/或HMC 330接收的一组DB控制信号532,通过输出一组控制信号525来控制DQ路径522。每个数据缓存器(DB)可以包括例如一个或多个JEDECDDR4 LRDIMM数据缓存器(例如,在2019年8月公布的“DDR4数据缓存器定义(DDR4DB02),JESD82-32A”中所指定的缓存器)。
图6示出了根据某些实施例的由HybriDIMM 300提供的存储空间600。如图6所示,存储器空间600包括DRAM空间610和NVM空间620。NVM空间620分成多个区域,包括非易失性(NV)备份区域621、主存储器本地存储(MMLS)区域623、MCS存储区域625等,其中每一个都可用于支持HybriDIMM存储器的不同功能。例如,NV备份区域可用于在停电期间在DRAM中存储内容的副本;并且MMLS区域可以用作交换空间,和/或用作部分或全部主存储器。在某些实施例中,系统随机访问的工作数据以DRAM数据格式存储在MMLS区域中。MCS区域可以用作传统的闪存存储器。在某些实施例中,NVM 320中的存储器空间还包括提供额外存储容量的额外配置区域。在某些实施例中,额外配置区域对于系统是隐藏的,并用于通过在更大的群体上分配写入和擦除来提高性能。
DRAM空间610包括用于系统随机访问的实际存储空间。该空间可以被在系统100上运行的多个进程或应用程序共享。为了有效地管理存储器空间610,系统100可以提供其主存储器的抽象(被称为虚拟存储器或虚拟地址空间),其将程序使用的存储器地址(即,虚拟地址)映射到DRAM 310中的实际地址内。为了实现虚拟存储器,系统100可以包括存储器管理单元(MMU),该存储器管理单元跟踪页面及其地址转换,当运行程序试图访问被映射到系统的虚拟地址空间内但未加载到DRAM 310设置的实际的存储器中的存储器页面中的数据时,发生页面错误,并且系统可能引起中断,其通过使存储器模块300将请求的数据从NVM320移动到DRAM 310,来提示HybriDIMM驱动器250处理页面错误,以便允许程序继续操作,就好像没有发生页面错误。
在某些实施例中,对于涉及NVM 320或缓存存储器340的操作,例如,交换入或交换出操作,HybriDIMM驱动器250在需要在DRAM(主存储器)和NVM(存储器)之间传送数据时向存储器控制器发送NVM访问请求,并随同所述的请求提供DRAM地址和NVM地址。之后,HybriDIMM驱动器250和HMC 330共同操作,以将数据移入或移出DRAM 310,而不会与正常系统访问主存储器相冲突。在某些实施例中,存储器控制器可以交错进行存储访问和正常系统内存访问。
例如,图7示出了响应于页面错误701由HybriDIMM驱动器250和HMC 330执行的处理程序700。如图7所示,HybriDIMM驱动器250通过使存储器控制器经由C/A总线向HybriDIMM 300发送第一组C/A信号以及经由数据总线向HybriDIMM 300发送与第一组C/A信号相关联的第一组数据信号来启动页面错误操作(703)。在某些实施例中,第一组C/A信号包括不指向DRAM310的写入命令。例如,C/A信号可以包括一个或多个芯片选择信号,其中没有一个信号声明选择DRAM 310中的任何一个存储排(rank)。第一组数据信号包括其它用于页面错误操作的信息,例如,NVM(例如,闪存存储器或闪存)中存有将要被索取的数据的一个或多个地址位置。当第一数据信号从数据缓存器DB传输到DRAM时,HMC 330识别第一组C/A信号,并在DIMM上开始页面错误操作(705)以窥探第一数据信号。HMC 330然后基于第一组C/A信号和从存储器控制器接收到的第一数据信号来生成NVM C/A信号,以开始NVM读取(707),使NVM输出将要加载到DRAM中的页面输入数据。如图8所示,HMC 330可以使页面输入数据存储在BufA中(709),并根据BufA中存储器装置的时序要求,在页面输入数据之前将一组C/A信号发送到BufA。
同时,HybriDIMM驱动器250继续处理页面错误操作。HybriDIMM驱动器250可以将一些数据从DRAM 310中交换出来,以便为将加载到DRAM中的存储器页面留出空间。在某些实施例中,HybriDIMM驱动器250通过使存储器控制器发送包括读取命令和读取地址的第二组C/A信号来做到这一点(711),这使得DRAM输出页面输出数据。由RCD和HMC 330接收第二组C/A信号。HMC 330将第二组C/A信号识别为页面错误操作的一部分,因为读取地址与在第一组C/A信号中的地址相关。作为响应,HMC 330窥探页面输出数据(713),以及根据BufB中的存储器装置的时序要求,通过在页面输出数据之前向BufB发送一组C/A信号来使页面输出数据被写入BufB内(715)。
在HybriDIMM 300继续上面讨论的数据传输时,HybriDIMM驱动器250现在等待(717)。在某些实施例中,HMC 330可以向页面输出数据添加纠错码(ECC)(719),如在2014年11月7日提交的题为“Hybrid Memory Module and System and Method of Operating theSame”的美国专利申请No.14/536,588所讨论的,该申请通过引用结合于此。在某些实施例中,在页面输出数据通过HMC 330传送到NVM 320时,进行ECC编码。HMC 330还发送NVM C/A信号,以使ECC编码的页面输出数据存储在NVM中(721)。在某些实施例中,HMC 330管理NVM320地址并且纪录NVM物理地址与系统所知的虚拟/物理地址之间的关联。这可以通过创建和更新地址映射表来完成,该表将系统(虚拟/物理)地址映射到NVM物理地址。HMC 330使用地址映射表将页面输出数据正确地放置在NVM 320中的适当位置。
HMC 330可以对从NVM读出的页面输入数据执行纠错(723),如在2014年11月7日提交的题为“Hybrid Memory Module and System and Method of Operating theSame”的美国专利申请No.14/536,588中所讨论的,该申请通过引用结合于此。在某些实施例中,HMC330通过在路由器350中形成数据路径920来做到这一点,如图9所示,这允许HMC 330读取存储在BufA中的页面输入数据,对页面输入数据执行错误检测和校正,并且将校正的页面输入数据存储回BufA。根据页面输入数据的大小,HMC 330可以将页面输入数据分成多个部分,并通过读出页面输入数据的每个部分,对每个部分执行错误检测和校正,并且在读出页面输入数据的下一部分用于纠错之前,将校正部分写回到BufA中,来一次一个部分地对页面输入数据执行纠错。
如上所述,当HybriDIMM 300准备页面输入数据时,HMC 330可以响应于来自系统的命令执行正常的主存储器操作。当HMC 330完成上面讨论的数据传送和纠错时,HMC 330可以经由例如SM总线向HybriDIMM驱动器250发送中断信号(725)。作为响应,HybriDIMM驱动器通过使存储器控制器向HybriDIMM 300发送包括写入命令和写入地址的第三组C/A信号来启动虚拟写入操作。在某些实施例中,虚拟写入命令类似于正常的写入命令,除了后面跟有虚拟数据或没有来自存储器控制器的数据之外。第三组C/A信号由RCD和HMC 330接收。HMC 330将第三组C/A信号识别为页面错误操作的一部分,因为读取地址与在第一组或第二组C/A信号中的地址相关。作为响应,HMC 330将读取命令发送到BufA,这使得BufA输出页面输入数据。然后,HMC 330还将页面输入数据及时提供给DRAM 310,以便DRAM 310响应于来自RCD的寄存C/A信号而接收页面输入数据,寄存C/A信号是从第三组C/A信号导出的。DRAM310响应于从第三组C/A信号导出的。因此,来自存储器控制器的虚拟数据被忽略或丢弃。
在某些实施例中,系统对主存储器的正常系统访问在系统与DRAM 310之间进行,HybriDIMM驱动器350或HMC 330没有太多介入。在某些实施例中,计算机系统100中的存储器接口被设计成没有每命令握手规定(per command handshake provision)的从接口。因此,系统不知道是否有任何on-DIMM(模块内)活动正在占用DRAM 310中的DRAM输入/输出(I/O)引脚。例如,如果占用DRAM I/来在主存储器和存储器之间传输数据,并且系统(存储器控制器)启动数据读或写命令,期望DRAM准备好执行系统命令,则DRAM将不能执行系统读/写入操作,并且系统会遇到“存储器故障”,这可能导致系统故障。
在某些实施例中,响应于来自系统的虚拟写入命令,HMC 330从BufA读取页面输入数据,然后将页面输入数据从HMC 330提供给DRAM 310。HMC器经配置监控来自存储器控制器的存储器命令,并相应调度on-DIMM(模块内)数据传输,以避免数据访问冲突。在某些实施例中,当在DRAM I/O处放置页面输入数据时,HMC 330将绕开系统内存访问工作,以避免与这种数据访问冲突引起的系统故障。例如,如图8所示,当数据A到G从缓存存储器340(TBM)被页面输入到主存储器(MM)时,系统可能会发出内存访问命令,以将数据M、M+1、M+2、M+3写入主存储器(MM)。存储器控制器可如下调度来自系统的存储器命令和来自HybriDIMM驱动器350的虚拟写入命令:
CAS TBM A(未示出)-其是来自HybriDIMM驱动器350的用于将数据A从TBM传输到主存储器(MM)的虚拟写入命令;
CAS TBM B-其是来自HybriDIMM驱动器350的用于将数据B从TBM传送到主存储器(MM)的虚拟写入命令;
CAS sys M-其是将数据M从系统写入MM的正常写入命令;
CAS TBM C-其是来自HybriDIMM驱动器350的用于将数据C从TBM传送到主存储器(MM)的虚拟写入命令;
CAS sys M+1-其是用于将数据M+1从系统写入MM的正常写入命令;
CAS sys M+2-其是用于将数据M+2从系统写入MM的正常写入命令;
CAS TBM D-其是来自HybriDIMM驱动器350的用于将数据C从TBM传送到主存储器(MM)的虚拟写入命令;
CAS TBM E-其是来自HybriDIMM驱动器350的用于将数据C从TBM传送到主存储器(MM)的虚拟写入命令;
CAS TBM G-其是来自HybriDIMM驱动器350的用于将数据C从TBM传送到主存储器(MM)的虚拟写入命令;
CAS sys M+3-其是用于将数据M+3从系统写入MM的正常写入命令;以及
CAS TBM H(未示出)-其是来自HybriDIMM驱动器350的用于将数据H从TBM传送到主存储器(MM)的虚拟写入命令。
在系统发出CAS TBM B命令之前,HMC 330(在图中,称为“FPGA”)可能已经向BufA发出了CAS TBM A'、CAS TBM B'和CAS TBM C'命令,以向HMC 330输出数据A、数据B和数据C。HMC可以从TBM(如在“来自TBM的FPGA pg-in输入”中的数据块A和B所示)预先加载数据A和数据B,并将其放置在HMC中的数据缓存器420中。之后,响应于来自HMC的CAS TBM C',从TBM输出数据C。
HMC继续向TBM发出CAS TBM D',这时HMC观察到来自系统的CAS sys M命令。作为响应,HMC向TBM发出DES/NOP命令,以暂停TBM和MM之间的数据传输。因此,FPGA页面输入(Pg-in)输出暂停,如FPGA Pg-in输出中的数据B和数据C之间的间隙所示,并且在MM输入处接收到系统数据M(Sys)。之后,在从系统中观察到CAS sys M+1和稍后的CAS sys M+2之后,HMC器继续向TBM发出CAS TBM E'。作为响应,HMC发出两个连续的DES/NOP命令,来暂停TBM输出数据到HMC。结果,在数据E和数据F之间没有来自TBM的数据输出,并且在数据C和数据D之间的没有从HMC驱动到MM的数据,因而在从HMC到MM的输出中留下间隙,以允许MM接收系统数据M+1和M+2(Sys)。
在某些实施例中,HMC 330还用于在DRAM 310和NVM 320之间执行阴影数据传输操作。例如,当系统命令针对的DRAM的地址是已经被预编程为要求从NVM 320传送数据的地址时,HMC 330将执行这样的传送,以使得系统能够适当地访问该预编程的地址。
在一些实施例中,响应于系统存储器写入命令,RCD向数据缓存器(DB)输出表示写入命令的BCOM信号,并且响应于虚拟写入存储器命令,RCD向数据缓存器(DB)输出表示无操作命令的BCOM信号。图9A是连续HybriDIMM写入周期的理想操作的时序图,例如,(通过DB)响应于CAS sys M命令的存储器控制器(MemC)写入周期、(通过HMC)响应于CAS TBM C命令的模块内数据传输(DDX)写入周期和(通过DB)响应于CAS sys M+1命令的MemC写入周期。理想情况下,这些写入操作应在存储器设备I/O处连续背靠背地链接起来。例如,图9A示出了具有连续DRAM-WR和DDxWR以及DRAM-WR数据/选通周期的存储器设备I/O的写入周期。
图9B示出了与在HybriDIMM模块300中使用各种数据传输相关的事件。如图所示,在从MemC写入周期到DDX写入周期的转换期间,如果MemC写入周期的DQS信号来自数据缓存器并且DDX写入周期的DQS信号来自HMC,则在DRAM I/O处存在DQS竞争,该DRAM I/O位于MemC写入周期的DQS信号的后置码与DDX写入周期的DQS的前置码之间。实际上,从DB输出的DQS可以被驱动多达其前置码和后置码的一个时钟周期。这会导致DRAM I/O处的DQS信号竞争。此外,由于DQS(DB和HMC)的两个不同源,在切换DQS源时可能发生抖动。
表一
图10A是示出根据一些实施例的HybriDIMM 300的一部分的框图,HybriDIMM 300包括耦合到数据总线312的段1020中的DQ/DQS信号线以及耦合到模块数据线1010和模块DQS信号线1011和1012的数据缓存器520。如图10A所示,为了避免在DRAM I/O处的上述DQS竞争,数据缓存器(DB)520经由DQS信号线1011耦合到一个或多个存储器设备510以及经由DQS信号线1012耦合到HMC,DQS信号线1011传导第一组模块DQS信号DQS1,DQS信号线1012传导第二组模块DQS信号DQS2。DB 520的这种设计允许用于采样读或写数据的DQS信号的源对于不同类型的读或写入操作是相同的,如表I所示。
例如,如表I所示,各种模块操作以各种方式影响图10A所示的信号路径。例如,在DRAM-WR或SDxWR操作期间,响应于指示Sys-WR命令的DB控制信号,数据缓存器520驱动MDQ上的数据以及DQS1和DQS2上的选通,这使得存储器设备510和HMC 330能够在主机发起的存储器写入操作中接收主机数据。作为另一示例,在DDxWR操作期间,响应于指示DDxWR命令的DB控制信号,HMC 330驱动DQ2上的数据并且数据缓存器520驱动DQS1上的选通,这使得HMC330能够在主机发起的存储器写入操作中向存储器设备510传送数据。在一些实施例中,每个数据缓存器(DB)提供分别对应于两组DQS信号线1011和1012的两个DQS路径,并且用于允许对DQS路径和至少一个DQS路径(例如,DQS1)的独立控制,使得在模块内数据传输的写入周期期间,当DQS路径之一接通以在缓存来自存储器控制器(MC)106的DQS信号之后输出DQS1信号时,可以关闭数据缓存器中的数据路径。HMC 330用于输出用于模块内数据传输的数据以与DQS1信号一致。在一些实施例中,数据缓存器和HMC用于使得对于写入操作(DRAM-WR、DDxWR、SDxWR),数据缓存器(DB)在从存储器控制器(MC或MemC)接收到DQS1信号之后驱动DQS1信号。在一些实施例中,如虚线1030所示,在漂移对准的写入操作期间,将来自数据缓存器520的DQS1可选地输入到HMC 330。对于系统发起的非易失性(NV)(例如闪存)写入操作(SDxWR),HMC 330从数据缓存器520接收DQS2信号以及MDQ数据信号。
对于读取操作,其包括系统存储器读取操作(DRAM-RD)、模块内传输读取操作(DDxRD)以及系统发起的NVM读取操作(SDxRD),HMC经由DQS信号线1012驱动DQS2信号,响应于指示RD命令的DB控制信号,DQS2信号与DQ信号一起由数据缓存器520缓存并作为DQS信号输出或再生到MCS 106。因此,在系统存储器读取操作(DRAM-RD)期间伴随数据总线1020上的DQ信号的DQS信号是源自HMC 330而不是源自存储器装置320。因为不存在如图9B中所示的DQS上的源切换,所以在HybriDIMM 300中没有总线竞争和抖动违规。
图10B示出了根据一些实施例的系统存储器写入操作(DRAM-WR)和系统发起的非易失性(NV)(例如,闪存)写入操作(SDxWR)。如图10B所示,在DRAM-WR或SDxWR期间,包括Sys-WR命令的DB控制信号由RCD 530和/或HMC 330驱动以命令数据缓存器520进入DRAM-WR或SDxWR操作。作为响应,数据缓存器(DB)520可用于从MC 106接收写入数据DQ和写入选通DQS,并输出缓存写入数据MDQ以及缓存(或再生)写入选通DQS1(在SDxWR期间可选)和DQS2(在DRAM-WR期间可选)。MD 510使用DQS1在DRAM-WR期间接收缓存写入数据MDQ,HMC使用DQS2在SDxWR期间接收缓存写入数据MDQ。在一些实施例中,如虚线箭头所示,DQS1可选地被提供给HMC以用于漂移对准。在一些实施例中,在DRAM-WR和/或SDxWR期间,数据缓存器520可用于响应于经由数据总线312的相应段1020中的相应DQ信号线从MC 106接收相应DQ信号而输出两组DQS信号DQS1和DQS2。DQS1经由DQS信号线1011输出到相应存储器装置510的DRAM I/O,DQS2经由DQS信号线1012输出到HMC。根据来自MC的地址/控制信号中的芯片选择或装置/存储列ID信号,在SDxWR期间,存储器装置510忽略MDQ/DQS1信号,并且在DRAM-WR期间,HMC 530忽略MDQ/DQS2信号。
图10C示出了根据一些实施例的从NVM到DRAM(DDxWR)的模块内数据传输期间的DQ和DQS信号路径。如图10C所示,在DDxWR操作期间,包括DDxWR命令的DB控制信号由RCD 530和/或HMC 330驱动,以命令数据缓存器520进入DDxWR操作。作为响应,数据缓存器520可用于输出DQS1信号,该数据缓存器520被MD 510用来从HMC接收经由模块数据线1010从NVM320传送的数据。每个数据缓存器520中的DQS2和MDQ的输出可以被禁用以在DDxWR操作期间阻止来自存储器控制器106的任何信号以减少噪声。
图10D示出了根据一些实施例的系统存储器读取操作(DRAM-RD)和系统发起的NVM读取操作(SDxRD)。如图10D所示,在DRAM-RD或SDxRD或DDxWR操作期间,包括RD命令的DB控制信号由RCD 530和/或HMC 330驱动,以命令数据缓存器520进入DRAM-RD或SDxRD操作。作为响应,数据缓存器(DB)520接收来自HMC 330的选通信号DQS2和来自MD 510的数据信号DQ1(在DRAM-RD操作期间)或来自HMC 330的数据信号DQ2(在SDxRD操作期间)。MD 520输出的DQS1信号被DB 520忽略或阻止。主机在引导训练(boot-up-training)期间通过读取均衡(Read Leveling)来管理来自HMC 330的DQS2和来自MD 510的DQ1之间的时序。如虚线箭头线所示,可实现从MD 510到HMC 330的可选DQS1,使得HMC 330可检测由电压/温度等输出的DRAM上的任何漂移,并实时对准它们。
图10E示出了根据一些实施例的在模块内数据从DRAM到NVM(DDxRD)的模块内数据传输期间的DQ和DQS信号路径。如图10E所示,在DDxRD操作期间,当DQ1从MD 510被驱动到HMC 330和DB 520时,DQS2从HMC 330被驱动到DB 520。包括RD命令的DB控制信号由RC和/或HMC 330驱动,以命令数据缓存器520进入DRAM-RD或SDxRD或DDxWR操作。作为响应,DB520接收DQS2和DQ1并输出DQS和DQ。由于主机已通过虚拟读取存储器命令启动了此读取周期,即使主机将忽略这些DDxRD数据,其也期望从存储器模块获得DQS和DQ。因此,对于DRAM-RD、SDxRD和DDxRD操作,DQS的源是HMC。
在一些实施例中,如图11A所示,数据缓存器(DB)520中的每一个可以使用两个集成电路芯片中的两个数据缓存器来实现,例如,可以是相同的DB1和DB2。尽管两个数据缓存器DB1和DB2中的每一个都不允许对DQ和DQS路径的独立控制,但是可以使用两组BCOM信号来独立地控制两个数据缓存器,以通过数据缓存器(DB)520来提供对DQ和DQS信号路径的独立控制。
例如,根据一些实施例,可以使用JEDEC DDR4 LRDIMM数据缓存器来实现这两个数据缓存器DB1和DB2。如图11B所示,图11B示意性地示出了根据一些实施例的使用JEDECDDR4 LRDIMM兼容数据缓存器实现的DB1,DB1包括耦合到数据总线312的相应段中的每个DQS线的DB控制电路1100A、DQ路径、DQS路径和总线侧DQS I/O电路(例如,输入缓存器1101a和输出驱动器1102a),用于导通(例如,接收或发送)DQS信号,该DQS信号可以包括DQS信号DQS_t和DQS_c的差分对。DQS路径包括耦合到每一组DQS线1011的模块侧DQS I/O电路(例如,输入缓存器1111a和输出驱动器1112a),用于传导(例如,接收或发射)DQS1信号,该DQS1信号可以包括DQS信号DQS1_t和DQS1_c的差分对。DQ路径包括耦合到数据总线312的相应段中的每个DQ线的总线侧DQ I/O电路(例如,输入缓存器1131a、输入数据采样器1151a和输出驱动器1132a)、耦合到模块数据线1010中的每条数据线的模块侧DQ I/O电路(例如,输入缓存器1141a、输入数据采样器1161a和输出驱动器1142a)、以及耦合在总线侧DQ I/O电路和模块侧DQ I/O电路之间的内部电路(例如,写入数据或写入FIFO的先进先出电路,以及读取数据或读取FIFO的先进先出电路)。DB控制电路1100A可用于接收DB1控制信号并输出各种控制信号以控制DB1中的电路/组件。其中,DB1控制信号包括模块时钟和第一组BCOM信号,各种控制信号包括例如用于使能或禁用输入缓存器1101a的RX1_EN、用于使能或禁用输出驱动器1102a的DQS1_OE、用于使能或禁用输入缓存器1111a的RX1EN,用于使能或禁用输出驱动器1112a的MDQS1_OE、用于使能或禁用输出驱动器1132a的DQ1_OE、以及用于使能或禁用输出驱动器1142a的MDQ1_OE等。在一些实施例中,DB控制电路1100A还包括可用于将DQS1信号再生为在输入缓存器1101a处从数据总线312接收的缓存DQS信号的电路,以及可用于将DQS信号再生为在输入缓存器1111a处从模块DQS信号线1011接收的缓存DQS1信号的电路。
如图11C所示,其示意性地示出了根据一些实施例的使用JEDEC DDR4 LRDIMM兼容数据缓存器实现的DB2,DB2包括类似于DB1中的DB控制电路1100B、DQ路径、DQS路径和总线侧DQS I/O电路。DB2中的DQS路径包括耦合到用于传导DQS2信号的每组DQS线1012的模块侧DQS I/O电路(例如,输入缓存器1111b和输出驱动器1112b),DQS2信号可以包括DQS信号DQS2_t和DQS2_c的差分对。DB2中的DQ路径包括耦合到数据总线312的相应段中的每个DQ线的总线侧DQ I/O电路(例如,输入缓存器1131b、输入数据采样器1151b和输出驱动器1132b)、耦合到模块数据线1010中的每条数据线的模块侧DQ I/O电路(例如,输入缓存器1141b,输入数据采样器1161b和输出驱动器1142b)、以及耦合在总线侧DQ I/O电路和模块侧DQ I/O电路之间的内部电路(例如,写入数据或写入FIFO的先进先出电路,以及写入数据或读取FIFO的先进先出电路)。DB控制电路1100B可用于接收DB2控制信号并输出各种控制信号以控制DB2中的电路/组件。其中,DB2控制信号包括模块时钟和第二组BCOM信号,各种控制信号包括例如用于使能或禁用输入缓存器1102b的RX2_EN、用于使能或禁用输出驱动器1102b的DQS2_OE、用于使能或禁用输入缓存器1111b的RX2EN、用于使能或禁用输出驱动器1142b的MDQ2_OE、用于使能或禁用输出驱动器1132b的DQ2_OE、以及用于使能或禁用输出驱动器1142b的MDQ2_OE等。在一些实施例中,DB控制电路1100B还包括可用于将DQS2信号再生为在输入缓存器1101b处从数据总线312接收的缓存DQS信号的电路,以及可用于将DQS信号再生为在输入缓存器1111b处从模块DQS信号线1012接收的缓存DQS2信号的电路。
在一些实施例中,对于DRAM_WR或SDxWR操作,到数据缓存器DB的SYS_WR命令可以实现为两个写入命令的组合,使用第一组BCOM信号到DB1的写入命令和使用第二组BCOM信号到DB2的写入命令。对于DDxWR操作,到数据缓存器DB的DDRxWR命令可以实现为使用第一组BCOM信号到DB1的写入命令和使用第二组BCOM信号到DB2的无操作命令的组合。对于DRAM-RD、DDxRD和SDxRD操作,到数据缓存器DB的RD命令可以实现为使用第一组BCOM信号到DB1的无操作命令和使用第二组BCOM信号到DB2的读取命令的组合。
在一些实施例中,由DB1和DB2分别接收的两个命令中的一个可以由RCD发出,并且两个命令中的另一个可以由HMC发出。在一些实施例中,这两个命令都可以由RCD或HMC发出。在一些实施例中,RCD和HMC组合在一个集成电路中。在一些实施例中,RCD和HMC是单独的集成电路。在一些实施例中,RCD可以是标准RCD(例如,JEDEC DDR4RDIMM或LRDIMM RCD)。
在一些实施例中,如图11A所示,存储器设备510和数据总线312之间的DQS信号路径可以由DB1提供,而通过数据缓存器DB的DQ信号路径可以由DB2提供,DB2还提供HMC和系统(主机HOST)之间的DQS信号路径。在一些实施例中,如图11A中的虚线所示,来自系统的DQS信号可选地被缓存并从DB1输出到HMC以用于漂移对准。如下文进一步讨论的,在一些实施例中,如图10A和11A所示,HybriDIMM 300的配置为用于写入操作的DRAM提供一个DQS源以及为读取操作提供一个DQS源。例如,对于写入周期(DRAM-WR,DDxWR,SDxWR),DB1从MemC驱动DQS,对于读取周期(DRAM-RD,DDxRD,SDxRD),DQS从HMC 330起始(例如,响应于来自HMC330的读取选通DQS2输出DQS或者由接收了来自HMC 330的读取选通DQS2的相同集成电路输出DQS)。
表二
表II示出了在根据一些实施例的各种读取和写入操作期间由DB 520接收的命令(DB命令),DB命令是由DB1和DB2接收的命令(BCOM命令)的组合。如表II所示,在MemC写入(DRAM-WR或SDxWR)操作期间,数据缓存器DB 520接收Sys_WR命令,在双缓存器实现中,Sys_WR命令可以是两个写入命令的组合,到DB1的写入命令和到DB2的写入命令。因此,对于DRAM-WR操作和SDxWR操作两者来说,DQS经由DB1从主机MC 106被驱动到DRAM,而DQ经由DB2从主机MC 106被驱动到DRAM。HMC通过DB2接收MDQ和DQS2信号。虽然DRAM和HMC都接收DQS/DQ信号,但是在命令周期期间,通过控制/地址信号中的芯片选择信号和/或设备ID信号来区分目标(例如,DRAM或NVM)。
在DDxWR操作期间,数据缓存器DB 520接收DDxWR命令,在图10A所示的双缓存器实现中,DDxWR命令可以是到DB1的写入命令和到DB2的无操作命令的组合。因此,对于DDxWR操作来说,DB2被禁用,DQS经由DB1从主机被驱动到DRAM,而DQ经由DQ/DQS信号线456中的DQ信号线从HMC被驱动到DRAM。因此,DQS的源与DRAM-WR和SDxWR操作中的源保持相同。由于MemC写入或DDxWR周期是由主机(MemC)启动的,因此来自主机的DQS可用于MemC写入或DDxWR操作。然而,在DDxWR操作期间,来自存储器控制器的任何数据信号被DB2阻挡以降低噪声,因为当DB2处于无操作命令下时,DB2上的DQ输出驱动器1142b被三态化或禁用。
在DRAM-RD操作期间,其中数据缓存器DB 520接收RD命令,在双缓存器实现中,RD命令可以是到DB1的无操作命令和到DB2的读取命令的组合。因此,对于DRAM-RD操作来说,DB1被禁用,DQS经由DB2从HMC被驱动到主机,并且DQ也经由DB2从DRAM被驱动到主机。在DRAM_RD操作期间,DB1阻止来自DRAM的DQS信号到达数据总线。在引导训练期间,主机可以通过读取均衡来管理HMC的DQS和DRAM的DQ之间的时序。如图11A中的虚线信号线所示,可以实现从DRAM到HMC的可选DQS,使得HMC可以检测由电压/温度等输出的DRAM上的任何漂移,并实时地对准它们。
在SDxRD操作期间,其中数据缓存器DB 520接收RD命令,在双缓存器实现中,RD命令可以是到DB1的无操作命令和到DB2的读取命令的组合。因此,对于SDxRD操作来说,DB1被禁用,DQS经由DB2从HMC被驱动到主机,并且DQ也经由DB2从HMC被驱动到主机。
在DDxRD操作期间,其中数据缓存器DB 520接收RD命令,在双缓存器实现中,RD命令可以是到DB1的无操作命令和到DB2的读取命令的组合。因此,对于DDxRD操作来说,DB1被禁用,DQS经由DB2从HMC被驱动到主机,而DQ从DRAM被驱动到HMC和DB2。由于主机已通过虚拟读取存储器命令启动了此读取周期,即使主机将忽略这些DDxRD数据,其也期望从存储器模块获得DQS和数据。因此,对于任何DRAM-RD、SDxRD和DDxRD操作,DQS的源是HMC。
在一些实施例中,可以使用顶层和底层以及背靠背(镜像)配置将DB1和DB2安装在印刷电路板(PCB)上,因此在来自主机的DQS上没有存根或几乎没有存根。虽然通过双缓存器实现可以使来自主机的DQS信号的负载加倍,但是该负载可以通过开/关IBT以及调节串联阻尼电阻值来管理。可选的DQS输入(从DRAM到HMC)允许实时的漂移对准,但会增加HMC上的引脚数(4x9=36)。
图11D示意性地示出了根据一些实施例的在单个集成电路521中实现的数据缓存器520。如图11D所示,DB 521包括类似于DB1或DB2中的DQ路径。DB 521包括两个DQS路径,第一DQS路径对应于DQS1且类似于DB1中的DQS路径,第二DQS路径对应于DQS2且类似于DB2中的DQS路径,以及包括DB控制电路1100,其可用于响应于接收到包括模块时钟和DB命令信号的DB控制信号而促进和控制两个DQS路径彼此独立。在一些实施例中,基于由DB 521接收的DB命令(例如,Sys-WR、DDxWR和RD等),DB控制电路1100可用于接收或输出DQS、DQS1和/或DQS2信号,以及输出控制信号MDQS1_OE、RX1EN、MDQS2_OE、RX2EN、DQS_OE、RX_EN、MDQ_OE、DQ_OE等以控制DB 521中的DQ和DQS I/O电路。表III示出了根据一些实施例的用于DB 521执行上述DRAM-WR、SDxWR、DDxWR、DRAM-RD、SDxRD和DDxRD操作的命令,以及由DB控制电路1100响应于每个命令生成的控制信号。
表三
例如,响应于可以由RCD 530或HMC 330在一组命令信号中提供给DB521的Sys-WR命令,DB控制电路1100可用于使能输入缓存器1101使用RX_EN信号从系统接收DQS信号,以将DQS1和DQS2信号再生为缓存DQS信号,使能输出驱动器1112使用MDQS1_OE信号将DQS1信号驱动到存储器装置510,以及使能输出驱动器1122使用MDQS2_OE信号将DQS2信号驱动到HMC 330。响应于可以由RCD 530或HMC 330在另一组命令信号中提供给DB 521的DDxWR命令,DB控制电路1100可用于使能输入缓存器1101使用RX_EN信号从系统接收DQS信号,以将DQS1信号再生为缓存DQS信号,以及使能输出驱动器1112使用MDQS1_OE信号将DQS1信号驱动到存储器设备510。使用DDxWR命令下的MDQS2_OE信号来禁用输出驱动器1122。响应于可以由RCD 530或HMC 330在又一组命令信号中提供给DB 521的RD命令,DB控制电路1100可用于使能输入缓存器1221使用RX2EN信号从HMC 330接收DQS2信号,以将DQS信号再生为缓存DQS1信号,以及使能输出驱动器1102使用DQS_OE信号来将DQS信号驱动到MC 106。在RD命令下使用相应的控制信号来禁用输入缓存器1101、1111和输出驱动器1112和1122。
图12是根据一些实施例的用于训练数据缓存器(DB)520的过程的流程图。在DB520的双缓存器实现中,除了上述BCOM命令(例如,写入、读取、无操作),所有其他BCOM命令(例如,MSR写入、BCW写入、BCW读取)都复制在DB1和DB2上。因此,DB1和DR2都将被编程为相同的。根据一些实施例,通过DB2进行MREP训练。
MREP训练步骤将DRAM接口接收启用控制字中的部分循环字段训练到其正确位置,与来自DRAM的选通对齐。然而,在DRAM和数据缓存器之间存在大的命令延迟差异的情况下,DRAM接口接收启用控制字中的全周期字段也可能需要调整,以便在正确的周期中使能数据缓存器接收器。为了完成这项任务,主机可以通过写为BC0C的BCW将数据缓存器置于MRD模式。在MRD模式中,主机将已知模板写入DRAM MPR寄存器并且也写入数据缓存器的MPR寄存器中并将其读回,从而允许数据缓存器将读取的数据与已知模板进行比较。
Claims (20)
1.一种可在计算机系统中操作的存储器模块,其特征在于,所述计算机系统包括耦合到存储器通道的存储器控制器,所述存储器通道包括数据总线和控制/地址C/A总线,所述存储器模块包括:
易失性存储器子系统,可用于耦合到所述存储器通道,所述易失性存储器子系统包括动态随机存取存储器DRAM装置;
耦合到所述易失性存储器子系统的模块控制器;
所述DRAM装置和所述数据总线之间的第一选通路径;和
所述模块控制器和所述数据总线之间的第二选通路径;
其中,所述存储器模块可用于执行存储器写入操作和存储器读取操作,在所述存储器写入操作期间,来自所述存储器控制器的写入数据与经由所述第一选通路径传输的写入选通一起被提供给所述易失性存储器子系统,在所述存储器读取操作期间,来自所述易失性存储器子系统的读取数据与经由所述第二选通路径传输的读取选通一起被输出到所述数据总线。
2.根据权利要求1所述的存储器模块,其特征在于,所述存储器模块还包括:
耦合到所述模块控制器的非易失性NV存储器子系统;
其中,所述存储器模块可用于执行数据传输写入操作,在所述数据传输写入操作期间,来自所述NV存储器子系统的NV数据被传输到所述易失性存储器子系统;和
其中,所述NV数据与经由所述第一选通路径传输的NV写入选通一起被提供给所述易失性存储器子系统。
3.根据权利要求2所述的存储器模块,其特征在于,所述易失性存储器子系统可用于响应于经由所述C/A总线从所述存储器控制器接收虚拟写入存储器命令而根据所述NV写入选通来接收所述NV数据。
4.根据权利要求2所述的存储器模块,其特征在于,所述存储器模块还可用于执行NV写入操作,在所述NV写入操作期间,来自所述存储器控制器的NV写入数据被写入所述NV存储器子系统,其中,所述NV写入数据与经由所述第二选通路径传输的NV写入选通一起被提供给所述模块控制器。
5.根据权利要求2所述的存储器模块,其特征在于,所述存储器模块还可用于执行NV读取操作,在所述NV读取操作期间,来自所述非易失性存储器子系统的NV读取数据与经由所述第二选通路径传输的NV读取选通一起被输出到所述数据总线。
6.根据权利要求1所述的存储器模块,其特征在于,所述存储器模块还可用于执行数据传输读取操作,在所述数据传输读取操作期间,来自所述易失性存储器子系统的DRAM数据被传输到所述NV存储器子系统,其中,所述DRAM数据被提供给所述模块控制器并且与经由所述第二选通路径传输的读取选通一起被输出到所述数据总线。
7.根据权利要求1所述的存储器模块,其特征在于,所述存储器模块还包括用于传输所述写入数据和所述读取数据的数据路径,其中所述第一选通路径可用于使其自身被启用或禁用与所述数据路径被启用或禁用无关。
8.根据权利要求7所述的存储器模块,其特征在于,所述易失性存储器子系统还包括第一数据缓存器和第二数据缓存器,所述第一数据缓存器可用于提供所述第一选通路径,所述第二数据缓存器可用于提供所述第二选通路径和所述数据路径。
9.根据权利要求7所述的存储器模块,其特征在于,所述DRAM装置被设置在一个或多个存储排中,其中,所述易失性存储器子系统还包括耦合在所述DRAM装置的相应部分与所述数据总线的相应段之间的多个数据缓存器,其中,所述多个数据缓存器的每个相应数据缓存器可用于提供相应组的所述数据路径、相应组的所述第一选通路径以及相应组的所述第二选通路径。
10.如权利要求9所述的存储器模块,其特征在于,所述易失性存储器子系统还包括寄存器控制装置,所述寄存器控制装置用于对来自所述C/A总线的C/A信号进行寄存,其中,所述相应的数据缓存器可用于响应于从所述寄存器控制装置和所述模块控制器中的一个或两个接收的数据缓存器控制信号而使能所述相应组的所述数据路径、所述相应组的所述第一选通路径和所述相应组的所述第二选通路径中的一些或全部。
11.一种数据缓存器,其特征在于,所述数据缓存器包括:
可用于传输读取或写入数据的数据路径;
第一选通路径,可用于传输第一读取或写入选通;
第二选通路径,可用于传输第二读取或写入选通;和
控制电路,用于响应于由所述数据缓存器接收的控制信号来控制所述数据路径、所述第一选通路径和所述第二选通路径;
其中,所述第一选通路径可用于使其自身被所述控制电路的启用或禁用与所述数据路径被所述控制电路的启用或禁用无关。
12.根据权利要求11所述的数据缓存器,其特征在于,所述第一选通路径可用于使其自身被所述控制电路的启用或禁用与所述第二选通路径被所述控制电路的启用或禁用无关。
13.根据权利要求11所述的数据缓存器,其特征在于,所述控制电路可用于:
响应于包括第一命令的控制信号,启用所述数据路径以传输写入数据,以及启用所述第一选通路径和所述第二选通路径中的至少一个以传输写入选通;
响应于包括第二命令的控制信号,启用所述第一选通路径以传输附加写入选通,以及禁用所述第二选通路径和所述数据路径;和
响应于包括第三命令的控制信号,启用所述数据路径以传输读取数据,启用所述第二选通路径以传输读取选通,以及禁用第一选通路径。
14.根据权利要求11所述的数据缓存器,其特征在于,所述第一选通路径在第一集成电路中,所述第二选通路径和所述数据路径在第二集成电路中。
15.根据权利要求14所述的数据缓存器,其特征在于,所述第一集成电路和所述第二集成电路是相同的。
16.根据权利要求14所述的数据缓存器,其特征在于,所述控制电路包括所述第一集成电路中的第一控制电路和所述第二集成电路中的第二控制电路,其中,所述控制信号包括由所述第一集成电路接收的第一组控制信号和由所述第二集成电路接收的第二组控制信号。
17.一种方法,其特征在于,所述方法包括:
应用于可在计算机系统中操作的存储器模块,所述计算机系统包括耦合到存储器通道的存储器控制器,所述存储器通道包括数据总线和控制/地址C/A总线,所述存储器模块包括耦合到所述存储器通道的易失性存储器子系统和耦合到所述易失性存储器子系统的模块控制器,所述易失性存储器子系统包括动态随机存取存储器DRAM装置;
执行存储器写入操作,包括经由所述数据总线从所述存储器控制器接收写入数据和写入选通,以及将所述写入数据和所述写入选通提供给所述易失性存储器子系统;和
执行存储器读取操作,包括将来自所述易失性存储器子系统的读取数据与来自所述模块控制器的读取选通一起输出到所述数据总线。
18.根据权利要求17所述的方法,其特征在于,所述存储器模块还包括耦合到所述模块控制器的非易失性NV存储器子系统,所述方法还包括:
执行数据传输写入操作,包括将NV数据从所述NV存储器子系统传输到所述模块控制器;
从所述存储器控制器接收NV写入选通;和
将所述NV数据与所述NV写入选通一起提供给所述易失性存储器子系统。
19.根据权利要求18所述的方法,其特征在于,所述方法还包括在所述易失性存储器子系统处:
经由所述C/A总线从所述存储器控制器接收虚拟写入存储器命令,以及
响应于经由所述C/A总线从所述存储器控制器接收所述虚拟写入存储器命令,根据所述NV写入选通来接收所述NV数据。
20.根据权利要求18所述的方法,其特征在于,所述方法还包括:
执行数据传输读取操作,包括从所述易失性存储器子系统读取DRAM数据,将所述DRAM数据提供给所述模块控制器,以及将所述DRAM数据与来自所述模块控制器的读取选通一起输出到所述数据总线。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962901221P | 2019-09-16 | 2019-09-16 | |
US17/023,302 US11513725B2 (en) | 2019-09-16 | 2020-09-16 | Hybrid memory module having a volatile memory subsystem and a module controller sourcing read strobes to accompany read data from the volatile memory subsystem |
US17/023,302 | 2020-09-16 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114265794A true CN114265794A (zh) | 2022-04-01 |
Family
ID=74868026
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111088557.1A Pending CN114265794A (zh) | 2019-09-16 | 2021-09-16 | 具有数据缓存功能的混合存储器模块、数据缓存器和方法 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11513725B2 (zh) |
CN (1) | CN114265794A (zh) |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7138823B2 (en) * | 2005-01-20 | 2006-11-21 | Micron Technology, Inc. | Apparatus and method for independent control of on-die termination for output buffers of a memory device |
US20070028027A1 (en) * | 2005-07-26 | 2007-02-01 | Micron Technology, Inc. | Memory device and method having separate write data and read data buses |
KR100744125B1 (ko) * | 2006-02-04 | 2007-08-01 | 삼성전자주식회사 | 데이터 라인들의 전자파 간섭을 감소시킬 수 있는 메모리시스템 |
US8874831B2 (en) * | 2007-06-01 | 2014-10-28 | Netlist, Inc. | Flash-DRAM hybrid memory module |
EP2156555A4 (en) * | 2007-06-05 | 2013-07-24 | Rambus Inc | TECHNIQUES FOR MULTIPLE CODING WITH AN EMBEDDED CLOCK |
US9128632B2 (en) * | 2009-07-16 | 2015-09-08 | Netlist, Inc. | Memory module with distributed data buffers and method of operation |
CN102881324B (zh) * | 2011-07-11 | 2015-07-08 | 澜起科技(上海)有限公司 | 写入电路、读取电路、内存缓冲器及内存条 |
US10838646B2 (en) * | 2011-07-28 | 2020-11-17 | Netlist, Inc. | Method and apparatus for presearching stored data |
US10198350B2 (en) * | 2011-07-28 | 2019-02-05 | Netlist, Inc. | Memory module having volatile and non-volatile memory subsystems and method of operation |
US9741442B2 (en) * | 2013-03-12 | 2017-08-22 | Sandisk Technologies Llc | System and method of reading data from memory concurrently with sending write data to the memory |
US9129674B2 (en) * | 2013-06-27 | 2015-09-08 | Intel Corporation | Hybrid memory device |
KR20160038034A (ko) * | 2013-07-27 | 2016-04-06 | 넷리스트 인코포레이티드 | 로컬 동기화를 갖는 메모리 모듈 |
US9612983B2 (en) * | 2013-08-12 | 2017-04-04 | Atmel Corporation | Peripheral registers with flexible data width |
KR20210081534A (ko) * | 2019-12-24 | 2021-07-02 | 삼성전자주식회사 | 반도체 메모리 장치 및 메모리 시스템 |
JP2022049453A (ja) * | 2020-09-16 | 2022-03-29 | キオクシア株式会社 | 送受信装置、ブリッジチップ、半導体記憶装置、および方法 |
-
2020
- 2020-09-16 US US17/023,302 patent/US11513725B2/en active Active
-
2021
- 2021-09-16 CN CN202111088557.1A patent/CN114265794A/zh active Pending
-
2022
- 2022-11-29 US US18/059,966 patent/US20230280937A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US11513725B2 (en) | 2022-11-29 |
US20230280937A1 (en) | 2023-09-07 |
US20210081138A1 (en) | 2021-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10380022B2 (en) | Hybrid memory module and system and method of operating the same | |
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 | |
US11243886B2 (en) | Hybrid memory module and system and method of operating the same | |
US9645746B2 (en) | Systems and methods for support of non-volatile memory on a DDR memory channel | |
JP6956115B2 (ja) | インテグラルポストパッケージリペア | |
CN107710175B (zh) | 存储器模块以及操作系统和方法 | |
KR20110007571A (ko) | 듀얼 인라인 메모리 모듈의 상변화 메모리 | |
US10866921B2 (en) | Apparatuses and methods for an operating system cache in a solid state device | |
US11561715B2 (en) | Method and apparatus for presearching stored data | |
US8006032B2 (en) | Optimal solution to control data channels | |
CN114902198B (zh) | 用于异构存储器系统的信令 | |
US20230385192A1 (en) | Memory module having volatile and non-volatile memory subsystems and method of operation | |
US11513725B2 (en) | Hybrid memory module having a volatile memory subsystem and a module controller sourcing read strobes to accompany read data from the volatile memory subsystem | |
JPH0390942A (ja) | 主記憶装置の制御方式 | |
US20070177415A1 (en) | High performance mass storage systems |
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 |