Kiến trúc máy tính – Bài 4: RAM, cache và bộ nhớ ảo khác nhau thế nào?
- 19-10-2026
- Toanngo92
- 0 Comments
RAM 16 GB, SSD 512 GB và cache CPU vài MB không phải những con số có thể thay thế cho nhau. Bài này giải thích hệ thống phân cấp bộ nhớ, cách cache giúp CPU và vì sao bộ nhớ ảo không đơn giản là “RAM lấy từ ổ đĩa”.
Dành cho người mới: đọc ví dụ trước, sau đó đối chiếu với sơ đồ và thuật ngữ. Các mô hình đơn giản trong bài dùng để học nguyên lý, không mô tả đầy đủ mọi CPU hay hệ điều hành.

Mục lục
Từ tệp trên SSD đến dữ liệu CPU sử dụng
Một tệp có thể nằm lâu dài trên SSD. Khi ứng dụng cần xử lý, dữ liệu được đưa vào những vùng bộ nhớ do hệ điều hành quản lý. CPU thường truy cập thông qua hệ thống cache rồi tới RAM khi cần; các giá trị dùng trực tiếp trong phép tính nằm ở thanh ghi. Đây là đường đi khái quát, có thể có nhiều bộ đệm và tối ưu khác.
| Tầng | Vai trò | Giữ dữ liệu khi mất điện? |
|---|---|---|
| Thanh ghi | Giá trị CPU dùng trực tiếp. | Thông thường không. |
| Cache CPU | Giữ bản sao các khối dữ liệu hoặc lệnh để truy cập nhanh. | Thông thường không. |
| RAM chính | Bộ nhớ làm việc của hệ thống. | RAM thông dụng không. |
| SSD/HDD | Lưu tệp, chương trình và dữ liệu lâu dài. | Có, khi ghi đã hoàn tất bền vững. |
Xu hướng chung là tầng gần CPU nhanh hơn, nhỏ hơn và đắt hơn trên mỗi đơn vị dung lượng. Đây không phải một bảng thời gian cố định: tốc độ thực tế phụ thuộc loại thiết bị, truy cập tuần tự hay ngẫu nhiên và nhiều yếu tố khác.
Cache: giữ dữ liệu gần nơi cần xử lý
Nếu chương trình vừa đọc một phần tử mảng, khả năng nó đọc phần tử bên cạnh thường khá cao. Nếu vừa dùng một biến, nó có thể dùng lại biến đó. Hai ý tưởng này gọi là tính cục bộ không gian và thời gian. Cache giữ các khối, thường gọi cache line, để khai thác tính cục bộ.
- Cache hit: dữ liệu cần tìm có trong cấp cache đang xét.
- Cache miss: không có ở cấp đó; hệ thống tìm ở cấp tiếp theo và có thể nạp khối vào cache.
L1, L2 và L3 là những tên cấp cache thường gặp, nhưng số cấp và cách chia sẻ khác nhau giữa các CPU. Không nên hiểu cache là một thư mục người dùng có thể tùy ý mở để xem mọi dữ liệu trong CPU.
Ba cách tổ chức thường học là ánh xạ trực tiếp, liên kết đầy đủ và liên kết theo tập. Chúng quyết định một khối có thể đặt vào vị trí nào. Với người mới, điều quan trọng trước hết là hiểu hit/miss; cách tính tag, index và offset có thể học ở phần chuyên sâu.
Write-through chuyển tiếp việc ghi xuống cấp dưới; write-back có thể giữ dữ liệu đã sửa trong cache và ghi xuống sau. Việc ghi lại có thể xảy ra do thay thế, yêu cầu đồng bộ hoặc cơ chế hệ thống khác, không chỉ khi dòng cache bị thay thế.
RAM khác ROM và firmware ra sao?
RAM thường dùng để nói về bộ nhớ đọc/ghi đang làm việc, điển hình là DRAM trên máy cá nhân. SRAM thường được dùng cho cache. ROM theo nghĩa gốc là bộ nhớ chỉ đọc; firmware hiện nay thường nằm trong bộ nhớ flash có thể cập nhật, nên không nên nói mọi firmware nằm trong một ROM tuyệt đối không sửa được.
Khi nhìn sơ đồ chip nhớ 4K × 8 bit, hãy đọc là 4096 vị trí, mỗi vị trí 8 bit. Tổng dung lượng là 4096 byte, tức 4 KiB. Với mô hình đánh địa chỉ từng vị trí này cần 12 bit địa chỉ vì 2¹² = 4096. Đừng nhầm 4K là 4000 trong bài toán cấu trúc chip nhớ.
Bộ nhớ ảo trước hết là một cách tổ chức địa chỉ
Chương trình sử dụng địa chỉ ảo trong không gian địa chỉ của tiến trình. Phần cứng quản lý bộ nhớ và hệ điều hành phối hợp ánh xạ sang các vùng vật lý phù hợp, đồng thời kiểm soát quyền truy cập. Hai tiến trình có thể dùng cùng một giá trị địa chỉ ảo nhưng được ánh xạ tới những vùng vật lý khác nhau.
Nhờ cơ chế này, hệ điều hành có thể bảo vệ tiến trình, chia sẻ có kiểm soát và chỉ đưa một phần dữ liệu vào RAM khi cần. Có thể dùng tệp trên ổ lưu trữ làm nơi hậu thuẫn cho một số trang, nhưng không phải toàn bộ bộ nhớ ảo đều là tệp hoán trang. Bộ nhớ ảo cũng không làm SSD nhanh bằng RAM.
Vì vậy, phát biểu “bộ nhớ ảo chỉ là lấy ổ cứng làm RAM” bỏ sót vai trò ánh xạ địa chỉ và bảo vệ bộ nhớ.
Ví dụ dịch địa chỉ theo trang
Giả sử kích thước trang là 4096 byte và chương trình truy cập địa chỉ ảo 5000. Chia 5000 cho 4096: số trang ảo là 1, độ dời trong trang là 904. Nếu bảng trang ánh xạ trang 1 tới khung vật lý 7 thì địa chỉ vật lý là 7 × 4096 + 904 = 29576.
Địa chỉ ảo 5000
→ trang 1, offset 904
→ bảng trang: trang 1 ánh xạ tới khung 7
→ địa chỉ vật lý 29576Đây là ví dụ số học, không phải địa chỉ thật của một ứng dụng. TLB lưu đệm các bản dịch địa chỉ gần đây; cache dữ liệu lưu các khối dữ liệu. Hai khái niệm có liên quan hiệu năng nhưng không giữ cùng loại thông tin.
Page fault có luôn là lỗi và luôn phải đọc đĩa?
Không. Một truy cập có thể cần hệ điều hành bổ sung ánh xạ hoặc cung cấp trang. Một số trường hợp được xử lý từ dữ liệu đã ở RAM hoặc tạo trang mới, không cần đọc ổ lưu trữ. Trường hợp cần lấy nội dung từ tệp hậu thuẫn thường chậm hơn đáng kể. Truy cập không hợp lệ hoặc vi phạm quyền có thể dẫn tới ngoại lệ mà chương trình không xử lý được.
Trên Windows có phân biệt soft fault và hard fault; hard fault không đồng nghĩa RAM bị hỏng. Hãy đọc ý nghĩa chỉ số trong công cụ giám sát, không suy đoán từ tên. Khi RAM chịu áp lực và hệ thống phải trao đổi nhiều với ổ lưu trữ, ứng dụng có thể chậm rõ rệt.
Tự kiểm tra: vì sao nâng dung lượng SSD không tự tăng dung lượng RAM? Vì sao thêm RAM đôi khi giúp mở nhiều ứng dụng hơn nhưng không làm một phép tính CPU nhanh gấp đôi?
Những điều cần nhớ
- RAM, cache và lưu trữ có vai trò khác nhau.
- Bộ nhớ ảo bao gồm ánh xạ địa chỉ và bảo vệ, không chỉ hoán trang xuống ổ đĩa.
- Page fault không phải lúc nào cũng cần đọc đĩa hoặc báo hỏng phần cứng.

