0

cache

cache知识专题栏目,提供与cache相关内容的知识集合,希望能快速帮助您找到有用的信息以解决您遇到的cache问题。

分享

浏览

1490

文章

14

清除cache分区是什么意思?

全文共 468 字

+ 加入清单

清除系统缓存

清除cache分区就是清除系统缓存,即系统垃圾,可以在运行中产生的垃圾。这个分区是安卓系统缓存区,清除这个分区,不会影响个人数据,只是删除了这个分区中已经保存的缓存内容。

清除cache分区就是清除系统缓存,即系统垃圾,可以在运行中产生的垃圾。cache是缓存,缓存就是计算机已经准备好的资源,这些东西存放在内存中,如果你需要,就会立刻跳出来,节省时间,但是长时间不用的东西确一直占着资源,那么慢慢积累缓存就变大了,可利用的内存就变少了,所以要定期清理缓存。

清除cache分区的注意事项如下:

1、清除之前备份好数据,cache分区它将挂载到/cache目录下。这个分区是安卓系统缓存区,保存系统最常访问的数据和应用程序。

2、擦除这个分区,不会影响个人数据,只是删除了这个分区中已经保存的缓存内容,缓存内容会在后续手机使用过程中重新自动生成。

3、手机的垃圾缓存,一定要经常清理,才可以保持良好的运行速度。

4、给手机清理垃圾缓存的时候,注意查看清理项,不要出现误删情况。

5、cache分区是缓存,对手机不会有影响的,放心清理即可。

展开阅读全文

cache文件夹可以删除吗?

全文共 380 字

+ 加入清单

可以

cache文件夹可以删除,这个单词是“缓存"的意思,也就是我们平时使用手机时留下的缓存文件,是可以放心删除的,不仅不会影响手机正常使用,还可以让手机提速不少。

在我们的手机中,有很多各式各样的文件夹,而且每个都占了手机的不少内存,想要删除它,又不知道这个文件夹是什么意思,很怕一不小心删除了重要文件,真的让人头疼。

cache文件夹是可以删除的,这个单词是“缓存"的意思,也就是我们平时使用手机时留下的缓存文件,是可以放心删除的,不仅不会影响手机正常使用,还可以让手机提速不少。

电脑上的删除方法:

1、单击“开始”,依次指向“所有程序”、“附件”、“系统工具”,然后单击“磁盘清理”;

2、在“驱动器”列表中,单击“C:”,选择“确定”;

3、等待检测;

4、在要删除的文件列表中,选择“office安装文件”复选框,点击“确定”;

5、询问是否删除时,单击“是”即可。

展开阅读全文

cache的中文译文

全文共 112 字

+ 加入清单

cache中文译名为高速缓冲存储器(快取记忆体),高速缓冲存储器(Cache)原意是指存取速度比一般随机存取记忆体快(ram)一得快的一种ram,一般来说,它不像系统主记忆体那样使用dram使用昂贵但更快的技术sram技术。

展开阅读全文

降低Cache失效率的方法[2]

全文共 3592 字

+ 加入清单

降低cache效率方法[2]

表4.7列出了在这两种极端情况之间的各种块大小和各种 Cache 容量的平均访存时间。速度最快的情况: Cache 容量为1KB、4KB、16KB的情况下块大小为32字节时速度最快;容量为64KB和256KB时,64字节最快。实际上,这些块大小都是当今处理机器 Cache 中最常见的。

如前所述, Cache 设计者一直在努力同时减少失效率和失效开销。从失效开销的角度来讲,块大小的选择取决于下一级存储器的延迟和带宽两个方面。高延迟和高带宽时,宜采用较大的 Cache 块,因为这时每次失效时,稍微增加一点失效开销,就可以获得许多数据。与之相反,低延迟和低带宽时,宜采用较小的 Cache 块,因为采用大 Cache 块所能节省的时间不多。一个小 Cache 块失效开销的两倍与一个两倍于其大小的 Cache 块的失效开销差不多,而且采用小 Cache 块,块的数量多,有可能减少冲突失效。

4.3.2提高相联度

表4.5和图4.3.1、图4.3.2已经说明了提高相联度会使失效率下降。从中我们可以得出两条经验规则。第一,对于表中所列出的 Cache 容量,从实际应用的角度来看,8路组相联在降低失效率方面的作用已经和全相联一样有效。也就是说,采用相联度超过8的方法实际意义不大。第二条规则叫做2:1 Cache 经验规则,它是指容量为N的直接映象 Cache 的失效率和容量为N/2的两路组相联 Cache 差不多相同。

许多例子都说明,改进平均访存时间的某一方面是以损失另一方面为代价的。增加块大小的方法会在降低失效率的同时增加失效开销,而提高相联度则是以增加命中时间为代价。Hill曾发现,当分别采用直接映象和两路组相联时,对于 TTL 或 ECL 板级 Cache ,命中时间相差10 %;而对于定制的 CMOS Cache,命中时间相差2 %。所以,为了实现很高的处理器时钟频率,就需要设计结构简单的 Cache;但时钟频率越高,失效开销就越大(所需的时钟周期数越多)。为减少失效开销,又要求提高相联度。下面通过一个例子进一步说明。

例4.5 假定提高相联度会按下列比例增大处理器时钟周期:

时钟周期2路 =1.10×时钟周期1路

时钟周期4路 =1.12×时钟周期1路

时钟周期8路 =1.14×时钟周期1路

假定命中时间为1个时钟,直接映象情况下失效开销为50个时钟周期,而且假设不必将失效开销取整。使用表4.5中的失效率,试问当 Cache 为多大时,以下不等式成立?

平均访存时间8路

平均访存时间4路

平均访存时间2路

解: 在各种相联度的情况下,平均访存时间分别为

平均访存时间8路 = 命中时间8路 + 失效率8路 ×失效开销8路

= 1.14+失效率8路 ×50

平均访存时间4路 = 1.12 +失效率4路 ×50

平均访存时间2路 = 1.10 +失效率2路 ×50

平均访存时间1路 = 1.00 +失效率1路 ×50

在每种情况下的失效开销相同,都是50个时钟周期。把相应的失效率代入上式,即可得平均访存时间。例如,1KB的直接映象 Cache 的平均访存时间为

平均访存时间1路 = 1.00 +(0.133×50) = 7.65

容量为128KB的8路组相联 Cache 的平均访存时间为:

平均访存时间8路 =1.14 +(0.006×50) = 1.44

利用这些公式和表4.5中给出的失效率,可得各种容量和相联度情况下 Cache 的平均访存时间,如表4.8所示。表中的数据说明,当 Cache 容量不超过16KB时,上述三个不等式成立。从32KB开始,对于平均访存时间有:4路组相联的平均访存时间小于2路组相联的,2路组相联的小于直接映象的,但8路组相联的却比4路组相联的大。

请注意,本例中没有考虑时钟周期增大对程序其它部分的影响。

4.3.3Victim Cache

增加 Cache 块大小和提高相联度是从 Cache 一出现就被体系结构设计者们用来降低失效率的两种经典方法。从本小节开始,我们来看一看近几年提出的几种方法,这些方法能在不影响时钟周期或失效开销的前提下降低 Cache 失效率。

一种能减少冲突失效次数而又不影响时钟频率的方法是:在 Cache 和它与下一级存储器的数据通路之间增设一个全相联的小 Cache ,称为Victim Cache。图4.3.4为其结构框图。 Victim Cache 中存放由于失效而被丢弃(替换)的那些块(即victim)。每当发生失效时,在访问下一级存储器之前,先检查 Victim Cache 中是否含有所需的块。如果有,就将该块与 Cache 中某个块做交换。Jouppi于1990年发现,含1到5项的 Victim Cache 对减少冲突失效很有效,尤其是对于那些小型的直接映象数据 Cache 更是如此。对于不同的程序,一个项数为4的 Victim Cache能使一个4KB直接映象数据 Cache 的冲突失效减少20%~90%。

从 Cache 的层次来看, Victim Cache 可以看成位于 Cache 和存储器之间的又一级 Cache ,采用命中率较高的全相联策略,容量小,而且仅仅在替换时发生作用。

4.3.4伪相连Cache

有一种方法既能获得多路组相联 Cache 的低失效率又能保持直接映象 Cache 的命中速度,这种方法称为伪相联或列相联。

1. 基本思想及工作原理

采用这种方法时,在命中情况下,访问 Cache 的过程和直接映象 Cache 中的情况相同;而发生失效时,在访问下一级存储器之前,会先检查 Cache 另一个位置(块),看是否匹配。确定这个另一块的一种简单的方法是将索引字段的最高位取反,然后按照新索引去寻找伪相联组中的对应块。如果这一块的标识匹配,则称发生了伪命中。否则,就只好访问下一级存储器。

2. 快速命中与慢速命中

伪相联 Cache 具有一快一慢两种命中时间,它们分别对应于正常命中和伪命中的情况。图4.3.5中绘出了它们的相对关系。使用伪相联技术存在一定的危险:如果直接映象 Cache 里的许多快速命中在伪相联 Cache 中变成慢速命中,那么这种优化措施反而会降低整体性能。所以,要能够指出同一组中的两个块哪个为快速命中,哪个为慢速命中,这是很重要的。一种简单的解决方法就是交换两个块的内容。

下面通过一个例子来说明伪相联带来的好处。

例4.6 假设当在按直接映象找到的位置处没有发现匹配,而在另一个位置才找到数据(伪命中)需要2个额外的周期。仍用上个例子中的数据,问:当 Cache 容量分别为2KB和128KB时,直接映象、两路组相联和伪相联这三种组织结构中,哪一种速度最快?

解: 首先考虑标准的平均访存时间公式:

平均访存时间伪相联 = 命中时间伪相联+失效率伪相联×失效开销伪相联

我们从该公式的最后一部分着手。不管我们对命中的情况做了何种改进,失效开销总是相同的。为了确定失效率,需要知道什么时候会发生失效。只要我们总是通过把索引的最高位变反的方法来寻找另一块,在同一“伪相联”组中的两块就是用同一个索引选择得到的,这与在两路组相联 Cache 中所用的方法是一样的,因而它们的失效率相同,即

失效率伪相联 = 失效率2路

再看命中时间。伪相联 Cache 的命中时间等于直接映象 Cache 的命中时间加上在伪相联查找过程中命中(即伪命中)的百分比乘以该命中所需的额外时间开销,即

命中时间伪相联=命中时间1路+伪命中率伪相联×2

伪相联查找的命中率等于两路组相联 Cache 的命中率和直接映象 Cache 命中率之差:

伪命中率伪相联 =命中率2路-命中率1路

=(1-失效率2路)-(1-失效率1路)

=失效率1路-失效率2路

综合上述分析,有

平均访存时间伪相联=命中时间1路+(失效率1路-失效率2路)×2

+失效率2路×失效开销1路

将表4.5中的数据代入上面的公式,得

平均访存时间伪相联,2KB =1+(0.098-0.076)×2+(0.076×50)=4.844

平均访存时间伪相联,128KB=1+(0.010-0.007)×2+(0.007×50)=1.356

根据上一个例子中的表4.8,对于2KB Cache ,可得

平均访存时间1路 =5.90 个时钟

平均访存时间2路 =4.90 个时钟

对于128KB的 Cache 有,可得

平均访存时间1路 =1.50 个时钟

平均访存时间2路 =1.45 个时钟

可见,对于这两种 Cache 容量,伪相联 Cache 都是速度最快的。

尽管从理论上来说,伪相联是一种很有吸引力的方法,但它的多种命中时间会使 CPU 流水线的设计复杂化。因此伪相联技术往往应用在离处理器比较远的 Cache 上,如二级Cache。

展开阅读全文

降低Cache失效率的方法[1]

全文共 2075 字

+ 加入清单

降低cache效率方法[1]

学习目标:

理解失效的三种类型(3C);

掌握Cache容量、相联度等与3C的关系;

掌握2:1Cache经验规则;

理解增加Cache块大小对失效率的影响;

理解提高相联度对失效率的影响;

掌握Victim Cache的思想;

掌握伪相联Cache的思想。

正文:

4.3降低Cache失效率的方法

许多有关 Cache 的研究都致力于降低 Cache 的失效率。本节就来讨论这个问题。 按照产生失效的原因不同,我们可以把失效分为以下三类(简称为3C):

(1) 强制性失效 (Compulsory miss)

当第一次访问一个块时,该块不在 Cache 中,需从下一级存储器中调入 Cache ,这就是强制性失效。这种失效也称为冷启动失效或首次访问失效。

(2) 容量失效 (Capacity miss)

如果程序执行时所需的块不能全部调入 Cache 中,则当某些块被替换后,若又重新被访问,就会发生失效。这种失效称为容量失效。

(3) 冲突失效 (Conflict miss)

在组相联或直接映象 Cache 中,若太多的块映象到同一组(块)中,则会出现该组中某个块被别的块替换(即使别的组或块有空闲位置),然后又被重新访问的情况。这就是发生了冲突失效。这种失效也称为碰撞失效或干扰失效。

表4.5针对 SPEC92 典型程序给出了上述三种失效所占的比例(这些数据是在 DECstation 5000上测得的。假设 Cache 的块大小为32字节,并采用 LRU 算法)。为了说明高相联度的好处,表中列出了在直接映象、两路组相联、四路组相联和八路组相联的情况下,冲突失效的值。可以看出:

(1) 相联度越高,冲突失效就越少;

(2) 强制性失效和容量失效不受相联度的影响;

(3) 强制性失效不受 Cache 容量的影响,但容量失效却随着容量的增加而减少;

(4) 表中的数据符合2:1的 Cache 经验规则,即大小为N的直接映象 Cache 的失效率约等于大小为N/2的两路组相联 Cache 的失效率。

图4.3.1和图4.3.2是表4.5中数据的图示,其中图4.3.1为绝对失效率,图4.3.2为各种类型失效率所占的百分比。

图中可以看出, SPEC92 程序的强制失效率很小。其他许多运行时间较长的程序也是如此。在 3C 中,冲突失效似乎是最容易减少的,只要采用全相联,就不会发生冲突失效。但是,用硬件实现全相联是很昂贵的,而且可能会降低处理器的时钟频率(见例4.3),从而导致整体性能的下降。至于容量失效,除了增大 Cache 以外,没有别的办法。在一个存储层次中,如果高一级存储器的容量比程序所需的空间小得多,就有可能出现抖动现象。这时大部分时间是花在两级存储器之间移动数据。出现抖动时,由于大量进行替换,机器的运行速度接近于只有第二级存储器的情况,甚至更慢。

另一个减少 3C 的方法是增加块的大小,以减少强制性失效。但在下面我们将看到,块大小增加可能会增加其它类型的失效。下面我们介绍7种降低失效率的方法。需要强调的是,许多降低失效率的方法会增加命中时间或失效开销。因此,在具体使用时,要综合考虑,保证降低失效率确能使整个系统速度提高。

4.3.1增加Cache块大小

降低失效率最简单的方法是增加块大小。图4.3.3中对于一组不同的 Cache 容量,给出了失效率和块大小的关系(在与表4.5类似的情况下测得的)。表4.6列出了图4.3.3的具体数据。

(1) 对于给定的 Cache 容量,当块大小增加(从16字节开始)时,失效率开始是下降,后来反而上升了。

(2) Cache 容量越大,使失效率达到最低的块大小就越大。

导致上述失效率先下降后上升的原因,在于增加块大小会产生双重作用。一方面它减少了强制性失效,因为局部性原理有两方面的含义:时间局部性和空间局部性,增加块大小利用了空间局部性;另一方面,由于增加块大小会减少 Cache 中块的数目,所以有可能会增加冲突失效。在 Cache 容量较小时,甚至还会增加容量失效。刚开始增加块大小时,由于块大小还不是很大,上述的第一种作用超过第二种作用,从而使失效率下降。但等到块大小较大时,第二种作用超过第一种作用,使失效率上升。

例4.4 假定存储系统在延迟40个时钟周期后,每2个时钟周期能送出16个字节。即:经过42个时钟周期,它可提供16个字节;经过44个时钟周期,可提供32个字节;依此类推。请问对于表4.6中列出的各种容量的 Cache ,在块大小分别为多少时,平均访存时间最小?

解: 动画演示

平均访存时间为

平均访存时间 = 命中时间 + 失效率 × 失效开销

假设命中时间与块大小无关,为1个时钟,那么对于一个块大小为16字节,容量为1KB的 Cache 来说:

平均访存时间 = 1+(15.05 %×42) = 7.321 个时钟周期

而对于块大小为256字节、容量为256KB的 Cache 来说,平均访存时间为

平均访存时间 = 1+(0.49 %×76) = 1.353 个时钟周期

展开阅读全文

什么是缓存Cache

全文共 278 字

+ 加入清单

什么是缓存cache

即高速缓冲存储器,是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。

Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2 Cache早期一般是焊在主板上,现在也都集成在CPU内部,常见的容量有1MB或2M L2 Cache。

展开阅读全文

什么是Instructions Cache/IMM/ID

全文共 302 字

+ 加入清单

什么是Instructionscache/IMM/ID

Instructions Cache: (指令缓存)由于系统主内存的速度较慢,当CPU读取指令的时候,会导致CPU停下来等待内存传输的情况。指令缓存就是在主内存与CPU之间增加一个快速的存储区域,即使CPU未要求到指令,主内存也会自动把指令预先送到指令缓存,当CPU要求到指令时,可以直接从指令缓存中读出,无须再存取主内存,减少了CPU的等待时间。

IMM: (Intel Mobile Module,英特尔移动模块)英特尔开发用于笔记本电脑的处理器模块,集成了CPU和其它控制设备。

ID: (identify,鉴别号码)用于判断不同芯片的识别代码。

展开阅读全文

什么是Cache/SIMD?

全文共 383 字

+ 加入清单

什么是cache/SIMD?

Cache :即高速缓冲存储器,是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2 Cache早期一般是焊在主板上,现在也都集成在CPU内部,常见的容量有256KB或512KB L2 Cache。

SIMD: (Single Instruction Multiple Data,单指令多数据流)能够复制多个操作,并把它们打包在大型寄存器的一组指令集,例:3DNow!、SSE。

展开阅读全文

cache基本知识培训教程[2]

全文共 3290 字

+ 加入清单

cache基本知识培训教程[2]

相联度越高(即 n 的值越大), Cache 空间的利用率就越高,块冲突概率就越低,因而 Cache 的失效率就越低。块冲突是指一个主存块要进入已被占用的 Cache 块位置。显然,全相联的失效率最低,直接映象的失效率最高。虽然从降低失效率的角度来看, n 的值越大越好,但在后面我们将看到,增大 n 值并不一定能使整个计算机系统的性能提高,而且还会使 Cache 的实现复杂度和代价增大。因此,绝大多数计算机都采用直接映象、两路组相联或四路组相联。特别是直接映像,采用得最多。

4.2.2查找方法

当CPU访问Cache时,如何确定Cache中是否有所要访问的块?若有的话,如何确定其位置?这是通过查找目录表来实现的。Cache中设有一个目录表,该表所包含的项数与Cache的块数相同,每一项对应于Cache中的一个块。当一个主存块被调入Cache中某一个块位置时,它的标识就被填入目录表中与该Cache块相对应的项中,并且该项的有效位被置“1”。

根据映象规则不同,一个主存块可能映象到Cache中的一个或多个Cache块位置。为便于讨论,我们把它们称为候选位置。当CPU访问该主存块时,必须且只需查找它的候选位置所对应的目录表项(标识)。如果有与所访问的主存块相同的标识,且其有效位为“1”,则它所对应的Cache块即是所要找的块。为了保证速度,对各候选位置的标识的检查比较应并行进行。

并行查找的实现方法有两种:

(1) 用相联存储器实现;

(2) 用单体多字存储器和比较器来实现。

图4.2.6中画出了用第二种方法来实现4路组相联的情况。

由图中可以看出,n 越大,实现查找的机制就越复杂,代价就越高。直接映象 Cache 的查找最简单:只需查找一个位置。所访问的块要么就在这个位置上,要么就不在 Cache 中。

4.2.3替换算法

由于主存中的块比 Cache 中的块多,所以当要从主存调入一个块到 Cache 中时,会出现该块所映象到的一组(或一个) Cache 块已全被占用的情况。这时,需强迫腾出其中的某一块,以接纳新调入的块。那么应该替换哪一块呢? 这就是替换算法所要解决的问题。直接映象 Cache 中的替换很简单,因为只有一个块,别无选择。而在组相联和全相联 Cache 中,则有多个块供选择,我们当然希望应尽可能避免替换掉马上就要用到的信息。主要的替换算法有以下三种。

1. 随机法

为了均匀使用一组中的各块,这种方法随机地选择被替换的块。有些系统采用伪随机数法产生块号,以使行为可再现。这对于调试硬件是很有用的。这种方法的优点是简单、易于用硬件实现,但这种方法没有考虑 Cache 块过去被使用的情况,反映不了程序的局部性,所以其失效率比 LRU 的高。

2. 先进先出法FIFO( First-In-First-Out)

这种方法选择最早调入的块作为被替换的块。其优点也是容易实现。它虽然利用了同一组中各块进入Cache的顺序这一“历史”信息,但还是不能正确地反映程序的局部性。因为最先进入的块,很可能是经常要用到的块。

3. 最近最少使用法LRU(Least Recently Used)

这种方法本来是指选择近期最少被访问的块作为被替换的块。但由于实现比较困难,现在实际上实现的 LRU 都只是选择最久没有被访问过的块作为被替换的块。这种方法所依据的是局部性原理的一个推论:如果最近刚用过的块很可能就是马上要再用到的块,则最久没用过的块就是最佳的被替换者。LRU 能较好地反映程序的局部性,因而其失效率在上述三种方法中是最低的。但是 LRU 比较复杂,硬件实现比较困难,特别是当组的大小增加时,LRU 的实现代价会越来越高,而且经常只是近似地实现。

LRU 和随机法分别因其失效率低和实现简单而被广泛采用。

4.2.4写策略

处理器对 Cache 的访问主要是读访问,因为所有对指令的访问都是“读”,而且大多数指令都不对存储器进行“写”。第二章中指出,DLX 程序的 Store 和 Load 指令所占的比例分别为9%和26%,由此可得“写”在所有访存操作中所占的比例为

9%/(100% + 26% + 9%) ≈ 7%,

而在访问数据 Cache 操作中所占的比例为

9%/(26% + 9%) ≈ 25%。

基于上述百分比,特别是考虑到处理器一般是对“读”要等待,而对“写”却不必等待,应该说设计 Cache 要针对最经常发生的“读”进行优化。然而,Amdahl定律告诉我们,高性能 Cache 的设计不能忽略“写”的速度。

幸运的是,最经常发生的“读”也是最容易提高速度的。访问 Cache 时,在读出标识进行比较的同时,可以把相应的 Cache 块也读出。如果命中,则把该块中所请求的数据立即送给 CPU;若为失效,则所读出的块没什么用处,但也没什么坏处,置之不理就是了。

然而,对于“写”却不是如此。只有在读出标识并进行比较,确认是命中后,才可对Cache块进行写入。由于检查标识不能与写入 Cache 块并行进行,“写”一般比“读”花费更多的时间。

按照存储层次的要求, Cache 内容应是主存部分内容的一个副本。但是“写”访问却有可能导致它们内容的不一致。例如,当处理机进行“写”访问,往 Cache 写入新的数据后,则 Cache 中相应单元的内容已发生变化,而主存中该单元的内容却仍然是原来的。这就产生了所谓的 Cache 与主存内容的一致性问题。显然,为了保证正确性,主存的内容也必须更新。至于何时更新,这正是写策略所要解决的问题。

写策略是区分不同 Cache 设计方案的一个重要标志。写策略主要有两种:

1. 写直达法

写直达法也称为存直达法。它是指在执行“写”操作时,不仅把信息写入 Cache 中相应的块,而且也写入下一级存储器中相应的块。

2. 写回法

写回法也称为拷回法。它只把信息写入 Cache 中相应的块。该块只有在被替换时,才被写回主存。

为了减少在替换时块的写回,常采用污染位标志。即为 Cache 中的每一块设置一个“污染位”(设在与该块相应的目录表项中),用于指出该块是“脏”的(被修改过)还是“干净”的(没被修改过)。替换时,若被替换的块是“干净”的,则不必写回下一级存储器,因为这时下一级存储器中相应块的内容与 Cache 中的一致。

写回法和写直达法各有特色。两者相比,写回法的优点是速度快,“写”操作能以 Cache 存储器的速度进行。而且对于同一单元的多个写最后只需一次写回下一级存储器,有些“写”只到达 Cache ,不到达主存,因而所使用的存储器频带较低。这使得写回法对于多处理机很有吸引力。写直达法的优点是易于实现,而且下一级存储器中的数据总是最新的。后一个优点对于 I/O 和多处理机来说是重要的。I/O 和多处理机经常难以在这两种方法之间选择:它们既想要用写回法来减少访存的次数,又想要用写直达法来保持 Cache 与下一级存储器的一致性。

采用写直达法时,若在进行“写”操作的过程中 CPU 必须等待,直到“写”操作结束,则称 CPU 写等待。减少写等待的一种常用的优化技术是采用写缓冲器。 CPU 一旦把数据写入该缓冲器,就可以继续执行,从而使下一级存储器的更新和 CPU 的执行重叠起来。不过,在后面很快就会看到,即使有写缓冲器,也可能发生写等待。

由于“写”访问并不需要用到所访问单元中原有的数据。所以,当发生写失效时,是否调入相应的块,有两种选择:

(1) 按写分配法:写失效时,先把所写单元所在的块调入 Cache,然后再进行写入。这与读失效类似。这种方法也称为写时取方法。

(2) 不按写分配法:写失效时,直接写入下一级存储器而不将相应的块调入 Cache。这种方法也称为绕写法。

虽然上述两种方法都可应用于写直达法和写回法,写回法 Cache 一般采用按写分配法(这样,以后对那个块的“写”就能被 Cache 捕获)。而写直达法一般采用不按写分配法(因为以后对那个块的“写”仍然还要到达下一级存储器)。

展开阅读全文

cache基本知识培训教程[1]

全文共 1245 字

+ 加入清单

cache基本知识培训教程[1]

学习目标:

掌握全相联映象、直接映象以及组相联映象的思想和特点;

理解路数和组数的概念及其关系;

掌握在各种映象规则的情况下Cache的查找方法;

掌握随机法、先进先出、LRU 等替换算法;

理解Cache对“写”操作的处理方法。

正文:

4.2.1 cache基本知识

如前所述,为了填补 CPU 和主存在速度上的巨大差距,现代计算机都在 CPU 和主存之间设置一个高速、小容量的缓冲存储器 Cache 。 Cache 对于提高整个计算机系统的性能有重要的意义,几乎是一个不可缺少的部件。Cache 是按块进行管理的。 Cache 和主存均被分割成大小相同的块。信息以块为单位调入 Cache 。相应地, CPU 的访存地址被分割成两部分:块地址和块内位移,如下所示:

主存块地址用于查找该块在 Cache 中的位置,块内位移用于确定所访问的数据在该块中的位置。

4.2.1映象规则

一般来说,主存容量远大于 Cache 的容量。因此,当要把一个块从主存调入 Cache 时,就有个如何放置的问题。这就是映象规则所要解决的。映象规则有以下三种。

1. 全相联映象

全相联是指主存中的任一块可以被放置到 Cache 中的任意一个位置的方法。如图4.2.1所示。

实际的 Cache 常包含几百个块,而主存则一般包含上百万个块。

2. 直接映象

直接映象是指主存中的每一个块只能被放置到 Cache 中唯一的一个位置,如图4.2.2所示。图中带箭头的虚线表示映象关系。

一般地,对于主存的第 i 块(即块地址为 i ),设它映象到 Cache 的第 j 块,则

j =i mod ( M )

其中M为 Cache 的块数。

设 M = 2m,则当表示为二进制数时,j 实际上就是 i 的低 m 位,如下所示:

因此,可以直接用主存块地址的低 m 位去选择直接映象 Cache 中的相应块。

3. 组相联映象

组相联是指主存中的每一块可以被放置到 Cache 中唯一的一个组中的任何一个位置(Cache 被等分为若干组,每组由若干个块构成)。

组相联是直接映象和全相联的一种折衷:一个主存块首先是映象到唯一的一个组上(直接映象的特征),然后这个块可以被放入这个组中的任何一个位置(全相联的特征)。组的选择常采用位选择算法,即:若主存第 i 块映象到 Cache 的第 k 组,则

k =i mod ( G )

其中 G 为 Cache 的组数。

设 G = 2g,则当表示为二进制数时,k 实际上就是 i 的低 g 位,如下所示:

因此,可以直接用主存块地址的低 g 位去选择组相联Cache中的相应组。这里的低 g 位以及上述直接映象中的低 m 位通常称为索引。

如果每组中有 n 个块(n=M/G),则称该映象规则为 n 路组相联。

n 的不同取值构成了一系列不同相联度的组相联。直接映象和全相联实际上是组相联的两种极端情况。表4.2中列出了各种情况下,路数 n 和组数 G 的取值。表中 M 为 Cache 的块数。

展开阅读全文

计算机中内存、cache和寄存器之间的关系

全文共 3321 字

+ 加入清单

寄存器cache)是CPU内部集成的,内存是挂在CPU外面的数据总线上的,访问内存时要在CPU的寄存器(Cache)填上地址,再执行相应的汇编指令,这时CPU会在数据总线上生成读取或写入内存数据的时钟信号,最终内存的内容会被CPU寄存器(Cache)的内容更新(写入)或者被读入CPU的寄存器(Cache)(读取)。如图:

CPU、内存、寄存器之间的关系cpu 取址 -》地址输入地址寄存器 -》 缓存命中即,则数据进入数据寄存器 -》 缓存未命中则进入内存 -》 内存TLB快表命中则数据块进入缓存,数据进入寄存器 -》 内存TLB快表未命中则局部数据块进入缓存和快表 -》 内存未命中则进入硬盘虚拟存储区

CPU里的寄存器

其实就是我们常说的:Cache,有1级 和 2级,(L1,L2)L1容量比较小,L2(集成在主板上,说使用的为静态RAM)会多一些,L1是集成在CPU内部的寄存器(L1与CPU 同步),访问它速度自然很快,但容量比较小,L1 64K L2现在最高的就2MB,这显然是不够的,所以我们都需要扩展它,内存(DDR RAM)就是扩展的“寄存器”,它的访问速度就比 Cache 速度慢!CPU 在运行某计算时,它会把使用频率高的数据放到L1,L2,把不常用的数据保存在RAM中,需要访问的时候再读入Cache,当然相比之下硬盘的速度就更低。

计算机中内存、cache和寄存器之间的关系

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

内存包含的范围非常广,一般分为只读存储器(ROM)、随机存储器(RAM)和高速缓存存储器(cache)。

寄存器是CPU内部的元件,寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。

Cache :即高速缓冲存储器,是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。Cache又分为一级Cache(L1

Cache)和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2 Cache早期一般是焊在主板上,现在也都集成在CPU内部,常见的容量有256KB或512KB L2 Cache。

总结:大致来说数据是通过内存-Cache-寄存器,Cache缓存则是为了弥补CPU与内存之间运算速度的差异而设置的的部件。

首先看一下计算机的存储体系(Memory hierarchy)金字塔:

其次我们看看一个计算机的存储体系

Register

寄存器是CPU的内部组成单元,是CPU运算时取指令和数据的地方,速度很快,寄存器可以用来暂存指令、数据和地址。在CPU中,通常有通用寄存器,如指令寄存器IR;特殊功能寄存器,如程序计数器PC、sp等。

Cache

缓存即就是用于暂时存放内存中的数据,若果寄存器要取内存中的一部分数据时,可直接从缓存中取到,这样可以调高速度。高速缓存是内存的部分拷贝。

CPU 《--- 》 寄存器《--- 》 缓存《--- 》内存

寄存器的工作方式很简单,只有两步:(1)找到相关的位,(2)读取这些位。

内存的工作方式就要复杂得多:

(1)找到数据的指针。(指针可能存放在寄存器内,所以这一步就已经包括寄存器的全部工作了。)

(2)将指针送往内存管理单元(MMU),由MMU将虚拟的内存地址翻译成实际的物理地址。

(3)将物理地址送往内存控制器(memory controller),由内存控制器找出该地址在哪一根内存插槽(bank)上。

(4)确定数据在哪一个内存块(chunk)上,从该块读取数据。

(5)数据先送回内存控制器,再送回CPU,然后开始使用。

内存的工作流程比寄存器多出许多步。每一步都会产生延迟,累积起来就使得内存比寄存器慢得多。

为了缓解寄存器与内存之间的巨大速度差异,硬件设计师做出了许多努力,包括在CPU内部设置缓存、优化CPU工作方式,尽量一次性从内存读取指令所要用到的全部数据等等。

RAM-memory

即内存,是用于存放数据的单元。其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。

HardDisk

硬盘

一条汇编指令大概执行过程是(不是绝对的,不同平台有差异):

取指(取指令)、译码(把指令转换成微指令)、取数(读内存里的操作数)、计算(各种计算的过程,ALU负责)、写回(将计算结果写回内存),有些平台里,前两步会合并成一步,某些指令也不会有取数或者回写的过程。

再提一下CPU主频的概念:首先,主频绝对不等于一秒钟可以执行的指令个数,每个指令的执行成本是不同的,比如x86平台里汇编指令INC就比ADD要快,具体每个指令的时钟周期可以参考intel的手册。

为什么要提主频?因为上面的执行过程中,每个操作都需要占用一个时钟周期,对于一个操作内存的加法,就需要5个时钟周期,换句话说,500Mhz主频的CPU,最多执行100MHz条指令。

仔细观察,上面的步骤里不包括寄存器操作,对于CPU来说读/写寄存器是不需要时间的,或者说如果只是操作寄存器(比如类似mov BX,AX之类的操作),那么一秒钟执行的指令个数理论上说就等于主频,因为寄存器是CPU的一部分。

然后寄存器往下就是各级的cache,有L1 cache,L2,甚至有L3的,以及TLB这些(TLB也可以认为是cache),之后就是内存,前面说寄存器快,现在说为什么这些慢:

对于各级的cache,访问速度是不同的,理论上说L1cache(一级缓存)有着跟CPU寄存器相同的速度,但L1cache有一个问题,当需要同步cache和内存之间的内容时,需要锁住cache的某一块(术语是cache line),然后再进行cache或者内存内容的更新,这段期间这个cache块是不能被访问的,所以L1cache的速度就没寄存器快,因为它会频繁的有一段时间不可用。

L1 cache下面是L2 cache,甚至L3 cache,这些都有跟L1 cache一样的问题,要加锁,同步,并且L2比L1慢,L3比L2慢,这样速度也就更低了。

最后说说内存,内存的主频现在主流是1333左右吧?或者1600,单位是MHz,这比CPU的速度要低的多,所以内存的速度起点就更低,然后内存跟CPU之间通信也不是想要什么就要什么的。

内存不仅仅要跟CPU通信,还要通过DMA控制器与其它硬件通信,CPU要发起一次内存请求,先要给一个信号说“我要访问数据了,你忙不忙?”如果此时内存忙,则通信需要等待,不忙的时候,通信才能正常。并且,这个请求信号的时间代价,就是够执行几个汇编指令了,所以,这是内存慢的一个原因。

另一个原因是:内存跟CPU之间通信的通道也是有限的,就是所谓的“总线带宽”,但,要记住这个带宽不仅仅是留给内存的,还包括显存之类的各种通信都要走这条路,并且由于路是共享的,所以任何请求发起之间都要先抢占,抢占带宽需要时间,带宽不够等待的话也需要时间。

以上两条加起来导致了CPU访问内存更慢,比cache还慢。

举个更容易懂的例子:

CPU要取寄存器AX的值,只需要一步:把AX给我拿来,AX就拿来了。

CPU要取L1 cache的某个值,需要1-3步(或者更多):把某某cache行锁住,把某个数据拿来,解锁,如果没锁住就慢了。

CPU要取L2 cache的某个值,先要到L1 cache里取,L1说,我没有,在L2里,L2开始加锁,加锁以后,把L2里的数据复制到L1,再执行读L1的过程,上面的3步,再解锁。

CPU取L3 cache的也是一样,只不过先由L3复制到L2,从L2复制到L1,从L1到CPU。

CPU取内存则最复杂:通知内存控制器占用总线带宽,通知内存加锁,发起内存读请求,等待回应,回应数据保存到L3(如果没有就到L2),再从L3/2到L1,再从L1到CPU,之后解除总线锁定。

展开阅读全文

Cache是什么

全文共 293 字

+ 加入清单

基本概念

在计算机存储系统的层次结构中,介于中央处理器和主存储器之间的高速小容量存储器。它和主存储器一起构成一级的存储器。高速缓冲存储器和主存储器之间信息的调度和传送是由硬件自动进行的。

某些机器甚至有二级三级缓存,每级缓存比前一级缓存速度慢且容量大。

组成结构

高速缓冲存储器是存在于主存与CPU之间的一级存储器, 由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多, 接近于CPU的速度。

主要由三大部分组成:

cache存储体:存放由主存调入的指令与数据块。

地址转换部件:建立目录表以实现主存地址到缓存地址的转换。

替换部件:在缓存已满时按一定策略进行数据块替换,并修改地址转换部件。

展开阅读全文

QQ登录时系统为何会提示CACHE目录空间达到了限制大小

全文共 476 字

+ 加入清单

QQ登录系统为什么会提示cache目录空间达到限制大小是因为本地的QQ目录文件下的缓存空间已满导致出现此提示,只需要在QQ安装目录下找到cache文件夹,并将此文件夹下的所有文件都删除即可。(默认的安装路径为:C:Program FilesTencentQQcache)

腾讯QQ是深圳市腾讯计算机系统有限公司开发的一款基于Internet的即时通信(IM)软件。腾讯QQ支持在线聊天、视频电话、点对点断点续传文件、共享文件、网络硬盘、自定义面板、QQ邮箱等多种功能,并可与移动通讯终端等多种通讯方式相连,可以使用QQ方便、实用、高效的和朋友联系,而这一切都是免费的。

QQ不仅仅是简单的即时通信软件,它与全国多家寻呼台、移动通信公司合作,实现传统的无线寻呼网、GSM移动电话的短消息互联,是国内最为流行功能最强的即时通信(IM)软件。腾讯QQ支持在线聊天、即时传送视频、语音和文件等多种多样的功能。同时,QQ还可以与移动通讯终端、IP电话网、无线寻呼等多种通讯方式相连,使QQ不仅仅是单纯意义的网络虚拟呼机,而是一种方便、实用、超高效的即时通信工具。

展开阅读全文

cache cache怎么样?cache cache衣服贵吗?

全文共 1089 字

+ 加入清单

cachecache的衣服是很多人青春期都买过的一个牌子,这个牌子的衣服设计的还是比较年轻化的,重点是经常打折,性价比真的很高。下面本网小编给大家讲讲cachecache怎么样?cachecache衣服贵吗?

cachecache怎么样

cache家吊带连衣裙两件套,这件衣服真的是出镜率超高的,可能今年吊带连衣裙是大势吧!怎么也得人手一件呐,多的话怎么也得好几件呐。这件衣服是个两件套,上衣是白色有一点点木耳边边,少女心泛滥,可以单着穿,也可以搭配姜黄色裙子穿,材质是那种不热的,有点点透,关键是美腻啊!

Cachecache喇叭袖针织衫配纯色背带裤,做完减肥之后跟爸妈跟九宫格一起逛永旺,路过店面一下子就看中这套!一看尺码有175,马上拿下去试,非常棒!当时体重大概152左右,这几天又瘦了,可能穿的会更好一些。。还是有对胖子友好的店。

achecache一字领收腰显瘦短袖连衣裙,在cache里买到的最满意的衣服,不贵又好看。而且很有安全感。逛商场正好赶上活动,买一送一,折合一件才80。

cache的逆天大作,限量版纯手工小牛皮材质!以往的款式都比较老气,不感冒。这款第一次见也是在小红书,只不过当时只有香港有售。今天和老公结婚纪念日去逛街,进店意外收获心头好!没什么事是一个包解决不了的,如果有就两个。

十一和家人自驾游去了烟台,没有带多少衣服和化妆品,嗯嗯你们懂的嘛,和家人旅游就是这样。回来整理照片,发现自己穿的好“蓝”。衣服来自cache,这个蓝色卫衣本来没抱太多期待,结果穿上却意外好看。出行以舒适简便为主,所以紫有这一身look,但这一身确实让我的小长假feelreallycomfortable!(感觉自己活的好粗糙)

衣服比平常衣服尺码大一码,宽松版,很薄,穿上凉快,洗了无缩水现象。有点透,要穿浅色内衣。基础款,挺不错的,就是可能有一点点透,不过还好,发的顺丰物流,隔天就送到了,物流满分,值得购买。摸着很舒服,应该是纯棉的。

虽然只是一件白T恤,但不同的设计穿上的感觉就完全不同。太喜欢cachecache了,版型,做工,质量都特别好,关键价格还这么大众,简直perfect,良心评论。只是希望以后不要再收到像是别人穿过的衣服,那样简直伤害我们这些铁杆粉丝(只是曾经买过的一件棉衣)。总的来说收到的绝大大大大部分都特别满意。

cachecache衣服贵吗

Cachecache家的衣服一般都在500以内,大多数一两百就可以搞定,完全不贵,大家在商场看到一定要去逛逛。

cachecache适合什么人

Cachecache的衣服主要是针对年轻人,这个牌子的衣服款式都比较青春化,适合学生和刚刚上班不久的人,款式都很活泼可爱,穿着也非常减龄,成熟的款式会比较少。

展开阅读全文