가상메모리는 프로그램이 사용하는 메모리를 페이지 단위로 나누고 불러오거나 지운다.
PTE: 가상 페이지를 물리적 페이지에 대응시키는 테이블
페이지 테이블: PTE의 배열
페이지 테이블에 요청한 가상주소에 대응하는 물리주소가 있으면 페이지 적중
페이지 테이블에 요청한 가상주소에 대응하는 물리주소가 없다면 페이지 오류
페이지를 하드디스크에서 불러옴 (메인 메모리에 불러올 공간이 없다면 다른 페이지 지우고 불러옴) -> 해당 PTE업데이트 -> 프로그램 재실행
페이지 오류로 인해 미스 패널티 발생
MMU: 메모리 관리 장치
- 가상주소 -> 물리주소로 바꿔줌(페이지 테이블 참조)
- 권한 검사
- 페이지 폴트 처리
가상메모리의 동작: 마치 캐시처럼 동작 (컴퓨터 구조 19 참고)
CPU가 MMU에 가상 주소 전송
MMU가 페이지 테이블에서 PTE 가져옴
(만약 해당 PTE가 없으면 페이지 오류)
MMU가 물리적 주소를 캐시/메모리로 보낸다
캐시/메모리가 해당 주소의 데이터를 CPU로 보낸다.
TLB: PTE전용 공간
메인 메모리에 있는 PTE는 메모리 사용하며 지워지거나 지연이 발생할 수 있다. 따라서 아예 PTE만 전문적으로 저장하는 TLB를 둔다.
물론, 모든 PTE를 저장하는건 아님.
가상주소, 물리적 주소의 해석
- 가상주소: VPN(가상 페이지 번호), VPO(가상 페이지 오프셋)
VPO = TLBT(TLB의 tag), TLBI(TLB의 index)
- 물리주소: PPN(물리 페이지 번호), PPO(물리 페이지 오프셋)
PPN = CT
PPO = CI, CO
VPO = PPO(가상페이지, 물리페이지 크기는 모두 같음. 따라서 얼마나 떨어져 있느냐도 같음.)
- 예)14비트의 가상주소, 12비트의 물리주소, 페이지의 크기는 64비트,
한번에 1바이트씩 읽는다 가정할때, 가상주소 0x03D4의 물리주소 및 데이터 값은?
TLB와 물리 메모리는 다음과 같다.
TLB

물리 메모리

0x03D4 = (0000001111010100)2
14비트에 맞춰 넣으면 00001111010100
VPO = log(페이지 크기)올림 = 6. 따라서 하위 6비트 010100
VPN = 나머지
TLB의 set개수가 4 = 2^2이므로, TLBI = 2비트
TLBT = 나머지
--------------------------------------
TLB에서 해당 값 찾기 -> PPN = 0x0D = 00001101
PPO = VPO = 010100
따라서 12비트에 맞춰 물리 주소는 001101010100
---------------------------------------
CO = log(set개수)올림 = 2비트
CI = PPO 나머지
CT =PPN
따라서
CO = 00 = 0x0
CI = 0101 = 0x5
CT = 001101 = 0x0D
해당 값을 찾으면 0x36
'CS > 컴퓨터 구조' 카테고리의 다른 글
[컴퓨터 구조](27)[동적 메모리] (0) | 2025.03.06 |
---|---|
[컴퓨터 구조](25)[가상 메모리] (0) | 2025.03.04 |
[컴퓨터 구조](24)[프로세스 생성 & 종료] (0) | 2025.03.03 |
[컴퓨터 구조](23)[프로세스] (0) | 2025.02.28 |
[컴퓨터 구조](22)[제어흐름변경] (0) | 2025.02.27 |