谈到字节序的问题,必然涉及CPU的架构。CPU从架构上区分,有x86、x86-64、IA-64等;从指令集上区分,有CISC、RISC等。
CPU的架构
x86架构
x86又称IA32,即Intel Architecture 32(Intel 32位架构)。它是Intel为其第一块16位CPU(i8086)专门开发的。IBM 1981年推出的世界第一台微机中的CPU——i8088(i8086简化版)使用的也是x86架构。同时计算机中为提高浮点数据处理能力而增加了x87芯片,以后就将x86指令集和x87指令集统称为x86架构。
虽然随着CPU技术的不断发展,Intel陆续研制出更新型的i80386、i80486、Pentium系列及至强系列CPU,但为了保证计算机能继续运行以往开发的各类应用程序以保护和继承丰富的软件资源,所以Intel公司所生产的所有CPU仍然继续使用x86架构,所以它的CPU仍属于x86系列。由于Intel x86系列及其兼容CPU(如AMD、VIA/Cyrix等)都使用x86架构,所以就形成了今天庞大的x86系列及兼容CPU阵容。
目前基本上所有x86架构的CPU对数据的处理,都采用Little-endian字节序。
x86-64架构
x86-64架构是由AMD公司设计的,也称为AMD 64。它可以在同一时间内处理64位的整数运算,并兼容于x86-32架构。其中支持64位逻辑定址,同时提供转换为32位定址选项;但数据操作指令默认为32位和8位,提供转换成64位和16位的选项;支持常规用途寄存器,如果是32位运算操作,就要将结果扩展成完整的64位。这样,指令中有“直接执行”和“转换执行”的区别,其指令字段是8位或32位,可以避免字段过长。
x86-64架构的CPU对数据的处理,也采用Little-endian字节序。
IA-64架构
IA-64架构是Intel为了全面提高以前IA-32处理器的运算性能,和HP公司共同开发了6年的64位CPU架构,是专为服务器市场开发的一种全新的处理器。它放弃了以前的x86架构,认为它严重阻碍了处理器的性能提高。
IA-64架构的最初应用是英特尔的Itanium(安腾)系列服务器处理器,后来的Itanium 2系列处理器也采用这一架构。由于它不能很好地解决与以前32位应用程序的兼容,所以应用受到较大的限制,尽管目前Intel采取了各种软、硬方法来弥补这一不足,但随着AMD x86-64架构处理器的全面投入,Intel的IA-64架构的这两款处理器前景不容乐观。
IA-64架构的CPU对数据的处理,字节序是可配置的,既可以采用Little-endian,也可以采用Big-endian。
CPU的指令集
CISC指令集
CISC指令集,也称为复杂指令集,是“Complex Instruction Set Computer”的缩写。
在CISC微处理器中,程序的各条指令是按顺序串行执行的,每条指令中的各个操作也是按顺序串行执行的。顺序执行的优点是控制简单,但计算机各部分的利用率不高,执行速度慢。
Intel生产的x86架构(也就是IA-32架构)CPU及其兼容如AMD、VIA等CPU,都属于CISC指令集的范畴。
CISC指令集的CPU对数据的处理,基本上都采用Little-endian字节序。
RISC指令集
RISC是英文“Reduced Instruction Set Computer”的缩写,中文意思是“精简指令集”。
RISC是在CISC指令集基础上发展起来的。有人对CISC机进行测试表明,各种指令的使用频度相当悬殊,最常使用的是一些比较简单的指令,它们仅占指令总数的20%,但在程序中出现的频度却占80%。复杂的指令系统必然增加微处理器的复杂性,使处理器的研制时间长,成本高。并且复杂指令需要复杂的操作,必然会降低计算机的速度。基于上述原因,20世纪80年代RISC指令集CPU诞生了。相对于CISC指令集CPU,RISC的CPU不仅精简了指令系统,还采用了一种叫作“超标量和超流水线结构”,大大增加了并行处理能力。
RISC指令集是高性能CPU的发展方向,相比而言,RISC的指令格式统一,种类比较少,寻址方式也比复杂指令集少,当然处理速度就提高很多了。目前在中高档服务器中普遍采用这一指令系统的CPU,特别是高档服务器几乎全都采用RISC指令集的CPU。RISC指令集CPU与Intel和AMD的CISC指令集CPU在软件和硬件上都不兼容。
目前,在中高档服务器中采用RISC指令的CPU主要有PowerPC处理器、SPARC处理器、PA-RISC处理器、MIPS处理器、Alpha处理器等。
RISC指令集的CPU对数据的处理,大部分都采用Big-endian字节序。