| <bgcolor=#96834a> 명령어 집합 | |
| CISC | AMD64●x86● · M68K · 68xx · MOS 65xx · Z80 · 8080 · z/Architecture · VAX |
| RISC | Arm (A64 · A32 · T32) · RISC-V● · MIPS● · DEC Alpha● · POWER PowerPC · CELL-BE LoongArch · OpenRISC · PA-RISC · SPARC · Blackfin · SuperH · AVR32 AVR |
| VLIW EPIC | E2K · IA-64 · Crusoe |
| <rowcolor=#fff> x86 · AMD64 확장 명령어 집합 | |
| 인텔 주도 확장 명령어 | |
| 범용 | |
| SIMD | AVX-512: F · CD · DQ · BW · VL · IFMA · VBMI · VBMI2 · VNNI · VAES · GFNI · BITALG AVX[3]: AVX-VNNI · AVX-IFMA |
| 비트 조작 | BMI1 · BMI2 · ADX |
| 보안 및 암호 | AES-NI · CLMUL · RDRAND · RDSEED · SHA · MPX · SGX · TME · MKTME |
| 가상화 및 기타 | VT-x(VMX) · SMX · TSX |
| AMD 주도 확장 명령어 | |
| SIMD 및 비트 연산 | 3DNow! PREFETCHW · F16C · XOP · FMA FMA4 · FMA3 |
| 비트 조작 | ABM |
| 보안 및 암호 | SME |
| 가상화 및 기타 | AMD-V |
| 공동 표준 (x86 Ecosystem Advisory Group) | |
| SIMD | AVX10 · ACE AVX10: AVX10.1 · AVX10.2 |
| 보안 및 암호 | ChkTag |
| 시스템 및 기타 | FRED |
1. 개요
3DNow!는 AMD가 x86 아키텍처용으로 설계한 부동소수점 SIMD 연산 확장 명령어 세트다.1998년 AMD K6-2와 함께 출시되었으며, MMX가 지원하지 않는 부동소수점 SIMD 연산을 보완하는 것을 목표로 하였다.
기존 MMX의 64비트 MM 레지스터를 재활용하여 단정밀도(32비트) 부동소수점 2개를 패킹한 형태로 처리하며, 21개의 신규 명령어를 도입하였다. 이후 Athlon에서 24개가 추가된 Enhanced 3DNow!로 확장되었고, Athlon XP에서는 SSE 명령어 집합과 함께 3DNow! Professional로 통합되었다.
인텔이 1999년 인텔 펜티엄 III와 함께 출시한 스트리밍 SIMD 확장(SSE)이 전용 128비트 XMM 레지스터와 4개 폭의 단정밀도 SIMD를 제공하면서 3DNow!는 경쟁에서 밀리기 시작하였다. AMD는 2010년 3DNow!의 공식 지원 중단을 선언하였고, 2011년 출시된 불도저 마이크로아키텍처부터 PREFETCH 계열 명령어를 제외한 3DNow! 명령어가 제거되었다.
2. 역사
2.1. 개발 배경
1990년대 중반 3D 게임 시장이 급격히 성장하면서 실시간 기하 변환, 조명 연산, 텍스처 매핑 등 단정밀도 부동소수점 연산 수요가 폭증하였다. 그러나 1997년 도입된 MMX는 정수 SIMD만 지원하고 부동소수점 연산을 포함하지 않아 이러한 작업 부하에 직접 대응할 수 없었다. x87 FPU는 스칼라 80비트 연산을 수행하지만 SIMD 병렬 처리를 지원하지 않아 처리량 면에서 한계가 있었다.AMD는 이 공백을 메우기 위해 기존 MMX 레지스터 파일을 그대로 재활용하는 방식으로 부동소수점 SIMD를 구현하는 방안을 설계하였다. 새로운 레지스터를 도입하지 않으므로 운영체제 수정 없이 기존 MMX의 컨텍스트 저장·복원 메커니즘을 공유할 수 있었다.
2.2. 출시
1998년 5월, AMD는 K6-2 프로세서와 함께 3DNow!를 출시하였다. K6-2는 MMX와 3DNow!를 동시에 지원하는 최초의 x86 프로세서였으며, 인텔의 동급 제품인 펜티엄 II와의 경쟁 구도에서 부동소수점 SIMD라는 차별점을 내세웠다.초기 소프트웨어 지원은 제한적이었으나, 이드 소프트웨어(id Software)의 Quake II, 에픽게임즈(Epic Games)의 Unreal 등 당시 주요 3D 게임 엔진들이 3DNow! 최적화 코드 경로를 추가하였다. AMD는 소프트웨어 개발사에 최적화 도구를 제공하며 생태계 구축을 지원하였다.
2.3. SSE와의 경쟁
1999년 2월 인텔이 인텔 펜티엄 III와 함께 출시한 스트리밍 SIMD 확장(SSE)은 3DNow!에 비해 구조적으로 유리한 위치에 있었다. SSE는 전용 128비트 XMM 레지스터를 도입하여 단정밀도 부동소수점 4개를 동시에 처리할 수 있었던 반면, 3DNow!는 64비트 MM 레지스터를 통해 2개만 처리하였다. 또한 SSE는 기존 MMX·x87 레지스터와 충돌 문제가 없어 x87과 병행 사용 시 제약이 없었다.인텔의 시장 점유율 우위와 DirectX의 SSE 최적화 지원, Microsoft의 Visual C++ 컴파일러 등 주요 도구 체인의 SSE 우선 지원이 맞물리면서 3DNow!는 AMD 플랫폼에 국한된 확장으로 남게 되었다. AMD는 Athlon XP(2001)에 SSE를 탑재하고 Enhanced 3DNow!와 SSE를 통합한 3DNow! Professional이라는 명칭을 사용하였으나, 이는 사실상 AMD가 SSE 표준을 수용한 것을 의미하였다.
2.4. 지원 중단
AMD는 2010년 새로운 프로세서에서 3DNow!의 공식 지원을 중단한다고 발표하였다. 이후 2011년 10월 출시된 Bulldozer 마이크로아키텍처부터 PREFETCH와 PREFETCHW를 제외한 3DNow! 명령어 전체가 제거되었다. PREFETCH 계열은 캐시 프리페치 용도로 범용성이 있어 이후 아키텍처에서도 계속 지원된다.3. 상세
4. 관련 항목
- SIMD
- MMX
- 스트리밍 SIMD 확장(SSE)