发明内容
本发明实施例提供一种数据地址查询方法,旨在解决现有技术中,FTL算法因有限的RAM资源而必须大量的从FLASH读取映射表并置换到快取区时,读取过程产生明显的顿感,导致产生命中失败惩罚,降低读取速率的问题。
本发明实施例是这样实现的,提供一种数据地址查询方法,包括以下步骤:
创建全局连续地址区块位图,所述全局连续区块位图包括多个逻辑地址区块,每个所述逻辑地址区块包括连续的逻辑地址范围;
根据地址查找请求中的待查找逻辑地址,在全局连续地址区块位图中确定目标逻辑地址区块,并根据所述目标逻辑地址区块的状态判断所述目标逻辑地址区块中逻辑地址范围对应的实体地址是否连续;
若所述目标逻辑地址区块中逻辑地址范围对应的实体地址连续,则检测所述目标逻辑地址区块中逻辑地址范围对应的实体地址的起始实体地址是否存储在连续实体地址快取区中,所述连续实体地址快取区包括多个所述逻辑地址区块中连续的逻辑地址范围对应的起始实体地址;
若所述目标逻辑地址区块中逻辑地址范围对应的实体地址的起始实体地址存储在所述连续实体地址快取区中,则基于所述待查找逻辑地址及所述目标逻辑地址区块中逻辑地址范围对应的起始实体地址读取目标实体地址。
更进一步地,所述创建全局连续地址区块位图,包括:
初始化所述逻辑地址区块,确定每个所述逻辑地址区块中连续的逻辑地址范围,其中,每个所述逻辑地址区块中存储的逻辑地址范围不同;
将所有所述逻辑地址区块根据区块位依序排列,创建所述全局连续地址区块位图。
更进一步地,所述根据地址查找请求中的待查找逻辑地址,在全局连续地址区块位图中确定目标逻辑地址区块,并根据所述目标逻辑地址区块的状态判断所述目标逻辑地址区块中逻辑地址范围对应的实体地址是否连续,包括:
从所述地址查找请求中提取所述待查找逻辑地址,在所述全局连续地址区块位图中查找所述待查找逻辑地址对应的目标逻辑地址区块;
判断所述目标逻辑地址区块对应的状态是否为第一状态;
若所述目标逻辑地址区块对应的状态为所述第一状态,则判断所述目标逻辑地址区块中逻辑地址范围对应的实体地址连续;
若所述目标逻辑地址区块对应的状态非所述第一状态,则判断所述目标逻辑地址区块中逻辑地址范围对应的实体地址不连续。
更进一步地,所述基于所述待查找逻辑地址及所述目标逻辑地址区块中逻辑地址范围对应的起始实体地址读取目标实体地址,包括:
基于所述目标逻辑地址区块中逻辑地址范围的起始逻辑地址,根据逻辑地址之间的距离差计算所述待查找逻辑地址在所述目标逻辑地址区块中的目标位置;
基于所述目标逻辑地址区块中逻辑地址范围对应的起始实体地址,获取所述待查找逻辑地址所在目标位置的所述目标实体地址。
更进一步地,在所述判断所述目标逻辑地址区块中逻辑地址范围对应的实体地址不连续之后,方法还包括:
读取内存中对应所述待查找逻辑地址的映射表,基于所述映射表查询所述目标实体地址,其中,所述映射表包括逻辑地址与实体地址之间的映射关系。
更进一步地,在所述检测所述目标逻辑地址区块中逻辑地址范围对应的实体地址的起始实体地址是否存储在连续实体地址快取区中之后,所述方法还包括:
若所述目标逻辑地址区块中逻辑地址范围对应的实体地址的起始实体地址未存储在所述连续实体地址快取区中,则读取内存中对应所述待查找逻辑地址的映射表的单位数据,所述单位数据包括与逻辑地址范围对应的起始实体地址;
将所述的单位数据中的所述起始实体地址读取到所述连续实体地址快取区。
本发明实施例还提供一种数据地址查询装置,包括:
创建模块,用于创建全局连续地址区块位图,所述全局连续区块位图包括多个逻辑地址区块,每个所述逻辑地址区块包括连续的逻辑地址范围;
判断模块,用于根据地址查找请求中的待查找逻辑地址,在全局连续地址区块位图中确定目标逻辑地址区块,并根据所述目标逻辑地址区块的状态判断所述目标逻辑地址区块中逻辑地址范围对应的实体地址是否连续;
检测模块,用于若所述目标逻辑地址区块中逻辑地址范围对应的实体地址连续,则检测所述目标逻辑地址区块中逻辑地址范围对应的实体地址的起始实体地址是否存储在连续实体地址快取区中,所述连续实体地址快取区包括多个所述逻辑地址区块中连续的逻辑地址范围对应的起始实体地址;
第一读取模块,用于若所述目标逻辑地址区块中逻辑地址范围对应的实体地址的起始实体地址存储在所述连续实体地址快取区中,则基于所述待查找逻辑地址及所述目标逻辑地址区块中逻辑地址范围对应的起始实体地址读取目标实体地址。
进一步地,所述创建模块包括:
初始化单元,用于初始化所述逻辑地址区块,确定每个所述逻辑地址区块中连续的逻辑地址范围,其中,每个所述逻辑地址区块中存储的逻辑地址范围不同;
创建单元,用于将所有所述逻辑地址区块根据区块位依序排列,创建所述全局连续地址区块位图。
本发明实施例还提供一种电子设备,包括存储器、处理器以及存储在所述存储器中并能够在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如任一实施例中所述的一种数据地址查询方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如任一实施例中所述的一种数据地址查询方法。
本发明所达到的有益效果,本申请通过创建包括多个逻辑地址区块的全局连续地址区块位图,每个逻辑地址区块包括连续的逻辑地址范围,提供的全局连续地址区块位图占用小空间存放了大量的逻辑地址范围;此外,根据目标逻辑地址区块的状态判断目标逻辑地址区块中逻辑地址范围对应的实体地址在连续的情况下才需要对连续实体地址快取区进行查找,且连续实体地址快取区中只需记载连续的逻辑地址范围中起始逻辑地址对应的起始实体地址,当命中失败时,对内存读取则不需将整张映射表的数据全部读出,只需基于待查找逻辑地址及目标逻辑地址区块中逻辑地址范围对应的起始实体地址读取目标实体地址,能够降低命中失败惩罚,提高读取速率;且只需记载起始实体地址,所占用的空间小,能够降低连续实体地址快取区查询数据量以及增加数据记录量,记录起始实体地址量越多,能够增加命中成功率。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本申请提供的全局连续地址区块位图占用小空间存放了大量的逻辑地址范围。此外,根据目标逻辑地址区块的状态判断目标逻辑地址区块中逻辑地址范围对应的实体地址在连续的情况下才需要对连续实体地址快取区进行查找,且连续实体地址快取区中只需记载连续的逻辑地址范围中起始逻辑地址对应的起始实体地址,当命中失败时,对内存读取则不需将整张映射表的数据全部读出,只需基于待查找逻辑地址及目标逻辑地址区块中逻辑地址范围对应的起始实体地址读取目标实体地址,能够降低命中失败惩罚,提高读取速率;且只需记载起始实体地址,所占用的空间小,能够降低连续实体地址快取区查询数据量以及增加数据记录量,记录起始实体地址量越多,能够增加命中成功率。
实施例一
图1a示出了本申请实施例提供的一种数据地址查询方法的流程图,如图1a所示,该方法包括步骤S10至S40。各个步骤的具体实现原理如下:
S10、创建全局连续地址区块位图,全局连续区块位图包括多个逻辑地址区块,每个逻辑地址区块包括连续的逻辑地址范围。
在本实施例中,提供的一种数据地址查询方法所运用的电子设备可以通过有线连接方式或者无线连接方式获取读取命令等数据。需要指出的是,上述无线连接方式可以包括但不限于3G/4G连接、WiFi连接、蓝牙连接、WiMAX连接、Zigbee连接、UWB(ultrawideband)连接、以及其他现在已知或将来开发的无线连接方式。
需要说明的是,在实际的应用场景里,内存会存放大量的用户数据,同一个档案的数据会以连续状态的逻辑地址存放于内存中,例如:一张照片的大小若是512KB,则此512KB数据的逻辑地址皆为连续的。由此,在读取同一个档案时则会以连续逻辑地址的方式查找实体地址,从实体地址中读取数据。其中,逻辑地址可以指程序和指令中表示的一种地址,实际地址可以指处理器对存储器进行访问时实际寻址所使用的地址。此外,FTL算法的架构会根据不同类型的闪存定义一个映像单位,有的数据页大小(page size)为32KB,则映像单位为32KB;有的是16KB,则映像单位为16KB。在本发明实施例中,因应用端的写入读取行为和效能测试软件常以最小单位为4KB的方式对存储装置操作,所以映像单位可以定义为4KB。
其中,上述全局连续地址区块位图(SeqBitmap)可以是包括所有逻辑地址的数据图。在全局连续地址区块位图中,将逻辑地址(Logical Unit Address,LUA)以逻辑地址区块(Logical Block Address,LBA)进行分块存放,每个逻辑地址区块中可以存放相同数量的逻辑地址,且每个LBA中的逻辑地址范围(SeqUnit)内的逻辑地址为连续的逻辑地址,上述LUA也称为逻辑单位地址。
上述逻辑地址范围可以代表逻辑地址的单位范围,可以依据不同应用场景调适并定义,例如:在使用者区块小的家用物联装置中,在一般情形下内存都存放小档案,此时将逻辑地址范围定义为1MB。为了便于描述,后续实施例都以1MB定义为例。示意性的,参考图1b所示,假设使用的装置容量为128GB,以4Kbytes数据为一个Unit做逻辑地址映射,逻辑地址范围定义为1MB,则需要131072(128×1024bytes)个bit来代表每个逻辑地址范围的状态,也即是对应有131072个逻辑地址范围,每个逻辑地址范围的逻辑映射包括256个地址(SeqUnit0对应LUA 0~255,SeqUnit 1对应LUA 256~511,SeqUnit 2对应LUA 512~767,,,,,,SeqUnit 131071对应LUA 33554176~33554431)。上述131072个bit仅占据SeqBitmap中16KB(131072÷8bits÷1024bytes)大小。因此,装置容量128GB在SeqBitmap中仅需16KB,因占据空间极小,可轻易回存至Flash,所以即使断电发生,重新上电后仍然可将SeqBitmap找回,也可以理解为可以永久性的纪录全局用户区块的PUAs连续状态,确切有效提升了实际应用场景下主机端对全局逻辑地址范围进行随机读取的效能。
S20、根据地址查找请求中的待查找逻辑地址,在全局连续地址区块位图中确定目标逻辑地址区块,并根据目标逻辑地址区块的状态判断目标逻辑地址区块中逻辑地址范围对应的实体地址是否连续。
其中,待查找逻辑地址可以是根据主机端应用层随机发出的地址查找请求获取。基于待查找逻辑地址可以在全局连续地址区块位图中确定目标逻辑地址区块,目标逻辑地址区块指的是在该逻辑地址区块的逻辑地址范围中包括待查找逻辑地址。上述判断目标逻辑地址区块中逻辑地址范围对应的实体地址是否连续具体指在SeqBitmap中,通过每个LUA的bit值来表示每个逻辑地址范围对应的实体地址(Physical Unit Address,简称PUA)是否连续,例如:bit值为1,表示逻辑地址范围对应的实体地址连续,bit值为0,表示逻辑地址范围对应的实体地址不连续。上述实体地址在本实施例中为实体单位地址。
S30、若目标逻辑地址区块中逻辑地址范围对应的实体地址连续,则检测目标逻辑地址区块中逻辑地址范围对应的实体地址的起始实体地址是否存储在连续实体地址快取区中,连续实体地址快取区包括多个逻辑地址区块中连续的逻辑地址范围对应的起始实体地址。
其中,上述连续实体地址快取区可以指用于记录逻辑地址范围中初始逻辑地址对应的初始实体地址的快取区。在连续实体地址快取区中可以纪录多个逻辑地址范围对应的起始实体地址。在本实施例中,可以将连续实体地址快取区中的数据内容定义为SeqUnitMap(N),N代表连续实体地址快取区可记录的最大个数。
具体的,对于1MB的逻辑地址范围对应的起始实体地址,一个SeqUnitMap需4bytes存PUA数据、3bytes存放SeqUnit Number数据(表示1MB位于所有有效逻辑地址中的第几个1MB范围),以及实务上可再保留1byte做其他使用,例如链结串行排序等,所以单个SeqUnitMap仅需要8bytes。当固件分配了16KB的空间给SeqUnitMap,则N值为2048(1024bytes×16÷8bytes),即16KB的SeqUnitMap可以记录2048个数据,并映射了2048MB(2048×1MB)个逻辑地址范围。与传统的映射表L2PTable((Logical address to Physicaladdress Table)比较,16KB的RAM空间仅能映射16MB的逻辑地址范围空间,相差128倍。如果依据不同场景定义更大的SeqUnit Size,则相差倍数会更大,例如:当单个SeqUnit为4MB时,16KB的RAM空间可映射8192MB(2048×4MB)的逻辑地址范围,与原始的映射表比较相差512倍。
目标逻辑地址区块中逻辑地址范围对应的实体地址连续,则可以根据SeqUnitMap中3bytes存放的SeqUnit Number数据检测目标逻辑地址区块中逻辑地址范围对应的实体地址的起始实体地址是否存储在连续实体地址快取区中。具体可以在连续实体地址快取区中依次读取各起始实体地址,并与目标逻辑地址区块中逻辑地址范围对应的实体地址中的起始实体地址进行比较,若找到同一个起始实体地址,则表示目标逻辑地址区块中逻辑地址范围对应的实体地址的起始实体地址存储在连续实体地址快取区。这样判断可以决定是否要基于连续实体地址快取区查找目标实体地址。
S40、若目标逻辑地址区块中逻辑地址范围对应的实体地址的起始实体地址存储在连续实体地址快取区中,则基于待查找逻辑地址及目标逻辑地址区块中逻辑地址范围对应的起始实体地址读取目标实体地址。
当连续实体地址快取区包括目标逻辑地址区块中逻辑地址范围对应的实体地址的起始实体地址时,便可以从连续实体地址快取区的SeqUnitMap中读取起始实体地址,然后可以结合起始实体地址,根据起始逻辑地址以及逻辑地址之间的距离关系计算待查找逻辑地址的目标实体地址存放在内存中的位置,并读取目标实体地址中的数据,从而完成地址查找请求的整个地址数据的读取。
在本发明实施例中,本申请通过创建包括多个逻辑地址区块的SeqBitmap,每个逻辑地址区块包括连续的逻辑地址范围,提供的SeqBitmap占用小空间存放了大量的逻辑地址范围。此外,根据目标逻辑地址区块的状态判断目标逻辑地址区块中逻辑地址范围对应的实体地址在连续的情况下才需要对连续实体地址快取区进行查找,且连续实体地址快取区中只需记载连续的逻辑地址范围中起始逻辑地址对应的起始实体地址,当命中失败时,对内存读取则不需将整张映射表的数据全部读出,只需基于待查找逻辑地址及目标逻辑地址区块中逻辑地址范围对应的起始实体地址读取目标实体地址,能够降低命中失败惩罚,提高读取速率;且只需记载起始实体地址,所占用的空间小,能够降低连续实体地址快取区查询数据量以及增加数据记录量,记录起始实体地址量越多,能够增加命中成功率。
实施例二
在本实施例中,基于上述实施例一,如图2所示,步骤S10包括步骤S101至S102。各个步骤的具体实现原理如下:
S101、初始化逻辑地址区块,确定每个逻辑地址区块中连续的逻辑地址范围,其中,每个逻辑地址区块中存储的逻辑地址范围不同。
S102、将所有逻辑地址区块根据区块位依序排列,创建全局连续地址区块位图。
其中,上述初始化逻辑地址区块,可以根据应用场景定义SeqBitmap中每个存储逻辑地址的区块的大小,将SeqBitmap划分为多个逻辑地址区块,每个逻辑地址区块大小一致,逻辑地址映射不同,参考图1b所示。上述区块位可以指逻辑地址区块的编号,例如:用数字0,1,2,3,,,131071作为区块位进行编号。对应每个区块位,所映射的逻辑地址范围不同。根据所有上述的区块位,以及与每个区块位对应的逻辑地址区块,便可以根据顺序建立一张对应使用场景的SeqBitmap。且SeqBitmap中,每个逻辑地址区块占用空间小,但是存储的逻辑地址范围大,以小空间即可代表了大范围的逻辑地址范围,依SeqUnit为1MB的例子,128GB容量的内存仅占用16KB大小的SeqBitmap。所以,通过创建SeqBitmap,在SeqBitmap中可以实现小空间映射大范围的逻辑地址范围。
实施例三
在本实施例中,基于上述实施例一,如图3a所示,步骤S20包括步骤S201至S204。各个步骤的具体实现原理如下:
S201、从地址查找请求中提取待查找逻辑地址,在全局连续地址区块位图中查找待查找逻辑地址对应的目标逻辑地址区块。
其中,主机端可以随机发起地址查找请求,地址查找请求中包括待查找逻辑地址,例如:读取LBA 512,读取LBA 66977783,读取LBA 6697755。根据随机发出的地址查找请求中的待查找逻辑地址可以定位在SeqBitmap中对应的逻辑地址区块,在目标逻辑地址区块的逻辑地址范围中包括待查找逻辑地址。
S202、判断目标逻辑地址区块对应的状态是否为第一状态。
S203、若目标逻辑地址区块对应的状态为第一状态,则判断目标逻辑地址区块中逻辑地址范围对应的实体地址连续。
S204、若目标逻辑地址区块对应的状态非第一状态,则判断目标逻辑地址区块中逻辑地址范围对应的实体地址不连续。
其中,结合图3b所示,逻辑地址区块的状态可以表示某段逻辑地址范围内所对应的PUA是否连续,用SeqBitmap中的bit来表示,每个逻辑地址区块都有对应的bit。状态可以包括第一状态与第二状态,其中第一状态用1表示,第二状态用0表示。通过读取目标逻辑地址区块中逻辑地址范的bit值,便可以根据bit值判断目标逻辑地址区块中逻辑地址范围对应的的PUA是否连续,若bit=1,则表示待查找逻辑地址所在的逻辑地址范围映射的PUA连续;若bit=0,则表示待查找逻辑地址所在的逻辑地址范围映射的PUA不连续。对于连续与不连续的情况不同,后续进行查询的方式也不同。
可选的,在步骤S204之后,还包括:
读取内存中对应待查找逻辑地址的映射表,基于映射表查询目标实体地址。
其中,结合图3b所示,对于目标逻辑地址区块中的逻辑地址范围所对应的实体地址不连续的情况,则不需再查找连续实体地址快取区,可以选择恢复原始查表程序。也即是在内存中读取与待查找逻辑地址对应的整张映射表L2PTable读取到RAM中,根据L2PTable查询实体地址。通常一张L2PTable会包含一个逻辑地址范围,若下次读取命令的逻辑地址属于同一张L2PTable(命中成功),则不需再从内存将L2PTable读出,可快速的进行查表程序找出实体地址。若下次命中失败,即下次读取命令的逻辑地址不属于同一张L2PTable,则需再从内存将L2PTable读出。
具体的,根据L2PTable查询实体地址包括:获取待查询逻辑地址,根据待查询逻辑地址查找在整张L2PTables中的逻辑映射位置,根据逻辑映射位置确定待查找逻辑地址属于第几个L2PTable,然后将查找到的L2PTable读取到快取区中。示意性的,参考图3c所示,一张L2PTables包括多个L2PTable;一个快取区包括多个快取区单元,例如:快取区1,快取区2,快取区3,快取区4,,,。以一个32GB的储存装置为例子,L2PTable使用4bytes来记录每个LUA实际写入到FLASH的实体地址,假设当前使用的FLASH的每个page大小为16Kbytes,则一个page可以记录4096个LUA,此时FTL将产生2048个L2PTable来记录整个32GB储存装置的每个逻辑地址的数据存放于FLASH的哪个实体位置。
在本实施例中,在对待查找逻辑地址进行SeqUnitMap查找之前,通过先根据bit值判断待查找逻辑地址所在的SeqBitmap中逻辑地址范围对应的PUA是否连续,针对不连续的情况,可立即恢复成原始L2PTable查表程序,因而不会对SeqBitmap中PUA不连续的逻辑地址区块造成负面影响。针对连续的情况会进一步通过SeqUnitMap查找目标PUA,在SeqUnitMap中,因PUA为连续状态,所以只需要记录目标逻辑地址区块中逻辑地址范围的起始逻辑地址对应的起始PUA来查找目标PUA,且一个PUA占用空间小,能够增加连续实体地址快取区能记录的PUA数据个数,且降低了查表数据量,加快了查表速度,快速从Flash读取目标实体地址。
实施例四
在本实施例中,基于上述实施例一,如图4所示,步骤S40包括步骤S401至S403。各个步骤的具体实现原理如下:
S401、基于目标逻辑地址区块中逻辑地址范围的起始逻辑地址,根据逻辑地址之间的距离差计算待查找逻辑地址在目标逻辑地址区块中的目标位置。
S402、基于目标逻辑地址区块中逻辑地址范围对应的起始实体地址,获取待查找逻辑地址所在目标位置的目标实体地址。
其中,连续实体地址快取区包括连续逻辑地址范围的起始逻辑地址对应的起始实体地址。通过目标逻辑地址区块中逻辑地址范围的起始逻辑地址可以确定所对应的起始实体地址,并对连续实体地址快取区中的SeqUnitMap(N)进行查找,根据其3bytes存放的SeqUnit Number数据可以检测到目标逻辑地址区块中逻辑地址范围的起始逻辑地址对应的起始实体地址是否存在在连续实体地址快取区中。
具体的,上述逻辑地址的目标位置可以通过距离差进行获取。示意性的,以图1b为例,若主机端要读取LUA 300,第一时间点FTL会算出LUA 300属于目标逻辑地址区块SeqUnit 1,若查看目标逻辑地址区块SeqUnit 1的bit为1,则得知SeqUnit 1的逻辑地址范围LUA 256~511所对应的PUA连续,这时就会根据对应LUA 256的起始实体地址来算出LUA300的目标实体地址,例如:若当前LUA 256对应的起始实体地址为PUA 6134,则先计算目标逻辑地址区块SeqUnit 1中起始逻辑地址(LUA 256)与待查找逻辑地址(LUA 300)之间的LUA距离差为44(300-256),然后根据距离差以及起始实体地址计算LUA300所对应的目标实体地址为6178(6134+44),需要说明的是,本示例中仅将PUA 6134作为当前对应LUA 256的起始实体地址,事实上是会一直随着主机端写入数据而产生变化的。根据上述的距离差计算方式能够从内存中查找到目标实体地址,再从目标实体地址中读取数据。
可选的,在步骤S30之后,还包括:
若目标逻辑地址区块中逻辑地址范围对应的实体地址的起始实体地址未存储在连续实体地址快取区中,则读取内存中对应待查找逻辑地址的映射表的单位数据,单位数据包括与逻辑地址范围对应的起始实体地址。
将的单位数据中的起始实体地址读取到连续实体地址快取区。
其中,结合图3b所示,连续实体地址快取区的RAM资源分配仍是有限的,对于目标逻辑地址区块中逻辑地址范围对应的实体地址的起始实体地址未存储在连续实体地址快取区中,也即是在连续实体地址快取区命中失败时,可以从内存中读取对应待查找逻辑地址的原始L2PTable,因内存以1KB数据为单位,因此可以撷取L2PTable中1KB中的起始4bytes(起始PUA)存放至SeqUnitMap,节省了对FLASH中整张L2PTable的实际读取数据量,缩短读取时间,因而降低了命中失败惩罚。
在本实施例中,连续实体地址快取区中只需记载每个连续的逻辑地址范围中起始逻辑地址对应的起始实体地址,根据距离差计算待查找逻辑地址的目标位置,以起始实体地址为基准,便可以根据距离差从内存中读取目标实体地址。且当命中失败时,对内存读取则不需将整张L2PTable的数据全部读出,只需要读取起始实体地址存放到SeqUnitMap中,节省了对内存中整张L2PTable的实际读取数据量,缩短读取时间,因而降低了命中失败惩罚。且连续实体地址快取区只需记载起始实体地址,所占用的空间小,能够降低连续实体地址快取区查询数据量以及增加数据记录量,能够增加命中成功率。
实施例五
对应于上述图1所示的一种数据地址查询方法,图5示出的是本申请实施例提供的一种数据地址查询装置的示意图,装置M50包括:
创建模块M501,用于创建全局连续地址区块位图,全局连续区块位图包括多个逻辑地址区块,每个逻辑地址区块包括连续的逻辑地址范围;
判断模块M502,用于根据地址查找请求中的待查找逻辑地址,在全局连续地址区块位图中确定目标逻辑地址区块,并根据目标逻辑地址区块的状态判断目标逻辑地址区块中逻辑地址范围对应的实体地址是否连续;
检测模块M503,用于若目标逻辑地址区块中逻辑地址范围对应的实体地址连续,则检测目标逻辑地址区块中逻辑地址范围对应的实体地址的起始实体地址是否存储在连续实体地址快取区中,连续实体地址快取区包括多个逻辑地址区块中连续的逻辑地址范围对应的起始实体地址;
第一读取模块M504,若目标逻辑地址区块中逻辑地址范围对应的实体地址的起始实体地址存储在连续实体地址快取区中,则基于待查找逻辑地址及目标逻辑地址区块中逻辑地址范围对应的起始实体地址读取目标实体地址。
可选的,参考图6所示,图6为本发明实施例提供的创建模块的结构示意图。创建模块M501包括:
初始化单元M5011,用于初始化逻辑地址区块,确定每个逻辑地址区块中连续的逻辑地址范围,其中,每个逻辑地址区块中存储的逻辑地址范围不同;
创建单元M5012,用于将所有逻辑地址区块根据区块位依序排列,创建全局连续地址区块位图。
可选的,参考图7所示,图7为本发明实施例提供的判断模块的结构示意图。判断模块M502包括:
查找单元M5021,用于从地址查找请求中提取待查找逻辑地址,在全局连续地址区块位图中查找待查找逻辑地址对应的目标逻辑地址区块;
第一判断单元M5022,用于判断目标逻辑地址区块对应的状态是否为第一状态;
第二判断单元M5023,用于若目标逻辑地址区块对应的状态为第一状态,则判断目标逻辑地址区块中逻辑地址范围对应的实体地址连续;
第二判断单元M5022还用于若目标逻辑地址区块对应的状态非第一状态,则判断目标逻辑地址区块中逻辑地址范围对应的实体地址不连续。
可选的,参考图8所示,图8为本发明实施例提供的第一读取模块的结构示意图。第一读取模块M504包括:
计算单元M5041,用于在基于目标逻辑地址区块中逻辑地址范围的起始逻辑地址,根据逻辑地址之间的距离差计算待查找逻辑地址在目标逻辑地址区块中的目标位置;
获取单元M5042,用于基于目标逻辑地址区块中逻辑地址范围对应的起始实体地址,获取待查找逻辑地址所在目标位置的目标实体地址。
可选的,第一读取模块M504还用于读取内存中对应待查找逻辑地址的映射表,基于映射表查询目标实体地址,其中,映射表包括逻辑地址与实体地址之间的映射关系。
可选的,参考图9所示,图9为本发明实施例提供的另一种数据地址查询装置的结构示意图。装置M50还包括:
第二读取模块M505,用于若目标逻辑地址区块中逻辑地址范围对应的实体地址的起始实体地址未存储在连续实体地址快取区中,则读取内存中对应待查找逻辑地址的映射表的单位数据,单位数据包括与逻辑地址范围对应的起始实体地址;
第三读取模块M506,用于将的单位数据中的起始实体地址读取到连续实体地址快取区。
实施例六
图10为本申请实施例提供的一种电子设备的结构示意图。如图10所示,该实施例的电子设备D10包括:至少一个处理器D100(图10中仅示出一个)、存储器D101、网络接口D102,以及存储在存储器D101中并可在至少一个处理器D100上运行的计算机程序。其中,处理器D100用于调用存储器D101存储的计算机程序,并执行如下步骤:
创建全局连续地址区块位图,全局连续区块位图包括多个逻辑地址区块,每个逻辑地址区块包括连续的逻辑地址范围;
根据地址查找请求中的待查找逻辑地址,在全局连续地址区块位图中确定目标逻辑地址区块,并根据目标逻辑地址区块的状态判断目标逻辑地址区块中逻辑地址范围对应的实体地址是否连续;
若目标逻辑地址区块中逻辑地址范围对应的实体地址连续,则检测目标逻辑地址区块中逻辑地址范围对应的实体地址的起始实体地址是否存储在连续实体地址快取区中,连续实体地址快取区包括多个逻辑地址区块中连续的逻辑地址范围对应的起始实体地址;
若目标逻辑地址区块中逻辑地址范围对应的实体地址的起始实体地址存储在连续实体地址快取区中,则基于待查找逻辑地址及目标逻辑地址区块中逻辑地址范围对应的起始实体地址读取目标实体地址。
可选的,处理器D100执行的创建全局连续地址区块位图,包括:
初始化逻辑地址区块,确定每个逻辑地址区块中连续的逻辑地址范围,其中,每个逻辑地址区块中存储的逻辑地址范围不同;
将所有逻辑地址区块根据区块位依序排列,创建全局连续地址区块位图。
可选的,处理器D100执行的根据地址查找请求中的待查找逻辑地址,在全局连续地址区块位图中确定目标逻辑地址区块,并根据目标逻辑地址区块的状态判断目标逻辑地址区块中逻辑地址范围对应的实体地址是否连续,包括:
从地址查找请求中提取待查找逻辑地址,在全局连续地址区块位图中查找待查找逻辑地址对应的目标逻辑地址区块;
判断目标逻辑地址区块对应的状态是否为第一状态;
若目标逻辑地址区块对应的状态为第一状态,则判断目标逻辑地址区块中逻辑地址范围对应的实体地址连续;
若目标逻辑地址区块对应的状态非第一状态,则判断目标逻辑地址区块中逻辑地址范围对应的实体地址不连续。
可选的,处理器D100执行的基于待查找逻辑地址及目标逻辑地址区块中逻辑地址范围对应的起始实体地址读取目标实体地址,包括:
基于目标逻辑地址区块中逻辑地址范围的起始逻辑地址,根据逻辑地址之间的距离差计算待查找逻辑地址在目标逻辑地址区块中的目标位置;
基于目标逻辑地址区块中逻辑地址范围对应的起始实体地址,获取待查找逻辑地址所在目标位置的目标实体地址。
可选的,在判断目标逻辑地址区块中逻辑地址范围对应的实体地址不连续之后,处理器D100还用于执行:
读取内存中对应待查找逻辑地址的映射表,基于映射表查询目标实体地址,其中,映射表包括逻辑地址与实体地址之间的映射关系。
可选的,在检测目标逻辑地址区块中逻辑地址范围对应的实体地址的起始实体地址是否存储在连续实体地址快取区中之后,处理器D100还用于执行:
在检测目标逻辑地址区块中逻辑地址范围对应的实体地址的起始实体地址是否存储在连续实体地址快取区中之后,方法还包括:
若目标逻辑地址区块中逻辑地址范围对应的实体地址的起始实体地址未存储在连续实体地址快取区中,则读取内存中对应待查找逻辑地址的映射表的单位数据,单位数据包括与逻辑地址范围对应的起始实体地址;
将的单位数据中的起始实体地址读取到连续实体地址快取区。
本发明实施例提供的电子设备D10能够实现一种数据地址查询方法实施例中的各个实施方式,以及相应有益效果,为避免重复,这里不再赘述。
D100-D102,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的电子设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备。
所述处理器D100在一些实施例中可以是中央处理单元(Central ProcessingUnit,CPU),该处理器D100还可以是其它通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器D101在一些实施例中可以是所述电子设备D10的内部存储单元,例如电子设备D10的硬盘或内存。所述存储器D101在另一些实施例中也可以是所述电子设备D10的外部存储设备,例如所述电子设备D10上配备的插接式硬盘,智能存储卡(Smart MediaCard,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器D101还可以既包括所述电子设备D10的内部存储单元也包括外部存储设备。所述存储器D101用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其它程序等,例如所述计算机程序的程序代码等。所述存储器D101还可以用于暂时地存储已经输出或者将要输出的数据。
所述D102可包括无线网络接口或有线网络接口,该网络接口D102通常用于在电子设备D10与其他电子设备之间建立通信连接。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器D100执行时实现本发明实施例提供的一种数据地址查询方法实施例的各个程,且能达到相同的技术效果,为避免重复,这里不再赘述。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random AccessMemory,RAM)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。
本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。