x86架构和arm架构哪个性能强

x86架构和arm架构哪个性能强,第1张

这俩没法单纯进行性能比较。各有所长。而且,功耗这个事情如果不谈的话,真的没法衡量性能。就好像军舰和飞机哪个更厉害?专长不同,应用不同。
X86属于典型的CISC,指令集丰富,指令不等长,善于执行复杂工作,更强调串行性能;ARM是典型的RISC,指令集精简,但指令等长,这样提高了处理效率,但遇到复杂指令,就需要更多的简单指令来堆砌复杂任务。
ARM用来做专一机、大型机;X86性价比高,便宜,成为家用主流,也可以用于企业的非核心业务。
并行处理能力上,ARM凭借高效率和高并发性能取得一定优势;X86善于执行复杂指令,且在纯串行任务上,相较于ARM能取得优势。最主要的是,X86和ARM的内部指令都不同,不可能执行同一个程序,根本不能做横向比较。

跑dhrystone一秒多少循环。优化级别不一样,结果也不一样。最多快约一倍。
看来IAR编译器效率还是不如原厂ARM的。
keil:
-O0:43662 fortime 43662
-O1:53730 fortime 79119
-02:54960 fortime 98090
-O3:53650 fortime 99858
iar :
none 26191
-low 27016
-m 56425
-h 71427(forspeed)

arm编译器编译出来的是arm处理器执行的二进制文件
而vc编译出来的是在x86构架windows系统下的可执行文件
区别很大,ads编译出来的文件是直接面对arm底层硬件的 *** 作,很多系统函数需要自己编写
而vc中很多类,api函数已经是现成的了,直接调用就可以了
ads中填充0xff,其实在没有代码的地址上填充什么都无所谓,因为程序就不会运行到那个地址上,只是为了让编写程序的人清楚这个地方时空的。(个人的感觉,不知道对不对)
vc的编译我不是很清楚,你再看看其他答案吧。也许和arm的情况差不多

首先,ARM与传统的单片机一样,都是用来进行运算、控制、通讯的微处理器,都具有ALU、内部寄存器(通用寄存器、栈指针寄存器、状态寄存器等)、地址总线、数据总线、中断控制器等。所以说,ARM并不是什么天外来客,在某种程度上来讲,ARM也是“普通人”,传统的单片机也并非“残疾”。
ARM与传统单片机的最大不同在于级指令集,传统的单片机(如51)使用的是复杂指令集(CISC),且不具备指令流水线;ARM使用的是精简指令集(RISC,正如ARM的全称Advanced
RISC
Machine),而且使用了至少3级流水线。这使得ARM的制造成本和运行效率相对51有着明显的优势。
第三,ARM是32位机,传统的单片机一般都是8位机。随着信息量的增加,我们会越来越多的需要处理超过8位以上的数据。以32bit数据的加减法为例,51需要多次处理,而在ARM中只需要1个指令(数据时4Byte对齐的,一般来说都会是对齐的)。
第四,基于ARM内核的芯片种类越来越多,器外围接口(UART/SPI/IIC/USB/CAN/BUS/LCDC),内部一般都加入了DMA,进一步提升了性能。给用户提供了很大的选择空间。
第五,工具和调试。ARM的编译器相对于传统单片机,其易用性大大加强,比较流行的编译工具有IAR,RVCT,ADS,ARM-GCC等。另外,ARM内部集成有JTAG调试接口,可以在线调试,只需要购买于编译器配套的Trace工具即可(IAR的J-link的,淘宝上好像有70元一个USB接口的;另外还有一种打印口的,更是便宜了)。
第六,软件资源。基于ARM的开源软件很多,OS类的有FreeRTOS/Linux/UCOS等。有的厂家还会提供USB/TCPIP协议栈,还有的提供特殊的库(如触摸按键的库、加密库等)。

汇编主要是要了解CPU指令及用法,常说的是PC机的x86汇编,指令是x86的复杂指令集。
arm汇编是arm的精简指令集,比x86容易学,程序格式倒是和x86汇编差不多。
C语言ARM的和x86的差不多,除了对硬件寄存器 *** 作不同,其它语法和流程都一样。
arm汇编程序每一行是指定arm core执行一条指令,每条指令都是硬件相关。
如:LDR R3, #1 ;用LDR指令将数值1放入R3寄存器准备参与运算
C语言与arm指令无关,只与逻辑运算有关,指定硬件地址的 *** 作才与硬件相关;
如果用arm编译器来编译,每行可能编译出1到多条arm指令。
如:i++; //变量 i 递增1等效于LDR R3,#1 ;
用LDR指令将数值1放入R3寄存器准备参与运算ADD R2, R2, R3 ;
用ADD指令将R2、R3寄存器里的数值相加后放回R2寄存器以上等效汇编的R2、R3寄存器只是为了举例,C语言不像汇编,不需要由程序员指定用哪个寄存器参与运算,编译器编译时会根据程序结构自动判断选择。
无论是c语言还是汇编语言,编译器编译后的结果是机器执行码,很多人因为汇编语言比较难懂及指令相关,所以以为它就是机器语言,其实它仍是人类设计的编写程序的语言,仍需要编译器编译成机器码才能执行,它只是比C语言更接近硬件而已。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10374318.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-08
下一篇 2023-05-08

发表评论

登录后才能评论

评论列表(0条)

保存