Cache & memory hierarchy

Vì sao RAM nhanh nhưng CPU vẫn phải chờ, và cache giải quyết điều đó thế nào. Bài học memory hierarchy, những con số độ trễ nên nhớ, cache line và locality, cách viết code cache-friendly, AoS vs SoA, và false sharing.

7 bài · ~108 phútMiễn phí

Nội dung

Danh sách bài học

  1. 01

    Module 2 — Cache & memory hierarchy: tổng quan

    Vì sao RAM nhanh nhưng CPU vẫn phải chờ, và cache giải quyết điều đó thế nào. Module dạy memory hierarchy, locality, code cache-friendly, AoS vs SoA và false sharing.

    ~10 phút
  2. 02

    Vì sao có cache — và những con số độ trễ nên nhớ

    CPU nhanh hơn RAM hàng trăm lần, nên có nhiều lớp bộ nhớ: thanh ghi, L1/L2/L3, RAM, SSD, mạng. Bài học thang độ trễ để ước lượng hiệu năng và biết bottleneck nằm đâu.

    ~17 phút
  3. 03

    Cache line và locality — vì sao truy cập gần nhau lại nhanh

    Cache lấy dữ liệu theo khối 64 byte (cache line), không theo từng byte. Hiểu cache line và locality giải thích vì sao duyệt tuần tự nhanh hơn ngẫu nhiên nhiều lần.

    ~18 phút
  4. 04

    Viết code cache-friendly — locality thành kỹ năng

    Bốn kỹ thuật tăng locality: duyệt theo thứ tự bộ nhớ, loop blocking, gói dữ liệu nóng, tránh pointer chasing — cùng big-O nhưng nhanh hơn nhiều nhờ ít cache miss.

    ~17 phút
  5. 05

    AoS vs SoA — bố cục dữ liệu theo cache

    Array of structs (AoS) hay struct of arrays (SoA): cùng dữ liệu, hai bố cục bộ nhớ. Khi vòng lặp chỉ dùng vài field, SoA giảm cache miss mạnh. Cách chọn và đo trước-sau.

    ~18 phút
  6. 06

    False sharing — khi hai luồng vô tình tranh một cache line

    Hai luồng ghi vào hai biến khác nhau nhưng cùng một cache line vẫn làm chậm nhau, vì cache coherence buộc đồng bộ cả line. Cách phát hiện và sửa bằng padding.

    ~16 phút
  7. 07

    Module 2 — Tổng kết & cheat sheet

    Recap cache & memory hierarchy: thang độ trễ, cache line, locality, AoS vs SoA, false sharing. Cheat sheet một trang, glossary, pitfall, self-assessment.

    ~12 phút