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

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

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

3天內不再提示

hash算法在FPGA中的實現(1)

CHANBAEK ? 來源: FPGA的現今未 ? 作者: FPGA的現今未 ? 2023-09-07 17:01 ? 次閱讀

FPGA的設計中,尤其是在通信領域,經常會遇到hash算法的實現。hash算法在FPGA的設計中,它主要包括2個部分,第一個就是如何選擇一個好的hash函數,減少碰撞;第二個就是如何管理hash表。本文不討論hash算法本身,僅說明hash表的管理。

原理

先對齊本文中要說明的幾個概況,如下圖所示,hash函數的輸入稱為key,hash函數的輸出,稱為hash值,或者index。以上稱呼可能不標準,但是不影響對方案的理解即可。

圖片

hash算法的實現可以用一個很簡單的圖來表示,如下圖所示,對輸入的key做hash運算后,得到index,以index作為地址,把key值存入到其index對應的hash表中。同理,在查詢的時候,也是先對key計算hash值,然后查hash表,如果hash表無效,說明沒有命中,如果有效,則判斷hash表中的key和輸入的key是否相等,相等則為命中。

圖片

舉2個例子簡單說明下,假定key5,計算出index = 0,但是add0為空,所以key5沒有命中,或者說,hash表中沒有key5這個元素。假定key6,計算hash后得到index = 3,hash表addr3中有數據,但是存放在addr3中的數據為key4,不等于key6,所以key6也沒有命中。

hash表構建

上圖hash表的示意圖其實已經說明了一個簡單的hash表的構建,在FPGA內部,常用BRAM來存放一個hash表,上圖所示hash表的深度為N,每個hash表中存放一個key。假如key的位寬為50個bit,hash后的index位寬為9bit。那么hash表就需要一個64bit*512表項,消耗1個M36K(以xilinx的資源為例)。

但是事情肯定沒有這么簡單,因為只要有hash的地方就有沖突。那么下一步就是要解決hash沖突的問題。

解決hash沖突最常見的方案就是hash鏈表,如下圖所示,key1、key5、key7具有相同的hash值,可以通過一個鏈表的形式將他們串聯在一起。這種方案在軟件是可能是非常好實現的,但是在FPGA里實現可能就比較難了,比如鏈表的最大深度為多少呢?每個hash桶的鏈表是單獨存放還是所有的存放在一起呢?

圖片

我們知道一個好的hash函數,應該是要盡可能地減少沖突的。如果從算法上我們證明了,我們的沖突最多不超過4次,那就有更加簡單的方案來實現這個hash表了。

我們把hash表做一個改進,如下圖所示,我們每個hash桶中,不再是存放一個key,而是最多存放4個key,也就是不用鏈表來解決hash沖突問題。

圖片

這樣做的好處有2個,一個是沒有了對鏈表的處理,比較簡單,第二個就是處理速度快,一次讀操作就把具有相同hash值的所有key值全部讀出來進行比較。那這種方案在FPGA的ram中如何實現呢?還是以key的寬度為50bit,index的位寬為9bit為例。

一個桶的內部結果如下圖所示,每個key還需要1bit指示是否有效,那么4個key需要514 = 204bit,用一個216bit512的BRAM即可,消耗2.5個M36K。

圖片

如果key的位寬非常大,比如是五元組,一共104bit,如果用上述的方案,那就是105*4 = 420bit,那就需要6個M36K來存放。可見,key的位寬越大,消耗的資源就越多。

hash表的優(yōu)化

如果我的設計,要的就是速度,對資源的消耗不是很關系,那用上述的結構即可,如果我的設計可以犧牲一點點性能,但是需要減少資源的消耗,怎么辦呢?

我們可以把hash桶的內部結構修改下,由拼位寬改成拼深度,如下圖所示:

圖片

分別以50bit和104bit的key為例,對于50bit的key,需要的存儲為64bit5124,需要4個M36K。對于104bit的key,需要的存儲為108bit5124,需要6塊。看似需要的緩存并沒有減少,有的情況下甚至增加了。

如果hash值是8bit了,那情況就不一樣了。因為hash值為8bit和9bit的時候,BRAM的深度的增加,并沒有帶來額外的資源消耗,但是表項的寬度卻只有原來的一半,資源也就可以減少一半。比如原來hash表位 288bit256,需要消耗4個M36K,采用上述的優(yōu)化方案后,表項變成144512,只需要消耗2個M36K。

除了上述的對hash桶的改進外,有時候可以同時拼寬度和深度,如下圖所示:

圖片

總結

hash表的設計,需要兼顧資源和性能問題。主要的考慮點就是充分利用BRAM 的特性來實現資源和性能的平衡。

圖片

當然,hash表也可以不放在BRAM中,存放在DDR里,那就演變成另外一個話題,如何高效地讀寫DDR中的hash表了。

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

    關注

    1629

    文章

    21736

    瀏覽量

    603429
  • 通信
    +關注

    關注

    18

    文章

    6032

    瀏覽量

    135995
  • 函數
    +關注

    關注

    3

    文章

    4331

    瀏覽量

    62622
  • Hash算法
    +關注

    關注

    0

    文章

    43

    瀏覽量

    7383
收藏 人收藏

    評論

    相關推薦

    FPGA 實時信號處理應用 FPGA圖像處理的優(yōu)勢

    優(yōu)勢之一是其并行處理能力。與傳統的CPU或GPU相比,FPGA可以同時執(zhí)行多個操作,這在圖像處理尤為重要,因為圖像處理通常涉及大量的并行數據流和復雜的算法。例如,進行圖像濾波或邊緣
    的頭像 發(fā)表于 12-02 10:01 ?524次閱讀

    FPGA 人工智能的應用

    FPGA是一種可編程的半導體設備,它允許工程師在生產后重新配置硬件邏輯。與傳統的ASIC(應用特定集成電路)相比,FPGA具有更高的靈活性,可以根據不同的應用需求進行編程和重配置。這種靈活性使得FPGA成為
    的頭像 發(fā)表于 12-02 09:53 ?490次閱讀

    FPGA物聯網的應用前景

    FPGA(現場可編程門陣列)物聯網的應用前景非常廣闊,其高度的靈活性和可編程性使其成為物聯網應用不可或缺的核心組件。以下是對FPGA
    的頭像 發(fā)表于 10-25 09:22 ?478次閱讀

    FPGA圖像處理領域的優(yōu)勢有哪些?

    單元和可編程互聯線,可以實現高度并行的數據處理。圖像處理任務,如圖像預處理、特征提取和圖像識別等,需要大量的計算任務。FPGA可以通過并行處理技術,將這些任務同時執(zhí)行,從而大大提高
    發(fā)表于 10-09 14:36

    為什么FPGA屬于硬件,還需要搞算法

    嗎?單純搞算 法就行了嗎?一臉懵求解答。 A:FPGA 屬于硬件,但其功能的實現離不開算法FPGA 雖然是硬件,但它具有可編程性,要
    發(fā)表于 09-09 16:54

    如何在FPGA實現按鍵消抖

    FPGA(現場可編程門陣列)實現按鍵消抖是一個重要的設計環(huán)節(jié),特別是處理用戶輸入時,由于物理按鍵的機械特性和電氣特性,按鍵在按下和釋放
    的頭像 發(fā)表于 08-19 18:15 ?1910次閱讀

    FPGA自動駕駛領域有哪些應用?

    FPGA自動駕駛領域的主要應用: 一、感知算法加速 圖像處理:自動駕駛需要通過攝像頭獲取并識別道路信息和行駛環(huán)境,這涉及到大量的圖像處理任務。
    發(fā)表于 07-29 17:09

    FPGA人工智能的應用有哪些?

    和安全的云計算和網絡服務。 三、具體應用場景 圖像分類:圖像分類任務FPGA可以承擔前置處理、圖像卷積、全連接等任務。通過FPGA的并行計算能力,可以大幅提高
    發(fā)表于 07-29 17:05

    如何在FPGA實現狀態(tài)機

    FPGA(現場可編程門陣列)實現狀態(tài)機是一種常見的做法,用于控制復雜的數字系統行為。狀態(tài)機能夠根據當前的輸入和系統狀態(tài),決定下一步的動作和新的狀態(tài)。這里,我們將詳細探討如何在
    的頭像 發(fā)表于 07-18 15:57 ?603次閱讀

    FPGA實現什么樣的算法

    FPGA功能如此強大,請問用FPGA實現或者比較適合實現什么樣的算法
    發(fā)表于 05-26 20:18

    怎么labview FPGA實現離散傳遞函數的表達?

    我只知道有一個這個控件,叫直接型離散傳遞函數實現,但是我輸入離散傳遞函數的系數之后,他的輸出有問題。我再非FPGA端嘗試使用相同的系數進行仿真,輸出是沒有問題的。我不知道前面的問題出在哪里,或者說還有沒有其他的方法實現傳遞函數的
    發(fā)表于 05-09 11:43

    STM32F439的HASH模塊DMA傳輸計算問題求解

    項目中需要使用439的的HASH模塊計算文件的MD5值,使用的DMA方式,為了提高CPU效率,讓其他任務DMA傳輸數據、硬件計算MD5期間可以得到運行,DMA的數據來自FMC外擴的SDRAM
    發(fā)表于 04-19 06:42

    中國鐵路網的Dijkstra算法實現案例

    該項目分別在DE1-SOC開發(fā)板的FPGA和HPS上實現了Dijkstra算法,能在中國鐵路網中找到兩站之間的最短距離和路線。
    的頭像 發(fā)表于 04-09 11:10 ?597次閱讀
    中國鐵路網的Dijkstra<b class='flag-5'>算法</b><b class='flag-5'>實現</b>案例

    怎么用FPGA算法 如何在FPGA實現最大公約數算法

    FPGA算法的優(yōu)點在于它們可以提供高度的定制化和靈活性,使得算法可以根據實際需求進行優(yōu)化和調整。此外,FPGA還可以實現硬件加速,提供比傳統
    的頭像 發(fā)表于 01-15 16:03 ?2320次閱讀

    FPGA圖像處理之CLAHE算法

    FPGA圖像處理--CLAHE算法(一)中介紹了為啥要用CLAHE算法來做圖像增強。
    的頭像 發(fā)表于 01-04 12:23 ?2539次閱讀
    <b class='flag-5'>FPGA</b>圖像處理之CLAHE<b class='flag-5'>算法</b>
    主站蜘蛛池模板: 狠婷婷| 视频网站黄| 免费在线观看视频| 伊人婷婷涩六月丁香七月| 日本不卡免费新一区二区三区| 国产欧美日韩电影| 国产在线操| 99久久免费中文字幕精品| 欧美性video精品| 天天色天天综合| 水果视频色版| 欧美高清成人videosex| 天天射天天干天天操| 亚洲一区二区三区免费| 三级在线观看视频网站| aaa在线观看高清免费| 最新欧美伦理网| 四虎永久网址影院| 在线视频久久| 亚洲男人的天堂久久香蕉网| 日本三级带日本三级带黄首页| 182福利视频| 91日本在线观看亚洲精品| 色视频在线| 窝窝午夜看片| 久久久久久午夜精品| 久草免费在线播放| 97天天做天天爱夜夜爽| 婷婷激情视频| 亚洲午夜久久| 免费的黄视频| 国产美女在线观看| 国产黄色片在线观看| 青草青青视频| 久久天天综合| 亚洲a毛片| 午夜免费看视频| 搞黄视频网站| www.4hu影院| 久久精品国产亚洲婷婷| 国产三级精品在线观看|