文章目录
1.计算机存储系统金字塔
金字塔越往上,速度越快,更小,成本更高。
(1)寄存器、Cache(一级、二级、三级)都是在CPU内部的,它们的速度非常快;
(2)主存也叫内存(RAM,Random Access Memory),它的速度非常快,但掉电丢失,CPU会直接从这里取数据;
(3)外存也叫永久存储器,如U盘、SD卡、硬盘、光盘等,它们速度慢,但掉电数据不丢失,CPU并不会从这里取数据;外存的访问是以(block)为单位进行存储访问的,在操作系统下必须使用文件系统格式化、挂载后才能便用;
2.随机存储器RAM(Random Access Memory)
特点:读写速度非常快、断电后所有数据将会丢失。
2.1.动态随机存储器DRAM(Dynamic Random Access Memory)
DRAM内部是由电容来存储数据的,电容里如果有电表示存储1,无则表示存储0。因为电容会漏电,所以DRAM在工作时会通过刷新电路不断刷新电容。
内存位存储:
(1)DRAM内部实现中,一个基本存储单元(Cell)主要由一个晶体管(MOS管)和一个电容(Capacitor)组成。
(2)当MOS管中不导通没有电流经过时,电容没有电荷表示存储0;而当MOS管导通时,电容有电荷表示存储1。
(3)内存存储单元是以行、列形式组织存放的,这样当要访问某一个存储单元,需要给出这个存储单元的行(row)、列(column)地址。
SDRAM:同步动态随机存取内存(synchronous dynamic random-access memory,简称SDRAM)是有一个同步接口的动态随机存取内存(DRAM)。通常DRAM是有一个异步接口的,这样它可以随时响应控制输入的变化。而SDRAM有一个同步接口,在响应控制输入前会等待一个时钟信号,这样就能和计算机的系统总线同步。时钟被用来驱动一个有限状态机,对进入的指令进行管线(Pipeline)操作。这使得SDRAM与没有同步接口的异步DRAM(asynchronous DRAM)相比,可以有一个更复杂的操作模式。
2.2.静态随机存储器SRAM(Static Random Access Memory)
它是一种具有静止存取功能的内存,其内部机构比DRAM复杂,可以做到不刷新电路即能保存它内部存储的数据。SRAM主要用于二级高速缓存(Level2 Cache)。它利用晶体管来存储数据。与DRAM相比,SRAM的速度快,但在相同面积中SRAM的容量要比其他类型的内存小。
2.3.DRAM和SRAM对比
存储单元结构不同导致了RAM容量的不同。一个DRAM存储单元大约需要一个晶体管和一个电容(不包括行读出放大器等),而一个SRAM存储单元大约需要六个晶体管。DRAM和SDRAM由于实现工艺问题,容量较SRAM大,但是读写速度不如SRAM。一个是静态的,一个是动态的,静态的是用的双稳态触发器来保存信息,而动态的是用电子,要不时的刷新来保持。
SRAM的速度非常快,在快速读取和刷新时能够保持数据完整性。SRAM内部采用的是双稳态电路的形式来存储数据。所以SRAM的电路结构非常复杂。制造相同容量的SRAM比DRAM的成本高的多。正因为如此,才使其发展受到了限制。因此目前SRAM基本上只用于CPU内部的一级缓存以及内置的二级缓存,仅有少量的网络服务器以及路由器上能够使用SRAM。
3.地址线与编址
如果存储单元有8个字节,则地址需要3位,也就是需要3根地址线。
如果存储单元有16个字节,则地址需要4位,也就是需要4根地址线。
若存储单元有4GB(2^32),则地址需要32位,也就是需要32根地址线。
所以,地址线的位数大小决定了CPU的地址编码能力,这也就决定了系统所能访问的最大存储空间大小。所以32位系统,最大能支持的内存为4GB。
4.CPU访问内存
16x8bit DRAM芯片一个存储单元的结构图:
每个Cell的信息通过地址线和数据线来传输。上图有2根地址线和8根数据线。为什么2根地址线就能访问16个Cell?因为DRAM芯片里有一个行缓冲区,实际上要获取一个Cell的数据,是传送了2次地址:第一次发送RAS(Row Access Strobe,行地址锁存),这样将一行的数据放入行缓冲区;第二次发送CAS(Column Access Strobe,列地址锁存),从行缓冲区中取得相应列对应的数据并通过数据线传出。
5.字长与总线
5.1.字长
计算机在同一时间内处理的一组二进制数称为一个计算机的“字”,而这组二进制数的位数就是“字长”。通常称处理字长为8位数据的CPU叫8位CPU,32位CPU就是在同一时间内处理字长为32位的二进制数据。一般来说计算机的数据线的位数和字长是相同的,这样从内存获取数据后,只需要一次就能把数据全部传送给CPU。
5.2.总线
总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束。按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。在上面的例子中,我们了解到数据总线是用来传输数据,地址总线用来传输地址,那么控制总线呢?其实控制总线就是用来传送的是各种控制信号,这些控制信号包括时序信号、状态信号和命令信号(如读写信号、忙信号、中断信号)等。
6.内存编址
6.1.内存扩容
内存的大小和它芯片的扩展方式有关,如果我们内存模块是采用16M8bit的内存颗粒,那么我们使用4个颗粒进行位扩展。成为16M32bit,再使用4个颗粒进行字容量扩展变为64M32bit。那么我们内存模块共使用了16(44)个内存颗粒就可以扩展到256MB了。
6.2.内存编址
如果对256MB的内存编址,有多种方式:(1字=32bit=4B,1字节=8bit=1B)
(1)按字编址:寻址范围为64MB(256/4),而每个内存地址可以存储32bit数据。
(2)按半字编址:寻址范围为128MB(256/2),而每个内存地址可以存储16bit数据。
(3)按字节编址:寻址范围为256MB,而每个内存地址可以存储8bit数据。