A. 指令集是什么啊
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和单时钟周期并行处理多个浮点数据来有效地提高浮点运算速度。
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!(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做最佳化的软件中能获得更好的效能。
B. 精简指令集和复杂指令集在指令系统方面的主要区别
不知道各位是不是程序员,下面以程序员的角度分析一下:
程序员视角:
CISC指令相当于粗粒度的接口,一次能做很多事情,且性能高
RISC指令相当于细粒度的接口,只能做通用的操作,且调用方需要发送更多指令
软件设计师视角:
CISC指令相当于faced模式,组合了更多的操作
RISC指令相当于抽出的通用方法,组合方式更多,更灵活
其他我知道的知识:
RISC(精简指令集计算机)
能耗低:不太确定原因,不瞎说了(可以参考上面的老哥的回复).想不通具体原因.
可执行代码长(占用空间大):编译出的可执行代码很啰嗦,就像上面的老哥回复的一样.
可用指令少:只实现了常用的指令,精简指令集
指令长度与执行时间整齐:由于精简指令,故指令长度设计成整齐的长度,指令执行时间也几乎都是1个时钟周期.
CISC(复杂指令集计算机)
能耗高:不确定原因.(猜测可能与寄存器数量有关)
可执行代码短:可执行代码很短,因为有粗粒度命令.也就是说,同一段程序,若编译成RISC和CISC,那CISC的编译后文件会小很多
可用指令多:实现了更多命令
指令长度与执行时间不整齐:由于指令很多,粒度粗细的都有,(以下 是猜猜)故设计时应将常用的指令设计成短指令,不常用的指令设计成长指令.且由于有粗粒度指令,所以执行的长短无法都规范到一个时钟周期,有些指令可能会执行很久.
C. 提到程序员,除了代码你还能想到什么
程序员跟什么接触的时间最多---电脑---是日久生情,还是对电脑产生了一种强烈的依赖,无论是从我还是周围的朋友,对于这一点我都是深信不疑的,所以导致很多程序员的性格比较内向。提到程序员能让我想到很多特点,下面一一列举一下:
5、程序员肚子局部胖的比较快。对于这一点我是身有感触啊,从我的整体上来看,我不能算是一个胖人,但是当漏出肚皮的时候,你可能会大吃一惊,对于这一点的原因,可能大家也都知道:吃过饭就不动了,在电脑前一做就是几个小时,肚子能不胖?相信很多办公室工作者跟我有相同的看法。
不知道大家同意不同意这些特点点,这也仅仅从我个人的角度去看,这些特点对于程序员来说,真的是很普遍,大概归纳些,可能不全面,请谅解!
D. CPU精简指令集里都有哪些指令呢
你问得都不准确。。。
精简指令集是一种类型,并不是指具体某一个指令集
MIPS、POWERPC等都有不同的指令,你自己查去
E. cpu的TSX的指令集用来做什么的为什么我的i5 4690k没有这个指令集
Intel的TSX指令集是针对粗细粒度线程锁定的。在多核多线程处理器中,有一个比较明显的问题,就是多线程对某一资源都需要调用的时候,需要仲裁。当一个线程调用该资源时,另一线程就无法调用,如果调用了,就会发生错误。而如今的程序员,为了防止线程争抢,发生错误,都用粗粒度锁定——也就是该线程占用的绝大多数资源,其他线程都不得争抢。这样也导致了一些,本不需锁定的资源,也被锁定了,其他线程利用不了,降低了多核多线程处理器的多线程性能。TSX指令集就是要让程序员或开发工具更方便、准确地进行细粒度锁定,让资源更有效地使用。对于当今的多核处理器,是个好东西。
但是……Intel前不久发现TSX指令集存在Bug,导致其将消费级市场CPU的TSX指令集全部取消,只保留商用Xeon的……所以,早期的CPU-Z截图,是有这个TSX指令的,后面的就没了。
一般对家用影响不大,不用特别担心。
F. 程序员是干什么的啊
程序员是写程序的属于电脑IT行业。
程序员(英文Programmer)是从事程序开发、维护的专业人员。一般将程序员分为程序设计人员和程序编码人员。
软件从业人员分为初级程序员、高级程序员、系统分析员,系统架构师,测试工程师五大类。
一年可报考软考程序员考试两次,但一次考试只能报考一种资格,因此报考了程序员考试则无法再报考软考其他级别或科目的考试。
同时软考程序员考试采用笔试形式,考试实行全国统一大纲、统一试题、统一时间、统一标准、统一证书的考试方式。
G. 指令集的SSE
SSE指令集
Streaming SIMD Extensions
由于MMX指令并没有带来3D游戏性能的显着提升,1999年Intel公司在Pentium IIICPU产品中推出了数据流单指令序列扩展指令(SSE)。SSE兼容MMX指令,它可以通过SIMD(单指令多数据技术)和单时钟周期并行处理多个浮点来有效地提高浮点运算速度。
在MMX指令集中,借用了浮点处理器的8个寄存器,这样导致了浮点运算速度降低。而在SSE指令集推出时,Intel公司在Pentium III CPU中增加了8个128位的SSE指令专用寄存器。而且SSE指令寄存器可以全速运行,保证了与浮点运算的并行性。
SSE2指令集
在Pentium 4 CPU中,Intel公司开发了新指令集SSE2。这一次新开发的SSE2指令一共144条,包括浮点SIMD指令、整形SIMD指令、SIMD浮点和整形数据之间转换、数据在MMX寄存器中转换等几大部分。其中重要的改进包括引入新的数据格式,如:128位SIMD整数运算和64位双精度浮点运算等。为了更好地利用高速缓存。另外,在Pentium 4中还新增加了几条缓存指令,允许程序员控制已经缓存过的数据。
SSE3指令集
相对于SSE2,SSE3又新增加了13条新指令,此前它们被统称为pni(prescott new instructions)。13条指令中,一条用于视频解码,两条用于线程同步,其余用于复杂的数学运算、浮点到整数转换和SIMD浮点运算。
SSE4指令集
SSE4又增加了50条新的增加性能的指令,这些指令有助于编译、媒体、字符/文本处理和程序指向加速。
SSE4指令集将作为Intel公司未来“显着视频增强”平台的一部分。该平台的其他视频增强功能还有Clear Video技术(CVT)和统一显示接口(UDI)支持等,其中前者是对ATi AVIVO技术的回应,支持高级解码、后处理和增强型3D功能。
H. 程序员是做什么的什么是程序
程序员:
程序员是从事程序开发、程序维护的专业人员。程序员一般需要会做:确认通过审查方案的目标,输入数据,分析师,监事,和客户的输出要求的项目要求。
通常情况下将程序员分为程序设计人员和程序编码人员,软件从业人员分为初级程序员、中级程序员、高级程序员(现为软件设计师)、系统分析员,系统架构师,测试工程师六大类。
程序:
程序是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具。以某些程序设计语言编写,运行于某种目标结构体系上。
程序就如同以英语(程序设计语言)写作的文章,要让一个懂得英语的人(编译器)同时也会阅读这篇文章的人(结构体系)来阅读、理解、标记这篇文章。
(8)程序员指令集高清图扩展阅读:
程序员的日常工作:
1、确认通过审查方案的目标,输入数据,分析师,监事,和客户的输出要求的项目要求。
2、安排项目要求在编程序列分析要求;准备工作流程图和使用计算机知识的能力,题材,编程语言和逻辑图。
3、编码工作流程的信息转换成计算机语言的项目要求。
4、通过输入编码信息的计算机程序。
5、确认程序操作进行测试,修改程序序列和/或代码。
6、准备写操作指令供用户参考。
7、保持历史记录,通过记录方案的制定和修订。
参考链接:网络-程序员
网络-程序
I. 提到程序员,除了代码你还会想到什么
其实提到程序员吧,会想到什么呢,我觉得可能会想到代码,也有可能会想到电脑。也有可能会想到无聊,但是我可能下意识的就会想到那个猝死,原谅我这样想你们,对不起我也不想的。但是真的下意识的就会想到猝死,可能就是最近特别多的那个猝死的情况会发生吧,而且就是大部分都是你们程序员,我知道你们的生活特别的枯燥,你们那生活还可能就是很无聊。然后可能还是需要特别多的加班,然后饮食不规律啊什么的,不能按时睡觉啊,然后你们可能猝死的情况就比较多一点儿了,其实我真的是不想这样想你们的。但是真的下意识的就会想到这样子,还是希望以后能够改掉我的这个印象吧,希望你们以后就不要再有这样的情况发生,其实还是希望你们能够健健康康的啦!
提到程序员,我可能还会下意识的想到那种。戴个眼镜也不收拾自己,然后那种脸上可能有点青春痘的男生,原谅我真的没有在生活当中见过一个真正的程序员,所以我只能好以一些电视剧当中的形象,或者是网上的一些段子啊什么的,来猜测你们的样子,其实我可以的话我还是希望咱们国家,可以拍一个关于你们的电视剧或者是电影吧,因为我觉得可能你们的生活有点儿无聊,但是可能会向我们展示一下全面的样子吧,还有就是你们的工作和你们的生活是分开的那种感觉吧,我还是希望看到如果有一部这样的电视剧或者是电影出现的话,对比应该还蛮强烈的,我还蛮想看一部关于程序员的电视剧或是电影的。
最后我希望你们真的就是少熬夜,然后希望都能健健康康的吧!
J. 关于CPU指令集,帮我理一下思路。
悬赏真高,尽量详细作答。
错误挺多的嘛,慢慢解释
注明下面可能用到的一些名词的意义
micro-arch微架构
ISA指令集架构(指令集)
CPU处理器
HAL硬件抽象层
PLL物理逻辑层
———————————————————————————————————————————————————————————————————————————————————
先说指令集,指令集是一个CPU和软件之间的接口。他不是一个实物,只是CPU提供给上层软件的一个抽象。
所以程序员在编程时并不需要了解芯片的布局,只需要知道根据那些指令能完成怎样的功能就行了(这些指令由CPU执行)。
为了方便理解,我做个比喻会好一些,就像你买来一个灯泡你并不需要知道灯泡里面的电路时如何布局的,只是简单的看看说明书,怎样装上,怎样通电就能实现发光的供能了。灯泡好比CPU,ISA就是说明书,人就当程序员(编译器)的角色。
再来说汇编指令,机器指令的关系,CPU执行的是二进制代码(这叫机器指令,机器能理解的),汇编就是给人看的,人能理解的,如add,sub指令。
每条汇编指令都有相应的二进制代码。完成他们之间的转换是汇编器(现在的汇编器和编译器是打包在一起的)。
不同的指令集有不同的指令,汇编指令对应的机器码也不同。在一个指令集中,一条汇编指令对应一条二进制机器码(图,mips指令集汇编指令对应的机器指令)
系统是介乎在应用程序层和硬件之间的,作用我也不太清楚,应该是为应用程序分配硬件资源,用哪段内存,什么时候要使用CPU执行这样吧??
CPU的指令集所包括含的指令取决于程序员需不需要这些指令,这些指令能不能代替以往的指令使程序执行起来更有效率,说白了就是这条指令有没有存在的价值。
———————————————————————————————————————————————————————————————————————————————————
下面慢慢指出错误:
“汇编是老子,系统是儿子,程序就是小儿子了。” ——完全没有这个关系,他们不再同一个层面上。完成的工作也不同。
“是不是我把汇编指令集的100多条命令背会了,就能写出各种程序” ——现在编程都用高级语言了。
“系统内存中的某些地方时受保护的,禁止查看,里面有不可告人的目的。于是我就在网上找资料,资料上说汇编可以实现机器语言几乎所有的功能。看到这里,我有些困惑了,那些汇编实现不了的,机器语言能办到的,是不是就是那些不可告人的地方?” ——汇编的攻击性的确很强,因为他可以用指令直接操作硬件。但系统就是为了不让指令操作某些内存段,因为这段内存里面放着一些重要的系统文件,一旦被破坏就会造成系统崩溃。
“我猜CPU指令集和汇编指令集都是从机器语言中挑出来的吧!”——上面说了,CPU指令集是一个抽象,他是两个层面之间的接口,表现给下层硬件的是二进制的机器码,表现给应用层面的是汇编指令。一条汇编指令对应一条机器指令。
“CPU指令集对应的机器码可以写出一个小的系统,然后写出一个最初的汇编程序,用汇编可以做一个大大的系统,再做出更高级的程序设计语言,比如C,VC++
这么想对吗?”——系统和应用程序也是由高级语言编写,因为高级语言开发(编写)更有效率,代码读起来更容易理解
“地址总线就很容易理解。我的是32位系统,就是32个地址嘛!最后一个地址是32个1。”——地址总线32位是CPU设计决定的,系统32位是系统的事,不能浑然一谈。
码字码了很久,感觉问主还是个初学者啊,在这方面还需要多看看书