ITmedia NEWS >

Apple独自アーキテクチャの変遷 A6から最新A14までApple Siliconがやってくる(2/4 ページ)

» 2020年09月24日 15時29分 公開
[大原雄介ITmedia]

2つのファウンダリで生産された「A9」

 この次に当たるのが、2015年9月発表のiPhone 6Sに搭載されたApple A9である。

 このApple A9は、TSMCの16nmとSamsungの14LPEという2つのファウンダリで製造された珍しいパターンである。

 この世代、内部構造的には以前のTwisterと大きな違いはなく、6命令解釈・9命令発行のSuperScalar/OoOと見られている。またReorder Bufferの数も192で、これもTwisterと変わらない。ただ細かくLatencyを減らした(例えばBranch Misprediction Penaltyが16→9cycle、FP32のLatencyが1cycle減、etc...)他、L2も3MBに強化している。加えて、TSMCの20nm(最後のプレナータイププロセス)からFinFETプロセスに移行したことで動作周波数が大幅に向上(1.40GHz→1.85GHz)しており、これで十分性能を稼げた、という話もある。

 ただこの時期、Appleは次のA10世代に向けて2種類のコアを開発する必要があった。それもあってTyphoon→Twisterは主にFinFETプロセスへの移行を重点項目とし、新機構の導入は先送りした感がある。

初のbig.LITTLEコア搭載「A10」

 2016年9月発売のiPhone 7に実装されたApple A10は、同社としては初のbig.LITTLE実装のCPUコアとなった。big.LITTLEそのものは2011年には既に発表されており、それこそCortex-A7とCortex-A15の組み合わせなどが可能であったが、実際にこれがスマートフォン向けSoCに広く実装されるようになったのは2013年ごろからだと記憶している。

 big.LITTLEという技術そのものは既に多数の解説記事があるので割愛させていただくとして、これを利用するにはハードウェアだけでなくソフトウェア、それもOSのスケジューラがbig.LITTLEに対応しないとその効果が得られない。

 実のところArmは2011年から数年かけてLinux向けのスケジューラの改良に取り組み、これがAndroidにも取り込まれていった結果として、2013年ごろからスマートフォンでもbig.LITTLEが使えるようになったという話だ。一方、Appleの場合はiOSが自社開発なので、テクノロジーそのものの供給はArmから得られても、実装は自社で何とかするしかない。iOSの対応に時間が掛かった結果として、big.LITTLEの実装がAndroidスマートフォンよりもやや投入が遅れた、ということだろう。

 ただ、Android系の実装はbigコアとLITTLEコアの両方が同時に稼働可能(負荷に応じてそれぞれのコアに割り振るタスクを選べる)なのに対し、この当時のiOSの実装はもう少し原始的な、bigコアとLITTLEコアが排他的に稼働する方式だった。これはbig.LITTLEの当初のスケジューラのインプリメントと同じで、要するにシステム全体の負荷を見て、ある閾値を超えたらbigコアに処理を移し、処理負荷が下がったらLITTLEコアに処理を戻す、という方式である。なのでOSというかアプリケーションから見ると、A10は実質CPUが2コアとして見えることになった。

 さてこのA10には2コアのHurricane(2.34GHz駆動)と2コアのZephyr(1.1GHz駆動)が搭載された。このHurricaneであるが、あまり詳細が明らかになっていない。相変わらず6命令解釈・9命令発行のSuperScalar/OoO構成であるが、L2の大容量化などを含めて、細かく内部をチューニングしたという感じである。その意味ではTwisterの延長にあると思われるが、命令セットの変更(Armv8-A→Armv8.1-A)もあり、延長といっても変更箇所は割と多かっただろう。

 一方のZephyrであるが、こちらはさらに情報がない。ただ、動作周波数が1.1GHzとかなり低く抑えられているあたり、パイプライン段数もかなり少なく、おそらくはIn-Orderで下手をするとSingle Issue(つまりSuper Scalarですらない)な構造の可能性もある。製造プロセスはTSMCのN16++を利用している。

同時6コア稼働になった「A11 Bionic」

 次の世代は、2017年9月発表のiPhone 8に搭載されたA11 Bionicに内蔵される、Monsoon/Mistralコアである。このA11 Bionicではコア数がMonsoon(big)×2/Mistral(LITTLE)×4コアになった。またスケジューラが改良され、同時6コアの稼働が可能になっている。

 Monsoonは7命令解釈・9命令発行のSuperScalar/Out-of-Orderであり、Mistralも3命令解釈・発行のOut-of-orderになった。実はこのMistralはSwiftをそのまま(ちゃんとArmv8.1-Aとbig.LITTLE対応に変更しているが)利用している。MistralというかSwiftが高効率(=相対的に低性能)扱いされるほど、Monsoonの性能が上がった、ということでもあるのだが。Monsoonは2.53GHz駆動、Mistralは1.42GHz駆動である。製造プロセスはTSMCの10nmが利用された。ちなみにこの世代では命令セットもArmv8.2-Aになっている。

7nmプロセスで消費電力を抑えた「A12 Bionic」

 2018年9月発表のiPhone XSなどに搭載されたA12 Bionicには、Vortex/Tempestの組み合わせが実装された。このVortex/Tempest、基本的にはMonsoon/Mistralの延長である。Vortexはやはり7命令解釈のSuper Scalar/OoO構成で、Monsoonと比較して細かくLatencyを削減したり、L1を大容量化(64KB→128KB)するなどして性能を引き上げている程度であるが、TSMCの7nmプロセスの採用もあって動作周波数を引き上げつつ消費電力を抑えている。Mistralの方はほぼMonsoonというかSwiftという形だが、この世代は命令セットがArmv8.3-Aに切り替わったこともあり、そうした部分への対応は行われている。

photo A12は2020年9月に発売された第8世代iPadにも搭載された

Copyright © ITmedia, Inc. All Rights Reserved.