CN1264096C - 一种fifo存储器的数据处理方法 - Google Patents
一种fifo存储器的数据处理方法 Download PDFInfo
- Publication number
- CN1264096C CN1264096C CN 200310113548 CN200310113548A CN1264096C CN 1264096 C CN1264096 C CN 1264096C CN 200310113548 CN200310113548 CN 200310113548 CN 200310113548 A CN200310113548 A CN 200310113548A CN 1264096 C CN1264096 C CN 1264096C
- Authority
- CN
- China
- Prior art keywords
- data
- write
- fifo
- address
- buffer memory
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Transfer Systems (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种FIFO存储器的数据处理方法,其核心思想是:写控制模块在内部对FIFO的写数据和写地址进行缓存,缓存得到的结果将比实际的写地址和写数据滞后一拍,这样当发生溢出的时候,就可以用添加了溢出标志的缓存数据写入缓存的地址指向的位置,从而避免破坏当前读指针指向地址的数据。本发明提出的方法尤其适用于用FIFO存储具有帧结构的数据的情况,能够解决由于异步产生的错误,并能够有效的保护数据,最大限度地提高了数据存储的效率和利用效率。
Description
技术领域
本发明涉及存储领域,特别涉及一种先进先出队列(First In First Out以下简称FIFO)存储器对数据的处理方法。
背景技术
FIFO是一种在电子领域得到广泛应用的存储器器件,通常用于数据的缓存和用于容纳异步信号的频率或相位的差异。通常的FIFO存储器由写控制模块、读控制模块和存储模块组成。FIFO的工作原理如下:以独立的读写地址指针在读写脉冲的控制下顺序地从/向存储模块读/写数据,读写指针均从第一个地址单元开始,顺序读/写到最后一个地址单元,然后又回到第一个地址单元。通过对读指针和写指针的比较,给出存储模块的空与满的判断。
FIFO的溢出(Overrun)是由于读、写双方速度差异过大,在FIFO已经写满的情况下又试图写入新的数据造成的。对于FIFO的溢出现象,通常的处理方法是丢弃新的数据,并把溢出(Overrun)标志写到写地址对应的位置,写地址不递增。该方法的不足之处是:这样可能造成数据损失并带来一定的性能浪费。这是因为FIFO发生溢出的原因是由于数据读取的一侧不能及时读走FIFO中的数据造成的,如果FIFO中的各条目的数据之间没有联系,现有的处理方法不存在什么问题,但是如果当FIFO中存放的数据是具有帧结构(如HDLC、以太网的数据)的数据,即若干个连续的数据代表一个数据帧或代表一个数据结构,在这种情况下,现有的对FIFO溢出的处理方法就会产生前述的问题:可能造成数据损失并带来一定的性能浪费。图1是现有技术中FIFO发生溢出的过程示意图。
如图1所示,假设该FIFO有5个地址,在t0时刻之前,该5个地址中分别写入了数据E、A、B、C、D;ABCDE这些数据都是具有帧结构的数据,是数据帧的单个字节,数据帧的每个字节都有一个结束标志(Last)来标明该字节是否是这一帧数据的最后一个字节,同时也有一个溢出标志(OV)来标识该字节是否发生了溢出错误。在t0时刻:读指针指向地址3,数据F写入地址1,写指针指向地址2,该FIFO差一个数据就被写满,此时各地址中数据的溢出标志位与结束标志位均为0,处于无效状态;在t1时刻,读指针指向地址3,数据G写入地址2,写指针指向地址3,FIFO被写满,如果数据G恰好是一个数据帧的最后一个数据字节,则此时数据G的结束标志位应当有效,置1;在t2时刻,读指针指向地址3,外部又有新的数据H申请写入FIFO,此时由于读指针与写指针均指向地址3,因此发生数据溢出现象,按照现有的处理方法,新的数据H将被抛弃,同时在地址3对应条目的数据的溢出标志位被置为有效,即地址3中的数据C的溢出标志位置1。在接下来的数据读取过程中,要读取的数据首先是从读指针指向的地址3开始的,此时,读控制模块将会发现数据C的溢出标志位有效,现有的处理方法会认为从这个字节开始到该帧数据结束(对于本例就是地址2对应的数据G)都是无效数据而丢弃。但事实上这一帧数据其实是完好无损的,在这种情况下,现有的处理方法就造成了效率的浪费。此时的处理方法要么是申请系统将所有相关联的逻辑复位,重新开始接收数据,但是这样就可能损失一帧或多帧正确的数据;要么就要记住这个溢出标志位的实际意义,但是这样做又会使得在可能发生多次溢出的情形下,数据读取的逻辑变得非常的复杂。
发明内容
本发明的目的就是为了解决现有技术中存在的可能造成数据损失并带来一定的性能浪费的问题,提出一种FIFO存储器的数据处理方法。
本发明的核心思想是:为了实现对FIFO溢出(Overrun)的情况的处理,写控制模块在内部对FIFO的写数据和写地址进行缓存,缓存得到的结果将比实际的写地址和写数据滞后一拍,这样当发生溢出(Overrun)的时候,就可以用添加了溢出标志的缓存数据写入缓存的地址指向的位置,从而避免破坏当前读指针指向地址的数据。
一种FIFO存储器的数据处理方法,包括下列步骤:
(1)对每个写地址对应的数据存储区设置溢出标志位;
(2)外部申请向FIFO中写入数据;
(3)判断FIFO是否已经写满,如果未写满则缓存当前的写数据和写地址,将当前的写数据写入当前的写地址中,写地址加1,重新执行步骤(2);如果FIFO已写满则将缓存的写数据附加溢出标志后写入缓存的写地址中;重新执行步骤(2)
所述的写数据是具有帧结构的数据。
本发明提出了一种通过对写地址和写数据进行缓存从而在溢出时用缓存数据代替当前数据的方法来实现对FIFO溢出的处理方法,尤其适用于用FIFO存储具有帧结构的数据的情况。通过使用本发明提出的方法,能够解决由于异步产生的错误,并能够有效的保护数据,最大限度提高了数据存储的效率和利用效率。
附图说明
图1是现有技术中FIFO发生溢出的过程示意图。
图2是实现本发明的方法的FIFO写控制模块的结构示意图。
图3是本发明提出的方法的流程图。
图4是本发明的一个应用实施例的过程示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。
图1在背景技术中已经进行过说明。
图2是实现本发明的方法的FIFO写控制模块的结构示意图。如图2所示,为了实现本发明提出的方法,对写数据和写地址进行缓存,写控制模块增加了两个多路选择器和两个寄存器。其中寄存器1用于缓存写数据,寄存器2用于缓存写地址,多路选择器1通过FIFO已满的信号来触发选择输出当前写数据和寄存器1中缓存的写数据;多路选择器2通过FIFO已满的信号来触发选择输出当前的写地址和寄存器2中的缓存的写地址。由图2可见,通过写控制模块的这种结构可以实现本发明所提出的方法的中写地址和写数据的缓存以及选择输出。
图3是本发明提出的方法的流程图。如图3所示,本发明提出的方法包括下列步骤:(1)对每个写地址对应的数据存储区设置溢出标志位;(2)外部申请向FIFO中写入数据;(3)判断FIFO是否已经写满,如果未写满则缓存当前的写数据和写地址;(4)将当前的写数据写入当前的写地址中;(5)写地址加1;(6)重新执行步骤(2);(7)如果FIFO已写满则将缓存的写数据附加溢出标志后写入缓存的写地址中;(8)重新执行步骤(2)。
图4是本发明的一个应用实施例的过程示意图。如图4所示,结合图1,该FIFO有5个地址,ABCDE这些数据都是具有帧结构的数据,是数据帧的单个字节,数据帧的每个字节都有一个结束标志(Last)来标明该字节是否是这一帧数据的最后一个字节,同时也有一个溢出标志(OV)来标识该字节是否发生了溢出错误。根据本发明提出的方法,在t0时刻之前,该FIFO没有发生溢出,也即未被写满,因此,该5个地址中分别写入了数据E、A、B、C、D,t0时刻之前缓存的写数据为E,缓存的写地址为0,写地址加1后变成1。根据本发明提出的方法:
在t0时刻:读指针指向地址3,当前的写地址为1,此时外部申请将数据F写入FIFO,判断此时FIFO未被写满,因此,缓存的写数据为F,缓存的写地址为1,将数据F写入地址1,写地址加1变成2,该FIFO差一个数据就被写满,此时各地址中数据的溢出标志位与结束标志位均为O,处于无效状态。
在t1时刻:读指针指向地址3;外部申请将数据G写入FIFO,判断此时FIFO未被写满,因此,缓存的写数据为G,缓存的写地址为2;将数据G写入地址2,写地址加1变成3。此时FIFO全部被写满。如果数据G恰好是一个数据帧的最后一个数据字节,则此时数据G的结束标志位应当有效,被置1。
在t2时刻,读指针指向地址3;外部又申请将新的数据H写入FIFO,当前的写地址为3,由于读指针与写指针均指向同一个地址3,此时FIFO已经被写满,发生数据溢出现象,根据本发明提出的方法,就会将缓存的写数据附加溢出标志后写入缓存的写地址中,此时缓存的写数据为G,缓存的写地址为2,因此将数据G附加溢出标志后写入地址2中,即将原地址2中的数据G的溢出标志位置1即可。在接下来的数据读取过程中,要读取的数据首先是从读指针指向的地址3开始的,使用本发明提出的方法后,读取到的数据就是正常数据了,直到读取了4个数据后读到地址2中的数据G,才会发现溢出标志和结束标志均有效,而此时,该数据帧的所有数据均已读出,在这种情况下,上层的处理逻辑就不必丢弃该帧数据了,从而提高了数据存储的效率和利用效率,同时也有效保护了数据。
Claims (3)
1、一种FIFO存储器的数据处理方法,其特征在于包括下列步骤:
(1)对每个写地址对应的数据存储区设置溢出标志位;
(2)外部申请向FIFO中写入数据;
(3)判断FIFO是否已经写满,如果未写满则缓存当前的写数据和写地址,将当前的写数据写入当前的写地址中,写地址加1,重新执行步骤(2);如果FIFO已写满则将缓存的写数据附加溢出标志后写入缓存的写地址中,重新执行步骤(2)。
2、根据权利要求1所述的一种FIFO存储器的数据处理方法,其特征在于所述的写数据是具有帧结构的数据。
3、根据权利要求1所述的一种FIFO存储器的数据处理方法,其特征在于所述对写数据和写地址的缓存是通过寄存器实现的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200310113548 CN1264096C (zh) | 2003-11-17 | 2003-11-17 | 一种fifo存储器的数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200310113548 CN1264096C (zh) | 2003-11-17 | 2003-11-17 | 一种fifo存储器的数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1545031A CN1545031A (zh) | 2004-11-10 |
CN1264096C true CN1264096C (zh) | 2006-07-12 |
Family
ID=34336912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200310113548 Expired - Fee Related CN1264096C (zh) | 2003-11-17 | 2003-11-17 | 一种fifo存储器的数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1264096C (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7360112B2 (en) * | 2005-02-07 | 2008-04-15 | International Business Machines Corporation | Detection and recovery of dropped writes in storage devices |
US8180967B2 (en) * | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory virtualization |
CN101493759B (zh) * | 2008-01-22 | 2011-12-21 | 安凯(广州)微电子技术有限公司 | 一种任意容量异步先入先出存储器的地址控制方法 |
CN101261575B (zh) * | 2008-02-26 | 2010-04-21 | 北京天碁科技有限公司 | 一种实现不等宽数据传输的异步先进先出存储器及方法 |
CN101299204B (zh) * | 2008-06-10 | 2010-06-02 | 北京天碁科技有限公司 | 一种异步fifo及其地址转换方法 |
CN101330620B (zh) * | 2008-08-05 | 2011-04-13 | 北京海尔集成电路设计有限公司 | 一种音视频数据编解码的方法及装置 |
CN102169420B (zh) * | 2011-04-18 | 2013-10-30 | 杭州海康威视系统技术有限公司 | 缓冲区循环读写方法及装置 |
CN102402400B (zh) * | 2011-11-25 | 2015-02-25 | 福建星网锐捷网络有限公司 | 发送数据帧的方法及装置 |
JP6136171B2 (ja) * | 2012-10-02 | 2017-05-31 | 株式会社ソシオネクスト | データ転送装置、データ転送方法、半導体装置 |
CN105183665B (zh) * | 2015-09-08 | 2018-02-13 | 福州瑞芯微电子股份有限公司 | 一种数据缓存访问方法和数据缓存控制器 |
CN108108148B (zh) * | 2016-11-24 | 2021-11-16 | 舒尔电子(苏州)有限公司 | 一种数据处理方法和装置 |
CN109308180B (zh) * | 2018-08-16 | 2021-01-26 | 盛科网络(苏州)有限公司 | 缓存拥塞的处理方法及处理装置 |
CN112416823B (zh) * | 2020-11-15 | 2024-05-03 | 珠海一微半导体股份有限公司 | 一种突发模式下的传感器数据读写控制方法、系统及芯片 |
CN115481079B (zh) * | 2021-06-15 | 2023-07-07 | 珠海一微半导体股份有限公司 | 一种数据调度系统、可重构处理器及数据调度方法 |
CN116743951B (zh) * | 2023-08-09 | 2024-01-12 | 山东云海国创云计算装备产业创新中心有限公司 | 一种视频数据处理方法、系统、存储介质和电子设备 |
-
2003
- 2003-11-17 CN CN 200310113548 patent/CN1264096C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1545031A (zh) | 2004-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1264096C (zh) | 一种fifo存储器的数据处理方法 | |
EP0468786B1 (en) | Processor which performs memory access in parallel with cache access and method employed thereby | |
US6701393B1 (en) | Systems and methods for managing storage location descriptors | |
CN1831757A (zh) | 中央处理单元中的提前执行 | |
CN1306421C (zh) | 具有增强的翻译能力的翻译后援缓冲器及其方法 | |
US4942521A (en) | Microprocessor with a cache memory in which validity flags for first and second data areas are simultaneously readable | |
EP0386719B1 (en) | Partial store control circuit | |
CN104809093A (zh) | 对串行接口传输的数据进行处理的方法及装置 | |
CN1731346A (zh) | 微处理器的整数单元中五级容错流水结构的实现方法 | |
US5813030A (en) | Cache memory system with simultaneous access of cache and main memories | |
CN100336038C (zh) | 嵌入顺序缓冲器的计算机系统及其方法 | |
US7111127B2 (en) | System for supporting unlimited consecutive data stores into a cache memory | |
US6826671B2 (en) | Method and device for a context-based memory management system | |
US10853123B2 (en) | Memory module | |
JP2003030129A (ja) | データバッファ | |
CN100343839C (zh) | 一种用于把外部存储器访问转换成处理核心中局部存储器访问的方法和设备 | |
CN1798088A (zh) | 基于fpga的路由查找和刷新的调度方法及其装置 | |
CN111159064B (zh) | 一种低复杂度数据块缓存方法 | |
CN1297887C (zh) | 可跨边界对齐复数暂存器资料的处理器及其方法 | |
KR0170216B1 (ko) | 신호처리장치 및 그 방법 | |
CN113110878A (zh) | 存储器装置及其操作方法 | |
JPS61237145A (ja) | ストアバツフアの制御方式 | |
JPH0259837A (ja) | データリカバリ処理方式 | |
US6260112B1 (en) | Register memory linking | |
CN1150309A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060712 Termination date: 20131117 |