CN104699414B - 一种数据读写方法及存储设备 - Google Patents
一种数据读写方法及存储设备 Download PDFInfo
- Publication number
- CN104699414B CN104699414B CN201310662204.7A CN201310662204A CN104699414B CN 104699414 B CN104699414 B CN 104699414B CN 201310662204 A CN201310662204 A CN 201310662204A CN 104699414 B CN104699414 B CN 104699414B
- Authority
- CN
- China
- Prior art keywords
- data
- address
- bank
- source address
- read
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Read Only Memory (AREA)
Abstract
本发明实施例公开了一种数据读写方法及存储设备。本发明实施例公开的数据读写方法应用于存储设备中,存储设备包括控制器和存储器,方法包括:控制器获取存储器中的任意一个数据读写的源地址(A,B,C);根据预设的并行度将源地址中的Bank地址A划分为高位A1和低位A2;控制器将划分后的源地址按照预定的移位规则移位得到与该源地址对应的目标地址;控制器根据待读取数据的目标地址从对应的源地址读取待读取数据或根据待写入数据的目标地址将待写入数据写入对应的源地址。本发明实施例能够充分利用闪存Bank级别的并行特性,提高IO性能,降低数据读写延迟,且能够避免双重映射的开销。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种数据读写方法及存储设备。
背景技术
随着计算机技术的不断发展,输入输出(Input Output,IO)已成为整个计算机系统性能提升的瓶颈,传统的硬盘受限于其机械式的物理设计结构,IO性能提升已达到极限,新型存储介质的引入是未来的趋势。目前,作为机械式硬盘的一种补充和替代,固态硬盘已经在计算机领域取得了较为广泛的应用。
固态硬盘一般采用闪存(Flash)作为存储介质,由于材料本身的特性,固态硬盘与机械式硬盘相比有着明显的差异。Flash介质以页为最小的写入单位,通常为4kb或8kb,而现有操作系统读写数据都是按照机械硬盘的扇区进行的,通常为512Byte,而且Flash以块为最小擦除单位,一个块通常包括32、64或128个页,在数据更新时,未擦除就无法写入。因此,在引入固态硬盘作为存储介质时,为了能够更好的兼容现有的操作系统,闪存控制器中通常需要一个闪存转换层(Flash translation layer,FTL),FTL中维护了一个映射表,实现逻辑块地址(Logical Block Address,LBA)到物理块地址(Physical Block Address,PBA)的转换,这样,操作系统就可以像原来一样直接操作逻辑块地址LBA,从而实现了对闪存介质的访问。
我们知道一个闪存的物理块地址通常由三部分组成:Bank地址、块地址和页地址。一个Bank内有很多个块,不同的Bank中的数据访问在设备上使用的是不同的数据传输通路,数据传输是并行的,相互之间不影响,而在同一个Bank内的数据访问则是串行的。系统软件的很多IO操作都是对一段地址连续数据的访问,这些数据所对应连续闪存页面通常是物理上的同一个Bank,因此,数据的访问在硬件上是串行的。现有技术中,例如在闪存中写入一段地址连续数据,数据分布会如图6所示,即一段地址连续的数据会写入到闪存中同一个Bank的同一块中,也就是说,这种方式没有充分利用闪存Bank的并行特性,增加了闪存访问的读写延迟。
另外,虽然FTL使得闪存设备能够很好的兼容现有的操作系统,但是也存在很多问题,比如FTL地址映射成为闪存访问性能提升的瓶颈,此外,FTL的引入使得文件系统和闪存设备之间存在“双重地址映射”开销,增加了系统对于元数据的管理和存储开销。因此,有必要提供一种新的方法解决上述问题。
发明内容
本发明实施例提供了一种数据读写方法及存储设备,能够提高IO性能,降低数据读写延迟,且能够避免双重映射的开销。
本发明实施例第一方面提供了一种数据读写方法,所述数据读写方法应用于存储设备中,所述存储设备包括控制器和存储器,所述方法包括:
所述控制器获取所述存储器中的任意一个数据读写的源地址(A,B,C),其中A为Bank地址,B为块地址,C为页面地址;
所述控制器根据预设的并行度将所述源地址中的Bank地址A划分为高位A1和低位A2,所述预设的并行度指的是预设的将目标地址连续的数据写入所述存储器时同时写入的Bank的数量和读出所述目标地址连续的数据时从所述存储器中同时读取的Bank的数量;
所述控制器将划分后的源地址按照预定的移位规则进行移位得到与所述源地址对应的目标地址;
所述控制器根据待读取数据的目标地址从对应的源地址读取所述待读取数据或根据待写入数据的目标地址将所述待写入数据写入对应的源地址。
结合本发明实施例的第一方面,在本发明实施例第一方面的第一种实施方式中,所述划分后的源地址为(A1,A2,B,C),所述预定的移位规则为(B,A1,C,A2)。
结合本发明实施例的第一方面,或第一方面的第一种实施方式,在本发明实施例第一方面的第二种实施方式中,所述源地址中的Bank地址A的位数为其中m为所述存储器中的Bank的总数量,m的取值为2的整数次幂。
结合本发明实施例第一方面的第二种实施方式,在本发明实施例第一方面的第三种实施方式中,所述低位A2的位数为其中n为所述预设的并行度,n的取值为2的整数次幂,所述高位A1的位数为与的差值。
结合本发明实施例第一方面的第三种实施方式,在本发明实施例第一方面的第四种实施方式中,所述预设的并行度n小于或等于所述存储器中的Bank的总数量m。
本发明实施例第二方面提供了一种存储设备,包括:
获取单元,用于获取存储器中的任意一个数据读写的源地址(A,B,C),其中A为Bank地址,B为块地址,C为页面地址;
位数划分单元,用于根据预设的并行度将所述源地址中的Bank地址A划分为高位A1和低位A2,所述预设的并行度指的是预设的将目标地址连续的数据写入所述存储器时同时写入的Bank的数量和读出所述目标地址连续的数据时从所述存储器中同时读取的Bank的数量;
处理单元,用于将划分后的源地址按照预定的移位规则进行移位得到与所述源地址对应的目标地址;
数据读写单元,用于根据待读取数据的目标地址从对应的源地址读取所述待读取数据或根据待写入数据的目标地址将所述待写入数据写入对应的源地址。
结合本发明实施例的第二方面,在本发明实施例第二方面的第一种实施方式中,所述划分后的源地址为(A1,A2,B,C),所述预定的移位规则为(B,A1,C,A2)。
结合本发明实施例的第二方面,或第二方面的第一种实施方式,在本发明实施例第二方面的第二种实施方式中,所述源地址中的Bank地址A的位数为其中m为所述存储设备中的Bank的总数量,m的取值为2的整数次幂。
结合本发明实施例第二方面的第二种实施方式,在本发明实施例第二方面的第三种实施方式中,所述低位A2的位数为其中n为所述预设的并行度,n的取值为2的整数次幂,所述高位A1的位数为与的差值。
结合本发明实施例第二方面的第三种实施方式,在本发明实施例第二方面的第四种实施方式中,所述预设的并行度n小于或等于所述存储器中的Bank的总数量m。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明实施例中,控制器首先获取存储器中的任意一个数据读写的源地址(A,B,C);根据预设的并行度将源地址中的Bank地址A划分为高位A1和低位A2;将划分后的源地址按照预定的移位规则进行移位得到与该源地址对应的目标地址;根据待读取数据的目标地址从对应的源地址读取待读取数据或根据待写入数据的目标地址将待写入数据写入对应的源地址。本发明实施例中,控制器会预先建立存储器中的数据读写源地址与数据读写目标地址之间的一一对应关系,在将地址连续的数据写入存储器时,控制器会按照预先设置的并行度将数据同时写入多个Bank,在读取地址连续的数据时,控制器会按照预先设置的并行度同时从多个Bank读取数据,充分利用了Bank的并行特性,提高了IO性能,降低了数据读写延迟,且能够避免双重映射的开销。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明数据读写方法一个应用场景图;
图2为本发明数据读写方法一个实施例示意图;
图3为本发明存储设备一个实施例示意图;
图4为本发明存储设备另一实施例示意图;
图5为本发明地址连续的数据在存储器中的写入位置一个实施例示意图;
图6为背景技术中地址连续的数据在存储器中的写入位置示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种数据读写方法及存储设备,能够提高IO性能,降低数据读写延迟,且能够避免双重映射的开销。
请参阅图1,图1是本发明实施例数据读写方法一个应用场景图,本发明实施例的数据读写方法应用于存储设备100,存储设备100通过连接设备110连接到主机120。
其中,主机120可以包括当前技术已知的任何计算设备,如服务器、台式计算机等等。在主机120内部,安装有操作系统以及其他应用程序。
连接设备110可以包括当前技术已知的存储设备和主机之间的任何接口,如光纤交换机,或者其他现有的交换机。
存储设备100可以包括当前技术已知的需要直接地址映射的存储设备,如固态硬盘。
存储设备100包含控制器101及存储器102。控制器101相当于存储设备100的处理器,安装有操作系统和其他软件程序。在控制器101内部,还可以包含缓存(cache)(图中未示出),缓存是中央处理器(Central Processing Unit,CPU)和存储器102之间的缓冲存储器。存储器102可以为硬盘,缓存的体积比硬盘小,但速度比硬盘快。
控制器101获取存储器102中的任意一个数据读写的源地址(A,B,C),其中A为Bank地址,B为块地址,C为页面地址;根据预设的并行度将源地址中的Bank地址A划分为高位A1和低位A2,预设的并行度指的是预设的将目标地址连续的数据写入存储器102时同时写入的Bank的数量和读出目标地址连续的数据时从存储器102中同时读取的Bank的数量;控制器101将划分后的源地址按照预定的移位规则进行移位得到与该源地址对应的目标地址;控制器101根据待读取数据的目标地址从对应的源地址读取待读取数据或根据待写入数据的目标地址将待写入数据写入对应的源地址。
另外,本实施例划分后的源地址为(A1,A2,B,C),预定的移位规则为(B,A1,C,A2)。
而源地址中的Bank地址A的位数为其中m为存储器102中的Bank的总数量,m的取值为2的整数次幂。
低位A2的位数为其中n为预设的并行度,n的取值为2的整数次幂,高位A1的位数为与的差值。
预设的并行度n小于或等于存储器102中的Bank的总数量m。
本实施例中,控制器首先获取存储器中的任意一个数据读写的源地址(A,B,C);根据预设的并行度将源地址中的Bank地址A划分为高位A1和低位A2;将划分后的源地址按照预定的移位规则进行移位得到与该源地址对应的目标地址;根据待读取数据的目标地址从对应的源地址读取待读取数据或根据待写入数据的目标地址将待写入数据写入对应的源地址。本实施例中,控制器会预先建立存储器中的数据读写源地址与数据读写目标地址之间的一一对应关系,在将地址连续的数据写入存储器时,控制器会按照预先设置的并行度将数据同时写入多个Bank,在读取地址连续的数据时,控制器会按照预先设置的并行度同时从多个Bank读取数据,充分利用了Bank的并行特性,提高了IO性能,降低了数据读写延迟,且能够避免双重映射的开销。
下面介绍本发明实施例提供的数据读写方法,请参阅图2,本发明实施例中数据读写方法一个实施例包括:
201、控制器获取存储器中的任意一个数据读写的源地址(A,B,C);
通常来说,一个存储器例如闪存(FLASH)或动态随机存取存储器(DRAM),会包含多个Bank,一个Bank内有多个块,一个块内包含多个页面,所以存储器中的一个存储地址通常由Bank地址,块地址,页面地址三部分组成。
控制器获取存储器中的任意一个数据读写的源地址(A,B,C),其中,A就代表Bank地址,B代表块地址,C代表页面地址。
202、根据预设的并行度将源地址中的Bank地址A划分为高位A1和低位A2;
因现有技术中将一段地址连续的数据写入存储器时,会将数据依次写到同一个Bank的同一块中,没有利用存储器的并行特性,写入效率不高。因此,本实施例中,可预先设置并行度,并行度指的是将目标地址连续的数据写入存储器时同时写入的Bank的数量和读出目标地址连续的数据时从存储器中同时读取的Bank的数量。即设置并行度的目的是将一串目标地址连续的数据同时写入多个Bank,及读取一串目标地址连续的数据时从多个Bank同时读取,以充分利用存储器的并行特性。
源地址中的Bank地址A的位数为其中m为存储器中的Bank的总数量,m的取值为2的整数次幂,即m的值可以为2,4,8,16等,Bank地址A中的一位就代表2个Bank。
控制器根据预设的并行度将源地址中的Bank地址A划分为高位A1和低位A2,低位A2的位数为其中,n为预设的并行度,因Bank地址A中的一位代表2个Bank,所以并行度n的取值为2的整数次幂,即n的值可以为1,2,4,8,16等,高位A1的位数为与的差值。
其中,预设的并行度n小于等于存储器中的Bank的总数量m。
对源地址的Bank位进行划分之后的源地址为(A1,A2,B,C)。
203、将划分后的源地址按照预定的移位规则进行移位得到与该源地址对应的目标地址;
预定的移位规则为(B,A1,C,A2),即控制器通过改变源地址的高位和低位来改变Bank地址,以得到与该源地址对应的目标地址。
经过步骤201至203的处理后,存储器中的每个源地址与数据读写的目标地址都具有一一对应的关系,即在存储器中,控制器可以根据每个读写数据的目标地址找到与该目标地址对应的源地址。
204、根据待读取数据的目标地址从对应的源地址读取待读取数据或根据待写入数据的目标地址将待写入数据写入对应的源地址。
控制器获取待读取数据的目标地址,寻找与该目标地址对应的源地址,从源地址读取待读取数据;或者控制器获取待写入数据的目标地址,寻找与该目标地址对应的源地址,将待写入数据写入源地址。
下面举例说明本发明实施例提供的数据读写方法:
假如存储器为闪存,闪存中有16个Bank,每个Bank中有64个块,每个块中有64个页,不同的Bank中的数据访问在闪存上使用的是不同的数据传输通路,数据传输是并行的,相互之间不影响,而在同一个Bank内的数据访问则是串行的。
在任意一个闪存地址(A,B,C)中,Bank地址A的位数为位,即4位,块地址B的位数为位,即6位,页面地址C的位数为位,即6位。
预设的并行度为n如果为4,则Bank地址A的高位A1有2位,低位A2同样有2位。
下面以为闪存中的四个源地址建立与目标地址之间的一一对应关系为例进行说明:
闪存的0号Bank,0号块,0号页的地址为(0000,000000,000000),这个地址即为源地址。其中,高位A1为Bank地址的前两位00,低位A2也为00,按照(B,A1,C,A2)的移位规则移位后,得到与源地址(0000,000000,000000)对应的目标地址为(0000,000000,000000);
1号Bank中,0号块,0号页的地址为(0001,000000,000000),高位A1为00,低位A2为01,按照(B,A1,C,A2)的移位规则移位后,得到与源地址(0001,000000,000000)对应的目标地址为(0000,000000,000001);
2号Bank中,0号块,0号页的地址为(0010,000000,000000),高位A1为00,低位A2为10,按照(B,A1,C,A2)的移位规则移位后,得到与源地址(0010,000000,000000)对应的目标地址为(0000,000000,000010);
3号Bank中,0号块,0号页的地址为(0011,000000,000000),高位A1为00,低位A2为11,按照(B,A1,C,A2)的移位规则移位后,得到与源地址(0011,000000,000000)对应的目标地址为(0000,000000,000011)。
在对连续的目标地址(0000,000000,000000)、(0000,000000,000001)、(0000,000000,000010)、(0000,000000,000011)的数据进行读写时,就转换为对源地址(0000,000000,000000)、(0001,000000,000000)、(0010,000000,000000)、(0011,000000,000000)的读写,即将目标地址连续的数据读写分布到了闪存的不同Bank的块中,充分利用了闪存Bank级别的并行特性。
本实施例中,控制器首先获取存储器中的任意一个数据读写的源地址(A,B,C);根据预设的并行度将源地址中的Bank地址A划分为高位A1和低位A2;将划分后的源地址按照预定的移位规则进行移位得到与该源地址对应的目标地址;根据待读取数据的目标地址从对应的源地址读取待读取数据或根据待写入数据的目标地址将待写入数据写入对应的源地址。本实施例中,控制器会预先建立存储器中的数据读写源地址与数据读写目标地址之间的一一对应关系,在将地址连续的数据写入存储器时,控制器会按照预先设置的并行度将数据同时写入多个Bank,在读取地址连续的数据时,控制器会按照预先设置的并行度同时从多个Bank读取数据,充分利用了Bank的并行特性,提高了IO性能,降低了数据读写延迟,且能够避免双重映射的开销。
下面介绍本发明实施例提供的存储设备,请参阅图3,本实施例的存储设备300包括:
获取单元301,用于获取存储器中的任意一个数据读写的源地址(A,B,C),其中A为Bank地址,B为块地址,C为页面地址;
位数划分单元302,用于根据预设的并行度将源地址中的Bank地址A划分为高位A1和低位A2,预设的并行度指的是预设的将目标地址连续的数据写入存储器时同时写入的Bank的数量和读出目标地址连续的数据时从存储器中同时读取的Bank的数量;
处理单元303,用于将划分后的源地址按照预定的移位规则进行移位得到与该源地址对应的目标地址;
数据读写单元304,用于根据待读取数据的目标地址从对应的源地址读取待读取数据或根据待写入数据的目标地址将待写入数据写入对应的源地址。
为便于理解,下面以一个实际应用场景对本实施例中的存储设备的各单元之间的交互方式进行描述:
通常来说,一个存储器例如闪存(FLASH)或动态随机存取存储器(DRAM),会包含多个Bank,一个Bank内有多个块,一个块内包含多个页面,所以存储器中的一个存储地址通常由Bank地址,块地址,页面地址三部分组成。
获取单元301获取存储器中的任意一个数据读写的源地址(A,B,C),其中,A就代表Bank地址,B代表块地址,C代表页面地址。
因现有技术中将一段地址连续的数据写入存储器时,会将数据依次写到同一个Bank的同一块中,没有利用存储器的并行特性,写入效率不高。因此,本实施例中,可预先设置并行度,并行度指的是将目标地址连续的数据写入存储器时同时写入的Bank的数量和读出目标地址连续的数据时从存储器中同时读取的Bank的数量。即设置并行度的目的是将一串目标地址连续的数据同时写入多个Bank,读取一串目标地址连续的数据时从多个Bank同时读取,以充分利用存储器的并行特性。
位数划分单元302对获取单元301获取的源地址进行位数划分。具体地,位数划分单元302根据预设的并行度将源地址中的Bank地址A划分为高位A1和低位A2。
源地址中的Bank地址A的位数为其中m为存储器中的Bank的总数量,m的取值为2的整数次幂,即m的值可以为2,4,8,16等,Bank地址A中的一位就代表2个Bank。
划分后低位A2的位数为其中,n为预设的并行度,因Bank地址A中的一位代表2个Bank,所以并行度n的取值为2的整数次幂,即n的值可以为1,2,4,8,16等,高位A1的位数为与的差值。
其中,预设的并行度n小于等于存储器中的Bank的总数量m。
对源地址的Bank位进行划分之后的源地址为(A1,A2,B,C)。
处理单元303将划分后的源地址按照预定的移位规则进行移位得到与该源地址对应的目标地址。
本实施例中,预定的移位规则为(B,A1,C,A2),即通过改变源地址的高位和低位来改变Bank地址,以得到与该源地址对应的目标地址。
经过上述处理后,存储器中的每个数据读写源地址与数据读写的目标地址都具有一一对应的关系,即在存储器中,数据读写单元304可以根据每个读写数据的目标地址找到与该目标地址对应的源地址。
最后,数据读写单元304获取待读取数据的目标地址,寻找与该目标地址对应的源地址,从源地址读取待读取数据;或者控制器304获取待写入数据的目标地址,寻找与该目标地址对应的源地址,将待写入数据写入源地址。
下面举例说明本发明实施例提供的数据读写方法:
假如存储器为闪存,闪存中有16个Bank,每个Bank中有64个块,每个块中有64个页,不同的Bank中的数据访问在闪存上使用的是不同的数据传输通路,数据传输是并行的,相互之间不影响,而在同一个Bank内的数据访问则是串行的。
在任意一个闪存地址(A,B,C)中,Bank地址A的位数为位,即4位,块地址B的位数为位,即6位,页面地址C的位数为位,即6位。
预设的并行度为n为4,Bank地址A的高位A1有2位,低位A2同样有2位。
下面以为闪存中的四个源地址建立与目标地址之间的一一对应关系为例进行说明:
闪存的0号Bank,0号块,0号页的地址为(0000,000000,000000),这个地址即源地址。其中,高位A1为Bank地址的前两位00,低位A2也为00,按照(B,A1,C,A2)的移位规则移位后,得到与源地址(0000,000000,000000)对应的目标地址为(0000,000000,000000);
1号Bank中,0号块,0号页的地址为(0001,000000,000000),高位A1为00,低位A2为01,按照(B,A1,C,A2)的移位规则移位后,得到与源地址(0001,000000,000000)对应的目标地址为(0000,000000,000001);
2号Bank中,0号块,0号页的地址为(0010,000000,000000),高位A1为00,低位A2为10,按照(B,A1,C,A2)的移位规则移位后,得到与源地址(0010,000000,000000)对应的目标地址为(0000,000000,000010)。
3号Bank中,0号块,0号页的地址为(0011,000000,000000),高位A1为00,低位A2为11,按照(B,A1,C,A2)的移位规则移位后,得到与源地址(0011,000000,000000)对应的目标地址为(0000,000000,000011)。
在对连续的目标地址(0000,000000,000000)、(0000,000000,000001)、(0000,000000,000010)、(0000,000000,000011)的数据进行读写时,就转换为对源地址(0000,000000,000000)、(0001,000000,000000)、(0010,000000,000000)、(0011,000000,000000)的数据的读写,即将目标地址连续的数据读写分布到了闪存的不同Bank的块中,充分利用了闪存Bank级别的并行特性。
本实施例中,数据读写单元304将目标地址连续的4个数据写入存储器后,数据在存储器的写入位置如图5所示。从图5可以看出,目标地址连续的4个数据被同时写入到了存储器中的4个Bank,充分利用了闪存Bank级别的并行特性。对比图6提供的现有技术的做法,其是将目标地址连续的4个数据依次写入到存储器的同一个Bank的块中,并没有利用闪存Bank级别的并行特性,将会增加存储器访问的读写延迟。因此,本实施例提供的数据读写方法提高了数据读写效率。
本实施例中,获取单元首先获取存储器中的任意一个数据读写的源地址(A,B,C);位数划分单元根据预设的并行度将源地址中的Bank地址A划分为高位A1和低位A2;位数划分单元将划分后的源地址按照预定的移位规则进行移位得到与该源地址对应的目标地址;数据读写单元根据待读取数据的目标地址从对应的源地址读取待读取数据或根据待写入数据的目标地址将待写入数据写入对应的源地址。本实施例中,处理单元会预先建立存储器中的数据读写源地址与数据读写目标地址之间的一一对应关系,数据读写单元在将地址连续的数据写入存储器时,控制器会按照预先设置的并行度将数据同时写入多个Bank,在读取地址连续的数据时,控制器会按照预先设置的并行度同时从多个Bank读取数据,充分利用了Bank的并行特性,提高了IO性能,降低了数据读写延迟,且能够避免双重映射的开销。
下面对本发明实施例中的存储设备400进行进一步说明,请参阅图4,存储设备400可以包括当前技术已知所有需要直接地址映射的存储设备,本发明具体实施例并不对存储设备400具体实现做限定。存储设备400包括:
处理器(processor)410,通信接口(Communications Interface)420,存储器(memory)430,总线440。
处理器410,通信接口420,存储器430通过总线440完成相互间的通信。
通信接口420,用于与网元通信。
处理器410,用于执行程序432。
具体地,程序432可以包括程序代码,所述程序代码包括计算机操作指令。
处理器410可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器430,用于存放程序432。存储器430可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序432具体可以包括:
获取单元301,用于获取存储器中的任意一个数据读写的源地址(A,B,C),其中A为Bank地址,B为块地址,C为页面地址;
位数划分单元302,用于根据预设的并行度将源地址中的Bank地址A划分为高位A1和低位A2,预设的并行度指的是预设的将目标地址连续的数据写入存储器时同时写入的Bank的数量和读出目标地址连续的数据时从存储器中同时读取的Bank的数量;
处理单元303,用于将划分后的源地址按照预定的移位规则进行移位得到与该源地址对应的目标地址;
数据读写单元304,用于根据待读取数据的目标地址从对应的源地址读取待读取数据或根据待写入数据的目标地址将待写入数据写入对应的源地址。
程序432中各单元的具体实现可以参见图3所示实施例中的相应单元,在此不赘述。
本实施例中,处理器首先获取存储器中的任意一个数据读写的源地址(A,B,C);根据预设的并行度将源地址中的Bank地址A划分为高位A1和低位A2;将划分后的源地址按照预定的移位规则进行移位得到与该源地址对应的目标地址;根据待读取数据的目标地址从对应的源地址读取待读取数据或根据待写入数据的目标地址将待写入数据写入对应的源地址。本实施例中,处理器会预先建立存储器中的数据读写源地址与数据读写目标地址之间的一一对应关系,在将地址连续的数据写入存储器时,处理器会按照预先设置的并行度将数据同时写入多个Bank,在读取地址连续的数据时,处理器会按照预先设置的并行度同时从多个Bank读取数据,充分利用了Bank的并行特性,提高了IO性能,降低了数据读写延迟,且能够避免双重映射的开销。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种数据读写方法,所述数据读写方法应用于存储设备中,所述存储设备包括控制器和存储器,其特征在于,所述方法包括:
所述控制器获取所述存储器中的任意一个数据读写的源地址(A,B,C),其中A为Bank地址,B为块地址,C为页面地址;
所述控制器根据预设的并行度将所述源地址中的Bank地址A划分为高位A1和低位A2,所述预设的并行度指的是预设的将目标地址连续的数据写入所述存储器时同时写入的Bank的数量和读出所述目标地址连续的数据时从所述存储器中同时读取的Bank的数量;
所述控制器将划分后的源地址按照预定的移位规则进行移位得到与所述源地址对应的目标地址;
所述控制器根据待读取数据的目标地址从对应的源地址读取所述待读取数据或根据待写入数据的目标地址将所述待写入数据写入对应的源地址;
所述划分后的源地址为(A1,A2,B,C),所述预定的移位规则为(B,A1,C,A2)。
2.如权利要求1所述的数据读写方法,其特征在于,所述源地址中的Bank地址A的位数为其中m为所述存储器中的Bank的总数量,m的取值为2的整数次幂。
3.如权利要求2所述的数据读写方法,其特征在于,所述低位A2的位数为其中n为所述预设的并行度,n的取值为2的整数次幂,所述高位A1的位数为与的差值。
4.如权利要求3所述的数据读写方法,其特征在于,所述预设的并行度n小于或等于所述存储器中的Bank的总数量m。
5.一种存储设备,其特征在于,包括:
获取单元,用于获取存储器中的任意一个数据读写的源地址(A,B,C),其中A为Bank地址,B为块地址,C为页面地址;
位数划分单元,用于根据预设的并行度将所述源地址中的Bank地址A划分为高位A1和低位A2,所述预设的并行度指的是预设的将目标地址连续的数据写入所述存储器时同时写入的Bank的数量和读出所述目标地址连续的数据时从所述存储器中同时读取的Bank的数量;
处理单元,用于将划分后的源地址按照预定的移位规则进行移位得到与所述源地址对应的目标地址;
数据读写单元,用于根据待读取数据的目标地址从对应的源地址读取所述待读取数据或根据待写入数据的目标地址将所述待写入数据写入对应的源地址;
所述划分后的源地址为(A1,A2,B,C),所述预定的移位规则为(B,A1,C,A2)。
6.如权利要求5所述的存储设备,其特征在于,所述源地址中的Bank地址A的位数为其中m为所述存储设备中的Bank的总数量,m的取值为2的整数次幂。
7.如权利要求6所述的存储设备,其特征在于,所述低位A2的位数为其中n为所述预设的并行度,n的取值为2的整数次幂,所述高位A1的位数为与的差值。
8.如权利要求7所述的存储设备,其特征在于,所述预设的并行度n小于或等于所述存储器中的Bank的总数量m。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310662204.7A CN104699414B (zh) | 2013-12-09 | 2013-12-09 | 一种数据读写方法及存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310662204.7A CN104699414B (zh) | 2013-12-09 | 2013-12-09 | 一种数据读写方法及存储设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104699414A CN104699414A (zh) | 2015-06-10 |
CN104699414B true CN104699414B (zh) | 2018-02-13 |
Family
ID=53346598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310662204.7A Active CN104699414B (zh) | 2013-12-09 | 2013-12-09 | 一种数据读写方法及存储设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104699414B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111526091B (zh) * | 2019-02-03 | 2021-09-03 | 华为技术有限公司 | 存储器执行写操作的方法以及存储器 |
CN109992212B (zh) * | 2019-04-10 | 2020-03-27 | 苏州浪潮智能科技有限公司 | 一种数据写入方法和一种数据读取方法 |
CN113553009B (zh) * | 2021-07-27 | 2022-06-03 | 湖南国科微电子股份有限公司 | 数据读取方法、数据写入方法及数据读写方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101727295A (zh) * | 2008-10-31 | 2010-06-09 | 西安奇维测控科技有限公司 | 一种基于虚拟块闪存地址映射的数据写入及读出方法 |
CN102043729A (zh) * | 2009-10-20 | 2011-05-04 | 杭州华三通信技术有限公司 | 动态随机访问存储器的内存管理方法及系统 |
CN102591816A (zh) * | 2011-01-17 | 2012-07-18 | 上海华虹集成电路有限责任公司 | 一种多通道Nandflash存储系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120054427A1 (en) * | 2010-08-27 | 2012-03-01 | Wei-Jen Huang | Increasing data access performance |
-
2013
- 2013-12-09 CN CN201310662204.7A patent/CN104699414B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101727295A (zh) * | 2008-10-31 | 2010-06-09 | 西安奇维测控科技有限公司 | 一种基于虚拟块闪存地址映射的数据写入及读出方法 |
CN102043729A (zh) * | 2009-10-20 | 2011-05-04 | 杭州华三通信技术有限公司 | 动态随机访问存储器的内存管理方法及系统 |
CN102591816A (zh) * | 2011-01-17 | 2012-07-18 | 上海华虹集成电路有限责任公司 | 一种多通道Nandflash存储系统 |
Non-Patent Citations (1)
Title |
---|
Extending the lifetime of flash-based storage through reducing write amplification from file systems;Lu youyou 等;《11th Usenix Conference on File and Storage Technologies 》;20130215;第257-270页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104699414A (zh) | 2015-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104781801B (zh) | 使固态驱动器配置成采用存储模式或存储器模式操作的技术 | |
CN103946816B (zh) | 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram) | |
CN102012791B (zh) | 基于Flash的数据存储PCIE板卡 | |
CN102985909B (zh) | 为良好分格的对象提供高扩展性网络存储的方法和设备 | |
CN105354152B (zh) | 非易失性存储器及磨损均衡方法 | |
CN108062253A (zh) | 一种内核态与用户态的通信方法、装置及终端 | |
CN103946811A (zh) | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 | |
CN107784121A (zh) | 一种基于非易失内存的日志文件系统的小写优化方法 | |
CN107729268B (zh) | 一种基于capi接口的内存扩展装置与方法 | |
JP2017016691A (ja) | テーブル・オブ・コンテンツエントリを使用してデータを格納するためのシステムおよび方法 | |
CN102123176B (zh) | 一种网络存储系统空间分配管理方法及装置 | |
CN104317753B (zh) | 存储设备及其数据读写方法 | |
CN106844227A (zh) | 基于分组机制的固态硬盘磨损均衡方法及装置 | |
CN104615550A (zh) | 一种存储设备坏块的处理方法、装置及存储设备 | |
CN103927276A (zh) | 基于Zynq-7000的PCM FMC扩展板及其工作方法 | |
CN103927215B (zh) | 基于内存盘与SSD硬盘的kvm虚拟机调度的优化方法及系统 | |
CN104699414B (zh) | 一种数据读写方法及存储设备 | |
CN104714894A (zh) | 一种分层的基于随机映射的相变内存磨损均衡方法及系统 | |
CN104115230A (zh) | 高效pcms刷新机制背景 | |
CN106354890A (zh) | 一种基于N‑ary树结构的随机访问的文件系统的实现方法 | |
CN108509355A (zh) | 一种用于SSD的SLC Cache的方法和装置 | |
CN107291392A (zh) | 一种固态硬盘及其读写方法 | |
CN102999441A (zh) | 一种细粒度内存访问的方法 | |
CN103473258A (zh) | 云存储文件系统 | |
CN104298474A (zh) | 一种基于服务端与外部缓存系统的外接式计算设备加速方法与实现该方法的设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |