如何适配Arm架构的 iosAPP

发布网友 发布时间:2022-04-23 09:58

我来回答

1个回答

热心网友 时间:2023-06-27 18:27

如何适配Arm架构的 iosAPP
我们先来谈谈“位”这个术语及其含义。大家对于这个术语一直比较困惑,很大一部分原因在于,它没有统一的、约定俗成的定义。然而,在大体上却达成了一些共识,尽管这些共识并未为大众所知。
“×× 位”CPU通常是指两个部分的宽度:整数寄存器的宽度和指针的宽度。值得庆幸的是,在大多数现代CPU中,它们是一致的。“位”通常是指CPU有 位整数寄存器和位指针。除了搞清楚“位”所指的对象外,明白非“位”所指的对象也十分重要,这些对象通常包括以下几种。
内存(RAM)地址大小。这一数值(关系到硬件可支持的最大内存)与CPU的位数无关。ARM架构的内存地址通常从26位到40位不等。
数据总线大小。CPU从内存或缓存中获取的数据量也与CPU的位数无关,某些CPU指令可能需要特定大小的数据,但在实际应用中,既可一次获取多条指令, 也可多次获取一条指令。上一代iPhone就已经以位块为单位从内存获取数据了。在PC中,块大小最高可达192位。
与浮点运算相关的参数。FPU寄存器的大小和内部设计是的,ARM架构采用位FPU已颇有段时间了。
“位”的优点与缺点
尽管位与硬件可支持的最大内存无关,但便于单一程序使用更大内存。在32位CPU中,单一程序仅有4GB地址空间,减去被操作系统和标准库所占用的部 分,只剩1~3GB可用。如果一个32位系统的RAM超过4GB,单一程序很难充分利用全部空间,除非开发者耍些小聪明,例如直接命令操作系统按需求分配 内存,或将程序拆分成多个进程。但在实际应用中,很少有程序这么做,因为编程更麻烦,还会有损性能。系统拥有更多内存的好处是,能同时运行多个应用并减少 硬盘缓存。这样固然不错,但难免有个别程序需要使用更多内存的情况。
即使对于物理内存较小的系统,更大的地址空间也有帮助。内存映射文件是种有用的结构,在32位系统中,程序不能映射大文件(通常是指超过几百MB的文件),而位系统的可用地址空间更大,不必有这方面的担心。
不过,增加指针宽度有个严重的缺点:在所有其他条件都相同的情况下,单一程序在位CPU系统中更占内存。因为指针本身也需要存储于内存中,在位系统 上,这个空间增加了一倍。而大多数程序运用指针很频繁,所以额外占用的空间往往不少。这给缓存带来了压力,从而导致性能降低。
简而言之,“位”可以提升某些应用的性能,并使内存映射文件这种编程技术更易用。不过,它也会因占用更多内存而降低性能。
ARM
iPhone 5S的位CPU是配有更宽寄存器的ARM处理器,与32位ARM架构相比,位ARM架构包括以下重大变动:首先是名称的变化——它的官方名称为 “AArch”,但这个名字读起来很绕口,敲起来也别扭。苹果称它为ARM,我也更倾向于用这个名字。
较32位ARM架构而 言,ARM的整数寄存器数量增加了一倍,32位ARM架构有16个整数寄存器,其中1个是专用的程序计数器,还有2个用于堆栈指针和链接,其他13个 则作一般用途。而ARM位架构有32个整数寄存器,包括1个专用的零寄存器,1个链接寄存器和1个帧指针寄存器,还有1个寄存器预留给平台,另外28 个则为通用整数寄存器。ARM上可用浮点寄存器的数量有所增加。32位ARM处理器有32个32位浮点寄存器,还有16个额外的位寄存器。这些寄 存器的结构有些特殊,可被视为等价于16个重叠的128位寄存器。ARM则将其简化为32个128位寄存器,且没有重叠。
寄存器的数量 会对性能会产生巨大影响。与CPU相比,内存要慢得多。与CPU处理一条指令的时间相比,读取和写入内存都需要更长时间。CPU试图通过引入缓存来缓解这 一差距。但与CPU内部的寄存器相比,即使速度最快的缓存也慢得多。更多的寄存器意味着更多数据能存储在CPU内部,这降低了内存访问频率,同时提高了性 能。
除了增加寄存器数量,ARM也为指令集带来了重大变化。大多数32位ARM处理器可基于运行时条件寄存器的状态执行条件指令,这使 得在编译if等语句时无需分支。不过这种方式引入的麻烦多于便利,因此ARM取消了条件执行。ARM的NEON SIMD单元完全符合IEEE754双精度标准,而32位版本的NEON SIMD单元只支持单精度。ARM还增加了专门的AES、SHA-1、SHA-256加密指令。这些指令也许对普通应用帮助不大,但对特定领域的应用 来说价值无穷。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com