在谈到MIPS的时候,它意味着一种RISC(Reduced Instruction Set Computing,精简指令集)处理器,一种指令集,同时,MIPS又是一间公司。MIPS处理器是一种很流行的RISC处理器,而MIPS的意思是“无内部互锁流水级的微处理器”(Microprocessor without Interlocked Piped Stages),其机制是尽量避免流水线中的数据相关导致的互锁问题。它最早是在80年代初期由斯坦福(Stanford)大学Hennessy教授领导的研究小组研制出来的。MIPS公司的R系列就是在此基础上开发的RISC工业产品的微处理器。这些系列产品为很多计算机公司采用构成各种工作站和计算机系统。
MIPS 79R4400MC处理器,顶盖上的积分符号显得极具学院气息
龙芯一开始是一款MIPS-like(类MIPS)处理器,这个后缀like是非常重要的,在2005年(龙芯2C之前),ICT(计算所)并没有MIPS公司的许可证,因此有4条被专利保护的指令不能实现,因此只能称为MIPS-like处理器,换一种方式叫做95% MIPS Compatible(95% MIPS兼容)。这四条指令是lwl, lwr, swl, swr,属于访存地址不对齐(Unaligned Memory Access)的指令(32位模式为4条,64位模式为8条),这些指令的美国专利保护在2006年到期。龙芯1是32位处理器,龙芯2是64位处理器。
Sony PS2上的EmotionEngine可能是最为一般人熟知的MIPS处理器
2007年,ICT通过ST意法半导体获得了MIPS的授权,龙芯2成为了MIPS-compatible(MIPS兼容)的处理器(就像AMD等厂商的处理器叫做x86兼容处理器一样),目前的龙芯2F指令系统主要由以下四个部分组成:
(1)MIPS III指令集;
(2)独有的普通用户态指令,如乘累加指令(MIPS IV中定义了乘加指令,但龙芯2号没有采用)等;
(3)部分与处理器结构紧密相关的核心态指令,如对Cache或TLB操作的指令(这些指令一般随结构的不同而不同,即使在MIPS的不同处理器中也是如此)以及在未来的龙芯3号中进行多核之间同步和通信的指令等;
(4)龙芯独有的多媒体指令。
在实现上,龙芯指令集也和一般的RISC不同,实际上,和最近的x86 CISC倒有些不谋而合:采用了微代码设计,也就是说,处理器基于的指令集和内部微架构运行的指令并不不相同,它们需要经过一个解码阶段。下面就大致从指令拾取开始介绍龙芯2的微架构,并对比着Intel的最新CISC x86指令集处理器:Nehalem处理器对比,相信更容易理解一些。和以前所说的一样,这些内容就经过了笔者的多方面查证以确保具有较高的准确性,然而由于内容太多,错漏难以避免,欢迎读者们一一指出。
(最新版本)
Intel Nehalem-EP处理器首发深度评测
(上文的原始版本)
2008年度评测报告:深入Nehalem微架构