CPU 주소 체계
CPU마다 주소 체계가 다른 이유는 프로세서가 한 번에 처리할 수 있는 데이터의 크기가 다르기 때문이다.
64 bit CPU vs 32 bit CPU
64bit CPU와 32bit CPU의 차이는 뭘까?
전자는 프로세서가 한 번에 처리할 수 있는 데이터의 양이 64bit라는 뜻이고, 후자는 32bit라는 뜻이다. 이렇게 프로세서가 한 번에 처리할 수 있는 데이터의 양을 word라 한다. 64bit CPU의 경우 1 word의 크기는 8byte(=64bit)이고, 메인 메모리에서 한 번에 8줄을 읽을 수 있다는 뜻이다. word 크기는 CPU의 데이터 단위라고 생각하면 되고, word의 크기는 CPU Register의 크기와 같다.
그러면 CPU Register의 크기에 따라 할당할 수 있는 주소의 범위는 어떻게 될까? 결론부터 말하자면 32 bit CPU에서는 2^32만큼의 논리적 주소를 할당할 수 있고, 64bit CPU에서는 2^64 만큼의 논리적 주소를 할당할 수 있다. 왜냐하면 32 bit로 표현할 수 있는 최대 수는 2^32이고, 64bit로 표현할 수 있는 최대 수는 2^64이기 때문이다. 반대로 말하면 할당 가능한 주소가 2^32개라면 32bit로 모든 주소를 나타낼 수 있고, 1byte짜리 칸이 2^32개 있다는 뜻이다.
32-bit CPU, 64-bit CPU에 대해 전체 메모리 공간은 다음과 같다.
32 bit CPU
2^32 byte = 4GB
32bit CPU에서 최대로 할당 가능한 주소는 4GB를 넘지 못한다. 따라서 32bit CPU를 사용하고 있다면 최대 4GB의 메모리만 사용할 수 있다. 그 이상 사용해도 CPU가 접근할 수 없기 때문에 없는 거나 마찬가지이다.
64 bit CPU
2^64 byte = 16EB
EB는 엑사 바이트로 어마어마한 크기이다. 사실 아직까지는 주소 범위를 16EB까지 사용할 일이 없다. 따라서 실제 64bit CPU는 하위 48bit만 사용한다.
48 bit
2^48 byte = 256TB
TB는 테라 바이트이다. 아직도 매우 큰 것을 볼 수 있다. 256TB 램은 들어본 적도 없다. 보통 4GB, 8GB 램도 많이 사용하며 많으면 16GB, 32GB정도를 사용한다.
이처럼 논리적 주소를 모두 커버하는 램을 만들려면 크기가 너무 커진다. 또한 실제로는 이렇게 큰 램은 들어본 적도 없다.
이게 가상 메모리의 핵심 아이디어이다. 그렇다면 가상 메모리는 무엇일까?
가상 메모리
가상 메모리는 한 마디로 램의 크기보다 큰 프로그램을 실행시키면 SSD를 메모리처럼 사용하는 것이다.
어떤 프로그램이 실행되려면 우선 메모리에 적재되어야 한다. 그러면 램의 용량보다 훨씬 더 큰 프로그램은 실행시키지 못하는 것일까? 아주 유명한 게임인 GTA는 용량이 80GB정도 된다. 그러면 이 게임을 하기 위해서는 80GB 이상의 램을 사용해야만 하는 것일까? 아니다.
해답은 CPU Register 크기에 있다. 아까 64bit CPU는 256TB 범위의 논리적 주소를 할당할 수 있다고 했다. 논리적 주소가 강력한 이유는, 물리적 주소의 할당 범위보다 크기 때문이다. 우리는 용량이 아주 큰 SSD를 잊으면 안 된다. 가상 메모리는 할당 주소의 범위가 램의 물리적 주소 범위를 넘어가면 SSD로 넘기는 것이다. 이게 가상 메모리의 핵심 아이디어이다.
이 가상 메모리는 페이징 기법 등을 통해 활용된다.
가상 메모리 주소 공간을 페이지 단위로 나누고, 당장 실행에 필요한 페이지만 메모리에 올려서 실행하도록 한다. 메모리가 가득 차면 사용하지 않는 페이지는 버리고 필요한 페이지를 올리는 페이지 교체 작업을 통해 메모리를 효율적으로 관리한다.
이 내용은 다음 포스팅을 통해 더 자세히 살펴보겠다.
참고자료
[ 운영체제 ] 주소 공간(Address Space), 물리적 주소(Physical Address), 논리적 주소(Logical Address), 주소 바
저번 글에서는 컴파일, 런타임, 로딩을 이해하는 시간을 가졌다. 이 세 용어를 확실하게 이해했다면 이번 글은 술술 읽으면서 넘길 수 있을 것이다. '메모리 계층 구조'부터 이 글까지는 '메모리
charles098.tistory.com
'Computer Science > Operating System' 카테고리의 다른 글
페이지 테이블의 세 가지 구조 (0) | 2024.04.17 |
---|---|
외부 단편화와 페이징, External Fragmentation and Paging (0) | 2024.04.17 |
메모리의 주소 공간, 물리적 주소와 논리적 주소 (0) | 2024.04.17 |
컴파일(Compile), 링킹(Linking), 로딩(Loading), 런타임(Runtime) (0) | 2024.04.17 |
DeadLock, 교착상태 (0) | 2024.04.17 |