一种固态硬盘读写方法和装置与流程

文档序号:26138891发布日期:2021-08-03 14:22阅读:163来源:国知局
一种固态硬盘读写方法和装置与流程

本发明涉及计算机领域,更具体地,特别是指一种固态硬盘读写方法和装置。



背景技术:

ftl(闪存转换层)是介于ssd(固态硬盘)前端和后端之间的一个转换层。其中,前端指的是和主机用协议沟通的一侧;后端是真正储存数据的实体的nandflash(与非门闪存存储器)这边。ftl维护了一个逻辑区块地址(lba)和物理区块地址(pba)之间的对应关系。有了这层对应关系,需要修改时就不需要改动原来的物理块,只需要标记原块为废块,同时找一个没用的新物理块对应到原来的逻辑块上。

nandflash的寿命是由其擦写次数(p/e数)决定的,频繁的擦除慢慢的会产生坏块。可以藉由ftl来平衡每个区块的擦写次数;现有的ftl的储存位置是在nandflash里中比较健康稳固的区块。当系统开机后,如果要针对ssd做写入、读取或擦取的动作,皆会透过ftl的映像表将数据写入在nandflash里正确的位置。然而当储存ftl的区块损毁时,将会导致ftl中pba与lba之间映射关系表遗失,这时主机将无法正确的写入和读取数据到想要的nandflash位置,也就是说此时对于主机来说将无法识别nandflash里储存的数据。

针对现有技术中ftl区块损毁导致固态硬盘数据丢失的问题,目前尚无有效的解决方案。



技术实现要素:

有鉴于此,本发明实施例的目的在于提出一种固态硬盘读写方法和装置,能够使得在ftl区块损毁的情况下固态硬盘仍然可以正常读写。

基于上述目的,本发明实施例的第一方面提供了一种固态硬盘读写方法,包括执行以下步骤:

响应于设备启动而通过连接总线访问固态硬盘的闪存转换层并请求索引信息;

响应于未从闪存转换层获得索引信息,而通过连接总线访问固态硬盘的闪存转换备份区块以获取索引信息;

响应于从闪存转换备份区块获得索引信息,而基于索引信息访问固态硬盘的多个数据存储区块。

在一些实施方式中,方法还包括以下步骤:响应于从闪存转换备份区块获得索引信息,而基于索引信息访问固态硬盘的多个数据存储区块的同时,还在固态硬盘的多个数据存储区块中选择一个数据存储区块作为索引信息的冗余备份区块。

在一些实施方式中,方法还包括以下步骤:响应于从闪存转换层获得索引信息,而基于索引信息直接访问固态硬盘的多个数据存储区块。

在一些实施方式中,方法还包括以下步骤:响应于检测到使固态硬盘下电的指令,而在固态硬盘下电之前将多个数据存储区块中各自的索引变更信息更新到闪存转换备份区块或冗余备份区块。

在一些实施方式中,索引信息包括记载固态硬盘中逻辑区块地址和物理区块地址之间的对应关系的映射表;基于索引信息访问固态硬盘的多个数据存储区块包括:根据读写指令中的逻辑区块地址在映射表中确定对应的物理区块地址,并访问物理区块地址所指向的数据存储区块以执行读写指令。

在一些实施方式中,读写指令包括添加写;访问物理区块地址所指向的数据存储区块以执行读写指令包括:对数据存储区块中的一个或多个目标页以页为单位整体执行添加写。

在一些实施方式中,读写指令包括修改写;访问物理区块地址所指向的数据存储区块以执行读写指令包括:擦除数据存储区块的全部数据,并对数据存储区块中的一个或多个目标页以页为单位整体执行添加写。

在一些实施方式中,连接总线为外围组件互联扩展总线或串口硬盘总线;通过连接总线访问固态硬盘包括:将设备的中央处理器或南桥连接到外围组件互联扩展切换器或串口硬盘控制器以在外围组件互联扩展总线或串口硬盘总线上与固态硬盘通信。

在一些实施方式中,闪存转换备份区为单层单元架构的与非门闪存存储器。

本发明实施例的第二方面提供了一种装置,包括:

处理器;

控制器,存储有处理器可运行的程序代码,处理器在运行程序代码时执行以下步骤:

响应于设备启动而通过连接总线访问固态硬盘的闪存转换层并请求索引信息;

响应于未从闪存转换层获得索引信息,而通过连接总线访问固态硬盘的闪存转换备份区块以获取索引信息;

响应于从闪存转换备份区块获得索引信息,而基于索引信息访问固态硬盘的多个数据存储区块。

本发明具有以下有益技术效果:本发明实施例提供的固态硬盘读写方法和装置,通过响应于设备启动而通过连接总线访问固态硬盘的闪存转换层并请求索引信息;响应于未从闪存转换层获得索引信息,而通过连接总线访问固态硬盘的闪存转换备份区块以获取索引信息;响应于从闪存转换备份区块获得索引信息,而基于索引信息访问固态硬盘的多个数据存储区块的技术方案,能够使得在ftl区块损毁的情况下固态硬盘仍然可以正常读写。

附图说明

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

图1为本发明提供的固态硬盘读写方法的流程示意图;

图2为本发明提供的固态硬盘读写方法在ftl区块损毁时的信息传递示意图;

图3为本发明提供的固态硬盘读写方法在正常启动时的信息传递示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。

需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。

基于上述目的,本发明实施例的第一个方面,提出了一种使得在ftl区块损毁的情况下固态硬盘仍然可以正常读写的固态硬盘读写方法的一个实施例。图1示出的是本发明提供的固态硬盘读写方法的流程示意图。

所述的固态硬盘读写方法,如图1所示,包括执行以下步骤:

步骤s101,响应于设备启动而通过连接总线访问固态硬盘的闪存转换层并请求索引信息;

步骤s103,响应于未从闪存转换层获得索引信息,而通过连接总线访问固态硬盘的闪存转换备份区块以获取索引信息;

步骤s105,响应于从闪存转换备份区块获得索引信息,而基于索引信息访问固态硬盘的多个数据存储区块。

本发明提出一种方法,当系统关机时,ssd中的ftl映像表储存和备份到存储组件中。当下次开机发现如果ftl映射表有损毁或是无法读取时,主机可从备份的ftl来使用。此方式可解决当ssd中的ftl损毁导致数据遗失的风险。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(rom)或随机存储记忆体(ram)等。所述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。

在一些实施方式中,方法还包括以下步骤:响应于从闪存转换备份区块获得索引信息,而基于索引信息访问固态硬盘的多个数据存储区块的同时,还在固态硬盘的多个数据存储区块中选择一个数据存储区块作为索引信息的冗余备份区块。

在一些实施方式中,方法还包括以下步骤:响应于从闪存转换层获得索引信息,而基于索引信息直接访问固态硬盘的多个数据存储区块。

在一些实施方式中,方法还包括以下步骤:响应于检测到使固态硬盘下电的指令,而在固态硬盘下电之前将多个数据存储区块中各自的索引变更信息更新到闪存转换备份区块或冗余备份区块。

在一些实施方式中,索引信息包括记载固态硬盘中逻辑区块地址和物理区块地址之间的对应关系的映射表;基于索引信息访问固态硬盘的多个数据存储区块包括:根据读写指令中的逻辑区块地址在映射表中确定对应的物理区块地址,并访问物理区块地址所指向的数据存储区块以执行读写指令。

在一些实施方式中,读写指令包括添加写;访问物理区块地址所指向的数据存储区块以执行读写指令包括:对数据存储区块中的一个或多个目标页以页为单位整体执行添加写。

在一些实施方式中,读写指令包括修改写;访问物理区块地址所指向的数据存储区块以执行读写指令包括:擦除数据存储区块的全部数据,并对数据存储区块中的一个或多个目标页以页为单位整体执行添加写。

在一些实施方式中,连接总线为外围组件互联扩展总线或串口硬盘总线;通过连接总线访问固态硬盘包括:将设备的中央处理器或南桥连接到外围组件互联扩展切换器或串口硬盘控制器以在外围组件互联扩展总线或串口硬盘总线上与固态硬盘通信。

在一些实施方式中,闪存转换备份区为单层单元架构的与非门闪存存储器。

下面根据图2、3所示的具体实施例进一步阐述本发明的具体实施方式。

固态硬盘具有读写速度快,质量轻,抗震性能好,存储空间大,数据保存时间长等优点,所以固态硬盘逐渐得到广泛应用。随着现代社会的工作、生活越来越多地依赖于计算机等电子设备,一个用户可能会有多个设备需要配备固态硬盘。

固态硬盘包括印刷电路板、固定于印刷电路板的存储模块以及固定于印刷电路板并为存储模块正常工作提供支持的辅助电路模块,如为存储模块提供电源的电源电路以及保护存储模块不被损坏的保护电路等,存储模块包括具备数据存储功能的存储电路、数据传输触片组以及用于控制存储电路经数据传输触片组传输数据的存储控制电路,辅助电路模块包括辅助电路接口触片组以及电源电路、保护电路,现有技术中,存储模块和辅助电路模块均固定于同一印刷电路板,也即是存储模块和辅助电路模块均固定于单块电路板。基于此,当存储模块存储容量不足或存储模块出现损坏,并需要更换存储模块时,而由于存储模块和辅助电路模块均固定于印刷电路板,需要存储模块和辅助电路模块整体更换,导致更换成本较高;且常常由于单个功能电路出现故障或者损坏而导致整体报废。

固态硬盘电路模块,一般包括印刷电路板,印刷电路板上设有用于实现存储功能的各电路单元,这些电路单元包括控制电路单元、存储电路单元、电源电路单元,同时,印刷电路板的一端设置具有sata接口的标准插接件。

一个典型的flash芯片由package,die,plane,block(区块)和page(也)组成,其中die内部可以通过3d堆栈技术扩展容量,譬如三星的v-nand每层容量都有128gb(16gb),通过3d堆栈技术可以实现最多24层堆栈,这意味着24层堆栈的总容量将达到384gb。

block是擦除操作的最小单位,page是写入动作的最小单位,一个block包含若干个pages。当写入资料到nandflash上去时,无论是写一个字节还是很多东西,必须以page为单位,即只写一个字节上去也要写一个page。要修改一个字节,必须要擦除整个block,擦除的最小单元是block。

本发明实施例将所有block划分为闪存转换备份区块(对应图2、3中的ssd_a)和数据存储区块(对应图2、3中的ssd_b/c/d)。在正常操作环境底下,ssd_a只负责存储ssd_b/c/d的ftl数据。由于ssd_a只负责这项功能,因此可以针对系统配置的ssd最大数量来选择ssd_a的容量大小来达到降低成本。ssd_a的写入时机为当系统关机时,ssd_b/c/d将会负责在有效断电前将各自的ftl信息备份写入到ssd_a中。

ssd_b/c/d则与一般常用的ssd一样,负责存储系统数据。差别在于当系统关机时,会将各自的ftl信息写入至ssd_a中备份。当下次开机侦测到ftl损毁使,系统将使用ssd_a中的备份来读取/写入ssd_b/c/d。

当系统开机且ftl无损毁时,数据路径参见图2中的箭头,与一般ssd的使用状况无异。相应地当系统关机时,ssd_b/c/d会将ftl数据透过参见图2中的路径备份至ssd_a中。

当系统开机且ftl损毁时,数据路径参见图3中的箭头,系统将先读取ssd_a中损毁ssd的ftl信息,以正常使用固态硬盘。然后系统就可以藉由此信息确定一个新的备份区域(即冗余备份区块)来将备份文件以图3中的路径重新写入至冗余备份区块中。

应当说明在选择ssd_a的型号时,优先选择slc(单层单元架构)类型的ssd。由于slcssd性能好且nandflash较mlc/tlc/qlc(2/3/4层单元架构)强壮许多。另外依照操作模式来考虑,ssd_a的写入机会只存在于每次系统关机的时候,因此block的损耗率相较于其他ssd几乎是微乎其微。

在本申请所提供的实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

从上述实施例可以看出,本发明实施例提供的固态硬盘读写方法,通过响应于设备启动而通过连接总线访问固态硬盘的闪存转换层并请求索引信息;响应于未从闪存转换层获得索引信息,而通过连接总线访问固态硬盘的闪存转换备份区块以获取索引信息;响应于从闪存转换备份区块获得索引信息,而基于索引信息访问固态硬盘的多个数据存储区块的技术方案,能够使得在ftl区块损毁的情况下固态硬盘仍然可以正常读写。

需要特别指出的是,上述固态硬盘读写方法的各个实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于固态硬盘读写方法也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在所述实施例之上。

基于上述目的,本发明实施例的第二个方面,提出了一种方便地扫描cpld管脚,快速分析电源时序状态的固态硬盘读写装置的一个实施例。装置包括:

处理器;

控制器,存储有处理器可运行的程序代码,处理器在运行程序代码时执行以下步骤:

响应于设备启动而通过连接总线访问固态硬盘的闪存转换层并请求索引信息;

响应于未从闪存转换层获得索引信息,而通过连接总线访问固态硬盘的闪存转换备份区块以获取索引信息;

响应于从闪存转换备份区块获得索引信息,而基于索引信息访问固态硬盘的多个数据存储区块。

在一些实施方式中,步骤还包括:响应于从闪存转换备份区块获得索引信息,而基于索引信息访问固态硬盘的多个数据存储区块的同时,还在固态硬盘的多个数据存储区块中选择一个数据存储区块作为索引信息的冗余备份区块。

在一些实施方式中,步骤还包括:响应于从闪存转换层获得索引信息,而基于索引信息直接访问固态硬盘的多个数据存储区块。

在一些实施方式中,步骤还包括:响应于检测到使固态硬盘下电的指令,而在固态硬盘下电之前将多个数据存储区块中各自的索引变更信息更新到闪存转换备份区块或冗余备份区块。

在一些实施方式中,索引信息包括记载固态硬盘中逻辑区块地址和物理区块地址之间的对应关系的映射表;基于索引信息访问固态硬盘的多个数据存储区块包括:根据读写指令中的逻辑区块地址在映射表中确定对应的物理区块地址,并访问物理区块地址所指向的数据存储区块以执行读写指令。

在一些实施方式中,读写指令包括添加写;访问物理区块地址所指向的数据存储区块以执行读写指令包括:对数据存储区块中的一个或多个目标页以页为单位整体执行添加写。

在一些实施方式中,读写指令包括修改写;访问物理区块地址所指向的数据存储区块以执行读写指令包括:擦除数据存储区块的全部数据,并对数据存储区块中的一个或多个目标页以页为单位整体执行添加写。

在一些实施方式中,连接总线为外围组件互联扩展总线或串口硬盘总线;通过连接总线访问固态硬盘包括:将设备的中央处理器或南桥连接到外围组件互联扩展切换器或串口硬盘控制器以在外围组件互联扩展总线或串口硬盘总线上与固态硬盘通信。

从上述实施例可以看出,本发明实施例提供的固态硬盘读写装置,通过响应于设备启动而通过连接总线访问固态硬盘的闪存转换层并请求索引信息;响应于未从闪存转换层获得索引信息,而通过连接总线访问固态硬盘的闪存转换备份区块以获取索引信息;响应于从闪存转换备份区块获得索引信息,而基于索引信息访问固态硬盘的多个数据存储区块的技术方案,能够使得在ftl区块损毁的情况下固态硬盘仍然可以正常读写。

需要特别指出的是,上述装置的实施例采用了所述固态硬盘读写方法的实施例来具体说明各模块的工作过程,本领域技术人员能够很容易想到,将这些模块应用到所述固态硬盘读写方法的其他实施例中。当然,由于所述固态硬盘读写方法实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于所述装置也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在所述实施例之上。

以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。

所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上所述的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1