计算机50周年大会上胡伟武演示龙芯笔记本电脑

来源:百度文库 编辑:神马文学网 时间:2024/04/30 05:20:12
图文:计算机50周年大会上胡伟武演示龙芯笔记本电脑
2006-11-06 06:10:05 点击: 1203
计算机50周年大会上胡伟武演示龙芯笔记本电脑
出处:中计在线
10月27日的中国计算机事业50周年庆典大会高峰论坛,中科院龙芯主设计师胡伟武先生给现场观众带来惊喜,他此次用作演讲的笔记本装备了“龙芯”,是“龙芯”笔记本第一次在大型公开场合上亮相,标志中国的“龙芯”技术已进入成熟使用阶段。
《龙芯3号多核处理器设计及其挑战》
很荣幸在计算机事业五十周年的时候有机会做这个报告,我的报告题目是龙芯3号多核处理器设计及其挑战。我报告还是涉及多核处理器的发展趋势,龙芯处理器总体情况,主要介绍一下龙芯3号设计目标和设计挑战。

让我说多核处理器的发展趋势,就一句话,就是处理器结构正处在转折期,主频至上的时代已经结束,摩尔定律关于主频部分的终结,晶体管资源还在增加,性能功耗比继性能价格比后成为重要的设计指标,网络和媒体的普及导致计算机应用的变化,处理器经历了简单到复杂,再到简单和复杂的过程。
摩尔定律不是性能定律,以前摩尔定律被赋予很多性能的含义,每1.5年性能提高一倍,性能提高一倍,摩尔定律真正含义是关于晶体管数目和晶体管开关速度的定律。Intel是摩尔定律的倡导者,根据Intel自己的资料,从486到奔四性能提高了75倍,有13倍来自工艺的改进,6倍是来自结构的改进。每代微处理器最大的片内时钟频率是上代产品的两倍,其中1.4倍来源于器件按比例缩小,另外1.4倍来源于流水级中逻辑门数目的减少,如130纳米时是32个等效F04的延迟,而在130纳米时只有26个F04的延迟。
晶体管反转速度按比例缩小导致性能同步增长的趋势在130纳米时已经终止了。工作电压一直往下降也降不下去了。连线延迟的影响,随着工艺的提高线变短了,但也变细了,全局的连线延迟还会不断增长,因为芯片的面积不变。30纳米一个时钟信号只能穿过芯片的1%面积。结构上不可能无限制细分流水线,一般认为不可能小于10-12F04,考虑latch的延迟,只剩下6-9级F04。另外封装有一个散热的问题。
晶体管还会增加,我们如何有效利用晶体管资源还是一个问题,晶体管增加,性能增加只是景观管数目增长的平方根。由于晶体管特性,工作电压不会随着工艺进步而降低,加上频率提高,导致功耗密度随集成度增加而增加。所以Intel暂时推不出4GHz以上的P4。功耗和电压是平方的关系,随着阏值电压的降低,漏电功能大大降低。现在比较强调均衡的性能,比如SPEC CPU2000对顶点,浮点,I/O,大内存有很高的要求。未来需要以低能耗处理大量的服务,比如以网络媒体为代表的流的处理,基于Web的大量请求快速处理。
当业务需求需要结构相应改变,比如如何加速单个控制流的执行过程,现在是比较复杂的硬件,导致了巨大的能耗,未来有可能天然并行的Web服务器,可以通过简单的并行来加速执行过程。以前开始都是体系结构,缩小运算与访存的差距,过去用缓存,面积和能耗的增长,未来流数据只用一次,所以缓存就不管用。现在很多处理器缓存占8、90%的面积。以前说CPU,什么叫CPU,就是运算器加控制器就是CPU,现在一大部分内存在里面。应用的多样性意味着芯片的多样性,一方面芯片的各种应用需要比较专用的芯片,芯片的制造成本不断提高,一个芯片要求延长生命周期把钱赚回来。
处理器结构的周期60年来,以20年周期经历一个简单复杂、简单、复杂的螺旋上升过程。早期的处理器结构由于工艺技术的限制,不可能做得很复杂,一般都是串行执行。后来随着工艺技术的发展,处理器结构变得复杂,流水线技术、动态调度技术、缓存技术,像量机技术被广泛使用,后来推出RISC技术,但后来超流水做得越来越复杂,现在处理器最多可以执行200多条指令,乱序的执行。所以现在又到了一个复杂到一定程度复杂不下去的时候。
所以看到传统高主频的复杂设计遇到越来越严重的障碍,需要探索新的结构技术来在简化结构设计的前提下充分利用摩尔定律提供片内晶体管,以进一步提高处理器的功能和性能。多核结构是符合发展趋势的。但多核有两个基本的科学问题,计算机理论基础是图灵机,物理上要求并行的,到编程模式必须是串行的,冯诺依曼结构是顺序地址空间和分布式存储期不匹配,理论模型和物理实现的剪刀差越来越厉害,这问题本质上是应用和结构,以及结构和物理之间的差距问题,需要新的模型以及结构的创新工作。我们要应用新模型,或者物理上新器件。如果这两个做不到就架一座桥,把串行结构并行到物理层做。
过去Closing the Gap有很多复杂的例子,操作系统可以支持虚地址空间,另外80年代多发射的结构得以实现。另外晶体管增加也使得缓存层次得以实现,一定情况下可以提高速度。另外缓存一致性协议,可以在分布存储情况下提供统一的编程空间。我们也有不成功的例子,并行计算机发展几十年,目前一种并行处理结构解决困扰并行处理二十多年的并行程序编程困难,串行程序加速小的问题。
第二部分介绍一下龙芯系列处理器,从2002年做了龙芯1号开始,之后做了龙芯2号,用我话说三级条的跨越。龙芯2B性能是龙芯1号3倍,龙芯2C性能是龙芯2部的3倍,之后发展了龙芯3号。现在1号面向IP和嵌入式应用,龙芯2号面向高端的应用,龙芯3号面向多内容的服务器应用。龙芯2E是64位四发射,乱序执行。现在量产已经基本完成,现在已经向市场批量供应。龙芯2E结构特征,在单处理器结构方面比较到位,不会比国际最好的差。我们有功耗的测试,750M,连CPU、北桥和内存条加一起只有7.5W。这是SPEC定点分支。这是国际组织找了几十个程序,世界上做通用CPU厂家公用的。媒体播放我们觉得750M比P4要快一些。我们部分应用,包括笔记本,一些处理平台,低成本电脑、笔记本,我现在用的就是一家台湾公司做的笔记本。
我理想是“十一五”期间建设在片内攒系统的海龙大厦。龙芯3号多核处理器,我们阶段目标,第一个阶段到2008年希望做8-16核,到2010年做32- 64核。龙芯3号结构特征是多平台并行虚拟机结构,可伸缩大CMP结构。我们现在面临功耗的问题,应用变化等很多转折点,要抓住这个转折点,完全可以利用后发优势取得突破。主频的游戏已经结束了,并行结构我们很有机会。我们设计的方法很正确,有10个核以上,国外厂商更多运用静态电路,不可能把10个100W核集成在一起,不可能为了追求极端的性能牺牲功耗。
龙芯3号一个目标要建设和谐的计算和谐,一个机机和谐,就是兼容问题。另外一个是人机和谐,串行程序并行化的问题。要做一个多平台并行虚拟机结构,我们有一个理想,使所有可执行文件可以在龙芯上正确快速地运行。一方面通过进程级虚拟机实现Linux上的X86兼容。另外把虚拟机自动并行化,现在虚拟机使用的热点刚开始软件解释执行,觉得这是热点就开始翻译,翻译以后觉得还是热点就开始并行优化,我们可以更进一步,就是进行并行的优化。这样使得串行程序在多核上可以并行。我们看到以前有一个指令性结构把硬件软件切分开来,以后写一个二进制代码你感觉不到,彻底打破了软硬件的界限。让软硬件大协同实现一个大虚拟机。
我们发现不同指令系统的区别,所有的处理器的用户态的指令都差不多,只是格式和表述不同而已,但核心态的指令和机制差别较大。现在龙芯2准备实现完整的ABI兼容功能,通过虚拟机方式在Linux上支持多种二进制码。什么叫完整的用户态指令,比如标志,直接判断这个值大于零还是小于零,有些转移根据计算机,有指令根据计算机来做。还有寻址方式。编码不一样,用虚拟方式进行编码的转换。128位的缓存。处理器同步的机制。用户态指令,所有的都可以并在一起实现,核心态指令我们自己写。
这是要构件一个和谐的计算机环境,第二个目标要可扩展的互连结构。刚开始设计是考虑可伸缩的分布式结构,可伸缩的缓存一致性协议,全局共享统一编址的二级缓存。也就是相当把CC-NUMA做在片内,把SMP做在片内。四个处理器四个缓存,一个8×8的开关,这些设计都已基本完成。龙芯3号在策略上伸缩设计、有限实现,比如结合工艺和应用,桌面应用4核就够了。
讲一下龙芯3号的挑战,龙芯过去几年就这样过来的,首先是可伸缩的结构设计,要把所有的指令系统用户态的东西都并在一起实现了,要实行并行虚拟机的支持。原来有一个指令系统照着指令做就可以了,现在软硬件都需要考虑。可伸缩的结构,一致性的缓存协议。以及包括内存控制器和低功耗,16个核放在一起5W就是80W,一定把每个控制在2-3W之内。结构的难题不怕,怕的是物理设计比较难,物理设计的方法上非常难,如果把16个64个龙芯2号核放在一起,反而会成为最大的瓶颈,就像茶壶里倒饺子根据倒不出来的,封装最多1千个饺子封装,真正传递的信号就几百个,要把I/O做得很快,以后可以想像这样的芯片,比如片内3、4G,脚上800M,总之里面快外面慢,龙芯芯片这样脚上5-10G的跑,片内1.5G,2G,脚上频率比里面快,要做那么高的点到点传输不容易的,要建设高速传输的环境。高速缓存的设计等等这些问题非常难。比起验证来物理上不难,这么大的设计怎么保证是怎么的没错,处理器核,以前都是用一些形式验证,随机的验证环境,一个芯片设计6、70%花在验证上。因为互连和缓存一致性协议怎么验证。后仿真怎么办?尤其要FPGA,现在非常依赖于FPGA,龙芯2号现在面积比较大,如果16个核那板子会很大,肯定不可能实现,怎么做FPGA验证是非常困难的问题。这东西以前做工作有国外的东西可以借鉴,现在没有,因为别人也没有做这么多核的东西。龙芯2号会有65纳米的技术。昨天在人民大会堂也签署了一个协议做龙芯3号的设计,我相信“十一五”期间,我们在技术上不会比那些大企业差。
我汇报就到这里,谢谢大家!
提问:刚才提到用虚拟机做优化的时候,有翻译、优化,再做动态的并行化,这时候并行化的类似于虚拟机代码,并行化以后的优化什么东西?
回答:我说的虚拟机有很多层次,JAVA虚拟机是语言级的虚拟机,我们所谓的优化,是二进制码到二进制码。我们对热的指令进行优化,这也是X86平台进行并行编译,然后再多核上跑。
提问:原来自动并行化都是源代码,这样信息比较多一些,动态的时候可以得到另外的信息,在这么低层次,看到二进制代码或虚拟机代码的情况下,能不能做有效的并行化,是不是做了一些基础工作?
回答:我们把目标程序翻译成X86高端优化已经做了不少,目标到目标的翻译有一个好处,因为有时候动态执行过程中的信息得不到,在动态之间可以指导指令性信息,HP前一些年做了一个HP到HP的优化,二进制到二进制的优化,平均性能可以提高15%。我们这也是有限目标能赚一点就是一点。