メモリアクセスのパイプライン

メモリアクセスのパイプラインは、ロードアドレスの計算パイプラインが2本になった。ストアアドレスの計算は1本のパイプラインであるが、ロード命令の方がストア命令より実行頻度が高いので、バランスが良くなっている。

また、CPUコアに内蔵されているデータキャッシュの容量がM2では32KBであったが、M3では64KBに倍増し、プリフェッチなども改良されている。さらに、TLBも中間レベルの512エントリのTLBの追加、L2 TLBは1Kエントリから4Kエントリに拡張するなどで、TLBミスによるロスサイクルを減らしている。

  • M3の改良点

    ロードストアは、M2ではロード、ストア各1本のパイプラインであったが、M3ではロードが2本に増強された。また、CPUコアに内蔵のデータキャッシュの容量は32KBから64KBに増加した

パイプラインダイヤグラム

次の図は、M3プロセサのパイプラインダイヤグラムである。より深く、より広いアーキテクチャは性能を上げるが、その代償として、パイプラインが長くなっている。従来は命令のディスパッチはDisp 1段で実行できていたが、M3ではDP2というパイプラインステージが必要になっている。また、レジスタファイルからオペランドを読んでくるステージがM1では1段のRR1で済んでいたが、M3ではRR2が追加されている。

EXステージで条件のチェックが行われ分岐予測ミスが検出された場合は、B0あるいはF2に戻ることになるが、2つのパイプラインステージが追加されているので、そのタイミングが2サイクル遅くなることになる。M3では分岐予測の精度を上げて予測ミスを減らす、演算器のレーテンシを短縮するなどの対策を行っているので、この2サイクルの増加が直接効く訳ではないが、パイプラインの段数が増えることは性能の点ではマイナスである。

  • M3の改良点

    より深く、より広いアーキテクチャを実現する代償として、M3ではDP2とRR2という2つのパイプラインステージが追加された

10nmプロセスで製造

L2キャッシュは、M1/M2では4コアで共用になっており、容量は2MBでアクセスには22サイクル掛かっていた。これがM3では各コアに512KBのL2キャッシュが付き、共用の4MBのL3キャッシュが付くという構造になった。M3プロセサのL2キャッシュのアクセスは12サイクル、L3キャッシュのアクセスは~37サイクルとなっている。荒っぽい言い方であるが、大部分のメモリアクセスはL2キャッシュにヒットするので、コア内部のD1キャッシュをミスした場合のメモリアクセスレーテンシは22サイクルから12サイクル程度に短縮されたことになる。

  • M3の改良点

    M1では2MBのL2キャッシュを4コアで共用していたが、M3では512KBのコアごとのL2キャッシュと4MBの共用L3キャッシュといいう構成になった。L2キャッシュのアクセスレーテンシは、M2では22サイクルであったが、M3では12サイクルとなった

次の図はM2とM3プロセサの平均IPC(Instruction Per Cycle)を比較したグラフで、M2では平均1.26命令/サイクルの実行であったものが、M3では2.01命令/サイクルの実行になっている。これは約60%という大きな性能改善である。なお、これはサイクル数での性能改善であり、M2からM3でクロックが上がった効果は含まれていない。

  • M3の性能向上

    M3で行われた各部のエンハンスの結果、サイクル当たりの平均実行命令数は1.26から2.01に向上した。これは約1.6倍という大きな性能向上である

次の図はM3 CPUのチップのダイプロットの写真である。Samsungの10nmのプロセスで作られており、512KBのL2キャッシュは0.98mm2、M3 CPUは2.52mm2のチップ面積である。

  • M3のダイプロット

    Samsung M3プロセサのダイプロット。Samsungの10LPPプロセスを使っており、512KBのL2キャッシュが0.98mm2、CPUは2.52mm2の面積を占めている

次の図は4コアのM3プロセサクラスタの図である。前の図に示したコアが(上下が逆であるが)4個並んでおり、その下に1MBのL3キャッシュスライスが4個並んでいる。4コアクラスタの面積は20.9mm2である。

  • M3の4コアクラスタ

    M3プロセサと1MBのL3キャッシュスライスを4個並べた4コアクラスタ。面積は20.9mm2である

Cortex-A75との性能比較

次の図は横軸にGeekBench4の各種のベンチマーク項目をとり、2.3GHzクロックのM2プロセサの実行性能を1.0として、ArmのCortex-A75コアとSamsungのM3コアの性能をプロットしている。

このグラフを見ると、A75はM2と比べて若干性能が高い項目が多いが、まあ、似たような性能であるが、M3の方は右端のメモリバンド幅が1.4倍であるのを除くと、その他の項目ではすべて1.5倍を上回り、2倍を超える項目も多く存在する。A75のクロックは2.8GHzであり2.7GHzクロックのM3よりクロックは速いが、M3の方が性能が高いのは、その分、アーキテクチャで頑張っているからである。

  • Cortex-A75とM3の性能比較

    GeekBench4でのArm Cortex-A75とSamsung M2、M3プロセサの性能比較

次の図はGeekBench4での性能/Wをプロットしたものである。これで見ると、A75はM2よりは性能/Wが高いが、M3はさらに性能/Wが高く、M2の2倍程度の性能になっているものが多い。

SamsungのM3プロセサは豪華ハードウェアで実行性能を高めており、消費電力が気になるところであるが、このグラフに見られるようにA75よりも性能/Wが高く、Samsungの設計方針は当たりである。

  • A75とM3の性能/W比較

    GeekBench4での性能/Wの比較。A75はM2より性能/Wが高いが、M3はA75より性能/Wが高い

性能と電力の両立を実現

まとめであるが、M3はSamsungの第3世代のArmv8アーキテクチャのプロセサである。そして、スケジュールに遅れることなく量産を開始した。

前世代のM2プロセサと比較すると、マイクロアーキテクチャはより幅が広く、深く、高速になっている。そして、Androidのスマートフォン向けのCPUとしてはベストのCPUである。

Samsungの設計チームは、毎年、新しいCPUを世に出す計画であり、次々と新しい設計のCPUが出てくる予定である。

  • M3の改良点まとめ

    M3は第3世代のArm v8アーキテクチャのプロセサである。より広く、深く、速くの設計方針で、高性能と高い性能/Wを実現した

SamsungのM3プロセサの造りを見ると、コアの設計はデータセンタ向けのサーバCPUとほとんど変わらない。10nmプロセスになり、サーバ用CPUクラスの高性能なプロセサを作るのに必要なトランジスタをスマートフォン向けのSoCでも使えるという時代になってきている。

消費電力が最大の障壁であるが、SamsungのM3では高性能と高い電力効率の両立に成功しており、スマートフォン用のSoCの高機能、高性能化はまだまだ続くと予想される。