CN111258491B - 降低读命令处理延迟的方法与装置 - Google Patents
降低读命令处理延迟的方法与装置 Download PDFInfo
- Publication number
- CN111258491B CN111258491B CN201811453058.6A CN201811453058A CN111258491B CN 111258491 B CN111258491 B CN 111258491B CN 201811453058 A CN201811453058 A CN 201811453058A CN 111258491 B CN111258491 B CN 111258491B
- Authority
- CN
- China
- Prior art keywords
- data
- descriptor
- descriptor table
- cache
- destination address
- 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.)
- Active
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/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/0656—Data buffering arrangements
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请涉及存储技术,尤其涉及降低读命令的处理延迟方法与存储控制部件,以减少存储设备缓存的容量,降低了成本,并且通过从NVM芯片读取数据的操作与从主机获取描述符表的操作被并发处理,从而降低了读命令的处理延迟。
Description
技术领域
本申请涉及存储技术,尤其涉及降低读命令的处理延迟方法与存储控制部件。
背景技术
图1A展示了固态存储设备的框图。固态存储设备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”等。
存储器目标(Target)是NAND闪存封装内的共享CE(Chip Enable,芯片使能)信号的一个或多个逻辑单元(LUN,Logic UNit)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。
存储介质上通常按页来存储和读取数据。而按块来擦除数据。块(也称物理块)包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
在存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。通常FTL表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。
一些存储设备的FTL由存储设备所耦合的主机提供,由主机的存储器存储FTL表,主机的CPU执行软件提供FTL。还有一些FTL由设置在主机与存储设备之间的存储管理装置提供。
NVMe协议定义了存储设备的访问接口。通过网络链接https://nvmexpress.org/wp-content/uploads/NVM_Express_Revision_1.3.pdf可获得NVMe协议的全文,将其通过引用合并于此。
图1B展示了NVMe协议的读命令的示意图。
NVMe协议的读命令150至少包括源地址(SLBA)、目的地址(DataPointer)与数据长度(NLBA)。源地址指示要读取的存储设备的地址空间的开始地址,在NVMe协议中标记为SLBA。目的地址指示承载要读取数据的存储空间地址,在NVMe协议中标记为DataPointer,数据长度指示要读取的数据从源地址(SLBA)开始的长度,在NVMe协议中标记为NLBA。其中目的地址是例如在访问存储设备的主机或网络设备的地址,或者是存储设备的缓存的地址。
一些情况下,目的地址包括多个不连续的存储空间。用包括多个条目的复杂数据结构来描述目的地址。在NVMe协议中,可选地采用PRP(PhysicalRegionPage,物理区域页)或SGL(ScatterGatherList,分散收集列表)描述目的地址。图1B展示了SGL160。SGL 160包括3个SGL段(Segment)(162、164、166),3个SGL段被组织为链表,一个SGL段记录了指示下一个SGL段的指针。每个SGL段包括一个或多个描述符。图1B中,每个SGL段包括目的地址描述符,目的地址描述符记录了承载读数据的存储空间地址(目的地址1、目的地址2与目的地址3)、数据长度。SGL段的每个的描述符地址指示了下一个SGL段的指针。为了简便,将描述目的地址的复杂数据结构称为描述符表。
作为举例,目的地址1、目的地址2与目的地址3各自指示主机存储器中的数据块(分别记为数据块1、数据块2与数据块3)。目的地址1指示数据块1的地址,目的地址2指示数据块2的地址而目的地址3指示数据块3的地址。
读命令150指示要读取存储设备从源地址(SLBA)到目的地址(SLBA+NLBA)区间(170)的数据。而根据SGL 160,要读取的来自区间170的数据被分为3个部分,每个部分对应于SGL段之一,并根据SGL段的描述,将区间170的每个部分的数据传输到对应的数据块。从而,根据SGL 160的目的地址1及其数据长度,将从区间170获取的从源地址(SLBA)开始的指定长度数据(子区间172,长度对应于SGL段162的目的地址1的数据长度)搬移到主机存储器的数据块1,将区间170的接下来的子区间174的数据(长度对应于SGL段164的目的地址2的数据长度)搬移到主机存储器的数据块2,将区间170的再接下来的子区间176的数据(长度对应于SGL段166的目的地址6的数据长度)搬移到主机存储器的数据块3。从而完成对读命令150的处理。
发明内容
存储设备收到读命令后,还要根据读命令的指示,获取目的地址(DataPointer),以根据目的地址(DataPointer)的指示将读出的数据传输给主机。而一些情况下,目的地址(DataPointer)本身长度较大,获取目的地址(DataPointer)占用了处理读命令的时间,也占用了控制部件宝贵的存储器资源。例如,SGL相比与PRP,数据结构更加灵活,但SGL描述符可能过长。最坏情况下,SGL本身的长度可能是待读取数据的4倍。这样为读取2MB数据,需要提供8MB的缓存来存储SGL,这会极大提高控制部件的成本,而获取8MB的SGL也需要数据传输时间,从而显著增大了读命令的处理延迟。
因此,希望降低读命令的处理延迟,也希望不显著增加控制部件的缓存空间带来的成本。
可以理解地,除了当前版本的NVMe协议,根据本申请的实施例也可应用于其他版本的NVMe协议,以及本申请的实施例也适用于其他存储协议。
根据本申请的第一方面,提供了根据本申请第一方面的第一读数据的方法,包括以下步骤:响应于获取读命令,根据读命令指示的源地址从存储介质中读出数据,并将读出的数据存储于数据缓存中;根据读命令获取描述符表,并将所述描述符表存储于描述符缓存中;根据所述描述符表记录的描述符获取数据缓存中的数据对应的目的地址,并将数据传输至对应的目的地址指示的存储器中。
根据本申请的第一方面的第一读数据的方法,其中,从存储介质中以数据单元为单位读出数据。
根据本申请的第一方面的第二读数据的方法,其中,读命令读取的多个数据单元以任意顺序被写入数据缓存。
根据本申请的第一方面的第三读数据的方法,其中,以数据单元的源地址作为数据缓存中的数据单元的索引。
根据本申请的第一方面的第一至第四读数据的方法之一,其中,源地址指示主机提供的逻辑地址,通过逻辑地址查询FTL表获得物理地址,根据物理地址访问存储介质。
根据本申请的第一方面的第一至第四读数据的方法之一,其中,源地址指示访问存储介质的物理地址。
根据本申请的第一方面的第一至第六读数据的方法之一,其中,响应于获取到读命令,发起对存储于主机的描述符表的获取。
根据本申请的第一方面的第一至第六读数据的方法之一,其中,响应于向存储介质发出对应于读命令指示的源地址读出数据的命令的指定时间后,发起根据读命令的对存储于主机的描述符表的获取。
根据本申请的第一方面的第八读数据的方法,其中,根据存储介质的读延迟和/或介质接口的处理速度设置指定时间。
根据本申请的第一方面的第一至第六读数据的方法之一,其中,响应于读命令访问的数据的部分或全部存储于数据缓存后,发起对存储于主机的描述符表的获取。
根据本申请的第一方面的第一至第十读数据的方法之一,其中,根据描述符表的大小与读命令所访问的数据大小的关系,设置发起获取存储于主机的描述符表的时机。
根据本申请的第一方面的第一至第十一读数据的方法之一,其中,响应于读命令要读取的数据的一个或多个数据单元被存储于数据缓存中,查询描述符缓存中的描述符表,以获得同数据单元对应的目的地址。
根据本申请的第一方面的第一至第十一读数据的方法之一,其中,响应于读命令要读取的数据的数据单元每次被存储于数据缓存中,查询存储于描述符缓存中的描述符表,以获得同数据单元对应的目的地址。
根据本申请的第一方面的第十二或第十三读数据的方法,其中,根据被缓存于数据缓存中的数据单元的索引查询描述符表。
根据本申请的第一方面的第一至第十四读数据的方法之一,还包括,记录读命令要读取的数据中已经被传输至存储器中的数据单元数量,以识别读命令是否被处理完成。
根据本申请的第一方面的第十五读数据的方法,其中,响应于读命令被处理完成,向主机发送读命令处理完成的信息。
根据本申请的第一方面的第一至第十六读数据的方法之一,其中,描述符缓存中存储的是描述符表的部分;所述方法还包括:响应于读命令要读取的数据的一个或多个数据单元被存储于数据缓存中,查询描述符缓存中的描述符表的部分,若描述符表的所述部分中记录有同所述一个或多个数据单元对应的目的地址,则将所述数据单元传输至对应的目的地址指示的存储器中。
根据本申请的第一方面的第十七读数据的方法,其中,若描述符表的所述部分中未记录存储于数据缓存中的同所述一个或多个数据单元对应的目的地址,则从主机获取描述符表的其他部分,以及查询描述符缓存中的描述符表的所述其他部分,以识别描述符表的所述其他部分中是否记录有同所述一个或多个数据单元对应的目的地址。
根据本申请的第一方面的第十七或十八读数据的方法,其中,从主机中获取描述符表之前,若描述符表的大小小于阈值,则获取描述符表存储在描述符表缓存。
根据本申请的第一方面的第十九读数据的方法,其中,若描述符表的大小大于阈值,则获取描述符表的部分存储在描述表缓存。
根据本申请的第二方面,提供了根据本申请第二方面的第一存储设备控制部件,包括:源地址处理单元、目的地址处理单元和数据传输单元;源地址处理单元根据读命令指示的源地址从存储介质中读出数据,并将读出的数据存储于数据缓存中;目的地址处理单元根据读命令获取描述符表,并将所述描述符表存储于描述符缓存中;数据传输单元根据所述描述符表记录的描述符获取数据缓存中的数据对应的目的地址,并将数据传输至对应的目的地址指示的存储器中。
根据本申请的第二方面的第一存储设备控制部件,其中,所述数据缓存和所述描述符缓存由控制部件提供或者由控制部件外部的存储器提供。
根据本申请的第二方面的第一或第二存储设备控制部件,其中,源地址处理单元从存储介质中以数据单元为单位读出数据。
根据本申请的第二方面的第三存储设备控制部件,其中,源地址处理单元将读命令读取的多个数据单元以任意顺序写入数据缓存。
根据本申请的第二方面的第一至第四存储设备控制部件之一,其中,源地址指示主机提供的逻辑地址,源地址处理单元通过逻辑地址查询FTL表获得物理地址,根据物理地址访问存储介质。
根据本申请的第二方面的第一至第四存储设备控制部件之一,其中,源地址指示访问存储介质的物理地址。
根据本申请的第二方面的第一至第六存储设备控制部件之一,其中,响应于获取到读命令,目的地址处理单元发起对存储于主机的描述符表的获取。
根据本申请的第二方面的第一至第六存储设备控制部件之一,其中,响应于向存储介质发出对应于读命令指示的源地址读出数据的命令的指定时间后,目的地址处理单元发起根据读命令的对存储于主机的描述符表的获取。
根据本申请的第二方面的第八存储设备控制部件,其中,根据存储介质的读延迟和/或介质接口的处理速度设置指定时间。
根据本申请的第二方面的第一至第六存储设备控制部件之一,其中,响应于读命令访问的数据的部分或全部存储于数据缓存后,目的地址处理单元发起对存储于主机的描述符表的获取。
根据本申请的第二方面的第一至第十存储设备控制部件之一,其中,根据描述符表的大小与读命令所访问的数据大小的关系,目的地址处理单元设置发起获取存储于主机的描述符表的时机。
根据本申请的第二方面的第一至第十一存储设备控制部件之一,其中,响应于读命令要读取的数据的一个或多个数据单元被存储于数据缓存中,数据传输单元查询描述符缓存中的描述符表,以获得同数据单元对应的目的地址。
根据本申请的第二方面的第一至第十一存储设备控制部件之一,其中,响应于读命令要读取的数据的数据单元每次被存储于数据缓存中,数据传输单元查询存储于描述符缓存中的描述符表,以获得同数据单元对应的目的地址。
根据本申请的第二方面的第十二或第十三存储设备控制部件,其中,数据传输单元根据被缓存于数据缓存中的数据单元的索引查询描述符表。
根据本申请的第二方面的第一至第十四存储设备控制部件之一,其中,数据传输单元维护计数器,计数器记录读命令要读取的数据中已经被传输至存储器中的数据单元数量,以识别读命令是否被处理完成。
根据本申请的第二方面的第十五存储设备控制部件,其中,响应于读命令被处理完成,数据处理单元向主机发送读命令处理完成的信息。
根据本申请的第二方面的第一至第十六存储设备控制部件之一,其中,描述符缓存中存储的是描述符表的部分;响应于读命令要读取的数据的一个或多个数据单元被存储于数据缓存中,数据处理单元查询描述符缓存中的描述符表的部分,若描述符表的所述部分中记录有同所述一个或多个数据单元对应的目的地址,则将所述数据单元传输至对应的目的地址指示的存储器中。
根据本申请的第二方面的第十七存储设备控制部件,其中,若描述符表的所述部分中未记录存储于数据缓存中的同所述一个或多个数据单元对应的目的地址,则目的地址处理单元从主机获取描述符表的其他部分,以及查询描述符缓存中的描述符表的所述其他部分,以识别描述符表的所述其他部分中是否记录有同所述一个或多个数据单元对应的目的地址。
根据本申请的第二方面的第十七或第十八存储设备控制部件,其中,从主机中获取描述符表之前,若描述符表的大小小于阈值,目的地址处理单元则获取描述符表存储在描述符表缓存。
根据本申请的第二方面的第十九存储设备控制部件,其中,若描述符表的大小大于阈值,则目的地址处理单元获取描述符表的部分存储在描述表缓存。
根据本申请的第三方面,提供了根据本申请第三方面的第一存储器,包括:控制部件,所述控制部件执行上述读数据的方法之一。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1A展示了固态存储设备的框图;
图1B展示了NVMe协议的读命令的示意图;
图2A展示了根据本申请实施例的控制部件的框图;
图2B展示了根据本申请又一实施例的控制部件的框图;
图3A展示了根据本申请实施例的处理读命令的流程图;
图3B展示了根据本申请又一实施例的处理读命令的流程图;
图3C展示了根据本申请再一实施例的处理读命令的流程图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图2A与2B展示了根据本申请实施例的控制部件104的框图。图2A与2B中示出的控制部件104包括主机接口210、用于访问NVM芯片105的介质接口220、源地址处理单元240、目的地址处理单元260、数据传输单元245、数据缓存270以及描述符缓存280。虽然图2A与2B展示了在控制部件104内部提供数据缓存270与描述符缓存280,可以理解地,可以由耦合到控制部件104的外部存储器提供数据缓存270与描述符缓存280。
作为举例,源地址处理单元240、目的地址处理单元260与数据传输单元245是CPU中运行的各软件、在多个CPU上各自运行的软件、各硬件或其组合。
主机接口210接收访问存储设备的命令。源地址处理单元240与目的地址处理单元260各自获取所接收的命令。
以读命令为例,源地址处理单元240根据读命令的源地址(例如,SLBA)与数据长度(例如,NLBA)通过介质接口220访问NVM芯片105,以读取源地址所指示的数据。从NVM芯片105读出的数据,被存储在数据缓存270中。
可选地,源地址指示存储设备提供的逻辑地址。源地址处理单元240或控制部件的其他单元还根据逻辑地址通过FTL表得到物理地址,并根据物理地址访问NVM芯片105。依然可选地,源地址指示的是物理地址。
作为举例,读命令要读取的数据包括一个或多个数据单元(例如,NLBA指示数据单元的数量)。介质接口220以数据单元为单位从NVM芯片105读出数据,并存储在数据缓存270。读命令要读取的多个数据单元以任意的顺序被写入数据缓存270。为数据缓存270中的数据单元设置索引,例如,以数据单元在地址区间(SLBA到SLBA+NLBA)中的位置作为索引以唯一标识属于相同读命令的多个数据单元。
目的地址处理单元260根据读命令的目的地址(DataPointer)通过主机接口210获取描述符表,并将获得的描述符表存储在描述符缓存280。
在一个例子中,目的地址处理单元260响应于获取了读命令,而发起对描述符表的获取。在又一个例子中,为了减少对描述符缓存280的占用,在识别出读命令所访问的数据的部分或全部已被存储在数据缓存270后,目的地址处理单元260才发起对描述符表的获取。再另一个例子中,目的地址处理单元260根据描述符表的大小与数据单元的大小的关系,而调整发起获取描述符表的时机,以使得在读命令所访问的数据被全部存储到数据缓存270的同时,描述符表也基本上被全部写入描述符缓存280。
数据传输单元245从数据缓存270获取数据单元,并根据描述符缓存280中的描述符表获取数据单元对应的目的地址,以及将数据单元通过主机接口210传输到目的地址。例如,数据传输单元245发起在存储设备与主机之间的DMA传输,将数据单元传输到主机存储器中的目的地址。
参看图2B,数据传输单元245,响应于数据单元(274或278)被添加到数据缓存270,而根据被添加到数据缓存270的数据单元(274或278)访问描述符缓存280中的描述符,以找到指示了数据单元(274或278)应被传输到的主机存储器的地址,并将数据传输单元(274或278)传输到主机。可选地,根据被添加到数据缓存270的数据单元的索引来查询描述符表。数据单元的索引,指示了数据单元在地址区间(SLBA到SLBA+NLBA)中的位置,描述符表中的一个或多个描述符(284和/或288)记录了地址区间(SLBA到SLBA+NLBA)中的该位置,应当被传输到的主机存储器中的目的地址。
数据传输单元245,响应于每次数据单元被添加到数据缓存270,而查找描述符表,并根据找到的描述符中记录的目的地址,将数据单元传输到主机的存储器。数据传输单元还维护计数器,计数器指示了已经传输的数据单元的数量。当已经传输的数据单元的数量同读命令指示的数据单元的总量相同时,读命令被处理完成,并就读命令被处理完成告知主机。
在一个例子中,描述符表体积过大,描述符缓存280无法容纳完整的描述符表。响应于读命令的数据单元274被添加到数据缓存270,目的地址处理单元260通过主机接口210从主机获取部分描述符表,例如,描述符表中的前N个描述符(N是自然数)。数据传输单元245查询描述符缓存280,以识别在描述符缓存280中的部分描述符表中是否有对应于数据单元274的描述符。作为举例,图2B中,描述符284是对应于数据单元274的描述符,根据描述符284记录的目的地址,将数据单元274传输到主机。
读命令要访问的各个数据单元被写入数据缓存270是乱序的。响应于又一个数据单元278被写入数据缓存270,数据传输单元245再次访问描述符缓存280,以寻找对应于数据单元278的描述符。作为举例,描述符缓存280中未找到同数据单元278对应的描述符,则目的地址处理单元260再次通过主机接口210从主机获取描述符表的其他部分。此时,之前存入描述符缓存280的描述符表的部分被覆盖。以及数据传输单元245再次访问描述符缓存280,以寻找对应于数据单元278的描述符。作为举例,找到了描述符288对应于数据单元278,根据描述符288指示的目的地址,将数据单元278传输到主机。可选地,若数据传输单元245依然没在描述符缓存280中找到对应于数据单元278的描述符,则目的地址处理单元260再从主机获取描述符表的又一部分填充到描述符缓存280,直到找到对应于数据单元278的描述符。
从而描述符缓存280无须容纳完整的描述符表,减少了描述符缓存280的容量,降低了成本。而在收到读命令后,从NVM芯片读取数据的操作与从主机获取描述符表的操作被并发处理,使得读描述符表的操作对读命令处理延迟的影响被降低或消除。
可选地,响应于多个数据单元被写入数据缓存270,而发起对描述符表的加载与查询,从而减少对描述符表的加载与查询的次数。
依然可选地,在源地址处理单元240通过介质接口220向NVM芯片发出读命令的50微秒后,目的地址处理单元260发起从主机获取描述符表的操作。从而在数据单元被添加到数据缓存270后,完整的描述符表或者描述符表的前N个描述符已被添加到描述符缓存280。50微秒是可调整的时间参数,根据NVM芯片的读延迟、介质接口220的处理速度等因素设置时间参数,并根据需要调整,例如,根据控制部件104的负载与NVM芯片105的读延迟的统计值而调整。
数据传输单元245还维护计数器,以记录对应于读命令的被传输到主机的数据单元的数量,以识别读命令何时被处理完成。
图3A、3B与3C展示了根据本申请实施例的处理读命令的流程图。
参看图3A,响应于获得了待处理的读命令(310),读命令中指示了要从存储设备读取数据的源地址、所读取的数据长度,以及接收读出数据的目的地址。根据源地址,从存储设备的NVM芯片读出数据(312)。而根据目的地址,从主机获取描述了一个或多个目的地址的描述符表(314)。将从NVM芯片读出的数据传输到描述符表的描述符所指示的目的地址(316)。其中从NVM芯片读出数据与从主机获取描述符表的操作被并发处理。
参看图3B,响应于获得了待处理的读命令(320),根据读命令指示的源地址,从存储设备的NVM芯片读出数据(322)。而根据目的地址,从主机获取描述了一个或多个目的地址的描述符表(324)。读命令指示的要从NVM芯片读出的数据包括多个数据单元。响应于从NVM芯片获得了一个或若干个数据单元(326),而发起对描述符表的查询(328),从描述符表获取该一个或若干个数据单元所对应的描述符,根据描述符指示的目的地址,将该一个或多个数据单元传输到目的地址所指示的主机的存储器(330)。在将读命令要从NVM芯片读出的所有数据单元都传输到主机后,向主机指示读命令处理完成。
参看图3C,响应于获得了待处理的读命令(340),根据读命令指示的源地址,从存储设备的NVM芯片读出数据(342)。响应于从NVM芯片获得了一个或若干个数据单元(344),而发起对描述符表的搬移,通过主机接口(也参看图2A或图2B,主机接口210)将描述符的全部或部分搬移到描述符缓存280(346)。可选地,在搬移描述符表之前,不知道描述符缓存能否容纳完整的描述符表,而在搬移描述符表期间,通过例如当前SGL段是否是最后SGL段来识别描述符表是否搬移完成。
若描述符缓存280完整容纳了描述符表(348),从描述符表中获取对应于该一个或若干个数据单元的一个或多个描述符,根据描述符获取该一个或若干个数据单元的目的地址(350),根据描述符指示的目的地址,将该一个或若干个数据单元传输到主机中的目的地址(356)。以及识别读命令要读取的所有数据单元是否都被传输到主机(358),若读命令的所有数据单元都被传输到主机,还向主机指示读命令处理完成(360)。
若描述符缓存280未容纳完整描述符表(348),查询描述符缓存280中的部分描述符表(352)。若从部分描述符表中得到了对应于该一个或若干个数据单元的一个或多个描述符(352),根据描述符指示的目的地址,将该一个或若干个数据单元传输到主机中的目的地址(356)。若从部分描述符表中无法得到对应于该一个或若干个数据单元的一个或多个描述符(352),从主机将描述符表的下一部分或其他部分搬移到描述符缓存280(354),并再次查询描述符缓存280中的部分描述符表,以尝试获得对应于该一个或若干个数据单元的一个或多个描述符(352)。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (8)
1.一种读数据的方法,包括以下步骤:
响应于获取读命令,根据读命令指示的源地址从存储介质中读出数据,并将读出的数据存储于数据缓存中;
响应于读命令访问的数据的部分或全部存储于数据缓存后,发起对存储于主机的描述符表的获取;
根据读命令获取描述符表,并将所述描述符表存储于描述符缓存中;
根据所述描述符表记录的描述符获取数据缓存中的数据对应的目的地址,并将数据传输至对应的目的地址指示的存储器中。
2.根据权利要求1所述的读数据的方法,其中,描述符缓存中存储的是描述符表的部分;
所述方法还包括:
响应于读命令要读取的数据的一个或多个数据单元被存储于数据缓存中,查询描述符缓存中的描述符表的部分,若描述符表的所述部分中记录有同所述一个或多个数据单元对应的目的地址,则将所述数据单元传输至对应的目的地址指示的存储器中。
3.根据权利要求2所述的读数据的方法,其中,若描述符表的所述部分中未记录存储于数据缓存中的同所述一个或多个数据单元对应的目的地址,则从主机获取描述符表的其他部分,以及查询描述符缓存中的描述符表的所述其他部分,以识别描述符表的所述其他部分中是否记录有同所述一个或多个数据单元对应的目的地址。
4.根据权利要求2所述的读数据的方法,其中,从主机中获取描述符表之前,若描述符表的大小小于阈值,则获取描述符表存储在描述符表缓存。
5.一种存储设备控制部件,包括:源地址处理单元、目的地址处理单元和数据传输单元;
源地址处理单元根据读命令指示的源地址从存储介质中读出数据,并将读出的数据存储于数据缓存中;
响应于向存储介质发出对应于读命令指示的源地址读出数据的命令的指定时间后,目的地址处理单元发起根据读命令的对存储于主机的描述符表的获取;
目的地址处理单元根据读命令获取描述符表,并将所述描述符表存储于描述符缓存中;
数据传输单元根据所述描述符表记录的描述符获取数据缓存中的数据对应的目的地址,并将数据传输至对应的目的地址指示的存储器中。
6.根据权利要求5所述的存储设备控制部件,其中,响应于读命令要读取的数据的一个或多个数据单元被存储于数据缓存中,数据传输单元查询描述符缓存中的描述符表,以获得同数据单元对应的目的地址。
7.根据权利要求5所述的存储设备控制部件,其中,描述符缓存中存储的是描述符表的部分;响应于读命令要读取的数据的一个或多个数据单元被存储于数据缓存中,数据处理单元查询描述符缓存中的描述符表的部分,若描述符表的所述部分中记录有同所述一个或多个数据单元对应的目的地址,则将所述数据单元传输至对应的目的地址指示的存储器中。
8.一种存储器,包括:控制部件,所述控制部件执行上述权利要求1-4所述的读数据的方法之一。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111108924.XA CN113805813B (zh) | 2018-11-30 | 2018-11-30 | 降低读命令处理延迟的方法与装置 |
CN201811453058.6A CN111258491B (zh) | 2018-11-30 | 2018-11-30 | 降低读命令处理延迟的方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811453058.6A CN111258491B (zh) | 2018-11-30 | 2018-11-30 | 降低读命令处理延迟的方法与装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111108924.XA Division CN113805813B (zh) | 2018-11-30 | 2018-11-30 | 降低读命令处理延迟的方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111258491A CN111258491A (zh) | 2020-06-09 |
CN111258491B true CN111258491B (zh) | 2021-10-15 |
Family
ID=70950138
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111108924.XA Active CN113805813B (zh) | 2018-11-30 | 2018-11-30 | 降低读命令处理延迟的方法与装置 |
CN201811453058.6A Active CN111258491B (zh) | 2018-11-30 | 2018-11-30 | 降低读命令处理延迟的方法与装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111108924.XA Active CN113805813B (zh) | 2018-11-30 | 2018-11-30 | 降低读命令处理延迟的方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN113805813B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117591023B (zh) * | 2023-11-22 | 2024-10-18 | 中科驭数(北京)科技有限公司 | 一种基于硬件卸载的分散聚集列表查询写入读取方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101221544A (zh) * | 2007-01-10 | 2008-07-16 | 国际商业机器公司 | 用于执行dma块移动的方法及dma设备 |
CN102693198A (zh) * | 2012-05-12 | 2012-09-26 | 北京忆恒创源科技有限公司 | Dma传输方法及系统 |
CN103946819A (zh) * | 2011-09-30 | 2014-07-23 | 英特尔公司 | 用于非易失性系统存储器的统计耗损均衡 |
CN108292277A (zh) * | 2015-11-06 | 2018-07-17 | 图芯芯片技术有限公司 | 用于存储器存取命令的传送描述符 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN2507066Y (zh) * | 2001-10-18 | 2002-08-21 | 深圳市中兴集成电路设计有限责任公司 | 一种直接存储器访问控制器 |
JP2006293799A (ja) * | 2005-04-13 | 2006-10-26 | Sony Corp | 情報処理装置、および情報処理方法 |
TWI465905B (zh) * | 2010-09-22 | 2014-12-21 | Toshiba Kk | 記憶體系統、主機控制器、及直接記憶體存取之控制方法 |
US8924627B2 (en) * | 2011-03-28 | 2014-12-30 | Western Digital Technologies, Inc. | Flash memory device comprising host interface for processing a multi-command descriptor block in order to exploit concurrency |
CN102609222B (zh) * | 2012-02-13 | 2015-03-25 | 山东华芯半导体有限公司 | 基于命令描述符的闪存控制方法 |
MA41915A (fr) * | 2015-04-07 | 2018-02-13 | Benjamin Gittins | Unités de requête de transfert de mémoire programmable |
US9830273B2 (en) * | 2015-07-30 | 2017-11-28 | Netapp, Inc. | Deduplicated host cache flush to remote storage |
-
2018
- 2018-11-30 CN CN202111108924.XA patent/CN113805813B/zh active Active
- 2018-11-30 CN CN201811453058.6A patent/CN111258491B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101221544A (zh) * | 2007-01-10 | 2008-07-16 | 国际商业机器公司 | 用于执行dma块移动的方法及dma设备 |
CN103946819A (zh) * | 2011-09-30 | 2014-07-23 | 英特尔公司 | 用于非易失性系统存储器的统计耗损均衡 |
CN102693198A (zh) * | 2012-05-12 | 2012-09-26 | 北京忆恒创源科技有限公司 | Dma传输方法及系统 |
CN108292277A (zh) * | 2015-11-06 | 2018-07-17 | 图芯芯片技术有限公司 | 用于存储器存取命令的传送描述符 |
Also Published As
Publication number | Publication date |
---|---|
CN113805813B (zh) | 2024-07-16 |
CN111258491A (zh) | 2020-06-09 |
CN113805813A (zh) | 2021-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106448737B (zh) | 读取闪存数据的方法、装置以及固态驱动器 | |
US9176673B2 (en) | Memory device | |
CN107797759B (zh) | 访问缓存信息的方法、装置与驱动器 | |
CN111061655B (zh) | 存储设备的地址转换方法与设备 | |
CN107797760B (zh) | 一种访问缓存信息的方法、装置与固态驱动器 | |
CN108614668B (zh) | 基于kv模型的数据访问方法与固态存储设备 | |
CN108228470B (zh) | 一种处理向nvm写入数据的写命令的方法和设备 | |
US10901885B2 (en) | Memory device and non-transitory computer readable recording medium | |
US12111760B2 (en) | Memory device and non-transitory computer readable recording medium | |
CN110554833B (zh) | 存储设备中并行处理io命令 | |
CN108614671B (zh) | 基于命名空间的键-数据访问方法与固态存储设备 | |
CN111258491B (zh) | 降低读命令处理延迟的方法与装置 | |
CN115048034A (zh) | 用于sgl的存储空间映射方法及其装置 | |
CN112148626A (zh) | 压缩数据的存储方法及其存储设备 | |
CN110968527B (zh) | Ftl提供的缓存 | |
CN110096452B (zh) | 非易失随机访问存储器及其提供方法 | |
CN111352865B (zh) | 存储控制器的写缓存 | |
CN110515861B (zh) | 处理刷写命令的存储设备及其方法 | |
CN110865945B (zh) | 存储设备的扩展地址空间 | |
CN114064522A (zh) | 一种计算机 | |
CN111290974A (zh) | 用于存储设备的缓存淘汰方法与存储设备 | |
CN111290975A (zh) | 使用统一缓存处理读命令与预读命令的方法及其存储设备 | |
CN109960667B (zh) | 大容量固态存储设备的地址转换方法与装置 | |
CN108536475B (zh) | 完整编程命令处理方法与装置 | |
CN108614669B (zh) | 解决哈希冲突的键-数据访问方法与固态存储设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |