几个基本的缓存优化方法
前面已经介绍了一大堆关于cache的技术,那有没有cache优化的方法呢?毕竟我们的应用最终还是要通过优化来增加性能,下面介绍6个缓存优化方法 前面我们提到过,平均内存访问时间可由公式表示: $$\begin{array}{l}Average \ memory \ access \ time = Hit \ time + Miss \ rate \…
2022-4-12 16:54
|
225
|
|
1835 字
|
7 分钟
总结几个性能计算公式
$$\begin{array}{l}计算cache指引大小: \\2^{index}=\frac{Cache \ size}{Block \ size \times Set \ associativity} \ {\color{Red} 1} \\CPU \ execution \ time = (CPU \ clock \ cycles + Me…
2022-4-11 14:14
|
239
|
|
779 字
|
4 分钟
缓存遇到写入时会发生什么
基本上访问cache的操作都是读,写占少数,而所有的指令缓存访问都是读,大多数指令不会写入到内存,所以大多数情况优化cache代表着优化cache read,特别是因为处理器传统上等待读取完成但不需要等待写入 cache读操作时,block的数据读取和tag域检验可以在同时进行,所以只要一拿到block address时就可以直接从缓存中读取数据,…
2022-4-08 16:58
|
247
|
|
1457 字
|
7 分钟
当遇到cache miss时的替换策略
当遇到cache miss发生时,缓存管理需要选择一个block替换需要存储的数据 当直接映射时非常简单,因为直接映射只有一个block,正好对应,选择block替换即可 当是多路组相联和全相联时,由于有许多block可以被挑选替换,就需要进行选择,主要有三种方法: 随机:随机挑选一个block进行替换最近最少使用(LRU):为了减少信息最近需要被…
2022-4-08 15:13
|
206
|
|
663 字
|
3 分钟
简单谈一下cache性能问题
之前已经提到了很多关于cache的相关知识,我们知道,cache命中和未命中造成的性能差异会很大,两种时钟周期差异可以到达10倍以上。简单来说,我们可以将CPU运行时间用以下的式子表示 \( CPU \ execution \ time = (CPU \ clock \ cycles + Memory \ stall \ cycles ) \tim…
2022-4-08 10:48
|
216
|
|
406 字
|
2 分钟
记录下cache访问原理
假设我们现在有一个8位的cache 高速缓存 一个32位的存储器 存储器 几乎所有的直接映射cache都使用以下的映射方法: \( (块地址) mod (cache中的块数) \) 所以我们只需要取存储器后面3位来映射到高速缓存 如图所示 由于一个cache可以对应主存中多个不同的地址,如何知道cache中的数据项是否是所请求的字呢?我们在cach…
2022-4-07 16:06
|
258
|
|
1720 字
|
7 分钟
巨页对性能影响
注意:巨页HP和THP不是一回事,HP俗称静态巨页,THP称为动态巨页,静态巨页是进程前用户自己定义好的,预分配,不会复制迁移,不会被转到swap分区,而THP由于是动态巨页,动态分配,会将内存复制迁移成巨页,造成性能消耗,几乎所有数据库应用都建议将THP关闭 先说结论: 页表大小跟页大小成反比(这里我觉得应该是页表数量,但是原文使用size),当…
2022-4-06 17:54
|
220
|
|
544 字
|
3 分钟