CN103577113A - 一种存储单元访问方法 - Google Patents
一种存储单元访问方法 Download PDFInfo
- Publication number
- CN103577113A CN103577113A CN201210258654.5A CN201210258654A CN103577113A CN 103577113 A CN103577113 A CN 103577113A CN 201210258654 A CN201210258654 A CN 201210258654A CN 103577113 A CN103577113 A CN 103577113A
- Authority
- CN
- China
- Prior art keywords
- data
- storage space
- length
- space
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
Abstract
本发明提供了一种存储单元访问方法,以预先设置的存储空间为数据的读写单位,因为所述预先设置的存储空间中包括预设数量的具有第一容量的第一存储空间,因此,能够依据数据的长度将数据以第一存储空间为单位写入和读出,从而实现了只能双字节写入或读取数据的存储空间对单字节数据的正确写入和读取。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种存储单元访问方法。
背景技术
目前,绝大多数电子设备都离不开存储器,存储器可以分为多种类型,有一类存储器只能支持双字节写入或读取数据,使用此类存储器时,有可能会出现与上层应用不兼容的问题。
发明内容
有鉴于此,本发明提供了一种存储单元访问方法,目的在于解决现有的只能双字节写入或读取数据的存储器与上层应用不兼容的问题。
一种存储单元访问方法,包括:
向预先设置的存储空间中写入数据及所述数据的长度;
所述预先设置的存储空间包括:预设数量的具有第一容量的第一存储空间;
将所述数据的长度写入所述存储空间中左起前两个第一存储空间的中,将所述数据从所述存储空间中左起第三个第一存储空间写入。
优选地,当所述数据的长度为2N+1时,其中,N为正整数且N≥0,所述将所述数据从所述存储空间中左起第三个第一存储空间写入包括:
将所述数据中前2N个数据以双字节为单位从所述存储空间中左起第三个第一存储空间依次写入;
将所述数据中第2N+1个数据写入两个所述第一存储空间中。
一种存储单元访问方法,包括:
从预先设置的存储空间中读取数据的长度及数据;
所述预先设置的存储空间包括:预设数量的具有第一容量的第一存储空间;
从所述存储空间中左起前两个所述第一存储空间中读取所述存储空间中数据的长度;
依据所述数据的长度,从所述存储空间获得数据。
优选地,当读取数据的缓存的剩余末空间的长度小于所述数据的长度时,所述依据所述数据的长度,从所述存储空间获得数据包括:
从所述读取数据的缓存的剩余末空间左起依次将所述数据读入;
当所述读取数据的缓存的剩余末空间占满后,从所述读取数据的缓存左起,将剩余数据依次读入。
优选地,所述具有第一容量的第一存储空间具体为:
一个字节的存储空间。
优选地,所述预设数量包括:
256。
本发明实施例提供的存储单元访问方法,以预先设置的存储空间为数据的读写单位,因为所述预先设置的存储空间中包括预设数量的具有第一容量的第一存储空间,因此,能够依据数据的长度将数据以第一存储空间为单位写入和读出,从而实现了只能双字节写入或读取数据的存储空间对单字节数据的正确写入和读取。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例公开的预先设置的存储空间的结构示意图;
图2为本发明实施例公开的向存储空间中写入数据的方法的流程图;
图3为本发明实施例公开的从存储空间中读取数据的方法的流程图;
图4为本发明实施例公开的一种存储空间访问方法的应用场景的结构示意图;
图5为本发明实施例公开的一种存储空间访问方法中一种写入数据的方法的示意图;
图6为本发明实施例公开的一种存储空间访问方法中又一种写入数据的方法的示意图;
图7为本发明实施例公开的一种存储空间访问方法中一种读取数据的方法的流程图;
图8为本发明实施例公开的一种存储空间访问方法中一种读取数据的示意图;
图9为本发明实施例公开的一种存储空间访问方法中又一种读取数据的示意图;
图10为本发明实施例公开的一种存储空间访问方法中又一种读取数据的示意图;
图11为本发明实施例公开的一种存储空间访问方法中又一种写入数据的方法的示意图;
图12为本发明实施例公开的一种存储空间访问方法中又一种读取数据的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种存储单元访问方法,应用于只能以双字节单位访问的存储单元,所述方法在存储单元驱动层上实现,所述方法包括:
向预先设置的存储空间中写入数据及所述数据的长度;
其中,如图1所示,所述预先设置的存储空间101包括:预设数量的具有第一容量的第一存储空间102,在图1中,存储空间101中的每一个方格都代表一个第一存储空间102,且每个第一存储空间的大小相同,本实施中,优选每个第一存储空间的大小为一个字节,一个存储空间中包括256个第一存储空间,则一个存储空间的大小为256字节。
在向存储空间101中写入数据时,具体的方法如图2所示,包括:
S201:将所述数据的长度写入所述存储空间中左起前两个第一存储空间中;
S202:将所述数据从所述存储空间中左起第三个第一存储空间写入。
本实施所述的存储单元访问方法,依据若干第一存储空间,避免了单字节数据写入与双字节数据写入的差异,在驱动层有效地消除了硬件的差异,使得只能以双字节访问的存储单元也能够保证以双字节正确地访问。
本发明实施例还公开了一种存储单元访问方法,应用于只能以双字节单位访问的存储单元,所述方法在存储单元驱动层上实现,所述方法包括:
从预先设置的存储空间中读取数据的长度及数据;
其中,所述预先设置的存储空间包括:预设数量的具有第一容量的第一存储空间,本实施例中所述的存储空间与上述实施例中相同,可参照图1,这里不再赘述。
与上述实施例相对应的,从存储空间101中读取数据时,如图3所示,包括:
S301:从所述存储空间中左起前两个所述第一存储空间中读取所述存储空间中数据的长度;
S302:依据所述数据的长度,从所述存储空间获得数据。
本实施例公开的存储单元访问方法,通过按照第一存储空间的大小及顺序,从存储空间中依次读出数据,使得只能以双字节访问的存储单元也能够保证以双字节正确地访问。
下面对本发明实施例所述的存储空间访问方法进行详细论述:
本发明实施例公开了一种存储单元访问方法,如图4所示,在存储单元的驱动中创建两个线程,分别记为read_thread和write_thread,应用处理器(Application Processor,AP)、中央处理器(Central Processor,CP)侧各自有一个read_thread和write_thread,并且,各有两个缓存W_buf和R_buf,分别存储写入的数据和读入的数据。在AP和CP侧,分别使用指针组,初始化时,存储所有预设的存储空间的指针,每两个相邻的存储空间地址间差值为256,指针实际移动时,通过地址及地址差值,可以获得指针当前所指的存储空间的起始地址。
当CP将数据写入时,具体地,当数据的长度为偶数时,写入数据及数据的长度的步骤可以分为两步,第一步将数据的长度写入存储空间SLOT中左起前两个第一存储空间中,第二步将数据从存储空间中左起第三个第一存储空间依次写入。
例如:如图5所示,当数据的长度为6时,CP侧的write_thread先将6写入存储空间SLOT的左起前两个字节,再将W_buf中长度为6的数据依次写入SLOT左起的第三至第八个字节,其中,SLOT中的灰色部分表示被占用的空间,数据的长度6占用两个字节,数据本身占用6个字节,空白部分表示未被占用的剩余空间。
当数据的长度为奇数时,即当所述数据的长度为2N+1时,其中,N为正整数且N≥0,所述将所述数据从所述存储空间中左起第三个第一存储空间写入包括三步:第一步将数据的长度写入存储空间SLOT中左起前两个第一存储空间中,第二步将所述数据中前2N个数据以双字节为单位从所述存储空间中左起第三个第一存储空间依次写入,第三步将所述数据中第2N+1个数据写入两个所述第一存储空间中。
例如,如图6所示,当数据的长度为5时,CP侧的write_thread先将数据长度5写入存储空间SLOT的左起前两个字节中,再将W_buf中前4个字节长度的数据依次写入SLOT左起的第三至第七个字节中,最后,将最末的一个数据写入SLOT左起的第八个和第九个字节中,优选地,将最末一个数据全部写入SLOT左起的第八个字节中,第九个字节为空如虚线部分所示。图6中,灰色部分表示SLOT中被占用的空间,白色部分表示未被占用的空间。
当CP读数据时,当读取数据的缓存的剩余末空间的长度小于所述数据的长度时,所述依据所述数据的长度,从所述存储空间获得数据如图7所示,包括:
S701:从所述读取数据的缓存的剩余末空间左起依次将所述数据读入;
S702:当所述读取数据的缓存的剩余末空间占满后,从所述读取数据的缓存左起,将剩余数据依次读入;
具体地,存在以下几种情况:
如图8所示,CP侧read_thread从SLOT中读取数据至R_buf,从SLOT中获取数据的长度为5,数据的长度为单数,且R_buf整体剩余空间(图8中R_buf白色部分为未被占用空间)足够存储所述数据,但剩余末空间不够存储所述数据(图8中R_buf最末位的剩余一个字节),而且所述剩余末空间为一个字节时,如图8中虚线所示,将所述数据的左起第一个字节读入R_buf剩余末空间中的最后一个字节,所述数据中剩下的字节从R_buf剩余空间左起第一个字节依次读入R_buf中。也就是说,读入数据中的a、b,将a放入E中,将b放入A中,再将c、d分别放入B、C中,将e及空字节放入D及F(图中未标出)中,需要说明的是,F中为空,没有存储数据。
实际应用中,图8中所述情况具体的实现过程为:
1、获取SLOT中数据长度为5,并且通过5&0x1=1判断数据的长度为奇数;
2、检查R_buf中有效空间为5>=5,足够存放数据,可以开始搬运数据;
3、判断R_buf末空间为1<5,并且1==1,先做一次搬运;
4、读取数据中的两个字节,一个放在R_buf的最后一个空间,后一个放到R_buf的第一个空间,两次搬运结束;
5、剩余的slot中的数据必定为奇数,而且个数为5-(1+1)=3,分两次搬运;
6、搬运3-1=2整体复制到接下来的空间;
7、接着读取一个双字节(第一个是有效数据),将有效数据放入R_buf中;最后更新dpram out指针,以及R_buf的in指针。
如图9所示,CP侧read_thread从SLOT中读取数据至R_buf,从SLOT中获取数据的长度为7,数据的长度为单数,且R_buf整体剩余空间足够,但剩余末空间不够存储所述数据,而且所述末空间为奇数3时,如图9中虚线所示,将所述数据的左起前两个字节整体读入R_buf剩余末空间中的左起前两个字节中,将数据中的第三、第四个字节分别读入R_buf剩余末空间最后一个字节及R_buf剩余空间左起第一个字节中,将剩余数据依次分别读入R_buf剩余空间左起第2、3、4、5(图中未标出)个字节中。也就是说,将a、b读入E、F,将c读入G,d读入A,将e、f读入B、C,将g及一个空字节(图中未标出)读入D及H(图中未标出)中,需要说明的是,H中并未存储数据,依然为空。
实际应用中,如图9的实现方法具体包括:
1、获取SLOT中数据长度为7,并且通过7&0x1=1判定数据的长度为奇数;
2、检查R_buf中有效空间为7>=7,足够存放数据,可以开始搬运数据;
3、判断R_buf末空间为3<7,并且3&0x1=1为奇数,做两次搬运;
4、整体拷贝3-1=2,偶数个数据到R_buf空间;
5、读取两个字节,一个放在R_buf最后一个空间,后一个放到R_buf的第一个空间,两次搬运结束;
6、剩余的slot中的数据必定为奇数,而且个数为7-(3+1)=3,分两次搬运;
7、搬运3-1=2整体复制到接下来的空间;
8、接着读取一个双字节(第一个是有效数据),将有效数据放入R_buf中;
最后更新dpram out指针,以及read buffer的in指针。
如图10所示,CP侧read_thread从SLOT中读取数据至R_buf,从SLOT中获取数据的长度5,数据的长度为单数,且R_buf整体剩余空间足够,但剩余末空间不够存储所述数据,而且所述末空间为偶数2时,将所述数据的左起前两个字节读入R_buf的剩余末空间的两个字节中,将所述数据中的剩余字节向R_buf左起依次读入。也就是说,将a、b整体读入E、F中,将c、d整体读入A、B中,将e及一个空字节读入C、D中。
实际应用中,图10所述的情况的具体实现方法为:
1、获取SLOT中数据长度为5,并且通过5&0x1=1判定所述数据的长度为奇数;
2、检查R_buf中有效空间为6>=5,足够存放数据,可以开始搬运数据;
3、判断buffer末空间为2<5,并且2&0x1=1为偶数数,先做一次搬运;
4、整体拷贝2,偶数个的数据到R_buf末空间;
5、剩余的slot中的数据必定为奇数,而且个数为5-(1+1)=3,分两次搬运;
6、搬运3-1=2整体复制到接下来的空间;
7、接着读取一个双字节(第一个是有效数据),将有效数据放入R_buf中;
8、最后更新dpram out指针,以及read buffer的in指针。
以上所述均为CP侧进行的数据写入及数据读取的方法,在AP侧,写入或读出线程以同样的方法实现数据的写入和读取。
如图11所示为AP对数据进行写入的过程,AP侧的write_thread先将数据长度5写入存储空间SLOT的左起前两个字节中,再将W_buf中前4个字节长度的数据依次写入SLOT左起的第三至第六个字节中,最后,将最末的一个数据写入SLOT左起的第七个中,需要说明的是,AP侧的存储空间一般支持单字节访问,因此不必将数据以双字节为单位进行写入。图6中,灰色部分表示SLOT中被占用的空间,白色部分表示未被占用的空间。
图12为AP对数据进行读取的过程,因为AP侧的存储空间一般支持单字节访问,因此,如图12中所示,Read_thread读出数据的长度为5后,可以直接将数据中的5个字节整体读入R_buf中。
本实例所述的方法,在驱动层建立读写两个线程,通过预先设置的存储空间中的第一存储空间,可以实现对双字节长度及单字节长度数据的灵活写入和读取,当数据的长度为单字节时,依然可以以双字节写入或读出的方式实现数据的正确写入或读取,消除了硬件间的差异。
本实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本发明实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (6)
1.一种存储单元访问方法,其特征在于,包括:
向预先设置的存储空间中写入数据及所述数据的长度;
所述预先设置的存储空间包括:预设数量的具有第一容量的第一存储空间;
将所述数据的长度写入所述存储空间中左起前两个第一存储空间的中,将所述数据从所述存储空间中左起第三个第一存储空间写入。
2.根据权利要求1所述的方法,其特征在于,当所述数据的长度为2N+1时,其中,N为正整数且N≥0,所述将所述数据从所述存储空间中左起第三个第一存储空间写入包括:
将所述数据中前2N个数据以双字节为单位从所述存储空间中左起第三个第一存储空间依次写入;
将所述数据中第2N+1个数据写入两个所述第一存储空间中。
3.一种存储单元访问方法,其特征在于,包括:
从预先设置的存储空间中读取数据的长度及数据;
所述预先设置的存储空间包括:预设数量的具有第一容量的第一存储空间;
从所述存储空间中左起前两个所述第一存储空间中读取所述存储空间中数据的长度;
依据所述数据的长度,从所述存储空间获得数据。
4.根据权利要求3所述的方法,其特征在于,当读取数据的缓存的剩余末空间的长度小于所述数据的长度时,所述依据所述数据的长度,从所述存储空间获得数据包括:
从所述读取数据的缓存的剩余末空间左起依次将所述数据读入;
当所述读取数据的缓存的剩余末空间占满后,从所述读取数据的缓存左起,将剩余数据依次读入。
5.根据权利要求1或3所述的方法,其特征在于,所述具有第一容量的第一存储空间具体为:
一个字节的存储空间。
6.根据权利要求1或3所述的方法,其特征在于,所述预设数量包括:
256。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210258654.5A CN103577113B (zh) | 2012-07-24 | 2012-07-24 | 一种存储单元访问方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210258654.5A CN103577113B (zh) | 2012-07-24 | 2012-07-24 | 一种存储单元访问方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103577113A true CN103577113A (zh) | 2014-02-12 |
CN103577113B CN103577113B (zh) | 2016-08-03 |
Family
ID=50048983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210258654.5A Active CN103577113B (zh) | 2012-07-24 | 2012-07-24 | 一种存储单元访问方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103577113B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103777907A (zh) * | 2014-02-25 | 2014-05-07 | 四川长虹空调有限公司 | 自动获取eeprom存储容量的方法 |
CN107154012A (zh) * | 2016-03-04 | 2017-09-12 | 三星电子株式会社 | 图形处理器及其操作方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0963046A1 (en) * | 1998-06-04 | 1999-12-08 | Sun Microsystems, Inc. | Method and apparatus for transmitting multibyte characters in a network |
CN1888990A (zh) * | 2006-07-12 | 2007-01-03 | 北京和利时系统工程股份有限公司 | 一种可编程控制器背板的通信方法 |
US7188115B2 (en) * | 2003-04-24 | 2007-03-06 | International Business Machines Corporation | Processing fixed-format data in a unicode environment |
CN101145875A (zh) * | 2007-10-17 | 2008-03-19 | 中兴通讯股份有限公司 | 在sdh虚级联成帧器中实现多通道封装处理的方法和装置 |
-
2012
- 2012-07-24 CN CN201210258654.5A patent/CN103577113B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0963046A1 (en) * | 1998-06-04 | 1999-12-08 | Sun Microsystems, Inc. | Method and apparatus for transmitting multibyte characters in a network |
US7188115B2 (en) * | 2003-04-24 | 2007-03-06 | International Business Machines Corporation | Processing fixed-format data in a unicode environment |
CN1888990A (zh) * | 2006-07-12 | 2007-01-03 | 北京和利时系统工程股份有限公司 | 一种可编程控制器背板的通信方法 |
CN101145875A (zh) * | 2007-10-17 | 2008-03-19 | 中兴通讯股份有限公司 | 在sdh虚级联成帧器中实现多通道封装处理的方法和装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103777907A (zh) * | 2014-02-25 | 2014-05-07 | 四川长虹空调有限公司 | 自动获取eeprom存储容量的方法 |
CN107154012A (zh) * | 2016-03-04 | 2017-09-12 | 三星电子株式会社 | 图形处理器及其操作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103577113B (zh) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220129374A1 (en) | Memory system, data storage device, user device and data management method thereof | |
US11354236B2 (en) | Garbage collection method for data storage device | |
US10120795B2 (en) | Wear-leveling nandflash memory reading/writing method | |
TWI603194B (zh) | 資料儲存裝置以及其資料存取方法 | |
US7937522B2 (en) | Method for flash memory data management | |
US9880742B2 (en) | Valid data merging method, memory controller and memory storage apparatus | |
US20120030411A1 (en) | Data protecting method, memory controller and portable memory storage apparatus | |
US8966157B2 (en) | Data management method, memory controller and memory storage apparatus | |
CN103455437A (zh) | 数据储存装置与数据储存装置操作方法 | |
CN106371763A (zh) | 一种存储快照的方法、装置、磁盘及计算机 | |
CN104699622A (zh) | 数据储存装置以及其数据抹除方法 | |
US8819387B2 (en) | Memory storage device, memory controller, and method for identifying valid data | |
EP1855187A3 (en) | Computer system for managing number of writes for storage medium and control method therefor | |
CN106201652A (zh) | 一种数据处理方法及虚拟机 | |
TW201039349A (en) | Data accessing method for flash memory and storage system and controller using the same | |
CN107451271A (zh) | 一种哈希表处理方法、装置、设备及存储介质 | |
CN104408126B (zh) | 一种数据库的持久化写入方法、装置和系统 | |
US10282116B2 (en) | Method and system for hardware accelerated cache flush | |
TW201327185A (zh) | 記憶體儲存裝置及其記憶體控制器與資料寫入方法 | |
JP4561246B2 (ja) | メモリ装置 | |
CN108664577A (zh) | 一种基于flash空闲区的文件管理方法及系统 | |
CN102651674B (zh) | 一种反射内存网数据传输方法 | |
CN103577113A (zh) | 一种存储单元访问方法 | |
US10338850B2 (en) | Split-page queue buffer management for solid state storage drives | |
US9009389B2 (en) | Memory management table processing method, memory controller, and memory storage apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |