ARM Cortex-A系列编程指南之ARMv8 A -- 第一章 简介

ARMv8既包括32bit运行状态(execution state),又包括64bit运行状态。ARMv8可以对64bit宽的寄存器进行操作,但是也向后兼容ARMv7的软件(32bit的),也就是说ARMv7的软件(32bit的)可以在ARMv8上运行。

通常用“AArch64”来表示64bit运行状态,“AArch32”来表示32bit运行状态(几乎和ARMv7是一样的)。

因为ARMv8的很对概念,在ARMv7中都有,所以不是所有详细的概念都在这里包含了。对ARMv7架构的介绍,可以参考《ARM® Cortex®-A Series Programmer’s Guide》,有些概念可以到那份文档里去查看。

从ARM官方网站(Cortex-A – Arm Developer)查看ARM的Coretex A系列的处理器,大致可以有如下:

ARMv7 ARMv8 ARMv9

Cortex-A5

Cortex-A7

Cortex-A8

Cortex-A9

Cortex-A15

Cortex-A17

Cortex-A32

Cortex-A34

Cortex-A35

Cortex-A53

Cortex-A55

Cortex-A57

Cortex-A65

Cortex-A65AE

Cortex-A72

Cortex-A73

Cortex-A75

Cortex-A76

Cortex-A76AE

Cortex-A77

Cortex-A78

Cortex-A78AE

Cortex-A78C

Cortex-A510

Cortex-A710

为ARMv7系列处理器写的32bit的代码,也可以运行在ARMv8处理器上,但是会仅仅运行在ARMv8的32bit运行状态(AArch32)。64bit的指令,只能运行在ARMv8的处理器上,不能运行在ARMv7的处理器上。

从32bit升级到64bit的好处与不足:

1)A64指令集提供了一个更大的寄存器池(register pool),从而可以带来显著的性能提升。当在一个函数调用中,必须传送4个以上参数的时候,这些相比于之前的ARMv7多出来的寄存器就可以使之提高效率。因为ARMv7上,就需要使用堆栈,而AArch64运行状态下,可以最多传8个参数。
2)64位数据进行算数运算时的速度,会更高效。
3)64位的操作允许使用更大的虚拟内存空间,从原来的32bits(4GB)拓展到了40bits。这样所带来的好处是可以处理更大体积的文件,即使我们没有足够大的物理内存空间,可以通过虚拟内存对文件内容进行映射。

4)64bits的位宽带来的负面影响:

a、指针长度的增加会产生额外的内存空间消耗。

b、可访问内存空间的增加会导致cache的命中率降低,降低运行效率。

=========================================================================

注意:本文为本人原创,版权所属为个人所有,欢迎转载,但是转载请注明出处。

=========================================================================

你可能感兴趣的:(ARM,Cortex,A系列编程指南,linux,gcc/gdb编译调试,arm)