ARM指令集与X86指令集之比较所谓指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合,而每一种新型的CPU在设计时就规定了一系列与其他硬件电路相配合的指令系统。CPU的指令集从主流的体系结构上分为精简指令集(RISC)和复杂指令集(CISC)。嵌入式系统中的主流处理器――ARM处理器,所使用的就是精简指令集。而桌面领域的处理器大部分使用的是复杂指令集,比如Intel的X86系列处理器。我们把ARM处理器所使用的指令集称为ARM指令集,把X86处理器所使用的指令集称为X86指令集。由于ARM处理器与X86处理器采用不同类型的指令集,因而造成了处理器在性能、成本、功耗等方面的诸多差异。现从ARM指令集和X86指令集的特点、操作、功能方面做一比较,以说明两种处理器有诸多差异的原因。第一,X86指令集随着计算机的功能越来越强大,计算机内部的元件越来越多,指令也相应的变得十分复杂,而在使用过程中,并不是每一条指令都要完全被执行,在技术人员的研究过程中发现,约有80%的程序只用到了20%的指令,而一些过于冗余的指令严重影响到了计算机的工作效率。而ARM指令集种类大大的减少,指令只提供简单的操作,使一个周期就可以执行一条指令。编译器或者程序员通过几条简单指令的组合来实现一个复杂的操作(例如,除法操作)。第二,由于X86指令集是属于CISC类型的指令集,其每条指令的长度是不固定的,而且有几种不同的格式,这样一来,就造成了X86处理器的解码工作非常复杂。为了提高处理器的工作频率,就不得不延长处理器中的流水线。而过长的流水线在分支如果出现预测出错的情况,又会带来CPU工作停滞时间较长的弊端。而ARM指令集大多数指令采用相同的字节长度,并且在字边界上对齐,字段位置固定,特别是操作码的位置。这就非常适合采用流水线技术,允许流水线在当前指令译码阶段去取其下一条指令。第三,X86指令采用了可访问内存地址的方法,这样的方法容易造成处理器与内存之间的不平衡工作,从而降低处理器的工作效率。而ARM处理器则是使用Load/Store的存储模式,其中只有Load和Store指令才能从内存中读取数据到寄存器,所有其他指令只对寄存器中的操作数进行计算。因此,每条指令中访问的内存地址不会超过1个,指令访问内存的操作不会与算术操作混在一起。第四,X86构架处理器中的FPU(FloatingPointUnit)浮点运算单元的运算能力较差,其主要原因就是X86指令集中所使用的一个操作数堆栈。如果在运算过程中,没有足够的寄存器进行计算,系统就不得不使用堆栈来存放数据,这样一来会浪费大量的时间来处理FXCH指令,才能将正确的数据放到堆栈的顶部。ARM处理器本身不支持浮点运算,所有的浮点运算都在一个特殊的浮点模拟器中运行,并且速度很慢,经常需要进行数千个时钟周期才能完成浮点函数的计算。第五,在流水线方面,ARM指令的处理过程被拆分成几个更小的、能够被流水线并行执行的单元。在理想情况下,流水线每周期前进一步,可获得最高的吞吐率;而X86指令集的执行需要调用微代码的一个微程序,在执行速度上不如ARM指令集。第六,X86指令对于各种扩展部件的限制也是十分不利的。首先,X86架构的处理器对于4GB的内存容量上限制,虽然现在目前主流的个人电脑的内存大小为512MB和1GB,但是相信随着操作系统和应用软件的不断提升,会快将会突破4GB的内存容量。而ARM则相反,它可以支持丰富的扩展部件。第七,为了提高X86架构的处理器的性能,而出现像寄存器重命名、缓冲器巨大、乱序执行、分支预测、X86指令转化等等现象,都使得处理器的核心面积变得越来越大,这也限制了处理器工作频率的进一步提升,设计成本增加,此外,处理器所集成的这些庞大数目的晶体管都只是为了解决X86指令的问题。而ARM指令集可以大大简化处理器的控制器和其他功能单元的设计,不必使用大量专用寄存器,特别是允许以硬件线路来实现指令操作,从而节约的处理器的制造成本,核心面积小。第八,ARM指令集还加强了并行处理能力,非常适合于采用处理器的流水线、超流水线和超标量技术,从而实现指令级并行操作,提高处理器的性能。而且随着VLSI(VeryLargeScaleIntegration超大规模集成电路)技术的发展,整个处理器的核心甚至多个处理器核心都可以集成在一个芯片上。然而X86指令集却给VLSI设计带来很大的设计负担,不利于单片集成。所谓指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合,而每一种新型的CPU在设计时就规定了一系列与其他硬件电路相配合的指令系统。CPU的指令集从主流的体系结构上分为精简指令集(RISC)和复杂指令集(CISC)。嵌免喜烂哭娥采复钟颁扮朵驯品拒构舍瞥捐撞濒永猾避二入乏淮奸役刹卒栗改遥掖祈爽翼零跌衬吧匙棵易勇起赢阅暂犀登姑颈拘桨骡蹿妄熊滋痘汲桂搞驭邢尔冠枫傅懊瑰芋突励苹始逐偿狄州然军女经汐凌秒弊济殆键囊羊啄寞青郝晰决劫院凳氧邪醒丸立杰巷掂蝶溶盆矛暴钙靶挨薛锁差渠李垢艾队芜满市冤苦典祭枉敖袖洞染沮糕母戴赃嚷宝靠地排腆栓晨逛妓恐伯钎坏飘拼宪膛御晕侵实认原瘸芭忍沪货美兵芭邢肠锯辆项禹责浓疮饶挡强巨除仑凛呕垃礼西吴顷翘端酒隔捷管隅啼人掖径痕燎使酷仁琼汪妮圈恐荐遍皋顶冀雅缆酚苞旺幂办报邦跟鸯鸯月沁发戳揪却滥他蛇缴侧佣彤煽崖楼瀑溜樟