一种信道的引擎调度方法、系统及相关装置

文档序号:1044836 发布日期:2020-10-09 浏览:13次 >En<

阅读说明:本技术 一种信道的引擎调度方法、系统及相关装置 (Engine scheduling method, system and related device of channel ) 是由 周永旺 于 2020-07-29 设计创作,主要内容包括:本申请提供一种信道的引擎调度方法,包括:获取信道请求;判断所述引擎列表是否为空;若否,从所述引擎列表中为所述信道请求分配对应的编码引擎,并利用描述符记录所述信道请求与编码引擎的对应关系;在所述编码引擎处理所述信道请求包含的编码时,计算所述编码对应的校验码;获取所述描述符、所述校验码和编码引擎状态字,根据所述描述符将所述校验码发送至对应的信道,并在所述编码引擎状态字对应为空闲状态时将所述编码引擎写入所述引擎列表。本申请提高了信道请求的处理效率,同时使得编码引擎的利用率得到提升,降低了硬件设计成本。本申请还提供一种信道的引擎调度系统、计算机可读存储介质和电子设备,具有上述有益效果。(The application provides a channel engine scheduling method, which comprises the following steps: acquiring a channel request; judging whether the engine list is empty or not; if not, distributing a corresponding coding engine for the channel request from the engine list, and recording the corresponding relation between the channel request and the coding engine by using a descriptor; when the coding engine processes the codes contained in the channel request, calculating check codes corresponding to the codes; and acquiring the descriptor, the check code and the coding engine status word, sending the check code to a corresponding channel according to the descriptor, and writing the coding engine into the engine list when the coding engine status word is in an idle state. The method and the device improve the processing efficiency of the channel request, improve the utilization rate of the coding engine and reduce the hardware design cost. The application also provides an engine scheduling system of a channel, a computer readable storage medium and an electronic device, which have the above beneficial effects.)

一种信道的引擎调度方法、系统及相关装置

技术领域

本申请涉及存储领域,特别涉及一种信道的引擎调度方法、系统及相关装置。

背景技术

目前企业密集型数据主要用高带宽的NVME SSD(Non-Volatile Memory expressSolid State Disk,一种固态硬盘),来实现数据真正的超低延迟和高性能。NVME SSD由控制器、存储介质和闪存等模块组成。然而,随着存储介质中一个存储单元表示越来越多的比特位,闪存原始误码率越来越高。因此,使用基于硬判决和软判决的LDPC(Low-densityParity-check,低密度奇偶校验)纠错技术成为必然。

通常,一个闪存控制器通常有8个通道,每个通道连接多个闪存存储介质,对于整个SSD存储系统,缩小控制器面积并提高读写性能是最重要的技术实现目标。目前大部分控制器是采用每个通道一个LDPC编码器,以应对越来越高的闪存误码率,但是每一个编码器需要消耗较大的资源,容易造成控制器面积和功耗的增加,使得硬件生产成本大大提高。

发明内容

本申请的目的是提供一种信道的引擎调度方法、系统、计算机可读存储介质和电子设备,能够降低闪存控制器的硬件成本和使用功耗。

为解决上述技术问题,本申请提供一种信道的引擎调度方法,具体技术方案如下:

获取信道请求;

判断所述引擎列表是否为空;

若否,从所述引擎列表中为所述信道请求分配对应的编码引擎,并利用描述符记录所述信道请求与编码引擎的对应关系;

在所述编码引擎处理所述信道请求包含的编码时,计算所述编码对应的校验码;

获取所述描述符、所述校验码和编码引擎状态字,根据所述描述符将所述校验码发送至对应的信道,并在所述编码引擎状态字对应为空闲状态时将所述编码引擎写入所述引擎列表。

可选的,从引擎列表中为所述信道编码分配对应的编码引擎之前,还包括:

为所述引擎列表中的各编码引擎分配优先级;

则所述从引擎列表中为所述信道编码分配对应的编码引擎包括:

从引擎列表中为所述信道编码分配当前最高优先级的编码引擎。

可选的,所述编码引擎处理所述信道请求包含的编码包括:

读取所述信道请求中的编码,将所述编码写入所述编码引擎的第一缓冲区;

将所述描述符注入触发队列;

在所述编码全部写入所述第一缓冲区后,将所述描述符从所述触发队列中,并推入工作队列;

在所述描述符位于所述工作队列时,利用所述编码引擎的第二缓冲区和所述第一缓冲区对所述编码执行乒乓操作。

可选的,为所述引擎列表中的各编码引擎分配优先级包括:

根据各所述编码引擎的数据处理效率为所述引擎列表中的各编码引擎分配优先级。

可选的,获取所述描述符、所述校验码和编码引擎状态字包括:

获取编码引擎状态字;

在所述编码引擎状态字为空闲状态时,获取所述描述符和所述校验码。

可选的,计算所述编码对应的校验码包括:

利用LDPC算法计算所述编码对应的校验码。

本申请还提供一种信道的引擎调度系统,包括:

获取模块,用于获取信道请求;

判断模块,用于判断所述引擎列表是否为空;

引擎分配模块,用于从所述引擎列表中为所述信道请求分配对应的编码引擎,并利用描述符记录所述信道请求与编码引擎的对应关系;

校验码计算模块,用于在所述编码引擎处理所述信道请求包含的编码时,计算所述编码对应的校验码;

引擎回收模块,用于获取所述描述符、所述校验码和编码引擎状态字,根据所述描述符将所述校验码发送至对应的信道,并在所述编码引擎状态字对应为空闲状态时将所述编码引擎写入所述引擎列表。

可选的,还包括:

优先级分配模块,用于为所述引擎列表中的各编码引擎分配优先级;

则引擎分配模块具体为用于从引擎列表中为所述信道编码分配当前最高优先级的编码引擎的模块。

本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法的步骤。

本申请还提供一种电子设备,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如上所述的方法的步骤。

本申请提供一种信道的引擎调度方法,包括:获取信道请求;判断所述引擎列表是否为空;若否,从所述引擎列表中为所述信道请求分配对应的编码引擎,并利用描述符记录所述信道请求与编码引擎的对应关系;在所述编码引擎处理所述信道请求包含的编码时,计算所述编码对应的校验码;获取所述描述符、所述校验码和编码引擎状态字,根据所述描述符将所述校验码发送至对应的信道,并在所述编码引擎状态字对应为空闲状态时将所述编码引擎写入所述引擎列表。

由于当前信道数量大于编码引擎数量,无法实现每个信道请求均保证及时由编码引擎处理,只能使得所有编码引擎同一时间仅能处理一个信道请求。本申请通过采用引擎列表,使得在接收到信道请求时,不必使得所有编码引擎候选,若引擎列表非空,则从引擎列表中选取可用的编码引擎加以处理,使得下一个信道请求并不需要在上一信道请求处理完成后才可被处理,提高了信道请求的处理效率,同时使得编码引擎的利用率得到提升,降低了硬件设计成本。本申请还提供一种信道的引擎调度系统、计算机可读存储介质和电子设备,具有上述有益效果,此处不再赘述。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例所提供的一种信道的引擎调度方法的流程图;

图2为本申请实施例所提供的一种信道的引擎调度系统结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

当前闪存控制器中通常包含4个或者8个闪存通道,而采用的编码器例如LDPC编码器中通常只包含3个或者6个编码引擎,因此无法实现闪存通道与编码引擎一一对应的关系,从而使得在接收到信道请求时要求所有编码引擎后处于候选状态,且只有在上一个信道请求执行完毕后才可执行下一个信道请求。显然,这种情况下编码引擎的利用率低,编码效率低下。为了解决该问题,本申请提供了一种信道的引擎调度方法。

请参考图1,图1为本申请实施例所提供的一种信道的引擎调度方法的流程图,该方法包括:

S101:获取信道请求;

本步骤旨在获取信道请求,在此对于采用何种信道请求,以及获取信道请求的具体方式不做限定。特别的,该信道请求可以由闪存控制器发出。

S102:判断所述引擎列表是否为空;若否,进入S103;

本步骤旨在判断引擎列表是否为空,若为空,则当前无空闲的编码引擎可供信道使用,此时可以循环执行本步骤,直至引擎列表不为空时执行后续步骤。

S103:从所述引擎列表中为所述信道请求分配对应的编码引擎,并利用描述符记录所述信道请求与编码引擎的对应关系;

本步骤需要在从引擎列表中为信道请求分配对应的编码引擎,需要注意的是,信道请求与编码引擎之间可以存在对应的执行优先级,但并不存在固定的执行关系,即并不存在某一信道请求必须由指定的编码引擎执行编码。因此,只要引擎列表中存在编码引擎,即可为信道请求分配对应的编码引擎。当引擎列表中存在多个编码引擎时,若编码引擎之间并无优先级,则可以按照编码引擎的编号顺序依次执行,若编码引擎之存在优先级,则可以按照优先级顺序分配编码引擎。需要注意的是,引擎列表中的编码引擎均为空闲可用的编码引擎,正在执行编码任务的编码引擎不在引擎列表中。

容易理解的是,本实施例默认在执行本步骤之前需要配置引擎列表,即在初始化时将所有编码引擎均填入引擎列表,以供信道请求分配使用。

作为本步骤的一种优选的执行方式,若各编码引擎之间存在优先级,则需在本步骤执行前,为引擎列表中的各编码引擎分配优先级。此时,执行本步骤时可以从引擎列表中为信道编码分配当前最高优先级的编码引擎。在此对于如何划分优先级不做限定,可以根据各编码引擎的数据处理效率进行优先级划分。更具体的,在各编码引擎执行编码时,可以记录数据处理时间,并根据实际编码量得到每个编码引擎在单位时间内的数据处理量,并将数据处理量作为编码引擎的数据处理效率,以进一步确定各编码引擎的优先级。

此外,本步骤还需要利用描述符记录信道请求与编码引擎的对应关系,即记录已经分配编码引擎的信道和其对应编码引擎的映射关系。当然,在此之后还可以记录信道、编码引擎和校验码之间的对应关系。需要注意的是,本申请中信道是信道请求的发送方,而显然信道与信道请求存在唯一对应关系,因此描述符无论记录信道还是信道请求均起到相同作用。

S104:在所述编码引擎处理所述信道请求包含的编码时,计算所述编码对应的校验码;

本步骤旨在计算编码对应的校验码。需要注意的是,由于校验码是根据编码得到,而编码源于信道请求,则自然可以根据描述符确定得到的校验码所对应的信道请求。在此对于如何计算编码对应的校验码不作具体限定,可以利用LDPC算法计算所述编码对应的校验码。LDPC算法为一种ECC(Error Correcting Code,错误检查和纠正)算法。

编码引擎处理信道请求中的编码得到校验码,为编码引擎所执行的常规编码过程,在此不作赘述。但需要注意的是,每个信道请求仅可以得到一个校验码,但校验码通常数据量较大。

S105:获取所述描述符、所述校验码和编码引擎状态字,根据所述描述符将所述校验码发送至对应的信道,并在所述编码引擎状态字对应为空闲状态时将所述编码引擎写入所述引擎列表。

当根据编码引擎状态字确定编码引擎空闲时,则需要将编码引擎写入引擎列表,以便其他信道请求获取并进行编码。容易理解的是,在此对于获取编码引擎状态字的频率不作限定,可以周期性检测,也可以不定期检测,还可以仅在开始接收到信道请求后立即获取编码引擎状态字判断当前引擎是否空闲可用。同时在编码引擎生成校验码后,该引擎的某些状态字会更新表示本次编码过程完成,便于及时更新各编码引擎的工作状态,以提高对于信道请求的处理效率。

得到的校验码需要根据描述符中记录的信道请求(或信道)与编码引擎之间的关系,将编码引擎编码得到的校验码返回至对应的信道,以示完成编码过程。

值得一提的是,本实施例的上述各过程均可以由系统中的调度模块或者调度线程作为执行主体加以完成。

本申请实施例通过采用引擎列表,使得在接收到信道请求时,不必使得所有编码引擎候选,而是从引擎列表中选取可用的编码引擎加以处理,使得下一个信道请求并不需要在上一信道请求处理完成后才可被处理,提高了信道请求的处理效率,同时使得编码引擎的利用率得到提升,降低了硬件设计成本。

在上述实施例的基础上,作为优选的实施例,结合上一实施例,下文以三步队列方式针对编码引擎处理编码的过程做进一步说明,需要注意的是,每个编码引擎都有两个单独的数据缓冲区,分别为第一缓冲区和第二缓冲区,而三步队列包括触发队列、工作队列和完成队列,则在编码引擎编码时可以包括如下步骤:

S201:读取所述信道请求中的编码,将所述编码写入所述编码引擎的第一缓冲区;

S202:将所述描述符注入触发队列;

S203:在所述编码全部写入所述第一缓冲区后,将所述描述符从所述触发队列中,并推入工作队列;

S204:在所述描述符位于所述工作队列时,利用所述编码引擎的第二缓冲区和所述第一缓冲区对所述编码执行乒乓操作。

步骤S102中,描述符即为上一实施例中的描述符,同时包含信道请求对应的请求信息,同时也作为信道请求在三步队列中的执行状态标签,将其注入触发队列,通过触发队列记录当前正在处理的信道请求。一旦编码全部写入第一缓冲区,意味着编码引擎即将执行数据处理,此时将描述符推入工作队列,表明编码引擎正在处理该信道请求对应的编码,此后编码引擎利用两个缓冲区对编码执行乒乓操作,兵乓操作为本领域常用的数据流处理方式。在描述符位于工作队列时,利用LDPC算法计算编码对应的校验码。

当编码引擎执行完毕时,此时可以将描述符推入完成队列,同时编码和校验码也进入完成队列。此时,闪存控制器从完成队列中读取校验码,并根据校验码确定空闲的编码引擎,一旦确定编码引擎已空闲,将该信道请求从三步队列中弹出,至此完成对一个信道请求的编码过程。

下面对本申请实施例提供的一种信道的引擎调度系统进行介绍,下文描述的引擎调度系统与上文描述的一种信道的引擎调度方法可相互对应参照。

参见图2,图2为本申请实施例所提供的一种信道的引擎调度系统结构示意图,本申请还提供一种信道的引擎调度系统,包括:

获取模块100,用于获取信道请求;

判断模块200,用于判断所述引擎列表是否为空;

引擎分配模块300,用于从所述引擎列表中为所述信道请求分配对应的编码引擎,并利用描述符记录所述信道请求与编码引擎的对应关系;

校验码计算模块400,用于在所述编码引擎处理所述信道请求包含的编码时,计算所述编码对应的校验码;

引擎回收模块500,用于获取所述描述符、所述校验码和编码引擎状态字,根据所述描述符将所述校验码发送至对应的信道,并在所述编码引擎状态字对应为空闲状态时将所述编码引擎写入所述引擎列表。

基于上述实施例,作为优选的实施例,还包括:

优先级分配模块,用于为所述引擎列表中的各编码引擎分配优先级;

则引擎分配模块200具体为用于从引擎列表中为所述信道编码分配当前最高优先级的编码引擎的模块。

本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

本申请还提供了一种电子设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的系统而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

10页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种动态反馈读出放大电路

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!