`
baiguomeng
  • 浏览: 998902 次
文章分类
社区版块
存档分类
最新评论

与cache相关的一些问题和思考

 
阅读更多

cache在性能优化里面占有很重要的地位,在性能优化的不同层次上,都会用到与cache相关的知识,下面是一些问题和思考。

1)很显然,cache的容量是有限的,所以就会有cache miss,cache miss一般有三种原因:

a: 当cache为空的时候,需要把内容调入cache。

b: 当超出cache容量的时候,需要淘汰一些旧的内容,腾出空间给新的内容。

c: cache conflict,在有冲突的时候,需要用旧的覆盖新的。

第一种情况对任何cache都是适用的;第二种情况,比如CPU的L2 cache,如果是全关联的cache,那么超出容量是,任何一个旧的都可能被踢出去;第三种情况一般是在N-way 关联的时候,映射到相同cache line的内容之间有冲突。

一般来说CPU有如下的cache类型:

L1 I-cache, L1 D-cache, TLB, L2 cache, L3 cache。L1 cache和TLB cache容量较小,可以做成全关联的,L2, L3 cache一般是N-way关联的。cache在正常情况下,应该是可以提高性能的,但是在cache thrashing (pingpong)的时候,对性能却是有害的。在这种情况下,所有的访问都不能从cache里得到数据,而是需要到Main memory里去拿数据,所以编程的时候要比较cache thrashing。

2)如果避免cache thrashing,如何提高性能?

一般来说,跨边界的数据结构都是有害的。比如一个小于32 bytes的数据结构跨两个cache line,比如程序代码太大,正好在这个路径上,发生了cache conflict。一般来说L1 cache有64k,而L2 cache有1M或者更大。代码路径的长度不太可能有这么大的跨度。但是,最好是把相关的代码放在一起,最好减小代码的体积,最好把数据结构cache line对齐等等一下基本规则还是从一开始就遵守的好。

解决这个问题使用的技巧就是coloring。page coloring比较好理解,相同color的page会映射到相同的cache上去,所以在分配的时候,尽量比较给同一个process分配相同color的page。但是对于slab allocator的color就有点不太明白了。如果color的偏移是cache line大小还好理解,如果是其他的大小,感觉就没什么用。而且在slab allocator的论文里面提到memory channel,这个和cache没什么关系。memory channel是特定的物理地址在特定的内存片里面,如果是dual channel,最好数据地址能够分配到两个channel上,这样就可以并行读入,而不是顺序读入。这个是用来提高内存带宽的(当然可以可以说是避免冲突,因为如果是顺序访问,就说明两次读入是有冲突的)

3)L1 cache或者TLB里面,是虚地址,还是物理地址。这个和cache本身没有关系,这涉及到一个转换的问题。所以我认为在cache里面应该是物理地址,也就是说CPU在访问内存时,MMU是首先执行的,首先解决了TLB miss的问题,才能解决cache miss的问题,顺序不能乱。

The Elements of Cache Programming Style

http://en.wikipedia.org/wiki/Cpu_cache

分享到:
评论

相关推荐

    CACHE、CDN、IDC技术及中国移动互联网问题分析v2.ppt

    内容 1 2 CACHE\CDN\IDC技术 互联网问题及思考一、IDC已引入的内容源存在的问题 二、CACHE、IDC建设统未统筹考虑 -1- 什么是CACHE? 什么是CACHE? Internet 解决HTTP流量问题 WebCache 流量拥塞点: 省网出口 互联...

    arm920t mmu和cache介绍

    ### ARM920T MMU与Cache介绍 #### 虚拟地址与物理地址概念 在探讨ARM920T的MMU与Cache之前,我们首先需要了解虚拟地址(Virtual ...在嵌入式系统的设计与开发中,合理利用MMU和Cache对于提升系统的效率至关重要。

    计算机体系结构cache模拟器实验报告

    在阅读分析附件模拟器代码部分,学生需要阅读和分析给定的 Cache 模拟器代码,了解代码的结构和实现机制,并回答相关的问题,如关键参数、关键算法等。在课后习题部分,学生需要完成一系列的习题,以巩固对 Cache ...

    cache系统介绍

    最后,作者在文档中表达了对Cache Memory领域探索的种种思考,并号召更多的人加入到完善和丰富有关Cache Memory知识体系的行列中。这表明知识的积累和传播是一个不断进化的过程,需要更多人的参与和贡献。 在实际的...

    Cache-Memory-10-03.pdf

    本文主要探讨了缓存内存(Cache Memory)的相关知识,内容涵盖了缓存的基本概念、工作原理、组成结构、替换算法、指令缓存、一致性与一致性问题、层次结构、数据预取等多个方面。由于文件内容是扫描后的文字,可能...

    rl-cache-master.zip

    为了解决这一问题,“rl-cache-master.zip”压缩包提供了一种基于强化学习的网络缓存替换策略,旨在提升缓存效率和性能,尤其在特定条件下,表现出优于传统算法的优势。 强化学习,是人工智能领域的一种重要方法,...

    Cache “Less for More” in information-centric networks

    从整体上看,文章对ICN背景下的缓存问题提出了新的思考角度,并通过实证研究验证了基于中心性概念的缓存算法在不同网络结构下的有效性。这一研究成果有助于推动ICN中缓存策略的创新,并为今后网络设计和优化提供了...

    Laravel开发-laravel_duplicate_query_cache

    在Laravel框架中,开发效率和性能优化...总的来说,`laravel_duplicate_query_cache`库是Laravel开发者的一个实用工具,它能够智能地减少重复查询,提高应用性能,同时鼓励开发者思考如何更好地设计和优化数据库查询。

    数据挖掘与算法-习题与思考答案与提示.pdf

    "数据挖掘与算法习题与思考答案与提示" 数据挖掘是计算机科学中的一门学科,旨在从大量数据中提取有价值的信息和知识。下面是本书的知识点总结: 第二章 * 编程调用栈操作函数压入1000000个随机整数,再全部弹...

    多核多cluster多系统之间缓存一致性概述

    然后请思考: (1)、core0中的L1和L2 cache有一致性的要求吗?缓存和替换策略是怎样的? (2)、core0 cache 和 core1 cache的一致性是谁来维护? 遵从MESI协议吗? (3)、core0 cache 和 core4 cache的是怎么维护一致性...

    嵌入式复习思考题.pdf

    本文将深入讨论嵌入式系统的一些核心知识点,这些知识点在嵌入式复习思考题中有所提及。 1. **S3C44B0X存储空间**:S3C44B0X的存储空间被划分为多个Bank,其中最高的两个Bank通常具有较大的容量,适用于扩展SDRAM。...

    美团JVM问题定位和排错

    美团在面对JVM问题时,采取了全面的方法来进行问题的定位和排错,既包括了利用成熟的工具集进行监控和诊断,也强调了系统性思考的重要性。通过对问题的细致分析和分类,结合具体的案例实践,可以有效地提高问题解决...

    百度面试经历 帮助你顺利过面试

    最后,电话面试题目中提到的数据库索引、关系数据库的数据结构、索引的优缺点、session与cache的区别、session的存储方式和优化等问题,这些都是IT行业常见的面试主题。理解这些概念和技术细节对于面试成功至关重要...

    Oracle 10g 数据库管理 应用开发 标准教程 思考与练习.pdf

    本资源是 Oracle 10g 数据库管理应用开发标准教程的思考与练习指南,旨在帮助读者深入了解 Oracle 数据库管理和应用开发的基本概念和技术。本资源主要涵盖 Oracle 数据库管理的物理存储结构、逻辑存储结构、进程管理...

    多任务下数据结构与算法(习题与思考答案提示)

    在《多任务下数据结构与算法》这本书中,习题主要涵盖了数据结构和算法的应用,涉及到了栈、排序、链表、动态环形队列、哈希表、AVL树...通过实际编程解决这些问题,能够提升解决问题的能力和对数据结构与算法的理解。

Global site tag (gtag.js) - Google Analytics