intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Kiến trúc máy tính: Chương 5 - Tổ chức bộ nhớ (Phần bộ nhớ đệm nhanh)

Chia sẻ: Võ đình Thiên | Ngày: | Loại File: PDF | Số trang:11

88
lượt xem
4
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Cùng nắm kiến thức trong chương này thông qua việc tìm hiểu các nội dung sau: Ý tưởng thiết kế cache, nguyên tắc chung, cấu trúc chung của cache / bộ nhớ chính, các vấn đề khi vận hành, các PP ánh xạ địa chỉ,...

Chủ đề:
Lưu

Nội dung Text: Bài giảng Kiến trúc máy tính: Chương 5 - Tổ chức bộ nhớ (Phần bộ nhớ đệm nhanh)

15/11/2017<br /> <br /> Bài 5<br /> Tổ chức bộ nhớ<br /> Phần BỘ NHỚ ĐỆM NHANH<br /> (CACHE MEMORY)<br /> (tham khảo trang 66<br /> – KTMT Cần Thơ)<br /> <br /> Ý tưởng thiết kế cache<br /> Xác suất truy cập dữ liệu trong bộ nhớ trong<br /> Một chương trình mất 90% thời gian thi hành lệnh<br /> của nó để thi hành 10% số lệnh của chương trình.<br /> <br /> Cache thiết kế dựa trên 2 nguyên tắc:<br /> Nguyên tắc về thời gian: cho biết các ô nhớ được<br /> hệ thống xử lý thâm nhập có khả năng sẽ được<br /> thâm nhập trong tương lai gần.<br /> Nguyên tắc về không gian: cho biết, bộ xử lý<br /> thâm nhập vào một ô nhớ thì có nhiều khả năng<br /> thâm nhập vào ô nhớ có địa chỉ kế<br /> <br /> 1<br /> <br /> 15/11/2017<br /> <br /> Nguyên tắc chung<br /> Cache có tốc độ nhanh<br /> hơn bộ nhớ chính,<br /> chứa dữ liệu và lệnh<br /> thường dùng đến.<br /> Cache được đặt giữa<br /> CPU và bộ nhớ chính<br /> nhằm tăng tốc độ truy<br /> nhập bộ nhớ của CPU<br /> Cache có thể được đặt<br /> trên chip của CPU<br /> (vận hành bằng bộ điều<br /> khiển cache)<br /> <br /> CPU<br /> <br /> Bộ<br /> nhớ<br /> <br /> Cache<br /> <br /> Chuyển<br /> từng<br /> từ<br /> <br /> Chuyển<br /> từng<br /> khối<br /> <br /> Ví dụ về thao tác của cache<br /> CPU yêu cầu nội dung của ngăn nhớ<br /> CPU kiểm tra trên cache với dữ liệu này<br /> Nếu có, CPU nhận dữ liệu từ cache (nhanh)<br /> (cache hit)<br /> Nếu không có (cache miss),<br /> đọc block nhớ chứa dữ liệu từ bộ nhớ chính<br /> vào cache (lâu) (cache penalty).<br /> Tiếp đó chuyển dữ liệu từ cache vào CPU<br /> <br /> 2<br /> <br /> 15/11/2017<br /> <br /> Cấu trúc chung<br /> của cache / bộ nhớ chính<br /> Bộ nhớ chia thành các Block<br /> cache chia làm các Line<br /> có kích thước bằng nhau<br /> <br /> Vận hành<br /> Một số Block của bộ nhớ chính được nạp vào các<br /> Line của cache.<br /> Nội dung Tag (thẻ nhớ) cho biết block nào của bộ<br /> nhớ chính hiện đang được chứa ở line đó.<br /> Khi CPU truy nhập (đọc/ghi) một từ nhớ, có 2 khả<br /> năng xảy ra:<br /> Từ nhớ đó có trong cache (cache hit)<br /> Từ nhớ đó không có trong cache (cache miss)<br /> <br /> 3<br /> <br /> 15/11/2017<br /> <br /> Các vấn đề khi vận hành<br /> Vì số line của cache ít hơn số block của bộ nhớ chính,<br /> cần có một thuật giải ánh xạ thông tin trong bộ nhớ<br /> chính vào cache.<br /> <br /> Câu hỏi 1: Phải để một khối bộ nhớ vào chỗ<br /> nào của cache (sắp xếp khối)?<br /> Câu hỏi 2: Làm sao để tìm một khối khi nó<br /> hiện diện trong cache (nhận diện khối)?<br /> Câu hỏi 3: Khối nào phải được thay thế trong<br /> trường hợp thất bại cache (thay thế khối)?<br /> Câu hỏi 4: Việc gì xảy ra khi ghi vào bộ nhớ<br /> (chiến thuật ghi)?<br /> <br /> Các PP ánh xạ địa chỉ<br /> a) Ánh xạ trực tiếp (Direct mapping)<br /> Mỗi block của bộ nhớ chính chỉ có thể được nạp<br /> vào 1 line duy nhất của cache.<br /> Quy ước nạp: (với m là số line, đánh số: 0 đến m-1<br /> B0 → L0 B1 → L1 ...... Bm-1 → Lm-1<br /> Bm → L0 Bm+1 → L1<br /> Vì thế:<br /> L0 : B0, Bm, B2m ...<br /> L1 : B1, Bm+1, B2m+1 ..<br /> Kết luận: Bj chỉ có thể được nạp vào Li với i = j mod m<br /> <br /> 4<br /> <br /> 15/11/2017<br /> <br /> Ví dụ 1(a)<br /> Bộ nhớ trong có 32 khối, cache có 8 khối, mỗi<br /> khối gồm 32 byte, khối thứ 12 của bộ nhớ trong<br /> được đưa vào cache. Bộ nhớ có kích thước 1 KB<br /> <br /> Thao tách trên bit của<br /> Phép tính mod cho 2n: (8 = 23)<br /> Tối đa 32 khối: 5 bit<br /> 12 giá trị nhị phân:<br /> 01100<br /> 12 mod 8 = 4, 3 bit cuối<br /> 100<br /> 12 / 8 = 1, 2 bit đầu<br /> 01<br /> giá trị (01) được lưu trong Tag để phân biệt Block nào<br /> đang nằm trong Line<br /> Ví dụ: để phân biệt 4, 12, 20, 28<br /> 4/8=0<br /> (00)<br /> 12 / 8 = 1<br /> (01)<br /> 20 / 8 = 2<br /> (10)<br /> 28 / 8 = 3<br /> (11)<br /> <br /> 5<br /> <br />
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2