导图社区 PCC
这是一篇关于PCC的思维导图,主要内容包括:BUS,I/O System,CPU,Instruction System,Memory System,Arithmetic Methods 。
编辑于2025-04-21 11:16:30这是一篇关于PCC的思维导图,主要内容包括:BUS,I/O System,CPU,Instruction System,Memory System,Arithmetic Methods 。
这是一篇关于OS的思维导图,OS是计算机的操作系统(Operating System)。操作系统是管理计算机硬件与软件资源的核心系统软件,为用户和应用程序提供与计算机交互的接口。主要内容包括:I/O管理,文件管理,内存管理,线程 .
408考研合集(数据结构全),在任何问题中,数据元素都不是孤立存在的,而是在它们之间存在着某种关系,这种数据元素相互之间的关系称为结构(Structure)。数据结构是相互之间存在一种或多种特定关系的数据元素的集合。数据结构包括三方面的内容:逻辑结构、存储结构和数据的运算。数据的逻辑结构和存储结构是密不可分的两个方面,一个算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采用的存储结构。
社区模板帮助中心,点此进入>>
这是一篇关于PCC的思维导图,主要内容包括:BUS,I/O System,CPU,Instruction System,Memory System,Arithmetic Methods 。
这是一篇关于OS的思维导图,OS是计算机的操作系统(Operating System)。操作系统是管理计算机硬件与软件资源的核心系统软件,为用户和应用程序提供与计算机交互的接口。主要内容包括:I/O管理,文件管理,内存管理,线程 .
408考研合集(数据结构全),在任何问题中,数据元素都不是孤立存在的,而是在它们之间存在着某种关系,这种数据元素相互之间的关系称为结构(Structure)。数据结构是相互之间存在一种或多种特定关系的数据元素的集合。数据结构包括三方面的内容:逻辑结构、存储结构和数据的运算。数据的逻辑结构和存储结构是密不可分的两个方面,一个算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采用的存储结构。
PCC
Introduction
冯诺依曼型计算机特点
1.计算机由运算器,控制器,存储器,输入和输出设备5部分组成
2.采用存储程序的方式,程序和数据放在同一个存储器中,并以二进制表示。
3.指令由操作码和地址码组成
4.指令和数据以同等地位存储于存储器,可按地址寻访
5.指令在存储器中按执行顺序存放,由指令计数器(即程序计数器PC)指明要执行的指令所在的储存单元地址,一般按顺序递增,但可按运算结果或外界条件而改变
6.机器以运算器为中心,输入输出设备与存储器间的数据传送都通过运算器
区别 以运算器还是存储器为中心
输入设备直接与存储器相连就是以存储器为中心
计算机系统
硬件
发展历程
第一代:电子管时代
第二代:晶体管时代
第三代:中小规模集成电路时代
第四代:大规模、超大规模集成电路时代
结构
主机
工作过程
cpu
ALU运算器
一位全加器
标志位的生成
OF(Overflow Flag)溢出标志
溢出时为1,否则置0
OF = 最高位产生的进位 XOR 次高位产生的进位
对无符号数的加减法无意义
SF (Sign Flag)符号标志
结果 负 时置1,正 时置0
SF = 计算结果的最高位
对无符号数的加减法无意义
ZF (Zero Flag)零标志
运算结果为 0 时置1,否则置0
CF (Carry Flag)进位/借位标志
发生进位/借位时,即发生了溢出,置1,否则置0
CF = 最高位产生的进位 XOR sub
加法:sub = 1
减法:sub = 0
对有符号数的加减法无意义
串行加法器
只有一个全加器,数据逐位串行送入加法器中进行运算。 进位触发器用来寄存进位信号,以便参写下一次运算。
如果操作数长n位,加法就要分n次进行,每次产生一位和,并且串行逐位地送回寄存器。
并行加法器
把n个全加器串接起来,就可进行两个n位数的相加。
串行进位又称为行波进位,每一级进位直接依赖于前一级的进位,即进位信号是逐级形成的。
优化
并行进位的并行加法器
各级进位信号同时形成,又称先行进位、同时进位
缺点
CU控制器
完成一条指令
取指令
PC
分析指令
IR
执行指令
CU
存储器
主存
MAR
Memory Address Register
MDR
Memory Data Register
辅存
I/O
输入设备
输出设备
主要技术指标
机器字长
CPU一次能处理的数据位数
存储容量
存储容量=存储单元个数×存储字长
运算速度
单位时间执行指令的平均条数,MIPS
软件
系统软件
用来管理整个计算机系统
语言处理程序
操作系统
服务性程序
数据库管理系统
网络软件
应用软件
按任务需要编制成的各种程序
Arithmetic Methods & Arithmetic Components
无符号数
加法
略
减法
① “被减数”不变,“减数”全部位按位取反、末位+1,減法变加法
② 从最低位开始,按位相加,并往更高位进位
带符号数
重点关注红字
原码
定义
符号位 + 数值的绝对值
特点
(1)值+0,-0的原码分别为00000、10000,形式不唯一
(2)n+1位原码表示定点整数范围
缺点
符号位不能参与运算
补码
运算
加法
从最低位开始,按位相加(符号位参与运算),并往更高位进位
减法
补码加负号的方法( 补码 -> 负补码 ):同原码转补码方式(连同符号位)
注意不能直接改符号位
溢出
溢出定义
当运算结果超出机器数所能表示的范围
加减中,可能产生溢出的情况
可能出现溢出
同号相加
异号相减
不可能出现溢出
异号相加
同号相减
判断溢出的方法
根据进位
法一:符号相同两数相加,结果符号和 加数(或被加数)不相同,则溢出
只有“正数+正数”才会上溢
正 + 正 = 负
只有“负数+负数”才会下溢
负 + 负 = 正
法二:任意符号相加,如果C=Cf,则结果正确,否则溢出;
C为数值最高位的进位,Cf为符号位的进位
用一个异或运算即可实现
法三:采用双符号相加,如果fs1=fs2,则结果正确,否则溢出;
实际存储时只存储 1 个符号位,运算时会复制一个符号位
双符号位补码又称:模4补码
相当于把位权大于4的部分(小数点向左数第3位开始)舍弃
单符号位补码又称:模2补码
相当于把位权大于2的部分(小数点向左数第2位开始)舍弃
根据公式
移码
由来及窍门
为了从码值直接判断对应真值的大小,所以引进移码
定义
移码=真值+偏置值
例
转换方法
[X]补 的符号位取反,即得 [X]移
特点
只能表示整数
最高位是符号位,1表示正,0表示负
数据0有唯一的编码
移码码值随着真值增大而增大
计算机中,移码常用于表示阶码,故只执行加、减运算
计算机中,移码运算公式需要对结果进行修正
移位运算
原码
右移:高位补0,低位舍弃
若舍弃的位 = 0,则相当于除2
若舍弃的位 != 0,则会丢失精度
左移:低位补0,高位舍弃
若舍弃的位 = 0,则相当于乘2
若舍弃的位 != 0,则会出现严重误差
反码
正数
同原码
负数
与原码相反(原补0反补1)
左移
低位补1,高位舍弃
右移
高位补1,低位舍弃
补码
正数
同原码
负数
右移(同反码)
高位补1,低位舍弃
左移(同原码)
低位补0,高位舍弃
循环移位
应用
存储RGB值
码制转换
移码 -> 原码
方法:移码 -> 补码 -> 原码
补码 -> 原码
方法1:正数不变,负数数值部分求反加1
方法2:串行转换
从最后开始数,遇到第一个“1”,除第一个“1”不变,前面数字分别取反
二进制乘法
定点原码一位乘法
当前位=1,则ACC加上被乘数,ACC内数字右移
当前位=0,则ACC加上0,ACC内数字右移
符号为两数符号的异或值
X0⊕Y0
用N位加法器就可实现两个N位数相乘
定点补码一位乘法
注意:此处为双符号位,当最后乘积高位为负数时,需要补充加上[-|x|]补的操作
booth算法
booth算法将乘数看作从最低位开始的一串二进制数字。从最低位算起,只要这串数字为“0“,就不执行任何操作;当这串数字遇到第一个“1”时执行一次减法,即减被乘数与该位权值的乘积,而对于其后的“1”不执行任何操作;当这串数字再变为“0”时,则遇到第一个“0”时执行一次加法,即加被乘数与该位权值的乘积,而对其后的“0”则不执行任何操作。如此一直进行到最高位
例:假设被乘数是5,乘数是7,即进行二进制数00000101与00000111相乘_
对比
逻辑右移
高位一定添0
算数右移
高位添1还是0要看符号位
二进制除法
原码
恢复余数法
确定好当前位后 MQ 进行逻辑左移(右边补0)
符号
X0 ⊕ Y0
加减交替法
优化恢复余数法:若余数为负,则可直接商0,并让余数左移1位 再加上|除数|
补码
加减交替法
余数和除数同号,商1,余数左移一位 减去除数
余数和除数异号,商0,余数左移一位 加上除数
对比原补码加减交替法
定点数和浮点数
定点数
定点小数运算
先转换为补码
按位取反,末位+1
找最后一个1 ... ...
剩余步骤同定点整数
浮点数
尾数的规格化
规定尾数的最高数值位必须是一个有效值
范围
操作
左规
将尾数算数左移一位,阶码减1
右规
当浮点数运算的结果尾数出现溢出(双符号位为01或10)时, 将尾数算数右移一位,阶码加1
溢出
IEEE 754
移码的偏置值改变
IEEE754采用最右边形式的补码,而非中间形式
常用的浮点数格式
例
表示范围(以单精度为例)
最小绝对值
尾数全为0
阶码真值最小-126
-127(全0)、-128(全1)有特殊用途
对应移码机器数 0000 0001
最大绝对值
尾数全为1
阶码真值最大127
对应移码机器数 1111 1110
特殊情况
浮点数运算
加减
十进制
例
1.对阶操作
小阶向大阶靠齐
2.尾数的加减运算
3.规格化操作
4.舍入
5.检查阶码是否溢出
二进制
舍入
“0”舍“1”入法
恒置“1”法
乘除
1.浮点数阶码运算(移码)
牢记公式
[X+Y]移=[X]移+[Y]补
[X–Y]移=[X]移+[–Y]补
2.按照一位乘或加减交替除运算
先确定符号,在列式子计算
C强制类型转换
有损
int—>float
可能会损失精度(float尾数的数值位有1+23位)
float—>int
可能会溢出,也可能会损失精度(如小数转整数)
无损
char—>int—>long—>double
float—>double
负数的符号拓展
数据校验码
码距
任意两个合法码之间不相同的二进制位数的最小值
要具有差错能力,则码距>1
合理增大码距,就能提高发现错误的能力
鉴定方法
有无差错能力
是否能合理增大码距
奇偶校验码
能发现数据代码中一位或奇数个位出错情况的编码
实现原理是使码距由1增加到2
步骤1:在字节高位补充一位,即校验位
步骤2:依据图3.10电路形成原始数据D8..D1的校验位值
步骤3:将9位数据写入主存
步骤4:读出该数据时,读取数据D8..D1通过图3.10判定合法性
电路图
结论
(1)奇偶校验码只能发现一位或奇位错,且不能确定出错位置
(2)奇偶校验码的码距=2
海明校验码
海明码位号和校验位位号的关系
Pi的位置在2的i-1次方,但是除了最高位
笔记
3,5,7||3,6,7||5,6,7
电路图
海明码码距为4
纠一位错,查一位错
2∧r≥k+r+1
纠一位错,查两位错
2∧(r–1)≥k+r
循环冗余校验码(CRC)
CRC码可以发现并纠正信息存储或传送过程中连续出现的多位错误
CRC码一般是指k位信息码之后拼接r位校验码
模2运算
模2加减
模2乘除
异或逻辑
CRC的译码与纠错
更换不同的待测码字可以证明:余数与出错位的对应关系是不变,只与码制和生成多项式有关
图
Memory System
基本概念
存储器的层次结构
主存一辅存:实现虚拟存储系统,解决了主存容量不够的问题
Cache一主存:解决了主存与CPU速度不匹配的问题
存储器的类型
按存储介质
半导体存储器
主存、cache
磁表面存储器
磁盘、磁带
光存储器
光盘
按存取方式
随机存取存偖器(Random Access Memory,RAM)
任何一个存储单元所需时间都相同,与存储单元所在的物理位置无关
如内存条
顺序存取存储器(Sequential Access Memory,SAM)
读写一个存储单元所需时间取决于存储单元所在的物理位置
如磁带
直接存取存储器(Direct Access Memory,DAM)
既有随机存取特性,也有顺序存取特性。先直接选取信息所在区域,然后按顺序方式存取。
如机械硬盘
按地址访问
相联存储器(Associative Memory)
即:可以按内容访问的存储器(Content Addressed Memory, CAM)
可以按照内容检索到存储位置进行读写,“快表”就是一种相联存储器
按内容访问
按信息的可更改性
读写存储器(Read/Write Memory)
如:磁盘、内存、Cache
只读存储器(Read Only Memory)
如:实体音乐专辑通常采用 CD-ROM,实体电影采用蓝光光碟,BIOS通常写在ROM中
按信息的可保存性
断电
断电后,存储信息消失的存储器
易失性存储器(主存、Cache)
断电后,存储信息依然保持的存储器
非易失性存储器(磁盘、光盘)
读出
信息读出后,原存储信息被破坏
破坏性读出(如DRAM芯片,读出数据后要进行重写)
信息读出后,原存储信息不被破坏
非破坏性读出(如SRAM芯片、磁盘、光盘)
存储器的性能指标
存储容量:存储字数 * 存储字长(如1M * 8位)
MDR位数反映存储字长
单位成本:每位价格=总成本/总容量
存储速度:数据传输率=数据的宽度(即存储字长)/存储周期
存取时间(Ta)
指从启动一次存储器操作到完成该操作所经历的时间,分为读出时间和写入时间。
存取周期(Tm)
又称读写周期或访问周期。它是指存储器进行一次完整的读写操作所需的全部时间,即连续两次独立地访问存储器操作(读或写操作)之间所需的最小时间间隔。
主存带宽(Bm)
数据传输率别名
主存储器的基本组成
半导体元件的原理
存储芯片的基本原理
n位地址 表示有 n个地址线,如:8K x 8位就有13根地址线(见左框:常见的描述 第一行)
n位存储字长 表示有 n个数据线,如:8K x 8位就有n根数据线
如何实现不同的寻址方式
按字寻址,只需要将字地址算数左移两位即可得到字节地址 如:寻找字地址为 1 的字----将(1)2 算数左移两位得到(100)2 = 4
SRAM 和 DRAM
存储元件不同导致的特性差异
栅极电容
电容放电信息被破坏,是破坏性读出。 读出后应有重写操作,也称“再生”
读写速度 更慢
每个存储元制造成本更低,集成度高,功耗低
电容内的电荷只能维持2ms。即便不断电,2ms后信息也会消失
2ms之内必须 “刷新”一次(给电容充电)
双稳态触发器
1:A高B低
0:A低B高
读出数据,触发器状态保持稳定,是非破坏性读出,无需重写
读写速度 更快
每个存储元制造成本更高,集成度低,功耗大
只要不断电,触发器的状态就不会改变
对比
DRAM的刷新
多久需要刷新一次?
一般为2ms
每次刷新多少存储单元?
以行为单位,每次刷新一行存储单元
为什么要用行列地址?
减少选通线的数量
如何刷新?
有硬件支持,读出一行的信息后重新写入,占用1个读/写周期
在什么时刻刷新?
假设DRAM内部结构排列成128×128的形式,读/写周期0.5us
、
DRAM的地址线复用技术
若不使用地址线复用,则地址的行列部分需要同时传送,耗费 行数+列数 根地址线
若使用地址线复用,则地址的行列部分分批传送,耗费 行数 或 列数 根地址线
ROM
MROM
掩模式只读存储器(Mask Read-Only Memory)
厂家按照客户需求,在芯片生产过程中直接写入信息,之后任何人不可重写(只能读出)可靠性高、灵活性差、生产周期长、只适合批量定制
PROM
可编程只读存储器(Programmable Read-Only Memory)
用户可用专门的PROM写入器写入信息,写一次之后就不可更改
EPROM
可擦除可编程只读存储器(Erasable Programmable Read-Only Memory)
允许用户写入信息,之后用某种方法擦除数据,可进行多次重写
闪存
Flash Memory
U盘、SD卡就是闪存
在EEPROM 基础上发展而来,断电后也能保存信息,且可进行多次快速擦除重写
注意:由于闪存需要先擦除在写入,因此闪存的“写”速度要比“读”速度更慢。它每个存储元只需单个MOS管,位密度比RAM高
SSD
固态硬盘(Solid State Drives)
由控制单元+存储单元(Flash 芯片)构成,与闪速存储器的核心区别在于控制单元不一样,但存储介质都类似,可进行多次快速擦除重写。
提升主存速度
双口 RAM
解决:
置“忙”信号为0,由判断逻辑决定暂时关闭一个端口(即被延时),未被关闭的端口正常访问,被关闭的端口延长一个很短的时间段后再访问。
需要有两组完全独立的数据线、地址线、控制线。CPU、RAM中也要有更复杂的控制电路
多模块存储器
单体多字存储器
多体并行存储器
高位交叉编址
低位交叉编址
采用“流水线”的方式并行存取(宏观上并行,微观上串行) 宏观上,一个存储周期内,m体交叉存储器可以提供的数据量为单个模块的m倍。
假设:每个存储体存取周期为T,存取时间为r,T=4r,连续取n个存储字(连续访问)
截屏2024-02-15 16.27.54
M = T/r
蓝色二进制数字用于区分不同存储体
实际应用:如何让你的电脑变成“双通道内存”?
存偖器与CPU的连接
存储器芯片的输入输出信号
单块存储芯片与CPU的连接
多块存储芯片与CPU的连接(主存扩容)
位扩展法
(字长不变,位长变化)
例如:1K X 4 位 ——>1k X 8位
只增加每个存储单元的位数,而不增加存储单元的数量
字扩展法
(位长不变,字长变化)
例如:1K X 8 位 ——>2k X 8位
仅增加了存储单元数,各单元位数不变
线选法
片选法
对比
字位扩展法
关于译码器知识的补充
外部存储器
磁盘存储器
磁盘原理
磁盘设备的组成
存储区域
磁头(Heads)
数量等于记录面数,表示硬盘总共有多少个磁头,磁头用于读取/写入盘片上记录面的信息,一个记录面对应一个磁头
桂面(Cylinders)
数量等于硬盘每一面盘片上磁道数。在一个盘组中,不同记录面的相同编号(位置)的诸磁道构成一个圆柱面
扇区(Sectors)
硬盘存储器
磁盘驱动器
核心部件是磁头组件和盘片组件,温彻斯特盘是一种可移动头固定盘片的硬盘存储器
磁盘控制器
是硬盘存储器和主机的接口,主流的标准有IDE、SCSl、SATA等
盘片
性能指标
容量
非格式化容量
磁记录表面可以利用的磁化单元总数
格式化容量
按照某种特定的记录格式所能存储信息的总量
记录密度
道密度
沿磁盘半径方向单位长度上的磁道数
位密度
磁道单位长度上能记录的二进制代码位数
磁盘所有磁道记录的信息量一定是相等的,并不是圆越大信息越多,故每个磁道的位密度都不同
面密度
位密度 * 道密度
平均存取时间
寻道时间(磁头移动到目的磁道) +旋转延迟时间(磁头定位到所在扇区) +传输时间(传输数据所花费的时间)
数据传输率
磁盘存储器在单位时间内向主机传送数据的字节数
磁盘地址
硬盘属于机械式部件,其读写操作是串行的,不可能在同一时刻既读又写,也不可能在同一时刻读两组数据或写两组数据
磁盘阵列RAID
RAlD(Redundant Array of Inexpensive Disks,廉价冗余磁盘阵列)
思想:利用磁盘廉价的特点提高存储性能、可靠性和安全性
RAID0:无冗余和无校验的磁盘阵列
逻辑上相邻的两个扇区在物理上存到两个磁盘,类比第三章“低位交叉编址的多体存储器”
RAID1:镜像磁盘阵列
存两份数据
RAID2:采用纠错的海明码的磁盘阵列
逻辑上连续的几个bit物理上分散存储在各个盘中4bit信息位+3bit海明校验位——可纠正一位错
RAID3:位交叉奇偶校验的磁盘阵列
RAID4:块交叉奇偶校验的磁盘阵列
RAID5:无独立校验的奇偶校验磁盘阵列
固态硬盘(SSD)
原理
基于闪存技术 Flash Memory,属于电可擦除ROM,即EEPROM
组成
闪存翻译层
负责翻译逻辑块号,找到对应页(Page)
存储介质:多个闪存芯片(Flash Chip)
每个芯片包含多个块(block)
每个块包含多个页 (page)
读写性能特性
以页 (page)为单位读/写
以块(block)为单位"擦除",擦干净的块,其中的每页都可以写一次,读无限次
支持随机访问,系统给定一个逻辑地址,闪存翻译层可通过电路迅速定位到对应的物理地址
读快、写慢。要写的页如果有数据,则不能写入,需要将块内其他页全部复制到一个新的(擦除过的)块中,再写入新的页
与机械硬盘相比的特点
SSD的一个"块"被擦除次数过多(重复写同一个块)可能会坏掉,而机械硬盘的扇区不会因为写的次数太多而坏掉
磨损均衡技术
思想:将“擦除"平均分布在各个块上,以提升使用寿命
动态磨损均衡
写入数据时,优先选择累计擦除次数少的新闪存块
静态磨损均衡
SSD监测并自动进行数据分配、迁移,让老旧的闪存块承担以读为主的储存任务,让较新的闪存块承担更多的写任务
Cache
局部性原理
空间局部性
在最近的未来要用到的信息(指令和数据),很可能与现在正在使用的信息在存储空间上是邻近的
例如程序A中 对sun数组的访问
时间局部性
在最近的未来要用到的信息,很可能是现在正在使用的信息
例如程序A中 对变量i、j和指令for的访问
性能分析
命中率:H
平均访问时间
访问方式1
先访问Cache,若Cache未命中再访问主存
访问方式2
同时访间 Cache和主存,若Cache 命中则立即停止访问主存
分块
为什么
基于局部性原理,不难想到,可以把CPU目前访问的地址“周围”的部分数据放到Cache中。如何界定“周围”?
怎么分
将主存的存储空间“分块”,如:每1KB 为一块。主存与cache之间以“块”为单位进行数据交换
注
操作系统中,主存中的“一个块” 也称为 “一个页/页面/页框”
Cache中的“块”也称为“行”
Cache-主存 映射方式
全相联映射
主存块可以放在Cache的任意位置
CPU如何访存?
①主存地址的前22位,对比Cache中所有块的标记;
②若标记匹配 且有效位=1,则Cache命中,访问块内地址为001110的单元。
③若未命中或有效位=0,则正常访问主存
优缺点
优点:Cache 存储空间利用充分,命中率高
缺点:查找“标记”最慢,有可能需要对比所有行的标记
直接映射
每个主存块只能放到一个特定的位置: Cache块号=主存块号% Cache总块数
如果两个不同的地址,其地址的bit3-bit5如果完全一样的话,那么这两个地址经过硬件散列之后都会找到同一个cache line。所以,当我们找到cache line之后,只代表我们访问的地址对应的数据可能存在这个cache line中,但是也有可能是其他地址对应的数据
所以,我们又引入tag array区域,tag array和data array一一对应,每一个cache line都对应唯一一个tag
CPU如何访存?
优化标记位的存储格式
主存块号%2^3,相当于留下最后三位二进制数
若Cache总块数=20,则主存块号末尾n位 直接反映它在Cache中的位置
将主存块号的其余位作为标记即可
①根据主存块号的后3位确定Cache行
②若主存块号的前19位与Cache标记匹配 且有效位=1,则Cache命中,访问块内地址001110的单元。
③若未命中或有效位=0,则正常访问主存
优缺点
优点:对于任意一个地址,只需对比一个“标记”,速度最快
缺点:Cache 存储空间利用不充分,命中率低
组相联映射
Cache块分为若干组,每个主存块可放到特定分组中的任意一个位置: 组号=主存块号%分组数
CPU如何访存?
2路组相联映射---2块为一组,分四组
优化标记位的存储格式
主存块号%2^2,相当于留下最后两位二进制数
①根据主存块号的后2位确定所属分组号
②若主存块号的前20位与分组内的某个标记匹配 且有效位=1,则Cache命中,访问块内地址001110的单元。
③若未命中或有效位=0,则正常访问主存
优缺点
另外两种方式的折中,综合效果较好
Cache 替换算法
随机算法(RAND)
若Cache已满,则随机选择一块替换
一实现简单,但完全没考虑局部性原理,命中率低,实际效果很不稳定
先进先出算法(FIFO)
若Cache已满,则替换最先被调入cache 的块
实现简单,最开始按#0#1#2#3放入Cache,之后轮流替换#0#1#2#3 FIFO依然没考虑局部性原理,最先被调入cache的块也有可能是被频繁访问的
抖动现象:频繁的换入换出现象(刚被替换的块很快又被调入)
近期最少使用(LRU)
为每一个cache块设置一个“计数器”,用于记录每个cache块已经有多久没被访问了。当cache满后替换“计数器”最大的
规则
①命中时,所命中的行的计数器清零,比其低的计数器加1,其余不变;
使得计数器的计数值不会超过 计数器个数-1。 Cache块的总数=2^n,则计数器只需n位。 且Cache装满后所有计数器的值一定不重复
②未命中且还有空闲行时,新装入的行的计数器置0,其余非空闲行全加1;
③未命中且无空闲行时,计数值最大的行的信息块被淘汰,新装行的块的计数器置O,其余全加1。
基于“局部性原理”,Cache命中率高。但是,若被频繁访问的主存块数量>Cache行的数量,则有可能发生“抖动”
最近不经常使用(LFU)
为每一个Cache块设置一个“计数器”,用于记录每个Cache块被访问过几次。当Cache满后替换“计数器”最小的
若有多个计数器最小的行,可按行号递增、或FIFO策略进行选择
曾经被经常访问的主存块在未来不一定会用到(如:微信视频聊天相关的块),并没有很好地遵循局部性原理,因此实际运行效果不如LRU
Cache 写策略
写命中
全写法
当CPU对Cache写命中时,必须把数据同时写入Cache和主存,一般使用写缓冲(write buffer)
访存次数增加,速度变慢,但更能保证数据一致性。 使用写缓冲,若写操作很频繁,可能会因为写缓冲饱和而发生阻塞
写回法
当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存
减少了访存次数,但存在数据不一致的隐患
写不命中
写分配法
当CPU对Cache写不命中时,把主存中的块调入Cache,在Cache中修改。通常搭配写回法使用。
非写分配法
当CPU对Cache写不命中时只写入主存,不调入Cache。搭配全写法使用。
多级Cache
各级Cache间常采用“全写法+非写分配法”
Cache和主存间常采用“写回法+写分配法”
页式存储器
虚地址 vs 实地址
页表的作用:记录了每个逻辑页面存放在哪个主存块中,将逻辑地址转为物理地址
逻辑地址(虚地址):程序员视角看到的地址
物理地址(实地址):实际在主存中的地址
地址变换过程(增加TLB)
快表是一种“相联存储器”,可以按内容寻访
注意区别:快表中存储的是页表项的副本;Cache中存储的是主存块的副本
虚拟存储器
页式虚拟存储器
有效位:这个页面是否已调入主存
脏位:这个页面是否被修改过(用于Write Back)
引用位:用于“页面置换算法”,比如,可以用来统计这个页面被访问过多少次
物理页:即主存块号
磁盘地址:即这个页面的数据在磁盘中的存放位置
段式虚拟存储器
按照功能模块拆分
段页式虚拟存储器
按照功能模块分段,再将各个段分页
Instruction System
指令格式
操作码、地址码
操作码(OP)
地址码(A)
若指令总长度固定不变,则地址码数量越多(每个地址码平均分配下来的位数就越少),寻址能力越差
根据 地址码数目 不同分类
零地址指令
1. 不需要操作数,如空操作、停机、关中断等指令
2. 堆栈计算机,两个操作数隐含存放在栈顶和次栈顶,计算结果压回栈顶
指令含义:OP(A1)-->A1
完成一条指令需要3次访存:取指-->读A1 写A1
一地址指令
1.只需要单操作数,如加1、减1、取反、求补等
2. 需要两个操作数,但其中一个操作数隐含在某个寄存器(如隐含在ACC)
指令含义:(ACC)OP(A1)-->ACC
完成一条指令需要2次访存:取指 读A1
二地址指令
指令含义:(A1)OP(A2)-->A1
完成一条指令需要访存4次:取指 读A1 读A2 写A1
三地址指令
指令含义:(A1)OP(A2)-->A3
A1指某个主存地址(类比:C语言指针),(A1)表示A1所指向的地址中的内容(指针所指位置的内容)
根据 指令长度 分类
指令字长:一条指令的总长度(可能会变)
机器字长:CPU进行一次整数运算所能处理的二进制数据的位数(通常和ALU直接相关)
存储字长:一个存储单元中的二进制代码位数(通常和MDR位数相同)
半字长指令、单字长指令、双字长指令一一指令长度是机器字长的多少倍
指令字长会影响取指令所需时间。如:机器字长=存储字长=16bit,则取一条双字长指令需要两次访存
定长指令字结构:指令系统中所有指令的长度都相等
变长指令字结构:指令系统中各种指令的长度不等
根据 操作码的长度 不同分类
定长
n位可支持2^n条指令
可变长
根据 操作类型 分类
1. 数据传送
LOAD
STORE
数据传送类:进行主存与CPU之间的数据传送
2. 算术逻辑操作
算术
逻辑
3. 移位操作
运算类
4. 转移操作
无条件转移 JMP
条件转移
调用和返回
陷阱(Trap)与陷阱指令
程序控制类:改变程序执行的顺序
5. 输入输出操作
输入输出类(I/0):进行CPU和I/0设备之间的数据传送
拓展操作码指令格式
注意
1)不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同。
2)各指令的操作码一定不能重复。
通常情况下,对使用频率较高的指令,分配较短的操作码;对使用频率较低的指令,分配较长的操作码
题目举例
上一层留出一种状态(全1)作为下一层的拓展
指令寻址
寻 下一条 欲执行指令的地址(始终由程序计数器PC给出)
方式
顺序寻址
系统采用定长指令字结构
PC += 1即可(按字编址时+1,按字节编址时+2)
系统采用变长指令字结构
读入一个字,根据操作码判断这条指令的总字节数n
修改PC的值:(PC)+ n -> PC
跳跃寻址
执行转移类指令,使得本应该指向下一条指令的PC指向跳转目的地
数据寻址
确定 本条指令 的地址码指明的真实地址(有时地址码不是真实地址,有可能是偏移量等)
方式
隐含寻址
不是明显地给出操作数的地址,而是在指令中隐含着操作数的地址
优点
有利于缩短指令字长
缺点
需增加存储操作数或隐含地址的硬件
立即寻址
形式地址A就是操作数本身,又称为立即数,一般采用补码形式。#表示立即寻址特征
访存次数
取指令 访存1次
执行指令 访存0次
优点
指令执行阶段不访问主存,指令执行时间最短
缺点
A的位数限制了立即数的范围
直接寻址
指令字中的形式地址A就是操作数的真实地址EA,即EA=A
访存次数
取指令 访存1次
执行指令 访存1次
优点
简单,指令执行阶段仅访问一次主存,不需专门计算操作数的地址
缺点
A的位数决定了该指令操作数的寻址范围。操作数的地址不易修改
间接寻址
地址字段给出的形式地址不是操作数的真正地址,而是操作数有效地址所在的存储单元的地址,也就是操作数地址的地址,即EA =(A)。A代表地址,(A)代表以A为地址的主存中存放的数据
访存次数
取指令 访存1次
执行指令 访存n次
优点
可扩大寻址范围(有效地址EA的位数大于形式地址A的位数)
便于编制程序(用间接寻址可以方便地完成子程序返回)
缺点
指令在执行阶段要多次访存(一次间址需两次访存,多次寻址需根据存储字的最高位确定几次访存)
寄存器寻址
在指令字中直接给出操作数所在的寄存器编号,即EA =Ri,其操作数在由 Ri 所指的寄存器内
访存次数
取指令 访存1次
执行指令 访存0次
优点
指令在执行阶段不访问主存,只访问寄存器,指令字短且执行速度快,支持向量/矩阵运算。
缺点
寄存器价格昂贵,计算机中寄存器个数有限
寄存器间接寻址
寄存器Ri中给出的不是一个操作数,而是操作数所在主存单元的地址,即EA=(Ri)
访存次数
取指令 访存1次
执行指令 访存1次
优点
与一般间接寻址相比速度更快
缺点
指令的执行阶段需要访问主存
基址寻址
以程序的起始存放地址作为“起点”
将CPU中基址寄存器(BR)的内容加上指令格式中的形式地址A, 而形成操作数的有效地址,即 EA =(BR)+ A
BR-—base address register
EA--effective address
基址寄存器是面向操作系统的,其内容由操作系统或管理程序确定。在程序执行过程中,基址寄存器的内容不变(作为基地址),形式地址可变(作为偏移量)
当采用通用寄存器作为基址寄存器时,可由用户决定哪个寄存器作为基址寄存器,但其内容仍由操作系统确定
优点
可扩大寻址范围
用户不必考虑自己的程序存于主存的哪一空间区域,故有利于多道程序设计
可用于编制浮动程序(整个程序在内存里边的浮动)
变址寻址
程序员自己决定从哪里作为“起点”
有效地址EA等于指令字中的形式地址A与变址寄存器I的内容相加之和,即 EA =(IX)+ A
变址寄存器是面向用户的,在程序执行过程中,变址寄存器的内容可由用户改变。IX作为偏移量,形式地址A不变(作基地址)----与基址寻址相反
作用(与直接寻址对比)
在数组处理过程中,可设定A为数组的首地址,不断改变变址寄存器IX的内容,便可很容易形成数组中任一数据的地址,特别适合编制循环程序
直接
变址
相对寻址
以程序计数器PC所指地址作为“起点”,“相对PC”寻址
把程序计数器PC的内容加上指令格式中的形式地址A而形成操作数的有效地址,即 EA =(PC)+ A ,其中A是相对于PC所指地址(当前执行指令的下一条指令)的位移量,可正可负,补码表示
作用
随着代码越写越多,你想挪动for循环的位置
用相对寻址,这段代码在 程序内浮动 时不用更改跳转指令的地址码
操作数的地址不是固定的,它随着PC值的变化而变化,并且与指令地址之间总是相差一个固定值,因此便于程序浮动(一段代码在程序内部的浮动)
相对寻址广泛应用于转移指令
偏移寻址
堆栈寻址
操作数存放在堆栈中,隐含使用堆栈指针(SP)作为操作数地址
对比
机器级代码
x86架构CPU中的寄存器
、
其他寄存器只能固定使用32bit
指令格式举例
AT&T格式 v.s Intel格式
Intel主存地址偏移表示
程序中的选择语句(分支结构)
无条件
条件
举例
循环
用条件转移指令
①循环前的初始化
②是否直接跳过循环?
③循环主体
④是否继续循环?
用loop指令
️️注意:循环计数器只能用ecx寄存器
理论上,能用loop 指令实现的功能一定能用条件转移指令实现
使用loop 指令可能会使代码更清晰简洁
高级语言的函数调用
call、ret 指令
call指令的作用
①将IP旧值压栈保存(保存在函数的栈帧顶部)
②设置IP新值,无条件转移至被调用函数的第一条指令
ret 指令的作用
从函数的栈帧顶部找到IP旧值,将其出栈并恢复IP寄存器
push、pop 指令
Push A
先让esp减4,再将 A 压入
Pop A
栈顶元素出栈写入 A,再让 esp 加4
mov 指令
结合esp、ebp指针访问栈帧数据
函数调用时,如何切换栈帧
push ebp #保存上一层函数的栈帧基址(ebp旧值)
mov ebp,esp #设置当前函数的栈帧基址(ebp新值)
等价“enter”
函数返回时,如何切换栈帧
mov esp,ebp #让esp指向当前栈帧的底部
pop ebp #将esp所指元素出栈,写入寄存器ebp
等价“leave”
传递参数和返回值
CISC & RISC
Complex Instruction Set Computer
Reduced Instruction Set Computer
CPU
CPU的功能和结构
功能
1.指令控制
完成取指令、分析指令和执行指令的操作,即程序的顺序控制
2.操作控制
CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作
3.时间控制
对各种操作加以时间上的控制。时间控制要为每条指令按时间顺序提供应有的控制信号
4.数据加工
对数据进行算术和逻辑运算
5.中断处理
对计算机运行过程中出现的异常情况和特请求进行处理
结构
专用数据通路方式
根据指令执行过程中的数据和地址的流动方向安排连接线路
性能较高,基本不存在数据冲突现象,但结构复杂,硬件量大,不易实现
多路选择器
根据控制信号选择一路输出
三态门
使用控制信号控制每一路是否输出
CPU内部单总线
将所有寄存器的输入端和输出端都连接到一条公共的通路上
结构简单,容易实现,但数据传输存在较多冲突的现象,性能较低
运算器的基本结构
1.算术逻辑单元
2.通用寄存器组
如AX、BX、CX、DX、SP等
3.暂存寄存器
暂存从主存读来的数据
4.累加寄存器
用于暂时存放ALU运算的结果信息,用于实现加法运算
5.程序状态字寄存器
保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息,如溢出标志(OP)、符号标志(SF)、零标志(ZF)、进位标志(CF)等
6.移位器
7.计数器
控制器的基本结构
1.程序计数器
PC
2.指令寄存器
IR, 保存当前正在执行的那条指令
3. 指令译码器
ID, 对操作码字段进行译码,向控制器提供特定的操作信号
4.微操作信号发生器
根据IR的内容(指令)、PSW的内容(状态信息)及时序信号,产生控制整个计算机系统所需的各种控制信号,其结构有组合逻辑型和存储逻辑型两种
5.时序系统
6. 存储器地址寄存器
存放所要访问的主存单元的地址
7.存储器数据寄存器
存放向主存写入的信息或从主存中读出的信息
用户可见的寄存器:通用寄存器组、程序状态字寄存器PSW、程序计数器PC
用户不可见的寄存器:MAR、MDR、IR、暂存寄存器
指令执行过程
指令周期
CPU从主存中每取出并执行一条指令所需的全部时间
指令周期常常用若干机器周期(CPU周期)来表示
一个机器周期又包含若干时钟周期(也称为节拍、T周期或CPU时钟周期,它是CPU操作的最基本单位)
指令周期的数据流
取指周期
间址周期
执行周期
执行周期的任务是根据IR中的指令字的操作码和操作数通过ALU操作产生执行结果。 不同指令的执行周期操作不同,因此没有统一的数据流向
中断周期
指令执行方案
方案1.单指令周期
对所有指令都选用相同的执行时间来完成。
指令之间串行执行;指令周期取决于执行时间最长的指令的执行时间
方案2.多指令周期
对不同类型的指令选用不同的执行步骤来完成。
指令之间串行执行;可选用不同个数的时钟周期来完成不同指令的执行过程。
方案3.流水线方案
在每一个时钟周期启动一条指令,尽量让多条指令同时运行,但各自处在不同的执行步骤中。
指令之间并行执行。
数据通路 的功能和基本结构
数据通路:数据在功能部件之间传送的路径
内部总线:同一部件(如CPU内部连接各寄存器及运算部件)之间的总线
系统总线:同一台计算机系统的各部件,如CPU、内存、通道和各类I/O接口间互相连接的总线
基本结构
1. CPU内部单总线方式
1. 寄存器之间数据传送
比如把PC内容送至MAR
(PC) →Bus PCout有效,PC内容送总线
Bus→MAR MARin有效,总线内容送MAR
2. 主存与CPU之间的数据传送
比如CPU从主存读取指令
(PC)→Bus→MAR PCout和MARin有效,现行指令地址 MAR
1→R CU发读命令(通过控制总线发出,图中未画出)
MEM(MAR) → 数据线 → MDR
MDR→Bus→IR MDRout和IRin有效,现行指令 → IR
3. 执行算术或逻辑运算
比如一条加法指令
Ad(IR)→Bus→MAR MDRout 或 MARin 有效 或 AdlRout 和 MARin 有效
1-R CU发读命令
MEM(MAR)→ 数据线 → MDR MDRin有效
MDR→Bus→Y(一个暂存寄存器) MDRout和Yin有效,操作数 → Y
(ACC)+(Y)→ Z(另一个暂存寄存器) ACCout和ALUin有效,CU向ALU发送加命令
Z→ACC Zout和ACCin有效,结果 → ACC
2. CPU内部多总线方式
3. 专用数据通路方式
取指周期
(PC)→MAR C0有效
(MAR)→主存 C1有效
1→R 控制单元向主存发送读命令
M(MAR) →MDR C2有效
(MDR) →IR C3有效
(PC) +1→PC
Op(IR)→CU C4有效
控制器 的功能和工作原理
硬布线控制器
根据指令操作码、目前的机器周期、节拍信号、机器状态条件,即可确定现在这个节拍下应该发出哪些“微命令”
设计步骤
1. 分析每个阶段的微操作序列(取值、间址、执行、中断四个阶段)
确定哪些指令在什么阶段、在什么条件下会使用到的微操作
取指周期(通用步骤)
PC → MAR
1 → R
M ( MAR) → MDR
MDR → IR
OP (IR) → ID
ID(Instruction Decoder,指令译码器)
(PC) + 1 → PC
间址周期(通用步骤)
Ad(IR) → MAR
1 → R
M ( MAR) → MDR
MDR → Ad(IR)
执行周期(各不相同)
CLA(clear ACC 指令ACC清零)
0 → AC
LDA X(取数指令,把x所指内容取到ACC)
Ad (IR) → MAR 1 → R M ( MAR) → MDR MDR → AC
JMP X(无条件转移)
Ad (IR) → PC
。。。 。。。
中断周期(通用步骤)
2. 选择CPU的控制方式
采用定长机器周期还是不定长
3. 安排微操作时序
例如:如何用3个节拍完成整个机器周期内的所有微操作?
三原则
原则一 微操作的先后顺序不得随意更改
原则二 被控对象不同的微操作 尽量安排在一个节拍内完成
原则三 占用时间较短的微操作 尽量安排在一个节拍内完成 并允许有先后顺序
4. 电路设计
1. 列出操作时间表
2. 写出微操作命令的最简表达式
3. 画出逻辑图
微程序控制器
概念对比
程序 > “指令 = 微程序” > 微指令 > “微操作 = 微命令”
顺序控制用来指明下一条指令的地址
操作控制用于指明执行哪个微操作
指令是对 程序执行步骤 的描述 微指令是对 指令执行步骤 的描述
每一种指令对应一个微程序
微命令与微操作一一对应
µPC = CMAR
µIR = CMDR
设计思路
采用“存储程序”的思想,CPU出厂前将所有指令的“微程序”存入“控制器存储器”中
基本结构
工作原理
微指令的设计
类型
1.水平型微指令
一条微指令能定义多个可并行的微命令
格式
优点:微程序短,执行速度快
缺点:微指令长,编写微程序较麻烦
2.垂直型微指令
一条微指令只能定义一个微命令,由微操作码字段规定具体功能
格式
优点:微指令短、简单、规整,便于编写微程序
缺点:微程序长,执行速度慢,工作效率低
3.混合型微指令
在垂直型的基础上增加一些不太复杂的并行操作
编码方式
(1)直接编码(直接控制)
在微指令的操作控制字段中,每一位代表一个微操作命令
优点:简单、直观,执行速度快,操作并行性好
缺点:微指令字长过长,n个微命令就要求微指令的操作字段有n位,造成控存容量极大
(2)字段直接编码
将微指令的控制字段分成若干 “段”(段长可不相等),每段经译码后发出控制信号
分段原则
① 互斥性微命令分在同一段内,相容性微命令分在不同段内
② 每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间
③ 一般每个小段还要留出一个状态,表示本字段不发出任何微命令。因此,当某字段的长度为3位时,最多只能表示7个互斥的微命令,通常用000表示不操作
优点:可以缩短微指令字长
缺点:要通过译码电路后再发出微命令,因此比直接编码方式慢
(3)字段间接编码(隐式编码)
一个字段的某些微命令需由另一个字段中的某些微命令来解释
优点:可进一步缩短微指令字长
缺点:削弱了微指令的并行控制能力,故通常作为字段直接编码方式的一种辅助手段
地址形成方式
1.微指令的 下地址字段 指出
微指令格式中设置一个下地址字段,由微指令的下地址字段直接指出后继微指令的地址,这种方式又称断定方式
2.根据机器指令的 操作码 形成
当机器指令取至指令寄存器后,微指令的地址由操作码经微地址形成部件形成
3. 增量计数器法
(CMAR)+ 1 -> CMAR
4.分支转移
转移方式:指明判别条件
转移地址:指明转移成功后的去向
5.通过测试网络
6.由硬件产生微程序入口地址
微程序控制单元的设计
设计步骤
1.分析每个阶段的微操作序列
取指
间指
执行
中断
2. 写出对应机器指令的微操作命令及节拍安排
注意红、紫字
3. 确定微指令格式
操作控制字段
根据微操作个数决定采用何种编码方式
顺序控制字段
根据CM(控存)中存储的微指令总数
微指令字长
4. 编写微指令码点
根据操作控制字段每一位代表的微操作命令,编写每一条微指令的码点
指令流水线
类型
1.顺序执行方式
传统冯-诺依曼机采用顺序执行方式,又称串行执行方式
总耗时T = n x 3t = 3nt
2.一次重叠执行方式
总耗时T = 3t +(n-1)x 2t =(1+2n)t
3.二次重叠执行方式
总耗时T = 3t +(n-1)x t =(2+n)t
表示方法
1.指令执行过程图
主要用于分析指令执行过程以及影响流水线的因素
2.时空图
主要用于分析流水线的性能
性能指标
1.吞吐率
吞吐率是指在单位时间内流水线所完成的任务数量,或是输出结果的数量
2.加速比
完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比
3.效率
即设备利用率
机器周期的设置
①IF取指 -> ②ID译码&取数 -> ③EX执行 -> ④M访存 -> ⑤WB写回寄存器
影响流水线的因素
1.结构相关(资源冲突)
由于多条指令在同一时刻争用同一资源而形成的冲突称为结构相关
解决办法
1.后一相关指令暂停一周期
2. 资源重复配置: 数据存储器+指令存储器
2.数据相关(数据冲突)
数据相关指在一个程序中,存在必须等前一条指令执行完才能执行后一条指令的情况,则这两条指令即为数据相关
解决办法
1.把遇到数据相关的指令及其后续指令都暂停一至几个时钟周期,直到数据相关问题消失后再继续执行。可分为硬件阻塞(stall)和软件插入“NOP”两种方法。
2.数据旁路技术
3.编译优化
通过编译器调整指令顺序来解决数据相关
3.控制相关(控制冲突)
当流水线遇到转移指令和真他改变PC值的指令而造成断流时,会引起控制相关
解决办法
1.转移指令分支预测
简单预测(永远猜ture或false)
动态预测(根据历史情况动态调整)
2.预取转移成功和不成功两个控制流方向上的目标指令
3.加快和提前形成条件码
4.提高转移方向的猜准率
流水线的多发技术
1.超标量技术
每个时钟周期内可 并发多条独立指令
要配置多个功能部件
空分复用
不能调整指令的执行顺序
通过编译优化技术,把可并行执行的指令搭配起来
2.超流水技术
在一个时钟周期内再分段
在一个时钟周期内一个功能部件使用多次
时分复用
不能调整指令的执行顺序
3.超长指令字
由编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令 组合成一条具有多个操作码字段的 超长指令字(可达几百位)
采用多个处理部件
五段式指令流水线
运算类指令
举例
工作步骤
IF
根据PC从指令Cache取指令至IF段的锁存器
ID
取出操作数至ID段锁存器
EX
运算,将结果存入EX段锁存器
M
空段(RISC计算机两个操作数均来自寄存器,无需访存)
WB
将运算结果写回指定寄存器
LOAD指令
举例
工作步骤
IF
根据PC从指令Cache取指令至IF段的锁存器
ID
将基址寄存器的值放到锁存器A,将偏移量的值放到Imm
EX
运算,得到有效地址
M
从数据Cache中取数并放入锁存器
WB
将取出的数写回寄存器
STORE指令
举例
工作步骤
IF
根据PC从指令Cache取指令至IF段的锁存器
ID
将基址寄存器的值放到锁存器A,将偏移量的值放到Imm。将要存的数放到B
EX
运算,得到有效地址。并将锁存器B的内容放到锁存器 Store
M
写入数据Cache
WB
空段
RISC处理器只有“取数LOAD”和 “存数STORE” 指令才能访问主存
条件转移指令
举例
工作步骤
IF
根据PC从指令Cache取指令至IF段的锁存器
ID
进行比较的两个数放入锁存器A、B;偏移量放入Imm
EX
运算,比较两个数
M
将目标PC值写回PC
WB
空段
无条件转移指令
举例
工作步骤
IF
根据PC从指令Cache取指令至IF段的锁存器
ID
偏移量放入Imm
EX
将目标PC值写回PC
M
空段
WB
空段
“WrPC段”耗时比EX段更短,可安排在EX段时间内完成。WrPC段越早完成,就越能避免控制冲突。当然,也有的地方会在WB段时间内才修改PC的值
多处理器
SISD(单指令流 单数据流)
特性
各指令序列只能并发、不能并行,每条指令处理一两个数据
不是 数据级并行技术
硬件组成
一个处理器 + 一个主存储器
若采用指令流水线,需设置多个功能部件,采用多模块交叉存储器
SIMD(单指令流 多数据流)
特性
各指令序列只能并发、不能并行,但每条指令可同时处理很多个具有相同特征的数据
是一种 数据级并行技术
硬件组成
一个指令控制部件(CU)+多个处理单元/执行单元(如ALU)+ 多个局部存储器+一个主存储器
每个执行单元有各自的寄存器组、局部存储器、地址寄存器
不同执行单元执行同一条指令,处理不同的数据
擅长
对结构类似的大量数据进行相同处理。一条指令处理很多个数据
某些显卡常采用SIMD,图像处理时,常对每个像素点进行完全一样的渲染(比如加个粉红色滤镜)
可用于优化for循环中对数组元素的重复处理
MISD(多指令流 单数据流)
多条指令并行执行,处理同一个数据。现实中不存在这种计算机
MIMD(多指令流 多数据流)
特性
各指令序列并行执行,分别处理多个不同的数据
是一种 线程级并行、甚至是线程级以上并行技术
进一步分类
多处理器系统
全称:共享内存多处理器(Shared Memory multiProcessor, SMP)或 多核处理器(multi-core)
特性
各处理器之间,能通过LOAD/STORE指令访问同一个主存,能通过主相互传送数据
硬件组成
一台计算机内,包含多个处理器+一个主存储器
多个处理器共享单一的物理地址空间
多计算机系统
特性
各计算机之间,不能通过LOAD/STORE指令直接访问对方的存储器,只能通过“消息传递”相互传送数据
硬件组成
由多台计算机组成,因此拥有多个处理器+多个主存储器
每台计算机拥有各自的私有存储器,物理地址空间相互独立
向量处理机(SIMD思想的进阶应用)
特性
一条指令的处理对象是“向量”
擅长对向量型数据并行计算、浮点数运算,常被用于超级计算机中,处理科学研究中巨大运算量
硬件组成
多个处理单元,多组“向量寄存器”
主存储器应采用“多个端口同时读取”的交叉多模块存储器
主存储器大小限定了机器的解题规模,因此要有大容量的、集中式的主存储器
硬件多线程
BUS
概述
定义
总线是一组 能为多分部件分时共享的 公共信息传送线路
分类
按数据传输格式
串行
只需要一条传输线,成本低廉,广泛应用于长距离传输
应用于计算机内部时,可以节省布线空间
在数据发送和接收的时候要进行拆卸和装配,要考虑串行-并行转换的问题
并行
逻辑时序比较简单,电路实现起来比较容易
信号线数量多,占用更多的布线空间;远距离传输成本高昂
由于工作频率较高时,并行的信号线之间会产生严重干扰,对每条线等长的要求也越高,所以无法持续提升工作频率
按总线功能(连接的部件)
片内总线
芯片内部的总线
系统总线
计算机系统内各功能部件(CPU、主存、I/O接口)之间相互连接的总线
包括
数据总线 DB
双向
地址总线 AB
单向
控制总线 CB
双向
CPU送出的控制命令
主存(或外设)返回CPU的反馈信号
通信总线
系统之间
如网线
按时序控制方式
同步
异步
特性
机械特性
尺寸、形状
电气特性
传输方向、电平有效范围
功能特性
数据、地址、控制信号
时间特性
信号和时序的关系
结构
单总线
单总线并不是指只有一根信号线,系统总线按传送信息的不同可以细分为地址总线、数据总线和控制总线
双总线
一条是主存总线,用于CPU、主存和通道之间进行数据传送; 另一条是I/0总线,用于多个外部设备与通道之间进行数据传送
三总线
系统工作效率较低
性能指标
总线的传输周期(总线周期)
一次总线操作所需的时间
通常由若干个总线时钟周期构成
总线时钟周期
即机器的时钟周期
总线的工作频率
总线周期的倒数
总线的时钟频率
时钟周期的倒数
总线宽度
又称为总线位宽,它是总线上同时能够传输的数据位数,通常是指数据总线的根数,如32根称为32位(bit)总线
总线带宽
总线带宽=总线工作频率 × 总线宽度(bit/s)=总线工作频率×(总线宽度/8)(B/s)
总线复用
信号线数
地址总线 + 数据总线 + 控制总线
操作和定时
总线周期的四个阶段
1)申请分配阶段
由需要使用总线的主模块(或主设备)提出申请,经总线仲裁机构决定将下一传输周期的总线使用权授予某一申请者
2)寻址阶段
获得使用权的主模块通过总线发出本次要访问的从模块的地址及有关命令,启动参与本次传输的从模块
3)传输阶段
主模块和从模块进行数据交换,可单向或双向进行数据传送
4)结束阶段
主模块的有关信息均从系统总线上撤除,让出总线使用权
总线定时
总线在双方交换数据的过程中需要时间上配合关系的控制,这种控制称为总线定时,它的实质是一种协议或规则
同步通信(同步定时方式)
由统一时钟 控制数据传送
在一个总线周期中,发送方和接收方可进行一次数据传送
优缺点
优点
传送速度快,具有较高的传输速率;总线控制逻辑简单
缺点
主从设备属于强制性同步;不能及时进行数据通信的有效性检验,可靠性较差
适用于总线长度较短及总线所接部件的存取时间比较接近的系统
异步通信(异步定时分式)
采用 应答方式,没有公共时钟标准
主设备提出交换信息的“请求”信号,经接口传送到从设备;从设备接到主设备的请求后,通过接口向主设备发出“回答”信号
分类
1)不互锁方式
主设备发出“请求”信号后,不等“回答”信号,经过一段时间后自动撤销“请求”信号
从设备在接到“请求”信号后,发出“回答”信号,经过一段时间自动撤销“回答”信号。双方不存在互锁关系
2)半互锁方式
主设备必须接到从设备的“回答”信号后,才能撤销“请求”信号,有互锁的关系
从设备不必等待获知主设备的“请求”信号已经撤销,而是隔一段时间后自动撤销“回答”信号,不存在互锁关系
3)全互锁方式
主设备发出“请求”信号后,必须待从设备“回答”后,才撤销“请求”信号
从设备必须待获知主设备“请求”信号已撤销后,再撤销其“回答”信号。双方存在互锁关系
优缺点
优点
总线周期长度可变,能保证两个工作速度相差很大的部件或设备之间可靠地进行信息交换,自动适应时间的配合
缺点
比同步控制方式稍复杂一些,速度比同步定时方式慢
半同步通信
同步、异步结合
统一时钟的基础上,增加一个“等待”响应信号WAIT
分离式通信
充分挖掘 系统总线每瞬间的潜力
I/O System
I/O控制方式
1)程序查询方式
CPU不断轮询检查 I/O控制器中的“状态寄存器”,检测到状态为“己完成”之后,再从数据寄存器取出输入数据
2)程序中断方式
中断
程序中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序
中断系统
工作流程
中断请求
中断源向CPU发送中断请求信号
中断响应
当前状态可以处理中断?
开中断状态
进行中断判优:多个中断源同时提出请求时 通过中断判优逻辑响应一个中断源
实现
硬件实现
硬件排队器
软件实现
查询程序
优先级设置
硬件故障中断属于最高级,其次是软件中断;
非屏蔽中断优于可屏蔽中断;
DMA请求优于I/O设备传送的中断请求
高速设备优于低速设备;
输入设备优于输出设备;
实时设备优于普通设备
关中断状态
不处理中断
中断处理
中断隐指令
① 关中断
保护中断现场(即CPU主要寄存器中的内容)不被新的中断所打断
② 保存断点
保证在中断服务程序执行完毕后能正确地返回到原来的程序
③ 引出中断服务程序
取出中断服务程序的入口地址
软件查询法
略
硬件向量法
并传送给程序计数器 (PC)
中断服务程序
① 保护现场
保存通用寄存器和状态寄存器的内容
② 中断服务(设备服务)
主体部分
③ 恢复现场
通过出栈指令或取数指令把之前保存的信息送回寄存器中
④ 中断返回(开中断)
回到原程序断点处
多重中断
中断屏蔽技术
对比普通硬件排队器
普通硬件排队器
收到多个中断请求时,只响应其中一个固定优先级
增加中断屏蔽功能
调整多重中断的优先级
每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的请求,0表示可以正常申请,所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字
屏蔽字设置的规律
1.一般用'1'表示屏蔽,'0'表示正常申请
2.每个中断源对应一个屏蔽字
3.屏蔽字中”1“越多,优先级越高。每个屏蔽字中至少有一个”1“(至少要能屏蔽自身的中断)
例题
设某机有4个中断源A、B、C、D,其硬件排队优先次序为A>B>C>D,现要求将中断处理次序改为D>A>G>B。
写出每个中断源对应的屏蔽字
等待键盘 I/O时CPU可以先去执行其他程序,键盘 I/O完成后 I/O控制器向CPU发出中断请求,CPU响应中断请求,并取走输入数据
对于快速 I/O设备,如“磁盘”,每准备好一个字就给CPU发送一次中断请求,会导致什么问题?
CPU需要花大量的时间来处理中断服务程序,CPU利用率严重下降
解决
DMA
3)DMA控制方式
Direct Memory Access,直接内存访问
DMA控制器
工作流程
传送前
1)接受外设发出的DMA请求(外设传送一个字的请求),并向CPU发出总线请求
2)CPU响应此总线请求,发出总线响应信号,接管总线控制权,进入DMA操作周期
传送时
3)确定传送数据的主存单元地址及长度,并能自动修改主存地址计数和传送长度计数
4)规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作
传送后
5)向CPU报告DMA操作的结束
注意
在DMA传送过程中,DMA控制器将接管CPU的地址总线、数据总线和控制总线,CPU的主存控制信号被禁止使用。而当DMA传送结束后,将恢复CPU的一切权利并开始执行其操作
三总线结构中,如何解决CPU和DMA的访存冲突
(1)停止CPU访问主存
(2)DMA与CPU交替访存
一个CPU周期,分为C1和C2两个周期
C1和专供DMA访存
C2专供CPU访存
(3)存取周期挪用(周期窃取)
三种情况
CPU 此时不访存
CPU 先请求访存
DMA等CPU存取周期结束,再使用总线
CPU 与 DMA 同时请求访存
DMA优先
主存与高速 I/O设备之间有一条直接数据通路(DMA总线)。CPU向DMA接口发出“读/写”命令,并指明主存地址、磁盘地址、读写数据量等参数
DMA控制器自动控制磁盘与主存的数据读写,每完成一整块数据读写(如1KB为一整块),才向CPU发出一次中断请求
有的商用中型机、大型机可能会接上超多的I/0设备,如果都让CPU来管理,那么CPU就太累了
解决
通道控制
对比
4)通道控制方式
通道
可以理解为是“弱鸡版的CPU”。通道可以识别并执行一系列通道指令,通道指令种类、功能通常比较单一
I/O系统基本组成
硬件
包括外部设备、I/O接口、I/O总线等
软件
包括驱动程序、用户程序、管理程序、升级补丁等
通常采用I/O指令和通道指令实现主机和I/O设备的信息交换
操作码指明了CPU要对I/O接口做什么
命令码指明了I/O接口要对设备做什么
外部设备
输入设备
输出设备
显示器
分辨率
以宽、高的像素的乘积表示
灰度级
灰度级是指黑白显示器中所显示的像素点的亮暗差别,在彩色显示器中则表现为颜色的不同,灰度级越多,图像层次越清楚逼真。典型的有8位(256级)、16位等。n位可以表示2^n种不同的亮度或颜色
显示存储器(VRAM)
VRAM容量 = 分辨率 x 灰度级位数
VRAM带宽 = VRAM容量 x 刷新率
阴极射线管(CRT)显示器
将点阵存入由ROM构成的字符发生器中,在CRT进行光栅扫描的过程中,从字符发生器中依次读出某个字符的点阵,按照点阵中0和1代码不同控制扫描电子束的开或关,从而在屏幕上显示出字符。对应于每个字符窗口,所需显示字符的ASCII代码被存放在视频存储器VRAM中,以备刷新
外存储器
I/O接口
作用
1、数据缓冲
通过数据缓冲寄存器(DBR)达到主机和外设工作速度的匹配
2、错误或状态监测
通过状态寄存器反馈设备的各种错误、状态信息,供CPU查用
3、控制和定时
接收从控制总线发来的控制信号、时钟信号
4、数据格式转换
串-并、并-串 等格式转换
5、与主机和设备通信
实现 主机 - I/O接口 - I/O设备 之间的通信
结构和工作原理
①发命令:发送命令字到I/O控制寄存器,向设备发送命令(需要驱动程序的协助)
②读状态:从状态寄存器读取状态字,获得设备或I/O控制器的状态信息
③读/写数据:从数据缓冲寄存器发送或读取数据,完成主机与外设的数据交换
I/O端口
编址方式
统一编址
靠不同的地址码区分内存和I/O设备
优点
不需要专门的输入/输出指令,所有访存指令都可直接访问端口,程序设计灵活性高
端口有较大的编址空间
读写控制逻辑电路简单
缺点
端口占用了主存地址空间,使主存地址空间变小
外设寻址时间长(地址位数多,地址译码速度慢)
独立编址
由于地址有重复部分,所以靠不同的指令区分内存和I/O设备
优点
使用专用I/O指令,程序编制清晰
I/O端口地址位数少,地址译码速度快
I/O端口的地址不占用主存地址空间
缺点
I/O指令类型少,一般只能对端口进行传送操作,程序设计灵活性差
需要CPU提供存储器读/写、I/O设备读/写两组控制信号,增加了控制逻辑电路的复杂性
分类
按数据传送方式
并行接口
一个字节或一个字所有位同时传送
串行接口
一位一位地传送
按主机访问I/O设备的控制方式
程序查询接口
中断接口
DMA接口
按功能选择的灵活性
可编程接口
不可编程接口
截屏2024-03-11 15.49.01
截屏2024-03-02 15.40.52
截屏2024-02-18 17.45.08