一种基于eMMC的NVMe存储设备的数据传输优化方法

文档序号:189809 发布日期:2021-11-02 浏览:23次 >En<

阅读说明:本技术 一种基于eMMC的NVMe存储设备的数据传输优化方法 (Data transmission optimization method of NVMe storage equipment based on eMMC ) 是由 樊凌雁 高琦 于 2021-06-24 设计创作,主要内容包括:本发明公开了一种基于eMMC的NVMe存储设备的数据传输优化方法,包括在SSD NVMe控制器中建立映射表Command Data Table,该表是从主机Host存入Data Buffer中命令和数据块的映射,该表维护了Data Buffer中命令和数据块的相关状态;在上电初始化之前,先在配置文件中设置eMMC通道允许命令和数据块操作执行的最大时间阈值;在每个eMMC从Data Buffer中获取要执行的命令和数据块时,先在Command Data Table中查找其对应的状态;只有操作状态为待执行状态时,命令和数据块才可被eMMC读取;当命令和数据块被eMMC读取后,操作状态由待执行状态转换为执行成功状态。本发明解决了因eMMC处理数据的Busy时间的不可预知性而导致的通道堵塞问题,从而提高了数据传输速率,减少了时延。(The invention discloses a Data transmission optimization method of NVMe storage equipment based on eMMC, which comprises the steps of establishing a mapping Table Command Data Table in an SSD NVMe controller, wherein the Table is the mapping of a Command and a Data block stored in a Data Buffer from a Host, and maintains the relevant state of the Command and the Data block in the Data Buffer; before power-on initialization, setting a maximum time threshold value for execution of an eMMC channel allowed command and data block operation in a configuration file; when each eMMC acquires a Command and a Data block to be executed from a Data Buffer, a corresponding state of the eMMC is searched in a Command Data Table; only when the operation state is the state to be executed, the command and the data block can be read by the eMMC; when the command and data block is read by the eMMC, the operation state is changed from the to-be-executed state to an execution success state. The invention solves the problem of channel blockage caused by unpredictability of Busy time for processing data by the eMMC, thereby improving the data transmission rate and reducing the time delay.)

一种基于eMMC的NVMe存储设备的数据传输优化方法

技术领域

本发明属于数据存储技术领域,涉及一种基于eMMC的NVMe存储设备的数据传输优化方法。

背景技术

NVMe协议是INTEL为了统一接口协议建立生态,在2011年发布的。NVM Express(NVMe),或称非易失性内存主机控制器接口规范(英语:Non Volatile Memory HostController Interface Specification,缩写:NVMHCIS),是一个逻辑设备接口规范。它是与AHCI类似的、基于设备逻辑接口的总线传输协议规范(相当于通讯协议中的应用层),用于访问通过PCI Express(PCIe)总线附加的非易失性存储器介质(例如采用闪存的固态硬盘驱动器)。NVMe采用了多命令队列(最大65536个命令队列),每个命令可变数据长度(512B到2MB),同时数据块在Host端内存中记录检索支持Physical Region Page和ScatterGather List两种方式。NVMe协议支持命令间的乱序执行,也支持命令内数据块的乱序传输,同时支持命令队列间的可变权重处理。

为了提高固态硬盘的容量、传输速率和减少时延,一种基于RAIM(RedundantArray of Independent Module,独立冗余内存阵列)构架的固态硬盘被提了出来,其内部架构参见图1。

在该构架的存储设备中,固态硬盘主控(SSD Controller)中带一个数据缓冲区(Data Buffer),用于缓存主机(Host)发送的数据;eMMC Host模块再将Data Buffer中的数据取出,写入各自的eMMC中。

eMMC在其内部集成了Flash Controller,用于完成擦写均衡、坏块管理、ECC校验等功能。相比于直接将NAND Flash接入到Host端,eMMC屏蔽了NAND Flash的物理特性,可以减少Host端软件的复杂度,让Host端专注于上层业务,省去对NAND Flash进行特殊的处理。但是其缺点也很明显:

1、eMMC处理数据的Busy时间是不可预知的,并且随着时间年限的增长,eMMC不断的进行擦写,其处理数据的速度也在变慢,时长最高可以达到100ms以上,从而很容易导致数据传输阻塞。

2、当主机(Host)发出存储操作命令以后,因为NVMe协议支持命令间的乱序执行,也支持命令内数据块的乱序传输,存储主控接受主机发送的命令,然后将接受的命令暂存在缓冲区(Data Buffer)中。缓冲区(Data Buffer)中的命令和数据会根据通道(Channel)是否空闲,来选择发送给空闲的eMMC。因为eMMC处理数据的Busy时间是不可预知,当有一通道处理数据时间特别长,那么这一通道的数据就会一直阻塞,无法写入到eMMC中,这样就会造成性能和传输速率的降低。参见图2。

发明内容

为解决上述问题,本发明提出了一种基于eMMC的NVMe存储设备的数据传输优化方法,包括在SSD NVMe控制器中建立映射表Command Data Table,该表是从主机Host存入Data Buffer中命令和数据块的映射,该表维护Data Buffer中命令和数据块的状态,该表包括五个部分,分别为命令的地址、数据块的地址、操作状态、有效位和保留位;

在上电初始化之前,先在配置文件中设置eMMC通道允许命令和数据块操作执行的最大时间阈值;

在每个eMMC从Data Buffer中获取要执行的命令和数据块时,先在Command DataTable中查找其对应的状态;只有操作状态为待执行状态时,命令和数据块才可被eMMC读取;当命令和数据块被eMMC读取后,操作状态由待执行状态转换为执行成功状态。

优选地,具体包括以下步骤:

eMMC通道传输数据的过程中,用eMMC的内部寄存器来计时当前命令下数据块的操作执行时间,然后将该时间与初始化时设置的最大时间阈值比较;

如果在最大时间阈值内成功执行,则eMMC给SSD NVMe控制器一个成功的反馈;

然后在Command Data Table中将成功执行的命令和数据块的有效位标记为无效,等待垃圾回收机制清除;

如果超出了最大时间阈值,则eMMC停止当前命令的执行,给SSD NVMe控制器返回一个失败的反馈;

然后在Command Data Table中将失败执行的命令和数据块的操作状态重新回退为待执行状态,等待被其他空闲的eMMC通道来选择执行。

优选地,具体包括以下步骤:

S10,主机Host发送存储操作命令,命令和数据块传输至SSD NVMe控制器的DataBuffer中,然后SSD NVMe控制器对Command Data Table进行初始化,命令和数据块的操作状态被初始化为待执行状态,有效位初始化置为有效;

S20,SSD NVMe控制器判断此时是否有空闲的eMMC通道,如果有,空闲的eMMC则从Data Buffer中取出存储操作命令和选择其对应数据块,传送到各自对应通道中;当命令和数据块被传输到eMMC通道中后,SSD NVMe控制器将Command Data Table中相对应的命令和数据块的操作状态更改为执行成功状态;

S30,假设当前eMMC通道1-n均处于空闲状态,n为自然数;SSD NVMe控制器选择数据块1-n分别传送到各自对应的空闲eMMC通道中;

S40,n个eMMC通道开始存储传输数据,不同通道的忙碌时间是不同的,每个通道中的寄存器会对数据传输计时,并与最大时间阈值比较;假定eMMC通道1由于忙碌时间超出最大时间阈值,数据出现阻塞;eMMC通道2-n没有超出最大时间阈值,完成了数据传输;

S50,则,eMMC通道1由于数据出现阻塞,停止当前命令的执行,给SSD NVMe控制器返回一个失败的反馈;eMMC通道2-n数据存储完成,给SSD NVMe控制器返回一个成功的反馈,然后进入空闲状态,可重新接收数据;

S60,SSD NVMe控制器收到eMMC通道的反馈后,因为eMMC通道1的反馈是失败的,故会在Command Data Table中将失败执行的命令和数据块的操作状态重新回退为待执行状态,等待被其他空闲的eMMC通道处理;

S70,而eMMC通道2-n的反馈是成功的,故会在Command Data Table中将命令和数据块的有效位记为无效,等待SSD NVMe控制器的垃圾回收机制将其清除;

S80,因为命令和数据块1的操作状态重新置为待执行状态,又可以被空闲的eMMC通道处理;假设此时SSD NVMe控制器将数据块1交给空闲的eMMC通道2处理,然后会继续从S20开始进行,直到该命令下的所有数据块均被成功存储;

S90,在当前命令下的数据块进行存储操作时,如果在eMMC通道中有剩余的空闲通道,SSD NVMe控制器会继续接收下一条命令进行执行,无需等待当前命令下的所有的数据块存储完。

优选地,所述操作状态的待执行状态用0表示,执行成功状态用1表示。

优选地,所述有效位的有效用1表示,无效用0表示。

本发明有益效果至少包括:

NVMe协议采用了多命令队列(最大65536个命令队列),每个命令数据长度可变(从512B到2MB),支持命令间的乱序执行,也支持命令内数据块的乱序传输,同时支持命令队列间的可变权重处理。本发明在基于RAIM存储架构的基础上,利用NVMe深度IO队列能力、命令的乱序执行能力以及数据块的乱序传输能力,针对eMMC不可预知的Busy时间而导致的数据阻塞问题,提出一种新的数据传输优化方法,提高了SSD性能和传输速率。

NVMe主控设计并维护了一张写入Data Buffer中命令和数据的映射表CommandData Table,该表实时记录了命令和数据的操作状态。

eMMC在执行存储命令传输数据时,内部寄存器会对数据处理进行计时并判断,一旦超出预设的最大时间阈值,将会结束该命令的执行,然后将该命令和命令下的数据块的操作状态在映射表中回退,重新由其余空闲的eMMC通道尝试执行。

附图说明

图1为现有技术中基于RAIM构架的固态硬盘结构框图;

图2为现有技术中基于RAIM SSD的写数据阻塞示意图;

图3为本发明实施例的基于eMMC的NVMe存储设备的数据传输优化方法的NVMeeMMC主控系统应用示意图;

图4为本发明实施例的基于eMMC的NVMe存储设备的数据传输优化方法的NVMe主控写数据流向示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

相反,本发明涵盖任何由权利要求定义的在本发明的精髓和范围上做的替代、修改、等效方法以及方案。进一步,为了使公众对本发明有更好的了解,在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。

参见图3,在SSD NVMe Controller中建立映射表Command Data Table,该表是从主机Host存入Data Buffer中命令和数据块的映射,该表主要维护了Data Buffer中命令和数据块的相关状态,该表包括五个部分,分别为命令的地址(Command_Addr)、数据块的地址(Data_Addr)、操作状态(Operate_Status)、有效位(Valid)和保留位(Reserve)。

初始化:在设备上电初始化之前,我们先在配置文件中设置eMMC通道Channel允许命令和数据块操作执行的最大时间阈值;

在每个eMMC从Data Buffer中获取要执行的命令和数据块时,需要先在映射表Command Data Table中查找其对应的状态;只有操作状态(Operate_Status)待执行状态(用0表示)的命令和数据块才可以被eMMC读取;当命令和数据块被eMMC读取后,由待执行状态(用0表示)转换为执行成功状态(用1表示)。

eMMC通道传输数据的过程中,用eMMC的内部寄存器来计时当前命令下数据块的操作执行时间,然后将该时间与初始化时设置的最大时间阈值比较;如果在最大时间阈值内成功执行,则eMMC给SSD NVMe Controller一个成功的反馈,然后在映射表Command DataTable中将成功执行的命令和数据块的有效位(Valid)标记为无效(用0表示),等待垃圾回收机制清除;如果超出了最大时间阈值,则eMMC停止当前命令的执行,给SSD NVMeController返回一个失败的反馈,然后在映射表Command Data Table中将失败执行的命令和数据块的操作状态(Operate_Status)重新回退为待执行状态(用0表示),等待被其他空闲的eMMC通道来选择执行。

NVMe协议采用了多命令队列(最大65536个命令队列),每个命令数据长度可变(从512B到2MB),支持命令间的乱序执行,也支持命令内数据块的乱序传输,同时支持命令队列间的可变权重处理。本发明在基于RAIM存储架构的基础上,利用NVMe深度IO队列能力、命令的乱序执行能力以及数据块的乱序传输能力,针对eMMC不可预知的Busy时间而导致的数据阻塞问题,提出一种新的数据传输优化方法,提高了SSD性能和传输速率。

参见图4,对于PCIe接口的NVMe SSD,假设一条命令跟随了4块逻辑数据块,其数据传输包括以下步骤:

S10,主机Host发送存储操作命令,命令和数据块传输至SSD NVMe Controller的Data Buffer中,然后SSD NVMe Controller对映射表Command Data Table进行初始化,命令和数据块的操作状态(Operate_Status)被初始化为待执行状态(用0表示),有效位(Valid)初始化置1;

S20,SSD NVMe Controller判断此时是否有空闲的eMMC通道,如果有,空闲的eMMC则取出存储操作命令和选择其对应数据块,传送到各自对应通道中。当命令和数据块被传输到eMMC通道中后,SSD NVMe Controller将映射表中相对应的命令和数据块的状态更改为成功执行状态(用1表示);

S30,因为当前eMMC通道1,2,3,4均处于空闲状态,假设SSD NVMe Controller选择数据块1,2,3,4分别传送到各自对应的空闲eMMC通道中;

S40,四个eMMC通道开始存储传输数据,不同通道的Busy时间是不同的,每个通道中的寄存器会对数据传输计时,并与最大时间阈值比较;我们此时假定eMMC通道1由于Busy时间过长,超出了最大时间阈值,数据出现阻塞;eMMC通道2,3,4没有超出最大时间阈值,正常完成了数据传输;

S50,eMMC通道1由于数据出现阻塞,会停止当前命令的执行,给SSD NVMeController返回一个失败的反馈;eMMC通道2,3,4数据存储完成,给SSD NVMe Controller返回一个成功的反馈,然后进入空闲(Idle)状态,可以重新接收数据;

S60,SSD NVMe Controller收到eMMC通道的反馈后,因为eMMC通道1的反馈是失败的,所以会在映射表Command Data Table中将失败执行的命令和数据块的操作状态(Operate_Status)重新回退为待执行状态(用0表示),等待被其他空闲的eMMC通道处理;

S70,而eMMC通道2,3,4的反馈是成功的,所以会在映射表中将命令和数据块的有效位(Valid)置0,等待SSD NVMe Controller的垃圾回收机制将其清除;

S80,因为命令和数据块1的操作状态(Operate_Status)重新置0,又可以被空闲的eMMC通道处理。假设此时SSD NVMe Controller将数据块1交给空闲的eMMC通道2处理,然后会继续从S20开始进行;依次类推,直到该命令下的所有数据块均被成功存储;

S90,在当前命令下的数据块进行存储操作时,如果在eMMC通道中有剩余的空闲通道,SSD NVMe Controller会继续接收下一条命令进行执行,无需等待当前命令下的所有的数据块存储完。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

10页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:数据存储方法、数据获取方法、系统、设备和介质

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类