x86-64 Machine-Level Programming | Cerca per titolo, autore, parola chiave | ||||||||
x86-64 Machine-Level Programming Documento PDF, di Randal E. Bryant e David R. O’Hallaron, 9 Settembre 2005. Il set di istruzioni Intel IA32 ( ISA, o Instruction Set Architecture ), universalmente noto come “x86”, è il formato delle istruzioni ancora oggi dominante. IA32, infatti, è la piattaforma più usata dai sistemi operativi Windows e Linux. L'ISA utilizzata oggi fu definita nel 1985, con la nascita dei processori i386: il set di istruzioni, fu portato, dai 16 bit di partenza, utilizzati nella CPU 8086, ai 32 bit attuali. Nel corso degli anni successivi, le nuove generazioni di processori hanno introdotto nuovi formati e tipi di istruzioni, ma molti compilatori, compreso GCC, hanno evitato di utilizzarli, in nome della compatibilità. Attualmente, è in corso un graduale spostamento verso il set di istruzioni Intel a 64 bit. Sviluppato da AMD ( Advanced Micro Devices ), con il nome x86-64, questo nuovo set di istruzioni a 64 bit è, oggi, supportato da AMD ( che, oggi, lo chiama AMD64 ) e da Intel ( che lo chiama EM64T ). La gran parte di noi, lo chiama ancora “x86-64" e noi seguiremo questa convenzione. La combinazione dell'introduzione di nuovo hardware e della riscrittura dei compilatori hanno portato ad un codice x86-64 sostanzialmente diverso da quello utilizzato in IA32. Questo documento è un supplemento al capitolo 3 del testo "Computer Systems: A Programmer’s Perspective" e descrive alcune delle differenze esistenti tra l'architettura ( e il codice ) IA32 e l'architettura ( e il codice ) x86-64. La grossa limitazione imposta dall'architettura a 32 bit sul potenziamento delle capacità di un processore risiede proprio in quei 32 bit utilizzati, che restringe lo spazio degli indirizzi virtuali di memoria a 4 Giga. Oggi, è possibile acquistare RAM molto superiore a questa soglia dei 4 Giga, ma, con un sistema a 32 bit, sarebbe molto complicato utilizzare gli indirizzi al di fuori dello spazio dei 4 Giga: il programmatore, infatti, dovrebbe conservare i dati sul disco fisso, per poi trasferirli in memoria ogni volta che ne avesse bisogno. Il primo passo di Intel verso l'architettura a 64 bit furono i processori Itanium, basati sul set di istruzioni IA64. Diversamente da quanto fatto fino ad allora, da Intel, nel tentativo di conservare, nei nuovi processori, la piena compatibilità con i prodotti precedenti, l'architettura IA64, sviluppata da Hewlett-Packard e Intel, venne fondata su un approccio radicalmente diverso da quello usato in tutti i modelli precedenti. Il nuovo formato, Very Large Instruction Word ( VLIW ), permetteva di inviare istruzioni multiple, offrendo, così, la possibilità di esecuzioni parallele. L'implementazione di IA64 fu molto laboriosa e difficoltosa: i primi chip Itanium apparvero solo nel 2001 e le loro prestazioni si rivelarono, molto presto, piuttosto deludenti, almeno nel mondo reale. Nonostante le prestazioni dei sistemi Itanium venissero migliorate, la nuova tecnologia non riuscì a conquistare significative quote di mercato. Le macchine Itanium potevano anche eseguire codice a 32 bit, ma con una forte riduzione delle prestazioni. Nel frattempo, uno dei competitor di Intel, Advanced Micro Devices ( AMD ), intravvide la possibilità di sfruttare questa debolezza di Intel. Nel 2002, AMD introdusse un microprocessore a 64 bit, basato sul set di istruzioni “x86-64”, una evoluzione del set di istruzioni Intel originario, a 32 bit, completamente compatibile con l'architettura IA32, ma corredato di nuovi formati e nuove funzionalità che ne implementavano sia le potenzialità, sia le prestazioni. I processori AMD Opteron e Athlon 64 hanno ottenuto un grande successo, proprio grazie alle loro prestazioni. Intel, nel frattempo, dovette arrendersi all'idea che il passaggio da IA32 a IA64 non funzionava granchè; così, Intel introdusse la sua variante di x86-64, con l'uscita, nel 2004, dei processori Pentium 4 Xeon. Per dare un nome a questa nuova generazione di processori, Intel la descrisse come una evoluzione di IA32, chiamandola IA32-EM64T: “Enhanced Memory 64-bit Technology".
|
|||||||||
x86-64 Machine-Level Programming | Disclaimer: questo è un link a contenuti ospitati su server esterni. |