Đề cương KTMT

12 - Bộ nhớ cache

Bộ nhớ cache có dung lượng tương đối nhỏ, khoảng từ vài chục KB đến vài chục MB. Tốc độ truy cập cache cao, nhưng giá thành còn khá đắt. Cache được coi là bộ nhớ “thông minh” do có khả năng đoán trước được nhu cầu lệnh và dữ liệu của CPU. Cache “đoán” và tải trước các lệnh và dữ liệu CPU cần sử dụng từ bộ nhớ chính, nhờ vậy giúp CPU giảm thời gian truy cập hệ thống nhớ, tăng tốc độ xử lý. - Vai trò + Cache có thể giúp tăng hiệu năng hệ thống là nhờ cache có khả năng dung hoà được CPU có tốc độ cao và bộ nhớ chính có tốc độ thấp làm cho thời gian trung bình CPU truy nhập dữ liệu từ bộ nhớ chính tiệm cận thời gian truy nhập cache. + Cache có giá thành trên một đơn vị nhớ cao hơn bộ nhớ chính, nhưng do tổng dung lượng cache thường khá nhỏ nên cache không làm tăng giá thành hệ thống nhớ quá mức. - Nguyên lý hoạt động: Để có được sự thông minh, cache hoạt động dựa trên hai nguyên lý cơ bản: nguyên lý lân cận về không gian và nguyên lý lân cận về thời gian. + Nguyên lý lân cận về không gian có thể phát biểu nh sau: “Nếu một ô nhớ đang được truy nhập thì xác xuất các ô nhớ liền kề với nó được truy nhập trong tương lai gần là rất cao”. Lân cận về không gian thường được áp dụng cho nhóm lệnh hoặc dữ liệu có tính tuần tự cao trong không gian chương trình. + Nguyên lý lân cận về thời gian chú trọng hơn đến tính lặp lại của việc truy nhập các mẩu thông tin trong một khoảng thời gian tương đối ngắn. Có thể phát biểu nguyên lý này như sau: “Nếu một ô nhớ đang được truy nhập thì xác xuất nó được truy nhập lại trong tương lai gần là rất cao”. Lân cận về thời gian được áp dụng cho dữ liệu và nhóm các lệnh trong vòng lặp. - Kiến trúc Cache + Kiến trúc Look Aside, cache và bộ nhớ chính cùng được kết nối vào bus hệ thống. Như vậy, cả cache và bộ nhớ chính đều “thấy” chu kỳ bus của CPU tại cùng một thời điểm. Kiến trúc Look Aside có thiết kế đơn giản, dễ thực hiện. Tuy nhiên, các sự kiện hit của kiến trúc này thường chậm do cache kết nối với CPU sử dụng bus hệ thống có tần số làm việc không cao và băng thông hẹp. Bù lại, các sự kiện miss của kiến trúc Look Aside nhanh hơn do khi CPU không tìm thấy mục tin trong cache, nó đồng thời tìm mục tin trong bộ nhớ chính tại cùng một chu kỳ xung nhịp. + Kiến trúc kiểu Look Through, cache được đặt nằm giữa CPU và bộ nhớ chính. Như vậy cache có thể “thấy” chu kỳ bus của CPU trước, rồi nó mới “truyền” lại cho bộ nhớ chính. Cache kết nối với CPU bằng hệ thống bus riêng tốc độ cao và băng thông lớn, thường là bus mặt sau(BSB). Cache kết nối với bộ nhớ chính thông qua bus hệ thống hay bus mặt trước(FSB). FSB có tần số làm việc và băng thông thấp hơn nhiều so với BSB. Ưu điểm chính của kiến trúc này là các sự kiện hit của kiến trúc này rất nhanh do CPU kết nối với cache bằng kênh riêng có tốc độ cao. Tuy nhiên, các sự kiện miss của kiến trúc Look Through chậm hơn do khi CPU không tìm thấy mục tin trong cache, nó cần tìm mục tin đó trong bộ nhớ chính tại một chu kỳ xung nhịp tiếp theo. - Các dạng ánh xạ cache + Phương pháp ánh xạ trực tiếp bộ nhớ cache: Cache được chia thành n dòng (line) đánh số từ 0 đến n-1. Bộ nhớ chính được chia thành m trang (page), đánh số từ 0 đến m-1. Mỗi trang nhớ lại được chia thành n dòng (line) đánh số từ 0 đến n-1. Kích thước mỗi trang của bộ nhớ chính bằng kích thước cache và kích thước một dòng trong trang bộ nhớ cũng bằng kích thước một dòng cache. Ánh xạ từ bộ nhớ chính vào cache được thực hiện theo quy tắc sau: Line0 của các trang (page0 đến pagem-1) ánh xạ đến Line0 của cache; Line1 của các trang (page0 đến pagem-1) ánh xạ đến Line1 của cache; Linen-1 của các trang (page0 đến pagem-1) ánh xạ đến Linen-1 của cache. Phương pháp ánh xạ trực tiếp, tại mọi thời điểm luôn có cố định m dòng bộ nhớ cùng cạnh tranh một dòng cache. Để có thể quản lý được các ô nhớ được nạp, cache sử dụng địa chỉ ánh xạ trực tiếp gồm 3 thành phần: Tag(địa chỉ trang trong bộ nhớ chứa dòng được nạp vào cache), Line(địa chỉ dòng trong cache) và Word (địa chỉ của từ trong dòng) Phương pháp ánh xạ trực tiếp có thiết kế đơn giản và rất nhanh do không tốn nhiều thời gian truy tìm địa chỉ ô nhớ trong cache. Do các ánh xạ là cố định, nên khi biết địa chỉ ô nhớ có thể tìm được vị trí của nó trong cache rất nhanh chóng. Tuy nhiên, cũng do ánh xạ cố định nên phương pháp này dễ gây xung đột vì có thể tạo ra nhiều dòng cache bị nút cổ chai trong quá trình hoạt động của cache. Có thể có nhiều dòng cache rảnh rỗi hay ít được sử dụng, nhưng cũng có nhiều dòng cache quá tải do bị nhiều dòng bộ nhớ cùng cạnh tranh. Cũng vì lý do dễ gây xung đột nên hiệu quả tận dụng không gian cache của phương pháp ánh xạ trực tiếp không cao và hệ số hit thấp. + Phương pháp ánh xạ kết hợp đầy đủ: Cache được chia thành n dòng (line) đánh số từ 0 đến n-1. Bộ nhớ chính được chia thành m dòng (line), đánh số từ 0 đến m-1. Kích thước một dòng bộ nhớ bằng kích thước một dòng cache. Do bộ nhớ chính có kích thước lớn hơn nhiều kích thước cache, nên m >> n. Ánh xạ từ bộ nhớ chính vào cache được thực hiện theo quy tắc sau: Một dòng trong bộ nhớ chính có thể ánh xạ đến một dòng bất kỳ trong cache, hay Linei (i = 0 ÷ m-1) của bộ nhớ chính ánh xạ đến Linej (j = 0 ÷ n-1) của cache; Có thể thấy với phương pháp ánh xạ kết hợp đầy đủ, có n dòng cache để lựa chọn ánh xạ. Khi biết được địa chỉ của dòng trong bộ nhớ, ta chưa biết vị trí của nó trong cache. Để có thể quản lý được các ô nhớ được nạp, cache sử dụng địa chỉ ánh xạ kết hợp đầy đủ chỉ gồm 2 thành phần: Tag (là địa chỉ dòng trong bộ nhớ được nạp vào cache) và Word (là địa chỉ của từ trong dòng). Phơng pháp ánh xạ kết hợp đầy đủ sử dụng ánh xạ không cố định nên có ưu điểm là mềm dẻo, giảm được xung đột sử dụng dòng cache. Việc sử dụng các dòng cache có thể được điều phối hướng đến phân bố hợp lý hơn, giảm hiện tượng tạo các dòng bị nút cổ chai với mức độ cạnh tranh lớn. Phương pháp này có hiệu suất sử dụng không gian cache cao hơn và có khả năng cho hệ số hit cao. Tuy nhiên, cũng do việc sử dụng ánh xạ không cố định, nên việc truy tìm địa dòng nhớ trong cache tốn nhiều thời gian, gây chậm trễ, đặc biệt với các cache có kích thớc lớn. Phương pháp này có thiết kế phức tạp do cần bổ sung thêm các bộ so sánh địa chỉ dòng cache nhằm tăng tốc cho quá trình truy tìm địa chỉ dòng nhớ trong cache. Do vậy, phương pháp ánh xạ kết hợp đầy đủ chỉ thích hợp với các cache có dung lượng nhỏ. + Phương pháp ánh xạ tập kết hợp: Cache được chia thành k đường (way) đánh số từ 0 đến k-1. Mỗi đường cache lại được chia thành n dòng (line) đánh số từ 0 đến n-1. Bộ nhớ chính được chia thành m trang (page), đánh số từ 0 đến m-1. Mỗi trang lại được chia thành n dòng (line) đánh số từ 0 đến n-1. Kích thước mỗi trang của bộ nhớ chính bằng kích thước một đường của cache và kích thước một dòng trong trang bộ nhớ cũng bằng kích thước một dòng của đường cache. Ánh xạ từ bộ nhớ chính vào cache được thực hiện theo quy tắc sau: Ánh xạ trang bộ nhớ đến đường cache (ánh xạ không cố định): - Một trang của bộ nhớ có thể ánh xạ đến một đường bất kỳ của cache. Ánh xạ dòng của trang đến dòng của đường (ánh xạ cố định): - Line0 của pagei của bộ nhớ ánh xạ đến Line0 của wayj của cache; - Line1 của pagei của bộ nhớ ánh xạ đến Line1 của wayj của cache; - Linen-1 của pagei của bộ nhớ ánh xạ đến Linen-1 của wayj của cache. Có thể thấy phương pháp ánh xạ tập kết hợp đảm bảo được sự kết hợp hài hoà giữa ánh xạ mềm từ trang nhớ đến đường cache và ánh xạ cố định từ dòng của trang nhớ đến dòng của đường cache. Do số đường cache không lớn nên việc tìm kiếm địa chỉ trang nhớ trong các đường cache không ảnh hởng nhiều đến tốc độ truy cập cache. Hơn nữa, do ánh xạ từ dòng của trang nhớ đến dòng của đường cache là cố định, có thể nhanh chóng xác định được vị trí của dòng nhớ trong đường cache khi biết địa chỉ của nó. Để có thể quản lý được các ô nhớ được nạp, cache sử dụng địa chỉ ánh xạ trực tiếp gồm 3 thành phần: Tag (là địa chỉ trang trong bộ nhớ chứa dòng được nạp vào cache), Set (là địa chỉ dòng trong đường cache) và Word (là địa chỉ của từ trong dòng). Phương pháp ánh xạ tập kết hợp tận dụng được ưu điểm của cả hai phơng pháp ánh xạ trực tiếp và ánh xạ kết hợp đầy đủ: nhanh do ánh xạ trực tiếp được sử dụng cho ánh xạ dòng, ít xung đột do ánh xạ từ các trang bộ nhớ đến các đường cache là không cố định. Nhờ vậy, phân bố sử dụng không gian cache đồng đều hơn và đạt hệ số hit cao hơn. Nhược điểm lớn nhất của phương pháp này là có độ phức tạp thiết kế và điều khiển cao do cache được chia thành một số đường, thay vì chỉ một đường duy nhất. - Các phương pháp thay thế dòng cache + Thay thế ngẫu nhiên là phương pháp đầu tiên được sử dụng do có thiết kế đơn giản và dễ cài đặt. Các dòng cache được lựa chọn để thay thế một cách ngẫu nhiên, không theo một quy luật nào. Do vậy, phương pháp thay thế ngẫu nhiên thường có hệ số miss cao do phương pháp này không xem xét đến các dòng cache đang thực sự được sử dụng. Nếu một dòng cache đang được sử dụng và bị thay thế sẽ xảy ra miss và nó lại cần được đọc từ bộ nhớ chính vào cache. + Phương pháp thay thế kiểu vào trước ra trước(FIFO) các dòng nhớ được nạp vào cache trước sẽ được chọn để thay thế trước. Phương pháp này luôn có khuynh hướng loại bỏ các dòng cache có thời gian sử dụng lâu nhất. Nó có khả năng cho hệ số miss thấp hơn so với thay thế ngẫu nhiên các dòng nhớ có thời gian tồn tại trong cache lâu nhất có thể có xác suất được sử dụng thấp hơn. Tuy nhiên, phương pháp này vẫn chưa thực sự xem xét đến các dòng cache đang thực sự đợc sử dụng - một dòng cache “già” vẫn có thể đang được sử dụng. Một nhược điểm khác của thay thế kiểu vào trước ra trước là thiết kế và cài đặt phức tạp hơn, do cần phải có mạch mạch điện tử chuyên dụng để theo dõi trật tự nạp các dòng bộ nhớ vào cache. + Phương pháp thay thế các dòng ít được sử dụng gần đây nhất(LRU) hoạt động theo nguyên tắc: các dòng cache được lựa chọn để thay thế là các dòng ít được sử dụng gấn đây nhất. Phương pháp này cho hệ số miss thấp nhất so với thay thế ngẫu nhiên và thay thế FIFO, do thay thế LRU có xem xét đến các dòng đang thực sự được sử dụng – tuân theo yếu tố lân cận theo thời gian một cách chặt chẽ. Nhược điểm duy nhất của phương pháp này là thiết kế và cài đặt phức tạp hơn, do cần phải có mạch điện tử chuyên dụng để theo dõi tần suất sử dụng các dòng cache.

Back to posts

Ring ring