掌桥专利:专业的专利平台
掌桥专利
首页

数据读取方法、装置、固态硬盘和计算机可读存储介质

文献发布时间:2024-04-18 19:52:40


数据读取方法、装置、固态硬盘和计算机可读存储介质

技术领域

本发明涉及存储技术领域,具体而言,涉及一种数据读取方法、装置、固态硬盘和计算机可读存储介质。

背景技术

在主机上,有些程序需要在删除命令后确认数据是否已被清零了,对于非自加密硬盘,删除命令后的数据区已擦除,读取时,传给主机就会是全零。对于自加密硬盘,由于读取的数据,也都要经过加解密引擎,才能传给主机。因此自加密硬盘上全零的数据,经过加解密引擎传给主机会是乱数据,但这样,主机侧就无法确认返回数据的有效性,也就无法确认自加密硬盘上被删除数据的位置,是否是真的已完成数据清理了。

在现有技术,是将有效数据,零数据分段传输,也就是在配置数据传输项目时,将有效数据的解密传输与零数据旁路的传输分开进行,在传输每一段有效数据和每一段零数据均会占用一个数据传输项目资源,若零数据较多时,会占用较多的数据传输项目资源,并且传输每一段有效数据和零数据时都需要从内存中获取每一段有效数据和零数据对应的数据传输项目,因此,浪费内存,数据传输效率较低。

发明内容

有鉴于此,本发明的目的在于提供一种数据读取方法、装置、固态硬盘和计算机可读存储介质,以解决现有技术中存在的浪费内存,数据传输效率较低的问题。

本发明实施例采用的技术方案如下:

第一方面,本发明提供一种数据读取方法,应用于固态硬盘,方法包括:

根据接收的读取数据请求,将所述读取数据请求对应的多个待传输数据写入至内存中对应的数据单元中,并对位带进行设置,获得目标位带;所述数据单元与所述目标位带的每个比特位一一对应,所述目标位带的每个比特位的值表征所述数据单元中存储的待传输数据为有效数据或者零数据,所述有效数据为加密后的数据;

根据所述目标位带中各比特位的值所对应的数据单元的传输方式,返回各所述数据单元中存储的待传输数据。

在可选的实施方式中,所述根据所述目标位带中各比特位的值所对应的数据单元的传输方式,返回各所述数据单元中存储的待传输数据,包括:

若所述数据单元在所述目标位带中对应比特位的值表征所述数据单元中存储的待传输数据为有效数据,则采用解密传输的方式返回所述数据单元中存储的待传输数据;

若所述数据单元在所述目标位带中对应比特位的值表征所述数据单元中存储的待传输数据为零数据,则采用旁路传输的方式返回所述数据单元中存储的待传输数据。

在可选的实施方式中,所述根据接收的读取数据请求,将所述读取数据请求对应的多个待传输数据写入至所述内存中对应的数据单元中,并对位带进行设置,获得目标位带,包括:

通过闪存转换层对所述读取数据请求进行解析,获取解析结果;

根据所述解析结果,将所述读取数据请求对应的待传输数据写入至所述内存中对应的数据单元中,并对所述位带进行设置,获得目标位带。

在可选的实施方式中,所述根据所述解析结果,将所述读取数据请求对应的待传输数据写入至所述内存中对应的数据单元中,并对所述位带进行设置,获得目标位带,包括:

若所述解析结果表征所述待传输数据为有效数据,将所述有效数据写入所述数据单元中,并在所述位带中将所述数据单元对应的比特位的值置为所述有效数据对应的值;

若所述解析结果表征所述待传输数据为零数据,将所述零数据写入所述数据单元中,并在所述位带中将所述数据单元对应的比特位的值置为所述零数据对应的值。

在可选的实施方式中,若所述内存为非环绕内存,则所述非环绕内存包括至少一个非环绕内存段,所述根据接收的读取数据请求,将所述读取数据请求对应的多个待传输数据写入至所述内存中对应的数据单元中,并对位带进行设置,获得目标位带,包括:

根据接收的所述读取数据请求,将多个所述待传输数据写入所述非环绕内存段中对应的数据单元中,并对每个所述非环绕内存段对应的位带进行设置,获得每个所述非环绕内存段对应的目标位带;

所述根据所述目标位带中各比特位的值所对应的数据单元的传输方式,返回各所述数据单元中存储的待传输数据,包括:

根据各所述非环绕内存段对应的目标位带中的各比特位的值,确定所述非环绕内存段上对应的多个数据单元中存储的所述待传输数据各自的传输方式,按照所述传输方式返回全部所述非环绕内存段对应的各数据单元中存储的待传输数据。

在可选的实施方式中,所述内存为环绕内存,所述根据接收的读取数据请求,将所述读取数据请求对应的多个待传输数据写入至所述内存中对应的数据单元中,并对位带进行设置,获得目标位带,包括:

根据接收的读取数据请求,每次将一个所述待传输数据写入至所述环绕内存中对应的一个数据单元中,并对所述位带进行设置,获得目标位带;

所述根据所述目标位带中各比特位的值所对应的数据单元的传输方式,返回各所述数据单元中存储的待传输数据,包括:

所述环绕内存中的数据单元每写入一个待传输数据,就从所述环绕内存中根据所述目标位带中各比特位的值所对应的数据单元的传输方式返回一个数据单元中存储的待传输数据,直到所述读取数据请求对应的待传输数据全部返回。

在可选的实施方式中,所述根据所述解析结果,将所述读取数据请求对应的待传输数据写入至所述内存中对应的数据单元中,并对所述位带进行设置,获得目标位带,包括:

若写入所述数据单元的为所述有效数据,则将所述数据单元在所述位带中对应比特位的值置0;

若写入所述数据单元的为所述零数据,则将所述数据单元在所述位带中对应比特位的值置1。

第二方面,本发明提供一种数据读取装置,应用于固态硬盘,所述装置包括:

位带建立模块,用于根据接收的读取数据请求,将所述读取数据请求对应的多个待传输数据写入至内存中对应的数据单元中,并对位带进行设置,获得目标位带;所述数据单元与所述目标位带的每个比特位一一对应,所述目标位带的每个比特位的值表征所述数据单元中存储的待传输数据为有效数据或者零数据,所述有效数据为加密后的数据;

数据返回模块,用于根据所述目标位带中各比特位的值所对应的数据单元的传输方式,返回各所述数据单元中存储的待传输数据。

第三方面,本发明提供一种固态硬盘,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机程序,所述处理器可执行所述计算机程序以实现前述实施方式任一项所述的数据读取方法。

第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如前述实施方式中任一项的数据读取方法。

本发明实施例提供的数据读取方法、装置、固态硬盘和计算机可读存储介质,方法包括:根据接收的读取数据请求,将读取数据请求对应的多个待传输数据写入至内存中对应的数据单元中,并对位带进行设置,获得目标位带,数据单元与目标位带的每个比特位一一对应,目标位带的每个比特位的值表征数据单元中存储的待传输数据为有效数据或者零数据,有效数据为加密后的数据,根据目标位带中各比特位的值所对应的传输方式,返回各数据单元中存储的待传输数据。由于目标位带的每个比特位的值可以表征对应数据单元中存储的待传输数据是有效数据还是零数据,故根据目标位带就可以按照零数据和有效数据各自对应的传输方式对对应的数据单元中存储的待传输数据进行传输,并不需要对每个数据单元均配置数据传输项目,从而实现节约内存并提高数据传输的效率。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了现有技术中数据读取方法的示意图;

图2示出了本发明实施例提供的数据读取方法的一种流程示意图;

图3示出了本发明实施例提供的数据读取方法的另一种流程示意图;

图4示出了本发明实施例提供的数据读取方法的一种示例图;

图5示出了本发明实施例提供的数据读取方法的再一种流程示意图;

图6示出了本发明实施例提供的数据读取方法的非环绕内存的示例图;

图7示出了采用非环绕内存传输方式进行数据读取的示意图;

图8示出了本发明实施例提供的数据读取方法的又一种流程示意图;

图9示出了环绕内存读写数据的一种示意图;

图10示出了采用环绕内存传输方式进行数据读取的示意图;

图11示出了本发明实施例提供的数据读取装置的模块框图;

图12示出了本发明实施例提供的固态硬盘的框图。

图标:121-数据单元;130-非环绕内存段;200-数据读取装置;210-位带建立模块;220-数据返回模块;300-固态硬盘;310-处理器;320-存储器。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

在本发明的描述中,需要说明的是,若出现术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

此外,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

需要说明的是,在不冲突的情况下,本发明的实施例中的特征可以相互结合。

在SSD(Solid State Disk,固态硬盘)中为了保护写入SSD的数据不被窃取,SSD控制器中会增加一个加解密引擎,用于把接收到的数据,加密后再存储到盘内的非易失性介质上,同时读取时经过相关授权认证,再把介质上的数据解密返回,这类增加了加解密引擎后的固态硬盘为SED(Self-encrypting drive,自加密硬盘)。SED的前端为了保证接口性能,通常会内置有直接内存访问(Direct Memory Access,DMA)引擎。写入时,DMA从接口接收主机传来的明文数据,传给安全引擎加密数据后,再传到缓存中;读取时,DMA从缓存读取密文数据,传给安全引擎解密数据后,再把明文数据传向接口发送给主机。

SSD相比于机械硬盘(Hard Disk Drive,HDD),由于存储介质的差异,SSD不能对写过的地方继续覆写,需要对写过的位置,先擦除了再写。但是若是等到写入时,再去擦了再写,就会带来写入操作额外的延时,降低性能。为此,主机针对SSD的特点,增加删除(Trim)功能的特性,它的作用就是当主机把一段数据无效后(如文件系统删除文件),通过它通知SSD,某些区域的数据已经无效了,这样SSD就可以提前把介质上的零块擦除掉,写入时,就可以直接写入,不影响性能了。

在主机上,有些程序需要在删除命令后确认数据是否已被清零了,对于非自加密硬盘,删除命令后的数据区已擦除,读取时,传给主机就会是全零。对于自加密硬盘,由于读取的数据,也都要经过加解密引擎,才能传给主机。因此自加密硬盘上全零的数据,经过加解密引擎传给主机会是乱数据,但这样,主机侧就无法确认返回数据的有效性,也就无法确认自加密硬盘上被删除数据的位置,是否是真的已完成数据清理了。

请参阅图1,图1示出了现有技术实施例提供的数据读取方法的示意图。在现有技术,是将有效数据和零数据分段传输,也就是在配置数据传输项目时,将有效数据的解密传输与零数据的旁路传输分开进行,在传输每一段有效数据和每一段零数据时均会占用一个数据传输项目资源,若零数据较多时,会占用较多的数据传输项目资源,并且传输每一段有效数据和零数据时,都需要从内存中获取每一段有效数据和零数据对应的数据传输项目,因此,浪费内存,数据传输效率较低。

针对上述问题,发明人经过长期的研究发现,并提出了本发明实施例提供的数据读取方法、装置、固态硬盘和计算机可读存储介质,由于目标位带的每个比特位的值可以表征对应数据单元中存储的待传输数据是有效数据还是零数据,故根据目标位带就可以按照零数据和有效数据各自对应的传输方式对对应的数据单元中存储的待传输数据进行传输,并不需要对每个数据单元均配置数据传输项目,从而实现节约内存并提高数据传输的效率。其中,具体的数据读取方法在后续的实施例中进行详细的说明。

请参阅图2,图2示出了本发明实施例提供的数据读取方法的流程示意图。该数据读取方法可以应用于固态硬盘。下面将以固态硬盘为例,说明本实施例的具体流程。下面将针对图2所示的流程进行详细的阐述,该数据读取方法具体可以包括以下步骤:

步骤S110:根据接收的读取数据请求,将读取数据请求对应的多个待传输数据写入至内存中对应的数据单元中,并对位带进行设置,获得目标位带;数据单元与目标位带的每个比特位一一对应,目标位带的每个比特位的值表征数据单元中存储的待传输数据为有效数据或者零数据,有效数据为加密后的数据。

在一些实施方式中,固态硬盘可以与主机连接,主机可以发送读取数据请求至固态硬盘,固态硬盘可以根据该读取数据请求,将读取数据请求对应的多个待传输数据写入至内存中对应的数据单元中,并对位带进行设置,获得目标位带。目标位带中已经设置完成数据单元对应的比特位的值。

在一些实施方式中,读取数据请求可以包括多个待传输数据对应的逻辑地址以及多个待传输数据的大小总和,固态硬盘可以根据多个待传输数据的逻辑地址,找出与逻辑地址对应的多个待传输数据,将多个待传输数据写入对应的数据单元中,并对位带进行设置,获得目标位带。

需要说明的是,由于固态硬盘中支持的最小数据是扇区(Data Unit,扇区中包括512Byte),因此内存中有多个扇区,每个扇区为一个数据单元,每个数据单元中可以存储512Byte的待传输数据。固态硬盘执行删除命令(如Trim命令)对对应数据区的数据进行删除,被删除数据的数据区中没有数据,因此由零数据表示被删除数据的数据区的数据。

步骤S120:根据目标位带中各比特位的值所对应的数据单元的传输方式,返回各数据单元中存储的待传输数据。在一些实施方式中,零数据对应的传输方式与有效数据对应的传输方式不同,若数据单元在目标位带中对应比特位表征数据单元中存储的待传输数据为有效数据,则采用有效数据对应的传输方式返回数据单元;若数据单元在目标位带中对应比特位表征数据单元中存储的待传输数据为零数据,则采用零数据对应的传输方式返回数据单元。

因此,本发明实施例提供的数据读取方法根据接收的读取数据请求,将读取数据请求对应的多个待传输数据写入至内存中对应的数据单元中,并对位带进行设置,获得目标位带,数据单元与目标位带的每个比特位一一对应,目标位带的每个比特位的值表征数据单元中存储的待传输数据为有效数据或者零数据,有效数据为加密后的数据,根据目标位带中各比特位的值所对应的传输方式,返回各数据单元中存储的待传输数据。由于目标位带的每个比特位的值可以表征对应数据单元中存储的待传输数据是有效数据还是零数据,故根据目标位带就可以按照零数据和有效数据各自对应的传输方式对对应的数据单元中存储的待传输数据进行传输,并不需要对每个数据单元均配置数据传输项目,从而实现节约内存并提高数据传输的效率。

在图2的基础上,请参阅图3,上述步骤S110具体可以包括以下步骤:

步骤S111:通过闪存转换层对读取数据请求进行解析,获取解析结果。

在一些实施方式中,读取数据请求可以包括多个待传输数据的逻辑地址以及多个待传输数据的大小总和,固态硬盘可以根据多个待传输数据的大小总和,为多个待传输数据准备与多个待传输数据的大小总和相等的内存以及位带,以便于将多个待传输数据写入已准备好的内存中,并对已准备好的位带进行设置。

在一些实施方式中,固态硬盘中存在闪存转换层(Flash Translation Layer,FTL),闪存转换层完成从逻辑地址到闪存物理地址的映射。读取数据请求中可以包括多个待传输数据的逻辑地址(logical block address,lba),因此,固态硬盘可以根据读取数据请求中包括的待传输数据的逻辑地址,通过闪存转换层查询l2p映射表可以找到物理地址(physics block address,pba)的待传输数据为有效数据,通过闪存转换层查询l2p映射表无法找到物理地址的待传输数据为零数据,因此可以根据解析结果,从闪存中获取多个待传输数据,将多个待传输数据写入已经准备好的内存中,并对已准备好的位带进行设置,获取目标位带。

需要说明的是,l2p映射表是一个以lba为下标的一维数组,数组的每一个元素都是一个pba,所有的pba能够寻址到固态硬盘的任何闪存空间,也就是通过l2p映射表查找有效数据对应的pba,就可以在闪存中获取有效数据。

步骤S112:根据解析结果,将读取数据请求对应的待传输数据写入至内存中对应的数据单元中,并对位带进行设置,获得目标位带。在一些实施方式中,固态硬盘在对位带进行设置时,可以根据数据单元中存储的待传输数据为有效数据还是零数据,在数据单元对应的比特位上赋予不同的值。若解析结果表征待传输数据为有效数据,则将有效数据写入数据单元中,并在位带中将数据单元对应的比特位的值置为有效数据对应的值;若解析结果表征待传输数据为零数据,则将零数据写入数据单元中,并在位带中将数据单元对应的比特位的值置为有效数据对应的值。基于此,上述步骤S110中对位带进行设置,获得目标位带具体可以包括:若写入数据单元的为有效数据,则将数据单元在位带中对应比特位的值置0;若写入数据单元的为零数据,则将数据单元在位带中对应比特位的值置1。也就是说,在对位带设置完成后,如果目标位带中的比特位的值是0,则表明该比特位对应的数据单元中存储的待传输数据为有效数据;如果目标位带中的比特位的值是1,则表明该比特位对应的数据单元中存储的待传输数据为零数据。

请参阅图4,图4示出了本发明实施例提供的数据读取方法的过程示意图。固态硬盘在对位带进行设置时,根据每个数据单元121中存储的待传输数据为有效数据还是零数据,在位带的对应比特位中置0或1,在待传输数据中Y表征有效数据,0表征零数据,固态硬盘将目标位带和存储有待传输数据的内存组合起来配置数据传输项目,就可将待传输数据进行传输,并不需要如图1所示的对每个数据单元均配置数据传输项目,从而实现提高数据传输的效率并节约内存。

在一些实施方式中,零数据对应的传输方式为旁路传输,有效数据对应的传输方式为解密传输,若数据单元在目标位带中对应比特位的值表征数据单元中存储的待传输数据为有效数据,则采用解密传输的方式返回数据单元;若数据单元在目标位带中对应比特位的值表征数据单元中存储的待传输数据为零数据,则采用旁路传输的方式返回数据单元。

如图4所示,若数据单元在目标位带中对应比特位的值为0,则表征在目标位带中该比特位对应的数据单元121中存储的待传输数据为有效数据,采用解密传输的方式返回该数据单元121,X表示解密传输后的有效数据;若数据单元在目标位带中特位的值为1,则表征在目标位带中该比特位对应的数据单元为零数据,采用旁路传输的方式返回该数据单元。需要说明的是,解密传输是通过解密引擎对数据单元中存储的有效数据进行解密后再对该数据单元中存储的有效数据进行传输,旁路传输是不通过解密引擎对数据单元中存储的零数据进行解密,直接将据单元中存储的零数据进行传输。

在本实施例中,固态硬盘会根据读取数据请求读取数据到内存中,再对内存中的数据进行传输。当内存容量足够大时,内存中可以存储读取数据请求对应的全部待传输数据,在此情形下,可以通过非环绕内存传输的方式进行数据读取。当内存容量较小时,内存中不能存储全部待传输数据,在此情形下,可以通过环绕内存传输的方式完成数据读取。下面,分别对非环绕内存传输方式和环绕内存传输方式进行数据读取的实现过程进行详细说明。

对于非环绕内存传输的方式,在图2的基础上,请参阅图5,上述步骤S110具体可以包括以下步骤:

步骤S111A:根据接收的读取数据请求,将多个待传输数据写入非环绕内存段中对应的数据单元中,并对每个非环绕内存段对应的位带进行设置,获得每个非环绕内存段对应的目标位带。

在本实施例中,内存为非环绕内存,非环绕内存包括至少一个非环绕内存段,固态硬盘根据读取数据包括的多个待传输数据的大小总和以及非环绕内存的使用情况,为多个待传输数据准备非环绕内存以及位带。例如,如图6所示,非环绕内存中有未被使用的非环绕内存段130A、非环绕内存段130B以及非环绕内存段130C,则未被使用的非环绕内存段就可以作为为多个待传输数据准备的内存,若多个待传输数据的大小总和与非环绕内存段130A的存储容量相等,则仅将非环绕内存段130A作为为多个待传输数据准备的内存;若多个待传输数据的大小总和与非环绕内存段130A和非环绕内存段130B的存储容量的总和相等,则将非环绕内存段130A以及非环绕内存段130B作为为多个待传输数据准备的内存;若多个待传输数据的大小总和与非环绕内存段130A、非环绕内存段130B和非环绕内存段130C的存储容量的总和相等,则将非环绕内存段130A非环绕内存段130B以及非环绕内存段130C作为为多个待传输数据准备的内存。

在一些实施方式中,请参阅图6以及图7,假设多个待传输数据的大小总和为12KB,将固态硬盘中的非环绕内存段130A、非环绕内存段130B以及非环绕内存段130C作为为多个待传输数据准备的内存,一个数据单元可以非环绕内存段130A可以存储3KB的待传输数据,也就是,非环绕内存段130A中有6个数据单元121,非环绕内存段130B可以存储5KB的待传输数据,也就是,非环绕内存段130B中有10个数据单元121,非环绕内存段130C可以存储4KB的待传输数据,也就是,非环绕内存段130C中有8个数据单元121,在同一非环绕内存段中的待传输数据为地址连续的数据,将多个待传输数据分别写入非环绕内存段130A对应的数据单元121、非环绕内存段130B对应的数据单元121以及非环绕内存段130C对应的数据单元121,例如,将3KB的待传输数据分别写入非环绕内存段130A的6个数据单元121中,并对非环绕内存段130A对应的位带进行设置,获取目标位带,其中,若数据单元121中存储的为有效数据,则将数据单元在位带中对应比特位的值置0;若数据单元121A中存储的为零数据,则将数据单元在位带中对应比特位的值置1;非环绕内存段130A包括的多个待传输数据中Y表征有效数据,0表征零数据,并根据目标位带和非环绕内存段130A对应的数据单元中存储的3KB待传输数据配置数据传输项目A,同上述方法,配置数据传输项目B和数据传输项目C。

相应的,上述步骤S120具体可以包括以下步骤:

步骤S121A:根据各非环绕内存段对应的目标位带中的各比特位的值,确定非环绕内存段上对应的多个数据单元中存储的待传输数据各自的传输方式,按照传输方式全部返回非环绕内存段对应的各数据单元中存储的待传输数据。

在一些实施方式中,针对各非环绕内存段对应的数据传输项目,按照各非环绕内存段对应的目标位带中各比特位的值对应的传输方式返回非环绕内存段对应的各数据单元中存储的待传输数据。如图7所示,先将数据传输项目A对应的待传输数据全部返回后,再将数据传输项目B对应的待传输数据全部返回,最后将数据传输项目C对应的待传输数据全部返回,以数据传输项目A为例,非环绕内存段130A对应的目标位带中比特位的值为1,表示该比特位对应的数据单元121中存储的为零数据,则旁路传输该比特位对应的数据单元121中存储的零数据,非环绕内存段130A对应的目标位带中比特位的值为0,表示该比特位对应的数据单元121中存储的为有效数据,则解密传输该比特位对应的数据单元121中存储的有效数据。

对于环绕内存传输的方式,在图2的基础上,请参阅图8,上述步骤S110具体可以包括以下步骤:

步骤S111B:根据接收的读取数据请求,每次将一个待传输数据写入至环绕内存中对应的一个数据单元中,并对位带进行设置,获得目标位带。

在本实施例中,内存为环绕内存,在环绕内存传输机制下可以利用一小块内存(即环绕内存)形成FIFO(First Input First Output,先入先出队列),因此只需要配置一个数据传输项目来完成数据读取和传输。

在一些实施方式中,若待传输数据为有效数据,则从闪存芯片上读取出一个数据单元大小的待传输数据写入环绕内存对应的数据单元中;若待传输数据为零数据,则将零数据写入环绕内存对应的数据单元中,并根据该待传输数据为有效数据还是零数据,对位带进行设置,获取目标位带,其中,若该数据单元存储的待传输数据为有效数据,在位带中将该数据单元对应的比特位的值置0;若该数据单元存储的待传输数据为零数据,在位带中将该数据单元对应的比特位的值置1。写满1次环绕内存为1个轮次,执行多个轮次直到读取数据请求对应的多个待传输数据全部返回。例如,环绕内存的大小为100KB,则环绕内存中有200个数据单元,待传输数据为300KB,则需要进行3个轮次才可以将读取数据请求对应的多个待传输数据全部返回。

需要说明的是,针对环绕内存传输方式,请参阅图9,写入和读取均从左侧开始位置开始,先写入后读取,当写指针到达右侧结束位置后,返回开始位置继续写入,同理,读指针到达右侧结束位置后,返回左侧开始位置继续读数据,当读指针等于写指针时,等待写指针继续写入数据后,再继续读数据,依次形成环绕内存数据读取与传输方式。上述步骤S120具体可以包括以下步骤:

步骤S121B:环绕内存中的数据单元每写入一个待传输数据,就从环绕内存中根据目标位带中各比特位的值所对应的数据单元的传输方式返回一个数据单元中存储的待传输数据,直到读取数据请求对应的待传输数据全部返回。

在一些实施方式中,如图10所示,以第一轮次为例,固态硬盘检测到环绕内存中写入一个数据单元大小的待传输数据,就从环绕内存中根据目标位带中各比特位的值所对应的数据单元的传输方式,返回一个数据单元中存储的待传输数据,直到读取数据请求对应的待传输数据全部返回。若数据单元121在目标位带中比特位的值为1,则旁路传输数据单元121中存储的待传输;若数据单元在目标位带中比特位的值为0,则解密传输数据单元121中存储的待传输数据。

需要说明的是,在非环绕内存的传输方式下,读取数据请求对应的多个待传输数据全部写入内存后,才启动DMA依次对每个非环绕数据段对应的待传输数据进行数据传输;在环绕内存传输方式下,预先启动DMA,在环绕内存中的数据单元写入一个数据单元大小的待传输数据,DMA就对该数据单元中存储的待传输数据进行数据传输。

本发明实施例提供的数据读取方法,在环绕内存传输方式下,可以利用环绕内存形成FIFO,因此只需要配置一个数据传输项目就可以完成读取数据请求对应的多个待传输数据的全部返回。固态硬盘在接收到主机发送的读取数据请求后,对读取数据请求进行解析,则可以将待传输数据写入环绕内存中对应的数据单元中,并根据数据单元中存储的待传输数据为有效数据还是零数据配置位带与数据单元的对应关系,获取目标位带,在传输数据单元时,根据目标位带对数据单元中存储的待传输数据进行传输,因此,可以支持在环绕内存传输方式的情况下通过目标位带进行数据读取。

请参阅图11,图11示出了本发明实施例提供的数据读取装置200的模块框图。该数据读取装置200应用于上述固态硬盘,下面将针对图8所示的框图进行阐述,数据读取装置200包括:位带建立模块210以及数据返回模块220,其中:

位带建立模块210,用于根据接收的读取数据请求,将读取数据请求对应的多个待传输数据写入至内存中对应的数据单元中,并对位带进行设置,获得目标位带;数据单元与目标位带的每个比特位一一对应,目标位带的每个比特位的值表征数据单元中存储的待传输数据为有效数据或者零数据,有效数据为加密后的数据;

数据返回模块220,用于根据目标位带中各比特位的值所对应的数据单元的传输方式,返回各数据单元中存储的待传输数据。

可选地,数据返回模块220具体用于:若数据单元在目标位带中对应比特位的值表征数据单元中存储的待传输数据为有效数据,则采用解密传输的方式返回数据单元中存储的待传输数据;若数据单元在目标位带中对应比特位的值表征数据单元中存储的待传输数据为零数据,则采用旁路传输的方式返回数据单元中存储的待传输数据。

可选地,位带建立模块210具体还用于:通过闪存转换层对读取数据请求进行解析,获取解析结果;根据解析结果,将读取数据请求对应的待传输数据写入至内存中对应的数据单元中,并对位带进行设置,获得目标位带。

可选地,位带建立模块210具体还用于:若解析结果表征待传输数据为有效数据,将有效数据写入数据单元中,并在位带中将数据单元对应的比特位的值置为有效数据对应的值;若解析结果表征待传输数据为零数据,将零数据写入数据单元中,并在位带中将数据单元对应的比特位的值置为零数据对应的值。

可选地,内存为非环绕内存,则非环绕内存包括至少一个非环绕内存段,位带建立模块210具体还用于:根据接收的读取数据请求,将多个待传输数据写入非环绕内存段中对应的数据单元中,并对每个非环绕内存段对应的位带进行设置,获得每个非环绕内存段对应的目标位带。

可选地,数据返回模块220具体还用于:根据各非环绕内存段对应的目标位带中的各比特位的值,确定非环绕内存段上对应的多个数据单元中存储的待传输数据各自的传输方式,按照传输方式全部返回非环绕内存段对应的各数据单元中存储的待传输数据。

可选地,内存为环绕内存,位带建立模块210具体还用于:根据接收的读取数据请求,每次将一个待传输数据写入至环绕内存中对应的一个数据单元中,并对位带进行设置,获得目标位带。

可选地,数据返回模块220具体还用于:环绕内存中的数据单元每写入一个待传输数据,就从环绕内存中根据目标位带中各比特位的值所对应的数据单元的传输方式返回一个数据单元中存储的待传输数据,直到读取数据请求对应的待传输数据全部返回。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本发明所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

请参照图12,本发明实施例还提供一种固态硬盘300,该固态硬盘300可以包括一个或多个如下部件:处理器310和存储器320,处理器310和存储器320电连接。

其中,存储器320用于存储计算机程序或数据,存储器320可以是闪存芯片。处理器310用于读/写存储器320中存储的数据或程序,并执行相应的功能。例如,当存储器320存储的计算机程序被处理器310执行时,可实现本发明各实施例所揭示的数据读取方法。

应当理解的是,图12所示的结构仅为固态硬盘300的一种结构示例图,固态硬盘300还可包括比图12中所示更多或者更少的组件,或者具有与图10所示不同的配置。图12中所示的各组件可以采用硬件、软件或其组合实现。

本发明实施例还提供了一种计算机可读存储介质,该计算机可读介质中存储有计算机程序,计算机程序可被处理器310执行时实现上述方法实施例中所描述的数据读取方法。

计算机可读存储介质可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质具有执行上述方法中的任何方法步骤的程序代码的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码可以例如以适当形式进行压缩。

以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 基于永临结合的地下工程改扩建用新型接口及其构建方法
  • 一种地下工程的永临结合装配式结构及施工方法
技术分类

06120116334846