排序算法在FPGA上的实现

电子说

1.2w人已加入

描述

做项目实现某个feature时经常会考虑一个问题,硬件实现还是软件实现,还是软硬件结合。

要想回答好这个问题,就要理解硬件和软件的各自的优劣势。

优劣势

软件程序其实是运行在CPU上的,所有的程序都要分解为一条一条的机器指令去运行。CPU作为一种通用的架构,它最大的优势自然也是通用,擅长复杂的逻辑和运算操作。但也因为其通用的架构,使得CPU在某些特定的应用场景性能不足,比如视频渲染,不然也不会出现GPU。

FPGA则恰恰相反。FPGA非常擅长并行计算,同时能够提供极低的延迟。但是却不擅长复杂的逻辑和数学运算操作,比如调度算法,甚至某些看起来比较简单的排序算法在FPGA上实现也比较麻烦。

软硬件结合的经典设计

计算机系统中的地址翻译可以看做一个经典设计。

地址翻译是将虚拟地址转换为物理地址。这个过程是通过查找表(页表)的方式实现的。页表中存储着物理地址,那么要存储哪些物理地址,哪个物理地址存储在哪一个表项,是一个比较复杂的逻辑,这个过程是通过操作系统即软件来实现的。当程序或者进程在运行期间需要访问某一个地址,我们希望用最快的速度来实现地址翻译,这个过程用到的便是硬件,硬件读取页表的内容获得物理地址即可。

最后回到最初的问题,用硬件还是用软件,一句话总结,复杂的对性能要求较低的交给软件,简单的性能要求高的交给硬件。  

      审核编辑:彭静

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分