内存储器之只读存储器(ROM),随机存取存储器(RAM)和Cache详解

本文主要是介绍内存储器之只读存储器(ROM),随机存取存储器(RAM)和Cache详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

内存储器

计算机中的存储器分为内存和外存两大类。

  • 内存的存取速度快而容量相对较小,它与CPU直接相连,用来存放等待CPU运行的程序和处理的数据;
  • 外存的速度较慢而容量相对很大,它与CPU并不直接连接,用于永久性地存放计算机中几乎所有的信息。

寄存器

CPU内部的存储器就叫做寄存器,运算器中的通用寄存器、专用寄存器;控制器中的指令寄存器等都属于寄存器。寄存器的存取速度最快(和CPU的速度一样快),价格最高,容量最小。一般有十几个甚至上百个寄存器。

内存储器由称为存储器芯片的半导体集成电路组成。按照是否能随机地进行读写,半导体存储器芯片分为只读存储器(Read Only Memory,ROM)随机存取存储器(Random Access Memory,RAM)两大类

只读存储器(ROM)

ROM是英文Read Only Memory的缩写,其中文名称为只读存储器。

ROM只读存储器里的信息只能被反复地读出而不能随便写入,当断开电源后,ROM中的信息不会丢失。在ROM中一般存放重要的、经常使用的程序或其他信息。

按照ROM的内容是否能被改写,ROM可分为以下几类:

  • Mask ROM(掩膜ROM):存储的数据由工厂在生产过程中一次形成,此后无法进行修改
  • PROM(Programmable ROM,可编程只读存储器):这种ROM允许用户或制造商在产品制造后写入数据一次。这些数据写入后即无法更改,但可以读取。
  • EPROM(Erasable Programmable ROM,可擦除可编程只读存储器):这种ROM在写入数据后可以被擦除,然后重新编程。因此,它可以被多次重新编程,但每次都需要通过紫外线照射来擦除数据。
  • Flash ROM(快擦型存储器,简称闪存):它是一种新型的非易失性存储器,在低电压下,存储的信息可读不可写;而在较高电压下,所存储的信息可以更改和删除。在PC中用于存储BIOS程序,还可在数码相机和U盘中使用

随机存取存储器(RAM)

RAM是英文Random Access Memory的缩写,其中文名称为随机存取存储器。

RAM存储器可随机地向指定的存储单元读写信息,但计算机断电后,这种存储器中的信息将完全丢失,这一特点被称为数据的易失性。

RAM的优点是存取速度快、读写方便,缺点是数据不能长久保存、断电自行消失

根据工作原理和结构的不同可分为SRAM(静态随机存取存储器)和DRAM(动态随机存取存储器)

SRAM

SRAM(静态随机存取存储器)是一种利用双稳态触发器来存储数据的存储器。每个存储单元由6个晶体管组成,具有高速、稳定、无需刷新等优点。由于其结构复杂,SRAM的集成度较低,功耗也相对较大,通常用于高速缓存存储器或CPU的一级、二级缓存。

SRAM芯片用于构造Cache,它的速度几乎与CPU一样快。计算机在执行程序时,CPU将预测可能会使用那些数据和指令,并将这些数据和指令预先送入Cache。当CPU需要从内存读取数据或指令时,先检查Cache中是否存有,若有,就直接从Cache中读取,而不用访问主存;若没有,CPU再直接访问主存。所以,Cache中的数据只是主存很小一部分内容的副本。与DRAM相比,SRAM电路较复杂,集成度低、功耗较大、制造成本高、价格贵、速度快

说明:Cache用于匹配CPU和内存两者的工作速度,发挥CPU的高速性能

DRAM

DRAM(动态随机存取存储器)利用电容存储电荷的原理保存信息,电路简单,集成度高。DRAM的基本存储单元是一个电容和一个晶体管,通过电容存储电荷的数量来表示存储数据的状态。由于任何电容都存在漏电,因此需要定期刷新电路来补充丢失的电荷,以保持数据稳定。DRAM常用于大容量存储器,如计算机的主内存、手机的RAM等。

与SRAM相比,DRAM电路相对简单,集成度高,功耗较低,制造成本较低,速度较慢等特点

主存储器主要是由DRAM芯片组成的。它含有大量的存储单元,每个存储单元可以存放1个字节(8个二进制位)。存储器的存储容量就是指它所包含的存储单元的总和。单位是MB(1MB=220字节)或GB(1GB=230字节)。为了区分不同的存储单元,必须给每一个存储单元分配一个编号(这些编号从0开始),被称为存储单元地址。CPU按地址访问存储单元。每个存储单元都有一个地址,CPU就按地址对存储器进行访问。

存储器的存取时间是指从CPU给出存储器地址开始到存储器读出数据并送到CPU(或者是把CPU数据写入存储器)所需要的时间。主存储器存取时间的单位是纳秒(ns,1 ns=10-9s)

随着CPU前端总线工作效率的进一步提高,近几年来,大多数的PC已经改用DDR SDRAM(双倍数据速率同步DRAM)和性能上更优越的DDR2 SDRAM、DDR3 SDRAM。

主存储器在物理结构上由若干内存条组成。内存条必须插入主板中相应的内存条插槽中才能使用。DDR2和DDR3均采用双列直插式内存条(DIMM内存条)。PC主板中一般都各配有2个或4个DIMM插槽

半导体存取器分类

请添加图片描述

Cache

Cache内存是一种高速缓冲存储器,其原始意义是指存取速度比一般随机存取存储器(RAM)来得快的一种RAM。它通常使用昂贵但较快速的SRAM技术,并且是存在于主存与CPU之间的一级存储器。高速缓冲存储器的容量较小,但速度比主存高得多,接近于CPU的速度。在计算机存储系统的层次结构中,高速缓冲存储器和主存储器一起构成一级的存储器。高速缓冲存储器和主存储器之间信息的调度和传送是由硬件自动进行的,其最重要的技术指标是命中率。为了提高Cache的命中率,Cache分为L1Cache(一级高速缓冲存储器)、L2Cache(二级高速缓冲存储器)。

高速缓冲存储器作为CPU和主存之间的桥梁,可以提高整个系统的性能。由于寄存器和DDR之间速度差异太大,DDR的速度远不能满足寄存器的需要,因此需要使用高速缓冲存储器来缓存指令和数据,以减少对主存的访问,提高系统的整体速度。

根据cache中存储的是指令还是数据,可以分为I-cache和D-cache。I-cache用于缓存指令,D-cache用于缓存数据。CPU的寄存器是L1的高速缓存,L1是L2的高速缓存,以此类推。高速缓存存储器的级别越高,容量越小,速度越快。

现在一般在CPU中都固化了Cache,另外硬盘也有自己的Cache,用于数据交换的进行

计算机存储器的层次结构

请添加图片描述

操作数是指等待CPU处理的数据,也是指等待处理的数据所在的内存地址。操作数包括标识符和标识参数,标识符分为主标识符和辅助标识符。

CPU访问程序和数据时,采取如下流程

  1. 寄存器访问:CPU首先查看需要的操作数是否已经在寄存器中。这是最快的访问方式,因为寄存器是与CPU核心紧密耦合的,可以以极快的速度访问。
  2. Cache访问:如果操作数不在寄存器中,CPU会查看高速缓存(Cache)中是否有该数据,如在,取自Cache。Cache是主存和CPU之间的一个高速存储层次,用于存储经常访问的数据,以减少对主存的访问。
  3. 主存访问:如果操作数不在Cache中,CPU将直接访问主存储器(RAM),如在RAM中,则取自RAM。主存是计算机系统中的一个主要存储区域,其速度比硬盘快,但比Cache慢。
  4. 硬盘访问:如果操作数不在主存中,CPU会发出磁盘I/O请求。这意味着数据可能位于硬盘上。硬盘是计算机中的一种低速存储设备,但可以存储大量的数据。从硬盘读取数据通常是一个相对较慢的过程。
  5. 数据传输:一旦确定了数据的来源(例如硬盘),系统将开始数据传输过程。数据首先从硬盘传输到RAM,然后可能从RAM传输到Cache,最后可能从Cache传输到寄存器。顺序是硬盘——>RAM——>Cache——>寄存器
  6. 预取和缓存管理:许多现代CPU还使用所谓的预取技术,这涉及预测未来的数据和指令访问模式,并将这些数据提前加载到Cache或更高级别的存储中。此外,CPU还有专门的缓存管理单元(CMU),负责维护和更新Cache的内容。
  7. 内存管理单元(MMU):在某些情况下,特别是涉及虚拟内存时,CPU还会与内存管理单元(MMU)交互。MMU负责将虚拟地址转换为物理地址,并管理页表和其他内存相关的功能。

这篇关于内存储器之只读存储器(ROM),随机存取存储器(RAM)和Cache详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/657240

相关文章

Redis中6种缓存更新策略详解

《Redis中6种缓存更新策略详解》Redis作为一款高性能的内存数据库,已经成为缓存层的首选解决方案,然而,使用缓存时最大的挑战在于保证缓存数据与底层数据源的一致性,本文将介绍Redis中6种缓存更... 目录引言策略一:Cache-Aside(旁路缓存)策略工作原理代码示例优缺点分析适用场景策略二:Re

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

MySQL数据库约束深入详解

《MySQL数据库约束深入详解》:本文主要介绍MySQL数据库约束,在MySQL数据库中,约束是用来限制进入表中的数据类型的一种技术,通过使用约束,可以确保数据的准确性、完整性和可靠性,需要的朋友... 目录一、数据库约束的概念二、约束类型三、NOT NULL 非空约束四、DEFAULT 默认值约束五、UN

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

Java Stream流使用案例深入详解

《JavaStream流使用案例深入详解》:本文主要介绍JavaStream流使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录前言1. Lambda1.1 语法1.2 没参数只有一条语句或者多条语句1.3 一个参数只有一条语句或者多