首页 > 技术知识 > 正文

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

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

优劣势

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

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

软硬件结合的经典设计

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

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

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

审核编辑:彭静

猜你喜欢