一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

闪存的控制方法、装置、存储介质和电子设备与流程

2022-05-27 01:40:41 来源:中国专利 TAG:


1.本技术存储控制领域,尤其涉及一种闪存的控制方法、装置、存储介质和电子设备。


背景技术:

2.闪存(flash memory,快闪存储器)是一种非易失性存储器,在上电后,会根据一定的遍历粒度在闪存中遍历未写数据的存储单元,然后将数据写入到遍历到的存储单元,最大遍历次数和闪存的容量和遍历粒度有关。例如:闪存的容量为256k个字节,遍历粒度为4个字节,那么最大遍历次数为(256*1024-8)/4=65534次,即最坏的情况下需要遍历65534次能到查找到未写数据的存储空间,因此遍历的效率较低。


技术实现要素:

3.本技术实施例提供了闪存的控制方法、装置、存储介质及电子设备,可以解决现有技术在闪存中遍历未写数据的存储单元存在效率较低的问题。所述技术方案如下:
4.第一方面,本技术实施例提供了一种闪存的控制方法,应用于容量为y个字节的闪存,所述闪存的读写粒度为x个字节,所述闪存包括第一存储空间和第二存储空间,所述第一存储空间的大小为n个比特,满足n=floor[(y-1)/(x 1/x)];
[0005]
所述控制方法包括:
[0006]
接收待写入的目标数据;其中,所述目标数据的大小为x个字节;
[0007]
以k个字节为遍历粒度在所述第一存储空间中进行遍历;其中,1≤k≤x,k为整数;
[0008]
根据遍历结果统计所述第一存储空间中数值等于0比特位的数量;
[0009]
若所述数量小于n时,根据所述数量在所述第二存储空间中确定未写数据的存储单元的起始地址;其中,所述存储单元的大小为x个字节;
[0010]
根据所述起始地址,将所述目标数据写入第二存储空间中;
[0011]
成功写入所述目标数据后,根据所述遍历结果确定所述第一存储空间位于最高位的数值为0的比特位的序号i,以及将序号为i 1的比特位的数值修改为0。
[0012]
第二方面,本技术实施例提供了一种闪存的控制装置,应用于容量为y个字节的闪存,所述闪存的读写粒度为x个字节,所述闪存包括第一存储空间和第二存储空间,所述第一存储空间的大小为n个比特,满足n=floor[(y-1)/(x 1/x)];
[0013]
所述闪存的控制装置包括:
[0014]
收发单元,用于接收待写入的目标数据;其中,所述目标数据的大小为x个字节;
[0015]
遍历单元,用于以k个字节为遍历粒度在所述第一存储空间中进行遍历;其中,1≤k≤x,k为整数;
[0016]
统计单元,用于根据遍历结果统计所述第一存储空间中数值等于0比特位的数量;
[0017]
确定单元,用于若所述数量小于n时,根据所述数量在所述第二存储空间中确定未写数据的存储单元的起始地址;其中,所述存储单元的大小为x个字节;
[0018]
写入单元,用于根据所述起始地址,将所述目标数据写入第二存储空间中;
[0019]
修改单元,用于成功写入所述目标数据后,根据所述遍历结果确定所述第一存储空间位于最高位的数值为0的比特位的序号i,以及将序号为i 1的比特位的数值修改为0。
[0020]
第三方面,本技术实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法步骤。
[0021]
第四方面,本技术实施例提供一种电子设备,可包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行上述的方法步骤。
[0022]
本技术一些实施例提供的技术方案带来的有益效果至少包括:
[0023]
在闪存中设置第一存储空间,第一存储空间的大小与闪存的容量和读写粒度有关,第一存储空间中的每个比特位对应一个写入次数,在接收到待写入的目标数据时,根据预设的遍历粒度在第一存储空间中遍历数值等于0的比特位的数量,在数量小于闪存的最大写入次数时,根据数量确定存储单元的起始地址,然后将目标数据写入到确定的存储单元中,以及修改第一存储空间中当前写入次数对应的比特位的数值修改为0,本技术在写入目标数据之前可以减少遍历未写数据单元的次数,减少遍历的时间和提高写入的效率。
附图说明
[0024]
为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0025]
图1是本技术实施例提供的电子设备的示意图;
[0026]
图2是本技术实施例提供的闪存的控制方法的流程示意图;
[0027]
图3是本技术提供的一种闪存的控制装置的结构示意图;
[0028]
图4是本技术提供的一种电子设备的结构示意图。
具体实施方式
[0029]
为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施例方式作进一步地详细描述。
[0030]
需要说明的是,本技术提供的内存的控制一般由闪存的控制装置101执行,相应的,闪存的控制装置101一般设置于电子设备10中。
[0031]
图1示出了可以应用于本技术的电子设备的结构图。
[0032]
电子设备10除包括壳体之外,还包括闪存的控制装置101和闪存102,闪存的数量可以为一个或多个,控制装置101和闪存102之间相连。电子设备是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携式计算机和台式计算机等等。例如:显示设备可以是阴极射线管显示器(cathode ray tube display,简称cr)、发光二极管显示器(light-emitting diode display,简称led)、电子墨水屏、液晶显示屏(liquid crystal display,简称lcd)、等离子显示面板(plasma display panel,简称pdp)等。用户可以利用电子设备上的显示设备,来查看显示的文字、图片、视频等信息。
[0033]
电子设备其上还可以安装摄像头,摄像头用于采集视频流。
[0034]
下面将结合附图2,对本技术实施例提供的闪存的控制方法进行详细介绍。
[0035]
请参见图2,为本技术实施例提供了一种闪存的控制方法的流程示意图。如图2所示,本技术实施例的所述方法可以包括以下步骤:
[0036]
s201、接收待写入的目标数据。
[0037]
其中,目标数据为写入到闪存中的数据,目标数据的大小等于闪存的读写粒度,例如:闪存的读写粒度为8个字节,那么每次在闪存中读写的数据的大小也为8个字节。闪存的类型可以为nor闪存或nand闪存,目标数据包含真实数据和校验数据,校验数据用于校验真实数据是否发生错误,例如:真实数据的大小为4个字节,校验数据的大小也为4个字节,校验数据为crc校验码或其他类型的校验码。目标数据来自外部的读写设备,例如:处理器、内存控制器或其他类型的设备等。进一步的,在待写入数据的大小大于读写粒度时,将待写入数据分割为多个大小相等的目标数据,当待写入数据的大小不为读写粒度的整数倍时,可以将最后一个分割的数据进行填充操作使其大小等于目标数据。
[0038]
其中,本技术的闪存的容量为y个字节,闪存的读写粒度为x个字节,即读写设备每次可以从闪存中读取或写入所述x个字节的数据,闪存由第一存储空间和第二存储空间组成,第一存储空间位于第二存储空间的前面且相邻。第一存储空间的大小为n个比特,n表示闪存中以所述x个字节为读写粒度执行写操作的最大次数,n为整数,满足n=floor[(y-1)/(x 1/x)],floor[]表示向下取整,即将计算结果中的小数部分舍去。
[0039]
举例来说,假设y=256*1024,即闪存的容量为256k字节,x=8,那么n=floor[(256*1024-1)/(8 1/8)]=floor[32263.7538]=32263。即第一存储空间的大小为62263个比特,第二存储空间的大小为出第一存储空间之外的部分。
[0040]
s202、以k个字节为遍历粒度在第一存储空间中进行遍历。
[0041]
其中,遍历粒度表示每次遍历查询的数据的大小,本技术的遍历粒度为k个字节,满足1≤k≤x的整数,那么在第一存储空间的字节数除以k得到的结果,相应的本技术的最大遍历次数为floor[n/(8*k)],即最坏的情况下遍历floor[n/(8*k)]次才能查找到未写数据的存储单元。例如:根据上面的例子,k=4,第一存储空间的大小为n=32263比特,换算成字节为floor(32263/8)=4032字节,那么最大遍历次数等于floor(4032/4)=1008次,在现有技术中,最大遍历次数=(256*1024-8)/4≈63998,可以看出本技术的最大遍历次数远小于现有技术的最大遍历次数。
[0042]
本技术可以在32263个比特位的低位向高位进行遍历,每次遍历时记录遍历到的比特位的位置,若遍历到的k个字节的比特位的数值全部为0,则继续遍历,若遍历到的k个字节的比特位置的数全部为1,则停止遍历。
[0043]
s203、根据遍历结果统计第一存储空间中数值等于0的比特位的数量。
[0044]
其中,在遍历到的k个字节的比特位的数值全部为1时,停止遍历,统计遍历到的数值为0的比特位的数量,由于第一存储空间中数值为0的比特位是连续分布的,因此统计的数量也是第一存储空间中数值为0的比特位的数量。
[0045]
s204、若数量小于n,根据数量在第二存储空间中确定未写数据的存储单元的起始地址。
[0046]
其中,第二存储空间用于写入目标数据,第二存储空间由多个大小相等的存储单
元组成,每次存储单元对应一个地址,存储单元的大小为x个字节。未写数据的存储单元即存储单元包含的各个比特位的数值全部为1,已写数据的存储单元即包含的各个比特位的数值至少有一个为0。本技术的未写数据的存储单元的起始地址,即第二存储空间中首个未写数据的存储单元的地址。
[0047]
进一步的,本技术的存储单元的大小为1个字节,地址使用16进制来表示,根据如下公式来确定未写数据的存储单元的起始地址:
[0048]
addr_b floor(n/8) addr_offset*8 8;其中,addr_b表示基地址,addr_offset表示所述第一存储空间中数值为0的比特位的数量。
[0049]
例如:基地址为0x0000,n=32263,floor(32263/8)=1008,第一存储空间中数值为0的比特位的数量为20,即addr_offset=20,那么确定的未写数据的存储单元的起始地址为0x100b,该存储单元即为即将写入目标数据的单元。
[0050]
可选的,若数量等于n时,表示闪存的第二存储空间中不存在未写数据的存储单元,对闪存执行擦除操作,将第一存储单元和第二存储单元包含的所有比特位的值修改为1。
[0051]
s205、根据起始地址,将目标数据写入到第二存储空间中。
[0052]
其中,根据起始地址指示的存储单元,将目标数据写入到该存储单元中,写入的方法是将对应的比特位的数值由1修改为0。
[0053]
s206、成功写入目标数据后,根据遍历结果确定第一存储空间位于最高位的数值为0的比特位的序号i,以及i 1位的比特位置的数值修改为0。
[0054]
其中,第一存储空间中包含的比特位的序号从1开始编号,每次递增1,直到递增到n。在将比特位由1修改为0的时,从低位到高位依次修改。本技术在存储单元中写入目标数据后,可以再从该存储单元中读取数据,读取的数据包含真实数据和校验数据,当校验数据和真实数据匹配时,表明写入成功。根据上面的遍历结果确定最高位的数值为1的比特位的序号i,然后将序号为i 1的比特位的数值由1修改为0。例如:根据上面的例子,遍历到的数值为0的比特位的数量为20,即最高位的数值为0的比特位的序号为20,然后将序号为21的比特位的数值由1修改为0。
[0055]
实施本技术的实施例,在闪存中设置第一存储空间,第一存储空间的大小与闪存的容量和读写粒度有关,第一存储空间中的每个比特位对应一个写入次数,在接收到待写入的目标数据时,根据预设的遍历粒度在第一存储空间中遍历数值等于0的比特位的数量,在数量小于闪存的最大写入次数时,根据数量确定存储单元的起始地址,然后将目标数据写入到确定的存储单元中,以及修改第一存储空间中当前写入次数对应的比特位的数值修改为0,本技术在写入目标数据之前可以减少遍历未写数据单元的次数,减少遍历的时间和提高写入的效率。
[0056]
下述为本技术装置实施例,可以用于执行本技术方法实施例。对于本技术装置实施例中未披露的细节,请参照本技术方法实施例。
[0057]
请参见图3,其示出了本技术一个示例性实施例提供的闪存的控制装置的结构示意图,以下简称装置3。该装置3可以通过软件、硬件或者两者的结合实现成为电子设备的全部或一部分。本技术,应用于容量为y个字节的闪存,所述闪存的读写粒度为x个字节,所述闪存包括第一存储空间和第二存储空间,所述第一存储空间的大小为n个比特,满足n=
floor[(y-1)/(x 1/x)]。装置3包括:收发单元301、遍历单元302、统计单元303、确定单元304、写入单元305和修改单元306。
[0058]
收发单元301,用于接收待写入的目标数据;其中,所述目标数据的大小为x个字节;
[0059]
遍历单元302,用于以k个字节为遍历粒度在所述第一存储空间中进行遍历;其中,1≤k≤x,k为整数;
[0060]
统计单元303,用于根据遍历结果统计所述第一存储空间中数值等于0比特位的数量;
[0061]
确定单元304,用于若所述数量小于n时,根据所述数量在所述第二存储空间中确定未写数据的存储单元的起始地址;其中,所述存储单元的大小为x个字节;
[0062]
写入单元305,用于根据所述起始地址,将所述目标数据写入第二存储空间中;
[0063]
修改单元306,用于成功写入所述目标数据后,根据所述遍历结果确定所述第一存储空间位于最高位的数值为0的比特位的序号i,以及将序号为i 1的比特位的数值修改为0。
[0064]
在一个或多个可能的实施例中,还包括:
[0065]
擦除单元,用于若所述数量等于n,则将所述闪存进行全片擦除操作。
[0066]
在一个或多个可能的实施例中,所述x=8,k=4。
[0067]
在一个或多个可能的实施例中,所述目标数据包含真实数据和校验数据。
[0068]
在一个或多个可能的实施例中,所述真实数据的大小为4个字节,所述校验数据的大小为4个字节。
[0069]
在一个或多个可能的实施例中,所述根据所述数量在所述第二存储空间中确定未写数据的存储单元的起始地址,包括:
[0070]
根据如下公式确定未写数据的存储单元的起始地址:
[0071]
addr_b floor(n/8) addr_offset*8 8;其中,addr_b表示基地址,addr_offset表示所述第一存储空间中数值为0的比特位的数量。
[0072]
在一个或多个可能的实施例中,在待写入数据的大小超过所述x个字节时,将所述待写入数据分割为多个目标数据。
[0073]
需要说明的是,上述实施例提供的装置5在执行闪存的控制方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成上述的全部或者部分功能。另外,上述实施例提供的闪存的控制装置与闪存的控制方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
[0074]
上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
[0075]
本技术实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图2所示实施例的方法步骤,具体执行过程可以参见图2所示实施例的具体说明,在此不进行赘述。
[0076]
本技术还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的闪存的控制方法。
[0077]
请参见图4,为本技术实施例提供了一种电子设备的结构示意图。如图4所示,所述电子设备400可以包括:至少一个处理器401,至少一个通信接口404,用户接口403,存储器405,至少一个通信总线402。
[0078]
其中,通信总线402用于实现这些组件之间的连接通信。
[0079]
可选的,电子设备还包括用户接口403,用于执行人机交互操作。例如:用户接口403可以包括显示屏(display)、摄像头(camera)。
[0080]
其中,电子设备设置有通信接口404,用于与外部设备进行通信。相应的,通信接口404可以为无线接口,例如:包括wi-fi接口、蓝牙接口等。
[0081]
其中,处理器401可以包括一个或者多个处理核心。处理器401利用各种接口和线路连接整个电子设备400内的各个部分,通过运行或执行存储在存储器405内的指令、程序、代码集或指令集,以及调用存储在存储器405内的数据,执行电子设备400的各种功能和处理数据。可选的,处理器401可以采用数字信号处理(digital signal processing,dsp)、现场可编程门阵列(field-programmable gatearray,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。处理器401可集成中央处理器(central processing unit,cpu)、图像处理器(graphics processing unit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器401中,单独通过一块芯片进行实现。
[0082]
其中,存储器405可以包括随机存储器(random access memory,ram),也可以包括只读存储器(read-only memory)。可选的,该存储器405包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器405可用于存储指令、程序、代码、代码集或指令集。存储器405可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器405可选的还可以是至少一个位于远离前述处理器401的存储装置。如图4所示,作为一种计算机存储介质的存储器405中可以包括操作系统、网络通信模块、用户接口模块以及应用程序。
[0083]
在图4所示的电子设备400中,用户接口403主要用于为用户提供输入的接口,获取用户输入的数据;而处理器401可以用于调用存储器405中存储的应用程序,并具体执行如图2所示的方法,具体过程可参照图2所示,此处不再赘述。
[0084]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体或随机存储记忆体等。
[0085]
以上所揭露的仅为本技术较佳实施例而已,当然不能以此来限定本技术之权利范围,因此依本技术权利要求所作的等同变化,仍属本技术所涵盖的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献