导图社区 26计算机组成原理王道书知识点梳理
基于王道考研教材深度提炼,专攻计算机组成原理核心模块!本导图通过树状逻辑梳理数据表示、指令系统、存储结构等高频考点,帮助考生快速构建系统化知识体系。
编辑于2025-05-05 16:57:51计算机组成
第一章 计算机系统概述
计算机发展历程
计算机硬件发展历程
计算机软件发展历程
计算机系统的层次结构
计算机系统的组成
计算机硬件
计算机软件
计算机系统的层次结构
计算机系统的工作原理
计算机的性能指标
计算机的主要性能指标
机器字长
计算机进行一次整数运算所能处理的二进制数据的位数=通用寄存器的位数=ALU的宽度
数据通路带宽
指数据总线一次所能并行传送信息的位数
主存的容量
MAR的位数反映了存储单元的个数,MDR的位数反映了存储单元的字长。
运算速度
吞吐量
系统在单位时间内处理请求的数量
响应时间
指从用户向计算机发送一个请求,到系统对该请求做出响应并获得所需结果的等待时间。
CPU时钟周期
CPU工作的最小时间单位
主频(cpu时钟频率)
cpu每秒钟能执行多少时钟周期
cpu时钟周期=1/主频
CPI
执行一条指令所需的时钟周期数
IPS
即每秒执行多少条指令, IPS=主频/平均CPI
cpu的执行时间
cpu的执行时间=cpu时钟周期数/主频=(指令条数×CPI)÷主频
第二章 数据的表示和运算
数制与编码
进位计数制及其相互转换
B二进制 O八进制 D十进制 H十六进制
定点数的编码表示
真值和机器数
机器数的定点表示
定点小数
定点整数
原码、补码、反码、移码
负数补码=原码符号位不变取反+1
原码与反码一一对应,补码与移码一一对应
字长为n+1的原码表示范围为:
字长为n+1的补码表示范围为:
移码常用来表示浮点数的阶码,它只能用来表示整数。补码符号位取反即为移码。
移码大真值就大,移码小真值就小
整数的表示
无符号整数的表示
有符号整数的表示
c语言中的整数类型及类型转换
有符号整数以补码形式存储
有符号数与无符号数的相互转换
二进制各位位值不变,仅改变解释这些位的方式
不同字长的整型变量之间的转换
大字长->小字长
高位截断
小字长->大字长
char型为8位无符号整数
运算方法和运算电路
基本运算部件
运算器由算数逻辑单元ALU、移位器、状态寄存器PSW和通用寄存器组等组成
一位全加器
串行进位加法器
并行进位加法器
带标志加法器
算数逻辑单元
定点数的移位运算
逻辑移位
将操作视为无符号整数。逻辑移位的规则:左移时,高位移出,低位补0;右移时,低位移出,高位补0。对于无符号整数的逻辑左移,若高位的1移出,则发生溢出。
算数移位
将操作数视为有符号数。算术移位的规则:左移时,高位移出,低位补0,若移出的高位不同于移位后的符号位,即左移前后的符号位不同,则发生溢出;右移时,低位移出,高位补符号位,若低位的1移出,则影响精度。
定点数的加减运算
无符号数的加减运算
无符号数和有符号数进行运算,有符号数会变成无符号数
有符号数的加减运算
溢出判别方法
采用一位符号位
参加操作的两个数的符号相同,结果又与原操作数的符号不同,则表示结果溢出。
采用双符号位
两个符号位相同表示未溢出;两个符号位不同表示溢出,此时最高位符号位代表真正的符号。
采用一位符号位根据数值位的进位情况判断溢出
若符号位(最高位)的进位 Cn,与最高数位(次高位)的进位Cn-1相同,说明无溢出,否则说明有溢出。
加减运算电路
利用符号位比较大小
无符号数大小的比较
有符号数大小的比较
定点数的乘除运算
浮点数的表示与运算
浮点数的表示
浮点数的表示格式
浮点数的表示范围
浮点数的规格化
所谓规格化操作,是指通过调整一个非规格化浮点数的尾数和阶码的大小,使非零浮点数在尾数的最高数位上保证是一个有效值。
IEEE754标准
指数=阶码-偏置值(看成无符号数运算)
IEEE754单精度浮点数相互转换示例
浮点数的加减运算
1.对阶:使得两浮点数的阶码相等。小阶码向大阶码看齐,将阶码小的尾数右移一位,阶码加1,直到两个数的阶码相等为止。尾数右移时,低位溢出的位不要丢掉,应保留并参加尾数部分的运算。
2.尾数加减:按定点原码小数的加减运算规则进行运算。IEEE754浮点数尾数中有一个隐藏位,加减时需要将隐藏位还原到尾数部分。
3.尾数规格化:
4.舍入
就近舍入(0舍1入)
正向舍入
负向舍入
截断法
5.溢出判断
c语言中的浮点数类型
等式的赋值和判断会导致强制类型转换,char->int->long->double ,float->double。不同类型混合运算时,遵循类型提升原则。
数据的大小端和对齐存储
数据按边界对齐方式存放要求其存储地址时自身大小的整数倍。
第三章 存储系统
存储器概述
存储器的分类
按在计算机中的作用(层次)分类
主存储器
辅助存储器
高速缓冲存储器
按存储介质分类
按存储介质,存储器可分为磁表面存储器(磁盘、磁带)、磁芯存储器、半导体存储器(MOS型存储器、双极型存储器)和光存储器(光盘)。
按存取方式分类
随机存储器(RAM)
只读存储器(ROM)
都支持随机访问,RAM易失,ROM非易失
串行访问存储器
对存储单元进行读/写操作时,需按其物理位置的先后顺序寻址,包括顺序存取存储器(如磁带)和直接存取存储器(如磁盘、光盘)。
按信息可保存性分类
易失性存储器
如RAM
非易失性存储器
如ROM、磁表面存储器和光存储器
破坏性读出
非破坏性读出
存储器的性能指标
存储容量
单位成本
存储速度
多级层次的存储系统
主存储器
SRAM芯片和DRAM芯片
SRAM
DRAM
刷新
DRAM芯片的地址复用技术
DRAM 芯片容量较大,地址位数较多,为了减少芯片的地址引脚数,通常采用地址引脚复用技术,行地址和列地址通过相同的引脚分先后两次输入,这样地址引脚数可减少一半。
SRAM和DRAM的比较
只读存储器
只读存储器的特点
ROM 和 RAM 都是支持随机访问的存储器,其中SRAM 和 DRAM均为易失性半导体存储器而 ROM 中一旦有了信息,就不能轻易改变,即使掉电也不会丢失。ROM 具有两个显著的优点:①结构简单,所以位密度比可读/写存储器的高。②具有非易失性,所以可靠性高。
ROM的类型
主存储器的基本组成
多模块存储器
单体多字存储器
在单体多字系统中,每个存储单元存储m个字,总线宽度也为m个字,一次并行读出 m个字。在一个存取周期内,从同一地址取出m 条指令,然后将指令逐条送至 CPU执行,即每隔 1/m存取周期,CPU 向主存取一条指令。这显然提高了单体存储器的工作速度。
缺点:只有指令和数据在主存中连续存放时,这种方法才能有效提升存取速度。一旦遇到转移指令,或操作数不能连续存放时,这种方法的提升效果就不明显。
多体并行存储器
高位交叉编址
低位交叉编址
启动方式
轮流启动
同时启动
主存储器与CPU的连接
连接原理
主存容量的扩展
位扩展法
字扩展法
字位同时扩展法
存储芯片的地址分配和片选
线选法
译码片选法
存储器与CPU的连接
外部存储器
磁盘存储器
优缺点
组成
存取时间
寻道时间+旋转延迟时间+传输时间
磁盘地址结构
固态硬盘
磨损均衡
动态磨损均衡
静态磨损均衡
高速缓冲存储器
程序访问的局部性原理
时间局部性
时间局部性是指最近的未来要用到的信息,很可能是现在正在使用的信息,因为程序中存在循环和需要多次重复执行的子程序段,以及对数组的存储和访问操作。
空间局部性
空间局部性是指最近的未来要用到的信息,很可能与现在正在使用的信息在存储空间上是邻近的,因为指令通常是顺序存放、顺序执行的,数据一般也是以向量、数组等形式簇聚地存储的。
Cache的基本工作原理
基本工作原理
CPU与Cache之间以字为单位传输,Cache与主存之间以块为单位传输。主存与Cache间的操作由硬件完成。
Cache和主存的映射方式
直接映射
全相联映射
组相联映射
Cache行内
Cache中主存块的替换算法
随机算法
先进先出算法
最近最少使用算法(LRU)
最不经常使用算法
Cache的一致性问题
写操作命中(要被修改的块在Cache中)
全写法(直写法)
当 CPU 对 Cache 写命中时,必须把数据同时写入 Cache和主存。
回写法
当 CPU 对 Cache 写命中时,只把数据写入 Cache,而不立即写入主存,只有当此块被替换出时才写回主存。
写操作不命中
写分配法
更新主存单元,然后把这个主存块调入 Cache。它试图利用程序的空间局部性,缺点是每次写不命中都要从主存读一个块到Cache 中。
非写分配法
只更新主存单元,而不把主存块调入 Cache。
非写分配法+全写法,写分配法+回写法
虚拟存储器
虚拟存储器的基本概念
页式虚拟存储器
页表
地址转换
快表TLB
具有TLB和Cache的多级存储系统
TLB、Cache和Page缺少组合的分析
段式虚拟存储器
段页式虚拟存储器
虚拟存储器与Cache的比较
第七章 输入输出系统
I/O系统基本概念
输入输出系统
外部设备
I/O控制方式
I/O接口
I/O接口的功能
I/O接口的基本结构
I/O接口的类型
I/O端口及其编址
I/O方式
程序查询方式
程序中断方式
DMA方式
DMA控制器的组成
DMA的传输方式
停止cpu访存
周期挪用
DMA与CPU交替访存
DMA的传送过程
DMA方式和中断方式的区别
第六章 总线
总线概述
总线的基本概念
总线是一组能为多个部件分时和共享的公共信息传送线路。分时和共享是总线的两个特点。分时是指同一时刻只允许有一个部件向总线发送信息,若系统中有多个部件,则它们只能分时地向总线发送信息。共享是指总线上可以挂接多个部件,各个部件之间互相交换的信息都可通过这组线路分时共享,多个部件可同时从总线上接收相同的信息。
总线的分类
按功能层次分类
按时序控制分类
按数据传输方式分类
系统总线的结构
单总线结构
双总线结构
三总线结构
常见的总线标准
总线的性能指标
总线事务和定时
总线事务
总线定时
同步定时方式
异步定时方式
半同步定时方式
分离式定时方式
第五章 中央处理器
CPU的功能和基本结构
CPU的功能
中央处理器(CPU)由运算器和控制器组成。其中,控制器的功能是负责协调并控制计算机各部件执行程序的指令序列:运算器的功能是对数据进行加工。
CPU的基本结构
CPU的寄存器
指令执行过程
指令周期
指令周期的数据流
取值周期
间址周期
执行周期
执行周期的任务是取操作数,并根据 IR 中的指令字的操作码通过 ALU 操作产生执行结果。不同指令的执行周期操作不同,因此没有统一的数据流向。
中断周期
指令执行方案
单周期处理器
多周期处理器
流水线处理器
数据通路的功能和基本结构
数据通路的功能
数据通路的组成
组合逻辑元件(操作元件)
时序逻辑元件(状态元件)
数据通路的基本结构
CPU内部单总线方式
CPU内部多总线方式
专用数据通路方式
根据指令执行过程中的数据和地址的流动方向安排连接电路,避免使用共享的总线,性能较但硬件量大。
数据通路的操作举例
控制器的功能和原理
控制器的结构和功能
硬布线控制器
微程序控制器
微程序控制的基本概念
微程序控制器的组成和工作原理
微指令的编码方式
微指令的编码方式也称微指令的控制方式,是指如何对微指令的控制字段进行编码,以形成控制信号。编码的目标是在保证速度的情况下,尽量缩短微指令字长。
直接编码(直接控制)方式
字段直接编码方式
字段间接编码方式
微指令的地址形成方式
微指令的格式
微指令格式与微指令的编码方式有关,通常分为水平型微指令和垂直型微指令两种。
水平型微指令
垂直型微指令
硬布线和微程序控制器的特点
异常和中断机制
异常和中断的基本概念
异常和中断的分类
异常的分类
故障
自陷
终止
中断的分类
异常和中断响应过程
指令流水线
指令流水线的基本概念
流水线的基本实现
流水线设计的原则
流水线的逻辑结构
流水线的冒险与处理
在指令流水线中,可能遇到一些情况使得后续指令无法正确执行而引起流水线阻塞,这种现象称为流水线冒险。根据导致冒险的原因不同分为结构冒险、数据冒险和控制冒险3种。
结构冒险
数据冒险
控制冒险
流水线的性能指标
高级流水线技术
多处理器的基本概念
SISD、SIMD、MIMD
硬件多线程的基本概念
在传统 CPU 中,线程的切换包含一系列开销,频繁地切换会极大影响系统的性能,为了减少线程切换过程中的开销,便诞生了硬件多线程。在支持硬件多线程的CPU 中,必须为每个线程提供单独的通用寄存器组、单独的程序计数器等,线程的切换只需激活选中的寄存器,从而省略了与存储器数据交换的环节,大大减少了线程切换的开销。
多核处理器的基本概念
共享内存多处理器的基本概念
第四章 指令系统
指令系统
指令集体系结构
指令的基本格式
零地址指令
一地址指令
二地址指令
三地址指令
四地址指令
定长操作码指令格式
定长操作码指令在指令字的最高位部分分配固定的若干位(定长)表示操作码。一般n位操作码字段的指令系统最大能够表示 2"条指令。定长操作码对于简化计算机硬件设计,提高指令译码和识别速度很有利。当计算机字长为32 位或更长时,这是常规用法。
扩展操作码指令格式
指令的操作类型
指令的寻址方式
指令寻址和数据寻址
指令寻址
顺序寻址
通过程序计数器PC加1(1条指令的长度),自动形成下一条指令的地址。
跳跃寻址
数据寻址
常见的数据寻址方式
隐含寻址
这种类型的指令不明显地给出操作数的地址,而是隐含操作数的地址。例如,单地址的指令格式就隐含约定第二个操作数由累加器(ACC)提供,指令中只明显指出第一个操作数的地址。因此,累加器(ACC)对单地址指令格式来说是隐含寻址
立即(数)寻址
指令字中的地址字段指出的不是操作数的地址,而是操作数本身,也称立即数,采用补码表示。
直接寻址
指令字中的形式地址 A 就是操作数的真实地址 EA
间接寻址
寄存器寻址
与直接寻址的原理一样,只是把访问主存改为访问寄存器,指令的地址字段给出的是操作数所在寄存器的编号
寄存器间接寻址
相对寻址
基址寻址
变址寻址
堆栈寻址
程序的机器级代码表示
看书
CISC和RISC的基本概念
复杂指令系统计算机(CISC)
精简指令系统计算机(RISC)
CISC和RISC的比较
各种字长
存储字长
存储字长指一次内存访问能读取或写入的数据位数。存储字长取决于硬件设计(如总线宽度)。需匹配CPU的机器字长,避免多次访存(若存储字长小于机器字长,需多次读取)
机器字长=数据总宽度=通用寄存器位数
CPU一次能处理的二进制位数,由整数运算数据通路的宽度决定,与通用寄存器位数一致
指令字长
单条指令包含的二进制位数,反映指令的复杂度(如操作码+操作数地址的总长度)。指令字长通常为存储字长的整数倍