Title Image

Blog Logo

Bộ nhớ đệm - Cache

🌱 Bộ nhớ đệm - Cache 

    Trong quá trình sử dụng các thiết bị như máy tính và điện thoại, ở các máy có ít bộ nhớ, hẳn chúng ta sẽ biết đến bộ nhớ đệm. Khi mình sử dụng điện thoại (chỉ có 16GB và luôn trong tình trạng đầy bộ nhớ), mình thường xuyên phải xóa bộ nhớ đệm để cải thiện tốc độ của máy. Như vậy, máy tính và điện thoại của mình đều có bộ nhớ đệm. Gần đây mình tìm hiểu thì ngay cả vi điều khiển cũng có, nhưng bộ nhớ đệm trong vi điều khiển dùng để làm gì? 

    👉 Đầu tiên cần phải biết rằng dữ liệu của vi điều khiển khi runtime sẽ được đẩy lên RAM (Quá trình này các bạn có thể xem tại bài viết Core 5. Reset Sequence). Như vậy, khi CPU cần data thì nó sẽ nhận từ RAM. Theo hiểu biết của mình thì RAM có tốc độ khá nhanh, nên vi điều khiển mới đẩy data lên RAM khi run!! Ít nhất là nếu đọc ghi trên RAM sẽ nhanh hơn là đọc ghi trên Flash.

    👉Thực tế thì sao?

    Thực tế tốc độ của RAM đã là nhanh rồi, nhưng so với CPU thì tốc độ của nó khá chậm, chỉ bằng khoảng 1 phần 8, 1 phần 10 tốc độ của CPU mà thôi. (Tốc độ CPU nhanh gấp 8 đến 10 lần RAM). 😇

    Vì vậy khi muốn lấy data từ RAM thì CPU lại mất thời gian chờ! Mặc dù công nghệ chế tạo RAM hiện nay đã khá ok rồi. Nhưng với những vi điều khiển cần xử lý lượng dữ liệu lớn, hoặc những vi điều khiển có nhiều Core thì sao? Chúng yêu cầu lấy data từ RAM là rất lớn, việc phải chờ data từ RAM làm giảm hiệu suất của CPU.

Nút thắt cổ chai

     Ở đây gọi là hiện tượng nút thắt cổ chai VonNeumann!! 

    👉 Bộ nhớ Cache ra đời! 

    Hiện tượng nút thắt cổ chai thực sự ảnh hưởng lớn đến hiệu suất của Vi điều khiển. Core của chúng ta có thể xử lý dữ liệu rất lớn để mang lại hiệu quả tính toán nhanh, nhưng việc RAM gửi dữ liệu không kịp khiến cho tốc độ xử lý giảm xuống chỉ bằng tốc độ của RAM.

   Vì vậy nhà sản xuất vi điều khiển cần một bộ nhớ nào đó đó giống RAM (chứa data khi runtime),  nhưng chạy cùng tốc độ với CPU (hoặc nhỏ hơn không đáng kể). Từ đó bộ nhớ đệm - Cache ra đời (ở đây là Cache trong vi điều khiển).

    Tùy dòng vi điều khiển sẽ có khoảng vài chục đến vài trăm KB bộ nhớ đệm. Cache sẽ lưu một phần data từ RAM (được lựa chọn và tối ưu nhất để CPU lấy khi cần).

    👉 Tại sao không thay thế RAM bằng Cache nhỉ?

    Đầu tiên bạn cần biết rằng Cache có tốc độ lớn hơn RAM khá nhiều, vì vậy, đi đôi với tốc độ chính là vấn đề chi phí và công nghệ chế tạo. Với việc thiết kế 500MB hay 1GB Cache thì giá thành của vi điều khiển sẽ tăng lên vài chục hay vài trăm lần. 

    Vấn đề thứ hai là không phải người dùng nào cũng sử dụng Cache, với những ứng dụng không yêu cầu tốc độ quá lớn, việc sử dùng RAM đã là đủ. 

    👉 Vì vậy không thể thay thế RAM hoàn toàn bằng Cache được, và RAM vẫn được ưa chuộng hơn. 

    Để tối ưu data trên Cache (chứa data mà CPU cần nhất) thì người ta có 2 cách chế tạo: 

  • Chia Cache thành 2 phần là I-Cache (chứa các lệnh) và D-Cache (chứa data). 
  • Phân cấp Cache thành 2 level: Level 1 chạy cùng tốc độ với CPU. Level 2 có dung lượng lớn hơn (chứa được nhiều data hơn) nhưng tốc độ chậm hơn CPU - tiết kiệm chi phí và công nghệ (tất nhiên là tốc độ vẫn phải nhanh hơn RAM). 
ARM

    Các bạn có thể tham khảo thêm về bộ nhớ Cache trong Core M7 trong tài liệu sau: Core M7 - Generic User Guide.

>>>= Follow ngay =<<<

💚 Kênh Youtube Lập trình - Điện tử 💚

Để nhận được những bài học miễn phí mới nhất nhé 😊

    Chúc các bạn học tập tốt 😊

Embedded Memory

Đăng nhận xét

0 Nhận xét