[etc] 32bit 64bit 차이

32bit 64bit 차이

:one: bit 란?

bitbinary digit 의 약자로 컴퓨터의 처리 정보의 최소 단위입니다.

바이너리는 2진수를 뜻하고, 디짓은 자리수 라는 의미입니다.

컴퓨터는 0 또는 1 의 나열로 일을 처리합니다. 컴퓨터는 결국 비트의 나열로 모든 것을 표현하게 됩니다.

1bit 는 반드시 0 또는 1의 상태를 유지하고, 그 이외의 값은 갖지 않습니다.

0 또는 1 로 수를 표현하는 것을 2진수 라고 합니다.

이진수는 사람에서 보면 약간 난해하지만, 전자적, 기계적으로 보아 매우 간단 명확 재현성을 확보하기 쉽기

때문에 컴퓨터 역사에서 비교적 옛날부터 현재에 이르러서도 이진수 이진 bit 데이터가 사용되고 있습니다.

1 byte = 8 bit

:two: 32bit 64bit 의 차이

:cupid:32비트 64비트의 차이는 CPU의 차이


결론부터 말하면, 이러한 차이는 저장 장치의 bit폭 입니다.

bit 폭 이라고하면 이해하기 어려울 지도 모르기 때문에 용량같은 이미지로 파악하면 된다.

이 저장 장치를 레지스터 라고 부릅니다. 레지스터는 캐시보다 빠르고 저장 용량도 작은 컴퓨터 기억 장치 중에서는 가장 빠르게 작동하는 기억 장치 인데요.

레지스터의 크기가 16bit 라면 16bit CPU 가 되어 크기가 64bit 라면 64bit CPU가 됩니다.

:cupid:연산을 위해 사용 레지스터


레지스터는 막연한 기억 매체 라기보다는 연산의 대상 및 연산 결과 를 기억하는 데 사용됩니다.

일반적으로 레지스터가 크면 한번에 처리할 수 있는 정보의 양이 늘어나게 됩니다.

16bit 가 한 번에 처리 할 수 있는 정보는 2^16 제곱 즉 65536 이며,

이것이 64bit 가 되면 2^64 즉 184467440......... 이라는 엄청난 숫자입니다.

한번에 취급할 수 있는 정보가 증가한다는 것은, 많은 양의 데이터를 처리하게 되므로, 처리의 고속화를 도모할 수 있게 됩니다. 또한 발전과 함께 bit 수가 증가하면 기능이 고도화됩니다. 즉 CPU의 “편리한 명령” 이 늘어날 것입니다.

따라서 고속되지만 새로운 명령을 포함하지 않는 과거의 CPU에서는 움직이지 않는 프로그램도 나오게 됩니다. 현재 주류의 x86 명령을 x86_64는 실행할 수 있지만 그 반대는 할 수 없습니다.

64bit CPU가 32bit 명령을 실행하는 것은 가능 하지만

32bit CPU가 64bit CPU 명령을 수행할 수는 없다 입니다.

:cupid: 메모리 제한


32bit 환경에서 메모리 4GB의 벽 이라는 것이 존재합니다. 32비트 PC는 메모리를 4GB 이상 넣어도 사용할 수가 없는 것입니다.

조금 어려울지도 않지만, 위에서 언급 한 바와 같이 2진수로 생각하면,

32bit 라면 물리적으로 429496… 주소공간이 존재합니다. 여기에 1주소 1byte 를 할당 충당하게 되는데,

그러면 4GB까지 밖에 사용할 수 없게 됩니다.

Window의 경우 4GB도 사용할 수 없다.

사실, Windows와 같은 경우는 더 적은 용량에도 처리 한계에 도달 해 버립니다. 이것은

memory-mapped IO 라는 구조 를 사용하기 때문인데요. 메모리의 일부를 빌려서 IO 제어를 합니다.

따라서 Window의 경우 약 3.3GB 라는 상한이 정해져 있습니다.

시대가 바뀌고 동영상 등 대용량 데이터 처리가 필요로 하게 되면서 64bit 가 등장하게 됩니다.

64비트가 되면 주소 공간이 비약적으로 커 집니다. 1844674407370955161Byte 까지 확보 할 수 있게되기 때문에 당분간 평화로울 수 있어집니다.

그러나 언젠간 128bit 가 필요해지는 날이 올수도…

:three: 64bit 의 장점

당연한 결과지만 위와 같은 이유로 대규모 처리, 고부하 처리에서는 32bit의 용량에 한계가 있습니다.

특히 메모리에 제한은 치명적이라고 할 수 있는데, 3D 응용 프로그램 및 동영상 편집, 과학계산 등은 메모리를 크게 소모하기 때문입니다.

또한 HDD도 대용량화의 흐름에 따라 테라 바이트에 도달하고 있기 때문에, 이미 32bit 로는 커버 할 수 없거나 벅찬 처리상태가 되어 있습니다.

미래를 생각한다면 압도적으로 64bit 가 유리합니다.

:four: PC 어떻게 선택해야 하는가?

확실히 32bit 쪽이 저렴합니다. “어쨌든 인터넷만 되면 OK” 라면 특히 신경 쓰지않고 32bit PC 구입

하지만 자신이 “엔지니어” “유튜버” “PC게이머” 등과 관련이 있다면 이제 64bit 시스템을 선택

:five: 64비트 환경에서 32비트 응용 프로그램 사용여부

64bit 바이너리 환경에서도 32bit 움직일 수 있나라는 의문.

그러나 실제로는 32bit 라이브러리 등이 없으면 작동하지 않는다. “따라서 WIndow의 경우 32bit 라이브러리를 기본적으로 포함하고 있습니다.”

리눅스의 경우 LFS 와 Gentoo 같은 소스 기반 배포판 등에서 32bit 바이너리 뺀 순수한 64bit 시스템을 구축하는것이 가능하게 되어있습니다.

맥OS 는 차차 32bit 프로그램을 못쓰게 한다고 합니다.