107-冯诺依曼结构和具体实现
# 107-冯诺依曼结构和具体实现
我们现在日常所接触的计算机,几乎全部都是冯·诺依曼结构,都遵循着存储程序的基本原理。那这些计算机的具体实现,和当年冯·诺依曼的设计方案有哪些区别和联系呢?这就需要我们来对比分析了。
冯·诺依曼计算机的主要构成,我们现在已经非常熟悉了, 包括运算器 CA,控制器 CC,存储器 M, 输入设备 I,和输出设备 O。 此外,还有在计算机外部的记录介质 R。那这样 原理性的框图和现在计算机的具体实现是如何来对应的呢。 我们还是拿个人计算机作为例子来进行讲解,在这块个人计算机的主板上, 可以插上 CPU 芯片, 存储,我们也常称为内存条, 再接上硬盘,连上键盘, 插上显卡,连上显示器, 最后再接上电源,这样就构成了一台可以正常运行的计算机。 那 CPU 对应的是运算器 CA 和控制器 CC, 主存对应的是存储器 M。 这些我们已经比较清楚了,那 CPU 是如何获取指令,开始执行的呢。 这块主板上采用的是个人计算机上长期占据主导地位的南北桥结构。 所以 CPU 对外会连接的一块芯片,叫做北桥。 这是在主板上非常明显的一块芯片,CPU 想要访问主存, 就得通过北桥芯片。但是我们还要注意,计算机刚启动的时候, 主存里面是没有信息的,因为当计算机断电之后, 主存的信息都会丢失。那在系统启动之后,CPU 从哪里获得指令呢? 我们也可以看到北桥下方,还有一块比较大的芯片。 它就是南桥。 我们已经知道南桥内部,集成了很多输入输出设备的控制器,其中就包括硬盘的控制器。 所以硬盘实际上是和南桥芯片相连的。 而硬盘,我们也已经知道了,它是属于外部记录介质, 它内部保存着计算机系统所需的程序和数据。
那 CPU 所需要的指令是否就直接从硬盘取得呢。 其实也不是。因为要从硬盘中访问数据,相对比较复杂。 对硬盘进行配置和访问,本身还需要程序来控制。 这也就是所谓的硬盘驱动程序。 所以在计算机刚启动时,CPU 是无法从硬盘中, 获得自己想要的第一条指令的。那第一条指令在哪呢? 实际上在主板上,还会有一个很小的芯片,它会与南桥相连。 一般我们称之为 BIOS 芯片,这个芯片存储容量很小, 会保存的一段比较简单但十分重要的程序,包括检查主板上都有哪些设备, 这些设备工作是否正常。这个芯片实际上是一颗只读存储器。 当系统断电之后,只读存储器中保存的信息是不会丢失的。 所以当计算器启动后,CPU 可以依次通过北桥, 南桥,访问到 BIOS 芯片,从里面取得指令。 所以这颗 BIOS 芯片,虽然是一颗只读存储器, 但是从冯·诺依曼结构原理上来看,它并不属于存储 器的范畴,而是和硬盘一样,属于外部记录介质, 它和早年计算机的穿孔纸带也属于同一类别。
严格地说,BIOS 是指这颗只读存储器当中存储的软件。 它是基本输入输出系统的缩写。 那通常我们把保存了 BIOS 这个软件的只读存储器 称为 BIOS 芯片。现在计算机主板上的 BIOS 芯片, 有很多种封装形式,位置也有不同。 但大多会在芯片旁边的主板上,标出 BIOS 的字样。大家有兴趣可以找一找。
那 CPU 从 BIOS 中取出指令后,会依次地检查主板上的各个设备, 包括有显卡, 通过显卡点亮显示器, 检查键盘的存在,之后我们就可以通过键盘进行输入。 这些都属于 I/O 设备。此外,现在的显卡功能越来越复杂, 性能也越来越强大,尤其是其中的图形处理单元。 我们也常称为 GPU。GPU 往往支持很多 复杂的数学运算,拥有很强的运算能力。 所以有时候,也会让 GPU 承担一些运算的工作。 实际上在现在高性能的超级计算机中, 经常会采用大量的 GPU 来进行运算。所以从这个意义上讲, GPU 也承担了运算器和控制器的一些功能。
那在这个结构当中,只有北桥芯片的特征比较特殊一些。 实际上,它提供了各个芯片之间互相访问的通道。 当然,我们也不用太纠结,北桥到底对应着哪个结构。 因为整个南北桥的结构也在迅速地发生着变化。
这还是刚才那块主板,我们先来看右侧这张图, 最上方是微处理器,也就是 CPU。 这颗芯片中,往往包含着多个 CPU 核。 往下,它连接着北桥。 北桥中,主要会有主存控制器,对外连接着主存,那 现在的显卡,一般采用 PCIE 接口,所以在北桥中,会集成 PCIE 控制器, 对外通过 PCIE 的插槽,连接 PCIE 的显卡。当然如果你对显示的性能要求不高, 也可以通过北桥内部自带的集成显卡,直接连接显示器。 那北桥还连接着南桥,南桥中,集中了大多数 I/O 设备的控制器
那我们再来看左边这张图。 这是 CPU。 它对外的访问都需要通过北桥, 而其中对传输的性能要求最高的就是与主存的这条 通道。主存通道的性能也成为了整个计算机性能的关键瓶颈。 除此之外,另一条对性能影响很大的通道就是显示通道。 那么这就是 PCIE 的插槽,这上面可以插上 PCIE 显卡。再有一条重要的通道, 就是北桥与南桥的连接,通过这条通道, 外部的输入输出设备可以对主存进行访问。那在这里, 红颜色的箭头表示传输压力很大的通道,而南北 桥之间的绿色箭头表示这条通道传输压力相对较小。
那在这种情况下,首先要解决对性能影响最大的关键问题。 这就是 CPU 访问主存的通道。 所以在南北桥架构上,发生的第一个重要的变化, 就是北桥中的主存控制器被移到了 CPU 芯片当中。 通过左边这张图,我们也可以看出来, CPU 的插槽与主存的插槽变得更近了, 这就是因为现在 CPU 是直接访问主存,而不需要再通过北桥了。 这样可以大大地提高数据的传输率,进而提升系统的性能。
现在,显示的这条通道,就成为了下一个要解决的问题。 而南桥中连接的这些设备,暂时还不关键。 因此,在最新的个人计算机的 CPU 设计中,不仅包括了 主存控制器,还包含了 PCIE 控制器,在外部可以直接连接显卡。 这样北桥当中最重要的一些部件,都被 集成到了 CPU 芯片当中,那北桥就没有存在的必要了。 于是将北桥中剩余的一些功能,和南桥芯片整合到一起之后,所谓南北桥的架构, 其实已经消失了。整个个人计算机的主板由三片式的架构缩减成了两片式。 由于没有了北桥,南桥这个名字也显得有些奇怪了。 所以它现在往往有一些不同的名字。那我们再看左边这张图, 现在 CPU 直接连接着主存, 还直接连接着显卡, 还与原先的南桥直接相连, 这样就将原先通过主板的复杂的通路,大多移到了芯片的内部。 而芯片内部的数据传输率,是远远高于主板的。 这样就大大地提升了系统的性能。
那既然从三片缩减成了两片,我们可不可以进一步缩减呢? 其实已经有人这么做了,这就是系统芯片的概念。 系统芯片, 可以认为是将计算机系统,或其它电子系统集成到一个单一的芯片上。 我们来看一个例子,这是一颗硬币大小的芯片,我们来看它内部 包含了哪些功能呢。这个框图就是这颗芯片中所包含的功能模块。
这部分是一个四核的 CPU。 这一部分 是显卡的功能模块, 而这些是南桥中数量繁多的 各种接口的控制器, 而且这个芯片还采用了一些特殊的方法, 把主存也集中在了一起。 这样,就在这一颗芯片内部, 集中了冯诺依曼结构当中的所有组件。 所以我们可以用这样的芯片制造出非常小巧的计算机。这个计算机的主板大约只有手掌大小,却拥有非常丰富的外部接口,与一个普通的计算机并没有什么差别。 那这样高集成度的优势就让系统芯片的技术 广泛应用于智能手机,平板电脑等移动计算设备上。
那么原先的计算机中那么多的芯片和板卡 为什么能够集中到越来越少的芯片当中呢? 那我们就得说一说一个非常著名的定律。 这就是摩尔定律。摩尔定律最初是由摩尔提出的。 早年,摩尔加入了晶体管的设计者肖克利的实验室,但是由于肖克利的性格问题 和这些青年人产生了很大的矛盾, 那么包括摩尔在内有 8 个年轻人一起密谋脱离了肖克利实验室。 创办了仙童公司,而肖克利非常生气, 把他们称为 8 个叛徒,
而仙童公司 迅速聚集了大批有才干的人,创造出了属于自己的辉煌, 后来由于投资方的一些原因,仙童公司的这些精英们又逐渐的离去, 他们当中的很多人都在硅谷创办了公司, 因此人们常将仙童公司比作硅谷的人才摇篮, 说仙童公司就好比一颗成熟的蒲公英,风吹之下 飘散到硅谷各处,生根发芽, 而其中就有摩尔和当年 八叛逆之一的罗伯特诺伊斯共同创办的因特尔公司。
而在 1965 年,当时摩尔还在仙童公司, 他应邀为电子学杂志 35 周年的专刊 撰写文章,他在文中做出了这样一个预测,在最低原件价格下, 集成电路的复杂度每年大约增加一倍, 这一增长率至少可以维持 10 年。 这个预测就是摩尔定律的原型。 这十年,集成电路的增长果然非常的迅速,不过增长的速度和摩尔的预测略有差别。 所以十年后,摩尔在一次报告中调整了他的预测,将每年增加一倍 调整为每两年增加一倍。所以我们要注意 摩尔进行的预测是指集成电路的复杂度, 而且他认为这个增长速度应该是每两年增加一倍, 但是后来被称为摩尔定律的这一预测又发生了很多的演变。 现在我们常见的摩尔定律的描述是这样的。 当价格不变时,集成电路上可容纳的晶体管数目约每隔 18 个月便会增加一倍, 性能也将提升一倍。
我们需要注意的是,这和摩尔原本的预测是有些差别的。 首先时间不一样。第二,摩尔也没有提及性能的事情。 此外摩尔定律还有一些其他的描述。 比如每 18 个月,计算机产品的性能会翻一番, 或者说相同性能的计算机产品每 18 个月价格会 降一半,在这样描述的基础上还引出了反摩尔定律等其他的描述。
既然说到了性能,我们不妨来做个有趣的对比。左边是 1946 的 ENIAC, 它每秒钟能执行 5000 次定点的加法运算。 右边是现在全世界最快的超级计算机, 中国研制的天河 2 号,从 2013 年到 2014 年 连续 3 次占据世界超级计算机 500 强的首位。 它每秒钟能执行 3.3 亿亿次浮点运算。 我们不妨就来一个非常粗略的比较, 就以运算次数作为指标, 那么从 ENIAC 到天河 2 号,67 年的时间,性能增长超过 6 万亿倍, 恰好相当于每 18 个月翻了一番。 当然这只是一个很有趣的对比,它并不严谨。
所以我们还是回来看一看摩尔定律它原本想描述的内容。 这张图展示了微处理器,芯片的晶体管数量的增长情况。 在集成电路芯片上,晶体管数量的增长速度才是摩尔最初预测的内容。 最早的是 1971 年的 4004,大约有 2300 个晶体管。 现在我们来看整体的发展趋势。 从 1971 年到 2011 年总共 40 年的时间, 微处理器晶体管的数量从 2300 个迅速增长到 26 亿个, 增长幅度超过 100 万倍。 如此算来,不到两年就翻了一番。与当年摩尔的预测是非常贴近的。 虽然在这之中也有一些人为控制的因素, 而且摩尔定律是否已走到尽头也是这些年来不断被提及的话题。 但是无论怎样摩尔定律所展示的集成电路的快速发展 的确是计算机性能快速提升的关键动力。
当然在摩尔定律推动下产生的这些计算机其实都是冯诺依曼结构的计算机。 我们需要牢记的是冯诺依曼结构存储程序的概念, 和冯诺依曼计算机各大组成部分之间的关系。由此看来,私人计算机的具体实现方式发展变化的很快, 但是其内在的结构特点却长期保持着稳定。 因此想要真正掌握计算机的结构和运行的原理, 就要不断的学习其最新发展的变化, 也要深入的了解它内部不变的原理,二者不可偏废。