본문 바로가기
프로그래밍

윈도우시스템프로그래밍_03.32비트 64비트 구조 및 차이

by BlueOcean&Shark 2017. 3. 22.

윤성우저자님의 윈도우시스템프로그래밍 3장을 참고하여 작성했습니다.


32비트와 64비트를 나누는 기준은 하드웨어관점에서 봤을때
크게 두가지로 나눌 수 있습니다.

1. BUS가 데이터를 한번에 옮길 수 있는 크기
2. CPU가 데이터를 한번에 처리할 수 있는 크기

위의 그림 설명
http://munshark.tistory.com/113


위 1과 2를 조금 더 쉽게 설명해보겠습니다.

1은 메인메모리에서 버스I/O를 통해 cpu로 명령어를 넘길때 한번에 옮길 수 있는데이터가 32비트이면 32비트 컴퓨터 64비트이면 64비트 컴퓨터라고 말합니다.

2는 cpu에서 레지스터의 명령어들을 한번에 해석, 실행 하는 크키가 32비라고 하면 32비트 컴퓨터 64비라고 하면 64비트 컴퓨터가 되는 것입니다.


그런데 BUS는 32비트인데 CPU는 64비트라고하면 32비트 컴퓨터일까요? 64비트 컴퓨터일까요?
단순히 생각해보면 BUS를 통해 32비트 단위로 데이터를 2번 가져와야 CPU에서 한번에 처리할 수있으니 반쪽짜리 64비트 컴퓨터라고 할 수 있습니다. 


다음은 32비트와 64비트를 소프트웨어 관점에서 보겠습니다.

2비트와 4비트로 예를 들어보면 (아래그림 참고)
2비트로는 메모리 주소 4개밖에 접근 할 수 없습니다.
아래그림에서보면 4GB메모리의 4개의 번지 메모리까지만 사용가능하고 나머지는 사용하지 못하는 메모리가 됩니다.

마찬가지로 4비트는 16개의 메모리에만 접근이 가능하고 나머지 메모리에는 접근이 불가능하게 됩니다.

32비트는 (2의32승이 4GB이므로) 4GB메모리에는 모두접근이 가능합니다.
C언어에서 포인터의 크기가 32비트인 이유이기도합니다.

<2비트>



<4비트>


다시 돌아와서 소프트웨어 관점에서 32비트와 64비트의 차이를 정리해보면
'32비트보다 64비트가 더많은 메모리를 사용할 수있다' 정도로 요약 할 수 있을거 같습니다.



 

댓글