はじめに
GoogleがSamsungと組んで独自SoCであるGoogle Tensorを発表しました。
Pixel 6/Pilxe 6 Pro に搭載しているということです。
上記のBlog、Googleにて検索したら、2頁目に出てきました。面白いですね。
Google Tensor とは?
上記のブログには詳細は載っていないですね。しかしながら、Anandtech がかなり詳しい記事をアップしてくれています。
この記事によると、Google Tensorは、SamsungのExynos 2100の兄弟チップということ。
Exynos 2100 は、
- CPU : Cortex-X1 x 1@2.91GHz (512KB x 1 L2) + Cortex-A78 x 3 @2.81GHz (512KB x 3 L2) + Cortex-A55 x4 @ 2.20GHz (64KB x 4 L2)
- GPU : Arm Mali G78 MP14 @ 854MHz
- ISP : Full Exynos ISP Blocks + DSP
- NPU : Exynos NPU @ 1352MHz
- CPU : Cortex-X1 x 2@2.80GHz (1024KB x 2 L2) + Cortex-A76 x 2 @2.25GHz (256KB x 2 L2) + Cortex-A55 x4 @ 1.8GHz (128KB x 4 L2)
- GPU : Arm Mali G78 MP20 @ 848MHz(shaders), 996MHz(tier/L2)
- ISP : Hybrid Exynos + Google ISP
- NPU : Google edgeTPU @ 1066MHz
です。
CPUは、両方とも3種類のコアで構成されていますが、Google Tensorは Cortex-X1 の L2が1024KBとSamsung 2100の倍になっています。また、mid CPUコアが A76 と A78の違いがあります。 X1とA78は 5nmプロセスをターゲットにしたCPUコアで2020年5月に発表されています。
上記の記事の中に、GS101というSoCのドライバのソースコードへのリンクがあります。この中のgs101-cpu.dtiを覗いてみると、CPUコアは 4 + 2 + 2 の構成になっています。 G CPUコアの動作周波数ですが、4コアが1.803GHz、2コアが2.253GHz、もう一つの2コアが2.302GHzです。こちらは A0 チップのようで、B0チップではもう一つのコアは2.802GHzのようです。
ということで、このソースコードは、Google Tensor の A0 chip/B0 chip (B0 chipが製品版?)のものだと思われます。
まだ、GPUのコードを覗いてみたら、GPUのクロックが996MHz/848MHzとあるのであっているんでしょうね。
というか、このソースコードから記事に書いてある仕様を書きだしたのだろうか?
Pixel 6 / Pixel 6 Pro のコードネーム
このディレクトリに、
- Oriole
- Raven
という名のファイルがたくさんあるのですが、どうやら
- Oriole => Pixel 6
- Raven => Pixel 6 Pro
のコードネームのようです。Raviole と Slider というのもあるのですが、これはなんでしょうかね? Android のソースコードにも同じ名前がありますね。 もっと下の方を見ると、slider1 / slider2 / whitefin / whitefin1 / whitefin2 / whitefin2v2 なるものもあります。
TPU
このコードがTPUっぽいです。 動作周波数は、1.066GHz / 800MHz / 500MHz / 226 MHz のようです。
GSAなるドライバでTPUへファームウェアをダウンロードするっぽい?
Message Box経由でファームウェアのダウンロード命令を送っているので、TPU側にはCPUっぽいものがいるんでしょうね。
gsa_mbox.cの gsa_send_mbox_cmd の中でexec_mbox_cmd_syncという関数を読んでいて、この中でいくつかのレジスタに書き込んだあと、割り込みで戻ってくるまで待って、ステータスをチェックしているようです。
おわりに
上記のソースコードには、2019 Google LLC とありますので、かなり前からSamsungと組んで開発していたんでしょうね。GS101のチップでは、big Coreの動作周波数はA0では2.3GHz、B0では2.802GHzということでCPUコアを変えている可能性もありますね。
追記)、2021.11.07
AI Benchmark (Android端末でのAI性能なので、AppleのiPhoneは載っていません)にて、Google Prixel 6 Pro/Google Pixel 6は、一位と二位になっています。
NNAPI 1.1 (FP16) が 40550 (6 Pro)、NNAPI 1.2 (FP16) が 78927 (6 Pro) です。Huawei/Hisilicon の Kiin 9000よりも速いです。
Pixe 4 XL の NNAPI 1.1 (FP16) が 5447 で、NNAPI 1.2 (FP16) が11649 なのでかなり速くなっています。Pixel a4 5G / Pixel 5 / Pixel 3 / Pixel 3 XL / Pixel 4a / Pixel 3a / Pixel 3a XL / Pixel 2 XL / Pixel 2 / Pixel / Pixel XL の順です。Edge TPUを搭載していない Pixel は、QualcommのSnapdragonなのでそれほど速くないんですよね。ちなみに、Snapdragon 888搭載スマホでは、NNAPI 1.1 (FP16)で、13000弱、NNAPI 1.2 (FP16)で26500前後ですので、今回のGoogle Tensorの性能向上は、かなり大きいと思います。