가상 메모리와 관련된 몇 가지 문제에 대답하고 있으며이 작업이 어떻게 수행되는지에 대한 이해를 돕기 위해 도움이 필요합니다. 다음 가상 메모리 계산하기 페이지 테이블 및 변환 참조 버퍼
질문
은 :32 비트 워드와 바이트 - 어 드레서 블 시스템 4기가바이트의 가상 어드레스 공간 1기가바이트의 물리 어드레스 공간에, 4 킬로바이트 페이지 크기가 주어 . 페이지 테이블 엔트리가 4 바이트로 반올림된다는 가정이 있습니다.
a) 페이지 테이블의 크기는 몇 바이트입니까?
b) 이제 총 256 개의 주소 변환과 함께 4 방향 세트 연관 변환 lookaside 버퍼가 구현된다고 가정하십시오. 해당 태그 및 색인 필드의 크기를 계산하십시오. 다음
내 응답은 :
A :
페이지 테이블의 크기는 엔트리의 크기를 곱한 페이지 테이블에서의 엔트리의 수와 동일하다.
페이지 테이블의 항목 수는 메모리 크기를 페이지 크기로 나눈 것과 같습니다. 2^32/2^12 = 2^20.
항목의 크기는 단어 크기에서 페이지 테이블의 항목 수에 사용 된 비트 수 (32-20 = 12)를 뺀 것과 같습니다.
따라서, 페이지 테이블 크기가 (2^20) * 12 비트 = 12,582,912 비트 = 1572864 바이트
하지만, I는 this 발견 ("페이지 테이블 크기"의 제목하에), 이는 기본적으로 동일한 번호를 사용합니다.
페이지 테이블 크기 = ((가상 주소 공간의 크기)/(페이지 크기)) * (페이지 테이블 엔트리 크기) = (4 GB/4 KB) * 4 B = 4메가바이트
어떤 답이 맞습니까?
다음, B :
내가 태그가 블록의 수를 추가하여 계산 플러스 오프셋, 플러스 인덱스 있다고 생각하는 방법을 계산하는 부분 B.의 확신입니다. 이것은 4 방향 세트 연관이므로 각 세트에 4 개의 블록이 있습니다. 기본 인덱스 크기가 10 비트이고 4 방향 세트 연관이기 때문에 인덱스가 2 씩 감소하므로 인덱스는 8 비트입니다. 그러나 태그를 계산하는 데 도움이되는 오프셋을 계산하는 방법을 알지 못합니다.
모든 도움을 주시면 감사하겠습니다.
의견을 보내 주셔서 대단히 감사드립니다. 나는 파트 b를 완전히 이해합니다. 나는 부분적으로 나의 실수에 대한 당신의 설명에 약간 혼란 스럽다. 페이지 테이블의 항목 수를 계산하지 않습니까? – basil
@basil 아니요, 가정 된 플랫 페이지 테이블의 경우 필요한 PTE 수에 대해서는 정확하지만 문제의 명시된 가정과 실제 표현에 필요한 비트 수 모두에서 PTE 당 비트 수가 잘못되었습니다. 페이지의 주소. (플랫 페이지 테이블은 극히 드물다는 것을 언급했는데, 그 의미에서 페이지 테이블의 크기는 정확하지 않겠지 만, 이는 문제의 가정이 이해되지 않은 문제입니다.) –
나는 당신을 생각합니다. 따라서 위의 실제 주소에 대한 설명에 따라 입력 크기가 18 비트가 될 것이라고 말하고 있습니까? 그리고 나서 이것은 페이지 테이블에 대한 계산에 영향을 미칩니다 (정확한 계산 방법은 무엇입니까?). 반올림 페이지 테이블 항목에 대한 비트 여전히 날 던져,이 영향을 전체 크기, 항목 크기 및 페이지 테이블 항목 수를? – basil