随着大规模集成电路的发展和软件硬化的趋势,计算机系统的软、硬件界限已经变得模糊了。任何操作可以由软件来实现,也可由硬件来实现;任何指令的执行可以由硬件来完成,同样也可以由软件来完成。互相转化的媒介是硬件和软件的逻辑等价性。
因为现在任何操作,任何指令都既可以用软件来实现,又可以用硬件来完成,软件和硬件的界限已经很模糊了。通过软件的固化(像做成芯片等),可以将软件和硬件紧密联系在一起。
软件是可以转化为硬件的,首先是在操作系统之上的应用软件,这里主要指编译软件,它将高级语言或者汇编语言编译、解释为目标程序,也就是我们所说的机器码,然后机器码被分解为微程序,微程序再分解为微指令,而微指令就是一段定长的二进制数字,再由数字逻辑里的知识被硬件所利用。
比如常见的“显卡3D加速”,既可以用软件实现,又可以用硬件实现。
一般来说,一个功能模块采用软件还是硬件,有下面的区别:
硬件实现——优点:速度快,功耗低,性能指标高;缺点:不灵活不易升级,需要硬件成本。
软件实现——优点:灵活多边,易于升级,不需要硬件成本;缺点:性能指标较弱,功耗较高。
理论上,所有软件功能都可以用硬件实现(虽然不一定具备经济意义)。
随着大规模集成电路技术的发展和软件硬化的趋势,计算机系统软、硬件界限已经变得模糊了。因为任何操作可以由软件来实现,也可以由硬件来实现;任何指令的执行可以由硬件完成,也可以由软件来完成。对于某一功能采用硬件方案还是软件方案,取决于器件价格、速度、可靠性、存储容量、变更周期等因素。
就目前而言,一些计算机的特点是,把原来明显地在一般机器级通过编制程序实现的操作,如整数乘除法指令、浮点运算指令、处理字符串指令等等,改为直接由硬件完成。
总之,随着大规模集成电路和计算机系统结构的发展,实体硬件机的功能范围不断在扩大。第一级和第二级的边界范围,要向第三级乃至更高级扩展。这是因为容量大、价格低、体积小、可以改写的只读存储器提供了软件固化的良好物质手段。现在已经可以把许多复杂的、常用的程序制作成所谓固件。就它的功能来说,是软件;但从形态来说,又是硬件。其次,目前在一片硅单晶芯片上制作复杂的逻辑电路已经是实际可行的,这就为扩大指令的功能提供了物质基础,因此本来通过软件手段来实现的某种功能,现在可以通过硬件来直接解释执行。进一步的发展,就是设计所谓面向高级语言的计算机。这样的计算机,可以通过硬件直接解释执行高级语言的语句而不需要先经过编译程序的处理。传统的软件部分,今后完全有可能“固化”甚至“硬化”。
晶体管开关的连线组合能完成一定功能(如加法机、记忆电路),就是硬件,而能完成一定功能的软件的指令序列(01序列)相当于晶体管开关的重新连线,因而具备了新的功能;
复杂的逻辑功能单元都是由简单的逻辑电路搭建而成的,硬件就是逻辑电路的硬连接,软件就是这些逻辑电路的软连接(软件的指令序列也就是01序列而已)。
硬件与软件的关系
硬件和软件是一个完整的计算机系统互相依存的两大部分,它们的关系主要体现在以下几个方面。
⑴ 硬件和软件互相依存
硬件是软件赖以工作的物质基础,软件的正常工作是硬件发挥作用的唯一途径。计算机系统必须要配备完善的软件系统才能正常工作,且充分发挥其硬件的各种功能。
⑵ 硬件和软件无严格界线
随着计算机技术的发展,在许多情况下,计算机的某些功能既可以由硬件实现,也可以由软件来实现。因此,硬件与软件在一定意义上说没有绝对严格的界面。
⑶ 硬件和软件协同发展
计算机软件随硬件技术的迅速发展而发展,而软件的不断发展与完善又促进硬件的更新,两者密切地交织发展,缺一不可。
很多软件可以用硬件实现,同样,硬件的功能也可以用软件编写。
从某种意义上说,他们都是在处理信息。
打个比方,mp3既可以用软件的播放器播放,也可以用专用的音频解码芯片解码实现播放。