通用计算机器

还是下面这句话:

将固定的资源在所有使用者中分配,而不是为每一个使用者分配固定额度的资源。

还是那个简单的倒换,通用计算机就设计出来了。

人们就意识到内存和CPU之间的总线成了瓶颈,于是人们拼命缩短这条总线的长度,甚至将内存控制器封装进CPU内部。无论怎么折腾,CPU和内存依然内外两隔,沟通媒介始终存在。

人们把锅甩给了冯诺依曼体系,甚至图灵机。对,就是那条纸带和会移动的机器头,它们始终内外两隔。

这种分离带来的二者之间的沟通损耗是回避不了的,但也正是这种分离,让图灵机变得通用。

把一个计算组件定义为输入,计算,输出三部分是合适的,比如一个加法组件,输入是两个数,计算是将两个数累加,输出则是累加的结果。

若要完成一个计算,有两个选择:

  • 在空间展开,彼此互联的不同计算组件负责实现不同的计算部分。
  • 在时间展开,同一个计算组件在不同时间被不同的计算步骤复用。

以(1+2+3)x4x5为例:
在这里插入图片描述

结果都一样,不同在于,在时间展开,可以针对步骤进行编程,而步骤可以随时记录,改写,擦除,这便是软件之所以软之处,而在空间展开,则必须针对不同的计算部分对计算组件硬连线,一旦连线完成,想改写是很难的。

思考一下通用机器,想象图灵机那根无限的纸带,若按照空间展开的方式,则是不可能实现的。无穷的纸带映射到空间,则需要无穷的面积来布置无穷的计算组件,且每一个单独的任务都需要重新部署一个新的平面。

图灵机之前,所有机器都是空间展开的,特定的机器只能完成特定的任务,机器的每一部分组件对应任务的特定部分工作,任务越复杂,这种机器体积就会越大。图灵机的创举在于将任何任务拆分成了时间轴上的步骤,每一个步骤完成一个元任务,任务越复杂,步骤就越多,所需的时间就会越久。

对于复杂任务,图灵机之前是占地方,图灵机之后是花时间。

与占地方相比花时间,时空抵消,似乎没什么稀奇,图灵机不一般之处在于可编程。硬件固定,通过对步骤编程,不同任务执行的时间不同,这便是通用机器的本质了。

人们似乎倾向于对时间容忍而不是对空间容忍,可能因为变化在时间中更容易发生,而在空间中则不易,而编程就是在应对变化。

现实永远不理想,有时我们需要空间展开的方式,比如并行计算。如果我们希望1+2+3+4更快地进行,并联两个加法器分别执行1+2和3+4,再串接一个加法器执行二者累加显然要比在通用机器串行执行更快。

这也是当前各种反CPU的方向,宏观层面上,各种Offload希望在CPU之外自己搞事,此外存内计算也是一个方向,无论哪种方式,都是试图将CPU在时间轴展开的工作重新在空间展开,而这种方式其实是通用计算机出现之前的唯一选择,并不稀奇。

最后,我们来看看那个熟悉的倒换到底是什么。

将计算组件看作计算机器的资源,有两种选择:

  • 为计算的每一个步骤(或称作部分)分配特定的计算组件。
  • 计算的所有步骤分时使用(并发)固定的计算组件。

显然,上述第二种方式,就是通用计算机,通用计算机实际上是一种分时并发机器。

万事都是想通的,微内核和端到端原则有关,图灵机和时间空间倒换有关,很多人不信,也不知道这些意味着什么,简单记录一点,说不定以后设计一个新的系统时这种思想用得着。

浙江温州皮鞋湿,下雨进水不会胖。

原文链接: https://blog.csdn.net/dog250/article/details/124559203

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    通用计算机器

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/405531

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月26日 上午9:15
下一篇 2023年4月26日 上午9:16

相关推荐