内存储器之只读存储器(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

相关文章

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

Java中StopWatch的使用示例详解

《Java中StopWatch的使用示例详解》stopWatch是org.springframework.util包下的一个工具类,使用它可直观的输出代码执行耗时,以及执行时间百分比,这篇文章主要介绍... 目录stopWatch 是org.springframework.util 包下的一个工具类,使用它

Java进行文件格式校验的方案详解

《Java进行文件格式校验的方案详解》这篇文章主要为大家详细介绍了Java中进行文件格式校验的相关方案,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、背景异常现象原因排查用户的无心之过二、解决方案Magandroidic Number判断主流检测库对比Tika的使用区分zip

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

springboot security快速使用示例详解

《springbootsecurity快速使用示例详解》:本文主要介绍springbootsecurity快速使用示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录创www.chinasem.cn建spring boot项目生成脚手架配置依赖接口示例代码项目结构启用s

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML