CN116897341A - 隐含流 - Google Patents
隐含流 Download PDFInfo
- Publication number
- CN116897341A CN116897341A CN202280017909.0A CN202280017909A CN116897341A CN 116897341 A CN116897341 A CN 116897341A CN 202280017909 A CN202280017909 A CN 202280017909A CN 116897341 A CN116897341 A CN 116897341A
- Authority
- CN
- China
- Prior art keywords
- sgs
- open
- write command
- stream
- data storage
- 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
- 238000013500 data storage Methods 0.000 claims abstract description 90
- 230000008901 benefit Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000000034 method Methods 0.000 description 4
- 230000000875 corresponding effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 102100036725 Epithelial discoidin domain-containing receptor 1 Human genes 0.000 description 1
- 101710131668 Epithelial discoidin domain-containing receptor 1 Proteins 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000003199 nucleic acid amplification method 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
- 230000001360 synchronised effect Effects 0.000 description 1
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/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
- 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/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/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本公开整体涉及有效且高效地将数据写入流。主机设备可指示数据存储设备在隐含流模式下操作,使得该主机设备不需要向该数据存储设备告知要向其中写入数据的特定流。该数据存储设备将维护特定流的打开的附加点列表。在接收到写入命令时,该数据存储设备确定该写入命令是否用于已经打开的流;如果是,则写入该特定流。如果否,则该数据存储设备打开新流或将数据写入溢出流。
Description
相关申请的交叉引用
本申请要求于2022年1月31日提交的美国申请号17/588,682的优先权,该美国申请要求于2021年6月7日提交的美国临时专利申请序列号63/197,688的权益,该两个申请均以引用方式整体并入本文。
背景技术
技术领域
本公开的实施方案整体涉及诸如固态驱动器(SSD)之类的数据存储设备的流。
相关领域的描述
存储设备诸如SSD可用于需要相对低延迟和高容量存储的应用中的计算机中。例如,SSD可表现出比硬盘驱动器(HDD)更低的延迟,尤其是对于随机读取和写入而言。通常,SSD的控制器接收将数据从主机设备读取或写入到存储器设备的命令。数据被读取并写入存储器设备中的一个或多个擦除块。这些擦除块中的每个擦除块都与逻辑块地址相关联,使得SSD和/或主机设备知道数据诸如用户数据、奇偶校验数据、元数据和其他适用数据等的存储位置。存储在SSD的易失性存储器中的逻辑到物理地址(L2P)表将数据的逻辑块地址(LBA)与写入数据时数据存储在SSD中的物理地址相关联。
一个或多个擦除块可通过其相应的逻辑块地址分组在一起以形成多个流。当主机设备发送写入命令时,该写入命令至少包括流ID和与该写入命令的数据相关联的一个或多个LBA。由于流在数据存储设备的LBA空间内具有多个写入点,因此主机设备可写入到多个写入点,并且仍然实现1的写入放大因子(WAF)。然而,由于主机设备需要向数据存储设备告知每次写入的流目的地,因此主机设备可能由于不得不包括每个告知而负担沉重。
因此,本领域需要一种将数据写入流的新方法。
发明内容
本公开整体涉及有效且高效地将数据写入流。主机设备可指示数据存储设备在隐含流(implied streams)模式下操作,使得该主机设备不需要向该数据存储设备告知要向其中写入数据的特定流。该数据存储设备将维护特定流的打开的附加点列表。在接收到写入命令时,该数据存储设备确定该写入命令是否用于已经打开的流;如果是,则写入该特定流。如果否,则该数据存储设备打开新流或将数据写入溢出流。
在一个实施方案中,数据存储设备包括:存储器设备,所述存储器设备具有流架构,该流架构将存储器设备划分为多个流;控制器,该控制器耦接到存储器设备,该控制器被配置成:进入隐含流模式;从主机设备接收写入命令;以及基于写入命令的一个或多个逻辑块地址(LBA)确定与该写入命令相关联的流,其中不随写入命令一起发送流标识符(ID)。
在另一个实施方案中,数据存储设备包括:存储器设备,所述存储器设备具有流架构,所述流架构将所述存储器设备划分为多个流;控制器,该控制器耦接到存储器设备,该控制器被配置成:从主机设备接收进入隐含流模式的指示,其中主机设备在隐含流模式期间不随写入命令一起发送流标识符(ID);以及基于从主机设备接收的每个写入命令的一个或多个逻辑块地址(LBA)确定与写入命令相关联的流。
在另一个实施方案中,数据存储设备包括:存储器装置,该存储器装置具有流架构,该流架构将存储器设备划分为多个流;控制器,该控制器耦接到存储器装置,该控制器被配置成:将写入命令的数据编程到该多个流中的流,其中该流基于写入命令的一个或多个逻辑块地址(LBA)来选择,其中每个流具有多个流粒度大小(SGS)LBA范围,并且其中写入命令不包括流标识符(ID)。
附图说明
因此,通过参考实施方案,可以获得详细理解本公开的上述特征的方式、本公开的更具体描述、上述简要概述,所述实施方案中的一些在附图中示出。然而,应当注意的是,附图仅示出了本公开的典型实施方案并且因此不应视为限制其范围,因为本公开可以允许其他同等有效的实施方案。
图1是示出根据某些实施方案的存储系统的示意性框图,其中数据存储设备可用作主机设备的存储设备。
图2是示出根据某些实施方案的非易失性存储器的示意性框图,其中非易失性存储器具有流架构。
图3是示出根据某些实施方案的操作数据存储设备的方法的流程图,其中数据存储设备具有隐含流容量。
为了有助于理解,在可能的情况下,使用相同的附图标记来表示附图中共有的相同元件。可以设想是,在一个实施方案中公开的元件可以有利地用于其他实施方案而无需具体叙述。
具体实施方式
在下文中,参考本公开的实施方案。然而,应当理解,本公开不限于具体描述的实施方案。相反,思考以下特征和元件的任何组合(无论是否与不同实施方案相关)以实现和实践本公开。此外,尽管本公开的实施方案可以实现优于其他可能解决方案和/或优于现有技术的优点,但是否通过给定实施方案来实现特定优点不是对本公开的限制。因此,以下方面、特征、实施方案和优点仅是说明性的,并且不被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。同样地,对“本公开”的引用不应当被解释为本文公开的任何发明主题的概括,并且不应当被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。
本公开整体涉及有效且高效地将数据写入流。主机设备可指示数据存储设备在隐含流(implied streams)模式下操作,使得该主机设备不需要向该数据存储设备告知要向其中写入数据的特定流。该数据存储设备将维护特定流的打开的附加点列表。在接收到写入命令时,该数据存储设备确定该写入命令是否用于已经打开的流;如果是,则写入该特定流。如果否,则该数据存储设备打开新流或将数据写入溢出流。
图1是示出根据某些实施方案的存储系统100的示意性框图,其中主机设备104与数据存储设备106通信。例如,主机设备104可以利用包括在数据存储设备106中的非易失性存储器(NVM)110来存储和检索数据。主机设备104包括主机DRAM 138。在一些示例中,存储系统100可以包括可作为存储阵列工作的多个存储设备,诸如数据存储设备106。例如,存储系统100可以包括多个数据存储设备106,其被配置成共同用作主机设备104的大容量存储设备的廉价/独立磁盘冗余阵列(RAID)。
主机设备104可以向一个或多个存储设备(诸如数据存储设备106)存储数据和/或从其检索数据。如图1所示,主机设备104可以经由接口114与数据存储设备106通信。主机设备104可以包括多种设备中的任何一种,包括计算机服务器、网络附加存储(NAS)单元、台式计算机、笔记本(即膝上型)计算机、平板计算机、机顶盒、电话手机诸如所谓的“智能”电话、所谓的“智能”平板电脑、电视、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备,或能够从数据存储设备发送或接收数据的其它设备。
数据存储设备106包括控制器108、NVM 110、电源111、易失性存储器112、接口114和写缓冲器116。在一些示例中,为了清楚起见,数据存储设备106可以包括图1中未示出的附加部件。例如,数据存储设备106可以包括印刷电路板(PCB),数据存储设备106的部件机械地附接到该印刷板,并且该印刷板包括电互连数据存储设备106的部件等的导电迹线。在一些示例中,数据存储设备106的物理尺寸和连接器配置可以符合一个或多个标准形状因数。一些示例性标准形状因子包括但不限于3.5”数据存储设备(例如,HDD或SSD)、2.5”数据存储设备、1.8”数据存储设备、外围部件互连(PCI)、PCI扩展(PCI-X)、PCI Express(PCIe)(例如,PCIe x1、x4、x8、x16、PCIe Mini卡、MiniPCI等)。在一些示例中,数据存储设备106可以直接耦接(例如,直接焊接或插入到连接器中)到主机设备104的母板。
接口114可以包括用于与主机设备104交换数据的数据总线和用于与主机设备104交换命令的控制总线中的一者或两者。接口114可以根据任何合适的协议工作。例如,接口114可以根据以下协议中的一个或多个协议来操作:高级技术附件(ATA)(例如,串行ATA(SATA)和并行ATA(PATA))、光纤信道协议(FCP)、小型计算机系统接口(SCSI)、串行附接的SCSI(SAS)、PCI和PCIe、非易失性存储器express(NVMe)、OpenCAPI、GenZ、高速缓存相干接口加速器(CCIX)、开放信道SSD(OCSSD)等。接口114(例如,数据总线、控制总线或两者)电连接到控制器108,从而提供主机设备104与控制器108之间的电连接,允许在主机设备104与控制器108之间交换数据。在一些示例中,接口114的电连接还可以允许数据存储设备106从主机设备104接收电力。例如,如图1所示,电源111可以经由接口114从主机设备104接收电力。
NVM 110可包括多个存储器设备或存储器单元。NVM 110可以被配置成存储和/或检索数据。例如,NVM 110的存储器单元可接收数据和来自控制器108的指示存储器单元存储该数据的消息。类似地,存储器单元可从控制器108接收指示存储器单元检索数据的消息。在一些示例中,存储器单元中的每个存储器单元可以被称为裸片。在一些示例中,NVM110可包括多个裸片(例如,多个存储器单元)。在一些示例中,每个存储器单元可以被配置成存储相对大量的数据(例如,128MB、256MB、512MB、1GB、2GB、4GB、8GB、16GB、32GB、64GB、128GB、256GB、512GB、1TB等)。
在一些示例中,每个存储器单元可以包括任何类型的非易失性存储器设备,诸如闪存存储器设备、相变存储器(PCM)设备、电阻随机存取存储器(ReRAM)设备、磁阻随机存取存储器(MRAM)设备、铁电随机存取存储器(F-RAM)、全息存储器设备、以及任何其他类型的非易失性存储器设备。
NVM 110可包括多个闪存存储器设备或存储器单元。NVM闪存存储器设备可包括基于NAND或NOR的闪存存储器设备,并且可基于包含在用于每个闪存存储单元的晶体管的浮栅中的电荷来存储数据。在NVM闪存存储器设备中,闪存存储器设备可被划分成多个裸片,其中多个裸片中的每个裸片包括多个物理或逻辑块,这些物理或逻辑块可被进一步划分成多个页面。特定存储器设备内的多个块中的每个块可以包括多个NVM单元。NVM单元的行可以使用字线来电连接以限定多个页面中的页面。多个页面中的每个页面中的相应单元可以电连接到相应位线。此外,NVM闪存存储器设备可以是2D或3D设备,并且可以是单级单元(SLC)、多级单元(MLC)、三级单元(TLC)或四级单元(QLC)。控制器108可在页面层级向NVM闪存存储器设备写入数据以及从其读取数据,以及在块层级从NVM闪存存储器设备擦除数据。
电源111可以向数据存储设备106的一个或多个部件提供电力。当以标准模式操作时,电源111可以使用由外部设备诸如主机设备104提供的电力向一个或多个部件供电。例如,电源111可以使用经由接口114从主机设备104接收的电力向一个或多个部件供电。在一些示例中,电源111可以包括一个或多个电力存储部件,其被配置成当以关闭模式操作时向一个或多个部件供电,诸如在停止从外部设备接收电力的情况下。以这种方式,电源111可以用作机载备用电源。一个或多个电力存储部件的一些示例包括但不限于电容器、超级电容器、电池等。在一些示例中,可由一个或多个电力存储部件存储的电量可以是该等一个或多个电力存储部件的成本和/或尺寸(例如,面积/体积)的函数。换言之,随着由一个或多个电力存储部件存储的电量增加,一个或多个电力存储部件的成本和/或尺寸也增加。
易失性存储器112可由控制器108用来存储信息。易失性存储器112可包括一个或多个易失性存储器设备。在一些示例中,控制器108可使用易失性存储器112作为高速缓存。例如,控制器108可将高速缓存的信息存储在易失性存储器112中,直到高速缓存的信息被写入到NVM 110。如图1所示,易失性存储器112可以消耗从电源111接收的电力。易失性存储器112的示例包括但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态RAM(SRAM)和同步动态RAM(SDRAM(例如,DDR1、DDR2、DDR3、DDR3L、LPDDR3、DDR4、LPDDR4等))。
控制器108可以管理数据存储设备106的一个或多个操作。例如,控制器108可以管理从NVM 110读取数据和/或将数据写入该NVM。在一些实施方案中,当数据存储设备106从主机设备104接收写入命令时,控制器108可以发起数据存储命令以将数据存储到该NVM110并且监测数据存储命令的进度。控制器108可以确定存储系统100的至少一个操作特性,并且将该至少一个操作特性存储到该NVM 110。在一些实施方案中,当数据存储设备106从主机设备104接收到写入命令时,控制器108在将数据发送至NVM 110之前将与写入命令相关联的数据暂时存储在内部存储器或写入缓冲器116中。
图2是示出根据某些实施方案的NVM 202的示意性框图200,其中该NVM具有流架构。NVM 202可以是图1的NVM 110。在一个实施方案中,NVM 202是NAND设备。该NAND设备包括多个裸片204a-204n(统称为裸片204)。该一个或多个裸片中的每个裸片包括一个或多个平面。该一个或多个平面中的每个平面包括一个或多个块。该一个或多个块中的每个块包括一条或多条字线(例如,256条字线)。该一条或多条字线中的每条字线可以在一个或多个页面中寻址。
例如,MLC NAND裸片可使用上页面和下页面来达到整个字线的每个单元中的两个位(例如,每页16kB)。此外,可以以等于或小于完整页面的粒度访问每个页面。控制器(诸如图1的控制器108)可频繁地访问用户数据粒度LBA大小为512字节的NAND。因此,如在下文描述中所提及的,NAND位置等于512字节的粒度。因此,LBA大小为512字节并且MLC NAND的两个页面的页面大小为16KiB,这导致每个字线32个LBA。然而,NAND位置大小不旨在进行限制,并且仅用作示例。
NVM 202可被格式化为逻辑块,使得NVM 202的容量被划分为多个流206a-206n(统称为流206)。流206中的每个流可具有打开和活动、打开和关闭、空、满或离线的状态。一旦向流调度写入或由主机设备(诸如图1的主机设备104)发出流打开命令后,空流将切换到打开和活动的流。控制器108可在均为活动状态的流打开状态与流关闭状态之间移动流。如果流是活动的,则该流包括可写入的打开块,并且可向主机设备104提供活动状态下的推荐时间的描述。
术语“写入”包括当用户数据尚未填充所有可用NAND位置时,在块中的0个或更多个NAND位置和/或块中的部分填充NAND位置上编程用户数据。术语“写入”可进一步包括由于以下原因而将流移动至满的状态:内部驱动器处理需要(由于这些错误的位在打开的擦除块上更快地累积,因此存在打开块数据保留问题),数据存储设备(诸如图1的数据存储设备106)由于资源限制(诸如太多打开的流要跟踪或者已发现的缺陷状态等等)而关闭或填充流,或者主机设备104由于诸如不再有数据发送到数据存储设备106、计算机关闭、主机上的错误处理、用于跟踪的有限主机资源等等问题而关闭流。
活动流可以是打开的或关闭的。打开的流是已准备好写入并具有当前已分配资源的空流或部分满的流。利用写入命令从主机设备104接收的数据可被编程到当前未填充先前数据的打开的块。关闭的流是当前未从主机设备104持续不断地接收写入的空流或部分满的流。流从打开状态移动到关闭状态允许控制器108将资源重新分配给其他任务。这些任务可包括但不限于其他打开的流、其他常规的非流区域、或其他控制器108需要。
流206中的每个流包括多个裸片204中的一个或多个裸片。裸片204中的每个裸片由两个平面(未示出)组成,并且每个平面包括多个块(未示出)。应当理解,裸片204中的每个裸片可包括多于两个(2的倍数)平面。例如,裸片204中的每个裸片可包括2x个平面,其中“x”指代整数值。用户数据可存储在多个裸片204中的任何裸片中。此外,这些块中的每个块与多个逻辑块(未示出)相关联。
流206中的每个流可具有不同的大小。例如,第一stream0 206a包括第一裸片204a、第二裸片204b和第三裸片204c。同样,第二stream1 206b包括第四裸片204d和第五裸片204e。此外,流206中的每个流不需要与NVM或NAND设备的一个或多个块的容量对准。流粒度大小(SGS)是在主机设备104与数据存储设备106之间达成一致的最优写入大小。SGS可以是数据存储设备106的工厂设置。以小于SGS的大小接收的写入大小仍可写入相关流;然而,写入性能可能受到限制。此外,SGS可具有超级块的大小,其中超级块是NVM 202的块的逻辑聚合。
当数据存储设备106耦接到主机设备104时,数据存储设备106暴露由数据存储设备106支持的流的数量。因此,主机设备104知道写入命令可对应的流的数量。数据存储设备106将NVM 202的LBA空间划分为离散数量的SGS大小的连续LBA范围(在下文中称为SGS LBA范围)。此外,控制器108可维护指向一个或多个特定SGS LBA范围的打开的附加点列表。该列表可被维护在控制器108的闪存转换层(FTL)表中。打开的附加点是下一写入命令的数据可被编程到SGS LBA范围内何处的指示。
当控制器108从主机设备104的提交队列接收或获取命令时,该命令与流ID(例如,stream0)一起接收,该流ID告知控制器108要向多个流206a-206n中的哪个流写入与该命令相关联的数据。主机设备104可基于主机设备104想要分组在一起的数据来选择命令的流ID。因此,存储在流206中的每个流内的数据可如主机设备104所确定的那样相关或分组在一起。
主机设备104可指示控制器108进入“隐含流”模式,而不是主机设备104指示控制器108将数据编程到特定流。在“隐含流”模式下,控制器108确定对写入命令的数据进行编程的流,而不是主机设备104随写入命令一起发送流ID。所确定的流可基于写入命令的一个或多个LBA。当控制器108接收到每个写入命令时,控制器108通过对照FTL表检查写入命令的一个或多个LBA来确定该写入命令是否用于打开的SGS LBA范围(例如,与打开的流对应的SGS LBA范围)。如果写入命令用于打开的SGS LBA范围,则控制器108调度要编程到对应的打开的附加点或LBA附加点的写入。然而,如果写入命令不用于打开的SGS LBA范围,则控制器108可确定要打开的相关流或SGS LBA范围附加点,使得写入命令被发送到新的SGSLBA范围附加点。
由于主机设备104不限于任何大小的粒度,因此SSD中的控制器108必须准备好使流生长或收缩。当流需要更多物理容量时,控制器108将选择一个或多个块的粒度,并将一个或多个块的粒度的单元添加到流中。如果数据未被取消映射、解除分配或修剪,则控制器108可选择擦除块并将其返回到空闲块池,其中可用块(即,未分配的块)可添加到需要额外容量的流中。此外,可能存在流数据被重写的情况。因此,控制器108可在一个流内或同时在若干个流之间执行垃圾收集,以压缩物理空间并在空闲块池较低时回收块。
图3是示出根据某些实施方案的操作数据存储设备(诸如图1的数据存储设备106)的方法300的流程图,其中数据存储设备具有隐含流容量。出于示例性目的,可以参考图1的存储系统100的方面。例如,方法300可由控制器108实施。
在框302处,主机设备104指示数据存储设备106进入“隐含流”模式。当数据存储设备106处于“隐含流”模式时,控制器108可确定用以编程写入命令的数据以利用写入命令的一个或多个LBA的流。在框304处,主机设备104向数据存储设备106发送写入命令。写入命令由数据存储设备106的控制器108接收。在框306处,控制器108确定SGS LBA范围以对来自写入命令的一个或多个LBA的写入数据进行编程。例如,控制器108可确定一个或多个LBA与某种类型的数据相关联,并且可确定对应的流更适合于该某种类型的数据。例如,某些流可能更适合于高容量/访问,而其他流可能更适合于某些数据类型,诸如视频数据、音频数据等。
在框308处,控制器108确定所确定的SGS LBA范围是否是打开的SGS LBA范围。如果在框308处的所确定的SGS LBA范围是打开的SGS LBA范围,则在框310处,将写入命令的数据编程到打开的附加点处的所确定的SGS LBA范围。然而,如果在框308处的所确定的SGSLBA范围不是打开的SGS LBA范围,则控制器108在框312处进一步确定是否已达到打开的SGS LBA范围的阈值数量。例如,如果打开的SGS LBA范围的阈值数量是10,则最多可打开的10个SGS LBA范围。为了打开第11个SGS LBA范围,关闭10个打开的SGS LBA范围中的一个或多个打开的SGS LBA范围,以打开第11个SGS LBA范围。如果在框312处尚未达到打开的SGSLBA范围的阈值数量,则在框314处打开相关SGS LBA范围,并且在框318处将写入命令的数据编程到打开的附加点处的所确定的SGS LBA范围。
在一个实施方案中,如果在框312处已经达到打开的SGS LBA范围的阈值数量,则控制器108可在框316a处写入采用溢出命令的通用附加点。例如,通用附加点可以是被分区或被适当地作为备用溢出区域的SGS LBA范围。又如,SGS LBA范围可以是并非非常满的范围,使得SGS LBA范围被转换为备用溢出区域。可动态决定备用溢出SGS LBA范围,使得在数据存储设备106的使用期内,多个(一个或多个)不同备用溢出SGS LBA范围可以是有效的。
在另一个实施方案中,如果在框312处已经达到打开的SGS LBA范围的阈值数量,则控制器108可在框316b处关闭打开的SGS LBA范围并打开所确定的SGS LBA范围。被选择要关闭的打开的SGS LBA范围可以是最近最少使用的一个打开的SGS LBA范围、在最近时间周期内具有最少写入的一个打开的SGS LBA范围(例如,写入的移动平均值)、最接近SGSLBA范围的末端和/或打开的附加超级块的末端的一个打开的SGS LBA范围或先前列出的选项的加权组合。可在新的SGS LBA范围处重新打开被选择要关闭的SGS LBA范围。
在另一个实施方案中,如果在框312处已经达到打开的SGS LBA范围的阈值数量,则控制器108可在框316c处将多个SGS LBA范围合并到单个打开的附加点。为了确定要合并哪些SGS LBA范围,控制器108可维护与每个打开的附加点相关联的活动SGS LBA范围列表。合并在一起的SGS LBA范围可基于相关联的打开的附加点的接近度、SGS LBA范围的填满度等来挑选。
通过基于数据的一个或多个LBA来推断要将数据放到哪些流中,可改进数据存储设备的写入性能、等待时间和耐久性。
在一个实施方案中,数据存储设备包括:存储器设备,所述存储器设备具有流架构,所述流架构将存储器设备划分为多个流;控制器,所述控制器耦接到所述存储器设备,所述控制器被配置成:进入隐含流模式;从主机设备接收写入命令;以及基于所述写入命令的一个或多个逻辑块地址(LBA)确定与所述写入命令相关联的流,其中不随所述写入命令一起发送流标识符(ID)。
所述控制器还被配置成:将所述存储器设备划分为离散数量的流粒度大小(SGS)连续LBA范围。所述控制器还被配置成:维护打开的附加点列表,并且其中所述打开的附加点列表中的每个打开的附加点与所述离散数量的SGS连续LBA范围中的SGS LBA范围相关联。所述控制器还被配置成:确定所述写入命令是否用于所述离散数量的SGS连续LBA范围中的打开的SGS LBA范围。所述控制器还被配置成:在确定所述写入命令用于所述打开的SGS LBA范围时,将所述写入命令调度到所述打开的SGS LBA范围。所述控制器还被配置成:在所述写入命令不用于所述打开的SGS LBA范围时,打开用于新的打开的SGS LBA范围的新附加点。所述控制器还被配置成:将所述写入命令调度到用于所述新的打开的SGS LBA范围的所述新附加点。所述控制器还被配置成:在所述写入命令不用于所述打开的SGS LBA范围时,为采用溢出命令的通用附加点调度所述写入命令。所述控制器还被配置成:在所述写入命令不用于所述打开的SGS LBA范围时,将两个或更多个打开的SGS LBA范围合并到单个打开的附加点。所述控制器还被配置成:将所述写入命令调度到所述单个打开的附加点。
在另一个实施方案中,数据存储设备包括:存储器设备,所述存储器设备具有流架构,所述流架构将所述存储器设备划分为多个流;控制器,所述控制器耦接到所述存储器设备,所述控制器被配置成:从主机设备接收进入隐含流模式的指示,其中所述主机设备在所述隐含流模式期间不随写入命令一起发送流标识符(ID);以及基于从所述主机设备接收的每个写入命令的一个或多个逻辑块地址(LBA)确定与所述写入命令相关联的流。
所述控制器还被配置成:基于所述写入命令的所述一个或多个LBA,确定与所述写入命令相关联的所述流不用于打开的流。所述控制器还被配置成:在与所述写入命令相关联的所述流不用于所述打开的流时,确定是否达到打开的流的阈值数量。所述控制器被配置成:在未达到打开的流的所述阈值数量时,打开另一个新打开的流;以及将所述写入命令的数据编程到所述新打开的流的第一打开的附加点。所述控制器还被配置成:在达到打开的流的所述阈值数量时,将所述写入命令的数据写入通用附加点,其中所述通用附加点用于与溢出命令相关联的流粒度大小(SGS)LBA范围;关闭打开的SGS LBA范围,打开与所述写入命令的所述一个或多个LBA相关联的新SGS LBA范围,并将所述写入命令的所述数据写入所述新SGS LBA范围的第一打开的附加点;或将两个或更多个SGS LBA范围合并到单个打开的附加点,并将所述写入命令的所述数据写入所述单个打开的附加点。关闭的所述打开的SGS LBA范围是:多个SGS LBA范围中最近最少使用的SGS LBA范围;所述多个SGS LBA范围中在时间窗口内具有最少数量的写入的SGS LBA范围;或所述多个SGS LBA范围中最接近末端的SGS LBA范围,其中所述最接近末端的SGS LBA范围是最接近当前SGS LBA范围的末端和/或打开的附加超级块的末端的SGS LBA范围。关闭的所述打开的SGS LBA范围基于以下至少两项的加权组合:多个SGS LBA范围中最近最少使用的SGS LBA范围;所述多个SGS LBA范围中在时间窗口内具有最少数量的写入的SGS LBA范围;以及所述多个SGS LBA范围中最接近末端的SGS LBA范围,其中所述最接近末端的SGS LBA范围是最接近当前SGS LBA范围的末端和/或打开的附加超级块的末端的SGS LBA范围。
在另一个实施方案中,数据存储设备包括:存储器装置,所述存储器装置具有流架构,所述流架构将所述存储器设备划分为多个流;控制器,所述控制器耦接到所述存储器装置,所述控制器被配置成:将写入命令的数据编程到所述多个流中的流,其中所述流基于所述写入命令的一个或多个逻辑块地址(LBA)来选择,其中每个流具有多个流粒度大小(SGS)LBA范围,并且其中所述写入命令不包括流标识符(ID)。
所述控制器还被配置成:维护打开的附加点列表,其中所述打开的附加点列表被维护在闪存转换层(FTL)表中,并且其中所述打开的附加点列表中的每个打开的附加点与所述多个SGS LBA范围中的SGS LBA范围相关联。所述控制器还被配置成:确定所述流是相关联的关闭的SGS LBA范围;选择和/或打开并选择用于另一SGS LBA范围的打开的附加点;以及将所述写入命令的所述数据编程到所选择的打开的附加点。
虽然前述内容针对本公开的实施方案,但是可以在不脱离本公开的基本范围的情况下设想本公开的其他和另外的实施方案,并且本公开的范围由所附权利要求书确定。
Claims (20)
1.一种数据存储设备,所述数据存储设备包括:
存储器设备,所述存储器设备具有流架构,所述流架构将所述存储器设备划分为多个流;和
控制器,所述控制器耦接到所述存储器设备,所述控制器被配置成:
进入隐含流模式;
从主机设备接收写入命令;以及
基于所述写入命令的一个或多个逻辑块地址(LBA)确定与所述写入命令相关联的流,其中不随所述写入命令一起发送流标识符(ID)。
2.根据权利要求1所述的数据存储设备,其中所述控制器还被配置成:将所述存储器设备划分为离散数量的流粒度大小(SGS)连续LBA范围。
3.根据权利要求2所述的数据存储设备,其中所述控制器还被配置成:维护打开的附加点列表,并且其中所述打开的附加点列表中的每个打开的附加点与所述离散数量的SGS连续LBA范围中的SGS LBA范围相关联。
4.根据权利要求2所述的数据存储设备,其中所述控制器还被配置成:确定所述写入命令是否用于所述离散数量的SGS连续LBA范围中的打开的SGS LBA范围。
5.根据权利要求4所述的数据存储设备,其中所述控制器还被配置成:在确定所述写入命令用于所述打开的SGS LBA范围时,将所述写入命令调度到所述打开的SGS LBA范围。
6.根据权利要求4所述的数据存储设备,其中所述控制器还被配置成:在所述写入命令不用于所述打开的SGS LBA范围时,打开用于新的打开的SGS LBA范围的新附加点。
7.根据权利要求6所述的数据存储设备,其中所述控制器还被配置成:将所述写入命令调度到用于所述新的打开的SGS LBA范围的所述新附加点。
8.根据权利要求4所述的数据存储设备,其中所述控制器还被配置成:在所述写入命令不用于所述打开的SGS LBA范围时,为采用溢出命令的通用附加点调度所述写入命令。
9.根据权利要求4所述的数据存储设备,其中所述控制器还被配置成:在所述写入命令不用于所述打开的SGS LBA范围时,将两个或更多个打开的SGS LBA范围合并到单个打开的附加点。
10.根据权利要求9所述的数据存储设备,其中所述控制器还被配置成:将所述写入命令调度到所述单个打开的附加点。
11.一种数据存储设备,所述数据存储设备包括:
存储器设备,所述存储器设备具有流架构,所述流架构将所述存储器设备划分为多个流;和
控制器,所述控制器耦接到所述存储器设备,所述控制器被配置成:
从主机设备接收进入隐含流模式的指示,其中所述主机设备在所述隐含流模式期间不随写入命令一起发送流标识符(ID);以及
基于从所述主机设备接收的每个写入命令的一个或多个逻辑块地址(LBA)确定与所述写入命令相关联的流。
12.根据权利要求11所述的数据存储设备,其中所述控制器还被配置成:基于所述写入命令的所述一个或多个LBA,确定与所述写入命令相关联的所述流不用于打开的流。
13.根据权利要求12所述的数据存储设备,其中所述控制器还被配置成:在与所述写入命令相关联的所述流不用于打开的流时,确定是否达到所述打开的流的阈值数量。
14.根据权利要求13所述的数据存储设备,其中所述控制器被配置成:
在未达到打开的流的所述阈值数量时,打开另一个新打开的流;以及
将所述写入命令的数据编程到所述新打开的流的第一打开的附加点。
15.根据权利要求13所述的数据存储设备,其中所述控制器还被配置成:在达到打开的流的所述阈值数量时,
将所述写入命令的数据写入通用附加点,其中所述通用附加点用于与溢出命令相关联的流粒度大小(SGS)LBA范围;
关闭打开的SGS LBA范围,打开与所述写入命令的所述一个或多个LBA相关联的新SGSLBA范围,并将所述写入命令的所述数据写入所述新SGS LBA范围的第一打开的附加点;或者
将两个或更多个SGS LBA范围合并到单个打开的附加点,并将所述写入命令的所述数据写入所述单个打开的附加点。
16.根据权利要求15所述的数据存储设备,其中关闭的所述打开的SGS LBA范围是:
多个SGS LBA范围中最近最少使用的SGS LBA范围;
所述多个SGS LBA范围中在时间窗口内具有最少数量的写入的SGS LBA范围;或者
所述多个SGS LBA范围中最接近末端的SGS LBA范围,其中所述最接近末端的SGS LBA范围是最接近当前SGS LBA范围的末端和/或打开的附加超级块的末端的SGS LBA范围。
17.根据权利要求15所述的数据存储设备,其中关闭的所述打开的SGS LBA范围基于以下至少两项的加权组合:
多个SGS LBA范围中最近最少使用的SGS LBA范围;
所述多个SGS LBA范围中在时间窗口内具有最少数量的写入的SGS LBA范围;和
所述多个SGS LBA范围中最接近末端的SGS LBA范围,其中所述最接近末端的SGS LBA范围是最接近当前SGS LBA范围的末端和/或打开的附加超级块的末端的SGS LBA范围。
18.一种数据存储设备,所述数据存储设备包括:
存储器装置,所述存储器装置具有流架构,所述流架构将所述存储器装置划分为多个流;和
控制器,所述控制器耦接到所述存储器装置,所述控制器被配置成:
将写入命令的数据编程到所述多个流中的流,其中所述流基于所述写入命令的一个或多个逻辑块地址(LBA)来选择,其中每个流具有多个流粒度大小(SGS)LBA范围,并且其中所述写入命令不包括流标识符(ID)。
19.根据权利要求18所述的数据存储设备,其中所述控制器还被配置成:维护打开的附加点列表,其中所述打开的附加点列表被维护在闪存转换层(FTL)表中,并且其中所述打开的附加点列表中的每个打开的附加点与所述多个SGS LBA范围中的SGS LBA范围相关联。
20.根据权利要求18所述的数据存储设备,其中所述控制器被配置成:
确定所述流是相关联的关闭的SGS LBA范围;
选择和/或打开并选择用于另一SGS LBA范围的打开的附加点;以及
将所述写入命令的所述数据编程到所选择的打开的附加点。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163197688P | 2021-06-07 | 2021-06-07 | |
US63/197,688 | 2021-06-07 | ||
US17/588,682 | 2022-01-31 | ||
US17/588,682 US11960741B2 (en) | 2021-06-07 | 2022-01-31 | Implied streams |
PCT/US2022/018716 WO2022260729A2 (en) | 2021-06-07 | 2022-03-03 | Implied streams |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116897341A true CN116897341A (zh) | 2023-10-17 |
Family
ID=84284084
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280017909.0A Pending CN116897341A (zh) | 2021-06-07 | 2022-03-03 | 隐含流 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11960741B2 (zh) |
CN (1) | CN116897341A (zh) |
DE (1) | DE112022000518T5 (zh) |
WO (1) | WO2022260729A2 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11966605B2 (en) * | 2022-03-09 | 2024-04-23 | Kioxia Corporation | Superblock-based write management in non-volatile memory devices |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3021209A1 (en) | 2014-11-14 | 2016-05-18 | Dot Hill Systems Corporation | Method and apparatus for processing slow infrequent streams |
US10282324B2 (en) | 2015-07-13 | 2019-05-07 | Samsung Electronics Co., Ltd. | Smart I/O stream detection based on multiple attributes |
US9785366B1 (en) | 2015-12-30 | 2017-10-10 | EMC IP Holding Company LLC | Unbuffered log-structured storage |
KR102318477B1 (ko) | 2016-08-29 | 2021-10-27 | 삼성전자주식회사 | Ssd 어레이 관리를 위한 스트림 식별자 기반 스토리지 시스템 |
US10802757B2 (en) | 2018-07-30 | 2020-10-13 | EMC IP Holding Company LLC | Automated management of write streams for multi-tenant storage |
KR20210094915A (ko) * | 2020-01-22 | 2021-07-30 | 삼성전자주식회사 | 스토리지 컨트롤러, 이를 포함하는 스토리지 장치 및 스토리지 컨트롤러의동작 방법 |
-
2022
- 2022-01-31 US US17/588,682 patent/US11960741B2/en active Active
- 2022-03-03 DE DE112022000518.1T patent/DE112022000518T5/de active Pending
- 2022-03-03 WO PCT/US2022/018716 patent/WO2022260729A2/en active Application Filing
- 2022-03-03 CN CN202280017909.0A patent/CN116897341A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220391095A1 (en) | 2022-12-08 |
US11960741B2 (en) | 2024-04-16 |
WO2022260729A2 (en) | 2022-12-15 |
DE112022000518T5 (de) | 2023-11-23 |
WO2022260729A3 (en) | 2023-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113196226B (zh) | 固态驱动器中的分区命名空间 | |
US11640266B2 (en) | Rate limit on the transitions of zones to open | |
CN113179658B (zh) | 非顺序分区命名空间 | |
US11520660B2 (en) | Storage devices hiding parity swapping behavior | |
US11500727B2 (en) | ZNS parity swapping to DRAM | |
US11194521B1 (en) | Rate limit on the transitions of streams to open | |
KR102656959B1 (ko) | 존 구획 네임스페이스를 갖는 호스트 관리 하드웨어 압축 | |
US20240220155A1 (en) | Solution for Super Device Imbalance in ZNS SSD | |
CN114730290A (zh) | 将变化日志表移动至与分区对准 | |
US11520523B2 (en) | Data integrity protection of ZNS needs | |
CN117043753A (zh) | Zns设备中的不同写入优先级 | |
US11656984B2 (en) | Keeping zones open with intermediate padding | |
US11061598B2 (en) | Optimized handling of multiple copies in storage management | |
US11966618B2 (en) | Purposeful super device imbalance for ZNS SSD efficiency | |
US11960741B2 (en) | Implied streams | |
US11853565B2 (en) | Support higher number of active zones in ZNS SSD | |
WO2023080928A1 (en) | Dynamic controller buffer management and configuration | |
US11138066B1 (en) | Parity swapping to DRAM | |
US11409459B2 (en) | Data parking for SSDs with zones | |
US20210333996A1 (en) | Data Parking for SSDs with Streams | |
CN116301570A (zh) | 用于无dram ssd的企业主存储器缓冲区 |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20240827 Address after: California, USA Applicant after: SanDisk Technology Co. Country or region after: U.S.A. Address before: California, USA Applicant before: Western Digital Technologies, Inc. Country or region before: U.S.A. |
|
TA01 | Transfer of patent application right |