一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

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

2021-11-03 20:46:00 来源:中国专利 TAG:
一种基于emmc的nvme存储设备的数据传输优化方法
技术领域
:1.本发明属于数据存储
技术领域
:,涉及一种基于emmc的nvme存储设备的数据传输优化方法。
背景技术
::2.nvme协议是intel为了统一接口协议建立生态,在2011年发布的。nvmexpress(nvme),或称非易失性内存主机控制器接口规范(英语:nonvolatilememoryhostcontrollerinterfacespecification,缩写:nvmhcis),是一个逻辑设备接口规范。它是与ahci类似的、基于设备逻辑接口的总线传输协议规范(相当于通讯协议中的应用层),用于访问通过pciexpress(pcie)总线附加的非易失性存储器介质(例如采用闪存的固态硬盘驱动器)。nvme采用了多命令队列(最大65536个命令队列),每个命令可变数据长度(512b到2mb),同时数据块在host端内存中记录检索支持physicalregionpage和scattergatherlist两种方式。nvme协议支持命令间的乱序执行,也支持命令内数据块的乱序传输,同时支持命令队列间的可变权重处理。3.为了提高固态硬盘的容量、传输速率和减少时延,一种基于raim(redundantarrayofindependentmodule,独立冗余内存阵列)构架的固态硬盘被提了出来,其内部架构参见图1。4.在该构架的存储设备中,固态硬盘主控(ssdcontroller)中带一个数据缓冲区(databuffer),用于缓存主机(host)发送的数据;emmchost模块再将databuffer中的数据取出,写入各自的emmc中。5.emmc在其内部集成了flashcontroller,用于完成擦写均衡、坏块管理、ecc校验等功能。相比于直接将nandflash接入到host端,emmc屏蔽了nandflash的物理特性,可以减少host端软件的复杂度,让host端专注于上层业务,省去对nandflash进行特殊的处理。但是其缺点也很明显:6.1、emmc处理数据的busy时间是不可预知的,并且随着时间年限的增长,emmc不断的进行擦写,其处理数据的速度也在变慢,时长最高可以达到100ms以上,从而很容易导致数据传输阻塞。7.2、当主机(host)发出存储操作命令以后,因为nvme协议支持命令间的乱序执行,也支持命令内数据块的乱序传输,存储主控接受主机发送的命令,然后将接受的命令暂存在缓冲区(databuffer)中。缓冲区(databuffer)中的命令和数据会根据通道(channel)是否空闲,来选择发送给空闲的emmc。因为emmc处理数据的busy时间是不可预知,当有一通道处理数据时间特别长,那么这一通道的数据就会一直阻塞,无法写入到emmc中,这样就会造成性能和传输速率的降低。参见图2。技术实现要素:8.为解决上述问题,本发明提出了一种基于emmc的nvme存储设备的数据传输优化方法,包括在ssdnvme控制器中建立映射表commanddatatable,该表是从主机host存入databuffer中命令和数据块的映射,该表维护databuffer中命令和数据块的状态,该表包括五个部分,分别为命令的地址、数据块的地址、操作状态、有效位和保留位;9.在上电初始化之前,先在配置文件中设置emmc通道允许命令和数据块操作执行的最大时间阈值;10.在每个emmc从databuffer中获取要执行的命令和数据块时,先在commanddatatable中查找其对应的状态;只有操作状态为待执行状态时,命令和数据块才可被emmc读取;当命令和数据块被emmc读取后,操作状态由待执行状态转换为执行成功状态。11.优选地,具体包括以下步骤:12.emmc通道传输数据的过程中,用emmc的内部寄存器来计时当前命令下数据块的操作执行时间,然后将该时间与初始化时设置的最大时间阈值比较;13.如果在最大时间阈值内成功执行,则emmc给ssdnvme控制器一个成功的反馈;14.然后在commanddatatable中将成功执行的命令和数据块的有效位标记为无效,等待垃圾回收机制清除;15.如果超出了最大时间阈值,则emmc停止当前命令的执行,给ssdnvme控制器返回一个失败的反馈;16.然后在commanddatatable中将失败执行的命令和数据块的操作状态重新回退为待执行状态,等待被其他空闲的emmc通道来选择执行。17.优选地,具体包括以下步骤:18.s10,主机host发送存储操作命令,命令和数据块传输至ssdnvme控制器的databuffer中,然后ssdnvme控制器对commanddatatable进行初始化,命令和数据块的操作状态被初始化为待执行状态,有效位初始化置为有效;19.s20,ssdnvme控制器判断此时是否有空闲的emmc通道,如果有,空闲的emmc则从databuffer中取出存储操作命令和选择其对应数据块,传送到各自对应通道中;当命令和数据块被传输到emmc通道中后,ssdnvme控制器将commanddatatable中相对应的命令和数据块的操作状态更改为执行成功状态;20.s30,假设当前emmc通道1‑n均处于空闲状态,n为自然数;ssdnvme控制器选择数据块1‑n分别传送到各自对应的空闲emmc通道中;21.s40,n个emmc通道开始存储传输数据,不同通道的忙碌时间是不同的,每个通道中的寄存器会对数据传输计时,并与最大时间阈值比较;假定emmc通道1由于忙碌时间超出最大时间阈值,数据出现阻塞;emmc通道2‑n没有超出最大时间阈值,完成了数据传输;22.s50,则,emmc通道1由于数据出现阻塞,停止当前命令的执行,给ssdnvme控制器返回一个失败的反馈;emmc通道2‑n数据存储完成,给ssdnvme控制器返回一个成功的反馈,然后进入空闲状态,可重新接收数据;23.s60,ssdnvme控制器收到emmc通道的反馈后,因为emmc通道1的反馈是失败的,故会在commanddatatable中将失败执行的命令和数据块的操作状态重新回退为待执行状态,等待被其他空闲的emmc通道处理;24.s70,而emmc通道2‑n的反馈是成功的,故会在commanddatatable中将命令和数据块的有效位记为无效,等待ssdnvme控制器的垃圾回收机制将其清除;25.s80,因为命令和数据块1的操作状态重新置为待执行状态,又可以被空闲的emmc通道处理;假设此时ssdnvme控制器将数据块1交给空闲的emmc通道2处理,然后会继续从s20开始进行,直到该命令下的所有数据块均被成功存储;26.s90,在当前命令下的数据块进行存储操作时,如果在emmc通道中有剩余的空闲通道,ssdnvme控制器会继续接收下一条命令进行执行,无需等待当前命令下的所有的数据块存储完。27.优选地,所述操作状态的待执行状态用0表示,执行成功状态用1表示。28.优选地,所述有效位的有效用1表示,无效用0表示。29.本发明有益效果至少包括:30.nvme协议采用了多命令队列(最大65536个命令队列),每个命令数据长度可变(从512b到2mb),支持命令间的乱序执行,也支持命令内数据块的乱序传输,同时支持命令队列间的可变权重处理。本发明在基于raim存储架构的基础上,利用nvme深度io队列能力、命令的乱序执行能力以及数据块的乱序传输能力,针对emmc不可预知的busy时间而导致的数据阻塞问题,提出一种新的数据传输优化方法,提高了ssd性能和传输速率。31.nvme主控设计并维护了一张写入databuffer中命令和数据的映射表commanddatatable,该表实时记录了命令和数据的操作状态。32.emmc在执行存储命令传输数据时,内部寄存器会对数据处理进行计时并判断,一旦超出预设的最大时间阈值,将会结束该命令的执行,然后将该命令和命令下的数据块的操作状态在映射表中回退,重新由其余空闲的emmc通道尝试执行。附图说明33.图1为现有技术中基于raim构架的固态硬盘结构框图;34.图2为现有技术中基于raimssd的写数据阻塞示意图;35.图3为本发明实施例的基于emmc的nvme存储设备的数据传输优化方法的nvmeemmc主控系统应用示意图;36.图4为本发明实施例的基于emmc的nvme存储设备的数据传输优化方法的nvme主控写数据流向示意图。具体实施方式37.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。38.相反,本发明涵盖任何由权利要求定义的在本发明的精髓和范围上做的替代、修改、等效方法以及方案。进一步,为了使公众对本发明有更好的了解,在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。39.参见图3,在ssdnvmecontroller中建立映射表commanddatatable,该表是从主机host存入databuffer中命令和数据块的映射,该表主要维护了databuffer中命令和数据块的相关状态,该表包括五个部分,分别为命令的地址(command_addr)、数据块的地址(data_addr)、操作状态(operate_status)、有效位(valid)和保留位(reserve)。40.初始化:在设备上电初始化之前,我们先在配置文件中设置emmc通道channel允许命令和数据块操作执行的最大时间阈值;41.在每个emmc从databuffer中获取要执行的命令和数据块时,需要先在映射表commanddatatable中查找其对应的状态;只有操作状态(operate_status)待执行状态(用0表示)的命令和数据块才可以被emmc读取;当命令和数据块被emmc读取后,由待执行状态(用0表示)转换为执行成功状态(用1表示)。42.emmc通道传输数据的过程中,用emmc的内部寄存器来计时当前命令下数据块的操作执行时间,然后将该时间与初始化时设置的最大时间阈值比较;如果在最大时间阈值内成功执行,则emmc给ssdnvmecontroller一个成功的反馈,然后在映射表commanddatatable中将成功执行的命令和数据块的有效位(valid)标记为无效(用0表示),等待垃圾回收机制清除;如果超出了最大时间阈值,则emmc停止当前命令的执行,给ssdnvmecontroller返回一个失败的反馈,然后在映射表commanddatatable中将失败执行的命令和数据块的操作状态(operate_status)重新回退为待执行状态(用0表示),等待被其他空闲的emmc通道来选择执行。43.nvme协议采用了多命令队列(最大65536个命令队列),每个命令数据长度可变(从512b到2mb),支持命令间的乱序执行,也支持命令内数据块的乱序传输,同时支持命令队列间的可变权重处理。本发明在基于raim存储架构的基础上,利用nvme深度io队列能力、命令的乱序执行能力以及数据块的乱序传输能力,针对emmc不可预知的busy时间而导致的数据阻塞问题,提出一种新的数据传输优化方法,提高了ssd性能和传输速率。44.参见图4,对于pcie接口的nvmessd,假设一条命令跟随了4块逻辑数据块,其数据传输包括以下步骤:45.s10,主机host发送存储操作命令,命令和数据块传输至ssdnvmecontroller的databuffer中,然后ssdnvmecontroller对映射表commanddatatable进行初始化,命令和数据块的操作状态(operate_status)被初始化为待执行状态(用0表示),有效位(valid)初始化置1;46.s20,ssdnvmecontroller判断此时是否有空闲的emmc通道,如果有,空闲的emmc则取出存储操作命令和选择其对应数据块,传送到各自对应通道中。当命令和数据块被传输到emmc通道中后,ssdnvmecontroller将映射表中相对应的命令和数据块的状态更改为成功执行状态(用1表示);47.s30,因为当前emmc通道1,2,3,4均处于空闲状态,假设ssdnvmecontroller选择数据块1,2,3,4分别传送到各自对应的空闲emmc通道中;48.s40,四个emmc通道开始存储传输数据,不同通道的busy时间是不同的,每个通道中的寄存器会对数据传输计时,并与最大时间阈值比较;我们此时假定emmc通道1由于busy时间过长,超出了最大时间阈值,数据出现阻塞;emmc通道2,3,4没有超出最大时间阈值,正常完成了数据传输;49.s50,emmc通道1由于数据出现阻塞,会停止当前命令的执行,给ssdnvmecontroller返回一个失败的反馈;emmc通道2,3,4数据存储完成,给ssdnvmecontroller返回一个成功的反馈,然后进入空闲(idle)状态,可以重新接收数据;50.s60,ssdnvmecontroller收到emmc通道的反馈后,因为emmc通道1的反馈是失败的,所以会在映射表commanddatatable中将失败执行的命令和数据块的操作状态(operate_status)重新回退为待执行状态(用0表示),等待被其他空闲的emmc通道处理;51.s70,而emmc通道2,3,4的反馈是成功的,所以会在映射表中将命令和数据块的有效位(valid)置0,等待ssdnvmecontroller的垃圾回收机制将其清除;52.s80,因为命令和数据块1的操作状态(operate_status)重新置0,又可以被空闲的emmc通道处理。假设此时ssdnvmecontroller将数据块1交给空闲的emmc通道2处理,然后会继续从s20开始进行;依次类推,直到该命令下的所有数据块均被成功存储;53.s90,在当前命令下的数据块进行存储操作时,如果在emmc通道中有剩余的空闲通道,ssdnvmecontroller会继续接收下一条命令进行执行,无需等待当前命令下的所有的数据块存储完。54.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献