# AMD64

AMD64, inicialment coneguda com a x86-64, és una arquitectura basada en l'extensió del conjunt d'instruccions x86 per manejar adreces de 64 bits, realitzada per AMD. A més d'una simple extensió, contempla millores addicionals, com duplicar el nombre i la grandària dels registres d'ús general i d'instruccions SSE.
El primer processador amb suport per a aquest conjunt d'instruccions va ser l'Opteron, llançat l'abril de 2003. Posteriorment, ha estat implementat en múltiples variants de l'Athlon 64, així com del Pentium 4, d'Intel; en aquest últim cas, sota una versió d'Intel anomenada EM64T.

## Descripció de l'arquitectura

El conjunt d'instruccions del AMD x86-64 (rebatejat posteriorment com a AMD64) és una extensió directa de l'arquitectura del x86 a una arquitectura de 64 bits, motivat pel fet que els 4GB de memòria que són direccionables directament per una CPU de 32 bits ja no és suficient per a totes les aplicacions. Alguns dels canvis:
Nous registres. El nombre de registres de propòsit general s'ha incrementat de 8 en els processadors x86-32 a 16, i la grandària de tots aquests registres s'ha incrementat de 32 bits a 64 bits. Addicionalment, el nombre de registres MMX de 128 bits (usats per a les instruccions esteses SIMD) s'ha incrementat de 8 a 16. Els registres addicionals incrementen el rendiment.
Espai d'adreces major. A causa de l'arquitectura de 64 bits, l'arquitectura AMD64 pot direccionar fins a 18 exabytes de memòria. Això, comparat amb els 4GB del x86-32, dels quals només la meitat està disponible per a aplicacions en la majoria de les versions de Microsoft Windows, el sistema operatiu dominant en entorns domèstics. Les implementacions futures de l'arquitectura del AMD64 pot proporcionar fins a 2 exabytes de memòria disponible. Si la paginació de memòria s'utilitza correctament, els sistemes operatius de 32 bits podrien tenir accés a algunes de les extensions d'adreça físiques sense haver de realitzar l'execució en manera llarga (long). Encara que la memòria virtual de tots els programes en la manera de 32 bits està limitada a 4 GB.
Crides al sistema més ràpides. A causa del fet que la segmentació no està suportada en la manera de 64 bits, les cridades al sistema no tenen les latències associades amb emmagatzemar i recuperar la informació de segmentació ni han de realitzar les comprovacions necessàries de protecció a nivell de segmentació. Per tant, AMD ha introduït un nou interfície de cridades al sistema, al que s'accedeix utilitzant solament la instrucció "SYSCALL". Encara que els sistemes operatius encara poden utilitzar el sistema d'interrupcions per a les cridades al sistema, en la manera de 64 bits utilitzar "SYSCALL" és més ràpid.
Instruccions SSE. L'arquitectura AMD 64 inclou les extensions de Intel SSE i SSE2, les últimes cpus inclouen SSE3 també. També estan suportades les instruccions del x86 i MMX.
Bit NX. El bit NX és una característica del processador que permet al sistema operatiu prohibir l'execució del codi en àrea de dades, millorant la seguretat. Aquesta característiques està disponible en les maneres de 32 i 64 bits, i està suportada per Linux, Solaris, Windows XP SP2, Windows Server 2003 SP1.

## Maneres de funcionament

| Mode de funcionament | Mode de funcionament | Requerit pel sistema Operatiu | És necessària la recompilació de l'aplicació | Grandària per defecte de l'adreçament | Grandària per defecte dels operands | Extensions del registre | Grandària típica del Registre de Propòsit General |
| Mode llarga | Mode 64 bits | SOTA nous de 64 bits | sí | 64 | 32 | sí | 64 |
| Mode llarga | Mode de compatibilitat | SOTA nous de 64 bits | no | 32 | 32 | no | 32 |
| Mode llarga | Mode de compatibilitat | SOTA nous de 64 bits | no | 16 | 16 | no | 16 |
| Mode heretat | Mode protegit | SOTA de 32 bit heretats | no | 32 | 32 | no | 32 |
| Mode heretat | Mode protegit | SOTA de 32 bit heretats | no | 16 | 16 | no | 32 |
| Mode heretat | Manera 8086 virtual | SOTA de 32 bit heretats | no | 16 | 16 | no | 16 |
| Mode heretat | Mode real | SOTA de 16 bit heretats | no | 16 | 16 | no | 16 |

### Explicació del mode de funcionament

Hi ha dos modes primaris d'operació per a aquesta arquitectura:

#### Mode Llarg

    és la manera d'operació principal previst en l'arquitectura; és una combinació del mode de 64 bits nadiu del processador i un mode de 32 bits per a la compatibilitat. També abandona algunes de les característiques no desenvolupades o menys utilitzades del 80386. S'utilitza per als sistemes operatius de 64 bits. Entre els que donen suport a aquest mode hi ha Linux, alguns BSDs, Solaris 10, Windows XP Professional (edició x64) i Windows Vista (edició x64)
    Atès que el conjunt d'instruccions és el mateix, no hi ha una penalització important en l'execució del codi x86. Això no succeïx en l'arquitectura de Intel IA-64, on les diferències en el ISA subjacent impliquen que l'execució de codi de 32 bits equival a utilitzar un processador completament diferent. En tot cas, en AMD 64, les aplicacions de 32 bits del x86 podrien encara beneficiar-se d'una recompilación a 64 bits. Els registres addicionals disponibles en el codi de 64 bits, poden ser utilitzats per un compilador d'alt nivell per a l'optimització.
    Usant el mode llarg, un sistema operatiu de 64 bits pot executar aplicacions de 32 bits i 64 bits simultàniament. També un x86-64 inclou un suport nadiu per a executar les aplicacions de 16 bits del x86. Microsoft ha exclòs explícitament el suport per a aplicacions de 16 bits en l'edició x64 de Windows XP Professional a causa dels problemes d'aconseguir que el codi de 16 bits del x86 pugui funcionar amb el seu emulador WoW64.

#### Mode heretat

    el mode utilitzat pels sistemes operatius de 16 bits, com MS-DOS, i els sistemes operatius de 32 bits, com Windows XP. En aquest mode, només es pot executar codi de 16 bits o de 32 bits. Els programes de 64 bits (com el programa d'instal·lació GUI per a Windows XP Professional x64 i Windows Server 2003 x64) no s'executaran.

## Estudi de mercat

AMD64 representa un canvi amb el passat de AMD el comportament del qual era seguir els estàndards de Intel, encara que manté els comportaments anteriors de Intel estenent l'arquitectura del x86, des dels 16 bits 8086 fins als 32 bits 80386, sempre sense eliminar compatibilitat cap enrere.
L'arquitectura del AMD64 amplia l'arquitectura de 32 bits del x86 (IA-32) afegint registres de 64 bits, amb modes de compatibilitat total amb 32 bits i 16 bits per a programari ja existent. Fins i tot el mode de 64 bits permet compatibilitat cap enrere, facilitant a les eines del x86, com els compiladors ser modificats a l'arquitectura AMD64 amb un esforç mínim. L'arquitectura del AMD64 disposa de característiques com el bit NX.

## Implementacions

Els processadors següents implementen l'arquitectura AMD64:
* AMD 64 (K8 - Kryptonite)
* AMD Athlon 64
* AMD Athlon 64 X2
* AMD Athlon 64 FX
* AMD Opteron
* AMD Turion 64
* AMD Sempron (tots els que utilitzen sockets 754, 939 i AM2)
* EM64T (Extended Memory 64 Technology)
* Intel Xeon (alguns models des de 'Nocona')
* Intel Pentium 4 (models sèrie 500, 600')
* Intel Pentium D
* Intel Pentium Extreme Edition
* Intel Celeron D
* Intel Core 2 Duo (Conroe, Allendale)
* Intel Core 2 Quad (Conroe, Kentsfield)