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:
Laptop có GPU rời
▼ đã chép sang VRAM
2 bản của cùng một khung hình
MacBook (Apple Silicon)
không phải chép
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)
- Apple unleashes M1 · Apple Newsroom
- Explore the new system architecture of Apple silicon Macs · Apple Developer (WWDC20)
- Choosing a resource storage mode for Intel and AMD GPUs · Apple Developer Documentation