【计算机组成原理详细知识点】多层次的存储器

第一节掌握!

3.1.1 存储器的分类

什么是存储器啊?干嘛用的啊?
顾名思义一下好不好啊?存储的呗->文绉绉一点->计算机系统中的记忆设备啊,存放程序数据


接下来呢?
根据存储材料的性能使用方法不同:
分个类吧!

1).存储介质:

我们知道计算机采用二进制,所以存储介质的基本要求:①有两种明显的物理状态,来表示0和1;②:我要快,存取速度(涉及到性能,在下文中主存储器的性能指标中会指出)取决于这种物理状态改变的快慢。
材料方面,据我所知:半导体磁性都还不错,不是就有半导体存储器磁表面存储器

2).存取方式:

怎么分啊!
哦,先讲一些小姿势吧:计算机中一位二进制代码位是存储器中最小的存储单位,称位存储位元;进化,若干个存储单元组成成一个存储单元;进化,由许多个存储单元组成一个存储器。
回来讲讲怎么分啊!
①:存储单元的内容是如何存取的?
②:存取时间和存储单元的物理位置有关系么?

1st situation: 存储器中任意存储单元的内容都能随机存取,且存储时间和物理位置无关,称为随机存储器(半导体存储器)

2nd situation: 存储器中按某种顺序来存取,存储时间和物理位置有关,称为顺序存储器(磁带存储器,存储周期较长)
md,又扯到了存储器的性能了,存储周期就是其中一个,看下文!
注:(磁盘存储器)是半顺序存储器。

3).存储内容可变性

讲道理,这里好多人都会误认为随机存储器,顺序存储器因为这个,p,之前不是讲了嘛,那是存储方式,这里是内容可变性内容可变性!!!
如果半导体存储器存储的内容是固定不变的,这个意思呢就是你能读出,但是不能写入,所以从而固定不变,这种存储器称为只读存储器(ROM)。
So,如果半导体存储器存储的内容不是固定不变的,这个意思呢就是你能读出也能写入,所以从而可以产生改变,这种存储器称为随机读写存储器(RAM)。

4).信息易失性

说这个好像没意思啊???
这里主要讲断电后,信息消失的存储器称为易失性存储器。(半导体)
断电后,信息仍能保存的存储器称为非易失性存储器。(磁性的)

3.1.2存储器的分级

存储器的分级 位置
寄存器,片内cache CPU内
片外cache,主存储器 主板内
磁盘,光盘 主板外
磁带 离线

注:
(CPU能直接访问的称为内存储器)
(CPU不能直接访问外存储器,所以外存储器的信息必须调入内存储器才能为CPU进行处理。)

讲三个存储器:

1.高速缓冲存储器
就是cache,特点:高速(高速存取指令和数据),小![cache强调是存取指令!!!]

2.主存储器
好像很喜欢考—计算机系统的主要存储器—没错就是主存储器。
凭什么啊?
他能存放计算机运行期间的大量程序和数据
他能和cache交换数据和指令
凭什么啊?外存完全无法近身啊。。。

3.外存储器
大容量辅助存储器 [说我辅助我生气了啊!]
磁盘,磁带,光盘(存储器)。
存放系统程序和大型数据文件和数据库。

3.1.3 存储器的技术指标

4个性能指标:
存取容量,存取时间,存取周期,存取器带宽。
其实容量和带宽都好理解啊:

存储容量:

一个存储器中可以容纳的存储单元总数。

存储单元(黑人问号???)
计算机中一位二进制代码位是存储器中最小的存储单位,称位存储位元;进化,若干个存储单元组成成一个存储单元;进化,由许多个存储单元组成一个存储器。

存储器带宽:

单位时间里存储器所存取的信息量。(是用来衡量数据传输速率的重要技术指标)

存储时间:

存储器访问时间。
指一次读操作命令发出到该操作完成,把数据读出到数据总线上的时间。

存储周期:

连续进行两次读操作所需间隔的最小时间。
通常存储周期略大于存储时间。

3.2 SRAM存储器

3.2.1 基本的静态存储单元阵列

目前广泛使用的内部存储器是半导体存储器。
SRAM的优点是存取速度快,但是存储容量不如DRAM大。
SRAM的特征时用一个锁存器(触发器)作为存储元。只要电流加在这个记忆电路上就会无限期地保持记忆的1状态或0状态。如果电源断电,那么存储的数据就会丢失。
(SRAM)静态读写存储器。
① 地址线:6条
它指定了存储器的容量是 26=64” role=”presentation”>26=6426=64
② 数据线:4条
它指定了存储器的位元是 64×4=256” role=”presentation”>64×4=25664×4=256
③ 控制线:
指定了进行读,进行写。注意,读写操作不会发生。

3.2.2 基本的SRAM逻辑结构

目前的SRAM芯片采用双译码的方式,以便组织更大的存储容量。
实质是采用了二级译码,然后在存储阵列中完成二级的交叉译码。

3.2.3读写周期波形图

3.3 DRAM存储器

(DRAM)动态读写存储器。

3.3.1 DRAM存储元的记忆原理

通常作为计算机的主存储器。
DRAM存储器的存储元是由一个MOS晶体管和电容器组成的记忆电路。
其中MOS管作为开关使用。存储的信息1或0是由电容器上的电荷量来体现–当电容器充满电荷时代表存储了1,当电容器放电没有电荷时,代表存储了0.

3.3.2 DRAM芯片的逻辑结构

1.增加了行地址锁存器和列地址锁存器。
2.增加了刷新计数器和相应的控制电路。DRAM读出必须要刷新,而未读出的存储元也要定期刷新,而且要按行刷新,所以刷新计数器的长度等于地址锁存器。
刷新操作和读/写操作是交替进行的,所以通过2选1多路开关来提供刷新行地址或正常读/写的行地址。

3.3.3 读/写周期 刷新周期

3.6 cache存储器

3.6.1 cache的基本原理

cache的功能

高速缓冲存储器

高速啊!贼高速!能高速地向CPU提供指令和数据
缓冲!主存要把他的东西给CPU,但是主存的速度完全追不上CPU,不匹配啊,所以有cache。
从CPU来看,增加一个cache的目的,就是在性能上使主存的平均读出时间尽可能接近cache的读出时间。

cache的基本原理

我们知道CPU和主存之间速度不匹配所以cache是解决这个问题的,但是cache是如何解决的呢?
CPU与cache之间的数据交换是以字为单位,而cache与主存之间的数据交换是以块为单位。一个块是由若干个字组成的,是定长的
什么是字?什么是块?

字节:字节是指一小组相邻的二进制数码。一个字长”所占的字节数为8.字长的字节数 = 计算机位数/8.
字长:计算机的每个字所包含的位数称为字长。计算的字长是指它一次可处理的二进制数字的数目。字长是衡量计算机性能的一个重要因素。
字:字是计算机体系结构定义的,表示计算机中寄存器的长度:字 = 字节 * 字长,不同计算机的字长是不同的,由于其寄存器不同。
块:一个块是由若干个字组成的,是定长的。

原理也很通俗:【感觉考试不会这么蠢的考吧】
一开始CPU要字,发出此字的内存地址到cache和主存。
CPU–cache
cache看看自己,此时cache控制逻辑依据地址此字当前是否在cache中,是,立即传给CPU,不是,用主存读周期把此字从主存送到CPU,与此同时,把含有这个字的整个数据块从主存读出送到cache中。

cache的命中率

这个真的小学生题目。。

在一个程序执行期间
Nc” role=”presentation”>NcNc 定义为命中率
h=NcNc+Nm” role=”presentation”>h=NcNc+Nmh=NcNc+Nm
tc” role=”presentation”>tctc 表示未命中率,则cache/主存系统的平均访问时间:
ta=htc+(1−h)tm” role=”presentation”>ta=htc+(1h)tmta=htc+(1−h)tm
e” role=”presentation”>ee 表示访问效率
e=tcta” role=”presentation”>e=tctae=tcta
r=tmtc” role=”presentation”>r=tmtcr=tmtc 表示主存慢于cache的倍数
e=tcta=tchtc+(1−h)tm=1h+(1−h)r” role=”presentation”>e=tcta=tchtc+(1h)tm=1h+(1h)re=tcta=tchtc+(1−h)tm=1h+(1−h)r

你看看多简单!!!

3.6.2主存与cache的地址映射

什么是地址映射?!
为了把主存块放到cache中,用了某种方法把主存地址定位到cache中,称做地址映射
当CPU访问存储器的时,它所给出的一个字的内存地址会自动变换成cache中的地址。

1.全相联映射方式

cache数据块大小称为
主存数据块大小称为
行与块是等长的。每个块(行)由 k=2w” role=”presentation”>k=2wk=2w 个连续的字组成。
在全相联映射中,将内存中一个块的地址(块号)块的内容(字)一起存于cache的行中,其中块地址存于cache行的标记部分中。这种带全部块一起保存的方法,可使主存的一个块直接拷贝到cache中的任意一行上,非常灵活。
说了那么多,强调了那么多,不就是一个块直接放到一个行嘛。
考啥呢?一个表格:内存地址格式

例题:
有一个处理器,主存1MB,字长1B,块大小16B,cache容量64KB。若cache采用全相联映射,对内存地址(B0010)给出相应的标记和字号。
块大小16B=行大小=24” role=”presentation”>2424字节 w=4位
主存寻址单元数 2s+w=1M=220” role=”presentation”>2s+w=1M=2202s+w=1M=220, s=16位
SO

标记s 字地址w
16位 4位

2.直接映射方式

映射,就有点hash的味道,而此处直接映射方式就更加有这个味道了!
直接映射的方式是多对一的方式,是多个主存能拷贝到一个cache行中,不是同时。。

cache中的行号i 和主存中的块号j 构成 i = j mod m,m为cache的总行数

在直接映射中,cache将s位的块地址分成两部分:r位作为cache的行地址,s - r 位作为标记块数据一起保存在cache中的一行。
上面这句话其实信息量很大的。。。

先给出这个表格吧

标记s-r 行r 字地址w

上面那句话其实就包含了表格中的所有信息:
1.行r,即r位作为cache的行地址,就是cache有P行,r=log2P” role=”presentation”>r=log2Pr=log2P
2.标记,s我们还是很好知道,主存中有Q块,s=log2Q” role=”presentation”>s=log2Qs=log2Q, SO s = r不是轻而易举。
3.字地址w,不就是行(块)大小。

3.组相联映射方式

据说组相联方式是前两个方式的折衷方案。
这种方式把cache分成u组,每组v行。
m = u * v;组号 q = j mod u
块内存地址中s位块号划分成两个部分:低序的d位(2d=u” role=”presentation”>2d=u2d=u)用于表示组号,高序的s-d位作为标记块数据一起存于此组的行中。

直接例题
一个组相联cache由64个行组成,每组4行。主存包含4K个块,每块128个字。请表示内存地址格式。

标记s-d 组号d 字地址w

2d=64/4=16组−−−>d=4” role=”presentation”>2d=64/4=16>d=42d=64/4=16组−−−>d=4
2w=127−−−>w=7” role=”presentation”>2w=127>w=72w=127−−−>w=7
2s=4K−−−>s=12” role=”presentation”>2s=4K>s=122s=4K−−−>s=12
s−d=8” role=”presentation”>sd=8s−d=8
SO内存地址格式

标记s-d 组号d 字地址w
8位 4位 7位

总结:三种映射的优缺点


全相联映射方式的缺点:比较器电路难以设计和实现,因此只适用于小容量cache采用。
直接相连方式的优点是硬件简单,成本低。
缺点是每个主存块只有一个固定的位置可存放,如果块号相距m(cache行数)倍就要发生冲突,如果原先存入的行换出去,等下又要换进来,频繁的置换会使cache效率下降。
因此直接映射方式适用于大容量cache场合,更多的行数会减少冲突的次数




你可能感兴趣的:(计算机组成原理)