计算机组成原理 — 存储器(1)

存储器

大家好呀!我是小笙,由于存储器这部分章节内容较多,我分成二部分进行总结,以下是第一部分,希望内容对你有所帮助!

概述

存储器是计算机系统中的记忆设备,用来存放程序和数据

存储器分类

存储器分类主要按照存储介质、存储方式以及计算机中的作用来进行分类

存储器分类

存储器的层次结构

从速度、容量以及价格三个性能指标来分析存储器

image-20230701164422221

主存储器

概述

主存储器简称主存,是计算机硬件的一个重要部件。它的主要作用是存放指令和数据,并能由中央处理器(CPU)直接随机存取

主存储器的组成

MAR 寻址操作

根据 MAR 中的地址访问某个存储单元时,还需经过地址译码、驱动等电路,才能找到所需访问的单元

MDR 数据读入写出操作

  • 读出时,需经过读出放大器,才能将被选中单元的存储字送到 MDR
  • 写入时,MDR 中的数据也必须经过写入电路才能真正写入到被选中的单元中

image-20230701144921253

主存和cpu之间的联系

image-20230701145349731

主存中存储单元地址的分配

主存储器被划分为许多存储单元,每个存储单元都有一个唯一的地址

主存中存储单元地址的分配还涉及到字节顺序的问题,即大端模式和小端模式;现在假设用每个存储字32位来存储 12345678H 数据

大端大尾方式:高位字节地址为字地址

字地址字节地址(8位)字节地址字节地址字节地址
012345678
4
8

小端小尾方式:低位字节地址为字地址

字地址字节地址字节地址字节地址字节地址
078563412
4
8
主存中的技术指标

主存的主要技术指标是存储容量存储速度

image-20240203154827366

半导体存储芯片
基本结构

译码驱动能把地址总线送来的地址信号翻译成对应存储单元的选择信号,该信号在读/写电路的配合下完成对被选中单元的读/写操作

image-20230701154234737

地址线是单向输入的,数据线是双向的,他们的位数与芯片容量有关

地址线(单向)数据线(双向)芯片容量
1042^10 * 4位
1412^14 * 1位
1382^13 * 8位
译码驱动方式

译码驱动方式有两种:线选法和重合法

线选法

线选法是一种直接寻址方式,其中每个存储单元由一个独特的地址线组合直接选中。在这种方法中,每个存储单元或者其对应的存储位都有一个专用的选择线

image-20240204123850680

重合法

重合法是一种寻址技术,它通过减少地址线的数量来实现更高效的存储器寻址。在这种方法中,地址线被复用,即同一组地址线在不同的时间阶段用于传递不同的地址信息

image-20240204123916776

在实际的存储器设计中,通常会根据存储器的容量、性能要求、成本和功耗等因素来选择合适的寻址方法。重合法在较高密度的存储器设计中更为常见,因为它可以更有效地利用地址线资源。而线选法则在一些对速度要求较高或者存储容量较小的应用中更为合适

随机存取存储器(RAM)
静态RAM(SRAM)

存储器中用于寄存“0”和“1”代码的电路称为存储器的基本单元电路

静态RAM基本电路
  • 存储器:T1-T4 ;行开关:T5 - T6 ; 列开关:T7 - T8 (T5 - T8 都属于晶体管)
  • 位线 A 为触发器原端、位线 A`为触发器非端(A 取反)

读写操作

  • 读操作:置行地址、列地址有效,触发器 A 电平会通过 T6、T8 最后通过读出放大器进行读出
  • 写操作:置行地址、列地址有效,电平会从 Din 写入,会先取反,然后通过 T5 - T8,将数据保存到触发器中
image-20240204184814323
动态RAM(DRAM)
动态RAM 基本单元电路

概述:靠电容存储电荷的原理来寄存信息。若电容上存在足够多的电荷表示存“1”,电容上无电荷表示存“0”

  • 三管 MOS

    • 读出时,先对预充电管T4置一预充电信号,使读数据线达到高电平VDD。然后由读选择线打开T2,若T1的极间电容Cg存有足够电荷(被认为原存“1”),使T1导通,则因T2、T1接地,使读数据线降为零电平,读出“0”信息;若Cg没有足够电荷(原存“0”),则T1截止,读数据线为高电平不变,读出“1”信息。可见,读出线的高低电平可以区分“1”和“0”,且读出与原存信息相反
    • 写入时,将写信号加到写数据线上,然后由写数据线打开T3,这样,Cg便能随输入信息充电(写“1”)或放电(写“2”),且写入与输入信息相同

    image-20230708100116477

  • 单管 MOS

    • 读出时,字线上的高电平使T接通,若Cs有电荷,视为“1”;若Cs无电荷,视为“0”。(读出结束时,Cs中电荷释放完毕,所以为破坏性读出,必须再生)
    • 写入时,字线上的高电平使T接通,若数据线为高电平,经过T对Cs充电,使其存“1”;若数据线为低电平,Cs经T放电,使其存“0”

    image-20230708100421878

动态RAM刷新(刷新与行地址有关)

刷新的过程实质上是先将原存信息读出,再由刷新放大器形成原信息并重新写人的再生过程;再生周期就是在一定的时间内,对动态 RAM 的全部基本单元电路作一次刷新操作

  • 集中式刷新(存取周期为 0.5 微秒,刷新周期为 2 毫秒)

    以128 × 128为例:

    image-20230708104909430

    死区:0.5μs×128=64μs0.5μs×128 = 64μs (死区就是不能进行读写操作的时间)

    死时间率:为= 128/4000×100 = 3.2%

  • 分散刷新(存取周期为 1 微秒,刷新周期为 2 毫秒)

    以128 × 128为例:

    image-20230708104959905

    优点:没有死区

  • 异步刷新(分散刷新与集中刷新相结合)

    以128 × 128为例(若每隔约15.6μs刷新一行):

    image-20230708105454013

    每行每隔 2ms 刷新一次 ;死区为 0.5μs

    优点:将刷新安排在指令译码阶段,不会出现“死区”问题

静态RAM VS 动态RAM

DRAM(动态RAM)常用于做主存;SRAM(静态RAM)常用于做缓存

DRAMSRAM
存储原理电容触发器
集成度
芯片引脚
功耗
价格
速度
刷新
只读存储器(ROM)

初衷是一旦注入原始信息就不能再改变了,但是随着市场的需要,希望能改变原来的数据,便出现了后续可以修改数据的只读存储器

发展历程
  • 早期的只读存储器——由厂家写内容 MROM
  • 改进1——用户可以自己写(一次性) PROM
  • 改进2——可以多次写(要能对信息进行擦除) EPROM
  • 改进3——电可擦写(特定设备)
  • 改进4——电可擦写(直接连接到计算机)
掩模ROM(MROM)

一种只读存储器,它在制造过程中被编程,并且一旦编程完毕,其内容就无法再次修改

实现原理:通过行地址以及列地址来确定输出哪个位置的数据,然后通过是否存在 MOS 管来决定输出的数据是 0 还是 1,最后通过放大器输出

  • 行列选择交叉处有MOS管为 “1”
  • 行列选择交叉处无MOS管为 “0”
image-20240205124938265
PROM(一次性编程)

PROM是可以实现一次性编程的只读存储器

实现原理:通过熔丝是否熔断来进行判断 0 还是 1,但是熔断之后无法再恢复,所以只能让用户实现一次编程

  • 熔丝断:“0”
  • 熔丝未断:“1”

image-20240205125529757image-20240205125205796

EPROM(多次性编程)

EPROM是一种可擦除可编程只读存储器

N型沟道浮动栅MOS电路(利用紫外线进行擦除)

  • D端加正电压 —— 形成浮动栅 —— S与D不导通为 “0”
  • D端不加正电压 —— 不形成浮动栅 —— S与D导通为 “1”

image-20230708111429530

注意:如果需要重置数据,可用紫外线照射的方式驱散浮动栅

EEPROM(多次性编程)

一种可以在电子设备中使用多次的存储器芯片。它允许数据被多次编程和擦除,而不需要从电路板上移除芯片

  • 多次编程:EEPROM可以被重新编程多次,这使得它非常适合存储需要定期更新的数据,如配置设置或设备固件
  • 非易失性:EEPROM在断电后仍能保留数据,这是因为它使用浮栅晶体管技术来存储电荷,从而保持数据状态
  • 擦除和编程速度:EEPROM的擦除和编程速度相对较慢,通常比EPROM慢,但比Flash存储器快
  • 有限的生命周期:尽管EEPROM可以多次编程和擦除,但它有一个有限的擦除/编程周期。通常,一个EEPROM芯片可以承受数十万到数百万次的编程
Flash Memory(闪速型存储器)

一种非易失性存储技术,它可以在电力供应的情况下快速擦除和编程

EPROM、EEPROM 、Flash Memory 三者区别
  • EPROM —— 价格便宜,集成度高,可编程只读存储器,需要紫外线照射来擦除,不支持多次编程
  • EEPROM —— 电可擦洗重写,允许数据被多次编程和擦除
  • Flash Memory —— 支持更快速的擦除和编程操作,通常用于更大的存储容量,如USB驱动器和固态硬盘
存储器与CPU的连接
存储器容量的扩展
  • 位扩展

    用 **2片 **1K × 4位存储芯片组成1K × 8位的存储器

    地址线 A0 - A9 ;数据线拼接成 D0 - D7

    image-20240205142329938
  • 字扩展

    用 **2片 **1K × 8位存储芯片组成2K × 8位的存储器

    A10 决定是存储在哪个存储芯片里

    image-20240205143356978
  • 字、位扩展

    8片 1K × 4位存储芯片组成4K × 8位的存储器

    image-20240205144000499
存储器与CPU的连接
  • 地址线的连接:通常总是将CPU地址线的低位与存储芯片的地址线相连。CPU地址线的高位或在存储芯片扩充时用或做其他用途
  • 数据线的连接:存在线数量不同的情况,此时必须对存储芯片扩位,使其数据位数和 CPU 的数据线数相同
  • 读/写命令线的连接:一般可直接与存储芯片的读/写控制端相连,通常高电平为读,低电平为写
  • 片选线的连接
  • 合理选择存储芯片:主要是指存储芯片类型(RAM或ROM)和数量的选择。通常选用ROM存放系统程序、标准子程序等等;RAM则是为用户编程而设置的
  • 其他(时序、负载等)
存储器的校验

在计算机运行过程中,由于种种原因致使数据在存储过程中可能出现差错。为了能及时发现错误并及时纠正错误,通常可将原数据配成汉明编码。

合法代码集合

img

任意两组合法代码之间二进制位数的最小差异编码的纠错、检错能力与编码的最小距离有关

L - 1 = D + C (D >= C)

  • L:编码的最小距离
  • D:检错的位数
  • C:纠错的位数

具体编码实例 - 海明码

码距:又叫海明距离,是在信息编码中,两个编码之间对应位上编码不同的位数。例如编码100110和010101,第1、2、5、6位都不相同,所以这两个编码的码距就是4,并且可以通过异或的方式求出(异或后计算零的个数)

两个合法编码(码字)

工作流程

  1. 确定校验码位数 r

    • 数据/信息位数为 m
    • 校验码位数为 r
    • 2 ^ r >= m + r + 1 (已知 m + r 的和,可以通过整个公式分别求出 m、r)
  2. 确定校验码和数据的位置

    假设需要校验数据为 1100,意味着 m = 4,可以通过公式求得,r 的最小值为 3

  3. 求出校验码的值

    根据偶校验可以得出如下(分三组,分别是:xx1、x1x、1xx)

    7654321
    110x40x2x1
    001

    海明码就是 1100001

  4. 检错并纠错

    假设最后传入的参数为 1100000

    计算该海明码的三组校验是否正确

    x1 0 0 0 1

    x2 0 0 1 1 => 可知 x1 校验错误 0 0 1 说明最小位出错了,但是恰好是校验码出错,可以不用纠错

    x4 0 0 1 1

提高访存速度的措施

不仅可以采用高速器件、层次结构 Cache - 主存,还可以调整主存结构的方式来提高访存的速度,如下就是调整主存结构的方式

  • 单体多字系统

    前提:程序和数据在存储体内是连续存放的,这样就可以在一个存取周期内从同一地址中取出4条指令,然后逐条送至 CPU 中执行image-20230716134022603

    存在的问题:

    • 若只需向存储体写入16位数据(单字长),而数据寄存器却多读出了48位,若想让这48位不存入存储体,会增加寄存器的复杂性
    • 若需要取出的数据(或指令)不是连续的,必然会使数据寄存器取出无用的数据
  • 多体并行系统(顺序编址)

    采用多体模块组成的存储器,主要应用于存储器容量的扩展(高位地址可表示体号,低位地址为体内地址)image-20230716133951483

    存在的问题:

    • 某个存储体可能会非常繁忙,其余存储体空闲
    • 这种方式主要适用于存储器容量的扩展,并不适合提高存储器的带宽
  • 低位交叉(各个体轮流编址)

    主要应用于存储器的带宽和访问速度的提高(低位地址可表示体号,高位地址为体内地址)image-20230716134241076

    低位交叉的特点:

    • 在不改变存储周期的前提下,增加存储器的带宽

    注意对体号和体内地址的理解

    • 物理地址:物理地址也称为"体号",是指在计算机系统中实际存在的存储器单元的地址。物理地址是硬件直接访问主存储器的地址,它对应于存储器芯片或者其他存储介质上的真实地址
    • 虚拟地址:虚拟地址也称为"体内地址",是指程序中使用的地址,它由程序生成并由操作系统进行地址转换。虚拟地址空间是程序员能够访问的抽象地址空间,程序中的变量和数据都是相对于虚拟地址空间来说的
  • 高性能存储芯片(了解)

    • SDRAM
    • RDRAM
    • 带 Cache 的 DRAM

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

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

相关文章

vue3 mathjax 数学公式

安装 pnpm install mathjax 新建文件/util/mathjax.js window.MathJax {tex: {inlineMath: [["$", "$"],["\\(", "\\)"],], // 行内公式选择符displayMath: [["$$", "$$"],["\\[", "\\]"…

UE4运用C++和框架开发坦克大战教程笔记(十七)(第51~54集)

UE4运用C和框架开发坦克大战教程笔记(十七)(第51~54集) 51. UI 框架介绍UE4 使用 UI 所面临的问题以及解决思路关于即将编写的 UI 框架的思维导图 52. 管理类与面板类53. 预加载与直接加载54. UI 首次进入界面 51. UI 框架介绍 U…

《合成孔径雷达成像算法与实现》Figure6.4

clc clear close all参数设置 距离向参数设置 R_eta_c 20e3; % 景中心斜距 Tr 2.5e-6; % 发射脉冲时宽 Kr 20e12; % 距离向调频率 alpha_os_r 1.2; % 距离过采样率 Nrg 320; % 距离线采样数 距离向…

CSS布局

CSS布局 1. 版心 在 PC 端网页中,一般都会有一个固定宽度且水平居中的盒子,来显示网页的主要内容,这是网页的版心。版心的宽度一般是 960 ~ 1200 像素之间。版心可以是一个,也可以是多个。 2. 常用布局名词 3. 重置默认样式 很…

C#验证字符串的长度,用正则表达式 vs 字符数组长度或字符串的长度

目录 一、使用的方法 1.使用正则表达式 2.通过计算字符串的长度验证 二、实例 1.源码 2.生成效果 一、使用的方法 1.使用正则表达式 使用正则表达式可以判断和限制用户输入的字符串长度。 比如验证用户密码不得少于8为,匹配的正则表达式"^.{8,}$"…

AIGC专题:AIGC教育行业全景报告

今天分享的是AI GC系列深度研究报告:《AIGC专题:AIGC教育行业全景报告》。 (报告出品方:量子位智库) 报告共计:31页 生成式AI快速落地教育,技术推动教育理念实施 生成式AI将我们带入AI2.0时代…

数据类型完整版

第三章 数据类型 3.1 Key操作 3.1.1 相关命令 序号命令语法描述1DEL key该命令用于在 key 存在时删除 key2DUMP key序列化给定 key ,并返回被序列化的值3EXISTS key检查给定 key 是否存在,存在返回1,否则返回04EXPIRE key seconds为给定 k…

MacOS系统电脑远程桌面控制windows系统电脑【内网穿透】

最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 文章目录 1. 测试本地局域网内远程控制1.1 Windows打开远程桌面1…

回归预测 | Matlab实现WOA-CNN-LSTM-Attention鲸鱼算法优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制)

回归预测 | Matlab实现WOA-CNN-LSTM-Attention鲸鱼算法优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制) 目录 回归预测 | Matlab实现WOA-CNN-LSTM-Attention鲸鱼算法优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制&…

问题:0xc8前面加(byte) #人工智能#学习方法的原因是因为0xc8大于??????????? 。 #微信#其他#微信

问题:0xc8前面加(byte)的原因是因为0xc8大于??????????? 。 参考答案如图所示

大数据学习之Redis,十大数据类型的具体应用(五)

目录 3.9 Redis地理空间(GEO) 简介 原理 Redis在3.2版本以后增加了地理位置的处理哦 命令 命令实操 如何获得某个地址的经纬度 3.9 Redis地理空间(GEO) 简介 移动互联网时代LBS应用越来越多,交友软件中附近的…

双非本科准备秋招(10.2)—— JVM3:垃圾收集器

垃圾收集器 分为七种,如下: 从功能的角度分为 1、串行:Serial、Serial Old 2、吞吐量优先:Parallel Scavenge、Parallel Old 3、响应时间优先:CMS 吞吐量优先VS响应时间优先 吞吐量运行用户代码时间/(运行用户代码…

如何通过ETL实现快速同步美团订单信息

一、美团外卖现状 美团作为中国领先的生活服务电子商务平台,其旗下的美团外卖每天承载着大量的订单信息。这些订单信息需要及时入库、清洗和同步,但由于数据量庞大且来源多样化,传统的手动处理方式效率低下,容易出错。比如&#…

ANTLR4规则解析生成器(一):入门

文章目录 1 什么是ANTLR42 为什么需要ANTLR43 环境搭建4 官方示例4.1 编写语法规则文件4.2 生成语法解析器4.3 基于SDK实现逻辑 5 总结 1 什么是ANTLR4 ANTLR是ANother Tool for Language Recognition的缩写,它是一个强大的用于读取、处理、执行和翻译结构化文本或…

数据库性能监控 ,数据库可用性监控 #mysql##oracle##SQLserver#_

当谈到监控数据库的性能和可用性时,涉及的方面多种多样。数据库是许多组织业务中的关键组成部分,因此确保其高性能和不间断可用性对于业务的成功至关重要。因此建立一个全面的监控系统至关重要。让我们深入探讨数据库性能和可用性监控的各个方面。 数据…

深刻理解树状数组--树状数组构造定义与动态维护区间和的合理性证明

文章目录 一.树状数组概览二.树状数组构造定义lowbit运算树状数组的结点值的定义树状数组结点层次的定义树状数组父子结点关系定义 三.关于树状数组结构的重要证明引理1引理2树状数组模板题 一.树状数组概览 树状数组的下标从1开始标识,其物理结构是线性表,逻辑结构是一颗多叉…

C语言——O/动态内存管理

目录 一、为什么要有动态内存分配 二、malloc 和 free 1、malloc 2、free 三、calloc和realloc 1、calloc 2、realloc 四、常见的动态内存的错误 1、对NULL指针的解引用操作 2、对动态开辟空间的越界访问 3、对非动态开辟内存使用 free 释放 4、使用free释放一块动…

详细关于如何解决mfc140.dll丢失的步骤,有效修复mfc140.dll文件丢失的问题。

mfc140.dll文件是Microsoft Visual Studio 2015程序集之一,它包含用于支持多种功能的代码和库。当这个mfc140.dll文件丢失时,可能会导致相关程序运行出错甚至无法运行。很多用户可能会遇到mfc140.dll丢失的问题,但是这并不是不可解决的困难。…

Linux中判断文件系统的方法

文章目录 Linux中判断文件系统的方法1.使用mount命令2.使用blkid命令3.使用file命令4.使用fstab文件5.使用df命令(这个用的比较多)6.使用fsck命令7.使用lsblk命令(推荐-简单好用) Linux中判断文件系统的方法 1.使用mount命令 # 这样查看的只有已经挂载…

浅谈连续逆F类的基础理论-波形、最佳阻抗、输出功率

浅谈连续逆F类的基础理论 各种逆类型的功放好像都少引人关注,因为很多人学完正的连续B/J类和连续F类,想当然的类推到了连续逆F类上面去。貌似连续逆F类就是连续F类的电压电流交换一下而已,无需额外的注意,实际并非那么简单的。 浅…