博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cacheline基本理论
阅读量:5026 次
发布时间:2019-06-12

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

一.cacheline

  1.cache:解决cpu频率与内存访问之间速度差距越来越大的问题

  

  2.cacheline:cpu cache的最小单位,主流为64B

  3.指导:访问数组数据在同一个cacheline内速度很快,若跨cacheline,则速度会慢很多,因为可能存在cache miss,需要将内存数据写入cache中

二.cacheline与内存之间的映射策略

  1.hash策略:hash值的计算需要10K个cycle,无法满足cache访问几个或者几十个cycle的要求

       2.Fully Associative:时间问题

    3.Direct Mapped:对每块内存的访问是等概率的,否则cache使用率很低,并且冲突很多

  4.N-Way Set Associative:高效

  a.将N个cacheline分为一组

  b.每个cacheline中,根据偏移进行寻址,所以64B,需要6bit进行表示

  如下:4M cache,设N=16,则

  ①4M内存,16个64B的cacheline为一组,共有2^12组Set,用中间12bit表示

  ②最后6bit表示64B的cacheline内偏移

  实际cache寻址过程如下:

  ①根据64bit表示的addr的12bit计算出set号,这样的话,只需要在本set内比较16个cacheline即可

  ②根据最后6bit表示的cacheline偏移,计算偏移地址

  ③对于set内的16个cacheline,结合前46bit,挨个比较每个cacheline中对应偏移的地址是否与addr相等

  ④若找到,则命中;否则cache miss

   

三.cacheline替换策略LRU/Random

   1.LRU:最近最少使用算法,核心思想是最近被使用的内存在将来也有很大可能被使用

四、cacheline与内存对齐之间的性能问题

参考:

 

转载于:https://www.cnblogs.com/forTheDream1991/p/10732295.html

你可能感兴趣的文章
WPF 3D变换应用
查看>>
luogu4012 深海机器人问题 网络流
查看>>
android 拍照上传照片
查看>>
SELECT INTO 和 INSERT INTO SELECT 两种表复制语句(转载)
查看>>
数据结构上机任务
查看>>
centos7上安装mysql
查看>>
浮动的label
查看>>
Python --文件的读写
查看>>
乱码问题
查看>>
hdu1671Phone List(字典树)
查看>>
访客至上的Web、移动可用性设计--指导原则
查看>>
常用模块一
查看>>
类和对象
查看>>
追剧《大秦帝国》之感
查看>>
[转] Python Traceback详解
查看>>
SpringMVC中接收不同类型的数据
查看>>
Windows 创建 Tomcat 服务
查看>>
ArchLinux安装开源VMware Tools
查看>>
系统用户分析模型
查看>>
DB2 锁升级示例1
查看>>