前言2009年,美国著名杂志《连线》刊登了一篇题为《人民的处理器》的报道,报道中这样写道:试想,一个国家需要完全依靠从一个与之有着战事冲突或经济往来不稳定的国家进口某种珍贵商品,而且,如果没有这种商品,其整个社会将被迫停顿。这个国家是中国,与之有着战事冲突的国家是美国,而该商品就是CPU。Imagine that your nation is entirely dependent on a belligerent and economically unstable foreign country for a precious commodity. Imagine that without that commodity, your entire society would grind to a halt. Got it? OK, now imagine that your nation is China, the belligerent nation is the US, and the commodity is CPUs.中国是一个大国,一定要有自己的处理器。作为国产通用处理器的代表产品,龙芯从2001年至今已经开发了18年,开发了龙芯1号、2号、3号三个处理器系列,并且龙芯处理器在党政军办公、工业控制、军事、航天等很多领域已经得到了广泛的应用。但和主流的X86、ARM处理器相比,龙芯仍然是不为人所熟悉。在龙芯发展的18年里,龙芯公司都开发了哪些处理器?它们的研发历史是怎样的,性能又是怎样的?目前,不管是龙芯的白皮书、学术期刊、还是各种媒体,都没有对此有详细的介绍。在本文中,我们将试图基于公开的各种文献,对龙芯处理器家族中的处理器做一个详细的介绍。龙芯处理器按照其为结构,分为四类,分别是单发射32位(132),双发射32位(232),四发射64位(464)以及双发射64位(264)。按照处理器的性能、核数等分为龙芯1号小CPU,龙芯2号中CPU以及龙芯3号大CPU。1. 龙芯1号系列龙芯1号处理器可以大致分为两类,一类是单发射的32位CPU,采用单发射顺序执行的GS132系列处理器核,主频在10MHz左右,主要当作单片机使用;一类是双发射的32位CPU,采用双发射乱序执行的GS232系列处理器核,主频在数百MHz,可以用做更高性能的嵌入式处理器,替代同等主频的ARM处理器。在2008年,龙芯一度准备砍掉GS132核,重点研发GS232和GS464处理器核。但后来,龙芯还是继续了GS132处理器核的研发,基于此CPU核开发了一系列的低端处理器。1.1 龙芯1龙芯1号于2000年开始研制,2001年8月19日龙芯1号逻辑设计在FPGA平台上运行起来。因此,8月19日被定为龙芯的生日。龙芯1号的物理设计有三个版本,A方案由龙芯委托第三方进行设计,B方案为一个实验性流片的方案,C方案为量产方案。2002年8月10日,龙芯1号(A方案)成功点亮了操作系统,8月29日龙芯1号(C方案)成功启动操作系统。龙芯1号采用0.18微米CMOS工艺进行流片,主频266MHz,单发射32位,片内400万晶体管。采用类MIPS III的RISC指令集,具有七级动态流水线、32位整数单元和64位浮点单元。整体的性能低于Intel Pentium II。为了纪念胡伟武的导师夏培肃先生从事计算机事业50周年,“龙芯一号”被命名为“夏50”。龙芯1号▲1.2 龙芯1A龙芯1A是2011年左右,龙芯根据市场调研,研发的一款面向嵌入式市场的处理器。龙芯1A处理器,从其设计思路看来,可以视为是对龙芯2H做减法的一个产物。龙芯1A芯片主频266MHz,采用32位超标量GS232处理器核,双发射乱序执行,与MIPS 32指令集兼容;一级指令缓存16KB,一级数据缓存16KB。采用130nm CMOS工艺制造,采用23mm*23mm BGA封装,有448个引脚,功耗小于1W。龙芯1A于2012年提供产品。龙芯1A可以作为龙芯其他处理器的桥片。注意,龙芯1A与早期的龙芯1号是完全不同的产品,与龙芯1号的A方案也毫无关系。龙芯1A▲1.3 龙芯1B龙芯1B是龙芯根据市场调研,研发的一款面向嵌入式市场的处理器。龙芯1B可以被视为是龙芯1A的简化版,是龙芯在嵌入式处理器研发上继续做减法的产物。龙芯1B于2011年流片成功,先于龙芯1A。龙芯1B主频200MHz,集成32位超标量处理器核(GS232),双发射乱序执行结构,支持MIPS 32指令集,5级流水线,具有一级指令缓存8KB和一级数据缓存8KB。采用130nm CMOS工艺制造,17mm*17mm BGA封装,有256个引脚,功耗< 0.5W。最大的特点之一是有12个UART(串口)接口。龙芯1B是龙芯历史上第一次从全系统的角度来考虑降低成本的芯片。龙芯1B▲1.4 龙芯1C101/1C3002013年推出的龙芯1C针对指纹生物识别应用。龙芯1C101主频8MHz,采用单发射按序执行32位处理器核(GS132R),采用130nm工艺制造,封装大小12mm x 12mm,引脚数64,封装方式QFP64。功耗16.5mW/16.5μW。龙芯1C300主频300MHz,采用双发射乱序执行32位超标量处理器核(GS232),与MIPS 32指令集兼容;一级指令缓存16KB,一级数据缓存16KB。采用130nm CMOS工艺制造,封装方式20mm*20mm QFP176,功耗<0.5W。为了纪念胡伟武的导师夏培肃院士90岁寿辰,龙芯1C的代号为XPS90。龙芯1C300A芯片▲搭载龙芯1C300B的智龙开发板▲1.5 龙芯1D2014年推出的龙芯1D是龙芯根据用户需求,与三川智慧合作,为智能水表、气表、量热表定制的一款超声波计量专用芯片。龙芯1D主频8MHz,采用单发射按序执行32位处理器核(GS132),与MIPS 32指令集兼容;片上存储为4KB 1KB SRAM和64KB Flash。含有1个超声脉冲发生器,1个模拟比较器,1个时间数字转换器。采用130nm EFlash工艺制造,封装大小为12mm*12mm QFP80,功耗100uW。龙芯1D▲1.6 龙芯1E0100龙芯1E0100是一颗抗辐照CPU芯片,集成了1个GS232双发射32位处理器核,最高主频100MHz,有8KB数据缓存和8KB指令缓存,1个SDRAM控制器,32位PCI总线接口,NOR FLASH控制器,最大支持64MB; NAND FLASH控制器,最大支持128MB;一个SPI接口,2个UART接口,一个I2C接口,GPIO控制器,28个GPIO接口,支持看门狗功能。功耗不超过3W。抗辐照指标:抗辐照总剂量R级>=100 Krad(Si),抗辐照总剂量F级>=300Krad(Si),单粒子翻转率<=1x10-10>=75Mev Cm2/mg采用CBGA276封装,尺寸27mm×27mm,工作温度-55~ 125摄氏度。龙芯1E于2014年提供产品。龙芯1E已经应用于中科院上海小卫星研究院所研发的一系列北斗导航卫星。龙芯1E处理器▲1.7 龙芯1E300龙芯1E300是龙芯第二代抗辐照CPU,龙芯1E的升级版,采用GS232E处理器核,有128位向量部件,主频最高200MHz,采用130纳米FDSOI工艺,处理器性能比第一代提高5倍,互联总线速率比第一代提高100倍,集成SpaceWire星上高速总线路由器,能够满足星间组网的应用需求。2016年完成流片验证和部分辐照试验。集成PCI控制器、SDRAm控制器,SpaceWire控制器(6x6)高速串行接口RapidIO/FC-SpaceWire, NOR/NAND Flash控制器,串口。抗辐照指标:抗辐照总剂量>=300Krad(Si),单粒子翻转率<=1x10-10>=75Mev Cm2/mg, ESD 100V (HBM)采用CBGA276封装,尺寸27mm×27mm,工作温度-55~ 125摄氏度。功耗3W。龙芯1E300处理器▲1.8 龙芯1E1000龙芯1E1000是龙芯1E300的进一步升级产品,是1E系列第三代产品。集成了2个GS232E处理器核,包含128位向量部件,主频最高1GHz,采用28纳米SOI工艺生产,最大功耗5W,工作温度-55~ 125摄氏度。集成高速串行接口RapidIO/FC-SpaceWire,集成DDR2/3, NOR/NAND Flash控制器,串口,SpaceWire。抗辐照总剂量>=100 Krad(Si),抗辐照总剂量F级>=300Krad(Si),单粒子翻转率<=1x10-5 sel="">=75Mev Cm2/mg,ESD 2000V(HBM)。采用CBGA封装,尺寸27mm×27mm,工作温度-55~ 125摄氏度。预计2020年生产出样片。1.9 龙芯1F龙芯1F是一颗抗辐照SOC芯片,集成1个单发射32位GS132处理器核,最高主频33MHz,集成32位PCI总线接口,集成16/8位EMI接口,16位ISA接口,一个CAN总线控制器,一个简易1553B控制器,1个智能1553B控制器,8路UART串口;集成1个AD采集控制器,支持128路数据采集,一次最多采集32路数据;集成2个OC门控制器,每个控制器最多控制32路OC;集成4个PWM控制器,每个PWM最多允许有16输出;集成3个PCM遥控控制器,集成32路可编程脉冲计数器PPC,集成1个GPIO控制器,最多允许控制64路GPIO的输入、输出,功耗不大于3W。抗辐照指标:抗辐照总剂量R级>=100 Krad(Si),抗辐照总剂量F级>=300Krad(Si),单粒子翻转率<=1x10-10>=75Mev Cm2/mg采用CBGA276封装,尺寸27mm×27mm,工作温度-55~ 125摄氏度。龙芯1F可以作为龙芯1E的桥片使用。龙芯1F于2014年提供产品。龙芯1F处理器▲1.10 龙芯1F300龙芯1F300是龙芯1F的升级版。采用了龙芯32位GS132E处理器核,主频最高100MHz,采用130纳米SOI工艺生产,集成了PCI控制器、SDRAM控制器、1553B控制器、片上RAM、SpaceWire,集成了ISA接口、UART、AD、OS门、PWM、PCM、PPC、GPIO、EJTAG。工作温度-55~ 125摄氏度,最大功耗2W,采用CBGA-276陶瓷封装,尺寸27mmx27mm。抗辐照能力:抗辐照总剂量>=100 Krad(Si),单粒子翻转率<=1x10-10 sel="">=75Mev Cm2/mg,ESD 1000V(HBM)。1.11 龙芯1G龙芯根据客户需求定制的一款音响专用芯片,用于苏州上声音响。龙芯1G芯片具有以下关键特性:集成一个GS232双发射龙芯处理器核,指令和数据Cache各8KB其他接口包括LCD控制器,两个自适应MAC、DDR2控制器、USB 2.0接口、SPI控制器、AC97控制器、I2C控制器、RTC接口、PWM控制器、GPIO端口等。1.12 龙芯1H2015年新研的龙芯1H芯片针对石油钻探领域随钻测井应用设计,设计目标是175摄氏度超高温工作条件下的长时间可靠运行。龙芯1H主频8MHz,采用单发射按序执行,GS132处理器核,MIPS 32指令集兼容,3级流水线,集成单精浮点协处理器、片上RAM/Flash/EEPROM、24位ADC、比较器、电源管理等模块,以及定时器、SPI、UART、I2C、CAN等接口。该芯片目前已完成设计流片和应用验证,正在进行产品化。制造工艺采用130nm EFlash工艺,封装14mm*14mm QFP100,功耗50mW。龙芯1H于2017年4月发布。目前,龙芯1H已经在长庆油田得到了应用。龙芯1H▲提供给中石油渤海钻的探搭载龙芯1H的高温板▲1.13 龙芯1I未知处理器,没有任何公开的信息。1.14 龙芯1J龙芯1J是耐辐照单片机芯片。集成一颗GS132处理器核,主频最高10MHz,采用130纳米EF130工艺生产。在接口上,集成Flash、SRAM,集成了I2C、UART、SPI、PWM和ADC。工作温度-55摄氏度~ 125摄氏度,最大功耗50mW,封装尺寸8.5mmx 8.5mm.抗辐照指标:抗辐照总剂量>=20 Krad(Si),单粒子翻转率<=1x10-5>=37.5Mev Cm2/mg,ESD 2000V(HBM).2. 龙芯2号系列龙芯2号处理器都是64位处理器,早期的型号是4发射乱序执行的64位GS464系列处理器核,后来新出的处理器升级为采用GS464E处理器核。龙芯2K处理器是双发射乱序执行的GS264处理器核的64位双核处理器。龙芯2GQ则是一款4核处理器。2.1 龙芯2A/2B龙芯2号的设计从2002年7月开始,采用4发射和乱序执行结构的设计,64位设计,7~10级流水线。龙芯2号的寄存器堆设计有两个方案,A方案采用商用寄存器堆,在台积电流片;B方案采用微电子中心设计的寄存器堆,在中芯国际流片。A方案采用的商用寄存器堆设计出错,导致流片失败。B方案流片成功,2003年10月17日成功启动操作系统,最高频率为300MHz,功耗1W—2W。相同主频下,龙芯2B的性能已经超过了Pentium II,是龙芯1号的3~5倍。为了纪念毛主席诞辰110周年,龙芯2B代号MZD110。龙芯2号的性能是之前研制成功的龙芯1号的3倍,超过了相同主频的奔腾II的性能。龙芯2B▲2.2 龙芯2C龙芯2C是龙芯2B的优化版本。在上海中芯国际(SMIC)利用0.18微米CMOS工艺进行了多次成功流片,2004年9月28日流片成功,定型芯片主频为500MHz。龙芯2C的性能是之前研制成功的龙芯2B性能的3倍,达到了相同主频的奔腾III的性能。为了纪念邓小平诞辰100年,龙芯2C的代号为DXP-100。龙芯2C,代号DXP-100▲2.3 龙芯2D根据龙芯处理器的早期发展历史,基本上每年有一款处理器流片。由于龙芯2C在2004年流片,而龙芯2E于2006年流片,可以推测龙芯2D应该是在2005年流片的产品。在中科院微电子所的黄令仪研究员的回忆文章中,提到了她参与了龙芯2D的物理设计。在《龙芯的足迹》中《2006年回顾及2007年展望》一文中,胡伟武说“2005年我们面临的严峻形势赋予龙芯2E背水一战的悲壮色彩”,因此可以推测龙芯2D极有可能是一个流片失败的型号,或者是一个中途被放弃的型号。2.4 龙芯2E龙芯2E在2005年11月底交付流片,2006年3月18日流片成功。2006年9月13日,以长征胜利70周年命名为CZ70的龙芯2E通过科技部组织、时任科技部部长徐冠华亲自参加的验收。龙芯2E是中国大陆首款采用90纳米技术设计的处理器,晶体管数目4700万,主频最高可以达到1GHz。龙芯2E的芯片面积6.8mm*5.2mm,只有Intel奔腾4的1/4。龙芯2E样机实测SPEC CPU2000分值为定点503分,浮点503分,最高双精度浮点运算速度为3.99GFlops。龙芯2E的性能是龙芯2C的三倍,达到中低档Intel奔腾IV处理器的水平。在龙芯2E的优化设计过程中,意法半导体与龙芯进行了合作。基于龙芯2E的成功,意法半导体还花三百多万美元授权费购买了龙芯2E/2F的生产和销售授权,开创了我国计算机核心技术对外授权的先例。由于龙芯2E的北桥使用FPGA实现,成本较高,该处理器没有大规模量产。龙芯2E▲2.5 龙芯2F/2F-1000龙芯2F于2007年7月31日流片成功。龙芯2F是龙芯第一款成功的商用处理器。为了纪念建军80周年,龙芯2F代号为PLA80。龙芯2F包含5100万晶体管,主频800MHz,采用意法半导体90纳米工艺流片。在指令集上,完全兼容64位MIPS III。采用龙芯2F处理器的福珑迷你电脑,以及8089A/D笔记本电脑,曾经大量面向爱好者销售。至今,仍有大量的龙芯爱好者持有这两种产品。龙芯2F▲由于篇幅较长,我们先看一部分,高性能的CPU还未露面,请期待后续部分。