网卡FIFO数据缓存器处理机制特点

发布时间:2019-08-12

浏览次数:3516

分享到:

  缓存算法的测量有三种:

  FIFO:First In First Out,先进先出。判断被存储的时间,离目前最远的数据优先被淘汰。
  LRU:Least Recently Used,最近最少使用。判断最近被使用的时间,目前最远的数据优先被淘汰。
  LFU:Least Frequently Used,最不经常使用。在一段时间内,数据被使用次数最少的,优先被淘汰。

  FIFO数据缓存器:

      FIFO (First Input First Output) 一种先进先出的数据缓存器,先进入的数据先从FIFO缓存器中读出,与RAM相比没有外部读写地址线,使用比较简单,但只能顺序写入数据,顺序的读出数据,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。

  FIFO数据缓存器的作用:

  FIFO一般用于不同时钟域之间的数据传输,比如FIFO的一端是AD数据采集,另一端是计算机的PCI总线,假设其AD采集的速率为16位 100Kbps,那么每秒的数据量为100K×16bit=1.6Mbps,而PCI总线的速度为33MHz,总线宽度32bit,其最大传输速率为1056Mbps,在两个不同的时钟域间就可以采用FIFO来作为数据缓冲。另外对于不同宽度的数据接口也可以用FIFO,例如单片机位8位数据输出,而DSP可能是16位数据输入,在单片机与DSP连接时就可以使用FIFO来达到数据匹配的目的。

  FIFO数据缓存器按工作时钟域分类:

      根据FIFO工作时钟域,可以将FIFO分为同步FIFO和异步FIFO。同步FIFO是指读时钟和写时钟为同一个时钟,在时钟沿来临时同时发生读写操作;异步FIFO是指读写时钟不一致,读写时钟是互相独立的。对于异步FIFO一般有两种理解,一种是读写操作不使用时钟,而是直接采用wr_en(Write Enabled)和rd_en(Read Enabled)来进行控制;另一种,是指在FPGA和ASIC设计中,异步FIFO具有两个时钟的双口FIFO, 读些操作在各自的时钟延上进行,在两个不同时钟下,可以同时进行读或写。异步FIFO在FPGA设计汇总占用的资源比同步FIFO大很多,所以尽量采用同步FIFO设计。然而对于ARM 系统内绝大部分外设接口都是异步 FIFO。

  网卡的内核缓冲区,是在PC内存中,由内核控制,而网卡会有FIFO缓冲区,或者ring buffer,这应该将两者区分开。FIFO比较小,里面有数据便会尽量将数据存在内核缓冲中。
 
  网卡中的缓冲区既不属于内核空间,也不属于用户空间。它属于硬件缓冲,允许网卡与操作系统之间有个缓冲; 

  内核缓冲区在内核空间,在内存中,用于内核程序,做为读自或写往硬件的数据缓冲区; 

  用户缓冲区在用户空间,在内存中,用于用户程序,做为读自或写往硬件的数据缓冲区; 

  另外,为了加快数据的交互,可以将内核缓冲区映射到用户空间,这样,内核程序和用户程序就可以同时访问这一区间了。


  想了解更多存储产品需要合作与咨询搭建方案请联系官网上的在线客服,嘉华众力自2000年成立以来一直在网络存储、传输这方面积累、沉淀;经过多年发展与全新的品牌定位,( CEACENT )嘉华众力品牌已成为国内外极具实力的数据通讯产品及方案提供商。,请关注嘉华众力官网:www.unicaca.com
 

文章部分材料转自于CNSD博客:
 

15012962335