CN104461925A - 一种存储设备地址对齐的自动纠正方法和装置 - Google Patents
一种存储设备地址对齐的自动纠正方法和装置 Download PDFInfo
- Publication number
- CN104461925A CN104461925A CN201410648027.1A CN201410648027A CN104461925A CN 104461925 A CN104461925 A CN 104461925A CN 201410648027 A CN201410648027 A CN 201410648027A CN 104461925 A CN104461925 A CN 104461925A
- Authority
- CN
- China
- Prior art keywords
- address
- logical address
- access
- request
- logical
- 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.)
- Granted
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种存储设备地址对齐的自动纠正方法和装置,包括:通过映射表检测出访问请求的逻辑地址为非对齐访问地址,根据映射表中记录的偏移量对非对齐访问地址进行纠正对齐操作,如果未检测出其为非对齐访问地址,则保存在逻辑地址统计缓存内。当该缓存中的条目数量达到上限时,执行迁移流程;判断出通过映射表未检测出的非对齐访问地址段,建立逻辑地址与物理地址之间的映射关系,添加到映射表的条目中,并对非对齐访问地址段进行对齐操作;并读取对齐后的访问请求的逻辑地址所对应的物理地址中的数据。通过本发明的方案,能够解决现有对齐纠正方案中存在的需要对上层应用进行重新配置、手动执行、易用性差的缺点。
Description
技术领域
本发明涉及计算机数据存储领域,具体涉及一种存储设备地址对齐的自动纠正方法和装置。
背景技术
随着计算机数据存储***容量的不断增大,底层存储设备对容量的管理方式也在不断的发生着变化。
传统机械硬盘的物理块大小为512字节,而较新型的存储设备如使用高级格式化技术的机械硬盘物理块大小为4096字节、固态硬盘的物理块则一般为4096字节—16384字节。当计算机***是为传统机械硬盘设计时,计算机***无法正确识别物理块大小,每次对存储设备的访问请求的地址可能无法与存储设备物理块的起始地址对齐。在发生非对齐写入时,硬盘首先需要读取出要写入的物理块上原有的数据,使用要写入的数据覆盖原有数据中对应的部分,再将修改后的数据写入到存储设备上。而在对齐写入时,存储设备只需要将要写入的数据覆盖写入到目标物理块上即可。因此,对存储设备的非对齐写入会降低硬件性能,并加速硬件设备的老化。但是在非对齐访问的情况下,存储设备的功能还是完整的,导致用户难以察觉到发生了问题。
目前的解决方案一般是使用特定的软件检查存储设备物理块对齐情况,并对上层应用(如文件***等)进行重新配置。这个操作需要用户手动执行,并且不能在设备使用时执行,易用性较差。
发明内容
为了解决上述问题,本发明提出了一种存储设备地址对齐的自动纠正方法和装置,可以解决现有存储设备对齐纠正方案中存在的需要对上层应用进行重新配置、需要手动执行、易用性差的缺点。
为了达到上述目的,本发明提出了一种存储设备地址对齐的自动纠正方法,该方法包括:
通过映射表对存储设备收到的访问请求进行检测,如果检测出访问请求的逻辑地址为非对齐访问地址,则根据映射表中记录的偏移量对非对齐访问地址进行纠正对齐操作,如果未检测出访问请求的逻辑地址为非对齐访问地址,则将访问请求的逻辑地址保存在逻辑地址统计缓存内。
当逻辑地址统计缓存中的条目数量达到上限时,异步地执行迁移流程;判断出逻辑地址统计缓存内通过映射表未检测出的非对齐访问地址段,建立非对齐访问地址段的访问请求的逻辑地址与物理地址之间的映射关系,添加到映射表的条目中,并根据迁移过程中判断出的地址段起始逻辑地址和地址段偏移量将非对齐访问地址段以地址段偏移量统一向前移动;在通过移动完成对非对齐访问地址段的自动纠正对齐操作后,读取对齐后的访问请求的逻辑地址所对应的物理地址中的数据。
优选地,对存储设备收到的访问请求进行检测是指:在存储设备收到读取或写入请求时,根据访问请求中的逻辑地址在映射表中查找是否存在访问请求的逻辑地址的记录;如果映射表中存在该访问请求的逻辑地址的记录,则该访问请求的逻辑地址为非对齐地址;如果映射表中不存在该访问请求的逻辑地址的记录,则该访问请求的逻辑地址为对齐地址或该访问请求的逻辑地址为非对齐地址但尚未记录在映射表中。
优选地,该方法还包括:通过映射表管理访问请求的逻辑地址到实际物理地址的映射关系,存储访问请求的逻辑地址和实际物理地址之间的偏移量。
其中,在存储设备处于初始状态时,访问请求的逻辑地址和物理地址之间不存在偏移量。
优选地,迁移流程包括非对齐访问地址段的判断流程,包括以下步骤:
41、从逻辑地址统计缓存中读取存储的一个访问请求的逻辑地址。
42、判断所读取的访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量是否为0。
如果偏移量为0,则进行43;如果偏移量不为0,则进行44。
43、继续判断该逻辑地址是否为逻辑地址统计缓存中的最后一个逻辑地址,如果是最后一个逻辑地址则退出流程;如果不是最后一个逻辑地址,则继续从逻辑地址统计缓存中读取下一个访问请求的逻辑地址,返回步骤41。
44、记录当前处理的访问请求的逻辑地址为地址段起始逻辑地址,并记录当前处理的访问请求的逻辑地址与其所在的物理块的起始地址之间的偏移量为地址段偏移量。
45、继续判断当前处理的访问请求的逻辑地址是否为逻辑地址统计缓存中的最后一个逻辑地址,如果是最后一个逻辑地址,则退出迁移流程;如果不是最后一个逻辑地址,则从逻辑地址统计缓存中读取下一个访问请求的逻辑地址。
46、判断该访问请求的逻辑地址是否等同于上一个处理的访问请求的逻辑地址或上一个处理的访问请求的逻辑地址加上一个物理块的长度;如果是,则记录当前处理的所述访问请求的逻辑地址为地址段结束逻辑地址;如果否,则判断上一个处理的访问请求的逻辑地址为一个完整的非对齐访问地址段,其同时为地址段起始逻辑地址与地址段结束逻辑地址。
优选地,迁移流程还包括非对齐访问地址段判断后的数据迁移流程,包括以下步骤:
51、如果在所述非对齐访问地址段的判断流程中没有通过判断访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量不为0判断出任何访问请求的逻辑地址为非对齐访问地址段,则清空逻辑地址统计缓存,退出迁移流程。
52、如果在判断过程中判断出一组访问请求的逻辑地址为非对齐访问地址段,利用存储设备的冗余块机制,为非对齐访问地址段分配一个新物理块;将所述非对齐访问地址段的所述地址段起始逻辑地址对应的物理地址之前的物理块中的数据迁移到新物理块中,并在映射表中建立新物理块的物理地址与访问请求逻辑地址之间的映射关系,并将映射关系添加到映射表的条目中。
53、根据非对齐访问地址段的地址段起始逻辑地址、地址段偏移量和所述地址段结束逻辑地址,更新映射表,对非对齐访问地址进行纠正对齐操作,并在地址段起始逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入非对齐访问地址进行纠正对齐之后所对应的物理地址中。
或者,将地址段起始逻辑地址增加一个物理块的长度,从所得到的逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入非对齐访问地址进行纠正对齐之后所对应的物理地址中。
本发明还提出一种存储设备地址对齐的自动纠正装置,该装置包括:检测模块、迁移流程模块。
检测模块,用于通过映射表对存储设备收到的访问请求进行检测,如果检测出访问请求的逻辑地址为非对齐访问地址,则根据映射表中记录的偏移量对非对齐访问地址进行纠正对齐操作,如果未检测出访问请求的逻辑地址为非对齐访问地址,则将访问请求的逻辑地址保存在逻辑地址统计缓存内。
迁移流程模块,用于当逻辑地址统计缓存中的条目数量达到上限时,异步地执行迁移流程;判断出逻辑地址统计缓存内通过映射表未检测出的非对齐访问地址段,建立非对齐访问地址段的访问请求的逻辑地址与物理地址之间的映射关系,添加到映射表的条目中,并根据迁移过程中判断出的地址段起始逻辑地址和地址段偏移量将非对齐访问地址段以地址段偏移量统一向前移动;在通过移动完成对非对齐访问地址段的自动纠正对齐操作后,读取对齐后的访问请求的逻辑地址所对应的物理地址中的数据。
优选地,检测模块还用于:在存储设备收到读取或写入请求时,根据访问请求中的逻辑地址在映射表中查找是否存在访问请求的逻辑地址的记录;如果映射表中存在访问请求的逻辑地址的记录,则访问请求的逻辑地址为非对齐地址;如果映射表中不存在访问请求的逻辑地址的记录,则访问请求的逻辑地址为对齐地址或访问请求的逻辑地址为非对齐地址但尚未记录在映射表中。
优选地,迁移流程模块还用于对非对齐访问地址段的判断,包括:
41、从逻辑地址统计缓存中读取存储的一个访问请求的逻辑地址段。
42、判断所读取的访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量是否为0。
如果偏移量为0,则进行43;如果偏移量不为0,则进行44。
43、继续判断该逻辑地址是否为逻辑地址统计缓存中的最后一个逻辑地址,如果是最后一个逻辑地址则退出流程;如果不是所最后一个逻辑地址,则继续从逻辑地址统计缓存中读取下一个访问请求的逻辑地址,返回步骤41。
44、记录当前处理的访问请求的逻辑地址为地址段起始逻辑地址,并记录当前处理的访问请求的逻辑地址与其所在的物理块的起始地址之间的偏移量为地址段偏移量。
45、继续判断当前处理的访问请求的逻辑地址是否为逻辑地址统计缓存中的最后一个逻辑地址,如果是最后一个逻辑地址,则退出迁移流程;如果不是最后一个逻辑地址,则从逻辑地址统计缓存中读取下一个访问请求的逻辑地址。
46、判断该访问请求的逻辑地址是否等同于上一个处理的访问请求的逻辑地址或上一个处理的访问请求的逻辑地址加上一个物理块的长度;如果是,则记录当前处理的访问请求的逻辑地址为地址段结束逻辑地址;如果否,则判断上一个处理的访问请求的逻辑地址为一个完整的非对齐访问地址段,其同时为地址段起始逻辑地址与地址段结束逻辑地址。
优选地,所述迁移流程模块还用于对非对齐访问地址段判断后的数据迁移,包括:
51、如果在非对齐访问地址段的判断流程中没有通过判断访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量不为0判断出任何访问请求的逻辑地址为非对齐访问地址段,则清空逻辑地址统计缓存,退出迁移流程。
52、如果在判断过程中判断出一组访问请求的逻辑地址为非对齐访问地址段,利用存储设备的冗余块机制,为该非对齐访问地址段分配一个新物理块;将非对齐访问地址段的地址段起始逻辑地址对应的物理地址之前的物理块中的数据迁移到新物理块中,并在映射表中建立新物理块的物理地址与访问请求逻辑地址之间的映射关系,并将该映射关系添加到映射表的条目中。
53、根据非对齐访问地址段的地址段起始逻辑地址、地址段偏移量和所述地址段结束逻辑地址,更新映射表,对非对齐访问地址进行纠正对齐操作,并在地址段起始逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入非对齐访问地址进行纠正对齐之后所对应的物理地址中。
或者,将地址段起始逻辑地址增加一个物理块的长度,从所得到的逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入非对齐访问地址进行纠正对齐之后所对应的物理地址中。
与现有技术相比,本发明包括:通过映射表对存储设备收到的访问请求进行检测,如果检测出访问请求的逻辑地址为非对齐访问地址,则根据映射表中记录的偏移量对非对齐访问地址进行纠正对齐操作,如果未检测出访问请求的逻辑地址为非对齐访问地址,则将访问请求的逻辑地址保存在逻辑地址统计缓存内;当逻辑地址统计缓存中的条目数量达到上限时,异步地执行迁移流程;判断出逻辑地址统计缓存内通过所述映射表未检测出的非对齐访问地址段,建立非对齐访问地址段的访问请求的逻辑地址与物理地址之间的映射关系,添加到映射表的条目中,并根据迁移过程中判断出的地址段起始逻辑地址和地址段偏移量将非对齐访问地址段以地址段偏移量统一向前移动;在通过移动完成对非对齐访问地址段的自动纠正对齐操作后,读取对齐后的访问请求的逻辑地址所对应的物理地址中的数据。通过本发明的方案,能够解决现有存储设备对齐纠正方案中存在的需要对上层应用进行重新配置、需要手动执行、易用性差的缺点。
附图说明
下面对本发明实施例中的附图进行说明,实施例中的附图是用于对本发明的进一步理解,与说明书一起用于解释本发明,并不构成对本发明保护范围的限制。
附图1为本发明中存储设备地址对齐的自动纠正方法简易流程图;
附图2为本发明中非对齐访问地址段的判断流程图;
附图3为本发明中对非对齐访问地址段判断后的数据迁移流程图;
附图4为本发明中对非对齐访问地址段判断后的数据迁移示意图。
具体实施方式
为了便于本领域技术人员的理解,下面结合附图对本发明作进一步的描述,并不能用来限制本发明的保护范围。
本发明提出了一种存储设备地址对齐的自动纠正方法,如图1所示,该方法包括:
通过映射表对存储设备收到的访问请求进行检测,如果检测出访问请求的逻辑地址为非对齐访问地址,则根据映射表中记录的偏移量对非对齐访问地址进行纠正对齐操作,如果未检测出访问请求的逻辑地址为非对齐访问地址,则将访问请求的逻辑地址保存在逻辑地址统计缓存内。
当逻辑地址统计缓存中的条目数量达到上限时,异步地执行迁移流程;判断出逻辑地址统计缓存内通过映射表未检测出的非对齐访问地址段,建立非对齐访问地址段的访问请求的逻辑地址与物理地址之间的映射关系,添加到映射表的条目中,并根据迁移过程中判断出的地址段起始逻辑地址和地址段偏移量将非对齐访问地址段以地址段偏移量统一向前移动;在通过移动完成对非对齐访问地址段的自动纠正对齐操作后,读取对齐后的访问请求的逻辑地址所对应的物理地址中的数据。
优选地,对存储设备收到的访问请求进行检测是指:在存储设备收到读取或写入请求时,根据访问请求中的逻辑地址在映射表中查找是否存在访问请求的逻辑地址的记录;如果映射表中存在该访问请求的逻辑地址的记录,则该访问请求的逻辑地址为非对齐地址;如果映射表中不存在该访问请求的逻辑地址的记录,则该访问请求的逻辑地址为对齐地址或该访问请求的逻辑地址为非对齐地址但尚未记录在映射表中。
优选地,该方法还包括:通过映射表管理访问请求的逻辑地址到实际物理地址的映射关系,存储访问请求的逻辑地址和实际物理地址之间的偏移量。
其中,在存储设备处于初始状态时,访问请求的逻辑地址和物理地址之间不存在偏移量。
优选地,迁移流程包括非对齐访问地址段的判断流程,如图2所示,包括以下步骤:
41、从逻辑地址统计缓存中读取存储的一个访问请求的逻辑地址。
42、判断所读取的访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量是否为0。
如果偏移量为0,则进行43;如果偏移量不为0,则进行44。
43、继续判断该逻辑地址是否为逻辑地址统计缓存中的最后一个逻辑地址,如果是最后一个逻辑地址则退出流程;如果不是最后一个逻辑地址,则继续从逻辑地址统计缓存中读取下一个访问请求的逻辑地址,返回步骤41。
44、记录当前处理的访问请求的逻辑地址为地址段起始逻辑地址,并记录当前处理的访问请求的逻辑地址与其所在的物理块的起始地址之间的偏移量为地址段偏移量。
45、继续判断当前处理的访问请求的逻辑地址是否为逻辑地址统计缓存中的最后一个逻辑地址,如果是最后一个逻辑地址,则退出迁移流程;如果不是最后一个逻辑地址,则从逻辑地址统计缓存中读取下一个访问请求的逻辑地址。
46、判断该访问请求的逻辑地址是否等同于上一个处理的访问请求的逻辑地址或上一个处理的访问请求的逻辑地址加上一个物理块的长度;如果是,则记录当前处理的所述访问请求的逻辑地址为地址段结束逻辑地址;如果否,则判断上一个处理的访问请求的逻辑地址为一个完整的非对齐访问地址段,其同时为地址段起始逻辑地址与地址段结束逻辑地址。
优选地,迁移流程还包括非对齐访问地址段判断后的数据迁移流程,如图3、图4所示,包括以下步骤:
51、如果在所述非对齐访问地址段的判断流程中没有通过判断访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量不为0判断出任何访问请求的逻辑地址为非对齐访问地址段,则清空逻辑地址统计缓存,退出迁移流程。
52、如果在判断过程中判断出一组访问请求的逻辑地址为非对齐访问地址段,利用存储设备的冗余块机制,为非对齐访问地址段分配一个新物理块;将所述非对齐访问地址段的所述地址段起始逻辑地址对应的物理地址之前的物理块中的数据迁移到新物理块中,并在映射表中建立新物理块的物理地址与访问请求逻辑地址之间的映射关系,并将映射关系添加到映射表的条目中。
53、根据非对齐访问地址段的地址段起始逻辑地址、地址段偏移量和所述地址段结束逻辑地址,更新映射表,对非对齐访问地址进行纠正对齐操作,并在地址段起始逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入非对齐访问地址进行纠正对齐之后所对应的物理地址中。
或者,将地址段起始逻辑地址增加一个物理块的长度,从所得到的逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入非对齐访问地址进行纠正对齐之后所对应的物理地址中。
本发明还提出一种存储设备地址对齐的自动纠正装置01,该装置包括:检测模块02、迁移流程模块03。
检测模块02,用于通过映射表对存储设备收到的访问请求进行检测,如果检测出访问请求的逻辑地址为非对齐访问地址,则根据映射表中记录的偏移量对非对齐访问地址进行纠正对齐操作,如果未检测出访问请求的逻辑地址为非对齐访问地址,则将访问请求的逻辑地址保存在逻辑地址统计缓存内。
迁移流程模块03,用于当逻辑地址统计缓存中的条目数量达到上限时,异步地执行迁移流程;判断出逻辑地址统计缓存内通过映射表未检测出的非对齐访问地址段,建立非对齐访问地址段的访问请求的逻辑地址与物理地址之间的映射关系,添加到映射表的条目中,并根据迁移过程中判断出的地址段起始逻辑地址和地址段偏移量将非对齐访问地址段以地址段偏移量统一向前移动;在通过移动完成对非对齐访问地址段的自动纠正对齐操作后,读取对齐后的访问请求的逻辑地址所对应的物理地址中的数据。
优选地,检测模块02还用于:在存储设备收到读取或写入请求时,根据访问请求中的逻辑地址在映射表中查找是否存在访问请求的逻辑地址的记录;如果映射表中存在访问请求的逻辑地址的记录,则访问请求的逻辑地址为非对齐地址;如果映射表中不存在访问请求的逻辑地址的记录,则访问请求的逻辑地址为对齐地址或访问请求的逻辑地址为非对齐地址但尚未记录在映射表中。
优选地,迁移流程模块03还用于对非对齐访问地址段的判断,包括:
41、从逻辑地址统计缓存中读取存储的一个访问请求的逻辑地址段。
42、判断所读取的访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量是否为0。
如果偏移量为0,则进行43;如果偏移量不为0,则进行44。
43、继续判断该逻辑地址是否为逻辑地址统计缓存中的最后一个逻辑地址,如果是最后一个逻辑地址则退出流程;如果不是所最后一个逻辑地址,则继续从逻辑地址统计缓存中读取下一个访问请求的逻辑地址,返回步骤41。
44、记录当前处理的访问请求的逻辑地址为地址段起始逻辑地址,并记录当前处理的访问请求的逻辑地址与其所在的物理块的起始地址之间的偏移量为地址段偏移量。
45、继续判断当前处理的访问请求的逻辑地址是否为逻辑地址统计缓存中的最后一个逻辑地址,如果是最后一个逻辑地址,则退出迁移流程;如果不是最后一个逻辑地址,则从逻辑地址统计缓存中读取下一个访问请求的逻辑地址。
46、判断该访问请求的逻辑地址是否等同于上一个处理的访问请求的逻辑地址或上一个处理的访问请求的逻辑地址加上一个物理块的长度;如果是,则记录当前处理的访问请求的逻辑地址为地址段结束逻辑地址;如果否,则判断上一个处理的访问请求的逻辑地址为一个完整的非对齐访问地址段,其同时为地址段起始逻辑地址与地址段结束逻辑地址。
优选地,所述迁移流程模块03还用于对非对齐访问地址段判断后的数据迁移,包括:
51、如果在非对齐访问地址段的判断流程中没有通过判断访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量不为0判断出任何访问请求的逻辑地址为非对齐访问地址段,则清空逻辑地址统计缓存,退出迁移流程。
52、如果在判断过程中判断出一组访问请求的逻辑地址为非对齐访问地址段,利用存储设备的冗余块机制,为该非对齐访问地址段分配一个新物理块;将非对齐访问地址段的地址段起始逻辑地址对应的物理地址之前的物理块中的数据迁移到新物理块中,并在映射表中建立新物理块的物理地址与访问请求逻辑地址之间的映射关系,并将该映射关系添加到映射表的条目中。
53、根据非对齐访问地址段的地址段起始逻辑地址、地址段偏移量和所述地址段结束逻辑地址,更新映射表,对非对齐访问地址进行纠正对齐操作,并在地址段起始逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入非对齐访问地址进行纠正对齐之后所对应的物理地址中。
或者,将地址段起始逻辑地址增加一个物理块的长度,从所得到的逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入非对齐访问地址进行纠正对齐之后所对应的物理地址中。
需要说明的是,以上所述的实施例仅是为了便于本领域的技术人员理解而已,并不用于限制本发明的保护范围,在不脱离本发明的发明构思的前提下,本领域技术人员对本发明所做出的任何显而易见的替换和改进等均在本发明的保护范围之内。
Claims (9)
1.一种存储设备地址对齐的自动纠正方法,其特征在于,所述方法包括:
通过映射表对所述存储设备收到的访问请求进行检测,如果检测出所述访问请求的逻辑地址为非对齐访问地址,则根据所述映射表中记录的偏移量对所述非对齐访问地址进行纠正对齐操作,如果未检测出所述访问请求的逻辑地址为非对齐访问地址,则将所述访问请求的逻辑地址保存在逻辑地址统计缓存内;
当所述逻辑地址统计缓存中的条目数量达到上限时,异步地执行迁移流程;判断出所述逻辑地址统计缓存内通过所述映射表未检测出的非对齐访问地址段,建立所述非对齐访问地址段的访问请求的逻辑地址与物理地址之间的映射关系,添加到所述映射表的条目中,并根据所述迁移过程中判断出的地址段起始逻辑地址和地址段偏移量将所述非对齐访问地址段以所述地址段偏移量统一向前移动;在通过所述移动完成对所述非对齐访问地址段的自动纠正对齐操作后,读取对齐后的所述访问请求的逻辑地址所对应的物理地址中的数据。
2.如权利要求1所述的方法,其特征在于,所述对存储设备收到的访问请求进行检测是指:在所述存储设备收到读取或写入请求时,根据所述访问请求中的逻辑地址在映射表中查找是否存在所述访问请求的逻辑地址的记录;如果所述映射表中存在所述访问请求的逻辑地址的记录,则所述访问请求的逻辑地址为非对齐地址;如果所述映射表中不存在所述访问请求的逻辑地址的记录,则所述访问请求的逻辑地址为对齐地址或所述访问请求的逻辑地址为非对齐地址但尚未记录在所述映射表中。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:通过所述映射表管理所述访问请求的逻辑地址到实际物理地址的映射关系,存储所述访问请求的逻辑地址和所述实际物理地址之间的偏移量;
其中,在所述存储设备处于初始状态时,所述访问请求的逻辑地址和物理地址之间不存在偏移量。
4.如权利要求1所述的方法,其特征在于,所述迁移流程包括所述非对齐访问地址段的判断流程,包括以下步骤:
41、从所述逻辑地址统计缓存中读取存储的一个所述访问请求的逻辑地址;
42、判断所读取的所述访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量是否为0;
如果所述偏移量为0,则进行43;如果所述偏移量不为0,则进行44;
43、继续判断该逻辑地址是否为所述逻辑地址统计缓存中的最后一个逻辑地址,如果是所述最后一个逻辑地址则退出流程;如果不是所述最后一个逻辑地址,则继续从所述逻辑地址统计缓存中读取下一个所述访问请求的逻辑地址,返回步骤41;
44、记录当前处理的所述访问请求的逻辑地址为地址段起始逻辑地址,并记录当前处理的所述访问请求的逻辑地址与其所在的物理块的起始地址之间的偏移量为地址段偏移量;
45、继续判断当前处理的所述访问请求的逻辑地址是否为所述逻辑地址统计缓存中的最后一个逻辑地址,如果是所述最后一个逻辑地址,则退出所述迁移流程;如果不是所述最后一个逻辑地址,则从所述逻辑地址统计缓存中读取下一个所述访问请求的逻辑地址;
46、判断该访问请求的逻辑地址是否等同于上一个处理的所述访问请求的逻辑地址或上一个处理的所述访问请求的逻辑地址加上一个物理块的长度;如果是,则记录当前处理的所述访问请求的逻辑地址为地址段结束逻辑地址;如果否,则判断上一个处理的所述访问请求的逻辑地址为一个完整的非对齐访问地址段,其同时为地址段起始逻辑地址与地址段结束逻辑地址。
5.如权利要求4所述的方法,其特征在于,所述迁移流程还包括所述非对齐访问地址段判断后的数据迁移流程,包括以下步骤:
51、如果在所述非对齐访问地址段的判断流程中没有通过判断所述访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量不为0判断出任何所述访问请求的逻辑地址为非对齐访问地址段,则清空所述逻辑地址统计缓存,退出所述迁移流程;
52、如果在所述判断过程中判断出一组所述访问请求的逻辑地址为非对齐访问地址段,利用所述存储设备的冗余块机制,为所述非对齐访问地址段分配一个新物理块;将所述非对齐访问地址段的所述地址段起始逻辑地址对应的物理地址之前的物理块中的数据迁移到所述新物理块中,并在所述映射表中建立所述新物理块的物理地址与访问请求逻辑地址之间的映射关系,并将所述映射关系添加到所述映射表的条目中;
53、根据所述非对齐访问地址段的所述地址段起始逻辑地址、所述地址段偏移量和所述地址段结束逻辑地址,更新所述映射表,对所述非对齐访问地址进行纠正对齐操作,并在所述地址段起始逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入所述非对齐访问地址进行纠正对齐之后所对应的物理地址中;
或者,将所述地址段起始逻辑地址增加一个物理块的长度,从所得到的逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入所述非对齐访问地址进行纠正对齐之后所对应的物理地址中。
6.一种存储设备地址对齐的自动纠正装置,其特征在于,所述装置包括:检测模块、迁移流程模块;
所述检测模块,用于通过映射表对所述存储设备收到的访问请求进行检测,如果检测出所述访问请求的逻辑地址为非对齐访问地址,则根据所述映射表中记录的偏移量对所述非对齐访问地址进行纠正对齐操作,如果未检测出所述访问请求的逻辑地址为非对齐访问地址,则将所述访问请求的逻辑地址保存在逻辑地址统计缓存内;
所述迁移流程模块,用于当所述逻辑地址统计缓存中的条目数量达到上限时,异步地执行迁移流程;判断出所述逻辑地址统计缓存内通过所述映射表未检测出的非对齐访问地址段,建立所述非对齐访问地址段的访问请求的逻辑地址与物理地址之间的映射关系,添加到所述映射表的条目中,并根据所述迁移过程中判断出的地址段起始逻辑地址和地址段偏移量将所述非对齐访问地址段以所述地址段偏移量统一向前移动;在通过所述移动完成对所述非对齐访问地址段的自动纠正对齐操作后,读取对齐后的所述访问请求的逻辑地址所对应的物理地址中的数据。
7.如权利要求6所述的装置,其特征在于,所述检测模块还用于:在所述存储设备收到读取或写入请求时,根据所述访问请求中的逻辑地址在映射表中查找是否存在所述访问请求的逻辑地址的记录;如果所述映射表中存在所述访问请求的逻辑地址的记录,则所述访问请求的逻辑地址为非对齐地址;如果所述映射表中不存在所述访问请求的逻辑地址的记录,则所述访问请求的逻辑地址为对齐地址或所述访问请求的逻辑地址为非对齐地址但尚未记录在所述映射表中。
8.如权利要求6所述的装置,其特征在于,所述迁移流程模块还用于对非对齐访问地址段的判断,包括:
41、从所述逻辑地址统计缓存中读取存储的一个所述访问请求的逻辑地址段;
42、判断所读取的所述访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量是否为0;
如果所述偏移量为0,则进行43;如果所述偏移量不为0,则进行44;
43、继续判断该逻辑地址是否为所述逻辑地址统计缓存中的最后一个逻辑地址,如果是所述最后一个逻辑地址则退出流程;如果不是所述最后一个逻辑地址,则继续从所述逻辑地址统计缓存中读取下一个所述访问请求的逻辑地址,返回步骤41;
44、记录当前处理的所述访问请求的逻辑地址为地址段起始逻辑地址,并记录当前处理的所述访问请求的逻辑地址与其所在的物理块的起始地址之间的偏移量为地址段偏移量;
45、继续判断当前处理的所述访问请求的逻辑地址是否为所述逻辑地址统计缓存中的最后一个逻辑地址,如果是所述最后一个逻辑地址,则退出所述迁移流程;如果不是所述最后一个逻辑地址,则从所述逻辑地址统计缓存中读取下一个所述访问请求的逻辑地址;
46、判断所述访问请求的逻辑地址是否等同于上一个处理的所述访问请求的逻辑地址或上一个处理的所述访问请求的逻辑地址加上一个物理块的长度;如果是,则记录当前处理的所述访问请求的逻辑地址为地址段结束逻辑地址;如果否,则判断上一个处理的所述访问请求的逻辑地址为一个完整的非对齐访问地址段,其同时为地址段起始逻辑地址与地址段结束逻辑地址。
9.如权利要求8所述的装置,其特征在于,所述迁移流程模块还用于对所述非对齐访问地址段判断后的数据迁移,包括:
51、如果在所述非对齐访问地址段的判断流程中没有通过判断所述访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量不为0判断出任何所述访问请求的逻辑地址为非对齐访问地址段,则清空所述逻辑地址统计缓存,退出所述迁移流程;
52、如果在所述判断过程中判断出一组所述访问请求的逻辑地址为非对齐访问地址段,利用所述存储设备的冗余块机制,为所述非对齐访问地址段分配一个新物理块;将所述非对齐访问地址段的所述地址段起始逻辑地址对应的物理地址之前的物理块中的数据迁移到所述新物理块中,并在所述映射表中建立所述新物理块的物理地址与访问请求逻辑地址之间的映射关系,并将所述映射关系添加到所述映射表的条目中;
53、根据所述非对齐访问地址段的所述地址段起始逻辑地址、所述地址段偏移量和所述地址段结束逻辑地址,更新所述映射表,对所述非对齐访问地址进行纠正对齐操作,并在所述地址段起始逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入所述非对齐访问地址进行纠正对齐之后所对应的物理地址中;
或者,将所述地址段起始逻辑地址增加一个物理块的长度,从所得到的逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入所述非对齐访问地址进行纠正对齐之后所对应的物理地址中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410648027.1A CN104461925B (zh) | 2014-11-14 | 2014-11-14 | 一种存储设备地址对齐的自动纠正方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410648027.1A CN104461925B (zh) | 2014-11-14 | 2014-11-14 | 一种存储设备地址对齐的自动纠正方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104461925A true CN104461925A (zh) | 2015-03-25 |
CN104461925B CN104461925B (zh) | 2017-10-13 |
Family
ID=52908012
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410648027.1A Active CN104461925B (zh) | 2014-11-14 | 2014-11-14 | 一种存储设备地址对齐的自动纠正方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104461925B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649133A (zh) * | 2016-12-29 | 2017-05-10 | 杭州迪普科技股份有限公司 | Pci内存空间的优化方法和设备 |
CN107924405A (zh) * | 2016-01-29 | 2018-04-17 | 慧与发展有限责任合伙企业 | 在存储设备中存储数据 |
CN108509289A (zh) * | 2017-02-28 | 2018-09-07 | 龙芯中科技术有限公司 | 一种基于MIPS处理器vxWorks***的验证方法和装置 |
CN109271174A (zh) * | 2018-08-01 | 2019-01-25 | 广州市星翼电子科技有限公司 | 一种单片机多个固件分散烧录方法 |
CN110308933A (zh) * | 2019-04-25 | 2019-10-08 | 龙芯中科(合肥)技术有限公司 | 访问指令确定方法、装置及存储介质 |
CN110413548A (zh) * | 2018-04-27 | 2019-11-05 | 慧与发展有限责任合伙企业 | 子lun所有权对齐 |
CN111209220A (zh) * | 2018-11-21 | 2020-05-29 | 华夏芯(北京)通用处理器技术有限公司 | 一种非对齐地址访存的融合编码状态机实现方法 |
CN113835639A (zh) * | 2021-09-26 | 2021-12-24 | 深圳大普微电子科技有限公司 | 一种i/o请求处理方法、装置、设备及可读存储介质 |
CN117472797A (zh) * | 2023-12-28 | 2024-01-30 | 北京微核芯科技有限公司 | 非对齐地址访存指令的处理方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101299192A (zh) * | 2008-06-18 | 2008-11-05 | 中国科学院计算技术研究所 | 一种非对齐访存的处理方法 |
US20130185491A1 (en) * | 2012-01-17 | 2013-07-18 | Skymedi Corporation | Memory controller and a method thereof |
CN103425602A (zh) * | 2013-08-15 | 2013-12-04 | 深圳市江波龙电子有限公司 | 一种闪存存储设备数据读写的方法、装置及主机*** |
CN104035729A (zh) * | 2014-05-22 | 2014-09-10 | 中国科学院计算技术研究所 | 一种日志映射的块设备精简配置方法 |
-
2014
- 2014-11-14 CN CN201410648027.1A patent/CN104461925B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101299192A (zh) * | 2008-06-18 | 2008-11-05 | 中国科学院计算技术研究所 | 一种非对齐访存的处理方法 |
US20130185491A1 (en) * | 2012-01-17 | 2013-07-18 | Skymedi Corporation | Memory controller and a method thereof |
CN103425602A (zh) * | 2013-08-15 | 2013-12-04 | 深圳市江波龙电子有限公司 | 一种闪存存储设备数据读写的方法、装置及主机*** |
CN104035729A (zh) * | 2014-05-22 | 2014-09-10 | 中国科学院计算技术研究所 | 一种日志映射的块设备精简配置方法 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107924405B (zh) * | 2016-01-29 | 2022-03-08 | 慧与发展有限责任合伙企业 | 用于存储数据的***和方法、以及计算机可读介质 |
CN107924405A (zh) * | 2016-01-29 | 2018-04-17 | 慧与发展有限责任合伙企业 | 在存储设备中存储数据 |
CN106649133A (zh) * | 2016-12-29 | 2017-05-10 | 杭州迪普科技股份有限公司 | Pci内存空间的优化方法和设备 |
CN106649133B (zh) * | 2016-12-29 | 2019-12-06 | 杭州迪普科技股份有限公司 | Pci内存空间的优化方法和设备 |
CN108509289A (zh) * | 2017-02-28 | 2018-09-07 | 龙芯中科技术有限公司 | 一种基于MIPS处理器vxWorks***的验证方法和装置 |
CN108509289B (zh) * | 2017-02-28 | 2021-06-29 | 龙芯中科技术股份有限公司 | 一种基于MIPS处理器vxWorks***的验证方法和装置 |
CN110413548A (zh) * | 2018-04-27 | 2019-11-05 | 慧与发展有限责任合伙企业 | 子lun所有权对齐 |
CN110413548B (zh) * | 2018-04-27 | 2021-08-17 | 慧与发展有限责任合伙企业 | 用于子lun对齐的方法、数据存储***和存储设备 |
CN109271174A (zh) * | 2018-08-01 | 2019-01-25 | 广州市星翼电子科技有限公司 | 一种单片机多个固件分散烧录方法 |
CN111209220A (zh) * | 2018-11-21 | 2020-05-29 | 华夏芯(北京)通用处理器技术有限公司 | 一种非对齐地址访存的融合编码状态机实现方法 |
CN111209220B (zh) * | 2018-11-21 | 2023-06-09 | 华夏芯(北京)通用处理器技术有限公司 | 一种非对齐地址访存的融合编码状态机实现方法 |
CN110308933A (zh) * | 2019-04-25 | 2019-10-08 | 龙芯中科(合肥)技术有限公司 | 访问指令确定方法、装置及存储介质 |
CN110308933B (zh) * | 2019-04-25 | 2021-06-01 | 龙芯中科(合肥)技术有限公司 | 访问指令确定方法、装置及存储介质 |
CN113835639A (zh) * | 2021-09-26 | 2021-12-24 | 深圳大普微电子科技有限公司 | 一种i/o请求处理方法、装置、设备及可读存储介质 |
CN113835639B (zh) * | 2021-09-26 | 2024-03-19 | 深圳大普微电子科技有限公司 | 一种i/o请求处理方法、装置、设备及可读存储介质 |
CN117472797A (zh) * | 2023-12-28 | 2024-01-30 | 北京微核芯科技有限公司 | 非对齐地址访存指令的处理方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104461925B (zh) | 2017-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104461925A (zh) | 一种存储设备地址对齐的自动纠正方法和装置 | |
CN103019888B (zh) | 备份方法与装置 | |
US9880742B2 (en) | Valid data merging method, memory controller and memory storage apparatus | |
US8392649B2 (en) | Memory storage device, controller, and method for responding to host write commands triggering data movement | |
US9164833B2 (en) | Data storage device, operating method thereof and data processing system including the same | |
CN106910528B (zh) | 一种固态硬盘数据巡检的优化方法及装置 | |
CN109582228B (zh) | 基于nand闪存控制器的自动读重试的硬件加速方法及装置 | |
US20230185480A1 (en) | Ssd-based log data storage method and apparatus, device and medium | |
US8266371B2 (en) | Non-volatile storage device, host device, non-volatile storage system, data recording method, and program | |
TWI489466B (zh) | 記憶體抹除方法、記憶體控制器與記憶體儲存裝置 | |
US10101938B2 (en) | Data storage system selectively employing multiple data compression techniques | |
CN104699417A (zh) | 数据储存装置以及其数据存取方法 | |
US9524212B2 (en) | Method, device and operating system for processing and using burn data of NAND flash | |
US9063888B2 (en) | Program code loading and accessing method, memory controller, and memory storage apparatus | |
CN104205229B (zh) | 功率损耗恢复中的固态驱动器管理 | |
US20120166706A1 (en) | Data management method, memory controller and embedded memory storage apparatus using the same | |
GB2538621A (en) | Verification of storage media upon deployment | |
US9823844B2 (en) | Memory management method, memory control circuit unit, and memory storage apparatus | |
CN103136215A (zh) | 存储***的数据读写方法和装置 | |
CN106844491B (zh) | 一种临时数据的写入、读取方法及写入、读取装置 | |
US20160070648A1 (en) | Data storage system and operation method thereof | |
CN114924923A (zh) | 一种硬盘写入点正确性验证方法、***、设备及介质 | |
US9136014B2 (en) | Method for replacing the address of some bad bytes of the data area and the spare area to good address of bytes in non-volatile storage system | |
CN102722456B (zh) | 闪存存储设备的数据写入方法和闪存存储设备 | |
TW201643721A (zh) | 緩衝記憶體存取方法、記憶體控制器與記憶體儲存裝置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |