6.存储器概述,主存储器

目录

一. 存储系统基本概念

(1)存储系统的层次结构

(2)分类

(3)存储器的性能指标

二. 主存储器的基本组成

三. SRAM和DRAM

四. 只读存储器ROM

五. 提升主存速度的方法

(1)双端口RAM

(2)多体并行存储器

六. 主存储器与CPU的连接

(1)位扩展

(2)字扩展

(3)字-位同时扩展


一. 存储系统基本概念

(1)存储系统的层次结构

注:有的教材把安装在电脑内部的磁盘称为“辅存”,把U盘、光盘等称为“外存”。也有的教材把磁盘、U盘、光盘等统称为“辅存”或“外存”。

辅存中的数据要调入主存后才能被CPU访问。主存―辅存:实现虚拟存储系统,解决了主存容量不够的问题。Cache—主存:解决了主存与CPU速度不匹配的问题。

(2)分类

按层次分类:

按存储介质分类:半导体存储器,磁表面存储器,光存储器。

按存取方式:随机存取存储器(RandomAccess Memory,RAM):读写任何一个存储单元所需时间都相同,与存储单元所在的物理位置无关。顺序存取存储器(SequentialAccess Memory,SAM):读写一个存储单元所需时间取决于存储单元所在的物理位置。直接存取存储器(Direct AccessMemory,DAM):既有随机存取特性,也有顺序存取特性。先直接选取信息所在区域,然后按顺序方式存取。SAM和DAM都是串行访问存储器,读写某个存储单元所需时间与存储单元的物理位置有关。相联存储器(Associative Memory):即可以按内容访问的存储器(ContentAddressesd Memory,CAM),可以按照内容检索到存储位置进行读写,“快表”就是一种相联存储器。

按信息的可更改性:读写存储器(Read/Write Memory)——即可读、也可写(如:磁盘、内存、Cache)。只读存储器(Read Only Memory)——只能读,不能写(如:实体音乐专辑通常采用CD-ROM,实体电影采用蓝光光碟,BIOS通常写在ROM中)。

按信息的可保存性:断电后,存储信息消失的存储器―—易失性存储器(主存、Cache)
断电后,存储信息依然保持的存储器――非易失性存储器(磁盘、光盘)
信息读出后,原存储信息被破坏――破坏性读出(如DRAM芯片,读出数据后要进行重写)信息读出后,原存储信息不被破坏――非破坏性读出(如SRAM芯片、磁盘、光盘)

(3)存储器的性能指标

1.存储容量:存储字数×字长(如1M×8位)。MDR位数反映存储字长。

2.单位成本:每位价格=总成本/总容量。
3.存储速度:数据传输率=数据的宽度/存储周期。数据的宽度即存储字长。

①存取时间(Ta):存取时间是指从启动一次存储器操作到完成该操作所经历的时间,分为读出时间和写入时间。
②存取周期(Tm):存取周期又称为读写周期或访问周期。它是指存储器进行一次完整的读写操作所需的全部时间,即连续两次独立地访问存储器操作(读或写操作)之间所需的最小时间间隔。
主存带宽(Bm):(主存带宽又称数据传输率,表示每秒从主存进出信息的最大数量,单位为字/秒、字节/秒(B/s)或位/秒(b/s)。

二. 主存储器的基本组成

存储器由存储体,MAR和MDR组成。存储体又由存储元构成。

每一个存储元由MOS管和电容组成。MOS管可理解为一种电控开关,输入电压达到某个阈值时,MOS管就可以接通。

  • 存储0/1:电容器有电荷则为1,没有电荷则为0;
  • 读0/1:MOS管接高于阈值的电压,使得MOS管导通,此时在右面检测,有电荷则为读出1,没有电荷则为读出0;
  • 写0/1:MOS管接高于阈值的电压,使得MOS管导通,右面为高电平则向电容写入1,为低电平则向电容写入0;

多个存储单元可以组成一个存储体。除了存储体之外,还有译码器(输入地址总线,n位地址,对应2^n个存储单元)。控制电路,片选线(划线表示低电平有效)。

简化图里面有一个译码驱动,作用是稳定的输出选择存储单元的红线(字选择线)信号。上图的每根线都会对应一个金属引脚。另外还有供电引脚,接地引脚等。由于n位地址→2^n个存储单元,总容量=存储单元个数×存储字长。例如8K×8位,即2^{13}\times 8bit,8K×1位,即2^{13}\times 1bit。

最后介绍一下寻址。总容量为1KB。关于字节地址向字地址的转换,算术左移两位即可。

  • 按字节寻址: 1K个单元(需要10根地址线,1K=2^{10}),每个单元1B。
  • 按字寻址:256个单元,每个单元4B
  • 按半字寻址:512个单元,每个单元2B
  • 按双字寻址:128个单元,每个单元8B

三. SRAM和DRAM

顺序存取存储器(SAM):读写一个存储单元所需时间取决于存储单元所在的物理位置。直接存取存储器(DAM):既有随机存取特性,也有顺序存取特性。DRAM用于主存、SRAM用于Cache。现在的主存通常采用SDRAM芯片。

DRAM芯片:就是上一节介绍的,利用电容+MOS管制造。

SRAM芯片:使用双稳态触发器存储信息。双稳态:1:A高B低;0:A低B高。

电容放电信息被破坏,是破坏性读出。读出后应有重写操作,也称“再生”。每个存储元制造成本更低,集成度高,功耗低,读取速度慢。

双稳态触发器读出数据,触发器状态保持稳定,是非破坏性读出,无需重写。每个存储元制造成本更高,集成度低,功耗大,读取速度快。

初学者应当注意区分“破坏性读出”和“易失性”的区别。

最后补充一下DRAM的刷新问题。电容内的电荷只能维持2ms,即便不断电,2ms后信息也会消失。因此2ms内必须“刷新”一次(给电容充电)。通常,每次刷新一行存储单元。这就引出另一个问题—―为什么要用行列地址?答案是减少译码器的选通线数量:

刷新有硬件支持,由存储器独立完成,不需要CPU控制。读出一行的信息后重新写入,占用1个读/写周期。至于刷新的方式,有三种刷新方式:分散刷新,集中刷新,异步刷新。假设DRAM内部结构排列成128×128的形式,读/写周期(也称存取周期)0.5\mu s。这样2ms就是4000个读写周期。

关于DRAM的地址线复用技术:行、列地址分两次送,可使地址线更少芯片引脚更少。原本需要n个,现在只需要n/2个。

四. 只读存储器ROM

RAM芯片一一易失性,断电后数据消失。ROM芯片——非易失性,断电后数据不会丢失。

ROM芯片虽然名字是“Read-Only”,但很多ROM也可以“写”闪存的写速度一般比读速度更慢,因为写入前要先擦除。很多ROM也具有“随机存取”的特性。

MROM (Mask Read-Only Memory) 一一掩模式只读存储器,厂家按照客户需求,在芯片生产过程中直接写入信息,之后任何人不可重写(只能读出)可靠性高、灵活性差、生产周期长、只适合批量定制。
PROM (Programmable Read-Only Memory) ——可编程只读存储器用户可用专门的PROM写入器写入信息,写一次之后就不可更改。
EPROM (Erasable Programmable Read-Only Memory)——可擦除可编程只读存储器允许用户写入信息,之后用某种方法擦除数据,可进行多次重写。
UVEPROM (ultraviolet rays)——用紫外线照射8~20分钟,擦除所有信息。
EEPROM(也常记为E2PROM,第一个E是Electrically)——可用“电擦除”的方式,擦除特定的字
每个存储元只需单个MOS管,位密度比RAM高。
Flash Memory ——闪速存储器(注:U盘、SD卡就是闪存)。在EEPROM基础上发展而来,断电后也能保存信息,且可进行多次快速擦除重写注意:由于闪存需要先擦除在写入,因此闪存的“写”速度要比“读”速度更慢。手机辅存也使用Flash芯片,但相比SSD使用的芯片集成度高、功耗低、价格贵。
SSD (Solid State Drives) ——固态硬盘,由控制单元+存储单元(Flash芯片)构成,与闪速存储器的核心区别在于控制单元不一样,但存储介质都类似,可进行多次快速擦除重写。SSD速度快、功耗低、价格高。目前个人电脑上常用SSD取代传统的机械硬盘。

主板上的BIOS芯片(ROM),存储了“自举装入程序”,负责引导装入操作系统(开机)。但注意:我们常说“内存条”就是“主存”,但事实上,主板上的ROM芯片也是“主存”的一部分。逻辑上主存由RAM+ROM组成,它们统一编址。

五. 提升主存速度的方法

分别是两种主存优化技术。DRAM芯片的恢复时间比较长,有可能是存取时间的几倍(SRAM的恢复时间较短)。多核CPU都要访存,怎么办? CPU的读写速度比主存快很多,主存恢复时间太长怎么办?

(1)双端口RAM

双端口RAM解决多核CPU都要访存的问题,优化多核CPU访问一根内存条的速度。图示两个CPU1和CPU2,需要有两组完全独立的数据线、地址线、控制线。CPU、RAM中也要有更复杂的控制电路。两个端口对同一主存操作有以下4种情况:
1.两个端口同时对不同的地址单元存取数据。
2.两个端口同时对同一地址单元读出数据。
3.两个端口同时对同一地址单元写入数据,此时发生写入错误。
4.两个端口同时对同一地址单元,一个写入数据,另一个读出数据。此时发生读出错误。

解决方法:置“忙”信号为0,由判断逻辑决定暂时关闭一个端口(即被延时),未被关闭的端口正常访问,被关闭的端口延长一个很短的时间段后再访问。

(2)多体并行存储器

多体并行存储器每个模块都有相同的容量和存取速度。各模块都有独立的读写控制电路、地址寄存器和数据寄存器。它们既能并行工作,又能交叉工作。可以理解为“多根内存条”。首先介绍什么是高位交叉编址和低位交叉编址。高位交叉编址就是高位表示存储体编号,低位交叉编址就是低位表示存储体编号。

现在考虑连续读取n个存储字。如果使用高位编址,因为这几个地址对应的存储单元都在M0,所以必须等其恢复之后在进行访问,而如果采用低位编址,我们可以访问M0,然后在M0的恢复时间去访问M1...以此类推,到M3读取完,M0的恢复时间也刚好结束。宏观上低位编址读写一个字的时间接近r。

所以,低位编址可以采用“流水线”的方式并行存取(宏观上并行,微观上串行)。宏观上,一个存储周期内,m体交叉存储器可以提供的数据量为单个模块的m倍。存取周期为T,存取时间(总线传输时间)为r,为了使流水线不间断,应保证模块数m≥T/r。

与多模块存储器对应的还有单体多字存储器,每个存储单元存储m个字,总线宽度也为m个字,一次并行读出m个字。每次只能同时取m个字,不能单独取其中某个字。

六. 主存储器与CPU的连接

(1)位扩展

(2)字扩展

线选法:把地址位直接接CS,此时地址不连续。

译码片选法:n条线,2^n个选片信号。

(3)字-位同时扩展

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

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

相关文章

【tg】 5 :线程切换

manager 可以切到 其他类的其他线程去执行。线程切换 先通过 networkmgr 线程 执行 ,但是传递了Manager 自己的线程 进去。在networkmgr 的network线程中,获取到stats数据,然后扔给 manager的线程thread ,去posttask 还行这个task里调用了mediamanager 的perform ,在media…

U盘不可以访问的维护

u盘打不开,可按下图,设置:winR→gpedit.msc;配置“管理模板”→“系统”→“可移动存储访问”→“所有可移动存储类”。 然后,选择“未配置”,如下图

环形处理习题,举例:约瑟夫环,魔方阵

目录 约瑟夫环 魔方阵 约瑟夫环 题目描述:有n 个人围成一圈,顺序排号。从第1个人开始报数从1到3报数凡是报到3 的人退出圈子,问最后留下的是原来的第几号? 环形处理:依次遍历数据集的每个元素(每个人依次报号),直到遍历到最后…

xlua游戏热更新(lua访问C#)

CS.UnityEngine静态方法访问unity虚拟机 创建游戏物体 CS.UnityEngine.GameObject(new by lua);静态属性 CS.UnityEngine.GameObject(new by lua); -- 创建 local camera CS.UnityEngine.GameObject.Find(Main Camera); --查找 camera.name Renamed by Lua;访问组件 loca…

思维模型 斯金纳箱原理

本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知。通过合理奖惩,塑造行为,此名为“学习”。 1 斯金纳箱原理的应用 1.1 斯金纳箱在游戏设计中的应用-《糖果传奇》 《糖果传奇》是一款由 King 开发的三消游戏&#x…

C语言--定义一个包含年月日的结构体Day,实现一个函数,根据传入的结构体指针计算,该日期是当年的第几天?

一.题目要求 输入2000年6月5日,输出:这是2000年的第157天。 二.思路分析 首先定义一个包含年月日的结构体 年份:要判断是否是闰年,闰年的二月有29天,平年的二月有28天。 月份:一个月份分大月和小月&#…

leetCode 493 翻转对

给定一个数组 nums &#xff0c;如果 i < j 且 nums[i] > 2*nums[j] 我们就将 (i, j) 称作一个重要翻转对。你需要返回给定数组中的重要翻转对的数量。 未完待续~

IDEA的优化配置教程

前言 IDEA 全称 IntelliJ IDEA&#xff0c;是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具&#xff0c;尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以…

Win11专业版安装Docker Desktop,并支持映射主机的gpu

一、Windows环境下安装 Docker 必须满足: 1. 64位Windows 11 Pro(专业版和企业版都可以) 2. Microsoft Hyper-V,Hyper-V是微软的虚拟机,在win11上是自带的,我们只需要启动就可以了 二、下载Docker Desktop安装包 方式一:进入官网下载 https://docs.docker.com/desktop…

基于VSCode + PlatformIO创建运行第一个esp32程序

文章目录 使用VSCode创建项目安装驱动下载驱动安装驱动连接开发板电脑识别开发板 编写程序烧录程序第一步、编译程序第二步、烧录程序第三步、开发板观察效果 原理讲解项目源码 在之前的课程&#xff0c;我们已经介绍了ESP32单片机&#xff0c;并且也已经安装好了开发环境&…

matplotlib 创建图和子图

Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化&#xff0c;并且提供多样化的输出格式。这里将会探索 matplotlib 的常见用法。 plt方式是先生成了一个画布&#xff0c;然后在这个画布上隐式的生成一个画图区域来进行画图&#xff1…

yum工具的使用

yum工具的使用 rpm的弊端 前面我们讲了下rpm&#xff0c;那么rpm有什么弊端呢&#xff1f;其弊端是显而易见的&#xff0c;当用rpm安装软件时&#xff0c;若遇到有依赖关系的软件&#xff0c;必须先安装依赖的软件才能继续安装我们要安装的软件&#xff0c;当依赖关系很复杂的…

drawio连接线的样式设置

drawio是一款强大的图表绘制软件&#xff0c;支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用&#xff0c;则直接输入网址draw.io或者使用drawon(桌案), drawon.cn内部完整的集成了drawio的所有功能&#xff0c;并实现了云端存储&#xff0c;以及在线共…

ModStartBlog v8.5.0 评论开关布局调整,系统后台全面优化

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用&#xff0c;支持后台一键快速安装&#xff0c;让开发者能快的实现业务功能开发。 系统完全开源&#xff0c;基于 Apache 2.0 开源协议。 功能特性 丰富的模块市场&#xff0c;后台一键快速安装 …

C语言每日一题(26)移除链表元素

力扣网 203. 移除链表元素 题目描述 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 思路分析 针对如图的普通情况&#xff0c;不能简单的遍历到对应位置然后进行释放&#xff0c;一方…

Linux编写一个极简版本的Shell

Linux编写一个极简版本的Shell &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;Linux &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要内容在Linux环境下&#xff…

Windows 中 kubectl 配置详细指南

目录 前言 什么是 Chocolatey与Minikube Chocolatey Minikube 安装 Minikube 安装 Chocolatey&#xff08;如果尚未安装&#xff09; Minikube 遇到的问题 通过获取集群状态的方法 kubectl 可选配置和插件 启用 shell 自动补全功能 安装 kubectl convert 插件 前言 …

vue做的一个一点就转的转盘(音乐磁盘),点击停止时会在几秒内缓慢停止,再次点击按钮可以再次旋转,

先看效果&#xff1a; 代码&#xff1a;主要部分我会红线画出来 css:部分&#xff1a; 源码&#xff1a; vue部分&#xff1a; <template><div class"song-lyric"><div><div class"type"><div class"right">&l…

SAMBA文件共享与DNS域名服务

一、SAMBA文件共享 1、什么是SAMBA SMB&#xff08;Server Message Block&#xff09;协议实现文件共享&#xff0c;也称为CIFS&#xff08;Common Internet File System &#xff09; 是Windows和类Unix系统之间共享文件的一种协议 客户端主要是Windows&#xff1b;支持多…

mysql 讲解(1)

文章目录 前言一、基本的命令行操作二、操作数据库语句2.1、创建数据库2.2、删除数据库2.3、使用数据库2.4 查看所有数据库 三、列的数据类型3.1 字符串3.2 数值3.3 时间日期3.4 空3.5 int 和 varchar问题总结&#xff1a; 四、字段属性4.1 UnSigned4.2 ZEROFILL4.3 Auto_InCre…