Bạn mở trang thông số một chiếc laptop mới và thấy dòng "L2 Cache 16 MB, L3 Cache 24 MB" nằm ngay dưới số GHz. Phần lớn người mua lướt qua vì không biết nó để làm gì. Thật ra đây là một trong những con số quyết định CPU có phải "ngồi chơi" hay không, và là lý do một số con chip chơi game nhanh hơn hẳn dù xung nhịp thấp hơn.
Bài này giải thích vì sao CPU cần bộ nhớ đệm, ba tầng L1, L2, L3 khác nhau ở đâu, CPU đi tìm dữ liệu ra sao, và cách bạn tự xem cache của máy mình.
Vì sao CPU nhanh mà vẫn phải ngồi chờ?
Một nhân CPU chạy ở 4 GHz thực hiện 4 tỷ nhịp mỗi giây, tức mỗi nhịp chỉ dài 0,25 nano giây. Trong khoảng thời gian đó, ánh sáng đi được chừng 7,5 cm.
Còn RAM (bộ nhớ chính) nằm trên bo mạch, cách CPU vài centimet đường mạch, phải qua bộ điều khiển bộ nhớ, rồi chờ chip DRAM mở đúng hàng, đúng cột. Mỗi lần CPU hỏi một dữ liệu không có sẵn, câu trả lời từ RAM thường mất khoảng 70–100 nano giây. Lấy mốc 80 ns, CPU đã trôi qua khoảng 320 nhịp chỉ để chờ.
Hãy hình dung bạn là đầu bếp, còn RAM là siêu thị cách nhà 5 km. Siêu thị có đủ mọi thứ, nhưng nếu mỗi lần cần một quả trứng lại phải lái xe đi một vòng, bữa tối sẽ không bao giờ xong.

Khoảng cách tốc độ này gọi là memory wall (bức tường bộ nhớ). Mấy chục năm qua, tốc độ tính toán của CPU tăng nhanh hơn nhiều so với tốc độ phản hồi của RAM, nên khoảng cách ngày càng xa. Giải pháp của các kỹ sư không phải làm RAM nhanh gấp trăm lần, mà là đặt những kho nhỏ ngay bên trong chip.
Cache là gì, và vì sao nó nhanh hơn RAM?
Cache (bộ nhớ đệm) là vùng nhớ nhỏ nằm ngay trên đế silicon của CPU, chứa sẵn những dữ liệu CPU vừa dùng hoặc sắp dùng. Nó nhanh vì hai lý do:
- Ở rất gần: tín hiệu không phải rời khỏi con chip, không phải chạy qua bo mạch.
- Làm bằng SRAM: mỗi bit SRAM dùng khoảng 6 transistor giữ trạng thái liên tục, đọc ra gần như tức thì. RAM thường là DRAM, mỗi bit chỉ là 1 transistor và 1 tụ điện nhỏ, rẻ và đặc hơn nhiều, nhưng tụ điện rò điện nên phải làm tươi liên tục và đọc chậm hơn.
Đổi lại, SRAM tốn diện tích và đắt. Đó là lý do một máy tính có 16–32 GB RAM nhưng tổng cache chỉ vài chục MB.

Quay lại căn bếp: cache chính là bếp nhà bạn. Thứ hay dùng để sẵn trong tầm tay, thứ ít dùng hơn cất trong tủ, còn siêu thị chỉ ghé khi thật sự thiếu.
Ba tầng L1, L2, L3 khác nhau ở đâu?
Thay vì một kho cache duy nhất, CPU hiện đại chia thành ba tầng, mỗi tầng đánh đổi giữa tốc độ và dung lượng theo một cách khác.
L1: cái thớt ngay trước mặt
L1 là tầng nhỏ nhất và nhanh nhất, mỗi nhân có riêng một bộ. Dung lượng chỉ khoảng 32–80 KB mỗi nhân, nhưng trả dữ liệu trong khoảng 4–5 nhịp, tức cỡ 1 nano giây.
L1 còn được chia đôi: L1i (instruction, chứa lệnh) và L1d (data, chứa dữ liệu). Nhờ vậy, trong cùng một nhịp CPU vừa nạp lệnh tiếp theo vừa đọc số liệu cần tính, không phải xếp hàng chung một cửa. Ví dụ nhân hiệu năng Raptor Cove trong Core thế hệ 13 có 32 KB L1i và 48 KB L1d; nhân Zen 4 của AMD có 32 KB mỗi loại.
L2: cái tủ lạnh trong bếp
L2 lớn hơn nhiều, khoảng 1–3 MB mỗi nhân (Zen 4 có 1 MB, Raptor Cove có 2 MB), nhưng chậm hơn, khoảng 12–16 nhịp. Ở phần lớn chip phổ thông hiện nay, L2 vẫn là của riêng từng nhân. Riêng cụm nhân tiết kiệm điện (E-core) của Intel thì cứ 4 nhân dùng chung một khối L2.
L3: nhà kho chung của cả nhà
L3 là tầng lớn nhất, từ khoảng 8 MB đến 96 MB tuỳ dòng chip, và dùng chung cho mọi nhân. Thời gian truy cập dài hơn hẳn, thường 40–70 nhịp tuỳ thiết kế, nhưng vẫn nhanh hơn RAM vài lần. Vì dùng chung, L3 còn là nơi các nhân "gặp nhau" khi cùng làm việc trên một dữ liệu.

Ảnh chụp đế chip Core i9-13900K ở trên cho thấy rõ cách bố trí: mỗi nhân P-core có khối L2 2 MB nằm sát bên, còn các lát L3 (3 MB mỗi lát) xếp thành dải dọc theo đường nối chung ở giữa chip, để nhân nào cũng với tới được.
| Tầng | Dung lượng điển hình | Độ trễ | Phạm vi | Ví von |
|---|---|---|---|---|
| L1 | 32–80 KB/nhân | khoảng 4–5 nhịp (~1 ns) | Riêng từng nhân, chia lệnh/dữ liệu | Thớt trước mặt |
| L2 | 1–3 MB/nhân | khoảng 12–16 nhịp | Thường riêng từng nhân | Tủ lạnh trong bếp |
| L3 | 8–96 MB | khoảng 40–70 nhịp | Dùng chung mọi nhân | Kho chung của nhà |
| RAM | 8–64 GB | khoảng 70–100 ns (300+ nhịp) | Cả hệ thống | Siêu thị cách 5 km |
Các con số trên là mức điển hình của CPU máy bàn, laptop vài năm gần đây. Mỗi đời chip một khác, nên khi so sánh hãy xem thông số cụ thể của từng mẫu.
Sao không làm L1 thật to cho nhanh?
Câu hỏi rất tự nhiên: nếu L1 nhanh nhất, sao không làm hẳn 32 MB L1?
Vấn đề là bộ nhớ càng lớn thì càng chậm, đây là giới hạn vật lý chứ không phải do kỹ sư lười. Một kho lớn hơn nghĩa là:
- Đường dây dài hơn: tín hiệu phải chạy xa hơn trên silicon để tới ô nhớ ở góc xa.
- Tìm kiếm lâu hơn: cache phải so khớp địa chỉ trên nhiều ô hơn mới biết dữ liệu có ở đó hay không.
- Tốn diện tích và điện: SRAM chiếm chỗ lớn, mà diện tích sát nhân là thứ quý nhất trên chip.
Giống căn bếp: bạn không thể biến cái thớt thành cái bàn dài 10 mét, vì khi đó với tay lấy đồ cũng mất công như đi bộ sang phòng khác. Xếp thành nhiều tầng, nhỏ và nhanh ở gần, lớn và chậm hơn ở xa, là cách cân bằng tốt nhất.

Nhìn ảnh đế chip, bạn sẽ thấy các khối có cấu trúc lặp lại đều đặn như ô bàn cờ. Đó thường là SRAM của cache, và chúng chiếm một phần rất đáng kể diện tích con chip.
CPU đi tìm dữ liệu như thế nào?
Mỗi khi cần một dữ liệu, CPU hỏi lần lượt từ gần tới xa: L1 → L2 → L3 → RAM. Tìm thấy ở tầng nào gọi là cache hit (trúng), không có gọi là cache miss (trượt) và phải hỏi tầng tiếp theo. Dữ liệu lấy được từ tầng xa sẽ được chép ngược lên tầng gần, để lần sau dùng lại cho nhanh.
Nghe có vẻ chậm vì phải hỏi nhiều cửa, nhưng thực tế phần lớn yêu cầu được L1 trả lời ngay, thường cỡ 95% hoặc hơn với chương trình thông thường. Chỉ một phần nhỏ phải đi xuống RAM.
Bí quyết thứ nhất: lấy cả khối, không lấy từng byte
Cache không lấy lẻ từng byte. Mỗi lần nó kéo về cả một khối 64 byte gọi là cache line. Vì chương trình thường đọc dữ liệu nằm cạnh nhau (phần tử tiếp theo trong mảng, trường tiếp theo trong một bản ghi), một lần lấy 64 byte là đã có sẵn cả chục lần dùng tiếp theo. Hiện tượng này gọi là tính cục bộ không gian (spatial locality).
Ngoài ra còn tính cục bộ thời gian (temporal locality): thứ vừa dùng rất có khả năng được dùng lại sớm, như biến đếm trong vòng lặp.
Bí quyết thứ hai: đoán trước
Bộ prefetcher (bộ nạp trước) trong CPU theo dõi cách chương trình đọc bộ nhớ. Thấy chương trình đang đi tuần tự qua một mảng, nó tự kéo các cache line kế tiếp về trước khi được hỏi. Khi CPU thật sự cần, dữ liệu đã nằm sẵn trong cache.

Một phép tính nhỏ cho thấy vì sao tỉ lệ trúng quan trọng
Thử một ví dụ giả định đơn giản: L1 trả lời trong 4 nhịp, còn mỗi lần trượt tốn thêm trung bình 100 nhịp để lấy từ các tầng dưới. Thời gian truy cập trung bình xấp xỉ bằng 4 + tỉ lệ trượt × 100:
- Trúng 95%: 4 + 0,05 × 100 = 9 nhịp.
- Trúng 90%: 4 + 0,10 × 100 = 14 nhịp.
Tỉ lệ trúng chỉ giảm 5 điểm phần trăm mà thời gian chờ trung bình tăng hơn 50%. Đó là lý do các nhà sản xuất chịu đổ rất nhiều diện tích chip cho cache.
Duyệt mảng hai chiều theo đúng thứ tự lưu trong bộ nhớ (theo hàng với C, C++, Java) nhanh hơn rõ rệt so với duyệt theo cột, dù số phép tính như nhau. Lý do chính là duyệt theo hàng tận dụng trọn từng cache line 64 byte, còn duyệt theo cột thì liên tục nhảy sang cache line khác.
Cache lớn thì chơi game có nhanh hơn?
Có, và ví dụ rõ nhất là dòng AMD Ryzen X3D. Chiếc Ryzen 7 5800X3D ra mắt năm 2022 dùng công nghệ 3D V-Cache: chồng thêm một lớp SRAM 64 MB lên trên phần chip chứa các nhân, nâng tổng L3 từ 32 MB lên 96 MB. Các đời sau như 7800X3D, 9800X3D tiếp tục cách làm này.

Game hưởng lợi nhiều vì mỗi khung hình engine phải đọc đi đọc lại cùng một bộ dữ liệu lớn: vị trí vật thể, trạng thái nhân vật, cây cảnh, vật lý. Bộ dữ liệu này thường lớn hơn 32 MB nhưng có thể nằm gọn trong 96 MB. Cache lớn hơn nghĩa là ít lần phải xuống RAM hơn, khung hình ra đều hơn, đặc biệt ở các game nặng về CPU.
Cache lớn chỉ giúp khi chương trình dùng lại dữ liệu nhiều lần. Những việc chủ yếu cần sức tính toán thô như dựng video, nén file hay render 3D hưởng lợi ít hơn nhiều. Các bản X3D đời đầu còn phải chạy xung nhịp thấp hơn bản thường một chút vì lớp cache chồng lên làm chip khó toả nhiệt hơn.
Xem cache CPU của bạn và đọc thông số khi mua máy
Trên Windows, mở Task Manager, chọn tab Performance, bấm vào CPU: góc dưới bên phải hiện sẵn dung lượng L1, L2, L3. Phần mềm miễn phí CPU-Z (tab Caches) cho chi tiết hơn, tách cả L1 lệnh và L1 dữ liệu.
Trên Linux, chỉ cần một lệnh:
lscpu --caches
# hoặc
lscpu | grep -i cache
getconf -a | grep -i CACHE
Trên macOS:
sysctl -a | grep -i cachesize

Khi đọc thông số, lưu ý vài điểm dễ nhầm:
-
Con số L2 trên trang bán hàng thường là tổng của mọi nhân, không phải của một nhân. Chip 8 nhân với 2 MB L2 mỗi nhân sẽ ghi "16 MB L2".
-
Không so cache giữa hai hãng một cách máy móc: thiết kế khác nhau, cùng 32 MB L3 nhưng độ trễ và cách chia sẻ có thể khác.
-
Cache chỉ là một yếu tố: số nhân, kiến trúc, xung nhịp và tốc độ RAM đều quan trọng. Nhưng giữa hai chip cùng tầm giá, chip nhiều L3 hơn thường có lợi cho game và các ứng dụng xử lý tập dữ liệu lớn.
-
[ ] Xác định nhu cầu chính: chơi game, làm đồ hoạ, hay văn phòng
-
[ ] Xem dung lượng L3 bên cạnh số nhân và GHz
-
[ ] Tìm benchmark đúng ứng dụng bạn dùng thay vì chỉ nhìn một con số
GHz cho biết CPU chạy nhanh cỡ nào, còn cache cho biết nó có phải đứng chờ hay không.
Tóm tắt nhanh
- RAM trả lời mất khoảng 70–100 ns, tức hàng trăm nhịp của CPU, nên CPU cần cache để khỏi ngồi chờ.
- L1: nhỏ nhất (32–80 KB/nhân), nhanh nhất (~4–5 nhịp), riêng từng nhân, chia đôi lệnh và dữ liệu.
- L2: 1–3 MB/nhân, ~12–16 nhịp, thường vẫn riêng từng nhân.
- L3: 8–96 MB, chậm nhất trong ba tầng nhưng dùng chung và vẫn nhanh hơn RAM nhiều lần.
- Cache hiệu quả nhờ lấy cả cache line 64 byte và đoán trước dữ liệu; chip cache lớn như Ryzen X3D đặc biệt mạnh khi chơi game.
Câu hỏi thường gặp
Có thể nâng cấp hay thêm cache cho CPU không?
Không. Cache nằm ngay trên đế chip, được làm cùng lúc với con chip. Muốn nhiều cache hơn, cách duy nhất là đổi sang CPU khác.
Cache có giống RAM ảo hay bộ nhớ đệm của trình duyệt không?
Không. Cache của trình duyệt là các file lưu trên ổ cứng để tải trang web nhanh hơn, RAM ảo là phần ổ cứng dùng tạm khi thiếu RAM. Cache L1, L2, L3 là bộ nhớ SRAM phần cứng bên trong CPU, chỉ cùng tên "cache" vì cùng ý tưởng: giữ sẵn thứ hay dùng ở gần.
Xoá cache CPU có giúp máy nhanh hơn?
Không có cách và cũng không cần xoá. CPU tự quản lý cache hoàn toàn, tự đẩy dữ liệu cũ ra và nạp dữ liệu mới liên tục hàng tỷ lần mỗi giây. Các ứng dụng "dọn cache" trên điện thoại chỉ xoá file tạm, không đụng tới cache của CPU.
L3 lớn hơn có luôn tốt hơn?
Thường là có lợi, nhất là với game và cơ sở dữ liệu, nhưng không phải tuyệt đối. Với việc thuần tính toán, số nhân và xung nhịp quan trọng hơn. Hãy xem benchmark của đúng ứng dụng bạn hay dùng.



