目录
一、主存的基本组成
存储体由许多的存储单元组成,每个存储单元里面又包含若干个存储元件,每个存储元件可以存储一位二进制数0/1。
存储体----存储单元(存储一串二进制串)----存储元件(存储一个0/1)
- 存储单元:存放一串二进制代码。
- 存储字:存储单元中的二进制代码
- 存储字长:存储单元中二进制代码位数。
存储单元按照地址进行寻址。
MAR:存储器地址寄存器,保存了存储体的地址(存储单元的编号),反应了存储单元的个数。所以MAR的位数和存储单元的个数有关。
MDR:存储器数据寄存器,反应存储字长(存储单元长度)。保存了要送入CPU中的数据或者要保存到存储体中的数据或者刚刚从存储体中取出来的数据。这个寄存器的长度和存储单元的长度相同。
数据总线连接MDR数据寄存器,方向是双向的,因为MDR中的数据可能读出也可能写入。
二、主存中单元地址的分配
1、主存中存储单元
下图中,每一个小方块就代表一个存储单元,大方块是主存中的存储体。以8位二进制作为一个存储单元,也就是一个字节。通常,字由字节组成。(说白了,字和字节都是一位一位构成的,只不过字包含了字节)
下图一个存储单元为一个字节,这4个字节又构成了1个字。每个字有字地址,在图中形象化的表示了。
那么现在一个问题是,图中的字长为多少?
经过分析,4个字节组成了1个字,一个字节8位,所以总共是32位,字长也就是32位。
2、问题分析
大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。
小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低。
(1)关于存储容量
一个存储单元中有8位,那么16M个存储单元(地址)中,可以存放16M×8位。这也就是存储容量。
假如地址寄存器MAR是8位,每个存储单元可以写入/读出10位的二进制数。存储容量 就应该为8*8×10位(2^8*10)。
(2)求访问范围
- 设地址线为24根,按字节寻址,求访问范围?
- 如果存储容量不变,若字长为16位,求按字寻址范围?
- 如果存储容量还不变,若字长为32,求按字寻址范围?
先分析第一个问题。
如果地址线有24根,并且每根地址线有0、1两位,我们可以从000…000(24位)一直到111…111(24位)。所以一共就有2^24位,也就是有2^24个地址。转化完成就是16M。这些地址表示存储单元的位置,所以存储单元的个数也为16M。
那么来看第二个问题:
存储容量不变,也就是有16M*8位,若字长为16位,我们按字寻址,有多少存储字。
下图的字长为16位:一个字节8位,两个字节自然就是16位。
如果是按字寻址,我们知道字长16位,那么用总容量除以字长就是存储字的个数:
(16M*8)/16=8M
第二个懂了的话,第三就好懂啦,只不过是把16换为了32:
(16M*8)/32=4M
(3)求其地址线和数据线的总和
一个16K×32位的存储器,求其地址线和数据线的总和
分析:
1、地址线的数量n满足:2^n>=存储容量的比特数,解出最小的n,即是地址线的数量。
2、地址线是用来读取或写入数据的,所以数据线的数量,与存储单元的位数相同。
地址线是用来传输地址信息用的。举个简单的例子:cpu在内存或硬盘里面寻找一个数据时,先通过地址线找到地址,然后再通过数据线将数据取出来。
解答:16K是2的14次方,也就是14根地址线,后面的32就是数据线的根数了。所以总线数就是14+32=46。
三、主存的技术指标
主存储器的性能指标主要是存储容量、存取时间、存储周期和存储器带宽
存储容量:在一个存储器中可以容纳的存储单元总数,存储空间的大小字数,字节数
存取时间:存储时间有称存储器访问时间,是指从启动一次存储器操作到完成该操作所经历的时间。具体讲,从一次读操作命令发出到该操作完成,将数据读入数据缓冲寄存器为止所经历的时间,即为存储器存取时间。主存的速度ns
存储周期:存储周期是指连续启动两次独立的存储器操作(如连续两次读操作)所需间隔的最小时间。通常,存储周期略大于存储时间,其时间单位为ns。
存储器带宽:单位时间里存储器所存取的信息量,数据传输速率技术指标 位/秒,字节/秒