编辑: You—灰機 | 2019-12-22 |
一、龙芯的产品 目前已经研究出来的芯片和预研的产品共有下面几种: (1)龙芯1号 龙芯1号CPU是神州龙芯公司在2002年9月28日推出的,它以中国科学院计算技术研究所研制的通用CPU为核心,由神州龙芯公司拥有知识产权. "龙芯1号"是一款32位微处理器,采用0.18微米工艺,CMOS工艺制造,包含近400万个晶体管,具有良好的低功耗特性,平均功耗0.4瓦,最大功耗不超过1瓦,主频最高可达266MHz."龙芯一号"处理器是一款既兼顾通用又有嵌入式CPU特点的新一代32位处理器,拥有32位MIPS指令系统,并采用一套简单高效的动态流水线,支持乱序执行和精确中断处理,可以在大量的嵌入式应用领域中使用.从技术和应用的角度来看,"龙芯一号"与主流CPU产品还有着很大的差距,仅相当于中端Pentium 2的水平. (2)龙芯2号2005年4月26日面世的"龙芯2号"是国内首款64位高性能通用CPU芯片.它仍采用0.18微米,CMOS工艺制造,最高频率可达到500MHz,功耗3~5W,支持64位Linux操作系统和X-window视窗系统,SPEC CPU2000分值可达到300分以上.与32位的龙芯1号相比,龙芯2号达到了高于其10倍的性能,代表了国内芯片设计的领先水平.实测性能的10到15倍,完全可以媲美Intel Pentium 3,超过1.3GHz的威盛处理器的2至3倍.龙芯2号的主要应用目标是Linux桌面网络终端、低端服务器、网络防火墙、路由器交换机、多媒体网络终端机、无盘工作站等. (3)龙芯2号增强型处理器(简称"龙芯2E") 龙芯2号增强型处理器是中国科学院计算技术所研制,具有自主知识产权的64位高性能通用处理器,龙芯2E的最高频率达到1GHZ,最高双精度浮点运算速度每秒39.93亿次,SPEC CPU2000性能测试达到500分,是目前全球除美日之外性能最高的通用处理器.龙芯2E采用四发射的动态超标量超流水线结构,实现了先进的转移猜疑、寄存器重命名、动态调度、以及非阻塞的高速缓存访问等乱序执行技术.龙芯2E片内含64KB一级指令高速缓存访问等乱序执行技术.龙芯2E片内含64KB一级指令高速缓存、64KB一级数据高速缓存、以及512KB二级高速缓存,片内还集成有DDR内存控制器,在单处理体系结构上达到国际先进水平.龙芯2E采用90纳米CMOS工艺,是大陆地区第一个采用90纳米设计技术的处理器.晶体管数量4700万个,面积35平方毫米,典型的工作频率750MHZ下的实测功耗为5-7瓦,适用于高端嵌入式领域.龙芯2E可运行64位linux操作系统,流畅运行Debian发行版视窗系统、Mozilla浏览器、OpenOffice办公套件、Mplayer流媒体播放器、WEB Server、MySQL数据库系统、Windows虚拟终端等应用程序并能正确支持中文输入和显示.龙芯2E可通过软解压既能完成多种码率的mpeg
1、mpeg2以及mpeg4流畅播放. (4)正在研制的"龙芯3号". 目前我国正在研发的是"龙芯3号".据悉"龙芯3号"将是一款多核处理器,至少也是一款四核的产品,并增加专门服务于Java程序的协处理器,以提高Linux环境下Java程序的执行效率,指令缓存追踪技术等."龙芯3号"最终将实现对内峰值每秒500-1000亿次的计算速度.
二、"龙芯2号"的原理及结构特点 就目前我国的技术水平而言 ,"龙芯2号"它具有了较高的水准,目前是我国最先进的芯片.龙芯2号的性能提高主要来自先进的结构设计,包括四发射和乱序执行结构的设计.而乱序执行的关键技术是龙芯2号结构设计的重点和难点,四发射的RISC结构如果没有乱序执行技术的支持是发挥不出效率的.例如典型的定点程序中平均每
六、七条指令就有一条转移指令,意味着在四发射结构中每两拍就有一条转移指令.如果等转移指令的目标地址确定再进行后面的取指,意味着每取两拍指令就得等
五、六拍甚至更多才能继续后面的取指.又如,做一个简单的加法需要两个操作数,而如果这两个操作数都需要从内存中(即主板上的内存条)取回来,那么在做这个加法之前,需要至少上百拍的时间为这个加法准备数据.指令乱序执行的核心思想就是减少各种相关引起的等待,充分发挥处理器的效率. 其主要做法包括:(1)转移猜测,即在转移指令目标尚未确定的时候,根据过去转移指令执行的历史猜测该转移指令的转移方向和转移目标,并根据猜测的结果进行后续指令的取指,为处理器提供连续稳定的指令流.如果最后发现猜测错误,则取消猜错的转移指令后面的指令.(2)动态调度,即在前面的指令由于操作数未准备好而等待时,后面的操作数已经准备好的指令可以越过前面的指令先执行.(3)寄存器重命名,即指令运算后先写到一个临时的寄存器,等确定该指令不会被取消后再写到真正的目标寄存器中去.这样做的好处除了便于前面指令发生例外或转移猜错时取消外,还避免了由于两条指令写同一个寄存器时的等待. 此外,访存指令的乱序执行又有新的特征.除了通过增大CACHE和对CACHE进行有效的组织尽量提高CACHE命中率并降低CACHE访问的延迟外,还需要对访存指令进行乱序执行以提高效率.访存指令乱序执行的关键技术包括:(1)Non-blocking技术,即在前面的访存指令由于CACHE不命中进行长延迟的存储访问时,后面的指令可以继续访问CACHE.(2)Memory Disambiguation技术,即在存数和取数指令都乱序执行的情况下,保证取数指令都能取回它前面的最近一条对同一地址的存数指令所存的值.比如如果一条取数指令在一条存数指令之后且两条指令的地址相等,但取数指令先访问CACHE,也要保证取数指令取回该存数指令的值;
又如如果一条取数指令在一条存数指令之前且两条指令的地址相等,但存数指令先访问CACHE,也要保证取数指令取回原来CACHE中的值,而不是存数指令新存的值.(3)Load Speculation技术,即在取数指令访问CACHE后,它前面的存数指令地址还没有确定(即取数指令从CACHE中取回的值有可能是错误的),先把取数指令从CACHE中取回的值送给后续的指令用,如果后来发现它前面的存数指令和该取数指令访问的是同一个单元,再取消该取数指令后面的指令.(4)Write Buffer技术,由于存数指令也是乱序执行的,存数指令所存的值不能立即写到CACHE或内存,而是要根据存数指令在程序中的次序写到CACHE或内存. 在乱序执行的结构中,虽然指令执行是乱序的,但开始和结束是有序的.指令在译码和寄存器重命名后就放在一个有序的队列中,由该队列来记录每一条指令的执行阶段并有序地结束指令.即指令在流水线中是有序进入、乱序执行、有序结束. 龙芯2号的主要结构特点包括,64位设计,7-10级流水线,包括取指、译码、重命名、发射、读寄存器、执行写回、提交等,其中乘除、浮点操作、以及访存操作在执行写回阶段需要多拍.四发射结构,最多可以有64条指令乱序执行.共有5个功能部件,包括定点ALU1(完成定点加减、逻辑、移位、转移),定点ALU2(完成定点加减、逻辑、移位、乘除),浮点ALU1(完成定点加减、转换、转移),浮点ALU2(完成乘除、开方),以及访存部件(完成访存、系统管理、数据传送).通过对浮点指令fmt域的简单扩充,浮点部件可以执行完整的定点指令以及4路SIMD的媒体指令.在乱序执行方面,转移猜测使用混合预测+Gshare + BTB + RAS的转移猜测方式;
通过物理寄存器到逻辑寄存器映射进行寄存器重命名,定点浮点寄存器堆各为64项;
动态调度方面定点和浮点保留站各16项,Reorder Buffer为64项. 在存储管理方面,TLB为64项全相联,每项两页,页大小在4KB-4MB之间可变.此外,有一个独立的8项的指令TLB是数据TLB的子集.与龙芯1号一样,在TLB中增加可执行位,防止缓冲区溢出攻击.数据CACHE和指令CACHE各为32KB,二路组相联.最多允许32个访存操作的Non-blocking访问,访存相关在访存队列中通过全相联的查找解决,避免了象Alpha21264或MIPS R10000中碰到访存相关时需要重新发射.实现load-speculation,允许前面的store操作未确定的情况下执行load操作并返回结果.Cache失效时实现关键字优先访问,以减少访存等待,Uncached操作实现uncached accelerate算法加速I/O访问. 总之,龙芯作为我国的第一个"龙芯",它的意义就在于打破了中国人造不出CPU的'神话'",但是最为独特的优势,不是性能,也不是价格,而是它的安全性.军队、政府、国有企业和科研机构等部门使用的信息技术设备,直接关系到国家信息网络的安全.采用"龙芯"CPU,将有助于消除我国在电子政务、国防等方面的安全困惑,改变在信息安全领域的被动局面.使用"龙芯",就不存在后门问题,而且有内建的系统安全硬件,还可以抵御黑客等一大类网络攻击.所以从国家的根本利益及国家的安全出发,我们必须拥有和大力发展自己的"龙芯",龙芯在我国也将会有更广阔的前景.