4 lezione calcolatori elettronici

7
Non abbiamo detto nulla di come si può misurare la prestazione di un sistema di calcolo. Quello che noi cercheremo di considerare sarà sempre un bilanciamento di due fattori che sono spesso in antitesi cioè: costi e prestazioni. Vediamo quindi come valutare le prestazioni. Il sistema di calcolo è chiamato al compito di risolvere un algoritmo e di effettuare una elaborazione. La prestazione come può essere misurata per questo tipo di sistemi? ( esempio del calciatore: bisogna valutare la potenza del tiro, visione di gioco, colpo di testa, dribbling, ecc.) Alle volte è difficile capire quale aspetto sia più importante in un sistema di calcolo; fortunatamente gli aspetti sono 2: un algoritmo può essere svolto correttamente o no. Se devo ordinare un vettore il risultato sarà un vettore ordinato o un vettore non ordinato. Nel caso in cui devo fare invece un algoritmo posso pensare alla tolleranza o precisione con quale il sistema svolge un calcolo: se voglio studiare come evolve la temperatura in un processo industriale e metto su un simulatore che descrive punto per punto la temperatura nel tempo in questo forno. Questo tipo di risultato può essere preciso oppure no a seconda di come intendo la precisione ( devo avere una specifica ovviamente). Posso avere un sistema che compie questi calcoli e magari ho uno che mi da un risultato più preciso rispetto l’altro. Se questo risultato dipende dall’algoritmo il sistema c’entra poco, ma se il risultato non dipende solo dall’algoritmo ma anche dalla precisione col quale il sistema fa i calcoli perché magari un processore fa i calcoli a singola precisione e l’altro a doppia e quindi ho un sistema di calcolo con un architettura più spinta allora può essere che il sistema che debba scegliere sia quello che mi da una maggior precisione. (Alle volte è l’unica soluzione) Andiamo a considerare due sistemi che hanno lo stesso livello di affidabilità. L’aspetto che diventa decisivo sulla misurazione della prestazione è quello legato al tempo con cui quel sistema effettua questo calcolo. In fondo ciò che interessa come prestazione di quel sistema è il tempo assoluto. Io utente e resto del mondo viviamo in una dimensione che è quella del tempo. Se , per esempio, sono davanti a un monitor ad aspettare il risultato questo deve essere l’attesa più breve possibile. Vediamo ora una serie di parametri che solo nel momento in cui sono direttamente legati al tempo hanno un senso. Quali sono i parametri di quel sistema che sono legati al tempo? Essendo il sistema di calcolo un apparato di elettronica digitale tutto quello che in qualche modo avviene dentro il sistema stesso

Upload: vittorio-troise

Post on 08-Dec-2015

6 views

Category:

Documents


3 download

DESCRIPTION

Appunti presi a lezione e trascritti a pc di Calcolatori Elettronici

TRANSCRIPT

Page 1: 4 Lezione Calcolatori Elettronici

Non abbiamo detto nulla di come si può misurare la prestazione di un sistema di calcolo. Quello che noi cercheremo di considerare sarà sempre un bilanciamento di due fattori che sono spesso in antitesi cioè: costi e prestazioni. Vediamo quindi come valutare le prestazioni.Il sistema di calcolo è chiamato al compito di risolvere un algoritmo e di effettuare una elaborazione. La prestazione come può essere misurata per questo tipo di sistemi? ( esempio del calciatore: bisogna valutare la potenza del tiro, visione di gioco, colpo di testa, dribbling, ecc.) Alle volte è difficile capire quale aspetto sia più importante in un sistema di calcolo; fortunatamente gli aspetti sono 2: un algoritmo può essere svolto correttamente o no. Se devo ordinare un vettore il risultato sarà un vettore ordinato o un vettore non ordinato. Nel caso in cui devo fare invece un algoritmo posso pensare alla tolleranza o precisione con quale il sistema svolge un calcolo: se voglio studiare come evolve la temperatura in un processo industriale e metto su un simulatore che descrive punto per punto la temperatura nel tempo in questo forno. Questo tipo di risultato può essere preciso oppure no a seconda di come intendo la precisione ( devo avere una specifica ovviamente). Posso avere un sistema che compie questi calcoli e magari ho uno che mi da un risultato più preciso rispetto l’altro. Se questo risultato dipende dall’algoritmo il sistema c’entra poco, ma se il risultato non dipende solo dall’algoritmo ma anche dalla precisione col quale il sistema fa i calcoli perché magari un processore fa i calcoli a singola precisione e l’altro a doppia e quindi ho un sistema di calcolo con un architettura più spinta allora può essere che il sistema che debba scegliere sia quello che mi da una maggior precisione. (Alle volte è l’unica soluzione)Andiamo a considerare due sistemi che hanno lo stesso livello di affidabilità. L’aspetto che diventa decisivo sulla misurazione della prestazione è quello legato al tempo con cui quel sistema effettua questo calcolo. In fondo ciò che interessa come prestazione di quel sistema è il tempo assoluto. Io utente e resto del mondo viviamo in una dimensione che è quella del tempo. Se , per esempio, sono davanti a un monitor ad aspettare il risultato questo deve essere l’attesa più breve possibile. Vediamo ora una serie di parametri che solo nel momento in cui sono direttamente legati al tempo hanno un senso. Quali sono i parametri di quel sistema che sono legati al tempo?Essendo il sistema di calcolo un apparato di elettronica digitale tutto quello che in qualche modo avviene dentro il sistema stesso è una commutazione di stati, cioè che gli elementi elettronici al suo interno passano da una configurazione all’altra in una conseguenza temporale. Banalmente posso pensare che se ho un registro in cui sono scritti dei valori, in un altro istante ci saranno altri valori (per esempio il PC dove ci sono gli indirizzi delle istruzioni da seguire). Quello che avviene è che il valore dei bit cambiano in continuazione a seconda degli stati che questo sistema assume. In elettronica digitale si vedrà una macchina degli stati che è il modello di un sistema che esegue una certa funzionalità in cui l’uscita di questa funzionalità non dipende solo dagli ingressi ma anche dalla situazione in cui la macchina stessa si trova (stato) e l’uscita che il sistema produce non è solo configurata nel suo risultato ma anche in un eventuale cambiamento dello stato in modo tale che in ogni stante arrivano ingressi, in ogni istante il sistema è in uno stato e l’uscita non dipende solo dall’ingresso ma da ingresso e stato in cui il sistema è. Nello stesso tempo oltre a produrre un’ uscita il sistema cambia stato. Fondamentalmente abbiamo quindi due funzioni : una che mi dice all’istante (t+1) quanto varrà lo stato e questa funzione dipende dall’ ingresso e dallo stato all’istante precedente.Quindi in un certo momento ho il sistema in uno stato, in un certo momento l’ingresso -> il sistema cambia stato e assume il valore di stato all’istante t+1. Allo stesso momento in uno stato e con un ingresso viene prodotta un’uscita . Al prossimo istante ci sarà un altro ingresso e l’uscita sarà data dall’ ingresso e dallo stato che si è creato precedentemente. (esempio del gesso: per descrivere la posizione ho bisogno di una serie di parametri di ingresso che sono velocità e l’accelerazione che in questo momento è conferita al

Page 2: 4 Lezione Calcolatori Elettronici

gesso. Ma se io conosco queste due cose non saprò la sua posizione perché mi serve anche lo stato in cui lui è. Applico input che lo fa muovere di stato in stato con una certa velocità e accelerazione).In un sistema di calcolo ho una serie di input che determinano l’uscita ma non sono solo quelli a determinarli. L’input possiamo definirlo come una certa istruzione. Se per esempio ho una istruzione che fa R1+R2 e risultato in R3, il risultato dipende da quello che il sistema era prima di fare questa operazione. Così come se ho una istruzione di salto nel momento in cui l’input è caricato in un certo punto del programma avrò una istruzione, in un altro punto del programma però se vado avanti di tot istruzioni l’istruzione sarà differente da quella trovata precedentemente.Se ho un sistema in cui do un ingresso e ho un uscita e ogni volta che do un ingresso l’uscita sarà quello a prescindere dallo stato del sistema, questa è una situazione differente da quella descritta precedentemente ovvero non conoscere solo le sollecitazioni che riceve ma anche lo stato del sistema mentre riceve quelle sollecitazioni. Ci sono sistemi che si dicono non avere memoria ovvero quello che avviene in un determinato istante dipende solo da quello che gli sta succedendo e questi sistemi sono più semplici anche elettronicamente cioè non ci sono elementi di memoria ma solo una rete combinatoria di porte logiche dove dando gli ingressi ricevo un uscita e quando voglio un’altra uscita questa verrà prodotta indipendentemente dallo stato della macchina.Elemento fondamentale è un sistema che mi fa passare da uno stato all’altro con un meccanismo che prende il nome di clock. (quando parliamo di sistemi compositi è una forzatura dire questa cosa è importante perché se tolgo una cosa non funziona più salvo non sia un accessorio il che implica che il tutto deve funzionare correttamente->quindi il clock è molto importante nel contesto che stiamo trattando.) Il clock è un segnale che fa si di dare alle varie componenti del sistema il via per compiere la prossima azione. E’ un treno di impulsi.

Ciascuno di questi impulsi segnala al sistema che può fare un nuovo passo. Questo cambiamento di stato con produzione di risultato, che dipende da come è l’attuale stato e cosa abbiamo agli ingressi, avviene in momenti discreti. Più velocemente si susseguono questi colpi di clock ( colpo di clock) e avremo un periodo del clock( intervallo di tempo più piccolo che posso osservare in una forma d’onda di quel genere affinché questo andamento venga nuovamente ripetuto.)

Page 3: 4 Lezione Calcolatori Elettronici

Un altro parametro è la frequenza che rappresenta l’inverso del periodo e si misura in Tempo^-1 e prende il nome di Hertz. Un altro modo di misurarla è dire : 1 Hertz ovvero in un secondo ho un evento, 10 Hertz in 1 secondo 10 eventi e cosi via oppure posso dire tot periodi al secondo. Ciò che capiamo è che più stretto il periodo ( o alta la frequenza ovviamente) più veloce è il clock e quindi più veloce è il sistema. Attenzione però che questa cosa può tirare in errore. In che senso? Noi non siamo interessati a vedere quanto velocemente quel sistema al suo interno fa un passo, ma ci interessa quando questo sistema produce il risultato. Non significa che se ho 10 passi in un sistema e 2 in un altro sistema allora necessariamente quello da 10 passi è più efficiente rispetto quello da 2 poiché dipende anche dal “tipo” di passi. La frequenza da sola non è descrittiva della velocità ma lo è se ho i passi coincidenti. Se ho due frequenza diverse non posso dire che quello con la più alta è più veloce, sono autorizzato a dire ciò solo se hanno la stessa architettura e quindi ho come detto prima lo stesso numero di passi. Sembra quindi che per aumentare la prestazione di un sistema basti aumentare la frequenza ma non è proprio così. Io potrei anche aumentare la frequenza di clock ( anche perché non è difficile aumentarla e avere clock a frequenze elevate non è un problema). Quando voglio dare ad un sistema una certa frequenza di funzionamento devo far si che al suo interno le cose possano cambiare durante questo piccolo intervallo. Abbiamo che tecnicamente il clock è un oggetto che “sputa” fuori sulla linea un valore di tensione alto e un valore di tensione basso. Quello che avviene è il passaggio da alto a basso dove alto dipende dallo standard con cui sta lavorando quel circuito. In un punto del sistema andiamo a misurare la tensione ( se ho 5V per esempio quello è un 1 0 avrò uno 0: non avremo mai valori precisi). Esistono delle fasce a seconda dello standard per esempio da 3 a 5 che significa 1 logico e da 0 a 2 significa 0 logico.In ogni momento misurando la tensione di un punto che può essere l’uscita di un registro o il filo di un bus capisco che è un 1 o uno 0. ( ogni istante ha i suoi valori a significare che c’è una fascia che viene presa come valore logico 1, 0 e incertezza). Perché in un sistema digitale si usa la numerazione binaria e non la classica? Perché per scrivere un numero tipo 1024 ho bisogno di 10 bit ( uno dei costi è il transistor che metto dentro) fare un registro di 10 bit è sicuramente peggio di uno di 4 bit. Apparentemente la numerazione binaria fa sprecare il triplo delle risorse.Fare la numerazione decimale non è complicato, basta prendere l’intervallo e dividerlo per 10, da 0 a 0.5 è 0,…,da 4.5 a 5 è 10.Se faccio la scelta lo faccio senza sapere come fisicamente funziona questo sistema ( numerazione decimale) ma nella realtà quando scrive 7 (3.5 volt) quando lo vado a leggere leggo 3.6 e quel 7 è diventato 8 perché il valore di tensione non è stabile né dove lo ho scritto né dove arriva. Questo perché se lo sto trasferendo nel bus questo sarà 3.5 meno qualcosa. Il segnale ha viaggiato ma non è andato dritto, si è scaricato questo perché il canale ha dei condensatori parassiti che scaricheranno la tensione. Lungo un canale infatti spedisco una certa tensione alla fine questa è diventata con una scarica di tipo RC ( tanto maggiore è la resistenza, tanto maggiore è la capacità più questa discesa è stata veloce).

Page 4: 4 Lezione Calcolatori Elettronici

Quindi se questo intervallo l’ho legato in 10 pezzi è bastato questo piccolo intervallo di tempo per far passare il 9 all’8, poi l’8 il 7 e cosi via. Se invece questo l’ho diviso in 2 rimane 1 per tutto questo intervallo di tempo. Perciò una divisione in 10 diventa molto meno precisa salvo non mantenga l’ampiezza di questi intervalli come era se avessi fatta una divisione di 2 intervalli ma significherebbe avere un certo valore al posto di 2 volte ,ben 10.Quindi se con 0.5 davo un binario, per dare la stesa affidabilità a una numerazione decimale devo dare da 0 a 25 volt-> è un problema in termini di surriscaldamento. Basti pensare che dei sistemi ingegneristici che hanno seri problemi per il raffreddamento dei componenti elettronici e quindi se voglio la stessa affidabilità devo andare a temperature maggiori ma questo è improponibile. Un vantaggio della numerazione binaria anche se spreco molto spazio consiste nella semplicità nel fare calcoli rispetto i calcoli in decimale (oltre ad avere una codifica più semplice).A parità di architettura un clock più veloce mi da migliori prestazioni ma il problema è che quel clock è un segnale che all’uscita della parte del chip che lo produce ( in quel chip c’è un oscillatore che ha un divisore in frequenza che produce tantissimi colpi di clock al secondo ma io a quella frequenza non so andare per questo faccio si che 100 di quei periodi sia un solo periodo e faccio l’operazione che prende il nome di divisore di frequenza. Ho quindi un clock che va 100 volte meno veloce dell’oscillatore che ha prodotto l’onda in primissima battuta).Questo è il segnale in uscita al divisore in frequenza.Quello che ci interessa è che il sistema dove sta produce il segnale, ciò produce ciò che è conosciuto come albero del clock, tanti canali da dove nasce il clock che lo portano a tutte le componenti. Questo canale è fatto con una certa resistenza e capacità quindi ha una sua costante RC e il segnale che parte e durante il “tragitto” si scarica. Se ho una certa costante di tempo (che può essere di diverso tipo) si presentano diverse situazioni. Infatti posso decidere quale può essere la massima frequenza che possiamo dare a quel clock conoscendo la costante di tempo. E’ bene tenere presente che nella realtà abbiamo comunque ciò che si chiama fronte di salita e fronte di discesa dato che noi pensiamo che idealmente si passa da 0 a 5 per esempio e da 5 a 0 (mentre in realtà come si vede dal grafico non abbiamo mai una linea perfettamente verticale quanto piuttosto una leggera pendenza). In più se non vado a leggere il 5 dopo un tot di tempo non leggerò niente tanto è vero che esiste un periodo di stabilizzazione. Quando do un input non vado a vedere subito il risultato ma aspetto prima che il segnale si sia stabilizzato. Sistemi con architetture differenti possono avere azioni associate al clock differenti. Ora supponiamo di avere un processore CISC ( clock 10 Hz) e un RISC (12 Hz) e supponiamo che

Page 5: 4 Lezione Calcolatori Elettronici

quello associato al colpo di clock è una istruzione. Perciò avremo 10 e 12 istruzioni al secondo e questo può sembrare di far si che il RISC risulti migliore del CISC. Però, ancora una volta, non sto guardando la velocità delle istruzioni macchina ma la velocità di come è eseguito il mio problema. Mentre nel RISC avremo più istruzioni nel CISC ce ne saranno sicuramente di meno. Quindi chi è più veloce? Non posso dare una risposta precisa ma sicuramente posso dire che il clock da solo non mi fornisce alcuna informazione.