20155204 《信息安全系统设计基础》第十四周学习总结

20155204 《信息安全系统设计基础》第十四周学习总结

本篇博客老师要求写学的最差的一章,有几章由于时间紧张都学习的粗枝大叶,在其中,我挑选了第六章作为我的再学习对象,依据是我对这章兴趣最浓。

教材内容总结

概述

  • 存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构,主要由CPU、高速缓存存储器、主存、磁盘构成。一个存储器层次是下一层次的缓存(从集合论上看可理解为子集)。由于成本原因,主存无法用快速访问的SRAM制造。又由于编写良好的程序具有局部性的特点,它更倾向于频繁访问某一层次上的存储设备。所以与CPU直接访问DRAM主存相比,利用存储器层次化的系统在(少数次)访问底层存储设备的更大开销(指的是CPU等待存取的时钟周期)可以通过多数次访问高速缓存得到补偿。存储器层次结构的整体效果就是存储器池的成本与层次结构底层最便宜的存储设备相当,但是却以接近于层次结构顶部存储设备的高速率向程序提供数据。

6.1储存技术

6.1.1随机访问储存器
  • 书上的图6-3,很好的概括了传统DRAM。其中每个方块代表由w位(一般为8位,这样一个超单元就表示一个字节)bit组成的超单元,整个DRAM由d个超单元组织成二维阵列构成。DRAM中的数据以超单元为单位访问。通过地址引脚传入的RAS(行访问选通脉冲)和CAS(列访问选通脉冲)访问某个超单元,然后加载目标所在行到内部行缓冲区,通过8位的数据引脚输出目标。之所以将超单元组织成二维阵列而非线性数组,是为了减少地址的位数,尽管需要付出增加一个传入地址的代价。增强的DRAM:快页模式DRAM(FPM DRAM) ,扩展数据输出DRAM (EDO DRAM),同步DRAM(SDRAM),双倍数据速率同步DRAM(DDR SDRAM)

  • 存储器模块:将b个DRAM芯片包装成一个存储器模块,b字节数据被同时存取。缓存中常提到的块就是这样一个存储器模块的一个访问单位。

  • 访问主存:数据流通过称为总线的共享电子电路在处理器和DRAM主存之间来来回回。总线间数据传送的步骤称为总线事务。

  • ROM:实际上ROM中有的类型既可以读也可以写,仍称之为“只读存储器”是历史原因。存在ROM中的程序称为固件,当一个计算机系统通电以后,它会运行存储在ROM中的固件。一些系统在固件中提供了少量基本的输入输出函数。ROM可按照它们能够被重编程的次数和对它们进行重编程所用的机制分类为:PROM(可编程ROM),EPROM(可擦写可编程ROM),闪存(基于EEPROM),固态硬盘(SSD,基于闪存)

6.1.2 磁盘存储
  • 磁盘构造:磁盘是由盘片(platter)构成的。每个盘片有两面或者称为表面(surface),表面覆盖着磁性记录材料。盘片中央有一个可以旋转的主轴(spindle),它使得盘片以固定的旋转速率 (rotational rate)旋转,通常是 5400〜15000 转每分钟(Revolution Per Minute, RPM)0磁盘通常包含一个或多个这样的盘片,并封装在一个密封的容器内。 一个典型的磁盘表面的结构。每个表面是由一组称为磁道(track)的同心圆组成的。每个磁道被划分为一组扇区(sector)。每个扇区包含相等数量的数据位(通常是512字 节),这些数据编码在扇区上的磁性材料中。扇区之间由一些间隙(gap)分隔开,这些间隙中不存储数据位。间隙存储用来标识扇区的格式化位。
  • 磁盘操作: 盘用读/写头(read/write head)来读写存储在磁性表面的位,而读写头连接到一个传动臂(actuator arm) —端,如图6-10a所示。通过沿着半径轴前后移动这个传动臂,驱动器可以将 读/写头定位在盘面上的任何磁道上。这样的机械运动称为寻道(seek)。一旦读/写头定位到了 期望的磁道上,那么当磁道上的每个位通过它的下面时,读/写头可以感知到这个位的值(读该位),也可以修改这个位的值(写该位)。有多个盘片的磁盘针对每个盘面都有一个独立的读/写头,如图6-10b所示。读/写头垂直排列,一致行动。在任刻,所有的读/写头都位于同一个柱面上。时间开销主要是寻道时间和旋转延迟造成。
  • 磁盘容量:
  • 访问磁盘:
  • 逻辑磁盘块:磁盘中有一个小的硬件/固件设备,称为磁盘之气空啊,维护着逻辑块号和实际物理磁盘扇区之间的映射关系。
6.1.3 固态硬盘(SSD)
  • 固态硬盘结构:闪存翻译层与磁盘控制器作用相同,一个闪存由B个块序列组成,每个块由P页组成。通常页的大小是5124KB,块是由32128页组成。数据是以页为单位读写的。只有在一页所属的整个块被擦除后(有效内容拷贝到其他块)才可写这一页。
  • 闪存由半导体存储器构成,没有移动的部件,因而随机访问时间比旋转磁盘快,能耗更低,同时也更结实。不过闪存块在反复读写后会磨损,所以闪存块有使用寿命

6.2 局部性

  • 一个编写良好的计算机程序常常具有良好的局部性(locality)。也就是说,它们倾向于引用 邻近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。这种倾向性,被称为 局部性原理(principle of locality),是一个持久的概念,对硬件和软件系统的设计和性能都有着 极大的影响。
  • 局部性通常有两种不同的形式:时间局部性(temporal locality)和空间局部性(spatial locality)。在一个具有良好时间局部性的程序中,被引用过一次的存储器位置很可能在不远的将来再被多次引用。在一个具有良好空间局部性的程序中,如果一个存储器位置被引用了一次,那 么程序很可能在不远的将来引用附近的一个存储器位置。
  • 量化评价一个程序中局部性的简单原则:1. 重复引用同一个变量的程序有良好的时间局部性。2. 对于具有步长为t的引用模式的程序,步长越小,空间局部性越好。具有步长为1的引 用模式的程序有很好的空间局部性。在存储器中以大步长跳来跳去的程序空间局部性会很差。3. 对于取指令来说,循环有好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。

6.3 储存器层次结构


第k+1层的存储器被划分成连续的数据对象片,称为块。每个块都有唯一的地址或名字以区别于其他块。数据总以块大小为传送单元在第k层和第k+1层之间来回拷贝。虽然在层析结构中任何一对相邻的层次之间块大小是固定的,但是其他的层次对之间可以有不同的块大小。第k层存储的块集合是第k+1层的子集的拷贝。

  • 数据块总是以块大小为传送单位(transfer unit)在第k层和第k+1层之间来回拷贝。
  • 缓存不命中:冷不命中,冲突不命中,容量不命中。
  • 策略:替换(或称驱逐)一个现存块,替换策略有随机替换策略、最近最少被使用替换策略等。

6.4

  • 典型总线结构
6.4.1 通用的高速缓存存储器组织结构
  • 高速缓存(S,E,B,m)的通用组织。a)高速缓存是一个高速缓存组的数组。每个组包含一个或多个行,每个行包含一个有效位,一些标记位以及一个数据块;b)高速缓存的结构将m个地址位划分成了t个标记为、s个组索引位和b个块偏移位。
  • 3种方式的高速缓存:直接映射高速缓存、 组相联高速缓存、全相联高速缓存。
6.4.2 直接映射高速缓存
  • 根据E(每个组的高速缓存行数)高速缓存被分为不同的类。每个组只有一行(E=1)的高速缓存称为直接映射高速缓存(direct-mapped cache)。
  • 行匹配:当且仅当设置了有效位,而且高速缓存中的标记与w的地址中的标记相匹配时,这一行包含w的一个拷贝。
  • 字选择:
  • 行替换:如果缓存不命中,那么它需要从储存器层次结构中的下一层取出被请求的块,然后将新的块储存在组索引位指示的组中的一个高速缓存行中。
  • 6.4.3 组相联高速缓存

  • 组相联高速缓存(setassociative cache)放松了在直接映射高速缓存中E=1的限制,所以每个组都可以保存有多于一个的高速缓冲行。一个1<E<C/B的高速缓冲行称为E路相联高速缓冲。
6.4.4 全相联高速缓存
  • 一个全相联高速缓存(fullyassociative cache)是由一个包含所有高速缓存行的组(即E=C/B)组成的。
  • 组选择:
6.4.5有关写的问题
  • 高速缓存关于读的操作非常简单,首先,在高速缓存中查找所需子w的拷贝。如果命中,则立即返回给CPU。如果不命中,则从存储器结构中较低层中取出包含字w的块,将这个块存储到某个行中(可能会驱逐一个有效行),然后返回字w。写的情况就要复杂一些了。假设我们要写一个已经缓存了的字w写命中(write hit)。在高速 缓存更新了它的w的拷贝之后,怎么更新w在层次结构中紧接着低一层中的拷贝昵?最简单的 方法,称为直写(write-through),就是立即将w的高速缓存块写回到紧接着的低一层中。虽然 简单,但是直写的缺点是每次写都会引起总线流量。另一种方法,称为写回(write-back),尽可 能地推迟存储器更新,只有当替换算法要驱逐更新过的块时,才把它写到紧接着的低一层中。由 于局部性,写回能显著地减少总线流量,但是它的缺点是增加了复杂性。高速缓存必须为每个高 速缓存行维护一个额外的修改位(dirtybit),表明这个髙速缓存块是否被修改过。 另一个问题是如何处理写不命中。一种方法称为写分配(write-allocate),加载相应的低一 层中的块到高速缓存中,然后更新这个高速缓存块。写分配试图利用写的空间局部性,但是缺点是每次不命中都会导致一个块从低一层传送到高速缓存。另一种方法,称为非写分配(not-write-allocate),避开高速缓存,直接把这个字写到低一层中。直写高速缓存通常是非写分配的。写回高速缓存通常是写分配的。 一般而言,高速缓存越往下层,越可能采用写回而不是直写。
6.4.7高速缓存参数的性能影响
  • 指标:不命中率、命中率、命中时间、不命中惩罚

6.5 编写高速缓存有好的代码

  • 一般高速缓存友好的基本方法:1. 让常见的情况运行的快。程序通常把大部分时间都花在少量的核心函数上,而这些函数通常把时间都花在了少量循环上。所以集中注意力在核心函数的少量循环上,而忽略其他部分。 2. 在每一个循环内部缓存不命中的数量最小。

6.6 综合:高速缓存对程序性能的影响

  • 理解存储器层次结构本质的程序员能够利用这些知识编写出更有效的程序,无论具体的存储系统结构是怎样的。特别地,我们推荐下列技术1.将你的注意力集中在内循环上,大部分计算和存储器访问都发生在这里。2.通过按照数据对象存储在存储器中的顺序、以步长为1的来读数据,从而使得你程序中的 空间局部性最大。3.一旦从存储器中读入了一个数据对象,就尽可能多地使用它,从而使得程序中的时间局部 性最大。

6.7 小结

  • 基本存储技术包括随机存储器(RAM)、非易失性存储器(ROM)和磁盘。RAM有两种基 本类型。静态RAM (SRAM)快一些,但是也贵一些,它既可以用做CPU芯片上的高速缓存, 也可以用做芯片下的高速缓存。动态RAM (DRAM)慢一些,也便宜一些,用做主存和图形帧缓冲区。非易失性存储器,也称为只读存储器(ROM),即使是在关电的时候,也能保持它们的信息,它们用来存储固件。旋转磁盘是机械的非易失性存储设备,以每个位很低的成本保存大量的数据,但是访问时间比DRAM更长。固态硬盘(SSD)基于非易失性的闪存,越来越变成旋转磁盘对某些应用的具有吸引力的替代产品。
  • 一般而言,较快的存储技术每个位的价格会更高,而且容量较小。这些技术的价格和性能属性正在以显著不同的速度变化着。特别地,DRAM和磁盘访问时间远远大于CPU周期时间。 系统通过将存储器组织成存储设备的层次结构来弥补这些差异,在这个层次结构中,较小、较 快的设备在顶部,较大、较慢的设备在底部。因为编写良好的程序有好的局部性,大多数数据都可以从较高层得到服务,结果就是存储系统能以较高层的速度运行,但却有较低层的成本和 容量。
  • 程序员可以通过编写有良好空间和时间局部性的程序来显著地改进程序的运行时间。利用基于SRAM的高速缓存存储器特别重要。主要从高速缓存取数据的程序能比主要从存储器取数据的程序运行得快得多。

教材问题与解答

  • 问题1:高速缓存行、组、块概念的区分与联系
  • 问题1解决:块是一个固定大小的信息包,在高速缓存和主存之间来回传送。行是高速缓存中的一个容器,储存块以及其他信息(例如有效位和标记位)。组是一个或多个行的集合。直接映射高速缓存中的组只由一行组成。组相联合全相联高速缓存中的组是由多个行组成的。

理解与感悟(结对反馈)

  • 给结对伙伴也讲解了这一章,她本身也有了解许多,实际上是边讲边学,通过她的问题和她了解的知识点学习了不少。关于硬件部分一直都比较感兴趣,可是一直停留在浅层次上,借助本书的第六章,可以说是非常深入的理解了储存器,由之前的感性认识更提升了一个层次,感到非常的开心!
posted @ 2017-12-23 19:26  20155204王昊  阅读(188)  评论(1编辑  收藏  举报