第0章的内容涉及到一些关于计算机具体硬件前置知识,我不能假设专修文科的同志对它们如数家珍,为了不违背初衷,我另开了这-1篇,如果有些知识你已经有所了解,仅需简单掠过即可。
在第0章中我提到:计算机由主板及电源、处理器、内存(RAM)、硬盘、外部设备(如显卡与显示器、声卡、网卡等)构成的。这其实是一个简单而贴近生活的个人计算机(PC)模型(要知道,广义上的计算机并不是一个固定框架),我来尽可能详细且通俗的讲解一下它们的作用和联系吧。
首先最重要的,当属中央处理器(CPU Central Processing Unit)了,它是整个计算机的“大脑”和“灵魂”,计算机组成原理、体系结构的大部分内容都是围绕它展开的,它是一个优美、高效而令人惊讶、震撼的一个巨型工程,这个巨型工程落地时运用了人类几乎所有的尖端科技,然而它仅仅镌刻在指甲盖大小的一片硅上。做好这个小东西,能让一个巨头公司辱华之后我们根本无法抵制,也能让教授我体系结构的老师和他的团队,在聚光灯外为之钻研、奔走二十余年…
抱歉有些感性了,我们抛弃第0章中宏观上的那些比喻,重开一个模型:简单地说,CPU就像一个(或多核CPU对应多个)古板且熟练的高级工人,它用流水线的方式工作着,且面对不同工作任务时适应很快,甚至对甲方的一些复杂的要求,它可以花较小的代价去猜测未来的工作,并在甲方要求下来之前提前做完,即使做错损失也很小,毕竟它很能干,况且一个足够聪明的高级工人,猜错的时候很少很少。在足够了解它之后,你可以将几乎所有的问题交给它。它的思想极其先进(毕竟电路不会偷懒),时常抱怨工作不够。如何让它一刻不闲下来地做尽可能多的有效工作,是一个很有价值的问题,我们可以去改变它的内在,也可以改变交给它工作的形式,当然这是后话了。
其次是内存(RAM Random Access Memory),你可以把它看作高级工人自己的一个的工作台,这个熟练的工人能只用固定的时间,从工作台上的任意一个位置拿到自己想要的东西:可能是工具、可能是工作清单、可能是原材料。从工作台上拿一个工具的耗时总比使用手上的东西(CPU内部的“小存储”)耗时长,这就需要好好利用第0章中“局部性”的概念了,毕竟你不希望这个工人把所有时间花在找东西上。但请注意:这个工人在每次下班(关机)时这个工作台上的东西都会被清理光,当然也会有不下班的工人,它们的工作台不会被清除,它们会工作到自己的工作不再拥有意义、或者自己走向寿命的终点,不要为它们悲伤,也许这就是它的自我价值实现吧。
然后是硬盘(Hard Drive),它可以被看作是一个大仓库,和内存不同的是:它所存储的数据是不会在工人下班后被清理掉的,如果没有天灾人祸的话,这些数据能陪你很久很久。硬盘的种类不同,其对应的速度也不同,但无论如何,工人从工作台上取东西的速度都要远远超过在仓库里翻找的速度的。同样的,没人希望工人频繁奔走在工作台和仓库之间,这就要求工作台摆放物件的策略充分利用“局部性”了。
随后是外部设备,它们的功能各异、你可以将它们想象成各个领域的专家:显卡(GPU或GPGPU Graphic Processing Unit or General Propose Graphic Processing Unit)是一大群有三头六臂的小怪兽,但它的协调能力不太好,让它做大量简单粗暴且一致的工作,它能做的比高级工人快很多很多,但千万别频繁地让它到处找东西或者猜测甲方的意图,这会让它很不安。显卡能更快速的完成图像处理的工作,以及需要大规模并行的简单工作。声卡则是一个技艺高深、样样精通的音乐家,它的演艺经验能让它迅速识谱,并把谱中的音乐准确无误地演奏出来,而网卡则是一个快递驿站,负责仓库中、工作台中东西的收发…
最后是主板,英文名称为Motherboard,从它的名字不难看出它扮演一个类似于母亲的角色。我们可以将它看作一个工厂,而电源对应的是工厂食堂。主板连接计算机中的各个部件,弥合每一个部件性格的差异:高级工人们效率高工作台就在旁边;小怪兽贪吃且离工作台远,不好沟通;快递和仓库离得比较远,取一次不容易…这都是主板要考虑制衡的东西。
到这里你不难发现:以CPU为中心,一般来说,离CPU越远的部件响应速度越慢、数据传输起来吞吐量越低,这是一个很有趣的层级结构,CPU内部“小存储器”(寄存器和cache)的速度最快(纳秒级)、容量最小(MB级),RAM的速度稍慢(微秒级),容量稍大(GB级),硬盘速度更慢(毫秒级),容量更大(TB级),而我私自加上另一级“互联网”,它包含当前主机能连接到的所有资源,这一级的速度相对来说最慢(秒级?),容量最大(EB级?),至此我眼中整个计算机体系的层级结构就建立完毕了。