Nếu không, một block trong bộ nhớ chính, gồm một vài word có chứa word mong muốn, được đọc vào cache và rồi word đó được gửi đến bộ xử lý.. Do tính cục bộ của tham chiếu, khi một block d
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT - HÀN
KHOA KĨ THUẬT MÁY TÍNH – ĐIỆN TỬ
Giảng viên hướng dẫn : TS NGUYỄN VŨ ANH QUANG
Đà nẵng, tháng 05 năm 2021
Trang 2ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT - HÀN
KHOA KĨ THUẬT MÁY TÍNH – ĐIỆN TỬ
ĐỒ ÁN CUỐI KÌ
BỘ NHỚ ĐỆM CACHE
Đà nẵng, tháng 05 năm 2021
Trang 3MỞ ĐẦU
Trên thực tế, các thiết kế của chip SoC có một vấn đề rất lớn, đó là bộ nhớ chính RAM chậm,quá chậm Vì vậy, người ta phải đưa ra một cách giải quyết khác và nó được gọi là bộ nhớ đệm.Tại CPU Nó nắm quyền chi phối tối cao với thiết bị và tốc độ của nó đòi hỏi phải rất cao MộtCPU trung bình có xung nhịp từ 2.6 GHz đến khoảng 3.5 GHz Trong khi đó, xung nhịp trung bình củamodule RAM chỉ khoảng 1200 MHz (có sử dụng công nghệ DDR) Vậy điều đó nghĩa là thanh RAMtrung bình chạy ở tốc độ xung nhịp chậm hơn khoảng 2-3 lần so với CPU Điều này quả thật như mộtkhoảng thời gian vô tận Mỗi khi CPU cần cái gì đó từ RAM, nó sẽ phải chờ đợi, chờ đợi và chờ đợitrong khi dữ liệu được nạp
Như vậy chúng ta đã thấy được mấu chốt của vấn đề Tuy nhiên, tình hình không thực sự xấuđến mức như vậy, bởi vì những công nghệ như Double-Data-Rate (DDR) RAM có thể gửi đi lượng dữliệu gấp đôi trong mỗi chu kỳ xung nhịp Ngoài ra còn các kỹ thuật được tích hợp bên trong CPU, đểđảm bảo dữ liệu sẽ được yêu cầu sớm nhất có thể, trước khi nó thực sự cần đến
Sự hạn chế hiệu năng này được gọi là nút thắt cổ chai Von Neumann, lấy theo tên của một trongnhững người chủ chốt phát minh ra máy tính hiện đại ngày nay Nhược điểm của kiến trúc VonNeumann là nút thắt cổ chai về hiệu năng xuất hiện khi dữ liệu đi qua bị giới hạn do sự khác biệt tươngđối về tốc độ giữa CPU và RAM
Có một số phương pháp để cải thiện tình trạng này và giảm sự khác biệt về hiệu năng, một trong
số đó là sử dụng bộ nhớ đệm Vậy bộ nhớ đệm là gì? Nói một cách đơn giản, nó là một lượng nhỏ của
bộ nhớ được đặt trên chip SoC, và chạy cùng tốc độ với CPU Điều này có nghĩa là CPU không cầnphải chờ đợi mỗi khi cần dữ liệu từ bộ nhớ đệm nữa, dữ liệu sẽ được gửi thẳng tới CPU với cùng tốc độ
mà CPU hoạt động Hơn nữa, bộ nhớ đệm được cài đặt trên mỗi một nhân CPU, nên mỗi nhân CPU sẽ
có bộ nhớ đệm riêng và sẽ không có bất kỳ tranh chấp nào về việc ai đượctruy cập vào nó
Nếu vậy thì sao không làm tất cả bộ nhớ giống như bộ nhớ đệm? Câu trả lời rất đơn giản Bộnhớ đệm có thể chạy với tốc độ đó rất đắt Giá thành là một rào cản thực sự Cấu tạo Cache thực ra làSRAM, sử dụng transitor lưu trữ 0,1 nên chi phí đắt, mỗi loại lại có mức đắt khác nhau nên không thểlàm to và dài như DRAM được Đó là lý do tại sao dung lượng bộ nhớ đệm trung bình thường đượctính bằng Kilobyte, có thể 32K hay 64K, thay vì hàng Megabyte như thường thấy ở DRAM
Vậy giờ mỗi nhân CPU sẽ có vài Kilobyte bộ nhớ siêu nhanh, có thể dùng để lưu bản sao củamột phần trên bộ nhớ chính Nếu bản sao trong vùng đệm thực sự là bộ nhớ mà CPU cần, nó sẽ khôngcần truy cập vào bộ nhớ chính chậm chạp để lấy dữ liệu nữa
Do bộ nhớ đệm chỉ có vài Kilobyte nên sẽ có những lúc vùng đệm có đúng nội dung bộ nhớ,còn được biết đến như một “cache hit” (trùng bộ nhớ đệm), và có những lúc không, còn được gọi là
“cache miss” (lệch bộ nhớ đệm) Tỷ lệ trùng bộ nhớ đệm càng cao càng tốt
Trang 4LỜI CẢM ƠN
Chúng em xin gửi lời cảm ơn chân thành tới nhà trường, đặc biệt là khoa Kĩ Thuật Máy Tính
- Điện Tử đã tận tình chỉ bảo, góp ý và tạo điều kiện cho chúng em hoàn thành đề tài nghiên cứu Đồ
án cuối kì môn Kiến trúc máy tính một cách tốt nhất
Chúng em xin cảm ơn TS Nguyễn Vũ Anh Quang đã nhiệt tình hướng dẫn chúng em trong quátrình thực hiện báo cáo đề tài nghiên cứu đồ án cuối kì
Trong quá trình thực hiện đề tài ngiên cứu, chúng em đã cố gắng nỗ lực, tuy nhiên không tránhkhỏi sai sót Chúng em mong nhận được sự góp ý của thầy cô giáo, và từ phía hội đồng để đề tài ngiêncứu của chúng em được hoàn thiện hơn
Chúng em xin chân thành cảm ơn!
Trang 5NHẬN XÉT
(Của giảng viên hướng dẫn)
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 6Chương 1 Nguyên lí bộ nhớ cache
Mục đích bộ nhớ Cache được thiết kế để kết hợp thời gian truy cập của bộ nhớ tốc độ cao, đắttiền với dung lượng lớn của bộ nhớ tốc độ thấp và rẻ hơn Trong đó, có một bộ nhớ chính tương đối lớn
và chậm cùng với một bộ nhớ cache nhỏ hơn, nhanh hơn
Cache chứa bản sao của một phần bộ nhớ chính Khi bộ xử lý muốn đọc một word của bộ nhớchính, trước tiên phải kiểm tra để xác định xem word đó có nằm trong cache hay không Nếu có, wordnày được truyền từ cache đến bộ xử lý Nếu không, một block trong bộ nhớ chính, gồm một vài word
có chứa word mong muốn, được đọc vào cache và rồi word đó được gửi đến bộ xử lý
Do tính cục bộ của tham chiếu, khi một block dữ liệu được truy xuất vào bộ nhớ cache để đápứng một tham chiếu bộ nhớ, có khả năng là sắp tới sẽ có sự tham chiếu tới cùng vị trí bộ nhớ đó hoặctới các word khác trong block đó
Trang 7Hình 1.2 – Bộ nhớ chính Hình 1.2 miêu tả việc sử dụng nhiều cấp bộ nhớ cache Cache L2 chậm hơn và thường lớn hơn
cache L1, cache L3 chậm hơn và thường lớn hơn cache L2
Trang 8Hình 1.4 – Cấu trúc Bộ nhớ chính Hình 1.3 và hình 1.4 mô tả cấu trúc của một hệ thống cache/bộ nhớ chính Bộ nhớ chính có tới
2n word, mỗi word có một địa chỉ n bit duy nhất Vì mục đích ánh xạ, bộ nhớ này được coi là bao gồm
K block có độ dài cố định Tức là, có M = 2n/k block trong bộ nhớ chính Bộ nhớ cache bao gồm Cblock, được gọi là line Mỗi line có K word, cộng với một vài bit của trường tag Mỗi line còn chứa cácbit điều khiển (không được thể hiện), chẳng hạn như một bit cho biết line đó kể từ khi được nạp vàocache đã được thay đổi hay chưa Độ dài của một line, không bao gồm tag và các bit điều khiển, đượcgọi là kích thước line Kích thước line nhỏ nhất là 32 bit, với mỗi “word” là một byte; trong trường hợpnày kích thước line là 4 byte Số lượng line ít hơn đáng kể so với số lượng block bộ nhớ chính(m≪M) Tại một thời điểm, một vài tập con của các block bộ nhớ chính nằm trong các line của cache.Nếu một word trong một block của bộ nhớ chính được đọc, block đó được truyền đến một trong cácline của cache Bởi vì có nhiều block hơn line, một line sẽ không được dành riêng vĩnh viễn cho mộtblock cụ thể Do đó, mỗi line bao gồm một tag để xác định block nào đang được lưu trữ Tag thường làmột phần của địa chỉ bộ nhớ chính
Trang 10Hình 1.6 – Tổ chức cache điển hình Hình 1.5 mô tả hành động đọc Bộ xử lý tạo ra địa chỉ đọc (RA – read address) của một word
cần đọc Nếu word đã nằm trong bộ nhớ cache, nó sẽ được gửi đến bộ xử lý Nếu không, block chứa
word đó được nạp vào bộ nhớ cache, và word được gửi đến bộ xử lý Hình 1.5 cho thấy hai hành động cuối cùng diễn ra song song và phảnánh tổ chức điển hình của bộ nhớ cache như mô tả trong hình 1.6.
Trong tổ chức này, cache kết nối với bộ xử lý thông qua các đường dữ liệu, điều khiển và địa chỉ.Đường dữ liệu và địa chỉ còn nối tới bộ đệm dữ liệu và địa chỉ, các bộ đệm này lại nối tới bus hệ thống
để từ đó nối tới bộ nhớ chính Khi có một cache hit, bộ đệm dữ liệu và bộ đệm địa chỉ bị vô hiệu hóa,chỉ có giao tiếp giữa bộ xử lý và cache, không có lưu lượng trên bus hệ thống Khi có một cache miss,địa chỉ mong muốn được tải lên bus hệ thống và dữ liệu được đưa ra qua bộ đệm dữ liệu tới cả bộ nhớcache và bộ xử lý Trong cách tổ chức khác, cache được đặt giữa bộ xử lý và bộ nhớ chính đối với tất
cả đường dữ liệu, địa chỉ và điều khiển Trong trường hợp này, đối với một cache miss, trước tiên wordmong muốn được đọc vào cache rồi sau đó chuyển từ cache sang bộ xử lý
Trang 11Chương 2 Các yếu tố thiết kế cache
2.1 Địa chỉ cache
Hầu hết các bộ xử lý không nhúng, và nhiều bộ vi xử lý nhúng, có hỗ trợ bộ nhớ ảo Về cơ bản,
bộ nhớ ảo là một tiện ích cho phép các chương trình định địa chỉ bộ nhớ từ quan điểm logic, mà khôngcần quan tâm dung lượng vật lý sẵn có của bộ nhớ chính Khi bộ nhớ ảo được sử dụng, các trường địachỉ của lệnh máy chứa các địa chỉ ảo Để đọc và ghi ở bộ nhớ chính, một khối phần cứng quản lý bộnhớ (MMU – memory management unit) sẽ dịch địa chỉ ảo sang địa chỉ vật lý trong bộ nhớ chính Khiđịa chỉ ảo được sử dụng, nhà thiết kế hệ thống có thể lựa chọn để đặt cache giữa bộ xử lý và MMUhoặc giữa MMU và bộ nhớ chính Cache logic, còn được gọi là cache ảo, lưu trữ dữ liệu bằng địa chỉ
ảo Bộ xử lý truy cập cache trực tiếp mà không phải đi qua MMU Cache vật lý lưu trữ dữ liệu nhờ sửdụng địa chỉ vật lý của bộ nhớ chính
Một ưu điểm rõ ràng của cache logic là tốc độ truy cập bộ nhớ cache nhanh hơn so với tốc độtruy cập cache vật lý, vì cache có thể đáp ứng trước khi MMU thực hiện dịch địa chỉ Nhược điểm làhầu hết các hệ thống bộ nhớ ảo cung cấp cho các ứng dụng cùng một không gian địa chỉ bộ nhớ ảogiống nhau Tức là, mỗi ứng dụng đều thấy một bộ nhớ ảo bắt đầu ở địa chỉ 0 Do đó, cùng một địa chỉ
ảo trong hai ứng dụng khác nhau tương ứng với hai địa chỉ vật lý khác nhau Vì vậy, bộ nhớ cache phảiđược làm sạch hoàn toàn với mỗi chuyển đổi ngữ cảnh của ứng dụng hoặc phải thêm các bit bổ sungvào mỗi line của cache để xác định xem địa chỉ này tương ứng với không gian địa chỉ ảo nào
Hình 2.1 – Cache Logic
Trang 12i = chỉ số line cache
j = chỉ số block bộ nhớ chính
m = tổng số line trong cache
Trang 13Hình 2.3 mô tả sự ánh xạ m block đầu tiên của bộ nhớ chính Mỗi block trong bộ nhớ chính
được ánh xạ vào một line duy nhất trong cache M block tiếp theo của bộ nhớ chính cũng được ánh xạvào cache theo cách tương tự; tức là, block Bm của bộ nhớ chính ánh xạ vào line L0 of cache, blockBm+1 ánh xạ vào line L1, v.v…
Trang 14Hàm ánh xạ này được thực hiện dễ dàng bằng địa chỉ bộ nhớ chính Hình 2.4 mô tả cơ chế tổng
quát Đối với mục đích truy cập bộ nhớ cache, mỗi địa chỉ bộ nhớ chính được xem như bao gồm batrường w bit có trọng số nhỏ nhất xác định một word hoặc một byte trong một block của bộ nhớ chính;trong hầu hết các máy tính hiện đại, địa chỉ được đánh ở mức byte S bit còn lại xác định một blocktrong 2 s block của bộ nhớ chính Logic cache chia s bit này thành trường tag s – r bit (phần bit cótrọng số lớn nhất) và trường line r bit Trường line xác định một line trong m = 2r line của cache.Tóm lại,
Độ dài địa chỉ = (s + w) bits
Số lượng đơn vị địa chỉ= 2s+w word hoặc byte 12
Kích thước block = kích thước line = 2w word hoặc byte
Số block trong bộ nhớ chính = 2s+ w/2w = 2s
Số line trong cache = m = 2r
Trang 15Kích thước tag = (s – r) bit
Trong hình 2.4, khi CPU cần một dữ liệu nào đó sẽ gửi một lệnh yêu cầu truy xuất đến cache.
Ban đầu Line sẽ được kiểm tra xem line mà CPU yêu cầu có trong cache hay không Vì một line trongmột khoảng thời gian có thể không chứa duy nhất một địa chỉ dữ liệu vì vậy sẽ tiếp tục kiểm tra tagxem có đúng là nằm trong line thuộc cache đó hay không Bằng cách lấy tag thuộc địa chỉ mà CPU cầnlấy thông tin so sánh với tag thuộc dữ liệu trong line vừa xác định trong cache, nếu đúng sẽ cùng vớiword tìm đúng vào dữ liệu mà CPU cần Nếu sai sẽ cộng với đường địa chỉ ban đầu vào trong mainmemory để truy xuất dữ liệu về CPU
Kỹ thuật ánh xạ trực tiếp đơn giản và không tốn kém để thực hiện Nhược điểm chính là chỉ cómột vị trí cố định trong cache dành cho một block bất kỳ Vì vậy, nếu một chương trình tham chiếu lặp
đi lặp lại các word thuộc hai block khác nhau nhưng được ánh xạ vào cùng một line, khi đó các block
sẽ liên tục bị đổi chỗ trong cache, và tỷ lệ truy cập cache thành công sẽ rất thấp Một phương pháp đểgiảm cache miss là ghi nhớ dữ liệu đã bị loại bỏ khỏi cache đề phòng trường hợp sau đó lại cần nó lầnnữa Vì dữ liệu bị loại bỏ đã từng được truy xuất, nên nó có thể được sử dụng lại Việc tái sử dụng này
có thể khả thi nếu sử dụng một cache nạn nhân Cache nạn nhân là bộ nhớ cache kết hợp toàn phần, cókích thước từ 4 đến 16 line, nằm giữa cache L1 ánh xạ trực tiếp và cấp độ bộ nhớ tiếp theo
2.2.2 Ánh xạ kết hợp
Trang 16Hình 2.6 - Tổ chức cache ánh xạ kết hợp
Ánh xạ kết hợp khắc phục nhược điểm của ánh xạ trực tiếp bằng cách cho phép mỗi block bộ
nhớ chính được nạp vào bất kỳ line nào trong cache (Hình 2.5) Trong trường hợp này, địa chỉ bộ nhớ
được coi là bao gồm trường Tag và trường Word Trường Tag xác định một block bộ nhớ chính duynhất Để xác định một block có nằm trong bộ nhớ cache hay không, logic điều khiển cache phải kiểm
tra tag của tất cả các line cùng lúc để tìm ra giá trị tag trùng Hình 2.6 minh hoạ cho logic này.
Cách tổ chức hoạt động của ánh xạ kết hợp tưng đối giống với ánh xạ trực tiếp, khác ở chỗ ánh
xạ kết hợp sẽ kiểm tra hết tất cả cách line có trong cache nên ko cần địa chỉ line mà thay vào đó địa chỉtag sẽ lớn hơn và cụ thể là 22 bit và mỗi lần cần lấy dữ liệu trong cache, CPU sẽ kiểm tra tất cả các tag
có trong cache
Lưu ý rằng không có trường nào trong địa chỉ tương ứng với chỉ số line, do đó chỉ số line trongcache không được xác định bằng định dạng địa chỉ Tóm lại,
Độ dài địa chỉ = (s + w) bit
Số lượng đơn vị địa chỉ = 2s + w word hoặc byte
Kích thước block = Kích thước line = 2w word hoặc byte
Trang 17Số lượng line trong cache = không xác định
Kích thước tag = s bi
Với ánh xạ kết hợp, việc lựa chọn block nào bị thay thế khi có một block mới được đọc vào bộnhớ cache trở nên linh hoạt hơn Các thuật toán thay thế được thiết kế sao cho tỷ lệ truy cập cachethành công là cao nhất Nhược điểm chính của ánh xạ kết hợp là yêu cầu mạch điện phức tạp hơn để cóthể kiểm tra tag của tất cả các line trong cache đồng thời
2.2.3 Ánh xạ kết hợp tập hợp
Ánh xạ kết hợp tập hợp thể hiện ưu điểm của cả phương pháp ánh xạ trực tiếp và kết hợp đồngthời lại giảm được nhược điểm của chúng Trong trường hợp này, bộ nhớ cache gồm một số tập hợp,mỗi tập hợp gồm một số line Hàm ánh xạ được thể hiện bằng công thức:
m = v * k
I = j mod vTrong đó:
I = chỉ số của tập hợp trong cache
j = chỉ số của block trong bộ nhớ chính
m = số lượng line trong cache
v = số lượng tập hợp
k = số lượng line trong một tập hợp
Trang 18Ta gọi đây là ánh xạ kết hợp tập hợp k chiều Với ánh xạ kết hợp tập hợp, block B có thể được
ánh xạ vào bất kỳ line nào của tập i Hình 2.7 (a) minh hoạ sự ánh xạ v block đầu tiên của bộ nhớ
chính Giống với ánh xạ kết hợp, mỗi word có thể ánh xạ vào nhiều line trong cache Đối với ánh xạ kếthợp tập hợp, một word có thể ánh xạ được vào tất cả các line trong một tập hợp nhất định, do đó blockB0 ánh xạ vào tập 0, block B1 ánh xạ vào tập 1, v.v… Vì vậy, một bộ nhớ cache kết hợp tập hợp có thểđược thực hiện như v bộ nhớ cache kết hợp Cũng có thể thực hiện bộ nhớ cache kết hợp tập hợp như kcache ánh xạ trực tiếp, như thể hiện trong hình 9.b Mỗi cache ánh xạ trực tiếp được gọi là một chiều,gồm v line Vậy v block đầu tiên của bộ nhớ chính được ánh xạ trực tiếp vào v line của mỗi chiều;nhóm v block tiếp theo của bộ nhớ chính được ánh xạ tương tự, v.v… Việc thực hiện ánh xạ trực tiếpthường được sử dụng khi mức độ kết hợp nhỏ (tức là giá trị k nhỏ) trong khi việc thực hiện ánh xạ kếthợp thường được sử dụng khi mức độ kết hợp cao hơn Đối với ánh xạ kết hợp tập hợp, logic điềukhiển cache diễn giải địa chỉ bộ nhớ thành ba trường: Tag, Set và Word Trong đó, d bit trường Set chỉđịnh một trong v = 2 d tập hợp s bit của trường Tag và Set xác định một trong 2s block của bộ nhớ