标签:
1.存储技术
三种常见存储技术:RAM/ROM/磁盘
两类:静态RAM(SRAM)和动态RAM(DRAM)
静态RAM(SRAM)比动态RAM(DRAM)更快,但也贵很多。
静态RAM
这个电路的一个属性:它可以无限制地保持在两个不同的电压配置或状态之一。其他任何状态都是不稳定的。
- 特点:由于SRAM的双稳态特性,只要有电,它就会永远地保持它的值,即使有干扰,如电子噪音,来扰乱电压,当干扰消除,电路也能恢复到稳定值。
- 应用:SRAM用来作为高速缓存存储器,即可以在CPU芯片上,也可以在片下。
动态DRAM
DRAM将每个位存储为对电容的充电。电容约为30×10-15F。
- 特点:对干扰特别敏感,当电容的电压被扰乱之后,它就永远不会恢复了。暴露在光线下会导致电容电压改变。
- 应用:DRAM用来作为主存以及图形系统的帧缓冲区。
ROM的区分:能被重编程的次数和对他们进行重编程所用的机制。
- PROM:只能被编程一次。
- EPROM:可擦写可编程ROM,紫外线光照清除单元内容,可擦写次数数量级1000。
- E2PROM:电子可擦除PROM,可以直接在印制电路卡上编程,可擦写次数数量级10^5。
- FLASH:闪存,基于EEPROM。(固态硬盘SSD基于闪存)
存储在ROM设备中的程序通常称为固件。
- 读事务:从主存传送数据到CPU。
- 写事务:从CPU传送数据到主存。
- 总线:一组并行的导线,能携带地址、数据的控制信号。
数据总线、控制总线、地址总线
读事务语句
movl A,%eax
- CPU从总线读出字x,并将它copy到寄存器eax中。
写事务语句
movl %eax,A
磁盘构造
磁盘容量
磁盘容量的决定因素:
- 记录密度:磁道一英寸的段可以放入的位数。
- 磁道密度:从盘片中心出发半径上一英寸的段内可以有的磁道数。
- 面密度:记录密度与磁道密度的乘积。
磁盘容量
即扇区大小×每条磁道平均扇区数×每个面磁道的磁道数×每个盘片的面数×每个磁盘的盘数
对于与DRAM和SRAM容量相关的单位,通常
K = 210,M = 220,G = 230
对于磁盘和网络这样的I/O设备容量相关的单位,通常
K = 103,M = 106,G = 109
磁盘操作
对扇区的访问时间有三个主要的部分:
- 寻道时间:为了读取某个目标扇区的内容,传动臂把读/写头首先定位到包含目标扇区的磁道上,所需时间即为寻道时间,约等于最大旋转时间。
- 寻道时间Tseek依赖于读写头以前的位置和转动臂在盘面上移动的速度。
- 旋转时间:定位到期望的磁道后,驱动器等待目标扇区的第一个位旋转到读/写头下。依赖于当读写头到达目标扇区时盘面的位置和磁盘旋转速度。
- 定位到期望的磁道后,驱动器等待目标扇区的第一个位旋转到读/写头下。
- 最大旋转时间 = 1/最大旋转数率
- 平均旋转时间 = (1/2) * 最大旋转时间。
- 传送时间:当目标扇区的第一个位位于读写头下时,驱动器就可以开始读或者写该扇区的内容。依赖于旋转速度和每条磁道的扇区数目。
- 平均传送时间 = (1/最大旋转数率) * (1/每磁道的平均扇区数)
内存可以看成字节数组、磁盘可以看成块数组
I/O总线比系统总线比存储器总线慢,但是它可以容纳种类繁多的第三方I/O设备。
- 通用串行总线USB:2.0最大带宽60MB/S,3.0最大带宽600MB/S
- 图形卡(适配器)
- 主机总线适配器
性能特性
- 顺序读和写(CPU按顺序访问逻辑磁盘块)性能相当,顺序读比顺序写稍快一点。
- 随机顺序访问逻辑块时,写比读慢一个数量级。
*读写性能差别是由底层闪存基本属性决定的。
优缺点
优点:
- 由半导体构成,没有移动的部件
- 随机访问时间比旋转磁盘要快、能耗低、结实
缺点
- 易磨损、更贵
DRAM和磁盘的性能滞后于CPU的性能
两种不同形式
空间局部性
时间局部性
有良好局部性的程序比局部性差的程序运行得更快
- 硬件层:局部性原理允许计算机设计者通过引入高速缓存存储器来保存最近被引用的指令和数据项,从而提高对主存的访问速度。
- 操作系统级:局部性原理允许系统使用主存作为虚拟地址空间最近被引用块的高速缓存,用主存来缓存磁盘文件系统中最近被使用的磁盘块。
- 应用程序中:例如,Web浏览器将最近被引用的文档放在本地磁盘上。
步长为k的引用模式
步长为1的引用模式:就是顺序访问一个向量的每个元素,有时也被称为顺序引用模式,它是程序中空间局部性常见和重要的来源。
一般来说,随着步长增加,空间局部性下降。
多维数组程序C语言中数组在存储器中是按照行顺序存放的,所以按照行优先顺序执行的代码的局部性要好于按列优先顺序的代码
重复引用同一个变量的程序有良好的时间局部性
对于具有步长为k的引用模式的程序,步长越小,空间局部性越好
对于取指令来说,循环有好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。
- 存储技术:不同的存储技术的访问时间差异很大,速度较快的技术每字节的成本要比速度较慢的技术高,而且容量较小,CPU和主存之间的速度差距在增大。
- 计算机软件:一个编写良好的程序倾向于展示出良好的局部性。
每一层存储设备都是下一层的缓存。
高速缓存与缓存:高速缓存cash是一个小而快速的存储设备,它作为存储在更大、更慢的设备中的数据对象的缓冲区域。使用高速缓存的过程称为缓存。
存储器层次结构的中心思想:对于每个k,位于k层的更快更小的存储设备作为位于k+1层的更大更慢的存储设备的缓存。
- 即每层存储设备都是下一层的“缓存”
数据总是以块大小为传送单元在第k层与第k+1层之间来回拷贝。任一对相邻的层次之间块大小是固定的,但是其他的层次对之间可以有不同的块大小。
缓存命中
缓存不命中
这时第k层缓存会从第k+1层缓存中取出包含d的那个块。如果第k层缓存已满,就可能会覆盖现存的一个块.
- 覆盖一个现存的块的过程称为替换/驱逐这个块。
- 被驱逐的块有时也称为牺牲块。
替换策略:决定替换哪个块
- 随机替换策略:随机选择一个牺牲块
- 最近最少被使用替换策略(LRU):选择最后被访问的时间距现在最远的块
缓存不命中的种类
利用时间局部性
利用空间局部性
CPU与主存之间插入
- L1高速缓存:位于CPU寄存器文件和主存之间,访问速度2-4个时钟周期
- L2高速缓存:位于L1高速缓存和主存之间,访问速度10个时钟周期
- L3高速缓存:位于L2高速缓存和主存之间,访问速度30或40个时钟周期
高速缓存存储器的典型总线结构
m:每个存储器地址有m位,形成M=2^m个不同的地址
S:这个数组中有S=2^s个高速缓存组
E:每个组包含E个高速缓存行
B:每个行是由一个B=2^b字节的数据块组成的
- 标记位:t=m-(b+s)个,唯一的标识存储在这个高速缓存行中的块
- 有效位:每个行有一个有效位,指明这个行是否包含有意义的信息
- 高速缓存的大小/容量C:C=S*E*B
指所有块的大小的和,不包括标记位和有效位。
高速缓存确定一个请求是否命中,然后取出被请求的字的过程,分为三步:
- 组选择
- 行匹配
- 字抽取
组选择
行匹配
判断缓存命中的两个充分必要条件:
- 该行设置了有效位
- 高速缓存行中的标记和w的地址中的标记相匹配
字选择
缓存不命中时的行替换
后运行中的直接映射高速缓存
CPU执行一系列读的步骤:
- 用索引位,确定针对的是哪个组
- 然后看对应的组是否有效:
- 如果无效则缓存不命中,高速缓存从存储器或低一层中取出要找的块,存储在对应的组中,再把有效位置1,返回需要的值
- 如果有效,再根据标记找是否有匹配的标记:如果有,则缓存命中,返回需要的值;如果没有,则替换行,返回。
直接映射高速缓存中的冲突不命中
原因:在块之间抖动,即这些块被映射到了同一个高速缓存组。
抖动:高速缓存反复的加载和驱逐相同的高速缓存块的组
解决方法:在每个数组的结尾放B字节的填充(B字节是一个块的长度,一行是一个块,相当于分开了行)从而使得他们映射到不同的组。
组选择
行匹配和字选择
组中的任意一行都可以包含任何映射到这个组的存储器块,所以告诉缓存必须搜索组中的每一行。
组相连高速缓存中不命中时的行替换:
组选择
行匹配和字选择
写命中时,更新低一层中的拷贝的方法
- 直写:立即将w的高速缓存块协会到紧接着的低一层中
- 缺点:每次写都会引起总线流量。
- 写回:只有当替换算法要驱逐更新过的块时,才写到紧接着的低一层中。
- 优点:符合局部性原理,显著的减少总线流量
- 缺点:增加了复杂性,必须为每个高速缓存行维护一个额外的修改位
写不命中的处理方法
- 写分配(对应写回):加载相应的低一层中的块到高速缓存中,然后更新这个高速缓存块。
- 非写分配(对应直写):避开高速缓存,直接把这个字写在低一层中。
性能
- 不命中率 = 不命中数量/引用数量
- 命中率 = 1 - 不命中率
- 命中时间:从高速缓存传送一个字到CPU所需的时间,包括组选择,行匹配,字抽取的时间。
- 不命中处罚:因为不命中所需要的额外的时间
具体影响
- 高速缓存大小:较大的高速缓存可能会提高命中率,但使大存储器运行的更快是更难一些的。
- 块大小:较大的块能利用程序中可能存在的空间局部性,帮助提高命中率;但块越大意味着高速缓存行较少,损害时间局部性。
- 相联度:相联度较大(E值较大)优点是降低了高速缓存由于冲突不命中出现抖动的可能性,但成本较高。
- 写策略:直写高速缓存易实现,而且能使用独立于高速缓存的写缓冲区,用来更新存储器,不命中开销小。写回高速缓存引起的传送比较少,允许更多的到存储器的宽带用于执行DMA的I/O设备。越下层,越可能用写回而不是直写。
标签:
原文地址:http://www.cnblogs.com/baka/p/4912356.html