1 . 概要
四代计算机
第一代:电子管计算机
第二代:晶体管计算机
第三代:中小规模集成电路计算机
第四代:超大规模集成电路计算机
冯诺依曼计算机特点及组成部件
组成部件:运算器,控制器,存储器,输入设备,输出设备
特点:
指令和数据以同等位存储在存储器中,可按地址寻访。采用二进制编码数据
将程序和数据统一表示
指令由操作码和地址码组成。
指令在存储器内按顺序存放,计算机具有顺序指令的处理能力。
早期的冯诺依曼机以运算器为中心。
CPU性能公式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rA4YmH6J-1629254130545)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210507113221174.png)]
性能 = 1 / 执行时间
CPU执行时间:简称CPU时间,执行某一任务在CPU上所花费的时间。
用户CPU时间:CPU执行用户程序花费的时间。
系统CPU时间:操作系统为用户服务花费的CPU时间。
CPU时钟周期:处理器时钟的一个周期的时间。是CPU中最小的时间单位,是主频的倒数。(单位:秒)
主频(CPU时钟频率):机器内部主时钟的频率。频率越高,执行指令速度越快。(单位:Hz)
CPU时钟周期 = 1 / 主频 1Hz表示每秒执行1次
CPI:执行一条指令所需的时钟周期数。
CPU执行时间 = CPU时钟周期数 / 主频 = (指令条数 * CPI) / 主频
CPU执行时间 = CPU时钟周期数 * CPU时钟周期 = (指令条数 * CPI) / 时钟频率
CPU执行时间取决于:①主频(时钟频率)②每条指令执行所用的时钟周期数(CPI)③指令条数
MIPS:每秒执行多少百万条指令
MIPS = 指令条数/指令时间 / 1 0 6 10^6 106 = 主频 / CPI
2.指令
CISC 和 RISC
CISC:复杂指令指令集。 X86
RISC:精简指令指令集。 ARM和MIPS
CISC的指令能力强,单多数指令使用率低却增加了CPU的复杂度,指令是可变长格式;RISC的指令大部分为单周期指令,指令长度固定,操作寄存器,只有Load/Store操作内存
CISC支持多种寻址方式;RISC支持方式少
CISC通过微程序控制技术实现;RISC增加了通用寄存器,硬布线逻辑控制为主,是和采用流水线
CISC的研制周期长
RISC优化编译,有效支持高级语言
MIPS指令格式
指令字:完整的一条指令的二进制表示
指令字长:指令字中二进制代码的位数
指令格式:指令字中的操作码和操作数地址的二进制位的分配方案。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-efNnOoBV-1629254130553)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210605115500940.png)]
操作码:指明本条指令的操作功能,每条指令有一个确定的操作码
操作数地址:说明操作数存放的地址,有时是操作数本身
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-APYGKOH2-1629254130557)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210605115837519.png)]
op:指令的基本操作,通常为操作码
rs:第一个源操作数的寄存器
rt:第二个源操作数的寄存器
rd:用于存放操作结果的目的寄存器
shamt:位移量,在移位指令中使用
funct:功能码,用于指明op字段中操作的特定变式
三种指令格式:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xhCQld8L-1629254130563)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210605120047487.png)]
程序员可见 PC,PSWR
不可见: IR、MAR、MDR
MIPS加减,访存,决策指令
加减法(R型)
add a, b, c # a = b + c
sub d, a, e # d = a - e
访存(I型)
lw $t0, 32($s3) # s3存储数组A,每四个字节为一个单位,将A[8]存储到t0
sw $t0, 48($s3) # 将t0存储到A[12]
常数或者立即操作数(I型)
addi $s3. $s3. 4 # s3加上立即数4
逻辑操作(R型)
sll $t2. $s0. 4 # $t2 = $s0 << 4
and $t0. $t1. $t2 # $t0 = $t1 & $t2
or $t0. $t1. $t2 # $t0 = $t1 | $t2
nor $t0. $t1. $t3 # $t0 = ~($t1 | $t3)
决策指令(I型)
beq register1 register2 L1 # register1和register2数值相等,则转移到标签为L1的语句
bne $s3. $s4. Else # 如果s3和s4中不相等,则跳转到Else
slt $t0. $s3, $s4 # 当存储器$s3的值小于$s4的值时,将$t0置为1,否则置为0
slti $t0. $s2. 10 # 与立即数比较
MIPS计算机对过程的支持(J型)
jal ProcedureAddress # 跳转到某个地址的同时,将下一条指令的地址保存到寄存器$ra中的指令。实际上将PC+4保存在寄存器$ra中,从而将链接指向下一条指令
jr $ra # 无条件跳转到寄存器所指定的地址
主存中的栈($sp)
压栈 $sp-4
出栈$sp+4
MIPS指令的寻址方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MX3cw2NU-1629254130567)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210606220718235.png)]
立即数寻址(I型):操作数是位于指令自身中的常数
寄存器寻址(R型):操作数是寄存器
基址寻址(I型)(存取指令):操作数在内存,其地址是指令中基址寄存器和常数的和
PC相对寻址(I型)(分支指令):地址是PC和指令⾃身中数的和
针对的是下一条指令的地址(PC+4)
Address左移两位与PC相加
Address为字地址,PC为字节地址
伪直接寻址(J型):跳转地址是指令中26位字段和PC⾼位相连⽽成(左移2位与PC⾼4位相连)
分支和跳转中的寻址
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EyAb3tvD-1629254130572)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210606222155221.png)]
在MIPS中,条件分支的地址范围 + / − 2 15 +/-2^{15} +/−215个字
在MIPS中,J和JAL指令的地址范围 + / − 2 25 +/-2^{25} +/−225个字
3. 算术运算
3.1 数值型数据的表示
定点数
⼩数点位置固定
由于约定在固定位置,小数点不再使用记号表示
通常将数据表示成纯小数或纯整数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CmUb9PMQ-1629254130578)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210610085703484.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rBUi1Ote-1629254130580)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210610090528085.png)]
数值范围有限,要求的处理硬件简单。
浮点数(IEEE754)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e3UWr9Is-1629254130583)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210610094719584.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x8ptqerY-1629254130585)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210610095013667.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eougFhb9-1629254130587)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210610095929402.png)]
3.2 整数的编码(原码,反码,补码)
原码:符号位 || 数的绝对值
表示范围 [ − ( 2 n − 1 ) , 2 n − 1 ] [-(2^{n}-1),2^{n}-1] [−(2n−1),2n−1]
反码:符号位 || 数值按位取反(x<0)
表示范围 [ − ( 2 n − 1 ) , 2 n − 1 ] [-(2^n-1),2^n-1] [−(2n−1),2n−1]
补码:反码最低位+1(x<0)
表示范围 [ − 2 n , 2 n − 1 ] [-2^n,2^n-1] [−2n,2n−1]
正数的原码,反码,补码均相同,符号位为0,数值位同数的真值。
0的原码和反码均有2个编码,补码只有1个编码
负数的原码,反码,补码表示均不同,符号位为1,数值位:原码为数的绝对值,反码为每一位均取反码,补码在反码的最低位上+1
有符号数与无符号数进行比较:
有符号数转换成无符号数,进而进行比较。
若有int,则说明将此无符号数转化成了有符号数
补码的加法和减法
补码加法公式: [ x ] 补 + [ y ] 补 = [ x + y ] 补 ( m o d 2 n + 1 ) [x]_补+[y]_补=[x+y]_补(mod2^{n+1}) [x]补+[y]补=[x+y]补(mod2n+1)
补码减法公式: [ x − y ] 补 = [ x ] 补 − [ y ] 补 = [ x ] 补 + [ − y ] 补 ( m o d 2 n + 1 ) [x-y]_补=[x]_补-[y]_补=[x]_补+[-y]_补(mod2^{n+1}) [x−y]补=[x]补−[y]补=[x]补+[−y]补(mod2n+1)
[ x ] 补 [x]_补 [x]补与 [ − x ] 补 [-x]_补 [−x]补: [ x ] 补 [x]_补 [x]补连同符号位在内,逐位求反,再在最低位加1,即可得 [ − x ] 补 [-x]_补 [−x]补
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jtYKS4bw-1629254130589)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210610105115829.png)]
溢出概念和检测方法
定点整数机器中,数的表示范围 ∣ x ∣ < 2 n − 1 |x|<2^{n-1} ∣x∣<2n−1
在运算过程中,运算结果超出机器字长所能表示的范围的现象,称为“溢出”
可能产生的溢出情况
两正数加,变负数,上溢。
两负数加,变正数,下溢。
溢出检测方法一:双符号位法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fGPxDgOY-1629254130590)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210610105904997.png)]
溢出检测方法二:单符号位法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dn43Tr0u-1629254130592)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210610105915346.png)]
乘除运算
原码乘法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HyFySt4O-1629254130594)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210610185925914.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nOrZ4cPQ-1629254130596)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210610185238184.png)]
原码除法
两个原码表示的数相除时,商的符号由两数的符号按位相加求得,商的数值部分由两数的数值部分相除求得。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AKVpryGu-1629254130597)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210610190154216.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GYXXy4jM-1629254130599)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210610190841887.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JwRoBn53-1629254130601)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210610191939311.png)]
除法:恢复余数法,加减交替法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8mnsFQQh-1629254130603)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210610192455592.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q0VZDYix-1629254130605)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210610192641918.png)]
浮点运算
浮点数加减运算
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dLmw44KG-1629254130607)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210610194905090.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kkXY4sAA-1629254130609)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210610195240086.png)]
浮点数乘除
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EabtPqX3-1629254130611)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210610200512015.png)]
重点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pHWtJqmK-1629254130613)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210509120743913.png)]
4. 处理器
处理器的基本组成
CPU:中央处理器。是一台计算机的运算核心和控制核心
CPU的功能:提取指令,并对其译码,按指令对数据执行各种操作。读取指令,分析指令,执行指令。
CPU的基本三大部分:运算器,Cache,控制器
一个基本的MIPS实现
组合单元:输入只取决于输出。一个操作单元,如门,ALU。
状态单元(时序):输入不知取决于输出,包含状态。一个存储单元,如寄存器和存储器。
设计思路
取指:从指令存储器中读取指令(地址:PC)
读出一或两个源寄存器的值(地址:PC)
进行指令规定的运算(ALU)读/写数据存储器
将结果写入目的存储器
需要保存的值:PC,寄存器组,存储器
建立数据通路
用于取指和程序计数器自增的数据通路部分。取出的指令被数据通路的其他部分使用。
指令存储器,程序计数器,加法器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-05jwDKO2-1629254130614)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210612220101234.png)]
R型指令的数据通路
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kAGeishv-1629254130616)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210614091124505.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xx3jv5bt-1629254130617)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210614092407461.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8bVBn1Ed-1629254130619)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210614092151910.png)]
存取指令的数据通路
数据传送指令:在存储器和寄存器之间传送数据的指令
基地址,偏移量,寄存器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bXJfckpf-1629254130620)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210614093454894.png)]
存取指令采用基址寻址
将16位的偏移地址符号扩展为32位的带符号值,以及一个保存读出或写入数据的存储单元。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IgVxMB5t-1629254130622)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210614094223397.png)]
决策指令的数据通路
- 根据输入和计算过程中产生的值,执行不同的指令。
- 条件分支指令(PC相对寻址)
beq register1, register2, L1 # 如果相等则分支
bne register1, register2, L2 # 如果不相等则分支
- 指令集规定计算分支地址时使用的基地址,是分支指令的下一条地址。因此,计算分支目标的基地址为 P C + 4 PC+4 PC+4。
- 偏移量以字为单位,真正的字节偏移还需要左移两位,扩大四倍。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pcyzjHIa-1629254130624)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210614101941691.png)]
数据通路上增加多选器和控制信号
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EzI4SSVs-1629254130625)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210614110553302.png)]
控制信号名 | 无效时的含义 | 有效时的含义 |
---|---|---|
RegDst | 写寄存器的目标寄存器来自rt字段(位20:16) | 写寄存器的目标寄存器来自rd字段(位15:11) |
RegWrite | 无 | 寄存器堆写使能有效 |
ALUSrc | 第二个ALU操作数来自寄存器堆的第二个输出(读数据2) | 第二个ALU操作数为指令低16位的符号扩展 |
PCSrc | PC由PC+4取代 | PC由分支目标地址取代 |
MemRead | 无 | 数据存储器读使能有效 |
MemWrite | 无 | 将写入数据输入端的数据写入到用地址指定存储单元中 |
MemtoReg | 写入寄存器的数据来自ALU | 写入寄存器的数据来自数据存储器 |
PCSrc信号的生成,需将一个来自控制单元称为“Branch”(分支)的信号与ALU的零输出信号相“与”
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HtiSsPpP-1629254130627)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210614102340580.png)]
ALU控制
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-crcczNgO-1629254130629)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210614104521498.png)]
A:取反 B:补码 op:操作
ALUOp:(00)加法,(01)减法,(10)功能码
指令funct字段(6位)+ALUOp(2位)映射为 ALU控制信号(4位)
数据通路的操作
每种操作码下控制信号的取值
指令 | RegDst | ALUSrc | MemtoReg | RegWrite | MemRead | MemWrite | Branch | ALUOp1 | ALUOp2 |
---|---|---|---|---|---|---|---|---|---|
R型 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
lw | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
sw | x | 1 | x | 0 | 0 | 1 | 0 | 0 | 0 |
beq | x | 0 | x | 0 | 0 | 0 | 1 | 0 | 1 |
RegDst指的是**写寄存器**的目标寄存器的段号
ALUSrc为**ALU**的第二个操作数
MemtoReg为**写入寄存器**的数据来自
MemWrite为将数据写入**存储器**中
beq用的是减法的**ALUOp(01)**
执行R型指令
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zC3UyvKh-1629254130630)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210614105828062.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QCRrmena-1629254130632)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210614184115060.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EsCqGPaB-1629254130634)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210614105837999.png)]
执行存储指令
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f7fg0Vvo-1629254130635)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210614184457752.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Uo8D0E3x-1629254130637)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210614184536521.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jviGC81W-1629254130639)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210614184627180.png)]
执行条件分支指令
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yIAxxAOP-1629254130641)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210614184813756.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y5uLtCsb-1629254130644)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210614184916905.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lXXRgpVL-1629254130645)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210614184930624.png)]
流水线的概念和性能指标
单周期CPU
- 每条指令占用一个时钟周期
- 时钟周期满足最长时间指令的要求(lw指令)
- CPI=1
流水线原理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-neJsiJIY-1629254130647)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210614185902849.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Yfcy5LN-1629254130648)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210614190708816.png)]
流水线冒险
结构冒险
硬件不支持多条指令在同一时钟周期执行。因缺乏硬件支持而导致指令不能再预定的时钟周期内执行的情况。
解决方案:数据通路中的每一个功能单元都只能在一个流水级中使用
数据冒险
发生在由于一条指令必须等待另一条指令的完成而造成流水线暂停的情况下,即因无法提供指令执行所需数据而导致指令不能在预定的时钟周期内执行的情况。
解决方案:前推(旁路),从内部寄存器而非程序员可见的寄存器或存储器提前取出数据。重新安排代码,流水线阻塞。
控制冒险
决策依赖于一条指令的结果,而其他指令正在执行中。
解决方案:流水线阻塞
5. 存储器
计算机用来存放程序和数据的部件。
时间局部性:某个数据项在被访问之后可能很快被再次访问的特性。
空间局部性:某个数据项在被访问之后,与其地址相近可能很快再被访问的特性。
存储器的层次结构:一种由多存储器层次组成的结构,存储器的容量和访问时间随着离处理器距离的增加而增加。
层次之间满足的原则
- 一致性原则:处在不同层次存储器中的同一个信息应保持相同的值。
- 包含性原则:处在内层的信息一定被包含在其外层的存储器中。
Cache的基本工作原理
Cache定义
设置于主存和CPU之间的存储器,用高速的静态存储器实现,缓存了CPU频繁访问信息。
特点
高速:与CPU的运行速度基本匹配
透明:完全硬件管理,对程序员透明
CPU与Cache之间的数据传送是以字为单位
主存与Cache之间的数据传送是以块为单位
**块:**可存在于或不存在于Cache中的信息最小单元
**命中:**如果CPU需要的数据存放在Cache中
**缺失:**Cache中没找到所需要的数据
**命中率:**Cache中找到数据的存储访问比例
缺失率: 1 − 命 中 率 1-命中率 1−命中率
**命中时间:**是指访问存储器层次结构中的Cache所需要的时间
**缺失代价:**将相应的块从主存替换到CPU中,以及将该信息送给Cache的时间之和
DRAM:动态随机存取存储器。用于主存储器。
SRAM:静态随机存取存储器。用于Cache。
DRAM比SRAM速度慢,单位成本低,容量大。
Cache映射:直接映射,全相联映射,组相联映射
直接映射
一个主存块只能拷贝到Cache的一个特定行位置上去
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hh7mRaYD-1629254130650)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210616162539960.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DwBO2Gy0-1629254130652)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210616162924974.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VsjuqZMS-1629254130654)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210616163458028.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nRqFe0gj-1629254130655)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210616163710953.png)]
映射过程
- 首先利用内存地址的行号选择cache相应行
- 把行标记与CPU访问地址中tag进行比较,相同表示命中,访问cache
- 如果没有命中,访问内存,并将相应块写入Cache
特点
- 主存的字块只可以和固定的Cache字块对应,方式直接,利用率低。
- 标志位较短,比较电路的成本低。如果主存空间有 2 m 2^m 2m块,Cache中字块有 2 c 2^c 2c块,则标志位只要有 m − c m-c m−c位。且仅需要比较一次。
直接映射中Cache中的位数
- 32位地址
- 直接映射cache
- Cache大小为 2 n 2^n 2n个块,因此n位被用来索引
- 块大小为 2 m 2^m 2m个字,( 2 m + 2 2^{m+2} 2m+2字节)因此m为用来查找块中的字,两位是字节偏移信息。
标记域的大小: ( 32 − ( n + m + 2 ) ) (32-(n+m+2)) (32−(n+m+2))
直接映射的Cache的总位数: 2 n ( 块 大 小 + 标 记 域 大 小 + 有 效 位 域 大 小 ) 2^n(块大小+标记域大小+有效位域大小) 2n(块大小+标记域大小+有效位域大小)
也就是 2 n ( 2 m ∗ 32 + ( 32 − ( m + n + 2 ) ) + 1 ) 2^n(2^m*32+(32-(m+n+2))+1) 2n(2m∗32+(32−(m+n+2))+1)
全相联映射方式
一个主存块可以装入cache任意一行
Cache中数据块大小称为行,主存中数据块大小称为块,行与块等长。
Cache的一行存储了一个块的地址(块号)和块的内容(字)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wMcMWmfU-1629254130657)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210616173413190.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fN46IraC-1629254130659)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210616173429143.png)]
特点
- 冲突概率小,Cache的利用率高
- 标志位较长,比较电路成本高
- 适用于小容量的Cache
组相联映射方式
每个块有n个位置可放置的Cache被称作n路组相联Cache
将Cache分组,组间采用直接映射方式,组内采用全相联的映射方式
组相联映射中组号: 组 号 = ( 块 号 ) m o d ( C a c h e 中 的 组 数 ) 组号=(块号)mod(Cache中的组数) 组号=(块号)mod(Cache中的组数)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UxWq4vDk-1629254130661)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210616174753543.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-blXQC1wX-1629254130663)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210616174859561.png)]
三种映射方式比较
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vhFfOVDh-1629254130664)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210616175005379.png)]
直接映射:主存中的一块只能映射到Cache中唯一的一个位置定位时,不需要判断,只需替换。
全相联映射:主存中的一块可以映射到Cache中的任何一个位置
N路组相联映射:主存中的一块可以选择映射到cache中的N个位置
在Cache中查找一个块
直接映射
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-duG4pmZu-1629254130666)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210616180214856.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W78VGMAU-1629254130668)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210616180705362.png)]
组相联映射
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zxFs84GC-1629254130670)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210616180854903.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qe8Y5DEG-1629254130672)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210616180929779.png)]
影响Cache命中率的因素
提高Cache的性能
平均访问时间 = 命中时间* 命中率 + 失效损失 * 缺失率
影响Cache缺失率的因素
- Cache容量大,命中率高。
- Cache与主存储器每次交换信息的单位量时钟。
- Cache不同的组织方式,多路组相联更好
- Cache的多级组织可提高命中率
- Cache装满后的替换策略
Cache缺失率和块大小的关系
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-toQNjaLx-1629254130674)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210616200312340.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vqvrsiBk-1629254130675)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210616200913439.png)]
数据块较大:更好地利用空间局部性。意味着缺失损失的增大。需要花费更长的时间装入数据块。若块大小相对Cache总容量来说太大的话,命中率将降低。
数据块大少,缺失率提高。
关联度:一个主存块映射到Cache中时,可能存放的位置个数。
关联度越高,缺失率越低。
Cache缺失处理
直接映射
映射为一,不需要考虑替换策略。
N路组相联映射和全相联映射
考虑替换策略
替换算法
先进先出-FIFO
总是把最先进入的那一块淘汰
最近最少用-LRU
总是把最近最少用的那一块淘汰掉
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-23IyKb46-1629254130677)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210616201948237.png)]
多级Cache
采用两级或多级Cache来提高命中率
- 增加cache层次
- 减少访存次数,当L1未命中时,可以从L2中获取信息。
总的CPI = CPI + 每条指令的存储器阻塞的时钟周期 = CPI + 缺失指令占比 * 其所需要的时钟周期数。
虚拟存储器
降低主存储器成本,在同样成本下,可以获得更大的主存容量。
虚拟存储器概念:一种将主存用作辅助存储器高速缓存的技术。
-
物理地址:主存储器的地址。
-
虚拟地址:虚拟空间的地址,当需要访问主存时需要通过地址映射转换为物理地址。
-
地址转换:也称为地址映射。在访问内存时将虚拟地址映射为物理地址的过程。
-
页:虚拟地址中,块被称为页。访问缺失称为缺页。
作用:
- 获得更大的逻辑空间
- 实现内存共享
- 实现内存保护
根本目的:获得运行比物理存储器更大空间程序的能力。
虚拟地址中地址被划分为虚页号和页偏移
转换的时候,页偏移是相同的,只是虚页号到物理页号转换时数位减少。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M6fs9vCC-1629254130679)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210618220923127.png)]
页命中:需要访问的虚地址中的字在主存中(有效位为1)
缺页:需要访问的虚地址中的字不在主存中(有效位为0)
缺页处理:最近最少使用。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-393LfXA9-1629254130683)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210618221634905.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LpFO5ie4-1629254130684)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210618221723978.png)]
加快地址转换:TLB
访问页表需要两次访存:第一次访存先获得物理地址,第二次获取数据。
TLB:用于记录最近使用地址的映射信息的高速缓存,从而可以避免每次都要访问页表。
TLB缺失:TLB中没有访问的虚页号,但是该页在主存中。
缺页:访问的页不在主存中。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Be6qBs7k-1629254130686)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210618222820634.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2El8MTFS-1629254130688)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210618222829853.png)]
虚拟地址
TLB中存储虚页号标记与物理页号(加快地址转换)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-49AfjM1H-1629254130689)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210618223222702.png)]
物理地址->Cache
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xRbQk7dG-1629254130691)(C:/Users/DELL/AppData/Roaming/Typora/typora-user-images/image-20210618223245226.png)]
更大的主存容量。
虚拟存储器概念:一种将主存用作辅助存储器高速缓存的技术。
-
物理地址:主存储器的地址。
-
虚拟地址:虚拟空间的地址,当需要访问主存时需要通过地址映射转换为物理地址。
-
地址转换:也称为地址映射。在访问内存时将虚拟地址映射为物理地址的过程。
-
页:虚拟地址中,块被称为页。访问缺失称为缺页。
作用:
- 获得更大的逻辑空间
- 实现内存共享
- 实现内存保护
根本目的:获得运行比物理存储器更大空间程序的能力。
虚拟地址中地址被划分为虚页号和页偏移
转换的时候,页偏移是相同的,只是虚页号到物理页号转换时数位减少。
[外链图片转存中…(img-M6fs9vCC-1629254130679)]
页命中:需要访问的虚地址中的字在主存中(有效位为1)
缺页:需要访问的虚地址中的字不在主存中(有效位为0)
缺页处理:最近最少使用。
[外链图片转存中…(img-393LfXA9-1629254130683)]
[外链图片转存中…(img-LpFO5ie4-1629254130684)]
加快地址转换:TLB
访问页表需要两次访存:第一次访存先获得物理地址,第二次获取数据。
TLB:用于记录最近使用地址的映射信息的高速缓存,从而可以避免每次都要访问页表。
TLB缺失:TLB中没有访问的虚页号,但是该页在主存中。
缺页:访问的页不在主存中。
[外链图片转存中…(img-Be6qBs7k-1629254130686)]
[外链图片转存中…(img-2El8MTFS-1629254130688)]
虚拟地址
TLB中存储虚页号标记与物理页号(加快地址转换)
[外链图片转存中…(img-49AfjM1H-1629254130689)]
物理地址->Cache
[外链图片转存中…(img-xRbQk7dG-1629254130691)]