计算机组成原理期末复习整理(《计算机组成原理与系统结构》包健 著)


目录

第1章 概论

第3章 信息编码与数据表示

第4章 运算方法与运算器

*第5章 存储体系(重点)

*第6章 指令系统(重点)

*第7章 控制器(重点)

附:杭电信工2017-2018学年计组试卷


第1章 概论

  • 计算机性能指标 P16

机器字长、存储容量、运算速度、可配置的外围设备、性能价格比、可靠性可维护性和可用性

  • 计算机硬件系统 P20

冯诺依曼体系:以运算器为中心

现代计算机:以存储器为中心

  • 计算机系统的层次结构 P24

共五层

第3章 信息编码与数据表示

  • 定点机器数表示 P74

原码的表示方法:正数符号位0,负数符号位1

补码的表示方法:正数 = 原码,负数除符号位 按位取反 末位+1

反码的表示方法:正数 = 原码,负数除符号位 按位取反

移码的表示方法:补码的符号位取反

  • 给定长度,表示范围

  • 浮点机器数的表示 P81

阶码:反映浮点数的范围大小和小数点的实际位置

尾数:反映浮点数的精度

  • *规格化浮点数(重要)

把尾数最高位(非零)为有效值的浮点数称之为规格化浮点数

例:x = 2^(-01) · (-0.1110) ,阶码3位,尾数5位,均用补码表示

e = -01 e原 = 1,01 e补 = 1,11

m = -0.1110 m原 = 1.1110 m补 = 1.0010

表示为11110010 

第4章 运算方法与运算器

  • 补码加减运算 P104

[X + Y] 补 = [X] 补 + [Y] 补

[X - Y] = [X] 补 + [-Y] 补

  • 溢出判断

加法时:只在正 + 正、负 + 负的时候溢出

减法时:只在正 - 负、负 - 正的时候溢出

  • 判溢方法 P106

①单符号判溢  ②进位判溢  ③双符号判溢

  • 移位 P109

逻辑左移和算数左移:低位补“0”

逻辑右移:高位补“0”

算数右移:高位补符号位

  • 十进制加法运算 P111

通常用二进制运算器,再用BCD码校正结果

  • 手工乘法 P113

需要具备一个2n位宽的、具有n个输入的并行加法器

  • 原码一位乘法 P114

符号位单独处理,PS = XS异或YS

数值部分按绝对值计算,|P| = |X|·|Y|

累计右移n次

ACC:累加结果和结果的高位MQ:乘数和结果的低位   

ACC清0,MQ一开始保存乘数 累加的结果更新ACC,然后右移一位到MQ中,原ACC最低为变为MQ最高位,舍弃MQ最低位  

  • *补码Booth乘法(重要) P116

符号位不用单独处理,求[A·B] 补

[A] 补和[-A] 补双符号位,[B] 补单符号位存在MQ

ACC先清零,MQ存乘数,其中MQ最低位补0

MQ次低位 - 最低位 = 1,累加[-A] 补

MQ次低位 - 最低位 = -1,累加[A] 补

MQ次低位 - 最低位 = 0,累加0

累加n+1次,算数右移n次,最后一次不移位,结果的高位保存在ACC,结果的低位保存在MQ

*第5章 存储体系(重点)

  • 存储器的层次结构 P161
存储器速度、容量、价格关系

存储层次由上到下呈现出以下特点:价格越来越低,速度越来越慢,容量越来越大  


  • 主存储器的性能指标 P163

主要有3个:存储容量、速度、价格;除此之外还有可靠性、访问方式等

速度:一般用存取时间、存储周期、存储器带宽来衡量

  • *存储容量的扩展(重要)

1K×4位的存储芯片
  •  位扩展:横向扩展(M × kN),数据线扩展为8根,两个芯片分别连接高四位和第四位数据线
扩展为1k×8位,片选信号要连在一起,一次可以读或写8位

  •  字扩展:纵向扩展(kM × N),地址线扩展为10根,两个芯片都与A0~A9相连,但对与A10,地址线上要加个非门,当扩展的地址线很多时,最好使用译码器
字扩展为2k×4位,A10地址线要加个非门,CS1和CS2片选信号要分开

  • 字位扩展(k1M × k2N),数据线扩展为8根,地址线扩展为10根
字位扩展为2k×8位
  • 几类存储器

半导体读写存储器RAM可分为两种:SRAM和DRAM

SRAM:静态存储器

DRAM:动态存储器

ROM:只读存储器、非易失性存储器,存系统程序和数据

RAM:随机存储器、易失性存储器,存用户程序和数据

  • *主存储器与CPU的连接(重要)P183~188

步骤

  1. 根据CPU芯片提供的地址线数目,确定CPU访存的地址范围,并写出相应的二进制地址码
  2. 根据地址范围的容量,确定各种类型存储器芯片的数目和扩展方法
  3. 分配CPU地址线
  4. 连接数据线、R/W#、MREQ#等其他信号线

目标:看懂P185例5.3的①②③④,把这道例题的图片(建议把图5.275.29印在脑子里)

总结一些注意事项:

  1. 一定要按上面的步骤一步步来!!
  2. 位扩展需要的的芯片个数m = CPU数据长度 / 芯片数据长度;字扩展需要的的芯片个数n = CPU地址长度 / 芯片地址长度 ; 芯片个总数m*n = 要求的容量 / 芯片容量
  3. 芯片扩展时,先完成位扩展,再完成字位扩展 (例如我现在已经依据上述的公式求出了m和n,我用m个芯片完成了位扩展,我还需要n组这样的芯片组来完成字位扩展,总共是m*n个芯片)

如果芯片中又有RAM又有ROM:

  1. 分配CPU地址线的时候,高位的几根用来片选相应的存储芯片(例如哪些地址范围是选择ROM的、哪些地址范围是选择RAM的、哪些是保留的),要按题目要求,不可自己随意分配
  2. 如果RAM和ROM需要的地址长度不同,如ROM需要13条,RAM需要12条,那么在图上的表示形式是:前12条共同分配,第13条单独画先正常地去连接ROM在连接RAM时要加一个非门
  3. 读写信号只与RAM相连
  4. 最好把ROM芯片单向箭头指向地址线、RAM芯片双向箭头指向地址线
  • Cache的基本原理 P195

CPU、Cache、主存的地址和数据传输

Cache的工作速度快,容量较主存也较小,价格较高

CPU与Cache或主存之间的数据交换以为单位,而Cahce与主存之间的数据交换以为单位

一个块由若干字组成,是定长的,Cache的块(或行)和主存的块等长

  • Cache的命中率 P197

h表示命中率,h = Nc、Nm(Nc表示命中Cache的次数、Nm表示命中主存的次数)

ta表示平均访问时间,tc表示命中时Cache的访问时间、tm表示Cache不命中时主存的访问时间,

ta = h·tc + (1-h)·tm     效率 = tc/ta

r = tm / tc

命中率h越接近1越好,r值5~10为宜,不宜太大

命中率h与程序的行为、Cache的容量、组织方式、块的大小有关

  • 主存和Cache的分块

Cache的块常被称作

Cache其实就是主存的副本,因此它们的块等长,分配块的方式也相同

如果主存或Cache容量为2^nKB,且按字节寻址,则需要n位长的地址

如果对主存或Cache分配2^m个块,我们使用一个n位长的地址(n > m),m位表示块地址,后n-m位表示块内地址

Cache和主存的块地址长度肯定不一样,但块内地址长度肯定一样

  • 主存与Cache需要地址映射的原因 P197

为了把主存块放到Cache中,必须应用某种办法把主存地址定位到Cahche中

因此有3种地址映射:直接映射、全相联映射、组相联映射

其中全相联映射块冲突最小

  • 直接映射 P198

[一个主存块只能映射到与之对应的一个Cache块]

新的Cache块如下,结果使Cache地址和被映射的主存地址一模一样,如下图的主存块地址000 => Cache标记位0 + Cache块地址00

以下图为例
标记位 长度1块地址 长度2块内地址 长度3
直接映射

举例:如果主存第6块要直接映射,这里的Cache是4个块,那就是映射到6%4=2,映射在第2个块

工作过程:

  1. CPU给出一个n位的主存地址
  2. Cache将地址中Cache块地址(其实不是,但现在主存地址和Cache地址一样了)取出
  3. 访问Cache块地址,取出标记字
  4. 比较两标记字,相同则命中,不同则不命中

优点:硬件简单,成本低,不涉及替换算法、只要比较标记字因而速度快

缺点:机制不灵活、Cache命中率低、利用率低

  • 全相联映射 P199

[一个主存块都能映射到所有Cache块]

新的Cache块如下,结果使Cache块的标记位和被映射的主存块的块地址一模一样,如下图的主存块地址001 => Cache标记位001

以下图为例
标记位 长度3块内地址 长度3
全相联映射

优点:机制灵活、命中率高

缺点:硬件开销大(检验命中和不命中算法的硬件开销),因此适用于小容量Cache

  • *组相联映射(重要) P200

前两种算法的一个集中体现 [一个主存块都能映射到部分Cache块] ,如下图的主存块地址0011 => Cache标记位高位00、组地址号11、标记位低位0或1(图中只有0,那就放在0)的块

以下图为例
标记位 长度2 + 1 = 3组地址 长度2(2^2个组)块内地址 长度3

PS:标记位长度还有一种计算方法:主存地址长度 - (组地址+块内地址长度),这样就不用计算r、t,但这就要求后面两个字段不能算错了

 

组相联映射

如果每组只有一个块,那么组相联映射其实就是直接映射

如果主存地址长度 - Cache地址长度 = t、Cache的一个组要分2^r块,标记位长度t+r

组地址号长度 :2^n个组,n位

  • 替换算法 P200

直接映射不需要考虑替换算法,直接替换

全相联和组相联需要考虑替换算法

  1. RAND随机替换:有算法抖动
  2. FIFO先进先出:淘汰最先进入的,命中不改变最先进入的状态
  3. LRU最近最少使用:设计一个计数器,Cache每命中一次,命中块的计数器清零,其他块的计数器+1

*第6章 指令系统(重点)

  • 指令格式 P232
操作码 OP地址码 A
  • 指令格式  P232 
四地址指令
OPA1A2A3A4
  1. (A1)OP(A2) -> A3
  2. A4给出下一条指令地址

特点:操作数不会被破坏

缺点:指令太长,实际应用中几乎不采用这种指令格式


三地址指令
OPA1A2A3
  1. (A1)OP(A2) -> A3
  2. (PC)+1 -> PC(一般除了if等指令,下一条指令会顺序存储在PC寄存器中)

特点:操作数不会被破坏

缺点:指令依然太长,执行一次指令要四次访存,取指令1次,取操作数2次,存结果1次


二地址指令
OPA1A2
  1. (A1)OP(A2) -> A1
  2. (PC)+1 -> PC

特点:执行完指令之后,计算结果覆盖掉了一个操作数

缺点:执行一次指令仍要四次访存,取指令1次,取操作数2次,存结果1次


一地址指令
OPA1
  1. (ACC)OP(A1) -> A1:一般用于累加,取累加寄存器中的内容,与A1相加,结果存入A1
  2. (PC)+1 -> PC

优点:执行一次指只需访存两次,取指令一次,取操作数一次(被操作数和运算结果都放在累加寄存器ACC中,所以对于被操作数的读取和存入都不需要访存)


零地址指令

OP

特点:主要用在堆栈计算机中,参加运算的操作数从栈顶弹出,运算后结果压入堆栈中

  • 寻址方式

分为指令寻址、数据寻址

  • 指令寻址 P236
  1. 顺序寻址:PC + 1
  2. 跳跃寻址:例如JMP N
  • 一些简单的数据寻址 P236
OP寻址特征MOD形式地址A

立即寻址(简单):A是一个立即数(操作数),所以不用访问存储器,可以直接使用

直接寻址(简单):A存放操作数的真实地址,访问一次主存就可以得到操作数

隐含寻址(不涉及A):数据存在专用寄存器,所以不需要给出地址,例如取(ACC)

  • 间接寻址 P237

 A中存放操作数的主存地址,间接地址可以有n个,访存次数由间接地址个数决定,所以缺点是速度较慢,上图中需要访问2次主存

间接寻址
  • 寄存器寻址和*寄存器间接寻址(重要) P238

寄存器寻址(简单、快速):A中存放Ri(通用寄存器编号),Ri中保存了操作数,因为不用访问主存,所以速度块

当Ri中存放的不是操作数,而是操作数在主存中的地址,就是寄存器间接寻址~ 如下图

*寄存器间接寻址(最常用):Ri中保存了操作数在主存中的地址,访问一次主存就可以得到操作数

寄存器间接寻址
  • *基址寻址(重要)与变址寻址 P239

基址寻址

 *基址寻址:A存放一个立即数(偏移量),基地址可以用专用寄存器(基址寄存器BR)也可以用通用寄存器,这里以通用寄存器为例,Ri存放通用寄存器地址,基地址+偏移量就得到了操作数在主存的地址,访问一次主存就可以得到操作数,具体步骤如下

  1. 访问Ri,取出基地址
  2. 主存地址 = 基地址(Ri) + 偏移量A
  3. 访问主存

特点:可扩大寻址范围(基址寄存器的位数大于形式地址A的位数)


变址寻址:A存放基地址,偏移量可以用专用寄存器(变址寄存器IX)也可以用通用寄存器,方式和基址寻址方式类似

特点:适合循环、数组问题

  • 相对寻址(不太会考) P240

A存放一个立即数,相对寻址多出现于跳转指令,跳转至(PC) + A 指令

相对寻址
  • CISC(复杂指令)和RISC(精简指令)的特点 P245
CISC、RISC区别

*第7章 控制器(重点)

  • 基本的计算机组成和功能 P264

基本组成主要包括3个部分:中央处理器CPU、存储器、I/O系统,他们之间通过总线连接

CPU的4个功能:指令控制、操作控制、时间控制、数据加工

  • *MIPS单周期CPU的数据通路和指令的执行过程(重要) P280 

实现R、I、J型指令的CPU数据通路

 MIPS的32位地址分配 实验书P176

R型指令
31~26(6位)25~21(5位)20~16(5位)15~11(5位)10~6(5位)5~0(6位)
OP(全0)rsrtrdshamtfunc
示例:add rd,rs,rt 功能:(rs) + (rt) -> rd

I型指令
31~26(6位)25~21(5位)20~16(5位)15~0(16位)
OPrsrtimm
示例:addi rt,rs,100 功能:(rs) + 100的符号位扩展 -> rt
示例:lw rt,100(rs)   功能:memory[(rs) + 100的符号位扩展] -> rt

两指令的数据通路

这里以I型指令为例,橙色数据通路为addi指令的完整数据通路,lw为橙色(除ALU输出后的一段)+ 黄色

步骤:

  1. CLK上升沿:取指令,根据PC值,从指令存储器中取地址为PC的指令Inst_ Code, PC_ NEW=PC+4
  2. CLK高电平:由译码和控制单元产生各个控制信号(如下表,w_ r_ s=01,确定rt为目的寄存器,imm_ s=1, 立即数符合扩展成32位,rt_ imm_ s,符合扩展后的数据送入ALU的B端,rs送入ALU的A端,ALU_ OP=10,ALU完成加法运算
  3. CLK下降沿:Write_ Reg=1 ,Mem_ Write=0, w_ r_ s=01,wr_ data_ s=00,ALU 运算结果送rt寄存器,PC_ s=00, 更新PC为PC_ NEW

附:杭电信工2017-2018学年计组试卷

A卷


B卷

 

  • 19
    点赞
  • 132
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值