16/20 Unified Memory Các chương

Tại sao MacBook không cần VRAM riêng cho GPU?

Sao GPU trong MacBook dùng chung bộ nhớ với CPU?

Một laptop có GPU rời thường ghi:

RAM     16 GB
VRAM     8 GB

MacBook Apple Silicon lại chỉ ghi:

16 GB Unified Memory

Không thấy VRAM ở đâu cả. Nhưng MacBook vẫn có GPU.

Vậy GPU dùng bộ nhớ nào?

GPU rời có bộ nhớ riêng

Trong laptop có GPU rời, CPU và GPU thường có hai vùng nhớ khác nhau:

CPU                 GPU
 │                   │
RAM                 VRAM
16 GB                8 GB

Ví dụ một khung hình đang nằm trong RAM và CPU muốn GPU xử lý nó.

GPU rời làm việc nhanh nhất với dữ liệu nằm trong VRAM của chính nó. Vì vậy dữ liệu thường phải được chuyển sang VRAM trước:

RAM                         VRAM

[ khung hình ] ─────────▶ [ khung hình ]
                  chép

Bây giờ cùng một dữ liệu tồn tại ở hai nơi: CPU giữ một bản trong RAM, GPU xử lý một bản trong VRAM.

Dữ liệu càng lớn thì việc chuyển qua lại này càng tốn thời gian và băng thông.

Bấm và nhìn khung hình đó đi đâu ở hai máy:

GPU lấy dữ liệu: phải chép hay dùng chung?

Laptop có GPU rời

CPU
RAM ▣ khung hình

▼ đã chép sang VRAM

VRAM ▣ khung hình
GPU · đang xử lý

2 bản của cùng một khung hình

MacBook (Apple Silicon)

CPU
bộ nhớ chung ▣ khung hình

không phải chép

không có VRAM riêng
GPU · đang xử lý

1 vùng nhớ, CPU và GPU cùng đọc

Cùng một khung hình CPU vừa dựng xong, nằm sẵn trong bộ nhớ ở cả hai máy. Bấm để giao nó cho GPU.

Apple Silicon bỏ VRAM riêng

Apple Silicon bố trí CPU và GPU trong cùng một hệ thống:

┌───────────────────────────┐
│       Apple Silicon       │
│                           │
│    CPU          GPU       │
│     │            │        │
│     └─────┬──────┘        │
│           │               │
│     bộ nhớ chung          │
└───────────────────────────┘

Thay vì:

CPU → RAM

GPU → VRAM

cả CPU và GPU có thể truy cập cùng một vùng bộ nhớ:

CPU ──┐
      │
      ▼
[ khung hình ]
      ▲
      │
GPU ──┘

CPU tạo khung hình xong, GPU có thể xử lý dữ liệu đó mà không cần tạo thêm một bản chỉ để đặt vào VRAM riêng.

Đó là ý chính của Unified Memory.

Nó vẫn là RAM

“Unified Memory” không phải một loại ô nhớ hoàn toàn mới. Bên dưới vẫn là DRAM.

Điểm khác nằm ở cách hệ thống được tổ chức:

GPU rời

CPU → RAM
GPU → VRAM

so với:

Apple Silicon

CPU ──┐
GPU ──┼── bộ nhớ chung
AI  ──┘

GPU tích hợp của Intel và AMD cũng đã dùng RAM hệ thống từ lâu. Apple Silicon áp dụng ý tưởng này rất sâu vào toàn bộ con chip, để CPU, GPU, Neural Engine và các khối xử lý khác cùng làm việc với một hệ thống bộ nhớ chung.

Vậy 16 GB được chia thế nào?

Không có phần cố định kiểu:

12 GB cho CPU
 4 GB cho GPU

Cả 16 GB là một dung lượng chung.

Lúc GPU cần nhiều:

16 GB

macOS       ███
ứng dụng    ████
GPU         █████████

Lúc CPU và ứng dụng cần nhiều:

16 GB

macOS       ███
ứng dụng    ██████████
GPU         ███

Ranh giới thay đổi theo công việc đang chạy.

16 GB Unified Memory là 16 GB tổng cộng, không phải 16 GB RAM cộng thêm một lượng VRAM khác.

Điều này đặc biệt hữu ích với AI

Giả sử một model cần khoảng 20 GB bộ nhớ GPU.

Một PC có:

32 GB RAM
 8 GB VRAM

không có nghĩa GPU có 40 GB. GPU vẫn chỉ có 8 GB VRAM nhanh của riêng nó, và một model cần 20 GB không thể lấy thêm 12 GB RAM rồi coi như VRAM.

Trên Mac có:

32 GB Unified Memory

GPU có thể sử dụng một phần rất lớn của cùng dung lượng 32 GB đó, miễn là macOS và các chương trình khác vẫn còn đủ chỗ.

Đó là lý do Unified Memory đặc biệt đáng chú ý khi chạy model AI lớn ngay trên máy.

Nhưng dùng chung cũng có cái giá của nó

CPU và GPU dùng chung bộ nhớ nghĩa là chúng cũng dùng chung dung lượng và băng thông bộ nhớ.

GPU lấy nhiều hơn thì phần còn lại cho macOS và ứng dụng ít đi:

16 GB

macOS      ███
Chrome     █████
Xcode      █████
GPU        ███████
──────────────────
            hết

Và vì bộ nhớ trên MacBook Apple Silicon được gắn cố định vào hệ thống, mua máy 16 GB rồi thì sau này không cắm thêm RAM được.

Unified Memory giải quyết được một vấn đề lớn:

CPU và GPU không cần giữ hai vùng bộ nhớ tách biệt chỉ để làm việc trên cùng một dữ liệu.

Nhưng chúng vẫn phải chia nhau một lượng bộ nhớ hữu hạn.

Nếu 16 GB đó dùng hết thì máy làm gì?

Nguồn bài viết (3)

  1. Apple unleashes M1 · Apple Newsroom
  2. Explore the new system architecture of Apple silicon Macs · Apple Developer (WWDC20)
  3. Choosing a resource storage mode for Intel and AMD GPUs · Apple Developer Documentation