zoukankan      html  css  js  c++  java
  • 存储器层次结构——存储器类型

    简介:描述基本的存储器知识,介绍基本的存储器类型和差异。摘自《深入理解计算机系统》CSAPP

    一:存储技术概述

      存储器系统(memory system)是一个具有不同容量、成本和访问时间的存储设备的层次结构。

      CPU寄存器:保存这最常用的数据。

      高速缓存存储器(cache memory):靠近CPU的小的、快速的存储器,作为一部分存储的主存储器中数据和指令的缓冲区域。

      主存储器:缓存存储在容量较大的、慢速磁盘上的数据,

      磁盘:常常又作为存储在网络连接的其他机器上的数据的数据。

    二: 存储器分类

      2.1 随机访问存储器(RAM: Random-Access Memory)

        2.1.1静态RAM,一般用作高速缓存存储器

          SRAM将每个位存储在一个双稳态(bistable)的存储器单元里面,每个单元用一个六晶体管电路来实现。只要通电后就可以永远保持它的值,即使有干扰来扰乱电压,当干扰消除是电路就会恢复到稳定值。

                          

        2.1.2.动态RAM (DRAM)

          DRAM每个单元由一个电容和一个访问晶体管组成。可看成每个存储位为对一个电容的充电,这个电容非常小,通常只有大约30毫微微法拉(femtofarad)--30*10-15 法拉。

          这个电容的电压被扰乱后就永远不会恢复了。 暴漏在光线下回导致电容电压改变。

          很多原因会导致漏电, 使得DRAM单元在10-100毫秒时间内失去电荷。幸运的是计算机的运行时钟周期是以纳秒来衡量的,所以相对时间还是比较长的。内存系统必须周期性的通过读出,然后重写来刷新每一位。

        2.1.3 传统的DRAM

          DRAM芯片的单元被分成d个超单元,每个超单元由w个DRAM单元组成,一个d*w单元的DRAM存储了dw位信息。超单元被组织成一个r行c列的方形阵列,r*c=d。每个超单元由形似(i,j)的地址。

                     

          每个DRAM芯片连接到一个内存控制器电路,内存控制器一次读或写w位到DRAM芯片(即一个超单元大小),通过i,j确定的行列地址操作对应的超单元。

          如读操作时:每次操作内存控制器发送行地址i给DRAM芯片,DRAM芯片则将第i行复制到内部行缓冲区,接着内存控制器发送列地址j,DRAM芯片则从内部行缓冲去拷贝出(i,j)发送到内存控制器

                  

        2.1.4 内存模块

          DRAM芯片封装在内存模块(memory modul)上,它插到主板的扩展槽上(能买到的内存条)。

          以Core i7为例,使用8个64Mbit(兆*位)的8M(r) * 8(c)的DRAM芯片,共64MBit(兆*字节),8个芯片编号0-7.每个超单元存储一个字节(8bit),而相应的地址(i,j)在8个芯片中对应地址的超单元取出8个字节组合成一个64bit的字。

          

        2.1.5增强的DRAM

          厂家为了跟上迅速提高的处理器存取速度,不断的更新DRAM。不过这些都是基于基本的DRAM单元,在访问方式上进行速度提升。  

        • 快页模式DRAM(Fast Page Mode DRAM, FPM DRAM), 传统的DRAM将一行复制到缓冲区后使用一个后其余丢弃,即使再次读取同一行的下一个超单元也需要重新复制此行到缓存区,即每一个超单元需要下发一个RAS/CAS.;快页模式允许同一行连续超单元读取不需要重新复制行到缓存区,即读取(i,1) (i,2) (i,3)位置的超单元可以下发一个为i的RAS和3个CAS。
        • 扩展数据输出DRAM(Extended Data Out DRAM, EDO DRAM),FPM DRAM的一个增强模式,允许各个CAS信号在时间上更紧密一些。 传统的DRAM和FPM DRAM在存取每一bit数据时必须输出行地址和列地址并使其稳定一段时间后,然后才能读写有效的数据,而下一个bit的地址必须等待这次读写操作完成才能输出。EDO DRAM不必等待资料的读写操作是否完成,只要规定的有效时间一到就可以准备输出下一个地址,由此缩短了存取时间,效率比FPM DRAM高20%—30%。
        • 同步DRAM(Synchronous DRAM, SDRAM), 是有一个同步接口的动态随机存取內存(DRAM)。通常DRAM是有一个异步接口的,这样它可以随时响应控制输入的变化。而SDRAM有一个同步接口,在响应控制输入前会等待一个时钟信号,这样就能和计算机的系统总线同步。(不太懂,反正是比异步快了)
        • 双倍速率同步DRAM(Double Data Rate DRAM, DDR SDRAM), 是对SDRAM的增强,使用上下两个时钟沿(数电知识)作为控制信号,比仅使用一个时钟沿的SDRAM快了一倍。不同的DDR是用提高有效带宽的很小的预取缓冲区的大小来划分的:DDR(2位),DDR2(4位),DDR3(8位)。
        • 视频RAM(Video RAM, VRAM),  用在图形系统的帧缓冲区中。与FPM基本思想相同,两个主要区别:一:VRAM输出是通过对缓冲区内容进行移位得到的,二: VRAM允许对内存并行读写

      2.2 只读存储器ROM

        如果断电RAM的数据都会丢失,所以RAM在这个意义上是易失的(volatile),非易失存储器(nonvolatile memory)则在断电后仍能保存数据。

        由于历史原因,ROM虽然也可以读写,但是他们整体上被称为只读存储器(Read-Only memory)。

        ROM以重写次数和对它进行重编程的机制来区分

        2.2.1 PROM(Program ROM,可编程ROM)

          只能编程一次。PROM每个存储单元有一种熔丝(fuse),只能用高电流熔断一次。

        2.2.2 可擦写可编程(Erasable Programmable ROM, EPROM)

          有一个透明的石英窗口,允许光到达存储单元。紫外线照射存储单元后EPROM会被清0,对EPROM进行编程写1的操作是通过特殊设备完成的。可被擦写重编程次数数量级可以达到1000次。

        2.2.3 电子可擦除PROM(Electriccally Erasable Programmable ROM, EEPROM  )

          类似EPROM,但是它不需要一个物理上独立的编程设备,因此可以直接在印制电路板上进行编程。 EEPROM可重编程数量可达到10 次。

        2.2.4 闪存(flash memory)

          非易失性存储器,基于EEPROM。 SSD是一种基于闪存的磁盘存储器

      2.3 磁盘存储

        磁盘读取数据是毫秒级,比DRAM读慢了10万倍,比SRAM读慢了100万倍。

        2.3.1  磁盘构造

          1. 磁盘由一个或多个叠放在一起的盘片(platter)构成封装在一个密封的容器中。 整个装置通常被称之为磁盘驱动器(disk driver)。

          2. 每个盘片有两面或者称之为表面(surface)。表面覆盖着磁性记录材料。

            每个表面由一组称为磁道(track)的同心圆组成。

            每个磁道被划分为一组扇区(sector)。每个扇区包含相同数量的数据位(一般512字节)。

            扇区之间由一些间隙(gap)分隔开,这些间隙不存储数据位,存储用来标识扇区的格式化位。

          3.盘片中央有一个可以旋转的主轴(spindle) ,它使得盘片以固定的旋转速率(rotational tare)旋转。

          4. 磁盘制造商一般用术语柱面(cylinder)来描述多个盘片驱动器的构造。柱面指所有盘片表面上到主轴中心的距离相等的磁道的集合。

                

          2.3.2 磁盘容量

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

            1.记录密度(recording density)(位/英寸): 磁道一英寸的段中放入的位数。

            2. 磁道密度(track density)(道/英寸): 从盘片中心出发半径上一英寸可以存放的磁道数。

            3.面密度(areal density)(位/平方英寸): 记录密度与磁道密度的乘积。

          可以提高面密度来提高磁盘的容量,而面密度每隔几年几乎就会翻倍。

          最初的磁盘是在面密度很低的时候设计的,将每磁道分为数目相同的扇区,扇区数目由最内部磁道决定,这样越靠外间隙(gap)就会越大,在磁道密度越来越大的今天将会变得十分浪费空间。

          因此现代大容量磁盘使用多分区记录(multiple zone recording)技术,柱面集合被分为不相交的子集,称为记录区(recording zone),每个区包含一组连续的柱面,区中的柱面磁道含有相同数量的扇区。

          磁盘容量计算参考书中公式:

          

        2.3.3 磁盘操作

        •   硬件组成:磁盘用读写头(read/write head)来读写存储在磁盘表面的数据,而读写头连接到一个传动臂(actuator arm)一端。
        •   寻道(seek): 驱动器通过沿着半径轴前后移动传动臂,将读写头定位到磁道上的扇区。
        •   
        •   读写头冲撞(head crash) : 传动臂末端的读写头在磁盘表面大约0.1微米处的一层气垫上飞翔,速度大约80KM/h。如果读写头碰到细小的微尘将会停下来撞到表面。

        2.3.4 磁盘访问时间(access time)

        • 寻道时间(seek time): 为了读取某个扇区的内容,传动臂移动读写头到目标扇区的磁道上的时间。依赖与读写头的位置和传动臂在表面上的移动速度。通常3~9ms,最大时间可达20ms。
        • 旋转时间(rotational time):读写头到达目标磁道后,等待扇区第一个位旋转到读写头下的时间。依赖与读写头到达时扇区的位置和旋转速度。平均旋转时间时1/RPM的一半。
        • 传送时间(transfer time):当扇区第一位到达读写头下方时就可以进行传送了,时间依赖与扇区的大小和盘片旋转速度。
        •  

         2.3.5 逻辑磁盘块

          现代磁盘逻辑复杂,读取磁盘数据对操作系统而言太过复杂。所以现代磁盘进行封装后对操作系统呈现了一个简单视图:一个由B个扇区大小的逻辑块序列,编号0.1.。。。B-1.磁盘中封装一个磁盘控制器,维护逻辑块和实际扇区的对应关系。

          当I/O操作一个磁盘数据时,操作系统发送命令到磁盘控制器,控制器将逻辑块通过快速表查询翻译成一个(盘面,磁道,扇区)的三元组,将读写头移动到特定地址,并将感知到的位存放到控制器的缓冲区,然后将它复制到主存中。

          

       2.4 固态硬盘(Solid State Disk, SSD)

        固态硬盘时基于闪存的存储技术,由一个或多个闪存芯片和闪存翻译层(flash translation layer)组成,闪存芯片替代传统的旋转磁盘的机械驱动器(盘片组),闪存翻译层是一个固件设备,相当于磁盘控制器。

          

    三:存储器层次结构

  • 相关阅读:
    Vue使用watch监听一个对象中的属性
    小程序 显示对话框 确定-取消
    【微信小程序】 wx:if 与 hidden(隐藏元素)区别
    vue项目移植tinymce踩坑
    XMLHttpRequest.withCredentials 解决跨域请求头无Cookie的问题
    appJSON["window"]["navigationBarTextStyle"] 字段需为 black 或 white
    Java写 插入 选择 冒泡 快排
    编码表理解
    Centos yum安装java jdk1.8
    Java Hibernate和.Net EntityFramework 如何在提交事务之前 就拿到需要新增实体的Id
  • 原文地址:https://www.cnblogs.com/edver/p/13403315.html
Copyright © 2011-2022 走看看