CN106776358A - Dimm ssd寻址性能技术 - Google Patents

Dimm ssd寻址性能技术 Download PDF

Info

Publication number
CN106776358A
CN106776358A CN201610877643.3A CN201610877643A CN106776358A CN 106776358 A CN106776358 A CN 106776358A CN 201610877643 A CN201610877643 A CN 201610877643A CN 106776358 A CN106776358 A CN 106776358A
Authority
CN
China
Prior art keywords
memory
address
nvdimm
storage address
exposed
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
Application number
CN201610877643.3A
Other languages
English (en)
Other versions
CN106776358B (zh
Inventor
克雷格·汉森
伊恩·斯沃布里克
迈克尔·伯克曼
张志任
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN106776358A publication Critical patent/CN106776358A/zh
Application granted granted Critical
Publication of CN106776358B publication Critical patent/CN106776358B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

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)
  • Memory System (AREA)

Abstract

公开一种DIMM SSD寻址性能技术。一种非易失性双列直插式存储器模块(NVDIMM)可被安装在双列直插式存储器模块(DIMM)插槽中。NVDIMM可包括非易失性存储器。一种装置驱动器可拦截去往主机存储器控制器的针对存储器地址的请求,将所述存储器地址替换为预映射的存储器地址或预映射的存储器地址的别名,并且将预映射的存储器地址发送到主机存储器控制器,使得主机存储器控制器生成NVDIMM的目标存储器地址。

Description

DIMM SSD寻址性能技术
本申请要求于2015年10月7日提交的第62/238,660号美国临时专利申请和于2016年3月3日提交的第15/060,596号美国临时专利申请的权益,所述美国临时专利申请通过引用合并于此。
技术领域
本发明构思涉及存储器,更加具体地,涉及访问安装在双列直插式存储器模块(DIMM)插槽中的非易失性存储器(NVM)装置。
背景技术
针对双列直插式存储器模块(DIMM)的需求已经很好地建立了许多年。最初成立于1944年并在1958年被给予现在的名称的联合电子设备工程委员会(JEDEC)提供针对DIMM装置的规范。由于存在很多不同的变体的DIMM装置,所以JEDEC已针对DIMM如何操作起草了很多不同的标准。
DIMM连接到DIMM插槽连接器,并通过存储器通道地址信号线与主机处理器进行通信。主机处理器(更加具体地讲,存储器控制器)与DIMM之间通信的方式也被很好地建立。
DIMM通常是易失性存储器。即,存储器单元中的值需要被周期性地刷新(DIMM必须能支持最低刷新率(也是由JEDEC制定)),否则存储器单元将丢失在其中存储的值。
与DIMM相比,以及更加一般地与易失性存储器相比,存在非易失性存储器(NVM)格式。NVM格式能够在不需要周期性刷新的情况下保持在其中存储的数据值。NVM格式的一个示例是NAND闪速存储器,它常见于通用串行总线(USB)密钥和固态器件(SSD)中。
可适合DIMM插槽的NVM格式已被开发。但是NVM格式根据来自DIMM的不同原理来操作。针对工作在DIMM插槽中的NVM格式,NVM格式必须对主机处理器和存储器控制器呈现为DIMM。由于DIMM中的存储器寻址操作不同于NVM格式中的存储器寻址,所以这造成必须要解决的一些问题。
仍需要解决在DIMM插槽中使用NVM格式时的存储器寻址和其他问题的方式。
发明内容
提供本发明内容以采用简化形式介绍将在以下具体实施方式中被进一步描述的构思的选择。本发明内容不意在确定要求保护的主题的关键特征或必要特征,也不意在用来帮助确定要求保护的主题的范围。
根据本发明构思的实施例的一方面,一种非易失性存储器装置包括:非易失性双列直插式存储器模块(NVDIMM),被安装在双列直插式存储器模块(DIMM)插槽中,NVDIMM包括存储器和暴露的存储器,暴露的存储器包括暴露的存储器的第一大小和暴露的存储器的基地址;装置驱动器,在主机处理器上操作,其中,装置驱动器操作性地拦截去往主机存储器控制器的存储器地址并将所述存储器地址替换为预映射的存储器地址,预映射的存储器地址与所述存储器地址不同。
NVDIMM可包括固态器件(SSD)。
预映射的存储器地址可被设计为使得主机存储器控制器将目标存储器地址发送到NVDIMM,目标存储器地址可表示被存储在所述存储器地址中的值的物理位置。
装置驱动器可操作性地响应于NVDIMM中的暴露的存储器的第一大小、NVDIMM中的暴露的存储器的基地址、NVDIMM中的暴露的存储器的逻辑段的第二大小和主机存储器控制器的存储器控制器操作模式,从存储器地址生成预映射的存储器地址。
装置驱动器还可操作性地响应于通过主机存储器控制器的所述存储器地址的逻辑-物理转换,从所述存储器地址生成预映射的存储器地址。
目标存储器地址可以是所述存储器地址的别名。
预映射的存储器地址可包括与所述存储器地址相关的至少一个变化位,所述至少一个变化位不被NVDIMM使用。
根据本发明构思的实施例的另一方面,一种操作非易失性存储器装置的方法包括:接收访问非易失性双列直插式存储器模块(NVDIMM)的存储器地址的请求,NVDIMM包括存储器和暴露的存储器,暴露的存储器包括暴露的存储器的第一大小和暴露的存储器的基地址;将所述存储器地址预映射到中间地址,中间地址与所述存储器地址不同;将中间地址发送到主机存储器控制器,其中,主机存储器控制器将目标存储器地址发送到NVDIMM,目标存储器地址表示被存储在所述存储器地址中的值的物理位置。
接收访问存储器地址的请求的步骤可包括:接收访问固态器件(SSD)的存储器地址的请求。
将所述存储器地址预映射到中间地址的步骤可包括:响应于NVDIMM中的暴露的存储器的第一大小、NVDIMM中的暴露的存储器的基地址、NVDIMM中的暴露的存储器的逻辑段的第二大小和主机存储器控制器的存储器控制器操作模式,将所述存储器地址预映射到中间地址。
将所述存储器地址预映射到中间地址的步骤还可包括:响应于NVDIMM中的暴露的存储器的第一大小、NVDIMM中的暴露的存储器的基地址、NVDIMM中的暴露的存储器的逻辑段的第二大小、主机存储器控制器的存储器控制器操作模式和由主机存储器控制器使用的逻辑-物理转换,将所述存储器地址预映射到中间地址。
将所述存储器地址预映射到中间地址的步骤可包括:将所述存储器地址预映射到所述存储器地址的别名。
将所述存储器地址预映射到中间地址的步骤可包括:改变与所述存储器地址有关的中间地址中的至少一位,改变的至少一位不被NVDIMM使用。
所述操作非易失性存储器装置的方法还包括:将暴露的存储器暴露给主机存储器控制器。
将暴露的存储器暴露给主机存储器控制器的步骤可包括:识别具有第一大小的存储器的连续块;将存储器的连续块划分成多个逻辑段,每一个逻辑段具有第二大小;将所述多个逻辑段暴露给主机存储器控制器。
根据本发明构思的实施例的另一方面,一种物品包括一种有形的存储介质,所述有形的存储介质具有存储在其上的非暂时性指令,当所述非暂时性指令由机器执行时,导致:接收访问非易失性双列直插式存储器模块(NVDIMM)的存储器地址的请求,NVDIMM包括存储器和暴露的存储器,暴露的存储器包括暴露的存储器的第一大小和暴露的存储器的基地址;将所述存储器地址预映射到中间地址,中间地址与所述存储器地址不同;将中间地址发送到主机存储器控制器,其中,主机存储器控制器将目标存储器地址发送到NVDIMM,目标存储器地址表示被存储在所述存储器地址中的值的物理位置。
将所述存储器地址预映射到中间地址的步骤可包括:响应于NVDIMM中的暴露的存储器的第一大小、NVDIMM中的暴露的存储器的基地址、NVDIMM中的暴露的存储器的逻辑段的第二大小和主机存储器控制器的存储器控制器操作模式,将所述存储器地址预映射到中间地址。
将所述存储器地址预映射到中间地址的步骤还可包括:响应于NVDIMM中的暴露的存储器的第一大小、NVDIMM中的暴露的存储器的基地址、NVDIMM中的暴露的存储器的逻辑段的第二大小、主机存储器控制器的存储器控制器操作模式和由主机存储器控制器使用的逻辑-物理转换,将所述存储器地址预映射到中间地址。
将所述存储器地址预映射到中间地址的步骤可包括:将所述存储器地址预映射到所述存储器地址的别名。
将所述存储器地址预映射到中间地址的步骤可包括:改变与所述存储器地址有关的中间地址中的至少一位,改变的至少一位不被NVDIMM使用。
其他特征和方面将从以下详细描述、附图和权利要求而清楚。
附图说明
图1示出根据本发明构思的实施例的与主机处理器进行通信的非易失性双列直插式存储器模块(NVDIMM)。
图2示出涉及图1的装置驱动器的设计的各种考虑。
图3示出能支持图1的NVDIMM和主机处理器的计算机系统。
图4示出可使用图1的NVDIMM的机器的架构。
图5示出根据本发明构思的实施例的图1的NVDIMM的存储器空间的示例布局。
图6示出根据本发明构思的实施例的拦截访问图1的NVDIMM中的存储器地址的请求并对请求的存储器地址进行预映射的图1的装置驱动器。
图7示出根据本发明构思的实施例的执行地址别名(address aliasing)的图1的装置驱动器。
图8示出根据本发明构思的第二实施例的图1的NVDIMM的存储器空间的第二示例布局。
图9示出根据本发明构思的实施例的图1的NVDIMM和图1的装置驱动器如何处理针对图1的NVDIMM中的存储器地址的请求的过程的流程图。
图10示出根据本发明构思的实施例的图1的NVDIMM可如何将存储器暴露给图1的主机计算机的过程的流程图。
具体实施方式
现在对本发明构思的实施例做出详细参考,本发明构思的实施例的示例在附图中示出。在下面的详细描述中,阐述了大量的具体细节来实现对本发明构思的彻底理解。然而,应该理解,本领域的普通技术人员可以在没有这些具体细节的情况下实施本发明构思。在其他的示例中,没有详细描述公知的方法、过程、组件、电路和网络,以免不必要地模糊实施例的方面。
将理解,尽管术语第一、第二等可在此被用于描述各种元件,但是这些元件不应该由这些术语所限制。这些术语仅用于将一个元件与另一个元件区分。例如,在不脱离本发明构思的范围的情况下,第一模块可以被称为第二模块,并且类似的,第二模块可以被称为第一模块。
这里在本发明构思的描述中使用的术语仅用于描述特定实施例的目的,而不意图限制本发明构思。如在本发明构思的描述和权利要求中所使用的,除非上下文另外明确指示,否则单数形式也意图包括复数形式。还将理解,如在此所使用的术语“和/或”表示并且包含一个或多个相关所列项的任何和所有的可能组合。还将理解,当在本说明书中使用时,术语“包括”和/或“包含”指定存在所陈述的特征、整体、步骤、操作、元件和/或组件,但是不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组合。附图的组件和特征不必按比例绘制。
使用NAND闪速存储器用于存储介质的固态计算机存储装置(例如,固态器件或SSD)提供持久性数据存储服务,并可使用各种各样的方法连接到主机计算机。从操作角度而言,重要的组件是:主机接口逻辑;处理和介质控制逻辑;以及被存储装置用于持久性存储能力的NAND闪速存储器电路。
一个重要的主机接口方法被称为非易失性存储器标准(NVMe)。主机可通过外围组件快速互连(PCIe)通道使用多个标准化存储器映射的提交队列和完成队列对来与NVMe存储装置进行接口连接。
主机处理器通过将命令和任何相关的数据移动到位于主机的动态随机存取存储器(DRAM)地址空间内的分配的存储器位置,将数据输入/输出(I/O)请求发布到NVMe存储装置。这些分配的位置地址是被主机存储器映射到NVMe提交队列。NVMe装置可检测发布的请求并保持它们,直到装置处理逻辑将它们移动到用于实现的装置中。
当NVMe装置实现请求时,它们可在与主机将请求放置到的提交队列关联的完成队列中发布响应。与提交队列一样,完成队列被主机存储器映射。主机具有检测响应的存在、使用存储器映射的数据移动方法访问响应并表明它们已经接收到响应的方法。
相比之下,针对NVMe,非易失性双列直插式存储器模块(NVDIMM)可使用主机DRAM存储器通道来连接到主机。NVDIMM可使用NVMe比SSD明显更快地与主机处理器进行交互,这是因为NVDIMM使用明显更快的主机处理器连接方法:存储器通道的传输速率比(相对地)更慢的PCIe连接明显更快。但是,存在增加的复杂性:由于NVDIMM在主机存储器通道上,因此NVDIMM必须对主机存储器控制器呈现为符合标准的联合电子设备工程委员会(JEDEC)的DRAM DIMM,而且必须使用标准的DRAM DIMM插槽来连接到主机存储器通道。具体地,NVDIMM必须完全地符合JEDEC DIMM规范。
为了符合JEDEC DIMM规范,NVDIMM必须向主机报告它是具有特定存储器容量的DRAM DIMM,并必须与它报告的DRAM DIMM的类型行为上无差别。为了存储器映射的操作,NVDIMMM也必须向主机提供可在存储器通道速度下操作的接口,并且无差别地充当系统存储器。通常,NVDIMM暴露可在用于存储器映射的主机数据传送的存储器通道上访问的少量的存储器(可以是诸如DRAM、SRAM等的易失性存储器,或可以是NVDIMM内的非易失性存储器的一部分)。
图1示出根据本发明构思的实施例的与主机处理器进行通信的非易失性双列直插式存储器模块(NVDIMM)。在图1中,示出通过主机存储器控制器115和存储器信号线120与主机处理器110进行通信的NVDIMM 105。主机存储器控制器115可处理来自存储器(由NVDIMM105提供)的读取和向存储器的写入。NVDIMM 105通过DIMM插槽125与主机存储器控制器115进行接口连接,DIMM插槽125可以是被安装在包括主机处理器110和NVDIMM 105的计算机中的标准的DIMM插槽。NVDIMM 105可包括非易失性存储器130、主机接口逻辑135、处理和介质控制逻辑140、内部DRAM 145和暴露的(exposed)存储器150。非易失性存储器130可以是任意形式的非易失性存储器。在本发明构思的一个示例实施例中,非易失性存储器130可包括NAND闪速存储器;本发明构思的其他实施例可包括其他形式的非易失性存储器(诸如,NOR闪速存储器、相变存储器(PCM)、自旋转移矩(STT)和磁性RAM(MRAM))。主机接口逻辑135负责管理主机处理器110与NVDIMM 105之间的通信。处理和介质控制逻辑140负责管理非易失性存储器130的使用。
图1还示出与主机存储器控制器115进行接口连接的DRAM DIMM 155。与NVDIMM105相比,DRAM DIMM 155可以是传统的DIMM模块,并可提供支持存储器。例如,DRAM DIMM155和NVDIMM 105中的一个可被用于向另一个提供高速缓存。
暴露的存储器150包括暴露给主机处理器110以用于存储器映射活动的存储器。暴露的存储器150可以是内部DRAM 145的部分、非易失性存储器130的一部分或NVDIMM 105的单独组件。例如,在本发明构思的一个实施例中,非易失性存储器130可包括8GB的总内存,其中的1MB可留作暴露的存储器150。本发明构思的其他实施例可在非易失性存储器130中包括更多或更少的总内存、更多或更少的暴露的存储器150或者包括两者。
使用NVDIMM 105模拟DIMM而出现的一个问题是:主机处理器110,更具体地,在主机处理器110上运行的程序,具有存储器的特殊视图(view)。这个特殊视图允许不同的应用如同每个应用具有所有可用的(或可见的)内存供其自己使用一样操作。主机存储器控制器115通过执行存储器地址的逻辑-物理的转换来适应存储器的这个视图。即,当应用请求访问存储器位置(从存储器读取或写入到存储器)时,应用提供它知道的存储器地址。这个存储器地址通常不是装置上期望的存储器单元位于的实际的存储器地址。主机存储器控制器115处理存储器的这些逻辑视图(由于每个应用具有它自己的逻辑视图)与存储器模块的物理地址之间的转换。
难度在于NVDIMM 105中的暴露的存储器150是直接可寻址的存储器,并且不要求主机存储器控制器115的这种逻辑-物理转换。当主机存储器控制器115执行这种逻辑-物理转换时,主机存储器控制器115以阻止期望的存储器单元的正确位置的方式对地址进行卷积。
该难度的解决方案涉及装置驱动器160。装置驱动器160可对请求的存储器地址进行“预映射”,以便在主机存储器控制器115执行它的逻辑-物理转换之后,NVDIMM 105接收它所期望的直接存储器地址。
装置驱动器160如何执行该预映射取决于许多因素。图2示出涉及图1的装置驱动器160的设计的各种考虑。涉及装置驱动器160的操作的因素有:暴露的存储器150的大小205、暴露的存储器150的基地址210、暴露的存储器150的逻辑段(下面将参照图5和图8进一步讨论逻辑段)的大小215、主机存储器控制器115的操作模式220和由主机存储器控制器115使用的逻辑-物理转换。装置驱动器160可探测底层机器的总线,以确定主机存储器控制器115的操作模式220和逻辑-物理转换225;其他因素被内置于图1的NVDIMM 105的设计中,并将提前被装置驱动器160所知。
在本发明构思的一个实施例中,主机存储器控制器115的操作模式220可在页面打开控制器模式下操作,在所述模式中,主机存储器控制器115假定存储器访问地址被一起紧密地隔开。例如,这种请求通常发生在台式计算机系统中和输入/输出请求中。在本发明构思的另一个实施例中,主机存储器控制器115的操作模式220可在页面关闭控制器模式下操作,在所述模式中,主机存储器控制器115假定在存储器请求中存在减少的访问的位置。通常,主机存储器控制器115只在一种模式下操作,并且在底层机器的操作期间不切换操作模式(虽然当底层机器下次启动时,主机存储器控制器115可能切换到不同的操作模式)。逻辑-物理转换225可包括自身的各种因素(诸如,区块(rank)地址、库(bank)组地址、库地址、行地址和列地址)。
在对图1的装置驱动器160可如何执行预映射的示例进行描述之前,一些额外的信息将会是有用的。转到图3,图3示出能支持图1的主机处理器110和NVDIMM 105的计算机系统的外部特征。示出可包括计算机310、显示器315、键盘320和鼠标325的计算机系统305。本领域技术人员将认识到,计算机系统305可包括其他组件:例如,可包括诸如打印机的其他输入/输出装置。此外,计算机系统305可包括在图1中示出的常规内部组件(诸如,图1的主机处理器110、图1的NVDIMM 105、额外的存储器等)。虽然未在图3中示出,但是本领域技术人员将认识到,计算机系统305可包括其他内部组件(诸如,其他的显卡和调制解调器等)。此外,本领域技术人员将认识到,计算机系统305可直接地或通过任意类型的网络(未示出)与其他计算机系统进行交互。最后,虽然图3将计算机系统305示出为常规台式计算机,但是本领域技术人员将认识到,计算机系统305可以是包括例如其他可能性中的膝上型计算机、平板计算机、个人数字助理(PDA)或智能电话的任意类型的机器或计算装置。
参照图4,通常,计算机系统305可包括一个或多个处理110,处理器110可包括主机存储器控制器115和时钟405,时钟405可被用于协调计算机系统305的组件的操作。还可将处理器110结合到存储器105,作为示例,存储器105可包括随机存取存储器(RAM)、只读存储器(ROM)或其他状态保存介质。还可将处理器110结合到存储装置410和网络连接器415,例如,网络连接器415可以是以太网连接器。还可将处理器110连接到总线420,其他组件中的可使用输入/输出引擎430进行管理的用户接口425和输入/输出接口端口可附连到总线420。
图5示出根据本发明构思的实施例的图1的示例NVDIMM的存储器空间的示例布局。在图5中,示出非易失性存储器130。非易失性存储器130可包括从基地址210开始的总容量505。可将非易失性存储器130划分成多个逻辑段(诸如,逻辑段510、逻辑段515、逻辑段520、逻辑段525和逻辑段530)。逻辑段是非易失性存储器130的细分。虽然逻辑段510、逻辑段515、逻辑段520、逻辑段525和逻辑段530通常将包括幂为2的多个字节,但是它们可具有任意期望的大小215。逻辑段510、逻辑段515、逻辑段520、逻辑段525和逻辑段530的大小215与非易失性存储器130的总容量505之间,甚至逻辑段510、逻辑段515、逻辑段520、逻辑段525和逻辑段530的大小215与暴露的存储器150的大小205之间不需要有关系。但是如果逻辑段510、逻辑段515、逻辑段520、逻辑段525和逻辑段530的大小215太小,则每个逻辑段510、逻辑段515、逻辑段520、逻辑段525和逻辑段530可能对存储器请求不具有充足的存储空间。
图5示出非易失性存储器130的总容量505是8GB,暴露的存储器150的大小205是1MB,而每个逻辑段的大小215是4KB的本发明构思的示例实施例。但是本发明构思的其他实施例可支持每个逻辑段的大小215、暴露的存储器150的大小205和非易失性存储器130的总容量505中的任意或全部的其他值。此外,虽然图5(和下面的图8)将暴露的存储器150示出为非易失性存储器130的一部分,但是暴露的存储器150可以与非易失性存储器130分开。
图6示出根据本发明构思的实施例的图1的装置驱动器160拦截对图1的NVDIMM中的存储器地址的访问并对请求的存储器地址进行预映射的示例。在图6中,应用(或一些其他的程序)可发出存储器请求605,存储器请求605对应于图1的NVDIMM 105中的存储器地址。装置驱动器160可拦截存储器请求605并对存储器地址进行预映射,而不是允许存储器请求605进行到主机存储器控制器115(将执行图2的逻辑-物理转换225)。预映射的结果是预映射的存储器地址610(也可被称为中间地址)。装置驱动器160然后可将预映射的存储器地址610传递到主机存储器控制器115,主机存储器控制器115可对预映射的存储器地址610执行逻辑-物理转换225。结果是目标存储器地址615:图1的NVDIMM 105存储期望的存储器单元的实际地址。
转到图1,在主机系统内,所有的DRAM子系统地址信号到达每个DIMM插槽,包括用NVDIMM 105填充的DIMM插槽125。为了实现地址分散,装置驱动器160使用一些信号来标识正确的对NVDIMM暴露的逻辑存储器段。剩下的信号上的值与映射无关(虽然这些信号上的值可被图1的NVDIMM 105使用)。如上面所讨论,精确的映射可改变,并可取决于逻辑段大小215和主机存储器控制器操作模式220。
作为装置驱动器160可如何操作以执行预映射的示例,假定NVDIMM 105包括:8GB的图5的总容量505、1MB的图2的暴露的存储器150的大小205和4KB的图2的逻辑块大小215。还假定,暴露的存储器150映射到下面的输入地址位(在存储器信号线120上):{行[2:0],列[9:0],ba[1:0],bg[1:0],3’b000}。(先前的是Verilog级联描述,它不是在硬件规范文档中必须如何描述映射,但是容易理解)。
如果存储器控制器操作模式220是页面打开模式,则图1的逻辑-物理转换225可例如根据下面的转换来对位进行映射:{区块[1:0],行[16:0],ba[1:0],bg[1:0],列[9:0],3’h0},并且装置驱动器160可使用映射{16’hxxxx,行[2:0],ba[1:0],bg[1:0],列[9:0],3’h0}对存储器地址进行预映射,其中,“x”表示“不在乎”的值(可使用任意值而不改变结果)。
另一方面,如果存储器控制器操作模式220是页面关闭模式,则图1的逻辑-物理转换225可例如根据下面的转换来对位进行映射:{区块[1:0],列[9:3],行[16:0],ba[1:0],bg[1:0],列[2:0],3’h0},并且装置驱动器160可使用映射{2’hx,列[9:3],14’hxxxx,行[2:0],ba[1:0],bg[1:0],列[2:0],3’h0}对存储器地址进行预映射,其中,“x”再次表示“不在乎”的值。
上面示出的示例预映射不是作为必要的实际映射而被构造。来自DRAM规范的每个组中的地址位(即,行位的数量、列位的数量、库位的数量和库组位的数量)被使用,然后被选择为相对于系统地址的示例故障(breakdown)。但是可以以类似的方式构造针对真实世界的存储器控制器的预映射。
通过使用存储器信号线120,NVDIMM 105可比使用非易失性存储器标准(NVMe)操作的非易失性存储器装置明显更快地与主机处理器160进行交互。这个事实是存储器通道的传输速率比(相对地)更慢的外围组件快速互连(PCIe)连接明显更快的事实的简单结果。但是存在潜在的复杂性。因为所有的存储器映射的I/O活动发生在非常窄的地址范围(例如,在上面参照图5描述的示例中的1M字节)内,所以NVDIMM 105可能易受由被称为行锤(Row Hammer)的DRAM DIMM标准缺陷引起的严重的性能约束。
简单地表述,行锤是当对特定的存储器单元重复访问时可损坏(诱导改变)一个或多个附近的存储器单元。当最初开发DRAM标准时,行锤不为JEDEC标准委员会所知。为了解决行锤,较新的JEDEC规范允许存储器控制器(诸如,图1的主机存储器控制器115)对针对相同的DRAM行的访问进行“节流(throttle)”(降低访问的频率)(被称为目标行刷新的规定)。
虽然减缓对特定DRAM行的访问可防止行锤,但是降低访问的频率也减慢存储器的操作。而且当不受制于行锤的存储器(诸如,图1的NVDIMM 105)被使用时,节流是不必要的。但是因为图1的NVDIMM 105需要表现为普通的DIMM(遵守JEDEC规范并与主机处理器110进行正确地交互),所以并不关心主机存储器控制器115不知道行锤。
图1的暴露的存储器150的地址范围越小,图1的主机存储器控制器115将对针对图1的NVDIMM 105的请求进行节流的可能性越高,以避免行锤。因此,防止主机存储器控制器115认为行锤是顾虑将会是有用的。
防止图1的主机存储器控制器115认为行锤是顾虑的一个方法是:在存储器地址到达图1的主机存储器控制器115之前对它们使用别名。图7示出装置驱动器160可如何使用别名的示例。
图7示出根据本发明构思的实施例的执行地址别名的图1的装置驱动器。在图7中,装置驱动器160可将存储器地址605预映射为预映射的存储器地址610。但是如上面在示例预映射中提到的,预映射可包括其值不相关的位:可使用任意值。通过改变映射到图1的主机存储器控制器115中的物理行位的一个或多个“不在乎”位,可针对图6的目标存储器地址615生成别名。所以,例如,预映射别名705和预映射别名710分别表示期望的存储器地址的别名,但包括不同的位模式(特别地,“不在乎”位中的不同位模式)。
装置驱动器160可使用用于改变“不在乎”位的任何期望的技术以生成别名。在本发明构思的一个实施例中,装置驱动器160可针对“不在乎”位生成随机(或伪随机)值。在本发明构思的另一个实施例中,装置驱动器160可针对“不在乎”位生成顺序值。本发明构思的其他实施例还可包括针对“不在乎”位生成值的其他方法。
在本发明构思的一些实施例中,装置驱动器160可追踪已被访问的存储器地址,并当看来图1的主机存储器控制器115将对针对图1的NVDIMM 105的访问进行节流时只改变“不在乎”位。在本发明构思的其他实施例中,装置驱动器160可在每次存储器访问时改变“不在乎”位的值,而不考虑图1的主机存储器控制器115是否可能另外对针对图1的NVDIMM105的访问进行节流。
防止图1的主机存储器控制器115认为行锤是顾虑的另一个方法是将图1的暴露的存储器150划分成具有非连续的存储器地址的逻辑段。图8示出可如何将图1的暴露的存储器150划分成具有非连续的存储器地址的逻辑段的示例。
图8示出根据本发明构思的第二实施例的图1的NVDIMM的存储器空间的第二示例布局。在图8中,图1的暴露的存储器150只包括具有大小205(大于图1的暴露的存储器150的实际大小)的逻辑段中的一些逻辑段。例如,图1的暴露的存储器150可能只包括逻辑段805、逻辑段810、逻辑段815和逻辑段820:虽然逻辑段825、逻辑段830和逻辑段835在大小205的范围内,但是不是图1的暴露的存储器150的部分。因为暴露的存储器150内的逻辑段的存储器地址不是连续的,所以行锤不再是问题。
图9示出根据本发明构思的实施例的图1的NVDIMM 105和图1的装置驱动器160可如何处理针对图1的NVDIMM 105中的存储器地址的请求的示例过程的流程图。在图9中,在方框905,图1的NVDIMM 105可将图1的暴露的存储器150开放给主机计算机(更加具体地讲,图1的主机存储器控制器115)。在方框910,图1的装置驱动器160可拦截访问图6的存储器地址605的请求,所述请求去往图1的主机存储器控制器115。在方框915,图1的装置驱动器160可接收访问图6的存储器地址605的请求。在方框920,图1的装置驱动器160可对图6的存储器地址605进行预映射,以生成图6的预映射的存储器地址610。在方框925,图1的装置驱动器160可改变图6的预映射的存储器地址610中的一个或多个位,以生成存储器地址605的图7中的别名705或别名710。如上面参照图7所述,生成图6的预映射的存储器地址610的图7中的别名705或别名710是可选的,因此方框925是可选的。最后,在方框930,图1的装置驱动器160可将图6的预映射的存储器地址610或者图7的别名705或别名710发送到图1的主机存储器控制器115。
图10示出根据本发明构思的实施例的图1的NVDIMM 105可如何将存储器150暴露给图1的主机计算机的过程的流程图。在图10中,在方框1005,图1的NVDIMM 105可选择图1的非易失性存储器130中的连续的存储器的块。(如先前所描述,图1的暴露的存储器150也可被存储在除了图1的非易失性存储器130之外的其他地方:除了改变图1的暴露的存储器150被存储的地方,在这样的情形下可不修改地使用图10的流程图)。图1的NVDIMM 105可以以任何期望的方式选择连续存储器的块。例如,图1的NVDIMM 105可选择在基地址0起始或在图5的总容量505的上端结束的存储器的连续块,或选择存储器的任意其他连续块。在方框1010,图1的NVDIMM 105可将存储器的连续块划分成逻辑段(例如,图5的逻辑段510、逻辑段515、逻辑段520、逻辑段525和逻辑段530)。在方框1015,图1的NVDIMM 105可将逻辑段(诸如,图5的逻辑段510、逻辑段515、逻辑段520、逻辑段525和逻辑段530)暴露为图1的暴露的存储器150。
可选地,在方框1020,图1的NVDIMM 105可在图1的非易失性存储器130中选择存储器的非连续块,所述非连续块中的每一个块具有图2的一致的大小215。如方框1005一样,图1的NVDIMM 105可以以任意期望的方式选择非连续块。在方框1025中,图1的NVDIMM 105可将存储器的非连续块暴露为逻辑段805、逻辑段810、逻辑段815和逻辑段820。
虽然图10表明图1的NVDIMM 105暴露存储器的连续块或非连续块,但是本发明构思的其他实施例可结合两者变化。例如,可识别图1的非易失性存储器130的4个大的部分(每个部分自身是连续块),并且可将每个部分划分成可由图1的NVDIMM 105暴露的逻辑块。
在图9至图10中,示出本发明构思的一个实施例。但是本领域技术人员将认识到,通过改变方框的顺序,通过省略方框,或通过包括未在附图中示出的连接,本发明构思的其他实施例也是可能的。无论是否清楚地描述,流程图的所有这样的变形都被视为本发明构思的实施例。
以下讨论意图为提供可实施本发明构思的一些方面的合适的机器的简洁和一般性的描述。机器可通过来自常规输入装置(例如,键盘、鼠标等)的输入以及通过从另一机器接收的指令、与虚拟现实(VR)环境的交互、生物识别反馈或其它输入信号被至少部分地控制。如在此所使用的,术语“机器”意在广泛包括单个机器、虚拟机器或一起操作的通信地结合的机器、虚拟机器或装置的系统。示例性机器包括计算装置(例如,个人计算机、工作站、服务器、便携式计算机、手持装置、电话、平板等)以及运输装置,例如,私有或公共交通工具(例如,汽车、火车、出租车等)。
机器可包括嵌入式控制器(诸如,可编程或不可编程的逻辑装置或阵列)、专用集成电路(ASIC)、嵌入式计算机、智能卡等。机器可使用一个或多个连接(诸如通过网络接口、调制解调器或其他通信结合)来连接到一个或多个远程机器。机器可通过物理和/或逻辑网络(诸如,内联网、互联网、局域网、广域网等)的方式互相连接。本领域技术人员将理解,网络通信可使用各种有线和/或无线近程或远程载波和协议,包括射频(RF)、卫星、微波、电气与电子工程师协会(IEEE)802.11、光纤、红外线、电缆、激光等。
可通过参考或结合关联的数据来描述本发明构思的实施例,其中,关联的数据包括当由机器访问时导致所述机器执行任务或定义抽象数据类型或低级硬件环境的函数、程序、数据结构、应用程序等。例如,关联的数据可被存储在易失性和/或非易失性存储器(例如,RAM、ROM等)中或其他存储装置和它们的关联的存储媒介(包括硬盘、软盘、光存储器、磁带、闪存、记忆棒、数字视频盘、生物存储器等)中。关联的数据可以以数据包、串行数据、并行数据、传播信号等的形式通过传输环境(包括物理和/或逻辑网络)被传送,并可以以压缩或加密格式被使用。关联的数据可被用于分布式环境,并可被本地存储和/或远程存储以便机器访问。
本发明构思的实施例可以包括有形的、非易失性机器可读介质,所述介质包括可通过一个或多个处理器执行的指令,所述指令包括用于执行在此描述的本发明构思的要素的指令。
已经参考示出的实施例描述和示出了本发明构思的原理,将认识到,在不脱离这些原理的情况下,可以在布置和细节上修改示出的实施例,并且可以以任何期望的形式组合示出的实施例。而且,尽管前面的讨论集中于特定的实施例,但是也预期其他配置。具体地讲,即使这里使用了诸如“根据本发明构思的实施例”等的描述,这些短语也表示整体参考实施例的可能性,并不意在将本发明构思限制到特定的实施例配置。如这里所使用的,这些术语可参考可组合到其他实施例的相同或者不同的实施例。
上述示出的实施例并不会被解释为限制本发明构思。虽然描述了一些实施例,但本领域技术人员将容易理解,在实质上不脱离本公开的新颖性教导和优点的情况下,可以对那些实施例作出许多修改。因此,所有这样的修改意在被包括在权利要求限定的本发明构思范围内。
本发明构思的实施例可以无限制的延伸到以下声明:
声明1:本发明构思的实施例包括一种装置,包括:
非易失性双列直插式存储器模块(NVDIMM),被安装在双列直插式存储器模块(DIMM)插槽中,所述NVDIMM包括存储器和暴露的存储器,暴露的存储器包括暴露的存储器的第一大小和暴露的存储器的基地址;
装置驱动器,在主机处理器上操作,所述装置驱动器操作性地拦截去往主机存储器控制器的存储器地址并将所述存储器地址替换为预映射的存储器地址,预映射的存储器地址与所述存储器地址不同。
声明2:本发明构思的实施例包括根据声明1的装置,其中,NVDIMM包括固态器件(SSD)。
声明3:本发明构思的实施例包括根据声明1的装置,其中,预映射的存储器地址被设计为使得主机存储器控制器将目标存储器地址发送到NVDIMM,目标存储器地址表示被存储在所述存储器地址中的值的物理位置。
声明4:本发明构思的实施例包括根据声明3的装置,其中,装置驱动器操作性地响应于NVDIMM中的暴露的存储器的第一大小、NVDIMM中的暴露的存储器的基地址、NVDIMM中的暴露的存储器的逻辑段的第二大小和主机存储器控制器的存储器控制器操作模式,从所述存储器地址生成预映射的存储器地址。
声明5:本发明构思的实施例包括根据声明4的装置,其中,装置驱动器还操作性地响应于通过主机存储器控制器的所述存储器地址的逻辑-物理转换,从所述存储器地址生成预映射的存储器地址。
声明6:本发明构思的实施例包括根据声明3的装置,其中,目标存储器地址是所述存储器地址。
声明7:本发明构思的实施例包括根据声明3的装置,其中,目标存储器地址是所述存储器地址的别名。
声明8:本发明构思的实施例包括根据声明7的装置,其中,预映射的存储器地址包括与所述存储器地址相关的至少一个变化位,所述至少一个变化位不被NVDIMM使用。
声明9:本发明构思的实施例包括根据声明3的装置,其中,NVDIMM的暴露的存储器被划分成NVDIMM的存储器内的非连续逻辑段。
声明10:本发明构思的实施例包括根据声明3的装置,其中,暴露的存储器是存储器的子集。
声明11:本发明构思的实施例包括一种方法,包括:
接收访问非易失性双列直插式存储器模块(NVDIMM)的存储器地址的请求,NVDIMM包括存储器和暴露的存储器,暴露的存储器包括暴露的存储器的第一大小和暴露的存储器的基地址;
将所述存储器地址预映射到中间地址,中间地址与所述存储器地址不同;
将中间地址发送到主机存储器控制器,
其中,主机存储器控制器将目标存储器地址发送到NVDIMM,目标存储器地址表示被存储在所述存储器地址中的值的物理位置。
声明12:本发明构思的实施例包括根据声明11的方法,其中,接收访问存储器地址的请求的步骤包括:在请求到达主机存储器控制器之前,拦截从主机处理器到主机存储器控制器的访问所述存储器地址的请求。
声明13:本发明构思的实施例包括根据声明11的方法,其中,接收访问存储器地址的请求的步骤包括:接收访问固态器件(SSD)的存储器地址的请求。
声明14:本发明构思的实施例包括根据声明11的方法,其中,将所述存储器地址预映射到中间地址的步骤包括:响应于NVDIMM中的暴露的存储器的第一大小、NVDIMM中的暴露的存储器的基地址、NVDIMM中的暴露的存储器的逻辑段的第二大小和主机存储器控制器的存储器控制器操作模式,将所述存储器地址预映射到中间地址。
声明15:本发明构思的实施例包括根据声明14的方法,其中,将所述存储器地址预映射到中间地址的步骤还包括:响应于NVDIMM中的暴露的存储器的第一大小、NVDIMM中的暴露的存储器的基地址、NVDIMM中的暴露的存储器的逻辑段的第二大小、主机存储器控制器的存储器控制器操作模式和由主机存储器控制器使用的逻辑-物理转换,将所述存储器地址预映射到中间地址。
声明16:本发明构思的实施例包括根据声明11的方法,其中,主机存储器控制器将所述存储器地址发送到NVDIMM。
声明17:本发明构思的实施例包括根据声明11的方法,其中,将所述存储器地址预映射到中间地址的步骤包括:将所述存储器地址预映射到所述存储器地址的别名。
声明18:本发明构思的实施例包括根据声明11的方法,其中,将所述存储器地址预映射到中间地址的步骤包括:改变与所述存储器地址有关的中间地址中的至少一位,改变的至少一位不被NVDIMM使用。
声明19:本发明构思的实施例包括根据声明11的方法,还包括:将暴露的存储器暴露给主机存储器控制器。
声明20:本发明构思的实施例包括根据声明19的方法,其中,将暴露的存储器暴露给主机存储器控制器的步骤包括:
识别具有第一大小的存储器的连续块;
将存储器的连续块划分成多个逻辑段,每一个逻辑段具有第二大小;
将所述多个逻辑段暴露给主机存储器控制器。
声明21:本发明构思的实施例包括根据声明19的方法,其中,将暴露的存储器暴露给主机存储器控制器的步骤包括:
识别存储器的非连续块的集合;
将存储器的非连续块作为逻辑段暴露给主机存储器控制器。
声明22:本发明构思的实施例包括:一种物品,包括一种有形的存储介质,所述有形的存储介质具有存储在其上的非暂时性指令,当所述非暂时性指令由机器执行时,导致:
接收访问非易失性双列直插式存储器模块(NVDIMM)的存储器地址的请求,NVDIMM包括存储器和暴露的存储器,暴露的存储器包括暴露的存储器的第一大小和暴露的存储器的基地址;
将所述存储器地址预映射到中间地址,中间地址与所述存储器地址不同;
将中间地址发送到主机存储器控制器,
其中,主机存储器控制器将目标存储器地址发送到NVDIMM,目标存储器地址表示被存储在所述存储器地址中的值的物理位置。
声明23:本发明构思的实施例包括根据声明22的物品,其中,接收访问存储器地址的请求的步骤包括:在请求到达主机存储器控制器之前,拦截从主机处理器到主机存储器控制器的访问所述存储器地址的请求。
声明24:本发明构思的实施例包括根据声明22的物品,其中,接收访问存储器地址的请求的步骤包括:接收访问固态器件(SSD)的存储器地址的请求。
声明25:本发明构思的实施例包括根据声明22的物品,其中,将所述存储器地址预映射到中间地址的步骤包括:响应于NVDIMM中的暴露的存储器的第一大小、NVDIMM中的暴露的存储器的基地址、NVDIMM中的暴露的存储器的逻辑段的第二大小和主机存储器控制器的存储器控制器操作模式,将所述存储器地址预映射到中间地址。
声明26:本发明构思的实施例包括根据声明25的物品,其中,将所述存储器地址预映射到中间地址的步骤还包括:响应于NVDIMM中的暴露的存储器的第一大小、NVDIMM中的暴露的存储器的基地址、NVDIMM中的暴露的存储器的逻辑段的第二大小、主机存储器控制器的存储器控制器操作模式和由主机存储器控制器使用的逻辑-物理转换,将所述存储器地址预映射到中间地址。
声明27:本发明构思的实施例包括根据声明22的物品,其中,主机存储器控制器将所述存储器地址发送到NVDIMM。
声明28:本发明构思的实施例包括根据声明22的物品,其中,将所述存储器地址预映射到中间地址的步骤包括:将所述存储器地址预映射到所述存储器地址的别名。
声明29:本发明构思的实施例包括根据声明22的物品,其中,将所述存储器地址预映射到中间地址的步骤包括:改变与所述存储器地址有关的中间地址中的至少一位,改变的至少一位不被NVDIMM使用。
声明30:本发明构思的实施例包括根据声明22的物品,其中,所述有形的存储介质还在其上存储当被机器执行时导致将暴露的存储器暴露给主机存储器控制器的非暂时性指令。
声明31:本发明构思的实施例包括根据声明30的物品,其中,将暴露的存储器暴露给主机存储器控制器的步骤包括:
识别具有第一大小的存储器的连续块;
将存储器的连续块划分成多个逻辑段,每一个逻辑段具有第二大小;
将所述多个逻辑段暴露给主机存储器控制器。
声明32:本发明构思的实施例包括根据声明30的物品,其中,将暴露的存储器暴露给主机存储器控制器的步骤包括:
识别存储器的非连续块的集合;
将存储器的非连续块作为逻辑段暴露给主机存储器控制器。
因此,考虑到这里描述的实施例的多种置换,本具体实施方式和随附的材料仅旨在说明性,而不应该被认为限制本发明构思的范围。因此,本发明构思所要求的是可以在权利要求及其等同物的范围和精神之内的所有这种修改。

Claims (15)

1.一种非易失性存储器装置,包括:
非易失性双列直插式存储器模块(NVDIMM),被安装在双列直插式存储器模块(DIMM)插槽中,NVDIMM包括存储器和暴露的存储器,暴露的存储器包括暴露的存储器的第一大小和暴露的存储器的基地址;
装置驱动器,在主机处理器上操作,其中,装置驱动器操作性地拦截去往主机存储器控制器的存储器地址并将所述存储器地址替换为预映射的存储器地址,预映射的存储器地址与所述存储器地址不同。
2.根据权利要求1所述的非易失性存储器装置,其中,NVDIMM包括固态器件(SSD)。
3.根据权利要求1所述的非易失性存储器装置,其中,预映射的存储器地址被设计为使得主机存储器控制器将目标存储器地址发送到NVDIMM,目标存储器地址表示被存储在所述存储器地址中的值的物理位置。
4.根据权利要求3所述的非易失性存储器装置,其中,装置驱动器操作性地响应于NVDIMM中的暴露的存储器的第一大小、NVDIMM中的暴露的存储器的基地址、NVDIMM中的暴露的存储器的逻辑段的第二大小和主机存储器控制器的存储器控制器操作模式,从存储器地址生成预映射的存储器地址。
5.根据权利要求4所述的非易失性存储器装置,其中,装置驱动器还操作性地响应于通过主机存储器控制器的所述存储器地址的逻辑-物理转换,从所述存储器地址生成预映射的存储器地址。
6.根据权利要求3所述的非易失性存储器装置,其中,目标存储器地址是所述存储器地址的别名。
7.根据权利要求6所述的非易失性存储器装置,其中,预映射的存储器地址包括与所述存储器地址相关的至少一个变化位,所述至少一个变化位不被NVDIMM使用。
8.一种操作非易失性存储器装置的方法,包括:
接收访问非易失性双列直插式存储器模块(NVDIMM)的存储器地址的请求,NVDIMM包括存储器和暴露的存储器,暴露的存储器包括暴露的存储器的第一大小和暴露的存储器的基地址;
将所述存储器地址预映射到中间地址,中间地址与所述存储器地址不同;
将中间地址发送到主机存储器控制器,
其中,主机存储器控制器将目标存储器地址发送到NVDIMM,目标存储器地址表示被存储在所述存储器地址中的值的物理位置。
9.根据权利要求8所述的方法,其中,接收访问存储器地址的请求的步骤包括:接收访问固态器件(SSD)的存储器地址的请求。
10.根据权利要求8所述的方法,其中,将所述存储器地址预映射到中间地址的步骤包括:响应于NVDIMM中的暴露的存储器的第一大小、NVDIMM中的暴露的存储器的基地址、NVDIMM中的暴露的存储器的逻辑段的第二大小和主机存储器控制器的存储器控制器操作模式,将所述存储器地址预映射到中间地址。
11.根据权利要求10所述的方法,其中,将所述存储器地址预映射到中间地址的步骤还包括:响应于NVDIMM中的暴露的存储器的第一大小、NVDIMM中的暴露的存储器的基地址、NVDIMM中的暴露的存储器的逻辑段的第二大小、主机存储器控制器的存储器控制器操作模式和由主机存储器控制器使用的逻辑-物理转换,将所述存储器地址预映射到中间地址。
12.根据权利要求8所述的方法,其中,将所述存储器地址预映射到中间地址的步骤包括:将所述存储器地址预映射到所述存储器地址的别名。
13.根据权利要求8所述的方法,其中,将所述存储器地址预映射到中间地址的步骤包括:改变与所述存储器地址有关的中间地址中的至少一位,改变的至少一位不被NVDIMM使用。
14.根据权利要求8所述的方法,还包括:将暴露的存储器暴露给主机存储器控制器。
15.根据权利要求14所述的方法,其中,将暴露的存储器暴露给主机存储器控制器的步骤包括:
识别具有第一大小的存储器的连续块;
将存储器的连续块划分成多个逻辑段,每一个逻辑段具有第二大小;
将所述多个逻辑段暴露给主机存储器控制器。
CN201610877643.3A 2015-10-07 2016-10-08 Dimm ssd寻址性能技术 Active CN106776358B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562238660P 2015-10-07 2015-10-07
US62/238,660 2015-10-07
US15/060,596 2016-03-03
US15/060,596 US10031674B2 (en) 2015-10-07 2016-03-03 DIMM SSD addressing performance techniques

Publications (2)

Publication Number Publication Date
CN106776358A true CN106776358A (zh) 2017-05-31
CN106776358B CN106776358B (zh) 2021-10-26

Family

ID=58498625

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610877643.3A Active CN106776358B (zh) 2015-10-07 2016-10-08 Dimm ssd寻址性能技术

Country Status (5)

Country Link
US (1) US10031674B2 (zh)
JP (1) JP6799427B2 (zh)
KR (1) KR102317657B1 (zh)
CN (1) CN106776358B (zh)
TW (2) TWI699646B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109753237A (zh) * 2017-11-01 2019-05-14 三星电子株式会社 计算设备和非易失性双列直插式存储器模块

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10437483B2 (en) * 2015-12-17 2019-10-08 Samsung Electronics Co., Ltd. Computing system with communication mechanism and method of operation thereof
US10635553B2 (en) * 2017-10-20 2020-04-28 Microsoft Technology Licensing, Llc Error recovery in non-volatile storage partitions
JP7279889B2 (ja) * 2017-11-07 2023-05-23 ホアウェイ・テクノロジーズ・カンパニー・リミテッド メモリブロックリクレーム方法およびメモリブロックリクレーム装置
KR102410671B1 (ko) 2017-11-24 2022-06-17 삼성전자주식회사 스토리지 장치, 스토리지 장치를 제어하는 호스트 장치, 및 스토리지 장치의 동작 방법
JP2019121195A (ja) 2018-01-05 2019-07-22 東芝メモリ株式会社 メモリシステム及びプロセッサシステム
US11029879B2 (en) 2018-01-29 2021-06-08 Samsung Electronics Co., Ltd Page size synchronization and page size aware scheduling method for non-volatile memory dual in-line memory module (NVDIMM) over memory channel
US10838637B2 (en) 2018-02-08 2020-11-17 Micron Technology, Inc. Status management in storage backed memory package
US11074189B2 (en) 2019-06-20 2021-07-27 International Business Machines Corporation FlatFlash system for byte granularity accessibility of memory in a unified memory-storage hierarchy
US11113188B2 (en) 2019-08-21 2021-09-07 Microsoft Technology Licensing, Llc Data preservation using memory aperture flush order
KR102657760B1 (ko) 2019-09-23 2024-04-17 에스케이하이닉스 주식회사 메모리 시스템 및 그 메모리 시스템의 동작 방법

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101473438A (zh) * 2006-06-07 2009-07-01 微软公司 具有单个接口的混合存储器设备
US20090276544A1 (en) * 2008-05-05 2009-11-05 International Business Machines Corporation Mapping a Virtual Address to PCI Bus Address
JP2012119018A (ja) * 2010-11-30 2012-06-21 Hitachi Ltd 半導体装置および情報処理システム
US20130019048A1 (en) * 2011-07-15 2013-01-17 International Business Machines Corporation Memory Access To A Dual In-line Memory Module Form Factor Flash Memory
US20130086303A1 (en) * 2011-09-30 2013-04-04 Fusion-Io, Inc. Apparatus, system, and method for a persistent object store
CN103946826A (zh) * 2011-09-30 2014-07-23 英特尔公司 用于在公共存储器通道上实现多级存储器层级的设备和方法
US20150106560A1 (en) * 2011-08-24 2015-04-16 Rambus Inc. Methods and systems for mapping a peripheral function onto a legacy memory interface
CN104881371A (zh) * 2015-05-29 2015-09-02 清华大学 持久性内存事务处理缓存管理方法与装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6732249B1 (en) * 2000-06-09 2004-05-04 3Com Corporation Host computer virtual memory within a network interface adapter
EP1473638B1 (en) * 2003-04-28 2008-07-23 Texas Instruments Incorporated Terminal management bus
US20060044934A1 (en) * 2004-09-02 2006-03-02 Micron Technology, Inc. Cluster based non-volatile memory translation layer
US20060168485A1 (en) * 2005-01-26 2006-07-27 Via Technologies, Inc Updating instruction fault status register
TWI462112B (zh) * 2006-08-04 2014-11-21 Marvell World Trade Ltd 具有誤差修正功能之完全緩衝式雙直列記憶體模組
US8874831B2 (en) 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
US9251899B2 (en) * 2008-02-12 2016-02-02 Virident Systems, Inc. Methods for upgrading main memory in computer systems to two-dimensional memory modules and master memory controllers
US8082384B2 (en) * 2008-03-26 2011-12-20 Microsoft Corporation Booting an electronic device using flash memory and a limited function memory controller
US20110035540A1 (en) 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method
US9552175B2 (en) 2011-02-08 2017-01-24 Diablo Technologies Inc. System and method for providing a command buffer in a memory system
US9575908B2 (en) 2011-02-08 2017-02-21 Diablo Technologies Inc. System and method for unlocking additional functions of a module
KR20130078455A (ko) * 2011-12-30 2013-07-10 삼성전자주식회사 메모리 특성 정보를 저장하는 반도체 메모리 장치, 이를 포함하는 메모리 모듈, 메모리 시스템 및 반도체 메모리 장치의 동작방법
US9046915B2 (en) * 2012-02-27 2015-06-02 Advanced Micro Devices, Inc. Circuit and method for initializing a computer system
US9280497B2 (en) 2012-12-21 2016-03-08 Dell Products Lp Systems and methods for support of non-volatile memory on a DDR memory channel
JP6224483B2 (ja) * 2014-02-26 2017-11-01 Necプラットフォームズ株式会社 半導体記憶装置、メモリアクセス制御方法、およびコンピュータ・プログラム
CA2941702A1 (en) * 2014-03-08 2015-09-17 Diamanti, Inc. Methods and systems for converged networking and storage

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101473438A (zh) * 2006-06-07 2009-07-01 微软公司 具有单个接口的混合存储器设备
US20090276544A1 (en) * 2008-05-05 2009-11-05 International Business Machines Corporation Mapping a Virtual Address to PCI Bus Address
JP2012119018A (ja) * 2010-11-30 2012-06-21 Hitachi Ltd 半導体装置および情報処理システム
US20130019048A1 (en) * 2011-07-15 2013-01-17 International Business Machines Corporation Memory Access To A Dual In-line Memory Module Form Factor Flash Memory
US20150106560A1 (en) * 2011-08-24 2015-04-16 Rambus Inc. Methods and systems for mapping a peripheral function onto a legacy memory interface
US20130086303A1 (en) * 2011-09-30 2013-04-04 Fusion-Io, Inc. Apparatus, system, and method for a persistent object store
CN103946826A (zh) * 2011-09-30 2014-07-23 英特尔公司 用于在公共存储器通道上实现多级存储器层级的设备和方法
CN104881371A (zh) * 2015-05-29 2015-09-02 清华大学 持久性内存事务处理缓存管理方法与装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
PAUL SWEERE: ""Creating Storage Class Persistent Memory With NVDIMM"", 《 HTTPS://WWW.FLASHMEMORYSUMMIT.COM/ENGLISH/COLLATERALS/PROCEEDINGS/2013/20130814_T2_SWEERE.PDF》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109753237A (zh) * 2017-11-01 2019-05-14 三星电子株式会社 计算设备和非易失性双列直插式存储器模块
CN109753237B (zh) * 2017-11-01 2024-04-05 三星电子株式会社 计算设备和非易失性双列直插式存储器模块

Also Published As

Publication number Publication date
US20170102873A1 (en) 2017-04-13
TW202040367A (zh) 2020-11-01
JP6799427B2 (ja) 2020-12-16
TW201714090A (zh) 2017-04-16
TWI699646B (zh) 2020-07-21
KR102317657B1 (ko) 2021-10-26
US10031674B2 (en) 2018-07-24
JP2017073129A (ja) 2017-04-13
TWI718969B (zh) 2021-02-11
KR20170041616A (ko) 2017-04-17
CN106776358B (zh) 2021-10-26

Similar Documents

Publication Publication Date Title
CN106776358A (zh) Dimm ssd寻址性能技术
CN105702277B (zh) 存储器系统和存储器控制器
US7730268B2 (en) Multiprocessor system having an input/output (I/O) bridge circuit for transferring data between volatile and non-volatile memory
US11604594B2 (en) Apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator
CN102681946B (zh) 内存访问方法和装置
CN110582745B (zh) 存储器装置及可促进张量存储器存取的方法
CN109388595A (zh) 高带宽存储器系统以及逻辑管芯
DE112015003397T5 (de) Vorrichtung, System und Verfahren zur Bestimmung von Vergleichsinformationen basierend auf Speicherdaten
CN106354656A (zh) 用于存储管理的方法和系统
CN105683953B (zh) 支持加速数据库操作的数据存储设备
CN107305534A (zh) 对使用NVMe接口的装置同时进行的内核模式和用户模式访问
US20140040541A1 (en) Method of managing dynamic memory reallocation and device performing the method
CN105940381A (zh) 存储器访问期间的数据重排序
US9632953B2 (en) Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers
CN105408875B (zh) 在存储器接口上的分布式过程执行和文件系统
CN105849669A (zh) 用于单个通道内的dram空间联合的方法和装置
US20180335943A1 (en) Memory system and operating method thereof
CN108304334A (zh) 应用处理器和包括中断控制器的集成电路
CN110287133A (zh) 存储器控制器及具有其的存储器系统
CN108351836A (zh) 具有选择性储存的多级非易失性缓存
US10503657B2 (en) DIMM SSD Addressing performance techniques
US20180188976A1 (en) Increasing read pending queue capacity to increase memory bandwidth
CN110047553A (zh) 数据处理系统及其操作方法
US20200293452A1 (en) Memory device and method including circular instruction memory queue
CN106293491B (zh) 写请求的处理方法和内存控制器

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