cpu架构和指令集如何影响CPU?
以一个国家的交通系统为例。一个国家完整的交通运输体系包括陆、海、空三个部分,每个部分又可以细分为许多单元,如陆上长途和短途客运单元、一般货运单元、危险品货运单元等等。海空都差不多,也有很多单位,功能不一样。同时,为了这个运输系统的正常运输,也需要协调功能,所以运输单位之间会有一个调度室来相互协调,在本单位内部进行调度,还有临时或长期的仓储仓库,供货物转运和大家使用统一的标准时间。
就像这个运输系统一样,CPU也是由各种功能不同的计算单元(就像运输系统中各种性质不同的运输单元)、内部寄存器(货物转运仓库)、逻辑控制器(不同部门的调度室)、时钟(使用统一的参考时间使大家一致行动)等不同部件组成。
本来在古代,人们可以随意建立国家交通系统,但是随着时代的发展,交流的频繁,出现了一些问题。比如美国运输系统中波音的超大型飞机要求的跑道有4公里长,而法国运输系统中空客要求的跑道没有那么长,但是宽度比波音宽,而且他们的维修保障系统也不一样。这样,问题就出现了。波音和空客的标准不一样。购买了波音飞机的国家应该按照波音标准建立自己的运输系统,反之亦然。陆地上的车也有不同的标准,比如有的左右,有的相反。有些列车使用宽轨轨道,有些使用窄轨轨道。端口也有不同的标准等等。
这时候美国等第一个国家制定了一套标准,规定飞机跑道多少米,高速公路靠右,火车轨道宽,港口深度50米。同时,美国已经为他的标准的一些关键部分注册了专利。如果你想按照他的标准建立自己的国家交通系统,你很可能会遇到他的关键岗位专利。有人可能会说,妈的,我采用的标准都是他的两倍大。我要建5公里长的跑道,挖100米深的港口,什么都不兼容。对不起,你还是和别人合不来。别人的飞机虽然可以降落,但是他的专利限制了关键部位:要想和他的门对接,必须是1米,2米高,安装多厚的接触膜。如果你的标准和他不一样,他的飞机拒绝降落。如果你的标准和他一样,请交费。
CPU也遇到了同样的情况,领先一步的公司不断制定标准,申请专利。这个时候,如果你想追上去,你会怎么做?你可能会说,我根本不在乎他们,我能自己定标准吗?那也行,但是结果就是人家不在乎你,不在乎他们所有的飞机,轮船,火车等等。都不在你的路上(他们的软件不能在你的CPU上运行),所以你的交通系统只能孤芳自赏,有多强大多万能只能算是少数。如果你想让他们的飞机、轮船在你的交通系统中运行,必然会遇到那些专利关键点,你可以交钱。当然,如果有一天你被开发出来了,你也可以在关键点上申请专利来限制别人。但是在你强大之前,你要走别人的路。你应该和别人兼容,而不是让别人和你兼容。
回到CPU,MIPS架构其实就像这个交通系统的技术规范,就像国家交通系统一样。它规定了一些通用标准,以及每个运输单元应该具备的功能。同时也制定了一套指令,比如打电话100告诉对方我的货在哪里,运到哪里。这个号码是与陆地相对应的长途货运系统。这个时候国家运输系统会从陆路运输你的货物。这是一个指令,还有很多其他的,比如打电话101,火车会运,飞机102,轮船103等等。这些指令的集合就是一套完整的“指令集”。全国交通系统要按照这些指令完成货物的运输,使整个系统运转起来。这时候肯定有人说了,“既然指令集这么重要,不能用别人的,自己定制一个。“这样可以吗?好吧!你不是要打100吗?我改打200,你说我要英文发货,我就改成中文,没问题。问题是你的交通系统只能在你自己家里使用。如果你拿你的交通系统在国外,人家不懂中文,习惯打100而不是200。你的CPU不就是给自己用的吗,不打算买国外的?以前龙芯没有MIPS授权的时候,是做什么的?他只能这么做:你打100,我给你转200号,你的英文说明书在200号上翻译,绕过了MIPS的100号专利点。这样的后果就是,人家说你还打100号,人家就满腹疑惑,觉得自己像个贼。现在有了MIPS的授权,我再也不用走那些弯路了,直接在100上取你的指令,可以加快很多。
我们再明确一点:龙芯从来没有说过自己采用了自己开发的“指令集”。那些说龙芯骗你的人,你要记住,龙芯从来没有在“指令集”上骗过你,一直说是“MIPS”兼容指令集。其实任何人都可以做一套“指令集”,真正实现这些指令的是CPU的核心。例如,您可以向CPU发出一条指令,返回5加5的和。CPU的运算器可以用1加10次返回结果,也可以用1加5次再乘2返回结果。如何实现这个指令是CPU的技能,而实现这个指令的具体步骤和计算方法不是由指令集或者CPU架构决定的,那也不是指令集能卖给你的东西。所以CPU自主研发的真正意义在于如何实现这些“指令”。从实现这些“指令”的效率来说,反映了一个CPU的运算速度,如何实现这些指令,如何让这些CPU中的所有运算单元协调快速的运行。这就是CPU的价值所在。所以,同样的“指令集”,同样的CPU架构的CPU,却能有截然不同的计算性能,就是这个道理。说白了:真正决定CPU性能的不是指令集,就像决定你货物运输速度的不是指令本身,而是这个国家具体货运单位的具体运输能力和采用的运输路线方案。就像你下一个订单是用飞机运输100吨,但是这个飞机一次只能运输你5吨的货物,而且要转机到多个机场才能到达目的地。这时候还不如一架飞机一次运送100吨,从一点直接到达另一点快。这个国家交通系统的“自主知识产权”体现在:你自主设计了交通系统的交通线路,自主开发了内部交通工具等等。