当我们对CPU有一个全面的了解后,让我们看看大多数人都错过了什么。很多人通常从
处理器的体系结构入手,看看处理器采用了什么架构,与前一代或CPU的竞争对手相比,体系结构有什么改进或优点呢。
其次,看看CPU的
频率与处理器相同的等级是高还是低,
默认的高频率的处理器通常是用来更好的晶圆制造,稳定性好,再次看到处理器缓存容量的多少(尤其是英特尔处理器的缓存非常依赖),作为处理器和缓存中的缓存数据之间的桥梁,起到缓冲
作用。
对处理器的全面理解
最后,我们需要看到处理器使用的过程。一般工艺越先进,热值越低,超级产品越好。能源使用者将更多地关注处理器的
功耗,那么这些
参数会遗漏什么呢
事实上,我们会突然意识到处理器有一组指令,处理器本身并不是在
硬件电路内部计算的,必须依靠指令来计算和
控制系统。
CPU指令集是必不可少的
在一系列的指令系统和时间每个CPU设计的内部电路的发展,从具体的应用中,我们可以看到在许多CPU有MMX(多媒体
扩展)、SSE(Streaming SIMD Extensions),SSE2,SSE3,ssse3,SSE4(分为SSE4.1和sse4.2两代AMD,sse4a包括SSE4,这个后面会提到),除了AMD的3D Now!系列。
这些指令集极大地提高了CPU的多媒体、图形图像和互联网的处理能力,让我们一一了解。
MMX多媒体
性能增强
MMX(多媒体扩展,多媒体扩展指令集)指令集是由英特尔在1996推出的,主要用于多媒体教学增强。
MMX指令集包括57个多媒体指令。这些指令可以一次处理多个数据,也可以处理时的处理结果超过实际处理能力。MMX的好处是,
操作系统的存在,当时并没有为此做出任何改变,可以很容易地
执行MMX
程序。
8
支持MMX MMX寄存器的处理器,每64位容量(8byte)。MMX只支持整数
运算,支持1 / 2 / 4 / 8字节数据。也就是说,一个MMX登记可以存储8 / 4 / 2 / 1操作。这引起集和x87浮点指令不能同时执行MMX指令,必须交错密集可以
正确执行,它将不可避免地导致整个系统
运行质量的下降。目前,AMD和英特尔处理器支持这个指令集。
3D Now!加速三维渲染
3dnow!指令集是由AMD提出并广泛应用于其K6-2、K6-3和Athlon(K7)processors.3dnow!这是在后面提到的SSE非常相似,但也有一些差异。它有8个新的寄存器,但它是64位的,不128-bit.in这种方式,它只能存储两个浮点数据,而不是四。
K6处理器开始有一个三维的现在!指令集
3dnow!可以执行的操作:加法/乘法/除法计算,精确的分割root.3dnow或近似!指令集技术实际上是一系列扩展的21机codes.3dnow指令!指令集主要应用于三维建模、坐标变换和效果渲染等三个方面。软件的配合下,3D处理性能可以大大提高。后来,增强了对3dnow速龙!
加速多媒体应用处理
SSE SIMD流指令扩展完成,为SIMD扩展流的
中文名字,英文全称是SIMD单指令多数据(SIMD),即一条指令可以执行多个operations.sse是一组扩展的
设置提供处理器浮点性能的指令。
SSE指令集包括70条指令,其中包括一个单指令多数据浮点运算,和额外的SIMD整数和高速缓存控制指令的优点包括:更高分辨率的图像
浏览和处理、高质量
音频、MPEG2
视频,和MPEG2的加密和解密。语音
识别占用较少的CPU资源,具有较高的准确率和较快的响应
速度。
SSE指令和3DNow!说明彼此不相容,但所包含3dnow!对技术能力的绝大多数,只有implementation.sse兼容MMX指令的不同
方法,可以有效地
并行处理多个浮点数据通过SIMD单时钟周期提高浮点运算速度。
SSE(流式SIMD扩展)是英特尔在AMD的3D现在!一年的释放后,
介绍了
计算机芯片奔腾III处理器的指令集是mmx.amd超集后来添加的这套在Athlon XP指令的支持。这个指令集增加了8个128位寄存器,支持xmm0-xmm7,每个登记可存储4个单精度浮点数,使用这些寄存器的程序。必须使用fxsave和fxrstr指令来保持和
恢复状态。但是在奔腾III上实现浮点登记是由新的指令集再次占领,但这一次切换操作
模式是没有必要的,但SSE浮点指令不能进入CPU处理线同时。
SSE2更准确处理浮点数
SSE2是英特尔的3dnow +指令集处理AMD。基于SSE、SSE2指令已经开发,有的已被添加,使处理器的性能得到了很大的提高。
首先介绍了在奔腾4处理器的原始版本,AMD后来加入SSE2支持Opteron和Athlon 64处理器的P4设计的最后,英特尔增加了一个集SSE2指令集,包括144个新的instructions.sse2涉及一个单一的指令立即执行(SIMD)在多个数据
目标。最重要的是,SSE2可以处理128、2倍精度浮点数学运算。
The ability to deal with more accurate floating-point numbers makes SSE2 a basic configuration for accelerating multimedia programs, 3D processing projects, and workstation type tasks.
的SSE2指令集增加了对64位双精度浮点数的支持,以及对整型数据的支持,也就是说,在这个指令集MMX指令
都是多余的,同时,也避免了占用浮点数寄存器,指令集也增加了控制指令的CPU快fetch.amd添加8个XMM寄存器的扩展,但你需要切换到64位模式(AMD64)使用这些寄存器。后来英特尔增加在其EM64T架构AMD64支持。
u2022 SSE3提升五的应用
SSE3指令集的最小指令集。此前,MMX包含57个
命令,所包含的50个命令,SSE2包含144个命令,并且还包含13个命令。此外,英特尔SSE3指令集的损伤是一个额外的扩展,这是ssse3,它始建于Core 2 Duo处理器。
的SSE3指令集分为5个层次:第一层次是应用数据
传输;只有一个指令:fisttp,为X87浮点被
转换成整数,并可以大大提高
优化的效率。第二层是数据处理共五指令addsubps,addsubpd,movshdup,movsldup,movddup。这些指令可以简化复杂数据的处理。因为未来的数据处理量将越来越大,所以指令由英特尔设置为最大,达到五。第三层是特殊处理;只有一个:lddqu。这个指令集中在视频解码,这是用来提高处理媒体数据的结果处理器的精度。第四个层次是是优化;有四条指令,即haddps,hsubps,haddpd和hsubpd,它可以自动优化程序,并用于处理3D图形非常有用。第五个层次是超
线程性能增强了有螺纹的加工两个指令:监控,mwait,这有助于提高加工能力英特尔超线程的特性,大大简化了超线程的数据处理过程。
SSE4.1,提高视频处理
SSE4.1,是47新的多媒体指令集,增加了英特尔Penryn
核心的Core 2 Duo处理器核心2独奏。它是用于提高视频
编辑的应用。此外,AMD
公司已经开发出了自己的sse4a多媒体指令集,这是建立在现象和Opteron K10架构的处理器,但相关的
应用程序几乎是一样的,它不能兼容英特尔的SSE4系列指令集。
众所周知,在视频编码中,我们需要做的动态预测(运动估计)和差分编码去除2相邻图像之间的相关性,这是一个非常复杂的
工作。在一个SSE4指令集的
情况下,完成一个
步骤需要以下指令语句:
为(int moveblock = 0;moveblock<16;moveblock + +)
对于(int行= 0;行< 16;行+ +)大的 做16像素4迭代
{
int = i 0;
SUM0 + = ABS(pblock1 { J } - pblock2)+ ABS(pblock1 { 1 } { - pblock2 J +我+ 1 })+ ABS(pblock1 { 2 } { - pblock2 J +我+ 2 })+ ABS(pblock1 { 3 } { - pblock2 J +我+ 3 }); / / 0像素偏移量的比较
语+ = ABS(pblock1 { j + 1 } - pblock2)+ ABS(pblock1 { 2 } { - pblock2 J +我+ 1 })+ ABS(pblock1 { 3 } { - pblock2 J +我+ 2 })+ ABS(pblock1 { 4 } - pblock2 J +我+ 3 } {); / / 1像素偏移量的比较
2 + = ABS(pblock1 { j + 2 } - pblock2)+ ABS(pblock1 { 3 } { - pblock2 J +我+ 1 })+ ABS(pblock1 { 4 } { - pblock2 J +我+ 2 })+ ABS(pblock1 { 5 } - pblock2 J +我+ 3 } {); / / 2像素偏移量的比较
sum3 + = ABS(pblock1 { j + 3 } - pblock2)+ ABS(pblock1 { 4 } { - pblock2 J +我+ 1 })+ ABS(pblock1 { 5 } { - pblock2 J +我+ 2 })+ ABS(pblock1 { 6 } - pblock2 J +我+ 3 } {); / / 3像素偏移量的比较
sum4 + = ABS(pblock1 { j + 4 } - pblock2)+ ABS(pblock1 { 5 } { - pblock2 J +我+ 1 })+ ABS(pblock1 { 6 } { - pblock2 J +我+ 2 })+ ABS(pblock1 { 7 } - pblock2 J +我+ 3 } {); / / 4像素偏移量的比较
sum5 + = ABS(pblock1 { j + 5 } - pblock2)+ ABS(pblock1 { 6 } { - pblock2 J +我+ 1 })+ ABS(pblock1 { 7 } { - pblock2 J +我+ 2 })+ ABS(pblock1 { 8 } - pblock2 J +我+ 3 } {); / / 5像素偏移量的比较
sum6 + = ABS(pblock1 { j + 6 } - pblock2)+ ABS(pblock1 { 7 } { - pblock2 J +我+ 1 })+ ABS(pblock1 { 8 } { - pblock2 J +我+ 2 })+ ABS(pblock1 { 9 } - pblock2 J +我+ 3 } {); / / 6像素偏移量的比较
sum7 + = ABS(pblock1 { j + 7 } - pblock2)+ ABS(pblock1 { 8 } { - pblock2 J +我+ 1 })+ ABS(pblock1 { 9 } { - pblock2 J +我+ 2 })+ ABS(pblock1 { 10 } - pblock2 J +我+ 3 } {); / / 7像素偏移量的比较
我= 4;
J = moveblock + 4;
hellip;
hellip;}
}
大量的指令是非常浪费处理器资源,而只有4的SAD运算指令在一个支持SSE4指令集处理器要求:
mpsadbw xmm0,xmm1,0
它完全取代了复杂的指令串,大大提高了动态预测(运动估计)和差分编码的计算速度。