龙芯指令 联系客服

发布时间 : 星期四 文章龙芯指令更新完毕开始阅读f3b96e8071fe910ef12df8d1

龙芯指令

范虎

所有的嵌入式处理器都是基于一定的架构的,即IP核(Intellectual Property,知识产权),生产处理器的厂家很多,但拥有IP核的屈指可数。如果有自己的IP核,光靠卖IP核即可坐拥城池。

嵌入式系统的架构有专有架构和标准架构之分,在MCU(微控制器)产品方面,像瑞萨(Renesas)、飞思卡尔(Freescale)、NEC都拥有自己的专有IP核,而其他嵌入式处理器都是基于标准架构。我这里说明龙芯只介绍一下标准架构的嵌入式系统。

标准的嵌入式系统架构有两大体系,目前占主要地位的是RISC(Reduced Instruction Set Computer,精简指令集计算机)处理器。RISC体系的阵营非常广泛,从ARM、MIPS、PowerPC、ARC、Tensilica等等,都是属于RISC处理器的范畴。不过这些处理器虽然同样是属于RISC体系,但是在指令集设计与处理单元的结构上都各有不同,因此彼此完全不能兼容,在特定平台上所开发的软件无法直接为另一硬件平台所用,而必须经过重新编译。

其次是CISC(Complex Instruction Set Computer,复杂指令集计算机)处理器体系,我们所熟知的Intel的X86处理器就属于CISC体系,CISC体系其实是非常低效率的体系,其指令集结构上背负了太多包袱,贪大求全,导致芯片结构的复杂度被极大的提升。过去被应用在嵌入式系统的X86处理器,多为旧世代的产品,比如说,工业计算机中仍可常见数年前早已退出个人计算机市场的Pentium3处理器。由于此世代的产品效能与功耗比可以说是过去X86体系的甜蜜点,加上已经被市场长久验证,稳定性高,故常被应用于效能需求不高,但稳定性要求高的应用中,如工控设备等产品。

世界上生产处理器芯片的厂家有很多,但他们生产的芯片绝大部分都属于以上几种架构,只有少数厂家设计生产一些自成体系的处理器,他们有自己的指令集、编译连接器、调试器、集成开发环境,有的甚至还有自己的小型操作系统,但他们的这些处理器基本都是自产自销,专用于他们自己的某些产品中,而且这些处理器都是比较低端的,针对性强,应用也比较窄,同时也正是因为他们所有都是“自己造”,导致技术比较封闭,公开资源少,了解的人不多,开发的人自然就少,所以它们根本不可能形成主流,当然这些公司并非靠生产芯片挣钱,而是靠卖产品发财,所以严格来说,这些公司算不上是专门的芯片生产商,而是某个产品(如照相机)的生产商,一旦他们的产品滞销,他们“自己造”的芯片也将随之退市。

不同架构处理器之间最根本的区别是指令集而不是其他,也可以说指令集是区分不同架构处理器之间的标志;指令集最本质的含义在我看来应该是指汇编指令与二进制机器码的对应关系,汇编指令又可以叫做指令的名字,综合起来,指令集就是指令名字与二进制机器码的对应关系;各种处理器架构之间的不同就表现在它们各自使用不同的指令集,但事实上,不同处理器架构的指令种类基本都是相同的,只是设计它们的公司并没有考虑相互融合与统一的问题,所以这些指令被人为冠以不同的名字与不同的二进制代码,尽管它们表达的意思

是相同的;每一种指令集都必须有将自己的指令名字翻译成二进制机器码的编译器,指令集的不同使得各种处理器架构必须使用各自不同的编译器;从世界大同的角度来考虑,这其实是一种人为制造的壁垒和障碍,也是一种重复用工、浪费资源的现象;假如在不同架构处理器上使用相同的名字与二进制机器码来实现相同的功能,那么,不同的处理器架构就可以使用相同的编译器,而这从技术上是完全可以实现的,关键是在人的因素。

处理器的核心技术并非指令集,指令集属于软件范畴,而处理器芯片本身属于硬件范畴;处理器的真正核心技术体现在芯片内部实现每条指令的效率以及所支持指令的种类和数量上;不同级别的处理器所支持的指令种类和数量可能是不一致的,性能越强、功能越多的处理器支持的指令种类和数量越多,这一点对所有处理器架构来说都是相同的;由此看来,如果我们想自主设计一款处理器,我们根本没必要只是为了一个没有太多实际意义和技术含量的概念而标新立异地去设计一套全新的指令集(其实就是给指令起一个不同的名字而已),就像我们自主设计一个操作系统并不必要首先另行设计一种类似C的编程语言一样,我们完全可以选择一套目前最全、最完善的指令集,然后用自己的思想和方式来实现这些指令,这样我们就可以借用这套指令集现成的编译器和开发环境,减少了芯片设计成功之后配套软件的开发需求,也就缩短了芯片上市周期,一旦芯片设计成功立即可以走向市场,应用到实际产品当中去;如果我们自己独创一套全新的指令集,那么我们就必须开发一套全新的编译器,还有其他配套调试仿真软件,那样的话,即使芯片设计成功了也可能因为后续配套软件跟不上而无法使用,这是大家想看到的吗?

MIPS公司的MIPS指令集的专利保护期大概还有4-5年就到期。

龙芯处理器在架构上同MIPS非常接近,同MIPS架构95%相类似。龙芯二号处理器同1995年推出的MIPS R10000非常相似,这样的相似度可能会引发 知识产权纠纷,因为MIPS科技公司并没有向龙芯处理器的设计者提供授权。事实上,从互联网上的一些信息我们可以看到,MIPS公司本身从来没有自行向“龙芯”提出任何侵权指控或诉讼,因为他们自己心里非常清楚有没有把他们自己实现MIPS指令的核心技术传授或转让给了“龙芯”团队,如果有,那我想就不是指控“龙芯”侵权,而是直接追讨违约金了;当然MIPS指令集是公开的,即使不公开,从编译器源代码中也是可以读出来的;所以,我们可以想象:“龙芯”团队的设计师们埋头先从公开的资料中整理了一套完整的MIPS指令集,然后搭起了巨型逻辑电路,凭借自己的思路和方法,使用枯燥的硬件描述语言,经过无数个不眠之夜,克服重重困难,付出无数心血和汗水,最终一步一步实现了所有这些指令集;而后流片,设计全功能开发板,调试,最后做成系列产品,并且拿到实际生活中去检验测试;而一旦所有这些都取得成功之后,“龙芯”又尊重事实,与 MIPS公司签署购买其MIPS32和MIPS64架构指令集专利的合约,这何尝不是我们对国外优秀文化与先进技术的一种尊重和包容、一种负责任态度!这不正体现了“龙芯”团队成功之后的潇洒与从容吗!我们向来不吝啬把自己优秀的东西传播出去,我们也从不拒绝接纳国外优秀的东西,只要他们真心实意给我们!

龙芯处理器选择MIPS指令系统的重要的原因是出于市场考虑。MIPS结构是一个开放的架构,MIPS公司不同于Intel、SUN和IBM,它不是 IDM公司,它自己并不生产销售芯片,而是以卖License和服务为营业范围,它不但不像Intel公司那样反对别人做兼容芯片,而是支持其他厂家做 MIPS兼容芯片。世界上许多大公司,如CISCO、SONY、AMD、ATI、NEC、LSI、

IDT和ITE等在内的上百家公司都购买了MIPS的 License。上世纪90年代SGI公司曾采用MIPS芯片做高档工作站与服务器,目前MIPS芯片是国际上主流的高档嵌入式CPU之一,2008年 MIPS芯片销售量超过4亿片,都是MIPS的授权客户销售的。

MIPS的License分为处理器核授权(Core License)和结构授权(Architecture License)两类。处理器核授权是购买由MIPS公司设计的MIPS兼容的处理器核,分为软核和硬核,这是由MIPS公司设计的处理器核。购买结构授权主要是为了使用MIPS兼容的品牌以及通过加入MIPS兼容联盟共享知识产权,购买结构授权后需要自主设计处理器核。中科计算机研究所(龙芯团队)购买的是MIPS公司的结构授权。

结构授权的核心是指令系统兼容,指令系统就是计算机硬件提供给软件的编程语言。例如,“六十六”和“66”表达的是相同的意思,但后者全世界都可以看懂,而前者只有懂汉语的人能够看懂。指令系统也是如此,就是一个编码,一种计算机的语言。采用MIPS兼容的指令系统可以运行很多现有的系统软件和应用软件。包括Linux、Vxworks以及WinCE在内的操作系统都支持MIPS指令系统;MIPS的应用软件也非常丰富,例如MIPS公司已经把 Google公司的操作系统Android移植到MIPS构架上,这样使得基于MIPS的设备能运行Android,MIPS兼容授权意味着龙芯的芯片能支持Android的平台,以及利用Android平台的应用和资源。因此,购买MIPS兼容授权可以缩短龙芯芯片进入市场的时间。

计算所已经完成对MIPS指令系统的专利分析,在中国实现完全的MIPS指令系统不侵犯MIPS公司保护四条特殊指令的专利。这次结构授权也不是购买 MIPS专利授权。但如果没有MIPS公司的结构授权,就得不到MIPS公司的有关服务,龙芯处理器产品就不能使用“MIPS兼容(MIPS Compatible)”的标志,不利于龙芯处理器的推广。因此购买MIPS的结构授权,主要是基于扩大市场的考虑,并不影响龙芯CPU的自主性