第一章 计算机概论

冯·诺依曼计算机五大功能部件

计算机的五大部件可以归结为主机和外部设备五大部分,运算器,控制器和存储器三个部件构成计算机主机,还包括输入设备输出设备构成I/O系统,这两部分构成计算机系统。

主要功能:将程序和数据以机器所能识别和接受的信息形式输入到计算机内。

主要功能:将计算机处理的结果以人们所能接受的信息形式或其它系统所要求的信息形式输出。

主要功能:用于对数据的加工处理,完成算术逻辑运算。
运算器的核心是算术逻辑单元ALU
还有若干寄存器,用于存放操作数、中间结果或最终结果。

主要功能:用于控制整个计算机系统中的各部件有条不紊地进行工作。
计算机控制器是根据事先编好的程序进行指挥的。
控制器中程序计数器(PC)用来存放下一条指令的地址。
控制器中指令寄存器(IR)用来存放当前正在执行的指令。
控制器中指令译码器(ID)用来对指令进行译码,产生相应的操作控制信号。
控制器中时序控制逻辑(TC)用来对指令执行的时序进行控制。

主要功能:用于存放程序和数据。存储器是计算机存储信息的核心。
存储器可分为:主存储器辅助存储器
主存分为若干个存储单元。每个单元都有唯一的地址编码。通常是按字节或字节的整数倍编码。
存储器总是按地址进行访问的。


地址寄存器(MAR)用来暂存要访问的存储单元地址,在整个读写期间,MAR中的地址值不变。
数据寄存器(MDR)在读写期间用作数据缓冲,因为CPU的操作与存储器的存取速度差异很大,因此需要一个缓冲寄存器存放读出和写入的信息。
控制逻辑用来产生存储器操作所需各种时序信号

计算机的层次结构模型

第二章 信息表示

进位计数制

进位计数制的两个因素————基值和位权值
任何 R 进制数 N 均可表示为

R:基值。表示系数可以取0,1,···,R-1共R个数字并且是逢R进一的 。

数值转换

数制转换时整数部分、小数部分分别进行转换。

  • 任意R进制数转换为十进制数
    方法:按权相加
    例: 将二进制数11011.101转换为十进制数。

    八进制,十六进制同理

  • 十进制数转换为任意R进制数
    方法:整数部分和小数部分分别处理
    整数部分:除基取余
    ① 把被转换的十进制整数除以基数R,取其余数即为R进制整数的最低位的数字。
    ② 再用基数R去除前次所得的商,所得余数即为R进制整数相应位的数字。
    ③ 重复②,直到商为0为止。

小数部分:乘基取整
① 把被转换的十进制小数乘以基数R,取乘积的整数部分作为R进制小数的最高位的数字。
② 再用基数R乘前一步乘积的小数部分,取新的乘积的整数部分为R进制小数相应位的数字。
③ 重复②,直到乘积的小数部分为0或求得所要求的位数为止。

二进制数与八进制数之间的转换方法: “421法则”
二进制与十六进制数间的转换方法:”8421法则”

有符号数原码表示

  • 已知真值X,求X的原码
    X1=[+0.1100]
    X2=[-0.1100]
    X3=[+1100]
    X4=[-1100]
    X5=[0]

    X1原=[0.1100]
    X2原=[1.1100]
    X3原=[01100]
    X4原=[11100]
    X5原=[+0.0000]=0.0000
    =[-0.0000]=1.0000

原码与其真值极其相似,只是以最高位的1表示负数,0表示正数。其余各位与真值相同。
在原码表示中,0有两种表示方法:[+0]原=0.00···0,[-0]原=1.00···0

  • n位定点整数原码表示范围为-2^(n-1)–2^(n-1)
    n位定点小数原码表示范围为-1–1
    原码的移位规则:左移:符号位不变,各数位左移,低位补0;右移:符号位不变,各数位右移,低位补符号位

有符号数的反码表示

反码的一般求法

  1. 反码由符号位和数值位组成,最高位表示符号,后面是数值位
  2. 若X为正数,反码与其原码相同,符号位仍为0
  3. 若X为负数,反码符号位为1,数值位取原码的各位反,即0变1,1变0

反码的移位规则与原码相同

例:已知真值X,求反码
X1=+1100
X1反=[01100]
X2=-0.1100
X2反=[1.0011]
X3=0
X3反=[+0.0000]反=0.0000
=[-0.0000]反=1.1111

0的反码表示形式也有两种

反码的表示范围与原码相同

有符号数的补码表示

补码由符号位和数值位组成,最高位表示符号,后面是数值位
补码表示方法:正数的补码等于它本身,负数的补码等于其反码加1
[+0]补=[-0]补=0.0000,补码中“0”只有一种表示形式
n位纯整数补码的表示范围:-2^n–2^n-1

  • [x]补与[-x]补的关系
    [x]补称为机器正数, [-x]补称为机器负数。求[-x]补,也称为对[x]补的求补或变补
    [-x]补为[x]补连同符号位一起取反加1

已知[x]补,求[x/2]补
将【x】补连同符号位一起右移1位,左边补1位于原符号位相同的位,以保持其他符号位不变
【x】补=10010,则【x/2】补=11001
已知【x】补,求【2x】补
将【x】补连同符号位一起左移1位,右边补1位0,如果左移后符号位有变化则溢出
【x】补=00010,【2x】补=00100

移码

同一个真值的移码和补码仅相差一个符号位,若将补码的符号位取反,即可得到真值的移码
在移码表示中,0的表示是唯一的,即[+0]移=[-0]移=1.00···00
移码的表示范围与补码一致。

小结

设位数一共为8位
原码表示范围为 -127-127,即1111 1111-0111 1111
反码表示范围为 -127-127,即1000 0000-0111 1111
补码表示范围为 -128-127,即1000 0000-0111 1111

奇偶校验码

奇偶检验码由校验位和信息位组成,最高位为校验位,后面是信息位。校验位的取值为0或1使得整个码中1的个数为奇数,称为奇校验
偶校验与之相反。
缺点是:有偶数个位出错时,奇偶校验码无法检测出来

海明校验码

海明码也是由信息位、校验位两部分构成,但与奇偶校验不同,海明校验位不是1位而是多位。设被校验的信息位为k位,校验位为r位,则校验码的位数=k+r位。
海明校验码的校验规则是:

例:有3位数据位(即m=3),至少需要多少位的校验码,能够查出一种错误
解:设需要的校验码位数为x,带入公式
2^x >= 3 + x + 1
可以求出x为3

例:8位数据位0100 1101,求它的海明校验码
解:m=8带入公式
2^r >= 8 + r + 1
r=4
4位检验码,应当放置在海明码的2^k处
即2^0=1,2^1=2,2^2=4,2^3=8

图中可知第一位采用偶校验应当填入1,下列同理

浮点数的规格化表示

100.1=0.1001×2^3=0.001001×2^5 =0.00001001×2^7
规格化的目的:

  • 为了浮点数表示的唯一性。
  • 为了充分利用尾数的位数,以保留更多的有效数字,从而提高运算精度 。
    浮点数的规格化表示是指尾数的规格化表示。

规格化数的定义
①尾数采用原码表示

②尾数采用补码表示

IEEE754标准单精度浮点数(32位)


双精度浮点数(64位)与单精度类似,指数位变为11位,尾数位为52位

定点原码加减运算及实现

特点:符号位不能和数据一起参加运算
运算的规则:
(1) 加法:同号求和,异号求差;
减法:异号求和,同号求差。
(2) 求和时,两操作数的数值位相加得到和的数值位;
数值最高位产生进位,则结果溢出;
和的符号位采用第一操作数(被加数/被减数)的符号。
死方法:转换为十进制数,进行加减运算,再转换为原码

定点补码加减运算及实现

补码加减运算的基本规则
① 参加运算的各个操作数均以补码表示,运算结果仍以补码表示。
符号位与数值位一起参加运算。
③ 若求和,则将两补码数直接相加,得到两数之和的补码;若求差,则将减数变补(由[y]补求[-y]补),然后与被减数相加,得到两数之差的补码。
④ 补码总是对确定的模而言,若运算结果超过模(有从符号位上产生的进位),则将模自动丢掉。

定点数移位运算

一、逻辑移位

移位时不考虑符号。

逻辑左移:将寄存器的每一位数据向左移动一个位置,最低位补0,最高位移至进位位;
逻辑右移:将寄存器的每一位数据向右移动一个位置,最低位移至进位位,最高位补0。

二、算术移位
有符号的数称为算术移位,移位需要考虑符号位。
例:[X]补=11010100
算术左移一位后得:
10101000
算术右移一位后得:
11101010

定点乘法运算及实现

一、原码一位乘法
①将两数符号位做异或运算,得出结果的符号位
②将两数对应数值位相乘,得出结果的数值位
③重复2的步骤

二、补码一位乘法
①参加运算的数均以补码表示,结果仍以补码表示。
②增设yn+1,且初始化为0,部分积初始化为0。
③部分积与被乘数采用双符号位,且符号位参加运算。
④判别ynyn+1,并采取相应的操作。其中,右移指将部分积连同乘数( 包括yn+1 )一起算术右移。
⑤重复④,共做n+1次操作,最后一次不移位!
进行补码操作判断的表格如下


这里有y5,要做5次操作,第五次操作不进行移位;乘数取yn的位,即执行5次操作,取前四位

浮点数加减法运算

1.对阶
目的:将两浮点数的小数点对齐,即使两数阶码相等。
方法:小阶向大阶看齐,即将阶码小的数的尾数向右移位,每右移一位,阶码加1,右移位数等于两数阶码之差的绝对值

2.尾数求和/差

  • 若求和,则将对阶后的两数尾数直接相加,得到两浮点数之和的尾数;
  • 若求差,则将对阶后的减数的尾数做变补,然后与被减数的尾数相加,得到两浮点数之差的尾数。

3.结果规格化

  • 若尾数和/差发生溢出,则称向左破坏规格化。此时必须向右进行规格化(右规)。方法是将尾数向右移一位,恢复正确的符号,阶码加1。
  • 若尾数和/差未发生溢出,但不是规格化数,则称向右破坏规格化。此时必须向左进行规格化(左规)。方法是将尾数向左移位,每左移1位阶码减1,直到尾数满足规格化要求为止。
    正确的规格化数应当为00.1xxxx或者11.0xxxx(即数值位最高位与符号位相反)

    当结果为00.0011这种形式,不是规格化数,则需要左规,一直到满足规格化数形式为止,左规两位后化为00.1100同时阶码减2
    当结果为01.0011或10.0011这种形式,发生了溢出,只需要右规一位,化为00.1001同时阶码加1

原码的规格化:数值位最高位为1时是规格化数,即改数真值在1/2<=|x|<=1之间

4.舍入
为减少对阶和向右规格化时,因尾数右移而造成的误差,可进行舍入处理。
采用末位恒置1法:不管右移丢失数据的最高位是0还是1 ,均将尾数的最低位恒置为1。

第三章 存储器和存储体系

只读存储器的存储特点

只读存储器(ROM, Read Only Memory)存储器的内容只能随机地读出而不能随便写入和修改。ROM可作为主存的一部分,用于存放不变的程序和数据。ROM还可用作其它固定存储器

  • 与RAM相比:结构简单、集成度高、造价低、功耗小速度相当、、可靠性高、无掉电信息丢失、无读出信息破坏、不需要刷新。
  • 与外存相比:都具有掉电信息不丢失的特点,但速度高。

存储器存储数据的单位,存储器的性能指标。

1.存储容量:存储器所能存储的二进制信息总量。

存储容量的表示:在以字节为编址单位的机器中,常用字节(B)表示存储容量。

2.速度

  • 访问时间TA (读写时间、存取时间)
  • 存取周期TM (存储周期、读写周期)

3.带宽Bm (存储器数据传输率、频宽)
存储器单位时间内所存取的二进制信息的位数

主存的基本组成及基本操作

1.主存的基本组成

  • 存储体(存储单元):存储单元是存储器中存放二进制信息的最小单位。
  • 存储单元的编址:主存中所有存储单元的编号。
  • 存储单元的地址:存储单元的编号。
  • 存储单元的地址码:用于确定存储单元的编号。
    2.主存的基本操作
  • 读操作:从主存中取出一个存储单元的内容。
  • 写操作:将一个二进制数存入主存的一个存储单元中。

RAM的信息存储(SRAM和DRAM,三种刷新方式)

  • SRAM是靠触发器电路存储信息的,所存的信息表现为双稳态电路的电平,所以不需要刷新。
  • DRAM是靠电容存储信息的,必须在电容放电到一定程度前,重新写入信息,这一过程称为刷新。

三种刷新方式
① 集中式刷新
优点:控制简单,速度快
缺点:有“死区”

② 分散式刷新
优点:控制简单,无明显“死区”
缺点:速度慢,存储器速度较快时,存在时间上的浪费

③ 异步式刷新
优点:无明显“死区”,无时间上的浪费
缺点:控制复杂

主存的地址线位数、数据线的位数(计算)

高速缓冲存储器Cache

在主存和CPU之间增加Cache的目的:为了提高CPU与主存之间的数据传输速度。

  1. 命中率
    设Nc为访问Cache的总命中次数,Nm为访问主存的总次数,则 Cache 命中率为 :

  2. 平均访问时间
    设 tc 为命中时的Cache访问时间,tm 为未命中时的主存访问时间,则Cache到主存系统的平均访问时间为 :

  3. Cache的三种映射方式
    直接映射
    优点:地址变换简单,成本低
    缺点:不灵活
    全相联映射
    优点:灵活,命中率高
    缺点:成本高,规模受到一定限制
    组相联映射
    优点:灵活,命中率高,成本适中
    缺点:规模受到一定限制