赞
踩
虚拟机:由软件实现的机器
语言实现的两种基本技术:
解释执行比编译后再执行所花的时间多,但占用的存储空间较少。
计算机系统结构的经典定义
程序员所看到的计算机属性,即概念性结构与功能特性。
按照计算机系统的多级层次结构,不同级程序员所看到的计算机具有不同的属性。
透明性
在计算机技术中,把这种本来存在的事物或属性,但从某种角度看又好像不存在的概念称为透明性。
Amdahl提出的系统结构
传统机器语言级程序员所看到的计算机属性。
广义的系统结构定义:指令集结构、组成、硬件
(计算机设计的3个方面)
计算机系统结构概念的实质:
确定计算机系统中软、硬件的界面,界面之上是软件实
现的功能,界面之下是硬件和固件实现的功能。
计算机系统结构:计算机系统的软、硬件的界面
即机器语言程序员所看到的传统机器级所具有的
属性。
计算机组成:计算机系统结构的逻辑实现
包含物理机器级中的数据流和控制流的组成以及逻辑设计等。
着眼于:物理机器级内各事件的排序方式与控制方式、各部件的功能以及各部件之间的联系
计算机实现:计算机组成的物理实现
包括处理机、主存等部件的物理结构,器件的集
成度和速度,模块、插件、底板的划分与连接,
信号传输,电源、冷却及整机装配技术等。
着眼于:器件技术(起主导作用)、微组装技术。
系列机
由同一厂家生产的具有相同系统结构、但具有
不同组成和实现的一系列不同型号的计算机。
一种体系结构可以有多种组成。
一种组成可以有多种物理实现。
常见的计算机系统结构分类法有两种:Flynn分类法、冯氏分类法
4个定量原理:
以经常性事件为重点
Amdahl定律
加快某部件执行速度所能获得的系统性能加速
比,受限于该部件的执行时间占系统中总执行时间
的百分比。
系统性能加速比:
加速比依赖于两个因素
可改进比例:在改进前的系统中,可改进部分的执行时间在总的执行时间中所占的比例。
它总是小于等于1。
例如:一个需运行60秒的程序中有20秒的运算可以加速, 那么这个比例就是20/60。
部件加速比:可改进部分改进以后性能提高的倍数。它是改进前所需的执行时间与改进后执行时间的比。
一般情况下部件加速比是大于1的。
例如:若系统改进后,可改进部分的执行时间是2秒,
而改进前其执行时间为5秒,则部件加速比为5/2。
改进后程序的总执行时间
系统加速比为改进前与改进后总执行时间之比
例1.1 将计算机系统中某一功能的处理速度提高到原来的20倍,但该功能的处理时间仅占整个系统运行时间的40%,则采用此提高性能的方法后,能使整个系统的性能提高多少?
解 由题可知,可改进比例 = 40% = 0.4,
部件加速比 = 20
根据Amdahl定律可知:
采用此提高性能的方法后,能使整个系统的性能提高到原来的1.613倍。
例1.2 某计算机系统采用浮点运算部件后,使浮点运算速度提高到原来的20倍,而系统运行某一程序的整体性能提高到原来的5倍,试计算该程序中浮点操作所占的比例。
解 由题可知,部件加速比 = 20,系统加速比 = 5
根据Amdahl定律可知
由此可得:可改进比例 = 84.2%
即程序中浮点操作所占的比例为84.2%。
Amdahl定律:一种性能改进的递减规则
重要推论:如果只针对整个任务的一部分进行改
进和优化,那么所获得的加速比不超过
1/(1-可改进比例)
区别不同指令集结构的主要因素
CPU中用来存储操作数的存储单元的类型
CPU中用来存储操作数的存储单元的主要类型
将指令集结构分为三种类型
指令集结构的功能设计
在确定哪些基本功能用硬件来实现时,主要考虑3个因素:速度、成本、灵活性
对指令集的基本要求
完整性、规整性、高效率、兼容性
在设计指令集结构时,有两种截然不同的设计策略。
(产生了两类不同的计算机系统 )
CISC(复杂指令集计算机)
增强指令功能,把越来越多的功能交由硬件来实现,并且指令的数量也是越来越多。
RISC(精简指令集计算机)
尽可能地把指令集简化,不仅指令的条数少,而且指令的功能也比较简单。
2.4 操作数的类型和大小
2.5 指令格式的设计
2.6 MIPS指令集结构
吞吐率:在单位时间内流水线所完成的任务数量或输出结果的数量。
n:任务数
Tk:处理完成n个任务所用的时间
各段时间均相等的流水线
各段时间均相等的流水线时空图
流水线完成n个连续任务所需要的总时间为
(假设一条k段线性流水线)
Tk=kΔt+(n-1)Δt=(k+n-1)Δt
流水线的实际吞吐率
最大吞吐率
最大吞吐率与实际吞吐率的关系
各段时间不完全相等的流水线
各段时间不等的流水线及其时空图
一条4段的流水线
S1,S3,S4各段的时间:Δt
S2的时间:3Δt (瓶颈段)
流水线中这种时间最长的段称为流水线的瓶颈段。
各段时间不等的流水线的实际吞吐率:
( Δti为第i段的时间,共有k个段 )
流水线的最大吞吐率为
计算机系统结构设计中关键的问题之一 :
如何以合理的价格,设计容量和速度都满足计
算机系统要求的存储器系统?
人们对这三个指标的要求
容量大、速度快、价格低
三个要求是相互矛盾的
解决方法:采用多种存储器技术,构成多级存储层次结构。
存储系统的多级层次结构
假设第i个存储器Mi的访问时间为Ti,容量为Si,平均每位价格为Ci,则
访问时间: T1 < T2 < … < Tn
容量: S1 < S2 < … < Sn
平均每位价格:C1 > C2 > … > Cn
整个存储系统要达到的目标:从CPU来看,该存储系统的速度接近于M1的,而容量和每位价格都接近于Mn的。
下面仅考虑由M1和M2构成的两级存储层次:
M1的参数:S1,T1,C1
M2的参数:S2,T2,C2
存储容量S
每位价格C
当S1<<S2时,C≈C2。
命中率H 和不命中率F
命中率:CPU访问存储系统时,在M1中找到所需信息的概率。
N1 ── 访问M1的次数
N2 ── 访问M2的次数
不命中率 :F=1-H
平均访问时间TA(命中的概率为H ,不命中的概率 1 - H)
TA = HT1+(1-H)(T1+Tm)
= T1+(1-H)Tm
或 TA = T1+F Tm
分两种情况来考虑CPU的一次访存:
当S1<<S2时,C≈C2。
三级存储系统
可以看成是由“Cache—主存”层次和“主存—辅存”层次构成的系统。
从主存的角度来看
“Cache—主存”层次
主存与CPU的速度差距
“Cache - 主存”层次
“主存-辅存”层次
存储空间分割与地址计算
Cache和主存分块
Cache是按块进行管理的。Cache和主存均被分割成大小相同的块。信息以块为单位调入Cache。
Cache的基本工作原理示意图
全相联映像
全相联:主存中的任一块可以被放置到Cache中的**任意一个**位置。
对比:阅览室位置 ── 随便坐
特点:空间利用率最高,冲突概率最低,实现最复杂。
图中的红线是“或者”的意思。
直接映像
直接映像:主存中的每一块只能被放置到Cache中**唯一**的一个位置。
(循环分配)
对比:阅览室位置 ── 只有一个位置可以坐
特点:空间利用率最低,冲突概率最高,
实现最简单。
对于主存的第i 块,若它映像到Cache的第j 块,则:
j=i mod (M ) (M为Cache的块数)
设M=2^m,则当表示为二进制数时,j实际上就是i的低m位:
组相联映像
思想:Cache会被分成若干组,每组由若干块构成。
主存中每一块是放到Cache中唯一的一个组中【直接相联】,在组内任意放【全相联】。
组相联:主存中的每一块可以被放置到Cache中唯一的一个组中的任何一个位置。
组相联是直接映像和全相联的一种折中
组的选择常采用位选择算法
若主存第i 块映像到第k 组,则:
k=i mod(G) (G为Cache的组数)
设G=2g,则当表示为二进制数时,k 实际上就是i 的低 g 位:
低g位以及直接映像中的低m位通常称为索引
n 路组相联:每组中有n个块(n=M/G )。
n 称为相联度。
相联度越高,Cache空间的利用率就越高,块冲突
概率就越低,不命中率也就越低。
该图表示,全相联:一组里有M个块
直接相联:M组里每组有1块
替换算法
所要解决的问题:当新调入一块,而Cache又已被占满时,替换哪一块?
主要的替换算法有三种
随机法
优点:实现简单
先进先出法FIFO
最近最少使用法LRU(最近最少使用法)
LRU和随机法分别因其不命中率低和实现简单而被广泛采用。
“写”在所有访存操作中所占的比例
“写”操作必须在确认是命中后才可进行
“写”访问有可能导致Cache和主存内容的不一致
两种写策略
写策略是区分不同Cache设计方案的一个重要标志。
两种写策略的比较
采用写直达法时,若在进行“写”操作的过程中CPU必须等待,直到“写”操作结束,则称CPU写停顿。
减少写停顿的一种常用的优化技术:
采用写缓冲器
不命中率
平均访存时间
平均访存时间 = 命中时间+不命中率×不命中开销
程序执行时间
CPU时间=(CPU执行周期数+存储器停顿周期数)× 时钟周期时间
其中:
例5.1 用一个和Alpha AXP类似的机器作为第一个例子。假设Cache不命中开销为50个时钟周期,当不考虑存储器停顿时,所有指令的执行时间都是2.0个时钟周期,访问Cache不命中率为2%,平均每条指令访存1.33次。试分析Cache对性能的影响。
解
CPU时间有cache=IC ×(CPIexecution+每条指令的平均访存次数
×不命中率×不命中开销)× 时钟周期时间
=IC ×(2.0+1.33×2 %×50)× 时钟周期时间
=IC × 3.33× 时钟周期时间
考虑Cache的不命中后,性能为:
CPU时间有cache=IC×(2.0+1.33×2 %×50)×时钟周期时间
=IC×3.33×时钟周期时间
实际CPI :3.33
3.33/2.0 = 1.67(倍)
CPU时间也增加为原来的1.67倍。
但若不采用Cache,则:
CPI=2.0+50×1.33=68.5,即超过原来的30倍。
Cache不命中对于一个CPI较小而时钟频率较高的CPU来说,影响是双重的:
CPIexecution越低,固定周期数的Cache不命中开销的相对影响就越大。
在计算CPI时,不命中开销的单位是时钟周期数。因此,即使两台计算机的存储层次完全相同,时钟频率较高的CPU的不命中开销较大,其CPI中存储器停顿这部分也就较大。
因此Cache对于低CPI、高时钟频率的CPU来说更加重要。
例5.2 考虑两种不同组织结构的Cache:直接映像Cache和两路组相联Cache,试问它们对CPU的性能有何影响?先求平均访存时间,然后再计算CPU性能。分析时请用以下假设:【“两路”表示每Cache分组后,每组有2块】
(1)理想Cache(命中率为100%)情况下的CPI为2.0,时钟周期为2ns,平均每条指令访存1.3次。
(2)两种Cache容量均为64KB,块大小都是32字节。
(3)在组相联Cache中,由于多路选择器的存在而使CPU的时钟周期增加到原来的1.10倍。这是因为对Cache的访问总是处于关键路径上,对CPU的时钟周期有直接的影响。
(4) 这两种结构Cache的不命中开销都是70ns。(在实际应用中,应取整为整数个时钟周期)
(5) 命中时间为1个时钟周期,64KB直接映像Cache的不命中率为1.4%,相同容量的两路组相联Cache的不命中率为1.0%。
解 平均访存时间为:
平均访存时间=命中时间+不命中率×不命中开销
因此,两种结构的平均访存时间分别是:
平均访存时间1路=2.0+(0.014×70)=2.98ns
平均访存时间2路=2.0×1.10+(0.010×70)=2.90ns
两路组相联Cache的平均访存时间比较低。
CPU时间=IC×(CPIexecution+每条指令的平均访存次数×
不命中率×不命中开销)× 时钟周期时间
=IC×(CPIexecution× 时钟周期时间+每条指令的
平均访存次数×不命中率×不命中开销×时钟周期时间)
因此:
CPU时间1路 = IC×(2.0×2+(1.3×0.014×70)) = 5.27×IC
CPU时间2路 = IC×(2.0×2×1.10+(1.3×0.010×70)) = 5.31×IC
直接映像Cache的平均性能好一些。
应把Cache做得更快?还是更大?
答案:二者兼顾,再增加一级Cache
性能分析
平均访存时间 = 命中时间L1+不命中率L1×不命中开销L1
不命中开销L1 = 命中时间L2+不命中率L2×不命中开销L2
平均访存时间 = 命中时间L1+不命中率L1×
(命中时间L2+不命中率L2×不命中开销L2)
局部不命中率与全局不命中率
采用两级Cache时,每条指令的平均访存停顿时间:
每条指令的平均访存停顿时间
= 每条指令的平均不命中次数L1×命中时间L2+
每条指令的平均不命中次数L2×不命中开销L2
例5.3 考虑某一两级Cache:第一级Cache为L1,第二级Cache为L2。
(1)假设在1000次访存中,L1的不命中是40次,L2的不命中是20次。求各种局部不命中率和全局不命中率。
(2)假设L2的命中时间是10个时钟周期,L2的不命中开销是100时钟周期,L1的命中时间是1个时钟周期,平均每条指令访存1.5次,不考虑写操作的影响。问:平均访存时间是多少?每条指令的平均停顿时间是多少个时钟周期?
解 (1)
第一级Cache的不命中率(全局和局部)是40/1000,即4%;
第二级Cache的局部不命中率是20/40,即50%;
第二级Cache的全局不命中率是20/1000,即2%。
(2)平均访存时间=命中时间L1+不命中率L1×(命中时间L2+不命中率L2×不命中开销L2)
=1+4%×(10+50%×100)
=1+4%×60=3.4个时钟周期
由于平均每条指令访存1.5次,且每次访存的平均停顿时间为:
3.4-1.0=2.4
所以:
每条指令的平均停顿时间=2.4×1.5=3.6个时钟周期
对于第二级Cache,我们有以下结论:
第二级Cache不会影响CPU的时钟频率,因此其设计有更大的考虑空间。
两个问题:
第二级Cache的参数
容量
第二级Cache的容量一般比第一级的大许多。
大容量意味着第二级Cache可能实际上没有容量
不命中,只剩下一些强制性不命中和冲突不命中。
相联度
第二级Cache可采用较高的相联度或伪相联方法。
例5.4 给出有关第二级Cache的以下数据:
(1)对于直接映像,命中时间L2 = 10个时钟周期
(2)两路组相联使命中时间增加0.1个时钟周期,即为10.1个时钟周期。
(3) 对于直接映像,局部不命中率L2 = 25%
(4) 对于两路组相联,局部不命中率L2 = 20%
(5) 不命中开销L2 = 50个时钟周期
试问第二级Cache的相联度对不命中开销的影响如何?
解 对一个直接映像的第二级Cache来说,第一级Cache的不命中开销为:
不命中开销直接映像,L1 = 10+25%×50 = 22.5 个时钟周期
对于两路组相联第二级Cache来说,命中时间增加了10%(0.1)个时钟周期,故第一级Cache的不命中开销为:
不命中开销两路组相联,L1 = 10.1+20%×50 = 20.1 个时钟周期
把第二级Cache的命中时间取整,得10或11,则:
不命中开销两路组相联,L1 = 10+20%×50 = 20.0 个时钟周期
不命中开销两路组相联,L1 = 11+20%×50 = 21.0 个时钟周期
故对于第二级Cache来说,两路组相联优于直接映像。
块大小
命中时间直接影响到处理器的时钟频率。在当今的许
多计算机中,往往是Cache的访问时间限制了处理器的时
钟频率。
5.8 实例:AMD Opteron的存储器层次结构
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。