同样一个算法,用硬件实现和使用软件实现的区别很大,在实现难度和效率上都天差地别。
算法硬件实现和软件实现的区别?
???? CPU一般分为两种,一种是专用CPU,另一种是通用CPU,电脑上的CPU就是一种通用CPU,它是基于通用任务型的计算来设计的,电脑功能全面,处理网页,做数学运算都能处理,特点是我们在写代码时用高级编程语言C/C++,Phthon等来实现我们的功能。比如一个图像压缩算法,实现好之后需要把C/C++,Phthon编译成通用CPU能够执行的二进制文件,交给CPU来执行,指令是一个clock(时钟)一个clock顺序执行,一个时钟只能执行一条指令。专用CPU的好处是它的算法都是在硬件层面直接实现,并行执行任务速度快。举个栗子,五个任务a,b,c,d,e,通用CPU软件实现的话,五个任务是串行顺序执行,a——b——c——d——e,一般不能同时来执行操作(不考虑指令流水线),硬件实现的话,只要芯片足够大,可能直接一个时钟就可以把五个操作运行完。硬件实现比较大的限制是很多操作可能有很多中间数据需要暂存,需要寄存在存储器里,涉及到存储器的存取操作,不能跨越时钟(当前这个时钟进行了一个操作,得到一个中间值,下一个时钟需要使用就寄存在寄存器里,必须等到下一个时钟来时才能把这个值从寄存器取出来,这就是硬件实现的一个限制),如果没有这种限制的话,只要你的数据总线足够大,可以把很多操作放到一个时钟并行执行,没有数据依赖的话直接就执行完了,这种情况速度就会比通用CPU快很多,一般专门为某种功能设计,把需要处理的数据传送给它,很快就能完成特定的功能。通用CPU实现需要先用高级编程语言先实现,再一步一步执行操作,要经过很多个CPU的时钟。
神马是硬件算法?
定义
硬件算法这个术语是随着大规模集成电路的发展而出现的,但最初不过是逻辑设计的同义语,它描述逻辑设计问题的解决步骤和实现方法。随着逻辑设计的规模越来越大,越来越复杂,硬件实现本身又具有较大的灵活性和自由度,硬件算法作为单独的研究对象出现在设计自动化领域。?
????? 硬件算法则是以硬件的物理实现为前提。对于一个具体的设计问题,如何实现所要求的的功能,应该由哪些部件组成,如何组织各个部件,各个部件之间应有什么样的相互关系,如何实现对各个部件的控制等,用形式的方法把实现方法描述出来,就是硬件算法。?
硬件算法涉及到数字系统的各个设计级别,上至系统结构,下至门级。硬件算法的研究,必将使硬件设计更加科学化、合理化、形式化。它有利于实现系统设计到逻辑设计的自动化,有利于将现有的软件系统做成专用硬件。今后,硬件算法的研究必将在设计自动化系统的研究领域中占据重要的地位。
设计与分析
与软件算法相类似,解决同一个问题,可以有不同的算法,又可以有不同的实现方法。比如我们要设计一个乘法器,可以有串行进位、位移加法的算法,并行进位、位移相加的算法,阵列相乘,冗余二进制并行算法等。而同一算法又可以用组合逻辑、PLA、单元阵列、积木式等各种电路结构来实现,芯片类型还可以有TTL、MOS、CMOS等等。
硬件算法的设计和分析撇开具体电路的实现,仅对于较抽象的功能实现方法进行研究。一种情况是,在给定硬件实现环境的条件下要求找出适合于该实现环境的最好的硬件算法。另一种情况是,对于一个带有普遍性的实际设计问题,比较其多种不同的算法,分析它们的优缺点并研究新的效率更高的算法。电路实现可以从中选择最好的最实用的的一种。
描述方法
与软件算法类似,硬件算法也有各种描述方法:
(1)自然语言;
(2)数学模型;
(3)硬件描述语言;
(4)流程图;
(5)逻辑图。
硬件算法与逻辑设计
两个方面的研究
在逻辑设计中,硬件算法的研究有两方面:
(1)为满足逻辑设计要求、选择所用的计算模型、开发实际系统而预先设计硬件算法;
(2)对某个问题的解决方法做原理性研究,分析评价已有算法,并以实现化为目的研究效率更高的硬件算法。
与软件算法比较
硬件算法与软件在形式上没有什么不同。实际上许多硬件算法都是从软件算法演变而来的,特别是软件硬件化的专用硬件,大都是以软件算法为基础的。
分析与评价
在硬件设计中要求有尽量高的性能和可靠性,尽量低的开销,因而要求能够对硬件算法的性能作定量的分析和评价。
在评价一个软件算法时,主要考虑计算时间和占用空间(存储量)。在硬件算法中同样要考虑计算时间和占用空间的问题,不过计算时间主要表现在输入端到输出端的延迟时间,而占用空间主要指芯片所需的面积,它主要取决于元件个数,每个元件占的面积,以及线长、线宽与间隔等。
|