1 前言
本文是基于《编码》、《穿越计算机的迷雾》两部著作进行读后整理的记录性博客。对书中较为重要的内容进行归纳整理进行二次创作,略去了繁琐的讲述细节,力求简明扼要。
编码:一种由若干符号和规则组成的系统,用来向计算机表述指令。
2 正文
2.1 从算盘到芯片
早期通过连接的方式将各部件联系起来,可是,在之前的介绍中,我们知道继电器的某些组合具有特定功能,可以重复利用(在后续发展中,出现了功能更加强大的电子化的 “继电器”——晶体管)。如果把晶体管预先连接成常见的构件,再用其来组装计算机会更加容易。
这种设想由英国物理学家杰里佛(Geoffrey Dummer,生于1909年)在 1952 年 5 月的一次演讲中提出,他说:“我希望展望未来,”,接下来他提出了以下观点:
“随着晶体管的出现以及半导体研究的广泛开展,现在也许可以设想将来会出现不采用连线而是由固体块组成的电子设备。这种固体块可能由绝缘层、导体层、整流层以及放大层四个层次组成,将不同层次的隔离区连接起来即可实现电子功能。”
实际上,硅片是薄而且易碎的,因此它必须被安全地封装起来,这样不仅可以起到保护作用,还可以为芯片内部的部件与其他芯片之间的连接提供某种便利。集成电路有几种不同的封装方式,但最为常见的是采用矩形塑料双排直插式(或称为 DIP),提供 14、16 或者 40 个管脚。
![]()
上图是一个有 16 个管脚的芯片。将芯片上的凹槽朝左放置,用 1 到 16 对管脚进行编号,从左下角开始,环绕到右端,依次为 1~16,16 号管脚位于左边最上端。管脚之间的距离正好是 1/10 英寸。
20 世纪 70 年代早期,使用集成电路在一块电路板上制造一个完整的计算机处理器变得可能,实际上这距离将整个处理器放入一块芯片中,只是一个时间问题。
英特尔在为日本吉康公司生产的可编程计算器设计芯片的过程中,决定采取一种不同的方法。正如英特尔工程师特德·霍夫说的:“我想让它成为一个具有通用功能的计算机,进而可以通过编程成为一个计算器,而不是使这个设备成为一个只有一些编程能力的计算器,”这导致了 Intel 4004 的产生,它是第一块 “计算机芯片”,或者叫做 “微处理器”。
自4004芯片开始,在比较微处理器性能时,通常采用三个衡量标准。
第一个标准:4004 是一个 4 位微处理器,这意味着处理器中数据通路宽度只有 4 位。每次做加、减运算时,它只能处理 4 位的数字。
第二个标准:4004 每秒最大时钟频率为 108,000 周期,即 108 KHz。时钟频率是指连接到微处理器并驱动它运行的振荡器的最大频率,超过此时钟频率,微处理器将不能正常工作。
第三个标准:4004 的可寻址存储器只有 640 字节。
然而,速度是处理器之间的根本不同点,同时速度也是我们使用计算机的一大原因。
最大时钟频率(maximum clock speed),也称为主频,是影响处理器速度的决定性因素之一。时钟频率决定了执行一条指令所需要的时间,处理器的数据位宽也影响处理器的速度。
2.2 微处理器
微处理器——将计算机中央处理器的所有构成组件整合在一起,集成在一个硅芯片上。
两种典型的微处理器
- Intel 8080
8080 是一个 8 位的微处理器,它包括 6000 个晶体管,运行的时钟频率为 2 MHz,寻址空间为 64 KB- Motorola 6800
6800 包括4000个晶体管,其寻址空间是 64 KB。第一个版本的 6800 的运行速度为 1 MHz,但摩托罗拉于 1977 年推出了运行速度分别为 1.5 MHz 和 2 MHz 的版本
这些芯片被称为 “单芯片微处理器”(single-chip microprocessors)
下面给出了 8080 的 40 个管脚的示意图:

从芯片引出的箭头表明这是一个输出(output)信号,这种信号由微处理器控制,计算机的其他芯片对该信号响应。指向芯片的箭头表明该信号是一个输入(input)信号,该信号由其他芯片发出,并由 8080 芯片对其响应。还一些管脚既是输入又是输出。和我们前面介绍的处理器一样,8080 需要两个不同的同步时钟输入,它们的频率都是 2MHz,分别标记为和
(上图中的 22 和 15)。
一个微处理器通常有多个用来寻址存储器的输出信号。用于寻址的输出信号的数目与微处理器的可寻址空间大小直接相关。8080 有 16 个用于寻址的输出信号,标记为,因此它的可寻址空间大小为
,即 65,536 字节。
8080 是一个 8 位的微处理器,可以一次从存储器读取或向存储器写入 8 位数据。该芯片还包括标记为的 8 个信号,这些信号是芯片仅有的几个既可以用做输入又可以用做输出的信号。当微处理器从存储器中读取一个字节时,这些管脚的功能是输入;当微处理器向存储器写入一个字节时,其功能又变成了输出。
芯片的其余 10 个管脚是控制信号(controlsignals)。例如,RESET(复位)输入用于控制微处理器的复位。
在前面设计的计算机中,所有的指令(除了 HLT 暂停指令)都是 3 个字节长,包括 1 字节的操作码和 2 字节的地址。在 8080 中,指令的长度可以是 1 字节、2 字节,或者 3 字节。有些指令使 8080 从存储器的一个特定地址读取字节到微处理器,有些指令使 8080 在其内部执行而不需要访问 RAM。8080 执行完第一条指令后,接着从存储器读取第二条指令,并依此类推。这些指令组合在一起构成了计算机程序,可以用来实现不同的功能。
当 8080 以最高速度 2 MHz 运行时,每个时钟周期是 500ns(1 ÷ 2,000,000 = 0.000000500s)。前面文章中的计算机的所有指令都需要 4 个时钟周期,8080 的每条指令需要 4~18 个时钟周期,这就意味着每条指令的执行时间为 2~9μs。
8080 芯片的微处理器的内部除累加器外还设置了 6 个寄存器(register),每个寄存器可以存放一个 8 位的数。这些寄存器和累加器一样,本质上都是锁存器。处理器既可以把数据从存储器读入寄存器,也可以把数据从寄存器存回存储器。
在 8080 中用 B,C,D,E,H 和 L 来表示新增的 6 个寄存器。H 可以代表高(High)而 L 可以代表低(Low)。通常把两个 8 位的寄存器 H 和 L 合起来构成一个 16 位的寄存器对,称做 HL,H 用来保存高字节而 L 用来保存低字节,这个 16 位的值通常用来对存储器寻址。
寄存器是计算机必不可少的部件吗?结合我们前面介绍的内容,我们不难发现寄存器不是必需的,但在实际应用中使用它们将带来很大的方便。很多计算机程序都同时用到多个数据,将这些数据存放在寄存器比存放在存储器更便于访问,因为程序访问内存的次数越少其执行速度就越快。
在 8080 中有一条指令至少用到了 63 个操作码,这条指令就是 MOV,即 Move 的缩写。其实该指令是一条单字节指令,它主要用来把一个寄存器中的内容转移到另一个寄存器(也可能就是原来的寄存器)。因为 8080 微处理器设计了 7 个寄存器(包括累加器在内),因此应用中使用大量的 MOV 指令是很正常的。
书中这部分内容过于繁琐,笔者不展开叙述,感兴趣可以过一遍书上的介绍,了解即可。下面内容为本章部分要点知识,作为摘录补充。
我们通常把微处理器可以寻址访问的存储器称为随机访问存储器(random access memory,RAM),主要的原因是:只要提供了存储器地址(有多种方式),微处理器可以用非常简便的方式访问存储器的任意存储单元。RAM 就像一本书,我们可以翻到它的任意一页。我们不需要像读磁带那样,为了收听后面部分内容只能快进磁带。
显然,随机访问存储器是非常好的一种寻址方式,对于经常访问存储器的微处理器来说更是如此。然而,在某些情况下使用不同的寻址方式访问存储器也是有好处的。例如,就像我们在浏览网页时,随着点击在一个页面中的超链接之间跳转,从一个页面进入另一个页面,而要回到最初的页面需要一步步地进行回退。这种形式的存储器称作栈(stack)。使用栈时,我们以从底部到顶部的顺序把数据存入栈,并以相反的顺序把数据从栈中取出,因此该技术也称作后进先出存储器(last-in-first-out,LIFO)。栈的特点是,最先保存到栈中的数据最后被取出,而最后保存的数据则被最先取出(这部分内容可以参考数据结构的知识)。
正如你大概所了解的,存储器并不是连接在微处理器上的唯一设备。一个完整的计算机系统通常需要输入/输出设备(I/O)以实现人机交互。输入/输出设备通常包括键盘和显示器等。微处理器是如何与外围设备(除存储器外,与微处理器连接的所有设备都可以称为外围设备)互相通信的呢?外围设备配备了与存储器类似的接口,微处理器通过与某种外围设备对应的特定地址(即接口)对其进行读写操作。在某些微处理器中,外围设备实际上占用了一些通常用来寻址存储器的地址,这种结构称作内存映像 I/O。
现代处理器使用多种技术来提高其运行速度。其中一种就是流水线技术(pipelining),即处理器在执行一条指令的同时读取下一条指令,尽管 Jump 指令在一定程度上会改变这种流程。现代处理器还包括一个 Cache(高速缓冲存储器),它是一个设置在处理器内部,访问速度非常快的RAM阵列,用来存放处理器最近要执行的指令。由于计算机程序经常执行一些小的指令循环,使用 Cache 可以避免反复加载这些指令。上面提到的这些提高运行速度的策略都需要在处理器内部增加更多的逻辑组件和晶体管。
3 小结
两种典型的微处理器篇介绍了早期市面上两种较为典型的微处理器,但原文内容过于繁杂,且结合了其他计算机的知识,笔者便进行了省略。感兴趣的可以阅读《编码》原著第 19 章内容进行了解。为了精简内容删减了部分较为详细的书写,仅作为整理总结。
网友评论