Bộ nhớ đệm (Buffer memory)

Cơ chế

Trước khi tìm hiểu về bộ nhớ đệm, hãy cùng mình tìm hiểu một ví dụ trong thực tiễn nhé:

Bạn hãy tưởng tượng đây là phòng làm việc của bạn. Có một cái bàn, một giá sách chứa rất nhiều sách.

Ví dụ với giá sách

Mỗi khi bạn cần tra cứu một cuốn sách nào đó, bạn lấy cuốn sách ấy ra khỏi giá sách, tìm hiểu thông tin trong cuốn sách và… cất nó lại lên trên giá sách.

Vài phút sau, bạn lại cần cuốn sách ấy một lần nữa. Thế là bạn lại lặp lại công việc trên, lấy sách ra khỏi giá, đọc, xong cất.

Ok nếu mà chỉ hai lần như vậy thì có lẽ vẫn chẳng có việc gì, nhưng nếu hành động trên lặp đi lặp lại rất nhiều lần thì sao? Rõ ràng bạn tốn rất nhiều thời gian cho việc lấy sách từ giá phải không nào?

Máy tính cũng thế, dù RAM rất nhanh so với đĩa cứng nhưng thực tế thì RAM vẫn sử dụng công nghệ DRAM có tốc độ chậm hơn nhiều so với Register bên trong CPU sử dụng công nghệ SRAM (3 từ khóa “DRAM”, “SRAM” và “Register trong CPU” bạn hãy tự tìm hiểu nhé), vậy nên việc CPU đọc thông tin từ RAM nó giống như việc bạn liên tục phải lấy cuốn sách ra khỏi giá sách vậy, rất là tốn thời gian.

Vậy ngoài đời ta giải quyết thế nào? Đơn giản là sau khi ta tra cứu xong một cuốn sách mà ta biết ta thường xuyên phải sử dụng, thay vì cất nó vào giá sách ta sẽ đặt nó lên trên bàn luôn, sau tra cứu đỡ phải lấy từ giá sách phải không nào?

Tương tự như thế, máy tính sau khi đọc từ RAM, nó sẽ lưu thông tin vào một bộ nhớ tạm (còn gọi là bộ nhớ đệm) để sau có thể truy cập nhanh hơn. Do bộ nhớ tạm thường dùng công nghệ SRAM nên chúng thường nhanh hơn rất nhiều so với RAM, kết quả là việc truy xuất thông tin sẽ được cải thiện đáng kể.

So sánh máy tính và con người

Tìm hiểu thêm:

Một số câu hỏi bạn nên suy nghĩ đến:

  • Có phải việc dùng bộ nhớ đệm này chỉ xảy ra giữa CPU và RAM hay không? (Gợi ý: Tại sao truy cập trang web lần đầu thường chậm hơn so với lần thứ 2 truy cập?)
  • Nếu SRAM nhanh hơn như vậy, tại sao không dùng công nghệ SRAM cho RAM?
  • Bạn có tính được tốc độ truy cập trung bình khi sử dụng bộ nhớ tạm không? Giả sử thời gian truy cập vào bộ nhớ tạm là 50ns, thời gian truy cập vào RAM (bộ nhớ chính) là 500ns và tỉ lệ thông tin bạn cần truy cập không tồn tại trong cache (hay còn gọi là miss, tỉ lệ miss còn gọi là NFP) là 10%, bạn có tính được trung bình cần khoảng bao nhiêu ns để truy cập được dữ liệu không? Thời gian đó có thấp hơn so với thời gian truy cập vào RAM không?

Xen kẽ bộ nhớ (Memory interleave)

Cơ chế

Giờ hãy nghĩ bạn đang ở trong 1 team nghiên cứu. Nhưng cả team bạn chỉ được phát 1 cuốn sách duy nhất dày cui.

Dù team đã chia công việc ra theo phân bố trong sách nhưng vì chỉ có một cuốn duy nhất nên ở một thời điểm chỉ có 1 người có thể làm được công việc của họ, còn những người khác không có sách nên không làm gì được. Kết quả là tốc độ làm việc của team rất chậm.

Thực tế máy tính cũng như vậy, CPU có khả năng xử lí rất nhiều thông tin một lúc, nhưng nếu RAM không hỗ trợ interleave thì nó giống như kiểu 1 cuốn sách to đùng vậy, việc xử lí song song hoàn toàn không thực hiện được do tài nguyên RAM chỉ dùng được cho 1 việc duy nhất.

Thế ta xử lí thế nào? Ngoài đời ta có thể photo sách cho tất cả mọi người, mỗi người một cuốn. Nếu áp dụng vào máy tính thì ta sẽ phải lắp thêm RAM và sao chép dữ liệu từ thanh RAM này sang thanh RAM khác. Nhưng làm thế với máy tính sẽ làm tăng chi phí (cần lắp nhiều ram hơn thì máy tính sẽ đắt hơn mà).

Thay vào đó, ta có thể xé cuốn sách ra (đúng là ngoài đời thì cách này khá là tệ), chia cho mỗi người một phần của cuốn sách và ai cũng có thể làm việc được mà không cần người kia giao sách cho.

Trong máy tính, RAM cũng được chia ra thành các bank và các bank này sẽ độc lập với nhau hệt như từng phần bị xé ra khỏi cuốn sách vậy. Như vậy, CPU sẽ có thể đọc đồng thời nhiều thông tin trên nhiều bank khác nhau và xử lí nhanh hơn.

Cơ chế memory interleave

Tìm hiểu thêm:

Một số câu hỏi bạn nên suy nghĩ đến:

  • Nếu chia RAM thành 4 bank thì liệu có nhanh hơn 4 lần không? (Gợi ý: Ngoài đời có những phần của cuốn sách không cần nghiên cứu nhiều, có những phần lại phải nghiên cứu kĩ, những người mà dính vào phần nghiên cứu kĩ thường sẽ xong muộn hơn so với những người nghiên cứu phần dễ)
  • Theo mọi người thì việc sắp xếp data vào các bank có quan trọng đối với việc cải thiện tốc độ không? Ví dụ có 4 bộ phim, mỗi bộ phim được chia làm 4 phần data, câu hỏi là theo mọi người mỗi bank lưu cả 1 bộ phim sẽ nhanh hơn, hay là mỗi bank chỉ lưu 1 phần của từng bộ phim sẽ nhanh hơn?