2013-05-06 47 views
5

Tôi đang cố gắng giải quyết một câu hỏi kiểu khách quan, đến Kiểm tra. Tôi thực sự không biết câu trả lời đúng, và không biết làm thế nào để có được nó, cần sự giúp đỡ của bạn. Cảm ơn bạn .Lượt truy cập và bỏ lỡ khẩu phần trong bộ nhớ cache và tính toán thời gian trung bình

Câu hỏi: Trong một hệ thống nhất định, thời gian truy cập bộ nhớ chính là 100 ns. Bộ nhớ cache nhanh hơn bộ nhớ chính 10 lần và sử dụng giao thức ghi mặc dù. Nếu tỷ lệ hit cho yêu cầu đọc là 0,92 và 85% yêu cầu bộ nhớ được tạo ra bởi CPU là để đọc, phần còn lại để viết; thì thời gian xem xét trung bình cả đọc và viết yêu cầu là

a) 14.62ns

b) 348.47ns

c) 29.62ns

d) 296.2ns

Công việc của tôi ::::

Vâng, thời gian truy cập bộ nhớ = 100ns

thời gian truy cập

bộ nhớ cache sẽ là = 10 ns (10 lần nhanh hơn)

In order to find avg time we have a formula 

Tavg = hc+(1-h)M 

    where h = hit rate 
    (1-h) = miss rate 
     c = time to access information from cache 
     M = miss penalty (time to access main memory) 

Viết thông qua hoạt động: vị trí bộ nhớ cache và vị trí bộ nhớ chính được cập nhật cùng một lúc.

Nó được cho rằng 85% yêu cầu được tạo ra bởi CPU là yêu cầu đọc và 15% là yêu cầu ghi.

Tavg = 0.85(avg time for read request)+ 0.15(avg time for write request) 
    = 0.85(0.92*10+0.08*100)+0.15(avg time for write request) 

// * 0,92 là tỷ lệ truy cập cho yêu cầu đọc, nhưng tỷ lệ lần truy cập cho yêu cầu ghi không được đưa ra ??

Nếu tôi cho rằng hit tỷ lệ trúng cho ghi yêu cầu là tương tự như tỷ lệ hit cho yêu cầu đọc rồi,

= 0.85(0.92*10+0.08*100)+0.15(0.92*(10+100)+0.08*100) 
    =31 ns 

Nếu tôi cho rằng tỷ lệ hit là 0% cho ghi yêu cầu sau đó,

= 0.85(0.92*10+0.08*100)+0.15(0*110+1*100) 
    =29.62 ns 

Trả lời

0

Trong trường hợp ghi chính sách và khi dữ liệu được đọc trực tiếp từ bộ nhớ chính khi xảy ra lỗi bộ nhớ cache,

Tavg(for write)=Hw*Tm +(1-Hw)*Tm = Tm 

Hw = hit tỷ lệ cho write, Tm = Thời gian để truy cập vào bộ nhớ chính

trong công thức này, trong cả hai trường hợp bộ nhớ cache nhấn & bỏ lỡ, chúng tôi có thể cập nhật và đọc dữ liệu đồng thời trong thời gian Tm bản thân, vì thường Tm >> Tc . Vì vậy, Tc để đọc có thể được bỏ qua.

Do đó bạn không cần biết tỷ lệ truy cập để viết cho câu hỏi này. và câu trả lời sẽ là 29.62ns

2

Thời gian truy cập trung bình chỉ xem xét = 0.92 * 10 + 0.08 * 100 = 17.2 ns.

Thời gian truy cập trung bình chỉ xem ghi = 100 ns (vì khi viết qua, bạn phải quay lại bộ nhớ để cập nhật ngay cả khi đó là lần truy cập hoặc bỏ lỡ. Nếu bạn giả sử tỷ lệ nhấn = 0,5 và bỏ lỡ = 0,5 thì 0,5 * 100 + 0.5 * 100 = 1 * 100)

Vì vậy, tổng thời gian truy cập cho cả đọc và viết sẽ là - 0,85 * 17,2 + 0,15 * 100 = 14,62 + 15 = 29,62 ns

** bạn không thể giả định tỷ lệ trúng để viết giống như tỷ lệ nhấn để đọc. cho viết yêu cầu (viết qua) bất cứ điều gì sẽ là trường hợp, bạn phải viết lại trong bộ nhớ. do đó thời gian truy cập ghi sẽ bằng thời gian truy cập bộ nhớ.

2

Giả định thứ hai của bạn là chính xác.

Với bộ nhớ cache ghi, nó ghi ngay các khối đã sửa đổi vào bộ nhớ và sau đó lên đĩa. Vì không có thời gian truy cập đĩa, nó được loại bỏ khỏi phương trình. Ký hiệu của tôi hơi khác, nhưng tôi sẽ đăng nó theo cách đó cho người đọc trong tương lai. Tôi đã sử dụng ký hiệu được đưa ra trong William StallingsHệ điều hành: Nguyên tắc thiết kế và nội bộ.

Given:

Tm = 100ns 
Tc = 10ns /* 10x faster than Tm */ 
Hr = 0.92 /* Hit rate reading */ 
85% reading => 15% of the time writing 

Giải pháp:

The effective access time for reading: 
Te_r = Hr * Tc + (1-Hr)Tm = 0.92*10 + (1 - 0.92)100 = 9.2 + 8 = 17.2 

The effective access time for writing, is determined from the Hit rate Hw, 
which is always 0, because the data must be immediately written onto the 
memory. 
Te_w = Hw * Tc + (1-Hw)Tm = 0*10 + (1 - 0)100 = 100 

Taking into account the percentage: 
0.85*17.2 + 0.15*100 = 14.62 + 15 = 29.62 

                    Q.E.D 
+0

Tại sao bạn đề cập đến bất cứ điều gì về đĩa? Câu hỏi không nói rằng bộ nhớ được hỗ trợ bởi đĩa, vì vậy bạn nên giả sử nó không phải là. ví dụ. phần 'MAP_PRIVATE' (giống như phần dữ liệu của một tệp thực thi) hoặc' MAP_ANONYMOUS' (malloc hoặc phần bss). Hệ điều hành bình thường không viết các trang ẩn danh bẩn để trao đổi trừ khi có áp lực bộ nhớ, ngay cả khi chúng dự trữ đủ trao đổi để tránh bị quá tải. –

+0

@PeterCordes Vâng, tôi đã giả định chính xác điều đó. Tuy nhiên, bộ nhớ đệm ghi đè vào bộ nhớ sao lưu và tôi nghĩ rằng với "bộ nhớ" có nghĩa là * bộ nhớ chính trong *, dễ bay hơi. Đó là lý do tại sao lưu trữ sao lưu phổ biến, tôi nghĩ về đĩa. Nhưng tôi vẫn không giả định nó trong giải pháp. – user8