计算机体系结构期末复习
目录
1.计算机体系结构基本概念
1.1名词解释
-
体系结构:程序员所看到的计算机的属性,即概念性结构与功能特性
-
系列机:是指具有相同体系结构,但组成和实现不同的一系列不同型号的 计算机系统
-
兼容机:把不同厂家生产的具有相同体系结构的计算机称为兼容机
-
并行性:是指在同一时刻或是同一时间间隔内完成两种或两种以上性质相同或不相同的工作
-
大概率事件优先:计算机体系结构中最重要和最常用的原则。对于大概率事件(最常见的事件),赋予它优先的处理权和资源使用权,以获得全局最优的结果。
-
Amdahl定律:加快 某部件执行速度 所获得的 系统性能 加速比 ,受限于该部件在系统中的所占的重要性
-
程序的局部性原理:程序总是趋向于使用 最近使用过的数据和指令,也就是说,程序执行时所访问的存储器地址分布不是随机的,而是相对簇聚的
-
CPU性能公式
C P U 执行时间 = C P I ∗ I C ∗ T \begin{equation} CPU_{执行时间}=CPI*IC*T \end{equation} CPU执行时间=CPI∗IC∗T- 遇到的题目一般都是一种程序有多种指令,每种指令所占的比例不同,以及时钟周期不同,要注意对公式进行运用。
-
系统加速比:系统改进前与改进后总执行时间之比,公式要记得
系统加速比 = 总执行时 间 改进前 总执行时 间 改进后 \begin{equation} 系统加速比=\frac{总执行时间_{改进前}}{总执行时间_{改进后}} \end{equation} 系统加速比=总执行时间改进后总执行时间改进前- 这个公式的话,画出两格图,改进前,改进后,很好进行推理的
-
程序的局部性原理:程序在执行所访问的地址不是随机的,而是相对簇聚;这种簇聚包括包括指令和数据两部分
- 局部性分为时间局部性和空间局部性
- 时间局部性 是近期被访问的代码很可能 会被再次访问
- 空间局部性 是指地址上相邻的代码可能会被连续访问
1.2简答题目
-
冯诺伊曼描述的计算机由四个部分组成:
- 运算器,用于完成数值运算
- 存储器,用于存储数据和程序
- 输入输出设备,用于完成计算机和外部的信息交换
- 控制器,根据程序形成控制(指令、命令)序列,完成对数据的运算
-
传统的存储程序计算机的主要特征是什么?
- 以运算器为中心。输入输出设备 与 存储器 之间的数据传送都经过 运算器;存储器、输入输出设备的操作以及它们之间的联系都由控制器集中控制。
- 数据以二进制进行表示,采用二进制运算。主要面向数值计算和数据处理。
- 存储器按照一维线性编址,顺序访问存储器中的地址单元,每个存储单元的位数固定
- 程序存储 指令 和 数据 没有区别,存放在存储器中,指令和数据一样可以送到运算器中进行运算,指令和数据的区别,主要在于地址区域不同
- 指令在存储器中按顺序存放,由一个顺序控制器来 指定 即将被执行的 指令地址,每读取一条指令地址,计数器自动按顺序递增
- 指令由操作码和地址码组成,操作码指明操作类型,地址码指明操作数的操作结果和地址
-
计算机体系结构包括计算机系统涉及的三个方面:
- 计算机指令系统:程序员可见的实际指令系统,是计算机系统硬件和软件之间的一个分界面。
- 计算机组成:又叫微体系结构,是计算机系统中各个功能部件及其连接的设计 (微体系结构)
- 计算机硬件:是指计算机具体的实现技术,包括逻辑设计、集成电路工艺、封装等。(系统设计)
-
提高并行性的技术途径 p22
- 时间重叠
- 资源重复
- 资源共享
1.3计算题目
-
量化设计原则–与指令结合 P37
- 对于这种题目,就是需要进行拆解,有哪几种指令,每种指令所占的比例以及时钟周期一定要搞清楚,一定要列出来,这样就不会出错
- 就是坑点与难点就是 CPUb程序量是CPUa程序量的80%,这就导致了要重新计算各种指令所占的比例,这个是特别容易忽略的地方
- 加速比的题目 P42
2.指令系统 好像没有应用题
2.1名词解释
- 寻址方式:指令系统中 产生 所要访问数据地址的 方法。一般来说,寻址方式可以指明指令中的操作数是一个立即数,一个寄存器操作数或者是一个存储器操作数。对于存储器操作数来说,由寻址方式确定的存储器地址称为有效地址。
- 一些操作数寻址方式
- 寄存器寻址非常简单,从寄存器中取内容,再把最终的结果写回寄存器中,最终写回 R 1 , R 2 R_1,R_2 R1,R2感觉都可以
- 立即数寻址:不用访问存储部件,直接拿来使用
- 偏移寻址:是相对于寄存器的内容还要进行一个偏移,然后再在主存中取得最终的结果,再写回寄存器中
- 寄存器间接寻址:这个和偏移寻址差不多,只是少了一个偏移的过程,从寄存器取得的内容只是主存的地址。
- 索引寻址:根据表达式看,就是在寄存器间接寻址的基础上进行了一个扩展罢了
- 直接寻址或绝对寻址:直接给出在主存中的地址
- 存储器间接寻址:多级嵌套
- 自增存执:这个是先把结果写入 R1(写入R1的过程是寄存器间接寻址),然后R2自增
- 自减寻址:先进行R2自减操作,再写入R1(写入R1的过程是寄存器间接寻址)
- 缩放寻址:和偏移寻址类似,只不过有一个倍数的关系。
- 一些操作数寻址方式
- 其中偏移寻址 立即数寻址 寄存器间接寻址 出现频次最高
- 除了寄存器寻址和立即数寻址之外,其他最后一层嵌套都是 一Mem进行的
-
MIPS指令系统结构:之所以选择MIPS,是因为它不仅仅时一种典型的RISC结构,而且比较简单,易于理解和学习。
- MIPS的寄存器
- 32个64位通用寄存器(整数寄存器)R0的内容永远是0
- 32个32位单精度浮点数 既可以用来存储3个单精度浮点数(32位),也可以用来存储16个双精度浮点数(64位)
- 浮点数寄存器
- MIPS的数据表示
- 整数 字节8位,半字16位,字32位
- 浮点数:单精度浮点数32位,双精度浮点数64位
- MIPS的数据寻址方式 (少了一个寄存器间接寻址)
- 立即数寻址
- 偏移量寻址
- 立即数字段和偏移量字段都是都是 16位的。特别的,偏移量为0的偏移量寻址 就是寄存器间接寻址, R0(其值永远为0)作为基址存储器的偏移量寻址就是16位绝对寻址。这样实际就有了 4种寻址方式
- MIPS的指令格式 P58
- I类指令
- R类指令
- J类指令
- MIPS的寄存器
-
数据表示:是指计算机硬件能够 直接识别、指令系统可以直接调用的数据类型
2.2简答题目
1.常见的3种通用寄存器机器的优缺点各有哪些?(老师没画不考)
-
CISC指令集存在的问题:
- 各种指令使用频度相差悬殊,很多指令很少用到 (对比指令条数少)
- 指令系统庞大,指令条数很多,许多指令的功能复杂 (对比指令功能简单)
- 许多指令操作复杂,CPI较大 (指令的执行在单周期内完成)
- 指令功能复杂,规整性不好,不利于采用流水线技术提高性能
-
涉及RISC机器一般应当遵循以下规则:就是risc特点
- 指令条数少,指令功能简单。在确定指令系统时,只选取使用频度很高的指令,在此基础上补充一些最有用的指令(如支持操作系统和高级语言实现的指令)
- 采用简单而又统一的指令格式,并减少寻址方式。指令字长都为32位或者64位。
- 指令的执行在单周期内完成(采用流水线技术后)
- 采用load-store结构。即只有load和store指令才能访问存储器,其他指令操作都是在寄存器之间进行的
- 大多数指令都采用硬连线逻辑来实现 (硬连线逻辑)
- 强调优化编译器的作用,为高级语言程序生成优化的代码
- 充分利用流水线技术来提高性能
- 根据CPU性能公式,简述RISC指令系统计算机和CISC指令系统计算机的性能特点 (老师未画不考)
- CISC指令系统计算机特点是指令数量多,功能多样,除了包含基本指令外,往往还提供了很多功能很强的指令。根据cpu性能公式,只有对于频繁使用的子程序或指令串,用较强功能的指令取而代之才划得来。CISC指令系统统计,只有20%的指令使用频度比较高,占运行时间得80%,而其余得80%指令只在20%的运行时间内才会用到,而且使用频度高的指令也是最简单的指令。CISC指令系统有可能降低系统的性能和效率。
- RISC指令系统指令条数少,指令功能简单。确定指令系统时,只选取使用频度很高的指令,再次基础上补充一些最有用的指令,克服上述CISC的缺点。
2.2计算题目
- 课堂例题:机器字长32位,主存容量64MB
- CPU按照半字进行寻址时,可寻址单元数:
- CPU按照字节进行寻址时,可寻址单元数:
- CPU按照字进行寻址时,可寻址单元数:
小坑的 就是 这里 是以 位 作为单位,而不是 以 B(字节) 作为单位 (后面的Cache地址题目默认是以 B作为单位),所以进行单位换算的时候,全部换算成 b
- 64MB= 2 6 ∗ 2 10 ∗ 2 10 ∗ 2 3 2^6*2^{10}*2^{10}*2^3 26∗210∗210∗23 ,然后分别针对于下面的要求做 相除就好
- 半字 16b
- 字节 8b
- 字 32b
3.流水线技术 至少两个应用题
3.1名词解释
-
流水线技术:将一个重复的时序过程,分解成若干个子过程,而每一个子过程 都可以 有效 地 在其专有功能段上 与其他子过程 同时执行
-
静态流水线:同一时间内,流水线的各段 只能按同一种功能 的连接方式 工作
-
动态流水线:同一时间内,当某些段正在实现某种运算时,另一些段却在实现另一种运算。
-
相关:流水线中流动的指令极有可能 会相互依赖,即他们之间存在数据相关,结构相关,控制相关
-
定向技术:在某条指令产生一个计算结果之前,其他指令并不真正需要该计算结果,如果能够将该计算结果从其产生的地方 直接送到其他指令需要它得地方,那么就可以避免因为数据相关引起的暂停。基于这种考虑,定向技术的要点可以归纳为:
- 寄存器文件EX/MEM中的ALU的运算结果总是回送到ALU的输入寄存器
- 当定向硬件检测前一个ALU运算结果的写入寄存器 就是当前ALU操作的源寄存器,那么控制逻辑将前一个 ALU运算结果定向 到ALU 的输入端,后一个ALU操作就不必从寄存器中读取操作数
3.2简答题目
- 简述流水线技术的特点
- 流水线过程由多个相联系的子过程组成
- 每个子过程由专门的功能段实现
- 各个功能段所需时间尽可能相等
- 流水线有”通过时间“(第一个任务留出结果所需的时间)。在此之后流水过程才进入稳定工作状态,一拍流出一个结果
- 流水线技术适合于大量重复的时序过程,只有输入端连续提供任务,流水线效率才可充分发挥
- 流水线的分类
- 单功能流水线和多功能流水线
- 静态流水线和动态流水线
- 部件级、处理机级及处理机间流水线
- 标量流水线处理机、向量流水处理机
- 线性流水线、非线性流水线
- 指令的取指令周期 具体干了什么:
- 其操作为:根据PC值从存储器中取出指令,并将指令送入指令寄存器(IR):PC值增加4,指向顺序的下一条指令,并将下一条指令的地址放入临时寄存器NPC中
- 分解为两步操作
- 第一步是根据 PC值从存储器中取出指令,放入IR中 I R ← M e m [ P C ] IR \leftarrow Mem[PC] IR←Mem[PC]
- 第二步就是PC值自加,并将PC值放入 临时寄存器中 NPC,也就是
N
P
C
←
P
C
+
4
NPC \leftarrow PC+4
NPC←PC+4
当前指令的地址是由PC决定,下一条指令的地址是由NPC决定
- 指令的执行划分为5个步骤:
- 取指令 IF
- 指令译码/读寄存器周期 ID
- 指令执行/有效地址计算周期 EX
- 访存/分支操作完成周期 MEM
- 写回周期 WB
- 流水线的性能分析
- a.吞吐率:衡量流水线速度的重要指标,它是指在单位时间内流水线所完成的任务数或者输出结果的数量。(在流水线时空图中很好 计算吞吐率)
吞吐率 = 完成的任务数 总时间 \begin{equation} 吞吐率=\frac{完成的任务数}{总时间} \end{equation} 吞吐率=总时间完成的任务数- 最大吞吐率
T
P
m
a
x
TP_{max}
TPmax,这里是指流水线在连续流动达到稳定状态后所得到的吞吐率
- 如果流水线各段时间
△
t
\triangle t
△t相等,则有
T P m a x = 1 △ t 0 \begin{equation} TP_{max}=\frac{1}{\triangle t_0} \end{equation} TPmax=△t01 - 如果流水线各段时间不等,则有
T P m a x = 1 m a x △ t i \begin{equation} TP_{max}=\frac{1}{max{\triangle t_i}} \end{equation} TPmax=max△ti1
- 如果流水线各段时间
△
t
\triangle t
△t相等,则有
- 实际吞吐率
- 如果各段时间相等,完成n个任务需要的时间为
根据图3.13可以计算
- 如果各段时间相等,完成n个任务需要的时间为
- 最大吞吐率
T
P
m
a
x
TP_{max}
TPmax,这里是指流水线在连续流动达到稳定状态后所得到的吞吐率
- a.吞吐率:衡量流水线速度的重要指标,它是指在单位时间内流水线所完成的任务数或者输出结果的数量。(在流水线时空图中很好 计算吞吐率)
T 流水 = m △ t 0 + ( n − 1 ) △ t 0 \begin{equation} T_{流水}=m\triangle t_0 + (n-1)\triangle t_0 \end{equation} T流水=m△t0+(n−1)△t0
-
如果各段时间不相等
-
加速比:是指等功能的非流水线的完成时间与流水线的完成时间之比
-
效率:是指流水线的设备利用率
- 从流水线时空图上进行理解的话
E = 有效面积 总面积 \begin{equation} E=\frac{有效面积}{总面积} \end{equation} E=总面积有效面积
- 从流水线时空图上进行理解的话
-
- 简述延迟分支方法中的3种调度策略的优缺点
- 从前调度:分支必须不依赖 于 被调度的指令,总是可以有效提高流水线性能。
- 从目标处调度:若分支转移失败,必须保证被调度的指令 对程序的执行 没有影响,可能需要复制被调度的指令。 分支转移成功时,可提高流水线性能。但由于复制指令,可能加大程序空间
- 从失败处调度:若分支转移成功,必须保证被调度的指令对程序的执行无影响。分支转移失败时,可提高流水线性能
- 流水线中的相关:
- 结构相关:当指令在同步重叠执行过程中,硬件资源满足不了指令重叠执行的要求,发生资源冲突时将产生”结构相关“。
- 数据相关:当一条指令需要使用前面指令的执行结果,而这些指令均在流水线中重叠执行,就可能引起”数据相关“。
- 控制相关:当流水线遇到分支指令和其他能够改变PC值的指令时就会发生”控制相关“
- 数据相关的分类:
根据指令对寄存器的读写顺序,可以将数据相关分为以下三种类型,习惯上,这些相关是根据流水线所必须保持的访问顺序来命名的。考虑到流水线中的两条指令i和j,且i在j之前进入流水线,由此带来的数据相关有:- 写后读相关(RAW)i写j读:j的执行 要用到i的计算结果,但是当其在流水线中重叠执行时,j可能在i写入其结果之前就先 对保存该结果的 寄存器进行读操作,所以j会读到错误的值。(导致j读到错误的值)
- 正确的顺序应该是 i写好了之后 j再进行读取
- 写后写相关 (WAW)i写j写:j和i的目的操作数一样,但是当其在流水线中重叠执行时,j可能在i写入其计算结果之前 就先行对 保存该结果 的 寄存器 进行写操作,从而导致 写入顺序错误,在目的寄存器中留下的时i写入的值,而不是j写入的值 (导致写入的值是错误的)
- 读后写相关:j可能在 i读取某个源寄存器 的内容之前 就对该寄存器进行 写操作,导致i后来读取到的值是错误的 (导致i后来读取到的值是错误的)
- 读后读相关 (RAR) i读j读 不引起数据相关
- 写后读相关(RAW)i写j读:j的执行 要用到i的计算结果,但是当其在流水线中重叠执行时,j可能在i写入其结果之前就先 对保存该结果的 寄存器进行读操作,所以j会读到错误的值。(导致j读到错误的值)
-
流水线的控制相关 里面 调度分支延迟指令的三种方法 p99
-
对数据相关的编译器(软件)调度方法
-
流水线中解决瓶颈方法
- 瓶颈段细分方法:拆成等时间段的
- 瓶颈段重复设置方法:作为并行执行的分段
3.3计算题目 (流水线时空图,)
- 流水线的静态调度例题 P79
- 流水线的动态调度例题
动态流水线视频讲解
3.课堂流水线讲解 静态
- 首先分析计算过程(确定流水顺序)
- 画出流水线时空图
- 由流水线时空图可以的值,流水线完成的时间是24
△
t
\triangle t
△t
- 吞吐率=
11
24
\frac{11}{24}
2411
- 加速比=
4
∗
8
+
3
∗
6
24
\frac{4*8+3*6}{24}
244∗8+3∗6=2.08
- 效率=
4
∗
8
+
3
∗
6
24
∗
8
\frac{4*8+3*6}{24*8}
24∗84∗8+3∗6=0.26
- 课堂例题讲解之 动态流水线
- 首先画出流水线时空图
- 由流水线时空图可以得知,流水线完成任务所需的时间为 23 △ t 23\triangle t 23△t
- 吞吐率= 11 23 \frac{11}{23} 2311
- 加速比= 8 ∗ 4 + 3 ∗ 6 23 \frac{8*4+3*6}{23} 238∗4+3∗6=2.17
- 效率= 8 ∗ 4 + 3 ∗ 6 23 ∗ 8 \frac{8*4+3*6}{23*8} 23∗88∗4+3∗6=0.27
- 首先画出流水线时空图
5 不等时间的流水线过程 流水时间 加速比 效率 吞吐率 的计算过程
题目描述:流水线过程四个子段,1需要50 时间 2需要 100时间,3需要50时间,4 需要200时间,现在有五个任务,请计算上述指标
- T 流水时间 = ( 50 + 100 + 50 + 200 ) + ( 5 − 1 ) ∗ 200 = 1200 T_{流水时间}=(50+100+50+200)+(5-1)*200=1200 T流水时间=(50+100+50+200)+(5−1)∗200=1200 直接套用公式就可以了
- 吞吐率 = 5 1200 吞吐率=\frac{5}{1200} 吞吐率=12005
- 加速比 = 5 ∗ 400 1200 加速比=\frac{5*400}{1200} 加速比=12005∗400
- 效率 = 5 / 1200 ∗ ( 400 ) / 4 效率={5/1200}*(400)/4 效率=5/1200∗(400)/4
- 将上述流水线 采用细分 瓶颈段的方式,再来重新计算上述指标。
- 依旧是带入公式,但是带入公式的参数发生了变化,因为采用细分平井段方式,一个任务的所需要的段数变成了8,也就是m变成了8
- 其他的计算就和上述类似,直接带入公式进行相关计算
4.指令级并行
4.1名词解释
-
指令级并行:当指令之间不存在 相关时,它们在 流水线 中是可以 重叠起来 并行执行的。这种指令序列中存在的 潜在并行性称为指令级并行
-
循环展开:展开循环体若干次,将循环级并行性转化为指令级并行的技术,
-
指令调度:是通过改变指令在 程序中的位置,将相关指令之间的距离 加大到 不小于 指令执行延迟的时钟数目
-
动态调度:它通过硬件重新安排指令的执行顺序,来调整相关指令实际执行时的关系,减少处理器空转。
-
静态调度:为了消除或者减少空转,首先需要编译器确定并分离出 程序中存在相关的指令,然后进行指令调度,并对代码进行优化
-
保留站:保存 等待流出和正在流出指令 所需要的操作数 (保留站:就是保留指令所需要的操作数)
4.2简答题
- 程序中的相关性(和流水线中的相关性结合记忆)
- 数据相关
- 名相关(WAW,RAW)
- 控制相关
-
动态调度算法之一:记分牌
- 记分牌技术的目标是 资源充足时,尽可能早地执行没有数据阻塞的指令,达到每个时钟周期执行一条指令。如果某条指令被暂停,而后面的指令与流水线中正在执行的或被暂停的指令不相关,那么后面的指令可以继续流出并执行下去。记分牌电路负责记录资源的使用,并负责相关检测,控制指令的流出和执行。
- 记分牌处理:
- 流出–解析指令,检查结构相关
- 读操作数–直到不存在数据相关时,才读取操作数
- 如果存在WAR或者WAW相关,记分牌会暂停这条指令的执行,知道相关消除后才继续执行
- 记分牌执行过程:
- 流出
- 读操作数
- 前面两步完成了原来ID段的功能
- 执行
- 写结果
-
动态调度算法之一:Tomasulo算法
- 保留站:保存等待流出和正在流出指令所需要的操作数
- Tomasulo算法采用了许多记分牌中的理念
-
控制相关的动态解决技术
- 分支预测缓冲
- 动态分支预测的两个理由
- 分支目标缓冲
- 基于硬件的前瞻执行
- 分支预测缓冲
4.3计算题目
- 量化设计准则 cpu性能公式
例题视频讲解
- 对于这种题目,还是要进行一个列举出来,才能好分析
5.存储层次 这个应用题目
5.1名词解释
-
虚存:虚存是”主存-辅存“层次进一步发展的结果。它由价格较贵、速度较快、容量较小的主存储器 M 1 M_1 M1 和一个价格低廉、速度较慢、容量很大的辅助存储器 M 2 M_2 M2组成,在系统软件和辅助硬件的管理下,这一层构成了逻辑上单一的、可直接访问的大容量主存储器。 p211
-
快表:计算机常设置一个专门用于 地址转换 的高速缓冲部件,称为TLB P214
- TLB是一个专用的高速缓冲器,用于存放近期经常使用的页表项
- TLB的内容是页表部分内容的一个副本
- TLB也利用了局部性原理
-
存储器的评价指标
- 容量
- 速度
- 每位价格
-
写回法:
-
多体交叉存储器:
5.2简答题目
- 存储层次的性能参数
- 存储层次的平均每位价格
- 命中率H 一般都是 Cache-主存结构 命中率
- 平均访问时间
T
A
T_A
TA
- 注意这个平均访问时间是有两个公式的,具体使用哪个公式还要根据题目的具体意思来进行求导
- 这里以Cache-主存 为例进行讲解
- 第一个公式: T A = H T A 1 + ( 1 − H ) ( T A 1 + T A 2 + T B ) T_A=HT_{A1}+(1-H)(T_{A1}+T_{A_2}+T_B) TA=HTA1+(1−H)(TA1+TA2+TB)
- 公式进行说明 T A 1 T_{A1} TA1访问Cache的时间 T A 2 T_{A2} TA2访问主存的时间, T B T_B TB将信息从主存传到Cache的时间
- 第二个公式: T A = T A 1 + F T M T_A=T_{A1}+FT_M TA=TA1+FTM 就是对第一个公式进行了一个化简展开 ,这里的 T M = T A 2 + T B T_M=T_{A2}+T_B TM=TA2+TB 表示失效开销,额外所需的时间 也确实如此,无论是否命中,Cache的访问是必须的,所以 T A 1 T_{A1} TA1的时间并不算上失效开销,访问主存的时间以及将数据从主存传送到Cache的时间才是失效开销
- 两种存储层次的关系
- Cache-主存层次,为了弥补主存速度的不足
- 主存-辅存层次,为了弥补主存容量的不足
- 补充说明,Cache存储的是主存的一个副本,由主存决定Cache的容量
-
映像规则
- 全相联映象规则
- 直接相联影响规则
- 组相联映像规则
-
写策略 P170
- 如果要被写的块不在Cache中(写失效),则有两种方案,决定是否将相应的块调入Cache
- 按写分配法:先把所写单元所在的块调入Cache,然后再进行更新。这与读失效类似。这种方法也称为写时取 (被写的块不在Cache中,那么先调入进Cache,再进行更新)
- 不按写分配法:直接写入下一级存储器而不将对应的块调入Cache。这种方法也称为绕写 (不在Cache中的话,那就直接写入下一级存储器,而不将对应的块调入Cache)
- 当待写的块已经再Cache中(写命中或写失效时按写分配),有两种策略维护一致性
- 写直达法:不仅把信息写入Cache中相应的块,而且也写入下一级·存储器·中相应的块 (代写的块在Cache中,不仅把信息写入Cache相应的块,而且也写入下一级存储器·中相应的块,双写法)
- 写回法:只把信息写入Cache中相应的块。该块只有在被替换时,才被写回下一级存储器中 (代写的块在Cache中,那么只把信息写入Cache中相应的块。该块只有在被替换的时候,才被写回下一级存储器中)
- 如果要被写的块不在Cache中(写失效),则有两种方案,决定是否将相应的块调入Cache
-
典型的程序的Store和Load指令所占的比例分别时9%和26%,感觉这里是一个判断题目,
-
Cache性能分析
- 平均访问时间
-和之前的的两个公式 进行一个结合 - CPU时间
- 平均访问时间
-
改进Cache的性能
- 降低失效率
- 减少失效开销
- 较少Cache命中时间
**一共介绍17种Cache优化技术,其中6种用于降低失效率,5种用于减少失效开销,6种用于减少命中时间
-
存储器组织技术 P204
- 提高存储器宽度(并增设一个多路选择器)
- 多体交叉
- 独立存储体
5.3计算题目
- 地址格式例题1
-
直接映射就是一对一的关系,块长为4也就是 2 2 2^2 22,也就是说块内地址为2,Cache容量为4096,也就是是 2 12 2^{12} 212,那么就可以计算出 块数= 2 12 2 2 = 2 10 \frac{2^{12}}{2^2}=2^{10} 22212=210,直接映射可以看成一个块一个组,所以有 2 10 2^{10} 210组,所以组内地址,就是10,这种就可以与下面的组相联进行联系,==主存子块标记就为 2 19 / 2 10 / 2 2 = 2 7 2^{19}/2^{10}/2^2=2^7 219/210/22=27,所以为7
-
全相联映射 最简单了,考虑块内地址,之后就是主存容量/2^2 也就是 2 19 / 2 2 = 2 17 2^{19}/2^2=2^{17} 219/22=217
-
最后一个二路相联,有了直接相联组的思想,二路相连就非常简单了,==因为是二路,每个组里面包含两个块,所以一共只有 2 10 / 2 = 2 9 2^{10}/2=2^9 210/2=29个组,所以组内地址就是9,主存地址标记就是8
-
-
地址格式例题2
- 第一小问,根据题意可以得到,块长=
2
8
2^8
28,所以块内地址为8,组数=
2
3
2^3
23,所以组内地址为3,主存标记为
2
12
∗
2
8
/
2
8
/
2
3
=
9
2^{12}*2^8/2^8/2^3=9
212∗28/28/23=9
- 第二小问,有一个需要进行注意的点就是,(访问Cache命中的话,是不会访问主存的,只有访问Cache未命中,才会访问主存),所以说,这个共访问Cache2000次,是总的访问次数(其中1950是访问Cache命中,50是访问Cache未命中)
- 还要补充几个公式
- Cache-主存系统的命中率= 访问 C a c h e 命中的次数 总的访问次数 \frac{访问Cache命中的次数}{总的访问次数} 总的访问次数访问Cache命中的次数
- 效率= 访问 C a c h e 的时间 平均访问时间 ∗ \frac{访问Cache的时间}{平均访问时间}* 平均访问时间访问Cache的时间∗
- 平均访问时间=$访问Cache的时间
- 所以命中率 就为 1950/2000=0.975
- 所以平均访问时间就为 0.975*50+(1-0.975)*250=55ns
- 所以效率为
- 第一小问,根据题意可以得到,块长=
2
8
2^8
28,所以块内地址为8,组数=
2
3
2^3
23,所以组内地址为3,主存标记为
2
12
∗
2
8
/
2
8
/
2
3
=
9
2^{12}*2^8/2^8/2^3=9
212∗28/28/23=9
-
地址格式例题3
- 这里可能稍微要转一下,就是Cache块大小应该和主块大小是一致的,只要能想起这个条件,那么这个题目就非常简单了,而且这个题目的单位也要进行一个注意方面的东西,要转换成B来进行求解
- 主存容量为 2 24 2^{24} 224,主存块个数为 2 11 2^{11} 211 ,那么主存块长==Cache块长= 2 13 2^{13} 213,所以块内地址为13
- 有多少个子块,直接进行相除就可以了, 2 17 / 2 13 = 2 4 2^{17}/2^{13}=2^4 217/213=24,所以有2^4=16个子块
- 询问子块地址有多少为,就看有多少组数就可以了,因为是直接相联,块数==组数=16= 2 4 2^4 24所以子块地址 是4,主存地址是 2 24 / 2 13 / 2 4 = 2 7 2^{24}/2^{13}/2^{4}=2^7 224/213/24=27 所以说主存地址是7
- 所以该主存的地址格式是
- 若按照全相联映射方式,那么就非常简单,就是 11 13
- 量化设计原则与Cache结合
6.输入输出系统
6.1名词解释
-
磁盘访问时间 p232
-
通道:为进一步降低CPU处理I/O操作的负担,可以设置专门的处理机,接管所有的I/O操作,这就是通道
- 字节多路通道:简单的共享通道,为多台低速或中速的外围设备服务。采用分时方式工作。
- ** 选择**通道:为高速外围设备(如磁盘存储器等)服务。在传送数据期间,只能为一台高速外围设备服务,在不同的时间内可以选择不同的设备。
- 数组多路通道:为高速设备服务。各台高速设备重叠操作。
6.2简答题
-
衡量I/O系统性能的标准包括:
- I/O系统的连接特性。哪些I/O设备可以和计算机系统相连。
- I/O系统的容量.I/O系统可以容纳多少I/O设备
- 响应时间和吞吐率。I/O系统的吞吐率有时也称为I/O带宽,而相应时间有时也称为相应延迟
-
I/O设备与CPU/存储器的连接–总线 p261