Vengineerの戯言

人生は短いけど、長いです。人生を楽しみましょう!

Google Tensor G1

はじめに

GoogleSamsungと組んで独自SoCであるGoogle Tensorを発表しました。

Pixel 6/Pilxe 6 Pro に搭載しているということです。

blog.google

上記のBlog、Googleにて検索したら、2頁目に出てきました。面白いですね。

Google Tensor とは?

上記のブログには詳細は載っていないですね。しかしながら、Anandtech がかなり詳しい記事をアップしてくれています。

www.anandtech.com

この記事によると、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

で、Google Tensor は、

  • 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.803GHz2コアが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 => 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っぽいものがいるんでしょうね。

github.com

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性能なので、AppleiPhoneは載っていません)にて、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の性能向上は、かなり大きいと思います。