---恢复内容开始---
学习计时:共12小时 读书:3 代码:3.5 作业:2.5 博客:3 |
一、学习目标 |
1. 了解常见的存储技术(RAM、ROM、磁盘、固态硬盘等)
2. 理解局部性原理
3. 理解缓存思想
4. 理解局部性原理和缓存思想在存储层次结构中的应用
5. 高速缓存的原理和应用
|
二、学习资源 |
1. 教材:第六章《存储器层次结构》 2. 课程资料:https://www.shiyanlou.com/courses/413 实验六、七,课程邀请码:W7FQKW4Y 3. 教材中代码运行、思考一下,读代码的学习方法见这。
|
三、学习方法 |
1. 进度很重要:必须跟上每周的进度,阅读,练习,问答,项目。我会认真对待每一位同学,请你不要因为困难半途而废。
2. 问答很重要:遇到知识难点请多多提问,这是你的权利更是您对自己负责的义务。问答到博客园讨论小组:http://group.cnblogs.com/103791/
3. 实践很重要:解决书中习题,实践书中实例,完成每周项目,才算真的消化了这本好书。通过实验楼环境或自己安装的虚拟机在实践中进行学习
4. 实验报告很重要:详细记录你完成项目任务的思路,获得老师点评和帮助自己复习。学习完成后在博客园中(http://www.cnblogs.com/)把学习过程通过博客发表,博客标题“信息安全系统设计基础第七周学习总结”
|
四、学习任务 |
1. 阅读教材,完成课后练习(书中有参考答案) 重点:6.2 6.3 6.4 6.8 6.9 6.10 6.11 6.12 6.13 2. 考核:练习题把数据变换一下 3. 实验:需要动手的到实验楼中练习一下
|
五、后续学习预告(可选): |
复习前面Linux 命令,Linux 编程基础,教材前七章内容 |
六、学习过程 |
重点:理解局部性原理和缓存思想在存储层次结构中的应用,了解存储设备的类型和特点。
第六章:存储器层次结构
序:存储器结构是一个具有不同容量、成本和访问时间的存储设备的层次结构。
CPU寄存器保存着最常用的数据。靠近CPU的小的、快速的高速缓存寄存器作为一部分存储在相对速度慢的主存储器中的数据和指令的缓冲区域。
存储器层次结构是可行的。
6.1 存储技术
6.1.1 随机访问存储器
两类:动态(DRAM)和静态(SRAM)。用一个静态比动态要快要贵。
SRAM 作为高速缓存存储器,可以在CPU芯片上,也可以在片下。
DRAM 作为主存以及图形系统的帧缓冲区。
例:一个典型的桌面SRAM系统不会超过几兆字节,但DRAM有几百或几千。
1:静态RAM
SRAM将每一个位储存在双稳态的储存器单元里。每个单元是6晶题管电路实现。
属性:可以无限的保持在两个不同的电压配置或状态之一。
2:动态RAM
DRAM 将每一个位存储为对一个电容的充电。电容非常小,只有大约 30*10-15方法拉。
每个单元由一个电容和一个访问晶体管组成。
但是被干扰后,就不会再恢复。
SRAM和DRAM:SRAM的存取更快。SRAM对诸如光和电噪声的干扰不敏感。
所以SRAM的单元使用更多的晶体管,因此密集度低,快,消耗更大。
3:传统的DRAM
DRAM芯片中的单元被分为d个超单元。每个超单元由W个DRAM单元组成。
一个d*w的DRAM总共储存了 DW 位信息。
超单元被分成r行 c列的长方形阵列:rc=d。
4:存储器模块
DRAM 芯片包装在存储器模块中,插到主板的扩展槽中。
最常见的是 包括168个引脚的双列直接存储器模块,以32 位为块传送数据。
5:增强的DRAM
块页模式 DRAM(FPM DRAM):传统的DRAM 将超单元的一整块拷贝到它的内部
行缓冲区中,使用一个,丢弃剩余的。FPR 允许
对同一行连续的访问可以直接从行缓冲区得到服务。
扩展数据输出(EDO DRAM):FPR的增强形式,允许单独的CAS信号在时间上靠的
更紧密一点。
同步DRAM(SDRAM):比异步的更快的输出超单元的内容。
双倍数据速率同步 DRAM(DDR DRAM):通过使用两个时钟作为控制信号,是DRAM
的速度翻倍。
视频RAM(VRAM):与FPM 的两个重要的区别 a:VRAM的输出是通过依次对内部
缓冲区的整个内容的进行移位得到的。B:VRAM允许对存储器
并行的读和写。
6:非易失性存储器
PROM:只能被编程一次。每个存储单元有一种熔丝,可以用高电流熔断一次。
EPROM(可擦写编程):有一个透明的石英窗口,允许光到达存储单元。紫外线光
照射到窗口时,单元被清除为0.
EEPROM:闪存是一类非易失性存储器,已经成为一种重要的存储结构。
存储在ROM中的程序通常称为固件。一个系统在固件中提供了少量的输入和输出函数。
7:访问主存
数据流通过总线的共享电子电路在处理器和DRAM中来来回回。
每次传送都是通过一系列步骤完成的,称为总线事务。
读事务:从主存传送数据到CPU。写事务:从CPU传送数据到主存。
总线:一行并行的导线,能携带地址、数据和控制信号。 总线分类: a.系统总线——连接CPU和I/O桥 控制总线:控制CPU与内存以及I/O设备之间的数据。 传送方式:读/写 数据总线:传递数据,决定CPU所能存取的位数。 总线越宽,CPU处理的能力越强。 地址总线:指出内存单元的地址,决定了最大可编程的内存空间。 N位地址,提供2的N次方个不同地址0~2的N次方-1。 b.存储器总线——连接I/O桥和主存 c.I/O 桥 I/O桥将系统总线的电子信号翻译成存储器总线的电子信号,也将系统总线和存储器总线连接到I/O总线。 6.1.2 磁盘存储磁盘是应用的保存大量数据的存储设备,存储数据的数量级可以到达几百到几千兆字节。 从磁盘上读取的时间为毫秒级,从DRAM读比从磁盘读快10万倍,从SRAM读比磁盘快 100 万倍。 1:磁盘构造: 磁盘有若干盘片组成,密封在容器(磁盘驱动器)内。 每个盘片的两个表面称为表面,表面覆盖着磁性记录材料。表面且都有一组被称为磁道的同心圆; 每个同心圆由一些间隙分隔成一组等容量磁道(通常是512字节),间隙中存储的是标识扇区的格式化位。 盘片中间有一个可以旋转的主轴,使盘片以固定的旋转速率旋转。 柱面:所有盘片表面到主轴中心距离相等的磁道的集合。 有时,称磁盘为旋转磁盘,区别于基于闪存的固态硬盘,SSD是没有移动的部分的。 2:磁盘容量: 容量是指一个磁盘上可以记录的最大位数。 决定因素: 记录密度;磁道密度;面密度(前两者乘积)。提高面密度即可提高容量。 计算公式: 磁盘容量 = 字节数/扇区 * 平均盘区数/磁道 * 磁盘数/表面 * 表面数/盘片 * 盘片数/磁盘。 3:磁盘操作: 读写通过连在传动臂一段的读写头完成;可以定位在盘面上的任何磁道上;这样的机械运动称为寻道。 每个盘面对应一个读写头。所有的读写头一致行动,即在任意时刻,所有的读写都发生在同一盘面上 对扇区的访问主要有三个部分: 寻道:将读写头定位到包含目标扇区的磁道上。Tseek取决于它以前的位置和传动臂在盘面上的移动速度。时间通常为3——9ms。
旋转:一旦读写头定位到了期望的磁道,驱动器等待目标扇区的第一个位旋转到读写头下面。平均旋转时间是最大时间(等磁盘旋转一圈)
传送:驱动器开始写或者读扇区的内容;时间长短取决于旋转速度和每条磁道的扇区数目。
平均时延为 Tavg=1/RPM 1/(平均扇区数/磁道)60secs/1min)
访问一个磁盘扇区内容的平均时间为平均寻道时间,平均旋转延迟和平均传送时间之和。 访问一个磁盘扇区的512字节的主要时间在于寻道和旋转延迟。访问时间:磁盘>DRAM>SRAM
4:逻辑磁盘块 :操作系统是以逻辑块号为单位进行寻址操作的。
将一个逻辑块号 翻译成一个(盘面、磁道、扇区)三组元组,唯一的标识了对应的物理扇区。
5:连接到I/O设备: 设备是通过I/O总线(例如intel的PCI)连接到CPU和主存的。
比系统总线和存储器总线要慢,但是可以容纳种类众多的第三方I/O设备。比如:通用串行总线;图形卡;主机总线适配器。
通用串行总线控制器:一个连接到USB总线的设备的中转机构。 图形卡:包括硬件和逻辑设备。
主机总线适配器:将一个或多个磁盘连接到I/O线,使用的是一个特别的主机总线接口定义的通信协议。
6:访问磁盘:DMA:直接存储器访问。
6.1.3 固态磁盘
固态硬盘是一种基于闪存的存储技术,一个SSD包由一个或多个闪存芯片和闪存翻译层组成, 闪存芯片替代传统旋转磁盘中的机械驱动器,闪存翻译层是一个硬件/固件设备,与磁盘控制器相同, 将对逻辑块的请求翻译成对底层物理设备的访问。 SSD顺序读比顺序写稍微快一点,但随机写比读慢一个数量级。 随机读写的性能差别是由底层闪存基本属性决定的。
6.1.4 存储技术趋势不同的存储技术有不同的价格和性能折中。 不同存储技术的价格和性能属性以截然不同的速率变化着。 DRAM 和磁盘的性能滞后于 CPU的 性能。 6.2 局部性计算机程序倾向于引用邻近于其他最近引用过的数据项的数据或其本身;这种倾向性,被称为局部性原理。 包括:时间局部性,空间局部性。有良好局部性的程序比局部性差的程序运行的更快。 在硬件层,局部性原理允许计算机设计者通过引入称为高速缓存器的小而快的存储器来保存最近被引用的指令和数据项; 在操作系统级,局部性原理允许系统使用主存作为虚拟地址空间最近被使用的磁盘块。 重复引用一个变量的程序具有良好的时间局部性;对于取指令来说,循环具有良好的时间和空间局部性。循环体越小循环迭代次数越多局部性越好。 6.2.1 对数据引用局部性 一般来说, 随着步长增加,空间局部性下降。 6.2.2 取指令的局部性 代码区别于程序数据的一个重要属性就是在运行时它是不能被修改的。当程序在执行时,CPU只从储存器中读出它的指令。 CPU绝不会重写或修改这些指令。
6.2.3 局部性小结一个程序中局部性的简单原则:
6.3 存储器层次结构 6.3.1 存储器层次结构中的缓存高速缓存是一个小而快速的存储设备,作为存储在更大、也更慢的设备中的数据对象的缓冲区域。使用高速缓存的过程称为缓存。 存储器层次结构的中心思想是:每一层都缓存来自较低一层的数据对象。 第k+1层的存储器被划分为连续的数据对象片,称为块。 类似第k层也被划分为较少的块的集合,块的大小与k+1层是一样的,第k层的缓存包含第k+1层块的一个子集的拷贝。 数据总是以块为传送单元在两层之间来回拷贝。不同层次对之间可以有不同的块大小。 a :缓存命中及缓存不命中 缓存命中:当程序需要第(k+1)层的数据对象d的时候,首先会在第k层找d;如果d刚好缓存在第k层,那么就叫做缓存命中;反之,不命中 如果缓存不命中,那么第k层缓存就从第(k+1)层取出包含该数据的块,有可能会覆盖现有的块。覆=决定替换哪个块是由缓存的替换策略来控制的。 b:缓存管理 6.4 高速缓存存储器机器的高速缓存被组织成S=2^s个高速缓存组的数组;每个数组包含E个高速缓存行;每行由一个B=2^b字节的数据块、一个有效位(指明这个行是否包含有效信息)、t=m-(b+s)个标记位(唯一标识存储在这个高速缓存行中的块)组成。 通用的高速缓存存储器结构
每组只有一行的高速缓存称为直接映射高速缓存。高速缓存确定一个请求是否命中,然后抽搐被请求字的过程,分为
|
其他: |
概念的知识点太碎,只有完整、系统性知识,才能牢记
|
|
|
---恢复内容结束---