0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA中有状态表项的存储与管理

Spinal FPGA 来源: Spinal FPGA 2024-10-27 16:06 次阅读

编 者 按

一篇2014年的论文:《CACHE FOR FLOW CONTENT: SOLUTION TODEPENDENT PACKET PROCESSING IN FPGA》,主要讲述在FPGA中有状态表项的存储与管理。感兴趣的可以阅读原文。

报文的依赖性

CPU中,存在一种“write-read miss”的场景,即新的数据还未写回就要去读存储器,导致数据依赖。

在FPGA与ASIC中报文的流水线处理中,也存在报文的依赖性问题。在流水线结构中,每个报文占据固定的时间周期数,处理时牵涉到对表项的读和写。下图为例:

c900f0b2-9408-11ef-a511-92fbcf53809c.jpg

理想情况下应为左图,packet1的写操作从时钟周期的角度来讲发生在packet2的读操作之前,如此两个报文之间即使存在相互依赖性也没有任何影响。

然而随着操作变得复杂,可能导致到图右的状态,即Packet2的读请求发生在Packet1的写请求之前,如果packet2和packet1之间存在依赖性,则此时将会发生功能型的错误:

c904fdec-9408-11ef-a511-92fbcf53809c.jpg

常见的依赖解决方法&劣势

第一种最简单的方法就是碰撞预防:

c91726f2-9408-11ef-a511-92fbcf53809c.jpg

通过插入空拍来避免数据挨的太近,当然坏处就是带宽的浪费,自然下下之策。

第二种方法即碰撞补偿。碰撞补偿允许数据以背靠背的形式呈现,当数据冲突将要发生时,相同数据流的信息将会被合并处理:

c920f790-9408-11ef-a511-92fbcf53809c.jpg

如上图所示,假定包处理的跨度为三个报文,当一个数据包n到达时,其会与n+1、n+2进行比较,如果n依赖于n+1或者n+2,则其信息将会合并到n+1或者n+2中进行处理,n将会被禁用。这种方式对于所有的信息都由数据包本身携带是没有问题的,但如果有些信息是由流当前状态、数据包信息、中间结果一些列所决定的那么久不太适用。考虑下面的例子:

c92b1752-9408-11ef-a511-92fbcf53809c.jpg

正常情况下会进入Flow StateC、在进行合并后将无法进入到StateC。

第三种方法就是CPU Cache的概念。

CFC

在CFC中,Cache基于流的关键信息作索引(如五元祖哈希)

c92eacfa-9408-11ef-a511-92fbcf53809c.jpg

上图中n、n+1、n+2存在依赖关系,n、n+1的写操作将会被写入到Cache中。

这里有一点需要注意的是对于任何一个报文而言,其从数据Cache读出到数据写回的时钟数不应超过报文在流水线中占据的时钟周期数T(如果超过了则意味着一个报文无法在时钟周期T内完成数据的处理)。

这里的Cache可以认为是一个深度为1的全关联Cache。对于Cache的容量的考虑可以参考下图:

c9461552-9408-11ef-a511-92fbcf53809c.jpg

指定一个窗口,其跨度为一个数据包从进入处理到写回的周期,窗口随着数据包滑动。上图中窗口的宽度为N+1个数据包(数据包1的状态写回发生在数据包N+1处),则上图中需要的缓存数即为N。

每个缓存的组织形式如下所示:

c95cdeea-9408-11ef-a511-92fbcf53809c.jpg

Content为Cache的主要内容,用于存储流的相关信息。Tag和Validity为辅助信息。Tag可以为流的hash值。通过hash比较判断是否存在匹配。Validity则用于标识该条流是否有效。

对于Cache中每个cache entry的维护,可以采用如下策略。为每个entry维护一个计数器。计数器的初始值为0,标识无效,其他值则有效。当一个entry被建立使用时,其计数器值设置为N,此后每进入一个数据包值就减1,直到为0,标志其无效,将其数据写回SDRAM。但如果来了一个命中该entry的数据,那么其计数器值将直接恢复为N。如此,对于任何一个到来的数据报文,其都可以找到一个匹配的entry或者一个空的entry来进行缓存(其实这里的替换策略就是LRU)。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1625

    文章

    21663

    浏览量

    601651
  • asic
    +关注

    关注

    34

    文章

    1193

    浏览量

    120303
  • 存储器
    +关注

    关注

    38

    文章

    7447

    浏览量

    163579
  • 流水线
    +关注

    关注

    0

    文章

    119

    浏览量

    25608

原文标题:论文学习——CFC:Cache For Flow Content

文章出处:【微信号:Spinal FPGA,微信公众号:Spinal FPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    状态机编程实例-状态表

    上篇文章,使用嵌套switch-case法的状态机编程,实现了一个炸弹拆除小游戏。本篇,继续介绍状态机编程的第二种方法:状态表法,来实现炸弹拆除小游戏的状态机编程。
    的头像 发表于 06-20 09:05 1962次阅读
    <b class='flag-5'>状态</b>机编程实例-<b class='flag-5'>状态表</b>法

    基于有限状态机[8]的DSR路由表项设计实现方法

    本文为在FPGA中支持DSR协议的路由表项管理功能,设计一种基于有限状态机[8]的实现方法。
    的头像 发表于 12-22 16:27 2201次阅读
    基于有限<b class='flag-5'>状态</b>机[8]的DSR路由<b class='flag-5'>表项</b>设计实现方法

    基于FPGA的视频图形显示系统的DDR3多端口存储管理设计

    吞吐量大、功耗低的需求,因此选择DDR3 SDRAM作为机载视频图形显示系统的外部存储器。本文以Kintex-7系列XC7K410T FPGA芯片和两片MT41J128M16 DDR3 SDRAM芯片为硬件平台,设计并实现了基于FPGA
    发表于 06-24 06:07

    ACPI高级电源管理的电力状态

    ACPI 高级电源管理ACPI 中定义了 G、D、S、C、P 这 5 个大的电力状态。G 状态 Global system stateG 状态表示的是用户看到的整个系统的电力
    发表于 12-27 07:42

    MCU低功耗状态表模式介绍

    一、低功耗状态表模式hsi_onhse_onpll_onlsi_onldo_hsildo_pllldo_enldo_en_hcpu_clk备注 runON/OFFON/OFFON/OFFON/OFFONONONONON lprunON/OFFON/OFFON/OFFON/OFFONON...
    发表于 02-11 07:30

    求助,同步二进制减法计数器的状态表该怎么画?

    请问各位,同步二进制减法计数器的状态表该怎么画?之前只做过同步加法和异步减法,现在混淆了,同步减法的次态是代入特性方程算出来之后再作为下一个初态,还是直接递减不用算?
    发表于 11-23 20:44

    TCAM表项管理算法研究

    为了克服传统的软件路由查找机制的瓶颈, 高速路由器目前的查表方案是基于TCAM 的硬件路由查找。由于路由查找的最长前缀匹配要求,TCAM 要解决路由表项的高效存储管理问题。本
    发表于 06-01 11:53 28次下载

    TCAM路由表项管理算法优化研究

    TCAM(Ternary Content-Addressable Memory) 能够很好的完成最长前缀匹配,实现快速路由查找和分组转发,但是其对路由表项的有序性要求使得表项管理比较复杂。在讨论已有TCAM
    发表于 12-22 14:10 23次下载

    高速数据存储管理设计和基于FPGA高速图像数据的存储及显示设计

    设计了一种基于FPGA控制Nand Flash阵列实现高速流水线式存储的方案。设计利用FPGA作为主控制器,通过CameraLink输入通信接口将图像数据经过一/二级缓存写入Flash存储
    发表于 10-11 18:33 6次下载
    高速数据<b class='flag-5'>存储</b><b class='flag-5'>管理</b>设计和基于<b class='flag-5'>FPGA</b>高速图像数据的<b class='flag-5'>存储</b>及显示设计

    使用单片机进行智能药盒设计的程序和状态表资料免费下载

    本文档的主要内容详细介绍的是使用单片机进行智能药盒设计的程序和状态表资料免费下载。
    发表于 12-11 16:05 14次下载
    使用单片机进行智能药盒设计的程序和<b class='flag-5'>状态表</b>资料免费下载

    基于有限状态机的FPGA DSR路由表项设计和实现方法

    动态源路由协议(Dynamic Source Routing)[3]是一种按需路由协议,是十分适用于Ad Hoc网络的路由协议。在DSR协议中,路由表的表项都是按需建立的。路由过期或链路断开,表项就失去作用了。
    发表于 01-06 11:33 1422次阅读
    基于有限<b class='flag-5'>状态</b>机的<b class='flag-5'>FPGA</b> DSR路由<b class='flag-5'>表项</b>设计和实现方法

    FPGA状态机简述

    机是FPGA设计中一种非常重要、非常根基的设计思想,堪称FPGA的灵魂,贯穿FPGA设计的始终。 02. 状态机简介 什么是状态机:
    的头像 发表于 11-05 17:58 7295次阅读
    <b class='flag-5'>FPGA</b>:<b class='flag-5'>状态</b>机简述

    linux 中 ACPI 电源管理 G 状态、S 状态、D 状态、C 状态、P 状态

    ACPI 高级电源管理ACPI 中定义了 G、D、S、C、P 这 5 个大的电力状态。G 状态 Global system stateG 状态表示的是用户看到的整个系统的电力
    发表于 01-05 14:12 4次下载
    linux 中 ACPI 电源<b class='flag-5'>管理</b> G <b class='flag-5'>状态</b>、S <b class='flag-5'>状态</b>、D <b class='flag-5'>状态</b>、C <b class='flag-5'>状态</b>、P <b class='flag-5'>状态</b>

    初代版的NoahX状态管理

    在框架中都会有个集中式状态管理工具,它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态
    的头像 发表于 09-13 10:53 708次阅读

    hash算法在FPGA中的实现(3)

    在前面的文章中主要介绍了hash表及其链表的结构,同时说明了如何读取表项。那表项是如何写入的了?前期的文章中有少量的提及,这里单独写一篇,介绍两种常见的方案。
    的头像 发表于 09-07 17:02 721次阅读
    hash算法在<b class='flag-5'>FPGA</b>中的实现(3)