Vengineerの妄想

人生を妄想しています。

Google Pixel 8 の SoC (G3) の EdgeTPU は2個 (その2)

はじめに

昨日のブログで Google Pixel 8 の SoC (G3) の EdgeTPU のデバイスドライバの Repo (rio) ができ、その後、ソースコードが公開されていた。

vengineer.hatenablog.com

G3 の コード名は ZUMA ?

Google君の生成AIに聞いたら、下記のような回答を得られた

  • ZUMA は、Google Pixel 8 シリーズのSoCのコードネームです。。。

ZUMA の EdgeTPU

ZUMA(G3) の EdgeTPU のデバイスドライバは、ここにあります。

rio-platform.c の中に、次のような記述がありました。GS301 と ZUMA は同じもののようです。

static const struct of_device_id edgetpu_of_match[] = {
    {
        .compatible = "google,edgetpu-gs301",
    },
    {
        .compatible = "google,edgetpu-zuma",
    },
    { /* end of list */ },
};

EdgeTPU の動コア数

ここに EDGETPU_NUM_CORES が 2、EDGET_NUM_SSMTS が 2 とあります。つまり、コア数が2個。

#define DRIVER_NAME "rio"

#define EDGETPU_NUM_CORES 2

#define EDGETPU_NUM_SSMTS 2

#define EDGETPU_MAX_STREAM_ID 64

EdgeTPU の動作周波数

G3 の EdgeTPU の動作周波数は、

  • 226MHz
  • 455MHz
  • 627MHz
  • 712MHz
  • 845MHz
  • 967MHz
  • 1119MHz
  • 1119MHz

の8段階です。

G1 の EdgeTPU の動作周波数は、

  • 226MHz
  • 455MHz
  • 627MHz
  • 836MHz
  • 967MHz
  • 1024MHz

の6段階です。

G2 の EdgeTPU の動作周波数

  • 226MHz
  • 455MHz
  • 627MHz
  • 712MHz
  • 845MHz
  • 967MHz
  • 1066MHz

の7段階です。

最大周波数

  • G1 : 1024MHz
  • G2 : 1066MHz
  • G3 : 1119MHz

dts

android-14.0.0_r0.8 の kernel の dts ファイルですが、何故か? gs101 (G1) と zuma (G3) だけで、G2のものがありません。

こちらには、G1 と G2 があります。違いは何なんでしょうかね。G1のファイル名は同じっぽいです。

zuma-tpu.dtsi には、下記にように ssmt (ssmt_d0/ssmt_d1)が 2つあります。また、cmu も追加されています。

 edgetpu: rio@1A000000 {
        compatible = "google,edgetpu-zuma";
        #dma-address-cells = <1>;
        #dma-size-cells = <1>;
        /* TPU uses regions under 0x18000000 for special purpose */
        dma-window = <0x18000000 0xE7FFF000>;
        /* Window of IOVAs available to each client's page-table */
        gcip-dma-window = <0x18000000 0xE7FFF000>;
        reg = <0x0 0x1A000000 0x300000
               0x0 0x1A300000 0x10000
               0x0 0x1A3E0000 0x10000
               0x0 0x1A3F0000 0x10000>;
        reg-names = "tpu", "cmu", "ssmt_d0", "ssmt_d1";

G1 の tpu (ds101-tpu.dtsi) では、ssmt は1つだけです。

 edgetpu: abrolhos@1CE00000 {
        compatible = "google,edgetpu-gs101";
        #dma-address-cells = <1>;
        #dma-size-cells = <1>;
        /* TPU uses regions under 0x18000000 for special purpose */
        dma-window = <0x18000000 0xE7FFF000>;
        reg = <0x0 0x1CE00000 0x200000
               0x0 0x1CCF0000 0x10000>;
        reg-names = "tpu", "ssmt";

おわりに

下記の記事には、

k-tai.watch.impress.co.jp

機械学習に特化したTPUは、GoogleのAIモデルが効率的に動作するように設計され、Pixel 6に搭載された「Tensor G1」と比べて2倍以上の機械学習モデルを端末上で実行できる。Googleでは、これを短期間で飛躍的な改善であるとアピールしている。

とあります。

となると、G1 の EdgeTPU が2個、G3(ZUMA)に入っていることになるのでしょうか?