目录

  • 关系
  • 1、寄存器
  • 2、缓存(Cache)
    • 2.1、寄存器和缓存的区别
    • 2.2、一级缓存和二级缓存
  • 3、内存
    • 3.1、只读存储器 ROM(Read Only Memory)
    • 3.2、随机存储器 RAM(Random Access Memory)
      • 3.2.1、静态RAM(Static RAM/SRAM)
      • 3.2.2、动态RAM(Dynamic RAM/DRAM)

关系

1、寄存器

寄存器(register)是CPU(中央处理器)的组成部分,是一种直接整合到cpu中的有限的高速访问速度的存储器,它是有一些与非门组合组成的,分为通用寄存器和特殊寄存器。cpu访问寄存器的速度是最快的。那为什么我们不把数据都存储到寄存器中呢,因为寄存器是一种容量有限的存储器,并且非常小。因此只把一些计算机的指令等一些计算机频繁用到的数据存储在其中,来提高计算机的运行速度。

2、缓存(Cache)

缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。

因为缓存往往使用的是RAM(断电即掉的非永久储存),所以在用完后还是会把文件送到硬盘等存储器里永久存储。电脑里最大的缓存就是内存条了,最快的是CPU上镶的L1和L2缓存,显卡的显存是给显卡运算芯片用的缓存,硬盘上也有16M或者32M的缓存。

CACHE是在CPU中速度非常块,而容量却很小的一种存储器,它是计算机存储器中最强悍的存储器。由于技术限制,容量很难提升。

对于大多数人来说Cache,是透明的、不存在的。其中一个原因是Cache是集成到CPU中,对于程序员来说是透明的。

2.1、寄存器和缓存的区别

按与CPU远近来分,离得最近的是寄存器,然后缓存,最后内存。所以,寄存器是最贴近CPU的,而且CPU只与寄存器中进行存取。寄存器从内存中读取数据,但由于寄存器和内存读取速度相差太大,所以有了缓存。即读取数据的方式为:

CPU <------>寄存器 <---->缓存<----->内存

当寄存器没有从缓存中读取到数据时,也就是没有命中,那么就从内存中读取数据。

2.2、一级缓存和二级缓存

CPU读取数据的顺序为先缓存后内存。

CPU内部集成的缓存称为一级缓存(L1 Cache),外部的称为二级缓存(L2 Cache)。

一级缓存中又分为数据缓存(D-Cache)和指令缓存(I-Cache)。二者可以同时被CPU进行访问,减少了争用Cache所造成的冲突,提高了CPU的效能。

CPU的一级缓存通常都是静态RAM(Static RAM/SRAM),速度非常快,但是贵。

为提高系统的性能和速度又必须扩大缓存,所以在不扩大原来的静态RAM缓存容量的情况下,仅仅增加一些高速动态RAM(Dynamic RAM/DRAM)做为L2级缓存。高速动态RAM速度要比常规动态RAM快,但比原来的静态RAM缓存慢,而且成本也较为适中。一级缓存和二级缓存中的内容都是内存中访问频率高的数据的复制品(映射),它们的存在都是为了减少高速CPU对慢速内存的访问。

二级缓存是CPU性能表现的关键之一,在CPU核心不变化的情况下,增加二级缓存容量能使性能大幅度提高。而同一核心的CPU高低端之分往往也是在二级缓存上存在差异.

CPU在缓存中找到有用的数据被称为命中,当缓存中没有CPU所需的数据时(这时称为未命中),CPU才访问内存。从理论上讲,在一颗拥有二级缓存的CPU中,读取一级缓存的命中率为80%。也就是说CPU一级缓存中找到的有用数据占数据总量的80%,剩下的20%从二级缓存中读取。由于不能准确预测将要执行的数据,读取二级缓存的命中率也在80%左右(从二级缓存读到有用的数据占总数据的16%)。那么还有的数据就不得不从内存调用,但这已经是一个相当小的比例了。

在较高端CPU中,还会带有三级缓存,它是为读取二级缓存后未命中的数据设计的一种缓存,在拥有三级缓存的CPU中,只有约5%的数据需要从内存中调用,这进一步提高了CPU的效率,从某种意义上说,预取效率的提高,大大降低了生产成本却提供了非常接近理想状态的性能。

3、内存

ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。

3.1、只读存储器 ROM(Read Only Memory)

PROM是可编程的ROM,PROM和EPROM(可擦除可编程ROM)两者区别是,PROM是一次性的,也就是软件灌入后,就无法修改了,现在已经不可能使用了,而EPROM是通过紫外光的照射擦除原先的程序,是一种通用的存储器。另外一种EEPROM是通过电子擦除,价格很高,写入时间很长,写入很慢。

3.2、随机存储器 RAM(Random Access Memory)

3.2.1、静态RAM(Static RAM/SRAM)

当数据被存入其中后不会消失。SRAM速度非常快,是目前读写最快的存储设备。当这个SRAM 单元被赋予0 或者1 的状态之后,它会保持这个状态直到下次被赋予新的状态或者断电之后才会更改或者消失。需要4-6 只晶体管实现, 价格昂贵。

3.2.2、动态RAM(Dynamic RAM/DRAM)

DRAM 必须在一定的时间内不停的刷新才能保持其中存储的数据。DRAM 只要1 只晶体管就可以实现。

DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何的ROM都要快,但从价格上来说DRAM相比SRAM要便宜很 多,计算机内存就是DRAM的。

寄存器、缓存、内存之间的关系和区别相关推荐

  1. 【操作系统】计算机中内存、cache和寄存器之间的关系及区别

    1. 寄存器是中央处理器内的组成部份.寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令.数据和位址.在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC).在中央处理器的 ...

  2. 理解CPU/寄存器/内存之间的关系

    CPU/寄存器/内存 因为要了解多线程,自然少不了一些硬件知识的科普,我没有系统学习过硬件知识,仅仅是从书上以及网络上看来的,如果有错误请指出来. CPU,全名Central Processing U ...

  3. CGI,FastCGI和PHP-FPM之间的关系和区别

    CGI,FastCGI和PHP-FPM之间的关系和区别. 什么是CGI? 早期的web server只可以处理简单的静态web文件,但是随着技术的发展出现动态语言如PHP,Python.PHP语言交给 ...

  4. 栈,队列和链表三者之间的关系与区别

    最近一直在学习算法,刷算法题,但是自从大学毕业以来,数据结构的知识都还给老师了,只会个数组,所以前期刷的题目也都是有关数组的 最近跟着小册重学了一遍数据结构,今天就记录一下栈,队列和链表三者之间的关系 ...

  5. java map与set的区别_java 集合(list,set,map)三者之间的关系和区别

    原 java 集合(list,set,map)三者之间的关系和区别 一:先上一张关系图,让大家看的更明白. 备注:其中红色部分为实现,其他地方均为接口. 二:各自的特点. List 有序,可重复Arr ...

  6. sql语句和java的关系_java中Statement 与 PreparedStatement接口之间的关系和区别

    Statement 和 PreparedStatement之间的关系和区别. 关系:PreparedStatement继承自Statement,都是接口 区别:PreparedStatement可以使 ...

  7. 详解RTK、RTD、SBAS、WAAS、PPP、PPK广域差分等技术之间的关系与区别。

    RTK与RTD的区别,一个是载波相位差分.一个是码差分,并且RTK的定位精度要高一些. RTK与PPK的区别,一个是实时提供数据信息,一个是事后处理. WAAS是SBAS系统一个具体的实例,包含在SB ...

  8. 详解RTK,RTD,SBAS,WAAS,PPP,PPK,广域差分等技术之间的关系与区别

    RTK与RTD的区别,一个是载波相位差分.一个是码差分,并且RTK的定位精度要高一些. RTK与PPK的区别,一个是实时提供数据信息,一个是事后处理. WAAS是SBAS系统一个具体的实例,包含在SB ...

  9. UIView 的 alpha、hidden 和 opaque 属性之间的关系和区别

                     UIView 的 alpha.hidden 和 opaque 属性之间的关系和区别 UIView的这几个属性让我困惑了好一阵子,通过翻看官方文档和stackoverf ...

最新文章

  1. DFA确定性有穷自动机及其化简
  2. OpenGL画图设备上下文与MFC设备上下文的对应
  3. React Antd Upload自定义上传customRequest
  4. JS原型链中的属性问题
  5. C++ 内建函数对象
  6. ajax和fetch哪个好,axios和ajax,fetch的区别
  7. .NET 工具生成引擎概述
  8. Starling滤镜合集2(新增7种滤镜)
  9. 偏微分方程数值解法pdf_数值模拟偏微分方程的三种方法:FDM、FEM及FVM
  10. AD2017破解步骤
  11. QOS-CBWFQ\QOS-LLQ\QOS-PQ\QOS-CQ\QOS-WFQ
  12. android 心率传感器,安卓手表开发 心率篇 Android wear heart rate
  13. node状态管理cookie,session,token的各自特点和使用方法还有hash算法加密
  14. 自然语言处理基础 一 及 sklearn实现 分析词代码实现
  15. 生鲜电商之百果园的未来
  16. cordic ip核 vivado_Xilinx Vivado CORDIC IP核求解atan 反正切
  17. html实现手风琴轮播图,javascript经典特效分享 手风琴、轮播图、图片滑动
  18. 职场小人拉帮结派被孤立要如何处理
  19. STC12C5A60S2软件模式SPI读取DS1302时钟实时显示在1602
  20. FS100N03替代NCE3080K新洁能30V 80A MOS场效应管

热门文章

  1. [已解决] c#签名时出错
  2. 语音识别-人工智能实验室旗下语音识别频道,汇集最新最全的语音识别新闻及资讯,让您掌握语音识别第一手的资讯-中国人工智能网-Powered by www.AiLab.cn
  3. 文本分类——KNN算法
  4. python执行pip install 命令的时候报错 Filexxxx,line 1 pip install 的问题
  5. 【Fiddler介绍】
  6. 字符串排序(函数,指针)(C语言实现)
  7. 微信小程序发现的一些小问题以及解决方案集合以及注意点
  8. VS2008+DDK+ddkwizard环境的配置
  9. 一步一步构建手机WebApp开发——环境搭建
  10. Android读取联系人的姓名及电话号码