龙芯2/Nehalem处理器架构深度对比分析(1)
IT168 发表于:09年06月23日 13:28 [转载] IT168
龙芯一开始的英文名叫做Godson(翻译为中文是天之子?),早期内部人员爱称为狗剩(音译......),在06年11月,龙芯的英文名定为Loongson(中文名音译过去......),在学术界则仍然使用Godson的名字。
意法半导体生产的龙芯2E,处理器表面有Loongson、ST和ICT的标志
作为一款通用处理器,理论上我们可以在PC/笔记本/服务器/网络设备等各个领域上都见到它的身影,实际上也已经有少量的龙芯笔记本。我们IT168评测中心对龙芯处理器做了微架构上的简析。
在谈到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 PS/2上的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处理器对比,相信更容易理解一些。和以前所说的一样,这些内容就经过了笔者的多方面查证以确保具有较高的准确性,然而由于内容太多,错漏难以避免,欢迎读者们一一指出。