cpu
giovedì 4 aprile 2013 - 2 Commenti
Statistiche su x86 & x64 – parte 3 (ISA / istruzioni a confronto)

Dopo l’analisi e i freddi numeri riportati nei precedenti articoli, passiamo a verificare il codice x86 e x64, dando un’occhiata ad alcuni spezzoni di codice e mostrando come si comportano le due architetture quando c’è da effettuare lo stesse elaborazioni, cercando riscontro a quanto detto finora.
La scelta del codice deve, però, soddisfare alcuni criteri. Dovrebbe offrire uno spaccato abbastanza comune, senza perdersi in listati chilometrici che disperdono l’attenzione e l’interesse, ma soprattutto è necessario recuperare spezzoni “uguali”, che elaborino sostanzialmente la stessa cosa, in modo da rendere semplice il confronto …

giovedì 28 marzo 2013 - 1 Commento
Statistiche su x86 & x64 – parte 2 (distribuzione per dimensione)

Proseguiamo con l’analisi del codice delle ISA x86 e x64 dal punto di vista statistico, questa volta puntando l’attenzione sulla distribuzione delle varie dimensioni delle istruzioni.
Ricordiamo che entrambe le ISA presentano opcode di lunghezza variabile, che vanno da 1 a un massimo di 15 byte. In realtà il capostipite della famiglia, l’8086, non aveva un limite vero e proprio per la lunghezza di un’istruzione, che non fosse rappresentato dalla dimensione del segmento del codice. A partire dall’80286, però, Intel ha imposto a 15 byte la lunghezza massima di un opcode.
Per …

giovedì 14 marzo 2013 - 11 Commenti
Statistiche su x86 & x64 – parte 1 (macrofamiglie di istruzioni)

La lunga serie sull’analisi dell’aspetto “legacy” di x86 e x64 si era conclusa con l’annuncio (nei commenti) di una nuova serie di articoli che avrebbero trattato queste due ISA dal punto di statistico; è arrivato il momento di mantenere fede alle promesse.
Esistono già numerosi articoli e pubblicazioni scientifiche che hanno affrontato l’argomento, ma quelli che seguiranno sono frutto di particolari studi effettuati su diversi aspetti delle istruzioni di queste architetture dal punto di vista quantitativo, ma che offrono spazio anche ad alcune riflessioni.
Parlo non a caso di architetture, distinguendo quindi …

giovedì 21 febbraio 2013 - 39 Commenti
Le console non sono più il punto di riferimento tecnologico

Ieri sera Sony ha svelato le proprie carte presentando la quarta generazione della sua console casalinga, che ovviamente verrà chiamata Playstation 4. Microsoft temporeggia ancora, mentre Nintendo questa volta ha anticipato tutti, avendo messo in vendita la sua Wii U già da un po’ di mesi.
Sebbene le specifiche non siano ancora ben chiare e definite, quelle di massima (anche della prossima XBox) che circolano ormai da tempo, e in parte rivelate, dovrebbero rispecchiare ciò che i giocatori si troveranno in mano (e si trovano già per la Wii U).
Il quadro …

giovedì 10 gennaio 2013 - 19 Commenti
Freescale (ex Motorola) “ufficializza” la fine dei PowerPC

I PowerPC sono una della famiglie di microprocessori più conosciute e apprezzate, ma il cui percorso nell’ultimo periodo è diventato molto travagliato.
Nati per volontà di Apple, Motorola e IBM, consorziate per definirne specifiche e linee guide, si sono contrapposte principalmente a Intel nel settore desktop nelle intenzioni di Apple e Motorola, per seguire poi anche altre strade: server (naturale dominio, visto che sono frutto di un adattamento della famiglia POWER di IBM), supercomputer, embedded e perfino nelle console di recente.
Il periodo di splendore era dovuto al fatto che i CISC, …

giovedì 8 novembre 2012 - 18 Commenti
Il legacy di x86 & x64 – parte 9 (conclusioni)

Dopo aver sezionato l’architettura x86 a caccia di elementi che possano essere classificati come legacy, è arrivato il momento di chiudere questa lunga serie di articoli con una sintesi e alcune riflessioni sull’argomento, riprendendo anche in parte quanto elaborato nel precedente pezzo sulle unità SIMD, che rappresenta una sorta di cartina al tornasole della situazione.
Ripropongo, per comodità, tutti i link ai precedenti otto articoli:
parte 1 (istruzioni 8086)
parte 2 (istruzioni 80186+)
parte 3 (FPU x87)
parte 4 (i segmenti)
parte 5 (i selettori)
parte 6 (istruzioni privilegiate)
parte 7 (istruzioni non privilegiate)
parte 8 (SIMD: MMX, 3DNow!, …

giovedì 18 ottobre 2012 - Commenta
Il legacy di x86 & x64 – parte 8 (SIMD: MMX, 3DNow!, e… SSE)

Ci sono voluti 7 articoli per trattare di una problematica che nasce col capostipite della famiglia, l’8086, e che si è evoluta coi successori, principalmente con l’80286, ma anche con l’80386 (che ha duplicato, per i 32 bit, quanto introdotto dal precedente, per i 16 bit).
Il dubbio, sicuramente lecito, è che ci siano elementi di legacy anche nelle unità SIMD che sono state introdotte nell’architettura x86, e che quindi si trascinano anche nelle successive implementazioni.
MMX è stata la prima, e si espone a delle critiche, anche se, come abbiamo visto, …

giovedì 11 ottobre 2012 - Commenta
Il legacy di x86 & x64 – parte 7 (istruzioni non privilegiate)

Oltre alle istruzioni privilegiate, per la gestione dei selettori ne sono state introdotte poche altre da Intel che non lo sono, ma che possono essere utili in modalità utente per effettuare alcune operazioni che possono rivelarsi più o meno utili.
Fra quelle che lo sono di meno c’è sicuramente ARPL, il cui scopo è quello di “aggiustare”, se possibile, il livello di privilegio di un selettore (che può risiedere in un registro o in memoria) sulla base di un altro (che si trova in un registro) che viene utilizzato per il …

giovedì 4 ottobre 2012 - 12 Commenti
Il legacy di x86 & x64 – parte 6 (istruzioni privilegiate)

Per gestire segmenti e selettori a livello applicativo abbiamo visto che sono necessarie poche istruzioni (MOV, PUSH/POP, LDS/LES/LSS/LFS/LGS, CALL/RET, JMP, INT/INTO/IRET), peraltro inutilizzate in un modello di memoria “flat” (fatta eccezione per quelle usate per chiamare il sistema operativo).
Il s.o., invece, fa sempre uso di una parte di queste quanto meno per impostare i selettori (ormai i segmenti 8086 sono, di fatto, inutilizzati) in maniera che l’applicazione che gira nel processo/thread abbia l’ambiente configurato per poter girare, ma tutto ciò non basta per gestire l’intero sistema, per cui già a partire …

giovedì 20 settembre 2012 - Commenta
Il legacy di x86 & x64 – parte 5 (i selettori)

Nel precedente articolo è stato analizzato il funzionamento a runtime dei famigerati segmenti della famiglia di CPU x86, e posto in risalto la loro pervasività, essendo utilizzati sempre, persino nella versione a 64 bit, x64, che ne rappresenta il futuro.
I selettori sono la naturale (per x86, s’intende) evoluzione di questo meccanismo, che hanno visto la luce con l’80286, e di cui abbiamo analizzato già il funzionamento in quest’altro articolo (la cui lettura è consigliata prima di proseguire con questa).
Durante l’esecuzione valgono all’incirca le stesse considerazione fatte per i segmenti, a …