CN116888585A - 用于简单复制命令的基于高速缓存的流 - Google Patents
用于简单复制命令的基于高速缓存的流 Download PDFInfo
- Publication number
- CN116888585A CN116888585A CN202280015991.3A CN202280015991A CN116888585A CN 116888585 A CN116888585 A CN 116888585A CN 202280015991 A CN202280015991 A CN 202280015991A CN 116888585 A CN116888585 A CN 116888585A
- Authority
- CN
- China
- Prior art keywords
- lba
- command
- copy command
- data
- slot
- 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
- 238000000034 method Methods 0.000 claims abstract description 70
- 238000013500 data storage Methods 0.000 claims abstract description 56
- 230000010076 replication Effects 0.000 claims abstract description 47
- 230000004044 response Effects 0.000 claims description 6
- 238000012005 ligant binding assay Methods 0.000 description 116
- 238000010586 diagram Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 7
- 101000648827 Homo sapiens TPR and ankyrin repeat-containing protein 1 Proteins 0.000 description 2
- 102100028173 TPR and ankyrin repeat-containing protein 1 Human genes 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000013403 standard screening design Methods 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
- 239000003990 capacitor Substances 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0611—Improving I/O performance in relation to response time
-
- 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)
Abstract
公开了用于简单复制命令的基于高速缓存的流的方法和系统。本公开整体涉及用于以减轻设备中额外延迟的方式执行简单复制命令的方法及系统。根据某些实施方案,提供了包括一个或多个复制命令槽的复制命令管理器。当从主机接收到简单复制命令时,复制命令槽被分配给该命令,并且简单复制命令被复制到复制命令槽中。在将简单复制命令复制到复制命令槽时,更新数据存储设备控制器的重叠表以指示复制已完成,并且该完成被发布给主机。在发布之后,简单复制命令在后台中执行直到完成。
Description
相关申请的交叉引用
本专利申请要求2021年4月22日提交的美国专利申请17/237,949号的优先权,该美国专利申请转让给本文的受让人,并且全文以引用方式并入本文。
背景技术
技术领域
本公开的实施方案整体涉及用于数据存储设备的控制器,并且更具体地涉及基于高速缓存的复制命令。
相关领域的描述
在由主机发出并且在数据存储设备中执行的简单复制命令的传统形式中,在发布简单复制命令的完成之前需要采取的步骤的数量导致主机操作中的延迟。例如,根据现有技术方法的简单复制命令可执行以下步骤:形成控制路径(例如,地址转换)、FIM对NAND的访问、LDPC错误校正、NVMe元数据读取、AES解密/加密、DMA命令。
根据现有技术方法,简单复制命令的执行需要等待直到所有上述命令完成。因此,在这些命令被执行时,完成指示被推迟。由于这个推迟,主机命令管线中的复杂性被引入以进一步使主机负担额外延迟。
需要方法和系统来解决现有技术方法的缺点。
发明内容
本公开整体涉及用于以减轻设备中额外延迟的方式执行简单复制命令的方法及系统。根据某些实施方案,提供了包括一个或多个复制命令槽的复制命令管理器。当从主机接收到简单复制命令时,复制命令槽被分配给命令,并且简单复制命令被复制到复制命令槽中。在将简单复制命令复制到复制命令槽时,更新数据存储设备控制器的重叠表以指示复制已完成,并且完成被发布给主机。在发布之后,简单复制命令在后台中执行直到完成。
在一个实施方案中,公开了一种数据存储设备,该数据存储设备包括:复制命令管理器,该复制命令管理器包括复制命令槽;和控制器,该控制器包括重叠表,该控制器被配置为执行用于简单复制的方法。方法包括:从主机接收复制命令、从NAND接收复制数据、以及将复制命令槽分配给复制命令。该方法还包括更新重叠表、以及向主机发布复制命令的完成。
在另一实施方案中,公开了一种用于数据存储设备的控制器,该控制器包括:简单复制命令管理器,该简单复制命令管理器包括多个简单复制命令槽;包括计算机可读指令的一个或多个存储器设备;和处理器,该处理器耦接到一个或多个存储器设备并且被配置为执行计算机可读指令并且使得控制器执行用于简单复制的方法。方法包括:从主机接收包括将数据从第一LBA复制到第二LBA的简单复制命令;确定简单复制命令槽是否可用;以及将数据、第一LBA和第二LBA复制到简单复制命令槽。
在另一实施方案中,公开了一种用于存储数据的系统,该系统包括:一个或多个存储器装置;和控制器装置,该控制器装置被配置为执行用于简单复制的方法。方法包括:从主机接收简单复制命令;从NAND接收复制数据;以及从包括简单复制命令槽的简单复制命令管理器将简单复制命令槽分配给简单复制命令。方法还包括更新控制器的重叠表、以及向主机发布简单复制命令的完成。
附图说明
因此,通过参考实施方案,可以获得详细理解本公开的上述特征的方式、本公开的更具体描述、上述简要概述,所述实施方案中的一些在附图中示出。然而,应当注意的是,附图仅示出了本公开的典型实施方案并且因此不应视为限制其范围,因为本公开可以允许其他同等有效的实施方案。
图1示出了根据某些实施方案例示存储系统的示意性框图,其中数据存储设备可以用作主机设备的存储设备。
图2A示出了根据某些实施方案的存储管理操作的图示。
图2B示出了根据某些实施方案例示数据存储设备中的存储管理操作的示意性框图。
图3示出了根据某些实施方案例示数据存储设备中的简单复制命令管理器的示意性框图。
图4示出了根据某些实施方案例示执行简单复制命令的方法的流程图。
图5示出了根据某些实施方案例示利用图4的方法执行读取命令的方法的流程图。
图6示出了根据某些实施方案例示利用图4的方法执行写入命令的方法的流程图。
图7示出了根据某些实施方案例示执行简单复制命令的方法的流程图。
为了有助于理解,在可能的情况下,使用相同的参考标号来表示附图中共有的相同元件。可以设想是,在一个实施方案中公开的元件可以有利地用于其他实施方案而无需具体叙述。
具体实施方式
在下文中,参考本公开的实施方案。然而,应当理解,本公开不限于具体描述的实施方案。相反,思考以下特征和元件的任何组合(无论是否与不同实施方案相关)以实现和实践本公开。此外,尽管本公开的实施方案可以实现优于其他可能解决方案和/或优于现有技术的优点,但是否通过给定实施方案来实现特定优点不是对本公开的限制。因此,以下方面、特征、实施方案和优点仅是说明性的,并且不被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。同样地,对“本公开”的引用不应当被解释为本文公开的任何发明主题的概括,并且不应当被认为是所附权利要求书的要素或限制,除非在权利要求中明确地叙述。
本公开整体涉及用于以减轻设备中额外延迟的方式执行简单复制命令的方法及系统。根据某些实施方案,提供了包括一个或多个复制命令槽的复制命令管理器。当从主机接收到简单复制命令时,复制命令槽被分配给该命令,并且简单复制命令被复制到复制命令槽中。在将简单复制命令复制到复制命令槽时,更新数据存储设备控制器的重叠表以指示复制已完成,并且该完成被发布给主机。在发布之后,简单复制命令在后台中执行直到完成。
图1为示出了根据某些实施方案的存储系统100的示意性框图,其中,数据存储设备106可以用作主机设备104的存储设备。例如,主机设备104可以利用包括在数据存储设备106中的非易失性存储器(NVM)110来存储和检索数据。主机设备104包括主机DRAM 138。在一些示例中,存储系统100可以包括可作为存储阵列工作的多个存储设备,诸如数据存储设备106。例如,存储系统100可以包括多个数据存储设备106,其被配置成共同用作主机设备104的大容量存储设备的廉价/独立磁盘(RAID)冗余阵列。
主机设备104可以向一个或多个存储设备(诸如数据存储设备106)存储数据和/或从其检索数据。如图1所示,主机设备104可以经由接口114与数据存储设备106通信。主机设备104可以包括多种设备中的任何一种,包括计算机服务器、网络附接存储(NAS)单元、台式计算机、笔记本(即膝上型)计算机、平板计算机、机顶盒、电话手机诸如所谓的“智能”电话、所谓的“智能”平板电脑、电视、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备,或能够从数据存储设备发送或接收数据的其他设备。
数据存储设备106包括控制器108、NVM110、电源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的母板。
数据存储设备106的接口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的指示存储器单元存储该数据的消息。类似地,NVM 110的存储器单元可以从控制器108接收指示存储器单元检索数据的消息。在一些示例中,存储器单元中的每个存储器单元可以被称为裸片。在一些示例中,NVM 110可包括多个裸片(例如,多个存储器单元)。在一些示例中,每个存储器单元可以被配置成存储相对大量的数据(例如,128MB、256MB、512MB、1GB、2GB、4GB、8GB、16GB、32GB、64GB、128GB、256GB、512GB、1TB等)。
在一些示例中,NVM 110的每个存储单元可以包括任何类型的非易失性存储器设备,诸如闪存存储器设备、相变存储器(PCM)设备、电阻随机存取存储器(ReRAM)设备、磁阻随机存取存储器(MRAM)设备、铁电随机存取存储器(F-RAM)、全息存储器设备、以及任何其它类型的非易失性存储器设备。
NVM 110可包括多个闪存存储器设备或存储器单元。NVM闪存存储器设备可包括基于NAND或NOR的闪存存储器设备,并且可基于包含在用于每个闪存存储器单元的晶体管的浮栅中的电荷来存储数据。在NVM闪存存储器设备中,闪存存储器设备可被划分成多个管芯,其中多个管芯中的每个管芯包括多个块,这些块可被进一步划分成多个页面。特定存储器设备内的多个块中的每个块可以包括多个NVM单元。NVM单元的行可以使用字线来电连接以限定多个页面中的页面。多个页面中的每个页面中的相应单元可以电连接到相应位线。此外,NVM闪存存储器设备可以是2D或3D设备,并且可以是单级单元(SLC)、多级单元(MLC)、三级单元(TLC)或四级单元(QLC)。控制器108可在页面层级向NVM闪存存储器设备写入数据以及从其读取数据,以及在块层级从NVM闪存存储器设备擦除数据。
数据存储设备106包括电源111,其可以向数据存储设备106的一个或多个部件提供电力。当以标准模式操作时,电源111可以使用由外部设备诸如主机设备104提供的电力向一个或多个部件供电。例如,电源111可以使用经由接口114从主机设备104接收的电力向一个或多个部件供电。在一些示例中,电源111可以包括一个或多个电力存储部件,其被配置成当以关闭模式操作时向一个或多个部件供电,诸如在停止从外部设备接收电力的情况下。以这种方式,电源111可以用作机载备用电源。一个或多个电力存储部件的一些示例包括但不限于电容器、超级电容器、电池等。在一些示例中,可由一个或多个电力存储部件存储的电量可以是该等一个或多个电力存储部件的成本和/或尺寸(例如,面积/体积)的函数。换言之,随着由一个或多个电力存储部件存储的电量增加,一个或多个电力存储部件的成本和/或尺寸也增加。
数据存储设备106还包括易失性存储器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等))。
数据存储设备106包括控制器108,其可以管理数据存储设备106的一个或多个操作。例如,控制器108可以管理从NVM 110读取数据和/或将数据写入该NVM。在一些实施方案中,当数据存储设备106从主机设备104接收写入命令时,控制器108可以发起数据存储命令以将数据存储到该NVM 110并且监测数据存储命令的进度。控制器108可以确定存储系统100的至少一个操作特性,并且将该至少一个操作特性存储到该NVM 110。在一些实施方案中,当数据存储设备106从主机设备104接收到写入命令时,控制器108在将数据发送至NVM110之前将与写入命令相关联的数据暂时存储在内部存储器或写入缓冲器116中。
图2A示出了根据某些实施方案的存储管理操作的图示。数据存储设备(诸如图1的数据存储设备106)的NVM(诸如图1的NVM 110)包括第一块202和第二块204。由于数据被顺序地写入块,因此在移动数据或垃圾回收之前,第一块202的LBA1与LBA2之间的空间以及LBA4与LBA3之间的空间可包含无效或旧数据。写入第一块202的任何附加数据在LBA3之后写入。因此,LBA1与LBA2以及LBA4与LBA3之间的空间未被有效利用,因为有效数据不是顺序的,并且不能使用各LBA之间的空间。
控制器(诸如图1的控制器108或图1的主机设备104)可以发送用于存储管理操作(诸如垃圾回收)的命令。将第一块202的LBA复制到控制器,其中LBA可存储在控制器的易失性存储器中。第一块被擦除并被分配给空闲块(即,尚未写入的块)的池。存储在控制器中的数据被顺序地写入第二块204。由于数据被顺序地写入第二块,因此数据利用的空间量随着数据在块上的合并程度越来越高而减少。例如,第一块202可具有64KiB的可用容量。每个LBA可具有约4KiB的大小。LBA的总大小为16KiB。在将四个LBA写入到第一块202之后,第一块202的剩余容量为约48KiB。然而,由于四个LBA不是顺序写入的,因此可用容量可小于约48KiB。当将数据顺序地写入块诸如第二块204时,可用容量可等于或约等于块的剩余容量。
图2B示出了根据某些实施方案例示数据存储设备中的存储管理操作的示意性框图。主机设备104向数据存储设备106发出读取和/或写入命令252。PCIe总线256接收命令252以及与命令252相关联的数据254。然后命令252被传输到控制路径258,其中处理器260包括用于处理和执行命令252的逻辑部件。在写入操作中,数据254被传输到数据路径212,其中来自处理器260的指令被执行,并且数据254通过数据路径212的各种元件。例如,数据254首先通过直接存储器访问(DMA)264,其中数据保护被添加到数据254。然后在高级加密标准(AES)266处对数据254进行加密。在NVMe元数据块268处,元数据被附加到数据254。在一个实施方案中,元数据可包括标头。可被称为EC引擎的纠错引擎270生成纠错码或奇偶校验数据并将其写入数据254。闪存接口模块(FIM)272将数据254写入NVM 110的相关位置。
然而,当数据存储设备106执行存储管理操作诸如垃圾回收时,从NVM 110检索相关数据254并使其通过闪存接口模块(FIM)272、纠错引擎270、NVMe元数据块268、AES266和DMA 264。相关数据然后通过整个数据路径212并存储在NVM 110中的相关位置处。由于数据路径212可被存储管理操作占用,因此由于当前利用了数据存储设备的资源,新命令252可被排队。
图3示出了根据某些实施方案例示控制器304中的简单复制命令管理器314的示意性框图300。控制器304可被实现为图1的控制器108或图2B的控制路径258的一部分。控制器304耦接到主机设备302,其中命令诸如简单复制命令由主机设备302生成并发送给主机接口模块(HIM)306。简单复制命令允许将多个连续范围复制到存储器设备的单个目的地,诸如从多个源LBA复制到单个目的地LBA或复制到LBA的连续序列。在本文的描述中,简单复制命令包括命令和与命令相关联的数据。同样地,数据和其它相关信息诸如完成消息经由HIM306被发送回主机设备302。
HIM 306包括重叠表308和DMA 310。DMA 310可以是图2B的DMA 264。重叠表308可包括关于LBA的信息,诸如与简单复制命令相关联的LBA指针以及简单复制命令的长度。此外,当从主机设备302接收简单复制命令时,所接收的简单复制命令的长度和LBA被存储在重叠表308中,使得可标识简单复制命令的LBA的重叠。
当重叠被标识时,HIM 306可生成指示符或触发以将重叠命令发送给一个或多个处理器312。一个或多个处理器312可确定重叠命令是应当替换与重叠相关联的先前接收的简单复制命令还是应当完成该先前接收的简单复制命令并在先前接收的简单复制命令之后执行重叠命令。该一个或多个处理器312将重叠命令传送给单个复制命令管理器314,其中单个复制命令管理器314将简单复制命令和重叠命令聚集在复制命令队列316中。单个复制命令管理器314包括一个或多个简单复制命令槽318。从一个或多个简单复制命令槽318执行简单复制命令,其中每个槽可存储要从NVM 328的第一位置复制到第二位置的一个或多个LBA。单个复制命令管理器314耦接到命令调度器320。简单复制命令和重叠命令被传送给命令调度器320。
所接收命令的数据从DMA 310传送到加密/解密模块322。加密/解密模块322要么加密简单复制命令的数据,要么解密从NVM 328检索的加密数据,其中NVM 328可以是图1的NVM 110。加密/解密模块322耦接到编码器/解码器324。编码器/解码器324对数据进行编码以及对编码数据进行解码。编码器/解码器324可以是图2B的EC引擎270。加密/解密模块322和编码器/解码器324可包括用于保护数据不出错的逻辑部件或包括用于在读取来自NVM328的数据时校正数据中的错误的逻辑部件。编码器/解码器324耦接到FIM 326,其中FIM326可被配置为调度、检索和编程数据到NVM 328。
自动化命令诸如读取和写入命令从HIM 306传送到命令调度器320。命令调度器320可被配置为调度所接收的命令来执行,诸如调度对NVM 328的编程操作或NVM 328的读取操作。命令调度器320耦接到FIM 326。
图4示出了根据某些实施方案例示执行简单复制命令的方法400的流程图。方法400可由图3的控制器304实现。在一些示例中,一个或多个处理器(诸如图3的一个或多个处理器312)可被配置为执行方法400。出于示例性目的,这里可以参考图3的方面。
在框402处,控制器304从主机设备302接收主机命令。在框404处,控制器304确定所接收的主机命令是否为简单复制命令。如果所接收的命令不是简单复制命令,则在框406处,通过将主机命令从HIM 306传送到命令调度器320,主机命令作为自动化命令被正常执行。然而,如果所接收的主机命令是简单复制命令,则在框408处,控制器304确定在简单复制命令管理器314中是否存在任何可用的一个或多个简单复制命令槽318。如果在框408处没有可用的槽,则在框410处将简单复制命令保持在复制命令队列316中。
如果在框408或框412处存在可用槽,则将一个或多个简单复制命令槽318分配给简单复制命令,使得简单复制命令的一个或多个LBA被存储在所分配的一个或多个简单复制命令槽中。在框416处,更新重叠表308。在框418处,完成消息被发布给主机设备302。
图5示出了根据某些实施方案例示利用图4的方法400执行读取命令的方法500的流程图。方法500可由图3的控制器304实现。在一些示例中,一个或多个处理器(诸如图3的一个或多个处理器312)可被配置为执行方法500。出于示例性目的,这里可以参考图3的方面。
在框502处,控制器304从主机设备302接收具有LBA“X”的读取命令。在HIM 306处接收具有LBA“X”的读取命令,其中在框504处,对所接收的读取命令执行重叠检查。对照重叠表308检查LBA“X”,使得LBA位置中的任何重叠向控制器304发送关于存在LBA重叠的触发或通知。在框506处,控制器304确定是否存在重叠。如果在框506处不存在重叠,则在框508处,执行读取命令。然而,如果在框506处存在重叠,则在框510处,控制器304确定该重叠是否是与另一简单复制命令的重叠。如果在框510处该重叠不是与另一简单复制命令的重叠,则在框512处解决该重叠。
如果存在与该简单复制命令的重叠,则在框514处,扫描一个或多个简单复制命令槽318。LBA“X”用LBA“Y”替换,其中LBA“Y”是指与LBA“X”重叠相关联的数据。在框516处,从存储器设备(诸如,NVM 328)读取LBA“Y”。在框518处,LBA“Y”的数据和完成消息被传送给主机设备302。在一个实施方案中,在框520处,由于读取数据已被高速缓存,因此执行复制命令,使得未决复制命令队列(例如,一个或多个简单复制命令槽318和复制命令队列316)被刷新到NVM 328。
图6示出了根据某些实施方案例示利用图4的方法400执行写入命令的方法600的流程图。方法600可由图3的控制器304实现。在一些示例中,一个或多个处理器(诸如图3的一个或多个处理器312)可被配置为执行方法600。出于示例性目的,这里可以参考图3的方面。
在框602处,由控制器304在HIM 306处从主机设备302接收具有LBA“X”的写入命令。控制器304具有未决简单复制命令,其中未决简单复制命令是LBA“A”到LBA“B”。在框604处,检查重叠表308以确定所接收的具有LBA“X”的写入命令是否与任何先前存在的简单复制命令具有重叠。在框606处,控制器304确定LBA“X”是否等于未决简单复制命令的LBA“A”。如果LBA“X”等于LBA“A”,则在框608处,写入命令被保持在缓冲器(诸如图1的缓冲器116)中,并且执行未决简单复制命令。
然而,如果在框606处LBA“X”不等于LBA“Y”,则在框610处,控制器确定LBA“X”是否等于LBA“B”。如果LBA“X”不等于LBA“B”,则执行写入命令。然而,如果LBA“X”等于LBA“B”,则在框612处取消未决简单复制命令。在框614处,执行写入命令。在一个实施方案中,由于读取数据已被高速缓存,因此执行复制命令,使得未决复制命令队列(例如,一个或多个简单复制命令槽318和复制命令队列316)被刷新到NVM 328。
在一个示例中,如果未决简单复制命令是LBA“A”到LBA“B”并且在未决命令尚未完成时接收到新的简单复制命令LBA“B”到LBA“C”,则可在执行新的简单复制命令之前完成未决简单复制命令。然而,在另一示例中,可取消未决简单复制命令,并且可执行新的复制命令,其中经修改的简单复制命令是LBA“A”到LBA“C”。LBA“A”和LBA“B”两者的内容被存储在易失性存储器中,诸如图1的易失性存储器112。
图7示出了根据某些实施方案例示执行简单复制命令的方法700的流程图。出于示例性目的,这里可以参考图3的方面。在框702处,控制器(诸如图3的控制器304)从主机设备(诸如图3的主机设备302)接收复制命令。在框704处,控制器304接收与复制命令相关联的复制数据。在框706处,复制命令槽(诸如,图3的一个或多个复制命令槽318中的一者)被分配给复制命令。如果没有复制命令槽可用,则复制命令被存储在复制命令队列中,诸如图3的复制命令队列316。在框708处,用所接收的复制命令的数据更新重叠表。在框710处,与所接收的复制命令相关联的完成消息被发布给主机设备302。在一些示例中,完成消息可在完成所接收的复制命令的执行之前被发布给主机。
通过将未决简单复制命令的数据存储在重叠表中并且确定未决简单复制命令与所接收主机命令之间是否存在重叠,可减少简单复制命令的延迟,并且可利用现有写入流来处理经修改的简单复制命令执行。
在一个实施方案中,公开了一种数据存储设备,该数据存储设备包括:复制命令管理器,该复制命令管理器包括复制命令槽;和控制器,该控制器包括重叠表,该控制器被配置为执行用于简单复制的方法。方法包括:从主机接收复制命令、从NAND接收复制数据、以及将复制命令槽分配给复制命令。方法还包括更新重叠表、以及向主机发布复制命令的完成。
复制命令的完成的发布发生在完成复制命令的执行之前。复制命令包括将数据从第一LBA复制到第二LBA。方法还包括:将第一LBA和第二LBA复制到复制命令槽、从主机接收用于从第二LBA读取的读取命令、以及修改读取命令以从第一LBA读取。复制命令管理器还包括命令队列,并且其中将复制命令槽分配给复制命令还包括确定复制命令槽是否可用、以及响应于复制命令槽不可用,将复制命令存储在复制命令队列中。复制命令包括将数据从第一LBA复制到第二LBA。方法还包括:将第一LBA和第二LBA复制到复制命令、从主机接收用于将数据从第一LBA复制到第三LBA的复制命令、刷新复制命令槽、以及暂停读取命令直到第一LBA被复制到第二LBA。复制命令包括将数据从第一LBA复制到第二LBA。方法还包括:将第一LBA和第二LBA复制到复制命令槽、从主机接收用于写入到第一LBA的写入命令、以及暂停写入命令。复制命令包括将数据从第一LBA复制到第二LBA。方法还包括:将第一LBA和第二LBA复制到复制命令槽、从主机接收用于将数据从第二LBA复制到第三LBA的命令、以及将第一LBA和第三LBA复制到第二复制命令槽。
在另一实施方案中,公开了一种用于数据存储设备的控制器,该控制器包括:简单复制命令管理器,该简单复制命令管理器包括多个简单复制命令槽;包括计算机可读指令的一个或多个存储器设备;和处理器,该处理器耦接到一个或多个存储器设备并且被配置为执行计算机可读指令并且使得控制器执行用于简单复制的方法。方法包括:从主机接收包括将数据从第一LBA复制到第二LBA的简单复制命令;确定简单复制命令槽是否可用;以及将数据、第一LBA和第二LBA复制到简单复制命令槽。
控制器还包括重叠表。计算机可读指令还使得处理器更新重叠表并且在简单复制命令完成之前将简单复制命令的完成发布给主机。计算机可读指令还使得处理器从主机接收包括将第三LBA写入到第一LBA的写入命令、以及暂停写入命令。计算机可读指令还使得处理器从主机接收包括将第三LBA写入到第二LBA的写入命令、以及取消简单复制命令。计算机可读指令还使得处理器从主机接收包括将第二数据从第二LBA复制到第三LBA的第二简单复制命令、确定第二简单复制命令槽是否可用、以及将第一数据、第一LBA和第三LBA复制到第二简单复制命令槽。计算机可读指令还使得处理器从主机接收包括读取第二LBA的读取命令、以及从第一LBA读取。用于确定简单复制命令槽是否可用的计算机可读指令还包括确定复制命令槽是否可用、以及响应于命令槽不可用,将简单复制命令存储在复制命令队列中。
在另一实施方案中,公开了一种用于存储数据的系统,该系统包括:一个或多个存储器装置;和控制器装置,该控制器装置被配置为执行用于简单复制的方法。方法包括:从主机接收简单复制命令;从NAND接收复制数据;以及从包括简单复制命令槽的简单复制命令管理器将简单复制命令槽分配给简单复制命令。方法还包括更新控制器的重叠表、以及向主机发布简单复制命令的完成。
简单复制命令包括将数据从第一LBA复制到第二LBA。方法还包括:将第一LBA和第二LBA复制到简单复制命令槽、从主机接收用于写入到第一LBA的写入命令、以及暂停写入命令。简单复制命令管理器还包括简单复制命令队列,并且其中将简单复制命令槽分配给简单复制命令还包括确定简单复制命令槽是否可用、以及响应于简单复制命令槽不可用,将简单复制命令存储在简单复制命令队列中。简单复制命令包括将数据从第一LBA复制到第二LBA。方法还包括:将第一LBA和第二LBA复制到简单复制命令槽、从主机接收用于将数据从第二LBA复制到第三LBA的命令、以及将第一LBA和第三LBA复制到第二简单复制命令槽。简单复制命令包括将数据从第一LBA复制到第二LBA。方法还包括:将第一LBA和第二LBA复制到简单复制命令槽、从主机接收用于从第二LBA读取的读取命令、以及修改读取命令以从第一LBA读取。
虽然前述内容针对本公开的实施方案,但是可以在不脱离本公开的基本范围的情况下设想本公开的其他和另外的实施方案,并且本公开的范围由所附权利要求书确定。
Claims (20)
1.一种数据存储设备,包括:
包括重叠表的控制器和包括复制命令槽的复制命令管理器,所述控制器被配置为执行用于简单复制的方法,所述方法包括:
从主机接收复制命令;
从NAND接收复制数据;
将所述复制命令槽分配给所述复制命令;
更新所述重叠表;以及
向所述主机发布所述复制命令的完成。
2.根据权利要求1所述的数据存储设备,其中所述复制命令的所述完成的所述发布发生在完成所述复制命令的执行之前。
3.根据权利要求2所述的数据存储设备,其中所述复制命令包括将数据从第一LBA复制到第二LBA,所述方法还包括:
将所述第一LBA和所述第二LBA复制到所述复制命令槽;
从所述主机接收用于从所述第二LBA读取的读取命令;以及
修改所述读取命令以从所述第一LBA读取。
4.根据权利要求1所述的数据存储设备,其中所述复制命令管理器还包括命令队列,并且其中所述将所述复制命令槽分配给所述复制命令还包括:
确定所述复制命令槽是否可用;以及
响应于所述复制命令槽不可用,将所述复制命令存储在复制命令队列中。
5.根据权利要求2所述的数据存储设备,其中所述复制命令包括将数据从第一LBA复制到第二LBA,所述方法还包括:
将所述第一LBA和所述第二LBA复制到所述复制命令槽;
从所述主机接收用于将数据从所述第一LBA复制到第三LBA的复制命令;
刷新所述复制命令槽;以及
暂停所述读取命令,直到所述第一LBA被复制到所述第二LBA。
6.根据权利要求2所述的数据存储设备,其中所述复制命令包括将数据从第一LBA复制到第二LBA,所述方法还包括:
将所述第一LBA和所述第二LBA复制到所述复制命令槽;
从所述主机接收用于写入到所述第一LBA的写入命令;以及
暂停所述写入命令。
7.根据权利要求2所述的数据存储设备,其中所述复制命令包括将数据从第一LBA复制到第二LBA,所述方法还包括:
将所述第一LBA和所述第二LBA复制到所述复制命令槽;
从所述主机接收用于将数据从所述第二LBA复制到第三LBA的命令;以及
将所述第一LBA和所述第三LBA复制到第二复制命令槽。
8.一种用于数据存储设备的控制器,包括:
包括多个简单复制命令槽的简单复制命令管理器;
包括计算机可读指令的一个或多个存储器设备;和
处理器,所述处理器耦接到所述一个或多个存储器设备并且被配置为执行所述计算机可读指令并且使得所述控制器执行用于简单复制的方法,所述方法包括:
从主机接收包括将数据从第一LBA复制到第二LBA的简单复制命令;
确定简单复制命令槽是否可用;以及
将所述数据、所述第一LBA和所述第二LBA复制到所述简单复制命令槽。
9.根据权利要求8所述的控制器,还包括重叠表,所述计算机可读指令还使得所述处理器:
更新所述重叠表;以及
在完成所述简单复制命令的执行之前,向所述主机发布所述简单复制命令的完成。
10.根据权利要求9所述的控制器,其中所述计算机可读指令还使得所述处理器:
从所述主机接收包括将第三LBA写入到所述第一LBA的写入命令;以及
暂停所述写入命令。
11.根据权利要求9所述的控制器,其中所述计算机可读指令还使得所述处理器:
从所述主机接收包括将第三LBA写入到所述第二LBA的写入命令;以及
取消所述简单复制命令。
12.根据权利要求9所述的控制器,其中所述计算机可读指令还使得所述处理器:
从所述主机接收包括将第二数据从所述第二LBA复制到第三LBA的第二简单复制命令;
确定第二简单复制命令槽是否可用;以及
将所述第一数据、所述第一LBA和所述第三LBA复制到所述第二简单复制命令槽。
13.根据权利要求9所述的控制器,其中所述计算机可读指令还使得所述处理器:
从所述主机接收包括读取所述第二LBA的读取命令;以及
从所述第一LBA读取。
14.根据权利要求8所述的控制器,其中用于确定简单复制命令槽是否可用的所述计算机可读指令还包括:
确定所述复制命令槽是否可用;以及
响应于命令槽不可用,将所述简单复制命令存储在复制命令队列中。
15.一种用于存储数据的系统,包括:
一个或多个存储器装置;和
控制器装置,所述控制器装置被配置为执行用于简单复制的方法,所述方法包括:
从主机接收简单复制命令;
从NAND接收复制数据;
从包括简单复制命令槽的简单复制命令管理器将所述简单复制命令槽分配给所述简单复制命令;
更新所述控制器的重叠表;以及
向所述主机发布所述简单复制命令的完成。
16.根据权利要求15所述的系统,其中所述向所述主机发布所述简单复制命令的所述完成包括在完成所述简单复制命令的执行之前发布所述完成。
17.根据权利要求16所述的系统,其中所述简单复制命令包括将数据从第一LBA复制到第二LBA,所述方法还包括:
将所述第一LBA和所述第二LBA复制到所述简单复制命令槽;
从所述主机接收用于写入到所述第一LBA的写入命令;以及
暂停所述写入命令。
18.根据权利要求15所述的系统,其中所述简单复制命令管理器还包括简单复制命令队列,并且其中所述将所述简单复制命令槽分配给所述简单复制命令还包括:
确定所述简单复制命令槽是否可用;以及
响应于简单复制命令槽不可用,将所述简单复制命令存储在所述简单复制命令队列中。
19.根据权利要求16所述的系统,其中所述简单复制命令包括将数据从第一LBA复制到第二LBA,所述方法还包括:
将所述第一LBA和所述第二LBA复制到所述简单复制命令槽;
从所述主机接收用于将数据从所述第二LBA复制到第三LBA的命令;以及
将所述第一LBA和所述第三LBA复制到第二简单复制命令槽。
20.根据权利要求16所述的系统,其中所述简单复制命令包括将数据从第一LBA复制到第二LBA,所述方法还包括:
将所述第一LBA和所述第二LBA复制到所述简单复制命令槽;
从所述主机接收用于从所述第二LBA读取的读取命令;以及
修改所述读取命令以从所述第一LBA读取。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/237,949 US11556268B2 (en) | 2021-04-22 | 2021-04-22 | Cache based flow for a simple copy command |
US17/237,949 | 2021-04-22 | ||
PCT/US2022/013917 WO2022225590A1 (en) | 2021-04-22 | 2022-01-26 | Cache based flow for a simple copy command |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116888585A true CN116888585A (zh) | 2023-10-13 |
Family
ID=83694122
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280015991.3A Pending CN116888585A (zh) | 2021-04-22 | 2022-01-26 | 用于简单复制命令的基于高速缓存的流 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11556268B2 (zh) |
CN (1) | CN116888585A (zh) |
DE (1) | DE112022000470T5 (zh) |
WO (1) | WO2022225590A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11977783B2 (en) * | 2021-10-28 | 2024-05-07 | Silicon Motion, Inc. | Method and apparatus for performing data access control of memory device with aid of predetermined command |
US20240143512A1 (en) * | 2022-11-01 | 2024-05-02 | Western Digital Technologies, Inc. | Write buffer linking for easy cache reads |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4278445B2 (ja) | 2003-06-18 | 2009-06-17 | 株式会社日立製作所 | ネットワークシステム及びスイッチ |
US7958430B1 (en) | 2005-06-20 | 2011-06-07 | Cypress Semiconductor Corporation | Flash memory device and method |
US8880775B2 (en) | 2008-06-20 | 2014-11-04 | Seagate Technology Llc | System and method of garbage collection in a memory device |
US8352681B2 (en) * | 2009-07-17 | 2013-01-08 | Hitachi, Ltd. | Storage system and a control method for accelerating the speed of copy processing |
JP5853649B2 (ja) | 2011-11-30 | 2016-02-09 | 富士通株式会社 | ストレージ装置,制御装置及びプログラム |
KR101699377B1 (ko) | 2014-07-02 | 2017-01-26 | 삼성전자주식회사 | 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법 |
KR102336443B1 (ko) | 2015-02-04 | 2021-12-08 | 삼성전자주식회사 | 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치 |
CN106302559B (zh) | 2015-05-11 | 2019-07-05 | 阿里巴巴集团控股有限公司 | 一种数据复制方法和设备 |
KR101750744B1 (ko) | 2015-10-26 | 2017-06-23 | 충북대학교 산학협력단 | 쓰기 전 로깅 연산 장치 및 방법 |
US10235079B2 (en) | 2016-02-03 | 2019-03-19 | Toshiba Memory Corporation | Cooperative physical defragmentation by a file system and a storage device |
US10185658B2 (en) | 2016-02-23 | 2019-01-22 | Sandisk Technologies Llc | Efficient implementation of optimized host-based garbage collection strategies using xcopy and multiple logical stripes |
US10007443B1 (en) | 2016-03-31 | 2018-06-26 | EMC IP Holding Company LLC | Host to device I/O flow |
US10353601B2 (en) | 2016-11-28 | 2019-07-16 | Arm Limited | Data movement engine |
US20180157697A1 (en) | 2016-12-07 | 2018-06-07 | International Business Machines Corporation | Updating change information for current copy relationships when establishing a new copy relationship having overlapping data with the current copy relationships |
US10725835B2 (en) | 2017-05-03 | 2020-07-28 | Western Digital Technologies, Inc. | System and method for speculative execution of commands using a controller memory buffer |
US10452278B2 (en) | 2017-03-24 | 2019-10-22 | Western Digital Technologies, Inc. | System and method for adaptive early completion posting using controller memory buffer |
KR20190023433A (ko) | 2017-08-29 | 2019-03-08 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
KR102293069B1 (ko) | 2017-09-08 | 2021-08-27 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치, 제어기, 그리고 스토리지 장치의 동작 방법 |
US10564857B2 (en) | 2017-11-13 | 2020-02-18 | Western Digital Technologies, Inc. | System and method for QoS over NVMe virtualization platform using adaptive command fetching |
US10915271B2 (en) | 2018-01-29 | 2021-02-09 | Micron Technology, Inc. | Memory controller with programmable atomic operations |
US10990294B2 (en) | 2018-03-26 | 2021-04-27 | Western Digital Technologies, Inc. | Non-volatile storage system with multi-read mode |
US10564872B2 (en) | 2018-06-29 | 2020-02-18 | Western Digital Technologies, Inc. | System and method for dynamic allocation to a host of memory device controller memory resources |
JP7159069B2 (ja) | 2019-01-29 | 2022-10-24 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US11157212B2 (en) | 2019-12-19 | 2021-10-26 | Seagate Technology, Llc | Virtual controller memory buffer |
US11507298B2 (en) | 2020-08-18 | 2022-11-22 | PetaIO Inc. | Computational storage systems and methods |
-
2021
- 2021-04-22 US US17/237,949 patent/US11556268B2/en active Active
-
2022
- 2022-01-26 WO PCT/US2022/013917 patent/WO2022225590A1/en active Application Filing
- 2022-01-26 DE DE112022000470.3T patent/DE112022000470T5/de active Pending
- 2022-01-26 CN CN202280015991.3A patent/CN116888585A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11556268B2 (en) | 2023-01-17 |
US20220342550A1 (en) | 2022-10-27 |
DE112022000470T5 (de) | 2023-11-23 |
WO2022225590A1 (en) | 2022-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106445724B (zh) | 与受保护数据分开存储奇偶校验数据 | |
US11520660B2 (en) | Storage devices hiding parity swapping behavior | |
US20230051007A1 (en) | Command Draining Using Host Memory Buffer | |
CN116888585A (zh) | 用于简单复制命令的基于高速缓存的流 | |
US11513736B2 (en) | Revised host command generation for unaligned access | |
CN113744783A (zh) | 分区名称空间(zns)驱动器中的写入数据传送调度 | |
WO2024063821A1 (en) | Dynamic and shared cmb and hmb allocation | |
US11853571B2 (en) | Storage devices hiding parity swapping behavior | |
US11733920B2 (en) | NVMe simple copy command support using dummy virtual function | |
US11138066B1 (en) | Parity swapping to DRAM | |
US20210333996A1 (en) | Data Parking for SSDs with Streams | |
CN113946371A (zh) | 存储器设备的并行引导执行 | |
WO2021216125A1 (en) | Storage devices having minimum write sizes of data | |
US20240103726A1 (en) | NVMe Copy Command Acceleration | |
US11966582B2 (en) | Data storage device that detects and releases bottlenecks | |
US20240111427A1 (en) | Data Storage Device That Detects And Releases Input Queue Bottlenecks | |
US11640335B2 (en) | Multiple function level reset management | |
US20240111426A1 (en) | Data Storage Device That Detects and Releases Bottlenecks In Hardware | |
US20230289226A1 (en) | Instant Submission Queue Release | |
US11893248B2 (en) | Secure metadata protection | |
US20220405011A1 (en) | Latency On Indirect Admin Commands | |
US20230297277A1 (en) | Combining Operations During Reset | |
CN118202328A (zh) | PCIe TLP大小和对齐管理 | |
CN117642716A (zh) | 从hmb丢失的恢复 | |
CN115840661A (zh) | 从hmb丢失恢复的无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 |