CN117251107A - 降低页条带写操作性能波动的方法 - Google Patents
降低页条带写操作性能波动的方法 Download PDFInfo
- Publication number
- CN117251107A CN117251107A CN202310774507.1A CN202310774507A CN117251107A CN 117251107 A CN117251107 A CN 117251107A CN 202310774507 A CN202310774507 A CN 202310774507A CN 117251107 A CN117251107 A CN 117251107A
- Authority
- CN
- China
- Prior art keywords
- lun
- controller
- xor
- data
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 143
- 239000000872 buffer Substances 0.000 claims abstract description 160
- 230000004044 response Effects 0.000 claims abstract description 31
- 238000012545 processing Methods 0.000 claims description 136
- 230000008569 process Effects 0.000 claims description 90
- 238000012795 verification Methods 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 description 27
- 238000010586 diagram Methods 0.000 description 18
- 238000007726 management method Methods 0.000 description 11
- 238000013507 mapping Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000000903 blocking effect Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- CXOXHMZGEKVPMT-UHFFFAOYSA-N clobazam Chemical compound O=C1CC(=O)N(C)C2=CC=C(Cl)C=C2N1C1=CC=CC=C1 CXOXHMZGEKVPMT-UHFFFAOYSA-N 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 229940044442 onfi Drugs 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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
-
- 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/0658—Controller construction arrangements
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
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
本申请提供一种降低页条带写操作性能波动的方法,该方法包括:响应于要向第一页条带的每个第一物理页写入指定数据,生成成对的P1操作和R操作,P1操作指示将存储器中的指定数据搬移到NVM芯片,R操作指示对存储器中的指定数据执行XOR计算,并在第一页条带对应的第一XOR缓存中保留计算结果;第一页条带包括第二物理页与多个第一物理页;响应于要向第一页条带的第二物理页写入数据,生成P2操作,P2操作指示将第一XOR缓存中的校验数据写入第一页条带的第二物理页。本申请可基于三个相互独立的操作将存储器中的指定数据和对应的校验数据写入NVM芯片,且可及时释放XOR缓存,实现减少对XOR缓存的占用,提高利用效率。
Description
技术领域
本申请涉及存储技术领域,尤其涉及一种降低页条带写操作性能波动的方法。
背景技术
图1A展示了存储设备的框图。存储设备102同主机相耦合,用于为主机提供存储能力。主机同存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small ComputerSystem Interface,小型计算机系统接口)、SAS(Serial Attached SCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component Interconnect Express,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”等。
图1B展示了存储设备的控制部件的详细的框图。
主机以遵循存储协议的IO命令访问存储设备。控制部件根据来自主机的IO命令,生成一个或多个介质接口命令并提供给介质接口控制器。介质接口控制器根据介质接口命令生遵循NVM芯片的接口协议的存储介质访问命令(例如,编程命令、读命令、擦除命令)。控制部件还跟踪从一个IO命令生成的所有介质接口命令都被执行完成,并向主机指示IO命令的处理结果。
参看图1B,控制部件包括例如主机接口、主机命令处理单元、存储命令处理单元、介质接口控制器与存储介质管理单元。主机接口获取主机提供的IO命令,并生成存储命令提供给存储命令处理单元。存储命令例如访问相同大小的存储空间,例如4KB。将NVM芯片中记录的对应一个存储命令所访问数据的数据单元称为数据帧。物理页记录一个或多个数据帧。例如,物理页的大小17664字节,而数据帧大小为4KB,则一个物理页能存储4个数据帧。
存储介质管理单元为每个存储命令维护逻辑地址到物理地址的转换。例如,存储介质管理单元包括FTL表。对于读命令,存储介质管理单元输出存储命令所访问的逻辑地址对应的物理地址,对于写命令,存储介质管理单元为其分配可用的物理地址,并记录其访问的逻辑地址与分配的物理地址的映射关系。存储介质管理单元还维护诸如垃圾回收、磨损均衡等管理NVM芯片所需的功能。
存储命令处理单元根据存储介质管理单元提供的物理地址,操作介质接口控制器向NVM芯片发出存储介质访问命令。为了清楚的目的,将主机发送给存储设备的命令称为IO命令,将主机命令处理单元发送给存储命令处理单元的命令称为存储命令,将存储命令处理单元发送给介质接口控制器的命令称为介质接口命令,而将介质接口控制器发送给NVM芯片的命令称为存储介质访问命令。存储介质访问命令遵循NVM芯片的接口协议。SSD(Solid State Drives,固态硬盘)中包括多个NVM芯片。每个NVM芯片包括一个或多个LUN(Logical UNit,逻辑单元),每个逻辑单元包括多个物理块(Block)。随着存储容量的增加,NVM芯片/LUN/Block数量的增加,存储介质出现故障的几率也增加。为了确保向用户交付所存储数据的可靠性,在企业级SSD中使用类似RAID(Redundant Arrays of IndependentDisks,磁盘阵列)的技术(简称为RAID技术)来构造跨NVM芯片/逻辑单元的数据保护单元,从而即使单个NVM芯片/逻辑单元出现故障,仍能确保数据不丢失。这样也能应对SSD工作中出现的偶发性数据错误。
页条带是SSD内的、基于RAID技术构造的数据保护单元,页条带在大块中构造。大块包括来自多个逻辑单元的物理块,为大块提供物理块的多个逻辑单元被称为逻辑单元组。逻辑单元组中的每个逻辑单元可以为大块提供一个物理块。例如,在图2A所示出的大块的示意图中,在N+1个逻辑单元上构造大块。每个大块包括N+1个分别来自N+1个逻辑单元的物理块。大块存储用户数据与校验数据。根据大块存储的用户数据计算得到大块的校验数据。作为举例,在大块的最后一个物理块中存储校验数据。也可以选择大块的其他物理块来存储校验数据。还可以采用其他构造方式构造大块,如参见图2B所示,为在多平面的逻辑单元中构造大块的实现方式。
大块,作为SSD对存储介质资源的分配和回收单元。在分配存储介质资源来承载写入数据时,选择空闲大块。在所选择的大块内部,按顺序写入数据。在回收存储介质资源时,对大块整体回收,并在回收了有效数据后,对大块的所有物理块都进行擦除(Erase)。从而,在SSD内,大块内的所有物理块,通常总是具有相同的擦写次数。
参见图3A以及图3B所示,大块包括多个页条带,页条带包括多个物理页,这些物理页来自相同大块的例如不同物理块。例如,页条带的多个物理页中有P个页用来存放用户数据,而Q个页用来存放校验数据(图3A和图3B中,Q=1)。将写入页i的数据记为D(i)。校验数据D(Q)由P页用户数据根据指定的错误校正算法生成。例如,基于异或运算确定校验数据,则D(Q)=D(0)XOR D(1)XOR…XOR D(P-1)。从而在向页条带写入数据中,只有知道了D(0)到D(P-1)才能计算出D(Q)。D(i)的大小典型是例如2KB、4KB、16KB等。
在TLC(Triple-Level Cell,三层式储存)闪存中,通常使用One-Shot(一次性)编程模式,要求对相同字线上的3个物理页在一次ONFI命令中编程,这使得单一编程命令要操作3个物理页。相应地,为提高写性能,按3个物理页为1组构造页条带,使得D(Q)的大小典型地为48KB。在多平面的TLB(Translation Lookaside Buffer,转换检测缓冲区)闪存中,为提高写性能可使用多平面编程模式。这使得单一编程命令要操作例如12个物理页(每逻辑单元包括4平面)。相应地,D(Q)的大小典型地为192KB。
为了使用RAID技术,需要为写入页条带的数据计算校验数据D(Q)。计算校验数据涉及大量的XOR操作,为了加速这一过程,通常使用专用的硬件单元(称为XOR计算单元)来完成D(Q)=D(0)XOR D(1)XOR…XOR D(P-1)的计算。XOR计算单元还包括XOR缓存,用来缓存数据D(i),以及每次XOR计算的中间结果,例如D(0)XOR D(1)的结果,D(0)XOR D(1)XOR D(2)的结果,直到得到最终的D(Q),然后将D(Q)写入页条带。从而XOR缓存的大小需要能容纳整个D(i),并且在分配了一个页条带,从开始向这个页条带写入数据到这个页条带被写满之前,需要占用整个XOR缓存来服务于向该页条带写入数据的操作。
为了提高SSD的性能,可以同时向多个大块的多个页条带写入数据,相应地需要为并发写入的每个页条带分配其独占的XOR缓存。前文提到,D(Q)的尺寸可达192KB(还包括一些带外数据),从而单个XOR缓存需要200KB左右的容量。而芯片内部缓存资源是十分昂贵的,从而XOR计算单元的XOR缓存数量通常很少(例如1-4个)。
在诸如201610861793.5、2016108365313、201720947480.1、2020106151782、2020106130343的中国专利申请,提供了介质接口控制器。现有技术中,XOR计算单元位于介质接口控制器中,参见图4A和图4B所示。通过操作XOR计算单元,来适配具有不同数据保护能力的页条带。页条带的数据保护级别由校验数据与用户数据的大小关系来确定,即P与Q的取值代表了页条带的数据保护能力。并且,在介质接口控制器通过(Program)编程命令将数据(例如D(0))提供给NVM芯片(例如物理页P0-0)的过程中,完成XOR计算。例如,假设为页条带0分配了XOR缓存0(初始化为全0),在搬移D(0)到页条带0的物理页P0-0的过程中,计算0XOR D(0),结果为D(0)并且保存在XOR缓存0中;接下来,将D(1)搬移到页条带0的物理页P0-1,计算D(0)XOR D(1),其中D(0)在XOR缓存0内部,D(1)在数据搬移中得到,随后XOR缓存0中记录的是D(0)XOR D(1)的结果;接下来,将D(2)搬移到页条带0的物理页P0-2,对XOR缓存0中记录的D(0)XOR D(1)的结果,与搬移的D(2)做XOR,结果依然保存在XOR缓存0中。以此类推,在将D(P-1)搬移到页条带0的物理页P0-(P-1)后,XOR缓存0中得到了D(Q),从而接下来将D(Q)搬移到页条带0的物理页P0-P。至此,页条带0被写满,XOR缓存0被释放。
作为一种优化方式,介质接口控制器收到的介质接口命令中,可以仅包括将D(0)到D(P-1)写入页条带的各页的物理地址的指示,而不包括将D(Q)写入页条带的指示。由介质接口控制器自动地计算D(Q)并写入页条带。
针对介质接口控制器而言,其需要管理多个逻辑单元(LUN),参见图5。并为了例如性能的目的,需要充分发挥多个逻辑单元之间并行处理命令的能力,以及控制介质接口控制器的成本,减少其电路规模。现有技术中(如中国专利申请201610861793.5),提供了包括多个线程的介质接口控制器。线程作为可被调度的任务处理单元,可以同逻辑单元动态绑定,通过线程来处理对与其绑定的逻辑单元的命令。申请号为“2022117373066”的中国专利申请中,将协程作为同逻辑单元对应的任务处理单元,通过协程来执行微指令序列以操作对逻辑单元的访问,如,参见图5。图5中,主机接口获取主机提供的IO命令,并生成存储命令提供给存储命令处理单元。存储命令例如访问相同大小的存储空间,例如4KB。现有技术中也存在为每个闪存通道或逻辑单元提供对应的闪存控制器(Flash Controller),通过向闪存控制器提供命令来操作与其绑定的逻辑单元。
无论是基于软件或固件的线程、协程,还是基于硬件的闪存控制器,均作为可操作访问同其绑定的逻辑单元的任务处理单元。多个任务处理单元能够并行工作,从而同时操作多个逻辑单元。为了清楚的目的,将其称为LUN控制器。其实现方式,包括现有技术的介质接口控制器的线程、协程、闪存控制器以及其他具有类似功能的实施方式,也包括将来出现的介质接口控制器中同逻辑单元绑定的用于操作对逻辑单元的访问的实施方式。从而,在提供给介质接口控制器的介质接口命令中,通过描述要访问的逻辑单元,来指定LUN控制器处理介质接口命令并访问逻辑单元。
现有的方案中,除了在介质接口控制器通过编程命令将数据(例如D(0))提供给NVM芯片的过程中,完成XOR计算,还为介质接口控制器增加了一项功能,如,申请号为201911367405.8的中国专利申请中所提供的介质接口控制器,能够对DRAM中的指定数据执行XOR操作,但不必然将该指定数据写入NVM芯片。从而,在操作P取值较大的页条带时,将D(Q)的计算分为多段。例如在第1段中计算D(0)XOR D(1)XOR(D2)...XOR D(m)(其结果为temp),而在第2段中计算temp XOR D(m+1)XOR...XOR D(P-1)得到D(Q)。其中,在第2段中向XOR计算单元传输的temp不被写入NVM芯片中。
将XOR计算单元对DRAM中的指定数据执行XOR计算,但不将该指定数据写入NVM芯片的操作称为校验数据计算操作(简记为R操作)。R操作中参与XOR计算的两个操作,一个来自XOR缓存,一个来自DRAM,从而指示介质接口控制器执行R操作的介质接口命令中需要描述DRAM地址,以及还需要在操作中指定使用的XOR缓存。R操作中,XOR计算的结果保留在XOR缓存中。
而指示介质接口控制器执行编程操作的介质接口命令,其含义在于,将DRAM中的指定数据通过Program命令写入NVM芯片的指定物理地址,以及附带地将该指定数据与XOR缓存中的数据执行XOR计算,计算结果保留在XOR缓存中,将该操作简称为P操作。
通常采用P操作和将XOR缓存中的数据写入NVM芯片中的操作相配合的方式,利用DRAM中的指定数据生成校验数据并写入页条带。
发明内容
由于在对大块内的物理块进行擦除时,在前的擦除操作需要长期占用NVM芯片,进而导致该NVM芯片上在后的编程(Program)命令被延迟处理,进而导致与该编程命令所操作的物理页所属页条带对应的XOR缓存无法被及时释放,使得XOR缓存占用时间变大,XOR缓存的利用率降低。
而且,由于在回收存储介质资源时,对大块整体回收,并在回收了有效数据后,对大块的所有物理块都进行擦除。NVM芯片执行擦除操作时所需的功耗较大,对大块的所有物理块同时擦除进一步使得存储设备的瞬时功耗增加,甚至可能超出容纳存储设备的供电能力。功耗的波动对数据中心的供电能力也构成挑战。因此希望能够抑制存储设备工作期间的功耗波动。
另一方面,存储设备内的XOR缓存资源有限,希望尽快完成利用XOR缓存资源所进行的处理来尽早释放XOR缓存以提高资源利用率。然而当存在擦除操作时,执行擦除操作的LUN控制器也被占用,使得该LUN控制器后续的编程操作和/或使用XOR缓存的操作的处理被推迟。通过对LUN控制器的调度能一定程度缓解该问题,然而当大块被回收,大块的所有物理块被擦除时,所有的LUN控制器都被擦除操作占用,导致无法找到空闲的LUN控制器来处理使用XOR缓存的操作,进而导致XOR缓存的占用时间增加,利用效率降低,并导致存储设备的读/写性能降低或波动。本申请希望提供一种方法来解决上述技术问题的一个或多个。
第一方面,本申请实施例提供一种命令分配方法,包括:
响应于接收到的介质接口命令,获取所述介质接口命令指示的操作类型;
确定与所述介质接口命令以及所述操作类型关联的LUN控制器,将所述介质接口命令分配至所述LUN控制器,由所述LUN控制器处理所述介质接口命令;
其中,所述操作类型包括P1操作或者R操作,所述P1操作指示将存储器中的指定数据搬移到NVM芯片,所述R操作指示对所述存储器中的指定数据执行XOR计算、在XOR缓存中保留计算结果。
可选地,所述操作类型还包括P2操作,所述P2操作指示将所述XOR缓存中的数据搬移到所述NVM芯片。
可选地,所述获取所述介质接口命令指示的操作类型,包括:
基于所述介质接口命令所包括的操作类型字段,确定所述介质接口命令对应的操作类型。
可选地,在所述操作类型为P1操作或者P2操作的情况下,所述介质接口命令包括指示要访问的NVM芯片的物理地址的字段以及指示要被搬移的数据的字段;
所述确定与所述介质接口命令以及所述操作类型关联的LUN控制器,包括:
基于所述介质接口命令指示的物理地址确定所访问的逻辑单元;
基于逻辑单元与LUN控制器之间的映射关系,确定与所访问的逻辑单元对应的LUN控制器。
可选地,在所述操作类型为P1操作的情况下,响应于所访问的物理页和所述存储器中的指定数据,所述LUN控制器生成存储介质访问命令并发送至对应的逻辑单元,以向对应的物理页写入所述指定数据来执行P1操作;
其中,所访问的物理页基于所述介质接口命令指示的物理地址确定,所述指定数据为所述介质接口命令指示的、所述存储器中要被搬移的数据。
可选地,在所述操作类型为P2操作的情况下,响应于所访问的物理页和所述XOR缓存中的校验数据,所述LUN控制器生成存储介质访问命令并发送至对应的逻辑单元,以向对应的物理页写入所述校验数据来执行P2操作;
其中,所访问的物理页基于所述介质接口命令指示的物理地址确定,所述校验数据为所述介质接口命令指示的、所述XOR缓存中要被搬移的数据,且所述校验数据基于所述存储器中要被搬移的多个指定数据确定,所述多个指定数据被写入同一页条带。
可选地,在所述操作类型为R操作的情况下,所述确定与所述介质接口命令以及所述操作类型关联的LUN控制器,包括:
将从多个LUN控制器中确定出的不存在未处理完成的擦除操作的LUN控制器确定为与所述介质接口命令以及所述操作类型关联的LUN控制器。
可选地,在所述介质接口命令包括指示LUN控制器的字段的情况下,将不存在未处理完成的擦除操作的LUN控制器确定为与所述介质接口命令以及所述操作类型关联的LUN控制器,包括:
基于所述介质接口命令指示的LUN控制器,确定第一LUN控制器;
若所述第一LUN控制器不存在未处理完成的擦除操作,将所述第一LUN控制器确定为与所述介质接口命令以及所述操作类型关联的LUN控制器;以及
若所述第一LUN控制器存在未处理完成的擦除操作,将从多个LUN控制器中确定出的不存在未处理完成的擦除操作的第二LUN控制器确定为与所述介质接口命令以及所述操作类型关联的LUN控制器。
可选地,所述指示LUN控制器的字段为指示要访问的逻辑单元的字段。
可选地,所述介质接口命令包括指示要被操作的数据的源地址字段以及目的地址字段;所述方法还包括:
基于所述介质接口命令指示的目的地址申请XOR缓存;
在申请成功的情况下,所确定的LUN控制器、将所述源地址字段所指示的将要被操作的数据与所申请的XOR缓存中的数据进行XOR运算,在所述所申请的XOR缓存中保留计算结果。
可选地,所述方法还包括:
在申请失败的情况下,重复基于所述介质接口命令指示的目的地址申请XOR缓存,直到申请成功。
可选地,所述方法还包括:
响应于所确定的LUN控制器完成了所述R操作,释放所述所申请的XOR缓存。
可选地,若所述LUN控制器存在未处理完成的擦除操作,所述LUN控制器处理完所述擦除操作之后,再处理所述操作类型为P1操作或P2操作的所述介质接口命令。
可选地,若所述操作类型指示擦除操作,获取一个或多个LUN控制器正在处理的擦除操作的数量;
若一个或多个LUN控制器正在处理的擦除操作的数量大于阈值,暂停处理所述操作类型为擦除操作的所述介质接口命令;以及
若所有LUN控制器正在处理的擦除操作的数量不大于阈值,基于所述介质接口命令指示的物理地址确定所访问的逻辑单元;
基于逻辑单元与LUN控制器之间的映射关系,确定与所访问的逻辑单元对应的LUN控制器。
第二方面,本申请实施例提供一种介质接口控制器,包括:命令分配单元和多个LUN控制器;
所述命令分配单元响应于接收到的介质接口命令,获取所述介质接口命令指示的操作类型,在所述多个LUN控制器中确定与所述介质接口命令以及所述操作类型关联的LUN控制器,将所述介质接口命令分配至所述LUN控制器,由所述LUN控制器处理所述介质接口命令;
其中,所述操作类型为P1操作或者R操作,所述P1操作指示将存储器中的指定数据搬移到NVM芯片,所述R操作指示对所述存储器中的指定数据执行XOR计算、在XOR缓存中保留计算结果。
可选地,所述操作类型还包括P2操作,所述P2操作指示将所述XOR缓存中的数据搬移到所述NVM芯片。
可选地,所述命令分配单元基于所述介质接口命令所包括的操作类型字段,确定所述介质接口命令对应的操作类型。
可选地,在所述操作类型为P1操作或者P2操作的情况下,所述介质接口命令包括指示要访问的NVM芯片的物理地址的字段以及指示要被搬移的数据的字段;
所述命令分配单元基于所述介质接口命令指示的物理地址确定所访问的逻辑单元;基于逻辑单元与LUN控制器之间的映射关系,确定与所访问的逻辑单元对应的LUN控制器。
可选地,在所述操作类型为P1操作的情况下,响应于所访问的物理页和所述存储器中的指定数据,所述LUN控制器生成存储介质访问命令并发送至对应的逻辑单元,以向对应的物理页写入所述指定数据来执行P1操作;
其中,所访问的物理页基于所述介质接口命令指示的物理地址确定,所述指定数据为所述介质接口命令指示的、所述存储器中要被搬移的数据。
可选地,在所述操作类型为P2操作的情况下,响应于所访问的物理页和所述XOR缓存中的校验数据,所述LUN控制器生成存储介质访问命令并发送至对应的逻辑单元,以向对应的物理页写入所述校验数据来执行P2操作;
其中,所访问的物理页基于所述介质接口命令指示的物理地址确定,所述校验数据为所述介质接口命令指示的、所述XOR缓存中要被搬移的数据,且所述校验数据基于所述存储器中要被搬移的多个指定数据确定,所述多个指定数据被写入同一页条带。
可选地,在所述操作类型为R操作的情况下,所述命令分配单元将从多个LUN控制器中确定出的不存在未处理完成的擦除操作的LUN控制器确定为与所述介质接口命令以及所述操作类型关联的LUN控制器。
可选地,在所述介质接口命令包括指示LUN控制器的字段的情况下,所述命令分配单元基于所述介质接口命令指示的LUN控制器,确定第一LUN控制器;
若所述第一LUN控制器不存在未处理完成的擦除操作,所述命令分配单元将所述第一LUN控制器确定为与所述介质接口命令以及所述操作类型关联的LUN控制器;以及
若所述第一LUN控制器存在未处理完成的擦除操作,所述命令分配单元将从多个LUN控制器中确定出的不存在未处理完成的擦除操作的第二LUN控制器确定为与所述介质接口命令以及所述操作类型关联的LUN控制器。
可选地,所述指示LUN控制器的字段为指示要访问的逻辑单元的字段。
可选地,所述介质接口命令包括指示要被操作的数据的源地址字段以及目的地址字段;所确定的LUN控制器基于所述介质接口命令指示的目的地址申请XOR缓存;
在申请成功的情况下,所确定的LUN控制器、将所述源地址字段所指示的将要被操作的数据与所申请的XOR缓存中的数据进行XOR运算,在所述所申请的XOR缓存中保留计算结果。
可选地,在申请失败的情况下,重复基于所述介质接口命令指示的目的地址申请XOR缓存,直到申请成功。
可选地,响应于所确定的LUN控制器完成了所述R操作,释放所述所申请的XOR缓存。
可选地,若所述LUN控制器存在未处理完成的擦除操作,所述LUN控制器处理完所述擦除操作之后,再处理所述操作类型为P1操作或P2操作的所述介质接口命令。
可选地,若所述操作类型指示擦除操作,所述命令分配单元获取一个或多个LUN控制器正在处理的擦除操作的数量;
若一个或多个LUN控制器正在处理的擦除操作的数量大于阈值,所述命令分配单元暂停处理所述操作类型为擦除操作的所述介质接口命令;以及
若所有LUN控制器正在处理的擦除操作的数量不大于阈值,所述命令分配单元基于所述介质接口命令指示的物理地址确定所访问的逻辑单元;基于逻辑单元与LUN控制器之间的映射关系,确定与所访问的逻辑单元对应的LUN控制器。
第三方面,本申请实施例提供一种数据访问方法,包括:
响应于要向第一页条带的每个第一物理页写入指定数据,生成成对的P1操作和R操作,所述P1操作指示将存储器中的指定数据搬移到NVM芯片,所述R操作指示对所述存储器中的指定数据执行XOR计算,并在所述第一页条带对应的第一XOR缓存中保留计算结果;其中所述第一页条带包括第二物理页与多个第一物理页;
响应于要向所述第一页条带的第二物理页写入数据,生成P2操作,所述P2操作指示将所述第一XOR缓存中的校验数据写入所述第一页条带的第二物理页。
可选地,在根据所述多个第一物理页分别对应的R操作确定所述第一页条带对应的校验数据后,处理所述P2操作。
可选地,所述方法还包括:
为待写入所述存储器中的指定数据的所述第一页条带分配所述第一XOR缓存。
可选地,在处理所生成的所述P1操作和所述R操作时,包括:
在处理每个所述P1操作时,根据所述P1操作所指示的第一物理页归属的逻辑单元,确定对应的第一LUN控制器,通过所述第一LUN控制器处理所述P1操作,以将所述P1操作指示的所述存储器中的指定数据写入所述P1操作所指示的第一物理页;
在处理每个所述R操作时,确定处理所述R操作的第二LUN控制器,通过所述第二LUN控制器处理所述R操作,以对所述R操作指示的指定数据进行XOR运算、并将运算结果存储于所述第一XOR缓存中。
可选地,所述确定处理所述R操作的第二LUN控制器,包括:
从多个LUN控制器中将不存在未处理完成的擦除操作的LUN控制器确定为所述第二LUN控制器。
可选地,若所述第一LUN控制器存在未处理完成的擦除操作,从多个LUN控制器中确定出不存在未处理完成的擦除操作的LUN控制器,将该LUN控制器确定为所述第二LUN控制器;
若所述第一LUN控制器不存在未处理完成的擦除操作,将所述第一LUN控制器确定为所述第二LUN控制器。
可选地,在通过所述第二LUN控制器处理所述R操作之前,申请所述第一XOR缓存;
若申请到所述第一XOR缓存,所述第二LUN控制器将要被操作的指定数据搬移到所述第一XOR缓存,以及与所述第一XOR缓存中的数据进行XOR操作。
可选地,所述方法还包括:
若未申请到所述第一XOR缓存,重复申请所述第一XOR缓存,直到申请成功。
可选地,所述方法还包括:
在完成所述R操作的情况下,释放所述第一XOR缓存。
可选地,若所述第一LUN控制器存在未处理完成的擦除操作,在所述第一LUN控制器完成所述擦除操作之后,所述第一LUN控制器处理所述P1操作。
可选地,若在所述第二LUN控制器处理所述R操作的过程中、为所述第二LUN控制器分配了所述P1操作,则在所述第二LUN控制器在处理完成所述R操作之后、所述第二LUN控制器再处理所述P1操作。
可选地,所述第一LUN控制器和所述第二LUN控制器的关系为以下情况之一:
所述第一LUN控制器和所述第二LUN控制器对应的逻辑单元归属于同一逻辑单元组;
所述第一LUN控制器和所述第二LUN控制器对应的逻辑单元归属于不同的逻辑单元组;
其中,每个逻辑单元组包括多个逻辑单元,每个逻辑单元对应于一LUN控制器,归属于同一逻辑单元组的逻辑单元对应于同一大块。
可选地,在生成成对的所述P1操作与所述R操作时,所述方法还包括:
获取与所述P1操作对应的第一LUN控制器是否有未处理完的擦除操作;
若所述第一LUN控制器没有未处理完的擦除操作,在生成的所述R操作中指示所述第一LUN控制器;
若所述第一LUN控制器存在未处理完的擦除操作,在生成的所述R操作中指示区别于所述第一LUN控制器的、没有未处理完的擦除操作的LUN控制器。
可选地,在生成所述P2操作之后,所述方法还包括:
根据所述第二物理页归属的逻辑单元,确定对应的第三LUN控制器,所述第三LUN控制器处理所述P2操作,以将所述校验数据写入所述第二物理页。
可选地,在所述第三LUN控制器存在正在被处理的擦除操作的情况下,所述方法还包括:
将所述P2操作所指示的所述第一XOR缓存中的校验数据搬移至外部存储器,并释放所述第一XOR缓存;
在所述第三LUN控制器完成擦除操作的处理后,申请所述第一XOR缓存,将所述校验数据搬移至所述第一XOR缓存、并将所述第一XOR缓存中的校验数据写入所述第二物理页。
可选地,多个LUN控制器并行处理多个成对的P1操作、R操作以及1个P2操作。
可选地,在为所述P1操作分配LUN控制器时,在基于所述P1操作对应的逻辑单元确定第一LUN控制器且所述第一LUN控制器存在至少一个待处理的操作的情况下,继续将所述P1操作分配至所述第一LUN控制器;
在为所述P2操作分配LUN控制器时,在基于所述P2操作对应的逻辑单元确定第三LUN控制器且所述第三LUN控制器存在至少一个待处理的操作的情况下,继续将所述P2操作分配至所述第三LUN控制器。
可选地,在为所述R操作分配LUN控制器时,从多个LUN控制器中确定不存在未处理完成的擦除操作的LUN控制器为所述第二LUN控制器,且所述第二LUN控制器存在至少一个待处理的操作的情况下,继续将所述R操作分配至所述第二LUN控制器。
可选地,在向所述第一页条带的多个第一物理页写入指定数据时,多对P1操作与R操作均被生成并分配至对应的LUN控制器;
其中,并行为多对P1操作与R操作分配LUN控制器。
可选地,多个LUN控制器各自独立处理被分配的P1操作,而不论其他LUN控制器的工作状态;
所述多个LUN控制器各自在申请到所述第一XOR缓存的情况下独立处理被分配的R操作,而不论其他LUN控制器的工作状态。
可选地,若所述第一页条带未分配到所述第一XOR缓存,暂停生成P1操作与R操作;在分配到所述第一XOR缓存后,继续生成P1操作与R操作。
可选地,在完成所述P2操作之后,将所述第一XOR缓存设置为可分配状态。
可选地,在向多个页条带写入数据的情况下,多个页条带对应的P1操作与R操作均被生成并分配,且被多个LUN控制器并行处理;
其中,所述LUN控制器每次仅处理一个操作,多条页条带对应于多个XOR缓存,同一页条带对应的R操作使用同一XOR缓存。
第四方面,本申请实施例提供一种控制部件,包括存储命令处理单元与介质接口控制器;
所述存储命令处理单元响应于要向第一页条带的每个第一物理页写入指定数据,生成指示成对的P1操作和R操作的介质接口命令并提供给所述介质接口控制器,所述P1操作指示将存储器中的指定数据搬移到NVM芯片,所述R操作指示对所述存储器中的指定数据执行XOR计算,并在所述第一页条带对应的第一XOR缓存中保留计算结果;其中所述第一页条带包括第二物理页与多个第一物理页;
所述存储命令处理单元响应于要向所述第一页条带的第二物理页写入数据,生成指示P2操作的介质接口命令并给提供给所述介质接口控制器,所述P2操作指示将所述第一XOR缓存中的校验数据写入所述第一页条带的第二物理页。
可选地,所述介质接口控制器在根据所述多个第一物理页分别对应的R操作确定所述第一页条带对应的校验数据后,处理所述P2操作。
可选地,所述存储命令处理单元为待写入所述存储器中的指定数据的所述第一页条带分配所述第一XOR缓存。
可选地,所述介质接口控制器在处理所生成的所述P1操作和所述R操作时,包括:
在处理每个所述P1操作时,所述介质接口控制器根据所述P1操作所指示的第一物理页归属的逻辑单元,确定对应的第一LUN控制器,通过所述第一LUN控制器处理所述P1操作,以将所述P1操作指示的所述存储器中的指定数据写入所述P1操作所指示的第一物理页;
在处理每个所述R操作时,所述介质接口控制器确定处理所述R操作的第二LUN控制器,通过所述第二LUN控制器处理所述R操作,以对所述R操作指示的指定数据进行XOR运算、并将运算结果存储于所述第一XOR缓存中。
可选地,所述介质接口控制器从多个LUN控制器中将不存在未处理完成的擦除操作的LUN控制器确定为所述第二LUN控制器。
可选地,若所述第一LUN控制器存在未处理完成的擦除操作,所述介质接口控制器从多个LUN控制器中确定出不存在未处理完成的擦除操作的LUN控制器,将该LUN控制器确定为所述第二LUN控制器;
若所述第一LUN控制器不存在未处理完成的擦除操作,所述介质接口控制器将所述第一LUN控制器确定为所述第二LUN控制器。
可选地,在通过所述第二LUN控制器处理所述R操作之前,所述介质接口控制器申请所述第一XOR缓存;
若申请到所述第一XOR缓存,所述第二LUN控制器将要被操作的指定数据搬移到所述第一XOR缓存,以及与所述第一XOR缓存中的数据进行XOR操作。
可选地,若未申请到所述第一XOR缓存,所述介质接口控制器重复申请所述第一XOR缓存,直到申请成功。
可选地,所述介质接口控制器在完成所述R操作的情况下,释放所述第一XOR缓存。
可选地,若所述第一LUN控制器存在未处理完成的擦除操作,在所述第一LUN控制器完成所述擦除操作之后,所述第一LUN控制器处理所述P1操作。
可选地,若在所述第二LUN控制器处理所述R操作的过程中、所述介质接口控制器为所述第二LUN控制器分配了所述P1操作,则在所述第二LUN控制器在处理完成所述R操作之后、所述第二LUN控制器再处理所述P1操作。
可选地,所述第一LUN控制器和所述第二LUN控制器的关系为以下情况之一:
所述第一LUN控制器和所述第二LUN控制器对应的逻辑单元归属于同一逻辑单元组;
所述第一LUN控制器和所述第二LUN控制器对应的逻辑单元归属于不同的逻辑单元组;
其中,每个逻辑单元组包括多个逻辑单元,每个逻辑单元对应于一LUN控制器,归属于同一逻辑单元组的逻辑单元对应于同一大块。
可选地,所述存储命令处理单元在生成成对的所述P1操作与所述R操作时,获取与所述P1操作对应的第一LUN控制器是否有未处理完的擦除操作;
若所述第一LUN控制器没有未处理完的擦除操作,在生成的所述R操作中指示所述第一LUN控制器;
若所述第一LUN控制器存在未处理完的擦除操作,在生成的所述R操作中指示区别于所述第一LUN控制器的、没有未处理完的擦除操作的LUN控制器。
可选地,所述介质接口控制器根据所述第二物理页归属的逻辑单元,确定对应的第三LUN控制器,所述第三LUN控制器处理所述P2操作,以将所述校验数据写入所述第二物理页。
可选地,在所述第三LUN控制器存在正在被处理的擦除操作的情况下,所述介质接口控制器将所述P2操作所指示的所述第一XOR缓存中的校验数据搬移至外部存储器,并释放所述第一XOR缓存;
在所述第三LUN控制器完成擦除操作的处理后,所述介质接口控制器申请所述第一XOR缓存,将所述校验数据搬移至所述第一XOR缓存、并将所述第一XOR缓存中的校验数据写入所述第二物理页。
可选地,多个LUN控制器并行处理多个成对的P1操作、R操作以及1个P2操作。
可选地,所述介质接口控制器在为所述P1操作分配LUN控制器时,在基于所述P1操作对应的逻辑单元确定第一LUN控制器且所述第一LUN控制器存在至少一个待处理的操作的情况下,继续将所述P1操作分配至所述第一LUN控制器;
所述介质接口控制器在为所述P2操作分配LUN控制器时,在基于所述P2操作对应的逻辑单元确定第三LUN控制器且所述第三LUN控制器存在至少一个待处理的操作的情况下,继续将所述P2操作分配至所述第三LUN控制器。
可选地,所述介质接口控制器在为所述R操作分配LUN控制器时,从多个LUN控制器中确定不存在未处理完成的擦除操作的LUN控制器为所述第二LUN控制器,且所述第二LUN控制器存在至少一个待处理的操作的情况下,继续将所述R操作分配至所述第二LUN控制器。
可选地,所述存储命令处理单元在向所述第一页条带的多个第一物理页写入指定数据时,多对P1操作与R操作均被生成并分配至对应的LUN控制器;
其中,并行为多对P1操作与R操作分配LUN控制器。
可选地,多个LUN控制器各自独立处理被分配的P1操作,而不论其他LUN控制器的工作状态;
所述多个LUN控制器各自在申请到所述第一XOR缓存的情况下独立处理被分配的R操作,而不论其他LUN控制器的工作状态。
可选地,若所述第一页条带未分配到所述第一XOR缓存,所述存储命令处理单元暂停生成P1操作与R操作;在分配到所述第一XOR缓存后,所述存储命令处理单元继续生成P1操作与R操作。
可选地,在完成所述P2操作之后,所述介质接口控制器将所述第一XOR缓存设置为可分配状态。
可选地,在向多个页条带写入数据的情况下,多个页条带对应的P1操作与R操作均被生成并分配,且被多个LUN控制器并行处理;
其中,所述LUN控制器每次仅处理一个操作,多条页条带对应于多个XOR缓存,同一页条带对应的R操作使用同一XOR缓存。
第五方面,本申请实施例提供一种擦除控制方法,包括:
响应于接收到的介质接口命令,确定所述介质接口命令指示擦除操作;
确定与所述介质接口命令以及所述擦除操作关联的第一LUN控制器;
在未处理完成的擦除操作的数量满足第一预设条件且所述第一LUN控制器不存在未处理完成的擦除操作的情况下,向所述第一LUN控制器分配所述介质接口命令,由所述第一LUN控制器基于所述介质接口命令处理擦除操作。
可选地,所述响应于接收到的介质接口命令,确定所述介质接口命令指示擦除操作,包括:
基于所述介质接口命令所包括的操作类型字段,确定所述介质接口命令指示擦除操作。
可选地,所述介质接口命令包括指示被擦除的物理块地址的字段,所述确定与所述介质接口命令以及所述擦除操作关联的第一LUN控制器,包括:
基于所述介质接口命令指示的物理块地址,确定所述擦除操作对应的逻辑单元;
基于逻辑单元与LUN控制器之间的映射关系,确定与所述擦除操作对应的逻辑单元匹配的第一LUN控制器。
可选地,所述方法还包括:
在未处理完成的擦除操作的数量满足第二预设条件的情况下,接收所述介质接口命令。
可选地,所述在未处理完成的擦除操作的数量满足第二预设条件的情况下,接收所述介质接口命令,包括以下步骤其中之一:
在不存在未处理完成的擦除操作的情况下,接收所述介质接口命令;
在未处理完成的擦除操作的数量小于或者等于第二阈值的情况下,接收所述介质接口命令。
可选地,在确定所述第一LUN控制器之前或者之后,所述方法还包括:
获取未处理完成的擦除操作的数量;
若所获取的未处理完成的擦除操作的数量不满足所述第一预设条件,暂停处理所述介质接口命令;
若所获取的未处理完成的擦除操作的数量满足所述第一预设条件,继续处理所述介质接口命令。
可选地,所述若所获取的未处理完成的擦除操作的数量不满足所述第一预设条件,暂停处理所述介质接口命令,包括:
在所获取的未处理完成的擦除操作的数量大于第一阈值的情况下,暂停处理所述介质接口命令。
可选地,在暂停处理所述介质接口命令之后,还包括:
在监测到未处理完成的擦除操作的数量小于或者等于第一阈值时,恢复处理所述介质接口命令。
可选地,所述若所获取的擦除操作的数量满足所述第一预设条件,继续处理所述介质接口命令,包括以下步骤其中之一:
在不存在未处理完成的擦除操作的情况下,继续处理所述介质接口命令;
在所获取的未处理完成的擦除操作的数量小于或者等于第一阈值的情况下,继续处理所述介质接口命令。
可选地,若在确定所述第一LUN控制器之前、确定所获取的擦除操作的数量满足所述第一预设条件,则确定所述第一LUN控制器,并在所述第一LUN控制器不存在未处理完成的擦除操作的情况下,所述第一LUN控制器处理所述介质接口命令以完成擦除操作。
可选地,若在确定所述第一LUN控制器之后、确定所获取的擦除操作的数量满足所述第一预设条件,则所述第一LUN控制器在不存在未处理完成的擦除操作的情况下处理所述介质接口命令以完成擦除操作。
可选地,在接收到多个指示擦除操作的介质接口命令的情况下,所述方法还包括:
确定多个介质接口命令对应的多个LUN控制器所对应的N个逻辑单元组,每个逻辑单元组对应于一大块,N为大于或者等于2的整数;
控制同一时刻N个逻辑单元组对应的擦除命令的数量满足第三预设条件。
可选地,所述控制同一时刻N个逻辑单元组对应的擦除命令的数量满足第三预设条件,包括以下步骤至少之一:
控制同一时刻N个逻辑单元组对应的擦除命令的总数量小于或者等于第三阈值;
控制同一时刻每个逻辑单元组对应的擦除命令的数量小于或者等于第四阈值。
可选地,所述方法还包括:
响应于接收到指示P1操作的介质接口命令,确定与所述P1操作关联的第五LUN控制器,将所述指示P1操作的介质接口命令分配至所述第五LUN控制器,由所述第五LUN控制器处理所述指示P1操作的介质接口命令;
响应于接收到指示R操作的介质接口命令,获取不存在未处理完成的擦除操作的第六LUN控制器,将所述指示R操作的介质接口命令分配至所述第六LUN控制器,由所述第六LUN控制器处理所述指示R操作的介质接口命令;
其中,所述P1操作指示将存储器中的指定数据搬移到NVM芯片,所述R操作指示对所述存储器中的指定数据执行XOR计算、在XOR缓存中保留计算结果。
第六方面,本申请实施例还提供一种介质接口控制器,包括命令分配单元和多个LUN控制器;
所述命令分配单元响应于接收到的介质接口命令,确定所述介质接口命令指示擦除操作,在多个LUN控制器中确定与所述介质接口命令以及所述擦除操作关联的第一LUN控制器;
在未处理完成的擦除操作的数量满足第一预设条件且所述第一LUN控制器不存在未处理完成的擦除操作的情况下,所述命令分配单元向所述第一LUN控制器分配所述介质接口命令,由所述第一LUN控制器基于所述介质接口命令处理擦除操作。
可选地,所述命令分配单元基于所述介质接口命令所包括的操作类型字段,确定所述介质接口命令指示擦除操作。
可选地,所述介质接口命令包括指示被擦除的物理块地址的字段,所述命令分配单元基于所述介质接口命令指示的物理块地址,确定所述擦除操作对应的逻辑单元;
基于逻辑单元与LUN控制器之间的映射关系,确定与所述擦除操作对应的逻辑单元匹配的第一LUN控制器。
可选地,在未处理完成的擦除操作的数量满足第二预设条件的情况下,所述命令分配单元接收存储命令处理单元发送的所述介质接口命令。
可选地,在不存在未处理完成的擦除操作的情况下,所述命令分配单元接收所述介质接口命令;或者
在未处理完成的擦除操作的数量小于或者等于第二阈值的情况下,所述命令分配单元接收所述介质接口命令。
可选地,在确定所述第一LUN控制器之前或者之后,所述命令分配单元获取未处理完成的擦除操作的数量;
若所获取的未处理完成的擦除操作的数量不满足所述第一预设条件,所述命令分配单元暂停处理所述介质接口命令;
若所获取的未处理完成的擦除操作的数量满足所述第一预设条件,所述命令分配单元继续处理所述介质接口命令。
可选地,在所获取的未处理完成的擦除操作的数量大于第一阈值的情况下,所述命令分配单元暂停处理所述介质接口命令。
可选地,在暂停处理所述介质接口命令之后,还包括:
在监测到未处理完成的擦除操作的数量小于或者等于第一阈值时,所述命令分配单元恢复处理所述介质接口命令。
可选地,在不存在未处理完成的擦除操作的情况下,所述命令分配单元继续处理所述介质接口命令;或者
在所获取的未处理完成的擦除操作的数量小于或者等于第一阈值的情况下,所述命令分配单元继续处理所述介质接口命令。
可选地,若在确定所述第一LUN控制器之前、确定所获取的擦除操作的数量满足所述第一预设条件,则所述命令分配单元确定所述第一LUN控制器,并在所述第一LUN控制器不存在未处理完成的擦除操作的情况下,所述第一LUN控制器处理所述介质接口命令以完成擦除操作。
可选地,若在确定所述第一LUN控制器之后、确定所获取的擦除操作的数量满足所述第一预设条件,则所述第一LUN控制器在不存在未处理完成的擦除操作的情况下处理所述介质接口命令以完成擦除操作。
可选地,在接收到多个指示擦除操作的介质接口命令的情况下,所述命令分配单元确定多个介质接口命令对应的多个LUN控制器所对应的N个逻辑单元组,每个逻辑单元组对应于一大块,N为大于或者等于2的整数;
所述命令分配单元控制同一时刻N个逻辑单元组对应的擦除命令的数量满足第三预设条件。
可选地,所述命令分配单元控制同一时刻N个逻辑单元组对应的擦除命令的总数量小于或者等于第三阈值;或者
所述命令分配单元控制同一时刻每个逻辑单元组对应的擦除命令的数量小于或者等于第四阈值。
可选地,所述命令分配单元响应于接收到指示P1操作的介质接口命令,确定与所述P1操作关联的第五LUN控制器,将所述指示P1操作的介质接口命令分配至所述第五LUN控制器,由所述第五LUN控制器处理所述指示P1操作的介质接口命令;
所述命令分配单元响应于接收到指示R操作的介质接口命令,获取不存在未处理完成的擦除操作的第六LUN控制器,将所述指示R操作的介质接口命令分配至所述第六LUN控制器,由所述第六LUN控制器处理所述指示R操作的介质接口命令;
其中,所述P1操作指示将存储器中的指定数据搬移到NVM芯片,所述R操作指示对所述存储器中的指定数据执行XOR计算、在XOR缓存中保留计算结果。
第七方面,本申请实施例提供一种存储设备执行的方法,包括:
响应于要擦除大块,所述大块包括来自多个逻辑单元的多个物理块;
若多个LUN控制器对应的未处理完成的擦除操作的数量小于指定阈值,向介质接口控制器提供一个指示擦除操作的介质接口命令;
重复执行所述若多个LUN控制器对应的未处理完成的擦除操作的数量小于指定阈值,向介质接口控制器提供一个指示擦除操作的介质接口命令的步骤,直到所述大块的所有物理块都被擦除。
可选地,所述方法还包括:
响应于要向第一页条带的每个第一物理页写入指定数据,生成成对的P1操作和R操作,所述P1操作指示将存储器中的指定数据搬移到NVM芯片,所述R操作指示对所述存储器中的指定数据执行XOR计算,并在所述第一页条带对应的第一XOR缓存中保留计算结果;其中所述第一页条带包括第二物理页与多个第一物理页;
响应于要向所述第一页条带的第二物理页写入数据,生成P2操作,所述P2操作指示将所述第一XOR缓存中的校验数据写入所述第一页条带的第二物理页。
可选地,所述方法还包括:
为处理所述P1操作,根据所述P1操作指示的逻辑单元确定第二LUN控制器,通过所述第二LUN控制器处理所述P1操作;
为处理所述R操作,获取不存在未处理完成的擦除操作的第三LUN控制器,通过所述第三LUN控制器处理所述R操作;
为处理所述P2操作,根据所述P2操作指示的逻辑单元确定第四LUN控制器,通过所述第四LUN控制器处理所述P2操作。
可选地,所述方法还包括:
为生成所述R操作,获取不存在未处理完成的擦除操作的第三LUN控制器,在所述R操作中指示使用所述第三LUN控制器来处理所述R操作。
可选地,所述方法还包括:
为生成所述成对的P1操作与R操作,根据所述P1操作要访问的第一物理页所属的逻辑单元确定第二LUN控制器;
若所述第二LUN控制器不存在未处理完成的擦除操作,在所述R操作中指示使用所述第二LUN控制器来处理所述R操作;
若所述第二LUN控制器存在未处理完成的擦除操作,获取不存在未处理完成的擦除操作的第三LUN控制器,在所述R操作中指示使用所述第三LUN控制器来处理所述R操作。
第八方面,本申请实施例还提供一种控制部件,包括存储命令处理单元与介质接口控制器;
所述存储命令处理单元响应于要擦除大块,所述大块包括来自多个逻辑单元的多个物理块;
若多个LUN控制器对应的未处理完成的擦除操作的数量小于指定阈值,所述存储命令处理单元向所述介质接口控制器提供一个指示擦除操作的介质接口命令;
重复执行所述若多个LUN控制器对应的未处理完成的擦除操作的数量小于指定阈值,所述存储命令处理单元向所述介质接口控制器提供一个指示擦除操作的介质接口命令的步骤,直到所述大块的所有物理块都被擦除。
可选地,所述存储命令处理单元响应于要向第一页条带的每个第一物理页写入指定数据,生成成对的P1操作和R操作,所述P1操作指示将存储器中的指定数据搬移到NVM芯片,所述R操作指示对所述存储器中的指定数据执行XOR计算,并在所述第一页条带对应的第一XOR缓存中保留计算结果;其中所述第一页条带包括第二物理页与多个第一物理页;
所述存储命令处理单元响应于要向所述第一页条带的第二物理页写入数据,生成P2操作,所述P2操作指示将所述第一XOR缓存中的校验数据写入所述第一页条带的第二物理页。
可选地,为处理所述P1操作,所述介质接口控制器根据所述P1操作指示的逻辑单元确定第二LUN控制器,通过所述第二LUN控制器处理所述P1操作;
为处理所述R操作,所述介质接口控制器获取不存在未处理完成的擦除操作的第三LUN控制器,通过所述第三LUN控制器处理所述R操作;
为处理所述P2操作,所述介质接口控制器根据所述P2操作指示的逻辑单元确定第四LUN控制器,通过所述第四LUN控制器处理所述P2操作。
可选地,为生成所述R操作,所述存储命令处理单元获取不存在未处理完成的擦除操作的第三LUN控制器,在所述R操作中指示使用所述第三LUN控制器来处理所述R操作。
可选地,为生成所述成对的P1操作与R操作,所述存储命令处理单元根据所述P1操作要访问的第一物理页所属的逻辑单元确定第二LUN控制器;
若所述第二LUN控制器不存在未处理完成的擦除操作,所述存储命令处理单元在所述R操作中指示使用所述第二LUN控制器来处理所述R操作;
若所述第二LUN控制器存在未处理完成的擦除操作,所述存储命令处理单元获取不存在未处理完成的擦除操作的第三LUN控制器,在所述R操作中指示使用所述第三LUN控制器来处理所述R操作。
根据本申请的实施例,引入了指示将存储器中的指定数据搬移到NVM芯片但不进行XOR操作的P1操作、指示将XOR缓存中的数据搬移到NVM芯片的P2操作,在支持对存储器中的指定数据执行XOR计算并将结果保留在XOR缓存中的R操作的同时,可以基于P1操作、P2操作与R操作的配合,通过三个阶段完成将存储器中的指定数据和对应的校验数据写入NVM芯片,三个阶段的操作相互独立,互不影响,在完成XOR计算、将XOR缓存中的数据搬移之后,即可及时释放XOR缓存,实现减少对XOR缓存的占用时间,提高XOR缓存的利用效率。
且本申请可限制同时被处理的擦除操作的数量,避免了大块回收产生的擦除操作所引起的存储设备功耗波动,和/或,擦除操作占用多个或全部LUN控制器而导致R操作无法被及时调度所导致的XOR缓存不能被及时释放的问题。
附图说明
图1A表示存储设备的框图;
图1B展示了存储设备的控制部件的详细的框图;
图2A表示大块的示意图一;
图2B表示大块的示意图二;
图3A表示页条带的示意图一;
图3B表示页条带的示意图二;
图4A表示介质接口控制器、DRAM以及NVM芯片的交互示意图一;
图4B表示介质接口控制器、DRAM以及NVM芯片的交互示意图二;
图5表示介质接口控制器与主机、逻辑单元交互的示意图;
图6表示本申请实施例介质接口控制器基于介质接口命令访问逻辑单元的示意图;
图7表示本申请实施例介质接口控制器为介质接口命令分配LUN控制器的示意图一;
图8表示本申请实施例介质接口控制器为介质接口命令分配LUN控制器的示意图二;
图9表示本申请实施例介质接口控制器为介质接口命令分配LUN控制器的示意图三;
图10表示本申请实施例成对的P1操作和R操作的LUN控制器对应不同逻辑单元组的示意图;
图11表示本申请实施例向NVM芯片的指定页条带写入用户数据的方法示意图;
图12表示本申请实施例向页条带PS0写入数据的一具体示例;
图13A表示本申请实施例大块包括各逻辑单元提供的物理块的示意图一;
图13B表示本申请实施例大块包括各逻辑单元提供的物理块的示意图二;
图13C表示本申请实施例对大块中的物理块进行擦除的一示例;
图14表示本申请实施例不同逻辑单元组同一时刻对应不同擦除命令的示例。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
根据本申请的实施例,引入了由介质接口控制器处理的P1操作以及P2操作。P1操作指示介质接口控制器将存储器(如DRAM)中的指定数据搬移到NVM芯片,但不进行XOR操作,相当于在存储器与NVM芯片之间形成一数据通道。P2操作指示介质接口控制器将XOR缓存中的数据搬移到NVM芯片。介质接口控制器也支持R操作(对存储器中的指定数据执行XOR计算,将结果保留在XOR缓存中)。通过成对的P1操作与R操作实现与现有技术的P操作相同的功能或效果。通过将P1操作、P2操作与R操作配合,可以基于三个阶段完成将存储器中的指定数据和对应的校验数据写入NVM芯片。三个阶段的操作相互独立,互不影响,在完成XOR计算、将XOR缓存中的数据搬移之后,即可及时释放XOR缓存,实现减少对XOR缓存的占用时间,提高XOR缓存的利用效率。
根据本申请实施例,介质接口控制器包括多个LUN控制器,每个LUN控制器可以对应于一个逻辑单元。在执行P1操作时,基于P1操作所访问的NVM芯片的物理地址确定对应的LUN控制器,从而介质接口控制器利用该LUN控制器来处理该P1操作,来向NVM芯片的指定物理地址写入存储器中的指定数据,本申请实施例以存储器为DRAM为例进行介绍。
根据本申请的实施例,为每个逻辑单元记录其是否正在处理擦除命令的状态。由于逻辑单元与LUN控制器一一对应,从而可由LUN控制器携带对应的状态(是否正在处理擦除操作)。在LUN控制器向对应的逻辑单元发出擦除命令后,设置该状态,以及在擦除命令被处理完成后,清除该状态。
根据本申请的实施例,基于LUN控制器所记录的是否有正在被处理的擦除操作的状态,为R操作选择合适的LUN控制器(其状态指示当前没有正在被处理的擦除操作的LUN控制器),以避免出现R操作被擦除命令阻塞的情况。
在向页条带写入数据的过程中,介质接口控制器收到的P1操作和R操作是成对出现的,P2操作用于将XOR缓存中的数据搬移到NVM芯片,针对每个页条带仅出现一次。通过一对或多对P1操作与R操作,将DRAM中的数据写入页条带,并在XOR缓存中生成用于该页条带的校验数据。以及通过P2操作将XOR缓存中的数据写入页条带。成对的P1操作与R操作所针对的数据D(i)相同,即成对的P1操作与R操作中,P1操作指示将数据D(i)写入NVM芯片,而对应的R操作指示将相同的数据D(i)搬移到XOR缓存来进行XOR计算。以及根据本申请的实施例,P1操作与R操作可被分别调度并执行,从而成对的P1操作与R操作彼此的被处理顺序不会被限制,其可以同时被处理,也可先后被处理。虽然P1操作中限制了处理该P1操作的LUN控制器,但对应的R操作不限制LUN控制器,而可由介质接口控制器中的任何LUN控制器来处理,并且成对的P1操作与R操作可由相同的LUN处理器来处理。优选地,由当前没有正在被处理的擦除操作的LUN控制器来处理R操作,以避免R操作被阻塞。
依然可选地或进一步地,向同一页条带写入数据时所使用的所有R操作(各自操作不同的数据D(i))使用相同的XOR缓存。从而即使同一页条带写入数据时所使用的所有R操作分别由不同的LUN控制器处理,由于其使用的XOR缓存相同,因而不会被同时处理,而是被先后处理以使用该相同的XOR缓存。
R操作对DRAM中的指定数据进行异或运算、并存储于XOR缓存中之后,还需要将校验数据写入NVM芯片中的指定位置。根据本申请的实施例,向同一页条带写入数据的多个P1操作与一个P2操作各自被执行的顺序不被限制,P2操作甚至有可能在所有P1操作之前被处理(例如,P1操作被擦除操作阻塞)。从而向NVM芯片写入页条带对应的校验数据可能发生在向NVM芯片写入DRAM中的指定数据(用户数据)之前(用户数据的写操作被阻塞),并且对XOR缓存的释放也可以发生在向NVM芯片写入用户数据之前,从而减少了对XOR缓存的占用时间,进而减少了后续写命令等待分配XOR缓存的时间,提高了XOR缓存的利用率。也减少了处理写命令时等待分配XOR缓存的时间,使得用户体验到SSD的写命令处理性能是稳定的,不会因为发生擦除操作,而导致写命令处理的性能抖动。
本申请实施例提供的介质接口控制器能够处理与P1操作、P2操作和R操作对应的三种介质接口命令。介质接口控制器接收介质接口命令,基于介质接口命令所指示的操作类型将介质接口命令分配至对应的LUN控制器,由LUN控制器执行P1操作、P2操作或者R操作。
参见图6所示,介质接口控制器包括命令分配单元、多个LUN控制器以及XOR计算单元。命令分配单元接收介质接口命令,每个介质接口命令包括多个字段。字段指示了介质接口命令对应的操作类型以及其他相关信息。
在介质接口控制器接收到介质接口命令时,根据操作类型字段确定介质接口命令对应于P1操作、P2操作还是R操作。
指示P1操作的介质接口命令,除了包括操作类型字段,还包括指示要访问的NVM芯片的物理地址的字段以及指示要被搬移的数据的字段。基于介质接口命令指示的物理地址还可确定要访问的逻辑单元,基于物理地址字段还可以确定要访问的物理页,指示要被搬移的数据的字段指示例如DRAM索引。
作为举例,P1操作对应的介质接口命令被表示为:<OPCODE,LUN,PPA,Data>。OPCODE字段为操作类型字段,其内容用于指示是P1操作,LUN字段指示要访问的逻辑单元,PPA字段指示要访问的物理地址(例如,要访问的物理页),Data字段对应的内容为要写入物理地址PPA的数据,例如指向DRAM的指针或要写入的数据本身。可选地,LUN字段与PPA字段被表示为单一的指示要访问的NVM芯片的物理地址的字段。
介质接口控制器响应于接收到的介质接口命令,识别出P1操作之后,根据LUN字段的内容确定要处理该P1操作的LUN控制器。例如根据LUN字段的内容确定对应的逻辑单元,将该P1操作分配给所确定的逻辑单元对应的LUN控制器。接下来,LUN控制器可以执行P1操作,根据Data字段与PPA字段,生成存储介质访问命令(编程命令),发送给对应的逻辑单元,实现向该逻辑单元的对应物理页写入DRAM中的数据。
指示P2操作的介质接口命令,包括操作类型字段、指示要访问的NVM芯片的物理地址的字段以及指示要被搬移的数据的字段。同P1操作的区别在于,其指示要被搬移的数据的字段所指示的数据位于XOR缓存。
作为举例,P2操作对应的介质接口命令被表示为:<OPCODE,LUN,PPA,XOR BufferIndex>;OPCODE字段为操作类型字段,其内容用于指示是P2操作,LUN字段对应的内容为要访问的逻辑单元,PPA字段对应的内容为要访问的物理地址(即,要写入校验数据的物理页),XOR Buffer Index字段对应的内容为XOR缓存的索引。例如,为页条带PS1分配XOR缓存0,在计算出页条带PS1的校验数据为Parity(PS1)、校验数据Parity(PS1)存储在XOR缓存0中的情况下,需要将校验数据Parity(PS1)从XOR缓存0搬移到页条带PS1的对应物理页,XORBuffer Index字段是XOR缓存0的索引。
介质接口控制器响应于接收到介质接口命令,识别出P2操作之后,根据LUN字段的内容确定要处理该P2操作的LUN控制器。该LUN控制器执行P2操作,根据XOR Buffer Index字段与PPA字段,生成存储介质访问命令(编程命令),发送给对应的逻辑单元,以向该逻辑单元的对应物理页写入XOR缓存中的数据。
指示R操作的介质接口命令,包括操作类型字段、指示要被操作的数据的源地址字段,以及指示要被操作的数据的目的地址字段。可选地,还包括指示逻辑单元或LUN控制器的字段。R操作中数据的源地址是例如DRAM,而目的地址是XOR缓存。
作为举例,R操作对应的介质接口命令被表示为:<OPCODE,LUN,XOR BufferIndex,Data>,OPCODE字段为操作类型字段,其内容用于指示是R操作,LUN字段指示逻辑单元,根据LUN字段得以确定处理该R操作的LUN控制器,XOR Buffer Index字段为作为目的地址的XOR缓存的索引,Data字段为源地址。可选地,R操作可以不包括LUN字段,而由命令分配单元选择合适的LUN控制器来处理该R操作,例如,选择其对应的逻辑单元没有在执行的擦除命令的LUN控制器。依然可选地,R操作指示了LUN字段,该LUN字段同与其成对的P1操作的LUN字段相同(从而指示成对的P1操作与R操作),但命令分配单元基于与LUN字段对应的LUN控制器正在处理擦除操作而将R操作分配给其他LUN控制器来处理。
介质接口控制器响应于接收到的介质接口命令,识别出R操作之后,确定要处理R操作的LUN控制器,且介质接口控制器申请XOR缓存。该XOR缓存是R操作中指示要被操作的数据的目的地址字段所指示的XOR缓存。在申请到XOR缓存的情况下,处理R操作的LUN控制器将R操作的指示要被操作的数据的源地址字段所指示的将要被操作的数据搬移到XOR缓存,并与XOR缓存中的数据进行异或操作,计算结果保留在XOR缓存中。
XOR缓存具有状态,来标记XOR缓存是否被占用。XOR缓存的状态包括例如“被占用”(记为O)与“空闲”(记为F)。
R操作指示了要使用的XOR缓存。LUN控制器处理R操作时,检查要使用的XOR缓存的状态(也称为申请XOR缓存)。当要使用的XOR缓存为空闲,申请XOR缓存成功,继续执行R操作的后续处理。当要申请的XOR缓存为被占用,申请XOR缓存失败,此时LUN控制器重复申请XOR缓存,直到申请XOR缓存成功。
在为R操作分配LUN控制器时,可以检测R操作所指示要访问的逻辑单元所对应的LUN控制器是否存在未处理完成的擦除操作。若不存在,可以将R操作分配给要访问的逻辑单元所对应的LUN控制器,也可以分配给其他空闲的、不存在未处理完成的擦除操作的LUN控制器。当R操作所指示要访问的逻辑单元所对应的LUN控制器存在未处理完成的擦除操作时,为了避免对XOR缓存的长时间占用,将R操作分配给其他LUN控制器。
命令分配单元将收到的介质接口命令分配给LUN控制器之一来处理。对于P1操作与P2操作,命令分配单元总是将其分配给与其要访问的逻辑单元对应的LUN控制器。对于R操作,命令分配单元根据本申请提供的一种或多种实施例来为R操作分配LUN控制器。
根据本申请的实施例,为向页条带(PS1)写入数据,向介质接口控制器提供一对或多对P1操作与R操作,以及单一的P2操作。例如,页条带PS1容纳N页用户数据以及1页校验数据,则向页条带PS1写入数据需要N对P1操作与R操作,以及1个P2操作。将N对P1操作与R操作记为P1(i)与R(i),其中0<=i<=N-1。可选地,这里的N个R操作都使用相同的XOR缓存(例如,XOR缓存0)。
参见图6所示,介质接口控制器接收介质接口命令1以及介质接口命令2。例如,介质接口命令1指示执行P1(0)操作,介质接口命令2指示执行R(0)操作。P1(0)操作指示将数据D0写入到逻辑单元0的物理页P0-0中,R(0)操作指示将D0与XOR缓存0中的数据进行异或运算。
由于P1(0)操作指示将用户数据D0写入到逻辑单元0的物理页,则为介质接口命令1分配与逻辑单元0对应的LUN控制器0,为介质接口命令2分配LUN控制器1。
在图6的例子中,LUN控制器0存在未处理完成的擦除操作,因而为介质接口命令2分配不同于LUN控制器0的其他LUN控制器,作为举例,选择LUN控制器1来处理介质接口命令2。相应地,LUN控制器0在处理完成擦除操作之后再处理P1(0)操作,以将D0写入到物理页P0-0中。LUN控制器1执行R(0)操作将指定值D0与XOR缓存0中的数据进行异或得到校验数据(记为Parity(0))。
依然作为举例,介质接口控制器在接收到指示执行P1(1)操作的介质接口命令3以及指示执行R(1)操作的介质接口命令4的情况下,为介质接口命令3以及介质接口命令4分配LUN控制器。
其中,P1(1)操作指示将数据D1写入到逻辑单元1的物理页P0-1中,R(1)操作指示将XOR缓存0中的数据(当前为Parity(0))与数据D1进行异或运算,因而为介质接口命令3分配与逻辑单元1对应的LUN控制器1。图6的例子中P1(1)操作指示将数据D1写入到逻辑单元1的物理页,而与逻辑单元1对应的LUN控制器1不存在未处理完成的擦除操作,因而为介质接口命令4也分配LUN控制器1(即使此时LUN控制器1尚未处理完成介质接口命令3)。
LUN控制器1在执行R(1)操作时,将XOR缓存0中的校验数据Parity(0)与D1进行异或运算得到校验数据Parity(1)(依然位于XOR缓存0);LUN控制器1在执行R(1)操作之前请求分配XOR缓存0资源,若R(0)操作未完成,暂停执行R(1)操作。由于LUN控制器1不存在未处理完成的擦除操作,LUN控制器1可以直接执行P1(1)操作将D1写入到物理页P0-1中。可选地,LUN控制器1处理P1(1)操作期间,并发地处理R(1)操作,例如,在将数据传输给逻辑单元1后等待编程完成的时间段内,LUN控制器1处理R(1)操作。
写入D2至D(P-1)的过程与上述过程类似,这里不再重复描述。在通过一系列处理生成页条带PS0对应的校验数据Parity(PS0)之后,基于对应于P2操作的介质接口命令,为该介质接口命令分配LUN控制器P,通过LUN控制器P执行P2操作将Parity(PS0)写入到逻辑单元P中物理页P0-P。在本申请实施例中,成对的P1操作和R操作可以由相同或者不同的LUN控制器来处理。P1操作对应的LUN控制器基于P1操作所对应的逻辑单元确定。为了减少对XOR缓存的占用,R操作对应的LUN控制器上通常要求没有在处理的擦除操作。下面通过举例、对成对的P1操作和R操作对应于相同LUN控制器和不同LUN控制器的情况分别进行介绍。
介质接口控制器接收指示执行P1操作的介质接口命令1、指示执行R操作的介质接口命令2。P1操作和R操作为DRAM中的用户数据D0对应的操作。基于介质接口命令1所包括的LUN字段指示的内容(如,逻辑单元0的标识)确定要处理该P1操作的LUN控制器(如与逻辑单元0对应的LUN控制器0)。
检测LUN控制器0是否存在未处理完成的擦除操作来确定如何处理介质接口命令2。参见图7,若LUN控制器0不存在未处理完成的擦除操作,可以将R(D0)操作也分配给LUN控制器0处理。
若LUN控制器0存在未处理完成的擦除操作,可以将R(D0)操作分配给处于空闲状态的LUN控制器1(LUN控制器1不存在未处理完成的擦除操作)。LUN控制器0和LUN控制器1可并行处理P1(D0)操作以及R(D0)操作。
需要说明的是,针对LUN控制器0不存在未处理完成的擦除操作的情况,也可以将R(D0)操作分配给区别于LUN控制器0的其他处于空闲状态(不存在未处理完成的擦除操作)的LUN控制器。
上述举例中,P1(D0)操作一定分配给LUN控制器0(因为P1(D0)操作与LUN控制器0都对应逻辑单元0);R(D0)操作可以分配给任何不存在未处理完成的擦除操作的LUN控制器,目的是减少对XOR缓存的占用时间。因为LUN控制器在处理R操作时要申请XOR缓存,在处理完R操作后才释放XOR缓存;如果有未处理完成的擦除操作,会导致R操作迟迟不能处理完成,从而长时间占用XOR缓存;并且也导致页条带的校验数据迟迟不能算出来,进而导致长时间占用为当前页条带分配的XOR缓存。
本申请实施例中,执行P1操作的LUN控制器,若LUN控制器上存在未处理完成的擦除操作,则对应的R操作需要分配给其他LUN控制器。且针对存在未处理完成的擦除操作的LUN控制器,需要在该LUN控制器上的擦除操作处理完成后,再由该LUN控制器执行P1操作。
作为举例,介质接口控制器接收指示执行P1操作的介质接口命令1、指示执行R操作的介质接口命令2,P1操作和R操作为DRAM中的D0数据对应的操作。基于介质接口命令1所包括的LUN字段指示的内容(如,逻辑单元0的标识)确定要处理该P1操作的LUN控制器(如与逻辑单元0对应的LUN控制器0)。检测LUN控制器0是否存在未处理完成的擦除操作。参见图8所示,逻辑单元0对应的LUN控制器0存在未处理完成的擦除操作(如处理擦除命令erase0的操作)。由于P1(D0)操作对应于逻辑单元0,则将P1(D0)操作分配给LUN控制器0,将R(D0)操作分配给处于空闲状态(不存在未处理完成的擦除操作)的LUN控制器2,由LUN控制器2执行R(D0)操作。在擦除操作被处理完成之后,LUN控制器0可以执行P1(D0)操作,即,P1(D0)操作和处理擦除命令erase0的操作在LUN控制器0上排队,LUN控制器0按照顺序首先处理擦除操作,然后执行P1(D0)操作。
由于逻辑单元0对应的LUN控制器0上存在未处理完成的擦除操作,通过将R(D0)操作分配给处于空闲状态(不存在未处理完成的擦除操作)的LUN控制器2,可以避免擦除操作阻塞R(D0)操作。进而,在擦除命令erase0处理完成之前,可能已经完成页条带(如页条带PS1)对应的校验数据的计算并写入匹配的物理页、释放了XOR缓存,从而避免了因擦除命令erase0的存在导致分配给页条带PS1的XOR缓存0被长期占用的情况。
在图9的实施例中,LUN控制器0正在处理P1(D0)操作,LUN控制器2正在处理R(D0)操作,此时又收到了指示P1(D2)操作以及指示R(D2)操作的介质接口命令。D0与D2都是位于DRAM中的数据,并且要被写入相同的页条带。R(D0)操作与R(D2)操作都使用XOR缓存0。P1(D2)操作要将数据写入逻辑单元2。
虽然LUN控制器2上已经被分配了R(D0)操作,但由于逻辑单元2与LUN控制器2匹配,介质接口控制器将P1(D2)操作依然分配给LUN控制器2,而将R(D2)操作分配给处于空闲状态的LUN控制器6(不存在未处理完成的擦除操作),由LUN控制器6执行R(D2)操作。LUN控制器2处理的R(D0)操作与LUN控制器6处理的R(D2)操作并发,并且都使用XOR缓存0。因而,LUN控制器处理R操作时,需要先申请被分配的XOR缓存(XOR缓存0),申请到XOR缓存0的LUN控制器有权使用XOR缓存0并处理R操作,在其处理完R操作并释放XOR缓存0后,另一个LUN控制器才能再申请到XOR缓存0。从而LUN控制器2与LUN控制器6各自的R操作会基于XOR缓存0的申请而排队,但R操作的处理时间相对短(与P1操作相比),因而不会显著影响向页条带写数据过程的处理延迟。
根据本申请实施例,存储设备的多个逻辑单元可以被分组,称为逻辑单元组。每个逻辑单元组包括多个逻辑单元。利用逻辑单元组内的逻辑单元中构造大块。而LUN控制器依然与逻辑单元一一对应。这些LUN控制器共享XOR缓存资源。
针对P1操作,处理P1操作的LUN控制器为固定的、对应于P1操作所访问的逻辑单元的LUN控制器;而针对R操作,处理该R操作的LUN控制器可以是介质接口控制器的任何LUN控制器。对于成对的P1操作与R操作,处理这两个操作的LUN控制器可以是相同的LUN控制器或不同的LUN控制器,并且是可对应于不同逻辑单元组的逻辑单元的LUN控制器。
在R操作对应的LUN控制器与P1操作对应的LUN控制器对应不同的逻辑单元组时,R操作对应的LUN控制器、P1操作对应的LUN控制器对应于不同大块,即,针对某一大块上的R操作可以采用其他大块对应的LUN控制器来处理,可以避免出现由于当前大块对应的LUN控制器不足、导致R操作延迟的情况,通过利用其他大块对应的LUN控制器,可实现资源共享。
作为举例,参见图10所示,存储设备包括16个逻辑单元(逻辑单元0至逻辑单元15)。每8个逻辑单元为一组(例如逻辑单元0~逻辑单元7为一组,逻辑单元8~逻辑单元15为一组)。在逻辑单元0~逻辑单元7这一组中构造大块0,在逻辑单元8~逻辑单元15这一组中构造大块1。其中,每个逻辑单元对应一个LUN控制器,逻辑单元0~逻辑单元7对应LUN控制器0~LUN控制器7;逻辑单元8~逻辑单元15对应LUN控制器8~LUN控制器15。
在图10的例子中,控制部件处理指示将D0数据写入到NVM芯片所对应的P1操作的介质接口命令1,以及处理指示对D0数据执行R操作的介质接口命令2。介质接口控制器将P1(D0)操作分配给LUN控制器0,由LUN控制器0来执行P1(D0)操作。而将R(D0)操作分配给LUN控制器15,由LUN控制器15执行R(D0)操作。
下面对本申请实施例基于P1操作、R操作以及P2操作向NVM芯片的指定页条带写入用户数据和校验数据的过程,进行详细介绍。参见图11所示,可以包括如下步骤:
步骤1101、分配页条带、针对该页条带分配XOR缓存。
所分配的页条带是存储设备中空闲的页条带,所分配的XOR缓存是当前未被分配给任何页条带的XOR缓存。作为举例,页条带包括P页用来存储用户数据,以及Q页用来存储校验数据。向页条带写入数据的过程,需要向介质接口控制器提供P对成对的P1操作与R操作,以及Q个P2操作。介质接口控制器处理这些操作来完成向页条带写入数据的过程。这里P个P1操作分别向页条带的P页写入用户数据,P个R操作都使用所分配的XOR缓存来根据用户数据计算该页条带的校验数据,而Q个P2操作分别向页条带的Q页写入校验数据。
步骤1102、在向页条带中的物理页写入用户数据时,生成成对的P1操作与R操作。
步骤1103、根据代表P1操作的介质接口命令中指示的物理地址所属的逻辑单元,确定P1操作对应的LUN控制器,将P1操作分配给该LUN控制器,由该LUN控制器处理P1操作。
在代表P1操作的介质接口命令中指示了要访问的物理地址,基于该物理地址所属的逻辑单元确定对应的LUN控制器(如LUN控制器1)。将P1操作分配给LUN控制器1。
步骤1104、将R操作分配给其上没有在处理的擦除操作的LUN控制器X,由该LUN控制器处理R操作。
R操作可分配给LUN控制器X,LUN控制器X的选择条件是其上没有在处理的擦除操作,LUN控制器X可以为LUN控制器1,也可以区别于LUN控制器1,且R操作所对应的XOR缓存为步骤1101中预先分配的XOR缓存。
代表R操作的介质接口命令中指示了为页条带分配的XOR缓存(例如XOR缓存0)。LUN控制器X在处理R操作时,LUN控制器申请在R操作中指示的XOR缓存0。若申请不到该XOR缓存0,则LUN控制器暂停对该R操作处理,并尝试继续申请XOR缓存0。在申请到XOR缓存0之后,LUN控制器X利用该XOR缓存0进行异或运算并将结果留在XOR缓存0中,然后释放XOR缓存0。
步骤1105、在根据多个R操作确定页条带对应的校验数据之后,通过P2操作将校验数据搬移到存储校验数据的物理页,完成校验数据的写入。
其中,代表P对成对的P1操作与R操作以及Q个P2操作的一个或多个介质接口命令都被提供给介质接口控制器处理。介质接口控制器将各个P1操作、P2操作和/或R操作分配给适当的LUN控制器。各个LUN控制器根据本申请实施例提供的处理方式并行处理各自收到的操作。
可以理解地,在向页条带(PS1)写入数据的过程中,访问其他页条带的介质接口命令也可能被提供给介质接口控制器。从而同一LUN控制器在某时刻可能要处理例如多个P1操作、多个P2操作和/或多个R操作。LUN控制器可以依次、交替或以其他方式处理被分配给它的多个操作。
作为举例,PS0为大块0中的页条带,向页条带PS0写入数据时包括:将用户数据D0、D1、D2、D3、D4、D5以及D6写入到对应的物理页(涉及7个P1操作)、计算校验数据Parity(PS0)以及将Parity(PS0)写入到对应的物理页(涉及7个R操作以及1个P2操作)。根据本申请的实施例,为将数据D0写入页条带PS0的物理页,生成代表一对P1操作与R操作的介质接口命令,并提供给介质接口控制器处理。从而对于要写入页条带的用户数据D0、D1、D2、D3、D4、D5以及D6,共生成7对代表P1操作与R操作的介质接口命令。以及为了将校验数据Parity(PS0)写入页条带的物理页,生成1条代表P2操作的介质接口命令,此时不生成R操作。
下面对向页条带PS0写入数据的具体过程进行介绍:
将D0写入到NVM芯片包括P1(D0)操作以及R(D0)操作。参见图12,P1(D0)操作用于指示将D0写入到物理页P0-0;R(D0)操作用于指示将XOR缓存0中的数据与D0做异或运算。XOR缓存0为针对页条带PS0所分配的XOR缓存资源。当D0为写入到页条带PS0的第一个数据时,执行R(D0)操作时XOR缓存0的初始值可以为0。
P1(D0)操作被分配给逻辑单元0所对应的LUN控制器0,通过LUN控制器0将D0的数据写入到物理页P0-0。R(D0)操作可分配给LUN控制器X,LUN控制器X的选择条件是其上没有在处理的擦除操作,通过LUN控制器X来处理R(D0)操作。当LUN控制器X来处理R(D0)操作时需要使用XOR缓存0。LUN控制器X处理R(D0)操作时,介质接口控制器需要申请XOR缓存(这里是XOR缓存0,XOR缓存0是在分配页条带PS0时确定,并且在指示R(0)操作的介质接口命令中携带),如果申请不到,不往下进行。在申请到XOR缓存0、生成校验数据Parity(D0)之后,处理R(0)操作的LUN控制器X释放XOR缓存0,即释放LUN控制器X对于XOR缓存0的控制权。校验数据Parity(D0)=(XOR缓存0中的数据)XOR(D0),即,通过将XOR缓存0中的数据与D0进行异或运算,得到与D0关联的校验数据。
其中,将D1、D2、D3、D4、D5以及D6写入到NVM芯片的过程与上述将D0写入NVM芯片的过程类似,这里不做赘述。
在基于D0、D1、D2、D3、D4、D5以及D6生成页条带PS0的校验数据Parity(PS0)后,通过P2操作将XOR缓存0中的数据搬移到页条带PS0的存储校验数据的物理页,并释放XOR缓存0,其中Parity(PS0)=D0 XOR D1XOR D2 XOR D3 XOR D4 XOR D5 XOR D6。
根据本申请的实施例,为向页条带写入数据,存储命令处理单元(也参看图1B)生成一对或多对分别携带了P1操作与R操作的介质接口命令以及1个携带了P2操作的介质接口命令,并提供给介质接口控制器。以及还为该页条带分配XOR缓存。所分配的XOR缓存没有为处理其他页条带的写入操作而被占用。可选地,在R操作被处理完成后,释放R操作所携带的XOR缓存,从而被释放的XOR缓存可被再次分配。存储命令处理单元为向同一页条带写入数据而生成的所有R操作与P2操作中指示了相同的该被分配的XOR缓存。
依然可选地,成对的P1操作与R操作指示了相同的逻辑单元。介质接口控制器依据P1操作与R操作指示的逻辑单元,分配用来处理P1操作与R操作的LUN控制器。以及在R操作指示的逻辑单元对应的LUN控制器存在正在被处理的擦除操作时,将该R操作分配给其他LUN控制器。
在又一种实施方式中,为了生成成对的P1操作与R操作,存储命令处理单元获取介质接口控制器的一个或多个LUN控制器上正在处理擦除操作的状态。并且由存储命令处理单元为生成的R操作选择空闲的LUN控制器,并在R操作中指示所选择的LUN控制器。进一步地,即使存储命令处理单元选择了空闲的LUN控制器,介质接口控制器的命令分配单元依然可以为该R操作分配其他的LUN控制器来处理。因为在命令分配单元处理该R操作时,LUN控制器上是否存在擦除操作的状态可能发生变化。
可选地,存储命令处理单元所生成的成对的P1操作与R操作总是指示相同的逻辑单元,而不关心LUN控制器上正在处理擦除操作的状态。而由命令分配单元来识别LUN控制器上正在处理擦除操作的状态并将R操作分配给适当的LUN控制器。
在依然又一种实施方式中,存储命令处理单元所生成的R操作中不指示逻辑单元,从而完全由命令分配单元来选择处理R操作的LUN控制器。
可以理解地,存储命令处理单元可以同时向多个页条带写入数据,并生成用于向多个页条带写入数据的多个分别承载了P1操作、P2操作以及R操作的介质接口命令由介质接口控制器来处理。存储命令处理单元确保任何时刻,不会将一个XOR缓存分配给多个页条带。如果当前没有可用的XOR缓存(例如,XOR缓存都被分配给页条带),存储命令处理单元等待XOR缓存被释放,而暂停为了向新页条带写入而生成介质接口命令。
根据本申请实施例,LUN控制器0到LUN控制器6分别处理将D0、D1、D2、D3、D4、D5以及D6写入到NVM芯片的P1操作。这些P1操作各自被处理的时机不被限制。一些LUN控制器上可能存在正在被处理的擦除操作,从而对应的P1操作的处理被推迟。在某个或某些P1操作的处理开始前,该页条带的所有R操作以及P2操作都被处理完成也是可能的,此时为该页条带分配的XOR缓存已被释放,并可被分配给其他页条带。从而避免了XOR缓存被长时间占用。
依然作为举例,处理页条带的P2操作的LUN控制器N上可能存在正在被处理的擦除操作,并导致P2操作的处理被推迟。可选地,此时将P2操作暂停,或不将P2操作分配给LUN控制器N,而是将P2操作所指示的XOR缓存内的数据临时搬移到诸如DRAM的外部存储器。以及释放该P2操作所指示的XOR缓存,使得该XOR缓存可被分配给其他页条带。在LUN控制器N的擦除操作完成后,为处理该被暂停的P2操作而重新申请该XOR缓存,并继续后续处理。
返回参看图11,执行步骤1104时,为R操作分配LUN控制器X,需要找到其上没有正在被处理的擦除操作的LUN控制器X。然而,一些情况下,可能所有的LUN控制器都在处理擦除操作,并导致无法为R操作分配到可用的LUN控制器,并导致R操作的处理被推迟。
针对存储设备而言,存储设备在回收大块时,需要擦除大块的所有物理块。为了擦除大块的物理块,向介质接口控制器提供指示了擦除操作的介质接口命令。擦除操作除了包括操作类型字段,还包括指示被擦除的物理块地址的字段,以及基于该字段可以得到要被擦除的物理块所属的逻辑单元。
根据本申请的实施例,为了避免大块回收产生的擦除操作所引起的存储设备功耗波动,和/或为了避免擦除操作占用了多个或全部LUN控制器而导致R操作无法被及时调度所导致的XOR缓存不能被及时释放问题,而限制同时被处理的擦除操作的数量。例如,存储设备包括M个逻辑单元,而同时被处理的擦除操作的数量小于M。又例如,限制可被同时处理的擦除操作数量为1或者2。
在一个例子中,在向介质接口控制器提供介质接口命令时,识别是否有未处理完成的擦除操作。仅在不存在未处理完成的擦除操作时,才向介质接口控制器提供指示了擦除操作的介质接口命令。或者仅在未处理完成的擦除操作数量小于指定阈值(例如2或者3)时,才向介质接口控制器提供指示了擦除操作的介质接口命令。
在一个例子中,介质接口控制器的命令分配单元为LUN控制器分配介质接口命令时,识别是否有未处理完成的擦除操作。在有待分配的指示擦除操作的介质接口命令时,仅在所有的LUN控制器上都不存在未处理完成的擦除操作时,才向LUN控制器之一分配指示了擦除操作的介质接口命令。由于指示擦除操作的介质接口命令要由与被擦除物理块所属逻辑单元对应的LUN控制器处理,命令分配单元不仅识别该LUN控制器是否有未完成的擦除操作,还检查其他LUN控制器是否有未完成的擦除操作。可选地,命令分配单元仅在未处理完成的擦除操作数量小于指定阈值(例如2或者3)时,才向LUN控制器分配指示了擦除操作的介质接口命令。
由于每个LUN控制器上记录了其是否有未处理完成的擦除操作的状态,基于LUN控制器所记录的状态,可以针对R操作选择合适的LUN控制器(没有未处理完成的擦除操作的LUN控制器),以避免出现R操作被擦除操作阻塞的情况。本申请实施例所采用的擦除命令处理方式,可以减少同一时刻擦除命令所占用的LUN控制器的数量,进而可以在针对R操作选择合适的LUN控制器时,提供较多的选择。
作为举例,参见图13A和图13B所示,大块0包括由(逻辑单元)LUN0到LUN N各自提供的物理块B1,大块1包括由(逻辑单元)LUN0到LUN N各自提供的物理块B3。图13A与13B中,用带有边框的“LUNx-y”指示逻辑单元x的物理块y。在对大块0中的所有物理块进行擦除操作时,分别对大块0中每个物理块进行擦除。在对大块0以及大块1中的所有物理块进行擦除操作时,分别对每个物理块进行擦除。针对大块0所包含的N+1个物理块、针对大块1所包含的N+1个物理块,分别需要执行N+1次擦除操作,每次擦除操作只针对一个物理块。N+1次擦除操作分别进行,而不同时进行。如,参见图13A以及图13C所示,首先对大块0中来自逻辑单元0的物理块B1(LUN0-B1)进行擦除操作(处理擦除命令erase0的操作),此时,逻辑单元0对应的LUN控制器0正在处理该擦除操作。此时,若介质接口控制器接收到向逻辑单元0的物理块B2写入数据的P1操作以及与之对应的R操作,命令分配单元将该P1操作可分配至LUN控制器0,而将该R操作分配至处于空闲状态(不存在未处理完成的擦除操作)的任何LUN控制器(如LUN控制器2)。从而该P1操作被擦除命令阻塞,但该R操作可被立即处理。并且,由于本申请的实施例限制了同一时刻被同时处理的擦除操作的数量,确保了在分配R操作时,一定存在符合条件的LUN控制器(不存在未处理完成的擦除操作)来处理该R操作。
参见图13A所示,在对大块0中来自逻辑单元0的物理块B1(LUN0-B1)的擦除操作(处理擦除命令erase0的操作)完成之后,才允许对大块0中来自逻辑单元1的物理块B1(LUN1-B1)进行擦除操作(处理擦除命令erase1的操作),然后依次对大块0中来自逻辑单元2的物理块B1(LUN2-B1)进行擦除操作(处理擦除命令erase2的操作)、对大块0中来自逻辑单元3的物理块B1(LUN3-B1)进次擦除操作(处理擦除命令erase3的操作),……,对大块0中来自逻辑单元N的物理块B1(LUN N-B1)进行擦除操作(处理擦除命令erase N的操作)。
虽然在图13A中,擦除操作按LUN编号的顺序(LUN 0、LUN 1……LUN N)被处理,然而这不是必须的。可以采用其他的顺序处理大块的各个物理块的擦除操作,而仅需确保同时被处理的擦除操作的数量为1或小于指定阈值。
依然可选地,在有2个或者多个大块被擦除时,根据本申请的实施例,也确保同时被处理的擦除操作的数量为1或小于指定阈值。从而在处理一个大块的物理块的擦除操作时,其他大块的擦除操作都被阻塞。例如,在大块0的所有物理块都被擦除后,才调度对另一个大块的物理块的擦除操作。
作为举例,参见图13A至图13C所示,在对大块0中来自逻辑单元0的物理块B1(LUN0-B1)进行一次擦除操作(处理擦除命令erase0的操作)时,对LUN0-B1做擦除操作,不会影响大块0中的其他逻辑单元的物理块,也不会影响大块1中的逻辑单元的物理块。此时,物理块LUN0-B1所对应的LUN控制器有未处理完成的擦除操作(处理擦除命令erase0的操作),当介质接口控制器收到针对逻辑单元0的P1操作以及R操作时,命令分配单元将该P1操作分配给逻辑单元0所对应的LUN控制器0,并且LUN控制器0在执行完成erase0对应的擦除操作之后,再执行P1操作;由于LUN控制器0存在未处理完成的擦除操作,如果将R操作分配给LUN控制器0、处理R操作需要等待,导致XOR缓存资源长时间被占用。而在对LUN0-B1进行擦除操作时,只会占用逻辑单元0所对应的LUN控制器0,不会占用其他的LUN控制器,为避免XOR缓存资源长时间被占用,可以将R操作分配给除LUN控制器0之外的其他空闲的LUN控制器。
可选地,对擦除操作的调度由命令分配单元(也参看图6)执行。在回收大块后,存储命令处理单元向介质接口控制器发出擦除大块的所有物理块的多个指示擦除操作的介质接口命令,而命令分配单元来确保被分配给LUN控制器处理的擦除操作在任何时刻不超过1个或不超过指定的数量。依然可选地,存储命令处理单元来确保提供给介质接口控制器的指示擦除操作的介质接口命令在任何时刻不超过1个或不超过指定的数量。
根据本申请的实施例,通过将同时处理的擦除操作数量限制为例如1,使得后续的访问相同逻辑单元的编程操作/读操作被擦除操作阻塞的几率降为1/K,其中K为存储设备中逻辑单元的数量。由于存储设备中可能同时存在数百、乃至数千个来自主机的IO命令,通过减少编程操作/读操作被擦除操作阻塞的几率,相应地降低了主机IO命令的处理延迟的抖动,从而降低了擦除操作对存储设备的QoS(Quality of Service,服务质量)的影响。
上述举例中,由于擦除命令erase0对应的擦除操作正在被处理。假设同时又要处理某个页条带(如页条带PS1)的编程操作(P1操作或P2操作)。假设页条带PS1包括N个物理页,其中逻辑单元0贡献了1个物理页。此时,对页条带PS1的编程操作中,逻辑单元0的物理页的编程操作被之前的擦除操作(处理擦除命令erase0的操作)阻塞,而逻辑单元1至逻辑单元(N-1)的物理页的编程(Program)命令都可以正常完成。如果没有采用本申请的方案,在对页条带PS1的编程操作中,N个逻辑单元的N个物理页都被阻塞。采用本申请的方案之后,被阻塞的编程操作的数量为之前的1/N。
依然作为举例,存储设备包括多个逻辑单元组(如G个逻辑单元组),允许每个逻辑单元组内同时最多处理指定数量的擦除操作。例如,同一时刻G个逻辑单元组最多处理G个擦除操作(每个逻辑单元组内同时处理的擦除操作不超过1个),不同逻辑单元组中的擦除命令互不影响。
作为举例,参见图14所示,存储设备包括例如16个逻辑单元,16个逻辑单元分为2组,逻辑单元0至逻辑单元7为group1(逻辑单元组1),逻辑单元8至逻辑单元15为group2(逻辑单元组2)。
在某一时刻,group1对应于一个擦除命令(erase0)、group2对应于一个擦除命令(erase8);具体为:group1内的逻辑单元0对应的LUN控制器0存在擦除操作(处理擦除命令erase0的操作),group2内的逻辑单元8对应的LUN控制器8存在擦除操作(处理擦除命令erase8的操作)。此时,group1和group2同一时刻对应于两个擦除命令。
针对一逻辑单元组,通过控制逻辑单元组在同一时刻仅对应一个擦除命令,可以使得仅一个LUN控制器存在擦除操作,减少擦除操作所消耗的功耗,且可以减少擦除操作所占用的LUN控制器的数量,进而可以在针对R操作选择合适的LUN控制器时,提供较多的选择;同时由于仅有一个逻辑单元被擦除操作所阻塞,可避免XOR缓存会长时间被占用。
本申请实施例提供一种介质接口控制器,包括:命令分配单元和多个LUN控制器;命令分配单元响应于接收到的介质接口命令,获取介质接口命令指示的操作类型,在多个LUN控制器中确定与介质接口命令以及操作类型关联的LUN控制器,将介质接口命令分配至LUN控制器,由LUN控制器处理介质接口命令;其中,操作类型为P1操作或者R操作,P1操作指示将存储器中的指定数据搬移到NVM芯片,R操作指示对存储器中的指定数据执行XOR计算、在XOR缓存中保留计算结果。且介质接口控制器还用于执行命令分配方法的其他实施方案,这里不再赘述。
相应地,介质接口控制器在执行擦除控制方法时,命令分配单元响应于接收到的介质接口命令,确定介质接口命令指示擦除操作,在多个LUN控制器中确定与介质接口命令以及擦除操作关联的第一LUN控制器;在未处理完成的擦除操作的数量满足第一预设条件且第一LUN控制器不存在未处理完成的擦除操作的情况下,命令分配单元向第一LUN控制器分配介质接口命令,由第一LUN控制器基于介质接口命令处理擦除操作。且介质接口控制器还用于执行擦除控制方法的其他实施方案,这里不再赘述。
本申请实施例提供一种控制部件,包括存储命令处理单元与介质接口控制器;存储命令处理单元响应于要向第一页条带的每个第一物理页写入指定数据,生成指示成对的P1操作和R操作的介质接口命令并提供给介质接口控制器,P1操作指示将存储器中的指定数据搬移到NVM芯片,R操作指示对存储器中的指定数据执行XOR计算,并在第一页条带对应的第一XOR缓存中保留计算结果;其中第一页条带包括第二物理页与多个第一物理页;存储命令处理单元响应于要向第一页条带的第二物理页写入数据,生成指示P2操作的介质接口命令并给提供给介质接口控制器,P2操作指示将第一XOR缓存中的校验数据写入第一页条带的第二物理页。且控制部件还用于执行数据访问方法的其他实施方案,这里不再赘述。
相应地,控制部件在执行存储设备执行的方法时,存储命令处理单元响应于要擦除大块,大块包括来自多个逻辑单元的多个物理块;若多个LUN控制器对应的未处理完成的擦除操作的数量小于指定阈值,存储命令处理单元向介质接口控制器提供一个指示擦除操作的介质接口命令;重复执行若多个LUN控制器对应的未处理完成的擦除操作的数量小于指定阈值,存储命令处理单元向介质接口控制器提供一个指示擦除操作的介质接口命令的步骤,直到大块的所有物理块都被擦除。且控制部件还用于执行存储设备执行的方法的其他实施方案,这里不再赘述。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种数据访问方法,其特征在于,包括:
响应于要向第一页条带的每个第一物理页写入指定数据,生成成对的P1操作和R操作,所述P1操作指示将存储器中的指定数据搬移到NVM芯片,所述R操作指示对所述存储器中的指定数据执行XOR计算,并在所述第一页条带对应的第一XOR缓存中保留计算结果;其中所述第一页条带包括第二物理页与多个第一物理页;
响应于要向所述第一页条带的第二物理页写入数据,生成P2操作,所述P2操作指示将所述第一XOR缓存中的校验数据写入所述第一页条带的第二物理页。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
为待写入所述存储器中的指定数据的所述第一页条带分配所述第一XOR缓存。
3.根据权利要求1或2所述的方法,其特征在于,在处理所生成的所述P1操作和所述R操作时,包括:
在处理每个所述P1操作时,根据所述P1操作所指示的第一物理页归属的逻辑单元,确定对应的第一LUN控制器,通过所述第一LUN控制器处理所述P1操作,以将所述P1操作指示的所述存储器中的指定数据写入所述P1操作所指示的第一物理页;
在处理每个所述R操作时,确定处理所述R操作的第二LUN控制器,通过所述第二LUN控制器处理所述R操作,以对所述R操作指示的指定数据进行XOR运算、并将运算结果存储于所述第一XOR缓存中。
4.根据权利要求3所述的方法,其特征在于,包括:
若所述第一LUN控制器存在未处理完成的擦除操作,从多个LUN控制器中确定出不存在未处理完成的擦除操作的LUN控制器,将该LUN控制器确定为所述第二LUN控制器;
若所述第一LUN控制器不存在未处理完成的擦除操作,将所述第一LUN控制器确定为所述第二LUN控制器。
5.根据权利要求3或4所述的方法,其特征在于,还包括:
在通过所述第二LUN控制器处理所述R操作之前,申请所述第一XOR缓存;
若申请到所述第一XOR缓存,所述第二LUN控制器将要被操作的指定数据搬移到所述第一XOR缓存,以及与所述第一XOR缓存中的数据进行XOR操作。
6.根据权利要求1至5任一项所述的方法,其特征在于,在生成成对的所述P1操作与所述R操作时,所述方法还包括:
获取与所述P1操作对应的第一LUN控制器是否有未处理完的擦除操作;
若所述第一LUN控制器没有未处理完的擦除操作,在生成的所述R操作中指示所述第一LUN控制器;
若所述第一LUN控制器存在未处理完的擦除操作,在生成的所述R操作中指示区别于所述第一LUN控制器的、没有未处理完的擦除操作的LUN控制器。
7.根据权利要求1至6任一项所述的方法,其特征在于,在生成所述P2操作之后,所述方法还包括:
根据所述第二物理页归属的逻辑单元,确定对应的第三LUN控制器,所述第三LUN控制器处理所述P2操作,以将所述校验数据写入所述第二物理页。
8.根据权利要求1至7任一项所述的方法,其特征在于,
在为所述P1操作分配LUN控制器时,在基于所述P1操作对应的逻辑单元确定第一LUN控制器且所述第一LUN控制器存在至少一个待处理的操作的情况下,继续将所述P1操作分配至所述第一LUN控制器;
在为所述P2操作分配LUN控制器时,在基于所述P2操作对应的逻辑单元确定第三LUN控制器且所述第三LUN控制器存在至少一个待处理的操作的情况下,继续将所述P2操作分配至所述第三LUN控制器。
9.根据权利要求1至8任一项所述的方法,其特征在于,
多个LUN控制器各自独立处理被分配的P1操作,而不论其他LUN控制器的工作状态;
所述多个LUN控制器各自在申请到所述第一XOR缓存的情况下独立处理被分配的R操作,而不论其他LUN控制器的工作状态。
10.一种控制部件,其特征在于,用于执行权利要求1至9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310774507.1A CN117251107B (zh) | 2023-06-27 | 2023-06-27 | 降低页条带写操作性能波动的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310774507.1A CN117251107B (zh) | 2023-06-27 | 2023-06-27 | 降低页条带写操作性能波动的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117251107A true CN117251107A (zh) | 2023-12-19 |
CN117251107B CN117251107B (zh) | 2024-04-16 |
Family
ID=89130215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310774507.1A Active CN117251107B (zh) | 2023-06-27 | 2023-06-27 | 降低页条带写操作性能波动的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117251107B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007058624A1 (en) * | 2005-11-17 | 2007-05-24 | Chee Keng Chang | A controller for non-volatile memories, and methods of operating the memory controller |
CN108153482A (zh) * | 2016-12-05 | 2018-06-12 | 厦门鑫忆讯科技有限公司 | Io命令处理方法与介质接口控制器 |
US10409511B1 (en) * | 2018-06-30 | 2019-09-10 | Western Digital Technologies, Inc. | Multi-device storage system with distributed read/write processing |
EP3680778A1 (en) * | 2019-01-11 | 2020-07-15 | Marvell Asia Pte, Ltd. | Storage media programming with adaptive write buffer release |
CN113760786A (zh) * | 2017-05-10 | 2021-12-07 | 北京忆芯科技有限公司 | 页条带的数据组织以及向页条带写入数据的方法与装置 |
-
2023
- 2023-06-27 CN CN202310774507.1A patent/CN117251107B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007058624A1 (en) * | 2005-11-17 | 2007-05-24 | Chee Keng Chang | A controller for non-volatile memories, and methods of operating the memory controller |
CN108153482A (zh) * | 2016-12-05 | 2018-06-12 | 厦门鑫忆讯科技有限公司 | Io命令处理方法与介质接口控制器 |
CN113760786A (zh) * | 2017-05-10 | 2021-12-07 | 北京忆芯科技有限公司 | 页条带的数据组织以及向页条带写入数据的方法与装置 |
US10409511B1 (en) * | 2018-06-30 | 2019-09-10 | Western Digital Technologies, Inc. | Multi-device storage system with distributed read/write processing |
EP3680778A1 (en) * | 2019-01-11 | 2020-07-15 | Marvell Asia Pte, Ltd. | Storage media programming with adaptive write buffer release |
Non-Patent Citations (2)
Title |
---|
周权彪;张兴军;梁宁静;霍文洁;董小社;: "基于缓存映射项重用距离的闪存地址映射方法", 计算机研究与发展, no. 05, 15 May 2018 (2018-05-15) * |
黄耀钦;邓玉辉;: "MFTL:一种基于固态盘系统非对齐更新数据的合并策略", 小型微型计算机系统, no. 06, 15 June 2018 (2018-06-15) * |
Also Published As
Publication number | Publication date |
---|---|
CN117251107B (zh) | 2024-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10860508B2 (en) | Offloaded disaggregated storage architecture | |
CN111240586B (zh) | 存储器系统及其操作方法 | |
US10445016B2 (en) | Techniques for storage command processing | |
JP6163532B2 (ja) | メモリシステムコントローラを含む装置 | |
CN108153482B (zh) | Io命令处理方法与介质接口控制器 | |
US9092336B2 (en) | Write admittance policy for a memory cache | |
CN111373362A (zh) | 具有分布式读取/写入处理的多设备存储系统 | |
JP7513356B2 (ja) | 不揮発性メモリにおける摩耗を意識したブロック・モード変換 | |
US9632702B2 (en) | Efficient initialization of a thinly provisioned storage array | |
WO2018189858A1 (ja) | ストレージシステム | |
JP7353934B2 (ja) | メモリシステムおよび制御方法 | |
KR20190004400A (ko) | 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법 | |
KR20100116396A (ko) | 컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템, 및 그 방법 | |
CN111258496B (zh) | 动态分配数据路径的装置和方法 | |
KR20100011698A (ko) | 데이터 머지를 수행하는 반도체 스토리지 시스템 및 그제어 방법 | |
US11747984B2 (en) | Memory system that constructs virtual storage regions for virtual machines | |
JP2022171208A (ja) | メモリシステムおよび制御方法 | |
CN108153582B (zh) | Io命令处理方法与介质接口控制器 | |
CN115809018A (zh) | 改善系统的读取性能的设备和方法 | |
CN108877862B (zh) | 页条带的数据组织以及向页条带写入数据的方法与装置 | |
KR20220135786A (ko) | 메모리 시스템에 포함된 복수의 메모리 장치에서 수행되는 동작에 대해 스케줄링하는 장치 및 방법 | |
CN117251107B (zh) | 降低页条带写操作性能波动的方法 | |
CN112599170A (zh) | 用于在存储器系统中提供多流操作的设备和方法 | |
CN113302582A (zh) | 每光标逻辑单元号定序 | |
US11768628B2 (en) | Information processing apparatus |
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 |