x86 이라는 뜻은 인텔(INTEL)의 CPU 시리즈 이름이자 그 CPU의 명령체계 아키텍쳐 이름입니다.
- 16비트 CPU (x86-IA16) 의 시작
1978년 인텔이 최초의 16bit CPU인 8086 을 발표했고, 다음 해에 좀 더 저렴한 8088 CPU를 발표했는데 IBM이 공개형 표준 PC인 IBM-PC XT의 메인 CPU로 8088을 채택하면서 PC의 역사가 시작됩니다. (Apple의 역사는 제외하고)
8086과 8088은 16비트 CPU였고 이때 처음 설계한 CPU 내부 8086 명령어 체계를 x86 아키텍처(x86-IA16)라고 불렀습니다. 이후 1982년에 80286 출시하면서도 계속 x86은 호환 확장되었습니다.
- 32비트 CPU (x86-IA32) 의 시작
1985년, 인텔은 32비트 CPU인 80386을 발표합니다.
80386 은 기존 16bit 인 80286 체계와의 호환성을 완전히 버리고 32bit CPU 명령세트 및 기초를 새롭게 만든 것이며, 이것을 x86-IA32 (Intel Architecture-32) 라고 공식 명명합니다. 일반 사용자들은 386 PC 라고 부르는 시초입니다.
이후에 발표되는 인텔의 후속 32bit CPU들 - 인텔 80486, 80586(펜티엄), 펜티엄프로, 셀러론 등등 뿐 아니라 경쟁사의 CPU들(AMD, Cyrix 등) 모두 역시 이 x86-IA32 명령체계를 호환하여 표준으로 채택했습니다. 따라서 이런 386기반의 CPU들을 통틀어 x86 아키텍쳐 CPU라고 부릅니다.
사실 엄밀히 말하면 x86은 16비트인 x86-IA16 과 32비트인 x86-IA32 아키텍쳐 라고 뒷부분 IA16과 IA32를 구분하여 두 종류로 불러야겠지만, 16비트 컴퓨터는 크게 대중적이지 않아 2~3년 잠시 사용되었을 뿐이고, 90년 초반부터 2000년대 후반까지 워낙 32비트 CPU 컴퓨터(x86-IA32)가 오래 사용되었으므로 x86이라고 하면 그냥 32비트 CPU의 대표명사처럼 불리게 됩니다.
- 90년 초반부터 개인용 PC 시장은 인텔의 80386 (32bit CPU)를 사용한 IBM-PC 386DX + Windows 3.1 (Microsoft 운영체제) 의 조합이 전세계적으로 대히트를 치면서 확산되었고, 이후 486PC, 펜티엄PC 등이 계속 발표되고 나중에 AMD사에서 x86-64bit CPU를 만들때까지 무려 20년 가까이 오랜 기간 동안 x86-IA32아키텍쳐가 널리 사용됩니다.
- 64비트 전용 CPU IA-64 의 시작
한편, 인텔은 64bit CPU에 대한 개발을 계속 진행 중이었는데 결국 기존의 32bit x86 호환체계를 버리고 새로운 설계를 하기로 결정합니다. 즉, 기존 32bit 80386 CPU x86-IA32와 호환되지 않는 완전히 새로운 64비트 CPU 명령세트 구조를 만들고 IA-64 아키텍쳐라고 호칭합니다.
그리고 HP와 함께 공동개발에 착수하여 IA-64 를 적용한 최초 64비트 CPU로서 아이태니엄(Itanium) CPU를 개발하여 2001년에 발표합니다. 기존의 x86-IA32 즉 32비트 아키텍처를 버렸기 때문에 모든 소프트웨어가 호환되지 않아 새로 다시 개발해야 했고, 소프트웨어 제작회사 입장에서는 시장성도 없는데 굳이 먼저 자발적으로 투자에 착수할리가 없었습니다. 게다가 생각보다 느린 성능과 비싼 가격, 시장성 등의 이유로 이 CPU는 시장에서 외면 받게 됩니다.
인텔은 개인 PC가 아닌 서버용 고성능 시장에 관심이 많았고 따라서 이 IA-64를 유닉스(UNIX) 서버시장, 즉 HP PA-RISC, SUN Spark, IBM Power CPU 등에 대항하기 위한 고성능 서버용 CPU 로서 마케팅 타켓을 잡고 계속 밀어붙입니다. 하지만 일반 가정용, 사무용 PC 시장에서는 여전히 외면을 받게 됩니다.
이 즈음에 Microsoft는 아이태니엄 아키텍처인 IA-64를 그냥 간편하게 x64 라고 부르자 제안합니다. 그런 후 Windows OS버전을 발표할 때 Windows XP Professional x64 Edition, Windows Server 2003 x64 Edition 처럼 x64라는 단어를 사용하기 시작합니다.
- AMD의 반격 - 32비트 호환되는 64비트 CPU x86-64 의 시작
2003년 경, 인텔 외에 중소 CPU 제조사들이 모두 망하고 유일하게 살아남은 대항마 AMD社는, 기존의 32비트 x86 IA-32와 호환되는 확장 64비트 아키텍쳐를 설계하여 이것을 x86-64 라고 부르고 (나중에 AMD64 라고 호칭 변경), 이를 적용한 CPU인 애슬론64를 발표합니다.
AMD사의 x86-64 CPU들은 기존의 32bit인 x86-IA32와 호환되면서 64bit 처리가 가능하므로 폭발적으로 인기를 끌게 됩니다. 특히 리눅스가 전세계적으로 히트치면서 확산되기 시작했는데, 이 기존 x86 32bit 와 호환되는 x86-64 CPU를 사용하게 되면 굳이 기존의 32bit 각종 프로그램을 완전 재개발할 필요 없이 컴파일만 64bit로 다시해주면 바로 사용가능하고, 동시에 메모리 처리는 64비트로 해결할 수 있으니 32bit 의 대표적인 고질적 문제점인 4GB 메모리 제약 한계가 비약적으로 해결되면서 소프트웨어 제작사들이 전부 다 뛰어들어 64bit 버전 소프트웨어를 발표하고, 가격도 무료인 리눅스 OS 가 기업용 시장에서 대인기를 끌게 된 것이죠.
인텔은 기존 x86-IA32 과 호환되지 않는 새로운 64bit인 IA-64를 밀고 있었기 때문에 x86-64를 계속 외면했습니다. 그러나, AMD의 제품이 너무 폭발적 인기를 끌자 결국에는 경쟁사인 AMD사와 라이선스를 협약해서 x86-64 INTEL64 라는 똑같은 아키텍처를 선보입니다.
x86-64의 원천기술은 AMD가 개발하여 가지고 있는 것이고, INTEL64는 AMD64의 카피본입니다.
지금 현재 우리가 사용하는 인텔의 셀러론D, 펜티엄D, 코어 i3, i5, i7 및 AMD사의 애슬론, 셈프론, 페넘, 카바리, A시리즈 등등이 모두 x86-64에 기반하는 CPU 입니다. 즉, 현재 우리는 대다수가 기존의 32비트 x86-IA32 와 호환되는 64비트 x86-64 CPU를 사용하고 있는 것이며 2010년 즈음 이후의 모든 개인용 PC 의 CPU는 x86-64 라고 생각하면 됩니다.
- x86과 x64 의 호칭 구분
이제 다시 정리하면,
인텔이 만든 x86은 CPU의 내부 명령어를 처리하는 로직 아키텍쳐를 뜻한다. x86 아키텍처는 계속 진화하면서 16bit, 32bit를 거쳐 64bit 로 발전하였다.
INTEL의 32bit전용 x86-IA32 가 있고, AMD에서 개발한 32bit 호환가능하며 64bit인 x86-64가 있다. INTEL에서 64bit CPU 전용 아키텍처인 IA-64를 만들었고 x64라고 부르기로 했다. x86이든 x64이든 CPU의 처리기술을 뜻하는 것이며 이를 처리하기 위한 운영체제(OS; Operating System)는 별개의 문제이다.
똑같은 x86이라도 x86-IA32와 x86-64 라고 호칭을 정확히 부르는게 귀찮기 때문에, 점차적으로 모든 64비트를 부르는 호칭이 x64가 되고, x86은 그냥 32bit 를 뜻하는 것으로 통용되고 있습니다.
호칭 | 구분 | CPU | CPU 아키텍쳐 | 비고 |
---|---|---|---|---|
x86 | 16 bit | 8086, 8088, 80286 | x86-IA16 | . |
x86 | 32 bit | 80386, 80486 | x86-IA32 | . |
x64 | 64 bit | 펜티엄, 셀러론, i3, i5, i7 등 | x86-64(= AMD64) | 32bit x86-IA32 호환가능 |
x64 | 64 bit | 애슬론, 셈프론, 페넘, 카바리, A시리즈 등 | x86-64(= AMD64) | INTEL64 는 AMD64의 copy |
x64 | 64 bit | 아이태니엄 | IA-64 | 32bit 호환 X |
- CPU 와 OS 또는 소프트웨어 에서의 x86, x64 차이점
Q> Windows와 Linux 등의 운영체계 종류에서 x86과 x64는 무슨 뜻인가?
앞에서 말했듯이 x86이라는 단어 자체는 운영체제를 뜻하는게 아니고 x86 CPU 아키텍쳐를 말하는 것이며 x86 운영체제(OS)란 이러한 x86 CPU를 처리할 수 있는 OS 라는 뜻이다.
엄밀히 말하면 x86 아키텍처는 32비트 체계 및 64비트 체계 둘 다 가지고 있으므로 x86용 OS라고 하면 32비트와 64비트 둘 다를 지칭하는 것이지만, x86-32비트 CPU 및 OS가 워낙 오랫동안 사용되었기 때문에 Linux나 Windows 운영체제 구분에서 보통 x86 이라고 부르면 32bit CPU용 OS이고, x64라고 부르면 64bit CPU용 OS 라고 통용된다.
Windows의 경우 x86-64 CPU를 사용하는 요즘 컴퓨터에 신규로 설치할 때 32bit 호환이 되므로, 32bit로 설치할 것인지 64bit로 설치할 것인지 선택할 수 있다. 32bit로 설치하면 시스템정보에서 “32비트운영체제-x64기반프로세서” 라고 뜬다.
Linux의 경우는 32bit용과 64bit용 OS 버전 배포판이 다르다.
Q2> 각종 소프트웨어 구분에서 x86과 x64는 무슨 뜻인가?
윈도우용 프로그램이나 리눅스용 프로그램을 다운받으려할 때 x86이냐 x64냐 선택하는 경우가 있는데 이것도 OS와 마찬가지 뜻이다. x86이라고 써있는 것은 32bit OS에서 사용가능한 32bit 프로그램이라는 뜻이고, x64라고 써있는 것은 64bit OS에서 사용가능한 64bit 프로그램이라는 뜻이다.
윈도우 OS를 64bit로 설치한 경우, 1) x64용 소프트웨어를 설치하면 64bit 프로그램으로 동작하게 되며 “C:\Program Files" 에 설치된다. 2) x86용 소프트웨어를 설치하면 32bit 프로그램 호환모드로 동작하게 되며 “C:\Program Files (x86)" 에 설치된다.
윈도우 OS를 32bit로 설치한 경우, 1) x64용 소프트웨어는 설치가 불가능하다. 2) x86용 소프트웨어는 32bit 프로그램으로 동작하게 되며 C:\Program Files\ 에 설치된다.
64비트 윈도우와 달리 (x86)이라 글자가 붙지 않는다. 굳이 구분할 필요가 없기 때문이다.
리눅스의 경우 설치한 OS가 32bit인지 64bit인지에 따라 해당 버전으로 컴파일된 실행파일만 사용 가능하다.
Q3> 서버 하드웨어를 구분하여 부르는 호칭에서 유닉스서버와 x86서버로 구분하는데 여기서 x86은 무슨 뜻인가?
여기서는 x86 CPU 아키텍처 32bit, 64bit 그런 원론적인 호칭을 말하는 것이 아니고 그냥 유닉스 서버가 아닌 다른 서버 라는 뜻으로서 x86호환 CPU를 사용한 서버 장비 전체를 통칭하여 말하는 것이다.
즉, 유닉스 외의 서버를 한꺼번에 부를만한 마땅한 호칭이 없기 때문에 현 시점에서 가장 많이 사용하는 그냥 x86 서버라고 대표선수로 부르는 것이다. “x86 CPU 서버 및 x64 CPU 서버 및 그외 기타 서버” 이라고 부르기는 너무 귀찮지 않은가?
과거에는 유닉스서버 / NT서버 라고 구분하여 불렀고 (그때는 WindowsNT 4.0 OS를 사용한 서버라는 뜻) 2000년대 중반부터는 유닉스서버 / Windows서버 라고 불렀고 (이때는 NT대신 Windows2000, 2003 OS 사용) AMD64가 대히트친 이후 리눅스 시장이 급격하게 커지니 이때부터는 유닉스서버 / Windows & 리눅스서버 이렇게 부르다가 너무 길어 귀찮으니 그냥 x86서버 이렇게 부르게 되었다.