首先我们需要清楚地知道,和Nehalem一样,Godson2是一款OOOE(Out of Order Execute)乱序执行的Superscaler超标量处理器,不同的是Nehalem是CISC架构而Godson2是RISC架构。一般而言,由于RISC架构指令集比较简单,因此设计比较简洁,可以达到相对较高的频率(如,IBM的PowerPC 6+可以达到5GHz以上的频率),Godson2的流水线深度为9级,比一般的RISC处理器略高,它们依次是:fetch拾取、pre-decode预解码、decode解码、register rename寄存器重命名、dispatch分发、issue发射、register read读寄存器、execution执行、commit提交。大致上,它们可以分为取指(Instruction Fetch)、解码(Decode)、执行(Execute)、串行顺序回退(Retire)这四个阶段。
注:通过类RISC架构和深流水线,CISC处理器也可以达到很高的频率,如Pentium 4。为什么深长的流水线可以达到更高的频率呢?如果流水线短的话,电信号在单位时间内需要传输经过的元部件相对要更多、更远,所要求的元件延迟要更低、频率更高。深长流水线则反之。代价就是晶体管数量的增多,导致功耗增加,并且流水线堵塞的话,清空流水线带来的代价较大。
Nehalem Microarchitecture,经笔者整理
可以发现,它们是有不少相似之处的。龙芯2借鉴、集成了大多数现代处理器的典性架构设计。需要特别说明的一点是,一般的RISC用Big-Endian架构比较多,所有的x86处理器都是Little-Endian架构。Big-Endian和Little-Eendian这两个术语来自Jonathan Swift在十八世纪的嘲讽作品《Gulliver's Travels》(《格列佛游记》),书中Blefuscu帝国的国民被根据吃鸡蛋的方式划分为两个部分:一部分在吃鸡蛋的时候从鸡蛋的大端(big end)开始,而另一部分则从鸡蛋的小端(little end)开始,并因意见不同而引发了六次内战。我们一般将endian翻译成“字节序”,将big-endian和little-endian称作“大尾”和“小尾”。
大尾和小尾有什么用呢?在设计计算机系统的时候,有两种处理内存中数据的方法。叫作little-endian小尾段的方法中存放在内存中最低位的数值是来自数据的最右边部分(也就是数据的最低位部分),大尾段则相反。x86的CPU使用的LE被Windows中称为“主机字节序”。网络传输使用BE,因此BE也常被成为“网络字节序”。和一般的RISC处理器不同,MIPS兼容架构同时支持两种字节序,并具备BE和LE的切换指令。龙芯2实现了Little-endian数据架构。