X86-64
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
x86-64는 AMD가 개발하고 인텔이 채택한 x86 아키텍처의 64비트 확장으로, 32비트 x86과의 하위 호환성을 유지하면서 64비트 컴퓨팅 기능을 추가했다. 1999년 AMD가 처음 발표했으며, 2003년 옵테론 프로세서를 통해 처음 출시되었다. 인텔은 AMD64를 기반으로 Intel 64를 개발하여 2004년 제온 프로세서에 처음 적용했다. x86-64는 롱 모드와 레거시 모드를 포함한 두 가지 작동 모드를 가지며, 64비트 운영 체제에서 64비트 및 32비트 응용 프로그램을 모두 지원한다. 이 아키텍처는 레지스터 확장, 주소 공간 확장, SSE 명령어 채택, NX 비트 추가 등 다양한 특징을 가지고 있으며, BSD, 리눅스, macOS, 솔라리스, 윈도우 등 주요 운영 체제에서 지원된다. 2023년 인텔은 x86-64를 단순화한 x86S를 제안했으나 2024년 중단되었다.
AMD는 1999년에 x86 아키텍처의 64비트 확장인 x86-64를 처음 발표했다.[14] 이는 인텔과 휴렛팩커드(HP)가 설계한 IA-64 아키텍처의 대안이었다. AMD는 IA-64 아키텍처 개발에 참여하지 못했고, 라이선스를 얻을 가능성도 없었기 때문에, x86-64는 기존 x86 아키텍처에 64비트 컴퓨팅 기능을 추가하면서 32비트 x86 기계어 코드를 지원하는 방식으로 개발되었다. 이는 인텔이 IA-64를 통해 x86과 호환되지 않는 완전히 새로운 64비트 아키텍처를 만드는 접근 방식과는 반대되는 것이었다.
x86-64 아키텍처는 64비트 범용 레지스터를 가지며, 32비트 x86보다 넓은 주소 공간을 지원하여 더 큰 데이터를 쉽게 처리할 수 있다. 또한 x64는 32비트 프로그램 코드와 완전한 하위 호환성을 가지므로,[136] 32비트 x86 실행 파일은 성능 저하 없이 작동한다.[137] 다만, x64의 성능을 활용하려면 x64 네이티브 코드를 출력하는 컴파일러가 필요하다.
2. 역사
2000년 8월, AMD는 x86-64의 전체 사양을 공개했고,[15] 2003년 4월, 첫 번째 AMD64 기반 프로세서인 옵테론이 출시되었다.
인텔은 처음에 자체적인 64비트 아키텍처인 IA-64(아이테니엄)를 추진했지만, x86과의 호환성 부족으로 시장에서 큰 성공을 거두지 못했다.[134] 이후 AMD가 개발한 AMD64를 채택하여 "Yamhill"[31]이라는 코드명으로 프로젝트를 시작했다. 2004년, Intel 64를 구현한 최초의 프로세서인 제온(코드명 Nocona)이 출시되었다.
2. 1. AMD64의 개발
AMD는 1999년에 x86 아키텍처의 64비트 확장인 x86-64를 처음 발표했다.[14] 이는 인텔과 휴렛팩커드(HP)가 설계한 IA-64 아키텍처의 대안이었다. AMD는 IA-64 아키텍처 개발에 참여하지 못했고, 라이선스를 얻을 가능성도 없었기 때문에, x86-64는 기존 x86 아키텍처에 64비트 컴퓨팅 기능을 추가하면서 32비트 x86 기계어 코드를 지원하는 방식으로 개발되었다. 이는 인텔이 IA-64를 통해 x86과 호환되지 않는 완전히 새로운 64비트 아키텍처를 만드는 접근 방식과는 반대되는 것이었다.
2000년 8월, AMD는 x86-64의 전체 사양을 공개했다.[15] 그리고 2003년 4월, 첫 번째 AMD64 기반 프로세서인 옵테론이 출시되었다.
x86-64는 시장에서 널리 보급된 IA-32 아키텍처와 호환성을 유지하면서 64비트로 확장된, 더욱 가성비가 뛰어난 엔터프라이즈 제품에 대한 수요에 부응하기 위해 개발되었다. AMD는 고수익을 기대할 수 있는 엔터프라이즈 시장 진출을 목표로 x86-64를 발표했으며[134], 이후 실제 제품 발표에서 AMD64로 명칭을 변경했다.[135]
2. 2. Intel 64의 개발
인텔은 처음에 자체적인 64비트 아키텍처인 IA-64(아이테니엄)를 추진했지만, x86과의 호환성 부족으로 시장에서 큰 성공을 거두지 못했다.[134] 인텔은 AMD가 개발한 AMD64를 채택하여 "Yamhill"[31]이라는 코드명으로 프로젝트를 시작했다.
2004년 2월 IDF에서 인텔은 이 프로젝트가 실제로 진행 중임을 발표했고, 당시 인텔 회장이었던 크레이그 배럿은 이것이 그들의 가장 지켜지지 않는 비밀 중 하나였다고 인정했다.[32][33]
인텔은 이 명령어 집합의 이름을 여러 번 변경했는데, IDF에서는 "CT"[34]라는 이름을 사용했고, 몇 주 안에 "IA-32e"(IA-32 확장)로 언급하기 시작했으며, 2004년 3월에 "EM64T"(Extended Memory 64 Technology)라는 이름을 공식적으로 발표했다. 2006년 말, 인텔은 이 기술의 이름을 Intel 64로 변경했다.[35]
2004년, Intel 64를 구현한 최초의 프로세서인 제온(코드명 Nocona)이 출시되었다.
2. 3. x86S (제안되었으나 중단됨)
2023년 5월 인텔이 처음 제안한 x86-64의 단순화된 버전이었다.[36] 이 새로운 아키텍처는 16비트 및 32비트 운영 체제에 대한 지원을 제거하지만, 32비트 프로그램은 여전히 64비트 OS에서 실행될 수 있도록 설계되었다. 이 아키텍처를 따르는 CPU는 더 이상 레거시 모드를 가지지 않고, 64비트 롱 모드로 직접 시작하게 된다. 또한 페이지가 없는 모드를 거치지 않고 5단계 페이징으로 전환하는 방법도 포함될 예정이었다. 제거될 구체적인 기능은 다음과 같다.[37]
초안 사양은 여러 차례 업데이트를 거쳐 2024년 6월에 버전 1.2에 도달했다. 결국 2024년 12월, 인텔과 AMD가 x86 에코시스템 자문 그룹을 결성한 후 중단되었다.[38]
3. 아키텍처 특징
x86 명령 집합을 64비트화할 때, x86 명령 시작 부분에 접두사를 붙이는 방식(REX 접두사)이 사용되었다. 이는 80286에서 80386으로 32비트화할 때 사용된 방식과 같다.
DEC 알파 설계자 중 한 명인 다크 메이어 등이 AMD64 사양 제작에 참여하여 DEC 출신자들의 경험이 활용되었다. 주요 특징은 다음과 같다.
Long 모드는 64비트 운영체제에서 사용되며, 64비트/32비트 애플리케이션을 병행 실행할 수 있다. 16비트 애플리케이션도 실행 가능하지만, 가상 86 모드는 사용할 수 없어 Windows XP Professional x64 Edition부터 Win16 애플리케이션 실행을 지원하지 않는다.
Legacy 모드는 16/32비트 운영 체제에서 사용되며, 프로세서는 x86의 32비트 프로세서처럼 작동한다. 가상 주소 공간은 4GB로 제한된다.[136] 64비트 프로그램은 Legacy 모드에서 시작할 수 없다.
AMD64 구현 프로세서는 다음과 같다:
과거 AMD는 x86 호환 프로세서를 개발했지만, x64에서는 인텔이 AMD64 아키텍처를 채용했다.
인텔은 '''Yamhill'''[140] 프로젝트를 진행하며, '''CT'''(Clackamas Technology[143]), '''IA-32e''', '''EM64T'''(Extended Memory 64 Technology)를 거쳐 '''Intel 64'''로 명칭을 변경했다.[144]
; REX 프리픽스
; 암묵적 제로 확장
; 즉시 값
; 변위
; 64비트 모드에서 폐지된 x86 명령
; 64비트 모드에서 재할당된 x86 명령3. 1. AMD64
AMD64는 옵테론, 애슬론 64, 애슬론 64 X2, 애슬론 64 FX, 애슬론 II, 투리온 64, 투리온 64 X2, 셈프론, 페넘, 페넘 II, FX, 퓨전/APU, 라이젠/에픽 등 다양한 프로세서에 구현되었다.[16]
AMD64의 주요 특징은 다음과 같다.
설계자들은 이러한 특징 외에도 다음과 같은 개선 사항들을 추가했다.
; 64비트 정수 기능
: 모든 범용 레지스터(GPR)가 32 비트에서 64 비트로 확장되었으며, 모든 산술 및 논리 연산, 메모리-레지스터 및 레지스터-메모리 연산 등은 64비트 정수에서 직접 작동할 수 있다. 스택의 푸시와 팝은 기본적으로 8바이트이며, 포인터는 8바이트 폭이다.
; 추가 레지스터
: 범용 레지스터의 크기가 커졌을 뿐만 아니라, 레지스터의 수도 x86의 8개 (, , , , , , , )에서 16개 (, , , , , , , , , , , , , , , )로 늘어났다. 이로 인해 더 많은 지역 변수를 레지스터에 보관하고, 자주 접근하는 상수를 레지스터에 보관할 수 있으며, 작고 빠른 서브루틴에 대한 인수를 더 많이 레지스터로 전달할 수 있다.
: AMD64는 RISC 명령어 집합 (예: Power ISA, 64비트 ARM, RISC-V I, SPARC, Alpha, MIPS, PA-RISC)이나 VLIW와 유사한 머신 (예: IA-64)보다 적은 레지스터를 가지고 있다. 그러나 AMD64 구현은 명령어 집합에서 보이는 아키텍처 레지스터 수보다 훨씬 더 많은 내부 레지스터를 가질 수 있다 (레지스터 이름 바꾸기 참조). (예: AMD Zen 코어는 168개의 64비트 정수 및 160개의 128비트 벡터 부동 소수점 물리적 내부 레지스터를 가지고 있다.)
; 추가 XMM (SSE) 레지스터
: 128비트 XMM 레지스터 (스트리밍 SIMD 명령어에 사용됨)의 수도 8개에서 16개로 늘어났다.
: 기존의 x87 FPU 레지스터 스택은 SSE2에서 사용되는 XMM 레지스터와 비교하여 64비트 모드에서 레지스터 파일 크기 확장에 포함되지 않았다. x87 레지스터 스택은 간단한 레지스터 파일은 아니지만 저렴한 교환 연산을 통해 개별 레지스터에 직접 접근할 수 있다.
; 더 큰 가상 주소 공간
: AMD64 아키텍처는 64비트 가상 주소 형식을 정의하며, 현재 구현에서는 하위 48비트가 사용된다.[11] 이를 통해 최대 256 TiB (248 바이트)의 가상 주소 공간을 사용할 수 있다. 아키텍처 정의에 따르면 이 한계를 향후 구현에서 전체 64비트로 높일 수 있으며,[11] 가상 주소 공간을 16 EiB (264 바이트)로 확장할 수 있다.[17] 이는 x86의 4 GiB (232 바이트)와 비교된다.[18]
: 즉, 프로세스의 주소 공간에 전체 파일을 매핑하여 (파일 읽기/쓰기 호출로 작업하는 것보다 훨씬 빠름) 매우 큰 파일에 대한 작업을 수행할 수 있으며, 파일의 특정 영역을 주소 공간 안팎으로 매핑할 필요가 없다.
; 더 큰 물리적 주소 공간
: AMD64 아키텍처의 원래 구현은 40비트 물리 주소를 구현하여 최대 1 TiB (240 바이트)의 RAM을 주소 지정할 수 있었다.[11] 현재 AMD64 아키텍처의 구현 (AMD 10h 마이크로아키텍처부터 시작)은 이를 48비트 물리 주소로 확장[19]하여 최대 256 TiB (248 바이트)의 RAM을 주소 지정할 수 있다. 아키텍처는 향후 52비트로 확장하는 것을 허용한다[11][20] (페이지 테이블 항목 형식으로 제한됨);[11] 이를 통해 최대 4 PiB의 RAM을 주소 지정할 수 있다. 비교를 위해, 32비트 x86 프로세서는 물리 주소 확장 (PAE) 모드에서 64 GiB의 RAM으로 제한되며,[21] PAE 모드가 없으면 4 GiB의 RAM으로 제한된다.[11]
; 레거시 모드에서 더 큰 물리 주소 공간
: 레거시 모드에서 AMD64 아키텍처는 물리 주소 확장 (PAE) 모드를 지원하지만, AMD64는 PAE를 36비트에서 아키텍처 제한인 52 비트의 물리 주소로 확장한다. 따라서 모든 구현은 롱 모드에서와 동일한 물리 주소 제한을 허용한다.[11]
; 명령어 포인터 상대 데이터 접근
: 명령어는 명령어 포인터 (RIP 레지스터)를 기준으로 데이터를 참조할 수 있다. 이렇게 하면 위치 독립 코드가 더 효율적으로 사용될 수 있으며, 이는 공유 라이브러리 및 런타임에 로드되는 코드에 사용된다.
; SSE 명령어
: AMD64 아키텍처는 Intel의 SSE 및 SSE2를 코어 명령어로 채택했다. 이러한 명령어 집합은 단정밀도 및 배정밀도 데이터 유형에 대한 스칼라 x87 FPU에 대한 벡터 보충을 제공한다. SSE2는 또한 8비트에서 64비트 정밀도에 이르는 데이터 유형에 대한 정수 벡터 연산을 제공한다. 이를 통해 아키텍처의 벡터 기능은 당시 가장 진보된 x86 프로세서의 기능과 동등해졌다. 이러한 명령어는 32비트 모드에서도 사용할 수 있다. 64비트 프로세서의 확산으로 인해 이러한 벡터 기능은 가정용 컴퓨터에서 보편화되어 32비트 응용 프로그램의 표준을 개선할 수 있게 되었다. 예를 들어, Windows 8의 32비트 버전은 SSE2 명령어의 존재를 요구한다.[22] SSE3 명령어 및 이후의 스트리밍 SIMD 확장 명령어 집합은 아키텍처의 표준 기능이 아니다.
; No-Execute 비트
: No-Execute 비트 또는 NX 비트 (페이지 테이블 항목의 비트 63)를 사용하면 운영 체제에서 실행 가능한 코드를 포함할 수 있는 가상 주소 공간의 페이지와 그렇지 않은 페이지를 지정할 수 있다. "실행 안 함"으로 태그된 페이지에서 코드를 실행하려고 하면 읽기 전용 페이지에 쓰려고 할 때와 유사하게 메모리 액세스 위반이 발생한다. 이를 통해 악성 코드가 "버퍼 오버런" 또는 "확인되지 않은 버퍼" 공격을 통해 시스템을 제어하는 것을 더 어렵게 해야 한다. 유사한 기능은 80286 이후 세그먼트 디스크립터의 속성으로 x86 프로세서에서 사용할 수 있었지만, 이는 한 번에 전체 세그먼트에 대해서만 작동한다.
: 세분화된 주소 지정은 오랫동안 사용되지 않는 작동 모드로 간주되었으며, 모든 현재 PC 운영 체제는 효과적으로 이를 우회하여 모든 세그먼트를 0의 기본 주소와 (32비트 구현에서) 4 GiB의 크기로 설정한다. AMD는 선형 주소 지정 모드에서 no-execute를 구현한 최초의 x86 계열 공급업체였다. 이 기능은 AMD64 프로세서의 레거시 모드에서도 사용할 수 있으며, PAE가 사용될 때 최신 Intel x86 프로세서에서도 사용할 수 있다.
; 이전 기능 제거
: x86 아키텍처의 몇 가지 "시스템 프로그래밍" 기능은 최신 운영 체제에서 사용되지 않거나 과소 사용되었으며, 롱 (64비트 및 호환성) 모드에서 AMD64에서 사용할 수 없거나 제한된 형태로만 존재한다. 여기에는 세그먼트 주소 지정 (FS 및 GS 세그먼트는 운영 체제 구조에 대한 추가 기본 포인터로 사용하기 위해 잔존 형태로 유지됨)[11], 태스크 상태 전환 메커니즘, 가상 8086 모드가 포함된다. 이러한 기능은 "레거시 모드"에서 완전히 구현되어 이러한 프로세서가 수정 없이 32비트 및 16비트 운영 체제를 실행할 수 있다. 드물게 유용한 것으로 판명된 일부 명령어는 64비트 모드에서 지원되지 않으며, 스택에 세그먼트 레지스터 저장/복원, 모든 레지스터 저장/복원 (PUSHA/POPA), 십진 산술, BOUND 및 INTO 명령어, 즉시 피연산자가 있는 "원거리" 점프 및 호출이 포함된다.
; 가상 주소 공간
: AMD64 아키텍처는 64비트 가상 주소 형식을 정의하지만, 현재 구현에서는 하위 48비트만 사용된다.[11] 이를 통해 최대 256 TiB (248 바이트)의 가상 주소 공간을 사용할 수 있다. 향후 구현에서는 이 한계를 전체 64비트(16 EiB, 264 바이트)로 확장할 수 있다.[11][17] 이는 32비트 x86의 4 GiB (232 바이트)보다 훨씬 큰 공간이다.[18]
: 프로세스는 전체 파일을 주소 공간에 매핑하여 매우 큰 파일에 대한 작업을 효율적으로 수행할 수 있다.
; 물리 주소 공간
: AMD64 아키텍처의 초기 구현은 40비트 물리 주소를 지원하여 최대 1 TiB (240 바이트)의 RAM을 주소 지정할 수 있었다.[11] 현재 구현은 48비트 물리 주소(최대 256 TiB RAM)를 지원하며,[19] 향후 52비트(최대 4 PiB RAM)까지 확장될 수 있다.[11][20] 32비트 x86 프로세서는 물리 주소 확장(PAE) 모드에서 최대 64 GiB RAM,[21] PAE 모드 없이 최대 4 GiB RAM을 지원한다.[11]
; 레거시 모드에서의 물리 주소 공간
: 레거시 모드에서 AMD64는 물리 주소 확장(PAE)을 지원하며, 물리 주소 제한을 52비트로 확장한다.[11]
; 정규 형식 주소
: 64비트 가상 주소의 상위 16비트(48~63비트)는 47비트의 복사본이어야 한다. 이를 "정규 형식"이라고 하며,[11] 이를 준수하지 않으면 프로세서에서 예외가 발생한다. 정규 형식 주소 범위는 0~00007FFF'FFFFFFFF 및 FFFF8000'00000000~FFFFFFFF'FFFFFFFF (총 256 TiB)이다.
; 페이징
: 64비트 어드레싱 모드("롱 모드")는 물리 주소 확장(PAE)을 사용하며, 페이지 크기는 4 KiB(212 바이트), 2 MiB(221 바이트),[11] 또는 1 GiB(230 바이트)이다.[11] 롱 모드는 4단계 페이지 테이블을 사용하며, PAE의 페이지 디렉토리 포인터 테이블은 4개에서 512개로 확장되고, 512개 항목의 페이지 맵 레벨 4(PML4) 테이블이 추가된다.[11]
:
| 비트: | 63 | 62 … 52 | 51 … 32 | |||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 내용: | NX | 예약됨 | 기본 주소의 비트 51…32 | |||||||||||||||||||||||||||||
| 비트: | 31 … 12 | 11 … 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||||||||||||||||||||
| 내용: | 기본 주소의 비트 31…12 | 무시됨 | G | PAT | D | A | PCD | PWT | U/S | R/W | P | |||||||||||||||||||||
; 추가 정보
- 인텔은 5단계 페이지 테이블을 구현하여 57비트 주소(최대 128 PiB 가상 주소 공간)를 지원할 수 있다.[24]
- 운영 체제는 가상 주소 공간을 추가로 제한할 수 있다.
- 현재 AMD64 프로세서는 최대 256 TiB의 RAM을 지원하지만,[19] 256 TiB RAM을 지원하는 x86-64 마더보드는 알려져 있지 않다.[26][27][28][29]
- AMD64는 K8 마이크로아키텍처(옵테론, 애슬론 64, 튜리온 64 등)[132][133]와 그 후속 제품(라이젠 등)에 구현되었다.
- x64는 32비트 코드와 하위 호환성을 가지며,[136] 32비트 x86 실행 파일은 성능 저하 없이 실행 가능하다.[137]
- DEC 알파 설계자 다크 메이어 등이 AMD64 사양 제작에 참여했다.
- 호출 규약에서 인수 전달 방식 등이 개선되어 효율성이 향상되었다.[138]
- 32비트 Windows는 응용 프로그램 메모리를 약 3GiB로 제한하지만,[139] AMD64는 훨씬 큰 가상 주소 공간을 제공한다.
- 기존 x87 FPU 및 MMX 명령어는 유지되었다.
- Long 모드에서는 16비트 응용 프로그램도 실행 가능하지만, Windows의 16비트 응용 프로그램(Win16) 지원에 필요한 가상 86 모드는 사용할 수 없다.
- Legacy 모드에서는 프로세서가 x86의 32비트 프로세서처럼 작동하며, 16비트 및 32비트 코드만 실행 가능하다. 가상 주소 공간은 4GB로 제한된다.[136]
3. 2. Intel 64
IA-32 아키텍처의 64비트 확장으로, 인텔에서 구현한 AMD64이다. AMD64와 거의 동일한 아키텍처 특징을 갖는다.과거, AMD는 인텔이 원조인 x86 호환 프로세서를 개발·생산했다. 그러나 x64에서는 입장이 역전되어, 인텔은 AMD가 개발한 AMD64 아키텍처(x86 프로세서의 64비트 확장 아키텍처)를 채용했다.
당초 프로젝트는 '''Yamhill'''[140]이라는 개발 코드네임으로 시작되었다. 이 프로젝트의 존재를 계속 부인하다가 수년이 지난 후, 2004년 2월의 IDF에서 인텔은 프로젝트가 진행 중임을 발표했다. 인텔의 당시 회장 크레이그 배럿은 이것이 중요한 기밀 중 하나였음을 인정했다[141][142]。
인텔은 AMD64 호환 명령 세트의 명칭을 몇 차례 변경했다. IDF에서 사용된 이름은 '''CT'''(Clackamas Technology[143]), 그 몇 주 후에 '''IA-32e'''(IA-32 extensions)로 호칭을 변경했으며, 2004년 4월에는 이를 '''EM64T'''(Extended Memory 64 Technology)라는 이름으로 공식 발표했다. 제품 출시 후인 2006년 7월 27일, 인텔은 EM64T를 '''Intel 64'''로 개칭했다[144]。
인텔에서 처음으로 Intel 64를 구현한 것은, 'Nocona'라는 코드명으로 2004년 6월에 발표된 멀티 소켓 제온(Xeon) 프로세서이다. 제온(Xeon)은 데스크톱용 펜티엄 4(Pentium 4)를 기반으로 하기 때문에, 동시기의 펜티엄 4(Pentium 4)도 Intel 64를 구현했을 터이지만, 하이퍼 스레딩 기술과 마찬가지로, 이 기능은 'Prescott'에서는 처음에는 작동하지 않도록 되어 있었다. 이것은 아마 초기 구현이 완전하지 않았기 때문이며, 인텔은 그 후 Intel 64를 사용할 수 있게 된 Prescott의 E0 버전을 model F로 판매하기 시작했다. 이 버전에서는 AMD64의 NX 비트에 해당하는 기능이 Intel 64에서 지원되었다. 인텔에서는 이를 eXecute Disable(XD) 비트라고 부른다. 이 기능은 곧 Nocona(제온(Xeon) 계열)에도 구현되었다. 8xx/6xx/5x6/5x1/3x6/3x1 시리즈의 CPU는 모두 Intel 64를 사용할 수 있게 되었다. 또한, 인텔 코어 2(Intel Core 2)·인텔 아톰(Intel Atom)에서도 Intel 64가 채용되었다.
Intel 64를 구현하고 있는 CPU는 다음과 같다.
| 제품명 | Intel 64 구현 여부 |
|---|---|
| 제온(Xeon) | Nocona 이후, Sossaman 제외, 제온(Xeon) MP에 대해서는 Cranford/Potomac 이후 |
| 인텔 코어 2(Intel Core 2) | O |
| 인텔 코어 i9(Intel Core i9) | O |
| 인텔 코어 i7(Intel Core i7) | O |
| 인텔 코어 i5(Intel Core i5) | O |
| 인텔 코어 i3(Intel Core i3) | O |
| 인텔 코어 M(Intel Core M) | O |
| 인텔 코어 울트라 9(Intel Core Ultra 9) | O |
| 인텔 코어 울트라 7(Intel Core Ultra 7) | O |
| 인텔 코어 울트라 5(Intel Core Ultra 5) | O |
| 인텔 코어 7(Intel Core 7) | O |
| 인텔 코어 5(Intel Core 5) | O |
| 인텔 코어 3(Intel Core 3) | O |
| 펜티엄 듀얼 코어(Pentium Dual-Core) | O |
| 인텔 아톰(Intel Atom) | model 230/330,N450/D510/D410 |
| 펜티엄 D(Pentium D) | O |
| 펜티엄 4(Pentium 4) | Prescott는 model F 이후, model 521/531/541/551/561/571 |
| 펜티엄 익스트림 에디션(Pentium Extreme Edition) | O |
| 셀러론 D(Celeron D) | model 326/331/336/341/346/351/355/356 |
| 셀러론 듀얼 코어(Celeron Dual-Core) | O |
| 셀러론 M(Celeron M) | model 520/530 |
| 셀러론 200 시리즈(Celeron 200 series) | model 220 |
| 셀러론 400 시리즈(Celeron 400 series) | O |
| 셀러론 500 시리즈(Celeron 500 series) | O |
| 인텔 프로세서 U 시리즈(Intel Processor U series) (데스크톱 전용) | O |
| 인텔 프로세서 N 시리즈(Intel Processor N series) (모바일/미니 데스크톱 겸용) | O |
; REX 프리픽스
다음과 같은 명령에는 REX 프리픽스를 사용한다.
- 64비트 오퍼랜드 크기 지정
- 새로운 R8~R15 레지스터, 추가된 XMM 레지스터 등에 대한 접근
- 64비트 레지스터인 RSP, RBP, RDI, RSI의 비트 0부터 7을, 8비트 레지스터 SPL, BPL, DIL, SIL로 접근. 반면 REX 프리픽스를 붙이면 8비트 레지스터로 AH, BH, CH, DH에 접근할 수 없다. 이로 인해 직교성이 높아졌다.
또한, 다음 명령은 기본적으로 64비트 오퍼랜드 크기이며, REX 프리픽스를 필요로 하지 않는다.
- 근접 분기 명령
- PUSH, POP 명령
- ENTER, LEAVE 명령
; 암묵적인 제로 확장
32비트 레지스터에 데이터를 쓰면 해당 범용 레지스터의 상위 32비트(비트 32부터 63)는 0이 된다.
이는 코드 크기 최적화에 사용할 수 있다.
반면, 16비트 레지스터나 8비트 레지스터에 데이터를 써도 이 제로 확장은 일어나지 않는다.
'''NOP'''(No Operation: 연산 코드 90h) 명령은, 과거에는 XCHG EAX, EAX와 동일했지만[157]64비트 모드에서는 이 명령을 특별히 취급하여, 암묵적인 제로 확장을 적용하지 않고 RAX 레지스터는 변하지 않는다.
'''CMOV'''(Conditional Move, 조건부 이동) 명령에서는, 64비트 모드에서 오퍼랜드가 32비트인 경우, 조건이 거짓이어도 데스티네이션 레지스터의 상위 32비트는 0이 된다.
; 즉시 값
64비트 모드에서도, 즉시 값(Immediate value)은 32비트 그대로이며, 64비트로 부호 확장되어 사용된다. 단, MOV 명령만 64비트의 즉시 값을 사용할 수 있다.
; 변위
64비트 모드에서도 변위(displacement)는 32비트 그대로이며, 64비트로 부호 확장되어 사용된다. 단, RAX 레지스터에 대한 MOV 명령만 64비트의 변위를 사용할 수 있다.
; 64비트 모드에서 폐지된 x86 명령
다음 x86 명령은 64비트 모드에서는 폐지되었으므로, 64비트 모드에서 실행하면 잘못된 명령 예외가 발생한다.
- AAA, AAD, AAM, AAS (ASCII Adjust Addtion/Division/Multiply/Subtraction)
- BOUND (Check Array Bounds)
- CALL far, JMP far (Call far absolute, JMP far absolute)
- DAA, DAS (Decimal Adjust Addition/Subtraction)
- INTO (Interrupt to Overflow Vector)
- LDS, LES (Load Segment Register)
- POP DS, POP ES, POP SS, POPA
- PUSH CS, PUSH DS, PUSH, ES, PUSH SS, PUSHA
- 연산 코드 82h (Redundant encoding of opcode 80h: undocumented)
- SALC (Set AL According to CF: undocumented)
LAHF, SAHF 명령은, 초기 AMD64, Intel 64에서는 64비트 모드에서 폐지된 x86 명령이었다.
; 64비트 모드에서 재할당된 x86 명령
- ARPL (Adjust Requestor Privilege Level) 명령은, 64비트 모드에서는, 새로운 MOVSXD 명령이 되었다.
- 1바이트 INC, DEC 명령은, 64비트 모드에서는, REX 프리픽스가 되었다. 반면, 2바이트 INC, DEC 명령은, 64비트 모드에서도 사용 가능하다.
- 64비트 모드에서 폐지된 LDS, LES 명령은, 이후 인텔에 의해 AVX 명령의 VEX 프리픽스로 할당되었다. VEX 프리픽스에 이어지는 2바이트를 32비트 모드에서는 잘못된 ''11xxxxxx''라는 형식으로 함으로써, AVX 명령은 32비트 모드에서도 사용 가능하다. Windows NT의 가상 DOS 머신에서는, C4h C4h(LES AX, SP로 디코딩되는 잘못된 명령)을 가상 86 모드에서 32비트 프로텍티드 모드 호출에 사용했다[158]。AVX는 가상 86 모드, 리얼 모드를 지원하지 않는다.
- 64비트 모드에서 폐지된 BOUND 명령은, 이후 인텔에 의해 AVX-512 명령의 EVEX 프리픽스로 할당되었다. EVEX 프리픽스에 이어지는 2바이트를 32비트 모드에서는 잘못된 ''11xxxxxx''라는 형식으로 함으로써, AVX-512 명령은 32비트 모드에서도 사용 가능하다.
3. 3. 마이크로아키텍처 레벨
2020년, AMD, 인텔, 레드햇, SUSE는 협력을 통해 x86-64 마이크로아키텍처 레벨을 정의했다.[43][44] x86-64-v2, x86-64-v3, x86-64-v4 세 가지 레벨이 정의되었으며, 각 레벨은 프로그래머가 컴파일 시간 최적화를 위해 사용할 수 있는 특정 기능을 정의한다.[45] 각 레벨에서 제공되는 기능은 다음과 같다.| 레벨 | CPU 기능 | 예시 명령어 | 지원 프로세서 |
|---|---|---|---|
| x86-64 | CMOV | cmov | 2003년경 초기 AMD K8 이후 등 모든 x86-64 CPU |
| CX8 | cmpxchg8b | ||
| FPU | fld | ||
| FXSR | fxsave | ||
| MMX | emms | ||
| OSFXSR | fxsave | ||
| SCE | syscall | ||
| SSE | cvtss2si | ||
| SSE2 | cvtpi2pd | ||
| x86-64-v2 | CMPXCHG16B | cmpxchg16b | 주로 2008년경 인텔 네할렘 세대 이후 인텔 네할렘 및 이후 인텔 "빅(big)" 코어 인텔 (아톰(Atom)) 실버몬트 및 이후 인텔 "스몰(small)" 코어 AMD 불도저 및 이후 AMD "빅(big)" 코어 AMD 재규어 VIA 나노(Nano) 및 에덴(Eden) "C" |
| LAHF-SAHF | lahf | ||
| POPCNT | popcnt | ||
| SSE3 | addsubpd | ||
| SSE4_1 | blendpd | ||
| SSE4_2 | pcmpestri | ||
| SSSE3 | pshufb | ||
| x86-64-v3 | AVX | vzeroall | 주로 2013년경 인텔 하스웰 세대 이후 인텔 하스웰 이후 인텔 (아톰(Atom)) 그레이스몬트 이후 AMD 익스캐베이터 이후 |
| AVX2 | vpermd | ||
| BMI1 | andn | ||
| BMI2 | bzhi | ||
| F16C | vcvtph2ps | ||
| FMA | vfmadd132pd | ||
| LZCNT | lzcnt | ||
| MOVBE | movbe | ||
| OSXSAVE | xgetbv | ||
| x86-64-v4 | AVX512F | kmovw | 주로 2017년경 인텔 스카이레이크-X 세대 이후로 AVX512가 유효한 경우 인텔 스카이레이크 이후 AMD 젠4 이후 |
| AVX512BW | vdbpsadbw | ||
| AVX512CD | vplzcntd | ||
| AVX512DQ | vpmullq | ||
| AVX512VL |
모든 레벨에는 이전 레벨에서 발견된 기능이 포함된다. AES-NI 및 RDRAND를 포함하여 범용 컴퓨팅과 관련이 없는 명령어 집합 확장은 레벨 요구 사항에서 제외된다.
4. 동작 모드
X86-64 아키텍처는 크게 롱 모드와 레거시 모드 두 가지 동작 모드를 갖는다.
| 작동 모드 | 운영 체제 필요 | 실행 중인 코드 유형 | 크기(비트) | 범용 레지스터 개수 | ||
|---|---|---|---|---|---|---|
| 모드 | 하위 모드 | 주소 | 피연산자 ('기본값은 이탤릭체') | |||
| 롱 모드 | 64비트 모드 | 64비트 운영 체제, 64비트 UEFI 펌웨어, 또는 64비트 펌웨어의 UEFI 인터페이스를 통해 상호 작용하는 이전 두 가지 | 64비트 | 64 | 8, 16, '32', 64 | 16 |
| 호환 모드 | 부트로더 또는 64비트 운영 체제 | 32비트 | 32 | 8, 16, '32' | 8 | |
| 16비트 보호 모드 | 16 | 8, '16', 32 | 8 | |||
| 레거시 모드 | 보호 모드 | 부트로더, 32비트 운영 체제, 32비트 UEFI 펌웨어, 또는 펌웨어의 UEFI 인터페이스를 통해 상호 작용하는 후자 두 가지 | 32비트 | 32 | 8, 16, '32' | 8 |
| 16비트 보호 모드 운영 체제 | 16비트 보호 모드 | 16 | 8, '16', 32 | 8 | ||
| 가상 8086 모드 | 16비트 보호 모드 또는 32비트 운영 체제 | 리얼 모드의 하위 집합 | 16 | 8, '16', 32 | 8 | |
| 언리얼 모드 | 부트로더 또는 리얼 모드 운영 체제 | 리얼 모드 | 16, 20, 32 | 8, '16', 32 | 8 | |
| 리얼 모드 | 부트로더, 리얼 모드 운영 체제, 또는 펌웨어의 BIOS 인터페이스와 연결되는 모든 운영 체제[30] | 리얼 모드 | 16, 20, 21 | 8, '16', 32 | 8 | |
각 모드에 대한 자세한 설명은 하위 섹션을 참고하면 된다.
4. 1. 롱 모드
롱 모드는 이 아키텍처의 주된 작동 모드로, 프로세서의 기본 64비트 모드와 32비트 호환 모드를 결합한 것이다. 64비트 운영 체제에서 사용되며, 64비트 응용 프로그램과 32비트 응용 프로그램을 지원한다. 16비트 응용 프로그램은 실행되지 않는다.[11]기본적인 명령어 집합이 같기 때문에 x86 코드를 실행할 때 성능 저하가 거의 없다. 이는 IA-64와 달리, 32비트 응용 프로그램을 실행할 때 별도의 프로세서를 사용하거나 에뮬레이션해야 하는 번거로움이 없다는 것을 의미한다. 그러나 AMD64에서는 64비트의 추가적인 레지스터 덕분에 32비트 x86 응용 프로그램도 최적화를 통해 64비트 환경에서 이점을 얻을 수 있다.
64비트 운영 체제에서는 64비트 프로그램이 64비트 모드에서 실행되고, 32비트 및 16비트 보호 모드 응용 프로그램(실행하기 위해 실 모드나 가상 8086 모드를 사용할 필요가 없는 경우)이 호환 모드에서 실행된다. 실 모드 프로그램과 가상 8086 모드를 사용하는 프로그램은 해당 모드가 소프트웨어에서 에뮬레이션되지 않는 한 롱 모드에서 실행할 수 없다.[11] 그러나 이러한 프로그램은 VT-x 또는 AMD-V를 지원하는 프로세서에서 롱 모드로 실행되는 운영 체제에서 가상 프로세서를 생성하여 원하는 모드로 실행할 수 있다.
64비트 범용 레지스터를 가지며, 32비트 x86보다 넓은 주소 공간을 지원하여 더 큰 데이터를 쉽게 처리할 수 있다. 또한 x64는 32비트 프로그램 코드와 완전한 하위 호환성을 가진다.[136] 모든 32비트 명령어 집합이 구현되어 있으므로, 32비트 x86 실행 파일은 호환성이나 성능 저하 없이 작동한다.[137] 단, 응용 소프트웨어가 x64의 성능을 활용하려면 x64 네이티브 코드를 출력하는 컴파일러를 사용해야 한다.
AMD가 x86 명령 집합을 64비트화할 때 사용한 것은 x86 명령의 시작 부분에 접두사를 붙이는 방식(REX 접두사)이다. 이는 인텔이 16비트 CPU 80286를 32비트화(80386)할 때 사용한 방식과 같다.
DEC 알파 설계자 중 한 명인 다크 메이어가 AMD64 사양 제작에 참여했으며, 그를 비롯한 DEC 출신자들의 경험이 활용되었다. 주요 특징은 다음과 같다.
- '''레지스터 추가 및 확장''':
- 범용 레지스터(GPR)는 IA-32의 8개(EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP)에 R8~R15 8개를 추가하여 16개로 늘었고, 각 레지스터의 비트 폭도 32비트에서 64비트로 확장되었다.
- 128비트 XMM 레지스터 수도 8개에서 16개로 늘었다(Streaming SIMD 명령에 사용됨).
- 호출 규약에서 인수를 전달하는 방식이 IA-32에서는 스택만 사용했지만 일부 인수에 대해 레지스터 전달 방식으로 변경되거나, 호출 시 일부 레지스터 덮어쓰기를 허용하는 등 효율성이 향상되었다.[138]
- '''주소 공간 확장''':
- AMD64 아키텍처는 초기 사양에서 48비트(가상 주소 공간 크기 256테라바이트), 추가 기능을 통해 57비트(가상 주소 공간 크기 512페타바이트)의 가상 주소 폭을 가진다.
- IA-32 아키텍처에서 초기 프로세서는 가상 주소 공간이 32비트로 표현할 수 있는 4GiB로 제한되었으며, 펜티엄 프로 이후 구현에서 추가된 물리 주소 확장 기능을 사용하여 64GiB의 물리 메모리를 연결할 수 있지만, 가상 주소 폭은 확장되지 않아 가상 주소 공간은 4GiB로 제한되었다.
- 32비트 버전 Windows 시리즈에서는 OS 사양에 따라 응용 프로그램이 사용할 수 있는 메모리가 약 3GiB로 제한된다.[139]
- AMD64 롱 모드에서는 IA-32의 물리 주소 확장을 기반으로 가상 주소 공간을 먼저 48비트로 확장하고(현재 물리 주소 공간은 52비트), 향후 확장을 통해 4엑사바이트까지 가상 주소 공간을 지원할 수 있게 되었다.
- '''명령 포인터 상대 데이터 접근''': 명령은 명령 포인터(RIP 레지스터)를 기준으로 데이터를 참조할 수 있다.
- '''SSE 명령''': AMD64 아키텍처는 처음부터 인텔의 SSE와 SSE2를 코어 명령으로 채택했다.
- '''No-Execute 비트''': NX 비트(페이지 테이블 엔트리의 비트 63)는 가상 주소 공간의 어떤 페이지가 실행 가능한지, 실행 불가능한지를 지정할 수 있다.
- '''오래된 기능 삭제''': x86 아키텍처의 많은 시스템 프로그래밍 기능은 현대적인 운영 체제에서는 사용되지 않으며, AMD64 롱 모드에는 없다.
특권 레벨은 80286의 프로텍트 모드에서 x86에 도입되었으며, 레벨 0, 레벨 1, 레벨 2, 레벨 3의 4계층이 있다. 링 보호라고도 불린다. x64의 64비트 모드에서도 특권 레벨은 4계층이 있지만, 일반적으로 특권 레벨 0(커널 모드)과 특권 레벨 3(사용자 모드)의 2종류만 사용된다.
- '''콜 게이트에 의한 시스템 콜(CALL far, RET)''': 콜 게이트는 80286에서 특권 레벨(0, 1, 2, 3)을 전환하는 메커니즘으로 도입되었다. 64비트 모드에서는 콜 게이트가 64비트 오프셋을 사용할 수 있도록 확장되었다.
- '''고속 시스템 콜(SYSCALL, SYSRET)''': 특권 레벨 3(사용자 모드)과 특권 레벨 0(커널 모드)을 고속으로 전환하는 명령이다.
| 운영 모드 | 운영 체제 요구 | 응용 프로그램 리빌드 요구 | 기본 주소 크기 | 기본 연산 크기 | 레지스터 확장 | 일반 GPR 너비 | |
|---|---|---|---|---|---|---|---|
| 롱 모드 | 64비트 모드 | 64비트 운영 체제 | 예 | 64 | 32 | 예 | 64 |
| 호환 모드 | 아니오 | 32 | 32 | 아니오 | 32 | ||
| 작동 | 운영 체제 필요 | 실행 중인 코드 유형 | 크기(비트) | 범용 레지스터 개수 | ||
|---|---|---|---|---|---|---|
| 모드 | 하위 모드 | 주소 | 피연산자 ('기본값은 이탤릭체') | |||
| 롱 모드 | 64비트 모드 | 64비트 운영 체제, 64비트 UEFI 펌웨어, 또는 64비트 펌웨어의 UEFI 인터페이스를 통해 상호 작용하는 이전 두 가지 | 64비트 | 64 | 8, 16, '32', 64 | 16 |
| 호환 모드 | 부트로더 또는 64비트 운영 체제 | 32비트 | 32 | 8, 16, '32' | 8 | |
| 16비트 보호 모드 | 16 | 8, '16', 32 | 8 | |||
4. 2. 레거시 모드
레거시 모드는 16비트 또는 32비트 운영 체제에서 사용되는 모드이다. 이 모드에서 프로세서는 x86 프로세서와 동일하게 작동하며, 16비트 및 32비트 코드만 실행할 수 있다.[136][137]| 운영 모드 | 운영 체제 요구 | 기본 주소 크기 | 기본 연산 크기 |
|---|---|---|---|
| 레거시 모드 | 16비트 또는 32비트 운영 체제 | 32 | 32 |
| 16비트 운영 체제 | 16 | 16 |
5. AMD64와 Intel 64의 차이점
AMD64와 Intel 64는 거의 동일하지만, 일부 명령어의 동작 방식에 약간의 차이가 있다.[48] 이러한 차이점은 주로 운영 체제 및 컴파일러 개발자에게 중요하며, 일반 응용 프로그램 개발자에게는 큰 영향을 미치지 않는다.[146]
- `BSF` 및 `BSR` 명령어: 인텔 64의 `BSF` 및 `BSR` 명령어는 소스가 0이고 피연산자 크기가 32비트일 때 AMD64와 다르게 작동한다. 프로세서는 제로 플래그를 설정하고 대상의 상위 32비트는 정의되지 않은 상태로 둔다. 인텔은 이 경우 대상 레지스터가 정의되지 않은 값을 갖는다고 문서화했지만, 실제로는 AMD와 동일하게 동작한다.[49]
- 마이크로코드 업데이트: AMD64는 인텔 64와 다른 마이크로코드 업데이트 형식과 제어 MSR(모델별 레지스터)을 사용한다. 인텔 64는 32비트 전용 프로세서에서 변경되지 않은 마이크로코드 업데이트를 구현한다.
- MSR: 인텔 64는 AMD64에서 아키텍처로 간주되는 일부 MSR(`SYSCFG`, `TOP_MEM`, `TOP_MEM2`)이 부족하다.
- `SYSCALL`/`SYSRET` 및 `SYSENTER`/`SYSEXIT`: 인텔 64는 64비트 모드에서만 `SYSCALL`/`SYSRET`을 허용하고,[50] 두 모드 모두에서 `SYSENTER`/`SYSEXIT`을 허용한다.[51] AMD64는 롱 모드의 두 하위 모드 모두에서 `SYSENTER`/`SYSEXIT`가 없다.[11]
- 근거리 분기: 64비트 모드에서 66H(피연산자 크기 재정의) 접두사를 사용한 근거리 분기는 다르게 작동한다. 인텔 64는 이 접두사를 무시하고 32비트 부호 확장 오프셋을 사용하며, 명령 포인터는 잘린다. AMD64는 16비트 오프셋 필드를 사용하고, 명령 포인터의 상위 48비트를 지운다.
- 원거리 포인터 명령: AMD64가 아닌 인텔 64에서는 `REX.W` 접두사를 `LFS`, `LGS`, `LSS`, `JMP FAR`, `CALL FAR` 등의 원거리 포인터 명령과 함께 사용하여 원거리 포인터 인수의 크기를 80비트(64비트 오프셋 + 16비트 세그먼트)로 늘릴 수 있다.
- `MOVSXD`: `MOVSXD` 명령이 메모리 소스 피연산자와 16비트의 피연산자 크기로 실행될 때, 메모리 피연산자는 인텔 64에서는 16비트 읽기로, AMD64에서는 32비트 읽기로 액세스된다.
- `FCOMI`/`FCOMIP`/`FUCOMI`/`FUCOMIP`: x87 부동 소수점 비교 명령은 인텔 64에서 EFLAGS의 OF, SF 및 AF 비트를 지우지만, AMD64에서는 이러한 플래그 비트를 수정하지 않은 상태로 둔다.
- `VMASKMOVPS`/`VMASKMOVPD`/`VPMASKMOVD`/`VPMASKMOVQ`: AVX/AVX2 메모리에서 마스크된 이동 명령의 경우, 인텔 64는 명령이 0으로 마스크된 레인에 대해 메모리 오류를 일으키지 않도록 보장하지만, AMD64는 그러한 보장을 제공하지 않는다.
- `FXSAVE` 및 `FXRSTOR`: 인텔 64는 축소된 버전의 부동 소수점 상태를 저장하고 복원하는 기능이 부족하다.
- LMSLE: Opteron Rev. E 및 Athlon 64 Rev. D 이후의 AMD 프로세서는 64비트 게스트의 가상화를 용이하게 하기 위해 롱 모드 세그먼트 제한 활성화(LMSLE) 비트를 통해 제한된 세그먼테이션 지원을 다시 도입했다.[52][53] LMLSE 지원은 Zen 3 프로세서에서 제거되었다.[54]
- `SYSRET`: `SYSRET`을 사용하여 비캐노니컬 주소로 돌아갈 때, AMD64 프로세서는 권한 레벨 3에서 일반 보호 오류 처리기를 실행하는 반면,[55] 인텔 64 프로세서에서는 권한 레벨 0에서 실행된다.[56]
- 메모리 순서: `LFENCE` 및 `MFENCE`와 같은 일부 메모리 순서 지정 명령에서 제공하는 순서 지정 보장은 인텔 64와 AMD64 간에 다릅니다.
- `LFENCE`는 인텔 64에서 디스패치 직렬화되지만, AMD64에서는 아키텍처적으로 디스패치 직렬화가 보장되지 않는다.[57]
- `MFENCE`는 AMD64에서 완전 직렬화 명령이지만 인텔 64에서는 그렇지 않다.
- `CMPXCHG16B`: 2006년 개정 F 이전의 AMD64 프로세서에는 `CMPXCHG16B` 명령어가 없었다. 이 명령어는 옥타워드(128비트 값)에 대한 원자적 연산을 허용하며, 락프리 알고리즘 및 대기 방지 알고리즘에 유용하다. `CMPXCHG16B`가 없으면 임계 구역 또는 대체 락프리 접근 방식을 사용해야 한다.[59] 64비트 버전의 Windows 8.1에는 이 명령어가 필요하다.[61]
- `LAHF` 및 `SAHF`: 초기 AMD64 및 Intel 64 CPU에는 64비트 모드에서 `LAHF` 및 `SAHF` 명령어가 없었다. AMD는 2004년 10월, 인텔은 2005년 10월에 이 명령어를 도입했다. 64비트 버전의 Windows 8.1에는 이 기능이 필요하다.[61]
- NX 비트: 초창기 인텔 64를 탑재한 인텔 CPU에는 AMD64 아키텍처의 NX 비트가 없었다. 이 기능은 2004년 10월에 추가되었다. 이 기능은 모든 버전의 Windows 8에 필요하다.
- 물리 주소 지정: 초기 인텔 64 구현은 36비트(64 GiB) 물리 메모리 주소 지정을, 원래 AMD64 구현은 40비트(1 TiB) 물리 메모리 주소 지정을 갖고 있었다.
6. 운영 체제 지원
리눅스는 2001년 커널 2.4부터 x86-64 아키텍처를 지원하기 시작했다.[88][89] 이는 실제 하드웨어 출시 이전이었다. 리눅스는 32비트 실행 파일과의 하위 호환성을 제공하여, 기존 32비트 프로그램을 계속 사용하면서 64비트 환경으로 전환할 수 있도록 했다. 아치 리눅스,[90] SUSE, Mandriva, Debian 등 주요 배포판은 64비트 버전과 함께 32비트 호환 라이브러리를 제공하여 대부분의 32비트 응용 프로그램을 문제없이 실행할 수 있도록 지원한다.
x32 ABI는 리눅스 3.4에 도입된 응용 프로그램 바이너리 인터페이스로, x86-64의 64비트 모드에서 32비트 포인터와 데이터 필드를 사용하여 프로그램을 실행할 수 있게 해준다.[91][92][93] 이를 통해 프로그램은 4 GiB의 가상 주소 공간 제한을 가지지만, 메모리 사용량을 줄이고 실행 속도를 향상시킬 수 있다.[91][92][93]
64비트 리눅스는 프로세스당 최대 128 TiB의 가상 주소 공간과 약 64 TiB의 물리적 메모리를 지원한다.[94] 5단계 페이징을 활성화하면 최대 128 PiB(가상) 및 4 PiB(물리적)까지 지원한다.[95]
윈도우는 2005년 3월 윈도우 XP 프로페셔널 x64 에디션과 윈도우 서버 2003 x64 에디션을 출시하며 x86-64 지원을 시작했다.[103] 이들은 내부적으로 동일한 빌드(5.2.3790.1830 SP1)를 공유하며,[104][105] 윈도우 2000 프로페셔널 및 서버 에디션의 x86 버전과 유사하게 통합된 패키지로 시스템 업데이트가 제공되었다. 윈도우 비스타는 2007년 1월, 윈도우 7은 2009년 7월, 윈도우 8은 2012년 10월, 윈도우 8.1은 2013년에 출시되었으며 모두 x86-64 버전을 제공한다. 윈도우 서버 2008 R2부터는 x64 에디션만 제공된다.
x64 버전 윈도우는 다음과 같은 특징을 가진다.
- 프로세스당 8TiB(윈도우 8.1 이전) 또는 128TiB(윈도우 8.1 이후)의 사용자 모드 가상 주소 공간.[107][108] "대용량 주소 지원" 옵션으로 링크된 x64 프로그램은 이 공간을 모두 사용할 수 있다.[106]
- 8TiB(윈도우 8.1 이전) 또는 128TiB(윈도우 8.1 이후)의 커널 모드 가상 주소 공간.[107]
- WoW64를 통해 32비트 응용 프로그램 실행 지원. "대용량 주소 지원" 옵션으로 링크된 32비트 프로그램은 최대 4GiB의 가상 주소 공간 사용 가능.[110]
- 최대 128GiB(윈도우 XP/비스타), 192GiB(윈도우 7), 512GiB(윈도우 8), 1TiB(윈도우 서버 2003), 2TiB(윈도우 서버 2008/윈도우 10), 4TiB(윈도우 서버 2012), 24TiB(윈도우 서버 2016/2019)의 물리적 메모리(RAM) 지원.[111]
- LLP64 데이터 모델: "int"와 "long"은 32비트, "long long"은 64비트, 포인터는 64비트.
- 64비트 커널 모드 장치 드라이버 필수.
- 가상 8086 모드 미지원으로 16비트 윈도우 및 DOS 응용 프로그램 실행 불가.
- NX (No Execute) 페이지 보호 기능 완전 구현.
macOS는 Mac OS X 10.4.7부터 64비트 인텔 기반 Mac에서 x86-64를 지원하기 시작했다.[96] 초기에는 POSIX 및 수학 라이브러리를 사용하는 64비트 명령줄 도구만 지원되었으며, 커널 및 커널 확장은 32비트였다. Mac OS X 10.5는 64비트 PowerPC 기기와 마찬가지로 64비트 인텔 기반 기기에서 Cocoa, Quartz, OpenGL, X11을 사용한 64비트 GUI 응용 프로그램을 지원한다.[97] Mac OS X 10.6은 64비트 커널을 지원하는 최초의 macOS 버전이지만,[98] 모든 64비트 컴퓨터가 64비트 커널을 실행할 수 있는 것은 아니었다. 64비트 커널은 32비트 응용 프로그램을 지원하며, 32비트 커널도 64비트 응용 프로그램을 지원한다. OS X 10.8은 64비트 커널만 포함하지만 32비트 응용 프로그램을 계속 지원한다. macOS 10.15부터는 64비트 커널만 포함하며 32비트 응용 프로그램 지원이 중단되었다.
FreeBSD는 2003년 6월 5.1-RELEASE에서 "amd64"라는 이름으로 x86-64 지원을 실험적으로 추가했다. 2004년 1월 5.2-RELEASE부터 표준 배포 아키텍처로 포함되었으며, 이후 Tier 1 플랫폼으로 지정되었다. NetBSD는 2001년 6월 19일 x86-64 아키텍처 지원을 소스 트리에 처음 커밋했으며, 2004년 12월 9일 NetBSD 2.0부터 ''NetBSD/amd64''라는 완전히 통합된 포트로 제공된다. OpenBSD는 2004년 5월 1일 OpenBSD 3.5부터 AMD64를 지원했다.
7. 한국에서의 x86-64 도입 및 영향
2000년대 초반, AMD의 옵테론 프로세서 출시와 함께 x86-64 아키텍처가 한국에 도입되었다. 서버 및 워크스테이션 시장을 중심으로 x86-64 시스템이 빠르게 확산되었으며, 리눅스와 윈도우 서버의 64비트 버전이 보편화되면서 기업용 IT 인프라의 핵심으로 자리 잡았다.
2010년대 이후, 개인용 컴퓨터 시장에서도 64비트 운영 체제와 응용 프로그램이 보편화되면서, x86-64 아키텍처는 사실상 표준으로 자리 잡았다. x86-64 아키텍처는 더 큰 메모리 공간과 향상된 성능을 제공하여, 고성능 컴퓨팅, 데이터베이스, 가상화, 게임 등 다양한 분야에서 혁신을 가능하게 했다.
TOP500에서 추적하는 슈퍼컴퓨터에서 x86 아키텍처에 대한 64비트 확장의 등장은 AMD와 인텔의 64비트 x86 프로세서가 이전에 해당 시스템에서 사용되었던 대부분의 RISC 프로세서 아키텍처(예: PA-RISC, SPARC, 알파 등)와 32비트 x86을 대체할 수 있게 해주었다. 비록 인텔은 처음에 x86을 아이테니엄 프로세서에서 새로운 호환되지 않는 64비트 아키텍처로 대체하려 했지만 실패했다.
8. 같이 보기
참조
[1]
웹사이트
Debian AMD64 FAQ
http://wiki.debian.o[...]
2012-05-03
[2]
웹사이트
x86-64 Code Model
https://developer.ap[...]
Apple
2012-11-23
[3]
문서
arch
Darwin
[4]
웹사이트
re: Intel XNU bug report
http://lists.apple.c[...]
Apple Computer
2006-10-05
[5]
웹사이트
Solaris 10 on AMD Opteron
http://www.oracle.co[...]
Oracle
2010-12-09
[6]
웹사이트
Microsoft 64-Bit Computing
http://www.microsoft[...]
Microsoft
2010-12-09
[7]
웹사이트
AMD64 Port
http://www.debian.or[...]
Debian
2012-11-23
[8]
웹사이트
Gentoo/AMD64 Project
http://www.gentoo.or[...]
Gentoo Project
2013-05-27
[9]
웹사이트
WOW64 Implementation Details
https://msdn.microso[...]
2016-01-24
[10]
웹사이트
ProcessorArchitecture Class
https://msdn.microso[...]
2016-01-24
[11]
웹사이트
Volume 2: System Programming
http://support.amd.c[...]
AMD Corporation
2017-03-25
[12]
웹사이트
If there is no 16-bit emulation layer in 64-bit Windows, how come certain 16-bit installers are allowed to run?
https://devblogs.mic[...]
2021-07-14
[13]
웹사이트
IBM WebSphere Application Server 64-bit Performance Demystified
https://public.dhe.i[...]
IBM Corporation
2010-04-09
[14]
간행물
AMD Discloses New Technologies At Microporcessor Forum
https://www.amd.com/[...]
AMD
2010-11-09
[15]
간행물
AMD Releases x86-64 Architectural Specification; Enables Market Driven Migration to 64-Bit Computing
https://www.amd.com/[...]
AMD
2010-11-09
[16]
서적
AMD64 Architecture Programmer's Manual
https://www.amd.com/[...]
[17]
서적
Professional Linux kernel architecture
John Wiley & Sons.
[18]
웹사이트
Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 3A: System Programming Guide, Part 1
http://www.intel.com[...]
2019-07-10
[19]
웹사이트
BIOS and Kernel Developer's Guide (BKDG) For AMD Family 10h Processors
http://developer.amd[...]
2016-02-27
[20]
웹사이트
Myth and facts about 64-bit Linux
http://www.amd64.org[...]
2010-05-30
[21]
서적
Pentium Pro and Pentium II System Architecture
https://archive.org/[...]
Addison-Wesley
[22]
웹사이트
What is PAE, NX, and SSE2 and why does my PC need to support them to run Windows 8 ?
http://windows.micro[...]
Microsoft Corporation
2013-03-19
[23]
웹사이트
Memory Limits for Windows Releases
http://msdn.microsof[...]
Microsoft
2014-01-20
[24]
웹사이트
5-Level Paging and 5-Level EPT
https://software.int[...]
Intel
2017-06-17
[25]
특허
64KB page system that supports 4KB page operation
[26]
웹사이트
Opteron 6100 Series Motherboards
http://www.supermicr[...]
Supermicro Corporation
2010-06-22
[27]
웹사이트
Supermicro XeonSolutions
http://www.supermicr[...]
Supermicro Corporation
2010-06-20
[28]
웹사이트
Opteron 8000 Series Motherboards
http://www.supermicr[...]
Supermicro Corporation
2010-06-20
[29]
웹사이트
Tyan Product Matrix
http://www.supermicr[...]
MiTEC International Corporation
2010-06-21
[30]
웹사이트
From the AMI Archives: AMIBIOS 8 and the Transition to EFI
https://www.ami.com/[...]
American Megatrends
2021-10-25
[31]
뉴스
Intel is Continuing the Yamhill Project?
https://www.neowin.n[...]
2022-06-05
[32]
웹사이트
Craig Barrett confirms 64 bit address extensions for Xeon. And Prescott.
http://www.theinquir[...]
The Inquirer
2004-02-17
[33]
웹사이트
"A Roundup of 64-Bit Computing", from internetnews.com
http://www.internetn[...]
2006-09-18
[34]
웹사이트
Intel to demo 'CT' 64-bit processor line at IDF
https://www.edn.com/[...]
AspenCore Media
2004-02-06
[35]
웹사이트
Intel 64 Architecture
http://www.intel.com[...]
Intel
2007-06-29
[36]
웹사이트
Intel Publishes "X86-S" Specification For 64-bit Only Architecture
https://www.phoronix[...]
[37]
웹사이트
Envisioning a Simplified Intel Architecture for the Future
https://www.intel.co[...]
[38]
웹사이트
Intel terminates x86S initiative — unilateral quest to de-bloat x86 instruction set comes to an end
https://www.tomshard[...]
2024-12-19
[39]
웹사이트
VIA to launch new processor architecture in 1Q08
http://www.digitimes[...]
DigiTimes
2007-07-25
[40]
웹사이트
Isaiah revealed: VIA's new low-power architecture
https://arstechnica.[...]
Ars Technica
2008-01-23
[41]
간행물
VIA Launches VIA Nano Processor Family
http://www.viatech.c[...]
VIA Technologies|VIA
2008-05-29
[42]
웹사이트
VIA Isaiah Architecture Introduction
http://www.via.com.t[...]
VIA Technologies|VIA
2008-01-23
[43]
간행물
New x86-64 micro-architecture levels
https://lists.llvm.o[...]
2021-03-11
[44]
웹사이트
Building Red Hat Enterprise Linux 9 for the x86-64-v2 microarchitecture level
https://developers.r[...]
2022-03-22
[45]
웹사이트
System V Application Binary Interface Low Level System Information
https://gitlab.com/x[...]
2021-03-11
[46]
웹사이트
QEMU version 7.2.0 released - QEMU
https://www.qemu.org[...]
2023-01-09
[47]
웹사이트
ChangeLog/7.2 - QEMU
https://wiki.qemu.or[...]
2023-01-09
[48]
웹사이트
64-bit computing in theory and practice
http://techreport.co[...]
2011-03-22
[49]
웹사이트
Discussion on Stack Overflow
https://stackoverflo[...]
2021-03-02
[50]
웹사이트
Intel 64 and IA-32 Architectures Software Developer's Manual Volume 2 (2A, 2B & 2C): Instruction Set Reference, A–Z
http://www.intel.com[...]
Intel
2014-01-21
[51]
웹사이트
Intel 64 and IA-32 Architectures Software Developer's Manual Volume 2 (2A, 2B & 2C): Instruction Set Reference, A-Z
http://www.intel.com[...]
Intel
2014-01-21
[52]
웹사이트
How retiring segmentation in AMD64 long mode broke VMware
http://www.pagetable[...]
Pagetable.com
2010-05-02
[53]
웹사이트
VMware and CPU Virtualization Technology
http://download3.vmw[...]
VMware
2010-09-08
[54]
웹사이트
Linux-Kernel Archive: [PATCH 2/5] KVM: svm: Disallow EFER.LMSLE on hardware that doesn't support it
https://lkml.indiana[...]
2023-11-03
[55]
웹사이트
AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions
https://support.amd.[...]
AMD
2018-08-02
[56]
웹사이트
Intel 64 and IA-32 Architectures Software Developer's Manual Volume 2 (2A, 2B & 2C): Instruction Set Reference, A-Z
http://www.intel.com[...]
Intel
2014-12-28
[57]
뉴스
The Significance of the x86 LFENCE Instruction
https://hadibrais.wo[...]
2018-05-14
[58]
웹사이트
Live Migration with AMD-V™ Extended Migration Technology
http://developer.amd[...]
2022-06-30
[59]
웹사이트
Practical Lock-Free and Wait-Free LL/SC/VL Implementations Using 64-Bit CAS
http://www.research.[...]
IBM
2014-01-21
[60]
웹사이트
Why is the virtual address space 4GB anyway?
https://blogs.msdn.m[...]
Microsoft
2017-03-25
[61]
웹사이트
System Requirements—Windows 8.1
http://windows.micro[...]
2014-04-27
[62]
웹사이트
Re: [PATCH v2] x86: clear incorrectly forced X86_FEATURE_LAHF_LM flag
https://lkml.org/lkm[...]
2022-06-30
[63]
웹사이트
Revision Guide for AMD Athlon 64 and AMD Opteron Processors
http://support.amd.c[...]
AMD
2009-07-18
[64]
웹사이트
Product Change Notification 105224 - 01
http://developer.int[...]
Intel
[65]
웹사이트
Intel® Pentium® D Processor 800 Sequence and Intel® Pentium® Processor Extreme Edition 840 Specification Update
https://www.intel.co[...]
2022-06-30
[66]
웹사이트
Intel Xeon 2.8 GHz - NE80551KG0724MM / BX80551KG2800HA
https://www.cpu-worl[...]
2022-06-30
[67]
웹사이트
Intel tweaks EM64T for full AMD64 compatibility
https://www.theregis[...]
2022-06-30
[68]
웹사이트
Product Change Notification 105271 – 00
http://developer.int[...]
Intel
[69]
웹사이트
Product Change Notification 104101 – 00
http://developer.int[...]
Intel
[70]
웹사이트
64-bit Intel® Xeon™ Processor MP with up to 8MB L3 Cache Datasheet
https://www.intel.co[...]
2022-11-17
[71]
웹사이트
Justin Boggs's at Microsoft PDC 2008
https://zbook.org/re[...]
2022-11-17
[72]
웹사이트
AMD Opteron Multicore Processors
https://www.nersc.go[...]
2022-11-17
[73]
웹사이트
Intel® Xeon® Processor 7500 Series Datasheet, Volume 2
https://www.intel.co[...]
2022-11-17
[74]
웹사이트
Intel 64 and IA-32 Architectures Software Developer's Manual
https://web.archive.[...]
2014-09
[75]
웹사이트
Intel Core i7-3960X Review
https://overclock3d.[...]
2022-07-01
[76]
웹사이트
Introduction to 5-Level Paging in 3rd Gen Intel Xeon Scalable Processors with Linux
https://lenovopress.[...]
Lenovo
2022-07-01
[77]
웹사이트
AMD EPYC Genoa Gaps Intel Xeon in Stunning Fashion
https://www.servethe[...]
2022-11-17
[78]
웹사이트
Statistics | TOP500 Supercomputer Sites
http://www.top500.or[...]
Top500.org
2014-03-22
[79]
웹사이트
Sublist Generator {{!}} TOP500 Supercomputer Sites
https://www.top500.o[...]
2018-12-06
[80]
웹사이트
Intel® Xeon PhiTM Coprocessor Instruction Set Architecture Reference Manual
https://software.int[...]
Intel
2014-05-21
[81]
웹사이트
Intel Powers the World's Fastest Supercomputer, Reveals New and Future High Performance Computing Technologies
http://newsroom.inte[...]
2013-06-21
[82]
웹사이트
cvs commit: src/sys/amd64/amd64 genassym.c src/sys/amd64/include asm.h atomic.h bootinfo.h coredump.h cpufunc.h elf.h endian.h exec.h float.h fpu.h frame.h globaldata.h ieeefp.h limits.h lock.h md_var.h param.h pcb.h pcb_ext.h pmap.h proc.h profile.h psl.h ...
http://leaf.dragonfl[...]
2009-05-03
[83]
웹사이트
AMD64 port
http://leaf.dragonfl[...]
2009-05-03
[84]
웹사이트
DragonFlyBSD: GoogleSoC2008
http://www.dragonfly[...]
2009-05-03
[85]
웹사이트
Summer of Code accepted students
http://leaf.dragonfl[...]
2009-05-03
[86]
웹사이트
DragonFlyBSD: release24
http://www.dragonfly[...]
2009-05-03
[87]
웹사이트
Tutorial for entering protected and long mode from DOS
https://web.archive.[...]
2008-07-06
[88]
웹사이트
Porting Linux to x86-64
https://web.archive.[...]
2001-06-26
[89]
웹사이트
Andi Kleen's Page
http://www.halobates[...]
2009-08-21
[90]
웹사이트
Arch64 FAQ
https://wiki.archlin[...]
2012-05-11
[91]
뉴스
Kernel Log: x32 ABI gets around 64-bit drawbacks
https://web.archive.[...]
www.h-online.com
2011-11-01
[92]
뉴스
x32 - a native 32-bit ABI for x86-64
http://linuxplumbers[...]
linuxplumbersconf.org
2011-11-01
[93]
뉴스
x32-abi
http://sites.google.[...]
Google Sites
2011-11-01
[94]
뉴스
AMD64 Port
http://www.debian.or[...]
debian.org
2011-10-29
[95]
뉴스
5-level paging
https://docs.kernel.[...]
kernel.org
2024-02-07
[96]
웹사이트
Apple – Mac OS X Xcode 2.4 Release Notes: Compiler Tools
https://developer.ap[...]
Apple Inc.
2012-11-19
[97]
웹사이트
Apple – Mac OS X Leopard – Technology - 64-bit
https://www.apple.co[...]
Apple Inc.
2012-11-19
[98]
웹사이트
Mac OS X v10.6: Macs that use the 64-bit kernel
http://support.apple[...]
Apple Inc.
2012-11-29
[99]
웹사이트
Mac OS X 10.6 Snow Leopard: the Ars Technica review
https://arstechnica.[...]
Ars Technica LLC
2010-06-20
[100]
웹사이트
Mac OS X Technology
https://www.apple.co[...]
Apple Inc.
2012-11-19
[101]
웹사이트
So We Don't Have a Solution for Catalina...Yet
https://www.codeweav[...]
2021-09-29
[102]
웹사이트
win32 on macOS
https://www.winehq.o[...]
2021-09-29
[103]
간행물
Microsoft Raises the Speed Limit with the Availability of 64-Bit Editions of Windows Server 2003 and Windows XP Professional
https://news.microso[...]
2024-01-29
[104]
웹사이트
A description of the x64-based versions of Windows Server 2003 and of Windows XP Professional x64 Edition
https://web.archive.[...]
2016-08-14
[105]
웹사이트
Windows Server 2003 SP1 Administration Tools Pack
https://web.archive.[...]
2016-08-14
[106]
웹사이트
"/LARGEADDRESSAWARE (Handle Large Addresses)"
https://learn.micros[...]
Microsoft
2022-12-21
[107]
웹사이트
Everything You Need To Know To Start Programming 64-Bit Windows Systems
https://learn.micros[...]
Microsoft
2006-05-01
[108]
웹사이트
Making the Move to x64
https://learn.micros[...]
Microsoft
2006-01-01
[109]
웹사이트
Behind Windows x86-64's 44-bit Virtual Memory Addressing Limit
http://www.alex-ione[...]
[110]
웹사이트
64-bit programming for Game Developers
https://learn.micros[...]
[111]
웹사이트
Memory Limits for Windows and Windows Server Releases
https://learn.micros[...]
Microsoft
[112]
웹사이트
AMD says goodbye to 3DNow! instruction set
https://www.zdnet.co[...]
2010-08-23
[113]
웹사이트
General Porting Guidelines
https://learn.micros[...]
2023-04-18
[114]
웹사이트
Driver history for Microsoft SQL Server
https://learn.micros[...]
2023-04-18
[115]
웹사이트
Microsoft OLE DB Provider for Jet and Jet ODBC driver are available in 32-bit versions only
https://learn.micros[...]
2023-04-18
[116]
뉴스
The Xbox One: Hardware Analysis & Comparison to PlayStation 4
http://www.anandtech[...]
Anandtech
2013-05-21
[117]
웹사이트
The Tech Spec Test: Xbox One Vs. PlayStation 4
https://web.archive.[...]
Game Informer
2013-05-21
[118]
웹사이트
What to expect from Sony 'PlayStation 5' launch in November
https://indianexpres[...]
2020-08-31
[119]
웹사이트
Hot Chips 2020 Live Blog: Microsoft Xbox Series X System Architecture (6:00pm PT)
https://www.anandtec[...]
[120]
웹사이트
Steam Deck: Five big things we learned from Valve's developer summit
https://www.theverge[...]
2021-11-12
[121]
웹사이트
ProcessorArchitecture Fields
http://msdn.microsof[...]
[122]
웹사이트
An example file from Linux 3.7.8 kernel source tree displaying the usage of the term x86_64
https://web.archive.[...]
[123]
특허
[124]
특허
[125]
특허
[126]
웹사이트
Patent Cross License Agreement Between AMD and Intel
https://web.archive.[...]
2001-01-01
[127]
웹사이트
AMD Intel Settlement Agreement
https://www.sec.gov/[...]
[128]
웹사이트
Intel to pay AMD $1.25 billion in antitrust settlement
https://web.archive.[...]
CNET
2009-11-12
[129]
웹사이트
AMD and Intel Settle Their Differences: AMD Gets To Go Fabless
http://www.anandtech[...]
2009-11-12
[130]
웹사이트
Intel、新「X86-S」アーキテクチャで8086互換を切り捨て
https://pc.watch.imp[...]
2023-05-22
[131]
웹사이트
Introducing Intel® Advanced Performance Extensions (Intel® APX)
https://www.intel.co[...]
2024-03-05
[132]
웹사이트
日本AMD、Opteronの発表会を開催
https://pc.watch.imp[...]
[133]
웹사이트
日本AMD、Athlon 64の発表会を開催
https://pc.watch.imp[...]
[134]
웹사이트
AMD、X86-64アーキテクチャのプログラミングガイドを公開
https://pc.watch.imp[...]
[135]
웹사이트
後藤弘茂のWeekly海外ニュース
https://pc.watch.imp[...]
[136]
웹사이트
Volume 2: System Programming
http://support.amd.c[...]
AMD Corporation
2011-05-01
[137]
웹사이트
IBM WebSphere Application Server 64-bit Performance Demystified
https://web.archive.[...]
2007-09-06
[138]
문서
これらの新しい呼出規約は、当初からレジスタ本数が多いRISC系CPUではすでに実績があった仕様である。
[139]
문서
詳細についてはWindows NT系のWindows NT系#32ビットと64ビットを参照のこと。
[140]
문서
オレゴン州のウィラメットバレー(Willamette Valley)を流れるYamhill川から来た名前である。
[141]
뉴스
Craig Barrett confirms 64 bit address extensions for Xeon. And Prescott
http://www.theinquir[...]
The Inquirer
[142]
뉴스
A Roundup of 64-Bit Computing
http://www.internetn[...]
internetnews.com
[143]
문서
オレゴン州を流れるクラッカマス川(Clackamas River)の名前に由来し、ウィラメット川(Willamette River)の支流である。
[144]
웹사이트
Intel® 64 Architecture
http://www.intel.com[...]
[145]
웹사이트
後藤弘茂のWeekly海外ニュース Intelの64bit拡張技術「Clackamas」がAMD64と互換である謎
https://pc.watch.imp[...]
2023-06-04
[146]
웹사이트
Intel、64bit拡張はAMD64互換と発表
https://pc.watch.imp[...]
2023-06-04
[147]
웹사이트
BIOS and Kernel Developer’s Guide for AMD NPT Family 0Fh Processors
https://web.archive.[...]
2006-05
[148]
문서
8080のPUSH PSW命令をLAHF / XCHG AL, AH / PUSH AXとエミュレートできる。
[149]
웹사이트
VMware Player 5.0 インストール要件
https://web.archive.[...]
[150]
문서
PREFETCHW命令はメモリからデータをキャッシュラインにプリフェッチし、そのデータがあとで書き換えられることを想定してあらかじめキャッシュラインの状態をMESIプロトコル|Modified(書き換えあり)にする命令である。データが書き込まれた時点でModifiedに変更するよりも速く動作することが期待できる。
[151]
웹사이트
Cross-Vendor Migration
http://developer.amd[...]
AMD
[152]
웹사이트
Microsoft社のCoreinfoツールでこれらの命令のサポート状況を確認できる。
https://learn.micros[...]
[153]
웹사이트
Windows 8 のシステム要件
http://windows.micro[...]
[154]
웹사이트
Windows 10 システム要件
http://www.microsoft[...]
[155]
웹사이트
JWasm / Feature Requests / #10 MOVD/MOVQ in 64-bit (was: Another MMX code problem)
https://sourceforge.[...]
2020-06-09
[156]
웹사이트
43215 – x86-64: Nonstandard instruction "movd %xmm0, %rax"
https://gcc.gnu.org/[...]
2020-06-09
[157]
문서
AMD64 Architecture Programmer's Manual
[158]
서적
Undocumented DOS - A programmer's guide to reserved MS-DOS functions and data structures - expanded to include MS-DOS 6, Novell DOS and Windows 3.1
Addison Wesley
1994
[159]
문서
AMD・インテル系アーキテクチャではないが、モトローラMC68000ではアドレス空間が24ビットだったがアドレスレジスタは32ビットだった。そのためアプリケーションなどが上位8ビットを勝手に使用していたケースがあり、のちにMC68020でアドレス空間が32ビット化された際に問題になったことがあった。
[160]
웹사이트
5level-paging.txt
https://www.kernel.o[...]
2020-04-05
[161]
웹사이트
amd64 pmap: LA57 AKA 5-level paging
https://cgit.freebsd[...]
The FreeBSD Project
2020-08-23
[162]
문서
ある場所のメモリを書き込み可能かつ実行可能の状態に置かず、書き込みのみか実行のみかどちらか一方だけに制限すること。
[163]
웹사이트
清水理史の「イニシャルB」 第145回:64bit版Windows「Windows XP Professional x64 Edition」登場
https://bb.watch.imp[...]
2023-06-04
[164]
서적
Windows Internals FIFTH EDITION
Microsoft Press
null
[165]
서적
図解 64ビットがわかる
기술평론사
2006
[166]
웹인용
Extending the World's Most Popular Processor Architecture
https://web.archive.[...]
2012-01-15
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com