Vengineerの妄想(準備期間)

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

TSMC Q4.2022/2022の決算を眺めてみた

はじめに

TSMC Q4.2022が出てきたので、眺めてみました。

Q4.2022

これです。

売上 : $19.93B、3Q.2022の$20.23$よりは-1.5%。Q4.2021の$15.74よりは+26.7%

年間で見ると、

2021 : $56.82B => 2022 : $75.88B と、+33.5%。凄いです。。。

プロセス別売上

  • 5nm : 32%
  • 7nm : 22%

右側のグラフを見ると、5nm の割合が増えています。。。

2021 vs 2022 のプロセス別売上比率

  • 5nm : 19% => 26%
  • 7nm : 31% => 27%

5nm と 7nm が同じぐらいになっています。ネット情報によると、7nm のラインが空いていると。。。もったいない。

来期(Q1.2023)の 5nm と 7nm の売上がどうなるかが気になりますね。

おわりに

TSMC、この2年間で驚異的な成長をしました。今年(2023年)は景気後退なので減るんでしょうかね。

2020 => 2021 では、+24.9% でした。

2020 の $45.51B => 2022 の $75.88B で、$30.37B と 66%ぐらい増えています。。。やっぱり凄いですね。

XilinxのVersal Netって何だ?

はじめに

Xilinxgithub を眺めていたら、Versal Net なるものを見つけました。

これ、何でしょうか?

Versal Net

linux-xlnx の dts/xilinx ディレクトリ内に、

なるファイルがありました。

このファイルの中に、

     cpu0: cpu@0 {
            compatible = "arm,cortex-a78";
            device_type = "cpu";
            enable-method = "psci";
            reg = <0>;
        };

なるものがありました。cortex-a78 x4 のクラスタが4個あります。

Versal では、cortex-a72x2 なので、(a78x4 ) x4 って、凄いですよね。

a78 って、ARMv8のaシリーズの一番いいCPUコアですよ。この上は、X-1ですからね。ARMv9になると、a710/a715とX-2/X-3です。

a78

arm の cortex-a78 のサイトによると、下図は説明のために引用します。

4コアが1クラスタになっています。

Versal Net VN-P-B2197-00 (Tenzing2) が実態のようです。

NVIDIA Bluefield-3 との比較

NVIDIA Bluefield-3 の仕様は、

  • Cortex-a78 x 16
  • L2 8MB
  • LLC 16MB
  • DDR5 x 2
  • IB NDR (400Gb/s) x 1 or NDR / HDR (200Gb/s) x 2

CPUコアの数では、Versal Net と同じですね。

Versal Net ipp/spp

Versal Net ipp というのは、

  • (Cortex-a78 x 4) x 2

こちらは、コア数が半分ですね。

おわりに

公式発表されていないプロダクトが github に載っていますが、これ、どういうことなんでしょうか?

Intel Sapphire RapidsはLaunchされる

はじめに

Intel Sapphire RapidsがやっとLaunchされたようです。第4世代Xeon SPです。既にこのブログでも何度も取り上げている Sapphire Rapds ですが、記録のためにブログに残します。

www.tomshardware.com

3種類のSapphire Rapids

下記のツイートに、3種類の Sapphire Rapids が載っています。

左が普通の Sapphire Rapids (XCC)、右が HBM付の Sapphire Rapids である Xeon Max。真ん中のが 1 die の Sapphire Rapids (MCC)

こちらのツイートには実物の写真が載っています。

MCC の仕様は、

  • a 9x7 mesh
  • up to 32 cores/LLC
  • four memory controller (2Ch DDR5)
  • three UPI links
  • one MCC Accelerator Complex (2x QAT/DLB + 1x DSA/IAA each)
  • 5x I/O (PCIe 5.0/CXL)

のようです。XCCは60コアでメモリコントローラが4つに対して、MCCは32コアで4つ。MCC、いいんじゃないですか?

型番は、どうやら、Xeon Platinum 8454H のようです。

northwood.blog.fc2.com

おわりに

長かったですね。。。

関連ブログ

vengineer.hatenablog.com

関連記事

pc.watch.impress.co.jp

Fungible、Microsoftが買収する

はじめに

このブログでも紹介した Fungible が Microsoft に買収されたようです。買収価格は書いてありませんね。

blogs.microsoft.com

Fungible

このブログに書いた Fungible。MIPSベースっぽいです。

vengineer.hatenablog.com

DPU は買収される運命?

IntelのIPUだけが、買収でないのは?

おわりに

半導体開発の会社は、IPOではなく、大きなところに買収されるのが最近の傾向ですね。

TenstorrentのAEGIS RISC-V CPU chipletは、128コア

はじめに

TTenstorrent は、RISC-Vコアを128個搭載した AEGIS CPU chiplet を発表

www.youtube.com

下記の図は、上記のYoutubeから説明のために引用します。

AEGIS とは?

下記が AEGIS Chiplet System Architecture のブロック図です。

4つのNUMAで、各NUMAでは32コアのRISC-Vコアがあります。AMDのEPYCやIntelのSapphire Rapidsみたいな感じですね。

各NUMAの32コアは、4つのブロックに分かれていて、各ブロックにAscalon Clusterと呼ばれているようです。

  • 8 Core/per Cluster
  • 230GB/S CHI coherency bus
  • 230GB/S AXI message passing bus
  • 12MB shaed cluster cache

Software and Silicon in Serbia w/ Ljubisa Bajic and Jim Keller では、

模様なスライドを公開していました。

  • TSMC 4nm
  • 16 CPU-cluster system : 128 Cores
  • 2.1 GHz, Vnom=0.75/TT/85C
  • Power : 95W
  • Area : 107mm2 (4nm)

die size が小さいです。Apple M1 (TSMC 5nm) が 119mm2 ですので、それよりもちょこっと小さいです。M1のCPUコアは、big x 4 が 3.2GHz、little x 4 が 2.064GHz です。

Ageis Server

AEGIS CPU chiplets をベースに、DDR chiplets, I/O chiplets, Accelerator chiplets にて、サーバーを構築するというものです。

  • 下図の左側は、DDR5 chiplet を6個使用したケース
  • 下図の右側は、HBM chiplets を4個利用したケース

のようです。

おわりに

AEGIS CPU chiplets + DDR5 chiplet + I/O chipltes に、Blackhole (TSMC 6nm) を接続した RISC-V ベースのAI Computer の構築もできそうです。

x86-64無しでシステムとしては、

  • NVIDIA : Grace-Hopper Superchip

がありますが、RISC-Vで構築とは、とてもチャレンジですね。

Google Tensor G1/G2のまとめ

はじめに

Google Tensor G1/G2については、下記のようにこのブログでも書きました。

vengineer.hatenablog.com

vengineer.hatenablog.com

Google Tensor G1/G2

Google Tensor G1 と G2 の簡単な比較

  • X1 の周波数が、2.8GHz => 2.85G
  • A76@2.25GHz => A78@2.35GHz
  • GPU : Mali-G78MP20 => G710MP07
  • ISP : 8bit => 10bit
  • DSP の追加
  • Edge TPU が新しくなった?

Google Tensor G1のベースとなったSoCは、Samsung Exynos2100 です。Exynos2100の仕様は、

  • CPU : Cortex X-1 x 1@2.9GHz + A78 x 3@2.8GHz + A55 x 4 @ 2.2GHz
  • GPU : Mali G78 MP14
  • NPU x 3 + DSP AI Engine

CPUの構成は、G2と似ていますね。GPUはコア数はちょっと少ない感じです。

G1/G2のAndroid Kernelおよび各種デバイスドライバの調査

G1/G2のAndroid Kernelおよび各種デバイスドライバの調査から、

  • EdgeTPU
  • AOC
  • DSP (G2で追加)

というものがあることが分かりました。

EdgeTPUは、ISPだけでなく、AOC(Audio関係、Input/Output) にも接続しています。G2では、DSPにも繋がっています。

また、gsa (Google Security Anchor) なるデバイスドライバがあり、EdgeTPU/AOC はこの gsa 経由でアクセスされています。

Trusty

なんで、gsa 経由になるかというと、G1 & Android 12 では、Trusty OS が使われていて、この Trusty を使っているのが gsa です。gsa にて、TrustZone にアクセスしています。

source.android.com

下図は、上記のサイトから説明のために引用します。どうやら、下記のような感じで、Trusty OS 側で何かをやってるんじゃないかな?と思っています。

上の図にあるように、AndroidからTrustyOSへのアクセスは、trusty device driver 経由で行います。trusty device driver の中では、smc にて、ATF Runtime 31 に入り、その中から TrustyOS にアクセスしているんじゃないのかな?と思っています。

Trusty Dispatcher については、Arm Trusted Firmware の中にありました。

このドキュメントによると、NVIDIA's Tegra SoC で Trusty を検証しているということなので、探してみましょう!

実装は、services/spd/trusty にありました。

下記のように、Pixel 6 が出たときに、Pixel 6 / 6 Pro & Android 12で何が変わったのかの説明をブログにて解説していますね。

developers-jp.googleblog.com

Trusty OS (TOS) パーティションなる説明があります。

TrustyOS そのものは、ここにあるものでしょうか?

Pixel 6 Pro の dmesg がここに載っています。

Android Virtual Framework

Android 13 からAndroid Virtual Framework なるものというものが導入されました。下図はAndroid Virtual Frameworkのサイトから説明のために引用します。

図の右側のpVMの説明

protected virtual machine(pVM)にて、メインの Android オペレーティング システム(「ホスト」)の隣で実行される、相互に信頼されていない隔離された実行環境(「ゲスト」)。pVM は pKVM で管理されます。 既存の高信頼実行環境(TEE)と比較すると、pVM は Microdroid と呼ばれるミニ Android ディストリビューションを含むリッチな環境を提供します。pVM は動的に使用でき、そこではサポート対象のすべてのデバイスで標準の API セットが提供されます。

AVF 対応アプリは、2 つの部分(ホストの Android OS 上で実行されるアプリ部分と pVM 内の Microdroid 上で実行されるアプリ部分)で構成されています。

Android 上で実行されるアプリ部分は、ユーザー インターフェース、機密性のないビジネス ロジックを実装し、pVM のライフサイクルを作成、管理します。

Microdroid 上で実行されるアプリ部分は、pVM 内で、安全に実行する必要があるすべてのタスクを実行します。

サンプルコードでは、下記の図(説明のために引用します)にあるように、Androidアプリ側でpVMで実行するコードをpVMにて実行します。pVM側ではAndroidアプリからの通信待ちになり、何かが来たら処理し結果を返すような感じになっています。

Virtualization のソースコードは、ここ にあります。

pvmfw のメインコードは、下記のようにRust で書かれています。

//! pVM firmware.
#![no_main]
#![no_std]
mod console;
mod psci;
mod uart;
use core::panic::PanicInfo;
use psci::{system_off, system_reset};
/// Entry point for pVM firmware.
#[no_mangle]
pub extern "C" fn main() -> ! {
    console::init();
    println!("Hello world");
    system_off();
    #[allow(clippy::empty_loop)]
    loop {}
}
#[panic_handler]
fn panic(info: &PanicInfo) -> ! {
    eprintln!("{}", info);
    system_reset();
    loop {}
}

vm も Rust で書かれています。

Microdroid は pVM で動作する小型の Android OS です。Microdroid を使用する必要はなく、VM は任意の OS で起動できます。しかし、pVM の主なユースケーススタンドアロン OS を実行することではなく、Android が提供するよりも優れた機密性と整合性が確保されるアプリの一部を実行するための分離された実行環境を提供することです。

基本的には、VMで起動されるものは上記にあるように、Androidアプリがセキュリティを高めるためにVMとして実行した方がいいものをです。

Microdroid は以下をサポートしていません。

  • android.* パッケージの Android Java API (注: java.* パッケージのコア Java API は、VM で ART APEX を有効にすることでサポートされます。)
  • SystemServer と Zygote
  • グラフィック / UI
  • HAL

この機能を使って、Linux (Ubuntu など) や Windows 10が動いているという報告もあります。

androplus.org

この機能は、現状では、Pixel 7 と 6 、つまり、Google Tensor G1/G2 搭載のものに限定されてはいます。

blog.esper.io

スライド : Android Virtualization Framework

おわりに

Google Tensor G1/G2、スペック的には、Snapdragon 8/8+ Gen1やGen2、MediaTek Dimensity 9000 に比べてと、1世代ぐらい古いですが、Androidを開発している利点から新しい機能を入れ込んでくるのは面白いですよね。

Google Tensor G2 の Edge TPU のデバイスドライバからわかったこと!(その4)

はじめに

Google Tensor G2 の Edge TPU のデバイスドライバからわかったこと!(その4)

vengineer.hatenablog.com

にて、Google Tensor G1の Edge TPU のデバイスドライバ (Android 12)の中の mailbox のこの部分

/* mailbox types */
#define EDGETPU_EXT_MAILBOX_TYPE_TZ        1
#define EDGETPU_EXT_MAILBOX_TYPE_GSA       2
#define EDGETPU_EXT_MAILBOX_TYPE_DSP       3

のように、TZ/GSA/DSP の3つがあったが、Google Tensor G1 & Android 13 では

/* External mailbox types */
#define EDGETPU_EXT_MAILBOX_TYPE_TZ        1
#define EDGETPU_EXT_MAILBOX_TYPE_GSA       2

のように、DSPは無くなっています。Google Tensor G2 & Android 13 でも同じでした。

GSA ってなんだ?

GSA って何だろうと思って、いろいろと調べたところ、

  • Google Security Anchor のこと

ソースコードは、ここ にあります。

GSAの中で、TPUのFirmwareのダウンロードAOCのFirmwareのダウンロードができるようになっています。

また、gsa_tz.{h,c} にて、Arm Trust Zone (trusty) を使っています。trusty は本家のLinux kernelには入っていなくて、Android の kernel/gs の drivers/trusty の中にあります。Arm/Arm64のSMCを使って、Arm Trust Zone の世界に入ります。

おわりに

GSAがどんなことをするのかがちょこっとわかりました。また、GSAの中では、Arm Trust Zone を使っているものわかりました。