Rosetta 2 を調べてわかった Apple M1 が速い秘密
昨年発表されてその高速性と省電力性に世界中が驚いたAppleのM1チップですが、MacBook/Mac miniの売れ行きは好調で、Appleの好決算にも貢献したようです。
あまりにもパフォーマンスが違うため、株主からも「なんとかしろ」と怒られていたIntelですが、あわてて「Intelのほうが速い」というベンチマーク結果を公表しました。
しかし、タイトルにもあるように、どうも自社のチップに有利になるようにテスト条件を操作しているようで、「自暴自棄になっているような気配もある」とすら言われてしまっています。
このブログでも、発表直後からM1の速さの秘密について注目してきました。
の中で、ユニファイドメモリというアーキテクチャ上の工夫に加え、よく使われるアプリに最適化された各種のアクセラレータが重要なのでは、という話を書きました。
エミュレータの常識を打ち破ったRosetta 2
そしてM1 Macのもうひとつの驚異といえば、Rosetta 2です。Rosetta 2は、従来のIntel Mac用のバイナリをArmベースのM1 Macでも動くようにさせるためのエミュレーションソフトですが、通常この手のソフトは変換のためのオーバーヘッドが大きく、多くの場合遅くて使い物にならないものです。しかし、Rosetta 2については、Intel Macで動かすのと遜色の無いパフォーマンスを出すと言うことで、ここでも皆が驚いたのです。
M1がIntelよりも速いから、という考え方もありますが、そればかりとも思えません。ひとつ言われているのは、M1上でx86バイナリを動かす際に、最初にコンパイルしてしまうということです。このため初回は起動に時間がかかるものの、2回目以降は起動も動作も高速になる、ということでした。そして、もうひとつの理由と思えるものがこれです。
この中でRobert Grahamさんという方のツイートが紹介されています。
4/ そこでAppleは、ちょっとズルをしました。Intelのメモリオーダを自社CPUに追加したのです。変換したx86コードを実行する時には、Intelのメモリオーダに合わせてCPUのモードを切り替えます。
エミュレーションに有利なように自社CPU(M1)をモディファイした、ということのようです。「ちょっと」とか書いてますが、これは凄いことなのではないでしょうか。
ところでこの記事ではメモリオーダ(エンディアン)と書いていますが、そこにちょっとひっかかりました。「x86もArmも共にリトルエンディアンじゃなかったか?」と思い、念のため原文を見てみると、やはり訳されていない文章がありました。(後で調べてみたらArmそのものはビッグにもリトルにも対応できるバイエンディアンでしたが、iPhone用のAシリーズはリトルエンディアンで、M1も同様のようです)
While byte ordering is not a problem for the transition from x86 to ARM, another issue related to memory, namely the memory consistency model total store ordering (TSO), could hamper performance in this case.
バイトオーダはx86からARMへの移行では問題になりませんが、メモリに関連する別の問題、つまりメモリ整合性モデルのTotal Store Ordering(TSO)は、この場合のパフォーマンスに悪影響を与える可能性があります。
やはりエンディアンは問題では無かったようです。TSOは初めて聞きましたが、Intelが採用しているメモリアクセスの高速化の仕組みのようですね。検索してもあまり引っかかってきませんが、こちらに少し記述があります。
IntelとArmでは違う方式を採用しているようです。それをソフトウェアで回避する際のオーバーヘッドを回避するために、TSOサポートを独自に追加した、ということなのでしょう。それがどれくらい難しいことなのかはよくわかりませんが、なんだか大変そうな気はします。普通、エミュレータのためにそこまでしますかね?
自社設計チップの強みを最大限に活かしたApple
今回これはエミュレーションソフトの高速化の話ですが、恐らくM1にはこの他にもいろいろな仕掛けがあるのではないでしょうか。チップとハードウェア、OS、アプリケーションなどを自社で作っているAppleだからこそできる技です。TSOについても、Intelとの互換性のためだけではなく、M1本来の処理速度にも良い影響を与えるから追加されたということなのかも知れません。
先日、Microsoftが自社チップ開発か、というニュースがありました。
MicrosoftはこれまでQualcommと協力してSurface用のArmチップを開発してきました。Arm版SurfaceでもエミュレーションでIntelのバイナリは動きますが、パフォーマンスに関してはまったく良い噂を聞きません。Appleの成功を見て、これは他社に任せている場合ではない、と思ったのかも知れませんね。
ITの最新トレンドをわかりやすく解説するセミナー・研修を行います
時代の変化は速く、特にITの分野での技術革新、環境変化は激しく、時代のトレンドに取り残されることは企業にとって大きなリスクとなります。しかし、一歩引いて様々な技術革新を見ていくと、「まったく未知の技術」など、そうそうありません。ほとんどの技術は過去の技術の延長線上にあり、異分野の技術と組み合わせることで新しい技術となっていることが多いのです。
アプライド・マーケティングでは、ITの技術トレンドを技術間の関係性と歴史の視点から俯瞰し、技術の本質を理解し、これからのトレンドを予測するためのセミナーや研修を行っています。もちろんオンライン対応も可能です。詳しくはこちらをご覧下さい。