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

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

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

排序算法在FPGA上的實現(xiàn)

lhl545545 ? 來源:FPGA開發(fā)之路 ? 作者:FPGA開發(fā)之路 ? 2022-09-05 10:31 ? 次閱讀

做項目實現(xiàn)某個feature時經(jīng)常會考慮一個問題,硬件實現(xiàn)還是軟件實現(xiàn),還是軟硬件結(jié)合。

要想回答好這個問題,就要理解硬件和軟件的各自的優(yōu)劣勢。

優(yōu)劣勢

軟件程序其實是運行在CPU上的,所有的程序都要分解為一條一條的機器指令去運行。CPU作為一種通用的架構(gòu),它最大的優(yōu)勢自然也是通用,擅長復雜的邏輯和運算操作。但也因為其通用的架構(gòu),使得CPU在某些特定的應用場景性能不足,比如視頻渲染,不然也不會出現(xiàn)GPU。

FPGA則恰恰相反。FPGA非常擅長并行計算,同時能夠提供極低的延遲。但是卻不擅長復雜的邏輯和數(shù)學運算操作,比如調(diào)度算法,甚至某些看起來比較簡單的排序算法在FPGA上實現(xiàn)也比較麻煩。

軟硬件結(jié)合的經(jīng)典設(shè)計

計算機系統(tǒng)中的地址翻譯可以看做一個經(jīng)典設(shè)計。

地址翻譯是將虛擬地址轉(zhuǎn)換為物理地址。這個過程是通過查找表(頁表)的方式實現(xiàn)的。頁表中存儲著物理地址,那么要存儲哪些物理地址,哪個物理地址存儲在哪一個表項,是一個比較復雜的邏輯,這個過程是通過操作系統(tǒng)即軟件來實現(xiàn)的。當程序或者進程在運行期間需要訪問某一個地址,我們希望用最快的速度來實現(xiàn)地址翻譯,這個過程用到的便是硬件,硬件讀取頁表的內(nèi)容獲得物理地址即可。

最后回到最初的問題,用硬件還是用軟件,一句話總結(jié),復雜的對性能要求較低的交給軟件,簡單的性能要求高的交給硬件。

審核編輯:彭靜

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

    關(guān)注

    1625

    文章

    21636

    瀏覽量

    601315
  • 硬件
    +關(guān)注

    關(guān)注

    11

    文章

    3224

    瀏覽量

    66070
  • 排序算法
    +關(guān)注

    關(guān)注

    0

    文章

    52

    瀏覽量

    10047

原文標題:硬件(FPGA)vs 軟件

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

收藏 人收藏

    評論

    相關(guān)推薦

    Python實現(xiàn)的常見內(nèi)部排序算法

    排序算法可以分為內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序,而外部
    發(fā)表于 07-06 12:35 ?336次閱讀
    Python<b class='flag-5'>實現(xiàn)</b>的常見內(nèi)部<b class='flag-5'>排序</b><b class='flag-5'>算法</b>

    FPGA排序-冒泡排序介紹

    排序算法是圖像處理中經(jīng)常使用一種算法,常見的排序算法有插入排序、希爾
    發(fā)表于 07-17 10:12 ?1052次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>排序</b>-冒泡<b class='flag-5'>排序</b>介紹

    十大排序算法總結(jié)

    排序算法是最經(jīng)典的算法知識。因為其實現(xiàn)代碼短,應該廣,面試中經(jīng)常會問到排序
    的頭像 發(fā)表于 12-20 10:39 ?1068次閱讀

    求助-FPGA實現(xiàn)retinex算法

    求助大神,FPGA實現(xiàn)retinex算法 。。。
    發(fā)表于 05-08 23:29

    基于FPGA的中值濾波算法實現(xiàn)

    ` 本帖最后由 ninghechuan 于 2017-9-1 07:04 編輯 在這一篇開篇之前,我需要解決一個問題,一篇我們實現(xiàn)了基于FPGA的均值濾波算法
    發(fā)表于 09-01 07:04

    算法的原理是什么?基數(shù)排序是如何實現(xiàn)的?

    算法的原理是什么?基數(shù)排序是如何實現(xiàn)的?有哪幾種方法可以實現(xiàn)基數(shù)排序?
    發(fā)表于 07-05 07:42

    C語言實現(xiàn)常用排序算法是什么?

    C語言實現(xiàn)常用排序算法是什么?
    發(fā)表于 10-19 06:41

    雷達視頻積累算法FPGA實現(xiàn)

    雷達視頻積累算法FPGA實現(xiàn) 1 引 言 由于雷達所處的環(huán)境的復雜性,除了地物、云雨、鳥群等干擾外,還可能來自臨近的雷達異步干擾、
    發(fā)表于 11-09 16:08 ?740次閱讀
    雷達視頻積累<b class='flag-5'>算法</b><b class='flag-5'>在</b><b class='flag-5'>FPGA</b><b class='flag-5'>上</b>的<b class='flag-5'>實現(xiàn)</b>

    FPGA實現(xiàn)CRC算法的程序

    Xilinx FPGA工程例子源碼:FPGA實現(xiàn)CRC算法的程序
    發(fā)表于 06-07 15:07 ?28次下載

    實用的排序算法 - 交換排序

    實用的排序算法 - 交換排序
    的頭像 發(fā)表于 03-20 09:53 ?1712次閱讀
    實用的<b class='flag-5'>排序</b><b class='flag-5'>算法</b> -  交換<b class='flag-5'>排序</b>

    排序算法分享:歸并排序說明

    我們今天繼續(xù)給大家分享排序算法里面的另外一種排序算法:歸并排序!
    的頭像 發(fā)表于 12-24 14:34 ?748次閱讀

    淺談希爾排序算法思想以及如何實現(xiàn)

    01 希爾排序算法思想 希爾排序也是一種插入排序,是簡單插入排序改進后的一個更高效版本,同時也是首批突破O(n^2)
    的頭像 發(fā)表于 06-30 10:05 ?1996次閱讀

    php版冒泡排序是如何實現(xiàn)的?

    無論學習哪一種編程語言,進行算法方面的訓練時都繞不開“排序”。排序進階編程中有非常廣泛的應用,要想成為編程高手,排序
    的頭像 發(fā)表于 01-20 10:39 ?881次閱讀
    php版冒泡<b class='flag-5'>排序</b>是如何<b class='flag-5'>實現(xiàn)</b>的?

    怎么用FPGA算法 如何在FPGA實現(xiàn)最大公約數(shù)算法

    FPGA算法是指在FPGA(現(xiàn)場可編程門陣列)實現(xiàn)算法。
    的頭像 發(fā)表于 08-16 14:31 ?2806次閱讀
    怎么用<b class='flag-5'>FPGA</b>做<b class='flag-5'>算法</b> 如何在<b class='flag-5'>FPGA</b><b class='flag-5'>上</b><b class='flag-5'>實現(xiàn)</b>最大公約數(shù)<b class='flag-5'>算法</b>

    FPGA實現(xiàn)雙調(diào)排序算法的探索與實踐

    雙調(diào)排序(BitonicSort)是數(shù)據(jù)獨立(Data-independent)的排序算法,即比較順序與數(shù)據(jù)無關(guān),特別適合并行執(zhí)行。了解雙調(diào)排序
    發(fā)表于 03-14 09:50 ?526次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>實現(xiàn)</b>雙調(diào)<b class='flag-5'>排序</b><b class='flag-5'>算法</b>的探索與實踐