一.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与内存对齐之间的性能问题

参考:

http://cenalulu.github.io/linux/all-about-cpu-cache/

https://en.wikipedia.org/wiki/Cache_placement_policies

cacheline基本理论的更多相关文章

  1. 【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法

    若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点.感觉也是生物智能的一个体现,和遗传算法.神经网络有异曲同工之妙.只不过当时没有实际需求学习,所以没去研究.最近有一个这样 ...

  2. Atitit.软件研发团队建设原理与概论 理论

    Atitit.软件研发团队建设原理与概论 理论 培训 团队文化建设(内刊,ppt,书籍,杂志等) 梯队建设 技术储备人才的问题 团队建设--小红花评比. 团队建设--文化墙.doc 户外拓展 1. 团 ...

  3. 我的“第一次”,就这样没了:DDD(领域驱动设计)理论结合实践

    写在前面 插一句:本人超爱落网-<平凡的世界>这一期,分享给大家. 阅读目录: 关于DDD 前期分析 框架搭建 代码实现 开源-发布 后记 第一次听你,清风吹送,田野短笛:第一次看你,半弯 ...

  4. 分布式理论之一:Paxos算法的通俗理解

    维基的简介:Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La",此人现在在微软研究院)于1990年提出的一种基于消息传递且具有高度容错特性 ...

  5. 仓位管理 – 1.理论篇

    看到文章标题中的"仓位管理",读者可能会认为它只适用于股市投资.其实不然.只要是投资都涉及到风险.回报率.投资额度,都会涉及到仓位管理.再者,人生本身就带着无数的抉择.风险和回报, ...

  6. UI-初识君面之理论篇

    一个好的app不光要用好的功能,还要有好的界面,这样内外兼修才算得上是一个好的App.其实跟人一样,不能只刷帅,要有内涵(看清楚哦,内涵不是指闷骚).不知不觉在园子里已经晃了八年,来深也八年了,.NE ...

  7. JSP动作元素——————理论篇

    JSP动作元素的组成及作用 JSP使用Action来控制Servlet引擎的行为,可重复使用JavaBean组件. 常用Action: jsp:param       在 jsp:include.js ...

  8. 企业SOA架构设计理论

    SOA简介 SOA(Service-Oriented Architecture,面向服务架构)是一种将信息系统模块化为服务的架构风格.拥有了服务之后,我们就可以迅速地将这些服务按不同方式重新组合,从而 ...

  9. js中函数的一些理论知识

      函数的一些理论知识 1. 函数:                执行一个明确的动作并提供一个返回值的独立代码块.同时函数也是javascript中的一级公民(就是函数和其它变量一样). 2.函数的 ...

随机推荐

  1. [原创]iFPGA-Cable FT2232H JTAG & UART调试器

    iFPGA-Cable FT2232H JTAG & UART调试器 [特性] 采用FT2232H,双通道接口: 支持UART: 支持JTAG,Digilent SMT-1,TCK最大时钟频率 ...

  2. http动词解释及规范

    GET:GET用于信息获取,而且应该是安全的和幂等的. 安全的意味着该操作用于获取信息而非修改信息,不管进行多少次操作,资源的状态都不会改变. 幂等的意味着对同一URL的多个请求应该返回同样的结果. ...

  3. Taro使用mobx做国际化小程序

    效果 目前项目使用的是Taro做小程序开发框架,Taro可以集成mbox,当然一些正常的框架也可以集成mbox,只不过需要自己集成,或者用redux也可以用相同的思想实现. 思路 利用mbox act ...

  4. 远程连接你的linux服务器

    为什么要远程连接linux 在实际的工作场景中,虚拟机界面或者物理服务器本地的终端都是很少接触的,因为服务器装完系统之后,都要拉倒IDC机房托管,如果是购买的云主机,那更碰不到服务器本体了,只能通过远 ...

  5. 15树莓派安装图形界面截图工具Shutter

    2017-09-27 13:02:54 参数-添加/删除软件-搜索软件名称“shutter”,勾选,点击“应用”,等待安装完成后点击“确定”.(需下载安装包后安装) 补充:更多截图软件可以https: ...

  6. JAVA使用POI如何导出百万级别数据(转)

    https://blog.csdn.net/happyljw/article/details/52809244   用过POI的人都知道,在POI以前的版本中并不支持大数据量的处理,如果数据量过多还会 ...

  7. 小甲鱼Python第十八讲课后习题

    笔记: 1.函数与过程:过程(procedure)是简单的,特殊且没有返回值的:函数(Function)有返回值 Python严格来说只有函数没有过程 2.局部变量:在局部生效如在函数中定义的变量 3 ...

  8. Tomcat报错invalid LOC header

    原因: 可能是jar包有问题. 解决方法: 1.找到加载不了的类对应的jar包. 2.在tomcat中webapps/INF/lib中找到对应的jar包,然后删除. 3.重新下载其它版本的jar包. ...

  9. 使用Dubbo的SPI扩展机制实现自定义LoadBalance——方法一 修改Dubbo源代码

    一. 拉取源码 到Dubbo官网 https://github.com/apache/incubator-dubbo/tree/2.5.x 下载源码,解压. 二. 导入IDEA 选择解压后的源码目录, ...

  10. 移动端无法复制:使用clipboard.js碰到的一个小问题

    移动端无法复制:使用clipboard.js碰到的一个小问题   直接看下面的代码:在移动端访问,点击,能正常复制. <html> <head> <meta http-e ...