Danh mục

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

Số trang: 8      Loại file: pdf      Dung lượng: 505.66 KB      Lượt xem: 7      Lượt tải: 0    
Jamona

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Tìm hiểu cách làm việc của bộ nhớ Cache (Phần 3)Cách làm việcKhố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...
Nội dung trích xuất từ tài liệu:
Tìm hiểu cách làm việc của bộ nhớ Cache (Phần 3)Tìm hiểu cách làm việc của bộ nhớ Cache (Phần 3)Cách làm việcKhối tìm nạp của CPU sẽ tìm kiếm chỉ lệnh kế tiếp để được thực thi trongCache chỉ lệnh L1. Nếu không có ở đó thì nó sẽ tìm kiếm trên Cache L2. Saukhi đó nếu cũng không có thì nó sẽ phải truy cập vào bộ nhớ RAM để nạpchỉ 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ặcdữ liệu từ Cache, và gọi là một “miss” nếu chỉ lệnh hoặc dữ liệu được yêucầ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ậyhệ thống sẽ phải truy cập vào bộ nhớ RAM – đây là một miss đối với Cachekhông thể tránh. Tuy nhiên sau khi chỉ lệnh đầu tiên được nạp, thì quá trìnhnà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ềukhiển Cache nhớ sẽ nạp vào trong Cache nhớ một khối dữ liệu nhỏ bên dướivị trí hiện hành mà CPU vừa mới nạp. Do các chương trình thường đượcthự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ểnCache nhớ đã nạp một số dữ liệu bên dưới vị trí đầu tiên được đọc bởi CPUrồi nên dữ liệu kế tiếp sẽ có thể nằm ở bên trong Cache nhớ, chính vì vậyCPU không cần phải truy cập vào RAM để lấy dữ liệu trong đó: nó đã đượcnạ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 cạnh việc nạp một số lượng nhỏ dữ liệu này, bộ điều khiển nhớ cũngluôn tìm cách đoán xem những gì CPU sẽ yêu cầu tiếp theo. Một mạch cótên gọi là mạch tìm nạp trước, sẽ nạp nhiều dữ liệu được đặt sau 64 byte đầutiên hơn từ RAM vào Cache nhớ. Nếu chương trình tiếp tục nạp chỉ lệnh vàdữ liệu từ các vị trí nhớ theo cách tuần tự như vậy thì các chỉ lệnh và dữ liệumà CPU sẽ hỏi tiếp theo đã được nạp vào trong Cache nhớ từ trước rồi.Chúng ta có thể tóm tắt cách Cache nhớ làm việc như sau:1. CPU yêu cầu chỉ lệnh hoặc dữ liệu đã được lưu tại địa chỉ “a”.2. Do nội dung từ địa chỉ “a” không có bên trong Cache nhớ nên CPU phảitìm nạp nó trực tiếp từ RAM.3. Bộ điều khiển Cache sẽ nạp một dòng (thường là 64 byte) bắt đầu từ địachỉ “a” vào Cache nhớ. Nó sẽ nạp nhiều hơn dữ lượng dữ liệu mà CPU yêucầu, chính vì vậy nếu chương trình tiếp tục chạy tuần tự (nghĩa là yêu cầuđịa chỉ a +1) thì chỉ lệnh hoặc dữ liệu kế tiếp mà CPU sẽ hỏi đã được nạptrong Cache nhớ từ trước đó rồi.4. Mạch có tên gọi là tìm nạp trước sẽ nạp nhiều dữ liệu được đặt sau dòngnày, có nghĩa là bắt đầu việc nạp các nội dung từ địa chỉ a + 64 trở đi vàoCache. Để cho bạn một ví dụ thực tế là các CPU của Pentium 4 có bộ tìmnạp trước 256-byte, chính vì vậy nó có thể nạp được 256byte kế tiếp saudòng dữ liệu đã được nạp vào trong Cache.Nếu chương trình chạy một cách tuần tự thì CPU sẽ không cần phải tìm nạpdữ liệu bằng cách truy cập trực tiếp vào bộ nhớ RAM, ngoại trừ nạp mỗi chỉlệnh đầu tiên – vì các chỉ lệnh và dữ liệu được yêu cầu bởi CPU sẽ luôn nằmbê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 khiCPU 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ờigian 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 đến128byte, 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úngtô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 chitiế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 1KBlà 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 L2trong 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ủaCache nhớ này.Hình 5: Cách tổ chức Cache nhớ L2 512 KBCache nhớ có thể làm việc dưới ba kiểu cấu hình khác nhau: bản đồ hóa trựctiếp, liên kết toàn bộ và tập liên kết (theo nhiều dòng).Bản đồ hóa trực tiếpBản đồ hóa trực tiếp là cách đơn giản nhất để tạo một Cache nhớ. Trong cấuhình này, bộ nhớ RAM chính được chia thành các dòng bằng nhau ...

Tài liệu được xem nhiều: