0%

程序员的自我修养(一):计算机硬件架构的发展

前作介绍了内存寻址方面的一些知识。近期正在读《编译、链接与库》,于是借着读书的机会,梳理回顾一下计算机软硬件的基本结构以及相关的一些知识。

计算机硬件架构的发展

计算机硬件涉及到各种设备、芯片以及接口。这些内容繁复、繁琐,作为软件开发者,通常不会去关心。作为软件开发者,最关心的往往是三个部件:中央处理器(CPU)、内存(Memory)以及 I/O 控制芯片(I/O Controller)。接下来,我们以这三个部件为中心,探索一下计算机硬件架构及其发展历程。

计算机硬件的发展,很大程度上可以归结于 CPU 技术的发展。具体的表现,就是 CPU 核心频率的不断提升。

在早期,CPU 的核心频率和内存的频率一致,因此 CPU 可以和内存连在同一根总线上。至于显示器、键盘、软盘驱动器、硬盘驱动器,它们的工作速度比 CPU 和内存慢得多。于是,通常来说,这些 I/O 设备需要通过各自的控制器与总线相连。

后来,CPU 的频率提升很多,而内存的频率跟不上 CPU 的频率。于是 CPU 开始采用倍频的方式与总线通信——也就是说,CPU 跑过多个时钟周期,再一股脑跟总线通信;就好像总司令连着颁布几道命令,通讯员一口气把这些命令下达到前线一样。与此同时,图形化操作系统(Windows)和 3D 游戏迅速发展起来,这就要求显卡能与 CPU 和内存之间进行大量的数据交换。于是,人们专门设计了一个北桥芯片(Northbridge, PCI Bridge),用来协调 CPU、内存和显卡之间的高速内存交换。

连接在北桥芯片上的设备,运行速度都非常高。相对应的,硬盘、键盘、鼠标等设备速度就显得很低了。如果北桥要同时协调一群高速设备和一群低速设备,那么北桥的设计就会变得非常复杂。为此,人们设计了南桥,用来统筹这些相对低速的设备。

后来,随着处理器制造技术的提升,北桥被 CPU 直接集成在内,形成了类似下图的结构。

可以看到,随着硬件制造技术的提升,特别是 CPU 制造技术的提升,计算机的硬件结构随之不断发生改变。不过,本质上还是没有逃开 CPU - 内存 - I/O 设备的结构。这也是为什么,我们在做程序设计和开发的时候,可以总是将计算机抽象成这样一个简单的模型。

俗话说,投资效率是最好的投资。 如果您感觉我的文章质量不错,读后收获很大,预计能为您提高 10% 的工作效率,不妨小额捐助我一下,让我有动力继续写出更多好文章。