後藤弘茂のWeekly海外ニュース
アーキテクチャを一新したCortex-A75とCortex-A55の詳細
2017年5月30日 10:26
DynamIQ世代のCPUコアセットを導入
ARMは、台湾で開催されているCOMPUTEXで、新しいCPUコア「Cortex-A75」、「Cortex-A55」と、GPUコア「Mali-G72」を発表した。Cortex-A75はフラッグシップの高性能CPUコア、Cortex-A55が小型で低電力コア、Mali-G72が従来のG71のアーキテクチャ拡張版となる。
この時期のARMのCPUコア刷新は恒例だが、今回は様相が異なる。Cortex-A75/A55は、従来のような単なるアーキテクチャのアップデートではなく、コアのプラットフォームレベルからの刷新となる。
ARMは、CPUコアクラスタのアーキテクチャの刷新「DynamIQ」を導入する。DynamIQでは、CPUクラスタの構造が根本から変わるため、DynamIQに対応した新たなCPUコアが必要となる。Cortex-A75とCortex-A55は、DynamIQに対応する最初のCPUコアとなる。つまり、DynamIQとCortex-A75/A55の組み合わせから、ARMの新しいCortex-Aファミリが始まる。具体的には、Cortex-A75/A55と、従来のCortex-Aコアは、混在したクラスタに構成することができない。命令セットも新しいARMv8.2で異なる。Cortex-Aファミリの再スタートとも呼べる新世代だ。
DynamIQでは、ARMのヘテロジニアスマルチコア構成である「big.LITTLE」がよりフレキシブルかつ効率的に実現できる。最大8コアの構成へのスケールアップも可能で、ビッグコアが1個にリトルコアが7個といった構成も可能になる。また、CPUコア以外のアクセラレータの接続も効率的かつ容易になる。また、クラスタアーキテクチャの変化によって、キャッシュ階層も効率的に変わる。
Cortex-A75/A55は、DynamIQによってCPUアーキテクチャが刷新される最初の世代のCPUコアだ。どちらも現行世代のCPUアーキテクチャをベースとするが、マイクロアーキテクチャは拡張され、特にキャッシュ階層が大きく変わった。Cortex-A75は、既存のCortex-A72/73より性能が向上し、Cortex-A55は既存のCortex-A53より電力効率が上がった。
両CPUともに命令セットは拡張版のARMv8.2が実装され、マシンラーニングを意識した命令拡張や、アクサレレータなどの統合を容易にする命令拡張が加わった。A75とA55のどちらも、新世代にふさわしいマイクロアーキテクチャとなっている。ただし、DynamIQ世代のハイエンドCPUコアとして新規に開発されていると言われる、より高性能なCPUコア(コードネームはZeus:ゼウスと噂される)は、今回発表されなかった。
3命令デコードコアの新版Cortex-A75
ARMのCortex-A CPUコアマイクロアーキテクチャは、命令デコードとスケジューリングによって5種類に分けられる。(1)3命令デコードのアウトオブオーダ実行コアがCortex-A15/57/72/75系列、(2)2命令デコードアウトオブオーダコアがCortex-A9/12/17/73系列、(3)2命令デコードでインオーダ実行のコアがCortex-A53/55系列、(4)パーシャル2命令デコードインオーダコアがCortex-A7/35系列、(5)1命令デコードインオーダコアがCortex-A5/32系列だ。
今回刷新されたのは、ハイエンドの3命令デコードアウトオブオーダコアのCortex-A75と、2命令デコードインオーダコアのCortex-A55。つまり、プレミアムなbig.LITTLE構成で使われるコアの組み合わせが刷新された。低価格帯で使われるパーシャル2命令デコードコアの刷新は、この先となる。
Cortex-A75は、ARMの新しいフラッグシップCPUコアだ。3-way命令デコードのスーパースカラアーキテクチャであり、命令並列度的にはCortex-A72クラスとなる。2命令デコードのCortex-A73とは、CPUのマイクロアーキテクチャレベルでデコード並列度が異なる。Cortex-A75は、よりワイドな命令デコードで、命令並列性を引き出すマイクロアーキテクチャのCPUだ。
そのため、Cortex-A75は、Cortex-A73に対して、同レベルの電力効率でもシングルスレッド性能が20%高くなる。また、キャッシュ階層が大きく改良された。従来のCortex-Aは、コア毎にプライベートのL1キャッシュとクラスタ内で共有するL2キャッシュの2階層キャッシュだった。それに対して、Cortex-A75は、L1とL2がコア毎にプライベートで、L3キャッシュがクラスタ内で共有となっている。DynamIQのアービトレーションユニット「DynamIQ Shared Unit(DSU)」によって制御される。
L1命令キャッシュは64KBで4-wayセットアソシエイティブ、タグ管理が「Virtually indexed, physically tagged (VIPT)」方式となった。命令フェッチは128-bit幅で4命令フェッチ。ワイドな命令フェッチで取りこんだ命令キューから、3命令/サイクルでデコードする。分岐予測では、今回、0サイクル分岐予測が導入された。これは、階層化された分岐予測のL1予測レイテンシが短縮されたものと見られる。分岐予測自体のレイテンシの短縮は、IPC(Instruction-per-Clock)の向上に大きく影響する。
ディープラーニングに対応したSIMD命令拡張
命令ディスパッチでは、以下の7ポートのキューが設けられている。
・整数演算x2
・分岐x1
・NEON/FPUx2
・ロード/ストアx2
3命令デコードでも整数演算ユニットは2で、分岐ユニットが独立している点はCortex-A72と共通している。ただし、Cortex-A72では8キューだったのが、Cortex-A75では7キューに減らされている。乗算/除算のパイプへのキューが他のキューと統合されたものと見られる。
演算ユニットでは、SIMD(Single Instruction, Multiple Data)のNEONユニットが大きく拡張された。従来のFP32 32-bit単精度浮動小数点演算に加えて、FP16 16-bit半精度浮動小数点演算と、int8 8-bit整数演算がサポートされた。NEONユニットは128-bit幅なので、FP16では8エレメンツ/サイクルのSIMDとなり、NEONのフル命令がサポートされる。int8では内積演算のみがサポートされる。これは、ニューラルネットワークでは行列の内積演算が多用されるためだ。
現在、ディープラーニングで使われるニューラルネットワークでは、データ精度としてFP16がトレーニング(学習)とインファレンス(推論)で、int8がインファレンスで多用されるようになっている。また、積和算のスループットも改善された。
ロード/ストアはスロットが16に拡張され、また、RAW(Read After Write)のアウトオブオーダロード/ストアがハードウェアでサポートされた。キャッシュでは、プリフェッチが強化された。L2は、各コア毎にプライベートで256KBまたは512KB。レイテンシはL1が3サイクル、L2が8サイクル、共有のL3が25サイクルからとなる。興味深いのは、atomicオペレーションとキャッシュキャッシュスタッシング(Cache Stashing)がサポートされたこと。これは、特にアクセラレータなどのコアとの連携を効率化する。また、RAS機能も実装された。
こうして概要をさらうだけで、Cortex-A75がマイクロアーキテクチャ的に大きく拡張されていることがわかる。
大幅に拡張されたCortex-A55アーキテクチャ
Cortex-A75とペアとなるCortex-A55のマイクロアーキテクチャは、Cortex-A53をベースにしている。フル2命令デコードのインオーダ実行だ。しかし、マイクロアーキテクチャ自体は大きく拡張されている。また、命令セットはCortex-A75と同様に、ディープラーニング向けNEON命令拡張を含むARMv8.2になった。
CPUのフロントエンドでは、Cortex-A55は分岐予測が強化され、Cortex-A75同様に0サイクル分岐予測がサポートされた。また、ループのエンドを予測するループターミネーションプレディクタが実装された。分岐予測はニューラルネットワークベースとされているが、実装の詳細はわからない。L1命令キャッシュは16/32/64KBのコンフィギュラブルだ。
Cortex-A55では、従来はロード/ストアは1ユニットだったのが2ユニットに拡張された。また、ロード/ストアレイテンシが短縮され、インオーダでのロード待ちのペナルティが軽減された。L1レイテンシは2サイクルとなっている。ALUパイプからロード/ストアのアドレスジェネレータへのフォワーディングが実装されたことでもレイテンシが短縮される。L1データキャッシュサイズは16~64KBにコンフュギュラブル。プリフェッチャが拡張された。Cortex-A75同様にL2キャッシュはコアに統合された。L2サイズはコンフィギュラブルで最大256KB。そして、atomicとキャッシュスタッシングもサポートされた。
興味深いのはRAS機能がサポートされたこと。キャッシュへのECC実装だけでなく、データポイズニングなどの機能も実装された。低電力コアへのRAS統合は、車載のような安全性が重要となる組み込み用途も意識したものだ。
DynamIQとCortex-A75/55、ARMv8.2によって、ARMは新しい世代のCPUプラットフォームに踏み出した。今後は、DynamIQベースのCortex-Aファミリの拡充期に入る。これまでのARMコアでは、古いクラスタアーキテクチャが拡張やコンフィギュレーションの足かせとなっていた。DynamIQではその枷が外され、より高性能や高効率のCPUクラスタが可能になる。