Entra

View Full Version : 64 bit veri o 64 bit falsi?


Jesus1987
23-04-2008, 00:21
ho sempre avuto dei dubbi su questa cosa

per farla breve questo è dove arrivo io:
- architettura interamente a 64 bit (tipo itanium)
- supporto alle istruzioni EM64T (tipo conroe)

allora quello che mi chiedo è:
- i nostri processori sono da definirsi a 64 bit "veri"? oppure sono una cosa diversa?

praticamente vorrei una spiegazione da n00b su questa cosa se non è chiedere troppo :stordita:

Vifani
23-04-2008, 08:27
I processori AMD64 e EM64T (cioè x86-64) sono a tutti gli effetti processori a 64 bit. La differenza sostanziale tra l'architettura Itanium e quella delle CPU AMD64/EMT64 è essenzialmente nell'ISA, non nel fatto che siano a 64 bit. Gli Itanium sono basati su un'architettura IA-64 EPIC che è molto diversa dalle architetture CISC-RISC alla base delle CPU AMD e Intel in ambito desktop.

In generale una CPU si definisce a 64 bit se ha registri a 64 bit, può gestire puntatori a 64 bit e può, quindi, indirizzare la memoria a 64 bit. Tutti i processori x86-64 hanno 8 registri in più rispetto alle CPU x86, sono in grado di indirizzare la memoria a 64 bit e sono in grado di gestire i numeri interi a 64 bit nativamente. Il tutto si traduce in:

-prestazioni superiori a causa della presenza di più registri
-prestazioni superiori in tutte le operazioni su interi a 64 bit (che prima nelle CPU 32 bit erano gestiti con due interi a 32 bit e accorpati in maniera abbastanza complessa)
-più RAM indirizzabile. Il limite prima era 4 GB, oggi è 16 EB in teoria, in pratica limitata a 256 TB perché più che sufficienti.

blade9722
23-04-2008, 08:53
I processori AMD64 e EM64T (cioè x86-64) sono a tutti gli effetti processori a 64 bit. La differenza sostanziale tra l'architettura Itanium e quella delle CPU AMD64/EMT64 è essenzialmente nell'ISA, non nel fatto che siano a 64 bit. Gli Itanium sono basati su un'architettura IA-64 EPIC che è molto diversa dalle architetture CISC-RISC alla base delle CPU AMD e Intel in ambito desktop.

In generale una CPU si definisce a 64 bit se ha registri a 64 bit, può gestire puntatori a 64 bit e può, quindi, indirizzare la memoria a 64 bit. Tutti i processori x86-64 hanno 8 registri in più rispetto alle CPU x86, sono in grado di indirizzare la memoria a 64 bit e sono in grado di gestire i numeri interi a 64 bit nativamente. Il tutto si traduce in:

-prestazioni superiori a causa della presenza di più registri
-prestazioni superiori in tutte le operazioni su interi a 64 bit (che prima nelle CPU 32 bit erano gestiti con due interi a 32 bit e accorpati in maniera abbastanza complessa)
-più RAM indirizzabile. Il limite prima era 4 GB, oggi è 16 EB in teoria, in pratica limitata a 256 TB perché più che sufficienti.

Ciao,

scusa se puntualizzo, ma ho l'impressione che la tua trattazione, seppur approfondita, non trasmetta il messaggio giusto.

Al fine di superari i limiti intrinseci dell'architettura x86, soprattutto per quanto riguarda il numero di registri (32, se non erro), pur mantenendo la retrocompatibilità, agli inizi degli anni novanta le CPU sono state caratterizzate da una nuova strategia progettuale (credo che sia stata adottata con il 486...):

- le risorse di calcolo vengono progettate con la più assoluta libertà a livello architetturale, compreso la possibilità di avere un maggior numero di registri interni ognuno con il numero di bit più adatto.

- viene poi aggiunta una interfaccia che si occupa di interpretare il codice x86 delle istruzioni e di convertirlo nelle microistruzioni compatibili con l'architettura proprietaria.

Ora, i vari pentium, PII, PIII, K6, K7 sono definiti "a 32bit" in quanto solo la parte che definisce l'architectural state (http://en.wikipedia.org/wiki/Architectural_state) è tale. Quando AMD ha introdotto le istruzioni AMD64, lo ha fatto in concomitanza del lancio del K8, quindi anche di una nuova architettura interna, e ciò ha generato un po' di confusione a riguardo. Avrebbe potuto benissimo introdurle come estensioni del K7, cosa che ha fatto Intel con il Pentium4 EM64T.

In sintesi, l'architettura interna di una CPU moderna non è ne a 32bit, nè a 64bit, ed in generale i registri possono essere diversi sia come numero che come dimensioni. L'interprete può essere a 32bit o a 64bit.

Vifani
24-04-2008, 13:27
Trovo limitante ridurre il discorso 32 bit / 64 bit alla semplice esposizione di flag. Il punto è ciò che la CPU può o non può fare. Parlare di interpreti non è, diciamo, adatto alla concezione comune di CPU a 32 bit o a 64 bit. Ecco perché io mi sono ricondotto alle capacità che contraddistinguono CPU a 32 bit piuttosto che a 64 bit.

blade9722
24-04-2008, 23:05
Trovo limitante ridurre il discorso 32 bit / 64 bit alla semplice esposizione di flag. Il punto è ciò che la CPU può o non può fare. Parlare di interpreti non è, diciamo, adatto alla concezione comune di CPU a 32 bit o a 64 bit. Ecco perché io mi sono ricondotto alle capacità che contraddistinguono CPU a 32 bit piuttosto che a 64 bit.

Parlare di interpreti non è "adatto" alla concezione comune di 32 bit / 64 bit, in quanto tale concezione non è più applicabile da circa 20 anni. Ma è un modo intuitivo di trasmettere il messaggio di come siano strutturate le CPU moderne. La domanda:


- architettura interamente a 64 bit (tipo itanium)
- supporto alle istruzioni EM64T (tipo conroe)


si basa appunto su questa concezione, che non ha più senso. A me premeva far chiarezza su questo aspetto. In tutta onestà non vedo il motivo per foraggiare l'equivoco.

Dumah Brazorf
24-04-2008, 23:19
Mi sembra di dare una risposta da niubbo... :D
I processori attuali 32-64bit eseguono codice a 64bit nativamente, le prestazioni eguagliano se non superano quelle a 32bit per cui sono la soluzione attualmente più conveniente.
Itanium aveva il piccolo problema di non poter eseguire codice a 32bit nativamente ma in emulazione con delle prestazioni ridicole.

blade9722
25-04-2008, 00:02
Mi sembra di dare una risposta da niubbo... :D
I processori attuali 32-64bit eseguono codice a 64bit nativamente, le prestazioni eguagliano se non superano quelle a 32bit per cui sono la soluzione attualmente più conveniente.
Itanium aveva il piccolo problema di non poter eseguire codice a 32bit nativamente ma in emulazione con delle prestazioni ridicole.

La risposta rientra ancora nell'equivoco per cui esisterebbero architetture "native" a 32 o 64bit, quando ormai dagli inizi degli anni 90 non è più così. Per esempio, il pentium II aveva i registri general purpose (quelli del decoder x86) a 32bit, quelli della FPU a 80bit, quelli MMX a 64bit, quelli SSE a 128bit. Dire che che sia un'architettura "nativa" a 32bit è, a mio modesto avviso, una semplificazione fuorviante. Non ne conosco i dettagli, ma se non erro l'architettura quanti-speed del K7 derivava da alcune CPU Alpha-DEC, quindi immagino che in questo caso la situazione fosse ancora più variegata.

Di solito si confonde l'architettura con il numero di bit dei registri general purpose, ma nelle CPU super scalari, in cui l'enfasi è nella possibilità di eseguire codice in contemporanea, tali registri vengono "mappati" tramite il decodificatore x86 in un numero assai più ampio di registri interni. All'atto pratico la presenza di questi registri ha il solo scopo di assicurare la compatibilità del codice, e non sono un buon indicatore dell'archiettura interna.