CN109791519B - 具有集成计算引擎的非易失性存储***和本地快速存储器的优化用途 - Google Patents
具有集成计算引擎的非易失性存储***和本地快速存储器的优化用途 Download PDFInfo
- Publication number
- CN109791519B CN109791519B CN201780058151.4A CN201780058151A CN109791519B CN 109791519 B CN109791519 B CN 109791519B CN 201780058151 A CN201780058151 A CN 201780058151A CN 109791519 B CN109791519 B CN 109791519B
- Authority
- CN
- China
- Prior art keywords
- memory
- data manipulation
- data
- logical
- 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
Images
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/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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0692—Multiconfiguration, e.g. local and global addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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/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/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
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
-
- 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)
- Read Only Memory (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本公开提供了一种存储器***(例如,固态驱动器),所述存储器***包括:一个或多个非易失性存储器管芯;控制器,所述控制器与所述存储器管芯通信;本地存储器,所述本地存储器连接到所述控制器(或其部分);以及在所述存储器***内的计算引擎,所述计算引擎在数据位置附近并可以用于执行公用数据操纵操作。当所述存储器***接收到用以使用所述计算引擎执行数据操纵操作的指令时,重新分配所述本地存储器,使得基于所述一个或多个数据操纵指令而改变在所述本地存储器中分配用于逻辑到物理转换信息的空间量。
Description
背景技术
非易失性半导体存储器用于固态驱动器(SSD)中。随着互联网规模的服务不断增长,通过对大量数据进行即席查询的实时数据处理和数据分析正在成为关键应用。另外,随着存储器密度不断扩大,SSD容量继续呈指数增长。当前的企业***配备较差以致于无法管理这些趋势,因为它们依赖于将大量数据移出SSD并移入主机***的主存储器以进行处理。这些解决方案依赖于将数据存储在一个位置(即,如同SSD的存储设备)处,并且将数据移动到不同的位置(通常是主机的DRAM)以进行计算。虽然该方法适用于数据量有限的一些应用,但由于传输数据所浪费的时间以及在此类***中包含大规模(例如,拍字节)DRAM容量的过高成本和功耗,具有大规模数据的应用无法使用该方法。
附图说明
相同编号的元件是指不同图中的共同部件。
图1是固态驱动器的一个实施方案的框图,该固态驱动器包括控制器、用于存储数据的非易失性存储器以及在数据位置附近的可用于执行公用数据操纵操作的计算引擎。
图2是固态驱动器的一个实施方案的框图,该固态驱动器包括控制器、用于存储数据的非易失性存储器以及在数据位置附近的可用于执行公用数据操纵操作的计算引擎。
图3是具有计算引擎的前端处理器电路的一个实施方案的框图。前端处理器电路是控制器的一部分。
图4是后端处理器电路的一个实施方案的框图。在一些实施方案中,后端处理器电路是控制器的一部分。
图5是存储器封装的一个实施方案的框图。
图6是存储器管芯的一个实施方案的框图。
图7是固态驱动器的一个实施方案的框图,该固态驱动器包括控制器、用于存储数据的非易失性存储器以及在数据位置附近的可用于执行公用数据操纵操作的计算引擎。
图8是固态驱动器的一个实施方案的框图,该固态驱动器包括控制器、用于存储数据的非易失性存储器以及在数据位置附近的可用于执行公用数据操纵操作的计算引擎。
图9是没有计算引擎的前端处理器电路的一个实施方案的框图。在一些实施方案中,前端处理器电路是控制器的一部分。
图10是固态驱动器的一个实施方案的框图,该固态驱动器包括控制器、用于存储数据的非易失性存储器以及在数据位置附近的可用于执行公用数据操纵操作的计算引擎。
图11是具有计算引擎的后端处理器电路的一个实施方案的框图。在一些实施方案中,后端处理器电路是控制器的一部分。
图12是固态驱动器的一个实施方案的框图,该固态驱动器包括控制器、用于存储数据的非易失性存储器以及在数据位置附近的可用于执行公用数据操纵操作的计算引擎。
图13是固态驱动器的一个实施方案的框图,该固态驱动器包括控制器、用于存储数据的非易失性存储器以及在数据位置附近的可用于执行公用数据操纵操作的计算引擎。
图13A是固态驱动器的一个实施方案的框图,该固态驱动器包括控制器、用于存储数据的非易失性存储器以及在数据位置附近的可用于执行公用数据操纵操作的计算引擎。
图14是具有计算引擎的存储器封装的一个实施方案的框图。
图15是固态驱动器的一个实施方案的框图,该固态驱动器包括控制器、用于存储数据的非易失性存储器以及在数据位置附近的可用于执行公用数据操纵操作的计算引擎。
图16是具有计算引擎的存储器管芯的一个实施方案的框图。
图17是固态驱动器的一个实施方案的框图,该固态驱动器包括控制器、用于存储数据的非易失性存储器以及在数据位置附近的可用于执行公用数据操纵操作的计算引擎。
图18是具有在存储器阵列下方的电路的存储器管芯的一个实施方案的框图。
图19是具有在存储器阵列下方的电路的存储器管芯的一个实施方案的框图。
图20是描绘控制器的一个实施方案的框图。
图21是描述用于执行数据操纵操作的过程的一个实施方案的流程图。
图22A包括本地存储器的框图,描绘了在执行数据操纵操作时如何重新分配本地存储器。
图22B包括本地存储器的框图,描绘了在执行数据操纵操作时如何重新分配本地存储器。
图23A是描述用于在执行数据操纵操作时重新分配本地存储器的过程的一个实施方案的流程图。
图23B是描述用于在执行数据操纵操作时重新分配本地存储器的过程的一个实施方案的流程图。
图23C是描述用于在执行数据操纵操作时重新分配本地存储器的过程的一个实施方案的流程图。
图24A是描述用于执行数据操纵操作的过程的一个实施方案的流程图。
图24B是描述用于执行数据操纵操作的过程的一个实施方案的流程图。
具体实施方式
提出了固态驱动器(“SSD”)或其他存储器***,其可以使用基于硬件加速器的方法来加速大数据应用的性能,该方法涉及将计算引擎集成在SSD(或其他存储器***)内以执行公用数据操纵操作,诸如扫描、过滤、聚合和连接(以及其他操作)。应用编程接口(“API”)可以由存储器***暴露(例如,由控制器暴露)并由主机应用程序使用以使用SSD或其他存储器***中的计算引擎执行有效数据处理。
随着计算操作移动得更靠近数据,可用的计算到数据带宽显著增加。例如,与计算位于I/O接口的主机侧上(以及SSD外部)的常规***相比,将计算引擎集成在SSD内可以提供1.5倍至3.75倍的更高带宽,即使NAND体系结构和I/O接口继续扩展也是如此。类似地,假设采用先进的封装技术,通过在存储器管芯中移动计算引擎,与该位更紧密地集成可以提供未来几代NAND存储器中的计算引擎可用的额外2.5倍至13倍的带宽增加。
计算引擎是硬件电路,其可以是以下一种或多种:
1.用于数据访问和操纵操作(诸如过滤、聚合、压缩/解压缩、排序、分组以及连接表格或其他形式的数据)的硬件加速器;
2.通用CPU核心,诸如ARM/ARC/Intel Atom;以及/或者
3.可重配置的硬件电路,诸如FPGA。
与SSD中的主要便于从SSD读取数据/向SSD写入数据的其他部件不同,计算引擎操纵数据的内容。例如,它可以搜索寻找特定密钥(一组字节)的数据流,或者可以按照主机指定的某种顺序对数据进行排序。计算引擎的概念包括但不限于SSD中有时可用的压缩/解压缩引擎。
典型的存储器***包括控制器、连接到控制器的非易失性存储装置以及连接到控制器并在控制器本地的本地高速易失性存储器(例如,DRAM)。控制器可以使用本地高速易失性存储器(也被称为本地存储器)作为读取缓冲器、作为写入缓冲器、作为便笺式存储器并将逻辑地址存储到物理地址转换表(“L2P表”)。
在许多***中,使用与一个或多个存储器管芯相关联的物理地址在存储器***内寻址非易失性存储装置。然而,主机***将使用逻辑地址来寻址各种存储器位置。这使主机能够将数据分配给连续的逻辑地址,同时存储器***空闲下来按希望的那样在一个或多个存储器管芯的位置间存储数据。为了实现这种***,控制器在由主机使用的逻辑地址与由存储器管芯使用的物理地址之间执行地址转换。一个示例性实施方式是维护表(即,上面提到的L2P表),其标识逻辑地址(诸如逻辑块地址,又称LBA)与物理地址(诸如物理块地址,又称PBA)之间的当前转换。L2P表中的条目可以包括LBA和对应PBA的标识。
在一些示例中,存储器***的存储器空间非常大以致于本地存储器不能保存所有L2P表。在这种情况下,将整组L2P表存储在非易失性存储装置中,并且将L2P表的子集高速缓存(L2P高速缓存)在本地存储器中。L2P高速缓存越大,存储器***的性能越高。在一些存储器***中,L2P高速缓存可以利用高达95%的本地存储器。在存储器***的正常操作期间(例如,在编程、擦除和读取期间)使用本地存储器的这样大的部分不是问题。然而,当已经使用本地计算引擎(如上面所讨论)来执行数据操纵操作时,该本地计算引擎需要使用本地存储器的一部分作为工作存储器来支持数据操纵操作。如果本地存储器的95%保留用于L2P高速缓存,那么计算引擎将没有足够的空闲存储器,并且计算引擎的性能将受到影响。因此,当计算引擎需要本地存储器时,需要减小在本地存储器中保留用于L2P高速缓存的空间量(容量),而不降低存储器***的性能。
为了解决这种需要,提出了非易失性存储***,该非易失性存储***包括:控制器;本地存储器,该本地存储器与控制器通信;非易失性存储器,该非易失性存储器与控制器通信;以及计算引擎,该计算引擎与控制器和本地存储器通信。计算引擎被配置为从在非易失性存储***(例如,主机)外部的实体接收(例如,直接地或经由控制器)一个或多个数据操纵指令并响应于(以及根据)一个或多个数据操纵指令而使用本地存储器对存储在非易失性存储器中的数据执行一个或多个数据操纵操作。当非易失性存储***(例如,计算引擎)正在执行一个或多个数据操纵操作时,基于一个或多个数据操纵指令而改变在本地存储器中分配用于逻辑到物理转换信息(例如,L2P表)的空间量。在一个示例性实施方案中,通过经由从本地存储器中删除关于未由一个或多个数据操纵指令访问的逻辑地址的逻辑到物理转换信息以减小在本地存储器中分配用于逻辑到物理转换信息的空间来改变在本地存储器中分配用于逻辑到物理转换信息的空间量。在另一个实施方案中,通过添加从在非易失性存储***(例如,主机)外部的实体接收到的L2P高速缓存的部分(向没有L2P高速缓存或L2P高速缓存很少的本地存储器添加)来改变在本地存储器中分配用于逻辑到物理转换信息的空间量。
图1至图19描述了可实现本文提出的技术的存储器***的各种体系结构。例如,图1是SSD 10的一个实施方案的框图,该SSD包括控制器(SSD控制器)12、用于存储数据的非易失性存储器封装14、DRAM/ReRAM 16以及在数据位置附近的可用于执行公用数据操纵操作的计算引擎22。图1呈现了高级设计,其中计算引擎22集成在SSD控制器12内。计算引擎22可以是例如作为SSD控制器片上***(“SoC”)的一部分的ASIC,或者可被(更深地)集成为SSD控制器内的硬件电路。图1示出SSD控制器12,SoC,包括现有SSD控制器部件,该SSD控制器部件包括FTL引擎32、ECC引擎34和用于控制DRAM/ReRAM 16的DDR存储器控制器36。包括在SSD控制器12内的是新提出的计算引擎22,该计算引擎可用于对存储在存储器封装的非易失性存储器中的数据执行计算操作。计算操作的示例包括扫描数据,搜索,过滤,排序,聚合数据,将数据连接在一起,以及数据上的其他功能。图1示出与DRAM/ReRAM 16通信并且与一组一个或多个存储器封装14通信的SSD控制器12。在一个实施方案中,SSD控制器12使用切换模式接口与存储器封装(和/或存储器管芯)通信,该切换模式接口是能够以32GB/s通信的异步接口。可供选择的实施方案可使用ONFI接口(开放NAND闪存接口),该接口是同步的并且利用时钟。DRAM/ReRAM 16是本地存储器(例如,高速易失性存储器)的一个示例。
在下面考虑的设计中,存储器封装是指包含一个或多个存储器管芯(例如,NAND闪存存储器管芯、ReRAM管芯、NAND和ReRAM、或其他非易失性技术)的结构。术语存储器封装还可以指管理存储器,即包含一个或多个存储器管芯的存储器封装,该存储器管芯具有嵌入式纠错码(“ECC”)引擎/控制器,以校正在对存储器的读取操作期间检测到的错误。
存储器封装包括一个或多个存储器管芯。在一个实施方案中,每个存储器管芯将包括其本身的芯片使能,该芯片使能可由SSD控制器12控制。在其他实施方案中,多个存储器管芯可共享芯片使能,这要求SSD控制器12使用寻址来在共享芯片使能的存储器管芯之间进行选择。在一个实施方案中,存储器封装14中的存储器管芯使用NAND闪存存储器。在其他实施方案中,存储器封装可包括交叉点ReRAM非易失性存储器,其在下文中有所讨论。
图2是固态驱动器100的一个实施方案的框图,该固态驱动器包括控制器102,用于存储数据的非易失性存储器104,DRAM/ReRAM 106以及数据位置附近的可用于执行公用数据操纵操作的计算引擎114。图2的实施方案包括SSD控制器102,该SSD控制器包括前端处理器电路(FEP)110以及一个或多个后端处理器电路(BEP)112。在一个实施方案中,FEP电路110在ASIC上实现。在一个实施方案中,每个BEP电路112在单独ASIC上实现。用于BEP电路112和FEP电路110中的每个的ASIC在相同半导体上实现,使得SSD控制器102被制造为SoC。FEP 110和BEP 112均包括其本身的处理器。在一个实施方案中,FEP 110和BEP 112用作主从配置,其中FEP 110是主设备,并且每个BEP 112是从设备。例如,FEP电路110实现闪存转换层,包括执行存储器管理(例如,垃圾收集、损耗均衡等)、逻辑到物理地址转换、与主机的通信、DRAM(本地易失性存储器)的管理以及SSD(或其他非易失性存储***)的整体操作的管理。BEP电路112根据FEP电路110的请求来管理存储器封装/管芯中的存储器操作。例如,BEP电路112可进行读取、擦除和编程过程。另外,BEP电路112可执行缓冲器管理,设置FEP电路110所需的特定电压电平,执行纠错(ECC),控制到存储器封装的切换模式接口等。在一个实施方案中,每个BEP电路112负责其本身的一组存储器封装。图2示出与BEP电路112中的每个通信的FEP电路110。在图2的实施方式中,计算引擎114被设计为FEP 110内的硬件电路。计算引擎可使用DDR接口访问高速、高带宽存储器以访问DRAM 106。在该实施方式中,计算引擎可用的带宽受到将FEP 110连接到BEP 112的带宽的限制。DRAM 106是本地存储器的一个示例。
图3是FEP电路的一个实施方案的框图,其中计算引擎114被设计到电路中。图3的FEP电路是图2的FEP电路110的一个示例性实施方式。图3示出与主机通信的PCIe接口150,以及与PCIe接口通信的主机处理器152。主机处理器152可以是本领域中已知的适用于实现的任何类型的处理器。主机处理器152与片上网络(NOC)154通信。NOC是集成电路上的通信子***,通常在SoC中的核心之间。NOC可跨越同步和异步时钟域,或者使用非时钟的异步逻辑。NOC技术将网络理论和方法应用于片上通信,并且与常规总线和交叉开关互连相比带来了显著的改善。与其他设计相比,NOC提高了SoC的可扩展性以及复杂SoC的功效。NOC的导线和链路由许多信号共享。由于NOC中的所有链路可在不同的数据包上同时运行,因此实现了高水平的并行性。因此,随着集成子***的复杂性不断增长,与先前的通信体系结构(例如,专用的点对点信号线、共享总线或具有桥的分段总线)相比,NOC提供增强的性能(诸如吞吐量)和可扩展性。连接到NOC 154并且与NOC 154通信的是存储器处理器156、计算引擎114、SRAM 160和DRAM控制器162。DRAM控制器162用于操作DRAM(例如,DRAM 106)并且与该DRAM通信。SRAM 160是由计算引擎114或存储器处理器156使用的本地RAM存储器。存储器处理器156用于运行FEP电路并且执行各种存储器操作。与NOC通信的还有两个PCIe接口164和166。在图3的实施方案中,SSD控制器将包括两个BEP电路;因此,存在两个PCIe接口164/166。每个PCIe接口与BEP电路中的一个通信。在其他实施方案中,可存在多于或少于两个BEP电路;因此,可存在不止两个PCIe接口。在这些布置中,计算引擎114(从主机的角度来看)定位在到主机的接口150后面(例如,在到主机的接口的存储器***侧上),并且在由控制器暴露(例如,由FEP电路暴露)的API后面。
图4是BEP电路的一个实施方案的框图。图4的BEP电路是图2的BEP电路112的一个示例性实施方式。图4示出用于与FEP电路通信(例如,与图3的PCIe接口164和166中的一个通信)的PCIe接口200。PCIe接口200与两个NOC 202和204通信。在一个实施方案中,两个NOC可被组合成一个大NOC。每个NOC(202/204)通过XOR引擎(224/254)和ECC引擎(226/256)连接到SRAM(230/260)、缓冲器(232/262)、处理器(220/250)和数据路径控制器(222/252)。ECC引擎226/256用于执行纠错,如本领域所知。XOR引擎224/254用于对数据进行异或,使得可在存在编程错误的情况下以可恢复的方式组合和存储数据。数据路径控制器连接到接口模块,以用于通过四个信道与存储器封装进行通信。因此,顶部NOC 202与用于与存储器封装通信的四个信道的接口228相关联,并且底部NOC 204与用于与存储器封装通信的四个附加信道的接口258相关联。每个接口228/258包括四个切换模式接口(TM接口)、四个缓冲器和四个调度器。对于信道中的每个存在一个调度器、缓冲器和TM接口。处理器可以是本领域中已知的任何标准处理器。数据路径控制器222/252可以是处理器、FPGA、微处理器、或其他类型的控制器。XOR引擎224/254和ECC引擎226/256是专用的硬件电路,称为硬件加速器。在其他实施方案中,XOR引擎224/254和ECC引擎226/256可在软件中实现。调度器、缓冲器和TM接口是硬件电路。
图5是存储器封装的一个实施方案的框图。例如,图5的存储器封装是包括在图1的存储器封装14或图2的存储器封装104中的存储器封装的示例性实施方式。图5示出连接到存储器总线(数据线和芯片使能线)294的多个存储器管芯292。存储器总线294连接到切换模式接口296以用于与BEP电路的TM接口进行通信(参见例如图4)。在一些实施方案中,存储器封装可包括连接到存储器总线和TM接口的小控制器。存储器封装可具有一个或多个存储器管芯。在一个实施方案中,每个存储器封装包括8或16个存储器管芯;然而,也可以实现其他数量的存储器管芯。本文描述的技术不限于任何特定数量的存储器管芯。
图6是存储器管芯300的一个实施方案的功能框图。应当注意,存储器是图5的存储器管芯292的一个示例性实施方式。图6中描绘的部件为电子电路。存储器管芯300包括存储器单元的三维存储器结构326(诸如存储器单元的3D阵列)、控制电路310和读取/写入电路328。在其他实施方案中,可使用存储器单元的二维阵列。存储器结构326能够通过行解码器324由字线来寻址,并且通过列解码器332由位线来寻址。读取/写入电路328包括多个感测块350并且允许存储器单元页面被并行读取或并行编程,该感测块包括SB1、SB2、…、SBp(感测电路)。命令和数据经由线路318向/从存储器管芯300传输。在一个实施方案中,存储器管芯300包括连接到线路318的一组输入和/或输出(I/O)引脚。
存储器结构326可以包括一个或多个存储器单元阵列,该存储器单元阵列包括3D阵列。存储器结构可包括单片三维存储器结构,其中多个存储器级形成在诸如晶片的单个基板上方(不在其中),没有居间衬底。存储器结构可包括任何类型的非易失性存储器,该非易失性存储器在具有设置在硅基板上方有源区域的存储器单元阵列的一个或多个物理层中单片地形成。存储器结构可在非易失性存储器设备中,该非易失性存储器设备具有与存储器单元的操作相关联的电路,无论相关联的电路在基板上方还是在基板内。
控制电路310与读取/写入电路328配合以在存储器结构326上执行存储器操作(例如,擦除、编程、读取等),并且包括状态机312、片上地址解码器314、功率控制模块316和温度检测电路318。状态机312提供存储器操作的管芯级控制。温度检测电路318(其在存储器管芯300上)被配置为检测存储器结构326处的温度,并且可以是本领域已知的任何合适的温度检测电路。在一个实施方案中,状态机312可由软件编程。在其他实施方案中,状态机312不使用软件并且完全以硬件(例如,电子电路)实现。在一个实施方案中,控制电路310包括寄存器、ROM熔丝和用于存储默认值(诸如基准电压和其他参数)的其他存储设备。
片上地址解码器314将主机或控制器使用的地址之间的地址接口提供给解码器324和332使用的硬件地址。功率控制模块316控制在存储器操作期间提供给字线和位线的功率和电压。其可包括用于3D配置中的字线层(下文所讨论)的驱动器、选择晶体管(例如,下文所述的SGS和SGD晶体管)和源极线。功率控制模块316可以包括用于产生电压的充电泵。感测块包括位线驱动器。
存储器结构326中的多个存储器元件可以被配置为使得它们串联连接或使得每个元件是可单独访问的。作为非限制性示例,NAND配置(NAND闪存存储器)中的闪存存储器设备通常包含串联连接的存储器元件。NAND字符串是一组串联连接的存储器单元和选择栅晶体管的示例,其可用于将存储器结构326实现为三维存储器结构。
可配置NAND闪存存储器阵列,使得阵列由多个NAND字符串构成,该NAND字符串由多个共享单一位线并作为组访问的存储器单元构成。另选地,可配置存储器元件,使得每个元件可被单独访问,例如NOR存储器阵列。NAND和NOR存储器配置是示例性的,并且可以其他方式配置存储器单元。
存储器单元可以有序阵列布置在单个存储器设备中,诸如以多个行和/或列布置。然而,存储器元件可以非规则配置或非正交配置排列,或者以不视作阵列的结构排列。
布置三维存储器阵列,使得存储器单元占据多个平面或多个存储器设备级,从而形成三维结构(即x,y和z方向,其中z方向基本上垂直,并且x方向和y方向基本上平行于基板的主表面)。
作为非限制性示例,三维存储器结构可被垂直地布置为多个二维存储器设备级的叠堆。作为另一个非限制性示例,三维存储器阵列可被布置为多个垂直列(例如,基本上垂直于基板的主表面延伸的列,即沿y方向),每列具有多个存储器单元。垂直列可以二维配置布置,例如,在x-y平面中由存储器单元的三维布置产生的配置,其中存储器单元位于多个垂直堆叠的存储器平面上。三维存储器元件的其他配置也可构成三维存储器阵列。
作为非限制性示例,在三维NAND存储器阵列中,存储器元件可耦接在一起以形成横穿多个水平存储器设备级的具有电荷捕集材料的垂直NAND字符串。可用于实现存储器结构126的三维NAND存储器阵列的一个示例可见于美国专利9,343,156,该专利全文以引用方式并入本文。
可设想到其他三维配置,其中一些NAND字符串包含在单个存储器级中的存储器元件,而其他字符串则包含跨越多个存储器级的存储器元件。三维存储器阵列也可以NOR配置以及ReRAM配置来设计。
本领域普通技术人员将认识到,本文所述的技术不限于单个特定存储器结构,但涵盖了在本文所述和如本领域普通技术人员所理解的技术实质与范围内的许多相关的存储器结构。
虽然示例性存储器***是包括具有电荷捕集材料的垂直NAND字符串的三维存储器结构,但是其他(2D和3D)存储器结构也可与本文所述的技术一起使用。例如,也可使用浮栅存储器(例如,NAND型和NOR型闪存存储器)、ReRAM存储器、磁阻存储器(例如,MRAM)和相变存储器(例如,PCRAM)。
ReRAM存储器的一个示例包括可逆电阻切换元件,其布置在由X线和Y线(例如,字线和位线)访问的交叉点阵列中。可用于实现存储器结构126的三维存储器阵列的一个示例可见于名称为“High Endurance Non-Volatile Storage(高耐久性非易失性存储装置)”的美国专利申请2016/0133836,该申请全文以引用方式并入本文。
在另一个实施方案中,存储器单元可包括导电桥存储器元件。导电桥存储器元件也可称为可编程金属化单元。基于固体电解质内的离子的物理重新定位,导电桥存储器元件可用作状态改变元件。在一些情况下,导电桥存储器元件可包括两个固体金属电极,一个是相对惰性的(例如,钨),而另一个是电化学活性的(例如,银或铜),在两个电极之间具有固体电解质的薄膜。随着温度升高,离子的迁移率也增加,这导致导电桥存储器单元的编程阈值降低。因此,导电桥存储器元件可在整个温度范围内具有宽范围的编程阈值。
磁阻存储器(MRAM)通过磁存储元件存储数据。元件由两个铁磁板形成,每个铁磁板可保持磁化,由薄的绝缘层隔开。两个板中的一个是设置为特定极性的永磁体;可以改变另一个板的磁化以匹配外磁场的磁化以存储内存。该配置称为自旋阀,并且是MRAM位的最简单结构。存储器设备由此类存储器单元的网格构建。在用于编程的一个实施方案中,每个存储器单元位于一对写入线之间,该对写入线被布置成彼此成直角,与单元平行,一个在单元上方并且一个在单元下方。当电流通过它们时,产生感应磁场。
相变存储器(PCRAM)利用了硫属化物玻璃的独特行为。一个实施方案使用GeTe-Sb2Te3超晶格通过简单地用激光脉冲(或来自另一个源的光脉冲)改变锗原子的配位状态来实现非热相变。因此,编程的剂量是激光脉冲。可以通过阻止存储器单元接收光来抑制存储器单元。应当注意,在该文件中使用“脉冲”不需要矩形脉冲,但包括声音、电流、电压光或其他波的(连续或非连续)振动或脉冲串。
图7是固态驱动器400的一个实施方案的框图,该固态驱动器包括控制器402,用于存储数据的非易失性存储器封装404,DRAM/ReRAM406,以及该数据位置附近的可用于执行公用数据操纵操作的计算引擎412。控制器402包括FEP电路410。在图7的实施方案中,将计算引擎412集成在FEP电路410内,并且一个或多个BEP电路422现在结合在存储器封装404内。在该实施方式中,SSD控制器包含用于FEP电路的仅一个ASIC。也就是说,SSD控制器402与存储器封装404通信,其中每个存储器封装包括多个存储器管芯420以及一个或多个BEP电路422。存储器管芯420的一个示例性实施方案在图6中描绘。BEP电路422的一个示例在图4中描绘。具有集成计算引擎412的FEP电路410的一个示例在图3中描绘。DRAM/ReRAM 406是本地存储器(例如,本地高速易失性存储器)的示例。
图8是固态驱动器450的一个实施方案的框图,该固态驱动器包括控制器460,用于存储数据的非易失性存储器封装454,DRAM/ReRAM456,以及数据位置附近的可用于执行公用数据操纵操作的计算引擎464。在图8的实施方案中,计算引擎464是独立的ASIC(专用集成电路),其与SSD控制器460集成为SoC。在该实施方式中,控制器460包括与一个或多个BEP电路462通信的FEP电路460。计算引擎464在FEP电路462的外部并连接到FEP电路462,连接到BEP电路,并且通过单独的接口连接到高速DRAM存储器。计算引擎464可用的带宽低于或等于图2的实施方案的带宽。当FEP电路462和计算引擎464的开发需要保持分离时,该实施方式是优选的。BEP电路422的一个示例在图4中描绘。存储器封装454的一个示例在图5中描绘。DRAM/ReRAM 456是本地存储器(例如,本地高速易失性存储器)的示例。
图9是没有计算引擎的FEP电路的一个实施方案的框图,该FEP电路适用于图8的实施方案(例如,FEP电路460)。图9示出图3的所有部件,但是没有计算引擎。也就是说,图9描绘了PCIe接口150、主机处理器152、NOC 154、存储器处理器156、SRAM 160、DRAM控制器162,以及PCIe接口164和166。在图9的实施方案中,SSD控制器将包括两个BEP电路;因此,存在两个PCIe接口。每个PCIe接口与BEP电路中的一个通信。在其他实施方案中,可存在多于或少于两个BEP电路;因此,可存在多于或少于两个PCIe接口。
图10是固态驱动器600的一个实施方案的框图,该固态驱动器包括控制器602,用于存储数据的非易失性存储器封装604,DRAM/ReRAM606,以及数据位置附近的可用于执行公用数据操纵操作的计算引擎616。控制器602包括连接到一个或多个BEP电路614的FEP电路612。在该实施方案中,计算引擎616与BEP电路614集成。也就是说,计算引擎616在用于BEP电路614的ASIC中实现。现在,计算引擎可用的带宽由每个BEP电路中存在的切换模式信道的数量和切换模式信道的带宽确定。BEP电路614还可包含任选的接口620以连接到DRAM/ReRAM芯片。到高速存储器的直接接口为计算引擎616提供对存储器的快速访问以存储临时工作数据。在不存在直接接口的情况下,临时工作数据通过将BEP电路连接到FEP电路的接口流式传输。FEP电路612的一个示例在图9中描绘。存储器封装604的一个示例在图5中描绘。DRAM/ReRAM 606是本地存储器(例如,本地高速易失性存储器)的示例。
图11是包括计算引擎的BEP电路的一个实施方案的框图。图11的BEP电路的实施方案适用于图10的实施方案(例如,作为BEP电路614)。图11的部件与图4的部件相同,但是还包括连接到顶部NOC 202的计算引擎702和连接到底部NOC 204的第二计算引擎704。在另一个实施方案中,一个计算引擎可连接到两个NOC。在另一个实施方案中,两个NOC连接在一起,并且组合的NOC将连接到一个、两个或多个计算引擎。在图11的实施方案中,每组四个信道有一个计算引擎。在其他实施方案中,分组在一起的信道可包括多于或少于四个信道。
图12是固态驱动器800的一个实施方案的框图,该固态驱动器包括控制器802,用于存储数据的非易失性存储器封装804,DRAM/ReRAM806,以及数据位置附近的可用于执行公用数据操纵操作的计算引擎824。控制器802包括连接到一个或多个BEP电路822的FEP电路820。在图12的实施方案中,计算引擎824是独立的ASIC,其直接连接到来自BEP电路的切换模式(TM)信道。在此类实施方式中,计算引擎应任选地包括ECC引擎,以便在由计算引擎处理之前解码和校正从闪存存储器(或存储器封装中的其他类型的非易失性存储器)读取的数据。计算引擎824还可通过到DRAM/ReRAM芯片以及到FEP电路820的标准DDR接口连接到高速、高带宽DRAM存储器806。FEP电路820的一个示例在图9中描绘。存储器封装804的一个示例在图5中描绘。BEP电路822的一个示例在图4中描绘。DRAM/ReRAM 806是本地存储器(例如,本地高速易失性存储器)的示例。
上面讨论的实施方案示出了将计算引擎与控制器集成的各种实施方式。在一组不同的实施方式中,计算引擎可与存储器封装集成,称为存储器封装级集成。
图13是包括存储器封装级集成的固态驱动器850的一个实施方案的框图,该固态驱动器包括控制器852,用于存储数据的非易失性存储器封装854,DRAM/ReRAM 856,以及数据位置附近的可用于执行公用数据操纵操作的计算引擎862。控制器852包括连接到一个或多个BEP电路860的FEP电路858。一个或多个BEP电路860连接到非易失性存储器封装854。FEP电路858的一个示例在图9中描绘。BEP电路860的一个示例在图4中描绘。DRAM/ReRAM856是本地存储器(例如,本地高速易失性存储器)的示例。在图13中描绘的实施方案中,计算引擎与每个存储器封装集成。现在修改通常包括多个存储器管芯(例如,NAND非易失性存储器或其他类型的非易失性存储器)的存储器封装,以在存储器封装内包括计算引擎ASIC(也被称为计算引擎核心)。在一个实施方案中,存储器封装还应包括ECC引擎(或ECC引擎的至少解码器部分),以解码从存储器读取的代码字,并且在由计算引擎处理之前校正从非易失性存储器管芯读取的数据。因此,计算引擎862包括ECC引擎。在其他实施方案中,计算引擎可对未经过ECC解码的数据进行操作。存储器封装可任选地包括如同DRAM的高速存储器以支持计算引擎访问临时工作数据。由于数据管理操作在存储器封装内,因此计算引擎可用的带宽可远高于存储器封装外部可用的切换模式(TM)带宽。
图13A是固态驱动器880(或更一般地讲是数据存储设备)的一个实施方案的框图,该固态驱动器包括控制器882、用于存储数据的非易失性存储器封装884以及DRAM/ReRAM886。控制器882包括连接到一个或多个BEP电路890的FEP电路888。一个或多个BEP电路890连接到非易失性存储器封装884。FEP电路888的一个示例在图9中描绘。BEP电路890的一个示例在图4中描绘。DRAM/ReRAM 886是本地存储器(例如,本地高速易失性存储器)的示例。
图13A中描绘的实施方案包括多个(或分布式)计算引擎,使得计算引擎892定位在控制器882中,并且一组计算引擎(具有内置ECC引擎)894定位在非易失性存储器封装884中。例如,计算引擎892是独立的ASIC,其直接连接到来自BEP电路(BEP电路和存储器封装/管芯之间的接口)的切换模式(TM)信道。计算引擎892还可以通过到DRAM/ReRAM芯片和到FEP电路888的标准DDR接口来连接到高速、高带宽DRAM存储器886。计算引擎894与每个存储器封装集成。在一个实施方案中,存储器封装还包括ECC引擎(或ECC引擎的至少解码器部分),以解码从存储器读取的代码字,并且在由计算引擎处理之前校正从非易失性存储器管芯读取的数据。因此,计算引擎894包括ECC引擎。在其他实施方案中,计算引擎可对未经过ECC解码的数据进行操作。存储器封装可任选地包括如同DRAM的高速存储器以支持计算引擎访问临时工作数据。由于一些数据操纵操作在存储器封装内,因此计算引擎可用的带宽可远高于存储器封装外部可用的切换模式(TM)带宽。在一些实施方案中,计算引擎892和894将拆分对数据执行的工作。例如,来自主机的代码可对***进行编程以对计算引擎892执行一些操作并且对计算引擎894执行其他操作。例如,计算引擎894可执行纠错编码(ECC)功能连同简单的应用程序级别测试,并且计算引擎892可执行针对顺序或索引顺序工作负载优化的闪存转换层(FTL),连同应用程序查询级别的更复杂的过滤、排序和分组功能。
图14是包括计算引擎的存储器封装的一个实施方案的框图。图14的实施方案可用于实现图13中的存储器封装854或图13A中的存储器封装884中的一个。图14的存储器封装包括连接到存储器总线906(类似于图5的存储器总线)的多个存储器管芯904。存储器总线906连接到TM接口908以用于与BEP电路通信。另外,图14示出连接到存储器总线并且连接到ECC引擎912的计算引擎910。ECC引擎912还连接到存储器总线906。从存储器管芯读取的存储器可经历ECC解码(包括固定错误),然后呈现给计算引擎910以执行本文所讨论的计算操作中的任一个。
图15是固态驱动器950的一个实施方案的框图,该固态驱动器包括控制器952,用于存储数据的非易失性存储器封装956,DRAM/ReRAM954,以及该数据位置附近的可用于执行公用数据操纵操作的计算引擎。控制器952包括连接到一个或多个BEP电路962的FEP电路960。一个或多个BEP电路962连接到非易失性存储器封装956。FEP电路960的一个示例在图9中描绘。BEP电路962的一个示例在图4中描绘。DRAM/ReRAM954是本地存储器(例如,本地高速易失性存储器)的示例。
图15的实施方案实现存储器封装级集成。例如,每个存储器封装包括多个存储器管芯以及集成在每个存储器管芯972内的计算引擎970。在一个实施方案中,计算引擎将包括ECC引擎以解码(包括校正)从存储器管芯读取的数据。ECC引擎可以是计算引擎的一部分,或者与计算引擎分离,但是以其他方式包括在存储器管芯中。
图16是包括计算引擎的存储器管芯1000的一个实施方案的框图。例如,存储器管芯1000是图15的存储器管芯972的示例性实施方式。图16的实施方案包括图6的实施方案的元件。例如,存储器管芯1000包括存储器单元的三维存储器结构326(诸如存储器单元的3D阵列)、控制电路310、读取/写入电路328以及行解码器324和列解码器332。控制电路310包括状态机312、片上地址解码器314、功率控制模块316和温度检测电路318。另外,在图16的实施方案中,控制电路310还包括ECC引擎1017和计算引擎1019。使用ECC引擎1017对从存储器结构326读取的数据进行解码,并且将该数据提供给计算引擎1019以便执行各种计算操作,如本文所讨论。
虽然上面讨论的实施方案示出SSD控制器要实现为包含BEP ASIC和FEP ASIC的两个ASIC解决方案,但是SSD控制器也可以用多于或少于两个的ASIC来实现。在该情况下,可扩展设计空间以将计算引擎放置在ASIC中的任意一个或多个内。另外,计算引擎可被放置在ASIC外部。在其他实施方案中,除了FEP/BEP体系结构之外,SSD控制器可以包括不同的体系结构。即使在其他体系结构中,SSD控制器仍然可被配置为在ASIC或电路或模块中的一者中包括计算引擎。另外,可将计算引擎添加到未使用ASIC实现但使用其他硬件实现的SSD。
图15的实施方案包括将计算引擎集成在存储器管芯(诸如NAND存储器管芯或ReRAM存储器管芯)内。图17是提供用于实现图15的***的实施方案的附加细节的框图。具体地讲,图17示出与SSD 1100(在印刷电路板上实现)通信的主机,该SSD包括大NVM控制器1102和小NVM控制器1114。大NVM控制器1102与DRAM 1104和存储器封装1106通信。
在一个实施方案中,存储器封装1106包括若干存储器管芯1110、任选DRAM(或MRAM/RRAM/PCM/eDRAM)1112,以及小NVM控制器1114。存储器管芯1110中的每个具有管芯上计算引擎(CE)。在一个实施方案中,管芯上计算引擎使用CMOS技术在衬底的顶部表面上以及在单片三维存储器阵列下面实现。潜在地,可以集成eDRAM/STT-MRAM/PCM以及SRAM。管芯上计算引擎(CE)可执行数据操纵操作中的一些。
在一个实施方案中,小NVM控制器1114包括计算引擎(CE),该计算引擎可执行数据操纵操作中的一些。小NVM控制器1114可与内部存储器管芯和外部芯片(即,图17中的大NVM控制器和DRAM)通信。任选DRAM 1112用于小NVM控制器1114以存储工作数据集。通过用计算机引擎(CE)1114和存储器管芯1110的简单CE将计算从大NVM控制器1102卸载到小NVM控制器,外部DRAM要求和通信开销可减少。
图17示出大NVM控制器1102、DRAM 1104、存储器管芯1110、DRAM 1112和小NVM控制器1114中的每个可以在安装在一个印刷电路板上的三种不同的封装中的单独硅管芯上实现。因此,图17提供大和小NVM控制器体系结构。大NVM控制器1102与主机和DRAM接合。小NVM控制器1114可以在存储器封装中的任一个内。小NVM控制器1114包括具有任选DRAM的计算引擎,并且管理多个NVM信道。映射表可存储在任选DRAM(或MRAM/PRAM)中。
图18是具有存储器阵列下的电路的存储器管芯1200的一个实施方案的框图。图18示出具有多个层的单片三维存储器结构1202。存储器结构1202下方是电路1204,该电路在衬底1206的顶部表面上以及在存储器阵列1202下面实现。在一个实施方案中,电路1204使用CMOS技术实现。例如,可能用eDRAM/STT-MRAM/PCM以及SRAM/锁存器将简单的计算逻辑集成在存储器阵列1204下面的CMOS逻辑中。简单的电路逻辑(即,随机发生器、ID发生器、PUF或AES)和简单的错误管理逻辑(即,错误位置映射或简单的错误避免算法,诸如读取参考优化器)以及ECC可被集成在存储器阵列1202下面的CMOS逻辑中,作为上面讨论的计算引擎的示例。这通过消除从存储器管芯到单独控制器管芯的数据传输开销而改善了延迟和性能。可以集成FPGA,通过芯片上的单个***支持多种配置,作为上述计算引擎。可以集成FPGA,支持片上***内的多种配置。
另外,其他功能可被集成为上述计算引擎。例如,CPU或并行计算引擎可被集成为上述计算引擎。还可使用SIMD引擎(“GPU”),神经网络,DSP引擎(例如,图像/音频处理),数字逻辑运算(乘法、加法、减法、XOR等),数据挖掘(先验、k均值、网页排名、决策树)或模式匹配(即,汉明距离计算),支持存储器管芯中的多种配置的FPGA架构,具有存储器均衡器的高速I/O电路,基于互连的光学或电容器/电感耦接的电路。在一个实施方案中,当针对特定应用程序绕过AES时,计算引擎需要能够处理加密数据。在一些实施方案中,当针对特定应用程序绕过ECC时,计算引擎可能需要处理错误数据。
图19是存储器管芯1300的一个实施方案的框图,该存储器管芯具有在存储器阵列1302下面的电路1304以将非易失性存储器管芯1300用作非易失性FPGA。存储器管芯1300将包括三维单片存储器阵列1302。在衬底1306的顶部表面上以及在存储器阵列1302下面实现的将是CMOS逻辑1304,该CMOS逻辑将待使用的FPGA实现为计算引擎(按照上述讨论)。该***将使用存储器阵列1302(NAND或其他类型的非易失性存储器)作为FPGA的可重配置逻辑1304的配置存储装置。也就是说,存储在存储器阵列1302中的配置数据用于配置FPGA。这将使FPGA成为非易失性的。与常规FPGA相比,这将允许快速启动,该常规FPGA需要从分立的非易失性存储器设备到易失性FPGA单元阵列读取配置数据。当不需要FPGA(硬件加速器/计算引擎)时,配置存储装置(存储器阵列)可仅用作普通的非易失性存储装置,从而节省空闲功率。
图20是描绘可与实现本文提出的技术的存储器***一起使用的控制器的一个实施方案的框图。应当注意,图20中表示的部件可以根据特定存储***的配置而变化,并且图20中所示的表示仅是非限制性示例。在一些实施方案中,控制器2001(本文也称为“存储器控制器”或“SSD控制器”,诸如上面参考图1至图2、图7至图8、图10和图12所示和所述的控制器中的任一个)包括一个或多个处理单元2022(在本文中有时被称为CPU、处理器或硬件处理器,并且有时使用微处理器、微控制器等实现)以用于执行存储在存储器2006中的模块、程序和/或指令并由此执行数据操纵操作;存储器2006(在本文中有时被称为控制器存储器);以及用于使这些部件互连的一个或多个通信总线2008。在一些实施方案中,一个或多个CPU2022由在控制器2001的功能内并在一些情况下超出其功能的一个或多个部件共享。在一些实施方案中,控制功能器2001包括主机接口2024、错误控制模块2025和存储介质接口2028,该存储介质接口将控制器2001耦接到非易失性存储器,诸如图1、图2、图7、图8、图10、图12、图13、图13A和图15中所示的存储器封装。主机接口2024提供到主机***的接口(例如,经由数据连接)。通信总线2008任选地包括使***部件互连并控制它们之间的通信的电路(有时被称为芯片组)。在一些实施方案中,控制器2001通过通信总线2008与一个或多个存储器设备(例如,持久性存储装置)诸如图1至图2、图7至图8、图10、图12、图13、图13A和图15中所示的存储器封装和/或存储器管芯耦接,并且任选地管理存储器设备的操作。
在一些实施方案中,错误控制模块2025提供用于限制在向存储器(例如,持久性存储装置)写入或从存储器读取期间无意中向数据中引入不可纠正错误的数量。在一些实施方案中,错误控制模块2025由一个或多个CPU 2022在软件中执行,并且在其他实施方案中,错误控制模块125完全地或部分地使用专用电路来实现以执行数据编码和解码功能。为此,在一些实施方案中,错误控制模块125通过应用纠错码(或纠错码算法)来对数据进行编码以产生码字,该码字随后存储在存储器中。当从存储器读取编码的数据(例如,一个或多个码字)时,错误控制模块125向编码的数据应用解码过程以恢复数据并在错误控制码的纠错能力内纠正恢复的数据中的错误。本领域的技术人员将理解,各种纠错码具有不同的错误检测和纠正能力,并且出于超出本公开的范围的原因,针对各种应用选择特定代码。因此,本文中不提供对各种类型的纠错码的详尽回顾。此外,本领域的技术人员将理解,每种类型或系列的纠错码可以具有特定于错误控制码的类型或系列的编码和解码算法。另一方面,一些算法可以至少在某种程度上用于对许多不同类型或系列的纠错码进行解码。因此,为了简洁起见,本文中未提供对本领域的技术人员一般可获得和知道的各种类型的编码和解码算法的详尽描述。
如图20所示,控制器2001还包括计算引擎2010。在一些实施方案中,响应于主机经由主机接口2024接收数据操纵指令,计算引擎2010对存储在与控制器2001耦接的一个或多个存储器设备中和/或从其中检索的数据执行数据操纵操作。在一些实施方案(诸如由图13、图13A和图15表示的那些)中,计算引擎2010(以及任选的错误控制模块2025)可以包括在一个或多个存储器设备和/或存储器设备的一个或多个存储器管芯中。
在图20中所示的实施方案中,控制器2001还包括本地存储器2023。在其他实施方案(诸如由图1至图2、图7至图8、图10、图12至图13、图13A和图15表示的那些)中,本地存储器2023在控制器2001外部并通过数据连接诸如通信总线2008与控制器2001耦接。在一些实施方案中,本地存储器2023用作用于由计算引擎2010执行的数据操纵操作的工作存储器(例如,在数据操纵或计算模式中),如下面更详细地讨论的。在一些实施方案中,本地存储器2023用于对持久性存储装置(例如,上述非易失性存储器)的读取操作和写入操作,例如,在控制器2001的正常操作模式中。在一些实施方案中,本地存储器2023至少部分地用作写入缓冲器以保存数据(例如,结合来自有时被称为主机、或称为客户端或客户端***的主机***的写入命令接收)来在写入操作期间转移到持久性存储装置,和/或用作读取缓冲器以保存从持久性存储装置获得的数据(例如,响应于来自主机***的读取命令),这些数据然后可提供给请求的主机***。在一些实施方案中,本地存储器2023在控制器2001内部。
存储器2006通常包括高速随机存取存储器诸如DRAM、SRAM、DDR RAM或其他随机存取固态存储器设备,并且可以包括非易失性存储器诸如一个或多个磁盘存储设备、光盘存储设备、闪存存储器设备或其他非易失性固态存储设备。存储器2006任选地包括远离处理器2022定位的一个或多个存储设备。在一些实施方案中,存储器2006或另选地存储器2006内的非易失性存储器设备包括非暂态计算机可读存储介质。在一些实施方案中,存储器2006或存储器2006的计算机可读存储介质存储以下程序、模块和数据结构、或其子集或超集:
主机通信模块2030,其用于与其他部件诸如主机***通信(例如,使用定义通信接口标准,诸如双倍数据速率类型3(DDR3),其通常用于与某些类型的同步通信动态随机存取存储器(例如,DDR3SDRAM)的通信);
数据读取模块2032,其用于从持久性存储装置读取数据;
数据写入模块2034,其用于向持久性存储装置写入数据;
数据擦除模块2036,其用于擦除写入持久性存储装置的数据;
计算模块管理器2040,其用于管理计算模块2010的操作,并且可以包括用于管理本地存储器2023的分配的本地存储器重新分配模块2042;
任选地,用于基于存储设备的地址转换实施方式的一个或多个模块可以包括:
闪存转换层(FTL)模块2044,其用于执行逻辑到物理地址转换;
取消映射模块2046,其用于取消从物理地址映射逻辑地址(例如,响应于取消映射或擦除命令);
垃圾收集模块2048,其用于控制存储器设备(例如,持久性存储装置)中的垃圾收集过程;
任选地,用于基于主机的地址转换实施方式的一个或多个模块可以包括:
地址转换模块2050,其用于使用由主机***提供的地址转换信息来执行逻辑到物理地址转换。
以上标识的元件中的每个可以存储在先前提到的存储器设备(它们一起形成存储器2006)中的一个或多个中,并且对应于用于执行上述功能的指令集。以上标识的模块或程序(即,指令集)不需要实现为单独的软件程序、过程或模块,并且因此这些模块的各种子集可以在各种实施方案中组合或以其他方式重新布置。在一些实施方案中,存储器2006可以存储上面标识的模块和数据结构的子集。此外,存储器2006可以存储上面未描述的附加的模块和数据结构。在一些实施方案中,存储在存储器2006或存储器2006的计算机可读存储介质中的程序、模块和数据结构提供用于实现下面参考图21、图23A至图23C和图24A至图24B描述的方法中的相应操作的指令。
虽然图20示出了控制器2001,但是图20更多地旨在作为可存在于控制器中的各种特征的功能描述,而不是作为本文描述的实施方案的结构图示。在实践中,并且如本领域的普通技术人员认识到,单独示出的项可以组合,并且一些项可以分开。
图21是描述用于使用上面参考图1至图20描述的各种装置中的任一个执行数据操纵操作的过程的一个实施方案的流程图。应当注意,虽然在这些示例的描述中使用的是主机***,但是可以用在存储设备/***外部的任何其他实体来代替主机***。响应于主机向SSD(或其他存储器装置)发送数据操作指令集(例如,经由API)而执行图21的过程以使计算引擎对存储在持久性/非易失性存储装置中的数据执行数据操纵操作。在步骤2060中,在SSD(或其他存储器***)处从主机***(或其他外部实体)接收数据操纵指令。数据操纵指令包括用于对存储在持久性存储装置中的数据执行数据操纵操作的指令。本文提到的持久性存储装置可以是上面讨论(例如,参见图1、图2、图5、图6至图10和图12至图19)的存储器封装或存储器管芯的非易失性存储器中的任一个,以及其他持久性存储装置。在一个实施方案中,在控制器处接收数据操纵指令并将其转发到计算引擎。在另一个实施方案中,数据操纵指令直接地由计算引擎接收,而指令不首先进入控制器。
在步骤2061中,响应于从主机***接收到数据操纵指令,SSD通过基于数据操纵指令而改变在本地存储器中分配用于逻辑到物理转换信息的空间量来重新分配本地存储器(参见例如上述本地存储器16、106、406、456、606、806、856、886、954和2023中的任一个)。以下关于图22A至图22B和图23A至图23C提供步骤2061的更多细节。
在步骤2062中,响应于从主机***接收到数据操纵指令,存储器/存储***中的本地计算引擎对存储在持久性存储装置中的数据执行数据操纵操作,其中计算引擎使用本地存储器来执行其数据操纵操作。例如,计算引擎可以在计算期间使用本地存储器存储数据、存储计算或操作的结果等。计算引擎确定数据操纵操作的结果。例如,如果数据操纵操作包括搜索满足特定标准的记录的大量数据,那么数据操纵操作的结果包括满足所提供的标准的记录。数据操纵操作可以是上面讨论的操作中的任一个。
在步骤2063中,控制器向主机***传达数据操纵操作的完成状态和数据操纵操作的结果中的至少一者。在大多数的情况下,发送到主机的数据操纵操作的结果在大小上显著小于从持久性存储装置访问并用于在步骤2062中执行数据操纵操作的数据。
图22A和图22B提供了本地存储器的示例的框图,描绘了在执行数据操纵操作时如何重新分配本地存储器(步骤2061)。具体地,图22A示出了根据基于设备的闪存转换层(FTL)实施方式可存储在存储***的本地存储器(参见例如上述本地存储器16、106、406、456、606、806、856、886、954和2023中的任一个)中的示例性数据,例如,其中逻辑到物理地址转换由存储设备(例如,在SSD中)或存储设备的一个或多个部件诸如控制器执行。在基于设备的FTL实施方式中,来自主机***以执行存储器操作的命令一般指定逻辑地址(在本文中也称为逻辑地址信息),并且主机一般不执行任何逻辑到物理地址转换。应当注意,术语“逻辑地址”是指主机***的地址空间(例如,逻辑地址空间)中的逻辑地址,而术语“物理地址”是指存储***或存储设备的地址空间(例如,物理地址空间)中的物理地址。图22A示出了在正常操作模式期间可存储在本地存储器中的示例性数据,以及在数据操纵模式期间可存储在本地存储器中的示例性数据。
参考图22A中的正常操作模式,在一些基于设备的FTL实施方式中,控制器在正常操作模式下接收来自主机***的命令以对存储在持久性存储装置中的数据执行存储器操作(例如,读取、写入和/或擦除)。主机命令指定关于要被执行存储器操作的所存储的数据的逻辑地址信息。在一些实施方案中,在正常操作模式中,本地存储器2023(其可以表示上述存储器中的任一个)存储地址转换表2102-1(或地址转换信息或条目的高速缓存)。在一些实施方案中,地址转换表2102-1将逻辑地址与持久性存储装置的相应部分的相应物理地址相关联。控制器使用地址转换表2102-1将由主机命令指定的逻辑地址映射到在持久性存储装置中存储有数据的对应物理地址。
在一些实施方案中,在正常操作模式中,本地存储器2023的至少一部分用作用于读取操作的读取缓冲器2104。例如,响应于来自主机***的用于从一个或多个逻辑地址读取数据的命令,控制器使用地址转换表2102-1来确定持久性存储装置的相应部分的对应于一个或多个逻辑地址的一个或多个相应物理地址。在一些实施方案中,控制器从所确定的一个或多个物理地址读取数据并将所读取的数据存储在读取缓冲器2104中,其中数据可提供给主机***。
在一些实施方案中,在正常操作模式中,本地存储器2023的至少一部分用作用于写入操作的写入缓冲器2106。在一个示例中,主机***向控制器发送写入命令(例如,经由主机接口2024,图20),其中写入命令包括要写入的数据并指定要将数据写入到的一个或多个逻辑地址。在一些实施方案中,要写入的数据保存在写入缓冲器2106中。在一些实施方案中,控制器使用地址转换表2102-1来确定持久性存储装置的相应部分的对应于一个或多个逻辑地址的一个或多个相应物理地址并将数据从写入缓冲器2106写入在持久性存储装置中所确定的一个或多个物理地址。
参考图22A中的数据操纵模式,在一些基于设备的FTL实施方式中,控制器从主机***接收数据操纵指令以对存储在持久性存储装置中的数据执行数据操纵操作(例如,计算,诸如扫描、过滤、聚合、分类、连接或分组)。在一些实施方案中,控制器响应于接收到数据操纵指令而改变为数据操纵操作模式。在一些实施方案中,在接收到数据操纵指令之前,本地存储器2023存储地址转换表2102-1(例如,包括将逻辑地址映射到物理地址的多个L2P条目)以及任选地读取缓冲器2104和/或写入缓冲器2106。
在一些实施方案中,响应于接收到数据操纵指令,控制器(或控制器的一个或多个部件诸如计算模块)重新分配(参见图21的步骤2061)本地存储器以用于执行数据操纵指令。在一些实施方案中,将存储在读取缓冲器2104中的数据从本地存储器2023中逐出(例如,因为可以稍后从持久性存储装置中再次检索存储在读取缓冲器2104中的数据),并且本地存储器的用于读取缓冲器2104的部分被重新分配以用于数据操纵。在一些实施方案中,将存储在写入缓冲器2106中的数据传送到持久性存储装置(例如,写入操作完成),并且本地存储器2023的用于写入缓冲器2106的部分被重新分配以用于数据操纵。
在基于设备的FTL实施方式中,数据操纵指令指定对应于要被执行数据操纵操作的数据的一个或多个逻辑地址。在一些实施方案中,响应于接收到数据操纵指令,控制器确定与由数据操纵指令使用的一个或多个逻辑地址(例如,对应于要处理的数据)相关联的一个或多个相关L2P条目。在一些实施方案中,相关L2P条目(例如,由数据操纵指令使用的那些)是地址转换表中的L2P条目的子集。在一些实施方案中,控制器将相关L2P条目保留在本地存储器中并从本地存储器中逐出(或以其他方式停止将其存储在本地存储器中)未由数据操纵指令指定或使用的L2P条目的至少子集。
如图22A中的数据操纵模式所示,响应于接收到数据操纵指令(并且在重新分配之后),本地存储器2023在数据操纵模式中存储所保留的地址转换条目2102-2(例如,相关L2P条目)和从主机接收的数据操纵指令2108。另外,本地存储器2023的一部分被分配为工作存储器2110以用于执行数据操纵指令2108(例如,通过计算模块,诸如计算模块2010,图20)。在一些实施方案中,控制器(或计算模块)根据数据操纵指令2108对所存储的数据执行数据操纵操作并确定数据操纵操作的结果2112。在一些实施方案中,数据操纵结果2112存储在本地存储器2023中(例如,存储在工作存储器2110的一部分中)。
从图22A的本地存储器2023在正常操作模式和数据操纵模式之间的改变可以看出,本地存储器2023的重新分配包括基于一个或多个数据操纵指令而改变在本地存储器中分配用于逻辑到物理转换信息的空间量。在图22A的实施方案中,通过减小在本地存储器中分配用于地址转换的空间来改变在本地存储器中分配用于逻辑到物理转换信息的空间量。通过从本地存储器中删除关于未由一个或多个数据操纵指令访问的逻辑地址的地址转换信息来减小在本地存储器中分配用于地址转换的空间。在一个实施方案中,存储器***从本地存储器中删除关于在高速缓存中未由一个或多个数据操纵指令访问的所有逻辑地址的地址转换信息。
图22B示出了根据基于主机的闪存转换层(FTL)实施方式可存储在本地存储器2023中的示例性数据,例如,其中逻辑到物理地址转换至少部分地由主机***执行。图22B示出了在正常操作模式期间可存储在本地存储器中的示例性数据,以及在数据操纵模式期间可存储在本地存储器中的示例性数据。
参考图22B中的正常操作模式,在一些基于主机的FTL实施方式中,控制器在正常操作模式下接收来自主机***的命令以对存储在持久性存储装置中的数据执行存储器操作(例如,读取、写入和/或擦除)。在一些基于主机的FTL实施方式中,逻辑到物理地址转换表存储在主机***处(例如,而不是在存储设备中诸如在本地存储器2023中),并且主机***执行逻辑到物理地址转换以确定存储有数据的物理地址。换句话说,在一些这样的实施方案中,主机***执行应用程序,该应用程序使用逻辑地址来指定要被执行操作的数据,并且主机***还执行逻辑到物理地址转换以确定存储有数据的物理地址。
在一些实施方案中,在正常操作模式中,本地存储器2023的至少一部分用作用于读取操作的读取缓冲器2104和/或用于写入操作的写入缓冲器2106。例如,响应于主机读取命令,控制器从持久性存储装置中的一个或多个物理地址(例如,由主机读取命令指定的,在基于主机的FTL实施方式中)读取数据并将所读取的数据存储在读取缓冲器2104中,其中读取数据可提供给主机***。在另一个示例中,主机***向控制器发送写入命令(例如,经由主机接口2024,图20),其中写入命令包括要写入的数据并指定要将数据写入到的一个或多个物理地址。在一些实施方案中,要写入的数据在写入持久性存储装置之前保存在写入缓冲器2106中(例如,用于进一步处理)。
参考图22B中的数据操纵模式,在一些基于主机的FTL实施方式中,控制器从主机***接收数据操纵指令以对存储在持久性存储装置中的数据执行数据操纵操作。在一些实施方案中,控制器响应于接收到数据操纵指令而改变为数据操纵操作模式。在一些实施方案中,在接收到数据操纵指令之前,本地存储器2023存储读取缓冲器2104和/或写入缓冲器2106。在一些实施方案中,响应于接收到数据操纵指令,本地存储器2023的分配用于读取缓冲器2104和/或写入缓冲器2106的部分被重新分配以执行数据操纵指令,如上面参考图22A所述。
在一些实施方案中,数据操纵指令,或更具体地是用于对所存储的数据执行数据操纵操作的指令,使用逻辑地址来识别所存储的数据。如上所述,逻辑到物理地址转换表可以存储在主机***中。因此,在一些实施方案中,主机***确定需要哪个地址转换信息(例如,地址转换表的哪些L2P条目)来执行地址转换以将由数据操纵指令使用的逻辑地址映射到用于所存储的数据的对应物理地址。在一些实施方案中,主机***包括在数据操纵指令中的相关地址转换信息(例如,相关L2P条目)或包括相关地址转换信息和数据操纵指令。
如图22B中的数据操纵模式所示,响应于接收到数据操纵指令(并且在重新分配之后),本地存储器2023在数据操纵模式中存储所接收的地址转换条目2103(例如,由指令引用以用于数据操纵操作的相关L2P条目)和从主机接收的数据操纵指令2108。应当注意,所接收的地址转换条目2103在本文中有时统称本地存储器中的L2P高速缓存。另外,如上面参考图22A中的数据操纵模式所述,在一些实施方案中,本地存储器2023的一部分被分配为用于执行数据操纵指令2108的工作存储器2110,并且对所存储的数据执行的数据操纵操作的结果任选地存储在本地存储器2023中(例如,存储在工作存储器2110的一部分中)。
从图22B的本地存储器2023在正常操作模式和数据操纵模式之间的改变可以看出,本地存储器2023的重新分配包括基于一个或多个数据操纵指令而改变在本地存储器中分配用于逻辑到物理转换信息的空间量。在图22B的实施方案中,通过将在本地存储器中分配用于逻辑到物理转换信息的空间从零增加到某个正数来改变在本地存储器中分配用于逻辑到物理转换信息的空间量。这是通过将与一个或多个数据操纵指令相关联的L2P高速缓存条目(关于从主机接收的逻辑到物理转换信息)添加到本地存储器来实现的,因此本地存储器从没有逻辑到物理转换信息转变到一些逻辑到物理转换信息2013。在一个实施方案中,与一个或多个数据操纵指令相关联的L2P高速缓存条目是关于由一个或多个数据操纵指令访问(或以其他方式使用)的逻辑地址的L2P高速缓存条目。
应当注意,图22A和图22B中的项未按比例绘制。例如,在典型的实施方式中,所保留的地址转换条目2102-2和数据操纵指令2108所需的本地存储器2023的量远小于本地存储器2023的分配为工作存储器2110的量。在一些实施方案中,工作存储器2110用于暂时存储从非易失性存储器读取的数据、由数据操纵指令2108生成的中间结果,以及向提供数据操纵指令2108的主机***报告或可提供给该主机***的结果2112。
图23A是描述用于在执行数据操纵操作时重新分配本地存储器的过程的一个实施方案的流程图。图23A的过程提供了图21的步骤2061的一个示例性实施方式的更多细节。图23A的过程可以由图1至图20的实施方案中的任一个的控制器和/或计算引擎执行。图23A描述了为图22A的基于设备的FTL实施方式重新分配本地存储器。在图23A的步骤2140中,访问来自主机的数据操纵指令(在图21的步骤2060中接收到的)。在一些实施方案中,数据操纵指令将包括对由数据操纵指令使用或访问的逻辑地址的指示。例如,逻辑地址(或其他数据结构)的列表(或其他数据结构)将与数据操纵指令一起提供。如果数据操纵指令包括对逻辑地址的指示(步骤2142),那么在步骤2144中访问由数据操纵指令使用的逻辑地址列表。如果数据操纵指令不包括对逻辑地址的指示(步骤2142),那么在步骤2146中将通过扫描数据操纵指令来推断由数据操纵指令使用或访问的逻辑地址。在步骤2148中(在步骤2144或2146中的任一个之后)将关于由一个或多个数据操纵指令使用或访问的逻辑地址的逻辑到物理转换信息存储(包括继续存储)在本地存储器中。在步骤2150,从本地存储器中删除(或逐出)关于未由指令使用的逻辑地址的逻辑到物理转换信息。作为步骤2148和2150的结果,本地存储器从正常操作模式重新分配到数据操纵模式,如图22A所示,其中地址转换表/高速缓存2102-1被所保留的地址转换条目2102-2替换,造成在本地存储器中较小量的空间用于逻辑到物理转换信息,并且在本地存储器中更多的空间可供用于计算引擎以支持数据操纵指令(例如,用于数据操纵指令的工作存储器2110)。
图23B是描述用于在执行数据操纵操作时重新分配本地存储器的过程的另一个实施方案的流程图。图23A的过程提供了图21的步骤2061的另一个示例性实施方式的更多细节。图23A的过程可以由图1至图20的实施方案中的任一个的控制器和/或计算引擎执行。图23B描述了为图22A的基于设备的FTL实施方式重新分配本地存储器。在图23B的步骤2160中,SSD(例如,控制器和/或计算引擎)通过来自所接收的列表中的一个或多个数据操纵指令(类似于图23A的步骤2144)或通过推断(类似于图23A的步骤2146)来确定使用或访问的逻辑地址。在步骤2162中,在本地存储器中存储关于由一个或多个数据操纵指令访问的逻辑地址的子集的逻辑到物理转换信息。在一个实施方案中,一个或多个数据操纵指令正在访问逻辑地址序列或物理地址序列。因此,为了节省存储器中的空间,存储器仅需要存储逻辑地址和物理地址序列(或指示全集的另一个子集)的起始和结束。在步骤2164中,从本地存储器中删除关于不在子集中的逻辑地址的逻辑到物理转换信息。作为步骤2162和2164的结果,本地存储器从正常操作模式重新分配到数据操纵模式,如图22A所示,其中地址转换表/高速缓存2102-1被所保留的地址转换条目2102-2(即,子集)替换,造成在本地存储器中少量的空间用于逻辑到物理转换信息,并且在本地存储器中更多的空间可供用于计算引擎以支持数据操纵指令(例如,用于数据操纵指令的工作存储器2110)。
当执行数据操纵操作时(参见图21的步骤2062),控制器和/或计算引擎基于关于在子集中的由指令使用的逻辑地址的物理地址而导出(例如,插值)关于不在子集中的由指令使用的逻辑地址的物理地址。在一个示例中,如果***知道逻辑和/或物理地址序列的起始和结束,那么它可以对序列的其余部分进行插值。
图23C是描述用于在执行数据操纵操作时重新分配本地存储器的过程的另一个实施方案的流程图。图23A的过程提供了图21的步骤2061的另一个示例性实施方式的更多细节。图23A的过程可以由图1至图20的实施方案中的任一个的控制器和/或计算引擎执行。图23C描述了为图22B的基于主机的FTL实施方式重新分配本地存储器。在图23C的步骤2180中,控制器从主机接收数据操纵指令并将一个或多个数据操纵指令提供到计算引擎。在步骤2182中,用数据操纵指令接收关于由数据操纵指令使用的逻辑地址的逻辑到物理转换信息。在步骤2184中,将关于由数据操纵指令使用的逻辑地址的所接收的逻辑到物理转换信息添加到本地存储器(例如,参见图22B的所接收的地址转换条目2103)。
在步骤2186中,在计算引擎执行数据操纵操作(参见图21的步骤2062)之后,基于数据操纵操作而更新本地存储器中的逻辑到物理转换信息。也就是说,可以更新一些L2P条目以反映数据的写入或移动。在步骤2188中,控制器向主机报告对逻辑到物理转换信息的更新。执行步骤2188,因为在该实施方案中,主机正在维护L2P表。
图24A示出了根据一些实施方案的在存储***中执行数据操纵操作的方法的概念流程图表示。具体地,图24A示出了使用基于设备的FTL实施方式来执行数据操纵操作的方法(参见图22A、图23A和图23B)。在一些实施方案中,图24A的方法由存储设备(例如,SSD)或存储设备的一个或多个部件诸如控制器和/或与控制器通信或包括在控制器中的计算引擎执行。在一些实施方案中,图24A的方法由存储在非暂态计算机可读存储介质中并由设备的一个或多个处理器诸如一个或多个处理单元(CPU)2022(图20)或计算引擎执行的指令来管控。在一些实施方案中,操作至少部分地由主机通信模块(例如,主机通信模块2030,图20)、数据读取模块(例如,数据读取模块2032,图20)、数据写入模块(例如,数据写入模块2034,图20)、计算模块管理器(例如,计算模块管理器2040,图20)或计算模块管理器的部件(例如,本地存储器重新分配模块2042,图20)以及闪存转换层(FTL)模块(例如,FTL模块2044,图20)来执行。
在一些实施方案中,图24A的一些操作(或另选地是步骤)在与存储设备可操作地耦接的主机***处执行(例如,通过“到主机的PCIe接口”或主机接口2024,图20),并且其他操作在存储设备处执行。在这些实施方案中的一些中,该方法至少部分地由存储在非暂态计算机可读存储介质中并由主机***的一个或多个处理器(例如,硬件处理器)执行的指令来管控。为了便于解释,下面描述由控制器执行的方法,该控制器包括计算引擎或与计算引擎通信并与本地存储器耦接。图24A的方法也可以部分地或全部地由计算引擎执行。
在一些实施方案中,该方法开始于控制器以正常操作模式操作,如上面参考图22A的正常操作模式所述。
主机***发送(2204a)而控制器接收(2204b)数据操纵指令,该数据操纵指令包括用于对存储在持久性存储装置中的数据和关于所存储的数据的逻辑地址(LBAs)执行数据操纵操作的指令。
在一些实施方案中,响应于接收到数据操纵指令,计算引擎或控制器重新分配(2206)本地存储器(例如,将本地存储器2023从针对正常操作模式示出的分配情况重新分配成针对数据操纵模式示出的分配情况,如上面参考图22A所述)。在一些实施方案中,重新分配包括基于一个或多个数据操纵指令而改变在本地存储器中分配用于逻辑到物理转换信息的空间量。
接着,在一些实施方案中,控制器模块使用数据操纵指令中指定的LBA执行(2208)地址转换以确定存储在持久性存储装置中的数据的对应物理地址(例如,使用所保留的地址转换条目2102-2,图22A)。
在一些实施方案中,控制器执行(2210)至少一个读取操作以从持久性存储装置读取所存储的数据(2211)。在一些实施方案中,在从持久性存储装置读取之后,将读取数据存储在本地存储器中(例如,存储在工作存储器2110中,用于执行数据操纵指令,图22A)以用于执行一个或多个数据操纵操作。
接着,计算引擎使用本地存储器(例如,使用工作存储器2110,图22A)对所存储的数据(2211)执行(2212)数据操纵操作以确定数据操纵操作的结果。在一些实施方案中,结果存储在本地存储器中(例如,数据操纵结果2112,图22A)。
在一些实施方案中,计算引擎通知(2214)主机***数据操纵操作已经完成(例如,计算引擎向主机传达完成状态)。
响应于完成状态的通知,在一些实施方案中,主机***发送(2216)命令以请求数据操纵操作的结果,并且任选地将结果存储到持久性存储装置(例如,在基于设备的FTL实施方式中,主机***指定一个或多个LBA,并且计算模块执行地址转换以确定存储有数据操纵结果的一个或多个对应物理地址。
响应于关于数据操纵操作的结果的主机命令(2216),计算引擎和/或控制器将结果(例如,数据操纵结果2112,图22A)返回(2218)到主机***(2220b)。如果主机***还指示将结果存储到持久性存储装置,那么控制器和/或计算引擎将结果写入(2218)到持久性存储装置(2220a)。
在一些实施方案中,在接收到数据操纵操作的结果(2220b)之后,主机***发送(2222)用于控制器恢复正常操作的命令。作为响应,控制器恢复(2224)正常操作(例如,控制器将本地存储器重新分配成配置用于正常操作的分配情况,诸如通过恢复地址转换表2102-1的被逐出的部分,图22A)。
图24B示出了根据一些实施方案的在存储***中执行数据操纵操作的方法的概念流程图表示。具体地,图24B示出了使用基于主机的FTL实施方式来执行数据操纵操作的方法(参见图22B)。在一些实施方案中,图24B的方法由存储设备(例如,SSD)或存储设备的一个或多个部件诸如控制器和/或与控制器通信或包括在控制器中的计算引擎执行。在一些实施方案中,图24B的方法由存储在非暂态计算机可读存储介质中并由设备的一个或多个处理器执行的指令来管控。在一些实施方案中,图24B的操作至少部分地由主机通信模块(例如,主机通信模块2030,图20)、数据读取模块(例如,数据读取模块2032,图20)、数据写入模块(例如,数据写入模块2034,图20)、计算模块管理器(例如,计算模块管理器2040,图20)或计算模块管理器的部件(例如,本地存储器重新分配模块2042,图20)以及地址转换模块(例如,地址转换模块2050,图20)来执行。
在一些实施方案中,一些操作(或另选地是步骤)在与存储设备可操作地耦接的主机***处执行(例如,通过“图3的到主机150的PCIe接口”或图20的主机接口2024),并且其他操作在存储设备处执行。在这些实施方案中的一些中,图24B的方法至少部分地由存储在非暂态计算机可读存储介质中并由主机***的一个或多个处理器(例如,硬件处理器)执行的指令来管控。为了便于解释,下面描述由控制器执行的方法,该控制器包括计算引擎或与计算引擎通信并与本地存储器耦接。图24B的方法也可以部分地或完全地由计算引擎执行。
在一些实施方案中,该方法开始于控制器以正常操作模式操作,如上面参考图22B中的正常操作模式所述。
主机***发送(2254a)而控制器接收(2254b)数据操纵指令和关于由数据操纵指令访问的所存储的数据的逻辑到物理地址转换信息(L2P高速缓存条目)(例如,L2P高速缓存条目存储在本地存储器2023中作为所接收的地址转换条目2103,图22B),该数据操纵指令包括用于对存储在持久性存储装置中的数据执行数据操纵操作的指令(例如,处理操作指令存储在本地存储器2023中作为数据操纵指令2108的一部分,图22B)。
在一些实施方案中,响应于接收到数据操纵指令,控制器或计算引擎重新分配(2256)本地存储器(例如,将本地存储器2023从针对正常操作模式示出的分配情况重新分配成针对数据操纵模式示出的分配情况,如上面参考图22B所述)。在一些实施方案中,重新分配包括基于一个或多个数据操纵指令而改变在本地存储器中分配用于逻辑到物理转换信息的空间量。
接着,在一些实施方案中,控制器使用来自主机***的数据操纵指令中提供的L2P高速缓存执行(2258)地址转换以确定存储在持久性存储装置中的数据的对应物理地址。例如,在一些实施方案中,处理操作指令使用逻辑地址,并且计算模块使用由主机提供的L2P高速缓存执行地址转换以将逻辑地址转换为在持久性存储装置中存储有数据的物理地址。
在一些实施方案中,控制器执行(2260)至少一个读取操作以从持久性存储装置读取所存储的数据(2261)。在一些实施方案中,在从持久性存储装置读取之后,将读取数据存储在本地存储器中(例如,存储在工作存储器2110中,用于执行数据操纵指令,图22B)以用于执行一个或多个数据操纵操作。
接着,计算引擎使用本地存储器(例如,使用工作存储器2110,图22B)对所存储的数据(2261)执行(2262)数据操纵操作以确定数据操纵操作的结果。在一些实施方案中,结果存储在本地存储器中(例如,数据操纵结果2112,图22B)。
在一些实施方案中,控制器或计算引擎通知(2264)主机***数据操纵操作已经完成(例如,计算模块向主机传达完成状态)。
响应于通知完成状态,在一些实施方案中,主机***发送(2266)命令以请求数据操纵操作的结果以及任选地将结果存储到持久性存储装置(例如,在基于主机的FTL实施方式中,主机***可以指定存储结果的一个或多个逻辑地址(例如,LBA)并还提供对应L2P条目,并且控制器分配对应于指定逻辑地址的物理地址并将数据操纵结果存储(2270a)在持久性存储器中的所分配的物理地址处)。
响应于关于数据操纵操作的结果的主机命令(2266),控制器将结果(例如,数据操纵结果2112,图22B)返回(2268)到主机***(2270b)。如果主机***还指示控制器将结果存储到持久性存储装置,那么控制器将结果写入(2268)到持久性存储装置(2270a)。
在一些实施方案中,根据基于主机的FTL实施方式,控制器根据将结果存储到持久性存储装置来更新(2272)存储在本地存储器中的L2P高速缓存(例如,更新所接收的地址转换条目2103,图22B)(例如,地址转换条目2103中的一个或多个被更新以包括持久性存储装置中的一个或多个物理地址,其对应于写入有数据操纵结果的一个或多个主机指定的逻辑地址,从而更新在本地存储器中的L2P高速缓存)。
在一些实施方案中,主机***从控制器接收(2274)更新的L2P高速缓存或L2P高速缓存的更新的部分。在一些实施方案中,主机***将其地址转换表与存储在控制器的本地存储器中的更新的L2P高速缓存同步(例如,主机***请求更新的L2P高速缓存),并且在一些实施方案中,控制器自动地将更新的L2P高速缓存条目发送到主机***(例如,控制器向主机***发送更新的L2P高速缓存或更新的L2P条目并还向主机***发送数据操纵操作的结果)。
在一些实施方案中,在接收到数据操纵操作的结果(2270b)以及任选的更新的L2P高速缓存(2274)之后,主机***发送(2276)用于控制器恢复正常操作的命令。作为响应,控制器恢复(2278)正常操作(例如,控制器将本地存储器重新分配成配置用于正常操作的分配情况,如例如图22B所示)。
本领域的技术人员将认识到,图21、图23A至图23C以及图24A和图24B的方法的操作的不同的排序是可能的,并且操作的排序和组合的变化是可能的,同时实现相同的结果。例如,在一些实施方案中,在通知主机数据操纵操作完成之前或与之结合将结果存储到持久性存储装置(例如,在一些实施方案中,来自主机***的数据操纵指令还包括用于在执行数据操纵操作之后将数据操纵的结果写入持久性存储装置的指令以及任选的寻址信息)。在一些实施方案中,主机***通过指示控制器恢复正常操作来获得数据操纵操作的结果并然后向控制器发送(正常操作)读取命令以从持久性存储装置读取所存储的结果(例如,在结果存储在持久性存储装置中之后,即使在控制器不通过发送读取命令而处于数据操纵模式时,主机***也可以获得所存储的结果)。
一个实施方案包括非易失性存储***,该非易失性存储***包括:控制器;本地存储器,该本地存储器与控制器通信;非易失性存储器,该非易失性存储器与控制器通信;以及计算引擎,该计算引擎与控制器和本地存储器通信。计算引擎被配置为从在非易失性存储***外部的实体接收一个或多个数据操纵指令并响应于一个或多个数据操纵指令而使用本地存储器对存储在非易失性存储器中的数据执行一个或多个数据操纵操作。本地存储器被配置为使得基于一个或多个数据操纵指令而改变在本地存储器中分配用于逻辑到物理转换信息的空间量。
一个实施方案包括操作存储***的方法,该存储***包括持久性存储装置、控制器和用于控制器的本地存储器,该方法包括:在控制器处从主机***接收数据操纵指令,数据操纵指令包括用于对存储在持久性存储装置中的数据执行一个或多个数据操纵操作的指令;响应于从主机***接收到数据操纵指令,通过删除关于未由数据操纵指令访问的地址的地址转换信息,减小在本地存储器中分配用于地址转换的空间;响应于从主机***接收到数据操纵指令,使用存储***中的本地计算核心和用于控制器的本地存储器对存储在持久性存储装置中的数据执行一个或多个数据操纵操作以确定一个或多个数据操纵操作的结果;以及向主机***传达一个或多个数据操纵操作的完成状态和一个或多个数据操纵操作的结果中的至少一者。
一个实施方案包括非易失性存储***,该非易失性存储***包括:非易失性存储器封装,该非易失性存储器封装包括非易失性存储器和计算核心;本地存储器;以及与本地存储器(例如,易失性存储器)和非易失性存储器封装通信的用于进行以下操作的指令的装置:接收用于执行数据操纵操作的指令、使计算核心对存储在非易失性存储器中的数据执行数据操纵操作,以及基于在所接收的指令中使用的是哪些逻辑地址来重新分配在本地存储器中用于逻辑到物理转换数据的空间量。在一些实施方案中,用于接收指令、使计算核心执行数据操纵操作并重新分配的装置可以由控制器和/或计算引擎实现。上面讨论的示例包括控制器12(图1)、控制器110(图2)、控制器402(图7)、控制器452(图8)、控制器602(图10)、控制器802(图12)、控制器852(图13)、控制器882(图13A)、控制器952(图15)、控制器2001(图20)、计算机引擎22(图1)、计算引擎114(图2)、计算引擎412(图7)、计算引擎464(图8)、计算引擎616(图10)、计算引擎824(图12)、计算引擎862(图13)、计算引擎892或894(图13A)、计算引擎970(图15)、计算引擎2010(图20)和CPU 2022(图20)。这些电路执行图21、图22A、图22B、图23A、图23B、图23C、图24A和图24B中描述的过程。
出于本文件的目的,说明书中提到“实施方案”、“一个实施方案”、“一些实施方案”或“另一个实施方案”可用于描述不同的实施方案或相同的实施方案。
出于本文件的目的,连接可为直接连接或间接连接(例如,经由一个或多个其他部件)。在一些情况下,当元件被提及连接或耦接到另一个元件时,该元件可直接连接到另一个元件,或者经由居间元件间接连接到另一个元件。当元件被提及直接连接到另一个元件时,则在该元件与另一个元件之间没有居间元件。如果两个设备是直接连接或间接连接的,则两个设备是“通信”的,使得它们能够在它们之间进行电子信号通信。
出于本文档的目的,术语“基于”可理解为“至少部分地基于”。
出于本文档的目的,在没有附加上下文的情况下,诸如“第一”对象、“第二”对象和“第三”对象的数字术语的使用可能不意味着对象的排序,而是可用于识别目的以识别不同的对象。
出于本文档的目的,对象的术语“组”可指一个或多个对象的“组”。
出于说明和描述的目的已提供了上述详细描述。其并非旨在详尽的或旨在限制本发明所公开的精确形式。根据以上教导内容,很多修改形式和变型形式都是可能的。选择所述实施方案以便最好地解释所建议的技术的原理及其实际应用,从而使本领域的其他技术人员能够在各种实施方案中和适合于设想的具体使用的各种修改中最好地利用它。本发明的范围旨在由所附权利要求书限定。
Claims (19)
1.一种非易失性存储***,包括:
控制器,所述控制器包括处理器;
本地存储器,所述本地存储器连接到所述控制器,所述本地存储器被配置为存储逻辑到物理转换信息,所述控制器被配置为基于存储在所述本地存储器中的所述逻辑到物理转换信息而执行逻辑地址的逻辑到物理转换;
非易失性存储器,所述非易失性存储器连接到所述控制器;以及
计算引擎,所述计算引擎连接到所述控制器和所述本地存储器,所述计算引擎与所述处理器分开,所述计算引擎被配置为:
从在所述非易失性存储***外部的实体接收一个或多个数据操纵指令,并且
响应于所述一个或多个数据操纵指令,使用在所述本地存储器中用于所述一个或多个数据操纵指令的工作区,对来自所述非易失性存储器的数据执行一个或多个数据操纵操作;
其中所述控制器还被配置为响应于所述一个或多个数据操纵指令,通过以下方式在所述本地存储器中重新分配空间:在所述本地存储器中减少分配给逻辑到物理转换信息的空间,并在所述本地存储器中增加分配用于所述一个或多个数据操纵指令的所述工作区的空间。
2.根据权利要求1所述的非易失性存储***,其中:
所述控制器还被配置为通过以下方式在所述本地存储器中重新分配空间:使用所述一个或多个数据操纵指令接收逻辑地址的指示并从所述本地存储器中删除未包括在所述指示中的逻辑地址的逻辑到物理转换信息。
3.根据权利要求1所述的非易失性存储***,其中:
所述控制器还被配置为通过以下方式在所述本地存储器中重新分配空间:推断由所述一个或多个数据操纵指令访问的逻辑地址并从所述本地存储器中删除未由所述一个或多个数据操纵指令访问的逻辑地址的逻辑到物理转换信息。
4.根据权利要求1所述的非易失性存储***,其中:
所述控制器还被配置为确定由所述一个或多个数据操纵指令访问的逻辑地址并在所述本地存储器中存储由所述一个或多个数据操纵指令访问的逻辑地址的子集的逻辑到物理转换信息,并且在执行所述一个或多个数据操纵操作期间,基于在所述子集中的由所述指令使用的逻辑地址的物理地址而导出不在所述子集中的由所述指令使用的逻辑地址的物理地址。
5.根据权利要求1所述的非易失性存储***,其中:
所述控制器还被配置为:
从在所述非易失性存储***外部的所述实体接收所述一个或多个数据操纵指令并将所述一个或多个数据操纵指令提供给所述计算引擎;
从在所述非易失性存储***外部的所述实体接收由所述一个或多个数据操纵指令使用的逻辑地址的逻辑到物理转换信息;
通过将由所述一个或多个数据操纵指令使用的逻辑地址的所接收的逻辑到物理转换信息添加到所述本地存储器,改变在所述本地存储器中分配用于逻辑到物理转换信息的空间量;
以及
在所述计算引擎执行所述数据操纵操作之后,基于所述数据操纵操作而更新在所述本地存储器中的所述逻辑到物理转换信息并向在所述非易失性存储***外部的所述实体报告对所述逻辑到物理转换信息的更新。
6.根据权利要求1所述的非易失性存储***,其中:
所述控制器还被配置为从在所述非易失性存储***外部的所述实体接收所述一个或多个数据操纵指令并将所述一个或多个数据操纵指令提供给所述计算引擎;并且
所述控制器还被配置为向在所述非易失性存储***外部的所述实体传达所述一个或多个数据操纵操作的完成状态和所述一个或多个数据操纵操作的结果中的至少一者。
7.根据权利要求1所述的非易失性存储***,其中:
所述本地存储器还被配置为存储所述一个或多个数据操纵操作的结果。
8.根据权利要求1所述的非易失性存储***,还包括:
存储器封装,所述存储器封装与所述控制器分开并连接到所述控制器,所述存储器封装包括:一个或多个非易失性存储器管芯,所述一个或多个非易失性存储器管芯包括所述非易失性存储器、所述计算引擎和纠错引擎;
其中所述控制器包括前端处理器电路和连接到所述前端处理器电路的后端处理器电路,所述存储器封装连接到所述后端处理器电路,所述前端处理器电路被配置为实现执行所述逻辑到物理转换的闪存转换层,所述后端处理器电路被配置为在所述前端处理器电路的请求下管理所述存储器封装中的存储器操作。
9.根据权利要求8所述的非易失性存储***,其中:
所述控制器还包括附加的计算引擎;并且所述附加的计算引擎连接到所述本地存储器。
10.根据权利要求1所述的非易失性存储***,其中:
所述非易失性存储器包括三维存储器结构,其中多个存储器级形成在单个衬底上方,所述计算引擎定位在所述衬底上并位于所述三维存储器结构下方;并且
所述三维存储器结构、所述衬底和所述计算引擎包括单个存储器管芯。
11.根据权利要求1所述的非易失性存储***,其中:
所述控制器包括到主机的接口,所述计算引擎定位在到所述主机的所述接口的非易失性存储器侧。
12.根据权利要求1所述的非易失性存储***,其中:
所述控制器还被配置为在存储在所述本地存储器中的所述逻辑到物理转换信息中识别未由所述一个或多个数据操作指令使用的逻辑地址;并且
所述控制器还被配置为通过以下方式在所述本地存储器中减少空间:从所述本地存储器中删除未由所述一个或多个数据操纵指令使用的所述逻辑地址的逻辑到物理转换信息。
13.根据权利要求1所述的非易失性存储***,其中:
所述计算引擎还被配置为通过以下方式执行所述一个或多个数据操纵操作:搜索从所述非易失性存储器读取并存储在所述工作区中的一组数据,以便找到满足标准的在所述一个或多个数据操纵操作中识别的所述一组数据的子集。
14.一种操作存储***的方法,所述存储***包括持久性存储装置、控制器、用于所述控制器的本地计算核心和本地存储器,所述持久性存储装置存储逻辑地址到物理地址转换表,所述本地存储器存储所述持久性存储装置中的所述逻辑地址到物理地址转换表的高速缓存,所述方法包括:
在所述控制器处从主机***接收数据操纵指令,所述数据操纵指令包括用于对存储在所述持久性存储装置中的数据执行一个或多个数据操纵操作的指令,所述数据操纵指令指代逻辑地址;
响应于从所述主机***接收到所述数据操纵指令,通过以下方式在所述本地存储器中重新分配空间:在所述本地存储器中减少分配给所述持久性存储装置中的所述逻辑地址到物理地址转换表的所述高速缓存的空间,包括删除未由所述数据操纵指令访问的逻辑地址的地址转换信息,以及在所述本地存储器中增加分配用于所述一个或多个数据操纵操作的在所述本地存储器中的工作区的空间;
响应于从所述主机***接收到所述数据操纵指令,使用所述本地计算核心和在所述本地存储器中的所述工作区执行所述一个或多个数据操纵操作,以确定所述一个或多个数据操纵操作的结果;以及
向所述主机***传达所述一个或多个数据操纵操作的完成状态和所述一个或多个数据操纵操作的所述结果中的至少一者。
15.根据权利要求14所述的方法,还包括:
在所述本地存储器中存储所述一个或多个数据操纵操作的结果,所述执行所述一个或多个数据操纵操作使用存储在所述本地存储器中的地址转换信息;以及
响应于执行所述一个或多个数据操纵操作,更新存储在所述本地存储器中的所述地址转换信息。
16.根据权利要求14所述的方法,其中:
在所述本地存储器中减少分配给所述持久性存储装置中的所述逻辑地址到物理地址转换表的所述高速缓存的空间,包括删除未由所述数据操纵指令访问的所有逻辑地址的地址转换信息。
17.一种非易失性存储***,包括:
非易失性存储器封装,所述非易失性存储器封装包括非易失性存储器和计算核心,所述非易失性存储器被配置为存储表示用于在逻辑地址和物理地址之间进行转换的信息的多个L2P表;
本地存储器,所述本地存储器与所述非易失性存储器分开,所述本地存储器被配置为存储存储在所述非易失性存储器中的所述多个L2P表的L2P高速缓存;以及
构件,所述构件与所述本地存储器和所述非易失性存储器封装通信,用于:接收执行数据操纵操作的指令,使所述计算核心对从所述非易失性存储器读取并存储在用于所述数据操纵操作的所述本地存储器的工作区中的数据执行所述操纵操作,
通过基于在所述接收到的指令中使用的逻辑地址而减少用于所述L2P高速缓存的空间,来在所述本地存储器中重新分配空间,以及增加用于所述数据操纵操作的所述本地存储器的工作区的空间。
18.根据权利要求17所述的非易失性存储***,其中:
用于重新分配空间的所述构件被配置为访问由所述指令使用的逻辑地址的标识,存储由所述指令使用的逻辑地址的逻辑到物理转换数据,以及删除未由所述指令使用的逻辑地址的逻辑到物理转换数据。
19.根据权利要求17所述的非易失性存储***,其中:
用于接收指令的所述构件被配置为从主机***接收代码和由所述代码使用的逻辑地址的逻辑到物理转换数据;
用于重新分配空间的所述构件被配置为将从所述主机***接收的逻辑到物理转换数据添加到所述L2P高速缓存;并且
在所述计算核心执行所述数据操纵操作之后,用于重新分配空间的所述构件还被配置为更新所述L2P高速缓存并向所述主机***报告对所述逻辑到物理转换数据的更新。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662414608P | 2016-10-28 | 2016-10-28 | |
US62/414,608 | 2016-10-28 | ||
US15/726,903 | 2017-10-06 | ||
US15/726,903 US10459644B2 (en) | 2016-10-28 | 2017-10-06 | Non-volatile storage system with integrated compute engine and optimized use of local fast memory |
PCT/US2017/055963 WO2018080785A1 (en) | 2016-10-28 | 2017-10-10 | Non-volatile storage system with integrated compute engine and optimized use of local fast memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109791519A CN109791519A (zh) | 2019-05-21 |
CN109791519B true CN109791519B (zh) | 2022-12-23 |
Family
ID=62019885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780058151.4A Active CN109791519B (zh) | 2016-10-28 | 2017-10-10 | 具有集成计算引擎的非易失性存储***和本地快速存储器的优化用途 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10459644B2 (zh) |
CN (1) | CN109791519B (zh) |
WO (1) | WO2018080785A1 (zh) |
Families Citing this family (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10318175B2 (en) * | 2017-03-07 | 2019-06-11 | Samsung Electronics Co., Ltd. | SSD with heterogeneous NVM types |
US10628326B2 (en) * | 2017-08-21 | 2020-04-21 | Micron Technology, Inc. | Logical to physical mapping |
US10409726B2 (en) | 2017-10-30 | 2019-09-10 | Micron Technology, Inc. | Dynamic L2P cache |
US10346346B1 (en) * | 2017-12-21 | 2019-07-09 | Xilinx, Inc. | Inline ECC function for system-on-chip |
KR20200022179A (ko) * | 2018-08-22 | 2020-03-03 | 에스케이하이닉스 주식회사 | 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법 |
US11320995B2 (en) | 2018-10-31 | 2022-05-03 | Western Digital Technologies, Inc. | Transferring computational operations to controllers of data storage devices |
US10831507B2 (en) | 2018-11-21 | 2020-11-10 | SambaNova Systems, Inc. | Configuration load of a reconfigurable data processor |
US11188497B2 (en) | 2018-11-21 | 2021-11-30 | SambaNova Systems, Inc. | Configuration unload of a reconfigurable data processor |
US10698853B1 (en) | 2019-01-03 | 2020-06-30 | SambaNova Systems, Inc. | Virtualization of a reconfigurable data processor |
US11132291B2 (en) * | 2019-01-04 | 2021-09-28 | Alibaba Group Holding Limited | System and method of FPGA-executed flash translation layer in multiple solid state drives |
US10768899B2 (en) | 2019-01-29 | 2020-09-08 | SambaNova Systems, Inc. | Matrix normal/transpose read and a reconfigurable data processor including same |
KR20200106739A (ko) | 2019-03-05 | 2020-09-15 | 에스케이하이닉스 주식회사 | 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
KR20200114052A (ko) * | 2019-03-27 | 2020-10-07 | 에스케이하이닉스 주식회사 | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 |
KR20210011201A (ko) | 2019-07-22 | 2021-02-01 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 온도 조절 방법 |
KR20210011176A (ko) | 2019-07-22 | 2021-02-01 | 에스케이하이닉스 주식회사 | 메모리 시스템의 액세스 동작 방법 및 장치 |
KR20210011216A (ko) | 2019-07-22 | 2021-02-01 | 에스케이하이닉스 주식회사 | 메모리 시스템의 메타 데이터 관리 방법 및 장치 |
KR20200119059A (ko) * | 2019-04-09 | 2020-10-19 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
KR20200122086A (ko) | 2019-04-17 | 2020-10-27 | 에스케이하이닉스 주식회사 | 메모리 시스템에서 맵 세그먼트를 전송하는 방법 및 장치 |
US11294825B2 (en) * | 2019-04-17 | 2022-04-05 | SK Hynix Inc. | Memory system for utilizing a memory included in an external device |
KR20200139913A (ko) | 2019-06-05 | 2020-12-15 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 메타 정보 저장 장치 |
KR20210001546A (ko) | 2019-06-28 | 2021-01-06 | 에스케이하이닉스 주식회사 | 슬립모드에서 메모리 시스템의 내부데이터를 전송하는 장치 및 방법 |
US11386038B2 (en) | 2019-05-09 | 2022-07-12 | SambaNova Systems, Inc. | Control flow barrier and reconfigurable data processor |
CN112115067A (zh) * | 2019-06-21 | 2020-12-22 | 慧荣科技股份有限公司 | 闪存物理资源集合管理装置及方法及计算机可读取存储介质 |
US11055141B2 (en) | 2019-07-08 | 2021-07-06 | SambaNova Systems, Inc. | Quiesce reconfigurable data processor |
US10732878B1 (en) * | 2019-07-12 | 2020-08-04 | Western Digital Technologies, Inc. | Enabling secondary scratchpad cache with solid-state devices for low cost hosts |
US20210064278A1 (en) * | 2019-08-27 | 2021-03-04 | Micron Technology, Inc. | Managing attributes of memory components |
KR102287774B1 (ko) | 2019-11-01 | 2021-08-06 | 연세대학교 산학협력단 | 비휘발성 메모리를 이용한 로그 구조 병합 트리 기반의 데이터 베이스의 데이터 처리 방법 |
KR20210077443A (ko) * | 2019-12-17 | 2021-06-25 | 에스케이하이닉스 주식회사 | 메모리 장치 및 그 동작 방법 |
US11144471B1 (en) | 2020-05-07 | 2021-10-12 | Micron Technology, Inc. | Dual address encoding for logical-to-physical mapping |
US11321167B2 (en) | 2020-05-09 | 2022-05-03 | Western Digital Technologies, Inc. | Adaptive folding for integrated memory assembly |
US11301321B2 (en) | 2020-05-28 | 2022-04-12 | Western Digital Technologies, Inc. | Data shaping for integrated memory assembly |
US10991444B1 (en) | 2020-05-28 | 2021-04-27 | Western Digital Technologies, Inc. | Tiered read reference calibration |
US11188268B1 (en) | 2020-05-28 | 2021-11-30 | Western Digital Technologies, Inc. | Programmable processor in an integrated memory assembly |
US11170870B1 (en) | 2020-05-28 | 2021-11-09 | Western Digital Technologies, Inc. | On-chip-copy for integrated memory assembly |
US11068342B1 (en) | 2020-06-01 | 2021-07-20 | Western Digital Technologies, Inc. | Redundancy data in integrated memory assembly |
US11482296B2 (en) | 2020-06-03 | 2022-10-25 | Sandisk Technologies Llc | ECC in integrated memory assembly |
US11256591B2 (en) | 2020-06-03 | 2022-02-22 | Western Digital Technologies, Inc. | Die memory operation scheduling plan for power control in an integrated memory assembly |
US11488682B2 (en) | 2020-06-24 | 2022-11-01 | Sandisk Technologies Llc | Calibration for integrated memory assembly |
US11809908B2 (en) | 2020-07-07 | 2023-11-07 | SambaNova Systems, Inc. | Runtime virtualization of reconfigurable data flow resources |
US11782729B2 (en) | 2020-08-18 | 2023-10-10 | SambaNova Systems, Inc. | Runtime patching of configuration files |
US11392327B2 (en) | 2020-09-09 | 2022-07-19 | Western Digital Technologies, Inc. | Local data compaction for integrated memory assembly |
US11650932B2 (en) | 2020-10-25 | 2023-05-16 | Western Digital Technologies, Inc. | Integrated non-volatile memory assembly with address translation |
US11500587B2 (en) * | 2020-11-20 | 2022-11-15 | Samsung Electronics Co., Ltd. | System and method for in-SSD data processing engine selection based on stream IDs |
US11481154B2 (en) | 2021-01-15 | 2022-10-25 | Sandisk Technologies Llc | Non-volatile memory with memory array between circuits |
TW202314472A (zh) * | 2021-06-18 | 2023-04-01 | 韓商愛思開海力士有限公司 | 計算系統及其操作方法 |
US11409540B1 (en) | 2021-07-16 | 2022-08-09 | SambaNova Systems, Inc. | Routing circuits for defect repair for a reconfigurable data processor |
US11327771B1 (en) | 2021-07-16 | 2022-05-10 | SambaNova Systems, Inc. | Defect repair circuits for a reconfigurable data processor |
US11556494B1 (en) | 2021-07-16 | 2023-01-17 | SambaNova Systems, Inc. | Defect repair for a reconfigurable data processor for homogeneous subarrays |
US11675540B2 (en) * | 2021-08-05 | 2023-06-13 | Seagate Technology Llc | In-line data flow for computational storage |
US11698750B2 (en) | 2021-10-04 | 2023-07-11 | Sandisk Technologies Llc | Smart re-use of parity buffer |
US11809327B2 (en) | 2021-11-16 | 2023-11-07 | Western Digital Technologies, Inc. | Data auto-relocation in an integrated memory assembly |
US11487694B1 (en) | 2021-12-17 | 2022-11-01 | SambaNova Systems, Inc. | Hot-plug events in a pool of reconfigurable data flow resources |
JP2023136081A (ja) * | 2022-03-16 | 2023-09-29 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US20230333990A1 (en) * | 2022-04-18 | 2023-10-19 | Samsung Electronics Co., Ltd. | Systems and methods for address translation |
KR20230171300A (ko) | 2022-06-13 | 2023-12-20 | 연세대학교 산학협력단 | 심층 유전 알고리즘을 사용한 데이터베이스 튜닝 방법 |
CN115934768A (zh) * | 2022-12-01 | 2023-04-07 | 摩尔线程智能科技(北京)有限责任公司 | 数据的处理方法、显示适配器、电子设备及存储介质 |
CN115934031B (zh) * | 2023-03-15 | 2023-09-01 | 紫光同芯微电子有限公司 | 一种计算引擎、数据处理方法、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102576333A (zh) * | 2009-10-05 | 2012-07-11 | 马维尔国际贸易有限公司 | 非易失性存储器中的数据高速缓存 |
CN105009094A (zh) * | 2013-03-05 | 2015-10-28 | 西部数据技术公司 | 在固态驱动器中利用空闲空间计数来重建两阶加电映射的方法、设备和*** |
CN105122220A (zh) * | 2013-03-15 | 2015-12-02 | 西部数据技术公司 | 固态驱动器中的原子写入命令支持 |
CN105164635A (zh) * | 2013-05-31 | 2015-12-16 | 英特尔公司 | 针对固态存储设备在运行中的性能调整 |
Family Cites Families (120)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6401185B1 (en) | 1999-05-27 | 2002-06-04 | Oracle Corp. | Method and apparatus for accessing paged objects using a fast division technique |
US7660941B2 (en) | 2003-09-10 | 2010-02-09 | Super Talent Electronics, Inc. | Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories |
US6446062B1 (en) | 1999-12-23 | 2002-09-03 | Bull Hn Information Systems Inc. | Method and apparatus for improving the performance of a generated code cache search operation through the use of static key values |
US6728705B2 (en) | 2000-09-01 | 2004-04-27 | Disney Enterprises, Inc. | System and method for selecting content for displaying over the internet based upon some user input |
US7162467B2 (en) | 2001-02-22 | 2007-01-09 | Greenplum, Inc. | Systems and methods for managing distributed database resources |
US6549977B1 (en) | 2001-05-23 | 2003-04-15 | 3Ware, Inc. | Use of deferred write completion interrupts to increase the performance of disk operations |
JP2003044230A (ja) | 2001-05-23 | 2003-02-14 | Hitachi Ltd | 記憶装置システム |
US7055015B2 (en) | 2002-02-25 | 2006-05-30 | Ricoh Company, Ltd. | Information processing apparatus in which processes can reduce overhead of memory access and efficiently share memory |
AU2003262065A1 (en) | 2002-09-10 | 2004-04-30 | Annex Systems Incorporated | Database re-organizing system and database |
US6856556B1 (en) | 2003-04-03 | 2005-02-15 | Siliconsystems, Inc. | Storage subsystem with embedded circuit for protecting against anomalies in power signal from host |
US7219264B2 (en) | 2003-05-09 | 2007-05-15 | Tekelec | Methods and systems for preserving dynamic random access memory contents responsive to hung processor condition |
US7774575B2 (en) | 2004-09-21 | 2010-08-10 | Intel Corporation | Integrated circuit capable of mapping logical block address data across multiple domains |
US7502256B2 (en) | 2004-11-30 | 2009-03-10 | Siliconsystems, Inc. | Systems and methods for reducing unauthorized data recovery from solid-state storage devices |
US7653778B2 (en) | 2006-05-08 | 2010-01-26 | Siliconsystems, Inc. | Systems and methods for measuring the useful life of solid-state storage devices |
US8108692B1 (en) | 2006-06-27 | 2012-01-31 | Siliconsystems, Inc. | Solid-state storage subsystem security solution |
US7765373B1 (en) | 2006-06-27 | 2010-07-27 | Siliconsystems, Inc. | System for controlling use of a solid-state storage subsystem |
US7447807B1 (en) | 2006-06-30 | 2008-11-04 | Siliconsystems, Inc. | Systems and methods for storing data in segments of a storage subsystem |
US7509441B1 (en) | 2006-06-30 | 2009-03-24 | Siliconsystems, Inc. | Systems and methods for segmenting and protecting a storage subsystem |
US7685194B2 (en) | 2006-08-31 | 2010-03-23 | Microsoft Corporation | Fine-grained access control in a database by preventing information leakage and removing redundancy |
US8161227B1 (en) | 2006-10-30 | 2012-04-17 | Siliconsystems, Inc. | Storage subsystem capable of programming field-programmable devices of a target computer system |
KR20090087498A (ko) | 2006-12-06 | 2009-08-17 | 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) | 고-용량, 비-휘발성 스토리지를 위한 캐시로서의 솔리드-스테이트 스토리지 장치, 시스템 및 방법 |
US20080140918A1 (en) | 2006-12-11 | 2008-06-12 | Pantas Sutardja | Hybrid non-volatile solid state memory system |
US9153337B2 (en) | 2006-12-11 | 2015-10-06 | Marvell World Trade Ltd. | Fatigue management system and method for hybrid nonvolatile solid state memory system |
US8549236B2 (en) | 2006-12-15 | 2013-10-01 | Siliconsystems, Inc. | Storage subsystem with multiple non-volatile memory arrays to protect against data losses |
US7596643B2 (en) | 2007-02-07 | 2009-09-29 | Siliconsystems, Inc. | Storage subsystem with configurable buffer |
US7685338B2 (en) | 2007-05-24 | 2010-03-23 | Siliconsystems, Inc. | Solid state storage subsystem for embedded applications |
US7685337B2 (en) | 2007-05-24 | 2010-03-23 | Siliconsystems, Inc. | Solid state storage subsystem for embedded applications |
US7685374B2 (en) | 2007-07-26 | 2010-03-23 | Siliconsystems, Inc. | Multi-interface and multi-bus structured solid-state storage subsystem |
US8095851B2 (en) | 2007-09-06 | 2012-01-10 | Siliconsystems, Inc. | Storage subsystem capable of adjusting ECC settings based on monitored conditions |
US8078918B2 (en) | 2008-02-07 | 2011-12-13 | Siliconsystems, Inc. | Solid state storage subsystem that maintains and provides access to data reflective of a failure risk |
US7962792B2 (en) | 2008-02-11 | 2011-06-14 | Siliconsystems, Inc. | Interface for enabling a host computer to retrieve device monitor data from a solid state storage subsystem |
EP2124174A1 (en) | 2008-05-19 | 2009-11-25 | Accenture Global Services GmbH | Service exception resolution framework |
US7733712B1 (en) | 2008-05-20 | 2010-06-08 | Siliconsystems, Inc. | Storage subsystem with embedded circuit for protecting against anomalies in power signal from host |
TWI472916B (zh) | 2008-06-02 | 2015-02-11 | A Data Technology Co Ltd | 記憶體儲存空間管理方法 |
US8583835B1 (en) | 2008-08-06 | 2013-11-12 | Siliconsystems, Inc. | Command portal for executing non-standard storage subsystem commands |
US8375151B1 (en) | 2009-02-12 | 2013-02-12 | Siliconsystems, Inc. | Command portal for securely communicating and executing non-standard storage subsystem commands |
US9176859B2 (en) | 2009-01-07 | 2015-11-03 | Siliconsystems, Inc. | Systems and methods for improving the performance of non-volatile memory operations |
US8090899B1 (en) | 2009-03-04 | 2012-01-03 | Western Digital Technologies, Inc. | Solid state drive power safe wear-leveling |
US10079048B2 (en) | 2009-03-24 | 2018-09-18 | Western Digital Technologies, Inc. | Adjusting access of non-volatile semiconductor memory based on access time |
US8243525B1 (en) | 2009-09-30 | 2012-08-14 | Western Digital Technologies, Inc. | Refreshing non-volatile semiconductor memory by reading without rewriting |
US8254172B1 (en) | 2009-09-30 | 2012-08-28 | Western Digital Technologies, Inc. | Wear leveling non-volatile semiconductor memory based on erase times and program times |
US9753847B2 (en) | 2009-10-27 | 2017-09-05 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping |
US8135903B1 (en) | 2009-10-30 | 2012-03-13 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory compressing data to improve performance |
US8261012B2 (en) | 2009-10-30 | 2012-09-04 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory comprising power fail circuitry for flushing write data in response to a power fail signal |
US8255661B2 (en) | 2009-11-13 | 2012-08-28 | Western Digital Technologies, Inc. | Data storage system comprising a mapping bridge for aligning host block size with physical block size of a data storage device |
US8397107B1 (en) | 2009-12-11 | 2013-03-12 | Western Digital Technologies, Inc. | Data storage device employing data path protection using both LBA and PBA |
US8443167B1 (en) | 2009-12-16 | 2013-05-14 | Western Digital Technologies, Inc. | Data storage device employing a run-length mapping table and a single address mapping table |
US8316176B1 (en) | 2010-02-17 | 2012-11-20 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification |
US8407449B1 (en) | 2010-02-26 | 2013-03-26 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table |
US9189385B2 (en) * | 2010-03-22 | 2015-11-17 | Seagate Technology Llc | Scalable data structures for control and management of non-volatile storage |
US8725931B1 (en) | 2010-03-26 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for managing the execution of memory commands in a solid-state memory |
US8713066B1 (en) | 2010-03-29 | 2014-04-29 | Western Digital Technologies, Inc. | Managing wear leveling and garbage collection operations in a solid-state memory using linked lists |
US8782327B1 (en) | 2010-05-11 | 2014-07-15 | Western Digital Technologies, Inc. | System and method for managing execution of internal commands and host commands in a solid-state memory |
US20110283048A1 (en) | 2010-05-11 | 2011-11-17 | Seagate Technology Llc | Structured mapping system for a memory device |
US9026716B2 (en) | 2010-05-12 | 2015-05-05 | Western Digital Technologies, Inc. | System and method for managing garbage collection in solid-state memory |
WO2011150346A2 (en) | 2010-05-28 | 2011-12-01 | Laurich Lawrence A | Accelerator system for use with secure data storage |
US8341339B1 (en) | 2010-06-14 | 2012-12-25 | Western Digital Technologies, Inc. | Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk |
US8612669B1 (en) | 2010-06-28 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for performing data retention in solid-state memory using copy commands and validity and usage data |
US8447920B1 (en) | 2010-06-29 | 2013-05-21 | Western Digital Technologies, Inc. | System and method for managing data access in non-volatile memory |
US8521972B1 (en) | 2010-06-30 | 2013-08-27 | Western Digital Technologies, Inc. | System and method for optimizing garbage collection in data storage |
US8639872B1 (en) | 2010-08-13 | 2014-01-28 | Western Digital Technologies, Inc. | Hybrid drive comprising write cache spanning non-volatile semiconductor memory and disk |
US8775720B1 (en) | 2010-08-31 | 2014-07-08 | Western Digital Technologies, Inc. | Hybrid drive balancing execution times for non-volatile semiconductor memory and disk |
US8638602B1 (en) | 2010-09-10 | 2014-01-28 | Western Digital Technologies, Inc. | Background selection of voltage reference values for performing memory read operations |
US8769190B1 (en) | 2010-09-15 | 2014-07-01 | Western Digital Technologies, Inc. | System and method for reducing contentions in solid-state memory access |
US8788779B1 (en) | 2010-09-17 | 2014-07-22 | Western Digital Technologies, Inc. | Non-volatile storage subsystem with energy-based performance throttling |
US8612804B1 (en) | 2010-09-30 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for improving wear-leveling performance in solid-state memory |
US8738860B1 (en) * | 2010-10-25 | 2014-05-27 | Tilera Corporation | Computing in parallel processing environments |
US8601313B1 (en) | 2010-12-13 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for a data reliability scheme in a solid state memory |
US8601311B2 (en) | 2010-12-14 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory |
US8615681B2 (en) | 2010-12-14 | 2013-12-24 | Western Digital Technologies, Inc. | System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss |
US8458435B1 (en) | 2010-12-20 | 2013-06-04 | Western Digital Technologies, Inc. | Sequential write thread detection |
US8392635B2 (en) | 2010-12-22 | 2013-03-05 | Western Digital Technologies, Inc. | Selectively enabling a host transfer interrupt |
US8683113B2 (en) | 2011-02-04 | 2014-03-25 | Western Digital Technologies, Inc. | Concurrently searching multiple devices of a non-volatile semiconductor memory |
US8700950B1 (en) | 2011-02-11 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for data error recovery in a solid state subsystem |
CN102651007A (zh) | 2011-02-28 | 2012-08-29 | 国际商业机器公司 | 一种管理数据库索引的方法和装置 |
US8700951B1 (en) | 2011-03-09 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata |
US8769232B2 (en) | 2011-04-06 | 2014-07-01 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory module enabling out of order host command chunk media access |
US8751728B1 (en) | 2011-04-29 | 2014-06-10 | Western Digital Technologies, Inc. | Storage system bus transfer optimization |
US8862804B2 (en) | 2011-04-29 | 2014-10-14 | Western Digital Technologies, Inc. | System and method for improved parity determination within a data redundancy scheme in a solid state memory |
US9021178B2 (en) | 2011-05-02 | 2015-04-28 | Western Digital Technologies, Inc. | High performance path for command processing |
US8503237B1 (en) | 2011-05-18 | 2013-08-06 | Western Digital Technologies, Inc. | System and method for data recovery in a solid state storage device |
WO2012161659A1 (en) | 2011-05-24 | 2012-11-29 | Agency For Science, Technology And Research | A memory storage device, and a related zone-based block management and mapping method |
US8793429B1 (en) | 2011-06-03 | 2014-07-29 | Western Digital Technologies, Inc. | Solid-state drive with reduced power up time |
US8719531B2 (en) | 2011-06-14 | 2014-05-06 | Western Digital Technologies, Inc. | System and method for performing data retention that incorporates environmental conditions |
KR101890767B1 (ko) | 2011-07-01 | 2018-09-28 | 시게이트 테크놀로지 인터내셔날 | 주소 사상 정보 관리 방법 이를 적용한 저장 장치 |
US8423722B1 (en) | 2011-08-26 | 2013-04-16 | Western Digital Technologies, Inc. | System and method for high performance command processing in solid state drives |
US8700834B2 (en) | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
US8707104B1 (en) | 2011-09-06 | 2014-04-22 | Western Digital Technologies, Inc. | Systems and methods for error injection in data storage systems |
US8713357B1 (en) | 2011-09-06 | 2014-04-29 | Western Digital Technologies, Inc. | Systems and methods for detailed error reporting in data storage systems |
US8977803B2 (en) | 2011-11-21 | 2015-03-10 | Western Digital Technologies, Inc. | Disk drive data caching using a multi-tiered memory |
US8724422B1 (en) | 2012-02-29 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for charging back-up charge storage element for data storage device using spindle phase switching elements |
US9003224B2 (en) | 2012-04-25 | 2015-04-07 | Western Digital Technologies, Inc. | Managing unreliable memory in data storage systems |
US8788778B1 (en) | 2012-06-04 | 2014-07-22 | Western Digital Technologies, Inc. | Garbage collection based on the inactivity level of stored data |
US8966343B2 (en) | 2012-08-21 | 2015-02-24 | Western Digital Technologies, Inc. | Solid-state drive retention monitor using reference blocks |
US8788880B1 (en) | 2012-08-22 | 2014-07-22 | Western Digital Technologies, Inc. | Efficient retry mechanism for solid-state memory failures |
EP2709083B1 (en) * | 2012-09-12 | 2015-11-18 | Rodrich, Moises Jaime | Method and device for detecting presence of a vehicle in a parking space |
US10282286B2 (en) | 2012-09-14 | 2019-05-07 | Micron Technology, Inc. | Address mapping using a data unit type that is variable |
US9348758B2 (en) | 2012-09-24 | 2016-05-24 | Sk Hynix Memory Solutions Inc. | Virtual addressing with multiple lookup tables and RAID stripes |
US9268682B2 (en) | 2012-10-05 | 2016-02-23 | Skyera, Llc | Methods, devices and systems for physical-to-logical mapping in solid state drives |
US8972826B2 (en) | 2012-10-24 | 2015-03-03 | Western Digital Technologies, Inc. | Adaptive error correction codes for data storage systems |
US9116796B2 (en) | 2012-11-09 | 2015-08-25 | Sandisk Technologies Inc. | Key-value addressed storage drive using NAND flash based content addressable memory |
US8780632B2 (en) | 2012-11-09 | 2014-07-15 | Sandisk Technologies Inc. | De-duplication techniques using NAND flash based content addressable memory |
US8780634B2 (en) | 2012-11-09 | 2014-07-15 | Sandisk Technologies Inc. | CAM NAND with OR function and full chip search capability |
US8773909B2 (en) | 2012-11-09 | 2014-07-08 | Sandisk Technologies Inc. | CAM NAND with or function and full chip search capability |
US8817541B2 (en) | 2012-11-09 | 2014-08-26 | Sandisk Technologies Inc. | Data search using bloom filters and NAND based content addressable memory |
US9177638B2 (en) | 2012-11-13 | 2015-11-03 | Western Digital Technologies, Inc. | Methods and devices for avoiding lower page corruption in data storage devices |
US8954694B2 (en) | 2012-11-15 | 2015-02-10 | Western Digital Technologies, Inc. | Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive |
US9021339B2 (en) | 2012-11-29 | 2015-04-28 | Western Digital Technologies, Inc. | Data reliability schemes for data storage systems |
US9059736B2 (en) | 2012-12-03 | 2015-06-16 | Western Digital Technologies, Inc. | Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme |
US20140223255A1 (en) | 2012-12-18 | 2014-08-07 | Western Digital Technologies, Inc. | Decoder having early decoding termination detection |
US9430376B2 (en) | 2012-12-26 | 2016-08-30 | Western Digital Technologies, Inc. | Priority-based garbage collection for data storage systems |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US9411736B2 (en) * | 2013-03-13 | 2016-08-09 | Drobo, Inc. | System and method for an accelerator cache based on memory availability and usage |
US9304685B2 (en) | 2013-09-10 | 2016-04-05 | Kabushiki Kaisha Toshiba | Storage array system and non-transitory recording medium storing control program |
US9330143B2 (en) | 2013-10-24 | 2016-05-03 | Western Digital Technologies, Inc. | Data storage device supporting accelerated database operations |
US8838936B1 (en) | 2013-11-27 | 2014-09-16 | NXGN Data, Inc. | System and method for efficient flash translation layer |
US9472758B2 (en) | 2014-11-11 | 2016-10-18 | Sandisk Technologies Llc | High endurance non-volatile storage |
US9652384B2 (en) * | 2014-12-16 | 2017-05-16 | Intel Corporation | Apparatus, system and method for caching compressed data |
US9343156B1 (en) | 2015-06-25 | 2016-05-17 | Sandisk Technologies Inc. | Balancing programming speeds of memory cells in a 3D stacked memory |
US20170177497A1 (en) | 2015-12-21 | 2017-06-22 | Qualcomm Incorporated | Compressed caching of a logical-to-physical address table for nand-type flash memory |
-
2017
- 2017-10-06 US US15/726,903 patent/US10459644B2/en active Active
- 2017-10-10 CN CN201780058151.4A patent/CN109791519B/zh active Active
- 2017-10-10 WO PCT/US2017/055963 patent/WO2018080785A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102576333A (zh) * | 2009-10-05 | 2012-07-11 | 马维尔国际贸易有限公司 | 非易失性存储器中的数据高速缓存 |
CN105009094A (zh) * | 2013-03-05 | 2015-10-28 | 西部数据技术公司 | 在固态驱动器中利用空闲空间计数来重建两阶加电映射的方法、设备和*** |
CN105122220A (zh) * | 2013-03-15 | 2015-12-02 | 西部数据技术公司 | 固态驱动器中的原子写入命令支持 |
CN105164635A (zh) * | 2013-05-31 | 2015-12-16 | 英特尔公司 | 针对固态存储设备在运行中的性能调整 |
Also Published As
Publication number | Publication date |
---|---|
WO2018080785A1 (en) | 2018-05-03 |
US10459644B2 (en) | 2019-10-29 |
US20180121121A1 (en) | 2018-05-03 |
CN109791519A (zh) | 2019-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109791519B (zh) | 具有集成计算引擎的非易失性存储***和本地快速存储器的优化用途 | |
CN109328343B (zh) | 具有用以加速大数据应用的计算引擎的非易失性存储*** | |
US10565123B2 (en) | Hybrid logical to physical address translation for non-volatile storage devices with integrated compute module | |
US20240020228A1 (en) | Zoned namespace with zone grouping | |
CN110447009B (zh) | 用于自适应命令获取聚合的***和方法 | |
US20180358989A1 (en) | Non-volatile Storage Systems With Application-Aware Error-Correcting Codes | |
US10191822B2 (en) | High performance persistent memory | |
US10924552B2 (en) | Hyper-converged flash array system | |
US10965751B2 (en) | Just a bunch of flash (JBOF) appliance with physical access application program interface (API) | |
TW201621912A (zh) | 用於組態和控制非揮發性快取記憶體的系統及方法 | |
US10949120B2 (en) | Host defined bandwidth allocation for SSD tasks | |
US10198203B2 (en) | Method of operating memory device using pseudo-random functions, memory device using the same and memory system including the device | |
US10713157B2 (en) | Storage system and method for improving read performance using multiple copies of a logical-to-physical address table | |
CN109643278B (zh) | 使用压缩来增加存储器侧高速缓存的容量的方法和设备 | |
US20210103394A1 (en) | Host system configuired to manage assignment of free block, data processing system including the host system, and method of operating the host system | |
EP4064022A1 (en) | Cooperative storage architecture | |
US20240037027A1 (en) | Method and device for storing data | |
US10474366B2 (en) | Non-volatile storage system with in-drive data analytics | |
US9110857B1 (en) | Systems and methods for identifying and compressing rarely used data | |
US20210181980A1 (en) | Storage System and Method for Improving Utilization of a Communication Channel between a Host and the Storage System | |
US11656994B2 (en) | Non-volatile memory with optimized read | |
US20240221793A1 (en) | Dynamic clock mask based on read data for power saving | |
US11080059B1 (en) | Reducing firmware size and increasing firmware performance | |
US11550487B2 (en) | Data storage device and method for enabling endurance re-evaluation |
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 |