我们经常说一个功能用软件实现还是用硬件实现,实际上的区别是硬件实现不需要(并不一定是完全不需要,也有可能是简化了其中的使得原来几个指令才能达到的效果现在用硬件设计上改成一条指令实现)预取指、取指的一系列操作,而只是利用硬件本身的结构来实现这个算法,如一个硬件乘加器,你只要按规定将数据输入,硬件乘加器直接经过一系列组合逻辑(和一些时序逻辑)实现了一次乘加的功能。但如果用软件实现,则意味着你需要(通用)处理器预取指、取指、译指、执行的操作,如乘加器,需要程序总线取指多次加法操作来实现一次乘加操作,硬件实现与软件实现类似于ASIC和通用CPU的区别。举例如中科院的DianNao、DaDianNao、PuDianNao、DianNaoYu等的工作,从处理器体系结构上的改进也算是用硬件实现神经网络加速,而不是采用在传统通用CPU、GPU上采取分布式计算或者并行计算的软件设计来加速神经网络计算。
固件和软件的不同是固件与底层硬件打交道,而软件大多数不用考虑硬件结构,在写固件时你需要了解硬件的结构,比如显示功能,而软件则是不怎么需要考虑硬件的差别的,直接调用下一层开放的API即可。固件为硬件而服务,驱动(软件)为操作系统及应用服务。
硬件、固件和软件
最新推荐文章于 2024-06-12 22:54:39 发布