CN1540523A - 单任务快速缓冲读写方法 - Google Patents
单任务快速缓冲读写方法 Download PDFInfo
- Publication number
- CN1540523A CN1540523A CNA2003101022828A CN200310102282A CN1540523A CN 1540523 A CN1540523 A CN 1540523A CN A2003101022828 A CNA2003101022828 A CN A2003101022828A CN 200310102282 A CN200310102282 A CN 200310102282A CN 1540523 A CN1540523 A CN 1540523A
- Authority
- CN
- China
- Prior art keywords
- data
- address
- read
- write
- reading
- 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.)
- Pending
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种数据通信领域中的单任务快速缓冲读写方法,包括(1)建立逻辑存储区;(2)数据的读写操作和管理:写入数据时,首先判断存储空间是否足够,然后将数据从当前写指针指向的地址开始写入,写入完成后,将写指针移动到写完内容的下一个地址;读出数据时,首先判断存储缓冲区内是否有数据,如果有数据且数据量小于或等于需要读出的数据量,则将所有的数据全部读出;否则按照帧的大小进行识别,判断可以取出的数据量,并从读指针开始处进行读取;然后将读指针移到下一个可以读取的地址。本发明可以克服现有技术存在的存储空间浪费严重、读写操作复杂的缺点,能够实现节约存储空间、读写操作简单、管理方便的目的。
Description
技术领域
本发明涉及到计算机数据通讯领域,尤其涉及单任务情况下对数据缓冲区存储空间的使用方法。
背景技术
随着社会对于信息交流需求的不断增强,随着通讯技术在社会日常生活中的逐渐深入,极大地推动了信息技术和通讯技术的发展。在这样的一个过程中,对于数据的处理技术,也获得了较多的进步。目前,在分散式数据采集系统中进行数据流交换,一般通过设立数据缓冲区的方法实现,数据缓冲区的建立,可以在数据高峰期的情况下达到流量的均衡,也可以在下一级处理单元发生故障时,暂时保存需要传递的数据。数据缓冲区可以设在诸如SDRAM、SRAM、EEPROM以及硬盘等任意的存储媒质中。对于数据缓冲区的管理,关键是对于数据的读写方法,如果数据的长度较为规则,数据的读写相对比较简单。但是当数据长度不规则的时候,情况就比较复杂,目前常用的办法是将存储空间分区,一部分用于存储,另外一部分用于建立索引,如发明专利申请《闪存中存储块的分区及读写信息标识的方法》(专利公开号:1351350)所用的就是这种方法。这种方法的缺点很多,首先是在存储空间上可能造成浪费:使用上述方法,必须保留一定的空间用于存储索引表,特别是当数据长短不一时,在一定空间内可以存储的数据量是变化的,而索引表必须足够长,才能存下所有的数据索引,从而在存储空间上造成了浪费;其次造成读写操作复杂化,花费的时间比较长,用索引表进行数据存储,在写操作时要在不同的空间寻址—首先在索引区找到可以写入的地址,再到数据区写入数据;在读操作时也要在不同的地址段(索引区和数据区)进行操作,这样,需要管理索引表和数据表两个队列,操作复杂度增加,进一步导致读写出错的可能性增加。
发明内容
本发明的目的是克服现有技术存在的存储空间浪费严重、读写操作复杂的缺点,以期提出一种针对不规则数据长度的、节约存储空间、读写操作简单、管理方便的单任务快速缓冲读写方法。
为了实现上述目的,本发明提出了一种单任务快速缓冲读写方法,其特征在于,包括以下步骤:
(1)建立逻辑存储区:
将存储介质的存储空间按照地址方式进行管理,每个地址指向一个字节,并将可用的地址空间首尾相接,建立环形缓冲区,对该环形缓冲区定义相连接的头与尾,头地址等于尾地址,从而将该环形缓冲区构建成逻辑存储区;
(2)数据的读写操作和管理:
写入数据时,首先判断存储空间是否足够,然后将数据从当前写指针指向的地址开始写入,写入完成后,已经有数据的空间视为被占用空间,并将写指针移动到写完内容的下一个地址;
读出数据时,首先判断存储缓冲区内是否有数据,如果有数据且数据量小于或等于需要读出的数据量,则将所有的数据全部读出;否则按照帧的大小进行识别,判断可以取出的不打断帧结构的字节量,并从读指针开始处进行读取,读出后的空间视作空闲空间;然后将读指针移到下一个可以读取的地址。
本发明对不定长度的数据通过建立环行缓冲区,将数据加报头的方法,使存储区的使用效率得到提高,所有数据以产生报头,顺序存储的方式,最大限度地利用了存储空间,进行无缝存储。本发明所述方法还通过读写指针的灵活应用,和当前空闲空间和已用空间这两个变量的定义,将读写操作的速度提高,操作也很方便,提高了管理数据读写的效率。
附图说明
图1是环形存储空间示意图。
图2是数据在存储区存放示意图。
图3是本发明所述方法中的写操作流程图。
图4是本发明所述方法中的读操作流程图。
图5是常用报头包含长度字段数据包结构示意图。
图6是读指针大于写指针时存储空间状态图。
图7是本发明所述方法中的成帧操作的流程图。
具体实施方式
本发明所述方法的特点主要是在读写操作上在同一个地址段进行顺序操作,不需往返寻址。同时,为了进一步加快操作,利用两个变量来度量当前的空闲空间和已填充空间,以确定当前存储空间的状态,并确认是否可以进行读写操作,以及进行何种读写操作。本发明所述的方法包括两个部分:1、建立逻辑存储区;2、数据的读写操作和管理。下面结合附图对其进行详细说明。
一般情况下,存储介质可以由SRAM或者SDRAM等高速易失元件构成,也可以是FLASH等非易失元件,其他诸如硬盘等可读写存储单元也可以构成存储介质。存储空间按照地址管理,每个地址指向一个字节,并将可用的地址空间首尾相接,建立环形缓冲区,如图1所示。该环形缓冲区实际上就构成一个逻辑上的存储区,头尾相连,头地址等于尾地址。与此同时,对于需要写入存储空间的内容,除了不定长的原始数据以外,在原始数据前还需要加上一个长度字段,作为报头。该字段的内容就是源数据的长度。长度字段的数据类型(整型数或者长整型数等),可以根据需要处理的原始数据最大长度来确定。
另外,为衡量存储空间的利用状态,还需要增加“空闲空间大小”和“已占用空间大小”两个变量。同时在数据写入的时候,依地址次序紧密占用,不留空隙。为了更好地管理读写操作,还需要增加两个辅助变量,一个是读指针,一个是写指针。用于指向当前读写操作到达的具体地址。
在具体实施过程中,建立逻辑缓冲区时首先将作为存储区的起始地址和终止地址定义为一个QUE_START和一个QUE_END的宏。分别表示存储区映射到内存的地址。这两个地址,在逻辑上是同一个位置,但是在实际空间上,是不同的两个地方。这样,在这个存储缓冲区中,最大的可利用地址空间是TotalSize=QUE_END-QUE_START+1。然后建立一个结构,包括如下变量:UWORDpWriteAddr,下一个写操作的地址指针;UWORD pReadAddr,下一个读操作的地址指针;UWORD FreeSize,当前缓冲区中可用的空间;UHWORD OccupiedSize,当前缓冲区中已经被占用的空间。数据包在存储之前,需要进行添加报头的处理。如图5所示。添加的报头中长度字段是必须的。长度字段指示的是数据包的数据占用的地址空间长度,如图2所示。长度字段自身的长度,则根据数据包的长度设定。通常一个占用两个字节的长度字段,可以描述长度为65535个字节的数据包。
数据的读写操作包括以下内容:
所有数据的写入,以字节方式,依次占用存储空间。读出时也是以字节为单位依次读出,读出过程也可以看作是清空存储空间的过程。
在写入的时候,先判断空间是否足够,然后将数据从当前写指针指向的地址开始写入。写入完成后,数据占用的空间视作已占用空间,然后将写指针移动到写完内容的下一个地址。这一过程如图3所示。在读出的时候,如图4所示,先判断存储缓冲区内是否有数据,如果有数据且数据量小于等于需要的读出的量,就可以将所有的数据全部读出;否则就需要按照帧的大小进行识别,判断可以取出小于等于需要读出的字节量,从读指针开始处进行读取,读出后的空间视作空闲空间,然后将读指针移到下一个可以读的地址。
下面是数据包的写入操作实施方式:在读写的时候,需要清楚存储区内目前有多少空闲的空间,有多少可以已经存入的数据。空闲空间和占用空间的计算方法如下:当写指针大于读指针的时候,如图1所示:FreeSize=TotalSize-(pWriteAddr-pReadAddr)-1、OccupiedSize=pWriteAddr-pReadAddr。当写指针大于读指针的时候,如图6所示,FreeSize=pReadAddr-pWriteAddr-1、OccupiedSize=TotalSize-(pReadAddr-pWriteAddr)。当进行写入操作的时候,流程如图3所示;写入的时候,依次存储,没有空隙。当进行读出操作的时候,流程如图4所示;需要注意的是,读出的时候,通常是要按帧结构读出,而不是按照字节长度读出。因此,当存储区内的数据总长度大于要读出的数据时,需要先进行断帧操作:即找出在这个长度范围内,又是整数个帧的数据。这个断帧操作的流程可以用流程图7表示。
通过这样的方法,在写入的时候,只需要对一段连续的空间进行操作,而不必对两段空间操作,节省了时间;无缝的存储次序,节约了空间;读出操作中,也是只需要对一段空间操作,同样节约时间。在具体的实施方式上,只需要少数的几个全局变量,就可以完成代码编写,是一种安全可靠的方法。
Claims (4)
1、一种单任务快速缓冲读写方法,其特征在于,包括以下步骤:
(1)建立逻辑存储区:
将存储介质的存储空间按照地址方式进行管理,每个地址指向一个字节,并将可用的地址空间首尾相接,建立环形缓冲区,对该环形缓冲区定义相连接的头与尾,头地址等于尾地址,从而将该环形缓冲区构建成逻辑存储区;
(2)数据的读写操作和管理:
写入数据时,首先判断存储空间是否足够,然后将数据从当前写指针指向的地址开始写入,写入完成后,将写指针移动到写完内容的下一个地址;
读出数据时,首先判断存储缓冲区内是否有数据,如果有数据且数据量小于或等于需要读出的数据量,则将所有的数据全部读出;否则按照帧的大小进行识别,判断可以取出的数据量,并从读指针开始处进行读取,读出后的空间视作空闲空间;然后将读指针移到下一个可以读取的地址。
2、根据权利要求1所述的单任务快速缓冲读写方法,其特征在于,在所述步骤(1)中,需要写入存储空间的内容,还包括在原始数据前的长度字段,其数据类型根据要处理的原始数据的最大长度来确定。
3、根据权利要求1所述的单任务快速缓冲读写方法,其特征在于,在所述步骤(1)中,还需要设置两个辅助变量,一个是读指针,一个是写指针,用于指向当前读写操作到达的具体地址。
4、根据权利要求1所述的单任务快速缓冲读写方法,其特征在于,在所述步骤(2)中,在写入数据时,以字节方式依次占用存储区的存储空间;在读出数据时,以字节为单位依次读出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2003101022828A CN1540523A (zh) | 2003-10-30 | 2003-10-30 | 单任务快速缓冲读写方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2003101022828A CN1540523A (zh) | 2003-10-30 | 2003-10-30 | 单任务快速缓冲读写方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1540523A true CN1540523A (zh) | 2004-10-27 |
Family
ID=34333162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2003101022828A Pending CN1540523A (zh) | 2003-10-30 | 2003-10-30 | 单任务快速缓冲读写方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1540523A (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100367243C (zh) * | 2004-11-12 | 2008-02-06 | 国际商业机器公司 | 用于处理读-修改-写命令的读操作和写操作的方法和系统 |
CN102045258A (zh) * | 2010-12-22 | 2011-05-04 | 北京星网锐捷网络技术有限公司 | 数据缓存管理方法及装置 |
WO2011088778A1 (zh) * | 2010-01-19 | 2011-07-28 | 深圳市同洲电子股份有限公司 | 一种实现环形缓冲区的方法、装置及数字电视接收终端 |
CN102667739A (zh) * | 2010-01-13 | 2012-09-12 | 株式会社东芝 | 存储装置管理装置及用于管理存储装置的方法 |
CN101547153B (zh) * | 2008-03-26 | 2012-10-03 | 株式会社东芝 | 数据接收设备和数据接收方法 |
CN102779016A (zh) * | 2012-06-18 | 2012-11-14 | 上海卫星工程研究所 | 基于sdram星载存储器分文件读写设计方法 |
CN103166873A (zh) * | 2011-12-12 | 2013-06-19 | 中兴通讯股份有限公司 | 核间通信的方法及核处理器 |
CN103744621A (zh) * | 2013-12-31 | 2014-04-23 | 深圳英飞拓科技股份有限公司 | 缓冲区循环读写的方法及装置 |
CN104063892A (zh) * | 2013-03-20 | 2014-09-24 | 北京麒麟网文化股份有限公司 | 图形渲染方法和系统、通用游戏支撑平台 |
CN105550124A (zh) * | 2015-12-09 | 2016-05-04 | 四川长虹电器股份有限公司 | 一种信息处理方法和电子设备 |
CN106445836A (zh) * | 2016-09-20 | 2017-02-22 | 华南理工大学 | 异步数据读写方法、系统及装置 |
CN106708601A (zh) * | 2016-12-12 | 2017-05-24 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向GPU实现的虚拟IOringbuffer的方法 |
US20170257518A1 (en) * | 2016-03-01 | 2017-09-07 | Canon Kabushiki Kaisha | Data processing apparatus, method for controlling data processing apparatus, and storage medium |
CN107247561A (zh) * | 2017-05-31 | 2017-10-13 | 成都华立达电力信息系统有限公司 | 缓冲池循环存储读写方法 |
CN107329917A (zh) * | 2017-06-26 | 2017-11-07 | 郑州云海信息技术有限公司 | 一种数据传输方法及装置 |
CN108768884A (zh) * | 2018-04-27 | 2018-11-06 | 江苏中科芯核电子科技有限公司 | 一种基于环形缓冲区的无线通信数据处理方法 |
CN111159064A (zh) * | 2019-12-30 | 2020-05-15 | 南京六九零二科技有限公司 | 一种低复杂度数据块缓存方法 |
CN112019450A (zh) * | 2019-05-31 | 2020-12-01 | 微软技术许可有限责任公司 | 设备间流式通信 |
CN113114655A (zh) * | 2021-04-07 | 2021-07-13 | 深圳市瑞驰信息技术有限公司 | 一种基于tcp/ip的二进制数据交互协议设计方法 |
CN117422024A (zh) * | 2023-12-14 | 2024-01-19 | 苏州元脑智能科技有限公司 | 数据位宽转换方法、装置、计算机设备及介质 |
-
2003
- 2003-10-30 CN CNA2003101022828A patent/CN1540523A/zh active Pending
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100367243C (zh) * | 2004-11-12 | 2008-02-06 | 国际商业机器公司 | 用于处理读-修改-写命令的读操作和写操作的方法和系统 |
CN101547153B (zh) * | 2008-03-26 | 2012-10-03 | 株式会社东芝 | 数据接收设备和数据接收方法 |
CN102667739B (zh) * | 2010-01-13 | 2015-07-01 | 株式会社东芝 | 存储装置管理装置及用于管理存储装置的方法 |
CN102667739A (zh) * | 2010-01-13 | 2012-09-12 | 株式会社东芝 | 存储装置管理装置及用于管理存储装置的方法 |
US9367451B2 (en) | 2010-01-13 | 2016-06-14 | Kabushiki Kaisha Toshiba | Storage device management device and method for managing storage device |
WO2011088778A1 (zh) * | 2010-01-19 | 2011-07-28 | 深圳市同洲电子股份有限公司 | 一种实现环形缓冲区的方法、装置及数字电视接收终端 |
CN101800867B (zh) * | 2010-01-19 | 2011-09-28 | 深圳市同洲电子股份有限公司 | 一种实现环形缓冲区的方法、装置及数字电视接收终端 |
CN102045258A (zh) * | 2010-12-22 | 2011-05-04 | 北京星网锐捷网络技术有限公司 | 数据缓存管理方法及装置 |
CN102045258B (zh) * | 2010-12-22 | 2012-12-12 | 北京星网锐捷网络技术有限公司 | 数据缓存管理方法及装置 |
CN103166873A (zh) * | 2011-12-12 | 2013-06-19 | 中兴通讯股份有限公司 | 核间通信的方法及核处理器 |
WO2013086847A1 (zh) * | 2011-12-12 | 2013-06-20 | 中兴通讯股份有限公司 | 核间通信的方法及核处理器 |
CN102779016B (zh) * | 2012-06-18 | 2015-06-24 | 上海卫星工程研究所 | 基于sdram星载存储器分文件读写设计方法 |
CN102779016A (zh) * | 2012-06-18 | 2012-11-14 | 上海卫星工程研究所 | 基于sdram星载存储器分文件读写设计方法 |
CN104063892A (zh) * | 2013-03-20 | 2014-09-24 | 北京麒麟网文化股份有限公司 | 图形渲染方法和系统、通用游戏支撑平台 |
CN104063892B (zh) * | 2013-03-20 | 2018-06-08 | 北京麒麟网文化股份有限公司 | 图形渲染方法和系统、通用游戏支撑平台 |
CN103744621A (zh) * | 2013-12-31 | 2014-04-23 | 深圳英飞拓科技股份有限公司 | 缓冲区循环读写的方法及装置 |
CN105550124A (zh) * | 2015-12-09 | 2016-05-04 | 四川长虹电器股份有限公司 | 一种信息处理方法和电子设备 |
US20170257518A1 (en) * | 2016-03-01 | 2017-09-07 | Canon Kabushiki Kaisha | Data processing apparatus, method for controlling data processing apparatus, and storage medium |
CN106445836B (zh) * | 2016-09-20 | 2018-03-23 | 华南理工大学 | 异步数据读写方法、系统及装置 |
CN106445836A (zh) * | 2016-09-20 | 2017-02-22 | 华南理工大学 | 异步数据读写方法、系统及装置 |
CN106708601A (zh) * | 2016-12-12 | 2017-05-24 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向GPU实现的虚拟IOringbuffer的方法 |
CN107247561A (zh) * | 2017-05-31 | 2017-10-13 | 成都华立达电力信息系统有限公司 | 缓冲池循环存储读写方法 |
CN107329917A (zh) * | 2017-06-26 | 2017-11-07 | 郑州云海信息技术有限公司 | 一种数据传输方法及装置 |
CN108768884A (zh) * | 2018-04-27 | 2018-11-06 | 江苏中科芯核电子科技有限公司 | 一种基于环形缓冲区的无线通信数据处理方法 |
CN112019450A (zh) * | 2019-05-31 | 2020-12-01 | 微软技术许可有限责任公司 | 设备间流式通信 |
CN111159064A (zh) * | 2019-12-30 | 2020-05-15 | 南京六九零二科技有限公司 | 一种低复杂度数据块缓存方法 |
CN111159064B (zh) * | 2019-12-30 | 2023-09-01 | 南京六九零二科技有限公司 | 一种低复杂度数据块缓存方法 |
CN113114655A (zh) * | 2021-04-07 | 2021-07-13 | 深圳市瑞驰信息技术有限公司 | 一种基于tcp/ip的二进制数据交互协议设计方法 |
CN117422024A (zh) * | 2023-12-14 | 2024-01-19 | 苏州元脑智能科技有限公司 | 数据位宽转换方法、装置、计算机设备及介质 |
CN117422024B (zh) * | 2023-12-14 | 2024-05-03 | 苏州元脑智能科技有限公司 | 数据位宽转换方法、装置、计算机设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1540523A (zh) | 单任务快速缓冲读写方法 | |
US5740396A (en) | Solid state disk device having a flash memory accessed by utilizing an address conversion table to convert sector address information to a physical block number | |
US20070005904A1 (en) | Read ahead method for data retrieval and computer system | |
US20050055493A1 (en) | [method for accessing large block flash memory] | |
US20100208385A1 (en) | Storage device with read-ahead function | |
KR20090026296A (ko) | 예측 데이터 로더 | |
WO1996008772A1 (en) | Method of pre-caching data utilizing thread lists and multimedia editing system using such pre-caching | |
CN1384938A (zh) | 链接表直接存储器存取控制器描述符的结构 | |
CN1420440A (zh) | 快闪存储器管理方法 | |
CN1550016A (zh) | 用于使用快速突发模式以改善处理器性能的方法和装置 | |
WO1996008772B1 (en) | Method of pre-caching data utilizing thread lists and multimedia editing system using such pre-caching | |
CN1750164A (zh) | 一种防止文件碎片产生的数字硬盘录像机文件管理方法 | |
US20050144396A1 (en) | Coalescing disk write back requests | |
CN1742264A (zh) | 缓冲写入和存储页面控制 | |
CN101419571A (zh) | 基于Hash算法的在NOR FLASH中存储配置参数的方法 | |
CN1383563A (zh) | 用于对在存储介质上可用的存储空间进行隐分区的方法 | |
US5588128A (en) | Dynamic direction look ahead read buffer | |
CN1227670C (zh) | 控制同步存储器内的脉冲串序列 | |
CN113568572B (zh) | 一种基于固态硬盘的数据库并行排序连接系统 | |
EP0386719A2 (en) | Partial store control circuit | |
CN1542624A (zh) | 一种在Flash文件系统中加快逻辑块映射速度的方法 | |
CN100543748C (zh) | 一种利用文件分配表进行文件寻道的方法及系统 | |
CN101303667A (zh) | 建立磁盘空簇表及查找磁盘空簇的方法和装置 | |
CN100336038C (zh) | 嵌入顺序缓冲器的计算机系统及其方法 | |
CN1783030A (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 | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |