存储控制芯片、固态硬盘和相关方法与流程

未命名 07-12 阅读:77 评论:0


1.本公开实施例涉及芯片技术领域,尤其涉及一种存储控制芯片、固态硬盘和相关方法。


背景技术:

2.分区命名空间(zoned namespace,zns)固态硬盘是一种新形态的固态硬盘(solid state disk或solid state drive,ssd),其内部存储区域被划分为多个分区(zone),分区包括多个存储单元。在向分区内存储数据时,写入的数据在分区内部是顺序摆放的,即分区需要按顺序写入,但分区可以随机读取,基于该特性允许zns固态硬盘改善其内部数据放置,从而通过更高的写吞吐量、更低的时延和更大的容量获得更高的性能。
3.当主机向zns固态硬盘下发过多的写入指令、或者zns固态硬盘处理写入指令的速度较慢而导致写入指令超时后,主机会下发取消指令(abort)来取消相应的写入指令,这将导致分区写入顺序被破坏,引起数据一致性风险。针对上述问题,目前的处理方式是zns固态硬盘不处理接收到的取消指令,等待主机下发复位指令(reset)来复位zns固态硬盘的控制器。
4.然而,当主机下发复位指令将zns固态硬盘的控制器复位后,控制器中等待被处理的各写入指令均会被取消,导致zns固态硬盘的读写速度降低。


技术实现要素:

5.有鉴于此,本公开实施例提供一种存储控制芯片、固态硬盘和相关方法,以至少解决或缓解上述问题。
6.根据本公开实施例的第一方面,提供了一种存储控制芯片,包括:接收单元,用于接收主机下发的第一写入指令,及接收所述主机针对所述第一写入指令发送的取消指令,其中,所述第一写入指令用于指示将相对应的待存储数据写入分区命名空间固态硬盘包括的第一分区;处理单元,用于在所述接收单元接收到所述取消指令后,停止将所述第一写入指令对应的待存储数据写入所述第一分区,并向所述主机发送第一反馈信息,以使所述主机将所述第一写入指令对应的待存储数据、及所述第一写入指令的至少部分后序写入指令对应的待存储数据,写入所述分区命名空间固态硬盘包括的第二分区。
7.根据本公开实施例的第二方面,提供了一种固态硬盘,包括:上述第一方面所述的存储控制芯片;至少一个闪存芯片,所述闪存芯片包括多个分区,所述分区包括多个存储单元。
8.根据本公开实施例的第三方面,提供了一种数据存储方法,应用于分区命名空间固态硬盘,所述方法包括:接收主机下发的第一写入指令,其中,所述第一写入指令用于指示将相对应的待存储数据写入分区命名空间固态硬盘包括的第一分区;若接收到所述主机针对所述第一写入指令发送的取消指令,则停止将所述第一写入指令对应的待存储数据写入所述第一分区,并向所述主机发送第一反馈信息,以使所述主机将所述第一写入指令对
应的待存储数据、及所述第一写入指令的至少部分后序写入指令对应的待存储数据,写入所述分区命名空间固态硬盘包括的第二分区。
9.根据本公开实施例的第四方面,提供了一种数据存储方法,应用于主机,所述方法包括:向分区命名空间固态硬盘发送第一写入指令,其中,所述第一写入指令用于指示将相对应的待存储数据写入所述分区命名空间固态硬盘包括的第一分区;响应于所述第一写入指令执行超时,向所述分区命名空间固态硬盘发送针对所述第一写入指令的取消指令;接收来自所述分区命名空间固态硬盘的第一反馈信息,其中,所述第一反馈信息指示所述第一写入指令对应的待存储数据未成功写入所述第一分区;根据所述第一反馈信息,将所述第一写入指令对应的待存储数据、及所述第一写入指令的至少部分后序写入指令对应的待存储数据,写入所述分区命名空间固态硬盘包括的第二分区。
10.根据本公开实施例提供的数据存储方案,如果接收单元在接收到第一写入指令之后,接收到针对第一写入指令的中取消指令,说明第一写入指令无法成功在第一分区内写入数据,所以处理单元停止将第一写入指令对应的待存储数据写入第一分区,并向主机发送第一反馈信息,通知主机第一写入指令对应的待存储数据没有被成功写入,进而主机可以开启与第一分区不同的第二分区,将第一写入指令对应的待存储数据、及第一写入指令的后序写入指令对应的待存储数据写入第二分区,避免主机在读取数据时发生数据错误。可见,当一个待存储数据未能成功写入分区时,该待存储数据之后的待存储数据也不写入该分区,避免主机读取出错误的数据,处理单元向主机发送第一反馈信息,使主机根据第一反馈信息开启新的分区,将没有写入成功的数据写入新的分区,保证了zns固态硬盘具有较快的读写速度。
附图说明
11.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
12.图1是本公开一个实施例所应用数据存储系统的示意图;
13.图2是本公开一个实施例的数据存储过程的示意图;
14.图3是本公开一个实施例的数据读取过程的示意图;
15.图4是本公开另一个实施例的数据存储过程的示意图;
16.图5是本公开一个实施例的存储控制芯片的示意图;
17.图6是本公开另一个实施例的存储控制芯片的示意图;
18.图7是本公开一个实施例的分区状态表的示意图;
19.图8是本公开一个实施例的数据存储方法的流程图;
20.图9是本公开另一个实施例的数据存储方法的流程图。
具体实施方式
21.以下基于实施例对本公开进行描述,但是本公开并不仅仅限于这些实施例。在下文对本公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有
这些细节部分的描述也可以完全理解本公开。为了避免混淆本公开的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
22.首先,对本公开实施例进行描述的过程中出现的部分名词或术语适用于如下解释。
23.与非型闪存:与非型闪存(nand flash memory)又被称为nand闪存,是一种非易失闪存。nand闪存利用穿隧注入写入及穿隧释放擦除,地址线和数据线复用。
24.固态硬盘:固态硬盘(solid state disk或solid state drive,ssd)又被称为固态驱动器,是用固态电子存储芯片阵列制成的硬盘。本公开实施例中的固态硬盘是指由nand闪存芯片组成的固态硬盘。
25.分区命名空间固态硬盘:分区命名空间(zoned namespace,zns)固态硬盘是一种新形态的固态硬盘,其内部存储区域被划分为多个分区(zone),分区包括一个或多个存储单元。在向分区中写入数据时,写入的数据在分区内部是顺序摆放的,即分区需要按顺序写入,但分区可以随机读取。
26.存储单元:存储单元是zns固态硬盘中组成分区(zone)的单位,是主机向zns固态硬盘中写入数据的单元。同一分区中不同的存储单元可以具有相同的容量,比如单个存储单元的容量为4kb。
27.存储控制芯片:存储控制芯片即为sdd控制器,也被称为主控芯片或主控,是固态硬盘的关键组件之一,由执行代码的嵌入式处理器与若干硬件加速模块组成。
28.本公开的应用环境
29.本公开实施例提出了一种向zns固态硬盘存储数据的方案。整个数据存储方案相对较为通用,可以用于包括zns固态硬盘的各种硬件设备,比如,用于数据中心、服务器、个人计算机、物联网(internet of things,iot)设备、嵌入式设备等。数据存储方案与执行该方案的计算装置部署的硬件无关。
30.固态硬盘
31.图1示出一个固态硬盘100的示意性框图。固态硬盘(solid state disk或solid state drive,ssd)又称为固态驱动器,是用固态电子存储芯片阵列制成的硬盘。根据存储介质的不同,固态硬盘可以分为基于闪存(flash)的固态硬盘和基于动态随机存取存储器(dynamic random access memory,dram)的固态硬盘。本公开实施例中的固态硬盘100是指基于nand闪存的固态硬盘。
32.固态硬盘相对于传统的机械硬盘有诸多优势,比如对于存储数据具有更强的安全性。例如,在使用过程中晃动固态硬盘也无需担心损坏存储的数据,在使用过程中突然断电也不会造成固态硬盘中的数据丢失。基于此,固态硬盘广泛应用于各种复杂的工作环境,比如高可用的服务器,同时固态硬盘也是个人用户理想的存储设备。
33.本公开实施例中的固态硬盘100是指zns固态硬盘。如图1所示,固态硬盘100可以包括多个闪存芯片10,闪存芯片10可以包括多个分区(zone)11,分区11可以包括多个存储单元12,固态硬盘100中的数据存储在闪存芯片10中的存储单元12中。作为一种示例,如图1所示,固态硬盘100包括3个闪存芯片10,但应当理解,闪存芯片10的数量不应以此为限。
34.固态硬盘100中除了用于存储数据的闪存芯片10之外,还可以包括存储控制芯片20。存储控制芯片20用于控制固态硬盘的读写操作。存储控制芯片20在向闪存芯片10中存
储数据时,从闪存芯片10中确定用于存储数据的一个或多个分区11,然后按顺序将数据写入分区11包括的存储单元12。存储控制芯片20在从闪存芯片10中读取数据时,从闪存芯片10中确定所需读取数据所在的分区11,然后从所确定出的分区11中读取所需数据,在读取数据时存储控制芯片20可以对分区11中的存储单元12进行随机读取,而无需按序对存储单元12进行读取。
35.主机200上部署有一个或多个应用程序201,作为一种示例,如图1所示,主机200上部署有应用程序1、应用程序2和应用程序3,但应当理解,应用程序201的数量不应以此为限。应用程序201可以向存储控制芯片20发送写入指令或读取指令,写入指令携带了用于存储数据的存储单元12的地址信息,读取指令携带了存储有待读取数据的存储单元12的地址信息。存储控制芯片20在接收到写入指令后,根据写入指令携带的地址信息,将待存储数据写入相应的一个或多个存储单元12中,并向应用程序201发送用于指示数据存储成功的指示信息。存储控制芯片20在接收到读取指令后,根据读取指令携带的地址信息,从相应的一个或多个存储单元12中读取所需数据,并将读取到的数据发送给相应的应用程序201。
36.图2是本公开一个实施例的数据存储过程的示意图。如图2所示,存储控制芯片20在接收到应用程序201发送的写入指令后,对写入指令进行解析获得数据编号,然后从分区11中确定与数据编号相对应的存储单元编号,数据编号与存储单元编号一一对应,然后将待存储数据写入所确定出存储单元编号所指示的存储单元。比如,对写入指令进行解析获得数据编号0,然后确定与数据编号0相对应的存储单元编号0,然后将待存储数据写入存储单元编号0所指示的存储单元。
37.应理解,在向分区11写入数据时,需要按顺序向分区11中的各存储单元12写入数据。如图2所示,在向存储单元编号i-1所指示的存储单元写入数据后,才能向存储单元编号i所指示的存储单元写入数据,其中,i为大于或等于1且小于或等于n的正整数,n为大于或等于6的正整数。
38.图3是本公开一个实施例的数据读取过程的示意图。如图3所示,存储控制芯片20在接收到应用程序201发送的读取指令后,写读取指令进行解析获得数据编号,然后从分区11中确定与数据编号相对应的存储单元编号,然后从所确定出的存储单元编号所指示的存储单元中读取数据,并将读取的数据返回给应用程序201。比如,对读取指令进行解析获得数据编号0,然后确定与数据编号0对应的存储单元编号0,然后从存储单元编号0所指示的存储单元中读取数据,并将读取到的数据返回给应用程序201。
39.应理解,在从分区11中读取数据时,可以对分区11中的存储单元12进行随机读取,而无需按顺序对分区11中的存储单元12进行读取。比如,根据读取指令包括的数据编号,可以从任一存储单元编号所指示的存储单元中读取数据。
40.当主机200向存储控制芯片20下发过多的写入指令、或者zns固态硬盘处理写入指令的速度较慢,会导致写入指令超时。如果写入指令发生超时,存储控制芯片20无法在预设等待时间内向主机200发送用于指示数据存储成功的指示信息,此时主机200会向存储控制芯片20发送取消指令(abort),以将该超时的写入指令取消,不再针对该写入指令向分区11中写入数据,但由于分区11要求顺序写入,后续写入指令会将数据写入错误的位置,导致读取数据时读出错误的数据。
41.例如,如图4所示,携带数据编号3的写入指令发生超时,主机200下发取消指令将
该写入指令取消,所以该写入指令没有向存储单元编号3所指示的存储单元写入数据,这就会导致携带数据编号4的写入指令将数据写入存储单元编号3所指示的存储单元,以此类推,后续的各写入指令所写入的数据均会向前错位。如果主机200发送包括数据编号4的读取指令,存储控制芯片20会错误的将数据编号5所对应的数据传回主机200,造成数据错位。
42.在相关技术中,为了解决上述数据错位的问题,由于写入指令发生超时而接收到取消指令后,存储控制芯片20忽视该取消指令,即不处理该取消指令,等待主机200下发复位指令(reset)来复位存储控制芯片20,这将使该写入指令后续的各写入指令均被取消,产生较大的影响,导致zns固态硬盘的读写速度降低。
43.比如,携带数据编号3的写入指令发生超时,主机200下发取消指令后,存储控制芯片20执行该取消指令,等待主机200下发复位指令,复位指令会对存储控制芯片20进行复位,包括数据编号3至数据编号n的各写入指令会被取消,对zns固态硬盘造成较大的影响。
44.在本公开实施例中,为解决相关技术中为避免读取数据错误,而等到主机200下发复位指令,但会对zns固态硬盘造成较大影响的问题,存储控制芯片20在接收到取消指令后,针对发生超时的写入指令及后序接收到的各写入指令向主机200发送错误信息,告知主机200这些数据没有被成功写入,主机200在接收到错误信息后,可以重新开启一个分区进行数据写入,从而在避免读取数据错误的同时,减小了对zns固态硬盘造成的影响。
45.存储控制芯片
46.图5示出本公开一个实施例的存储控制芯片20的示意图,如图5所示,存储控制芯片20包括接收单元21和处理单元22。接收单元21可以接收主机下发的第一写入指令,第一写入指令用于指示向zns固态硬盘包括的第一分区写入相对应的待存储数据。如果接收单元21在接收到第一写入指令之后,接收到针对第一写入指令的取消指令,则处理单元22停止将第一写入指令对应的待存储数据写入第一分区,并向主机发送第一反馈信息,使主机根据第一反馈信息将第一写入指令对应的待存储数据、及第一写入指令的后序写入指令对应的待存储数据,写入zns固态硬盘包括的第二分区,第一分区与第二分区为不同的分区。
47.如果接收单元21接收到针对第一写入指令的取消指令,说明第一写入指令发生超时,第一写入指令无法成功向存储单元中写入数据,处理单元22会向主机发生针对第一写入指令的第一反馈信息,通知主机第一写入指令所要写入的待存储数据没有成功写入,进而主机可以开启与第一分区不同的第二分区,将第一写入指令所要写入的待存储数据写入第二分区。
48.由于主机会连续向存储控制芯片20下发写入指令,所以在主机接收到处理单元22发送的第一反馈信息时,主机可能已经将第一写入指令的部分后序写入指令下发给存储控制芯片20,对于已经下发的写入指令主机需要等待指令执行反馈,所以主机在接收到第一反馈信息后,会将第一写入指令对应的待存储数据、及第一写入指令后序且未下发给存储控制芯片20的写入指令对应的待存储数据写入第二分区,而对于第一写入指令后序且已经下发给存储控制芯片20的写入指令,会在接收到指令执行反馈后在将相对应的待存储数据写入第二分区。
49.比如,如图2所示,第一写入指令指示向存储单元编号为3的存储单元写入数据,在接收单元21接收到针对第一写入指令的取消指令后,处理单元22向主机发送第一反馈信息,在主机接收到第一反馈信息时,已经将包括数据编号4的写入指令4、包括数据编号5的
写入指令5和包括数据编号6的写入指令6下发给存储控制芯片20,则主机在接收到第一反馈信息后,会将数据编号3及数据编号7~n对应的待存储数据写入第二分区。对于写入指令4~6则需要等待存储控制芯片20的执行反馈,在接收到存储失败的反馈后,再将写入指令4~6对应的待存储数据写入第二分区。
50.如果在主机接收到处理单元22发送的第一反馈信息时,主机已经将第一写入指令的部分后序写入指令下发给存储控制芯片20,会导致待存储数据写入第二分区的顺序发生改变,但主机会通过一层地址映射确定各待存储数据所在的存储单元,进而主机会根据该层映射在从第二分区读取数据,从而不会造成数据读取错误。
51.应理解,如果主机在下发第一写入指令后还未下发第一写入指令的后序写入指令,便接收到第一反馈信息,则主机会根据第一反馈信息,将第一写入指令对应的待存储数据、及第一写入指令的各后序写入指令对应的待存储数据写入第二分区。
52.在第一写入指令无法成功向第一分区写入待存储数据后,如果第一写入指令的后序写入指令向第一分区写入待存储数据,会导致第一写入指令的后序写入指令将待存储数据写入错误的存储单元,后续主机从第一分区读取数据时会造成数据错误。为此,在接收单元21接收到针对第一写入指令的取消指令后,处理单元22不将第一写入指令的后序写入指令对应的待存储数据写入第一分区,即不再执行第一写入指令的后序写入指令,避免将第一写入指令的后序写入指令对应的待存储数据写入错误的存储单元,进而避免主机读取出错误的数据。
53.应理解,主机要将多个数据存储到一个分区时,如果存储某一数据的写入指令发生超时,则该数据及其之后的数据将通过另外的一个或多个分区进行存储,所以原本要存储在一个分区的多个数据,会被存储到多个分区中,主机在读取数据时,从相应分区中读取所需的数据。例如,如图4所示,主机需要将数据编号为0至n的n+1个数据存储到第一分区,用于存储数据编号为3的数据的存储指令发生超时后,数据编号为0至2的3个数据被存储到第一分区,数据编号为3至n的n-2个数据被存储到第二分区。如果在向第二分区存储数据编号为3至n的数据时又发生写入指令超时,主机还需要第三分区、第四分区等。
54.需要说明的是,如无特别声明,本公开实施例涉及到的主机可以是前述实施例中的主机200,本公开实施例涉及到的闪存芯片可以是前述实施例中的闪存芯片10,本公开实施例涉及到的分区可以是前述实施例中的分区11,本公开实施例涉及到的存储单元可以是前述实施例中的存储单元12。
55.在本公开实施例中,如果接收单元21在接收到第一写入指令之后,接收到针对第一写入指令的中取消指令,说明第一写入指令无法成功在第一分区内写入数据,所以处理单元22停止将第一写入指令对应的待存储数据写入第一分区,并向主机发送第一反馈信息,通知主机第一写入指令对应的待存储数据没有被成功写入,进而主机可以开启与第一分区不同的第二分区,将第一写入指令对应的待存储数据、及第一写入指令的后序写入指令对应的待存储数据写入第二分区,避免主机在读取数据时发生数据错误。可见,当一个待存储数据未能成功写入分区时,该待存储数据之后的待存储数据也不写入该分区,避免主机读取出错误的数据,处理单元22向主机发送第一反馈信息,使主机根据第一反馈信息开启新的分区,将没有写入成功的数据写入新的分区,保证了zns固态硬盘具有较快的读写速度。
56.在一种可能的实现方式中,如果接收单元21未接收到针对第一写入指令的取消指令,则处理单元22会执行第一写入指令,将第一写入指令对应的待存储数据写入第一分区。
57.如果接收单元21没有接收到针对第一写入指令的取消指令,说明第一写入指令未发生超时,执行第一写入指令将相对应的待存储数据写入第一分区时,会将待存储数据写入正确的位置,因此处理单元22执行第一写入指令,将第一写入指令对应的待存储数据写入第一分区中相对应的存储单元。
58.在本公开实施例中,如果接收单元21没有接收到针对第一写入指令的取消指令,说明执行第一写入指令时会将相对应的待存储数据写入正确的位置,因此处理单元22正常执行第一写入指令,将第一写入指令对应的待存储数据写入第一分区,在保证主机读取数据正确性的前提下,提高数据存储的效率,并可以节省zns固态硬盘的存储空间。
59.图6是本公开另一个实施例的存储控制芯片的内部结构图。如图8所示,存储控制芯片20在包括接收单元21和处理单元22的基础上,还包括维护单元23。
60.在接收单元21接收到针对第一写入指令的取消指令后,维护单元23可以将分区状态表中第一分区对应的状态值由第一状态值更新第二状态值。在接收单元21接收到第一写入指令后序的第二写入指令时,处理单元22可以从分区状态表中读取第一分区对应的状态值,并确定第一分区对应的状态值是否等于第二状态值,如果第一分区对应的状态值等于第二状态值,则不将第二写入指令对应的待存储数据写入第一分区,并向主机发送第二反馈信息,以使主机根据第二反馈信息将第二写入指令对应的待存储数据写入第二分区。
61.zns固态硬盘包括多个闪存芯片,闪存芯片包括多个分区,在一种示例中,一个闪存芯片对应一个分区状态表,通过分区状态表来记录该闪存芯片中各分区的状态。在向闪存芯片中某一分区中写入数据的过程中,如果由于某一写入指令发生超时而接收到主机下发的取消指令,维护单元23会将该闪存芯片对应的分区状态表中该分区对应的状态值由第一状态值更新为第二状态值。应理解,不同的闪存芯片对应不同的分区状态表是其中一种可能实现方式,也可以多个闪存芯片对应一个分区状态表,比如固态硬盘包括的各闪存芯片对应同一分区状态表。
62.图7是本公开一个实施例的分区状态表的示意图。如图7所示,分区状态表中记录有m个分区的分区标识,m为大于或等于3的正整数,维护单元23维护分区状态表中各分区标识对应的状态值,状态值可以等于0(第一状态值)或1(第二状态值)。当接收单元21接收到针对某一分区的取消指令后,维护单元23将分区状态表中该分区的分区标识对应的状态值由0更新为1。比如,第一分区的分区标识为1,第一写入指令用于指示向第一分区中写入相对应的待存储数据,在接收单元21接收到针对第一写入指令的取消指令后,维护单元23将分区状态表中分区标识1对应的状态值由0更新为1。
63.当接收单元21接收到向某一分区中写入数据的写入指令后,处理单元22确定该分区的分区标识,然后从分区状态表中读取该分区标识对应的状态值,如果该分区标识对应的状态值为第一状态值,则处理单元22正常执行该写入指令,如果该分区标识对应的状态值为第二状态值,则处理单元22不执行该写入指令,并针对该写入指令向主机发送第二反馈信息。比如,在接收单元21接收到第二写入指令后,由于第二写入指令指示向第一分区写入数据,第一分区的分区标识为1,所以处理单元22从分区状态表中读取分区标识1对应的状态值,而读取到的状态值为1,进而处理单元22不执行第二写入指令,并向主机发送第二
反馈信息。
64.维护单元23将分区状态表中第一分区对应的状态值由第一状态值更新为第二状态值后,处理单元22不再执行第二写入指令,从而避免数据被写入错误的位置,导致主机读取数据时出现数据错误的情况发生,且会向主机发送针对第二写入指令的第二反馈信息,使得主机将第二写入指令对应的待存储数据写入第二分区。
65.第二写入指令为第一写入指令的后序写入指令,第二写入指令由主机在接收到第一反馈信息之前下发给存储控制芯片20。由于第一写入指令对应的待存储数据没有被写入第一分区,如果将第二写入指令对应的待存储数据写入第一分区,会导致待存储数据被写入错误的位置,进而导致主机读取数据时出现数据错误。在接收到第二写入指令后,判断第一分区对应的状态值是否为第二状态值,如果第一分区对应的状态值为第二状态值,则不执行第二写入指令,并向主机发送针对第二写入指令的第二反馈信息,使主机根据第二反馈信息将第二写入指令对应的待存储数据写入第二分区。
66.在本公开实施例中,维护单元23根据接收单元21接收到的取消指令,维护分区状态表,在接收单元21接收到针对某一分区的取消指令后,维护单元23将分区状态表中该分区对应的状态值设置为第二状态值,当接收单元21接收到写入指令后,维护单元23会确定该写入指令所要写的分区,并确定该分区对应的状态值,如果该分区对应的状态值等于第二状态值,处理单元22不执行该写入指令,并向主机发送反馈信息。由维护单元23维护分区状态表,分区状态表记录了多个分区的状态,处理单元22根据分区对应的状态值确定是否要向分区写入数据,避免了将数据写入错误分区的情况发生,保证了主机读取数据的正确性。
67.在一种可能的实现方式中,接收单元21接收到第二写入指令后,处理单元22从分区状态表中获取第一分区对应的状态值,如果第一分区对应的状态值为第一状态值,则处理单元22将第二写入指令对应的待存储数据写入第一分区。
68.维护单元23根据接收单元21接收到的取消指令维护分区状态表,第二写入指令用于指示将相对应的待存储数据写入第一分区,如果第一分区的状态值为第一状态值,说明第二写入指令的各前序写入指令均成功将相对应的待存储数据写入第一分区,所以讲第二写入指令对应的待存储数据写入第一分区,不会导致主机读取数据时出现数据错误,进而处理单元22执行第二写入指令,将第二写入指令对应的待存储数据写入相对应的存储单元。
69.在本公开实施例中,在接收单元21接收到指示向第一分区写入待存储数据的第二写入指令后,如果第一分区对应的状态值为第一状态值,处理单元22执行第二写入指令,将第二写入指令对应的待存储数据写入相对应的存储单元,在保证主机读取数据正确性的前提下,提高数据存储的效率,并可以节省zns固态硬盘的存储空间。
70.在一种可能的实现方式中,维护单元23将分区状态表中第一分区对应的状态值更新为第二状态值后,如果第一分区被擦除,则维护单元23将分区状态表中第一分区对应的状态值更新为第一状态值。
71.主机可以向存储控制芯片20发送擦除指令,以将zns固态硬盘包括的一个或多个分区擦除。当一个分区被擦除后,维护单元23将分区状态表中该分区对应的状态值更新为第一状态值。如图7所示,在对应分区标识为1的分区被擦除后,将分区状态表中分区标识1
对应的状态值由1变更为0。
72.接收单元21接收到写入指令后,处理单元22确定该写入指令所要写的分区,并从分区状态表中读取该分区对应的状态值,如果该分区对应的状态值等于第一状态值,则执行该写入指令,将数据写入该写入指令所要写的分区,如果该分区对应的状态值等于第二状态值,则不执行该写入指令,并向主机发送第二反馈信息。
73.在本公开实施例中,在一个分区被擦除后,维护单元23可以将分区状态表中该分区对应的状态值设置为第一状态值,进而在接收单元21接收到向该分区写入数据的写入指令后,处理单元22通过读取分区状态表确定该分区对应的状态值为第一状态值,这说明该分区未发生写入指令超时的情况,进而处理单元22执行接收单元21接收到的写入指令,向该分区写入数据。可见,处理单元22根据分区状态表中的状态值,可以确定分区是否发生写入指令超时的情况,在确定分区未发生写入超时的情况后,执行接收单元21接收到的写入指令,向分区写入数据,保证主机向zns固态硬盘存储数据能够正常进行,且可以节省zns固态硬盘的存储空间。
74.在一种可能的实现方式中,如果接收单元21未接收到针对第一写入指令的取消指令,则处理单元22可以获取第一写入指令包括的数据编号,进而根据获取到的数据编号从第一分区中确定用于存储第一写入指令对应的待存储数据的至少一个存储单元,并将第一写入指令对应的待存储数据写入确定出的存储单元。
75.如图2至图4所示,存储单元编号与数据编号一一对应,不同的数据编号对应不同的存储单元编号。主机发送的写入指令包括待存储数据的数据编号,处理单元22获取到写入指令包括的数据编号后,可以确定与数据编号相对应的存储单元编号,该存储单元编号用于标识该写入指令所要写的存储单元,进而处理单元22将该写入指令所要写入的待存储数据写入该存储单元编号所标识的存储单元。
76.第一写入指令可以包括一个或多个数据编号,当第一写入指令包括多个数据编号时,处理单元22确定多个数据编号对应的多个存储单元编号,然后根据各存储单元编号所标识的多个存储单元的写入顺序,依次向各存储单元编号所标识的多个存储单元写入待存储数据。
77.在本公开实施例中,写入指令包括待存储数据的数据编号,不同的待存储数据对应不同的数据编号,不同的数据编号对应不同的存储单元编号,存储单元编号用于标识存储单元,数据编号与存储单元编号一一对应,处理单元22根据写入指令包括的数据编号,确定与数据编号相对应的存储单元编号,进而将待存储数据写入存储单元编号所标识的存储单元,保证能够将待存储数据写入正确的存储单元,避免将待存储数据存储到错误的位置,造成主机读取数据出错,进而保证主机读取数据的正确性。
78.在一种可能的实现方式中,数据编号包括存储单元的第一地址信息,第一地址信息为相对于第一分区的基地址的偏移量。
79.闪存芯片包括多个分区,分区具有相对应的基地址(base),不同的分区对应不同的基地址。分区内存储单元的地址信息可以通过相对于分区基地址的偏移量(offset)表示,同一分区内不同存储单元对应不同的偏移量。存储单元的存储单元编号可以为存储单元对应的偏移量,数据编号可以为用于存储待存储数据的存储单元的偏移量,所以相对应的存储单元编号和数据编号可以相同,均为对应存储单元的偏移量。
80.在本公开实施例中,数据编号包括存储单元相对于分区的基地址的偏移量,所以处理单元22可以根据数据编号直接确定用于存储待存储数据的存储单元,进而将待存储数据存储到相应的存储单元中,提高了向zns固态硬盘存储数据的效率。由于相对于基地址的偏移量的数据量较小,通过偏移量来标识数据和存储单元,可以减小数据包中数据编号的数据量,也可以减小数据编号和存储单元编号对于zns固态硬盘的存储空间的占用。
81.应用于zns固态硬盘的数据存储方法
82.图8是本公开一个实施例的数据存储方法的流程图,该数据存储方法可由上述任一实施例中的存储控制芯片20执行。如图8所示,该数据存储方法可以包括如下步骤:
83.步骤801、接收主机下发的第一写入指令,其中,第一写入指令用于指示将相对应的待存储数据写入分区命名空间固态硬盘包括的第一分区;
84.步骤802、若接收到主机针对第一写入指令发送的取消指令,则停止将第一写入指令对应的待存储数据写入第一分区,并向主机发送第一反馈信息,以使主机将第一写入指令对应的待存储数据、及第一写入指令的后序写入指令对应的待存储数据,写入分区命名空间固态硬盘包括的第二分区。
85.在本公开实施例中,如果在接收到第一写入指令之后,接收到针对第一写入指令的取消指令,说明第一写入指令无法成功在第一分区内写入数据,所以停止将第一写入指令对应的待存储数据写入第一分区,并向主机发送第一反馈信息,通知主机第一写入指令对应的待存储数据没有被成功写入,进而主机可以开启与第一分区不同的第二分区,将第一写入指令对应的待存储数据、及第一写入指令的后序写入指令对应的待存储数据写入第二分区,避免主机在读取数据时发生数据错误。可见,当一个待存储数据未能成功写入分区时,该待存储数据之后的待存储数据也不写入该分区,向主机发送第一反馈信息,通知主机这些数据没有写入成功,避免主机读取出错误的数据,而且主机还会根据反馈信息开启新的分区,将这些没有写入成功的数据写入新的分区,保证了zns固态硬盘具有较快的读写速度。
86.由于数据存储方法的细节,已经在上述存储控制芯片实施例中结合结构示意图进行了详细说明,具体过程可参见前述存储控制芯片实施例中的描述,在此不再进行赘述。
87.应用于主机的数据存储方法
88.图9是本公开一个实施例的数据存储方法的流程图,该数据存储方法可由上述任一实施例中的主机执行。从硬件层面上主机可以是cpu、gpu等可以向zns固态硬盘写入数据的处理器,从软件层面上主机可以是运行在可向zns固态硬盘写入数据的设备上的操作系统。如图9所示,该数据存储方法可以包括如下步骤:
89.步骤901、向分区命名空间固态硬盘发送第一写入指令,其中,第一写入指令用于指示将相对应的待存储数据写入分区命名空间固态硬盘包括的第一分区;
90.步骤902、响应于第一写入指令执行超时,向分区命名空间固态硬盘发送针对第一写入指令的取消指令;
91.步骤903、接收来自分区命名空间固态硬盘的第一反馈信息,其中,第一反馈信息指示第一写入指令对应的待存储数据未成功写入第一分区;
92.步骤904、根据第一反馈信息,将第一写入指令对应的待存储数据、及第一写入指令的后序写入指令对应的待存储数据,写入分区命名空间固态硬盘包括的第二分区。
93.在本公开实施例中,在向zns固态硬盘发送第一写入指令后,如果接收到来自zns固态硬盘的第一反馈信息,说明第一写入指令未能成功写入数据,进而向zns固态硬盘发送第三写入指令,以指示zns固态硬盘向与第一分区不同的第二分区写入第一写入指令对应的待存储数据、及第一写入指令的后序写入指令对应的待存储数据,从而避免将数据存储到zns固态硬盘中错误的位置,避免从zns固态硬盘读取数据是出错为问题发生,而且还可以根据反馈信息开启新的分区,将没有写入成功的数据写入新的分区,保证了数据从存储的效率。
94.在一种可能的实现方式中,第一写入指令包括第一数据编号,第一编号包括第一分区中用于存储待存储数据的至少一个存储单元的第一地址信息,第一地址信息为相对于第一分区的基地址的偏移量。第三写入指令包括第二数据编号,第二编号包括第二分区中用于存储待存储数据的至少一个存储单元的第二地址信息,第二地址信息为相对于第二分区的基地址的偏移量。
95.在本公开实施例中,数据编号包括存储单元相对于分区的基地址的偏移量,所以可以根据数据编号直接确定用于存储待存储数据的存储单元,进而将待存储数据存储到相应的存储单元中,提高了向zns固态硬盘存储数据的效率。由于相对于基地址的偏移量的数据量较小,通过偏移量来标识数据和存储单元,可以减小数据包中数据编号的数据量,也可以减小数据编号和存储单元编号对于zns固态硬盘的存储空间的占用。
96.由于数据存储方法的细节,已经在上述存储控制芯片实施例中结合结构示意图进行了详细说明,具体过程可参见前述存储控制芯片实施例中的描述,在此不再进行赘述。
97.本公开实施例的商业价值
98.在本公开实施例中,存储控制芯片在接收到取消指令后,针对发生超时的写入指令及其后序各写入指令向主机发送错误信息,告知主机这些数据没有被成功写入,主机在接收到错误信息后,可以重新开启一个分区进行数据写入,从而在避免读取数据错误的同时,减小了对zns固态硬盘造成的影响,可以保证zns固态硬盘的读写速度,从而可以提高zns固态硬盘的读取性能,提高zns固态硬盘产品的竞争力。
99.需要说明的是,本公开实施例所涉及到的与用户有关的信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于对模型进行训练的样本数据、用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
100.应该理解,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于装置和系统实施例中描述的方法,所以描述的比较简单,相关之处参见其他实施例的部分说明即可。
101.应该理解,上述对本说明书特定实施例进行了描述。其它实施例在权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
102.应该理解,本文用单数形式描述或者在附图中仅显示一个的元件并不代表将该元件的数量限于一个。此外,本文中被描述或示出为分开的模块或元件可被组合为单个模块或元件,且本文中被描述或示出为单个的模块或元件可被拆分为多个模块或元件。
103.还应理解,本文采用的术语和表述方式只是用于描述,本说明书的一个或多个实施例并不应局限于这些术语和表述。使用这些术语和表述并不意味着排除任何示意和描述(或其中部分)的等效特征,应认识到可能存在的各种修改也应包含在权利要求范围内。其他修改、变化和替换也可能存在。相应的,权利要求应视为覆盖所有这些等效物。

技术特征:
1.一种存储控制芯片,包括:接收单元,用于接收主机下发的第一写入指令,及接收所述主机针对所述第一写入指令发送的取消指令,其中,所述第一写入指令用于指示将相对应的待存储数据写入分区命名空间固态硬盘包括的第一分区;处理单元,用于在所述接收单元接收到所述取消指令后,停止将所述第一写入指令对应的待存储数据写入所述第一分区,并向所述主机发送第一反馈信息,以使所述主机将所述第一写入指令对应的待存储数据、及所述第一写入指令的后序写入指令对应的待存储数据,写入所述分区命名空间固态硬盘包括的第二分区。2.根据权利要求1所述的存储控制芯片,其中,所述处理单元,用于在所述接收单元未接收到所述取消指令时,将所述第一写入指令对应的待存储数据写入所述第一分区。3.根据权利要求2所述的存储控制芯片,还包括:维护单元;所述维护单元,用于在所述接收单元接收到所述取消指令后,将分区状态表中所述第一分区对应的状态值由第一状态值更新为第二状态值;所述处理单元,用于在所述接收单元接收到所述第一写入指令后序的第二写入指令时,从所述分区状态表中读取所述第一分区对应的状态值,并在所述第一分区对应的状态值等于所述第二状态值时,不将所述第二写入指令对应的待存储数据写入所述第一分区,并向所述主机发送第二反馈信息,以使所述主机将所述第二写入指令对应的待存储数据写入所述第二分区,其中,所述第二写入指令用于指示将相对应的待存储数据写入所述第一分区。4.根据权利要求3所述的存储控制芯片,其中,所述处理单元,用于在所述接收单元接收到所述第二写入指令,且所述分区状态表中所述第一分区对应的状态值等于所述第一状态值时,将所述第二写入指令对应的待存储数据写入所述第一分区。5.根据权利要求3所述的存储控制芯片,其中,所述维护单元,用于在所述第一分区被擦除后,将所述分区状态表中所述第一分区对应的状态值由所述第二状态值更新为所述第一状态值。6.根据权利要求1-5中任一所述的存储控制芯片,其中,所述处理单元,用于在所述接收单元未接收到所述取消指令时,获取所述第一写入指令包括的数据编号,并根据所述数据编号从所述第一分区中确定至少一个存储单元,将所述第一写入指令对应的待存储数据写入确定出的所述至少一个存储单元。7.根据权利要求6所述的存储控制芯片,其中,所述数据编号包括所述至少一个存储单元的第一地址信息,所述第一地址信息为相对于所述第一分区的基地址的偏移量。8.一种固态硬盘,包括:根据权利要求1-7中任一所述的存储控制芯片;至少一个闪存芯片,所述闪存芯片包括多个分区,所述分区包括多个存储单元。9.一种数据存储方法,应用于分区命名空间固态硬盘,所述方法包括:接收主机下发的第一写入指令,其中,所述第一写入指令用于指示将相对应的待存储数据写入分区命名空间固态硬盘包括的第一分区;
若接收到所述主机针对所述第一写入指令发送的取消指令,则停止将所述第一写入指令对应的待存储数据写入所述第一分区,并向所述主机发送第一反馈信息,以使所述主机将所述第一写入指令对应的待存储数据、及所述第一写入指令的后序写入指令对应的待存储数据,写入所述分区命名空间固态硬盘包括的第二分区。10.一种数据存储方法,应用于主机,所述方法包括:向分区命名空间固态硬盘发送第一写入指令,其中,所述第一写入指令用于指示将相对应的待存储数据写入所述分区命名空间固态硬盘包括的第一分区;响应于所述第一写入指令执行超时,向所述分区命名空间固态硬盘发送针对所述第一写入指令的取消指令;接收来自所述分区命名空间固态硬盘的第一反馈信息,其中,所述第一反馈信息指示所述第一写入指令对应的待存储数据未成功写入所述第一分区;根据所述第一反馈信息,将所述第一写入指令对应的待存储数据、及所述第一写入指令的后序写入指令对应的待存储数据,写入所述分区命名空间固态硬盘包括的第二分区。

技术总结
本公开实施例提供了一种存储控制芯片、固态硬盘和相关方法,该存储控制芯片包括:接收单元,用于接收主机下发的第一写入指令,及接收所述主机针对所述第一写入指令发送的取消指令,其中,所述第一写入指令用于指示将相对应的待存储数据写入分区命名空间固态硬盘包括的第一分区;处理单元,用于在所述接收单元接收到所述取消指令后,停止将所述第一写入指令对应的待存储数据写入所述第一分区,并向所述主机发送第一反馈信息,以使所述主机将所述第一写入指令对应的待存储数据、及所述第一写入指令的后序写入指令对应的待存储数据,写入所述分区命名空间固态硬盘包括的第二分区。本方案能够提高ZNS固态硬盘的读写速度。方案能够提高ZNS固态硬盘的读写速度。方案能够提高ZNS固态硬盘的读写速度。


技术研发人员:金加靖 许玉铭 王志国
受保护的技术使用者:平头哥(上海)半导体技术有限公司
技术研发日:2023.03.17
技术公布日:2023/7/7
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐