主存储器(简称主存或内存),就是平时所称的内存条。
主存为计算机的主要工作存储器,主要存放正在运行的程序和数据。
主存由半导体器件(主要RAM和ROM)制成。一个主存有多个存储芯片(也叫半导体存储器)。
一、主存的组成结构
主存由存储体(又称存储矩阵)、MAR(地址寄存器)、MDR(数据寄存器)、各种逻辑部件及控制电路等组成。
1、存储体
存储体:存储器的核心部分,又称存储矩阵。由若干个存储单元组成的独立存储实体。
存储单元:存储二进制代码的容器。每个存储单元都有特定的地址。
每个存储单元有多个存储元(存储器的最小存储单位,又称存储元件),每个存储元可存储一位二进制0或1。
每个存储单元可存放一串二进制代码,这串二进制代码称为存储字,存储字的位数称为存储字长。
- 存储单元若存放一个机器字,通常称为字存储单元,相应的单元地址叫字地址。
- 存储单元若存放一个字节,称为字节存储单元,相应的地址称为字节地址。
32位的计算机:1字(word)=32位(bit)=4字节(byte) 即1个字=4个字节
64位的计算机:1字(word)=64位(bit)=8字节(byte) 即1个字=8个字节
2、MAR和MDR
MAR:Memory Address Register,存储器地址寄存器。用于暂存存储单元的地址。
MAR的位数反映了存储单元的个数。
MDR:Memory Data Register,存储器数据寄存器。用于暂存从存储单元读取的数据或者将要写入的数据。
MDR的位数=存储字长=每个存储单元的大小。
逻辑上,MAR和MDR属于主存;但物理上,MAR和MDR在CPU的芯片中。
3、各种逻辑部件及控制电路
译码器、驱动器、控制电路都在主存芯片中。
(3-1)译码器:实现译码功能的逻辑电路。译码是编码的逆过程,把二进制代码所代表的特定含义“翻译”出来的过程。
二进制译码器:每个二进制代码,对应只有一个输出端为有效电平,其他输出为无效电平。
有n根信号输入线,可输入n位二进制代码,在输出端有根输出线,每个输出都和输入的一个二进制代码相对应。(3-8译码器,3根地址线即3位二进制代码,8根输出线)
MAR中的二进制地址,通过译码后,其中一个输出端给出有效电平,其他输出端为无效电平,就可以读出相应存储单元的数据。
(3-2)驱动器:为了保证译码器输出的电平稳定可靠,提高电路输送能力,将电信号放大的部件。
(3-3)读写电路:连通存储元的电路。每次读/写一个存储字。
(3-4)控制电路:片选线,读/写控制线(一根或两根)
片选线:芯片使能信号。是芯片的输入引脚,该引脚激活,芯片才能工作。
二、主存的容量扩展
1、位扩展:数据总线宽度>芯片存储字长时,扩展数据位数。即相同地址总线连接,数据总线分别连接芯片的数据线。即同一个地址,多个芯片同时传送数据。
2、字扩展:相同数据总线连接,相同地址总线连接,其他高位地址总线连接芯片的片选线。
(1)线选法:其他高位n个地址总线连接n个芯片,电路简单但地址不连续。
(2)译码片选法:其他高位n个地址总线通过译码器连接个芯片。
(3)字位扩展:同时位扩展和字扩展。
三、CPU与主存的连接
- MAR、MDR位于CPU的内部芯片中。但逻辑上属于主存。
- 主存通过数据总线、地址总线和控制总线(片选线,读/写控制线)与CPU连接。
- 地址总线的连接:用来指出存储单元地址号。
- 数据总线的连接:用来传输数据(读写数据)。
- 读/写控制线的连接:通常高电平为读,低电平为写。
- 片选线的连接:由于存储器是由许多存储芯片组成的,存储芯片的片选控制线和CPU的高位地址有关,CPU的高位地址线经过译码器译码,和访存控制信号共同作用,产生存储芯片的片选信号。
补充:按字编址、按字节编址
假设,存储器总容量1KB(即B),64位的计算机。
1、按字编址
按字编址,1个存储单元存放1个字,1个字=64位=8B,则存储字长为8B,
总容量=存储单元个数 * 存储字长,则存储单元个数=1KB/8B=/
=
=128个,
编址范围:0-127,
MAR(地址寄存器)的位数n反映存储单元个数,则MAR位数为7,即7根地址线。
2、按字节编址
按字节编址,1个存储单元存放1个字节(1B),则存储字长为1B,
总容量=存储单元个数 * 存储字长,则存储单元个数=1KB/1B==1024个,
编址范围:0-1023,
MAR(地址寄存器)的位数n反映存储单元个数,则MAR位数为10,即10根地址线。