CN106990911A - Os和应用程序的透明存储器压缩技术 - Google Patents
Os和应用程序的透明存储器压缩技术 Download PDFInfo
- Publication number
- CN106990911A CN106990911A CN201710035160.3A CN201710035160A CN106990911A CN 106990911 A CN106990911 A CN 106990911A CN 201710035160 A CN201710035160 A CN 201710035160A CN 106990911 A CN106990911 A CN 106990911A
- Authority
- CN
- China
- Prior art keywords
- storage
- page
- sprkd
- data
- compression
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 154
- 238000000034 method Methods 0.000 title claims description 63
- 238000003860 storage Methods 0.000 claims abstract description 238
- 238000007906 compression Methods 0.000 claims abstract description 88
- 230000006835 compression Effects 0.000 claims abstract description 82
- 230000006837 decompression Effects 0.000 claims abstract description 54
- 230000005540 biological transmission Effects 0.000 claims abstract description 9
- 230000008569 process Effects 0.000 claims description 38
- 230000006399 behavior Effects 0.000 claims description 5
- 239000000872 buffer Substances 0.000 description 18
- 239000004065 semiconductor Substances 0.000 description 18
- 238000007726 management method Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 13
- 238000004422 calculation algorithm Methods 0.000 description 12
- 238000013507 mapping Methods 0.000 description 10
- 239000002131 composite material Substances 0.000 description 9
- 230000008859 change Effects 0.000 description 7
- 230000003111 delayed effect Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000012937 correction Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000014759 maintenance of location Effects 0.000 description 4
- 230000005039 memory span Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000000151 deposition Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000009897 systematic effect Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000014616 translation Effects 0.000 description 3
- 238000005299 abrasion Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 101000934888 Homo sapiens Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Proteins 0.000 description 1
- 102100025393 Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Human genes 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- VJTAZCKMHINUKO-UHFFFAOYSA-M chloro(2-methoxyethyl)mercury Chemical compound [Cl-].COCC[Hg+] VJTAZCKMHINUKO-UHFFFAOYSA-M 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000035807 sensation Effects 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/12—Replacement control
-
- 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
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- 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/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- 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/0608—Saving storage space on 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0661—Format or protocol conversion arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/068—Hybrid storage device
-
- 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/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
- G11C16/16—Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- 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
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- 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/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- 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/60—Details of cache 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/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- 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 (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
存储系统,可以包括存储储存器、软件页重新映射内核驱动器(SPRKD)和控制器,存储储存器包括快速存储器部分和慢速存储器部分,SPRKD适用于:截获由操作系统产生的存储器管理命令;至少一个:在执行操作系统存储器管理命令之前,压缩要从快速存储器部分写入到慢速存储器部分的数据,以及在执行操作系统存储器管理命令之前,解压缩要从慢速存储器部分写入到快速存储器部分的数据;以及传输压缩数据以写入慢速存储器部分,或者传输解压缩数据以写入快速存储器部分,控制器适用于在通过SPRKD传输之后执行存储器管理命令,使得数据的压缩或解压缩对操作系统而言透明地执行。
Description
相关申请的交叉引用
本申请要求2016年3月21日提交的第62/311,282号美国临时申请、2016年12月6日提交的第15/370,890号美国非临时申请、2016年1月19日提交的第62/280,430号美国临时申请以及2016年12月6日提交的第15/370,858号美国非临时申请的优先权,其全部内容通过引用合并于本文。
技术领域
本公开的示例性实施例涉及一种存储系统及其操作方法。
背景技术
计算机环境范式已经转变为可以随时随地使用的普适计算系统。由于这个事实,诸如移动电话、数字照相机和笔记本电脑的便携式电子设备的使用已经迅速增加。这些便携式电子设备通常使用具有存储器件的存储系统,即,数据储存设备。数据储存设备用作便携式电子设备的主存储器件或辅助存储器件。
由于它们不具有移动部件,因此使用存储器件的数据储存设备提供良好的稳定性、耐久性、高信息访问速度以及低功耗。具有这些优点的数据储存设备的示例包括通用串行总线(USB)存储器件、具有各种接口的存储卡以及固态驱动器(SSD)。
快速存储器是计算系统中的关键资源,急需提高的存储器容量。存储器压缩被用于增加存储器容量,并且在存储系统、方法、设备和过程中需要改进的存储器压缩。
发明内容
本发明的方面包括存储系统。该存储系统可以包括存储储存器、软件页重新映射内核驱动器(SPRKD)和控制器,存储储存器包括快速存储器部分和慢速存储器部分,SPRKD适用于:截获由操作系统产生的存储器管理命令;至少一个:在执行操作系统存储器管理命令之前,压缩要从快速存储器部分写入到慢速存储器部分的数据,以及在执行操作系统存储器管理命令之前,解压缩要从慢速存储器部分写入到快速存储器部分的数据;以及传输压缩数据以写入慢速存储器部分,或者传输解压缩数据以写入快速存储器部分,控制器适用于在通过SPRKD传输之后执行存储器管理命令,使得数据的压缩或解压缩对操作系统而言透明地执行。
本发明的其他方面包括方法。该方法可以包括:用软件页重新映射内核驱动器(SPRKD)截获由操作系统产生的存储器管理命令;至少一个:在执行操作系统存储器管理命令之前,用SPRKD压缩要从存储储存器的快速存储器部分写入存储储存器的慢速存储器部分的数据,以及在执行操作系统存储器管理命令之前,用SPRKD解压缩要从慢速存储器部分写入到快速存储器部分的数据;以及用SPRKD传输压缩数据以写入慢速存储器部分,或者传输解压缩数据以写入快速存储器部分;以及在通过SPRKD传输之后,用控制器执行存储器管理命令,使得数据的压缩或解压缩对操作系统而言透明地执行。
本发明的额外方面包括存储器件。该存储器件可以包括存储储存器、软件页重新映射内核驱动器(SPRKD)和控制器,存储储存器包括快速存储器部分和慢速存储器部分,SPRKD被配置为:截获由操作系统产生的存储器管理命令;至少一个:在执行操作系统存储器管理命令之前,压缩要从快速存储器部分写入到慢速存储器部分的数据,以及在执行操作系统存储器管理命令之前,解压缩要从慢速存储器部分写入到快速存储器部分的数据;以及传输压缩数据以写入到慢速存储器部分,或者传输解压缩数据以写入到快速存储器部分,控制器被配置为在通过SPRKD传输之后执行存储器管理命令,使得数据的压缩或解压缩对操作系统而言透明地执行。
附图说明
图1是示意性地图示根据本发明的实施例的存储系统的框图。
图2是图示根据本发明的实施例的存储系统的框图。
图3是图示根据本发明的实施例的存储器件的存储块的电路图。
图4是根据本发明的方面的具有用于压缩和解压缩的混合式存储器的示例系统的示图。
图5是根据本发明的方面的具有用于压缩和解压缩的混合式存储器的示例系统的示图。
图6是根据本发明的方面的具有用于压缩和解压缩的混合式存储器的示例系统的示图。
图7是根据本发明的方面的用于页重新映射的示例系统的示图。
图8是根据本发明的方面的用于页重新映射和压缩/解压缩的CPU系统/过程的示图。
图9是根据本发明的方面的用于页重新映射和压缩/解压缩的方法中的步骤的流程图。
具体实施方式
下面将参照附图来更详细地描述各种实施例。然而,本发明可以以不同的形式来实施,而不应当被解释为局限于本文中所阐述的实施例。相反地,提供这些实施例使得本公开将是彻底和完整的,这些实施例将向本领域技术人员充分地传达本发明的范围。贯穿本公开,在本发明的各种附图和实施例中,相同的附图标记指代相同的部件。
本发明可以以多种方式实现,包括作为过程;装置;系统;物质的组成;在计算机可读储存介质上实现的计算机程序产品;和/或处理器,诸如适用于运行储存在耦接到处理器的存储器上和/或由耦接到处理器的存储器提供的指令的处理器。在本说明书中,这些实施方式或本发明可以采取的任何其他形式可以被称为技术。一般而言,所公开的过程的步骤的顺序可以在本发明的范围内改变。除非另有说明,否则被描述为适用于执行任务的组件(诸如处理器或存储器)可以被实现为临时适用于在给定时间执行任务的通用组件或被制造为执行任务的特定组件。如本文所用,术语“处理器”是指适用于处理数据(诸如计算机程序指令)的一个或多个设备、电路和/或处理核。
下面与图示本发明的原理的附图一起来提供对本发明的一个或更多个实施例的详细描述。结合这样的实施例来描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求限制,本发明包括许多替代、修改和等同。在下面的描述中,阐述了大量具体细节以提供对本发明的透彻理解。这些细节被提供是为了示例性的目的,本发明可以在无这些具体细节的一些或全部的情况下根据权利要求来实施。为了清楚的目的,未详细描述与本发明相关的技术领域中公知的技术材料,以免不必要地混淆本发明。
图1是示意性地图示根据本发明的实施例的存储系统10的框图。
参考图1,存储系统10可以包括存储器控制器100和半导体存储器件200。
存储器控制器100可以控制半导体存储器件200的整体操作。
半导体存储器件200可以在存储器控制器100的控制下执行一个或更多个擦除操作、编程操作和读取操作。半导体存储器件200可以通过输入/输出线来接收命令CMD、地址ADDR和数据DATA。半导体存储器件200可以通过电源线来接收电力PWR以及通过控制线来接收控制信号CTRL。控制信号可以包括命令锁存使能(CLE)信号、地址锁存使能(ALE)信号、芯片使能(CE)信号、写入使能(WE)信号、读取使能(RE)信号等。
存储器控制器100和半导体存储器件200可以集成在单个半导体设备中。例如,存储器控制器100和半导体存储器件200可以集成在诸如固态驱动器(SSD)的单个半导体设备中。固态驱动器可以包括用于在其中储存数据的储存设备。当半导体存储系统10用在SSD中时,可以显著地提高耦接到存储系统10的主机(未示出)的操作速度。
存储器控制器100和半导体存储器件200可以集成在诸如存储卡的单个半导体设备中。例如,存储器控制器100和半导体存储器件200可以集成在单个半导体设备中以配置存储卡,诸如个人计算机存储卡国际协会(PCMCIA)的PC卡、紧凑型闪存(CF)卡、智能媒体(SM)卡、记忆棒、多媒体卡(MMC)、缩小尺寸多媒体卡(RS-MMC)、微型尺寸版MMC(MMC微型)、安全数字(SD)卡、迷你安全数字(miniSD)卡、微型安全数字(microSD)卡、安全数字高容量(SDHC)和通用闪存储存器(UFS)。
对于另一个示例,存储系统10可以作为包括诸如以下电子设备的各种元件的一种来提供:计算机、超移动PC(UMPC)、工作站、上网本电脑、个人数字助理(PDA)、便携式计算机、网络平板电脑PC、无线电话、移动电话、智能电话、电子书阅读器、便携式多媒体播放器(PMP)、便携式游戏设备、导航设备、黑盒子、数字照相机、数字多媒体广播(DMB)播放器、三维电视、智能电视、数字音频记录器、数字音频播放器、数字图像记录器、数字图像播放器、数字视频记录器、数字视频播放器、数据中心的储存设备、能够在无线环境中接收和传送信息的设备,家庭网络的电子设备之一、计算机网络的电子设备之一、远程信息处理网络的电子设备之一、射频识别(RFID)设备或计算系统的元件设备。
图2是图示根据本发明的实施例的存储系统的详细框图。例如,图2的存储系统可以描绘图1中所示的存储系统10。
参考图2,存储系统10可以包括存储器控制器100和半导体存储器件200。存储系统10可以响应于来自主机设备的请求而操作,具体地,储存要由主机设备访问的数据。
主机设备可以用各种类型的电子设备中的任意一种来实现。在一些实施例中,主机设备可以包括电子设备,诸如台式计算机、工作站、三维(3D)电视、智能电视、数字音频记录器、数字音频播放器、数字图像记录器、数字图像播放器、数字视频记录器和数字视频播放器。在一些实施例中,主机设备可以包括便携式电子设备,诸如移动电话、智能电话、电子书、MP3播放器、便携式多媒体播放器(PMP)和便携式游戏机。
存储器件200可以储存要由主机设备访问的数据。
存储器件200可以由易失性存储器件或非易失性存储器件来实现,其中易失性存储器件诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM),非易失性存储器件诸如只读存储器(ROM)、掩模ROM(MROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、铁电式随机存取存储器(FRAM)、相变RAM(PRAM)、磁阻式RAM(MRAM)和电阻式RAM(RRAM)。
控制器100可以控制在存储器件200中的数据的储存。例如,控制器100可以响应于来自主机设备的请求而控制存储器件200。控制器100可以将从存储器件200读取的数据提供给主机设备,以及将从主机设备提供的数据储存到存储器件200中。
控制器100可以包括通过总线160耦接的储存单元110、控制单元120、纠错码(ECC)单元130、主机接口140和存储器接口150。
储存单元110可以用作存储系统10和控制器100的工作存储器,以及储存用于驱动存储系统10和控制器100的数据。当控制器100控制存储器件200的操作时,储存单元110可以储存由控制器100和存储器件200使用的数据以用于诸如读取操作、写入操作、编程操作和擦除操作的这些操作。
储存单元110可以由易失性存储器来实现。储存单元110可以由静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)来实现。如上所述,储存单元110可以将由主机设备使用的数据储存在存储器件200中以用于读取操作和写入操作。为了储存数据,储存单元110可以包括程序存储器、数据存储器、写入缓冲器、读取缓冲器、映射缓冲器等。
控制单元120可以响应于来自主机设备的写入请求或读取请求而控制存储系统10的一般操作以及用于存储器件200的写入操作或读取操作。控制单元120可以驱动被称为快闪转换层(FTL)的固件,以控制存储系统10的一般操作。例如,FTL可以执行诸如逻辑到物理(L2P)映射、磨损均衡、垃圾收集和坏块处理的操作。L2P映射被称为逻辑块寻址(LBA)。
ECC单元130可以在读取操作期间检测并校正从存储器件200读取的数据中的错误。当错误比特位的数量大于或等于可校正错误比特位的阈值数量时,ECC单元130可以不校正错误比特位,以及可以输出表示校正错误比特位失败的纠错失败信号。
在一些实施例中,ECC单元130可以基于编码调制来执行纠错操作,其中编码调制诸如低密度奇偶校验(LDPC)码、博斯-乔赫里-霍克文黑姆(Bose-Chaudhuri-Hocquenghem)(BCH)码、turbo码、turbo乘积码(TPC)、里德-所罗门(Reed-Solomon)(RS)码、卷积码、递归系统码(RSC)、网格编码调制(TCM)、块编码调制(BCM)等。ECC单元130可以包括用于纠错操作的所有电路、系统或设备。
主机接口140可以通过各种接口协议中的一种或更多种与主机设备通信,其中接口协议诸如通用串行总线(USB)、多媒体卡(MMC)、外设组件互连高速(PCI-E)、小型计算机系统接口(SCSI)、串行连接SCSI(SAS)、串行高级技术附件(SATA)、并行高级技术附件(PATA)、增强小型磁盘接口(ESDI)和集成驱动器电路(IDE)。
存储器接口150可以提供在控制器100和存储器件200之间的接口,以允许控制器100响应于来自主机设备的请求而控制存储器件200。存储器接口150可以在CPU 120的控制下产生用于存储器件200的控制信号以及处理数据。当存储器件200是诸如NAND快闪存储器的快闪存储器时,存储器接口150可以在CPU 120的控制下产生用于存储器的控制信号以及处理数据。
存储器件200可以包括存储单元阵列210、控制电路220、电压发生电路230、行解码器240、页缓冲器250、列解码器260以及输入/输出电路270。存储单元阵列210可以包括多个存储块211以及可以在其中储存数据。电压发生电路230、行解码器240、页缓冲器250、列解码器260和输入/输出电路270形成用于存储单元阵列210的外围电路。外围电路可以执行存储单元阵列210的编程操作、读取操作或擦除操作。控制电路220可以控制外围电路。
电压发生电路230可以产生具有各种电平的操作电压。例如,在擦除操作中,电压发生电路230可以产生具有各种电平的操作电压,诸如擦除电压和通过电压。
行解码器240可以连接到电压发生电路230和多个存储块211。行解码器240可以响应于由控制电路220产生的行地址RADD而选择多个存储块211之中的至少一个存储块,以及将从电压发生电路230提供的操作电压传送到多个存储块211之中的选中存储块。
页缓冲器250通过位线BL(未示出)连接到存储单元阵列210。页缓冲器250可以响应于由控制电路220所产生的页缓冲器控制信号而对位线BL预充电正电压,在编程操作和读取操作中将数据传送到选中存储块/从选中存储块接收数据,或临时储存传送的数据。
列解码器260可以将数据传送到页缓冲器250/从页缓冲器250接收数据,或将数据传送到输入/输出电路270/从输入/输出电路270接收数据。
输入/输出电路270可以将从外部设备(例如,存储器控制器100)传送的命令和地址传送到控制电路220,将数据从外部设备传送到列解码器260,或者通过输入/输出电路270将数据从列解码器260输出到外部设备。
控制电路220可以响应于命令和地址而控制外围电路。
图3是图示根据本发明的实施例的半导体存储器件的存储块的电路图。例如,图3的存储块可以是图2中所示的存储单元阵列210的存储块211。
参考图3,存储块211可以包括分别耦接到位线BL0到BLm-1的多个单元串221。每列的单元串可以包括一个或更多个漏极选择晶体管DST以及一个或更多个源极选择晶体管SST。多个存储单元或存储单元晶体管可以串联耦接在选择晶体管DST和SST之间。存储单元MC0到MCn-1中的每个可以由在每个单元中储存多比特位的数据信息的多电平单元(MLC)形成。单元串221可以分别电耦接到对应的位线BL0到BLm-1。
在一些实施例中,存储块211可以包括NAND型快闪存储单元。然而,存储块211不限于NAND快闪存储器,而是可以包括NOR型快闪存储器、其中两种或更多种类型的存储单元被组合的混合式快闪存储器、以及其中控制器被嵌入存储芯片内的一体NAND快闪存储器。
DRAM或快速主存储器是计算系统中的关键资源。大数据和内存计算的趋势甚至已经进一步推动扩展/额外的主存储器容量。一个简单的想法是应用主存储器压缩以增加主存储器容量,然而,尽管多年的研究仍然存在许多挑战。
使用压缩以增加储存容量是成熟的,并且已经使用诸如块级压缩、重复数据删除等的技术来广泛展开使用压缩多年,使用压缩已经实现良好的但是可变的压缩比,其仅轻微地增加了数据压缩/解压缩过程和元数据处理等方面的延迟,而未显著地增加系统成本和功耗。由于结果数据块较小来传输和写入以进行储存,因此一些设计可以使用更少的网络(储存带宽)和较小的电力来实现更快的性能。
然而,因为许多问题和挑战,所以在实践中,使用压缩以增加延时严重的主存储器(例如,DRAM)的容量还没有成功地展开。例如,现有的压缩算法在直接应用到主存储器时不能很好地转换,因为它们需要存储器控制器执行非平凡计算以将高速缓存线定位在压缩存储器页内。另外,解压缩取决于访问任何压缩数据的关键路径。复杂的压缩算法(诸如Lempel-Ziv和Huffman编码)通常以大量解压缩延时为代价实现高压缩比,这可以显著地降低性能。
已经提出更简单的算法,诸如具有低解压缩延时和合理高压缩比的FPC(常见模式压缩)或BDI(Base Delta-Immediate)。然而,现今CPU性能已经愈发地被DRAM访问延时所限制,DRAM访问延时已经保持多年几乎不变。因此,由FPC或BDI所引起的延时的增加(甚至1ns或2ns)将对系统性能产生不利影响。
对于压缩算法,其设计存在许多挑战。例如,因为操作系统必须将固定尺寸的虚拟页映射到可变尺寸的物理页,所以主存储器压缩使存储器管理复杂化。另外,现今处理器采用具有来自物理地址的标记的芯片上高速缓存,以避免不同高速缓存线之间的混叠(因为物理地址是唯一的,而虚拟地址不是)。因此,需要根据存储器压缩来修改高速缓存标记逻辑,以使主存储器地址计算脱离延时严重的L1高速缓存访问的关键路径。此外,因为压缩的物理高速缓存线小于它们对应的虚拟高速缓存线,所以与正常的虚拟地址到物理地址转换相反,高速缓存线的物理页偏移常常不同于对应的虚拟页偏移。事实上,在主存储器中的物理页中压缩高速缓存线的位置取决于在相同物理页中在其之前出现的压缩高速缓存线的尺寸。结果,访问主存储器中的压缩页内的高速缓存线需要地址计算的附加层来计算在主存储器中高速缓存线的位置,这会是昂贵的。
因此,压缩过程可以具有负面影响,例如:较长且不确定的延时(且在存储器访问的关键路径上);涉及CPU、高速缓存逻辑、存储器控制器的高的设计复杂性;硬件压缩/解压缩引擎的增加以及诸如OS存储器管理以将固定虚拟页尺寸映射到可变物理页尺寸的其他改变;以及由于附加操作而导致的高功耗。
本文公开了利用混合式存储器子系统(例如,使用慢速存储器和快速存储器)的系统、方法、设备和过程,混合式存储器子系统在慢速存储器(例如,NAND闪存、PCRAM、ReRAM等)中储存压缩数据,而在快速存储器(例如,DRAM)中的数据保持未压缩。在本文中,本领域的技术人员将从本公开理解到:因为慢速存储器和快速存储器两者都可以被划分和/或分割为包括专用于储存压缩数据/未压缩数据的各种部分,所以慢速存储器组件可以不排他性地限于仅储存压缩数据,快速存储器组件可以不排他性地限于仅储存未压缩数据。因此,当OS和/或应用程序(例如,用户空间处理)访问快速存储器(或主存储器、系统存储器等)时,它将很少甚至不引起解压缩延时,很少甚至不引起复杂的高速缓存线偏移计算和元数据处理开销等。
本文所公开的发明实现了一起工作的混合式快速和慢速存储器的使用。例如,具有32GB DRAM和512GB NAND快闪储存器的混合式存储器DIMM将比64GB DRAM或128GB SCM储存器类存储器具有低得多的成本,但是OS将把其看做大于或等于512GB字节可寻址的快速存储器,而且系统可以用大得多的数据组(涉及在多个DIMM配置中数据的多个TB)来有效地运行应用程序。
总体参考图4,示出用于页重新映射的系统40。系统40包括用户空间400和内核空间402,其中用户空间400和内核空间402进行通信。用户空间400包括要求内核空间402的组件来运行的应用程序404。内核空间402包括软件页重新映射内核驱动器406、存储器管理单元(MMU)/转换后备缓冲器(408)、控制器/解码器410、快速存储器412(例如,DRAM、MRAM等)以及慢速存储器414(例如,NAND快闪、PCRAM、ReRAM、非易失性存储器(NVM)等)。下面详细地描述在图4的系统40中所示的组件以及它们的功能。
在图5和图6中描绘了具有混合式存储器子系统的系统50和60。系统50包括快速存储器500和慢速存储器502。如本领域技术人员从本文的描述中所将理解的,出于常规目的而描述系统50,并且可以在各种存储系统、设备、过程和方法中实现系统50。在系统50中,将数据从快速存储器500写入到慢速存储器502可以涉及数据的压缩504。同样在系统50中,将数据从慢速存储器502写入快速存储器500可以涉及数据的解压缩506。
系统60图示透明处理的示例(例如,透明表示不可见或通过OS感知)。系统60包括用于应用程序运行602的用户空间600和内核空间604。用户空间600可以通过或结合快速存储器606与内核空间604通信。OS和应用程序602感知大量增加的存储器容量(例如,大于或等于2倍的慢速存储器608容量加上在快速存储器606中未分配用于重新映射过程的存储器),但是OS/应用程序将几乎一直(在一些实施例中,总是)访问快速存储器606。
系统60也包括定位/配置用于透明处理610的慢速存储器608。或者,当数据从快速存储器606写入慢速存储器608时,其可以涉及数据的压缩612,和/或当数据从慢速存储器608写入快速存储器606时,其可以涉及数据的解压缩614,透明处理610的配置(下面更详细地描述)允许压缩612和解压缩614对OS而言透明地执行(例如,对OS不可见,不被OS感知)。
在本发明的示例中,快速存储器500和606中的数据可以是未压缩的(在一些实施例中,快速存储器500和606中的所有数据可以是未压缩的和/或总是未压缩的),使得CPU、OS和应用程序很少甚至不引起由解压缩、高速缓存线偏移和元数据处理而导致的延时。在慢速存储器502和608中的数据可以被压缩(在一些实施例中,所有数据可以被压缩和/或总是被压缩),以增加有效(感知)容量。
当对页进行写入或执行交换的脏页写回到慢速存储器502和608的“回写”时,数据可以被压缩504/612。在系统60中,压缩过程612和延时可以在该过程期间被隐藏。当将页从慢速存储器502和608交换到快速存储器500和606时,数据可以被解压缩506/614。在系统60中,解压缩过程614和延时可以在该过程期间被隐藏。
这样,在解压缩和/或压缩中,对本文描述的系统60和其他示例(包括系统50,其可以在压缩504过程和解压缩506过程对OS而言可被透明地执行的存储系统中实现),高速缓存线偏移计算和元数据处理开销是“隐藏的”,并且可以在OS/应用程序602访问目标存储器位置之前的页重新映射过程期间被处理。
在一些实施例中,本文所公开的混合式存储器发明利用了软件页重新映射过程,以及通过在页重新映射的页交换过程期间隐藏压缩/解压缩过程,系统实现了OS/应用程序602的透明存储器压缩,同时大量地增加了通过OS和应用程序感知的主存储器容量。
在下面公开的一些实施例中,利用了软件页重新映射方案,其中页重新映射方案对OS/应用程序也是透明的。由于软件页重新映射方案对OS和应用程序是透明的,并且其保证在访问发生之前通过在该页重新映射过程期间隐藏压缩/解压缩过程,目标为慢速存储器的全部(或基本上全部)访问首先将被重新映射(或复制或交换)到快速存储器,所以本发明完全实现了OS和应用程序的透明存储器压缩,其可以大量增加通过OS和应用程序感知的有效存储器容量,但是引发零解压缩延时、高速缓存线偏移计算和元数据处理开销(通常与主存储器压缩系统相关)。
本文所公开的发明可以在被配置用于软件页重新映射的系统中实现,诸如在名称为“MECHANISM ENABLING THE USE OF SLOW MEMORY TO ACHIEVE BYTE ADDRE S SABILITYAND NEAR-DRAM PERFORMANCE WITH PAGE REMAPPING SCHEME(使用慢速存储器来利用页重新映射方案实现字节可寻址性和近DRAM性能的机制)”的第62/280,430号美国临时申请中描述的重映射系统,其内容通过引用合并于本文。
根据本发明的方面,图7中示出了用于页重新映射的示例系统70,示例系统70可以与本文所公开的压缩系统、方法、过程和设备一起利用。本领域技术人员将理解,本发明不限于如下面进一步描述的用于页重新映射的系统内的实施方式。系统70包括快速存储器部分(例如,DRAM等)714、慢速存储器部分(例如,NVM、NAND等)716和虚拟存储器VM 718。
总的物理快速存储器空间714(本文中被称为DRAM,但是如本领域技术人员将理解的并且如上所述的,可以利用其他适合的快速存储器来实现本发明)被示出为“D”。在“D”GB之外,DRAM的“X”GB被映射并且对OS可见。换言之,DRAM的“D-X”GB可以用作重新映射缓冲器。总的物理慢速存储器空间716(本文中被称为NAND和/或NVM,但是如本领域技术人员将理解的并且如上所述的,可以利用其他适合的慢速存储器来实现本发明)是“Y”GB,因此,如通过OS感知的总系统存储器/总物理存储器是“X+Y”GB。虚拟存储器/虚拟地址718空间的量是Z TB。
系统70可以包括用户空间700和内核空间701(例如,在内核空间701的虚线下面的组件/操作)。从用户空间700,OS/应用程序702可以运行。内核空间701包括用于传送OS存储器管理命令704的模块、软件页重新映射内核驱动器(SPRKD)706、MMU/TLB(存储器管理单元(例如,控制器)/转换后备缓冲器)708和/或MEMC/解码器(存储器控制器解码器)710。
在典型的OS环境中,当OS访问(或分配)VA位置“A”时,如果包含“A”的页尚未被映射到系统存储器,则将产生页故障,OS将从储存器(例如,硬盘驱动器或SSD)恢复该页并且复制到系统存储器。然而,如图7中所见,由于OS将总的系统存储器感知为“X+Y”GB,如果所分配的存储器页落入NVM 716地址范围(例如,在“X到X+Y”GB之间),则对该页的后续读取/写入访问可能是缓慢的,这是由于例如:NAND716实质上比DRAM 714慢,该读取/写入访问涉及页(块模式)访问并且不是字节可寻址的,和/或需要调用块模式驱动器以执行块模式访问。
系统70可以被配置为将对慢速存储器716的后续访问重新指向到DRAM 714(至少透明地,或者以对OS不可见或通过OS感知的方式),因此作为快速存储器(例如,诸如快速存储器714)仿效从“X到X+Y”GB的整个NAND 716空间来操作,从而支持随机的、字节可寻址的读取/写入访问。SPRKD 706可以被配置为通过截获OS存储器管理命令704以及执行第二次转换或页重新映射来开始页重新映射。
作为示例,SPRKD 706被配置为截获将虚拟地址VA=“0到Z”TB映射到物理地址PA=“X到X+Y”GB的MM命令704(例如,在慢速存储器空间716中),并且转换VA=“0到Z”TB到PA=“X到D”GB范围的映射,从而对VA=“0到Z”TB的所有访问将被重新指向到在“X到D”之间的DRAM 714重新映射缓冲器空间。
在截获MM命令704之后,SPRKD 706可以被配置为检查重新映射是否需要通过在DRAM 714重新映射缓冲器空间(例如,在“X到D”之间)中寻找空页来执行,并执行以下示例步骤。如果空页是可用的,则SPRKD 706可以执行重新映射,重新映射可以是简单地将NVM716页复制到空DRAM 714重新映射缓冲器页的页复制。如果空页是不可用的,则可以利用逐出算法来选择要逐出的页。例如,如果被选中为逐出的页是干净的,则可以简单地将其丢弃并且可以执行页复制。如果选中的页是脏的,则SPRKD 706可以被配置为在执行重新映射之前将该页回写到对应的NVM 716页。
接下来参考图8,示出了示例CPU和OS操作的示图80。如图8所见,存在其中运行应用程序801的用户空间800和内核空间802。在操作中,所利用的组件可以包括MMU/TLB 804、包括页表项(PTE)806的页表(PT)、软件页重新映射内核驱动器(SPRKD)808、虚拟地址(VA)到物理地址(PA)映射/页故障处理器810、NVM-DRAM重新映射表812、储存器816(其可以包括慢速存储器和快速存储器的总储存器,尽管这些组件在图8中为了便于解释而单独描绘)、慢速存储器/NVM 818以及DRAM/快速存储器826。系统/过程80还可以包括CPU高速缓存命中/未命中检查828。
由于SPRKD 808将把所有访问转换到NAND/NVM 818地址空间,并且通过在814处截获OS MM功能调用/命令而在“X到D”处将其重新映射到DRAM 826重新映射缓冲器空间,所以对慢速存储器空间818的OS访问总是被重新映射(重新指向)到DRAM,使得OS认为它正在访问快速的、字节可寻址的DRAM存储器。
一般而言,SPRKD 808可以被配置为执行两种功能。首先,SPRKD 808截获OS MM功能调用814。当OS需要改变VA(虚拟地址)到PA(物理地址)的映射时,SPRKD 808将首先检查在NVM-DRAM重新映射表812中是否存在页。如果命中,则将使用RT(重新映射表)信息对PTE806和TLB 804执行“RT更新”(重新映射表更新)。如果未命中,则将其视为页故障并且将其传递到OS页故障处理器810。
第二,在正常TLB未命中中,TLB未命中处理器将执行“页走(page walk)”以判断页是否被映射在PT中(命中)或未被映射在PT中(未命中,其将被视为“重新映射故障”),然后传递到SPRKD 808。在SPRKD 808处,对于PT命中,它可以被配置为执行重新映射、更新重新映射表812以及执行TLB更新。在SPRKD 808处,对于PT未命中,它可以被配置为执行与页故障类似的动作以从储存器加载页,执行VA-PA映射、PT更新,对其他处理器执行TLB击落(shootdown),对目标处理器执行TLB更新,然后重试触发TLB未命中的存储器访问。
尽管系统80示出了针对用SPRKD 808的页重新映射的CPU过程的示例,但是在不脱离来自本文所公开内容的本发明的情况下,本领域技术人员将认识到用于实现本发明的其他适合的处理和配置。
如系统/过程80所示,对OS而言透明地执行的页重新映射过程还将压缩操作820包括到其重新映射操作中。进行页重新映射步骤所需的快速存储器826和慢速存储器818之间的操作和传输可以涉及从快速存储器826到慢速存储器818的压缩操作822以及从慢速存储器818到快速存储器826的解压缩操作824。下面详细地描述这些操作。
在本发明的一些实施例中,SPRKD可以在执行将压缩页回写到慢速存储器之前将选中以被首先逐出的页压缩,SPRKD可以解压缩选中以被复制的目标页,然后从慢速存储器复制到快速存储器。
图9是对操作系统而言透明地执行页重新映射和压缩操作的方法/过程中的步骤的流程图90,尽管在之前附图中描述的组件也可以被配置为执行在流程图90中的步骤,但是特别地为了便于描述,将针对图8中的组件来描述图9。
在步骤900处,截获存储器管理命令814。例如,SPRKD 808可以被配置为截获存储器管理命令814。存储器管理命令814可以包括对存储器的命令或访问,其中该命令或访问将VA=“0到Z”映射到NAND部分716的物理地址(PA)=“X到Y”。
在步骤902处,判断是否需要页重新映射。例如,SPRKD 808可以被配置为判断是否需要页重新映射。如果不需要页重新映射(例如,访问是针对已经在DRAM缓冲器空间中的地址,和/或对于存储器管理命令814不需要压缩或解压缩),则SPRKD 808可以默认为OS页故障处理器810可以从储存器816读取页以及执行VA-PA映射。
在步骤904处,如果确定需要页重新映射,则压缩和/或解压缩操作820被配置为在页重新映射过程期间来执行。例如,SPRKD 808可以被配置为在重新映射操作期间初始化/执行压缩和/或解压缩操作820。
在步骤906处,识别来自慢速存储器818的页以复制到快速存储器826。SPRKD 808可以被配置为识别来自慢速存储器818的页以被复制到快速存储器826。
在步骤908处,判断页在快速存储器826中是否可用,使得在步骤906处识别的页可以在空页处被复制(例如,写入)到快速存储器826。作为示例,SPRKD 808可以被配置为判断页在快速存储器826中是否可用。
步骤910-914描述在步骤908处确定(例如,SPRKD 808确定)在快速存储器826中不存在可用页时采取的步骤的示例集合。
在步骤910处,如果在快速存储器826中没有页可用,则从快速存储器中选择页来逐出。如本文中所用,逐出可以指算法(诸如先前通过引用合并入本文的第62/280,430号美国临时申请中描述的那些算法),该算法在快速存储器826中释放一页或多页或另外的空间,使得重新映射/复制/压缩/解压缩等可以执行。如果选中的页不包括需要被写回到慢速存储器818的数据,则该过程可以进行到步骤916。否则,该过程在步骤912-914处继续。
在步骤912处,一旦选择该页,如果选中页包括回写数据(例如,要回写到慢速存储器818的数据),则压缩被选中以逐出的页(例如,页中的数据)。例如,SPRKD 808可以被配置为压缩选中页。由于页先前在快速存储器826中,因此其(可能)以未压缩状态储存,这是因为OS访问快速存储器826,并且这些访问被设计为具有很少甚至没有延时。因此,为了改善慢速存储器818的感知空间,因为页中的数据需要被回写,所以可以在步骤912处发生压缩操作822。由于重新映射操作对OS而言透明地执行,并且由于压缩操作822也在重新映射操作期间执行,因此压缩操作822对OS而言也被透明地执行,从而减少延时并且包括如本文所述的其他益处。
在步骤914处,一旦将被选中以逐出的页/数据压缩(例如,压缩操作822完成),则将压缩的页/数据写回到慢速存储器818。在一些实施例中,SPRKD 808(例如,通过页故障处理器810的方式)被配置为将压缩的选中页回写到慢速存储器818。一旦数据被写回到慢速存储器818,则可以逐出选中页(例如,可以去除该页中的数据,从而释放用于重新映射操作的在快速存储器826中的空间)。
在步骤916处,将被识别以复制的页解压缩。被识别以复制的页可以储存在慢速存储器818上,因此可以以压缩状态来储存。由于优选的是,要被储存在快速存储器826中的数据在未压缩状态下进行处理,所以可以在重新映射过程中在该步骤处进行解压缩操作824。在一个示例中,SPRKD 808被配置为进行/开始解压缩过程824。由于在重新映射过程(如上所述,其对OS而言透明地执行)期间执行解压缩操作824,因此解压缩操作824对OS而言也可以透明地执行。
在步骤918处,将解压缩的页复制到快速存储器826。例如,SPRKD 808可以被配置为开始复制过程/将解压缩的页复制到快速存储器826。由于解压缩已经在重新映射完成之前发生,因此这种复制(其在诸如本文中所述的那些页重新映射方案中是惯常步骤)改进了存储器件的操作。因此,复制(重新映射)页在其被写入快速存储器826时被解压缩。这是有利的,因为其不仅对操作系统透明,而且去除了跟随重新映射的附加步骤。传统上,在完成重新映射之后,不执行解压缩,因此,在页的复制之后,系统必须在页被储存在快速存储器826中时进行页的解压缩。这对OS不是透明的,并且会降低操作的速度。使页重新映射和压缩/解压缩操作以这种方式执行允许透明的重新映射和压缩/解压缩操作,去除了不透明的步骤并且提高了性能。
本文所公开的系统、方法、过程和设备可以应用到不利用上述重新映射页方案的其他混合式或异构存储器子系统,这些作为示例来参考以说明压缩/解压缩过程可以如何以OS和应用程序透明方式来完成,以及延时的部分或全部可以如何被弥补或“隐藏”以实现没有或很少的性能影响。
利用尺寸较小的压缩数据块,本文所公开的系统、方法、过程和设备可以减少磨损并且提高慢速存储器介质的耐久性和寿命。
利用尺寸较小的压缩数据块,可以减少读取/写入时间和存储器带宽,这也可以部分地弥补延时、完全弥补延时或至甚至超出补偿延时,其中延时是在页重新映射/交换/复制过程期间由(隐藏的)压缩/解压缩所引起的。使用本文所述的本发明的存储器压缩可以实现很少甚至没有性能影响,同时享有与存储器压缩相关联的所有其他益处。
如果“慢速存储器”是“远程存储器”,则无论其是位于另一个服务器、另一个数据中心还是“存储器池”服务器等中,以及无论其是NAND、SCM/NVM还是甚至在某种形式的网络或结构上的DRAM,本文所公开的本发明都可以支持它并且可以实质上减少网络带宽、结构带宽和存储器带宽,因为仅在本地快速存储器和慢速远程存储器之间执行页重新映射时才发生访问远程存储器的网络/结构流量,因此对远程存储器的正常OS访问和应用程序访问针对快速本地存储器中的重新映射页,并且较小的压缩页将穿过网络、结构和存储器总线接口,因此相应地减少带宽、延时和电力。
在一个实施例中,当由软件页重新映射过程来实现时,没有对主机CPU、主机存储器控制器或存储器通道接口进行的硬件改变。因此,本文所公开的本发明可以在现有的和未来的JEDEC存储器插座(例如,JEDEC DDR3、DDR4)中工作,在相同通道上与其他现有JEDEC(或非JEDEC)存储器兼容,也可以在全部非JEDEC存储器接口(例如,IBM/OpenPOWER DMI接口等)上工作,以及由于本发明以对OS“透明”的方式来完成,因此与OS级NUMA机制兼容。
本发明通将有效的、感知到的存储器增加典型的2:1或更高的目标压缩比来进一步提高软件页重新映射方案。使用与上面相同的示例,具有物理32GB DRAM+256GB NAND闪存的混合式存储器DIMM现在可以被OS和应用程序感知为大于或等于512GB随机访问的、字节可寻址的快速存储器,同时仍然具有比64GB DRAM或128GB SCM储存器类存储器低得多的成本。因此,本发明使大数据应用程序和内存计算环境的部署很有成本效益。
本文所公开的本发明可以与其他硬件或软件页交换/重新映射方案一起来利用,并且其可以利用页重新映射方案是否是完全OS/应用程序透明的。本发明仍将通过隐藏全部或部分压缩/解压缩开销和相关延时来提供大量的益处,这与解压缩延时开销处在主存储器访问的关键路径中并且负面地影响系统性能的过程完全相反。
尽管具有2:1或更高的良好平均压缩比的低延时算法对于实际实施方式来说是优选的,但是本发明的示例可以采取所有无损压缩算法而不存在限制。诸如基于Lempel-Ziv的算法(LZO、LZ4、LZ77、LZ78)、霍夫曼编码、FPC(常见模式压缩)或BDI(Base-Delta-Immediate压缩)的算法都是本发明的可能选项。
如果OS和SPRKD是应用感知的,则实施例可以支持有损压缩算法。例如,SPRKD可以将无损压缩施加到用于代码或正常应用程序数据的页,并且可以将有损压缩施加到分配作为支持精神视觉无损的显示帧缓冲器的页,但实际上使用有损压缩(例如,VESA显示流压缩(DSC)v1.1等)。
本文所公开的本发明支持硬件压缩/解压缩方法或软件压缩/解压缩方法,硬件加速器可以具有更低的延时和更高的性能。不需要对CPU、高速缓存标记逻辑或主机存储器控制器进行改变以添加元数据高速缓存等。
本文所公开的本发明允许高度灵活的实施方式以将软件或硬件页重新映射/交换/复制机制与软件压缩方法或硬件压缩方法耦接。因此,其范围从零硬件成本到适度成本,以添加用于高性能实施方式的压缩硬件和相关的DMA逻辑。
虽然为了清楚理解的目的,已经相当详细地描述了前述实施例,但是本发明不限于所提供的细节。存在实现本发明的许多可供选择的方式。所公开的实施例是说明性的而非限制性的。
Claims (18)
1.一种存储系统,包括:
存储储存器,包括快速存储器部分和慢速存储器部分;
软件页重新映射内核驱动器SPRKD,适用于:
截获由操作系统产生的存储器管理命令;
至少一个:
在执行操作系统存储器管理命令之前,压缩要从快速存储器部分写入到慢速存储器部分的数据;以及
在执行操作系统存储器管理命令之前,解压缩要从慢速存储器部分写入到快速存储器部分的数据;以及
传输压缩数据以写入慢速存储器部分,或者传输解压缩数据以写入快速存储器部分;以及
控制器,适用于:在通过SPRKD传输之后执行存储器管理命令,使得数据的压缩或解压缩对操作系统而言透明地执行。
2.如权利要求1所述的存储系统,其中,SPRKD还适用于:在页重新映射过程期间执行压缩或解压缩。
3.如权利要求1所述的存储系统,其中,SPRKD还适用于通过以下步骤来进行解压缩:
识别来自慢速存储器的页以复制到快速存储器;
判断在快速存储器中是否有页可用;以及
解压缩被识别以复制的页。
4.如权利要求3所述的存储系统,其中,当SPRKD确定在快速存储器中没有页可用时,SPRKD适用于从快速存储器中选择页以逐出。
5.如权利要求1所述的存储系统,其中,SPRKD还适用于通过以下步骤来进行压缩:
选择要从快速存储器逐出的包括回写数据的页;以及
压缩选中页的回写数据。
6.如权利要求5所述的存储系统,其中,SPRKD还适用于:将压缩的页回写到慢速存储器。
7.一种方法,包括:
用软件页重新映射内核驱动器SPRKD截获由操作系统产生的存储器管理命令;
至少一个:
在执行操作系统存储器管理命令之前,用SPRKD压缩要从存储储存器的快速存储器部分写入存储储存器的慢速存储器部分的数据;以及
在执行操作系统存储器管理命令之前,用SPRKD解压缩要从慢速存储器部分写入到快速存储器部分的数据;以及
用SPRKD传输压缩数据以写入慢速存储器部分,或者传输解压缩数据以写入快速存储器部分;以及
在通过SPRKD传输之后,用控制器执行存储器管理命令,使得数据的压缩或解压缩对操作系统而言透明地执行。
8.如权利要求7所述的方法,还包括:在页重新映射过程期间,执行压缩步骤或解压缩步骤。
9.如权利要求7所述的方法,其中,解压缩步骤还包括:
用SPRKD识别来自慢速存储器的页以复制到快速存储器;
用SPRKD判断在快速存储器中是否有页可用;以及
用SPRKD解压缩被识别以复制的页。
10.如权利要求10所述的方法,其中,当确定快速存储器中没有页可用时,所述方法还包括:用SPRKD从快速存储器中选择页以逐出。
11.如权利要求7所述的方法,其中,压缩步骤还包括:
用SPRKD选择要从快速存储器逐出的包括回写数据的页;以及
用SPRKD压缩选中页的回写数据。
12.如权利要求11所述的方法,还包括:将压缩的页回写到慢速存储器。
13.一种存储器件,包括:
存储储存器,包括快速存储器部分和慢速存储器部分;
软件页重新映射内核驱动器SPRKD,被配置为:
截获由操作系统产生的存储器管理命令;
至少一个:
在执行操作系统存储器管理命令之前,压缩要从快速存储器部分写入到慢速存储器部分的数据;以及
在执行操作系统存储器管理命令之前,解压缩要从慢速存储器部分写入到快速存储器部分的数据;以及
传输压缩数据以写入到慢速存储器部分,或者传输解压缩数据以写入到快速存储器部分;以及
控制器,被配置为在通过SPRKD传输之后执行存储器管理命令,使得数据的压缩或解压缩对操作系统而言透明地执行。
14.如权利要求13所述的存储器件,其中,SPRKD还被配置为在页重新映射过程期间执行压缩或解压缩。
15.如权利要求13所述的存储器件,其中,SPRKD还被配置为通过以下步骤来解压缩:
识别来自慢速存储器的页以复制到快速存储器;
判断在快速存储器中是否有页可用;以及
解压缩被识别以复制的页。
16.如权利要求15所述的存储器件,其中,当SPRKD确定快速存储器中没有页可用时,SPRKD被配置为从快速存储器中选择页以逐出。
17.如权利要求13所述的存储器件,其中,SPRKD还被配置为通过以下步骤来压缩:
选择要从快速存储器逐出的包括回写数据的页;以及
压缩选中页的回写数据。
18.如权利要求17所述的存储器件,其中,SPRKD还被配置为将压缩的页回写到慢速存储器。
Applications Claiming Priority (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662280430P | 2016-01-19 | 2016-01-19 | |
US62/280,430 | 2016-01-19 | ||
US201662311282P | 2016-03-21 | 2016-03-21 | |
US62/311,282 | 2016-03-21 | ||
US15/370,890 US20170206172A1 (en) | 2016-01-19 | 2016-12-06 | Tehcniques with os- and application- transparent memory compression |
US15/370,858 | 2016-12-06 | ||
US15/370,858 US20170206033A1 (en) | 2016-01-19 | 2016-12-06 | Mechanism enabling the use of slow memory to achieve byte addressability and near-dram performance with page remapping scheme |
US15/370,890 | 2016-12-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106990911A true CN106990911A (zh) | 2017-07-28 |
Family
ID=59315169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710035160.3A Pending CN106990911A (zh) | 2016-01-19 | 2017-01-18 | Os和应用程序的透明存储器压缩技术 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20170206172A1 (zh) |
KR (1) | KR20170087044A (zh) |
CN (1) | CN106990911A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108255740A (zh) * | 2017-12-07 | 2018-07-06 | 深圳市中易通安全芯科技有限公司 | 一种flash均衡擦写方法及系统 |
CN109753463A (zh) * | 2017-11-08 | 2019-05-14 | 爱思开海力士有限公司 | 控制器及其操作方法和存储系统及其操作方法 |
CN110458277A (zh) * | 2019-04-17 | 2019-11-15 | 上海酷芯微电子有限公司 | 适用于深度学习硬件加速器的可配置精度的卷积硬件结构 |
CN110618786A (zh) * | 2018-06-20 | 2019-12-27 | 爱思开海力士有限公司 | 存储器系统及存储器系统的操作方法 |
CN113448503A (zh) * | 2020-03-24 | 2021-09-28 | 爱思开海力士有限公司 | 调整顺序命令的操作时间差的存储器系统及其操作方法 |
CN114356213A (zh) * | 2021-11-29 | 2022-04-15 | 重庆邮电大学 | 一种numa架构下nvm磨损均衡的并行空间管理方法 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10437798B2 (en) | 2016-07-19 | 2019-10-08 | Sap Se | Full system simulator and memory-aware splay tree for in-memory databases in hybrid memory systems |
US10452539B2 (en) * | 2016-07-19 | 2019-10-22 | Sap Se | Simulator for enterprise-scale simulations on hybrid main memory systems |
US10783146B2 (en) | 2016-07-19 | 2020-09-22 | Sap Se | Join operations in hybrid main memory systems |
US11977484B2 (en) | 2016-07-19 | 2024-05-07 | Sap Se | Adapting in-memory database in hybrid memory systems and operating system interface |
US10387127B2 (en) | 2016-07-19 | 2019-08-20 | Sap Se | Detecting sequential access data and random access data for placement on hybrid main memory for in-memory databases |
US10698732B2 (en) | 2016-07-19 | 2020-06-30 | Sap Se | Page ranking in operating system virtual pages in hybrid memory systems |
US10474557B2 (en) | 2016-07-19 | 2019-11-12 | Sap Se | Source code profiling for line-level latency and energy consumption estimation |
US10540098B2 (en) | 2016-07-19 | 2020-01-21 | Sap Se | Workload-aware page management for in-memory databases in hybrid main memory systems |
US10061698B2 (en) | 2017-01-31 | 2018-08-28 | Qualcomm Incorporated | Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compression memory system when stalled write operations occur |
US11010379B2 (en) | 2017-08-15 | 2021-05-18 | Sap Se | Increasing performance of in-memory databases using re-ordered query execution plans |
CN107622781B (zh) * | 2017-10-12 | 2020-05-19 | 华中科技大学 | 一种提升三层忆阻器写性能的编解码方法 |
US11048413B2 (en) * | 2019-06-12 | 2021-06-29 | Samsung Electronics Co., Ltd. | Method for reducing read ports and accelerating decompression in memory systems |
US11868273B2 (en) * | 2019-06-29 | 2024-01-09 | Intel Corporation | Memory protection with hidden inline metadata to indicate data type |
US11221770B2 (en) | 2019-12-03 | 2022-01-11 | International Business Machines Corporation | Providing a dynamic random-access memory cache as second type memory |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6564305B1 (en) * | 2000-09-20 | 2003-05-13 | Hewlett-Packard Development Company Lp | Compressing memory management in a device |
US20050172082A1 (en) * | 2004-01-30 | 2005-08-04 | Wei Liu | Data-aware cache state machine |
US20100293420A1 (en) * | 2009-05-15 | 2010-11-18 | Sanjiv Kapil | Cache coherent support for flash in a memory hierarchy |
CN103810669A (zh) * | 2012-10-26 | 2014-05-21 | 辉达公司 | 在统一l2高速缓存中高速缓存经适应性定制大小的高速缓存像素块 |
CN104094239A (zh) * | 2012-01-29 | 2014-10-08 | 汤姆逊许可公司 | 有限随机存取存储器/闪存设备架构的闪存压缩指令缓存方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5696926A (en) * | 1993-07-30 | 1997-12-09 | Apple Computer, Inc. | Method and apparatus for transparently compressing data in a primary storage device |
US6968424B1 (en) * | 2002-08-07 | 2005-11-22 | Nvidia Corporation | Method and system for transparent compressed memory paging in a computer system |
-
2016
- 2016-12-06 US US15/370,890 patent/US20170206172A1/en not_active Abandoned
-
2017
- 2017-01-18 CN CN201710035160.3A patent/CN106990911A/zh active Pending
- 2017-01-18 KR KR1020170008817A patent/KR20170087044A/ko unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6564305B1 (en) * | 2000-09-20 | 2003-05-13 | Hewlett-Packard Development Company Lp | Compressing memory management in a device |
US20050172082A1 (en) * | 2004-01-30 | 2005-08-04 | Wei Liu | Data-aware cache state machine |
US20100293420A1 (en) * | 2009-05-15 | 2010-11-18 | Sanjiv Kapil | Cache coherent support for flash in a memory hierarchy |
CN104094239A (zh) * | 2012-01-29 | 2014-10-08 | 汤姆逊许可公司 | 有限随机存取存储器/闪存设备架构的闪存压缩指令缓存方法 |
CN103810669A (zh) * | 2012-10-26 | 2014-05-21 | 辉达公司 | 在统一l2高速缓存中高速缓存经适应性定制大小的高速缓存像素块 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109753463A (zh) * | 2017-11-08 | 2019-05-14 | 爱思开海力士有限公司 | 控制器及其操作方法和存储系统及其操作方法 |
CN109753463B (zh) * | 2017-11-08 | 2022-06-17 | 爱思开海力士有限公司 | 控制器及其操作方法和存储系统及其操作方法 |
CN108255740A (zh) * | 2017-12-07 | 2018-07-06 | 深圳市中易通安全芯科技有限公司 | 一种flash均衡擦写方法及系统 |
CN110618786A (zh) * | 2018-06-20 | 2019-12-27 | 爱思开海力士有限公司 | 存储器系统及存储器系统的操作方法 |
CN110458277A (zh) * | 2019-04-17 | 2019-11-15 | 上海酷芯微电子有限公司 | 适用于深度学习硬件加速器的可配置精度的卷积硬件结构 |
CN110458277B (zh) * | 2019-04-17 | 2021-11-16 | 上海酷芯微电子有限公司 | 适用于深度学习硬件加速器的可配置精度的卷积硬件结构 |
CN113448503A (zh) * | 2020-03-24 | 2021-09-28 | 爱思开海力士有限公司 | 调整顺序命令的操作时间差的存储器系统及其操作方法 |
CN113448503B (zh) * | 2020-03-24 | 2024-03-29 | 爱思开海力士有限公司 | 调整顺序命令的操作时间差的存储器系统及其操作方法 |
CN114356213A (zh) * | 2021-11-29 | 2022-04-15 | 重庆邮电大学 | 一种numa架构下nvm磨损均衡的并行空间管理方法 |
Also Published As
Publication number | Publication date |
---|---|
US20170206172A1 (en) | 2017-07-20 |
KR20170087044A (ko) | 2017-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106990911A (zh) | Os和应用程序的透明存储器压缩技术 | |
US10884947B2 (en) | Methods and memory systems for address mapping | |
CN107229577B (zh) | 存储系统及其操作方法 | |
US9195583B2 (en) | Methods of managing meta data in a memory system and memory systems using the same | |
JP6053078B2 (ja) | 物理ページ、論理ページ、およびコードワードの対応 | |
CN107239228B (zh) | 提高重建效率的存储器系统和操作方法 | |
JP5649742B2 (ja) | トランザクションログの復元 | |
TWI459399B (zh) | 電力中斷管理 | |
US20170206033A1 (en) | Mechanism enabling the use of slow memory to achieve byte addressability and near-dram performance with page remapping scheme | |
CN111164574A (zh) | 基于存储设备内部地址的冗余编码条带 | |
CN107643985A (zh) | 存储器系统及其操作方法 | |
CN106095699B (zh) | 用于快闪存储器的可扩展spor算法 | |
US10565124B2 (en) | Memory system and method for controlling nonvolatile memory | |
CN109284202A (zh) | 控制器及其操作方法 | |
CN109656472A (zh) | 存储器系统及其操作方法 | |
US10459803B2 (en) | Method for management tables recovery | |
CN108268212A (zh) | 控制器及操作方法 | |
CN110442529A (zh) | 可配置的存储器系统及配置和使用该存储器系统的方法 | |
KR102406449B1 (ko) | 스토리지 장치 및 그 동작 방법 | |
CN113590502B (zh) | 一种非挥发性记忆体存储设备的垃圾回收方法与垃圾回收系统 | |
CN113590503B (zh) | 一种非挥发性记忆体存储器的垃圾回收方法与垃圾回收系统 | |
KR102578191B1 (ko) | 리커버리 성능이 최적화된 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템 | |
US11422889B2 (en) | Memory system and controller for storing map data of volatile memory into nonvolatile memory device during power off operation | |
US11281381B2 (en) | Storage node of distributed storage system and method of operating the same | |
CN108986864A (zh) | 控制器和存储器系统以及存储器系统的操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170728 |