推荐王去非博士的发明: “内存墙”和通用CPU设计新思路

2周前见到王去非博士,知道了他的一个大发明.我不是电子专业的,所以不能评价他的大发明.今天收到相关介绍,因此写到这里,请同行们评估,合作.

 

内存墙和通用CPU设计新思路

 

内存延迟是CPU性能的瓶颈。CPU缓存是对抗内存延迟的主要手段,因此也是对CPU性能影响最大的部件。我们发现了一个内存访问规律,这个规律推翻了CPU缓存设计的最基础理论,时间局域性原理(Principle Of Temporal Locality)。在这个发现基础上,我们发明的WLRU缓存替换算法,降低了网络应用的CPU缓存失误达50%,降低了三维图形的CPU缓存失误超过30%。这是30年的最大的提高,相当于使国产通用CPU的性能超过Intel最高端CPU近一倍,水平世界领先,而且功耗成本都很低。

 

WLRU替换算法在国际上处于绝对领先地位,有巨大的商业价值和战略意义。而且,WLRU算法的性能已经非常接近CPU缓存替换算法的理论极限,优势可以保持很长的一段时间,更好的竞争技术出现的可能性很小。由于内存墙CPU核心和指令集对性能已经没有贡献。WLRU缓存可以和任何CPU核心整合,比如ARM,都可以得到世界领先的网络和多媒体处理能力。此发明是中国芯片和集成电路与国际水平同步,并超过世界先进水平的巨大战略机会。我们非常希望国内的IT企业能够利用这个机会,实现跨越式发展,在市场上打败Intel这样的国际巨头,创造民族高科技产业奇迹。

 

我们已经完成了新CPU缓存的电路设计和软件模拟,并开发了一个和ARM的二级缓存PL310接口一模一样的二级缓存IP。我们希望以IP授权或者其他形式和国内IT企业合作。新CPU缓存可以和任何CPU核心无缝整合,不需要任何软件改动。

 

1.  内存延迟和内存墙

 

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

 

内存延迟是指内存在接到访问命令后,要等一段时间,才能传回数据。这个延迟在100纳秒左右。 过去30年,DRAM内存的传输速度(仅仅是传输数据的速度)有所提高,但是DRAM的延迟始终没有什么改善,反而有继续扩大的趋势。最新的内存标准DDR3,在延迟上比老的DDR2标准还要大一点。虽然DDR3标准的内存条工作电压低于DDR2,但是功耗却明显比DDR2要高[1],以至于需要散热片。

 

1965年,Intel的创始人之一,名誉主席戈登摩尔(Gordon Moore)提出:每18个月,芯片上的晶体管数目就能够增加一倍。这就是著名的摩尔定律。摩尔定律的另一个更为大家熟悉的表述是:每18个月,CPU的速度提高一倍。过去40年,通用CPU的速度基本按这个预测在发展。十年前,IntelCPU主频在333MHz,现在高达2.8GHz,实际上还可以做到更高。但是,CPU速度的提高并不意味着CPU的实际性能也有相应的提高。过去40年,内存的速度提高不大,延迟没有降低。内存延迟已经成为制约CPU实际处理能力的瓶颈,这个问题被称为内存墙(Memory Wall)。

 

早在10年前,少数顶尖科学家就非常重视内存墙Memory Wall)的问题。1995年,WulfMcKee [2]在对比了过去40年,内存的提高速度和CPU的提高速度后(见图1),预测:内存很快将会成为瓶颈,CPU速度的提高对实际的性能将没有任何帮助。1998年, Alpha芯片的总设计师Dick Sites在专栏中写道:“Stupidit is memory”Dick Sites 认为,未来10年,CPU的设计只有内存是有意义的尽管内存墙问题非常严重,但是,大家对于如何解决内存墙问题毫无头绪,还是只在CPU核心做文章。结果就是把CPU核心做得越来越复杂,越来越烫,也越来越多。现在的主流通用CPU功耗基本上都在100瓦以上,甚至高达200瓦以上。CPU的高耗电已经成为一个巨大环境问题。一台PC服务器最少200瓦,一年的耗电就有17百千瓦时。据估计,Google的服务器群电费每年最少有5亿美元。高功耗是内存墙问题导致的副产品:因为无法提高性能,所以迫不得已使用高功耗的高速电路。


1: 过去三十年内存速度和CPU速度的差异

 

因为内存墙,目前通用CPU工业的发展已经陷入了停滞状态。Intel推出的许多款新CPU,有更多,更快,也更烫的CPU核心,但是实际处理性能几乎没有任何进步。 Intel和微软的收入都大大下降,以至于微软的总裁鲍尔默公开咒骂英特尔是垃圾(Intel rubbish at making chips)”[3]

 

内存墙是全世界学术界和工业界研究的重点。解决内存墙问题的传统技术是使用CPU缓存。30年来,CPU缓存一直也是研究的重点,但是少有新发现。全世界所有CPU缓存的设计都大同小异,都是20年前的技术。我们很幸运地发现了一个内存访问的新规律,并发明了一个新CPU缓存算法和电路。新的CPU缓存可以降低网络应用的缓存失误率高达50%,降低三维动画和数字视频的失误率超过30%。这是30年来计算机体系结构领域最大的突破。

 

2.  CPU核心和缓存

 

通用CPU一般由两部分组成:CPU核心和CPU缓存。CPU缓存是一小块高速存储模块,使用静态存储电路SRAM制造,做在和CPU核心同一块硅片上。CPU缓存延迟短,速度快,但是容量很小。从CPU缓存中读取数据一般只需要110个周期,也就是四分之一纳秒到5纳秒不到。相比之下,从内存读入数据,最少需要120纳秒,一般要150纳秒以上。

 

CPU缓存容量相对于内存是非常小的。目前缓存容量较大的CPU,其缓存也就是4MB,而最一般的PC机的内存也高达2GBCPU缓存只能存储整个内存数据的很小一部分。当数据在缓存中发现,被称为缓存命中(Cache Hit)。当数据不在缓存中,被称为缓存失误(Cache Miss)。缓存命中时,CPU核心就不需要去内存取数据,因此可以高速执行。缓存失误时,CPU必须从内存读取数据。由于内存的延迟,CPU核心必须停下来等待数据。CPU缓存的性能是用失误率(miss rate)或者命中率(hit rate)来衡量的。不同的程序,CPU缓存的失误率不一样,一般在1%或者2%左右。科学计算程序的缓存效果好,失误率低,可以低于1%三维动画,多媒体,数字视频和网络程序的CPU缓存效果差,失误率有时甚至超过2%。因此,这些程序的运行速度慢。

 

CPU缓存减少内存访问次数的效果是很明显的,90%以上的数据读取都可以在缓存中完成。但是,因为内存延迟相对于CPU核心的速度差实在太大,以至于1%CPU缓存失误率依然会导致CPU核心在50%以上的时间里是空闲的。#00FF" lang=AR-SA>一次内存访问的耗时相比于CPU核心的运算速度的比率叫做Cache Miss Penalty(缓存失误惩罚比)。这个Penalty,目前已高于500,很快就会到1000以上。也就是说,一次缓存失误相当于执行几百到一千条指令。根据IBM研究所的数据,平均每执行60条指令,就会有一次缓存失误,也就是一次内存访问。一个低端的1GHz的单核CPU执行60条指令只需60纳秒,而内存访问最少耗时120纳秒。那么,CPU将在三分之二的时间里是空闲的。当内存端口满负荷时,CPU核心大部分时间都是空闲的。更快,更多的CPU核心,也只是空闲更多而已,对提高CPU的实际性能完全没有任何意义。现在的CPU都是尽可能地设计更多的内存端口,使用上千根管脚。但是,由于芯片封装的限制,继续大幅增加CPU的管脚数目是很困难的。依靠增加内存通道数来提高CPU性能这条路走不通。

 

CPU缓存是对CPU性能影响最大的部件。缓存的容量越大,失误率越低。但是,增加缓存的容量并非一个可行的办法。首先,CPU缓存已经占据了CPU芯片面积的50%以上,晶体管的80%以上。某些高端CPU,缓存使用的晶体管更是高达90%。继续增加CPU缓存的容量已经不太可能。更重要的是,加大缓存的容量,失误率降低并不多。IntelAtom芯片的缓存只有512KB,而i7芯片的缓存高达8MB,是Atom芯片的16倍,但是性能提高并不明显。

 

提高CPU缓存性能的希望在于设计更聪明的缓存替换算法。

 

3.  CPU缓存的理论基础 Principles of Locality CPU缓存替换算法

 

CPU缓存速度高,延迟低,但是其容量却非常有限,只能存放一小部分数据。#00FF" lang=AR-SA>决定哪些数据放在缓存里,哪些数据被替换出来,是由CPU缓存替换算法(CPU Cache Replacement Algorithm)完成的。目前所有的CPU无一例外地都使用LRULeast Recently Used)替换算法,及其变种。这个算法已经有近30年历史,长期以来被认为是完美的。

 

30年来,CPU缓存设计理论基础是Principle of Temporal LocalityLRU算法就是完全按照这个原理设计的。Principle of locality是在70年代发现的,这么多年来从来没有被人置疑过。30年过去了,现在的使用环境和过去已经有了很大的差别。#00FF" lang=AR-SA>在新的应用环境下,我们重复了大量的实验,并且用各种手段分析数据,包括人眼观察后,发现Principle of Temporal Locality在当前以网络应用和多媒体为主的应用环境下,已经不再能够准确地反应真实的情况了。

 

在分析实验数据中,我们非常偶然地发现了一个规律。这个规律的发现使我们有机会设计出比LRU算法更好的CPU缓存替换算法。

 

4.  我们的新发现Principle of Short Lifetime

 

我们的新发现被命名为Principle of Short Lifetime。我们发现,绝大部分数据的生命周期很短。传统的科学计算型程序也有这个特点,只是科学计算型程序处理的数据量不大,所以LRU缓存替换算法表现还算满意。在网络,多媒体,数字视频和三维图形这些领域,数据量大,数据的生命周期非常短,数据的重复使用次数也很低,有超过50%的的数据是一次性的。生命周期很短的数据,在不同程序中的比例是不同的。在传统科学计算型应用中,这些数据的比例不太大,但是在现在的网络和多媒体为主的程序中,这些数据的比例可以高达99%以上。LRU替换算法不能分辨这些生命周期很短的数据,因此LRU缓存的失误率很高。对于网络应用,特别是服务器的CPULRU缓存的失误率可能高达2%左右,这是不能容忍的。2%的缓存失误率相当于CPU核心的空闲时间超过80%CPU核心空闲时,CPU耗电一点也不降低。

 

2是我们统计的八个SPEC CPU2000基准测试程序的数据生命周期分布。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值