はじめに
Google Tensor G1とG2を使ったプロダクト名を Android Source Codes から探っていきます。
Kernel の gs の中の arch/arm64/boot/dts/google/Makefile から
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
- 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 の情報がわかりました。