计算机组成原理笔记(4)
主存储器
存储系统概述
存储器分类
- 按照存储介质分类
- 半导体存储器
- 磁介质存储器
- 光盘存储器
- 按照访问方式分类
- 随机存储器RAM
- 只读存储器ROM
- 顺序访问存储器(Tape)
- 直接访问存储器(Disk)
- 按照在计算机中的作用分类
- 主存储器(内存)
- 辅助存储器(外存)
- 控制存储器
- 输入输出存储器
- 按照功能分类
- 高速缓存器(Cache)
- 主存储器
- 辅助存储器
- 控制存储器
存储器的性能指标
- 访问时间(Access Time):TA
- 从给定地址到存储器定位到目标位置所需的时间
- 存储周期(Storage Cycle):TC
- 对RAM,TC指两次访问存储单元的最小时间间隔
- TC > TA
- 带宽(Bandwidth)/数据传输率(Data Transfer Rate)
- 一般来说:1/Cycle Time
- 其他类型:TN=TA+N/R,带宽:N/TN
TN:读写N个数据的时间
TA:访问时间
N;数据个数(Bits)
R:数据传输率(Bits/s)
半导体存储器
从访问方式上可分为:
- 随机访问存储器RAM、只读存储器ROM
RAM又可分为:
- 静态RAM SRAM:静态存储器,相对动态而言,集成度低,不必刷新。用作Cache
- 动态RAM DRAM:动态存储器,需要刷新,相对而言,集成度高。用做主存,SDRAM、DDRSDRAM、DDR2SDRAM、DDR3SDRAM
ROM又可分为:
- 固定掩模ROM
- 可编程ROM PROM(一次性可编程)
- EPROM 可擦除可编程ROM(紫外线擦除)
- EEPROM (电擦除)
- 闪速存储器Flash Memory
存储单元电路
存储单元电路
- 存储单元电路:存储器中用来存储一位二进制数的电路
- 存储字:存储单元的集合,存储一个二进制数
- 存储字长:存储单元的位数
- 存储容量:存储单元的个数
- 存储器容量:存储容量(存储字长*存储单元个数)
- 存储器带宽:存储器每秒能读出的二进制位数
基本要求:
- 具有两种稳定(或半稳定)状态,用来表示二进制的 0和1
- 可以实现状态写入(或设置)
- 可以实现状态读出(或感知)
SRAM存储单元电路
-
SRAM(静态随机存储器)单元电路
SRAM通常采用六管单元电路,每个存储单元由六个MOS管组成,两个为工作管(T1、T2),两个为负载管(T3、T4),两个为门控管(T5、T6)。- 稳定状态:“1”时,T1截止,T2导通;“0”时,T2截止,T1导通。
- 保持状态:字选线处于低电平,T5和T6截止,电路内部保持稳定。
-
SRAM的读出操作
读出时字选线为高电平,T5和T6导通。根据存储的值,数据线上的电压反映出存储的“1”或“0”。- 如果存储的是“1”,数据线D为高电平;
- 如果存储的是“0”,数据线D为低电平。
-
SRAM的写入操作
写入时,字选线为高电平,T5和T6导通:- 写“1”:数据线D为高电平,T1截止,T2导通,存储“1”;
- 写“0”:数据线D为低电平,T1导通,T2截止,存储“0”。
DRAM存储单元电路
-
DRAM(动态随机存储器)单元电路
DRAM存储单元通常使用单管单元电路,其核心是一个MOS管(T)和一个电容(Cs)。电容用来存储电荷,表示二进制“1”或“0”:- 有电荷表示“1”;
- 无电荷表示“0”。
-
DRAM的读出操作
读出操作首先将数据线D预充电至Vpre(2.5V)。字选线高电平时,MOS管导通:- 如果存储的是“1”,Cs电容电压较高,电流从电路内部流出到数据线;
- 如果存储的是“0”,Cs电容电压较低,电流从数据线流入存储电路。
-
DRAM的写入操作
写入操作根据需要在数据线上施加高或低电平:- 写“1”:数据线D加高电平,通过字选线高电平导通MOS管,使Cs充电;
- 写“0”:数据线D加低电平,通过MOS管使Cs放电,表示“0”。
-
DRAM的刷新机制
由于电容的漏电流,Cs上的电荷会逐渐消失,因此DRAM需要定期刷新以保持存储的值。
刷新操作可以通过读出操作实现,因为读出时数据线的电压调整会重新写入数据到电容中。
ROM存储单元电路
ROM(只读存储器) 具有非易失性,数据在断电后仍能保存。
ROM的单元电路使用不同的技术来实现数据存储,具体包括:
- 固定掩膜(Masks)ROM:使用二极管或三极管表示二进制值,无法修改。
- PROM(可编程ROM):通过大电流永久烧断熔丝进行一次性编程,不能擦除或修改。
- EPROM(可擦除PROM):通过紫外线擦除电荷并重新编程,采用FAMOS(浮空栅极MOS)结构。
- EEPROM(电擦除PROM):通过电压实现擦除,能够多次编程。
- 固定掩膜ROM
其基本原理是通过设计芯片时在特定位置设置或者不设置二极管或三极管来代表“0”或“1”。
3. PROM
PROM在制造时所有位元的初始状态为“1”,通过烧断熔丝将某些位元设置为“0”,这种变化是不可逆的。
4. EPROM
EPROM存储单元电路使用FAMOS结构,编程时通过高电压击穿G极与D极之间的隔离层,将电子注入G极。擦除时通过紫外线照射使G极的电子获得能量越过隔离层。
5. EEPROM
EEPROM基于浮空栅结构的改进,它在浮空栅上增加了一个第二浮空栅,通过施加正电压实现电子注入,负电压实现擦除。
存储单元电路的符号表示
- 存储单元电路通常使用符号来简化表示,表示为具有字选线、数据线和MOS管的简单结构。
- 一个存储单元电路通常存储1位二进制代码,通过多个存储单元组成存储芯片,而多个芯片构成整个存储系统。
存储芯片结构
存储芯片容量描述
-
存储芯片容量通常以“字单元数 × 每个字单元的位数”来表示:
- 64K×8:表示该芯片有64K个字单元,每个字单元存储8位数据。
- 1K×2:表示该芯片有1K个字单元,每个字单元存储2位数据。
-
地址线与数据线
- 地址线:决定芯片可以访问的字单元数量。若有
n
条地址线,则芯片可以寻址2n个字单元。 - 数据线:决定每次可以读取或写入的位数。若有
m
条数据线,则每次可以读取或写入m
位数据。
- 地址线:决定芯片可以访问的字单元数量。若有
存储芯片的内部结构
- 一维地址结构
- 在一维地址结构中,地址线直接控制存储单元的选择,所有字单元排列成一列。译码器通过接收地址信号来选择一个特定的字单元。
- 例如,1024×2的存储芯片具有10条地址线(
A0
到A9
)和2条数据线。地址线通过译码器选择一个特定的字单元,数据线则决定每次传输的位数。
2. 二维地址结构
- 在二维地址结构中,字单元排列成矩阵,地址被分为行地址和列地址两部分,分别通过行译码器和列译码器来选择特定的字单元。
- 例如,4096×4的存储芯片可表示为128行×128列的存储矩阵。每个字单元由4位组成,行地址用7条地址线,列地址也用5条地址线。
3. 二维地址结构的好处
- 通过行列分开寻址,减少了译码器的复杂度。
- 存储单元矩阵使得存储器的设计更加紧凑和高效。
存储芯片结构示例
-
SRAM芯片示例
- 例如,**2114(1024×4)**的SRAM芯片具有10条地址线,4条数据线。
- 数据线D0到D3对应每个字单元中的4位数据。地址线
A0
到A9
决定选择哪个字单元进行操作。
-
DRAM芯片示例
- 例如,4M×4的DRAM芯片具有刷新电路,负责对存储单元进行定期刷新,确保数据不会因电荷泄漏而丢失。
- 该芯片内部包括行译码器、列译码器、数据缓冲器、刷新计数器等模块,以实现高效存储。
存储器扩展
存储器芯片的扩展
位扩展(2n X m)
- 当存储芯片的位数(m)不够时,通过位扩展可以增加存储器的位数。例如,两个1K×4的SRAM芯片通过位扩展可构成1K×8的存储器。
- 位扩展方法:将多个芯片的数据位空间拼接在一起。所有芯片的地址线连接到相同的地址总线,而数据线分别连接到总线的不同位。
字扩展(2n X m)
- 当存储芯片的字数(
2^n
)不够时,通过字扩展可以增加存储器的地址空间。例如,四个1K×8的SRAM芯片通过字扩展可构成4K×8的存储器。 - 字扩展方法:将多个芯片的字空间拼接在一起。每个芯片的地址线部分连接到相同的地址总线,片选信号由译码器控制。
混合扩展(2n X m)
- 当存储器的字数和位数都不够时,可以同时进行位扩展和字扩展,即混合扩展。例如,使用4K×4的SRAM芯片可以构建16K×8的存储器。
- 混合扩展需要使用多个芯片,通过译码器生成片选信号,控制不同芯片的访问。
存储器芯片的扩展示例
基本思路
- 确定每个芯片的地址管脚数、数据管脚数。
- 确定整个存储空间所需的地址总线和数据总线的数量。
- 计算所需芯片的数量,确定每个芯片在整个存储空间中的地址空间范围、位空间范围。
- 所有芯片的地址管脚全部连接到地址总线对应的地址线上。
- 同一地址空间的芯片CS信号连在一起。
- 同一位空间的芯片数据线连在一起,并连接到对应的数据总线上。
- 根据每个芯片的地址空间范围,设计芯片所需片选信号CS的逻辑电路,电路的输入一定是,地址总线中,没有连接到芯片地址管脚上的那部分地址线。
- 统一读写控制
异种芯片使用示例
- 用3片16K×4的SRAM芯片和若干8K×4的SRAM芯片,组成一个64K×8的按字节编址的存储器。通过片选译码器生成控制信号,将多个芯片空间拼接在一起,实现数据线和地址线的合理分配。
DRAM的刷新
DRAM的刷新机制
-
刷新原因
- DRAM存储单元的电容会因漏电流导致电荷丢失,从而使存储的数据逐渐消失。因此,DRAM需要定期刷新以保持数据的正确性。
- 刷新周期通常为2ms、4ms或8ms。
-
读操作的破坏性
- 读出操作会改变电容的电荷状态,因此DRAM的读操作是破坏性的。每次读操作后,数据需要立即重新写入电容进行恢复。
-
DRAM存储单元电路刷新的实现
-
传感放大器:由于读出过程D线电压变化量较小,需要对变化量进行放大,才能得到有效的数据,因此,单管存储单元电路中,D线上必须增加传感放大器(Sense Amplifier)
-
刷新地址计数器:在刷新过程中,刷新地址计数器对刷新地址进行计数,确定要刷新的存储单元。
-
刷新操作:在D线上增加了传感放大器后,读过程实际上就是一次刷新过程。刷新由传感放大器在读出过程中同时完成。事实上,DRAM的刷新,就是通过这样的读操作来实现的。
-
DRAM的刷新方式
-
集中刷新
- 将整个刷新周期分为两个部分,一部分用于刷新所有存储行,此时CPU无法访问内存;另一部分用于CPU访存。
- 这种方式会产生死区时间,CPU无法访问内存。
-
分散刷新
- 刷新与CPU访存交替进行,每次刷新一行,刷新期间CPU可以继续进行存储操作。分散刷新不会出现死区时间,但会降低系统性能。
-
分布式刷新
- 在整个刷新周期内,刷新操作分散进行,可以保证每一行都被刷新。相比于集中刷新和分散刷新,分布式刷新能够有效减少死时间,提高性能。