CN105094742B - 一种写数据的方法和设备 - Google Patents
一种写数据的方法和设备 Download PDFInfo
- Publication number
- CN105094742B CN105094742B CN201410196506.4A CN201410196506A CN105094742B CN 105094742 B CN105094742 B CN 105094742B CN 201410196506 A CN201410196506 A CN 201410196506A CN 105094742 B CN105094742 B CN 105094742B
- Authority
- CN
- China
- Prior art keywords
- data
- flash
- storage region
- written
- storage
- 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
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种写数据的方法和设备,包括:接收光模块发送的写数据指令,写数据指令中包含了待写入闪存Flash的数据;根据写数据指令中包含了待写入Flash的数据的逻辑地址,确定所述待写入Flash的数据存储在所述Flash内部的物理地址;根据设定的物理地址与至少两个存储区域之间的对应关系,得到确定的所述物理地址对应的至少两个存储区域;并从得到的所述至少两个存储区域中选择一个存储区域,在所述选择的存储区域内没有存储数据时,将所述待写入Flash的数据直接写入所述选择的存储区域,这样,光模块在执行写操作时,节省了写数据过程中擦除Flash的时间,有效地缩短了光模块写数据的周期,提高了写数据的效率。
Description
技术领域
本发明涉及计算机控制技术的光模块领域,尤其涉及一种写数据的方法和设备。
背景技术
在计算机控制技术的光模块领域,光模块对外提供了软件访问控制功能。主机(Host)可通过I2C(Inter-Integrade Circuit,内部集成电路)、MDIO(Management DateInput/Output,管理数据输入输出总线)等总线接口访问光模块。其中,访问形式包括读数据、写数据等。
此外,有些光模块存在对内部的Flash闪存储设备执行写操作的命令,比如,XFP模块提供128字节的区域作为用户的可写入区域。
根据Flash闪存储设备的存储特性,当需要向Flash闪存储设备中写入数据时,需要首先确定写入数据存储在Flash闪存储设备的目标地址,并对Flash闪存储设备中的目标地址执行擦除操作,然后再将待写入的数据写入至该目标地址中。
完成这一系列的操作存在以下问题:1、需要消耗大量的时间。由于擦除Flash闪存储设备的最小单位是页,每次在对Flash闪存储设备进行擦除操作前还需要将该页内原有的数据读取至RAM中保存,待擦除操作执行完毕之后,在将RAM中保存的数据逐个写入,消耗时间比较长。2、对于Flash闪存储设备存在对某一个地址反复擦写的情况,这样还会降低Flash的寿命。3、假设将Flash闪存储设备设置的MCU(Micro Control Unit,微控制单元)内部,在对Flash闪存储设备执行擦除操作时,MCU将处于待机状态,无法响应系统发生的其他指令,将导致光模块通信的异常。
发明内容
本发明实施例提供了一种写数据的方法和设备,用于解决目前光模块在向Flash内部写数据时存在写数据周期长且写数据效率比较低的问题。
根据本发明的第一方面,提供了一种写数据的方法,包括:
接收光模块发送的写数据指令,其中,所述写数据指令中包含了待写入闪存Flash的数据;
根据所述写数据指令中包含了待写入Flash的数据的逻辑地址,确定所述待写入Flash的数据存储在所述Flash内部的物理地址;
根据设定的物理地址与至少两个存储区域之间的对应关系,得到确定的所述物理地址对应的至少两个存储区域;并
从得到的所述至少两个存储区域中选择一个存储区域,在所述选择的存储区域内没有存储数据时,将所述待写入Flash的数据直接写入所述选择的存储区域。
结合本发明第一方面可能的实施方式中,第一种可能的实施方式,所述设定的物理地址与至少两个存储区域之间的对应关系的确定方式包括:
预先将Flash内部的存储区域划分成N个子存储区域,其中,N为自然数;
从N份存储区域中选择至少两个子存储区域作为一个物理地址对应的存储区域,并建立所述物理地址与所述至少两个子存储区域之间的对应关系,其中,不同物理地址对应的子存储区域不同。
结合本发明第一方面的第一种可能的实施方式中,第二种可能的实施方式,所述将Flash内部的存储区域划分成N个子存储区域,包括:
将Flash内部的存储区域平均划分成N个子存储区域。
结合本发明第一方面可能的实施方式中,或者结合本发明第一方面的第一种可能的实施方式中,或者结合本发明第一方面的第二种可能的实施方式中,第三种可能的实施方式,所述从得到的所述至少两个存储区域中选择一个存储区域,在所述选择的存储区域没有存储数据时,将所述待写入Flash的数据直接写入所述选择的存储区域,包括:
从得到的所述至少两个存储区域中选择一个存储区域,并判断所述选择的存储区域内是否已存储数据;
若所述选择的存储区域内没有存储数据时,将所述待写入Flash的数据直接写入所述选择的存储区域。
结合本发明第一方面的第三种可能的实施方式中,第四种可能的实施方式,所述方法还包括:
若所述选择的存储区域内已有存储数据时,将所述存储区域内的存储数据与所述待写入Flash的数据进行比较;
当所述存储区域内的存储数据与所述待写入Flash的数据相同时,触发所述待写入Flash的数据写完成指令;
当所述存储区域内写入数据与所述待写入Flash的数据不相同时,继续选择下一个存储区域,直至在确定选择的所述下一个存储区域内没有存储数据时,将所述待写入Flash的数据直接写入选择的所述下一个存储区域。
结合本发明第一方面的第四种可能的实施方式中,第五种可能的实施方式,所述方法还包括:
在当所述存储区域内写入数据与所述待写入Flash的数据相同时触发所述待写入Flash的数据写完成指令时,记录所述存储区域与所述待写入Flash的数据之间的对应关系,以便于在读取所述待写入Flash的数据时,确定读取所述待写入Flash的数据的存储区域。
结合本发明第一方面可能的实施方式中,或者结合本发明第一方面的第一种可能的实施方式中,或者结合本发明第一方面的第二种可能的实施方式中,或者结合本发明第一方面的第三种可能的实施方式中,或者结合本发明第一方面的第四种可能的实施方式中,或者结合本发明第一方面的第五种可能的实施方式中,第六种可能的实施方式,所述Flash内部的存储区域属于已擦除存储区域,处于可被写入数据的状态。
根据本发明的第二方面,提供了一种写数据的设备,包括:
接收模块,用于接收光模块发送的写数据指令,其中,所述写数据指令中包含了待写入闪存Flash的数据;
确定模块,用于根据所述写数据指令中包含了待写入Flash的数据的逻辑地址,确定所述接收模块接收到的所述待写入Flash的数据存储在所述Flash内部的物理地址;
写数据模块,用于根据设定的物理地址与至少两个存储区域之间的对应关系,得到所述确定模块确定的所述物理地址对应的至少两个存储区域;并从得到的所述至少两个存储区域中选择一个存储区域,在所述选择的存储区域内没有存储数据时,将所述接收模块接收到的所述待写入Flash的数据直接写入所述选择的存储区域。
结合本发明第二方面可能的实施方式中,第一种可能的实施方式,所述设备还包括对应关系确定模块,其中:
所述对应关系确定模块,用于确定物理地址与至少两个存储区域之间的对应关系,具体用于:
预先将Flash内部的存储区域划分成N个子存储区域,其中,N为自然数;
从N份存储区域中选择至少两个子存储区域作为一个物理地址对应的存储区域,并建立所述物理地址与所述至少两个子存储区域之间的对应关系,其中,不同物理地址对应的子存储区域不同。
结合本发明第二方面的第一种可能的实施方式中,第二种可能的实施方式,所述对应关系确定模块,具体用于将Flash内部的存储区域平均划分成N个子存储区域。
结合本发明第二方面可能的实施方式中,或者结合本发明第二方面的第一种可能的实施方式中,或者结合本发明第二方面的第二种可能的实施方式中,第三种可能的实施方式,所述写数据模块,具体用于从得到的所述至少两个存储区域中选择一个存储区域,并判断所述选择的存储区域内是否已存储数据;
若所述选择的存储区域内没有存储数据时,将所述待写入Flash的数据直接写入所述选择的存储区域。
结合本发明第二方面的第三种可能的实施方式中,第四种可能的实施方式,所述写数据模块,还用于若所述选择的存储区域内已有存储数据时,将所述存储区域内的存储数据与所述待写入Flash的数据进行比较;
当所述存储区域内的存储数据与所述待写入Flash的数据相同时,触发所述待写入Flash的数据写完成指令;
当所述存储区域内写入数据与所述待写入Flash的数据不相同时,继续选择下一个存储区域,直至在确定选择的所述下一个存储区域内没有存储数据时,将所述待写入Flash的数据直接写入选择的所述下一个存储区域。
结合本发明第二方面的第四种可能的实施方式中,第五种可能的实施方式,所述设备还包括:
记录模块,用于当所述写数据模块在所述存储区域内写入数据与所述待写入Flash的数据相同时触发所述待写入Flash的数据写完成指令时,记录所述存储区域与所述待写入Flash的数据之间的对应关系,以便于在读取所述待写入Flash的数据时,确定读取所述待写入Flash的数据的存储区域。
结合本发明第二方面可能的实施方式中,或者结合本发明第二方面的第一种可能的实施方式中,或者结合本发明第二方面的第二种可能的实施方式中,或者结合本发明第二方面的第三种可能的实施方式中,或者结合本发明第二方面的第四种可能的实施方式中,或者结合本发明第二方面的第五种可能的实施方式中,第六种可能的实施方式,所述Flash内部的存储区域属于已擦除存储区域,处于可被写入数据的状态。
根据本发明的第三方面,提供了一种写数据的设备,包括:
通信总线,用于存储器与处理器之间的通信;
存储器,用于存储写数据的应用程序代码;
处理器,用于执行存储器中存储的写数据的应用程序代码,具体执行:
接收光模块发送的写数据指令,其中,所述写数据指令中包含了待写入闪存Flash的数据;
根据所述写数据指令中包含了待写入Flash的数据的逻辑地址,确定所述待写入Flash的数据存储在所述Flash内部的物理地址;
根据设定的物理地址与至少两个存储区域之间的对应关系,得到确定的所述物理地址对应的至少两个存储区域;并
从得到的所述至少两个存储区域中选择一个存储区域,在所述选择的存储区域内没有存储数据时,将所述待写入Flash的数据直接写入所述选择的存储区域。
结合本发明第三方面可能的实施方式中,第一种可能的实施方式,所述处理器,还用于执行:
确定物理地址与至少两个存储区域之间的对应关系,具体用于:
预先将Flash内部的存储区域划分成N个子存储区域,其中,N为自然数;
从N份存储区域中选择至少两个子存储区域作为一个物理地址对应的存储区域,并建立所述物理地址与所述至少两个子存储区域之间的对应关系,其中,不同物理地址对应的子存储区域不同。
结合本发明第三方面的第一种可能的实施方式中,第二种可能的实施方式,所述处理器,具体用于执行:
将Flash内部的存储区域平均划分成N个子存储区域。
结合本发明第三方面可能的实施方式中,或者结合本发明第三方面的第一种可能的实施方式中,或者结合本发明第三方面的第二种可能的实施方式中,第三种可能的实施方式,所述处理器,具体用于执行:
从得到的所述至少两个存储区域中选择一个存储区域,并判断所述选择的存储区域内是否已存储数据;
若所述选择的存储区域内没有存储数据时,将所述待写入Flash的数据直接写入所述选择的存储区域。
结合本发明第三方面的第三种可能的实施方式中,第四种可能的实施方式,所述处理器,还用于执行:
若所述选择的存储区域内已有存储数据时,将所述存储区域内的存储数据与所述待写入Flash的数据进行比较;
当所述存储区域内的存储数据与所述待写入Flash的数据相同时,触发所述待写入Flash的数据写完成指令;
当所述存储区域内写入数据与所述待写入Flash的数据不相同时,继续选择下一个存储区域,直至在确定选择的所述下一个存储区域内没有存储数据时,将所述待写入Flash的数据直接写入选择的所述下一个存储区域。
结合本发明第三方面的第四种可能的实施方式中,第五种可能的实施方式,所述处理器,还用于执行:
在当所述存储区域内写入数据与所述待写入Flash的数据相同时触发所述待写入Flash的数据写完成指令时,记录所述存储区域与所述待写入Flash的数据之间的对应关系,以便于在读取所述待写入Flash的数据时,确定读取所述待写入Flash的数据的存储区域。
结合本发明第三方面可能的实施方式中,或者结合本发明第三方面的第一种可能的实施方式中,或者结合本发明第三方面的第二种可能的实施方式中,或者结合本发明第三方面的第三种可能的实施方式中,或者结合本发明第三方面的第四种可能的实施方式中,或者结合本发明第三方面的第五种可能的实施方式中,第六种可能的实施方式,所述Flash内部的存储区域属于已擦除存储区域,处于可被写入数据的状态。
本发明实施例通过接收光模块发送的写数据指令,其中,所述写数据指令中包含了待写入闪存Flash的数据;根据所述写数据指令中包含了待写入Flash的数据的逻辑地址,确定所述待写入Flash的数据存储在所述Flash内部的物理地址;根据设定的物理地址与至少两个存储区域之间的对应关系,得到确定的所述物理地址对应的至少两个存储区域;并从得到的所述至少两个存储区域中选择一个存储区域,在所述选择的存储区域内没有存储数据时,将所述待写入Flash的数据直接写入所述选择的存储区域,这样,光模块在执行写操作时,由于Flash内部为同一物理地址分配了多个存储区域,当多个待写入Flash数据的逻辑地址对应同一个物理地址时,可以不执行擦除操作,而是选择该物理地址对应的没有存储数据的存储区域进行存储,节省了写数据过程中擦除Flash的时间,有效地缩短了光模块写数据的周期,提高了写数据的效率,并且由于减少了Flash内部的擦除次数,避免了频繁擦除Flash操作造成Flash寿命缩短的问题,有效提升了Flash的使用周期。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种写数据的方法的流程示意图;
图2为本发明实施例二提供的一种写数据的设备的结构示意图;
图3为本发明实施例三提供的一种写数据的设备的结构示意图。
具体实施方式
为了实现本发明的目的,本发明实施例提供了一种写数据的方法和设备,接收光模块发送的写数据指令,其中,所述写数据指令中包含了待写入闪存Flash的数据;根据所述写数据指令中包含了待写入Flash的数据的逻辑地址,确定所述待写入Flash的数据存储在所述Flash内部的物理地址;根据设定的物理地址与至少两个存储区域之间的对应关系,得到确定的所述物理地址对应的至少两个存储区域;并从得到的所述至少两个存储区域中选择一个存储区域,在所述选择的存储区域内没有存储数据时,将所述待写入Flash的数据直接写入所述选择的存储区域,这样,光模块在执行写操作时,由于Flash内部为同一物理地址分配了多个存储区域,当多个待写入Flash数据的逻辑地址对应同一个物理地址时,可以不执行擦除操作,而是选择该物理地址对应的没有存储数据的存储区域进行存储,节省了写数据过程中擦除Flash的时间,有效地缩短了光模块写数据的周期,提高了写数据的效率,并且由于减少了Flash内部的擦除次数,避免了频繁擦除Flash操作造成Flash寿命缩短的问题,有效提升了Flash的使用周期。
需要说明的是,本发明中涉及的所述Flash内部的存储区域属于已擦除存储区域,处于可被写入数据的状态。
本发明涉及的写数据系统包含了MCU(Micro Control Unit,微控制单元)、光模块和Flash存储介质,其中,MCU完成对光模块的控制、通讯、命令解析等操作;Flash存储介质负责存储来自光模块的数据,保证掉电数据不丢失。Flash存储介质可以是内置的存储介质,还可以是外置的存储介质,这里不做限定。
下面结合说明书附图对本发明各个实施例进行详细描述。下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例一:
如图1所示,为本发明实施例一提供的一种写数据的方法的流程示意图。所述方法可以如下所述。
步骤101:接收光模块发送的写数据指令。
其中,所述写数据指令中包含了待写入闪存Flash的数据。
在步骤101中,当MCU通过通信单元接收到主机(Host)的写命令时,解析该写命令,并启动光模块向Flash存储介质中写数据的操作。
此时,光模块将向Flash存储介质发送写数据指令,并在写数据指令中携带了待写入闪存Flash的数据。
步骤102:根据所述写数据指令中包含了待写入Flash的数据的逻辑地址,确定所述待写入Flash的数据存储在所述Flash内部的物理地址。
在步骤102中,所谓逻辑地址,又称为相对地址,是根据所述的逻辑块号得到的。
所述物理地址,是指存储器中存放数据的位置。
一般,存储设备在接收到待写入的数据时,在具备地址变换功能时,根据所述待写入数据的逻辑地址,经过寻址方式的计算或变换才得到内存设备中的物理地址。
步骤103:根据设定的物理地址与至少两个存储区域之间的对应关系,得到确定的所述物理地址对应的至少两个存储区域。
在步骤103中,为了防止频繁擦除Flash内部的存储区域,本方案为每一个Flash内部的物理地址分配至少两个存储区域,这样在步骤102确定物理地址后,能从确定的物理地址对应的存储区域中选择未存储数据的存储区域,直接存储待写入的数据,将避免频繁擦除Flash内部的存储区域的问题。
具体地,设定的物理地址与至少两个存储区域之间的对应关系的确定方式包括:
预先将Flash内部的存储区域划分成N个子存储区域。
可选地,将Flash内部的存储区域平均划分成N个子存储区域。
其中,N为自然数;
从N份存储区域中选择至少两个子存储区域作为一个物理地址对应的存储区域,并建立所述物理地址与所述至少两个子存储区域之间的对应关系。
其中,不同物理地址对应的子存储区域不同。
或者,将得到的N个子存储区域按照物理地址个数进行平均划分,使得每一个物理地址对应的子存储区域的个数相同。
步骤104:针对得到的所述至少两个存储区域,分别执行以下操作:
步骤1041:从得到的所述至少两个存储区域中选择一个存储区域,判断所述选择的存储区域内是否已存储数据,若所述选择的存储区域内没有存储数据时,则执行步骤1042;否则,执行步骤1043。
步骤1042:将所述待写入Flash的数据直接写入所述选择的存储区域,结束操作。
步骤1043:将所述存储区域内的存储数据与所述待写入Flash的数据进行比较。
根据比较结果,当所述存储区域内的存储数据与所述待写入Flash的数据相同时,执行步骤1044;否则,执行步骤1046。
步骤1044:触发所述待写入Flash的数据写完成指令。
步骤1045:在当所述存储区域内写入数据与所述待写入Flash的数据相同时触发所述待写入Flash的数据写完成指令时,记录所述存储区域与所述待写入Flash的数据之间的对应关系,并结束写操作。
以便于在读取所述待写入Flash的数据时,确定读取所述待写入Flash的数据的存储区域。
步骤1046:继续选择下一个存储区域,跳转执行步骤1041。
经过步骤1041~步骤1046的操作,直至在确定选择的所述下一个存储区域内没有存储数据时,将所述待写入Flash的数据直接写入选择的所述下一个存储区域,完成待写入数据的写操作。
需要说明的是,所述Flash内部的存储区域属于已擦除存储区域,处于可被写入数据的状态。
通过本发明实施例一的方案,接收光模块发送的写数据指令,其中,所述写数据指令中包含了待写入闪存Flash的数据;根据所述写数据指令中包含了待写入Flash的数据的逻辑地址,确定所述待写入Flash的数据存储在所述Flash内部的物理地址;根据设定的物理地址与至少两个存储区域之间的对应关系,得到确定的所述物理地址对应的至少两个存储区域;并从得到的所述至少两个存储区域中选择一个存储区域,在所述选择的存储区域内没有存储数据时,将所述待写入Flash的数据直接写入所述选择的存储区域,这样,光模块在执行写操作时,由于Flash内部为同一物理地址分配了多个存储区域,当多个待写入Flash数据的逻辑地址对应同一个物理地址时,可以不执行擦除操作,而是选择该物理地址对应的没有存储数据的存储区域进行存储,节省了写数据过程中擦除Flash的时间,有效地缩短了光模块写数据的周期,提高了写数据的效率,并且由于减少了Flash内部的擦除次数,避免了频繁擦除Flash操作造成Flash寿命缩短的问题,有效提升了Flash的使用周期。
实施例二:
如图2所示,为本发明实施例二提供的一种写数据的设备的结构示意图。本发明实施例二所述的设备具备执行本发明实施例一的功能,所述设备可以采用通用计算机系统结构,计算机系统可具体是基于处理器的计算机。所述处理实体包括至少一个处理器21,通信总线22,存储器23以及至少一个通信接口24。
处理器21可以是一个通用中央处理器(CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本发明方案程序执行的集成电路。
其中,所述通信总线22可包括一通路,在上述组件之间传送信息。所述通信接口24,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(Wireless Local Area Networks,WLAN)等。
计算机系统包括一个或多个存储器23,可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(randomaccess memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。这些存储器通过总线与处理器相连接。
其中,所述存储器23用于存储执行本发明方案写数据的应用程序代码,执行本发明方案的应用程序代码保存在存储器中,并由处理器21来控制执行。所述处理器21用于执行所述存储器23中存储的应用程序。
在一种可能的实施方式中,当上述应用程序被所述处理器21执行时,实现如下功能:
接收光模块发送的写数据指令,其中,所述写数据指令中包含了待写入闪存Flash的数据;
根据所述写数据指令中包含了待写入Flash的数据的逻辑地址,确定所述待写入Flash的数据存储在所述Flash内部的物理地址;
根据设定的物理地址与至少两个存储区域之间的对应关系,得到确定的所述物理地址对应的至少两个存储区域;并
从得到的所述至少两个存储区域中选择一个存储区域,在所述选择的存储区域内没有存储数据时,将所述待写入Flash的数据直接写入所述选择的存储区域。
在一种可能的实施方式中,所述处理器21,还用于执行:
确定物理地址与至少两个存储区域之间的对应关系,具体用于:
预先将Flash内部的存储区域划分成N个子存储区域,其中,N为自然数;
从N份存储区域中选择至少两个子存储区域作为一个物理地址对应的存储区域,并建立所述物理地址与所述至少两个子存储区域之间的对应关系,其中,不同物理地址对应的子存储区域不同。
在一种可能的实施方式中,所述处理器21,具体用于执行:
将Flash内部的存储区域平均划分成N个子存储区域。
在一种可能的实施方式中,所述处理器21,具体用于执行:
从得到的所述至少两个存储区域中选择一个存储区域,并判断所述选择的存储区域内是否已存储数据;
若所述选择的存储区域内没有存储数据时,将所述待写入Flash的数据直接写入所述选择的存储区域。
在一种可能的实施方式中,所述处理器21,还用于执行:
若所述选择的存储区域内已有存储数据时,将所述存储区域内的存储数据与所述待写入Flash的数据进行比较;
当所述存储区域内的存储数据与所述待写入Flash的数据相同时,触发所述待写入Flash的数据写完成指令;
当所述存储区域内写入数据与所述待写入Flash的数据不相同时,继续选择下一个存储区域,直至在确定选择的所述下一个存储区域内没有存储数据时,将所述待写入Flash的数据直接写入选择的所述下一个存储区域。
在一种可能的实施方式中,所述处理器21,还用于执行:
在当所述存储区域内写入数据与所述待写入Flash的数据相同时触发所述待写入Flash的数据写完成指令时,记录所述存储区域与所述待写入Flash的数据之间的对应关系,以便于在读取所述待写入Flash的数据时,确定读取所述待写入Flash的数据的存储区域。
在一种可能的实施方式中,所述Flash内部的存储区域属于已擦除存储区域,处于可被写入数据的状态。
本实施例中,应用程序被处理器执行时,本发明实例所述设备的处理,以及与其他网元之间的交互方法可以参考上述方法实施例。这里不再详细描述。
本实施例提供的设备,光模块在执行写操作时,由于Flash内部为同一物理地址分配了多个存储区域,当多个待写入Flash数据的逻辑地址对应同一个物理地址时,可以不执行擦除操作,而是选择该物理地址对应的没有存储数据的存储区域进行存储,节省了写数据过程中擦除Flash的时间,有效地缩短了光模块写数据的周期,提高了写数据的效率,并且由于减少了Flash内部的擦除次数,避免了频繁擦除Flash操作造成Flash寿命缩短的问题,有效提升了Flash的使用周期。
实施例三:
如图3所示,为本发明实施例三提供的一种写数据的设备的结构示意图,所述设备包括:接收模块31、确定模块32和写数据模块33,其中:
接收模块31,用于接收光模块发送的写数据指令,其中,所述写数据指令中包含了待写入闪存Flash的数据;
确定模块32,用于根据所述写数据指令中包含了待写入Flash的数据的逻辑地址,确定所述接收模块31接收到的所述待写入Flash的数据存储在所述Flash内部的物理地址;
写数据模块33,用于根据设定的物理地址与至少两个存储区域之间的对应关系,得到所述确定模块32确定的所述物理地址对应的至少两个存储区域;并从得到的所述至少两个存储区域中选择一个存储区域,在所述选择的存储区域内没有存储数据时,将所述接收模块接收到的所述待写入Flash的数据直接写入所述选择的存储区域。
可选地,所述设备还包括:对应关系确定模块34,其中:
所述对应关系确定模块34,用于确定物理地址与至少两个存储区域之间的对应关系,具体用于:
预先将Flash内部的存储区域划分成N个子存储区域,其中,N为自然数;
从N份存储区域中选择至少两个子存储区域作为一个物理地址对应的存储区域,并建立所述物理地址与所述至少两个子存储区域之间的对应关系,其中,不同物理地址对应的子存储区域不同。
具体地,所述对应关系确定模块34,具体用于将Flash内部的存储区域平均划分成N个子存储区域。
具体地,所述写数据模块33,具体用于从得到的所述至少两个存储区域中选择一个存储区域,并判断所述选择的存储区域内是否已存储数据;
若所述选择的存储区域内没有存储数据时,将所述待写入Flash的数据直接写入所述选择的存储区域。
具体地,所述写数据模块33,还用于若所述选择的存储区域内已有存储数据时,将所述存储区域内的存储数据与所述待写入Flash的数据进行比较;
当所述存储区域内的存储数据与所述待写入Flash的数据相同时,触发所述待写入Flash的数据写完成指令;
当所述存储区域内写入数据与所述待写入Flash的数据不相同时,继续选择下一个存储区域,直至在确定选择的所述下一个存储区域内没有存储数据时,将所述待写入Flash的数据直接写入选择的所述下一个存储区域。
可选地,所述设备还包括:记录模块35,其中:
记录模块35,用于当所述写数据模块在所述存储区域内写入数据与所述待写入Flash的数据相同时触发所述待写入Flash的数据写完成指令时,记录所述存储区域与所述待写入Flash的数据之间的对应关系,以便于在读取所述待写入Flash的数据时,确定读取所述待写入Flash的数据的存储区域。
需要说明的是,所述Flash内部的存储区域属于已擦除存储区域,处于可被写入数据的状态。
需要说明的是,本发明实施例三所述的设备可以通过硬件实现,也可以通过软件实现,使得光模块在执行写操作时,由于Flash内部为同一物理地址分配了多个存储区域,当多个待写入Flash数据的逻辑地址对应同一个物理地址时,可以不执行擦除操作,而是选择该物理地址对应的没有存储数据的存储区域进行存储,节省了写数据过程中擦除Flash的时间,有效地缩短了光模块写数据的周期,提高了写数据的效率,并且由于减少了Flash内部的擦除次数,避免了频繁擦除Flash操作造成Flash寿命缩短的问题,有效提升了Flash的使用周期。
本领域的技术人员应明白,本发明的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用先擦后写的存储介质(包括但不限于磁盘存储器、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (14)
1.一种写数据的方法,其特征在于,包括:
接收光模块发送的写数据指令,其中,所述写数据指令中包含了待写入闪存Flash的数据;
根据所述写数据指令中包含了待写入Flash的数据的逻辑地址,确定所述待写入Flash的数据存储在所述Flash内部的物理地址;
根据设定的物理地址与至少两个存储区域之间的对应关系,得到确定的所述物理地址对应的至少两个存储区域;并
从得到的所述至少两个存储区域中选择一个存储区域,在所述选择的存储区域内没有存储数据时,将所述待写入Flash的数据直接写入所述选择的存储区域。
2.如权利要求1所述的方法,其特征在于,所述设定的物理地址与至少两个存储区域之间的对应关系的确定方式包括:
预先将Flash内部的存储区域划分成N个子存储区域,其中,N为自然数;
从N个子存储区域中选择至少两个子存储区域作为一个物理地址对应的存储区域,并建立所述物理地址与所述至少两个子存储区域之间的对应关系,其中,不同物理地址对应的子存储区域不同。
3.如权利要求2所述的方法,其特征在于,所述将Flash内部的存储区域划分成N个子存储区域,包括:
将Flash内部的存储区域平均划分成N个子存储区域。
4.如权利要求1至3任一所述的方法,其特征在于,所述从得到的所述至少两个存储区域中选择一个存储区域,在所述选择的存储区域没有存储数据时,将所述待写入Flash的数据直接写入所述选择的存储区域,包括:
从得到的所述至少两个存储区域中选择一个存储区域,并判断所述选择的存储区域内是否已存储数据;
若所述选择的存储区域内没有存储数据时,将所述待写入Flash的数据直接写入所述选择的存储区域。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
若所述选择的存储区域内已有存储数据时,将所述存储区域内的存储数据与所述待写入Flash的数据进行比较;
当所述存储区域内的存储数据与所述待写入Flash的数据相同时,触发所述待写入Flash的数据写完成指令;
当所述存储区域内写入数据与所述待写入Flash的数据不相同时,继续选择下一个存储区域,直至在确定选择的所述下一个存储区域内没有存储数据时,将所述待写入Flash的数据直接写入选择的所述下一个存储区域。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
在当所述存储区域内写入数据与所述待写入Flash的数据相同时触发所述待写入Flash的数据写完成指令时,记录所述存储区域与所述待写入Flash的数据之间的对应关系,以便于在读取所述待写入Flash的数据时,确定读取所述待写入Flash的数据的存储区域。
7.如权利要求1至3任一所述的方法,其特征在于,所述Flash内部的存储区域属于已擦除存储区域,处于可被写入数据的状态。
8.一种写数据的设备,其特征在于,包括:
接收模块,用于接收光模块发送的写数据指令,其中,所述写数据指令中包含了待写入闪存Flash的数据;
确定模块,用于根据所述写数据指令中包含了待写入Flash的数据的逻辑地址,确定所述接收模块接收到的所述待写入Flash的数据存储在所述Flash内部的物理地址;
写数据模块,用于根据设定的物理地址与至少两个存储区域之间的对应关系,得到所述确定模块确定的所述物理地址对应的至少两个存储区域;并从得到的所述至少两个存储区域中选择一个存储区域,在所述选择的存储区域内没有存储数据时,将所述接收模块接收到的所述待写入Flash的数据直接写入所述选择的存储区域。
9.如权利要求8所述的设备,其特征在于,所述设备还包括对应关系确定模块,其中:
所述对应关系确定模块,用于确定物理地址与至少两个存储区域之间的对应关系,具体用于:
预先将Flash内部的存储区域划分成N个子存储区域,其中,N为自然数;
从N个子存储区域中选择至少两个子存储区域作为一个物理地址对应的存储区域,并建立所述物理地址与所述至少两个子存储区域之间的对应关系,其中,不同物理地址对应的子存储区域不同。
10.如权利要求9所述的设备,其特征在于,
所述对应关系确定模块,具体用于将Flash内部的存储区域平均划分成N个子存储区域。
11.如权利要求8至10任一所述的设备,其特征在于,
所述写数据模块,具体用于从得到的所述至少两个存储区域中选择一个存储区域,并判断所述选择的存储区域内是否已存储数据;
若所述选择的存储区域内没有存储数据时,将所述待写入Flash的数据直接写入所述选择的存储区域。
12.如权利要求11所述的设备,其特征在于,
所述写数据模块,还用于若所述选择的存储区域内已有存储数据时,将所述存储区域内的存储数据与所述待写入Flash的数据进行比较;
当所述存储区域内的存储数据与所述待写入Flash的数据相同时,触发所述待写入Flash的数据写完成指令;
当所述存储区域内写入数据与所述待写入Flash的数据不相同时,继续选择下一个存储区域,直至在确定选择的所述下一个存储区域内没有存储数据时,将所述待写入Flash的数据直接写入选择的所述下一个存储区域。
13.如权利要求12所述的设备,其特征在于,所述设备还包括:
记录模块,用于当所述写数据模块在所述存储区域内写入数据与所述待写入Flash的数据相同时触发所述待写入Flash的数据写完成指令时,记录所述存储区域与所述待写入Flash的数据之间的对应关系,以便于在读取所述待写入Flash的数据时,确定读取所述待写入Flash的数据的存储区域。
14.如权利要求8至10任一所述的设备,其特征在于,所述Flash内部的存储区域属于已擦除存储区域,处于可被写入数据的状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410196506.4A CN105094742B (zh) | 2014-05-09 | 2014-05-09 | 一种写数据的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410196506.4A CN105094742B (zh) | 2014-05-09 | 2014-05-09 | 一种写数据的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105094742A CN105094742A (zh) | 2015-11-25 |
CN105094742B true CN105094742B (zh) | 2018-12-07 |
Family
ID=54575294
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410196506.4A Active CN105094742B (zh) | 2014-05-09 | 2014-05-09 | 一种写数据的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105094742B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108052293A (zh) * | 2017-12-26 | 2018-05-18 | 宣城新维保网络技术有限公司 | 一种存储器数据处理方法 |
CN108804036A (zh) * | 2018-05-24 | 2018-11-13 | 武汉华工正源光子技术有限公司 | 光模块中的数据处理方法、光模块及数据处理系统 |
CN110457233A (zh) * | 2019-08-10 | 2019-11-15 | 深圳市德名利电子有限公司 | 一种基于混合大小单元的闪存管理方法和装置以及设备 |
CN114567413B (zh) * | 2022-02-17 | 2023-06-30 | 中国银联股份有限公司 | 一种数据存储方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1574096A (zh) * | 2003-06-10 | 2005-02-02 | 松下电器产业株式会社 | 半导体存储器 |
CN102455879A (zh) * | 2010-10-21 | 2012-05-16 | 群联电子股份有限公司 | 存储器存储装置、存储器控制器与自动产生填充文件方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101656094B (zh) * | 2009-09-25 | 2012-04-18 | 杭州华三通信技术有限公司 | 数据存储方法和存储设备 |
JP5066209B2 (ja) * | 2010-03-18 | 2012-11-07 | 株式会社東芝 | コントローラ、データ記憶装置、及びプログラム |
-
2014
- 2014-05-09 CN CN201410196506.4A patent/CN105094742B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1574096A (zh) * | 2003-06-10 | 2005-02-02 | 松下电器产业株式会社 | 半导体存储器 |
CN102455879A (zh) * | 2010-10-21 | 2012-05-16 | 群联电子股份有限公司 | 存储器存储装置、存储器控制器与自动产生填充文件方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105094742A (zh) | 2015-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5923844B2 (ja) | ソリッドステートドライブのメモリ装置への論理的アドレスの適応マッピング | |
US20080195833A1 (en) | Systems, methods and computer program products for operating a data processing system in which a file system's unit of memory allocation is coordinated with a storage system's read/write operation unit | |
CN105094742B (zh) | 一种写数据的方法和设备 | |
CN109313620A (zh) | 存储器协议 | |
CN104298606A (zh) | 固态存储装置中垃圾搜集动作的控制方法 | |
CN108496161A (zh) | 数据缓存装置及控制方法、数据处理芯片、数据处理系统 | |
CN106610901B (zh) | 存储器的磨损次数平衡方法及装置 | |
CN104978148A (zh) | 数据写入方法及装置、数据读取方法及装置 | |
CN104503703A (zh) | 缓存的处理方法和装置 | |
CN108958643A (zh) | 数据存储装置及其操作方法 | |
CN108958848A (zh) | 近存储器计算体系结构 | |
US11385900B2 (en) | Accessing queue data | |
CN103514140B (zh) | 用于实现可重构系统中配置信息多发射的重构控制器 | |
CN105512047A (zh) | Flash闪存的写操作、擦除操作方法及装置 | |
US11327939B2 (en) | Method and device for indexing dirty data in storage system page | |
CN109240615A (zh) | 一种固态硬盘的数据读取方法、装置及设备 | |
CN108196954A (zh) | 一种文件读写方法、系统、设备及计算机存储介质 | |
CN105264608A (zh) | 存储数据的方法、内存控制器和中央处理器 | |
CN109710547B (zh) | 一种工业物联网中的缓冲内存管理设计与实现方法 | |
US9501414B2 (en) | Storage control device and storage control method for cache processing according to time zones | |
CN108170380B (zh) | 一种固态硬盘提升顺序读性能的方法及固态硬盘 | |
CN104252423A (zh) | 基于多内核处理器的一致性处理方法和装置 | |
CN104572655B (zh) | 数据处理的方法、装置及系统 | |
CN112181274A (zh) | 提升存储设备性能稳定性的大块的组织方法及其存储设备 | |
CN112148203B (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 |