최근 수정 시각 : 2017 - 07 - 12 16 : 21 : 55 
 x 86 - 64 에서 넘 어 옴 
 1 . 개요 2 . 역사 3 . 특징 4 . 전개 5 . 뒷이야기 
 x 86 을 64 비트 로 확장 한 아키텍처 이 다 . 개발 사 는 AMD . AMD 64 , x 86 - 64 , x 64 라고 도 불린다 . 
 64 비트 컴퓨팅 시장 을 놓 고 인텔 과 AMD 는 서로 다른 꿈 을 꾸 고 있 었 다 . 인텔 은 x 86 의 문제점 을 알 고 있 었 기 때문 에 1994 년 에 개발 을 시작 한 IA - 64 를 통해서 64 비트 로 단절 적 이행 을 생각 하 고 있 었 고 , 이 때문 에 아이 태니 엄 프로세서 는 x 86 호환 성 이 없 었 다 . AMD 는 x 86 구조 를 유지 한 채 자체 적 으로 64 비트 로 확장 하 기 로 결심 했 고 , 1999 년 x 86 - 64 라는 이름 으로 64 비트 확장 x 86 명령어 셋 을 발표 했 다 . x 86 - 64 가 탑재 되 어 출시 된 첫 제품 은 2003 년 에 나온 슬레지 해머 기반 옵테론 이 며 , 결국 인텔 도 2004 년 프레스 캇 에서 x 86 - 64 를 지원 하 는 방향 으로 선회 하 면서 업계 의 사실 상 표준 으로 자리 잡 게 되 었 다 . 그 와중 에 아이 태니 엄 IA - 64 는 침몰 하 게 되 었 고 
 90 년 대 를 풍미 했 던 32 비트 기반 주요 명령어 셋 들 이 64 비트 로 확장 되 었 을 때 의 보여 줬 던 방식 들 을 무리 없이 잘 따라갔 다 . 주요 변경 점 을 살펴보 면 , 
 주요 레지스터 크기 가 32 비트 에서 64 비트 로 확장 되 었 다 . 대중 적 으로 마케팅 할 때 나오 는 64 비트 라는 말 이 주요 레지스터 의 크기 를 가리키 는 말 이 다 . 
 x 86 의 기존 8 개 레지스터 인 EAX , EBX , ECX , EDX , ESP , EBP , ESI , EDI 는 특수 기능 이 할당 되 어 있 었 기 때문 에 , 전용 과 범용 레지스터 사이 의 기능 을 가지 고 있 었 다 . x 86 - 64 에 는 R 8 - R 15 레지스터 8 개 가 추가 되 어 범용 레지스터 가 16 개 가 되 었 다 . ARM 등 다른 아키텍처 에 비하 면 레지스터 수 가 부족 하 지만 , x 86 의 고질 적 인 레지스터 부족 이 크 게 완화 되 었 다 . 
 SSE 레지스터 숫자 가 XMM 0 - XMM 7 8 개 에서 XMM 0 - XMM 15 16 개 로 확대 되 었 다 . 
 기존 x 87 레지스터 는 그대로 유지 하 였 다 . x 87 구조 는 구조 적 문제 로 인해 x 86 의 CISC 명령어 셋 과 함께 x 86 의 성능 향상 에 발목 을 잡 는 존재 였 고 , 인텔 과 AMD 모두 SSE 명령어 셋 으로 대체 하 려는 상황 이 었 으므로 명령어 하위 호환 성 만 을 유지 하 면서 더 이상 의 확장 을 중단 한 이러 한 결정 은 타당 하 였 다 . 이 와 함께 SSE , SSE 2 가 아키텍처 의 기본 명령 으로 편입 되 었 다 . 
 가상 메모리 공간 은 48 비트 ( 256 TB ) , 물리 메모리 공간 은 40 비트 ( 1 TB ) 로 확장 되 었 다 . 프로그램 카운터 가 64 비트 임 에 도 불구 하 고 메모리 공간 에 제약 을 두 는 이유 는 메모리 포인터 숫자 가 클 경우 페이지 테이블 의 오버헤드 가 커지 기 때문 에 굳이 너무 값 을 높 게 잡 을 필요 가 없 기 때문 이 다 . 사실 아직 까지 는 메모리 를 1 테라 까지 나 갖춰야 할 필요 성 이 없 기 도 하 고 . 
 레거시 모드 와 롱 모드 를 제공 하 였 다 . 레거시 모드 에서 는 IA - 32 와 완전 한 호환 성 을 유지 하 였으며 64 비트 OS 에서 활성 화 가능 한 롱 모드 에서 는 IA - 32 의 프로 텍 티 드 모드 까지 호환 성 을 가지 게 되 었 다 . x 86 리얼 모드 나 가상 x 86 모드 는 포기 하 게 되 었 다 . x 86 리얼 모드 나 가상 x 86 모드 는 32 비트 OS 에서 16 비트 DOS 시절 의 앱 들 을 지원 하 기 위한 모드 였 고 , 2000 년 초 에 NT 커널 기반 으로 출시 된 Windows 2000 과 그 이후 로 는 사실상 쓰 는 앱 이 없 던 상황 이 기 때문 에 굳이 지원 할 필요 가 없 었 다 . 두 모드 가 꼭 필요 한 경우 라면 32 비트 OS 에서 레거시 모드 를 사용 하 면 되 었 다 . 
 x 86 - 64 에서 64 비트 확장 명령어 들 은 명령어 앞 에 1 바이트 의 접두사 가 붙 는 것 으로 구분 되 었 다 . 이럴 경우 64 비트 모드 의 코드 에서 32 비트 를 다루 기 위한 명령어 를 아무런 변경 없이 그대로 쓰 면서 접두사 에 의해 유발 되 는 코드 길 이 증가 를 억제 할 수 있 게 된다 . 
 NX bit 가 추가 되 었 다 . 이 는 메모리 안정 성 과 보안 성 향상 을 위한 기능 으로 특히 버퍼 오버런 공격 에 대한 취약 성 을 개선 하 기 위한 것 으로 , 2012 년 가을 에 출시 된 Windows 8 부터 는 이 기능 이 필수 로 요구 되 기 시작 했 다 . 인텔 CPU 에서 는 XD bit 라는 이름 으로 사용 하 고 있 다 . 
 여기 에서 명령어 셋 트 의 모습 을 볼 수 있 다 . 
 x 86 - 64 가 2003 년 클로우 해머 , 즉 애슬론 64 로 시장 에 도입 되 어 인기 를 끌 고 인텔 도 이듬해 초 프레스 캇 부터 지원 을 시작 한 후 CPU 에서 는 대부분 x 86 - 64 를 지원 하 게 되 면서 x 86 - 64 는 빠른 속도 로 IA - 32 를 이 어 시장 에서 사실 상 의 표준 의 위치 를 점하 게 되 었 다 . 
 다만 OS 와 애플리케이션 은 CPU 시장 의 추세 만큼 빠르 게 64 비트 로 전환 하 지 못 했 다 . 리눅스 는 애슬론 64 가 출시 되 기 이전 인 2001 년 부터 AMD 64 를 지원 하 기 시작 했 고 , 64 비트 리눅스 배포판 은 상당히 빠르 게 출시 되 었 다 . 커널 과 유저 랜드 모두 가 오픈 소스 인 특성 상 프로그램 의 64 비트 지원 이 윈도우 에 비하 면 상당히 빠른 편 이 었 다 . 그래서 대용량 데이터 를 다룰 필요 가 있 는 시스템 은 64 비트 리눅스 로 빠르 게 전환 했 다 . 
 반면 윈도우 쪽 은 리눅스 에 비하 면 64 비트 전환 이 상당히 느렸 다 . 2005 년 에 Windows XP x 64 에디션 이 출시 되 었 으나 , 사실 상 NT 커널 버전 이 다른 윈도우 2003 을 개인 용 으로 끌 어 내린 버전 이 었 기 때문 에 별 반향 없이 넘어갔 다 . 2006 년 말 의 Windows Vista 에서 는 확실 하 게 x 86 - 64 를 지원 하 였으나 , 윈도우 비스타 자체 가 실패 해 버렸 고 , 결국 2009 년 가을 Windows 7 이 성공 하 고 나 서 야 윈도우 시장 에 도 x 86 - 64 가 안 착하 게 된다 . 이후 64 비트 점유 율 상승 은 PC 에 들어가 는 RAM 용량 의 증가세 에 의해 좌우 되 었 다 . 2010 년 대 이전 부터 이미 32 비트 OS 의 메모리 지원 용량 을 초월 해 버렸 기 때문 . 
 윈도우 쪽 프로그램 은 소스 코드 가 공개 되 지 않 는 경우 가 대부분 이 고 , 따라서 64 비트 윈도우 에서 도 32 비트 바이너리 코드 를 돌려야 할 필요 성 이 많 았 다 . 그래서 32 비트 윈도우 에 비해서 64 비트 윈도우 는 32 비트 라이브러리 까지 다 포함 해야 했 기 때문 에 디스크 공간 도 더 많이 필요 했 고 , 프로그램 개발자 입장 에서 도 32 비트 바이너리 가 그대로 도 는 상황 에서 64 비트 컴퓨팅 으로 확실 한 이득 을 얻 을 수 있 는지 확신 이 어려웠 기 때문 에 64 비트 전환 이 지지부진 했 다 . 64 비트 웹 브라우저 나 탐색기 에서 는 32 비트 플러그인 을 돌릴 수 없 었 기 때문 에 Internet Explorer 는 32 비트 가 기본 으로 탑재 되 어 있 었 고 , 탐색기 도 셸 확장 때문 에 윈도우 비스타 까지 는 32 비트 가 기본 값 이 었 으나 7 출시 직전 에 64 비트 가 기본 값 이 되 었 다 . 
 하지만 리눅스 쪽 은 커널 과 프로그램 의 소스 코드 가 대부분 공개 되 어 있 기 때문 에 단순히 다시 컴파일 하 는 것 만 으로 64 비트 지원 을 도입 하 기 상당히 쉬웠 다 . 덕분 에 리눅스 세계 는 64 비트 웹 브라우저 가 일찍 부터 상용 화 되 어 있 었 고 , 64 비트 웹 브라우저 플러그인 에 대한 수요 가 있 었 다 . 대표 적 으로 어도비 플래시 플레이어 도 2011 년 에 64 비트 플러그인 을 모든 플랫폼 으로 정식 출시 했 지만 , 그 보다 훨씬 이전 인 2008 년 부터 리눅스 전용 알파 버전 을 출시 해 왔 다 . OS X 쪽 은 애플 의 가차 없 는 과거 호환 성 던져 버리 기 덕분 에 64 비트 도입 이 적극 적 이 었 다 . 애시당초 애플 이 컴퓨터 에 사용 했 던 32 비트 인텔 프로세서 가 인텔 코어 시리즈 밖에 없 었 고 , 애플 TV 1 세대 에 만 펜티엄 M 을 잠깐 사용 했 기 때문 에 OS X 10 . 4 와 10 . 5 만 32 비트 커널 을 사용 했 고 , 10 . 6 이후 부터 는 64 비트 커널 이 기본 값 이 되 었 다 . 
 게임 분야 는 2013 년 부터 일부 고사 양 게임 들 은 아예 처음 부터 64 비트 OS 에서 만 실행 할 수 있 도록 제작 되 고 있 다 . AAA 급 게임 은 그래픽 비중 이 높 아 메모리 사용량 이 커서 기존 3 GB 정도 의 RAM 정도 로 는 절대 적 으로 부족 하 기 때문 이 다 . 2016 년 현재 는 출시 되 고 있 는 대부분 의 AAA 급 게임 ( 특히 사양 이 높 은 FPS 게임 들 ) 은 64 비트 OS 만 지원 하 고 있 다 . 
 x 86 - 64 의 이름 이 AMD 64 , Intel 64 , 얌 힐 , IA - 32 e , EM 64 T , x 64 같 은 여러 이름 으로 불리 게 된 이유 는 x 86 - 64 를 둘러싼 인텔 과 AMD 두 회사 간 의 알력 이 라고 쓰 고 대부분 은 인텔 의 삽질 이 라고 읽 어도 된다 의 결과 이 다 . 
 처음 AMD 가 x 86 - 64 라는 이름 으로 IA - 32 의 64 비트 확장 계획 을 1999 년 도 에 발표 했 을 때 , 인텔 의 공식 입장 은 IA - 32 는 별도 의 64 비트 화 계획 이 없 고 , IA - 64 가 인텔 의 차세대 64 비트 라는 것 이 었 다 . 그러나 이러 한 결정 으로 인해 후술 하 듯이 인텔 내부 에서 희대 의 내부 음모 사건 이 일어나 는 계기 가 되 었 는데 . .. 당시 프레스 캇 의 기초 설계 를 진행 하 고 있 던 인텔 오레건 설계 팀 에서 x 86 - 64 를 적용 한 설계 를 얌 힐 이 라는 코드 명 아래 비밀리 에 시작 했 다 . 여기 까지 는 어느 업체 에서 나 볼 수 있 는 그러 한 비밀 프로젝트 인 것 처럼 보였 다 . 그런데 흥미 로운 것 은 회장 님 과 경영진 에게 도 비밀 로 진행 했 다는 것 이 다 . [ 1 ] 
 이후 2003 년 에 x 86 - 64 기반 의 옵테론 과 애슬론 64 가 출시 되 어 시장 에서 큰 인기 를 얻 게 되 면서 인텔 의 신형 프레스 캇 에 x 86 - 64 가 이미 포함 되 었 다는 루머 가 꾸준히 올라오 게 된다 . 이것 이 이른바 얌 힐 의혹 으로 당시 내 로라 하 는 벤치마크 사이트 들 이 얌 힐 의 다이 사진 까지 분석 해 가 면서 관련 의혹 을 제기 했으나 , 인텔 은 이 를 꾸준히 부인 하 였 다 . 
 그리고 2004 년 드디어 프레스 캇 이 시장 에 데뷔 하 면서 기존 에 얌 힐 로 알려져 있 던 인텔 판 x 86 - 64 를 대외 적 으로 발표 하 게 되 는데 . .. 이것 을 x 86 - 64 가 아닌 IA - 32 e 라는 이름 으로 발표 하 는 삽질 을 다시 한 번 저지르 게 된다 . 인텔 의 작명 의도 는 x 86 - 64 가 단순히 IA - 32 를 약간 확장 한 것 에 불과 하 니까 IA - 32 e 일 뿐 [ 2 ] 이 라는 것 이 었 으나 , 문제 는 이렇게 발표 해 놓 고 보 니 상대 는 같 은 기술 을 먼저 개발 해서 64 비트 홍보 를 적극 적 으로 이용 하 고 있 는데 정작 그 에 대응 해서 같 은 기술 을 사용 하 게 된 프레스 캇 이 64 비트 를 지원 한다는 사실 이 가려져 버리 면서 가뜩이나 문제 가 많 은 프레스 캇 의 제품 경쟁력 을 스스로 깎 아 먹 는 사태 가 벌어지 고 만 것 . 
 이런 애매 한 문제 가 있 기 에 다시 Extended Memory 64 bit Tech , 줄여서 EM 64 T 라는 이름 을 붙였 다 . 사실 이 표현 자체 도 틀린 표현 이 아니 긴 하 지만 이러 한 일련 의 작명 실책 들 의 배경 에 는 인텔 이 64 비트 명령어 셋 의 적자 ( 嫡子 ) 는 여전히 IA - 64 임 을 드러내 려는 의도 가 있 기에 저런 어중간 한 표현 을 한 것 인데 , 결국 인텔 이 IA - 64 기반 으로 만든 아이 태니 엄 시리즈 는 흑역사 가 되 면서 이러 한 시도 는 전부 의미 가 없 게 되 었 다 . 
 한 가지 더 , AMD 역시 x 86 - 64 가 시장 에서 물 이 오르 는 시점 에서 그동안 의 중립 적 인 명칭 이 었 던 x 86 - 64 를 AMD 64 로 바꾸 면서 자사 의 특허 권 을 강조 하 려 했었 다 . 인텔 은 그게 못 마땅 했 는지 x 86 - 64 를 Intel 64 로 표기 하 려 했 지만 당연히 타사 기준 엔 그런 거 없 기에 윈도우 를 포함 한 64 비트 기반 프로그램 에서 는 인텔 의 x 86 - 64 기반 프로세서 아키텍처 를 AMD 64 로 인식 한다 . 
 결국 이러 한 명칭 싸움 의 부작용 으로 인해 x 86 - 64 를 인텔 이 개발 한 명령어 셋 으로 오해 하 는 경우 조차 도 발생 하 고 있 다 . 일부 PC 정비사 서적 에서 인텔 EM 64 T ( 이하 Intel 64 ) 를 인텔 에서 개발 한 64 비트 아키텍처 라고 설명 한 부분 이 있 는데 , 이 는 모르 는 사람 이 볼 때 " 인텔 에서 독자 적 으로 개발 한 기술 " 로 오해 할 수 있 다 . 설명 한 내용 도 그런 식 으로 되 어 있 었 다 . 그런데 EM 64 T 는 위 에 서술 된 것 과 같이 AMD 의 x 86 - 64 를 크로스 라이센스 를 통해 도입 한 명령어 셋 이 다 . 추가 로 이 서적 들 의 Intel 64 설명 부분 에 AMD 및 크로스 라이센스 관련 내용 은 일절 없 었 다 . 
 [ 1 ] 기존 서술 과 는 달리 특수 개발 부서 가 최고 경영진 에게 세부 스펙 이 알려 지 지 않 는 경우 는 보안 이 강한 하이테크 기업 에선 아주 드문 것 도 아니 고 그게 막장 인 것 도 아니 다 . 당연히 프로젝트 의 수립 과 진행 은 보 고 되 지만 그 과정 에서 선택 과 세부 사항 은 일일이 보 고 하 지 않 고 일부러 경영진 의 간섭 을 받 지 않 는 연구 팀 을 운영 하 는 기업 은 많이 있 으며 그러 한 연구 팀 에 의해 뛰어난 결과 를 보여 주 는 게 오히려 더 흔하 다 . 그러 한 독립 적 권한 의 연구 집단 의 선구자 이 자 대표 적 인 집단 이 바로 스컹크 웍스 다 . [ 2 ] 볼드 처리 된 부분 은 실제로 그렇 다는 게 아니 라 인텔 의 의도 가 그렇 다는 것 이 다 . 확장 된 것 은 어찌 됐 든 맞 는 말 이 긴 한데 약간 확장 한 건 절대 아니 기에 거짓말 은 하 지 않 는다 수준 의 눈 가리 고 아웅 이 다 . 저런 식 이 면 기존 인텔 의 16 비트 확장 , 32 비트 확장 CPU 모두 현실 은 8 비트 , 16 비트 CPU 라는 게 된다 .