<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

關于一種面向異步FIFO的低開銷容錯機制研究

電子設計 ? 來源:網絡整理 ? 作者:工程師吳畏 ? 2018-06-19 15:34 ? 次閱讀

0 引言

異步FIFO(Fist-In-First-Out)是一種先入先出的數據緩沖器[1]。由于可以很好地解決跨時鐘域問題和不同模塊之間的速度匹配問題,而被廣泛應用于全局異步局部同步[2](Globally Asynchronous Locally Synchronous,GALS)數字系統中。在片上網絡(Network-on-Chip,NoC)[3]等復雜的通信系統中,通常會使用異步FIFO處理跨時鐘域問題。異步FIFO在這些系統中所占面積比例不低,例如在NI中,異步FIFO的面積超過50%[4]。為提高這類數字系統的整體容錯能力,對異步FIFO進行容錯設計是很有必要的。

當前面向FIFO的容錯方法主要分為兩類:第一類方法通過優化控制邏輯,跳過故障單元進行容錯[5]。但文獻[5]提出的方法由于無法使用格雷碼[1,6]的緣故,不能直接在異步FIFO中使用。第二類方法通過增加硬件冗余,提高單元本身的容錯能力,如文獻[7]增加備用單元用于替代故障單元,文獻[8]采用檢錯糾錯碼等方式。比較兩類方法,第一類通常面積開銷較小,而第二類方法對FIFO性能影響較小。本文提出一種與第一類方法兼容的新方法。該方法可以在降低故障對異步FIFO可靠性影響的同時,只引入少量的面積開銷。

1 折疊式容錯方案

由于格雷碼自身的特點,通常只能支持2n進制計數器。異步FIFO使用格雷碼計數器作為不同時鐘域之間的同步指針意味FIFO的深度必須保持為2的冪次方,才能保證格雷碼不出現跳碼和漏碼。本文針對這一問題,通過改進FIFO的控制邏輯進行容錯。這就要使FIFO深度保持為2的冪次方,需要在FIFO出現故障以后只選擇2的冪次方個無故障存儲單元作為工作單元。

為了便于描述,本文首先定義兩個概念:組集和組。組集使用S表示,組使用G表示。在本方案中,組是可可以被操作的最小單位。假設FIFO的初始深度為2n,那么FIFO可以被平均劃分為2i(i≤n)組,每組擁有2n-i個存儲單元。根據i的取值,可以將FIFO分為不同的組集,每個組集中有2i個組。下面將組集命名為“Si”,組集中的組命名為“Gik”,其中i代表i的值,k代表某一組在組集中的序號。如圖1所示,一個深度為8的FIFO,根據i的不同值,被劃分為3個不同的組集:S1、S2、S3。圖中的G11表示這個組屬于組集S1,并且是S1中的第一個組。當i=1時,FIFO被分為了21組,每組有23-1個單元。不同組集的組之間有一定的關系,在組集Si中的組可以由兩個屬于組集Si+1的組組成。如圖1所示,組G11可以由G21和G22組成。在組集和組的概念基礎上,需要再定義一個特殊的備選組集合U。該集合包含所有無故障的組。

關于一種面向異步FIFO的低開銷容錯機制研究

初始狀態時,每個組都將被標記為無故障,因此備選組集合U包含所有的組。發現故障單元以后,包含該單元的所有組都將被標記為故障,并從集合U中移除。此時為了保障FIFO能正常工作,需要從集合U中選擇出可以繼續工作的組。組之間的優先級遵循兩條規則,第一,組集Si中的組優先級高于組集Si+1中的組,這是因為Si中的組包含的單元數大于Si+1中的組。第二,同一組集中,序號越小的組優先級越高。根據這兩個原則必然可以得到一個優先級最高的組。圖2展示了發生故障以后FIFO的處理方式,其中粗框表示在實際工作中FIFO將會用到的單元。圖2(a)中,第3個單元發生了故障,此時將包含此單元的組G11、G22、G33從集合U中排除。根據優先級原則,在集合U中剩余的組里面G12的優先級最高,因此,組G12中的單元被選中,FIFO的深度將會變成4。在圖2(b)中,除了第3個單元,第7個單元也出現了故障。G12、G24、G37被標記為故障,從集合U中移除。此時,優先級最高的組是G21,因此G21包含的單元被選中,FIFO的深度變為2。圖2(c)和圖2(d)包含更多的例子展示容錯機制,在此不再贅述。

關于一種面向異步FIFO的低開銷容錯機制研究

關于一種面向異步FIFO的低開銷容錯機制研究

此時FIFO的容錯能力達到最大。將這個容錯方法被命名為Fold-i,其中i為imax的值。

2 備用單元的引入方法及分析

雖然Fold-i方法容錯能力很強,但是其對FIFO深度影響很大。根據Fold-i方法,當一個深度為16的FIFO出現一個故障存儲單元,整個FIFO的深度將會變為8。這會嚴重影響FIFO的性能。因此,在Fold-i方法的基礎上引入備用單元,在提高FIFO容錯能力的同時適當減少故障對FIFO深度的影響。

2.1 故障單元替代方法

引入備用單元的核心是明確替代故障單元的方法。理想的情況是備用單元可以任意替代故障單元,但這會使控制邏輯變得非常復雜。為了簡化控制邏輯,可將備用單元的替代方法簡化為兩條原則:首先,根據數量將備用單元與組集進行綁定,使得組集中每組擁有一個備用單元;其次,在檢測到故障單元以后,只用與該組對應的備用單元進行替換。圖3展示了在深度為16的FIFO中添加4個備用單元的方法。由于備用單元的數量與組集S2中組的數量一致,因此將備用單元與組集S2綁定。此時組集S2中的每一組擁都有一個備用單元。在圖3中,發現組G21中有一個故障單元,根據替代規則,只能使用備用G21單元(圖3中粗框)進行替換,而其余的備用單元不能用于替代組G21中的故障。

關于一種面向異步FIFO的低開銷容錯機制研究

2.2 備用單元引入數量分析

備用單元的數量對FIFO在故障時的深度有很大影響。如果備用單元太少,那么FIFO在故障數量較少時會浪費大量存儲單元。如果備用單元過多,雖然可以保證FIFO深度,但是備用單元本身會引入大量的面積而造成資源的浪費。

為了確定合理的備份方式,可通過實驗確定備用單元的數量。實驗對象為一個深度為16,每個存儲單元位寬為32的FIFO。該FIFO采用Fold-3容錯機制,并在此基礎上分別引入0、2、4、8個備用單元。比較在4種不同備用單元數量下,FIFO的面積及在發生故障后FIFO的深度。表1展示了4種不同數量的面積大小,可以看到在備用單元數量為2和4時面積分別增加12%和23%,而在備用單元數量為8時,面積增加了59%,這顯然是無法承受的。圖4展示了不同備用單元數量下,故障對FIFO深度的影響。圖中的縱坐標是平均FIFO深度,橫坐標是故障數量。故障的數量和位置都可能影響FIFO實際使用時的深度。令故障的數量一定,隨機化故障的發生位置可以得到不同的FIFO深度。多次實驗后得到FIFO深度的平均值即為平均FIFO深度,它可以反映在故障數量一定時FIFO深度的期望值,從而反映出故障對FIFO深度的影響大小??梢钥吹?,隨著備用單元數量的增加,FIFO的平均深度下降速度變慢。這說明備用單元的引入有效降低了故障數量對FIFO深度的影響。為了評估3種備份方案的優劣,定義面積有效值作為衡量標準。面積有效值以0個備用單元的數據為基準,將增加的FIFO深度除以增加的面積。令R表示單位深度面積,A0和D0分別表示0個備用單元時的面積和平均FIFO深度。A和D表示待評估方案的面積和平均FIFO深度。該參數計算公式如下:

關于一種面向異步FIFO的低開銷容錯機制研究

關于一種面向異步FIFO的低開銷容錯機制研究

關于一種面向異步FIFO的低開銷容錯機制研究

利用式(3)可以計算出故障發生后,3種不同策略增加單位面積可以提高的FIFO深度大小。該值越大,說明單位面積提高的FIFO深度越多,即額外增加的面積更有效率。圖5展示了3種策略在故障數量較小時的面積有效值。根據圖5所示,添加4個備用單元優于添加2個和8個備份單元的情況。因此,本文選擇引入4個備用單元,在面積引入較小的情況下,保持較大的平均FIFO深度。

關于一種面向異步FIFO的低開銷容錯機制研究

通過上述方法引入備用單元后,在故障數量較小的情況下,FIFO的深度并不會受到太大的影響,在避免了Fold-i方法缺點的同時FIFO的容錯能力也會進一步提高。

3 實驗驗證與分析

本節中將對3種不同的容錯策略進行對比分析。第一個容錯策略是通過增加部分備用單元進行容錯,將其命名為SS[7]。第二種是本文提到的,在Fold-2方法的基礎上引入備用單元,命名為SF2;第三種與第二種類似,在Fold-3方法基礎上引入備用單元,命名為SF3。這里將對比這3種策略的3項指標:容錯能力、平均FIFO深度以及總面積。實驗對象是一個深度為16的FIFO,增加4個備用單元,每個存儲單元擁有32 bits。

為了容錯能力,需要先分別對3種策略進行軟件建模。然后,在不同位置引入一定數量的故障,根據FIFO在該故障數量下的存活率判斷FIFO是否成功容錯。每個故障數量將進行10 000次實驗,最后統計FIFO的幸存率,以此衡量FIFO的容錯能力。如圖6所示,SS在故障數量超過1個以后,FIFO的幸存率已經不能保證100%。隨著故障數量的增加,幸存率急劇下降。當故障數量超過4個以后,使用SS策略的FIFO必然失效。而在SS基礎上引入Fold-2方法以后,可以看到FIFO的容錯能力得到了很大的提升,在故障數量不超過7個的時候可以保證FIFO無故障工作。在故障數量超過7個以后,使用SF2策略的FIFO幸存率逐漸降低。當故障數量到達16個以上時,FIFO必然失效。在SS基礎上引入Fold-3方法以后,其容錯能力進一步提高,在故障數量不超過11個的情況下FIFO的存活率也可以保持在100%。當超過11個故障以后,FIFO幸存率下降。直到故障數量達到19個時,FIFO的幸存率才降到0??梢钥吹?,Fold-i技術可以大幅提高FIFO的容錯能力,并且隨著i值的增大,其容錯能力增強。

關于一種面向異步FIFO的低開銷容錯機制研究

為衡量故障數量對FIFO平均深度的影響,同樣將進行10 000次實驗,統計不同故障情況下采用3種策略的FIFO可用的平均深度。如圖7所示,3種容錯方案均可以保證在故障數量只有1個時,FIFO的平均深度不受故障的影響。在使用SS方法進行容錯的情況下,其FIFO的平均深度隨故障數量下降很快,并且在超過4個故障以后,平均深度變為0,這是由于SS最多能容忍4個故障。對于引入SF2和SF3的情況,可以看到這兩種方法其平均FIFO深度都比SS大,當故障數量在4個以內時,兩者均可以保證FIFO的平均深度是無故障情況下的50%以上,相對于SF2,SF3的平均深度更大。

關于一種面向異步FIFO的低開銷容錯機制研究

verilog實現3種策略,用synopsys design compiler對代碼進行綜合得到面積數據。表2展示了3種策略的面積對比情況。SS方法的面積最小,有7 610 μm2,SF2和SF3方法的面積分別為7 718 μm2和7 929 μm2。相較于SS方法,SF2面積增加了1.42%,SF3面積增加了4.19%。兩者面積的增幅不大,但可以明顯提升FIFO容錯能力同時減小故障對性能的影響,是對SS技術的有效改進。

關于一種面向異步FIFO的低開銷容錯機制研究

4 結論

本文提出了一種新的容錯方案用于提高NI中FIFO的容錯能力。該方案主要思想是結合Fold-i和少量備用單元實現較強的容錯能力,同時降低故障對FIFO深度的影響。實驗結果表明,對于擁有4個備用單元,深度為16,每個存儲單元擁有32 bits的FIFO。相對于只引入備用單元的方法最多只增加了4.19%的面積,同時大幅提高了異步FIFO的容錯能力。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 緩沖器
    +關注

    關注

    6

    文章

    1764

    瀏覽量

    44979
  • 計數器
    +關注

    關注

    32

    文章

    2209

    瀏覽量

    93326
  • 異步FIFO
    +關注

    關注

    0

    文章

    20

    瀏覽量

    8312
收藏 人收藏

    評論

    相關推薦

    關于異步fifo的安全問題:

    關于異步fifo的安全問題:1. 雖然異步fifo可以提供多個握手信號,但真正影響安全性能的就兩個:2.
    發表于 03-05 10:40

    如何設計個可靠性高、速度高的異步FIFO電路?

    通過對FPGA芯片內部EBRSRAM的深入研究,提出了一種利用格雷碼對地址進行編碼的異步FIFO設計方案。
    發表于 04-13 06:41

    請問怎樣去設計一種異步FIFO?

    為什么要設計一種異步FIFO?異步FIFO的設計原理是什么?怎樣去設計一種
    發表于 06-18 09:20

    怎樣去設計一種采用覆蓋機制FIFO隊列模型呢

    FIFO隊列是什么?怎樣去設計一種采用覆蓋機制FIFO隊列模型呢?
    發表于 12-08 06:07

    異步FIFO結構及FPGA設計

    首先介紹異步FIFO 的概念、應用及其結構,然后分析實現異步FIFO的難點問題及其解決辦法; 在傳統設計的基礎上提出一種新穎的電路結構并對其
    發表于 04-16 09:25 ?46次下載

    高速異步FIFO的設計與實現

    本文主要研究了用FPGA 芯片內部的EBRSRAM 來實現異步FIFO 設計方案,重點闡述了異步FIFO 的標志信號——空/滿狀態的設計思路
    發表于 01-13 17:11 ?40次下載

    一種異步FIFO的設計方法

    摘要:使用FIFO同步源自不同時鐘域的數據是在數字IC設計中經常使用的方法,設計功能正確的FUFO會遇到很多問題,探討了兩種不同的異步FIFO的設計思路。兩種思路
    發表于 03-24 12:58 ?719次閱讀
    <b class='flag-5'>一種</b><b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>的設計方法

    異步FIFO結構及FPGA設計

    摘要:首先介紹異步FIFO的概念、應用及其結構,然后分析實現異步FIFO的難點問題及其解決辦法;在傳統設計的基礎上提出一種新穎的電路結構并對
    發表于 06-20 12:46 ?3717次閱讀
    <b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>結構及FPGA設計

    基于FPGA的異步FIFO設計方法詳解

    在現代電路設計中,一個系統往往包含了多個時鐘,如何在異步時鐘間傳遞數據成為一個很重要的問題,而使用異步FIFO可以有效地解決這個問題。異步FIFO
    發表于 07-17 08:33 ?7995次閱讀
    基于FPGA的<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>設計方法詳解

    基于異步FIFO結構原理

    問題一種簡便、快捷的解決方案。使用異步FIFO可以在兩個不同時鐘系統之間快速而方便地傳輸實時數據。在網絡接口、圖像處理等方面,異步FIFO
    發表于 02-07 14:22 ?0次下載
    基于<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>結構原理

    異步FIFO之Verilog代碼實現案例

    同步FIFO的意思是說FIFO的讀寫時鐘是同一個時鐘,不同于異步FIFO,異步FIFO的讀寫時鐘
    發表于 11-01 09:58 ?1269次閱讀

    異步fifo詳解

    異步fifo詳解 一. 什么是異步FIFO FIFO即First in First out的英文簡稱,是
    的頭像 發表于 12-12 14:17 ?3227次閱讀

    FIFO設計—異步FIFO

    異步FIFO主要由五部分組成:寫控制端、讀控制端、FIFO Memory和兩個時鐘同步端
    發表于 05-26 16:17 ?1156次閱讀
    <b class='flag-5'>FIFO</b>設計—<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>

    同步FIFO異步FIFO的區別 同步FIFO異步FIFO各在什么情況下應用

    簡單的一種,其特點是輸入和輸出都與時鐘信號同步,當時鐘到來時,數據總是處于穩定狀態,因此容易實現數據的傳輸和存儲。 而異步FIFO則是在波形的上升沿和下降沿上進行處理,在輸入輸出端口處分別增加輸入和輸出指針,用于管理數據的讀寫。
    的頭像 發表于 10-18 15:23 ?1132次閱讀

    請問異步FIFO的溢出操作時怎么樣判斷的?

    請問異步FIFO的溢出操作時怎么樣判斷的? 異步FIFO是數據傳輸的一種常用方式,在一些儲存器和計算機系統中,常常會用到
    的頭像 發表于 10-18 15:28 ?428次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>