CN108549609B - 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram) - Google Patents
作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram) Download PDFInfo
- Publication number
- CN108549609B CN108549609B CN201711474496.6A CN201711474496A CN108549609B CN 108549609 B CN108549609 B CN 108549609B CN 201711474496 A CN201711474496 A CN 201711474496A CN 108549609 B CN108549609 B CN 108549609B
- Authority
- CN
- China
- Prior art keywords
- memory
- nvram
- random access
- processor
- volatile random
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000015654 memory Effects 0.000 claims abstract description 225
- 230000004044 response Effects 0.000 claims abstract description 4
- 238000005192 partition Methods 0.000 claims description 38
- 238000000034 method Methods 0.000 claims description 16
- 238000005516 engineering process Methods 0.000 description 16
- 230000005291 magnetic effect Effects 0.000 description 15
- 230000002085 persistent effect Effects 0.000 description 12
- 230000003287 optical effect Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 229920000682 polycarbomethylsilane Polymers 0.000 description 6
- 238000013475 authorization Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000011982 device technology Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000005012 migration Effects 0.000 description 3
- 238000013508 migration Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 239000012782 phase change material Substances 0.000 description 3
- 238000002135 phase contrast microscopy Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- JWZQBEUBJXSDPP-UHFFFAOYSA-N 5-cyclohexyl-6-methylpyrimidine-2,4-diamine Chemical compound CC1=NC(N)=NC(N)=C1C1CCCCC1 JWZQBEUBJXSDPP-UHFFFAOYSA-N 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 2
- 101100072002 Arabidopsis thaliana ICME gene Proteins 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 229920001690 polydopamine Polymers 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000005387 chalcogenide glass Substances 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005294 ferromagnetic effect Effects 0.000 description 1
- 238000011900 installation process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000001465 metallisation Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 229920003227 poly(N-vinyl carbazole) Polymers 0.000 description 1
- 229920000642 polymer Polymers 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000005641 tunneling Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/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
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- 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/1004—Compatibility, e.g. with legacy hardware
-
- 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/1056—Simplification
-
- 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/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- 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/25—Using a specific main memory architecture
- G06F2212/251—Local memory within processor subsystem
-
- 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
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)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在计算机系统中使用非易失性随机存取存储器(NVRAM)以便在平台存储层级中执行多个作用,具体来说,用于替代可通过I/O存取的传统大容量存储设备。该计算机系统包括用于执行软件的处理器和耦合到处理器的存储器。存储器的至少一部分包括通过处理器可字节重写和可字节擦除的非易失性随机存取存储器(NVRAM)。该系统还包括耦合到NVRAM的存储器控制器以响应来自软件的存取大容量存储设备的请求而执行存储器存取操作以存取NVRAM。
Description
技术领域
本发明的实施例涉及计算机系统;并且更具体来说,涉及使用非易失性随机存取存储器作为传统大容量存储设备的替代。
背景技术
A.当前的存储器和存储设备配置
当今计算机创新的限制因素之一是存储器和存储设备技术。在常规计算机系统中,系统存储器通常由动态随机存取存储器(DRAM)来实现。基于DRAM的存储器甚至在不进行存储器读取或写入时也会消耗功率,因为它必须不断对内部电容器充电。基于DRAM的存储器是易失性的,这意味着一旦移除电源,存储在DRAM存储器中的数据就会丢失。
关于大容量存储设备,常规的大容量存储装置通常包括非易失性磁介质(例如,硬盘驱动器)和/或闪速存储器(又称为“闪存”)(例如,固态驱动器(SSD))。这些存储装置可块寻址,这意味着不能个别地存取存储设备的单个字节。而是,作为多字节(例如,16字节或更大的)数据块来读取和写入字节。一般,这些存储装置视为是I/O装置,因为它们由处理器通过实现各种I/O协议的各种I/O适配器来存取。这些I/O适配器和I/O协议消耗大量功率,并且可以对管芯面积和平台的形状因子具有显著影响。另外,对于具有有限电池寿命的便携式或移动装置(例如,平板计算机、相机和移动电话),它们的存储装置(例如,嵌入式多媒体卡(eMMC)和安全数字(SD)卡)通常经由低功率互连和I/O控制器耦合到处理器以便满足活动和空闲功率预算。这些互连和I/O控制器无法持续地递送令人满意的用户体验所需的带宽。
关于固件存储器,常规的计算机系统通常使用闪速存储器装置来存储经常读取但很少(或从不)写入的持久性系统信息。例如,基本输入和输出系统(BIOS)图像通常存储在闪速存储器装置中。当前市场上可用的闪速存储器装置一般具有有限的速度(例如,50MHz)。该速度还会因为读取协议的开销(例如,2.5MHz)而进一步减小。为了加快BIOS执行速度,常规处理器一般在引导过程的可预扩展固件接口(PEI)阶段期间缓存BIOS代码的一部分。但是,处理器高速缓存具有非常有限的容量。因此,可用于初始系统配置的BIOS代码的量也非常有限。处理器高速缓存的大小限制对在PEI阶段中所使用的BIOS代码(又称为“PEI BIOS代码”)的大小施加了显著限制。因此,PEI BIOS代码无法轻易地扩展以便支持存储器配置和多个处理器族的大混合。随着对处理器、处理器互连、利用各种技术和多个处理器族实现的存储器和存储设备的初始化的日益增加的需求,对更多用途的PEIBIOS代码的需要也逐渐增长。一个解决方法是构建更大的处理器高速缓存来缓存代码。但是,处理器高速缓存的大小无法在不对系统的剩余部分产生不利影响的情况下轻易增加。
B.相变存储器(PCM)和相关技术
相变存储器(PCM)有时又称为PCME、PRAM、PCRAM、双向统一存储器、硫化物RAM和C-RAM,它是一种利用硫化物玻璃的独特行为的非易失性计算机存储器。作为通过使电流流过而产生热量的结果,该材料可以在两种状态之间切换:晶态和非晶态。最近版本的PCM可以实现两种额外的不同状态,从而有效地使存储器存储容量加倍。PCM是在非易失性作用中与闪速存储器竞争的多种新存储器技术之一。闪速存储器有多个这些替代希望解决的实际问题。
例如,PCM可以在快速写入非常重要的应用中提供高得多的性能,这部分是因为存储器元件可以更加快速地切换,并且还因为各个位可以变为1或0,而无需首先擦除整个单元块(闪存中是这样的)。PCM的高性能使得它在当前性能受到存储器存取定时限制的非易失性存储器作用中潜在地非常有益。
另外,尽管PCM装置随着使用降级(像闪存一样),但是它们的降级速度缓慢得多。PCM装置可以存活大约1亿次写入循环。PCM寿命受到各种机制的限制,例如由于编程过程中的GST热膨胀引起的降级、金属(及其它材料)迁移和其它机制。
附图说明
通过参考以下描述以及用于说明本发明的实施例的附图,可以最好地理解本发明。图中:
图1示出根据本发明一个实施例在平台存储层级的一个或多个阶层中使用非易失性存储器随机存取(NVRAM)的计算机系统。
图2示出根据本发明一个实施例使用NVRAM作为传统非易失性大容量存储设备和固件存储器的替代的计算机系统。
图3示出根据本发明一个实施例解码输入地址的解码逻辑。
图4示出根据本发明一个实施例在NVRAM装置内配置分区的方法。
图5示出根据本发明第一实施例在软件和由图2的NVRAM提供的存储设备之间的接口。
图6A示出根据本发明的备选实施例的存储器和存储设备子系统。
图6B示出根据本发明的备选实施例的存储器和存储设备子系统。
图7示出根据本发明第二实施例在软件和由NVRAM提供的存储设备之间的接口。
图8A示出根据本发明第三实施例在软件和由NVRAM提供的存储设备之间的接口。
图8B以进一步细节示出图8A的实施例。
图9示出根据本发明第四实施例在软件和由NVRAM提供的存储设备之间的接口。
具体实施方式
在以下描述中,阐述了众多具体细节。但是,将了解,没有这些具体细节也可以实践本发明的实施例。在其它情况下,没有详细示出公知的电路、结构和技术,以免使本描述模糊。
本说明书中对“一个实施例”、“实施例”、“实例实施例”等的提及指示所描述的实施例可以包括特定特征、结构或特性,但每个实施例可能不一定包括所述特定特征、结构或特性。此外,这些短语不一定都指同一个实施例。另外,当结合实施例描述特定特征、结构或特性时,认为结合无论是否明确描述的其它实施例来实现这样的特征、结构或特性是在本领域技术人员的知识范围内。
在以下描述和随附权利要求书中,可以使用术语“耦合”和“连接”及其派生词。应了解,这些术语不是意图作为彼此的同义词。“耦合”用于指示两个或两个以上元件彼此协作或交互,它们可以或者可以不直接彼此物理或电接触。“连接”用于指示在彼此耦合的两个或两个以上元件之间建立通信。
本文中有时使用括入括弧的文字和带虚线边界(例如,大虚线、小虚线、点划线、点)的方框来说明对本发明的实施例增加额外特征的可选操作/组件。但是,不应将这些符号视为表示它们是唯一选项或可选的操作/组件,和/或在本发明的某些实施例中具有实线边界的方框不是可选的。
下文描述的本发明的实施例定义了使得层级存储器子系统组织能够使用NVRAM的平台配置。在存储器层级中使用NVRAM还使能了诸如扩展的引导空间和大容量存储设备实现的新用途,如下文所详细描述。
图1是示出在平台存储层级的一个或多个阶层中使用可字节寻址的非易失性随机存取存储器(NVRAM)130的计算机系统100的框图。术语“平台存储层级”在这里是指供计算机系统100用于存储数据、指令、状态以及其它持久和非持久信息的整个存储介质。在一个实施例中,计算机系统100中的所有持久性存储设备可以按可配置的方式合并到一个NVRAM130中。另外,可以分派NVRAM 130的某个部分以作为系统存储器的DRAM替代。NVRAM 130的多用途便于从具有在持久性面向块的文件系统上操作的操作系统(OS)的常规平台到理解完全持久的可字节寻址的单级数据存储的OS的技术迁移。
在一个实施例中,NVRAM 130可以配置成在典型的平台存储层级中作为以下中的一个或多个实现所述作用:高速缓存,系统存储器(又称为主存储器、主要存储器、可执行存储器),存储设备(又称为次级存储设备和大容量存储设备),以及固件存储器(例如,引导存储器(又称为BIOS闪存)、可信平台模块(TPM)存储器、用于存储其媒体接入控制(MAC)地址的千兆位以太网网络完整性控制器(NIC)等)。还设想具有不同作用的平台存储层级,并且NVRAM 130的应用不限于上文所描述的作用。
NVRAM(例如,NVRAM 130)可以在其特性和/或其在平台存储层级中的应用方面区别于其它指令和数据存储器/存储设备技术。例如,NVRAM不同于:
1)作为专用于处理器核或由多个处理器核共享的高速缓存应用的静态随机存取存储器(“SRAM”);
2)作为处理器内部(例如,在与处理器相同的管芯上)和/或处理器外部(例如,在与处理器相同或不同的封装上)的一个或多个高速缓存应用的更高速存储器(例如,动态随机存取存储器(“DRAM”));
3)作为驱动存储设备应用的闪速存储器/磁盘/光盘;以及作为引导只读存储器(ROM)应用的存储器,例如闪速存储器或ROM。
在本发明的一个实施例中,NVRAM具有以下特性:
1)非易失性(即使移除电源,它仍维持其内容,这与固态盘(“SSD”)中所使用的闪速存储器类似,但不同于易失性的SRAM和DRAM);
2)比诸如SRAM和DRAM的易失性存储器更低的功率消耗;
3)随机存取(又称为可随机寻址);
4)以比SSD中所发现的闪存更低的粒度级(例如,字节级)可重写和可擦除(闪存一次只可重写和擦除一个“块”,对于NOR闪存最小为64K字节大小,而对于NAND闪存,最小为16K字节);
5)可用作系统存储器并且被分配系统地址空间的所有或一部分;以及
6)能够通过总线利用事务协议(支持事务标识符(ID)区分不同事务以便那些事务可以无序完成的协议)耦合到处理器,并允许以小至足以支持NVRAM作为系统存储器操作的粒度级(例如,高速缓存行大小,如64或128字节)进行存取。例如,总线可以是存储器总线(例如,诸如DDR3、DDR4等的DDR总线),与正常使用的非事务性协议相反,在该总线上运行事务协议。又如,总线可以是其上通常运行事务协议(本地事务协议)的总线,例如PCIexpress(PCIE)总线、桌面管理接口(DMI)总线或利用事务协议和足够小的事务有效载荷大小(例如,高速缓存行大小,如64或128字节)的任何其它类型的总线;
7)以下中的一个或多个:
a)比当前的非易失性存储器/存储设备技术(例如,闪存)更快的写入速度;
b)非常高的读取速度(比闪存快且接近或等于DRAM读取速度);
c)可直接写入(而不是像SSD中所使用的闪速存储器那样在写入数据之前需要擦除(以1s覆写));和/或
d)在故障之前更高的写入耐久的数量级(例如,2或3个)(多于在SSD中所使用的引导ROM和闪存)。
如上所述,与必须一次重写和擦除完整“块”的闪速存储器相比,在任何给定实现中存取NVRAM的粒度级可以取决于特定存储器控制器以及与NVRAM耦合的特定存储器总线。例如,在使用NVRAM 130作为系统存储器的一些实现中,尽管固有能力是以字节的粒度进行存取,但是可以以高速缓存行(例如,64字节或128字节高速缓存行)的粒度存取NVRAM,因为高速缓存行是存储器子系统存取存储器的级别。因此,当在存储器子系统中部署NVRAM时,可以以与相同存储器子系统中所使用的DRAM(例如,“附近存储器”)相同的粒度级对它进行存取。即使如此,存储器控制器和存储器总线或其它类型的总线存取NVRAM的粒度级仍小于闪存所使用的块大小以及I/O子系统的控制器和总线的存取大小的粒度级。
NVRAM 130可以用作具有足够短以便对处理器造成较小影响的存取时间要求的指令和数据存储设备。这里,可以先将程序指令和数据从较深的闪速/磁/光大容量存储设备152加载到NVRAM 130中,然后再由处理器执行。此外,如下文所详细地描述,NVRAM 130可以放置在存储器总线上,并且可以与存储器控制器直接通信,而存储器控制器又与处理器直接通信。
NVRAM 130的新存储器技术的存在提供了很多新可能性。尽管下文将以长得多的篇幅进行了论述,但是下文立即快速地强调这些可能性中的一些可能性。
根据一个可能实现,NVRAM 130充当系统存储器中的传统DRAM技术的总体替代或补充。在一个实施例中,NVRAM 130代表引入二级系统存储器(例如,系统存储器是作为DRAM140和NVRAM中130的一些或全部的组合)。因此,系统存储器可以视作具有附近存储器部分NM 141A和远距离存储器部分FM 142。将明白,在不同实施例中,附近存储器可以用作存储器侧高速缓存(例如,附近存储器高速缓存141B)、便签式存储器和不同于系统存储器的其它角色。在本文所描述的实施例中,NVRAM 130的NM 141A部分只用作系统存储器以便简化论述。
根据一些实施例,NVRAM 130提供NVRAM存储设备,它充当传统大容量存储设备(例如,闪速/磁/光大容量存储设备152)的总体替代或补充。在本申请中,术语“传统大容量存储设备”是指基于光、磁和/或闪存技术的大容量存储设备,例如盘和闪速存储器。为了简化论述,闪速/磁/光大容量存储设备152又称为传统大容量存储设备152。因此,可以利用NVRAM、闪速存储器、磁存储设备或其任何组合来实现计算系统100的非易失性大容量存储设备。在NVRAM存储设备150充当传统大容量存储设备152的总体替代的实施例中,对于可块寻址的存储设备存取无需使用存储设备驱动器。从存储设备存取中去除存储设备驱动器开销可以增大存取速度并节省功率。在期望NVRAM存储设备150对于OS和/或应用看起来像是可块存取且与传统大容量存储设备152不可区分的备选实施例中,可以使用仿真的存储设备驱动器来暴露到用于存取NVRAM存储设备150的软件的可块存取的接口(例如,通用串行总线(USB)仅批量传递(BOT)1.0、串行高级技术附件(SATA)3.0等)。在一些实施例中,最低级存储设备驱动器可以使用NVRAM 130的可字节寻址性来移动NVRAM存储设备150的块并仿真可块存取的大容量存储设备,而不会带来I/O接口的成本。稍后将参考图5更加详细地描述利用采用最低级存储设备驱动器NVRAM 130的可字节寻址性的实施例。
根据一些实施例,NVRAM 130提供BIOS NVRAM 160和TPM NVRAM 170,它们充当诸如BIOS闪存162和TPM闪存172的固件存储器的总体替代或补充。固件存储器普遍利用闪存技术来实现,并且普遍存储由处理器执行以便在引导过程期间初始化关键系统组件的初始指令(例如,BIOS)。固件存储器还可以存储由TPM 134使用以便保护敏感系统信息(例如,加密密钥)的系统持久状态。在一个实施例中,对于固件存储器使用NVRAM 130去除了第三方闪存部分存储对于系统操作而言关键的代码和数据的需要。
存储器和存储装置的选择可以取决于在其上使用所述装置的平台的类型。例如,在个人计算机、平板计算机、笔记本计算机、移动装置(例如,智能电话或PDA)中,非易失性大容量存储设备可以单独使用NVRAM存储设备150来实现,或者可以使用NVRAM存储设备150结合闪速/磁存储设备来实现。在其它实现(例如,大规模服务器)中,非易失性大容量存储设备可以使用磁存储设备(例如,硬驱动器)或磁存储设备、闪存和NVRAM存储设备150的任何组合来实现。在这种情形下,负责存储的计算机系统硬件和/或软件可以实现各种智能的持久存储分配技术以便以有效或其它有用的方式在FM 142/NVRAM存储设备150与传统大容量存储设备152之间分配持久程序代码和数据的块。在一些实施例中,NVRAM 130可以变成芯片外(即,处理器芯片外)的单独存储器/存储装置。在一些实施例中,取代芯片外DRAM140,可以使用DRAM来提供芯片上高速缓存(例如,附近存储器高速缓存141B)。这些实施例可以特别有关于非常小的平台(例如,智能电话或PDA),其中多个存储器类/技术可能受成本抑制,并且可以在芯片上放置更多晶体管(包括存储设备)。
NVRAM 130可以合并“耗损均衡”算法以便解释以下事实:远距离存储器级处的存储单元在太多写入存取之后开始耗损。由于高循环计数块最有可能以这种方式耗损,所以耗损均衡通过将高循环计数块的地址与低循环计数块交换来在远距离存储器单元间扩展写入。注意,大多数的地址交换对于最终用户通常都是透明的,因为它由硬件、软件(例如,低级驱动器或操作系统)或其组合来处理。
在一个实施例中,NVRAM 130可以用非易失性随机存取存储器(NVRAM)来实现,例如PCM、或更具体来说是PCMS(又称为(PRAM或PCRAM))、双向统一存储器(OUM)、(CRAM)。远距离存储器的其它可能的技术选择包括但不限于可字节寻址的持久存储器(BPRAM)、存储级存储器(SCM)、通用存储器、Ge2Sb2Te5、可编程金属化单元(PMC)、电阻型存储器(RRAM)、RESET(非晶)单元、SET(晶态)单元、PCME、Ovshinsky、铁电存储器(又称为聚合物存储器和聚N乙烯咔唑)、铁磁存储器(又称为自旋电子(Spintronics)、SPRAM(自旋转移矩RAM)、STRAM(自旋隧穿RAM)、磁阻、磁存储器和磁随机存取存储器(MRAM))以及半导体-氧化物-氮化物-氧化物-半导体(SONOS,又称为介质存储器)。
为了便于说明,应用的大多数剩余部分有时将把“PCM”或“PCMS”称为NVRAM 130的技术选择。因此,在以下论述中,术语NVRAM、PCM和PCMS可以互换使用。但是,如上文所论述,应当意识到,对于NVRAM 130,还可以使用不同的技术。
然后,继续论述图1的系统,尽管为了简单起见,图1中示出单个处理器110,但是在一些实施例中,计算机系统100的体系结构可以包括多个处理器。处理器110可以是任何类型的数据处理器,包括通用或专用中央处理单元(CPU)、专用集成电路(ASIC)或数字信号处理器(DSP)。例如,处理器110可以是通用处理器,如CoreTM i3、i5、i7、2Duo和Quad、XeonTM或ItaniumTM处理器,所有这些都可自加利福尼亚圣克拉拉的Intel公司获得。或者,处理器110可以来自其它公司,例如加利福尼亚桑尼维尔的ARM控股有限公司、加利福尼亚桑尼维尔的MIPS Technologies等。处理器110可以是专用处理器,例如,诸如网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等。处理器110可以在包含在一个或多个封装内的一个或多个芯片上实现。处理器110可以是一个或多个衬底的一部分,和/或可以在一个或多个衬底上利用例如,诸如BiCMOS、CMOS或NMOS的多种工艺技术中的任一种来实现。
在一个实施例中,处理器110包括集成式图形单元111,它包括用于执行诸如3D或2D图形命令的图形命令的逻辑。在一个实施例中,图形单元111能够执行行业标准图形命令,例如由Open GL和/或Direct X应用编程接口(API)(例如,OpenGL 4.1和Direct X 11)指定的命令,但是本发明的实施例不限于任何特定的集成式图形单元111。
尽管同样为了清楚起见,图1中示出单个核112,但是处理器110也可以包括一个或多个核112。在许多实施例中,核112包括内部功能块,例如一个或多个执行单元、引退单元、通用和特定寄存器集合等。如果核112是多线程或超线程的,那么每个硬件线程也可以视为是“逻辑的”核。在体系结构和/或指令集方面,核112可以是同质或异质的。例如,一些核可以有序,而其它核则无序。又如,核中的两个或两个以上可能能够执行相同指令集,而其它核只能够执行该指令集的子集或执行不同的指令集。
处理器110还可以包括一个或多个高速缓存,例如可以作为SRAM和/或DRAM实现的高速缓存113。在未示出的许多实施例中,实现不同于高速缓存113的额外高速缓存,以使得在核112中的执行单元与存储器装置141A和142之间存在多个高速缓存级。例如,共享型高速缓存单元的集合可以包括:诸如1级(L1)高速缓存的上级高速缓存,诸如2级(L2)、3级(L3)、4级(L4)或其它级高速缓存的中级高速缓存,最后级高速缓存(LLC),和/或其不同组合。在不同实施例中,可以按不同方式分派高速缓存113,并且在不同实施例中,高速缓存113可以是许多不同大小之一。例如,高速缓存113可以是8兆字节(MB)高速缓存、16MB高速缓存等。另外,在不同实施例中,高速缓存可以是直接映射的高速缓存、全关联高速缓存、多向集合关联高速缓存或具有另一类型的映射的高速缓存。在包括多个核的其它实施例中,高速缓存113可以包括在所有核中共享的一个大部分,或者可以划分为若干个功能独立的片段(例如,每个核一个片段)。高速缓存113还可以包括在所有核中共享的一个部分以及作为每个核的功能独立片段的若干个其它部分。在一个实施例中,高速缓存113可以包括DRAM附近存储器高速缓存141B。
处理器110还可以包括归属代理114,它包括协调和操作核112的那些组件。例如,归属代理单元114可以包括功率控制单元(PCU)和显示单元。PCU可以是或者可以包括用于调节核112和集成式图形单元111的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
在一些实施例中,处理器110包括集成式存储器控制器(IMC)131,以便提供用于与存储器和存储设备子系统180通信的接口。更具体来说,在一个实施例中,IMC 131包含用于对DRAM装置140进行读取、写入和刷新所必需的逻辑。IMC 131可以在与处理器110相同的芯片上,或者在连接到处理器110的独立芯片和/或封装上。
在一些实施例中,处理器110包括耦合到IMC 131的I/O子系统115。I/O子系统115使得能够在处理器110与以下串行或并行I/O装置之间通信:一个或多个网络136(例如,局域网、广域网或互联网),存储I/O装置(例如,传统大容量存储设备152、BIOS闪存162、TPM闪存172),以及一个或多个非存储I/O装置137(例如,显示器、键盘、扬声器等)。I/O子系统115可以包括平台控制器集线器(PCH)(未示出),PCH进一步包括用于提供对存储和非存储I/O装置和网络的存取的若干个I/O适配器138和其它I/O电路。为了实现此,I/O子系统115对于所使用的每个I/O协议可以具有至少一个集成式I/O适配器138。I/O子系统115可以在与处理器110相同的芯片上,或者在连接到处理器110的独立芯片和/或封装上。
I/O适配器138将处理器110内所使用的主机通信协议转译为与特定I/O装置兼容的协议。对于传统大容量存储设备152,I/O适配器138可以转译的协议中的一些协议包括外围组件互连(PCI)-Express 3.0、通用串行总线(USB)3.0、串行高级技术附件(SATA)3.0、小型计算机系统接口(SCSI)、廉价盘冗余阵列(RAID)和1394“火线”等。对于BIOS闪存162,I/O适配器138可以转译的协议中的一些协议包括串行外围接口(SPI)、微线等。另外,可以有一个或多个无线协议I/O适配器。无线协议的实例是蓝牙4.0、基于IEEE 802.11的无线协议和蜂窝协议等。
在一些实施例中,I/O子系统115还包括管理引擎(ME)135,它是允许系统管理员监测、维护、更新、升级和修理计算机系统100的微处理器。在一个实施例中,系统管理员可以通过ME 135经由网络136远程配置计算机系统100。在一个实施例中,配置可以存储在处理器110内的解码表133中。IMC 131和I/O子系统115可以读取解码表133,然后决定应当将数据存取请求引导到哪里。
在一些实施例中,处理器110包括可信平台模块(TPM)134,它用于控制对系统持久状态(例如,安全数据、加密密钥、平台配置信息等)的存取。在一个实施例中,这些系统持久状态存储在可以用诸如PCMS的基于PCM的存储器实现的TPM NVRAM 170中。在如图1所示的实施例中,TPM NVRAM 170是NVRAM 130的一部分。
在一个实施例中,TPM 134是具有密码功能性的安全微控制器。TPM 134具有多个信任相关的能力,例如用于确保受到TPM保护的数据只对于相同TPM可用的“密封”能力。TPM134可以利用它的加密能力来保护数据和密钥(例如,秘密)。在一个实施例中,TPM 134具有唯一和秘密的RSA密钥(它基于由Ron Rivest,Adi Shamir和Leonard Adleman开发的RSA算法生成),这允许它认证硬件装置和平台。例如,TPM 134可以验证寻求对存储在计算机系统100中的数据的存取的系统是预期系统。TPM 134还能够报告平台(例如,计算机系统100)的完整性。这允许外部资源(例如,网络上的服务器)确定平台的可信赖性,而不会妨碍用户存取平台。
应理解,计算机系统可以利用NVRAM 130用于系统存储器、大容量存储设备、固件存储器和/或其它存储器和存储设备目的,即使它的处理器不具有处理器110的上述所有组件或者具有比处理器110更多的组件。
在一个实施例中,计算机系统100包括用于控制对NVRAM 130的数据存取的NVRAM控制器132。NVRAM控制器132耦合到IMC 131和I/O子系统115。NVRAM控制器132可以从解码表133读取配置数据,或者备选地,可以依赖于从IMC 131和I/O子系统115传递的解码结果。在利用PCMS实现NVRAM 130的实施例中,NVRAM控制器132是利用与PCMS技术一致的协议执行字节级存取的PCMS控制器。尽管IMC 131和NVRAM控制器132可以是两个离散控制器(如图1所示,其中虚线隔开这两个控制器),但是在一些实施例中,这两个控制器可以作为一个组合控制器来实现以便控制对存储器和存储设备的存取。
在图1中,将NVRAM控制器132示为利用三条独立的线连接到FM 142、NVRAM大容量存储设备150和BIOS NVRAM 160。但是,这不一定意味着,有三条独立的物理总线或通信信道将NVRAM控制器132连接到NVRAM 130的这些部分。而是,在一些实施例中,使用共同的存储器总线或其它类型的总线来在通信上将NVRAM控制器132耦合到FM 142、NVRAM大容量存储设备150和BIOS NVRAM 160。例如,在一个实施例中,图1中的这三条线代表DDR总线,例如存储器总线(例如,DDR3、DDR4等),通过该总线,NVRAM控制器132实现事务协议以便与NVRAM130通信。NVRAM控制器132还可以通过支持本地事务协议的总线与NVRAM 130通信,所述总线例如PCI express(PCI-E)总线、桌面管理接口(DMI)总线或利用事务协议的任何其它类型的总线。
图2是示出根据本发明一个实施例的计算机系统200的框图,计算机系统200使用NVRAM 130作为传统大容量存储设备152和固件存储器(例如,BIOS闪存162和TPM闪存172)的总替代。计算机系统200包括耦合到存储器和存储设备子系统280的处理器210。在该实施例中,存储器和存储设备子系统280只包括DRAM装置140和NVRAM 130。如上所述,NVRAM 130具有包括系统存储器(FM 142)、大容量存储设备(NVRAM存储设备150)和固件存储器(BIOSNVRAM 160和TPM NVRAM 170)的可配置分区。处理器210可以与图1的处理器110相同,除了I/O适配器238不一定包括用于存取传统大容量存储设备和闪速存储器的图1的适配器138的全部。在这样的情况下,负责存储器和存储设备存取的计算机系统硬件和/或软件可以实现各种智能技术以便得益于NVRAM 130的低等待时间、高吞吐量和鲁棒性(与诸如传统大容量存储设备152、BIOS NVRAM 162和TPM NVRAM 172的传统闪速/磁存储设备相比)。
NVRAM的可配置分区
如之前描述的,NVRAM 130可以分为在平台存储层级中具有不同作用的多个分区。如上文所论述,术语“平台存储层级”是指服务于不同目的的高速缓存、系统存储器、大容量存储设备和固件存储器(例如,BIOS存储设备和TPM存储设备)。在一个实施例中,将存取导向NVRAM 130的不同分区的手段是经由解码逻辑。例如,在制造时或者在现场,计算机系统100可以将解码表133编程为将NVRAM 130的不同区域标记为系统存储器、大容量存储设备、固件等。
在图1和图2的实施例中,将NVRAM 130分区为FM 142、NVRAM存储设备150、BIOSNVRAM 160和TPM NVRAM 170。可以在解码表133中定义每个分区的地址范围。在一个实施例中,当IMC 131接收存取请求时,将请求的目标地址解码以便揭露将请求引导向存储器还是I/O。如果它是存储器请求,那么IMC 131从目标地址进一步确定将请求引导向NM 141A还是FM 142。对于FM 142存取,IMC 131将请求转发给NVRAM控制器132。如果该请求指向I/O(例如,非存储和存储I/O装置),那么IMC 131将请求传递给I/O子系统115。I/O子系统115进一步将地址解码以便确定地址是指向NVRAM存储设备150、BIOS NVRAM 162还是其它非存储和存储I/O装置。如果该地址指向NVRAM存储设备150或BIOS NVRAM 162,那么I/O子系统115将请求转发给NVRAM控制器132。如果该地址指向TPM NVRAM 170,那么I/O子系统115将请求传递给TPM 134以便执行安全存取。在一个实施例中,转发给NVRAM控制器132的每个请求伴随有指示存取类型的属性(又称为“事务类型”)。在一个实施例中,NVRAM控制器132可以仿真所请求的存取类型的存取协议,以使得平台的剩余部分保持不知道平台存储层级中的NVRAM 130所执行的多个作用。在备选实施例中,NVRAM控制器132可以执行对NVRAM 130的存储器存取,而不管它是哪个事务类型。理解的是,解码路径可以不同于上文所描述的解码路径。例如,IMC 131可以解码存取请求的目标地址,并确定它是否指向NVRAM 130。如果它指向NVRAM 130,那么IMC 131根据解码表133生成属性。然后,基于所述属性,IMC 131将请求转发给合适的下游逻辑(例如,NVRAM控制器132和I/O子系统115)以便执行所请求的数据存取。在又一实施例中,如果没有从上游逻辑(例如,IMC 131和I/O子系统115)传递对应属性,那么NVRAM控制器132可以解码目标地址。可以实现其它解码路径。
图3示出根据本发明一个实施例的解码逻辑330,它将输入地址解码并生成指示NVRAM分区之一的输出。在一个实施例中,输入地址是指向NVRAM 130内的位置(例如,字节位置)的物理地址。在一个实施例中,可以通过转译逻辑320从系统地址(例如,由核113生成的地址)转译物理地址。解码逻辑330的输出指示输入地址所指向的NVRAM 130的分区。在一个实施例中,输出通过其对应属性指示NVRAM分区;例如,00指示FM 142,01指示NVRAM存储设备150,10指示BIOS NVRAM 160,而11指示TPM NVRAM 170。理解的是,属性可以由任何数字或模拟指示符表示,并且不受本文所描述和示出的实例的限制。此外,解码逻辑330可以将输入地址映射到比图3中示出的实施例更多或更少的分区。例如,如果将NVRAM 130配置成(根据解码表133)只包含两个分区,那么解码逻辑330可以将输入地址映射到这两个分区。
在一个实施例中,解码逻辑330基于存储在解码表133中的配置数据来解码输入地址。在一个实施例中,解码表133存储NVRAM 130中的每个分区的属性311、基地址312和长度313。解码表133可以由BIOS在引导时间构建。例如,BIOS可以在引导时间读取存储在控制状态寄存器(CSR)310中的配置数据。CSR 310可以包括将在NVRAM 130中配置的每个分区的范围(例如,大小)。然后,BIOS相应地构建解码表133。
应注意,解码逻辑330是在平台(例如,图1的计算机系统100或图2的计算机系统200)内执行的解码操作的逻辑表示。实现解码逻辑330的硬件可以驻留在单个功能单元(例如,IMC 131)或多个功能单元(例如,IMC 131、I/O子系统115和/或NVRAM控制器132的任何组合)中。类似地,转译逻辑320可以由单个功能单元(例如,IMC 131)、由多个功能单元(例如,IMC 131、I/O子系统115和/或NVRAM控制器132的任何组合)或由软件和硬件的组合来实现。解码逻辑330和/或转译逻辑320也可以驻留在IMC 131、I/O子系统115和NVRAM控制器132的外部并耦合到它们。为了简单图示,图1和图2的实施例示出,IMC 131、I/O子系统115和NVRAM控制器132中的每个都具有到解码表133的连接以指示它们所有都可以从解码表133读取以便执行解码逻辑330的功能的可能性。但是,应理解,在备选实施例中,只有IMC131、或IMC 131和I/O子系统115连接到解码表133以执行解码逻辑330的功能。
在一个实施例中,CSR 310可以由硬件熔丝(例如,只可一次编程的可编程只读存储器(PROM))、可再编程ROM(例如,电可擦除可编程ROM(EEPROM))或其它可编程硬件实现。在解码表133可再编程的实施例中,解码表133中的那些地址范围可以如图4的实施例中所描述的通过授权服务器来远程编程。
图4是示出根据本发明一个实施例在NVRAM内配置分区的方法400的流程图。为了简单论述,将参考图1的实施例来描述图4的流程图的操作。但是,应了解,流程图的操作可以由图2的实施例以及与这些图中示出的实施例不同的实施例来执行。另外,参考图1和图2论述的实施例可以执行与参考图4的流程图论述的操作不同的操作。
参考图1和图4,在一个实施例中,计算机系统100经由网络连接从授权服务器请求配置数据用于对NVRAM 130配置分区(方框410)。授权服务器可以由计算机系统100的制造商、第三方权威机构或拥有配置NVRAM 130的权利的任何权威机构控制或拥有。经由网络连接,计算机系统100(例如,ME 135)可以将它的证书(例如安全地存储在TPM NVRAM 170中的加密密钥)发送给授权服务器(方框420)。在授权服务器认证计算机系统100之后,它发送回包括所请求的配置数据的签名消息(方框430)。一旦接收到签名消息,MC 135便可以根据所接收的地址范围设置CSR 310(方框440),以便可以在引导时间对解码表133进行编程。然后,计算机系统100重新引导(方框450)。在引导时间期间,计算机系统100的BIOS对解码表133进行编程(方框460)。BIOS还将配置传给OS;例如,BIOS可以构建包含供OS读取的配置数据的多个表(方框470)。
在计算机系统100完全引导之后,并且一旦接收到具有NVRAM物理地址的数据存取请求,解码逻辑330便基于解码表133中的配置数据来解码请求中所指示的地址(方框480)。解码逻辑330生成指示NVRAM 130中的分区之一的属性(方框490)。基于该属性,解码逻辑330将请求转发给合适的下游逻辑(例如,I/O适配器138、TPM 134等)(方框495)。可以与请求一起转发指示NVRAM分区的属性的事务类型。在一个实施例中,下游逻辑可以基于属性确定用于存取分区的合适协议。
在一个实施例中,在方框470创建的这些表之一是亲和表,它存储每个基本存储器装置的逻辑距离。亲和表允许内核级OS代码区分利用不同技术实现的系统存储器的不同分区,例如DRAM(NM 141A)和NVRAM(FM 142),以及相应地划拨OS页面迁移策略。例如,NM 141A可用于频繁存取的数据以便在计算机系统100的常规操作过程中吸收一些写入。
在一个实施例中,亲和表包括存储器地址的范围的逻辑距离,其中逻辑距离指示实际物理距离、域、存取速度/时间或代表本地存储器的存取时间或距离的任何其它度量。基于亲和表中的信息,OS可以将存储器存取引导至不同的存储器位置。例如,OS可以基于本地存储器的逻辑距离对操作做出线程调度决定和资源分配。可以使用诸如操作的时间关键性的众多考量来确定利用哪个本地存储器。例如,可以调度时间极其关键的操作以利用DRAM(NM 141A),因为它在亲和表中由比FM 141A短的逻辑距离所表示。在备选中,将在背景中运行的线程不是时间密集型的,可以被调度以便使用FM 141A,从而确保NM 142可用于其它操作。在确定利用哪个本地存储器时可以使用其它考量,例如本地存储器的大小、即将运行或执行的线程或操作的类型、或用于基于存取距离或速度选择存储器的任何其它已知的考量。
去除存储设备存取中的存储设备驱动器开销
如上所述,NVRAM 130是非易失性且可随机存取的。它可以以字节的粒度进行存取,并且它的存取等待时间接近于当今的易失性RAM。由于这种非易失性存储器提供更接近传统存储介质的高容量,所以它可以替代平台中的传统的I/O附连的非易失性大容量存储装置。
如图2所示,对于系统存储器(例如,FM 142)和NVRAM存储设备150使用NVRAM 130可以模糊平台存储层级中的这两个不同阶层的作用之间的界线。因为FM 142和NVRAM存储设备150驻留在相同的NVRAM 130中,所以它们可以视为是一个连续分区,并且可以经由相同的存储器互连以相同的方式存取。因此,使用NVRAM存储设备150可以去除传统I/O数据存取的负担。即,诸如SATA、PCI-E等的I/O协议不再是存储设备存取所必需的。因此,在一些实施例中,可以在无需执行I/O操作的存储设备驱动器的情况下,而是通过使用CPU存储器指令以便从存储设备复制到存储器缓冲器,来对NVRAM存储设备150进行存取,从而仿真OS和应用软件的块存取。备选地,OS文件系统可以知道存储器可寻址存储设备(即,NVRAM存储设备150),并将NVRAM存储设备150地址空间直接映射到应用地址空间。这节省了复制的成本以及系统中所使用的存储器的量。NVRAM存储设备150在本文中称为“存储器可寻址”,因为它在物理存储器地址空间中可直接寻址,并且使用存储器地址作为操作数的所有指令都将用NVRAM存储设备150的地址工作。
但是,遗留软件(例如,OS和应用)仍可以在以下假设的基础上操作:存储设备驱动器在计算机系统中存在以便执行块存取。例如,典型的传统操作系统将位于大容量存储设备中而不是位于系统存储器中的数据视为是非驻留数据,并且当存取该数据时将触发页面故障。然后,页面故障处理程序发信号通知存储设备驱动器以便将数据带入到系统存储器中。这可以在存储设备驱动器中通过仿真块存储来处理。备选地,在文件系统知道存储器可寻址存储设备的OS中,页面故障处理可以是存储器映射操作而不是存储器复制或I/O操作。
由于功率节省和存储设备存取速度的增加,去除I/O接口和I/O控制器、以及减小存取成本的益处一般胜过软件修改的成本。本发明的实施例使用PCMS作为平台中的高性能存储设备,从而利用其低功率、高容量、非易失性和存储器模式的性质。本发明的实施例去除了传统存储堆栈I/O路径,并使得存储设备可以由处理器寻址和缓存以便以最低功率实现最快性能。
本发明的实施例以多个级别提供软件和存储设备(由诸如PCMS的NVRAM实现)之间的接口,这将在下文参考图5、7、8A、8B和9加以描述。这些图中示出的软件(例如,OS和应用)和硬件操作可以由图1和图2的处理器110和210的实施例以及与这些图中示出的实施例不同的实施例来执行。另外,参考图1和图2论述的实施例可以执行与参考图5、7、8A、8B和9的图论述的操作不同的操作。
图5示出根据本发明第一实施例在软件和由图2的NVRAM 130提供的存储设备之间的接口。在该实施例中,IMC 131具有将NVRAM 130抽象为软件的传统非易失性大容量存储设备(例如,盘或闪速存储器)的额外能力。IMC 131耦合到可以用软件实现的存储设备驱动器513。对于存储设备驱动器513,IMC 131用作可块寻址的传统非易失性大容量存储设备。计算机系统200使用该存储设备驱动器513作为最低级盘驱动器。在该实施例中,软件(OS512和应用)可以利用NVRAM 130中的数据,而不必对软件进行修改。即,对非驻留页面(不在系统存储器中的页面)的数据存取将触发页面故障,并且将执行盘I/O。
在如图5所示的实施例中,当OS 512发起存储I/O时(例如,响应于带入不是驻留在诸如NM 141A和FM 142的系统存储器中的页面的页面故障),它调用存储设备驱动器513并提供存储器地址、存储设备地址、长度和操作类型(例如,读取或写入)(方框510)。存储设备驱动器513利用不同于标准I/O接口/协议的接口(例如,SATA 3.0、PCI-E 3.0等)将这些参数传送到IMC 131(方框520)。存储器地址指示用于与由存储设备地址指定的存储设备位置交换页面的存储器位置(在NM 141A或FM 142中)。IMC 131将存储设备地址转译为NVRAM130中的物理地址(方框530)。然后,NVRAM控制器132(或者如果IMC 131实现用于存取NVRAM130的协议,则为IMC 131)将来自存储器地址的数据复制到存储设备地址(如果操作是读取的话),或者将来自存储设备地址的数据复制到存储器地址(如果操作是写入的话)(方框540)。
在一个实施例中,存储器地址落在FM 142的地址空间内。在该实施例中,IMC 131还将存储器地址转译为NVRAM 130中的物理地址。然后,NVRAM控制器132(或者如果IMC 131可以直接存取NVRAM 130,则为IMC 131)通过在相同NVRAM内执行存储器到存储器复制来在存储器地址和存储设备地址之间复制数据。在存储器地址落在NM 141A的地址空间内的另一个实施例中,复制涉及两个存储器装置(例如,NVRAM 130和DRAM 140)之间的存储器到存储器复制。在复制完成之后,IMC 131发信号通知存储设备驱动器513(方框550),存储设备驱动器513又发信号通知OS 512以指示I/O完成。
图6A示出根据本发明一个备选实施例的存储器和存储设备子系统680。在该实施例中,存储器和存储设备子系统680利用由OS创建的RAM盘650来取代NVRAM存储设备150(图2)。RAM盘650用作文件系统660的存储设备。下文将关于图7的流程图进一步详细地描述使用RAM盘650作为存储设备。NVRAM 130可以包括比图6A中示出的分区更多或更少的分区(例如,BIOS NVRAM 162和/或TPM NVRAM 172可以缺少)。在一个实施例中,在OS安装过程中配置和格式化RAM盘650,并且RAM盘650在系统引导间一直存留(就像常规盘)。
图7示出根据本发明第二实施例在软件和由NVRAM 130提供的存储设备之间的接口。该第二实施例是指图6A的存储器和存储设备子系统680,其中“存储设备”是FM 142内由OS 712标为RAM盘650(又称为“RAMDisk”)的分区。OS 712将RAM盘650作为传统非易失性大容量存储装置(例如,盘或固态驱动器)对待。对RAM盘650的存取由内核级驱动器控制,内核级驱动器称为RAM盘驱动器713,它将标准盘驱动呈现给OS 712并用作最低级盘驱动器。在该实施例中,软件(OS 712和应用)可以利用NVRAM 130中的数据,而无需对软件进行修改。即,对非驻留页面(不在系统存储器中的页面)的数据存取将触发页面故障,并且将执行盘I/O。
在如图7所示的实施例中,当OS 712发起盘I/O时(例如,响应于进入不是驻留在诸如图6A的NM 141A和FM 142的系统存储器中的页面的页面故障),它调用RAM盘驱动器713并提供存储器地址、存储设备地址、长度和操作类型(例如,读取或写入)(方框710)。存储器地址指示用于与由存储设备地址指定的存储设备位置交换页面的存储器位置(在NM 141A或FM 142中)。IMC 131将存储设备地址转译为NVRAM 130中的物理地址(方框720)。然后,NVRAM控制器132(或者如果IMC 131实现用于存取NVRAM 130的协议,则为IMC 131)将来自存储器地址的数据复制到存储设备地址(如果操作是读取的话),或者将来自存储设备地址的数据复制到存储器地址(如果操作是写入的话)(方框730)。
在一个实施例中,存储器地址落在FM 142的地址空间内。在该实施例中,RAM盘驱动器713还将存储器地址转译为NVRAM 130中的物理地址。然后,NVRAM控制器132(或者如果IMC 131可以直接存取NVRAM 130,则为IMC 131)通过在相同NVRAM装置内执行存储器到存储器复制来在存储器地址和存储设备地址之间复制数据。在存储器地址落在NM 141A(它充当系统存储器)的地址空间内的另一个实施例中,复制涉及两个存储器装置(例如,NVRAM130和DRAM 140)之间的存储器到存储器复制。在复制完成之后,IMC 131发信号通知RAM盘驱动器713(方框740),RAM盘驱动器713又发信号通知OS 712以指示I/O完成。
图8A和图8B示出根据本发明一个实施例在软件和由参考图6B的NVRAM 130提供的存储设备之间的接口的第三实施例。图6B示出根据本发明一个实施例的存储器和存储设备子系统682。在如图6B所示的实施例中,在NVRAM 130内没有区分大容量存储设备与系统存储器。OS(图8B的OS 850)创建存储器映射的文件系统,其中FM 142用作文件系统660的存储设备。应了解,NVRAM 130可以包括比图6B中示出的分区更多或更少的分区(例如,BIOSNVRAM 162和/或TPM NVRAM 172可以缺少)。
在存储器映射的文件系统中,应用810所使用(并且因此在分配给应用810的虚拟地址空间820中)的文件可以直接映射到NVRAM装置地址空间840。NVRAM装置地址空间840中的每个地址位置可以由处理器直接寻址,并且因此“驻留”在存储器中。无需触发带入来自存储设备的页面的页面故障,因为OS 850了解存储设备与存储器相同。在该实施例中,OS850需要进行修改以便利用NVRAM 130,但是应用810可以在不进行修改的情况下使用。相比之下,在非存储器映射的文件系统中,应用的每次读取/写入都是系统调用。如果读取/写入指向已经不在存储器中的页面,那么对该页面的存取将涉及由存储设备驱动器执行的存储I/O存取,这比存储器存取慢得多。
图8B以进一步的细节示出图8A的实施例。参考图8A和图8B,当应用810请求对文件的页面821进行读取存取时(方框860),OS 850将请求传递给存储器存取硬件,因为页面821已经作为页面841映射在存储器中(方框870)。存储器存取硬件(例如,IMC 131或IMC 131和NVRAM控制器132的组合)从NVRAM 130检索页面841,并将页面转发给高速缓存830(例如,SRAM或DRAM高速缓存)以便减少未来存取等待时间(方框880)。然后,存储器存取硬件发信号通知OS 850,而OS 850又发信号通知应用810取出已经完成。如果尚未取出页面,那么可以采用与读取相同的方式执行对页面的写入存取。另外,当应用810修改已经取出的页面821时,可以执行写时复制以便在虚拟地址空间820中创建页面821的写入复本822。该写入复本可以存储在高速缓存830中以用于未来存取,并且可以在稍后的时间写回到NVRAM 130(例如,当高速缓存830已满并且需要腾出空间给新取出的页面时)。
图9示出根据本发明第四实施例在软件和由NVRAM 130提供的存储设备之间的接口。该第二实施例是指图6B的存储器和存储设备子系统682,其中OS和应用(例如,应用910)均需要修改以便利用NVRAM 130。存储设备的概念在该实施例中消失。在该实施例中,应用910可以利用存储器存取指令来管理NVRAM装置地址空间930。例如,应用910可以调用OS应用编程接口(API)920的集合以便执行memory_allocation、memory_deallocation、memory_read、memory_write等的等效指令。这些指令中的每个指令可以指向NVRAM 130中的特定地址位置。因此,应用910拥有管理写入到NVRAM 130的数据的持久性和最佳写入管理的责任。
图4、5、7、8A、8B和9的图中示出的技术可以利用存储在非暂时性机器可读或计算机可读介质上的指令和数据来实现,非暂时性机器可读或计算机可读介质例如非暂时性机器可读或计算机可读存储介质(例如,磁盘、光盘、随机存取存储器、只读存储器、闪速存储器装置和相变存储器)。
本发明的实施例还可以作为计算机程序产品来提供,计算机程序产品可以包括其上存储有指令的非暂时性机器可读介质,这些指令可用于对计算机(或其它电子装置)进行编程以便执行过程。非暂时性机器可读介质可以包括但不限于软盘、光盘、CD-ROM和磁光盘、ROM、RAM、EPROM、EEPROM、磁或光卡、传播介质或适于存储电子指令的其它类型的介质/机器可读介质。本发明的实施例还可以作为计算机程序产品下载,其中可以通过在载波或其它传播介质中实施的数据信号经由通信链路(例如,调制解调器或网络连接)将程序从远程计算机(例如,服务器)传送到请求计算机(例如,客户端)。
尽管就若干个实施例描述了本发明,但是本领域技术人员将意识到,本发明不限于所描述的实施例,并且可以利用在随附权利要求的精神和范围内的修改和改变来实践。因此,本描述视为是说明性而不是限制性的。
Claims (12)
1.一种计算系统,包括:
用于执行软件的处理器;
耦合到所述处理器的存储器,所述存储器包括由所述处理器可字节寻址的非易失性随机存取存储器,所述非易失性随机存取存储器被分区到第一分区和第二分区;以及
耦合到所述非易失性随机存取存储器的存储器控制器,用于执行存储器存取操作以便存取所述非易失性随机存取存储器,其中,所述存储器控制器被配置用于响应于来自所述软件的请求而执行所述存储器存取操作以便存取所述非易失性随机存取存储器,且所述软件包括内核级驱动器,用于将用于对所述第二分区的存储器存取操作的存储设备地址转译为非易失性随机存取存储器地址。
2.如权利要求1所述的计算系统,其中以高速缓存行粒度存取所述第一分区。
3.如权利要求1所述的计算系统,其中所述非易失性随机存取存储器通过实现事务协议的总线耦合到所述存储器控制器。
4.一种包含内核级驱动器程序代码的机器可读存储介质,所述内核级驱动器程序代码在由处理器执行时使得所述处理器执行方法,所述方法包括:
在包括所述处理器和存储器的计算系统中,其中所述存储器包括可字节寻址的非易失性随机存取存储器,所述非易失性随机存取存储器被分区到第一分区和第二分区,通过将存储设备地址转译为非易失性随机存取存储器地址来对于对所述第二分区的存储器存取操作的软件请求做出响应。
5.如权利要求4所述的机器可读存储介质,其中,在所述计算系统内,以高速缓存行粒度存取所述第一分区。
6.如权利要求4所述的机器可读存储介质,其中,在所述计算系统内,所述非易失性随机存取存储器通过实现事务协议的总线耦合到存储器控制器。
7.一种由内核级驱动器执行的方法,包括:
在包括处理器和存储器的计算系统中,其中所述存储器包括可字节寻址的非易失性随机存取存储器,所述非易失性随机存取存储器被分区到第一分区和第二分区,通过将存储设备地址转译为非易失性随机存取存储器地址来对于对所述第二分区的存储器存取操作的软件请求做出响应。
8.如权利要求7所述的方法,还包括以高速缓存行粒度存取所述第一分区。
9.如权利要求7所述的方法,其中,在所述计算系统内,所述非易失性随机存取存储器通过实现事务协议的总线耦合到存储器控制器。
10.一种与内核级驱动器一起使用的装置,包括:
用于在包括处理器和存储器的计算系统中通过将存储设备地址转译为非易失性随机存取存储器地址来对于对第二分区的存储器存取操作的软件请求做出响应的部件,其中所述存储器包括可字节寻址的非易失性随机存取存储器,所述非易失性随机存取存储器被分区到第一分区和第二分区。
11.如权利要求10所述的装置,还包括用于以高速缓存行粒度存取所述第一分区的部件。
12.如权利要求10所述的装置,其中,在所述计算系统内,所述非易失性随机存取存储器通过实现事务协议的总线耦合到存储器控制器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711474496.6A CN108549609B (zh) | 2011-09-30 | 2011-09-30 | 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram) |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711474496.6A CN108549609B (zh) | 2011-09-30 | 2011-09-30 | 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram) |
PCT/US2011/054414 WO2013048490A1 (en) | 2011-09-30 | 2011-09-30 | Non-volatile random access memory (nvram) as a replacement for traditional mass storage |
CN201180075251.0A CN103946816B (zh) | 2011-09-30 | 2011-09-30 | 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram) |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180075251.0A Division CN103946816B (zh) | 2011-09-30 | 2011-09-30 | 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram) |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108549609A CN108549609A (zh) | 2018-09-18 |
CN108549609B true CN108549609B (zh) | 2022-06-21 |
Family
ID=47996221
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180075251.0A Active CN103946816B (zh) | 2011-09-30 | 2011-09-30 | 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram) |
CN201711474496.6A Active CN108549609B (zh) | 2011-09-30 | 2011-09-30 | 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram) |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180075251.0A Active CN103946816B (zh) | 2011-09-30 | 2011-09-30 | 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram) |
Country Status (4)
Country | Link |
---|---|
US (2) | US9529708B2 (zh) |
EP (2) | EP2761469B1 (zh) |
CN (2) | CN103946816B (zh) |
WO (1) | WO2013048490A1 (zh) |
Families Citing this family (64)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013048493A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Memory channel that supports near memory and far memory access |
CN104115136B (zh) | 2011-09-30 | 2017-12-08 | 英特尔公司 | 非易失性随机访问存储器中存储bios的装置、方法和系统 |
US9829951B2 (en) | 2011-12-13 | 2017-11-28 | Intel Corporation | Enhanced system sleep state support in servers using non-volatile random access memory |
KR101915073B1 (ko) | 2011-12-20 | 2018-11-06 | 인텔 코포레이션 | 2-레벨 메모리 계층구조에서 메모리측 캐쉬의 동적인 부분적 전원 차단 |
US9448922B2 (en) | 2011-12-21 | 2016-09-20 | Intel Corporation | High-performance storage structures and systems featuring multiple non-volatile memories |
WO2013095559A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Power conservation by way of memory channel shutdown |
US20140089573A1 (en) * | 2012-09-24 | 2014-03-27 | Palsamy Sakthikumar | Method for accessing memory devices prior to bus training |
WO2014092698A1 (en) * | 2012-12-11 | 2014-06-19 | Hewlett-Packard Development Company | Application server to nvram path |
WO2014098839A1 (en) * | 2012-12-19 | 2014-06-26 | Hewlett-Packard Development Company | Nvram path selection |
US9817728B2 (en) | 2013-02-01 | 2017-11-14 | Symbolic Io Corporation | Fast system state cloning |
US9628108B2 (en) | 2013-02-01 | 2017-04-18 | Symbolic Io Corporation | Method and apparatus for dense hyper IO digital retention |
US9304703B1 (en) | 2015-04-15 | 2016-04-05 | Symbolic Io Corporation | Method and apparatus for dense hyper IO digital retention |
US10133636B2 (en) | 2013-03-12 | 2018-11-20 | Formulus Black Corporation | Data storage and retrieval mediation system and methods for using same |
US9519440B2 (en) * | 2013-09-10 | 2016-12-13 | Qualcomm Incorporated | Providing command queuing in embedded memories |
US10331457B2 (en) * | 2014-01-22 | 2019-06-25 | Hewlett-Packard Development Company, L.P. | Byte-addressable non-volatile read-write main memory partitioned into regions including metadata region |
WO2015130314A1 (en) | 2014-02-28 | 2015-09-03 | Hewlett-Packard Development Company, L.P. | Mapping mode shift |
US9684532B2 (en) * | 2014-08-22 | 2017-06-20 | Netapp, Inc. | Virtual machine reboot information persistence into host memory |
US9292639B1 (en) * | 2014-10-30 | 2016-03-22 | Cadence Design Systems Inc. | Method and system for providing additional look-up tables |
US9916255B2 (en) | 2014-12-11 | 2018-03-13 | Empire Technology Development Llc | Data storage based on memory persistency |
FR3032814B1 (fr) * | 2015-02-18 | 2018-02-02 | Upmem | Circuit dram muni d'un processeur integre |
US10204047B2 (en) | 2015-03-27 | 2019-02-12 | Intel Corporation | Memory controller for multi-level system memory with coherency unit |
WO2016159930A1 (en) | 2015-03-27 | 2016-10-06 | Hewlett Packard Enterprise Development Lp | File migration to persistent memory |
CN107209720B (zh) | 2015-04-02 | 2020-10-13 | 慧与发展有限责任合伙企业 | 用于页面高速缓存的系统及方法以及存储介质 |
US10061514B2 (en) | 2015-04-15 | 2018-08-28 | Formulus Black Corporation | Method and apparatus for dense hyper IO digital retention |
US10157008B2 (en) * | 2015-04-29 | 2018-12-18 | Qualcomm Incorporated | Systems and methods for optimizing memory power consumption in a heterogeneous system memory |
US10387259B2 (en) | 2015-06-26 | 2019-08-20 | Intel Corporation | Instant restart in non volatile system memory computing systems with embedded programmable data checking |
US10073659B2 (en) | 2015-06-26 | 2018-09-11 | Intel Corporation | Power management circuit with per activity weighting and multiple throttle down thresholds |
US10725689B2 (en) * | 2015-08-31 | 2020-07-28 | Hewlett Packard Enterprise Development Lp | Physical memory region backup of a volatile memory to a non-volatile memory |
US10108549B2 (en) | 2015-09-23 | 2018-10-23 | Intel Corporation | Method and apparatus for pre-fetching data in a system having a multi-level system memory |
US10261901B2 (en) | 2015-09-25 | 2019-04-16 | Intel Corporation | Method and apparatus for unneeded block prediction in a computing system having a last level cache and a multi-level system memory |
US10185501B2 (en) | 2015-09-25 | 2019-01-22 | Intel Corporation | Method and apparatus for pinning memory pages in a multi-level system memory |
CN105335326A (zh) * | 2015-10-10 | 2016-02-17 | 广州慧睿思通信息科技有限公司 | 一种基于fpga的pcie转sata接口阵列的装置 |
US9792224B2 (en) | 2015-10-23 | 2017-10-17 | Intel Corporation | Reducing latency by persisting data relationships in relation to corresponding data in persistent memory |
JP6716894B2 (ja) * | 2015-11-19 | 2020-07-01 | 日本電気株式会社 | メモリ割り当て装置、メモリ割当方法、および、プログラム |
US10033411B2 (en) | 2015-11-20 | 2018-07-24 | Intel Corporation | Adjustable error protection for stored data |
US10095618B2 (en) | 2015-11-25 | 2018-10-09 | Intel Corporation | Memory card with volatile and non volatile memory space having multiple usage model configurations |
US9747041B2 (en) | 2015-12-23 | 2017-08-29 | Intel Corporation | Apparatus and method for a non-power-of-2 size cache in a first level memory device to cache data present in a second level memory device |
US20170185292A1 (en) * | 2015-12-23 | 2017-06-29 | Intel Corporation | Memory Management of High-Performance Memory |
US10007606B2 (en) | 2016-03-30 | 2018-06-26 | Intel Corporation | Implementation of reserved cache slots in computing system having inclusive/non inclusive tracking and two level system memory |
US10185619B2 (en) | 2016-03-31 | 2019-01-22 | Intel Corporation | Handling of error prone cache line slots of memory side cache of multi-level system memory |
US10120806B2 (en) | 2016-06-27 | 2018-11-06 | Intel Corporation | Multi-level system memory with near memory scrubbing based on predicted far memory idle time |
US10229047B2 (en) | 2016-08-06 | 2019-03-12 | Wolley Inc. | Apparatus and method of wear leveling for storage class memory using cache filtering |
US10048868B2 (en) * | 2016-09-29 | 2018-08-14 | Intel Corporation | Replacement of a block with a compressed block to increase capacity of a memory-side cache |
US10915453B2 (en) | 2016-12-29 | 2021-02-09 | Intel Corporation | Multi level system memory having different caching structures and memory controller that supports concurrent look-up into the different caching structures |
US11474736B2 (en) | 2016-12-29 | 2022-10-18 | Intel Corporation | Network interface controller with non-volatile random access memory write packet log |
US10445261B2 (en) | 2016-12-30 | 2019-10-15 | Intel Corporation | System memory having point-to-point link that transports compressed traffic |
KR20180094391A (ko) * | 2017-02-15 | 2018-08-23 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
CN108733311B (zh) * | 2017-04-17 | 2021-09-10 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法和设备 |
US10621117B2 (en) | 2017-06-15 | 2020-04-14 | Micron Technology, Inc. | Controlling memory devices using a shared channel |
US10304814B2 (en) | 2017-06-30 | 2019-05-28 | Intel Corporation | I/O layout footprint for multiple 1LM/2LM configurations |
US11188467B2 (en) | 2017-09-28 | 2021-11-30 | Intel Corporation | Multi-level system memory with near memory capable of storing compressed cache lines |
US10719238B1 (en) * | 2017-10-12 | 2020-07-21 | EMC IP Holding Company LLC | Memory fabric with reliability zone comprising two or more fabric attached memory endpoints |
US10572186B2 (en) | 2017-12-18 | 2020-02-25 | Formulus Black Corporation | Random access memory (RAM)-based computer systems, devices, and methods |
US10860244B2 (en) | 2017-12-26 | 2020-12-08 | Intel Corporation | Method and apparatus for multi-level memory early page demotion |
US11099995B2 (en) | 2018-03-28 | 2021-08-24 | Intel Corporation | Techniques for prefetching data to a first level of memory of a hierarchical arrangement of memory |
KR20200044312A (ko) * | 2018-10-19 | 2020-04-29 | 삼성전자주식회사 | 반도체 장치 |
TWI688859B (zh) | 2018-12-19 | 2020-03-21 | 財團法人工業技術研究院 | 記憶體控制器與記憶體頁面管理方法 |
US10725853B2 (en) | 2019-01-02 | 2020-07-28 | Formulus Black Corporation | Systems and methods for memory failure prevention, management, and mitigation |
US11055228B2 (en) | 2019-01-31 | 2021-07-06 | Intel Corporation | Caching bypass mechanism for a multi-level memory |
US20220137846A1 (en) * | 2019-07-19 | 2022-05-05 | Hewlett-Packard Development Company, L.P. | Storage hash values |
US11010059B2 (en) * | 2019-07-30 | 2021-05-18 | EMC IP Holding Company LLC | Techniques for obtaining metadata and user data |
US11698859B2 (en) * | 2019-12-27 | 2023-07-11 | Sk Hynix Nand Product Solutions Corp. | Direct map memory extension for storage class memory |
US11418247B2 (en) | 2020-06-30 | 2022-08-16 | Hewlett Packard Enterprise Development Lp | High spatial reuse for mmWave Wi-Fi |
CN112882964B (zh) * | 2021-03-04 | 2024-05-24 | 中国航空工业集团公司西安航空计算技术研究所 | 一种支持多接口的大容量高安全存储系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4984149A (en) * | 1987-03-28 | 1991-01-08 | Kabushiki Kaisha Toshiba | Memory access control apparatus |
US5905993A (en) * | 1994-11-09 | 1999-05-18 | Mitsubishi Denki Kabushiki Kaisha | Flash memory card with block memory address arrangement |
US6292874B1 (en) * | 1999-10-19 | 2001-09-18 | Advanced Technology Materials, Inc. | Memory management method and apparatus for partitioning homogeneous memory and restricting access of installed applications to predetermined memory ranges |
US6345349B1 (en) * | 1998-12-30 | 2002-02-05 | Intel Corporation | Combined memory and mass storage device |
CN1682199A (zh) * | 2002-09-10 | 2005-10-12 | 诺基亚有限公司 | 一种包含非易失性ram和ram的存储电路 |
CN101017460A (zh) * | 2005-12-28 | 2007-08-15 | 硅存储技术公司 | 统一的存储器和控制器 |
CN101118518A (zh) * | 2006-08-04 | 2008-02-06 | 索尼爱立信移动通信日本株式会社 | 存储器管理方法和便携式终端设备 |
WO2008048581A1 (en) * | 2006-10-16 | 2008-04-24 | Draeger Medical Systems, Inc. | A processing device operation initialization system |
CN101645044A (zh) * | 2005-01-20 | 2010-02-10 | 桑迪士克股份有限公司 | 快闪存储器系统中内务处理操作的调度 |
Family Cites Families (96)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62191947A (ja) | 1986-02-19 | 1987-08-22 | Alps Electric Co Ltd | デイスクキヤツシユ制御処理方式 |
DE68915186T2 (de) | 1988-03-09 | 1994-08-25 | Toshiba Kawasaki Kk | Tragbarer elektronischer Apparat. |
US5230052A (en) | 1990-10-01 | 1993-07-20 | International Business Machines Corp. | Apparatus and method for loading bios into a computer system from a remote storage location |
GB2251324B (en) | 1990-12-31 | 1995-05-10 | Intel Corp | File structure for a non-volatile semiconductor memory |
US5519843A (en) | 1993-03-15 | 1996-05-21 | M-Systems | Flash memory system providing both BIOS and user storage capability |
US5511202A (en) | 1993-07-26 | 1996-04-23 | International Business Machines Corporation | Desktop computer system having zero-volt system suspend and control unit for ascertaining interrupt controller base address |
US5822581A (en) | 1995-09-29 | 1998-10-13 | Intel Corporation | Method for CMOS configuration information storage and retrieval in flash |
US6018806A (en) | 1995-10-16 | 2000-01-25 | Packard Bell Nec | Method and system for rebooting a computer having corrupted memory using an external jumper |
US5974576A (en) | 1996-05-10 | 1999-10-26 | Sun Microsystems, Inc. | On-line memory monitoring system and methods |
US6035432A (en) | 1997-07-31 | 2000-03-07 | Micron Electronics, Inc. | System for remapping defective memory bit sets |
US5912839A (en) | 1998-06-23 | 1999-06-15 | Energy Conversion Devices, Inc. | Universal memory element and method of programming same |
US6326973B1 (en) | 1998-12-07 | 2001-12-04 | Compaq Computer Corporation | Method and system for allocating AGP/GART memory from the local AGP memory controller in a highly parallel system architecture (HPSA) |
EP1046998A1 (en) | 1999-04-22 | 2000-10-25 | Texas Instruments Incorporated | Digital signal processors with virtual addressing |
US7889544B2 (en) | 2004-04-05 | 2011-02-15 | Super Talent Electronics, Inc. | High-speed controller for phase-change memory peripheral device |
US6567897B2 (en) | 2001-03-01 | 2003-05-20 | International Business Machines Corporation | Virtualized NVRAM access methods to provide NVRAM CHRP regions for logical partitions through hypervisor system calls |
US7058779B1 (en) | 2001-03-05 | 2006-06-06 | Advanced Micro Devices, Inc. | Computer system initialization via boot code stored in a non-volatile memory having an interface compatible with synchronous dynamic random access memory |
US7107386B1 (en) | 2001-08-08 | 2006-09-12 | Pasternak Solutions, Llc | Memory bus arbitration using memory bank readiness |
US6990577B2 (en) | 2001-08-10 | 2006-01-24 | Intel Corporation | Updating a BIOS image by replacing a portion of the BIOS image with a portion of another BIOS image |
US6957295B1 (en) | 2002-01-18 | 2005-10-18 | Lexar Media, Inc. | File management of one-time-programmable nonvolatile memory devices |
US20050010811A1 (en) | 2003-06-16 | 2005-01-13 | Zimmer Vincent J. | Method and system to support network port authentication from out-of-band firmware |
US7836248B2 (en) | 2003-07-29 | 2010-11-16 | International Business Machines Corporation | Methods and systems for managing persistent storage of small data objects |
US7165170B2 (en) | 2003-09-12 | 2007-01-16 | Intel Corporation | System and method for firmware to export pre-boot data into the operating system runtime environment |
US20050120265A1 (en) | 2003-12-02 | 2005-06-02 | Pline Steven L. | Data storage system with error correction code and replaceable defective memory |
US7383375B2 (en) * | 2003-12-30 | 2008-06-03 | Sandisk Corporation | Data run programming |
US20050251617A1 (en) * | 2004-05-07 | 2005-11-10 | Sinclair Alan W | Hybrid non-volatile memory system |
US7475174B2 (en) | 2004-03-17 | 2009-01-06 | Super Talent Electronics, Inc. | Flash / phase-change memory in multi-ring topology using serial-link packet interface |
US7203808B2 (en) | 2004-03-19 | 2007-04-10 | Intel Corporation | Isolation and protection of disk areas controlled and for use by virtual machine manager in firmware |
US20050223157A1 (en) | 2004-04-02 | 2005-10-06 | Matti Floman | Fast non-volatile random access memory in electronic devices |
EP1870814B1 (en) | 2006-06-19 | 2014-08-13 | Texas Instruments France | Method and apparatus for secure demand paging for processor devices |
US20050273584A1 (en) | 2004-06-07 | 2005-12-08 | Wisecup George D | Locating environment variables in non-volatile memory |
US7590918B2 (en) | 2004-09-10 | 2009-09-15 | Ovonyx, Inc. | Using a phase change memory as a high volume memory |
US20060184719A1 (en) | 2005-02-16 | 2006-08-17 | Sinclair Alan W | Direct data file storage implementation techniques in flash memories |
WO2006122474A1 (fr) * | 2005-05-18 | 2006-11-23 | Ziyi Cheng | Circuit et méthode pour améliorer la durée de vie du stockage |
US20070005922A1 (en) | 2005-06-30 | 2007-01-04 | Swaminathan Muthukumar P | Fully buffered DIMM variable read latency |
US7457928B2 (en) | 2005-10-28 | 2008-11-25 | International Business Machines Corporation | Mirroring system memory in non-volatile random access memory (NVRAM) for fast power on/off cycling |
US8637342B2 (en) | 2005-11-10 | 2014-01-28 | Ovonyx, Inc. | Phase change memory with threshold switch select device |
US20070143546A1 (en) | 2005-12-21 | 2007-06-21 | Intel Corporation | Partitioned shared cache |
US7600078B1 (en) | 2006-03-29 | 2009-10-06 | Intel Corporation | Speculatively performing read transactions |
US7849302B2 (en) * | 2006-04-10 | 2010-12-07 | Apple Inc. | Direct boot arrangement using a NAND flash memory |
US7913147B2 (en) | 2006-05-08 | 2011-03-22 | Intel Corporation | Method and apparatus for scrubbing memory |
JP4700562B2 (ja) | 2006-05-18 | 2011-06-15 | 株式会社バッファロー | データ記憶装置およびデータ記憶方法 |
US7930468B2 (en) | 2006-05-23 | 2011-04-19 | Dataram, Inc. | System for reading and writing on flash memory device having plural microprocessors |
US7756053B2 (en) | 2006-06-30 | 2010-07-13 | Intel Corporation | Memory agent with error hardware |
US7493439B2 (en) | 2006-08-01 | 2009-02-17 | International Business Machines Corporation | Systems and methods for providing performance monitoring in a memory system |
WO2008040028A2 (en) | 2006-09-28 | 2008-04-03 | Virident Systems, Inc. | Systems, methods, and apparatus with programmable memory control for heterogeneous main memory |
US7694091B2 (en) * | 2006-10-23 | 2010-04-06 | Hewlett-Packard Development Company, L.P. | Non-volatile storage for backing up volatile storage |
US7774556B2 (en) | 2006-11-04 | 2010-08-10 | Virident Systems Inc. | Asymmetric memory migration in hybrid main memory |
US20080140724A1 (en) | 2006-12-06 | 2008-06-12 | David Flynn | Apparatus, system, and method for servicing object requests within a storage controller |
US7617340B2 (en) | 2007-01-09 | 2009-11-10 | International Business Machines Corporation | I/O adapter LPAR isolation with assigned memory space |
KR100823171B1 (ko) * | 2007-02-01 | 2008-04-18 | 삼성전자주식회사 | 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법 |
EP1965297A1 (en) | 2007-03-02 | 2008-09-03 | Inventec Corporation | Memory partitioning method |
US8427891B2 (en) | 2007-04-17 | 2013-04-23 | Rambus Inc. | Hybrid volatile and non-volatile memory device with a shared interface circuit |
US20080270811A1 (en) | 2007-04-26 | 2008-10-30 | Super Talent Electronics Inc. | Fast Suspend-Resume of Computer Motherboard Using Phase-Change Memory |
WO2008139441A2 (en) | 2007-05-12 | 2008-11-20 | Anobit Technologies Ltd. | Memory device with internal signal processing unit |
US8145893B2 (en) | 2007-10-26 | 2012-03-27 | Intel Corporation | Hot-plugging a memory device |
US8239665B2 (en) | 2007-10-31 | 2012-08-07 | Dell Products L.P. | Methods, systems and media for configuring boot options |
US7882341B2 (en) | 2007-12-31 | 2011-02-01 | Intel Corporation | System and method to enable parallelization of early platform initialization |
US20090271562A1 (en) | 2008-04-25 | 2009-10-29 | Sinclair Alan W | Method and system for storage address re-mapping for a multi-bank memory device |
US7663957B2 (en) | 2008-05-27 | 2010-02-16 | Via Technologies, Inc. | Microprocessor with program-accessible re-writable non-volatile state embodied in blowable fuses of the microprocessor |
US20090313416A1 (en) | 2008-06-16 | 2009-12-17 | George Wayne Nation | Computer main memory incorporating volatile and non-volatile memory |
US8532973B1 (en) * | 2008-06-27 | 2013-09-10 | Netapp, Inc. | Operating a storage server on a virtual machine |
CN101620539B (zh) | 2008-07-01 | 2013-12-25 | 联想(北京)有限公司 | 开关机方法和计算机 |
US8176233B1 (en) | 2008-07-17 | 2012-05-08 | Virident Systems Inc. | Using non-volatile memory resources to enable a virtual buffer pool for a database application |
US20110197018A1 (en) | 2008-10-06 | 2011-08-11 | Sam Hyuk Noh | Method and system for perpetual computing using non-volatile random access memory |
KR101573047B1 (ko) | 2009-01-23 | 2015-12-02 | 삼성전자주식회사 | 복합 메모리 장치 및 이를 이용한 i/o 처리 방법 |
KR20100091544A (ko) * | 2009-02-10 | 2010-08-19 | 삼성전자주식회사 | 메모리 시스템 및 그 마모도 관리 방법 |
US8291159B2 (en) | 2009-03-12 | 2012-10-16 | Vmware, Inc. | Monitoring and updating mapping of physical storage allocation of virtual machine without changing identifier of the storage volume assigned to virtual machine |
US8331857B2 (en) | 2009-05-13 | 2012-12-11 | Micron Technology, Inc. | Wireless interface to program phase-change memories |
US8250282B2 (en) | 2009-05-14 | 2012-08-21 | Micron Technology, Inc. | PCM memories for storage bus interfaces |
US8504759B2 (en) | 2009-05-26 | 2013-08-06 | Micron Technology, Inc. | Method and devices for controlling power loss |
US20100306453A1 (en) | 2009-06-02 | 2010-12-02 | Edward Doller | Method for operating a portion of an executable program in an executable non-volatile memory |
US9123409B2 (en) | 2009-06-11 | 2015-09-01 | Micron Technology, Inc. | Memory device for a hierarchical memory architecture |
US7898859B2 (en) | 2009-06-15 | 2011-03-01 | Micron Technology, Inc. | Use of emerging non-volatile memory elements with flash memory |
US8626997B2 (en) | 2009-07-16 | 2014-01-07 | Micron Technology, Inc. | Phase change memory in a dual inline memory module |
US8341387B2 (en) | 2009-08-18 | 2012-12-25 | Dell Products, Lp | System and method to manipulate a system setting when booting an information handling system |
KR20110029402A (ko) | 2009-09-15 | 2011-03-23 | 삼성전자주식회사 | 비휘발성 메모리 장치, 및 그것을 포함한 메모리 시스템, 그것의 쓰기 전류 제어 방법 |
US8914568B2 (en) | 2009-12-23 | 2014-12-16 | Intel Corporation | Hybrid memory architectures |
US8612809B2 (en) | 2009-12-31 | 2013-12-17 | Intel Corporation | Systems, methods, and apparatuses for stacked memory |
US20110208900A1 (en) | 2010-02-23 | 2011-08-25 | Ocz Technology Group, Inc. | Methods and systems utilizing nonvolatile memory in a computer system main memory |
KR20110131781A (ko) | 2010-05-31 | 2011-12-07 | 삼성전자주식회사 | 위치정보의 정확도 확인방법 및 장치 |
US8649212B2 (en) | 2010-09-24 | 2014-02-11 | Intel Corporation | Method, apparatus and system to determine access information for a phase change memory |
US8838935B2 (en) | 2010-09-24 | 2014-09-16 | Intel Corporation | Apparatus, method, and system for implementing micro page tables |
US8612676B2 (en) | 2010-12-22 | 2013-12-17 | Intel Corporation | Two-level system main memory |
US8462577B2 (en) | 2011-03-18 | 2013-06-11 | Intel Corporation | Single transistor driver for address lines in a phase change memory and switch (PCMS) array |
US8462537B2 (en) | 2011-03-21 | 2013-06-11 | Intel Corporation | Method and apparatus to reset a phase change memory and switch (PCMS) memory cell |
KR20120119092A (ko) | 2011-04-20 | 2012-10-30 | 삼성전자주식회사 | 반도체 메모리 시스템 및 이의 구동 방법 |
US8607089B2 (en) | 2011-05-19 | 2013-12-10 | Intel Corporation | Interface for storage device access over memory bus |
US20120311262A1 (en) | 2011-06-01 | 2012-12-06 | International Business Machines Corporation | Memory cell presetting for improved memory performance |
US20120324156A1 (en) | 2011-06-17 | 2012-12-20 | Naveen Muralimanohar | Method and system of organizing a heterogeneous memory architecture |
US8605531B2 (en) | 2011-06-20 | 2013-12-10 | Intel Corporation | Fast verify for phase change memory with switch |
US8463948B1 (en) | 2011-07-01 | 2013-06-11 | Intel Corporation | Method, apparatus and system for determining an identifier of a volume of memory |
EP2761471B1 (en) | 2011-09-30 | 2017-10-25 | Intel Corporation | Statistical wear leveling for non-volatile system memory |
CN104115136B (zh) * | 2011-09-30 | 2017-12-08 | 英特尔公司 | 非易失性随机访问存储器中存储bios的装置、方法和系统 |
WO2013048483A1 (en) * | 2011-09-30 | 2013-04-04 | Intel Corporation | Platform storage hierarchy with non-volatile random access memory having configurable partitions |
US8799557B1 (en) * | 2011-10-13 | 2014-08-05 | Netapp, Inc. | System and method for non-volatile random access memory emulation |
US20150089102A1 (en) | 2013-09-23 | 2015-03-26 | Lsi Corporation | Solid state drives that cache boot data |
-
2011
- 2011-09-30 EP EP11873493.8A patent/EP2761469B1/en active Active
- 2011-09-30 US US13/976,362 patent/US9529708B2/en active Active
- 2011-09-30 WO PCT/US2011/054414 patent/WO2013048490A1/en active Application Filing
- 2011-09-30 EP EP18155421.3A patent/EP3346386B1/en active Active
- 2011-09-30 CN CN201180075251.0A patent/CN103946816B/zh active Active
- 2011-09-30 CN CN201711474496.6A patent/CN108549609B/zh active Active
-
2016
- 2016-12-15 US US15/380,266 patent/US10001953B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4984149A (en) * | 1987-03-28 | 1991-01-08 | Kabushiki Kaisha Toshiba | Memory access control apparatus |
US5905993A (en) * | 1994-11-09 | 1999-05-18 | Mitsubishi Denki Kabushiki Kaisha | Flash memory card with block memory address arrangement |
US6345349B1 (en) * | 1998-12-30 | 2002-02-05 | Intel Corporation | Combined memory and mass storage device |
US6292874B1 (en) * | 1999-10-19 | 2001-09-18 | Advanced Technology Materials, Inc. | Memory management method and apparatus for partitioning homogeneous memory and restricting access of installed applications to predetermined memory ranges |
CN1682199A (zh) * | 2002-09-10 | 2005-10-12 | 诺基亚有限公司 | 一种包含非易失性ram和ram的存储电路 |
CN101645044A (zh) * | 2005-01-20 | 2010-02-10 | 桑迪士克股份有限公司 | 快闪存储器系统中内务处理操作的调度 |
CN101017460A (zh) * | 2005-12-28 | 2007-08-15 | 硅存储技术公司 | 统一的存储器和控制器 |
CN101118518A (zh) * | 2006-08-04 | 2008-02-06 | 索尼爱立信移动通信日本株式会社 | 存储器管理方法和便携式终端设备 |
WO2008048581A1 (en) * | 2006-10-16 | 2008-04-24 | Draeger Medical Systems, Inc. | A processing device operation initialization system |
Non-Patent Citations (1)
Title |
---|
CRAMFS文件系统在NAND存储器中的应用;郭鹏 等;《机械与电子》;20100531;第73-75页 * |
Also Published As
Publication number | Publication date |
---|---|
US20140297938A1 (en) | 2014-10-02 |
EP2761469A1 (en) | 2014-08-06 |
US10001953B2 (en) | 2018-06-19 |
CN103946816B (zh) | 2018-06-26 |
CN103946816A (zh) | 2014-07-23 |
EP2761469A4 (en) | 2015-07-01 |
US20170139649A1 (en) | 2017-05-18 |
US9529708B2 (en) | 2016-12-27 |
WO2013048490A1 (en) | 2013-04-04 |
EP2761469B1 (en) | 2019-11-13 |
CN108549609A (zh) | 2018-09-18 |
EP3346386B1 (en) | 2020-01-22 |
EP3346386A1 (en) | 2018-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108549609B (zh) | 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram) | |
US11054876B2 (en) | Enhanced system sleep state support in servers using non-volatile random access memory | |
EP2761468B1 (en) | Platform storage hierarchy with non-volatile random access memory having configurable partitions | |
US10055353B2 (en) | Apparatus, method and system that stores bios in non-volatile random access memory | |
EP2761465B1 (en) | Autonomous initialization of non-volatile random access memory in a computer system | |
GB2514023B (en) | System and method for intelligently flushing data from a processor into a memory subsystem | |
US9958926B2 (en) | Method and system for providing instant responses to sleep state transitions with non-volatile random access memory | |
US20140229659A1 (en) | Thin translation for system access of non volatile semicondcutor storage as random access memory | |
WO2013048503A1 (en) | Apparatus and method for implementing a multi-level memory hierarchy having different operating modes | |
EP2761466A1 (en) | Apparatus and method for implementing a multi-level memory hierarchy | |
EP2761480A1 (en) | Apparatus and method for implementing a multi-level memory hierarchy over common memory channels | |
US9202548B2 (en) | Efficient PCMS refresh mechanism |
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 | ||
TG01 | Patent term adjustment |