Processori dall'interno. Processori dall'interno Design della scheda madre del computer

Attualmente, la quota principale del mercato dei microprocessori generici è occupata dai microprocessori a 32 e 64 bit. In questo capitolo vengono descritti i microprocessori Intel con architettura a 32 bit, che costituiscono la famiglia IA-32 (Architettura Intel-32). Questa architettura costituisce la base dell'architettura x86-64 a 64 bit di Intel e dell'architettura AMD-64 di AMD.

2.1 Composizione e funzioni dei registri

Registri si riferisce alla memoria ad alta velocità situata all'interno della CPU e progettata per l'archiviazione rapida dei dati e l'accesso rapido ad essi dai componenti interni del processore. Ad esempio, quando si ottimizzano i cicli di programma per la velocità, le variabili a cui si accede all'interno del ciclo si trovano nei registri del processore anziché nella memoria. La raccolta di tutti questi registri è talvolta chiamata memoria ad accesso super casuale (SRAM).

2.1.1 Registri principali

La Figura 2.1 mostra la struttura dei principali registri e i loro nomi. Ci sono 8 registri scopo generale(RON), registri a 6 segmenti, registro flag, registro puntatore istruzioni, nonché registri di sistema, registri di debug e test.

Registri per scopi generali (RON). Questi registri vengono utilizzati principalmente per eseguire operazioni aritmetiche e trasferire dati. È possibile accedere a ciascuna RON come registro a 32 bit o come registro a 16 bit. È possibile accedere ad alcuni registri come registri a 8 bit. Ad esempio, il registro EAX è a 32 bit, ma i suoi 16 bit inferiori sono chiamati registro AX. Gli 8 bit più alti del registro AX sono chiamati AN, mentre gli 8 bit più bassi sono chiamati AL. Le parti a 16 bit dei registri indice e puntatore vengono solitamente utilizzate solo quando si scrivono programmi per la modalità di indirizzamento reale, ovvero per MS-DOS o la sua emulazione in Windows.

Significato delle abbreviazioni dei nomi di registro:

Il prefisso E all'inizio dei nomi dei registri viene espanso.

Il suffisso X alla fine dei nomi dei registri significa, infatti, il registro.

AX – Accumulatore (unità).

BX – Registro di base.

CX – Contatore.

DX – Dati.

AL – Accumulatore basso (metà bassa del registro AX).

AH – Accumulatore alto (metà alta del registro AX).

BL – Base bassa (metà bassa del registro BX).

BH – Base alta (metà alta del registro BX).

CL – Contatore basso (metà bassa del registro CX).

CH – Contatore alto (metà alta del registro CX).

DL – Dati bassi (metà bassa del registro DX).

DH – Dati alti (metà alta del registro DX).

SI – Indice delle fonti. Contiene l'indirizzo di origine corrente.

DI – Indice di destinazione. Contiene l'indirizzo corrente del destinatario.

BP – Puntatore base. Per l'accesso casuale ai dati all'interno dello stack

SP: puntatore dello stack. Contiene un puntatore alla cima dello stack.

CS – Segmento di codice.

DS – Segmento dati.

ES – Segmento dati extra (segmento dati aggiuntivo).

FS – Segmento dati esteso (segmento dati aggiuntivo).

GS – Segmento dati esteso (segmento dati aggiuntivo).

SS: segmento dello stack.

IP – Puntatore di istruzioni (puntatore di istruzioni o contatore di comandi).

F – Flag (registro dei flag).

GDTR – Registro della tabella descrittore globale.

IDTR – Registro della tabella descrittore delle interruzioni.

TR – Registro delle attività.

LDTR – Registro della tabella dei descrittori locali.

DR – Registro di debug.

TR – Registro di prova.

CR – Registro di controllo.

Caratteristiche dell'utilizzo dei registri. Quando il processore esegue comandi, alcuni registri di uso generale hanno uno scopo speciale.

    Il contenuto del registro EAX viene utilizzato automaticamente durante l'esecuzione delle istruzioni di moltiplicazione e divisione. Poiché questo registro è solitamente associato all'esecuzione di istruzioni aritmetiche, viene spesso chiamato registro accumulatore esteso (allargato accumulatore).

    Il registro ESX viene utilizzato automaticamente dal processore come contatore di loop.

    Il registro ESP accede ai dati memorizzati nello stack. Pila– si tratta di un'area di memoria di sistema, alla quale si accede secondo il principio FILO (First input – last output) “prima scritta, ultima lettura”. Questo registro solitamente non viene mai utilizzato per eseguire normali operazioni aritmetiche e istruzioni di trasferimento dati. Succede spesso chiamato registro del puntatore dello stack esteso (allargato pila puntatore). Il registro ESP punta all'indirizzo della parte superiore dello stack (l'indirizzo in cui verrà scritta la variabile successiva dal comando PUSH).

    I registri ESI ed EDI vengono solitamente utilizzati per comandi di trasferimento dati ad alta velocità da una posizione di memoria a un'altra. Ecco perché a volte vengono chiamati registri indice di origine estesi E destinatario dati (allargato fonte indice E allargato destinazione indice). Il registro ESI è l'indirizzo di origine e contiene l'indirizzo dell'inizio del blocco di informazioni per l'operazione di “sposta blocco” (indirizzo completo DS:ESI), e il registro EDI è l'indirizzo di destinazione (indirizzo completo ES:EDI).

    Il registro EBP viene comunemente utilizzato dai compilatori di linguaggi di programmazione di alto livello per accedere ai parametri delle funzioni e per fare riferimento alle variabili locali allocate nello stack. Non deve essere utilizzato per eseguire operazioni aritmetiche ordinarie o per spostare dati, tranne nel caso di tecniche di programmazione specializzate da parte di programmatori esperti. Viene spesso chiamato registro esteso puntatore dello stack frame (allargato telaio puntatore). Il registro EBP contiene l'indirizzo da cui le informazioni (o la “profondità” dello stack) vengono aggiunte o prelevate dallo stack. I parametri della funzione hanno uno spostamento positivo rispetto all'EBP, le variabili locali hanno uno spostamento negativo e l'indirizzo completo di quest'area di memoria è memorizzato nella coppia di registri SS:EBP.

    Il registro EIP memorizza l'offset dell'indirizzo dell'istruzione. L'indirizzo completo del successivo comando eseguibile viene memorizzato nella coppia di registri CS:EIP.

    I registri ESP, EBP, ESI, EDI memorizzano l'offset dell'indirizzo dati.

Registri di segmento. Questi registri vengono utilizzati come registri di base quando si accede ad aree di RAM preassegnate, che vengono chiamate segmenti. Esistono tre tipi di segmenti e, di conseguenza, registri di segmenti:

    code (CS), memorizzano solo le istruzioni del processore, cioè codice macchina del programma;

    dati (DS, ES, FS e GS), memorizzano aree di memoria destinate alle variabili e ai dati del programma;

    stack (SS), memorizzano un'area di memoria di sistema chiamata pila, in cui vengono distribuiti le variabili e i parametri del programma locale (temporaneo) passati alle funzioni quando vengono chiamate.

I registri di segmento vengono caricati con selettori di segmento, che sono offset dalla Global Descriptor Table (GDT) o dalla Local Descriptor Table (LDT).

I bit del registro del segmento contengono le seguenti informazioni:

0 – 1. RPL – Livello di privilegio richiesto. Livello di privilegi richiesti.

2. TI – Indicatore della tabella. Bit della tabella degli indicatori. Indica al processore dove cercare il selettore specificato. Se il bit è impostato, il processore legge il selettore dalla tabella descrittore locale. Se il bit è azzerato, il processore legge il selettore dalla tabella descrittore globale.

3 – 15. Questi bit memorizzano l'indice della tabella descrittore globale o locale.

Il registro CS è troppo piccolo per contenere un segmento di codice, quindi deve essere impostato sul segmento eseguibile. Il registro SS è troppo piccolo per contenere un segmento dello stack, quindi deve essere impostato su un segmento di dati scrivibile.

Il livello di privilegio impostato nel registro del segmento CS è il livello di privilegio del programma in esecuzione ed è chiamato livello di privilegio corrente (CPL - Livello di privilegio corrente). I registri di segmento DS, ES, FS, GS sono per i dati e devono essere impostati su un segmento di dati con permesso di scrittura. I livelli di privilegio richiesti da ciascuno di questi selettori devono essere superiori al livello di privilegio CPL corrente.

Associati a ciascuno dei sei registri di segmento vi sono i registri dei descrittori ombra. In modalità protetta, l'indirizzo base a 32 bit del segmento, il limite di 20 bit e gli attributi (diritti di accesso) delle tabelle descrittori vengono sovrascritti nei registri ombra.

Registro del puntatore di comando. Il registro EIP memorizza l'offset dall'inizio del programma (offset) della successiva istruzione da eseguire. Il processore ha diverse istruzioni che influenzano il contenuto di questo registro. La modifica dell'indirizzo memorizzato nel registro EIP provoca il trasferimento del controllo ad una nuova sezione del programma.

Registro delle bandiere E.F. (EFLAGZ) . I bit di questo registro sono chiamati flag e sono responsabili dell'esecuzione specifica di determinati comandi della CPU o riflettono il risultato dell'esecuzione del comando da parte dell'unità ALU. I flag di registro sono elencati nella Tabella 2.1. I bit da 22 a 31 compresi sono riservati.

Tabella 2.1 Registro dei flag

Per analizzare i bit di questo registro vengono fornite istruzioni speciali del processore. Dicono la bandiera installato, quando il bit del flag è 1 e quel flag Ripristina, quando il suo valore bit è 0. Inoltre, il registro EF esteso contiene cinque nuovi flag rispetto al registro F.

Bandiere di controllo. Lo stato dei bit del registro EFLAGS corrispondenti ai flag di controllo può essere modificato dal programmatore utilizzando speciali comandi del processore. Questi flag (DF, IF, TF) controllano l'esecuzione di determinati comandi della CPU:

8. TF – Bandiera trappola. Flag di traccia (modalità passo). Quando è impostato (TF=1), dopo l'esecuzione di ogni comando, viene chiamato l'interrupt interno INT 1 che arresta il processo di calcolo, rendendo possibile il controllo del contenuto dei registri.

9. IF – Flag di abilitazione interruzione. Flag di abilitazione interruzione. Quando IF=1, gli interrupt hardware mascherati sono abilitati. Quando SE=0 – proibito.

10. DF – Bandiera di direzione. Flag per controllare la direzione dell'elaborazione dell'array nei comandi di stringa. Quando DF=1, i registri indice SI, DI, che prendono parte ai comandi di stringa, vengono automaticamente decrementati del numero di byte dell'operando, elaborando così le stringhe dalla fine all'inizio. Quando DF=0 – vengono incrementati, elaborando dall'inizio alla fine della riga.

Flag di stato. Questi flag riflettono varie caratteristiche del risultato dell'esecuzione delle istruzioni aritmetiche e logiche della CPU:

0. CF – Porta bandiera. Il flag di riporto viene impostato se, durante l'esecuzione di un'operazione aritmetica senza segno, si ottiene un numero la cui profondità di bit supera la larghezza di bit del campo risultato ad esso assegnato. Nelle istruzioni di spostamento, il flag CF fissa il valore del bit più significativo.

2. PF – Bandiera di parità. Il flag pari/parità viene impostato quando il risultato ha un numero pari di unità.

4. AF – Trasporto ausiliario. Contrassegno per trasferimento/prestito aggiuntivo dalla tetrade più bassa a quella più alta (dalla terza alla quarta cifra). Utilizzato nei comandi per l'elaborazione di dati a 8 bit, molto spesso numeri BCD.

6. ZF – Bandiera zero. Il flag zero viene impostato se un'operazione aritmetica o logica produce un numero pari a zero (ovvero, tutti i bit del risultato sono 0).

7. SF – Bandiera segnaletica. Il flag di segno duplica il valore del bit più significativo del risultato. SF=0 per risultato positivo, SF=1 per risultato negativo.

11. OF – Flag di overflow. Bandiera di trabocco , O ) viene impostato se, durante l'esecuzione di un'operazione aritmetica con segno, si ottiene un numero la cui capacità di cifre supera la capacità di cifre del campo risultato ad esso assegnato.

Bandiere aggiunto al registro EF:

12-13. IOPL – Livello di privilegio I/O. Flag del livello di privilegio I/O. Utilizzato nella modalità protetta del funzionamento del microprocessore per controllare l'accesso ai comandi I/O in base ai privilegi dell'attività.

14. NT – Flag di attività nidificate. Flag di nidificazione delle attività. Utilizzato nella modalità protetta del funzionamento del microprocessore per registrare il fatto che un'attività è annidata all'interno di un'altra.

16. RF – Riprendi flag. Riprendi bandiera. In modalità debug, un singolo valore RF consente di riavviare il comando dopo le interruzioni. Utilizzato insieme ai registri dei punti di interruzione del debug.

17. VM – Flag della modalità virtuale. Flag di modalità virtuale. Segno che il microprocessore funziona in modalità virtuale 8086. 1 – il processore funziona in modalità virtuale 8086; 0 – il processore funziona in modalità reale o protetta.

18. AC – Verifica dell'allineamento. Flag della modalità operativa del processore in cui avviene il controllo dell'allineamento. Utilizzato solo al livello di privilegio 3. Se AC=1 e AM=1 (AM è un bit nel registro di controllo CR0), se si accede a un operando che non è allineato al limite appropriato (2 o 4 o 8) byte, verrà lanciata l'eccezione 17. Allineare l'operando ai limiti 2,4,8 significa che l'indirizzo dell'operando è un multiplo di 2,4,8, rispettivamente.

19. VIF – Flag di interruzione virtuale. Flag di abilitazione dell'interrupt in modalità virtuale del funzionamento del processore.

20. VIP – Interruzione virtuale in sospeso. Flag di ritardo dell'interruzione nella modalità virtuale del funzionamento del processore.

21. ID – Identificazione della CPU. Flag di identificazione del processore. Il flag può essere modificato se il processore supporta l'istruzione CPUID.

Nei registri di controllo CR0-CR3 memorizza gli indicatori dello stato del processore comuni a tutte le attività. Il registro CR0 ha i seguenti bit:

0. PE – Abilitazione protezione. Flag di modalità protetta. Se PE=1, la modalità operativa del processore è protetta.

1. MP – Presente matematico. Flag della presenza di un coprocessore matematico. Se MP=1, allora è presente il coprocessore matematico.

2. EM – Emula estensione numerica. Flag per emulare comandi su numeri in virgola mobile. Quando il flag è impostato, i comandi per lavorare con i numeri reali possono essere emulati nel software.

3. TS – Attività cambiata. Flag di cambio attività. Il flag viene impostato dopo il passaggio dell'attività.

4. ET – Tipo di estensione. Flag del tipo di estensione. Impostato se è presente un coprocessore aritmetico 387 o superiore.

5. NE – Abilitazione errore numerico. Flag di abilitazione errore coprocessore. Se il flag è impostato, in caso di errore nel coprocessore viene generata la situazione di eccezione 16.

16. WP – Protezione da scrittura. Flag di protezione dalla scrittura. Se il flag è impostato, le pagine di memoria vengono assegnate al kernel del sistema operativo in modalità di sola lettura.

18. AM – Maschera di allineamento. Flag di mascheramento dell'allineamento. Quando il flag è impostato, se si accede a operandi non allineati, verrà generata l'eccezione 17. Se il flag viene cancellato, l'eccezione verrà mascherata.

29. NW – Non write-through. Flag per vietare il write-through.

30. CD – Disabilita cache. Disabilita il flag di memorizzazione nella cache.

31. PG – Abilitazione cercapersone. Flag della modalità di paginazione della memoria. Quando il flag è impostato, il sistema operativo funziona in modalità paging della memoria.

I restanti bit del registro CR0 sono riservati.

Il registro CR1 è riservato. Il registro CR2 memorizza l'indirizzo lineare a 32 bit in cui si è verificato l'errore della pagina di memoria. I 20 bit più significativi del registro CR3 memorizzano l'indirizzo fisico di base della tabella delle directory delle pagine e i bit di controllo della cache. Il registro CR4 contiene i bit di abilitazione dell'estensione architetturale MP. In generale, questi registri vengono utilizzati nella programmazione del sistema e impostano la modalità operativa del processore (normale, protetta, ecc.), l'impaginazione della memoria, ecc.

Registri degli indirizzi di sistema. I registri del puntatore di sistema della tabella descrittore globale GDTR e della tabella di interruzione IDTR memorizzano rispettivamente indirizzi di base a 32 bit e limiti di tabella a 16 bit. I registri dei segmenti di sistema TR e della tabella descrittore locale LDTR sono selettori a 16 bit. Questi corrispondono ai registri descrittori ombra, che contengono un indirizzo base del segmento a 32 bit, un limite a 20 bit e un byte di autorizzazione di accesso.

Nei registri di debug DR0-DR3 contiene indirizzi di punti di interruzione a 32 bit in modalità debug; DR4–DR5 sono riservati e non utilizzati; DR6 visualizza lo stato del punto di riferimento; DR7 – gestisce il posizionamento dei punti di controllo nel programma.

Registri di prova I TR fanno parte del gruppo dei registri specifici del modello, la loro composizione e numero dipendono dal tipo di processore: l'MP 386 utilizza due registri TR6 e TR7 per controllare il sistema di paging di allocazione della memoria da parte del sistema operativo. Pentium II e versioni successive utilizzano dodici registri TR1–TR12. Questo gruppo di registri contiene anche i risultati dei test MP e della memoria cache.

L'articolo rivela il significato del termine “64 bit”. L'articolo esamina brevemente la storia dello sviluppo dei sistemi a 64 bit, descrive i processori a 64 bit attualmente più comuni dell'architettura Intel 64 e il sistema operativo Windows a 64 bit.

introduzione

Nell'ambito dell'architettura informatica, il termine "64 bit" si riferisce a numeri interi a 64 bit e altri tipi di dati con dimensioni di 64 bit. I sistemi "64 bit" possono riferirsi ad architetture di microprocessori a 64 bit (ad esempio, EM64T, IA-64) o sistemi operativi a 64 bit (ad esempio, Windows XP Professional x64 Edition). Possiamo parlare di compilatori che generano codice di programma a 64 bit.

Questo articolo discuterà vari problemi relativi alle tecnologie a 64 bit. L'articolo è destinato ai programmatori che desiderano iniziare a sviluppare programmi a 64 bit ed è rivolto agli sviluppatori Windows, poiché per loro la questione della conoscenza dei sistemi a 64 bit è la più rilevante.

Storia dei sistemi a 64 bit

La tecnologia a 64 bit è entrata solo di recente nella vita della maggior parte degli utenti e dei programmatori di applicazioni. Tuttavia, lavorare con dati a 64 bit ha una lunga storia.

1961: IBM rilascia il supercomputer IBM 7030 Stretch, che utilizza parole di dati a 64 bit e istruzioni macchina a 32 o 64 bit.

1974: Control Data Corporation lancia il supercomputer vettoriale CDC Star-100, che utilizza un'architettura word a 64 bit (i precedenti sistemi CDC avevano un'architettura a 60 bit).

1976: Cray Research rilascia il primo supercomputer, il Cray-1, che implementa un'architettura word a 64 bit e servirà come base per tutti i successivi supercomputer vettoriali Cray.

1985: Cray rilascia UNICOS, la prima implementazione a 64 bit del sistema operativo Unix.

1991: MIPS Technologies produce il primo processore a 64 bit, l'R4000, che implementa la terza modifica dell'architettura MIPS dell'azienda. Questo processore viene utilizzato nelle workstation grafiche SGI a partire dal modello IRIS Crimson. Kendall Square Research rilascia il suo primo supercomputer, il KSR1, basato sulla sua architettura RISC proprietaria a 64 bit che esegue il sistema operativo OSF/1.

1992: Digital Equipment Corporation (DEC) introduce l'architettura Alpha interamente a 64 bit, frutto dell'ingegno del progetto PRISM.

1993: DEC rilascia il sistema operativo simile a Unix a 64 bit DEC OSF/1 AXP (successivamente ribattezzato Tru64 UNIX) per i suoi sistemi con architettura Alpha.

1994: Intel annuncia l'intenzione di sviluppare un'architettura IA-64 a 64 bit (con Hewlett-Packard) come successore dei processori IA-32 a 32 bit. La data di uscita è fissata per il 1998-1999. SGI rilascia IRIX 6.0 con supporto a 64 bit per il chipset R8000.

1995: Sun lancia la famiglia di processori SPARC UltraSPARC a 64 bit. HAL Computer Systems, una filiale di Fujitsu, lancia workstation basate sul processore SPARC64 a 64 bit di prima generazione, sviluppato in modo indipendente da HAL. IBM produce i microprocessori A10 e A30, nonché i processori PowerPC AS a 64 bit. IBM sta inoltre rilasciando un aggiornamento a 64 bit per il sistema AS/400 in grado di trasformare il sistema operativo, i database e le applicazioni.

1996: Nintendo presenta la console per videogiochi Nintendo 64, basata sul più economico MIPS R4000. HP rilascia un'implementazione 2.0 a 64 bit della propria architettura PA-RISC PA-8000.

1997: IBM lancia la linea RS64 di processori PowerPC/PowerPC AS a 64 bit.

1998: Sun rilascia Solaris 7 con supporto UltraSPARC completo a 64 bit.

1999: Intel rilascia il set di istruzioni per l'architettura IA-64. AMD annuncia pubblicamente il suo set di estensioni a 64 bit per IA-32, che ha chiamato x86-64 (successivamente ribattezzato AMD64).

2000: IBM rilascia il suo primo mainframe compatibile con ESA/390 a 64 bit, zSeries z900, nonché il nuovo sistema operativo z/OS.

2001: Intel lancia finalmente una linea di processori a 64 bit, ora chiamata Itanium, destinata ai server di fascia alta. Il progetto non è stato all'altezza delle aspettative a causa di numerosi ritardi nell'immissione sul mercato dell'IA-64. NetBSD diventa il primo sistema operativo a funzionare sul processore Intel Itanium al momento del suo rilascio. Inoltre, Microsoft rilascia anche Windows XP 64-Bit Edition per l'architettura IA-64 della famiglia Itanium, sebbene mantenga la capacità di eseguire applicazioni a 32 bit utilizzando il livello WoW64.

2003: AMD introduce le linee di processori Opteron e Athlon 64, basate sull'architettura AMD64, che è la prima architettura di processore a 64 bit basata sull'architettura x86. Apple inizia a utilizzare il processore PowerPC 970 "G5" a 64 bit di IBM. Intel afferma che la sua famiglia di processori Itanium rimarrà gli unici processori a 64 bit sviluppati internamente.

2004: in risposta al successo commerciale di AMD, Intel ammette che stavano sviluppando un clone delle estensioni AMD64, che chiamarono IA-32e (successivamente ribattezzato EM64T, e poi ancora Intel 64). Intel produce anche versioni aggiornate famiglie di processori Xeon e Pentium 4 con supporto per nuovi comandi.

2004: VIA Technologies presenta il suo processore Isaiah a 64 bit.

2005: 31 gennaio Sun rilascia Solaris 10 con supporto per processori AMD64/Intel 64. 30 aprile Microsoft rilascia Windows XP Professional x64 Edition per processori AMD64/Intel 64.

2006: Sony, IBM e Toshiba iniziano a rilasciare il processore Cell a 64 bit per PlayStation 3, server, workstation e altri dispositivi. Microsoft rilascia Windows Vista con una versione a 64 bit inclusa per i processori AMD64/Intel 64, che supporta la compatibilità a 32 bit. Tutte le applicazioni e i componenti di Windows sono a 64 bit, ma molti hanno versioni a 32 bit incluse come plug-in per motivi di compatibilità.

2009: come Windows Vista, Windows 7 di Microsoft include una versione completa a 64 bit per processori AMD64/Intel 64 e la maggior parte dei nuovi computer viene fornita con la versione a 64 bit installata per impostazione predefinita. Viene rilasciato il sistema operativo dell'azienda AppleMac OS X 10.6, "Snow Leopard" che ha un kernel a 64 bit ed è progettato per processori AMD64 / Intel 64, tuttavia questo sistema è installato per impostazione predefinita solo su alcuni degli ultimi modelli di computer Apple. Anche la maggior parte delle applicazioni fornite con Mac OS X 10.6 sono ora a 64 bit.

Puoi saperne di più sulla storia dello sviluppo dei sistemi a 64 bit nell'articolo di John Masha "La lunga strada verso i 64 bit" e nell'articolo dell'enciclopedia su Wikipedia "64 bit".

Programmazione applicativa e sistemi a 64 bit

Al momento in cui scrivo, nel 2010, le più conosciute e diffuse sono due architetture di microprocessori a 64 bit: IA64 e Intel 64.
  1. IA-64 Architettura del microprocessore a 64 bit sviluppata congiuntamente da Intel e Hewlett Packard. Implementato nei microprocessori Itanium e Itanium 2. Per un'introduzione più dettagliata all'architettura IA-64, è possibile fare riferimento ai seguenti articoli di Wikipedia: "IA-64", "Itanium", "Itanium 2". Architettura Itanium supportata un gran numero di produttori di server: Bull, Fujitsu, Fujitsu Siemens Computers, Hitachi, HP, NEC, SGI e Unisys. Questi produttori si sono uniti a Intel e a molti sviluppatori di software per creare la Itanium Solutions Alliance, con l'obiettivo di promuovere l'architettura e accelerare il ritmo del porting del software.
  2. Intel64(AMD64 / x86-64 / x64 / EM64T) - questa architettura è un'estensione dell'architettura x86 con piena compatibilità con le versioni precedenti. Esistono molte opzioni per il nome di questa architettura, il che crea confusione, anche se, in realtà, tutti questi nomi significano la stessa cosa: x86-64, AA-64, Hammer Architecture, AMD64, Yamhill Technology, EM64T, IA-32e , Intel 64, x64. Puoi saperne di più su come sono nati così tanti nomi nell'articolo di Wikipedia: "X86-64". I processori con architettura Intel 64 sono ampiamente utilizzati nei personal computer. E molto probabilmente il tuo computer è dotato di un processore con questa architettura.
È importante comprendere che IA-64 e Intel 64 (AMD64) sono architetture di microprocessori completamente diverse e incompatibili tra loro. Più avanti nell'articolo considereremo solo l'architettura Intel 64 (x64 / AMD64), poiché è più popolare tra gli sviluppatori di applicazioni Software per il sistema operativo Windows. In breve, il modello software Intel 64 disponibile per un programmatore su un sistema Windows a 64 bit si chiama Win64.

Architettura Intel 64 (AMD64).

L'architettura Intel 64 in questione è un'estensione semplice ma potente retrocompatibile dell'architettura industriale legacy x86. Aggiunge spazio di indirizzi a 64 bit ed espande le risorse di registro per supportare maggiori prestazioni per i programmi ricompilati a 64 bit. L'architettura fornisce supporto per codici applicativi e sistemi operativi legacy a 16 e 32 bit senza modifiche o ricompilazioni.

Una caratteristica distintiva di Intel 64 è il supporto per sedici registri per uso generale a 64 bit (x86-32 aveva otto registri a 32 bit). Aritmetica a 64 bit e operazioni logiche su numeri interi. Sono supportati gli indirizzi virtuali a 64 bit. Per indirizzare i nuovi registri per i comandi sono stati introdotti i “prefissi estensione registro”, per i quali è stato selezionato l'intervallo di codici 40h-4Fh, utilizzato per i comandi INC<регистр>e DIC<регистр>nelle modalità a 32 e 16 bit. Le istruzioni INC e DEC in modalità a 64 bit devono essere codificate in una forma più generale, a due byte.

Registri:

16 registri interi per uso generale a 64 bit (RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP, R8 - R15),
8 registri in virgola mobile a 80 bit (ST0 - ST7),
8 registri Estensioni Multimediali a 64 bit (MM0 - MM7, condividono lo spazio con i registri ST0 - ST7),
16 registri SSE a 128 bit (XMM0 - XMM15),
Puntatore RIP a 64 bit e registro flag RFLAGS a 64 bit.

La necessità di un'architettura a 64 bit è determinata dalle applicazioni che richiedono un ampio spazio di indirizzi. Innanzitutto si tratta di server ad alte prestazioni, sistemi di gestione di database, CAD e, ovviamente, giochi. Tali applicazioni trarranno notevoli vantaggi dallo spazio degli indirizzi a 64 bit e dall'aumento del numero di registri. Il numero limitato di registri disponibili nell'architettura x86 legacy limita le prestazioni nelle attività di elaborazione. Il maggior numero di registri fornisce prestazioni sufficienti per molte applicazioni.

Sottolineiamo i principali vantaggi dell'architettura x86-64:

  • spazio degli indirizzi a 64 bit;
  • set esteso di registri;
  • una serie di comandi familiari agli sviluppatori;
  • la possibilità di eseguire vecchie applicazioni a 32 bit su un sistema operativo a 64 bit;
  • capacità di utilizzare sistemi operativi a 32 bit.

Sistemi operativi a 64 bit

Quasi tutti i sistemi operativi moderni ora dispongono di versioni per l'architettura Intel 64. Microsoft, ad esempio, fornisce Windows XP x64. Principali sviluppatori Sistemi UNIX Forniscono anche versioni a 64 bit, come Linux Debian 3.5 x86-64. Tuttavia, ciò non significa che tutto il codice di un tale sistema sia completamente a 64 bit. Parte del codice del sistema operativo e molte applicazioni potrebbero rimanere a 32 bit, poiché Intel 64 fornisce compatibilità con le applicazioni a 32 bit. Ad esempio, 64 bit Versione di Windows utilizza una modalità speciale WoW64 (Windows-on-Windows 64), che traduce le chiamate da applicazioni a 32 bit in risorse di un sistema operativo a 64 bit.

WoW64

Windows su Windows a 64 bit (WoW64) è un sottosistema del sistema operativo Windows che consente di eseguire applicazioni a 32 bit su tutte le versioni a 64 bit di Windows.

Il sottosistema WoW64 non supporta i seguenti programmi:

  • programmi compilati per sistemi operativi a 16 bit;
  • Programmi in modalità kernel compilati per sistemi operativi a 32 bit.
Ci sono differenze in WoW64 a seconda dell'architettura del processore. Ad esempio, la versione a 64 bit di Windows sviluppata per il processore Intel Itanium 2 utilizza WoW64 per emulare le istruzioni x86. Questa emulazione richiede molte risorse rispetto a WoW64 per l'architettura Intel 64, poiché passa dalla modalità a 64 bit alla modalità di compatibilità durante l'esecuzione di programmi a 32 bit.

WoW64 su architettura Intel 64 (AMD64/x64) non richiede l'emulazione delle istruzioni. In questo caso, il sottosistema WoW64 emula solo un ambiente a 32 bit, a causa di un livello aggiuntivo tra l'applicazione a 32 bit e l'API Windows a 64 bit. In alcuni punti questo strato è sottile, in altri non così tanto. Per programma secondario la perdita di produttività dovuta alla presenza di tale strato sarà di circa il 2%. Per alcuni programmi questo valore potrebbe essere più alto. Il 2% non è molto, ma tieni presente che le applicazioni a 32 bit vengono eseguite leggermente più lentamente in un sistema operativo Windows a 64 bit rispetto a un ambiente a 32 bit.

La compilazione di codice a 64 bit non solo elimina la necessità di WoW64, ma fornisce anche un ulteriore incremento delle prestazioni. Ciò è dovuto ai cambiamenti dell'architettura del microprocessore, come l'aumento del numero di registri per scopi generali. Per un programma medio, puoi aspettarti un miglioramento delle prestazioni compreso tra il 5 e il 15% da una semplice ricompilazione.

A causa della presenza del livello WoW64, i programmi a 32 bit vengono eseguiti in modo meno efficiente in un ambiente a 64 bit rispetto a un ambiente a 32 bit. Tuttavia, semplici applicazioni a 32 bit possono trarre vantaggio dall'esecuzione in un ambiente a 64 bit. Probabilmente sai che un programma compilato con la chiave /LARGEADDRESSAWARE:YES può allocare fino a 3 gigabyte di memoria se il sistema operativo Windows a 32 bit viene avviato con la chiave /3gb. Quindi, lo stesso programma a 32 bit, lanciato su un sistema a 64 bit, può allocare quasi 4 GB di memoria (in pratica circa 3,5 GB).

Il sottosistema WoW64 isola i programmi a 32 bit da quelli a 64 bit reindirizzando l'accesso a file e registro. Ciò impedisce ai programmi a 32 bit di accedere accidentalmente ai dati delle applicazioni a 64 bit. Ad esempio, un'applicazione a 32 bit che esegue un file DLL dalla directory %systemroot%\System32 potrebbe accedere accidentalmente a un file DLL a 64 bit che non è compatibile con il programma a 32 bit. Per evitare ciò, il sottosistema WoW64 reindirizza l'accesso dalla cartella %systemroot%\System32 alla cartella %systemroot%\SysWOW64. Questo reindirizzamento aiuta a prevenire errori di compatibilità perché richiede un file DLL creato appositamente per funzionare con applicazioni a 32 bit.

Maggiori dettagli sui meccanismi di reindirizzamento file system e il registro può essere trovato nella sezione MSDN "Esecuzione di applicazioni a 32 bit".

Modello software Win64

Proprio come in Win32, la dimensione della pagina in Win64 è 4Kb. I primi 64Kb dello spazio degli indirizzi non vengono mai mappati, il che significa che l'indirizzo valido più piccolo è 0x10000. A differenza di Win32, le DLL di sistema vengono caricate sopra i 4 GB.

La particolarità dei compilatori per Intel 64 è che possono utilizzare in modo più efficiente i registri per passare i parametri alle funzioni, invece di utilizzare lo stack. Ciò ha permesso agli sviluppatori dell'architettura Win64 di sbarazzarsi di una cosa come una convenzione di chiamata. In Win32 puoi utilizzare diverse convenzioni: __stdcall, __cdecl, __fastcall e così via. Win64 ha una sola convenzione di chiamata. Diamo un'occhiata ad un esempio di come vengono passati quattro argomenti di tipo intero nei registri:

  • RCX: primo argomento
  • RDX: secondo argomento
  • R8: terzo argomento
  • R9: quarto argomento
Gli argomenti dopo i primi quattro numeri interi vengono passati nello stack. Per gli argomenti float vengono utilizzati i registri XMM0-XMM3 e lo stack.

La differenza nelle convenzioni di chiamata significa che non è possibile utilizzare sia il codice a 64 bit che quello a 32 bit nello stesso programma. In altre parole, se un'applicazione viene compilata per la modalità a 64 bit, anche tutte le DLL utilizzate devono essere a 64 bit.

Il passaggio dei parametri attraverso i registri è una delle innovazioni che rende i programmi a 64 bit più performanti di quelli a 32 bit. È possibile ottenere ulteriori vantaggi in termini di prestazioni utilizzando tipi di dati a 64 bit.

Spazio degli indirizzi

Sebbene un processore a 64 bit possa teoricamente indirizzare 16 exabyte di memoria (2^64), Win64 attualmente supporta 16 terabyte (2^44). Ci sono diverse ragioni per questo. I processori attuali possono accedere solo a 1 terabyte (2^40) di memoria fisica. L'architettura (ma non l'hardware) può espandere questo spazio fino a 4 petabyte (2^52). Tuttavia, in questo caso, è necessaria un'enorme quantità di memoria per le tabelle delle pagine che mappano la memoria.

Oltre a queste limitazioni, la quantità di memoria disponibile in una particolare versione del sistema operativo Windows a 64 bit dipende anche da considerazioni commerciali di Microsoft. Di seguito sono riportate le informazioni sulla quantità di memoria supportata dalle diverse versioni delle versioni a 64 bit di Windows:

Windows XP Professional - 128 GB;
Windows Server 2003, Standard - 32 Gbyte;
Windows Server 2003, Enterprise - 1 Tbyte;
Windows Server 2003, Datacenter - 1 Tbyte;
Windows Server 2008, Datacenter - 2 Tbyte;
Windows Server 2008, Enterprise - 2 Tbyte;
Windows Server 2008, Standard - 32 Gbyte;
Windows Server 2008, Server Web - 32 Gbyte;
Vista Home Basic - 8 Gbyte;
Vista Home Premium - 16 GB;
Vista Business - 128 GB;
Vista Enterprise - 128 GB;
Vista Ultimate - 128 GB;
Windows 7 Home Basic - 8 GB;
Windows 7 Home Premium - 16 GB;
Windows 7 Professional - 192 GB;
Windows 7 Enterprise - 192 GB;
Windows 7 Ultimate - 192 GB;

Sviluppo di applicazioni a 64 bit

Le problematiche relative allo sviluppo di applicazioni a 64 bit sono trattate in modo più completo nel corso "

Nel 1985 l'azienda Intel ha rilasciato un microprocessore a 32 bit, che è diventato il capostipite della famiglia IA-32. Lo sviluppo di questa famiglia ha attraversato diverse fasi, tra le quali si possono evidenziare: implementazione di un'unità di elaborazione di numeri in virgola mobile direttamente sul chip MP (microprocessore I486), introduzione MMX- tecnologie di elaborazione dati con punto fisso basato sul principio SIMD: istruzione multipla multidati(un flusso di istruzioni - molti flussi di dati) in un microprocessore Pentium MMX e lo sviluppo di questa tecnologia sui numeri in virgola mobile ( SSE - estensione SIMD in streaming), apparso per la prima volta in MP Pentium III. Tuttavia, le caratteristiche principali di questa architettura rimangono invariate fino ad oggi.

L'architettura di un microprocessore a 32 bit è significativamente diversa dall'architettura di un microprocessore a 16 bit. Alcune di queste differenze sono puramente quantitative, altre sono fondamentali.

La principale differenza esterna è l'aumento della larghezza del bus dati e del bus indirizzo a 32 bit. Ciò, a sua volta, è associato a cambiamenti nella profondità di bit degli elementi interni del microprocessore e nel meccanismo di esecuzione di determinati processi, ad esempio la formazione di un indirizzo fisico.

I registri dell'unità di elaborazione dei numeri in virgola fissa sono diventati a 32 bit. A ciascuno di essi è possibile accedere come una doppia parola (32 bit). È possibile accedere ai 16 bit inferiori di questi registri allo stesso modo di un microprocessore a 16 bit.

Nel blocco dei registri dei segmenti si sono verificati cambiamenti sia quantitativi che qualitativi. Ai quattro registri CS, DS, SS ed ES utilizzati in modalità reale se ne sono aggiunti altri due: FS e GS. Sebbene la larghezza dei registri di questo blocco rimanga la stessa (ciascuno di 16 bit), vengono utilizzati diversamente per formare l'indirizzo fisico della RAM. Quando il microprocessore funziona nella cosiddetta modalità protetta, è destinato a cercare un descrittore di segmento (descrittore) nelle tabelle di sistema corrispondenti e l'indirizzo di base e gli attributi del segmento vengono memorizzati nel descrittore. In questo caso la generazione dell'indirizzo viene effettuata dall'unità di segmentazione del gestore della memoria.

Se, oltre ai segmenti, la memoria è suddivisa anche in pagine, il calcolo finale degli indirizzi fisici viene eseguito dall'unità di controllo delle pagine.

A partire dal microprocessore I486, il chip del microprocessore include un'unità a virgola mobile che comprende otto registri a 80 bit per rappresentare i segni, le mantisse e gli esponenti di tali numeri.

Il chip del microprocessore ospita anche la memoria cache interna, che è una memoria buffer ad alta velocità appositamente organizzata progettata per archiviare le informazioni utilizzate più frequentemente (comandi e dati). In vari modelli di microprocessore, la memoria cache varia da 8 KB a 512 KB.

Il microprocessore a livello hardware supporta la modalità operativa multiprogramma del computer, ovvero la capacità di avere in memoria contemporaneamente diversi programmi pronti per l'esecuzione, che vengono avviati dal sistema operativo secondo gli algoritmi del suo funzionamento o in base a situazioni particolari che si verificano durante il funzionamento di dispositivi esterni.

Indissolubilmente legati a questa funzionalità sono i controlli di protezione della memoria che forniscono il controllo sulle interazioni non autorizzate tra i singoli programmi. Questi includono la protezione della gestione della memoria e la protezione dei privilegi.

Le caratteristiche principali del formato di istruzione esteso sono la possibilità di utilizzare qualsiasi registro di uso generale in qualsiasi modalità di indirizzamento, nonché l'aggiunta di un'altra modalità di indirizzamento: indice di base relativo con ridimensionamento. In questo caso l’indirizzo effettivo è formato come segue:

EA = (base) + (indice) scala + disp,

dove (base) è il valore del registro base; (indice) - valore del registro indice; scala - valore del fattore di scala (scala = 1,2,3,4); disp è il valore di offset codificato nel comando stesso.

Si noti che in un'architettura a 32 bit, l'indirizzo effettivo è solitamente chiamato offset, distinguendolo dall'offset codificato nell'istruzione stessa (spostamento).

Architettura bit del PC.

Il codice Win64 combina le caratteristiche principali del codice a 32 bit e include anche modifiche associate all'aumento della profondità di bit. Il programmatore ha a sua disposizione:

· Puntatori a 64 bit;

· Tipi di dati a 64 bit;

· Tipi di dati a 32 bit;

· Interfaccia API Win64.

Si noti che i tipi di dati a 32 bit non sono scomparsi con l'aumento della profondità di bit della piattaforma (così come i tipi di dati a 16 bit quando si passa a Win32). Questo perché anche nelle applicazioni a 64 bit, nella maggior parte dei casi le variabili non richiedono 8 byte di memoria, quindi l'utilizzo di tipi a 64 bit in questi casi sarebbe estremamente inefficiente. Sistema operativo sarebbe necessario aggiungere zeri ai bit più significativi per aumentare la dimensione dei dati a 8 byte (tali dati sono anche molto scomodi da leggere). Ciò comporterebbe una riduzione delle prestazioni.

I puntatori a 32 bit hanno subito un destino diverso: sono completamente scomparsi. Il fatto è che l'uso di puntatori a 32 bit impone una limitazione sulla quantità di memoria indirizzabile. Ad esempio, uno dei principali vantaggi del modello di memoria flat (che è il modello principale per la programmazione di applicazioni a 32 bit sulla piattaforma NT), che utilizza puntatori a 32 bit, è la capacità di creare segmenti fino a 4 GB. I nuovi puntatori a 64 bit offrono la possibilità di indirizzare fino a 16 TB di memoria (1 TB = 1012 MB). Questo volume è molto richiesto per le moderne applicazioni aziendali.

Le funzioni nell'API Win64 hanno subito piccole modifiche. Solo i nomi di alcuni di essi sono stati modificati per riflettere la piattaforma a 64 bit. Nella maggior parte dei casi, venivano modificati solo i tipi di parametri che erano argomenti per le chiamate di funzione. Tutti gli altri vantaggi (la possibilità di eliminare l'uso dei file di scambio, ecc.) sono associati all'aumento del volume di indirizzamento o ai nuovi tipi di dati.

Progettazione di schede di sistema. Fattore di forma

Progettazione della scheda madre del computer

Scheda madre(scheda madre inglese, MB, viene utilizzato anche il nome della scheda madre inglese - scheda principale; slang. madre, madre, scheda madre) è un complesso circuito stampato multistrato su cui sono installati i componenti principali personal computer(processore centrale, controller RAM e RAM stessa, ROM di avvio, controller delle interfacce input-output di base). Di norma, la scheda madre contiene connettori (slot) per il collegamento di controller aggiuntivi, per il collegamento dei bus USB, PCI e PCI-Express che vengono solitamente utilizzati.

processore

Il set logico di sistema (chipset inglese) è un insieme di chip che fornisce la connessione della CPU alla RAM e ai controller dei dispositivi periferici. Di norma, i moderni set logici di sistema sono costruiti sulla base di due chip VLSI: "north bridge" e "south bridge".

ponte Nord(Northbridge inglese), MCH (hub controller di memoria), controller di sistema: fornisce la connessione della CPU ai nodi utilizzando bus ad alte prestazioni: RAM, controller grafico.

Per collegare la CPU al controller di sistema è possibile utilizzare bus FSB come Hyper-Transport e SCI.

In genere, la RAM è collegata al controller di sistema. In questo caso, contiene un controller di memoria. Pertanto, il tipo di controller di sistema utilizzato dipende solitamente da volume massimo RAM, nonché la larghezza di banda del bus di memoria di un personal computer. Ma la tendenza attuale è quella di incorporare il controller RAM direttamente nella CPU (ad esempio, il controller di memoria è integrato nel processore in AMD K8 e Intel Core i7), il che semplifica le funzioni del controller di sistema e riduce la dissipazione del calore.

PCI Express viene utilizzato come bus per il collegamento di un controller grafico sulle moderne schede madri. In precedenza venivano utilizzati i bus comuni (ISA, VLB, PCI) e il bus AGP.

Ponte Sud(eng. Southbridge), ICH (hub controller I/O), controller periferico - contiene controller di dispositivi periferici ( disco rigido, Ethernet, audio), controller bus per il collegamento di dispositivi periferici (bus PCI, PCI-Express e USB), nonché controller bus a cui sono collegati dispositivi che non richiedono una larghezza di banda elevata (LPC - utilizzato per collegare la ROM di avvio; anche LPC bus utilizzato per collegare un multicontroller (inglese Super I/O) - un chip che fornisce supporto per interfacce di trasferimento dati "obsolete" a basse prestazioni: interfacce seriali e parallele, controller tastiera e mouse).

Di norma i ponti Nord e Sud vengono realizzati come chip VLSI separati, ma esistono anche soluzioni a chip singolo. È l’insieme della logica del sistema che determina tutto caratteristiche chiave scheda madre e quali dispositivi possono connettersi ad essa.

Memoria ad accesso casuale (anche memoria ad accesso casuale, RAM) - in informatica - memoria, parte del sistema di memoria del computer, a cui il processore può accedere per un'operazione (salto, spostamento, ecc.). Progettato per memorizzare temporaneamente dati e comandi necessari affinché il processore esegua le operazioni. La RAM trasmette i dati al processore direttamente o tramite la memoria cache. Ogni cella RAM ha il proprio indirizzo individuale.

La RAM può essere prodotta come unità separata o inclusa nella progettazione di un computer o microcontrollore a chip singolo.

Boot ROM: memorizza il software che viene eseguito immediatamente dopo l'accensione. In genere, la ROM di avvio contiene il BIOS, ma può anche contenere software eseguito all'interno del framework EFI.

Caratteristiche dell'architettura MP a 64 bit


5.1. Itanium2Intel

Il processore è stato sviluppato da zero e parallelamente in due versioni contemporaneamente: dagli ingegneri di Intel e Hewlett-Packard. Tuttavia, entrambi i chip erano, naturalmente, basati sulle stesse idee, poiché sono stati creati insieme, ed entrambi avrebbero dovuto diventare i fondatori della stessa famiglia. La composizione cementante era, naturalmente, un'unica ideologia che ha sostituito CISC - EPIC (Explicitly Parallel Instruction Computing) e una nuova architettura - IA-64, che include una serie di istruzioni, una descrizione dei registri e altre cose simili. Tuttavia, l'architettura è una cosa mutevole; basti ricordare come i processori CISC come 8086 e i80486, entrambi basati su 80x86, differiscono l'uno dall'altro.
È lo stesso con Merced e McKinley, Itanium e Itanium 2: entrambi costruiti sulla stessa ideologia, ma in diverse varietà di architettura. Un tempo, la stessa storia, in generale, è accaduta con Pentium e Pentium Pro. Tuttavia, entrambi avevano caratteristiche comuni, e anche queste, e EPIC è “responsabile” di questo. Innanzitutto parliamo di superscalarità su vasta scala, ovvero della capacità di eseguire più istruzioni contemporaneamente. Perché, naturalmente, il processore contiene moduli esecutivi: per operazioni con numeri interi, numeri in virgola mobile, ecc.
A differenza del Pentium e dei suoi successori, che comprendono il codice da soli, i processori EPIC fanno molto affidamento sul compilatore, che deve analizzare esso stesso il codice per trovare i posti ottimali per parallelizzarne l'esecuzione e fornire al processore queste informazioni. Questo è il motivo per cui viene utilizzato "esplicitamente": il processore stesso non dovrebbe cercare di capire cosa può essere eseguito in parallelo e cosa no, ecc. - il compilatore gli spiegherà tutto questo in anticipo. Inoltre, potenti meccanismi per prevedere le transizioni, pre-eseguire parti di codice, pre-caricare dati e cose simili: il carico sulle unità di esecuzione dovrebbe essere distribuito nel modo più uniforme possibile.
È stata radicalmente risolta la questione dei registri, il cui numero è stato aumentato più volte: in Itanium il loro numero è 128 per scopi generali (Fig. 1), 128 per la memorizzazione di numeri in virgola mobile, 8 registri di transizione e 64 responsabili per ra -bot dei meccanismi di previsione. Qui tutto è ovvio: questo numero di registri, e anche quelli realmente a 64 bit, è sufficiente per memorizzare tutti i numeri richiesti per un numero ragionevole di moduli esecutivi. Itanium, il primo membro della famiglia, ha solo cinque di questi registri: due interi, due per le operazioni di memoria e quattro per le operazioni in virgola mobile. La memoria fisica è indirizzata da numeri a 44 bit, che in realtà limita il suo volume a "soli" 17,6 Terabyte; le unità in virgola mobile funzionano con numeri in rappresentazione a 82 bit.

Intel ha abbandonato l'idea di implementare un core 80x86 a 32 bit nell'hardware, ritenendo l'utilizzo dell'area del chip troppo inefficiente. Quindi, per poter eseguire il codice Itanium 80x86, è stato creato un sistema di traduzione che converte al volo il codice 80x86 in IA-64.
Ovviamente, a parità di altre condizioni, le prestazioni di una tale soluzione saranno inferiori rispetto a un x86 puro operante alla stessa frequenza. Tuttavia, nessuno si aspettava l'esecuzione ad alta velocità dei programmi x86 da Itanium: è più probabile che il supporto per questa architettura sia un costo del periodo di transizione. Tuttavia, resta il fatto: questa famiglia non è adatta a risolvere problemi a 32 bit. Tuttavia, è improbabile che qualcuno utilizzi Itanium per tali scopi se dispone di un software a 64 bit completo.
Inoltre, l'Itanium stesso era in gran parte un progetto pilota, come il Pentium Pro, quindi il processore dovrebbe generalmente essere visto più come una dimostrazione delle capacità dell'architettura. Un tocco caratteristico è che il chipset per Itanium, 460GX, supporta solo PC100 SDRAM come memoria, questo dice qualcosa sulla velocità con cui il processore è in grado di elaborare i dati. D'altra parte, però, l'interfaccia con RAMè compensato da una cache L3 molto grande - 2 o 4 MB, che funziona alla massima frequenza del processore (733 o 800 MHz) con una larghezza di banda fino a 12,8 GB/s.
Un altro compito di Itanium era risolvere il problema con i compilatori: dopotutto, i processori EPIC, come già accennato, dipendono molto da loro. A differenza dei compilatori per processori 80x86, che non hanno quasi alcun effetto sulle loro prestazioni, i compilatori qui sono partner a pieno titolo del processore - dopotutto, gli forniscono informazioni estremamente necessarie per il lavoro e la qualità di queste dipenderà da - determinano il velocità di esecuzione di questo programma da parte del processore.
Itanium 2 è già un prodotto commercialmente molto più interessante. Creato da Hewlett-Packard, che si è fatto le ossa nella creazione di processori della serie PA-RISC a 64 bit, il chip si è rivelato molto più avanzato. Con una quantità leggermente inferiore di L3 (1,5 o 3 MB) e una frequenza leggermente superiore, 900 MHz o 1 GHz, fornisce prestazioni da una volta e mezza a due volte superiori negli stessi compiti di Itanium. È, infatti, il primo rappresentante dell'architettura IA-64.
Un'ulteriore parallelizzazione è prevista nel modo più alla moda oggi: il processore dovrà passare a due core fisici, che quasi raddoppieranno le prestazioni a un prezzo abbastanza ragionevole - almeno il risultato sarà molto più economico che con lo stesso numero di moduli dirigenti , registri, ecc., hanno cercato di ottenere su un singolo chip.

5.2. Athlon 64AMD

Prima di tutto, notiamo che il processore Athlon 64 è esattamente il processore desktop a 64 bit che AMD aveva originariamente pianificato di rilasciare. Successivamente, alla luce del rilascio dei processori Pentium 4 ad alta velocità, della comparsa di un bus da 800 MHz e della tecnologia Hyper-Threading al loro interno, AMD ha deciso urgentemente di indirizzare il singolo processore Opteron al mercato desktop, dandogli il nome Athlon 64FX. Tuttavia, l'Athlon 64 FX, a causa della sua origine server, si è rivelato costoso e poco utilizzato. È l'Athlon 64 che dovrebbe veramente far avanzare l'architettura AMD64 per un uso di massa.
Di seguito è riportata la tabella 1 con le specifiche di Athlon 64 3200+, Athlon 65 FX-51 e Athlon XP 3200+ a 64 bit:

Tabella 1

* Si noti che la memoria nell'Athlon 64 e nell'Athlon 64 FX ha un clock relativo alla frequenza core, quindi le frequenze effettive della memoria in questo caso sono 129,4, 157,1 e 200 MHz.
Infatti l'Athlon 64 differisce dal fratello maggiore Athlon 64 FX, oltre che per la forma e le dimensioni del case, solo per il controller di memoria. Sebbene allo stesso tempo entrambi i processori siano realizzati con gli stessi cristalli. Il controller di memoria dell'Athlon 64 è single-channel, e questo è sia il suo punto debole che il suo vantaggio rispetto all'Athlon 64 FX. Lo svantaggio del controller di memoria single-channel dell'Athlon 64 è ovvio: ha una larghezza di banda teorica inferiore.
Considerando che l'Athlon 64 è in grado di lavorare con la memoria DDR400, il throughput massimo del controller di memoria integrato nella CPU è di 3,2 GB al secondo. Questo è due volte inferiore alla stessa caratteristica dell'Athlon 64 FX. Il vantaggio del controller di memoria Athlon 64 è che, a differenza del controller Athlon 64 FX, supporta moduli di memoria convenzionali non registrati. Tali moduli sono più economici dei moduli di registro, hanno tempi più aggressivi e funzionano più velocemente, anche con le stesse impostazioni dei moduli di registro. Cioè, con la larghezza di banda inferiore fornita dal controller di memoria Athlon 64, il sottosistema di memoria che lo utilizza ha una latenza inferiore, che mostreremo di seguito.
AMD Athlon 64 aspetto simile a Opteron e Athlon 64 FX.
Le uniche differenze risiedono nelle marcature e nel minor numero di pin sul lato posteriore, poiché i processori Athlon 64 sono installati in schede madri con Socket 754 e non sono compatibili con le schede Socket 940 progettate per le famiglie di CPU Athlon 64 FX e Opteron.
Oltre alle funzionalità sopra elencate, i nuovi processori Athlon 64 ne hanno un'altra. Questi processori supportano la tecnologia Cool'n'Quiet, da cui in realtà proviene opzioni mobili deputato. In sostanza, Cool'n'Quiet è una sorta di tecnologia di risparmio energetico PowerNow!, utilizzata da tempo negli MP mobili di AMD. Ma ora questa tecnologia è finalmente arrivata ai processori desktop dell'azienda. Il supporto Cool'n'Quiet è un altro vantaggio dell'Athlon 64 rispetto all'Athlon 64 FX/Opteron, che non hanno ancora tecnologie simili. AMD presta da tempo molta attenzione alla riduzione del livello di dissipazione del calore dei suoi processori desktop.
Va detto che l'azienda è da tempo superiore a Intel in questo senso: i vecchi modelli di processori AMD generano molto meno calore con carico massimo rispetto ai vecchi modelli Pentium 4. Inoltre, i processori utilizzano tecnologie che riducono la generazione di calore anche a carichi bassi. Altre famiglie di parlamentari
I sistemi Athlon XP avevano la capacità di entrare in “modalità standby” (Halt/Stop Grant) durante l'esecuzione del comando HALT, il che comportava una diminuzione della temperatura del processore quando il carico era inferiore al 100%. Tuttavia, ora AMD è andata ancora oltre. I nuovi processori Athlon 64 presentano uno schema di riduzione del calore ancora più intelligente.
Oltre agli stati Halt/Stop Grant, l'Athlon 64 può reimpostare la velocità di clock e la tensione di alimentazione per ridurre ulteriormente la dissipazione del calore. Quando si utilizza questa tecnologia, la frequenza dell'orologio MP è controllata dal driver del processore, che la ripristina o la aumenta in base ai dati relativi al suo carico. Infatti, se il processore fa fronte pienamente al lavoro assegnatogli e il suo carico è molto inferiore al 100%, è possibile ridurre la frequenza di clock senza danneggiare il funzionamento del sistema nel suo insieme: ciò non influirà sul funzionamento di il sistema in alcun modo. Ad esempio, quando è inattivo, si lavora nelle applicazioni per ufficio, si guarda video, si deframmenta dischi e si svolgono attività simili, la potenza del processore non viene utilizzata completamente. È in questi casi che il driver del processore commuta l'Athlon 64 ad una velocità clock inferiore. Quando sono richieste le massime prestazioni dal processore, ad esempio nei giochi, durante la risoluzione di problemi di calcolo, nelle attività di codifica dei dati, ecc., La frequenza del processore aumenta al suo valore nominale. Questo è esattamente il modo in cui funziona la tecnologia Cool’n’Quiet.
In pratica sembra così. In condizioni normali, con un carico MP minimo, il driver del processore ripristina la frequenza dell'Athlon 64 3200+ dallo standard 2 GHz a 800 MHz. La tensione di alimentazione del processore viene quindi ridotta a 1,3 V. Come puoi vedere, la frequenza di clock viene ridotta riducendo il moltiplicatore del processore a 4x. Ciò, tra l'altro, è dovuto anche al fatto che i processori Athlon 64 3200+ vengono forniti con un moltiplicatore non fisso. In questa modalità, il processore continua a funzionare finché il suo carico non supera il 70-80%. In particolare, siamo riusciti a eseguire la deframmentazione del disco, la riproduzione di file mp3 (file audio) e la visualizzazione di MPEG-4 (file video) allo stesso tempo, mentre il processore ha continuato a funzionare a 800 MHz.
Quando il carico sul processore Athlon 64 a una frequenza di 800 MHz supera il limite consentito, il driver passa l'MP allo stato successivo, in cui la frequenza dell'Athlon 64 3200+ è 1,8 GHz e la tensione di alimentazione è 1,4 V. Ciò si ottiene nuovamente riducendo il moltiplicatore, questa volta a 9x. E solo se in questo caso il carico del processore risulta nuovamente eccessivamente elevato, il driver commuta l'MP in modalità normale: frequenza 2 GHz, tensione di alimentazione – 1,5 V.
Si noti che nelle modalità con potenza e frequenza ridotte, la dissipazione del calore del processore Athlon 64 3200+ diminuisce drasticamente. Per confronto, presentiamo la Tabella 4 con la dissipazione del calore di questo processore nelle modalità principali.

Pertanto, l'uso della tecnologia Cool'n'Quiet consente di ridurre significativamente la temperatura del processore non solo durante i momenti di inattività, ma anche durante una serie di attività che non richiedono le massime prestazioni dell'MP. Ciò che è importante è che le prestazioni dell'MP nelle attività che richiedono risorse del processore non diminuiscano affatto. Di conseguenza, quando si utilizzano sistemi di raffreddamento con ventole a velocità variabile, l’uso della tecnologia Cool’n’Quiet può ridurre significativamente il livello di rumore.