计算机组成原理(1)----存储器相关(2)

简介: 计算机组成原理(1)----存储器相关

计算机组成原理(1)----存储器相关(1):https://developer.aliyun.com/article/1511432

三.ROM芯片

(二)中讲述了RAM芯片,DRAM和SRAM芯片都支持随机存取,读写速度很快,但都属于易失性芯片,断电后数据消失,而ROM芯片属于非易失性芯片断电后数据不会丢失

1.几种ROM芯片

ROM芯片分类如下:

(1)MROM

MROM(Mask Read-Only Memory)----掩模式只读存储器


厂家按照客户需求,在芯片生产过程中直接写入信息,之后任何人不可重写(只能读出)。可靠性高、灵活性差、生产周期长、只适合批量定制


(2)PROM

可编程只读存储器PROMProgrammablè Read-Only Memory)


用户可用专门的PROM写入器写入信息,写一次之后就不可更改



(3)EPROM

ÉPROM(Erasabl Programmable Read-Only Memory)----可擦除可编程只读存储器


允许用户写入信息,之后用某种方法擦除数据,可进行多次重写


UVEPROM(ultravioletrays)----用紫外线照射8~20分钟,擦除所有信息


EEPROM(也常记为E^2PROM,第一个E是Electrically)----可用“电擦除”的方式,擦除特定的字


(4)闪存

Flash Mzmory----闪速存储器(注:U盘、SD卡就是闪存)


在EEPROM 基础上发展而来,断电后也能保存信息,且可进行多次快速擦除重写


注意:


1.由于闪存需要先电擦除再写入,因此闪存的“写”速度要比“读”速度更慢


2.每个存储元只需单个MOS管,所以闪存的位密度比RAM高,即对于体积相同的两个芯片而言,Flash闪存芯片存储元的数量要比RAM芯片存储元的数量多,也就是能保存更多的2进制比特位


(5)SSD

SSD(Solid State Drives)----固态硬盘


由控制单元+存储单元(Flash 芯片)构成,与闪速存储器的核心区别在于控制单元不一样,但存储介质都类似,可进行多次快速擦除重写。SSD速度快、功耗低、价格高。目前个人电脑上常用SSD取代传统的机械硬盘。


拓展:手机辅存也使用ash 芯位,相比SSD使用的芯片集成度高、功耗低、价格贵

2.计算机内的重要ROM

CPU的任务是到主存中取指令并执行指令,但是RAM的特性是断电后数据丢失,所以关机后,主存中的数据丢失,开机时,需要将操作系统和相关的指令数据调入主存,而操作系统安装在辅存中

开机时,由于主存中的数据全部丢失,CPU需要从主板的ROM芯片中读取开机所需指令,也就是主板上的 BIOS芯片(ROM)存储了“ 自举装入程序”(CPU在刚开始需要执行的程序),负责引导装入操作系统(开机)。ROM芯片是非易失性的,所以即使芯片没有通电,“ 自举装入程序”指令数据也不会丢失。

注:虽然ROM芯片集成在主板上,但是逻辑上,应该把它看作主存的一部分,所以逻辑上主存由RAM(内存条)和ROM(主存上的BIOS芯片)组成,且二者常统一编址

总结:

1.很多ROM芯片虽然名字是“Read-only”,但很多ROM也可以“写”。

2.闪存的写速度一般比读速度更慢,因为写入前要先擦除。

3.RAM芯片是易失性的,ROM芯片是非易失性的。很多ROM也具有“随机存取”的特性。

四.主存的优化技术

存取周期即可以连续读/写的最短时间间隔

注:由于RAM芯片的读操作是破坏性的读出,所以DRAM的恢复时间比较长,有可能是存取时间的几倍(SRAM的恢复时间较短)。如:存取时间为r,存取周期关T, T=4r

对于多核CPU,若第一个CPU访问存储器,则第二个CPU需要等到恢复时间结束才能访问存储器,这个问题该如何解决?可以用双口RAM


即便是单核CPU,CPU的读写速度比主存快很多,主存回复时间太长怎么办?可以用多模块存储器


1.双口RAM

双端口RAM可以优化多核CPU访问一根内存条的速度,例如下图,两个CPU可以通过RAM的两个端口,访问RAM,

两个端口对同一主存操作有以下4种情况:

1.两个端口同时对不同的地址单元存取数据。这种情况是允许的。


2.两个端口同时对同一地址单元读出数据。由于读操作不会改变RAM中的数据,所以这种情况也是允许的。


3.两个端口同时对同一地址单元写入数据。这种情况会导致写入的数据相互覆盖,是不被允许的。


4.两个端口同时对同一地址单元,一个写入数据,另一个读出数据。这时读出数据的一个CPU可能会读出错误,所以这种情况也是不被允许的。


若出现3,4情况,RAM会向两个CPU置“忙”信号为0,由判断逻辑决定暂时关闭一个端口(即被延时),未被关闭的端口正常访问,被关闭的端口延长一个很短的时间段后再访问。

2.多模块存储器

即便是单核CPU,CPU的读写速度比主存快很多,主存回复时间太长,所以可以用多模块存储器。

(1)多体并行存储器

对于多体并行存储器,如下图所示,我们可以理解为在电脑上插了4根内存条,并且每根内存条大小

一致。

•高位交叉编址

高位交叉编址指的是CPU会根据主存的更高几位地址判断访问哪一个存储体,例如下图可以用2位(2^2=4种情况表示4个存储体)判断访问哪个存储体。

并且如图所示每个存储体有8个存储单元,4*8=32(2^5),所以可以用5位地址表示主存地址。

我们把前两个地址称为体号,后3个地址称为体内地址。

若给定一个地址 x,如何确定它属于第几个存储体?


1.直接用2进制地址判断,即通过开头的体号判断属于第几个存储体


2.可以用10进制的地址取余判断其属于第几个存储体,例如有m个存储体,则将10进制地址x%m


对于高位交叉编址,2进制转为10进制,地址编号如图所示:

若每个存储体存取周期为T存取时间为r,假设 T=4r,连续访问00000,00001,00010,00011,00100

那么CPU先访问00000存储单元,在r存取时间结束后,还需要等待3r,才能访问00001存储单元,因为00000和00001是在同一个存储体,那么读了五个存储单元,就耗时5T,即连续取n个存储单元,耗时nT

•低位交叉编址

低位交叉编址指的是CPU会根据主存的更低几位地址判断访问哪一个存储体。如下图所示,即低2位用于判断是哪个存储体,低2位为体号,高3位为体内地址。

若给定一个地址 x,如何确定它属于第几个存储体?


1.直接用2进制地址判断,即通过末尾的体号判断属于第几个存储体


2.可以用10进制的地址取余判断其属于第几个存储体,例如有m个存储体,则将10进制地址x%m


对于低位交叉编址,2进制转为10进制,地址编号如图所示:

若每个存储体存取周期为T存取时间为r,假设 T=4r,连续访问00000,00001,00010,00011,00100

00000属于M0存储体,那么CPU会从M0中读出一个字,CPU经过存取时间r,对这一存储单元的读取工作就完成了,剩下的3r只需要存储体自己恢复即可,因为00001在M1存储体中,所以CPU不需要等待3r的时间,即可访问下一个存储单元00001


以此类推,当M3存储体的00011被访问后,刚好过了4r的时间



接着M0存储体的00100不需要等待,可以继续被读取。

所以我们读取连续的5个内存单元耗时为T+4r=2T


连续取n个存储字--->耗时T+(n-1)r


从宏观上来看,若取n--->无穷大,那么读写一个字的时间非常接近r,而对于高位交叉编址,CPU读写一个字的时间为T,为低位交叉编址的时间的4倍,所以得出结论:宏观上,一个存储周期内,m体交叉存储器可以提供的数据量为单个模块的m倍。


所以低位交叉编址比高位交叉编址性能好得多,


注意:为什么这里探讨的都是"连续访问"的情况?


因为实际应用中,很多数据其实就是存放在地址连续的空间中,例如程序指令的执行是一条一条顺序执行的,除非遇到if...else需要跳转等情况。

既然低位交叉编址可以有效地提高效能,那么应该使用多少个存储体呢?

低位交叉编址其实采用了"流水线"的方式并行存取(宏观上并行,微观上串行),按照上述规律,存取周期为T,存取时间为r,为了使流水线不间断,应保证模块数 m T/r,上述例子中就刚好取了=的情况,即4=4/1

取了4个存储体,当CPU访问完M3花费r时间后,又需要访问M0时,刚好恢复时间结束,CPU可以再次进行读取操作

若m,如下图所示,存储体数目为3,那么CPU需要等待r,才能继续访问M0

若m>T/r,如下图所示,存储体数目为5,那么CPU在访问完第4个存储体时,M0已经准备好被访问了,但是还存在第5个存储体,所以M0被闲置了一个r

这样会导致不能更好地发挥存储体的作用,而多一个存储体,成本也会上升,所以最好的方案为M=T/r,这样使得存储体的效率达到顶峰,并且使用的存储体也最少。

以下两种描述意思相同:


存取周期为T,存取时间为r,为了使流水线不间断,应保证模块数 mT/r


存取周期为T,总线传输周期为r,为了使流水线不间断,应保证模块数 mT/r


总线传输周期即,存储器将数据通过数据总线传送给CPU的时间,存取时间和总线传输时间都意味着CPU存取一次的时间不会低于r

总结:

对于多体并行存储器,每个模块都有相同的容量和存取速度。各模块都有独立的读写控制电路、地址寄存器和数据寄存器。它们既能并行工作,又能交叉工作。

补充:

若实现高位交叉的多体存储器(相当于单纯的扩容)

若实现低位交叉的多体存储器(俗称“双通道”)

为什么存储体容量要相同呢?

我们模拟双通道,即有两根内存条,若容量不同,上半部分可以使用多通道,而下半部分则只有单通道,假如正在运行的游戏被放到低地址部分,那么游戏的性能会更好一些,而放到高地址部分,游戏的性能会更差一些,这样的话,对用户而言,电脑性能是不稳定的,用户的体验感会下降。

为什么存储体主频要相同呢?

若使用主频不同的存储体,主频更高的存储体会进行降频,这样发挥不出更高频存储体的功效,虽然主频不同存储体也可以实现双通道,但是会浪费主频更高存储体的部分性能

(2)单体多字存储器

而对于单体多字存储器,相当于把每个存储体进行合并,即每个存储体并不相互独立,整个存储体只有一套读写控制电路、地址寄存器和数据寄存器。


若下图所示,对于多体并行存储器,每次只能读取一个字,但是对于单体多字存储器,由于每个存储单元存储m个字,总线宽度也为m个字,所以一次能并行读出m个字

相比于多体并行存储器而言,单体多字存储器每次只能同时取m个字,不能单独取其中某个字。

若读取的指令和数据,在主存内刚好连续地占用了一整行,那这种情况比较理想,而若需要读取的数据比较离散,那么会读出很多无用的数据,所以对于这种情况,采用多体并行存储器较好些。


所以多体并行存储器要灵活一些,并且两者的存取速度其实差不多,若多体并行存储器有4个存储体,且T=4r,存取时间为r,那么1T时间,多体并行存储器能读取4个存储字,对于单体多字存储器,若每个存储单元存储4个字,每个存取周期T,可以直接读入4个存储字,因此平均下来,两者每读一个字都需要r时间。


目录
相关文章
|
16天前
|
存储
计算机组成原理(8)----专用数据通路
计算机组成原理(8)----专用数据通路
30 1
|
16天前
|
存储
计算机组成原理(5)----CPU的基本结构
计算机组成原理(5)----CPU的基本结构
42 0
|
16天前
|
存储 芯片 块存储
计算机组成原理(1)----存储器相关(1)
计算机组成原理(1)----存储器相关
37 4
|
16天前
|
存储 Unix 程序员
计算机组成原理(5)----指令系统(2)
计算机组成原理(5)----指令系统
45 1
|
16天前
|
存储 人工智能 C语言
计算机组成原理(5)----指令系统(1)
计算机组成原理(5)----指令系统
15 1
|
17天前
|
存储 移动开发 固态存储
计算机组成原理(3)-----外存储器
计算机组成原理(3)-----外存储器
71 1
|
18天前
|
存储
【计算机组成原理】指令系统
【计算机组成原理】指令系统
109 0
【计算机组成原理】指令系统
|
18天前
|
存储 编译器 内存技术
【计算机组成原理】中央处理器
【计算机组成原理】中央处理器
138 1
【计算机组成原理】中央处理器
|
8月前
计算机组成原理(2.2)--系统总线
它是将 CPU 、主存、 I/0 设备(通过 I/0 接口)都挂在一组总线上,允许 I/0 设备之间、I/0 设备与 CPU 之间或 I/0 设备与主存之间直接交换信息。
59 0
|
8月前
|
存储 芯片
计算机组成原理(2.1)--系统总线
总线(分散连接):连接多个部件的信息传输线,是各部件共享的传输介质。 分散连接:各部件之间使用单独的连线
58 0

热门文章

最新文章