普林斯顿计算机公开课(原书第2版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 逻辑结构

如果我们画一张简单的通用计算机的抽象图,那么无论是PC还是Mac,它的逻辑或功能架构图看起来都会像图1.2这样:一个处理器,一些主存储器,一些二级存储器,以及各种其他组件。这些组件都由一组叫作总线(bus)的电线连接起来,总线在它们之间传递信息。

图1.2 一个简单的理想化计算机架构图

如果是为手机或平板电脑画这幅图,框架也是类似的,尽管鼠标、键盘和显示器都融合进了一个组件——屏幕。还有许多隐藏的组件,如罗盘、加速度传感器,以及用来确定你所处地理位置的GPS接收器。

基本结构——也就是处理器、存储指令及数据的内存和存储设备、输入和输出设备——自从20世纪40年代起就已经形成规范。它通常被称为冯·诺依曼架构,以约翰·冯·诺依曼命名,他在1946年发表的论文里描述了这一架构,如本章开头的引文所述。尽管关于冯·诺依曼获得的过多赞誉是否有许多是基于他人所做的工作的问题仍然偶尔存在争议,但这篇论文非常清晰和有见地,即使在今天也值得一读。例如,本章开头的引文是该论文的第一句。翻译成今天的术语,处理器提供算术和控制功能,主存储器和辅助存储器属于存储设备,键盘、鼠标和显示器则与人类操作员交互。

这里给出术语说明:处理器历史上一直被称为CPU或中央处理单元,但现在通常只指处理器。主存储器通常被称为RAM或随机访问存储器,二级存储器则通常是磁盘或驱动器,反映了不同的物理实现。我将主要使用“处理器”“内存”和“存储”等词,但偶尔也会使用较老的术语。

1.1.1 处理器

处理器就是大脑,如果可以说计算机也有大脑的话。处理器进行算术运算、移动数据并控制其他组件的操作。处理器只能执行有限的基本操作,但它的执行速度惊人,达到每秒数十亿次。它可以根据之前的计算结果决定下一步要做什么操作,因此它在很大程度上独立于人类用户。我们将在第3章花更多的时间讨论这个组件,因为它非常重要。

如果你去商店或在网上购买电脑,你会发现上面提到的大多数组件,而且通常伴随着神秘的首字母缩写和同样神秘的数字。例如,你可能会看到一个处理器被描述为“2.2GHz、双核、Intel Core i7”,就像我的一台计算机一样。那是什么?英特尔公司制造处理器,而酷睿i7是英特尔公司对其一条范围很广的处理器产品线的命名。这种特定的处理器在单一封装中有两个处理单元;在这种情况下,小写core已成为处理器的代名词。内核本身就是一个处理器,但CPU可能有多个内核,这些内核可以协同工作或独立工作以计算得更快。在大多数情况下,不管该组合中有多少个内核,只要把它看作处理器就足够了。

“2.2GHz”是更有趣的部分。处理器速度是根据它可以在一秒钟内完成的操作或指令(或其中部分)的数量来衡量的,至少近似如此。处理器使用内部时钟来一步步地执行其基本操作,就像心跳或时钟滴答一样。速度的一种衡量标准是每秒这种滴答声的数量。每秒的一个节拍被称为赫兹(Hz),是以德国工程师海因里希·赫兹(Heinrich Hertz)的名字命名的。1888年,他发现了如何产生电磁辐射,从而直接导致了无线电和其他无线系统的出现。无线电台的广播频率以兆赫(MHz,百万赫兹)为单位,比如102.3MHz。当今的计算机通常以十亿赫兹或千兆赫兹的频率运行,我那相当普通的2.2GHz处理器正在以每秒22亿次的速度运行着。人类的心跳频率约为1赫兹,每天约10万次,每年约3000万次。所以我的处理器中的每个内核在1秒内跳动的次数,相当于我的心脏在70年里跳动的次数。

这是我们第一次遇到兆和吉这两个单位,它们在计算中很常见。兆是100万,也就是106;吉是10亿,也就是109。我们很快会看到更多的单位,在术语表中有一个完整的表,汇总了所有的单位。

1.1.2 主存储器

主存储器存储着处理器和计算机的其他部分正在使用的信息,其中的内容可以被处理器改变。主存储器不仅存储处理器当前处理的数据,还存储告诉处理器如何处理这些数据的指令。这是非常重要的一点:通过将不同的指令载入内存,我们可以让处理器执行不同的计算。这使得存储程序计算机成为通用设备,同一台计算机可以运行文字处理器和电子表格、上网、发送和接收电子邮件、在Facebook上与朋友保持联系、交税和播放音乐,所有这些都可以通过在内存中放置适当的指令来完成。存储程序这一思想的重要性怎么强调都不为过。

主存储器在计算机运行时提供了一个存储信息的地方。它存储了Word、Photoshop或浏览器等当前活动程序的指令。它存储了这些程序的数据——正在编辑的文件,屏幕上的图片,正在播放的音乐。它还存储了操作系统如Windows、macOS等的指令,这些后台操作的指令让你可以同时运行多个应用程序。我们将在第6章讨论应用程序和操作系统。

主存储器被称为随机存取存储器(RAM),因为处理器可以快速访问存储在其中任意位置的信息,简单来说就是以随机顺序访问内存位置并不会减缓速度。虽然VCR磁带在很久以前就已经不怎么使用了,但你可能还记得它们,如果你想看电影的最后一幕,需要从头开始快进到结尾才行;这被称为顺序访问。

大多数RAM是易失性的,也就是说,如果电源关闭,它的内容就会消失,并且所有当前活动的信息都会丢失。这就是为什么要谨慎地经常保存你的工作,特别是在台式机上,在使用台式机时踢掉电源线可能引起一场真正的灾难。

你的计算机有固定数量的主存储器。容量以字节为单位度量,其中字节是足够容纳W或@这样的单个字符,或42这样的小数字,或更大值的一部分的内存量。第2章将展示如何在内存和计算机的其他部分表示信息,因为这是计算的基本问题之一。但现在,你可以把内存想象成一个由无数个相同的小盒子组成的大集合,每一个盒子都可以存储少量的信息。

那么容量是指什么?我现在使用的笔记本电脑有80亿字节(也可以称之为8千兆字节,或8GB)的主存,可能还是太小了。原因是,更多的内存通常意味着更快的计算速度,因为没有足够的内存来同时容纳所有想要使用它的程序,而且要花时间将不活动的程序移出,为新程序腾出空间。如果你想让电脑运行得更快,购买额外的内存可能是最好的策略,至少在内存可扩充的情况下是如此的,但也有可能内存不方便扩充。

1.1.3 二级存储器

主存储器存储信息的容量很大但有限,并且当电源关闭时,其内容消失。二级存储器即使在断电时也能保存信息。二级存储器主要有两种:较旧的磁盘称为硬盘或硬盘驱动器,较新的形式称为固态驱动器(SSD)。这两种驱动器存储的信息比主存储器多得多,而且不具有易失性——即使没有电源,这两种驱动器上的信息也会保留。数据、指令和其他所有东西都长期存储在二级存储器上,只有在需要时才暂时存入主存。

通过设置旋转着的金属表面上磁性材料微小区域的磁化方向,磁盘得以存储信息。数据存储在同心圆磁道中,由在轨道之间移动的传感器读取和写入。当一台老式电脑在运行时,你听到的嗡嗡声和咔哒声是磁盘在运行,并将传感器移动到表面的正确位置。磁盘表面高速旋转,至少每分钟5400转。你可以在图1.3所示的标准笔记本电脑磁盘图片中看到其表面和传感器,盘片的直径为2.5英寸(6.35厘米)。

图1.3 硬盘驱动器内部

磁盘存储空间的价格约为RAM的1/100,但访问信息的速度更慢。磁盘驱动器访问表面上的任何特定磁道大约需要10毫秒,然后以大约每秒100MB的速度传输数据。

十年前,几乎所有的笔记本电脑都有磁盘。今天,几乎所有的设备都使用SSD,它使用闪存而不是旋转机器。闪存是非易失性的,信息以电荷的形式存储在电路中,即使在断电的情况下,这些电荷仍然存在于单个电路元件中。可以读取存储的电荷以查看它们的值是多少,并且可以用新值擦除和覆盖它们。闪存具有速度快、重量轻、可靠性高、掉在地上也不会损坏、耗电少等优点,因此也常常用于手机、相机等设备。SSD的每字节的价格仍然更贵,但正在下降,其优势是如此显而易见,几乎已经完全取代了笔记本电脑中的机械磁盘。

一台典型的笔记本电脑的SSD容量为250~500GB。可插入USB接口的外置硬盘的容量可达TB级别,它们仍然是基于旋转机械。tera是1万亿,也就是1012,这是你们将经常看到的另一个单位。太字节、千兆字节又有多大?在最常见的英语文本表示中,一个字节可以存储一个字母字符。《傲慢与偏见》大约有250页,约680000个字符,因此1GB可以容纳近1500份该书的拷贝。更有可能的是,我会存储一份拷贝,然后再放一些音乐。MP3格式的音乐大约每分钟1MB,所以我最喜欢的CD之一《简·奥斯汀歌集》的MP3版本大约是60MB,1GB的空间还可以再放15个小时的音乐。1995年,BBC出品的《傲慢与偏见》(Pride and Prejudice)由詹妮弗·艾尔(Jennifer Ehle)和科林·费斯(Colin Firth)主演,DVD只有两张,容量还不到10GB,所以我可以把它和100部类似的电影存储在1TB的空间里。

磁盘驱动器是演示逻辑结构和物理实现之间差异的一个很好的例子。像Windows上的文件资源管理器或macOS上的Finder这样的程序,将驱动器的内容显示为文件夹和文件的层次结构。但数据可以存储在旋转机械、没有移动部件的集成电路,或其他完全不同的东西上。计算机中的具体驱动器类型并不重要。驱动器自身的硬件和操作系统中称为文件系统的软件共同创建了这种组织结构。我们将在第6章再次探讨这个话题。

逻辑组织非常适合人们理解(或者更有可能的是,到现在我们已经完全习惯了它),其他设备提供了相同的组织,即使它们使用完全不同的物理方法来实现。例如,那些让你可以访问CD-ROM或DVD中信息的软件使这些信息看起来也像是存储在文件层次结构中,而不管它是如何进行物理存储的。USB设备、相机和其他使用可移动存储卡的小工具也是如此。即使是现在已经完全过时了的古老的软盘,在逻辑层面上看起来也是一样的。这是展示抽象这一概念的一个很好的例子,抽象是计算中的一个基础概念:物理实现的细节是隐藏的。在文件系统这一例子中,无论不同的技术实际是如何工作的,内容都以文件和文件夹的层次结构呈现给用户。

1.1.4 其他

还有其他多种设备可提供特定的功能。用户可以利用鼠标、键盘、触摸屏、麦克风、照相机和扫描仪等进行输入,显示器、打印机和扬声器则负责向用户输出。网络组件如Wi-Fi或是蓝牙负责与其他计算机通信。各种辅助技术帮助人们解决视力、听力或其他相关访问问题。

图1.2中的架构图显示了这些组件,就好像它们都是由一组称为总线的电线连接起来的,总线的称呼采用了电子工程的术语。实际上,计算机中有很多与其功能相对应的总线——用于连接CPU和RAM的长度短、速度快但昂贵的总线,用于连接耳机的较长、速度较慢且较为便宜的线。一些总线也会出现在机身外部,比如常见的用于将设备接入计算机的通用串行总线(Universal Serial Bus, USB)的连接线。

我们将在后文中的一些特殊场景下提及这些设备,不过现在不打算花太多时间来介绍它们,而只是简单地列举一些可能会和你的计算机配套或者相连的设备:鼠标、键盘、触控板和触摸屏、显示器、打印机、扫描仪、游戏控制器、耳机、扬声器、麦克风、照相机、手机、指纹传感器,以及与其他电脑的连接。这份设备列表还在不断增长。所有这些设备都经历了和处理器、内存以及磁盘驱动器相同的演化过程:物理属性发生了快速的变化,通常趋向于更廉价、更小巧、功能更多。

值得注意的是这些设备是如何结合在一起的。手机现在可以用作手表、计算器、照相机和摄像机、音乐和电影播放器、游戏机、条形码阅读器、导航仪,甚至手电筒。智能手机有着和笔记本电脑相同的抽象架构,即使因为不同的尺寸和供电约束,两者的实际外表有着很大不同。手机中没有如图1.3所示的硬盘,然而,它们使用闪存存储信息,这样在手机关机的情况下仍然可以存储通讯录、图片和应用等。它们也没有很多外部设备,虽然很可能有耳机插口以及USB接口。袖珍摄像头是如此廉价,大多数手机在两面都会安装。iPad及其他品牌的各类平板电脑在计算机可能形态的空间中占据了另一个位置,它们也是具有相同通用架构和相似组件的计算机。