2012-05-04 4 views
0

나는 다음과 같은 프로그램에서 일한지 그리고 일부 정보가 누락 것처럼 느낌 또는) 및 b)는 트릭의 비트 :가상 메모리, LRU, 및 페이지 오류 - 숙제

루프는 4KB 페이지를 사용하는 가상 메모리 시스템에서 프로그램의 일부로 실행됩니다. LRU 교체 알고리즘을 사용하여 필요할 때 메모리에서 교체 할 페이지를 선택한다고 가정합니다. "시작"이라고 표시된 명령은 페이지 경계에서 시작하고 루프 본문에는 4601 쌍의 시프트 명령어 (sll & srl)가 포함되어 있습니다.

Start: addi $3,$0,32 

Loop: sll $4,$4,1 

srl $4,$4,1 

...   # previous two instructions are 

...   # repeated 4600 times 

addi $3,$3,-1 

bne $3,$0,loop 

a) 메모리에 8 개의 4KB 프레임이 포함되어있는 경우 루프 실행 중에 얼마나 많은 페이지 폴트가 발생합니까?

b) 메모리에 9KB 프레임이 4 개있는 경우 루프를 실행하는 동안 얼마나 많은 페이지 폴트가 발생합니까?

a) 및 b) 모두 5 페이지 오류가 발생하지 않습니까? 반복 할 때마다 4602 개의 명령어가 있으며 MIPS 명령어는 4B이고 페이지 크기는 4KB입니다. 루프를 4킬로바이트/4b는 = 1,024 페이지 당 명령어, 그래서 처음 - 1,023 프레임 0 페이지 폴트 예

지시 1,024 -

지시 0 2,047 프레임 1 페이지 폴트 예

지시 2048-3071 프레임 2 페이지 오류 예

지침 3072-4096 프레임 3 페이지 오류 예

지침 4096-4602 프레임 4 페이지 오류 예

그래서 두 번째 인터럽트에서 루프로 돌아 왔을 때 페이지는 LRU 정책에 의해 아직 대체되지 않았으므로 다시 참조 할 수 있습니다. 왜 우리는 32 루프 반복을 위해 8 프레임 또는 9 프레임을 갖게 되었습니까?

답변

0

루프 본문에는 4601 쌍의 교대 명령어가 포함되어 있습니다. addibne 지침과 함께 루프 당 총 개의 명령이 있습니다.

+0

나는 8 ~ 9 프레임이 얼마나 중요한지 알 수 있습니다. 말씨는 약간 혼란 스럽다. 이전의 두 가지 지시 사항이 총 4600 건 반복되었다는 의미로 사용되었다. 문제를 좀 더주의 깊게 읽었어야했다. 감사! – MARK48ADCAP