本申请涉及存储技术,具体地,涉及利用软硬件协同处理usf协议来加速ufs处理的方法与存储控制器。
背景技术:
图1展示了存储设备的框图。存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如sata(serialadvancedtechnologyattachment,串行高级技术附件)、scsi(smallcomputersysteminterface,小型计算机系统接口)、sas(serialattachedscsi,串行连接scsi)、ide(integrateddriveelectronics,集成驱动器电子)、usb(universalserialbus,通用串行总线)、pcie(peripheralcomponentinterconnectexpress,pcie,高速外围组件互联)、nvme(nvmexpress,高速非易失存储)、ufs(universalflashstorage)、emmc(embeddedmmc(multimediacard))、以太网、光纤通道、无线通信网络等连接主机与存储设备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、ufs(universalflashstorage)、以太网、光纤通道等方式与主机交换数据。
控制部件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”等。
ufs(universalflashstorage)是jedec标准组织制定的用于闪存存储设备的接口标准,标准编号例如jesd220c。ufs协议以upiu(ufsprotocolinformationunit,ufs协议信息单元)为传输单元在主机与存储设备之间交换命令。upiu包括多种类型,例如命令单元、rtt单元、读数据单元、写数据单元以及响应单元等。
图2a与图2b展示了usf协议通过upiu实施写命令与读命令的示意图。
图2a用于描述写命令的处理过程。
主机将代表写命令的作为命令单元类型的upiu发送给设备。设备作为响应,在自身能接收写命令要写入的数据后,向主机发出作为rtt单元类型的upiu,以告知主机自身可接收数据以及接收可数据的长度。主机作为对收到rtt单元类型的upiu的响应,向设备发出写数据单元类型的upiu。设备接收写数据单元类型的upiu,并获取其携带的数据。设备还依据尚未获取写命令要写入的全部数据,而再次在自身能接收写命令要写入的数据后,向主机发出作为rtt单元类型的upiu。主机作为对收到rtt单元类型的upiu的响应,向设备发出写数据单元类型的upiu。设备接收写数据单元类型的upiu,并获取其携带的数据。设备响应于识别出已获取了写命令要写入的全部数据,向主机发出响应单元类型的upiu。主机接收该响应单元类型的upiu后,知晓写命令处理完成。
图2b用于描述读命令的处理过程。
主机将代表读命令的作为命令单元类型的upiu发送给设备。设备作为响应,在自身获取了读命令要读出的数据后,向主机发出作为读数据单元类型的upiu,以向主机提供读命令要读出的数据。设备还识别是否已向主机提供了读命令的所有要读取数据。如果还有其他要读出的数据要提供给主机,设备还向主机发出一个或多个作为读数据单元类型的upiu,直到向主机提供了该读命令的所有要读取数据。以及设备响应于识别出已向主机提供了读命令要读取的全部数据,还向主机发出响应单元类型的upiu。主机接收该响应单元类型的upiu后,知晓读命令处理完成。
遵循ufs协议的存储设备的控制部件,根据主机发出的命令与自身的处理能力,并根据ufs协议的要求,获取upiu并向主机提供upiu以完成对命令的处理。
除了读命令、写命令,ufs协议还定义了任务管理命令、咨询命令、弹出命令、空命令等。
技术实现要素:
ufs协议通常被用于便携式存储卡或嵌入智能移动终端的存储模块中。这类支持usf协议的存储设备属于小型设备,通常具有较少的计算资源与较低的功耗。通常,存储设备的控制部件由硬件提取upiu,提出的upiu被交由处理器核执行的软件识别其含义并处理。因而软件或执行软件的cpu核处理能力往往成为此类设备的性能瓶颈。希望由硬件分配软件的部分工作。
根据本申请的实施例,由支持ufs协议的存储设备的硬件分担了软件的至少下列工作:(1)识别控制部件能并发处理的命令的数量,确保控制部件接受的命令数量不超出指定范围,并在控制部件并发处理的命令饱和时拒绝额外接收的命令;(2)向软件提供主机发出并被接受要处理的命令,响应于软件的指示向主机提供作为处理过程或结果的upiu;(3)自动生成部分upiu,从而软件不被为每一个upiu的向主机发送而向硬件提供指示。
根据本申请的第一方面,提供了根据本申请第一方面的第一ufs存储设备的控制部件,包括upiu处理单元、命令槽分配单元、命令存储器、处理器与命令处理单元;upiu处理单元从作为命令单元类型的upiu提取第一命令,将第一命令提供给命令槽分配单元;命令槽分配单元为第一命令分配可用的命令槽,并将第一命令的第一部分存储到同命令槽关联的命令缓存单元,将为第一命令分配的命令槽提供给处理器;处理器根据命令槽生成一个或多个命令描述符并提供给命令处理单元;命令处理单元根据命令描述符通过upiu处理单元发出upiu。
根据本申请第一方面的第一ufs存储设备的控制部件,提供了根据本申请第一方面的第二ufs存储设备的控制部件,还包括命令队列与一个或多个命令槽队列;upiu处理单元将提取出的第一命令添加到命令队列;命令槽分配单元从命令队列获取第一命令;命令槽分配单元将分配的命令槽添加到一个或多个命令槽队列之一;处理器从一个或多个命令槽队列获取命令槽。
根据本申请第一方面的第二ufs存储设备的控制部件,提供了根据本申请第一方面的第三ufs存储设备的控制部件,其中命令槽队列具有优先级,命令槽分配单元根据第一命令的优先级,将为第一命令分配的命令槽添加到具有对应优先级的一个或多个命令槽队列之一。
根据本申请第一方面的第一至第三ufs存储设备的控制部件之一,提供了根据本申请第一方面的第四ufs存储设备的控制部件,其中若没有可用的命令槽分配给第一命令,命令槽分配单元通过upiu处理单元发出作为响应类型的upiu以指示存储设备当前无法处理第一命令。
根据本申请第一方面的第一至第四ufs存储设备的控制部件之一,提供了根据本申请第一方面的第五ufs存储设备的控制部件,其中控制部件包括预设的多个命令槽,其中命令槽可被同命令关联,命令槽具有类型,控制部件中具有指定类型的命令槽有一个或多个;以及其中未被同命令关联的命令槽,是可被分配给命令的可用的命令槽;已被同命令关联的命令槽,是不可用的命令槽;命令槽分配单元根据第一命令的类型,为第一命令分配具有相同类型的可用的命令槽。
根据本申请第一方面的第一至第五ufs存储设备的控制部件之一,提供了根据本申请第一方面的第六ufs存储设备的控制部件,其中第一命令的第一部分包括从中提取第一命令的upiu的头部信息;命令槽分配单元将第一命令的第二部分添加到命令槽,其中第二命令的第二部分同所述处理器对命令的处理有关。
根据本申请第一方面的第一至第六ufs存储设备的控制部件之一,提供了根据本申请第一方面的第七ufs存储设备的控制部件,其中命令槽是唯一标识命令的命令标识符。
根据本申请第一方面的第一至第七ufs存储设备的控制部件之一,提供了根据本申请第一方面的第八ufs存储设备的控制部件,还包括命令描述符寄存器;处理器通过将生成的命令描述符写入命令描述符寄存器来将命令描述符提供给命令处理单元;命令处理单元响应于根据命令描述符通过upiu处理单元发出upiu,还更新命令描述符寄存器,以向处理器指示对命令描述符处理完成。
根据本申请第一方面的第八ufs存储设备的控制部件,提供了根据本申请第一方面的第九ufs存储设备的控制部件,其中命令描述符寄存器还包括自动响应标记;若自动响应标记被设置,命令处理单元在根据命令描述符通过upiu处理单元发出第一upiu后,还通过upiu处理单元发出作为响应单元类型的第二upiu,以指示第一upiu关联的命令被处理完成。
根据本申请第一方面的第八或第九ufs存储设备的控制部件,提供了根据本申请第一方面的第十ufs存储设备的控制部件,其中处理器响应于根据命令槽识别出要通过n个作为写数据单元类型或读数据单元类型的upiu来获取数据,为前n-1个upiu生成对应的命令描述符并写入命令描述符寄存器,但不设置自动响应标记,以及为第n个upiu生成对应的命令描述符并写入命令描述符寄存器,并且设置自动响应标记,其中n为大于1的正整数。
根据本申请第一方面的第八至第十ufs存储设备的控制部件之一,提供了根据本申请第一方面的第十一ufs存储设备的控制部件,其中命令描述符寄存器还包括触发标记;响应于触发标记被设置,命令处理单元从命令描述符寄存器获取命令描述符被处理。
根据本申请第一方面的第十一ufs存储设备的控制部件,提供了根据本申请第一方面的第十二ufs存储设备的控制部件,其中响应于从存储介质读出了同命令描述符寄存器的命令描述符关联的数据,设置命令描述符寄存器的触发标记。
根据本申请第一方面的第十一或第十二ufs存储设备的控制部件,提供了根据本申请第一方面的第十三ufs存储设备的控制部件,其中处理器根据命令槽生成命令描述符添加的命令描述符寄存器,但使触发标记处于未设置状态,处理器还从存储介质读取数据;响应于从存储介质读出了同命令描述符寄存器的命令描述符关联的数据,设置命令描述符寄存器的触发标记。
根据本申请第一方面的第十三ufs存储设备的控制部件,提供了根据本申请第一方面的第十四ufs存储设备的控制部件,其中处理器根据命令槽生成命令描述符添加的命令描述符寄存器,但使触发标记处于未设置状态,处理器还指示介质接口控制器从存储介质读取数据;响应于介质接口控制器从存储介质读出了同命令描述符寄存器的命令描述符关联的数据,处理器或介质接口控制器设置命令描述符寄存器的触发标记。
根据本申请第一方面的第一至第十四ufs存储设备的控制部件之一,提供了根据本申请第一方面的第十五ufs存储设备的控制部件,还包括:同命令处理单元耦合的响应生成单元、rtt生成单元与写数据单元;响应于命令描述符指示获取写命令要写入的数据,命令处理单元向rtt生成单元指示要获取的数据长度、要获取的数据在写命令所有待写入数据中的位置、接收要写入数据的缓存地址以及根据命令槽从命令存储器获取的upiu头部信息,作为响应,rtt生成单元通过upiu处理单元发出作为rtt单元类型的upiu。
根据本申请第一方面的第十五ufs存储设备的控制部件,提供了根据本申请第一方面的第十六ufs存储设备的控制部件,其中响应于rtt生成单元通过upiu处理单元发出作为rtt单元类型的upiu,命令处理单元还设置状态,以等待接收作为写数据单元类型的upiu,并且不向处理器指示对命令描述符处理完成。
根据本申请第一方面的第十六ufs存储设备的控制部件,提供了根据本申请第一方面的第十七ufs存储设备的控制部件,其中upiu处理单元将作为写数据单元类型的upiu提供给写数据单元;写数据单元响应于获取作为写数据单元类型的upiu,将写数据单元类型的upiu携带的数据搬移到存储器的接收要写入数据的缓存地址所指示的位置,作为响应,命令处理单元更新命令描述符寄存器的状态,以指示对命令描述符处理完成。
根据本申请第一方面的第十七ufs存储设备的控制部件,提供了根据本申请第一方面的第十八ufs存储设备的控制部件,其中若命令描述符寄存器设置了自动响应标记,响应于写数据单元将写数据单元类型的upiu携带的数据搬移到存储器的接收要写入数据的缓存地址所指示的位置,命令处理单元还通过upiu处理单元发出作为响应单元类型的第二upiu,以指示第一upiu关联的命令被处理完成,并且作为响应在更新命令描述符寄存器的状态,以指示对命令描述符处理完成。
根据本申请第一方面的第十五到第十八ufs存储设备的控制部件之一,提供了根据本申请第一方面的第十九ufs存储设备的控制部件,还包括同命令处理单元耦合的读数据单元;响应于命令描述符指示输出读命令要读取的数据,命令处理单元向读数据生成单元指示要输出的数据长度、要输出的数据在读命令所有待读取数据中的位置、缓存要输出数据的缓存地址以及根据命令槽从命令存储器获取的upiu头部信息,作为响应,读数据生成单元通过upiu处理单元发出作为读数据单元类型的upiu。
根据本申请第一方面的第十五到第十九ufs存储设备的控制部件之一,提供了根据本申请第一方面的第二十ufs存储设备的控制部件,其中命令处理单元根据命令槽从命令存储器获取upiu头部信息并提供给响应生成单元、rtt生成单元、写数据单元和/或读数据单元。
根据本申请第一方面的第十五到第二十ufs存储设备的控制部件之一,提供了根据本申请第一方面的第二十一ufs存储设备的控制部件,其中命令处理单元响应于通过upiu处理单元发出指示命令处理完成的作为响应单元类型的upiu,还取消同该作为响应单元类型的upiu对应的命令槽同命令的关联。
根据本申请的第二方面,提供了根据本申请第二方面的第一ufs存储设备,包括nvm芯片与根据本申请第一方面的第一至第二十一ufs存储设备的控制部件之一。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是现有技术中存储设备的框图;
图2a与图2b展示了usf协议通过upiu实施写命令与读命令的示意图;
图3a展示了根据本申请实施例的存储设备的控制部件的命令提取部分的框图;
图3b展示了根据本申请实施例的为upiu指示的命令分配命令槽的流程图;
图4展示了根据本申请实施例的存储设备的控制部件的框图;
图5展示了根据本申请又一实施例的存储设备的控制部件的框图;
图6展示了根据本申请又一实施例的存储设备的控制部件的框图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图3a展示了根据本申请实施例的存储设备的控制部件的命令提取部分的框图。
控制部件通过主机接口310获取主机提供的upiu,并提供给与其耦合的upiu处理单元320。upiu处理单元320识别upiu的类型,从作为命令单元类型的upiu中提取出主机发送给存储设备的命令,并将命令填充到命令队列330。命令队列330耦合到命令槽分配单元340。
根据本申请的实施例,提供多个命令槽来代表控制部件能并发处理的命令。控制部件具有指定数量的命令槽。例如,32个用于接受io命令的命令槽,8个用于接受管理命令的命令槽,一个用于接受咨询命令的命令槽等。依然作为举例,命令槽是唯一标识在被处理的命令的命令标识符。命令槽分配单元340根据命令的种类,将从命令队列330获取的命令同可用的命令槽关联。如果没有可用的类型对应的命令槽,控制部件则拒绝接受命令,并向主机发送upiu就存储设备暂时无法处理该命令而告知主机。控制部件处理命令的过程中,该命令同命令槽保持关联,从而被占用的命令槽代表了控制部件正在并发处理的命令,而可用的命令槽代表了控制部件可接受命令。每个命令槽还唯一索引了命令缓存单元。命令存储器350容纳多个命令缓存单元。例如,命令槽具有序号,根据序号索引命令存储器350中的命令缓存单元。从而后续处理命令过程中,根据同命令关联的命令槽得以从命令存储器350中获取命令(的内容)。
命令槽分配单元340从命令队列330获取命令,根据命令的种类为命令分配可用的命令槽。若对某种类的命令没有可用的命令槽,可选地,命令槽分配单元340根据命令内容生成作为响应单元类型的upiu并通过upiu处理单元320发送给主机,以向主机指示存储设备当前无法处理该种类的命令。若成功分配了可用的命令槽,命令槽分配单元340将获取的命令(的内容)搬移到命令存储器350中由分配的命令槽所指示的命令缓存单元,以及将命令槽填充到命令槽队列之一。显然,命令槽不同于同其关联的命令,图3a的例子中,命令队列330存储从upiu提取的命令,而命令槽队列中的条目是命令槽。
根据本申请的实施例,通过提供指定数量的命令槽,并为命令分配命令槽,实现了识别控制部件能并发处理的命令的数量,确保控制部件接受的命令数量不超出命令槽的指令数量,并在控制部件并发处理的命令饱和时(没有同类型的可用命令槽)拒绝额外接收的命令。这些操作由硬件实现,无须软件介入,从而降低了软件的工作负担,并且提升了存储设备的处理速度。
图3a还展示了多个命令槽队列。可选地,命令槽队列各自具有优先级。例如,将关联了读命令的命令槽填充到高优先级的命令槽队列,而将关联了写命令的命令槽关联到低优先级队列。可选地,使用的单一的命令槽队列。
命令的内容包括多种信息。一些信息是同命令处理有关的,例如命令中的种类,要访问的数据地址;另一些信息同命令处理无关,例如upiu包头。在可选的实施方式中,命令槽分配单元340将获取的命令的同命令处理有关的信息记录在分配的命令槽中,从而减少了命令槽队列所需的存储容量且cpu360根据从命令槽队列获取的命令即可处理,而不必再访问命令存储器350。命令槽分配单元340将获取的命令的同命令处理无关的信息搬移到命令存储器的由分配的命令槽索引的命令缓存单元。从而在向主机发送同该命令对应的upiu时从命令缓存单元获取例如upiu包头以生成对应的upiu。在依然可选的实施方式中,命令槽仅包括命令标识号,而对应命令的其他信息均被存储在命令缓存单元中,以最小化命令槽自身的尺寸。
cpu360执行软件来从命令槽队列获取命令槽,并根据命令槽携带的信息处理命令。软件处理命令的过程中或完成后,还操作硬件生成一个或多个发送给主机的upiu,在后文中对其详细描述。
图3b展示了根据本申请实施例的为upiu指示的命令分配命令槽的流程图。
响应于从主机提供的upiu中获取了io命令,获取是否有可用的命令槽。若控制空间的适用于所获取的io命令类型的命令槽当前都被关联到其他io命令而没有可用的命令槽,则拒绝对该所获取的io命令的处理。并向主机发出作为响应单元类型的upiu以指示该io命令当前无法被处理。
若有可用的命令槽,则解析该获取的io命令,将该io命令同可用的命令槽之一关联,将该io命令的内容存储到被关联的命令槽所指示的命令缓存单元,以及将该命令槽添加到命令槽队列。可选地,还获取该io命令的优先级,并将该命令关联的该命令槽添加到同获取的优先级对应的命令槽队列。
控制部件的cpu通过执行软件从命令槽队列获取命令槽并处理。
当命令槽对应的命令被处理完成,还取消命令同该该命令槽的关联,从而该命令槽变为可用,可被再次关联于其他命令。
图4展示了根据本申请实施例的存储设备的控制部件的框图。
控制部件包括主机接口410、upiu处理单元420、命令队列430、命令槽分配单元440、一个或多个命令槽队列、命令存储器450与cpu460。
控制部件还包括命令处理单元480,同命令处理单元480耦合的命令描述符寄存器485、响应生成单元482、读数据单元484、rtt生成单元486与写数据单元488,以及存储器490。
控制部件通过主机接口410获取主机提供的upiu,并提供给与其耦合的upiu处理单元420。upiu处理单元420识别接收的upiu的类型,从作为命令单元类型的upiu中提取出主机发送给存储设备的命令,并将命令填充到命令队列430。upiu处理单元420将作为写数据单元类型的upiu提供给写数据单元488。upiu处理单元420还通过主机接口向主机提供upiu。例如,响应生成单元482生成作为响应单元类型的upiu并通过upiu处理单元420提供给主机,以向主机指示命令处理的状态。读数据单元482生成作为读数据单元类型的upiu并通过upiu处理单元420提供给主机,以向主机提供读命令要获取的数据。
命令槽分配单元440根据命令的种类,将从命令队列430获取的命令同可用的命令槽关联。如果没有可用的类型对应的命令槽,控制部件则拒绝接受命令,并向主机发送upiu就存储设备暂时无法处理该命令而告知主机。控制部件处理命令的过程中,该命令同命令槽保持关联,从而被占用的命令槽代表了控制部件正在并发处理的命令,而可用的命令槽代表了控制部件可接受命令。每个命令槽还唯一索引了命令缓存单元。命令存储器450容纳多个命令缓存单元。例如,命令槽具有序号,根据序号索引命令存储器450中的命令缓存单元。从而后续处理命令过程中,根据同命令关联的命令槽得以从命令存储器450中获取命令(的内容)。
命令槽分配单元440从命令队列430获取命令,根据命令的种类为命令分配可用的命令槽。若对某种类的命令没有可用的命令槽,可选地,命令槽分配单元440将该命令提供给响应生成单元482,响应生成单元482,根据命令内容生成作为响应单元类型的upiu并通过upiu处理单元420发送给主机,以向主机指示存储设备当前无法处理该种类的命令。对该命令,控制部件不再进行处理。可以理解地,命令槽具有指定的类型,各种类型的命令槽具有指定的数量。从而一种类型的命令槽被用尽,而其他类型的命令槽可能依然可用,从而对该类型的命令可获取对应的可用命令槽。
根据本申请的实施例,在为指令无法获得可用的命令槽时,拒绝接受该指令,而不是暂存该指令待有可用命令槽后再处理,降低了控制部件的复杂度。
命令槽分配单元440响应于为命令获取了可用的命令槽,将命令的内容搬移到命令存储器450内的由分配的命令槽所指示的命令缓存单元,以及将该命令槽填充到命令槽队列之一。
cpu460执行软件来从命令槽队列获取命令槽,并处理该命令槽对应的命令。
cpu460根据要处理的命令生成命令描述符,将生成的命令描述符填充到命令描述符寄存器485。命令描述符是cpu操作命令处理单元480的“指令”。cpu460通过将生成的命令描述符填充到命令描述符寄存器485以向命令处理单元480提供指令。cpu460还从命令描述符寄存器485获取命令处理单元480对指令的处理结果。
作为举例,要处理的命令是写命令。cpu460要指示命令处理单元480生成一个或多个作为rtt单元类型的upiu来指示主机提供待写入的数据。而为接收待写入的数据,cpu460需要分配接收数据的缓存地址与要接收的数据长度,以及主机还需要知晓要接收数据的是哪个命令。
cpu460根据命令槽从命令存储器450获取命令的内容,确定要通过多少个写数据单元类型的upiu来获取待写入数据,为每个写数据类型的upiu在存储器490中分配指定大小的缓存。为从主机获得一个写数据单元类型的upiu,存储设备要向主机发送rtt单元类型的upiu。cpu460根据要从主机获取的写数据单元类型的upiu,用分配的缓存地址、数据长度、命令槽等信息生成命令描述符,并写入命令描述符寄存器485。
命令处理单元480根据命令描述符寄存器485中的命令描述符进行处理,并将处理结果写入命令描述符寄存器485。
cpu460通过命令描述符寄存器485知晓之前的命令描述符被处理完成,作为举例,已经获得了一个写数据单元类型的upiu,cpu460根据写命令确定是否还要通过进一步的一个或多个写数据单元类型的upiu从主机获取写命令对应的数据,并再次生成描述符写入命令描述符寄存器485。
cpu460响应于命令处理完成,可选地还生成描述符提供给命令处理单元480,以指示命令处理单元480生成响应单元类型的upiu,以向主机指示命令处理完成。
命令处理单元480根据从命令描述符寄存器485获取的指令,通过响应生成单元482、读数据单元484与rtt生成单元486的一个或多个来通过upiu处理单元420向主机发送upiu。命令处理单元480还从写数据处理单元488获取upiu处理单元420提供的主机发出的作为写数据单元类型的upiu,以识别主机已经提供了写命令要写入的数据,并通过更新命令描述符寄存器485向cpu460告知。
作为举例,若命令描述符寄存器485的命令描述符指示命令处理单元480从主机获取写命令待写入的数据,命令处理单元480将要获取的数据长度、要获取的数据在写命令待写入数据中的位置等信息提供给rtt生成单元486,命令处理单元480还根据命令槽从命令存储器450的命令缓存单元获取upiu头部信息并提供给rtt生成单元486。rtt生成单元486根据获取的信息生成作为rtt单元类型的upiu,并通过upiu处理单元420发送给主机。
作为响应,命令处理单元480还设置状态以等待主机对前述rtt单元类型的upiu的响应。主机的响应是发出作为写数据单元类型的upiu。写数据单元488从upiu处理单元420获取该作为写数据单元类型的upiu,将主机要写入的数据搬移到存储器490中由之前的命令描述符所指示的地址。命令处理单元480响应于主机通过该作为写数据单元类型的upiu提供的数据被搬移到存储器490,更新命令描述符寄存器485,以向cpu460指示对该之前的命令描述符处理完成。从而cpu460通过向命令处理单元480指示一条关联于写命令的命令描述符,命令处理单元480向主机发出一个作为rtt单元类型的upiu,并从主机接收对应的一个作为写数据单元类型的upiu。若写命令需要更多的upiu来获取待写入数据,cpu460向命令处理单元480提供更多的命令描述符。
作为又一个例子,对于读命令,cpu460从存储介质获取要读取的数据并存储在存储器490。若cpu460通过向命令处理单元480指示一个关联于读命令的命令描述符,命令处理单元480仅向主机发出一个作为读数据单元类型的upiu。命令处理单元480将要传输给主机的数据长度、要传输的数据在读命令要读取数据中的位置等信息提供给读数据单元484,命令处理单元480还根据命令槽从命令存储器450的命令缓存单元获取upiu头部信息并提供给读数据单元484。读数据单元484根据获取的信息生成作为读数据单元类型的upiu,并通过upiu处理单元420发送给主机。响应于将作为读数据单元类型的upiu发送给主机,命令处理单元480还更新命令描述符寄存器485,以向cpu460指示对该之前的命令描述符处理完成。
若读命令需要更多的upiu来向主机传输读出数据,cpu460向命令处理单元480提供更多的命令描述符。
cpu460还识别对命令的处理完成。例如,对于写命令,从主机获取了所有待写入的数据,意味着对写命令的处理完成;或者对于读命令,向主机提供了所有要读取的数据,意味着对写命令的处理完成。cpu460还向命令处理单元提供指示生成作为响应单元类型的upiu的命令描述符。命令处理单元480作为响应,根据命令槽的指示从命令存储器450获取upiu头部信息,并指示响应生成单元482向主机提供作为响应单元类型的upiu。若响应单元类型的upiu指示命令处理完成,响应生成单元482还取消该响应单元类型的upiu对应的命令槽同命令的关联,从而该命令槽可用于接受新的命令。
可以理解地,对于其他种类的命令,cpu460生成对应的命令描述符指示命令处理单元480生成对应的upiu,并从命令处理单元480对命令描述符的更新获得处理结果。
根据图3与图4展示的实施例,由硬件与软件协同完成了对ufs命令的处理。对于每个命令,cpu生成一个或多个命令描述符。希望通过减少cpu与硬件交互的命令描述符数量,来降低命令处理过程中cpu的负担。
图5展示了根据本申请又一实施例的存储设备的控制部件的框图。
图5展示的是控制部件的用于处理写命令的部分。
控制部件包括主机接口510、upiu处理单元520、命令队列530、命令槽分配单元540、一个或多个命令槽队列、命令存储器550与cpu560。
控制部件还包括命令处理单元580,同命令处理单元580耦合的命令描述符寄存器585、响应生成单元582、rtt生成单元486与写数据单元488,以及存储器490。命令描述符寄存器585还包括自动响应标记。
控制部件通过主机接口510获取主机提供的upiu,并提供给与其耦合的upiu处理单元520。upiu处理单元420识别接收的upiu的类型,从作为命令单元类型的upiu中提取出主机发送给存储设备的命令,并将命令填充到命令队列530。
命令槽分配单元540根据命令的种类,将从命令队列530获取的命令同可用的命令槽关联。
命令槽分配单元540响应于为命令获取了可用的命令槽,将命令的内容搬移到命令存储器550内的由分配的命令槽所指示的命令缓存单元,以及将该命令槽填充到命令槽队列之一。
cpu560执行软件来从命令槽队列获取命令槽,并处理该命令槽对应的命令。在图5的例子中,命令是写命令。
cpu560要指示命令处理单元580生成一个或多个作为rtt单元类型的upiu来指示主机提供待写入的数据。cpu560确定要通过多少个写数据单元类型的upiu来获取待写入数据,为每个写数据类型的upiu在存储器590中分配指定大小的缓存。cpu560根据要从主机获取的写数据单元类型的upiu,用分配的缓存地址、数据长度、命令槽等信息生成命令描述符,并写入命令描述符寄存器585。
根据图5的实施例,命令描述符还包括自动响应标记。若为处理写命令,cpu560识别出要通过n个(n为正整数)写数据单元类型的upiu来获取待写入数据。为获取前n-1个写数据单元类型的upiu,cpu560提供给命令处理单元580的命令描述符中未设置自动响应标记(例如,将该标记设为0)。而为获取第n个写数据单元类型的upiu,cpu560提供给命令处理单元580的命令描述符中设置自动响应标记(例如,将该标记设为1)。根据图5的实施例中,cpu560响应于命令处理完成,不再为了指示命令处理单元580生成响应单元类型的upiu,而生成描述符提供给命令处理单元580。命令处理单元580将根据自动响应标记生成响应单元类型的upiu。
命令处理单元580根据命令描述符寄存器585中的命令描述符进行处理,并将处理结果写入命令描述符寄存器585。
作为举例,若命令描述符寄存器585的命令描述符指示命令处理单元580从主机获取写命令待写入的数据,命令处理单元580将要获取的数据长度、要获取的数据在写命令待写入数据中的位置等信息提供给rtt生成单元586,命令处理单元580还根据命令槽从命令存储器550的命令缓存单元获取upiu头部信息并提供给rtt生成单元586。rtt生成单元586根据获取的信息生成作为rtt单元类型的upiu,并通过upiu处理单元520发送给主机。
作为响应,命令处理单元580还设置状态以等待主机对前述rtt单元类型的upiu的响应。主机的响应是发出作为写数据单元类型的upiu。写数据单元588从upiu处理单元520获取该作为写数据单元类型的upiu,将主机要写入的数据搬移到存储器59。命令处理单元580响应于主机通过该作为写数据单元类型的upiu提供的数据被搬移到存储器590,更新命令描述符寄存器585,以向cpu560指示对该之前的命令描述符处理完成。
可选地,若命令描述符寄存器585中的命令描述符还设置了自动响应标记,响应于主机通过该作为写数据单元类型的upiu提供的数据被搬移到存储器590,命令处理单元580暂不更新描述符寄存器585,而是还根据命令槽从命令存储器550获取upiu头部信息,并指示响应生成单元582向主机提供作为响应单元类型的upiu,以向主机指示写命令处理完成,并且响应生成单元582还取消该响应单元类型的upiu对应的命令槽同命令的关联,从而该命令槽可用于接受新的命令。接下来,命令处理单元580响应于向主机发送了该作为响应单元类型的upiu,更新命令描述符寄存器585,以向cpu560指示对该之前的命令描述符处理完成。
可以理解地,若命令描述符寄存器585中的命令描述符未设置自动响应标记,命令处理单元580响应于主机通过该作为写数据单元类型的upiu提供的数据被搬移到存储器590,更新命令描述符寄存器585,以向cpu560指示对该之前的命令描述符处理完成。
图6展示了根据本申请又一实施例的存储设备的控制部件的框图。图6展示的是控制部件的用于处理写命令的部分。
控制部件包括主机接口610、upiu处理单元620、命令队列630、命令槽分配单元640、一个或多个命令槽队列、命令存储器650与cpu660。
控制部件还包括命令处理单元680,同命令处理单元680耦合的命令描述符寄存器685、响应生成单元682、与读数据单元684,以及存储器690。命令描述符寄存器685还包括自动响应标记。
cpu660执行软件来从命令槽队列获取命令槽,并处理该命令槽对应的命令。在图6的例子中,命令是读命令。
cpu660要指示命令处理单元680生成一个或多个作为数据单元类型的upiu来向主机提供读命令要读取的数据。cpu660从存储设备的存储介质中获取要读取的数据,并缓存在存储器690。cpu660确定要通过多少个读数据单元类型的upiu来向主机传输要读取的数据,根据每个要向主机发送的读数据单元类型的upiu,用数据在存储器690中的地址、数据长度、命令槽等信息生成命令描述符,并写入命令描述符寄存器685。
根据图6的实施例,命令描述符还包括自动响应标记。若为处理该读命令,cpu660识别出要通过n个(n为正整数)读数据单元类型的upiu来向主机传输待读取数据。为传输前n-1个读数据单元类型的upiu,cpu660提供给命令处理单元680的命令描述符中未设置自动响应标记(例如,将该标记设为0)。而为传输第n个读数据单元类型的upiu,cpu660提供给命令处理单元680的命令描述符中设置自动响应标记(例如,将该标记设为1)。根据图6的实施例中,cpu660响应于命令处理完成,不再为了指示命令处理单元680生成响应单元类型的upiu,而生成描述符提供给命令处理单元680。命令处理单元680将根据自动响应标记生成响应单元类型的upiu。
命令处理单元680根据命令描述符寄存器685中的命令描述符进行处理,并将处理结果写入命令描述符寄存器685。
作为举例,若命令描述符寄存器685的命令描述符指示命令处理单元680向主机传输读命令待读取的数据,命令处理单元680将要获取的数据长度、要传输的数据在读命令要读取数据中的位置、要传输的数据在存储器690中的地址等信息提供给读数据单元684,命令处理单元680还根据命令槽从命令存储器650的命令缓存单元获取upiu头部信息并提供给读数据单元684。读数据单元684根据获取的信息生成作为读数据单元类型的upiu,并通过upiu处理单元620发送给主机。
命令处理单元680响应于通过该作为读数据单元类型的upiu将数据搬移主机,更新命令描述符寄存器685,以向cpu660指示对该之前的命令描述符处理完成。
可选地,若命令描述符寄存器685中的命令描述符还设置了自动响应标记,响应于通过作为读数据单元类型的upiu将数据搬移主机,命令处理单元680暂不更新描述符寄存器685,而是还根据命令槽从命令存储器650获取upiu头部信息,并指示响应生成单元682向主机提供作为响应单元类型的upiu,以向主机指示读命令处理完成,并且响应生成单元682还取消该响应单元类型的upiu对应的命令槽同命令的关联,从而该命令槽可用于接受新的命令。接下来,命令处理单元680响应于向主机发送了该作为响应单元类型的upiu,更新命令描述符寄存器685,以向cpu660指示对该之前的命令描述符处理完成。
可以理解地,若命令描述符寄存器685中的命令描述符未设置自动响应标记,命令处理单元680响应于通过作为读数据单元类型的upiu将数据搬移主机,更新命令描述符寄存器685,以向cpu660指示对该之前的命令描述符处理完成。
可选地或进一步地,命令描述符寄存器685还包括触发标记(图6中未示出)。在处理读命令时,cpu660要从存储介质读取读命令所需要的数据并缓存在存储器690,这一过程需要较长的时间,并导致cpu660从处理读命令到该读命令对应的一个或多个命令描述符可被命令处理单元680处理之间有较长且不确定的时间间隔,并为cpu660引入了进一步的工作负担。根据本申请的实施例,命令描述符还包括触发标记。cpu660在获取了读命令后,即生成命令描述符并写入命令描述符寄存器685,但不设置触发标记。响应于触发标记未被设置,命令处理单元680不对描述符寄存器685的命令描述符进行处理。而响应于从存储介质读出了数据并缓存在存储器690,再设置命令描述符寄存器685的触发标记。响应于触发标记被设置,命令处理单元680开始对命令描述符的处理。在一种实施方式中,cpu660操作介质接口控制器从存储介质读出数据,介质接口控制器响应于将读出的数据搬移到存储器690而通知cpu660数据搬移完成,继而,cpu660设置命令描述符寄存器685的触发标记。在又一种实施方式中,cpu660操作介质接口控制器从存储介质读出数据,介质接口控制器响应于将读出的数据搬移到存储器690而直接设置描述符寄存器685的触发标记,从而进一步减少了cpu的工作负担。
根据本申请的实施例还提供了一种存储设备,包括控制器与非易失存储器芯片,其中,控制器执行本申请实施例提供的任意一种处理方法。
根据本申请的实施例还提供了一种存储在可读介质上的程序,当被存储设备的控制器运行时,使得存储设备执行根据本申请实施例提供的任意一种处理方法。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
1.一种ufs存储设备的控制部件,包括upiu处理单元、命令槽分配单元、命令存储器、处理器与命令处理单元;
upiu处理单元从作为命令单元类型的upiu提取第一命令,将第一命令提供给命令槽分配单元;
命令槽分配单元为第一命令分配可用的命令槽,并将第一命令的第一部分存储到同命令槽关联的命令缓存单元,将为第一命令分配的命令槽提供给处理器;
处理器根据命令槽生成一个或多个命令描述符并提供给命令处理单元;
命令处理单元根据命令描述符通过upiu处理单元发出upiu。
2.根据权利要求1所述的控制部件,还包括命令队列与一个或多个命令槽队列;
upiu处理单元将提取出的第一命令添加到命令队列;
命令槽分配单元从命令队列获取第一命令;
命令槽分配单元将分配的命令槽添加到一个或多个命令槽队列之一;
处理器从一个或多个命令槽队列获取命令槽。
3.根据权利要求1或2所述的控制部件,其中
若没有可用的命令槽分配给第一命令,命令槽分配单元通过upiu处理单元发出作为响应类型的upiu以指示存储设备当前无法处理第一命令。
4.根据权利要求1-3之一所述的控制部件,其中
第一命令的第一部分包括从中提取第一命令的upiu的头部信息;
命令槽分配单元将第一命令的第二部分添加到命令槽,其中第二命令的第二部分同所述处理器对命令的处理有关。
5.根据权利要求1-4之一所述的控制部件,还包括命令描述符寄存器;
处理器通过将生成的命令描述符写入命令描述符寄存器来将命令描述符提供给命令处理单元;
命令处理单元响应于根据命令描述符通过upiu处理单元发出upiu,还更新命令描述符寄存器,以向处理器指示对命令描述符处理完成。
6.根据权利要求4所述的控制部件,其中
命令描述符寄存器还包括自动响应标记;
若自动响应标记被设置,命令处理单元在根据命令描述符通过upiu处理单元发出第一upiu后,还通过upiu处理单元发出作为响应单元类型的第二upiu,以指示第一upiu关联的命令被处理完成。
7.根据权利要求4或5所述的控制部件,其中
处理器响应于根据命令槽识别出要通过n个作为写数据单元类型或读数据单元类型的upiu来获取数据,为前n-1个upiu生成对应的命令描述符并写入命令描述符寄存器,但不设置自动响应标记,以及为第n个upiu生成对应的命令描述符并写入命令描述符寄存器,并且设置自动响应标记,其中n为大于1的正整数。
8.根据权利要求1-7之一所述的控制部件,还包括:同命令处理单元耦合的响应生成单元、rtt生成单元与写数据单元;
响应于命令描述符指示获取写命令要写入的数据,命令处理单元向rtt生成单元指示要获取的数据长度、要获取的数据在写命令所有待写入数据中的位置、接收要写入数据的缓存地址以及根据命令槽从命令存储器获取的upiu头部信息,作为响应,rtt生成单元通过upiu处理单元发出作为rtt单元类型的upiu。
9.根据权利要求8所述的控制部件,其中
响应于rtt生成单元通过upiu处理单元发出作为rtt单元类型的upiu,命令处理单元还设置状态,以等待接收作为写数据单元类型的upiu,并且不向处理器指示对命令描述符处理完成。
10.一种ufs存储设备,包括nvm芯片与根据权利要求1-9之一所述的ufs存储设备的控制部件。
技术总结