龙芯应用开发标准教程
上QQ阅读APP看书,第一时间看更新

1.3 龙芯电脑架构

1.3.1 电脑之心:CPU

CPU是一台计算机中最重要的组件。虽然CPU看起来只是比巴掌还小的一块塑料片,但是,为什么说CPU是一台计算机的“神经中枢”呢?做CPU究竟难在哪里呢?本节将为读者进行技术上的解释。如果要从内到外清晰地认识一台计算机,最好的起点就是从CPU开始。

图1-3 CPU的结构和功能

CPU 全称是中央处理器(Central Processor Unit),它是一个高复杂度的集成电路,也是计算机中最重要的核心控制部件。CPU的结构和功能如图1-3所示。

现代的CPU一般可以实现以下4方面功能。

1.数值运算

这是 CPU 最核心的一个功能,因为计算机最根本的功能就是“计算”,也就是用户把计算任务输入电脑中,经过 CPU 中的数据运算功能进行加工处理,最后生成计算的结果。数据运算一般包括定点运算、浮点运算、逻辑运算 3 种,其中定点运算是对整型数据(也就是不带小数点的数据 ) 进行计算,例如加减乘除等;浮点运算是对带有小数的数据进行计算,除了加减乘除之外,还有三角函数、求对数等高级运算功能;逻辑运算是对 CPU 中以二进制方式表示的数值进行与、或、非等布尔代数的操作。在高级的 CPU 中,还会实现多媒体计算、数字信号处理甚至3D图形等更丰富的指令。CPU的数值运算功能主要是通过图1-3中的“运算器”实现的。

2.内存访问

内存是在计算机中与CPU直接相连接的一块具有数据记忆功能的电路板,内存中存储的是CPU进行数值运算的输入数据、中间结果以及最终结果。因为现在计算机处理的计算任务都有很大的数据量,这些数据不可能都放在CPU中,所以就专门制作了用于存储大数据量的内存。CPU在执行数值运算任务的过程中,要频繁访问内存中的数据,也就是从内存中读取数据或者向内存中写入数据,因此CPU要具有内存访问的功能。CPU的内存访问功能主要是通过图1-3中的“控制器”实现的。

3.外设控制

CPU和内存共同承担了进行数据计算的核心功能,但并不是全部。对于一台完整的计算机来说,还需要具有其他方面的功能。例如,需要在机器断电的情况下保存计算的结果到硬盘上,在计算的过程中将数据显示在一个图像屏幕中,以及将计算的数据通过网络传递到另外一台计算机上,还要能够让用户通过键盘、鼠标等方式控制计算机。这些功能称为计算机的“输入、输出”功能(Input/Output),人们发明了专门的设备来实现这些功能,称为输入、输出设备,统称为外部设备,简称“外设”。常见的外设有,用于存储数据的硬盘(Hard disk)、用于远程传输数据的网卡(Network Adapter)、用于输出图像信号的显卡(Display Adapter),以及用于处理用户输入的键盘、鼠标等设备。CPU必须和这些外设打交道才能实现上述要求,这些外设都是在CPU的“控制器”操作下完成相应的功能。

4.其他功能

除了上面所说的功能之外,CPU还包含了很多细节的功能。例如:为了保护CPU在过高的功耗下不被烧毁而实现温度检测功能,方法是在CPU核心的部位放置一个温度检测单元,一旦发现CPU核心温度超过警戒线则自动停机;为了CPU能够灵活地适用于不同的主板而提供配置功能,比如设置主频的高低、处理核的数目以及数据Cache的大小;为了实现操作系统的安全机制,CPU提供不同等级的运行级别,对内存的访问也实行分段、分页的保护式层次结构;为了在一台物理机器上运行多个隔离的操作系统而实现虚拟机(Virtual Machine)功能;为了支持图像识别等功能,CPU还不断集成深度学习等人工智能算法模块。总之,在计算机的几十年发展过程中,计算机的结构发生了日新月异的变化,CPU这个计算机中最核心的部件也是日益复杂化。

提示!

操作系统的安全机制、虚拟机等概念涉及几门专业领域的知识,有需要的读者可以查找相关的书籍进行深入学习。对于一般的用户和应用软件开发者来说,则可以暂时忽略。

分析完CPU的组成结构,可以看到CPU是整个电脑中的“主控单元”,扮演着人的大脑的角色。从地位上来看,CPU负责控制电脑中的其他部件。电脑中的内存和外部设备都是在CPU的指挥下完成数据通信和调度,如果把计算机比喻为一个人体,那么CPU就是大脑,外部设备就是四肢。从复杂度上来看,CPU是整个主板上速度最快、计算量最大的芯片。当前主流的CPU的主频都在1GHz以上,像龙芯3A3000就达到1.5GHz,而且包含4个独立的处理器核,理论上每秒最快能做几十亿次计算操作。对于日常生活中的电脑来说,大多数情况下,计算能力是过剩的。

由此可见,任何计算机都离不开CPU这个最重要的“神经中枢”。

接下来可以为读者解答,为什么CPU是一个世界难题。CPU虽然看上去很小,但是制作起来非常困难。国际上现存的商业CPU设计公司数量本来就不多,能够研制桌面、服务器等高性能CPU的企业则少之又少,耳熟能详的以Intel、AMD、ARM公司为代表,在中国则有龙芯。高端芯片一直是各国竞争的技术高地,CPU的主要难点体现在以下几方面。

1.CPU是一个高度复杂的电路系统

CPU是由晶体管按照一定的逻辑构成的数字电路,目前商用CPU的晶体管数量已经突破了10亿,这是什么概念呢?研究结果表明,人脑中的神经元数量是860亿左右。因此这样一个复杂的系统,对设计团队的技术能力、工程能力、管理能力都提出了高度的要求,往往需要十年以上的技术积累才能具备高端CPU的设计能力。表1-1是几种CPU的晶体管数量。

表1-1 CPU的晶体管数量

2.CPU的生产制造需要较高的工艺条件

在CPU设计出来以后,还要经过一系列生产过程才能形成芯片产品。半导体制造技术可算得上人类制造技术中最尖端技术。从最核心的晶圆生产到封装测试,目前国内的生产条件与欧美日韩的企业相比还有一定差距。

下面以集成电路生产工艺中的一个重要概念“制程”进行讲解。制程是指半导体硅片上每两个晶体管中的栅极之间的最小距离,读者可以简单理解为间距越小则晶体管排列得越紧密,电子在从一个晶体管流动到下一个晶体管的时间就越短,所以相同的数字电路能够在更短的时序内完成预定的功能,那么CPU的主频就很容易提高上去,计算性能就能够得到提升。另外,也是更重要的,整个电路能够在更小的硅片上生产出来,所以功耗降低非常明显。

现在半导体行业已经逐步进入了10nm时代,龙芯3A3000使用28nm的制造工艺,相当于在一根头发丝的宽度上排布1000根电路连线。读者可能会问,龙芯是不是可以使用最好的工艺进行生产?事实上工艺越高,对于生产设备的要求也越高,成本也呈指数级增长。另外,高端集成电路制造设备主要来自4家生产商,即荷兰的ASML、日本的Nikon、日本的Cannon、美国的Ultratech。其中ASML垄断了80%的市场份额,最高端的设备售价高达1亿美元一台,Intel、三星的14nm生产线都是买自ASML。但是,这些最尖端的生产工艺并不对所有厂商开放,不是想使用就能够用上的。

3.CPU承载了计算机体系结构中日益发展的新功能

现代CPU虽然从20世纪90年代就确立了基本架构,但是在近年间伴随应用的发展而不断扩充新的功能。例如,为了支持多线程高效运行,提出超线程(Hyper-Threading)技术;为了支持数字信号处理和密集数据计算,提出SIMD(Single Instruction Multiple Data)技术;为了降低功耗,提出ACPI(Advanced Configuration and Power Management Interface)等电源管理技术;为了支持虚拟化、云计算,提出VT-x等技术;最近的潮流则是把图形处理器、人工智能、深度学习等算法都集成到CPU中。这样导致CPU越来越复杂,早就脱离了仅仅是“计算单元”的定义,而成为多种技术综合交叉的“微观巨系统”。

由于以上这些原因,CPU成为计算机中最难制作的部件。龙芯使用了近20年时间,已经逐渐追赶上了国外厂商的步伐,再有几年的发展时间极有希望攀升到国际水平的“天花板”。

1.3.2 龙芯3A3000

龙芯CPU产品线包括“龙芯1号”“龙芯2号”“龙芯3号”三个系列。在信息化应用中主要是龙芯3号,基于64位多核架构,目前主推的是用于桌面终端的3A3000和用于服务器的3B3000(可制成双路、四路主板),很多龙芯电脑产品都是使用这个CPU,如图1-4所示。

图1-4 龙芯3A3000

3A3000芯片的尺寸是40mm×40mm,在顶部标有处理器的型号名称“龙芯3号”和商标“LOONGSON”,在底部则是有1121个金属焊点,这些金属焊点称为“引脚”,能够通过专用设备焊接到主板上,这样CPU就能够和主板上其他电子元器件进行数据通信。

在CPU内部是由大量晶体管组合成的复杂集成电路,一般人是没有机会拆开看的,只有通过观察版图进行了解。版图是指所有晶体管电路堆叠在一块半导体硅片上形成的结构,越是高端的CPU,其版图越复杂。3A3000的所有电路都是在一个面积为155.78 mm2的硅片上实现的,总共包含了大约12亿个晶体管。这么多的晶体管拥挤地排列在版图上,在图1-5中已经很难区分具体哪一个晶体管是什么作用了,只能够以模块的方式大体划分出不同的功能区域。图1-5展示了龙芯3A3000内部的电路版图。

图1-5 龙芯3A3000的版图

龙芯3A3000包含以下功能模块。

1.处理器核

处理器核是指CPU中执行数值运算功能的部件。3A3000是一个四核CPU,也就是在一个CPU中包含了4个能够独立执行数值运算功能的处理器核,编号是从0到3。每个处理器核的最高主频是1.5GHz。对于桌面电脑的CPU来说,一般四核就能满足使用要求了。

2.三级Cache

Cache的直译是“高速缓存”,是CPU中用于存储数据的区域。虽然计算机中绝大部分的数据都是在内存和硬盘中保存,但是CPU内部也设计了一块容量较小的存储空间Cache,Cache中的内容是内存中数据的一个“局部缩影”,这样做的好处是,CPU处理器核能够以非常快的速度访问Cache,如果要访问的数据不存在于Cache中,转到内存中去访问。Cache的发明极大地提高了计算机的性能。3A3000的Cache是分成3级的,其中一级、二级Cache都是在每一个处理器核中私有的,而三级Cache是4个处理器核共享使用的。私有一级缓存是64KB,私有二级缓存是256KB,共享三级缓存是4MB。三级Cache占据了3A3000版图上很大比例的晶体管面积,所以增大三级Cache会显著增加CPU的成本。

3.内存控制器

内存控制器是CPU访问内存的通道,内存控制器有一定数量的引脚焊接到主板上,通过主板上的走线连接到主板上插入的内存条。3A3000有两个独立的内存控制器,不仅支持DDR2/3-1333规范,而且支持内存数据校验(ECC算法)。

4.HT控制器

HT控制器是CPU与外部设备之间的控制接口,通过引脚连接到主板上,与各种外部设备进行通信。3A3000有两个独立的外设控制器,支持HT 3.0总线规范(HyperTransport)。HyperTransport本质上是一种为主板上的集成电路互连而设计的端到端总线技术,目的是加快芯片间的数据传输速度。HyperTransport技术以前主要在AMD的CPU上使用,现在龙芯CPU也兼容这种总线协议。

1.3.3 龙芯电脑主板

一台计算机的最主要功能是用于进行“计算”,实际上超过80%的计算工作都是由CPU完成的,剩下20%的工作才是主板上的其他芯片完成的。主板是计算机中的一块电路板,包括CPU、内存条以及其他主要电路模块都在主板上,这样共同组合成一台完整的电脑。CPU和主板都封装在机箱里,平时看不到,只有打开机箱,才能一睹CPU的“芳容”。图1-6是龙芯3A3000桌面台式机中广泛使用的电脑主板。

对于有一定电路基础的读者,深入了解主板有助于学习电脑的结构。从技术角度画出这个主板的逻辑框图,如图1-7所示。

图1-6 龙芯3A3000电脑主板(尺寸:24.5cm×18.5cm)

图1-7 龙芯主板的逻辑框图

龙芯主板主要包括以下3个模块。

1.CPU和内存插槽

处于图1-7正中间、最上面的芯片就是本书的主角—龙芯3A3000 CPU。左侧与之相连接的是两个支持DDR3协议的内存插槽。

2.桥片

3A3000下面连接的是一个桥片7A1000,这是龙芯自行研制的桥片。桥片是除了CPU之外最重要的集成电路芯片,它的作用主要是作为CPU和外部设备之间的桥梁,也就是计算机和外部设备之间的数据通道。现在的桥片往往都集成了大量常用的外设控制器,由专业厂商生产销售。有的厂商把桥片设计成两个独立的芯片:一个芯片用于集成高速的外设控制器,称为“北桥”,另一个芯片用于集成低速的外设控制器,称为“南桥”。北桥和南桥经常搭配着使用,习惯上称为“套片”,也称为“芯片组”,7A1000在一个芯片中同时提供北桥、南桥的功能。

3.各种接口

从CPU引出一个UART串行口,主要用于调试CPU和操作系统的运行状态,普通用户在日常办公中一般不使用这个接口。串行口会在主板的后面板上有一个插座。另外,CPU还提供一个BIOS接口(基本输入输出系统),通常在主板上会连接一个支持SPI协议的Flash芯片(称为ROM),存储一个最小软件,在计算机上电时执行最基本的初始化和引导操作系统的功能。

龙芯主板提供了两路显示器接口VGA和HDMI,还有网络控制器、音频控制器,另外还预留了若干PCIE接口用于插接独立PCIE板卡设备。这些接口都在主板的后面板上提供相应的插座。主板还提供了硬盘接口,即高速串行SATA接口。对于移动设备,主板还提供了最多12个USB 2.0接口。

1.3.4 龙芯电脑有多快

一台电脑的运行速度在很大程度上取决于CPU的性能。龙芯CPU采用国际主流MIPS标准指令集,并在MIPS指令集基础上进行指令扩展,形成“兼容国际主流、自主发展指令集”的特色。龙芯已经得到MIPS指令集的永久商业授权。龙芯在MIPS原有的近400条指令基础上新增了1000多条指令,主要包括虚拟机指令、向量指令、数字信号处理指令、媒体指令等。从龙芯指令集的演进与发展过程来看,龙芯处理器已经在继续保持兼容MIPS的基础上逐渐发展为自主龙芯指令集LoongISA。龙芯CPU在近几年中的性能提升路线如图1-8所示。

图1-8 龙芯的性能提升路线

龙芯3A3000于2017年4月发布,性能超越国际主流中低端门槛,单核通用处理性能比2014年的产品提高3~5 倍,SPEC CPU2006 分值为10~11 分,超过Intel凌动系列和高端ARM系列。访存带宽为10~13Gbit/s,与Intel I5相当。采用MIPS兼容的龙芯指令集LoongISA,新一代自主微结构设计GS464E,乱序执行四发射超标量处理器结构,综合设计复杂度达到与Intel的IvyBridgy及AMD的Steamroller相当的水平。片内所有功能模块(CPU、内存控制器等)均为自主设计。

使用CPU性能测试工具进行评估,在相同主频的条件下,龙芯达到与AMD、Intel部分型号相当的性能,如图1-9所示。

图1-9 龙芯和其他CPU在同主频条件下的性能对比

龙芯团队继续优化设计、提高性能,第三代产品将在2019年或2020年推出,3A4000继续使用28nm工艺,四核2.0GHz,通用处理性能提高一倍。3C5000使用16nm工艺,2.5GHz, 16核,单核性能再提高20%~30%。整体达到AMD水平,具有一定的市场竞争力。

1.3.5 龙芯电脑哪里买

为了促进宣传推广和辅助高校教育,龙芯公司设立了一个“龙芯开发者计划”,定期举办面向开发者的活动。龙芯开发者计划的目标是通过“一个开放社区、一个开发者大会、一个应用公社”,共同构成开发者的生态根据地。在这个计划中,龙芯的开发者可以在龙芯社区进行技术交流和探讨,可以参加龙芯的开发者大会,可以通过龙芯应用公社来分享开发的小程序、小游戏。

如果读者有志向成为龙芯电脑的开发者,第一件工作就是要购买一台龙芯电脑。龙芯社区为开发者建立了专门的产品购买渠道,开发者可以用成本价甚至低于成本价的优惠价格购买到龙芯的产品。龙芯开发者商城供应组装好的龙芯电脑整机,可以方便地在线购买,一台3A3000电脑和市面上X86电脑的价格是不相上下的。图1-10是龙芯电脑的购买页面。

图1-10 龙芯俱乐部的开发者商城

龙芯3A3000电脑的主要规格参数如表1-2所示。

表1-2 龙芯3A3000电脑规格参数

龙芯电脑推荐安装的操作系统有很多种,首选推荐的是龙芯社区维护的开源版本Loongnix,这个版本包含了大量面向开发者的编程环境和工具,非常适合于进行应用软件开发。另外,还有很多商业版本的国产操作系统也为个人用户提供免费下载,包括中标麒麟、深度Deepin、普华等。本书所介绍的应用程序开发技术,对于Loongnix和其他操作系统都是适用的。在办公软件方面,金山WPS Office也对龙芯电脑的个人版和社区版提供了免费下载服务。