10月21日,教育部计算机类教学指导委员会、中国计算机学会教育专委会于2016cncc期间在山西太原举办“面向计算机系统能力培养的龙芯cpu高校开源计划”活动,在活动中,龙芯中科宣布将gs132和gs232两款cpu核向高校和学术界开源。那么,龙芯开源的cpu核性能如何?将cpu核开源目的何在呢?
(龙芯cpu首席科学家胡伟武,教育部计算机教学指导委员会副主任王志英等共同启动龙芯开源cpu发布仪式)
cpu核是决定cpu性能、安全、功耗、成本的最重要因素,日常我们所说的双核、四核、八核芯片,其实是将2、4、8个cpu核的接口互联并集成到一片硅片上,像intel的haswell、arm的cortex a72、龙芯的gs464e都是cpu核。在设计cpu的过程中,80%以上的功夫都用在cpu核上,因此,如何设计一个高性能的cpu核可以说是cpu设计中的关键技术之一。
目前,除了龙芯、申威、飞腾等老牌设计单位拥有自己设计的高性能cpu核之外,国内大多数ic设计公司依旧处于购买国外的ip“攒”出一个soc的阶段,拥有自主设计cpu核的单位屈指可数。而龙芯本次将两款cpu核向高校和学术界开源,可以使学术界以龙芯的cpu核为基础开发产品,并以龙芯的cpu核为模板学习怎样设计cpu核。
龙芯开源的cpu核为gs132和gs232。gs132为单发射32位结构,采用三级静态流水结构,性能于arm cortex-m0相当。主要用于石油、电力、钻探、智能水表和智能电表。gs232为双发射32位结构,采用五级动态流水线结构,性能于arm9相当,在龙芯1a、1b、1c、1e中使用,主要用于各种嵌入式产品,在智能家电、人造卫星、工控等领域都有使用,像hs3700画质芯片就购买了gs232的授权,该芯片被用于海信的智能电视。
cpu和操作系统是计算机系统的核心,也是我国信息技术中的薄弱部分。与此相关的《数字逻辑》、《计算机组成原理》、《计算机体系结构》、《操作系统》等课程是计算机、软件工程等专业的重要基础课程。虽然中国计算机专业课程体系完善、课程内容成熟,但在高素质计算机专业人才的培养方面还存在一些普遍性问题,并直接导致我国计算机领域的教育更多的还是教学生如何“用”计算机而不是“造”计算机。具体来说有以下三点:
一是中国计算机专业各课程大多独立设计和实施,各门课程独立规划、知识冗余及衔接脱节。计算机专业课程具有很强的系统性,难以分隔,若要真正掌握知识,就必须把所有知识点融汇贯通。而在现今的教学体系中,虽然每门课程是一个独立的知识体,强调完整性,相关知识比较全面。但是前后课程知识不能有效整合与衔接,课程间知识的重复比较严重。这些因素一方面使得学生难以系统地理解课程知识体系;另一方面也未能提供给学生完成复杂系统开发所需要的充足时间。
二是突出原理性、分析式教学方法,缺乏工程性、综合式教学方法。课程教学往往突出原理性知识的传授,注重是什么,有什么,教学方式趋于死记硬背,计算机体系结构的诸多概念,对于学生教学而言仍然停留在概念阶段,由于计算机系统设计相当复杂,涉及底层的软硬件基础架构,加上往往没有讲授一套有效的工程性构建方法,学生虽然知道基本概念,却通常无法进行实践,基本不具备动手能力。
三是学习简单实验方法,缺乏开发具有工程规模系统的实践。传统实验教学中通常不会涉及较大的工程工作量,而是若干规模相对较小的简单实验,比如做一些简单的cpu指令设计,但却没有能力和配套充足的实验平台去进行一个全系统的学习实践。在缺乏足够的工程工作量的情况下,使得复杂系统中存在的较为深刻的问题难以暴露,并导致学生虽然经过了训练,但却因训练强度不足,不能对系统有较为深刻的认识,无法接触到现代计算机系统结构中的很多经典概念,也就无法完成具有工程规模的系统级开发。
若要系统能力培养则需要从硬件开源做起,让学生有更多机会了解并设计自己的处理器,使学生掌握如何“造”计算机而不是如何“用”计算机,使学生对计算机系统融会贯通——当鼠标点一下屏幕打开一个网页的过程中,搞清楚有关浏览器、图形系统、操作系统内核等是如何协同工作的,在完成这些工作过程中指令和数据是如何在硬件系统的cpu、gpu、南北桥中流动的,cpu的微结构中取指、运算、访存等各个模块是如何配合的。
对此,龙芯联合高等院校共同编撰涵盖本科、硕士、博士的《计算机体系结构》课程。在本科阶段,主要强调基础性和系统性,学习作为软硬件界面的指令系统结构,包含cpu、gpu、南北桥协同的计算机硬件结构,cpu的微结构,并行处理结构,计算机性能分析等五部分主要内容。在硕士阶段,主要介绍cpu微结构,包括指令系统结构、二进制和逻辑电路、静态流水线、动态流水线、多发射流水线、运算部件、转移猜测、高速缓存、tlb、多核对流水线的影响等。在博士阶段,主要强调实践性,通过设计真实的(而不是简化的)cpu,运行真实的(而不是简化的)操作系统,对结构设计、物理设计、操作系统做到融会贯通。目前,该课程已经在中国科学院大学讲授。
此外,龙芯还研发了cpu实验平台、操作系统实验平台、并行处理实验平台等数款龙芯教学平台,通过为高校提供完整的线上、线下实验环境,助力教学改革和计算机专业学生的系统能力培养,实现“设计真实处理器,运行真实操作系统”。据了解,龙芯大学教育计划将在复旦大学、南开大学、南京航空航天学院、东北林大、金陵科技学院、大连海洋大学试点。
目前,在龙芯3a3000已经成功流片的情况下,就党政军办公市场而言,龙芯最大的问题已经不是cpu的性能不够用,而是缺乏软件生态的支持,而软件生态建设单凭龙芯自己是很难做起来的,必须依靠众人拾柴火焰高的模式,发动凯发k8官网登录vip的合作伙伴、开源社区、以及创客群体共同建立。这时候适当的将两款cpu核向高校和学术界开源,有助于让广大在学生学习如何围绕龙芯进行开发,在莘莘学子毕业后,自然能掌握围绕龙芯进行开发的相关技能,这有助于龙芯软件生态建设。
不过,将cpu核开源并不意味着一定就能把生态建立起来,以往也有一些it公司将自己的cpu开源,比如sun就曾经将自己的cpu开源,国防科大还下载了源代码,并以此为基础开发了飞腾1000和飞腾1500,这两款cpu还被用于天河1号和天河2号。不过即便如此,也无法挽救sparc逐渐被边缘化的命运,其生态至今也没能建立起来。在去年年底,arm将cortex-m0处理器开源,并以优惠的授权费帮助初创厂商加快芯片开发进程。另外,还有risc-v这样的开源产品,而且有越来越火的趋势——linux、gcc、llvm甚至bsd类操作系统都开始支持risc-v...... 正由于开源的cpu核并非只有龙芯,单纯希望依靠将cpu核开源就能建起软件生态的想法显然是不切合实际的,要对生态建设起到积极作用,一方面需要长时间的持续投入,另一方面也需要企业、高校联合协同,密切配合。
龙芯之所以将两款cpu核开源,一方面是为了配合国家计算机专业课程的教育改革,另一方面也是为了培养一批能给龙芯做基础软硬件开发的新鲜血液,并借此丰富龙芯的软件生态和产业链。不过,最后究竟能取得怎样的效果,还有待时间的检验。笔者希望这一举措能拔除计算机教育领域存在的积弊,为国家培养更多的专业人才。