Intel CPU发展历程和多媒体指令集
PeterLee 2006.08.02 viedosky.9126.com
一、Intel CPU 发展历程
推出时间 | CPU型号 | 技术特点 | 支持的多媒体指令集 | 竞争对手AMD的情况 |
1996年 | Pentium奔腾 或称586 代号P54C | 主频:66-200MHz 接口:socket7 | 无 | K5 |
1996年底 | Pentium MMX 或称 多能奔腾 代号P55C | 同上 | 支持57条MMX指令 | K6 |
1997年5月 | PII | 主频:300-450MHz 接口:slot1 | 支持57条MMX指令 8个64位MMX寄存器 | K6-2 推出3DNow!多媒体指令集 超过PII |
1998年4月 | Celeron赛扬 | 主频:266 MHz起 | 支持MMX
| Duron |
1999年初 | PIII | 0.25微米工艺 主频:450-800MHz 接口:socket370 | 支持MMX 新增支持70条SSE指令 | K6-3 增强型3DNow!
Athlon(K7) 支持MMX,3DNow! |
2000年3月 | Celeron II | 0.18微米工艺 | 支持MMX 支持SSE指令 |
|
2000年11月 | P4 Willamette时期 | 0.18微米工艺 主频:1.3GHz起 接口:socket423 | 支持MMX 支持SSE指令 支持SSE2指令 | Thunderbird 0.18微米工艺 支持MMX, 3DNow!, SSE
|
| Northwood时期 | 0.18微米,90纳米工艺 主频:2.4 GHz起 接口:socket478
| 支持MMX 支持SSE指令 支持SSE2指令 | 2003年秋 Athlon 64 新增支持SSE2, x86-64
|
| Prescott时期 2004年开始 | 0.18微米,90纳米工艺 主频: 接口:LGA775 双核 | 支持MMX 支持SSE指令 支持SSE2指令 支持SSE3指令 支持EM64T指令 | 2005年 K8 新增支持SSE3 |
Plus | 同时期Celeron,Celeron D |
| 支持MMX 支持SSE指令 支持SSE2指令 |
|
2006年1月 | Core 酷睿
| 65纳米工艺 笔记本:Yonah微架构,迅驰3代 | 支持MMX 支持SSE指令 支持SSE2指令 支持SSE3指令 |
|
2006年7月 | Core 2 | 65纳米工艺 NOTE: 代号 台式机:Conroe扣肉 笔记本:Merom 服务器:Woodcrest | 支持MMX 支持SSE指令 支持SSE2指令 支持SSE3指令 支持EM64T指令 支持SSE4指令 |
|
To be continue…
|
|
|
|
|
二、多媒体指令集介绍(转载)
CPU依靠指令来计算和控制系统,每款CPU在设计时就规定了一系列与其硬件电路相配合的指令系统。指令的强弱也是CPU的重要指标,指令集是提高微处理器效率的最有效工具之一。从现阶段的主流体系结构讲,指令集可分为复杂指令集和精简指令集两部分,而从具体运用看,如Intel的MMX(Multi Media Extended)、SSE、 SSE2(Streaming-Single instruction multiple data-Extensions 2)和AMD的3DNow!等都是CPU的扩展指令集,分别增强了CPU的多媒体、图形图象和Internet等的处理能力。我们通常会把CPU的扩展指令集称为"CPU的指令集"。
1 、精简指令集的运用
在最初发明计算机的数十年里,随着计算机功能日趋增大,性能日趋变强,内部元器件也越来越多,指令集日趋复杂,过于冗杂的指令严重的影响了计算机的工作效率。后来经过研究发现,在计算机中,80%程序只用到了20%的指令集,基于这一发现,RISC精简指令集被提了出来,这是计算机系统架构的一次深刻革命。RISC体系结构的基本思路是:抓住CISC指令系统指令种类太多、指令格式不规范、寻址方式太多的缺点,通过减少指令种类、规范指令格式和简化寻址方式,方便处理器内部的并行处理,提高VLSI器件的使用效率,从而大幅度地提高处理器的性能。
RISC指令集有许多特征,其中最重要的有:
指令种类少,指令格式规范:RISC指令集通常只使用一种或少数几种格式。指令长度单一(一般4个字节),并且在字边界上对齐,字段位置、特别是操作码的位置是固定的。
寻址方式简化:几乎所有指令都使用寄存器寻址方式,寻址方式总数一般不超过5个。其他更为复杂的寻址方式,如间接寻址等则由软件利用简单的寻址方式来合成。
大量利用寄存器间操作:RISC指令集中大多数操作都是寄存器到寄存器操作,只以简单的Load和Store操作访问内存。因此,每条指令中访问的内存地址不会超过1个,访问内存的操作不会与算术操作混在一起。
简化处理器结构:使用RISC指令集,可以大大简化处理器的控制器和其他功能单元的设计,不必使用大量专用寄存器,特别是允许以硬件线路来实现指令操作,而不必像CISC处理器那样使用微程序来实现指令操作。因此RISC处理器不必像CISC处理器那样设置微程序控制存储器,就能够快速地直接执行指令。
便于使用VLSI技术:随着LSI和VLSI技术的发展,整个处理器(甚至多个处理器)都可以放在一个芯片上。RISC体系结构可以给设计单芯片处理器带来很多好处,有利于提高性能,简化VLSI芯片的设计和实现。基于VLSI技术,制造RISC处理器要比CISC处理器工作量小得多,成本也低得多。
加强了处理器并行能力:RISC指令集能够非常有效地适合于采用流水线、超流水线和超标量技术,从而实现指令级并行操作,提高处理器的性能。目前常用的处理器内部并行操作技术基本上是基于RISC体系结构发展和走向成熟的。
正由于RISC体系所具有的优势,它在高端系统得到了广泛的应用,而CISC体系则在桌面系统中占据统治地位。而在如今,在桌面领域,RISC也不断渗透,预计未来,RISC将要一统江湖。
2 、CPU 的扩展指令集
对于CPU来说,在基本功能方面,它们的差别并不太大,基本的指令集也都差不多,但是许多厂家为了提升某一方面性能,又开发了扩展指令集,扩展指令集定义了新的数据和指令,能够大大提高某方面数据处理能力,但必需要有软件支持。
MMX 指令集
MMX(Multi Media eXtension,多媒体扩展指令集)指令集是Intel公司于1996年推出的一项多媒体指令增强技术。MMX指令集中包括有57条多媒体指令,通过这些指令可以一次处理多个数据,在处理结果超过实际处理能力的时候也能进行正常处理,这样在软件的配合下,就可以得到更高的性能。MMX的益处在于,当时存在的操作系统不必为此而做出任何修改便可以轻松地执行MMX程序。但是,问题也比较明显,那就是MMX指令集与x87浮点运算指令不能够同时执行,必须做密集式的交错切换才可以正常执行,这种情况就势必造成整个系统运行质量的下降。
SSE 指令集
SSE(Streaming SIMD Extensions,单指令多数据流扩展)指令集是Intel在Pentium III处理器中率先推出的。其实,早在PIII正式推出之前,Intel公司就曾经通过各种渠道公布过所谓的KNI(Katmai New Instruction)指令集,这个指令集也就是SSE指令集的前身,并一度被很多传媒称之为MMX指令集的下一个版本,即MMX2指令集。究其背景,原来"KNI"指令集是Intel公司最早为其下一代芯片命名的指令集名称,而所谓的"MMX2"则完全是硬件评论家们和媒体凭感觉和印象对"KNI"的 评价,Intel公司从未正式发布过关于MMX2的消息。
而最终推出的SSE指令集也就是所谓胜出的"互联网SSE"指令集。SSE指令集包括了70条指令,其中包含提高3D图形运算效率的50条SIMD(单指令多数据技术)浮点运算指令、12条MMX 整数运算增强指令、8条优化内存中连续数据块传输指令。理论上这些指令对目前流行的图像处理、浮点运算、3D运算、视频处理、音频处理等诸多多媒体应用起到全面强化的作用。SSE指令与3DNow!指令彼此互不兼容,但SSE包含了3DNow!技术的绝大部分功能,只是实现的方法不同。SSE兼容MMX指令,它可以通过SIMD和单时钟周期并行处理多个浮点数据来有效地提高浮点运算速度。
在后来Intel为了应对AMD的3Dnow!指令集,又在SSE的基础上开发了SSE2,增加了一些指令,使得其P4处理器性能有大幅度提高。到P4设计结束为止,Intel增加了一套包括144条新建指令的SSE2指令集。像最早的SIMD扩展指令集,SSE2涉及了多重的数据目标上立刻执行一单个的指令(即SIMD,一个计算低工控最好的方法是让每指令执行更多的工作)。最重要的是SSE2能处理128位和两倍精密浮点数学运算。处理更精确浮点数的能力使SSE2成为加速多媒体程序、3D处理工程以及工作站类型任务的基础配置。但重要的是软件是否能适当的优化利用它。
3D Now!(3D no waiting) 指令集
3DNow!是AMD公司开发的SIMD指令集,可以增强浮点和多媒体运算的速度,并被AMD广泛应用于其K6-2 、K6-3以及Athlon(K7)处理器上。3DNow!指令集技术其实就是21条机器码的扩展指令集。
与Intel公司的MMX技术侧重于整数运算有所不同,3DNow!指令集主要针对三维建模、坐标变换 和效果渲染等三维应用场合,在软件的配合下,可以大幅度提高3D处理性能。后来在Athlon上开发了Enhanced 3DNow!。这些AMD标准的SIMD指令和Intel的SSE具有相同效能。因为受到Intel在商业上以及Pentium III成功的影响,软件在支持SSE上比起3DNow!更为普遍。
Enhanced 3DNow!
AMD公司继续增加至52个指令,包含了一些SSE码,因而在针对SSE做最佳化的软件中能获得更好的效能。
SSE3
SSE3是英特尔去年推出Prescott核心处理器时出现的,包含13条指令,是对处理器SIMD能力的补充。处理器有时候会重复处理大量数据和类似操作,大量数据流通过处理器,需要进行的操作则是同一个(特别在音频/视频处理过程)。目前很多显卡核心上都带有SIMD处理单元,用来处理尽快处理大量的顶点、象素数据;CPU中的X87浮点处理部分中也具有这样的专门单元。
SSE3指令集中包括10条针对SIMD的新指令和3条不涉及SSE寄存器的指令:
x87浮点-整数转换指令--fisttp;
复杂算术指令--addsubps, addsubpd, movsldup, movshdup, movddup;
视频编码指令--lddqu;
图形指令--haddps, hsubps, haddpd, hsubpd;
线程同步指令--monitor, mwait
上面给出的13条指令中,浮点-整数转换指令的功能很好理解,但不是所有的指令都这么显而易见。复杂算术指令增加了虚数功能,hadd和hsub指令则是为水平加、减操作准备的。这些指令可以加快顶点阵列中水平存储数据的处理速度。目前SSE3也是最先进的指令集,英特尔Prescott处理器已经支持SSE3指令集,AMD会在未来双核心处理器当中加入对SSE3指令集的支持,全美达的处理器也将支持这一指令集。
EM64T 技术
Intel官方是给EM64T这样定义的:EM64T全称Extended Memory 64 Technology,即扩展64bit内存技术。EM64T是Intel IA-32架构的扩展,即IA-32e(Intel Architectur-32 extension)。IA-32处理器通过附加EM64T技术,便可在兼容IA-32软件的情况下,允许软件利用更多的内存地址空间,并且允许软件进行32 bit线性地址写入。EM64T特别强调的是对32 bit和64 bit的兼容性。Intel为新核心增加了8个64 bit GPRs(R8-R15),并且把原有GRPs全部扩展为64 bit,如前文所述这样可以提高整数运算能力。增加8个128bit SSE寄存器(XMM8-XMM15),是为了增强多媒体性能,包括对SSE、SSE2和SSE3的支持。
Intel为支持EM64T技术的处理器设计了两大模式:传统IA-32模式(legacy IA-32 mode)和IA-32e扩展模式(IA-32e mode)。在支持EM64T技术的处理器内有一个称之为扩展功能激活寄存器(extended feature enable register,IA32_EFER)的部件,其中的Bit10控制着EM64T是否激活。Bit10被称作IA-32e模式有效(IA-32e mode active)或长模式有效(long mode active,LMA)。当LMA=0时,处理器便作为一颗标准的32 bit(IA32)处理器运行在传统IA-32模式;当LMA=1时,EM64T便被激活,处理器会运行在IA-32e扩展模式下。
SSE4
SSE4指令集是在Intel Core2处理器中率先推出的。从Intel Core微架构针对SSE指令所作出的修改被称之为“Intel Advanced Digital Media Boost”技术来看,未来SSE4将更注重针对视频方面的优化,我们认为SSE4主要改进之处可能将针对英特尔的Clear Video高清视频技术及UDI接口规范提供强有力的支持。这两项技术基于965芯片组,Intel的官方把Clear Video技术定义为:支持高级解码、拥有预处理和增强型3D处理能力。
目前AMD方面支持64位技术的CPU有Athlon 64系列、Athlon FX系列和Opteron系列。Intel方面支持64位技术的CPU有使用Nocona核心的Xeon系列、使用Prescott 2M核心的Pentium 4 6系列和使用Prescott 2M核心的P4 EE系列。
参考资料:
http://detail.it168.com/common/shuyuxiangjie/files/searchshuyuxiangjie.asp?ckey=EM64T&imageField2.x=24&imageField2.y=9