以下の内容はhttps://vengineer.hatenablog.com/より取得しました。


Grok xAIと共に作るSPIコントローラーのテストベンチ環境

はじめに

xAI の Grok さんに、

Grok さんは、SystemVerilogのテストベンチとDPI-Cを使ったC++のテストプログラムでのテスト環境を作れるますか? 対象は、APB(Arm Peripheral Bus) Interface の SPI コントローラです。

をお願いしてみました。

はい、SystemVerilogのテストベンチとDPI-C(Direct Programming Interface for C)を活用したC++のテストプログラムで、APBインターフェース付きのSPIコントローラーのテスト環境を作成できます。以下で、基本的な構造とサンプルコードを説明します。

全体の概要

  • 対象DUT (Design Under Test): APBスレーブとして動作するSPIコントローラー。APB経由でレジスタアクセスを行い、SPIマスター/スレーブとして外部デバイスと通信。
  • テスト環境の構成:
    • SystemVerilogテストベンチ: DUTをインスタンス化し、APBバス信号を駆動。DPI-Cを使ってC++側からテストシーケンスを呼び出し。
    • C++テストプログラム: DPI-C経由でSystemVerilog側を制御。テストケースを実装(例: レジスタ書き込み/読み込み、SPIデータ転送)。
    • シミュレーション環境: Synopsys VCS、Cadence Xcelium、Mentor Questaなどのツールでコンパイル・実行。DPI-CでC++をリンク。
  • 前提: SPIコントローラーのRTL(Verilog/SystemVerilog)が既に存在するものと仮定。APBは標準的なプロトコル(PSEL, PENABLE, PADDR, PWRITE, PWDATA, PRDATAなど)を使用。
  • 注意: このサンプルは簡易版。実際のプロジェクトでは、UVM(Universal Verification Methodology)で拡張したり、エラー処理を追加してください。コンパイル時は、DPIヘッダーを生成し、C++を共有ライブラリとしてリンク。

1. SystemVerilogテストベンチ (testbench.sv)

このファイルでDUTをインスタンス化し、DPI-C関数を宣言。C++から呼び出されるエクスポート関数を実装。

// testbench.sv

`include "spi_controller.sv"  // DUTのRTLファイルをインクルード(仮定)

import "DPI-C" function void c_test_init();  // C++から呼び出す初期化関数(オプション)
export "DPI-C" function sv_apb_write;  // C++から呼び出されるAPB書き込み関数
export "DPI-C" function sv_apb_read;   // C++から呼び出されるAPB読み込み関数
export "DPI-C" function sv_spi_check;  // SPI転送結果チェック関数(例)

module testbench;

  // APB信号定義
  logic clk, rst_n;
  logic psel, penable, pwrite;
  logic [31:0] paddr, pwdata;
  logic [31:0] prdata;
  logic pready, pslverr;

  // SPI信号定義(例: マスター側)
  logic spi_mosi, spi_miso, spi_sck, spi_cs;

  // DUTインスタンス
  spi_controller dut (
    .clk(clk),
    .rst_n(rst_n),
    .psel(psel),
    .penable(penable),
    .pwrite(pwrite),
    .paddr(paddr),
    .pwdata(pwdata),
    .prdata(prdata),
    .pready(pready),
    .pslverr(pslverr),
    .spi_mosi(spi_mosi),
    .spi_miso(spi_miso),  // 外部デバイスからフィードバック(テストベンチでモデル化)
    .spi_sck(spi_sck),
    .spi_cs(spi_cs)
  );

  // クロック生成
  initial begin
    clk = 0;
    forever #5 clk = ~clk;
  end

  // リセット
  initial begin
    rst_n = 0;
    #10 rst_n = 1;
  end

  // DPI-Cエクスポート関数: APB書き込み
  function void sv_apb_write(input int addr, input int data);
    @(posedge clk);
    psel = 1;
    penable = 0;
    paddr = addr;
    pwrite = 1;
    pwdata = data;
    @(posedge clk);
    penable = 1;
    wait(pready);
    psel = 0;
    penable = 0;
  endfunction

  // DPI-Cエクスポート関数: APB読み込み
  function int sv_apb_read(input int addr);
    int data;
    @(posedge clk);
    psel = 1;
    penable = 0;
    paddr = addr;
    pwrite = 0;
    @(posedge clk);
    penable = 1;
    wait(pready);
    data = prdata;
    psel = 0;
    penable = 0;
    return data;
  endfunction

  // DPI-Cエクスポート関数: SPI転送チェック(例: 簡易)
  function void sv_spi_check();
    // ここでSPI信号を監視し、結果をC++に返す(実装例省略)
    $display("SPI check performed");
  endfunction

  // テスト開始(C++から制御される)
  initial begin
    // C++側から制御されるため、ここは待機
    #1000 $finish;  // タイムアウト終了
  end

endmodule

2. DPI-Cヘッダーファイル (dpi_header.h)

シミュレータで生成されるDPIヘッダー(例: svdpi.h)を基に、C++側で使用。実際にはシミュレータが自動生成しますが、参考として。

// dpi_header.h (シミュレータ生成例)
extern void sv_apb_write(int addr, int data);
extern int sv_apb_read(int addr);
extern void sv_spi_check();

3. C++テストプログラム (test_program.cpp)

DPI関数を呼び出してテストを実行。コンパイル時は共有ライブラリ(.so)としてビルド。

// test_program.cpp

#include <iostream>
#include "dpi_header.h"  // DPI関数宣言

int main() {
    std::cout << "Starting C++ test program for APB-SPI Controller" << std::endl;

    // テストケース1: レジスタ書き込み(例: SPIコントロールレジスタ addr=0x00, data=0x01で有効化)
    sv_apb_write(0x00, 0x01);
    std::cout << "Wrote to control register" << std::endl;

    // テストケース2: データ書き込み(例: TXデータレジスタ addr=0x04, data=0xAA)
    sv_apb_write(0x04, 0xAA);
    std::cout << "Wrote TX data" << std::endl;

    // テストケース3: レジスタ読み込み(例: ステータスレジスタ addr=0x08)
    int status = sv_apb_read(0x08);
    std::cout << "Read status: " << std::hex << status << std::endl;

    // テストケース4: SPI転送チェック
    sv_spi_check();
    std::cout << "SPI check completed" << std::endl;

    // 追加のテストケースをここに実装(ループ、条件分岐など)

    std::cout << "Test completed" << std::endl;
    return 0;
}

4. ビルドと実行方法

  • コンパイル:
    • SystemVerilog: vcs -sverilog -dpi -P dpi.tab testbench.sv -o simv(VCS例。dpi.tabでDPI関数を指定)。
    • C++: g++ -shared -o test_lib.so test_program.cpp(共有ライブラリとして)。
    • リンク: シミュレータでC++ライブラリをロード(例: VCSの-loadオプション)。
  • 実行: ./simv -gui でシミュレーション開始。C++側はDPI経由で呼び出されるが、メインはテストベンチ側。C++をスタンドアロンでテストしたい場合、モックDPI関数を追加。
  • 拡張: SPIスレーブ側をテストベンチでモデル化(例: BFM - Bus Functional Model)。エラー注入やランダムテストをC++で実装。

この環境で、C++から柔軟にテストシーケンスを記述でき、SystemVerilogでハードウェア信号を扱えます。実際のSPIコントローラーのレジスタマップに合わせてアドレス/データを調整してください。追加の詳細が必要なら、教えてください!

すぐに実行したいので、Makefile も作ってもらいました。

以下は、前回のサンプル(testbench.sv + test_program.cpp)をVCSでDPI-Cを使って実行するためのMakefile例です。

主な前提: - シミュレータ:Synopsys VCS(64bit版を想定) - C++コードは共有ライブラリ(.so)としてコンパイル - C++側からSVのexport関数を呼び出すスタイル(前回の例と同じ) - ファイル名: - testbench.sv …… テストベンチ(DUT含む) - test_program.cpp …… C++テストプログラム - dpi_header.h …… (シミュレータが生成するsvdpi.hなどをインクルード)

Makefile (VCS向け)

# Makefile for APB-SPI Controller DPI-C testbench with VCS

# ------------------------------
# 基本設定
# ------------------------------
VCS          = vcs
VCS_OPTS     = -sverilog -full64 -debug_all -timescale=1ns/1ps \
               -notice -line +v2k -kdb +acc+rw \
               +define+SIMULATION

# C++コンパイラ設定
CXX          = g++
CXXFLAGS     = -Wall -Wextra -g -fPIC -m64 -std=c++11 -O2
LDFLAGS      = -shared

# ファイル名
SV_TOP       = testbench
SV_FILE      = $(SV_TOP).sv
CPP_FILE     = test_program.cpp
LIB_NAME     = dpi_test
LIB_FILE     = lib$(LIB_NAME).so

# 実行ファイル名
SIMV         = simv

# 出力ディレクトリ(任意)
OUT_DIR      = ./build
LOG_FILE     = $(OUT_DIR)/compile.log

# ------------------------------
# ターゲット
# ------------------------------
all: $(SIMV)

# 1. C++を共有ライブラリにコンパイル
$(LIB_FILE): $(CPP_FILE)
    @mkdir -p $(OUT_DIR)
    $(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -o $(OUT_DIR)/$@

# 2. VCSでSystemVerilog + DPI共有ライブラリをコンパイル
$(SIMV): $(SV_FILE) $(LIB_FILE)
    @mkdir -p $(OUT_DIR)
    $(VCS) $(VCS_OPTS) \
        $(SV_FILE) \
        $(OUT_DIR)/$(LIB_FILE) \
        +incdir+. \
        -L$(OUT_DIR) -l$(LIB_NAME) \
        -o $(OUT_DIR)/$@ 2>&1 | tee $(LOG_FILE)

# シミュレーション実行(GUIあり)
run: $(SIMV)
    @cd $(OUT_DIR) && ./$(SIMV) -gui +UVM_NO_RELNOTES &

# コマンドライン実行(GUIなし)
run-cli: $(SIMV)
    @cd $(OUT_DIR) && ./$(SIMV) -ucli -do "run -all; quit -f"

# クリーン
clean:
    rm -rf $(OUT_DIR) csrc *.da *.log *.key DVEfiles *.h *.tab *.so ucli.key

.PHONY: all run run-cli clean

使い方

  1. ファイルを同じディレクトリに置く
    testbench.sv
    test_program.cpp

  2. 実行例

# 全部ビルド
make

# ビルドしてGUIでシミュレーション開始
make run

# コマンドラインで最後まで走らせる
make run-cli

# クリーンアップ
make clean

よく使われる追加オプション(必要に応じて追加)

目的 VCSオプション例 Makefileへの追加例
UVMを使う場合 -ntb_opts uvm VCS_OPTS += -ntb_opts uvm
波形をfsdbで保存 +fsdbfile=wave.fsdb -debug_access+all VCS_OPTS += +fsdbfile=wave.fsdb ...
Verdiデバッグ強化 -debug_access+all -kdb 既に入っている
C++側にSVヘッダが必要な場合 -P dpi.tab(古いスタイル) 最近は不要なことが多い
64bit明示 -full64 既に入っている
より詳細なログ -notice -diag VCS_OPTS += -notice -diag

注意点(2025-2026年現在のVCS事情)

  • -full64 は最近でもよく使われますが、最新VCSではデフォルト64bitの場合もあるので、環境次第で削除可。
  • lib*.so-Ldir -l名 でリンクする方法が最近は推奨されています(直接 .so を指定する方法もまだ動きますが)。
  • C++側で extern "C" が必要な関数は、export/importで正しくマングリング回避してください。
  • svdpi.h はVCSコンパイル時に自動生成されるので、通常は test_program.cpp#include "svdpi.h" と書けばOKです。

テストプログラムは、1つだけじゃないので、その対応もしてもらった

テストプログラムは、1つだけじゃなくて、たくさんあるんだよ。その点も対応して。

はい、了解しました!
テストプログラムが複数ある場合(例: test_basic.cpp, test_stress.cpp, test_error.cpp など)、それぞれを独立したC++テストケースとして扱い、1回のシミュレーションで1つのテストプログラムだけを実行するのが最もシンプルで一般的です。

以下のようにMakefileを拡張します。

改善方針

  • C++ソースを tests/ ディレクトリにまとめる
  • 各テストプログラム → 対応する共有ライブラリ(例: libtest_basic.so, libtest_stress.so)を生成
  • シミュレーション実行時に どのテストを使うか引数で指定make run TEST=basic のように)
  • デフォルトは basic など

ディレクトリ構造例(推奨)

project/
├── testbench.sv               # SVテストベンチ(変更なし)
├── spi_controller.sv          # DUT
├── tests/                     # ← ここに複数テストを置く
│   ├── test_basic.cpp
│   ├── test_stress.cpp
│   ├── test_error_injection.cpp
│   └── common_dpi.cpp         # (オプション)共通コードがあれば
├── Makefile
└── build/                     # 出力先(自動生成)

更新版 Makefile(複数テスト対応)

# Makefile for APB-SPI Controller DPI-C testbench with multiple C++ tests (VCS)

# ------------------------------
# 設定
# ------------------------------
VCS          = vcs
VCS_OPTS     = -sverilog -full64 -debug_all -timescale=1ns/1ps \
               -notice -line +v2k -kdb +acc+rw \
               +define+SIMULATION

CXX          = g++
CXXFLAGS     = -Wall -Wextra -g -fPIC -m64 -std=c++17 -O2 -I.
LDFLAGS      = -shared

SV_TOP       = testbench
SV_FILE      = $(SV_TOP).sv
OUT_DIR      = ./build
LOG_FILE     = $(OUT_DIR)/compile.log

# テストプログラム一覧(拡張しやすいよう変数化)
TESTS        ?= basic stress error_injection  # ← ここにテスト名を追加していく
# デフォルトのテスト(make run だけ叩いたとき)
DEFAULT_TEST = basic

# 自動で .cpp と .so を対応付ける
TEST_CPPS    = $(addprefix tests/test_,$(addsuffix .cpp,$(TESTS)))
TEST_LIBS    = $(addprefix $(OUT_DIR)/libtest_,$(addsuffix .so,$(TESTS)))

# 現在選択中のテスト(make run TEST=xxx で上書き)
TEST         ?= $(DEFAULT_TEST)
CURRENT_LIB  = $(OUT_DIR)/libtest_$(TEST).so

# ------------------------------
# メインターゲット
# ------------------------------
all: $(SIMV) $(TEST_LIBS)

simv: $(OUT_DIR)/$(SV_TOP)

# 1. 各テストプログラム → 共有ライブラリ生成
$(OUT_DIR)/libtest_%.so: tests/test_%.cpp
    @mkdir -p $(OUT_DIR)
    $(CXX) $(CXXFLAGS) $< $(LDFLAGS) -o $@

# 共通コードがある場合はここに追加例
# $(OUT_DIR)/libtest_%.so: tests/test_%.cpp tests/common_dpi.o
#   $(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -o $@

# 2. VCSコンパイル(SV + 選択したテストのライブラリをリンク)
$(OUT_DIR)/$(SV_TOP): $(SV_FILE) $(CURRENT_LIB)
    @mkdir -p $(OUT_DIR)
    $(VCS) $(VCS_OPTS) \
        $(SV_FILE) \
        $(CURRENT_LIB) \
        +incdir+. \
        -L$(OUT_DIR) -ltest_$(TEST) \
        -o $@ 2>&1 | tee $(LOG_FILE)

# ------------------------------
# 実行コマンド
# ------------------------------
# GUIで実行(例: make run TEST=stress)
run: $(OUT_DIR)/$(SV_TOP)
    @echo "Running simulation with test: $(TEST)"
    @cd $(OUT_DIR) && ./$(SV_TOP) -gui +UVM_NO_RELNOTES &

# コマンドライン実行(最後まで走らせて終了)
run-cli: $(OUT_DIR)/$(SV_TOP)
    @echo "Running CLI simulation with test: $(TEST)"
    @cd $(OUT_DIR) && ./$(SV_TOP) -ucli -do "run -all; quit -f"

# 全部のテストを順番に実行(CI/回帰用)
regression: all
    @for t in $(TESTS); do \
        echo "===== Running test: $$t ====="; \
        $(MAKE) run-cli TEST=$$t || exit 1; \
    done

# クリーン
clean:
    rm -rf $(OUT_DIR) csrc *.da *.log *.key DVEfiles *.h *.tab ucli.key *.so *.dSYM

# ヘルプ
help:
    @echo "Usage:"
    @echo "  make                  # デフォルトテスト($(DEFAULT_TEST))をビルド"
    @echo "  make all              # 全テストのライブラリ + simv"
    @echo "  make run TEST=stress  # stressテストをGUIで実行"
    @echo "  make run-cli TEST=error_injection"
    @echo "  make regression       # 全テストを順番にCLI実行"
    @echo "Available tests: $(TESTS)"

.PHONY: all run run-cli regression clean help

使い方の例

# デフォルト(basic)でビルド & GUI実行
make run

# stressテストだけ実行
make run TEST=stress

# エラー注入テストをCLIで
make run-cli TEST=error_injection

# 全部のテストを一気に回帰実行
make regression

# 新しいテストを追加したいとき
# 1. tests/test_new_feature.cpp を作成
# 2. Makefileの TESTS に new_feature を追加
# → 自動で対応

C++側の実装Tips(複数テスト共通化)

test_xxx.cpp で以下のように書くと便利です:

// tests/test_basic.cpp
#include "svdpi.h"
extern "C" {
    extern void sv_apb_write(int addr, int data);
    extern int  sv_apb_read(int addr);
    // ...
}

int main() {
    printf("[BASIC] Starting test...\n");
    
    sv_apb_write(0x00, 0x00000001);  // SPI enable
    sv_apb_write(0x04, 0x0000005A);  // TX data
    // ... 基本シーケンス

    printf("[BASIC] Test done.\n");
    return 0;
}
  • 共通部分(ログ関数、エラーチェック、ユーティリティ)は tests/common.hpp や別ファイルに分けてインクルード
  • テスト名を環境変数や引数で受け取って表示させることも可能(getenv("TEST_NAME") など)

これでテストケースが増えてもメンテナンスしやすく、拡張しやすい形になります。
何か特定のテストケース例(stressやerror injectionなど)も欲しい場合、教えてください!

おわりに

サクッと、作ってくれました。

2009年12月に下記のようなことをやりましたが、このくらいのことなら、生成AIさんたちは、もうできちゃいますね。。。(笑)

vengineer.hatenablog.com

AIチップの進化: MTIA 300から500への展開

はじめに

Meta が MTIA 300, 400, 450, 500 を発表しました。

過去の資料との比較

Broadcom Enabling AI Infrastructure Investor Meetingの以下の資料 (2024年3月24日) の Meta と思われるスライドにあるものと比較します。

MTIA 300

ほぼ当たり

MTIA 400

ほぼ当たり

MTIA 450

MTIA 400 の改善版っぽい

MTIA 500

HBMが8個 or 12個?

MTIA 400 からは、1 Rack 72 Package

MTIA 400, 450, 500 は、72 Package 構成

Bloomberg の Youtube Short から

下記の動画にもMTIA 300/400関連が出てきましたので、記録に残します。(画像を説明のために引用します)

www.youtube.com

MTIA 300 の パッケージ と ボード と ラック (上に8基、下に8基で、1ラック16基)

MTIA 400 の パッケージ と ボードに搭載された MTIA 400

MTIA 400 Compute Tray (1基のMTIA 400、CPUは何でしょうね。8 + 8 の DRAM を接続していますね)

Chipから出ているネットワークは、紫色で各 パッケージからは1組

Grok さんの回答

MetaのMTIA(Meta Training and Inference Accelerator)は、Meta(旧Facebook)が自社で開発しているAI専用アクセラレーターチップシリーズです。主に推薦システム(Ranking & Recommendation:R&R)の推論・学習や、生成AI(GenAI、特にLlama系モデル)の推論(inference)に特化して設計されています。

2023〜2024年頃に公開されたMTIA v1 / v2(旧称MTIA 1、MTIA 2 / 2iなど)の後継として、2025〜2026年にかけて急加速した開発が行われ、MTIA 300 / 400 / 450 / 500という4世代がほぼ連続で発表・展開されています(2026年3月時点の最新情報)。

各世代の概要(2026年3月時点)

世代 主な用途・最適化対象 展開状況(2026年3月) 主な進化ポイント 備考・特徴
MTIA 300 R&Rモデルの学習(training)中心 数週間前に生産投入済み R&R向け基盤強化、GenAIへの橋渡し GenAIブーム前からのR&R最適化チップ。後続世代の基礎になった
MTIA 400 GenAI + R&R(両対応)、特にGenAI推論対応強化 テスト完了 → データセンター展開直前/開始中 コスト・性能で商用製品と競合レベルに到達 72チップ規模のラック構成可能。初めて「コスト削減+競争力ある生性能」を実現
MTIA 450 GenAI推論最優先(HBM強化) 2026〜2027年に本格展開予定 HBM帯域がMTIA 400の約2倍(高速化) 推論需要急増に対応。コードネーム「Arke」?
MTIA 500 GenAI推論最先端(メモリ容量・帯域さらに増強) 2027年頃の本格展開予定 HBM帯域が450からさらに+50%、容量も大幅増 現時点で最も高性能。コードネーム「Astrid」? メモリヘビーな大規模推論向け

共通のポイント(MTIA 400以降)

  • 同じ筐体・ラック・ネットワークインフラを使いまわせる設計
    → 新しいチップが出ても物理的なデータセンター改修が最小限で済む(これが展開速度の速さの秘密)
  • 主にHBM(High Bandwidth Memory)を採用し、世代が進むごとに容量と帯域を大幅強化
  • NVIDIAやAMDのGPUと競合するポジションだが、特に推論コストを下げることを最優先
  • 大規模言語モデル(LLM)の事前学習(pre-training)のような超巨大トレーニングは対象外
    → Metaはそこは引き続きNVIDIA GPUを大量に使う方針
  • システム例:MTIA 400以降は72チップ規模の液体冷却ラックでNVIDIA NVL72やAMD Heliosに似た構成が可能

なぜこんなに急ピッチで4世代も?

MetaのAI需要(特にInstagram/Facebookの推薦+Llamaを使った生成AI推論)が爆発的に増えているため。
GPUだけに頼ると供給リスクとコストが跳ね上がるため、自社チップでTCO(総所有コスト)を劇的に下げる戦略をとっています。

簡単に言うと:

  • 300 → R&R学習の仕事馬(すでに動いてる)
  • 400 → GenAI時代の本格対応チップ(いま一番注目)
  • 450 / 500 → 2026-2027年の推論爆増に対応するメモリ強化版

2026年現在はまさにMTIA 400が本格展開フェーズに入り、450/500が追いかけてくるタイミングですね。

おわりに

結果的に、プロダクションの時期は、

  • MTIA 100 (v1) : 2023
  • MTIA 200 (v2) : 2024
  • MTIA 300 : 2025
  • MTIA 400 : 2026
  • MTIA 450 : 2027
  • MTIA 500 : 2028

って感じですかね。

Apple AシリーズのCPUコアの構成について、A20 Proにて、2コア + 4コア構成は変更されるか?どうだろうか?

はじめに

Apple は長い間、2コア+4コアの構成取っています。

一方、Qualcomm は、高クロックと「全大コア(All-Big)という構成になっています。

この点について、Gemini さんは、どのように考えるのかを教えてもらいました。

Geminiさんへの質問

Appleは、かなり長い間、2コア+4コアの構成を取っているが、この歴史と利点・欠点をまとめて、

AppleがiPhone向けSoCにおいて「2コア(高性能)+4コア(高効率)」の合計6コア構成を貫いているのは、モバイルデバイスにおける「ユーザー体験(UX)」と「物理的制約」のバランスを極限まで追求した結果です。

この構成の歴史、そしてQualcommなどの競合が「全大コア化」へ舵を切る中で、Appleがこの形を守り続ける利点と欠点をまとめます。


1. 「2+4」構成の歴史:いつから始まったか

Appleがこの構成を定着させたのは、2017年の A11 Bionic からです。

  • 前史 (A6〜A9): デュアルコア(2コア)時代。Appleは早い段階から「コア数よりも1コアあたりの強さ(IPC)」を重視していました。
  • 転換点 (A10 Fusion): 初めて「2大コア + 2小コア」の計4コアを採用。ただし、当時は大コアか小コアのどちらか一方のペアしか動かせない仕様でした。
  • 定着 (A11 Bionic 〜 現在): 「2大 (Performance) + 4小 (Efficiency)」の6コア構成へ。すべてのコアを同時に駆動できる第2世代非対称マルチプロセッシング(AMP)を実現し、これがA18 Pro/A19 Proまで続く黄金比となりました。

2. 利点:なぜ「2+4」なのか

Appleの強みは、「圧倒的なシングルスレッド性能」と「アイドル時の極低消費電力」の両立にあります。

  • シングルスレッド至上主義: スマートフォンの操作感(アプリの起動、スクロールの滑らかさ、Webブラウジング)は、依然として1つのコアの性能に大きく依存します。Appleはダイ面積を惜しみなく使い、他社より一回り巨大なPコアを2つ置くことで、世界最高クラスの応答性を維持しています。
  • 高効率コア(Eコア)の役割: iPhoneの利用時間の大部分は、音楽再生、通知の待機、バックグラウンドの同期など、負荷の低いタスクです。4つのEコアはPコアの10分の1以下の電力でこれらを処理します。これにより、バッテリー容量が限られるiPhoneでも長時間の駆動が可能になります。
  • OSとの垂直統合: Appleはハードとソフト(iOS)を同時に開発しているため、「どのタスクをどのコアに割り当てるか(スレッドスケジューリング)」の最適化が完璧です。無駄な大コアの駆動を抑えられるため、熱密度の制御が容易になります。

3. 欠点:今後の課題

一方で、競合が「全大コア(Snapdragon 8 Eliteなど)」へ移行する中、いくつかの弱点も浮き彫りになっています。

  • マルチスレッド性能の限界: 動画編集(書き出し)や、高度なマルチタスク処理においては、中〜大型コアを8つ搭載する競合にベンチマークスコアで追い抜かれる場面が増えています。
  • ゲームにおけるボトルネック: 最新のAAAタイトル級ゲームでは、複数のコアに負荷が分散されます。2つのPコアだけでは負荷が集中しやすく、結果としてサーマルスロットリング(熱による速度低下)を招きやすいという側面があります。
  • AI処理(オンデバイスAI)への対応: 生成AIの推論などは、CPUの並列性能も重要になります。AppleはこれをNPU(Neural Engine)で補っていますが、CPU全体の計算資源としては「2+4」が将来的に手狭になる可能性があります。

4. AppleとQualcommの設計思想の対比

特徴 Apple (2+4 構成) Qualcomm (全大コア 2+6)
設計思想 「一点豪華主義」:巨大なPコアで瞬発力を出す 「物量作戦」:中型コアを並べて総出力を出す
面積効率 Pコアが巨大。Eコアは極めて小さい 全コアが一定以上のサイズを持つ
主なターゲット 瞬間的なレスポンス、省電力待機 ゲーミング、持続的な高負荷処理

総括

Appleにとって「2+4」は、「iPhoneという限られた熱容量とバッテリーの中で、最高のレスポンスを出すための解」です。

エンジニアリングの視点で見れば、Appleは「コアを増やす」という安易な道を選ばず、「1コアのIPC(命令実行効率)をどこまで深くできるか」という、より困難な物理設計に挑戦し続けていると言えます。

今後、Apple Intelligence(AI)の進化に伴い、A20世代以降でこの構成が「3+4」や「4+4」に変化するのか、あるいはNPUの強化で「2+4」を維持し続けるのかが、半導体業界の大きな注目点です。

おわりに

A20 は、TSMC N2 での開発になりますが、上記の件から、2 + 4 コアの構成から変わるのかが気になります。

4 + 4 の構成になると、M1と同じ。

さあ、どうなりますかね。

Apple A17 Pro/A18 Pro/A19 Pro と Qualcomm Snapdragon 8 Elite (Gen 4)/8 Elite Gen 5を開発していますが、Chip の Die Shot を含めて、違いを考え、特徴を抽出してみて

はじめに

昨日は、Geminiさんに聞いてみましたが、今日は Claude に聞いてみました。

Claude さんに

Appleは、N3B, N3E, N3P でA17 Pro, A18 Pro, A19 Proを開発し、Qualcommは、N3E、N3Pで、Snapdragon 8 Elite, 8 Elite Gen5を開発していますが、Chip の Die Shot を含めて、違いを考え、特徴を抽出してみて

まず、関連情報を調べてから、Die Shotの画像も探してみます。情報が揃いました。詳細な分析レポートを作成します。収集した情報をもとに、包括的な分析をまとめます。


TSMC 3nm ファミリーとApple / Qualcomm チップの比較分析


1. TSMC N3ファミリーの全体像

まず前提として、N3ファミリーの系譜を整理します。

N3B (N3) ──→ [孤立した一代限りのノード]
                 ↓
N3E ──→ N3P ──→ N3X (HPC向け超高性能)
         └→ N3S (密度最適化)

N3Eを基盤としてN3P、N3X、N3S、N3RFといった派生ノードが存在し、N3PとN3Xは高性能アプリケーション向けです。

重要なのは、N3EはN3B(N3)とIPに互換性がなく、設計を一から作り直す必要があるという点で、N3Eが実質的な「メインストリーム3nmノード」として機能しています。N3PはN3Eのフォローアップとして、IP互換性を維持しながらわずかな性能・電力改善を提供します。


2. 各ノードの技術的特性比較

特性 N3B (N3) N3E N3P
EUVレイヤー数 ~25層(N5の約2倍) 削減・簡略化 N3Eの光学縮小版
IP互換性 N3Eと非互換 N3Pと互換 ✓ N3Eと互換 ✓
FinFLEX 非対応 対応 ✓ 対応 ✓
対N5密度改善 限定的 約1.6×(論理) N3E比+4%
性能(対N5) 小幅改善 +15〜20%(同電力) N3E比+5%
電力(対N5) 小幅改善 -30〜35%(同性能) N3E比-5〜10%
歩留まり 苦戦 「great」評価 N3Eに近い水準
ウェーハコスト 高い(N3Eより高価) N5比+約35% 効率的(光学縮小)
対象用途 スマートフォン・HPC スマートフォン・HPC両方 クライアント・データセンター

N3PはN3Eの光学縮小版で、設計ルールとIPの互換性を保ちつつ、同リーク電流で5%高い性能、同周波数で5〜10%低消費電力、そして4%のトランジスタ密度向上を実現します。


3. Apple チップのノード戦略とDie Shot分析

Apple A17 Pro(iPhone 15 Pro) — N3B (N3)

A17 Proは190億トランジスタを搭載し、TSMCのN3プロセスで製造された最初の量産3nm SoCです。 A17 Proのダイサイズは103.8mm²です。

N3B採用の戦略的意味: Appleが業界で唯一N3B(初代N3)を採用した顧客となりました。当時Appleは独占的にN3B(A17 Pro、M3シリーズ)を使用していました。 高コスト・低歩留まりのノードをAppleが単独で支えることで、TSMCとの優先的な関係を強固にする戦略的投資でした。

Apple A18 Pro(iPhone 16 Pro) — N3E

A18とA18 ProはどちらもTSMCのN3Eプロセスで製造され、それぞれ90mm²と105mm²のダイサイズを持ちます。

Die Shotで確認できること: - A18 Proは105mm²のダイサイズに対し、A17 Proは103.8mm²であり、A18 Proのほうがわずかに大きい。N3EはN3Bより密度が低いため、同等かそれ以上のトランジスタ数を収めるにはダイ面積の拡大が必要でした。 - A18とA18 Proは別設計チップであることがDie Shotで確認されており、チップ・ビニング(選別再利用)ではありません。 ダイ上でSLCキャッシュの領域差と追加GPUコアブロックが確認されています。

Apple A19 Pro(iPhone 17 Pro) — N3P

A19 ProはTSMCの第3世代3nm「N3P」プロセスで製造され、トランジスタ数は約250〜300億と推定されます。N3Pによる高密度化が反映された数字です。

Die Shot分析によると、A19は2つのPコア(8MB L2共有)、4つのEコア(4MB L2共有)という構成が確認されています。

AppleのA-seriesノード選択パターンのまとめ:

チップ ノード ダイサイズ トランジスタ数 位置づけ
A17 Pro N3B 103.8mm² 190億 業界唯一の先行採用
A18 Pro N3E 105mm² 非公表(増加) 量産主流ノードに移行
A19 Pro N3P 未確定 250〜300億(推定) 光学縮小による密度向上

4. Qualcomm チップのノード戦略とDie Shot分析

Qualcomm Snapdragon 8 Elite(Galaxy S25等) — N3E

Snapdragon 8 EliteはAppleのOryon CPUアーキテクチャを採用した最初のQualcommスマートフォン向けSoCで、TSMCのN3Eプロセスで製造されています。

TechInsightsの解析によると、GPU領域ではFinFLEX標準セルライブラリが使用されており、「2-1 fin」構成のFinFLEXライブラリが確認されています。

Qualcomm Snapdragon 8 Elite Gen 5(2025年末発表) — N3P

Snapdragon 8 Elite Gen 5はTSMCのN3Pプロセスで製造され、4.6GHzに到達する2コアのハイパフォーマンスコアと3.6GHzの6コアを持つ第3世代Oryon CPUを搭載しています。

N3P採用により、前世代比で約20%の性能向上と約16%の消費電力削減を達成し、HexagonのNPUも37%高いスループットを実現しています。

Qualcommのノード選択パターン:

チップ ノード CPU GPU 特徴
SD 8 Elite N3E Oryon 2nd-gen (2+6) Adreno 初のカスタムArm設計
SD 8 Elite Gen 5 N3P Oryon 3rd-gen (2+6) Adreno改 PC版Oryonと同系統

5. AppleとQualcommの本質的な違い:Die Shotが示す設計哲学

Die Shotの比較から読み取れる最大の違いは、アーキテクチャ設計思想です。

Apple — 垂直統合・ユニファイドメモリ中心設計

Die Shotで目立つのは巨大なSLC(System Level Cache)ブロックです。A18 ProではA18よりも大きなSLCキャッシュが確認されており、これが同一CPUクラスタながらA18 ProがA18を上回るシーンが生まれる原因です。 Appleのダイは「キャッシュ+CPU+GPU+Neural Engine」が密に統合され、ユニファイドメモリアーキテクチャに最適化された配置が特徴です。

対照的に、Snapdragon 8 Elite Gen 5はTSMCのN3P製造ながら、Appleのような Fan-Out RDL(再配線層)パッケージングではなく、有機基板ベースのiPoP(インターポーザPoP)を採用しています。 これはAppleのInFO-PoP(TSMCの高密度Fan-Out PoP)とは異なるパッケージング戦略です。

Qualcomm — 汎用エコシステム・モデム統合設計

Snapdragon のDie Shotでは、巨大なOryon CPUコアブロック(キャッシュが非常に大きい)と5G Modem、ISP、Hexagon NPUの独立ブロックが明確に分離した配置になっています。これはデータセンター出身のOryon設計をモバイル向けに移植したためで、コアあたりの面積が比較的大きい傾向があります。


6. ノード選択から見えるビジネス戦略の違い

観点 Apple Qualcomm
ノード採用タイミング 常に最先端ノードを単独で先行(N3B独占) メインストリーム化後に採用(N3E、N3P)
IP互換性の扱い N3B→N3E移行で全面再設計を厭わない N3E→N3Pでの互換性維持を活用
設計ゴール エネルギー効率+ピーク性能の両立 絶対クロック速度(4.6GHz)と汎用性
パッケージング InFO-PoP(高密度Fan-Out) iPoP(有機基板ベース)
ノード利用の幅 スマホ(A-series)+PC/タブレット(M-series)を同ノードで展開 スマホ(8 Elite)とPC(Snapdragon X)でノードを分散

7. 総括:3nmファミリーが示すもの

N3B→N3E→N3Pの進化は、単純な性能向上以上に「ファウンドリビジネスの成熟化」を示しています。

  • N3B:Appleのための高コスト・高リスクな先行投資ノード。業界への参入障壁としても機能。
  • N3E:FinFLEXやより良い歩留まりを実現した「本来のN3が目指していたもの」。 AppleとQualcommの両社がここで初めて同じノードに揃った。
  • N3P:N3PはN3Eの光学縮小版で、設計ルール・IPの互換性を維持し、テープアウトの大半がN3EからN3Pへ移行することが期待されています。 AppleのA19 ProとQualcommのSD 8 Elite Gen 5が揃って採用したことで、3nm世代最後の主力ノードとなりました。

AppleがN3Bという「孤独な先行投資」を行い、その後N3EでQualcommと同じ土俵に立った点は興味深く、Die Shotを通じて見ると、両社とも同じTSMCのシリコンを使いながらも、設計思想・パッケージング・キャッシュ戦略において全く異なるアーキテクチャの方向性を持っていることが浮かび上がります。

SLCのサイズを比較して、

Geminiさんと同様に

SLCのサイズを比較して、

についても聞いてみた

まず詳しく調べます。データが揃いました。全チップのSLCサイズを比較します。


SLC(System Level Cache)サイズ 全比較


数値一覧

チップ ノード SLC L2 (P-core) L2 (E-core) 備考
Apple A17 Pro N3B 24 MB 16 MB 4 MB N3B唯一採用
Apple A18 N3E 12 MB 8 MB 4 MB 標準モデル
Apple A18 Pro N3E 24 MB 16 MB 4 MB +1 GPUコア
Apple A19 N3P 12 MB 8 MB 4 MB 標準モデル
Apple A19 Pro N3P 32 MB 16 MB 6 MB 大幅増強
Snapdragon 8 Elite N3E 8 MB 12 MB (×2クラスタ) E-core廃止
Snapdragon 8 Elite Gen 5 N3P 約30 MB (SLC系) 12 MB HPM 18 MBを別途追加

視覚的な比較

SLC サイズ(MB)

A19 Pro      ████████████████████████████████  32 MB  ← 世代最大
SD 8 E Gen5  ██████████████████████████████    30 MB  (推定、SLC系合計)
A17 Pro      ████████████████████████          24 MB
A18 Pro      ████████████████████████          24 MB
A19          ████████████                      12 MB
A18          ████████████                      12 MB
SD 8 Elite   ████████                           8 MB  ← 最小

読み解きポイント

① Apple「Pro」と「標準」の差が設計の核心

A19 ProのSLCは32 MBに対し、A19は12 MBと約2.7倍の差があり、この差がパフォーマンス差の大部分を決定します。 CPU構成・クロック速度は同一なのにProが速い理由は、ほぼSLCの大きさで説明できます。

② A17 Pro → A18/A18 Proで戦略が変化

A17 Proは単一チップで24 MBという大容量SLCを持ちましたが、A18世代でAppleは「標準モデル12 MB / Proモデル24 MB」という明確な2段階差別化に転換。ダイサイズの差(A18: 90mm² vs A18 Pro: 105mm²)がそのままSLCと追加GPUコアに充当されました。

③ QualcommのSLC戦略は根本的に異なる

Snapdragon 8 Eliteは8 MBのSLCを持ちますが、各クラスタが12 MBという巨大なL2を持つ構造です。これはAppleの「SLCを巨大化してCPU・GPU・NPUで共有する」方式とは対照的な、「L2を大きくして各クラスタの局所性を高める」設計思想の違いを示しています。

④ SD 8 Elite Gen 5はGPUに専用バッファを追加

SD 8 Elite Gen 5はGPU専用の「Adreno High Performance Memory」として18 MBの専用キャッシュを追加しており、レンダリング時のレイテンシ削減と帯域向上を狙っています。これはAppleのSLCが全IPで共有されるのと異なり、GPU専用という点が特徴的です。A19 ProのSLC 32 MBと単純比較はできませんが、「キャッシュで勝負する」方向性ではQualcommも追随してきたと言えます。

おわりに

Geminiさんと比較すると、より踏み込んだ内容になっている気がします。

なかなか興味深いです。

追記)、2026.03.11

newsletter.semianalysis.com

Apple A17 Pro/A18 Pro/A19 Pro と Qualcomm Snapdragon 8 Elite (Gen 4)/8 Elite Gen 5を開発していますが、Chip の Die Shot を含めて、違いを考え、特徴を抽出してみて

はじめに

Apple A17 Pro/A18 Pro/A19 Pro の Die Shot を眺めていたら、ほとんど同じだけど、Qualcomm Snapdragon 8 Elite (Gen 4)/8 Elite Gen 5は全然違う

同じ、TSMC の N3シリーズなのにね。

ということで、この点について、今回は、Gemini さんに聞いてみました。(Grok さんの利用制限になってしまったためです)

Gemini さんの回答

Appleは、N3B, N3E, N3P でA17 Pro, A18 Pro, A19 Proを開発し、Qualcommは、N3E、N3Pで、Snapdragon 8 Elite, 8 Elite Gen5を開発していますが、Chip の Die Shot を含めて、違いを考え、特徴を抽出してみて

TSMCの3nm世代(N3B、N3E、N3P)を舞台としたAppleとQualcommの設計競争は、モバイルSoCのアーキテクチャの進化において非常に興味深いコントラストを描いています。

両社の最新チップのDie Shot(シリコンダイ写真)と物理設計のレイアウトから、単なるスペック上の違いを超えた、全く異なる設計哲学が浮かび上がってきます。それぞれのノードでの変遷と、アーキテクチャの特徴を抽出して比較します。

プロセスノードの変遷と影響

  • N3B (Apple A17 Pro): Appleが独占的に先行採用した第1世代3nm。ロジック密度は高いものの、EUVマルチパターニングの複雑さから歩留まりとコストに課題を残しました。
  • N3E (Apple A18 Pro / Snapdragon 8 Elite): 両社が同じ土俵(Iso-node)に立った第2世代。N3Bと比べロジック密度はわずかに後退したものの、設計ルールの緩和(FINFLEXの最適化など)により歩留まり、電力効率、駆動周波数が劇的に改善しました。
  • N3P (Apple A19 Pro / Snapdragon 8 Elite Gen 5): N3Eのオプティカルシュリンク版。約5%のパフォーマンス向上、または約10%の消費電力削減をもたらし、セルライブラリの微細化によって密度を向上させています。

Apple A17/A18/A19 Proシリーズ:巨大コアによる「Wide & Deep」

Appleの設計思想は、徹底したシングルスレッド性能の追求と、強力なアクセラレータへのオフロードにあります。

  • ダイサイズとレイアウト: A18 Pro(N3E)のダイサイズは約110 mm²と、非常に高密度にまとめられています。
  • 超巨大なPコア: Pコア(Performanceコア)は単体で約3 mm²前後の面積を占有しており、Arm系コアとしては極めて巨大です。深いパイプラインと広大な実行ユニットを備え、IPC(クロックあたりの命令実行数)を極限まで引き上げる設計です。
  • SMEと機械学習ブロックの統合: Pコアの直近にはSME(Scalable Matrix Extension)用の専用演算ブロックが配置されており、CPUクラスタの面積をさらに押し上げています(SMEを含めるとCPUクラスタだけで約21 mm²)。
  • Eコアへの依存: 巨大なPコアの電力を相殺するため、約0.8 mm²と非常にコンパクトなEコア(Efficiencyコア)を4基搭載し、バックグラウンドタスクの電力管理を緻密に行っています。

Qualcomm Snapdragon 8 Elite / Gen 5:高クロックと「全大コア(All-Big)」

QualcommはNuvia由来のOryonアーキテクチャを採用し、従来のArm Cortexベースから大きく舵を切りました。

  • ダイサイズとレイアウト: Snapdragon 8 Elite(N3E)のダイサイズは約125〜130 mm²であり、A18 Proよりも一回り大型化しています。
  • Eコアの完全撤廃(2+6構成): 最大の特徴は、高効率コア(Eコア)を完全に廃止した点です。2基の「Prime(Oryon L)」と6基の「Performance(Oryon M)」で構成されています。
  • コンパクトな高クロックコア: Primeコアの面積は約2.1 mm²と、AppleのPコアよりも大幅に小さく設計されています。これにより、モバイル向けでありながら4.3GHz超というPCライクな高クロック動作を安定して実現しています(ライブラリにはN3E HPセルが採用されていると推測されます)。
  • 広大なL2キャッシュ: Eコアがない分、Primeに12MB、Performanceに12MBという巨大なスライスL2キャッシュを持たせ、DRAMへのメモリアクセス頻度を物理的に減らすことで消費電力を抑え込んでいます。
  • GPUのオンチップメモリ細分化 (Gen 5の進化): 次世代の8 Elite Gen 5(N3P)のDie Shotからは、Adreno 840 GPUのオンチップメモリ(6MB)が96ブロックに細分化されていることが確認されています。これはVRAMへのアクセスレイテンシを削減し、高負荷時の電力効率をさらに高めるための物理的なアプローチです。

特徴の比較と総括

特徴 Apple A-Series Pro (A18 Pro基準) Qualcomm Snapdragon 8 Elite (Gen 5基準)
CPU構成 2 Pコア + 4 Eコア 2 Prime + 6 Performance (Eコアなし)
性能アプローチ 巨大コアによる最高峰のIPC やや小型のコアによる高クロック&マルチスレッド
面積 (推測) 約 110 mm² 約 125〜130 mm²
電力管理 優秀なEコアへのタスク移行 広大なL2キャッシュとGPUメモリによるDRAMアクセス削減

Appleが「いかに1つのタスクを太いパイプラインで素早く終わらせてスリープするか」に注力しているのに対し、Qualcommは「多コア・大容量キャッシュを用いて、マルチスレッド全体の処理能力で押し切る」アプローチをとっています。特にQualcommがEコアを廃止し、面積あたりのスループットを最大化する方針をとったことは、今後のアーキテクチャのトレンドを大きく左右する分岐点と言えます。

N3EからN3Pへの移行に伴い、高密度なSRAM(L2キャッシュやGPUオンチップメモリ)を物理レイアウト上でいかに効率的に配置・配線するかが、両社の次期SoCにおけるパフォーマンスの鍵を握っています。

SLC のサイズを比較して

システムレベルキャッシュ(SLC)のサイズと、SoC全体のキャッシュ階層(Cache Hierarchy)を比較すると、AppleとQualcommの設計思想の違いがさらに鮮明に浮かび上がります。

限られたシリコン面積(SRAMの予算)を「どこに、どのように配置するか」において、両社は「巨大な共有SLC中心」「巨大なローカルL2・専用キャッシュへの分散」という、対極のアプローチをとっています。

最新世代(Apple A18 Pro と Qualcomm Snapdragon 8 Elite)のキャッシュ構成を比較してみましょう。

キャッシュ階層とSRAM容量の比較

キャッシュ階層 Apple A18 Pro Qualcomm Snapdragon 8 Elite
CPU P/Primeコア L2 16 MB (2コア共有) 12 MB (2コア共有)
CPU E/Perfコア L2 4 MB (4コア共有) 12 MB (6コア共有)
GPU 専用キャッシュ (SLCを共有) 12 MB (Adreno専用GMEM)
System Level Cache (SLC) 24 MB (SoC全体で共有) 8 MB (SoC全体で共有)

Apple:巨大な共有SLCによる「トラフィックのダム」

AppleはA17 Proから引き続き、A18 Proでも24 MBという巨大なSLCを搭載しています。

  • SoC全体のDRAMアクセス削減: AppleのSLCは、CPUだけでなく、GPU、Neural Engine(NPU)、カメラのISPなど、SoC内のあらゆるブロックから直接アクセスされます。DRAM(LPDDR5X)へのアクセスはSRAMアクセスに比べて桁違いに電力を消費するため、この24 MBの「巨大なダム」でデータをせき止めることが、Appleの驚異的な電力効率の源泉となっています。
  • トレードオフ: 24 MBのSRAMマクロは物理的に巨大な面積を占有します。N3Eノードにおいてセルライブラリの高密度化(約10%の面積縮小)を図っていますが、それでもフロアプランニングにおける配置の制約や、クロスバー・ネットワークの配線混雑(Routing Congestion)を引き起こす主要因となります。

Qualcomm:分散型巨大ローカルキャッシュによる「レイテンシ極小化」

一方、Snapdragon 8 EliteはSLCを8 MBに抑え、その分のSRAM予算を各ブロックの直近(L2や専用メモリ)に再分配しています。

  • CPUへの直結(12MB + 12MB L2): Oryonアーキテクチャは、4.32GHzという極めて高いクロックで動作します。この高速なコアにデータを滞りなく供給(ストールを防止)するため、SLCまでデータを取りに行くレイテンシすら嫌い、各クラスタに12 MBずつという巨大なスライスL2キャッシュを持たせました。
  • GPUの独立(12MB GMEM): GPU(Adreno 830)にも専用の12MBキャッシュを持たせています。これにより、ゲームなどの高負荷時にCPUとGPUがSLCの容量を奪い合う(キャッシュスラッシング)現象を物理的に防いでいます。
  • トレードオフ: 各ブロックが十分なローカルキャッシュを持つ反面、ヘテロジニアスな演算(CPUで前処理したAIデータをNPUに渡すなど)を行う際、ブロック間でデータをやり取りするためのキャッシュコヒーレンシの維持や、インターコネクトのトラフィック制御がRTLレベルでより複雑になります。

まとめ:バス帯域と設計制約の違い

Appleの「Wide & Deep(太く短い処理)」なCPUコアには、すべてのブロックを包み込む広大なSLC(24MB)が適しており、消費電力の最小化に直結しています。

Qualcommの「All-Big(高クロック・多コア)」なOryonコアには、レイテンシを極限まで削るための巨大なローカルL2(計24MB)と、独立したGPUキャッシュ(12MB)の分散配置が適しています。

こうした大規模なSRAMの配置は、Synopsys Fusion CompilerなどのEDAツールを用いた物理設計において、タイミング収束や配線層の割り当てに大きく影響します。特にQualcommのような分散アプローチでは、インターコネクト(NoC: Network on Chip)のルーティングと、それに伴う検証(Verilator等を用いたコヒーレンシのマルチスレッドシミュレーションなど)の難易度が飛躍的に上がっていると推測されます。

おわりに

いつも、Grokさんを使っているのですが、Geminiさんはちょっと違う回答をしてくれました。

追記)、2026.03.11

newsletter.semianalysis.com

Qualcomm AI200 の実物のRackとCompute Node

はじめに

Qualcomm AI200/AI250については、Qualcomm がアナウンスしたときに下記のようにブログに残しました。

vengineer.hatenablog.com

今回、展示会で Rack と Compute Node が公開され、Xのその写真が流れてきたので、記録に残します。

Qualcomm AI200 rack と compute node

以下、Xの投稿を説明のために引用します。

Compute Node の構成

下記の記事に、Rack と Compute Nodeの写真がいっぱい載っています。

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

Compute Nodeには、大きなヒートシンクが2個あります。1個のヒートシンクの下には、チップがありそうです。

記事の解説によると、

Qualcommのラックのレイアウトは若干異なります。AI200を2基搭載した小型の1Uトレイが4つ、5Uの高さのスタックに収められています。このスタックには、さらに1Uトレイに水冷式のAMD Epycプロセッサを2基搭載しており、アクセラレータトレイとCPUトレイの比率が4:1のコンピューティングスタックが完成します。

1U の (AMD EPYC x 2)の Host + 1U x 4 の (AI200 x 2) の構成

このシステムが7個でRackを構成

  • 7 x 2 = 14個の AMD EPYC CPU (ここからネットワークが4本 + 1本)
  • 7 x 8 = 56 個の AI200

5Uで1システム x 7 = 35 U + 電源 + Ethernet Switch って感じですね。

おわりに

この AI200 Rack って、他の会社のどのぐらいのシステムに対応するんですかね。

書籍 : 物語 北欧の歴史 モデル国家の生成

はじめに

今回の「ひとり読書会」は、

Kindle版、884円

目次

  • 序章 バイキングの遠征―北欧古代の冒険家たち
  • 第1章 キリスト教と反乱の時代
  • 第2章 剣の時代
  • 第3章 ロココの時代
  • 第4章 動乱の時代
  • 第5章 独立の時代
  • 第6章 戦間期の時代
  • 第7章 大戦の時代
  • 終章 曲り角の時代―冷戦終結後の北欧

おわりに

この本で取り上げている国は、

  • デンマーク
  • スウェーデン
  • ノールウェー
  • フィンランド
  • アイスランド

の5か国です。

次は、

  • オランダ
  • ドイツ

かな。

読み始めたのは、

  • ハプスブルク帝国

岩崎周一

です。




以上の内容はhttps://vengineer.hatenablog.com/より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14