计算机底层:高速缓冲存储器

14 篇文章 4 订阅
订阅专栏

计算机底层:高速缓冲存储器

fe272fd5154c4b7a8c4943206053e8b7.png

高速缓冲存储器(cache) 简称 缓存 ,位于CPU与内存之间的临时存储器,它的容量比内存小但交换速度快。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。

 

那么为什么需要缓存呢?

        cpu的速度是内存速度的100倍  (100:1)

        这里的速度是什么意思呢?

        这里指的是,ALU读取寄存器数据和读取内存数据 之间速度的比率。也就是说:ALU访问寄存器的速度比访问内存的速度快100倍。

        那么为什么ALU访问寄存器的速度比访问内存的速度快100倍呢?

                这里说的是访问速度,不考虑存储器;其实很简单,就是因为:ALU距离内存近.

还有就是寄存器和内存本身

寄存器与内存的区别:

        

1. 寄存器是CPU内部的一种高速存储器,它的容量比内存小,但是速度比内存快得多;

2. 内存是外部存储器,它的容量比寄存器大,但是速度比寄存器慢;

3. 寄存器只能存储少量的数据,而内存可以存储大量的数据;

4. 寄存器的数据只能在CPU内部使用,而内存的数据可以在CPU外部使用;

5. 寄存器的数据只能在一次程序执行中使用,而内存的数据可以在多次程序执行中使用。

 

这里想必都很好理解.

为什么寄存器处理数据的速度比内存快?

         这里说到的就是,处理数据的速度:

                1.距离不同

                2.硬件设计不同

                3.工作方式不同

为什么寄存器处理数据的速度比内存快?_Wu Junwu的博客-CSDN博客

这里引出一个问题 :能不能让程序直接在寄存器内部执行,而不用放到内存里?

        当然是可以的。但是前提就是寄存器存储能力得足够,这显然很难实现,因为需要考虑性价比,寄存器比内存贵很多!8g内存400块,而8g寄存器却要40w。主要还是因为硬件设计不同,因为:内存每个位就是一个电容和一个晶体管,而寄存器的设计则完全不同,多出好几个电子元件。每个位多出好几个电子元件,寄存器有6000多位,可想而知这价格得放大多少?6000多位1024bit=1kb,这才多少?更何况想跑一个程序,

在程序执行时,需要从内存中拿数据,拿到寄存器上,再进入ALU,会发现:从寄存器上拿数据确实很快,但是每次CPU都需要从内存拿数据这却很慢,所以为了提高效率就出现了缓存的概念。

缓存立于CPU和内存之间,包含在CPU内部。

75c3bbb274fb433db3e3de74280f975a.png

 

原理: 

        原理其实很简单,就像你在北京,你需要买个东西,如果你之间从海南买东西是不是要很久,但是从上海买东西是不是就比从海南买来得快。

        从内存离得远拿数据慢,但是可以距离缓存进,拿数据就快了一些。

 

那么缓存应该怎么装数据呢?是从内存中一个一个装到缓存里吗?

        显然不是,如果一个一个进入到缓存,那和到内存里一个一个拿,有什么区别?还不如直接从内存拿,还要什么缓存。所以肯定是没区别的。其实拿数据时,是拿一整块数据,比如由一个数组,我不是拿数组里的一个元素,而是把一整个数组拿到缓存里。

 

 

一个缓存实现了让访问速度提高,拿能不能有多个缓存,让速度再提高呢?

就像:从北京—海南的距离变成了从北京—上海的距离,拿还能不能变成从北京—河南?北京—山东,甚至就在北京本地?

答案是可以的。

现在一般CPU都有多层缓存,以达到提升访问速度的作业,那么有几层呢?

现在工业实践中,多采用三层缓存,也就是说寄存器到内存之间有三个缓存

2002ea8f0f7e40599bef48854a3ad3e5.png

但如果有一天CPU访问内存的速度变快了,也许中间的缓存也会随之减少。

 

 

29f0b199bf0e4dfdb95bb673e1352de2.png

 三级缓存拿数据步骤:

①ALU想拿数据进来,会去寄存器拿。

②寄存器发现没有ALU想要的数据,找一级缓存。

③一级缓存发现没有寄存器想要的数据,找二级缓存。

④二级缓存发现没有一级缓存想要的数据,找三级缓存。

⑤三级缓存发现没有二级缓存想要的数据,找内存。

⑥内存发现有三级缓存想要的数据,把数据给三级缓存。

⑦三级缓存把数据给二级缓存。

⑧二级缓存把数据给一级缓存。

⑨一级缓存把数据给寄存器。

⑩寄存器把数据给ALU。

 

缓存行:

        缓存行就是一次性读取的数据块。什么意思呢?

       上面也说了,CPU不会从内存一个数据一个数据地拿。当你要从内存拿一个数据时,为了下次不用再次访问内存,缓存就会从内存拿到这个数据附近所合起来的一块数据,这就叫缓存行。

        为什么是拿数据附近所合起来的数据呢?

        这是存在一个理论的,即:

   程序的局部性原理:①空间局部性、②时间局部性。

        这是在工业事件中得到的。

空间局部性:如果一个内存位置(数据/指令)被引用了一次,那么程序很可能在不远的将来引用其附近的一个内存位置(数据/指令)。

 

时间局部性:被引用过一次的内存位置(数据/指令)很可能在不远的将来再被多次引用。

 

既然一个,数据会被多次引用 并且也会很可能也会马上访问到临边的数据,因此缓存就会从内存拿到这个数据附近所合起来的一块数据。

 

        那么又引出了一个问题:缓存行越大越好,还是越小越好?

        其实都不好,一个缓存行太大,cpu拿一次数据就需要很久;一个缓存行太小,cpu就要多次地从内存拿数据。所以应该适中。

        其实规定了工业上规定了缓存行的大小,这也是在工业实践中得到的:64字节到256字节不等.

缓存行与缓存一致性协议:

【计算机组成】8.如何保持缓存一致性_哔哩哔哩_bilibili

        当你用多线程写程序时,比如创建了两个数组,你要用两个线程去分别去修改两个数组的内容。

        如果你在两个数组前后加上64-256个字节的变量,你会发现程序的速度跑得更快。

        这是因为缓存一致性协议的存在。

原理:

        首先,就需要知道一点,由于空间局部性,这两个数组很可能创建在同一行(距离很近)

068756d4fd7c4305999381dd86119379.png

        内存到多个CPU(内核)的缓存中会发生拷贝,就是每个CPU内部缓存中,都会有一份其中一个CPU会用到的数据,这是为了提高访问速度,也就是说所有cpu内部缓存都会有同样的一份数据块。

        并且,当这个数据块被修改时,其他CPU如果有用到这块数据块,为了数据的一致性,就会同步修改过这块数据的CPU,更新上传到内存,要用这块的CPU再从CPU拿下来.

        当多个处理器的运算任务都涉及同一 块主内存区域时,将可能导致各自的缓存数据不一致的情况,如果真的发生这种情况,那同步回到主内存时以谁的缓存数据为准呢?为了解决一致性的问题,需要各个处理器访问缓存时都遵循一些协议,在读写时要根据协议来进行操作,这类协议有MSI、MESI(IllinoisProtocol)、MOSI、Synapse、Firefly及DragonProtocol,等等。不同厂家都有不同的协议MESI就是因特尔的,这些就叫做 缓存一致性协议       

缓存一致性原则的概念以及流程: 缓存一致性协议:MESI_bingaPang的博客-CSDN博客 

        

        因此,当两个数组距离很近时,左边的cpu需要和右边的cpu同步(使用缓存一致性协议),同步的前提是两边会用到同一份(不需要是一块)数据。所以,如果再两个数组前后都加上64-256个字节的数据,那么两个数组还会在同一行吗?显然不会,它们完全被隔开了,不会因为空间局部性而在同一行,那么如果不在同一行,那么缓存拿一块数据时,最多拿64-256个字节,缓存行怎么也不可能拿到两个数组的数据,因此只能分成两块缓存行拿,那么两块缓存行就互不影响,从而不需要同步。

 

        总结:由于缓存行和程序的局部性原理的存在,我们需要一种机制,来保证数据的一致性, 这种机制叫做:缓存一致性协议。

 

 

 

 

 

计算机存储金字塔层次结构:寄存器 高速缓存 内存 硬盘
COCoDΣ的博客
04-17 6273
计算机存储器的金字塔层次结构,参考这里 CPU、内存、硬盘的关系:硬盘用来存储我们的程序和数据,当我们运行程序的时候,CPU首先接受到我们的命令,之后CPU是告诉硬盘,我要运行你存储的程序A,你把程序A送到内存去。CPU对内存说,我让硬盘把程序A送到你这里来了,你保存一下。 等程序A被完整的送到内存之后。CPU就开始执行程序A。 CPU 并不会直接和每⼀种存储器设备直接打交道,⽽是每⼀种存储器设备只和它相邻的存储器设备打交道。⽐如,CPU Cache 的数据是从内存加载过来的,写回数据的时候也只写回到内存,
高速缓存(cache)存储器
热门推荐
Move_now的博客
03-30 1万+
高速缓存(cache)存储器:这里先说明一下(高速缓存)cache和(高速缓冲)buffer的区别: buffer主要作用是在一定程度上减少对IO设备访问的次数,可以起到流量整形的作用,也提升了系统的性能,毕竟IO操作和内存和cpu的处理速度差距还是很大的,比如下载一个文件,是积攒到一定量才写回磁盘,而不是下载一个字节写回一个字节,这样过不了多久,磁盘就损坏了。 cache主要作用是缓解处理数据
高速缓冲存储器 Cache
weixin_34008805的博客
05-16 645
一、 Cache- 主存存储结构及其实现 为了解决存储器系统的容量、存取速度及单位成本之间的矛盾,可以采用 Cache- 主存存储结构,即在主存和 CPU 之间设置高速缓冲存储器 Cache ,把正在执行的指令代码单元附近的一部分指令代码或数据从主存装入 Cache 中,供 CPU 在一段时间内使用,由于存储器访问的局部性,在一定容量 Cache 的条件下,我们可...
Computer Architecture —— Cache 缓存器介绍
最新发布
awildchild1的博客
07-30 673
知乎老萧处理器芯片设计2021年12月20日 08:15这篇文章讲围着缓存器展开,讲述它的结构功能、以及它的设计指标。知乎老萧处理器芯片设计2021年12月21日 07:48。
Cache(高速缓冲存储器)
裴大能的博客
03-28 1418
Cache(高速缓冲存储器) 什么是Cache 在多行并行存储系统中,由于I/0设备像内存请求的级别高于CPU访存,出现CPU等待I/0设备访存的现象,致使CPU空等一段时间,降低了CPU工作效率。为了避免与I/0争抢方寸,在CPU与主存中加一级缓存。这样,主存可以将CPU要取的信息提前送至缓存,一旦主存与I/0设备进行访问时,CPU可以在直接从缓存中读取所需信息,不必空等而影响效率。 另一角度看,主存速度的提高跟不上CPU的发展,希望由高速缓存Cache解决主存与CPU之间速度不匹配问题。 CPU在从主
高速缓冲存储器(Cache)
qq_51542797的博客
09-22 479
学习Cache时所记录的笔记。
微机原理与接口技术:第5章 存储器系统.ppt
09-17
存储器系统由多个层次构成,从最高层次的CPU内部的寄存器到最底层的外部磁盘存储器。每一层都有其特定的速度、容量和价格,构成了存储器的层次结构。例如,通用寄存器组和指令、数据缓冲栈位于CPU内部,提供最快但...
高速缓存存储器结构与应用研究
计算机系统中,高速缓存存储器被广泛应用于提高数据访问效率。随着计算机性能的提升和任务的复杂化,对于高速缓存存储器的研究与优化也变得愈发重要。 ## 1.2 目的与意义 本文旨在介绍高速缓存存储器的基本原理...
计算机系统基础——存储器层次结构
qq_45779270的博客
11-16 3637
存储器层次结构 存储器系统 存储器系统是一个由具有不同容量,不同成本,不同访问时间的若干存储设备组成的层次结构,从上到下依次是:寄存器,高速缓存存储器,主存,硬盘,网络文件。 层次越高,容量越小,成本越高,访问时间越短,高层的存储设备是底层存储设备的缓存区。 这样,一个编写良好的程序总是倾向于频繁的访问某一个层次上的存储设备。 存储技术 1.随机访问存储器 随机访问存储器:RAM,分为两类,静态的(SRAM)和动态的(DRAM)。静态RAM相比动态RAM来说,速度更快,价格更高,因此SRAM常用来作高速缓存
【深入理解计算机系统CSAPP】第六章 存储器层次结构
xuhss_com的博客
05-19 873
🚀 优质资源分享 🚀 学习路线指引(点击解锁) 知识定位 人群定位 🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 💛Python量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 6 存储器层次结构 存储器系统(memory system)是一个具有不同容量、成本和访问时间的存储设备的层次结构。CPU 寄存器保存着最常用的数据。靠近 CPU 的小
高速缓冲存储器
iwainfo的专栏
12-14 2035
高速缓存的工作原理1、读取顺序  CPU要读取一个数据时,首先从Cache中查找,如果找到就立即读取并送给CPU处理;如果没有找到,就用相对慢的速度从内存中读取并送给CPU处理,同时把这个数据所在的数据块调入Cache中,可以使得以后对整块数据的读取都从Cache中进行,不必再调用内存。  正是这样的读取机制使CPU读取Cache的命中率非常高(大多数CPU可达90%左右),也就是说C
二、Cache_上
凡物加倍磨治,皆能变化气质
07-10 8133
ARM学习书籍或者思路总结,以XMIND 为形式,构建思维大厦,蛰伏与积累,下面补充对XMIND的描述 本篇参考 arm 官网公开材料,和微信公众号 老秦谈芯 学习笔记 1.什么是cache Cache存储器也被称为高速缓冲存储器,位于CPU和主存储器之间。之所以在CPU和主存之间要加cache是因为现代的CPU频率大大提高,内存的发展已经跟不上CPU访存的速度。在2001 – 2005年间,处理器时钟频率以每年55%的速度增长,而主存的增长速度只是7%。在现在的系统中,处理器需要上百个时钟周期才能从主.
计算机组成原理之机器:存储器之高速缓冲存储器
一个搬运知识的笨小孩
03-08 1157
简要了解cache
计算机组成结构—高速缓冲存储器(Cache)
记录一名程序员的成长历程
05-06 1632
基本想法就是使用速度更快但容量更小、价格更高的,用来存放经常用到的信息;这样一来,CPU 就可以直接与 Cache 交换数据,而不用访问主存了。这种方案之所以有效,是因为通过对大量典型程序分析发现,。这是由于指令和数据在内存中都是连续存放的,而且有些指令和数据会被多次调用(比如常用函数、循环代码段、数组和一些常数);也就是说,指令和数据在主存中地址分布不是随机的,而是相对的簇聚。这使得 CPU 执行程序时,访存具有相对的局部性;这称为程序访问的。
三、存储系统(五)高速缓冲存储器(Cache)
24考研人晴落的博客
11-11 1773
这一节是对多层次存储系统中的“Cache-主存”层次的笔记。Cache-主存层:主要解决CPU和主存速度不匹配的问题。之间的数据调动是由硬件自动完成的。 Cache常用SRAM(更快、更贵、集成度更低),内存常用DRAM(更慢、更便宜、集成度更高)。
计算机组成原理】存储系统(四)—— 高速缓冲存储器 Cache
haoweixl的博客
09-14 664
二、使用 Cache 所必须解决的问题采用和提高存储器的工作速度,优化后速度与CPU差距依然很大。这时提出了 主存-Cache 的方式。
写文章

热门文章

  • 计算机底层:ASCII码、区位码、国标码、汉字机内码,还有字形码和输入输出编码之间的关系以及介绍 10559
  • C语言函数:malloc()创建数组 6668
  • Linux:命令date、ntp查看和修改(校准)时间和地区。 5378
  • 网安:haveibeenpwned(社工库)查看信息是否被泄露 5144
  • 计算机底层:海明校验码。 4414

分类专栏

  • Python 3篇
  • WPS 2篇
  • linux 31篇
  • 计算机底层 14篇
  • 数据结构与算法 4篇
  • 网络安全 7篇
  • html 1篇
  • C语言函数 14篇
  • C语言 43篇
  • C语言题目 17篇
  • C语言数组 3篇
  • C语言函数指针 4篇
  • 指针 4篇
  • n=n&(n-1) 2篇

最新评论

  • C语言函数:qsort()函数

    Fastrack527: 博主的写的内容简单清晰,详细易懂,让人看了受益匪浅,继续加油哟~

  • 计算机底层:奇偶校验码

    srhqwe: 可以说说看

  • 计算机底层:奇偶校验码

    J_TC: 好像有错

  • 网络安全:VBS的一些做病毒的基本命令

    srhqwe: 重启一下,重新输

  • 网络安全:VBS的一些做病毒的基本命令

    w。55: 为什么我照着输的显示错误,未结束的字符串常量

最新文章

  • Python: 库decimal()用于浮点数相加
  • Python库: keyword
  • Python函数:chr()和ord()
2023年95篇
2022年12篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

srhqwe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

天下网标王网站优化费用云浮网站关键词排名优化多少钱潜山网站优化哪家性价比高弥河网站优化哪家好app网站图片优化优化网站链接的心得网站关键词快速优化淮北网站优化丰泽网站优化推广怎么优化美容网站册亨网站优化价格厦门优化网站网站排名优化首选火28星达上海网站优化推广服务江南都市花园搜狗网站优化南京网站制作优化公司网站优化 流量宁波网站关键词优化公司邢台网站优化的价格罗湖教育网站优化哪家好永州专业营销型网站优化虹口区企业网站优化价格费用云浮外贸网站优化小程序网站优化开发大连网站优化虹口区网站优化定制方案网站优化怎么处理廉江百度网站优化成都哪个网站优化最好网站优化:下拉栏泰公推广香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化