【计算机组成原理】主存储器深度解析

📢博客主页:https://blog.csdn.net/2301_779549673
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📢本文由 JohnKi 原创,首发于 CSDN🙉
📢未来很长,值得我们全力奔赴更美好的生活✨

在这里插入图片描述

在这里插入图片描述

文章目录

  • 📢前言
  • 🏳️‍🌈一、主存储器概述
  • 🏳️‍🌈二、SRAM 与 DRAM 对比
  • 🏳️‍🌈三、主存储器内部结构
  • 🏳️‍🌈四、ROM 的种类与特点
  • 🏳️‍🌈五、多模块存储器及字位拓展法
  • 👥总结


📢前言

在计算机考研 408 的漫漫征途中,主存储器无疑是一座关键的知识堡垒。主存储器作为计算机系统的核心组成部分,其性能和结构直接影响着整个计算机的运行效率。对于备考 408 的学子们来说,深入理解主存储器的各个方面,包括 SRAM 和 DRAM 的特性对比、内部结构、基本组成,ROM 的不同类型,以及多模块存储器和字位拓展法等内容,不仅是应对考试的必要之举,更是为日后深入学习计算机体系结构奠定坚实的基础。本文将系统地对考研 408 中主存储器的相关知识进行深度解析,助力考生们攻克这一重要考点。

在这里插入图片描述


🏳️‍🌈一、主存储器概述

主存储器在计算机组成中占据着至关重要的地位。它是计算机系统的核心组成部分之一,直接影响着计算机的性能和运行效率。

考研 408 中,主存储器涵盖了多个重要的知识点。首先,主存储器包括随机存取存储器(RAM)只读存储器(ROM)。RAM 又分为静态随机存取存储器(SRAM)动态随机存取存储器(DRAM)。SRAM 通常由 MOS 管组成,速度快但成本高;DRAM 则利用电容的电荷存储信息,需要不断刷新,成本相对较低。

下图左边是DRAM的一个存储元,右边是SRAM的一个存储元
在这里插入图片描述

主存储器与 CPU 的连接也是一个重要的考点。CPU 通过地址线访问存储器的 MAR(地址寄存器),从主存储器中读取指令和数据。主存储器的容量和速度对计算机的性能有着重要影响。一般来说,主存储器的容量越大,可以存储的程序和数据就越多;速度越快,CPU 与主存储器之间的数据交换就越高效。

此外,多模块存储器也是主存储器的一个重要方面。多模块存储器可以提高存储器的访问速度,常见的有高位交叉编址低位交叉编址两种方式。

🏳️‍🌈二、SRAM 与 DRAM 对比

请添加图片描述

(一)存储原理差异
SRAM 使用触发器来存储数据,每个存储元由多个触发器构成,能呈现出两种稳定状态,分别对应二进制的 0 和 1。由于这种设计,SRAM 在读出数据后,数据状态依然保持稳定,属于非破坏性读出。而 DRAM 使用电容器来存储数据,通过电容的充放电来表示二进制信息。当对 DRAM 进行读操作时,电容中的电荷会被释放,导致信息被破坏,所以需要进行重写操作,即给电容重新充电。

(二)寻址方式区别
SRAM 采用单一地址寻址,同时送出行地址和列地址,把行地址和列地址拼接起来作为一次读写访问的地址,然后放到地址线上。

DRAM 分两次送行列地址,先送出行地址,选中一整行存储单元,再送入列地址,从该行中选中特定的存储单元。这种寻址方式使得 DRAM 需要更多的控制逻辑,但可以减少地址线的数量。
在这里插入图片描述

所以,假设一个用 DRAM,采用地址复用技术,容量是 1024 * 8位

则它的地址引脚为 1024 = 210,因为每根引脚能提供 0 或 1 的数据,地址复用技术分次输入 地址,所以仅需要5根地址引脚,即:行(25) * 列(25,就能实现

数据引脚能够提供8位的数据即可,所以需要8根数据引脚

总的来说,需要13根引脚

(三)芯片特性不同
在读写速度方面,SRAM 的读写速度非常快,远高于 DRAM。这是因为 SRAM 的存储元结构简单,不需要进行额外的刷新操作。而 DRAM 由于需要不断刷新电容中的电荷,所以读写速度相对较慢。在功耗方面,SRAM 在读写过程中消耗的功耗更低。相比之下,DRAM 需要定期刷新电容,功耗较高。在集成度方面,DRAM 具有较高的集成度,可以使用一个晶体管和一个电容器来存储一个比特的信息,因此可以实现更大的存储容量。而 SRAM 的存储元需要六个晶体管,集成度相对较低,难以制造大容量的存储器。

(四)刷新需求差异
DRAM 因电容电荷易流失,需要定期刷新。通常存储器里采用的电容,电荷只能维持两毫秒的时间。因此,在两毫秒之内必须给 DRAM 中的电容刷新一次,也就是给电容充电。刷新操作由专门的刷新电路支持,会直接读出一整行的存储单元的信息然后重新写入,耗时和一个读写周期的耗时差不多。而 SRAM 只要不断电,存储在其中的数据就不会丢失,无需刷新。

在这里插入图片描述

🏳️‍🌈三、主存储器内部结构

(一)存储体构成
存储体是主存储器的重要组成部分。存储体由许多存储单元组成,每个存储单元又包含若干个存储元件。存储单元可以看作是存储二进制代码的容器,一个存储单元能够存储一连串的二进制代码,这串二进制代码被称为一个存储字。而存储元件则可以存储一位二进制数 0 或 1。

例如,存储体就如同一栋大楼,大楼内有很多个房间,这些房间就相当于存储单元,每个房间又有很多个床位,床位就如同存储元件。二进制代码 0 和 1 可以分别表示不同的对象。存储单元在存储体中是有编号的,这些编号称为存储单元的地址号。存储单元地址的分配有大端、大尾方式和小端、小尾方式两种。存储单元是按地址寻访的,这些地址同样都是二进制的形式。

(二)MAR 和 MDR 的作用
MAR(存储地址寄存器) 保存的是存储单元的地址,其位数反映了存储单元的个数。比如有 32 个存储单元,而存储单元的地址是用二进制来表示的,那么 5 位二进制数就可以表示 32 个存储单元,此时 MAR 的位数就是 5 位。在实际运用中,知道了 MAR 的位数,就可以确定存储单元的个数。

MDR(存储数据寄存器) 存放的是从存储元件读出,或者要写入某存储元件的数据(二进制数)。如果 MDR = 16,即每个存储单元进行访问的时候,数据是 16 位,那么存储字长就是 16 位。MDR 的位数反映存储字长。

(三)主存储器与 CPU 工作原理
在现代计算中,主存储器和 CPU 的数据交换是通过一系列控制信号实现的。CPU 中的控制器要给主存发送一系列的控制信号,包括读写命令、地址译码或者发送驱动信号等等。主存由半导体元件和电容器件组成,驱动器、译码器、读写电路均位于主存储芯片中。MAR、MDR 位于 CPU 的内部芯片中。存储芯片和 CPU 芯片通过系统总线(数据总线、系统总线)连接。

当要完成一个完整的读取操作时,首先 CPU 中的控制器发出读命令等控制信号,通过地址总线将存储单元的地址从 MAR 传输到主存储器。主存储器根据地址找到相应的存储单元,将存储单元中的数据通过数据总线传输到 MDR,再由 MDR 传输到 CPU 内部进行处理。在写入操作时,CPU 将数据加载到 MDR 中,将要写入数据的内存地址加载到 MAR 中,然后发出写入数据的指令,将 MDR 中的数据写入到 MAR 指示的内存位置。
在这里插入图片描述

🏳️‍🌈四、ROM 的种类与特点

(一)MROM
MROM(Mask-programmed ROM),即掩膜编程的只读存储器。这种类型的 ROM 是在制造过程中由厂家通过掩膜技术写入数据,一旦生产完成,数据就无法更改。客户不能对其进行重写操作,这使得 MROM 的灵活性较差。然而,正因为其数据在制造后就固定不变,所以具有很高的可靠性。在一些对数据稳定性要求极高且不需要更改数据的应用场景中,MROM 发挥着重要作用。

(二)PROM
PROM(Programmable ROM)可编程只读存储器。用户可以使用专门的写入器对 PROM 进行一次编程,将数据写入其中。但在写入完成后,就不能再进行更改。这种特性使得 PROM 在一些特定的应用中具有一定的优势,比如在一些需要固定数据但又不希望数据被随意更改的场合。

(三)EPROM
EPROM(Erasable Programmable ROM)可擦除可编程只读存储器。用户可以对 EPROM 进行擦除操作,然后重新写入数据。EPROM 主要分为两种类型:UVEPROM(紫外线擦除可编程只读存储器)和 EEPROM(Electrically Erasable Programmable ROM,电可擦除可编程只读存储器)。UVEPROM 需要通过紫外线照射一定时间才能擦除数据,然后进行重新编程。而 EEPROM 则可以通过电信号进行擦除和编程操作,更加方便快捷。

(四)Flash Memory
Flash Memory,即闪存。闪存可以进行多次快速的擦除和重写操作,具有较高的位密度。虽然闪存可以进行读写操作,但它仍然被归为 ROM 的一种类型。这是因为闪存的写入操作相对较慢,而且在写入之前通常需要先进行擦除操作。此外,闪存的擦除和写入次数也是有限的。闪存广泛应用于各种存储设备中,如 U 盘、固态硬盘等。

(五)SSD
SSD(Solid State Drive)固态硬盘。固态硬盘主要由闪存芯片组成,用于存储数据。同时,固态硬盘还需要一个控制单元来控制数据的读写操作。固态硬盘具有很多优点,比如读写速度快、抗震性好、功耗低等。据统计,固态硬盘的读写速度可以达到传统机械硬盘的数倍甚至数十倍。此外,固态硬盘没有机械部件,所以在抗震性方面表现出色,即使在受到震动或冲击的情况下,也不容易损坏数据。而且,固态硬盘的功耗相对较低,有助于延长设备的电池续航时间。然而,固态硬盘也存在一些缺点。首先,固态硬盘的价格相对较高,尤其是大容量的固态硬盘。其次,固态硬盘的写入寿命是有限的,虽然目前的固态硬盘技术已经大大提高了写入寿命,但在长期大量写入数据的情况下,仍然可能会出现故障。最后,固态硬盘的数据恢复难度较大,如果固态硬盘出现故障,数据恢复的成功率相对较低。
在这里插入图片描述

🏳️‍🌈五、多模块存储器及字位拓展法

(一)主存容量扩展方法

  1. 位扩展法:当 CPU 的数据线与存储芯片的数据位数不一致时,可以采取位扩展的方式。例如,若 CPU 有 8 根数据线,而存储芯片是 8K×1 位的芯片,213=8K,因此需要 13 根地址线。一个芯片只有一个输出数据,也就是只有一个数据线,所以需要 8 个这样的芯片才能满足 CPU 的 8 位数据线的要求。位扩展的连接方式是将多个存储芯片的地址端、片选端和读写控制端相应并联,数据端分别引出。当 CPU 发出寻址指令后,同一时间对多个存储芯片进行寻址,多个芯片同一时间返回数据,同时到达 CPU 的数据端。
    请添加图片描述

  2. 字扩展法:字扩展是指增加存储器中字的数量,而位数不变。将多个一字节存储芯片的数据线同时并到 CPU 的数据线,片选线进行选通,可以避免数据的混乱。当 CPU 发出寻址指令后,同一时间只对一个存储芯片进行寻址,这个芯片返回数据,到达 CPU 的数据端。字扩展将芯片的地址线、数据线、读写控制线并联,由片选信号来区分各芯片。
    在这里插入图片描述

  3. 字位同时扩展法:字位同时扩展指既增加存储字的数量,又增加存储字长。采用字位同时扩展时,各芯片连接地址线的方式相同,但是连接数据线的方式不同,而且需要通过片选信号或译码器设计连接到相应的芯片。例如,先进行两个 16K×4 位的芯片进行位扩展,此时就构成了 16K×8 位的芯片,然后水平扩展 4 个进行字扩展,最终形成了一个 64K×8 位的容量的芯片(214=16K)。
    在这里插入图片描述

(二)存储芯片地址分配与片选
线选法: 使用一个地址线对应一个芯片。优点是不需要地址译码器,线路简单,选择芯片无须外加逻辑电路,仅适用于连接存储芯片较少的场合。缺点是不能使用连续空间,因为片选地址每次寻址时只能有一位有效,不允许同时有多位有效。例如,A13、A14 只能取值 10 或 01,其空间范围是 (10 0000…0000 到 10 1111…1111) 和 (01 0000…0000 到 01 1111…1111),其中 00 xxxx…xxxx 和 11 xxxx…xxxx 空间没有使用到。

译码片选法: 用除片内寻址外的高位地址线通过地址译码器芯片产生片选信号。优点是地址空间连续,n 条地址线经过译码器可以转化成 2n 个不同的芯片编号。以 A13、A15 为片选信号为例,片选信号的 A14 为无效信号,可以为任何值,而 A13 和 A15 决定了芯片选取。

(三)多体并行存储器
高位交叉编址: 程序按照体内地址顺序存放(一个体存满后,再存入下一个体),高位地址表示体号,低位地址为体内地址。优点是某一组的故障不影响其他组,且容易通过添加模块来扩充容量;由于体内地址连续,有利于存储器扩充。缺点是相邻地址单元的数据放在同一组存储单元,各组间串行工作,不利于提升存储器的带宽。

低位交叉编址: 程序连续存放在相邻体中,低位地址用来表示体号,高位地址为体内地址。这种编址方式又称为模 M 编址(M 等于模块数),一般模块数取 2 的方幂,使硬件电路比较简单。优点是相邻地址单元的数据放在不同组,各组可以并行工作,能较好提高存储器的带宽;采用流水线的方式并行存取,在不改变每个模块的存取周期的前提下,提高整个主存的速度。例如,一个 4 体并行低位交叉存储器,每个模块的容量是 64K×32 位,存取周期为 200ns,在 200ns 内,存储器能向 CPU 提供 128 位二进制信息。缺点是某一组出现故障,会影响整个存储器的正常工作。

多模块存储器的优势和实际应用: 多模块存储器是一种空间并行技术,利用多个结构完全相同的存储模块的并行工作来提高存储器的吞吐率。例如,当一个存储体正在和 CPU 交换信息时,另一个存储体可同时与外部设备进行直接存储器访问,实现两个体并行工作。多模块存储器可以提高存储器的访问速度,满足 CPU 对数据的快速需求,广泛应用于计算机系统中。


👥总结

本篇博文对 主存储器 做了一个较为详细的介绍,不知道对你有没有帮助呢

觉得博主写得还不错的三连支持下吧!会继续努力的~

请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VulnHub-Bilu_b0x靶机笔记

Bilu_b0x 靶机 概述 Vulnhub 的一个靶机,包含了 sql 注入,文件包含,代码审计,内核提权。整体也是比较简单的内容,和大家一起学习 Billu_b0x.zip 靶机地址: https://pan.baidu.com/s/1VWazR7tpm2xJZIGUS…

滑动窗口(6)_找到字符串中所有字母异位词

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 滑动窗口(6)_找到字符串中所有字母异位词 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论&#x1f4…

基于JAVA+SpringBoot+Vue的线上辅导班系统的开发与设计

基于JAVASpringBootVue的线上辅导班系统的开发与设计 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接&#…

Java 微服务框架 HP-SOA v1.1.4

HP-SOA 功能完备,简单易用,高度可扩展的Java微服务框架。 项目主页 : https://www.oschina.net/p/hp-soa下载地址 : https://github.com/ldcsaa/hp-soa开发文档 : https://gitee.com/ldcsaa/hp-soa/blob/master/README.mdQQ Group: 44636872, 66390394…

【C++算法】分治——快排

颜色分类 题目链接 颜色分类https://leetcode.cn/problems/sort-colors/description/ 算法原理 代码步骤 class Solution { public:void sortColors(vector<int>& nums) {int n nums.size();int i 0, left -1, right n;while(i < right){if(nums[i] 0) s…

Maven笔记(一):基础使用【记录】

Maven笔记&#xff08;一&#xff09;-基础使用 Maven是专门用于管理和构建Java项目的工具&#xff0c;它的主要功能有&#xff1a; 提供了一套标准化的项目结构 Maven提供了一套标准化的项目结构&#xff0c;所有IDE(eclipse、myeclipse、IntelliJ IDEA 等 项目开发工具) 使…

Linux通过yum安装Docker

目录 一、安装环境 1.1. 旧的docker包卸载 1.2. 安装常规环境包 1.3. 设置存储库 二、安装Docker社区版 三、解决拉取镜像失败 3.1. 创建文件目录/etc/docker 3.2. 写入镜像配置 https://docs.docker.com/engine/install/centos/ 检测操作系统版本&#xff0c;我操作的…

openFrameworks_如何使用ofxXmlSettings和ofxGui来创建识别界面

效果图&#xff1a; 代码及详解 1.添加两个插件的头文件: #include "ofxGui.h" #include "ofxXmlSettings/src/ofxXmlSettings.h" 2.添加GUI部分&#xff0c;然后在.h声明右边的openframeworks的UI部分&#xff0c;包括面板ofxPanel&#xff0c;按钮ofx…

深入理解 JavaScript 三大作用域:全局作用域、函数作用域、块级作用域

一. 作用域 对于多数编程语言&#xff0c;最基本的功能就是能够存储变量当中的值、并且允许我们对这个变量的值进行访问和修改。那么有了变量之后&#xff0c;应该把它放在哪里、程序如何找到它们&#xff1f;是否需要提前约定好一套存储变量、访问变量的规则&#xff1f;答案…

深入探究 Flask 的应用和请求上下文

目标 读完本文后&#xff0c;您应该能够解释&#xff1a; 什么是上下文哪些数据同时存储在应用程序和请求上下文中在 Flask 中处理请求时&#xff0c;处理应用程序和请求上下文所需的步骤如何使用应用程序和请求上下文的代理如何在视图函数中使用current_app和代理request什么…

并发编程多线程

1.线程和进程的区别&#xff1f; 进程是正在运行程序的实例&#xff0c;进程中包含了线程&#xff0c;每个线程执行不同的任务不同的进程使用不同的内存空间&#xff0c;在当前进程下的所有线程可以共享内存空间线程更轻量&#xff0c;线程上下文切换成本一般上要比进程上下文…

如何用3个月零基础入门网络安全?_网络安全零基础怎么学习

前 言 写这篇教程的初衷是很多朋友都想了解如何入门/转行网络安全&#xff0c;实现自己的“黑客梦”。文章的宗旨是&#xff1a; 1.指出一些自学的误区 2.提供客观可行的学习表 3.推荐我认为适合小白学习的资源.大佬绕道哈&#xff01; →点击获取网络安全资料攻略← 一、自学…

某省公共资源交易中心爬虫逆向分析

目标网站 aHR0cHM6Ly95Z3AuZ2R6d2Z3Lmdvdi5jbi8jLzQ0L3NjenQteHEvP3VzZXJJZD02NzM4OTg2MzkyNjA3NzAzMDQmcm93SWQ9NTI1MDYyMDI2ODg0NzE2NTQ0JnRpbWU9MjAwOC0xMS0yNiZjZXJ0aWZpY2F0ZU5vPTkxNDQwOTA0NjgyNDI2MzU4QyZjZXJ0aWZpY2F0ZVR5cGU9Mjg 一、抓包分析 请求头参数加密 二、…

校园社区服务系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;发布类型管理&#xff0c;互帮互助管理&#xff0c;物品分类管理&#xff0c;闲置交易管理&#xff0c;购买物品管理&#xff0c;反馈信息系统管理 微信端账号功能包括&#xff1…

高等代数笔记(2)————(弱/强)数学归纳法

数学归纳法的引入情景其实很简单&#xff0c;就是多米诺骨牌。 推倒所有多米诺骨牌的关键就是推倒第一块&#xff0c;以及确保第一块倒下后会带动第二块&#xff0c;第二块带动第三块&#xff0c;以此类推&#xff0c;也就是可以递推。由此我们可以归纳出所有的多米诺骨牌都可…

deepin桌面版连接windows远程桌面

在Linux系统中&#xff0c;要登录到Windows系统&#xff0c;通常可以使用远程桌面协议(RDP)。你需要在Linux系统上安装RDP客户端。 使用如下命令安装rdp协议&#xff1a; sudo apt-get install xrdp 安装成功后&#xff0c;启动rdp服务。 sudo systemctl start xrdp 有了r…

go解决引入私有包报错“Repository owner does not exist“的两种方式

当你写好引入的私有包,执行go mod tidy报错: Gogs: Repository owner does not exist fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 目前我的两种解决方案: 一、拉群整个…

江协科技STM32学习- P14 示例程序(定时器定时中断和定时器外部时钟)

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

传输层协议 —— TCP协议(上篇)

目录 1.认识TCP 2.TCP协议段格式 3.可靠性保证的机制 确认应答机制 超时重传机制 连接管理机制 三次握手 四次挥手 1.认识TCP 在网络通信模型中&#xff0c;传输层有两个经典的协议&#xff0c;分别是UDP协议和TCP协议。其中TCP协议全称为传输控制协议&#xff08;Tra…

后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0920)

十三、文章分类页面 - [element-plus 表格] Git仓库&#xff1a;https://gitee.com/msyycn/vue3-hei-ma.git 基本架子 - PageContainer 功能需求说明&#xff1a; 基本架子-PageContainer封装文章分类渲染 & loading处理文章分类添加编辑[element-plus弹层]文章分类删除…