CN114064515A - 具有任意传输长度的ssd管理的主机写入原子性 - Google Patents
具有任意传输长度的ssd管理的主机写入原子性 Download PDFInfo
- Publication number
- CN114064515A CN114064515A CN202110759826.6A CN202110759826A CN114064515A CN 114064515 A CN114064515 A CN 114064515A CN 202110759826 A CN202110759826 A CN 202110759826A CN 114064515 A CN114064515 A CN 114064515A
- Authority
- CN
- China
- Prior art keywords
- volatile memory
- persistent storage
- write data
- memory buffer
- logic
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/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
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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
- G06F13/1673—Details of memory controller using buffers
-
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid 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/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/7203—Temporary 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)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
电子装置的实施例可以包括:一个或多个衬底;以及耦合到一个或多个衬底的逻辑,该逻辑用于:控制对具有第一类型的介质的主要持久存储装置和具有第二类型的介质的非易失性存储器缓冲器的访问,第二类型的介质不同于第一类型的介质;将用于传入写入数据的元数据存储在非易失性存储器缓冲器中;将用于传入写入数据的其他数据存储在主要持久存储装置中;以及为传入写入数据提供运行时原子性和功率故障写入原子性两者。公开并要求保护其他实施例。
Description
背景技术
存储设备可能具有各种规格,包括性能规格、热规格和可靠性/耐用性规格。性能规格包括诸如每秒输入/输出操作(IOPS)、吞吐量/带宽和延时之类的标准。可靠性/耐用性规格包括诸如每天的驱动器写入、编程/擦除周期、平均故障间隔时间和数据保持之类的标准。存储设备上的功率故障写入原子性指定在写入操作期间发生功率故障的场景中,针对命令的数据要么被完全写入要么根本不被写入。
附图说明
在附图中通过示例而非限制的方式说明了本文描述的材料。为了说明的简单和清楚起见,图中示出的元素不一定按比例绘制。例如,为了清楚起见,一些元素的大小可以相对于其他元素被夸大。此外,在认为合适的情况下,已经在图中重复了附图标记以指示对应或类似的元素。在附图中:
图1是根据实施例的电子***的示例的框图;
图2是根据实施例的电子装置的示例的框图;
图3A至图3C是根据实施例的控制存储装置的方法的示例的流程图;
图4是根据实施例的非易失性存储器缓冲器的示例的框图;
图5是根据实施例的主机写入分派流程的示例的流程图;
图6是根据实施例的NAND写入流程的示例的流程图;
图7A至图7F是根据实施例的主机写入元数据项及其对应的NAND地址项的示例的说明图;
图8是根据实施例的计算***的另一示例的框图;以及
图9是根据实施例的固态驱动器(SSD)设备的示例的框图。
具体实施方式
现在参考附图描述一个或多个实施例或实现方式。虽然讨论了特定的配置和布置,但应该理解的是,这只是出于说明的目的进行的。相关领域的技术人员将认识到,在不脱离描述的精神和范围的情况下可以采用其他配置和布置。对于相关领域的技术人员将显而易见的是,也可以在除了本文描述的***和应用之外的各种其他***和应用中采用本文描述的技术和/或布置。
虽然以下描述阐述了可以在诸如片上***(SoC)架构之类的架构中表明的各种实现方式,但本文描述的技术和/或布置的实现方式不限于特定架构和/或计算***,并且可以由任何架构和/或计算***出于类似的目的实现。例如,采用例如多个集成电路(IC)芯片和/或封装、和/或各种计算设备和/或消费者电子(CE)设备(例如,机顶盒、智能电话等)的各种架构可以实现本文描述的技术和/或布置。此外,虽然以下描述可以阐述若干具体细节(例如,逻辑实现方式、***组件的类型和相互关系、逻辑分区/集成选择等),但可以在没有这些具体细节的情况下实践要求保护的主题。在其他实例中,可能没有详细示出一些材料(例如,控制结构和完整软件指令序列),以免模糊本文公开的材料。
本文公开的材料可以以硬件、固件、软件或其任何组合来实现。本文公开的材料也可以实现为存储在机器可读介质上的指令,其可以由一个或多个处理器读取和执行。机器可读介质可以包括用于存储或发送以机器(例如,计算设备)可读的形式的信息的任何介质和/或机制。例如,机器可读介质可以包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;闪速存储器设备;电、光、声或其他形式的传播信号(例如,载波、红外信号、数字信号等)以及其他介质。
说明书中对“一种实现方式”、“实现方式”、“示例实现方式”等的引用指示所描述的实现方式可以包括特定特征、结构或特性,但每个实施例可能不一定包括该特定特征、结构或特性。此外,这样的短语不一定指代相同的实现方式。此外,当结合实施例描述特定特征、结构或特性时,认为结合其他实现方式(无论其是否在本文明确描述)来实现这种特征、结构或特性是在本领域技术人员的知识范围内的。
本文描述的各种实施例可以包括存储器组件和/或到存储器组件的接口。这种存储器组件可以包括易失性和/或非易失性(NV)存储器。易失性存储器可以是要求电力来维持由该介质存储的数据的状态的存储介质。易失性存储器的非限制性示例可以包括各种类型的随机存取存储器(RAM),例如,动态RAM(DRAM)或静态RAM(SRAM)。可以在存储器模块中使用的一种特定类型的DRAM是同步动态RAM(SDRAM)。在特定实施例中,存储器组件的DRAM可以符合由联合电子器件工程委员会(JEDEC)颁布的标准,例如,用于双倍数据速率(DDR)SDRAM的JESD79F、用于DDR2 SDRAM的JESD79-2F、用于DDR3 SDRAM的JESD79-3F、用于DDR4SDRAM的JESD79-4A、用于低功率DDR(LPDDR)的JESD209、用于LPDDR2的JESD209-2、用于LPDDR3的JESD209-3和用于LPDDR4的JESD209-4(这些标准可在jedec.org处获得)。这样的标准(和类似的标准)可以被称为基于DDR的标准,并且实现这样的标准的存储设备的通信接口可以被称为基于DDR的接口。
NV存储器(NVM)可以是不要求电力来维持由该介质存储的数据的状态的存储介质。在一个实施例中,存储器设备可以包括块可寻址存储器设备,例如,基于NAND或NOR技术的那些存储器设备。存储器设备还可以包括下一代非易失性设备,例如,三维(3D)交叉点存储器设备,或其他字节可寻址就地写入非易失性存储器设备。在一个实施例中,存储器设备可以是或可以包括使用硫族化物玻璃的存储器设备、多阈值级别NAND闪速存储器、NOR闪速存储器、单级或多级相变存储器(PCM)、电阻式存储器、纳米线存储器、铁电晶体管RAM(FeTRAM)、反铁电存储器、结合忆阻器技术的磁阻RAM(MRAM)、包括金属氧化物基底的电阻式存储器、氧空位基和导电桥RAM(CB-RAM)或自旋转移矩(STT)-MRAM、基于自旋电子磁性结存储器的设备、基于磁性隧道结(MTJ)的设备、基于DW(畴壁)和SOT(自旋轨道转移)的设备、基于晶闸管的存储器设备或上述存储器中的任何存储器的组合或其他存储器。存储器设备可以指代管芯本身和/或指代封装的存储器产品。在特定实施例中,具有非易失性存储器的存储器组件可以符合由JEDEC颁布的一个或多个标准,例如,JESD218、JESD219、JESD220-1、JESD223B、JESD223-1或其他合适的标准(本文引述的JEDEC标准可在jedec.org处获得)。
参考图1,电子存储***10的实施例可以包括控制器11,该控制器11通信地耦合到具有第一类型的介质的主要持久存储装置12a和具有第二类型的介质的NVM缓冲器12b,第二类型的介质不同于第一类型的介质。例如,第一类型的介质可以包括NAND介质,而第二类型的介质可以包括电池或电容器备份的易失性存储器(例如,DRAM、SRAM等)或3D交叉点存储器(例如,INTEL OPTANE技术)。控制器11可以包括用于以下的逻辑13:将用于传入写入数据的元数据存储在NVM缓冲器12b中;将用于传入写入数据的其他数据存储在主要持久存储装置12a中;以及为传入写入数据提供运行时原子性和功率故障写入原子性两者。例如,指定的保证功率故障写入原子性可以标称地大到高达指定的最大数据传输大小(MDTS)。在一些实施例中,逻辑13可以被配置为将用于传入写入数据的元数据存储在NVM缓冲器12b的第一池中,并且将用于传入写入数据的主要持久存储装置地址存储在NVM缓冲器12b的第二池中。例如,逻辑13还可以被配置为维护用于NVM缓冲器12b的第一池和第二池中的每个池的两个或更多个队列,以及构建在NVM缓冲器12b的第二池中的用于传入写入数据的主要持久存储装置地址项的链表。
在一些实施例中,逻辑13还可以被配置为基于被存储在第一池中的元数据以及主要持久存储装置地址项的链表,在用于传入写入的完整写入信息可用之后原子地更新逻辑到物理(L2P)间接表中的多个条目。例如,逻辑13还可以可选地被配置为针对传入,与其他传入写入数据分开地对L2P间接表的更新进行排序。在从功率故障恢复的事件中,逻辑13可以被配置为丢弃在NVM缓冲器12b中的元数据和在主要持久存储装置12a中的其他数据,而不基于NVM缓冲器中的指示符(例如,主机写入项标志)来更新L2P间接表。在本文的实施例中的任何实施例中,主要持久存储装置12a和NVM缓冲器12b可以是固态驱动器(SSD)的一部分。
上述控制器11、主要持久存储装置12a、NVM缓冲器12b、逻辑13和其他***组件中的每一个的实施例可以以硬件、软件或其任何合适的组合来实现。例如,硬件实现方式可以包括可配置逻辑(例如,可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD))或使用电路技术(例如,专用集成电路(ASIC)技术、互补金属氧化物半导体(CMOS)技术或晶体管-晶体管逻辑(TTL)技术或其任何组合)的固定功能逻辑硬件。控制器11的实施例可以包括通用控制器、专用控制器、存储装置控制器、存储器控制器、微控制器、通用处理器、专用处理器、中央处理器单元(CPU)、执行单元等。在一些实施例中,主要持久存储装置12a、NVM缓冲器12b、逻辑13和/或其他***存储器可以位于各种组件(包括控制器11)中,或与各种组件共置一处(例如,在同一管芯上)。
可替代地或另外地,这些组件的全部或部分可以在一个或多个模块中被实现为存储在机器可读存储介质或计算机可读存储介质(例如,随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、固件、闪速存储器等)中的逻辑指令集,以由处理器或计算设备执行。例如,用于执行组件的操作的计算机程序代码可以用一种或多种操作***(OS)适用/适当的编程语言的任何组合编写,这些编程语言包括面向对象的编程语言(例如,PYTHON、PERL、JAVA、SMALLTALK、C++、C#等)以及常规的过程编程语言(例如,“C”编程语言或类似的编程语言)。例如,持久存储介质12a、其他持久存储介质或其他***存储器可以存储指令集,该指令集当由控制器11执行时,使得***10实现***10的一个或多个组件、特征或方面(例如,逻辑13将用于传入写入数据的元数据存储在NVM缓冲器12b中、将用于传入写入数据的其他数据存储在主要持久存储装置12a中、为传入写入数据提供运行时原子性和功率故障写入原子性两者等等)。
现在转向图2,电子装置15的实施例可以包括一个或多个衬底16,以及耦合到一个或多个衬底16的逻辑17。逻辑17可以被配置为:控制对具有第一类型的介质的主要持久存储装置和具有第二类型的介质的NVM缓冲器的访问,第二类型的介质不同于第一类型的介质;将用于传入写入数据的元数据存储在NVM缓冲器中;将用于传入写入数据的其他数据存储在主要持久存储装置中;以及为传入写入数据提供运行时原子性和功率故障写入原子性两者。例如,指定的保证功率故障写入原子性可以标称地大到高达指定的MDTS。在一些实施例中,逻辑17可以被配置为将用于传入写入数据的元数据存储在NVM缓冲器的第一池中,并且将用于传入写入数据的主要持久存储装置地址存储在NVM缓冲器的第二池中。例如,逻辑17还可以被配置为维护用于NVM缓冲器的第一池和第二池中的每个池的两个或更多个队列,以及构建在NVM缓冲器的第二池中的用于传入写入数据的主要持久存储装置地址项的链表。
在一些实施例中,逻辑17还可以被配置为基于被存储在第一池中的元数据以及主要持久存储装置地址项的链表,在用于传入写入的完整写入信息可用之后原子地更新L2P间接表中的多个条目。例如,逻辑17还可以可选地被配置为针对传入,与其他传入写入数据分开地对L2P间接表的更新进行排序。在从功率故障恢复的事件中,逻辑17可以被配置为丢弃在NVM缓冲器中的元数据和在主要持久存储装置中的其他数据,而不基于NVM缓冲器中的指示符来更新L2P间接表。在本文的实施例中的任何实施例中,主要持久存储装置和NVM缓冲器可以是SSD的一部分。
逻辑17的实施例可以在***、装置、计算机、设备等(例如,本文描述的那些)中实现。更具体地,逻辑17的硬件实现方式可以包括可配置逻辑(例如,PLA、FPGA、CPLD),或在使用电路技术(例如,ASIC技术、CMOS技术或TTL技术或其任何组合)的固定功能逻辑硬件中。可替代地或另外地,逻辑17可以在一个或多个模块中被实现为存储在机器可读存储介质或计算机可读存储介质(例如,RAM、ROM、PROM、固件、闪速存储器等)中的逻辑指令集,以由处理器或计算设备执行。例如,用于执行组件的操作的计算机程序代码可以用一种或多种OS适用/适当的编程语言的任何组合编写,这些编程语言包括面向对象的编程语言(例如,PYTHON、PERL、JAVA、SMALLTALK、C++、C#等)以及常规的过程编程语言(例如,“C”编程语言或类似的编程语言)。
例如,逻辑17可以在半导体器件上实现,该半导体器件可以包括一个或多个衬底16,其中逻辑17耦合到一个或多个衬底16。在一些实施例中,可以至少部分地以(多个)半导体衬底(例如,硅、蓝宝石、砷化镓等)上的可配置逻辑和固定功能硬件逻辑中的一个或多个来实现逻辑17。例如,逻辑17可以包括耦合到(多个)衬底16的晶体管阵列和/或其他集成电路组件,其中晶体管沟道区域被定位在(多个)衬底16内。在逻辑17与(多个)衬底16之间的接口可能不是突变结。逻辑17也可以被认为包括在(多个)衬底16的初始晶片上生长的外延层。
现在转到图3A至图3C,控制存储装置的方法20的实施例可以包括:在框21处,控制对具有第一类型的介质的主要持久存储装置和具有第二类型的介质的NVM缓冲器的访问,第二类型的介质不同于第一类型的介质;在框22处,将用于传入写入数据的元数据存储在NVM缓冲器中;在框23处,将用于传入写入数据的其他数据存储在主要持久存储装置中;以及在框24处,为传入写入数据提供运行时原子性和功率故障写入原子性两者。例如,指定的保证功率故障写入原子性可以标称地大到高达指定的MDTS。方法20的一些实施例还可以包括:在框25处,将用于传入写入数据的元数据存储在NVM缓冲器的第一池中;以及在框26处,将用于传入写入数据的主要持久存储装置地址存储在NVM缓冲器的第二池中。例如,方法20可以包括:在框27处,维护用于NVM缓冲器的第一池和第二池中的每个池的两个或更多个队列;以及在框28处,构建在NVM缓冲器的第二池中的用于传入写入数据的主要持久存储装置地址项的链表。
在一些实施例中,方法20还可以可选地包括:在框29处,基于被存储在第一池中的元数据以及主要持久存储装置地址项的链表,在用于传入写入的完整写入信息可用之后原子地更新L2P间接表中的多个条目(例如,可能不要求自动地更新L2P表中多个条目,因为数据可能存储在对于重播是PLI安全的NVM缓冲器的第二池中)。方法20的一些实施例还可以可选地包括:在框30处,针对传入,与其他传入写入数据分开地对L2P间接表的更新进行排序(例如,在一些实施例中,更新可以替代地是乱序的);和/或在框31处,在从功率故障恢复的事件中,丢弃在NVM缓冲器中的元数据和在主要持久存储装置中的其他数据,而不基于NVM缓冲器中的指示符来更新L2P间接表。在本文的实施例中的任何实施例中,在框32处,主要持久存储装置和NVM缓冲器可以是SSD的一部分。
方法20的实施例可以在***、装置、计算机、设备等(例如,本文描述的那些)中实现。更具体地,方法20的硬件实现方式可以包括可配置逻辑(例如,PLA、FPGA、CPLD),或在使用电路技术(例如,ASIC技术、CMOS技术或TTL技术或其任何组合)的固定功能逻辑硬件中。可替代地或另外地,方法20可以在一个或多个模块中被实现为存储在机器可读存储介质或计算机可读存储介质(例如,RAM、ROM、PROM、固件、闪速存储器等)中的逻辑指令集,以由处理器或计算设备执行。例如,用于执行组件的操作的计算机程序代码可以用一种或多种OS适用/适当的编程语言的任何组合编写,这些编程语言包括面向对象的编程语言(例如,PYTHON、PERL、JAVA、SMALLTALK、C++、C#等)以及常规的过程编程语言(例如,“C”编程语言或类似的编程语言)。
例如,方法20可以在计算机可读介质上实现。方法20的实施例或部分可以以固件、应用(例如,通过应用编程接口(API))或在操作***(OS)上运行的驱动程序软件实现。另外地,逻辑指令可以包括汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微码、状态设置数据、用于集成电路的配置数据、使电子电路个性化的状态信息和/或对硬件而言在本地的其他结构组件(例如,主机处理器、中央处理单元/CPU、微控制器等)。
一些实施例可以有利地提供用于具有任意传输长度的SSD管理的主机写入原子性的技术。SSD上的功率故障写入原子性可以指定在写入操作期间发生功率故障的场景中,针对命令的数据要么被完全写入要么根本不被写入。对于NVMe规范(例如,日期为2019年6月10日的版本1.4;www.nmvexpress.org),由NVMe设备向主机报告的各种参数(例如,能力)可以与写入原子性有关。例如,每个命名空间可以指定以下参数中的一个或多个:NAWUPF-保证低于该大小的写入是功率故障原子的;NABO和NABSPF-不要求跨指定偏移长度对边界的写入是原子的;NAWUN和NABSN-指示在正常(例如,非功率故障/运行时)情况下针对重叠写入的原子性要求的对应项;AWUPF和AWUN-指示在控制器级别(例如,跨所有命名空间)的功率故障原子性和正常原子性。NABO字段用于功率故障原子性和“正常”原子性两者。其他存储协议(例如,SATA、SAS等)具有指定存储设备的原子性能力的相应的替代方式。
在常规的存储设备中,传入写入典型地缓冲在高速SRAM缓冲器中以用于执行,并且优化该SRAM使用以控制设备成本是重要的。例如,支持大的原子性(例如,大的AWUPF、NAWUPF、AWUN和NAWUN参数值)虽然有利于性能,但成本可能过高。支持具有任意传输长度的写入原子性的一些常规的存储设备可以利用大的SRAM缓冲器来临时存储传入写入,直到完整的数据可用为止。写入然后被写入底层非易失性介质。这些存储设备可能还要求高的本地电容,以在缓冲器保存操作期间发生功率故障时能够保存写入。例如,为了在支持128的队列深度的SSD命名空间上支持128千字节(KB)的写入原子性,至少要求16兆字节(MB)的SRAM。增加写入原子性和队列深度能力对相关联的成本的影响呈二次方增加。
一些其他方法可能涉及主机提供存储和/或支持。例如,在日志方法中,可以在主机级别支持具有任意传输长度的原子性。例如,日志文件***首先将主机数据写入设备上的日志。一旦接收到完成,主机数据就被再次写入最终目的地。该方法的缺点在于它使写入设备的数据的量加倍。另一种主机级别方法包括减少写入粒度和主机跟踪。主机将主机传输长度分为更小的(例如,4KB)块(chunk),并跟踪块中的每一个的完成。该方法的缺点在于软件开销(性能和存储器消耗)和跟踪每个块的完成的复杂度。另一种主机级别方法可以包括事务支持。SSD可以通过让主机指定应该捆绑哪些写入来支持提供跨写入请求的原子性的写入事务。然后,SSD可以自动地处理指定的写入。例如,SSD可以将未完全接收的写入数据放置在NAND介质中,并且只有在SSD内部完全接收到用于事务的写入数据后才更新其L2P间接表。该方法的缺点在于主机必须提供事务信息,这要求从OS一直到想要使用该能力的应用要对软件进行特殊且复杂的改变。该方法也不处理重叠写入的运行时(例如,非功率故障/运行时)原子性。
一些实施例可以克服前述问题中的一个或多个。例如,一些实施例可以提供以下优点中的一个或多个:可扩展且成本高效的技术,具有高达指定的MDTS的标称地大的保证功率故障写入原子性;没有日志技术的主机级别写入放大;没有用于跟踪分块写入的主机侧(例如,软件)改变;没有指定事务所要求的设备-主机协议改变;和/或用于功率故障原子性和运行时原子性两者的原子性技术。
例如,对于NVMe兼容的且基于NAND的SSD的实施例,可以设置能力标志以指定大的或最大的写入原子性和无边界约束。即使传入写入数据不是完全可用的,也可以将其放置在SRAM和NAND介质的组合中(例如,不要求主机指定事务信息)。可以在完整写入信息可用之后更新SSD的L2P间接表。在功率故障处理期间,在主机写入无法完成(例如,如果设备没有大的写入数据)的情况下,则可以丢弃内部缓冲器中的对应的SRAM数据和元数据信息,而不进行L2P更新,并且因此可以用信号通知功率损失恢复(PLR)时间逻辑不使用保存在NAND带(NAND band)中的部分数据。此后,可以释放所有相关联的资源。在本实施例中,对于正常的(例如,非功率故障/运行时)大的写入原子性,当对应的写入的全部数据在SSD内部可用并且已经驻留在NAND上时,SSD可以更新NVM缓冲器的第二池中的多个L2P条目。在一些实施例中,可以对用于不同的大的写入的L2P更新进行排序(例如,而不是混合)。有利地,与常规的SSD相比,一些实施例可以提供大得多的原子性大小,这可以为许多工作负载(包括例如关系数据库、键值(KV)数据库、日志文件***等)提供显著的加速。
参考图4,NVM缓冲器40的管理的实施例可以包括提供主机写入元数据池41和NAND地址池42。池41和池42中的每一个可以包括相应的进程中、就绪和释放队列。NVM缓冲器40可以是SSD内部的相对较小的缓冲器(例如,与存储其他传入写入数据所需要的缓冲器的大小相比)。在一些实施例中,内部NVM缓冲器40可以被实现为持久易失性存储器(例如,电池或电容器备份的DRAM或SRAM)。例如,SSD可以包括利用能量存储电容器的即将发生断电(POWER LOSS IMMINENT,PLI)技术。能量存储电容器可以提供足够的能量(功率)来完成进程中的任何命令,并确保在DRAM/SRAM中的任何数据被提交到非易失性NAND介质。电容器可以用作持久易失性存储器的备用电池。可替代地,可以使用3D交叉点存储器(例如,OPTANE技术)来实现NVM缓冲器40。
如图4中示出的,NVM缓冲器40可以被分为两个存储器池41和42。池41可以用于主机写入的元数据,并且另一池42可以用于对应的主机写入的(多个)NAND地址。在一些实施例中,在每个存储器池41和42中的项目可以具有三种状态(例如,进程中、就绪和释放),并且可以将这些项目分配到对应的队列中。
在一些实施例中,主机写入元数据池中的主机写入元数据项可以具有以下元素:起始逻辑块地址(LBA);传输长度;状态(进程中、就绪或释放);以及指向NAND地址项的指针(例如,该指针指向由该主机写入命令预先分配的NAND地址项的链表的头部)。当主机写入元数据项在就绪队列中时,该项将不会被释放,直到其NAND地址项全部具有有效的NAND地址为止。在一些实施例中,NAND地址池中的NAND地址项可以具有以下元素:NAND地址;在该NAND地址中的起始LBA;状态(进程中、就绪或释放);指向分配该NAND地址项的主机写入元数据项的指针;以及指向由同一主机写入元数据项分配的下一NAND地址项的指针。在NAND地址项在就绪队列中之后,可以在更新L2P间接表之后释放该项目。
示例主机写入流程可以包括主机写入分派任务和主机写入完成任务。参考图5,示例主机写入分派流程50可以在框51处开始。流程50可以包括:在框52处,接收主机写入命令;在框53处,针对接收到的写入命令分配来自NVM缓冲器中的主机写入元数据池的项目;在框54处,基于区段的数量分配来自NVM缓冲器中的NAND地址池的项目,并构建这些项目的链表。然后,流程50可以包括:在框55处,更新主机写入元数据项和(多个)NAND地址项;在框56处,针对主机写入区段分配传输缓冲器和直接存储器访问(DMA)描述符;以及在框57处,分派DMA传输。然后,流程50可以包括:在框58处,确定是否所有区段都被处理,并且如果所有区段都被处理,则在框59处结束。如果在框58处没有处理所有区段,则流程50可以返回到框56。
在一些实施例中,主机写入分派任务可以仅处理在主机存储器与SSD传输缓冲器之间的DMA传输。当数据在传输缓冲器中可用时,不同的任务(例如,NAND写入任务)可以将数据写入NAND介质中。另外地,每个分配的传输缓冲器槽可以包含指向对应的主机写入元数据项的指针,使得当数据被写入介质中时,可以更新预先分配的NAND地址项。
在一些实施例中,主机写入完成任务可以监视每个DMA传输的完成。当主机写入命令的最后一个区段已经写入SSD传输缓冲器时,SSD可以确认主机写入命令完成并将主机写入元数据项的状态更新为就绪,因为即使数据可能尚未被写入介质,传输缓冲器也可以是PLI安全的。
参考图6,NAND写入流程60的实施例可以在框61处开始。流程60可以包括:在框62处,发起NAND写入;在框63处,分配NAND页;在框64处,获得该传输缓冲器槽的主机写入元数据项;在框65处,获得由主机写入元数据项预先分配的下一可用NAND地址项;以及在框66处,利用NAND页地址更新NAND地址项。然后,流程60可以包括:在框67处,确定当前NAND地址项是否是最后一个NAND地址项,并且如果当前NAND地址项不是最后一个NAND地址项,则在框68处执行传输缓冲器到介质的数据传输,并在框69处结束。如果在框67处,当前NAND地址项是最后一个NAND地址项,则流程60可以继续,以在框70处将链表中的所有NAND地址项移动到就绪队列,在框71处释放主机写入元数据项,在框72处更新L2P表,以及在框73处释放(多个)NAND地址项。然后,流程60可以继续以在框68处执行传输缓冲器到介质的数据传输,并在框69处结束。
NAND写入任务可以独立运行,也可以与其他任务(例如,主机写入任务)并行运行。只要传输缓冲器中有足够的数据来分派NAND程序操作,任务就可以变为活动的。在NAND写入期间,将不会在L2P表中直接更新NAND页地址。NAND页地址将首先被保存在预先分配的NAND地址项中。当已经更新了由同一主机写入元数据项分配的所有NAND地址项时,可以释放主机写入元数据项,并且将在L2P表中原子地更新NAND页地址。在L2P更新之后,NAND地址项将被释放。
一些实施例还可以提供冲突处理技术。例如,对于主机读取,如果LBA与主机写入元数据池的就绪队列中的LBA重叠,则可能检测到读取冲突。在这种情况下,在传输缓冲器中的对应的挂起写入可以然后被立即刷新到介质中。在介质写入之后更新L2P表,在这之后将处理主机读取。对于主机写入,可以忽略冲突,因为每个写入是原子地处理的并且将满足有序要求。例如,如果两个挂起写入命令具有4个重叠的区段A、B、C、D,并且线程1处理命令1,并且线程2处理命令2(按时间次序显示):
·线程1利用a1调度区段A的写入;
·线程2利用a2和b2调度区段A和B的写入;
·线程1利用b1、c1、d1调度区段B、C、D的写入;以及
·线程2利用c2和d2调度区段C和D的写入。
将通过使用流程60利用要么(a1,b1,c1,d1)要么(a2,b2,c2,d2)来更新L2P表,(a1,b1,c1,d1)和(a2,b2,c2,d2)两者都是合法状态。
具有可变传输长度的原子性支持示例
在SSD确认写入完成之前发生PLI事件或主机链路故障的情况下,主机写入元数据项处于进程中状态。在随后的上电或主机链路恢复时,SSD可以从NVM缓冲器恢复项目的状态。对于处于进程中状态的任何项目,SSD将释放这些项目以及所有其相关联的NAND地址项,而不进行L2P更新。注意,该主机命令的部分数据可能已经被写入介质,但由于对应的L2P条目仍然指向先前的副本,因此从主机的角度来看,没有数据被写入SSD。
在SSD确认写入完成之后发生PLI事件或主机链路故障的情况下,主机写入元数据项将处于就绪状态。然而,主机写入元数据项的相关联的NAND地址项可能具有不同的状态。在主机链路故障且没有丢失功率的情况下,SSD可以继续进行NAND写入过程(例如,图6中示出的),并在该主机命令的所有数据已经被写入介质之后更新L2P表。在PLI事件的情况下,所有主机数据已经被传输到传输缓冲器,但并非所有主机数据已经被写入NAND介质。在随后的上电时,SSD可以首先从NVM缓冲器恢复所有项目。然后,SSD可以恢复传输缓冲器(其是PLI安全的)中的数据,并继续NAND写入过程(例如,如图6中示出的)。一旦命令的所有数据已经被写入介质,将更新L2P表。
操作流程示例
参考图7A至图7F,主机写入元数据项75和对应的NAND地址项76、77……78的实施例示出了SSD的实施例如何原子地处理128KB主机写入(LBA0-255)。在该示例中,LBA区段大小为512字节(B),并且SSD间接单元(IU)粒度为4KB。每个主机写入元数据项和NAND地址项的存储器占用为32B。
在SSD接收到主机写入命令之后,SSD分配并初始化来自主机写入元数据池的释放队列的主机写入元数据项75(例如,参见图7A)。接下来,SSD分配来自NAND地址池释放队列的32个NAND地址项76、77……78。NAND地址项被初始化为链表(例如,参见图7B)。在NAND地址项已经被初始化之后,SSD将更新主机写入元数据项75,使得项75指向链表的头部(例如,参见图7C)。然后,SSD将分配传输缓冲器(TBUF)空间、在主机与TBUF之间设置和分派DMA传输。当DMA传输的最后一个区段完成时,SSD将主机写入元数据项75的状态改变为就绪(例如,参见图7D)。只要DMA传输的最后一个区段完成,SSD就将向主机确认写入完成。
将使用单独的内核任务将TBUF中的数据乱序写入NAND介质,只要在TBUF中积累了足够的数据,该内核任务就会发出NAND写入。下面的示例示出了当LBA8-15被写入到NAND介质时NAND地址项76的更新后的内容(例如,参见图7E)。注意,这里将不会更新L2P表。当已经更新了链表中的最后一项78(尾部)时,该链表的所有项目的状态将被改变为就绪(例如,参见图7F),L2P表将被更新,并且对应的主机写入元数据项75和NAND地址项76、77……78可以被释放。
可以在各种计算***(例如,包括非移动计算设备(例如,台式计算机、工作站、服务器、机架***等)、移动计算设备(例如,智能电话、平板计算机、超级移动个人计算机(UMPC)、膝上型计算机、超极本计算设备、智能手表、智能眼镜、智能手环等)和/或客户端/边缘设备(例如,物联网(IoT)设备(例如,传感器、相机等))中提供本文讨论的技术。
现在转向图8,计算***100的实施例可以包括一个或多个处理器102-1至102-N(本文一般称为“多个处理器102”或“处理器102”)。处理器102可以经由互连或总线104进行通信。每个处理器102可以包括各种组件,为了清楚起见,仅参考处理器102-1来讨论这些组件中的一些。因此,其余的处理器102-2至102-N中的每一个可以包括参考处理器102-1讨论的相同或相似的组件。
在一些实施例中,处理器102-1可以包括一个或多个处理器核心106-1至106-M(本文称为“多个核心106”,或更一般地称为“核心106”)、高速缓存108(在各种实施例中,其可以是共享高速缓存或私有高速缓存)和/或路由器110。处理器核心106可以在单个集成电路(IC)芯片上实现。此外,芯片可以包括一个或多个共享和/或私有高速缓存(例如,高速缓存108)、总线或互连(例如,总线或互连112)、逻辑170、存储器控制器或其他组件。
在一些实施例中,路由器110可以用于在处理器102-1和/或***100的各个组件之间进行通信。此外,处理器102-1可以包多于一个路由器110。此外,多个路由器110可以进行通信以实现在处理器102-1的内部或外部的各种组件之间的数据路由。
高速缓存108可以存储由处理器102-1的一个或多个组件(例如,核心106)利用的数据(例如,包括指令)。例如,高速缓存108可以本地缓存存储在存储器114中的数据,以供处理器102的组件更快地访问。如图8中示出的,存储器114可以经由互连104与处理器102通信。在一些实施例中,高速缓存108(其可以是共享的)可以具有各种级别,例如,高速缓存108可以是中间级别高速缓存和/或最后一级高速缓存(LLC)。而且,核心106中的每一个可以包括级别1(L1)高速缓存(116-1)(本文一般称为“L1高速缓存116”)。处理器102-1的各种组件可以通过总线(例如,总线112)和/或存储器控制器或中心与高速缓存108直接通信。
如图8中示出的,存储器114可以通过存储器控制器120耦合到***100的其他组件。存储器114可以包括易失性存储器,并且可以互换地称为主存储器或***存储器。即使存储器控制器120被示为耦合在互连104与存储器114之间,存储器控制器120也可以定位在***100中的其他地方。例如,在一些实施例中,存储器控制器120或其部分可以设置在处理器102中的一个内。
***100可以经由网络接口128(例如,该网络接口128经由有线或无线接口与计算机网络和/或云129进行通信)与其他设备/***/网络进行通信。例如,网络接口128可以包括天线(未示出),以无线地(例如,经由电气和电子工程师协会(IEEE)802.11接口(包括IEEE 802.11a/b/g/n/ac等)、蜂窝接口、3G、4G、LTE、蓝牙等)与网络/云129进行通信。
***100还可以包括存储设备,例如,经由SSD控制器逻辑125耦合到互连104的SSD设备130。因此,逻辑125可以控制***100的各个组件对SSD设备130的访问。此外,即使在图8中,逻辑125被示为直接耦合到互连104,但是逻辑125可以可替代地经由存储总线/互连(例如,SATA(串行高级技术附件)总线、***组件互连(PCI)(或PCI快速(PCIe)接口)、NVM快速(NVMe)等)与***100的一个或多个其他组件进行通信(例如,其中存储总线经由某种其他逻辑(如总线桥、芯片组等)耦合到互连104)。另外地,在各种实施例中,逻辑125可以并入存储器控制器逻辑(例如,参考图9讨论的那些)或设置在相同的集成电路(IC)设备上(例如,在与SSD设备130相同的电路板设备上或在与SSD设备130相同的壳体中)。
此外,逻辑125和/或SSD设备130可以耦合到一个或多个传感器(未示出)以接收(例如,以一个或多个位或信号的形式的)信息,从而指示由一个或多个传感器检测到的状态或值。这些传感器可以被设置为接近***100(或本文讨论的其他计算***)的组件(包括核心106、互连104或112、处理器102外部的组件、SSD设备130、SSD总线、SATA总线、逻辑125、逻辑160、逻辑170等),以感测影响***/平台的功率/热行为的各种因素(例如,温度、操作频率、操作电压、功耗和/或核心间通信活动等)的变化。
图9示出了根据实施例的SSD设备130的各种组件的框图。如图9中示出的,逻辑160可以定位在各种位置中(例如,在SSD设备130或控制器382内部等),并且可以包括与结合图8讨论的技术类似的技术。SSD设备130包括控制器382(其进而包括一个或多个处理器核心或处理器384和存储器控制器逻辑386)、高速缓存138、RAM 388、固件存储装置390、一个或多个NAND设备392-1至392-N(统称为NAND 392)和NVM缓冲器393(例如,其可以包括PLI备份的SRAM)。NVM缓冲器393和NAND 392经由一个或多个存储器通道或总线耦合到存储器控制器逻辑386。而且,SSD设备130经由接口(例如,SATA、SAS、PCIe、NVMe等接口)与逻辑125进行通信。处理器384和/或控制器382可以压缩/解压缩写入NAND设备392-1至392-N或从其读取的数据。
如图8和图9中示出的,SSD设备130可以包括逻辑160,该逻辑160可以与SSD设备130在同一壳体中和/或完全集成在SSD设备130的印刷电路板(PCB)上。***100还可以包括在SSD设备130外部的逻辑170。参考图1-7F讨论的特征/方面/操作中的一个或多个可以由图8和/或图9的组件中的一个或多个来执行。而且,图1-7F的特征/方面/操作中的一个或多个可以被编程到固件390中。此外,SSD控制器逻辑125还可以包括逻辑160。有利地,逻辑160可以包括用于实现***10(图1)、装置15(图2)、方法20(图3A至图3C)、NVM缓冲器40(图4)、流程50(图5)、流程60(图6)、主机元数据项75和NAND地址项76、77……78(图7A至图7F)的一个或多个方面和/或本文讨论的特征中的任何特征的技术。例如,逻辑170可以包括用于实现本文描述的各个实施例的主机设备/计算机***/代理方面的技术,而逻辑160可以包括用于实现本文描述的各个实施例的存储设备方面的技术。有利地,主机侧逻辑170可能不需要任何特殊修改来与存储设备逻辑160一起工作。
特别地,逻辑160可以被配置为将用于传入写入数据的元数据存储在NVM缓冲器393中,将用于传入写入数据的其他数据存储在NAND 392中,并且为传入写入数据提供运行时原子性和功率故障写入原子性两者,具有高达指定的MDTS的标称地大的NAWUPF/NAWAN。在一些实施例中,逻辑160可以被配置为将用于传入写入数据的元数据存储在NVM缓冲器393的第一池中,并且将用于传入写入数据的NAND地址存储在NVM缓冲器393的第二池中。例如,逻辑160还可以被配置为维护用于NVM缓冲器393的第一池和第二池中的每个池的两个或更多个队列,以及构建在NVM缓冲器393的第二池中的用于传入写入数据的NAND地址项的链表。
在一些实施例中,逻辑160还可以被配置为基于被存储在第一池中的元数据以及NAND地址项的链表,在用于传入写入的完整写入信息可用之后原子地更新L2P间接表中的多个条目。例如,逻辑160还可以被配置为针对传入,与其他传入写入数据分开地对L2P间接表的更新进行排序。在从功率故障恢复的事件中,逻辑160可以被配置为丢弃在NVM缓冲器393中的元数据和在NAND 392中的其他数据,而不基于NVM缓冲器393中的主机写入项标志来更新L2P间接表。
在其他实施例中,SSD设备130可以用任何合适的存储装置/存储器技术/介质来代替。在一些实施例中,逻辑160可以耦合到一个或多个衬底(例如,硅、蓝宝石、砷化镓、印刷电路板(PCB)等),并且可以包括被定位在一个或多个衬底内的晶体管沟道区域。在其他实施例中,SSD设备130可以包括两种或更多种类型的存储介质。例如,存储装置中的大部分可以是NAND,并且还可以包括一些更快、更小粒度的可访问(例如,字节可寻址)NVM,例如,INTEL OPTANE TECHNOLOGY。如图8中示出的,逻辑160的特征或方面可以分布在整个***100中,和/或与***100的各种组件共置一处/集成。
术语“耦合”在本文中可以用于指代所讨论的组件之间的任何类型的直接或间接关系,并且可以应用于电气、机械、流体、光学、电磁、机电或其他连接。另外地,术语“第一”、“第二”等在本文中可以仅用于促进讨论,并且除非另有指示,否则不带有特定时间或时序意义。
如在本申请和权利要求书中使用的,由术语“……中的一个或多个”连接的项目列表可以表示所列术语的任一组合。例如,短语“A,B和C中的一个或多个”和短语“A,B或C中的一个或多个”两者可以表示A;B;C;A和B;A和C;B和C;或A,B和C。本文描述的***的各种组件可以以软件、固件和/或硬件和/或其任何组合实现。例如,本文讨论的***或设备的各种组件可以至少部分地由(例如,可以在诸如智能电话之类的计算***中找到的)计算SoC的硬件提供。本领域技术人员可以认识到,本文描述的***可以包括尚未在对应的图中描绘的附加组件。例如,本文讨论的***可以包括诸如位流复用器或解复用器模块等之类的附加组件,为了清楚起见尚未对其进行描述。
虽然本文讨论的示例过程的实现方式可以包括以所示次序示出的所有操作的实施,但本公开在这方面不受限制,并且在各种示例中,本文的示例过程的实现方式可以仅包括所示操作的子集、以与所示次序不同的次序执行的操作或附加操作。
另外地,可以响应于由一个或多个计算机程序产品提供的指令来实施本文讨论的操作中的任何一个或多个。这样的程序产品可以包括提供指令的信号承载介质,该指令当由例如处理器执行时,可以提供本文描述的功能。计算机程序产品可以以一种或多种机器可读介质的任何形式提供。因此,例如,包括一个或多个图形处理单元或处理器核心的处理器可以响应于由一个或多个机器可读介质传送到处理器的程序代码和/或指令或指令集来实施本文的示例过程的一个或多个框。一般而言,机器可读介质可以以程序代码和/或指令或指令集的形式传送软件,其可以使本文描述的设备和/或***中的任一个实现本文讨论的操作的至少一部分和/或本文讨论的设备、***或任何模块或组件的任何部分。
如在本文描述的任何实现方式中使用的,术语“模块”指代被配置为提供本文所描述的功能的软件逻辑、固件逻辑、硬件逻辑和/或电路的任何组合。软件可以体现为软件包、代码和/或指令集或指令,并且如在本文所描述的任何实现方式中使用的“硬件”可以包括例如单独地或以任何组合的方式的硬连线电路、可编程电路、状态机电路、固定功能电路、执行单元电路和/或存储由可编程电路执行的指令的固件。模块可以共同地或单独地体现为形成较大***的一部分的电路,例如,集成电路(IC)、片上***(SoC)等。
可以使用硬件元件、软件元件或两者的组合来实现各种实施例。硬件元件的示例可以包括处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等。软件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、***程序、机器程序、操作***软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用编程接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。确定实施例是否是使用硬件元件和/或软件元件实现的可以根据任何数量的因素(例如,期望的计算速率、功率水平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其他设计或者性能约束)而变化。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示处理器内的各种逻辑的代表性指令实现,该指令在由机器读取时使得该机器制造用于执行本文描述的技术的逻辑。被称为“IP核心”的这样的表示可以被存储在有形的机器可读介质上并且被供应到各种客户或者制造设施以加载到实际上制造逻辑或者处理器的制造机器中。
虽然已经参考各种实现方式描述了本文中阐述的某些特征,但是该描述并不旨在被解释为限制意义的。因此,对本公开所属的领域的技术人员显而易见的是,对本文描述的实现方式以及其他实现方式的各种修改被认为位于本公开的精神和范围内。
将认识到,实施例不限于如此描述的实施例,而是可以在不脱离所附权利要求书的范围的情况下通过修改和改变来实践。例如,上述实施例可以包括特征的特定组合。然而,上述实施例不限于此,并且在各种实现方式中,上述实施例可以包括仅承担这种特征的子集、承担这种特征的不同次序、承担这种特征的不同组合,和/或承担比明确列出的那些特征更多的特征。因此,实施例的范围应当参考所附权利要求以及这些权利要求所赋予的等效物的全部范围来确定。
Claims (25)
1.一种电子装置,包括:
一个或多个衬底;以及
耦合到所述一个或多个衬底的逻辑,所述逻辑用于:
控制对具有第一类型的介质的主要持久存储装置和具有第二类型的介质的非易失性存储器缓冲器的访问,所述第二类型的介质不同于所述第一类型的介质,
将用于传入写入数据的元数据存储在所述非易失性存储器缓冲器中,
将用于所述传入写入数据的其他数据存储在所述主要持久存储装置中,以及
为所述传入写入数据提供运行时原子性和功率故障写入原子性两者。
2.根据权利要求1所述的装置,其中,所述逻辑还用于:
将用于所述传入写入数据的所述元数据存储在所述非易失性存储器缓冲器的第一池中;以及
将用于所述传入写入数据的主要持久存储装置地址存储在所述非易失性存储器缓冲器的第二池中。
3.根据权利要求2所述的装置,其中,所述逻辑还用于:
维护用于所述非易失性存储器缓冲器的所述第一池和所述第二池中的每个池的两个或更多个队列;以及
构建在所述非易失性存储器缓冲器的所述第二池中的用于所述传入写入数据的主要持久存储装置地址项的链表。
4.根据权利要求3所述的装置,其中,所述逻辑还用于:
基于被存储在所述第一池中的所述元数据以及主要持久存储装置地址项的所述链表,在用于传入写入的完整写入信息能够使用之后原子地更新逻辑到物理间接表中的多个条目。
5.根据权利要求4所述的装置,其中,所述逻辑还用于:
针对传入,与其他传入写入数据分开地对所述逻辑到物理间接表的更新进行排序。
6.根据权利要求4至5中任一项所述的装置,其中,所述逻辑还用于:
在从功率故障恢复的事件中,丢弃在所述非易失性存储器缓冲器中的所述元数据和在所述主要持久存储装置中的所述其他数据,而不基于NVM缓冲器中的指示符来更新所述逻辑到物理间接表。
7.根据权利要求1所述的装置,其中,所述主要持久存储装置和所述非易失性存储器缓冲器是固态驱动器的一部分。
8.一种电子存储***,包括:
具有第一类型的介质的主要持久存储装置;
具有第二类型的介质的非易失性存储器缓冲器,所述第二类型的介质不同于所述第一类型的介质;以及
控制器,其通信地耦合到所述主要持久存储装置和所述非易失性存储器缓冲器,所述控制器包括用于以下的逻辑:
将用于传入写入数据的元数据存储在所述非易失性存储器缓冲器中,
将用于所述传入写入数据的其他数据存储在所述主要持久存储装置中,以及
为所述传入写入数据提供运行时原子性和功率故障写入原子性两者。
9.根据权利要求8所述的***,其中,所述逻辑还用于:
将用于所述传入写入数据的所述元数据存储在所述非易失性存储器缓冲器的第一池中;以及
将用于所述传入写入数据的主要持久存储装置地址存储在所述非易失性存储器缓冲器的第二池中。
10.根据权利要求9所述的***,其中,所述逻辑还用于:
维护用于所述非易失性存储器缓冲器的所述第一池和所述第二池中的每个池的两个或更多个队列;以及
构建在所述非易失性存储器缓冲器的所述第二池中的用于所述传入写入数据的主要持久存储装置地址项的链表。
11.根据权利要求10所述的***,其中,所述逻辑还用于:
基于被存储在所述第一池中的所述元数据以及主要持久存储装置地址项的所述链表,在用于传入写入的完整写入信息能够使用之后原子地更新逻辑到物理间接表中的多个条目。
12.根据权利要求11所述的***,其中,所述逻辑还用于:
针对传入,与其他传入写入数据分开地对所述逻辑到物理间接表的更新进行排序。
13.根据权利要求11所述的***,其中,所述逻辑还用于:
在从功率故障恢复的事件中,丢弃在所述非易失性存储器缓冲器中的所述元数据和在所述主要持久存储装置中的所述其他数据,而不基于NVM缓冲器中的指示符来更新所述逻辑到物理间接表。
14.根据权利要求8至13中任一项所述的***,其中,所述主要持久存储装置和所述非易失性存储器缓冲器是固态驱动器的一部分。
15.一种控制存储装置的方法,包括:
控制对具有第一类型的介质的主要持久存储装置和具有第二类型的介质的非易失性存储器缓冲器的访问,所述第二类型的介质不同于所述第一类型的介质;
将用于传入写入数据的元数据存储在所述非易失性存储器缓冲器中;
将用于所述传入写入数据的其他数据存储在所述主要持久存储装置中;以及
为所述传入写入数据提供运行时原子性和功率故障写入原子性两者。
16.根据权利要求15所述的方法,还包括:
将用于所述传入写入数据的所述元数据存储在所述非易失性存储器缓冲器的第一池中;以及
将用于所述传入写入数据的主要持久存储装置地址存储在所述非易失性存储器缓冲器的第二池中。
17.根据权利要求16所述的方法,还包括:
维护用于所述非易失性存储器缓冲器的所述第一池和所述第二池中的每个池的两个或更多个队列;以及
构建在所述非易失性存储器缓冲器的所述第二池中的用于所述传入写入数据的主要持久存储装置地址项的链表。
18.根据权利要求17所述的方法,还包括:
基于被存储在所述第一池中的所述元数据以及主要持久存储装置地址项的所述链表,在用于传入写入的完整写入信息能够使用之后原子地更新逻辑到物理间接表中的多个条目。
19.根据权利要求18所述的方法,还包括:
针对传入,与其他传入写入数据分开地对所述逻辑到物理间接表的更新进行排序。
20.根据权利要求18至19中任一项所述的方法,还包括:
在从功率故障恢复的事件中,丢弃在所述非易失性存储器缓冲器中的所述元数据和在所述主要持久存储装置中的所述其他数据,而不基于NVM缓冲器中的指示符来更新所述逻辑到物理间接表。
21.根据权利要求15所述的方法,其中,所述主要持久存储装置和所述非易失性存储器缓冲器是固态驱动器的一部分。
22.一种存储控制器装置,包括:
用于控制对具有第一类型的介质的主要持久存储装置和具有第二类型的介质的非易失性存储器缓冲器的访问的单元,所述第二类型的介质不同于所述第一类型的介质;
用于将用于传入写入数据的元数据存储在所述非易失性存储器缓冲器中的单元;
用于将用于所述传入写入数据的其他数据存储在所述主要持久存储装置中的单元;以及
用于为所述传入写入数据提供运行时原子性和功率故障写入原子性两者的单元。
23.根据权利要求22所述的装置,还包括:
用于将用于所述传入写入数据的所述元数据存储在所述非易失性存储器缓冲器的第一池中的单元;以及
用于将用于所述传入写入数据的主要持久存储装置地址存储在所述非易失性存储器缓冲器的第二池中的单元。
24.根据权利要求23所述的装置,还包括:
用于维护用于所述非易失性存储器缓冲器的所述第一池和所述第二池中的每个池的两个或更多个队列的单元;以及
用于构建在所述非易失性存储器缓冲器的所述第二池中的用于所述传入写入数据的主要持久存储装置地址项的链表的单元。
25.根据权利要求24所述的装置,还包括:
用于基于被存储在所述第一池中的所述元数据以及主要持久存储装置地址项的所述链表,在用于传入写入的完整写入信息能够使用之后原子地更新逻辑到物理间接表中的多个条目的单元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/987,165 | 2020-08-06 | ||
US16/987,165 US12019910B2 (en) | 2020-08-06 | 2020-08-06 | SSD managed host write atomicity with arbitrary transfer length |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114064515A true CN114064515A (zh) | 2022-02-18 |
Family
ID=73228663
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110759826.6A Pending CN114064515A (zh) | 2020-08-06 | 2021-07-06 | 具有任意传输长度的ssd管理的主机写入原子性 |
Country Status (3)
Country | Link |
---|---|
US (1) | US12019910B2 (zh) |
CN (1) | CN114064515A (zh) |
DE (1) | DE102021117355A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115544542A (zh) * | 2022-09-29 | 2022-12-30 | 盐城工学院 | 一种基于忆阻神经网络同步控制的图像加密方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112230855A (zh) * | 2020-10-20 | 2021-01-15 | 英韧科技(上海)有限公司 | 固态硬盘及其读写方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100191896A1 (en) * | 2009-01-23 | 2010-07-29 | Magic Technologies, Inc. | Solid state drive controller with fast NVRAM buffer and non-volatile tables |
EP2598996B1 (en) * | 2010-07-28 | 2019-07-10 | SanDisk Technologies LLC | Apparatus, system, and method for conditional and atomic storage operations |
US20170185354A1 (en) | 2015-12-23 | 2017-06-29 | Intel Corporation | Techniques for a Write Transaction at a Storage Device |
-
2020
- 2020-08-06 US US16/987,165 patent/US12019910B2/en active Active
-
2021
- 2021-07-06 CN CN202110759826.6A patent/CN114064515A/zh active Pending
- 2021-07-06 DE DE102021117355.8A patent/DE102021117355A1/de active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115544542A (zh) * | 2022-09-29 | 2022-12-30 | 盐城工学院 | 一种基于忆阻神经网络同步控制的图像加密方法 |
CN115544542B (zh) * | 2022-09-29 | 2023-05-05 | 盐城工学院 | 一种基于忆阻神经网络同步控制的图像加密方法 |
Also Published As
Publication number | Publication date |
---|---|
US20200363997A1 (en) | 2020-11-19 |
DE102021117355A1 (de) | 2022-02-10 |
US12019910B2 (en) | 2024-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11797433B2 (en) | Zoned namespace with zone grouping | |
US20200089407A1 (en) | Inter zone write for zoned namespaces | |
EP3230872B1 (en) | Techniques to manage multiple sequential write streams | |
US10949120B2 (en) | Host defined bandwidth allocation for SSD tasks | |
US20180188985A1 (en) | Persistent storage device with a virtual function controller | |
US11119672B2 (en) | Dynamic single level cell memory controller | |
US20200363998A1 (en) | Controller and persistent memory shared between multiple storage devices | |
CN114064515A (zh) | 具有任意传输长度的ssd管理的主机写入原子性 | |
US20210117123A1 (en) | Accelerated raid rebuild offload | |
US20230099202A1 (en) | Ssd with reduced secure erase time and endurance stress | |
US20220374150A1 (en) | Adjustable timer component for semiconductor devices | |
US20220188000A1 (en) | Shared data buffer for prefetch and non-prefetch entries | |
EP4330805A1 (en) | Dynamic program suspend disable for random write ssd workload | |
EP4323859A1 (en) | User configurable slc memory size | |
US20230305954A1 (en) | Direct map memory extension for storage class memory | |
US11567862B2 (en) | Configurable NVM set to tradeoff between performance and user space | |
CN112905108A (zh) | 回拷期间高错误率块的检测和错误处置 | |
US12008269B2 (en) | Storage device with client reconfigurable protocol | |
US20210405889A1 (en) | Data rollback for tiered memory and storage | |
EP3876088A1 (en) | Negotiated power-up for ssd data refresh | |
KR102686494B1 (ko) | 구역 그룹화를 갖는 구역화된 네임스페이스 | |
US20220012094A1 (en) | Resource management controller | |
US11971782B2 (en) | On-SSD erasure coding with uni-directional commands | |
US20240241792A1 (en) | On-ssd erasure coding with uni-directional commands |
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 |