本文主要是介绍【408精华知识】主存相关解题套路大揭秘!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
讲完了Cache,再来讲讲主存是怎么考察的,我始终认为,一图胜千言,所以对于很多部件,我都是通过画图进行形象的记忆,那么接下来我们对主存也画个图,然后再来详细解读其考察套路~
文章目录
- 零、主存的真面目
- 一、按存储方式分类的存储器
- (一)随机存取存储器(Random Access Memory,RAM)
- 1.静态随机存取存储器(Static RAM,SRAM)
- 2.动态随机存取存储器(Dynamic RAM,DRAM)
- 3.SRAM与DRAM的对比
- (二)只读存储器(Read Only Memory,ROM)
- 1.掩模式只读存储器(Mask ROM,MROM)
- 2.一次可编程只读存储器(Programmable ROM,PROM)
- 3.可擦除可编程只读存储器(Erasable Programmable ROM,EPROM)
- 4.闪速存储器(Flash Memory)
- 5.固态硬盘(SolidState Drives,SSD)
- (三)顺序存取存储器(SAM)
- (四)直接存取存储器(DAM)
- (五)相联存储器(CAM)
- 二、线数计算
- (一)地址线位数
- (二)数据线位数
- (三)片选线位数
- 1.线选法
- 2.译码片选法
- (四)读写控制线位数
- 三、主存容量的扩展
- (一)位扩展
- (二)字扩展
- (三)字位同时扩展
- 四、多模块存储器
- (一)单体多字存储器
- (二)多体并行存储器
- 1.高位交叉编址
- 2.低位交叉编址
零、主存的真面目
接下来我们所有关于主存的考察形式的讨论都将围绕这张图展开~
一、按存储方式分类的存储器
我们观察这张主存图,可以发现它包含了两个部分,分别是RAM和ROM,它们是按存储方式分类的两种存储器,如果按存储方式来进行分类,可以将存储器分为以下五类:
(一)随机存取存储器(Random Access Memory,RAM)
存储器的任何一个存储单元的内容都可以随机存取,而且存取时间与存储单元的物理位置无关,主要用作主存或高速缓冲存储器。RAM 又分为以下两种:
1.静态随机存取存储器(Static RAM,SRAM)
SRAM的存储元是用双稳态触发器(六晶体管 MOS)来记忆信息的,静态是指即使信息被读出后,它仍保持其原状态而不需要再生(非破坏性读出),一般用于Cache。
2.动态随机存取存储器(Dynamic RAM,DRAM)
利用存储元电路中栅极电容上的电荷来存储信息的,DRAM的基本存储元通常只使用一个晶体管,所以它比 SRAM 的密度要高很多。相对于 SRAM来说,DRAM具有集成度高、位价低和功耗低等优点,但DRAM的存取速度比 SRAM慢,且必须定时刷新和读后再生,一般用于主存。
刷新方式分为三种:
3.SRAM与DRAM的对比
类型特点 | SRAM(不刷新) | DRAM(要刷新) |
---|---|---|
存储信息 | 触发器(比较稳定) | 栅极电容(容易跑电) |
破坏性读出? | 否 | 是(读一次放一次电) |
读出后需要重写? | 否 | 是(放完电得给它补) |
运行速度 | 快(不需要补电) | 慢(需要补电) |
集成度 | 低 | 高 |
发热量 | 高 | 低 |
存储成本 | 高 | 低 |
易失性存储器? | 是(没电不行) | 是(没电不行) |
需要刷新? | 否 | 是 |
送行列地址 | 一起送 | 分开送 |
常用作 | Cache | 主存 |
(二)只读存储器(Read Only Memory,ROM)
存储器的内容只能随机读出而不能写入。信息一旦写入存储器就固定不变,即使断电,内容也不会丢失,它与随机存储器可共同作为主存的一部分,统一构成主存的地址域。根据制造工艺的不同,ROM 可分为以下几种:
1.掩模式只读存储器(Mask ROM,MROM)
直接写入,无法修改。
2.一次可编程只读存储器(Programmable ROM,PROM)
只可写入一次,不可再修改。
3.可擦除可编程只读存储器(Erasable Programmable ROM,EPROM)
可进行多次重写。
4.闪速存储器(Flash Memory)
可进行多次快速擦除重写,由于写的时候需要先擦除,所以写比读慢,每个存储元只需要单个MOS管,位密度比RAM高,如U盘,SD卡。
5.固态硬盘(SolidState Drives,SSD)
由控制单元+Flash芯片组成,可进行多次快速擦除重写,如电脑上的机械硬盘。
(三)顺序存取存储器(SAM)
属于串行访问存储器,对存储单元进行读/写操作时,需按其物理位置的先后顺序寻址,包括顺序存取存储器,如磁带。
(四)直接存取存储器(DAM)
属于串行访问存储器,对存储单元进行读/写操作时,需按其物理位置的先后顺序寻址,包括直接存取存储器,如磁盘。
(五)相联存储器(CAM)
可以按内容访问的存储器,主要用于虚拟存储器中存放段表、页表和快表,以及Cache中存放块地址,这是因为在这两种应用中都需要快速查找。
二、线数计算
关于主存有一类题目是计算主存相关的线总位数,我们观察上面的图,可以发现主要有四类线:地址线、数据线、片选线、读写控制线,因此计算线位数主要就是这四类线,我们一个个来看。
(一)地址线位数
地址线用于寻址,其位数与MAR位数相同,其决定了主存地址空间的最大可寻址范围,例如36位地址最大寻址范围为0~236-1,即地址从0开始编号。
(二)数据线位数
数据线用于传送数据,其位数与MDR位数相同,其决定了一次可传送的最大数据位数,比如64位数据线,采用字节编址,那么最多可以存取8个单元的内容。
(三)片选线位数
CPU要实现对存储单元的访问,首先要选择存储芯片,即进行片选;然后在选定的芯片中选择具体的存储单元,以进行数据的读/写,即进行字选。芯片内的字选通常是由CPU送出的N条低位地址线完成(N由片内存储容量2N决定)。片选信号的产生方法分为线选法和译码片选法。
1.线选法
线选法用除片内寻址外的高位地址线直接连接至各个存储芯片的片选端,当某位地址线信息为“0”时,就选中与之对应的存储芯片。这些片选地址线每次寻址时只能有一位有效,不允许同时有多位有效,这样才能保证每次只选中一个芯片(或芯片组)。假设 4片2K×8位存储芯片采用线选法构成 8K×8 位存储器,其中A10-A0用于片内寻址,则各芯片的片选信号如表:
所选中芯片 | A14-A11 |
---|---|
0 | 1110 |
1 | 1101 |
2 | 1011 |
3 | 0111 |
因此如果采用线选法进行片选,片选线位数等于所要选的片总数。
2.译码片选法
译码片选法用除片内寻址外的高位地址线通过地址译码器产生片选信号。如用8片8K×8位的存储芯片组成64K×8位存储器(地址线为16位,数据线为8位),需要8个片选信号;若采用线选法,除去片内寻址的13位地址线,仅余高3位,不足以产生8个片选信号。因此,采用译码片选法,即用一片74LS138作为地址译码器,高3位用于片选,则A15A14A13=000时选中第一片,A15A14A13=001时选中第二片,以此类推。
因此如果采用译码片选法进行片选,片选线位数等于 log2(所要选的片总数) 。
(四)读写控制线位数
控制对芯片的读写,一般为1位。
三、主存容量的扩展
由于单个存储芯片的容量是有限的,它在字数或字长方面与实际存储器的要求都有差距,因此需要在字和位两方面进行扩充才能满足实际存储器的容量要求。
(一)位扩展
位扩展是指对字长进行扩展(增加存储字长)。当CPU 的系统数据线数多于存储芯片的数据位数时,必须对存储芯片扩位,使其数据位数与CPU的数据线数相等。如图,8片8Kx1bit的RAM芯片组成8Kx8bit的存储器:
(二)字扩展
字扩展是指对存储字的数量进行扩展,而存储字的位数满足系统要求。系统数据线位数等于芯片数据线位数,系统地址线位数多于芯片地址线位数。如图,用4片16K×8位的RAM芯片组成64K×8位的存储器:
(三)字位同时扩展
字位同时扩展是前两种扩展的组合,这种方式既增加存储字的数量,又增加存储字长。如图,用8片16K×4位的RAM芯片组成64K×8位的存储器:
四、多模块存储器
多模块存储器是一种空间并行技术,利用多个结构完全相同的存储模块的并行工作来提高存储器的吞吐率。常用的有单体多字存储器和多体低位交叉存储器。CPU的速度比存储器快得多,若同时从存储器中取出n条指令,就可以充分利用 CPU资源,提高运行速度。多体交叉存储器就是基于这种思想提出的。
(一)单体多字存储器
在单体多字系统中,每个存储单元存储m个字,总线宽度也为m个字,一次并行读出m个字。在一个存取周期内,从同一地址取出m条指令,然后将指令逐条送至CPU执行,即每隔 1/m存取周期,CPU 向主存取一条指令,这显然提高了单体存储器的工作速度。
(二)多体并行存储器
多体并行存储器由多体模块组成。每个模块都有相同的容量和存取速度,各模块都有独立的读/写控制电路、地址寄存器和数据寄存器。它们既能并行工作,又能交叉工作。多体并行存储器分为高位交叉编址和低位交叉编址两种。
高位交叉编址和低位交叉编址的区别在于体号在地址的前面部分还是后面部分。
1.高位交叉编址
在高位交叉方式下,总把低位的体内地址送到由高位体号确定的模块内进行译码。访问一个连续主存块时,总是先在一个模块内访问,等到该模块访问完才转到下一个模块访问,CPU总是按顺序访问存储模块,各模块不能被并行访问,因而不能提高存储器的吞吐率。
2.低位交叉编址
低位交叉方式下,总是把高位的体内地址送到由低位体号所确定的模块内进行译码。程序连续存放在相邻模块中,因此称采用此编址方式的存储器为交叉存储器。交叉存储器可以采用轮流启动或同时启动两种方式。
在轮流启动方式下,若每个模块一次读/写的位数正好等于数据总线位数,模块的存取周期为T,总线周期为r,为实现轮流启动方式,存储器交叉模块数应大于或等于m=T/r,按每隔1/m个存取周期轮流启动各模块,则每隔1/m个存取周期就可读出或写入一个数据,存取速度提高m倍。交叉存储器要求其模块数大于或等于m,以保证启动某模块后经过m×r的时间后再次启动该模块时,其上次的存取操作已经完成(以保证流水线不间断)。
这样,连续存取m个字所需的时间为t1=T+(m-1)r。而顺序方式连续读取m个字所需的时间为t2=mT,可见交叉存储器的带宽大大提高。
在同时启动方式下,若所有模块一次并行读/写的总位数正好等于数据总线位数,则可以同时启动所有模块进行读/写。设每个模块一次读/写的位数为16位,模块数m=4,数据总线位数为64位,4个模块一共提供64位,正好构成一个存储字,因此应该同时启动4个模块进行并行读/写。
写在后面
这个专栏主要是我在学习408真题的过程中总结的一些笔记,因为我学的也很一般,如果有错误和不足之处,还望大家在评论区指出。希望能给大家的学习带来一点帮助,共同进步!!!
参考资料
[1]王道408教材(2025版)
[2]王道课程资料
这篇关于【408精华知识】主存相关解题套路大揭秘!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!