一、指令架构分类

1、RISC(reduced instruction set computer,精简指令集计算机)

  RISC是一种执行较少类型计算机指令的微处理器。这里的计算机指令系统指的是计算机的最低层的机器指令,也就是CPU能够直接识别的指令。

  因为计算机执行每个指令类型都需要额外的晶体管和电路元件,计算机指令集越大就会使微处理器更复杂,执行操作也会更慢。RISC能够以更快的速度执行操作(每秒执行更多百万条指令,即MIPS)。

  纽约约克镇IBM研究中心的John Cocke证明,计算机中约20%的指令承担了80%的工作,于1974年,他提出RISC的概念。第一台得益于这个发现的电脑是1980年IBM的PC/XT。再后来,IBM的RISC System/6000也使用了这个思想。RISC这个概念还被用在Sun公司的SPARC微处理器中,并促成了现在所谓的MIPS技术的建立,它是Silicon Graphics的一部分。

  RISC芯片的工作频率一般在400MHZ数量级。时钟频率低,功率消耗少,温升也少,机器不易发生故障和老化,提高了系统的可靠性。单一指令周期容纳多部并行操作。

  RISC体系多用于非x86阵营的高性能微处理器CPU。像HOLTEK MCU系列等。 ARM ( Advanced RISC Machines )体系结构目前被公认为是业界领先的32 位嵌入式RISC 微处理器结构。微软公司于2011年宣布,下一版Windows(Windows 8)将正式支持ARM处理器。2012年10月AMD宣布将会设计基于64-bit ARM架构的处理器。

 

2、CISC(ComplexInstructionSetComputer,复杂指令系统计算机)

  CISC指令由完成任务的多个步骤所组成,把数值传送进寄存器或进行相加运算。这些指令被称为微理器的微代码(microcode),不同制造商的微处理器有不同的微代码系统,制造商可按自己的意愿使微代码做得简单或复杂。指令系统越丰富,微处理器编程就越简单,然而,执行速度也相应越慢。

  一般CISC计算机所含的指令数目至少300条以上,有的甚至超过500条,庞大的指令系统使得控制器十分复杂,占用了大量CPU芯片面积。可是有些复杂指令又用得很少,难以用优化编译生成高效目标代码。处理器的执行效率不高,指令系统与软件之间语义差别越来越大,软件设计任务十分繁重,整个设计风格不是十分经济有效的。 

  Intel公司的X86系列CPU是典型的CISC体系的结构,从最初的8086到后来的Pentium系列,每出一代新的CPU,都会有自己新的指令,而为了兼容以前的CPU平台上的软件,旧的CPU的指令集又必须保留,这就使指令的解码系统越来越复杂。

 

3、比较 RISC 和 CISC 

  RISC 和CISC 是目前设计制造微处理器的两种典型技术,虽然它们都是试图在体系结构、操作运行、软件硬件、编译时间和运行时间等诸多因素中做出某种平衡,以求达到高效的目的,但采用的方法不同,因此,在很多方面差异很大,它们主要有:

(1) 指令系统

  RISC 设计者把主要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对不常用的功能,常通过组合指令来完成。因此,在RISC 机器上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进和弥补。而CISC 计算机的指令系统比较丰富,有专用指令来完成特定的功能。因此,处理特殊任务效率较高。

(2) 存储器操作

  RISC 对存储器操作有限制,使控制简单化;而CISC 机器的存储器操作指令多,操作直接。

(3) 程序

  RISC 汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计;而CISC 汇编语言程序编程相对简单,科学计算及复杂操作的程序设计相对容易,效率较高。

(4) 中断

  RISC 机器在一条指令执行的适当地方可以响应中断;而CISC 机器是在一条指令执行结束后响应中断。

(5) CPU

  RISC CPU 包含有较少的单元电路,因而面积小、功耗低;而CISC CPU 包含有丰富的电路单元,因而功能强、面积大、功耗大。

(6) 设计周期

  RISC 微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技术;CISC 微处理器结构复杂,设计周期长。

(7) 用户使用

  RISC 微处理器结构简单,指令规整,性能容易把握,易学易用;CISC微处理器结构复杂,功能强大,实现特殊功能容易。

(8) 应用范围

  由于RISC 指令系统的确定与特定的应用领域有关,故RISC 机器更适合于专用机;而CISC 机器则更适合于通用机。

 

4. VLIW(Very Long Instruction Word,超长指令集架构)

  VLIW是美国Multiflow和Cydrome公司于20世纪80年代设计的体系结构,现在主要应用于Trimedia(全美达)公司的Crusoe和Efficeon系列处理器中。AMD最新的的Athlon 64处理器系列也是采用这一指令系统,包括其服务器处理器版本Operon。

  VLIW体系结构采用多个独立的功能部件,每一个指令周期在没有相关存在并符合硬件条件的情况下可以同时流出多条指令,可同时流出的操作类型与数目是确定的,所以指令调度是由编译器静态调度完成(在其它方法中均由硬件实现的)以减少硬件开销,因此指令可同时流出的最大数目越大,超长指令字的性能优势就越明显。但是,只要是并行处理,就一定会受到更多相关性的限制。这种相关是有程序本身造成的,分为控制相关和数据相关两种,指令在调度时,必须遵循它们之间的依赖关系,防止冲突发生。

  优点:简化了处理器的结构,删除了处理器内部许多复杂的控制电路,这些电路通常是超标量芯片(CISC和RISC)协调并行工作时必须使用的,VLIW的结构简单,也能够使其芯片制造成本降低,价格低廉,能耗少,而且性能也要比超标量芯片高得多。VLIW是简化处理器的最新途径,VLIW芯片无需超标量芯片在运行时间协调并行执行时所必须使用的许多复杂的控制电路。而是将许多这类负担交给了编译器去承担。

  缺点:基于VLIW指令集字的CPU芯片使得程序变得很大,需要更多的内存。更重要的是编译器必须更聪明,一个低劣的VLIW编译器对性能造成的负面影响远比一个低劣的RISC或CISC编译器造成的影响要大。目前基于这种指令架构的微处理器主要有Intel的IA64和AMD64两种。

  Intel最新的IA64架构中的EPIC(Explicitly Parallel Instruction Code,清晰并行指令计算)也是从VLIW指令系统中分离出来的。每时钟周期可运行20条指令,而CISC通常只能运行1-3条指令,RISC能运行4条指令,理论上VLIW要比CISC和RISC强大的多。

 

5、X86与X64指令集

(1)X86

  X86是一个指令集,由英特尔公司推出的兼容i386的32位指令集。也称为IA-32(Intel Architecture, 32-bit),或x86-32或是x86。首次应用在Intel 80386芯片中。之前还有x86 16位架构(x86-16),包括8086、80186与80286芯片。

 

(2)X64

  AMD公司在1999年设计了新的架构,在IA-32上新增了64位寄存器,并兼容早期的16位和32位软件,此指令集称为“x86-64”,也称为 AMD64。可使现有以x86为对象的编译器容易转为AMD64版本。AMD的K8系列(2003年起)微处理器使用了这一架构。

  AMD64产品已经进入市场,且微软不愿意为Intel和AMD开发两套不同的64位操作系统,Intel被迫兼容此架构,但增加某些新的扩充后称为Intel64,官方名称为Intel EM64T(Extended Memory 64 Tenchnology)。

  由于AMD64和Intel64基本上一致,很多软硬件产品都使用一种不倾向任何一方的词汇来表明它们对两种架构的同时兼容,因此简称为“x64”。

 

(3)IA64

  IA-64是Intel在Itanium(安腾)处理器上使用了自家的64位技术,最初由Intel和HP于1990年联合推出。IA-64与Intel 64不兼容,即IA-64的软件不能直接在Intel 64上运行。因为Intel64是IA-32指令集的延伸,而IA-64则是另一款独立的架构,没有任何IA-32的影子。

  Intel和HP于2000年推出基于IA64架构的安腾处理器。2003年6月第二代安腾芯片的推出,HP开始设立IA-64产品的年历,将2004年定为“安腾应用元年”。2012年11月推出的Itanium 9500系列是英特尔有史以来最为复杂的通用处理器,基于新的架构设计,采用32nm工艺制造,集成31亿个晶体管,核心数量最多8个,整合缓存容量最多54MB,四路配置支持最多2TB低电压内存,而且热设计功耗降至170W,待机功耗降低最多80%,频率从最高1.73GHz大幅提高到了2.53GHz,带宽从4.8GT/s提升到6.4GT/s,并继续支持超线程、动态加速技术。

 

(4)微软的支持态度

  2003年10月,微软推出了支持AMD 64的Windows Server 2003 for 64-bit Extended Systems测试版。将提供“Standard”版和“Enterprise”版。

  同时微软还披露,面向Itanium 64bit处理器的Windows Server 2003 for 64-bit 将提供新的“Standard”版。目前在该操作系统中,只有“Enterprise”版和“Datacenter”版支持Itanium。 
  2010年4月,微软官方博客网站称,新版Windows Server OS 将不再支持英特尔的Itanium 处理器。“Windows Server 2008 R2将是支持安腾的最后一个Windows Server版本,SQL Server 2008 R2和Visual Studio 2010将分别是支持安腾的最后一个数据库和开发工具版本。”

 

 

二、CPU的位数

1、4位微处理器

  1971年1月,Intel 研制成功世界上第一枚4位微处理器芯片Intel 4004,标志着第一代微处理器问世。4004当时只有2300个晶体管,时钟频率在108KHz,每秒执行6万条指令(0.06 MIPs)。功能比较弱,且计算速度较慢,只能用在Busicom计算器上。


2、8位微处理器

  1972年4月,Intel 开发出第一个8位微处理器Intel 8008。由于8008采用的是P沟道MOS微处理器,因此仍属第一代微处理器。

  1973年8月,Intel 研制出8位微处理器Intel 8080,以N沟道MOS电路取代了P沟道,第二代微处理器就此诞生。主频2MHz的8080芯片运算速度比8008快10倍,可存取64KB存储器,使用了基于6微米技术的6000个晶体管,处理速度为0.64MIPS。

 

3、16位微处理器

  1979年,Intel公司开发出16位微处理器Intel 8086/8088系列。芯片上有2.9万个晶体管,采用 HMOS工艺制造,用单一的+5V电源,时钟频率为5MHz~10MHz。8086有16根数据线和20根地址线,它既能处理16位数据,也能处理8位数据。可寻址的内存空间为1MB。8088可称为准16位微处理器,它的内部寄存器,运算部件及内部数据总线都是按16位设计的,单外部数据总线只有8条。推出8086的主要目的是为了与当时已有的一套Inter外部设备接口芯片直接兼容使用。

  1981年11月12日,IBM发布IBM PC,使用8088微处理器,并搭配MS-DOS 1.0(IBM获得授权,将其改编为PC DOS),从而开创了全新的微机时代。

  不久Intel公司就开始对8086/8088进行改进。他们将更多功能集成在芯片上,这样就诞生了80186和80188。这两款微处理器内部均以16位工作,在外部输入输出上80186采用16位,而80188和8088一样是采用8位工作。

  Intel公司于1982年推出80286芯片,该芯片相比8086和8088有了飞跃式发展,虽然它仍是16位结构,但在CPU内部含有13.4万个晶体管,时钟频率由最初6MHz逐步提高到20MHz。内部和外部数据总线皆为16位,地址总线24位,可寻址16MB内存。

 

4、32位微处理器

  Intel于1985年推出的80386芯片,它是80x86系列中的第一种32位微处理器,而且制造工艺也有了很大的进步,80386内部内含27.5万个晶体管,时钟频率为12.5MHz,后提高到20MHz,25MHz,33MHz。80386的内部和外部数据总线都是32位,地址总线也是32位,可寻址高达4GB内存。它除具有实模式和保护模式外,还增加了一种叫虚拟86的工作方式,可以通过同时模拟多个80x86处理器来提供多任务能力。

  Intel公司1989年推出的80486芯片。它采用了1微米制造工艺,内部集成了120万个晶体管。内外部数据总线是32位,地址总线为32位,可寻址4GB的存储空间,支持虚拟存储管理技术,虚拟存储空间为64TB。片内集成有浮点运算部件和8KB的cache(L1 cache),同时也支持外部cache(L2 cache)。整数处理部件采用精简指令集RISC结构,提高了指令的执行速度。此外,80486微处理器还引进了时钟倍频技术和新的内部总线结构,从而使主频可以超出100MHz。

  Pentium是英特尔的第五代x86架构之微处理器,于1993年3月22日开始出货,是486产品线的后代。PENTIUM的内部含有的晶体管数量高达310万个,时钟频率由最初推出的60MHZ和66MHZ,后提高到200MHZ。

 

5、64位微处理器

  2005年2月Intel公司宣布推出五款全新台式机处理器,这五款新处理器均采用英特尔64位扩展技术(Intel EM64T)来支持64位内存寻址能力。这些新处理器将支持即将推出的Windows XP Professional x64 版操作系统,并使用户体验到64位计算的强大优势。 

六、CPU优化(1)CPU技术分类_PTO

  在上图中,黑色块表示代码,白色块表示数据,而灰色块表示结果。 

  Itanium微处理器是Intel公司于2001年5月推出的,它是Intel公司和HP公司合作开发的IA-64(Intel Architecture-64)架构系列中的第一款通用64位微处理器,它采用0.18μm技术,主频为800MHz。2002年7月,Intel公司推出了第二代64位微处理器-Itanium2,它还是采用0.18μm技术,首次将Ll、L2和L3 Cache都集成到芯片内,共集成了大约2.2亿个晶体管,主频为1GHz。2003年6月,Intel公司又推出了新一代Itanium2产品-Madison,它采用0.13μm技术,共集成4.1亿个晶体管,主频达到了1.5GHz。

 

 

三、兼容性

  能够支持SQL Server 的CPU 架构有X86、X64、IA64。SQL Server 可以运行在32位、64位的Windows 操作系统上。

  SQL Server 4.2 for Windows NT 最早是运行在Windows NT 3.1 X86版本上。

  2003年4月,SQL Server 2000 企业版(X64)发布,可运行在 Windows Server 2003 X64 版本上。SQL Server 2000 sp4 64 位官方下载组件中包含一个文件 SQL2000-KB884525-SP4-ia64.EXE,适用于IA64操作系统。

  但SQL Server 2012 放弃支持IA64 架构。

 

  可以通过以下兼容方式运行不同架构的应用程序。

(1)WOW64

  WOW64 (Windows-on-Windows 64-bit)是一个Windows操作系统的子系统,它为现有的 32 位应用程序提供了 32 位的模拟,可以使大多数 32 位应用程序在无需修改的情况下运行在 Windows 64 位版本上。在32位的Windows 2000/20032008还有一个 WOW32 子系统,负责在 Windows 32 位版本下运行 16 位的代码。

  注意:WOW64并不是为要求高性能的应用程序而设计的,仅仅是为了满足兼容性的要求。如果对性能有要求,应当将应用程序迁移到64位。

  X86(32位)程序安装在X64操作系统时,默认的安装路径是C:\Program Files (x86),系统程序放在C:\Windows\System32,注册表也有独立的WOW64的分支。

 

(2)IA64  

  EPIC是英特尔的64位芯片架构,本身不能执行x86指令,但能通过译码器(模拟器)来兼容现有的x86指令,只是运算速度比真正的32位芯片有所下降(可能会严重下降)。

 

四、X64平台的优势

  在CPU上,32/64位指的是它的位宽,表示CPU一次可以处理32位或64位的指令,理论上位宽越大的CPU,运算能力就越强。当然,只有硬件不行,还需要相应的软件来支持才能发挥硬件的性能,于是便有了32位和64位的操作系统与软件。

  推荐在x64的Windows操作系统安装x64版本的SQL Server。官方的《SQL Server 2005 64位平台的优势》一文列举了64位架构的主要优势,利用这些架构上的优势,SQL Server 2005 (64位)能够处理大规模复杂的查询工作,巩固许多数据库应用程序,并且毫不费力的做出调整,以适合日益增长的处理和当今IT环境的性能需求。

(1)内存寻址能力

  一个32位的系统只能直接寻址4GB的地址空间。在32位平台中,4GB以上的附加内存是通过Address Windowing Extensions (AWE)间接访问到的,在后面的文章中会详细讨论。

(2)大量处理器以及每个处理器更多的线性可伸缩性

  在并行处理和总线架构方面的提高,使64位平台支持大量处理器(最多64个,超过64个的情形将在后面有详细讨论),使每附加一个处理器,几乎能获得线性的可伸缩性。使用大量处理器,使SQL Server可以在一个系统中支持更多的进程、应用程序和用户。SQL Server在64位系统上已经达到了最高的TPC-C基准测试,因为这些系统依靠大量的内存和64位架构上的64位处理器的优良的伸缩性。

(3)增强的总线架构

  当前的64位芯片的总线结构比早期的芯片更快。更多的数据传向缓存和处理器,这有一点类似于从拨号连接到宽带连接的提高。

 

 

本文结语:

  推荐X64处理器架构。