CN113785278A - 用于避免并发写入流之间冲突的动态数据放置 - Google Patents
用于避免并发写入流之间冲突的动态数据放置 Download PDFInfo
- Publication number
- CN113785278A CN113785278A CN202080033254.7A CN202080033254A CN113785278A CN 113785278 A CN113785278 A CN 113785278A CN 202080033254 A CN202080033254 A CN 202080033254A CN 113785278 A CN113785278 A CN 113785278A
- Authority
- CN
- China
- Prior art keywords
- memory
- media
- data
- memory subsystem
- write
- 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
- 230000015654 memory Effects 0.000 claims abstract description 244
- 230000004044 response Effects 0.000 claims abstract description 9
- 238000012545 processing Methods 0.000 claims description 35
- 238000000034 method Methods 0.000 claims description 33
- 238000013507 mapping Methods 0.000 claims description 18
- 230000008569 process Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000009977 dual effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 239000000696 magnetic material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
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)
- Computer Networks & Wireless Communication (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Read Only Memory (AREA)
Abstract
一种存储器子***,其被配置成动态地产生媒体布局以避免并发流中的媒体访问冲突。所述存储器子***可标识可用于并发写入数据的多个媒体单元,从多个流选择命令以用于并发执行可用媒体单元,响应于被选择用于并发执行所述多个媒体单元的所述命令,动态地产生和存储媒体布局的一部分,并且在所述媒体布局的动态产生的部分中,通过根据物理地址将数据存储到所述存储器单元中来并发执行选定命令,所述选定命令中使用的逻辑地址映射到所述物理地址。
Description
相关申请
本申请要求2019年5月6日提交的并且标题为“用于避免并发写入流之间冲突的动态数据放置”的第62/844,054号临时美国专利申请以及2020年5月1日提交的并且标题为“用于避免并发写入流之间冲突的动态数据放置”的第16/865,243号美国专利申请的优先权,所述临时美国专利申请和所述美国专利申请的公开内容特此以引用的方式并入本文中。
技术领域
本文所公开的至少一些实施例大体上涉及存储器***,并且更具体地但不限于用于避免在逻辑空间中的循序写入的并发流之间冲突的动态数据放置。
背景技术
一种存储器子***可包含存储数据的一或多个存储器装置。存储器装置可以是例如非易失性存储器装置和易失性存储器装置。一般来说,主机***可使用存储器子***以在存储器装置处存储数据并且从存储器装置检索数据。
附图说明
在附图的图中作为实例而非限制示出了实施例,在附图中,相似的参考标号指示类似的元件。
图1示出了根据本公开的一些实施例的包含存储器子***的实例计算***。
图2示出了动态数据放置器,其被配置成以减少和/或避免写入数据时并发媒体访问中的冲突的方式确定媒体布局。
图3示出了具有动态数据放置的存储器子***的实例。
图4示出了被配置成支持动态数据放置的数据结构的实例。
图5示出了动态数据放置的方法。
图6示出了动态媒体布局确定的实例。
图7是其中本公开的实施例可操作的实例计算机***的框图。
具体实施方式
本公开的至少一些方面涉及存储器子***中的动态数据放置,以用于避免在逻辑地址空间中循序写入的并发流之间的冲突。存储器子***可以是存储装置、存储器模块,或存储装置和存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机***可使用包含例如存储数据的存储器装置之类的一或多个组件的存储器子***。主机***可以提供将存储在存储器子***处的数据并且可以请求将从存储器子***检索的数据。
媒体布局指定在存储器子***中从主机***接收的命令中使用的地址与存储器子***的存储器媒体中的物理存储器位置之间的映射。固定的媒体布局可能引起活动写入流之间的媒体访问冲突、缓冲区寿命延长和/或缓冲要求增加。缓冲区寿命对应于在将数据提交、写入、存储或编程到存储器子***的存储器媒体之前在存储器子***中缓冲的数据的寿命。例如,存储器子***连接到的主机***、在存储器子***中运行的垃圾收集过程和/或来自主机***的一或多个写入流(例如,用于在存储器子***中配置的命名空间的不同区中写入)可产生多个写入命令流。存储器媒体可以具有能够并行地写入数据的多个存储器装置。因此,在将数据提交到存储器子***的存储器媒体中时,至少一些写入命令流可以在存储器子***中并行执行。然而,一个存储器装置可一次支持一个写入操作。当通过媒体布局映射两个写入命令以在同一存储器装置上操作时,会发生访问冲突。每次冲突会增加对应的缓冲区寿命。媒体布局可通过将逻辑地址映射到存储器子***的存储器媒体中的随机存储器位置来随机化。随机化的媒体布局可减少冲突。然而,当使用预定媒体布局时,即使当写入流的数量等于或小于可并行独立地执行写入操作的存储器装置的数量时,仍然可能发生冲突。
本公开的至少一些方面通过动态数据放置解决以上和其它不足。例如,对于传入写入命令中使用的逻辑地址的媒体布局的一部分的确定可以推迟到可以在无冲突的情况下执行写入命令为止。当存储器媒体被配置成在集成电路裸片(例如,作为NAND存储器单元)上时,媒体布局确定可基于可用于在输入/输出调度时执行写入操作的集成电路裸片的标识。确定媒体布局以使得要并行执行的命令的逻辑地址映射到可用于并发/并行操作而无冲突的不同集成电路裸片。因此,可完全避免来自不同活动流的写入命令当中的媒体访问冲突。当活动写入流的数量小于存储器子***中集成电路裸片的数量时,在使用动态媒体布局时不会发生媒体访问冲突。一般来说,写入流包含将数据集一起作为群组进行写入、微调、重写的命令集合。在所述群组中,数据可循序、随机或伪循序地在逻辑空间中写入。优选地,群组中的数据写入到擦除块集合中,其中擦除块集合中的存储器单元存储所述流的数据,但不存储来自其它流的数据。可擦除所述擦除块集合以移除所述流的数据,而不擦除其它流的数据。在一些情况下,当不同流的逻辑地址映射到同一擦除块集合中时,不同流的数据不能单独擦除,可能会发生冲突。还可通过动态媒体布局技术避免此类冲突。
图1示出了根据本公开的一些实施例的包含存储器子***110的实例计算***100。存储器子***110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置102)、一或多个非易失性存储器装置(例如,存储器装置104),或这些的组合。
存储器子***110可以是存储装置、存储器模块,或存储装置与存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器、安全数字(SD)卡和硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM),和各种类型的非易失性双列直插式存储器模块(NVDIMM)。
计算***100可以是计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它运输工具)、支持物联网(IoT)的装置、嵌入式计算机(例如,运载工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器和处理装置的此类计算装置。
计算***100可包含耦合到一或多个存储器子***110的主机***120。图1示出了耦合到一个存储器子***110的主机***120的一个实例。如本文中所使用,“耦合到”或“与...耦合”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有中间组件),无论是有线还是无线的,包含例如电连接、光学连接、磁连接等的连接。
主机***120可包含处理器芯片组(例如处理装置118)和由处理器芯片组执行的软件堆栈。处理器芯片组可包含一或多个核心、一或多个高速缓存器、存储器控制器(例如,控制器116)(例如,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之间传输数据。当存储器子***110通过PCIe接口与主机***120耦合时,主机***120可进一步使用NVM高速(NVMe)接口来访问组件(例如,存储器装置104)。物理主机接口可提供用于在存储器子***110与主机***120之间传送控制、地址、数据和其它信号的接口。图1示出了存储器子***110作为实例。一般来说,主机***120可经由同一通信连接、多个单独通信连接和/或通信连接的组合访问多个存储器子***。
主机***120的处理装置118可例如是微处理器、中央处理单元(CPU)、处理器的处理核心、执行单元等。在一些情况下,控制器116可称作存储器控制器、存储器管理单元和/或启动器。在一个实例中,控制器116控制通过耦合在主机***120与存储器子***110之间的总线进行的通信。一般来说,控制器116可将对存储器装置102、104的所要存取的命令或请求发送到存储器子***110。控制器116可另外包含用于与存储器子***110通信的接口电路***。接口电路***可将从存储器子***110接收到的响应转换成用于主机***120的信息。
主机***120的控制器116可与存储器子***110的控制器115进行通信以执行操作,所述操作例如在存储器装置102、104处读取数据、写入数据或擦除数据以及其它此类操作。在一些情况下,控制器116集成在处理装置118的同一封装内。在其它情况下,控制器116与处理装置118的封装隔开。控制器116和/或处理装置118可包含硬件,例如一或多个集成电路(IC)和/或离散组件、缓冲存储器、高速缓存存储器或其组合。控制器116和/或处理装置118可以是微控制器、专用逻辑电路***(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等),或另一合适的处理器。
存储器装置102、104可以包含不同类型的非易失性存储器组件和/或易失性存储器组件的任何组合。易失性存储器装置(例如,存储器装置102)可以是但不限于随机存取存储器(RAM),例如动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)。
非易失性存储器组件的一些实例包含“与非”(NAND)类型快闪存储器和就地写入存储器,例如三维交叉点(“3D交叉点”)存储器。非易失性存储器的交叉点阵列可以结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可进行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。NAND类型快闪存储器包含例如二维NAND(2D NAND)和三维NAND(3D NAND)。
存储器装置104中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如单层级单元(SLC)可每单元存储一个位。其它类型的存储器单元,例如,多层级单元(MLC)、三层级单元(TLC)、四层级单元(QLC)和五层级单元(PLC)可以每单元存储多个位。在一些实施例中,每个存储器装置104可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC或其任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分,以及MLC部分、TLC部分或QLC部分。存储器装置104的存储器单元可分组为页,所述页可指用于存储数据的存储器装置的逻辑单元。在一些类型的存储器(例如,NAND)的情况下,页可分组以形成块。
虽然描述了非易失性存储器装置,例如3D交叉点型和NAND型存储器(例如,2DNAND、3D NAND),但存储器装置104可基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、“或非”(NOR)快闪存储器,以及电可擦除可编程只读存储器(EEPROM)。
存储器子***控制器115(或为简单起见,控制器115)可与存储器装置104通信以执行操作,例如在存储器装置104处读取数据、写入数据或擦除数据和其它这类操作(例如,响应于控制器116在命令总线上排程的命令)。控制器115可包含硬件,例如一或多个集成电路(IC)和/或离散组件、缓冲区存储器或其组合。硬件可包含具有专用(即,硬译码)逻辑的数字电路***以执行本文所描述的操作。控制器115可以是微控制器、专用逻辑电路(例如现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一合适的处理器。
控制器115可包含处理装置117(处理器),其被配置成执行存储于本地存储器119中的指令。在所示出的实例中,控制器115的本地存储器119包含被配置成存储指令的嵌入式存储器,所述指令用于执行控制存储器子***110的操作(包含处理存储器子***110与主机***120之间的通信)的各种过程、操作、逻辑流和例程。
在一些实施例中,本地存储器119可以包含存储存储器指针、所提取数据等的存储器寄存器。本地存储器119还可以包含用于存储微码的只读存储器(ROM)。虽然图1中的实例存储器子***110已示出为包含存储器子***控制器115,但在本公开的另一实施例中,存储器子***110不包含控制器115,而是可替代地依靠外部控制(例如,由外部主机或由与存储器子***分开的处理器或控制器提供)。
一般来说,控制器115可从主机***120接收命令或操作,并且可将所述命令或操作转换为指令或适当命令以实现对存储器装置104的所需存取。控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作,以及与存储器装置104相关联的逻辑地址(例如,逻辑块地址(LBA)、命名空间)与物理地址(例如,物理块地址)之间的地址转译。控制器115还可包含主机接口电路***,以经由物理主机接口与主机***120通信。主机接口电路***可将从主机***接收的命令转换成命令指令以存取存储器装置104,以及将与存储器装置104相关联的响应转换成用于主机***120的信息。
存储器子***110还可包含未示出的额外电路***或组件。在一些实施例中,存储器子***110可以包含高速缓存器或缓冲器(例如,DRAM)和地址电路***(例如,行解码器和列解码器),其可从控制器115接收地址并且对地址进行解码以存取存储器装置104。
在一些实施例中,存储器装置104包含本地媒体控制器105,其结合存储器子***控制器115操作以在存储器装置104的一或多个存储器单元上执行操作。外部控制器(例如,存储器子***控制器115)可在外部管理存储器装置104(例如,对存储器装置104执行媒体管理操作)。在一些实施例中,存储器装置104是受管理存储器装置,其为与本地控制器(例如,本地控制器105)组合以在同一存储器装置封装内进行媒体管理的原始存储器装置。受管理存储器装置的实例是受管理NAND(MNAND)装置。
计算***100包含存储器子***110中的动态数据放置器113,其动态地确定媒体布局以将与逻辑地址相关联的数据放置在媒体单元/存储器装置102至104中。在一些实施例中,存储器子***110中的控制器115包含动态数据放置器113的至少一部分。在其它实施例中,或在组合中,主机***120中的控制器116和/或处理装置118包含动态数据放置器113的至少一部分。例如,控制器115、控制器116和/或处理装置118可以包含实施动态数据放置器113的逻辑电路。例如,控制器115或主机***120的处理装置118(处理器),可被配置成执行存储在存储器中的用于执行本文所描述的动态数据放置器113的操作的指令。在一些实施例中,动态数据放置器113在安置在存储器子***110中的集成电路芯片中实施。在其它实施例中,动态数据放置器113是主机***120的操作***、装置驱动器或应用程序的一部分。
动态数据放置器113可基于媒体单元/存储器装置102至104在存储器子***110中的输入/输出调度时写入、编程、存储、提交数据的可用性而确定用于在媒体单元/存储器装置102至104中的逻辑地址处放置数据的逻辑地址的一部分的媒体布局。当媒体单元/存储器装置(例如,102或104)可用于提交/编程数据时,调度写入命令以用于在存储器子***110中执行;并且动态数据放置器113产生用于写入命令的媒体布局的一部分并且映射写入命令中使用的逻辑地址以使用媒体单元/存储器装置(例如,102或104)标识存储器位置。写入命令的执行使得存储器子***110将与写入命令相关联的数据提交/编程到媒体单元/存储器装置(例如,102或104)中。由于已知媒体单元/存储器装置(例如,102或104)可用于提交/编程数据,而不依赖于其它媒体单元/存储器装置(例如,102或104)的操作,因此在执行写入命令时不存在媒体访问冲突。当存在多个媒体单元/存储器装置(例如,102和104)可用时,在来自多个写入流的命令中使用的逻辑地址可分别由动态产生的媒体布局的一部分映射到多个媒体单元/存储器装置(例如,102和104),使得在执行来自多个写入流的命令时不存在媒体访问冲突。下文描述关于动态数据放置器113的操作的其它细节。
图2示出了动态数据放置器113,其被配置成以减少和/或避免写入数据时并发媒体访问中的冲突的方式确定媒体布局130。例如,可在图1的计算机***100中实施动态数据放置器113和媒体布局130。
在图2中,并行地调度多个写入命令123A至123N以用于执行。为并行执行而调度的写入命令123A至123N的数量基于可用于并行操作的媒体单元/存储器装置109A至109N(例如,图1所示的存储器装置102和/或104)的数量。写入命令123A至123N可分别来自多个写入流。
写入命令123A至123N使用逻辑块寻址(LBA)地址131、...、133指定用于写入操作的位置。
在调度写入命令123A至123N时,动态数据放置器113产生逻辑块寻址(LBA)地址131、…、133到物理地址141、…、143的映射。由于确定媒体单元/存储器装置109A至109N可用于并行写入操作,因此动态数据放置器113将LBA地址131、…、133中的每一个映射到媒体单元/存储器装置109A、…、109N中的不同一个。因此,用于LBA地址131、…、133的物理地址141、…、143对应于不同媒体单元/存储器装置109A、…、109N中的存储区151、…、153。由于物理地址141、…、143中没有两个用于同一媒体单元(例如,109A或109N)中的存储器区,因此在并行执行写入命令123A、…、123N时不会发生冲突。因此,消除了媒体访问冲突。
一般来说,跨不同媒体单元/存储器装置109A至109N的写入操作可能不一致。因此,当媒体单元/存储器装置109A、…、109N的子集变得可用于下一次写入操作时,媒体单元/存储器装置109A、…、109N的另一子集在其操作中可能仍然忙碌并且不可用于下一次写入操作。媒体单元/存储器装置109A、…、109N中的一些可在执行例如读取操作、擦除操作之类的其它操作时忙碌,并且因此不可用于执行写入操作。一般来说,当为媒体单元/存储器装置109A、…、109N的可用子集调度一或多个写入命令时,动态数据放置器113产生媒体布局103的一部分,以将所调度写入命令的LBA地址映射到媒体单元/存储器装置109A、…、109N的可用子集中的存储器区的物理地址。因此,可在媒体访问冲突的情况下执行所调度命令。
图3示出了具有动态数据放置的存储器子***的实例。例如,可以使用图2的动态数据放置器113在图1的存储器子***110中实施图3的存储器子***。然而,图1和图2的技术不限于图3中所示出的存储器子***的实施方案。例如,所述技术可实施平面块装置、支持命名空间的装置,或支持分区名称空间的装置(例如,图3中所示出的存储器子***)。因此,本文中呈现的公开内容不限于图3的实例。
在图3中,命名空间201被配置成在存储器子***110的媒体存储容量上。命名空间201提供逻辑块寻址空间,所述逻辑块寻址空间可以由主机***120使用以指定用于读取或写入操作的存储器位置。命名空间201可以被分配在存储器子***110的媒体存储容量的一部分或存储器子***110的整个媒体存储容量上。在一些情况下,可以在存储器子***110的媒体存储容量的单独、非重叠部分上分配多个命名空间。
在图3中,命名空间201被配置成具有多个区211、213、…、219。命名空间中的每个区(例如,211)允许对区(例如,211)中的LBA地址进行随机读取访问,并且允许对区(例如,211)中的LBA地址进行循序写入访问,但不允许对区(211)中的随机LBA地址进行随机写入访问。因此,在命名空间201的LBA地址空间中以预定的顺序次序将数据写入区(例如,211)。
当配置命名空间201中的区(例如,211)时,(例如,为简单起见)可为所述区(例如,211)预定媒体布局。区(例如,211)中的LBA地址可预映射到存储器子***110的媒体203。然而,如上文所论述的,此预定媒体布局可在存在多个并行写入流时引起媒体访问冲突。将从区(例如,211)中的LBA地址到媒体203中的存储器位置的映射随机化可以减少冲突,但不能消除冲突。
优选地,在存储器子***110中配置动态数据放置器113,以在调度用于执行的写入命令时创建媒体布局130的部分,从而完全消除冲突。
例如,存储器子***110的媒体203可以具有多个集成电路裸片205、…、207。集成电路裸片(例如,205)中的每一个可以具有存储器单元(例如,NAND存储器单元)的多个平面221、…、223。平面(例如,221)中的每一个可以具有存储器单元(例如,NAND存储器单元)的多个块231、…、233。块(例如,231)中的每一个可以具有存储器单元(例如,NAND存储器单元)的多个页241、…、243。每个页(例如,241)中的存储器单元被配置成被编程以在不可中断的操作中一起存储/写入/提交数据;并且每个块(例如,231)中的存储器单元被配置成在不可中断的操作中一起擦除数据。
当用于将数据存储在一个区(例如,211)中的写入命令(例如,123A)和用于将数据存储在另一区(例如,213)中的另一写入命令(例如,123N)被调度以用于并行执行时,结果两个集成电路裸片(例如,205和207)可用于并发操作,动态数据放置器113将写入命令(例如,123A和123N)的LBA地址(例如,131和133)映射到位于不同裸片(例如,205和207)中的页中。因此,可以避免媒体访问冲突。
图4示出了被配置成支持动态数据放置的数据结构的实例。例如,可以使用图4的数据结构来实施图2或3的媒体布局130。
在图4中,区映射301被配置成提供用于命名空间(例如,201)中的区(例如,211)的媒体布局信息。区映射301可以具有多个条目。区映射301中的每个条目标识关于区(例如,211)的信息,例如区(例如,211)的起始LBA地址311、区(例如,211)的块集合标识符313、区(例如,211)的光标值315、区(例如,211)的状态317等。
主机***120在区起始LBA地址311处开始在区(例如,211)中写入数据。主机***120在LBA空间中循序地在区(例如,211)中写入数据。在一定量的数据已写入到区(例如,211)中之后,由光标值315标识用于写入后续数据的当前起始LBA地址。针对区的每个写入命令将光标值315移动到用于区的下一写入命令的新起始LBA地址。状态317可以具有指示区(例如,211)为空、满、隐含地打开、明确打开、关闭等的值。
在图4中,逻辑到物理块映射303被配置成促进LBA地址(例如,331)转译成媒体(例如,203)中的物理地址。
逻辑到物理块映射303的逻辑可以具有多个条目。LBA地址(例如,331)可用作或转换成逻辑到物理块映射303的逻辑中的条目的索引。所述索引可用于查找LBA地址的条目(例如,331)。逻辑到物理块映射303中的每个条目针对LBA地址(例如,331)标识媒体(例如,203)中的存储器块的物理地址。例如,媒体(例如,203)中的存储器块的物理地址可以包含裸片标识符333、块标识符335、页映射条目标识符337等。
裸片标识符333标识存储器子***110的媒体203中的特定集成电路裸片(例如,205或207)。
块标识符335标识使用裸片标识符333标识的集成电路裸片(例如,205或207)内的特定存储器块(例如,NAND快闪存储器)。
页映射条目标识符337标识页映射305中的条目。
页映射305可以具有多个条目。页映射305中的每个条目可以包含标识存储器单元块(例如,NAND存储器单元)内的存储器单元页的页标识符351。例如,页标识符351可包含页的字线编号和NAND存储器单元块中的页的子块编号。此外,页的条目可以包含页的编程模式353。例如,页可以在SLC模式、MLC模式、TLC模式或QLC模式下编程。当在SLC模式下配置时,页中的每个存储器单元将存储一个数据位。当在MLC模式下配置时,页中的每个存储器单元将存储两个数据位。当在TLC模式下配置时,页中的每个存储器单元将存储三个数据位。当在QLC模式下配置时,页中的每个存储器单元将存储四个数据位。集成电路裸片(例如,205或207)中的不同页可以具有用于数据编程的不同模式。
在图4中,块集合表307存储区(例如,211)的动态媒体布局的数据控制方面。
块集合表307可以具有多个条目。块集合表307中的每个条目标识集成电路裸片(例如,205和207)的数目/计数371,在所述集成电路裸片中存储区(例如,211)的数据。对于用于区(例如,211)的每个集成电路裸片(例如,205和207),块集合表307的条目具有裸片标识符373、块标识符375、页映射条目标识符377等。
裸片标识符373标识存储器子***110的媒体203中的特定集成电路裸片(例如,205或207),在所述裸片(例如,205或207)上可存储区(例如,211)的后续数据。
块标识符375标识使用裸片标识符373标识的集成电路裸片(例如,205或207)内的存储器(例如,NAND快闪存储器)的特定块(例如,231或233),在所述特定块(例如,231或233)中可存储区(例如,211)的后续数据。
页映射条目标识符337标识页映射305中的条目,其标识可用于存储区(例如,211)的后续数据的页(例如,241或241)。
图5示出了动态数据放置的方法。图5的方法可由处理逻辑进行,所述处理逻辑可包含硬件(例如,处理装置、电路***、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,图5的方法至少部分地由图1、2或3的动态数据放置器113执行。虽然以特定顺序或次序示出,但是除非另外规定,否则可修改过程的次序。因此,应理解,所示出的实施例仅为实例,并且所示出的过程可以不同次序执行,并且一些过程可并行地执行。另外,可以在各种实施例中省略一或多个过程。因此,并非每个实施例中都需要所有过程。其它过程流程是可能的。
在框401处,存储器子***110接收多个写入命令流。例如,所述多个流中的每个相应流被配置成在一个实施例中循序地在逻辑地址空间中写入数据;并且在另一实施例中,所述多个流中的流被配置成在一个实施例中伪循序地或随机地在逻辑地址空间中写入数据。每个写入流包含将数据集一起作为群组进行写入、微调、重写的命令集合。在所述群组中,数据可循序、随机或伪循序地在逻辑空间中写入。优选地,群组中的数据写入到擦除块集合中,其中擦除块集合中的存储器单元存储所述流的数据,但不存储来自其它流的数据。可擦除所述擦除块集合以移除所述流的数据,而不擦除其它流的数据。
例如,准许写入流中的每一个循序在存储器子***110的媒体203上所分配的命名空间(例如,201)中的区(例如,211)中的LBA地址处写入,但禁止在LBA地址空间中无序地写入数据。
在框403处,存储器子***110的动态数据放置器113标识存储器子***中可用于并发写入数据的多个媒体单元(例如,109A至109N)。
在框405处,动态数据放置器113从多个流中选择第一命令以并发执行可用于写入数据的多个媒体单元。
在框407处,动态数据放置器113可响应于被选择用于并发执行多个媒体单元的第一命令,动态地产生和存储从逻辑地址空间中的第一命令标识的逻辑地址映射到多个媒体单元中的存储器单元的物理地址的媒体布局130的一部分。
在框409处,存储器子***110通过根据物理地址将数据存储到存储器单元中来并发执行第一命令。
例如,在调度用于执行的第一命令时,可以在存储器子***110的媒体的存储器单元的子集中进行执行第二命令。因此,用于执行第二命令的存储器单元的子集不可用于第一命令。在调度第一命令并且确定第一命令中使用的逻辑地址的媒体布局的一部分之后,第一命令可以在多个媒体单元中并发执行和/或与存储器子***110的其余媒体单元中的第二命令的执行进度并发执行。
例如,在标识可用于执行下一命令的多个存储器单元(例如,集成电路裸片)之后,动态数据放置器113可以从块集合表307标识可用于存储下一命令的数据的物理地址。物理地址可用于更新针对下一命令中使用的LBA地址的逻辑到物理块映射303中的对应条目。
例如,当集成电路裸片(例如,205)不含写入数据时,动态数据放置器113可以确定可写入/编程到集成电路裸片(例如,205)中的存储器单元中的区的命令。根据块集合表307,动态数据放置器113定位区(例如,205)的条目,定位与集成电路裸片(例如,205)的标识符373相关联的块标识符375和页映射条目标识符377,并且使用裸片标识符373、块标识符375和页映射条目标识符377,以用于针对区(例如,211)的命令中使用的LBA地址331更新逻辑到物理块映射303中的条目的对应字段。因此,对于LBA地址331,可以在没有媒体访问冲突的情况下执行区(例如,211)的命令。
图6示出了动态媒体布局确定的实例。
在图6的实例中,示出了两个并发写入流420和430。流420具有待写入到集成电路裸片441、443、445、…的存储器单元中的项目421、423、425、…、429。流430具有待写入到集成电路裸片441、443、445、…的存储器单元中的项目431、433、435、…、439。如果流420的项目421和流452的项目431被分配成写入到同一裸片(例如,441)中,则会发生冲突,因为裸片(例如,441)无法用于并发写入流420的项目421和流430的项目431。因此,动态数据放置器(例如,图1、2或3中的113)将并发流420和430的项目421和431分配给不同裸片441和443中的页451和454,如图6所示。类似地,来自并发流420和430的项目423和433被分配到不同裸片443和441中的页453和42。例如,当流420的项目425被分配到裸片455中的页455时,并发项目435被分配成写入到另一裸片中的页中;并且裸片445中的页457可被分配到不与流420的项目425并发写入/编程的流430的项目439。因此,避免了冲突。动态媒体布局改变相对于裸片441、443、445、…的次序写入的项目的次序。例如,按一个次序将流420的项目421至429写入到裸片441、443、445、…中;并且按另一次序将流430的项目431至439写入到裸片441、443、445、…中,使得流420和430不同时访问同一裸片。在图6中,不同流420和430的数据被标记以写入到不同擦除块中。例如,用于存储流420的数据项目421的裸片441中的页451和用于存储流430的数据项目431的裸片441中的页452在单独的擦除块集合中,使得可以在不擦除存储流430的数据的页452的情况下擦除流420的页451,并且使得可以在不擦除存储流420的数据的页451的情况下擦除流430的页452。
在一些实施方案中,处理装置118与存储器子***110之间的通信信道包含计算机网络,例如局域网、无线局域网、无线个域网、蜂窝式通信网络、宽带高速始终连接的无线通信连接(例如,当前或未来一代的移动网络链路);并且处理装置118和存储器子***可被配置成使用与NVMe协议中的那些类似的数据存储管理和使用命令来彼此通信。
存储器子***110通常可具有非易失性存储媒体。非易失性存储媒体的实例包含形成于集成电路中的存储器单元和涂布在硬磁盘上的磁性材料。非易失性存储媒体可在不消耗电力的情况下维护存储在其中的数据/信息。存储器单元可使用各种存储器/存储装置技术来实施,所述存储器/存储装置技术例如NAND逻辑门、“或非”逻辑门、相变存储器(PCM)、磁性随机存取存储器(MRAM)、电阻式随机存取存储器、交叉点存储装置及存储器装置(例如,3D XPoint存储器)。交叉点存储器装置使用无晶体管存储器元件,所述无晶体管存储器元件中的每一个具有在一起堆叠成列的存储器单元和选择器。存储器元件列通过两个垂直线材层连接,其中一个层处于存储器元件列上方,并且另一层处于存储器元件列下方。可以单独地在两个层中的每一层上的一个导线的交叉点处选择每个存储器元件。交叉点存储器装置为快速且非易失性的,并且可用作通用存储器池以供处理和存储。
存储器子***(例如,110)的控制器(例如,115)可运行固件以响应于来自处理装置118的通信而执行操作。一般来说,固件是一种提供工程化计算装置的控制、监测和数据操纵的计算机程序类型。
涉及控制器115的操作的一些实施例可使用由例如控制器115的固件之类的控制器115执行的计算机指令来实施。在一些情况下,硬件电路可用于实施功能中的至少一些。固件可最初存储在非易失性存储媒体或另一非易失性装置中,并且加载到易失性DRAM和/或处理器内高速缓存存储器中以供控制器115执行。
非暂时性计算机存储媒体可用于存储存储器子***(例如,110)的固件的指令。当指令由控制器115和/或处理装置117执行时,所述指令使得控制器115和/或处理装置117执行上文所论述的方法。
图7示出了计算机***500的实例机器,在所述实例机器内可执行用于使得机器执行本文所论述的方法中的任何一或多种的指令集。在一些实施例中,计算机***500可对应于主机***(例如,图1的主机***120),所述主机***包含、耦合到或使用存储器子***(例如,图1的存储器子***110)或可用以执行动态数据放置器113的操作(例如,执行指令以执行对应于参考图1-5描述的动态数据放置器113的操作)。在替代性实施例中,机器可连接(例如联网)到LAN、内联网、外联网和/或互联网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中的服务器或客户端机器的容量中进行操作。
机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络器具、服务器、网络路由器、交换机或桥接桥,或能够(依序或以其它方式)执行指定将由所述机器采取的动作的指令集的任何机器。此外,虽然示出了单个机器,但还应认为术语“机器”包含单独地或共同地执行一组(或多组)指令以执行本文所论述的方法中的任何一种或多种的机器的任何集合。
实例计算机***500包含处理装置502、主存储器504(例如,只读存储器(ROM)、闪存存储器、动态随机存取存储器(DRAM)例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态随机存取存储器(SRAM)等),以及数据存储***518,其经由总线530(其可包含多个总线)彼此通信。
处理装置502表示一或多个通用处理装置,例如微处理器、中央处理单元等。更具体地说,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置502也可以是一或多个专用处理装置,如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置502被配置成执行指令526,以用于执行本文中所论述的操作和步骤。计算机***500可进一步包含用以经由网络520通信的网络接口装置508。
数据存储***518可以包含机器可读存储媒体524(也被称作计算机可读媒体),在所述机器可读存储媒体上存储有一或多组指令526或体现本文中所描述的方法或功能中的任何一或多个的软件。指令526还可以在由计算机***500执行期间完全或至少部分地驻留在主存储器504内和/或处理装置502内,主存储器504和处理装置502也构成机器可读存储媒体。机器可读存储媒体524、数据存储***518和/或主存储器504可对应于图1的存储器子***110。
在一个实施例中,指令526包含用以实施对应于动态数据放置器113(例如,参看图1-5所描述的动态数据放置器113)的功能的指令。虽然在实例实施例中将机器可读存储媒体524展示为单个媒体,但术语“机器可读存储媒体”应被认为包含存储指令的一或多个集合的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的一组指令并且使机器执行本公开的方法中的任何一种或多种的任何媒体。因此,术语“机器可读存储媒体”应被认为包含但不限于固态存储器、光学媒体和磁性媒体。
已依据计算机存储器内的数据位的操作的算法和符号表示呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用于将其工作的主旨最有效地传达给本领域的其它技术人员的方式。算法在这里并且通常被认为是引起所需结果的操作的自洽序列。操作是需要物理量的物理操纵的那些操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操控的电或磁信号的形式。有时,主要出于通用的原因,已经证明将这些信号称为位、值、元件、符号、字符、术语、数目或类似物是方便的。
然而,应牢记,所有这些和类似术语应与适当物理量相关联,并且仅是应用于这些量的方便标记。本公开可涉及将计算机***的寄存器和存储器内的表示为物理(电子)量的数据操纵和变换为计算机***存储器或寄存器或其它此类信息存储***内的类似地表示为物理量的其它数据的计算机***或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文中的操作的设备。此设备可出于预期目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可以存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、CD-ROM和磁性光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,它们各自耦合到计算机***总线。
本文中呈现的算法和显示本质上并不与任何特定计算机或其它设备相关。各种通用***可与根据本文中的教示的程序一起使用,或其可证明构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现多种这些***的结构。另外,不参考任何特定编程语言来描述本公开。将了解,可使用多种编程语言来实施如本文中所描述的本公开的教示。
本公开可以提供为计算机程序产品或软件,其可以包含在其上存储有可以用于编程计算机***(或其它电子装置)以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器装置等。
在本说明书中,各种功能和操作描述为由计算机指令执行或由计算机指令引起以简化描述。然而,所属领域的技术人员将认识到,此类表达的意图是所述功能源自由一或多个控制器或处理器(例如微处理器)执行计算机指令。替代地或组合地,所述功能和操作可使用具有或不具有软件指令的专用电路***实施,例如使用专用集成电路(ASIC)或现场可编程门阵列(FPGA)来实施。可使用并无软件指令的固线式电路或结合软件指令实施实施例。因此,技术不限于硬件电路和软件的任何特定组合,也不限于由数据处理***执行的指令的任何特定来源。
在前述说明书中,已参考其具体实例实施例描述了本公开的实施例。将显而易见的是,可以在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本发明进行各种修改。因此,说明书和图式应被视为说明性的而非限制性的。
Claims (20)
1.一种方法,其包括:
在存储器子***中接收多个写入命令流;
标识所述存储器子***中的多个媒体单元,其中所述多个媒体单元可用于并发写入来自多个流的数据;
从所述多个流选择第一命令以并发执行所述多个媒体单元;
响应于来自被选择用于并发执行所述多个媒体单元的多个写入流的所述第一命令,动态地产生和存储媒体布局的一部分,所述一部分将:
从在逻辑地址空间中由来自所述多个写入流的所述第一命令标识的逻辑地址映射
到所述多个媒体单元中的存储器单元的物理地址;并且
通过根据所述物理地址将数据存储到所述存储器单元中来并发执行所述第一命令。
2.根据权利要求1所述的方法,其中所述多个写入命令流被配置成分别在所述存储器子***中写入多个擦除块集合中的数据。
3.根据权利要求2所述的方法,其中所述多个写入命令流中的每一个被标记以将数据作为群组存储在所述擦除块集合中的相应一个擦除块集合中。
4.根据权利要求3所述的方法,其中所述逻辑地址空间被限定在所述存储器子***的命名空间中;所述命名空间被配置成具有多个区;所述多个流中的每个相应流被配置成在逻辑地址空间中循序地写入数据;并且所述每个相应流被配置成写入在所述多个区中的一个区中。
5.根据权利要求4所述的方法,其中所述命名空间中的每个相应区禁止所述逻辑地址空间中的非循序写入操作;并且所述命名空间中的所述每个相应区允许所述逻辑地址空间中的随机读取操作。
6.根据权利要求3所述的方法,其中基于位于存储器单元的单独集成电路裸片来标识所述多个媒体单元中的每个媒体单元。
7.根据权利要求6所述的方法,其中所述媒体布局的所述一部分包含所述命名空间中的逻辑块寻址LBA地址与单独集成电路裸片中的NAND存储器的块之间的映射。
8.一种存储指令的非暂时性计算机存储媒体,所述指令当在存储器子***中执行时使得所述存储器子***执行方法,所述方法包括:
在所述存储器子***中接收多个写入命令流;
标识所述存储器子***中的多个媒体单元,其中所述多个媒体单元可用于并发写入数据;
从多个写入流选择第一命令以并发执行所述多个媒体单元;
响应于被选择用于并发执行所述多个媒体单元的所述第一命令,动态地产生和存储媒体布局的一部分,所述一部分将:
从在逻辑地址空间中由来自所述多个写入流的所述第一命令标识的逻辑地址映射
到所述多个媒体单元中的存储器单元的物理地址;并且
通过根据所述物理地址将数据存储到所述存储器单元中来并发执行所述第一命令。
9.根据权利要求8所述的非暂时性计算机存储媒体,其中所述多个写入命令流被配置成分别在所述存储器子***中写入多个擦除块集合中的数据。
10.根据权利要求9所述的非暂时性计算机存储媒体,其中所述多个写入命令流中的每一个被标记以将数据作为群组存储在所述擦除块集合中的相应一个擦除块集合中。
11.根据权利要求10所述的非暂时性计算机存储媒体,其中所述逻辑地址空间被限定在所述存储器子***的命名空间中;所述命名空间被配置成具有多个区;并且所述每个相应流被配置成写入在所述多个区中的一个区中。
12.根据权利要求11所述的非暂时性计算机存储媒体,其中所述命名空间中的每个相应区禁止所述逻辑地址空间中的非循序写入操作;并且所述命名空间中的所述每个相应区允许所述逻辑地址空间中的随机读取操作。
13.根据权利要求10所述的非暂时性计算机存储媒体,其中基于位于存储器单元的单独集成电路裸片来标识所述多个媒体单元中的每个媒体单元。
14.根据权利要求13所述的非暂时性计算机存储媒体,其中所述媒体布局的所述一部分包含所述命名空间中的逻辑块寻址LBA地址与单独集成电路裸片中的NAND存储器的块之间的映射。
15.一种存储器子***,其包括:
多个媒体单元,其能够并发写入数据;以及
至少一个处理装置,其被配置成:
接收多个写入命令流;
标识所述多个媒体单元当中的一或多个第一媒体单元,其中所述一或多个第一媒体单元当前可用于与所述多个媒体单元当中的一或多个第二媒体单元并发写入数据,其中所述一或多个第二媒体单元正在进行写入数据;
从所述多个流选择一或多个第一命令以与在所述一或多个第二媒体单元中进行的一或多个第二命令并发执行;
响应于被选择用于并发执行的所述一或多个第一命令,动态地产生和存储媒体布局的一部分,所述一部分从由所述逻辑地址空间中的所述一或多个第一命令标识的逻辑地址映射到所述一或多个第一媒体单元中的存储器单元的物理地址;并且
通过根据所述物理地址将数据存储到所述存储器单元中来并发与所述一或多个第二媒体单元中进行的所述一或多个第二命令并发执行所述一或多个第一命令。
16.根据权利要求15所述的存储器子***,其中所述多个写入命令流被配置成分别在所述存储器子***中写入多个擦除块集合中的数据;并且所述多个写入命令流中的每一个被标记以将数据作为群组存储在所述擦除块集合中的相应一个擦除块集合中。
17.根据权利要求16所述的存储器子***,其中所述逻辑地址空间被限定在所述存储器子***的命名空间中;所述命名空间被配置成具有多个区;并且所述每个相应流被配置成写入在所述多个区中的一个区中。
18.根据权利要求17所述的存储器子***,其中所述命名空间中的每个相应区禁止所述逻辑地址空间中的非循序写入操作;并且所述命名空间中的所述每个相应区允许所述逻辑地址空间中的随机读取操作。
19.根据权利要求16所述的存储器子***,其中基于位于存储器单元的单独集成电路裸片来标识所述多个媒体单元中的每个媒体单元。
20.根据权利要求19所述的存储器子***,其中所述媒体布局的所述一部分包含所述命名空间中的逻辑块寻址LBA地址与单独集成电路裸片中的NAND存储器的块之间的映射。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962844054P | 2019-05-06 | 2019-05-06 | |
US62/844,054 | 2019-05-06 | ||
US16/865,243 US11113006B2 (en) | 2019-05-06 | 2020-05-01 | Dynamic data placement for collision avoidance among concurrent write streams |
US16/865,243 | 2020-05-01 | ||
PCT/US2020/031475 WO2020227293A1 (en) | 2019-05-06 | 2020-05-05 | Dynamic data placement for collision avoidance among concurrent write streams |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113785278A true CN113785278A (zh) | 2021-12-10 |
CN113785278B CN113785278B (zh) | 2024-06-18 |
Family
ID=73047120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080033254.7A Active CN113785278B (zh) | 2019-05-06 | 2020-05-05 | 用于避免并发写入流之间冲突的动态数据放置 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11113006B2 (zh) |
CN (1) | CN113785278B (zh) |
WO (1) | WO2020227293A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11113006B2 (en) | 2019-05-06 | 2021-09-07 | Micron Technology, Inc. | Dynamic data placement for collision avoidance among concurrent write streams |
US11899576B2 (en) * | 2019-06-11 | 2024-02-13 | Micron Technology, Inc. | Dynamically modifying garbage collection rates for a memory subsystem in a closed-loop system |
US11137938B1 (en) | 2020-04-30 | 2021-10-05 | Micron Technology, Inc. | Converting a multi-plane write operation into multiple single plane write operations performed in parallel on a multi-plane memory device |
US11137920B1 (en) | 2020-04-30 | 2021-10-05 | Micron Technology, Inc. | Storing zones in a zone namespace on separate planes of a multi-plane memory device |
US11537305B1 (en) | 2021-06-03 | 2022-12-27 | Western Digital Technologies, Inc. | Dissimilar write prioritization in ZNS devices |
US11537303B1 (en) | 2021-06-03 | 2022-12-27 | Western Digital Technologies, Inc. | Dissimilar write prioritization in ZNS devices |
US11880604B2 (en) | 2022-05-12 | 2024-01-23 | Western Digital Technologies, Inc. | Read fused groups with uniform resource allocation |
US11941273B2 (en) | 2022-05-12 | 2024-03-26 | Western Digital Technologies, Inc. | Variable capacity Zone Namespace (ZNS) flash storage data path |
US11922036B2 (en) | 2022-05-12 | 2024-03-05 | Western Digital Technologies, Inc. | Host data stream assignment with space-leveling across storage block containers |
US20240061587A1 (en) * | 2022-08-22 | 2024-02-22 | Micron Technology, Inc. | Zone write operation techniques |
US20240168683A1 (en) * | 2022-11-22 | 2024-05-23 | Western Digital Technologies, Inc. | Folding Zone Management Optimization in Storage Device |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150186270A1 (en) * | 2013-12-30 | 2015-07-02 | Sandisk Technologies Inc. | Non-volatile memory and method with adaptive logical groups |
CN104885062A (zh) * | 2012-12-10 | 2015-09-02 | 谷歌公司 | 使用逻辑到物理映射以与数据存储装置进行直接用户空间通信 |
US20160048343A1 (en) * | 2014-08-15 | 2016-02-18 | Micron Technology, Inc. | Apparatuses and methods for concurrently accessing different memory planes of a memory |
CN109213423A (zh) * | 2017-06-30 | 2019-01-15 | 北京忆恒创源科技有限公司 | 基于地址屏障无锁处理并发io命令 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7836435B2 (en) | 2006-03-31 | 2010-11-16 | Intel Corporation | Checking for memory access collisions in a multi-processor architecture |
US8032724B1 (en) * | 2007-04-04 | 2011-10-04 | Marvell International Ltd. | Demand-driven opportunistic garbage collection in memory components |
US9354887B2 (en) * | 2010-06-28 | 2016-05-31 | International Business Machines Corporation | Instruction buffer bypass of target instruction in response to partial flush |
US8699277B2 (en) | 2011-11-16 | 2014-04-15 | Qualcomm Incorporated | Memory configured to provide simultaneous read/write access to multiple banks |
US9135192B2 (en) | 2012-03-30 | 2015-09-15 | Sandisk Technologies Inc. | Memory system with command queue reordering |
US9323657B1 (en) * | 2014-12-30 | 2016-04-26 | Sandisk Technologies Inc. | Memory system and method for improving read latency of a high-priority partition |
US10338842B2 (en) | 2017-05-19 | 2019-07-02 | Samsung Electronics Co., Ltd. | Namespace/stream management |
KR102398186B1 (ko) * | 2017-07-03 | 2022-05-17 | 삼성전자주식회사 | 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법 |
US11113006B2 (en) | 2019-05-06 | 2021-09-07 | Micron Technology, Inc. | Dynamic data placement for collision avoidance among concurrent write streams |
-
2020
- 2020-05-01 US US16/865,243 patent/US11113006B2/en active Active
- 2020-05-05 WO PCT/US2020/031475 patent/WO2020227293A1/en active Application Filing
- 2020-05-05 CN CN202080033254.7A patent/CN113785278B/zh active Active
-
2021
- 2021-08-11 US US17/399,400 patent/US11573742B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104885062A (zh) * | 2012-12-10 | 2015-09-02 | 谷歌公司 | 使用逻辑到物理映射以与数据存储装置进行直接用户空间通信 |
US20150186270A1 (en) * | 2013-12-30 | 2015-07-02 | Sandisk Technologies Inc. | Non-volatile memory and method with adaptive logical groups |
US20160048343A1 (en) * | 2014-08-15 | 2016-02-18 | Micron Technology, Inc. | Apparatuses and methods for concurrently accessing different memory planes of a memory |
CN109213423A (zh) * | 2017-06-30 | 2019-01-15 | 北京忆恒创源科技有限公司 | 基于地址屏障无锁处理并发io命令 |
Non-Patent Citations (1)
Title |
---|
秦兴;刘纯悦;: "二维寻址与数据置换嵌入的多媒体存储体系", 计算机工程与应用, no. 07 * |
Also Published As
Publication number | Publication date |
---|---|
US20200356306A1 (en) | 2020-11-12 |
WO2020227293A1 (en) | 2020-11-12 |
CN113785278B (zh) | 2024-06-18 |
US11573742B2 (en) | 2023-02-07 |
US11113006B2 (en) | 2021-09-07 |
US20210373812A1 (en) | 2021-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113785278B (zh) | 用于避免并发写入流之间冲突的动态数据放置 | |
CN113795820B (zh) | 主机***与存储器子***之间的输入/输出大小控制 | |
US11487666B2 (en) | Timed data transfer between a host system and a memory sub-system | |
US11269552B2 (en) | Multi-pass data programming in a memory sub-system having multiple dies and planes | |
US20220300428A1 (en) | Management of Programming Mode Transitions to Accommodate a Constant Size of Data Transfer between a Host System and a Memory Sub-System | |
US20240036768A1 (en) | Partial Execution of a Write Command from a Host System | |
CN113590023A (zh) | 在多平面存储器装置的单独平面上存储区名称空间中的区 | |
CN115552531A (zh) | 共享字线上的存储器存取冲突管理 | |
CN115757208A (zh) | 程序暂停协议期间改进的存储器性能 | |
CN117836751A (zh) | 使用存储器装置中的存储器存取命令队列提高存储器性能 | |
CN113590022A (zh) | 用于存储器装置的***和方法 | |
CN113918479A (zh) | 并行独立线程的低位密度存储器高速缓存 | |
US12050809B2 (en) | Multi-pass data programming in a memory sub-system having multiple dies and planes | |
US12045168B2 (en) | Timed data transfer between a host system and a memory sub-system | |
CN113094293B (zh) | 存储器***及相关方法和计算机可读存储介质 | |
CN113495695B (zh) | 用于存取命令的高速缓存标识符 | |
CN114442921A (zh) | 用于存储器子***中的高速缓存读取的高速缓存释放命令 | |
CN113253917A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |