警方报道所以的视频:怎样提高CPU缓存的速度

来源:百度文库 编辑:中财网 时间:2024/04/29 05:30:35
CPU缓存可以说是CPU芯片最简单的部件,但却是最重要的部件。CPU缓存就是一小块速度很高,延迟很小,容量有限的存储区。在我们的日常生活中,缓存的思想无处不在,哪里有延迟,哪里就有缓存。例如,衣服都是有衣兜的。衣兜里总是放着最需要的东西,衣服的衣兜就是缓存。缓存还可以分几级,如果衣兜是第一级,那么手提包就是第二级,拉杆箱就是第三级。二级缓存比一级缓存延迟大些,容量也大。缓存是非常重要的,如果没有衣兜和提包,我们在外面要用的任何东西都必须回家拿,路上来回就是两个小时。那样的话,时间都耗在路上了,什么事也干不成。

现在的时装有个趋势,就是小姑娘的包包越来越大,也越来越贵。为什么这样呢?因为延迟大了。现代的人,住得远,活动范围广,花在路上的时间多,所以,包包尽可能大,多装些东西。 也就是说,延迟越大,缓存就越重要。CPU和时装的趋势是一样的,相比于CPU核心的速度,内存延迟越来越大,所以CPU缓存也越来越重要。CPU缓存和小姑娘的包包都是越大越好,越大装得越多。30年前,最早拖拉杆箱的是空姐,因为空姐的工作,距离远,延迟大,所以空姐最先用到三级缓存。现在CPU缓存已经占用了芯片全部资源的80%以上。以后的芯片,有可能90%以上的面积都是缓存和各种用途的存储区。要提高CPU的性能,人们很容易就想到要增大缓存,但是缓存的容量就如同时装的包包,是不可能无限增加的。

相对于缓存的容量,缓存设计中更加重要的是“替换算法”。替换算法就是决定哪些东西装在包包里面的规则。许多小姑娘的包包里面乱七八糟的,她们没有好好地安排,也就是说,这些小姑娘的缓存替换算法有问题。相比之下,士兵的包包里面装的东西就非常合理。军人的包包所用的替换算法先进。 

在过去40年中,CPU核心的速度提高了近千倍,但是内存的速度提高却不大,内存的延迟也没有降低。这使得内存延迟已经成为了制约CPU实际处理能力提高的瓶颈。实际应用中,CPU始终都在等待内存访问。当内存端口满负载时,CPU核心有超过50%时间是空闲的。这个问题被称为内存墙(Memory Wall)。

计算机的内存是用动态存储电路(DRAM)实现的。DRAM存储一位信息只使用一个晶体管。DRAM的好处是密度大,坏处是有很大的延迟。静态存储电路(SRAM)存储一位信息使用六个晶体管,其好处是基本没有延迟,但是密度很小,容量做不上去。所以,现在的计算机内存使用的都是DRAM。DRAM的延迟是个物理极限,除非有革命性的突破,这是很难减小的。 

学术界和工业界在解决内存墙这个问题上分为两派,一派,主张设计更大的CPU缓存;另一派主张设计更多的CPU核心(例如GPU)。这两派都有道理,但是都不能大幅度提高CPU的实际性能。CPU瓶颈是在“内存墙”,如果不突破内存墙,怎么做都不能提高CPU的整体速度。增加CPU核心的数目对Intel是非常容易的事情,但是其主流CPU芯片始终没有超过4个CPU核心,因为增加CPU核心的数目和速度是没有意义的。一方面CPU芯片厂家不断地推出性能更强大的CPU,另一方面软件开发商则把程序写得越来越慢,强迫大家购买的新CPU。这个生意模式决定了CPU厂家必须不断地推出更强大的CPU,不管客观条件是否允许。程序的执行时间分两部分,CPU核心的计算时间和内存访问的时间,其中内存访问时间是大头。因为内存墙,内存访问那部分时间无法减小,所以CPU设计公司只有减少CPU核心的计算时间,也就是提高CPU核心的频率。CPU的计算时间本来就很少,只占程序总耗时的不到20%,CPU核心的频率提高一倍,最多也只减少了总耗时的10%。提高CPU核心的频率对提高CPU的性能贡献非常小,增加CPU核心的数目对提高性能也没有多大帮助。


多核和多线程同样和于事无补。在多线程环境下,一个程序的执行时间完全取决于内存访问的时间,也就是CPU缓存的失误次数。当一个进程遇到CPU缓存失误时,CPU核心可以转而执行另外的进程。但是,每个进程最终都会遇到CPU缓存失误,因此多进程也无法提高CPU性能。而且,多进程会互相竞争CPU缓存空间,增加CPU缓存失误。如提高CPU核心的速度对程序的执行完全没有影响。计算揭示当CPU核心的速度超过500MHz以后,CPU核心就会大量空闲。多核和多进程都无法解决内存墙问题。 


工具/原料

  • UcomPower公司发现了一个内存访问规律,并在这个发现的基础上,发明了一个新的CPU缓存替换算法。这种新的替换算法可以降低网络应用的CPU缓存失误率近50%,降低三维图形和数字视频的缓存失误率超过30%。降低缓存失误率翻译为性能就是把CPU的网络处理能力提高了一倍,将三维图形和数字视频的处理能力提高了50%以上。而在过去三十年中,能够降低5%的缓存失误率都是非常高的成就。新的替换算法对缓存性能的提高已经接近了缓存替换算法的理论极限。由于缓存是CPU性能瓶颈,UcomPower的缓存设计可以大幅提高CPU、GPU或者视频处理芯片的性能。

步骤/方法

  1. Intel的CPU为什么这么烫?这是因为没有办法。Intel的CPU的高功耗问题是内存墙的间接后果。如果能够有效地减少内存访问次数,也就是提高CPU缓存的命中率,就算是把降低CPU的频率,也可以大幅提高CPU的性能。如果能够降低CPU核心的频率,降低功耗是很容易的。
  2. CPU里的缓存采用WLRU算法。在使用了WLRU缓存之后,内存的访问时间依然高于CPU核心的计算时间。所以,我们可以降低CPU核心的速度,也就是增加图中黄条的长度,但是两个程序的总的执行时间,依然不变。降低CPU核心速度可以成3次方地降低功耗。这样就可以设计出出性能很高,但是功耗很低的CPU。
  3. WLRU能够很快地排除只用一次的内存地址,从而保护了CPU缓存中有价值的内存地址。结果显示WLRU的性能已经接近理论极限。

注意事项

  • 内存墙的存在对于CPU设计者来说是个巨大的技术挑战,也是巨大的机遇。因为内存墙的存在,使得复杂的CPU设计以及更多更快的CPU核心对性能提高没有任何贡献。
  • GPU厂商希望设计更多的CPU核心。目前一块GPU芯片上的计算核心数目已经超过128个,而且还在增加。一些GPU厂商把核心的数目作为广告和推销手段,误导市场,让人们以为“核心数目越多越先进”,一些非主流芯片甚至吹嘘有上千个核心。GPU的这些核心利用率是非常低的。“内存墙”问题在三维图形和多媒体应用上更加严重。
  • 仅仅是增加CPU缓存的容量,依然继续采用LRU替换算法。CPU缓存是很大的情况下,因为LRU的缺陷,大缓存并未表现出优异的性能。