龙芯2/Nehalem处理器架构深度对比分析(4)
IT168 发表于:09年06月23日 13:28 [转载] IT168
发射
所有指令都在Reservation Station中等待执行,龙芯2可以Issue发射最多5条已准备好参数的指令到5个功能单元,而Nehalem则具有6个功能单元。虽然如此,然而每一个Reservation Station每时钟周期只能接受4条指令--而唯一的分发器每时钟周期只能分发出4条指令,因此龙芯2是四发射的处理器。Nehalem也是如此。
现代RISC(类RISC)架构都使用了独立的Load/Store指令来进行内存访问操作,现代x86处理器也是这样。然而MIPS架构具有一些特别的指令需要保持顺序(如CP0等指令),因此MIPS处理器需要在乱序引擎中实现需要的顺序执行功能。和MIPS R10000不同具有的一个独立的In-Order顺序内存操作保留站不同,Nehalem的内存操作使用了统一的保留站,而龙芯2则将内存访问指令发射到整数运算保留站(Fixed RS),它在内部实现了两种顺序关系:wait issue和stall issue,等待发射和堵塞发射。只有特别的指令会具有这两种状态。
Nehalem: Reservation Station &Load/Store Unit
Register Read
读寄存器
Godson-2
龙芯2具有两个物理寄存器文件:浮点和整数,大小均为64 x 64(64个GPR),发射的指令需要先从寄存器文件读取所需要的参数才能进入执行单元。整数寄存器文件具有6个读取端口和3个写入端口,浮点寄存器文件具有5个读取端口和3个写入端口:因为内存存取指令也使用整数运算保留站,龙芯2拥有一个内存存取单元,同时占用整数/浮点寄存器文件的2个读取端口和1个写入端口,整数和浮点单元分别两个,每个占用对应寄存器文件的2个读取端口和1个写入端口(读取总是要比写入频繁)。在以往,Pentium 4上内存存取操作也部分地由整数单元完成,现在的Nehalem则具有独立的内存操作单元。Intel的浮点和整数寄存器都是用一个寄存器文件,而AMD K8则和龙芯2一样使用分开的寄存器文件。
Nehalem: Reservation Station &Load/Store Unit