计算机体系结构 第7章 存储系统(6)

第7章 存储系统

7.6 并行主存系统

7.6.0 基本概念

并行主存系统

  • 是在一个访存周期内能并行访问多个存储字的存储器,它能有效地提高存储器的带宽。
  • 主存的性能主要用延迟带宽来衡量。

带宽

  1. 单体单字存储器

    假设存储器的访问周期为 T M T_{M} TM,字长为 W W W 位,其带宽为:

B M = W T M B_{M} = \frac{W}{T_{M}} BM=TMW

单体单字存储器

提高内存的带宽的两种存储器结构

  • 单体多字存储器
  • 多体交叉存储器

7.6.1 单体多字存储器

单体多字存储器

  • 对于一个单体m字的存储器,每个存储周期可以读出m个CPU字

最大带宽

假设存储器的访问周期为 T M T_{M} TM,字长为 W W W 位,其最大带宽为:
B M = m × W T M B_{M} = m \times \frac{W}{T_{M}} BM=m×TMW

单体多字存储器m=4

优点:

  • 实现简单

缺点:

  • 访存效率不高

访存效率不高的原因:

  1. 如果一次能读取的指令字中有分支指令,而且分支成功,那么该分支指令之后的指令就是无用的。
  2. 一次取出的m个数据不一定都是有用的。另一方面,当前执行指令所需要的多个操作数也不一定正好都存放在同一个长存储字中。由于数据存放的随机性比程序指令存放的随机性大,所以发生这种情况的概率较大。
  3. 必须凑齐了m个数之后才能一起写入存储器。如果只写个别字,就必须先把相应的长存储字读出来,放到数据寄存器中,然后在地址码的控制下修改其中的一个字,最后再把长存储字写回存储器。
  4. 当要读出的数据字和要写入的数据字处于同一个长存储字内时,读和写的操作就无法在同一个存储周期内完成。

7.6.2 多体交叉存储器

多体交叉存储器

  • 多体交叉存储器由多个单字存储体构成
  • 每个体都有自己的地址寄存存器以及地址译码和读/写驱动等电路。

编址问题

假设共有 m m m个体,每一个体有 n n n个存储单元。这 n × m n \times m n×m 个单元可以看成一个由存储单元构成的二维矩阵。但是,对于计算机使用者来说,存储器是按顺序线性编址的。如何在二维矩阵和线性地址之间建立对应关系?就是如何对多体存储器进行编址的问题。

两种编址方法

  • 高位交叉编址
  • 低位交叉编址
  • 其中只有低位交叉编址存储器才能有效地解决访问冲突问题

多体交叉存储器

7.6.2.1 高位交叉编址
  • 这种方式相当于对存储单元矩阵按列优先的方式进行编址。
  • 即先给第0列的各单元按从上到下的顺序依次赋予地址,然后再给第1列的各单元按顺序依次赋予
    地址,…,最后给最后一列的各单元按顺序依次赋予地址。
  • 同一个体中的高$ \log_2 m$ 位都是相同的,这就是体号。

单元的线性地址与行列(体内地址/体号)地址的关系

  • 考虑处于第 i i i 行(体内地址),第 j j j 列(体号)的单元的线性地址 A A A,存在如下关系:

A = j × n + i A = j \times n + i A=j×n+i

其中: j = 0 , 1 , 2 , ⋯   , m − 1 ; i = 0 , 1 , 2 , ⋯   , n − 1 j = 0,1,2, \cdots , m-1; i = 0,1,2, \cdots, n-1 j=0,1,2,,m1;i=0,1,2,,n1

  • 同理,已知某一单元的线性地址 A A A,则其体内地址 i i i 和体号 j j j ,存在如下关系:

KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ i &= A\ mod\ n…

高位交叉编址

7.6.2.2 低位交叉编址

采用低位交叉访问方式能大幅度地提高主存储器的带宽,目前这种存储器已经在高性能的单处理机和多处理机中得到了广泛应用。

  • 这种方式相当于对存储单元矩阵按行优先的方式进行编址。
  • 即先给第0行的各单元按从左到右的顺序依次赋予地址,然后再给第1行的各单元按顺序依次赋予
    地址,…,最后给最后一行的各单元按顺序依次赋予地址。
  • 同一个体中的低 $ \log_2 m$ 位都是相同的,这就是体号。

单元的线性地址与行列(体内地址/体号)地址的关系

  • 考虑处于第 i i i 行(体内地址),第 j j j 列(体号)的单元的线性地址 A A A,存在如下关系:

A = i × m + j A = i \times m + j A=i×m+j

其中: j = 0 , 1 , 2 , ⋯   , m − 1 ; i = 0 , 1 , 2 , ⋯   , n − 1 j = 0,1,2, \cdots , m-1; i = 0,1,2, \cdots, n-1 j=0,1,2,,m1;i=0,1,2,,n1

  • 同理,已知某一单元的线性地址 A A A,则其体内地址 i i i 和体号 j j j ,存在如下关系:

i = ⌊ A m ⌋ j = A   m o d   m \begin{aligned} i &= \lfloor \frac{A}{m} \rfloor \\ j &= A\ mod\ m \end{aligned} ij=mA=A mod m

低位交叉编址

说明:

  • 虽然在理想情况下,这种存储器的带宽最高能提高到原来的m倍。增加m的值就能够提高主存储器的带宽。

  • 但是,由于存在访问冲突,实际加速比小于m。

并行多体存储与转移概率:

  • 因为程序的转移概率不会很低,数据分布的离散性较大
  • 所以单纯靠增大m提高并行主存系统的带宽是有限的,而性能价格比还会随m的增大而下降。

7.6.3 避免存储器冲突

首先介绍冲突的概念

体冲突:

  • 指两个访问请求要访问同一个存储体
  • 在传统的多体交叉结构中,顺序访问被处理得很好,不会发生体冲突。地址相差奇数值的访存也是如此
  • 当地址相差偶数值时,冲突频度增加了

解决方法一

  • 增加更多的体来减少体冲突的次数。
  • 在较大规模的机器中才采用,例如,NEC SX/3最多可使用128个体。
  • 存在问题:这是因为对存储器中数据的访问不是随机的,无论有多少个体,多个访问都有可能去访问同一个体。

解决方法二(软件方法)

  • 编译器可以通过循环交换优化来避免对同一个体的访问。

解决方法三(硬件解决方案)

  • 传统存储系统(低位交叉)的体数 m m m和每个体的容量 n n n都取为 2 2 2的幂,体内地址 i i i 和体号 j j j 存在以下关系
    KaTeX parse error: No such environment: align at position 10: \begin{̲a̲l̲i̲g̲n̲}̲ i &= \lfloor…

  • 使体数为素数。采用素数看起来似乎会需要更多的硬件来完成复杂的计箅,如取模和除法运算。这些复杂的计算会延长每次访存的时间。

  • 有几种方法能快速地进行上述计算,尤其是当存储体数为素数、且为 2 2 2幂减 1 1 1时,可以用下面的计算来代替除法运算:
    体内地址  i = A   m o d   n \text{体内地址}\ i = A\ mod\ n 体内地址 i=A mod n

    • 由于一个存储体中包含的字数 n n n一般是 2 2 2的幂,所以可以用位选择方法实现上述计算

7.7 虚拟存储器

  • 虚拟存储器是“主存辅存”层次进一步发展的结果。它由价格较贵、速度较快、容量较小的主存储器和一个价格低廉、速度较慢、容量很大的辅助存储器(通常是硬盘)组成,在系统软件和辅助硬件的管理下,就像一个单一的、可直接访问的大容量主存储器。

  • 程序员可以用机器指令的地址码对整个程序统一编址,就如同应用程序具有对应于这个地址码宽度的存储空间(称为程序空间)一样,而不必考虑实际主存空间的大小。

  • 目前几乎所有的计算机都采用了虚拟存储系统。

7.7.1 基本概念

虚拟存储器可以分为两类

  • 页式

    页式虚拟存储器把空间划分为大小相同的块,即页面。

    页面是对空间的机械划分.

  • 段式

    段式虚拟存储器把空间划分为可变长的块。

    段则往往是按程序的逻辑意义进行划分的(例如,堆、栈等)。

现代计算机几乎不采用纯段式。许多计算机采用段式和页式的组合,段页式

  • 每段被划分为若干个页
  • 保持了段作为逻辑单位的优点
  • 简化了替换的实现
  • 而且段不必作为整体全部一次调入主存,可以以页面为单位部分调入。

7.7.2 快速地址转换技术

背景:

页表一般很大,是存放在主存中的。每次访存都需要两次对主存储器的访问:

  • 第一次访问页表,获取所要访问数据的物理地址

  • 第二次才是访问数据本身

这使得存储器速度下降严重,一般采用TLB来解决这个问题。

TLB(TranslationLook-aside Buffer)

  • TLB是一个专用的高速缓冲器,用于存放近期经常使用的页表项(Page Table Entry,PTE页表条目)。
  • 根据程序的局部性原理,它所用的页表条目也是聚集的。
  • 这样,大多数访存都可以通过TLB快速地完成虚→实地址转换,只有偶尔在TLB不命中时,才需要去访问主存中的页表。

TLB中的项由两部分构成:

  • 标识

    标识中存放的是虚地址的一部分

  • 数据

    数据部分中存放的则是物理页帧号、有效位、存储保护信息、使用位,修改位等

⚠️注意事项

  • 为了使TLB中的内容与页表保持一致,当修改页表的某—项时,操作系统必须保证TLB中没有该页表项的副本。
  • 这可以通过作废TLB中的页表项来实现。
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
计算机组织与体系结构性能设计(第6版) 第1 导论   1.1 计算机组织与体系结构   1.2 结构和功能   1.3 为什么要研究计算机组织与体系结构   1.4 本书概要   1.5 网络资源   第2 计算机的演变和性能   2.1 计算机简史   2.2 性能设计   2.3 Pentium和PowerPC的演变   2.4 参考文献和Web站点   2.5 关键词、复习题和习题   第二部分 计算机系统   第3 计算机功能和互连的总视图   3.1 计算机的组成   3.2 计算机的功能   3.3 互连结构   3.4 总线互连   3.5 PCI   3.6 参考文献和Web站点   3.7 关键词、复习题和习题   附录 3A:时序图   第4 高速缓存   4.1 计算机存储系统概述   4.2 高速缓存的原理   4.3 高速缓存的设计要素   4.4 Pentium4和PowerPC的高速缓组织   4.5 参考文献   4.6 关键词、复习题和习题   附录 4A:两级存储器的性能特征   第5存储器   5.1 半导体主存储器   5.2 纠错   5.3 高级DRAM的组织   5.4 参考文献和Web站点   5.5 关键词、复习题和习题   第6 外部存储器   6.1 磁盘   6.2 RAID   6.3 光存储器   6.4 磁带   6.5 参考文献和Web站点   6.6 关键词、复习题和习题   第7 输入/输出   7.1 外部设备   7.2 I/O模块   7.3 编程控制的I/O   7.4 中断驱动的I/O   7.5 直接存储器存取   7.6 I/O通道和处理器   7.7 外部接口:FireWire和InfiniBand   7.8 参考文献和Web站点   7.9 关键词、复习题和习题   第8 操作系统支持   8.1 操作系统概述   8.2 调度   8.3 存储器管理   8.4 PentiumII和PowerPC的存储器管理   8.5 参考文献和Web站点   8.6 关键词、复习题和习题   第三部分 中央处理器   第9 计算机算术   9.1 算术和逻辑单元   9.2 整数表示   9.3 整数算术运算   9.4 浮点表示   9.5 浮点算术运算   9.6 参考文献和Web站点   9.7 关键词、复习题和习题   第10 指令集:特征和功能   10.1 机器指令特征   10.2 操作数类型   10.3 Pentium和PowerPC的数据类型   10.4 操作类型   10.5 Pentium和PowcrPC的操作类型   10.6 汇编语言   10.7 参考文献   10.8 关键词、复习题和习题   附录 10A:堆栈   附录 10B:小端和大端次序以及位序   第11 指令集:寻址方式和指令格式   11.1 寻址   11.2 Pentium和PowerPC的寻址方式   11.3 指令格式   11.4 Pentium和PowerPC的指令格式   11.5 参考文献   11.6 关键词、复习题和习题   第12CPU的结构和功能   12.1 处理器组织   12.2 寄存器组织   12.3 指令周期   12.4 指令流水线技术   12.5 Pentium处理器   12.6 PowerPC处理器   12.7 参考文献   12.8 关键词、复习题和习题   第13 精简指令集计算机   13.1 指令执行特征   13.2 大寄存器文件的使用   13.3 基于编译器的寄存器优化   13.4 精简指令集结构   13.5 RISC流水线技术   13.5 MIPS4000   13.6 SPARC   13.7 RISe与CISC的争论   13.8 参考文献   13.9 关键词、复习题和习题   第14 指令级并行和超标量处理器   14.1 概述   14.2 设计问题   14.3 Pentium4   14.4 PowerPC   14.5 参考文献   14.6 关键词、复习题和习题   第15 IA-64体系结构   15.1 推动因素   15.2 通用组织   15.3 判断、推测和软件流水线技术   15.4 LA-64指令集结构   15.5 Itanium组织   15.6 参考文献和Web站点   15.7 关键词、复习题和习题   第四部分 控制器   第16 控制器操作   16.1 微操作   16.2 处理器的控制   16.3 硬布线实现   16.4 参考文献   16.5 关键词、复习题和习题   第17 微程序控制   17.1 基本概念   17.2 微指令排序   17.3 微指令执行   17.4 TI 8800   17.5 微程序设计的应用   17.6 参考文献   17.7 关键词、复习题和习题   第五部分 并行组织   第18并行处理   18.1 多处理器组织   18.2 对称多处理器   18.3 高速缓存一致性和MESI协议   18.4 机群系统   18.5 非对称存储器存取   18.6 向量计算   18.7 参考文献   18.8 关键词、复习题和习题   附录   词汇表   参考文献   索引
第一 计算机体系结构的基本概念 1.1 引论 1.2 计算机体系结构的概念 1.2.1 计算机系统中的层次概念 1.2.2 计算机体系结构 1.2.3 计算机组成和计算机实现技术 1.3 计算机体系结构的发展 1.3.1 存储程序计算机体系结构及其发展 1.3.2 计算机的分代和分型 1.3.3 应用需求的发展 1.3.4 计算机实现技术的发展 1.3. 5 体系结构的生命周期 1.4 计算机体系结构中并行性的发展 1.4.1并行性概念 1.4.2 提高并行性的技术途径 1.5 定量分析技术基础 1.5.1 计算机性能的评测 1.5.2 测试程序 1.5.3 性能设计和评测的基本原则 1.5.4 CPU的性能 1.6 影响计算机体系结构的成本和价格因素 1.6.1 集成电路的成本 1.6.2 计算机系统的成本和价格 1.7 小结习题一第二 计算机指令集结构设计 2.1 指令集结构的分类 2.1.1 指令集结构的分类 2.1.2 通用寄存器型指令集结构分类 2.2 寻址技术 2.3 指令集结构的功能设计 2.3.1 CISC计算机指令集结构的功能设计 2.3.2 RISC计算机指令集结构的功能设计 2.3.3 控制指令 2.4 操作数的类型、表示和大小 2.5 指令集格式的设计 2.5.1 寻址方式的表示方法 2.5.2 指令集格式的选择 2.6 编译技术与计算机体系结构设计 2.6.1 现代编译器的结构和相关技术 2.6.2 现代编译技术对计算机体系结构设计的影响 2.6.3 计算机体系结构对当前编译技术的影响 2.7 DLX指令集结构 2.7.1 DLX指令集结构 2.7.2 DLX指令集结构效能分析 2.8 小结习题二第三 流水线技术 3.1 流水线的基本概念 3.1.1 流水线的基本概念 3.1.2 流水线的分类 3.2 DLX的基本流水线 3.2.1 DLX的一种简单实现 3.2.2 基本的DLX流水线 3.2.3 流水线性能分析 3. 3 流水线中的相关 3.3.1 流水线的结构相关 3.3.2 流水线的数据相关 3.3.3 流水线的控制相关 3.4 流水线计算机实例分析(MIPS R4000) 3.4.1 MIPS R4000整型流水线 3.4.2 MIPS R4000浮点流水线 3.4.3 MIPS R4000流水线的性能分析 3.5 向量处理机 3.5.1 向量处理方式和向量处理机 3.5.2 向量处理机实例分析 3.6 小结习题三第四 指令级并行 4.1 指令级并行的概念 4.1.1 循环展开调度的基本方法 4.1.2 相关性 4.2 指令的动态调度 4.2.1 动态调度的原理 4.2.2 动态调度算法之一:记分牌 4.2.3 动态调度算法之二:Tomasulo算法 4.3 控制相关的动态解决技术 4.3.1 减少分支延迟:分支预测缓冲技术 4.3.2 进一步减少分支延迟:分支目标缓冲 4.3.3 基于硬件的推断执行 4.4 多指令流出技术 4.4.1 超标量技术 4.4.2 多指令流出的动态调度 4.4.3 超长指令字技术 4.4.4 多流出处理器受到的限制 4.5 小结习题四第五 存储层次 5.1 存储器的层次结构 5.1.1 从单级存储器到多级存储器 5.1.2 存储层次的性能参数 5.1.3 “Cache—主存”和“主存—辅存”层次 5.1.4 存储层次的四个问题 5.2 Cache基本知识 5.2.1 映象规则 5.2.2 查找方法 5.2.3 替换算法 5.2.4 写策略 5.2.5 Cache的结构 5.2.6 Cache性能分析 5.2.7 改进Cache性能 5.3 降低Cache失效率的方法 5.3.1 增加Cache块大小 5.3.2 提高相联度 5.3.3 Victim Cache 5.3.4 伪相联Cache 5.3.5 硬件预取技术 5.3.6 由编译器控制的预取 5.3.7 编译器优化 5.4 减少Cache失效开销 5.4.1 让读失效优先于写 5.4.2 子块放置技术 5.4.3 请求字处理技术 5.4.4 非阻塞Cache技术 5.4.5 采用两级Cache 5.5 减少命中时间 5.5.1 容量小,结构简单的Cache 5.5.2 虚拟Cache 5.5.3 写操作流水化 5.5.4 Cache优化技术小结 5.6 主存 5.6.1 存储器技术 5.6.2 提高主存性能的存储器组织结构 5.7 虚拟存储器 5.7.1 虚拟存储器基本原理 5.7.2 快表(TLB) 5.7.3 页面大小的选择 5.8 进程保护和虚存实例 5.8.1 进程保护 5.8.2 页式虚存举例:Alpha AXP的存储管理和21064的TLB 5.9 Alpha AXP 21064存储层次 5.10 小结习题五第六 输入输出系统 6.1 概述 6.2 存储设备 6.2.1 磁盘设备 6.2.2 磁带设备 6.2.3 光盘设备 6.3 总线 6.3.1 总线分类 6.3.2 总线基本工作原理 6.3.3 总线使用 6.3.4 总线标准和实例 6.3.5 设备的连接 6.3.6 CPU与I/O处理的匹配 6.4 通道处理机 6.4.1 通道的作用和功能 6.4.2 通道的工作过程 6.4.3 通道种类 6.4.4 通道中的数据传送过程 6.4.5 通道的流量分析 6.5 I/O与操作系统 6.5.1 I/O和Cache数据一致性 6.5.2 DMA和虚拟存储器 6.6 I/O系统设计 6.7 小结习题六第七 多处理机 7.1 引言 7.1.1 并行计算机体系结构的分类 7.1.2 通信模型和存储器的结构模型 7.1.3 通信机制的性能 7.1.4 不同通信机制的优点 7.1.5 并行处理面临的挑战 7.1.6 并行程序的计算/通信比率 7.2 多处理机的存储器体系结构 7.2.1 集中式共享存储器体系结构 7.2.2 分布式共享存储器体系结构 7.3 互连网络 7.3.1 互连网络的性能参数 7.3.2 静态连接网络 7.3.3 动态连接网络 7.4 同步与通信 7.4.1 同步机制 7.4.2 大规模机器的同步 7.5 并行化技术 7.5.1 并行化的基本策略 7.5.2 并行语育与编译器 7.6 多处理机实例 7.6.1 Challenge多处理机系统 7.6.2 Origin 20007.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值