0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA中有狀態(tài)表項的存儲與管理

Spinal FPGA ? 來源: Spinal FPGA ? 2024-10-27 16:06 ? 次閱讀

編 者 按

一篇2014年的論文:《CACHE FOR FLOW CONTENT: SOLUTION TODEPENDENT PACKET PROCESSING IN FPGA》,主要講述在FPGA中有狀態(tài)表項的存儲與管理。感興趣的可以閱讀原文。

報文的依賴性

CPU中,存在一種“write-read miss”的場景,即新的數(shù)據(jù)還未寫回就要去讀存儲器,導致數(shù)據(jù)依賴。

在FPGA與ASIC中報文的流水線處理中,也存在報文的依賴性問題。在流水線結(jié)構(gòu)中,每個報文占據(jù)固定的時間周期數(shù),處理時牽涉到對表項的讀和寫。下圖為例:

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

理想情況下應(yīng)為左圖,packet1的寫操作從時鐘周期的角度來講發(fā)生在packet2的讀操作之前,如此兩個報文之間即使存在相互依賴性也沒有任何影響。

然而隨著操作變得復(fù)雜,可能導致到圖右的狀態(tài),即Packet2的讀請求發(fā)生在Packet1的寫請求之前,如果packet2和packet1之間存在依賴性,則此時將會發(fā)生功能型的錯誤:

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

常見的依賴解決方法&劣勢

第一種最簡單的方法就是碰撞預(yù)防:

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

通過插入空拍來避免數(shù)據(jù)挨的太近,當然壞處就是帶寬的浪費,自然下下之策。

第二種方法即碰撞補償。碰撞補償允許數(shù)據(jù)以背靠背的形式呈現(xiàn),當數(shù)據(jù)沖突將要發(fā)生時,相同數(shù)據(jù)流的信息將會被合并處理:

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

如上圖所示,假定包處理的跨度為三個報文,當一個數(shù)據(jù)包n到達時,其會與n+1、n+2進行比較,如果n依賴于n+1或者n+2,則其信息將會合并到n+1或者n+2中進行處理,n將會被禁用。這種方式對于所有的信息都由數(shù)據(jù)包本身攜帶是沒有問題的,但如果有些信息是由流當前狀態(tài)、數(shù)據(jù)包信息、中間結(jié)果一些列所決定的那么久不太適用??紤]下面的例子:

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

正常情況下會進入Flow StateC、在進行合并后將無法進入到StateC。

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

CFC

在CFC中,Cache基于流的關(guān)鍵信息作索引(如五元祖哈希)

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

上圖中n、n+1、n+2存在依賴關(guān)系,n、n+1的寫操作將會被寫入到Cache中。

這里有一點需要注意的是對于任何一個報文而言,其從數(shù)據(jù)Cache讀出到數(shù)據(jù)寫回的時鐘數(shù)不應(yīng)超過報文在流水線中占據(jù)的時鐘周期數(shù)T(如果超過了則意味著一個報文無法在時鐘周期T內(nèi)完成數(shù)據(jù)的處理)。

這里的Cache可以認為是一個深度為1的全關(guān)聯(lián)Cache。對于Cache的容量的考慮可以參考下圖:

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

指定一個窗口,其跨度為一個數(shù)據(jù)包從進入處理到寫回的周期,窗口隨著數(shù)據(jù)包滑動。上圖中窗口的寬度為N+1個數(shù)據(jù)包(數(shù)據(jù)包1的狀態(tài)寫回發(fā)生在數(shù)據(jù)包N+1處),則上圖中需要的緩存數(shù)即為N。

每個緩存的組織形式如下所示:

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

Content為Cache的主要內(nèi)容,用于存儲流的相關(guān)信息。Tag和Validity為輔助信息。Tag可以為流的hash值。通過hash比較判斷是否存在匹配。Validity則用于標識該條流是否有效。

對于Cache中每個cache entry的維護,可以采用如下策略。為每個entry維護一個計數(shù)器。計數(shù)器的初始值為0,標識無效,其他值則有效。當一個entry被建立使用時,其計數(shù)器值設(shè)置為N,此后每進入一個數(shù)據(jù)包值就減1,直到為0,標志其無效,將其數(shù)據(jù)寫回SDRAM。但如果來了一個命中該entry的數(shù)據(jù),那么其計數(shù)器值將直接恢復(fù)為N。如此,對于任何一個到來的數(shù)據(jù)報文,其都可以找到一個匹配的entry或者一個空的entry來進行緩存(其實這里的替換策略就是LRU)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1629

    文章

    21736

    瀏覽量

    603319
  • asic
    +關(guān)注

    關(guān)注

    34

    文章

    1200

    瀏覽量

    120501
  • 存儲器
    +關(guān)注

    關(guān)注

    38

    文章

    7492

    瀏覽量

    163828
  • 流水線
    +關(guān)注

    關(guān)注

    0

    文章

    120

    瀏覽量

    25737

原文標題:論文學習——CFC:Cache For Flow Content

文章出處:【微信號:Spinal FPGA,微信公眾號:Spinal FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    狀態(tài)機編程實例-狀態(tài)表

    上篇文章,使用嵌套switch-case法的狀態(tài)機編程,實現(xiàn)了一個炸彈拆除小游戲。本篇,繼續(xù)介紹狀態(tài)機編程的第二種方法:狀態(tài)表法,來實現(xiàn)炸彈拆除小游戲的狀態(tài)機編程。
    的頭像 發(fā)表于 06-20 09:05 ?2069次閱讀
    <b class='flag-5'>狀態(tài)</b>機編程實例-<b class='flag-5'>狀態(tài)表</b>法

    基于有限狀態(tài)機[8]的DSR路由表項設(shè)計實現(xiàn)方法

    本文為在FPGA中支持DSR協(xié)議的路由表項管理功能,設(shè)計一種基于有限狀態(tài)機[8]的實現(xiàn)方法。
    的頭像 發(fā)表于 12-22 16:27 ?2245次閱讀
    基于有限<b class='flag-5'>狀態(tài)</b>機[8]的DSR路由<b class='flag-5'>表項</b>設(shè)計實現(xiàn)方法

    基于FPGA的視頻圖形顯示系統(tǒng)的DDR3多端口存儲管理設(shè)計

    吞吐量大、功耗低的需求,因此選擇DDR3 SDRAM作為機載視頻圖形顯示系統(tǒng)的外部存儲器。本文以Kintex-7系列XC7K410T FPGA芯片和兩片MT41J128M16 DDR3 SDRAM芯片為硬件平臺,設(shè)計并實現(xiàn)了基于FPGA
    發(fā)表于 06-24 06:07

    ACPI高級電源管理的電力狀態(tài)

    ACPI 高級電源管理ACPI 中定義了 G、D、S、C、P 這 5 個大的電力狀態(tài)。G 狀態(tài) Global system stateG 狀態(tài)表示的是用戶看到的整個系統(tǒng)的電力
    發(fā)表于 12-27 07:42

    MCU低功耗狀態(tài)表模式介紹

    一、低功耗狀態(tài)表模式hsi_onhse_onpll_onlsi_onldo_hsildo_pllldo_enldo_en_hcpu_clk備注 runON/OFFON/OFFON/OFFON/OFFONONONONON lprunON/OFFON/OFFON/OFFON/OFFONON...
    發(fā)表于 02-11 07:30

    求助,同步二進制減法計數(shù)器的狀態(tài)表該怎么畫?

    請問各位,同步二進制減法計數(shù)器的狀態(tài)表該怎么畫?之前只做過同步加法和異步減法,現(xiàn)在混淆了,同步減法的次態(tài)是代入特性方程算出來之后再作為下一個初態(tài),還是直接遞減不用算?
    發(fā)表于 11-23 20:44

    TCAM表項管理算法研究

    為了克服傳統(tǒng)的軟件路由查找機制的瓶頸, 高速路由器目前的查表方案是基于TCAM 的硬件路由查找。由于路由查找的最長前綴匹配要求,TCAM 要解決路由表項的高效存儲管理問題。本
    發(fā)表于 06-01 11:53 ?28次下載

    TCAM路由表項管理算法優(yōu)化研究

    TCAM(Ternary Content-Addressable Memory) 能夠很好的完成最長前綴匹配,實現(xiàn)快速路由查找和分組轉(zhuǎn)發(fā),但是其對路由表項的有序性要求使得表項管理比較復(fù)雜。在討論已有TCAM
    發(fā)表于 12-22 14:10 ?23次下載

    高速數(shù)據(jù)存儲管理設(shè)計和基于FPGA高速圖像數(shù)據(jù)的存儲及顯示設(shè)計

    設(shè)計了一種基于FPGA控制Nand Flash陣列實現(xiàn)高速流水線式存儲的方案。設(shè)計利用FPGA作為主控制器,通過CameraLink輸入通信接口將圖像數(shù)據(jù)經(jīng)過一/二級緩存寫入Flash存儲
    發(fā)表于 10-11 18:33 ?6次下載
    高速數(shù)據(jù)<b class='flag-5'>存儲</b><b class='flag-5'>管理</b>設(shè)計和基于<b class='flag-5'>FPGA</b>高速圖像數(shù)據(jù)的<b class='flag-5'>存儲</b>及顯示設(shè)計

    使用單片機進行智能藥盒設(shè)計的程序和狀態(tài)表資料免費下載

    本文檔的主要內(nèi)容詳細介紹的是使用單片機進行智能藥盒設(shè)計的程序和狀態(tài)表資料免費下載。
    發(fā)表于 12-11 16:05 ?14次下載
    使用單片機進行智能藥盒設(shè)計的程序和<b class='flag-5'>狀態(tài)表</b>資料免費下載

    基于有限狀態(tài)機的FPGA DSR路由表項設(shè)計和實現(xiàn)方法

    動態(tài)源路由協(xié)議(Dynamic Source Routing)[3]是一種按需路由協(xié)議,是十分適用于Ad Hoc網(wǎng)絡(luò)的路由協(xié)議。在DSR協(xié)議中,路由表的表項都是按需建立的。路由過期或鏈路斷開,表項就失去作用了。
    發(fā)表于 01-06 11:33 ?1475次閱讀
    基于有限<b class='flag-5'>狀態(tài)</b>機的<b class='flag-5'>FPGA</b> DSR路由<b class='flag-5'>表項</b>設(shè)計和實現(xiàn)方法

    FPGA狀態(tài)機簡述

    機是FPGA設(shè)計中一種非常重要、非常根基的設(shè)計思想,堪稱FPGA的靈魂,貫穿FPGA設(shè)計的始終。 02. 狀態(tài)機簡介 什么是狀態(tài)機:
    的頭像 發(fā)表于 11-05 17:58 ?7401次閱讀
    <b class='flag-5'>FPGA</b>:<b class='flag-5'>狀態(tài)</b>機簡述

    linux 中 ACPI 電源管理 G 狀態(tài)、S 狀態(tài)、D 狀態(tài)、C 狀態(tài)、P 狀態(tài)

    ACPI 高級電源管理ACPI 中定義了 G、D、S、C、P 這 5 個大的電力狀態(tài)。G 狀態(tài) Global system stateG 狀態(tài)表示的是用戶看到的整個系統(tǒng)的電力
    發(fā)表于 01-05 14:12 ?4次下載
    linux 中 ACPI 電源<b class='flag-5'>管理</b> G <b class='flag-5'>狀態(tài)</b>、S <b class='flag-5'>狀態(tài)</b>、D <b class='flag-5'>狀態(tài)</b>、C <b class='flag-5'>狀態(tài)</b>、P <b class='flag-5'>狀態(tài)</b>

    初代版的NoahX狀態(tài)管理

    在框架中都會有個集中式狀態(tài)管理工具,它采用集中式存儲管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)
    的頭像 發(fā)表于 09-13 10:53 ?728次閱讀

    hash算法在FPGA中的實現(xiàn)(3)

    在前面的文章中主要介紹了hash表及其鏈表的結(jié)構(gòu),同時說明了如何讀取表項。那表項是如何寫入的了?前期的文章中有少量的提及,這里單獨寫一篇,介紹兩種常見的方案。
    的頭像 發(fā)表于 09-07 17:02 ?779次閱讀
    hash算法在<b class='flag-5'>FPGA</b>中的實現(xiàn)(3)