CN113849424A - 依序编程的存储器子系统中的直接高速缓存命中和传递 - Google Patents

依序编程的存储器子系统中的直接高速缓存命中和传递 Download PDF

Info

Publication number
CN113849424A
CN113849424A CN202110718597.3A CN202110718597A CN113849424A CN 113849424 A CN113849424 A CN 113849424A CN 202110718597 A CN202110718597 A CN 202110718597A CN 113849424 A CN113849424 A CN 113849424A
Authority
CN
China
Prior art keywords
value
command
ltu
data
lba
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110718597.3A
Other languages
English (en)
Inventor
C·M·古达
J·A·拉姆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN113849424A publication Critical patent/CN113849424A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

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)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请涉及依序编程的存储器子系统中的直接高速缓存命中和传递。系统包含缓冲器和处理装置,所述处理装置接收针对存储器装置的具有逻辑块地址LBA值的读取请求、创建包含所述LBA值且映射到所述存储器装置的第一物理地址的逻辑传递单元LTU值,并生成指示所述处理装置从所述存储器装置检索数据并将所述数据存储在缓冲器中的命令标记。所述命令标记包含与所述第一物理地址相关联的第一命令标记和与依序在所述第一物理地址之后的第二物理地址相关联的第二命令标记。所述处理器进一步针对所述缓冲器在读取高速缓存表中创建条目。所述条目可包含设置为第一LBA值的起始LBA值和对应于数据量的读取偏移值。

Description

依序编程的存储器子系统中的直接高速缓存命中和传递
技术领域
本公开的实施例总体上涉及存储器子系统,且更确切地说,涉及依序编程的存储器子系统中的直接高速缓存命中和传递。
背景技术
存储器子系统可包含一或多个存储数据的存储器装置。存储器装置可以是例如非易失性存储器装置和易失性存储器装置。大体来说,主机系统可利用存储器子系统,将数据存储在存储器装置处并从存储器装置检索数据。
发明内容
一方面,本申请提供一种系统,其包括:存储器装置;易失性存储器,其包括缓冲器和读取高速缓存表;以及处理装置,其耦合到所述存储器装置和所述易失性存储器,其中所述处理装置将:存取具有第一命令标记的读取命令,所述第一命令标记包括第一逻辑传递单元(LTU)值和所述缓冲器中的第一缓冲器的第一缓冲器地址,所述第一LTU值从多个顺序逻辑块地址(LBA)值的区域映射到所述存储器装置的多个顺序物理地址中的第一物理地址,其中第一数据存储在所述第一物理地址处,并且其中所述第一LTU值含有所述多个顺序LBA值中的第一LBA值;生成指示所述处理装置的命令执行处理器从所述存储器装置检索第二数据并将所述第二数据存储在一组所述缓冲器中的一组命令标记,其中所述一组命令标记包括与依序在所述第一物理地址之后的第二物理地址相关联的至少第二命令标记;以及针对所述一组所述缓冲器在所述读取高速缓存表中创建条目,其中所述条目包括设置为所述第一LBA值的起始LBA值和对应于所述第一数据和所述第二数据的量的读取偏移值。
另一方面,本申请提供一种方法,其包括:通过存储器子系统控制器的处理装置接收针对存储器装置的包括逻辑块地址(LBA)空间的第一LBA值的读取请求,其中所述LBA值属于映射到多个顺序物理地址的多个顺序LBA值的区域;通过所述处理装置创建包含所述第一LBA值的第一逻辑传递单元(LTU)值,所述第一LTU值映射到所述存储器装置的第一物理地址;通过所述处理装置分配易失性存储器中的一组缓冲器,其中所述一组缓冲器的容量匹配存储在所述第一物理地址和后续物理地址处的数据量,所述后续物理地址在起始于所述第一物理地址的读取偏移值内依序编号;通过所述处理装置生成指示所述处理装置的命令执行处理器从所述存储器装置检索所述数据并将所述数据存储在所述一组缓冲器中的一组命令标记,其中所述一组命令标记包括与所述第一物理地址相关联的第一命令标记和与依序在所述第一物理地址之后的第二物理地址相关联的第二命令标记;以及通过所述处理装置针对所述一组缓冲器在读取高速缓存表中创建条目,其中所述条目包括设置为所述第一LBA值的起始LBA值和对应于所述数据量的所述读取偏移值。
另一方面,本申请提供一种存储指令的非暂时性计算机可读媒体,所述指令在由存储器子系统控制器的处理装置执行时使所述处理装置执行多个操作,包括:接收针对存储器装置的包括逻辑块地址(LBA)空间的第一LBA值的读取请求,其中所述LBA值属于映射到多个顺序物理地址的多个顺序LBA值的区域;创建包含所述第一LBA的第一逻辑传递单元(LTU)值,所述第一LTU值映射到所述存储器装置的第一物理地址;分配易失性存储器中的一组缓冲器,其中所述一组缓冲器的容量匹配存储在所述第一物理地址和后续物理地址处的数据量,所述后续物理地址在起始于所述第一物理地址的读取偏移值内依序编号;生成指示所述处理装置的命令执行处理器从所述存储器装置检索所述数据并将所述数据存储在所述一组缓冲器中的一组命令标记,其中所述一组命令标记包括与所述第一物理地址相关联的第一命令标记和与依序在所述第一物理地址之后的第二物理地址相关联的第二命令标记;以及针对所述一组缓冲器在读取高速缓存表中创建条目,其中所述条目包括设置为所述第一LBA值的起始LBA值和对应于所述数据量的所述读取偏移值。
附图说明
根据下文提供的详细描述和本公开的各种实施例的附图将更加全面地理解本公开。
图1A示出根据实施例的包含存储器子系统的实例计算系统。
图1B示出根据实施例的图1A的存储器子系统的额外细节。
图2是根据各种实施例的示出配置成支持基于区域的映射的数据结构的实例的框图。
图3是根据实施例的图1A-1B的存储器子系统控制器的命令生成处理器、转译处理器和命令执行处理器的相互关系的框图。
图4是根据实施例的基于读取命令支持直接高速缓存命中的方法的流程图。
图5是根据实施例的支持直接高速缓存命中的方法的流程图。
图6A-6C是根据相关实施例的支持直接高速缓存命中和传递的方法的流程图。
图7是本公开的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
本公开的各方面涉及依序编程的存储器子系统中的直接高速缓存命中和传递。存储器子系统可以是存储装置、存储器模块或存储装置和存储器模块的混合物。下面结合图1A描述存储装置和存储器模块的实例。大体来说,主机系统可利用包含存储数据的一或多个存储器组件(例如,存储器装置)的存储器子系统。主机系统可提供将存储在存储器子系统处的数据,并且可请求将从存储器子系统检索的数据。
存储器装置可以是非易失性存储器装置。非易失性存储器装置的一个实例是与非(NAND)存储器装置。下文结合图1A描述非易失性存储器装置的其它实例。非易失性存储器装置是一或多个裸片的封装。封装中的裸片可分配给一或多个信道用于与存储器子系统控制器通信。在下文中,存储器子系统控制器也称为“控制器”。每一裸片可由一或多个平面组成。平面可分组成逻辑单元(LUN)。对于一些类型的非易失性存储器装置(例如,NAND装置),每一平面由一组物理块组成。每一块由一组页组成。每一页由一组存储器单元(“单元”)组成。单元是存储信息的电子电路。在下文中,块是指存储器装置的用于存储数据的单元,并且可包含存储器单元群组、字线群组、字线或单独的存储器单元。
数据操作可由存储器子系统执行。数据操作可以是主机发起的操作。例如,主机系统可发起对存储器子系统的数据操作(例如,写入、读取、擦除等)。主机系统可向存储器子系统发送存取请求(例如,写入命令、读取命令),以便在存储器子系统处的存储器装置中存储数据以及从存储器子系统的存储器装置读取数据。
主机请求所指定的待读取或待写入数据在下文称为“主机数据”。主机请求可包含主机数据的逻辑地址信息(例如,逻辑块地址(LBA)、命名空间),它是与主机数据相关联的主机系统的位置。逻辑地址信息(例如,LBA、命名空间)可以是主机数据的元数据的部分。元数据还可包含错误处理数据(例如,ECC码字、奇偶检验码)、数据版本(例如,用于区分所写入的数据的年龄)、有效位图(其LBA值或逻辑传递单元含有有效数据)等等。为简单起见,如果下文提及“数据”,此类数据可被理解为至少指代主机数据,但是还可以指代例如媒体管理数据和/或系统数据的其它数据。
当执行数据操作(例如,写入、读取、擦除)时,存储器子系统可使用条带化方案来将各组数据处理为单元。LUN条带是在写入、读取或擦除数据时处理为一个单元的一系列平面。LUN条带中的每一平面可与LUN条带中的所有其它平面并行实施相同操作。块条带是LUN条带中的每一平面中的处理为单元的一系列块。块条带中的块在它们相应的平面中具有相同块识别符(例如,块编号)。块条带(下文还称为块集合)可以是跨不同裸片的平面排列的一组块,使得块出于数据存储的目的而被分组在一起。写入到块条带使得可以跨多个裸片同时并行地写入和读取更多主机数据。一或多个块集合中的多个块可被识别为数据群组。
主机文件系统可以按位置对主机数据进行分组,并将主机数据依序写入到存储器子系统的存储器装置。然后,文件系统可以将不同位置的主机数据作为并行顺序流写入存储器装置,每个流都有自己的位置,例如,不同的主机应用可以分别写入到自己的流的位置。“位置”可以指时间位置或空间位置。存储器子系统控制器(例如,处理装置)通常以主机数据的一部分(例如,4KB)随机地向媒体写入,然后使用元数据将LBA空间映射到存储器装置的物理地址空间。然而,当更大的主机数据群组(例如,100兆字节(MB)或更大)被写入并以数据位置分组时,“数据群组”可以作为更大的分块依序地写入跨多个裸片的一或多个块集合。为了简化这种数据群组的映射,区域的LBA值(例如,与数据群组相关联的逻辑地址空间)可以在LBA空间内依序排序,并且可以映射到物理地址空间内依序排序的物理地址。换句话说,数据群组可以与具有多个顺序LBA值的LBA空间区域相关联,这些LBA值依序地映射到多个顺序物理地址。一次可以写入(例如,编程)数据区域并相应地映射这些区域的存储器子系统在区域命名空间(ZNS)中操作,例如,其中逻辑地址区域被命名/识别为群组。有利地,将ZNS用于逻辑到物理(LTP)地址映射大大减少了跟踪LTP映射的元数据量。
在存储器子系统中,读取请求(或读取操作)通常一次向存储器子系统控制器的转译处理器(例如,将逻辑地址转译为物理地址)发出一个命令标记,从而进行以命令标记指定的粒度进行随机读取。命令标记,也被称为系统标记(例如,systag),包含逻辑传递单元(LTU)值和识别缓冲器(例如,易失性存储器中的槽或条目)的缓冲器地址,在所述缓冲器中与传递单元相对应的内容像在高速缓存中一样被存储。在一个实施例中对应于4千字节(KB)的数据部分的LTU值是可经由一组映射数据结构映射到物理地址的多个顺序LBA值的子集。因此,为了生成LTU值,控制器的命令生成处理器可以将读取请求的LBA值与相继于LBA值的额外LBA值(也可以在读取请求中接收)组合。根据LTU类型,每个LTU值都可以转译为逻辑块或逻辑页。例如,LTU可以对应于以4KB或8KB的数据增量增加的8KB、16KB、32KB或更多的数据。
因为通常每次针对一个命令标记执行读取请求,每一读取请求生成命令消息(例如,在一个实例中为信箱消息)进入控制器的命令生成处理器(不管读取是不是顺序的),并生成多个(例如,四个或更多个)数据结构查找用于将读取请求的LBA映射到存储器装置中的物理位置,如将详细解释。可在获取非易失性存储器命令后使用命令消息,其中命令生成处理器就命令接收通知转译处理器。这些数据结构(例如,表)可以存储在易失性存储器中。这种处理读取请求的方式因为增加时延而增加了开销并降低了总体性能,特别是在一些读取请求依序发出到(例如,ZNS的)依序写入的物理地址空间的条件下。因此,顺序写入的顺序数据布局不用于限制控制器(例如,控制器的转译处理器)必须执行以确定从中检索数据来实现读取请求的物理地址的查找次数。
本公开的方面通过以下解决了以上和其它缺陷:存储器子系统控制器的命令生成处理器(例如,处理装置)生成指示命令执行处理器读取依序写入到一组缓冲器中的数据(例如,顺序数据)的量的一组命令标记。对所述一组缓冲器的顺序数据读取的量可显著大于特定读取请求所请求的量。通过执行此顺序数据的读取前视,控制器的命令生成处理器可如同存取高速缓存一般存取顺序数据以实现后续读取请求,而不必执行依序编号的LTU值的地址转译。为了这样做,命令生成处理器可进一步创建和更新读取高速缓存表和读取索引表,以管理所述一组缓冲器作为高速缓存来实现这些后续读取请求的使用。因此,当接收到已知在初始读取请求的LBA值的读取偏移值内的读取请求时,确定在数据的读取偏移值内的偏移能够确定所请求数据在所述一组缓冲器内的位置。接着,控制器可响应于所述一组缓冲器处的高速缓存“命中”而将所请求数据传递到主机系统。
在各种实施例中,读取高速缓存表在每一条目中任选地存储读取请求中的LBA的区域的区域识别符、设置为第一LBA值(例如,在初始读取请求或读取命令中接收到)的起始LBA值,及读取偏移值。区域识别符是任选的,因为起始LBA值也识别所述区域。读取高速缓存表中的每一条目还可任选地存储结束LBA值,其识别物理地址空间内从起始LBA开始的读取偏移值的末尾。读取偏移值可以是将以前视方式读取到所述一组缓冲器中的数据量,其可包含对应于初始读取请求或命令的数据。因此,读取偏移值可显著大于映射到LTU的数据量,例如在128KB和2MB之间。在一个实例中,如果LTU值映射到16KB数据(例如,其为缓冲器分配单元偏移),那么读取偏移值内的1MB数据将包含对应于64个LTU值的64个数据分块。因此,1MB数据的读取前视可通过转译处理器保存额外的63组查找,用于确定额外63个读取请求的物理地址。这种时延减少是相当可观的,尤其是根据数千个读取请求推断的。
在各个实施例中,命令生成处理器可创建和管理缓冲器索引表以跟踪与所述一组命令标记中的每一命令标记相关联的LTU值。例如,缓冲器索引表可将LTU值映射到与每一命令标记中的LTU值相关联的缓冲器地址。因此,当接收到后续读取请求时,在(例如,通过相对于初始或第一LTU值的偏移值)确定新的LTU值之后,命令生成处理器可使用所述新的LTU值索引到缓冲器索引表中,从而确定对应的缓冲器地址。接着,命令生成处理器可从识别符缓冲器检索所请求数据,并将所请求数据传递到主机系统以实现后续读取请求。相比于转译处理器将每一LTU值转译为单独的物理地址并单独地以逻辑传递单元的粒度实现每一请求或命令,相对较小的读取高速缓存表和缓冲器索引表内的这种索引所耗处理功率和时延要少得多。
本公开的优点包含但不限于改进了读取性能,并且免去了中断写入操作以便服务极多读取请求(其出现频率高于写入操作)的昂贵成本,例如通过允许许多读取请求利用读取前视操作在缓冲器中命中来实现。此外,本公开阐释了执行直接高速缓存命中和数据传递的方式,以便降低来自主机系统的顺序读取请求的时延(即使那些读取请求与写入操作和/或对其它区域的读取请求穿插进行)。这些优点协同利用由支持ZNS的存储器装置执行的顺序写入。其它优点对于下文论述的存储器子系统内的存储器分配和错误优化领域的技术人员来说将是显而易见的。
图1A示出根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如易失性存储器(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130),或此类装置的组合。每一存储器装置130或140可以是一或多个存储器组件。
存储器子系统110可以是存储装置、存储器模块或存储装置和存储器模块的混合物。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器、安全数字(SD)卡和硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小外廓DIMM(SO-DIMM)和各种类型的非易失性双列直插式存储器模块(NVDIMM)。
计算系统100可为计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、交通工具(例如,飞机、无人机、火车、汽车或其它运输工具)、具有物联网(IoT)功能的装置、嵌入式计算机(例如,交通工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器和处理装置的此类计算装置。
计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1A示出耦合到一个存储器子系统110的主机系统120的一个实例。如本文中所使用,“耦合到”或“与……耦合”大体上是指组件或装置之间的连接,此连接可以是间接通信连接或直接通信连接(例如,不具有中间组件或装置),不管是有线还是无线,包含电气、光学、磁性等连接。
主机系统120可包含处理器芯片组和由处理器芯片组执行的软件堆栈。处理器芯片组可包含一或多个核心、一或多个高速缓存、存储器控制器(例如,NVDIMM控制器)和存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统120使用存储器子系统110,例如以便将数据写入到存储器子系统110和从存储器子系统110读取数据。
主机系统120可以经由可通过系统总线通信的物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行连接的SCSI(SAS)、双倍数据率(DDR)存储器总线、小型计算机系统接口(SCSI)、双列直插式存储器模块(DIMM)接口(例如,支持双倍数据速率(DDR)的DIMM套接接口)、开放NAND快闪接口(ONFI)、双倍数据速率(DDR)、低功率双倍数据速率(LPDDR)或任何其它接口。物理主机接口可用于在主机系统120和存储器子系统110之间传输数据。主机系统120可进一步利用NVM快速(NVMe)接口,在存储器子系统110通过PCIe接口与主机系统120耦合时存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110和主机系统120之间传递控制、地址、数据和其它信号的接口。作为实例,图1A示出存储器子系统110。一般来说,主机系统120可经由同一个通信连接、多个单独的通信连接和/或通信连接的组合存取多个存储器子系统。
存储器装置130、140可包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可以是但不限于随机存取存储器(RAM),例如动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)。
非易失性存储器装置(例如,存储器装置130)的一些实例包含“与非”(NAND)型快闪存储器和就地写入存储器,例如三维交叉点(“3D交叉点”)存储器。非易失性存储器交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的变化而执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可执行原位写入操作,其中非易失性存储器单元可以在其先前已进行擦除的情况下进行编程。NAND型快闪存储器包含例如二维NAND(2D NAND)和三维NAND(3D NAND)。
存储器装置130中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如单层级单元(SLC),可每单元存储一个位。其它类型的存储器单元,例如多层级单元(MLC)、三层级单元(TLC)和四层级单元(QLC),可每单元存储多个位。在一些实施例中,存储器装置130中的每一个可包含例如SLC、MLC、TLC、QLC或它们的任何组合的一或多个阵列。在一些实施例中,特定存储器装置可包含SLC部分,以及存储器单元的MLC部分、TLC部分或QLC部分。存储器装置130的存储器单元可以分组为页,页可以指用于存储数据的存储器装置的逻辑单元。在一些类型的存储器(例如,NAND)中,可以将页分组以形成块。
尽管描述了非易失性存储器组件,例如NAND型快闪存储器(例如,2D NAND、3DNAND)和3D交叉点非易失性存储器单元阵列,但是存储器装置130可以基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM)。
存储器子系统控制器115(或者为简单起见,称为控制器115)可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据和其它此类操作。存储器子系统控制器115可包含例如一或多个集成电路和/或离散组件、缓冲存储器或其组合的硬件。硬件可包含具有专用(即,硬译码)逻辑的数字电路系统以执行本文中所描述的操作。存储器子系统控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等),或其它合适的处理器。
存储器子系统控制器115可包含处理器117,其经配置以执行存储在本地存储器119中的指令。在所示的实例中,存储器子系统控制器115的本地存储器119包含嵌入式存储器,其经配置以存储用于执行控制存储器子系统110的操作的各种过程、操作、逻辑流和例程的指令,包含处置存储器子系统110与主机系统120之间的通信。
在一些实施例中,本地存储器119可包含存储存储器指针、所提取数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(ROM)。尽管图1A中的实例存储器子系统110示出为包含存储器子系统控制器115,但是在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,而是可以依赖于外部控制(例如,由外部主机或者由与存储器子系统分离的处理器或控制器提供)。
一般来说,存储器子系统控制器115可从主机系统120接收命令或操作,并且可将命令或操作转换成指令或适当的命令以实现期望的对存储器装置130的存取。存储器子系统控制器115可负责其它操作,例如耗损均衡操作、垃圾数据收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作及与存储器装置130相关联的逻辑块地址(例如,逻辑块地址(LBA)、命名空间)和物理地址(例如,物理块地址)之间的地址转换。存储器子系统控制器115可进一步包含主机接口电路系统,用于经由物理主机接口与主机系统120通信。主机接口电路系统可将从主机系统接收到的命令转换成存取存储器装置130的命令指令,并将与存储器装置130相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可包含未示出的额外电路系统或组件。在一些实施例中,存储器子系统110可包含可以从存储器子系统控制器115接收地址并将地址解码以存取存储器装置130的高速缓存或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器)。
在一些实施例中,存储器装置130包含结合存储器子系统控制器115用于对存储器装置130的一或多个存储器单元执行操作的本地媒体控制器135。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器装置130是受管理存储器装置,它是与本地控制器(例如,本地媒体控制器135)组合以用于相同存储器装置封装或存储器裸片内的存储器管理的原始存储器装置。受管理存储器装置的实例是受管理NAND(MNAND)装置。
在一些实施例中,控制器115包含错误校正码(ECC)编码器/解码器111。ECC编码器/解码器111可分别执行写入到存储器装置130的数据的ECC编码及从存储器装置130读取的数据的ECC解码。ECC解码可经执行以解码ECC码字,从而校正原始读取数据中的错误,并且在许多情况下,还报告原始读取数据中的位错误数目。
图1B示出根据实施例的图1A的存储器子系统110的额外细节。在实施例中,存储器子系统控制器115(例如,处理装置,为简单起见称为控制器115)包含一或多个寄存器112、包含缓冲器管理器113的命令生成处理器122、转译处理器123、命令执行处理器124和易失性存储器125。例如,处理器117(图1A)可包含命令生成处理器123、转译处理器123和命令执行处理器124。
在各种实施例中,易失性存储器125存储区域映射数据结构101、读取高速缓存表127和缓冲器索引表129,以及如图2中的实例所示的其它ZNS映射数据结构。在一个实施例中,区域映射数据结构101包含多个条目,使得每一条目具有块集合条目识别符,所述块集合条目识别符与块集合映射数据结构107内的条目相联系,块集合映射数据结构107内的条目又可与页映射数据结构的条目相联系,页映射数据结构的条目又可在存储器中定位页,如将参考图2详细解释。在一些实施例中,易失性存储器125包含紧耦合存储器(TCM)和静态随机存取存储器(SRAM)装置中的一个或两个。将读取高速缓存表127和缓冲器索引表129存储在TCM中可使下文论述的缓冲器管理尽可能地高效,但是它们还可存储在SRAM装置或其组合中。
存储器子系统110可进一步包含存储器装置140A,其可以是动态随机存取存储器(DRAM)装置或其它这类易失性存储器装置,并且通常用于存储较大的数据结构。这样一个数据结构可以是块集合映射数据结构107,它可将块集合识别符映射到物理地址空间中的各个数据块。存储器装置140A还可因为由多个处理器共享以便执行指令和存储数据而被称为共享易失性存储器。
在各种实施例中,存储器装置140A可进一步存储块集合映射数据结构107和缓冲器142,所述缓冲器借助实例示出为包含第一缓冲器142A、第二缓冲器142B、第三缓冲器142C等等到第N缓冲器142N。这些缓冲器142的任一群组都可被视为一组缓冲器。控制器115可分配缓冲器142(例如,通过缓冲器地址)来存储(例如,高速缓存)数据以便实现读取请求。例如,每一缓冲器可以是易失性存储器装置140A的寻址槽或条目。每一缓冲器可存储LTU映射到的数据页大小或数据量。
此外,如先前参考一或多个存储器装置130、140所论述,多个裸片(例如,裸片A和裸片B)的物理地址空间可以分层组织为平面、块和页。因此,例如,裸片A和裸片B中的每一个可包含平面A和平面B,且平面A和平面B中的每一个可包含块A和块B。块集合(或块条带)可定义为跨存储器装置的多个裸片的平面排列的块群组。如所示,块集合144经排列以包含裸片A的平面A的块A、裸片B的平面B的块A等等,例如还包含裸片C的平面C的块A以及其它裸片(若存在且在线)。
在各种实施例中,转译处理器123(和/或耦合到转译处理器123的控制器115的动态数据放置器)动态地确定在存储器装置130、140的单元或存储器组件(也称为“IC裸片”)中放置与逻辑地址相关联的数据的布局。布局指定用于在存储器子系统110中(例如,从主机系统120)接收到的命令的逻辑地址和存储器子系统110的IC裸片中的物理存储器位置之间的映射。
例如,基于IC裸片在存储器子系统110中进行输入/输出调度时写入、编程、存储、提交数据的可用性,转译处理器123可确定LBA空间的逻辑地址的一部分的用于在与存储器装置130或140的媒体的物理地址相关联的逻辑地址处放置数据的布局。当IC裸片(包含IC裸片内的物理单元)可用于提交编程数据时,调度写入命令用于在存储器子系统110中执行;转译处理器123针对写入命令生成布局的一部分并将用于写入命令以供映射的逻辑地址映射到IC裸片内的存储器位置。写入命令的执行使存储器子系统110将与写入命令相关联的数据提交/编程到IC裸片中。
取决于IC裸片跨顺序映射方案的媒体和/或应用的可用性,控制器115可依序写入数据群组(例如,在数据位置的顺序流中提供)以每次填充一个IC裸片,或者可每次依序地并行写入到多个IC裸片,例如以便并行填充IC裸片(若存储器装置)。LBA空间的区域内的写入的映射还可依序完成,以便简化用于执行映射的计算,如将参考ZNS映射数据结构更详细地论述。当存在多个IC裸片可用时,用于来自多个写入流的命令的逻辑地址(例如,LBA或LTU值)可分别通过布局的动态生成部分映射到所述多个IC裸片,使得在执行来自多个写入流的命令时不存在存取冲突。
在各种实施例中,转译处理器123存取某些ZNS映射数据结构(例如,区域映射数据结构101和块集合映射数据结构107)以便将LBA值转译为物理地址空间的物理块地址(PBA)。转译处理器123在快闪媒体(例如,NOR或NAND快闪存储器)的上下文中可被称为快闪转译层(FTL)。转译处理器123所采用的映射总体上可假设为涉及某一类型的块映射,例如块级映射或日志级映射。在数据位置被检测到或在ZNS存储器装置中的情况下,转译处理器123可映射形成区域的块群组,例如ZNS数据结构内的块群组,这可涉及将依序编号的LBA值映射到依序编号的PA。参考图2更详细地论述使用ZNS数据结构及其相互关系来将区域的LBA空间映射到媒体的物理地址空间。
在各种实施例中,命令生成处理器122执行命令处理,包含处理从主机系统120接收到的读取或写入命令或基于分别从主机系统120或另一请求代理接收到的读取和写入请求生成读取命令和写入命令。作为执行读取请求的部分,命令生成处理器122的缓冲器管理器113可分配特定数目的(例如,“一组”)缓冲器,所述缓冲器具有匹配存储在第一物理地址(映射到所创建的包含读取请求的LBA值的LTU值)和后续物理地址处的数据量的容量,所述后续物理地址例如在定义存储器装置的读取窗口尺寸的读取偏移值内在第一物理地址之后依序编号。出于解释的目的,存储在第一物理地址处的数据可称为第一数据,存储在后续物理地址处的数据可称为第二数据。在一个实施例中,读取偏移值是128KB,从而实现超过第一读取请求的额外124KB的第二数据的读取前视,但是读取偏移值的范围可高达2MB或更大。设想了各种其它偏移值或读取窗口尺寸。例如,每一后续物理地址可以跨由读取偏移值定义的顺序物理地址空间的读取窗口以页编号增加,以确定后续物理地址。通过缓冲器管理器113分配和跟踪缓冲器促进了读取前视操作。
在这些实施例中,命令生成处理器122可进一步生成一组命令标记,用于指示处理装置的命令执行处理器124从存储器装置130或140的第一地址和后续地址检索数据,并将数据存储在所述一组缓冲器中。命令生成处理器122可进一步向命令执行处理器124传输包含所述一组命令标记的命令群组。通过这种方式,所述一组命令标记中的每一命令标记包含映射到相应顺序物理地址中的一个物理地址的LTU值。每一命令标记还包含对应于存储于存储器装置140A中的缓冲器142中的一缓冲器的缓冲器地址。
在相关实施例中,缓冲器管理器113可跟踪缓冲器142的使用,并负责在主机命令使用任何数目个缓冲器管理算法命中这些缓冲器时锁定或释放缓冲器,从而跟踪通过数个潜在应用高速缓存于各个缓冲器中的数据。缓冲器管理算法可包含例如其中缓冲器142按照LTU值(或LBA值)排序的二三树算法(也称为2-3树算法)、链表算法或采用哈希算法的N路高速缓存以及其它高速缓存管理算法。
出于解释的目的,假设读取命令与写入命令互混到超过一个区域,但是其中三个读取命令包含到具有LBA_0值的区域零(“0”)的读取命令、到具有LBA_44值的区域44的读取命令及到具有LBA_23值的区域23的读取命令。在执行读取前视时,缓冲器管理器113可生成一组命令标记以读取前视1MB数据(作为读取偏移值),其包含第一数据和第二数据。命令标记可包含缓冲器地址,作为向识别为映射到具有第一数据和第二数据的读取偏移值的所述一组LTU值中的每一LTU值分配一个缓冲器142的方式。
条目编号 区域识别符 起始LBA值 结束LBA值 读取偏移值
1 0 0 1024 1,024KB
2 44 4400 5424 1,024KB
3 23 2300 2454 1,024KB
表1
为了跟踪和管理缓冲器142的分配,缓冲器管理器113可进一步创建并更新读取高速缓存表127。例如,缓冲器管理器113可针对每一读取前视操作在读取高速缓存表127中创建条目,以便跟踪缓冲器142到每一组经读取前视命令标记的相应LTU值的分配。表1示出读取高速缓存表127基于到先前论述的三个不同区域的三个读取命令的呈现的实例。每一条目可包含区域识别符、(例如,根据读取请求或命令检索的初始或第一LBA的)起始LBA值、结束LBA值及读取偏移值(例如,在此实例中为1MB)。但是,区域识别符是任选的,因为起始LBA值也识别了区域。读取偏移值可以是固定的读取前视数据的预定系统量,而结束LBA值可以是对应于物理地址空间内从起始LBA值开始的读取偏移值的末尾的LBA值。起始LBA值和结束LBA值可定义对应于物理地址空间中的读取偏移值的LBA值范围,例如读取窗口尺寸。如所提到,读取前视数据包含在不同情况下对应于第一LTU值的第一数据,以及对应于映射到存储器装置130或140的顺序物理地址中的对应一者处的63个额外数据分块的额外63个LTU值的第二数据。在本实例中提出的特定数字仅出于解释的目的,并且在不同实施方案或场景中可为不同的。
在各种实施例中,缓冲器管理器113可进一步创建和更新缓冲器索引表129,其中高速缓存于缓冲器中的依序读取数据相对于不连续的缓冲器编号进行索引,如表2中所示。例如,数据索引可以指对应于所述一组LTU值的LTU值,其包含在针对要发送到命令执行处理器的读取命令生成的读取前视命令标记中。例如,每一LTU值可以是相对于对应于LTU值的缓冲器地址进行索引的“数据索引”。因此,在表2的实例缓冲器索引表129中,缓冲器地址可以是“缓冲器索引”。
数据索引(例如,针对64字节的数据) 缓冲器索引
0 0
1 3
2 4
3 1
63 230
表2
可供此类缓冲器管理算法(例如,用于跟踪缓冲器分配和使用)使用的元数据包含LTU/LBA值(数据基于此排序)、指示数据驻存在哪一缓冲器槽处的缓冲器地址(或用于索引的其它缓冲器识别符),以及使单独读取或写入路径中的多个用户(例如,主机应用)能够被联合跟踪的缓冲器使用计数。通过这种方式,缓冲器管理器113可管理多个应用对多个区域的写入和读取,在所述区域中,任何一组命令可写入到依序存储的数据或从依序存储的数据读取,但是所分配的缓冲器可能不是依序编号的,如表2中所示。如果缓冲器中的数据被跟踪,那么可以使用硬件加速度来促进缓冲器中的数据跟踪和管理。
另外举例来说,在缓冲器管理器113已经创建或更新根据表1的读取高速缓存表127和根据表2的缓冲器索引表129之后,假设主机系统120随后向后续顺序LBA值发出读取请求或命令,如表3中所示。例如,区域零(“0”)的顺序LBA值可以是LBA_0加16KB,后面是LBA_0加32KB,后面是LBA_0加48KB,等等。值16KB可称为存储器装置中对应于LTU值的数据量的缓冲器分配单元偏移。接着,缓冲器管理器113可在不同情况下执行偏移计算,并确定与从后续读取请求检索到的LBA值相关联的LTU值。如所示,读取请求/命令是针对依序编号的LTU值。所确定的LTU值可分别为例如表3中所示的LTU_1、LTU_2和LTU_3。一旦LTU值被获知,缓冲器管理器113可就在缓冲器索引表129内索引以确定对应于与后续读取命令或请求中的LBA值相关联的LTU值的缓冲器地址。
Figure BDA0003136038640000131
Figure BDA0003136038640000141
表3
作为进一步的阐释,假设命令生成处理器122从接收自主机系统120的第二请求检索第二LBA值。那么,缓冲器管理器113可经由对读取高速缓存表127中的条目的存取确定第二LBA值(LBA_16)相对于起始LBA值(LBA_0)具有单个缓冲器分配单元偏移(16KB),且因此对应于所述一组LTU值中的第二LTU值(LTU_1)。缓冲器管理器113可进一步确定第二LBA值在对应于读取偏移值的LBA值范围内(1,024KB=1MB),且因此不超出范围。缓冲器管理器113可进一步在缓冲器索引表127内使用第二LTU值进行索引以检索第二缓冲器地址(表2中的缓冲器索引3)。然后,缓冲器管理器113可将从所述一组缓冲器中对应于第二缓冲器地址的第二缓冲器检索到的第二数据的子集返回到主机系统120。
在各种实施例中,缓冲器管理器113进一步使用标志(例如,位标志)或计数器来跟踪任何给定缓冲器是否正用于读取或写入路径。这可允许缓冲器以快速搜索时间满足飞行中命令(例如,已经处理)且以短搜索时间找到特定LBA,因此缓冲器可用于到主机系统120的高速缓存命中和直接传递,而不必回到转译处理器123进行映射。只要首先检查区域映射数据结构101,则由于从执行类似于高速缓存的缓冲器检索数据而导致的一致性不应该是问题,命令生成处理器122将在所公开的顺序读取优化中继续这样做。在一些实施例中,控制器115包含缓冲器管理器113的至少一部分。在其它实施例中或组合地,控制器和/或主机系统120的处理装置包含缓冲器管理器113的至少一部分。例如,控制器115或主机系统120的处理装置可配置成执行存储在存储器中的指令以执行本文中所描述的缓冲器管理器113的操作。在一些实施例中,缓冲器管理器113在安置于存储器子系统110中的集成电路芯片中实施。在其它实施例中,缓冲器管理器113是主机系统120的操作系统、装置驱动程序或应用的部分。
在这些实施例中,命令执行处理器124将去往存储器装置130、140的数据总线的通道内的写入和读取命令排序。此外,命令执行处理器124可响应于读取命令的接收而从第一物理地址并从存储器装置130、140的所述一组命令标记指向的后续物理地址检索数据。应牢记,每一命令标记包含映射到物理地址的LTU值,并且识别高速缓存于易失性存储器装置140A中的缓冲器内的缓冲器地址。命令执行处理器124可进一步将实现读取命令的数据存储(例如,高速缓存)到与所述一组命令标记的相应缓冲器地址一致的所分配缓冲器中,所述一组命令标记由命令生成处理器122生成并且包含在发送到命令执行处理器124的命令群组内。命令执行处理器124可进一步执行例如对应于物理地址空间的物理层中的错误处理。
转译处理器123将LTU值转译为物理地址空间的物理地址,以促进命令生成处理器122生成到命令执行处理器124的命令。因此,转译处理器123可充当命令生成处理器124(其接收具有LBA值的存储器请求并创建包含所述LBA值的LTU值)和需要知晓物理层的物理地址以实现命令的命令执行处理器124之间的中间方。在本公开中,在顺序读取优化的读取前视操作中,可以免去转译处理器123索引到各个ZNS映射数据结构中的常规使用。
图2是根据各种实施例的示出配置成支持基于区域的映射的数据结构的实例的框图。控制器115可将图2所示的数据结构存储在本地存储器119(例如,SRAM)中或存储在存储器装置140的存储器组件(例如,DRAM)中。控制器115还可使用图2的数据结构配置或实施媒体布局(例如,其中区域的数据群组将位于物理地址空间内的布局)。在图2中,区域映射数据结构201配置成提供命名空间(例如,用于ZNS操作的LBA空间)中的区域的媒体布局信息。区域映射数据结构201可与图1B的区域映射数据结构101相同或类似。区域映射数据结构201可具有多个条目。区域映射数据结构201中的每一区域映射条目识别关于区域的信息,例如区域的起始LBA地址211、区域的块集合识别符213、区域的区域光标值215、区域的状态217等等。
主机系统120在开始于区域起始LBA识别符211的LBA的区域中写入数据。主机系统120在LBA空间中的区域中依序写入数据。在某一量的数据已经写入到区域中之后,用于写入后续数据的当前起始LBA地址由区域光标值215识别。区域的每一写入命令将区域光标值215移动到新的起始LBA地址以用于区域的下一写入命令。状态217可具有指示区域为空、全满、隐式地开放、显式地开放、关闭等等的值,以跟踪写入所述区域的进展。
在图2中,逻辑到物理块映射数据结构203配置成促进LBA地址到IC裸片中的物理地址的转译。逻辑到物理块映射203可具有多个条目。LBA值可用作或转换成逻辑到物理块映射203中的条目的索引(例如,LTU值)。索引可用于针对LBA值查找条目。逻辑到物理块映射203中的每一条目针对LBA值识别IC裸片中的存储器块的物理地址。例如,IC裸片中的存储器块的物理地址可包含裸片识别符233、块识别符235、页映射条目识别符237等等。裸片识别符233识别存储器子系统110的存储器装置130、140的特定IC裸片(例如,裸片A或裸片B)。块识别符235识别使用裸片识别符233识别的IC裸片内的特定存储器块(例如,NAND快闪存储器)。页映射条目识别符237识别页映射数据结构205中的条目。
页映射数据结构205可具有多个条目。页映射205中的每一条目可包含识别存储器单元(例如,NAND存储器单元)块内的存储器单元页的页识别符251。例如,页识别符251可包含NAND存储器单元块中的页的字线编号和页的子块编号。此外,页的条目可包含页的编程模式253。例如,页可在SLC模式、MLC模式、TLC模式或QLC模式下编程。当在SLC模式下配置时,页中的每一存储器单元将存储一个数据位。当在MLC模式下配置时,页中的每一存储器单元将存储两个数据位。当在TLC模式下配置时,页中的每一存储器单元将存储三个数据位。当在QLC模式下配置时,页中的每一存储器单元将存储四个数据位。集成电路裸片中的不同页可具有不同数据编程模式。
在图2中,块集合数据结构207存储控制区域的动态布局的各方面的数据。块集合数据结构207可与图1B的块集合映射数据结构107相同或类似。块集合数据结构207在一个实施例中可以是表,其可具有多个条目。块集合数据结构207中的每一块集合条目识别其中存储区域的数据的集成电路裸片(例如,裸片A和裸片B)的数目/计数271。对于用于区域的集成电路裸片中的每一个,块集合数据结构207的块集合条目具有裸片识别符273、块识别符275、页映射条目识别符277、页映射偏移值等等。
裸片识别符273识别存储器子系统110的IC裸片中的特定IC裸片(例如,裸片A或裸片B),在所述IC裸片上可以存储区域的后续数据。块识别符275识别使用裸片识别符273识别的IC裸片内的特定存储器块(例如,NAND快闪存储器或其它媒体),在所述块中可以存储区域的后续数据。页映射条目识别符237识别页映射数据结构205中的页映射条目,其识别可用于存储区域的后续数据的页。
例如,存储器子系统110接收多个流的写入命令。在实施例中,所述多个流中的每一相应流配置成在一个实施例中在逻辑地址空间中依序写入数据;并且在另一实施例中,所述多个流中的流配置成在一个实施例中在逻辑地址空间中伪依序或随机地写入数据。每一写入流包含一组标记为将一组数据作为群组一起写入、修整、覆写的命令。在所述群组中,数据可以依序、随机或伪依序地写入逻辑空间。优选地,群组中的数据写入到擦除块集合中,其中擦除块集合中的存储器单元存储流的数据但不存储来自其它流的数据。擦除块集合可经擦除以去除所述流的数据,同时不会擦除其它流的数据。
例如,准许每个写入流在分配于存储器子系统110的存储器装置130、140的IC裸片中的命名空间中的区域的LBA处依序写入,但是禁止其在LBA(或逻辑地址)空间中无序地写入数据。存储器子系统110的转译处理器123识别存储器子系统110中可用于并行写入数据的多个物理或擦除)单元。
转译处理器123可从多个流中选择第一命用于在可用于写入数据的多个物理单元中并行执行。动态地响应于第一命令被选定用于多个物理单元中的并行执行,转译处理器123可生成和存储从逻辑地址空间中由第一命令识别的逻辑地址映射到多个存储器单元中的存储器单元的物理地址的布局的一部分。
命令执行处理器124可通过根据物理地址将数据存储到存储器单元中来并行地执行第一命令。例如,在调度第一命令以供执行时,第二命令的执行可在存储器子系统110的IC裸片的存储器单元子集中正在进行。因此,用于执行第二命令的存储器单元子集不可用于第一命令。在调度第一命令且确定用于第一命令的逻辑地址的布局的所述部分之后,第一命令可以在所述多个物理单元中并行地执行和/或与第二命令在存储器子系统110的其余物理单元中的执行并行进行。
例如,在识别出可用于执行后续命令的多个存储器单元(例如,IC裸片)之后,转译处理器123可根据块集合数据结构207识别可用于存储后续命令的数据的物理地址。物理地址可用于针对用于后续命令的LBA地址更新逻辑到物理块映射数据结构203中的对应条目。
例如,当IC裸片可以自由写入数据时,转译处理器123可确定可写入/编程到IC裸片中的存储器单元中的区域的命令。根据块集合数据结构207,转译处理器123定位所述区域的条目,定位与集成电路裸片的识别符273相关联的块识别符275和页映射条目识别符277,并使用裸片识别符273、块识别符275和页映射条目识别符277针对用于区域的命令的LBA来更新逻辑到物理块映射数据结构203中的条目的对应字段。
图3是根据实施例的图1A-1B的存储器子系统控制器115的命令生成处理器122、转译处理器123和命令执行处理器124的相互关系的框图。在各种实施例中,控制器115包含共享易失性存储器140B和共享易失性存储器140B中的命令缓冲器140C。在一个实施例中,共享易失性存储器140B是参考图1B论述的易失性存储器125或易失性存储器装置140A的部分。在各种实施例中,命令生成处理器122可从主机系统120(或其它请求代理)接收第一读取请求。第一读取请求可包含第一LBA值,其对应于读取操作所针对的存储器装置130或140的第一物理地址。在服务第一读取请求时,命令生成处理器122可创建包含第一LBA值的第一逻辑传递单元(LTU)值,所述第一LTU值将映射到存储器装置130、140的第一物理地址。
在一些实施例中,转译处理器123可配置成在其数据编程到存储器装置130、140中时将LTU到物理地址(PA)映射301自动存储(或缓冲)到共享易失性存储器140B中。例如,LTU到PA映射301可以是逻辑到物理块映射数据结构203和页映射数据结构205中在相应物理地址编程到存储器装置130或140时被写入的部分。这可提供可快速存取的数据结构,其在命令标记层级处仅提供LTU到PA映射。在一些实施例中,共享易失性存储器140B中的LTU到PA映射301可被视为高速缓存,以保持此数据结构的大小有限。
继续参考图3,转译处理器123可进一步选择性地设置共享易失性存储器140B中的标志303(例如,位标志等等)。因此,LTU到PA映射301中的每一条目可包含映射到LTU值和标志的物理地址。在替代实施例中,存储在寄存器112(图1B)中的位图的位值可被设置。位图中的一个位值可对应于特定LTU值,且因此用作共享易失性存储器140B的标志303。位图可与已知将依序写入(例如,针对每一ZNS操作)的物理地址空间相关。标志303(或位图内的位值)可指示LTU到PA映射条目是否与LBA地址空间的区域相关联,其中所述区域映射到在存储器装置130或140中依序写入的数据。转译处理器123可进一步选择性地设置裸片可用标志305,以指示物理地址所处的裸片可用于服务命令。在一些实施例中,如果区域存在超过一个裸片,那么可存在超过一个标志,每区域一个标志。
在各种实施例中,如果标志303经设置且裸片可用标志305均经设置,那么命令生成处理器122执行本文中所公开的读取前视优化。所述读取优化可包含例如自动增加针对第一读取请求从LTU到PA映射301检索到的第一物理地址,以在第一物理地址的偏移值(例如,读取窗口尺寸)内确定后续物理地址。在一个实施例中,执行自动增加,使第一物理地址以页编号增加,直到从第一物理地址到达读取窗口尺寸的末尾为止。
接着,命令生成处理器122可在命令缓冲器140C内生成(或更新)用于指示命令执行处理器124从存储器装置130或140检索数据并将数据存储在一组缓冲器中(已参考图1B论述)的一组命令标记。然后,命令生成处理器122可进一步向处理装置的命令执行处理器124传输分别包含所述一组命令标记中的一个的命令群组。所述一组命令可在命令缓冲器140C内缓冲为Cmd[0]、Cmd[1]、Cmd[2]等等直到Cmd[n]。在一个实施例中,命令生成处理器122可将所述一组命令标记连接为命令链(例如,一连串的相应命令)并在单个命令消息中将所述命令链传输到命令执行处理器124。
在命令执行处理器124将数据存储到分配用于第一(或初始)读取命令的读取前视的相应缓冲器中之后,命令生成处理器122可将存储在第一物理地址处的数据返回到主机系统120或其它请求代理。但是,命令生成处理器122还可进一步服务直接针对在缓冲器之外的后续物理地址的后续读取请求或命令,如本文中所描述。例如,响应于第二读取请求,命令生成处理器122可确定第二读取请求的第二LBA值对应于后续物理地址中的第二物理地址。接着,命令生成处理器122可从所述一组缓冲器中具有与所述一组命令标记中的第二命令标记相关联的缓冲器地址的第二缓冲器检索数据的第二子集,并响应于后续读取命令中的第一者,将数据的第二子集传输到主机系统120。
图4是根据实施例的基于读取命令支持直接高速缓存命中的方法400的流程图。方法400可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法400由图1A-1B的控制器115(例如,命令生成处理器122)执行。尽管以特定顺序或次序示出,但是除非另外指定,否则过程的次序可以修改。因此,所示实施例应理解为只是实例,并且所示过程可以按照不同次序执行,并且一些过程可以并行执行。另外,在各种实施例中,可以省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流是可能的。
在操作410处,处理逻辑存取具有第一命令标记的读取命令,其中第一命令标记包含第一逻辑传递单元(LTU)值和缓冲器142中的第一缓冲器的第一缓冲器地址。例如,读取命令可从主机系统120接收或由处理逻辑基于从主机系统120接收到的读取请求的内容而生成。第一LTU值从多个顺序逻辑块地址(LBA)值的区域映射到存储器装置130或140的多个顺序物理地址中的第一物理地址。在此实施例中,第一数据存储在第一物理地址处,且第一LTU值含有多个顺序LBA值中的第一LBA值。
在操作420处,处理逻辑生成指示处理装置的命令执行处理器从存储器装置检索第二数据并将第二数据存储在一组缓冲器中的一组命令标记。在此实施例中,例如,所述一组命令标记包含与依序在第一物理地址之后的第二物理地址相关联的第二命令标记、与依序在第二物理地址之后的第三物理地址相关联的第三命令标记等等,直到命令标记的数目足以填充读取第二数据以及第一数据的命令。此读取前视可在不具有其它转译工作(通过转译处理器123进行)或由存储器装置130或140处的命令执行处理器124执行的读取命令执行工作的情况下执行。
在操作430处,处理逻辑针对所述一组缓冲器在读取高速缓存表127中创建条目。例如,所述条目可包含区域的区域识别符、设置为第一LBA值的起始LBA值及对应于第一数据和第二数据的量的读取偏移值。所述条目可进一步包含结束LBA值,所述结束LBA值对应于物理地址空间内从起始LBA值开始的读取偏移值的末尾。读取高速缓存表127的实例在表1中示出。
图5是根据实施例的用于顺序读取优化的方法500的流程图。方法500可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法500由图1A-1B的控制器115(例如,命令生成处理器122)执行。尽管以特定顺序或次序示出,但是除非另外指定,否则过程的次序可以修改。因此,所示实施例应理解为只是实例,并且所示过程可以按照不同次序执行,并且一些过程可以并行执行。另外,在各种实施例中,可以省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流是可能的。
参考图5,在操作510处,处理逻辑接收针对存储器装置的包含逻辑块地址(LBA)地址空间的第一LBA值的读取请求。在操作515处,处理逻辑创建包含第一LBA值的第一逻辑传递单元(LTU)值,所述第一LTU值将映射到存储器装置的第一物理地址。第一LTU值无需发送到转译处理器123,只要转译处理器123在共享易失性存储器140B(图3)的LTU到PA映射301中已经创建LTU到PA条目即可。接着,处理逻辑可存取相对于共享存储器140B(图3)内的第一LTU值进行索引的第一物理地址。
继续参考图5,在操作520处,处理逻辑确定快速查找标志是否已设置。此快速查找标志可以是在共享易失性存储器140B中设置的与第一物理地址相关联的标志303;或快速查找标志可以是存储与存储器装置130或140的ZNS相关物理地址空间相关联的位图的一个寄存器112中的位值。在任一情况下,快速查找标志可指示第一LTU值与依序映射到多个顺序物理地址的多个顺序LBA值的区域相关联。在操作540处,处理逻辑确定裸片可用标志305是否已设置,这已参考图3加以论述。
在操作530处,如果快速查找标志或裸片可用标志未设置,那么处理逻辑经由正常读取路径提交读取请求,这包含向转译处理器123发送第一LTU值以使转译处理器123在ZNS数据结构内执行将第一LTU映射到第一物理地址的查找。
在操作550处,假设快速查找标志和裸片可用标志已相对于第一LTU值设置,处理逻辑从易失性存储器(例如,图3中的共享易失性存储器140B)检索已通过转译处理器123存储(或缓冲)在那里的第一物理地址。第一物理地址可在共享易失性存储器140B的LTU到PA映射301的条目内进行索引。
在操作560处,处理逻辑分配易失性存储器中的一组缓冲器,其中所述一组缓冲器的容量匹配存储在第一物理地址和后续物理地址处的数据量,所述后续物理地址在例如由起始于第一物理地址(例如,第一LTU值映射到所述第一物理地址)的读取偏移值(表1)定义的读取窗口尺寸内依序编号。存储缓冲器的易失性存储器可以是易失性存储器125、易失性存储器装置140A和/或共享易失性存储器140B。在各种实施例中,处理逻辑通过使第一物理地址以页编号增加来确定每一后续物理地址,直到到达读取窗口尺寸(例如,偏移值)的末尾为止。
在操作570处,处理逻辑生成指示处理装置的命令执行处理器124从存储器装置检索数据并将数据存储在所述一组缓冲器中的一组命令标记。所述一组命令标记可包含与第一物理地址相关联的第一命令标记和与后续物理地址相关联的额外命令标记。
在操作580处,处理逻辑针对所述一组缓冲器在读取高速缓存表中创建条目,其中所述条目包含区域的区域识别符、设置为第一LBA值的起始LBA值和对应于数据量的读取偏移值。所述条目可进一步包含结束LBA值,所述结束LBA值对应于物理地址空间内从起始LBA值开始的读取偏移值的末尾。接着,处理逻辑可使用读取高速缓存表,以便识别后续请求或命令针对对应于读取偏移值内的物理地址的LBA值,并因此存储在所述一组缓冲器内。因此,处理逻辑可检索存储在缓冲器中的数据子集作为高速缓存命中,并将所述数据子集返回到主机系统120或其它请求代理。
图6A-6C是根据相关实施例的支持直接高速缓存命中和传递的方法600的流程图。方法600可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法600由图1A-1B的控制器115(例如,命令生成处理器122)执行。尽管以特定顺序或次序示出,但是除非另外指定,否则过程的次序可以修改。因此,所示实施例应理解为只是实例,并且所示过程可以按照不同次序执行,并且一些过程可以并行执行。另外,在各种实施例中,可以省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流是可能的。
参考图6A,在操作605处,处理逻辑接收针对存储器装置的包含逻辑块地址(LBA)地址空间的第一LBA值的读取请求,其中第一LBA值属于映射到多个顺序物理地址的多个顺序LBA值的区域。在操作610处,处理逻辑创建包含第一LBA值的第一逻辑传递单元(LTU)值,所述第一LTU值映射到存储器装置130或140的第一物理地址。
在操作615处,处理逻辑分配易失性存储器中的(例如,缓冲器142中的)一组缓冲器,其中所述一组缓冲器的容量匹配存储在第一物理地址和后续物理地址处的数据量,所述后续物理地址在起始于第一物理地址的读取偏移值内依序编号。存储缓冲器的易失性存储器可以是易失性存储器125、易失性存储器装置140A或其它共享易失性存储器140B。在各种实施例中,处理逻辑通过使第一物理地址以页编号增加来确定每一后续物理地址,直到到达读取偏移值的末尾为止。
在操作620处,处理逻辑生成指示处理装置的命令执行处理器从存储器装置检索数据并将数据存储在所述一组缓冲器中的一组命令标记。在此实施例中,所述一组命令标记至少包含与第一物理地址相关联的第一命令标记和与后续物理地址中依序在第一物理地址之后的第二物理地址相关联的第二命令标记。所述一组命令标记可包含额外命令标记,例如,总计高达64个具有依序排序的LTU值的命令标记,其中每一LTU值对应于16KB数据,且读取前视数据的读取偏移值是1MB。
在操作625处,处理逻辑针对所述一组缓冲器在读取高速缓存表中创建条目,其中所述条目包含区域的区域识别符、设置为第一LBA值的起始LBA值和对应于数据量的读取偏移值。所述条目可进一步包含结束LBA值,所述结束LBA值对应于物理地址空间内从起始LBA值开始的读取偏移值的末尾。读取高速缓存表127的实例在表1中示出。
参考图6B,方法600在所述一组命令标记包含对应于读取偏移值内的多个顺序物理地址的子集的一组LTU值的上下文中执行。参考所述一组命令标记的生成和缓冲器索引表的生成,图6B中的方法600的部分可被视为额外细节。
在操作630处,处理逻辑向所述一组命令标记中的每一命令标记分配所述一组LTU值中的LTU值。LTU值可依序分配,并且可对应于起始于起始LBA值的缓冲器分配单元的增量(例如,在以上实例中为16KB)。在操作635处,处理逻辑向所述一组命令标记中的每一命令标记分配所述一组缓冲器内的一缓冲器的缓冲器地址。此分配可以是在图6A的操作615处论述的易失性存储器中的所述一组缓冲器的分配的部分。在一个实施例中,分配给相应顺序LTU值的缓冲器地址不一定是顺序或连续的,因此缓冲器索引表内的分配可由缓冲器管理算法管理,如先前论述。
在操作640处,处理逻辑在易失性存储器中生成缓冲器索引表以跟踪与映射到与LTU值相关联的缓冲器地址的所述一组命令标记中的每一命令标记相关联的LTU值。缓冲器索引表129的实例在表2中示出。处理逻辑还可根据链表或其中所述一组缓冲器按照LTU值排序的二三树算法中的一个跟踪缓冲器索引表的条目。通过这种方式,处理逻辑可在确定与当前读取请求或命令相关联的后续LTU值之后存取缓冲器索引表129,并定位所述一组缓冲器中含有所请求数据的对应缓冲器。
更确切地说,参考图6C并使用表1和2,执行方法600以实现高速缓存型存取中的后续读取请求或读取命令,从而从所述一组缓冲器拉取数据,而不是接合转译处理器123或命令执行处理器124来从存储器装置130或140拉取数据。在操作645处,处理逻辑从接收自主机系统120的后续读取请求或命令检索第二LBA值。例如,出于解释的目的,第二LBA值是(LBA_16)。
在操作650处,处理逻辑经由对读取高速缓存表127中的条目的存取确定第二LBA值相对于起始LBA值(LBA_0)具有一个缓冲器分配单元偏移(例如,16KB),因此对应于所述一组LTU值中的第二LTU值(例如,LTU_1),且在对应于读取偏移值的LBA值范围内。在操作660处,处理逻辑在缓冲器索引表129内使用第二LTU值进行索引以检索第二缓冲器地址,例如表2中的缓冲器索引3。设想了与易失性存储器内的位置相关的其它索引或寻址值,并且可由所论述的缓冲器管理器来管理它们。在操作665处,响应于所述一组缓冲器处的高速缓存命中,处理逻辑向主机系统120返回从所述一组缓冲器中对应于第二缓冲器地址的第二缓冲器检索到的数据子集。通过这种方式,处理逻辑还可改进读取性能,并免去中断写入操作以便服务极多读取请求(其出现频率高于写入操作)的昂贵成本,例如通过允许许多读取请求利用读取前视操作在缓冲器中命中来实现。
图6C中描绘的方法600的部分可以扩展到其它或后续读取请求或读取命令。例如,处理逻辑可从接收自主机系统的后续读取请求检索第三LBA值。处理逻辑可进一步经由对读取高速缓存表中的条目的存取确定第三LBA值相对于起始LBA值具有两倍的缓冲器分配单元偏移,因此对应于所述一组LTU值中的第三LTU值且在对应于读取偏移值的LBA值范围内。处理逻辑可进一步在缓冲器索引表内使用第三LTU值进行索引以检索第三缓冲器地址。处理逻辑可进一步向主机系统返回从所述一组缓冲器中对应于第三缓冲器地址的第三缓冲器检索到的数据子集。
图7示出计算机系统700的实例机器,所述实例机器内可以执行用于使机器执行本文所论述的方法中的任何一或多个的一组指令。在一些实施例中,计算机系统700可对应于主机系统(例如,图1A的主机系统120),其包含、耦合到或利用存储器子系统(例如,图1A的存储器子系统110)。在替代实施例中,所述机器可以在LAN、内联网、外联网和/或互联网中连接(例如,联网)到其它机器。所述机器可以客户端-服务器网络环境中的服务器或客户端机器的资格操作,作为对等(或分布式)网络环境中的对等机器操作,或作为云计算基础设施或环境中的服务器或客户端机器操作。
所述机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够执行(依序或以其它方式)指定将由所述机器采取的动作的一组指令的任何机器。另外,尽管示出单个机器,但术语“机器”还应被认为包含机器的任何集合,所述机器的集合单独地或共同地执行一组(或多组)指令以执行本文论述的方法中的任何一或多个。
实例计算机系统700包含处理装置702、主存储器704(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器706(例如,快闪存储器、静态随机存取存储器(SRAM)等),以及数据存储系统718,它们经由总线730彼此通信。
处理装置702表示一或多个通用处理装置,例如微处理器、中央处理单元等。更具体地说,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置702还可以是一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置702经配置以执行用于执行本文中所论述的操作和步骤的指令726。计算机系统700可进一步包含经由网络720通信的网络接口装置708。
数据存储系统718可包含机器可读存储媒体724(也被称为非暂时性计算机可读媒体),在其上存储一组或多组指令726或体现本文中所描述的方法或功能中的任何一或多个的软件。指令726在由同样构成机器可读存储媒体的计算机系统700、主存储器704和处理装置702执行期间还可完全地或至少部分地驻存在主存储器704内和/或处理装置702内。机器可读存储媒体724、数据存储系统718和/或主存储器704可对应于图1A-1B的存储器子系统110。
在一个实施例中,指令726包含实施对应图1B的缓冲器管理器113的功能性的指令。尽管在实例实施例中机器可读存储媒体724示出为单个媒体,但是术语“非暂时性机器可读存储媒体”应被认为包含存储一组或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的一组指令且使机器执行本公开的方法中的任何一或多个的任何媒体。术语“机器可读存储媒体”因此应被认为包含但不限于固态存储器、光学媒体和磁性媒体。
先前详细描述的一些部分已经关于计算机存储器内的数据位的操作的算法和符号表示呈现。这些算法描述和表示是数据处理领域中的技术人员用来将他们的工作内容传达给本领域的其他技术人员的最有效方式。此处且一般来说,算法被设想为产生所需结果的操作的自一致序列。所述操作是需要物理量的物理操控的那些操作。通常但是不一定,这些量采取能够存储、组合、比较和以其它方式操控的电气或磁性信号的形式。已经证实,将这些信号称为位、值、元件、符号、字符、项、数字等等有时是方便的,主要是出于常用的原因。
然而,应牢记,所有这些和类似术语与适当物理量相关联,且仅为应用于这些量的方便的标记。本公开可以指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)量的数据为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文中的操作的设备。此设备可以出于所需目的而专门构造,或其可以包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、CD-ROM和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,它们分别耦合到计算机系统总线。
本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可以与根据本文中的教示的程序一起使用,或可以证明构造用以执行所述方法更加专用的设备是方便的。将从下文描述中呈现用于各种这些系统的结构。此外,并不参考任何特定编程语言来描述本公开。应了解,可以使用多种编程语言来实施如本文所描述的本公开的教示内容。
本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,本公开的实施例已经参考其特定实例实施例进行描述。将显而易见的是,可在不脱离所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对其进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和图式。

Claims (20)

1.一种系统,其包括:
存储器装置;
易失性存储器,其包括缓冲器和读取高速缓存表;以及
处理装置,其耦合到所述存储器装置和所述易失性存储器,其中所述处理装置进行以下操作:
存取具有第一命令标记的读取命令,所述第一命令标记包括第一逻辑传递单元LTU值和所述缓冲器中的第一缓冲器的第一缓冲器地址,所述第一LTU值从多个顺序逻辑块地址LBA值的区域映射到所述存储器装置的多个顺序物理地址中的第一物理地址,其中第一数据存储在所述第一物理地址处,并且其中所述第一LTU值含有所述多个顺序LBA值中的第一LBA值;
生成指示所述处理装置的命令执行处理器从所述存储器装置检索第二数据并将所述第二数据存储在一组所述缓冲器中的一组命令标记,其中所述一组命令标记至少包括与依序在所述第一物理地址之后的第二物理地址相关联的第二命令标记;以及
针对所述一组所述缓冲器在所述读取高速缓存表中创建条目,其中所述条目包括设置为所述第一LBA值的起始LBA值和对应于所述第一数据和所述第二数据的量的读取偏移值。
2.根据权利要求1所述的系统,其中所述处理装置进一步进行以下操作:
接收包括所述第一LBA值的读取请求;
生成包含所述第一LBA值的所述第一LTU值;
从所述易失性存储器读取标志以确定所述第一LTU值与所述区域相关联;以及
用所述第一LTU值和所述第一缓冲器地址填充所述读取命令。
3.根据权利要求1所述的系统,其中所述条目进一步包括结束LBA值,所述结束LBA值对应于物理地址空间内从所述起始LBA值开始的所述读取偏移值的末尾。
4.根据权利要求3所述的系统,其中每一所述缓冲器将存储8千字节到32千字节的数据,并且其中所述读取偏移值为128千字节到2兆字节的数据。
5.根据权利要求1所述的系统,其中所述处理装置进一步向所述命令执行处理器传输分别包括所述一组命令标记中的一个的命令群组,并且响应于所述一组命令标记的接收,所述命令执行处理器将从所述存储器装置检索所述第二数据并根据所述一组命令标记的相应缓冲器地址将所述第二数据存储在所述一组所述缓冲器中。
6.根据权利要求1所述的系统,其中所述一组命令标记包括对应于所述读取偏移值内的所述多个顺序物理地址的子集的一组LTU值,并且其中所述一组命令标记中的每一命令标记包括:
所述一组LTU值中映射到所述多个顺序物理地址的所述子集中的物理地址的LTU值;以及
所述一组所述缓冲器内的一缓冲器的缓冲器地址;以及
其中所述处理装置进一步在所述易失性存储器中生成缓冲器索引表,以跟踪与所述一组命令标记中的每一命令标记相关联的所述LTU值,所述LTU值相对于与所述LTU值相关联的所述缓冲器地址进行索引。
7.根据权利要求6所述的系统,其中所述缓冲器索引表的条目根据以下中的一个进行跟踪:
链表;
其中所述缓冲器按照LTU值排序的二三树算法;或
采用哈希算法的N路高速缓存。
8.根据权利要求6所述的系统,其中所述处理装置进一步进行以下操作:
从接收自主机系统的第二读取请求检索第二LBA值;
基于所述读取高速缓存表中的所述条目,确定所述第二LBA值:
相对于所述起始LBA值具有单个缓冲器分配单元偏移,且因此对应于所述一组LTU值中的第二LTU值;且
在对应于所述读取偏移值的LBA值范围内;
在所述缓冲器索引表内使用所述第二LTU值进行索引以检索第二缓冲器地址;以及
向所述主机系统返回从所述一组所述缓冲器中对应于所述第二缓冲器地址的第二缓冲器检索到的所述第二数据的子集。
9.一种方法,其包括:
通过存储器子系统控制器的处理装置接收针对存储器装置的包括逻辑块地址LBA空间的第一LBA值的读取请求,其中所述LBA值属于映射到多个顺序物理地址的多个顺序LBA值的区域;
通过所述处理装置创建包含所述第一LBA值的第一逻辑传递单元LTU值,所述第一LTU值映射到所述存储器装置的第一物理地址;
通过所述处理装置分配易失性存储器中的一组缓冲器,其中所述一组缓冲器的容量匹配存储在所述第一物理地址和后续物理地址处的数据量,所述后续物理地址在起始于所述第一物理地址的读取偏移值内依序编号;
通过所述处理装置生成指示所述处理装置的命令执行处理器从所述存储器装置检索数据并将所述数据存储在所述一组缓冲器中的一组命令标记,其中所述一组命令标记包括与所述第一物理地址相关联的第一命令标记和与依序在所述第一物理地址之后的第二物理地址相关联的第二命令标记;以及
通过所述处理装置针对所述一组缓冲器在读取高速缓存表中创建条目,其中所述条目包括设置为所述第一LBA值的起始LBA值和对应于所述数据量的所述读取偏移值。
10.根据权利要求9所述的方法,其进一步包括从所述易失性存储器读取位图的位值以确定所述第一LTU值与所述LBA空间的所述区域相关联。
11.根据权利要求9所述的方法,其中创建所述条目进一步包括在所述条目内存储结束LBA值,所述结束LBA值对应于物理地址空间内从所述起始LBA值开始的所述读取偏移值的末尾。
12.根据权利要求9所述的方法,其进一步包括向所述处理装置的所述命令执行处理器传输分别包括所述一组命令标记中的一个的命令群组,以及响应于所述一组命令标记的接收,所述命令执行处理器从所述存储器装置检索所述数据并根据所述一组命令标记的相应缓冲器地址将所述数据存储在所述一组缓冲器中。
13.根据权利要求9所述的方法,其中所述一组命令标记包括对应于所述读取偏移值内的所述多个顺序物理地址的子集的一组LTU值,并且其中生成所述一组命令标记进一步包括:
向所述一组命令标记中的每一命令标记分配所述一组LTU值中的LTU值;以及
向所述一组命令标记中的每一命令标记分配所述一组缓冲器内的一缓冲器的缓冲器地址;以及
其中所述方法进一步包括在所述易失性存储器中生成缓冲器索引表,以跟踪与映射到与所述LTU值相关联的所述缓冲器地址的所述一组命令标记中的每一命令标记相关联的所述LTU值。
14.根据权利要求13所述的方法,其进一步包括根据以下中的一个跟踪所述缓冲器索引表的条目:
链表;
其中所述一组缓冲器按照LTU值排序的二三树算法;或
采用哈希算法的N路高速缓存。
15.根据权利要求13所述的方法,所述方法进一步包括:
从接收自主机系统的后续读取请求检索第三LBA值;
经由对所述读取高速缓存表中的所述条目的存取确定所述第三LBA值:
相对于所述起始LBA值具有两倍的缓冲器分配单元偏移,且因此对应于所述一组LTU值中的第三LTU值;且
在对应于所述读取偏移值的LBA值范围内;
在所述缓冲器索引表内使用所述第三LTU值进行索引以检索第三缓冲器地址;以及
向所述主机系统返回从所述一组缓冲器中对应于所述第三缓冲器地址的第三缓冲器检索到的所述数据的子集。
16.一种存储指令的非暂时性计算机可读媒体,所述指令在由存储器子系统控制器的处理装置执行时使所述处理装置执行多个操作,包括:
接收针对存储器装置的包括逻辑块地址LBA空间的第一LBA值的读取请求,其中所述LBA值属于映射到多个顺序物理地址的多个顺序LBA值的区域;
创建包含所述第一LBA的第一逻辑传递单元LTU值,所述第一LTU值映射到所述存储器装置的第一物理地址;
分配易失性存储器中的一组缓冲器,其中所述一组缓冲器的容量匹配存储在所述第一物理地址和后续物理地址处的数据量,所述后续物理地址在起始于所述第一物理地址的读取偏移值内依序编号;
生成指示所述处理装置的命令执行处理器从所述存储器装置检索数据并将所述数据存储在所述一组缓冲器中的一组命令标记,其中所述一组命令标记包括与所述第一物理地址相关联的第一命令标记和与依序在所述第一物理地址之后的第二物理地址相关联的第二命令标记;以及
针对所述一组缓冲器在读取高速缓存表中创建条目,其中所述条目包括设置为所述第一LBA值的起始LBA值和对应于所述数据量的所述读取偏移值。
17.根据权利要求16所述的非暂时性计算机可读媒体,其中所述多个操作进一步包括:向所述处理装置的所述命令执行处理器传输分别包括所述一组命令标记中的一个的命令群组,以及响应于所述一组命令标记的接收,所述命令执行处理器从所述存储器装置检索所述数据并根据所述一组命令标记的相应缓冲器地址将所述数据存储在所述一组缓冲器中。
18.根据权利要求16所述的非暂时性计算机可读媒体,其中所述一组命令标记包括对应于所述读取偏移值内的所述多个顺序物理地址的子集的一组LTU值,并且其中生成所述一组命令标记进一步包括:
向所述一组命令标记中的每一命令标记分配所述一组LTU值中的LTU值;以及
向所述一组命令标记中的每一命令标记分配所述一组缓冲器内的一缓冲器的缓冲器地址;以及
其中所述多个操作进一步包括在所述易失性存储器中生成缓冲器索引表,以跟踪与映射到与所述LTU值相关联的所述缓冲器地址的所述一组命令标记中的每一命令标记相关联的所述LTU值。
19.根据权利要求18所述的非暂时性计算机可读媒体,其中所述多个操作进一步包括根据以下中的一个跟踪所述缓冲器索引表的条目:
链表;
其中所述一组缓冲器按照LTU值排序的二三树算法;或
采用哈希算法的N路高速缓存。
20.根据权利要求18所述的非暂时性计算机可读媒体,其中所述多个操作进一步包括:
从接收自主机系统的后续读取请求检索第二LBA值;
经由对所述读取高速缓存表中的所述条目的存取确定所述第二LBA值:
相对于所述起始LBA值具有单个缓冲器分配单元偏移,且因此对应于所述一组LTU值中的第二LTU值;且
在对应于所述读取偏移值的LBA值范围内;
在所述缓冲器索引表内使用所述第二LTU值进行索引以检索第二缓冲器地址;以及
向所述主机系统返回从所述一组缓冲器中对应于所述第二缓冲器地址的第二缓冲器检索到的所述数据的子集。
CN202110718597.3A 2020-06-26 2021-06-28 依序编程的存储器子系统中的直接高速缓存命中和传递 Pending CN113849424A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/913,127 2020-06-26
US16/913,127 US11347648B2 (en) 2020-06-26 2020-06-26 Direct cache hit and transfer in a memory sub-system that programs sequentially

Publications (1)

Publication Number Publication Date
CN113849424A true CN113849424A (zh) 2021-12-28

Family

ID=78975034

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110718597.3A Pending CN113849424A (zh) 2020-06-26 2021-06-28 依序编程的存储器子系统中的直接高速缓存命中和传递

Country Status (2)

Country Link
US (2) US11347648B2 (zh)
CN (1) CN113849424A (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020246848A1 (ko) * 2019-06-05 2020-12-10 주식회사 크립토랩 근사 암호화된 암호문에 대한 정렬 장치 및 방법
EP4250082A1 (en) * 2022-03-24 2023-09-27 Samsung Electronics Co., Ltd. System and method for performing data read-write operations in zoned storage devices

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102565895B1 (ko) * 2017-11-13 2023-08-11 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR20190057887A (ko) * 2017-11-21 2019-05-29 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법

Also Published As

Publication number Publication date
US20210406185A1 (en) 2021-12-30
US11681629B2 (en) 2023-06-20
US20220269611A1 (en) 2022-08-25
US11347648B2 (en) 2022-05-31

Similar Documents

Publication Publication Date Title
US11656983B2 (en) Host-resident translation layer write command
JP7375215B2 (ja) 順次的にプログラムするメモリサブシステムにおける順次読み出し最適化
CN113851166B (zh) 存储器子系统中的加速读取转译路径
US11640354B2 (en) Logical-to-physical mapping of data groups with data locality
US11422945B2 (en) Generating, maintaining, or utilizing a compressed logical-to-physical table based on sequential writes
US11681629B2 (en) Direct cache hit and transfer in a memory sub-system that programs sequentially
US20220398045A1 (en) Addressing zone namespace and non-zoned memory based on data characteristics
CN113010449A (zh) 存储器子系统中命令的有效处理
CN115705166A (zh) 实施映射数据结构以最小化依序写入的数据存取
CN113961142B (zh) 包含各种时延和容量的存储器装置的存储器子系统
US20240069739A1 (en) Effective storage allocation for sequentially-written memory devices
US20240028239A1 (en) Zone block staging component for a memory sub-system with zoned namespace
US20230350798A1 (en) Namespace management for memory sub-systems
CN113094293B (zh) 存储器系统及相关方法和计算机可读存储介质
CN113918479B (zh) 用于并行独立线程的低位密度存储器高速缓存的方法及系统
CN117999547A (zh) 用于存储器子系统中的两遍次编程的虚拟管理单元方案
CN116643690A (zh) 存储器子系统处的主机限定区群组配置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination