浅谈多核技术下的高速缓存区技术.PDF

浅谈多核技术下的高速缓存区技术.PDF

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浅谈多核技术下的高速缓存区技术

浅谈多核技术下的高速缓存区技术 学号 姓名:周天瑶 email:zhoutianyaoyao@163.com 摘要:随着计算机技术的飞速发展,双核技术已经十分普及,四核产品也已问世。在追求双 核技术带给我们高性能的同时,它也带来了不少的技术难题。诸如多线程的编程与调试,多 核任务的合理分配,不同线程之间的互交与资源共享,等等。高速缓存区技术在提高计算机 性能上有着十分重要的作用,如何在多核的架构中利用好高速缓存,提高命中率,同时保证 缓存区信息共享的正确性都是值得深入思考的课题。我重点提出了多核带来的三个问题:高 速缓存不一致、高速缓存没有高效的分配、高速缓存流量增大。同时也结合现在的技术,提 出了自己的一些解决方法。 关键词:多核,高速缓存,重要,问题,解决 多核是计算机芯片的未来。在单 CPU 时代,避免并发访问共享数据的方法相对简单。 只有在中断发生的时候或在内核代码显式地请求重新调度,执行另一个任务时,数据才可能 被另并发访问。而今天芯片集成技术突飞猛进,如摩尔定律所说“the number of cores will double every 18 months ”。要想真正地发挥多核的优势,真正实现n 个 CPU 的机器获得n 倍 于一台单核机器的工作效率,高速缓存区的应用必不可少。 一、 高速缓存区的重要性 高速缓存的价值在于两个方面: 第一,访问磁盘的速度要远远低于访问内存的速度,因此,从内存访问数据比从磁盘访 问速度更快。DRAM 芯片存取时间在 100ns~200ns 之间,随着 CPU 速度的不断提高,存储 器的速度难以满足 CPU 的要求,一般情况下,CPU 访问存储器时要插入等待周期,对高速 CPU 来说是一种极大的浪费。相比 8086 的 5MHz 时钟频率,现在的英特尔至强处理器已有 3GHz 主频,带有 512 KB 二级高速缓存和 400 MHz 系统总线。高速缓存对提升机器性能的 作用将更加明显。 第二,数据一旦被访问,就很有可能在短期将被问到。 二、多核引发的问题 现在的双核架构一般为两个处理器,每个处理器内部有两个 CPU 内核,每个内核有其 各自专用的一级高速缓存,同时共享二级高速缓存。 这样的结构一定的优势,比如当一个内核处于闲置状态,那么其它内核会占用所有共享 高速缓存,这样末级高速缓存得到了高效利用。同时减少数据存储冗余,同一个数据仅需储 存一次。借助内核间的高效数据共享,数据请求可在共享高速缓存层中实现,而不必全在系 统内存中完成,这样也就意味着提高了效率。 那么,多核会给高速缓存带来什么问题呢? 1、高速缓存不一致 先来举个生活中简单的例子: 假设学校图书馆里有 5 本书,有两个窗口可以进行图书预约。这两个窗口相当于两个 CPU,它们要同时访问图书馆这个“高速缓存”。我们不妨理想地考虑,先有一名同学来预 约,数量是 3 本,那么所剩的书就变为了 2 本。这时又来了一名同学想预约 4 本,由于馆里 只剩 2 本了,没法预约成功。但是如果两处预约同时进行,第一位同学 3 本小于 5 本预约成 功;第二位同学预约由于同时进行 4 本小于 5 本也预约成功,最终数据刷新为剩余 1 本。 显然,两个预约窗口不应出现上面这样的情况,而应该是每一次预约全部完成后再进行 下一次预约,在一次预约的过程中是不能被另一次预约打断的。 可见,多核的高速缓存一致性是十分重要的。在多线程的程序中对于 cache 的不正确使 用将严重影响系统性能。 如下图所示,两个核对二级缓存都进行读操作,该调整缓存在两个 L1 cache 中将都处 于 shared 状态。此时假设核 1 上的一个线程改写了其中一个数组元素 a[0],将使这个 core 上的这条 cache line 将变修改状态, 而另外一个核上的对应的 cache line 将变成无效状态,此 时若核 2 上的一个线程马上读取 a[1],为了确保 cache 一致性,这条 cache line 的更新数据 必须被传输到所需数据的那个核上。若读写的次数频繁,将增大 cache miss 的次数,严重影 响系统

文档评论(0)

l215322 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档