Tài liệu Tìm hiểu cách làm việc của bộ nhớ Cache (Phần 3) - Pdf 10

Tìm hiểu cách làm việc của bộ nhớ Cache (Phần 3)

Cách làm việc

Khối tìm nạp của CPU sẽ tìm kiếm chỉ lệnh kế tiếp để được thực thi trong
Cache chỉ lệnh L1. Nếu không có ở đó thì nó sẽ tìm kiếm trên Cache L2. Sau
khi đó nếu cũng không có thì nó sẽ phải truy cập vào bộ nhớ RAM để nạp
chỉ lệnh.

Chúng tôi gọi là một “hit” khi CPU nạp một chỉ lệnh đã được yêu cầu hoặc
dữ liệu từ Cache, và gọi là một “miss” nếu chỉ lệnh hoặc dữ liệu được yêu
cầu không có ở đó và CPU cần phải truy cập trực tiếp vào bộ nhớ RAM để
lấy dữ liệu này.

Rõ ràng khi bạn mới bật máy tính thì Cache là hoàn toàn trống rỗng, vì vậy
hệ thống sẽ phải truy cập vào bộ nhớ RAM – đây là một miss đối với Cache
không thể tránh. Tuy nhiên sau khi chỉ lệnh đầu tiên được nạp, thì quá trình
này sẽ bắt đầu.

Khi CPU nạp một chỉ lệnh từ một vị trí nhớ nào đó thì mạch đã gọi bộ điều
khiển Cache nhớ sẽ nạp vào trong Cache nhớ một khối dữ liệu nhỏ bên dưới
vị trí hiện hành mà CPU vừa mới nạp. Do các chương trình thường được
thực hiện theo cách tuần tự nên vị trí nhớ tiếp theo mà CPU sẽ yêu cầu có
thể là vị trí ngay bên dưới vị trí nhớ mà nó vừa nạp. Cũng do bộ điều khiển
Cache nhớ đã nạp một số dữ liệu bên dưới vị trí đầu tiên được đọc bởi CPU
rồi nên dữ liệu kế tiếp sẽ có thể nằm ở bên trong Cache nhớ, chính vì vậy
CPU không cần phải truy cập vào RAM để lấy dữ liệu trong đó: nó đã được
nạp vào bên trong Cache nhớ nhúng trong CPU, điều này làm cho nó có thể
truy cập với tốc độ clock bên trong.

Lượng dữ liệu này được gọi là dòng và nó thường có chiều dài 64 byte.

bên trong Cache nhớ trước khi CPU yêu cầu đến chúng.

Mặc dù các chương trình không chạy luôn giống như vậy, đôi khi chúng có
thể nhảy từ một vị trí nhớ này sang vị trí nhớ khác. Thách thức chính của bộ
điều khiển Cache chính là việc đoán những địa chỉ gì mà CPU sẽ nhảy đến,
và từ đó nạp những nội dung của địa chỉ này vào trong Cache nhớ trước khi
CPU yêu cầu để tránh trường hợp CPU phải truy cập vào bộ nhớ RAM là
giảm hiệu suất của hệ thống. Nhiệm vụ này được gọi là dự đoán rẽ nhánh và
tất cả các CPU hiện đại đều có tính năng này.

Các CPU hiện đại có tốc độ hit ít nhất cũng là 80%, nghĩa là 80% của thời
gian CPU không truy cập trực tiếp vào bộ nhớ RAM, mà thay vào đó là
Cache nhớ.

Tổ chức Cache nhớ

Cache nhớ được chia thành các dòng bên trong, mỗi một dòng dữ từ 16 đến
128byte, phụ thuộc vào CPU. Đối với đại đa số các CPU hiện hành thì
Cache nhớ được tổ chức theo các dòng 64byte (512bit), chính vì vậy chúng
tôi sẽ xem xét đến Cache nhớ đang sử dụng dòng 64byte trong các ví dụ
xuyên suốt từ đầu hướng dẫn này. Phần dưới chúng tôi sẽ trình bày các chi
tiết kỹ thuật chính của Cache nhớ cho tất cả các CPU hiện đang có trên thị
trường.

Cache nhớ 512 KB L2 được chia thành 8.192 dòng. Bạn nên lưu ý rằng 1KB
là 2^10 hay 1.024 byte chứ không phải là 1.000byte, chính vì vậy 524.288 /
64 = 8.192. Chúng ta sẽ xem xét đến CPU một lõi có Cache nhớ 512 KB L2
trong các ví dụ. Trên hình 5 chúng tôi mô phỏng cách tổ chức bên trong của
Cache nhớ này.


địa chỉ 1.000 và sau đó yêu cầu địa chỉ 2.000 thì một miss cũng sẽ xuất hiện
vì hai địa chỉ này đều nằm trong cùng một khối 128KB, và những gì bên
trong Cache là một dòng bắt đầu từ địa chỉ 1.000. Chính vì vậy bộ điều
khiển Cache sẽ nạp một dòng từ địa chỉ 2.000 và lưu nó trên dòng đầu tiên
của Cache nhớ, xóa các nội dung trước đó, trong trường hợp của chúng ta thì
đó là dòng từ địa chỉ 1.000.

Cũng một vấn đề nữa. Nếu chương trình có một vòng lặp nhiều hơn 64 bytes
thì lúc này cũng có một miss xuất nhiện trong toàn bộ khoảng thời gian của
vòng lặp.

Ví dụ, nếu vòng lặp thực hiện từ địa chỉ 1.000 đến địa chỉ 1.100 thì CPU sẽ
phải nạp tất cả các chỉ lệnh trực tiếp từ bộ nhớ RAM trong suốt khoảng thời
gian của vòng lặp. Vấn đề này sẽ xảy ra vì Cache sẽ có nội dung từ các địa
chỉ 1.000 đến 1.063 và khi CPU yêu cầu các nội dung từ địa chỉ 1.100 thì nó
sẽ phải vào bộ nhớ RAM để lấy dữ liệu, và sau đó bộ điều khiển Cache sẽ
nạp các địa chỉ từ 1.100 đến 1.163. Khi CPU yêu cầu lại địa chỉ 1.000 thì nó
sẽ phải quay trở lại bộ nhớ RAM, vì lúc này Cache sẽ không có các thành
phần dữ liệu từ địa chỉ 1.000. Nếu vòng lặp này được thực thi 1.000 lần thì
CPU sẽ phải vào bộ nhớ RAM để nạp dữ liệu cũng 1.000 lần.

Đó chính là lý do tại sao việc bản đồ hóa trực tiếp Cache nhớ lại ít hiệu quả
và ít được sử dụng nữa.

Sự liên kết toàn bộ

Cấu hình liên kết toàn bộ, hay nói theo cách khác là không có sự khó khăn
trong việc liên kết giữa các dòng của Cache nhớ và vị trí của bộ nhớ RAM.
Bộ điều khiển Cache có thể lưu bất kỳ địa chỉ nào. Như vậy các vấn đề đã
được nói ở trên sẽ không xảy ra. Cấu hình này là cấu hình hiệu quả nhất


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status