「一枚小小教书匠」就没人敢忽悠你了(二),电脑弄懂关于CPU的这些知识( 二 )


IA-64微处理器最大的缺陷是它们缺乏与x86的兼容 , 而Intel为了IA-64处理器能够更好地运行两个朝代的软件 , 它在IA-64处理器上(Itanium、Itanium2……)引入了x86-to-IA-64的解码器 , 这样就能够把x86指令翻译为IA-64指令 。 这个解码器并不是最有效率的解码器 , 也不是运行x86代码的最好途径(最好的途径是直接在x86处理器上运行x86代码) , 因此Itanium和Itanium2在运行x86应用程序时候的性能非常糟糕 。 这也成为X86-64产生的根本原因 。
【「一枚小小教书匠」就没人敢忽悠你了(二),电脑弄懂关于CPU的这些知识】(4)X86-64(AMD64/EM64T)
AMD公司设计 , 可以在同一时间内处理64位的整数运算 , 并兼容于X86-32架构 。 其中支持64位逻辑定址 , 同时提供转换为32位定址选项;但数据操作指令默认为32位和8位 , 提供转换成64位和16位的选项;支持常规用途寄存器 , 如果是32位运算操作 , 就要将结果扩展成完整的64位 。 这样 , 指令中有“直接执行”和“转换执行”的区别 , 其指令字段是8位或32位 , 可以避免字段过长 。
x86-64(也叫AMD64)的产生也并非空穴来风 , x86处理器的32bit寻址空间限制在4GB内存 , 而IA-64的处理器又不能兼容x86 。 AMD充分考虑顾客的需求 , 加强x86指令集的功能 , 使这套指令集可同时支持64位的运算模式 , 因此AMD把它们的结构称之为x86-64 。 在技术上AMD在x86-64架构中为了进行64位运算 , AMD为其引入了新增了R8-R15通用寄存器作为原有X86处理器寄存器的扩充 , 但在而在32位环境下并不完全使用到这些寄存器 。 原来的寄存器诸如EAX、EBX也由32位扩张至64位 。 在SSE单元中新加入了8个新寄存器以提供对SSE2的支持 。 寄存器数量的增加将带来性能的提升 。 与此同时 , 为了同时支持32和64位代码及寄存器 , x86-64架构允许处理器工作在以下两种模式:LongMode(长模式)和LegacyMode(遗传模式) , Long模式又分为两种子模式(64bit模式和Compatibilitymode兼容模式) 。 该标准已经被引进在AMD服务器处理器中的Opteron处理器 。
而今年也推出了支持64位的EM64T技术 , 在还没被正式命为EM64T之前是IA32E , 这是英特尔64位扩展技术的名字,用来区别X86指令集 。 Intel的EM64T支持64位sub-mode , 和AMD的X86-64技术类似 , 采用64位的线性平面寻址 , 加入8个新的通用寄存器(GPRs) , 还增加8个寄存器支持SSE指令 。 与AMD相类似 , Intel的64位技术将兼容IA32和IA32E , 只有在运行64位操作系统下的时候 , 才将会采用IA32E 。 IA32E将由2个sub-mode组成:64位sub-mode和32位sub-mode , 同AMD64一样是向下兼容的 。 Intel的EM64T将完全兼容AMD的X86-64技术 。 现在Nocona处理器已经加入了一些64位技术 , Intel的Pentium4E处理器也支持64位技术 。
应该说 , 这两者都是兼容x86指令集的64位微处理器架构 , 但EM64T与AMD64还是有一些不一样的地方 , AMD64处理器中的NX位在Intel的处理器中将没有提供 。
「一枚小小教书匠」就没人敢忽悠你了(二),电脑弄懂关于CPU的这些知识
文章图片
11.超流水线与超标量
在解释超流水线与超标量前 , 先了解流水线(pipeline) 。 流水线是Intel首次在486芯片中开始使用的 。 流水线的工作方式就象工业生产上的装配流水线 。 在CPU中由5—6个不同功能的电路单元组成一条指令处理流水线 , 然后将一条X86指令分成5—6步后再由这些电路单元分别执行 , 这样就能实现在一个CPU时钟周期完成一条指令 , 因此提高CPU的运算速度 。 经典奔腾每条整数流水线都分为四级流水 , 即指令预取、译码、执行、写回结果 , 浮点流水又分为八级流水 。
超标量是通过内置多条流水线来同时执行多个处理器 , 其实质是以空间换取时间 。 而超流水线是通过细化流水、提高主频 , 使得在一个机器周期内完成一个甚至多个操作 , 其实质是以时间换取空间 。 例如Pentium4的流水线就长达20级 。 将流水线设计的步(级)越长 , 其完成一条指令的速度越快 , 因此才能适应工作主频更高的CPU 。 但是流水线过长也带来了一定副作用 , 很可能会出现主频较高的CPU实际运算速度较低的现象 , Intel的奔腾4就出现了这种情况 , 虽然它的主频可以高达1.4G以上 , 但其运算性能却远远比不上AMD1.2G的速龙甚至奔腾III 。


推荐阅读