91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

hash算法在FPGA中的實(shí)現(xiàn)(1)

CHANBAEK ? 來源: FPGA的現(xiàn)今未 ? 作者: FPGA的現(xiàn)今未 ? 2023-09-07 17:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

FPGA的設(shè)計(jì)中,尤其是在通信領(lǐng)域,經(jīng)常會(huì)遇到hash算法的實(shí)現(xiàn)。hash算法在FPGA的設(shè)計(jì)中,它主要包括2個(gè)部分,第一個(gè)就是如何選擇一個(gè)好的hash函數(shù),減少碰撞;第二個(gè)就是如何管理hash表。本文不討論hash算法本身,僅說明hash表的管理。

原理

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

圖片

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

圖片

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

hash表構(gòu)建

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

但是事情肯定沒有這么簡單,因?yàn)橹灰衕ash的地方就有沖突。那么下一步就是要解決hash沖突的問題。

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

圖片

我們知道一個(gè)好的hash函數(shù),應(yīng)該是要盡可能地減少?zèng)_突的。如果從算法上我們證明了,我們的沖突最多不超過4次,那就有更加簡單的方案來實(shí)現(xiàn)這個(gè)hash表了。

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

圖片

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

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

圖片

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

hash表的優(yōu)化

如果我的設(shè)計(jì),要的就是速度,對資源的消耗不是很關(guān)系,那用上述的結(jié)構(gòu)即可,如果我的設(shè)計(jì)可以犧牲一點(diǎn)點(diǎn)性能,但是需要減少資源的消耗,怎么辦呢?

我們可以把hash桶的內(nèi)部結(jié)構(gòu)修改下,由拼位寬改成拼深度,如下圖所示:

圖片

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

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

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

圖片

總結(jié)

hash表的設(shè)計(jì),需要兼顧資源和性能問題。主要的考慮點(diǎn)就是充分利用BRAM 的特性來實(shí)現(xiàn)資源和性能的平衡。

圖片

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

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

    關(guān)注

    1660

    文章

    22406

    瀏覽量

    636108
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    6389

    瀏覽量

    140036
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4417

    瀏覽量

    67494
  • Hash算法
    +關(guān)注

    關(guān)注

    0

    文章

    43

    瀏覽量

    7657
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    FPGA光纖互感器與行波測距系統(tǒng)的應(yīng)用研究

    光纖互感器與行波故障測距是電力系統(tǒng)兩類重要的先進(jìn)測量技術(shù),這兩類系統(tǒng)均需要對高速變化的信號進(jìn)行精確采樣、實(shí)時(shí)處理并實(shí)現(xiàn)裝置間高精度時(shí)間同步。FPGA憑借其硬件并行處理能力和確定性時(shí)序在其
    的頭像 發(fā)表于 01-13 17:56 ?304次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>在</b>光纖互感器與行波測距系統(tǒng)<b class='flag-5'>中</b>的應(yīng)用研究

    SM4算法實(shí)現(xiàn)分享(一)算法原理

    ,Xi、Yi、rki為字,i=0,1,2,…,31。則本算法的加密實(shí)現(xiàn)為: 本算法的解密實(shí)現(xiàn)與加密
    發(fā)表于 10-30 08:10

    復(fù)雜的軟件算法硬件IP核的實(shí)現(xiàn)

    Compiler)將算法編譯轉(zhuǎn)化為可綜合的 Verilog 文本,進(jìn)而通過 FPGA 硬件上實(shí)現(xiàn)算法
    發(fā)表于 10-30 07:02

    AES加解密算法邏輯實(shí)現(xiàn)及其蜂鳥E203SoC上的應(yīng)用介紹

    這次分享我們會(huì)簡要介紹AES加解密算法的邏輯實(shí)現(xiàn),以及如何將AES算法做成硬件協(xié)處理器集成蜂鳥E203 SoC上。 AES算法介紹 AE
    發(fā)表于 10-29 07:29

    如何利用Verilog HDLFPGA實(shí)現(xiàn)SRAM的讀寫測試

    本篇將詳細(xì)介紹如何利用Verilog HDLFPGA實(shí)現(xiàn)SRAM的讀寫測試。SRAM是一種非易失性存儲(chǔ)器,具有高速讀取和寫入的特點(diǎn)。FPGA
    的頭像 發(fā)表于 10-22 17:21 ?4337次閱讀
    如何利用Verilog HDL<b class='flag-5'>在</b><b class='flag-5'>FPGA</b>上<b class='flag-5'>實(shí)現(xiàn)</b>SRAM的讀寫測試

    PathFinderFPGA的角色與缺陷

    自 1990 年代末以來,PathFinder 一直是 FPGA 布線(routing)階段的主力算法,為設(shè)計(jì)工具提供“能連通又不重疊”的路徑規(guī)劃方案。
    的頭像 發(fā)表于 10-15 10:44 ?509次閱讀
    PathFinder<b class='flag-5'>在</b><b class='flag-5'>FPGA</b><b class='flag-5'>中</b>的角色與缺陷

    25年11月上海FPGA算法實(shí)現(xiàn)與應(yīng)用技術(shù)高級研修分享

    設(shè)計(jì)仿真能力。   深入學(xué)習(xí)數(shù)據(jù)流,不僅是算法FPGA&DSP設(shè)計(jì)者的需求,對于從事接口設(shè)計(jì)工作、軟件配置工作、系統(tǒng)測試工作,項(xiàng)目管理工作的同事,也同樣有非常重要的意義。實(shí)際工作
    發(fā)表于 10-11 11:55

    基于FPGA實(shí)現(xiàn)FOC算法之PWM模塊設(shè)計(jì)

    哈嘍,大家好,從今天開始正式帶領(lǐng)大家從零到一,FPGA平臺(tái)上實(shí)現(xiàn)FOC算法,整個(gè)算法的框架如下圖所示,如果大家對
    的頭像 發(fā)表于 07-17 15:21 ?3484次閱讀
    基于<b class='flag-5'>FPGA</b><b class='flag-5'>實(shí)現(xiàn)</b>FOC<b class='flag-5'>算法</b>之PWM模塊設(shè)計(jì)

    FPGA機(jī)器學(xué)習(xí)的具體應(yīng)用

    ,越來越多地被應(yīng)用于機(jī)器學(xué)習(xí)任務(wù)。本文將探討 FPGA 機(jī)器學(xué)習(xí)的應(yīng)用,特別是加速神經(jīng)網(wǎng)絡(luò)推理、優(yōu)化
    的頭像 發(fā)表于 07-16 15:34 ?2883次閱讀

    基于Matlab與FPGA的雙邊濾波算法實(shí)現(xiàn)

    前面發(fā)過中值、均值、高斯濾波的文章,這些只考慮了位置,并沒有考慮相似度。那么雙邊濾波來了,既考慮了位置,有考慮了相似度,對邊緣的保持比前幾個(gè)好很多,當(dāng)然實(shí)現(xiàn)上也是復(fù)雜很多。本文將從原理入手,采用Matlab與FPGA設(shè)計(jì)實(shí)現(xiàn)雙邊
    的頭像 發(fā)表于 07-10 11:28 ?4557次閱讀
    基于Matlab與<b class='flag-5'>FPGA</b>的雙邊濾波<b class='flag-5'>算法</b><b class='flag-5'>實(shí)現(xiàn)</b>

    基于FPGA的壓縮算法加速實(shí)現(xiàn)

    本設(shè)計(jì),計(jì)劃實(shí)現(xiàn)對文件的壓縮及解壓,同時(shí)優(yōu)化壓縮中所涉及的信號處理和計(jì)算密集型功能,實(shí)現(xiàn)對其的加速處理。本設(shè)計(jì)的最終目標(biāo)是證明充分并行化的硬件體系結(jié)構(gòu)
    的頭像 發(fā)表于 07-10 11:09 ?2387次閱讀
    基于<b class='flag-5'>FPGA</b>的壓縮<b class='flag-5'>算法</b>加速<b class='flag-5'>實(shí)現(xiàn)</b>

    關(guān)于RK3568核心板可以下載固件成功,但是啟動(dòng)失敗,串口打印日志顯示:HASH(c): error Invalid DTB hash !

    DTB: rk3568-atk-evb1-mipi-dsi-1080p#_saradc_ch2=341.dtb HASH(c): error Invalid DTB hash ! No find valid DTB, ret=-
    發(fā)表于 07-01 09:42

    PLL技術(shù)FPGA的動(dòng)態(tài)調(diào)頻與展頻功能應(yīng)用

    隨著現(xiàn)代電子系統(tǒng)的不斷發(fā)展,時(shí)鐘管理成為影響系統(tǒng)性能、穩(wěn)定性和電磁兼容性(EMI)的關(guān)鍵因素之一。FPGA設(shè)計(jì),PLL因其高精度、靈活性和可編程性而得到廣泛應(yīng)用,本文將深入探討PLL技術(shù)
    的頭像 發(fā)表于 06-20 11:51 ?2622次閱讀
    PLL技術(shù)<b class='flag-5'>在</b><b class='flag-5'>FPGA</b><b class='flag-5'>中</b>的動(dòng)態(tài)調(diào)頻與展頻功能應(yīng)用

    進(jìn)群免費(fèi)領(lǐng)FPGA學(xué)習(xí)資料!數(shù)字信號處理、傅里葉變換與FPGA開發(fā)等

    ~ 01、數(shù)字信號處理的FPGA實(shí)現(xiàn) 旨在講解前端數(shù)字信號處理算法的高效實(shí)現(xiàn)。首先概述了當(dāng)前的FPGA技術(shù)、器件以及用于設(shè)計(jì)最先進(jìn)DSP系
    發(fā)表于 04-07 16:41

    FPGA開發(fā)任務(wù)

    我想請人幫我開發(fā)一款基于FPGA的產(chǎn)品,把我寫好MATLAB代碼固化FPGA,實(shí)現(xiàn)算法加速和
    發(fā)表于 03-15 10:19