计组学习第三章存储器

第三章存储器

一、概述

1.1存储器分类

1.按存储介质分类

①半导体存储器:双极性(TTL)半导体存储器、MOS半导体存储器

—TTL:集成度低、功耗高、速度快

—MOS:集成度高、功耗低

②磁表面存储器:有磁头、有载磁体

③磁芯存储器:由硬磁材料做成的环状元件

④光盘存储器:用激光在记录介质上进行读/写的存储器

注:存储器易失指断开电源时,存储器中信息消失。这里半导体存储器为易失的,其余为非易失。

2.按照存取方式分类

①随机访问:存取时间和物理地址无关

—随机存储器(RAM):可以读取信息也可以写入信息

—只读存储器(ROM):只能读取信息。

②串行访问:存储时间和物理地址有关

—顺序存取存储器:例如磁带

—直接存取存储器:例如磁盘

3.按照计算机作用分类

1.2存储器层次结构

  • 存储器三个主要性能指标:速度、容量、每位价格

  • 层次结构

①主存—缓存层次(速度):主要解决CPU和主存速度不匹配问题,数据调动是由硬件自动完成的,对程序员是透明的。

②主存—辅存层次(容量):主要解决存储系统容量问题,数据调动是由硬件和操作系统共同完成的。在不断发展中,逐渐形成虚拟存储器,且虚拟存储器中地址码称为”虚地址“或者”逻辑地址"。

注:对程序员透明指的是程序员看不见的,无法直接调用的。

二、主存储器

2.1主存的基本组成

在CPU访问主存过程中:

①根据MAR的地址,经过地址译码器、驱动器等电路才能找到所需访问的单元。

②读出写入时,必须经过读写电路中读出放大器、写入电路等读写电路才能进行实际操作。

2.2主存与CPU之间联系

CPU和主存之间主要是三种连接:

①地址总线:CPU将地址送入MAR,MAR经过地址总线送至主存,这个过程是单向的。

②控制总线:主要为读写控制,在CPU控制主存也是单向的。

③数据总线:有读出和写入操作,所以数据总线是双向的。

2.3主存中存储单元地址的分配

若有一组数据 12345678H,这是一个16进制的数,也就是说每一位数相当于4bit,每两位数字为一个字节。

若按照字节存储,要存入主存储器:

①大端(大尾):将高位存储在前面

image-20230821102347736

②小端(小尾):将低位存储在前面

③计算:
若地址线 24 根,按照字节寻址则: 2 24 = 16 M B 若地址线 24 根,若字长为 16 位,按照字寻址则: 2 24 ÷ ( 16 / 8 ) = 8 M B 若地址线 24 根,若字长为 32 位,按照字寻址则: 2 24 ÷ ( 32 / 8 ) = 4 M B \\若地址线24根,按照字节寻址则:2^{24}=16MB \\若地址线24根,若字长为16位,按照字寻址则:2^{24} ÷ (16/8) =8MB \\若地址线24根,若字长为32位,按照字寻址则:2^{24} ÷ (32/8) =4MB 若地址线24根,按照字节寻址则:224=16MB若地址线24根,若字长为16位,按照字寻址则:224÷(16/8)=8MB若地址线24根,若字长为32位,按照字寻址则:224÷(32/8)=4MB

2.4主存的技术指标

①存储容量:主存中存放二进制代码的总位数
用二进制代码位数表示 ( b i t ) :存储容量 = 存储单元个数 × 存储字长 用字长总数来表示 ( B y t e ) :存储容量 = 存储单元个数 × 存储字长 / 8 \\用二进制代码位数表示(bit): 存储容量 = 存储单元个数 × 存储字长 \\用字长总数来表示(Byte): 存储容量 = 存储单元个数 × 存储字长 / 8 用二进制代码位数表示(bit):存储容量=存储单元个数×存储字长用字长总数来表示(Byte):存储容量=存储单元个数×存储字长/8
②存储速度:

*存取时间(访问时间):启动一次存储器操作到完成该操作所需的全部时间。分为读出时间和写入时间。

*存取周期:连续两次独立的存储器操作所需的最小间隔时间。即第一次开始到第二次开始中间的时间。

注一般存取时间<存取周期

*存储器的带宽(位/秒):

三、半导体芯片简介

3.1基本结构

image-20230821110640763

地址线(单向)数据线(双向)芯片容量
1041K×4位
14116K×1位
1388K×8位

计算过程: 10 条地址线表示 2 10 = 1 K , 数据线表示 4 位,即芯片容量 = 1 K × 4 位 同理: 14 条地址线, 1 条数据线,芯片容量 = 2 14 × 1 位 = 16 K × 1 位 13 条地址线, 8 条数据线,芯片容量 = 2 13 × 8 位 = 8 K × 8 位 计算过程: \\10条地址线表示2^{10}=1K,数据线表示4位,即芯片容量=1K×4位 \\同理: \\14条地址线,1条数据线,芯片容量=2^{14}×1位=16K×1位 \\13条地址线,8条数据线,芯片容量=2^{13}×8位=8K×8位 计算过程:10条地址线表示210=1K,数据线表示4位,即芯片容量=1K×4同理:14条地址线,1条数据线,芯片容量=214×1=16K×113条地址线,8条数据线,芯片容量=213×8=8K×8

  • 片选线的作用:要用16K×1位组成64K×8位的存储器。

①将8个16K×1位芯片组成一组,构成16K×8位。

②布置4组同样的芯片,构成64K×8位。总共32片。通过片选线的高电平来选择其中的一组作为访问的目标。

3.2译码驱动方式

(1)线选法

通过A0,A1,A2,A3组成的二进制数来判断该用矩阵中那一组芯片,从而进行读写操作。

例如当全部是0时,选择0,0到0,7这一组。

(2)重合法

通过A0,A1,A2,A3,A4组成的二进制数来判断该用矩阵中行地址。

通过A1,A6,A7,A8,A9组成的二进制数来判断该用矩阵的列地址。

通过行地址和列地址来确定操作的芯片组。

四、存储器

4.1随机存储器(RAM)

  • 靠CPU那一层的Cache由SRAM实现,主存储器由DRAM实现,都属于易失性存储器,也就是只要电源被切断,原来保存的信息便会丢失。

1.静态RAM(SRAM)

  • 静态随机存储器(SRAM)的存储单元用“ 双稳态触发器 (六晶体管MOS)”来记忆信息的。
  • 静态存储器信息被读出后,仍保持原状态不需要再生,即为非破坏性读出。
  • SRAM存取速度快,但集成度低,功耗大,一般用于高速缓冲存储器(Cache)。

2.动态RAM(DRAM)

  • 动态随机存储器(DRAM)利用存储元电路中栅极电容上的电荷来存储信息的。

  • DRAM的速度比SRAM存取速度慢,但容易集成度、功耗低、容量大等特点,一般用于大容量的主存系统。

  • DRAM电容上的电荷一般只能维持1~2ms,因此即使电源不断电信息也会自动消失。所以每隔一定时间必须进行一次刷新。

  • 动态RAM刷新(刷新与行地址有关):

​ ①集中刷新:把刷新的时间集中在一个相对集中的时间段。在这个刷新的时间内,不能访问存储器,称为“死时间”也称“死区”。

​ ②分散刷新:把一个存储周期分为两个周期,前部分用于正常读、写或保持,后半部分用于刷新。无死区。

​ ③异步刷新:把分散刷新与集中刷新相结合。也就是每隔一段时间进行一次集中刷新。缩短"死时间"。

DRAMSRAM
存储原理电容触发器
特点集成度高
功耗小
速度较慢
集成度低
功耗大
速度快
刷新
使用主存高速缓存Cache

4.2只读存储器(ROM)

  • ROM一旦有了信息,就不能轻易改变,即使掉电也不会丢失。例如主板上的BIOS芯片。

ROM类型:

①掩模式ROM(MROM):写入数据后任何人无法改变其内容。这是早期的只读存储器,在芯片生产过程中厂家直接写入数据。可靠性高、集成度高、价格便宜,灵活性差。

②一次性编程ROM(PROM):可以实现一次性编程的只读存储器。这是第一次改进,一旦写入数据后,内容就无法改变。

③多次编程ROM(EPROM):可以实现多次改写内容的只读存储器,也称可擦除可编程只读存储器。但EPROM不能取代RAM,因为EPROM的编程次数有限,且写入时间长。

EEPROM(E²PROM):用电气方法将存储内容擦除,再重写。可局部擦写、全部擦写。

④闪速型存储器(Flash Memory):是在EPROM和E²PROM发展起来的,可不在加电的情况下长期保存信息。如U盘,已经具备RAM的功能。

4.3存储器与CPU的连接

1.存储器容量的扩展

(1)位扩展(增加存储字长):

例:用2片1K×4位芯片要构成1K×8位的存储器。

image-20230821145411338

这里一共需要10根地址线,8根地址线。将其连接到两片2114地址线,并且将片选线CS和控制线WE接入。

(2)字扩展(增加存储字的数量):

例:用2片1K×8位存储芯片组成2K×8位的存储器。

这里一共需要11根地址线,8根数据线。A0~A9作为地址线,将A10地址线作为片选信号。

如图中若A10为高电平(1),则选择左边的芯片,反之选择右边芯片。

(3)字、位扩展

例:用8片1K×4位存储芯片组成4K×8位存储器。

这里需要12根地址线,8根数据线。A0A9作为地址线,将A10A11经过片选译码器得到4个片选信号。

4.4提高访存速度的措施

  • 采用高速器件
  • 采用层次结构Cache-主存
  • 调整主存结构:①单体多字存储器②多体并行存储器。

1.单体多字存储器

image-20230821152108981

2.多体并行存储器:每个模块有独立的读写控制电路、地址寄存器和数据寄存器。既能并行工作又能交叉工作。

多体并行存储器有高位交叉和地位交叉编址两种:

①高位交叉:

例:假设存储器有4个模块,每个模块有若干个单元。

image-20230821152436263

用高位的地址作为模块地址,用低位作为模块内部的地址。这种方式用来拓展存储器的容量。每次访问先访问完M0所有单元后,再访问M1,依次类推。

由于CPU总是按顺序访问存储模块,各模块不能被并行访问,所以不能提高存储器的吞吐率。

②低位交叉:

例:假设存储器有4个模块,每个模块有若干个单元。

image-20230821152738758

用低位的地址作为模块地址,用高位作为模块内部的地址。这种方式在不改变周期的前提下,可以增加存储器的带宽。

由于每次先访问M0的0000地址,然后访问M1的0000地址,以此类推,使得模块间可以并行访问。这就类似于一个流水线周期。

image-20230821154404341

【例】设四体低位交叉存储器,存取周期为T,总线传输周期为t,为实现流水方式存取,使满足T=4t。

image-20230821154734076

连续存取4个字所需时间为T+(4-1)t。

五、高速缓冲存储器

5.1概述

  • 问题提出:为了解决CPU“ 空等 ”现象,即为了解决CPU和主存(DRAM)的速度差异的问题。

1.Cache的工作原理

image-20230822164413492

  • 为了方便Cache与主存间交换信息,Cache和主存都被划分块大小相等的块,由于Cache的容量远远小于主存储器,则Cache中的块数量远远少于主存中的块数。
  • Cache中的标记用于记录在主存中块号,Cache中只用来保存主存中的部分数据的副本,当CPU发出请求,直接从Cache中访问,如果Cache命中,则直接对Cache进行操作;如果未命中,仍需要访问主存。

2.命中与不命中

  • 命中:当CPU访问Cache中数据时,主存块的数据已经调入了缓存,则主存块与缓存块建立了对应关系,且用标记记录Cache中与主存块建立关系的主存块号。
  • 未命中:当CPU访问Cache中数据时,主存块的数据未调入缓存,则主存块与缓冲块未建立对应关系。

3.Cache命中率

  • CPU想要访问信息在Cache的比率。命中率与Cache的容量和块长有关。

  • Cache—主存系统的效率:效率e与命中率有关

e = 访问 C a c h e 的时间 平均访问的时间 × 100 % 设 C a c h e 命中率为 h ,访问 C a c h e 的时间为 t c ,访问主存的时间为 t m 。 则 e = t c h × t c + ( 1 − h ) × t m × 100 % e=\frac{访问Cache的时间}{平均访问的时间} × 100\% \\设Cache命中率为h,访问Cache的时间为t_c,访问主存的时间为t_m。 \\则e=\frac{t_c}{h×t_c + (1-h)×t_m} × 100\% e=平均访问的时间访问Cache的时间×100%Cache命中率为h,访问Cache的时间为tc,访问主存的时间为tme=h×tc+(1h)×tmtc×100%

5.2Cache的读写操作

1.读操作

2.写操作

  • Cache的写操作要处理Cache和主存的一致性。一般有两种方法:①写直达法②写回法

①写直达法:在写操作时,数据既写入Cache也写入主存,即写操作时间就是访问主存的时间。所以Cache块退出时,不需要对主存执行写操作。可以保持主存和Cache数据一致,但增加了访存次数。

②写回法:在写操作时,数据只写入Cache不写入主存,在Cache数据被替换出去时,才写回主存。

5.3Cache—主存地址映射

1.直接映射(固定的映射关系)

image-20230822171742458

  • 直接映射:把主存分成与Cache大小相等的块,每一块的字块与Cache存储体中的字块直接对应。类似于《数据结构》中" 哈希(散列)表 "的建立。

简单来说,例如存储体一共 m 个字块 , C a c h e 中有 n 个字块。将 m 对 n 进行取模运算就得到了这个字块在 C a c h e 中的位置。 即 i = m m o d n 。 其缓冲块与主存块之间字块号对应如下 简单来说,例如存储体一共m个字块,Cache中有n个字块。将m对n进行取模运算就得到了这个字块在Cache中的位置。 \\即 i = m \quad mod \quad n。 \\其缓冲块与主存块之间字块号对应如下 简单来说,例如存储体一共m个字块,Cache中有n个字块。将mn进行取模运算就得到了这个字块在Cache中的位置。i=mmodn其缓冲块与主存块之间字块号对应如下

缓冲块(Cache)主存块
00,n,……
11,n-1,……
22,n+2,……
…………
nn-1,2n-1,……
  • 使用直接映射,每个缓冲块可以与若干个主存块对应,但每个主存块只能与一个缓冲块对应。

2.全相连映射(灵活性大的映射关系)

image-20230822173026136

  • 全相连映射:主存块中的字块可以任意映射到Cache中任意一块位置上。

3.组相连映射(直接与全相连的这种)

image-20230822173733133

  • 组相连映射:把Cache分为Q组,每组有R块

    ①用直接映射法,把主存器中字块号与R组进行对应。

    ②用全相连映射法,这些字块号在每一组中的R块里可以映射到任何一个位置。

【例题】假设主存容量为512KB,Cache容量为4KB,每个字块为16个字,每个字32位。按照字节编址。

(1)Cache地址有多少位,可容纳多少块。
解:根据 C a c h e 容量 4 K = 2 12 B ,则 C a c h e 地址有 12 位。 由于每个字 32 位,则 32 ÷ 8 = 4 B 。即 4 K B ÷ 4 B = 1 K 字 = 2 10 字 由于每个字块有 16 = 2 4 个字。则 2 10 ÷ 2 4 = 64 块。 综上: C a c h e 地址有 12 位。可容纳 64 块。 解:根据Cache容量4K=2^{12}B,则Cache地址有12位。 \\由于每个字32位,则32÷8=4B。即4KB÷4B=1K字=2^{10}字 \\由于每个字块有16=2^4个字。则2^{10}÷2^4 = 64块。 \\综上:Cache地址有12位。可容纳64块。 解:根据Cache容量4K=212B,则Cache地址有12位。由于每个字32位,则32÷8=4B。即4KB÷4B=1K=210由于每个字块有16=24个字。则210÷24=64块。综上:Cache地址有12位。可容纳64块。
(2)主存地址有多少位,可容纳多少块。
解:根据主存容量 512 K B = 2 19 B ,主存地址有 19 位。 由题 ( 1 ) 可得每个字 4 B ,每个字块有 2 4 个字。 512 K B ÷ 4 B ÷ 2 4 = 8192 块。 综上主存地址有 19 位,可容纳 8192 块。 解:根据主存容量512KB=2^{19}B,主存地址有19位。 \\由题(1)可得每个字4B,每个字块有2^4个字。512KB÷4B÷2^4=8192块。 \\综上主存地址有19位,可容纳8192块。 解:根据主存容量512KB=219B,主存地址有19位。由题(1)可得每个字4B,每个字块有24个字。512KB÷4B÷24=8192块。综上主存地址有19位,可容纳8192块。
(3)在直接映射下,主存的第几块映射到Cache中的第5块(设起始块为第1块)。
C a c h e 一共有 64 块,则第 5 , 5 + 64 , 5 + 64 × 2 , 5 + 64 × 3 … … 块能映射到 C a c h e 中的第 5 块 Cache一共有64块,则第5,5+64,5+64×2,5+64×3……块能映射到Cache中的第5块 Cache一共有64块,则第55+64,5+64×25+64×3……块能映射到Cache中的第5
(4)主存映射下,主存地址字段中如何分配。
解:每个字块 16 个字需要 4 位地址来表示块号,且每个字 32 位即 4 B ,按照字节编址则需要 2 位。所以字块内地址需要 6 位 缓存块共 64 块,则缓存字块地址需要 6 位。 主存地址共 19 位,则主存字块标记 19 − 6 − 6 = 7 位。 综上所属,主存段地址分别为:主存字块标记 7 位、缓存字块 6 位、字块内地址 6 位。 解:每个字块16个字需要4位地址来表示块号,且每个字32位即4B,按照字节编址则需要2位。所以字块内地址需要6位 \\缓存块共64块,则缓存字块地址需要6位。 \\主存地址共19位,则主存字块标记19-6-6=7位。 \\综上所属,主存段地址分别为:主存字块标记7位、缓存字块6位、字块内地址6位。 解:每个字块16个字需要4位地址来表示块号,且每个字32位即4B,按照字节编址则需要2位。所以字块内地址需要6缓存块共64块,则缓存字块地址需要6位。主存地址共19位,则主存字块标记1966=7位。综上所属,主存段地址分别为:主存字块标记7位、缓存字块6位、字块内地址6位。

5.4替换算法

  • 当新的主存块需要调入Cache并且Cache中可用位置被占满时,需要考虑替换掉Cache中哪一块数据。

1.先进先出(FIFO)算法

选择最早调入Cache的字块进行替换,不需要记录各字块的使用情况。这种方法不能提高Cache的命中率。

2.近期最少使用(LRU)算法

LRU算法比较好地利用访存局部性原理,替换出近期用的最少得字块。需要记录Cache中各字块最近使用情况。

六、辅助存储器

  • 辅助存储器不直接与CPU交换信息。它与主存一起组成了存储器系统的主存—辅存层次。
  • 广泛用于计算机系统的辅助存储器有硬磁盘、软磁盘、磁带、光盘等。前三种均属于磁表面存储器

1.磁表面存储器技术指标

①记录密度:

道密度:是沿着磁盘半径方向单位长度的磁道数。

位密度:磁道单位长度上能记录的二进制代码位数。

②存储容量:C = n × k × s

C为存储总容量,n为存放信息的盘面数,k为每个盘面的磁道数,s为每条磁道上记录的二进制代码数。

平均寻址时间:寻道时间(磁头移动到目的磁道的时间) + 寻址时间(磁头定位到要读取扇区的时间)

④数据传输率:在单位时间内向主机传送数据的字节数。假设磁盘转数r转/秒,每条磁道容量为N字节。

​ 则数据传输率Dr = r N

字块。需要记录Cache中各字块最近使用情况。

六、辅助存储器

  • 辅助存储器不直接与CPU交换信息。它与主存一起组成了存储器系统的主存—辅存层次。
  • 广泛用于计算机系统的辅助存储器有硬磁盘、软磁盘、磁带、光盘等。前三种均属于磁表面存储器

1.磁表面存储器技术指标

①记录密度:

道密度:是沿着磁盘半径方向单位长度的磁道数。

位密度:磁道单位长度上能记录的二进制代码位数。

②存储容量:C = n × k × s

C为存储总容量,n为存放信息的盘面数,k为每个盘面的磁道数,s为每条磁道上记录的二进制代码数。

平均寻址时间:寻道时间(磁头移动到目的磁道的时间) + 寻址时间(磁头定位到要读取扇区的时间)

④数据传输率:在单位时间内向主机传送数据的字节数。假设磁盘转数r转/秒,每条磁道容量为N字节。

​ 则数据传输率Dr = r N

计算机组成原理——刘宏伟
参考文献:计算机组成原理第2版—唐朔飞

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值