5

객관적인 유형의 문제를 풀려고하고 있습니다. 시험에서 왔습니다. 나는 실제로 옳은 대답을 모르고 그것을 얻는 방법을 모른다. 당신의 도움이 필요하다. 고맙습니다 .캐시 및 평균 시간 계산에서 적중률을 계산하십시오.

질문 : 특정 시스템에서 주 메모리 액세스 시간은 100ns입니다. 캐시는 주 메모리보다 10 배 더 빠르며 쓰기 쓰는 프로토콜을 사용합니다. 읽기 요청에 대한 히트 비율이 0.92이고 CPU에 의해 생성 된 메모리 요청의 85 %가 읽기 용이고 나머지는 쓰기 용입니다. 다음 모두가 읽기 및 쓰기 요청의 평균 시간을 고려하여이

는))

B를 14.62ns

C를 348.47ns)

D를 29.62ns)

내 일을 296.2ns ::::

음, 메모리 액세스 시간 = 100ns

,515,

캐시 액세스 시간

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) 

쓰기 동작을 통해 (10 시간 빠름) = 10 ns의 것 : 캐시 위치와 주 메모리 위치가 동시에 갱신된다.

CPU가 생성 한 85 % 요청은 읽기 요청이고 15 %는 쓰기 요청입니다.

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는 읽기 요청에 대한 적중률이지만 쓰기 요청에 대한 적중률은 지정되지 않았습니다. ??

내가 가정하면 쓰기 요청에 대한 그 히트 적중률은 다음 읽기 요청에 대한 적중률과 동일,

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

내가 그 적중률은 다음 쓰기 요청에 대해 0 %로 가정하면,

= 0.85(0.92*10+0.08*100)+0.15(0*110+1*100) 
    =29.62 ns 
정책을 통해 쓰기의 경우

답변

0

및 캐시 미스가 발생하면 데이터가 직접 메인 메모리에서 읽을 때,

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

Hw = 쓰기에 대한 적중률, Tm = 주 메모리에 액세스 할 때의 시간

이 수식의 캐시 적중률은 모두 &이며, Tm >> Tc이므로 데이터를 동시에 업데이트하고 읽을 수 있습니다. . 따라서 독서에 대한 Tc는 무시할 수 있습니다.

따라서이 질문에 대한 쓰기의 적중률을 알 필요가 없습니다. 대답은 29.62ns입니다.

2

평균 액세스 시간은 읽기 = 0.92 * 10 + 0.08 * 100 = 17.2 ns만을 고려합니다.

평균 쓰기 시간 = 100 ns (write through에서는 히트 또는 미스 임에도 불구하고 업데이트하기 위해 메모리로 돌아 가야하기 때문에. 히트 비율 = 0.5, 미스 = 0.5, 그 다음 0.5 * 100 + 0.5 * 100 = 1 * 100)

그래서, 읽기 및 것이다 쓰기에 대한 총 액세스 시간 - 당신은 캔트 적중률을 가정 ** 0.85 * 17.2 + 0.15 * 100 = 14.62 + 15 = 29.62 ns의

읽기에 대한 적중률과 동일한 쓰기. 쓰기 요청 (write through)을 위해, 메모리에 다시 써야합니다. 따라서 쓰기 액세스 시간은 메모리 액세스 시간과 같습니다.

2

두 번째 가정은 정확합니다.

연속 기입 캐시를 사용하면 수정 된 블록을 즉시 메모리에 기록한 다음 디스크에 씁니다. 디스크 액세스 시간이 주어지지 않으므로 방정식에서 제거됩니다. 내 표기법은 조금 다르지만 나는 미래의 독자들을 위해 그런 식으로 게시 할 것이다. William Stallings의 표기법을 사용했습니다. 운영 체제 : 내부 및 디자인 원칙.

을 감안할 때 :

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

솔루션 :

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

왜 디스크에 대해 아무것도 언급합니까? 이 질문은 메모리가 디스크에 의해 뒷받침된다고 말하지 않으므로 그렇지 않다고 가정해야합니다. 예 : 'MAP_PRIVATE' (실행 파일의 데이터 섹션과 유사) 또는'MAP_ANONYMOUS' (malloc, 또는 bss 섹션) 매핑. 일반 운영체제는 과도한 커밋을 피하기 위해 충분한 스왑 공간을 확보하더라도 메모리가 부족하지 않으면 더러운 익명 페이지를 스왑에 쓰지 않습니다. –

+0

@PeterCordes 글쎄, 나는 그렇게 생각했다. 그러나 연속 기입 캐시는 보조 저장 장치에 쓰기 때문에 "메모리"가 휘발성 인 내부 메모리 *를 의미한다고 생각했습니다. 그래서 일반적인 백업 저장소로 디스크를 생각했습니다. 그러나 여전히 나는 해결책으로 생각하지 않았다. – user8