|
|
|
|
Strumenti |
17-12-2013, 00:16 | #21 | |||
Senior Member
Iscritto dal: Jan 2007
Messaggi: 5294
|
Quote:
Invece l'ISA ARM è molto più pulita, al punto che quando hanno introdotto le estensioni THUMB (che dimezzano la lunghezza media delle istruzioni) il "decoder THUMB" è in pratica uno stadio in più a "mappatura fissa" (senza stati interni) sul decoder istruzioni di ARM32. Inoltre la differenza di prestazioni "tra istruzioni a lunghezza fissa" ed "istruzioni a lunghezza variabile" dipende anche dalla semantica delle singole istruzioni e dalla presenza o meno della cache istruzioni. Ad esempio sugli ARM fu introdotta l'estensione THUMB per avere codice con compattezza comparabile a quella di cpu ad 8bit, poter fare a meno di una cache istruzioni (o usare cache istruzioni più piccole) ed avere buone prestazioni anche con bus verso la i-cache a 16bit. Ma per roba ad alte prestazioni basta avere un i-cache più grande e gran parte della differenza tra istruzioni di lunghezza fissa e variabili viene meno. E' inoltre da notare che il set d'istruzioni A64 a 64bit dei nuovi ARMv8 ha parecchie differenze rispetto al "vecchio" A32 proprio per scalare bene in prestazioni in un contesto "a 64bit" (bus dati almeno a 64bit, processi produttivi che permettono di avere minimo una certà densità, ecc. ecc.). Guardacaso alcune feature di A64 ricordano le "vecchie" cpu Alpha (il primo microprocessore a 64bit e per anni campione assoluto in termini di prestazioni per singolo core, se ricordo bene, due anni dopo che smisero di svilupparne versioni più evolute e con processo produttivo più arretrato superava ancora in prestazioni su interi e float sia gli x86 che gli Itanium). Quote:
Quote:
Fa una differenza notevole. |
|||
17-12-2013, 06:23 | #22 | |||||||||||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
Quote:
Quote:
D'altra parte è anche ovvio che sia così: Thumb ha istruzioni a 16 e 32 bit, e non usa soltanto le prime, anche se sono mediamente le più frequenti. Quote:
Quote:
Quote:
Inoltre anche senza cache istruzioni è possibile alleviare la decodifica delle istruzioni a lunghezza variabile. Persino processori CISC molto vecchi hanno una sorta di mini-buffer per le istruzioni, che consentono loro di evitare i problemi di allineamento per andare a caccia delle istruzioni (e implementare efficacemente il pipelining). In generale la cache serve soltanto per memorizzare le istruzioni. E' la logica di decodifica che si occupa di allineare lo stream delle istruzioni. Ciò si verifica anche con Thumb, che infatti è un'ISA CISC (ed è il motivo per cui la densità di codice è più elevata rispetto alla classica ISA ARM). Quote:
Le cache istruzioni esistono da 3 decadi, ma se fosse possibile aumentare a piacimento la loro dimensione, grazie alla legge di Moore oggi avremmo cache istruzioni molto più grandi rispetto a quelle disponibili. Invece non è così. Ciò precisato, la densità di codice incide sulle prestazioni perché richiede più spazio, e dunque a catena ha ripercursioni su: decoder (buffer usato per allineare le istruzioni), cache L0/L1/L2/L3/L4, memoria, e le TLB delle cache che ne sono dotate. Quote:
Senz'altro ARMv8 rappresenta un grande cambiamento per ARM, ma ha dovuto sacrificare parecchio la sua ISA per votarsi alle prestazioni. Molte caratteristiche storiche, che la contraddistingueva, sono sparite. E non ha nemmeno presentato una ISA Thumb a 64 bit (ma qui penso che sia comprensibile). Non concordo sul "contesto a 64 bit": esistevano ed esistono ISA a 32-bit che hanno molte similitudini con ARMv8 (in realtà è il contrario). Infatti ad ARM serviva un'ISA per scalare sulle prestazioni, per rendersi più competitiva su questo fronte, oltre ovviamente a poter indirizzare agevolmente più di 64 bit. Quote:
Quote:
Quote:
Quote:
D'altra parte, come dicevo prima, Thumb è un'ISA CISC, e ne condivide le problematiche, ovviamente in misura diversa perché dipende dalla struttura degli opcode che è stata adottata. I decoder paralleli esistono da tempo anche su x86, infatti. Ma si paga un certo prezzo per poterli avere. P.S. Come mai hai risposto solo su alcuni punti?
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|||||||||||
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:12.