본문 바로가기

Linux is..../TIP

What is the difference between 32-bit and 64-bit?

오랜만에 이전에 알고 지내던 엔지니어와 통화하던중 갑작스럽게 32bit와 64bit의 차이점 및 개념을 아냐는 쓰잘기 없는 질문을 했다...개념자체가 없어보였다 하지만 난 단순히 bit개념이 아닌 좀 더 세밀한 답변을 원했던 그 친구에게 별로 대답해준게 없었다...


우리가 흔히 사용하고 있는 CPU(AMD64 or Intel EM64T)는 알고 있을꺼다.
위에서 나열한 거외에 Itanium(64bit) and Power PC(64bit)도 다른 구조를 갖고 있지만 여기서는 AMD64/Intel64 architecture명시하도록 하겠다.

그럼 우리가 쓰고 있는 CPU가 64bit라는건 어떻게 확인할것인가? 그것은 flag내용만 보면 CPU의 지원범위를 알수 있다.

[dhkim@linuxdata ~]$ grep lm /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm xsave lahf_lm
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm xsave lahf_lm

보통 마이크로프로세서 아키텍쳐는 두가지의 주요한 모드로 작동된다.
하나는 위에서 보여진 lm(long mode)와 lagecy모드가 그것이고,
이중에 64bit가 lm이라는것을 알수 있으며,레거시 모드는 16 비트 및 32 비트 운영 체제에서 사용된다.

A bit is short for “binary digit.” It is basically how a computer stores references data, memory, etc. By using 32 bits your processor can represent numbers from 0 to 4,294,967,295 while a 64-bit machine can represent numbers from 0 to 18,446,744,073,709,551,615. Essentially this means your computer will calculate larger numbers more effectively with 64-bit processing.

흔히 동적으로 보여지는 예를 보아도, 32bit보다는 64 비트 버전을 선택에 많은 혜택이 있다고 볼수 있다. 64 비트 버전은 전체 RAM의 256GB/1TB를 해결할 수 있는, 반면 예를 들어 RHEL 32 비트 버전은 RAM의 16기가바이트를 해결할수 있다.

http://www.redhat.com/rhel/compare/

좀더 자세한 내용은 하기 "virtual address space for a processs" 내용을 참조하자.

CPU Kernel (*) Application Virtual Address Size
32 or 64 bit 32 bit (smp **) 32 bit slightly under 3GB
32 or 64 bit 32 bit (hugemem ***) 32 bit slightly over 3.7GB
64 bit 64 bit 32 bit 4GB
64 bit 64 bit 64 bit more than 256GB

Note.
공유 라이브러리와 동적으로 loaded된 플러그인은 실행중인 프로세스의 가상 주소 공간에있는, 핵심 응용 프로그램 코드 자체에 사용할 수있는 실제 가상 주소 공간이 여기에 나열된 값보다 낮게 책정되어 있다.

끝으로, 알고리즘을 좀더 깊게 들어가려면 매번 느끼는 거지만, 코드 및 임베디드소스확인까지는 할수 있어야 하지 않을까 생각된다.
분석은 아니더라도, 실제 동작구조 및 원리를 확인할수 있는 방법은 이거밖에 없다는게 날 더 슬프게 한다...쿨럭;;;