`
songgz
  • 浏览: 39056 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

编程启源 第二章 如厕真传

阅读更多
  古人云:“真传一句话,假传万卷书”。万有引力复杂不,只不过是一个苹果落地那么简单。拿最复杂的CPU来说吧,也只不过如同一座厕所而已。果真如此吗?计算机难学的原因在这里啊,太恶心了!出家人不打狂语,这是真的,有可能图灵大师就是在如厕时想出来的。

  例如:一座厕所里,有一个排队机,一个便池、一个洗手盆、一个烘手器。一个人如所的流程:首先是排号、其次是解手、再次是洗手、最后是烘手,如厕完毕,等待下一个人。这就如同执行一条CPU指令。即一个时钟周期。如厕的人就是CPU要处理的数据。厕所就是CPU,便池相当于ALU。最原始的CPU大体也就是这么个样子,基于顺序操作的。虽然能工作但是很慢,不太实用。因为一个时钟周期只能执行一条CPU指令,并且需要执行四步,排号、解手、洗手、烘手,所以时钟周期要足够长才可以,以保证这四步的执行。

  基于顺序设计的CPU,并没有发挥这座厕所的最大性能。一个更好的设计是在顺序设计的基础上,设计一个按流水线执行的CPU。既然是按顺,那顺序是不能变的,就是一个一个指令地执行。那要想使执行指令的时间减少(时钟周期),就要用到计算机中,亘古不变的真理:“以空间换时间”。我们把顺序执行的四步,看做一条流水线,按这个标准再增加三条流水线,总共四条,这样我们能同时执行四条指令,效率增加了四倍。等等,那顺序怎么办,好办,共用一台排队机就可以了。每一步的执行时间就是一个时钟周期了,代价就是增加了一些设施(空间)。这是一个多么精巧的设计啊!关于厕所文化,还没有完,它会始终与你同在。

  这是一个简单又形像的比喻,虽然任何修辞都会严重遮蔽科学那神圣的光环,但是足以作为一个模型,帮助我们分析解决编程可能遇到的问题,也足以说明“法于时空,和于数理”对编程的重要性。



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics