1.2 CPU和内存

计算机的核心是中央处理器(CPU)。在个人计算机中,CPU是由微小的硅芯片制成的微处理器。该芯片上刻有数百万个晶体管。晶体管是一种微型数字开关:它控制信号的两种状态,“开”或“关”,即“1”或“0”。微处理器由小于1平方英寸的陶瓷外壳保护,安装在印制电路板(也称为主板)上。主板上还有内存芯片,以及用于连接其他设备的端口(见图1-1)。

图1-1 树莓派3B型单板计算机,放在3.5平方英寸×2.25平方英寸的印制电路板上

计算机存储器是一系列统一的存储单元,这些单元称为“字节”。

1字节保存8位信息。

1位是最小的信息存储单元:“1”或“0”,“真”或“假”,“开”或“关”。

CPU可以按任意顺序访问内存中的字节。这就是计算机内存被称为“随机存取存储器(RAM)”的原因。同样的内存用于存储不同类型的信息:数字、字母、声音、图像、程序等。这些信息,必须以某种方式编码为0和1的序列。

2019年生产的典型个人计算机具有8GB(千兆字节)的RAM。

1 K字节(KB)= 1024字节 = 210字节,大约一千字节。
1 M字节(MB,“兆”)= 1024 K字节 = 220字节= 1,048,576字节,大约一百万字节。
1 G字节(GB,“吉”)= 1024 M字节 = 230字节 = 1,073,741,824字节,大约10亿字节。
1 T字节(TB)= 1024 G字节 = 240字节。
1 P字节(PB)= 1024 T字节 = 250字节。

一页有500~600个单词的文本,没有图片或特殊格式,大约需要3KB的存储空间;一张高分辨率照片可能需要2~3MB的存储空间,而1GB存储空间可以压缩的MP4格式保存数小时的视频。

CPU解释并执行存储在RAM中的指令。CPU获取下一条指令,解释它的操作代码,并执行适当的操作。有些指令用于算术和逻辑运算,有些用于将字节从一个位置复制到另一个位置,还有一些用于改变指令的执行顺序。除非特定指令告诉CPU“跳转”到程序中的另一个位置,否则指令将按顺序执行。“条件分支”指令告诉CPU继续下一条指令或跳转到另一个位置,具体情况取决于前一操作的结果。

以上这些操作都以惊人的速度发生。现代CPU以几GHz的速度运行,每条指令需要一个或几个时钟周期。

为了更好地了解CPU指令及其执行方式,让我们来看看“汇编语言”,这是一种低级计算机语言。它是你所听过的现代语言的基础,如C++、Java、JavaScript和Python。

图1-2展示了一个非常短的汇编语言程序,用于8088微处理器(在20世纪80年代早期用于最初的IBM PC),其中包含相应指令的十六进制代码(十六进制系统在第6章中解释)和我们的注释。汇编语言代码非常接近实际的机器代码,但它允许你使用名称而不是数字,来表示指令和内存位置。

CPU有几个内置存储器单元,称为寄存器。图1-2中的代码使用的两个寄存器,称为AX和BX。例如,第一条代码(MOV BX, 0000)将0移入BX寄存器。

图1-2 一段8088汇编语言代码

我们将它留给你作为练习(练习题6),请弄清楚这段代码计算的内容。结果存储在BX寄存器中。

计算机代码中的错误称为“缺陷(bug)”,消除程序错误的过程称为“调试(debug)”。

图1-2中的代码是在一个名为debug的程序的帮助下生成的,该程序随MS-DOS操作系统和早期版本的Windows一起提供。调试程序允许程序员以受控方式逐步执行程序,并在每一步检查内存的内容。在程序未按预期工作时,使用调试程序可以帮助发现错误。

1.找到一台废弃的台式计算机,确保已拔下电源线,然后取下机箱盖(或在网上查找打开机箱的台式PC的高分辨率图片)。识别主板、CPU和内存芯片,识别计算机的其他组件:电源、硬盘、CD ROM驱动器。

2.计算机内存称为RAM,因为: ✔

(A)它提供对数据的快速访问

(B)它安装在主板上

(C)它以兆字节为单位

(D)它的字节可以按随机顺序寻址

(E)它的芯片安装在矩形阵列中

3.我的旧PC有512MB的RAM和120GB的硬盘,硬盘存储空间是RAM的多少倍?✔

4.可以用2位编码多少个不同的值?3位呢?1字节呢?

5.ASCII码表示在典型的美式键盘上可以找到的英文字母、数字和其他字符的大写和小写字母。每个字符以相同的位数编码。每个字符1字节是否足以表示所有这些字符?每个字符所需的最小位数是多少? ✔

6.◆在执行图1-2中的程序段后,解释AX和BX寄存器的内容。这段代码计算了什么? »提示:十六进制的15是十进制的21。« ✔