一、cpu的TSX的指令集用来做什么的?为什么我的i5 4690k没有这个指令集?
Intel的TSX指令集是针对粗细粒度线程锁定的在多核多线程处理器中,有一个比较明显的问题,就是多线程对某一资源都需要调用的时候,需要仲裁。当一个线程调用该资源时,另一线程就无法调用,如果调用了,就会发生错误。而如今的程序员,为了防止线程争抢,发生错误,都用粗粒度锁定——也就是该线程占用的绝大多数资源,其他线程都不得争抢。这样也导致了一些,本不需锁定的资源,也被锁定了,其他线程利用不了,降低了多核多线程处理器的多线程性能。TSX指令集就是要让程序员或开发工具更方便、准确地进行细粒度锁定,让资源更有效地使用。对于当今的多核处理器,是个好东西。
但是……Intel前不久发现TSX指令集存在Bug,导致其将消费级市场CPU的TSX指令集全部取消,只保留商用Xeon的……所以,早期的CPU-Z截图,是有这个TSX指令的,后面的就没了。
一般对家用影响不大,不用特别担心。
二、CPU指令集的概念和作用?
这里不再进行正式而科学的描述,如果想了解关于“指令集”最专业的权威的定义,你可以去百度百科中搜索了解。
这里简单地打个比方:缺乏某种指令集的CPU,进行相关运算会非常慢甚至无法进行。就好比一个不会乘法口诀的人,想计算“一斤大白菜3块钱,买8斤需要多少钱”这个算数问题,只能掰着手指用加法慢慢算,结果算了半分多钟才出结果。
而拥有了指令集的加持后,就好比掌握了乘法口诀,可以瞬间“三八二十四”给出计算结果。
三、请问CPU的指令集是用来干嘛的?
CPU_多媒体指令集解释
CPU依靠指令来计算和控制系统,每款CPU在设计时就规定了一系列与其硬件电路相配合的指令系统。指令的强弱也是CPU的重要指标,指令集是提高微处理器效率的最有效工具之一。从现阶段的主流体系结构讲,指令集可分为复杂指令集和精简指令集两部分,而从具体运用看,如Intel的MMX(Multi Media Extended)、SSE、 SSE2(Streaming-Single instruction multiple data-Extensions 2)和AMD的3DNow!等都是CPU的扩展指令集,分别增强了CPU的多媒体、图形图象和Internet等的处理能力。我们通常会把CPU的扩展指令集称为"CPU的指令集"。
精简指令集的运用
在最初发明计算机的数十年里,随着计算机功能日趋增大,性能日趋变强,内部元器件也越来越多,指令集日趋复杂,过于冗杂的指令严重的影响了计算机的工作效率。后来经过研究发现,在计算机中,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将要一统江湖。
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运算、视频处理、音频处理等诸多多媒体应用起到全面强化的作用。S SE指令与3DNow!指令彼此互不兼容,但SSE包含了3DNow!技术的绝大部分功能,只是实现的方法不同。SSE兼容MMX指令,它可以通过SIMD和单时钟周期并行处理多个浮点数据来有效地提高浮点运算速度。
SSE2指令集
SSE2(Streaming SIMD Extensions 2,Intel官方称为SIMD 流技术扩展 2或数据流单指令多数据扩展指令集 2)指令集是Intel公司在SSE指令集的基础上发展起来的。相比于SSE,SSE2使用了144个新增指令,扩展了MMX技术和SSE技术,这些指令提高了广大应用程序的运行性能。随MMX技术引进的SIMD整数指令从64位扩展到了128 位,使SIMD整数类型操作的有效执行率成倍提高。双倍精度浮点SIMD指令允许以 SIMD格式同时执行两个浮点操作,提供双倍精度操作支持有助于加速内容创建、财务、工程和科学应用。除SSE2指令之外,最初的SSE指令也得到增强,通过支持多种数据类型(例如,双字和四字)的算术运算,支持灵活并且动态范围更广的计算功能。SSE2指令可让软件开发员极其灵活的实施算法,并在运行诸如MPEG-2、MP3、3D图形等之类的软件时增强性能。Intel是从Willamette核心的Pentium 4开始支持SSE2指令集的,而AMD则是从K8架构的SledgeHammer核心的Opteron开始才支持SSE2指令集的。
SSE3指令集
SSE3(Streaming SIMD Extensions 3,Intel官方称为SIMD 流技术扩展 3或数据流单指令多数据扩展指令集 3)指令集是Intel公司在SSE2指令集的基础上发展起来的。相比于SSE2,SSE3在SSE2的基础上又增加了13个额外的SIMD指令。SSE3 中13个新指令的主要目的是改进线程同步和特定应用程序领域,例如媒体和游戏。这些新增指令强化了处理器在浮点转换至整数、复杂算法、视频编码、SIMD浮点寄存器操作以及线程同步等五个方面的表现,最终达到提升多媒体和游戏性能的目的。Intel是从Prescott核心的Pentium 4开始支持SSE3指令集的,而AMD则是从2005年下半年Troy核心的Opteron开始才支持SSE3的。但是需要注意的是,AMD所支持的SSE3与Intel的SSE3并不完全相同,主要是删除了针对Intel超线程技术优化的部分指令。
3D Now !指令集
由AMD公司提出的3DNow!指令集应该说出现在SSE指令集之前,并被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做最佳化的软件中能获得更好的效能。
目前最新的Intel CPU可以支持SSE、SSE2、SSE3指令集。早期的AMD CPU仅支持3DNow!指令集,随着Intel的逐步授权,从Venice核心的Athlon 64开始,AMD的CPU不仅进一步发展了3DNow!指令集,并且可以支持Inel的SSE、SSE2、SSE3指令集。不过目前业界接受比较广泛的还是Intel的SSE系列指令集,AMD的3DNow!指令集应用比较少。
转自:
四、cpu指令集的作用是什么?
这些指令集的作用就是根据用户对电脑下达的命令,CPU调用相关的指令集去处理数据。这些不同类型的指令集针对处理不同类型的数据编写而成。
比如在进行视频编辑的时候,CPU就会调用相关的多媒体指令集去完成运算任务。再比如,在进行计算量非常大的数据计算时,如天文运算,此时SSE指令集就能派上用场,面对复杂的数学运算,该指令集就显得非常必要了。
扩展资料:
CPU1基础指令集
在Intel推出8086处理器之后,x86指令集(x86 Instruction Sets)就形成了。在8086/8088处理器中采用最初的x86指令集中主要为数据操作,如ADD(数据加)、DIV(数据除)等数据运算操作,AND(逻辑加)、OR(逻辑或)等逻辑操作,MOV(CPU内或CPU与内部存储器之间传送数据)、JMP(跳转)等指令,这些基础指令组成了最初的x86指令集。
而从此后,Intel等厂商也在扩展X86指令集,添加了很多有关堆栈、状态的指令。随着这些指令的增加,让能够让处理器快速执行一些了基础运算、逻辑判断。
在2001年后,AMD推出了x86-64指令集,自此x86架构处理器进入了64位时代。而后来Intel跟进推出了EM64T指令集。将所有通用寄存器从32位扩充至64位,而且虚拟内存地址空间和物理地址空间都大幅扩大,这些都有助于处理器运行效率的提高。
那么x86以及之后推出的x86-64以及EM64T主要是针对计算机运行的基础操作,如数据运算、数据操作以及逻辑判断。我们在运行基础的数据运算、数据操作及逻辑判断时都用的是处理器的x86指令集、它为计算机的提供基础的基础运算能力,逻辑判断能力。但随着处理器并行化计算的趋势,接下来这些指令集是负责目前目前处理器中更多的计算任务。
参考资料来源:中关村在线——T博士开讲 你不理解的CPU专业名词
五、指令集是什么?
最简单的话概括,那个是CPU硬件接受指令,完成计算,输出结果时与软件进行交互时使用的语言,每条新的指令一般对应着一条或几条汇编语言,编译后对应着可以被CPU识别的机器码。指令集的支持是硬件与软件共同作用的结果,要想CPU支持某指令集,就要修改硬件电路,要想让软件支持新的指令集,就要修改程序,重新编译。做同样的操作,进行同样目的的运算,可以使用不同的方法(不同的汇编语句,机器码),SSE2优化的代码就是程序中使用了SSE2指令集中的语句,可以被P4/K8的解码器(现在的X86 CPU的内核都是RISC运算核心,解码器做转换工作)识别,进行更有效的计算,而K7 CPU不支持此代码,就用其它方法执行这个操作,比如使用X87 FPU指令
指令集就是CPU能支持的指令的集合.理论上,设计一种CPU就需要设计这种CPU所支持的指令,如果指令不同那么软件就无法通用.问题在于,通常软件的生存期比CPU长,所以在现阶段设计CPU的时候,往往按照已经存在的CPU所支持的指令设计新CPU的指令系统,甚至直接把已有的某些CPU的指令列表标准化,形成一个标准指令列表,这样以后只要支持这些指令,不同的CPU之间可以互换;而发布新CPU的时候,也需要明确的建立一个指令码表,这种规范化的指令列表就是指令集.