美文网首页
关于ARM架构的一些知识

关于ARM架构的一些知识

作者: zhf_sy | 来源:发表于2020-09-21 16:02 被阅读0次

    [TOC]

    A、指令集

    ARMv7 含16位和32位两个指令集;
    ARMv8 含32位和64位两个指令集,ARM没有64位技术,它是在MIPS64架构上增加了ARMv7架构的技术;
    ARM64 其实只是 ARMv8的一半,只含64位指令集;
    A53 开始之后,都是ARM64。

    ARMv8指令集分为Aarch64和Aarch32。后者与ARMv7基本相同,但是多了一些vfp的指令,或者以前的软件模拟实现改为硬件支持,可以说是靠着后者实现对Aarch32的向前兼容。

    arm7版本可以安装在armv7架构的设备上【支持32位和16位指令集的设备】;
    arm8版本可以安装在armv8架构的设备上【支持64位和32位指令集的设备】;
    arm64版本只能安装在纯64位的arm架构的设备上。

    B、浮点计算算单元(fpu,floating point unit)

    出于低功耗、封装限制等种种原因,以前的一些ARM处理器没有独立的硬件浮点运算单元,需要手写软件来实现浮点运算。有与没有之间产生了两个不同的嵌入式应用程序二进制接口(EABI):软浮点与矢量浮点(VFP)。但是软浮点(soft float)和硬浮点(hard float)之间有向前兼容却没有向后兼容的能力,也就是软浮点的二进制接口(EABI)仍然可以用于有硬浮点计算单元的ARM处理器。

    浮点运算单元(fpu,floating point unit)
    软浮点(soft float)
    硬浮点(hard float)
    矢量浮点(VFP)
    嵌入式应用程序二进制接口(EABI)

    C、浮点计算 - 编译

    在ARM体系架构内核中,有些有浮点运算单元(fpu),有些没有,在有fpu的情况下,就可以通过gcc编译的选项-mfloat-abi来指定使用哪种,有如下三种值:

    1. soft:不用fpu计算,即使有fpu浮点运算单元也不用。
    2. armel:(arm eabi little endian)也即softfp,用fpu计算,但是传参数用普通寄存器传,这样中断的时候,只需要保存普通寄存器,中断负荷小,但是参数需要转换成浮点的再计算。
    3. armhf:(arm hard float)也即hard,用fpu计算,传参数用fpu中的浮点寄存器传,省去了转换性能最好,但是中断负荷高。
    4. arm64:64位的arm默认就是hard float的,因此不需要hf的后缀。

    kernel、rootfs和app编译的时候,指定的必须保持一致才行。使用soft fp模式,会存在不必要的浮点到整数、整数到浮点的转换。而使用hard模式,在每次浮点相关函数调用时,平均能节省20个CPU周期。对ARM这样每个周期都很重要的体系结构来说,这样的提升无疑是巨大的。在完全不改变源码和配置的情况下,在一些应用程序上,虽然armhf比armel硬件要求(确切的是指fpu硬件)高一点,但是armhf能得到20-25%的性能提升。对一些严重依赖于浮点运算的程序,更是可以达到300%的性能提升。

    D、软件下载参考(brook)

    a、arm

    brook_linux_arm5
    brook_linux_arm6
    brook_linux_arm7
    brook_linux_arm64

    b、另:mipsle(类似armel)

    mips

    brook_linux_mips
    brook_linux_mips_softfloat
    brook_linux_mipsle
    brook_linux_mipsle_softfloat

    mips64

    brook_linux_mips64
    brook_linux_mips64_softfloat
    brook_linux_mips64le
    brook_linux_mips64le_softfloat

    E、扩展阅读

    ARM体系结构 : https://blog.csdn.net/MyArrow/article/details/8559573?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

    ARM的Cortex-A8,是由ARM控股的采用ARMv7指令集架构的处理器核心设计。

    相关文章

      网友评论

          本文标题:关于ARM架构的一些知识

          本文链接:https://www.haomeiwen.com/subject/cpvvyktx.html