第1章 欢迎阅读本书
1.1 我们的目标
计算机是非常“确定”的一个系统,即在任何时候,在相同的方法、相同的状态下(当然还包括相同的其实条件),同样的问题必然获得相同的结果。
1.2 怎么才能做到
通过0和1序列的组合,我们可以表示任何信息。
怎样用晶体管构建现代微处理器。
它是一个描述计算机怎样工作的模型。
一是“抽象”,二是“在脑子里不要对硬件和软件做仍和区分”。
1.3 两个反复出现的理念
1.3.1 抽象之理念
即如果我不去亚利桑那州旅游的话,抽象词“制冷系统”就足够了,而当时我却忽略了告诉机械师要穿越亚利桑那州沙漠这个“细节”。
1.3.2 硬件如软件
我们相信,不管你未来的职业取向是计算机软件还是硬件,两者都懂必然会使你更强。
1.4 计算机系统简述
需要声明的是,本书的重点落在那1英寸的空间内部,即CPU。
1.5 两个非常重要的思想
第一:所有的计算机(不管是最大的还是最小的、最快的还是最慢的、最贵的还是最廉价的),只要给予足够的时间和内存,他们所能完成的计算任务是相同的。
第二:我们用英语或其他语言给出了一个问题,然而计算机却能通过电子运转(运行程序)来解决这个问题,太奇妙了!
1.6 计算机:通用计算设备
同模拟机相比,数字机通过一组固定的、有限的数字和字符来完成操作,这就是为什么数字机最终主宰计算世界的原因。
因此我们说,即使是一台昂贵的大型计算机,它所能完成的事情并不比一台廉价的小计算机多多少。多花的钱只是使你拥有的计算机速度更快、显示器的分辨率更高、声卡系统音质更好。
1.7 从问题描述到电子运转
1.7.2 算法
算法描述的特点是流程化、步骤清晰,并确保该流程能终止。
1.7.3 程序
高级语言和底层计算机的相关性很弱(距离很远),或称之为“机器无关”语言。
1.7.8 小结
本书将详细介绍转换过程中的每一个环节,比如晶体管是怎样实现逻辑电路的,逻辑电路是怎样构成微电路的,以及微电路怎样实现一个特定的ISA(我们的ISA是LC-3)。
以及C语言又怎样转换成LC-3的ISA描述的全过程。
第2章 bit、数据类型及其运算
2.1 bit和数据类型
2.1.1 bit——信息的基本单位
如第1章所述,我们知道,计算机是一个包含了多层转换的系统。一个由自然语言(如英语)描述的问题,最终必须转换为计算机内部的电路工作(更具体地说时电子运动),才能得以解决。
2.1.2 数据类型
如果我们不仅定义了数值的表达方式(或编码方式),同时还定义了相关的操作方法,则在定义上称该表达方式为一种数据类型。
2.3 补码
换算口诀时:取反加1。即将A的码字按位取反,求得A的反码(即位补码),再对A反码加1,即求得-A的补码。
2.5 bit运算之一:算术运算
2.5.2 符号扩展
在一些情况下,为了减少占用空间,较小的数值会采用较少的bit来表示或存放。
如果我们用16-bit来表示,数值5为0000000000000101,-5则为1111111111111011。我们发现,如同在正数前面加0一样,在负数前面加1也不改变其值。
通过以上例子,我们得出结论:在二进制正数前面添加任意多的0不会改变其值;同样,在负数前面添加任意多的1(即符号扩展)也不会影响其值。我们称这两种操作为“符号扩展”,简称SEXT。符号扩展主要应用在两个不同长度的二进制数相加的场合。
2.6 bit运算之二:逻辑运算
2.6.1 “与”运算
例2-7 假设有一个8-bit数A,其最低两位有特殊含义。如果计算机根据A的最低两位值做4种不同的操作,请问如何单独提取这两位的值?答案是“屏蔽字位”(bit mask)操作。
2.6.4 “异或”运算
如果两个输入值不同,则XOR输出为1;如果两者相同,则XOR输出为0。
2.7 其他类型
2.7.1 位矢量
假设存在n个单元,我们可以用一个n-bit的二进制数代表这n个单元。当某个单元空闲时,我们将相应的bit清0;当某个单元忙碌时,我们将相应的单元置1。我们称这个二进制为“位矢量”。
2.7.2 浮点数
大多数的指令集都定义了一种或多种浮点数类型。其中之一通常被称作“float”类型,由32-bit组成,各bit的定义如下:
符号:1bit,代表符号(正数或负数)
数值范围:8bit,代表范围(指数,exponent)
数值精度:23bit,代表精度(尾数部分,fraction)
注意,尾数部分是被正则化的,即小数点左边有且仅有一位非0数字,但二进制方式下,这个非0数字只可能是1,所以这个1就不必表示出来了。因而,只要23-bit就能表示24位的精度。
第3章 数字逻辑
3.1 MOS晶体管
对于n-MOS晶体管,如果在栅极接入2.9V电压,则在源极和漏极之间就会产生一条通路,这时候n-MOS晶体管就等于是一根连通线,专业术语上称“导通”或“闭路”。如果栅极电压是0V,则源极和漏极之间断开,我们称源极和漏极之间“断开”或“开路”。
3.2 逻辑门
3.2.4 摩根定律
“不存在A和B都为假的情况”等价于“A和B之中至少有一个为真”。
这个等价转换关系被称为摩根定律。
3.3 组合逻辑
3.3.1 译码器
译码器的特点是,在所有输出中有且仅有一个为1,其余皆为0。
3.3.2 多路复用器
MUX的功能就是从多个输入中选择一个,并将其与输出相连。
3.3.5 逻辑完备性
只要有足够的AND、OR和NOT门,我们就可以实现任何逻辑函数。因此,我们称{AND,OR,NOT}逻辑门集合是“逻辑完备的”。
3.5 内存的概念
一个PC机的广告商可以这么说:“这个PC机有16MB的内存”。这句话的意思是,该计算机系统中有16M个内存位置,每个位置能容纳1个字节的信息。
3.6 时序电路
3.6.3 有限状态机
状态是系统各相关部件在特定时刻的一个快照。
第4章 冯·诺伊曼模型
程序是计算机指令的集合,其中每条指令对应计算机的一个基本动作。指令是程序的最小单位,换句话说,一条指令要么完整地执行、要么完全不执行,计算机无法只执行指令的部分功能。
4.3 指令处理
冯·诺依曼模型的核心思想是:程序和数据都是以bit流的方式存放在计算机内存中,程序在控制单元的控制下,依次完成指令的读取和执行。
4.3.1 指令
指令是计算机执行的最小单位。指令本身又由操作码和操作数两部分组成。
4.3.2 指令周期
指令的处理过程是在控制单元的控制下,精确地、一步一步地完成的。我们称这个执行的步骤顺序为指令周期,其中的每一步成为节拍。