CN113434083A - 存储设备读命令融合方法及其装置 - Google Patents
存储设备读命令融合方法及其装置 Download PDFInfo
- Publication number
- CN113434083A CN113434083A CN202010207010.8A CN202010207010A CN113434083A CN 113434083 A CN113434083 A CN 113434083A CN 202010207010 A CN202010207010 A CN 202010207010A CN 113434083 A CN113434083 A CN 113434083A
- Authority
- CN
- China
- Prior art keywords
- command
- media interface
- hit
- queue
- read
- 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
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)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
公开了存储设备读命令融合方法及其装置。所公开的命令处理方法,包括:生成介质接口命令,其中介质接口命令包括地址字段与数据帧位图字段;以及根据介质接口命令生成一条或多条存储介质访问命令;其中地址字段指示用单条存储介质访问命令可访问的存储介质的操作单元;以及数据帧位图字段指示所述地址字段指示的操作单元所容纳的多个数据帧中需要被访问的一个或多个数据帧。
Description
技术领域
本申请涉及存储设备技术,尤其涉及在存储设备中融合要发送给非易失存储介质的读命令的方法及实施这种方法的控制器。
背景技术
图1展示了固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial AttachedSCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component InterconnectExpress,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM芯片105以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(MagneticRandom Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)、XPoint存储器等是常见的NVM。
接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
控制部件104用于控制在接口103、NVM芯片105以及DRAM 110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO(Input/Output)命令。控制部件104还可以耦合到DRAM 110,并可访问DRAM 110的数据。在DRAM可存储FTL表和/或缓存的IO命令的数据。
控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
NVM芯片包括一个或多个逻辑单元(Logic Unit,LUN)。NVM芯片封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NVM芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron.com/~/media/Documents/Products/Other%20Documents/ONFI3_0Gold.ashx获得的“Open NAND Flash InterfaceSpecification(Revision 3.0)”中,提供了关于目标(target)、逻辑单元、平面(Plane)的含义,其为现有技术的一部分。
NVM芯片通常按页来存储和读取数据。而按块来擦除数据。块(也称物理块)包含多个页(也称为物理页)。物理页具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
在存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的存储设备的存储空间。物理地址是用于访问存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是存储设备中的重要元数据。通常FTL表的数据项记录了存储设备中以数据页为单位的地址映射关系。
一些存储设备的FTL由存储设备所耦合的主机提供,由主机的存储器存储FTL表,主机的处理器执行软件提供FTL。还有一些被设置在主机与存储设备之间的存储管理装置提供FTL。
图2展示了存储设备的控制部件的详细的框图。
主机以遵循存储协议的IO命令访问存储设备。控制部件根据来自主机的IO命令,生成一个或多个存储命令并提供给介质接口控制器。介质接口控制器根据存储命令生遵循NVM芯片的接口协议的存储介质访问命令(例如,编程命令、读命令、擦除命令)。控制部件还跟踪从一个IO命令生成的所有存储命令都被执行完成,并向主机指示IO命令的处理结果。
参看图2,控制部件包括例如主机接口、主机命令处理单元、存储命令处理单元、介质接口控制器与存储介质管理单元。主机接口获取主机提供的IO命令,并生成存储命令提供给存储命令处理单元。存储命令例如访问相同大小的存储空间,例如4KB。将NVM芯片中记录的对应一个存储命令所访问数据的数据单元称为数据帧。物理页记录一个或多个数据帧。例如,物理页的大小17664字节,而数据帧大小为4KB,则一个物理页能存储4个数据帧。
存储介质管理单元为每个存储命令维护逻辑地址到物理地址的转换。例如,存储介质管理单元包括FTL表。对于读命令,存储介质管理单元输出存储命令所访问的逻辑地址对应的物理地址,对于写命令,存储介质管理单元为其分配可用的物理地址,并记录其访问的逻辑地址与分配的物理地址的映射关系。存储介质管理单元还维护诸如垃圾回收、磨损均衡等管理NVM芯片所需的功能。
存储命令处理单元根据存储介质管理单元提供的物理地址,操作介质接口控制器向NVM芯片发出存储介质访问命令。为了清楚的目的,将存储命令处理单元发送给介质接口控制器的命令称为介质接口命令,而将介质接口控制器发送给NVM芯片的命令称为存储介质访问命令。存储介质访问命令遵循NVM芯片的接口协议。以读命令为例,NVM芯片支持的读命令按读取的数据大小分为多种类型,例如读完整物理页的读命令,读例如一个、两个或更多数据帧的读命令,读多个平面的读命令,读字线的多个物理页的读命令等。
介质接口命令同存储介质访问命令对应,从而介质接口控制器根据介质接口命令的类型,确定生成的存储介质访问命令的类型。通常情况下,存储命令处理单元为每个访问例如4KB存储空间的存储命令生成介质接口命令。在识别出读大块数据的连续读取场景时,存储命令处理单元融合多个存储命令而生成访问例如完整物理页数据大小的介质接口命令。
发明内容
存储介质访问命令中,读完整物理页的读命令所读取的数据同读物理页的每个数据帧的多条读命令共同读取的数据相同,显然通过后者读取数据,介质接口控制器与NVM芯片都需要付出更大的开销(时间、功耗、处理能力)。因而使用了融合多个存储命令的介质接口访问命令是有利的。
现有技术的控制部件向介质接口控制器发送多种类型的介质接口命令。而主机访问存储设备的读IO命令通常具有随机性,并且希望对IO命令的处理有低延迟。因而控制部件不会为了融合存储命令而花费过长等待可融合的一个或多个存储命令,而希望尽快处理存储命令并根据存储命令向介质接口控制器发送介质接口命令。因而控制部件提供给介质接口控制器的介质接口命令大多数情况下是访问数据帧大小的介质接口命令。这与希望融合多个存储命令的需求相冲突。
希望以对存储命令的低延迟处理来向介质接口控制器发送对应的介质访问命令,又希望介质接口控制器减少向NVM芯片发出的存储介质访问读命令的数量,还希望为新功能的引入保持低的技术复杂度。
根据本申请的第一方面,提供了根据本申请第一方面的第一命令处理方法,包括:生成介质接口命令,其中介质接口命令包括地址字段与数据帧位图字段;以及根据介质接口命令生成一条或多条存储介质访问命令;其中地址字段指示用单条存储介质访问命令可访问的存储介质的操作单元;以及数据帧位图字段指示所述地址字段指示的操作单元所容纳的多个数据帧中需要被访问的一个或多个数据帧。
根据本申请第一方面的第一命令处理方法,提供了根据本申请第一方面的第二命令处理方法,其中若数据帧位图字段指示所述地址字段指示的操作单元所容纳的所有数据帧都需要被访问,则生成单条访问存储介质访问命令以访问所述地址字段指示的完整操作单元;和/或若数据帧位图字段指示访问所述地址字段指示的操作单元所容纳的一个或多个而非所有数据帧,则生成多条访问存储介质访问命令以访问所述地址字段指示的操作单元的一个或多个数据帧。
根据本申请第一方面的第一或第二命令处理方法,提供了根据本申请第一方面的第三命令处理方法,其中所述操作单元是非易失存储介质的物理页、字线或多平面物理页。
根据本申请第一方面的第一至第三命令处理方法之一,提供了根据本申请第一方面的第四命令处理方法,还包括:若所述生成的介质接口命令命中了命令队列中的介质接口命令,根据所述生成的介质接口命令更新被命中的介质接口命令的数据帧位图;以及丢弃所述生成的介质接口命令。
根据本申请第一方面的第四命令处理方法,提供了根据本申请第一方面的第五命令处理方法,还包括:若所述生成的介质接口命令未命中命令队列中的介质接口命令,将所述生成的介质接口命令添加到命令队列的队尾。
根据本申请第一方面的第四或第五命令处理方法,提供了根据本申请第一方面的第六命令处理方法,其中根据所述生成的介质接口命令的地址字段指示的操作单元同命令队列中的介质接口命令的地址字段指示的操作单元是否相同来识别所述生成的介质接口命令是否命中了命令队列中的介质接口命令。
根据本申请第一方面的第一至第六命令处理方法之一,提供了根据本申请第一方面的第七命令处理方法,还包括:从命令队列的队头获取介质接口命令;若所述获取的介质接口命令命中了命令队列中的一个或多个介质接口命令,从命令队列中移除被命中的介质接口命令,以及根据被命中的介质接口命令更新所述获取的介质接口命令的数据帧位图,再处理所述获取的介质接口命令。
根据本申请第一方面的第七命令处理方法,提供了根据本申请第一方面的第八命令处理方法,还包括:若所述获取的介质接口命令未命中命令队列中的介质接口命令,则处理所述获取的介质接口命令。
根据本申请第一方面的第七或第八命令处理方法,提供了根据本申请第一方面的第九命令处理方法,还包括:缓存被移除的介质接口命令;以及响应于处理所述获取的介质接口命令成功而释放被缓存的介质接口命令。
根据本申请第一方面的第九命令处理方法,提供了根据本申请第一方面的第十命令处理方法,还包括:响应于处理所述获取的介质接口命令失败而处理缓存的介质接口命令。
根据本申请第一方面的第一至第三命令处理方法之一,提供了根据本申请第一方面的第十一命令处理方法,还包括:若所述生成的介质接口命令是介质接口读命令,所述生成的介质接口命令扩展命中了命令队列中的介质接口读命令,且所述生成的介质接口命令未扩展命中命令队列中的介质接口写命令,则根据所述生成的介质接口命令更新被命中的介质接口命令的数据帧位图;以及丢弃所述生成的介质接口命令。
根据本申请第一方面的第十一命令处理方法,提供了根据本申请第一方面的第十二命令处理方法,还包括:若所述生成的介质接口命令是介质接口读命令,所述生成的介质接口命令扩展命中了命令队列中的介质接口读命令,所述生成的介质接口命令扩展命中了命令队列中的介质接口写命令,且被命中的介质接口写命令在命令队列中位于被命中的介质接口读命令之前,则根据所述生成的介质接口命令更新被命中的介质接口命令的数据帧位图;以及丢弃所述生成的介质接口命令。
根据本申请第一方面的第十一或第十二命令处理方法,提供了根据本申请第一方面的第十三命令处理方法,还包括:若所述生成的介质接口命令是介质接口读命令,所述生成的介质接口命令扩展命中了命令队列中的介质接口读命令,所述生成的介质接口命令扩展命中了命令队列中的介质接口写命令,且被命中的介质接口写命令在命令队列中位于被命中的介质接口读命令之后,则从命令队列中移除所述被命中的介质接口读命令,根据被移除介质接口命令更新所述生成的介质接口命令的数据帧位图,以及将所述生成的介质接口读命令添加到命令队列的队尾。
根据本申请第一方面的第一至第三、第十一至第十三命令处理方法之一,提供了根据本申请第一方面的第十四命令处理方法,还包括:从命令队列的队头获取介质接口命令;若所述获取的介质接口命令是介质接口读命令,所述获取的介质接口命令扩展命中了命令队列中的介质接口读命令,且所述获取的介质接口命令未扩展命中命令队列中的介质接口写命令,则根据被命中的介质接口读命令更新所述获取的介质接口读命令的数据帧位图,以及从命令队列移除被命中的介质接口读命令。
根据本申请第一方面的第十四命令处理方法,提供了根据本申请第一方面的第十五命令处理方法,还包括:若所述获取的介质接口命令是介质接口读命令,所述获取的介质接口命令扩展命中了命令队列中的介质接口读命令,也扩展命中了命令队列中的介质接口写命令,且被命中的介质接口写命令在命令队列中位于被命中的介质接口读命令之后,则根据被命中的介质接口读命令更新所述获取的介质接口读命令的数据帧位图,以及从命令队列移除被命中的介质接口读命令。
根据本申请第一方面的第十四或第十五命令处理方法,提供了根据本申请第一方面的第十六命令处理方法,还包括:若所述获取的介质接口命令是介质接口读命令,所述获取的介质接口命令扩展命中了命令队列中的介质接口读命令,也扩展命中了命令队列中的介质接口写命令,且被命中的介质接口写命令在命令队列中位于被命中的介质接口读命令之前,则根据所述获取的介质接口读命令更新被命中的介质接口读命令的数据帧位图,以及丢弃所述获取的介质接口读命令。
根据本申请第一方面的第十四至第十六命令处理方法之一,提供了根据本申请第一方面的第十七命令处理方法,还包括:若所述获取的介质接口命令是介质接口读命令,所述获取的介质接口命令扩展命中了命令队列中的第一介质接口读命令与第二介质接口读命令,也扩展命中了命令队列中的介质接口写命令,且被命中的介质接口写命令在命令队列中位于第一介质接口读命令之前,第二介质接口读命令之后,则根据所述获取的介质接口读命令与第二介质接口读命令更新第一介质接口读命令的数据帧位图,从命令队列移除所述第二介质接口读命令,以及丢弃所述获取的介质接口读命令。
根据本申请第一方面的第十四至第十七命令处理方法之一,提供了根据本申请第一方面的第十八命令处理方法,还包括:缓存被移除的介质接口读命令与被丢弃的介质接口读命令;以及响应于处理介质接口命令成功而释放被缓存的被融合到该处理成功的介质接口读命令的一个或多个介质接口读命令。
根据本申请第一方面的第十八命令处理方法,提供了根据本申请第一方面的第十九命令处理方法,还包括:响应于处理处理介质接口命令失败而处理被缓存的被融合到该处理成功的介质接口读命令的一个或多个介质接口读命令。
根据本申请第一方面的第一至第三命令处理方法之一,提供了根据本申请第一方面的第二十命令处理方法,还包括:若所述生成的介质接口命令是介质接口读命令,所述生成的介质接口命令非扩展命中了命令队列中的介质接口读命令,则根据所述生成的介质接口命令更新被命中的介质接口命令的数据帧位图;以及丢弃所述生成的介质接口命令。
根据本申请第一方面的第二十命令处理方法,提供了根据本申请第一方面的第二十一命令处理方法,还包括:若所述生成的介质接口命令是介质接口读命令,所述生成的介质接口命令未非扩展命中命令队列中的介质接口读命令,所述生成的介质接口命令扩展命中了命令队列中的介质接口读命令,且所述生成的介质接口命令未扩展命中命令队列中的介质接口写命令,则根据所述生成的介质接口命令更新被命中的介质接口命令的数据帧位图;以及丢弃所述生成的介质接口命令。
根据本申请第一方面的第二十或第二十一命令处理方法,提供了根据本申请第一方面的第二十二命令处理方法,还包括:若所述生成的介质接口命令是介质接口读命令,所述生成的介质接口命令未非扩展命中命令队列中的介质接口读命令,所述生成的介质接口命令扩展命中了命令队列中的介质接口读命令,所述生成的介质接口命令扩展命中了命令队列中的介质接口写命令,且被命中的介质接口写命令在命令队列中位于被命中的介质接口读命令之前,则根据所述生成的介质接口命令更新被命中的介质接口命令的数据帧位图;以及丢弃所述生成的介质接口命令。
根据本申请第一方面的第二十至第二十二命令处理方法之一,提供了根据本申请第一方面的第二十三命令处理方法,还包括:若所述生成的介质接口命令是介质接口读命令,所述生成的介质接口命令未非扩展命中命令队列中的介质接口读命令,所述生成的介质接口命令扩展命中了命令队列中的介质接口读命令,所述生成的介质接口命令扩展命中了命令队列中的介质接口写命令,且被命中的介质接口写命令在命令队列中位于被命中的介质接口读命令之后,则从命令队列中移除所述被命中的介质接口读命令,根据被移除介质接口命令更新所述生成的介质接口命令的数据帧位图,以及将所述生成的介质接口读命令添加到命令队列的队尾。
根据本申请第一方面的第二十至第二十三命令处理方法之一,提供了根据本申请第一方面的第二十四命令处理方法,还包括:若所述生成的介质接口命令是介质接口读命令,所述生成的介质接口命令未非扩展命中命令队列中的介质接口读命令,所述生成的介质接口命令扩展命中了命令队列中的第一介质接口读命令与第二介质接口读命令,所述生成的介质接口命令扩展命中了命令队列中的介质接口写命令,且被命中的介质接口写命令在命令队列中位于第一介质接口读命令之前,第二介质接口读命令之后,则根据所述生成的介质接口读命令与第二介质接口读命令更新第一介质接口读命令的数据帧位图,从命令队列移除所述第二介质接口读命令,以及丢弃所述生成的介质接口读命令。
根据本申请第一方面的第一至第三、第二十至第二十四命令处理方法之一,提供了根据本申请第一方面的第二十五命令处理方法,还包括:从命令队列的队头获取介质接口命令;若所述获取的介质接口命令是介质接口读命令,所述获取的介质接口命令非扩展命中了命令队列中的介质接口读命令,则根据被命中的介质接口读命令更新所述获取的介质接口读命令的数据帧位图,以及从命令队列移除被命中的介质接口读命令。
根据本申请第一方面的第二十五命令处理方法,提供了根据本申请第一方面的第二十六命令处理方法,还包括:若所述获取的介质接口命令是介质接口读命令,所述获取的介质接口命令未非扩展命中了命令队列中的介质接口读命令,所述获取的介质接口命令扩展命中了命令队列中的介质接口读命令,且所述获取的介质接口命令未扩展命中命令队列中的介质接口写命令,则根据被命中的介质接口读命令更新所述获取的介质接口读命令的数据帧位图,以及从命令队列移除被命中的介质接口读命令。
根据本申请第一方面的第二十五或第二十六命令处理方法,提供了根据本申请第一方面的第二十七命令处理方法,还包括:若所述获取的介质接口命令是介质接口读命令,所述获取的介质接口命令未非扩展命中了命令队列中的介质接口读命令,所述获取的介质接口命令扩展命中了命令队列中的介质接口读命令,也扩展命中了命令队列中的介质接口写命令,且被命中的介质接口写命令在命令队列中位于被命中的介质接口读命令之后,则根据被命中的介质接口读命令更新所述获取的介质接口读命令的数据帧位图,以及从命令队列移除被命中的介质接口读命令。
根据本申请第一方面的第二十五至第二十七命令处理方法之一,提供了根据本申请第一方面的第二十八命令处理方法,还包括:若所述获取的介质接口命令是介质接口读命令,所述获取的介质接口命令未非扩展命中了命令队列中的介质接口读命令,所述获取的介质接口命令扩展命中了命令队列中的介质接口读命令,也扩展命中了命令队列中的介质接口写命令,且被命中的介质接口写命令在命令队列中位于被命中的介质接口读命令之前,则根据所述获取的介质接口读命令更新被命中的介质接口读命令的数据帧位图,以及丢弃所述获取的介质接口读命令。
根据本申请第一方面的第二十五至第二十八命令处理方法之一,提供了根据本申请第一方面的第二十九命令处理方法,还包括:若所述获取的介质接口命令是介质接口读命令,所述获取的介质接口命令未非扩展命中了命令队列中的介质接口读命令,所述获取的介质接口命令扩展命中了命令队列中的第一介质接口读命令与第二介质接口读命令,也扩展命中了命令队列中的介质接口写命令,且被命中的介质接口写命令在命令队列中位于第一介质接口读命令之前,第二介质接口读命令之后,则根据所述获取的介质接口读命令与第二介质接口读命令更新第一介质接口读命令的数据帧位图,从命令队列移除所述第二介质接口读命令,以及丢弃所述获取的介质接口读命令。
根据本申请第一方面的第二十五至第二十九命令处理方法之一,提供了根据本申请第一方面的第三十命令处理方法,还包括:缓存被移除的介质接口读命令与被丢弃的介质接口读命令;以及响应于处理介质接口命令成功而释放被缓存的被融合到该处理成功的介质接口读命令的一个或多个介质接口读命令。
根据本申请第一方面的第三十命令处理方法,提供了根据本申请第一方面的第三十一命令处理方法,还包括:响应于处理处理介质接口命令失败而处理被缓存的被融合到该处理成功的介质接口读命令的一个或多个介质接口读命令。
根据本申请的第二方面,提供了根据本申请第二方面的第一介质接口控制器,包括:命中检查单元、命令队列更新单元、命令处理单元与介质接口;命中检查单元同命令队列、命令队列更新单元与命令处理单元耦合,并检查从命令队列获取的介质接口读命令是否命中了命令队列中的介质接口读命令,将被命中的介质接口命令在命令队列的索引提供给命令队列更新单元;命令队列更新单元融合所获取的介质接口读命令与命中的介质接口读命令;命令处理单元根据介质接口读命令操作介质接口发出存储介质访问命令。
根据本申请第二方面的第一介质接口控制器,提供了根据本申请第二方面的第二介质接口控制器,其中若获取的介质接口读命令未命中命令队列中的介质接口读命令,命中检查单元将获取的介质接口读命令提供给所述命令处理单元。
根据本申请第二方面的第一或第二介质接口控制器,提供了根据本申请第二方面的第三介质接口控制器,其中命令队列更新单元从命令队列移除被命中的介质接口读命令,并用被命中的介质接口读命令更新所获取的介质接口读命令的数据帧位图,以及将更新后的介质接口读命令提供给所述命令处理单元。
根据本申请第二方面的第三介质接口控制器,提供了根据本申请第二方面的第四介质接口控制器,其中命令队列更新单元将被移除的介质接口读命令搬移到缓存。
根据本申请第二方面的第四介质接口控制器,提供了根据本申请第二方面的第五介质接口控制器,还包括缓存管理单元;介质接口将存储介质访问命令的处理结果提供给所述缓存管理单元;响应于处理结果指示第一介质接口读命令处理失败,缓存管理单元将同第一介质接口读命令对应的被缓存的一个或多个介质接口读命令提供给命令处理单元。
根据本申请第二方面的第一至第五介质接口控制器之一,提供了根据本申请第二方面的第六介质接口控制器,其中命中检查单元将被命中且需要被融合的介质接口命令在命令队列的索引提供给命令队列更新单元,并指示命令队列更新单元融合该需要被融合的接口命令与该获取的介质接口命令。
根据本申请第二方面的第六介质接口控制器,提供了根据本申请第二方面的第七介质接口控制器,其中命中检查单元识别出所获取的介质接口读命令扩展命中了命令队列中的一个或多个介质接口读命令,还扩展命中了介质接口写命令,被命中的介质接口读命令在被命中的介质接口写命令之前,作为响应,命中检查单元将所获取的介质接口读命令与被命中的介质接口读命令在命令队列中的索引提供给命令队列更新单元。
根据本申请第二方面的第六或第七介质接口控制器,提供了根据本申请第二方面的第八介质接口控制器,其中命中检查单元识别出所获取的介质接口读命令扩展命中了命令队列中的介质接口读命令,还扩展命中了介质接口写命令,被命中的介质接口读命令在被命中的介质接口写命令之后,作为响应,命中检查单元将所获取的介质接口读命令与被命中的介质接口读命令在命令队列中的索引提供给命令队列更新单元;命令队列更新单元用所获取的介质接口读命令更新被命中的介质接口读命令的数据帧位图,并缓存所获取的介质接口读命令而不将其发送给命令处理单元。
根据本申请第二方面的第六至第八介质接口控制器之一,提供了根据本申请第二方面的第九介质接口控制器,其中命中检查单元识别出所获取的介质接口读命令扩展命中了命令队列中的第一介质接口读命令与第二介质接口读命令,还扩展命中了介质接口写命令,被命中的介质接口写命令在命令队列中位于第一介质接口读命令之前,第二介质接口读命令之后,作为响应,命中检查单元将所获取的介质接口读命令、第一介质接口读命令在命令队列中的索引与第二介质接口读命令在命令队列中的索引分别提供给命令队列更新单元;命令队列更新单元根据所获取的介质接口读命令与第二介质接口读命令更新第一介质接口读命令的数据帧位图,从命令队列移除所述第二介质接口读命令,并缓存所获取的介质接口读命令与第二介质接口读命令,且不将所获取的介质接口读命令发送给命令处理单元。
根据本申请的第三方面,提供了根据本申请第三方面的第一存储设备的控制部件,包括控制部件与非易失存储器,所述控制部件执行根据本申请第一方面的第一至第三十一命令处理方法之一。
根据本申请的第四方面,提供了根据本申请第四方面的第一存储设备的控制部件,包括控制部件与非易失存储器,所述控制部件还包括根据本申请第一方面的第一至第九介质接口控制器之一。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1展示了现有技术的存储设备的框图;
图2展示了存储设备的控制部件的详细的框图;
图3展示了根据本申请实施例的向介质接口控制器交付介质接口命令的示意图;
图4A展示了根据本申请又一实施例的向介质接口控制器交付介质接口命令的示意图;
图4B展示了根据本申请实施例的存储命令处理单元融合介质接口命令的流程图;
图4C展示了根据本申请实施例的介质接口控制器融合介质接口命令的流程图;
图5展示了存在访问相同地址的多个介质接口命令的命令队列;
图6展示了3D NAND存储介质的架构图;
图7A-7C展示了存在访问相同扩展操作单元的多个介质接口命令的命令队列;
图8A展示了根据本申请又一实施例的存储命令处理单元融合介质接口命令的流程图;
图8B展示了根据本申请又一实施例的介质接口控制器融合介质接口命令的流程图;
图9A展示了根据本申请再一实施例的存储命令处理单元融合介质接口命令的流程图;
图9B展示了根据本申请再一实施例的介质接口控制器融合介质接口命令的流程图;以及
图10展示了根据本申请依然又一实施例的介质接口控制器的框图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图3展示了根据本申请实施例的向介质接口控制器交付介质接口命令的示意图。
存储命令处理单元通过命令队列320向介质接口控制器交付介质接口命令。命令队列的每个条目是介质接口命令之一。
根据本申请的实施例的介质接口命令包括多个字段,指示了例如介质接口命令的类型、数据帧位图与要访问的地址。作为举例,图3展示了3个介质接口命令(310、312与314)。介质接口命令的类型字段指示例如读命令、写命令或擦除命令。对于读命令,介质接口命令的要访问的地址字段指示了例如NVM芯片的物理页地址。一个物理页能承载一个或多个数据帧。数据帧位图字段指示了地址字段指示的物理页中要访问的一个或多个数据帧。例如,物理页包括N个数据帧(N为正整数,例如,N=4),数据帧位图字段包括N比特,每比特指示物理页的N个数据帧之一是否被访问。从而,根据本申请实施例的一条介质接口命令得以指示存储介质访问命令的不同类型。例如,介质接口命令的数据帧位图字段指示物理页的所有N个数据帧都被访问,则介质接口控制器相应地生成访问完整物理页的存储介质访问命令。作为又一个例子,若介质接口命令的数据帧位图字段指示物理页的单一数据帧被访问,则介质接口控制器生成访问单一数据帧的存储介质访问命令。在又一个例子中,介质接口命令的数据帧位图字段指示物理页的3个数据帧被访问,则生成一条访问单一数据帧的存储介质访问命令与一条访问两个数据帧的存储介质访问命令,或者生成一条访问物理页的存储介质访问命令,并从读出的数据中丢弃介质接口命令的数据帧位图字段未指示的数据帧。
参看图3,介质接口命令310访问物理页1的数据帧1与数据帧3,其数据帧位图字段的第1比特与第3比特(从右向左)为“1”来指示对这些数据帧的访问。介质接口命令312访问物理页2的数据帧1,介质接口命令314访问物理页3的所有四个数据帧。
介质接口控制器从命令队列320的队头获取介质接口命令。并根据介质接口命令生成存储介质访问命令提供给NVM芯片。例如,根据介质接口命令310,生成两个访问单一数据帧的存储介质访问命令发送给NVM芯片;根据介质接口命令312,生成一个访问单一数据帧的存储介质访问命令发送给NVM芯片;而根据介质接口命令314,生成一个访问完整物理页的存储介质访问命令发送给NVM芯片。从而,根据本申请实施例的控制部件,通过4条存储介质访问命令完成了对7个数据帧的读取。
还希望进一步融合介质接口命令,以减少向NVM芯片发出的存储介质访问命令的数量。
图4A展示了根据本申请又一实施例的向介质接口控制器交付介质接口命令的示意图。
存储命令处理单元450通过命令队列420向介质接口控制器460提交介质接口命令。
根据图4A展示的实施例,在一种可选的实施方式中,命令处理单元450除了向命令队列420的队尾提交介质接口命令,还耦合命令队列420的每个条目,以在必要时更新命令队列420中的介质接口命令(包括非队尾条目的介质接口命令)。作为举例,存储命令处理单元450耦合命令队列420的每个条目的容纳介质接口命令的地址字段。从而,在向命令队列420添加新的介质接口命令前,存储命令处理单元450识别该新的介质接口命令是否命中了命令队列420中的介质接口命令。“命中”被理解为该新的介质接口命令的地址字段同命令队列420的介质接口命令的地址字段相同,或者至少部分比特相同。可以理解的,仅识别命令队列420中的读命令是否命中。若该新的介质接口命令未命中命令队列420中的任何介质接口命令,则存储命令处理单元420将该新的介质接口命令添加到命令队列420的队尾。若该新的介质接口命令命中了命令队列420中的介质接口命令,则用该新的介质接口命令的数据帧位图字段更新被命中的介质接口命令,而不将该新的介质接口命令添加到命令队列420。用该新的介质接口命令的数据帧位图字段更新被命中的介质接口命令,使得被更新的介质接口命令的数据帧位图字段指示要访问该新的介质接口命令与该被命中介质接口命令二者要访问的所有数据帧。例如,用该新的介质接口命令的数据帧位图字段同被命中的介质接口命令的数据帧位图字段执行“或”运算,用运算结果更新被命中的介质接口命令。
从而,存储命令处理单元450得以利用命令队列420对介质接口命令实施进一步的融合,以减少由介质接口控制器480所处理的介质接口命令,并增加介质接口控制器480产生访问完整物理页的存储介质访问命令的几率。还无须存储命令处理单元450为实施融合而等待更多的存储命令。
继续参看图4A,在另一种可选的实施方式中,命令处理单元450仅向命令队列420的队尾添加介质接口命令而不实施融合。由介质接口控制器460对命令队列420中的介质接口命令实施融合。作为举例,介质接口控制器460从命令队列420的队头取出介质接口命令并处理。介质接口控制器460还耦合命令队列420的每个条目的容纳介质接口命令的地址字段。从而,在从命令队列420的队头取出介质接口命令时,介质接口处理器460识别该取出的介质接口命令是否命中了命令队列420中的介质接口命令。若该取出的介质接口命令未命中命令队列420中的任何介质接口命令,则介质接口控制器460对该取出的介质接口命令进行处理,例如根据介质接口命令生成存储介质访问命令。若该取出的介质接口命令命中了命令队列420中的一个或多个介质接口命令,则用被命中的一个或多个介质命令的数据帧位图字段更新该取出的介质接口命令的数据帧位图字段。以及还将被命中的介质接口命中从命令队列420移除而不再对其进行处理。被更新的介质接口命令的数据帧位图字段指示要访问该取出的介质接口命令与该被命中的一个或多个介质接口命令要访问的所有数据帧。介质接口控制器460根据被更新的介质接口命令生成存储介质访问命令。例如,若被更新的介质接口命令的数据帧位图指示访问物理页的所有数据帧,则生成访问完整物理页的存储介质访问命令,从而减少了所生成的存储介质访问命令的数量。
从而,介质接口控制器460得以利用命令队列420对介质接口命令实施进一步的融合,以减少由介质接口控制器480所处理的介质接口命令,并增加介质接口控制器480产生访问完整物理页的存储介质访问命令的几率。还无须存储命令处理单元450为实施融合而等待更多的存储命令。
图4B展示了根据本申请实施例的存储命令处理单元融合介质接口命令的流程图。图4B展示的流程,由图4A中的存储命令处理单元450实施。
存储命令处理单元450获取待发送给介质接口控制器460的介质接口读命令(470)。用获取的介质接口命令的例如地址字段检查是否命中了命令队列420中的介质接口命令(472)。若获取的介质接口命令未命中命令队列420中的介质接口命令(472),将获取的介质接口命令添加到命令队列420的队尾(476)。若获取的介质接口命令命中了命令队列420中的介质接口命令(472),用获取的介质接口命令更新被命中的介质接口命令的数据帧位图(478)。
图4C展示了根据本申请实施例的介质接口控制器融合介质接口命令的流程图。图4C展示的流程,由图4A中的介质接口控制器460实施。
介质接口控制器460从命令队列420获取待要处理的介质接口读命令(480)。用获取的介质接口命令的例如地址字段检查是否命中了命令队列420中的介质接口命令(482)。若获取的介质接口命令未命中命令队列420中的任何介质接口命令(482),则对该获取的介质接口命令进行处理(484)。若获取的介质接口命令命中了命令队列420中的一个或多个介质接口命令(482),则从命令队列420中移除被命中的所有介质接口命令(486),用被命中的所有介质接口命令更新所获取的介质接口命令的数据帧位图(488),再对该所获取的介质接口命令进行处理(490)。
可选地,介质接口控制器460还缓存从命令队列420中移除被命中的所有介质接口命令,而响应于对步骤490中的介质接口命令处理完成,再释放被缓存的所有介质接口命令。若步骤490中的介质接口命令处理失败,则除了向存储命令处理单元指示该介质接口命令处理失败,还获取被缓存的所有介质接口命令并处理。
根据本申请图4A-4C展示的实施例,改变了命令队列420中的介质接口命令的处理顺序。通常这不会引起读写冲突。由命令处理顺序改变引起的读写冲突,存在于例如访问相同地址的读命令存在于写命令之后的情况。写命令会改变所访问地址的数据,而在后的读命令应当读到改变后的被写入数据。当改变了访问相同地址的读命令与写命令的处理顺序,使得读命令可能先于写命令之前发生,将可能导致读命令读到的不是写命令所写入的数据。图5展示了存在访问相同地址的多个介质接口命令的命令队列。
参看图5,命令队列包括访问物理页P1的介质接口读命令(510)与访问物理页P1的介质接口写命令(520),以及要向命令队列添加的访问物理页P1的介质接口读命令(530)。向下的箭头指示了队列的方向,队头在下方,而队尾在上方。存储命令处理单元向命令队列添加介质接口读命令(530)时,由于介质接口读命令530命中了介质接口读命令510,用介质接口读命令530更新介质接口读命令510的数据帧位图字段,并且介质接口读命令530不被添加到命令队列。但这样的融合,将导致原本在介质接口写命令520之后发生的介质接口读命令530被抢先处理,使得介质接口读命令510为介质接口读命令530读取数据帧时获取到错误的数据。然而,根据本申请的实施例,这种情况是不会发生的。以NAND闪存为例,NVM芯片具有先编程再读取且不可被重复编程的特点。从而存储命令处理单元在向物理页P1写入数据之前,不会发出读取物理页P1的介质接口命令;以及在向物理页P1写入数据之后,也不会再发出向物理页P1写入数据的介质接口命令。从而在图5中,由于介质接口命令510的存在,意味着物理页P1已被写入数据,因而在介质接口命令510之后(物理页P1被擦除前),不会有向物理页P1写入数据的介质接口命令出现。
在一些情况下,命令队列中包括擦除命令,从而破坏了上述约束条件。因而,在可选的实施方式中,存储命令处理单元在识别待添加到命令队列的介质接口命令是否命中队列中的介质接口命令时,还检查命令队列中是否包括被命中的擦除命令。若命令队列中有被命中的擦除命令,存储命令处理单元仅将待添加的介质接口命令添加到命令队列的队尾,而不尝试融合介质接口命令。类似地,在由接着接口控制器实施融合的实施例中,介质接口控制器也在识别出命令队列中有被命中的擦除命令的情况下,仅从命令队列队尾取出介质接口命令处理而不实施介质接口命令的融合。
NVM芯片也在快速发展,已经出现了3D NAND存储介质,其每个存储单元存储1比特(SLC)、2比特(MLC)、3比特(TLC)甚至更多比特数据。3D NAND在其所承载于的晶圆的晶圆平面的Z方向(垂直于晶圆平面的方向)包括多层。物理块的每层包括字线。
图6展示了3D NAND存储介质的架构图。
3D NAND闪存芯片包括在X-Y方向被布置的多个物理块(图6中展示了块0与块600)。物理块包括多层,图6中展示了层L3、层L4、层L30与层L31,各层又包括多个区段(展示了区段0~区段3)。每个区段包括一条字线。以TLC存储介质为例,字线中包括3个物理页,将同一字线的各物理页分别称为LSB(最低有效位)页、CSB(中间有效位)页与MSB(最高有效位)页。各物理页具有唯一的物理地址。通过物理地址访问NVM芯片中的物理页。可选地,物理地址代表或不代表物理页在存储介质的物理空间中的位置。
对于一些NVM芯片,字线或者字线承载两个或更多物理页替代了单一物理页,成为了指示编程操作的存储介质访问命令的最小操作单元。虽然对这些NVM芯片的指示读操作的存储介质访问命令的最小操作单元依然是数据帧,但这些NVM芯片也支持以字线(的所有物理页)为最大操作单元的指示读操作的存储介质访问命令。在此情况下,根据本申请实施例的融合介质接口命令中,“命中”的判断方式被调整以利用这类指示读操作的存储介质访问命令来实现对介质接口命令的进一步融合。若两个介质接口命令的地址字段指示了相同的字线,则其中一个介质接口命令可命中另一个介质接口命令。
类似地,一些NVM芯片还支持多平面(Multi-Plane)操作。通过单一的存储介质访问命令中,同时访问NVM芯片的多个平面,从而减少使用的存储介质访问命令的数据,并增大NVM芯片的数据传输带宽。在此情况下,根据本申请实施例的融合介质接口命令中,“命中”的判断方式被可选地或进一步地调整以利用这类指示多平面读操作的存储介质访问命令来实现对介质接口命令的进一步融合。若两个介质接口命令的地址字段指示的地址可由单一的指示多平面操作的存储介质访问命令覆盖,则其中一个介质接口命令可命中另一个介质接口命令。
将单条指示读操作的存储介质访问命令所能访问的超出了单个物理页大小的(可选地,最大)操作单元,称为扩展操作单元。扩展操作单元是例如字线或单条多平面读操作的存储介质访问命令所能访问的最大操作单元。
图7A-7C展示了存在访问相同扩展操作单元的多个介质接口命令的命令队列。
P1指示扩展操作单元。作为举例,P1指示了字线,该字线容纳了MLC的两个物理页。在另一个例子中,P1指示了分别属于两个平面的两个物理页(D1、D2),这两个物理页(D1与D2)可由一条多平面读操作的存储介质访问命令所访问。介质接口命令访问的地址P1D1指示扩展操作单元P1的物理页D1的地址。可选地,介质接口命令的地址字段指示扩展操作单元所容纳的数据帧。
向下的箭头指示了队列的方向,队头在下方,而队尾在上方。
参看图7A,命令队列包括要向命令队列添加的访问地址P1D2的介质接口读命令(710)、访地址P1D1的介质接口读命令(712)与访问地址P1D1的介质接口写命令(714)。扩展操作单元P1的物理页D2已被写入数据,而物理页D1尚未被写入数据。而在访问地址P1D1的介质接口写命令(714)被处理后,扩展操作单元P1的两个物理页(D1与D2)将被写满数据,从而可以用访问扩展操作单元P1的一条存储介质访问(读)命令读出物理页D1与物理页D2的数据。
根据本申请的实施例,存储命令处理单元向命令队列添加介质接口读命令(710)时,由于介质接口读命令710同介质接口读命令712访问相同的扩展操作单元P1但不同的物理页,识别出介质接口读命令710“扩展命中”介质接口读命令712。为了清楚的目的,在根据本申请的实施例中,“扩展命中”指两个介质接口命令访问相同的扩展操作单元,而“非扩展命中”指两个介质接口命令访问的物理页相同。可以理解地,“非扩展命中”也属于“扩展命中”。
介质接口写命令714在命令队列的最前,不会对介质接口读命令710与介质接口读命令712造成影响。由于识别出介质接口读命令710扩展命中了介质接口读命令712,存储命令处理单元用介质接口读命令710的数据帧位图更新介质接口读命令712,而不将介质接口读命令710添加到命令队列。
从而,当介质接口写命令714被处理后,扩展操作单元P1被写满,从而可通过单条存储介质访问(读)命令从扩展操作单元P1读出数据。介质接口控制器在处理介质访问命令712时,根据其数据帧位图的指示,有机会用单条存储介质访问(读)命令从扩展操作单元P1读出数据。
参看图7B,命令队列包括访地址P1D1的介质接口读命令(724)与访问地址P1D2的介质接口写命令(722),以及要向命令队列添加的访问地址P1D2的介质接口读命令(720)。扩展操作单元P1的物理页D1已被写入数据,而物理页D2尚未被写入数据。访问地址P1D2的介质接口写命令(722)应当在介质接口读命令(724)之后且介质接口命令(720)之前被处理。
根据本申请的实施例,存储命令处理单元向命令队列添加介质接口读命令(720)时,识别出介质接口读命令720“扩展命中”介质接口读命令724,且非扩展命中了介质接口写命令722。在一种实施方式中,不融合介质接口读命令720与介质接口读命令724。因为直接融合这两个介质接口读命令,将导致对物理页P1D2写入数据之前即被读取,这违背了NVM芯片的访问约束条件。作为替代,存储命令处理单元将介质接口读命令720添加到命令队列的队尾。而在另一种实施方式中,从命令队列删除介质接口读命令(724),将删除的介质接口读命令(724)与介质接口读命令(720)融合,再将介质接口读命令(720)添加到命令队列。从而在介质接口写命令(722)被处理后,再处理介质接口读命令(720)。
参看图7C,命令队列包括访问地址P1D2的介质接口读命令(730)、访地址P1D1的介质接口读命令(734)与访问地址P1D2的介质接口写命令(732)。扩展操作单元P1的物理页D1已被写入数据,而物理页D2尚未被写入数据。访问地址P1D2的介质接口写命令(732)应当在介质接口读命令(734)之后且介质接口命令(730)之前被处理。
根据图7C展示的实施例,介质接口控制器从命令队列获取介质接口读命令(734)时,识别出介质接口读命令734“扩展命中”介质接口读命令730,且非扩展命中了介质接口写命令732。在一种实施方式中,不融合介质接口读命令730与介质接口读命令734。作为替代,介质接口控制器从命令队列取出介质接口读命令734并对其进行处理。而在另一种实施方式中,删除所获取的介质接口读命令(734),将删除的介质接口读命令(734)与介质接口读命令(730)融合并更新介质接口读命令(730)。接下来介质接口控制器继续从命令队列获取其他介质接口命令并处理。从而在介质接口写命令(732)被处理后,再处理介质接口读命令(730)。
图8A展示了根据本申请又一实施例的存储命令处理单元融合介质接口命令的流程图。
存储命令处理单元获取待发送给介质接口控制器的介质接口读命令(810)。用获取的介质接口命令的例如地址字段检查是否扩展命中了命令队列中的一个或多个介质接口读命令(820)。若待发送的介质接口命令没有“扩展命中”(不同于“非扩展命中”)命令队列中的任何介质接口读命令(820),将待发送的介质接口命令添加到命令队列的队尾(825)。
若待发送的介质接口命令扩展命中了命令队列中的介质接口读命令(820),进一步识别待发送的介质接口命令是否扩展命中了命令队列中的介质接口写命令(830)。如果被扩展命中的介质接口命中只有读命令而没有写命令(830),则用待发送的介质接口命令更新被命中的介质接口读命令的数据帧位图字段(835),而不将待发送的介质接口命令添加到命令队列。若被扩展命中的介质接口命中既有介质接口读命令又有介质接口写命令(830),且被扩展命中的介质接口写命令在命令队列中的位置位于被扩展命中的介质接口读命令与待发送的介质接口读命令之间,则从命令队列中移除被命中的介质接口读命令(840),用被移除的介质接口读命令更新待发送的介质接口读命令的数据帧位图(842),并将待发送的介质接口读命令添加到命令队列的队尾(844)。
命令队列中在“前”的介质接口命令同在“后”的介质接口命令相比,在“前”的介质接口命令位于更靠近队头的位置。
可选地,若被扩展命中的介质接口命中既有介质接口读命令又有介质接口写命令(830),且被扩展命中的介质接口写命令在命令队列中的位置位于被扩展命中的介质接口读命令之前,则用待发送的介质接口命令更新被命中的介质接口读命令的数据帧位图字段。
图8B展示了根据本申请又一实施例的介质接口控制器融合介质接口命令的流程图。
介质接口控制器从命令队列获取要处理的介质接口读命令(850)。用获取的介质接口读命令的例如地址字段检查是否扩展命中了命令队列中的一个或多个介质接口读命令(860)。若获取的介质接口命令没有“扩展命中”(不同于“非扩展命中”)命令队列中的任何介质接口读命令(860),则对该获取的介质接口命令进行处理(865)。
若获取的介质接口命令扩展命中了命令队列中的介质接口读命令(860),进一步识别所获取的介质接口读命令是否扩展命中了命令队列中的介质接口写命令(870)。如果被扩展命中的介质接口命中只有读命令而没有写命令(870),则从命令队列中移除被命中的介质接口读命令,还缓存被移除的介质接口读命令(880)。介质接口控制器还用被移除的一个或多个介质接口读命令更新所获取的介质接口读命令的数据帧位图(882),再处理所获取的介质接口读命令(884)。
若被扩展命中的介质接口命令中既有介质接口读命令又有介质接口写命令(870),若存在被扩展命令的介质接口读命令在命令队列中位于被命中的介质接口写命令之后,则删除并缓存所获取的介质接口读命令与在命令队列中位于被命中的介质接口写命令之前的被扩展命中的介质接口读命令(如果有的话)(890),并用被删除的介质接口读命令更新在命令队列中的在被扩展命中的介质接口写命令之前的被扩展命中的介质接口读命令的数据帧位图(892)。由于该被更新的介质接口读命令位于命令队列中而非队头的位置,介质接口控制器不处理该介质接口读命令,而是返回步骤850继续从命令队列的队头获取待处理命令。
若被扩展命中的介质接口命令中既有介质接口读命令又有介质接口写命令(870),若被扩展命令的所有介质接口读命令在命令队列中都位于被命中的介质接口写命令之前,则从命令队列中移除被命中的介质接口读命令,还缓存被移除的介质接口读命令。介质接口控制器还用被移除的一个或多个介质接口读命令更新所获取的介质接口读命令的数据帧位图,再处理所获取的介质接口读命令。
对于被缓存的介质接口读命令,其已被融合到其他介质接口读命令。介质接口控制器响应于对该其他介质接口读命令的处理完成,再释放被该其他介质接口读命令所融合的被缓存的介质接口命令。若该其他介质接口读命令处理失败,则除了向存储命令处理单元指示该介质接口命令处理失败,还获取被该其他介质接口读命令所融合的被缓存的介质接口命令并处理。
图9A展示了根据本申请再一实施例的存储命令处理单元融合介质接口命令的流程图。
存储命令处理单元获取待发送给介质接口控制器的介质接口读命令(910)。用获取的介质接口命令的例如地址字段检查是否“非扩展命中”了命令队列中的介质接口读命令(912)。若待发送的介质接口命令“非扩展命中”了命令队列中的任何介质接口读命令(912),用待发送的介质接口命令更新被命中介质接口读命令的数据帧位图(914),以融合该待发送的介质接口读命令与被“非扩展命令”的介质接口读命令。
若待发送的介质接口命令没有“非扩展命中”命令队列中的任何介质接口读命令(912),检查待发送的介质接口读命令是否扩展命中了命令队列中的介质接口读命令(920)。若待发送的介质接口命令没有“扩展命中”(不同于“非扩展命中”)命令队列中的任何介质接口读命令(920),将待发送的介质接口命令添加到命令队列的队尾(925)。
若待发送的介质接口命令扩展命中了命令队列中的介质接口读命令(920),进一步识别待发送的介质接口命令是否扩展命中了命令队列中的介质接口写命令(930)。如果被扩展命中的介质接口命中只有读命令而没有写命令(930),则用待发送的介质接口命令更新被命中的介质接口读命令的数据帧位图字段(935),而不将待发送的介质接口命令添加到命令队列。若被扩展命中的介质接口命中既有介质接口读命令又有介质接口写命令(930),且被扩展命中的介质接口写命令在命令队列中的位置位于被扩展命中的介质接口读命令与待发送的介质接口读命令之间,则从命令队列中移除被命中的介质接口读命令(940),用被移除的介质接口读命令更新待发送的介质接口读命令的数据帧位图(942),并将待发送的介质接口读命令添加到命令队列的队尾(944)。
图9B展示了根据本申请再一实施例的介质接口控制器融合介质接口命令的流程图。
介质接口控制器从命令队列获取要处理的介质接口读命令(950)。用获取的介质接口命令的例如地址字段检查是否“非扩展命中”了命令队列中的介质接口读命令(952)。若所获取的介质接口命令“非扩展命中”了命令队列中的介质接口读命令(952),则从命令队列中移除被命中的介质接口读命令(954),用被命中的介质接口命令更新所获取的介质接口命令的数据帧位图(956),再对该所获取的介质接口命令进行处理(958)。
若待发送的介质接口命令没有“非扩展命中”命令队列中的任何介质接口读命令(952),检查所获取的介质接口读命令是否扩展命中了命令队列中的介质接口读命令(960)。若获取的介质接口命令没有“扩展命中”(不同于“非扩展命中”)命令队列中的任何介质接口读命令(960),则对该获取的介质接口命令进行处理(965)。
若获取的介质接口命令扩展命中了命令队列中的介质接口读命令(960),进一步识别所获取的介质接口读命令是否扩展命中了命令队列中的介质接口写命令(970)。如果被扩展命中的介质接口命中只有读命令而没有写命令(970),则从命令队列中移除被命中的介质接口读命令,还缓存被移除的介质接口读命令(980)。介质接口控制器还用被移除的一个或多个介质接口读命令更新所获取的介质接口读命令的数据帧位图(982),再处理所获取的介质接口读命令(984)。
若被扩展命中的介质接口命令中既有介质接口读命令又有介质接口写命令(970),若存在被扩展命令的介质接口读命令在命令队列中位于被命中的介质接口写命令之后,则删除并缓存所获取的介质接口读命令与在命令队列中位于被命中的介质接口写命令之前的被扩展命中的介质接口读命令(如果有的话)(990),并用被删除的介质接口读命令更新在命令队列中的在被扩展命中的介质接口写命令之前的被扩展命中的介质接口读命令的数据帧位图(992)。由于该被更新的介质接口读命令位于命令队列中而非队头的位置,介质接口控制器不处理该介质接口读命令,而是返回步骤950继续从命令队列的队头获取待处理命令。
若被扩展命中的介质接口命令中既有介质接口读命令又有介质接口写命令(970),若被扩展命令的所有介质接口读命令在命令队列中都位于被命中的介质接口写命令之前,则从命令队列中移除被命中的介质接口读命令,还缓存被移除的介质接口读命令。介质接口控制器还用被移除的一个或多个介质接口读命令更新所获取的介质接口读命令的数据帧位图,再处理所获取的介质接口读命令。
图10展示了根据本申请依然又一实施例的介质接口控制器的框图。
介质接口控制器耦合命令队列。介质接口控制器包括命中检查单元、命令队列更新单元、命令处理单元、命令缓存管理单元与介质接口。介质接口耦合NVM芯片,用于向NVM芯片发送存储介质访问命令。
控制部件的存储命令处理单元将介质访问命令添加到命令队列的队尾,介质接口控制器从命令队列的队头获取介质访问命令。
命中检查单元耦合命令队列、命令队列更新单元与命令处理单元。命令检查单元从命令队列队尾获取要处理的介质接口命令。命令检查单元还耦合到命令队列的各条目,并检查要处理的介质接口读命令是否命中了命令队列中的介质接口读命令,以及确定是否要实施对两个或更多介质接口命令的融合。
由于发生命中而需要实施融合的介质接口命令的信息被提供给命令队列更新单元。未发生命中或不需要实施融合的介质接口命令被提供给命令处理单元。命令处理单元根据介质接口命令的内容生成一个或多个存储介质访问命令并操作介质接口发送给NVM芯片。
作为举例,要处理的介质接口读命令,非扩展命中了命令队列中的一个或多个介质接口读命令,需要实施融合。命中检查单元将要处理的该介质接口读命令,与被命中的所有介质接口读命令在命令队列中的索引提供给命令队列更新单元,并指示命令队列更新单元融合这些介质接口读命令。
作为又一个例子,要处理的介质接口读命令扩展命中了命令队列中的一个或多个介质接口读命令。命令检查单元还识别命令队列中是否有被扩展命中的介质接口写命令,以及被扩展命中的介质接口写命令与被扩展命中的介质接口读命令的关系。若被扩展命中的介质接口读命令都在被扩展命中的介质接口写命令之前,命中检查单元将要处理的该介质接口读命令,与被命中的所有介质接口读命令在命令队列中的索引提供给命令队列更新单元,并指示命令队列更新单元融合这些介质接口读命令。若有被扩展命中的介质接口读命令在被扩展命中的介质接口写命令之后,命中检查单元将要处理的该介质接口读命令,被命中的在被扩展命中的介质接口写命令之前的介质接口读命令与被命中的在被扩展命中的介质接口写命令之后的介质接口读命令在命令队列中的索引,分别提供给命令队列更新单元,并指示命令队列更新单元融合这些介质接口读命令。
命令队列更新单元识别命中检查单元提供的介质接口读命令的融合方式。在一个例子中,命令队列更新单元根据接收到的索引,从命令队列移除这些索引指示的介质接口读命令,用这些被移除的介质接口读命令的索引更新当前要处理的介质接口命令,还将更新后的当前要处理的介质接口读命令提供给命令处理单元的数据帧位图。命令队列更新单元还将被从命令队列移除的介质接口读命令搬移到命令缓存。
在又一个例子中,命中检查单元指示了命令队列的分别的索引(在命令队列中在前的一个或多个索引,与命令队列中在后的索引)。命令队列更新单元根据接收的在命令队列中在前的所有索引,从命令队列移除这些索引对应的介质接口读命令,用这些被移除的命令与当前要处理的介质接口读命令更新该在后的索引在命令队列中所指示的介质接口读命令的数据帧位图。命令队列更新单元还将当前要处理的介质接口读命令与被从命令队列移除的介质接口读命令搬移到命令缓存,以及不将当前要处理的介质接口读命令提供给命令处理单元。
介质接口从NVM芯片获取存储介质访问(读)命令的处理结果也被提供给命令缓存管理单元。命令缓存管理单元识别处理成功的存储介质访问(读)命令是否有对应的介质接口读命令被缓存,并作为响应将缓存的介质接口读命令删除。若命令缓存管理单元识别存储介质访问(读)命令处理失败,则将缓存的同存储介质访问(读)命令对应的介质接口读命令提供给命令处理单元以对其进行处理。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种命令处理方法,包括:
生成介质接口命令,其中介质接口命令包括地址字段与数据帧位图字段;以及
根据介质接口命令生成一条或多条存储介质访问命令;
其中地址字段指示用单条存储介质访问命令可访问的存储介质的操作单元;以及数据帧位图字段指示所述地址字段指示的操作单元所容纳的多个数据帧中需要被访问的一个或多个数据帧。
2.根据权利要求1所述的方法,其中
若数据帧位图字段指示所述地址字段指示的操作单元所容纳的所有数据帧都需要被访问,则生成单条访问存储介质访问命令以访问所述地址字段指示的完整操作单元;和/或
若数据帧位图字段指示访问所述地址字段指示的操作单元所容纳的一个或多个而非所有数据帧,则生成多条访问存储介质访问命令以访问所述地址字段指示的操作单元的一个或多个数据帧。
3.根据权利要求1或2所述的方法,还包括:
若所述生成的介质接口命令命中了命令队列中的介质接口命令,根据所述生成的介质接口命令更新被命中的介质接口命令的数据帧位图;以及丢弃所述生成的介质接口命令。
4.根据权利要求1-3之一所述的方法,还包括:
从命令队列的队头获取介质接口命令;
若所述获取的介质接口命令命中了命令队列中的一个或多个介质接口命令,从命令队列中移除被命中的介质接口命令,以及根据被命中的介质接口命令更新所述获取的介质接口命令的数据帧位图,再处理所述获取的介质接口命令。
5.根据权利要求1或2所述的方法,还包括:
若所述生成的介质接口命令是介质接口读命令,所述生成的介质接口命令扩展命中了命令队列中的介质接口读命令,且所述生成的介质接口命令未扩展命中命令队列中的介质接口写命令,则根据所述生成的介质接口命令更新被命中的介质接口命令的数据帧位图;以及丢弃所述生成的介质接口命令。
6.根据权利要求1、2所述的方法,还包括:
从命令队列的队头获取介质接口命令;
若所述获取的介质接口命令是介质接口读命令,所述获取的介质接口命令扩展命中了命令队列中的介质接口读命令,且所述获取的介质接口命令未扩展命中命令队列中的介质接口写命令,则根据被命中的介质接口读命令更新所述获取的介质接口读命令的数据帧位图,以及从命令队列移除被命中的介质接口读命令。
7.根据权利要求6所述的方法,还包括:
若所述获取的介质接口命令是介质接口读命令,所述获取的介质接口命令扩展命中了命令队列中的介质接口读命令,也扩展命中了命令队列中的介质接口写命令,且被命中的介质接口写命令在命令队列中位于被命中的介质接口读命令之后,则根据被命中的介质接口读命令更新所述获取的介质接口读命令的数据帧位图,以及从命令队列移除被命中的介质接口读命令。
8.根据权利要求1或2所述的方法,还包括:若所述生成的介质接口命令是介质接口读命令,所述生成的介质接口命令非扩展命中了命令队列中的介质接口读命令,则根据所述生成的介质接口命令更新被命中的介质接口命令的数据帧位图;以及丢弃所述生成的介质接口命令。
9.根据权利要求8所述的方法,还包括:若所述生成的介质接口命令是介质接口读命令,所述生成的介质接口命令未非扩展命中命令队列中的介质接口读命令,所述生成的介质接口命令扩展命中了命令队列中的介质接口读命令,所述生成的介质接口命令扩展命中了命令队列中的介质接口写命令,且被命中的介质接口写命令在命令队列中位于被命中的介质接口读命令之前,则根据所述生成的介质接口命令更新被命中的介质接口命令的数据帧位图;以及丢弃所述生成的介质接口命令。
10.一种存储设备,包括控制部件与非易失存储器,所述控制部件执行权利要求1-9之一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010207010.8A CN113434083A (zh) | 2020-03-23 | 2020-03-23 | 存储设备读命令融合方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010207010.8A CN113434083A (zh) | 2020-03-23 | 2020-03-23 | 存储设备读命令融合方法及其装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113434083A true CN113434083A (zh) | 2021-09-24 |
Family
ID=77752668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010207010.8A Pending CN113434083A (zh) | 2020-03-23 | 2020-03-23 | 存储设备读命令融合方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113434083A (zh) |
-
2020
- 2020-03-23 CN CN202010207010.8A patent/CN113434083A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10628319B2 (en) | Methods for caching and reading data to be programmed into a storage unit and apparatuses using the same | |
US9235346B2 (en) | Dynamic map pre-fetching for improved sequential reads of a solid-state media | |
US8321639B2 (en) | Command tracking for direct access block storage devices | |
US11042305B2 (en) | Memory system and method for controlling nonvolatile memory | |
CN107797759B (zh) | 访问缓存信息的方法、装置与驱动器 | |
CN107797760B (zh) | 一种访问缓存信息的方法、装置与固态驱动器 | |
US11157399B2 (en) | Data storage devices and data processing methods with dynamic programming scheme | |
WO2020248798A1 (zh) | 智能识别非易失存储介质不可靠块的方法与装置 | |
US20220138096A1 (en) | Memory system | |
CN109815157B (zh) | 编程命令处理方法与装置 | |
CN115048034A (zh) | 用于sgl的存储空间映射方法及其装置 | |
CN110968527B (zh) | Ftl提供的缓存 | |
CN111352865B (zh) | 存储控制器的写缓存 | |
CN111290974A (zh) | 用于存储设备的缓存淘汰方法与存储设备 | |
CN111290975A (zh) | 使用统一缓存处理读命令与预读命令的方法及其存储设备 | |
EP4170506A1 (en) | Systems, methods, and devices for ordered access of data in block modified memory | |
CN114968849B (zh) | 提高编程缓存利用率的方法及其设备 | |
CN110096452A (zh) | 非易失随机访问存储器及其提供方法 | |
CN113434083A (zh) | 存储设备读命令融合方法及其装置 | |
CN113434082A (zh) | 用于读命令融合的介质接口控制器及存储控制器 | |
CN113254363A (zh) | 具有部分逻辑到物理地址转换表的非易失性存储控制器 | |
CN110532199B (zh) | 预读方法及其存储控制器 | |
CN113051187A (zh) | 存储设备的ftl表的无锁访问 | |
CN112947845A (zh) | 热数据识别方法及其存储设备 | |
CN111858623A (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 |