正在加载图片...
多核引发的问题 现在的双核架构一般为两个处理器,每个处理器内部有两个CPU内核,每个内核有其 各自专用的一级高速缓存,同时共享二级高速缓存。 CUZ 一级缓存 级缓存 级缓存 这样的结构一定的优势,比如当一个内核处于闲置状态,那么其它内核会占用所有共享 高速缓存,这样末级高速缓存得到了高效利用。同时减少数据存储冗余,同一个数据仅需储 存一次。借助内核间的高效数据共享,数据请求可在共享高速缓存层中实现,而不必全在系 统内存中完成,这样也就意味着提高了效率。 那么,多核会给高速缓存带来什么问题呢 1、高速缓存不一致 先来举个生活中简单的例子 假设学校图书馆里有5本书,有两个窗口可以进行图书预约。这两个窗口相当于两个 CPU,它们要同时访问图书馆这个“高速缓存”。我们不妨理想地考虑,先有一名同学来预 约,数量是3本,那么所剩的书就变为了2本。这时又来了一名同学想预约4本,由于馆里 只剩2本了,没法预约成功。但是如果两处预约同时进行,第一位同学3本小于5本预约成 功;第二位同学预约由于同时进行4本小于5本也预约成功,最终数据刷新为剩余1本 显然,两个预约窗口不应出现上面这样的情况,而应该是每一次预约全部完成后再进行 下一次预约,在一次预约的过程中是不能被另一次预约打断的。 可见,多核的高速缓存一致性是十分重要的。在多线程的程序中对于 cache的不正确使 用将严重影响系统性能。二、多核引发的问题 现在的双核架构一般为两个处理器,每个处理器内部有两个 CPU 内核,每个内核有其 各自专用的一级高速缓存,同时共享二级高速缓存。 这样的结构一定的优势,比如当一个内核处于闲置状态,那么其它内核会占用所有共享 高速缓存,这样末级高速缓存得到了高效利用。同时减少数据存储冗余,同一个数据仅需储 存一次。借助内核间的高效数据共享,数据请求可在共享高速缓存层中实现,而不必全在系 统内存中完成,这样也就意味着提高了效率。 那么,多核会给高速缓存带来什么问题呢? 1、高速缓存不一致 先来举个生活中简单的例子: 假设学校图书馆里有 5 本书,有两个窗口可以进行图书预约。这两个窗口相当于两个 CPU,它们要同时访问图书馆这个“高速缓存”。我们不妨理想地考虑,先有一名同学来预 约,数量是 3 本,那么所剩的书就变为了 2 本。这时又来了一名同学想预约 4 本,由于馆里 只剩 2 本了,没法预约成功。但是如果两处预约同时进行,第一位同学 3 本小于 5 本预约成 功;第二位同学预约由于同时进行 4 本小于 5 本也预约成功,最终数据刷新为剩余 1 本。 显然,两个预约窗口不应出现上面这样的情况,而应该是每一次预约全部完成后再进行 下一次预约,在一次预约的过程中是不能被另一次预约打断的。 可见,多核的高速缓存一致性是十分重要的。在多线程的程序中对于 cache 的不正确使 用将严重影响系统性能
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有