在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

隊列管理電路-上篇

jf_78858299 ? 來源:芯工阿文 ? 作者:芯工阿文 ? 2023-01-21 16:49 ? 次閱讀

在數(shù)字芯片設計中,幾乎所有模塊都會涉及到隊列管理。輸入輸出的管理、不同數(shù)據(jù)流的調(diào)度、亂序數(shù)據(jù)的重排序、不同模塊的同步處理、資源管理,等等,均會涉及到隊列管理邏輯。如何選擇合適的硬件邏輯,對模塊的微架構有較大的影響,需要基于具體需求做綜合權衡后再做選擇。本文簡單羅列幾種隊列管理邏輯,均是個人曾經(jīng)實現(xiàn)過的。

1 最簡單的隊列-FIFO

First In First Out,用于輸入輸出之間的緩沖,吸收輸入側的突發(fā)流量。實現(xiàn)也比較簡單,深度固定的環(huán)形buffer,使用讀寫指針進行管理。需要注意的是,讀寫指針的管理,F(xiàn)IFO為空和FIFO為滿,讀寫指針均是相等的,需使用另外的標號進行處理。也有其余的實現(xiàn)方式,比如移位寄存器

圖片

使用SpinalHDL實現(xiàn)FIFO的代碼如下。輸入輸出的push/pop,使用了valid/ready握手的Stream接口;使用Mem定義環(huán)形buffer,pushPtr/popPtr分別對應讀寫指針;特別關注risingOccupancy信號,push和pop沒有同時發(fā)生時,更新為push,該信號可用于標記FIFO的空滿狀態(tài)。讀寫指針相等且該信號為低,表示FIFO為空;讀寫指針相等且該信號為高,表示FIFO為滿。

// spinal/lib/Stream.scala
val io = new Bundle {
val push = slave Stream (dataType)
val pop = master Stream (dataType)
val flush= in Bool() default(False)
val occupancy = out UInt (log2Up(depth + 1) bits)
val availability = out UInt (log2Up(depth + 1) bits)
}
val ram = Mem(dataType, depth)
val pushPtr = Counter(depth)
val popPtr = Counter(depth)
val ptrMatch = pushPtr === popPtr
val risingOccupancy = RegInit(False)
val pushing = io.push.fire
val popping = io.pop.fire
val empty = ptrMatch & !risingOccupancy
val full = ptrMatch & risingOccupancy

io.push.ready := !full
io.pop.valid := !empty & !(RegNext(popPtr.valueNext === pushPtr, False) & !full) //mem write to read propagation
io.pop.payload := ram.readSync(popPtr.valueNext)

when(pushing =/= popping) {
risingOccupancy := pushing
}
when(pushing) {
ram(pushPtr.value) := io.push.payload
pushPtr.increment()
}
when(popping) {
popPtr.increment()
}

2 共享Buffer的多隊列FIFO

考慮一個場景,輸入的請求需要分發(fā)至不同的輸出側,下游存在反壓。簡單實現(xiàn),基于不同的輸出分別設置FIFO,但可能存在資源浪費,某些數(shù)據(jù)流場景FIFO的利用率不高,尤其是在數(shù)據(jù)位寬較大的場景。

共享Buffer的多隊列FIFO,每個隊列的FIFO還是按照簡單隊列進行管理,基于每個隊列管理讀寫指針。但是,不再使用環(huán)形Buffer,每個buffer entry記錄其隊列號、隊列指針和Payload,如下圖所示。對于Payload位寬較小的場景,收益不大,若存在大位寬時,可有效提升Buffer的利用率。

圖片

將數(shù)據(jù)寫入Buffer時,先找一個Free Entry(Vliad為低),將該數(shù)據(jù)所屬的隊列號及其對應的寫指針、Payload寫入到對應的Entry內(nèi)。讀取Buffer時,則使用隊列號和讀指針進行匹配,將命中的Entry內(nèi)容讀取出來。若讀寫指針所能描述的范圍比buffer深度大,則不需要額外的標號記錄空滿狀態(tài)。存在的問題,若buffer深度較大或隊列數(shù)量較多,隊列號和指針匹配邏輯會占用較多的資源。

3 重力FIFO

類似于排隊,從隊頭開始尋找可輸出的Entry,調(diào)度輸出并留下空位,后面的Entry再往前排,新輸入的請求則放置在隊列尾。如圖所示,存在有效數(shù)據(jù)的Entry,其前面的Entry被調(diào)度后留下空位,該Entry就像受到重力作用往下掉,因此我也稱之為重力FIFO。

圖片

該結構的問題,存在大量的移位,設想Payload位寬為32bit,深度為32,將近1kbit的寄存器在做移位處理,其功耗可想而知。但是對于一些具體場景,還是能夠帶來一些收益的,如隊列數(shù)量較大,甚至大于buffer深度;至于Payload位寬較大的場景,可考慮二次索引處理,Payload保存至另外的buffer,該結構內(nèi)的Payload Entry則緩存其索引信息。

4 Bitmap排序

先來看一個結構,深度為8的隊列,每個Entry使用8bit緩存8個Entry的狀態(tài),若該狀態(tài)信號滿足觸發(fā)條件,如全為0,則調(diào)度該Entry內(nèi)容。

Bitmap排序就是使用了這一結構,在輸入請求進入隊列后,檢查當前隊列狀態(tài),存在關聯(lián)請求的Entry位置置位為1,否則為0。若存在請求輸出之后,所有Entry狀態(tài)的對應位置均設為0。若某個Entry的狀態(tài)信號全為0,則請求調(diào)度輸出。其數(shù)據(jù)結構如下圖所示,其中0/1僅作為狀態(tài)信號的示例,并非實際場景。

圖片

該結構可以實現(xiàn)較為靈活的排序,隊列的數(shù)量幾乎不會受到限制,進入隊列的請求,也可修改其Mask Bitmap,動態(tài)刷新其先后關系。與重力FIFO類似,無需額外的數(shù)據(jù)結構保存其隊列關系,而是直接體現(xiàn)在原有結構內(nèi)。存在的問題,隊列深度會受到面積限制,面積與深度的平方成正比;另外,在動態(tài)更新Mask Bitmap之后,某些實現(xiàn)可能無法保證先后關系。

面積問題可以考慮用分級處理。如需實現(xiàn)256深度的隊列,其Mask Bitmap需要65536個寄存器實現(xiàn)Mask Bitmap。分解為8個32深度的隊列,需要的寄存器數(shù)量為8192;分解為16個16深度的隊列,寄存器數(shù)量為4096。

5 小結

隊列管理電路還有一個比較常見的實現(xiàn),鏈表。在亂序數(shù)據(jù)的重排序、資源管理等等方面,通常會用鏈表實現(xiàn),與上幾個結構相比,鏈表會復雜一些。該部分將在下篇描述。

除最簡單的FIFO之外,其余幾個都沒有代碼,如各位要有興趣,請留言,我可以再嘗試寫一些Spinal代碼實現(xiàn)。

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

    關注

    15

    文章

    1072

    瀏覽量

    55504
  • 隊列管理
    +關注

    關注

    0

    文章

    4

    瀏覽量

    6336
  • 數(shù)字芯片

    關注

    1

    文章

    115

    瀏覽量

    18727
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    NVME控制器之隊列管理模塊

    隊列管理模塊是整個NVMe Host控制器的核心模塊,該模塊實現(xiàn)了提交隊列與完成隊列管理,多隊列請求的仲裁判決等功能。
    發(fā)表于 05-03 20:19

    主動隊列管理建模及最優(yōu)控制策略

    主動隊列管理建模及最優(yōu)控制策略針對主動隊列管理(AQM)研究中缺乏系統(tǒng)的理論分析的問題,引入最優(yōu)控制理論進行分析,得到了主動隊列管理的數(shù)學模型,該模型包括兩個差分方程,分別描述隊列長度
    發(fā)表于 06-14 00:14

    FreeRTOS學習筆記(六)——隊列管理

    FreeRTOS學習筆記(六)——隊列管理
    發(fā)表于 09-28 14:07

    FreeRTOS學習筆記(六)——隊列管理

    FreeRTOS學習筆記(六)——隊列管理
    發(fā)表于 10-21 20:40

    Agilent TCP和隊列管理

    TCP和隊列管理
    發(fā)表于 10-31 09:08

    簡單羅列幾種隊列管理邏輯電路

    ,寄存器數(shù)量為4096。5 小結隊列管理電路還有一個比較常見的實現(xiàn),鏈表。在亂序數(shù)據(jù)的重排序、資源管理等等方面,通常會用鏈表實現(xiàn),與上幾個結構相比,鏈表會復雜一些。該部分將在下篇描述。除最簡單的FIFO
    發(fā)表于 08-29 14:23

    什么是鏈表?怎樣使用鏈表作為隊列管理電路

    前文聊了隊列管理的幾種典型電路,硬件邏輯簡單,代碼實現(xiàn)時容易操作。鏈表也是隊列管理的常用電路,相比前文的幾種結構,會稍微復雜一些。1 什么是鏈表在非連續(xù)、非順序的物理存儲結構上,通過指
    發(fā)表于 08-29 14:26

    不同服務類型的隊列管理及性能比較

    為提高網(wǎng)絡利用率和數(shù)據(jù)包處理速度,針對不同應用的網(wǎng)絡流量,在網(wǎng)絡拓撲結構的參數(shù)設置相同的情況下,使用NS2模擬器對瓶頸鏈路分別采用7種主動隊列管理機制進行仿真,通過
    發(fā)表于 04-09 09:46 ?11次下載

    一種改進的主動隊列管理算法

    主動隊列管理是實現(xiàn)網(wǎng)絡擁塞控制的重要技術,但是多數(shù)主動隊列管理算法如隨機早期檢(RED)都存在對參數(shù)依賴性強的問題。針對RED算法中平均隊列長度不能完全反映網(wǎng)絡擁塞狀況的
    發(fā)表于 04-13 09:08 ?14次下載

    網(wǎng)絡中常用的隊列管理方法比較

    本文主要介紹了網(wǎng)絡中常用的兩種隊列管理方法:先進先出(FIFO)和隨機提前檢測(RED),并且通過實驗比較了這兩種隊列管理方法在解決網(wǎng)絡擁塞控制方面的表現(xiàn),體現(xiàn)了研究
    發(fā)表于 05-25 11:24 ?9次下載

    主動隊列管理建模及最優(yōu)控制策略

    針對主動隊列管理(AQM)研究中缺乏系統(tǒng)的理論分析的問題,引入最優(yōu)控制理論進行分析,得到了主動隊列管理的數(shù)學模型,該模型包括兩個差分方程,分別描述隊列長度和平均隊列
    發(fā)表于 05-25 21:44 ?17次下載

    一種基于速率的公平隊列管理算法

    針對主動隊列管理算法普遍存在的公平性問題,提出基于速率的公平隊列管理算法RFED。該算法根據(jù)分組的到達速率調(diào)節(jié)丟包率,將隊列的到達速率控制在鏈路的服務速率下,根據(jù)
    發(fā)表于 10-04 14:11 ?15次下載

    傳感器網(wǎng)絡隊列管理算法DQC

    為了在保證無線傳感器網(wǎng)絡時延要求的同時最小化功率消耗,提出一種基于占空比控制和時延保證的傳感器網(wǎng)絡隊列管理算法(DQC)。該算法根據(jù)不斷變化的網(wǎng)絡條件,為了更好地控制節(jié)點占空比和隊列閾值,采用一種
    發(fā)表于 01-10 17:13 ?0次下載

    隊列管理電路-下篇

    前文聊了隊列管理的幾種典型電路,硬件邏輯簡單,代碼實現(xiàn)時容易操作。鏈表也是隊列管理的常用電路,相比前文的幾種結構,會稍微復雜一些。
    的頭像 發(fā)表于 01-21 17:11 ?982次閱讀
    <b class='flag-5'>隊列管理</b><b class='flag-5'>電路</b>-下篇

    NVME控制器之隊列管理模塊

    隊列管理模塊是整個NVMe Host控制器的核心模塊,該模塊實現(xiàn)了提交隊列與完成隊列管理,多隊列請求的仲裁判決等功能。
    的頭像 發(fā)表于 05-03 15:32 ?138次閱讀
    NVME控制器之<b class='flag-5'>隊列管理</b>模塊
    主站蜘蛛池模板: 亚洲 成人 欧美 自拍 | 你懂得网址在线观看 | 91中文在线观看 | 亚洲一级毛片免费观看 | 久久aa毛片免费播放嗯啊 | 美日韩一级 | 国产欧美日韩在线人成aaaa | 亚洲偷偷 | 午夜黄色| 日本三级中文字幕 | 欧美一区二区三区男人的天堂 | 女人张开双腿让男人桶完整 | 欧洲天堂网| 免费一级牲交毛片 | 色婷婷一区二区三区四区成人网 | 天天玩天天干 | 天天躁夜夜躁狠狠躁2021a | 免费jyzzjyzz在线播放大全 | 都市激情 亚洲 | 亚洲午夜在线视频 | 日本一区二区三区不卡在线视频 | 五月婷婷色视频 | 婷婷色在线视频 | 免免费看片 | 日本一视频一区视频二区 | 九月丁香婷婷 | 亚洲国产精品久久久久婷婷老年 | 国产福利午夜自产拍视频在线 | 一本在线免费视频 | 亚洲国产成人久久精品图片 | 另类五月| 欧美精品国产第一区二区 | 亚洲系列中文字幕一区二区 | 国产夜夜爽 | 台湾一级毛片永久免费 | 国产精品久久久久天天影视 | 亚洲三级网 | 香蕉操 | 久久99爰这里有精品国产 | 大量国产后进翘臀视频 | 久久免费看 |