riq0h.jp/content/post/Apple M1は演算性能が高いわけではない.md
2023-08-21 10:07:01 +09:00

43 lines
No EOL
6.7 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "Apple M1は演算性能が高いわけではない"
date: 2020-11-27T11:17:04+09:00
draft: false
tags: ["tech"]
---
高速なのはメモリとI/Oである。まずは下の画像を見て欲しい。
![](/img/08.jpg)
Apple M1チップの実物写真だ。見てのとおり、一枚のSoCの横に二枚のRAMが直に取り付けられている。M1チップの[イメージ画像](https://www.apple.com/v/mac/m1/a/images/overview/chip__fffqz3ljssi2_large.jpg)ほど美しくはないが、それでもなんとかしてSoCとRAMを隣接させることに成功している。乱暴に言ってしまえば、このように各要素間の物理的距離が近ければ近いほど性能は高まりやすい。
なぜなら、データ伝達に使われる電気信号のスピードは一般に想像されているよりはるかに遅い光速の200分の1からだ。毎秒何億、何兆回もの計算処理を繰り返すCPUにとって数センチの物理的距離が発生させる遅延は決して無視できるものではない。
デスクトップマシンは巨大ゆえ潤沢な冷却リソースを持っているのでこの遅延を圧倒的な演算性能でねじ伏せることができるが、ラップトップやスマートフォンの狭い筐体ではすぐに茹で上がってしまい不可能だ。そのためなるべく省電力、低発熱なCPUの開発がこれまで要請されてきた背景がある。
**Apple M1の設計アプローチは歴史の蓄積がもたらしたARMアーキテクチャの低発熱性を活かして極限まで各要素間の距離を縮め、それによりメモリ性能やI/O性能を高めて実際には低い演算性能を底上げするというものだ。** 用途別に分けられた多コア構成のSoCも、単にARMカスタムと呼べないほど広く手が加えられており処理の効率化に一役買っているが、やはり高密度集積化によるところが大きい。このアプローチは既に各所で検証されているとおり、大半の処理において既存のCPUより優位な結果を示している。絶対的な演算性能が求められる分野では振るわない下記画像参照ものの、Appleが想定する顧客層からすればむしろ理想的な設計と言って差し支えない。
![](https://openbenchmarking.org/embed.php?i=2011204-FI-2011177FI02&sha=c97da777d729&p=2)
見方を変えると、どんな仕様変更にもついてくる忠実な顧客や既にiPhoneやiPadを通じて培われてたARMカスタムの設計ウハウがなければ、潤沢に予算を投下できず今回のような成果は決しておさめられなかったと言える。同じくARMカスタムを製造しているQualcommやSamsungもそのうちM1並に高性能なSoCを作ると思われるが、それをラップトップに搭載したところでプリインストールされるのはARM版のWindowsだ。ソフトウェア資源が乏しくなったWindowsを好んで使う者などそういるものではない。しばらくARM搭載マシンはAppleの天下が続くと見られる。
ところで、今回発表されたApple M1搭載のMacはいずれもRAMの最大が16GBまでとなっている。これは少なからず開発者の不興を買ったが、別にAppleは出し惜しみをしたわけではない。単にSoCと隣接するように配置できるRAMの枚数に限度があったからだ。かといってRAMの真横に置くとSoCとの物理的距離が余分に発生してしまい、その時にアクセスしたRAMの位置関係次第で性能が急激に悪化することになる。言うまでもなくそんな仕様はナンセンスである。
では、将来的にはどうなるのか。このままずっとApple M1搭載のMacはRAM16GBが上限なのかというと、もちろんそんなことはない。
![](https://www.researchgate.net/profile/Matthias_Jung2/publication/249553265/figure/fig1/AS:301808636448772@1448968194152/3D-DRAM-Architecture-true-vertical-channels.png)
**横に並べられないのであれば、縦に積めばよい。** 口で言うほど簡単ではないが、この手法はDRAMの微細化――つまり、メモリ1つあたりのサイズを小さくする技術的な限界を乗り越えるために新しく開発された。
横に並べるのと縦に積むのとではどちらが省スペースかつ物理的距離が短くなるかは考えるまでもない。もっともこれはこれで発熱の問題があるらしく、安定供給にはまだ多少の時間がかかりそうだ。
さて、では結論としてApple M1搭載のMacは買いなのか 答えは、ほとんどの人にとっては**イエス。** なんせ省電力かつ高性能で値段も安く、ブランド性にも優れた新製品だ。Windowsにこだわる理由が特になく、マイナーなソフトウェアにも依存していなければ十分検討に値する。
一方、企業が雇用しているプログラマに提供するマシンとしては、少なくとも現時点では**ノー**と言わざるをえない。現在、多くのデベロッパーがApple M1への対応を急いでいるが、仮にこれがわりあい早くうまくいったとしても、アプリケーションを実行するサーバにx64アーキテクチャのCPUが搭載されているうちは、結局、開発に使うマシンもx64で揃えることになると思われる。あえてハードウェア間に互換性のないマシンを使うメリットはない。
~~そして、サーバマシンの設計アプローチは前述したとおりARMアーキテクチャの本領とはまったく別であるから、データセンターなどの省電力を重視する分野では可能性を見込めるが、絶対的な演算性能でIntelやAMDのCPUを置き換えるほどには至らないだろう。~~
*[どうやらそうでもないらしい…。](https://developers.cyberagent.co.jp/blog/archives/27782/)技術トレンドの移り変わりが早すぎる。そういえば、かなり改造されているとはいえ[富岳もARMベースだった。](https://ascii.jp/elem/000/004/018/4018768/)自分の出した結論がこんなにすぐ覆されるとは思わなかった。*
もちろん、プログラマが個人的に買うぶんには既に諸条件を織り込み済みだろうから特に何の問題もない。Linuxカーネルの生みの親であるリーナス・トーバルズ氏も「macOSが乗っていることを除けばほぼ完璧」と[言っている](https://gigazine.net/news/20201124-linus-torvalds-linux-m1-mac/)そうだ。
たまには物理層の話をするのも面白い。