Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Bạn gõ code, bấm chạy và có kết quả, nhưng giữa hai thao tác đó điều gì xảy ra bên trong máy? Hiểu sơ lược về CPU, RAM và ổ cứng giúp bạn giải thích vì sao chương trình chậm, vì sao máy hết bộ nhớ, và viết code tốt hơn.
CPU (bộ xử lý trung tâm) đọc và thực hiện các lệnh rất đơn giản như cộng hai số, so sánh, di chuyển dữ liệu. Chương trình của bạn, sau khi dịch, chính là hàng triệu lệnh như thế. Một vài khái niệm:
CPU hoạt động theo vòng lặp: lấy lệnh, giải mã, thực thi, rồi lặp lại, hàng tỷ lần mỗi giây.
RAM (bộ nhớ truy cập ngẫu nhiên) là nơi lưu tạm chương trình và dữ liệu đang chạy. Hãy hình dung nó như mặt bàn làm việc: càng rộng thì càng bày được nhiều giấy tờ cùng lúc. RAM có ba đặc điểm:
Biến, mảng, đối tượng bạn tạo trong chương trình đều nằm trong RAM. Nếu bạn nạp một tập dữ liệu quá lớn, máy có thể hết RAM và chương trình bị chậm hoặc bị hệ điều hành dừng.
Ổ cứng lưu dữ liệu bền vững, vẫn còn khi tắt máy: hệ điều hành, ứng dụng, tài liệu, ảnh. Có hai loại phổ biến:
| Tầng | Tốc độ | Dung lượng | Bền vững? |
|---|---|---|---|
| Thanh ghi và cache CPU | Nhanh nhất | Rất nhỏ | Không |
| RAM | Nhanh | Vừa | Không |
| SSD | Chậm hơn RAM | Lớn | Có |
| HDD | Chậm nhất | Rất lớn | Có |
Quy luật chung: bộ nhớ càng nhanh thì càng đắt và càng nhỏ. Hệ thống được thiết kế để giữ dữ liệu hay dùng ở tầng nhanh. Đây cũng là lý do vì sao đọc dữ liệu từ ổ đĩa hay mạng mỗi lần là rất chậm so với đọc trong RAM, và vì sao kỹ thuật cache phổ biến.
Nếu quên lưu file mà mất điện, phần nằm trong RAM sẽ mất, đó chính là lý do vì sao nên lưu thường xuyên.
Bạn có thể tự cảm nhận vì sao tính liền khối của dữ liệu quan trọng bằng một thí nghiệm đơn giản. Tính tổng một ma trận lớn theo hai thứ tự duyệt khác nhau:
import time
n = 2000
ma_tran = [[1] * n for _ in range(n)]
t = time.perf_counter()
tong = 0
for hang in ma_tran: # duyệt theo hàng
for x in hang:
tong += x
print("Theo hàng:", round(time.perf_counter() - t, 3), "giây")
t = time.perf_counter()
tong = 0
for c in range(n): # duyệt theo cột
for r in range(n):
tong += ma_tran[r][c]
print("Theo cột:", round(time.perf_counter() - t, 3), "giây")Kết quả tùy máy, nhưng thường cách duyệt theo cột chậm hơn, một phần do thêm chi phí truy cập chỉ số và với ngôn ngữ như C còn do bộ nhớ đệm CPU ưu tiên dữ liệu nằm cạnh nhau. Đừng xem con số tuyệt đối, hãy xem xu hướng. Bài học: cách bạn truy cập dữ liệu ảnh hưởng đến tốc độ, không chỉ số phép tính.
CPU tính toán, RAM giữ những thứ đang dùng, ổ cứng lưu lâu dài. Chỉ với mô hình đơn giản này, bạn đã giải thích được rất nhiều hiện tượng như vì sao nên tránh nạp quá nhiều dữ liệu một lúc hay vì sao SSD làm máy nhanh hơn. Hãy mở Task Manager hoặc Activity Monitor để quan sát CPU và RAM của máy khi chạy chương trình của bạn.
Nếu cần một lộ trình rõ ràng thay vì tự mò mẫm, codebem.com có nhiều khóa học phù hợp cho người mới.
Nguyễn Đình Cường
0 comment