CN112115066A - 基于存储命令处理时间预测而调度存储命令的介质接口控制器及其方法 - Google Patents
基于存储命令处理时间预测而调度存储命令的介质接口控制器及其方法 Download PDFInfo
- Publication number
- CN112115066A CN112115066A CN201910537262.4A CN201910537262A CN112115066A CN 112115066 A CN112115066 A CN 112115066A CN 201910537262 A CN201910537262 A CN 201910537262A CN 112115066 A CN112115066 A CN 112115066A
- Authority
- CN
- China
- Prior art keywords
- program command
- data
- lun
- control unit
- command
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0884—Parallel mode, e.g. in parallel with main memory or CPU
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请涉及基于存储命令处理时间预测而调度存储命令的介质接口控制器及其方法。所公开的介质接口控制器,包括:控制单元、数据传输单元、缓存和物理层单元;控制单元从存储器向缓存搬移数据;物理层单元根据控制单元的操作,将编程命令发送给NVM芯片;数据传输单元根据控制单元的操作,将缓存中的数据通过物理层单元发送给NVM芯片,以根据编程命令执行所述数据。本申请提供的介质接口控制器提高了IO命令的处理效率。
Description
技术领域
本申请涉及存储技术领域,尤其涉及根据访问非易失存储介质的存储命令的处理时间的预测而调度多个存储命令的介质接口控制器及其方法。
背景技术
图1展示了现有技术中的存储设备的框图。存储设备100同主机相耦合,用于为主机提供存储能力。主机同存储设备100之间可通过多种方式相耦合,耦合方式包括但不限于通过例如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,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与存储设备100。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备100包括接口110、控制部件120、一个或多个NVM芯片130以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)140。
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(MagneticRandom Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)等是常见的NVM。
接口110可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
控制部件120用于控制在接口110、NVM芯片130以及DRAM 140之间的数据传输,还用于存储管理、主机逻辑地址到NVM芯片的物理地址映射、擦除均衡、坏块管理等。控制部件120可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件120可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件120也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件120的硬件来处理IO(Input/Output)命令。控制部件120还可以耦合到DRAM 140,并可访问DRAM 140的数据。在DRAM存储FTL表和/或缓存的IO命令的数据。
控制部件120包括闪存接口控制器(或称为介质接口、介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片130,并以遵循NVM芯片130的接口协议的方式向NVM芯片130发出命令,以操作NVM芯片130,并接收从NVM芯片130输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
存储器目标(Target)是NAND闪存封装内的共享芯片使能(CE,Chip Enable)信号的一个或多个逻辑单元(LUN,Logic UNit)。NAND闪存封装内包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron.com/~/media/Documents/Products/Other%20Documents/ONFI3_0Gold.ashx获得的“Open NAND Flash Interface Specification(Revision 3.0)”中,提供了关于目标(target)、逻辑单元(LUN)、平面(Plane)的含义,其为现有技术的一部分。
NVM存储介质上通常按页来存储和读取数据。而按块来擦除数据。NVM存储介质上的块(也称物理块)包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
图2展示了现有技术中的存储设备的控制部件的框图。存储设备的控制部件104包括主机接口210、前端处理模块220、闪存管理模块230以及一个或多个介质接口控制器240。
主机接口210用于同主机交换命令与数据。闪存管理模块230提供逻辑地址到物理地址映射、磨损均衡、垃圾回收等功能,并生成IO命令发送给介质接口控制器240。介质接口控制器240耦合到NVM芯片105。可选地,介质接口控制器有一个或多个,每个接口控制器耦合到各自的NVM芯片105。介质接口控制器240接收IO命令,并根据IO命令向NVM芯片发出操作NVM芯片的命令(读、编程、擦除等命令,将其统称为“存储命令”)。
介质接口控制器240包括入港队列242与出港队列244。入港队列242与出港队列244用于耦合闪存管理模块230与介质接口控制器240。介质接口控制器通过入港队列242接收IO命令,还通过出港队列244输出IO命令处理结果。闪存管理模块230通过入港队列242向介质接口控制器240提交IO命令,并从出港队列244获取IO命令的处理结果。
NVM芯片105处理不同类型的存储命令(读、编程、擦除等命令)通常具有不同的处理时间。一般地,在三种存储命令中,擦除命令的处理时间最长,读命令的处理时间最短。
发明内容
根据本申请的第一方面,提供了根据本申请第一方面的第一介质接口控制器,包括:控制单元、数据传输单元、缓存和物理层单元;控制单元从存储器向缓存搬移数据;物理层单元根据控制单元的操作,将编程命令发送给NVM芯片;数据传输单元根据控制单元的操作,将缓存中的数据通过物理层单元发送给NVM芯片,以根据编程命令执行所述数据。
根据本申请的第一方面的第一介质接口控制器,提供了根据本申请第一方面的第二介质接口控制器,其中,控制单元操作物理层单元通过第一通道向NVM芯片的第一LUN发送完毕第一编程命令所要写入的数据后;控制单元操作物理层单元从第一通道切换至第二通道,以通过第二通道向NVM芯片的第二LUN发送第二编程命令所要写入的数据。
根据本申请的第一方面的第二介质接口控制器,提供了根据本申请第一方面的第三介质接口控制器,其中,待通过第N通道向NVM芯片的其他LUN发送完毕其他编程命令所要写入的数据后;控制单元操作物理层单元从第N通道切换至第一通道,以通过第一通道查询第一LUN对第一编程命令的处理状态。
根据本申请的第一方面的第一至第四介质接口控制器之一,提供了根据本申请第一方面的第四介质接口控制器,其中,从存储器向缓存搬移数据与物理层单元查询编程命令的处理状态并行发生。
根据本申请的第一方面的第四介质接口控制器,提供了根据本申请第一方面的第五介质接口控制器,其中,从存储器向缓存搬移数据的操作完成,与查询编程命令执行完成同时发生。
根据本申请的第一方面的第四或第五介质接口控制器,提供了根据本申请第一方面的第六介质接口控制器,其中,从存储器搬移要发送给NVM芯片的第一LUN处理第一编程命令所要写入的数据到缓存的操作,同将缓存中已存储的第二编程命令所要写入的数据传输给NVM芯片的第二LUN的操作,同时发生。
根据本申请的第一方面的第一介质接口控制器,提供了根据本申请第一方面的第七介质接口控制器,其中,物理层单元根据控制单元的操作,查询NVM芯片对编程命令的处理状态,获得编程命令执行完成的执行结果;控制单元根据编程命令的执行结果,发起从存储器向缓存搬移下一编程命令所要写入的数据的操作,或者发起向NVM芯片传输已经搬移至缓存中的下一编程命令所要写入的数据。
根据本申请的第一方面的第七介质接口控制器,提供了根据本申请第一方面的第八介质接口控制器,其中,物理层单元根据控制单元的操作通过单一通道,查询NVM芯片的第一LUN对第一编程命令的处理状态;待查询到第一编程命令处理完毕,控制单元发起从存储器向缓存搬移第二编程命令所要写入的数据,以通过所述单一通道向NVM芯片的第二LUN发送缓存中的第二编程命令所要写入的数据。
根据本申请的第一方面的第一介质接口控制器,提供了根据本申请第一方面的第九介质接口控制器,其中,控制单元在向NVM芯片传输编程命令所要写入的数据期间或NVM芯片根据编程命令操作所述数据期间,根据发送给NVM芯片但尚未执行完成的各编程命令的已执行时间或预期执行完成时间,控制单元发起从存储器向缓存搬移下一编程命令所要写入的数据的操作,或者操作物理层单元查询NVM芯片对编程命令的处理状态。
根据本申请的第一方面的第九介质接口控制器,提供了根据本申请第一方面的第十介质接口控制器,其中,控制单元响应于向NVM芯片的第一LUN发送的第一编程命令预期执行完成时间的剩余值小于第一阈值;控制单元发起从存储器搬移第一LUN将处理的下一编程命令所要写入的数据到缓存;控制单元响应于第一LUN传输数据的通道可用或者识别出向第一LUN发送的第一编程命令预期执行完成时间的剩余值小于第二阈值;控制单元发起查询第一LUN对第一编程命令的处理状态,以待第一编程命令处理完毕后,将缓存中的下一编程命令所要写入的数据传输至第一LUN。
根据本申请的第一方面的第十介质接口控制器,提供了根据本申请第一方面的第十一介质接口控制器,其中,在te-(tc-t0)<th时,控制单元从存储器向缓存搬移第一LUN将处理的下一编程命令所要写入的数据;其中,tc为当前时间,t0为向第一LUN发送第一编程命令的时间点,te为第一LUN执行第一编程命令的预期执行完成时间长度,th为第一阈值。
根据本申请的第一方面的第十一介质接口控制器,提供了根据本申请第一方面的第十二介质接口控制器,其中,在tf<te-(tc-t0)<th时,控制单元从存储器向缓存搬移第一LUN将处理的下一编程命令所要写入的数据;其中,tf为从存储器向缓存搬移编程命令所要写入的数据的时长。
根据本申请的第一方面的第十至第十二介质接口控制器之一,提供了根据本申请第一方面的第十三介质接口控制器,其中,控制单元识别出向第一LUN发送的第一编程命令预期执行完成时间的剩余值为查询一次编程命令处理状态所需的时间,控制单元发起查询第一LUN对第一编程命令的处理状态。
根据本申请的第一方面的第九至第十三介质接口控制器之一,提供了根据本申请第一方面的第十四介质接口控制器,其中,控制单元向NVM芯片的第N个LUN传输第N编程命令所要写入的数据期间,获取已发送给NVM芯片但尚未执行完成的各编程命令的已执行时间或预期执行完成时间的剩余值,响应于识别出向第一LUN发送的第一编程命令预期执行完成时间的剩余值小于第一阈值,发起从存储器搬移第一LUN将处理的下一编程命令所要写入的数据到缓存的操作。
根据本申请的第一方面的第十四介质接口控制器,提供了根据本申请第一方面的第十五介质接口控制器,其中,控制器操作物理层单元分时复用单一通道向第一LUN发送第一编程命令,直至向第N个LUN发送第N编程命令。
根据本申请的第一方面的第十至第十五介质接口控制器之一,提供了根据本申请第一方面的第十六介质接口控制器,其中,从存储器向缓存搬移第一LUN处理下一编程命令所要写入的数据和查询第一LUN对第一编程命令的处理状态并行发生。
根据本申请的第一方面的第十至第十六介质接口控制器之一,提供了根据本申请第一方面的第十七介质接口控制器,其中,从存储器向缓存搬移第一LUN处理下一编程命令所要写入的数据的操作完成,与查询第一LUN对第一编程命令执行完成同时发生。
根据本申请的第一方面的第十至第十七介质接口控制器之一,提供了根据本申请第一方面的第十八介质接口控制器,其中,响应于第一LUN处理下一编程命令所要写入的数据存储在缓存,且查询到第一LUN处理的第一编程命令执行完毕,控制单元操作数据搬移单元通过物理层单元将缓存中的下一编程命令所要写入的数据传输至第一LUN。
根据本申请的第一方面的第十至第十七介质接口控制器,提供了根据本申请第一方面的第十九介质接口控制器,其中,响应于查询到第一LUN处理的第一编程命令已执行完成,但第一LUN的下一编程命令所需的数据尚未被写入缓存,控制单元指示物理层单元向第一LUN传输不包括数据的下一编程命令的部分;并且响应于该下一编程命令要写入的数据被搬移至缓存,控制单元指示物理层单元向第一LUN传输该下一编程命令要写入的数据。
根据本申请的第一方面的第十九介质接口控制器,提供了根据本申请第一方面的第二十介质接口控制器,其中,编程命令的部分包括操作码和地址部分。
根据本申请的第一方面的第十介质接口控制器,提供了根据本申请第一方面的第二十一介质接口控制器,其中,控制单元响应于通过第一通道向NVM芯片的第一LUN发送的第一编程命令预期执行完成时间的剩余值小于第一阈值;控制单元发起从存储器搬移第一LUN将处理的下一编程命令所要写入的数据到缓存;控制单元响应于第一LUN传输数据的第一通道可用,控制单元发起查询第一LUN对第一编程命令的处理状态,以待第一编程命令处理完毕后,将缓存中的下一编程命令所要写入的数据通过第一通道传输至第一LUN。
根据本申请的第一方面的第二十一介质接口控制器,提供了根据本申请第一方面的第二十二介质接口控制器,其中,在通过第一通道向第一LUN传输第一LUN将处理的下一编程执行的数据期间,控制单元响应于通过第二通道向NVM芯片的第二LUN发送的第二编程命令预期执行完成时间的剩余值小于第三阈值;控制单元发起从存储器搬移第二LUN将处理的下一编程命令所要写入的数据到缓存,以待通过第二通道传输至第二LUN。
根据本申请的第一方面的第三至第二十二介质接口控制器之一,提供了根据本申请第一方面的第二十三介质接口控制器,其中,物理层单元查询编程命令的处理状态期间,控制单元获得指示数据搬移已完成的消息。
根据本申请的第一方面的第一至第二十三介质接口控制器之一,提供了根据本申请第一方面的第二十四介质接口控制器,其中,根据接收到的写命令,控制单元操作物理层单元生成编程命令。
根据本申请的第一方面的第一至第二十四介质接口控制器,提供了根据本申请第一方面的第二十五介质接口控制器,其中,控制单元操作内存控制器从存储器向缓存搬移数据。
根据本申请的第一方面的第二十五介质接口控制器,提供了根据本申请第一方面的第二十六介质接口控制器,其中,内存控制器实施数据搬移操作与物理层单元实施处理状态查询操作被并行处理。
根据本申请的第一方面的第三至第二十六介质接口控制器之一,提供了根据本申请第一方面的第二十七介质接口控制器,其中,从物理层单元发出表示数据传输结束的符号开始,查询NVM芯片对编程命令的处理状态。
根据本申请的第一方面的第三至第二十七介质接口控制器之一,提供了根据本申请第一方面的第二十八介质接口控制器,其中,多次查询NVM芯片对编程命令的处理状态,以获得编程命令的执行结果。
根据本申请的第二方面,提供了根据本申请第二方面的第一编程命令的处理方法,包括以下步骤:根据编程命令将获取的数据发送给NVM芯片;根据编程命令的执行结果发起从存储器搬移下一编程命令所要写入的数据的操作。
根据本申请的第二方面的第一编程命令的处理方法,提供了根据本申请第二方面的第二编程命令的处理方法,其中,通过第一通道向NVM芯片的第一LUN发送完毕第一编程命令所要写入的数据后;通过第二通道向NVM芯片的第二LUN发送第二编程命令所要写入的数据。
根据本申请的第二方面的第二编程命令的处理方法,提供了根据本申请第二方面的第三编程命令的处理方法,其中,待通过第N通道向NVM芯片的其他LUN发送完毕其他编程命令所要写入的数据后;通过第一通道查询第一LUN对第一编程命令的处理状态。
根据本申请的第二方面的第一至第三编程命令的处理方法之一,提供了根据本申请第二方面的第四编程命令的处理方法,其中,从存储器搬移数据到缓存与查询编程命令的处理状态并行发生。
根据本申请的第二方面的第四编程命令的处理方法,提供了根据本申请第二方面的第五编程命令的处理方法,其中,从存储器搬移数据的操作完成,与查询编程命令执行完成同时发生。
根据本申请的第二方面的第四或第五编程命令的处理方法,提供了根据本申请第二方面的第六编程命令的处理方法,其中,从存储器搬移要发送给NVM芯片的第一LUN处理第一编程命令所要写入的数据的操作,同将已搬移的第二编程命令所要写入的数据传输给NVM芯片的第二LUN的操作,同时发生。
根据本申请的第二方面的第一编程命令的处理方法,提供了根据本申请第二方面的第七编程命令的处理方法,其中,查询NVM芯片的第一LUN对第一编程命令的处理状态;待查询到第一编程命令处理完毕,发起从存储器搬移第二编程命令所要写入的数据的操作,以向NVM芯片的第二LUN发送已搬移的第二编程命令所要写入的数据。
根据本申请的第二方面的第一编程命令的处理方法,提供了根据本申请第二方面的第八编程命令的处理方法,其中,在向NVM芯片传输编程命令所要写入的数据期间或NVM芯片根据编程命令操作所述数据期间,根据发送给NVM芯片但尚未执行完成的各编程命令的已执行时间或预期执行完成时间,发起从存储器搬移下一编程命令所要写入的数据的操作,或者查询NVM芯片对编程命令的处理状态。
根据本申请的第二方面的第一编程命令的处理方法,提供了根据本申请第二方面的第九编程命令的处理方法,其中,响应于向NVM芯片的第一LUN发送的第一编程命令预期执行完成时间的剩余值小于第一阈值;发起从存储器搬移第一LUN将处理的下一编程命令所要写入的数据的操作;响应于第一LUN传输数据的通道可用或者识别出向第一LUN发送的第一编程命令预期执行完成时间的剩余值小于第二阈值;发起查询第一LUN对第一编程命令的处理状态,以待第一编程命令处理完毕后,将已搬移的下一编程命令所要写入的数据传输至第一LUN。
根据本申请的第二方面的第九编程命令的处理方法,提供了根据本申请第二方面的第十编程命令的处理方法,其中,在te-(tc-t0)<th时,控制单元从存储器向缓存搬移第一LUN将处理的下一编程命令所要写入的数据;其中,tc为当前时间,t0为向第一LUN发送第一编程命令的时间点,te为第一LUN执行第一编程命令的预期执行完成时间长度,th为第一阈值。
根据本申请的第二方面的第十编程命令的处理方法,提供了根据本申请第二方面的第十一编程命令的处理方法,其中,在tf<te-(tc-t0)<th时,控制单元从存储器向缓存搬移第一LUN将处理的下一编程命令所要写入的数据;其中,tf为从存储器搬移编程命令所要写入的数据的时长。
根据本申请的第二方面的第九至第十一编程命令的处理方法之一,提供了根据本申请第二方面的第十二编程命令的处理方法,其中,响应于识别出向第一LUN发送的第一编程命令预期执行完成时间的剩余值为查询一次编程命令处理状态所需的时间,发起查询第一LUN对第一编程命令的处理状态的操作。
根据本申请的第二方面的第八至第十二编程命令的处理方法之一,提供了根据本申请第二方面的第十三编程命令的处理方法,其中,向NVM芯片的第N个LUN传输第N编程命令所要写入的数据期间,获取已发送给NVM芯片但尚未执行完成的各编程命令的已执行时间或预期执行完成时间的剩余值,响应于识别出向第一LUN发送的第一编程命令预期执行完成时间的剩余值小于第一阈值,发起从存储器搬移第一LUN将处理的下一编程命令所要写入的数据的操作。
根据本申请的第二方面的第十三编程命令的处理方法,提供了根据本申请第二方面的第十四编程命令的处理方法,其中,分时复用单一通道向第一LUN发送第一编程命令,直至向第N个LUN发送第N编程命令。
根据本申请的第二方面的第九至第十四编程命令的处理方法之一,提供了根据本申请第二方面的第十五编程命令的处理方法,其中,从存储器向搬移第一LUN处理下一编程命令所要写入的数据和查询第一LUN对第一编程命令的处理状态并行发生。
根据本申请的第二方面的第九至第十五编程命令的处理方法之一,提供了根据本申请第二方面的第十六编程命令的处理方法,其中,从存储器搬移第一LUN处理下一编程命令所要写入的数据的操作完成,与查询第一LUN对第一编程命令执行完成同时发生。
根据本申请的第二方面的第九至第十六编程命令的处理方法之一,提供了根据本申请第二方面的第十七编程命令的处理方法,其中,响应于第一LUN处理下一编程命令所要写入的数据以从存储器搬移,且查询到第一LUN处理的第一编程命令执行完毕,将已搬移的下一编程命令所要写入的数据传输至第一LUN。
根据本申请的第二方面的第九至第十六编程命令的处理方法之一,提供了根据本申请第二方面的第十八编程命令的处理方法,其中,响应于查询到第一LUN处理的第一编程命令已执行完成,但第一LUN的下一编程命令所需的数据尚未被写入缓存,向第一LUN传输不包括数据的下一编程命令的部分;并且响应于该下一编程命令要写入的数据已从存储器搬移出,向第一LUN传输已从存储器搬移出的该下一编程命令要写入的数据。
根据本申请的第二方面的第十八编程命令的处理方法,提供了根据本申请第二方面的第十九编程命令的处理方法,其中,编程命令的部分包括操作码和地址部分。
根据本申请的第二方面的第九编程命令的处理方法,提供了根据本申请第二方面的第二十编程命令的处理方法,其中,响应于通过第一通道向NVM芯片的第一LUN发送的第一编程命令预期执行完成时间的剩余值小于第一阈值;发起从存储器搬移第一LUN将处理的下一编程命令所要写入的数据的操作;响应于第一LUN传输数据的第一通道可用,发起查询第一LUN对第一编程命令的处理状态,以待第一编程命令处理完毕后,将已从存储器搬移的下一编程命令所要写入的数据通过第一通道传输至第一LUN。
根据本申请的第二方面的第二十编程命令的处理方法,提供了根据本申请第二方面的第二十一编程命令的处理方法,其中,在通过第一通道向第一LUN传输第一LUN将处理的下一编程执行的数据期间,响应于通过第二通道向NVM芯片的第二LUN发送的第二编程命令预期执行完成时间的剩余值小于第三阈值;发起从存储器搬移第二LUN将处理的下一编程命令所要写入的数据的操作,以待通过第二通道传输至第二LUN。
根据本申请的第二方面的第一至第二十一编程命令的处理方法之一,提供了根据本申请第二方面的第二十二编程命令的处理方法,其中,查询编程命令的处理状态期间,获得指示数据搬移已完成的消息。
根据本申请的第二方面的第一至第二十二编程命令的处理方法之一,提供了根据本申请第二方面的第二十三编程命令的处理方法,其中,发向NVM芯片出表示数据传输结束的符号开始,查询NVM芯片对编程命令的处理状态。
根据本申请的第二方面的第一至第二十三编程命令的处理方法之一,提供了根据本申请第二方面的第二十四编程命令的处理方法,其中,多次查询NVM芯片对编程命令的处理状态,以获得编程命令的执行结果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1展示了现有技术中的存储设备的框图;
图2展示了现有技术中的存储设备的控制部件的框图;
图3A展示了介质接口控制器的框图;
图3B展示了处理编程命令的时序图;
图4A展示了处理编程命令的又一时序图;
图4B展示了处理编程命令的另一时序图;
图5展示了根据本申请的实施例的处理编程命令的时序图;
图6展示了根据本申请又一实施例的处理编程命令的时序图;
图7展示了根据本申请再一实施例的处理编程命令的时序图;
图8展示了根据本申请依然再一实施例的处理编程命令的时序图;
图9展示了根据本申请实施例的处理编程命令的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图3A展示了介质接口控制器的框图。
介质接口控制器310包括控制单元311、数据传输单元312、缓存313与物理层单元(PHY)314。介质接口控制器310通过内存控制器330耦合到存储器320,以从存储器320获取要存储到NVM芯片340的数据,和/或从将从NVM芯片340读出的数据搬移到存储器320。
物理层单元(PHY)314耦合NVM芯片340。可选地,物理层单元(PHY)314包括多个实例,通过多个通道耦合到NVM芯片340,各通道上存储命令可被并行传输。
介质接口控制器310的控制单元311根据收到的IO命令,操作介质接口控制器310的一个或多个部件来通过物理层单元314生成存储命令,并发送给NVM芯片340,也操作物理层单元(PHY)314从NVM芯片340获取存储命令的执行结果。
介质接口控制器310的缓存313包括一个或多个单元。作为举例,为每个通道,或者为每个LUN(逻辑单元)设置缓存,缓存的大小能容纳一个编程命令所要写入NVM芯片的数据。
数据传输单元312响应于控制单元311的指示,在缓存313与物理层单元(PHY)314之间搬移数据。
图3B展示了处理编程命令的时序图。
也参看图3A,作为举例,介质接口控制器收到写命令(图3B中,由①指示),根据写命令,生成发送给NVM芯片的编程命令。可选地,介质接口控制器每次接收多个写命令,并对每个写命令分别处理。
为向NVM芯片发送编程命令,控制单元操作内存控制器从存储器搬移编程命令要操作的数据,并将搬移的数据存储缓存中(图3B中,由②指示)。控制单元还操作物理层单元(PHY)生成具有指定格式的编程命令的操作码(参看图3B,操作码“80”)与地址(参看图3B,“ADDR”指示地址)部分,并发送给NVM芯片(图3B中,由③指示)。控制单元还操作数据传输单元将缓存的数据通过物理层单元(PHY)发送给NVM芯片(参看图3B的“数据传输”以及由“10”表示“数据传输”结束)(图3B中,由④指示)。接下来,控制单元还操作物理层单元(PHY)查询接收了编程命令的NVM芯片对编程命令的处理状态(图3B中,由⑤指示),以获知编程命令是否被处理完成。而从物理层单元(PHY)发出表示“数据传输”结束的“10”符号,到NVM芯片对该编程命令的处理完成,这段时间相对较长(若干毫秒)。从而查询NVM芯片对编程命令的处理状态的操作可能被执行多次,直到通过查询到的状态确定编程命令被处理完成。响应于NVM芯片完成了对编程命令的处理,控制单元再次操作内存控制器从存储器搬移数据(图3B中,由⑥指示),用于生成下一编程命令(图3B中,由⑦指示)。
图4A展示了处理编程命令的又一时序图。
根据图4A的例子,物理层单元(PHY)通过单一通道耦合多个LUN(逻辑单元)(图4A中,由LUN0、LUN1、LUN2与LUN3)所指示。控制单元操作物理层单元(PHY)向各个LUN发送存储命令,这些存储命令分时复用该单一通道。图4A中,横向箭头指示时间流逝的方向。
作为举例,控制单元首先从存储器获取要写入LUN 0的数据,并将获取的数据通过编程命令传输给LUN 0。控制单元在通道上查询LUN 0处理编程命令的结果,在LUN 0处理完编程命令后,从存储器获取要写入LUN 1的数据,并将获取的数据通过编程命令传输给LUN1。接下来,控制单元在通道上查询LUN 1处理编程命令的结果,在LUN 1处理完编程命令后,从存储器获取要写入LUN 2的数据,并将获取的数据通过编程命令传输给LUN 2。控制单元在通道上查询LUN 2处理编程命令的结果,在LUN 2处理完编程命令后,从存储器获取要写入LUN 3的数据,并将获取的数据通过编程命令传输给LUN 3。
图4B展示了处理编程命令的另一时序图。
根据图4B的例子,物理层单元(PHY)通过多个通道耦合多个LUN(逻辑单元)(图4B中,由LUN0、LUN1、LUN2与LUN3)所指示。图4B的例子中,每个LUN各自通过独立的通道耦合到物理层单元(PHY)。
控制单元操作物理层单元(PHY)向各个LUN发送存储命令。在控制单元的操作下,先通过用于LUN 0的通道向LUN 0发送编程命令(图4B中,用“80ADDRDATA 10”代表编程命令),然后,不等待发送给LUN 0的命令执行完成,即通过用于LUN 1的通道向LUN 1发送编程命令,接下来然后通过用于LUN 2的通道向LUN 2发送编程命令,以及再通过用于LUN 3的通道向LUN 3发送编程命令。
在将编程命令发送给各个LUN后,控制单元指示物理层单元(PHY)查询各LUN执行编程命令的结果。参看图4B,示出了在用于LUN 0的通道上查询编程命令的执行结果,并在确认之前的编程命令执行完成后,在用于LUN 0的通道再次向LUN 0发送编程命令。
由于从发送了编程命令(图4B中,用“80ADDRDATA 10”代表编程命令),到查询到编程命令执行成功,存在较长的时间间隔,在根据图4B的例子中,在发送了编程命令后,不等待该编程命令执行完成,而是切换到其他LUN,在用于其他一个或多个LUN的通道上向其他LUN发送编程命令,在向LUN 3(作为举例)发送编程命令后,再回到LUN 0,通过用于LUN 0的通道查询之前向LUN 0发送的编程命令的执行状态。从而在各通道上并发地发送存储命令,提高了存储命令的处理效率。
图5展示了根据本申请的实施例的处理编程命令的时序图。
根据图5的例子,物理层单元(PHY)耦合多个LUN(逻辑单元)(图5中,由LUN0、LUN1、LUN2与LUN3)所指示。图5的例子中,各LUN通过独立或共享的通道耦合到物理层单元(PHY)。
控制单元操作物理层单元(PHY)向各个LUN发送存储命令。在控制单元的操作下,先从存储器获取要发送给LUN 0的数据并存储在缓存,以及向LUN 0发送编程命令,通过编程命令将缓存的数据传输给LUN 0。接下来,控制单元从存储器获取要发送给LUN 1的数据并存储在缓存,以及向LUN 1发送编程命令,通过编程命令将缓存的数据传输给LUN 1。继而,控制单元从存储器获取要发送给LUN 2的数据并存储在缓存,以及向LUN 2发送编程命令,通过编程命令将缓存的数据传输给LUN 2。以及,控制单元从存储器获取要发送给LUN 3的数据并存储在缓存,以及向LUN 3发送编程命令,通过编程命令将缓存的数据传输给LUN3。
作为举例,各个LUN通过共享的通道耦合到物理层单元(PHY),从而向各个LUN发送的编程命令,需要在不同时刻占用通道。从而向各LUN发送编程命令的操作,不能同时发生,而需要在时间上先后发生。以及从存储器搬移要发送给一个LUN的数据到缓存的操作,同将缓存的数据通过编程命令在通道上传输给其他LUN的操作,可以同时发生。图5中,横向箭头指示时间流逝的方向。
可选地,各个LUN通过独立的通道耦合到物理层单元(PHY),从而向各LUN发送编程命令的操作,可以同时发生。
根据本申请的实施例,控制单元记录向各LUN上发送编程命令的时间。作为举例,控制单元识别出向LUN 0发送编程命令的时间点是t0,当前时间为tc,而LUN 0执行编程命令的预期时间长度是te,从而在tc-t0略小于te时,控制单元通过内存控制器发起从存储器搬移数据到缓存的操作,所搬移的数据是接下来要通过编程命令传输给LUN 0的数据。从存储器搬移数据到缓存的操作,发起于查询编程命令的执行状态之前,从而一旦获知编程命令执行完成,可以立即传输下一编程命令。
例如,从内存搬移数据到缓存需要200us(微秒),控制单元在te-(tc-t0)为200us时,发起从内存搬移数据到缓存的操作,从而在LUN 0的编程命令执行完成后,可以立即传输对LUN 0的下一编程命令。可以理解地,根据从内存搬移数据到缓存的预期时间(记为tf),控制单元在te-(tc-t0)等于或大于tf时,发起从内存搬移数据到缓存的操作。以及进一步地,从内存搬移数据到缓存的操作发生的过早,会导致编程命令对应的数据过长时间占用缓存,这对于提升介质接口控制器的性能是不利的。因而控制单元合理选择发起从内存搬移数据到缓存的操作的时间,使得在对相同LUN的前一编程命令执行完成后,在缓存中已经准备好用于下一编程命令的数据,并且这些数据占用缓存的时间又不会太久。
除了发起从内存搬移数据到缓存的操作,控制单元还通过物理层单元(PHY)查询LUN 0的编程命令的执行状态。图5中展示了从内存搬移数据到缓存的操作与查询编程命令的执行状态的操作先后发生,可以理解地,数据搬移操作由内存控制器实施,而状态查询操作由物理层单元(PHY)实施,这两种操作可被并行处理。
响应于查询到例如LUN 0的编程命令执行完成,并且用于下一编程命令的数据已被搬移到缓存,控制单元操作物理层单元(PHY)向LUN 0发送该下一编程命令,并将缓存的数据传输给LUN 0。
作为举例,各个LUN通过共享的通道耦合到物理层单元(PHY),从而向各个LUN发送的编程命令,以及查询编程命令的执行状态的操作,需要在不同时刻占用通道。
依然作为举例,控制单元识别出向LUN 1发送的编程命令的执行即将完成(例如,预计还要200us执行完成),控制单元通过内存控制器发起从存储器搬移数据到缓存的操作,所搬移的数据是接下来要通过编程命令传输给LUN 1的数据。在数据搬移操作同时,或者在数据搬移操作之后,若耦合LUN 1的通道可用,控制单元还通过物理层单元(PHY)查询LUN 1上的编程命令的执行状态。可选地,控制单元在识别出向LUN 1发送的编程命令的执行即将完成(例如,预计还要20us执行完成,20us是查询一次编程命令的执行状态所需的时间),控制单元发起查询LUN 1上的编程命令的执行状态的操作。
类似地,控制单元依据各LUN的当前在执行的编程命令的预期的执行完成时间,不依赖于对编程命令的执行状态的查询,提前发起对各LUN的用于下一编程命令的数据的从存储器到缓存的搬移,以使得在各LUN的当前在执行的编程命令执行完成后,可立即向LUN传输下一编程命令,从而隐藏了从存储器搬移数据到缓存的延迟,加快了编程命令的处理速度。
可以理解地,虽然上面以编程命令为例描述了根据本申请的实施例,但是,本申请的实施例也适用于其他存储命令,如擦除命令、读命令等。
图6展示了根据本申请又一实施例的处理编程命令的时序图。
根据图6的例子,物理层单元(PHY)通过共享通道耦合多个LUN(逻辑单元)(图6中,由LUN0、LUN1、LUN2与LUN3)所指示。图6的例子中,各个LUN通过共享的通道耦合到物理层单元(PHY)。
控制单元操作物理层单元(PHY)向各个LUN发送存储命令。在控制单元的操作下,先通过用于LUN 0的通道向LUN 0发送编程命令(图6中,用“80ADDRDATA 10”代表编程命令),然后,不等待发送给LUN 0的编程命令执行完成,即通过用于LUN 1的通道向LUN 1发送编程命令,接下来然后通过用于LUN 2的通道向LUN 2发送编程命令,以及再通过用于LUN 3的通道向LUN 3发送编程命令。
图6还展示了介质接口控制器的框图,并用序号与箭头标注了处理编程命令过程中的多个步骤。框图与时序图中,相同的序号代表相同的步骤。
根据图6的实施例,控制单元操作物理层单元(PHY)向通道上的所有LUN发送编程命令后(图6中,向LUN 3发送的编程命令是最后发送的编程命令)(或者没有其他待发送的编程命令),特别是在物理层单元(PHY)传输用于LUN 3的编程命令的数据期间(图6中由①指示),控制单元检查已经发出的各编程命令的已执行时间或预期执行完成的时间(图6中由②指示)。
根据本申请的实施例,控制单元在物理层单元(PHY)传输编程命令期间检查已经发出的各编程命令的已执行时间或预期执行完成的时间,以使得在编程命令传输完成后(通道不再被占用后),有机会立即发出其他编程命令(其执行条件已具备,所需的数据已在缓存中),提高了通道的利用率。
例如,控制单元发现,在LUN 0上的编程命令的执行时间已接近编程命令的预期执行时间(例如,还差200us)(意味着编程命令即将执行完成),控制单元操作内存控制器发起从存储器到缓存的数据传输(图6中由③指示),来搬移用于LUN 0的下一编程命令的数据。
响应于在LUN3上的编程命令的执行时间已接近编程命令的预期执行时间,在通道可用后(例如,已经向LUN0发送了编程命令),控制单元还通过物理层单元(PHY)查询LUN 0的编程命令的执行状态(图6中由④指示)。另一方面,内存控制器响应于控制单元的数据传输请求,从存储器搬移数据到缓存(图6中由⑤指示)。希望从存储器搬移数据到缓存的操作的完成,与查询到LUN 0的编程命令的执行完成,二者同时发生,从而可立即向LUN 0传输下一编程命令。从存储器搬移数据到缓存的操作过早完成,将使得数据更长时间占用缓存,降低了缓存的利用率;从存储器搬移数据到缓存的操作过晚完成,则需要等待该操作完成才能发起对编程命令的传输,降低了对通道的利用率。从而,编程命令所需的数据已存储在缓存,且编程命令所访问的LUN的之前的编程命令已执行完成,是传输新的编程命令的两个前提条件。但这些前提条件不满足时,控制单元需要等待,或者识别其他LUN和/或其他存储命令是否可被传输。
响应于数据已被存储在缓存,且查询到(图6中由④指示)LUN 0的编程命令已执行完成,控制单元指示物理层单元(PHY)向LUN 0传输下一编程命令,并将缓存的数据传输给LUN 0(图6中用⑥指示)。
类似地,在物理层单元(PHY)传输用于LUN 0的编程命令的数据期间(图6中由⑥指示),控制单元检查已经发出的各编程命令的已执行时间或预期执行完成的时间,并识别出在LUN 1上的编程命令的执行时间已接近编程命令的预期执行时间,控制单元操作内存控制器发起从存储器到缓存的数据传输,来搬移用于LUN 1的下一编程命令的数据。以及在通道可用后,查询LUN 1的编程成命令的执行状态,并在合适的时机向LUN 1传输下一编程命令。
图7展示了根据本申请再一实施例的处理编程命令的时序图。
根据图7的例子,物理层单元(PHY)通过共享通道耦合多个LUN(逻辑单元)。图7的例子中,各个LUN通过共享的通道耦合到物理层单元(PHY)。
图7的时序图中,向右的箭头指示时间流逝的方向,还指示了介质接口控制器的各单元(内存控制器、控制单元、数据传输单元与物理层单元(PHY))在不同时间执行的操作。制器的各单元(内存控制器、控制单元、数据传输单元与物理层单元(PHY))并行操作。
图7还展示了介质接口控制器的框图,并用序号与箭头标注了处理编程命令过程中的多个步骤。图7的框图与时序图中,相同的序号代表相同的步骤。
图7的时序图的左侧部分指示数据传输单元通过物理层单元(PHY)传输用于LUN 3的编程命令的数据(由①指示)。这期间,控制单元检查已经发出的各编程命令的已执行时间或预期执行完成的时间(图7中由②指示)。
例如,控制单元发现,在LUN 0上的编程命令的执行时间已接近编程命令的预期执行时间(意味着编程命令即将执行完成),控制单元操作内存控制器发起从存储器到缓存的数据传输(图7中,序号③指示控制单元指示内存控制器发起对用于LUN 0的编程命令的数据的搬移,而序号⑤指示内存控制器将所需的数据从存储器搬移到介质接口控制器的缓存),来搬移用于LUN 0的下一编程命令的数据。
响应于数据传输单元为LUN 3传输数据完成,通道变为可用,控制单元还通过物理层单元(PHY)查询LUN 0的编程命令的执行状态(图7中由④指示)。在图7的实施例中,通过内存控制器从存储器搬移数据到缓存,与通过物理层单元(PHY)查询LUN 0的编程命令的执行状态,二者并行发生,从而缩短了编程命令的整体处理时间。
参看图7,控制单元指示内存控制器搬移数据,而数据搬移工作由内存控制器完成,在数据搬移期间,控制单元得以处理其他任务,例如,指示物理层单元(PHY)查询LUN 0的存储命令的执行状态。而在物理层单元(PHY)查询LUN 0的命令的执行状态期间,控制单元也得以处理其他任务,例如,获取指示数据搬移已完成的消息。
希望从存储器搬移数据到缓存的操作的完成,与查询到LUN0的编程命令的执行完成,二者同时发生,从而可立即使用该通道向LUN 0传输下一编程命令。
可选地,在图7的例子中,响应于查询到(图7中由④指示)LUN0的编程命令已执行完成,(即使下一编程命令所需的数据尚未被写入缓存)控制单元指示物理层单元(PHY)向LUN 0传输下一编程命令的部分(图7中用⑥指示)。所传输的下一编程命令的部分,不包括该下一编程命令要写入LUN 0的数据。以及响应于该下一编程命令要写入LUN 0的数据被存储在缓存,控制单元指示数据传输单元向LUN 0传输数据(图7中用⑦指示)。数据传输单元根据控制单元的指示从缓存获取数据,并通过物理层单元(PHY)传输给LUN 0。
接下来,在数据传输单元通过物理层单元(PHY)传输用于LUN 0的编程命令的数据期间,控制单元得以检查已经发出的其他编程命令的已执行时间或预期执行完成的时间,并获取即将执行完成的编程命令,以及获取该即将执行完成的编程命令所访问的LUN,并在该编程命令被执行完成前,提前准备用于该LUN的其他存储命令,从而缩短执行存储命令所需的时间。
图8展示了根据本申请依然再一实施例的处理编程命令的时序图。
根据图8的例子,介质接口控制器包括多个物理层单元(PHY1、PHY2)。物理层单元(PHY1)通过第一通道耦合LUN 0~LUN 3,物理层单元(PHY2)通过第二通道耦合LUN 4~LUN7。
图8图中,向右的箭头指示时间流逝的方向,还指示了介质接口控制器的各单元(内存控制器、控制单元、数据传输单元与物理层单元(PHY1、PHY2))在不同时间执行的操作。
图8的时序图的左侧部分指示数据传输单元通过物理层单元(PHY1)传输用于LUN3的编程命令的数据(由①指示),以及通过物理层单元(PHY2)传输用于LUN7的编程命令的数据。这期间,控制单元检查已经发出的各编程命令的已执行时间或预期执行完成的时间(图8中由②指示)。
例如,控制单元发现,在LUN 0上的编程命令的执行时间已接近编程命令的预期执行时间(意味着编程命令即将执行完成),控制单元操作内存控制器发起从存储器到缓存的数据传输(图8中,序号③指示控制单元指示内存控制器发起对用于LUN 0的编程命令的数据的搬移,而序号⑤指示内存控制器将所需的数据从存储器搬移到介质接口控制器的缓存),来搬移用于LUN 0的下一编程命令的数据。
响应于数据传输单元为LUN 3传输数据完成,通道变为可用,控制单元还通过物理层单元(PHY1)查询LUN 0的编程命令的执行状态(图8中由④指示)。
在图8的例子中,响应于查询到(图8中由④指示)LUN 0的编程命令已执行完成,(即使下一编程命令所需的数据尚未被写入缓存)控制单元指示物理层单元(PHY1)向LUN 0传输下一编程命令的部分(图8中用⑥指示)。所传输的下一编程命令的部分,不包括该下一编程命令要写入LUN 0的数据。以及响应于该下一编程命令要写入LUN 0的数据被存储在缓存,控制单元指示数据传输单元向LUN 0传输数据(图8中用⑦指示)。数据传输单元根据控制单元的指示从缓存获取数据,并通过物理层单元(PHY1)传输给LUN 0。
接下来,在数据传输单元通过物理层单元(PHY1)传输用于LUN 0的编程命令的数据期间,控制单元得以检查已经发出的其他编程命令的已执行时间或预期执行完成的时间,例如,识别出在LUN 4上的编程命令即将执行完成。控制单元指示内存控制器获取用于要发送给LUN 4的下一编程命令所需的数据,还(在物理层单元(PHY 2)所耦合的通道可用的情况下)指示物理层单元(PHY 2)获取LUN 4上的编程命令的执行状态。响应于LUN 4上的编程命令已执行完成,控制单元指示物理层单元(PHY2)向LUN4传输下一编程命令的部分,以及指示数据传输单元向LUN4传输数据。
图9展示了根据本申请实施例的处理编程命令的流程图。
存储设备并发处理多个存储命令。介质接口控制器向所耦合的多个LUN发出多个存储命令。以编程命令为例,介质接口控制器根据正在执行的编程命令之一(记为C1)的执行时间识别该编程命令的执行即将完成(910),而发起对编程命令C2所需的数据的获取(920)。编程命令C1与编程命令C2访问相同的LUN,并且要使用相同的通道传输。从存储设备的存储器获取编程命令C2所需的数据并存储在介质接口控制器的缓存中。
还获取或反复获取编程命令C1的执行状态(930),以获知编程命令C1何时执行完成。
响应于编程命令C1执行完成(940),向待访问的LUN传输编程命令C2的部分(950),例如,指示编程命令的操作码与地址的部分。以及将缓存中的编程命令C2所需的数据传输给待访问的LUN(960)。
可选地,若识别出编程命令C1已执行完成,且编程命令C2所需的数据已存储在缓存中,则获取缓存中的数据,并通过编程命令C2向待访问的LUN传输所获取的数据。
本申请的方法和装置可以以硬件、软件、固件以及上述中的任意组合来实现。硬件可以包括数字电路、模拟电路、数字信号处理器(DSP)、专用继承电路(ASIC)等等。软件可以包括计算机可读程序,这些计算机可读程序在被计算机执行时,实现本申请所述的方法。
本申请的软件还可以存储在计算机可读存储介质,例如硬盘,光盘等等中,该计算机可读存储介质存储有程序,当所述程序被一个设备执行时,使得所述设备进行上面所述的方法。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种介质接口控制器,包括:控制单元、数据传输单元、缓存和物理层单元;
控制单元从存储器向缓存搬移数据;
物理层单元根据控制单元的操作,将编程命令发送给NVM芯片;
数据传输单元根据控制单元的操作,将缓存中的数据通过物理层单元发送给NVM芯片,以根据编程命令执行所述数据。
2.根据权利要求1所述的介质接口控制器,其中,控制单元在向NVM芯片传输编程命令所要写入的数据期间或NVM芯片根据编程命令操作所述数据期间,根据发送给NVM芯片但尚未执行完成的各编程命令的已执行时间或预期执行完成时间,控制单元发起从存储器向缓存搬移下一编程命令所要写入的数据的操作,或者操作物理层单元查询NVM芯片对编程命令的处理状态。
3.根据权利要求2所述的介质接口控制器,其中,控制单元响应于向NVM芯片的第一LUN发送的第一编程命令预期执行完成时间的剩余值小于第一阈值;
控制单元发起从存储器搬移第一LUN将处理的下一编程命令所要写入的数据到缓存;
控制单元响应于第一LUN传输数据的通道可用或者识别出向第一LUN发送的第一编程命令预期执行完成时间的剩余值小于第二阈值;
控制单元发起查询第一LUN对第一编程命令的处理状态,以待第一编程命令处理完毕后,将缓存中的下一编程命令所要写入的数据传输至第一LUN。
4.根据权利要求3所述的介质接口控制器,其中,在te-(tc-t0)<th时,控制单元从存储器向缓存搬移第一LUN将处理的下一编程命令所要写入的数据;
其中,tc为当前时间,t0为向第一LUN发送第一编程命令的时间点,te为第一LUN执行第一编程命令的预期执行完成时间长度,th为第一阈值。
5.根据权利要求3或4所述的介质接口控制器,其中,控制单元识别出向第一LUN发送的第一编程命令预期执行完成时间的剩余值为查询一次编程命令处理状态所需的时间,控制单元发起查询第一LUN对第一编程命令的处理状态。
6.根据权利要求2-4所述的介质接口控制器之一,其中,控制单元向NVM芯片的第N个LUN传输第N编程命令所要写入的数据期间,获取已发送给NVM芯片但尚未执行完成的各编程命令的已执行时间或预期执行完成时间的剩余值,响应于识别出向第一LUN发送的第一编程命令预期执行完成时间的剩余值小于第一阈值,发起从存储器搬移第一LUN将处理的下一编程命令所要写入的数据到缓存的操作。
7.根据权利要求3或4所述的介质接口控制器,其中,响应于查询到第一LUN处理的第一编程命令已执行完成,但第一LUN的下一编程命令所需的数据尚未被写入缓存,控制单元指示物理层单元向第一LUN传输不包括数据的下一编程命令的部分;
并且响应于该下一编程命令要写入的数据被搬移至缓存,控制单元指示物理层单元向第一LUN传输该下一编程命令要写入的数据。
8.根据权利要求3所述的介质接口控制器,其中,控制单元响应于通过第一通道向NVM芯片的第一LUN发送的第一编程命令预期执行完成时间的剩余值小于第一阈值;
控制单元发起从存储器搬移第一LUN将处理的下一编程命令所要写入的数据到缓存;
控制单元响应于第一LUN传输数据的第一通道可用,控制单元发起查询第一LUN对第一编程命令的处理状态,以待第一编程命令处理完毕后,将缓存中的下一编程命令所要写入的数据通过第一通道传输至第一LUN。
9.根据权利要求8所述的介质接口控制器,其中,在通过第一通道向第一LUN传输第一LUN将处理的下一编程执行的数据期间,控制单元响应于通过第二通道向NVM芯片的第二LUN发送的第二编程命令预期执行完成时间的剩余值小于第三阈值;
控制单元发起从存储器搬移第二LUN将处理的下一编程命令所要写入的数据到缓存,以待通过第二通道传输至第二LUN。
10.一种编程命令的处理方法,包括以下步骤:
根据编程命令将获取的数据发送给NVM芯片;
根据编程命令的执行结果发起从存储器搬移下一编程命令所要写入的数据的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910537262.4A CN112115066A (zh) | 2019-06-20 | 2019-06-20 | 基于存储命令处理时间预测而调度存储命令的介质接口控制器及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910537262.4A CN112115066A (zh) | 2019-06-20 | 2019-06-20 | 基于存储命令处理时间预测而调度存储命令的介质接口控制器及其方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112115066A true CN112115066A (zh) | 2020-12-22 |
Family
ID=73795888
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910537262.4A Pending CN112115066A (zh) | 2019-06-20 | 2019-06-20 | 基于存储命令处理时间预测而调度存储命令的介质接口控制器及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112115066A (zh) |
-
2019
- 2019-06-20 CN CN201910537262.4A patent/CN112115066A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10997093B2 (en) | NVME data processing method and NVME device | |
EP2849076B1 (en) | Dma transmission method and system | |
CN109947362B (zh) | 管理闪存存储器读取操作 | |
US9563367B2 (en) | Latency command processing for solid state drive interface protocol | |
EP2849077B1 (en) | Method for writing data into storage device and storage device | |
EP2377028B1 (en) | Modifying commands | |
US20150261720A1 (en) | Accessing remote storage devices using a local bus protocol | |
US20150261434A1 (en) | Storage system and server | |
US20090172264A1 (en) | System and method of integrating data accessing commands | |
TW200406680A (en) | Method, system, and program for handling input/output commands | |
KR20140067405A (ko) | 저장 장치 및 그것의 데이터 전송 방법 | |
US10901624B1 (en) | Dummy host command generation for supporting higher maximum data transfer sizes (MDTS) | |
KR20180037099A (ko) | 비휘발성 스토리지 시스템 및 비휘발성 스토리지 장치들을 위한 데이터 스토리지 액세스 프로토콜 | |
CN109213687B (zh) | 数据储存装置、存储器操作方法及操作指令执行方法 | |
CN111258932A (zh) | 加速ufs协议处理的方法与存储控制器 | |
CN113485643B (zh) | 用于数据存取的方法及数据写入的控制器 | |
CN113468083B (zh) | 一种双端口NVMe控制器及控制方法 | |
CN113196225A (zh) | 开放信道矢量命令执行 | |
CN112115066A (zh) | 基于存储命令处理时间预测而调度存储命令的介质接口控制器及其方法 | |
CN213338708U (zh) | 一种控制部件及存储设备 | |
CN111258491B (zh) | 降低读命令处理延迟的方法与装置 | |
CN108536475B (zh) | 完整编程命令处理方法与装置 | |
JP6992750B2 (ja) | メモリコントローラ、メモリシステムおよび情報処理システム | |
CN113515234B (zh) | 一种用于控制数据读出到主机的方法及控制器 | |
CN114328304B (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 |