はじめに
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 っぽいです。