CN106909513A - 一种异步非对称的读写存储区管理方法 - Google Patents
一种异步非对称的读写存储区管理方法 Download PDFInfo
- Publication number
- CN106909513A CN106909513A CN201710164034.8A CN201710164034A CN106909513A CN 106909513 A CN106909513 A CN 106909513A CN 201710164034 A CN201710164034 A CN 201710164034A CN 106909513 A CN106909513 A CN 106909513A
- Authority
- CN
- China
- Prior art keywords
- data
- enough
- continuous
- insufficient
- space
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
本发明公开了一种异步非对称的读写存储区管理方法,数据由DMA写入和CPU读出,设置限制标志位,当存储区用到结尾放不下一个完整的数据包时,使限制标志位指向实际占用的结尾处,然后将完整的数据包存放到存储区的头部,从而使得交给DMA来搬运数据的地址是连续的。本发明当2个功能模块之间的数据交换可以参考生产者和消费者模型关系,即读取和写入是异步且非对称(读取长度和写入长度不等且可变)时,若数据由DMA写入,通过跳过环形FIFO尾部长度不够的空间来巧妙地解决DMA地址必须连续的问题。
Description
技术领域
本申请涉及读写存储区管理领域,具体是一种异步非对称的读写存储区管理方法。
背景技术
在一些应用场景中,对数据处理的实时性要求不高,但是数据传输速度要求较高,通常使用异步FIFO来传输数据。异步FIFO一般采用环形存储区来高效的实现,当然只是逻辑地址连续,实际地址不连续,因此在使用DMA进行数据写入,且单次传输长度不固定时,需要一种方法来解决地址不连续的问题。
发明内容
为了解决现有技术中存在的上述技术问题,本发明提供了一种异步非对称的读写存储区管理方法,数据由DMA写入和CPU读出,设置限制标志位,当存储区用到结尾放不下一个完整的数据包时,使限制标志位指向实际占用的结尾处,然后将完整的数据包存放到存储区的头部,从而使得交给DMA来搬运数据的地址是连续的。
进一步的,向存储区放入数据的过程包括如下步骤:
i.要存入n个字节,首先判断空闲空间在内存中是否是连续的;若连续,就跳到ii。若不连续,就跳到iii;
ii.连续则判断空闲空间大小是否足够,足够就直接存入数据,不足够就提示剩余空间不足;
iii.不连续则先查看尾部空闲空间是否足够。若足够,就直接存入数据;若不足够,就跳到iv;
iv.尾部空闲空间不足够,则判断头部空闲空间是否足够。若足够,就直接存入数据;若不足够,就提示剩余空间不足。
进一步的,从存储区取出数据的过程包括如下步骤:
i.要取出n个字节,首先判断数据空间在内存中是否连续;若连续,就跳到ii;若不连续,就跳到iii;
ii.连续则判断数据空间是否足够,足够就直接取走数据,不足够就提示没有足够的数据;
iii.不连续则先判断尾部数据空间是否足够;若足够,就直接取走数据;若不足够,就跳到iv;
iv.尾部数据空间不足够,则判断头部和尾部数据空间总大小是否足够;若足够,就先取出全部的尾部数据,再从头部取走所需的剩余大小数据;若总大小不足够,就提示没有足够的数据。
本发明当2个功能模块之间的数据交换可以参考生产者和消费者模型关系,即读取和写入是异步且非对称(读取长度和写入长度不等且可变)时,若数据由DMA写入,通过跳过环形FIFO尾部长度不够的空间来巧妙地解决DMA地址必须连续的问题。
附图说明
图1是向存储区放入数据流程图;
图2是从存储区取出数据流程图;
图3-9是具体实施图。
具体实施方式
下面结合附图对本发明作进一步说明。
本发明的异步非对称的读写存储区管理方法,包括向存储区放入数据和从存储区取出数据两方面。
如图1所示,向存储区放入数据的过程包括如下步骤:
i.要存入n个字节,首先判断空闲空间在内存中是否是连续的。若连续,就跳到ii。若不连续,就跳到iii。
ii.连续则判断空闲空间大小是否足够,足够就直接存入数据,不足够就提示剩余空间不足。
iii.不连续则先查看尾部空闲空间是否足够。若足够,就直接存入数据。若不足够,就跳到iv。
iv.尾部空闲空间不足够,则判断头部空闲空间是否足够。若足够,就直接存入数据。若不足够,就提示剩余空间不足。
如图2所示,从存储区取出数据的过程包括如下步骤:
i.要取出n个字节,首先判断数据空间在内存中是否连续。若连续,就跳到ii。若不连续,就跳到iii。
ii.连续则判断数据空间是否足够,足够就直接取走数据,不足够就提示没有足够的数据。
iii.不连续则先判断尾部数据空间是否足够。若足够,就直接取走数据。若不足够,就跳到iv。
iv.尾部数据空间不足够,则判断头部和尾部数据空间总大小是否足够。若足够,就先取出全部的尾部数据,再从头部取走所需的剩余大小数据。若总大小不足够,就提示没有足够的数据。
具体通过如下方式实现:
1)使用一片内存作为存储区,大小为max;outx记录存储区占用区块的开始处,也即读取首地址;inx记录存储区空闲区块的开始处,也即写入的首地址; limit记录实际占用的结尾处。开始时的存储区如图3所示。
2)当数据生产者使用DMA搬运了n次数据到存储区后,图中灰色方块表示每次写入的数据,L[n]表示第n次数据搬运的数据长度。具体分布情况如图4所示。
3)数据消费者从存储区取走了部分数据后。如图5所示。
4)在写入过程中会出现如图6所示。
5)这时若数据生产者使用DMA搬运了L+5个数据到存储区,但是存储区的尾部只剩下L个数据大小的空间,所以从存储区头部开始存放,limit指向实际占用的结尾处。如图7所示。
6)在读取过程中会出现如下情况,如图8所示。
7)这时数据消费者要取走L+5个数据时,先取出从outx指向的地址开始到limit指向的地址为结尾的L个数据,limit重新指向max。然后再取出存储区头部的5个数据,outx指向首地址加5的地址。如图9所示。
在多功能打印机芯片的USB device驱动中,底层USB device驱动作为数据生产者,而上层数据处理模块为数据消费者,使用了这种方法来解决DMA地址要连续的问题。
USB 在数据收发过程中,驱动程序事先分配好存储空间给DMA使用,大部分情况是满512字节的长包,但也存在不满512字节的短包,因此会遇到存储区用到结尾时放不下一个USB包的情况。使用本发明的机制,让limit指向实际占用的结尾处,然后将USB包存放到存储区的头部(如果足够),从而使得交给DMA来搬运USB数据包的地址是连续的。
Claims (3)
1.一种异步非对称的读写存储区管理方法,数据由DMA写入和CPU读出,其特征在于:设置限制标志位,当存储区用到结尾放不下一个完整的数据包时,使限制标志位指向实际占用的结尾处,然后将完整的数据包存放到存储区的头部,从而使得交给DMA来搬运数据的地址是连续的。
2.如权利要求1所述的异步非对称的读写存储区管理方法,其特征在于:
向存储区放入数据的过程包括如下步骤:
要存入n个字节,首先判断空闲空间在内存中是否是连续的;若连续,就跳到ii;
若不连续,就跳到iii;
连续则判断空闲空间大小是否足够,足够就直接存入数据,不足够就提示剩余空间不足;
不连续则先查看尾部空闲空间是否足够,若足够,就直接存入数据;若不足够,就跳到iv;
尾部空闲空间不足够,则判断头部空闲空间是否足够;
若足够,就直接存入数据;若不足够,就提示剩余空间不足。
3.如权利要求1所述的异步非对称的读写存储区管理方法,其特征在于:
从存储区取出数据的过程包括如下步骤:
要取出n个字节,首先判断数据空间在内存中是否连续;若连续,就跳到ii;若不连续,就跳到iii;
连续则判断数据空间是否足够,足够就直接取走数据,不足够就提示没有足够的数据;
不连续则先判断尾部数据空间是否足够;若足够,就直接取走数据;若不足够,就跳到iv;
尾部数据空间不足够,则判断头部和尾部数据空间总大小是否足够;若足够,就先取出全部的尾部数据,再从头部取走所需的剩余大小数据;若总大小不足够,就提示没有足够的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710164034.8A CN106909513A (zh) | 2017-03-20 | 2017-03-20 | 一种异步非对称的读写存储区管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710164034.8A CN106909513A (zh) | 2017-03-20 | 2017-03-20 | 一种异步非对称的读写存储区管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106909513A true CN106909513A (zh) | 2017-06-30 |
Family
ID=59187486
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710164034.8A Pending CN106909513A (zh) | 2017-03-20 | 2017-03-20 | 一种异步非对称的读写存储区管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106909513A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101800867A (zh) * | 2010-01-19 | 2010-08-11 | 深圳市同洲电子股份有限公司 | 一种实现环形缓冲区的方法、装置及数字电视接收终端 |
CN102169420A (zh) * | 2011-04-18 | 2011-08-31 | 杭州海康威视系统技术有限公司 | 缓冲区循环读写方法及装置 |
CN104375952A (zh) * | 2013-08-14 | 2015-02-25 | 南宁市跃龙科技有限公司 | 一种从环形缓冲区读取数据的方法 |
CN104461933A (zh) * | 2014-11-07 | 2015-03-25 | 珠海全志科技股份有限公司 | 内存管理方法及其装置 |
US20160330283A1 (en) * | 2014-06-20 | 2016-11-10 | Huawei Technologies Co., Ltd. | Data Storage Method and Network Interface Card |
-
2017
- 2017-03-20 CN CN201710164034.8A patent/CN106909513A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101800867A (zh) * | 2010-01-19 | 2010-08-11 | 深圳市同洲电子股份有限公司 | 一种实现环形缓冲区的方法、装置及数字电视接收终端 |
CN102169420A (zh) * | 2011-04-18 | 2011-08-31 | 杭州海康威视系统技术有限公司 | 缓冲区循环读写方法及装置 |
CN104375952A (zh) * | 2013-08-14 | 2015-02-25 | 南宁市跃龙科技有限公司 | 一种从环形缓冲区读取数据的方法 |
US20160330283A1 (en) * | 2014-06-20 | 2016-11-10 | Huawei Technologies Co., Ltd. | Data Storage Method and Network Interface Card |
CN104461933A (zh) * | 2014-11-07 | 2015-03-25 | 珠海全志科技股份有限公司 | 内存管理方法及其装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10453730B2 (en) | Interfaces and die packages, and appartuses including the same | |
CN106528461A (zh) | 储存设备及其中断生成方法 | |
CN104360967B (zh) | 存储器系统、主机控制器以及dma的控制方法 | |
CN103280238B (zh) | 基于FPGA的eMMC控制器及其工作方法 | |
CN102253898B (zh) | 一种图像数据的内存管理方法及装置 | |
EP2151748A3 (en) | Storage apparatus, memory area managing method thereof, and flash memory package | |
CN104951402B (zh) | 存储装置及其操作方法和计算系统 | |
CN103377695A (zh) | 存储系统、存储器件、存储控制器及操作其的方法 | |
CN103744621A (zh) | 缓冲区循环读写的方法及装置 | |
CN102722516A (zh) | 一种针对NAND Flash烧录文件的生成方法及相应的装置 | |
CN109558344A (zh) | 一种适用于网络传输的dma传输方法及dma控制器 | |
US7600205B2 (en) | Net/wiring selection method, net selection method, wiring selection method, and delay improvement method | |
CN105940381A (zh) | 存储器访问期间的数据重排序 | |
CN102402401A (zh) | 一种磁盘io请求队列调度的方法 | |
CN101160571A (zh) | 信息处理装置以及信息处理方法 | |
CN109992234A (zh) | 图像数据读取方法、装置、电子设备及可读存储介质 | |
CN1940974A (zh) | 便携式电子装置及ic卡 | |
CN105917414A (zh) | 非易失性存储器中冗余信息的管理 | |
CN106909513A (zh) | 一种异步非对称的读写存储区管理方法 | |
CN101777077B (zh) | 嵌入式设备文件系统实现方法 | |
CN107566972A (zh) | 一种基于ble标准的蓝牙数据高速传输方法及装置 | |
CN104516988B (zh) | 一种文件写入方法和装置 | |
CN102541639A (zh) | 一种cpu 卡数据处理方法、系统及cpu 卡 | |
EP1962219A3 (en) | Apparatus and method for managing digital rights management contents in portable terminal | |
CN105739919B (zh) | 资料存取系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200422 Address after: 310012 A408 room, Neusoft building, 99 Huaxing Road, Hangzhou, Zhejiang, Xihu District Applicant after: HANGZHOU SHUOTIAN TECHNOLOGY Co.,Ltd. Applicant after: ZHUHAI PANTUM ELECTRONICS Co.,Ltd. Address before: 310012 A408 room, Neusoft building, 99 Huaxing Road, Hangzhou, Zhejiang, Xihu District Applicant before: HANGZHOU SHUOTIAN TECHNOLOGY Co.,Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170630 |