CN107092561A - 具有直接存取的多级存储器 - Google Patents
具有直接存取的多级存储器 Download PDFInfo
- Publication number
- CN107092561A CN107092561A CN201610912901.7A CN201610912901A CN107092561A CN 107092561 A CN107092561 A CN 107092561A CN 201610912901 A CN201610912901 A CN 201610912901A CN 107092561 A CN107092561 A CN 107092561A
- Authority
- CN
- China
- Prior art keywords
- nvram
- memory
- storage device
- page
- amount
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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
-
- 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
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- 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
-
- 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
-
- 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
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2024—Rewritable memory not requiring erasing, e.g. resistive or ferroelectric RAM
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
-
- 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/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- 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/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了用于实现具有直接存取的多级存储器的方法、设备以及系统的实施例。在一个实施例中,该方法包括在计算机系统中将某一量的非易失性随机存取存储器(NVRAM)指定为用作可替换于动态随机存取存储器(DRAM)的存储器。该方法通过将第二量的NVRAM指定为用作可替换于大容量存储设备的存储装置而继续。然后,该方法在计算机系统的操作期间将第一量的NVRAM的至少第一部分从存储器可替换指定重新指定为存储装置可替换指定。最后,该方法在计算机系统的操作期间将第二量的NVRAM的至少第一部分从存储装置可替换指定重新指定为存储器可替换指定。
Description
本申请是申请日为2011年12月29日、申请号为201180075995.2、发明名称为“具有直接存取的多级存储器”的发明专利申请的分案申请。
技术领域
本发明涉及实现具有直接非易失性存取的多级存储器子系统。
背景技术
相变存储器和开关(PCMS)是作为在现今的固态存储设备中普遍存在的NAND非易失性存储装置的后继而在开发中的非易失性存储技术。PCMS提供比NAND闪速高得多的性能,并且事实上开始接近当前在大多数客户端计算设备中被用作主要动态存储装置的动态随机存取存储器(DRAM)的性能点。虽然PCMS存储装置最初可能比NAND存储装置每比特更加昂贵,但预测该关系随时间而改变,直至最后PCMS与NAND相比是较不昂贵的。
附图说明
以下描述和附图用来图示本发明的实施例。在附图中:
图1图示出典型计算机系统的实施例。
图2图示出计算机系统中的简单两级存储器实现的实施例。
图3图示出基于多级存储器的系统的实施例,其中动态随机存取存储器被用作用于非易失性随机存取存储器的缓存。
图4图示出说明动态随机存取存储器缓存的一部分的专门化使用的基于多级存储器的系统的实施例。
图5图示出用于处理器的物理可寻址存储器空间的较低4GB。
图6图示出将一部分用于远存储器且将另一部分用于存储装置的经双分区的非易失性随机存取存储器的实施例。
图7图示出地址重定向表的实施例,其提供用于将页面粒度的平台物理地址和逻辑块地址映射到物理非易失性随机存取存储器设备中不断改变的页面中的功能性。
图8图示出地址重定向表的实施例,其用以将平台物理地址和逻辑块地址映射到非易失性随机存取存储器中,其不具有用于存储装置使用存储器使用的非易失性随机存取存储器的预先指定的物理线性部分。
图9是允许驻留在特定类型的设备中的非易失性存储页面被直接映射到软件应用的地址空间中的过程的实施例的流程图。
图10图示出使用页面空写策略的PCMS页面清除过程的实施例。
图11图示出用于向在幻像(phantom)地址空间中可用的PCMS页面写数据的写机制的过程流的实施例。
图12图示出从功率/性能角度来看允许PCMS页面被高效写入的机制的实施例。
图13图示出允许存储器和存储装置指定之间的非易失性随机存取存储器页面的一致移动的机制的实施例。
图14图示出用以支持消除不必要PCMS平面过渡的过程的过程和伴随机制(即硬件逻辑)的实施例。
图15图示出结合了具有基于直接存取的存储器子系统的多级存储器的计算设备的实施例。
具体实施方式
诸如PCMS非易失性存储之类的技术的组合,随着集成电路中晶体管的尺寸减小和性能增加,可以允许芯片上系统(SoC)架构利用该机会而在实现低成本、低功率以及高性能解决方案的新组合的同时创建令人激动的新系统。该进展是基于对现有存储器层级的修订,其建立被部署在低成本智能电话、平板电脑、笔记本电脑或其它形式的移动计算设备中的静态随机存取存储器(SRAM)、动态RAM(DRAM)以及非易失性存储装置的量之间的不同平衡。存在许多类型的非易失性存储装置,尽管根据所述的许多实施例,利用非易失性随机存取存储器(NVRAM)存储装置并在下面更详细地描述。
1. 非易失性随机存取存储器概述
存在用于NVRAM的许多可能技术选择,包括相变存储器(PCM)、相变存储器和开关(PCMS)(后者是前者的更特定实现)、字节可寻址持久性存储器(BPRAM)、存储类存储器(SCM)、通用存储器、Ge2Sb2Te5、可编程金属化单元(PMC)、电阻性存储器(RRAM)、重置(RESET)(非晶质)单元、设置(SET)(晶质)单元、PCME、奥弗辛斯基(Ovshinsky)存储器、铁电存储器(也称为聚合物存储器和聚(N-乙烯基咔唑))、铁磁存储器(也称为自旋电子学、SPRAM(自旋转移矩RAM))、STRAM(自旋隧穿RAM)、磁阻存储器、磁存储器、磁随机存取存储器(MRAM)以及半导体-氧化物-氮化物-氧化物半导体(SONOS,也称为电介质存储器)。
NVRAM具有以下特性:
• 其维持其内容,即使功率被移除,类似于在固态盘(SSD)中所使用的FLASH(闪速)存储器,并且不同于是易失性的SRAM和DRAM;
• 其可以具有比诸如SRAM和DRAM之类的易失性存储器更低的总功率消耗;
• 其可以具有类似于SRAM和DRAM的随机存取(也称为随机可寻址);
• 其以比在SSD中建立的FLASH(闪速)(其只能每次被重写和擦除一“块”——在尺寸方面最低限度地对于NOR FLASH(NOR闪速)而言64 千字节且对于NAND FLASH(NAND闪速)而言16 千字节)更低的粒度水平(例如,字节水平)是可重写和可擦除的;
• 其可以被用作系统存储器并被分配系统存储器地址空间的全部或一部分;
• 其可以能够使用事务协议(支持事务标识符(ID)以辨别不同的事务使得那些事务能够无序地完成的协议)通过总线(也可互换地被称作互连或链路)被耦合到CPU,并允许以小到足以支持NVRAM作为系统存储器的操作的粒度水平(例如,诸如64或128字节之类的缓存线大小)来进行存取。例如,总线/互连可以是存储器总线(例如,双倍数据速率(DDR)总线,诸如DDR3、DDR4等),在其上运行事务协议,与正常使用的非事务协议相对。作为另一示例,总线可以在正常地运行事务协议(本机事务协议)的总线上运行,诸如PCI高速(PCIE)总线、桌面管理接口(DMI)总线,或利用事务协议及足够小的事务有效载荷大小(例如,诸如64或128字节之类的缓存线大小)的任何其它类型的总线;以及
• 其还可以具有以下特性中的一个或多个:
○ 比诸如FLASH(闪速)之类的非易失性存储器/存储装置技术更快的写速度;
○ 非常高的读速度(比FLASH(闪速)更快且接近或等效于DRAM读速度);
○ 其可以是直接可写的(而不是像在SSD中所使用的FLASH(闪速)存储器一样在写数据之前要求擦除(用1覆写));和/或
○ 在故障之前的更大写数目(多于在SSD中所使用的引导ROM和FLASH(闪速))。
如以上提及的,与必须每次被重写并擦除完整“块”的FLASH(闪速)存储器形成对比,在任何给定实现中用以访问NVRAM的粒度水平可以取决于特定存储器控制器和特定存储器总线或NVRAM被耦合到的其它类型的总线。例如,在其中将NVRAM用作系统存储器的某些实现中,可以以缓存线(例如64字节或128字节缓存线)的粒度来访问NVRAM,尽管有以字节的粒度被访问的固有能力,因为缓存线是存储器子系统访问存储器的水平。因此,在某些实施例中,当将NVRAM部署在存储器子系统内时,可以以与在相同存储器子系统中所使用的DRAM相同的粒度水平来对其进行访问。即便如此,在某些实施例中,由存储器控制器和存储器总线或其它类型的总线对NVRAM的访问的粒度水平比Flash(闪速)所使用的块大小和I/O子系统的控制器和总线的访问大小更小。
NVRAM还可以结合耗损均衡算法以说明这样的事实,即存储单元在许多写访问之后开始耗尽,尤其是在诸如在系统存储器实现中可能发生相当数量写的情况下。由于高循环计数块最有可能以这种方式耗尽,所以耗损均衡通过交换高循环计数块与低循环计数块的地址而跨远存储器单元来散布写。注意到,大多数地址交换对于应用程序而言通常是透明的,因为其被硬件、较低级软件(例如,低级驱动器或操作系统)或两者的组合来处理。
NVRAM在其特性和/或其在存储器/存储装置层级中的应用方面与其它指令和数据存储器/存储装置技术可区别。例如,NVRAM不同于:
• 静态随机存取存储器(SRAM),其可以被用于专用于处理器内的每个核的0级和1级内部处理器缓存和由处理器内的核所共享的较低级缓存(LLC);
• 动态随机存取存储器(DRAM),其被配置为在处理器管芯内部的缓存(例如,在与处理器相同的管芯上)、被配置为在处理器管芯外部的一个或多个缓存(例如,在与处理器管芯相同或不同的封装中)或在处理器封装外部的一般系统存储器;以及
• FLASH(闪速)存储器/磁盘/光盘,其被应用为大容量存储装置;以及
• 诸如FLASH(闪速)存储器或其它只读存储器(ROM)之类的存储器,其被应用为固件存储器(其可以指的是引导ROM、基本输入/输出系统(BIOS)Flash(闪速)和/或可信平台模块(TPM)Flash(闪速))。
可以使用NVRAM作为直接由处理器可寻址且能够充分地跟上处理器的指令和数据存储装置,与被应用为大容量存储装置的FLASH(闪速)/磁盘/光盘形成对比。直接可寻址性指的是处理器,诸如CPU或GPU,能够向NVRAM发送存储器请求,如同其为标准DRAM(例如,通过标准存储器存储和加载命令)一样。此外,如上文所讨论和下面详细描述的,可以将NVRAM放置在存储器总线上,并且可以直接与存储器控制器通信,所述存储器控制器继而又直接与处理器通信。
可以将NVRAM与其它指令和数据存储技术(例如,DRAM)组合以形成混合式存储器(也称为共同定位PCM和DRAM;第一级存储器和第二级存储器;FLAM(FLASH(闪速)和DRAM))。注意到,可以将上述技术中的至少某些、包括PCM/PCMS用于大容量存储装置,作为系统存储器的替代或除此之外,并且其在以这种方式应用时不需要是由处理器随机可访问、字节可寻址或者直接可寻址的。
为了方便解释,大部分其余应用将把“NVRAM”或者更具体地“PCM”或“PCMS”称为用于非易失性存储器的技术选择。因而,在以下讨论中可以可互换地使用术语NVRAM、PCM以及PCMS。然而,如上文所讨论的,应认识到的是,还可以利用不同的技术。
2. 多级存储器概述
多级存储器(MLM)是对PC平台拓扑的革命性改变。图1图示出典型计算机系统的实施例,其包括:
• 一个或多个中央/通用处理器(CPU)(100)。
• 一个或多个图形处理器(102)。
• 一个或多个IO控制器及其关联IO设备(104),诸如盘或固态驱动器(SSD)(106)及其它输入/输出(I/O)设备(108)。
• 管芯上缓存(110),其意图将中央处理器和可选地图形处理器与相对缓慢的DRAM存储器隔离。
• 存储器控制器(112),其被设计成取决于当时的系统要求而针对带宽和/或等待时间最优地调度DRAM命令。
• 一个或多个DRAM存储装置组(114),通常被布置为64比特通道。低端计算设备可以具有单个通道,而高端计算设备可以具有两个或三个DRAM通道。
如果用双倍数据速率3(DDR3)组件来实现典型计算设备,则对于由处理器发起的错失管芯上缓存的存储器读事务的等待时间从事务被传递至存储器控制器的时间至数据被返回至管芯上缓存块的时间可能约为30纳秒(ns)(例如,对于DRAM页面命中而言15ns、对于DRAM页面清空而言30ns、对于DRAM页面错失而言45ns)。此等待时间常常是处理器应用性能的显著驱动。
DDR3-1600存储器的单个通道上的峰值带宽是每秒12.8千兆字节(GB)。此类通道的有效带宽通常将为该数目的约70%。此有效存储器带宽能够在通用处理器和图形处理器的性能中起到基本作用。
在简单形式中,可以将2级存储器视为用图2中示出(即,NVRAM设备200)的NVRAM存储装置(例如,用PCMS存储装置)来替换系统的大量DDR DRAM存储装置的机制。
可以以低成本来实现图2中所示的解决方案。然而,此类系统的性能、功率消耗和可靠性属性将不是理想的,并且潜在地在某些应用的情况下可能具有由其性质而将引起不利功率、性能或设备耗损状况的显著问题。利用PCMS的类图2的配置的等待时间(~50ns)和带宽(对于读而言~6.4GB/秒)例如分别远远高于和低于PCMS设备正在替换的DRAM(来自图1)。
具体地在PCMS情况下的当替换DRAM时要求小心的另一问题是PCMS的读和写带宽能力之间的明显差异。在DRAM的情况下,每个存储器设备能够以相同速率读和写数据。然而,PCMS核由其物理性质而要求比其读取一片数据所需的长得多的时间来写一片数据。对于PCMS的读/写带宽比是4:1。换言之,能够比能够向PCMS设备写数据快四倍地从该设备读取数据。
作为整体来看,计算设备由于三个原因之一而向易失性存储器(传统DRAM)写数据:
• 作为在运行应用或系统服务的过程中所使用的临时空间。通常存在两类型临时空间:在应用的寿命期间持续的堆空间和以短得多的跨度出现和消失的一个或多个栈空间。
• 作为较长期存储空间,其持续达系统上的应用或操作系统运行时的持续时间。
• 作为DMA缓冲器,其在数据以某种方式在I/O子系统与通用或图形处理器之间进行交换之前用来将数据分级。这通常被用于信息处理设备(CPU或GPU)与外部实体之间的通信,该外部实体如同在图形数据的情况下的终端用户或在HTML浏览数据的情况下的网络。
按照定义,至少堆空间、栈空间以及DMA缓冲器是临时的。用实现传统替换算法并消除去往和来自PCMS的大多数业务的高效缓存,能够将诸如这些之类的临时存储使用保持在较小DRAM覆盖区中。在基于MLM的存储器系统的核处的是大型回写DRAM,其保留最近使用的数据、吸收写事务并允许系统有基本的在写附近读取的能力。DRAM基本上被用作用于PCMS的缓存。
图3图示出其中将DRAM用作用于NVRAM存储器的缓存的基于MLM的系统。在本示例中,将DRAM称为“近存储器”300并将NVRAM(例如PCMS)称为“远存储器”302。此命名法是基于存储器的相对性能(近存储器一般具有比远存储器更低的等待时间和更高的带宽)。另外,虽然存在可以用来附连DRAM和NVRAM的许多可能链路(即,总线、互连),但在图3中所示的实施例中,通过包括用于给定量的NVRAM(例如,64GB)的单个存储器通道的32比特宽链路来附连远存储器NVRAM,并且通过包括DRAM芯片与SoC之间的硅通孔(TSV)附连的512比特宽链路(潜在地数据宽的缓存线)来附连近存储器DRAM。因此,在不同实施例中,取决于与计算设备相关联的成本、性能以及功率考虑,DRAM可以在从64MB至512MB或更多的任何位置处。鉴于近存储器命中的性能特性和对于远存储器事务招致的负担,MLM的有效性由给定工作负荷或工作负荷集“命中”近存储器缓存的时间量支配。
不必要地对其包含的数据的特性视而不见的缓存常常实现起来最简单,但是可能是次优的。由于该原因,MLM架构领会到分配近存储器的专用区域以供特定使用可能更好。图4图示出说明DRAM缓存的一部分的专门化使用的基于MLM的系统。在图4中,替代于被作为具有八路64MB的八路缓存来管理,以这样的方式来划分512MB DRAM空间,即其被用作448MB7路缓存(400),与64MB被专用于由图形硬件和驱动器(402)进行的直接使用。
图5图示出其中NVRAM的较低4GB已被映射为由通用或图形处理器直接可访问的远存储器的情况。在图4中,专有GFX存储器区域402将被直接映射到处理器的物理地址空间中,潜在地在高DRAM空间500与低DRAM空间502之间。在许多实施例中,将使用寄存器或基于BIOS的机制来在引导时向图形驱动器传送位置。在这之后,其将归图形驱动器和控制器负责以向正常物理地址空间中或向专有GFX存储器区域402中分配绘制表面,以这样的方式使得易失性和时间敏感的表面(例如,帧缓冲器)被包含在专有存储器中。根据能够由驱动器所推断的性能或功率暗示,可以将其它非易失性、非时间敏感的表面(诸如静态纹理及其它非可显示图形表面)放置在任一空间中。
3. 具有直接存取的多级存储器(MLMD)
MLMD是在现成Microsoft® Windows®和Linux操作系统下保持运行生产力、娱乐以及游戏应用的能力的解决方案,同时其从系统移除外部DRAM以有利于与嵌入式SRAM或DRAM设备组合的新形式的非易失性存储装置。
在手持式设备或平板电脑中,将几乎总是使用如同NAND或NVRAM(诸如PCMS)的固态设备来实现非易失性存储装置。当设备使用NVRAM设备来实现MLM时,用NVRAM来实现整个存储系统是自然的,并且远存储器和存储系统共享NVRAM设备当然是合期望的。图6图示出将一部分用于远存储器600并将另一部分用于存储装置602的双分区NVRAM。使用“平台物理地址”(PPA)对存储器部分编索引,并使用“逻辑块地址”(LBA)对存储装置编索引。如图6中所示,存储器控制(器)/逻辑112将PPA空间页面地址映射到NVRAM 600的存储器部分中,并且存储装置控制(器)/逻辑604将LBA空间块地址映射到NVRAM 602的存储装置部分中。在具有此简单的映射时存在问题。诸如PCMS之类的某些类型的NVRAM设备具有某些缺陷和耗损特性,其妨碍PPA/LBA抽象与物理设备之间的连续地址的直接映射。
具体地针对PCMS,最明显问题包括:
• 缺陷管理—PCMS组件将带着已知缺陷从工厂装运,并且可以在其操作寿命范围内增加缺陷。
• 写耗损管理—PCMS实现具有关于任何给定单元应当被写的次数的限制。
• 读干扰—PCMS实现具有关于任何给定单元从在对单元的每次写之间应当被读取的次数的限制。
图7图示出提供用于将页面粒度的PPA和LBA映射到物理NVRAM设备中的不断改变的页面中的功能性的地址重定向表 。在图7中,存在“幻像”存储器重映射表700,其将给定PPA页面地址重映射至在0GB至4GB-1之间的直接地址空间(DSPACE)地址(涉及NVRAM的特定物理页面的地址)。在许多实施例中,存储器重映射表700作为单个存储器块而存储在被集成到存储器控制(图6中的112)中的SRAM中或近存储器(DRAM)中。如所示,在存储器重映射表700中存在1百万个存储器DSPACE条目,因为每个条目涉及PPA地址空间的唯一4KB页面。存储器重映射表700从重映射描述符组而构建(例如,存储器DSPACE 1表示存储器重映射表700中所存储的描述符。在许多实施例中,对于PPA空间的每个缓存线(例如,4K缓存线)存在一个描述符。描述符的内容可以基于可能需要被跟踪的不同信息片而变化。至少NVRAM设备地址将对于每个描述符实施例是公共的,其将包括对应于PPA存储器条目的NVRAM设备空间中的某一组地址比特。该地址将需要在每个描述符中以允许实际重映射过程发生。
类似于存储器描述符,在存储装置重映射表中还存在存储装置描述符。在图7中所示的实施例中,在存储装置重映射表702中存在1500万个存储装置DSPACE条目,因为每个条目涉及LBA地址空间的唯一4KB页面。根据某些实施例,重映射表700和702位于SRAM或被集成在硬件控制逻辑704内的其它高速存储器存储装置结构内。
虽然图7示出了存储装置和存储器重映射表是给定尺寸且以给定方式被组织的特定实现,但在许多其它实施例中,存储装置和存储器重映射表是不同尺寸、不同粒度水平的和/或以不同的方式实现(例如,存储装置描述符可以以较粗略的方式访问NVRAM,其中,除其它可替换示例之外,一个描述符涉及32 KB块而不是以4 KB页面粒度)。硬件控制逻辑704可以表示存储器控制112或存储装置控制604,其两者都在图6中示出,或者其可以包括也被设计成利用重映射表700和702的新且不同形式的控制逻辑。在某些实施例中,将存储装置控制和存储器控制表示为被集成在处理器中或与处理器分立的不同控制逻辑块。在其它实施例中,这些不同形式的控制逻辑被集成到单个控制逻辑块中,其涵盖管理(多个)NVRAM设备所必需的所有硬件控制逻辑。
返回到重映射表700和702,在其它实施例中,这些表被存储在存储MLMD及其它控制数据结构的DRAM的预留部分中。
基本上,图7图示出包括以下组件的虚拟存储器系统:
• 存储器重映射表700,其创建通过将少量DRAM和指针阵列组合到NVRAM空间600的物理存储器部分中而对传统DRAM进行仿真的虚拟或“幻像”空间。
• 存储装置重映射表702,其提供从LBA地址空间到NVRAM空间602的物理存储装置部分的转化。
• 硬件控制逻辑704,其允许软件驱动器逻辑706操纵存储器重映射表700中的指针以及存储装置重映射表中的指针。
• 软件驱动器,其使用前述硬件控制逻辑704来在NVRAM的存储装置和存储器部分之间重映射指针而不是通过中断请求和DMA转移来调度硬件驱动的数据拷贝。
在某些实施例中,存在被用于操纵重映射系统的存储器和存储装置部分的分离软件驱动器。在其它实施例中,存在一个软件驱动器,其包括处理这两个重映射表的逻辑,诸如软件驱动器逻辑706。根据某些实施例,可以用硬件来处理存储器描述符,而由软件驱动器来处理存储装置描述符。
虽然图7示出了将NVRAM分离成存储器部分600和存储装置部分602的NVRAM存储器/存储装置系统的实施例,但不存在将NVRAM设备划分成存储装置和存储器区域的特定原因,只要能够以直接了当的方式来管理将两者混合的复杂性即可。
一旦存储装置和存储器已经位于相同物理设备中且其地址被混合,则变得不必要以传统方式来执行盘相关的DMA操作——具体地,应当将数据从NVRAM的一部分拷贝到另一部分中变得不清楚。替代地,可以仅仅通过修改重映射表700和702中的指针而原地参考数据。以这种方式,应用看到数据出现在其地址空间中而没有首先被拷贝在那里。此重映射能力称为“直接存取”并说明MLMD系统中的“D”。
图8图示出与图7相同的地址重定向表以将PPA和LBA映射到NVRAM中,但是替代于具有用于存储装置使用的NVRAM的预先指定的物理线性部分和用于存储器使用的另一部分,允许图8中的NVRAM中的每个物理位置被指定用于存储装置或存储器使用。因而,在图8中,整个物理NVRAM空间800中的每个位置能够被用于存储器或存储装置。
图9是用于允许驻留在特定类型的设备(例如,PCMS存储器)中的非易失性存储页面被直接映射到软件应用的地址空间中的过程的流程图。此过程能够在没有将数据从存储介质(其中数据被长期存储)拷贝到其中数据被运行的软件应用所利用的存储器的情况下完成。通过消除此拷贝,其在标准实现中否则将涉及到至少CPU中断和直接存储器存取(DMA)转移,从当软件应用请求数据时的点开始直至软件应用可以访问其地址空间中的数据的时候为止节省显著的时间并消耗较少的功率。通过对可以包括硬件、软件或固件逻辑或者可以是多个类型的逻辑的组合的处理逻辑来执行该过程。另外,在下文和在图9中描述的过程仅仅是使用存储器的3页分配的说明性示例。在其它实施例中,可以存在要分配的较少或较多页面,并且涉及到的步骤可以以一个或多个不同方式变化以完成该过程。
该过程通过用户过程(例如,在OS上运行的软件应用)中的处理逻辑从OS分配3页缓冲器以用于从非易失性存储装置(例如PCMS)3块读取而开始(处理框900)。在其它实施例中,这可以是页面缓冲器中较小或较大数目的页面以及用于读取的较小或较大数目的块。接下来,OS中的处理逻辑释放物理DRAM中的3页,并将指针从OS中的用户空间映射到物理存储器页面A、B和C(处理框902)。页面A、B和C是实际DRAM设备物理地址页面。虽然框902处的处理逻辑被描述为在OS中,但在其它实施例中,可以用硬件来实现此处理逻辑以用于更快的分配。另外,虽然用户缓冲器被描述为在DRAM中,但在其它实施例中,用户缓冲器可以存在于专门化的SRAM中或存在于处理器缓存的专用部分中,与仅仅存在于DRAM中相对。
然后,用户过程中的处理逻辑请求OS将数据从非易失性存储装置地址X、Y和Z(表示非易失性存储装置中的3块)移动到用户缓冲器。另外,这时,用户过程被OS设置成空闲状态(处理框904)。接下来,OS中的处理逻辑穿行过所有存储器转化而到达物理存储器页面地址,并请求在OS上运行的存储装置驱动器将数据从存储装置地址X、Y和Z移动至物理存储器页面A、B和C。(处理框906)。再次,在其它实施例中,框904和906中的处理逻辑可以在硬件中而不是在OS中。此外,在其它实施例中,可以使用硬件逻辑代替存储装置驱动器以将数据从存储装置地址移动至物理存储器页面。
然后,存储装置驱动器中的处理逻辑请求用于LBA存储装置地址X、Y和Z的存储装置/设备映射,并将去往存储器页面A、B和C的指针改变成用于X、Y和Z的那些(处理框908)。存储装置驱动器然后告知OS转移已经完成(处理框910),OS将用户过程再次标记为活动(处理框912),并且用户过程然后接收数据(处理框914)。在未示出的其它实施例中,存在将存储器和存储装置映射到物理NVRAM页面的单个表,其中,对于该单个表中的每个页面的条目具有指示页面是在被用于存储装置还是存储器的比特字段。在该实施例中,从存储装置重映射到存储器或者反之亦然简单地涉及到翻转该比特以用另一格式来指定页面。
对存储装置空间的访问以下列方式被直接映射到存储器空间中:
• 通过存储器重映射表来处理所有访问(图8中的700)。例如,应用产生对地址1MB的读访问的任何时间,重映射机制将访问其表中的第256个条目(假设4KB页面)并根据保持在表的第256个条目中的地址而将该读取重定向至PCMS空间中的存储器所拥有的页面。
• 当操作系统请SATA或其它设备驱动器将页面从例如“盘”上的100GB区域拷贝到幻像存储器中的1MB区域中时,设备驱动器将向硬件接口机制发送该信息以重映射指针。
• 在该特定情况下,硬件机制将接收消息以将存储装置中100GB处的页面拷贝到1GB处的幻像DRAM页面中。替代于物理地移动数据,幻像重映射表中的第256个指针将由100GB/4KB覆写,因而使得从先前被映射为存储装置的100GB位置来服务对幻像1MB的所有未来读访问。
基本上,可以将先前是物理NVRAM空间(图8中的800)中的指定存储装置位置的那些改变成存储器位置,或者反之亦然。并且用于完成这一点的过程简单地涉及到转换在存储器和存储装置重映射表(在图8中,分别地700和702)内的指针。
虽然可以将许多形式的NVRAM用于这些实现,但PCMS由于低的读等待时间而是良好的候选。但是PCMS在其读和写等待时间之间具有相当的不对称。因而,当处理PCMS时,存在可以用来使PCMS写的缺点最小化的某些过程。作为慢得多的写时间的结果,当进行中的写正在占用PCMS存储器系统时,可能存在被添加到读等待时间的相当大延迟。
根据某些实施例,仅对已被预先清除(实际上预置)的页面执行写,因为向预先清除的页面写数据相当大地快于向未经准备的页面写。不幸地,具有仅向预先清除的页面写的策略并不是能量高效的,因为这约略地使用来写每个比特的能量加倍。
在许多实施例中,利用一种机制在PCMS存储器系统相对繁忙时向预先清除的页面进行写,并在PCMS存储器系统相对静寂时向未经清除的页面进行写。净效应是在系统被轻加载时提供最小功率消耗,并在系统变得繁忙时用较高的功率来交换改善的性能。
图10图示出使用页面空写策略的PCMS页面清除过程的实施例。如所述,由于PCMS存储装置的性质,与从PCMS读取数据相比,可能要花费长若干倍的时间向PCMS写数据。该不对称使设计存储器和/或存储装置控制器的过程复杂化,因为写操作可以阻止对PCMS的区域的访问达相当长度的时间,并防止性能敏感的读取被服务。
在将PCMS存储元素(比特)设置成“1”(其花费相对长时间)与将相同元素设置成“0”(其花费与读取元素所花费的约略相同的时间量)之间也存在显著的写时间偏差。因而,将PCMS存储器的自由页面预置为全部1是高度有益的,并且然后在用信息向页面执行写时,只有需要被设置成0的比特将需要被改变。
因此,在许多实施例中,预置页面的池(其中每个比特被设置成1的页面)用于写操作。PCMS存储装置/存储器控制器负责在被用来在运转中(in motion)向和从PCMS设备存储数据的任何控制器缓存或写缓冲器之间调度读和写数据的转移。可选地,暂时将不被访问的所有数据将会被移动至PCMS中,以便在控制器缓存和写缓冲器中为其它数据让出空间。另外,将不久将被使用的数据移动到控制器缓存中将增加系统性能。
根据许多实施例,图10中所示的过程可以帮助PCMS存储装置/存储器控制器减少控制器的缓存和写缓冲器因为其正在等待数据退出(retired)(即,写入)PCMS设备而不可用于有用功的时间。转到图10,在许多实施例中,写缓冲器/缓存管理逻辑1000驻留于控制器(未示出)内。此控制器可以是存储器控制器、存储装置控制器、组合的存储器/存储装置控制器或者在不同实施例中完全另一控制器。写缓冲器/缓存管理逻辑1000基本上是管理作为用于PCMS操作的控制器的资源的一个或多个写缓冲器和/或一个或多个缓存的管理逻辑。例如,在此意义上的写缓冲器可以是其中到一个或多个PCMS设备的待决写在其等待退出(即,完成)时被排队的存储装置位置。写缓冲器中的待决写等待PCMS存储器的自由页面变得可用,并且然后管理逻辑协调从缓冲器到自由页面的写。
更具体地,自由PCMS存储器页面的自由页面池1002对写缓冲器/缓存管理逻辑1000是可访问的。当管理逻辑决定前进并退出写请求时,来自自由页面池1002的页面被映射到幻像地址空间1004中(步骤1—在图10中由圆圈中的1表示)。然后,写缓冲器/缓存管理逻辑1000通过在所映射页面处向幻像地址空间1004写数据而执行来自写缓冲器1006的写请求(步骤2)。写缓冲器条目然后被标记为可用,并且不再需要的页面被发送到脏页面池1008(步骤3)。脏页面池可以简单地是具有不再需要的数据的PCMS页面的脏列表。在许多实施例中,脏页面池1008是由脏页面池指针所指向的页面的列表。对于取自列表的每个页面,指针然后指向列表上的下一页面。可以将每个新的脏页面(诸如从步骤3被发送到脏页面池1008的脏页面)附加于列表的结尾。
页面清除逻辑1010然后从脏池拉取页面并清除它(步骤4)。在许多实施例中,清除过程将页面中的所有比特设置成“1”以预置页面用于快写。页面流(步骤5)然后被页面清除逻辑1010发送到自由页面池1002。类似于脏页面池1008,可以由自由页面池指针指向自由页面池1002。自由页面池指针指向PCMS存储器的自由页面的列表前面的页面。当从列表取得页面并映射到幻像地址空间以用于写时,指针然后指向列表中的下一页面。当干净页面从干净页面流到达时,该页面被附加到列表的结尾。
页面清除逻辑1010一般地独立于写缓冲器/缓存管理逻辑1000进行操作。以考虑到过载(overriding)系统考虑事项(诸如功率和性能操作点)的速率来管控每页面的页面清除过程。在许多实施例中,通过针对到达脏页面池1008的每个页面使计数器递增并针对从脏页面池1008拉出以便清除的每个页面使相同计数器递减,页面清除逻辑1010保持需要清除的页面的计数。这是除对去往包括脏页面池1008的页面列表前面的指针保持跟踪之外的。在其它实施例中,可以将脏页面池1008和干净页面池1002保持在表中而不是列表中。
根据某些实施例,写缓冲器/缓存管理逻辑1000可以包括为部分缓存的页面填充间隙的逻辑。例如,如果写缓冲器具有来自页面的部分数据要写至被映射到幻像地址空间中的干净页面,则该逻辑能够从PCMS设备执行读取以获得针对页面的剩余信息以填充在写数据的间隙中。
另外,写缓冲器/缓存管理逻辑1000包括能够物理地将数据从写缓冲器1006写至存储器的物理PCMS页面的机制。在页面清除逻辑1010处于操作中的情况下,可以始终存在可用于写的某数目的预置页面。图11图示出用于向幻像地址空间中可用的PCMS页面写数据的写机制的过程流的实施例。该过程由处理逻辑执行,该处理逻辑可以包括硬件、软件、固件或这些所列形式的处理逻辑中的两个或更多的组合。
该过程以需要被刷新的写缓冲器中的数据页面而开始(处理框1100)。该页面正在等待被写出到PCMS存储器设备,并且刷新缓冲器的过程实现写。该过程利用处理逻辑确定整个数据页面是否有效而继续(处理框1102)。如果整个4K的数据页面不是有效的,则处理逻辑从具有进入写缓冲器中的数据的旧PCMS页面取出针对无效的页面部分的数据(处理框1104)。然后,无论是否执行了处理框1104,用于任一逻辑流路径的下一步骤是用于处理逻辑找到自由页面池中的下一自由PCMS页面(处理框1106)。
一旦自由页面被定位,在某些实施例中,处理逻辑就将来自写缓冲器的一个或多个条目写至自由池中所找到的自由页面(处理框1108)。在某些实施例中,处理逻辑然后将幻像地址表中的指针(其也可以称为来自图7的存储器重映射表700)修改成指向刚刚被写至的页面(处理框1110)。然后处理逻辑标记可用的写缓冲器条目(处理框1112)以允许另一写请求进入写缓冲器。
图12图示出从功率/性能角度来看允许PCMS页面被高效地写入的机制的实施例。根据许多实施例,PCMS页面状态表1200被存储在计算机系统中。PCMS页面状态表1200的位置在不同的实施例中不同。在许多实施例中,PCMS页面状态表1200被存储在PCMS本身中,因为该表可以是相当大的(例如,4KB页面粒度的1TB的PCMS是1TB/4KB=25600万条目)。在其它实施例中,可以将该表存储在DRAM的预留区段中,如果存在足够的可用预留空间的话。
PCMS页面状态表1200包括被如下编码的每页面条目两比特:
·00-页面是不在使用中且干净的
·00-页面是不在使用中但要求清除的
·10-页面是作为远存储器在使用中的
·11-页面要么被分配给存储装置要么是坏的。
在用于PCMS的TB的25600万条目的情况下以每条目2比特,该表将需要64MB的存储。该页面状态表允许已被预先清除的页面(例如,使所有比特都具有“1”的页面)与未被清除的页面(例如,在其中具有旧数据且也称为“脏”页面的页面)之间的区别。
为了访问自由页面,提供了两个指针。第一指针1202指向经清除的自由页面1204的列表(即,池)。第二指针1206指向脏自由页面1208的列表/池。在许多实施例中,这些池包括到PCMS物理地址空间中的位置的地址的列表。在某些实施例中,可以将这两个池维护在对PCMS页面状态表1200的邻近位置中。在其它实施例中,可以将这两个池维护在系统中的别处,诸如在DRAM中。
页面清除逻辑1010(其潜在地位于图7和图8中的存储器/存储装置控制内,但是可以位于别处)清除PCMS存储器的页面,并且找到或者被提供脏的自由页面的列表(旧数据位于这些页面上,这意味着这些页面上的比特并非全部被设置成“1”)。PCMS页面状态表1200维持每个页面的状态,并且页面清除逻辑1010能够维持每个页面的状态。例如,当脏自由页面从脏自由页面池1208被拉出并清除时,页面清除逻辑1010可以将对于该特定页面的PCMS页面状态表1200条目从01“自由/非干净”更新成00“自由/干净”。
在其它实施例中,页面清除逻辑1010可以另外针对要清除的自由/非干净页面(01)而搜索PCMS页面状态表1200。针对找到的非干净的页面,页面清除逻辑1010可以将该页面添加到脏自由页面池1208。
在很少或没有PCMS业务的时间期间,页面清除逻辑1010可以决定清除位于脏自由页面池1208中的一个或多个页面。当这发生于页面时,页面清除逻辑于是将PCMS页面状态表1200中的对于该页面的状态比特调整为00,其表示页面是自由且干净的。然后,页面清除逻辑1010可以将该页面从脏自由页面池1208移动至经清除的自由页面池1204。当存在显著的PCMS业务时,页面清除逻辑可以不尝试清除任何页面以不会不利地影响PCMS存储器性能。
为了确定何时存在PCMS业务,利用存储器业务监视器1212来跟踪最近消耗的PCMS带宽。在操作期间,存储器业务监视器逻辑在诸如1微秒(μs)之类的给定时间段内不断地对存储器事务的数目进行计数。如果该给定时段期间的PCMS事务的数目大于可编程值(可以通过BIOS或在别处对可编程值进行编程),则在位于存储器业务监视器1212内的移位寄存器中设置比特。存储器业务监视器1212中的分离逻辑片(piece of logic)监视移位寄存器,以便理解该系统在过去的“n”个时间段期间已有多少“繁忙”时间段。如果繁忙时段的数目大于可编程数目,则该逻辑将使得下一自由指针1214源自于经清除的自由页面池1204。如果繁忙时段的数目小于或等于该值,则下一自由指针1214将源自于未经清除的自由页面池1208。
如以上提到的,该相同存储器业务监视逻辑可以用来帮助页面清除逻辑1210确定何时清除页面,因而,在许多实施例中,存储器业务监视器1212另外被通信耦合到页面清除逻辑1210。
在另一实施例中,系统在其中设备被连接到交流(AC)功率的所有情况下可以选择预先清除页面,因为功率消耗可能只有当设备正在靠电池运行时才是问题。
返回到图7,一般而言情况是“存储器”在标准操作期间比“存储装置”更加通常地从其读取和向其写。因而,如果被指定为存储器空间的该部分NVRAM(例如,PCMS)保持该方式且其余部分的NVRAM被指定为存储装置空间,则由于许多类型的非易失性存储器的一般耗损特性,存储器空间和存储装置空间区段将随时间而不均匀地耗损。
因而,为了纠正该问题,图13图示出用以允许NVRAM页面在存储器和存储装置指定之间的一致移动的机制的实施例。
在图13中,存在NVRAM存储器/存储装置交换硬件逻辑1300,其在存储器使用与存储装置使用之间迁移NVRAM页面。存储器/存储装置交换硬件逻辑1300利用:
• 反映NVRAM的每个页面的状态(即,页面是否被指派给存储装置或者其是否可用于存储器)的比特映射的非易失性表。该表一般地将被存储在NVRAM本身内。例如,对于基于PCMS的系统而言,该表可以包括NVRAM页面状态表1302(与图12中的PCMS页面状态表1200类似或相同)。
• 将存储装置空间LBA地址映射到NVRAM设备地址的存储装置重映射表702。
• 用以使得NVRAM存储装置页面移动至可用存储器空间页面并允许将先前包含数据的存储装置空间页面重新目的化以供存储器使用的硬件机制。
在许多实施例中,当图13中所图示的逻辑进行操作时,将以下属性考虑在内:
存储器池写机制将始终向空存储器分配的页面写数据。
由被映射到存储装置重映射表702中的NVRAM地址所表示的存储装置池与存储器写机制相交互以向存储装置分配的页面进行写,当写完成时将所写页面迁移至存储装置池。
存储装置池当其注意到页面不再被需要时将不再必需的页面推入写池中。在某些实施例中,将其推入自由页面池1304中,其可以或可以不是“干净”池(即,已被预置为用于写的自由页面池,诸如上文关于图12所讨论的那个)。
当页面被写至存储装置时,用于该过程的这些属性将使得所写页面从存储器池迁移至存储装置池,并使得先前被分配给存储装置位置的页面从存储装置池迁移至存储器池。
图13描述了在所图示实施例中被示为存储器/存储装置交换硬件逻辑1300的硬件机制。该逻辑可以位于存储器/存储装置控制逻辑内或系统中的别处。为了提供说明性示例,存储器存储装置交换硬件逻辑1300掌管存储器/存储装置子系统1306中的影响范围。影响范围1306简单地示出存储器/存储装置交换硬件逻辑1300能够控制以执行这些交换中之一的至少最小量的硬件和软件逻辑。
该过程通过可以存在于存储器/存储装置交换硬件逻辑1300内的周期性定时器或写计数器(定时器/计数器:T/C 1308)而起动。在某点处,T/C 1308引发(fire)(其指的是对于计数器经过指定量的时间或发生指定数目的写),并使得被分配给存储装置的PCMS设备页面(被映射到存储装置重映射表702中的当前存储装置页面)中的数据被拷贝到写缓冲器1006中(步骤1)。一旦写缓冲器1006具有要写至NVRAM存储器空间中的空页面(分配给存储器重映射表700的页面)的数据,然后来自自由页面池1304的自由页面被分配并映射到存储器重映射表700中(步骤2A)。
一旦页面被分配在表中,然后刷新写缓冲器,并且起初从当前存储装置页面接收到的数据被写到存储器重映射表700中新映射的自由页面中(步骤2B)。在该点处,被存储在存储装置空间中的当前存储装置页面中的数据现在位于存储器空间中新映射的自由页面中。在这发生之后或者潜在地与步骤2A和2B相结合,到当前存储装置页面(其现在在其中具有旧数据)的NVRAM地址被重分配到存储器空间中作为新迁移的存储器页面(步骤3)。因而,该地址指向的物理NVRAM页面从被分配为存储装置重映射表702中的存储装置空间变成被分配为存储器重映射表700中的存储器空间。在该重分配的同时或在稍后时间,现在具有在步骤2B中从写缓冲器1006到达的被写至其的存储装置数据的新映射的自由页面被重分配为新迁移的存储装置页面(步骤4)。因此,该地址的物理NVRAM页面从被分配为存储器重映射表700中的存储器空间变成被分配为存储装置重映射表702中的存储装置空间。
在该点处,迁移已完成。该迁移能够有条理地针对物理NVRAM存储器的一页又一页而发生。每当T/C 1308引发时,另一存储器分配的页面被迁移到存储装置,并且对应的存储装置分配的页面被迁移到存储器。当随时间而遍及所有NVRAM物理页面重复该过程时,结果是从设备的物理存储器地址的底部到顶部的均匀耗损的NVRAM设备。
取决于NVRAM物理设备的“平面”配置,出于效能目的可能需要附加功率和性能考虑事项。例如,其中PCMS在许多情况下存在多个“平面”,其指的是当以给定平面中的接连访问而工作时为高效的存储器区域,但是设备在接连访问跨平面的不同物理存储器位置时损失事务效能(从功率和性能二者的角度来看)。
PCMS一般地对于大多数访问而言具有相当短的等待时间,对于电流发生设备而言约50纳秒(ns),但是当相继的访问是对存储器设备中的两个不同平面时需要较长等待时间,约100ns,其中,平面可以表示设备中整个存储器空间的约四分之一。另外,对于访问之间的跨平面可能存在相当大的功率/能量负担。
因而,建议一种机制以通过消除尽可能多的不必要平面过渡来尽可能多地减轻这些负担。图14图示出对消除不必要PCMS平面过渡的过程进行支持的此类过程和伴随机制(即硬件逻辑)的实施例。
在许多实施例中,存在着在视图1400中的实际平面上按顺序示出的一组PCMS设备访问(A1直至A5)。访问1是对平面1中的物理位置,访问2是在平面2中的物理位置中,访问3是在平面3中的物理位置中,访问4是在平面4中的物理位置中,并且访问5是在平面1中的物理位置中。在视图1402中,当按顺序退出访问时,示出了平面之间的过渡(T1直至T4)。具体地,平面过渡1在访问1和2之间发生,平面过渡2在访问2和3之间发生,平面过渡3在访问3和4之间发生,并且平面过渡4在访问4和5之间发生。因此在用按照接收到的顺序的访问的标准访问顺序视图1404的情况下,存在4个平面过渡。
用具有被排队的事务缓冲器的存储器控制逻辑(传入的读和写请求在执行之前被排队,可能且实际上合期望的是在该逻辑了解访问的物理位置时对事务顺序进行重新排序。因而,可以包括PCMS事务重新排序逻辑单元的存储器控制逻辑具有通过使用存储器/存储装置重映射逻辑(上文所讨论的)来获得对于每个事务的物理PCMS地址而从被排队的PCMS事务执行查找的能力。基于了解事务队列中的每个PCMS事务的物理位置,PCMS事务重新排序逻辑单元可以执行事务的重新排序以增大一组事务的平面过渡效能。
对于图14而言,合理的一组无序平面访问1406(修改自视图1400中所示的按顺序平面访问)将使第五访问(A5)从事务队列中的第五位置移动至第二位置。因而,新重新排序的该组访问将是平面1中的A1、然后平面1中的A5、然后平面2中的A2、然后平面3中的A3且最后平面4中的A4。该顺序将把平面过渡的数目从四个变成三个,如视图1408中所示,其示出了在访问5和2之间发生的平面过渡1、在访问2和3之间发生的平面过渡2以及在访问3和4之间发生的平面过渡3。结果是具有少一个平面过渡的优化访问顺序1410。该重新排序将由于不太等待时间密集(latency-intense)的平面过渡而减少总功率消耗以及增加存储器吞吐量。
4. 基于SoC的计算设备概述
图15图示出结合了基于MLMD存储器子系统作为芯片上系统(SoC)封装1500设计的计算设备的实施例,其将处理器、图形、存储器以及I/O控制逻辑组合成一个SoC封装。因而,在图15中,CPU(多个)核1502、GPU(多个)核1504、其各自缓存(1506和1508)全部存在于封装中,连同存储器子系统1512和I/O子系统1530。
虽然未示出,但每个CPU核可以在内部包括一个或多个指令/数据缓存、执行单元、预取缓冲器、指令队列、分支地址计算单元、指令解码器、浮点单元、退出(retirement)单元等。存在的每个核位于CPU半导体管芯上。对于除SoC封装1500中的(多个)核1502之外所示的每个逻辑单元,该逻辑单元在某些实施例中可以在CPU(多个)核1502半导体管芯上或者在其它实施例中在另一管芯上。如果给定逻辑单元不在与CPU(多个)核1502相同的管芯上,则该逻辑单元将在不同的半导体管芯上,尽管在相同SoC封装1500中,其可以包括在封装中与彼此通信耦合的若干管芯。
SoC 1500还包括至少一个较低级CPU缓存,诸如CPU缓存1506。这可以是能够存储从易失性存储器1518和/或NVRAM 1520中的存储器位置所检索的显著量数据的通用缓存。在不同实施例中,可以在所有核之中共享CPU缓存1506,或者每个核可以具有其自己的较低级缓存。
在SoC封装1500中还包括一个或多个GPU(多个)核1504以及可以存储用于GPU(多个)核1504在其上工作的图形相关数据的较低级GPU缓存1508。GPU(多个)核1504可以在内部包括一个或多个执行单元和一个或多个指令以及用来为执行单元馈送要处理的信息的数据缓存。另外,GPU(多个)核1504可以包含在图15中未示出的其它图形逻辑单元,除其它外尤其诸如一个或多个顶点处理单元、光栅化单元、媒体处理单元以及编解码器。为了简单起见,未示出GPU(多个)核1504内的特定逻辑。
SoC封装1500还可以包括归属代理150,其结合了协调和操作(多个)核1502以及SoC封装1500的其它元件的组件。归属代理单元1510可以包括例如功率控制单元(PCU)。PCU可以包括除其它任务之外尤其还调节(多个)核的功率状态所需的逻辑和组件。
在图15中,SoC封装1500还包括存储器子系统1512,其具有可以用来提供对易失性存储器1518的访问的集成易失性存储器控制器1514。易失性存储器控制1514可以从CPU核接收存储器访问请求并将该请求路由到易失性存储器1518。同样地,NVRAM控制1516可以从CPU核接收存储器访问请求并将该请求路由到NVRAM 1520。
“易失性存储器”1518是结合NVRAM 1520而被配置的中级的存储器,其相对于NVRAM 1520具有较低读/写访问等待时间和/或更对称的读/写访问等待时间(即,具有约略等效于写时间的读时间)。如上文所讨论的,在某些实施例中,易失性存储器1518具有显著低于NVRAM 1520的写等待时间,但是类似的(例如,稍低或相等)读等待时间;例如,易失性存储器1518可以是诸如易失性随机存取存储器(VRAM)之类的易失性存储器,并且可以包括DRAM或其它基于电容器的高速存储器。然而,注意到,本发明的底层原理不限于这些特定存储器类型。另外,易失性存储器1518与NVRAM 1520相比可以具有相对较低密度和/或可能制造起来更加昂贵。
在某些实施例中,在NVRAM 1518与CPU缓存1506之间配置易失性存储器1518。在下面所述的某些实施例中,利用易失性存储器1518来掩蔽NVRAM 1520的性能和/或使用限制,包括例如读/写等待时间限制和存储器降级限制。在这些实现中,易失性存储器1518和NVRAM 1520的组合以近似于、等效于或超过仅使用DRAM作为系统存储器的系统的性能水平来操作。
虽然在图15中以特定配置示出,但在不同实施例中,易失性存储器1518可以位于处理器管芯上,位于已位于SoC封装1500上的分离管芯上的处理器管芯外部、位于具有到SoC封装1500的高带宽链路的CPU封装外面,例如在存储器双列直插式存储器模块(DIMM)、扩展板(riser)/夹层(mezzanine)或计算机母板)上。在图15中,易失性存储器1518被示出为位于SoC封装1500外部。可以使用单个或多个高带宽链路、诸如DDR或其它事务高带宽链路将易失性存储器1518与SoC封装1500通信耦合。设备的通信耦合指的是通过电学、光学、无线或其它形式的链路或链路组合而被耦合以允许在被彼此耦合的设备之间来回传递信息。在某些实施例中,耦合是直接的,并允许直接从第一设备向第二设备传递信息,并且潜在地反之亦然。在其它实施例中,耦合是间接的,并且需要信息在所讨论的两个通信耦合的设备之间传输时通过沿着信息所采取的路径而驻留的一个或多个附加设备来传递。
在许多实施例中,输入/输出(I/O)子系统1530存在于图15中的系统中以与I/O设备、诸如(多个)I/O设备1534通信。图15中的I/O子系统1530被集成到SoC封装1500中。在I/O子系统1530内,存在一个或多个(多个)I/O适配器1532以将在CPU(多个)核1502内利用的主机通信协议转化成与特定I/O设备兼容的协议。适配器可以用来进行转化的协议中的一些除其它外尤其包括外围组件互连(PCI)-高速(PCI-E)、3.0;通用串行总线(USB)、3.0;串行先进技术附连(SATA)、3.0;小型计算机系统接口(SCSI)、超-640;以及电气和电子工程师协会(IEEE)1594“火线”。
另外,可以存在一个或多个无线协议I/O适配器。无线协议的示例除其它外尤其使用在诸如IEEE 802.15和蓝牙4.0之类的个域网;诸如基于IEEE 802.11的无线协议之类的无线局域网;以及蜂窝式协议中。
基本输入/输出系统(BIOS)闪速1536设备可以另外存在于系统中以在系统通电或重新引导时提供一组引导指令。对于BIOS闪速1536设备,I/O适配器1534可以转化的协议中的一些除其它外尤其包括串行外围接口(SPI)、微丝。
在以下描述中,阐述了诸如逻辑实现、指定操作数的手段、资源分区/共享/复制实现、系统组件的类型和相互关系以及逻辑分区/集成选择之类的许多特定细节以便提供对本发明的更透彻理解。然而,本领域技术人员将认识到可以在没有此类特定细节的情况下实施本发明。在其它情况下,未详细地示出控制结构、门级电路和全软件指令序列以便不使本发明含糊难懂。用所包括的描述,本领域普通技术人员将能够在没有过多实验的情况下实现适当功能性。
在本说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指的是所述实施例可以包括特定特征、结构或特性,但是每个实施例可以不一定包括该特定特征、结构或特性。此外,此类短语不一定指代相同实施例。此外,当结合实施例来描述特定特征、结构或特性时,据认为结合其它实施例(无论是否明确地描述)来实现此类特征、结构或特性在本领域技术人员的知识范围内。
在以下描述和权利要求中,可以使用术语“耦合”和“连接”连同其派生词。应当理解的是,这些术语并不意图作为彼此的同义词。“耦合”用来指示可以或可以不是处于与彼此直接物理或电连接的两个或更多元件协作或彼此交互。“连接”用来指示在彼此耦合的两个或更多元件之间建立通信。
还可以将本发明的实施例提供为计算机程序产品,其可以包括非暂时性机器可读介质,该非暂时性机器可读介质在其上存储了可以用来对计算机(或其它电子设备)进行编程以执行过程的指令。该非暂时性机器可读介质可以包括但不限于软盘、光盘、CD-ROM以及磁光盘、ROM、RAM、EPROM、EEPROM、磁体或光卡、传播介质或适合于存储电子指令的其它类型的介质/机器可读介质。还可以将本发明的实施例作为计算机程序产品下载,其中,可以经由通信链路(例如,调制解调器或网络连接)通过在载波或其它传播介质中具体化的数据信号将程序从远程计算机(例如,服务器)传输到请求计算机(例如,客户端)。
虽然已按照若干实施例描述了本发明,但本领域技术人员将认识到本发明不限于所述实施例,在所附权利要求的精神和范围内能够用修改和变更来实施。因而本描述要被认为是说明性而非限制性的。
Claims (26)
1.一种方法,包括:
将第一量的非易失性随机存取存储器(NVRAM)指定为用作用于计算系统的存储器;
将第二量的NVRAM指定为用作用于计算系统的存储装置;
基于被指定用作存储器的所述第一量的NVRAM来生成存储器重映射表;
基于被指定用作存储装置的所述第二量的NVRAM来生成存储装置重映射表;以及
响应于所述第一量的NVRAM的一部分用作存储装置的第一重新指定或所述第二量的NVRAM的一部分用作存储器的第二重新指定来更新所述存储器和存储装置重映射表。
2.根据权利要求1所述的方法,包括:
在第一时间量内通过整个的第一量NVRAM进行循环以从用作存储器重新指定为用作存储装置,该循环包括在多个时间段中的分离时间段处重新指定构成整个第一量NVRAM的多个部分中的每一个,所述多个段的和包括所述第一时间量。
3.根据权利要求1所述的方法,包括:
通过存储器重映射表来为运行在计算机系统上的软件应用提供对NVRAM中至少一个物理位置的访问,所述存储器重映射表被布置成至少将平台物理地址转化成物理NVRAM地址。
4.根据权利要求1所述的方法,包括所述存储装置重映射表被布置成至少将逻辑块地址转化成物理NVRAM地址。
5.根据权利要求1所述的方法,包括:
生成页面状态表,其在分离的页面状态表条目中至少具有与NRAM的分离的NVRAM物理页面相关联的比特,所述分离的页面状态表条目指示对应于给定页面状态表条目的给定NVRAM物理页面被指定用作存储器还是存储装置。
6.根据权利要求1所述的方法,包括:
针对多个NVRAM物理页面中的分离的NVRAM物理页面确定单独的NVRAM物理页面是否是自由的以被写入,当单独的NVRAM物理页面未持有有效数据时,该单独NVRAM物理页面是自由的以被写入;以及
针对分别标识的自由NVRAM物理页面,确定所述分别标识的自由NVRAM物理页面是否是干净的,其中,当给定的自由NVRAM物理页面中所有存储的比特被设置成一时,该给定的自由NVRAM物理页面是干净的。
7.根据权利要求6所述的方法,包括:
清除至少一个分别标识的自由NVRAM物理页面,其中,要清除的所述至少一个分别标识的自由NVRAM物理页面包括被设置成零的至少一个所存储比特。
8.根据权利要求7所述的方法,包括:
监视访问NVRAM的接口以确定所述接口在任何给定时间是否是基本上空闲的;
从请求器接收写入请求;
当所述访问NVRAM的接口是基本上空闲的时提供尚未被清除的至少一个分别标识的自由NVRAM物理页面;以及
当所述访问NVRAM的接口不是基本上空闲的时提供已被清除的至少一个分别标识的自由NVRAM物理页面。
9.根据权利要求1所述的方法,其中所述NVRAM包括以下中的至少一个:相变存储器、相变存储器和开关(PCMS)、电阻式存储器(RRAM)、铁电存储器、自旋转移矩随机存取存储器(STRAM)、自旋隧穿随机存取存储器(SPRAM)、磁阻存储器、磁存储器、磁随机存取存储器(MRAM)或半导体-氧化物-氮化物-氧化物-半导体(SONOS)存储器。
10.根据权利要求1所述的方法,包括:
指定所述第一量的NVRAM用作存储器包括布置所述第一量的NVRAM以起到用于计算系统的系统存储器的至少一部分的作用;以及
指定所述第二量的NVRAM用作存储装置包括布置所述第一量的NVRAM以起到用于计算系统的大容量存储装置的作用。
11.一种设备,包括:
硬件控制逻辑,其用以:
将第一量的非易失性随机存取存储器(NVRAM)指定为用作用于计算系统的存储器;
将第二量的NVRAM指定为用作用于计算系统的存储装置;
基于被指定用作存储器的所述第一量的NVRAM来生成存储器重映射表;
基于被指定用作存储装置的所述第二量的NVRAM来生成存储装置重映射表;以及
响应于所述第一量的NVRAM的一部分用作存储装置的第一重新指定或所述第二量的NVRAM的一部分用作存储器的第二重新指定来更新所述存储器和存储装置重映射表。
12.根据权利要求11所述的设备,包括所述硬件控制逻辑用以:
通过存储器重映射表来为运行在计算机系统上的软件应用提供对NVRAM中至少一个物理位置的访问,所述存储器重映射表被布置成至少将平台物理地址转化成物理NVRAM地址。
13.根据权利要求11所述的设备,包括所述存储装置重映射表被布置成至少将逻辑块地址转化成物理NVRAM地址。
14.根据权利要求11所述的设备,包括所述硬件控制逻辑用以:
生成页面状态表,其在分离的页面状态表条目中至少具有与NRAM的分离的NVRAM物理页面相关联的比特,所述分离的页面状态表条目指示对应于给定页面状态表条目的给定NVRAM物理页面被指定用作存储器还是存储装置。
15.根据权利要求11所述的设备,包括:
写缓冲器逻辑,其用以:
针对多个NVRAM物理页面中的分离的NVRAM物理页面确定单独的NVRAM物理页面是否是自由的以被写入,当单独的NVRAM物理页面未持有有效数据时,该单独NVRAM物理页面是自由的以被写入;
针对分别标识的自由NVRAM物理页面,确定所述分别标识的自由NVRAM物理页面是否是干净的,其中,当给定的自由NVRAM物理页面中所有存储的比特被设置成一时,该给定的自由NVRAM物理页面是干净的;以及
清除至少一个分别标识的自由NVRAM物理页面,其中,要清除的所述至少一个分别标识的自由NVRAM物理页面包括被设置成零的至少一个所存储比特。
16.根据权利要求11所述的设备,包括:
所述第一量的NVRAM用作存储器包括布置所述第一量的NVRAM以起到用于计算系统的系统存储器的至少一部分的作用;以及
所述第二量的NVRAM用作存储装置包括布置所述第一量的NVRAM以起到用于计算系统的大容量存储装置的作用。
17.根据权利要求11所述的设备,其中所述NVRAM包括以下中的至少一个:相变存储器、相变存储器和开关(PCMS)、电阻式存储器(RRAM)、铁电存储器、自旋转移矩随机存取存储器(STRAM)、自旋隧穿随机存取存储器(SPRAM)、磁阻存储器、磁存储器、磁随机存取存储器(MRAM)或半导体-氧化物-氮化物-氧化物-半导体(SONOS)存储器。
18.一种系统,包括:
非易失性随机存取存储器(NVRAM);
易失性随机存取存储器;以及
硬件控制逻辑,其用以:
将第一量的NVRAM指定为用作用于计算系统的存储器;
将第二量的NVRAM指定为用作用于计算系统的存储装置;
基于被指定用作存储器的所述第一量的NVRAM来生成存储器重映射表;
基于被指定用作存储装置的所述第二量的NVRAM来生成存储装置重映射表;以及
响应于所述第一量的NVRAM的一部分用作存储装置的第一重新指定或所述第二量的NVRAM的一部分用作存储器的第二重新指定来更新所述存储器和存储装置重映射表。
19.根据权利要求18所述的系统,包括所述硬件控制逻辑用以:
通过存储器重映射表来为运行在计算机系统上的软件应用提供对NVRAM中至少一个物理位置的访问,所述存储器重映射表被布置成至少将平台物理地址转化成物理NVRAM地址。
20.根据权利要求18所述的系统,包括所述硬件控制逻辑用以:
使得所述存储器和存储装置重映射表被存储到易失性随机存取存储器,所述易失性随机存取存储器包括动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。
21.根据权利要求18所述的系统,包括所述存储装置重映射表被布置成至少将逻辑块地址转化成物理NVRAM地址。
22.根据权利要求18所述的系统,包括所述硬件控制逻辑用以:
页面状态表,其在分离的页面状态表条目中至少具有与NRAM的分离的NVRAM物理页面相关联的比特,所述分离的页面状态表条目指示对应于给定页面状态表条目的给定NVRAM物理页面被指定用作存储器还是存储装置;以及
使得所述页面状态表被存储到NVRAM。
23.根据权利要求18所述的系统,包括:
写缓冲器逻辑,其用以:
针对多个NVRAM物理页面中的分离的NVRAM物理页面确定单独的NVRAM物理页面是否是自由的以被写入,当单独的NVRAM物理页面未持有有效数据时,该单独NVRAM物理页面是自由的以被写入;
针对分别标识的自由NVRAM物理页面,确定所述分别标识的自由NVRAM物理页面是否是干净的,其中,当给定的自由NVRAM物理页面中所有存储的比特被设置成一时,该给定的自由NVRAM物理页面是干净的;以及
清除至少一个分别标识的自由NVRAM物理页面,其中,要清除的所述至少一个分别标识的自由NVRAM物理页面包括被设置成零的至少一个所存储比特。
24.根据权利要求18所述的系统,包括所述易失性随机存取存储器被布置成起到用于多级存储器的近存储器的作用并且被指定用作存储器的所述第一量的NVRAM被布置为用于多级存储器的远存储器。
25.根据权利要求24所述的系统,包括:
所述多级存储器被布置成起到用于计算系统的系统存储器的作用;并且
被指定用作存储装置的所述第二量的NVRAM包括被布置成起到用于计算系统的大容量存储装置的作用的所述第二量的NVRAM。
26.根据权利要求18所述的系统,其中所述NVRAM包括以下中的至少一个:相变存储器、相变存储器和开关(PCMS)、电阻式存储器(RRAM)、铁电存储器、自旋转移矩随机存取存储器(STRAM)、自旋隧穿随机存取存储器(SPRAM)、磁阻存储器、磁存储器、磁随机存取存储器(MRAM)或半导体-氧化物-氮化物-氧化物-半导体(SONOS)存储器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610912901.7A CN107092561B (zh) | 2011-12-29 | 2011-12-29 | 具有直接存取的多级存储器 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610912901.7A CN107092561B (zh) | 2011-12-29 | 2011-12-29 | 具有直接存取的多级存储器 |
CN201180075995.2A CN104011690B (zh) | 2011-12-29 | 2011-12-29 | 具有直接存取的多级存储器 |
PCT/US2011/067824 WO2013101050A1 (en) | 2011-12-29 | 2011-12-29 | Multi-level memory with direct access |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180075995.2A Division CN104011690B (zh) | 2011-12-29 | 2011-12-29 | 具有直接存取的多级存储器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107092561A true CN107092561A (zh) | 2017-08-25 |
CN107092561B CN107092561B (zh) | 2021-03-12 |
Family
ID=48698287
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180075995.2A Active CN104011690B (zh) | 2011-12-29 | 2011-12-29 | 具有直接存取的多级存储器 |
CN201610912901.7A Active CN107092561B (zh) | 2011-12-29 | 2011-12-29 | 具有直接存取的多级存储器 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180075995.2A Active CN104011690B (zh) | 2011-12-29 | 2011-12-29 | 具有直接存取的多级存储器 |
Country Status (7)
Country | Link |
---|---|
US (5) | US9190124B2 (zh) |
KR (3) | KR101628929B1 (zh) |
CN (2) | CN104011690B (zh) |
DE (1) | DE112011106078B4 (zh) |
GB (1) | GB2510763B (zh) |
TW (1) | TWI585584B (zh) |
WO (1) | WO2013101050A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112380150A (zh) * | 2020-11-12 | 2021-02-19 | 上海壁仞智能科技有限公司 | 计算装置以及用于加载或更新数据的方法 |
Families Citing this family (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9703706B2 (en) | 2011-02-28 | 2017-07-11 | Oracle International Corporation | Universal cache management system |
CN104106057B (zh) * | 2011-12-13 | 2018-03-30 | 英特尔公司 | 用非易失性随机存取存储器提供对休眠状态转变的即时响应的方法和系统 |
DE112011106078B4 (de) | 2011-12-29 | 2021-01-28 | Intel Corp. | Verfahren, Vorrichtung und System zur Implementierung eines mehrstufigen Arbeitsspeichers mit Direktzugriff |
CN103514110B (zh) * | 2012-06-20 | 2016-08-24 | 华为技术有限公司 | 非易失性存储设备的缓存管理方法及装置 |
US10303618B2 (en) * | 2012-09-25 | 2019-05-28 | International Business Machines Corporation | Power savings via dynamic page type selection |
US10735500B2 (en) * | 2012-12-11 | 2020-08-04 | Hewlett Packard Enterprise Development Lp | Application server to NVRAM path |
CN104704569B (zh) * | 2012-12-19 | 2017-11-14 | 慧与发展有限责任合伙企业 | Nvram路径选择 |
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 |
KR20140123203A (ko) * | 2013-04-11 | 2014-10-22 | 삼성전자주식회사 | 메모리 시스템 |
US9678689B2 (en) * | 2013-05-29 | 2017-06-13 | Microsoft Technology Licensing, Llc | Storage systems and aliased memory |
US9552370B1 (en) * | 2013-06-27 | 2017-01-24 | EMC IP Holding Company LLC | Signaling impending out of storage condition from a virtual tape drive |
US9250999B1 (en) * | 2013-11-19 | 2016-02-02 | Google Inc. | Non-volatile random access memory in computer primary memory |
US9292380B2 (en) * | 2014-04-06 | 2016-03-22 | Freescale Semiconductor,Inc. | Memory access scheme for system on chip |
JP6265041B2 (ja) * | 2014-05-15 | 2018-01-24 | 富士通株式会社 | コンパイルプログラム、コンパイル方法およびコンパイル装置 |
WO2016013024A1 (en) * | 2014-07-25 | 2016-01-28 | StorNetware Systems Pvt. Ltd. | Unified converged network, storage and computer system |
US9892079B2 (en) * | 2014-07-25 | 2018-02-13 | Rajiv Ganth | Unified converged network, storage and compute system |
US20160224252A1 (en) * | 2015-01-30 | 2016-08-04 | Intel Corporation | Hybrid memory architecture |
US9652157B2 (en) | 2015-03-19 | 2017-05-16 | International Business Machines Corporation | Accelerated non-volatile memory recirculation processing |
US9582430B2 (en) * | 2015-03-27 | 2017-02-28 | Intel Corporation | Asymmetric set combined cache |
US10157008B2 (en) * | 2015-04-29 | 2018-12-18 | Qualcomm Incorporated | Systems and methods for optimizing memory power consumption in a heterogeneous system memory |
US10025747B2 (en) * | 2015-05-07 | 2018-07-17 | Samsung Electronics Co., Ltd. | I/O channel scrambling/ECC disassociated communication protocol |
US11829349B2 (en) | 2015-05-11 | 2023-11-28 | Oracle International Corporation | Direct-connect functionality in a distributed database grid |
US10459847B1 (en) | 2015-07-01 | 2019-10-29 | Google Llc | Non-volatile memory device application programming interface |
US9971550B2 (en) | 2015-11-12 | 2018-05-15 | International Business Machines Corporation | Zero copy support by the virtual memory manager |
US9928168B2 (en) * | 2016-01-11 | 2018-03-27 | Qualcomm Incorporated | Non-volatile random access system memory with DRAM program caching |
US10146704B2 (en) * | 2016-02-16 | 2018-12-04 | Dell Products L.P. | Volatile/non-volatile memory device access provisioning system |
US20170255565A1 (en) * | 2016-03-02 | 2017-09-07 | Intel Corporation | Method and apparatus for providing a contiguously addressable memory region by remapping an address space |
US10175903B2 (en) | 2016-03-31 | 2019-01-08 | Intel Corporation | N plane to 2N plane interface in a solid state drive (SSD) architecture |
US9965017B2 (en) | 2016-04-12 | 2018-05-08 | International Business Machines Corporation | System and method for conserving energy in non-volatile dual inline memory modules |
US20170371785A1 (en) * | 2016-06-28 | 2017-12-28 | Intel Corporation | Techniques for Write Commands to a Storage Device |
US10025714B2 (en) * | 2016-09-30 | 2018-07-17 | Super Micro Computer, Inc. | Memory type range register with write-back cache strategy for NVDIMM memory locations |
US10162522B1 (en) * | 2016-09-30 | 2018-12-25 | Cadence Design Systems, Inc. | Architecture of single channel memory controller to support high bandwidth memory of pseudo channel mode or legacy mode |
KR20180055297A (ko) | 2016-11-16 | 2018-05-25 | 삼성전자주식회사 | 언맵 리드를 수행하는 메모리 장치 및 메모리 시스템 |
TWI596541B (zh) * | 2016-11-30 | 2017-08-21 | 財團法人工業技術研究院 | 資料存取系統、資料存取裝置及資料存取方法 |
TWI643067B (zh) * | 2017-04-14 | 2018-12-01 | 國立臺灣科技大學 | 三維非及閘快閃記憶體及其記憶體管理方法 |
US10963780B2 (en) | 2017-08-24 | 2021-03-30 | Google Llc | Yield improvements for three-dimensionally stacked neural network accelerators |
US11029863B2 (en) * | 2017-08-31 | 2021-06-08 | Vmware, Inc. | Using non-volatile random access memory as volatile random access memory |
US10719446B2 (en) * | 2017-08-31 | 2020-07-21 | Oracle International Corporation | Directly mapped buffer cache on non-volatile memory |
US11327887B2 (en) | 2017-09-14 | 2022-05-10 | Oracle International Corporation | Server-side extension of client-side caches |
US10802766B2 (en) | 2017-09-29 | 2020-10-13 | Oracle International Corporation | Database with NVDIMM as persistent storage |
US10552077B2 (en) * | 2017-09-29 | 2020-02-04 | Apple Inc. | Techniques for managing partitions on a storage device |
KR102631380B1 (ko) | 2018-05-17 | 2024-02-01 | 에스케이하이닉스 주식회사 | 데이터 연산을 수행할 수 있는 다양한 메모리 장치를 포함하는 반도체 시스템 |
US10725690B2 (en) * | 2018-05-18 | 2020-07-28 | Intel Corporation | Non-volatile memory cloning with hardware copy-on-write support |
US10698637B2 (en) | 2018-07-03 | 2020-06-30 | Oracle International Corporation | Stale block resynchronization in NVM based systems |
US10831666B2 (en) | 2018-10-05 | 2020-11-10 | Oracle International Corporation | Secondary storage server caching |
US11334445B2 (en) | 2018-10-19 | 2022-05-17 | Oracle International Corporation | Using non-volatile memory to improve the availability of an in-memory database |
TWI705372B (zh) * | 2018-12-26 | 2020-09-21 | 旺宏電子股份有限公司 | 快閃記憶體裝置及其控制方法 |
CN111913647B (zh) * | 2019-05-08 | 2022-10-11 | 华为技术有限公司 | 一种存储设备的磨损均衡方法、装置及相关设备 |
US11281578B2 (en) | 2019-08-20 | 2022-03-22 | Micron Technology, Inc. | Garbage collection in a memory sub-system during a low battery state |
US11726869B2 (en) | 2019-08-20 | 2023-08-15 | Micron Technology, Inc. | Performing error control operation on memory component for garbage collection |
US11281392B2 (en) | 2019-08-28 | 2022-03-22 | Micron Technology, Inc. | Garbage collection in a memory component using an adjusted parameter |
US11036412B2 (en) | 2019-09-27 | 2021-06-15 | Intel Corporation | Dynamically changing between latency-focused read operation and bandwidth-focused read operation |
WO2021069943A1 (en) * | 2019-10-09 | 2021-04-15 | Micron Technology, Inc. | Self-adaptive wear leveling method and algorithm |
CN111104062B (zh) * | 2019-11-22 | 2023-05-02 | 中科寒武纪科技股份有限公司 | 存储管理方法、装置和存储介质 |
US11474941B2 (en) | 2020-03-09 | 2022-10-18 | International Business Machines Corporation | Using multi-tiered cache to satisfy input/output requests |
US11922055B2 (en) | 2021-04-28 | 2024-03-05 | Seagate Technology Llc | Stack register having different ferroelectric memory element constructions |
US11556259B1 (en) | 2021-09-02 | 2023-01-17 | Micron Technology, Inc. | Emulating memory sub-systems that have different performance characteristics |
KR20230050012A (ko) * | 2021-10-07 | 2023-04-14 | 에스케이하이닉스 주식회사 | 스토리지 장치 및 그 동작 방법 |
KR102579320B1 (ko) * | 2023-04-19 | 2023-09-18 | 메티스엑스 주식회사 | 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6362724B1 (en) * | 1999-06-15 | 2002-03-26 | Francotyp-Postalia Ag & Co. | Security module and method for securing computerized postal registers against manipulation |
CN101065807A (zh) * | 2004-07-28 | 2007-10-31 | 柰米闪芯积体电路有限公司 | 整合传统式静态随机存储器与闪存单元的新式非易失性静态随机存储器内存单元结构 |
CN101458613A (zh) * | 2008-12-31 | 2009-06-17 | 成都市华为赛门铁克科技有限公司 | 一种混合分级阵列的实现方法、混合分级阵列和存储系统 |
CN102135891A (zh) * | 2010-01-21 | 2011-07-27 | 杭州华三通信技术有限公司 | 可实现引导启动的系统及引导启动控制装置和方法 |
TW201135459A (en) * | 2009-12-23 | 2011-10-16 | Intel Corp | Adaptive address mapping with dynamic runtime memory mapping selection |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3197815B2 (ja) * | 1996-04-15 | 2001-08-13 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | 半導体メモリ装置及びその制御方法 |
GB9826044D0 (en) | 1998-11-28 | 1999-01-20 | Koninkl Philips Electronics Nv | Receiver for DS-CDMA signals |
KR100582357B1 (ko) * | 2003-12-29 | 2006-05-22 | 주식회사 하이닉스반도체 | 로우디코딩을 효율적으로 할 수 있는 태그블럭을 구비하는반도체 메모리 장치 |
US7279380B2 (en) | 2004-11-10 | 2007-10-09 | Macronix International Co., Ltd. | Method of forming a chalcogenide memory cell having an ultrasmall cross-sectional area and a chalcogenide memory cell produced by the method |
KR20080018704A (ko) * | 2006-08-25 | 2008-02-28 | 삼성전자주식회사 | 교반장치, 이 교반장치를 구비하는 현상장치 및화상형성장치 |
US7870363B2 (en) * | 2007-12-28 | 2011-01-11 | Intel Corporation | Methods and arrangements to remap non-volatile storage |
KR20100013824A (ko) * | 2008-08-01 | 2010-02-10 | 주식회사 하이닉스반도체 | 고속 동작하는 반도체 스토리지 시스템 |
US8195891B2 (en) * | 2009-03-30 | 2012-06-05 | Intel Corporation | Techniques to perform power fail-safe caching without atomic metadata |
US7898859B2 (en) * | 2009-06-15 | 2011-03-01 | Micron Technology, Inc. | Use of emerging non-volatile memory elements with flash memory |
US8688894B2 (en) * | 2009-09-03 | 2014-04-01 | Pioneer Chip Technology Ltd. | Page based management of flash storage |
US9015268B2 (en) | 2010-04-02 | 2015-04-21 | Intel Corporation | Remote direct storage access |
US20130024602A1 (en) * | 2011-07-18 | 2013-01-24 | Dell Products L.P. | Universal Storage for Information Handling Systems |
DE112011106078B4 (de) | 2011-12-29 | 2021-01-28 | Intel Corp. | Verfahren, Vorrichtung und System zur Implementierung eines mehrstufigen Arbeitsspeichers mit Direktzugriff |
US8743820B2 (en) | 2012-05-30 | 2014-06-03 | Intel Corporation | PUCCH resource allocation with enhanced PDCCH |
-
2011
- 2011-12-29 DE DE112011106078.5T patent/DE112011106078B4/de active Active
- 2011-12-29 KR KR1020147016262A patent/KR101628929B1/ko active IP Right Grant
- 2011-12-29 KR KR1020167014711A patent/KR101692417B1/ko active Application Filing
- 2011-12-29 CN CN201180075995.2A patent/CN104011690B/zh active Active
- 2011-12-29 CN CN201610912901.7A patent/CN107092561B/zh active Active
- 2011-12-29 KR KR1020167036731A patent/KR101767359B1/ko active IP Right Grant
- 2011-12-29 WO PCT/US2011/067824 patent/WO2013101050A1/en active Application Filing
- 2011-12-29 US US13/993,695 patent/US9190124B2/en active Active
- 2011-12-29 GB GB1408844.7A patent/GB2510763B/en active Active
-
2012
- 2012-12-25 TW TW101149809A patent/TWI585584B/zh not_active IP Right Cessation
-
2015
- 2015-10-08 US US14/879,004 patent/US9430151B2/en active Active
-
2016
- 2016-07-19 US US15/214,005 patent/US9703502B2/en active Active
-
2017
- 2017-06-30 US US15/640,373 patent/US10241710B2/en active Active
-
2019
- 2019-03-25 US US16/363,576 patent/US10817201B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6362724B1 (en) * | 1999-06-15 | 2002-03-26 | Francotyp-Postalia Ag & Co. | Security module and method for securing computerized postal registers against manipulation |
CN101065807A (zh) * | 2004-07-28 | 2007-10-31 | 柰米闪芯积体电路有限公司 | 整合传统式静态随机存储器与闪存单元的新式非易失性静态随机存储器内存单元结构 |
CN101458613A (zh) * | 2008-12-31 | 2009-06-17 | 成都市华为赛门铁克科技有限公司 | 一种混合分级阵列的实现方法、混合分级阵列和存储系统 |
TW201135459A (en) * | 2009-12-23 | 2011-10-16 | Intel Corp | Adaptive address mapping with dynamic runtime memory mapping selection |
CN102135891A (zh) * | 2010-01-21 | 2011-07-27 | 杭州华三通信技术有限公司 | 可实现引导启动的系统及引导启动控制装置和方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112380150A (zh) * | 2020-11-12 | 2021-02-19 | 上海壁仞智能科技有限公司 | 计算装置以及用于加载或更新数据的方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20160068989A (ko) | 2016-06-15 |
US10241710B2 (en) | 2019-03-26 |
GB2510763A (en) | 2014-08-13 |
US9703502B2 (en) | 2017-07-11 |
US20160110106A1 (en) | 2016-04-21 |
US20190286356A1 (en) | 2019-09-19 |
GB201408844D0 (en) | 2014-07-02 |
US20170075616A1 (en) | 2017-03-16 |
DE112011106078T5 (de) | 2014-12-04 |
US10817201B2 (en) | 2020-10-27 |
US9430151B2 (en) | 2016-08-30 |
KR20170003730A (ko) | 2017-01-09 |
TW201342053A (zh) | 2013-10-16 |
KR101692417B1 (ko) | 2017-01-05 |
KR20140091605A (ko) | 2014-07-21 |
CN107092561B (zh) | 2021-03-12 |
US20130339572A1 (en) | 2013-12-19 |
US9190124B2 (en) | 2015-11-17 |
CN104011690A (zh) | 2014-08-27 |
DE112011106078B4 (de) | 2021-01-28 |
WO2013101050A1 (en) | 2013-07-04 |
CN104011690B (zh) | 2016-11-09 |
US20170337009A1 (en) | 2017-11-23 |
GB2510763B (en) | 2020-05-20 |
KR101767359B1 (ko) | 2017-08-10 |
TWI585584B (zh) | 2017-06-01 |
KR101628929B1 (ko) | 2016-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104011690B (zh) | 具有直接存取的多级存储器 | |
TWI783369B (zh) | 準揮發性系統級記憶體 | |
CN103946812B (zh) | 用于实现多级别存储器分级体系的设备和方法 | |
CN103946826B (zh) | 用于在公共存储器通道上实现多级存储器层级的设备和方法 | |
CN104011691B (zh) | 非易失性ram盘 | |
CN104115129B (zh) | 用于从处理器到存储器子系统智能刷新数据的系统和方法 | |
CN103988183B (zh) | 2级存储器分级结构中的存储器侧高速缓存的动态部分断电 | |
US8966181B2 (en) | Memory hierarchy with non-volatile filter and victim caches | |
CN103999038B (zh) | 用于在易失性存储器与非易失性存储器之间分布代码和数据存储的方法和设备 | |
CN103999161B (zh) | 用于相变存储器漂移管理的设备和方法 | |
CN104106057B (zh) | 用非易失性随机存取存储器提供对休眠状态转变的即时响应的方法和系统 | |
CN107193756A (zh) | 用于标记需要写回持久存储的非事务代码区的开头和结束的指令 | |
CN104115230B (zh) | 基于高效pcms刷新机制的计算装置、方法和系统 | |
CN108228473A (zh) | 通过动态地传送存储器范围分配的负载平衡 | |
CN110447075A (zh) | 多内核管芯上存储器微控制器 | |
KR101831226B1 (ko) | 차세대 메모리로 구성된 캐시의 제어 장치 및 그 방법 | |
US20240143171A1 (en) | Systems, methods, and devices for using a reclaim unit based on a reference update in a storage device | |
Huang et al. | NVM Hardware and Software |
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 |