【Unity】ARM64?ARMv7?x86?スマホのCPUのアーキテクチャについてざっくり理解する

ARM64やARMv7やx86といったスマホのCPUのアーキテクチャについての概要をまとめました。

はじめに

Unityでスマホをターゲットにしてビルドする際、Player SettingsでTarget Architecturesを設定できます。

f:id:halya_11:20191027222614p:plain

これらはCPUのアーキテクチャを示しており、チェックを付けることでそのアーキテクチャに対応したバイナリを出力できます。
ただし対応するものが多いほどバイナリの容量が大きくなるため、どれに対応するかの判断は重要です。

そこで本記事ではそもそもCPUアーキテクチャとは何なのかを説明し、
その後でスマホにおけるCPUアーキテクチャの現状について簡単にまとめます。

CPUアーキテクチャとは?

CPUアーキテクチャとはCPUの設計のことです。
これが異なると、演算装置とか制御ユニットとかレジスタとかをどう設計するかが変わってきます。

また、これらが変わってくるとPC全体の構成も変わってきます。

ARM64?ARMv7?x86?

主要なアーキテクチャにはARM64やARMv7、x64、x86といったものがあります。 このうちARM64とx64は64ビット、ARMv7とx86が32ビットです。

またARMと命名されているものはARMという会社が設計しているアーキテクチャです。
これに対してx86/x64を採用したCPUはIntelAMDが作っています(違う会社が作ってるけど互換性があります)。

アーキテクチャ 開発会社 ビット数
ARM64 ARM 64
ARMv7 ARM 32
x64 Intel/AMD 64
x86 Intel/AMD 32

スマホで使われているアーキテクチャ

さてそれではスマホではどういったCPUアーキテクチャが採用されているのでしょうか。
まず、Appleの作っているSoCであるAシリーズ(A11とか)は、これまですべてARMを採用しています。

Androidは一部古い端末でx86が使われているものもあるようですが、
現状ではほぼARMであるといっても過言ではないようです。

blogs.itmedia.co.jp

つまり、スマホで使われているアーキテクチャはほぼARMである、といえます。
とはいえ、よりシェアの低い端末までカバーしたいということであればx86にも対応するべきかもしれません。
そこはアプリの容量と対応端末の方針を踏まえて判断するのがよさそうです。

参考

www.pasonisan.com

ja.wikipedia.org

urashita.com

smatabinfo.jp

blogs.itmedia.co.jp