当前位置:   article > 正文

计算机系统结构_某计算机系统采用浮点运算部件后,使浮点运算速度提高到原来的20倍而系统运行某一

某计算机系统采用浮点运算部件后,使浮点运算速度提高到原来的20倍而系统运行某一

计算机系统结构

第一章:计算机系统结构的基本概念

1.2 计算机系统结构的概念

1.2.1 计算机系统的层次结构

  1. 计算机系统=硬件/固件+软件
  2. 计算机语言从低级向高级发展
  3. 从计算机语言的角度,把计算机系统按功能划分成
    多级层次结构

虚拟机:由软件实现的机器

语言实现的两种基本技术:

  • 翻译:先把N+1级程序全部转换成N级程序后,再去执行新产生的N级程序,在执行过程中N+1级程序不再被访问。
  • 解释:每当一条N+1级指令被译码后,就直接去执行一串等效的N级指令,然后再去取下一条N+1级的指令,依此重复进行。

解释执行比编译后再执行所花的时间多,但占用的存储空间较少。

1.2.2 计算机系统结构的定义

  1. 计算机系统结构的经典定义

    程序员所看到的计算机属性,即概念性结构与功能特性。

  2. 按照计算机系统的多级层次结构,不同级程序员所看到的计算机具有不同的属性。

  3. 透明性
    在计算机技术中,把这种本来存在的事物或属性,但从某种角度看又好像不存在的概念称为透明性。

  4. Amdahl提出的系统结构

    传统机器语言级程序员所看到的计算机属性。

  5. 广义的系统结构定义:指令集结构、组成、硬件
    (计算机设计的3个方面)

计算机系统结构概念的实质:

确定计算机系统中软、硬件的界面,界面之上是软件实
现的功能,界面之下是硬件和固件实现的功能。

1.2.3 计算机组成和计算机实现

  1. 计算机系统结构:计算机系统的软、硬件的界面
    即机器语言程序员所看到的传统机器级所具有的
    属性。

  2. 计算机组成:计算机系统结构的逻辑实现

    包含物理机器级中的数据流和控制流的组成以及逻辑设计等。
    着眼于:物理机器级内各事件的排序方式与控制方式、各部件的功能以及各部件之间的联系

  3. 计算机实现:计算机组成的物理实现

    包括处理机、主存等部件的物理结构,器件的集
    成度和速度,模块、插件、底板的划分与连接,
    信号传输,电源、冷却及整机装配技术等。
    着眼于:器件技术(起主导作用)、微组装技术。

  4. 系列机

    同一厂家生产的具有相同系统结构、但具有
    不同组成和实现的一系列不同型号的计算机。

一种体系结构可以有多种组成。

一种组成可以有多种物理实现。

1.2.4 计算机系统结构的分类

常见的计算机系统结构分类法有两种:Flynn分类法、冯氏分类法

  1. 冯氏分类法
    • 用系统的最大并行度对计算机进行分类。
    • 最大并行度:计算机系统在单位时间内能够处理
      的最大的二进制位数。
  2. Flynn分类法
    • 按照指令流和数据流的多倍性进行分类。
    • 指令流:计算机执行的指令序列。
    • 数据流:由指令流调用的数据序列。
    • 多倍性:在系统受限的部件上,同时处于同一执
      行阶段的指令或数据的最大数目。

1.3 定量分析技术

4个定量原理:

  1. 以经常性事件为重点

    • 对经常发生的情况采用优化方法的原则进行选
      择,以得到更多的总体上的改进。
    • 优化是指分配更多的资源、达到更高的性能或
      者分配更多的电能等。
  2. Amdahl定律

    加快某部件执行速度所能获得的系统性能加速
    比,受限于该部件的执行时间占系统中总执行时间
    的百分比。

    系统性能加速比:
    在这里插入图片描述

    • 加速比依赖于两个因素

      可改进比例:在改进前的系统中,可改进部分的执行时间在总的执行时间中所占的比例。
      它总是小于等于1

      例如:一个需运行60秒的程序中有20秒的运算可以加速, 那么这个比例就是20/60。

      部件加速比:可改进部分改进以后性能提高的倍数。它是改进前所需的执行时间与改进后执行时间的比。
      一般情况下部件加速比是大于1的。

      例如:若系统改进后,可改进部分的执行时间是2秒,
      而改进前其执行时间为5秒,则部件加速比为5/2。

      改进后程序的总执行时间

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DW6MWGnJ-1639486688323)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211214200741851.png)]

      系统加速比为改进前与改进后总执行时间之比

在这里插入图片描述

  • 例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-可改进比例)

第二章 计算机指令集结构

2.1 指令集结构的分类

  1. 区别不同指令集结构的主要因素

    CPU中用来存储操作数的存储单元的类型

  2. CPU中用来存储操作数的存储单元的主要类型

    • 堆栈
    • 累加器
    • 通用寄存器组
  3. 将指令集结构分为三种类型

    • 堆栈结构
    • 累加器结构
    • 通用寄存器结构
      根据操作数的来源不同,又可进一步分为:
      • 寄存器-存储器结构(RM结构)
        (操作数可以来自存储器 )
      • 寄存器-寄存器结构(RR结构)
        (所有操作数都是来自通用寄存器组)
        也称为load-store结构,这个名称强调:只有load指令和store指令能够访问存储器。

2.2 寻址方式

2.3 指令集结构的功能设计

  1. 指令集结构的功能设计

    • 确定软、硬件功能分配,即确定哪些基本功能应该由硬件实现,哪些功能由软件实现比较合适。
  2. 在确定哪些基本功能用硬件来实现时,主要考虑3个因素:速度、成本、灵活性

    • 硬件实现的特点
      速度快、成本高、灵活性差
    • 软件实现的特点
      速度慢、价格便宜、灵活性好
  3. 对指令集的基本要求
    完整性、规整性、高效率、兼容性

    • 完整性:在一个有限可用的存储空间内,对于任何可解的问题,编制计算程序时,指令集所提供的指令足够用。
    • 规整性:主要包括对称性和均匀性。
    • 高效率:指指令的执行速度快、使用频度高。
  4. 在设计指令集结构时,有两种截然不同的设计策略。

    (产生了两类不同的计算机系统 )

    • CISC(复杂指令集计算机)

      增强指令功能,把越来越多的功能交由硬件来实现,并且指令的数量也是越来越多。

    • RISC(精简指令集计算机)

      尽可能地把指令集简化,不仅指令的条数少,而且指令的功能也比较简单。

2.4 操作数的类型和大小
2.5 指令格式的设计
2.6 MIPS指令集结构

第三章:流水线技术

3.1 流水线的基本概念

  1. 流水线技术
    • 把一个重复的过程分解为若干个子过程,每个子过程由专门的功能部件来实现。
    • 把多个处理过程在时间上错开,依次通过各功能段,这样,每个子过程就可以与其他的子过程并行进行。
  2. 流水线中的每个子过程及其功能部件称为流水线的级或段,段与段相互连接形成流水线。流水线的段数称为流水线的深度
  3. 流水技术的特点
    • 流水线把一个处理过程分解为若干个子过程(段),每个子过程由一个专门的功能部件来实现。
    • 流水线中各段的时间应尽可能相等,否则将引起流水线堵塞、断流。
    • 时间长的段将成为流水线的瓶颈

3.2 流水线的性能指标

3.2.1 吞吐率

吞吐率:在单位时间内流水线所完成的任务数量或输出结果的数量。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EhCMmkYh-1639486688329)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211214204703594.png)]

n:任务数
Tk:处理完成n个任务所用的时间

  1. 各段时间均相等的流水线

    • 各段时间均相等的流水线时空图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-upjmE6Zn-1639486688330)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211214204746493.png)]

    • 流水线完成n个连续任务所需要的总时间为
      (假设一条k段线性流水线)
          Tk=kΔt+(n-1)Δt=(k+n-1)Δt
      流水线的实际吞吐率

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Al09KLTc-1639486688331)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211214204937315.png)]

    • 最大吞吐率[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ECaUPObb-1639486688332)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211214204948280.png)]

    • 最大吞吐率与实际吞吐率的关系 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8VMcszUI-1639486688333)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211214205003079.png)]

      • 流水线的实际吞吐率小于最大吞吐率,它除了与每个段的时间有关外,还与流水线的段数k以及输入到流水线中的任务数n等有关。
      • 只有当n>>k时,才有TP≈TPmax。
  2. 各段时间不完全相等的流水线

    • 各段时间不等的流水线及其时空图

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jhIfvsVx-1639486688334)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211214205258139.png)]

      • 一条4段的流水线

      • S1,S3,S4各段的时间:Δt

      • S2的时间:3Δt (瓶颈段)

        流水线中这种时间最长的段称为流水线的瓶颈段

    • 各段时间不等的流水线的实际吞吐率
      ( Δti为第i段的时间,共有k个段 )

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cK7XMNaQ-1639486688334)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211214205331423.png)]

    • 流水线的最大吞吐率为

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s2Lp7xiF-1639486688335)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211214205343108.png)]

第五章 存储系统

5.1 存储系统的基本知识

5.1.1 存储系统的层次结构
  1. 计算机系统结构设计中关键的问题之一 :
    如何以合理的价格,设计容量和速度都满足计
    算机系统要求的存储器系统?

  2. 人们对这三个指标的要求
    容量大、速度快、价格低

  3. 三个要求是相互矛盾的

    • 速度越快,每位价格就越高;
    • 容量越大,每位价格就越低;
    • 容量越大,速度越慢。
  4. 解决方法:采用多种存储器技术,构成多级存储层次结构。

    • 程序访问的局部性原理:对于绝大多数程序来说,程序所访问的指令和数据在地址上不是均匀分布的,而是相对簇聚的。 (局部性原理)
    • 程序访问的局部性包含两个方面
      • 时间局部性:程序马上将要用到的信息很可能就是现在正在使用的信息。
      • 空间局部性:程序马上将要用到的信息很可能与现在正在使用的信息在存储空间上是相邻的。
  5. 存储系统的多级层次结构

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-809DmZKm-1639745684883)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211217141024310.png)]

    • 假设第i个存储器Mi的访问时间为Ti,容量为Si,平均每位价格为Ci,则

      • 访问时间: T1 < T2 < … < Tn

      • 容量: S1 < S2 < … < Sn

      • 平均每位价格:C1 > C2 > … > Cn

        整个存储系统要达到的目标:从CPU来看,该存储系统的速度接近于M1的,而容量和每位价格都接近于Mn的。

        • 存储器越靠近CPU,则CPU对它的访问频度越高,而且最好大多数的访问都能在M1完成。
5.1.2 存储层次的性能参数

下面仅考虑由M1和M2构成的两级存储层次:
M1的参数:S1,T1,C1
M2的参数:S2,T2,C2
在这里插入图片描述

  1. 存储容量S

    • 一般来说,整个存储系统的容量即是第二级存储器M2的容量,即S=S2。
  2. 每位价格C

在这里插入图片描述

当S1<<S2时,C≈C2。

  1. 命中率H 和不命中率F

    • 命中率:CPU访问存储系统时,在M1中找到所需信息的概率。
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2U8IuMgn-1639745684887)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211217141616507.png)]

      N1 ── 访问M1的次数
      N2 ── 访问M2的次数

    • 不命中率 :F=1-H

  2. 平均访问时间TA(命中的概率为H ,不命中的概率 1 - H)
    TA = HT1+(1-H)(T1+Tm)
    = T1+(1-H)Tm
    或 TA = T1+F Tm
    分两种情况来考虑CPU的一次访存:

    • 当命中时,访问时间即为T1(命中时间
    • 当不命中时,情况比较复杂。
      不命中时的访问时间为:T2+TB+T1=T1+TM
      TM =T2+TB
      • 不命中开销TM:从向M2发出访问请求到把整个数据块调入M1中所需的时间。
      • 传送一个信息块所需的时间为TB
  3. 当S1<<S2时,C≈C2。

5.1.3 三级存储系统
  • 三级存储系统

    • Cache(高速缓冲存储器)
    • 主存储器
    • 磁盘存储器(辅存)
  • 可以看成是由“Cache—主存”层次和“主存—辅存”层次构成的系统。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G2sjFYxP-1639745684888)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211217142524643.png)]

    从主存的角度来看

    • “Cache-主存”层次:弥补主存速度的不足
    • “主存-辅存”层次: 弥补主存容量的不足
  1. “Cache—主存”层次

    主存与CPU的速度差距

    “Cache - 主存”层次

  2. “主存-辅存”层次

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-30DzLXFh-1639745684890)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211217143410313.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7XRzMHs7-1639745684893)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211217143426021.png)]

5.1.4 存储层次的四个问题
  1. 当把一个块调入高一层(靠近CPU)存储器时,可以放在哪些位置上? (映像规则)
  2. 当所要访问的块在高一层存储器中时,如何找到该块?(查找算法)
  3. 当发生不命中时,应替换哪一块?(替换算法)
  4. 当进行写访问时,应进行哪些操作?(写策略)

5.2 Cache基本知识

5.2.1 基本结构和原理
  1. 存储空间分割与地址计算

  2. Cache和主存分块

    • Cache是按进行管理的。Cache和主存均被分割成大小相同的块。信息以块为单位调入Cache

      • **主存块地址(块号)**用于查找该块在Cache中的位置
      • 块内位移用于确定所访问的数据在该块中的位置

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A9qfuEd4-1639745684894)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211217144223718.png)]

  3. Cache的基本工作原理示意图

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VsYYJZNq-1639745684895)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211217144439247.png)]

5.2.2 映像规则
  1. 全相联映像

    • 全相联:主存中的任一块可以被放置到Cache中的**任意一个**位置。

    • 对比:阅览室位置 ── 随便坐

    • 特点:空间利用率最高,冲突概率最低,实现最复杂。

      图中的红线是“或者”的意思。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AK0WqEJ9-1639745684896)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211217144643255.png)]

  2. 直接映像

    • 直接映像:主存中的每一块只能被放置到Cache中**唯一**的一个位置。
          (循环分配)

    • 对比:阅览室位置 ── 只有一个位置可以坐

    • 特点:空间利用率最低,冲突概率最高,
          实现最简单。
      对于主存的第i 块,若它映像到Cache的第j 块,则:
           j=i mod (M ) (M为Cache的块数)

    • 设M=2^m,则当表示为二进制数时,j实际上就是i的低m位:

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-boN3Z5Ac-1639745684897)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211217145230565.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rAZR2LR1-1639745684898)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211217145247458.png)]

  3. 组相联映像

    思想:Cache会被分成若干组,每组由若干块构成。

    主存中每一块是放到Cache中唯一的一个组中【直接相联】,在组内任意放【全相联】。

    • 组相联:主存中的每一块可以被放置到Cache中唯一的一个组中的任何一个位置。

    • 组相联是直接映像和全相联的一种折中

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ARsqyItr-1639745684899)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211217150837783.png)]

    • 组的选择常采用位选择算法
      若主存第i 块映像到第k 组,则:
      k=i mod(G) (G为Cache的组数)

    • 设G=2g,则当表示为二进制数时,k 实际上就是i 的低 g 位: 链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x8x38B41-1639745684900)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211217150849948.png)]

    • 低g位以及直接映像中的低m位通常称为索引

    • n 路组相联:每组中有n个块(n=M/G )。
          n 称为相联度
        相联度越高,Cache空间的利用率就越高,块冲突
      概率就越低,不命中率也就越低。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2k1RE27o-1639745684902)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211217151213339.png)]

      该图表示,全相联:一组里有M个块

      直接相联:M组里每组有1块

5.2.3 查找算法
  • 当CPU访问Cache时,如何确定Cache中是否有所要访问的块?
  • 若有的话,如何确定其位置?
5.2.5 替换算法
  1. 替换算法

    • 所要解决的问题:当新调入一块,而Cache又已被占满时,替换哪一块?

      • 直接映像Cache中的替换很简单
        因为只有一个块,别无选择。
      • 在组相联和全相联Cache中,则有多个块供选择。
    • 主要的替换算法有三种

      1. 随机法

        ​ 优点:实现简单

      2. 先进先出法FIFO

      3. 最近最少使用法LRU(最近最少使用法)

        • 选择近期最少被访问的块作为被替换的块。
              (实现比较困难)
        • 实际上:选择最久没有被访问过的块作为被替换的块。
        • 优点:命中率较高
      4. LRU和随机法分别因其不命中率低和实现简单而被广泛采用。

        • 模拟数据表明,对于容量很大的Cache,LRU和随机法的命中率差别不大。
5.2.6 写策略
  1. “写”在所有访存操作中所占的比例

    • 统计结果表明,对于一组给定的程序:
      • load指令:26% 【“读”】
      • store指令:9% 【“写”】
    • “写”在所有访存操作中所占的比例:
      9%/(100%+26%+9%)≈7%
    • “写”在访问Cache操作中所占的比例:
      9%/(26%+9%)≈25%
  2. “写”操作必须在确认是命中后才可进行

  3. “写”访问有可能导致Cache和主存内容的不一致

  4. 两种写策略
    写策略是区分不同Cache设计方案的一个重要标志。

    • 写直达法(也称为存直达法)
      执行“写”操作时,不仅写入Cache,而且也写入下一级存储器。
    • 写回法(也称为拷回法)
      执行“写”操作时,只写入Cache。仅当Cache中相应的块被替换时,才写回主存。 (设置“修改位”)
  5. 两种写策略的比较

    • 写回法的优点:速度快,所使用的存储器带宽较低。
    • 写直达法的优点:易于实现,一致性好。
  6. 采用写直达法时,若在进行“写”操作的过程中CPU必须等待,直到“写”操作结束,则称CPU写停顿

    • 减少写停顿的一种常用的优化技术:

      采用写缓冲器

5.2.7 Cache的性能分析
  1. 不命中率

    • 与硬件速度无关
    • 容易产生一些误导
  2. 平均访存时间
    平均访存时间 = 命中时间+不命中率×不命中开销

  3. 程序执行时间
    CPU时间=(CPU执行周期数+存储器停顿周期数)× 时钟周期时间
    其中:

    • 存储器停顿时钟周期数=“读”的次数×读不命中率×读不命中开销+“写”的次数×写不命中率×写不命中开销
    • 存储器停顿时钟周期数=访存次数×不命中率×不命中开销
    • CPU时间=(CPU执行周期数+访存次数×不命中率×不命中开销)× 时钟周期时间
      - [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AUdtqiXh-1639745684903)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211217160902945.png)]

    例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倍。

  4. 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

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z6U7BkYh-1639745684904)(C:\Users\13007\AppData\Roaming\Typora\typora-user-images\image-20211217162606878.png)]

      直接映像Cache的平均性能好一些。

5.2.8 改进Cache的性能
  1. 平均访存时间=命中时间+不命中率×不命中开销
  2. 可以从三个方面改进Cache的性能:
    • 降低不命中率
    • 减少不命中开销
    • 减少Cache命中时间

5.3 降低Cache不命中率

5.3.1 三种类型的不命中
  1. 三种类型的不命中(3C)
    • 强制性不命中(Compulsory miss)
      • 当第一次访问一个块时,该块不在Cache中,需从下一级存储器中调入Cache,这就是强制性不命中。 (冷启动不命中,首次访问不命中)
    • 容量不命中(Capacity miss )
      • 如果程序执行时所需的块不能全部调入Cache中,则当某些块被替换后,若又重新被访问,就会发生不命中。这种不命中称为容量不命中。
    • 冲突不命中(Conflict miss)
      • 在组相联或直接映像Cache中,若太多的块映像到同一组(块)中,则会出现该组中某个块被别的块替换(即使别的组或块有空闲位置),然后又被重新访问的情况。这就是发生了冲突不命中。
        (碰撞不命中,干扰不命中)
  2. 三种不命中所占的比例
    图示I(绝对值)
    图示Ⅱ(相对值)
    • 可以看出
      • 相联度越高,冲突不命中就越少;
      • 强制性不命中和容量不命中不受相联度的影响;
      • 强制性不命中不受Cache容量的影响,但容量不命中却随着容量的增加而减少。
    • 减少三种不命中的方法
      • 强制性不命中:增加块大小,预取
            (本身很少)
      • 容量不命中:增加容量
            (抖动现象)
      • 冲突不命中:提高相联度
            (理想情况:全相联)
    • 许多降低不命中率的方法会增加命中时间或不命中开销

5.4 减少Cache不命中开销

5.4.1 采用两级Cache
  1. 应把Cache做得更快?还是更大?
    答案:二者兼顾,再增加一级Cache

    • 第一级Cache(L1)小而快
    • 第二级Cache(L2)容量大
  2. 性能分析
    平均访存时间 = 命中时间L1+不命中率L1×不命中开销L1
    不命中开销L1 = 命中时间L2+不命中率L2×不命中开销L2

    平均访存时间 = 命中时间L1+不命中率L1×
    (命中时间L2+不命中率L2×不命中开销L2)

  3. 局部不命中率与全局不命中率

    • 局部不命中率=该级Cache的不命中次数/到达该
      级Cache的访问次数
      例如:上述式子中的不命中率L2
    • 全局不命中率=该级Cache的不命中次数/CPU发
      出的访存的总次数
    • 全局不命中率L2=不命中率L1×不命中率L2
      评价第二级Cache时,应使用全局不命中率这个指标。它指出了在CPU发出的访存中,究竟有多大比例是穿过各级Cache,最终到达存储器的。
  4. 采用两级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个时钟周期

  5. 对于第二级Cache,我们有以下结论:

    • 在第二级Cache比第一级 Cache大得多的情况下,两级Cache的全局不命中率和容量与第二级Cache相同的单级Cache的不命中率非常接近。
    • 局部不命中率不是衡量第二级Cache的一个好指标,因此,在评价第二级Cache时,应用全局不命中率这个指标。
  6. 第二级Cache不会影响CPU的时钟频率,因此其设计有更大的考虑空间。
    两个问题:

  7. 第二级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可采用较大的块
        如 64、128、256字节
      • 为减少平均访存时间,可以让容量较小的第一级Cache采用较小的块,而让容量较大的第二级Cache采用较大的块。
      • 多级包容性
        需要考虑的另一个问题:
        第一级Cache中的数据是否总是同时存在于第
        二级Cache中。
5.4.2 让读不命中优先于写
  1. Cache中的写缓冲器导致对存储器访问的复杂化
    在读不命中时,所读单元的最新值有可能还在写缓冲器中,尚未写入主存。
  2. 解决问题的方法(读不命中的处理)
    推迟对读不命中的处理
    (缺点:读不命中的开销增加)
    检查写缓冲器中的内容
  3. 在写回法Cache中,也可采用写缓冲器。
5.4.4 请求字处理技术
  1. 请求字
    从下一级存储器调入Cache的块中,只有一个字
    是立即需要的。这个字称为请求字
  2. 应尽早把请求字发送给CPU
    • 尽早重启动:调块时,从块的起始位置开始读起。一旦请求字到达,就立即发送给CPU,让CPU继续执行。
    • 请求字优先:调块时,从请求字所在的位置读起。这样,第一个读出的字便是请求字。将之立即发送给CPU。
5.4.5 非阻塞Cache技术
  1. 非阻塞Cache:Cache不命中时仍允许CPU进行其他的命中访问。即允许“不命中下命中”。
  2. 进一步提高性能:
    “多重不命中下命中”
    “不命中下不命中”
    (存储器必须能够处理多个不命中)
  3. 可以同时处理的不命中次数越多,所能带来的性能上的提高就越大。(不命中次数越多越好?)

5.5 减少命中时间

​ 命中时间直接影响到处理器的时钟频率。在当今的许
多计算机中,往往是Cache的访问时间限制了处理器的时
钟频率。

5.5.1 容量小、结构简单的Cache
  1. 硬件越简单,速度就越快;
  2. 应使Cache足够小,以便可以与CPU一起放在同一块芯片上。

5.6 并行主存系统

5.7 虚拟存储器

5.7.1 虚拟存储器的基本原理
  1. 虚拟存储器是“主存- 辅存”层次进一步发展的结果
  2. 虚拟存储器可以分为两类页式段式
    • 页式虚拟存储器把空间划分为大小相同的块。 (页面)
    • 段式虚拟存储器则把空间划分为可变长的块。 (段)
    • 页面是对空间的机械划分,而段则往往是按程序的逻辑意义进行划分
5.7.2 快速地址转换技术
  1. 地址变换缓冲器TLB
    • TLB是一个专用的高速缓冲器,用于存放近期经常使用的页表项;
    • TLB中的内容是页表部分内容的一个副本;
    • TLB也利用了局部性原理。
  2. TLB中的项由两部分构成:标识和数据
    • 标识中存放的是虚地址的一部分。
    • 数据部分中存放的则是物理页帧号、有效位、存储保护信息、使用位、修改位等。

5.8 实例:AMD Opteron的存储器层次结构

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/281220
推荐阅读
相关标签
  

闽ICP备14008679号