一种SSD固件访问NandFlash的方法和系统技术方案

技术编号:22944258 阅读:16 留言:0更新日期:2019-12-27 17:06
本申请公开了一种SSD固件访问NandFlash的方法和系统,初始化多个可并行执行的command state结构体,任一command state结构体与一个异步状态机相匹配;申请任一command state结构体;利用上下文机制存储任一模块在当前流程中的状态;执行完毕当前流程中的状态后,跳出异步状态机;通过轮询NandFlash返回的IPC反馈信息,按照先后顺序处理异步状态机。该系统包括初始化模块、申请模块、存储模块、跳转模块和处理模块。通过本申请,能够在确保同一个CPU上的不同模块可以各自操作NandFlash资源而不会产生死锁的情况下,充分利用CPU资源,从而大大提高CPU的利用率和SSD固件访问NandFlash的效率。

【技术实现步骤摘要】
一种SSD固件访问NandFlash的方法和系统
本申请涉及计算器存储
,特别是涉及一种SSD(SolidStateDisk,固态电子存储阵列硬盘)固件访问NandFlash的方法和系统。
技术介绍
SSD是计算机存储领域常见的一种存储设备,其采用闪存颗粒进行数据存储。由于SSD内部的SSD固件功能复杂,通常将一个SSD固件根据不同的功能划分为多个模块。由于SSD主控芯片中的CPU数量有限,而SSD固件的功能模块较多,SSD固件如何访问NandFlash,是一个重要问题。早期SSD固件访问NandFlash的方法是:不对模块进行功能分类,根据每个CPU能够存放的模块的数量,直接将不同功能的模块随机存放在同一个CPU上。然而这种访问方法中,由于CPU为单线程操作,当一个模块在操作NandFlash时,同一个CPU上其他的模块就必须等待,造成CPU的利用率浪费,而且,由于该方法不对模块进行功能分类,当同步功能的模块和异步功能的模块同时存放于同一个CPU时,有时会产生死锁现象,导致模块的工作效率下降。目前,SSD固件访问NandFlash的方法通常是:SSD固件将同步处理的模块存放在同一个CPU上,且SSD固件采用同步访问的方式访问NandFlash。具体地,在同一个CPU上,SSD固件先向第一个模块发送请求,第一个模块返回应答后,SSD固件处理第一个模块的应答;然后SSD固件向第二个模块发送请求,以此类推直到SSD固件访问完毕当前CPU中存放的所有模块。这种访问方法由于将同步处理的模块存放在同一个CPU上,能够有效避免不同模块共处同一个CPU所导致的死锁现象。然而,目前SSD固件访问NandFlash的方法,由于是同步访问方式,SSD主控芯片中的每个CPU独立工作,CPU中存放模块的功能不同,SSD固件的访问和数据处理速度不同,就会产生有的CPU出现空闲,有的CPU处理不完,导致CPU的利用率不够高,从而导致SSD固件访问NandFlash的效率不够高。
技术实现思路
本申请提供了一种SSD固件访问NandFlash的方法和系统,以解决现有技术CPU利用率不够高以及SSD固件访问NandFlash的效率不够高的问题。为了解决上述技术问题,本申请实施例公开了如下技术方案:一种SSD固件访问NandFlash的方法,所述SSD固件中包括多个不同功能的模块,所述方法包括:初始化多个可并行执行的commandstate(命令状态,或指令状态)结构体,任一所述commandstate结构体与一个异步状态机相匹配,所述异步状态机用于表征所述模块在流程中的状态,所述流程为所述模块访问NandFlash的流程,且所述流程的起始时刻为开始申请commandstate结构体指针,所述流程的终止时刻为释放commandstate结构体指针;申请任一所述commandstate结构体;利用上下文机制存储任一所述模块在当前流程中的状态;执行完毕当前流程中的状态后,跳出所述异步状态机;通过轮询NandFlash返回的IPC(Inter-processcommunications,进程间通信)反馈信息,按照先后顺序处理异步状态机。可选地,申请任一所述commandstate结构体之后,所述方法还包括:判断是否成功申请任一所述commandstate结构体;如果是,任一所述模块开始执行访问NandFlash的流程;如果否,任一所述模块挂在pengdinglis上处于等待状态。可选地,任一所述模块开始执行访问NandFlash的流程,包括:任一所述模块向NandFlash发送IPC请求信息;将任一所述模块在流程中的状态更新为与所述IPC请求所匹配的状态。可选地,申请任一所述commandstate结构体的方法,包括:申请任一所述commandstate结构体的结构体指针;定义一个与当前流程相匹配的tag。可选地,所述利用上下文机制存储任一所述模块在当前流程中的状态,包括:任一所述模块执行完毕当前流程中的状态后,将当前流程的上下文存储至所述commandstate结构体中;将所述commandstate结构体的结构体指针和所述tag添加至所述模块发送给NandFlash的IPC请求信息中。可选地,所述CPU通过轮询NandFlash返回的IPC反馈信息,按照先后顺序处理异步状态机,包括:轮询NandFlash返回的IPC反馈信息;根据所述IPC反馈信息,按照先后顺序跳转至相应模块的异步状态机中继续执行相应流程。可选地,可并行执行的commandstate结构体的最大数量由CPU中芯片的Dram大小确定。一种SSD固件访问NandFlash的系统,所述SSD固件中包括多个不同功能的模块,所述系统包括:初始化模块,用于初始化多个可并行执行的commandstate结构体,任一所述commandstate结构体与一个异步状态机相匹配,所述异步状态机用于表征所述模块在流程中的状态,所述流程为所述模块访问NandFlash的流程,且所述流程的起始时刻为开始申请commandstate结构体指针,所述流程的终止时刻为释放commandstate结构体指针;申请模块,用于申请任一所述commandstate结构体;存储模块,用于利用上下文机制存储任一所述模块在当前流程中的状态;跳转模块,用于执行完毕当前流程中的状态后,跳出所述异步状态机;处理模块,用于通过轮询NandFlash返回的IPC反馈信息,按照先后顺序处理异步状态机。可选地,所述系统中还包括:判断模块,用于判断是否成功申请任一所述commandstate结构体;开启模块,用于当申请成功时,控制任一所述模块开始执行访问NandFlash的流程;等待模块,用于当没有申请成功时,控制任一所述模块挂在pengdinglis上处于等待状态。可选地,所述处理模块包括:轮询单元,用于轮询NandFlash返回的IPC反馈信息;跳转单元,用于根据所述IPC反馈信息,按照先后顺序跳转至相应模块的异步状态机中继续执行相应流程。本申请的实施例提供的技术方案可以包括以下有益效果:本申请提供一种SSD固件访问NandFlash的方法,该方法首先初始化多个可并行执行的commandstate结构体,任一commandstate结构体与一个异步状态机相匹配,然后申请任一commandstate结构体,申请成功后利用上下文机制存储任意模块在当前流程中的状态,执行完毕当前流程中的状态后,跳出异步状态机,最后通过轮询NandFlash返回的IPC反馈信息,按照先后顺序处理异步状态机。本申请在SSD固件中利用异步状态机的方式来处理各个流程,通过把各流程用异步状态机的方式异步化,将每个模块功能按照异步状态机的流程来执行,执行完本文档来自技高网
...

【技术保护点】
1.一种SSD固件访问NandFlash的方法,其特征在于,所述SSD固件中包括多个不同功能的模块,所述方法包括:/n初始化多个可并行执行的command state结构体,任一所述command state结构体与一个异步状态机相匹配,所述异步状态机用于表征所述模块在流程中的状态,所述流程为所述模块访问NandFlash的流程,且所述流程的起始时刻为开始申请command state结构体指针,所述流程的终止时刻为释放command state结构体指针;/n申请任一所述command state结构体;/n利用上下文机制存储任一所述模块在当前流程中的状态;/n执行完毕当前流程中的状态后,跳出所述异步状态机;/n通过轮询NandFlash返回的IPC反馈信息,按照先后顺序处理异步状态机。/n

【技术特征摘要】
1.一种SSD固件访问NandFlash的方法,其特征在于,所述SSD固件中包括多个不同功能的模块,所述方法包括:
初始化多个可并行执行的commandstate结构体,任一所述commandstate结构体与一个异步状态机相匹配,所述异步状态机用于表征所述模块在流程中的状态,所述流程为所述模块访问NandFlash的流程,且所述流程的起始时刻为开始申请commandstate结构体指针,所述流程的终止时刻为释放commandstate结构体指针;
申请任一所述commandstate结构体;
利用上下文机制存储任一所述模块在当前流程中的状态;
执行完毕当前流程中的状态后,跳出所述异步状态机;
通过轮询NandFlash返回的IPC反馈信息,按照先后顺序处理异步状态机。


2.根据权利要求1所述的一种SSD固件访问NandFlash的方法,其特征在于,申请任一所述commandstate结构体之后,所述方法还包括:
判断是否成功申请任一所述commandstate结构体;
如果是,任一所述模块开始执行访问NandFlash的流程;
如果否,任一所述模块挂在pengdinglis上处于等待状态。


3.根据权利要求2所述的一种SSD固件访问NandFlash的方法,其特征在于,任一所述模块开始执行访问NandFlash的流程,包括:
任一所述模块向NandFlash发送IPC请求信息;
将任一所述模块在流程中的状态更新为与所述IPC请求所匹配的状态。


4.根据权利要求1所述的一种SSD固件访问NandFlash的方法,其特征在于,申请任一所述commandstate结构体的方法,包括:
申请任一所述commandstate结构体的结构体指针;
定义一个与当前流程相匹配的tag。


5.根据权利要求4所述的一种SSD固件访问NandFlash的方法,其特征在于,所述利用上下文机制存储任一所述模块在当前流程中的状态,包括:
任一所述模块执行完毕当前流程中的状态后,将当前流程的上下文存储至所述commandstate结构体中;
将所述commandstate结构体的结构体指针和所述tag添加至所述模块发送给NandFlash的IPC请求信息中...

【专利技术属性】
技术研发人员:赵昌磊
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1