今天看了一篇缓存优化相关的论文,里面介绍了缓存块着色算法和优化的缓存块着色算法,整理如下。
        如图1所示,将整个指令存储器划分为以缓存大小为单位的区间,假设缓存大小等于4 个缓存块的大小。不同区间的同种颜色的缓存块中的数据会发生缓存冲突。

图1   缓存块着色算法步骤

  根据反汇编Obj 文件,计算出程序大小,假设子函数A,B,F 的大小各占用1 个缓存块,C,D 各占用2 个缓存块,E 占用4 个缓存块。首先选取权值最大的一条边CE,但由于E 的大小与缓存大小相近,不论如何放置都会和其他子函数产生冲突,因此E最后进行放置。先选取除CE外权值最大的边AB,将AB放置到图1步骤1所示位置。紧接着,选取BC。此处要保证B和C 不发生冲突,所以,放置C时需要考虑B 在缓存中的位置,选择与B不同的缓存块存放位置进行放置。随后,选取CD,D 也需要和C 处于不同的缓存块位置。之后,将调用频率最小的F 插空放入序列中。最后,放入超过缓存大小的子函数E。
       从图1可以看出,由于子函数E体积大于缓存容量,因此不论如何放置,均会与其他子函数产生缓存冲突。
       缓存块着色算法适用于缓存大小较大、子函数均小于缓存容量的情况,但在多数低成本低性能CPU 设计中,缓存容量较小,就会出现子函数大于缓存容量的情况。针对这一情况,提出了优化的缓存块着色算法,该算法将较大的子函数进行拆分同样采用之前的程序,将较大的子函数E拆分为EA和EB ,各占用2个缓存块。经过拆分子函数E后,可使子函数E一同进入过程排序和放置的过程,放置过程如图2 所示。

图2 优化后的缓存块着色算法步骤

对比图1和图2可以看出,图1中子函数E与C发生了缓存冲突,而它们的调用次数很高。在图2 中,A和EA发生了缓存冲突,它们的互相调用次数相对很少,显然效果好于优化前。采用优化的过程排序方法,能进一步细化子函数存储位置,相比原算法更加减少了缓存冲突。

缓存块着色算法和优化的缓存块着色算法相关推荐

  1. DL之模型调参:深度学习算法模型优化参数之对LSTM算法进行超参数调优

    DL之模型调参:深度学习算法模型优化参数之对LSTM算法进行超参数调优 目录 基于keras对LSTM算法进行超参数调优 1.可视化LSTM模型的loss和acc曲线

  2. 白话Elasticsearch47-深入聚合数据分析之Cardinality Aggs-cardinality算法之优化内存开销以及HLL算法

    文章目录 概述 官方说明 precision_threshold优化准确率和内存开销 HyperLogLog++ (HLL)算法性能优化 概述 继续跟中华石杉老师学习ES,第47篇 课程地址: htt ...

  3. 49深入聚合数据分析_cardinality算法之优化内存开销以及HLL算法

    cardinality=count(distinct),5%的错误率,性能在100ms左右,如何对cardinality进行优化呢? 1.precision_threshold优化准确率和内存开销 G ...

  4. ElasticSearch教程——cardinality(去重)算法之优化内存开销以及HLL算法

    ElasticSearch汇总请查看:ElasticSearch教程--汇总篇 说明,一般使用第一种和第二种方法,很少使用第三种HLL优化(效果不是特别明显) 1.cardinality语法 es,去 ...

  5. 49.ardinality算法之优化内存开销以及HLL算法

    主要知识点 precision_threshold参数的理解 HLL算法优化(hash) cardinality,count(distinct),5%的错误率,性能在100ms左右 一.precisi ...

  6. Python实现猎人猎物优化算法(HPO)优化支持向量机回归模型(SVR算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer ...

  7. dij算法堆优化_迪杰斯特拉算法(Dijkstra) (基础dij+堆优化) BY:优少

    算法实现步骤: a.初始时,只包括源点,即S = {v},v的距离为0.U包含除v以外的其他顶点,即:U ={其余顶点},若v与U中顶点u有边,则(u,v)为正常权值,若u不是v的出边邻接点,则(u, ...

  8. dij算法堆优化_迪杰斯特拉算法(Dijkstra) (基础dij+堆优化) BY:优少(示例代码)...

    算法实现步骤: a.初始时,只包括源点,即S = {v},v的距离为0.U包含除v以外的其他顶点,即:U ={其余顶点},若v与U中顶点u有边,则(u,v)为正常权值,若u不是v的出边邻接点,则(u, ...

  9. 基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码

    基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码 文章目录 基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码 1 蝙蝠算法与BP神经网络分类模型 1.1 蝙 ...

  10. 蚁群算法优化BP神经网络回归预测的算法设计-附代码

    蚁群算法ACO优化BP神经网络回归预测的算法设计及其MATLAB代码实现 文章目录 蚁群算法ACO优化BP神经网络回归预测的算法设计及其MATLAB代码实现 1. 蚁群算法简介 2. 蚁群算法优化BP ...

最新文章

  1. 区块链热度不减 应用风险不容忽视
  2. Istio调用链埋点原理剖析—是否真的“零修改”?
  3. aspose html转pdf_PDF如何转HTML?办公党必备
  4. spring-mvc springboot 使用MockMvc对controller进行测试
  5. Linux设置SSH登录(SecureCrt)
  6. jar打包 剔除第三方依赖以及它的依赖_maven打包成第三方jar包且把pom依赖包打入进来的方法...
  7. poj3070 Fibonacci 矩阵快速幂
  8. python telnetlib 协商_Python telnetlib:令人惊讶的问题
  9. php是独立服务吗,使用Sprockets作为PHP应用程序的独立服务
  10. 推荐一款接口文档在线管理系统-MinDoc
  11. 菜鸟的学习之路(9) — ArrayList类
  12. Linux yum软件仓库配置,linux配置软件仓库 、 yum管理应用软件 、 快速部署Web/FTP...
  13. #pragma的常用方法讲解(转载)
  14. 修改树莓派上Transmission设置提高同时下载任务数量
  15. java有哪些服务器_java服务器有哪些?
  16. go语言反汇编linux,Go语言函数的底层实现
  17. 外存储器——硬盘存储器
  18. SQL获取当前月份的第一天
  19. c++ 箭头符号怎么打_C++编程基础知识二
  20. vue2[初级] vuex状态集中式管理

热门文章

  1. 英语国际音标发音——见标能读
  2. iOS 幸运转盘抽奖+粒子动画
  3. LTE系统信息 --- MIB、SIB
  4. Android 桌面Widget (小组件)开发详解
  5. 鬼谷八荒先天气运修改器
  6. android屏幕测试工具,OLED屏幕纯色测试工具
  7. HTML5全局属性汇总
  8. Element el-cascader 级联选择器详解
  9. 中国传统颜色16进制颜色码
  10. 使用segue进行页面跳转