【计算机组成原理】存储系统

🎄欢迎来到@边境矢梦°的csdn博文🎄
🎄本文主要梳理计算机组成原理中 存储系统的知识点和值得注意的地方 🎄
🌈我是边境矢梦°,一个正在为秋招和算法竞赛做准备的学生🌈
🎆喜欢的朋友可以关注一下🫰🫰🫰,下次更新不迷路🎆

目录

存储器的分类

半导体随机读写存储器(RAM)

半导体只读存储器(ROM)

半导体存储器的容量扩展

高速存储器

 Cache存储器

虚拟存储器


🍁存储器的分类

可按照多种类型分类, 所以用文字来进行表示

  • 按存储介质分类
    1. 半导体存储器(主存、cache)
    2. 磁表面存储器(磁盘、磁带)
    3. 光存储器(光盘)

按存取方式分

  1. 按地址寻址
    1. 随机存储器(RAM): 读取任何一个存储单元所花时间相同,与存储单元所在物理位置无关。比如,内存
      1. 动态随机存储器(DRAM):用做主存
      2. 静态随机存储器(SRAM):用做Cache
        特别的,ROM也能随机存储
    2. 顺序存储器(SAM): 读取一个存储单元所需时间取决于其物理位置。比如,磁带, CD-ROM CD-ROM != ROM
    3. 直接存储器(DAM):既有随机存储,又有顺序存储的特性。先直接选取信息所在区,然后顺序存取。比如,磁盘。
  2. 地址或者内容寻址
    • 相联存储器:可以按照地址,也可以按照内容检索到存储位置进行读写,比如,快表相联Cache
  • 按信息的可更改性分
    1. 只读存储器(ROM): 只能读,不能写。引导程序就存放在ROM中
    2. 读写存储器:即可读,又可写。
  • 按信息的可保存性分
    1. 断电后
      1. 易失性存储器:信息丢失。
      2. 非易失性存储器:信息不丢失。 ROM
    2. 读取信息后
      1. 原存储信息被破坏,需要重写。比如DRAM芯片
      2. 原存储信息不被破坏,比如SRAM芯片、磁盘、光盘

🌳半导体随机读写存储器(RAM)

 以下是知识点的整理, 写这个博客给大家推荐这个博主以及复习计算机组成原理的知识点, (想搞懂底层🥹)只是为了自己或大家更快复习, 原创是最好的, 原创视频来自 : 内存和固态硬盘哪个快?Flash和ROM RAM是一个东西吗?RAM和ROM的区别是什么?_哔哩哔哩_bilibili

深入理解闪存!固态硬盘如何存储一位数据?NAND FLASH是怎么擦除和写入的?FLASH的工作原理!_哔哩哔哩_bilibili

RAM也分为两种

  • DRAM (Dynamic Random Access Memory) 动态随机存取存储器, 电脑的内存条就是DRAM
  • SRAM (Static Random Access Memory) 静态随机存取存储器, CPU的缓存就是SRAM 

原理图, 它可以存储一位信息, 只需要一个晶体管和一个电容, 当我们进行写操作时, 给晶体管的G极高电平, 它就导通了, 如果我们要写入1, 需要给D极高电平, 这样电容就会被充电, 就相当于 1 被存储到了电容里面, 同理如果我们想要存储 0 , 就给 D 极低电平, 这样就存储的是 0, 如果我们要进行读操作, 也需要让G 极为高电平, 使它导通, 同时加一个放大器, 当晶体管导通之后, 放大器会检测到电容上的电压信息, 这样就能判断它存储的是0 还是 1,因为电容的漏电流不可能为0, 所以过一段时间电容里的点就没了, 所以需要不停的刷新以此供电, 还有就是电容里的点不可能一瞬间充满, 要充满需要一段时间, 还要不断刷新, 所以速度上要慢得多

而静态RAM正好弥补了DRAM在速度上的不足, 它也是只能存储一位信息, 相比于动态RAM, 它的原理图要比动态RAM相对复杂  

当保持位为1的时候, 才对后面的触发器有用, 对R, S输入如果是同样的电平也是没有意义, 所以加一个非门, 取反.

 

因为SRAM没有电容, 所以它的读写数据都是一瞬间完成, 所以速度快几倍(所以SRAM比占比大, 好处多啊), 同时也没有电容的漏电流这些, 所以不需要一直刷新, 所以叫静态RAM

  • 从电路结构上也可以看出, SRAM由于结构相对复杂, 晶体管也多, 所以内存条就是DRAM, 容量可达几十个GB,
  • 而SRAM由于结构相对复杂, 只有在电脑非常重要的场合才能用到, 比如电脑的CPU的L1, L2缓存

不管是DRAM还是SRAM, 只要关闭电源它们的数据都会丢失, 所以如果要长期存储的话, 就要用到ROM


🌻半导体只读存储器(ROM)

ROM : 固态硬盘, U盘, 买手机的时候的32G, 64G, 128G 和 256G的存储空间 (断电之后还在)

  • ROM (Read-only memory,只读存储器) 例如 . 光盘
  • PROM (Programmable read-only memory,可编程只读存储器)
  • EAROM (Electrically alterable read only memory,电可改写只读存储器)
  • EPROM (Erasable programmable read only memory,可擦可编程只读存储器)
  • EEPROM(Electricallyerasable programmable read only memory,电子式可擦可编程只读存储器)
  • 闪存(Flash memory)

基本输入输出系统BISO : BIOS对计算机的硬件起着重要的作用,它负责计算机的硬件设置和控制,是计算机启动过程中第一个运行的软件。如果BIOS被破坏,可能会导致计算机无法启动,因此需要注意保护BIOS的安全性。

 PROM (Programmable read-only memory,可编程只读存储器), 对PROM写入程序后, 数据便无法更改, 它利用的是熔丝技术, 它存储的每一位数据都是由熔丝状态决定的, 熔断代表0, 没有则代表1

 EPROM, 即可抹除可编程只读存储器, 它可以利用高压写入数据, 擦除数据的时候需要将芯片曝光与紫外线下一段时间, 所以这种ROM上方都有一块玻璃开窗

 OTPROM跟EPROM的写入原理相同, 但是不设置开窗, 所以这种ROM只能编程一次

  • EEPROM, 它的擦除方式是高压电场, 所以在EEPROM芯片内部都设置有电荷泵电路来产生高压, 对于一些比较简单的电子产品, 它的为控制器里面就内置了EEPROM
    • 我们保存的用户设置信息就存储在微控制器的EEPROM里面
  •  为什么EPROM和EEPROM都要在后面加个“ROM”

简单来说,它们有个共同点就是不能只对小部分数据进行修改而维持其他数据不变,如果确实需要修改,EPROM需要紫外线擦除,EEPROM需要高压电擦除,一旦擦除,就会对所有数据进行重置,所以在Windows里面一般都会有“pagefile”(内存分页)集中合并数据修改(不止针对DRAM),既然做不到单次写入只修改部分数据而维持其他数据不变,它们就不能跟ROM“断绝亲子关系”从而跑到RAM的队列中。

1980年Flash memory闪存发明出来了, 并在此之后有同一个人发明了 Nor Flash 和 NAND FLASH, SSD固态硬盘它就属于NAND FLASH, 还有U盘, 存储卡这些都属于

结构示意图 : 

当给栅极高电平时电子进入浮栅层 : 

断电之后它会呆在浮栅层, 不会回去, 所以数据可以长久的保存

如果我们想要释放电子, 可以给G极负电压 : 

Flash就是以以上方式存储一位数据的

  • EEPROM : 硬盘, U盘, 手机上的闪存(这些都是NAND FLASH)
  • 它们本质上都是通过电来擦除和写入的, 即使是断电之后, 它们还可以长久的保持数据

在速度上RAM要远远大于ROM


🌸半导体存储器的容量扩展

由于一个存储器芯片的容量是有限的, 它在字数或字长方面与实际存储器的要求都有很大差距, 所以需要对字向和位向进行扩充才能满足需要, 常用的扩充方法有位扩展法, 字扩展法和字位扩展法.

解释上句话 : 

CPU对主存储器进行读/写操作时, 是先通过地址总线给出访存地址, 然后通过控制总线发出读/写操作控制信号, 最后对该地址的内容进行读/写操作, 并通过数据总线传送信息.

一个存储器的地址是有限的, 并且是分开的, 但是使用的时候是连续的地址, 所以要对存储器进行扩展以达到实际需要的存储器的地址范围

位扩展

  • 引出原因 : 如果数据总线的位数大于单块存储芯片的位数,则需要进行位扩展,从而充分利用总线位数,提高系统效率。(A是地址总线, D是数据总线)

注意:位扩展的各芯片,地址线并联相同(A, CS, WE),只有数据线不同

字扩展

  • 线选法

    • 注意:线选法是一个地址线中多出的A,每个A对应一个字扩展芯片的CS,用做片选。其余相同
    • 线选法是通过CPU上的地址线对存储芯片进行连接扩展。这种方法直接通过地址线对芯片进行选择,线路简单且容易实现。然而,由于地址线在同一时间只能有效选通一条,因此会导致地址不连续(只能用选中的一个, 其他的用不了)。
    • 不能同时为 0 或者 1 就是不能都用或都不用
  • 片选法

    • 在进行片选时,需要将地址线的低位部分直接与存储器芯片的地址线相连,而高位部分则通过译码器进行译码,以选择相应的芯片。在选择完芯片后,还需要进行字选,即选择存储器中的具体字单元。这样,通过片选和字选,CPU就可以准确地访问存储器中的任意一个存储单元。

区别是一个可以提供连续的地址一个是不连续的地址

译码器 : 二进制变十进制

字位扩展(一组有多片)


🪴高速存储器

双端口RAM和多模块存储器

  • 双端口RAM、多模块存储器都是提高CPU访存的速度
  • 双端口RAM
    • 双端口RAM是指同一个存储器有左右两个独立的端口,分别具有两组相互独立的地址线、数据线和读写控制线,允许两个独立的控制器同时异步地访问存储单元这种存储器可以同时被两个控制器访问增加了存储器的带宽提高了单体存储器的工作速度。
    • 双端口RAM的两个端口可以同时对同一地址单元进行读操作,但不会发生冲突。当两个端口的地址不相同时,在两个端口上进行读写操作一定不会发生冲突。当两个端口同时对同一地址单元进行读写操作时,会出现读写错误。为了避免这种情况,可以采用逻辑判断决定暂时关闭一个端口,未被关闭的端口正常访问,被关闭的端口延长一个很短的时间段后再访问。
  • 多模块存储器
    • 多模块存储器是一种将多个存储模块组合在一起使用的存储器系统。每个存储模块都是一个独立的存储器,具有自己的地址线、数据线、读写控制线等。多个模块可以组合在一起形成一个大的存储空间,以便满足不同应用的需求。
    • 多模块存储器的每个模块都是一个独立的存储器,因此它们可以独立地进行读写操作。同时,多个模块可以组合在一起,使得整个存储系统的容量和带宽都得到了扩展。多模块存储器适用于需要大容量和高带宽的应用场景,例如大型服务器、数据中心等。

双端口RAM适用于需要高带宽的应用场景,而多模块存储器适用于需要大容量和高带宽的应用场景。

  • 多模块存储器中的“单体”和“多体”指的是存储模块的连接方式。
  1.  单体多字存储器:在这种方式中,每个存储模块只有一个存储体,每个存储单元存储m个字。地址必须顺序排列并且处于同一个存储单元(一个存储器中),这样在一次存取周期内,从同一地址取出m条指令,然后逐送至CPU。这种方式的一个缺点是,如果程序存在相邻体中,那么采用此编址方式的存储器为交叉存储器,而交叉存储器无法提高存储器的吞吐率。
  2.  多体并行寄存器:这种方式中,每个模块都有相同的容量和存取速度,各模块都有独立的读写控制电路、地址寄存器和数据寄存器。它们既可以并行工作,也可以交叉工作。

🏵️ Cache存储器

时间局部性和空间局部性

  • 时间局部性 : 在最近的未来要用到的信息, 很可能是现在正在使用的信息, 因为程序中存在循环   (循环)
  • 空间局部性 : 在最近的未来要用到的信息, 很可能与现在正在使用的信息在存储空间上是邻近的, 因为指令通常是顺序存放的, 顺序执行的, 数据也一般是以向量数组形式簇聚地存储在一起的 (顺序指令)

访问顺序与存放顺序一致  ==>  空间局部性好

主存与缓存的对应(直接映射)

 


🍓虚拟存储器

由于计算机不能执行比主存空间大的程序, 所以需要使用到虚拟存储器, 解决主存空间不足的问题

虚拟二字的含义:传统的存储系统有一次性 和 驻留性两个问题,虚拟存储器就是解决这两个问题,变为多次性 和 对换性,从而从逻辑上扩充了主存容量。

而虚拟存储器一定采用页式、段式、段页式管理方式,因为只有这样才能满足多次性和对换性。因此,其能够很好的满足程序的空间局部性原理

(页式、段式、段页式管理方式又叫请求页式、请求段式、请求段页式,区别是一般页式存放所有的块,故其页表要比虚拟的大且不会发生缺页情况,因为前者一次装入全部程序)

注意:

  1. 一次性:作业必须一次性全部装入内存后才能运行
  2. 驻留性:一旦作业被装入内存,则会一直占据内存,直至运行结束。
  3. 多次性和对换性需要解决2个问题:
    1. 进:如何判断缺页
    2. 出:若内存空间不够,OS如何将暂时不用的信息换出到外存。

  • 虚拟页式存储
    • 虚拟页式存储:以分页式管理方式的虚拟存储器。
    • 页式管理方式:一个进程在逻辑上被分为若干个大小相等的页面,页面大小与主存块的大小相同。每个页面可以离散的放入不同的主存块中。
      1. 优点:不会产生外部碎片
      2. 缺点:
        1. 最后一页可能产生内部碎片
        2. 不用拥有逻辑独立性,处理、保护、共享 不及段式
    • 地址转换
      1. 每次将程序加载到主存的位置是不一样的,我们不可能提前预知进程被放在哪里,所以指令的地址码使用的是逻辑地址
      • 注意:

    1. 页表寄存器

    2. 逻辑地址--->物理地址--->cache/主存

    3. 页表缺失,则TLB和cache一定缺失

    • 注意:

    1. 快表是类似于cache的存在,故其也有三种映射方式。但是,映射方式只会影响标记字段位数(即逻辑块号),不会影响页框号字段。

    2. 快表中逻辑块号字段是隐藏表示,但是页表是直接表示。

    • 快表(TLB)

      页式方式只是满足了程序空间局部性原理,创建快表满足程序时间局部性原理。

    • 注意:

    1. 访问快表比慢表(即页表)更快的原因:
      1. 快表是放在一个SRAM存储器中
      2. 快表是一种“相联寄存器”,可以按内容和地址寻址,而根据内容逻辑号查找对应的主存号会更快。
    2. 若快表没命中,会访问页表,并将信息复制到快表中。

虚拟段式存储器

  1. 优点:
    1. 不会产生内部碎片
    2. 拥有逻辑独立性,易于处理、保护、共享
  2. 缺点:会产生外部碎片

注意:

  1. 段表是段基址 + 段长
  2. 段表核心字段:逻辑段号 + 段基址 + 段长

地址转换

注意:段表存放在段表寄存器

  • 虚拟段页式存储器
    • 缺点:地址变换过程中需要两次查表,系统开销较大。
    • 程序先分段,再分块:虚拟地址 = 段号 + 段内页号 + 页内地址

注意:

  1. 段表的字段变为了标识页表,即段表字段充当页表寄存器的作用。若假设程序被分为n段,则该程序总共存在1个页表,n个页表
  2. 段页式先分段后分页,类似于多级页表,故次级页表一个占一个块,段号中用页表存放块号来代替页表基址。

地址转换

替换算法

注意:只有FIFO算法会产生Belady异常。(Belady异常:所分配的物理块数增大,但是缺页故障数不减反而增加的异常。)

虚拟内存VSCache

  1. 相同
    1. 都把数据划分为小的信息块,并作为基本的传递单位(只是对象不同,cache划分对象为主存,而虚存划分对象为磁盘程序,故一般虚存的块更大)
    2. 都有地址映射、替换算法、更新策略等。
    3. 都应用了程序的局部性原理.。虚存的页式,段式,段页式都满足空间局部性,若增加快表,则满足时间局部性
  2. 不同
    1. 虚存主要解决主存容量,cache解决CPU与主存速度不匹配
    2. cache全部由硬件组成,对所有程序员透明
      虚存由os和硬件组成,故其对系统程序员不透明,对应用程序员透明
    3. 对不命中的影响。CPU速度是主存的10倍,主存速度是辅存的100倍,故不命中时,对虚存的影响更大。
    4. CPU可以和主存直接相连,不命中时,CPU可以直接访问主存;但是,CPU不与辅存相连,虚存不命中时,只能从辅存中读数据到主存.

 

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

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

相关文章

打游戏NVIDIA怎么设置性能最好?

打游戏NVIDIA怎么设置性能最好?当前很多用户都在Win10电脑上畅玩游戏,所以想知道NVIDIA控制面板最佳设置方法,更好地发挥NVIDIA控制面板性能,用户就能享受更棒的游戏乐趣。接下来小编给大家详细介绍NVIDIA显卡游戏最佳设置步骤教程…

【Proteus仿真】【51单片机】智能晾衣架设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器,使用LCD1604液晶、按键、蜂鸣器、L298N电机、PCF8591 ADC模块、DHT11温湿度传感器、雨滴传感器、风速、光线传感器等。 主要功能: 系统运行…

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之Linux 进程管理 6》(10)

《Linux操作系统原理分析之Linux 进程管理 6》(10) 4 Linux 进程管理4.6 Linux 管道4.6.1 管道的概念4.6.2 无名管道1.终端使用2.程序中使用 4.6.2 命名管道1.终端使用2.程序中使用 4 Linux 进程管理 4.6 Linux 管道 4.6.1 管道的概念 1、管道是 linu…

2019年10月17日: Go生态洞察:在Go 1.13中处理错误

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

Mysql数据库多表数据查询问题

1、背景 线上某个业务数据分表存储在10个子表中,现在需要快速按照条件(比如时间范围)筛选出所有的数据,主要是想做一个可视化的数据查询工具,给产研团队使用。 2、实践 注意:不要在线上真实数据库操作&am…

用户选择PowerFlex的十大理由

既有高性能      满足AI、VDI、数据库等工作负载      又有开放架构      4个节点起步可扩展至上千节点      支撑起不断变化的新兴应用负载      还能与云互通      实现云上云下互联      Dell PowerFlex      连续八季度销量增长      …

提升企业文档处理效率,尽在Readiris PDF Corporate下载

在现代企业中,大量的文档处理工作是不可避免的。然而,传统的文档处理方法往往效率低下,浪费了企业宝贵的时间和资源。为了帮助企业提升文档处理效率,我们推荐使用Readiris PDF Corporate软件。 Readiris PDF Corporate是一款功能…

HarmonyOS 应用模型开发指南介绍

一、基本概念解析 新版文档中的知识点,介绍更全面,逻辑更清晰,提供了各类基本概念解析,帮助开发者更快学习、掌握系统能力。以下是新版文档部分概念展示。 1、HAP是什么? 开发者通过DevEco Studio把应用程序编译为一…

企企通相继出席首届百家新锐企业融通创新交流会与采购数字化创新沙龙,持续深化数字赋能

近期,企企通受邀分别参加了广州、上海业界重磅活动,针对新形势下企业数字化采购升级的新技术与新思路、产业链上下游协同发展等进行探讨,赋能数字化信息技术产业生态发展,并对各方主体如何协作共赢助推企业数字化发展建言献策。 0…

AMP State Evolution的计算:以伯努利先验为例

AMP State Evolution (SE)的计算 t 1 t1 t1时, E ( t ) E [ X 2 ] \mathcal E^{(t)} \mathbb E [X^2] E(t)E[X2],SE的迭代式为 τ r ( t ) σ 2 1 δ E ( t ) E ( t 1 ) E ∣ η ( t ) ( X Z ) − X ∣ 2 , Z ∼ N ( 0 , τ r ( t ) ) \begin{a…

JVM运行时数据区域、对象内存分配、内存溢出异常总结

深入理解java虚拟机第二章 二、运行时数据区域2.2.1 程序计数器2.2.2 Java虚拟机栈2.2.3 本地方法栈2.2.4 Java堆2.2.5 方法区2.2.6 运行时常量池2.2.7 直接内存 三、HotSpot虚拟机对象解密2.3.1 对象的创建对象如何分配内存?对象的创建如何处理并发问题&#xff1f…

vue3父子组件通过$parent与ref通信

父组件 <template><div><h1>ref与$parents父子组件通信 {{ parentMoney }}</h1><button click"handler">点击我子组件的值会减20</button><hr><child ref"children"></child></div> </te…

深度学习之图像分类(十五)DINAT: Dilated Neighborhood Attention Transformer详解(一)

Dilated Neighborhood Attention Transformer Abstract Transformers 迅速成为跨模态、领域和任务中应用最广泛的深度学习架构之一。在视觉领域&#xff0c;除了对普通Transformer的持续努力外&#xff0c;分层Transformer也因其性能和易于集成到现有框架中而受到重视。这些模…

GPIO的使用--操作PF09 PF10 PF08实现呼吸灯、跑马灯、警报闪烁灯

先来个呼吸灯演示 呼吸灯 目录 一、GPIO的介绍 1.含义 2.控制原理 3.控制流程 二、LED控制 1.呼吸灯 操作代码 烧录结果 2.蜂鸣器红绿灯交替 操作代码 3.红绿灯交替闪烁 操作代码 一、GPIO的介绍 1.含义 GPIO(general porpose intput output),通用输入输出端口。…

AI超级个体:ChatGPT与AIGC实战指南

目录 前言 一、ChatGPT在日常工作中的应用场景 1. 客户服务与支持 2. 内部沟通与协作 3. 创新与问题解决 二、巧用ChatGPT提升工作效率 1. 自动化工作流程 2. 信息整合与共享 3. 提高决策效率 三、巧用ChatGPT创造价值 1. 优化产品和服务 2. 提高员工满意度和留任率…

Slf4j使用Logback时,Logback如何初始化

前言 Slf4j SLF4J&#xff0c;全称 Simple Logging Facade for Java&#xff0c;是一个用于Java编程语言的日志系统抽象层。它为多种现有日志框架&#xff08;例如Log4j、java.util.logging等&#xff09;提供了统一的接口, 但自身并不实现日志功能。 SLF4J 允许用户在部署时…

ArkUI 如何将$r(’app.string.xxx‘) 转成string字符串

一、正常引用字符串资源文件内容 在 ArkUI 中&#xff0c;string.json 中的字符串资源正常情况下使用如下方式引用&#xff1a; Entry Component struct LoginPage {build() {Column() {Text($r(app.string.title))}}}二、资源转string类型 上面的代码没问题是因为 Text(con…

如何通过内网穿透实现公网远程ssh连接kali系统

文章目录 1. 启动kali ssh 服务2. kali 安装cpolar 内网穿透3. 配置kali ssh公网地址4. 远程连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 简单几步通过[cpolar 内网穿透](cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站)软件实现ssh远程连接kali 1…

销售流程中如何有效开发客户

在销售的海洋中&#xff0c;如何游刃有余地开发客户是一大关键。这需要深入了解你的目标客户&#xff0c;制定一份精细的销售计划&#xff0c;选择最合适的沟通方式&#xff0c;建立信任和信誉&#xff0c;并持续不断地跟进。 每一个潜在的客户都是一颗璀璨的星辰&#xff0c;…

【密码学引论】Hash密码

第六章 Hash密码 md4、md5、sha系列、SM3 定义&#xff1a;将任意长度的消息映射成固定长度消息的函数功能&#xff1a;确保数据的真实性和完整性&#xff0c;主要用于认证和数字签名Hash函数的安全性&#xff1a;单向性、抗若碰撞性、抗强碰撞性生日攻击&#xff1a;对于生日…