2. 龙芯的“架构”问题
最近,美国In-Stat公司发表在《Microprocessor Report》发表了一篇论文,对龙芯2号进行了详细介绍。
In-Stat公司的报告的主要依据是龙芯课题组发表在计算所主办的《Journal of Computer Science and Technology》2005年第2期上的一篇介绍龙芯2号结构设计的学术论文。In-Stat公司在该报告中明确指出,龙芯2号没有实现MIPS公司申请专利的那几条指令。此外,龙芯2号实现了自己定义的媒体指令,没有实现MIPS公司定义并申请专利的媒体指令。
In-Stat公司的报告指出,由于龙芯2号只是没有实现MIPS公司申请专利的部分指令,因此龙芯2号的指令系统是95%与MIPS兼容的(95% MIPS Compatible)。因此,部分媒体很不负责任地说龙芯2号的架构与MIPS R10000有95%的相似之处,可能构成对MIPS的侵权。对龙芯的品牌和产业化造成了很坏的影响。
从高层概念性的“架构”(专业名词为architecture或体系结构)的角度,目前所有的RISC处理器都是95%甚至以上类似的。例如现在全世界所有的处理器都采用冯诺依曼结构(好多人做研究想突破这个结构,做了几十年没有成功),从这个意义上来说,所有处理器是100%架构相同的。又如,在 RISC处理器中,从64位、四发射、有关功能部件的设置、有关队列(如发射队列,Reorder Buffer,访存队列)的设置、指令和数据Cache的设置这些方面来看,在这些概念性的“架构”方面,MIPS处理器、IBM的处理器、SUN的处理器、HP的处理器、DEC的处理器等等,都是95%以上类似的。打个比方来说,我们不能根据两套住房都是三室一厅,都有两个房间朝南就认为这两套住房 95%是一样的。
但从与实现相关的微体系结构(Microarchitecture)的角度,则不同的设计师各显神通。龙芯2号作为完全独立设计的处理器也是如此。例如, MIPS R10000是5-7级流水线,而龙芯2号是9级流水线;MIPS R10000的媒体指令与龙芯2号的媒体指令完全不同;MIPS R10000在发射指令时把指令分成定点指令、浮点指令、和访存指令三组,而龙芯2号在发射指令时把指令分成定点(包括访存)以及浮点两组;龙芯2号实现了可执行保护以防止黑客或病毒的缓冲区溢出攻击而MIPS R10000没有;MIPS R10000和龙芯2号的转移取消机制很不一样,等等。可以说,在涉及具体实现的微体系结构方面,龙芯2号和MIPS R10000很难找到相同的地方。这点,在In-Stat的报告中也进行了充分的阐述。
在In-stat的报告中,对龙芯2号和MIPS R10000的一些结构参数进行了比较,得出龙芯2号在处理能力上与MIPS R10000类似甚至超过的结论。有些媒体就说龙芯2号的“架构”与MIPS R10000有95%类似,是很无知的、很不负责任的、很可笑的,其基本错误在于混淆了表示象指令系统、多发射、RISC这些概念的“架构”和表示具体实现的“架构”的关系。这种行为,使人误认为中国人自己没有能力设计自己的处理器,需要通过抄袭别人的结构来实现。事实上,到目前为止,运行(部分) MIPS指令的最高性能的处理器正是正在实现中的龙芯。
值得指出的是,计算所很注意用知识产权的武器保护自己,在龙芯1号和龙芯2号的设计过程中,已经申请了20多条与龙芯处理器体系结构相关的专利。其中部分已经得到了授权。 |