6.1储存技术

随机访问储存器

分为两类:静态(SRAM)和动态(DRAM)

*静态速度更快,更昂贵。

1.静态RAM

SRAM将每个位存储在一个双稳态的存储单元中
双稳态特性,只要有电,就会永远保持它的值。
比DRAM更昂贵,功耗更大

2.动态RAM

对干扰敏感
应用:数码照相机和摄像机中的传感器

3.传统DRAM

DRAM芯片中的单元被分成d个超单元,每个超单元都由w个DRAM单元组成。(共存储dw位信息)

超单元:
被组织成r行c列的长方形阵列。(rc=d)
每个超单元有形如(i,j)的地址,i-行,j-列。

信息通过称为引脚的外部连接器流入和流出芯片。

存储控制器:
每个DRAM芯片被连接到称为存储控制器的电路。
存储控制器可以一次性传入/传出w位。

为读出超单元(i,j)的内容存储控制器将行地址i发送给DRAM,然后是列地址j。

RAS:行地址i
CAS:列地址j

*RAS,CAS请求共享DRAM地址引脚。

4.存储器模块

芯片包装在存储器模块中。

5.增强的DRAM

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

6.非易失性存储器

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

ROM有PROM,EPROM,E2PROM,FLASH。

PROM :只能被编程一次
EPROM 可擦鞋可编程ROM (数量级达到1000次)
E2PROM/EEPROM (数量级达到10^5次)
FLASH 闪存file:///C:/Users/apple/Desktop/1.png

7.访问主存

总线:
数据流通过 总线 的共享电子电路在处理器和DRAM主存之间来来回回。

总线事物:CPU与主存之间的数据传送步骤。
读事物:主存->CPU
写事物:CPU->主存

总线是一组并行的导线,能携带地址,数据和控制信号。

I/O桥

I.movl A, %eax

地址A的内容加载到寄存器%eax中。
CPU芯片上称为总线接口电路上发起的读事务。
三个步骤:

1)CPU将地址A放到系统总线上。I/O桥将信号传递到存储器总线。
2)主存感觉到存储器总线上的地址信号,从存储器总线读地址,从DRAM取数据字,并将数据写到存储器总线。I/O桥将存储器总线信号翻译成系统总线信号,然后沿着系统总线传递。
3)CPU感觉到系统总线上的数据,从总线上读数据,并将数据拷贝到寄存器%eax。

II.movl %eax, A

CPU发起写事务。
三个步骤:

1)CPU将地址放到系统总线上,存储器从存储总线读出地址,并等待数据到达。
2)CPU将%eax中的数据字拷贝到系统总线。
3)主存从存储器总线读出数据字,并将这些位存储到DRAM中。

磁盘存储

1.磁盘构造

磁盘由盘片构成,每个盘片有两面或者称为表面。盘片中间有一个可以旋转的主轴,使得盘片以固定的旋转速率旋转。

磁道:

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

扇区:

每个磁道被划分为一组扇区,每个扇区包含相等数量的数据位(通常512字节)

间隙:

扇区之间有一些间隙,间隙不储存数据位。
间隙存储用来标识扇区的格式化位。

柱面:

所有盘片表面上到主轴中心的距离相等的磁道的集合。

磁盘驱动器:

磁盘是由一个或多个叠放在一起的盘片组成的,它们被密封在一个包装里。这整一个装置称为~

2.磁盘容量
由以下三点决定:

记录密度,磁道密度,面密度。

3.磁盘操作

寻道:

通过沿着半径轴前后移动这个转动壁,驱动器可以将读/写头定位在盘面上的任何磁道上。

磁盘以扇区大小的块来读写数据。

对扇区的访问时间主要分三个部分:

寻道时间、旋转时间、传送时间

4.逻辑磁盘块
内存可以看成字节数组、磁盘可以看成块数组

磁盘控制器:

维护逻辑块号和实际(物理)磁盘之间的映射关系。

总线
数据总线、控制总线、地址总线

    系统总线包含有三种不同功能的总线,即数据总线DB(Data Bus)、地址总线AB(Address Bus)和控制总线CB(Control Bus)
  • 数据总线DB用于传送数据信息。数据总线是双向三态形式的总线,即他既可以把CPU的数据传送到存储器或I/O接口等其它部件,也可以将其它部件的数据传送到CPU。数据总线的位数是微型计算机的一个重要指标,通常与微处理的字长相一致。例如Intel 8086微处理器字长16位,其数据总线宽度也是16位。需要指出的是,数据的含义是广义的,它可以是真正的数据,也可以指令代码或状态信息,有时甚至是一个控制信息,因此,在实际工作中,数据总线上传送的并不一定仅仅是真正意义上的数据。

  • 地址总线AB是专门用来传送地址的,由于地址只能从CPU传向外部存储器或I/O端口,所以地址总线总是单向三态的,这与数据总线不同。地址总线的位数决定了CPU可直接寻址的内存空间大小,比如8位微机的地址总线为16位,则其最大可寻址空间为216=64KB,16位微型机的地址总线为20位,其可寻址空间为220=1MB。一般来说,若地址总线为n位,则可寻址空间为2n字节。
    控制总线CB用来传送控制信号和时序信号。控制信号中,有的是微处理器送往存储器和I/O接口电路的,如读/写信号,片选信号、中断响应信号等;也有是其它部件反馈给CPU的,比如:中断申请信号、复位信号、总线请求信号、限备就绪信号等。因此,控制总线的传送方向由具体控制信号而定,一般是双向的,控制总线的位数要根据系统的实际控制需要而定。实际上控制总线的具体情况主要取决于CPU

系统总线

用来传送数据信息的信号线,这些数据信息可以是原始数据或程序。数据总线来往于CPU、内存和I/O设备之间,其特点是:

(1).双向传输,三态控制:即可以由CPU送往内存或I/O设备,也可以由内存或I/O设备送往CPU。
(2).数据总线的数目称为数据宽度(由于一条数据线一次可传送一位二进制数,故也称位数),数据总线宽度决定了CPU一次传输的数据量,它决定了CPU的类型与档次。

I/O 总线

是用来传送控制信息的信号线,这些控制信息包括CPU对内存和I/O接口的读写信号,I/O接口对CPU提出的中断请求或DMA请求信号,CPU对这些I/O接口回答与响应信号,I/O接口的各种工作状态信号以及其他各种功能控制信号。控制总线来往于CPU、内存和I/O设备之间,其特点是:

在单向、双向、双态等种形态,是总线中最复杂、最灵活、功能最强的,其数量、种类、定义随机型不同而不同。

5.访问磁盘

CPU使用一种称为存储器映射I/O的技术来向I/O设备发出命令。

I/O端口:

地址空间中有一块地址是为了与I/O设备通信保留的。每一个这个的地址称为一个~。

直接存储访问:

设备可以自己执行或写总线事物,而不需要CPU干涉的过程。

这种数据传送称为DMA传送。

基本思想:中断会发信号到CPU芯片的一个外部引脚上。

局部性

局部性原理:

一个编写良好的计算机程序,更趋向于引用邻近于其他最近引用过的数据项,或者最近引用过的数据本身。这种倾向性,被称为~

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

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

我们称步长为1的引用模式为顺序引用模式。一个连续向量中,每隔k个元素进行访问,就被称为步长为k的引用模式。
一般来说,随着步长的增加,空间局部性下降。

代码区别于程序数据的一个重要的属性是在运行时它是不能被修改的。

评价一个程序中局部性的简单原则:

重复引用同一个变量的程序有良好的时间局部性
对于步长为K的引用模式的程序,步长越小,空间局部性越好。
对取指令来说,循环有很好的时间和空间局部性。循环体越小,循环次数越多,局部性越好。

存储器层次结构

在一个典型的存储器层次结构中,从高层往底层走,存储设备变得更慢,更便宜,更大。

缓存

使用高速缓存的过程

缓存命中/缓存不命中

当程序需要第k+1层的某个数据对象d时,它首先在当前存储在第k层的一个块中,查找d。如果d刚好缓存在第k层中,那么就是我们所说的缓存命中,不然就是缓存不命中。

覆盖一个现存的块的过程称为替换,或者驱逐这个块。这个被驱逐的块称为牺牲块。决定该替换哪个块是由缓存的替换策略来控制的。

缓存不命中的种类

强制性不命中(第k层缓存为空)
冲突不命中(有些对象会映射到同一个缓存块,缓存会一直不命中)

中心思想:

每层存储设备都是下一层的“缓存”

高速缓存存储器

高速缓存结构(S,E,B,m):高速缓存组、高速缓存行、块

考虑一个计算机系统,其中每个存储器地址有m位,形成M=2^m个不同的地址
高速huanc 被组织为一个有S=2^s个高速缓存组的数组。
每个组包含E个高速缓存行。
每行是由一个B=2^b字节的数据块组成的,一个有效位指明这个行是否包含有意义的信息。
t=m-(b+s)个标记位,唯一标识存储在这个高速缓存行中的块。

高速缓存的结构可以由元组(S,E,B,m)来描述。
高速缓存大小C只所以块大小的和。

C=S*E*B

直接映射高速缓存

每组只有一行(E=1)的高速缓存,称为~

高速缓存确定一个请求是否命中,然后抽取被请求的字的过程,分三步:

1)组选择
2)行匹配
3)字抽取

1.直接映射高速缓存中的组选择

高速缓存从w的地址中间抽取出s个组索引位

2.直接映射高速缓存中的行匹配

确定是否有字w的一个拷贝存储在组i包含的一个高速缓存中。

3..直接映射高速缓存中的字选择

确定所需要的字的块中是从哪里开始的

4..直接映射高速缓存中不命中的行替换

对直接映射高速缓存来说,替换策略:用新取出的行替换当前行。

组相联高速缓存

1.组相联高速缓存中的组选择

组索引标识组。

2.组相联高速缓存中的行匹配和字选择

行匹配更复杂,必须检查多个行的标记位和有效位,确定所请求的字是否在集合中。

*组中任何一行都可以包含映射到这个组的存储器块。

3、组相联高速缓存中不命中时的行替换

缓存不命中,高速缓存必须从存储器中取出包含这个字的块。
替换行时,有空行选空行。如果没有空行,引用不会很快被被引用的行。

全相联高速缓存

由一个包含所有高速缓存行的组组成的(E=C/B)

1、全相联高速缓存中的组选择

因为只有一个组,地址中没有组索引位,地址只被划分成了一个标记和一个块偏移。 

2、全相联高速缓存中的行匹配和字选择

和前两项相同
只适合做小的高速缓存

参考表

1.数据总线、控制总线、地址总线详
http://blog.chinaunix.net/uid-2630593-id-2138483.html

2.系统总线、I/O总线区别
http://blog.csdn.net/yexinghai/article/details/4059847

3.百度百科
http://baike.baidu.com/link?url=qr-8SZKPvU0yEYLkIyLuoK-aLcvq0JvG_9ozJWGffC6s19aSd4j1rdHEm17XIhdLD0S9cF3uoDHZqtF-QCkBXa

本章不是特别难理解,还是概念比较多。
389页的图画的好暧昧,要好好看一看文字才能理解orz