Vengineerの戯言

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

Google Tensor G1とG2を使ったプロダクトとedge TPU

はじめに

Google Tensor G1とG2を使ったプロダクト名を Android Source Codes から探っていきます。

Kernel の gs の中の arch/arm64/boot/dts/google/Makefile から

Google Tensor G1 (gs101) を使ったプロダクト

Whitechapel が G1 (gs101) の codename

  • Slider : G1 (gs101) の開発用ボード
  • Slider2
  • Whitefin : G1 (Whitechapel)とPixel 5 の「redfin」を組み合わせたもの
  • Whitefin2
  • Whitefin2v2
  • Oriole : Pixel 6
  • Raven : Pixel 6 Pro
  • Bluejay : Pixel 6a

Google Tensor G2 (gs201) を使ったプロダクト

  • Cloudripper : G2 (gs201) の 開発ボード
  • Ravenclaw : Pixel 7a ????
  • Cheetah : Pixel 7
  • Panther : Pixel 7 Pro

G1 の edge TPU (abrolhos)

gs101-tpu.dts に、G1 の edge TPU (abrolhos) の情報がありました。

compatible = "google,edgetpu-gs101" とあります。

動作周波数は、

  • 1,024MHz
  • 967MHz
  • 836MHz
  • 627MHz
  • 455MHz
  • 266MHz
/ {
    /* TPU */
    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";
        interrupts = <GIC_SPI IRQ_NS_TPU_TPU IRQ_TYPE_LEVEL_HIGH>;
        hardware-id = <0x0 0xb>;
        iommus = <&sysmmu_tpu>;
        samsung,iommu-group = <&iommu_group_tpu>;
        status = "okay";
        memory-region = <&tpu_fw_reserved>;
        /* CSR Region for APM <-> TPU Mailbox */
        csr-iova = <0x17690000>;
        csr-phys = <0x17690000>;
        csr-size = <0x10000>;
        gsa-device = <&gsa>;
        tpu_dvfs_table_size = <6 2>; /*<row col>*/
        /* DVFS values calculated from average power with real-world workloads
        * on B0
        */
        tpu_dvfs_table = <
        /* when updating tpu_dvfs_table, update tpu_dvfs_table_size as well
         *    freq    power(mW)
         *----------------------------------
         */
            1024000   4819
             967000   4101
             836000   3085
             627000   1916
             455000   1213
             226000      0
        >;
        samsung,tzmp;
    };
    tpu_cooling: tpu-cooling {
        #cooling-cells = <2>;
    };
};

G2 の edge TPU (janeiro)

gs201-tpu.dtsi に、G2 の edge TPU (janeiro) の情報がありました。

compatible = "google,darwinn" とありますので、今までの edge TPU と基本的には同じようです。

動作周波数は、

  • 1,066MHz
  • 967MHz
  • 845MHz
  • 712MHz
  • 627MHz
  • 455MHz
  • 266MHz
/ {
    /* TPU */
    edgetpu: janeiro@1CE00000 {
        compatible = "google,darwinn";
        #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";
        interrupts = <0 IRQ_MAILBOX_TPU2AP_NS_TPU_0_TPU IRQ_TYPE_LEVEL_HIGH>,
            <0 IRQ_MAILBOX_TPU2AP_NS_TPU_1_TPU IRQ_TYPE_LEVEL_HIGH>,
            <0 IRQ_MAILBOX_TPU2AP_NS_TPU_2_TPU IRQ_TYPE_LEVEL_HIGH>,
            <0 IRQ_MAILBOX_TPU2AP_NS_TPU_3_TPU IRQ_TYPE_LEVEL_HIGH>,
            <0 IRQ_MAILBOX_TPU2AP_NS_TPU_4_TPU IRQ_TYPE_LEVEL_HIGH>,
            <0 IRQ_MAILBOX_TPU2AP_NS_TPU_5_TPU IRQ_TYPE_LEVEL_HIGH>,
            <0 IRQ_MAILBOX_TPU2AP_NS_TPU_6_TPU IRQ_TYPE_LEVEL_HIGH>,
            <0 IRQ_MAILBOX_TPU2AP_NS_TPU_7_TPU IRQ_TYPE_LEVEL_HIGH>;
        /* TODO(b/195608852): Enable coherency */
        iommus = <&sysmmu_tpu>;
        samsung,iommu-group = <&iommu_group_tpu>;
        status = "okay";
        memory-region = <&tpu_fw_reserved>, <&tpu_fw_ctx_reserved>;
        edgetpu,shareability = <0x1cc20000>;
        gsa-device = <&gsa>;
        tpu_dvfs_table_size = <7 2>; /*<row col>*/
        /*
         * DVFS values calculated from average power with real-world workloads
         */
        tpu_dvfs_table = <
            /* when updating tpu_dvfs_table, update tpu_dvfs_table_size as well
             *    freq    power(mW)
             *----------------------------------
             * TODO(b/192394098): update these with more accurate numbers for PRO
             */
                1066000   4420
                 967000   4101
                 845000   2578
                 712000   1982
                 627000   1749
                 455000   1277
                 226000      0
            >;
    };
    tpu_cooling: tpu-cooling {
            #cooling-cells = <2>;
    };
};

PCIe RC

G1/G2 の pcie 関連は、基本的に同じでした。

PCIe Device Driver

どうやら、Synopsys の IP っぽいです。

おわりに

Google Tensor G1 / G2 を使ったプロダクトと edge TPU の情報がわかりました。