博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单说一下,你对CPU缓存的了解?
阅读量:6322 次
发布时间:2019-06-22

本文共 928 字,大约阅读时间需要 3 分钟。

  hot3.png

    cpu缓存是位于cpu和内存之间的高速缓冲存储器,因为现在cpu的运算速度远远超过了内存的读写速度,因此设置cpu缓存来提高cpu的执行效率。目前主流的cpu存在三级缓存L1,L2,L3缓存,其中每个核cpu专享L1和L2缓存,同一个cpu插槽的核共享L3缓存。

    cpu缓存是一种非链式的hash map,每个桶(bucket)通常是64字节,这样的桶被称为缓冲行。

 

参考资料:

CPU缓存(Cache Memory)是位于CPU与内存之间的临时,它的容量比内存小的多但是交换速度却比内存要快得多。高速的出现主要是为了解决CPU与内存读写速度不匹配的矛盾,因为CPU运算速度要比内存读写速度快很多,这样会使CPU花费很长时间等待数据到来或把数据写入内存。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可先缓存中调用,从而加快读取速度。

CPU缓存是一种高效的非链式结构的hash map,每个桶(bucket)通常是64个字节。这就是一个“缓存行(cache line)”。缓存行是内存交换的实际单位。例如,主存中地址A会映射到一个给定的缓存行C。

如果CPU需要访问的地址hash后的行尚不在缓存中,那么缓存中对应位置的缓存行会被清除,以便载入新的行。例如,如果我们有两个地址,通过hash算法hash到同一缓存行,那么新的值会覆盖老的值。

 当CPU执行存储指令(store)时,它会尝试将数据写到离CPU最近的L1缓存。如果此时出现缓存未命中,CPU会访问下一级缓存。此时,无论是英特尔还是许多其它厂商的CPU都会使用一种称为“合并写(write combining)”的技术。

04171915_OJpa.png

其实cache miss的原因有下面三种:

1. 第一次访问数据, 在cache中根本不存在这条数据, 所以cache miss, 可以通过prefetch解决.
2. cache冲突, 需要通过补齐来解决.
3. 就是我示例的这种, cache满, 一般情况下我们需要减少操作的数据大小, 尽量按数据的物理顺序访问数据.

转载于:https://my.oschina.net/u/914290/blog/798932

你可能感兴趣的文章
MySQL Cluster搭建与测试
查看>>
python数据分析画图体验
查看>>
军规15 确保集成和调用第三方APP
查看>>
Etcd和ZooKeeper,究竟谁在watch的功能表现更好?
查看>>
Shredding Company 碎纸机,dfs()枚举每一种情况,再加剪枝。
查看>>
结构化程序设计03 - 零基础入门学习Delphi12
查看>>
STM32的TAMPER-RTC管脚作为Tamper的使用[转]
查看>>
[记]一个逐步“优化”的范例程序
查看>>
2012-01-09_2
查看>>
数学 - 线性代数导论 - #5 矩阵变换之置换与转置
查看>>
java数据结构:队列
查看>>
使用.NET进行高效率互联网敏捷开发的思考和探索【一、概述】
查看>>
SSM练习——登录实现
查看>>
余光中_百度百科
查看>>
方法sessionjsp之监听器
查看>>
判断 网络是否通常,以及判断用户使用的网络类型,时2G\3G\还是wifi
查看>>
下一代 Hadoop YARN :相比于MRv1,YARN的优势
查看>>
阿里巴巴离职DBA 35岁总结的职业生涯
查看>>
LOT NUMBER / PO / RECEIPT NO Relation.
查看>>
Fedora9常用网络调试
查看>>