CN106796490A - 用于存储器管理的硬件自动化 - Google Patents
用于存储器管理的硬件自动化 Download PDFInfo
- Publication number
- CN106796490A CN106796490A CN201580047323.9A CN201580047323A CN106796490A CN 106796490 A CN106796490 A CN 106796490A CN 201580047323 A CN201580047323 A CN 201580047323A CN 106796490 A CN106796490 A CN 106796490A
- Authority
- CN
- China
- Prior art keywords
- module
- data
- memory
- address
- hardware
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0626—Reducing size or complexity of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/25—Using a specific main memory architecture
- G06F2212/251—Local memory within processor subsystem
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/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
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)
- Software Systems (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
一种存储模块可以包括控制器,所述控制器具有硬件路径,所述硬件路径包括被配置成用于进行与执行主机请求相关联的多个进程的多个硬件模块。所述存储模块还可以包括固件模块,所述固件模块具有处理器,所述处理器执行固件以便进行由所述硬件模块进行的所述多个进程中的至少一些。当所述硬件模块不能成功进行所述进程时,所述固件模块进行这些进程。
Description
背景技术
存储模块可以响应于从主机接收的主机命令来管理数据存储。当接收到主机读取命令时,所述存储模块可以进行多个进程来确定所述数据被存储在哪里、检索所述数据、并将所述数据发回到所述主机。存储模块可以配置有固件,所述存储模块的处理器可以执行所述固件以便进行执行所述读取命令所需要的所述进程。用固件对所述存储模块进行编程可以是有益的,因为这可以成功地处理读取请求、甚至复杂的读取,同时不消耗太多的空间。然而,许多读取请求可能是相对直接的,并且使用固件可能不是处理这些读取请求的最有效方式。
发明内容
本发明的实施例由权利要求书限定,并且不能将此部分的任何内容作为对那些权利要求的限制。举例而言,在本文件中描述的以及在附图中展示的所述实施例总体上涉及一种存储模块以及控制器的相关方法,所述控制器在通信总线上根据缓存序列执行上下文命令,而所述存储器模块进行内部存储器操作。
在一个示例中,一种存储模块可以包括至少一个存储器;以及控制器,所述控制器与所述至少一个存储器通信。所述控制器可以包括:硬件路径,所述硬件路径包括被配置成用于进行与执行主机读取请求相关联的多个进程的多个硬件模块。所述控制器还可以包括固件模块,所述固件模块包括:固件,所述固件存储在所述至少一个存储器中;以及处理器,所述处理器被配置成用于执行所述固件以便进行与执行主机读取请求相关联的所述多个进程中的至少一些。所述控制器还可以包括前端模块,所述前端模块被配置成用于接收主机命令,并且响应于接收到所述主机命令,判定是否开始沿着所述硬件路径或使用所述固件模块执行所述主机命令。
总而言之,在存储模块的控制器中可以包括硬件路径,所述硬件路径包括被配置成用于执行与执行主机请求有关的至少一个进程的至少一个硬件模块。当所述进程至少部分地由所述至少一个硬件模块进行时,可以加速主机请求的执行。
从在此的说明书、所附权利要求书、以及下文描述的附图中将更好地理解本发明的这些以及其他的实施例、特征、方面和优点。
附图说明
结合于此并且构成本说明书的一部分的附图展示了本发明的多个不同方面、并且与说明部分一起用于解释本方面的原理。在方便时,在所有附图中将使用相同参考数字来指代相同或相似的要素。
图1是示例存储系统的框图。
图2是图1的执行主机读取请求的控制器的部件的示例配置的框图。
图3是图2的前端硬件模块的示例配置的框图。
图4是图2的地址转换硬件模块的示例配置的框图。
图5是图2的数据检索硬件模块的示例配置的框图。
图6是图2的后数据检索硬件模块的示例配置的框图。
图7是逻辑组与元块之间的示例映射的示意图。
图8是示例的主要和次要地址数据结构安排的示意图。
图9是图1的执行主机读取请求的控制器的另一种示例配置的框图。
图10A是图1的嵌入主机中的存储模块的框图。
图10B是图1的与主机可移除地连接的存储模块的框图。
图11是引起通过前端模块来执行主机读取请求的示例方法的流程图。
图12是响应于开始在硬件路径中执行主机读取请求而将逻辑地址转换成物理地址的示例方法的流程图。
图13是用硬件路径中的数据检索硬件模块、以及固件模块来检索被存储在存储器中的数据的示例方法的流程图。
图14是用硬件路径中的后数据检索硬件模块、以及固件模块从存储器中检索了数据之后处理所述数据的示例方法的流程图。
具体实施方式
对所描述和所示出的所述实施例的不同修改和其等效物是可能的,并且在此定义的不同的一般性原理可以应用于这些以及其他的实施例。因此,将对要求保护的发明赋予符合在此公开的原理、特征和传授内容的最宽范围。
图1示出了示例系统100的框图,所述系统包括主机系统101和存储模块102。所述主机系统101可以被配置成用于将数据存储到所述存储模块102中以及从中检索数据。所述存储模块102可以被配置成用于进行控制和管理所述数据的存储和检索的存储器管理功能。如图1所示,所述存储模块102可以包括控制器电路110和存储器模块130。取决于所述存储模块102的配置,所述控制器110和所述存储器模块130可以位于相同或不同的基板所。
所述控制器110可以包括与存储器模块130相接的存储器接口模块114。所述控制器110还可以包括主机接口模块116,所述主机接口模块配置所述存储模块102与所述主机系统101操作性地通信。如在本文中所使用的,短语“操作性地通信”可以指通过一个或多个部件直接通信或间接通信,这可能在或没有在本文中被示出或描述。所述控制器110通过或者使用所述主机接口模块116可以从主机系统101接收主机请求、例如主机读取和写入请求,并且通过或使用主机接口116可以将对所述主机读取和写入请求的响应发送至所述主机系统101。此外,主机接口116可以采用任何合适的形式,如但不限于eMMC主机接口、UFS接口和USB接口,举几个例子。
所述存储器模块130可以包括存储器132,所述存储器被配置成用于将数据或其他信息存储在所述存储模块102中。所述存储器132可以包括多个存储器元件或单元,每个存储器元件或单元被配置成用于存储一个或多个位的数据。此外或者可替代地,所述存储器132可以包括单个类型的存储器(例如单个类型的易失性存储器或单个类型的非易失性存储器)或多种不同类型的存储器(例如多种不同类型的易失性存储器、多种不同类型的非易失性存储器、或其组合)。
此外,所述存储器132可以是这样的单个物理控制(例如单个裸片或单个芯片):其中控制器110可以使用相同的总线或信道来访问所述单个物理控制。可替代地,所述存储器132可以包括多个不同的物理空间(例如多个裸片或多个芯片),其中控制器110可以使用不同的总线或不同的信道来访问所述不同的物理空间。
存储器132可以具有有组织的安排或层次结构,其中存储器132的存储器元件元件或单元是有组织的。所述控制器110可以被配置成用于根据这种有组织的安排或层次结构来存储数据和/或访问所存储的数据。
对于一些示例配置的闪存,存储器元件可以被划分或整理为块,其中每个块包含可以一起被擦除的最小数量的存储器元件。每个块可以进一步被划分为多个页,其中每个页是编程或读取单位。每个单独的页可以进一步被划分为多个区段,其中每个区段包含可以作为基本编程操作一次被写入的最小数量的存储器元件。此外,对于一些示例配置,多个块和页可以跨多个平面分布、并且分别作为元块和元页一起被操作。可替代地,块和页的分别可以被限制于单个平面。进一步,元块可以分布的多个平面可以被分组为存储体。每个存储体可以是一个元块或一个元页宽。此外,每个存储体可以由所述控制器110独立地管理。
可以用多种不同的方式将数据存储在块和/或元块中,包括不相连地(随机地)或相连地。如在此使用的,并且除非另外指明,术语“块”和“块”以及术语“页”和“元页”可以互换地使用和/或分别统称为“元块”和“元页”,而不关注这个块/元块以及页/元页是跨单个平面还是多个平面。
所述存储器元件可以被配置成其中每个单元存储单个数据位的单层单元(SLC)、其中每个单元存储多个数据位的多层单元(MLC)(例如,每个单元两个数据位)、其中每个单元存储三个数据位的三层单元(TLC)、或者SLC、MLC和TLC的组合。相应地,一块或一页存储器元件可以分别存储单个一块或一页的数据、或多块或多页的数据,取决于所述存储器元件是被配置成SLC、MLC和/或TLC。存储器元件是SLC、MLC还是TLC可以取决于控制器110确定将编程到所述存储器元件中的位数。例如,所述控制器110可以被配置成用于将单个数据位编程到存储器元件中,在此情况下所述存储器元件被配置成SLC。相应地,所述存储器元件中的每一个可以被配置成SLC模式、MLC模式、TLC模式,例如由控制器110如何对相应存储器元件编程来决定的。
此外,对于一些示例配置,存储器132可以包括单个区域。对于其他示例配置,存储器132可以被划分或分离成多个区域或部分,包括主存储器134和辅助存储器136,如图1所示。所述主存储器134和辅助存储器136的不同可以在于,它们可以是不同的存储器类型、可以位于不同物理空间内、具有不同的单元配置、或所述的组合。
对于一些示例的闪存应用,所述辅助存储器136可以是二进制缓存136。所述主存储器134具有比所述二进制缓存136高的位/单元存储密度。也就是,所述主存储器134的存储器元件可以被配置成MLC,而所述二进制缓存136的存储器元件可以被配置成SLC。在替代性的示例配置中,所述主存储器134的存储器元件也可以被配置成SLC。此外,所述二进制缓存136可以被配置成与主存储器134相比允许更细粒度的写入。这种更细的粒度可以与来自主机写入请求的逻辑数据单元的粒度更兼容。此外或者可替代地,所述主存储器134可以被配置成用于依次地存储逻辑数据单元,而所述二进制缓存136可以依次地或者可以不依次地存储逻辑数据单元。相应地,数据片段(例如,小于数据元块或逻辑组)可以存储在所述二进制缓存136中。对于一些情形,可以随后在主存储器134中将所述数据片段以依次的顺序重组成块。
所述存储器模块130可以进一步包括逻辑电路142,所述逻辑电路被配置成用于控制和/或管理在所述存储器中的数据存储。所述逻辑电路142可以在控制器110与存储器132之间提供接口。所述逻辑电路142可以响应于和/或根据从所述控制器110接收的和/或由其生成的上下文指令或命令、例如读出、编程和/或擦除命令来控制和/或管理在所述存储器132中的数据存储。所述逻辑电路142可以被配置成用于进行用于控制和/或管理所述数据存储的多个不同的存储器管理功能,包括但不限于:寻址、数据传送、读出、行和列解码、和/或栅极偏置。此外,所述存储器控制器142可以在硬件中实施,包括一个或多个处理器、硬件逻辑、缓冲器、电压发生器、和/或用于进行所述存储器控制器142的功能的其他电路。
所述存储器模块130可以进一步包括读出电路144,所述读出电路可以包括被配置成用于读出被存储在存储器132中的数据的多个读出放大器、以及被配置成用于存储所读出的数据的多个锁存器,所述数据接着被传送至控制器110。
图1示出了作为所述存储模块102的分开的部件的控制器110和逻辑电路142。然而,对于替代性的示例配置,所述逻辑电路142和/或由所述逻辑电路142进行的功能可以被并入控制器110中,并且所述控制器110可以被配置成用于与存储器132和/或读出电路144之间通信。
所述存储模块102还可以包括通信总线146,所述通信总线在所述控制器110与所述存储器模块130之间提供了通信链路。所述通信总线146可以被所述控制器110和所述存储器模块130用于传递数据、命令、或其他信息或消息,以便执行从主机系统101接收的主机请求或命令,例如主机读取和写入请求。
当存储模块102从主机系统101接收到主机读取请求时,所述存储模块102可以被配置成用于进行多个进程来执行或实施所述主机读取请求。这样的进程可以包括:前端命令解析;地址转换;数据检索;后数据检索;以及主机通信。
图2示出了可以用于进行所述多个用于执行主机读取请求的进程的控制器110的部件的示例配置。如图2所示,所述控制器110可以包括多个硬件模块202-208、中央固件模块210、缓冲池212、连同所述主机接口模块(HIM)116和所述存储器接口模块(MIM)114。
所述多个硬件模块202-208可以各自被配置成用于进行一个或多个相关联的用于执行主机读取请求的进程。所述多个硬件模块202-208可以用硬件部件和/或在不执行软件或固件的情况下进行其相关联的进程。示例的硬件部件可以包括缓冲器、寄存器、锁存器、触发器、边缘检测器、计数器、逻辑电路(例如,AND门、OR门等等)、比较器、运算放大器、无源部件(例如,晶体管、电容器等等)、多路复用器、多路分用器、掩蔽电路、以及运算电路(例如,加法器、减法器、乘法器、触发器等等),作为非限制性示例。
这些进程中的全部或一些可以由中央固件模块210进行,所述中央固件模块可以包括执行固件(FM)216以便进行所述进程的处理器或处理器电路214。所述固件216总体上可以包括能够被存储在存储介质中且是处理器214可执行的软件和/或可执行程序指令集。所述处理器214可以包括被配置成用于进行多种不同类型的处理的单个处理器或多个处理器,例如协同处理、多重处理、多任务处理、并行处理、远程处理、分布式处理等等,以便进行所述主机读取请求进程。所述处理器214可以是微处理器、专用集成电路(ASIC)、场可编程门阵列(FPGA)、或其他现在已知的或今后开发的被配置成用于执行可能是固件216的一部分的程序指令的处理电路。
如图2所示,固件216可以被存储在本地或控制器存储器218中的控制器110的内部,所述控制器存储器可以是与存储器模块130分开的或“芯片外的”、并且可以包括一种或多种不同类型的存储器结构或技术的易失性存储器、非易失性存储器、或其组合。所述处理器214可以适应或访问所述控制器存储器218以进行主机读取进程。例如,包含程序指令的软件和/或固件可以存储在控制器存储器218中,处理器214可以执行所述软件和/或固件来进行主机读取进程。如下文进一步描述的,所述控制器存储器218可以存储在控制器110内部的其他信息和/或数据成,而非固件216。
硬件模块202-208与中央固件模块210的组合可以提供多个读取进程路径或流程,包括硬件读取进程路径和固件读取进程路径。所述硬件和固件读取处理路径中的每一个可以彼此独立地执行主机读取请求、或者可以彼此通信以便执行主机读取请求。在主机读取请求沿着硬件读取进程路径进行时,硬件模块202-208可以进行读取进程。在主机读取请求沿着固件读取进程路径进行时,中央固件模块210可以进行读取进程。
总体上,所述读取进程路径中的所述多个硬件模块202-208可以在控制器110中实施以便加速主机读取请求的执行。对于一些示例配置,所述多个硬件模块202-208中的每一个可以被配置成用于在如果满足一个或多个指标时,进行与执行主机读取请求相关联的一个或多个读取进程。如果没有满足所述一个或多个指标,则中央固件模块210可以进行读取进程。此外,如果满足了所述一个或多个指标但是进行读取进程的所述硬件模块却不能进行所述读取进程,则中央固件模块210可以进行所述读取进程。
相应地,主机读取请求的执行可以由所述硬件读取进程路径中的硬件模块202-208处理,直到读取进程不能被硬件模块202-208之一进行,此时所述固件模块210可以进行所述读取进程。之后,所述固件模块210可以判定是否沿着固件路径处理所述主机读取请求、或者将后续处理所述主机读取请求的责任传回至所述硬件路径。如果满足了进行下一个读取进程的一个或多个指标,则所述固件模块210可以将责任传回至所述硬件路径。否则,所述固件模块210可以继续处理所述主机读取请求。这样,硬件模块202-208和固件模块210可以彼此交互或者交结硬件与固件读取进程路径,使得硬件模块202-208在能够时进行主机读取进程,而固件模块210在所述硬件模块不能时接任。
一个指标可以是和/或可以是关于复杂性。如果为了成功进行读取进程而涉及的任务被确定是在一定的复杂性水平之下和/或之内,则所述读取进程可以由硬件模块202-208中的相关联的一个硬件模块进行。可替代地,如果为了成功进行读取进程而涉及的任务被确定是在一定的复杂性水平之上,则所述读取进程可以由固件模块210处理。
另一个指标可以是和/或可以是关于通用性。硬件模块202-208可以被配置成用于:在为了成功进行读取进程而涉及的任务是常见的或经常发生、或者所述主机读取请求自身被识别为是经常接收到的主机读取请求类型时,进行相关联的读取进程。可替代地,固件模块210可以在为了成功进行读取进程而涉及的任务被认为不常见或很少发生、或者所述主机读取请求自身被识别为是很少接收到的主机读取请求类型时进行读取进程。
对于一些读取进程,复杂性和通用性可以是相关的。读取进程越不复杂,就可以越经常地进行所述读取进程。可替代地,读取进程越复杂,就可以越不经常地进行所述读取进程。
此外,对于一些示例配置,所述一个或多个指标(包括复杂性和通用性)可以与被请求读取的数据的大小相关和/或相对应。如下文更详细描述的,硬件模块202-208可以被配置成用于处理请求了具有的大小在预定量之内的数据的读取请求。所述预定量可以对应于用于识别被请求读取的数据的逻辑组号的数量、为了识别所请求的数据被存储在的一个或多个物理位置而进行的逻辑-到-物理地址转换的次数、存储器132中的可以连续存储所述数据的区域的数量、为了减少所述数据而生成和发出的命令或命令集合的数量、或其组合。
进一步,对于一些示例配置,硬件模块202-208可以被配置成用于处理最简单的读取请求,所述读取请求可能要求进行“短读取”来执行所述请求。这样的读取请求可以是对于通过单个逻辑组号可以识别的和/或对应于单个逻辑组号的数据大小、为了识别所述数据的最新版本所在的物理地址而用所述单个逻辑组号对一个或多个地址数据结构的单个查询或单个查询、可以连续存储所述数据的单个区域(例如,页或块)、和/或为了检索所述数据而要生成的单个读出和数据传送命令集。
进一步,具体读取进程是否落入通过硬件模块202-208之一或通过固件模块210来处理的范围内可以独立地由硬件模块202-208中的每一个决定(即,基于每个模块)。也就是,硬件模块202-208之一是否可以进行其关于具体主机读取请求的相关联读取进程可以或者不可以决定硬件模块202-208中的不同的一个是否可以进行其关于所述主机读取请求的相关联读取进程。
如图2所示,用于进行所述主机读取请求的硬件部件可以被模块化到硬件模块202-208中,其中硬件模块202-208中的每一个被配置成独立地与中央固件模块210通信。具体地,如图2所示,硬件模块202-208中的每一个可以包括被配置成用于与中央固件模块210的固件接口(FM I/F)222通信的固件接口(FW I/F)220。
在硬件模块202-208之一确定了它不能成功进行其执行主机读取请求的一部分的事件中,所述硬件模块可以通知中央固件模块210其失败、以及中央固件模块210为了进行所述进程而可以使用的、与主机读取请求相关联的任何数据或其他信息。作为响应,中央固件模块210可以进行所述硬件模块不能进行的主机读取请求进程。
对于一些示例配置,在进行了硬件模块不能进行的具体读取进程之后,中央固件模块210可以继续进行用于执行主机读取请求的剩余主机读取请求进程。对于其他示例配置,在中央固件模块210进行了具体读取进程之后,中央固件模块210可以将所述进程的结果发送至硬件模块202-208之一来进行下一个主机读取请求进程。之后,硬件模块202-208可以继续进行所述主机读取请求进程直到执行完成,或者另一个主机读取请求进程不能被所述硬件模块202-208进行,此时所述硬件模块可以通知所述中央固件模块210。硬件模块202-208与固件模块210之间的这样的交互可以继续,直到所述主机读取请求的执行完成或另外被终止。
此外,如图2所示,硬件模块202-208可以具有硬件输入接口(HW I/P I/F)224和硬件输出接口(HW O/P I/F)226。如下文更详细解释的,第一硬件模块202可以经由其硬件输入接口224从硬件接口模块116接收主机命令。之后,硬件模块202-208中的每一个可以被配置成使用其相应硬件输出接口226输出“结果”输出和“状态”输出。所输出的结果和状态输出接着可以作为相应的结果和状态输入被另一个硬件模块的硬件输入接口224接收。
硬件模块所输出的结果输出可以包括由所述硬件模块进行的主机读取请求进程所得到的信息。所述状态输出可以包括对于所述硬件模块进行的主机读取请求进程是否成功的指示。对于一些示例配置,所述状态输出可以告诉和/或指示接收了所述状态输入的硬件模块锁存或以其他方式保持它正在从所述另一个硬件模块接收的结果输出。可替代地,如果硬件模块接收到在不成功的水平上的状态输入,则所述硬件模块可以忽略它正在其结果输入上接收的任何信息。
可以用多种不同的方式来将硬件模块202-208模块化,这可以取决于所进行的具体读取进程。在一种示例配置中,如图2所示,硬件模块202-208可以包括前端硬件模块202、地址转换硬件模块204、数据检索硬件模块206、以及后数据检索硬件模块208。
所述前端硬件模块202可以经由所述主机接口模块116接收由存储模块102接收到的主机命令。所述前端硬件模块202可以被配置成用于解析所述主机命令以便识别所述主机命令的类型。如果所识别的主机命令是非主机读取命令的命令,例如主机写入命令,则前端硬件模块202可以拒绝所述主机命令并且将所述主机命令发生至所述中央固件模块210以进行后续处理。可替代地,如果主机命令是主机读取请求,则前端硬件模块202可以确定在所述主机读取请求中识别的逻辑地址信息并且将所述逻辑地址信息作为其结果输出输出至所述地址转换硬件模块204。然而,如果出于某种原因所述前端硬件模块202不能确定所述逻辑地址信息,则所述前端硬件模块202可以通知所述中央固件模块210。此外,假定前端模块202确定了所述逻辑地址信息,则前端硬件模块202可以输出其在指示所述前端模块接收了主机读取请求并且成功确定了所述主机读取请求中的逻辑地址信息的水平上的状态输出。
对于替代性的示例配置,前端硬件模块202可以被实施在固件中,所述固件可以是固件模块210的一部分。在任一情况下,是实施为硬件模块、还是实施为固件模块210的一部分,所述前端模块可以用作初始地判定主机命令初始地是沿着硬件路径还是固件路径被处理的判定器。
地址转换硬件模块204可以从前端硬件模块202接收所述逻辑地址信息作为其结果输入。此外,地址转换模块204可以接收所述状态输出作为其状态输入、鉴定所述状态是成功、并且作为响应而锁存所述结果输出以便保持所述逻辑地址信息。
进一步,地址转换硬件模块204可以被配置成用于将所述逻辑地址信息转换成所述物理地址信息,从而识别与所述主机读取请求相关联的数据被存储在的物理位置。如果地址转换模块204不能将所述逻辑地址信息转换成所述物理地址信息,则地址转换模块204可以通知所述中央固件模块210,从而提供所述逻辑地址信息。可替代地,如果地址转换硬件模块204确定了物理地址信息,则地址转换硬件模块204可以将所述物理地址信息作为其结果输出输出至所述数据检索硬件模块206。此外,地址转换模块202可以输出其在指示所述地址转换模块202成功地确定了与所述主机读取请求相关联的物理地址信息的水平上的状态输出。
数据检索硬件模块206可以从地址转换硬件模块204接收所述物理地址信息作为其结果输入。此外,数据检索硬件模块206可以从地址转换模块204接收所述状态输出作为其状态输入、鉴定所述状态是成功、并且作为响应而锁存所述结果输出以便保持所述物理地址信息。
进一步,数据检索硬件模块206可以被配置成用于生成关于检索与所述物理地址信息相关联的数据的一个或多个数据检索命令的一个或多个集合。如下文更详细解释的,示例的集合可以包括读出命令和数据传送命令。所述读出命令可以指示所述存储器模块130将数据读出到所述读出电路144的所述锁存器中。相关联的数据传送命令可以指示所述存储器模块130将所读出的数据发送至控制器110。
如果出于某种原因所述数据检索硬件模块206不能生成数据检索命令,则数据检索硬件模块206可以通知中央固件模块210,从而为其提供所述物理地址信息。假定数据检索模块206能够生成数据检索命令,数据检索模块206可以将所述数据检索命令发送至存储器接口模块114,所述存储器接口模块进而可以将所述数据检索命令发送至存储器模块130。响应于所述数据检索命令,存储器模块130可以检索所述存储器132中存储在与所述物理地址信息相关联的位置的数据。
所述数据可以经由存储器接口模块114被发送至后数据检索硬件模块208。此外,对于一些示例配置,存储器接口模块114还可以发送状态输出至后数据检索硬件模块208,所述后数据检索硬件模块可以指示后数据检索硬件模块208锁存所述数据。在接收到所述数据之后,后数据检索硬件模块208可以进行后数据检索进程。示例的进程可以包括错误校正和解码。对于一些示例配置,如果错误校正进程鉴定了了太高的位错误率和/或不能成功解码所述数据,则后数据检索硬件模块208可以通知中央固件模块210,从而提供所述数据。
如果后数据检索硬件模块208能够成功进行所述后数据检索进程,后数据检索硬件模块208可以将所述数据作为其结果输出发送至缓冲池212,所述数据在被发送至主机系统101来完成所述主机读取请求之前可以被暂时存储在所述缓冲池中。此外,对于一些示例配置,后数据检索硬件模块208可以发送状态输出至缓冲池212,这可以通知缓冲池锁存所述数据。
此外或者可替代地,后数据检索硬件模块208可以发送状态输出至所述主机接口模块116,这可以向所述主机接口模块指示:数据被存储在缓冲池212中并且准备发送至主机系统101。作为响应,主机接口模块116可以检索被存储在缓冲池212中的数据并且将所述数据发送至主机系统101。
图3-6分别示出了前端硬件模块202、地址转换硬件模块204、数据检索硬件模块206、和后数据检索硬件模块208的示例配置的框图。
参见图3,前端硬件模块202的示例配置可以包括多个子模块302、304、306,每个子模块被配置成用于进行所述前端命令解析进程的子进程。此外,所述多个子模块302-306中的每一个可以被配置成用于发送结果输出和状态输出至下一个或下游子模块以进行进一步处理、并且在不能进行其相关联子进程的事件中与固件接口模块220通信。
所述多个子模块可以包括命令类型识别(ID)子模块302、大小确定子模块304、以及逻辑地址确定子模块306。如图3所示,所述命令类型ID子模块302可以被配置成用于从硬件输入接口224接收主机命令、并且解析所述主机命令以便识别所述主机命令是主机读取请求还是不同类型的主机命令,例如主机写入请求。如之前描述的,如果所接收的主机命令是非主机读取请求的命令,则命令类型ID子模块302可以将所述主机命令经由固件接口220发送至中央固件模块210以进行后续处理。可替代地,如果所述命令类型ID模块确定所述主机命令是主机读取请求,则命令类型ID子模块302可以将所述主机读取请求(或从所述主机读取请求解析得到的信息)作为其结果输出发送至所述大小确定子模块304、并且作为其状态输出指示:它成功地接收到主机读取命令。
作为响应,所述大小确定子模块304可以锁存从命令类型ID子模块302接收的所述主机读取请求信息、并且确定被请求读取的数据的大小。如果所述数据的大小超过了预定阈值量,则所述大小确定子模块可以确定:所述主机读取请求在请求太大的待读取数据量而硬件模块202-208不能处理。作为响应,所述大小确定子模块304可以将所述主机读取请求信息发送至中央固件模块210以进行后续处理。
对于一些示例配置,阈值数据水平可以对应于一次或每次尝试可以从存储器132读出的扇区或最小数据单位。此外或者可替代地,所述阈值水平可以对应于所述控制器110响应于发送单个数据检索命令集可以从存储器模块130接收的数据量。示例的阈值大小可以是4千字节(kB)或8kB,但其他大小可以是可能的。此外或者可替代地,对于闪存,最小数据单位对应于一页数据。执行对于具有的大小小于或等于所述最小读取数据单位的数据的读取请求可以被称为短读取请求,并且执行短读取请求可以被称为短读取。对于一些示例,硬件模块202-208可以被配置成用于仅处理短读取请求,并且因此涉及比短读取大的读取的任何读取请求可以被发送至中央固件模块210以进行进一步处理。对于其他示例配置,硬件模块202-208可能能够处理非短读取的主机读取请求。
如果所述大小确定模块304确定了被请求将被读取的数据的大小没有超过所述预定阈值水平,则所述大小确定模块304可以将所述主机读取请求信息作为其结果输出发送至逻辑地址确定子模块306。
逻辑地址确定子模块306可以被配置成用于确定在所述主机读取请求中包含的逻辑地址信息,所述逻辑地址信息接着可以被地址转换硬件模块204(图2)转换成与所请求的数据被存储在的位置相关联的物理地址。更详细地,对于一些存储器技术,例如闪存,主机系统101和存储模块102可以使用不同的寻址方案来管理数据的存储。例如,当主机系统101想要将数据写入存储模块102中时,主机系统101可以对所述数据分派逻辑地址(也称为逻辑块地址(LBA))。类似地,当主机系统101想要从存储模块102读取数据时,主机系统101可以通过所述逻辑地址识别它想要读取的数据。主机系统101可以利用逻辑寻址方案,其中主机文件系统维持被主机系统101分派或识别的所有LBA的逻辑地址范围。此外,对于一些示例配置,主机系统101可以在逻辑扇区单位内对数据寻址。相应地,主机读取和写入请求可以请求将读取和写入包括具有相连地址的一串逻辑扇区数据的区段。
与所述主机系统的逻辑寻址方案形成对比,存储模块102可以根据物理寻址方案来存储和访问数据,所述据物理寻址方案使用与主机系统101分派的逻辑地址不同的物理地址来存储和访问数据。为了协调所述主机系统的逻辑寻址方案与所述存储模块的物理寻址方案,存储模块102可以进行地址转换,其中存储模块102将主机请求中包含的逻辑地址转换成物理地址来进行数据的存储或检索。如之前描述的,存储器132可以被组织或安排成元块。相应地,当存储器设备102进行地址转换时,所述存储器设备102所确定的物理地址可以识别所述数据被存储在的所述元块、所述多个元块、和/或元块内的物理扇区。
对于一些示例配置,所述逻辑地址(LBA)可以被分组成通过逻辑组号表示的逻辑组(LG),并且所述逻辑组可以被映射至所述元块。图7示出了逻辑组(LG)与元块(MB)之间的映射的示意图。每个逻辑组可以映射至独特元块。相应地,如图7所示,元块可以具有数量N的物理扇区以用于存储与一个逻辑组相关联的N个逻辑扇区的数据。对于一些示例配置,所述逻辑扇区的数据可以按相连的且依次的逻辑顺序0、1、...、N-1被储存在所述物理扇区中。可替代地,N个逻辑扇区的数据可以随机地或不相连地存储在一个元块的N个物理扇区内。
此外,对于相连地存储数据的一些示例配置,在逻辑组的最小地址与它被映射至的元块的最小地址之间可能存在偏差。在此情况下,逻辑扇区地址可以作为从所述元块内的逻辑组的底部回到顶部的环路进行环绕。例如,如在图2的底部图中所示,元块MBj可以存储与其第一物理扇区0中的逻辑扇区k相关联的数据。当到达最后一个逻辑扇区N-1时,所述逻辑扇区可以环绕成使得,第一逻辑扇区0被相连地且依次地存储在逻辑扇区0之后,并且逻辑扇区k-1被存储在最后一个物理扇区N-1中。可以使用页标签来标识任何偏差,例如通过标识被存储在所述元块的第一物理扇区中的数据的起始逻辑扇区地址。
返回参见图3,当逻辑地址确定子模块306从大小确定子模块304接收到主机读取请求信息时,逻辑地址确定子模块306可以解析所述信息以便根据映射方案、例如图7所示的映射来确定逻辑地址信息。示例的逻辑地址信息可以包括至少一个逻辑组号以及相关联的偏差、相关联的长度(大小)、以及相关联的存储体号。逻辑地址确定子模块306可以将所述逻辑地址信息作为其结果输出输出至地址转换硬件模块204,所述地址转换硬件模块接着可以使用所述逻辑地址信息来识别所述数据被存储在的元块和/或元块内的物理扇区。
对于一些示例配置,逻辑地址确定子模块306可以被配置成用于确定是所述逻辑地址信息的一部分的一定数量的逻辑组号。此外,逻辑地址确定子模块306可以将逻辑组号的数量与阈值数量进行比较。如果逻辑组号的数量超过所述阈值,则逻辑地址确定子模块306可以确定:主机读取请求在请求太大的有待读取的数据量而硬件模块202-208不能处理。作为响应,逻辑地址确定子模块306可以将所述主机读取请求信息发送至中央固件模块210以进行后续处理。对于一些示例,所述阈值数量可以是一。也就是,请求与多个逻辑组号相关联的数据的任何读取请求都可以被识别为针对所述固件模块210而不是硬件模块202-208的主机读取请求。不是一的阈值数量是可能的。
此外或者可替代地,对于一些示例配置,大小确定子模块304可能不作为所述前端模块202的子模块被包含,所述前端模块202可以判定主机读取请求是否在请求对于硬件模块202-208仅基于由逻辑地址确定子模块306所确定的所述数量的逻辑组号而言太大的数据量。对于其他示例配置,逻辑地址确定子模块306可以不考虑逻辑组号的数量,并且只要大小确定子模块304确定所请求的数据的大小位于所述预定值之内,逻辑地址确定子模块306就可以将所述逻辑地址信息传递至地址转换硬件模块204。
返回参见图1,主存储器134中的元块可以包括或者证明是完好块和更新块。元块在完全(且有时候依次地)存储了一个逻辑组的数据而所述数据没有任何废弃(即,元页的所有N个物理扇区存储了N个逻辑扇区的数据并且所述数据扇区没有任何废弃)时是作为完好块。元块在存储了一个或多个逻辑扇区的更新后数据时是更新块。当更新块没有完全被更新后数据填充时,所述更新块可以开放用于、或者可以用接收与相同逻辑组相关联的其他逻辑扇区的更新后数据。当更新块被完全填充时,它可以被关闭或者不再可用于接收其他逻辑扇区的更新后数据,此时所述更新块可以变成完好块。
对于示例配置的包括主存储器134和二进制缓存136的存储器132,数据可以存储在二进制缓存136的二进制缓存块中、而不是主存储器134的元块中。所述控制器110可以被配置成用于评估多个不同的因素或指标来判定某些数据是被存储在主存储器134中还是二进制缓存136中。一个因素可以包括有待存储的数据是否是数据片段。数据片段可以是具有的大小小于元页的大小从而使得所述数据的写入将构成部分页写入的数据。为了展示,假定元页包括八个物理扇区。如果有待写入的某些数据仅跨两个扇区,则所述数据可以被识别为用于存储在二进制缓存136中的数据片段。可以使用不同于或者除了数据大小之外的因素来判定数据是被存储在主存储器134中还是二进制缓存136中。例如,如果当前对于所述数据存在更新块并且所述更新块可以用存储所述数据,即使所述数据证明是数据片段,所述控制器110也可以确定将所述数据存储在主存储器134的所述可用更新块中而不是二进制缓存136中。
对于一些示例配置,数据标题可以与相关联的数据片段一起被存储在二进制缓存136。所述数据标题可以包括:标识相关联的数据片段所属的逻辑组的逻辑组号、标识所述逻辑组内的具体扇区的扇区偏差、标识所述相关联的数据片段的长度的长度标识符、以及标识相关联的数据片段是否过度写入了被存储在更新块中的对应数据的一个或多个过度写入指示符或标记。
对于一些情形,响应于将写入数据的主机请求,所述控制器110可以将所述数据存储在主存储器134和二进制缓存136二者中。例如,如果有待存储的数据大于元页,则控制器110可以将具有元页的大小的第一部分存储在所述主存储器134中的更新块中、标签将所述数据的第二剩余部分存储在所述二进制缓存136中。为了展示,假定有待写入的数据要求九个物理扇区。所述控制器110可以将所述数据的这九个扇区中的八个存储在更新块中、标签将所述数据的剩下一个扇区存储在所述二进制缓存136中。
此外或者可替代地,所述控制器110可以将重叠的数据存储在主存储器134和二进制缓存136中。作为展示,假定所述控制器110响应于第一主机写入请求而将八个扇区的数据存储在主存储器134中的元块中。进一步假定所述控制器110接收用于更新这八个扇区中的两个扇区的第二主机写入请求。所述控制器110可以将更新后的数据作为数据片段存储在二进制缓存136中。作为另一种展示,所述控制器110可以接收第一主机写入请求,其中将两个扇区的数据作为数据片段存储在二进制缓存136中。所述控制器110接着可以接收用于存储八个扇区的第二主机写入请求,这八个扇区中的两个可以用于被存储在二进制缓存136中的这两个扇区的数据的更新。
替代于被存储在存储器132中,一些数据可以被存储在控制器110中,例如缓冲池212或控制器存储器218中(图2)。这样的数据可以包括在被发送到存储器132或主机系统101之前被暂时存储在所述控制器110内的数据、或者旨在被永久存储在所述控制器110中的数据。
为了保持跟踪数据被存储在所述存储模块102中的哪里,存储模块102可以维持目录系统,所述目录系统映射了逻辑地址与物理地址之间的关系或关联。所述目录系统可以包括跟踪和指明逻辑-物理地址关系的多个地址数据结构(例如表格、列表、日志、或数据库作为示例)。所述多个地址数据结构可以包括主要地址数据结构(也称为主地址表(GAT))以及至少一个次要地址数据结构。所述控制器110可以访问所述主要和次要数据结构以便确定所述数据的最新版本被存储在所述存储模块102中的哪里。
所述主要地址数据结构(GAT)可以提供关于所述主机系统101所识别的逻辑地址范围中所包含的逻辑地址的主要映射。关于GAT的多种不同配置的映射是可能的。在关于闪存技术的一种示例配置中,所述GAT保持跟踪逻辑扇区的逻辑组与对应元块之间的关系。所述GAT包括关于每个逻辑组的录入项,所述录入项是根据逻辑地址依次排序的。此外,所述GAT可以被组织成多个GAT页,其中每个GAT页包含标识每个逻辑组的元块地址的录入项。
所述至少一个次要地址数据结构可以提供关于被存储在二进制缓存136中的数据的逻辑-物理地址映射、关于数据(例如被存储在更新块中的数据)的变化的逻辑-物理地址映射和/或其某种组合。
一个示例的次要地址数据结构(被称为GAT Delta)可以跟踪录入项的变化和/或包括在所述GAT的映射中改变的录入项的列表。如之前描述的,当再写入数据时,可以将所述数据的新版本写入所述主存储器134的另一个部分中,例如更新块中。GAT Delta可以将被存储在所述更新块中的数据与相关联的逻辑组进行映射。对于一些示例配置,GAT Delta可以是主索引页(MIP)的一部分,除了GAT Delta之外,主索引页还包括空闲块列表(FBL)和/或所述GAT。所述空闲块列表可以是标识出可以用存储数据(例如,用于作为更新块分配)的并且之后可以映射至逻辑组的块的列表。
另一个次要地址数据结构可以是跟踪二进制缓存136中的数据的二进制缓存索引(BCI)。所述二进制缓存索引可以包括多个二进制缓存索引,所述索引将数据片段所属的逻辑组与所述数据片段在所述二进制缓存136中被存储中的物理位置或地址进行关联或映射。对于一些示例配置,所述控制器110可以查询所述BCI的给定数据片段、并且作为响应而接受表示二进制缓存块和扇区号以及所述数据片段的长度的指示变量或其他标识符。
其他次要地址数据结构是可能的。例如,一个或多个其他次要地址数据结构可以将被存储在缓冲池212或控制器存储器218中的数据的物理地址与相关联的逻辑组进行映射。
所述主要和次要地址数据结构可以被存储在存储模块102的任一个存储器中,包括所述控制器存储器218、主存储器134、以及二进制缓存136。此外或者可替代地,所述主要和次要地址数据结构中的一些或全部可以存储在存储模块102外部,例如在主机系统101中。此外,对于一些示例配置,在任何给定的时刻或对于任何持续时间,可以生成所述地址数据结构中的一个或多个、或者所述地址数据结构的至少一部分的多个副本,从而使得对于给定的地址数据结构,在存储模块102中的两个不同位置中存储了两个版本。为了展示,对于给定的地址数据结构,一个版本可以存储在存储器132中,要么主存储器134中要么二进制缓存136中,并且另一个可以存储在控制器存储器118中,例如控制器118的RAM部分中。作为另一种展示,对于给定的地址数据结构,一个版本可以存储在存储模块102外部,并且另一个版本可以存储在存储模块102内部,例如在控制器存储器218中或存储器132中。对于一些示例配置,所述地址数据结构的主或主要版本可以存储在存储器132中或主机系统101中,并且当控制器110确定将查询或更新所述地址数据结构时,所述控制器110可以在控制器存储器218中创建副本或加载第二版本。如果对所述副本进行了任何更新,则存储在存储器132中的版本可以类似地被更新。存储所述主要和次要地址数据结构的多种不同方式或位置是可能的。
图8示出了用于闪存的示例的主要和次要地址数据结构安排的示意图。如图8所示,用于所有逻辑块地址(LBA)的逻辑地址范围802可以被维持在主机系统101所利用的主机文件系统中。这些LBA可以被分组成逻辑组(LG)804。如之前描述的,某些与逻辑组804相关联的数据片段808可以被写入二进制缓存136中而不是主存储器134中。对于被存储在二进制缓存136中的数据片段808,二进制缓存索引806可以将与所述数据片段808相关联的逻辑组与所述数据片段808在所述二进制缓存136中被存储在的二进制缓存块810进行映射。如图8中所示,所述二进制缓存索引806可以存储在存储器(MEM)132中,要么主存储器134中要么二进制缓存136中。此外,所述二进制缓存索引的全部或一部分的副本(在图8中被标识为BCI缓存812)由于经常使用或最近使用可以被维持(缓存)在控制器存储器218的RAM部分824中。图8示出了被维持在所述RAM部分824中的二进制缓存索引812副本,指向被存储在所述二进制缓存块810中的数据片段808。被存储在二进制存储器132中的所述二进制缓存索引806可以类似地指向被存储在所述二进制缓存块810中的数据片段808。
所述主要地址数据结构(GAT)包括GAT页814、可以被存储在存储器132中。此外,所述GAT页814的一些或全部的副本除了GAT Delta(一起在图8中标识为GAT页缓存816)之外也可以被维持(缓存)在RAM 824中。而且,对于图8中所示的示例安排,GAT Delta还可以被维持在RAM 824中,但对于其他示例安排,GAT Delta的全部或一部分此外或者可替代地可以被存储在主存储器134中。图8示出了被维持在RAM 824中、指向被存储在主存储器134的更新块和完好块818中的数据的所述GAT页和GAT Delta816。被存储在存储器132中的所述GAT页814可以类似地指向被存储在更新块和/或完好块818中的数据。
在任何给定的时,所述主要地址数据结构(GAT)中的录入项可以不将逻辑组映射至属于所述逻辑组的数据被存储在的物理位置、和/或可以不将逻辑组映射至属于所述逻辑组的数据的最新版本被存储在的物理位置。在所述主要地址数据结构具有的逻辑-到-物理映射过时的情况下,所述次要地址数据结构中的至少一个可以提供最新的映射。此外,所述次要地址数据结构可以提供一个或多个指示,例如通过指针变量或时间戳,以指示所述逻辑-物理映射是否映射于所述数据的最新版本。
如果所述主要地址数据结构中的录入项是尽可能新的,控制器110可以被配置成用于将所述主要地址数据结构中的映射与所述次要地址数据结构中的映射同步,使得所述主要地址数据结构提供到所述数据的最新版本的映射。然而,在任何给定的时刻,在所述主要地址数据结构还没有与所述次要地址数据结构同步时,可能接收到主机读取请求。
为了确保被发回至主机的数据是最新的版本,所述控制器110通过使用地址转换硬件模块204、中央固件模块210、或二者的组合,可以被配置成用于查询所述次要地址数据结构中的至少一个、然后再从存储器模块132检索数据和/或对主机作出响应。在查询充足数量的主要和/或次要地址数据结构时,控制器110可以确定逻辑-物理映射和/或检索标识了所述数据的最新版本被存储在何处的物理地址。这样,通过查询查询充足数量的次要地址数据结构和/或主要地址数据结构,控制器110可以确保将所述数据的最新版本发回至主机系统101。
参见图4,地址转换硬件模块204可以包括被配置成用于查询一个或多个次要地址数据结构的次要地址数据结构查询子模块402、以及被配置成用于查询主要地址数据结构的主要地址数据结构查询子模块404。对于一些示例配置,在所述次要和主要地址数据结构查询子模块402、404进行其相应的子进程之前,可以将所述子模块402、404可能查询的主要和次要地址数据结构载入控制器存储器218中,例如控制器存储器218的RAM部分中,如果它们不是已经存储在哪里的话。
所述次要地址数据结构查询子模块402可以经由硬件输入接口224接收所述逻辑地址信息作为其结果输入、并且当在其状态输入上检测到成功状态指示之时锁存所述逻辑地址信息。通过使用所述逻辑地址信息,所述次要地址数据结构查询子模块402可以被配置成用于查询所述次要地址数据结构的全部或至少一个,以便判定对于它被配置成用于查询的所述次要地址数据结构中的逻辑地址信息是否存在逻辑-物理地址映射。示例的次要地址数据结构可以包括跟踪录入项的变化和/或包括在所述主要数据结构的映射中改变的录入项的列表的数据结构,例如之前描述的GAT Delta或MIP。
如果在所查询的次要地址数据结构中存在逻辑-物理映射,则所述次要地址数据结构查询子模块402可以标识“击中”、并且将它标识的物理地址向下游发送至主要地址数据结构查询子模块404以作为其结果输出。由于所述次要地址数据结构标识录入项变化的固有性质、以及最新版本数据的逻辑-物理映射,可以不在主要地址数据结构(如GAT)中进行搜索,因为这样的搜索可能返回过时的逻辑-物理映射。相应地,对于一些示例配置,为了避免所述主要地址数据结构404进行的搜索,所述次要地址数据结构查询子模块402输出其在“绕行”水平上的状态输出,以便指示所述主要地址数据结构查询子模块404放弃查询所述主要地址数据结构并将所述次要地址数据结构查询子模块402所识别的物理地址传递至所述数据检索硬件模块206。
可替代地,如果在所述次要地址数据结构查询子模块402所请求的次要地址数据结构中不存在逻辑-物理映射,则所述次要地址数据结构查询子模块402可以将所述逻辑地址信息发送至所述主要数据结构查询子模块404以作为其结果输出。此外,所述次要地址数据结构查询子模块402可以输出其在以下水平上的状态输出:告诉或指示所述主要数据结构查询子模块404锁存在其结果输入上所接收的逻辑地址信息、并且进行对所述主要地址数据结构、例如GAT的查询,以便确定逻辑-物理映射。如果主要地址数据结构查询子模块404不能确定逻辑-物理映射,则所述主要地址数据结构查询子模块404可以通知所述中央固件模块210:地址转换模块204不能确定它所接收的逻辑地址信息的物理地址。可替代地,如果主要地址数据结构查询模块404确定了物理地址,则所述主要地址数据结构查询子模块404可以将所述物理地址作为其结果输出而输出。
对于一些示例配置,所述次要地址数据结构中的至少一个可以仅被中央固件模块210查询而不被地址转换硬件模块204查询,例如BCI作为一个示例。可能不能以足够的确定性来确定与所述数据的最新版本相关联的最终物理地址,除非这个次要数据结构是被中央固件模块210查询的。对于这些示例的配置,如果前端模块202成功地确定了用于主机读取请求的逻辑地址信息,则前端硬件模块202可以将所述逻辑地址信息发送至中央固件模块210,使得中央固件模块210可以开始查询将不会被地址转换硬件模块204查询的次要地址数据结构。
在查询了所述次要地址数据结构之后,如果所述固件模块210没有识别地址信息,则所述固件模块210可以向所述数据检索模块206发送使能信号,这可以告诉所述数据检索模块206锁存从地址转换硬件模块204接收的物理地址信息。可替代地,如果所述固件模块210识别了地址信息,则所述固件模块210可以被配置成用于判定是否让所述数据检索硬件模块206检索在所述物理地址的数据、或者是否让所述固件模块210自身检索所述数据。对于一些示例配置,这种判定可以基于:通过生成并发出单个数据检索命令集,所述固件模块210是否确定在所述物理地址的数据。如果可以,则所述固件模块210可以将所述物理地址发送至数据检索硬件模块206。如果不能,则所述固件模块210可以确定将自身检索在所述物理地址的数据。
对于一些示例配置,所述数据检索硬件模块206在没有接收到来自所述中央固件模块210的通知并确认与所述数据的最新版本相关联的最终物理地址的情况下,可以不进行任何将致使被存储在存储器132中的数据从存储器模块130传送至所述控制器110的动作。
参见图5,一种示例配置的数据检索模块206可以包括实际物理地址确定子模块502和上下文命令生成子模块504。如果所述实际物理地址确定子模块502或上下文命令生成子模块504不能进行其相应子进程,则它们可以被配置成用于通知所述中央固件模块210、以及所述物理地址信息。
对于一些示例配置,所述地址转换硬件模块204所确定的物理地址是抽象物理地址,例如元块号。所述实际物理地址确定子模块502可以被配置成用于将所述抽象物理地址变换成标识所述存储器的物理方面的实际物理地址,并且所述实际物理地址可以处于所述存储器模块130的逻辑电路142为了读出所述数据而可以使用的格式。对于一些示例配置,所述实际物理地址确定子模块502可以包括多个寄存器来进行寄存器屏蔽和移位以便确定实际物理地址。所述实际地址确定子模块502可以将所述实际物理地址作为其结果输出而输出、并且还输出其在成功水平上的状态输出。
所述上下文命令生成子模块504可以锁存在其结果输入处接收的实际物理地址并且生成一个或多个数据检索命令集合。总体上,数据检索命令可以是所述控制器110为了检索主机系统101想要读取的数据而执行或向逻辑电路142发出的上下文命令。所述上下文命令可以按集合生成,其中每个集合包括读出命令和数据传送命令。所述读出命令可以指示所述存储器模块130的逻辑电路142读出被存储在所述读出命令中所标识的实际物理地址的数据。可以生成所述数据传送命令来使得所读出的数据在总线146上被传送至所述控制器110。取决于有待读取的数据的大小和/或在存储器132中如何或在哪里存储所述数据,可以生成和/或执行单个一对或多对上下文命令。
对于一些示例配置,所述上下文命令生成子模块504可以被配置成用于生成与所述主机读取命令相关联的单个读出和数据传送上下文命令集。换言之,如果所述逻辑和/或物理地址信息表明为了检索所请求的数据,需要多于单个的读出和数据传送命令集,则这样的主机读取请求可以由所述固件模块210而不是所述数据检索硬件模块206来处理。
如之前描述的,对于一些示例配置,可能存在一个或多个次要地址数据结构是中央固件模块210被配置成用于查询的,而不是首先尝试被地址转换模块204查询,例如查询BCI。对于这些配置,所述上下文命令生成子模块504可以被配置成用于:在从中央固件模块210接收到关于所述固件模块210对所述次要数据结构的查询是否得到了逻辑-物理映射的通知之前,不发出至少一个数据传送命令。例如,所述上下文命令生成子模块504可以发出读出命令、但是可以等待从中央固件模块210接收到了核准,然后再发出数据传送命令。对于其他的配置,所述上下文命令生成子模块504可以不发出读出命令和数据传送命令二者。如果中央固件模块210没有从所述查询中识别逻辑-物理映射,则中央固件模块210可以通知所述上下文命令生成子模块504进行数据传送命令的发出。可替代地,如果中央固件模块210识别了逻辑-物理地址映射,则中央固件模块210可以向所述上下文命令生成子模块504发送通知:所述通知阻止所述上下文命令生成子模块504发出具有由所述实际物理地址确定子模块502所确定的实际物理地址的数据传送命令。
对于一些示例配置,中央固件模块210可以将它从其查询所确定的物理地址发送至数据检索模块206,其中实际物理地址确定子模块502可以确定新的实际物理地址并且上下文命令生成子模块502可以使用所述新的实际物理地址生成一个或多个新的读出和数据传送命令集。可替代地,所述中央固件模块210可以自身进行所述数据检索动作。
其他主机读取请求进程可以由中央固件模块210和/或上下文命令生成子模块504通过存储器接口模块114来进行,例如定序、开关操作、芯片使能、裸片选择,以便设置所述存储器接口模块114来将读出和/或数据传送命令发送至存储器模块130从而检索在被实际物理地址确定子模块502和/或中央固件模块210确定的实际物理地址的数据。此外,在数据处理流程仅被配置成用于短读取的情况下,中央固件模块210可以具体地配置所述存储器接口模块114,使得它被配置成用于仅针对短读取而发出上下文命令,这可以加速存储器接口模块114的设置时间。
响应于被发出至存储器模块130的数据传送命令,与所发送的命令相关联的数据可以被传送至所述后数据检索硬件模块208。参见图6,一种示例配置的后数据检索硬件模块208可以包括错误校正模块602和解码模块604。
所述错误校正模块602可以被配置成用于对从存储器132检索的数据进行错误识别和纠正。例如,所述错误校正模块602可以鉴定所述数据的位错误率(BER)。如果位错误率低于阈值,则所述错误校正模块602可以确定错误量是可纠正的、纠正所述错误、并将所述数据传递至所述解码模块604。可替代地,如果所述错误校正模块602确定位错误率高于阈值,则所述错误校正模块602可以确定它不能纠正所述错误,并且可以进行后续错误恢复动作以便恢复所述数据(例如,读取具有的位错误率低于所述阈值的数据)。多个不同的示例错误恢复动作是可能的,包括操以更高功率模式运行错误校正引擎、增大软比特的数量、以及调整被施加至存储器以读出所述数据的电压水平,作为非限制性示例。总体上,所述错误校正模块602可以被配置成用于在它确定了所读出的数据具有高于阈值水平的位错误率从而要求错误恢复的事件中,通知所述中央固件模块210。所述中央固件模块210接着可以进行后续错误恢复和纠正进程。
在所述错误校正模块602鉴定出低于所述阈值水平的位错误率的事件中,所述错误校正模块602可以纠正所述错误并接着将经纠正的数据发送至所述解码子模块604。对于一些示例配置,解码可能不是必须的,在此情况下所述错误校正模块602可以将其状态输出设定至以下水平:在接收到经校正的数据时告诉所述解码模块604绕过解码。可替代地,所述错误校正模块602可以将状态输入设定至以下水平:使所述解码模块604锁存所述经校正的数据。所述解码子模块604接着可以解码所述数据并将经解码的数据输出至缓冲池212,以便在其被发送至主机系统101之前暂时存储它。所述解码模块604还可以向所述主机接口模块116发送状态输出来通知所述主机接口模块116:数据被存储在缓冲池中并且准备发送至主机。可替代地,如果所述解码子模块604确定它不能成功解码所述数据,则所述解码子模块可以通知所述中央固件模块210。
返回参见图2,在执行主机读取命令之前,例如在存储模块102的设置过程中,所述中央固件模块210可以被配置成用于用任何预配置数据来设置或预配置所述模块202-208及其相关联的子模块中的一个或多个,所述预配置数据是例如逻辑组参数(例如,分隔边界、存储体拆分信息、逻辑组大小参数)、并且访问例如主要和/或次要地址数据结构中的任一个并将其载入控制器存储器218中。
此外,所述硬件模块202-208及其相关联的子模块可以按不同于图2-6示出的所述示例配置的任何数量的不同方式进行模块化。对于一些示例的实施方式,硬件模块202-206及其相关联的子模块的全部或其中一些可以被认为是控制路径的一部分、或是所述主机读取请求进程流程的控制部分,这可以包括为了从存储器中检索数据而进行的那些主机读取请求进程,而所述后数据检索硬件模块208及其相关联的子模块可以被认为是数据路径的一部分、或所述主机读取请求进程流程的数据部分,这可以包括在已经从存储器132检索了数据之后并且为了确保所述数据处于传输到主机系统101的条件中而对所述数据进行的那些主机读取请求进程。多种不同的模块化安排可以对应于所述主机读取请求进程流程的控制部分和数据部分。例如,所述控制器110的一些示例的配置可以包括用于所述控制路径但不用于所述数据路径的硬件模块,反之亦然。其他用于将主机读取请求的硬件进程流程进行模块化的方式是可能的。
进一步,虽然所述模块化配置是关于执行主机读取请求而描述的,但类似的模块化方案可以用于其他存储器管理操作,例如主机写入请求,作为一个示例。
图9示出了用于执行主机读取请求的控制器的部件的另一种示例配置的框图。类似于参照图2示出和描述的硬件模块202-208,图9所示的示例配置可以包括多个主机请求模块,包括前端模块902、地址转换模块904、数据检索模块906、以及后数据检索模块908。然而,与图2所示的、具有中央固件模块210与通信的多个硬件模块202-208的这个示例配置形成对比,所述主机请求模块902-908中的每一个可以包括硬件模块和本地固件模块910二者。
如图9所示,所述主机请求模块902-908中的每一个可以具有输入接口(I/P I/F)924和输出接口(O/P I/F)926以用于通过使用通信总线952与其他模块902-908通信、以及高层级固件950、主机接口模块116、和存储器接口模块114进行通信。所述高层级固件模块950可以控制和/或进行其他存储器管理功能,例如执行主机读取请求、对状态请求作出响应、进行存储器再安置(例如,垃圾收集)、以及管理地址目录,作为非限制性示例。
前端模块902被示出为包括硬件(HW)模块930(1)、930(2)和930(3),所述模块可以分别对应于命令类型ID子模块302、大小确定子模块304、和逻辑地址确定子模块306。地址转换模块904被示出为包括硬件模块932(1)和932(2),所述硬件模块可以分别对应于次要地址数据结构查询子模块402和主要地址数据结构查询子模块404。数据检索模块906被示出为包括硬件模块934(1)和934(2),所述硬件模块可以分别对应于实际物理地址确定子模块502和上下文命令生成子模块504。所述后数据检索模块908被示出为包括硬件模块936(1)和936(2),所述硬件模块可以分别对应于错误校正模块602和解码子模块604。
当接收到主机读取请求时,它可以从主机接口模块116被发送至前端模块902。前端模块902可以使用硬件模块930、本地固件模块910、或其组合来处理所述主机读取请求。当所述前端模块902完成处理所述主机读取请求时,它可以将逻辑地址信息发送至地址转换模块904,所述地址转换模块可以使用其硬件模块932、其本地固件模块910、或其组合来将所述逻辑地址信息转换成物理地址信息。当所述地址转换模块结束时,地址转换模块904可以将所述物理地址信息输出至数据检索模块906。所述数据检索模块906通过使用硬件模块934、其本地固件模块910、或其组合可以生成一个或多个上下文命令集以便检索在所述存储器中位于实际物理地址的数据。所述数据检索模块906可以将上下文命令传送至存储器接口模块114,所述存储器接口模块可以将所述上下文命令发送至存储器模块130(图1)。作为响应,存储器模块130可以将所述数据发回至控制器110(图1)、经存储器接口114发送至所述后数据检索模块908。作为响应,所述数据检索模块908通过使用硬件模块936、其本地固件模块910、或其组合可以进行后数据检索进程,例如错误校正和/或解码。对于一些示例配置,缓冲池212(图2)可以位于所述后数据检索模块908内,并且主机接口模块116可以与所述后数据检索模块908通信以便将所述数据传送至主机系统101(图1)。
对于一些示例配置,存储模块102可以通过作为主机系统101的嵌入式设备、或通过与主机系统101可移除地连接而与主机系统101一起实现。图10A和10B示出了这些实现方式。如图10A所示,存储模块102可以嵌入主机系统101中。除了包裹存储模块102之外,主机系统101还可以具有主机控制器1020。也就是,主机系统101可以包裹所述主机控制器1020和所述存储模块102,使得所述主机控制器1020与所述嵌入式存储模块102相接来管理其操作。例如,存储模块102可以采取闪迪公司(SanDisk Corporation)的iNANDTMeSD/eMMC嵌入式闪存驱动器的形式。所述主机控制器1020可以通过使用主机接口116而与嵌入式存储模块102相接(图1)。此外,当存储模块102被嵌入主机系统101中时,存储模块102中的控制器110所进行的功能的一些或全部可以替代地由所述主机控制器1020进行。
主机系统1010可以采取任何形式,例如但不限于固态驱动器(SSD)、混合存储模块(具有硬盘驱动器和固态驱动器二者)、存储器缓存系统、移动电话、平板电路、数字媒体播放器、游戏设备、个人数字助理(PDA)、移动(例如,笔记本、膝上型)个人计算机(PC)、或书阅读器,作为几个示例。如图10A所示,主机系统101可以包括可选的其他功能模块1030。例如,如果主机系统101是移动电话,则其他功能模块1030可以包括用于拨打和接听电话的硬件和/或软件部件。作为另一个示例,如果主机系统101具有网络连接能力,则其他功能模块1030可以包括网络接口。这些仅仅是一些示例,并且可以使用其他实施方式。而且,主机系统101可以包括其他部件(例如,音频输出、输入输出端口等),为了简化附图,所述部件在图10A中未被示出。
在如图10B所示的替代性配置中,存储模块102可以具有允许存储模块102经由配合连接器可移除地连接至主机系统101(具有主机控制器1045)的物理的和电连接器,而非作为主机中的嵌入式设备。这样,存储模块102可以是来自主机系统101的独立设备(并且未嵌入在主机中)。例如,在此示例中,存储模块102可以是可拆卸存储器设备(如安全数字(SD)存储器卡、微型SD存储器卡、紧凑型闪存(CF)存储器卡、通用串行总线(USB)设备(具有连接至主机的USB接口)),并且主机系统102是独立设备,如移动电话、平板计算机、数字媒体播放器、游戏设备、个人数字助理(PDA)、移动(例如笔记本电脑、膝上型计算机)个人计算机(PC)或书阅读器。
此外,参见图1,存储器132可以是半导体存储器设备所述,半导体存储器设备包括易失性存储器设备(如动态随机存取存储器(“DRAM”)或静态随机存取存储器(“SRAM”))、非易失性存储器设备(如电阻式随机存取存储器(“ReRAM”)、电可擦除可编程只读存储器(“EEPROM”)、闪存(其还可以被考虑为EEPROM的子集)、铁电随机存取存储器(“FRAM”)、和磁阻随机存取存储器(“MRAM”))、以及能够存储信息的其他半导体元件。每种类型的存储器设备可以具有不同的配置。例如,闪存设备可以被配置成NAND或NOR配置。
存储器设备可由无源和/或有源元件以任何组合来形成。通过非限制性示例的方式,无源半导体存储器元件包括ReRAM设备元件,在一些实施例中,所述元件包括如反熔丝相变材料等电阻率切换存储元件以及(可选地)如二极管等操控元件。进一步通过非限制性示例的方式,有源半导体存储器元件包括EEPROM和闪存设备元件,在一些实施例中,所述元件包括如浮栅、导电纳米颗粒、或电荷存储介电材料等包含了电荷存储区域的元件。
多个存储器元件可以被配置为使得它们串联或使得每个元件是可单独访问的。通过非限制性示例的方式,NAND配置(NAND存储器)中的闪存设备通常包含串联的存储器元件。NAND存储器阵列可以被配置为使得阵列包括多个存储器串,其中,串包括共享单个位线并作为群组被访问的多个存储器元件。替代性地,存储器元件可以被配置为使得每一个元件是可单独访问的(例如,NOR存储器阵列)。NAND和NOR存储器配置是示例性的,并且存储器元件可以以其他方式配置。
位于基板内和/或上方的半导体存储器元件可以被安排在两个或三个维度(如二维存储器结构或三维存储器结构)中。
在二维存储器结构中,半导体存储器元件被安排在单个平面或单个存储器设备级中。通常,在二维存储器结构中,存储器元件被安排在基本上平行于支撑存储器元件的基板的主要表面而延伸的平面中(例如,在x-z方向平面中)。基板可以是在其上方或在其中形成存储器元件层的晶片,或者其可以是在形成存储器元件之后附接至其上的载体基板。作为非限制性示例,基板可以包括如硅等半导体。
可以在单个存储器设备级中将存储器元件安排成有序阵列,如在多个行和/或列中。然而,可以在非规则或非正交配置中排列存储器元件。存储器元件中的每个存储器元件可以具有两个或更多个电极或接触线,如位线和字线。
三维存储器阵列被安排成使得存储器元件占据多个平面或多个存储器设备级,由此在三个维度(即,在x方向、y方向和z方向上,其中,y方向基本上垂直于并且x和z方向基本上平行于基板的主表面)中形成结构。
作为非限制性示例,三维存储器结构可以被垂直地安排成多个二维存储器设备级的堆叠。作为另一个非限制性示例,三维存储器阵列可以被安排成多个垂直列(例如,基本上垂直于基板的主表面延伸的列,即,在y方向上),每列在每列中具有多个存储器元件。可以在二维配置中(例如,在x-z平面中)安排所述列,导致存储器元件的三维安排,元件位于多个垂直堆叠的存储器平面上。存储器元件在三个维度中的其他配置也可以构成三维存储器阵列。
通过非限制性示例的方式,在三维NAND存储器阵列中,存储器元件可以被耦合在一起,以便在单个水平(例如,x-z)存储器设备级内形成NAND串。可替代地,存储器元件可以被耦合在一起,以便形成横跨多个水平存储器设备级的垂直NAND串。可以设想其他三维配置,其中,一些NAND串包含单个存储器级中的存储器元件,而其他串包含跨越多个存储器级的存储器元件。还可以在NOR配置中和在ReRAM配置中设计三维存储器阵列。
通常,在单片式三维存储器阵列中,在单个基板上方形成一个或多个存储器设备级。可选地,单片式三维存储器阵列还可以具有至少部分地位于单个基板内的一个或多个存储器层。作为非限制性示例,基板可以包括如硅等半导体。在单片式三维阵列中,构成阵列的每个存储器设备级的层通常在阵列的基础存储器设备级的层上形成。然而,单片式三维存储器阵列的邻近存储器设备级的层可以被共享或在存储器设备级之间存在中间层。
然后,再次,二维阵列可以被单独地形成并且然后被封装在一起,以便形成具有多个存储器层的非单片式存储器设备。例如,非单片式堆叠存储器可以通过在单独地基板上形成存储器级然后将存储器级堆叠在彼此顶上来构造。可以减薄基板或者可以在堆叠之前将其从存储器设备级中移除,但是因为存储器设备级最初地在单独的基板上方形成,所以所产生的存储器阵列不是单片式三位存储器阵列。此外,多个二维存储器阵列或三维存储器阵列(单片式或非单片式)可以在单独的芯片上形成然后被封装在一起,以便形成堆叠芯片存储器设备。
存储器元件的操作以及与存储器元件的通信通常需要相关联的电路。作为非限制性示例,存储器设备可以具有用于控制和驱动存储器元件完成如编程和读取等功能的电路。此相关联的电路可以位于与存储器元件相同的基板上和/或位于单独的基板上。例如,用于存储器读-写操作的控制器可以位于单独的控制器芯片上和/或位于与存储器元件相同的基板上。
本领域的技术人员将意识到,本发明不限于所描述的二维和三维示例性结构,但涵盖了如此处描述的本发明的精神和范围内的和如本领域的技术人员理解的所有相关存储器结构。
图11是引起通过存储模块的控制器的前端(FE)模块来执行主机读取请求的示例方法1100的流程图。所述控制器可以包括在硬件路径中的多个硬件模块,所述硬件模块被配置成用于进行用于执行主机读取请求的多个进程。所述控制器还可以包括固件模块,所述固件模块也被配置成用于进行用于执行主机读取请求的多个进程。在框1102中,所述控制器的主机接口模块(HIM)可以接收主机命令并将所述主机命令发送至所述前端模块。在框1104中,所述前端模块可以解析所述主机命令以获得被包含在主机命令中的信息。在框1106中,所述前端模块可以鉴定所述主机命令是否是读取请求。如果所述主机命令不是主机读取请求,则在框1108中,所述前端模块可以将所述主机请求发送至所述固件模块以进行后续处理。可替代地,在框1106中,如果所述主机命令是主机读取请求,则在框1110中,所述前端模块可以确定所述主机读取请求是否是对于具有的大小没有超过阈值或大小极限的数据的请求。如果是,则在框1112中,所述前端模块可以将所述主机读取请求发送至所述固件模块以进行后续处理。可替代地,如果所请求将被读取的数据是在所述大小极限之内,则在框1114中,所述前端模块可以确定开始用所述硬件路径中的硬件模块执行所述主机读取请求。
图12是响应于开始在硬件路径中执行主机读取请求而将逻辑地址转换成物理地址的示例方法1200的流程图。在框1202中,前端模块可以解析所述读取请求以确定在所述主机读取请求中标识的逻辑地址信息。在框1204中,如果所述前端模块不能成功确定所述逻辑地址信息,则在框1206中,所述前端模块可以将所述主机读取请求发送至所述固件模块。可替代地,如果所述前端模块能够成功确定所述逻辑地址信息,则在框1208中,所述前端模块可以将所述逻辑地址信息发送至所述硬件路径中的地址转换硬件模块(ATHM)。此外,在框1208中,如果存在专门用于供所述固件模块查询的次要地址数据结构,所述前端模块可以将所述逻辑地址信息发送至所述固件模块。
在框1210中,响应于接收到所述逻辑地址信息,所述地址转换硬件模块可以查询所述次要地址数据结构以便确定关于所述逻辑地址信息的逻辑-物理映射。在框1212中,如果所述查询是成功的并且所述地址转换硬件模块确定了逻辑-物理映射,则在框1214中,所述地址转换硬件模块可以确定放弃查询主要地址数据结构并且将与所述映射相关联的物理地址发送至数据检索硬件模块(DRHM)以进行后续处理。
可替代地,如果所述地址转换硬件模块没有确定逻辑-物理映射,则在框1216中,所述地址转换硬件模块可以查询主要地址数据结构。在框1218中,如果所述地址转换硬件模块通过查询所述主要地址数据结构确定了逻辑-物理映射,在所述方法进行至框1214,在这里所述地址转换硬件模块可以将与所述逻辑-物理映射相关联的物理地址发送至所述数据检索硬件模块。可替代地,在框1218中,如果所述地址转换硬件模块通过查询所述主要地址数据结构没有确定逻辑-物理映射,则在框1220中,所述地址转换硬件模块可以通知所述固件模块它不能成功地进行地址转换、并且通过查询所述次要和主要数据结构来确定物理地址。
图13是用硬件路径中的数据检索硬件模块(DRHM)、以及固件模块来检索被存储在存储器中的数据的示例方法1300的流程图。在框1302中,所述数据检索硬件模块可以从地址转换硬件模块接收物理地址。在框1304中,所述数据检索硬件模块可以尝试将从所述地址转换硬件模块接收的所述物理地址(可以是抽象地址)变换成实际物理地址。在框1306中,如果所述变换没有成功,则在框1308中,所述数据检索硬件模块可以通知所述固件模块它不能进行所述变换。可替代地,如果所述变换成功,则在框1310中,所述数据检索硬件模块可以被配置成用于生成关于所述实际物理地址的读出和数据传送上下文命令集。
在框1312中,所述数据检索硬件模块可以将所述读出命令发出至所述存储器,以用于读出位于所述实际物理地址的数据。在框1314中,所述数据检索硬件模块可以确认它基于从所述地址转换硬件模块的物理地址而判定的实际物理地址是否是最终实际物理地址。对于一些示例方法,所述数据检索硬件模块可以基于从所述固件模块接收的信息进行这种确认。例如,返回参见图12中的方法1200,在框1208中,所述前端模块可以将逻辑地址信息发送至所述固件模块,所述固件模块可以使用所述逻辑地址信息来查询仅可用于所述固件模块的次要数据结构。返回参见图13的方法1300,如果所述固件模块未能确定逻辑-物理映射,则在框1314中,所述数据检索硬件模块可以确定:它基于从所述地址转换硬件模块接收的物理地址而确定的实际物理地址是正确的。作为响应,在框1316中,所述数据检索硬件模块可以发出数据传送命令以使得所读出的数据被传送至所述控制器。可替代地,如果所述固件模块基于其查询确定了逻辑-物理映射,则在框1318中,所述数据检索硬件模块可以从所述固件模块接收新的物理地址、将所述新的物理地址变换成实际物理地址、并且重新生成具有所述新的实际物理地址的上下文命令。在框1320中,所述数据检索硬件模块可以发出新的上下文命令以便读出和传送所述数据。
图14是用硬件路径中的后数据检索硬件模块(PDRHM)、以及固件模块从存储器中检索了数据之后处理所述数据的示例方法1400的流程图。在框1402中,所述后数据检索硬件模块可以从所述存储器接收数据。在框1404中,所述后数据检索硬件模块可以进行初始错误识别以便判定与所述读取数据相关联的位错误率是否低于阈值。在框1406中,如果所述位错误率不是低于所述阈值,则在框1408中,所述后数据检索硬件模块可以将所述数据发送至所述固件模块以进行错误恢复,从而恢复并读取具有的位错误率低于所述阈值的数据。可替代地,在框1406中,如果所述位错误率低于所述阈值,则在框1410中,所述后数据检索硬件模块可以纠正所述数据中的错误。在框1412中,所述后数据检索硬件模块可以进行解码。如果在框1414中所述后数据检索硬件模块能够成功地解码所述数据,则在框1416中,所述后数据检索硬件模块可以将经解码的数据发送至缓冲池,以便在其被发送至主机之前暂时存储它。可替代地,如果在框1414中所述后数据检索硬件模块不能成功地解码所述数据,则在框1418中,所述后数据检索硬件模块可以将所述数据发送至所述固件模块来将所述数据解码。
上述具体实施方式旨在被理解为所述实施例可以采用的所选择的形式的展示,而不旨在限制以下权利要求。而且,以下权利要求中的一些可能叙述了:部件可操作来进行某个功能或被配置成用于某个任务。应注意的是,这些不是约束性的限制。还应注意的是,在权利要求中叙述的动作可以按任何顺序、不一定按叙述它们的顺序来进行。此外,可以单独地或彼此组合地使用在此描述的任何优选实施例的任何方面。总的来说,虽然关于本发明的某些实施例相当详细地描述了本发明,但其他版本是可能的。因此,所附权利要求书的精神和范围不局限于对在此包含的实施例的说明。
Claims (24)
1.一种存储模块,包括:
至少一个存储器;以及
控制器,所述控制器与所述至少一个存储器通信,其中,所述控制器包括:
硬件路径,所述硬件路径包括被配置成用于进行与执行主机读取请求相关联的多个进程的多个硬件模块;以及
固件模块,所述固件模块包括:
固件,所述固件存储在所述至少一个存储器中;以及
处理器,所述处理器被配置成用于执行所述固件以便进行与执行主机读取请求相关联的所述多个进程中的至少一些;以及
前端模块,所述前端模块被配置成用于:
接收主机命令;
响应于接收到所述主机命令,判定是否开始沿着所述硬件路径或使用所述固件模块执行所述主机命令。
2.如权利要求1所述的存储模块,其中,所述前端模块被配置成用于响应于识别出所述主机命令是用于读取被存储在所述至少一个存储器中的数据的主机读取请求而确定开始沿着所述硬件路径执行所述主机命令。
3.如权利要求2所述的存储模块,其中,所述前端模块进一步被配置成用于在所述数据的大小没有超过阈值量时开始沿着所述硬件路径执行所述主机读取请求。
4.如权利要求3所述的存储模块,其中,所述阈值量与可通过生成单个数据检索命令集而检索的最大数据量相对应。
5.如权利要求2所述的存储模块,其中,所述多个硬件模块包括地址转换模块,其中,所述前端模块进一步被配置成用于:
识别与所述主机读取请求相关联的逻辑地址信息;并且
当所述逻辑地址信息包括没有超过阈值数量的数量的逻辑组号时,将所述逻辑地址信息发送至所述地址转换硬件模块以便识别被映射至所述逻辑地址信息的物理地址。
6.如权利要求5所述的存储模块,其中,所述阈值数量是一。
7.如权利要求5所述的存储模块,其中,所述地址转换硬件模块被配置成用于查询至少一个地址数据结构,以便识别被映射至所述逻辑地址信息的所述物理地址。
8.如权利要求7所述的存储模块,其中,所述至少一个地址数据结构包括次要地址数据结构和主要地址数据结构中的至少一者。
9.如权利要求7所述的存储模块,其中,所述地址转换硬件模块被配置成用于仅用与所述主机读取请求相关联的单个逻辑组号来查询所述至少一个地址数据结构。
10.如权利要求7所述的存储模块,其中,所述物理地址包括第一物理地址,其中,所述至少一个地址数据结构包括至少一个第一地址数据结构,
其中,所述前端模块进一步被配置成用于将所述逻辑地址信息发送至所述固件模块,并且
其中,所述固件模块被配置成用于查询至少一个第二地址数据结构,以便识别被映射至所述逻辑地址信息的第二物理地址。
11.如权利要求10所述的存储模块,其中,所述多个硬件模块进一步包括被配置成用于检索所述数据的数据检索硬件模块,
其中,所述地址转换硬件模块被配置成用于将所述第一物理地址发送至所述数据检索硬件模块,以便检索所述数据的被存储在所述第一物理地址的第一版本;
其中,所述固件模块进一步被配置成用于:
当对所述至少一个第二地址数据结构的所述查询没有返回所述第二物理地址时,准许所述数据检索硬件模块检索所述数据的所述第一版本;并且
当对所述至少一个第二地址数据结构的所述查询返回了所述第二物理地址时,判定是否指示所述数据检索硬件模块检索所述数据的被存储在所述第二物理地址的第二版本、或者禁用所述数据检索硬件模块并检索所述数据的所述第二版本。
12.如权利要求11所述的存储模块,其中,所述固件模块被配置成用于:当对所述数据的检索要求发出用于检索所述数据的所述第二版本的单个数据检索命令集时,指示所述数据检索硬件模块检索所述数据的所述第二版本。
13.如权利要求1所述的存储模块,其中,所述多个硬件模块包括后数据检索硬件模块,所述后数据检索硬件模块被配置成用于:
初始判定从所述至少一个存储器接收的数据是否具有高于阈值水平的位错误率;并且
当所述位错误率高于所述阈值水平时,将所述数据发送至所述固件模块以进行错误恢复。
14.如权利要求1所述的存储模块,其中,所述前端模块是所述硬件路径中的所述多个硬件模块之一。
15.如权利要求1所述的存储模块,其中,所述至少一个存储器中的一个或多个包括三维存储器。
16.如权利要求1所述的存储模块,其中,所述控制器与所述至少一个存储器的存储器元件位于相同的基板上。
17.一种在包括至少一个存储器的存储模块中执行主机读取请求的方法,所述方法包括:
在所述存储模块的控制器中:
接收用于读取被存储在所述存储模块中的数据的所述主机读取请求;
将所述主机读取请求发送至硬件路径,所述硬件路径包括被配置成用于进行与执行所述主机读取请求相关联的至少一个进程的至少一个硬件模块;以及
当所述至少一个硬件模块中的硬件模块不能成功进行所述至少一个进程中的进程时,用固件模块来进行所述进程。
18.如权利要求17所述的方法,进一步包括:
当所述数据的大小超过了阈值时,用所述至少一个硬件模块的前端模块将所述主机读取请求发送至所述固件模块。
19.如权利要求17所述的方法,进一步包括:
用所述至少一个硬件模块中的地址转换硬件模块查询主要地址数据结构或第一次要地址数据结构中的至少一者;
用所述固件模块查询第二次要地址数据结构;以及
向所述控制器传送所述数据的被存储在通过由所述地址转换硬件模块进行的查询所确定的第一物理地址的第一版本、或者所述数据的被存储在通过由所述固件模块进行的查询所确定的第二物理地址的第二版本。
20.如权利要求19所述的方法,进一步包括:
当所述地址转换模块不能确定所述物理地址时,用所述地址转换硬件模块向所述固件模块发送通知。
21.如权利要求17所述的方法,进一步包括:
用所述至少一个硬件模块中的数据检索硬件模块从地址转换硬件模块接收物理地址;以及
响应于来自所述固件模块的通知,用所述数据检索硬件模块判定从所述地址转换硬件模块接收的所述物理地址是否与被所述主机命令请求读取的数据的最新版本相关联。
22.一种存储模块,包括:
至少一个存储器;以及
控制器,所述控制器包括被配置成用于进行与执行主机请求相关联的多个进程的多个主机请求模块,其中,所述多个主机请求模块包括:
第一主机请求模块,所述第一主机请求模块包括:
第一硬件模块,所述第一硬件模块被配置成用于进行与执行所述主机请求相关联的第一进程;以及
第一固件模块,所述第一固件模块包括存储在所述至少一个存储器中的第一固件、以及被配置成用于执行所述第一固件以便执行所述第一进程的第一处理器;以及
第二主机请求模块,所述第二主机请求模块包括:
第二硬件模块,所述第二硬件模块被配置成用于进行与执行所述主机请求相关联的第二进程;以及
第二固件模块,所述第二固件模块包括存储在所述至少一个存储器中的第二固件、以及被配置成用于执行所述第二固件以便执行所述第二进程的第二处理器。
23.如权利要求22所述的存储模块,其中,所述主机请求包括主机读取请求。
24.如权利要求22所述的存储模块,其中,所述第一主机请求模块被配置成用于确定在所述主机请求中识别的逻辑地址信息,并且所述第二主机请求模块被配置成用于基于在所述主机请求中识别的所述逻辑地址信息而确定物理地址。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/506,067 US9626286B2 (en) | 2014-10-03 | 2014-10-03 | Hardware and firmware paths for performing memory read processes |
US14/506,067 | 2014-10-03 | ||
PCT/US2015/051870 WO2016053736A1 (en) | 2014-10-03 | 2015-09-24 | Hardware automation for memory management |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106796490A true CN106796490A (zh) | 2017-05-31 |
CN106796490B CN106796490B (zh) | 2020-05-26 |
Family
ID=54289098
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580047323.9A Active CN106796490B (zh) | 2014-10-03 | 2015-09-24 | 用于存储器管理的硬件自动化 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9626286B2 (zh) |
CN (1) | CN106796490B (zh) |
DE (1) | DE112015004536T5 (zh) |
WO (1) | WO2016053736A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110007947A (zh) * | 2018-01-05 | 2019-07-12 | 意法半导体股份有限公司 | 用于差分存储器的实时更新方法、差分存储器和电子系统 |
CN113031863A (zh) * | 2021-03-19 | 2021-06-25 | 深圳忆联信息系统有限公司 | Ssd命令相关性管理方法、装置、计算机设备及存储介质 |
Families Citing this family (83)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105446653B (zh) | 2014-08-27 | 2018-12-14 | 阿里巴巴集团控股有限公司 | 一种数据合并方法和设备 |
US10203893B2 (en) | 2015-10-22 | 2019-02-12 | American Megatrends, Inc. | Memory channel storage device detection |
US10558468B2 (en) | 2015-10-22 | 2020-02-11 | American Megatrends International, Llc | Memory channel storage device initialization |
TWI579696B (zh) * | 2015-11-06 | 2017-04-21 | 群聯電子股份有限公司 | 資料重建方法與系統及其記憶體控制電路單元 |
US10169144B2 (en) | 2016-01-15 | 2019-01-01 | Micron Technology, Inc. | Non-volatile memory including selective error correction |
KR20180049338A (ko) * | 2016-10-31 | 2018-05-11 | 삼성전자주식회사 | 저장 장치 및 그것의 동작 방법 |
US10359954B2 (en) * | 2017-05-31 | 2019-07-23 | Alibaba Group Holding Limited | Method and system for implementing byte-alterable write cache |
US10884926B2 (en) | 2017-06-16 | 2021-01-05 | Alibaba Group Holding Limited | Method and system for distributed storage using client-side global persistent cache |
US10303241B2 (en) | 2017-06-19 | 2019-05-28 | Alibaba Group Holding Limited | System and method for fine-grained power control management in a high capacity computer cluster |
US10678443B2 (en) | 2017-07-06 | 2020-06-09 | Alibaba Group Holding Limited | Method and system for high-density converged storage via memory bus |
US10564856B2 (en) | 2017-07-06 | 2020-02-18 | Alibaba Group Holding Limited | Method and system for mitigating write amplification in a phase change memory-based storage device |
US10303601B2 (en) | 2017-08-11 | 2019-05-28 | Alibaba Group Holding Limited | Method and system for rearranging a write operation in a shingled magnetic recording device |
US10423508B2 (en) | 2017-08-11 | 2019-09-24 | Alibaba Group Holding Limited | Method and system for a high-priority read based on an in-place suspend/resume write |
US10496829B2 (en) | 2017-09-15 | 2019-12-03 | Alibaba Group Holding Limited | Method and system for data destruction in a phase change memory-based storage device |
US10642522B2 (en) | 2017-09-15 | 2020-05-05 | Alibaba Group Holding Limited | Method and system for in-line deduplication in a storage drive based on a non-collision hash |
US10789011B2 (en) | 2017-09-27 | 2020-09-29 | Alibaba Group Holding Limited | Performance enhancement of a storage device using an integrated controller-buffer |
US10503409B2 (en) | 2017-09-27 | 2019-12-10 | Alibaba Group Holding Limited | Low-latency lightweight distributed storage system |
US10860334B2 (en) | 2017-10-25 | 2020-12-08 | Alibaba Group Holding Limited | System and method for centralized boot storage in an access switch shared by multiple servers |
US10445190B2 (en) | 2017-11-08 | 2019-10-15 | Alibaba Group Holding Limited | Method and system for enhancing backup efficiency by bypassing encoding and decoding |
US10877898B2 (en) | 2017-11-16 | 2020-12-29 | Alibaba Group Holding Limited | Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements |
US10891239B2 (en) | 2018-02-07 | 2021-01-12 | Alibaba Group Holding Limited | Method and system for operating NAND flash physical space to extend memory capacity |
US10496548B2 (en) | 2018-02-07 | 2019-12-03 | Alibaba Group Holding Limited | Method and system for user-space storage I/O stack with user-space flash translation layer |
US10831404B2 (en) | 2018-02-08 | 2020-11-10 | Alibaba Group Holding Limited | Method and system for facilitating high-capacity shared memory using DIMM from retired servers |
US10402112B1 (en) | 2018-02-14 | 2019-09-03 | Alibaba Group Holding Limited | Method and system for chunk-wide data organization and placement with real-time calculation |
US11132044B2 (en) * | 2018-05-08 | 2021-09-28 | Micron Technology, Inc. | Dynamic P2L asynchronous power loss mitigation |
WO2019222958A1 (en) | 2018-05-24 | 2019-11-28 | Alibaba Group Holding Limited | System and method for flash storage management using multiple open page stripes |
CN111902804B (zh) | 2018-06-25 | 2024-03-01 | 阿里巴巴集团控股有限公司 | 用于管理存储设备的资源并量化i/o请求成本的系统和方法 |
US10921992B2 (en) | 2018-06-25 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency |
US10871921B2 (en) | 2018-07-30 | 2020-12-22 | Alibaba Group Holding Limited | Method and system for facilitating atomicity assurance on metadata and data bundled storage |
US10747673B2 (en) | 2018-08-02 | 2020-08-18 | Alibaba Group Holding Limited | System and method for facilitating cluster-level cache and memory space |
US10996886B2 (en) | 2018-08-02 | 2021-05-04 | Alibaba Group Holding Limited | Method and system for facilitating atomicity and latency assurance on variable sized I/O |
US10635345B2 (en) * | 2018-08-31 | 2020-04-28 | Micron Technology, Inc. | Live firmware activation in a memory system |
US11327929B2 (en) | 2018-09-17 | 2022-05-10 | Alibaba Group Holding Limited | Method and system for reduced data movement compression using in-storage computing and a customized file system |
US10852948B2 (en) | 2018-10-19 | 2020-12-01 | Alibaba Group Holding | System and method for data organization in shingled magnetic recording drive |
US10795586B2 (en) | 2018-11-19 | 2020-10-06 | Alibaba Group Holding Limited | System and method for optimization of global data placement to mitigate wear-out of write cache and NAND flash |
US10769018B2 (en) | 2018-12-04 | 2020-09-08 | Alibaba Group Holding Limited | System and method for handling uncorrectable data errors in high-capacity storage |
US10977122B2 (en) | 2018-12-31 | 2021-04-13 | Alibaba Group Holding Limited | System and method for facilitating differentiated error correction in high-density flash devices |
US10884654B2 (en) | 2018-12-31 | 2021-01-05 | Alibaba Group Holding Limited | System and method for quality of service assurance of multi-stream scenarios in a hard disk drive |
US11061735B2 (en) | 2019-01-02 | 2021-07-13 | Alibaba Group Holding Limited | System and method for offloading computation to storage nodes in distributed system |
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 |
US11200337B2 (en) | 2019-02-11 | 2021-12-14 | Alibaba Group Holding Limited | System and method for user data isolation |
US11956203B2 (en) * | 2019-04-04 | 2024-04-09 | Telefonaktiebolaget Lm Ericsson (Publ) | Service handling in software defined networking based container orchestration systems |
US10922234B2 (en) | 2019-04-11 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive |
US10908960B2 (en) | 2019-04-16 | 2021-02-02 | Alibaba Group Holding Limited | Resource allocation based on comprehensive I/O monitoring in a distributed storage system |
US11169873B2 (en) | 2019-05-21 | 2021-11-09 | Alibaba Group Holding Limited | Method and system for extending lifespan and enhancing throughput in a high-density solid state drive |
CN112099985B (zh) | 2019-06-17 | 2023-09-12 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
CN112100087B (zh) * | 2019-06-17 | 2024-04-02 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
CN112130750B (zh) | 2019-06-25 | 2023-11-07 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
CN112130749B (zh) | 2019-06-25 | 2023-12-22 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
US10860223B1 (en) | 2019-07-18 | 2020-12-08 | Alibaba Group Holding Limited | Method and system for enhancing a distributed storage system by decoupling computation and network tasks |
US11126561B2 (en) | 2019-10-01 | 2021-09-21 | Alibaba Group Holding Limited | Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive |
US11042307B1 (en) | 2020-01-13 | 2021-06-22 | Alibaba Group Holding Limited | System and method for facilitating improved utilization of NAND flash based on page-wise operation |
US11449455B2 (en) | 2020-01-15 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility |
US10923156B1 (en) | 2020-02-19 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for facilitating low-cost high-throughput storage for accessing large-size I/O blocks in a hard disk drive |
US10872622B1 (en) | 2020-02-19 | 2020-12-22 | Alibaba Group Holding Limited | Method and system for deploying mixed storage products on a uniform storage infrastructure |
US11150986B2 (en) | 2020-02-26 | 2021-10-19 | Alibaba Group Holding Limited | Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction |
US12009034B2 (en) * | 2020-03-02 | 2024-06-11 | Micron Technology, Inc. | Classification of error rate of data retrieved from memory cells |
US11144250B2 (en) | 2020-03-13 | 2021-10-12 | Alibaba Group Holding Limited | Method and system for facilitating a persistent memory-centric system |
US11200114B2 (en) | 2020-03-17 | 2021-12-14 | Alibaba Group Holding Limited | System and method for facilitating elastic error correction code in memory |
US11385833B2 (en) | 2020-04-20 | 2022-07-12 | Alibaba Group Holding Limited | Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources |
US11257546B2 (en) | 2020-05-07 | 2022-02-22 | Micron Technology, Inc. | Reading of soft bits and hard bits from memory cells |
US11281575B2 (en) | 2020-05-11 | 2022-03-22 | Alibaba Group Holding Limited | Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks |
US11461262B2 (en) | 2020-05-13 | 2022-10-04 | Alibaba Group Holding Limited | Method and system for facilitating a converged computation and storage node in a distributed storage system |
US11494115B2 (en) | 2020-05-13 | 2022-11-08 | Alibaba Group Holding Limited | System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC) |
US11218165B2 (en) | 2020-05-15 | 2022-01-04 | Alibaba Group Holding Limited | Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM |
US11507499B2 (en) | 2020-05-19 | 2022-11-22 | Alibaba Group Holding Limited | System and method for facilitating mitigation of read/write amplification in data compression |
US11556277B2 (en) | 2020-05-19 | 2023-01-17 | Alibaba Group Holding Limited | System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification |
US11263132B2 (en) | 2020-06-11 | 2022-03-01 | Alibaba Group Holding Limited | Method and system for facilitating log-structure data organization |
US11354200B2 (en) | 2020-06-17 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating data recovery and version rollback in a storage device |
US11422931B2 (en) | 2020-06-17 | 2022-08-23 | Alibaba Group Holding Limited | Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization |
US11354233B2 (en) | 2020-07-27 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating fast crash recovery in a storage device |
US11372774B2 (en) | 2020-08-24 | 2022-06-28 | Alibaba Group Holding Limited | Method and system for a solid state drive with on-chip memory integration |
US11487465B2 (en) | 2020-12-11 | 2022-11-01 | Alibaba Group Holding Limited | Method and system for a local storage engine collaborating with a solid state drive controller |
US11783893B2 (en) * | 2020-12-23 | 2023-10-10 | Intel Corporation | Utilizing NAND buffer for DRAM-less multilevel cell programming |
US11734115B2 (en) | 2020-12-28 | 2023-08-22 | Alibaba Group Holding Limited | Method and system for facilitating write latency reduction in a queue depth of one scenario |
US11416365B2 (en) | 2020-12-30 | 2022-08-16 | Alibaba Group Holding Limited | Method and system for open NAND block detection and correction in an open-channel SSD |
US11726699B2 (en) | 2021-03-30 | 2023-08-15 | Alibaba Singapore Holding Private Limited | Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification |
US11461173B1 (en) | 2021-04-21 | 2022-10-04 | Alibaba Singapore Holding Private Limited | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement |
US11476874B1 (en) | 2021-05-14 | 2022-10-18 | Alibaba Singapore Holding Private Limited | Method and system for facilitating a storage server with hybrid memory for journaling and data storage |
US12131058B2 (en) | 2022-04-22 | 2024-10-29 | SanDisk Technologies, Inc. | Configurable arithmetic HW accelerator |
US11853795B1 (en) * | 2022-07-26 | 2023-12-26 | Beijing Tenafe Electronic Technology Co., Ltd. | Scoreboard for tracking completion of tasks |
US11966582B2 (en) | 2022-08-10 | 2024-04-23 | Western Digital Technologies, Inc. | Data storage device that detects and releases bottlenecks |
US12039173B2 (en) | 2022-10-03 | 2024-07-16 | Western Digital Technologies, Inc. | Data storage device that detects and releases input queue bottlenecks |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030196059A1 (en) * | 1999-09-23 | 2003-10-16 | Rambus Inc. | Pipelined memory controller and method of controlling access to memory devices in a memory system |
US20070033374A1 (en) * | 2005-08-03 | 2007-02-08 | Sinclair Alan W | Reprogrammable Non-Volatile Memory Systems With Indexing of Directly Stored Data Files |
US20070283125A1 (en) * | 2006-06-05 | 2007-12-06 | Sun Microsystems, Inc. | Dynamic selection of memory virtualization techniques |
US20120284460A1 (en) * | 2011-05-02 | 2012-11-08 | Western Digital Technologies, Inc. | High performance path for command processing |
CN103150275A (zh) * | 2007-12-27 | 2013-06-12 | 桑迪士克企业知识产权有限责任公司 | 包括交叉切换器的用于闪存的存储控制器 |
CN103282887A (zh) * | 2010-12-30 | 2013-09-04 | 桑迪士克科技股份有限公司 | 用于进行后台操作的控制器和方法 |
CN103477330A (zh) * | 2011-04-19 | 2013-12-25 | 美光科技公司 | 存储器系统中的通道深度调整 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5123101A (en) | 1986-11-12 | 1992-06-16 | Xerox Corporation | Multiple address space mapping technique for shared memory wherein a processor operates a fault handling routine upon a translator miss |
US5537555A (en) | 1993-03-22 | 1996-07-16 | Compaq Computer Corporation | Fully pipelined and highly concurrent memory controller |
US6272609B1 (en) | 1998-07-31 | 2001-08-07 | Micron Electronics, Inc. | Pipelined memory controller |
US7624239B2 (en) | 2005-11-14 | 2009-11-24 | Sandisk Corporation | Methods for the management of erase operations in non-volatile memories |
US8094500B2 (en) | 2009-01-05 | 2012-01-10 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partitioning |
US9424930B2 (en) * | 2010-09-15 | 2016-08-23 | Sandisk Technologies Llc | Apparatus, system, and method for non-volatile storage element programming |
US9392295B2 (en) * | 2011-07-20 | 2016-07-12 | Broadcom Corporation | Adaptable media processing architectures |
US9058284B1 (en) * | 2012-03-16 | 2015-06-16 | Applied Micro Circuits Corporation | Method and apparatus for performing table lookup |
KR20140073955A (ko) * | 2012-12-07 | 2014-06-17 | 삼성전자주식회사 | 메모리 시스템 및 그 구동 방법 |
JP2016506585A (ja) * | 2013-01-08 | 2016-03-03 | ヴァイオリン メモリー インコーポレイテッド | データストレージのための方法及びシステム |
US9215472B2 (en) * | 2013-09-27 | 2015-12-15 | Apple Inc. | Parallel hardware and software block processing pipelines |
-
2014
- 2014-10-03 US US14/506,067 patent/US9626286B2/en active Active
-
2015
- 2015-09-24 WO PCT/US2015/051870 patent/WO2016053736A1/en active Application Filing
- 2015-09-24 DE DE112015004536.8T patent/DE112015004536T5/de not_active Withdrawn
- 2015-09-24 CN CN201580047323.9A patent/CN106796490B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030196059A1 (en) * | 1999-09-23 | 2003-10-16 | Rambus Inc. | Pipelined memory controller and method of controlling access to memory devices in a memory system |
US20070033374A1 (en) * | 2005-08-03 | 2007-02-08 | Sinclair Alan W | Reprogrammable Non-Volatile Memory Systems With Indexing of Directly Stored Data Files |
US20070283125A1 (en) * | 2006-06-05 | 2007-12-06 | Sun Microsystems, Inc. | Dynamic selection of memory virtualization techniques |
CN103150275A (zh) * | 2007-12-27 | 2013-06-12 | 桑迪士克企业知识产权有限责任公司 | 包括交叉切换器的用于闪存的存储控制器 |
CN103282887A (zh) * | 2010-12-30 | 2013-09-04 | 桑迪士克科技股份有限公司 | 用于进行后台操作的控制器和方法 |
CN103477330A (zh) * | 2011-04-19 | 2013-12-25 | 美光科技公司 | 存储器系统中的通道深度调整 |
US20120284460A1 (en) * | 2011-05-02 | 2012-11-08 | Western Digital Technologies, Inc. | High performance path for command processing |
Non-Patent Citations (2)
Title |
---|
ROBERT E.GALBRAITH等: "Highly automated hardware and firmware RAID SoC design optimized for memory class storage devices", 《IEEE XPLORE》 * |
马汝亮: "高性能处理器存取关键技术的设计与优化", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110007947A (zh) * | 2018-01-05 | 2019-07-12 | 意法半导体股份有限公司 | 用于差分存储器的实时更新方法、差分存储器和电子系统 |
CN110007947B (zh) * | 2018-01-05 | 2023-04-07 | 意法半导体股份有限公司 | 用于差分存储器的实时更新方法、差分存储器和电子系统 |
CN113031863A (zh) * | 2021-03-19 | 2021-06-25 | 深圳忆联信息系统有限公司 | Ssd命令相关性管理方法、装置、计算机设备及存储介质 |
CN113031863B (zh) * | 2021-03-19 | 2023-08-29 | 深圳忆联信息系统有限公司 | Ssd命令相关性管理方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US9626286B2 (en) | 2017-04-18 |
US20160098344A1 (en) | 2016-04-07 |
WO2016053736A1 (en) | 2016-04-07 |
DE112015004536T5 (de) | 2017-06-14 |
CN106796490B (zh) | 2020-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106796490A (zh) | 用于存储器管理的硬件自动化 | |
CN1930635B (zh) | 对多个区块进行适应性确定群组以成为多个多区块单元 | |
US9778863B2 (en) | System and method for folding partial blocks into multi-level cell memory blocks | |
KR100886520B1 (ko) | 블록 내에서 페이지들을 그룹화하는 방법 및 장치 | |
KR100977899B1 (ko) | 비휘발성 메모리 시스템에서 아웃-오브-시퀀스 기록 프로세스를 효과적으로 수행하기 위한 방법 및 장치 | |
CN108694128A (zh) | 存储器系统中的使用单次地址更新的折叠操作 | |
US9436615B2 (en) | Optimistic data read | |
US7627712B2 (en) | Method and system for managing multi-plane memory devices | |
CN109697026A (zh) | 包括主机设备和用于执行清除操作的存储设备的存储系统 | |
US9478315B2 (en) | Bit error rate mapping in a memory system | |
CN109791519A (zh) | 具有集成计算引擎的非易失性存储系统和本地快速存储器的优化用途 | |
CN109840215A (zh) | 未对齐写入的处理 | |
CN106448737A (zh) | 读取闪存数据的方法、装置以及固态驱动器 | |
US20100011154A1 (en) | Data accessing method for flash memory and storage system and controller using the same | |
CN107077427A (zh) | 跨电源周期来跟踪对写入命令和解除映射命令的混合 | |
US9875039B2 (en) | Method and apparatus for wear-leveling non-volatile memory | |
US10754555B2 (en) | Low overhead mapping for highly sequential data | |
WO2005083573A1 (ja) | 半導体メモリ装置 | |
CN109086219A (zh) | 去分配命令处理方法及其存储设备 | |
US11726921B2 (en) | Combined page footer for parallel metadata storage | |
US10445372B2 (en) | Method and device to access auxiliary mapping data for a data structure | |
CN115617843A (zh) | 对数据库存储系统的加速数据搜索的系统和方法 | |
US11573893B2 (en) | Storage system and method for validation of hints prior to garbage collection | |
CN108984111A (zh) | 具有可重写原地存储器的数据存储设备 | |
US11651027B2 (en) | Data storage device and method for object detection and tagging quality of service based on storage workload |
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 |