IA-32의 경우 우리가 익히 알고 있는대로 32bits 기반의 레지스터를 사용하게 됩니다. 하지만 64비트로의 이전을 원한 인텔은 IA-64라는 64bits 기반의 아키텍쳐를 내놓게 됩니다.
사실 IA-64는 HP와의 공동연구로 개발된 아키텍쳐죠. IA-64의 초창기의 인텔의 행보를 보면요 End-User에게는 IA-32를 서버급을 위해서는 IA-64를 사용하게 하려 했던 것으로 보입니다.
IA-64는 언급하신대로 IA-32와의 하위호환성이 없습니다. 더 정확히 말해서는 IA-64의 초창기 모델은 IA-32층을 에뮬레이션 하는 기능을 갖고 있었죠. 물론 지금은 없어졌다고 하구요.
IA-64가 Itanium이라는 상표명으로 인텔에서 출시되자마자 뜨는 듯하다가 이 녀석이 시장성이 없는 물건인 관계로 거의 서버시장에서도 퇴출되다시피 했죠. 그 이유는 '물건이 너무 비싸고, 구할 곳이 없어서' 입니다. HP와 같은 대기업 서버 제조회사를 빼고는 물건을 넣지도 않았거든요.
우리나라의 경우 IA-32서버를 수백대를 쓰는 환경이 있을지언정 대기업 서버에 게다가 생소한 아키텍쳐의 대형 서버를 사용하는 회사는 거의 없는 관계로 이름조차 모르시는 분들이 많을 겁니다(아마도). 시도조차 안했겠죠… -_-;
인텔은 이렇게 시장에서 완죤히 발리고 있을 때, 과연 AMD의 행보는 어땠을까요? AMD는 한창 K7코어의 후기 버전 AthlonXP로 상한가 치고 있고 또한 인텔이 장담했던 '고성능 CPU는 Socket형식이 아닌 Slot형식이 적합하다.' 라는 호언장담을 Socket A라는 넘으로 인텔을 때려엎고 있었습니다.
하지만 이걸로는 무언가 부족한 듯 IA-64의 대항마 AMD64라는 64bits 아키텍쳐를 선보입니다. 이것이 무엇이냐? 32bits 호환 64bits 아키텍쳐입니다.
IA-64가 하위호환을 포기한 반면에 AMD64는 '레거시 모드'라는 IA-32용 호환모드를 가지고 있었더랩니다. 하지만 이는 단순 에뮬레이션이 아닌 Native형식으로 구현되었다죠. 이로인해 기존의 IA-32를 사용하고있던 사용자들이 자연스레 64bits로 이전할 수 있는 숨통을 트여준거죠. 물론 Full 64bits 모드도 있는데 이걸 '롱모드' 라고 부릅니다.
또한 시장성에 있어서도 물건 구하기 무지 쉬웠으니…
그런데 문제는 여기서 끝나는게 아니었으니 바로 운영체제, 정확히 말해서 M$윈도우용 응용프로그램이 걸림돌이 되었죠.
사람들이 64bits 운영체제를 설치한다손 치더라도 64bits용 응용프로그램이 없다면 설치하나마나겠죠… 그래서 Windows XP 32bits 버전을 설치해서 4GB의 대용량 메모리 달아놔도 소용없죠.
Mac OS X 의 경우를 보더라도 운영체제와 응용프로그램의 64bits 이전을 위해서 얼마나 노력했는지 알 수 있죠. 그래서 그 피날레를 장식한 것이 Mac OS X 10.6 Snow Leopard라는 녀석이죠.
AMD64가 출시되고 난 후 인텔도 이에 질세라 AMD64와 호환되는 아키텍쳐를 만들기(솔직히 주워먹기) 시작했더랍니다. 바로 그 이름 하야 'EM64T' (Extended Memory 64 Technology) 라고 명명했습니다.
x86-64라는 이름은 AMD64와 EM64T를 합쳐서 부르는 말이므로 사용에 주의해야 합니다.
AMD64와 EM64T의 차이점은 클릭해주세요.
최근의 양 진영의 구현비교
- 인텔 EM64T의 BSF 및 BSR 명령어는 소스가 0이거나 오퍼랜드 크기가 32비트일때 다르게 동작한다. 이 동작으로 인해 프로세서는 Zero 플래그를 선언하고 상위 32비트를 정의하지 않게 한다.
- 인텔 EM64T는 (FXSAVE 그리고 FXRSTOR 명령을 포함해서) 부동소수점 처리능력의 향상에도 불구하고 이의 상태 복구 및 저장능력이 부족하다.
- 인텔 EM64T는 (SYSCFG, TOP_MEM 그리고 TOP_MEM2와 같은) AMD64 아키텍쳐에 있어서 구조적으로 중요한
MSR (즉, 문서화 되지 않고 특정 CPU모델에만 존재하는 레지스터)가 부족하다.
- AMD64는 (기존 과는) 다른 종류의 마이크로코드 업데이트 형식과 제어 MSR이 필요하지만
EM64T의 경우 기존의 32비트 전용 프로세서와 별반 차이가 없다.
- 인텔 EM64T는 SYSCALL과 SYSRET 명령어는 오직 롱모드에서만 허용된다.
반면에 SYSENTER와 SYSEXIT 명령어는 레거시모드 및 롱모드 양 쪽 모두 허용된다.
- AMD64는 레거시모드와 롱모드 양 쪽에서 SYSENTER와 SYSEXIT의 기능이 부족하다.
- 프리픽스가 66H인 경우 인텔과 AMD의 구현은 다르게 작동한다.
EM64T의 경우 상위 32비트를 삭제하지만 AMD64의 경우 상위 48비트를 삭제한다.
- 가장 최근에 나온 AMD64 프로세서는 캐쉬가 4kB에서 2MB 까지 확장됨으로써 1GB의 대용량 페이지를 지원한다.
|