Linux系统硬件处理和软件处理的区别是什么

2017-06-14

Linux系统中处理软件和硬件肯定是有所区别的。下面是小编为大家介绍Linux系统硬件处理和软件处理的区别,欢迎大家阅读。

Linux系统硬件处理和软件处理的区别

我们来看看各种计算机算法,它们在做什么,以及是怎样做的。很显然,总结一句话就是:合理安排先做什么,再做什么的一个动作序列。这些序列是发生在一维时间的流逝里面的,虽然目前有很多的并行算法,让人看起来好像时间变成了一个平面,但是只要这些算法是CPU实施的,当它们不能在分解的时候,算法还是在先做什么,再做什么之间不断做决策。二分查找,快速排序,这些不都是典范吗?仔细分析一下冒泡排序,先做什么,再做什么,然后做什么。。。最后得到了结果。一个动作直接就是问题的一部分。这完全符合我们人类的思维,因为我们在做任何事的时候,都是在不断决策先做什么,后做什么。这就是数学上的统筹学。

硬件实现的高效等价方案以另一种完全不同的方式工作,它更加类似我们人类的大脑内部的神经网络的工作原理。由于对这个大脑工作原理的解释超出了我的能力范围,即便我真的懂,也不能指望在一篇周末将要结束的短文中阐释清楚,所以我还是直接说硬件吧。

硬件工作时更像是势能的自发释放,这种释放的效果是事先确定的,完全自动进行。举一个例子,洪水泛滥的时候,水流沿着沟壑冲刷大地,造成的效果取决于哪里高,哪里低,并且由于这种高高低低的不同,还会出现一些组合效果,比如一流分成两流,在一个低洼处再次合并,这就会加倍水流的冲击力,从而越过更高的地方。你可以将这看成万众一心的万马奔腾。在一个大型的灌溉系统中,事先接好管道,挖好沟渠,然后在水源处放水,一切都是自动完成的,完全无人值守。如果按照CPU的方式,必须事先准备好一些序列-注意不是挖好沟渠,然后依次执行这些序列,比如先浇灌A区,然后再浇灌B区,由于D区离B区更近,因此接下来浇灌D区而不是C区。。。当然在更低的层次,比如具体的浇灌过程,事情是按照硬件的方式执行的。

虽然CPU总是顺序地执行一个序列的每一条指令,但是在CPU内部,执行每一条具体指令的方式却是一个势能释放的过程,CPU设计者早就设计好了几个通用的指令电路,所谓的RISC就是指CPU内部的电路仅仅实现了非常简单非常基本的几个指令,然后靠外部的不同组合形成不同的程序,完成不同的事情。这就是程序设计的本质。对于诸如DxR Pro++固化这样的事情,事实上并不能按照程序设计的一般思路来进行,因为它是完全相反的一个过程,我要设计的是一个万马奔腾的势能释放的方案,我要做的是挖沟填壑,开山辟土,而不是思考一个如何在既有的康庄大道上到达目的地的方案。

硬件是死的,程序是活的。一旦沟壑确定,势能释放的效果就完全确定了,因此这块电路就不能再做它用,但是程序却是可以随意更改的,因为CPU内部虽然也是遍布沟壑,也是死的,但是它们数量比较多,而且每一种达到的效果非常有限,可以通过不同的将它们组合的方式形成不同的效果。这种局面涉及到了一个很重要的话题,那就是成本!

挖沟填壑的成本非常之高,必须确定这种沟壑的势能释放效果是长期可用且有效的,否则就浪费了。而软件却是可以用非常低的成本重组序列的,如今程序员不是已经快成为廉价劳动力了么?然而软件的性能和硬件直接布线的性能是没法比的,这也是一种代偿博弈,牺牲了性能,带来了灵活性。如今的程序员几乎都是在CPU所框住的框架内寻求最佳的算法,因为直接用硬件布线来实现功能并不是他们可以决策的,因为这涉及到成本问题,也就是钱的问题,必须在程序员雇佣成本和投资成本之间做一个完美的权衡。

其实早就形成了一种所谓的“可编程硬件”,即内部的沟壑可以填平,然后重新挖沟,也就是硬件可以重新布线。这种东西的成本介于纯布线硬件和软件之间。

以上就是Linux系统硬件处理和软件处理的区别了,不管是硬件处理还是软件处理,二者都有其优势,所以应该配合使用。

更多相关阅读

最新发布的文章