cpu
venerdì 7 gennaio 2011 - 14 Commenti
European MS DOS 4

Sul web è facile farsi un’idea di quelli che, temporalmente, sono i principali sistemi operativi che hanno segnato la storia di Microsoft.
Si parte da Xenix, il primo sistema operativo Microsoft (sviluppato su base Unix), si passa per lo storico MS/PC DOS,  per le prime versioni dell’ambiente operativo Windows, per OS/2 e si arriva a Windows NT, alla base degli attuali OS della casa di Redmond.
Quello di cui si ha scarsa traccia, però, è di quale sia stato effettivamente il primo sistema non-Unix di Microsoft ad incorporare funzionalità multitasking, anche minimali. …

lunedì 3 gennaio 2011 - 21 Commenti
Processori superscalari out-of-order: Branch prediction (parte prima)

Dopo una lunghissima pausa (causa tapeout) eccoci di nuovo qui con una nuova puntata sull’architettura dei processori superscalari. Nell’ultimo articolo abbiamo dato uno sguardo a cosa significa fare il fetch delle istruzioni in un processore superscalare e a quali sono i principali limiti. Abbiamo visto come il disallineamento del gruppo di fetch rispetto alla cache line riduca la banda effettiva verso la memoria, e alcune strategie per combattere questo problema.
Rimane ora investigare l’altro grande problema, uno dei singoli problemi peggiori dal punto di vista delle prestazioni: le modifiche al flusso …

venerdì 22 ottobre 2010 - 11 Commenti
Faggin premiato da Obama

Abbiamo approfonditamente parlato di Federico Faggin e della nascita del primo microprocessore della storia in uno dei precedenti post.
Ci ritorniamo con grande piacere ed orgoglio visto che il presidente Obama ha premiato con la National Medal of Technology and Innovation, massimo riconoscimento USA nell’ambito dell’innovazione tecnologica, proprio il gruppo che progettò e realizzò l’i4004.
Il premio arriva a quasi 40anni da quella che è stata un’autentica rivoluzione nell’elettronica integrata e ha cambiato per sempre la storia dell’informatica mondiale. Nello specifico è stato premiato l’intero Team autore della famiglia MCS-4, quindi Federico …

venerdì 17 settembre 2010 - 6 Commenti
Processori superscalari out-of-order: lo stadio di fetch

In-order o out-of-order, superscalare o meno, il viaggio delle istruzioni all’interno di qualsiasi CPU comincia nello stesso modo: il fetch (cioè il prelevamento) delle istruzioni dalla memoria, e più precisamente dalla I-cache di primo livello.
Il numero di istruzioni che la CPU è in grado di caricare per ogni ciclo di clock è chiamata fetch bandwidth e fissa il limite massimo delle prestazioni del processore: è evidente infatti che la CPU non può eseguire più istruzioni di quelle che carica dalla memoria. Una macchina superscalare capace di eseguire s istruzioni per …

venerdì 10 settembre 2010 - 47 Commenti
Un pezzo d’Italia nei Microprocessori

Siamo abituati ad attribuire le grandi innovazioni del settore informatico ad aziende e a tecnici statunitensi, così come quelle elettroniche alle geniali menti del Sol Levante.
Purtroppo in questo walzer tra un lato e l’altro del globo, l’Italia è quasi sempre un semplice  spettatore che fatica a tenere il passo e a captare le nuove opportunità.
Eppure proprio un italiano ha accesso la fiamma che scalda il cuore dei nostri computer, il microprocessore. Si tratta di Federico Faggin, vicentino doc, laureatosi in Fisica all’università di Padova nel 1965.

Prima di raggiungere l’obiettivo accademico, …

lunedì 16 agosto 2010 - 30 Commenti
Processori superscalari out-of-order: una vista d’insieme

Finalmente, dopo una lunga peregrinazione tra pipeline semplici e diversificate, oggi comincia una nuova serie di articoli che andranno a spolpare un boccone molto più succulento: i processori superscalari out-of-order, ovvero le CPU che hanno spinto la computazione ad alte prestazioni negli ultimi 15 anni.
Nello scorso articolo abbiamo visto come avere pipeline diversificate sia l’idea vincente per ottenere maggiori prestazioni: ogni pipeline può essere ottimizzata per una particolare classe di istruzioni, può avere un numero di stadi diversi, ed è (in teoria) possibile avere molte più istruzioni in-flight (cioè in …

venerdì 2 luglio 2010 - 7 Commenti
Oltre la pipeline semplice: le pipeline diversificate

Nello scorso articolo abbiamo visto come pipeline profonde diventino rapidamente inefficienti a causa dell’aumento del numero di stalli necessari al loro corretto funzionamento, e come pipeline più corte ma più larghe (“superscalari”) possano ottenere prestazioni molto migliori ad un costo più basso.
Abbiamo anche visto come nella maggior parte dei programmi esista abbastanza ILP da alimentare queste ipotetiche “pipeline multiple”. Rimane la domanda: che aspetto hanno queste pipeline? Sono semplicemente tante pipeline semplici incollate l’una di fianco all’altra, identiche tra loro, o è qualcosa di più complicato?
Prendere la stessa pipeline semplice …

venerdì 4 giugno 2010 - 14 Commenti
ILP e pipeline: motivazioni per i processori superscalari

Il pipelining è una tecnica relativamente semplice ed estremamente efficace per aumentare le prestazioni dei processori: qualitativamente, spezzando la logica su più stadi è possibile avere più istruzioni in-flight nello stesso momento, aumentando il throughput. È però possibile analizzare in modo quantitativo questo aumento di performance. Per farlo, si può usare una delle regole base più usate nell’ambito dell’architettura dei calcolatori: la legge di Amdahl.
La legge di Amdahl
Questa “legge” prende il nome da Gene Amdahl, famoso Computer Architect uscito dalle fucine di talenti della IBM degli anni ’50/’60. La legge …

mercoledì 2 giugno 2010 - 14 Commenti
ThumbEE: da ARM una virtual machine per tutti i linguaggi

Dopo una serie di articoli sull’Amiga faccio un breve salto indietro agli ARM, poiché avevo tralasciato un argomento per chiudere (temporaneamente, in attesa che la casa inglese tiri fuori qualche altro gioiello dal cilindro) il filone dedicato a queste architetture.
Sappiamo che, oltre all’architettura “base”, cioè all’ISA a 32 bit, che rappresenta la più generale e performante incarnazione, col tempo sono arrivate delle nuove ISA a 16 bit (e non solo) per aumentare la densità del codice. Parlo di Thumb e del suo successore, Thumb-2 (quest’ultimo ha aggiunto una vagonata di …

venerdì 14 maggio 2010 - 11 Commenti

Nei precedenti articoli abbiamo visto come utilizzare una pipeline per aumentare l’efficienza di utilizzo dell’hardware e aumentare di conseguenza le prestazioni della macchina. Tuttavia, la semplice pipeline in-order soffre di una serie di limitazioni che non le permettono di sfruttare buona parte dell’Instruction-Level Parallelism (ILP) presente in un programma. Di conseguenza, le sue prestazioni non riescono a salire oltre un livello generalmente modesto, con un IPC (Instructions Per Clock) sempre minore di 1.
Il problema è che il listato assembly è una sovraspecifica del programma: l’ordine delle istruzioni specificato è condizione …