IT 인터넷

32비트 64비트 차이한번 알아볼까요?

탁이 2020. 2. 20. 10:02

"32비트 64비트" 들어만 본 적이 있는 여러분 안녕하세요. 뭔가 64bit 쪽이 고성능이라는 것은 알겠는데, 그 의미를 이해하고 있는 사람은 의외로 적은것 같아서 이번에는 뭐가 어떻게 고성능인지 알아봤습니다. (사실 내가 알고 싶었습니다)

1. 도대체 bit 란게 뭐야?? 

"bit" 는 "binary digit" 의 약자로 컴퓨터의 처리 정보의 최소 단위입니다. 바이너리는 2진수를 뜻하고 디짓은 자리수 라는 의미입니다.


컴퓨터는 0 또는 1의 나열로 일을 처리합니다. 컴퓨터는 결국 비트의 나열로 모든 것을 표현하게 되는 것이죠. 1bit는 반드시 0 또는 1의 상태를 유지하고, 그 이외의 값은 갖지 않습니다 .

 

0 또는 1로 수를 표현하는 것을 뭐라 하지요? 그렇습니다. 2진수입니다. 이진수는 사람에서 보면 약간 난해하지만, 전자적, 기계적으로 보아 매우 간단 명확 재현성을 확보하기 쉽기 때문에 컴퓨터 역사에서 비교적 옛날부터 현재에 이르러서도 이진수 이진 bit 데이터가 사용되고 있습니다.


이론적으로는 3진수 등 여러 수의 토대로 컴퓨터를 작성할 수  있지만, 비트 구조와 딱 들어맞는 2 진수의 컴퓨터와 비교하면 복잡해지겠죠.

 

참고로 1바이트는 8비트입니다.

 

2. 32bit 64bit 차이는

자 이제 비트를 알았으니, 32bit와 64bit의 설명으로 가겠습니다.

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

우선 전제로서 32bit와 64bit라는 것은 CPU의 차이라는 것을 먼저 인식 해 주었으면 합니다. 32bit 대신 16bit의 것도 있지만, 이들은 "16bitCPU" "32bitCPU" "64bitCPU"라는 것을 의미하고있는 것입니다.

 

씨피유별 비트를 확인하고 싶다면 아래 기사를 참고하세요.

 

[IT/윈도우] - 내 컴퓨터 32 비트 64 비트 확인 방법 (x64, x86)

32bit와 64bit의 차이

결론부터 말하면, 이러한 차이는 "저장 장치의 bit 폭 '입니다. bit 폭 이라고하면 이해하기 어려울지도 모르기 때문에 용량같은 이미지로 파악하시면 좋겠습니다.


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

 

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

 

연산을 위해 사용 레지스터 

레지스터는 막연한 기억 매체 라기보다는 "연산의 대상 및 연산 결과"를 기억하는 데 사용됩니다. 일반적으로 레지스터가 크면 한 번에 처리 할 수 있는 정보의 양이 늘어나게 됩니다.

 

16bit가 한 번에 처리 할 수있는 정보는 2의 16 제곱 즉 65536이며, 이것이 64bit이되면 2 ^ 64 즉 18446744073709551616라는 엄청난 숫자입니다.


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


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

 

"64bit의 CPU가 32bit 명령을 실행하는 것은 가능" 하지만 "32bit의 CPU가 64bit의 CPU의 명령을 수행 할 수 없다."셈입니다.

메모리 제한

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


조금 어려울지도 않지만, 위에서 언급 한 바와 같이 2 진수로 생각하면, 32bit라면 물리적으로 4294967296 주소 공간이 존재한다. 여기에 1 주소 1byte를 할당 충당하게 되는데. 그러면 4GB까지 밖에 사용할 수 없게 됩니다.


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

사실, Windows와 같은 경우는 더 적은 용량에도 처리 한계에 도달 해 버립니다. 이것은 memory-mapped IO 라는 구조를 사용하고 있기 때문인데요. 메모리의 일부를 빌려서 IO 제어를 하고 있습니다.  


따라서 Windows의 경우 약 3.3GB라는 상한이 정해져 있답니다. 그러나 많은 외장 메모리를 탑재 할 수있는 환경이라면 큰 문제가되지 않고 아직까지 32비트는 주류를 이루고 있습니다. 아니 "있었습니다!"


시대는 바뀌고 동영상 등 대용량의 데이터 처리가 필요로 하게 되면서 말이죠. 여기서 64비트가 짜잔하고 등장을 하게 되는 것이죠.

 

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

 

그러나 언젠간 128비트가 필요해지는 날이 올지도.. 

 

64bit 장점

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


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


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


미래를 생각한다면 압도적으로 64bit가 유리한 것은 틀림 없습니다.

 

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

확실히 32bit 쪽이 저렴합니다. "어쨌든 인터넷만 되면 OK!" 라면 특히 신경 쓰지 않고 32bit PC을 구입해도 상관 없습니다.


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

 


결론: 얌전히 64bit걸로 골라라

그렇다면 64비트 환경에서 32비트 응용 프로그램을 쓸 수 있겠지??

64bit 바이너리만의 환경에서 32bit도 움직일 수 있나 라는 의문이 생깁니다. 아니면 쓸 수 있겠지라는 바램도 생기고요..


그러나 실제로는 32bit 라이브러리 등이 없으면 작동하지 않는답니다. "따라서 Windows의 경우 32bit 라이브러리를 기본적으로 포함하고있습니다. Linux의 경우 LFS와 Gentoo 같은 소스 기반 배포판 등에서 32bit 바이너리 뺀 순수한 64bit 시스템을 구축하는 것이 가능하게 되어있습니다.

 

맥은.. 이제 부터 32비트 프로그램 못쓰게 한다고 합니다. 차차로요.. 애잇..