导航

公墓网

当前位置: 首页 > 公墓资讯

cache,cache是什么意思

更新时间:2025 07 16 23:28:48 作者 :庆美网 围观 : 95次

大家好,今天小编来为大家解答cache,cache是什么意思这个问题,很多人还不知道,现在让我们一起来看看吧!

让我们分享两张图片:

查看计算机的存储系统

以下是对计算机中内存,缓存和寄存器概念的介绍:

cache,cache是什么意思

中央处理器中的1. 寄存器组件。寄存器是高速存储组件,存储容量有限,可用于临时存储指令,数据和地址。在中央处理器的控制组件中,包括的寄存器是指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术和逻辑成分中,包含的寄存器是累加器(ACC)。

寄存器是CPU内部的组件,并且寄存器的读写速度很高,因此寄存器之间的数据传输非常快。

2. 内存这包含一个非常宽的范围,通常分为只读内存(ROM),随机内存(RAM)和缓存内存(缓存)。

Cache,即缓存内存,是一个容量较小但CPU和主内存之间高速的内存。由于CPU速度远高于主内存,因此CPU需要等待一定时间段内才能直接从内存访问数据。 CPU刚刚使用或回收的数据的一部分。当CPU再次使用此部分数据时,可以直接从缓存中调用它,从而减少了CPU的等待时间并提高了系统的效率。缓存分为第一级高速缓存(L1高速缓存)和二级缓存(L2高速缓存)。 L1缓存集成在CPU内部。 L2缓存通常在早期在主板上焊接,现在它也集成在CPU内部。共同容量为256KB或512KB L2缓存。

根据到CPU的距离,最接近的是寄存器,然后是缓存,最后是内存。

因此,寄存器最接近CPU,CPU仅从寄存器访问。

(存款的含义是暂时存储数据。如果您每次都不会从内存中获取数据,则是临时数据存储的空间。这是火车站存储的含义)

寄存器中的数据来自内存。因此,cpu-register - cache-记忆这是它们之间的信息交换。

将CPU与大脑寄存器进行比较就像您正在考虑的问题一样,Cahe是您的记忆(临时)。大脑的其他部分存储了记忆,但是大脑将其处理得更慢,并且需要一个更快的位置才能暂时存储您从大脑其他部分提取的记忆。这个地方是缓存。

总之计算机中数据是通过内存-Cache-寄存器,Cache缓存则是为了弥补CPU与内存之间运算速度的差异而设置的的部件。理解这三个之间的区别对我们优化还是挺重要的。更多的DEVOPS和DBA内容将在以后共享。有兴趣的朋友可以关注它

为什么国产手机的文件夹全是英文名?哪些可以删除?总算明白了

我相信许多人遇到了这种情况。使用手机一段时间后,它提示了内存不足。打开文件管理并希望手动清洁它,但没有办法启动。

因为这些文件夹都以英文名称为单位,所以我不知道每种含义,也不知道可以删除哪些含义,哪些不能清洁。如果我删除错误的手机,手机将变成砖块,最后我会放弃。

今天,教授将为您透露英语文件夹的小秘密,以便您可以大胆地清理垃圾文件。

为什么文件夹是英文命名?尽管我们使用国内手机,但手机中的Android系统来自Google,以英语命名是很自然的。

同时,英语编程效率要高得多,并且在中文中进行编程和执行要困难得多。毕竟,中文是世界上最困难的文本。

可以删除的文件夹Backup:这个单词表示备份。该文件夹存储一些自动备份文件,例如地址簿,短信等的备份,并且在数据损坏时可以从此处恢复。如果您没有积极备份此内容,则可以将其删除。

Cache:单词表示缓存。该文件夹包含应用程序缓存的某些文件,这些文件通常是我们通常使用软件来缓存的某些内容,而无需重要的数据,并且其他带有此后缀的文件也可以直接删除,从而节省了很多空间。

Data:这个单词表示数据,显然是一个文件夹,该文件夹在我们的手机上存储了来自软件的应用程序数据。如果您不需要使用某些软件,则可以选择将其删除。

DCIM:这个词代表系统专辑,该专辑存储您的手机拍摄的照片和视频缩略图。这些照片在手机中占据了很多内存,因此您可以保存要保留到其他地方的照片,然后定期清洁此文件夹。

Download(download):这个词的意思是下载。资本的起点是指在线下载文件目录,小写的起点是指手机本身存储下载和传输文件,可以定期清洁这些文件,否则它将占据大量手机的内存。

LOST.DIR:这个单词表示一个文件夹,该文件夹专门用于收集在运行手机系统或应用程序时意外丢失的文件。如果文件偶然丢失,则可以通过此文件夹检索。可以直接删除内部的文件,但请勿删除oft.di文件夹。

Temp:这个词的全名是临时的,代表临时文件。当我们浏览网页时,它可以节省信息并缓存垃圾,这将影响系统操作并容易感染病毒。最好定期删除和清洁,这可以节省很多空间。

Tencent:单词代表腾讯,这意味着只要文件名包含腾讯,腾讯的应用程序文件数据,例如微信,QQ,电子邮件,聊天记录,视频和图片等,它占据了很多内存。如果没有特别重要的数据,建议直接删除它。

以应用程序名称命名的文件夹,例如“ Sina”,“ UCDownload”,“ BAIDU”和“ ABEAD”,也可以删除,不会影响电话的正常操作。

此外,带有后缀“ .apk”的文件属于安装程序包文件,带有后缀的文件“ .log”是程序日志文件,而带有后缀的文件”。是临时文件,可以直接删除这些文件夹。

谨慎删除的文件夹Android:这个词应该对每个人都熟悉,这意味着Android。这是一个非常重要的文件夹,可存储一些程序数据,系统目录或文件。如果被删除,手机的某些功能至少会消失,并且需要在使用之前再次下载。在最坏的情况下,它将影响系统的流畅性。在任何特殊情况下都不要删除它。

Bugtogo:许多人在看到前面的“错误”时应该理解它。这是一个文件夹,该文件夹存储文件,例如手机漏洞,系统错误等。如果删除,则可能会影响系统的操作。建议不要删除它。

System:单词表示系统,其性质类似于“ Android”。该文件夹还存储了一些与系统相关的重要文件。删除也可能破坏系统的正常操作,这很容易导致手机口吃。建议不要清洁此文件夹。

现在,我相信每个人都可以清楚地了解哪些文件可以信心删除,哪些文件不能随便触摸。关于手机中的英文文件夹,大家还有其他了解吗?欢迎留言区补充~

编译器优化丨Cache优化

本文来自华为云社区《》,作者:Bi Sheng Xiao助理。

软件开发人员通常希望计算机硬件具有无限的容量,零访问延迟,无限的带宽和廉价的内存,但现实是,内存容量越大,相应的访问时间越长。内存访问速度越快,越昂贵。带宽越大,越昂贵。为了根据程序访问的定位原理解决大容量,高速和低成本之间的矛盾,更常用的数据将其放置在具有较小容量的高速记忆中,并且具有不同速度的多个内存在层次上是层次的,以协调工作。

图1 SEVE的内存层次结构[1]

现代计算机的存储水平可以分为几层。如图1所示,寄存器位于处理器内部;较远的是第一级缓存。一级缓存通常可以保存64K字节,该字节大约需要1NS才能访问它。同时,通常将第一级缓存分为指令缓存(处理器获取要从指令缓存执行的指令)和数据缓存(处理器存储器的操作数/从数据缓存中获取指令);然后,二级高速缓存通常同时保存指令和数据,其容量约为256K,大约需要3-10NS才能访问它;然后,第三级高速缓存,容量约为16-64MB,大约需要10-20NS才能访问它;然后,主内存,硬盘等。请注意,CPU和缓存以Word传输,并且缓存以块(通常为64 byte)传输。

上面提到的程序的局部性原理通常是指时间局部性(在一定时间内,程序可能会多次访问相同的内存空间)和空间局部性(在一定时间内,该程序可以访问附近的内存空间)。缓存(缓存)的效率取决于程序空间和时间的局部性。例如,程序反复执行循环。在理想情况下,循环的第一次迭代将代码获取到缓存中,然后随后的迭代直接从缓存中获取数据而无需从主内存重新加载。因此,为了获得更好的程序性能,应尽可能在缓存中进行数据访问。但是,如果缓存时数据访问冲突,也可能导致性能退化。

出于空间原因,本文重点介绍编译器在缓存优化中可以做什么。如果读者对其他内存分层优化感兴趣,请留言。这是通过优化缓存使用量来提高程序性能的几种方法。

现代编译器可以通过调整代码和数据的布局来提高缓存命中率,从而提高程序性能。本节主要讨论数据和指令对齐和代码布局对程序性能的影响。在大多数处理器中,使用缓存线(通常为64英寸,有些位置称为缓存块。本文均匀地使用缓存线)。 CPU一次从内存中加载数据,一次将数据写入内存一个缓存线。

假设处理器首次访问数据对象A,并且其大小正好为64 byte。如果数据对象A的第一个地址不对齐,也就是说,数据对象A占据了两个不同的缓存线的一部分。目前,处理器在访问数据对象时需要两个内存访问,这是效率低下的。

但是,如果数据对象a是安排内存的,也就是说,它恰好位于缓存线中,那么处理器在访问数据时只需要一个内存访问,这将更加有效。编译器可以通过合理地放置数据对象,避免将它们跨越多个缓存线,并尝试将相同的对象集中在一个缓存中,从而有效地使用缓存来提高程序的性能。通过按顺序分配对象,也就是说,如果不能将下一个对象放置在当前高速缓存线的其余部分,则将跳过其余部分,将从下一个缓存线的开头分配对象,或者将在同一存储区域中分配相同大小的对象,并且所有对象都将在大小的多个范围中分配,等等。

如图2所示,缓存线对齐可能会导致浪费存储资源,但是结果可能会提高执行速度。对齐不仅可以对全局静态数据作用,而且还可以对分配在堆上分配的数据作用。对于全局数据,编译器可以通过汇编语言对齐命令通知链接器。对于分配在堆上的数据,将对象放置在缓存线的边界上的工作或最小化对象越过缓存线的次数不是由编译器完成的,而是通过运行时的存储分配器来完成的[2]。

图2。块对齐可能会浪费存储空间

上述数据对象对齐可以提高程序性能。指令缓存的一致性也可以提高程序性能。同时,代码布局还将影响程序的性能。将常见执行的基本块的头部地址对齐缓存线的大小多重边界可以同时增加指令缓存中包含的基本块的数量,并在不同的缓存线上进行不经常执行的说明并经常执行指令,并通过代码布局优化程序性能。

缓存预取的方法是将指令和数据存储在存储器中,以提前将其存储到缓存中,以实现加速处理器执行的目的。可以通过硬件或软件实现缓存预取。硬件预取的通过处理器中的特殊硬件单元实现。本单元通过跟踪内存访问指令数据地址的更改模式来预测将访问的内存地址,并将数据从主存储器提前读取到缓存;软件预摘要是插入程序中显示的预取指令,允许处理器以非阻滞方式从内存到缓存的指定地址数据。由于通常无法正常动态地关闭硬件预脱水,因此在大多数情况下,软件预取和硬件预取联合共存。软件预取用必须尽力与硬件预取合作以取得更好的结果。本文假定关闭硬件预摘要,并讨论如何使用软件预摘要来实现性能改进。

预取指令Prefech(X)只是一个提示,即告诉硬件开始从主存储器到缓存的地址X读取数据。它不会导致处理停顿,但是如果硬件发现生成异常,则将忽略预取操作。如果Prefech(X)成功,则意味着下次获取X时将击中缓存;不成功的预取操作可能会导致下次阅读时发生缓存失误,但不会影响程序的正确性[2]。

数据预取的数据如何更改为程序性能?以下程序:

假设缓存线可以存储两个双重元素。当第一次访问[0]时,由于[0]不在缓存中,因此将发生缓存误差,并且需要从主内存中加载到缓存中。由于缓存线可以存储两个双元素,因此不会发生[1]。依此类推,访问[2]时将发生缓存失误,而在访问[3]时不会发生缓存失误。很容易获得该程序总共发生了50次。

我们可以通过相关优化(例如软件预取用)来减少缓存时间的数量,并提高程序性能。首先,引入一个公式[3]:

在上面的公式中,L是内存延迟,S是执行循环迭代的最短时间。 iTerationAhead意味着循环需要在预取数据到达缓存之前执行几次迭代。假设我们的硬件体系结构=6计算出的iTerationAhead,则可以将原始程序优化到以下程序中:

由于我们的硬件体系结构需要在预取数据到达缓存之前执行6个周期。缓存线可以存储两个双重元素。为了避免浪费预取指令,序言和稳态循环都会扩展,即,在预取(A [0])之后,A [0]和A [1]将从主存储器加载到缓存中。下次您进行预取时,无需再次加载[1]从主内存到缓存。序言循环首先执行数组a的前12个元素的预取指令。执行稳态循环时,当i=0时,A [0]和A [1]已加载到缓存中,并且不会发生高速缓存。依此类推,在上述优化之后,没有更改语义,使用预取指令,该程序的高速缓存数量从50降至0,并且该程序的性能将大大提高。

请注意,预取的并不能减少从主存储器到缓存获取数据的延迟,而只会通过重叠预购和计算来隐藏此延迟。简而言之,当处理器具有预取指令或可以用作预取的非块读取说明时,预取适用于无法动态重新排列说明或动态重排缓冲区的处理器小于我们想要隐藏的特定缓存延迟,并且数据所考虑的数据是否比缓存更大。预摘要也不是万能的。预取不当可能导致缓存冲突和程序性能的退化。我们应该首先使用数据重复使用来减少延迟,然后再考虑预取。

除了预取软件外,ARMV8还提供非时空的负载/商店说明,可以改善缓存的利用率。对于某些数据,如果您仅访问一次并且不需要占用缓存,则可以使用此指令访问它以保护缓存中的密钥数据,以免被替换。例如,在Memcpy大数据的情况下,使用此指令将受益于其关键业务。

在缓存中重复使用数据是使用缓存的最基本和有效的方法。 For multi-layer nested loops, loop transformation operations can be performed by exchanging two nested loops, reversing the order of loop iteration execution (loop reversal), merging the two loop bodies into a loop body (loop fusion), loop splitting, loop tiling, loop unroll and jam, etc. Choosing an appropriate loop transformation method can not only maintain the semantics of the program, but also improve program performance.我们的循环转换的主要目的是优化寄存器,数据缓存和其他存储层次结构的使用。

空间有限,本节仅讨论循环平铺如何改善程序性能。如果您对循环互换感兴趣,请单击以进行检查。以下简单循环:

我们假设数组A和B都是超大阵列,M和N是相等且大的,并且该程序不会在边界上体验数组访问。然后,如果B [J]在J-Layer循环中跨越太大,则在下次重复使用I层循环时,将数据从缓存中清除。也就是说,当程序访问B [n-1],B [0]和B [1]时,已清除了缓存。目前,需要再次将数据从主内存加载到缓存中,并且程序性能将大大降低。

我们如何通过减少缓存失误的数量来提高程序的性能?通过在循环上进行循环瓷砖,我们可以满足我们的期望,即通过循环重排,将数据分为瓷砖,以便可以在缓存中暗示每个瓷砖的数据[4]。从内部循环开始,假设瓷砖的大小t,t远小于m和n,当访问b [0]时,t的值使得b [t-1]仍在高速缓存中,这将大大减少缓存失误时间的数量。假设n-1恰好被t排除,则B数组的访问顺序如下:

循环平铺后,循环转换为:

假设每个缓存线都可以容纳X数组元素,缓存数量a的数量在循环铺平之前为m/x,高速缓存误差的数量为m*n/x,缓存误差的总数为m*(n+1)/x。循环瓷砖后,a的高速缓存时间为(n/t)*(m/x),b的高速缓存时间数为(t/x)*(t/x)*(n/x)*(n/t)=n/x,高速缓存误差时间为n*(m+t)/xt。目前,由于n和m相等,因此在循环平铺后可以将缓存遗漏减少约t [4]。

上一篇文章讨论了循环瓷砖如何改善小用例中的程序性能。简而言之,为不同的循环方案选择合适的循环交换方法不仅可以确保正确的程序语义,而且还可以获得提高程序性能的机会。

亲爱的,就是这样。对于不同的硬件,我们需要结合特定的硬件体系结构,使用性能分析工具,并通过分析报告和程序来考虑系统级别和算法级别的问题,并且通常会带来意外的收益。本文简要介绍了与内存层次结构优化相关的几种方法,并结合了一些小示例,以易于理解的方式解释与内存层次结构优化相关的一些知识。您从纸张获得的知识总是很浅,您必须自己练习才能知道它。需要从实践中缓慢探索与性能优化相关的更多知识。

关于cache,cache是什么意思,的介绍到此结束,希望对大家有所帮助。

用户评论

tina

缓存系统真的太重要了,玩游戏的时候网页一直加载超慢我都快放弃了!后来发现是缓存有问题,升级了之后网速飞一般!真赞!

    有10位网友表示赞同!

猫腻

我想说一下我最近遇到一个问题,就是每次访问网站都要翻墙才能正常打开,怀疑是缓存被污染了,请问谁能帮我看看?

    有15位网友表示赞同!

余温散尽ぺ

学计算机的学生真的要认真学习缓存的概念!它是网站和程序运行的灵魂,掌握得好的话可以提高效率很多。我刚明白它原理就感觉特别牛逼啊!

    有9位网友表示赞同!

微信名字

我的浏览器老是跳出警告说缓存已满,到底要不要清理呀?听说清理了会影响网页打开速度?烦死了!

    有17位网友表示赞同!

你的眸中有星辰

cache是什么意思? 简单的解释就是电脑里面用来快速访问的数据存储空间。比如你要经常访问某个网页,缓存系统就会先把那页面的数据存下来,这样下次点击就不用重新加载了,速度快很多!

    有5位网友表示赞同!

浅巷°

听别人说起过Cache,好像是一个很重要的技术概念,但是具体是什么我还不太了解。我正在学习网站开发,想问问各位大神Cache的作用和使用方法呢?

    有20位网友表示赞同!

有一种中毒叫上瘾成咆哮i

缓存真是个神奇的东西啊,让我感觉像穿了隐形的加速器!打开网页的速度从几秒钟变成了零点几秒。这改变我的互联网体验!

    有11位网友表示赞同!

不要冷战i

我对这个cache技术非常感兴趣!希望能了解更多细节,比如各种不同的缓存机制和它们具体的应用场景等等.

    有7位网友表示赞同!

绝版女子

我感觉Cache概念的学习挺重要的,因为很多程序都涉及到缓存的使用手法。了解这些知识可以让我更好地理解代码工作原理,写出更高效的程序。

    有10位网友表示赞同!

暮光薄凉

cache 这个名字听起来好熟悉啊!好像在以前某个软件文档中见过,现在想不起来具体是什么意思了

    有5位网友表示赞同!

念安я

我记得以前听朋友说过 Cache,说是用来加快电脑处理速度的东西。但是我自己的电脑一直都没什么问题,是否真的需要在意 Cache?

    有8位网友表示赞同!

独角戏°

感觉很多文章都会提到Cache,但他们解释都比较抽象,让人很难理解到底是什么意思。能不能用通俗易懂的语言解释一下Cache呢?

    有19位网友表示赞同!

凉城°

如果缓存是用来加速网站访问的话,那是不是所有网站都应该使用 cache 技术呢? 存在没有使用 Cache 的网站吗?

    有8位网友表示赞同!

妄灸

看了大家的评论感觉Cache确实很重要,看来以后我学习编程的时候一定要好好研究研究这个概念!

    有15位网友表示赞同!

枫无痕

最近我在玩游戏的时候经常遇到卡顿状况,难道跟我电脑配置不高有关?听说可以设置缓存来改善这种情况吗?

    有10位网友表示赞同!

何必锁我心

cache的应用场景真的很多啊! 不光是网站和程序开发都需要用到,我朋友还在说它可以用在机器学习算法中。看来这是一个很重要的技术概念!

    有18位网友表示赞同!

命硬

我一直以为Cache就是硬盘的一部分啊,没想到它跟内存有关。原来缓存是用来临时存放数据,这样可以加快数据的读取速度,真是让我恍然大悟!

    有6位网友表示赞同!

半世晨晓。

其实我更关心的是如何管理和维护 Cache 。 如果一直让数据堆积在 Cache 里面会不会对电脑造成负担呢?

    有10位网友表示赞同!

标签: 公墓资讯
相关资讯