导图社区 计算机组成原理
对于正在备战计算机考研的学子以及计算机相关专业的学生来说,这张计算机组成原理的思维导图模板堪称学习利器,是助力他们深入掌握专业知识的宝藏资料。计算机组成原理作为计算机科学与技术专业的核心课程,涵盖了计算机系统从底层硬件到逻辑功能等多个层面的知识。这张思维导图以“计算机组成原理”为中心,全面且细致地辐射出各个关键知识板块。在中央处理器部分,详细梳理了控制器的功能与工作原理、指令流水线等重要概念,帮助学生理解计算机的指挥中枢如何运作。数据表示与运算板块则聚焦于运算方法和运算器、数据表示等内容,是掌握计算机数据处理基础的关键。存储系统部分,从存储器分类到主存储器与CPU的连接,再到高速缓冲存储器等,深入剖析了计算机的存储架构,让学生明白数据在计算机中的存储与读取机制。输入输出系统介绍了总线、I/O系统等知识,揭示了计算机与外部设备之间数据传输的奥秘。指令系统板块则详细讲解了指令格式、寻址方式等内容,是理解计算机如何执行指令的重要基础。这张思维导图采用清晰的层级结构和逻辑脉络,将计算机组成原理中复杂的知识点有机串联起来,使学习者能够一目了然地把握知识体系的全貌。
编辑于2026-03-19 14:34:13对于高等数学学习感到吃力的学生,尤其是正在紧张备考考研的同学来说,这张高数思维导图模板宛如一场“及时雨”,是一份不可多得的数学学习宝藏资料。从不定积分的概念、性质到计算方法,帮助学生掌握积分运算的基本技能,为后续学习奠定基础。多元函数微分学部分,详细介绍了多元函数的基本概念、偏导数、全微分等内容,使学生理解多元函数的微分特性。二重积分作为积分学在二维空间的应用,模板中清晰地展示了其概念、性质以及计算方法,助力学生解决实际问题。常微分方程板块,涵盖了常微分方程的基本概念、一阶微分方程、高阶微分方程等重要知识,让学生学会运用微分方程解决实际中的变化问题。这张思维导图采用简洁明了的图表和文字,将高数中错综复杂的知识点有机串联,形成了一个易于理解和记忆的知识网络。学生可以利用它进行课前预习,快速把握课程重点;课后复习时,能够查漏补缺,加深对知识点的理解;对于考研学生而言,更是复习备考的得力助手,帮助他们在有限的时间内高效复习,梳理知识体系,提升解题能力,在考试中取得理想的成绩,为后续的学术研究和职业发展打下坚实的数学基础。
对于线性代数学习存在困扰的学生,尤其是正在紧张备考考研的同学来说,这张线性代数知识图谱模板堪称“救星”,是一份不可多得的宝藏学习资料。从抽象的行列式公式,详细列举了行列式的基本性质与运算规则,为学生掌握这一基础工具提供了清晰的指引。矩阵部分更是内容丰富,涵盖了矩阵的概念、运算、逆矩阵以及矩阵的秩等关键内容,帮助学生构建起完整的矩阵知识体系。向量作为线性代数的重要组成部分,图谱中深入讲解了向量的线性相关性、线性表示等重要概念,为学生理解向量空间奠定基础。线性方程组部分,详细阐述了方程组的解的情况以及求解方法,使学生能够熟练运用所学知识解决实际问题。特征值和特征向量以及二次型等较为复杂的内容,在图谱中也得到了清晰的呈现,包括它们的定义、性质以及计算方法等,助力学生攻克学习难点。这张知识图谱采用图文并茂、逻辑清晰的形式,将线性代数中错综复杂的知识点有机串联,形成了一个易于理解和记忆的知识网络。学生可以利用它进行课前预习,快速把握课程重点;课后复习时,能够查漏补缺,加深对知识点的理解;对于考研学生而言,更是复习备考的得力助手,帮助他们在有限的时间内高效复习,提升解题能力,在考试中取得优异成绩。
对于正在全力备战计算机考研的同学以及计算机相关专业的学生而言,这张关于数据结构的思维导图模板无疑是一份不可多得的宝藏学习资料,是助力他们在计算机知识海洋中遨游的得力指南。在绪论部分,涵盖了数据结构的基本概念、算法的基本概念以及算法效率的度量等内容,为后续深入学习搭建起知识框架。线性表作为基础数据结构,详细介绍了线性表的定义、基本操作,以及顺序表和链表的实现方式,让学生清晰掌握线性数据的组织与存储。栈、队列和数组板块,讲解了栈和队列的特性、基本操作以及在不同场景下的应用,帮助学生理解特殊线性结构的使用方法。树和二叉树部分深入剖析了树的基本概念、存储结构,以及二叉树的遍历、线索化等重要知识,是掌握非线性数据结构的关键。图的结构则更为复杂,模板中详细阐述了图的定义、存储方式以及图的遍历、最短路径等算法,助力学生攻克图结构相关难题。查找和排序作为数据结构的重要应用,分别介绍了各种查找算法和排序算法的原理、实现及性能分析,让学生学会如何高效地查找和排序数据。无论是用于日常学习、课后复习,还是考研冲刺阶段的查漏补缺,它都能发挥巨大作用,帮助学生提升学习效率,在计算机学习的道路上稳步前行。
社区模板帮助中心,点此进入>>
对于高等数学学习感到吃力的学生,尤其是正在紧张备考考研的同学来说,这张高数思维导图模板宛如一场“及时雨”,是一份不可多得的数学学习宝藏资料。从不定积分的概念、性质到计算方法,帮助学生掌握积分运算的基本技能,为后续学习奠定基础。多元函数微分学部分,详细介绍了多元函数的基本概念、偏导数、全微分等内容,使学生理解多元函数的微分特性。二重积分作为积分学在二维空间的应用,模板中清晰地展示了其概念、性质以及计算方法,助力学生解决实际问题。常微分方程板块,涵盖了常微分方程的基本概念、一阶微分方程、高阶微分方程等重要知识,让学生学会运用微分方程解决实际中的变化问题。这张思维导图采用简洁明了的图表和文字,将高数中错综复杂的知识点有机串联,形成了一个易于理解和记忆的知识网络。学生可以利用它进行课前预习,快速把握课程重点;课后复习时,能够查漏补缺,加深对知识点的理解;对于考研学生而言,更是复习备考的得力助手,帮助他们在有限的时间内高效复习,梳理知识体系,提升解题能力,在考试中取得理想的成绩,为后续的学术研究和职业发展打下坚实的数学基础。
对于线性代数学习存在困扰的学生,尤其是正在紧张备考考研的同学来说,这张线性代数知识图谱模板堪称“救星”,是一份不可多得的宝藏学习资料。从抽象的行列式公式,详细列举了行列式的基本性质与运算规则,为学生掌握这一基础工具提供了清晰的指引。矩阵部分更是内容丰富,涵盖了矩阵的概念、运算、逆矩阵以及矩阵的秩等关键内容,帮助学生构建起完整的矩阵知识体系。向量作为线性代数的重要组成部分,图谱中深入讲解了向量的线性相关性、线性表示等重要概念,为学生理解向量空间奠定基础。线性方程组部分,详细阐述了方程组的解的情况以及求解方法,使学生能够熟练运用所学知识解决实际问题。特征值和特征向量以及二次型等较为复杂的内容,在图谱中也得到了清晰的呈现,包括它们的定义、性质以及计算方法等,助力学生攻克学习难点。这张知识图谱采用图文并茂、逻辑清晰的形式,将线性代数中错综复杂的知识点有机串联,形成了一个易于理解和记忆的知识网络。学生可以利用它进行课前预习,快速把握课程重点;课后复习时,能够查漏补缺,加深对知识点的理解;对于考研学生而言,更是复习备考的得力助手,帮助他们在有限的时间内高效复习,提升解题能力,在考试中取得优异成绩。
对于正在全力备战计算机考研的同学以及计算机相关专业的学生而言,这张关于数据结构的思维导图模板无疑是一份不可多得的宝藏学习资料,是助力他们在计算机知识海洋中遨游的得力指南。在绪论部分,涵盖了数据结构的基本概念、算法的基本概念以及算法效率的度量等内容,为后续深入学习搭建起知识框架。线性表作为基础数据结构,详细介绍了线性表的定义、基本操作,以及顺序表和链表的实现方式,让学生清晰掌握线性数据的组织与存储。栈、队列和数组板块,讲解了栈和队列的特性、基本操作以及在不同场景下的应用,帮助学生理解特殊线性结构的使用方法。树和二叉树部分深入剖析了树的基本概念、存储结构,以及二叉树的遍历、线索化等重要知识,是掌握非线性数据结构的关键。图的结构则更为复杂,模板中详细阐述了图的定义、存储方式以及图的遍历、最短路径等算法,助力学生攻克图结构相关难题。查找和排序作为数据结构的重要应用,分别介绍了各种查找算法和排序算法的原理、实现及性能分析,让学生学会如何高效地查找和排序数据。无论是用于日常学习、课后复习,还是考研冲刺阶段的查漏补缺,它都能发挥巨大作用,帮助学生提升学习效率,在计算机学习的道路上稳步前行。
计算机组成原理
计算机系统概论
计算机发展历程
计算机系统层次结构
计算机系统的组成
软件系统
硬件系统
计算机硬件
冯·诺依曼机的基本思想
冯诺依曼结构的模型机
基本工作方式
数据流驱动方式
按照指令的执行顺序,依次读取指令,然后根据指令所含的控制信息,调用数据信息进行处理
执行程序的过程中,始终以控制信息流为驱动工作的因素,数据信息流是被动的调用处理
特点
按地址访问并顺序执行指令
数据采用二进制编码表示主要原因是
二进制的运算规则简单
制造两个稳态的物理器件较容易
便于用逻辑门电路实现算数运算
计算机的功能部件
输入设备
输出设备
存储器
主存储器
按地址存取方式
组成
存储体
有许多存储单元组成
每个存储单元包含若干存储元件
存储字
存储字长
1B(8bit)或字节的偶数倍
每个存储元件存储一位二进制代码“0”或“1”
存储器地址寄存器(MAR)
MAR的长度与PC的长度相等
存储器数据寄存器(MDR)
位数通常等于存储字长
时序控制逻辑
辅助存储器
运算器
算数运算、逻辑运算
算术逻辑单元(ALU)
累加器(ACC)
乘商寄存器(MQ)
操作数寄存器(X)
变址寄存器(IX)
基址寄存器(BR)
···
程序状态寄存器(PSW)
控制器
程序计数器(PC)
指令寄存器(IR)
控制单元(CU)
计算机软件
系统软件和应用软件
三个级别的语言
机器语言
是计算机唯一可以直接识别和执行的语言
汇编语言
用助记符编写
特定的汇编语言与特定的机器语言指令是一一对应的,不同平台之间不可直接转移
高级语言
翻译程序
汇编程序(汇编器)
将汇编语言翻译成机器语言
解释程序(解释器)
将源程序中的语句按执行顺序逐条翻译成机器指令并立即执行
如 JavaScript、Python等,一般速度较编译程序慢
编译程序(编译器)
将高级语言程序翻译成汇编语言或机器语言程序
相同的高级语言程序在不同计算机上编译生成的机器指令条数可能不同
编译:是把高级语言源程序经词法、语法、语义分析及代码生成优化转化为汇编语言程序 汇编:将汇编语言源程序翻译为机器语言目标文件,处理符号地址 链接:则把多个目标文件与库文件链接成可执行文件,完成符号解析、重定位及库链接
软件和硬件的逻辑功能等价性
计算机系统的层次结构
多层次结构
微程序机器层
传统机器语言层
操作系统层
汇编语言层
高级语言层
虚拟机器
指令集体系结构(ISA)
计算机系统的工作原理
“存储程序”工作方式
从源程序到可执行文件
UNIX系统中的GCC编译器程序
预处理阶段
编译阶段
汇编阶段
链接阶段
指令执行过程的描述
取指令
PC->MAR->M->MDR->IR
分析指令
OP(IR)->CU
执行指令
Ad(IR)->MAR->M->MDR->ACC
补充
系列机的基本特征是指令系统向后兼容
相联存储器(CAM)
既可以按地址寻址又可以按内容寻址
IR、MAR、MDR是CPU内部工作寄存器,对用户是完全透明的
计算机的性能指标
计算机的主要性能指标
机器字长
一个存储单元中的位数
等于MDR的位数(通用寄存器位数)、ALU位数
说明
指令字长取决于指令的功能和格式,可以是单字长、半字长或双字长
指令寄存器位数不一定等于机器字长
计算机的位数是指机器字长,也是计算机一次能处理的二进制数的长度
操作系统的位数是指操作系统可寻址的位数
机器字长越长,数据的位数越多,定点数或浮点数所表示及运算的精度就越高
机器字长与运算速度关系不大,与存取速度和内存容量没有关系
数据通路带宽
主存容量
运算速度
吞吐量
系统在单位时间内处理的请求数量
是评价计算机系统性能的综合参数
响应时间
包括CPU时间与等待时间、存储器访问、I/O操作、操作系统开销等
时钟周期
时钟信号的宽度
时钟信号由机器脉冲源发出的脉冲信号经整形和分频后形成
时钟周期以相邻状态单元间组合逻辑电路的最大延迟为基准确定
主频
时钟周期的倒数
CPI
执行一条指令所需的时钟周期数
平均CPI
IPS
每秒执行多少条指令
IPS = 主频 / 平均CPI
IPC
每个时钟周期运行多少条指令
CPU执行时间
运行一个程序花费的时间
CPU执行时间 = CPU时钟周期数÷主频 = (指令条数×CPI)÷主频
MIPS
每秒执行多少百万条指令
MIPS = 指令条数÷(执行时间×106) = 主频÷(CPI×106)
FLOPS
每秒执行多少次浮点运算
MFLOPS
GFLOPS
TFLOPS
PFLOPS
EFLOPS
ZFLOPS
基准程序
几个专业术语
系列机
具有基本相同的体系结构,使用相同基本指令系统的多个不同型号的计算机组成的一个产品系列
兼容
软件或硬件的通用性
固件
将程序固化在ROM中组成的部件
数据表示与运算
数制与编码
进位计数制及其相互转换
进位计数制
二进制(B)
八进制(O)
十六进制(H 或 0x)
十进制(D)
不同进制数之间的相互转换
二进制数转换位八进制数和十六进制数
整数部分高位补“0”,小数部分低位补“0”
任意进制数转换为十进制数
十进制数转换为任意进制数
基数乘除法
整数部分
除基取余法
小数部分
乘基取整法
定点数的编码表示
真值和机器数
机器数的定点表示
定点整数
定点小数
原码、补码、反码、移码
原码表示法
用机器数的最高位表示数的符号
缺点
0 的表示不唯一,有±0 两个编码
加减运算比较复杂
补码表示法
正数的补码与原码相同
负数的补码等于模与该负数绝对值之差
n+1位补码的模为2n+1
补码与真值之间的转换
真值转换为补码
正数
负数
符号位取1,其余各位由数值部分“按位取反,末位加1”得到
补码转换为真值
符号位为0
与原码方式一样
符号位为1
真值符号位负,数值部分由补码数值部分“按位取反,末位加1”得到
变形补码(模4补码)
便于判断运算结果是否溢出
00表示正,11表示负
反码表示法
正数的反码表示与原码表示相同
移码表示法
在真值 x 上加上一个常数(偏移值,通常为2n)
特点
零的表示唯一
补码的符号位取反得到移码,反之亦然
全零对应真值最小值,全1对应真值最大值
移码保持了数据原有的大小顺序
整数的表示
无符号数的表示
范围 0 ~ 2n-1
有符号数的表示
计算机中的有符号整数都用补码表示
范围 -2n-1~ 2n-1-1
C语言中的整数类型及类型转换
C语言中的整型数据类型
短整型(16位)
整型(32位)
长整型
在32位机器中为32位,在64位机器中位64位
无符号(unsigned)
字符型(char,8位)
强制类型转换
TYPE b = (TYPE) a
保持二进制各位的值不变,仅改变解释这些位的方式
C语言存在隐式类型转换
有符号数与无符号数的转换
无符号数和有符号数一起参与运算时,计算机按无符号数来解释最终的执行结果
不同字长整数之间的转换
小字长转为大字长
原数字是无符号整数
零扩展
有符号整数
符号扩展
大字长转为小字长
直接截取低位部分
运算方法和运算电路
基本运算部件
一位全加器
全加器(FA)
加数Ai、加数Bi和低位传来的进位Ci-1
和表达式
Si = AiÅBiÅCi-1
进位表达式
串行进位加法器
将n个全加器相连可得到n位加法器
行波进位
位数越多,延迟时间越长
并行进位加法器
带标志加法器
溢出标志 OF
OF = CnÅCn-1
符号标志 SF
SF = Fn-1
零标志 ZF
ZF=1 当且仅当 F=0
进位/借位标志 CF
CF = CoutÅCin
算数逻辑单元(ALU)
A
B
Cin
ALUop
控制多路选择器(MUX)
定点数的移位运算
逻辑移位
算术移位
定点数的加减运算
补码的加减运算
溢出的判别方法
仅当两个符号相同的数相加或两个符号相异的数相减时才可能产生溢出
判别方法
采用一位符号位
采用双符号位
符号位00表示正数,11表示负数
计算结果符号位 Ss1Ss2
00
结果为正,无溢出
01
结果正溢出
10
结果负溢出
11
结果为负,无溢出
存储模4补码仅需一个符号位,只在ALU中采用双符号位
采用一位符号位根据数值位的进位情况判断溢出
V = CnÅCn-1
正溢出
两正相加,最高有效位产生进位,符号位不产生进位
负溢出
两负相加,最高有效位不产生进位,符号位产生进位
加减运算电路
原码的加减法运算
定点数的乘除运算
定点乘法运算
乘法运算的基本原理
用加法和移位运算实现
乘法运算电路
除法运算
基本原理
除法运算电路
补充
算数左移前后符号位不一致,说明发生了溢出
浮点数的表示与运算
浮点数的表示
浮点数的表示格式
N = (-1)s×M×RE
32位浮点数
符号 S
阶码 E
反映表示范围
尾数 M
反映精度
基数 R
浮点数的进制,决定了阶码变化的权重
浮点数的表示范围(非IEEE 754标准规格化浮点数)
负数
负上溢,负下溢
正数
正下溢,正上溢
浮点数运算下溢,直接当做机器零处理,不会引发中断;浮点数上溢引发内中断
浮点数的规格化
左规
尾数最高位不是有效位
尾数每左移一位,阶码减1
右规
运算结果的有效位进到小数点前面
尾数右移一位,阶码加1(右规只需一次)
基数为2的原码规格化位数M应满足 1/2≤|M|<1
正数为 0.1×...×的形式
最大
0.11...1
1-2-n
最小
0.100...0
1/2
负数为1.1×...×的形式
最大
1.100...0
-1/2
最小
1.11...1
-(1-2-n)
当尾数为补码表示,负数的格式化形式为 1.0x...x
规格化的目的是为了增加数据的表示精度
IEEE 754 标准
格式
符号+阶码+尾数
单精度
1+8+23
阶码取值范围1~254
全0和全1的阶码用来表示特殊值
双精度
1+11+52
阶码用移码表示,尾数用原码表示
默认规格化存储,尾数的最高位(整数位)总是1,为隐藏位
真值
单精度
(-1)×1.f×2e-127
双精度
(-1)×1.f×2e-1023
特殊值
+0/-0
全0阶码全0尾数
+¥/-¥
全1阶码全0尾数
非数(NaN)
全1阶码非0尾数
非规格化数
全0阶码非0尾数
(-1)×0.f×21-127
定点、浮点表示的区别
数值表示范围
精度
相同字长,浮点数扩大了表示范围,精度降低
数的运算
溢出问题
浮点运算规格化后阶码超出所能表示范围才发生溢出
浮点数的加减运算
对阶
求阶码差
小阶码向大阶码看齐
阶码小的尾数每右移移位,阶码加1
尾数加减
尾数规格化
舍入
舍入方法
就近舍入
正向舍入
负向舍入
截断法
说明
定点数没有舍入的概念
浮点数舍入的情况有两种
对阶
右规格化
舍入不一定产生误差
C语言默认舍入规则
要舍弃的部分最高位为0
直接截断
最高位为1剩余部分不为0
进位
最高位为1剩余部分为0,看保留部分最低位
最低位为0,直接截断,否则进位
溢出判断
指数上/下溢
右规和尾数舍入
左规
C语言中的浮点数类型
float和double
类型提升和隐式类型转换
int型和float型的精度和范围分析
数据的大小端和对齐存储
数据的“大端方式”和“小端方式”存储
最低有效字节(LSB)和最高有效字节(MSB)
大端方式
先存储高位字节
字中的字节顺序和原序列相同
小端方式
先存储低位字节
字中的字节顺序和原序列相反
数据按“边界对齐”方式存储
为提高内存访问效率和满足硬件要求,将不同数据类型按其自身大小倍数的特定边界进行存储,结构体等复合类型也遵循相关对齐规则以保证整体存储地址符合要求的策略
存储系统
存储器概述
存储器的分类
按在计算机中的作用(层次)分类
主存储器
辅助存储器
高速缓冲存储器
按存储介质分类
磁表面存储器
磁带、磁盘
磁芯存储器
半导体存储器
MOS型存储器、双极型存储器
光存储器
光盘
按存取方式分类
随机存储器(RAM)
只读存储器(ROM)
串行访问存储器
顺序存取存储器(SAM)
磁带
直接存取存储器(DAM)
速度介于随机存储器和顺序存储器之间
磁盘、光盘
按信息的可保存性分类
易失性存储器
非易失性存储器
读出类型
破坏性读出
非破坏性读出
存储器的性能指标
存储容量
存储字数×字长
单位成本
总成本÷容量
存储速度
数据传输速率(每秒传送的信息位数) = 数据宽÷存取周期
存取时间Ta
分读出时间和写入时间
存取周期Tm
存储器进行一次完整的读/写操作所需的全部时间
主存带宽Bm
数据传输速率
每秒从主存进出信息的最大数量
单位:字/秒、B/s、b/s
多级层次的存储系统
主要思想
上一层的存储器作为低一层存储器的高速缓存
主存和Cache之间的数据调动是由硬件自动完成的,对程序员透明
主存和辅存之间的数据调动是有硬件和操作系统共同完成的,对应用级程序员以上透明
主存储器
SRAM芯片和DRAM芯片
存储元、存储单元、存储体
SRAM
静态随机存储器
工作原理
存储元用双稳态触发器(六晶体管)来记忆信息
即使信息被读出后,仍保持原状态(非破坏性读出)
存取速度快,但集成度低,功耗较大,价格昂贵
一般用作高速缓存
DRAM
动态随机存储器
工作原理
利用存储元电路中栅极电容上的电荷来存储信息的
基本存储元只使用一个晶体管
相对SRAM
集成度高,位价低,功耗小
存取速度慢
一般用于大容量的主存系统
刷新
原因
电荷一般只能维持1~2ms
读操作会使其状态发生改变(破坏性读)
刷新周期
对同一行进行相邻两次刷新的时间间隔,通常2ms
刷新方式
集中刷新
死时间(访存死区)
分散刷新
存储器系统的工作周期分为两部分,前半用于正常读写,后半用于刷新
没有死区,但加长了系统的存取周期
异步刷新
刷新周期÷行数=相邻两行之间刷新的间隔 t
每隔时间 t 发出一次刷新请求
死时间分布更加分散,避免CPU连续等待过长时间
注意
刷新对CPU透明
DRAM刷新单位是行,芯片内部自行生成行地址
刷新操作类似于读操作
地址引脚复用技术
行地址和列地址通过相同的引脚分前后两次输入
当地址线增加一根时,通过地址线服用技术,容量至少提高到原来的4倍
行(r)、列(c)数的优化原则
减少地址引脚数
使|r-c|最小
减少刷新开销
r≤c
行缓冲容量的计算
行缓冲器
大小 = 列数×存储元的位数
采用SRAM
DRAM芯片的容量
位平面数×行数×列数
SDRAM(同步DRAM)芯片
SRAM和DRAM的比较
都是易失性半导体,区别在于是否需要刷新
存储器芯片的内部结构
存储体
存储单元的集合
行选择线 X 和列选择线 Y 选择所访问的单元
地址译码器
单译码器
双译码器
I/O电路
片选控制线
读/写控制器
只读存储器
ROM的特点
结构简单,位密度高
具有非易失性,可靠性高
类型
掩模式只读存储器(MROM)
一次可编程只读存储器(PROM)
一旦写入,内容就无法改变
可擦除可编程只读存储器(EPROM)
编程次数有限,写入时间过长
Flash存储器
不加电可长期保存,在线可进行快速擦除与重写
写入前需要擦除原有数据,比读取要慢
U盘采用Flash存储器技术,属于ROM
固态硬盘(SSD)
由控制单元和存储单元(Flash)组成
主存储器(MM)的基本组成
译码驱动电路
存储矩阵
读写电路
地址线、数据线、片选线、读写控制线
多模块存储器
空间并行技术
提高存储器的吞吐率
单体多字存储器
每次并行读出m个连续的字
总线宽度要扩展为m个字
缺点
只有指令和数据在主存中连续存放时才能有效提升存取速度
多体并行存储器
高位交叉编址
高位地址表示模块号,低位地址为模块内地址
仍是顺序存储器
低位交叉编址
模块号 = 单元地址 % m
轮流启动方式
存储器交叉模块数 m ≥ 模块存取周期T / 总线周期r
连续存取m个字所需时间
t = T+(m-1)r
访存冲突
m次访问的访存地址出现在同一个模块内
此时需延迟发生冲突的请求
同时启动方式
所有模块一次并行读/写的总位数正好等于数据总线的位数
主存储器与CPU的连接
连接原理
数据总线
地址总线
控制总线
主存容量的扩展
位扩展法
CPU的系统数据线数多于存储芯片的数据位数
字扩展法
系统数据线位数等于芯片数据线位数,系统地址线位数多于芯片地址线位数
由系统地址线的高位译码得到个芯片的片选信号
字位同时扩展法
二者组合组合
存储芯片的地址分配和片选
线选法
译码片选法
存储器与CPU的连接
合理选择存储芯片
地址线的连接
实际的主存容量不能代表MAR的位数,MAR应保证能访问到整个主存地址空间
数据线的连接
读/写控制线的连接
低电平有效
片选控制线的连接
外部存储器
磁盘存储器
优缺点
优点
存储容量大,位价低
记录介质可重复使用
记录信息可长期保存不丢失
非破坏性读出
缺点
存取速度慢
机械结构复杂
对工作环境要求全较高
磁盘存储器
磁盘存储器的组成
组成
磁盘驱动器
由磁头、磁盘和读写电路等组成,不是I/O接口
磁盘控制器
磁盘盘片
存储区域
记录面->磁道->扇区(块,磁盘读/写的最小单位)
磁头数
柱面数
扇区数
磁盘高速缓存
磁记录原理
原理
编码方法
磁记录方式
磁盘的性能指标
记录密度
道密度
沿磁盘半径方向单位长度上的磁道数
位密度
磁道单位长度上的二进制代码位数
面密度
位密度×道密度
磁盘的容量
非格式化容量
记录面数×柱面数×每条磁道的磁化单元数
格式化容量
记录面数×柱面数×每道扇区数×每个扇区的容量
格式化要对磁盘划分扇区,写入一些控制信息,扇区尾部还要留一定空隙,导致格式化后的实际容量要比非格式化的容量要小
存取时间
寻道时间+旋转延迟时间+传输时间
旋转延迟时间平均期望为旋转半圈的时间
数据传输速率
单位时间向主机传送数据的字节数
Dr = rN
磁盘转速为 r 转/秒,每条磁道容量为 N 字节
磁盘地址
驱动机号 | 柱面(磁道)号 | 盘面(磁头)号 | 扇区号
磁盘的工作过程
寻址、读盘、写盘
读/写是串行的
成批(组)方式进行数据读/写
磁盘阵列
RAID(独立冗余磁盘阵列)
思想
多个独立的物理磁盘组成一个独立的逻辑盘
数据在多个物理盘上分割交叉存储,并行访问
提高存储性能、可靠性、安全性
RAID0
无冗余无校验
条带化
提高读/写速率
RAID1
镜像磁盘互为备份
容量减少一半
RAID2~5
通过数据校验提高容错能力
固态硬盘
原理
基于闪存技术的存储器
电可擦除ROM(EEPROM)
组成
闪存翻译层
负责翻译逻辑块号,找到对应页(Page)
存储介质
多个闪存芯片(Flash Chip)
每个芯片包含多个块,每个块包含多个页
读写性能特性
以页(Page)为单位读/写
相当于磁盘的“扇区”
以块(Block)为单位“擦除”,擦干净的块,其中的每页都可以写一次,读无限次
支持随机访问,系统给定一个逻辑地址,闪存翻译存可通过电路迅速定位到对应的物理地址
读快、写慢
要写的页如果有数据,则不能写入,需要将块内的其他页复制到一个新的(擦除过的)块中,再写入新的页
与机械硬盘相比的特点
SSD读写速度快,随机访问性能高,用电路控制访问位置; 机械硬盘通过移动磁臂旋转磁盘控制访问位置,有寻道时间和旋转延迟
SSD安静无噪声、耐摔抗震、能耗低、造价更贵
SSD的一个“块”被擦除次数过多(重复写同一个块)可能会坏掉 机械硬盘的扇区不会因为写的次数太多而坏掉
磨损均匀技术
思想
将“擦除”平均分布在各个块上,以提升使用寿命
动态磨损均匀
写入数据时,优先选择累积擦除次数少的心闪存块
静态磨损均匀
SSD检测并自动进行数据分配、迁移,让老旧的闪存块承担以读为主的存储任务,让较新的闪存块承担更多写任务
高速缓冲存储器
程序访问的局部性原理
时间局部性
空间局部性
Cache的基本工作原理
将某些主存块复制到Cache中,缓和CPU与主存之间的速度矛盾
两种访问方式
先访问Cache,未命中再访问主存
同时访问,若Cache命中则停止访问主存
主存地址可拆分为 [主存块号, 块内地址] 的形式
Cache的功能完全由硬件实现
CPU访存时发送的时主存物理地址
性能分析
命中率
H = Nc/(Nc+Nm)
平均访问时间
Ta = Htc+(1-H)tm
Cache总容量 = 存储容量 + 标记阵列容量(有效位、标记位等)
页式内存管理的页面失效率
= 未命中次数 / 总访问次数
Cache和主存的映射方式
直接映射
Cache行号 = 主存块号 mod Cache总行数
冲突,原来的块将无条件的被替换出去
地址结构
标记 | Cache行号 | 块内地址
全相联映射
主存中的块可以装入Cache中的任何位置
组相连映射
将Cache分成Q个大小相等的组
Cache组号 = 主存块号 mod Cache组数
地址结构
标记 | 组号 | 块内地址
标记项
有效位 | 脏位 | 替换控制位 | 标记位
r路组相连映射需设置r个比较器
Cache中主存块的替换算法
随机算法(RAND)
先进先出(FIFO)
近期最少使用(LRU)
对每个Cache行设置一个计数器(LRU替换位)
计数变化规则
命中时,所命中行计数器清零,比其低的计数器加1,其余不变
未命中且还有空闲行时,新装入的行的计数器置0,其余非空闲行全加1
未命中且无空闲行时,计数最多的替换,新装入的置0, 其余加1
最不经常使用(LFU)
新行装入置0,每被访问一次就加1,替换访问次数最少的行
Cache的一致性问题
写命中
全写法(直写法)
写命中后,把数据同时写入Cache和主存
写缓冲
FIFO队列,减少时间损耗
回写法
替换出时才写回主存
修改位(脏位)
写不命中
写分配法
更新主存单元,然后将主存块调入Cache
非写分配法
只更新主存单元
多级Cache
各级Cache间
全写法+非写分配法
Cache和主存间
写回法+写分配法
分离Cache结构
指令Cache
数据Cache
虚拟存储器
虚拟存储器的基本概念
虚地址(逻辑地址)
虚拟页号+页内字地址
逻辑地址的位数比物理地址多
采用全相连映射+写回法
页式虚拟存储器
主存空间和虚拟地址空间都被划分成相同大小的页
物理页(实页、叶框)
主存中的页
虚拟页(虚页)
分页对程序员透明
页表
有效位
脏位
引用位
缺页
属于内部异常
缺页处理完成后回到产生缺页终端的那一条指令开始重新执行
地址转换
虚拟地址
高位为虚页号
低位为页内偏移地址
物理地址
高位为物理页号
低位为页内偏移地址
转换
页表基址寄存器
存放进程的页表首地址
根据虚拟页号找到对应的页表项
装入位为1,取出物理页号
物理页号和虚拟地址的页内地址拼接得到实际物理地址
快表(TLB)
使用SRAM实现
全相连或组相连映射
TLB表项
页表表项内容
TLB标记
全相连下对应虚拟页号
组相连,对应虚拟页号的高位部分,低位作为组号
具有TLB和Cache的多级存储系统
CPU访存过程中的三种缺失情况
TLB缺失
即可以用硬件,又可以用软件来处理
Cache缺失
Page缺失
此时TLB、Cache均缺失
段式虚拟存储器
段是按程序的逻辑结构划分的,各个段的长度因程序而异
分段对程序员不透明
虚拟地址
段号
段内地址
优缺点
优点
具有逻辑独立性
缺点
分配空间不便,容易在段间留下碎片
段页式虚拟存储器
程序按逻辑结构分段,每段再划分固定大小的页
主存空间分页,程序对接主存的调入、调出以页为基本交换单位
虚地址
段号
段内页号
页内地址
虚拟存储器与Cache的比较
不同
Cache主要解决系统速度,虚拟存储器解决主存容量
虚拟存储器由OS和硬件共同实现,对应用程序员透明,系统程序员不透明
虚拟存储器不命中对性能影响更大
补充
Cache-主存-外存交换
Cache与主存之间交换
交换的是主存块
使用硬件实现
主存与外存之间的交换
交换的是页
使用软件实现
使用回写法
使用全相连映射
Cache的中位数应包括标记项的总位数(包括标记字段、有效位和“脏”位)和数据块的位数
指令系统
指令系统
指令集体系结构
ISA完整定义了软件和硬件之间的接口
内容
指令格式,指令寻址方式,操作类型,以及每种操作对应的操作数的相应规定
操作数的类型,操作数寻址方式,以及是按大端方式还是小端方式存放
程序可访问的寄存器编号、个数和位数,存储空间的大小和编址方式
指令执行过程的控制方式
指令的基本结构
操作码字段+地址码字段
指令字长
取决于操作码的长度、地址码的长度和地址码的个数
与机器字长没有固定的关系
单字长指令
半字长指令
双字长指令
指令字长通常为字节的整数倍
为了便于存取指令,指令的长度通常为存储字长的整数倍
分类
定长指令字结构
变长指令字结构
按地址码数目分类
零地址指令
仅用在堆栈计算机中
通常参与运算的两个操作数隐含地从栈顶和次栈顶弹出,运算结果再隐含的压入堆栈
一地址指令
OP(A1)->A1
隐含约定目的地址的双操作数指令,即另一个操作数来自隐含寻址
如 (ACC)OP(A1)->A1
二地址指令
(A1)OP(A2)->A1
三地址指令
(A1)OP(A2)->A3
四地址指令
(A1)OP(A2)->A3,A4=下一条将要执行指令的地址
定长操作码指令格式
扩展操作码指令格式
可变长操作码
注意
不允许短码是长码的前缀
各指令的操作吗不能重复
指令的操作类型
数据传送
寄存器之间(MOV)
内存单元到CPU寄存器(LOAD)
CPU寄存器写数据到内存单元(STORE)
进栈操作(PUSH)
出栈操作(POP)
···
算术和逻辑运算
移位操作
转移操作
无条件转移(JMP)
条件转移(BRANCH)
调用(CALL)
返回(RET)
陷阱(TRAP)
输入输出操作
指令的寻址方式
指令寻址和数据寻址
指令寻址
顺序寻址
跳跃寻址
数据寻址
指令字
操作码 | 寻址特征 | 形式地址A
有效地址(EA)
形式地址结合寻址方式,可以计算出操作数在存储器中的真实地址
常见的数据寻址方式
隐含寻址
可简化地址结构
立即(数)寻址
寻址最快
寻址速度:立即寻址>寄存器寻址>直接寻址>间接寻址
直接寻址
EA = A
间接寻址
EA = (A)
寄存器寻址
EA = Ri
为了缩短指令中某个地址段的位数
寄存器间接寻址
EA = (Ri)
相对寻址
EA = (PC) + A
PC中保存的是下一条指令的地址
广泛应用于转移指令
基址寻址
EA = (BR) + A
基址寄存器面向操作系统
主要用于为多道程序或数据分配存储空间
变址寻址
EA= (IX) + A
变址寄存器面向用户
主要用于处理数组问题
堆栈寻址
堆栈指针(SP)寄存器
硬堆栈
操作顺序
进栈
先压入数据 (A)->MSP,然后修改指针 (SP)-1->SP
出栈
先修改指针 (SP)+1->SP,然后才能弹出数据(MSP)->A
采用不同的寻址方式目的
缩短指令字长,扩大寻址空间,提高编程的灵活性
缺点
提高了指令译码的复杂度
程序的机器级代码表示
常用汇编指令介绍
相关寄存器
x86 处理器中主要的寄存器
汇编指令格式
AT&T格式
小写字母
第一个为源操作数,第二个为目的操作数
寄存器加前缀“%”,立即数加前缀“$”
内存寻址使用 ( )
内存操作数
disp(base, index, scale)
对应 偏移量(基址寄存器,变址寄存器,比例因子)
eg:M[R[edx]+R[eax]*2+8]
AT&T
8(%edx, %eax, 2)
Intel
[edx+eax*2+8]
指令操作码后面紧跟一个字符,表明操作数大小
Intel格式
大小写不敏感
第一个为目的操作数,第二个为源操作数
内存寻址使用 []
常用指令(Intel)
数据传送指令
mov
将第二个操作数复制到第一个操作数
push
pop
算术和逻辑运算指令
add/sub
inc/dec
自增/减1
imul
有符号整数乘法
idiv
有符号除法指令
只有一个操作数,即除数
被除数为edx:eax中的内容
操作结果有两部分
商送到eax
余数送到edx
and/or/xor
not
位翻转指令
neg
取负指令
shl/shr
逻辑位移指令
控制流指令
jmp
jcondition
条件转移指令
cmp/test
cmp相当于sub,test相当于and
不保存操作结果,仅设置条件码
cmp 和 test 指令通常和 jcondition 指令搭配使用
call/ret
实现子程序的调用及返回
选择语句的机器级表示
循环语句的机器级表示
过程调用的机器级表示
执行步骤(过程P调用过程Q)
①P将入口参数放到Q能访问到的地方
②P将返回地址存放的特殊的地方
③Q保存P的现场(通用寄存器的内容),并为自己的非静态局部变量分配空间
④执行过程Q
⑤Q恢复P的现场,将返回结果放到P能访问到的地方,释放局部变量所占空间
⑥Q取出返回地址,将控制转移到P
函数调用
执行call指令
把IP值保存到栈顶
切换栈帧
enter
push ebp mov ebp, esp
处理逻辑
leave
mov esp, ebp pop ebp
执行ret指令
从栈顶找到返回地址,出栈并恢复IP
CISC和RISC的基本概念
复杂指令系统计算机(CISC)
典型的有x86架构的计算机
精简指令系统计算机(RISC)
典型的有ARM、MIPS架构的计算机
比较
中央处理器
CPU的功能和基本结构
CPU的功能
指令控制
取指令、分析指令、执行指令
操作控制
操作信号
时间控制
数据加工
中断处理
CPU的基本结构
运算器
组成
ALU
ACC
GPRs(通用寄存器组)
通用寄存器的位数取决于机器字长
PSW(程序状态字寄存器)
标志位寄存器是专用寄存器,不需要编号
用户不能直接修改它的值
SR(移位寄存器)
CT(计数器)
···
功能
算数运算
逻辑运算
条件测试
控制器
组成
PC
尾数取决于存储器的容量和指令字长
用字地址表示指令地址时
存储器地址的位数 - log2(指令字长的字节数)
IR(指令寄存器)
ID(指令译码器)
时序电路
微操作信号发生器
···
功能
执行指令
从主存储器中取出指令、分析指令并产生有关的操作控制信号
CPU的寄存器
汇编语言程序是否可访问
用户可见寄存器
GPRs、PSW、PC等
用户不可见寄存器
存储器地址寄存器、存储器数据寄存器、IR、暂存寄存器、累加寄存器、移位寄存器
运算器中的寄存器
GPRs
ACC
SR
暂存寄存器
暂存从数据总线或通用寄存器送来的操作数
PSW
控制器中的寄存器
PC
IR
补充
数据总线的位数与处理器的位数相同,表示CPU一次能处理的数据的位数,即CPU的位数
间址周期的作用是取操作数的有效地址,间址周期结束后MDR中的内容为操作数地址
指令执行过程
指令周期
取值周期+[间址周期]+执行周期+[中断周期]
指令执行过程
取指周期
从PC地址取出指令
送至IR
PC+"1"
转移指令?
计算并更新PC值
间接寻址?
间址周期
获取操作数有效地址
执行周期
取操作数、执行运算、存操作数
中断请求?
中断周期
关中断、保存断点,转向中断服务程序
指令周期的数据流
取值周期
PC->MAR->地址总线->存储器
CU发出读命令->控制总线->主存储器
主存储器->数据总线->MDR->IR
CU发出控制信号->PC加1
间址周期
Ad(IR)(或MDR)->MAR->地址总线->主存储器
CU发出读命令->控制总线->主存储器
主存储器->数据总线->MDR
执行周期
不同指令的执行周期操作不同
中断周期
CU控制将SP减1,SP->MAR->地址总线->主存储器
CU发出写命令->控制总线->主存储器
PC->MDR->数据总线->主存储器(程序断点入主存储器)
CU(中断服务程序的入口地址)->PC
指令执行方案
单周期处理器
每条指令都在一个时钟周期内完成(CPI=1),指令之间串行执行
指令周期取决于执行时间最长的指令的执行时间
不能采用单总线结构
多周期处理器
指令之间串行执行
指令需要几个周期就为其分配几个周期
流水线处理器
指令之间并行执行
补充
CPU区分存储器中的指令和数据的依据是指令周期的不同阶段
数据通路的功能和基本结构
数据通路的功能
数据通路的组成
组合逻辑元件(操作单元)
输出仅取决于当前的输入
特点
不含存储信号的记忆单元
不受时钟信号的控制
输出与输入之间无反馈通路,信号单向传输
加法器、ALU、译码器、多路选择器、三态门等
时序逻辑元件(状态元件)
输出与该时刻输入和该时刻以前的输入有关
包含存储信号的记忆单元
通用寄存器、PC、状态/移位/暂存/锁存寄存器等
包括:ALU、通用寄存器、状态寄存器、Cache、MMU、浮点运算逻辑、异常和中断处理逻辑等
数据通路的基本结构
CPU内部单总线方式
CPU内部多总线方式
专用数据通路方式
区别
采用CPU内部总线方式的数据通路
结构简单,容易实现,性能较低,存在较多冲突现象
不采用内部总线
结构复杂、硬件量大、不易实现、性能高、基本不存在数据冲突现象
数据通路的操作举例
通用寄存器之间传送数据
从主存读取数据
将数据写入主存
执行算术或逻辑运算
修改程序计数器的值
控制器的功能和工作原理
控制器的结构和功能
硬布线控制器(组合逻辑控制器)
由复杂的组合逻辑门电路和触发器构成
CU的输入信号来源
仅指令译码器译码产生的指令信息
时钟脉冲
来自执行单元反馈信息即标记
微程序控制器
微程序控制的基本概念
微命令与微操作
相容性和互斥性
微指令与微周期
微指令
操作控制字段(微操作码字段)
顺序控制字段(微地址码字段)
微周期
从控制存储器中取出并执行一条微指令所需全部时间,通常为一个时钟周期
主存储器与控制存储器
CM(控制存储器)
用于存放微程序,在CPU内部
ROM实现
程序与微程序
微程序
微指令的有序集合,用于描述机器指令
寄存器
MAR
微指令地址寄存器(μPC或CMAR)
IR
微指令寄存器(μIR或CMDR)
组成和工作过程
基本组成
起始和转移地址生成部件(微地址形成部件)
微指令地址寄存器
控制存储器
微指令寄存器
工作过程
执行取指令公共操作
由机器指令的操作码字段通过微地址形成部件产生该机器指令对应微程序的入口地址,送入μPC
从CM中逐条取出对应的微指令并执行
执行玩机器级指令对应的微程序后,回到取值微程序的入口地址,重复
微程序和机器指令
通常一条机器指令对应一个微程序
间址周期和中断周期的微程序
CM中的微程序个数
机器指令数+取值、间址、中断周期等公共的微程序数
微指令的编码(控制)方式
直接编码方式
操作控制字段中每一位都代表一个微命令
微指令字长过长
字段直接编码方式
操作控制字段分成若干小字段
互斥性微命令放在同一字段中
相容性微命令放在不同字段中
每小端信息位不能太多
一般每小段留出一个状态(全零),表示本字段不发出任何微命令
可以缩短微指令字长,但需要译码电路,比直接编码慢
字段间接编码方式(隐式编码)
可进一步缩短指令字长,削弱了微指令的并行控制能力
微指令的地址生成方式
断定方式
由微指令的后继地址字段指出
根据机器指令的操作码形成
增量计数法
根据各种标志决定下一条微指令分支转移的地址
由硬件直接产生微程序入口地址
微指令的格式
水平型微指令
指令基本格式
直接编码、字段直接编码、字段间接编码都属于水平型微指令
评价
一条水平型微指令定义并执行多个微操作
微程序短,并行能力强,执行速度快
微指令长,编写较麻烦
垂直型微指令
指令基本格式
通常只能定义并执行一种微命令
微指令短、简单、规整,便于编写微程序
微程序长,执行速度慢,效率低
对比
异常和中断机制
异常和中断的基本概念
异常(内中断)
由CPU内部产生的意外事件
中断(外中断)
由来自CPU外部的设备向CPU发出的中断请求
通常用于信息的输入和输出
处理过程
CPU在执行第 i 条指令时检测到一个异常事件(或执行后发现一个中断请求信号),则CPU打断当前程序,转去执行相应的异常或中断处理程序
能够解决问题
在处理程序的最后,CPU通过执行异常或中断返回指令,回到第 i (或 i+1)条指令继续执行
不可恢复的致命错误
终止用户程序
通常由操作系统(和驱动程序)完成处理
异常和中断的分类
异常的分类
故障(Fault)
在引起故障的指令启动后、执行结束前被检测到的异常事件
非法操作码、缺段、缺页、除数为0等
自陷(Trap)
预先安排的“异常”事件
事先在程序中用一条特殊指令或通过某种方式设定特殊控制标志来认为设置“陷阱”
当执行到陷阱指令时,CPU在执行完自陷指令后,根据陷阱类型进行相应处理
然后返回到自陷指令的下一条指令执行
如x86用于调试程序“断点设置”
终止(Abort)
执行指令的过程中发生了使计算机无法继续执行的硬件故障
控制器出错、存储器检验错、总线错误等
中断的分类
可屏蔽中断
通过可屏蔽中断请求线INTR向CPU发出的中断请求
CPU可以通过在终端控制器设置相应的屏蔽字来屏蔽
不可屏蔽中断
不同点
中断不和任何指令相关联,也不阻止任何指令完成
异常检测由CPU自身完成;中断需要CPU通过中断请求线获取中断源中的信息
补充
故障异常和自陷异常属于程序性异常(软件中断) 终止异常和外中断属于硬件中断
所有异常和中断事件都是由硬件发现的
中断分类
根据识别中断服务程序地址的方式:向量中断和非向量中断
根据中断是否允许被打断:单重中断和多重中断
异常和中断的相应过程
关中断
设置IF(中断允许触发器)
IF=1,开中断
IF=0,关中断
不允许响应中断
保存断点和程序状态
识别异常和中断并转到相应的处理程序
软件识别方式
CPU设置一个异常状态寄存器,记录异常原因
操作系统使用查询程序,按优先级查询确认类型,并转到内核中相应的处理程序
异常大多采用软件识别方式
硬件识别方式(向量中断)
中断向量
中断类型号
补充
进程上下文切换由操作系统内核程序实现,异常和中断的响应由硬件实现
指令流水线
基本概念
时间上的并行
将一个任务分解为几个不同子阶段,每个子阶段在不同的功能部件上并行执行
流水线技术
空间上的并行
在一个处理机内设置多个执行相同任务的功能部件
超标量处理机
流水线的基本实现
设计原则
指令流水段的个数以最复杂的指令所用的功能段个数为准
流水段的长度以最复杂的操作所花费的时间为准(如果有需要加上流水段寄存器延时)
逻辑要求
流水段寄存器
锁存本段处理完的所有数据
IF、ID、EX、MEM、WB
流水线的时空图表示
流水线的冒险与处理
结构冒险(资源冲突)
硬件资源竞争造成的冲突
解决办法
前一指令访存时,使后一条相关指令(及其后续指令)暂停一个时钟周期
设置多个独立的部件
一个部件每条指令只使用一次,且在特定阶段使用
数据冒险(数据相关)
后面指令用到前面指令的结果
写后读
RAW解决办法
延迟执行相关指令
软件插入空操作"nop"
硬件阻塞(stall)
采用转发(旁路)技术
load-use数据冒险的处理
插入nop指令(最简单)
编译优化,调整指令顺序
控制冒险
转移指令引起的冲突
可采用和解决数据冲突相同的软件插入nop指令和硬件阻塞的方法
对转移指令进行分支预测,尽早生成转移目标地址
简单(静态)预测
动态预测
根据程序转移的历史情况,进行动态预测调整
延迟损失时间片
因流水线阻塞带来的延迟时钟周期数
流水线的性能指标
流水线的吞吐率
k 为流水线段数
n→∞时得到最大吞吐率 TPmax=1/△t
单位时间内流水线所完成的任务数量
流水线的加速比
完成同一批任务,不使用流水线与使用流水线所用时间之比
高级流水线技术
多发射技术
采用多个内部功能部件,使流水线功能段能同时处理多条指令,处理机一次可以发射多条指令
超标量流水线技术(动态多发射技术)
超长指令字技术(静态多发射技术)
超流水线技术
增加流水线级数,使更多指令同时在流水线中重叠执行
通过提高流水线主频来提升性能
补充
RISC都采用流水线技术
多处理器的基本概念
SISD、SIMD、MIMD的基本概念
单指令流单数据(SISD)结构
传统的串行计算机结构
单指令流多数据(SIMD)结构
一个指令流同时对多个数据流进行处理
数据级并行技术
一个指令控制部件,多个处理单元
for循环处理数组最有效,case或switch效率最低
多指令流单数据(MISD)结构
实际不存在
多指令流多数据(MIMD)结构
多计算机系统
消息传递 MIMD
多处理器系统
共享存储 MIMD
硬件多线程的基本概念
必须为每个线程提供单独的通用寄存器组、程序计数器等
实现方式
细粒度多线程
多个线程之间轮流交叉执行指令,彼此不相关,可乱序并行执行
每个时钟周期切换一次线程
指令级并行,线程级不并行
粗粒度多线程
连续几个周期执行同一线程的指令序列,仅出现较大开销的阻塞时切换线程
只有流水线阻塞时才切换线程
指令级并行,线程级不并行
同时多线程(SMT)
同一时钟周期中,发射多个不同线程的多条指令执行
intel处理器中的超线程
在一个CPU中,提供两套线程处理单元,让单个处理器实现线程级并行
指令级并行,线程级并行
多核处理器的基本概念
多个处理单元集成到单个CPU中
所有核共享主存储器
共享内存多处理器的基本概念
具有共享的单一物理地址空间的多处理器
分类
统一存储访问(UMA)多处理器
每个处理器对所有存储单元的访问时间是大致相同的
非统一存储访问(NUMA)多处理器
访存速度取决于哪个处理器提出访问请求及访问哪个字
多处理器操作共享变量时需要进行同步
总线
总线概述
总线基本概念
定义
一组能为多个部件分时和共享的公共信息传送线路
分时
同一时刻只允许有一个部件向总线发送信息
共享
总线上可以挂接多个部件,各个部件之间相互交换信息可以通过这组线路分时共享,多个部件可溶蚀从总线上接受相同的信息
设备
主设备
能发出总线请求且获得总线控制权
从设备
响应总线命令
特性
机械、电气、功能、时间特性
总线的分类
按功能层次分类
片内总线
系统总线
数据总线
在各部件之间传输数据、指令、终端类型号等
双向传输总线
位数反映一次能传送的数据位数
地址总线
用来指出数据总线上源数据或目的数据所在的主存单元或I/O端口的地址
单向传输总线
控制总线
传输各种命令、反馈、定时信号
时序信号,I/O设备和存储器的响应信号等
控制信息通过控制总线由CPU发至内存或外设,状态信息通过状态总线由内存或外设发往CPU,都是单向传输
I/O总线
连接中低速的I/O设备
将低速设备与高速总线分离
USB、PCI总线等
通信总线(外部总线)
与其他系统之间传送信息
按时序控制方式分类
同步总线
通过统一的时钟进行同步
异步总线
以信号握手的方式来协调各部件或设备之间的信息传输
总线操作时序不固定
按数据传输方式分类
串行总线
只有一条双向总线或两条单向总线
适合长距离通信
并行总线
有多条双向总线
适合近距离通信
并行总线通常比串行总线传输速率快,但当始终频率高到一定程度,并行总线之间因为数据干扰,可能是传输的数据无法恢复,而串行总线导线少,线间干扰容易控制
系统总线的结构
单总线结构
结构简单,成本低,易于接入新设备
带宽低,负载重,多个部件只能争用唯一的主线,不支持并发传送
双总线结构
主存总线
I/O总线
三总线结构
组成
主存总线
I/O总线
直接内存访问(DMA)总线
用于在内存和高速外设之间直接传送数据
任意时刻只能使用一种总线
常见的总线标准
总线的性能指标
总线时钟周期
总线时钟频率
总线传送周期
申请阶段、寻址阶段、传输阶段、结束阶段
总线工作频率
总线周期的导数
总线宽度
总线带宽
总线工作频率×(总线宽度/8)
总线复用
一种信号线在不同时间传输不同信息
只是线的数量减少了,成本节省了,但不能提高传输效率
信号线数
地址总线、数据总线、控制总线3中总线数的和
总线事务和定时
总线事务
请求阶段
仲裁阶段
寻址阶段
传输阶段
释放阶段
总线上数据传送方式
非突发传送方式
每个传送周期都先传送地址,再传送数据
主、从设备之间通常每次只能传输一个字长的数据
突发(猝发)传送方式
能够进行连续成组数据的传送
寻址阶段发送的事连续数据单元的首地址
传输阶段传送多个连续单元的数据,一组数据全部传输完之前不释放总线
总线定时
同步定时方式
系统采用一个统一的时钟信号来协调发送和接收双方的传送定时关系
评价
主从设备属于强制性同步
不能及时进行通信数据的有效性校验,可靠性差
异步定时方式
分类
不互锁方式
信号的撤销不受对方制约
半互锁方式
请求信号撤销依赖于回答信号
全互锁方式
回答信号的撤销依赖于请求信号的撤销
评价
相比同步定时,更慢更复杂
总线周期长度可变
异步串行通信方式
开始位和停止位
半同步定时方式
统一时钟的基础上,加wait响应信号线
可动态调整总线时钟周期数
分离式定时方式
将总线事务分为请求和应答两个子过程
请求
设备A(主设备)发送完立马释放总线
应答
设备B(主设备)接收到命令,将数据准备好后申请总线,获准后发送到总线上,由A接收
不存在空闲等待时间
输入/输出系统
I/O系统基本概念
I/O接口
功能
进行地址译码和设备选择
实现主机和外设的通信联络控制
时序配合
实现数据缓冲
消除速度差异
信号格式的转换
电平、数据格式差异
传送控制命令和状态信息
基本结构
数据缓冲寄存器
状态寄存器
记录接口和设备的状态信息
控制寄存器
保存CPU对外设的控制信息
数据线
读/写数据、状态信息、控制信息、中断类型号
地址线
要访问I/O接口中寄存器的地址
控制线
读/写控制信号、中断请求、响应信号、仲裁信号、握手信号
类型
按数据传送方式
并行接口
串行接口
按主机访问I/O设备的控制方式
程序查询接口
中断接口
DMA接口
功能选择的灵活性
可编程接口
不可编程接口
I/O端口及编址
I/O接口电路中可被CPU直接访问的寄存器
数据端口
可读写
状态端口
只读
控制端口
只写
编址
独立编址(I/O映射方式)
I/O端口地址空间与主存地址空间相互独立
需设置专门的I/O指令
格式与其他指令不同
I/O指令专指CUP使用地址总线选择端口,然后用数据总线在寄存器与端口间传输数据
统一编址(存储器映射方式)
主存地址空间分出一部分给I/O端口进行编址
统一的访存指令即可访问I/O端口
补充
I/O总线中的数据线宽度和连接设备的电缆中的数据线宽度不一定相同
磁盘驱动器向盘片磁道记录数据时采用串行方式写入,磁盘驱动器是存储设备的一部分,不属于I/O接口
I/O方式
程序查询方式
工作流程
①CPU执行初始化程序,并预置传送参数
②向I/O接口发出命令字,启动I/O设备
③从外设接口读取其状态信息
④CPU周期或持续地查询设备状态,直到外设准备就绪
⑤传送一次数据
⑥修改地址和计数器参数
⑦判断传送是否结束,若未结束转第③步,直到计数器为0
根据查询方式不同
独占查询
CPU一直持续查询接口状态,花费100%的时间用于I/O操作
定时查询
CPU周期性地查询接口状态
优缺点
设计简单、硬件量少
CPU查询和等待时间多,CPU与设备串行工作,效率低
程序中断方式
基本概念
主要功能
实现CPU与I/O设备的并行工作
处理硬件故障和软件错误
实现人机交互,用户干预机器需要用到中断系统
实现多道程序、分时操作,多道程序的切换需借助于中断系统
实时处理需要借助中断系统来实现快速响应
实现应用程序和操作系统(管态程序)的切换,成为软中断
多处理器系统中各处理器之间的信息交流和任务切换
思想
需要I/O,启动某台外设,阻塞当前进程,切换就绪进程执行
CPU和外设并行执行
外设完成数据准备,向CPU发送中断请求
CPU响应,暂时中止当前进程,转去执行中断服务程序,完成外设数据传送
CPU返回原被中止的进程断点处继续执行
工作流程
中断请求
中断源
中断请求标记触发器
CPU无法对发生的中断请求立即处理,使用中断触发器保存是哪些外设发出了中断请求,等CPU当前指令周期结束后,响应并处理
可屏蔽中断
INTR线发出
优先级最低
不可屏蔽中断
NMI线发出
优先级最高
优先级均低于DMA
中断响应判优
CPU响应中断请求的先后顺序
不可屏蔽中断>可屏蔽中断
I/O传送类中断请求
高速设备>低速设备
输入设备>输出设备
实时设备>普通设备
CPU响应中断的条件
中断源有中断请求
CPU允许中断及开中断
异常和不可屏蔽中断不受此限制
一条指令执行完毕,且没有更紧迫任务
异常不受此限制
中断响应过程
中断隐指令
采用硬件更新PC内容,可以避免因为软件保护和恢复PC内容造成的时间开销和错误风险,提高中断处理的效率和正确性
过程
关中断
保存断点和程序状态字
引出中断服务程序
中断向量
中断源->中断类型号->中断服务程序->入口地址(中断向量)
中断向量表
存放中断向量的存储区
中断处理过程
①关中断
②保存断点
下一条指令的地址
③中断服务程序寻址
④保存现场和屏蔽字
中断发生时,将CPU中各寄存器(PC、PSW等)的内容以及其他与程序执行状态相关的信息压入堆栈
⑤开中断
允许更高级中断请求得到响应,以实现中断嵌套
⑥执行中断服务程序
⑦关中断
保证在恢复现场和屏蔽字时不被中断
⑧恢复现场和屏蔽字
⑨开中断、中断返回
①~③由中断隐指令完成,④~⑨由中断服务程序完成
多重中断和中断屏蔽技术
单重中断和多重中断(中断嵌套)
单重中断系统
不允许中断嵌套
中断处理流程没有⑤和⑦
中断优先级包括响应优先级和处理优先级
中断屏蔽标志改变的是处理优先级,决定了多个中断服务程序执行完的次序
中断响应优先级是由中断查询程序或中断判优电路决定的
中断处理优先级
多重中断的实际优先级处理次序
可利用中断屏蔽技术动态调整
中断屏蔽技术
中断屏蔽字寄存器
1 表示屏蔽
0 表示正常申请
通过配置中断屏蔽字,动态改变中断处理优先级
在中断响应阶段之前,CPU根据中断屏蔽字将所有未被屏蔽的中断请求送到硬件电路(或中断查询程序)进行中断响应判优
DMA方式
直接存储器存取方式
只有具有DMA接口的设备才能产生DMA请求
DMA方式的特点
主存既可被CPU访问,又可被外设访问
在数据块传送时,主存地址的确定、传送数据的计数等都由硬件电路直接实现
贮存中要开辟专门的缓冲区
DMA传送速度快,CPU和外设并行工作
DMA在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理
DMA控制器的组成
DMA控制器的主要功能
接受外设发出的DMA请求,并向CPU发出总线请求
DMA请求不会引发中断
CPU响应并发送总线响应信号,DMA控制器接管总线控制权,进入DMA操作周期
确定传送数据的主存起始地址及长度,并自动修改主存地址计数和传送长度计数
规定数据在主存和外设间的传送方向,发出读/写等控制信号,执行数据传送操作
向CPU报告DMA操作结束
组成
主存地址计数器
传送长度计数器
数据缓冲寄存器
DMA请求触发器
“控制/状态”逻辑
中断机构
DMA的传送方式
停止CPU访存
有DMA请求时,由DMA接口向CPU发送一个停止信号
周期挪用
I/O访存优先级高于CPU访存
I/O设备挪用一个存取周期,传送完一个字后立即释放总线
每挪用一个主存周期,DMA都要申请、建立和归还总线控制权
DMA与CPU交替访存
将CPU工作周期分成两个时间片
适用于CPU工作周期比主存存取周期长的情况
DMA的传送过程
预处理
主存起始地址->AR
I/O设备地址->DAR
传送数据个数->WC
启动I/O设备
预处理阶段由CPU完成必要的准备工作,数据传送前由DMA控制器请求总线使用权
数据传送
DMA以数据块为基本传送单位
字计数器反映了块大小
DMA请求(允许传送?)
主存起始地址送总线 数据送I/O设备 修改主存地址 修改字计数器
数据块传送结束?
向CPU申请中断程序
后处理
中断服务程序做DMA结束处理
校验数据
出错则转诊断程序
继续执行主程序
DMA方式和中断方式的区别
中断是程序的切换,需要保护和恢复现场
对DMA请求的响应可以发生在任何一个机器周期(总线事务)结束时
取值、间址、执行周期后均可
中断传送过程需要CPU的干预
DMA请求的优先级高于中断请求
中断方式有处理异常事件的能力,DMA仅局限于大批数据的传送
中断靠程序传送,DMA靠硬件传送
中断方式下,CPU和外设I/O端口之间交换的信息不可能是主存地址
补充
当用户需要输入/输出时,需要调用操作系统的接口,此时会使得访管中断,系统由用户态转为核心态
访管中断由系统调用指令引发,属于内中断
程序查询方式
CPU与外设串行工作
传送与主程序串行工作
在中断方式
CPU与外设并行工作
传送与主程序串行工作
当数据准备好时仍需中断主程序以执行数据传送
在DMA方式
CPU与外设、传送与主程序都是并行的