处理器的大脑读取CPU指令集。

处理器的大脑读取CPU指令集。
当我们对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

它完全取代了复杂的指令串,大大提高了动态预测(运动估计)和差分编码的计算速度。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部