【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
01110
11101
21011
30111

因此如果采用线选法进行片选,片选线位数等于所要选的片总数

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]王道课程资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/643484.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

结构体;结构成员访问操作符

结构体: 虽然c语言已经提供了内置类型,比如:char、short、int、long等,但还是不够用,就好比我描述一个人,我需要描述他的身高,体重,年龄,名字等信息&#xff0c…

类与对象:接口

一.概念 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。 二.语法规则 与定义类相似,使用interface关键词。 Idea可以在开始时直接创建…

《计算机网络微课堂》1-6 计算机体系结构

常见的计算机网络体系结构 从本节课开始,我们要用 4 次课的时间来介绍有关计算机网络体系结构的知识,具体包含以下内容: 一,常见的计算机网络体系结构二,计算机网络体系结构分层的必要性三,计算机网络体系…

使用OpenCV dnn c++加载YOLOv8生成的onnx文件进行目标检测

在网上下载了60多幅包含西瓜和冬瓜的图像组成melon数据集,使用 LabelMe 工具进行标注,然后使用 labelme2yolov8 脚本将json文件转换成YOLOv8支持的.txt文件,并自动生成YOLOv8支持的目录结构,包括melon.yaml文件,其内容…

力扣刷题---2418. 按身高排序【简单】

题目描述 给你一个字符串 数组 names ,和一个由 互不相同 的正整数组成的数组 heights 。两个数组的长度均为 n 。 对于每个下标 i,names[i] 和 heights[i] 表示第 i 个人的名字和身高。 请按身高 降序 顺序返回对应的名字数组 names 。 示例 1&…

力扣刷题---961. 在长度 2N 的数组中找出重复 N 次的元素【简单】

题目描述🍗 给你一个整数数组 nums ,该数组具有以下属性: nums.length 2 * n. nums 包含 n 1 个 不同的 元素 nums 中恰有一个元素重复 n 次 找出并返回重复了 n 次的那个元素。 示例 1: 输入:nums [1,2,3,3] 输…

微服务中使用Maven BOM来管理你的版本依赖

摘要: 原创出处 sf.gg/a/1190000021198564 「飘渺Jam」欢迎转载,保留摘要,谢谢! 为什么要使用BOM? 如何定义BOM? 项目使用方法? BOM(Bill of Materials)是由Maven提供的功能,它通过定义一整套相互兼容的jar包版…

93.网络游戏逆向分析与漏洞攻防-游戏技能系统分析-增强技能信息显示后进行分析

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果,代码看不懂是正常的,只要会抄就行,抄着抄着就能懂了 内容…

STM32中断编程入门

文章目录 一、 理论部分1.中断系统2.中断执行流程3.NVIC的基本结构4.EXTI介绍5.AFIO复用IO口 二、实验目的:学习stm32中断原理和开发编程方法。使用标准完成以下任务:(一)实验一 开关控制LED的亮灭1.代码部分2.运行结果 &#xff…

网络空间安全数学基础·整除与同余

主要内容: 整除的基本概念(掌握) 素数(掌握) 同余的概念(掌握) 1.1整除 定义:设a,b是任意两个整数,其中b≠0,如果存在一个整数q,使 …

如何网页在线编辑 Office word 文档,并支域功能:创建域/插入域/替换域等

在日常在线办公场景中,我们经常会遇到一些复杂的文档编辑需求,特别是我们经常会遇到一些复杂的数学公式,会用到“域”功能,“域”功能便是一个高级且实用的工具。通过设置域,用户可以实现文档的自动化处理,…

卷积神经网络CNN动态演示和输出特征图计算公式

目录 一、卷积运算 1、卷积(Convolution) 2、填充(Padding) (1)Valid Padding (2)Same Padding 3、步长 4、卷积核大小为什么一般为奇数奇数? 5、卷积核kernel和…

【C++】哈希和unordered系列容器

目录 一、unordered系列关联式容器的引入 二、容器使用 2.1 unordered_map的文档说明 2.2 unordered_map的使用 2.3 unordered_set 三、底层结构 3.1 哈希概念 3.2 哈希表 3.3 哈希冲突 3.4 哈希函数 3.5 哈希冲突解决 3.5.1 闭散列 3.5.2 开散列 3.5.3 思考 四…

【微积分】CH16 integrals and vector fields听课笔记

【托马斯微积分学习日记】13.1-线积分_哔哩哔哩_bilibili 概述 16.1line integrals of scalar functions [中英双语]可视化多元微积分 - 线积分介绍_哔哩哔哩_bilibili 16.2vector fields and line integrals: work circulation and flux 向量场差不多也是描述某种…

Vitis HLS 学习笔记--控制驱动任务示例

目录 1. 简介 2. 代码解析 2.1 kernel 代码回顾 2.2 功能分析 2.3 查看综合报告 2.4 查看 Schedule Viewer 2.5 查看 Dataflow Viewer 3. Vitis IDE的关键设置 3.1 加载数据文件 3.2 设置 Flow Target 3.3 配置 fifo 深度 4. 总结 1. 简介 本文对《Vitis HLS 学习…

Android面试题之Kotlin常见集合操作技巧

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 list 创建和修改 不可变list,listOf var list listOf("a","d","f") println(list.getOrElse(3){"Unkn…

《计算机网络微课堂》2-5 信道的极限容量

本节课我们介绍信道极限容量的有关问题。 我们都知道信号在传输过程中会受到各种因素的影响,如图所示,这是一个数字信号,‍‍当它通过实际的信道后,波形会产生失真,当失真不严重时,在输出端‍‍还可根据以失…

Mysql教程(0):学习框架

1、Mysql简介 MySQL 是一个开放源代码的、免费的关系型数据库管理系统。在 Web 开发领域,MySQL 是最流行、使用最广泛的关系数据库。MySql 分为社区版和商业版,社区版完全免费,并且几乎能满足全部的使用场景。由于 MySQL 是开源的&#xff0…

力扣刷题---409. 最长回文串【简单】

题目描述 给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的回文串 。 在构造过程中,请注意 区分大小写 。比如 “Aa” 不能当做一个回文字符串。 示例 1: 输入:s “abccccdd” 输出:7 解释: 我们可以构造的最长的回文串…

Docker部署SpringBoot项目(jar包+Mysql)

部署Java项目 项目准备准备Java项目镜像准备配置网络 部署项目细节展示 项目准备 准备Java项目 hmall项目是一个maven聚合项目,使用IDEA打开hmall项目,查看项目结构如图: 我们要部署的就是其中的hm-service,其中的配置文件采用…