我们还是拿个人计算机作为例子来进行讲解,在这块个人计算机的主板上,可以插上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。这一部分是显卡的功能模块,而这些是南桥中数量繁多的各种接口的控制器,而且这个芯片还采用了一些特殊的方法,把主存也集中在了一起。这样,就在这一颗芯片内部,集中了冯·诺依曼结构当中的所有组件。所以我们可以用这样的芯片制造出非常小巧的计算机。你看这个计算机的主板大约只有手掌大小,却拥有非常丰富的外部接口,与一个普通的计算机并没有什么差别。那这样高集成度的优势就让系统芯片的技术广泛应用于智能手机,平板电脑等移动计算设备上。
那么原先的计算机中那么多的芯片和板卡为什么能够集中到越来越少的芯片当中呢?那我们就得说一说一个非常著名的定律。这就是摩尔定律。摩尔定律最初是由摩尔提出的。早年,摩尔加入了晶体管的设计者肖克利的实验室,在1965年,摩尔应邀为电子学杂志35周年的专刊撰写文章,他在文中做出了这样一个预测,在最低原件价格下, 集成电路的复杂度每年大约增加一倍,这一增长率至少可以维持10年。这个预测就是摩尔定律的原型。这十年,集成电路的增长果然非常的迅速,不过增长的速度和摩尔的预测略有差别。所以十年后,摩尔在一次报告中调整了他的预测,将每年增加一倍调整为每两年增加一倍。所以我们要注意摩尔进行的预测是指集成电路的复杂度,而且他认为这个增长速度应该是每两年增加一倍,但是后来被称为摩尔定律的这一预测又发生了很多的演变。现在我们常见的摩尔定律的描述是这样的。当价格不变时,集成电路上可容纳的晶体管数目约每隔18个月便会增加一倍,性能也将提升一倍。我们需要注意的是,这和摩尔原本的预测是有些差别的。首先时间不一样。第二,摩尔也没有提及性能的事情。此外摩尔定律还有一些其他的描述。比如每18个月,计算机产品的性能会翻一番,或者说相同性能的计算机产品每18个月价格会降一半,在这样描述的基础上还引出了反摩尔定律等其他的描述。既然说到了性能,我们不妨来做个有趣的对比。左边是1946的ENIAC,它每秒钟能执行5000次定点的加法运算。右边是现在全世界最快的超级计算机,中国研制的天河2号,它每秒钟能执行3.3亿亿次浮点运算。我们不妨就来一个非常粗略的比较, 就以运算次数作为指标,那么从ENIAC到天河2号,67年的时间,性能增长超过6万亿倍,恰好相当于每18个月翻了一番。当然这只是一个很有趣的对比,它并不严谨。所以我们还是回来看一看摩尔定律它原本想描述的内容。这张图展示了微处理器,芯片的晶体管数量的增长情况。在集成电路芯片上,晶体管数量的增长速度才是摩尔最初预测的内容。最早的是1971年的4004,大约有2300个晶体管。现在我们来看整体的发展趋势。从1971年到2011年总共40年的时间,微处理器晶体管的数量从2300个迅速增长到26亿个,增长幅度超过100万倍。如此算来,不到两年就翻了一番。与当年摩尔的预测是非常贴近的。虽然在这之中也有一些人为控制的因素,而且摩尔定律是否已走到尽头也是这些年来不断被提及的话题。但是无论怎样摩尔定律所展示的集成电路的快速发展的确是计算机性能快速提升的关键动力。当然在摩尔定律推动下产生的这些计算机其实都是冯诺依曼结构的计算机。我们需要牢记的是冯诺依曼结构存储程序的概念,和冯诺依曼计算机各大组成部分之间的关系。