CN106537327B - 快闪存储器压缩 - Google Patents
快闪存储器压缩 Download PDFInfo
- Publication number
- CN106537327B CN106537327B CN201580011308.9A CN201580011308A CN106537327B CN 106537327 B CN106537327 B CN 106537327B CN 201580011308 A CN201580011308 A CN 201580011308A CN 106537327 B CN106537327 B CN 106537327B
- Authority
- CN
- China
- Prior art keywords
- header
- data block
- lba
- logical gate
- memory controller
- 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
Classifications
-
- 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/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- 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
-
- 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/1028—Power efficiency
-
- 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/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control 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/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- 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
Abstract
本发明揭示用于从例如SSD装置的非易失性存储装置读取经压缩数据的系统和方法。数据的例如页的逻辑部分包含多个数据块,所述多个数据块经压缩使得其长度是不同的。所述页的标头部分存储所述数据块的标头并且存储每个数据块的长度。所述标头部分可以是根据错误校正方案编码所述标头的码字。为了读出数据块,硬件解码器请求读取所述页并且将所述标头部分传送到硬件解码器中,所述硬件解码器解码所述标头以获得期望数据块的偏移。在不指令读取所述页的情况下,所述硬件解码器使用所述偏移以请求传送所述期望数据块,所述期望数据块接着被解码并且传回到请求装置。
Description
背景技术
本发明涉及用于存取快闪存储器系统中的经压缩数据的系统。
固态驱动器,也称为SSD,是利用“与非”快闪存储器装置以作为存储元件的数据存储装置。通常此类装置具有SSD控制器,其在一端上接受主机命令,并且在另一端上向“与非”快闪通信。“与非”快闪是这样一种类型的非易失性存储装置,它在断电时会保持数据。SSD控制器通过“与非”接口存取“与非”快闪装置。“与非”装置具有有限数目的写入/编程循环。对于“与非”快闪中的数据写入操作包含两个阶段。数据传送阶段和存储器编程阶段。类似地,数据读取分解为两个阶段。第一存储器读取阶段和第二数据传送阶段。相比于数据的读出时间,存储器读取阶段为控制器引入很大的延迟(~60μs)。
“与非”快闪裸片的物理层级分解为平面、块和页。“与非”快闪裸片可以含有多个平面,每个平面划分成块,并且每个块含有N个页。典型的“与非”将具有2个平面,~4K个块以及每个块256个页。
容易显而易见的是,页是读取和写入操作的最小存储器单元,即编程或读取操作是对页执行的。典型的“与非”页大小是~4千字节、~8千字节和~16千字节。页面大小可以稍微大于4千字节、8千字节或16千字节以容纳ECC奇偶校验数据。典型的“与非”接口数据速率可以是200MBps到400MBps。对于读取,存储器读取时间将为~60μs并且数据传出对于~16KB数据将为~40μs,对于8KB数据将为~20μs,并且对于4KB将为~10μs。
逻辑块寻址(LBA)是用于指定存储于计算机存储装置上的数据块的位置的常见方案,所述计算机存储装置总体上是例如硬盘驱动器和SSD的系统(参照例如http:// en.wikipedia.org/wiki/Computer_storage)。
典型的主机LBA粒度是512字节并且在SSD感知主机中是4KB。SSD控制器可以选择根据4千字节操作并且管理512字节的主机LBA数目与4千字节控制器LBA数目之间的映射。系统中的每个LBA需要映射成独特数据单元。这个数据单元的大小限定物理地址指针有多大。因此,LBA指针的大小将随裸片数目、块的数目、页的数目和数据单元的大小根据页中的数据单元大小而变。
举例来说,在一个实例配置中,SSD如下配置:
系统中的裸片数目:128个裸片=2^7
每个裸片的块的数目:4K+块=2^13
每个块的页的数目:256页=2^8
LBA数据单元大小:~4KB
16KB页中的4KB LBA的数目:4
物理装置容量:128*4K(+)*256*16KB+=2^43
逻辑装置容量:128*4K*256*16KB=2^41=2TB
装置中的LBA位置的数目:2TB/4KB=2^29
指向物理位置的LBA表的一个条目中的总位=7(对于裸片)+13(对于块)+8(对于页)+2(对于4个LBA)=30位
存储物理LBA位置的总LBA表大小=30位*2^29个条目=1.875千兆字节。
对于每个固件管理模式,LBA条目通常舍入成字节粒度。因此,对于每个LBA条目使用4个字节并且总LBA表大小变成4B*2^29个条目=2千兆字节。在这种情况下,4KB的主机数据作为4KB数据和奇偶校验位经编码和映射到“与非”快闪中。
本文中所揭示的设备和方法提供了用于在“与非”快闪SSD或其它非易失性存储装置中存储数据的改进的设备和方法。所揭示的设备和方法既增加了可以存储于SSD中的数据量,又减小了用于存取SSD的LBA表的大小。
附图说明
为了使得将容易理解本发明的优点,将参照附图中所图示的具体实施例呈现对上文简述的本发明的更具体的描述。在理解这些图式仅描绘本发明的典型实施例且因此不应认为其限制本发明的范围的情况下,将通过使用附图来以额外特殊性及细节来描述并解释本发明,在附图中:
图1是适合于实施根据本发明的实施例的方法的计算系统的示意性框图;
图2是根据现有技术的存储系统的组件的示意性框图;
图3A至3D说明数据存储模式,包含根据本发明的实施例的存储模式;
图4是根据本发明的实施例的硬件解码器的示意性框图;
图5是根据本发明的实施例的用于读取经压缩数据的方法的过程流程图;
图6是根据本发明的实施例的数据读取的时间线;
图7是根据本发明的实施例的用于读取经压缩数据的方法的过程流程图;以及
图8是根据本发明的实施例的用于垃圾收集的方法的过程流程图。
具体实施方式
将容易理解,本文中通过图中的实例总体描述和图示的本发明的组件可以用多种多样的不同配置来布置和设计。因此,图中表示的本发明的实施例和实例的以下更详细描述并不意图限制所要求的本发明的范围,而是仅表示根据本发明的当前设想的实施例的某些实例。参照图式将最好地理解当前所描述的实施例,其中通篇中用相同数字标示相同部分。
已响应于技术现状并且具体来说响应于本领域中通过当前可用的设备和方法尚未完全解决的问题和需要研发了本发明。因此,已研发本发明以提供用于在快闪存储器中存储和存取经压缩数据的设备和方法。
根据本发明的实施例可以具体实施为设备、方法或计算机程序产品。因此,本发明可以采用全部硬件的实施例、全部软件的实施例(包含固件、驻留软件、微码等)或者组合的在本文中可以全部总体上称为“模块”或“系统”的软件方面与硬件方面的实施例的形式。此外,本发明可以采用具体实施在任何有形表达媒体中的计算机程序产品的形式,所述有形表达媒体具有具体实施于媒体中的计算机可用程序代码。
可以利用一或多个计算机可用或计算机可读媒体的任何组合。举例来说,计算机可读媒体可以包含便携式计算机磁盘、硬盘、随机存取存储器(RAM)装置、只读存储器(ROM)装置、可擦除可编程只读存储器(EPROM或快闪存储器)装置、便携式只读光盘(CDROM)、光学存储装置和磁性存储装置中的一或多个。在所选的实施例中,计算机可读媒体可包括任何非暂时性媒体,其可以容纳、存储、传送、传播或传送供指令执行系统、设备或装置使用或者配合指令执行系统、设备或装置使用的程序。
用于执行本发明的操作的计算机程序代码可以用一或多种编程语言的任何组合编写,包含面向对象的编程语言,例如Java、Smalltalk、C++等等,以及常规程序编程语言,例如“C”编程语言或类似的编程语言。程序代码可以作为单独软件包完全在计算机系统上执行、在单独的硬件单元上执行、部分地在与计算机间隔开一段距离的远程计算机上执行、或完全在远程计算机或服务器上执行。在后一种场景中,远程计算机可以通过任何类型的网络(包含局域网(LAN)或广域网(WAN))连接到计算机,或者可以对外部计算机进行连接(举例来说,使用因特网服务提供商通过因特网)。
下文参看根据本发明的实施例的方法、设备(系统)和计算机程序产品的流程图示例和/或框图描述本发明。应理解,流程图示例和/或框图的每个框,以及流程图示例和/或框图中的框的组合,可以通过计算机程序指令或代码实施。可以将这些计算机程序指令提供到通用计算机、专用计算机或其它可编程数据处理设备的处理器以产生机器,使得经由计算机或其它可编程数据处理设备的处理器执行的指令创建用于实施在流程图和/或框图框中指定的功能/动作的装置。
这些计算机程序指令还可存储于非暂时性计算机可读媒体中,所述非暂时性计算机可读媒体可以指导计算机或其它可编程数据处理设备用特定方式运转,使得存储于计算机可读媒体中的指令产生包含实施在流程图和/或框图框中指定的功能/动作的指令装置的制品。
计算机程序指令也可以加载到计算机或其它可编程数据处理设备上以引起一系列操作步骤在所述计算机或其它可编程设备上执行以产生计算机实施过程,使得在所述计算机或其它可编程设备上执行的指令提供用于实施在流程图和/或框图框中指定的功能/动作的过程。
图1是说明实例计算装置100的框图。计算装置100可以用于执行各种程序,例如本文中论述的那些程序。计算装置100可以充当服务器、客户端或任何其它计算实体。计算装置可以执行本文中论述的各种监视功能,并且可以执行一或多个应用程序,例如本文所述的应用程序。计算装置100可以是多种多样的计算装置中的任一种,例如桌上型计算机、笔记本计算机、服务器计算机、手持型计算机、平板计算机等等。
计算装置100包含一或多个处理器102、一或多个存储器装置104、一或多个接口106、一或多个大容量存储装置108、一或多个输入/输出(I/O)装置110、和显示装置130,其全部耦合到总线112。处理器102包含执行存储于存储器装置104和/或大容量存储装置108中的指令的一或多个处理器或控制器。处理器102还可包含各种类型的计算机可读媒体,例如高速缓冲存储器。
存储器装置104包含各种计算机可读媒体,例如易失性存储器(例如随机存取存储器(RAM)114)和/或非易失性存储器(例如只读存储器(ROM)116)。存储器装置104还可包含可重写ROM,例如快闪存储器。
大容量存储装置108包含各种计算机可读媒体,例如磁带、磁盘、光盘、固态存储器(例如快闪存储器)等。如图1中所示,特定大容量存储装置是硬盘驱动器124。大容量存储装置108中还可包含各种驱动器以使得能够从各种计算机可读媒体读取和/或写入到各种计算机可读媒体。大容量存储装置108包含可装卸媒体126和/或不可装卸媒体。
I/O装置110包含各种允许向计算装置100输入数据和/或其它信息或从计算装置100检索数据和/或其它信息的装置。实例I/O装置110包含光标控制装置、键盘、小键盘、麦克风、监视器或其它显示装置、扬声器、打印机、网络接口卡、调制解调器、镜头、CCD或其它图像俘获装置等等。
显示装置130包含任何类型的能够向计算装置100的一或多个用户显示信息的装置。显示装置130的实例包含监视器、显示终端、视频投影装置等等。
接口106包含允许计算装置100与其它系统、装置或计算环境交互的各种接口。实例接口106包含许多种不同网络接口120,例如局域网(LAN)、广域网(WAN)、无线网络和因特网接口。其它接口包含用户接口118和外围装置接口122。接口106还可包含一或多个用户接口元件118。接口106还可包含一或多个外围接口,例如用于打印机、指向装置(鼠标、轨迹垫等)、键盘的接口等等。
总线112允许处理器102、存储器装置104、接口106、大容量存储装置108和I/O装置110以及耦合到总线112的其它装置或组件彼此通信。总线112表示几种类型的总线结构中的一或多者,例如系统总线、PCI总线、IEEE 1394总线、USB总线等。
出于说明的目的,本文中将程序和其它可执行程序组件展示为离散块,但是应理解,这些程序和组件可以在各种时间驻留在计算装置100的不同存储组件中,并且通过处理器102执行。替代地,本文所述的系统和程序可以在硬件或硬件、软件和/或固件的组合中实施。举例来说,一或多个专用集成电路(ASIC)可以经编程以执行本文所述的系统和程序中的一或多者。
参看图2,在一些实施例中,包含SSD 200的系统200可以包含多个“与非”快闪存储器装置202。一或多个“与非”装置202可以与“与非”接口204介接,“与非”接口204与SSD控制器206交互。SSD控制器206可以从实施在主机装置(例如包含计算装置100的属性中的一些或全部的装置)上或对于所述主机装置实施的主机接口208接收读取和写入指令。主机接口208可以是数据总线、存储器控制器或计算装置的输入/输出系统的其它组件。
本文中所揭示的系统和方法可以通过插置在主机接口208和“与非”接口204之间的SSD控制器206实施。在其它实施例中,“与非”接口204可以实施其中所揭示的功能性中的一些或全部。在另外其它实施例中,额外组件可以插置在常规“与非”接口204和SSD控制器206之间,以便实施本文中所揭示的功能的全部或部分。
本文中所揭示的系统和方法有利地用于“与非”快闪存储器202内存储的数据的压缩,同时还减少映射和存取经压缩数据所必需的数据,所述经压缩数据例如是存储于“与非”快闪存储器、SSD控制器、主机计算装置的RAM或一些其它存储器装置中的LBA表。
本文中作为下面的实例提供示范性使用情况
情况1:原始数据压缩方法
压缩的一个固有优点是其增加了总逻辑系统容量并且降低了读取和写入操作期间的总功耗。具体来说,相比于未经压缩数据,相同数目的主机LBA可以占据更少空间。因此,对于相同的物理空间,可以存储在“与非”内部的LBA(即数据)数目增加。如果最大压缩率是50%,则可以为相同容量指派至多两倍的数据(和LBA)。在以上实例中,假设所有LBA都具有这个压缩率,这意味着可以在一个16KB物理页中存储8个压缩LBA而不是4个未经压缩的LBA。压缩率限定写入到页中的数据的长度。
如果不同LBA数据具有不同压缩率(这对于压缩算法是典型的),则这些压缩LBA数据的最终长度是不同的。现在粒度不是4KB,而是取决于最小单位并且每个压缩LBA数据大小是可变的。在一些实施例中,它可以是1字节粒度以恰好偏移到经编码码字数据的开头,或者是1KB,如果假设1KB是最小单位的话(这一点不同于本文所述的其它情况)。这会直接暗示LBA指针的大小。现在不是需要2位指示位置,而是需要保存15位以在16KB+(=2^15字节)的页中精确定点LBA数据的确切开头,或在1KB粒度的情况下需要5位。这样不但会使LBA映射表所需的物理空间增加50%(如下面的计算中所示),而且使得LBA指针大于32位(未对准)(LBA表需要更多几个位用于固件管理)。这在SRAM空间方面和LBA查表方面对于系统是巨大的开销,因为32位上的任何存取需要多次读取和管理重叠数据。
因为可以向每个LBA指派单独的码字,所以这需要为LBA表中的LBA中的每一个提供开始位置。因为压缩LBA长度可能是可变的,所以每个LBA的开始位置可能必须具体到一个字节或2个字节的程度,即,对于16KB+页,偏移值可以在0~2^15的范围内,并且指向页内的地址指针将是15位。假设至多25%的压缩率,每4KB的用户数据可以压缩到1KB加码字位。在极端的情况下,所有LBA经过25%的压缩,并且每个16KB+的页可以含有16个LBA。因此,表征情况1的模式的值如下:
逻辑装置容量:128*4K*256*16KB=2^41=2TB
装置中的LBA位置的数目:2TB/4KB=2^29个条目
考虑跨越16KB+页长度的可变偏移的LBA表的一个条目中的总位=7(对于裸片)+13(对于块)+8(对于页)+15(跨越16KB+页大小的可变LBA偏移)=每个条目43位
存储物理LBA位置的总LBA表大小=43位*2^29个条目=2.6875千兆字节
当将每个条目舍入到字节边界时的总LBA表大小,每个条目6个字节=6个字节*2^29=3千兆字节。
对于情况1,可以如下执行LBA的经压缩数据的存取:
1)固件(例如主机装置的固件)读出LBA表条目连同对于LBA偏移分配的N位(例如43)。
2)对于整个LBA码字的“与非”读出。
3)解码码字。
4)为了主机传送或比如垃圾收集之类的内部操作获得的LBA用户数据。
情况1的原始方法的问题是LBA表大小很大。处理这个问题的一种方法将是将每个LBA的指针保存到“与非”页本身而不是LBA表中。这种方法在下文更详细地论述(情况3、4和5)。如果使用标头存储指针信息,则这将需要读出标头信息以获得物理页中的LBA开始位置或LBA偏移。这个标头信息还需要用与用户数据相同的校正能力编码。这种方法可以用两种方式进行以检索LBA数据。第一种方式是首先读取标头以获得指针信息,并且在第二读取中读出LBA数据。以此方式,必需从“与非”(见下面的情况3)的两个读取。第二种方式是在一个读取中一起读取标头和LBA数据两者,并且稍后定位LBA数据。这种第二方法会引发从“与非”的冗余数据读出,因为在找到指针信息之前无法确定LBA数据的位置(见下面的情况4)。
情况2:“与非”装置中的LBA指针存储
另一方法是在码字中编码指针信息连同用户数据。在这种情况下,读出指针信息将涉及读出含有用户数据的整个码字,将其解码,接着找到LBA数据的指针信息。在这种方法中,LBA表必须存储每个LBA的码字位置和码字数目以便读出指针信息和LBA数据。对于至多25%的压缩率,16KB+物理页中的LBA的数目将在从4LBA直到16LBA的范围内。LBA表中的分配给码字识别的位数目将取决于经编码码字的大小。对于2KB码字,16KB物理页中的码字总数将是8并且将需要LBA表中的3位。码字大小越大,每个码字将含有的LBA越多。因为压缩LBA可以越过多个码字,例如4KB数据可以越过三个2KB码字。因而需要3位再加2位(即5位)以指向经编码码字中的LBA内容。
参看图3A,在常规方法中,页包含多个LBA A-D,其各自具有相同宽度。对于指针存储于LBA表中的原始压缩方法(情况1),页可以包含多个LBA A-D,其具有可变长度,如图3B中所示。由于LBA A-D具有可变长度,所以可以在相同码字中编码LBA A-D中的多个。举例来说,由于LBA A较小,所以可以在单个码字中编码压缩LBA A和LBA B,用于错误校正的目的。例如,可以在单个码字CWAB中编码LBA A和LBA B,单个码字CWAB可以被解码以获得LBA A和LBA B两者。
参看图3C,情况2可以存储每个LBA A-D与对应的标头HA-HD。每个LBA A-D和其对应的标头HA-HD可以在单个码字CWA-CWD中编码。
对于情况2的存储方案,表征值如下:
逻辑装置容量:128*4K*256*16KB=2^41=2TB
装置中的LBA位置的数目:2TB/4KB=2^29个条目
考虑跨越16KB+页长度的可变偏移的LBA表的一个条目中的总位=7(对于裸片)+13(对于块)+8(对于页)+5(2KB码字偏移和2KB码字内的多达4KB的数据偏移。)=每个条目33位
存储物理LBA位置的总LBA表大小=33位*2^29条目=2.0625千兆字节
将每个条目舍入到字节,每个条目5字节=5字节*2^29=2.5千兆字节。
对于情况2,可以如下执行LBA的经压缩数据的存取:
1)固件读出LBA表条目连同对于码字分配的N位,其中N是码字中的位数目。
2)对于整个码字的“与非”读出(~60μs的“与非”快闪读取时间加~10μs的数据传送时间)。
3)解码码字。
4)获得指向LBA开头的指针信息。
5)使用这个位置的数据作为LBA用户数据以用于主机传送目的或用于比如垃圾收集之类的内部操作。
情况2的不足之处是读出的数据多于必需的数据,即,如果码字含有8个LBA,则要读出1个LBA包括还读出其余的7个LBA。这样会消耗传送功率和“与非”传送时间。而且,需要对8个LBA+标头信息执行解码,因而会消耗额外的解码器功率(比必需的功率多了7倍)。并且,解码8个LBA而不是1个LBA会花费额外时间,因而影响到性能。使用这种方法(情况2),LBA表大小增加25%,并且读出LBA会引发整个码字的额外读出和标头信息的后处理计算以获得LBA偏移。
情况3:在单独的码字中单独存储指针
在另一个实例中,每个LBA编码为独立的码字,并且在“与非”内部作为单独的码字保存指针信息。举例来说,如图3D中所示,对应于LBA A-D的标头HA-HD存储于与LBA A-D自身不同的单独的一个或多个码字中。举例来说,HA和HB可以编码在码字CWH1中,而码字CWH2编码标头HC和HD。LBA A-D分别编码到一或多个码字CWA-CWD中。至于本文中所揭示的其它实施例,可以在单个码字中表示多个LBA A-D。举例来说,LBA A和LBA B可以表示为相同码字CWA。替代地,每个LBA A-D可以由其自身的码字CWA-CWD表示。
对于情况3,从特定LBA读取数据可以如下继续:
1)固件读出不含对特定的LBA数据的指针的LBA表条目。
2)发布“与非”读取和读出标头码字(~60μs存储器读取时间+数据传送时间)。
2)解码标头码字。
3)对经过解码的标头码字进行后处理以获得指向LBA开头的指针信息。
4)再次发布页读取,从而引发另一~60μs“与非”读取时间+数据传送时间。
5)解码LBA数据。
6)使用这个位置的数据作为LBA用户数据以用于主机传送目的或用于比如垃圾收集之类的内部操作。
情况4:读出标头和LBA两者,以及后续的数据提取
在另一方法中,如图3D中所示存储的数据可以如下存取:
1)发布“与非”页读取并且读出整个页内容(~60μs存储器读取时间+数据传送时间)。
2)解码整个页内容,包含标头指针码字,对经过解码的标头码字进行后处理以获得指向LBA开头的指针信息。
3)使用指针信息从经过解码的页内容获得LBA数据。
4)使用这个位置的数据作为LBA用户数据以用于主机传送目的或用于比如垃圾收集之类的内部操作。
情况5:对于单个页读取实施单独的标头和LBA数据传送的硬件解码器
下文描述的情况5的方法弥补了前述方法的不足。具体来说,情况5可以有利地是:
1)从LBA表中移除LBA偏移位。LBA表仅仅需要含有达到物理页等级的LBA的位置,而不是页内部的偏移;
2)将必需读出和解码的数据减少成所请求的LBA加标头部分,因而节省传送时间和传送功率;
3)仅仅需要对特定的LBA和标头部分执行解码,因而节省解码功率,这包含解码器引擎功率和dram存取功率;
4)实现高性能,而且不需要固件进行后处理和分解标头和数据,因为这是由硬件解码器执行的;以及
5)在垃圾收集或系统数据回收过程期间不需要重新编码LBA。
参看图4,所图示的系统可并入到SSD控制器206或“与非”接口204中,以便根据本文中所揭示的系统和方法提供对经压缩数据的存取。硬件解码器404可以插置在读出引擎402与主机接口410之间。读出引擎402可以可操作以响应来自硬件解码器404的页读取,并且,作为响应,从“与非”快闪存储器202检索所请求的页,并将其存储在内部缓冲器中。读出引擎402可以进一步可操作以通过从内部缓冲器读取传送指令所参考的数据并且将数据提供到硬件解码器而响应来自所述硬件解码器的传送指令。
硬件解码器404可以包含标头解码器模块406、LBA偏移计算模块408和LBA/标头末尾检测模块410。标头解码器模块406可操作以解码标头码字。偏移计算模块408可经配置以计算每个LBA码字的偏移并且确定由硬件解码器404从主机接口412接收的读取指令中所请求的特定LBA的偏移。LBA/标头末尾检测模块410使用由标头确定的偏移来确定所请求的LBA的页内的实际偏移。这可以包含确定标头部分的末尾以便获得基本偏移。接着可将由标头确定的偏移加到这个基本偏移以便获得所请求的LBA的页内的偏移。
硬件解码器404可经配置以自动发布针对所请求的LBA所确定的偏移下的LBA的适当LBA读出。在其中通过硬件执行这整个操作的一些实施例中,不需要主机装置的固件对数据进行后处理。而且,当硬件解码器404解码标头并且计算偏移时,使用相同页读取操作来读出标头码字和LBA数据码字两者,从而不再需要第二页读取操作。下文更详细地描述页中的标头和数据的格式以及操作序列。
参看图5,可以使用系统400相对于来自主机装置的读取指令执行所图示的方法500,所述读取指令参考“与非”快闪存储装置内的页的LBA。读出引擎402作为响应在对于LBA的请求中接收标头数据传送,并且从“与非”快闪接收页数据502。如上所述,读出引擎402可以执行页读取请求,其从“与非”快闪装置请求页数据502,并且将其存储在内部缓冲器中。读出引擎402可以将标头数据506提供到标头解码器模块406。可以响应于来自硬件解码器404的数据传送指令提供标头数据506。标头解码器模块406解码标头数据以获得解码标头510。LBA偏移计算模块408使用解码标头510确定相对于其执行方法500的读取指令中所参考的特定LBA的偏移514。LBA/标头末尾检测模块410使用偏移514确定所请求的LBA开始处的页内的偏移。举例来说,可以将偏移514加到被发现是存储于页中的数据的标头部分的末尾的基地址。LBA/标头末尾检测模块410可使用偏移514确定所请求的LBA的页内的偏移。可以将参考这个偏移的请求518提交给读出引擎402,读出引擎402接着输出LBA数据520,即所请求的LBA的LBA码字。
可以使用图4的系统和图5的方法读取数据,其将每个LBA编码成独立码字,如图3D中所示。这意味着每个码字的大小可以根据经压缩数据结果而可变。在一个例子中,对于25%的压缩,具有4KB的未经压缩大小的每个码字可以在从1KB(25%的原始数据)到4KB(100%的原始数据)的范围内。如上文相对于图3D所述将物理页内部的所有LBA的标头(例如32KB页)在物理页内部分组,并且编码到标头码字中。每个标头对应于存储于其中存储标头的页中的LBA中的一个。每个标头可以包含其参考的LBA的识别符,其参考的LBA的长度和固件数据。
响应于来自主机接口的读取请求并且在指令读出引擎将页读取到其内部缓冲器中之后,硬件引擎可以首先读出标头码字并且解码这些标头码字。解码可以与来自“与非”快闪的其余的数据传送并行发生。在解码这些码字和获得标头之后,偏移模块408在标头内积聚长度以产生经编码LBA码字的偏移值(即开始位置的指针)。举例来说,LBA N的开始地址/偏移将是Header_codeword_size*Number_of_Header码字+长度(LBA M)。硬件解码器404可以将来自固件(例如主机接口)的所请求的LBA与解码标头内容匹配以去掉LBA偏移,因为标头含有压缩LBA数据流中的每一个的长度。
一旦获得LBA偏移,硬件解码器404就可以发布数据传送命令以读出LBA码字,LBA码字接着被发送到解码器,例如硬件解码器。当硬件解码器执行识别和读出物理页中的LBA码字时,它不需要重新发布页读取,因而实现了从单个页读取存储器存取(~55μs)读取标头和LBA两者。
标头码字可以足够小,并且相比于读出和解码LBA码字,标头码字的读出和解码花费的时间量较短。因此,相比于简单地基于LBA表中的偏移读出未经压缩LBA码字性能影响极小。在大多数情况下,性能实际上更好,因为相比于未经压缩的数据,压缩使得要处理的数据量减少。举例来说,图6说明根据情况5的方法的读取操作的时间线。如图所示,用于页读取的大约60μs的第一延迟602之后是大约1.5μs的将标头数据传送到硬件解码器404的延迟604。解码标头可能会引入大约2μs的延迟606。在延迟606期间,硬件解码器404或读出引擎202可能会阻挡对裸片的页读取。具体来说,延迟606可能会占用“与非”闲置循环。接着可传送所请求的LBA码字,从而导致取决于LBA码字的长度的延迟608(对于1KB的~2.5μs到对于4KB的~10μs)。可以解码LBA码字,从而导致大约2μs的延迟610。
图7说明用于处理读取命令的方法700。方法700可以由硬件解码器404结合读出引擎402执行。方法700前面可以是从主机接口或者例如垃圾收集之类的某个其它内部过程接收的从“与非”快闪装置读取特定LBA的指令,所述指令参考找到LBA的页并且识别要读取页的哪个LBA。
所述方法700可以包含针对来自主机接口的读取指令中参考的页发布702对“与非”快闪装置的页读取。作为响应,读出引擎402可以从存储页数据的“与非”快闪装置(例如适当的“与非”裸片)读取所述页的页数据,并且在缓冲器中存储页数据。
所述方法700可以包含从页数据读取704一或多个标头码字,并且解码706标头码字以获得标头。接着可分析标头以获得708LBA中的一些或全部的偏移信息。举例来说,如果读取指令中参考了LBA N,则可以将LBA 0至N-1的长度求和以获得LBA N的偏移。替代地,可以执行递归方法,借此计算LBA N-1的偏移,接着将其与LBA N-1的长度求和以获得LBA N的偏移。可以用相同的方式基于LBA N-1的偏移及其长度获得LBA N-1的偏移,以此类推,直到LBA 0的偏移(是0)或标头部分的最后一个位。
一旦获得偏移,方法700就可以包含读取710所述偏移地址处的LBA。举例来说,在请求LBA N的情况下,可以评估对应的标头以确定LBA N的码字的长度L。接着可传送在步骤708中确定的LBA N的偏移之后的L位。
接着可解码712在步骤708处传送的LBA码字并且可以将LBA的用户数据传回714到主机接口或其它请求组件或过程。解码712可以包含解压缩LBA,或者可以在将压缩LBA提供到主机接口或发布读取指令的其它请求实体之后解压缩LBA,或者可以通过某个其它干预实体或过程解压缩LBA。
表征情况5的方法的值如下:
逻辑装置容量:128*4K*256*16KB=2^41=2TB
装置中的LBA位置的数目:2TB/4KB=2^29个条目
考虑跨越16KB+页长度的可变偏移的LBA表的一个条目中的总位=7(对于裸片)+13(对于块)+8(对于页)+0(标头含有LBA码字偏移信息)=每个条目28位
存储物理LBA位置的总LBA表大小=28位*2^29条目=1.75千兆字节
将每个条目舍入到字节,每个条目4个字节=4字节*2^29=2千兆字节
相比其它方法(情况1-4)显而易见的是,情况5的方法即使与未经压缩的数据相比每个条目也有更多的空闲位。下面的表1示出了情况5相比于其它三种情况的减少的位要求。这样使得硬件存储器资源直接节省并且降低了管理LBA表条目的复杂度。具体来说,要将每个LBA写入到页,可以创建或者维持LBA表中的对应的条目,其不存储每个LBA的长度或每个LBA的页内偏移。
表1:LBA大小和表条目比较
参看图8,图3D中所示的压缩LBA的存储方案可以使得能够对LBA进行简单并且高效的垃圾收集或碎片整理。举例来说,硬件解码器404、读出引擎402或其它组件可以执行所图示的方法800。举例来说,方法800可以包含从页中读取802有效LBA的码字,并且省去读取无效LBA。无效LBA可以是已经被擦除并且不再表示有待存储的数据的LBA。方法800接着可包含重写804仅仅包含有效LBA的页并且省去无效LBA。图3D的存储模式的优点是可以在垃圾收集过程期间读取和重写有效码字的LBA,无需在垃圾收集过程期间解码和重新编码有效码字的LBA或者解压缩和压缩有效码字的LBA。
方法800可进一步包含更新806页的标头部分,这是方法800的主题。具体来说,可以将对应于有效LBA中的每一个的标头编码到一或多个标头码字中,并且还将其写入到页。标头可以包含上文方法中指出的信息,包含例如LBA识别符和长度之类的信息。
本文中所揭示的系统和方法提供用于智能标头和检索以使得能够将经压缩数据存储到“与非”快闪装置中的硬件技术。解码标头、获得“与非”页中的LBA位置和执行LBA码字的自动读出的硬件自动技术提供了在系统中真实利用压缩的独特优点。这些方法的组合得到系统以及主机操作的电力节省和性能增益。
在不脱离本发明精神或基本特征的情况下,可以其它特定形式实施本发明。所描述的实施例应视为在所有方面均仅为说明性而非限制性的。具体来说,虽然是相对于“与非”快闪SSD描述所述方法,但是例如硬盘驱动器之类的其它SSD装置或非易失性存储装置也可得益于本文中所揭示的方法。因此,本发明的范围由所附权利要求书而不是由前述描述指示。在权利要求书等效物的含义和范围内的所有变化均涵盖在权利要求书的范围内。
Claims (20)
1.一种用于压缩的方法,所述方法包括:
压缩多个数据块以产生多个经压缩块(520);
产生多个标头(506),每个标头包含所述多个经压缩块(520)中的一个经压缩块的经压缩长度;
将所述多个标头写入到非易失性存储器装置的逻辑部分(806),其中所述多个标头中的数个标头被表示为标头码字;
将所述多个经压缩块写入到所述逻辑部分(804);
解码所述标头码字;以及
在所述解码之后,使用从所述标头码字所解码的所述经压缩长度中的至少一者来确定与所述多个经压缩块中的至少一者相关联的偏移;以及
基于所确定的所述偏移并且独立于解码所述多个块中的所有块而解码所述多个经压缩块中的所述至少一者。
2.根据权利要求1所述的方法,其进一步包括更新使所述多个数据块(520)的逻辑识别符与所述经压缩块的物理位置相关的表,所述表仅仅参考所述非易失性存储器装置(202)中的所述逻辑部分的物理位置,而并不存储所述经压缩块的长度或从所述逻辑部分的所述物理位置的偏移。
3.根据权利要求1所述的方法,其中将所述多个标头写入到所述非易失性存储器装置(202)的逻辑部分包括:
产生所述多个标头中的数个标头的所述标头码字(506)表示,所述标头码字包含一或多个错误校正位。
4.根据权利要求1所述的方法,其中写入到所述逻辑部分的所述多个经压缩块(520)中的所有经压缩块的标头在所述逻辑部分中的单个连续部分中。
5.根据权利要求4所述的方法,其中所述单个连续部分的位置比所述多个经压缩块更接近所述逻辑部分的开始地址。
6.根据权利要求1到4中任一权利要求所述的方法,其中将所述多个经压缩块写入到所述非易失性存储器装置(202)包括产生表示所述多个经压缩块中的数个经压缩块的至少一个码字,所述至少一个码字包含一或多个错误校正位。
7.根据权利要求1到4中任一权利要求所述的方法,其中所述多个标头(506)各自包含所述多个经压缩块中的所述经压缩块中的一者的识别符。
8.根据权利要求1到4中任一权利要求所述的方法,其中将所述多个标头(506)和多个经压缩块写入到所述逻辑部分包括相对于所述非易失性存储器装置(202)执行快闪存储器编程操作,所述非易失性存储器是快闪存储器装置。
9.一种用于读取经压缩数据的方法,所述方法包括:
通过存储器控制器装置(206)从主机装置接收读取请求,所述读取请求参考存储装置的逻辑部分和存储于所述逻辑部分中的第一数据块;
通过所述存储器控制器装置检索存储于所述逻辑部分中的标头部分,所述标头部分包含多个标头,每个标头包含存储于所述逻辑部分中的多个经压缩数据块的识别符和长度,所述多个经压缩数据块包含表示所述第一数据块的第一经压缩数据块;
解码对应于所述第一经压缩数据块的所述多个标头中的至少一者;
通过所述存储器控制器装置确定所述第一经压缩数据块的所述逻辑部分内的从所解码的所述标头的偏移(514);
在所述解码之后,通过所述存储器控制器装置从所述存储装置内的偏移位置检索所述第一经压缩数据块;
基于所确定的所述偏移并且独立于解码所述多个经压缩数据块而解压缩所述第一经压缩数据块以获得所述第一数据块;以及
将所述第一数据块传回到所述主机装置。
10.根据权利要求9所述的方法,其中确定所述偏移包括将所述多个标头中的在对应于所述第一经压缩数据块的标头之前的标头中包含的长度求和。
11.根据权利要求9所述的方法,其中确定所述偏移进一步包括
确定所述多个标头的末尾位置;
添加所述多个标头中的在对应于所述第一经压缩数据块的所述标头之前的所述标头中包含的长度的总和。
12.根据权利要求9到11中任一权利要求所述的方法,其中通过所述存储器控制器装置(206)检索所述标头部分包括:
通过所述存储器控制器装置发布对所述存储装置的页读取,所述存储装置是快闪“与非”存储器装置;
通过所述存储装置将所述逻辑部分读取到缓冲器中;
通过所述存储器控制器装置发布所述标头部分到所述存储装置的第一传送请求;
通过所述存储器控制器装置接收所述标头部分。
13.根据权利要求12所述的方法,其中通过所述存储器装置控制器(206)检索所述第一经压缩数据块包括:
通过所述存储器控制器发布对于所述第一经压缩数据块的第二传送请求,所述第二传送请求在发布对所述存储装置的所述页读取之后发射,所述存储装置无需执行任何干预页读取。
14.一种设备,其包括:
主机计算装置,其包含一或多个处理器(102);
存储装置(108),其包含非易失性存储媒体;以及
存储器控制器装置(206),其可操作地耦合到所述主机计算装置和所述存储装置,所述存储器控制器装置经配置以:
从所述主机计算装置接收参考第一数据块的读取请求;
指令所述存储装置将所述存储媒体的逻辑部分读取到内部缓冲器中;
指令所述存储装置将所述逻辑部分的标头部分传送到所述存储器控制器装置,所述标头部分包含多个标头,每个标头包含存储于所述逻辑部分中的多个数据块中的一个数据块的识别符和长度;
评估所述标头部分以确定在所述第一数据块之前的所述多个数据块的一部分的长度的总和;
在评估所述标头部分之后,指令所述存储装置使用所述总和传送所述多个数据块;
基于所确定的所述长度的总和独立于解码所述多个块中的所有块而解码所述第一数据块;以及
将所述第一数据块传回到所述主机计算装置。
15.根据权利要求14所述的设备,其中所述存储器控制器装置(206)经配置以通过如下操作评估所述标头部分:
解码所述标头部分以提取所述多个标头;
确定所述标头部分的末尾;以及
将所述长度总和添加到所述标头部分的所述末尾以确定对应于所述第一数据块的偏移。
16.根据权利要求14所述的设备,其中所述存储器控制器装置(206)经配置以在指令所述存储装置将所述存储媒体的所述逻辑部分读取到所述内部缓冲器中之后并且在指令所述存储装置使用所述总和传送所述第一数据块之前,防止执行将所述逻辑部分后续读取到所述内部缓冲器中。
17.根据权利要求14到16中任一权利要求所述的设备,其中所述存储器控制器(206)经配置以在将所述第一数据块传回到所述主机计算装置之前解码所述第一数据块。
18.根据权利要求17所述的设备,其中所述存储器控制器装置(206)经配置以在将所述第一数据块传回到所述主机计算装置之前解压缩所述第一数据块。
19.根据权利要求17所述的设备,其中所述存储器控制器(206)经配置以:
从所述存储装置读取所述多个数据块中的有效数据块,而并不解码或解压缩所述有效数据块,并且不读取所述多个数据块中的无效数据块;
产生所述有效数据块的更新的标头部分;以及
将所述标头部分和有效数据块写入到所述逻辑部分。
20.根据权利要求14到16中任一权利要求所述的设备,其中所述存储装置是“与非”快闪装置(202)。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/173,586 | 2014-02-05 | ||
US14/173,586 US9927998B2 (en) | 2014-02-05 | 2014-02-05 | Flash memory compression |
PCT/US2015/014320 WO2015119974A1 (en) | 2014-02-05 | 2015-02-03 | Flash memory compression |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106537327A CN106537327A (zh) | 2017-03-22 |
CN106537327B true CN106537327B (zh) | 2019-06-04 |
Family
ID=53754855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580011308.9A Active CN106537327B (zh) | 2014-02-05 | 2015-02-03 | 快闪存储器压缩 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9927998B2 (zh) |
EP (1) | EP3103009B1 (zh) |
JP (1) | JP6316974B2 (zh) |
KR (1) | KR101824612B1 (zh) |
CN (1) | CN106537327B (zh) |
TW (1) | TWI648622B (zh) |
WO (1) | WO2015119974A1 (zh) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9965191B2 (en) * | 2014-10-28 | 2018-05-08 | Samsung Electronics Co., Ltd. | Electronic system with message mechanism and method of operation thereof |
US9710199B2 (en) | 2014-11-07 | 2017-07-18 | International Business Machines Corporation | Non-volatile memory data storage with low read amplification |
US10162700B2 (en) * | 2014-12-23 | 2018-12-25 | International Business Machines Corporation | Workload-adaptive data packing algorithm |
US20170068458A1 (en) * | 2015-09-03 | 2017-03-09 | Qualcomm Incorporated | Hardware-accelerated storage compression |
US10613756B2 (en) | 2015-09-03 | 2020-04-07 | Qualcomm Incorporated | Hardware-accelerated storage compression |
US9712190B2 (en) | 2015-09-24 | 2017-07-18 | International Business Machines Corporation | Data packing for compression-enabled storage systems |
US9870285B2 (en) | 2015-11-18 | 2018-01-16 | International Business Machines Corporation | Selectively de-straddling data pages in non-volatile memory |
KR20180040769A (ko) | 2016-10-12 | 2018-04-23 | 삼성전자주식회사 | 저장 장치 및 그것의 동작 방법 |
US10027984B2 (en) | 2016-11-30 | 2018-07-17 | Hewlett Packard Enterprise Development Lp | Methods and systems for efficiently reading a data block from a data seglet with compressed data blocks |
US10282127B2 (en) | 2017-04-20 | 2019-05-07 | Western Digital Technologies, Inc. | Managing data in a storage system |
US10705970B1 (en) | 2017-05-12 | 2020-07-07 | Seagate Technology Llc | Enhanced address compaction |
US10140215B1 (en) | 2017-05-26 | 2018-11-27 | Seagate Technology Llc | Low overhead mapping for highly sequential data |
US10809928B2 (en) | 2017-06-02 | 2020-10-20 | Western Digital Technologies, Inc. | Efficient data deduplication leveraging sequential chunks or auxiliary databases |
US10496335B2 (en) | 2017-06-30 | 2019-12-03 | Intel Corporation | Method and apparatus for performing multi-object transformations on a storage device |
US10503608B2 (en) | 2017-07-24 | 2019-12-10 | Western Digital Technologies, Inc. | Efficient management of reference blocks used in data deduplication |
US20190065088A1 (en) * | 2017-08-30 | 2019-02-28 | Micron Technology, Inc. | Random access memory power savings |
JP2019053415A (ja) * | 2017-09-13 | 2019-04-04 | 東芝メモリ株式会社 | メモリシステム、その制御方法及びプログラム |
JP7074453B2 (ja) * | 2017-10-30 | 2022-05-24 | キオクシア株式会社 | メモリシステムおよび制御方法 |
WO2019205036A1 (zh) * | 2018-04-25 | 2019-10-31 | 深圳市大疆创新科技有限公司 | 数据处理方法和装置 |
US10635599B2 (en) | 2018-07-26 | 2020-04-28 | Sandisk Technologies Llc | Memory controller assisted address mapping |
GB2579399B (en) * | 2018-11-30 | 2020-12-16 | Imagination Tech Ltd | Data compression and storage |
US11221776B2 (en) * | 2019-12-30 | 2022-01-11 | Micron Technology, Inc. | Metadata indication for a memory device |
GB2603459B (en) * | 2021-01-22 | 2023-05-10 | Advanced Risc Mach Ltd | Data processing systems |
US11861195B2 (en) * | 2021-03-15 | 2024-01-02 | Western Digital Technologies, Inc. | TLC data programming with hybrid parity |
US11934706B2 (en) | 2021-12-22 | 2024-03-19 | Western Digital Technologies, Inc. | Smart relocation scan optimization |
KR102557557B1 (ko) | 2023-04-19 | 2023-07-24 | 메티스엑스 주식회사 | 전자 장치 및 이를 포함하는 컴퓨팅 시스템 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6243081B1 (en) * | 1998-07-31 | 2001-06-05 | Hewlett-Packard Company | Data structure for efficient retrieval of compressed texture data from a memory system |
CN103339618A (zh) * | 2011-02-02 | 2013-10-02 | 美光科技公司 | 用于存取面向块的非易失性存储器的控制布置和方法 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5757295A (en) * | 1995-12-28 | 1998-05-26 | Philips Electronics North America Corporation | Variable length decoder with enhanced throughput due to parallel processing of contiguous code words of identical type |
US7113432B2 (en) * | 2000-09-14 | 2006-09-26 | Sandisk Corporation | Compressed event counting technique and application to a flash memory system |
US7139864B2 (en) * | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
EP2094015A4 (en) * | 2006-12-11 | 2011-09-28 | Panasonic Corp | MOVABLE PICTURE DECODER, SEMICONDUCTOR DEVICE, VIDEO DEVICE, AND MOBILE PICTURE DECODING PROCESS |
US8364929B2 (en) | 2009-10-23 | 2013-01-29 | Seagate Technology Llc | Enabling spanning for a storage device |
US8533564B2 (en) * | 2009-12-23 | 2013-09-10 | Sandisk Technologies Inc. | System and method of error correction of control data at a memory device |
US9582431B2 (en) | 2010-03-22 | 2017-02-28 | Seagate Technology Llc | Storage address space to NVM address, span, and length mapping/converting |
US8694703B2 (en) * | 2010-06-09 | 2014-04-08 | Brocade Communications Systems, Inc. | Hardware-accelerated lossless data compression |
US8995534B2 (en) * | 2010-09-20 | 2015-03-31 | Bevara Technologies, Llc | Systems and methods for encoding and decoding |
KR101636785B1 (ko) | 2010-12-01 | 2016-07-06 | 엘에스아이 코포레이션 | 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리 |
JP2014150593A (ja) | 2011-06-06 | 2014-08-21 | Panasonic Corp | 車両用電源システム |
TWI467590B (zh) * | 2011-07-11 | 2015-01-01 | Phison Electronics Corp | 資料處理方法、記憶體控制器及記憶體儲存裝置 |
JP5687639B2 (ja) | 2012-02-08 | 2015-03-18 | 株式会社東芝 | コントローラ、データ記憶装置及びプログラム |
US20130343131A1 (en) * | 2012-06-26 | 2013-12-26 | Lsi Corporation | Fast tracking for flash channels |
US8898376B2 (en) | 2012-06-04 | 2014-11-25 | Fusion-Io, Inc. | Apparatus, system, and method for grouping data stored on an array of solid-state storage elements |
US9148172B2 (en) | 2012-06-22 | 2015-09-29 | Micron Technology, Inc. | Data compression and management |
US9495288B2 (en) * | 2013-01-22 | 2016-11-15 | Seagate Technology Llc | Variable-size flash translation layer |
WO2014141411A1 (ja) * | 2013-03-13 | 2014-09-18 | 株式会社日立製作所 | ストレージシステムおよびストレージシステム制御方法 |
JP5978259B2 (ja) | 2013-08-16 | 2016-08-24 | エルエスアイ コーポレーション | 順次読み出し最適化可変サイズフラッシュトランスレーションレイヤ |
US9514057B2 (en) * | 2013-12-04 | 2016-12-06 | Sandisk Technologies Llc | Storage module and method for managing logical-to-physical address mapping |
-
2014
- 2014-02-05 US US14/173,586 patent/US9927998B2/en active Active
-
2015
- 2015-02-03 EP EP15746233.4A patent/EP3103009B1/en active Active
- 2015-02-03 WO PCT/US2015/014320 patent/WO2015119974A1/en active Application Filing
- 2015-02-03 CN CN201580011308.9A patent/CN106537327B/zh active Active
- 2015-02-03 JP JP2016550793A patent/JP6316974B2/ja active Active
- 2015-02-03 KR KR1020167024056A patent/KR101824612B1/ko active IP Right Grant
- 2015-02-05 TW TW104103867A patent/TWI648622B/zh active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6243081B1 (en) * | 1998-07-31 | 2001-06-05 | Hewlett-Packard Company | Data structure for efficient retrieval of compressed texture data from a memory system |
CN103339618A (zh) * | 2011-02-02 | 2013-10-02 | 美光科技公司 | 用于存取面向块的非易失性存储器的控制布置和方法 |
Also Published As
Publication number | Publication date |
---|---|
TWI648622B (zh) | 2019-01-21 |
EP3103009A4 (en) | 2017-10-04 |
KR101824612B1 (ko) | 2018-02-07 |
WO2015119974A1 (en) | 2015-08-13 |
US9927998B2 (en) | 2018-03-27 |
EP3103009B1 (en) | 2019-09-11 |
JP6316974B2 (ja) | 2018-04-25 |
US20150220277A1 (en) | 2015-08-06 |
TW201539187A (zh) | 2015-10-16 |
JP2017511521A (ja) | 2017-04-20 |
CN106537327A (zh) | 2017-03-22 |
EP3103009A1 (en) | 2016-12-14 |
KR20170002369A (ko) | 2017-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106537327B (zh) | 快闪存储器压缩 | |
US8560926B2 (en) | Data writing method, memory controller and memory storage apparatus | |
CN110832590A (zh) | 在基于相变存储器的存储设备中减轻写入放大的方法和系统 | |
US11520698B2 (en) | Data storage device in a key-value storage architecture with data compression, and non-volatile memory control method | |
KR20190052366A (ko) | 컨트롤러 및 컨트롤러의 동작방법 | |
JP2022551011A (ja) | データを格納するための方法および装置、並びにそれらのコンピュータデバイスおよび記憶媒体 | |
JP6820060B2 (ja) | ストレージ装置、ストレージ装置の制御方法及びプログラム | |
WO2015176664A1 (zh) | 一种数据操作的方法、设备和系统 | |
CN107548491B (zh) | 用于管理存储器的设备和方法以及存储介质 | |
CN115756312A (zh) | 数据访问系统、数据访问方法和存储介质 | |
JP2020154603A (ja) | メモリシステム | |
TWI634421B (zh) | 用以存取資料之電子裝置及其資料存取方法 | |
KR20210039171A (ko) | 메모리 시스템을 포함하는 데이터 처리 시스템에서 동작 정보를 송수신하는 방법 및 장치 | |
US9921909B2 (en) | Systems and methods for providing error code detection using non-power-of-two flash cell mapping | |
US20170010937A1 (en) | System and method for improved data maintenance in a flash drive | |
US11327929B2 (en) | Method and system for reduced data movement compression using in-storage computing and a customized file system | |
CN102792296B (zh) | 移动终端中请求页面调度方法、控制器以及移动终端 | |
US20200409604A1 (en) | Storage device and control method | |
CN115905146A (zh) | 数据处理方法、装置、计算设备及存储系统 | |
CN113704588A (zh) | 基于映射技术的文件读取方法及系统 | |
KR20220072398A (ko) | 메모리 장치 및 메모리 시스템 | |
CN113625953B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN117827079A (zh) | 压缩数据读取方法、写入方法及装置 | |
KR20240010310A (ko) | 컴퓨팅 시스템 및 그 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20180207 Address after: Idaho Applicant after: Micron Technology, Inc. Address before: American California Applicant before: Ted systems Limited by Share Ltd |
|
GR01 | Patent grant | ||
GR01 | Patent grant |