CN111684432A - 对存储媒体的同步存储器总线存取 - Google Patents
对存储媒体的同步存储器总线存取 Download PDFInfo
- Publication number
- CN111684432A CN111684432A CN201980011746.3A CN201980011746A CN111684432A CN 111684432 A CN111684432 A CN 111684432A CN 201980011746 A CN201980011746 A CN 201980011746A CN 111684432 A CN111684432 A CN 111684432A
- Authority
- CN
- China
- Prior art keywords
- memory
- page
- buffer
- host
- data
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 670
- 230000001360 synchronised effect Effects 0.000 title description 32
- 239000000872 buffer Substances 0.000 claims abstract description 137
- 238000012545 processing Methods 0.000 claims abstract description 74
- 230000004044 response Effects 0.000 claims abstract description 29
- 238000013507 mapping Methods 0.000 claims description 34
- 238000000034 method Methods 0.000 claims description 27
- 238000004891 communication Methods 0.000 claims description 22
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 28
- 238000012546 transfer Methods 0.000 description 21
- 239000010410 layer Substances 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 230000009977 dual effect Effects 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 239000007787 solid Substances 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 239000002356 single layer Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 239000000696 magnetic material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000002070 nanowire Substances 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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
-
- 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/1689—Synchronisation and timing concerns
-
- 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
-
- 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/1673—Details of memory controller using buffers
-
- 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
-
- 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/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
- G06F13/4243—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with synchronous protocol
-
- 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
- G06F2212/1024—Latency reduction
-
- 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/7201—Logical to physical mapping or translation of blocks or pages
-
- 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
-
- 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/40607—Refresh operations in memory devices with an internal cache or data buffer
-
- 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/40611—External triggering or timing of internal or partially internal refresh operations, e.g. auto-refresh or CAS-before-RAS triggered refresh
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)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种计算系统,其具有包含第一存储器及第二存储器的存储器组件,其中所述第一存储器可用于主机系统以在第一多个窗口中的一或多者期间经由存储器总线进行读取及写入存取。所述计算系统进一步包含处理装置,所述处理装置与所述存储器组件可操作地耦合以:从所述主机系统的驱动程序接收关于存储于所述第二存储器中的数据页的请求;响应于所述请求而将所述页从所述第二存储器传送到缓冲器;及将所述页从所述缓冲器写入到所述第一存储器,其中在对应于所述存储器总线的刷新时序的第二多个窗口中的至少一者期间将所述页写入到所述第一存储器,且在所述主机系统处控制所述刷新时序。
Description
相关申请案
本申请案主张斯托尼莱克(Stonelake)等人于2018年10月11日申请的标题为“对存储媒体的同步存储器总线存取(Synchronous Memory Bus Access to Storage Media)”的序列号为16/157,900的美国临时申请案及2018年2月5日申请的标题为“使用SRAM缓冲器对存储媒体及Dram的同步存储器总线存取(Synchronous Memory Bus Access to StorageMedia and Dram Using an SRAM Buffer)”的序列号为62/626,577的美国临时申请案的优先权,所述申请案的全部内容宛如全文陈述那样以引用方式并入本文中。
技术领域
本文中揭示的至少一些实施例大体上涉及存储器系统,且更特定来说(但非限制地)涉及对计算系统中的存储媒体的同步存储器总线存取。
背景技术
存储器子系统可为存储器模块,例如双列直插存储器模块(DIMM)、小型DIMM(SO-DIMM)或非易失性双列直插存储器模块(NVDIMM)。存储器子系统可为存储系统,例如固态硬盘(SSD)或硬盘机(HDD)。存储器子系统可包含存储数据的一或多个存储器组件。存储器组件可为例如非易失性存储器组件及易失性存储器组件。存储器组件的实例包含存储器集成电路。一些存储器集成电路是易失性的且需要电力来维持经存储数据。一些存储器集成电路是非易失性的且甚至在未被供电时仍可保留经存储数据。非易失性存储器的实例包含快闪存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)及电可擦除可编程只读存储器(EEPROM)存储器等。易失性存储器的实例包含动态随机存取存储器(DRAM)及静态随机存取存储器(SRAM)。一般来说,主机系统可利用存储器子系统来将数据存储于存储器组件处及从存储器组件检索数据。
例如,计算机可包含主机系统及附接到主机系统的一或多个存储器子系统。主机系统可具有与一或多个存储器子系统通信以存储及/或检索数据及指令的中央处理单元(CPU)。用于计算机的指令可包含操作系统、装置驱动程序及应用程序。操作系统管理计算机中的资源且为应用程序提供常见服务,例如存储器分配及资源的分时。装置驱动程序操作或控制计算机中的特定类型的装置;且操作系统使用装置驱动程序来提供由所述类型的装置提供的资源及/或服务。计算机系统的中央处理单元(CPU)可运行操作系统及装置驱动程序以将服务及/或资源提供到应用程序。中央处理单元(CPU)可运行使用服务及/或资源的应用程序。例如,实施一类型的计算机系统应用程序的应用程序可指示中央处理单元(CPU)将数据存储于存储器子系统的存储器组件中及从存储器组件检索数据。
计算机系统的操作系统可允许应用程序使用虚拟存储器地址来将数据存储于计算机系统的一或多个存储器子系统的存储器组件中或从计算机系统的一或多个存储器子系统的存储器组件检索数据。操作系统将连接到计算机系统的中央处理单元(CPU)的一或多个存储器子系统的虚拟地址映射到物理地址。操作系统使用存储器子系统的物理地址实施虚拟地址处指定的存储器存取。
虚拟地址空间可被划分为页。可将虚拟存储器页映射到存储器子系统中的物理存储器页。操作系统可使用分页技术以经由存储器模块中的存储器页存取存储装置中的存储器页。在不同时间例子,存储器模块中的相同存储器页可用作存取存储装置中的不同存储器页或计算机系统中的另一存储装置的代理。
计算机系统可包含用于建立或布建虚拟机的超管理器(或虚拟机监测器)。虚拟机是使用计算机系统中可用的资源及服务虚拟地实施的计算装置。超管理器将虚拟机呈现给操作系统,宛如虚拟机的组件是专用物理组件一样。客户操作系统在虚拟机中运行以依与运行于计算机系统中的主机操作系统类似的方式管理虚拟机中可用的资源及服务。超管理器允许多个虚拟机共享计算机系统的资源且允许虚拟机在计算机上基本上彼此独立地操作。
附图说明
在随附图式的图中通过实例且非限制的方式说明实施例,其中相似参考指示类似元件。
图1说明根据本发明的一些实施例的具有存储器子系统的实例计算系统。
图2展示根据本发明的一些实施例的计算系统,其具有不同类型的存储器且运行用于对存储媒体进行同步存储器总线存取的指令。
图3展示根据本发明的一些实施例的存储器模块,其经配置用于由主机系统对存储器模块的非易失性存储器进行同步存储器总线存取。
图4展示根据本发明的至少一些实施例的使用同步存储器总线存取来存取存储器模块的主机操作系统。
图5展示根据本发明的一些实施例的用于对存储媒体进行同步存储器总线存取的方法。
图6是其中可操作本发明的实施例的实例计算机系统的框图。
具体实施方式
本发明的至少一些方面涉及对具有一或多个存储器子系统的计算系统中的存储媒体的同步存储器总线存取。存储器子系统在下文中也称为“存储器装置”。存储器子系统的实例是经由存储器总线连接到中央处理单元(CPU)的存储器模块。存储器模块的实例包含双列直插存储器模块(DIMM)、小型DIMM(SO-DIMM)、非易失性双列直插存储器模块(NVDIMM)等。存储器子系统的另一实例是经由外围互连(例如,输入/输出总线、存储局域网络)连接到中央处理单元(CPU)的存储装置。存储装置的实例包含固态硬盘(SSD)、快闪随身碟、通用串行总线(USB)快闪随身碟及硬盘机(HDD)。在一些实施例中,存储器子系统是提供存储器功能及存储功能两者的混合存储器/存储子系统。一般来说,主机系统可利用包含一或多个存储器组件的存储器子系统。主机系统可提供待存储于存储器子系统处的数据且可请求待从存储器子系统检索的数据。
在常规系统中,主机可存取各种类型的存储器,包含易失性存储器及非易失性存储器。已认识到,非易失性存储器(例如,交叉点存储器)是通常具有比易失性存储器(例如,DRAM)长的响应时间的存储器技术。此较长响应时间可防止在同步总线(例如,DDR4总线)上支持非易失性存储器,此可导致主机需更长存取时间来存取存储于非易失性存储器中的数据。
本发明的至少一些方面通过使用提供对存储媒体(例如,非易失性存储器)的同步存储器总线存取的同步组件而解决上述及其它缺陷。在各个实施例中,存储器系统通过使用同步存储器总线而提供对存储于例如存储器模块(例如,DIMM)上的非易失性存储器中的数据的主机存取。将存储于非易失性存储器中的数据(例如,主机期望存取的数据页)移入及移出存储器模块的存储器缓冲器(例如,SRAM),使得可类似于存取存储于易失性存储器中的数据(例如,使用DDR4总线存取DRAM)那样使用存储器总线存取存储于非易失性存储器中的数据。因此,可通过使用同步存储器总线存取而加速通过主机的存储器存取。
在一个实例中,易失性存储器是DRAM,且非易失性存储器是交叉点存储器(例如,3DXP存储器)。主机系统经由DDR4存储器总线存取DRAM。例如,缓冲器可为用作用于3DXP与DRAM之间的数据传送的瞬时缓冲器的SRAM。例如,3DXP数据可随时移动到SRAM缓冲器或从SRAM缓冲器移动(与主机DDR存储器总线的状态无关)。主机可从SRAM缓冲器存取页入(paged-in)的3DXP数据,或在所述数据已从SRAM缓冲器到达DRAM之后存取所述数据。
更明确来说,在一个实例中,DDR4存储器总线是同步总线且需要预定响应时间以正确操作。例如,3D交叉点存储器附接到一组常规DRAM后面的DIMM上的DDR4总线。典型DIMM可具有例如可由主机使用DDR4同步时序存取的16到32个千兆位组的DRAM存储器。
各个实施例通过保留一或多个DRAM刷新循环使得主机在这些经保留时间帧期间不发出存取DRAM的读取或写入命令而提供经由DDR4总线对DIMM上的3DXP存储器中的数据的存取。在一个实施例中,针对DRAM总线人为地增加DRAM的刷新速率。此意味着主机控制器产生比在正常操作期间刷新DRAM实际上所需更频繁的刷新命令。经保留刷新循环的一或多者用于经由DIMM上的DRAM控制器本身将数据移动到位于所述DRAM后面的3D交叉点存储器及从位于所述DRAM后面的3D交叉点存储器移动数据。
在一个实施例中,如果将以先前常规方式添加3DXP,那么混合DIMM包含DRAM及3DXP两者以在需要可能超过3DXP的性能级的响应时间的DDR4总线上操作。然而,根据各个实施例,混合DIMM上的存储器系统控制器与已经配置以请求一或多个额外刷新循环的主机系统通信。存储器系统控制器使用额外刷新循环以在DDR4 DRAM与作为DIMM的部分的SRAM缓冲器之间传送数据,使得使用3DXP存储媒体不需要改变在DDR存储器总线上通信时的主机操作(例如,主机可以与存取常规DRAM类似或相同的方式操作)。
在一个实施例中,可在任何时间排程到3DXP或从3DXP到双端口SRAM的第一端口的传送。仅到/从SRAM缓冲器及DRAM的传送需要与经保留刷新循环同步。双端口SRAM的第二端口作为DDR地址空间的部分暴露于主机,且可在刷新未在DDR地址空间的SRAM部分上起作用的任何时间存取。
在一个实例中,主机的BIOS经配置以在主机开机时引起主机操作系统(OS)设置刷新时序(例如,经由配置tREFI/tRFC参数)。当OS使用这些定制tREFI/tRFC参数时,存储器系统控制器可匹配用于存取3DXP的时序(经由SRAM缓冲器)及用于存取DRAM的时序。
在一个实施例中,如果SRAM匹配DRAM的全时序要求(且不仅仅是tREFI/tRFC),那么存储器系统控制器可暴露在DRAM地址空间的一部分内或作为DRAM地址空间的扩展的SRAM。为暴露DRAM地址空间内的SRAM,存储器系统控制器解码激活(ACTIVATE)命令且将其传递到不被拦截的DRAM行。否则,存储器系统控制器将捕获所述激活命令且以从SRAM读取或写入到SRAM对目标为经激活存储体及行的接下来的读取/写入(READ/WRITE)命令作出响应。
为暴露作为DRAM空间的扩展的SRAM,存储器系统控制器解码CS或CiD信号且对来自SRAM的专用CS/CiD(秩)上的全部DRAM命令作出响应。SRAM地址空间小于DRAM,因此所述CS/CiD(秩)上的较大地址混叠到SRAM地址空间中。系统软件可意识到且仅使用匹配SRAM大小的额外CS/CiD(秩)的部分。
在一个实施例中,当系统配置有定制tREFI/tRFC参数时,存储器系统控制器可额外地使用额外刷新循环来同步SRAM与DRAM之间的传送。此是通过存储器系统控制器基于计数器拦截刷新(REFRESH)命令且决定是否应将刷新命令转送到DRAM而完成。如果不应将刷新命令转送到DRAM,那么可用NOP命令取代刷新命令或可抑制DRAM CS,使得DRAM不执行刷新命令。在所述相同刷新循环中,存储器系统控制器自由地将命令发出到DRAM以实施到/从SRAM的传送。
另外,存储器系统控制器可维持映射到SRAM缓冲器的DDR页映射表,以在数据已在SRAM缓冲器中的情况中加速数据存取。在一个实施例中,存储器系统控制器解码DDR激活命令,且控制器使用查找表或CAM来确定目标存储体及行是否已重新映射到SRAM或应传递到DRAM。存储器系统控制器中的映射表支持页的透明重新映射(从主机系统及主机存储器控制器视角看)。因此,在已将3DXP页从SRAM复制到DRAM之后,可更新映射表使得存取从SRAM重新引导到DRAM。只要已在经保留刷新循环期间传送整个DRAM页,主机便不会意识到数据已从SRAM移动到DRAM。
图1说明根据本发明的一些实施例的具有存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如存储器组件109A到109N。存储器组件109A到109N可为易失性存储器组件、非易失性存储器组件或此类组件的组合。在一些实施例中,存储器子系统110是存储器模块。存储器模块的实例包含DIMM及NVDIMM。在一些实施例中,存储器子系统是存储系统。存储系统的实例是SSD。在一些实施例中,存储器子系统110是混合存储器/存储子系统。一般来说,计算环境可包含使用存储器子系统110的主机系统120。例如,主机系统120可将数据写入到存储器子系统110及从存储器子系统110读取数据。
主机系统120可为计算装置,例如桌面计算机、膝上型计算机、网络服务器、移动装置或包含存储器及处理装置的此计算装置。主机系统120可包含或耦合到存储器子系统110,使得主机系统120可从存储器子系统110读取数据或将数据写入到存储器子系统110。主机系统120可经由物理主机接口耦合到存储器子系统110。如本文中所使用,“耦合到”一般指代组件之间的连接,其可为间接通信连接或直接通信连接(例如,不具有介入组件),无论是有线还是无线,包含例如电连接、光学连接、磁性连接等的连接。物理主机接口的实例包含(但不限于)串行高级技术附接(SATA)接口、快速外围组件互连(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接SCSI(SAS)、双倍数据速率(DDR)存储器总线等。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。主机系统120可进一步利用快速NVM(NVMe)接口以在存储器子系统110通过PCIe接口与主机系统120耦合时存取存储器组件109A到109N。物理主机接口可提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据及其它信号的接口。图1说明存储器子系统110作为实例。一般来说,主机系统120可经由相同通信连接、多个单独通信连接及/或通信连接组合存取多个存储器子系统。
主机系统120包含处理装置118及控制器116。主机系统120的处理装置118可为例如微处理器、中央处理单元(CPU)、处理器的处理核心、执行单元等。在一些例子中,控制器116可被称为存储器控制器、存储器管理单元及/或启动器。在一个实例中,控制器116控制经由耦合于主机系统120与存储器子系统110之间的总线进行的通信。
一般来说,控制器116可将命令或请求发送到存储器子系统110以对存储器组件109A到109N进行所要存取。控制器116可进一步包含用于与存储器子系统110通信的接口电路系统。接口电路系统可将从存储器子系统110接收的响应转换成用于主机系统120的信息。
主机系统120的控制器116可与存储器子系统110的控制器115通信以执行例如在存储器组件109A到109N处读取数据、写入数据或擦除数据的操作及其它此类操作。在一些例子中,控制器116集成于处理装置118的相同封装内。在其它例子中,控制器116与处理装置118的封装分离。控制器116及/或处理装置118可包含硬件,例如一或多个集成电路及/或离散组件、缓冲存储器、高速缓存或其组合。控制器116及/或处理装置118可为微控制器、专用逻辑电路系统(例如,场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一适合处理器。
存储器组件109A到109N可包含不同类型的非易失性存储器组件及/或易失性存储器组件的任何组合。非易失性存储器组件的实例包含与非(NAND)型快闪存储器。存储器组件109A到109N中的每一者可包含一或多个存储器单元阵列,例如单层单元(SLC)或多层单元(MLC)(例如,三层单元(TLC)或四层单元(QLC))。在一些实施例中,特定存储器组件可包含存储器单元的SLC部分及MLC部分两者。存储器单元中的每一者可存储由主机系统120使用的一或多个数据位(例如,数据块)。尽管描述非易失性存储器组件(例如NAND型快闪存储器),但存储器组件109A到109N可基于任何其它类型的存储器,例如易失性存储器。在一些实施例中,存储器组件109A到109N可为(但不限于)随机存取存储器(RAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、相变存储器(PCM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、铁电随机存取存储器(FeTRAM)、铁电RAM(FeRAM)、导电桥接RAM(CBRAM)、电阻式随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM)、基于纳米线的非易失性存储器、并有忆阻器技术的存储器,及交叉点非易失性存储器单元阵列。交叉点非易失性存储器阵列可基于体电阻变化、结合可堆叠交叉网格数据存取阵列执行位存储。另外,与许多基于快闪的存储器相反,交叉点非易失性存储器可执行就地写入操作,其中可在先前未擦除非易失性存储器单元的情况下编程所述非易失性存储器单元。此外,存储器组件109A到109N的存储器单元可被分组为可指代用于存储数据的存储器组件的单位的存储器页或数据块。
存储器子系统110的控制器115可与存储器组件109A到109N通信以执行例如在存储器组件109A到109N处读取数据、写入数据或擦除数据的操作及其它此类操作(例如,对由控制器116排程于命令总线上的命令作出响应)。控制器115可包含硬件,例如一或多个集成电路及/或离散组件、缓冲存储器或其组合。控制器115可为微控制器、专用逻辑电路系统(例如,场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一适合处理器。控制器115可包含处理装置117(处理器),处理装置117经配置以执行存储于本地存储器119中的指令。在所说明实例中,控制器115的本地存储器119包含嵌入式存储器,所述嵌入式存储器经配置以存储用于执行控制存储器子系统110的操作(包含处置存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程及例程的指令。在一些实施例中,本地存储器119可包含存储存储器指针、经提取数据等的存储器寄存器。本地存储器119还可包含用于存储微代码的只读存储器(ROM)。虽然图1中的实例存储器子系统110已被说明为包含控制器115,但在本发明的另一实施例中,存储器子系统110可不包含控制器115,且可替代地依赖于外部控制(例如,其由外部主机、或由与存储器子系统分离的处理器或控制器提供)。
一般来说,控制器115可从主机系统120接收命令或操作,且可将命令或操作转换成用于实现对存储器组件109A到109N的所要存取的指令或适当命令。控制器115可负责与存储器组件109A到109N相关联的其它操作,例如损耗均衡操作、废弃项目收集操作、错误检测及错误校正码(ECC)操作、加密操作、高速缓存操作及逻辑块地址与物理块地址之间的地址转译。控制器115可进一步包含用于经由物理主机接口与主机系统120通信的主机接口电路系统。主机接口电路系统可将从主机系统接收的命令转换成用于存取存储器组件109A到109N的命令指令,以及将与存储器组件109A到109N相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓存或缓冲器(例如,DRAM或SRAM)及可从控制器115接收地址且解码所述地址以存取存储器组件109A到109N的地址电路系统(例如,行解码器及列解码器)。
计算系统100包含主机系统120中的同步组件113,同步组件113结合缓冲器121运作以提供对存储器子系统110中的存储媒体的同步存储器总线存取。在一个实例中,缓冲器121是SRAM。存储器子系统110可经由DDR或其它类型的同步存储器总线为主机系统120提供对存储媒体(例如,3DXP存储器)中的数据的存取。在一个实施例中,通过保留一或多个DRAM刷新循环使得主机系统120在经保留循环期间不发出存取DRAM的读取或写入命令而提供对DIMM上的3DXP存储器中的数据的存取。经保留刷新循环的一或多者用于在缓冲器121与DIMM上的DRAM存储器之间移动数据。相比之下,3DXP存储器到缓冲器121传送不需要与经保留刷新循环同步。接着,可在主机系统121的DRAM存储器地址空间中存取经移动数据以在经由DDR存储器总线进行的正常主机读取/写入请求期间存取。
在一个实例中,主机系统120将页入请求(用于存取页)发送到控制器115。响应于接收到页入请求,控制器115将页从慢速媒体(例如非易失性存储器)移动到易失性存储器(例如,存储器子系统110上的DRAM)。
在一个实例中,主机系统120将页出请求发送到控制器115。响应于接收到页出请求,控制器115经由缓冲器121将数据从易失性存储器(例如,存储器子系统110上的DRAM)移出到非易失性存储器。在已出于此目的保留的一或多个刷新循环期间,将数据从易失性存储器移出到缓冲器121。接着,将数据从缓冲器121移动到非易失性存储器(例如,3DXP)。在一个实施例中,从缓冲器121(例如,SRAM)到3DXP存储器的数据移动不存在特定时序要求。
例如,已认识到,DRAM与SRAM缓冲器之间的数据移动(例如,针对页入及页出请求)受从主机系统120到存储器子系统110(例如,DIMM)的DDR总线信号的限制。还已认识到,在主机系统正存取DIMM中的DRAM时,使用缓冲器从主机系统120捕获DDR信号可减慢性能。而且,使用缓冲器从主机系统120捕获DDR信号可提高接口电路系统(例如,其使用DDR插槽)的成本及复杂性。本文中的各个实施例通过使用经由同步组件113及缓冲器121的存储器总线同步而克服这些缺陷。
在一些实施例中,主机系统120中的控制器116及/或处理装置118包含同步组件113的至少一部分。例如,控制器116及/或处理装置118可包含实施同步组件113的逻辑电路系统。例如,主机系统120的处理装置118(处理器)可经配置以执行存储于存储器中的指令而执行控制同步组件113的存储器总线时序的操作,如本文中描述。在一些实施例中,同步组件113是主机系统120的操作系统、装置驱动程序或应用程序的部分。
在一个实例中,中央处理单元(CPU)可存取连接到CPU的存储器系统中的存储器。例如,中央处理单元(CPU)可经配置以使用同步组件113存取存储器。例如,非易失性存储器无法由CPU直接寻址,且其耦合到可由CPU直接寻址的易失性存储器。经由易失性存储器存取非易失性存储器,从而将数据交换到缓冲器121及从缓冲器121交换数据且使用同步组件113控制存储器存取。
图2展示具有不同类型的存储器的计算系统。根据本发明的一些实施例,计算系统执行用于对存储媒体进行同步存储器总线存取的指令。图2的计算系统包含主机系统120及经由存储器总线203连接到主机系统120的存储器模块205。存储器模块205是图1中说明的存储器子系统110的实例。
主机系统120具有处理装置118,处理装置118可为中央处理单元或具有一或多个处理核心的微处理器。主机系统120可具有高速缓存211。高速缓存211的至少一部分可任选地集成于处理装置118的相同集成电路封装内。
图2中说明的存储器模块205具有多种类型的存储器(例如,221及223)。例如,A型存储器221(例如,DRAM)比B型存储器223(例如,3DXP)快。例如,存储器总线203可为双倍数据速率总线。一般来说,数个存储器模块(例如,205)可耦合到存储器总线203。
处理装置118经由指令(例如,操作系统及/或一或多个装置驱动程序)配置以使用同步组件113经由计算机系统中的存储器的一部分存取计算机系统中的存储器的另一部分。例如,存储器模块205的B型存储器223(例如,3DXP)可经由存储器模块205的A型存储器221(例如,DRAM)存取。例如,存储器模块205的B型存储器223仅可通过寻址存储器模块205的A型存储器221而存取。
控制器227可提供于存储器模块205中以管理存储器模块205内的A型存储器221与B型存储器223之间的数据传送。在一个实施例中,在将数据传送到缓冲器121或从缓冲器121传送数据时,控制器227多任务通过主机系统120及存储器模块205两者对DRAM的存取。在一个实例中,存储器总线203提供主机DDR通道作为主机系统120与存储器模块205之间的DDR接口。
在一个实例中,一旦页从3DXP存储器捕获到缓冲器121中,就可将所述页载入到DRAM中以由主机经由常规DDR4插槽(例如,主机DDR通道)存取。为将页换出DRAM,数据从DRAM移动到缓冲器121且接着到3DXP存储器。
一般来说,存储器子系统(例如,205)可包含例如存储器(例如,221、...、223)的媒体。存储器(例如,221、...、223)可包含易失性存储器、非易失性存储器(NVM)及/或此类存储器的组合。在一些实施例中,计算机系统包含至少一个存储器子系统,即存储装置(未展示)。存储装置的实例是固态硬盘(SSD)。在一些实施例中,计算机系统包含至少一个存储器子系统,即配置为存储器模块205的混合存储器/存储系统。处理装置118可将数据写入到存储器子系统(例如,205)中的每一者且直接地或间接地从存储器子系统(例如,205)读取数据。
在一个实施例中,存储器模块205通过使用缓冲器121而经由易失性存储器提供对非易失性存储媒体的同步存储器总线存取。在一个实例中,存储器模块205是经由DDR总线耦合到主机系统120的DIMM。存储媒体是例如交叉点存储器(例如,3DXP)。存储于存储媒体中的数据的部分使用经保留刷新循环换入及换出DRAM(经由SRAM缓冲器),如下文描述。存储媒体与SRAM缓冲器之间的传送可在任何时间发生(例如,使用双端口SRAM)。
在一个实施例中,主机经由通信通道与存储器模块通信以进行读取/写入操作(例如,使用DDR4总线)。主机可为具有一或多个中央处理单元(CPU)的服务器或其它计算机,计算机外围装置(例如存储器模块)可经由互连(例如计算机总线(例如,外围组件互连(PCI)、扩展PCI(PCI-X)、快速PCI(PCIe))、通信部分及/或计算机网络)附接到所述服务器或其它计算机。
在一个实施例中,存储器模块可用于将主机的数据存储于非易失性存储媒体中,但经由同步DRAM存储器接口进行存取,如本文中描述。存储器模块具有主机接口,所述主机接口使用通信通道实施与主机的通信。
在一个实施例中,存储器模块205具有运行例如固件以响应于来自主机的通信而执行操作的控制器227。这些操作包含在预期执行于主机上的软件的即将到来的需求时将数据页移动到存储媒体及从存储媒体移动数据页。固件在操作存储器模块(例如在经保留刷新循环期间将数据换入及换出缓冲器121)时控制控制器227的操作,如下文更详细论述。
在一个实施例中,如上述,非易失性存储媒体是交叉点存储器。在其它实施例中,存储媒体可使用不同类型的存储器(例如,不同类型的存储类存储器)。例如,存储媒体中的存储器单元可使用各种存储器/存储技术(例如基于NAND门的快闪存储器、相变存储器(PCM)及电阻式随机存取存储器)来实施,使得存储媒体是非易失性的。
存储器模块包含易失性动态随机存取存储器(DRAM)。DRAM将可由主机存取的数据存储于DRAM存储器地址空间中。在一个实例中,根据各个实施例,交叉点存储及存储器装置(例如,3DXP存储器)具有可与DRAM相当的数据存取性能。
图2的计算系统可用于实施桌面计算机、膝上型计算机、网络服务器、移动装置或包含存储器及处理装置的此计算装置。处理装置118可从存储器子系统(例如,205)读取数据或将数据写入到存储器子系统(例如,205)。
处理装置118可经由一或多个物理接口(例如,203)耦合到存储器子系统(例如,205)。如本文中所使用,“耦合到”一般指代组件之间的连接,其可为间接通信连接或直接通信连接(例如,不具有介入组件),无论是有线还是无线,包含例如电连接、光学连接、磁性连接等的连接。
物理主机接口可用于在处理装置118与存储器子系统(例如,205)之间传输数据。物理主机接口可提供用于在存储器子系统(例如,205)与处理装置118之间传递控制、地址、数据及其它信号的接口。
一般来说,存储器子系统(例如,205)包含连接提供存储器(例如,221、...、223)的一组存储器装置(例如存储器集成电路)的印刷电路板。存储器子系统(例如,205)上的存储器(例如,221、...、223)可包含不同类型的非易失性存储器装置及/或易失性存储器装置的任何组合。
非易失性存储器装置的实例包含与非(NAND)型快闪存储器或或非(NOR)型快闪存储器。存储器集成电路可包含一或多个存储器单元阵列,例如单层单元(SLC)、多层单元(MLC)、三层单元(TLC)、四层单元(QLC)等。在一些实施方案中,特定存储器装置可包含存储器单元的SLC部分及MLC(或TLC或QLC)部分两者。存储器单元中的每一者可存储由主机系统120使用的一或多个数据位。尽管描述非易失性存储器装置(例如NAND型快闪存储器),但存储器集成电路可基于任何其它类型的存储器,例如易失性存储器。在一些实施方案中,存储器(例如,221、...、223)可包含(但不限于)随机存取存储器(RAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、相变存储器(PCM)、磁随机存取存储器(MRAM)、或非(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM)及/或交叉点非易失性存储器单元阵列。交叉点非易失性存储器阵列可基于体电阻变化、结合可堆叠交叉网格数据存取阵列执行位存储。另外,与许多基于快闪的存储器相反,交叉点非易失性存储器可执行就地写入操作,其中可在先前未擦除非易失性存储器单元的情况下编程所述非易失性存储器单元。此外,存储器装置的存储器单元可被分组为可指代用于存储数据的存储器装置的单位的存储器页或数据块。
存储器子系统(例如,205)可具有控制器(例如,227),所述控制器与存储器(例如,221、...、223)通信以响应于来自处理装置118、命令或指令而执行例如在存储器(例如,221、...、223)中读取数据、写入数据或擦除数据的操作及其它此类操作。控制器(例如,227)可包含硬件,例如一或多个集成电路及/或离散组件、缓冲存储器或其组合。控制器(例如,227)可为微控制器、专用逻辑电路系统(例如,场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一适合处理器。控制器(例如,227)可包含经配置以执行存储于本地存储器中的指令的一或多个处理器(处理装置)。
控制器(例如,227)的本地存储器可包含嵌入式存储器,所述嵌入式存储器经配置以存储用于执行控制存储器子系统(例如,205)的操作(包含处置存储器子系统(例如,205)与处理装置118之间的通信及下文更详细描述的其它功能)的各种过程、操作、逻辑流程及例程的指令。控制器(例如,227)的本地存储器可包含用于存储微代码的只读存储器(ROM)及/或存储例如存储器指针、经提取数据等的存储器寄存器。
虽然图2中的实例存储器子系统205已被说明为包含控制器227,但在本发明的另一实施例中,存储器子系统(例如,205)可不包含控制器(例如,227),且可替代地依赖于外部控制(例如,其由与存储器子系统(例如,205)分离的处理器或控制器提供)。
一般来说,控制器(例如,227)可根据用于通信通道(例如,203)的标准通信协议从处理装置118接收命令、请求或指令,且可遵循所述标准协议将命令、请求或指令转换成存储器子系统(例如,205)内的详细指令或适当命令,以实现对存储器(例如,221、...、223)的所要存取。例如,控制器(例如,227)可负责与存储器(例如,221、...、223)相关联的操作,例如损耗均衡操作、废弃项目收集操作、错误检测及错误校正码(ECC)操作、加密操作、高速缓存操作及逻辑块地址与物理块地址之间的地址转译。控制器(例如,227)可进一步包含用于经由物理主机接口与处理装置118通信的主机接口电路系统。主机接口电路系统可将从处理装置118接收的命令转换成用于存取存储器装置(例如,221、...、223)的命令指令以及将与存储器装置(例如,221、...、223)相关联的响应转换成用于处理装置118的信息。
存储器子系统(例如,205)还可包含未说明的额外电路系统或组件。在一些实施方案中,存储器子系统(例如,205)可包含高速缓存或缓冲器(例如,DRAM)及可从控制器(例如,227)接收地址且解码所述地址以存取存储器(例如,221、...、223)的地址电路系统(例如,行解码器及列解码器)。
在一个实例中,存储器总线203具有用于对存储器子系统(例如,205)提供电力及/或经由预定协议与存储器子系统(例如,205)通信的一或多个连接器;且存储器子系统(例如,205)具有用于从处理装置118接收电力、数据及命令的一或多个连接器。
一般来说,处理装置118可执行一或多个操作系统以提供服务,包含存储器存取,其中使用同步存储器存取经由计算机系统中的存储器的一部分(例如,DRAM)存取计算机系统中的存储器的另一部分(例如,存储于3DXP中的页),如下文进一步论述。
图3展示根据本发明的一些实施例的存储器模块401,其经配置用于通过主机系统(例如,主机系统120)对存储器模块401的非易失性存储器404(例如,3DXP)进行同步存储器总线存取。存储器模块401是存储器子系统110或存储器模块205的实例。在一个实例中,存储器模块401是混合DIMM。
存储器模块401包含易失性存储器402(例如,DRAM)、缓冲器410(例如,SRAM)及用于存取非易失性存储器404的媒体控制器414。存储器模块401还包含缓冲控制器412,缓冲控制器412控制非易失性存储器404与缓冲器410之间及缓冲器410与易失性存储器402之间的数据移动(例如,响应于页入或页出请求)。缓冲器410是缓冲器121的实例。
存储器模块401使用多路复用器408来提供通过存储器控制器416及存储器控制器418两者对易失性存储器402的存取。在一个实施例中,多路复用器408受缓冲控制器412控制(例如,基于从存储器控制器416接收的信号,如经由主机接口406从主机系统120接收的读取或写入命令)。
存储器控制器416耦合到主机接口406以处置通过主机系统的读取/写入存取。存储器控制器418耦合到缓冲控制器412以在将数据移动到缓冲器410或从缓冲器410移动数据时处置通过缓冲控制器412的读取/写入存取。
在一个实施例中,缓冲控制器412维持映射表403。在一个实例中,映射表403包含映射到缓冲器410的页的清单。在一个实例中,缓冲控制器412使用映射表403来确定是否使用易失性存储器402或缓冲器410服务来自主机系统的读取或写入命令。
在一个实例中,易失性存储器402是DRAM,其可由主机系统经由主机接口406(例如,DDR4插槽)存取,且也由存储器模块401(例如,DIMM)内的缓冲控制器412存取。因为DDR4DRAM可从两侧操作,所以来自DDR4插槽及缓冲控制器412两者的频率是同步的。
在操作中,主机系统通过DDR4插槽读取/写入DDR4数据。通过DDR4插槽间接地存取非易失性存储器404(例如,3DXP存储器)中的内容。例如,为操作3DXP中的页,使用页入/页出控制路径(例如,经由存储器总线203实施为控制通道)来请求存储器模块401将3DXP页换入到DDR4 DRAM中(或将现存页换出DDR4 DRAM)。
在一个实例中,响应于页入请求,缓冲控制器412从3DXP存储器读取页且将页移动到缓冲器410(例如,SRAM)中。SRAM足够快以匹配主机接口406处的DDR4操作循环。可通过缓冲控制器412使用以存取存储器控制器416(例如,DDR4从属机)的时序循环与存储器总线上的DDR4通道的时序循环匹配,此是因为此时序受主机系统控制。
当主机系统使用DDR4通道时,缓冲控制器412不存取DDR4 DRAM。主机系统允许DDR4 DRAM在特定刷新循环(例如,tRFC)中执行其自身的任务。在此类循环中,缓冲控制器412可在DDR4 DRAM与缓冲器410之间传送数据。主机系统与存储器模块401之间的协调使得主机系统发出足够刷新循环,使得缓冲控制器412可使用这些循环来在DDR4 DRAM与缓冲器410之间移动数据以换入/换出3DXP页。为换出页,缓冲控制器412在经保留刷新循环期间从DDR4 DRAM读取所述页的数据,将其缓冲于缓冲器410中,且随后接着将页保存到3DXP存储器。
在一个实例中,主机系统存取存储器模块401(例如,DIMM)上的存储器空间(例如,DRAM存储器地址空间)。DIMM将其自身暴露于主机作为DRAM的通道。例如,从主机软件视角来看,16GB的DRAM可像正常DRAM一样操作,直到实施同步组件113的驱动程序被加载于主机中。驱动程序被加载于主机的超管理器中。例如,驱动程序是从主机的硬驱动加载。
在一个实例中,驱动程序使用控制路径来请求3DXP数据块(例如4K字节块或更大)以移入及移出DIMM上的各种DRAM地址。驱动程序及超管理器具有DRAM地址与3DXP数据之间的映射(例如,参见下文论述的图4的映射表246)。
在一个实施例中,驱动程序及超管理器控制DIMM上的数据移动。例如,请求将3DXP块移入及移出DRAM地址空间且将DRAM页暴露于运行于主机上的软件。软件例如在虚拟机(VM)中执行。一旦映射已通过驱动程序进行,主机便可类似于常规DRAM存储器般存取DRAM中的所述页。因此,可使用主机系统的CPU执行读取及写入操作使得可存取所映射的页内的任何数据。
在一个实例中,提供页入/页出控制路径以供驱动程序请求当前在DRAM中、待写回到3DXP存储器的页,或请求当前在3DXP存储器中的不在待页入DRAM中的页。在一个实例中,3DXP存储器具有远大于DRAM的容量(例如,DIMM上的128GB的3DXP存储器)。因此,主机系统处的软件在任一时间最多可存取所述容量的16GB。主机系统处的驱动程序控制在任一时间暴露总容量的哪一16GB部分。通常,此可使用4K字节粒度(例如,使用4K字节页)来实施。
在一个实例中,存储器模块401实施为DIMM。非易失性存储器404(存储媒体)是由交叉点存储器封装提供。缓冲控制器412经由媒体控制器414与交叉点存储器封装通信(且也可包含对来自交叉点存储器的读取及写入的ECC管理)。例如,最初从交叉点存储器获得的数据页被复制入及复制出缓冲器410(页入/页出)。在一个实例中,DDR从属机附接到主机DDR总线(例如,DDR4插槽),且主机存取请求通过DDR控制器到来。易失性存储器402是DRAM,且主机读取/写入请求经由存储器控制器416引导到DRAM。
在一个实例中,DDR从属机循环经保留用于SRAM传送。例如,在室温下的正常DRAM刷新循环具有每7.8微秒的频率(例如,刷新tRFC的时序)。当实施同步组件113时,主机系统经配置以实施比实际上刷新DRAM所需快的刷新频率(例如,主机比正常频率更频繁地控制刷新循环)。在一个实例中,刷新频率增加四倍。针对此四个刷新循环中的一个循环,在主机刷新的控制下执行同步,且此触发存储器模块401的内部DRAM上发生刷新。对于四个刷新循环中的其它三个循环,这些刷新循环是闲置循环,其中缓冲控制器412可在主机不知道或未由主机控制的情况下在缓冲器410与DRAM之间进行读取及写入。因此,交叉点存储器的较低速度带宽及较长延时时间与将所述数据传送到DDR接口中且使数据可用于标准DDR4主机(例如,主机系统120)的能力之间存在匹配。
在一个实例中,主机系统可使用正常DDR4时序对任何DRAM地址进行读取/写入存取。例如,主机可在所述时间期间为每个DDR4角色产生任意业务。
在一个实施例中,关于通过缓冲器410对DRAM进行的读取/写入存取,经保留刷新循环提供可将3DXP数据推送到DRAM及从DRAM推送3DXP数据的时间窗口。缓冲控制器412可读取及写入3DXP存储器且随时将数据暂存(stage)于缓冲器410中(缓冲器410是用于从3DXP存储器读取及写入到3DXP存储器的暂存缓冲器(staging buffer))。在经保留用于由缓冲控制器412使用的刷新时段(例如,tRFC)期间,可将经暂存数据从缓冲器410推送到DRAM(在主机不知道的情况下)。在一个实例中,在tRFC循环期间,将来自交叉点存储器的新页读取到DRAM地址中。所述页现可用于主机以在下一主机读取/写入循环中读取及写入。
在一个实例中,缓冲器410用作速度匹配缓冲器,使得主机可在常规主机循环(例如,tREFI)期间接收数据(其存储于3DXP存储器中)。此结果是通过将数据从缓冲器410推送到内部DRAM而实现,如上文描述。
在一个实例中,存储器控制器416的DDR4从属机与缓冲控制器412介接以实施缓冲器410(例如,SRAM)的使用。DDR4从属机可接收命令地址及数据。例如,使用可在DDR 2667处运行的高性能IO(可包含ZQ校准)。在一个实施例中,缓冲控制器412执行窥探以理解来自主机DDR通道的数据业务。
在一个实例中,DRAM主控物理接口(PHY)连接到存储器模块401的DRAM。在缓冲控制器412的控制下,多路复用器408将业务从主机引导到用于易失性存储器402的特定DRAM通道,或根据需要在存储器模块401内部引导业务(在针对SRAM缓冲器读取及写入保留使得主机此时不将读取/写入命令发出到DRAM的tRFC期间)。在一个实例中,缓冲控制器412从SRAM缓冲器410读取及写入。缓冲控制器412检测tRFC窗口何时可供存储器模块401在内部使用。
在一个实例中,3DXP非易失性存储器404的全DDR地址空间暴露于主机系统。根据各个实施例,主机系统120的控制器(例如,控制器116)可依与存取常规DRAM相同的方式(例如,相同读取/写入及刷新时序循环)操作。在主机系统处改变例如tREFI及tRFC计数器的设置使得可保留一些刷新循环用于由缓冲控制器412使用。例如,通常在初始化主机控制器期间编程这些改变。在一个实施例中,主机上的软件不需要对这些设置的可见性(例如,软件及主机能够以正常方式操作)。
在一个实施例中,在存储器模块401中提供控制寄存器。控制寄存器可位于例如DDR地址空间的经保留高部分中(这些控制寄存器供存储器模块使用且具有存储器模块的预定义含义)。主机中的驱动程序能够进行页入请求,且知道何时已从3DXP存储器加载特定页。如果驱动程序未加载页,那么操作作为正常DRAM操作执行。
图4展示根据本发明的至少一些实施例的使用同步存储器总线存取来存取存储器模块205的主机操作系统241。存储器模块205包含缓冲器410。缓冲器410是缓冲器121的实例。经由主机接口406从主机操作系统241接收命令及数据。在一个实例中,主机操作系统241在主机系统120上执行。
在一个实施例中,装置驱动程序247(例如,后端驱动程序)经配置以经由超管理器245进行存储器存取。例如,图4的系统可在图1或2的计算机系统中实施。
在一个实例中,主机操作系统241在图1或2的计算机系统的处理装置118上运行。主机操作系统241包含使用存储器子系统(例如存储器模块205)的存储器(例如,221、...、223)提供存储器服务的一或多个装置驱动程序(例如,247)。
后端驱动程序247维持映射表246。例如,驱动程序247维持映射表246以包含存储于非易失性存储器404中的数据页的映射。
主机操作系统241包含布建虚拟机249的超管理器245。虚拟机249具有经由主机操作系统241使用图1或2的计算系统的硬件提供的资源及服务实施的虚拟硬件。例如,超管理器245可使用存储器子系统(例如存储器模块205)的存储器(例如,221、...、223)的一部分布建虚拟存储器作为虚拟机249的部分。
虚拟机249允许客户操作系统243以如同操作系统243在具有与虚拟机中所布建相同或类似的硬件组的物理计算机器上运行的方式将资源及/或服务提供到运行于客户操作系统243上的应用程序(例如,251、...、253)。超管理器245管理虚拟机中所布建的虚拟硬件与由主机操作系统241管理的计算系统中的硬件服务之间的映射。
装置驱动程序248(例如,前端驱动程序)与后端驱动程序247通信。当额外DDR容量可用时,驱动程序247及驱动程序248可通信以进行存储器动态转移(memory ballooning)。
图4说明其中通过超管理器245布建虚拟机249的例子。一般来说,超管理器245可布建可运行相同客户操作系统243或不同客户操作系统的数个虚拟机(例如,249)。可指派不同用户及/或应用程序集以使用不同虚拟机。
在一些例子中,主机操作系统241专用于提供用于布建虚拟机的服务且不运行其它应用程序。或者,主机操作系统241可提供额外服务以支持其它应用程序,例如应用程序(例如,251、...、253)。
在一个实施例中,装置驱动程序247可经配置以请求页从较慢存储器(例如,3DXP)到较快存储器(例如,DRAM)的页入以供虚拟机249使用。在请求页之后,通过将数据页从较慢存储器加载及/或传送到较快存储器而使所述页在较快存储器中可用。例如,较慢存储器可为存储器模块401中的非易失性存储器404且较快存储器是相同存储器模块401中的易失性存储器402。
在一个实施例中,在相同存储器子系统内(例如在相同存储器模块401内)执行数据传送(例如,通过主机操作系统241响应于页入请求而执行),以避免或减少连接到处理装置118的通信通道(例如存储器总线203)中的拥塞。例如,可在存储器模块205中的控制器227的控制下响应于来自装置驱动程序247的一或多个命令、请求及/或指令而将数据从存储器模块205中的较慢存储器223(例如,3DXP)复制到存储器模块205中的较快存储器221(例如,DRAM)。
在一个实施例中,超管理器245不仅请求装置驱动程序247存取存储器子系统(例如,存储器模块205)中的存储器(例如,221、...、223),而且对装置驱动程序247提供可用于管理待使用的存储器(例如,221、...、223、或225)中的页的信息。
在一个实例中,驱动程序247是用于存取存储器模块205(例如,DIMM)中的存储器地址空间的存储器模式驱动程序。驱动程序247可在任一时间控制哪些页在DIMM的易失性存储器中。在一个方法中,例如,存储器地址空间暴露于客户操作系统243。在此超管理器环境中,客户操作系统243看见DIMM中的非易失性存储器(例如,3DXP)的全存储容量。
在一个实例中,仅经由主机操作系统241主动页入DDR DRAM中的若干页。如果存在对不存在页的客户存取,那么主机系统的存储器管理单元(MMU)中的页错误路径触发驱动程序247引起页的加载(页入)。在一个实例中,页通过控制寄存器加载。一旦页实际上存在于DDR DRAM中,那么驱动程序247可设置MMU映射(经由映射表246)使得客户应用程序可直接读取及写入所述数据。
在一个实例中,客户的前端驱动程序及主机的后端驱动程序传达关于对存储器地址空间的存取。在一个实例中,当决定页陈旧(例如,未基于预定阈值频繁使用)时,请求将当前映射于DDR存储器地址空间中的数据的一部分推回到3DXP存储器(例如,经由SRAM缓冲器)以使DDR存储器中的空间可用于页入其它页。后端驱动程序247传达页出请求以将数据从DDR DRAM移动到3DXP存储器。
在一个实施例中,后端驱动程序247操作为存储器模式驱动程序。在驱动程序247加载之前,不可存取存储器模块205的3DXP存储器容量。在作为存储器模式驱动程序的此操作期间,客户操作系统243将存储器视为正常,且驱动程序247将保留存储器模块上的DRAM页用于页入及页出操作。
驱动程序247将3DXP存储器暴露于客户操作系统243且维持页映射(例如,在映射表246中)。例如,驱动程序247维持当前在DRAM中的页与保持于3DXP存储器上的页之间的映射。
在一个实例中,驱动程序247在主机系统处设置存储器管理单元映射表以映射当前存储于DRAM中的任何页。如果经映射页外部存在存取以触发页入请求,那么可使用来自客户的页错误路径。可执行页出请求以维持DRAM中的一些存储器空间。
在一个实施例中,操作不限于存储器模式。驱动程序247也可操作为块模式驱动程序,其中3DXP存储器作为块模式存储器暴露。
在一个实例中,主机系统的BIOS经配置以支持用于保留循环的tRFC及tREFI时序的设置,如上述。存储器模块205自身通常由电力开启或从刷新初始化。在一个实例中,如果进行基于驱动程序的归零,那么首先分配某些页。在另一实例中,首先读取的页被归零。在一个实例中,在首次请求页时,将其视为归零页。
在一个实施例中,驱动程序247产生执行页入的请求。在此实施例中,可存在两种操作模式。在第一模式中,如果页入请求在短时段内发生,那么驱动程序247可等待(例如,短时段可小于500纳秒)。在操作完成之后,可立即将控制返回到客户。在一个实例中,在处于所述时段中时,驱动程序可将控制给予CPU且在线程上所述控制。
在一个实施例中,驱动程序维持一或多个映射表(例如,映射表246)。在页入请求上,存在列出全部经映射页的一组页表条目。在存储器模块处,DDR从属机上存在读入页入请求中的选项,其中最初将数据从3DXP存储器传送到SRAM缓冲器。在典型操作中,缓冲控制器412等待适当窗口以将数据写入到DRAM存储器。
在一个实施例中,存储器模块205维持其自身的映射表(例如,映射表403),包含在SRAM缓冲器410中的页的清单。因此,缓冲控制器412可针对在存储器模块205接收到请求之前已完成传送到SRAM缓冲器410中的页直接由SRAM缓冲器410服务对特定页的读取请求。此允许缩短完成页入请求所花费的时间量。一旦页位于SRAM缓冲器410中(且缓冲控制器412可在内部服务来自SRAM缓冲器410的请求),存储器模块205便可将页入完成信号传回到主机系统。此允许减少主机系统存取所述(若干)特定3DXP页的延时。驱动程序247确保在设置其映射之前,主机将不会存取所述(若干)页直到页入请求完成。
在一个实施例中,驱动程序247实施页出操作。在一个实例中,此操作作为线程被触发。此操作将从由页从DRAM存储器换回且改变有效页的驱动程序级映射。进行对主机系统120处的CPU高速缓存的刷新以确保将任何写入操作推送到DDR通道中。接着,可将页出请求发送到存储器模块205。
在一个实施例中,响应于页出请求,如果经请求页在缓冲器410中,那么可排程所述请求以将所述页的数据立即移动到非易失性存储器404。如果经请求页在易失性存储器402中,那么在下一可用刷新窗口中排程所述请求。在缓冲器410中为经请求页分配空间。在下一可用刷新窗口期间将页从易失性存储器402复制到缓冲器410。接着,可在任一后续时间将写入从缓冲器410排程到非易失性存储器404。当页出操作正在进行时,主机系统不存取经请求页。
图5展示根据本发明的一些实施例的用于对存储媒体进行同步存储器总线存取的方法。图5的方法可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,运行或执行于处理装置上的指令)或其组合。在一些实施例中,图5的方法至少部分由图1或2的同步组件113执行。尽管以特定序列或顺序展示,然除非另有指定,否则可修改过程的顺序。因此,所说明实施例应仅被理解为实例,且所说明过程可依不同顺序执行,且一些过程可并行执行。另外,在各个实施例中,可省略一或多个过程。因此,并非每个实施例都需要全部过程。其它过程流程是可能的。
例如,可在图1或2的计算系统中利用主机操作系统120及存储器子系统110或存储器模块205来实施图5的方法。在一个实例中,同步组件113可至少部分经由图3的存储器模块401及图3的主机操作系统241实施。
在图5中的框301处,提供具有第一存储器(例如,易失性存储器402)及第二存储器(例如,非易失性存储器404)的计算系统。第一存储器可用于主机系统(例如,主机系统120)以在第一组时间窗口中一或多个窗口期间经由存储器总线(例如,存储器总线203)进行读取及写入存取。在一个实例中,第一组时间窗口包含常规主机循环,其中主机系统120从存储器模块401接收DRAM数据。在一个实例中,应注意,tREFI是刷新之间的时间。刷新循环(tRFC)是tREFI的一部分。因此,在此实例中,其中主机可将读取/写入命令发出到DRAM的常规主机循环是tREFI-tRFC长。
在框303,从主机系统的驱动程序接收关于存储于第二存储器中的数据页的请求。例如,所述请求是从主机系统120的驱动程序247接收的页入请求。例如,数据页存储于非易失性存储器404(例如,交叉点存储器)中。
在框305,响应于请求而将经请求页从第二存储器传送到缓冲器。例如,缓冲器是缓冲器121或缓冲器410,且页是从非易失性存储器404传送。
在框307,将页从缓冲器写入到第一存储器。在对应于存储器总线的刷新时序的第二组时间窗口中的一或多者期间,将页写入到第一存储器。在主机系统处控制刷新时序。例如,在主机系统120处配置DDR通道上的刷新循环,使得可保留一些刷新循环用于到及从缓冲器410的传送。在一个实例中,对于相应总共四个刷新循环,一个刷新循环用于实际上刷新DRAM存储器,且其它三个循环经保留用于到及从缓冲器410的传送。例如,主机系统120可经配置使得缓冲控制器412可在未用于刷新易失性存储器402中的DDR4 DRAM的特定经保留刷新循环(例如,tRFC)中执行DDR4 DRAM上的一或多个任务。在此类循环中,缓冲控制器412可在DDR4 DRAM与缓冲器410之间传送数据。
在一个实施例中,通过存储器模块(例如,存储器模块401)经由存储器总线从主机系统(例如,主机系统120)接收存储于对页中的数据的读取命令。响应于接收到所述读取命令,经由存储器总线将经请求数据发送到主机系统。
在一个实施例中,存储器模块维持映射表(例如,映射表403),包含映射到缓冲器(例如,缓冲器410)的页的清单。所述列表包含具有已在来自主机系统的读取命令中请求的数据的页。响应于接收到读取命令,存储器模块的缓冲控制器(例如,缓冲控制器412)基于映射表确定是从缓冲器还是从存储器模块的易失性存储器(例如,易失性存储器402的DDR4DRAM)发送经请求数据。
在另一实施例中,计算系统具有第一存储器271及第二存储器272。响应于页入请求,将第二存储器273中的页中的数据复制/加载到第一存储器271。
例如,装置驱动程序247可将指令、请求及/或命令提供到存储器模块401,以引起缓冲控制器412在第一存储器271与第二存储器273之间移动数据。
例如,第一存储器271及第二存储器273可在相同存储器模块205中,存储器模块205经由存储器总线203连接到计算系统的处理装置118。
例如,存储器模块205具有过量存储器容量,使得第二存储器273无法由处理装置118直接在存储器总线203上寻址。第一存储器271是可在存储器总线203上直接寻址的存储器模块205的存储器容量的一部分。
例如,第一存储器271是易失性动态随机存取存储器(DRAM)且第二存储器273是非易失性交叉点存储器(例如,3DXP)。第二存储器273为作为存储器总线203上的计算机系统的主存储器的部分的第一存储器271提供存储功能。第二存储器273虚拟地扩展存储器模块205中的第一存储器271(例如,DRAM)的容量,且允许甚至在未被供电的情况下仍存储存储器模块205中的数据。
在一些实施方案中,处理装置118与存储器子系统之间的通信通道包含计算机网络,例如局域网络、无线局域网络、无线个人局域网络、蜂窝通信网络、宽带高速始终连接的无线通信连接(例如,当前或下一代移动网络链路);且处理装置118及存储器子系统可经配置以使用类似于NVMe协议中的数据存储管理及使用命令的数据存储管理及使用命令来彼此通信。
存储器子系统一般可具有非易失性存储媒体。非易失性存储媒体的实例包含形成于集成电路中的存储器单元及涂覆于硬磁盘上的磁性材料。非易失性存储媒体可在未消耗电力的情况下维持存储于其中的数据/信息。存储器单元可使用各种存储器/存储技术实施,例如NAND逻辑门、NOR逻辑门、相变存储器(PCM)、磁性存储器(MRAM)、电阻式随机存取存储器、交叉点存储及存储器装置(例如,3DXP存储器)。交叉点存储器装置使用无晶体管的存储器元件,所述存储器元件中的每一者具有在一起堆叠为一列的存储器单元及选择器。存储器元件列经由两层垂直线敷设(lay of wires)连接,其中一层敷设在存储器元件列上方且另一层敷设在存储器元件列下方。可在两个层中的每一者上的一条线的交叉点处个别地选择每一存储器元件。交叉点存储器装置是快速的且非易失性的,且可用作用于处理及存储的统一存储器集区。
存储器子系统(例如,205)的控制器(例如,227)可运行固件以响应于来自处理装置118的通信而执行操作。固件一般为提供对工程计算装置的控制、监测及数据操纵的一类型的计算机程序。
涉及控制器的操作的一些实施例可使用由控制器执行的计算机指令(例如控制器的固件)来实施。在一些例子中,硬件电路可用于实施至少一些功能。固件最初可存储于非易失性存储媒体或另一非易失性装置中,且加载到易失性DRAM及/或处理器内高速缓存中以由控制器执行。
非暂时性计算机存储媒体可用于存储存储器子系统(例如,205)的固件的指令及/或一般来说操作系统(例如,241、243)以及特定来说装置驱动程序247及超管理器245的指令。在一个实例中,当通过处理装置118执行指令时,指令引起处理装置118执行上文论述的方法。
图6是本发明可操作于其中的实例计算机系统600的框图。图6说明计算机系统600的实例机器,可在计算机系统600内执行用于引起所述机器执行本文中论述的方法论的任一或多者的指令集。在一些实施例中,计算机系统600可对应于包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)的主机系统(例如,图1的主机系统120),或其可用于执行同步组件113的操作(例如,以执行指令而执行对应于关于图1到5描述的同步组件113的操作)。在替代实施例中,机器可连接(例如,联网)到LAN、内部网络、外部网络及/或因特网中的其它机器。机器可在客户端-服务器网络环境中以服务器或客户端机器的身份操作,在对等(或分布式)网络环境中作为对等机器,或在云端计算基础设施或环境中作为服务器或客户端机器。
机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或网桥,或能够执行指定待由所述机器采取的动作的指令集(循序地或以其它方式)的任何机器。此外,虽然说明单个机器,但术语“机器”也应被视为包含个别地或联合地执行一(或多个)指令集以执行本文中论述的方法论的任一或多者的任何机器集合。
实例计算机系统600包含经由总线630(其可包含多个总线)彼此通信的处理装置602、主存储器604(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM)(例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM))、静态随机存取存储器(SRAM)等)及数据存储系统618。
处理装置602表示一或多个通用处理装置,例如微处理器、中央处理单元或类似物。更特定来说,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、极长指令字(VLIW)微处理器、或实施其它指令集的处理器、或实施一指令集组合的处理器。处理装置602还可为一或多个专用处理装置,例如专用集成电路(ASIC)、场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或类似物。处理装置602经配置以执行用于执行本文中论述的操作及步骤的指令626。计算机系统600可进一步包含网络接口装置608以经由网络620通信。
数据存储系统618可包含机器可读存储媒体624(也被称为计算机可读媒体),一或多个指令626集或体现本文中描述的方法论或功能的任一或多者的软件存储于机器可读存储媒体624上。指令626还可在其通过计算机系统600执行期间完全或至少部分驻留在主存储器604及/或处理装置602内,主存储器604及处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储系统618及/或主存储器604可对应于图1的存储器子系统110。
在一个实施例中,指令626包含用于实施对应于同步组件113(例如,关于图1到5描述的同步组件113)的功能性的指令。虽然机器可读存储媒体624在实例实施例中被展示为单个媒体,但术语“机器可读存储媒体”应被视为包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”也应被视为包含能够存储或编码指令集以由机器执行且引起机器执行本发明的方法论的任一或多者的任何媒体。因此,术语“机器可读存储媒体”应被视为包含(但不限于)固态存储器、光学媒体及磁性媒体。
已依据对计算机存储器内的数据位的操作的算法及符号表示呈现前文详细描述的一些部分。这些算法描述及表示是由数据处理领域的技术人员使用以最有效地将其工作实质传达给所属领域的其它技术人员的方式。在此且一般来说,算法被认为是导致所要结果的自我一致操作序列。操作是需要物理操纵物理量的操作。通常但非必要,这些量采取能够被存储、组合、比较及以其它方式操纵的电信号或磁信号的形式。主要出于常用的原因,已证实将这些信号称为位、值、元件、符号、字符、项、数字或类似物有时是方便的。
然而,应记住,全部这些及类似术语应与适当物理量相关联且仅为应用于这些量的方便标签。本发明可涉及计算机系统或类似电子计算装置将表示为计算机系统的寄存器及存储器内的物理(电子)量的数据操纵及变换成类似地表示为计算机系统存储器或寄存器或其它此类信息存储系统内的物理量的其它数据的动作及过程。
本发明还涉及一种用于执行本文中的操作的设备。此设备可专门建构用于所欲目的,或其可包含通过存储于计算机中的计算机程序选择性地激活或重新配置的通用计算机。此计算机程序可存储于计算机可读存储媒体中,例如(但不限于)任何类型的磁盘,包含软盘、光盘、CD-ROM及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡、或适于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。
本文中呈现的算法及显示器并非固有地与任何特定计算机或其它设备相关。各种通用系统可搭配根据本文中的教示的程序使用,或可证实建构更专业设备以执行方法是方便的。多种这些系统的结构将如下文描述中所陈述那样出现。另外,未参考任何特定程序设计语言描述本发明。将明白,可使用多种程序设计语言来实施如本文中描述的本发明的教示。
本发明可被提供为计算机程序产品或软件,其可包含其上存储有指令的机器可读媒体,所述指令可用于编程计算机系统(或其它电子装置)以执行根据本发明的程序。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在本描述中,各种功能及操作被描述为由计算机指令执行或引起以简化描述。然而,所属领域的技术人员将认识到,此类表达意味着功能因通过一或多个控制器或处理器(例如微处理器)执行计算机指令而产生。替代地或组合地,可使用具有或不具有软件指令的专用电路系统(例如使用专用集成电路(ASIC)或场可编程门阵列(FPGA))来实施功能及操作。可使用不具有软件指令的硬接线电路系统或结合软件指令来实施实施例。因此,技术既不限于硬件电路系统及软件的任何特定组合也不限于通过数据处理系统执行的指令的任何特定来源。
在前述说明书中,已参考本发明的特定实例实施例描述本发明的实施例。将显而易见的是,可在不脱离如下文权利要求书中所陈述的本发明的实施例的更广泛精神及范围的情况下对本发明的实施例进行各种修改。因此,本说明书及图式应被视为说明性意义而非限制性意义。
Claims (15)
1.一种计算系统,其包括:
多个存储器组件,其具有第一存储器及第二存储器,其中所述第一存储器可用于主机系统以在第一多个窗口中的一或多者期间经由存储器总线进行读取及写入存取;
处理装置,其与所述多个存储器组件可操作地耦合以:
从所述主机系统的驱动程序接收关于存储于所述第二存储器中的数据页的请求;
响应于所述请求而将所述页从所述第二存储器传送到缓冲器;及
将所述页从所述缓冲器写入到所述第一存储器,其中在对应于所述存储器总线的刷新时序的第二多个窗口中的至少一者期间将所述页写入到所述第一存储器,且在所述主机系统处控制所述刷新时序。
2.根据权利要求1所述的计算系统,其中在所述第一多个窗口中的至少一者期间将所述页从所述第二存储器传送到所述缓冲器。
3.根据权利要求1所述的计算系统,其中在所述第二多个窗口的一部分期间刷新所述第一存储器。
4.根据权利要求1所述的计算系统,其中所述主机系统能够在已将所述页传送到所述缓冲器之后经由所述存储器总线存取所述数据页。
5.根据权利要求1所述的计算系统,其中所述页是第一页,关于所述数据页的所述请求是页入所述第一页的请求,且所述处理装置进一步用于:
从所述驱动程序接收页出存储于所述第一存储器中的第二页的请求;
响应于所述请求而在所述第二多个窗口中的至少一者期间将所述第二页从所述第一存储器写入到所述缓冲器;及
将所述第二页从所述缓冲器传送到所述第二存储器。
6.根据权利要求1所述的计算系统,其中所述处理装置进一步用于维持映射表,所述映射表包含映射到所述缓冲器的页的列表,其中所述列表包含从所述第二存储器传送到所述缓冲器的所述页。
7.根据权利要求1所述的计算系统,其中所述驱动程序经配置以维持至少一个映射表,且所述至少一个映射表包含存储于所述第二存储器中的所述数据页的映射。
8.根据权利要求1所述的计算系统,其中所述第二存储器的存储容量大于所述第一存储器的存储容量,且所述驱动程序将所述第二存储器的所述存储容量暴露于与所述主机系统通信的客户操作系统。
9.根据权利要求8所述的计算系统,其中所述驱动程序响应于由所述驱动程序从所述客户操作系统接收的存取请求而提供关于存储于所述第二存储器中的所述数据页的所述请求。
10.根据权利要求1所述的计算系统,其中所述第一存储器及所述第二存储器在经由所述存储器总线耦合到所述主机系统的相同存储器模块中。
11.根据权利要求10所述的计算系统,其中所述第一存储器能由所述主机系统在所述存储器总线上直接寻址,且所述第二存储器无法在所述存储器总线上直接寻址。
12.一种方法,其包括:
经由存储器总线从主机系统接收关于存储于第一存储器中的数据页的请求,其中第二存储器可用于所述主机系统以在第一多个窗口中的一或多者期间经由所述存储器总线进行读取及写入存取;
响应于所述请求而将所述页从所述第一存储器传送到缓冲器;及
将所述页从所述缓冲器写入到第二存储器,其中在对应于所述存储器总线的刷新时序的第二多个窗口中的至少一者期间将所述页写入到所述第二存储器,且在所述主机系统处控制所述刷新时序。
13.根据权利要求12所述的方法,其中在所述第一多个窗口中的至少一者期间将所述页从所述第一存储器传送到所述缓冲器。
14.根据权利要求12所述的方法,其进一步包括:
经由所述存储器总线从所述主机系统接收存储于所述页中的第一数据的读取命令;及
响应于接收到所述读取命令而经由所述存储器总线将所述第一数据发送到所述主机系统。
15.根据权利要求14所述的方法,其进一步包括:
维持映射表,所述映射表包含映射到所述缓冲器的页的列表,其中所述列表包含从所述第一存储器传送到所述缓冲器的所述页;及
响应于接收到所述读取命令而基于所述映射表确定是从所述缓冲器还是从所述第二存储器发送所述第一数据。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862626577P | 2018-02-05 | 2018-02-05 | |
US62/626,577 | 2018-02-05 | ||
US16/157,900 | 2018-10-11 | ||
US16/157,900 US11030132B2 (en) | 2018-02-05 | 2018-10-11 | Synchronous memory bus access to storage media |
PCT/US2019/014827 WO2019152244A1 (en) | 2018-02-05 | 2019-01-23 | Synchronous memory bus access to storage media |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111684432A true CN111684432A (zh) | 2020-09-18 |
CN111684432B CN111684432B (zh) | 2023-10-20 |
Family
ID=67475130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980011746.3A Active CN111684432B (zh) | 2018-02-05 | 2019-01-23 | 对存储媒体的同步存储器总线存取 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11030132B2 (zh) |
EP (1) | EP3750071A4 (zh) |
KR (1) | KR102408149B1 (zh) |
CN (1) | CN111684432B (zh) |
TW (1) | TWI711931B (zh) |
WO (1) | WO2019152244A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113010448A (zh) * | 2019-12-19 | 2021-06-22 | 美光科技公司 | 维持用于存储器子系统的媒体管理的序列性 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11030132B2 (en) | 2018-02-05 | 2021-06-08 | Micron Technology, Inc. | Synchronous memory bus access to storage media |
KR102583266B1 (ko) * | 2018-10-24 | 2023-09-27 | 삼성전자주식회사 | 스토리지 모듈, 스토리지 모듈의 동작 방법, 및 스토리지 모듈을 제어하는 호스트의 동작 방법 |
US11526302B2 (en) * | 2019-06-20 | 2022-12-13 | AI Plus, Inc. | Memory module and computing device containing the memory module |
US11016903B2 (en) | 2019-08-22 | 2021-05-25 | Micron Technology, Inc. | Hierarchical memory systems |
TWI756810B (zh) * | 2020-09-02 | 2022-03-01 | 瑞昱半導體股份有限公司 | 晶片與相關的晶片系統 |
US20210216452A1 (en) * | 2021-03-27 | 2021-07-15 | Intel Corporation | Two-level main memory hierarchy management |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080307126A1 (en) * | 2007-06-07 | 2008-12-11 | Via Technologies, Inc. | System and method for serial-peripheral-interface data transmission |
US20090113085A1 (en) * | 2007-10-25 | 2009-04-30 | Banyai Chris J | Flushing write buffers |
US20140181364A1 (en) * | 2012-12-21 | 2014-06-26 | Dell Products L.P. | Systems And Methods For Support Of Non-Volatile Memory On A DDR Memory Channel |
US20160019138A1 (en) * | 2011-07-28 | 2016-01-21 | Netlist, Inc. | Memory module and system and method of operation |
CN107643985A (zh) * | 2016-07-21 | 2018-01-30 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0916470A (ja) * | 1995-07-03 | 1997-01-17 | Mitsubishi Electric Corp | 半導体記憶装置 |
US6330625B1 (en) * | 1999-01-15 | 2001-12-11 | Oracle Corporation | System for initiating multiple read operation requests to multiple copies of a data item and identifying a first one of the requests as having the fastest response time |
JP2001195261A (ja) * | 2000-01-13 | 2001-07-19 | Nec Corp | 外部メモリから内蔵メモリへのプログラム転送方法およびその転送方法を用いたマイクロコンピュータ |
US6578109B1 (en) * | 2000-06-29 | 2003-06-10 | Sony Corporation | System and method for effectively implementing isochronous processor cache |
JP4049297B2 (ja) * | 2001-06-11 | 2008-02-20 | 株式会社ルネサステクノロジ | 半導体記憶装置 |
US8725927B2 (en) * | 2008-10-15 | 2014-05-13 | Micron Technology, Inc. | Hot memory block table in a solid state storage device |
US7962686B1 (en) * | 2009-02-02 | 2011-06-14 | Netapp, Inc. | Efficient preservation of the ordering of write data within a subsystem that does not otherwise guarantee preservation of such ordering |
US8607089B2 (en) | 2011-05-19 | 2013-12-10 | Intel Corporation | Interface for storage device access over memory bus |
US8595427B1 (en) | 2013-03-08 | 2013-11-26 | Avalanche Technology, Inc. | Non-volatile block storage module using magnetic random access memory (MRAM) |
US9355041B2 (en) * | 2013-03-14 | 2016-05-31 | Nvidia Corporation | Frame buffer access tracking via a sliding window in a unified virtual memory system |
US9229885B2 (en) * | 2014-05-21 | 2016-01-05 | Freescale Semiconductor, Inc. | Adaptive scheduling queue control for memory controllers based upon page hit distance determinations |
KR102372888B1 (ko) * | 2015-06-15 | 2022-03-10 | 삼성전자주식회사 | 저장 장치의 온도별 데이터 관리 방법 |
US20180293189A1 (en) * | 2015-10-13 | 2018-10-11 | Hewlett Packard Enterprise Development Lp | Memory manager for autonomous memory device |
US9460791B1 (en) | 2015-12-08 | 2016-10-04 | Inphi Corporation | Data clock synchronization in hybrid memory modules |
US11030132B2 (en) | 2018-02-05 | 2021-06-08 | Micron Technology, Inc. | Synchronous memory bus access to storage media |
-
2018
- 2018-10-11 US US16/157,900 patent/US11030132B2/en active Active
-
2019
- 2019-01-23 CN CN201980011746.3A patent/CN111684432B/zh active Active
- 2019-01-23 EP EP19747315.0A patent/EP3750071A4/en not_active Withdrawn
- 2019-01-23 WO PCT/US2019/014827 patent/WO2019152244A1/en unknown
- 2019-01-23 KR KR1020207025527A patent/KR102408149B1/ko active IP Right Grant
- 2019-01-29 TW TW108103272A patent/TWI711931B/zh active
-
2021
- 2021-05-14 US US17/321,353 patent/US11544207B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080307126A1 (en) * | 2007-06-07 | 2008-12-11 | Via Technologies, Inc. | System and method for serial-peripheral-interface data transmission |
US20090113085A1 (en) * | 2007-10-25 | 2009-04-30 | Banyai Chris J | Flushing write buffers |
US20160019138A1 (en) * | 2011-07-28 | 2016-01-21 | Netlist, Inc. | Memory module and system and method of operation |
US20140181364A1 (en) * | 2012-12-21 | 2014-06-26 | Dell Products L.P. | Systems And Methods For Support Of Non-Volatile Memory On A DDR Memory Channel |
CN107643985A (zh) * | 2016-07-21 | 2018-01-30 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113010448A (zh) * | 2019-12-19 | 2021-06-22 | 美光科技公司 | 维持用于存储器子系统的媒体管理的序列性 |
Also Published As
Publication number | Publication date |
---|---|
CN111684432B (zh) | 2023-10-20 |
US20190243788A1 (en) | 2019-08-08 |
US20210271617A1 (en) | 2021-09-02 |
TWI711931B (zh) | 2020-12-01 |
US11544207B2 (en) | 2023-01-03 |
US11030132B2 (en) | 2021-06-08 |
EP3750071A4 (en) | 2021-05-26 |
TW201941068A (zh) | 2019-10-16 |
WO2019152244A1 (en) | 2019-08-08 |
KR20200108366A (ko) | 2020-09-17 |
EP3750071A1 (en) | 2020-12-16 |
KR102408149B1 (ko) | 2022-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112470113B (zh) | 存储器系统中的隔离性能域 | |
CN111684432B (zh) | 对存储媒体的同步存储器总线存取 | |
CN111684417B (zh) | 用以存取异质存储器组件的存储器虚拟化 | |
CN112384890B (zh) | 预测性分页以加速存储器存取 | |
CN114402282B (zh) | 存取存储的元数据以识别存储数据的存储器装置 | |
US10942846B2 (en) | Aggregated and virtualized solid state drives accessed via multiple logical address spaces | |
CN114402305A (zh) | 与存储器类型相关的页表 | |
US11741011B2 (en) | Memory card with volatile and non volatile memory space having multiple usage model configurations | |
CN114402291A (zh) | 用于将数据绑定到存储器命名空间的存储器系统 | |
US10769074B2 (en) | Computer memory content movement | |
CN114631076A (zh) | 加载命令的生存时间 | |
US20170109074A1 (en) | Memory system | |
US11734071B2 (en) | Memory sub-system tier allocation |
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 |