2012-04-29 37 views
5

Lời xin lỗi của tôi nếu điều này là sai stackexchange cho việc này; nó chỉ có vẻ như là gần nhất với một nơi có thể giúp đỡ cho kiến ​​trúc máy tính. Đối với một vấn đề bài tập về nhà trong các hệ thống máy tính của tôi đã hỏi:Bộ nhớ cache được ánh xạ trực tiếp Lượt truy cập/Miss

Consider three direct mapped caches X, Y, and Z each interpreting an 
8-bit address slightly differently according to the {tag:setIdx:byteOffset} 
format specified. For each address in the reference stream, indicate whether the 
access will hit (H) or miss (M) in each cache. 

        C1  C2  C3 
Address Formats: {2:2:4} {2:3:3} {2:4:2} 

Address References in Binary: 00000010, 00000100... 

tôi phải nói cho dù mỗi người trong số các tài liệu tham khảo địa chỉ sẽ dẫn đến một hit hoặc bỏ lỡ nhưng tôi không biết bắt đầu từ đâu. Đối với các định dạng, tôi nghĩ rằng thẻ có nghĩa là thẻ dữ liệu trong một khối bộ nhớ cache, setIdx có nghĩa là số bit được cho để biểu diễn các khối khác nhau trong bộ nhớ cache và bù đắp là byte cụ thể trong một khối mà bạn có thể lựa chọn.

Tôi cảm thấy như tôi không hiểu những gì một hit hoặc bỏ lỡ là. Tôi nghĩ có 3 loại: bắt buộc, năng lực và xung đột. Làm thế nào tôi có thể biết đó là một lỗi bắt buộc nếu tôi không biết những gì đã có trong bộ nhớ cache? Làm thế nào tôi có thể cho biết dung lượng bộ đệm được cung cấp bởi các định dạng thẻ?

Cảm ơn mọi gợi ý hoặc mẹo.

Trả lời

3

Lấy C1 chẳng hạn, nó có 2 bit cho setIdx và 4 bit cho byteOffset.

Vì vậy, bộ nhớ cache này sẽ có 2^2 = 4 khối (00, 01, 10 và 11) và mỗi khối sẽ có 2^4 = 16 byte.

Tham chiếu địa chỉ bây giờ có thể được chia thành định dạng C1: {00 00 0010}

Giả sử bộ nhớ cache là trống theo mặc định, tra cứu đầu tiên sẽ dẫn đến bỏ lỡ. Tuy nhiên, bộ nhớ cache bây giờ sẽ có khối "00" được tải bằng thẻ "00".

Tham chiếu tiếp theo {00 00 0100} sẽ tra cứu khối "00", nó thấy rằng thẻ cũng là "00", chúng tôi có lần truy cập.

+0

Biến bù byte là gì? – KWJ2104

+0

bù đắp byte là khối lớn bao nhiêu. Ví dụ: sử dụng cùng một tham chiếu như trên, giả sử C1 có {00 00 0010} được tải trong khối {00}, khối này chứa bộ nhớ {00 00 0000} đến {00 00 1111}. Tuy nhiên, nếu bạn cố tìm kiếm {01 00 0010}, nó sẽ bị bỏ lỡ vì thẻ khác. (Ngoài ra, tôi giả định đây là bản đồ liên kết thiết lập 1 chiều) –

1

Tôi không nghĩ rằng bạn sẽ bị ảnh hưởng. Mặc dù địa chỉ 00 00 0100 sẽ tra cứu cùng một khối, nó sẽ tìm kiếm một địa chỉ khác trong bộ nhớ. Trong lần truy cập bộ nhớ cache được ánh xạ trực tiếp chỉ gây ra bằng cách cố gắng truy cập cùng một địa chỉ trong bộ nhớ trong cùng một khối trong hướng dẫn liên tiếp. Địa chỉ trong bộ nhớ được cho bởi địa chỉ byte chứ không phải là số khối. Bộ nhớ cache được ánh xạ trực tiếp sẽ thay thế nội dung của một khối miễn là nó không cố truy cập cùng một địa chỉ trong khối. Nếu 00 00 0100 được đặt trước một 00 00 0100 khác thì sẽ có một lần truy cập trong bộ nhớ cache được ánh xạ trực tiếp.

Trong bộ nhớ cache được liên kết, địa chỉ bộ nhớ được cho theo số khối và không phải là địa chỉ byte để một lần truy cập sẽ được tạo tại đây.

Số khối được cung cấp theo tầng (Số byte/Số byte trên mỗi khối) mod (số khối)

+0

Nói chung, bộ nhớ cache tải toàn bộ một khối trên không chỉ các byte được yêu cầu. (Một số bộ đệm sử dụng phân vùng, cung cấp nhiều hơn một bit hợp lệ cho mỗi khối, nhưng không có bộ xử lý chính thống nào cung cấp một bit hợp lệ cho mỗi byte hoặc thậm chí mỗi đoạn 4 byte. có thể làm giảm hiệu suất—, do đó, giao diện rộng 64 bit cho phép truyền * tối thiểu * 32 byte.) –

+0

@ PaulA.Clayton Bạn có thể xem xét câu hỏi bộ nhớ đệm này không? http: // stackoverflow.com/questions/30555623/how-many-bits-in-the-address-field-cho-một-trực tiếp-ánh xạ-bộ nhớ cache – committedandroider

Các vấn đề liên quan