Documento da eCampus Università su Fondamenti di Informatica. Il Pdf esplora l'architettura delle CPU, l'evoluzione dei processori e il multithreading, insieme alla storia dei sistemi operativi, dal mainframe a Unix, per il grado universitario di Informatica.
See more8 Pages
Unlock the full PDF for free
Sign up to get full access to the document and start transforming it with AI.
Corso di Laurea: Ingegneria Informatica Insegnamento: Fondamenti di Informatica Numero lezione: 8 Titolo: Sistemi Superscalari e SO Commerciali Ingegneria
Prof. Giuseppe Tradigo giuseppe.tradigo@uniecampus.it
1 C 2007 - 2016 Università degli Studi eCampus - Via Isimbardi 10 - 22060 Novedrate (Co)- C.F. 9002752130 - Tel: 031.79421 - Fax: 031.7942501 - Mail: info@uniecampus.ite CAMPUS UNIVERSITÀ Corso di Laurea: Ingegneria Informatica Insegnamento: Fondamenti di Informatica Numero lezione: 8 Titolo: Sistemi Superscalari e SO Commerciali Ingegneria
Recentemente, a causa del raggiungimento dei limiti fisici nella produzione di processori e dell'impossibilità di integrare più componenti per unità di superficie, sono state proposte modifiche o estensioni al modello di Von Neumann già studiato. Una estensione molto adottata è la possibilità di connettere più macchine in rete e di distribuire il carico di lavoro. Un'altra molto diffusa è l'aggiunta del parallelismo nel funzionamento dei microprocessori, ovvero la possibilità coordinare più processori nell'esecuzione contemporanea di un certo numero di processi. Poi esiste la possibilità di creare gerarchie di memoria (ad esempio le cache a più livelli che abbiamo visto precedentemente). L'evoluzione delle memorie secondarie (ed esempio i dischi SSD, Solid State Disk, a stato solido, che offrono velocità di accesso ai dati molto più elevate), oltre al moltiplicarsi delle periferiche disponibili sul mercato.
Anche le CPU si sono evolute. Se ad esempio guardiamo questa tabella in cui sono elencate le varie cpu che sono uscite nei vari anni ci accorgiamo come, con l'avvicinarsi al tempo presente, il numero dei transistor, la dimensione media dei bus dei dati e anche le frequenze di elaborazione delle CPU sia cresciuta in modo abbastanza importante. Questa tabella è sposta un po' nel passato, partendo dalla fine degli anni 70; solo in fondo alla tabella infatti vediamo una CPU che abbia più di un core. Il processore Core 2 Duo infatti è uno dei primi processori Intel che sul mercato consumer ha messo sul mercato una CPU con più di 1 core. Tipicamente, come abbiamo visto, i microprocessori sono usualmente identificati dalla marca del produttore (ad es. Intel, AMD, ecc.), dalle sigle che identificano caratteristiche interne (ad es. il numero di core, il numero di byte che fanno parte della cache), dalla frequenza di clock e dal parallelismo di elaborazione, ossia il numero di bit che possono essere elaborati simultaneamente.
Vediamo ora che cosa si intende per profondità di bit della CPU. Cosa vuol dire che un processore ha 16, 32 o 64 bit?
C 2007 - 2016 Università degli Studi eCampus - Via Isimbardi 10 - 22060 Novedrate (Co) - C.F. 9002752130 - Tel: 031.79421 - Fax: 031.7942501 - Mail: info@uniecampus.it 2e CAMPUS UNIVERSITÀ Corso di Laurea: Ingegneria Informatica Insegnamento: Fondamenti di Informatica Numero lezione: 8 Titolo: Sistemi Superscalari e SO Commerciali Ingegneria
Il numero di bit si riferisce alla dimensione dei registri interni utilizzati per memorizzare i dati durante l'elaborazione. I primi modelli utilizzavano 8 o 16 bit con frequenze di clock di qualche Megahertz. Attualmente i processori usano 32 o 64 bit con frequenze di Gigahertz.
L'introduzione delle superpipeline e della superscalarità serve a migliorare le performance di elaborazione delle cpu attraverso l'esecuzione parallela di istruzioni. Le Superpipeline sono pipeline interne alla CPU che sono state spinte fino a superare i 20 stadi. Ad esempio, ne esistono di specializzate per operazioni in virgola mobile o per operazioni vettoriali. Per operazioni vettoriali intendiamo operazioni, ad esempio di somma o di moltiplicazione, fra vettori oppure fra elementi matriciali. Mentre le Superpipeline migliorano la capacità e il parallelismo dell'elaborazione numerica delle CPU, la Superscalarità tenta di migliorare il parallelismo dell'esecuzione delle istruzioni. Infatti le pipeline più recenti sono in grado di elaborare due o più istruzioni contemporaneamente. Si parla quindi Instruction-level parallelism, ovvero parallelismo a livello di istruzione. Quelli che abbiamo visto finora si chiamano processori scalari. Un processore scalare può eseguire una sola istruzione alla volta per ciclo di clock. Qui invece, con l'introduzione della superscalarità, per ogni singolo ciclo di clock, più istruzioni possono essere eseguite insieme. Esistono delle limitazioni, che vedremo nella sezione successiva;
Stadio 1 Stadio 2 Stadio 3 Stadio 4 Stadio 5 Lettura registri (LR) ALU Memoria dati (MD) Scrittura registri (LR) Memoria Istruzioni (MI) Lettura registri (LR) ALU Memoria dati (MD) Scrittura registri (LR) Figura 1 - schema di una architettura superscalare in gradi di eseguire due istruzioni in parallelo.
C 2007 - 2016 Università degli Studi eCampus - Via Isimbardi 10 - 22060 Novedrate (Co)- C.F. 9002752130 - Tel: 031.79421 - Fax: 031.7942501 - Mail: info@uniecampus.it 3e CAMPUS UNIVERSITÀ Corso di Laurea: Ingegneria Informatica Insegnamento: Fondamenti di Informatica Numero lezione: 8 Titolo: Sistemi Superscalari e SO Commerciali Ingegneria
In Figura 1 possiamo vedere uno schema di una architettura superscalare che può eseguire due istruzioni in parallelo. Questo vuol dire che il ciclo fetch-decode-execute del processore viene suddiviso fra le due pipeline che si vedono in alto e in basso nella figura.
Ovviamente non tutte le istruzioni possono essere eseguite in parallelo o simultaneamente. Ad esempio, se il risultato di una istruzione deve essere usato dall'istruzione che segue, esse non possono essere eseguite insieme. È quindi importante che il processore riceva da eseguire istruzioni di tipo diverso e in maniera opportuna per sfruttare al meglio tutti gli stadi della pipeline. Facendo l'ipotesi di un sistema superscalare in grado di eseguire contemporaneamente due istruzioni, proviamo a fare un esempio con delle istruzioni di somma:
La prima istruzione aggiunge ad ax il valore contenuto in bx e salva il risultato in ax. La seconda istruzione sostituisce il valore di bx con 2. Se venissero eseguite in parallelo queste due istruzioni porterebbero il registro ax a un valore inconsistente in quanto non si potrebbe determinare se il valore finale di ax diventerebbe pari al vecchio bx oppure al valore 2, che è il nuovo valore che bx assume a seguito dell'esecuzione della seconda istruzione. Similmente, se le istruzioni da eseguire in parallelo fossero:
quale sarebbe il valore di ax? Potrebbe essere sia 0, se la prima istruzione fosse eseguita per ultima, che -1, se la seconda istruzione fosse eseguita per ultima. La scelta del numero di pipeline e del numero di stadi viene fatta dai produttori considerando il mercato cui il processore è destinato. L'efficienza finale del sistema non è un valore assoluto, ma dipenderà dall'insieme di istruzioni che statisticamente il processore dovrà eseguire e quindi dal tipo di applicazioni,
4 C 2007 - 2016 Università degli Studi eCampus - Via Isimbardi 10 - 22060 Novedrate (Co) - C.F. 9002752130 - Tel: 031.79421 - Fax: 031.7942501 - Mail: info@uniecampus.ite CAMPUS UNIVERSITÀ Corso di Laurea: Ingegneria Informatica Insegnamento: Fondamenti di Informatica Numero lezione: 8 Titolo: Sistemi Superscalari e SO Commerciali Ingegneria
tipicamente appartenenti a due macro classi: le applicazioni multimediali (audio video), in cui si eseguono molte istruzioni in poco tempo, i programmi sono brevi e l'esecuzione è molto gravosa ma in tempi ristretti; le applicazioni di servizio (server web, database) in cui i programmi che vengono eseguiti per molto tempo e il carico è costante e spesso molto elevato.
Un limite all'architettura superscalare consiste nel fatto che tutte le istruzioni in esecuzione devono appartenere allo stesso flusso di elaborazione, ovvero allo stesso processo o thread. In realtà il concetto di processo e di thread è leggermente diverso ma, per la trattazione che stiamo facendo, è sufficiente menzionarli. Quando più processi sono eseguiti in contemporanea, la CPU deve assegnare del tempo di esecuzione a rotazione a ciascun processo. In questo caso si introduce la tecnologia Simultaneous Multithreading (SM, multiprocesso simultaneo). Una CPU con tecnologia SM si annuncia al sistema operativo ad esempio come una coppia di processori
La corsa alle prestazioni, e i limiti della Legge di Moore (che vedremo più avanti), hanno portato una corsa all'incremento della frequenza di funzionamento delle CPU (frequenza di clock). Con questa soluzione, però, si incontrano dei problemi:
La soluzione è stata la creazione di CPU multicore:
C 2007 - 2016 Università degli Studi eCampus - Via Isimbardi 10 - 22060 Novedrate (Co)- C.F. 9002752130 - Tel: 031.79421 - Fax: 031.7942501 - Mail: info@uniecampus.it 5e CAMPUS UNIVERSITÀ Corso di Laurea: Ingegneria Informatica Insegnamento: Fondamenti di Informatica Numero lezione: 8 Titolo: Sistemi Superscalari e SO Commerciali Ingegneria
Lo sviluppo dei sistemi operativi commerciali è legato al tipo di hardware dei calcolatori disponibile in un certo momento. Come abbiamo visto possiamo individuare quattro stadi di sviluppo: nella prima generazione i computer erano con valvole, programmabili in modo statico via spinotti e c'era quindi un'assenza del sistema operativo; la seconda generazione vede la nascita dei transistor e sviluppo di sistemi operativi dedicati a sistemi batch; cos'è un sistema batch? È un sistema grazie a cui comandi ripetitivi sono usati per trasformare grandi quantità di dati; la terza generazione è costituita dai computer costruiti utilizzando circuiti integrati, in cui i sistemi operativi sono già adatti alla multiprogrammazione; la quarta generazione è la nascita del personal computer e diffusione delle reti e della connettività globale sulla rete Internet. È chiaro come questa evoluzione così drastica abbia richiesto l'adeguamento delle funzionalità di base offerte dai sistemi operativi per supportare le sempre nuove funzionalità richieste dall'hardware e dal software applicativo.
Fino agli anni 70 circa i computer erano costruiti esclusivamente per l'industria e le aziende di grandi dimensioni o per Università e Centri di Ricerca. A cavallo tra gli anni 70 ed 80, grazie alla tecnologia LSI (Large Scale Integration, integrazione su larga scala), sono stati costruiti chip integrati a basso costo. Questo ha favorito la diffusione di computer per la produttività personale, i Personal Computer (PC). Il che, come diretta conseguenza, portò allo sviluppo e alla diffusione di sistemi operativi per i PC
Per uno dei primi minicomputer a basso costo, il PDP-1 (che costava 120.000 dollari dell'epoca), vennero progettati numerosi sistemi operativi, uno dei quali divenne famoso: il
C 2007 - 2016 Università degli Studi eCampus - Via Isimbardi 10 - 22060 Novedrate (Co) - C.F. 9002752130 - Tel: 031.79421 - Fax: 031.7942501 - Mail: info@uniecampus.it 6