zoukankan      html  css  js  c++  java
  • 深入理解计算机系统之存储器层次结构学习笔记

    一、存储技术

      (一)随机访问存储器

         随机访问寄存器(RAM)分为静态随机访问寄存器(SRAM)和动态随机访问寄存器(DRAM)。静态RAM可以作为高速缓存寄存器,动态RAM可以用作主存以及图形系统的帧缓冲区。静态RAM将每一个位存储在一个双稳态的存储器单元里,构成静态RAM 的电路可以无限期的保持在两个不同的电压配置或状态之一。动态RAM将每一个位存储为对电容的充电,所以动态RAM要比静态RAM对干扰的敏感度更高。构成动态RAM的电路被干扰后就不会恢复了。

           1 传统的DRAM

      常规DRAM芯片中的单元被分成了d个超单位(supercall),每个超单位都是由w个DRAM单元组成的。一个d*w的DRAM总共存储了dw位信息。超单元被组织成一个r行r列的长方形矩阵列,rc=d。每个DRAM被连接到存储控制器这个电路,该电路能一次传w位到每个DRAM芯片或一次从每个DRAM芯片传出w位。下图是一个128位16*8的DRAM芯片的高级视图。

    要读取图中的超单元(2,1),存储控制器将把2发送出去,DRAM的响应是将2行的整个内容都拷贝到内部缓冲区。接下来,存储控制器将发送1,DRAM的响应是从缓冲区中拷贝出单元(2,1)中的八位并将它们发送到存储控制器。

        2 存储器模块

     DRAM 芯片包装在存储器模块中,它是直接插到主板的扩展槽上的,常见的包装包括168个引脚的双列直插存储器模块,其以64位为块传送数据到存储控制器和从该控制器中传出数据,还包括72个引脚的单列直插存储器模块,它是以32位为块传送数据的。

        3增强的DRAM

     快页模式DRAM(FPM DRAM)、扩展数据输出DRAM(EDO DRAM)、双倍数据速率同步DRAM (DDR SDRAM)、Rambus DRAM(RDRAM)、视频RAM

        4 非易失性存储器

    非易失性存储器不同于DRAM与SRAM,它在断电后也仍然可以保存它的信息。ROM和闪存就是非易失性存储器。

      4.1 ROM以能够被重编程的次数和它们进行重编程所用的机制来区分的

    可编程ROM (PROM):只能被编程一次。

    可擦写可编程ROM(EPROM):EPROM能够被擦写和重编程的次数的数量级可以达到1000次。

    电子可擦除PROM(EEPROM):EEPROM能够被擦写和重编程的次数的数量级可以达到100000次。

       4.2

    闪存:闪存是基于EEPROM的非易失性存储器,是一种较为普遍的非易失性存储器。

     5 访问主存

      数据流通过称为总线的共享电子电路在处理器和DRAM主存之间来来回回。每次CPU与主存之间的数据都是由总线事务来完成的,总线事务包括读事务和写事务。

    (二)磁盘存储

    磁盘是用来保存大量数据的存储设备,能比基于RAM的存储器存更多的数据,但是读取数据的速度却远远低于基于RAM的存储器。

    1 磁盘构造

    磁盘是由盘片构成的。每个盘片上是由一组成为磁道的同心圆组成的。每个磁道被划分为一组扇区。扇区之间存在间隙。

    2 磁盘容量

    磁盘容量是由以下因素决定的:记录密度、磁道密度、面密度

    3磁盘操作

    传动臂通过寻道操作将读写头定位到相应的磁道上。磁盘以扇区大小的块来访问数据,对于扇区的访问时间有三个部分:寻道时间、旋转时间和传送时间。

    4逻辑磁盘块

    现代磁盘构造呈现为一个简单的视图,一个B个扇区大小的逻辑块的序列,编号为0,1......,B-1.磁盘中有一个小的硬件/固件设备,称为磁盘控制器,维护着逻辑块号和实际磁盘扇区的映射关系。

    5连接到I/O设备

    像图形卡、监视器、鼠标、键盘和磁盘这样的I/O设备,都是通过I/O总线连接到CPU和主存的。

    6访问磁盘

    CPU使用一种称为存储器映射I/O的技术向I/O设备发出命令。在使用存储器映射I/O的系统中,地址空间有一块地址是为与I/O设备通信保留的,每个这样的地址称为一个I/O端口。当一个设备连接到总线时,它与一个或多个端口相关联。

    (三)固态硬盘

     固态硬盘(SSD)是一种基于闪存的存储技术。一个SSD包由一个或多个闪存芯片和闪存翻译层组成,闪存芯片替代传统旋转磁盘中的机械驱动器,而闪存翻译是一个硬件/固件设备,扮演与磁盘控制器相同的角色,将对逻辑块的请求翻译成对底层物理设备的访问。

    二 局部性  

    一个计算机程序通常具有良好的局部性,也就是说,它们倾向于引用于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。局部性通常有两种不同的形式:时间局部性和空间局部性。

      对程序数据引用的局部性

    一个连续向量中,每隔k个元素进行访问,就被称为步长为k的引用模式。步长为的引用模式是程序中空间局部性常见和重要的来源。一般而言,随着步长的增加,空间局部性下降。

    三 存储器层次结构

    所有的现代计算机系统中都使用存储器结构层次来使得软件和硬件互相补充。

    一般而言,从高层往底层走,存储设备变得更慢、更便宜和更大。

    (一)存储器层次结构中的缓存

    一般而言,高速缓存是一个小而快速的存储设备,它作为存储在更大也更慢的存储设备中的数据对象的缓冲区域。使用高速缓存的过程称为缓存。

    (二)存储器层次结构概念小结

    概括来说,基于缓存的存储器层次结构行之有效,是因为较慢的存储设备比较快的存储设备更便宜,还因为程序往往展现局部性:利用时间局部性和利用空间局部性。

    四 高速缓存存储器

    早期计算机系统的存储结构只有三层:CPU寄存器、DRAM主存储器和磁盘存储。不过,由于CPU和主存之间逐渐增大的距离,系统设计者被迫在CPU寄存器文件和主存之间插入了一个小的SRAM高速缓存存储器,称为L1高速缓存。随着CPU和主存之间的性能差距不断增大,系统设计者在L1高速缓存更大的高速缓存,称为L2高速缓存。有些现代计算机还包括一个更大的高速缓存,称为L3缓存。

    (一)通用的高速缓存存储器结构

    一般而言,高速缓存的结构可以用元组(S,E,B,m)来描述。高速缓存的大小(或容量)C指的是所有块的大小的和。标记位和有效位不包括在内。因此,C=S*E*B。

    (二)直接映射高速缓存

    根据E(每个组的高速缓存行数)高速缓存被分为不同的类。每个组只有一行(E=1)的高速缓存称为直接映射高速缓存。

    (三)组相联高速缓存

    直接映射高速缓存中冲突不命中造成的问题是源于每个组只有一行这个限制,组相联高速缓存放松了这条限制,所以每个组都保存多余一个的高速缓存行。

    (四)全相联高速缓存

    一个全相联高速缓存是由一个包含所有高速缓存行的组。

     

     

      

  • 相关阅读:
    排行榜 和 zset
    SpringBoot使用@ServerEndpoint无法依赖注入问题解决(WebSocket
    idea 全局内容搜索和替换
    fiddler不能监听 localhost和 127.0.0.1的问题
    fiddle4 弱网测试
    nginx代理websocket连接上限
    spring boot Websocket
    SpringBoot----跨域配置
    注解@Slf4j的使用
    word 转 pfd
  • 原文地址:https://www.cnblogs.com/xxp17457741/p/6618293.html
Copyright © 2011-2022 走看看