x64는 64비트, x86은 32비트인 이유?

통상 윈도우 운영체제에서 x64는 64비트 아키텍처, x86은 32비트 아키텍처 기반으로 인식됩니다. "64비트가 x64면, 32비트는 x32로 불러야 하는 것 아닌가?"하는 의문이 듭니다. 결론부터 말하면 사실 x86은 엄밀히 말해서 32비트 기반 아키텍처를 의미하지 않습니다. x64 역시 공식 명칭이 아닙니다. x86_64 또는 amd64가 정확한 명칭입니다. 현재 x64와 x86으로 구분해서 인식되고 있는 건 인텔의 프로세서 시리즈 모델명과 관련이 있습니다.

x86이란?

x86이라는 명칭은 인텔의 프로세서 모델 번호 끝 두 자리가 “86”으로 끝나는 것에서 시작됐습니다. 첫번째 모델은 8086이었습니다. 이어 80186, 80286, 80386, 80486, 80586, 80686으로 이어졌습니다. 이들 프로세서가 모두 32비트인 것도 아닙니다. 8086, 80186, 80286까지는 16비트 기반 아키텍처였습니다. 

 

인텔은 새롭게 32비트 칩을 만들어냈지만, 이미 인지도가 생성된 기존 모델명의 패턴을 그대로 적용해 80386이라고 불렀습니다. 사람들은 인텔 프로세서 시리즈를 80x86으로 부르기 시작했습니다. 여기서 x는 증가하는 숫자를 의미하는 변수를 의미합니다. 

x86-64로의 확장

x64의 경우 x86에서 64비트가 확장된 아키텍처를 의미하는 x86_64가 좀 더 정확한 명칭입니다. AMD는 과거 인텔의 x86 아키텍처를 호환하면서도 64비트 아키텍처로 확장한 x86_64를 내놓았습니다. 이것이 시간이 지나며 편의상 x64로 불리게 된 것으로 추정됩니다. 그러나 엄밀히 말하면 x64라는 명칭은 맞지 않습니다. 86과 달리 64로 끝나는 프로세스 시리즈는 없기 때문입니다.

amd64와 x86_64의 차이?

간혹 64비트 기반 아키텍처를 두고 amd64라고 표기하기도 하고, x86_64라고 표기하기도 합니다. 둘은 동일합니다. 위에서 언급했듯 x86_64는 amd가 인텔의 x86 아키텍처에서 64비트를 확장한 개념입니다. 어느 순간부터 amd는 x86_64 대신 amd64라는 표현을 쓰기 시작했습니다.

 

사실 인텔은 64비트 아키텍처를 내놓으며 기존의 16비트, 32비트를 버리려고 했습니다. 이에 대한 예로, 인텔의 IA-64 아키텍처는 32비트 응용프로그램이 호환되지 않습니다. 오직 64비트만 지원합니다. 반면 amd의 x86_64는 기존 버전을 호환하며 64비트 컴퓨팅을 추가하는 방식으로 접근하며 시장에서 성공을 거두었습니다. 결국 인텔도 x86을 호환하는 쪽으로 방향을 틀었고, 현재 거의 대부분의 64비트 아키텍처 컴퓨터는 32비트를 함께 지원합니다.

System32는 64비트용, SysWow64은 32비트용

“x86이 왜 32비트용이지?”라는 의문과 비슷한 의문으로는 system32와 syswow64 폴더를 들 수 있습니다. 두 폴더 모두 시스템 디렉토리인데, system32에는 64비트 파일(dll, exe 등)이 저장되고, syswow64에는 32비트 파일이 저장됩니다. 숫자가 반대입니다.

 

우선 syswow64는 windows 32 on windows 64(64비트 윈도우에 있는 32비트 윈도우)라는 의미입니다. "이 컴퓨터는 64비트 기반이지만 syswow64 폴더에서는 32비트 파일을 처리할 수 있다"라는 의미가 담겨있습니다. 그럼 system32는 왜 애초에 system64라고 명명하지 않을까요? 이 부분은 기존 버전과의 호환성 문제 때문으로 알려져 있습니다. system64로 폴더명을 바꾸게 될 경우 미치는 효과가 커서 그냥 64비트용에도 system32 폴더명이 사용되고 있다고 합니다.

반응형

댓글

Designed by JB FACTORY