计算机组成原理 -- 主存储器
主存的基本组成
存储体由若跟个存储单元组成,存储单元由多个存储元件组成
存储体----存储单元(存储一串二进制串)----存储元件(存储一个 0/1)
存储单元:存放一串二进制代码。
存储字:存储单元中的二进制代码
存储字长:存储单元中二进制代码位数。
存储单元按照地址进行寻址
MAR:存储器地址寄存器,反应存储单元个数。保存了存储体的地址(存储单元的编号),反应了存储单元的个数。所以 MAR 的位数和存储单元的个数有关。
MDR:存储器数据寄存器,反应存储字长(存储单元长度)。保存了要送入 CPU 中的数据或要保存到存储体中的数据或者刚刚从存储体中取出来来的数据。这个寄存器的长度和存储单元的长度相同。
主存中存储单元的地址分配
如 12345678 H 在主存储器中如何进行存储?
1、高位字节地址为字地址(大端大尾)
2、低位字节地址为字地址(小端小尾)
寻址方式及寻址范围计算:
地址线 24 根,按字节寻址,地址个数 = 2^24 * 1B = 16MB
如果字长 16 位,按字寻址,地址个数 = 8MW
如果字长 32 位,按字寻址,地址个数 = 4MW
半导体存储芯片基本结构
容量计算
地址线(单向) |数据线 (双向)| 芯片容量
--|--|--
10| 4 |2^10 4 = 1K 4
14 |1| 2^14 1 = 16K 1
13 |8| 2^13 1 = 8K 8
片选线作用
让某一组芯片同时进行工作。如下图所示,使用 32 片 16K 1 位的存储器组成 64K 8 位的存储器。16 K 1 说明每个存储器的数据线为 1 根,要组成 64K 8 位的存储器,只需使得每次读数据是从 8 个 16 K 1 存储器中各读取一位即可,这时候就可以使用片选线同时选中 8 个 16K 1 的存储器。
半导体芯片译码驱动方式
1、线选法
从上图可以看出,地址总线为 4,数据总线为 8,按照字节进行寻址,内存大小为 16 * 8 b。通过地址线判断从那个字节进行数据的读取,换句话说,如果地址输入为 0000,在只有字线 0 有效,其他字线无效。
线选法存在的问题:
如果容量稍大,比如为 1M * 1 ,则此时有 20 根地址线,相应的有 2^20 = 100 万根字线,这样导致芯片字线非常密集,并且很难把芯片的密集程度做的很高。
2、重合法
对于重合法,同样如果有 1M * 1 的容量,此时 X(行)、Y(列)各有十根地址线,对应的字线各有 1024 条,则公有 2048 跟字线。
随机存储器(RAM)
(一) 静态 RAM
1、静态 RAM 保存 0 和 1 的原理是什么?
静态 RAM 使用的是触发器进行存储数据,触发器由四根晶体管构成,属于双稳态触发器,具有源端和非端用于存储数据,一方为 0 另一方为 1,一方为 1,另一方为 0。
2、静态 RAM 基本单元电路的构成是什么?
图中是保存一个 0 位或者 1 位的电路。
行地址线选择:相当于重合法图中的 Xn,每行有多个基本单元电路,行地址选中一行中所有的基本单元电路。
列地址选择:相当于重合法图中的 Yn,每列有多个基本单元电路,列地址选中一列中所有的基本单元电路。
每次读取数据,需要行和列同时被选中。
T1 ~ T4 为触发器,T1 和 T4 用于存储 0 和 1,T5 和 T6 用于控制读取哪一端数据。
在实际的芯片中,会将虚框中的内容(T1 ~ T 4, T5 和 T6)进行列分布而非单独一个,T7 和 T8 属于列开关,行列交叉点会有多个基本单元电路,能读出多位数据。
3、静态 RAM 对单元电路如何进行读出和写入?
(1)读操作:
读数据时,虽然 T5 开,T7 开,但是非端数据到写放大器就终止了。
(2)写操作
写数据时,左边的写放大器把右边的写放大器的值取非后进行输出,保证 A 和非 A 端的值相反。
4、Intel 2114 静态 RAM 芯片的结构及读写操作?
以 Intel 2114 芯片举例,Intel 2114 外特性如下图:
2114RAM 芯片结构示意图
Intel 2114 芯片是由 64 * 64 位矩阵构成。由图中可知,芯片地址线 9 根,数据线 4 根,那芯片内部是如何进行布局的呢?具体布局如下图:
如图所示,地址线共 10 位,其中行地址线 6 位,列地址线 4 位,行字线 2^ 6 = 64,列字线 2^ 4 = 16。读取数据时如下所示:
将 64 列数据分为四组,每组 16 列。数据读取的时候,如,行地址为 000000,列地址为 0000,此时,行位线选中第一行中所有的元件,列地址选中每组中的第一列,这样就从每组中读取一位,共读取四位数据。写数据和读数据同理。
(二)动态 RAM
1、动态 RAM 保存 0 和 1 的原理是什么?
动态 RAM 使用电容,电容中保存了电荷为 1,电容没有被充电为 0。
2、动态 RAM 基本单元电路的构成是什么?
动态 RAM 基本电路有两种,如上图左(三管动态 RAM)、右(单管动态 RAM)。
3、动态 RAM 对单元电路如何进行读出和写入?
(1)左侧电路读写操作
读操作: T4 为预充电信号,如果预充电信号有效,T4 会被打开,Vdd 通过 T4 对读数据线进行充电,使得读数据线成为高电平,如果是进行读操作,则读选择信号有效,T2 打开,如果此时 CG 中保存的数据是 0,也就是 CG 没有充电,则 T1 不会导通,则读数据线就会保持高电平,所以,如果保存的数据是 0,则在读数据时候,读出的数据是 1。如果 CG 电容中保存的数据是 1,T1 导通,此时读数据线上的电平通过 T2,T1 线路进行放电,读数据线低电平,读出的数据为 0。所以电容读出的信息和原存的信号是相反的。
写操作: 写入和输入信息相同。如果是写操作,写选择线有效,T3 导通 写数据线会通过 T3 向 CG 充电,或者 CG 通过 T3 进行放电,如果写入的数据是 1 高电平,写数据线会通过 T3 向 CG 充电,CG 写入 1.如果写入是 0,则 CG 通过 T3 进行放电,CG 放电为 0。
(2)右侧电路读写操作
读操作: 如果相应的行被选中,字线连接的 T 被打开,电容就会通过 T 进行充电或者放电,如果 CG 中有电位 1,此时放电,则数据线有电流,如果 CS 中没有充电,则数据线无电流,通过数据数据线有无电流判断 CS 中保存的是 1 还是 0。
写操作: 写入时,写入 1,数据线有电流,进行充电为 1。写入 0,数据线无电流,放电为 0。
4、动态 RAM 芯片的结构及读写操作?
(1) 三管动态 RAM(Intel 1103)
三管动态 RAM 读写操作:
(2)单管动态 RAM(Intel 4116)
单管动态 RAM 外特性:
上图中,大小为 16k X 1,所以有 14 根地址线,图中地址线只有 A0 – A6 共 7 根线,此时行地址和列地址分为两次传输,将行地址和列地址分别保存早缓存器中。
单管动态 RAM 读写操作:
图中的读放大器的工作原理像一个撬撬板电路,一端为 0,另一端就是 1,一端为 1,另一端就是 0。
读操作: 如果选中 63 行,0 列。则 63 行中所有的开关都被打开,如果电容中有电,则读放大器左端为 1,则右端为 0,此时读出的数据为 0。如果电容中没有电,读放大器左端为 0,则右端为 1,此时读出数据为 1。
写操作: 如果如果选中 63 行,0 列。写入 1,读放大器右端为 1,左端为 0,写入 0。如果写入 0,读放大器右端为 0,左端为 1,写入 1。
以上电容中实际数据和写入读出数据相反,但是读出和写入的数据相同。
三管动态 RAM 和单管动态 RAM 电路比静态 RAM 电路多出放大器,放大器所用:电容存在漏掉,需要刷新放大器没过一段时间对每一列上的电容进行刷新重现。
5、动态 RAM 为什么要进行刷新,刷新方法是什么?
由于动态 RAM 使用电容存储信息,电容容易漏电,经过一段时间,电容漏电,会导致数据有 1 变为 0,。动态 RAM 刷新只和行地址有关,和列地址无关,每次刷新的是一行中的所有基本电容电路。给出行地址,某一行被全部选中,这个行上所有电容中的信息都会被送到读电路,如果在读数据线和写数据线之间增加一个刷新放大器(每一列都加),就会完成对一行数据的刷新。
(1) 集中刷新:以 128 * 128 矩阵为例
首先主存储器的存储周期 为 0.5us。
上图中的集中式刷新:每隔 2ms 对 128 行进行全部刷新,存取周期为 0.5us,所以刷新每行也需要 0.5us,2ms 内,刷新需要 64us。在这段死区内,CPU 无法对动态 RAM 进行读写操作。
(2)分散刷新:以 128 * 128 矩阵为例
上图的分散式刷新:延长存取周期为正常存取周期的两倍(0.5us * 2 = 1us)。每 1us 对其中的一行进行刷新,128us 刷新全部的 128 行。虽然没有死区,但是刷新过于频繁,并且延长了 CPU 的读写周期。
(3)分散集中相结合:以 128 * 128 矩阵为例
这种方式存取周期为 0.5us,在集中式刷新中,每隔 2ms 对 128 行进行全部刷新,2ums= 2000us,即如果平均分到每行,则每 15.6um 刷新一行。若将刷新安排在指令译码阶段,就不会出现死区。
(三)静态 RAM 和动态 RAM 比较
DRAM 用于做主存,SRAM 用于主存和 CPU 之间的缓存。这样就可以降低成本同时加快访问速度。
只读存储器 ROM
(一)只读存储器发展历史
早期的只读存储器,在厂家就写好了内容,无法修改。
改进 1:用户可以自己写,一次性修改。
改进 2:可以多次写,能对信息进行擦除。
改进 3:电可擦写,特定设备。
改进 4:电可擦写,直接连接到计算机上。
(二)只读存储器(ROM 类型)
1、掩模 ROM ( MROM )
行列选择线交叉处有 MOS 管为“1”
行列选择线交叉处无 MOS 管为“0”
2、PROM (一次性编程)
熔丝断为 “0”
熔丝未断为 “1”
3、EPROM (多次性编程 )
G:栅极 S:源 D:漏
使用紫外线进行擦洗
D 端加正电压形成浮动栅,S 与 D 不导通为 “0”。
D 端不加正电压不形成浮动栅,S 与 D 导通为 “1”。
4、EEPROM (多次性编程 )
使用电擦写,可局部擦写,也可全部擦写。
5、Flash Memory (闪速型存储器)
第三种 EPROM 价格便宜,集成度高。
第四种 EEPROM,电可擦洗重写。
Flash Memory 比 EEPROM 快,具备 RAM 功能。
存储器容量的扩展
1、位扩展(增加存储字长)
上图为用两个 1k 4 位存储芯片组成一个 1K 8 位的存储芯片。在读取数据的时候,通过 cs 片选线同时选中两个芯片,将每个芯片中的四位组成 8 位传送到数据线上。
2、字扩展
图中是将连个 1k 8 的存储芯片组成一个 2k 8 的存储芯片。共需要 11 根地址线 ,8 根数据线,其中 10 根地址线选中具体的一个地址,第十根地址线用作片选线,当第十根为 0 时候,使用芯片 1,当第十根为 1 时候,使用芯片 2。
3、字和位同时扩展
用 8 片 1K 4 位的芯片组成 4K 8 位的芯片。其中有 12 根地址线,8 根数据线,其中两根地址线作为片选线,一个片选地址选中两片芯片。
版权声明: 本文为 InfoQ 作者【风骨散人】的原创文章。
原文链接:【http://xie.infoq.cn/article/09bd00d5a6d4ad64ba25ffde1】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论