1. Trang chủ
  2. » Công Nghệ Thông Tin

Tìm hiểu cách làm việc của bộ nhớ cache

21 23 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 21
Dung lượng 648,5 KB

Nội dung

Tìm hiểu cách làm việc nhớ Cache Bộ nhớ Cache kiểu nhớ tốc độ cao có bên CPU để tăng tốc độ truy cập cho liệu lệnh lưu nhớ RAM Trong hướng dẫn này, giới thiệu cho bạn cách làm việc nhớ theo cách dễ hiểu Một máy tính hồn tồn vơ dụng bạn khơng bắt vi xử lý (CPU) thực nhiệm vụ Cơng việc thực thơng qua chương trình, chương trình lại gồm nhiều lệnh để lệnh cho CPU làm việc CPU lấy chương trình từ nhớ RAM Tuy nhiên có vấn đề với nhớ RAM nguồn ni bị cắt thành phần liệu lưu RAM bị – điều nên số người nói nhớ RAM môi trường “dễ bay hơi” Các chương trình liệu phải lưu môi trường không “dễ bay hơi” sau tắt máy tính (giống ổ đĩa cứng hay thiết bị quang đĩa CD DVD) Khi kích đúp vào biểu tượng Windows để chạy chương trình Các chương trình thơng thường lưu ổ đĩa cứng máy tính, gọi nạp vào nhớ RAM sau từ nhớ RAM, CPU nạp chương trình thơng qua mạch có tên gọi memory controller, thành phần đặt bên chipset (north bridge chip- chíp cực bắc) vi xử lý Intel bên CPU vi xử lý AMD Trong hình chúng tơi tóm tắt sơ qua nguyên tắc làm việc (với vi xử lý AMD bạn bỏ qua phần chipset vẽ) Hình 1: Cách liệu truyền tải đến CPU CPU khơng thể tìm nạp liệu trực tiếp từ ổ đĩa cứng tốc độ truy suất liệu ổ đĩa cứng q thấp với nó, chí nếu bạn có ổ đĩa cứng với tốc độ truy suất lớn Hãy lấy số ví dụ làm dẫn chứng cho điều này, ổ cứng SATA-300 – loại ổ đĩa cứng có tốc độ nhanh cung cấp ngày đến phần lớn người dùng – có tốc độ truyền tải theo lý thuyết 300 MB/s Một CPU chạy với tốc độ 2GHz với đường liệu* 64-bit truyền tải liệu bên với tốc độ 16GB/s – lớn gấp 50 lần - Đường liệu: Các đường mạch bên CPU Chỉ cần phép toán đơn giản bạn biết CPU có số đường liệu khác bên trong, đường chúng lại có chiều dài khác Ví dụ với vi xử lý AMD đường liệu L2 memory cache L1 memory cache có độ rộng 128-bit, Intel 256-bit Đây giải thích số mà công bố đoạn không cố định, CPU nhanh nhiều so với ổ đĩa cứng Sự khác tốc độ bắt nguồn từ thực tế ổ đĩa cứng cịn bao gồm hệ thống khí, hệ thống khí chậm hệ thống điện tử túy, thành phần khí phải chuyển động để liệu đọc (điều chậm nhiều so với việc chuyển động điện tử) Hay nói cách khác, nhớ RAM 100% điện tử, có nghĩa nhanh tốc độ ổ đĩa cứng quang Tuy nhiên vấn đề, chí nhớ RAM nhanh không nhanh CPU Nếu bạn sử dụng nhớ DDR2-800, chúng truyền tải liệu tốc độ 6.400 MB/s – 12.800 MB/s sử dụng chế độ hai kênh Thậm chí số cịn lên đến 16GB/s ví dụ trước, CPU cịn tìm nạp liệu từ L2 memory cache tốc độ 128- bit hay 256-bit, nói 32 GB/s 64 GB/s CPU làm việc bên với tốc độ 2GHz Bạn không nên lo lắng vấn đề với “L2 memory cache”, giải thích vấn đề sau Tất bạn cần nhớ nhớ RAM chậm CPU Bằng cách đó, tốc độ truyền tải tính sử dụng công thưc (trong tất ví dụ từ đầu tới giờ, “dữ liệu clock” tính “1”): [Tốc độ truyền tải] = [Độ rộng (số lượng bít)] x [tốc độ clock] x [dữ liệu clock] / Vấn đề không dừng lại tốc độ truyền tải mà độ trễ Độ trễ (thời gian truy cập) lựợng thời gian mà nhớ giữ chậm việc chuyển ngược trở lại liệu mà CPU u cầu trước – điều khơng thể thực Khi CPU yêu cầu lệnh (hoặc liệu) lưu địa nhớ giữ chậm khoảng thời gian để phân phối lệnh (hoặc liệu) trở ngược lại Trên nhớ nay, dán nhãn có CL (CAS Latency, độ trễ mà nói đến) điều có nghĩa nhớ cung cấp liệu yêu cầu sau chu kỳ clock nhớ - nghĩa CPU phải chờ đợi Việc chờ đợi làm giảm hiệu suất CPU Nếu CPU phải đợi đến chu kỳ clock để nhận lệnh liệu mà u cầu hiệu suất 1/5 so với hiệu suất sử dụng nhớ có khả cung cấp liệu tức thời Nói theo cách khác, truy cập nhớ DDR2-800 với CL5 hiệu suất CPU với hiệu suất CPU làm việc với nhớ 160 MHz (800 MHz / 5) với khả cung cấp liệu tức thời Trong giới thực, việc giảm hiệu suất khơng nhiều nhớ làm việc chế độ có tên gọi chế độ truyền loạt (burst mode), nơi mà liệu tập trung lần thứ hai cung cấp cách lập tức, liệu lưu địa nối tiếp (thường lệnh chương trình lưu địa liên tục) Điều diễn tả cơng thức “x-1-1-1” (có nghĩa “5-1-1-1” cho nhớ dùng ví dụ chúng ta), có nghĩa liệu cung cấp sau chu kỳ xung clock, từ liệu thứ hai trở chúng cung cấp chu kỳ clock – lưu địa liên tiếp giống nói RAM động Ram tĩnh Có hai kiểu nhớ RAM RAM động (DRAM) RAM tĩnh (SRAM) Bộ nhớ RAM sử dụng máy tính loại RAM động Kiểu RAM này, bit liệu lưu bên chip nhớ tụ điện nhỏ, tụ điện thành phần nhỏ, nghĩa có đến hàng triệu tụ điện vùng diện tích mạch điện nhỏ, điều người ta gọi “mật độ cao” Các tụ điện bị điện áp tích tụ sau thời gian, nhớ động cần phải có q trình nạp lại, q trình thường gọi “làm tươi” (refresh) Trong suốt chu kỳ liệu đọc ghi vào Bộ nhớ động rẻ so với nhớ tĩnh tiêu thụ lượng nhớ tĩnh Tuy nhiên biết, RAM động, liệu khơng cung cấp cách sẵn sàng khơng làm việc nhanh CPU Với nhớ tĩnh, kiểu nhớ làm việc nhanh CPU, bit liệu lưu mạch có tên gọi flip-flop (F-F), F-F lại cung cấp liệu với độ trễ nhỏ, F-F khơng yêu cầu đến chu trình làm tươi Vấn đề F-F lại yêu cầu số transistor, có kích thước to so với tụ điện RAM động Điều có nghĩa diện tích giống nhau, nơi mà nhớ tĩnh có F-F tồn nhớ động có đến hàng trăm tụ điện Chính nhớ tĩnh thường có mật độ thấp – chíp có dung lượng thấp Hai vấn đề khác với nhớ tĩnh là: thường đắt nhiều tiêu tốn nhiều lượng (do nóng hơn) so với nhớ tĩnh Trong bảng đây, chúng tơi có tóm tắt khác RAM động (DRAM) RAM tĩnh (SRAM) Tính RAM động (DRAM) RAM tĩnh (SRAM) Mạch trữ điện Tụ điện Flip-flop Tốc độ truyền tải Thấp CPU Bằng với CPU Độ trễ Cao Thấp Mật độ Cao Thấp Tiêu tốn lượng Thấp Cao Giá thành Rẻ Đắt Mặc dù Ram tĩnh có tốc độ nhanh RAM động nhược điểm ngăn cản trở thành RAM Giải pháp tìm thấy để giảm ảnh hưởng việc sử dụng nhớ RAM chậm CPU sử dụng số lượng nhỏ RAM tĩnh CPU nhớ RAM Công nghệ gọi nhớ Cache ngày có số lượng nhỏ nhớ tĩnh đặt bên CPU Bộ nhớ Cache copy hầu hết liệu truy cập gần từ nhớ RAM vào nhớ tĩnh đoán liệu CPU hỏi tiếp theo, tải chúng đến nhớ tĩnh trước CPU yêu cầu thực Mục đích làm cho CPU truy cập vào nhớ Cache thay truy cập trực tiếp vào nhớ RAM, truy vấn liệu từ nhớ Cache cách tức thời thay phải đợi truy cập vào liệu đặt RAM CPU truy cập vào Cache nhớ thay cho RAM nhiều hệ thống hoạt động nhanh Cũng theo đó, sử dụng hốn đổi hai thuật ngữ “dữ liệu” “chỉ lệnh” cho lưu bên địa nhớ khơng có khác biệt nhớ Chúng tơi giải thích cách xác cách Cache nhớ làm việc phần Mời bạn chờ đọc phần sau! Tìm hiểu cách làm việc nhớ Cache (Phần 2) Lịch sử Cache nhớ máy tính cá nhân (PC) Trong phần chúng tơi quan tâm đến khía cạnh lịch sử trước nhớ Cache Nếu bạn không quan tâm đến chủ đề hồn tồn bỏ qua để đọc phần Bộ nhớ Cache sử dụng máy tính thời 386DX Mặc dù thân CPU khơng có nhớ Cache bên mạch hỗ trợ - chipset – có điều khiển Cache nhớ Vì điều nên Cache nhớ thời điểm nằm bên ngồi CPU mang tính tùy chọn, nghĩa nhà sản xuất bo mạch chủ thêm vào khơng Nếu bạn có bo mạch chủ mà khơng có nhớ Cache máy tính bạn chậm nhiều so với máy tính có thành phần Số lượng nhớ Cache cung cấp khác phụ thuộc vào model bo mạch chủ giá trị điển hình cho thời điểm 64 KB 128 KB Cũng thời điểm này, điều khiển Cache nhớ sử dụng kiến trúc biết đến với tên “write-through”, dùng cho hoạt động ghi – nghĩa CPU muốn lưu liệu nhớ điều khiển Cache nhớ cập nhật nhớ RAM Với vi xử lý 486DX, Intel bổ sung thêm số lượng nhỏ (8KB) Cache nhớ bên CPU Cache nhớ bên gọi L1 (level 1) hay “internal”, Cache nhớ bên gọi (level 2) hay “external” Số lượng tồn Cache nhớ bên phụ thuộc vào model bo mạch chủ Số lượng điển hình cho thời điểm 128 KB 256 KB Sau mơ hình 486 bổ sung thêm kiến trúc Cache “write back”, kiến trúc sử dụng ngày nay, hoạt động ghi nhớ RAM không cập nhật tức khắc mà CPU lưu liệu Cache nhớ điều khiển nhớ cập nhật nhớ RAM khơng có Cache Sau với vi xử lý Pentium đầu tiên, Intel tạo hai Cache nhớ bên tách biệt nhau, cho lệnh cho liệu (ở thời điểm Cache nhớ KB) Kiến trúc sử dụng ngày bạn thấy Cache nhớ L1 tồn ghi 64 KB + 64 KB (ví dụ) – điều có Cache lệnh L1 64KB Cache nhớ liệu L2 64KB Chúng tơi giải thích cho bạn khác hai loại Cache nhớ Tại thời điểm đó, Cache nhớ L2 thường đặt bo mạch chủ, số lượng tồn phụ thuộc vào model bo mạch chủ Rõ ràng việc hệ thống khơng có Cache nhớ điều khơng thể chấp nhận Số lượng điển hình cho thời điểm 256 KB 512 KB Các vi xử lý AMD K5, K6 K6-2 sử dụng kiến trúc này, với K6-III có thêm Cache nhớ thứ ba (L3, level 3) Vấn đề với Cache nhớ nằm bên ngồi L2 truy cập với tốc độ clock thấp hệ 486DX2 tốc độ clock bên CPU khác hoàn toàn với tốc độ clock bên CPU Ví dụ Pentium-200 làm việc bên tốc độ 200MHz, truy cập vào nhớ Cache L2 với tốc độ 66MHz Sau kiến trúc P6, Intel chuyển sang Cache nhớ từ bo mạch chủ sang bên CPU – điều cho phép CPU truy cập với tốc độ clock bên – ngoại trừ Pentium II (bộ nhớ Cache không đặt bên CPU bo mạch in – nơi CPU hàn gắn (bo mạch in đặt bên hộp chứa)), lại chạy nửa tốc độ clock CPU Trên Celeron266 Celeron-300, model khơng có Cache nhớ (chính chúng CPU tồi tệ lịch sử) Kiến trúc sử dụng ngày tương tự vậy: hai Cache nhớ L1 L2 đặt bên CPU chạy với tốc độ clock bên CPU Chính số lượng Cache nhớ mà bạn có hệ thống phụ thuộc vào model CPU; khơng có cách để tăng số lượng Cache nhớ mà không cần thay CPU Xem xét Cache nhớ Trong hình 2, bạn thấy sơ đồ khối CPU lõi Sơ đồ khối cụ thể thay đổi phụ thuộc vào CPU Hình 2: Sơ đồ khối CPU Đường chấm hình thể phần thân CPU, nhớ RAM đặt bên CPU Đường liệu nhớ RAM CPU có độ rộng 64 –bit thơng thường (hoặc 128 cấu hình hai kênh sử dụng), chạy với tốc độ clock nhớ clock CPU (hoặc clock bus nhớ, trường hợp vi xử lý AMD) Tất mạch bên phần chấm chạy với tốc độ clock CPU Phụ thuộc vào CPU mà số thành phần bên chí cịn chạy với tốc độ clock cao Còn đường dẫn khối CPU rộng hơn, nghĩa truyền tải nhiều bit chu kỳ xung clock (nhiều 64 128) Ví dụ, đường liệu nhớ Cache L2 Cache lệnh L1 vi xử lý đại thường có độ rộng 256-bit Đường liệu Cache lệnh L1 khối tìm nạp CPU thay đổi phụ thuộc vào mơ hình CPU – 128 bit giá trị điển hình, nhiên phần cuối hướng dẫn giới thiệu cho bảng tiêu kỹ thuật Cache nhớ CPU bán thị trường Số lượng truyền tải bit chu kỳ xung nhịp cao truyền tải diễn nhanh (nói theo cách khác tốc độ truyền tải nhanh hơn) Nói chung, tất CPU đại có đến ba Cache nhớ: L2 Cache nhớ lớn tìm thấy nhớ RAM Cache lệnh L1, nắm giữ lệnh liệu; Cache lệnh L1 sử dụng để lưu lệnh thực thi CPU lưu liệu để ghi ngược trở lại nhớ L1 L2 có nghĩa “Level 1” “Level 2”, ám khoảng cách từ chúng đến lõi CPU (khối thực thi) Có nghi ngờ lại có đến ba Cache nhớ tách biệt (Cache nhớ liệu L1, Cache nhớ lệnh L1 Cache L2) Để làm cho độ trễ nhớ tĩnh giảm xuống “0” điều khó khăn, đặc biệt với CPU chạy tốc độ clock cao Do việc sản xuất RAM tĩnh có độ trễ xấp xỉ “0” khó nên hãng sản xuất sử dụng kiểu nhớ Cache nhớ L1 Cache nhớ L2 sử dụng RAM tĩnh không nhanh nhớ sử dụng Cache nhớ L1, điều có độ trễ định, chậm đơi chút so với Cache nhớ L1 Hãy ý vào hình thấy Cache lệnh L1 làm việc giống “Cache đầu vào”, Cache liệu L1 làm việc giống “Cache đầu ra” Cache lệnh L1 (thường nhỏ Cache L2) có hiệu cao chương trình bắt đầu lặp lại số phần nhỏ nó, lệnh yêu cầu gần khối tìm nạp Một điều đề cập đến, Cache lệnh L1 sử dụng để lưu liệu khác bên cạch lệnh giải mã Phụ thuộc vào CPU mà sử dụng để lưu số liệu tiền giải mã việc rẽ nhánh thơng tin (nhìn chung, liệu điều khiển làm tăng tốc độ trình giải mã) đơi Cache lệnh L1 cịn lớn tuyên bố, điều nhà sản xuất thường không bổ sung vào không gian mở rộng sẵn có cho phần thơng tin mở rộng Trong trang tiêu kỹ thuật CPU, Cache L1 có nhiều kiểu khác Một số nhà sản xuất liệt kê hai Cache L1 tách biệt hồn tồn với (có gọi Cache lệnh “I” Cache liệu “D”), lại bổ sung thêm số lượng phần ký hiệu “separated”, “128 KB, separated” điều có nghĩa Cache lệnh 64KB Cache liệu 64KB, số hãng thực để bạn đốn số lượng tổng thể phải chia hai để có dung lượng Cache Mặc dù có trường hợp ngoại lệ CPU xây dựng kiến trúc Netburst, chẳng hạn Pentium 4, Pentium D, Pentium dựa Xeon CPU Celeron dòng Pentium Các vi xử lý dựa kiến trúc Netburst khơng có Cache lệnh L1, thay vào chúng có Cache thực thi dị theo (hay gọi lần vết), Cache đặt khối giải mã khối thực thi, lưu lệnh giải mã Chính nói Cache lệnh L1 nó, ẩn tên hồn tồn khác đặt vị trí khác Chúng ta đề cập đến vấn đề lỗi hay mắc phải, người thường nghĩ CPU Pentium khơng có Cache lệnh L1 Điều dẫn đến tượng so sánh Pentium với CPU khác người thường nghĩ Cache L1 có dung lượng nhỏ hơn, họ tính 8KB Cache liệu L1 Cache thực thi lần vết CPU xây dựng kiến trúc Netburst 150KB L2 Memory Cache CPU đa lõi Trên CPU có nhiều lõi, kiến trúc Cache L2 có thay đổi nhiều, thay đổi phụ thuộc vào loại CPU Với CPU dual-core Pentium D AMD xây dựng kiến trúc K8, lõi CPU lại có Cache nhớ L2 riêng Chính lõi làm việc làm việc cho CPU độc lập Các CPU dual-core Intel xây dựng kiến trúc Core Pentium M hai Cache nhớ L2 lại chia sẻ hai lõi Hãng Intel nói rằng, kiến trúc chia sẻ cho hiệu suất thực thi tốt phương pháp Cache riêng thời điểm lõi chạy tải lõi lại khơng sử dụng sử dụng khơng hết hiệu suất Cache L2 Khi xảy điều này, lõi chạy tải lấy liệu từ nhớ RAM khơng gian Cache nhớ L2 hồn toàn trống mà lẽ nên sử dụng để lưu liệu tránh không lõi tải truy cập lấy liệu từ nhớ RAM làm giảm hiệu suất toàn hệ thống Với phương pháp này, vi xử lý Core Duo với Cache nhớ L2 4MB, lõi sử dụng đến 3,5MB lõi cịn lại sử dụng 0,5MB, hoàn toàn tương phải với hệ số chia cố định 50%-50% CPU dual-core Có thể nói theo cách khác, CPU quad-core Intel Core Extreme QX Core Quad sử dụng chíp dual-core, nghĩa việc chia sẻ xuất lõi 2, Hiện nay, Intel lên kế hoạch cho CPU quad-core sử dụng chíp đơn Với phương pháp này, Cache L2 chia sẻ bốn lõi Trên hình bạn thấy so sánh giải pháp Cache nhớ L2 Hình 3: So sánh giải pháp Cache nhớ L2 có CPU đa lõi Bộ vi xử lý AMD xây dựng kiến trúc K10 có Cache L3 chia sẻ nằm bên CPU, có kiểu lai hai phương pháp Vấn đề thể hình Kích thước Cache phụ thuộc vào mơ hình CPU, giống xảy với kích thước Cache L2 Hình 4: Kiến trúc Cache K10 Tìm hiểu cách làm việc nhớ Cache (Phần 3) Cách làm việc Khối tìm nạp CPU tìm kiếm lệnh để thực thi Cache lệnh L1 Nếu khơng có tìm kiếm Cache L2 Sau khơng có phải truy cập vào nhớ RAM để nạp lệnh Chúng gọi “hit” CPU nạp lệnh yêu cầu liệu từ Cache, gọi “miss” lệnh liệu u cầu khơng có CPU cần phải truy cập trực tiếp vào nhớ RAM để lấy liệu Rõ ràng bạn bật máy tính Cache hồn tồn trống rỗng, hệ thống phải truy cập vào nhớ RAM – miss Cache tránh Tuy nhiên sau lệnh nạp, trình bắt đầu Khi CPU nạp lệnh từ vị trí nhớ mạch gọi điều khiển Cache nhớ nạp vào Cache nhớ khối liệu nhỏ bên vị trí hành mà CPU vừa nạp Do chương trình thường thực theo cách nên vị trí nhớ mà CPU u cầu vị trí bên vị trí nhớ mà vừa nạp Cũng điều khiển Cache nhớ nạp số liệu bên vị trí đọc CPU nên liệu nằm bên Cache nhớ, CPU khơng cần phải truy cập vào RAM để lấy liệu đó: nạp vào bên Cache nhớ nhúng CPU, điều làm cho truy cập với tốc độ clock bên Lượng liệu gọi dịng thường có chiều dài 64 byte Bên cạnh việc nạp số lượng nhỏ liệu này, điều khiển nhớ ln tìm cách đốn xem CPU u cầu Một mạch có tên gọi mạch tìm nạp trước, nạp nhiều liệu đặt sau 64 byte từ RAM vào Cache nhớ Nếu chương trình tiếp tục nạp lệnh liệu từ vị trí nhớ theo cách lệnh liệu mà CPU hỏi nạp vào Cache nhớ từ trước Chúng ta tóm tắt cách Cache nhớ làm việc sau: CPU yêu cầu lệnh liệu lưu địa “a” Do nội dung từ địa “a” khơng có bên Cache nhớ nên CPU phải tìm nạp trực tiếp từ RAM Bộ điều khiển Cache nạp dòng (thường 64 byte) địa “a” vào Cache nhớ Nó nạp nhiều lượng liệu mà CPU u cầu, chương trình tiếp tục chạy (nghĩa yêu cầu địa a +1) lệnh liệu mà CPU hỏi nạp Cache nhớ từ trước Mạch có tên gọi tìm nạp trước nạp nhiều liệu đặt sau dịng này, có nghĩa bắt đầu việc nạp nội dung từ địa a + 64 trở vào Cache Để cho bạn ví dụ thực tế CPU Pentium có tìm nạp trước 256byte, nạp 256byte sau dòng liệu nạp vào Cache Nếu chương trình chạy cách CPU khơng cần phải tìm nạp liệu cách truy cập trực tiếp vào nhớ RAM, ngoại trừ nạp lệnh – lệnh liệu yêu cầu CPU nằm bên Cache nhớ trước CPU yêu cầu đến chúng Mặc dù chương trình khơng chạy ln giống vậy, đơi chúng nhảy từ vị trí nhớ sang vị trí nhớ khác Thách thức điều khiển Cache việc đốn địa mà CPU nhảy đến, từ nạp nội dung địa vào Cache nhớ trước CPU yêu cầu để tránh trường hợp CPU phải truy cập vào nhớ RAM giảm hiệu suất hệ thống Nhiệm vụ gọi dự đoán rẽ nhánh tất CPU đại có tính Các CPU đại có tốc độ hit 80%, nghĩa 80% thời gian CPU không truy cập trực tiếp vào nhớ RAM, mà thay vào Cache nhớ Tổ chức Cache nhớ Cache nhớ chia thành dòng bên trong, dòng từ 16 đến 128byte, phụ thuộc vào CPU Đối với đại đa số CPU hành Cache nhớ tổ chức theo dịng 64byte (512bit), xem xét đến Cache nhớ sử dụng dịng 64byte ví dụ xun suốt từ đầu hướng dẫn Phần chúng tơi trình bày chi tiết kỹ thuật Cache nhớ cho tất CPU có thị trường Cache nhớ 512 KB L2 chia thành 8.192 dòng Bạn nên lưu ý 1KB 2^10 hay 1.024 byte khơng phải 1.000byte, 524.288 / 64 = 8.192 Chúng ta xem xét đến CPU lõi có Cache nhớ 512 KB L2 ví dụ Trên hình chúng tơi mơ cách tổ chức bên Cache nhớ Hình 5: Cách tổ chức Cache nhớ L2 512 KB Cache nhớ làm việc ba kiểu cấu hình khác nhau: đồ hóa trực tiếp, liên kết tồn tập liên kết (theo nhiều dịng) Bản đồ hóa trực tiếp Bản đồ hóa trực tiếp cách đơn giản để tạo Cache nhớ Trong cấu hình này, nhớ RAM chia thành dòng nằm bên Cache nhớ Nếu có hệ thống 1GB RAM 1GB chia thành 8.192 khối (giả dụ Cache nhớ sử dụng cấu hình mà mơ tả trên), khối có 128KB (1.073.741.824 / 8.192 = 131.072 – lưu ý 1GB 2^30 bytes, MB 2^20 byte KB 2^10 byte) Nếu hệ thống bạn có 512MB nhớ chia thành 8.192 khối khối có 64 KB Chúng tơi có minh chứng cách tổ chức hình bên Hình 6: Cách đồ hóa trực tiếp làm việc Cache Ưu điển phương pháp đồ hóa trực tiếp cách đơn giản Khi CPU yêu cầu địa từ nhớ RAM (ví dụ địa 1.000) điều khiển Cache nạp dòng (64byte) từ nhớ RAM lưu dòng Cache nhớ (nghĩa từ địa 1.000 đến 1.063, giả dụ sử dụng lược đồ địa bit) Vì CPU lại yêu cầu nội dung địa số địa sau (nghĩa địa từ 1.000 đến 1.063) chúng nằm sẵn bên Cache Vấn đề CPU cần đến hai địa đồ hóa đến dịng Cache giống nhau, lúc miss xuất (vấn đề gọi tượng xung đột) Tiếp tục ví dụ chúng ta, CPU yêu cầu địa 1.000 sau yêu cầu địa 2.000 miss xuất hai địa nằm khối 128KB, bên Cache dịng địa 1.000 Chính điều khiển Cache nạp dòng từ địa 2.000 lưu dịng Cache nhớ, xóa nội dung trước đó, trường hợp dịng từ địa 1.000 Cũng vấn đề Nếu chương trình có vịng lặp nhiều 64 bytes lúc có miss xuất nhiện toàn khoảng thời gian vịng lặp Ví dụ, vịng lặp thực từ địa 1.000 đến địa 1.100 CPU phải nạp tất lệnh trực tiếp từ nhớ RAM suốt khoảng thời gian vịng lặp Vấn đề xảy Cache có nội dung từ địa 1.000 đến 1.063 CPU yêu cầu nội dung từ địa 1.100 phải vào nhớ RAM để lấy liệu, sau điều khiển Cache nạp địa từ 1.100 đến 1.163 Khi CPU yêu cầu lại địa 1.000 phải quay trở lại nhớ RAM, lúc Cache khơng có thành phần liệu từ địa 1.000 Nếu vòng lặp thực thi 1.000 lần CPU phải vào nhớ RAM để nạp liệu 1.000 lần Đó lý việc đồ hóa trực tiếp Cache nhớ lại hiệu sử dụng Sự liên kết toàn Cấu hình liên kết tồn bộ, hay nói theo cách khác khơng có khó khăn việc liên kết dịng Cache nhớ vị trí nhớ RAM Bộ điều khiển Cache lưu địa Như vấn đề nói khơng xảy Cấu hình cấu hình hiệu (nghĩa cấu hình có tốc độ hit cao nhất) Nói theo cách khác, mạch điều khiển phức tạp nhiều, cần phải giữ việc kiểm tra xem vị trí nhớ nạp bên Cache nhớ Điều lý cho đời giải pháp lai – có tên gọi tập liên kết – sử dụng rộng rãi ngày Tìm hiểu cách làm việc nhớ Cache (Phần cuối) Tập Cache liên kết n dịng Trong cấu hình này, Cache nhớ chia thành vài khối (các tập), khối gồm có “n” dịng Một tập dịng Cache liên kết Cache nhớ có 2.048 khối, khối gồm có dịng (8.192 dịng / 4), với tập dịng Cache liên kết Cache nhớ có 4.096 khối, khối gồm dịng Chúng ta tiếp tục ví dụ với Cache nhớ L2 512 KB, Cache nhớ chia thành 8.192 dòng, dòng 64-byte Phụ thuộc vào CPU mà số khối khác Hình 7: Cache nhớ L2 512 KB cấu hình thành tập dịng liên kết Khi nhớ RAM chia thành khối Cache nhớ Vẫn ví dụ tập dịng 512 KB liên kết, RAM chia thành 2.048 khối nằm Cache nhớ Mỗi khối nhớ lại liên kết đến tập dòng bên Cache, giống Cache đồ hóa trực tiếp Với 1GB, nhớ chia thành 2.048 khối, khối 512KB, bạn xem hình Hình 8: Cache nhớ L2 512 KB cấu hình thành tập dịng liên kết Như bạn thấy được, việc đồ hóa hồn tồn giống với xảy với Cache đồ hóa trực tiếp, khác biệt khối nhớ có nhiều dịng Cache Mỗi dòng lại giữ nhiều nội dung từ địa bên khối đồ hóa Trên tập dòng liên kết, tập Cache nhớ giữ đến dịng từ khối nhớ Với phương pháp này, vấn đề gặp phải phương pháp đồ hóa trực tiếp khơng (cả vấn đề xung đột vòng lặp mà mô tả trên) Ở đây, tập Cache liên kết dễ dàng thực thi so với Cache liên kết tồn bộ, logic điều khiển đơn giản Vì điều mà phương pháp sử dụng nhiều ngày nay, cung cấp hiệu suất thấp so với cách liên kết tồn Rõ ràng có số lượng hạn chế khe bên tập Cache nhớ khối nhớ - cấu hình dịng Sau khe sử dụng, điều khiển Cache phải giải phóng số chúng để lưu lệnh nạp từ khối nhớ Khi tăng số dịng Cache nhớ tập liên kết (ví dụ với cấu hình 8) có nhiều khe có sẵn tập, nhiên giữ nguyên số lượng Cache nhớ kích thước khối nhớ tăng Tiếp tục ví dụ chúng ta, việc chuyển từ dòng sang dòng làm cho nhớ 1GB RAM chia thành 1.024 khối 1MB Vì cách làm tăng số khe có sẵn tập tập lúc phải chịu trách nhiệm với khối nhớ lớn Có nhiều thảo luận trừu tượng liên quan đến việc cân hoàn hảo số tập kích thước khối nhớ tất chưa có câu trả lời thích đáng - Intel AMD sử dụng cấu hình khác nhau, bạn xem bảng bên Vậy điều xảy có Cache nhớ lớn? Vẫn giữ ví dụ trên, tăng Cache nhớ L2 từ 512 KB thành 1MB (chỉ có cách thực thay CPU mới), điều xảy có 16.384 dịng 64 byte Cache nhớ, điều cho có đến 4.096 tập tập có dịng Bộ nhớ 1MB RAM chia thành 4.096 khối 256MB Vì xảy kích thước khối nhớ giảm tăng số lần liệu yêu cầu nằm bên Cache nhớ - hay nói cách khác, tăng kích thước Cache làm giảm tốc độ miss Cache Tuy vậy, việc tăng Cache nhớ điều bảo đảm cho việc tăng hiệu suất Tăng kích thước nhớ Cache cho phép có nhiều liệu lưu trữ câu hỏi đặt liệu CPU sử dụng liệu mở rộng hay khơng Ví dụ, cho CPU lõi có Cache L2 4MB Nếu CPU sử dụng nghiêng 1MB chủ yếu cịn khơng q nặng phía 3MB (nghĩa hầu hết lệnh truy cập chiếm 1MB MB CPU chứa lệnh không gọi đến nhiều), lúc CPU có hiệu suất giống với CPU có MB chí Cache nhớ L2 1MB Cấu hình Cache nhớ CPU Dưới chúng tơi trình bày cho bạn tham chiếu gồm có chi tiết kỹ thuật Cache nhớ CPU có thị trường CPU Athlon 64 Cache lệnh L1 Cache liệu L1 L2 Cache L2 64 KB 64 KB Tập liên kết dòng Tập liên kết dòng Tập liên kết 16 dòng Mỗi dòng 64 byte Mỗi dòng 64byte Mỗi dòng 64 byte Đường liệu 128 – bit cho L2 Đường liệu 128 – bit cho khối tìm nạp 512 KB MB Đường liệu Đường liệu 128 – bit cho 128 – bit cho L2 Cache liệu L1 Đường liệu 128 – bit cho Cache lệnh L1 1MB lõi 64KB lõi Tập liên kết dòng Mỗi dòng 64 byte Athlon 64 FX Đường liệu 128 – bit cho L2 Đường liệu 128 – bit cho khối tìm nạp 64KB Tập liên kết 16 lõi dòng Tập liên kết Mỗi dòng 64byte dòng Mỗi dòng 64byte Đường liệu 128 – bit cho Cache liệu L1 Đường liệu Đường liệu 128 – bit cho 128 – bit cho Cache L2 Cache lệnh L1 512KB 1MB lõi 64KB lõi Tập liên kết dòng Mỗi dòng 64 byte Athlon 64 X2 Đường liệu 128 – bit cho L2 Đường liệu 128 – bit cho khối tìm nạp Sempron (sockets 754 and AM2) 64KB 64KB lõi Tập liên kết 16 dòng Tập liên kết dòng Mỗi dòng 64byte Mỗi dòng 64byte Đường liệu 128 – bit cho Cache liệu L1 Đường liệu 128 – bit cho Đường liệu Cache L2 128 – bit cho Cache lệnh L1 64KB 128 KB 256 lõi KB Tập liên kết dòng Mỗi dòng 64 byte Tập liên kết Tập liên kết 16 dòng dòng Đường liệu 128 – bit cho L2 Mỗi dòng 64byte Đường liệu 128 – bit cho khối tìm nạp Đường liệu Đường liệu 128 – bit cho 128 – bit cho Cache liệu L1 Cache L2 Mỗi dòng 64byte Đường liệu 128 – bit cho Cache lệnh L1 1MB lõi 64KB lõi Opteron Tập liên kết dòngĐường liệu 128 – bit cho L2 Đường liệu 128 – bit cho khối tìm nạp Tập liên kết 16 64KB dòng lõi Tập liên kết dòng Mỗi dòng 64byte Mỗi dòng 64byte Đường liệu 128 – bit cho Cache liệu L1 Đường liệu 128 – bit cho Đường liệu Cache L2 128 – bit cho Cache lệnh L1 8KB 256 KB, 512 MB MBTập liên kết 16 dòng Tập liên kết Mỗi dòng 128 dòng byte Pentium N/A * Mỗi dòng 64byte Đường liệu 64 – bit cho khối tìm nạp Đường liệu 256 – bit cho Đường liệu Cache L2 256 – bit cho Cache liệu L1 Pentium D N/A * 16KB MB MB lõi Tập liên kết dòng Tập liên kết dòng Mỗi dòng 64byte Mỗi dòng 128 byte Đường liệu 256 – bit cho Đường liệu 64 Cache L2 – bit cho khối tìm nạp Đường liệu 256 – bit cho Cache liệu L1 MB MB 32 KB 32 KB Core Duo Mỗi dòng 64 byte Đường liệu 256 – bit cho khối tìm nạp Mỗi dịng 64 byte Tập liên kết dòng Mỗi dòng 64 byte Đường liệu 256 – bit cho Đường liệu Cache L2 256 – bit cho Cache liệu L1 1MB 32 KB 32 KB Pentium Dual Core Mỗi dòng 64 byte Đường liệu 256 – bit cho khối tìm nạp Mỗi dịng 64 byte Tập liên kết dòng Mỗi dòng 64 byte Đường liệu 256 – bit cho Đường liệu Cache L2 256 – bit cho Cache liệu L1 *N/A: Có Cache lần vết 150 KB vi xử lý Cache đặt khối giải mã khối thực thi Như khối tìm nạp lấy liệu trực tiếp từ Cache nhớ L2 Chúng không giới thiệu vi xử lý Xeon Celeron bảng có số mơ hình Xeon Celeron khác dựa kiến trúc khác Xeon Celeron xây dựng kiến trúc Netburst (nghĩa dựa kiến trúc Pentium 4) có tiêu kỹ thuật tương tự Pentium có kích thước Cache L2 khác đơi chút, cịn Celeron Xeon xây dựng kiến trúc Core (nghĩa dựa Core Duo) có chi tiết kỹ thuật giống với Core Duo có kích thước Cache L2 khác ... lưu bên địa nhớ khơng có khác biệt nhớ Chúng tơi giải thích cách xác cách Cache nhớ làm việc phần Mời bạn chờ đọc phần sau! Tìm hiểu cách làm việc nhớ Cache (Phần 2) Lịch sử Cache nhớ máy tính... Kích thước Cache phụ thuộc vào mơ hình CPU, giống xảy với kích thước Cache L2 Hình 4: Kiến trúc Cache K10 Tìm hiểu cách làm việc nhớ Cache (Phần 3) Cách làm việc Khối tìm nạp CPU tìm kiếm lệnh... chậm đôi chút so với Cache nhớ L1 Hãy ý vào hình thấy Cache lệnh L1 làm việc giống ? ?Cache đầu vào”, Cache liệu L1 làm việc giống ? ?Cache đầu ra” Cache lệnh L1 (thường nhỏ Cache L2) có hiệu cao

Ngày đăng: 14/05/2021, 10:37

TỪ KHÓA LIÊN QUAN

w