软件能完全用硬件来实现吗?

下面记录一个问题,和相应的回答。

问题:请问所有软件是否均可用硬件来实现?如果不计成本和开发难度。

   因为一台机器最底层的是硬件,其上有固件(硬化的软件),再向上是软件。而软件的概念来自于硬件,目的应该是对硬件的功能进行充分利用,软件无非就是硬件运行的逻辑,硬件应该可以本身就可以实现这种逻辑。但是全部用硬件来实现的话,硬件就会非常复杂,开发难度很大,成本也非常高。 我的观点正确吗?请各抒己见。

我觉得很好的回答:

   仅从理论而言,所有的软件都能通过模拟(数字)电路来实现,相当于把程序固化到硬件上。好处是速度会快得多;缺陷是升级较困难。 有很多这样的例子,比如DVD播放机,就是把视频解码程序固化到硬件中实现的。 但是,有些很复杂的软件系统,如果用硬件实现,基本不现实,也没有意义,因为硬件成本太高了。而且大系统经常需要变动,这就不是硬件系统所能承受的了。 所以说,你的观点正确!

     下面说说我的看法。我认为,理论上硬件电路是可以实现所有软件的,既然电路可以实现简单的计算逻辑,当然也可以实现复杂的计算逻辑,而软件就是对一个计算逻辑的描述嘛,所以说可以完全没有软件的什么事!但是,这样对于极其复杂的计算逻辑(也就是大型软件系统)来说,实现这个逻辑的电路会非常非常复杂,开发难度很大,成本非常高,因此是不现实的行为!

      还有,我觉得在存储程序计算机以前,人类发明的计算工具都是完全用硬件来实现全部计算逻辑的,注意这里的硬件可不只是电路了,还有各种机械齿轮等东西,这种计算工具也可以称为固定程序计算机,固定在于全部计算逻辑实现在硬件中,无法更改,是完全没有软件的概念的。

     后来,图灵提出了通用图灵机这个抽象的计算模型,终于有了软件的思想。我们可以实现一个通用的简单的硬件,进而把硬件支持的功能抽象成指令集,通过简单计算的组合来完成复杂的计算,通过软件来描述计算逻辑,这样我们就可以把计算逻辑从硬件中抽离出来,把计算逻辑变成信息(讲真,我觉得算法本身就是信息,就是怎么去处理一个问题),存放在软件当中,从而可以实现单纯用硬件难以实现的复杂计算过程。最终,冯诺依曼提出存储程序计算机的架构,把这种想法变成了现实。从此,我们有了通用的计算工具。我们想让计算机完成不同的任务不用再造一台新的计算机,而只需方便的更改软件中的计算逻辑即可让相同的计算机完成这个不同的任务。  

    

扫描二维码关注公众号,回复: 4160237 查看本文章

猜你喜欢

转载自blog.csdn.net/sinat_30955745/article/details/84034783
今日推荐