CN114328304B - 存储介质的操作方法和装置 - Google Patents
存储介质的操作方法和装置 Download PDFInfo
- Publication number
- CN114328304B CN114328304B CN202011046892.0A CN202011046892A CN114328304B CN 114328304 B CN114328304 B CN 114328304B CN 202011046892 A CN202011046892 A CN 202011046892A CN 114328304 B CN114328304 B CN 114328304B
- Authority
- CN
- China
- Prior art keywords
- media interface
- command
- interface command
- media
- storage medium
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 95
- 230000004044 response Effects 0.000 claims abstract description 19
- 238000012545 processing Methods 0.000 description 54
- 230000008569 process Effects 0.000 description 35
- 230000000875 corresponding effect Effects 0.000 description 30
- 238000010586 diagram Methods 0.000 description 11
- 230000000977 initiatory effect Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 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 3
- 238000012937 correction Methods 0.000 description 3
- 229940044442 onfi Drugs 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 108010076504 Protein Sorting Signals Proteins 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Landscapes
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本申请公开了存储介质的操作方法和装置。该编程方法应用于介质接口控制器,该编程方法包括获取第一介质接口命令,所述第一介质接口命令指示对存储介质发起第一存储介质访问命令,所述第一存储介质访问命令指示存储介质进行第一编程操作;响应于获取到所述第一介质接口命令,判断第二介质接口命令指示的操作能否与所述第一编程操作构成缓冲编程操作,所述第二介质接口命令指示对存储介质发起第二存储介质访问命令,所述第二存储介质访问命令指示存储介质进行第二编程操作,所述第二介质接口命令为在所述第一介质接口命令之后执行的介质接口命令;若判断结果为是,向存储介质发起第三存储介质访问命令,所述第三存储介质访问命令指示存储介质进行第一缓冲编程操作。
Description
技术领域
本发明涉及存储技术领域,尤其涉及一种存储介质的操作方法和装置。
背景技术
图1展示了存储设备的框图。存储设备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(DynamicRandom Access Memory,动态随机访问存储器)110。
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(MagneticRandom Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)、XPoint存储器等是常见的NVM。NVM中存储的数据会在一定程度上出现损坏,为克服此类问题,通常在访问NVM时,通过错误校正码(Error Correction Code,ECC)对NVM上存储的数据进行保护。常用的错误校正码包括BCH码、LDPC、RS码等。
接口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”等。
NVM芯片包括一个或多个逻辑单元(Logic Unit,LUN)。NVM芯片封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NVM芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron.com/~/media/Documents/Products/Other%20Documents/ONFI3_0Gold.ashx获得的“Open NAND Flash InterfaceSpecification(Revision 3.0)”中,提供了关于目标(target)、逻辑单元、平面(Plane)的含义,其为现有技术的一部分。本申请中,除非另外指出,目标(Target)与逻辑单元(LUN)的使用可互换。
NVM芯片通常按页来存储和读取数据。而按块来擦除数据。块(也称物理块)包含多个页(也称为物理页)。物理页具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
图2展示了存储设备的控制部件的详细的框图。
主机以遵循存储协议的IO命令访问存储设备。控制部件根据来自主机的IO命令,生成一个或多个存储命令并提供给介质接口控制器。介质接口控制器根据存储命令生成遵循NVM芯片的接口协议的存储介质访问命令(例如,编程命令、读命令、擦除命令)。控制部件还跟踪从一个IO命令生成的所有存储命令都被执行完成,并向主机指示IO命令的处理结果。
参看图2,控制部件包括例如主机接口、主机命令处理单元、存储命令处理单元、介质接口控制器与存储介质管理单元。主机接口获取主机提供的IO命令,并生成存储命令提供给存储命令处理单元。存储命令例如访问相同大小的存储空间,例如4KB。将NVM芯片中记录的对应一个存储命令所访问数据的数据单元称为数据帧。物理页记录一个或多个数据帧。例如,物理页的大小17664字节,而数据帧大小为4KB,则一个物理页能存储4个数据帧。
存储介质管理单元为每个存储命令维护逻辑地址到物理地址的转换。例如,存储介质管理单元包括FTL表。对于读命令,存储介质管理单元输出存储命令所访问的逻辑地址对应的物理地址,对于写命令,存储介质管理单元为其分配可用的物理地址,并记录其访问的逻辑地址与分配的物理地址的映射关系。存储介质管理单元还维护诸如垃圾回收、磨损均衡等管理NVM芯片所需的功能。
存储命令处理单元根据存储介质管理单元提供的物理地址,操作介质接口控制器向NVM芯片发出存储介质访问命令。为了清楚的目的,将存储命令处理单元发送给介质接口控制器的命令称为介质接口命令,而将介质接口控制器发送给NVM芯片的命令称为存储介质访问命令。存储介质访问命令遵循NVM芯片的接口协议。以存储介质访问读命令为例,NVM芯片支持的读命令按读取的数据大小分为多种类型,例如读完整物理页的读命令,读例如一个、两个或更多数据帧的读命令,读多个平面的读命令,读字线的多个物理页的读命令等。
介质接口命令同存储介质访问命令对应,从而介质接口控制器根据介质接口命令的类型,确定生成的存储介质访问命令的类型。
申请号为201510253428.1、专利名称为“微指令序列执行方法及其装置”的中国专利中提供了介质接口控制器的例子,通过执行微指令(微码),将存储介质访问命令施加给NVM芯片。申请号为2020106080147、专利名称为“自适应NVM读取方法及其装置”的中国专利申请,申请号为“202010615178.2”、专利名称为“智能读重做方法及其介质接口控制器”的中国专利申请,申请号为“202010207004.2”、专利名称为“用于读命令融合的介质接口控制器及存储控制器”的中国专利申请,申请号为201810380329.3、专利名称为“乱序执行NVM命令的方法与装置”的中国专利,申请号为201610836531.3、专利名称为“生成NVM芯片接口命令的方法与装置”的中国专利申请中均提供了介质接口控制器的例子。上述专利文献作为本申请的背景技术。申请号为201510253428.1、专利名称为“微指令序列执行方法及其装置”的中国专利中提供了介质接口控制器的例子,通过执行微指令(微码),将存储介质访问命令施加给NVM芯片。申请号为2020106080147、专利名称为“自适应NVM读取方法及其装置”的中国专利申请,申请号为“202010615178.2”、专利名称为“智能读重做方法及其介质接口控制器”的中国专利申请,申请号为“202010207004.2”、专利名称为“用于读命令融合的介质接口控制器及存储控制器”的中国专利申请,申请号为201810380329.3、专利名称为“乱序执行NVM命令的方法与装置”的中国专利,申请号为201610836531.3、专利名称为“生成NVM芯片接口命令的方法与装置”的中国专利申请中均提供了介质接口控制器的例子。上述专利文献作为本申请的背景技术。
图3展示了现有技术的介质接口控制器。
介质接口控制器包括微指令存储器、微指令执行单元与信号驱动器。介质接口控制器耦合通过NVM芯片。介质接口控制器向NVM芯片提供存储介质访问命令并获取存储介质访问命令的处理结果。微指令存储器存储了微指令序列。
微指令序列同介质接口命令对应,介质接口控制器根据收到的介质接口命令获取对应的微指令序列提供给微指令执行单元。微指令执行单元执行微指令序列,根据微指令序列指示的信号驱动信号驱动器,在介质接口同NVM芯片耦合的引线上产生指定的信号。并通过执行微指令序列,产生符合NVM芯片接口协议的信号序列。信号驱动器还从引线采集信号,例如从DQ引线采集从NVM芯片读出的数据。
图4A是现有技术的NVM芯片的编程命令的示意图。控制部件(例如,图1的控制部件104,或图2的介质接口控制器)通过引脚向NVM芯片发出包括命令、地址与数据的存储介质访问命令(作为举例,为编程命令),将数据写入NVM芯片。图4A中,展示了包括多个时钟周期的编程命令。图4A位于左边的周期时间在前,位于右边的周期时间在后。每个周期内通过DQ引脚向NVM芯片传输一组信号,图4A中“周期类型”的行,展示了每周期传输的信号的类型(或含义),“DQ”行展示了每周期传输的信号的值。
如图4A所示,数据信号DQ与周期类型一一对应,周期类型包括命令、地址和/或数据。数据信号DQ的值80h指示编程命令开始,C1和C2为编程命令中的列地址(ColumnAddress),R1、R2和R3为编程命令中的行地址(Row Address)。随后开始向NVM芯片传输数据D0、D1、……、Dn,数据传输完成后,数据信号DQ的值10h则指示该编程命令传输结束,此时NVM芯片开始向存储介质中写入数据,在经过t1时长之后,NVM芯片完成编程操作。接下来,数据信号DQ传输的值70h指示进行读状态操作,再下一周期的数据信号DQ传输的是读取出的状态。
以编程命令为例,编程命令包括地址、数据与状态三部分。在编程命令的地址部分,由DQ引脚的“80h”作为指示,随后是多个(例如5个)周期的地址(由C1、C2、R1、R2与R3)指示,这些地址指示编程命令要写入的NVM芯片的地址。接下来,向NVM芯片传输要写入的数据(由D0、D1、……Dn表示),以及由DQ信号“10h”指示数据传输的结束。NVM芯片收到“10h”命令后,开始处理编程命令。NVM芯片需要至少t1时间(典型地,例如几十us)来处理编程命令。接下来通过向NVM芯片发出“70h”命令来查询NVM芯片的状态,NVM芯片向控制部件给出状态。状态指示编程命令是否执行完成。
存储介质访问命令的格式在诸如ONFI或Toggle的协议中定义。以ONFI协议为例,协议中规定了编程命令以80h为开始,10h为结束;多平面的编程命令以80h为开始,11h为结束;而缓冲编程命令以80h为开始,15h为结束。
图4B展示了现有技术中NVM芯片处理命令的又一时序图。
与图4A类似,图4B中数据信号DQ的值80h指示编程命令开始,C1和C2为编程命令中的列地址,R1、R2和R3为编程命令中的行地址。随后开始向NVM芯片传输数据D0、D1、……、Dn,数据传输完成后,数据信号15h则指示该命令为缓冲编程命令且该缓冲编程命令已传输完成。收到数据信号15h之后,NVM芯片开始向存储介质中写入数据(NVM芯片此时进行的是缓冲编程操作),在经过t2时长之后,NVM芯片完成缓冲编程操作。图4B中,下一个命令为以10h结束的编程命令,NVM芯片需要t1时长执行完该编程操作,且t1大于t2。需要注意的是,图4A和图4B中的t1虽然在图中的比例有所区别,但指代的是例如相同的时长。
t2时长小于t1时长,从而在NVM芯片要连续处理多个编程命令时,若多个编程操作能被替换为缓冲编程操作来执行,就能够缩短NVM芯片处理多个编程命令的时间,例如多个为N个,N为大于等于2正整数,则最多能节省(N-1)*(t1-t2)的时间。
发明内容
NVM芯片处理缓冲编程命令的速度要快于其处理编程命令。但使用缓冲编程命令受到限制。为了接受一个缓冲编程命令(记为C),需要在发送给NVM芯片的命令C的前后时间上紧邻的存储介质访问命令都满足指定的条件,NVM芯片才能正确处理命令C。因而为了利用缓冲编程带来的性能优势,控制部件需要协调连续的多个发送给NVM芯片的命令,使得这些多个命令包括缓冲编程命令,且彼此间满足指定的条件。
控制部件通常以同时发出多个存储介质访问命令为目标,并按介质接口控制器提供的接口访问NVM芯片。从而控制部件提供给介质接口控制器的是指示对例如物理页的读、写的命令,而不关心和/或不能直接指示介质接口控制器使用缓冲编程命令。因而,需要介质接口控制器分析收到的命令,并在编程命令与缓冲编程命令之间选择,使得既正确处理所接收的命令,又能充分发挥NVM芯片的性能。例如,介质接口控制器如果根据接收的写命令都不加区分的生成编程命令,能满足正确性但不能发挥NVM芯片的性能,但如果根据接收的写命令都不加区分的生成缓冲编程命令,则由于不满足使用缓冲编程的条件而不能保证正确性。
从而在介质接口控制器处理大量命令时,如何快速地选择编程命令和缓冲编程命令,并提高控制部件的处理效率是目前亟待解决的技术问题。
本发明的发明目的在于:针对上述存在的问题,提供一种存储介质的操作方法和装置,以提高存储介质处理编程命令的速率,提高存储介质的性能。
本发明采用的技术方案如下:
一种存储介质的编程方法,该编程方法应用于介质接口控制器,包括:
获取第一介质接口命令,所述第一介质接口命令指示对存储介质发起第一存储介质访问命令,第一存储介质访问命令指示存储介质进行第一编程操作。响应于获取到第一介质接口命令,判断第二介质接口命令指示的操作能否与第一编程操作构成缓冲编程操作,第二介质接口命令指示对存储介质发起第二存储介质访问命令,第二存储介质访问命令指示存储介质进行第二编程操作,第二介质接口命令为在第一介质接口命令之后执行的介质接口命令。若判断结果为是,向存储介质发起第三存储介质访问命令,第三存储介质访问命令指示存储介质进行第一缓冲编程操作。
实验发现,存储介质执行缓冲编程命令的速率要高于普通编程的速率,又由于对于缓冲编程命令的判断需要结合多个介质接口命令,因此,上述方法提前对队列中的命令就能否构成缓冲编程操作进行判断,再指示存储介质执行缓冲编程操作,高效利用了存储介质处理数据的时间,同时也提高了存储介质处理命令的速率,提高了存储器的利用率,提高了存储介质的性能。
可选地,在判断第二介质接口命令指示的操作能否与第一编程操作构成缓冲编程操作的结果为否时,向存储介质发起第一存储介质访问命令,以使存储介质进行第一编程操作。
可选地,第二介质接口命令与第一介质接口命令相邻,或第二介质接口命令与第一介质接口命令之间不存在会更改存储介质页寄存器的介质接口命令。
可选地,上述判断第二介质接口命令指示的操作能否与第一编程操作构成缓冲编程操作,包括:判断是否能获取到第二介质接口命令;若判断结果为是,获取第二介质接口命令;根据第二介质接口命令的内容和第一介质接口命令的内容,判断第二编程操作能否与第一编程操作构成缓冲编程操作。
可选地,若判断是否能获取到第二介质接口命令的判断结果为否,让出介质接口控制器的控制权。
可选地,若判断是否能获取到第二介质接口命令的判断结果为否,启动定时器。
可选地,响应于获得的介质接口控制器的控制权,再次判断是否能获取第二介质接口命令。
可选地,响应于获得的介质接口控制器的控制权,若定时器已到时,向存储介质发起第一存储介质访问命令,以使存储介质进行第一编程操作。
可选地,判断第二介质接口命令指示的操作能否与第一编程操作构成缓冲编程操作还包括:若判断能否获取到第二介质接口命令的判断结果为否,开始计时;若在第一指定时长之内仍没有获取到第二介质接口命令,获取并执行访问其它线程的介质接口命令。
可选地,在第一指定时长内,按照指定时间间隔获取第二介质接口命令。
可选地,若在第一指定时长内获取到第二介质接口命令,根据第二介质接口命令的内容和第一介质接口命令的内容,判断第二编程操作能否与第一编程操作构成缓冲编程操作。
可选地,第一介质接口命令及第二介质接口命令均由第一线程处理,方法还包括:若判断能否获取到第二介质接口命令的判断结果为否,开始计时;响应于开始计时或在开始计时的第二指定时长后,将当前运行的线程从第一线程切换为其它线程,第二指定时长小于第一指定时长;在其它线程处理至少一个介质接口命令后,将当前运行的线程从其它线程切换回第一线程;在当前运行的线程切换回第一线程之后,若获取到第二介质接口命令,根据第二介质接口命令的内容和第一介质接口命令的内容,判断第二编程操作能否与第一编程操作构成缓冲编程操作。
可选地,在当前运行的线程切换回第一线程之后,若仍没有获取到第二介质接口命令,判断计时是否到时;若计时没有到时,等待或者再次切换当前运行的线程;若计时到时,向存储介质发起所述第一存储介质访问命令,以使存储介质进行第一编程操作。
可选地,将当前运行的线程从第一线程切换为其它线程,以及在其它线程处理至少一个介质接口命令后,将当前运行的线程从其它线程切换回第一线程,包括:将当前运行的线程从第一线程切换为其它线程,同时对第一线程进行标记,在其它线程处理至少一个介质接口命令后,根据标记,将当前运行的线程从其它线程切换回第一线程。
可选地,判断第二介质接口命令指示的操作能否与第一编程操作构成缓冲编程操作,还包括:判断第二介质接口命令与第一介质接口命令的平面类型是否相同;及判断第二介质接口命令与第一介质接口命令的存储单元类型是否相同;其中,在平面类型及存储单元类型均相同时,判断第二编程操作与第一编程操作能构成缓冲编程操作。
可选地,平面类型包括单平面类型和多平面类型。
可选地,在第一介质接口命令对应的平面类型为多平面类型时,根据第二介质接口命令内容和第一介质接口命令的内容,判断第二编程操作能否与第一编程操作构成缓冲编程操作,包括:判断第二介质接口命令对应的多个平面是否与第一介质接口命令对应的多个平面均相同。
可选地,微码配置于介质接口控制器上。
可选地,控制部件配置有全局缓冲编程标识,获取第一介质接口命令之前,存储介质的编程方法还包括:确定全局缓冲编程标识处于使能状态。
可选地,在全局缓冲编程标识处于禁用状态时,方法还包括:响应于获取第一介质接口命令,对存储介质发起第一编程操作。
为解决上述全部或部分问题,本发明还提供了一种计算设备可读介质,该计算设备可读存储介质上存储了程序,所述程序包括微指令序列;当由计算设备执行时,所述程序使得该计算设备被配置为执行上述的编程方法。
为解决上述全部或部分问题,本发明还提供了一种存储介质的操作方法,该方法应用于介质接口控制器,包括:获取第一介质接口命令,第一介质接口命令指示对存储介质发起第一存储介质访问命令;若第一介质接口命令指示对存储介质进行第一编程操作,判断第二介质接口命令能否与第一介质接口命令构成缓冲编程操作,其中第二介质接口命令指示对存储介质发起第二存储介质访问命令,第二介质接口命令为在第一介质接口命令之后获取的介质接口命令;若判断结果为是,发起第三存储介质访问命令,第三存储介质访问命令指示存储介质进行第一缓冲编程操作。
可选地,若第一介质接口命令指示对存储介质进行的第一操作不是编程操作,或者若判断结果为否,方法还包括:向存储介质发起第一存储介质访问命令。
可选地,上述判断第二介质接口命令能否与第一介质接口命令构成缓冲编程操作,包括:若第二介质接口命令指示对存储介质进行的第二操作不是编程操作,判断结果为否。
可选地,判断第二介质接口命令能否与第一介质接口命令构成缓冲编程操作,包括:若第二介质接口命令与第一介质接口命令的平面类型相同,且第二介质接口命令与第一介质接口命令访问的存储单元类型相同,判断结果为是。
可选地,判断第二介质接口命令能否与第一介质接口命令构成缓冲编程操作,包括:若获取第二介质接口命令之前,获取第一介质接口命令之后还获取了其他介质接口命令,判断结果为否。
可选地,其他介质接口命令的执行将影响存储介质的页寄存器。
可选地,判断第二介质接口命令能否与第一介质接口命令构成缓冲编程操作,包括:若获取第二介质接口命令之前,获取第一介质接口命令之后还获取了其他介质接口命令,其他介质接口命令的执行不会影响存储介质的页寄存器,第二介质接口命令与第一介质接口命令的平面类型相同,且第二介质接口命令与第一介质接口命令访问的存储单元类型相同,判断结果为是。
可选地,方法还包括:若无法获取第二介质接口命令,让出对介质接口控制器的控制权。
可选地,若无法获取第二介质接口命令,方法还包括:启动第一定时器。
可选地,方法还包括:响应于获得的介质接口控制器的控制权,再次获取第二介质接口命令。
可选地,方法还包括:响应于获得的介质接口控制器的控制权,若定时器到时,向存储介质发起第一存储介质访问命令,以使存储介质进行第一操作。
可选地,方法还包括:若在第一指定时长之内仍没有获取到第二介质接口命令,让出对介质接口控制器的控制权。
可选地,若在第一指定时长内获取到第二介质接口命令,方法还包括:判断第二介质接口命令能否与第一介质接口命令构成缓冲编程操作。
可选地,第一线程处理访问第一target的介质接口命令,第二线程处理访问第二target的介质接口命令,第一介质接口命令及第二介质接口命令均访问第一target;其中,若无法获取第二介质接口命令,第一线程让步以让出对介质接口控制器的控制权;第二线程被调度以获得对介质接口控制器的控制权,并获取访问第二target的第三介质接口命令。
可选地,在无法获取第二介质接口命令时,方法还包括:第一线程启动第一定时器,第一线程持续获取第二介质接口命令,若在第二指定时长之内仍没有获取到第二介质接口命令,第一线程让步以让出对介质接口控制器的控制权。
可选地,方法还包括:在第二线程中处理至少一个介质接口命令后,第一线程被重新调度;响应于第一线程被重新调度,第一线程持续获取第二介质接口命令;其中,在第一线程被重新调度时,若第一定时器到时,第一线程向存储介质发起第一存储介质访问命令,以使存储介质进行第一操作;第一线程持续获取第二介质接口命令时,若无法获取第二介质接口命令,第一线程让步以让出对介质接口控制器的控制权。
可选地,若获取到第二介质接口命令,判断第二介质接口命令能否与第一介质接口命令构成缓冲编程操作。
可选地,在获取第一介质接口命令之前,方法还包括:识别全局缓冲编程标识;若全局缓冲编程标识无效,响应于获取第一介质接口命令,向存储介质发起第一存储介质访问命令。
为解决上述全部或部分问题,本发明还提供了一种计算设备可读介质,在该计算设备可读存储介质上存储了程序,所述程序包括微指令序列;当由计算设备执行时,所述程序使得该计算设备被配置为执行上述操作方法。
综上所述,由于采用了上述技术方案,本申请的有益效果是:
1、本申请使得介质接口控制器在处理大量命令时,能够有效地选择生成编程命令和缓冲编程命令,以充分利用存储介质处理缓冲编程命令速度更快的优势,在确保正确处理接收的命令的情况下,充分发挥存储介质的性能,降低向存储介质写入数据的整体延迟。
2、本申请由介质接口控制器完成对要生成的存储介质访问命令的判断,节省了控制部件的其它计算资源,使得固件能够更快地下发指令和数据,在微码处理速度足够的情况下,提高了控制部件处理写命令的效率和速度。
3、本申请能够在等待存储介质处理存储介质访问命令的时间里处理其他存储介质访问命令,充分利用了微码计算资源,提高了对存储介质访问命令的处理效率。
附图说明
本申请将通过例子并参照附图的方式说明,其中:
图1是现有技术中存储设备的结构图。
图2是是现有技术中的控制部件的结构图。
图3是现有技术中介质接口控制器的结构图。
图4A是NVM芯片处理编程命令的一示意图。
图4B是NVM芯片处理编程命令的又一示意图。
图5A-5C是本申请实施例提供的存储介质操作方法的流程图。
图6A是本申请实施例提供的介质接口控制器的结构图。
图6B是本申请实施例提供的介质接口控制器执行线程让步的流程图。
图7A和7B是本申请实施例提供存储介质操作方法流程图。
具体实施方式
本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
本说明书(包括任何附加权利要求、摘要)中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
在本申请的描述中“至少一个”是指一个或多个,其中,多个是指两个或两个以上。因此,本申请实施例中的“多个”可以理解为“至少两个”。“和/或”用于描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示,单独存在A,同时存在A和B,单独存在B这三种情况。另外,字符“/”,如果无特殊说明,一般表示前后关联对象是一种“或”的关系。还需要理解的是,本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
实施例一
图5A展示了根据本申请的实施例的处理介质接口命令的流程图。
图5A的实施例由例如介质接口控制器通过执行微指令序列来实施。作为举例,介质接口控制器已经获取并在处理第一介质接口命令。第一介质接口命令指示对NVM芯片实施编程操作。根据本申请的实施例,在根据第一介质接口命令向NVM芯片发出指示编程操作的存储介质访问命令之前,处理第一介质接口命令的微指令序列尝试获取第二介质接口命令。这里,第二介质接口命令访问同第一介质接口命令访问相同的Target。
判断第二介质接口命令指示的操作能否与第一介质接口命令指示的操作构成缓冲编程操作。若判断结果为是,则根据第一介质接口命令指示NVM芯片执行缓冲编程操作。若判断结果为否,根据第一介质接口命令指示NVM芯片执行编程操作。
例如,图4B展示了在前的缓冲编程命令与紧邻的编程命令,这两个命令得以用于替代两个指示对NVM芯片实施编程操作的介质接口命令。
下面将以介质接口控制器执行本申请实施例中的存储介质的编程方法为例,对该编程方法进行描述。存储设备的控制部件,通过介质接口命令操作存储介质。其中,控制部件中的介质接口控制器可通过配置的微指令(微码)来对存储介质进行操作。控制部件包括介质接口控制器,介质接口控制器耦合到存储介质,本实施例中存储介质为例如NVM芯片。介质接口控制器以遵循所耦合的存储介质的接口协议的方式向所述存储介质发出存储介质访问命令,从而操作存储介质,并接收从存储介质输出的存储介质访问命令的执行结果。
本实施例中,介质接口命令是例如存储命令处理单元发送给介质接口控制器的命令,由介质接口控制器处理。存储介质访问命令由介质接口控制器生成并发送给NVM芯片。
本实施例中,介质接口控制器获取第一介质接口命令,第一介质接口命令指示要将数据写入NVM芯片。根据第一介质接口命令,介质接口控制器可生成第一存储介质访问命令,该第一存储介质访问命令指示存储介质进行第一编程操作。需要说明的是,本申请中描述的“编程操作”为例如现有技术中的页编程操作。随着存储介质的不同,编程操作的对象可能不是“页”,因此本申请的一些实施例中的编程操作对此不做限定。
响应于获取到所述第一介质接口命令,介质接口控制器判断第二介质接口命令指示的操作能否与所述第一编程操作构成缓冲编程操作,该第二介质接口命令指示对存储介质发起第二存储介质访问命令,第二存储介质访问命令指示存储介质进行第二编程操作,第二介质接口命令为在第一介质接口命令之后执行的介质接口命令。本实施例中,未处理的介质接口命令以数组、队列或链表等形式存储在介质接口控制器中。例如,第一介质接口命令和第二介质接口命令以队列的形式存储,第一介质接口命令位于队列头,第二介质接口命令位于队列的第二位。
在一些实施例中,第二介质接口命令与第一介质接口命令相邻,或第二介质接口命令与第一介质接口命令之间不存在会更改存储介质页寄存器的介质接口命令。例如,位于队列头的第一介质接口命令指示要将数据写入NVM芯片的第一编程操作,位于队列第二位的介质接口命令指示读取特征(Get Feature),NVM芯片在进行读取特征操作时不会改变页寄存器的取值,位于队列第三位的第二介质接口命令指示将数据写入NVM芯片的第二编程操作。
本实施例中,若第二编程操作能够与第一编程操作构成缓冲编程操作,介质接口控制器根据第一介质接口命令生成第三存储介质访问命令,并向存储介质发起第三存储介质访问命令。该第三存储介质访问命令指示存储介质进行第一缓冲编程操作。若第二编程操作不能与第一编程操作构成缓冲编程操作,质接口控制器根据第一介质接口命令生成第一存储介质访问命令,并向存储介质发起第一存储介质访问命令,以使存储介质进行第一编程操作。
存储介质进行缓冲编程操作的时间要短于进行编程操作的时间,存储介质并不能主动判断一个编程操作是否能变为缓冲编程操作来执行。因而为了利用缓冲编程操作来缩短多个编程操作的总体执行时间,需要由介质接口控制器来判断多个编程操作是否能构成缓冲编程操作,并向存储介质发起相应的存储介质访问命令。
在一些实施例中,判断第二编程操作与第一编程操作能否构成缓冲编程操作,包括:判断所述第二介质接口命令与所述第一介质接口命令的平面类型是否相同,及判断所述第二介质接口命令与所述第一介质接口命令的存储单元类型是否相同。其中,平面类型包括单平面(Single Plane)类型和多平面(Multi-plane)类型,存储单元类型包括SLC(Single-Level Cell)、TLC(Triple-Level Cell)和MLC(Multi-Level Cell)。
在第一介质接口命令和第二介质接口命令对应的平面类型相同,且第一介质接口命令和第二介质接口命令对应的存储单元类型也相同时,判定第二编程操作与第一编程操作能构成缓冲编程操作。
可选地,在第一介质接口命令对应的平面类型为多平面类型时,还需要判断第二介质接口命令对应的多个平面是否与第一介质接口命令对应的多个平面均相同,只有在两个介质接口命令对应的多个平面相同时,才判定第一编程操作和第二编程操作能构成缓冲编程操作。例如,第一介质接口命令对应的多个平面为平面0和平面1,第二介质接口命令对应的多个平面为平面1和平面2,虽然两个介质接口命令对应的多个平面包括1个相同的平面,仍判断第一编程操作和第二编程操作不能构成缓冲编程造作,本例子中的平面0、平面1和平面2可以表示为平面的标识。
在一些实施例中,介质接口控制器在处理第一介质接口命令时,介质接口控制器尚未获取到第二介质接口命令。因而在获取第二介质接口命令之前,介质接口控制器还判断是否能获取到第二介质接口命令。例如,介质接口控制器在处理第一介质接口命令时,第二介质接口命令已存储在介质接口控制器内,从而判断能够获取到第二介质接口命令。若判断结果为是(能获取到第二介质接口命令),介质接口控制器获取第二介质接口命令,并根据所述第二介质接口命令的内容和所述第一介质接口命令的内容,判断所述第二编程操作能否与所述第一编程操作构成缓冲编程操作。本实施例中,第一介质接口命令和第二介质接口命令包括例如上述实施例中的平面类型和/或存储单元类型等内容。可选地,根据介质接口命令访问的物理地址的全部或部分识别平面类型和/或存储单元类型。
在一些实施例中,若判断不能获取到第二介质接口命令,让出介质接口控制器的控制权。具体的,让出介质接口控制器的控制权并不意味着介质接口控制器暂停或停止工作,介质接口控制器只是暂停处理第一介质接口命令,此时仍能够处理访问其他Target的介质接口命令。
进一步可选地,若判断不能获取到第二介质接口命令,介质接口控制器还启动定时器。定时时长为预设时长,例如10ms。进一步,该定时时长可由介质接口命令配置。
可选地,响应于获得的介质接口控制器的控制权,再次判断是否能获取第二介质接口命令。例如,定时器到时,重新获得介质接口控制器的控制权,并再次判断是否能获取到第二介质接口命令,判断能否获取到第二介质接口命令的方法参见上述实施例中的描述,在此不再赘述。又如,重新获得介质接口控制器的控制权与定时器无关,只要重新获得控制权,就再次判断能否获取到第二介质接口命令。
进一步可选地,响应于获得的介质接口控制器的控制权,若定时器已到时,向存储介质发起第一存储介质访问命令,以使存储介质进行第一编程操作。本实施例中,在重新获得介质接口控制器的控制权之后,若定时器已经到时,即使此时介质接口控制器能够获取到第二介质接口命令,也不继续获取第二介质接口命令,而是直接向NVM芯片发起第一存储介质访问命令,使得NVM芯片进行第一编程操作。
在另一些实施例中,在重新获得介质接口控制器的控制权之后,若定时器已经到时,介质接口控制器再次获取第二介质接口命令,若没有获取到第二介质接口命令,向NVM芯片发起第一存储介质访问命令,使得NVM芯片进行第一编程操作。本实施例中,重新获得介质接口控制器的控制权可能发生在定时器到时之后,此时第二介质接口命令可能已经存储在介质接口控制器内,虽然定时器已经到时,但进行缓冲编程操作的时间仍旧短于编程操作所需的时间。
在一些实施例中,若介质接口控制器判断不能获取到第二介质接口命令,则开始计时(例如启动定时器)。本实施例中的计时包括进行第一指定时长的计时和进行第二指定时长的计时。例如,第一指定时长为20ms,第二指定时长为1-3ms。若在第一指定时长之内仍没有获取到第二介质接口命令,介质接口控制器获取并执行访问其它Target的介质接口命令。本实施例中,第一介质接口命令和第二介质接口命令访问的是同一Target,介质接口控制器执行访问其他Target的介质接口命令不会影响第一介质接口命令及第二介质接口命令的执行。
进一步,在第一指定时长内,介质接口控制器按照指定时间间隔获取第二介质接口命令。例如,介质接口控制器每隔2ms去获取一次第二介质接口命令。本申请中的指定时间间隔、第一指定时长、第二指定时长和定时器的定时时长的取值可根据实际情况确定,在此不作限定。
在一些实施例中,若在第一指定时长内获取到第二介质接口命令,介质接口控制器根据所述第二介质接口命令的内容和所述第一介质接口命令的内容,判断所述第二编程操作能否与所述第一编程操作构成缓冲编程操作。
在一些实施例中,第一介质接口命令及第二介质接口命令均访问第一Target。若判断能否获取到所述第二介质接口命令的判断结果为否,开始计时。响应于开始计时或在开始计时的第二指定时长后,将当前处理访问第一Target的介质接口命令,切换为处理访问其他Target的介质接口命令,,第二指定时长小于第一指定时长。为了简便的目的,将当前所处理的介质接口命令访问的Target,称为处理的Target,将切换处理的Target简称为切换Target。
根据其他Target的工作状态,介质接口控制器将当前处理的Target从其它Target切换回所述第一Target。在当前处理的Target切换回第一Target之后,若获取到所述第二介质接口命令,根据所述第二介质接口命令的内容和所述第一介质接口命令的内容,判断所述第二编程操作能否与所述第一编程操作构成缓冲编程操作。例如,第一指定时长为20ms,第二指定时长为1-3ms,介质接口控制器在第一次判断不能获取到第二介质接口命令后开始计时。在开始计时后直接将当前处理的Target切换为其它Target,或者在开始计时的1-3ms后将当前处理的Target切换为其它Target。在开始计时的1-3ms内,介质接口控制器可以每隔例如2ms获取一次第二介质接口命令。在等待超过第一指定时长后,缓冲编程操作能够减少的编程时间就很少了,第二指定时长比第一指定时长短,从而在第二指定时长后,介质接口控制器切换到其它Target来处理其它介质接口命令,能够让介质接口控制器处理更多的命令,进而提高效率。
可选地,在上一实施例中,其它Target没有处理任何介质接口命令,将当前处理的Target也切换回第一Target。这是因为当前处理的Target在切换到其它Target之后,获知其它Target处于忙碌或者无介质接口命令待处理,从而则会仅仅查询了其它Target的状态后就切换到第一Target。
进一步,在当前处理的Target切换回所述第一Target之后,若仍没有获取到所述第二介质接口命令,判断所述计时是否到时。具体的,介质接口控制器判断计时是否达到第一指定时长。若计时没有到时,介质接口控制器等待或者再次切换当前处理的Target。若计时到达第一时长,向存储介质发起所述第一存储介质访问命令,以使存储介质进行第一编程操作。
进一步,将当前处理的Target从第一Target切换为其它Target时,对第一Target进行标记,在例如其它Target处理至少一个介质接口命令后,根据该标记,将当前处理的Target从其它Target切换回第一Target。
在本申请实施例中,控制部件配置有全局缓冲编程标识,在获取第一介质接口命令之前,介质接口控制器还确定该全局缓冲编程标识处于使能状态。例如,全局缓冲编程标识为高电平或取值为1则处于确定其处于使能状态,对应地,全局缓冲编程标识为低电平或取值为0则处于确定其处于禁用状态。
进一步,在全局缓冲编程标识处于禁用状态时,介质接口控制器不识别是否要根据指示编程操作的介质接口命令来生成缓冲编程操作,而是在获取到第一介质接口命令后,介质接口控制器只会对存储介质发起由第一介质接口命令所直接指示的第一编程操作。
本申请实施例中的编程方法可由运行微指令序列实现,微码配置于介质接口控制器内。
对应于本实施例的方法,本申请实施例还公开了一种计算设备可读介质,在该计算设备可读存储介质上存储了程序,所述程序包括微指令序列;当由计算设备执行时,所述程序使得该计算设备被配置为执行上述实施例中的方法。
本申请实施例还提供了一种存储介质的操作方法,该操作方法应用于介质接口控制器,该操作方法包括:
获取第一介质接口命令,该第一介质接口命令指示对存储介质发起第一存储介质访问命令。
若第一介质接口命令指示对存储介质进行的第一操作为编程操作,则判断第二介质接口命令能否与第一介质接口命令构成缓冲编程操作,其中第二介质接口命令指示对存储介质发起第二存储介质访问命令,第二介质接口命令为在第一介质接口命令之后获取的介质接口命令。
若第二介质接口命令能够与第一介质接口命令构成缓冲编程操作,介质接口控制器发起第三存储介质访问命令,该第三存储介质访问命令指示存储介质进行第一缓冲编程操作。
第二介质接口命令不能与第一介质接口命令构成缓冲编程操作时,向存储介质发起第一存储介质访问命令,指示存储介质执行第一存储介质访问命令指示的操作。具体的,第二介质接口命令与第一介质接口命令不能构成缓冲编程包括以下可能的情况,例如,第一介质接口命令与第二介质接口命令中至少有一个没有指示进行编程操作;第一介质接口命令指示的编程操作和第二介质接口命令指示的编程操作指示的是不同的线程或不同的Target;第一介质接口命令与第二介质接口命令指示的平面类型或存储单元类型不相同;第一介质接口命令和第二介质接口命令之间存在其它介质接口命令,且处理该其它介质接口命令会改变页寄存器保存的数据。
相应的,对于第二介质接口命令能否与第一介质接口命令构成缓冲编程操作的判断,有以下可选的判断方式:
其一,若第二介质接口命令指示对存储介质进行的第二操作不是编程操作,则判断结果为否,即第一和第二介质接口命令不能构成缓冲编程操作。
其二,若第二介质接口命令与第一介质接口命令的平面类型相同,且第二介质接口命令与第一介质接口命令访问的存储单元类型相同,则判断结果为是。介质接口命令的平面类型有单平面类型和多平面类型两种,对于多平面类型的第一介质接口命令,需要第二介质接口命令的每一平面均与第一介质接口命令对应平面相同,才可判定两介质接口命令的平面类型相同。介质接口命令访问的存储单元类型包括SLC、MLC和TLC等类型。
其三,若获取第二介质接口命令之前,获取第一介质接口命令之后还获取了其他介质接口命令,则判断结果为否。
其四,,若获取第二介质接口命令之前,获取第一介质接口命令之后还获取了其他介质接口命令,且的其他介质接口命令会更改存储介质页寄存器时,判断结果为否。在其他介质接口命令不会更改存储介质页寄存器时,则判断结果为是。例如,若其他介质接口命令的执行不会影响存储介质的页寄存器,第二介质接口命令与第一介质接口命令的平面类型相同,且第二介质接口命令与第一介质接口命令访问的存储单元类型相同,则判断结果为是。
在判断第一和第二介质接口命令能否构成缓冲编程操作前,还需要获取到第二介质接口命令。若获取第一介质接口命令后,无法获取第二介质接口命令,当前拥有介质接口控制器的控制权的线程让出对介质接口控制器的控制权,响应于获得的介质接口控制器的控制权,再次获取第二介质接口命令。对于获取到介质接口控制器的控制权的主体(例如,线程),可以执行其他的介质接口命令,以使得微码一直处于运行状态。在判断无法获取第二介质接口命令时,一种实施方式是启动定时器(设定有定时时间)。启动定时器后的一种实施方式为,响应于获得的介质接口控制器的控制权,若定时器到时,向存储介质发起第一存储介质访问命令,以使存储介质进行第一操作。启动定时器后的第二种实施方式为,若在启动定时器后第一指定时长之内仍没有获取到第二介质接口命令,则让出对介质接口控制器的控制权。若在第一指定时长内获取到第二介质接口命令,则判断第二介质接口命令能否与第一介质接口命令构成缓冲编程操作,进而根据判断结果执行后续动作。
根据本申请的实施例,线程同Target对应。第一线程处理访问第一target的介质接口命令,第二线程处理访问第二target的介质接口命令。例如,第一介质接口命令及第二介质接口命令均访问第一target,则第一线程处理第一介质接口命令及第二介质接口命令。
对应于无法获取到第二介质接口命令的第二种实施方式,第一线程让步以让出对介质接口控制器的控制权。第二线程被调度以获得对介质接口控制器的控制权,并获取访问第二target的第三介质接口命令。对于第一线程让步的时机,包括:在第一次获取第二介质接口命令失败后,第一线程让步;或者,在无法获取第二介质接口命令时,第一线程启动第一定时器,第一线程持续获取第二介质接口命令,若在启动定时器第二指定时长之内仍没有获取到第二介质接口命令,第一线程让步以让出对介质接口控制器的控制权。在第二线程中处理至少一个介质接口命令(也可以不处理任何命令)后,第一线程被重新调度。响应于第一线程被重新调度,第一线程持续获取第二介质接口命令。其中,在第一线程被重新调度后,若第一定时器到时,则第一线程向存储介质发起第一存储介质访问命令,以使存储介质进行第一操作。
优选的,介质接口控制器配置有全局缓冲编程标识,只有在该全局缓冲编程标识处于使能状态时,才进行缓冲编程操作的判断,即才判断介质接口命令之间能否构成缓冲编程操作,以及后续相应的动作。因此,在判断第二介质接口命令能否与第一介质接口命令构成缓冲编程操作前,识别全局缓冲编程标识是否处于使能状态,若全局缓冲编程标识无效,则响应于获取第一介质接口命令,向存储介质发起第一存储介质访问命令,以指示存储介质进行第一操作。
执行上述方法的微码配置于介质接口控制器中。
图5B展示了根据本申请的实施例的处理介质接口命令的另一流程图。
图5B的实施例可由例如介质接口控制器通过执行微指令序列来实施。
介质接口控制器获取第一介质接口命令,第一介质接口命令指示对NVM芯片发起第一存储介质访问命令。判断第一介质接口命令是否指示编程操作,若是,则获取第二介质接口命令。若为否,则处理第一介质接口命令。处理第一介质接口命令例如根据第一介质接口命令指示的操作,向NVM芯片发出相应的存储介质访问命令。本实施例中介质接口命令是例如存储命令处理单元发送给介质接口控制器的命令,由介质接口控制器处理。存储介质访问命令由介质接口控制器生成并发送给NVM芯片。获取第二介质接口命令后,判断第二介质接口命令是否指示编程操作。若第二介质接口命令同样指示对NVM芯片进行编程操作,则判断第二介质接口命令能否与第一介质接口命令访问相同类型的存储单元。并在两介质接口命令访问相同类型的存储单元时,根据第一介质接口命令指示NVM芯片执行缓冲编程操作。若第二介质接口命令不是编程操作,又或者第二介质接口命令与第一介质接口命令访问的存储单元类型不同,则根据第一介质接口命令指示NVM芯片执行编程操作。可选地,在第二介质接口命令指示的是多平面的编程操作,还判断第一介质接口命令指示的多个平面和第二介质接口命令指示的多个平面是否相同。
第一介质接口命令和第二介质接口命令均存储于介质接口控制器中,以数组、队列或链表形式存储,对于两命令接收和处理顺序的设定,第二介质接口命令在第一介质接口命令之后,在一些实施例中,第二介质接口命令与第一介质接口命令相邻,或第二介质接口命令与第一介质接口命令之间不存在会更改存储介质页寄存器的介质接口命令。
可选地,在获取第二介质接口命令之前,介质接口控制器还判断是否能获取到第二介质接口命令。例如,介质接口控制器在处理第一介质接口命令时,第二介质接口命令已存储在介质接口控制器内,从而判断能够获取到第二介质接口命令。若判断结果为是(能获取到第二介质接口命令),介质接口控制器获取第二介质接口命令,并判断第二介质接口命令是否指示编程命令。若第二介质接口命令同样指示编程命令,则根据所述第二介质接口命令的内容和所述第一介质接口命令的内容,判断所述第二编程操作能否与所述第一编程操作构成缓冲编程操作。具体的,在一些实施例中,判断第二介质接口命令和第一介质接口访问命令访问的存储单元类型是否相同,若是,则判定第二介质接口命令能够与第一介质接口命令构成缓冲编程操作,在此情况下,介质接口控制器根据第一介质接口命令的内容,生成相应的存储介质访问命令指示NVM芯片进行缓冲编程操作。若第二介质接口命令指示的操作为非编程操作,又或者第二介质接口命令与第一介质接口命令访问的存储单元类型不同,则表明第二介质接口命令不能与第一介质接口命令构成缓冲编程操作,在此情况下,介质接口控制器根据第一介质接口命令的内容向NVM芯片发起第一存储介质访问命令。本实施例中,根据介质接口命令访问的物理地址的全部或部分内容识别介质接口命令访问的存储单元类型。
在一些实施例中,若判断不能获取到第二介质接口命令,让出介质接口控制器的控制权。具体的,让出介质接口控制器的控制权并不意味着介质接口控制器暂停或停止工作,介质接口控制器只是暂停处理第一介质接口命令,此时仍能够处理其它介质接口命令。
进一步可选地,若判断不能获取到第二介质接口命令,介质接口控制器还启动定时器。定时时长为预设时长,例如10ms。进一步,该定时时长可由介质接口命令配置。在一些实施例中,若判断不能获取第二介质接口命令,开始计时,在开始计时或者开始计时后的一定时间后,将当前运行的线程从所述第一线程切换为其它线程,并在之后切换回第一线程,在其它线程中,可以处理至少一个命令,也可以不处理命令(如线程繁忙),在切换回第一线程后,若仍不能获取到第二介质接口命令,判断计时是否到时,若计时未到时,则等待或再次切换到其他线程(可以与之前切换的不同),若计时到时,则向NVM芯片发起第一存储介质访问命令,以使存储介质进行第一编程操作。
可选地,响应于获得的介质接口控制器的控制权,再次判断是否能获取第二介质接口命令。例如,定时器到时,重新获得介质接口控制器的控制权,并再次判断是否能获取到第二介质接口命令,判断能否获取到第二介质接口命令的方法参见上述实施例中的描述,在此不再赘述。又如,重新获得介质接口控制器的控制权与定时器无关,只要重新获得控制权,就再次判断能否获取到第二介质接口命令。
在另一些实施例中,在重新获得介质接口控制器的控制权之后,若定时器已经到时,介质接口控制器再次获取第二介质接口命令,若没有获取到第二介质接口命令,向NVM芯片发起第一存储介质访问命令,使得NVM芯片进行第一编程操作。本实施例中,重新获得介质接口控制器的控制权可能发生在定时器到时之后,此时第二介质接口命令可能已经存储在介质接口控制器内,虽然定时器已经到时,但进行缓冲编程操作的时间仍旧短于编程操作所需的时间,因此,再次尝试获取第二介质接口命令。
在一些实施例中,若介质接口控制器判断不能获取到第二介质接口命令,则开始计时(例如启动定时器)。本实施例中的计时包括进行第一指定时长的计时和进行第二指定时长的计时。例如,第一指定时长为20ms,第二指定时长为1-3ms。若在第一指定时长之内仍没有获取到第二介质接口命令,介质接口控制器获取并执行访问其它Target的介质接口命令。本实施例中,第一介质接口命令和第二介质接口命令访问的是同一Target,介质接口控制器执行访问其他Target的介质接口命令不会影响第一介质接口命令及第二介质接口命令的执行。
进一步,在第一指定时长内,介质接口控制器按照指定时间间隔获取第二介质接口命令。例如,介质接口控制器每隔2ms去获取一次第二介质接口命令。本申请中的指定时间间隔、第一指定时长、第二指定时长和定时器的定时时长的取值可根据实际情况确定,在此不作限定。
在一些实施例中,若在第一指定时长内获取到第二介质接口命令,介质接口控制器根据所述第二介质接口命令的内容,判断第二介质接口命令是否是编程命令,并根据判断结果执行后续操作(参见本实施例前文中对判断结果及相应操作的说明)。
在本申请实施例中,控制部件配置有全局缓冲编程标识,在获取第一介质接口命令之前,介质接口控制器还确定该全局缓冲编程标识处于使能状态。例如,全局缓冲编程标识为高电平或取值为1则处于确定其处于使能状态,对应地,全局缓冲编程标识为低电平或取值为0则处于确定其处于使能状态。在全局缓冲编程标识处于禁用状态时,介质接口控制器全程不会判断第二介质接口命令与第一接口命令的关系,在获取到第一介质接口命令后,介质接口控制器只会对存储介质发起第一编程操作。
图5C展示了根据本申请的实施例的处理介质接口命令的又一流程图。
介质接口控制器配置微指令序列,图5C的实施例由介质接口控制器通过执行微指令序列来实施。
介质接口控制器获取第一介质接口命令,第一介质接口命令指示对NVM芯片发起第一存储介质访问命令。判断第一介质接口命令是否指示编程操作,若是,则获取第二介质接口命令。若为否,则处理第一介质接口命令,处理第一介质接口命令例如根据第一介质接口命令指示的操作,向NVM芯片发出相应的存储介质访问命令。获取第二介质接口命令后,可选地,可以判断第二介质接口命令是否影响页寄存器,所谓的是否影响页寄存器例如是否会对页寄存器中存储的数据造成影响。若第二介质接口命令不影响页寄存器,则表明第二介质接口命令不会向NVM芯片写入数据,则无需进行后续的逻辑判断,直接处理该第二介质接口命令。在处理完当前的第二介质接口命令后,还可继续尝试获取下一个第二介质接口命令。若判断第二介质接口命令能够影响页寄存器,则继续判断第二介质接口命令是否指示编程操作。若第二介质接口命令指示对NVM芯片进行编程操作,则判断第二介质接口命令能否与第一介质接口命令访问相同类型的存储单元。在两个介质接口命令访问相同类型的存储单元时,根据第一介质接口命令指示NVM芯片执行缓冲编程操作。若第二介质接口命令不是编程操作,又或者第二介质接口命令与第一介质接口命令访问的存储单元类型不同,则根据第一介质接口命令指示NVM芯片执行编程操作。
实施例三
图6A展示了根据本申请实施例提供的介质接口控制器的结构框图。
介质接口控制器包括微指令存储器、微指令执行单元、信号驱动器、调度器、状态寄存器。将由微指令执行单元执行的微指令序列连同其状态数据称为线程调度器与状态寄存器、微指令存储器以及微指令执行单元耦合,微指令执行单元与信号驱动器耦合。本实施例中线程同例如NVM芯片的Target一一对应。每个线程用于处理访问一个Target的存储介质访问命令。状态寄存器存储一个或多个线程的状态数据。
正在运行的线程拥有介质接口控制器的控制权。线程通过执行让步(yield)微指令使自身让步。线程让步时,其状态数据(比如上述实施例中的标记)被记录在状态寄存器。以及作为响应,如图6B所示,调度器从一个或多个线程中选择线程之一由微指令执行单元执行(将这一过程称为调度,或调度线程)。被调度的线程从状态寄存器获取其状态数据。例如,根据要处理访问某Target的介质接口命令,调度器调度同该Target对应的线程,从而该线程在执行中处理该介质接口命令。依然作为举例,线程A让步时,其正在处理介质接口命令C,但尚未处理完成。调度器再次调度线程A时,依据获取的状态信息,线程A得以从发生让步的位置继续处理介质接口命令C。
图7A展示了根据本申请实施例提供的处理介质接口命令的流程图。
获取第一介质接口命令后,判断该第一介质接口命令是否可用于生成缓冲编程操作,例如判断第一介质接口命令是否指示编程操作,因为仅对于指示编程操作的介质接口命令,后续才可能同其他指示编程操作的介质接口命令协同生成缓冲编程操作。若判断结果为是,尝试获取第二介质接口命令(740)。若判断结果为否,处理第一介质接口命令,例如根据第一介质接口命令生成第一存储介质访问命令。
在尝试获取第二介质接口命令时(740),若获取到第二介质接口命令,则判断第二介质接口命令与第一介质接口命令指示的操作能够构成缓冲编程操作(750)。若未获取到第二介质接口命令,可选地,当前运行的线程让步,并在该线程重新获取到介质接口控制器的控制权后,再次判断是否获取到第二介质接口命令。
在步骤740,可选地,若未获取到第二介质接口命令,还识别定时器是否到时(745)。可以理解地,在处理流程第一次进入步骤740且未获取到第二介质接口命令时启动定时器(此时定时器显然不会到时),而在接下来进入步骤740且未获取到第二介质接口命令时识别定时器是否到时(745)。
在步骤745,若定时器到时,则不再等待获取第二介质接口命令,而是处理第一介质接口命令。在步骤745,若定时器未到时,则当前线程让步,并且在当前线程再次被执行时进入步骤740继续处理。
在步骤750,若第二介质接口命令与第一介质接口命令指示的操作能构成缓冲编程操作,则根据第一介质接口命令指示存储介质执行缓冲编程操作;若第二介质接口命令与第一介质接口命令指示的操作不能构成缓冲编程操作(750),则根据第一介质接口命令指示存储介质执行编程操作。
如图7B所示,本实施例公开了处理介质接口命令的一种实施方式:
介质接口控制器接收到存储命令处理单元(也参看图2)下发的第一介质接口命令后将其解析,判断到所指示的操作是否是编程操作后,在为是时进入微码中针对编程操作的执行流程,在为否时进入其他流程。
判断全局缓冲编程标识是否处于使能状态。在处于禁用状态时,则执行针对非缓冲编程的微指令序列。
全局缓冲编程标识向介质接口控制器指示是否实施根据本申请的实施例提供的方法,来根据指示编程操作的介质接口命令生成指示缓冲编程操作的存储介质访问命令。由例如存储命令处理单元来设置或清除全局缓冲编程标识。若全局缓冲编程标识被清除,介质接口控制器不识别是否可根据指示编程操作的介质接口命令生成指示缓冲编程操作的存储介质访问命令,而是根据介质接口命令本身的语义直接生成对应的存储介质访问命令。以及可选地,作为替代,存储命令处理单元在介质接口命令中指示编程操作或缓冲编程操作。
若全局缓冲编程标识未被使能,判断第一介质接口命令是否指示单平面编程,若是,则根据第一介质接口命令指示NVM芯片实施单平面编程,否则,继续判断第一介质接口命令是否指示多平面编程的最后平面。若第一介质接口命令指示多平面编程的最后平面,则根据第一介质接口命令实施多平面的最后平面编程,否则,根据第一介质接口命令实施多平面编程(非最后平面编程)。
若全局缓冲编程标识被使能,判断第一介质接口命令指示的是否是单平面类型;及判断第一介质接口命令指示的是否是多平面类型。若第一介质接口命令指示单平面编程,则首先判断第一介质接口命令指示的存储单元类型是否是SLC类型(或者TLC类型),根据判断结果,进入相应的SLC单平面编程和TLC单平面编程处理分支。以进入SLC类型分支为例(TLC类型分支同理),判断能否获取到第二介质接口命令,若获取到第二介质接口命令,则判断第二介质接口命令是否指示编程操作,若是,则继续判断第二介质接口命令是否指示单平面编程,若第二介质接口命令指示单平面编程,则继续判断第二介质接口命令是否指示SLC类型(TLC单平面编程分支此处为判断第二介质接口命令是否指示TLC类型),若第二介质接口命令指示SLC类型(或在TLC类型分支中第二介质接口命令指示TLC类型),则根据第一介质接口命令实施缓冲编程。若第二介质接口命令指示非编程操作,或者第二介质接口命令指示非单平面编程,或者第二介质接口命令指示非SLC类型(或在TLC类型分支中第二介质接口命令指示非TLC类型),则根据第一介质接口命令实施非缓冲编程。
若未获取到第二介质接口命令,在第一次检查未获取到第二介质接口命令时开始计时,以设定等待时间,标记此时的处理分支并切换出当前线程到其他线程。在非第一次检查未获取到第二介质接口命令时,识别等待时间是否到时。若等待时间未到时,则标记此时的处理分支并切换出当前线程到其他线程。
若从其他线程切换回来,根据之前的标记回到对应分支上,再去判断是否能获取到第二介质接口命令,直到获取到第二介质接口命令,并执行后续判断,或者在最大等待时间后仍未获取到第二介质接口命令时,根据第一介质接口命令发起单平面非缓冲编程命令。
若第一介质接口命令指示非单平面编码,则首先判断第一介质接口命令是否指示多平面编程的最后平面,若否,则指示存储介质执行多平面编程,若第一介质接口命令指示多平面编程的最后平面,则执行以下流程:首先判断第一介质接口命令指示的存储单元类型是否是SLC类型(或者TLC类型),根据判断结果,进入相应的SLC多平面编程和TLC多平面编程分支。以进入SLC类型分支为例(TLC类型分支同理),判断能否获取到第二介质接口命令,若获取到第二介质接口命令,则判断第二介质接口命令是否指示编程操作,若是,则继续判断第二介质接口命令是否指示单平面编程,若第二介质接口命令指示多平面编程,则继续判断第二介质接口命令是否指示SLC类型(TLC类型分支此处为判断第二介质接口命令是否指示TLC类型),若第二介质接口命令指示SLC类型(或在TLC类型分支中第二介质接口命令指示TLC类型),则根据第一介质接口命令实施缓冲编程。若第二介质接口命令指示非编程操作,或者第二介质接口命令指示非多平面编程,或者第二介质接口命令指示非SLC类型(或在TLC类型分支中第二介质接口命令指示非TLC类型),则根据第一介质接口命令实施非缓冲编程。
若未获取到第二介质接口命令,在第一次检查未获取到第二介质接口命令时开始计时,以设定等待时间,标记此时的处理分支并切换出当前线程到其他线程。在非第一次检查未获取到第二介质接口命令时,识别等待时间是否到时。若等待时间未到时,则标记此时的处理分支并切换出当前线程到其他线程。
若从其他线程切换回来,根据之前的标记回到对应分支上,再去判断是否能获取到第二介质接口命令,直到获取到第二介质接口命令,并执行后续判断,或者在最大等待时间后仍未获取到第二介质接口命令时,则根据第一介质接口命令发起多平面非缓冲编程命令。
本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。
Claims (10)
1.一种存储介质的编程方法,其特征在于,所述编程方法应用于介质接口控制器,所述编程方法包括:
获取第一介质接口命令,所述第一介质接口命令指示对存储介质发起第一存储介质访问命令,所述第一存储介质访问命令指示存储介质进行第一编程操作;
响应于获取到所述第一介质接口命令,判断第二介质接口命令指示的操作能否与所述第一编程操作构成缓冲编程操作,包括判断所述第二介质接口命令与所述第一介质接口命令的平面类型是否相同,及判断所述第二介质接口命令与所述第一介质接口命令的存储单元类型是否相同;所述第二介质接口命令指示对存储介质发起第二存储介质访问命令,所述第二存储介质访问命令指示存储介质进行第二编程操作,所述第二介质接口命令为在所述第一介质接口命令之后执行的介质接口命令;
若判断结果为是,向存储介质发起第三存储介质访问命令,所述第三存储介质访问命令指示存储介质进行第一缓冲编程操作。
2.如权利要求1所述的存储介质的编程方法,其特征在于,在判断所述第二介质接口命令指示的操作能否与所述第一编程操作构成缓冲编程操作的结果为否时,向存储介质发起所述第一存储介质访问命令,以使存储介质进行第一编程操作。
3.如权利要求1或2所述的存储介质的编程方法,其特征在于,所述第二介质接口命令与所述第一介质接口命令相邻,或所述第二介质接口命令与所述第一介质接口命令之间不存在会更改存储介质页寄存器的介质接口命令。
4.如权利要求1所述的存储介质的编程方法,其特征在于,所述判断所述第二介质接口命令指示的操作能否与所述第一编程操作构成缓冲编程操作,包括:
判断是否能获取到所述第二介质接口命令;
若判断结果为是,获取所述第二介质接口命令;
根据所述第二介质接口命令的内容和所述第一介质接口命令的内容,判断所述第二编程操作能否与所述第一编程操作构成缓冲编程操作。
5.如权利要求4所述的存储介质的编程方法,其特征在于,若判断是否能获取到所述第二介质接口命令的判断结果为否,让出所述介质接口控制器的控制权。
6.如权利要求5所述的存储介质的编程方法,其特征在于,若判断是否能获取到所述第二介质接口命令的判断结果为否,启动定时器。
7.如权利要求5所述的存储介质的编程方法,其特征在于,响应于获得的所述介质接口控制器的控制权,再次判断是否能获取所述第二介质接口命令。
8.如权利要求6所述的存储介质的编程方法,其特征在于,响应于获得的所述介质接口控制器的控制权,若所述定时器已到时,向存储介质发起所述第一存储介质访问命令,以使存储介质进行第一编程操作。
9.如权利要求1-8中任一项所述的存储介质的编程方法,其特征在于,控制部件配置有全局缓冲编程标识,所述获取所述第一介质接口命令之前,所述存储介质的编程方法还包括:
确定所述全局缓冲编程标识处于使能状态。
10.一种计算设备可读介质,其特征在于,在该计算设备可读存储介质上存储了程序,所述程序包括微指令序列;当由计算设备执行时,所述程序使得该计算设备被配置为执行根据权利要求1-9之一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011046892.0A CN114328304B (zh) | 2020-09-29 | 2020-09-29 | 存储介质的操作方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011046892.0A CN114328304B (zh) | 2020-09-29 | 2020-09-29 | 存储介质的操作方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114328304A CN114328304A (zh) | 2022-04-12 |
CN114328304B true CN114328304B (zh) | 2023-11-14 |
Family
ID=81010656
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011046892.0A Active CN114328304B (zh) | 2020-09-29 | 2020-09-29 | 存储介质的操作方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114328304B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050079534A (ko) * | 2004-02-06 | 2005-08-10 | 주식회사 하이닉스반도체 | 캐쉬 프로그램 장치 및 그 방법 |
CN103093812A (zh) * | 2011-11-04 | 2013-05-08 | 爱思开海力士有限公司 | 半导体存储装置及其连续编程控制电路和编程方法 |
CN110865948A (zh) * | 2018-08-27 | 2020-03-06 | 爱思开海力士有限公司 | 存储系统及其操作方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050138267A1 (en) * | 2003-12-23 | 2005-06-23 | Bains Kuljit S. | Integral memory buffer and serial presence detect capability for fully-buffered memory modules |
US8300478B2 (en) * | 2007-09-19 | 2012-10-30 | Apple Inc. | Reducing distortion using joint storage |
US9632715B2 (en) * | 2015-08-10 | 2017-04-25 | International Business Machines Corporation | Back-up and restoration of data between volatile and flash memory |
KR102615659B1 (ko) * | 2016-07-08 | 2023-12-20 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
US20190324693A1 (en) * | 2018-04-19 | 2019-10-24 | SK Hynix Inc. | Storage device and operating method thereof |
KR102532084B1 (ko) * | 2018-07-17 | 2023-05-15 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템 |
-
2020
- 2020-09-29 CN CN202011046892.0A patent/CN114328304B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050079534A (ko) * | 2004-02-06 | 2005-08-10 | 주식회사 하이닉스반도체 | 캐쉬 프로그램 장치 및 그 방법 |
CN103093812A (zh) * | 2011-11-04 | 2013-05-08 | 爱思开海力士有限公司 | 半导体存储装置及其连续编程控制电路和编程方法 |
CN110865948A (zh) * | 2018-08-27 | 2020-03-06 | 爱思开海力士有限公司 | 存储系统及其操作方法 |
Non-Patent Citations (2)
Title |
---|
"NAND Flash Memory Organization and Operations";Novotny R等;《Journal of Information Technology & Software Engineering》;全文 * |
"基于SOPC的固态硬盘控制器的系统设计";吴尚儒;《中国优秀硕士学位论文全文数据库》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114328304A (zh) | 2022-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11494122B2 (en) | Command queuing | |
US10452532B2 (en) | Directed sanitization of memory | |
US8966231B2 (en) | Modifying commands | |
JP6224253B2 (ja) | フラッシュメモリ内に記憶されたデータの推測的プリフェッチ | |
KR102618699B1 (ko) | 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템 | |
CN110678852B (zh) | 控制对缓冲器的存储器操作的设备和方法 | |
US9971546B2 (en) | Methods for scheduling read and write commands and apparatuses using the same | |
CN108572932B (zh) | 多平面nvm命令融合方法与装置 | |
EP3834072B1 (en) | Controller command scheduling in a memory system to increase command bus utilization | |
CN108628759B (zh) | 乱序执行nvm命令的方法与装置 | |
US11366770B2 (en) | Storage controller managing completion timing, and operating method thereof | |
CN113253910B (zh) | Nand丢弃的命令检测和恢复 | |
CN114253461A (zh) | 混合通道存储设备 | |
CN114253462A (zh) | 提供混合通道存储设备的方法 | |
CN114328304B (zh) | 存储介质的操作方法和装置 | |
CN213338708U (zh) | 一种控制部件及存储设备 | |
TWI747660B (zh) | 多閃存晶片的資料讀取方法及裝置以及電腦程式產品 | |
CN108536475B (zh) | 完整编程命令处理方法与装置 | |
CN108345428B (zh) | 控制密集型控制系统及其方法 | |
CN109144907B (zh) | 实现快速读取的方法及介质接口控制器 | |
CN115480706A (zh) | 一种执行指令的方法及介质接口控制器 | |
WO2023141992A1 (zh) | 存储器、存储器的控制方法及存储器系统 | |
TWI712052B (zh) | 記憶體管理方法、儲存控制器與儲存裝置 | |
CN111736779B (zh) | Nvm接口命令的优化执行方法与装置 | |
CN109508205B (zh) | 支持原位操作的nvm芯片、其操作方法以及固态存储设备 |
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 |