发明内容
本发明的主要目的在于提供一种固态硬盘数据的并行处理方法、装置及可读存储介质,旨在解决现有技术中通过固件实现控制通道和片选之间的并行容易出现缺陷的问题。
为实现上述目的,本发明提供一种固态硬盘数据的并行处理方法,所述固态硬盘包括闪存控制器及闪存阵列,所述闪存控制器具有与闪存阵列连接的多个通道,每个通道包括多个片选,且所述闪存控制器包括控制缓存区及链表,所述链表包括链表缓存区及多个链表头,所述固态硬盘数据的并行处理方法包括以下步骤:
当目标通道的当前片选执行完对应的操作后,以所述当前片选为起点,按照预设顺序循环检测所述目标通道中是否有片选处于空闲状态;
当检测到有片选处于空闲状态时,则从处于空闲状态的片选对应的链表头中获取下一操作对应的映射地址;
根据所述映射地址获取所述下一操作对应的在所述链表缓存区中的相对偏移值,并根据所述相对偏移值获取所述下一操作在控制缓存区的操作信息,并控制所述处于空闲状态的片选执行所述下一操作。
优选地,所述从处于空闲状态的片选对应的链表头中获取下一操作对应的映射地址的步骤之前,还包括:
判断处于空闲状态的片选对应的链表头是否为空;
若是,则跳过该处于空闲状态的片选,继续执行所述按照预设顺序循环检测所述目标通道中是否有片选处于空闲状态的步骤;
若否,则执行所述从处于空闲状态的片选对应的链表头中获取下一操作对应的映射地址的步骤。
优选地,所述当目标通道的当前片选执行完对应的操作后,以所述当前片选为起点,按照预设顺序循环检测所述目标通道中是否有片选处于空闲状态的步骤之前,还包括:
向所述控制缓存区中的相对偏移位置写入对所述闪存阵列的操作信息。
优选地,所述操作信息包括通道信息、片选信息、行地址、列地址、要操作的数据量及操作命令。
优选地,所述向所述控制缓存区中的相对偏移位置写入对所述闪存阵列的操作信息的步骤之后,还包括:
将所述控制缓存区中的相对偏移值写入所述链表缓存区的空闲节点中。
优选地,所述将所述控制缓存区中的相对偏移位置对应的相对偏移值写入所述链表缓存区中的步骤之后,还包括:
扫描所述控制缓存区中的通道及片选;
从所述片选对应的链表头中获取所述链表缓存区的当前的最后节点位置;
将所述空闲节点挂载于所述当前的最后节点位置之后,以将所述空闲节点作为当前的最后节点。
优选地,所述控制所述处于空闲状态的片选执行所述下一操作的步骤之后,还包括:
释放所述下一操作在控制缓存区、链表缓存区所占用的空间并更改链表关系。
优选地,所述以所述当前片选为起点,按照预设顺序循环检测所述目标通道中是否有片选处于空闲状态的步骤包括:
向当前片选连接的闪存阵列中的存储单元发送问询指令;
根据所述存储单元的反馈指令判断当前片选是处于繁忙状态还是空闲状态。
此外,为实现上述目的,本发明还提供一种固态硬盘数据的并行处理装置,其特征在于,所述固态硬盘数据的并行处理装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的固态硬盘数据的并行处理程序,所述固态硬盘数据的并行处理程序被所述处理器执行时实现如上所述的固态硬盘数据的并行处理方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有固态硬盘数据的并行处理程序,所述固态硬盘数据的并行处理程序被处理器执行时实现如上所述的固态硬盘数据的并行处理方法的步骤。
本发明通过在片选执行完一次操作后,按照预设顺序检测当前片选及其余片选的状态,在有片选为空闲状态时,通过片选的链表头、链表缓冲区及控制缓冲区找到下一操作的操作信息,通过链表数据结构,得到操作的最佳的执行顺序,避免通过固件的大量代码对操作信息进行排序,避免出现缺陷,减少程序员的调试时间,同时减少固件的负担。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:
当目标通道的当前片选执行完对应的操作后,以所述当前片选为起点,按照预设顺序循环检测所述目标通道中是否有片选处于空闲状态;
当检测到有片选处于空闲状态时,则从处于空闲状态的片选对应的链表头中获取下一操作对应的映射地址;
根据所述映射地址获取所述下一操作对应的在所述链表缓存区中的相对偏移值,并根据所述相对偏移值获取所述下一操作在控制缓存区的操作信息,并控制所述处于空闲状态的片选执行所述下一操作。
现有技术中,为了让固态硬盘(SSD)产品拥有更快的读写速度,闪存控制器都有多个通道及很多个片选来控制非易失性闪存(Flash),达到并行操作非易失性闪存的效果。现有技术中,通过闪存控制器中自带的固件(FW,Firmware)来控制通道和片选之间的并行,需要大量的软件代码来保证通道和片选之间的并行性,但是软件代码容易出现缺陷(Bug),且需要调试时间,并且执行过程非常占用中央处理器的资源。
本发明通过在片选执行完一次操作后,按照预设顺序检测当前片选及其余片选的状态,在有片选为空闲状态时,通过片选的链表头、链表缓冲区及控制缓冲区找到下一操作的操作信息,通过链表数据结构,得到操作的最佳的执行顺序,避免通过固件的大量代码对操作信息进行排序,避免出现缺陷,减少程序员调试时间,同时减少固件的负担。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的终端结构示意图。
本发明实施例终端可以是PC,也可以是智能手机、平板电脑、便携计算机等具有显示功能的可移动式终端设备。
如图1所示,该终端可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及固态硬盘数据的并行处理程序。
在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的固态硬盘数据的并行处理程序,并执行以下操作:
当目标通道的当前片选执行完对应的操作后,以所述当前片选为起点,按照预设顺序循环检测所述目标通道中是否有片选处于空闲状态;
当检测到有片选处于空闲状态时,则从处于空闲状态的片选对应的链表头中获取下一操作对应的映射地址;
根据所述映射地址获取所述下一操作对应的在所述链表缓存区中的相对偏移值,并根据所述相对偏移值获取所述下一操作在控制缓存区的操作信息,并控制所述处于空闲状态的片选执行所述下一操作。
进一步地,处理器1001可以调用存储器1005中存储的固态硬盘数据的并行处理程序,还执行以下操作:
判断处于空闲状态的片选对应的链表头是否为空;
若是,则跳过该处于空闲状态的片选,继续执行所述按照预设顺序循环检测所述目标通道中是否有片选处于空闲状态的步骤;
若否,则执行所述从处于空闲状态的片选对应的链表头中获取下一操作对应的映射地址的步骤。
进一步地,处理器1001可以调用存储器1005中存储的固态硬盘数据的并行处理程序,还执行以下操作:
向所述控制缓存区中的相对偏移位置写入对所述闪存阵列的操作信息。
进一步地,处理器1001可以调用存储器1005中存储的固态硬盘数据的并行处理程序,还执行以下操作:
将所述控制缓存区中的相对偏移值写入所述链表缓存区的空闲节点中。
进一步地,处理器1001可以调用存储器1005中存储的固态硬盘数据的并行处理程序,还执行以下操作:
扫描所述控制缓存区中的通道及片选;
从所述片选对应的链表头中获取所述链表缓存区的当前的最后节点位置;
将所述空闲节点挂载于所述当前的最后节点位置之后,以将所述空闲节点作为当前的最后节点。
进一步地,处理器1001可以调用存储器1005中存储的固态硬盘数据的并行处理程序,还执行以下操作:
释放所述下一操作在控制缓存区、链表缓存区所占用的空间并更改链表关系。
进一步地,处理器1001可以调用存储器1005中存储的固态硬盘数据的并行处理程序,还执行以下操作:
向当前片选连接的闪存阵列中的存储单元发送问询指令;
根据所述存储单元的反馈指令判断当前片选是处于繁忙状态还是空闲状态。
参照图2,本发明的所述固态硬盘10至少包括闪存控制器11、闪存阵列12及中央处理器(CPU)13,所述闪存控制器11具有与闪存阵列连接的多个通道111,每个通道111包括多个片选112,且所述闪存控制器11包括控制缓存区113及链表114,所述链表114包括一个链表缓存区(图未示)及多个链表头(图未示)。
其中,所述控制缓存区113用于接收中央处理器13所执行的固件(Firmware)代码向所述控制缓存区113写入的对所述闪存阵列12的操作信息,并将对所述闪存阵列12的操作信息暂存于所述控制缓存区113中的相对偏移位置1131中;
所述链表114中的链表缓存区的数据域用于存放相对偏移值,该相对偏移值相当于一个指针,该指针指向所述操作信息在所述控制缓存区113的位置,也即,相对偏移值记录了所述操作信息在哪个相对偏移位置1131中,同时所述链表缓存区的指针域还存放有上一结点及下一个结点地址的链表指针;所述链表114中的链表头则用于记录相对偏移值在所述链表缓存区的哪个位置,且所述链表头与所述片选一一对应。
所述多个通道111之间互不干扰,用于并行向所述闪存阵列12执行操作,需要指出的是,每个通道111均包括若干个片选112,每个通道111在同一时间内只能执行某一片选112下的操作,当当前片选112执行完对应的操作之后,当前片选112进入到RB状态(闪存阵列的繁忙状态),该RB状态将延续一定RB时长,只有当该延续时长结束时,该片选112才能重新回到空闲状态,重新执行该片选112对应的下一操作。
当当前片选112进入到RB状态后,中央处理器13开始检测当前片选112的下一片选112是否处于空闲状态,会出现两种结果:(1)下一片选112为空闲状态,则获取该下一片选112对应的操作,并在该下一片选112执行该对应的操作,该下一片选112执行完该对应的操作后,也会立即进入到RB状态;(2)下一片选112由于执行此前的操作而仍然处于RB状态,则所述中央处理器将检测再下一片选112的是否处于空闲状态。如此循环往复,实现通道内多个片选112执行操作的并行性。
参阅图3,本发明固态硬盘数据的并行处理方法第一实施例,所述固态硬盘数据的并行处理方法包括以下步骤:
步骤S10,当目标通道的当前片选执行完对应的操作后,以所述当前片选为起点,按照预设顺序循环检测所述目标通道中是否有片选处于空闲状态;
在本实施例中,所述多个通道之间互不干扰,用于并行向所述闪存阵列执行操作,需要指出的是,每个通道均包括若干个片选,每个通道在同一时间内只能执行某一片选下对应的操作,当当前片选执行完对应的操作之后,当前片选立即进入到RB状态(闪存阵列的繁忙状态),该RB状态将延续一定时长,只有当该延续时长结束时,该片选才能重新回到空闲状态,重新执行该片选对应的下一操作。
当当前片选进入到RB状态后,中央处理器开始检测当前片选的下一片选是否处于空闲状态,会出现两种结果(1)下一片选为空闲状态,则获取该下一片选对应的操作,并在该下一片选执行该对应的操作,该下一片选执行完该对应的操作后,也会立即进入到RB状态;(2)下一片选由于执行此前的操作而仍然处于RB状态,则所述中央处理器将检测再下一片选的是否处于空闲状态;如此循环往复,实现通道内多个片选执行操作的并行性。
在本实施例中,按照预设顺序循环检测所述目标通道中是否有片选处于空闲状态,例如,所述目标通道有3个片选:片选1、片选2及片选3,片选1最先执行该片选1下对应的对闪存阵列的操作,执行完毕后,该片选1处于RB状态并持续RB时间,此时,检测所述片选1是否处于空闲状态,若片选1是处于空闲状态,则片选1可继续执行对应的操作,若否,检测所述片选2是否处于空闲状态,若片选2是处于空闲状态,则片选2执行对应的操作;
片选2执行完对应的操作后,检测所述片选2是否处于空闲状态,若片选2处于空闲状态,则片选2可继续执行对应的操作,若否,检测所述片选3是否处于空闲状态,若片选3是处于空闲状态,则片选3执行对应的操作;
片选3执行完对应的操作后,检测所述片选3是否处于空闲状态,若片选3处于空闲状态,则片选3可继续执行对应的操作,若否,重新检测所述片选1是否处于空闲状态,若片选1是处于空闲状态,则片选1执行对应的操作;
也即,所述预设顺序为先检测片选1,再检测片选2,后检测片选3,再重新片选1,如此循环检测,若在检测过程中,某一片选为空闲状态,则该片选将执行对应的操作;此外,还需指出的是,每一片选对应一个链表头,当某一片选为空闲状态时,若该片选对应的链表头为空,则无法获取该片选对应的操作,该片选将被跳过不执行操作。
步骤S20,当检测到有片选处于空闲状态时,则从处于空闲状态的片选对应的链表头中获取下一操作对应的映射地址;
每个片选都对应一个链表头,该链表头记录了片选对应的下一操作的映射地址,具体地,该映射地址指向链表缓存区中的某一位置,而该某一位置存放有一相对偏移值,该相对偏移值指向了该下一操作在控制缓存区中的具体存放位置。
步骤S30,根据所述映射地址获取所述下一操作对应的在所述链表缓存区中的相对偏移值,并根据所述相对偏移值获取所述下一操作在控制缓存区的操作信息,并控制所述处于空闲状态的片选执行所述下一操作。
在本实施例中,所述相对偏移值实际为一地址,而该地址指向的是控制缓存区中的某一位置,而该某一位置存放的是片选对应的下一操作的信息,找到到该下一操作信息后,该处于空闲状态的片选执行该下一操作。
综上所述,本发明通过在片选执行完一次操作后,按照预设顺序检测当前片选及其余片选的状态,在有片选为空闲状态时,通过片选的链表头、链表缓冲区及控制缓冲区找到下一操作的操作信息,通过链表数据结构,得到操作的最佳的执行顺序,避免通过固件的大量代码对操作信息进行排序,避免出现缺陷,减少程序员的调试时间,同时减少固件的负担。
优选地,参照图4,作为本发明固态硬盘数据的并行处理方法第二实施例,该第二实施例基于如图3所示的实施例,所述步骤S20之前,还包括:
步骤S40:判断处于空闲状态的片选对应的链表头是否为空;
若是,则跳过该处于空闲状态的片选,继续执行步骤S10;
若否,则执行继续步骤S20。
在本实施例中,若所述处于空闲状态的片选对应的链表头是否为空,则该片选无法获取到相对偏移值的映射地址,也就无法获取到对应的相对偏移值及操作信息,无法执行操作,故需跳过该处于空闲状态的片选。
优选地,参照图5,作为本发明固态硬盘数据的并行处理方法第三实施例,该第三实施例基于如图3-4所示的实施例,所述步骤S10之前,还包括:
步骤S50:向所述控制缓存区中的相对偏移位置写入对所述闪存阵列的操作信息。
在本实施例中,向控制缓存区中的相对偏移位置写入对所述闪存阵列的所述操作信息,以便处于空闲状态的片选能够找到所述下一操作信息。所述操作信息包括但不限于通道信息、片选信息、行地址、列地址、要操作的数据量及操作命令;所述操作命令包括但不限于读取命令、写入命令、擦除指令等。
优选地,参照图6,作为本发明固态硬盘数据的并行处理方法第四实施例,该第四实施例基于如图3-5所示的实施例,所述S10之前、步骤S50之后,还包括:
步骤S60:将所述控制缓存区中的相对偏移值写入所述链表缓存区的空闲节点中。
在本实施例中,将所述控制缓存区中的相对偏移值写入所述链表缓存区的空闲节点中,以便根据所述片选的链表头中的映射地址找到所述链表缓存区的相对偏移值,并根据所述相对偏移值找到所述下一操作。
优选地,参照图7,作为本发明固态硬盘数据的并行处理方法第五实施例,该第五实施例基于如图3-6所示的实施例,所述步骤S60之后,还包括:
步骤S70:扫描所述控制缓存区中的通道及片选;
步骤S80:从所述片选对应的链表头中获取所述链表缓存区的当前的最后节点位置;
步骤S90:将所述空闲节点挂载于所述当前的最后节点位置之后,以将所述空闲节点作为当前的最后节点。
在本实施例中,通过所述扫描所述控制缓存区中的通道及片选,从所述片选对应的链表头中获取所述链表缓存区的当前的最后节点位置,将所述空闲节点挂载于所述当前的最后节点位置之后,以将所述空闲节点作为当前的最后节点,以便所述片选在获取下一操作时,先从链表头中获取映射地址,再根据映射地址找到所述链表缓存区中的存放在当前最后节点的相对偏移值,并根据所述相对偏移值找到所述下一操作。
优选地,参照图8,作为本发明固态硬盘数据的并行处理方法第六实施例,该第六实施例基于如图3-7所示的实施例,所述步骤S30之后,还包括:
步骤S100:释放所述下一操作在控制缓存区、链表缓存区所占用的空间并更改链表关系。
在本实施例中,所述操作被片选执行完毕后,释放所述链表缓存区中的该操作对应的相对偏移值所在的结点及控制缓存区中的用于存放该操作的结点,便于后续操作的相对偏移值及操作信息的再次存放。通过标记上述结点为可写入状态,以供新的操作信息、相对偏移值重新写入所述控制缓存区、链表缓存区中,提高所述控制缓存区、链表缓存区的存储资源利用率。
优选地,参照图9,作为本发明固态硬盘数据的并行处理方法第七实施例,该第七实施例基于如图3-8所示的实施例;所述步骤S10包括:
S11:向当前片选连接的闪存阵列中的存储单元发送问询指令;
S12:根据所述存储单元的反馈指令判断当前片选是处于繁忙状态还是空闲状态。
在本实施例中,在检测片选是否处于空闲状态时,按照所述预设顺序向所述闪存阵列中的存储单元依序发送问询指令,所述闪存阵列接收到所述问询指令会返回一反馈信息,根据所述反馈信息即可判断当前片选是处于繁忙状态还是空闲状态。
此外,本发明实施例还提出一种固态硬盘数据的并行处理装置,所述固态硬盘数据的并行处理装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的固态硬盘数据的并行处理程序,所述固态硬盘数据的并行处理程序被所述处理器执行时实现如上各个实施例所述的固态硬盘数据的并行处理方法的步骤。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有固态硬盘数据的并行处理程序,所述固态硬盘数据的并行处理程序被处理器执行时实现如上各个实施例所述的固态硬盘数据的并行处理方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者***中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。