Bài giảng Kiến trúc máy tính (Tạ Kim Huệ) Chương 5

74 46 0
Bài giảng Kiến trúc máy tính (Tạ Kim Huệ) Chương 5

Đ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

Chương Bộ nhớ đệm (Caches) Nội dung • Phân cấp nhớ – Làm để tạo nhớ lớn nhanh? – Liên kết SRAM, DRAM, đĩa cứng • Caching – Những nhớ nhỏ lưu liệu quan trọng – Ví dụ • Bộ nhớ cache làm việc nào? – Các thẻ: Tags – Các khối: Blocks (lines) • Thực thi – loại cache: kết hợp toàn phần (Fully ‐associative), kết hợp theo tập hợp (set ‐associative), ánh xạ trực tiếp (direct ‐mapped) • Hiệu Đặt vấn đề • Cần nhớ lớn nhanh 32 – Bộ nhớ lệnh lớn ISA : memory address (4GB) – Yêu cầu nhanh 33% lệnh loads/stores 100% lệnh cần phải tải ghi lệnh • Tồn nhớ có dung lượng lớn truy nhập nhanh? Bộ nhớ lớn nhanh • Các loại nhớ có? – Hard disk: Huge (1000 GB) Super slow (1M cycles) – Flash: Big (100 GB) Very slow (1k cycles) – DRAM: Medium (10 GB) Slow (100 cycles) – SRAM: Small (10 MB) Fast (1‐10 cycles) • Cần nhớ nhanh lớn – Không thể sử dụng SRAM (too small) – Không thể sử dụng DRAM (too slow and small) – Không thể sử dụng Flash/Hard disk (way too slow) • Có thể kết nối chúng: – Speed từ (small) SRAMs – Size từ (big) DRAM Hard disk Xây dựng phân cấp sử dụng công nghệ khác để tận dụng ưu điểm nhớ có sẵn Phân cấp nhớ • Phân loại: – Dung lượng nhỏ nhanh: SRAM – Chậm: DRAM – Đĩa cứng dung lượng lớn chậm • Viễn cảnh: – Rất lớn – Rất nhanh (on average) • Mục tiêu? – Lưu trữ thông tin quan trọng nhớ nhanh – Di chuyển thông tin không quan trọng vào nhớ chậm Ví dụ: sửa video • Video dung lượng lớn (lớn DRAM) • Lưu vào ổ cứng • Tải phần cần chỉnh sửa vào DRAM • CPU tải liệu để xử lý vào cache • Di chuyển liệu vào DRAM cache xử lý video • Chú ý: – Lưu liệu quan trọng vào nhớ nhanh – Di chuyển liệu không quan trọng vào nhớ chậm Phân cấp nhớ ngày (Intel Nehalem) So sánh phát triển công nghệ… Làm để SRAMs có dung lượng lớn hơn, DRAM truy cập nhanh hơn? Các ý tưởng cache • Đặt liệu quan trọng nhớ nhỏ nhanh (cache) • Nếu truy cập (load/store) liệu quan trọng, cần thực nhanh • Nếu truy cập (load/store) liệu khác, dịch chuyển liệu vào cache • Nếu đặt xác liệu cần dùng vào cache, hầu hết truy cập tìm liệu hữu ích cache trở nên nhanh Xử lý trượt đệm (Khối kích thước từ) • • Đọc trượt (I$ D$): thời gian read_miss_penalty – dừng đường ống, nạp khối từ nhớ mức kế tiếp, đưa vào đệm gửi từ yêu cầu tới xử lý, tiếp tục đường ống Ghi trượt (D$) thời gian write_miss_penalty write_buffer_stalls – Cấp phát ghi – Đầu tiên đọc khối từ nhớ ghi từ vào khối or – Không cấp phát ghi– bỏ qua việc ghi vào đệm; ghi từ vào đệm ghi (tức ghi vào nhớ mức kết tiếp), không cần dừng đệm ghi không đầy SET-HUST, 22/03/2011 Chương Bộ nhớ - Phân cấp nhớ 69 Đo hiệu đệm • Giả sử thời gian truy cập nhớ trúng đệm bao gồm chu thơng thường CPU thì: Tcpu = I × CPI × Tc = I × (CPIideal + MemStallC ) × Tc CPIstall  Số chu kỳ MemStallC tổn thất trượt tổng read-stalls write-stalls Read-stall cycles = reads/program × read miss rate × read miss penalty Write-stall cycles = (writes/program × write miss rate  × write miss penalty) + write buffer stalls Với đệm ghi xun, ta có cơng thức đơn giản Memory-stall cycles = accesses/program × miss rate × miss penalty 70 Ảnh hưởng hiệu đệm • Tổn thất tương đối đệm tăng hiệu xử lý tăng (tăng tốc độ đồng hồ và/hoặc giảm CPI) – Tốc độ nhớ không cải thiện nhanh tốc độ xử lý Tổn thất trượt dùng để tính CPIstall đo theo số chu kỳ xử lý cần thiết để xử lý trượt – CPIideal thấp ảnh hưởng dừng trượt lớn • Bộ xử lý với CPIideal = 2, tổn thất trượt 100, 36% lệnh load/store, tỉ lệ trượt nhớ I$ 2% nhớ D$ 4% • • • Nếu CPIideal giảm xuống 1? 0.5? 0.25? Nếu tỉ lệ trượt nhớ D$ tăng lên 1%? 2%? Nếu tốc độ đồng hồ CPU tăng gấp (tổn hao trượt tăng gấp 2)? SET-HUST, 22/03/2011 Chương Bộ nhớ - Phân cấp nhớ 71 • Ảnh hưởng hiệu đệm Tổn thất tương đối đệm tăng hiệu xử lý tăng (tăng tốc độ đồng hồ và/hoặc giảm CPI) – Tốc độ nhớ không cải thiện nhanh tốc độ xử lý Tổn thất trượt dùng để tính CPIstall đo theo số chu kỳ xử lý cần thiết để xử lý trượt • – CPIideal thấp ảnh hưởng dừng trượt lớn Bộ xử lý với CPIideal = 2, tổn thất trượt 100, 36% lệnh load/store, tỉ lệ trượt nhớ I$ 2% nhớ D$ 4% MemStallC = 2% × 100 + 36% × 4% × 100 = 3.44  CPIstalls = + 3.44 = 5.44 gấp lần CPIideal ! • • • Nếu CPIideal giảm xuống 1? 0.5? 0.25? Nếu tỉ lệ trượt nhớ D$ tăng lên 1%? 2%? Nếu tốc độ đồng hồ CPU tăng gấp (tổn hao trượt tăng gấp 2)? SET-HUST, 22/03/2011 Chương Bộ nhớ - Phân cấp nhớ 72 Ngun nhân trượt đệm • Khơng tránh được: – Lần đầu truy cập khối – Giải pháp: tăng kích thước khối (làm tăng tổn thất trượt, khối lớn làm tăng tỉ lệ trượt) • Dung lượng: • Xung đột: – Bộ đệm khơng thể chứa tồn khối truy cập chương trình – Giải pháp: tăng kích thước đệm (có thể làm tăng thời gian truy cập) – Nhiều vị trí nhớ ánh xạ vào vị trí đệm – Giải pháp 1: tăng kích thước đệm – Giải pháp 2: tăng độ kết hợp đệm (có thể tăng thời gian truy cập) SET-HUST, 22/03/2011 Chương Bộ nhớ - Phân cấp nhớ 73 Tỷ số trượt đệm Miss ratio = % of cache misses = (# cache misses / # memory accesses) Tỷ lệ trượt (%) = (số lần trượt/số lần truy nhập) Q: Hiệu thay đổi tỷ số trượt đệm giảm từ 10.5% đến 3.5%? Slower Stays the same Faster A: Faster Các ứng dụng chạy nhanh hơn, biết nhanh ơn Tỷ lệ Trúng cache lớn nhiều so với trượt Average Memory Access Time (AMAT -Thời gian truy cập nhớ trung bình ) • Số chu kỳ trung bình cho truy cập nhớ = (hit time) + (miss %)*(miss time + miss penalty) Miss Miss Penalty Penalty là thời thời gian gian sau sau khi tìm tìm kiếm kiếm trong cache cache Hit time = Hit (1cycle) Miss time = Miss (1 cycle) Miss penalty = Penalty % miss = 2/6 = 33% AMAT = (1) + (33%)*(1 + 3) = 2.3 cycles per access Ví dụ: AMAT Machine – 100 truy nhập DRAM – chu kỳ truy nhập cache (hit or miss) • Tính AMAT cho lbm? – cache có dung lượng 256kB ? • 6% miss ratio • (1) + (6%)*(1+100) = 7.06 cycles per memory access – cache có dung lượng 8MB ? • 3% miss ratio • (1) + (3%)*(1+100) = 4.03 cycles per memory access Machine – 100 cycles to DRAM A: Slower cache – cycle cache access time (hit or miss) Cache cycles cho Machine chu • Tính AMAT cho bzip2? kỳ cho Machine Diều làm ảnh hưởng đến – 256kB cache? AMAT.Ứng dụng khác thấy 8MB cache có • 1.5% miss ratio Q: Tại bzip2’s AMAT với 256kB cache gần 3% miss ratio lbm bzip2 có 1.5% • (2) + (1.5%)*(2+100) = 3.53 giống với lbm’s với 8MB? miss ratio với cache 256kB Slower cache Different miss ratios Different applications Performance impacts of memory access time • Ảnh thưởng cace đến hiệu nào(CPI)? – 100 chu kỳ trừng phạt trượt đệm – 3% tỷ lệ trượt – 1.33 lần truy nhập nhớ lệnh (1 for instruction 33% for data) – CPI = 1.0 thực thi thông thường (lý tưởng) • Hiệu thay đổi nào? – CPI = CPIExecution + Memory stall cycles per instruction = 1.0 + 1.33*0.03*100 = 4.99 – Phân cấp nhớ làm xử lý chạy chậm lần! • Caches quan trọng! Caches quan trọng để tăng hiệu How much does cache matter? Phân tách lệnh liệu nhớ đệm • Cần nạp lệnh(IF) liệu (MEM) thời điểm • Cần loại cache: – Instruction cache (just instructions) – Data cache (just data) • AMAT phân chia cache: – AMAT: (% lệnh truy cập)*(hit time + (tỷ lệ trượt đệm lệnh)*(miss time + miss penalty)) + (% liệu truy cập)*(hit time + (tỷ lệ trượt đệm liệu)*(miss time + miss penalty)) • Ví dụ: – Thời gian truy nhập cache cycle (hit or miss) thời gian truy nhập nhớ 100 cycle – I‐cache: 1% miss ratio, D ‐cache: 5% miss ratio – 33% lệnh loads/stores → 25% truy cập liệu / 75% truy cập lệnh – (75%)*(1 + (1%)*(1+100)) + (25%)*(1 + (5%)*(1+100)) = 1.5 + 1.5 = 3.0 AMD/Intel caches Heterogeneous processor caches Memory hierarchy • We want big and fast – Build a hierarchy where we keep the most important data in fast memory – Other data goes in slow memory – If we move the data correctly we provide the illusion of fast and big • Registers accesses/cycle 32 ‐64 • Cache 1‐10 cycles 8kB‐256kB • Cache 40 cycles 4‐20MB • DRAM 200 cycles 4‐16GB • Flash 1000+ cycles 64‐512GB • Hard Disk 1M+ cycles ‐4TB Summary: how to make the memory hierarchy work • different cache types – Fully‐associative : Have to search all blocks, but very flexible – Direct‐mapped: Only one place for each block, no flexibility – Set‐associative: Only have to search one set for each block, flexible • We can adjust the block (line) size to reduce the overhead of tags • We figure out where data goes in a cache by looking at the address – Last bits are the byte in the word – Next N bits are the word in the cache block – Remaining bits are for the tag • We have different write policies – Write‐through: slow, simple – Write‐back: fast (keeps the data just in the cache), more complex • Performance effects are due to the average memory access time ... Data Tag Way 2 V Data Tag Data Way 2 253 253 253 253 254 254 254 254 255 255 255 255 Way 32 4x1 select Hit Data 50 Bố trí đệm kết hợp toàn phần/ liên kết toàn phần • Với kích thước... = 256 đường / tập, tập (mỗi đường chứa khối = 256 đường) 31 30 13 12 11 Byte offset 22 Tag Index Index V Tag V Data Tag Way V Data Tag Way 2 V Data Tag Data Way 2 253 253 253 253 ... 31 30 Hit 13 12 11 20 Tag Byte offset Data Block offset Index Index Valid Data Tag 253 254 255 20 32 44 Bộ nhớ đệm liên kết kiểu tập hợp: Set ‐associative caches linh hoạt Bộ đệm kiểu

Ngày đăng: 28/10/2021, 12:26

Mục lục

    Bộ nhớ lớn và nhanh

    Phân cấp bộ nhớ

    Ví dụ: sửa video

    Phân cấp bộ nhớ ngày nay (Intel Nehalem)

    So sánh sự phát triển công nghệ…

    Các ý tưởng cơ bản về cache

    Hiệu năng của caches

    Tính toán hiệu năng cache

    Ví dụ: bộ nhớ đệm

    Cache làm việc như thế nào?