zoukankan      html  css  js  c++  java
  • 存储器的层次结构学习记录

    重要知识点

    三种常见的存储技术

    RAM,ROM,磁盘。

     

    随机访问存储器(RAM)

    • 分类:静态RAM(SRAM)和动态RAM(DRAM)。
    • 两类RAM区别:静态RAM比动态RAM更快,但也贵得多且功耗更大。
    • SRAM的特点:SRAM每个位都存储在一个双稳态的存储器单元里,因此其存储单元具有双稳态特性,只要有电,它就会永远保持它的值。即使有干扰,例如:电子噪音,来扰乱电路,当干扰消除时,电路就会恢复到稳定值。
    • DRAM的特点:DRAM将每一个位存储为对每个电容的充电。所以其存储器单元对干扰非常敏感。当电容的电压被扰乱之后,它就永远不会恢复了。暴露在光线下会导致电容电压改变。

     

    非易失性存储器(ROM)

      RAM断电会丢失它们的信息,所以它们是易失的,而ROM即使断电后也仍然保存着它们的信息。由于历史原因,虽然ROM中有的类型即可以读也可以写,但是它们整体上都称为只读存储器。ROM是以它们能够被重编程(写)的次数和它们进行重编程所用的机制进行区分。

    • PROM(Programmable ROM)只能被编程一次。PROM的每个存储单元都有一种熔丝,它只能用高电流熔断一次。
    • EPROM(Erasable Programmanble ROM 可擦写可编程ROM)能够擦除和重新编程的数量级能够达到1000次。
    • EEPROM(Electrically Erasable PROM 电子可擦除ROM)能够被编程的次数的数量级可以达到次。
    • FLASH(flash memory 闪存)是一类非易失性存储器,基于EEPROM,它已经成为了一种重要的存储技术。

     

    访问主存

      数据流通过称为总线的共享电子电路在处理器和DRAM主存之间来来回回。每次CPU和主存之间的数据传送都是通过一系列的步骤来完成的,这些步骤称为总线事物。

    • 读事物:从主存传送数据到CPU。
    • 写事物:从CPU传送事物到主存。
    • 总线:一组并行的导线,能携带地址、数据和控制信号。

      |--可分为数据总线、控制总线、地址总线、系统总线、存储总线、I/O总线等。如下图所示:

     

    磁盘存储

      磁盘是广为应用的保存大量数据的存储设备,存储数据的数量级可以达到几百到几千千兆字节。

      磁盘由盘片构成的。每个盘片有两面或者称为表面,表面覆盖着磁性记录材料。盘片中央有一个可以旋转的主轴,它使得盘片以固定的旋转速率旋转,通常是5400~15000转每分钟。磁盘通常包含一个或多个这样的盘片,并封装在一个密封的容器内。

      磁盘的每个表面是由一组称为磁道的同心圆组成的。每个磁道被划分为一组扇区。每个扇区包含相等数量的数据位(通常是512字节),这些数据编码在扇区上的磁性材料中。扇区之间由一些间隙分隔开,这些间隙中不存储数据位。间隙存储用来标识扇区的格式化位。磁盘制造商通常用术语柱面来描述多个盘片驱动器的构造,这里,柱面是所有盘片表面上到主轴中心的距离相等的磁道距离的集合。

     

    磁盘容量

    一个磁盘上可以记录的最大位数称为它的最大容量,或者简称为容量。磁盘容量是由以下因素决定的:

    • 记录密度(位/英寸):磁盘一英寸的段中可以放入的位数。
    • 磁道密度(道/英寸):从盘片中心出发半径上一英寸的段内可以有的磁盘数。
    • 面密度(位/平方英寸):记录密度与磁道密度的乘积。

    计算公式如下:

     

    磁盘操作

    磁盘用读/写头来读写存储在磁性表面的位,而读写头连接到一个传动臂的一端。

    寻道:通过沿着传动臂,驱动器将读/写头定位在盘面上的任何磁道上。

        磁盘以扇区大小的块来访问数据。对扇区的访问时间有三个主要的部分:

    1. 寻道时间:为了读取某个目标扇区的内容,传动臂首先将读/写头定位到包含目标扇区的磁道上。移动传动臂在盘面上所需时间称为寻道时间。
    2. 旋转时间:一旦读/写头定位到了期望的磁道,驱动器等待扇区的第一个位旋转到读/写头下。这个步骤的性能依赖于当读/写头到达目标磁道时盘面的位置和磁盘的旋转速度。在最坏的情况下,读写头刚刚错过了目标扇区,必须等待磁盘转一整圈。因此最大旋转延迟如下:

    3. 传送时间:当目标扇区的第一个位位于读/写头下时,驱动器就可以开始读或者写该扇区的内容了。一个扇区的传送时间依赖于旋转速度和每条磁道的扇区数目。因此,我们可以粗略第估计一个扇区以秒为单位的平均传送时间如下:

     

    逻辑磁盘块

      为了对操作系统隐藏磁盘构造的复杂性,现代磁盘将它们的构造呈现为一个简单的视图,一个B个扇大小的逻辑块序列,编号为0,1,…,B-1。磁盘中有一个小的硬件/固件设备,称为磁盘控制器,维护着逻辑块号和实际(物理)磁盘扇区之间的映射关系。

     

    操作系统的I/O操作的具体过程

    例:当读一个磁盘扇区的数据到主存,操作系统会发送一个命令道磁盘控制器,让它读某个逻辑块号。控制器上的固件执行一个快速表查找,将一个逻辑块号翻译成一个(盘面,磁道,扇区)的三元组,这个三元组唯一地标识了对应的物理扇区,控制器上的硬件解释这个三元组,将读/写头移动到适当的柱面,等待扇区移动到读/写头下,将读/写头感知到的位放到控制器上的一个小缓冲区中,然后将它们拷贝到主存中。

     

    局部性原理

      一个编写良好的计算机程序常常具有良好的局部性。也就是说,它们倾向于引用临近与其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。这种倾向性被称为局部性原理。

      局部性通常有两种不同的形式:

    • 时间局部性:在一个具有良好时间局部性的程序中,被引用过一次的存储器位置很可能在不远的将来多次引用。
    • 空间局部性:在一个具有良好的空格局部性的程序中,如果一个存储器位置被引用一次,那程序可能在不远的将来引用附近一个位置的存储器。

      数据引用局部性:对于具有步长为k的引用模式的程序,步长越小,空间局部性越好。具有步长为1的引用模式的程序有很好的空间局部性。在存储器以大步长跳来跳去的程序空间局部性会很差。

      取指令局部性:对于取指令来说,循环有好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。

     

    存储器的层次结构

    存储器结构的中心思想:对于每一个k,位于k层的更小更快的存储设备作为位于k+1层的更大更慢的存储设备的缓存。

     

    高速缓存结构

      若一个计算机系统,其中每个存储器地址有m位,形成M=个不同的地址。如下图所示,这样的一个机器的高速缓存被组织成一个S=个高速缓存组的数组。每个数组包含E个高速缓存行。每一行是由一个B=字节的数据块组成的,一个有效位指明这个行是否包含有意义的信息,还有t=m-(b+s)个标记位(是当前块的存储器地址的位的一个子集),它们唯一地标识存储在这个高速缓存行中的块。

        高速缓存确定一个请求是否命中,然后抽取出被请求的字的过程,分为三步:1)组选择,2)行匹配,3)字抽取。

        分类:

        1.直接映射高速缓存:每组只有一行(E=1)的高速缓存。

        2.组相连高速缓存:每个组都保存多于一行的高速缓存行(1<E<C/B)。

        3.全相连高速缓存:由一个包含所有高速缓存行的组(即E=C/B)组成。

     

    遇到的问题及解决方法

    问题:

        磁盘为什么需要转两圈才能读完一个扇区?

    解决方法:

        在博客园提问。因为磁盘有两面。

     

    家庭作业

    6.29

    由练习题6.13图得

    组7中命中的十六进制存储器地址为:

    (1101111011100)=0x1BDC

    (1101111011101)=0x1BDD

    (1101111011110)=0x1BDE

    (1101111011111)=0x1BDF

    组5中命中的十六进制存储器地址为:

    (0111000110100)=0x0E34

    (0111000110101)=0x0E35

    (0111000110110)=0x0E36

    (0111000110111)=0x0E37

    组4中命中的十六进制存储器地址为:

    (1100011110000)=0x18F0

    (1100011110001)=0x18F1

    (1100011110010)=0x18F2

    (1100011110011)=0x18F3

    (0000010110000)=0x00B0

    (0000010110001)=0x00B1

    (0000010110010)=0x00B2

    (0000010110011)=0x00B3

    组2中没有命中的存储器地址。

     

    6.30

    A.

    CT

    CT

    CT

    CT

    CT

    CT

    CT

    CT

    CI

    CI

    CO

    CO

     

    B.

    操作

    地址

    命中?

    读出的值(或未知)

    0x409

    -

    0x40A

    -

    0x833

    0xD0

     

     

    参考资料

    《深入理解计算机系统》第6章存储器层次结构。

     

  • 相关阅读:
    图片延迟加载
    Python开发【第一篇】:初识Python
    JavsScript+dom
    Django学习系列18:使用迁移创建生产数据库
    Django学习系列17:在模板中渲染待办事项
    Django学习系列16:处理完POST请求后重定向
    Django学习系列15:把POST请求中的数据存入数据库
    Django学习系列14:第一个数据库迁移
    Django学习系列13:Django ORM和第一个模型
    Django学习系列12:把Python变量传入模板中渲染
  • 原文地址:https://www.cnblogs.com/Ntime/p/4915279.html
Copyright © 2011-2022 走看看