计算机组成原理期末复习整理(《计算机组成原理与系统结构》包健 著)
目录
第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
步骤
- 根据CPU芯片提供的地址线数目,确定CPU访存的地址范围,并写出相应的二进制地址码
- 根据地址范围的容量,确定各种类型存储器芯片的数目和扩展方法
- 分配CPU地址线
- 连接数据线、R/W#、MREQ#等其他信号线
目标:看懂P185例5.3的①②③④,把这道例题的图片(建议把图5.27和5.29印在脑子里)
总结一些注意事项:
- 一定要按上面的步骤一步步来!!
- 位扩展需要的的芯片个数m = CPU数据长度 / 芯片数据长度;字扩展需要的的芯片个数n = CPU地址长度 / 芯片地址长度 ; 芯片个总数m*n = 要求的容量 / 芯片容量
- 芯片扩展时,先完成位扩展,再完成字位扩展 (例如我现在已经依据上述的公式求出了m和n,我用m个芯片完成了位扩展,我还需要n组这样的芯片组来完成字位扩展,总共是m*n个芯片)
如果芯片中又有RAM又有ROM:
- 分配CPU地址线的时候,高位的几根用来片选相应的存储芯片(例如哪些地址范围是选择ROM的、哪些地址范围是选择RAM的、哪些是保留的),要按题目要求,不可自己随意分配
- 如果RAM和ROM需要的地址长度不同,如ROM需要13条,RAM需要12条,那么在图上的表示形式是:前12条共同分配,第13条单独画,先正常地去连接ROM,在连接RAM时要加一个非门
- 读写信号只与RAM相连
- 最好把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个块
工作过程:
- CPU给出一个n位的主存地址
- Cache将地址中Cache块地址(其实不是,但现在主存地址和Cache地址一样了)取出
- 访问Cache块地址,取出标记字
- 比较两标记字,相同则命中,不同则不命中
优点:硬件简单,成本低,不涉及替换算法、只要比较标记字因而速度快
缺点:机制不灵活、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
直接映射不需要考虑替换算法,直接替换
全相联和组相联需要考虑替换算法
- RAND随机替换:有算法抖动
- FIFO先进先出:淘汰最先进入的,命中不改变最先进入的状态
- LRU最近最少使用:设计一个计数器,Cache每命中一次,命中块的计数器清零,其他块的计数器+1
*第6章 指令系统(重点)
- 指令格式 P232
操作码 OP 地址码 A
- 指令格式 P232
四地址指令
OP A1 A2 A3 A4
- (A1)OP(A2) -> A3
- A4给出下一条指令地址
特点:操作数不会被破坏
缺点:指令太长,实际应用中几乎不采用这种指令格式
三地址指令
OP A1 A2 A3
- (A1)OP(A2) -> A3
- (PC)+1 -> PC(一般除了if等指令,下一条指令会顺序存储在PC寄存器中)
特点:操作数不会被破坏
缺点:指令依然太长,执行一次指令要四次访存,取指令1次,取操作数2次,存结果1次
二地址指令
OP A1 A2
- (A1)OP(A2) -> A1
- (PC)+1 -> PC
特点:执行完指令之后,计算结果覆盖掉了一个操作数
缺点:执行一次指令仍要四次访存,取指令1次,取操作数2次,存结果1次
一地址指令
OP A1
- (ACC)OP(A1) -> A1:一般用于累加,取累加寄存器中的内容,与A1相加,结果存入A1
- (PC)+1 -> PC
优点:执行一次指只需访存两次,取指令一次,取操作数一次(被操作数和运算结果都放在累加寄存器ACC中,所以对于被操作数的读取和存入都不需要访存)
零地址指令
OP
特点:主要用在堆栈计算机中,参加运算的操作数从栈顶弹出,运算后结果压入堆栈中
- 寻址方式
分为指令寻址、数据寻址
- 指令寻址 P236
- 顺序寻址:PC + 1
- 跳跃寻址:例如JMP N
- 一些简单的数据寻址 P236
OP 寻址特征MOD 形式地址A 立即寻址(简单):A是一个立即数(操作数),所以不用访问存储器,可以直接使用
直接寻址(简单):A存放操作数的真实地址,访问一次主存就可以得到操作数
隐含寻址(不涉及A):数据存在专用寄存器,所以不需要给出地址,例如取(ACC)
- 间接寻址 P237
A中存放操作数的主存地址,间接地址可以有n个,访存次数由间接地址个数决定,所以缺点是速度较慢,上图中需要访问2次主存
![]()
间接寻址
寄存器寻址和*寄存器间接寻址(重要) P238
寄存器寻址(简单、快速):A中存放Ri(通用寄存器编号),Ri中保存了操作数,因为不用访问主存,所以速度块
当Ri中存放的不是操作数,而是操作数在主存中的地址,就是寄存器间接寻址~ 如下图
*寄存器间接寻址(最常用):Ri中保存了操作数在主存中的地址,访问一次主存就可以得到操作数
![]()
寄存器间接寻址
*基址寻址(重要)与变址寻址 P239
![]()
基址寻址
*基址寻址:A存放一个立即数(偏移量),基地址可以用专用寄存器(基址寄存器BR)也可以用通用寄存器,这里以通用寄存器为例,Ri存放通用寄存器地址,基地址+偏移量就得到了操作数在主存的地址,访问一次主存就可以得到操作数,具体步骤如下
- 访问Ri,取出基地址
- 主存地址 = 基地址(Ri) + 偏移量A
- 访问主存
特点:可扩大寻址范围(基址寄存器的位数大于形式地址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) rs rt rd shamt func 示例:add rd,rs,rt 功能:(rs) + (rt) -> rd
I型指令
31~26(6位) 25~21(5位) 20~16(5位) 15~0(16位) OP rs rt imm 示例:addi rt,rs,100 功能:(rs) + 100的符号位扩展 -> rt 示例:lw rt,100(rs) 功能:memory[(rs) + 100的符号位扩展] -> rt
![]()
两指令的数据通路
这里以I型指令为例,橙色数据通路为addi指令的完整数据通路,lw为橙色(除ALU输出后的一段)+ 黄色
步骤:
- CLK上升沿:取指令,根据PC值,从指令存储器中取地址为PC的指令Inst_ Code, PC_ NEW=PC+4
- CLK高电平:由译码和控制单元产生各个控制信号(如下表,w_ r_ s=01,确定rt为目的寄存器,imm_ s=1, 立即数符合扩展成32位,rt_ imm_ s,符合扩展后的数据送入ALU的B端,rs送入ALU的A端,ALU_ OP=10,ALU完成加法运算
- 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卷
计算机组成原理期末复习整理(《计算机组成原理与系统结构》包健 著)相关推荐
- 计算机操作系统期末复习,《计算机操作系统》期末复习课稿.docx
文档介绍: <计算机操作系统>复****要点第一章操作系统概述 1 .操作系统的定义及特征答: OS 定义: 操作系统是控制和管理计算机硬件和软件资源.合理地组织和管理计算机的工作流程以方 ...
- 长春工业大学计算机组成原理考试开卷考吗,计算机组成原理期末复习资料
长春工业大学人文信息学院 计算机星系工程系 计算机组成原理 期末复习资料 计算机组成原理 一.缩写词解释 CPU:中央处理器 ALU:算术逻辑单元 I/O:输入输出接口 RAM:随机存储器 SRAM: ...
- 计算机操作系统期末复习大纲
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一.绪论 1.操作系统的定义和作用 1.1 2.操作系统的特征 1.3 3.操作系统的功能 1.5 操作系统的分类(对应1.2 ...
- 计算机导论期末考试知识点,计算机导论期末复习(知识点).doc
计算机导论期末复习(知识点) 计算机导论期末复习(知识点) 单选题30%(每题1分,总30分) 判断题20%(每题1分,总20分) 问答题30%(7题左右,总30分) 综合回答题20%(2题,总20分 ...
- 计算机组成原理考试知识点总结,最新2018计算机组成原理期末复习考试知识点复习考点归纳总结总结...
电大计算机组成原理期末复习考试考点 归纳总结 科学研究和工程技术计算是计算机最早的领域. 信息处理是计算机应用的最广泛的领域. 计算机系统分为硬件和软件两大部分.硬件是实体部件,是看得见摸得着的.软件 ...
- 计算机组成原理 北理,北京理工大学计算机组成原理期末复习.pdf
计算机组成原理 期末复习 北京理工大学管理与经济学院 关磊 博士 提纲 内容回顾 练习题 2014年6月 北京理工大学管理与经济学院关磊博士 内容回顾 第1章引言 第2章数据表示 方法与数字逻辑 第3 ...
- 某微型计算机指令格式如图,计算机组成原理期末复习试题2套不含答案
计算机组成原理期末复习试题2套不含答案 (8页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 附录C:<计算机组成原理>期末试卷样 ...
- 期末复习【计算机组成原理】
期末复习[计算机组成原理] 前言 推荐 期末复习[计算机组成原理] 考点 复习 第1章 计算机系统概论 第2章 运算方法和运算器 第3章 存储系统 第4章 指令系统 第5章 中央处理器 第6章 总线系 ...
- 计算机组成原理期末复习第三章-3(唐朔飞)
计算机组成原理期末复习第三章-3(唐朔飞) ✨欢迎关注
最新文章
- 变量值为NAN的什么意思
- 开发中内存溢出问题及解决
- 引用类型传递参数的特殊情况(string)
- 从阿里中台战略看企业IT架构转型之道(下)
- 训练caffe:registry.count(type) == 0 (1 vs. 0) Solver type Nesterov already registered
- 如何用VB.NET控制Excel單元格裡的內容?
- python之星河战争游戏
- java 最大流最小割_最大流, 最小割问题及算法实现
- 优雅的编写多线程——原子量
- C++语言特性的性能分析
- argis加载tpk离线包
- 蚌埠学院计算机操作系统题库,蚌埠学院电子教务登录
- WIFI芯片调试APP Wif网络精灵
- Golang实现IP地址匹配
- 某小说App返回数据 解密分析
- 【Win10】电脑麦克风录音:设备调测
- Node抓取有道精品课视频
- 提笔忘字,亟须重视的电脑病
- centos7上搭建git服务器
- js操作cookie