本申请涉及存储技术,尤其涉及降低读命令的处理延迟方法与存储控制部件。
背景技术:
图1a展示了固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如sata(serialadvancedtechnologyattachment,串行高级技术附件)、scsi(smallcomputersysteminterface,小型计算机系统接口)、sas(serialattachedscsi,串行连接scsi)、ide(integrateddriveelectronics,集成驱动器电子)、usb(universalserialbus,通用串行总线)、pcie(peripheralcomponentinterconnectexpress,pcie,高速外围组件互联)、nvme(nvmexpress,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个nvm芯片105以及dram(dynamicrandomaccessmemory,动态随机访问存储器)110。
nand闪存、相变存储器、feram(ferroelectricram,铁电存储器)、mram(magneticrandomaccessmemory,磁阻存储器)、rram(resistiverandomaccessmemory,阻变存储器)、xpoint存储器等是常见的nvm。
接口103可适配于通过例如sata、ide、usb、pcie、nvme、sas、以太网、光纤通道等方式与主机交换数据。
控制部件104用于控制在接口103、nvm芯片105以及dram110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是fpga(field-programmablegatearray,现场可编程门阵列)、asic(applicationspecificintegratedcircuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理io(input/output)命令。控制部件104还可以耦合到dram110,并可访问dram110的数据。在dram可存储ftl表和/或缓存的io命令的数据。
控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到nvm芯片105,并以遵循nvm芯片105的接口协议的方式向nvm芯片105发出命令,以操作nvm芯片105,并接收从nvm芯片105输出的命令执行结果。已知的nvm芯片接口协议包括“toggle”、“onfi”等。
存储器目标(target)是nand闪存封装内的共享ce(chipenable,芯片使能)信号的一个或多个逻辑单元(lun,logicunit)。nand闪存封装内可包括一个或多个管芯(die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(plane)。逻辑单元内的多个平面可以并行存取,而nand闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。
存储介质上通常按页来存储和读取数据。而按块来擦除数据。块(也称物理块)包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
在存储设备中,利用ftl(flashtranslationlayer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
存储了从逻辑地址到物理地址的映射信息的表结构被称为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。sgl160包括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)的数据。而根据sgl160,要读取的来自区间170的数据被分为3个部分,每个部分对应于sgl段之一,并根据sgl段的描述,将区间170的每个部分的数据传输到对应的数据块。从而,根据sgl160的目的地址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)。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
1.一种读数据的方法,包括以下步骤:
响应于获取读命令,根据读命令指示的源地址从存储介质中读出数据,并将读出的数据存储于数据缓存中;
根据读命令获取描述符表,并将所述描述符表存储于描述符缓存中;
根据所述描述符表记录的描述符获取数据缓存中的数据对应的目的地址,并将数据传输至对应的目的地址指示的存储器中。
2.根据权利要求1所述的读数据的方法,其中,响应于读命令访问的数据的部分或全部存储于数据缓存后,发起对存储于主机的描述符表的获取。
3.根据权利要求1或2所述的读数据的方法,其中,描述符缓存中存储的是描述符表的部分;
所述方法还包括:
响应于读命令要读取的数据的一个或多个数据单元被存储于数据缓存中,查询描述符缓存中的描述符表的部分,若描述符表的所述部分中记录有同所述一个或多个数据单元对应的目的地址,则将所述数据单元传输至对应的目的地址指示的存储器中。
4.根据权利要求3所述的读数据的方法,其中,若描述符表的所述部分中未记录存储于数据缓存中的同所述一个或多个数据单元对应的目的地址,则从主机获取描述符表的其他部分,以及查询描述符缓存中的描述符表的所述其他部分,以识别描述符表的所述其他部分中是否记录有同所述一个或多个数据单元对应的目的地址。
5.根据权利要求3所述的读数据的方法,其中,从主机中获取描述符表之前,若描述符表的大小小于阈值,则获取描述符表存储在描述符表缓存。
6.一种存储设备控制部件,包括:源地址处理单元、目的地址处理单元和数据传输单元;
源地址处理单元根据读命令指示的源地址从存储介质中读出数据,并将读出的数据存储于数据缓存中;
目的地址处理单元根据读命令获取描述符表,并将所述描述符表存储于描述符缓存中;
数据传输单元根据所述描述符表记录的描述符获取数据缓存中的数据对应的目的地址,并将数据传输至对应的目的地址指示的存储器中。
7.根据权利要求6所述的存储设备控制部件,其中,响应于向存储介质发出对应于读命令指示的源地址读出数据的命令的指定时间后,目的地址处理单元发起根据读命令的对存储于主机的描述符表的获取。
8.根据权利要求6或7所述的存储设备控制部件,其中,响应于读命令要读取的数据的一个或多个数据单元被存储于数据缓存中,数据传输单元查询描述符缓存中的描述符表,以获得同数据单元对应的目的地址。
9.根据权利要求6或7所述的存储设备控制部件,其中,描述符缓存中存储的是描述符表的部分;响应于读命令要读取的数据的一个或多个数据单元被存储于数据缓存中,数据处理单元查询描述符缓存中的描述符表的部分,若描述符表的所述部分中记录有同所述一个或多个数据单元对应的目的地址,则将所述数据单元传输至对应的目的地址指示的存储器中。
10.一种存储器,包括:控制部件,所述控制部件执行上述权利要求1-5所述的读数据的方法之一。
技术总结