**NON CANCELLATE GLI ESONERI PASSATI** [ARCHITETTURA DEI CALCOLATORI - ESONERO 1] Tanenbaum: cap. 1.0, 2.0 Calcolatore: Esegue le istruzioni primitive che gli vengono proposte. Il linguaggio macchina è un esempio di istruzioni primitive. Architettura di VON NEUMANN: ALU + CONTROL UNIT = CPU (Central Processor Unit). L'architettura si divide in:. 1. CPU (o unità di lavoro) che si divide a sua volta in: - Unità operativa, nella quale uno dei sottosistemi più rilevanti è l'unità aritmetica e logica (o ALU) - Unità di controllo 2. Unità di memoria, intesa come memoria di lavoro o memoria principale (RAM, Random Access Memory) Unità di input, tramite la quale i dati vengono inseriti nel calcolatore per essere elaborati 3. Unità di output, necessaria affinché i dati elaborati possano essere restituiti all'operatore 4. Bus, un canale che collega tutti i componenti fra loro Tipi Di Registri: ● Registri di dati: sono usati per memorizzare numeri interi. Nelle CPU più semplici o più vecchie, uno speciale registro per i dati è l'accumulatore, usato per calcoli aritmetici. ● Registri di indirizzo: contengono gli indirizzi e sono usati per accedere alla memoria. ● Registro generico: può contenere sia dati che indirizzi. ● Registri floating-point: sono usati per memorizzare numeri a virgola mobile. ● Registri costanti: contengono dati a sola lettura (ad esempio zero, uno, pi greco, ecc.). ● Registri vettoriali: contengono dati utilizzati dalle istruzioni SIMD (Single Instruction, Multiple Data). Registri Speciali (contengono dati interni della CPU): ● Registro program counter: registro della CPU la cui funzione è quella di conservare l'indirizzo di memoria della prossima istruzione (in linguaggio macchina) da eseguire ● Registro stack pointer: contiene l'indirizzo della locazione di memoria occupata dal top dello stack per permetterne le operazioni di push, che lo incrementerà, e di pop, che farà l'inverso, per permettere le operazioni che implicano l'uso dello stack che seguono la logica LIFO ovvero che l'ultimo elemento entrante sarà il primo ad uscire ● Registro Di Stato: contiene dei flag che sono comunemente usati per confrontare e testare condizioni richieste dai programmi. ● Registro di istruzione (Instruction Register): contiene l'istruzione corrente. ● Registri indice: sono usati per modificare l'indirizzo degli operandi. 1 Passi 1. 2. 3. 4. 5. 6. 7. Della CPU (Esecuzione Dell’istruzione): Preleva Istruzione Successiva e Scrive nell'instruction Register Aggiorna il registro program counter per puntare all’istruzione seguente Determina il tipo di istruzione prelevata Determina locazione di memoria Preleva e scrive su registri interni alla cpu Esegue istruzione Vai al passo 1 Percorso Dati Di Von Neumann: Pipelining e Prefetching: Il prefetching divide l’istruzione in due parti: - Il prelievo dell’istruzione - La sua esecuzione effettiva Il pipeline invece divide l’istruzione in molte più parti (una dozzina) che possono essere eseguite in parallelo e ciascuna di queste parti è gestita da un hardware dedicato per svolgerla. Pipelining 5 Stadi: 2 Pipelining 5 Stadi Procedura: S1: Fetch dell’istruzione: Durante il primo ciclo di clock lavora sull’istruzione1 prelevandola dalla memoria S2: Decodifica l’istruzione1 mentre S1 preleva l’istruzione2 S3: preleva gli operandi per l'istruzione1, lo stadio S2 decodifica I'istruzione2 e lo stadio S1 preleva l’istruzione3 S4: esegue l’istruzione1, S3 preleva gli operandi per l'istruzione2, S2 decodifica l'istruzione3 e S1 preleva i'istruzione4 S5: scrive il risultato dell'istruzione1, mentre gli altri componenti lavorano sulle istruzioni successive Calcolatore Semplice: T=trasduttore X=utente etc=altro Architetture SuperScalari: 3 Parallelismo a Livello d‘istruzione: In questa forma il parallelismo è sfruttato nelle singole istruzioni per far sì che la macchina ne possa elaborare un maggior numero al secondo Parallelismo a Livello di processore: In questa forma il parallelismo sfrutta più processori che lavorano insieme sullo stesso tipo di problema RFID: Chip usa e getta, che non fa uso di alimentazione a batteria. Questo chip trasmette il suo numero identificativo a 128bit e serve per l'identificazione e/o memorizzazione dati automatica di oggetti, animali o persone. MicroControllore: È un dispositivo elettronico integrato su singolo chip ed utilizzato generalmente in sistemi embedded ovvero per applicazioni specifiche (special purpose) di controllo digitale come frigoriferi, microonde, sveglie digitali etc. MultiProcessore: Si intende un sistema di elaborazione (computer, workstation, server) equipaggiato con 2 o più processori operanti in parallelo in cui le elaborazioni di un processore vengono replicate e controllate da un processore gemello, per garantire l'integrità e l'esattezza dei dati. Memorie Cache: E’ una memoria temporanea non visibile al software. Ha il compito di memorizzate delle serie di “parole”che possono essere prelevate velocemente in un secondo momento. Le memorie cache si basano sul principio di località. La memoria cache è situata (a livello logico) tra la CPU e la Memoria Centrale in quanto conviene passare prima alla cache che direttamente alla memoria centrale per trovare il dato. Principio di località: Il principio dice che, se la CPU sta eseguendo un istruzione, vuol dire che con molta probabilità le prossime istruzioni da eseguire saranno poste in vicinanza di quella in esecuzione. Data Path: Il passaggio di due operandi attraverso la ALU e la memorizzazione del risultato in un nuovo registro viene detto ciclo di data path. Q 4 [ARCHITETTURA DEI CALCOLATORI - ESONERO 2] a: cap. 2.0, 2.1, 2.2, 3.0, 3.1, 3.2, 3.3, 5.1 ~~~~ Tanenbaum cap. 2.0 ~~~~ Gerarchie di memoria: La soluzione che viene usata per la memorizazione di una gran mole di dati, consiste nell’organizzare gerarchicamente la memoria. Muovendosi dall’alto verso il basso della gerarchia aumentano tre parametri chiave: - Il tempo di accesso via via più grande. - La capacità di memorizazione aumenta man mano si scende verso il basso della gerarchia ( i nastri magnetici e i dischi ottici sono scollegati dal sistema e la loro capacità è limitata dalle disponibilità economiche dell’utente - Scendendo si ha anche una diminuzione dei costi unitari Dischi magnetici: Un disco magnetico consiste in uno o più piatti di alluminio rivestiti di materiale magnetico. Originariamente il diametro dei piatti poteva raggiungere i 50 cm mentre al giorno d’oggi variano dai 3 ai 12 cm. La testina del disco contenente un solenoide, sfiora la superficie rimanendo sospesa su un cuscinetto d’aria. Quando la testina passa attraverso un’area magnetizzata, viene indotta nella testina una 5 corrente positiva o negativa che permette la lettura dei bit memorizzati. La sequenza circolare di bit scritti mentre il disco compie una rotazione completa viene chiamata traccia. Ogni traccia è divisa in un certo numero di settori, di lunghezza fissa contenenti circa 512 byte di dati e preceduti da un preambolo che permette alla testina di sincronizzarsi prima della lettura o scrittura. Dopo la lettura viene eseguito un codice, per la correzione di eventuale errori ECC ( Error Correction Code) un codice di Hamming o codice di correzione di errori multipli chiamato Reed Solomon. Tra due settori consecutivi vi è una piccola area chiamata a fisica del disco ma semplicemente una corona circolare di materispazio tra settori. Tutti i dischi hanno bracci mobili in grado di spostarsi radialmente per posizionarsi su diverse distanze rispetto al centro di rotazione del piatto. La larghezza di una traccia dipende da quanto è lunga la testina e da quanto accuratamente può essere posizionata. Occorre precisare che una traccia non è una scanalaturale magnetizzato, con piccole aree di sicurezza che la separano da quella più interna e da a quella più esterna. La densità lineare dei bit lungo le tracce è diversa dalla densità radiale ed è in gran parte determinata dalla purezza della superficie e dalla qualità d’aria. - Registrazione perpendicolare: Per raggiungere densità più elevate i produttori di dischi stanno sviluppando una tecnologia nella quale la dimensione “lunga” dei bit non è disposta lungo la circonferenza dei dischi, ma verticalmente all’interno del materiale ferro-magnetico. L’insieme di tracce con la stessa distanza dal centro è detto cilindro. Per leggere o scrivere un settore il braccio deve effettuare una ricerca (seek) - Latenza rotazionale: Il tempo necessario al settore per posizionarsi sotto la testina. A ogni disco è associato un processore dedicato, chiamato controllore del disco, i quali compiti sono: - Accettare i comandi dal software, come Read Write e Format (scrittura dei preamboli) - Controllare il movimento del braccio - Rilevare e correggere errori Floppy disk: Un piccolo supporto rimovibile, così chiamato in quanto erano fisicamente flessibili. Quando l’unità non sta leggendo ne scrivendo dati, i personal computer ritirano la testina e arrestano la rotazione per ridurre il deterioramento fisico; di conseguenza quando giunge un nuovo comando di scrittura o lettura, si verifica un ritardo di mezzo secondo prima che il motore raggiunga una velocità corretta. Dischi IDE (Integrated Drive Electronics) All’interno dei dischi Ide, il controllo è strettamente integrato con l’unità mentre prima si trovava su una scheda separata. L’indirizzamento dei settori avveniva specificando il numero della loro testina, cilindro e settore. Con la numerazione dei cilindri e delle testine che partiva da 0 e quelle dei settori da 1. I primi dischi utilizzavano 4 bit per la testina 6 per il settore e 10 per il cilindro. Le unità IDE evolsero succesivamente nelle unità EIDE ( Extended IDE) che supportavano anche un secondo schema d’indirizzamento chiamato LBA (Logic Block Addressing -> Indirizzamento Logico Dei Blocchi) , semplicemte numerava i settori a partire da 0 e fino a un massimo di 2^28 -1. Il successore dello standard EIDE fu chiamato ATA-3 ( AT Attachment, Tecnologia avanzata per la connessione) , dove AT si riferiva alla allora teconologia avanzata di una CPU a 16 bit che andava alla velocità di 8 MHZ. Nella versione succesiva lo standard fu chiamato ATAPI-4 e la velocità fu aumentata 33 MB/s (PI -> Packet Interface). Nello standard ATAPI-5 la velocità raggiunse invece i 66 MB/s, mentre nell’ATAPI-6 la dimensione di LBA fu portata a 48 bit. Lo standard ATAPI-7 usa un interfaccia chiamata Serial-ATA. 6 Dischi SCSI (1979): Non differiscono di molto rispetto gli IDE , ma hanno una diversa interfaccia e una velocità di trasferimento dati più elevata SCSI non è solo un’interfaccia per hard disk, ma è anche un bus dove possono essere collegati sette dispositivi e un controllore. Di solito il controllore funziona come iniziatore e lancia comandi ai dischi e altri dispositivi. I comandi e le risposte avvengo in fase, utilizzando vari segnali di controllo per delimitare la fase e arbitrare l’accesso ai bus quando più dispositivi tentano di usarlo nello stesso momento. Questo arbitraggio è importante in quanto SCS permette a tutti i dispositivi di funzionare contemporaneamente. Dispositivi I/O : Bus: L’organizzazione più comune consiste in una scatola metallica contenente una scheda di circuiti stampati nella parte bassa, chiamata scheda madre. La scheda madre contiene i chip della CPU, alcuni slot nei quali è possibile inserire i moduli DIMM e altri chip di supporto. Contiene un Bus stampato lungo la sua lunghezza e altre prese per inserire i connettori delle schede di I/O. Ogni dispositivo di I/O Terminali: Sono composti principalmente da due parti: la tastiera e il monitor to (capacità operativa in più processori costa meno che concentrarla in uno solo) - Resistenza ai guasti - Facilmente ampliabile Raid ( Redundant Array Of Inexpensive Disks): L’idea su cui si basa il Raid consiste nell’installare vicino al calcolatore, di solito un server di grandi dimensioni, un contenitore pieno di dischi,sostituire la scheda contenente il controllore del disco con un controllore Raid, di copiare i dati sul Raid e quindi di continuare le normali operazioni. Tutti i Raid, oltre ad apparire al software come un singolo disco, hanno la proprietà di distribuire i dati sulle diverse unità, per permettere la gestione parallela. -Raid 0: Secondo questa organizzazione il disco virtuale simulato dal Raid è visto come se ognuno dei k settori è diviso in strip (strisce), scrive sulle strip in maniera ciclica (modalità Round Robin). Il modo in cui vengono distribuiti i dati su più unità viene chiamato striping, il Raid 0 lavora meglio per le richieste di grandi dimensioni Raid 1: Duplica tutti i suoi dischi, in maniera tale che si hanno quattro dischi primari e quattro di backup. In caso di scrittura ogni strip viene scritta due volte, mentre in caso di lettura è possibile usare entrambe le copie , distribuendo il carico di lavoro su più unità. Faul Tolerance: se si rompe un disco si può semplicemente usare la copia. -Raid 2 : Funziona sulla base di una parola o di un byte, questa organizzazione presenta dei difetti in quanto la rotazione dei dischi deve essere sincronizzata e lo schema ha senso solo se si utilizza un numero significativo di unità. 7 - Raid 3: Versione semplificata del Raid 2, il bit di parità viene calcolato per ogni parola di dati e poi scritto su un apposito disco; dato che le parole di dati sono distribuite su più unità, anche in questo caso i dischi devono essere sincronizzati. -Raid 4/5: Lavorano anch’essi in base alle strip e non a singole parole con parità e inoltre non richiedono la sincronizzazione dei dischi. Il Raid 4 è come lo 0, con una parità strip by strip scritta su un disco aggiuntivo . Il Raid 5 distribuisce uniformemente i bit di parità sui tutti i dischi in modalità Round Robin. ~~~ Iazeolla cap. 2.1 / 2.2 ~~~~ LIVELLI DI ASTRAZIONE: Il livello di astrazione più basso è la macchina fisica, il livello di astrazione più alto è la macchina utente. Questi livelli servono per descrivere un sistema informatico e la loro analisi dal più basso al più alto si dice: virtualizzazione del sistema MV0: Macchina fisica MV1: Firmware (microprogramma) MV2: Macchina base (programma base) MV3: Sistema operativo MV4: Programmi applicativi MV5: La macchina programmi-di-utente LIVELLO ASTRAZIONE DEI LINGUAGGI DI PROGRAMMAZIONE: Ogni istruzione primitiva di un linguaggio L(x) (x=1,2,3,4) è realizzata da un programma L(x-1). Se ci troviamo nel livello di astrazione MV4 dove i programmi sono compilati in L4 dobbiamo però scriverli in L3 (livello di astrazione precedente). Il linguaggio C è al livello L3 quindi se scriviamo codice in C questo sarà compatibile con i livelli di astrazione successivi come MV3 (il sistema operativo è scritto appunto in C). RISORSE: MV0: Le risorse in questo livello di astrazione sono componenti fisici (elettronici/circuiti). L0 non è definito. MV1: Le risorse in questo livello sono registri interni, operatori, controllori, etc.. L1 è un linguaggio di microprogrammazione dove le istruzioni sono interpretate a livello fisico (ad esempio un 8 linguaggio L1 è il codice binario). MV2: Le risorse sono le locazioni di memoria principale e di memoria secondaria, registri dei processori, periferiche I/O, etc... L2 è un linguaggio-base o detto anche linguaggio macchina in binario che usa queste risorse (ad esempio un linguaggio L2 è l’assembly). Nell’ottica degli impianti e detta piattaforma hardware dell’impianto. MV3: A differenza della MV2 non si usano le locazioni di memoria ma gli spazi fisici, non si usano gli indirizzi dei processori ma i processori fisici nella loro interezza. Scheduler per gestire i spazi in memoria. Dispather per gestire il governo dei processori. L3 è un linguaggio detto di sistema costruito per una facile assegnazione delle risorse di sistema (ad esempio un linguaggio L3 è il C). MV4: Le risorse sono gli spazi logici di memoria e i processori logici che interpretano istruzioni in linguaggio L4 (linguaggio programmativo simbolico: basilare in assembler, evoluto in C, java, Fortran, ecc.) MV5: Le risorse in MV5 saranno sempre processori logici e spazi logici di memoria, ma di livello più astratto dei logici del livello 4, in quanto interpretano comandi scritti in linguaggio L5; linguaggio di più alto livello e sintetico, con comandi a menù ecc. L’ insieme delle macchine di livello inferiore (MVi-1,...,MV1) è detto supporto a tempo di esecuzione del linguaggio Li di Mvi. Il complesso (MV3,...,MVn-1) è detto software di sistema dell’impianto, mentre MVn è detto carico di utente o software di utente. QUINDI: impianto=piattaforma hardware+software di sistema; e il sistema informatico=impianto+carico utente. Metodi di descrizione dell’impianto: Una unità funzionale (astratta o logica) è il risultato della trasformazione della “unità base” da parte del software di sistema. Per esempio, mentre un processore fisico è un’unità di livello MV2, il corrispondente processore logico o astratto è di livello MV4. Le unità funzionali possono essere di vari tipi: Memoria (M):unità funzionale che immagazzina blocchi informativi che non contempla trasformazioni. Connessione (L): unità funzionale che trasferisce blocchi informativi da un unità all’altra, senza trasformazioni. (bus dati) Controllo (K): unità funzionale che avvia e presiede al funzionamento di altre unità dell’impianto (ad eccezione del Processor P). Switch (S): unità funzionale in grado di stabilire collegamenti multipli tra unità. Trasduttore (T): unità funzionale che modifica i blocchi informativi usati per codificare un dato messaggio informativo. (I/O) Operatore su dati (D): unità funzionale che trasforma i blocchi informativi in ingresso in blocchi informativi aventi nuovi significati. (ALU e simili) 9 Processor (P): unità funzionale che interpreta ed esegue “program step” codificati in linguaggio ad alto livello. (CPU) Al variare di queste unità funzionali in uso, del modo di interconnessione e della gestione dei blocchi informativi (b.i.), si ottengono impianti di vario tipo: centralizzati e distribuiti, locali e geografici, mono e multi programma, interattivi e real time, ecc. Nella descrizione degli impianti la X corrisponde all’utente. Per esempio un pc o una workstation possono essere rappresentati come: I:= Mcc | Ms------Pc------T------X Mcc=memoria centrale (ram) Ms=memoria secondaria (hard disk) Pp=processore periferico Pc=processore centrale (nelle descrizioni anche se unico il processore va sempre messo come centrale) S=switch Kc=controllore centrale T=trasduttore X=utente Job-flow=flusso di blocchi informativi tra le varie unità. Ogni programma o comando di utente è eseguito attraverso una serie di program step, quali: - caricamento del codice sorgente (job-flow T-Ms) - trasferimento del codice sorgente da Ms in Mcc (job-flow Ms-Mcc) - compilazione (interazione Pc-Mcc) - trasferimento codice oggetto in Ms (job-flow Mcc-Ms) - suo ri-caricamento in Mcc (job-flow Ms-Mcc) - esecuzione e produzione di risultati - trasferimento dei risultati su Ms (job-flow Mcc-Ms) - trasferimento dei risultati al T (job-flow Ms-T) ~~~~ Iazeolla: 3.1 / 3.2 / 3.3 ~~~~ [3.1 Iazeolla] Configurazione e gioverno d’impianto: La configurazione di impianto è composta da: - Tipologia: caratteristiche delle unità funzionali - Topologia: modalità di interconnessione tra le unità funzionali Per governo d’impianto si intende invece il modo in cui una architettura è utilizzata per soddisfare le esigenze degli utenti. Tipi di configurazione d’impianto: Uniprocessor: se esiste un solo processore (Pc) Multiprocessor: se esistono + processori centrali (Pc) (Capitan Ovvio) Mcc=memoria centrale (ram) Ms=memoria secondaria (hard disk) Pp=processore periferico Pc=processore centrale (nelle descrizioni anche se unico il processore va sempre messo come centrale) S=switch Kc=controllore centrale (imparatevelo a memoria!!) 10 MultiProcessore a memoria locale: perchè ogni processor ha la sua memoria locale. MultiProcessore a memoria condivisa (accedono alla stessa memoria): Considerando tutte le unità funzionali presenti nell’impianto si possono individuare impianti centralizzati e distribuiti. In genere è centralizzato tutto ciò che NON è distribuito. Quindi si dice che una configurazione è distribuita quando soddisfa 3 requisiti: 1. presenza di più processor centrali (multiprocessor) 2. presenza di una rete “computer network” (può essere LAN,MAN o WAN) 3. presenza di un software di sistema che conferisca all’impianto le seguenti proprietà: - condivisione delle risorse - apertura estensioni - simultaneità operativa - ampliabilità - tolleranza ai guasti - invisibilità (queste proprietà saranno descritte qui -->*) Gli impianti che costituiscono un impianto distribuito sono detti “nodi” o anche “host computer”. I collegamenti delle LAN o delle MAN avvengono attraverso u.f. di tipo Pp, chiamate “brigde” ; nelle WAN sono chiamate “gateway”. * Condivisione delle risorse (resource sharing): consente agli utenti residenti in un impianto componente di usare risorse residenti in un differente impianto componente. Apertura ad estensioni (openness): un impianto è tanto più aperto quanto più l’aggiunta di una 11 risorsa o una funzione non provoca interferenze con quelle esistenti, o ncessità di duplicare alcuni servizi. Un impianto distribuito deve essere dunque NECESSARIAMENTE aperto. Simultaneità operativa (concurrency): è l’esecuzione in parallelo dei vari job step o dei vari task. Ampliabilità (scalability):per ampliabilità si intende l’espandibilità dell’impianto considerando il numero d’impianti secondari connessi ad esso. In quanto in un sistema distribuito può esistere un numero potenzialmente illimitato di impianti componenti, un sistema distribuito dovrebbe godere di ampliabilità infinità. Tolleranza ai guasti (fault tolerance): è la capacità dell’impianto di comportarsi correttamente anche in presenza di guasti, o almeno di limitarne i danni. Questa proprietà si attribuisce ad un impianto attraverso 2 componenti, una software ed una hardware, ossia: l’uso di componenti hardware ridondanti (hardware redundancy, duplicazione di componenti hardware critici) e il progetto di programmi atti al recupero dagli errori (software recovery, progettare programmi critici in modo che i risulati intermedi prodotti da essi siano salvati periodicamente). Invisibilità (trasparency): nasconde all’utente la distribuzione dei servizi dell’impianto. Tipi di governo di impianto: Uni-programmati: Uni-programmato “job-by-job”: quando i lavori (job) sono completati uno per volta. Uni-programmato -batch: consente di sequenziale i vari job uno dopo l’altro facendolo entrare da una periferica T e chiamando da Ms in Mcc i necessari componenti software di sistema. L’insieme raggruppato dei lavori è detto “batch”, da qui il nome del governo. Uni-programmato batch con “spooling”: in questo tipo di governo le Pc e le Pp espletano le operazioni contemporaneamente (spooling) e soltanto uno “step” risiede in Mcc. Multi-programmati: Multi-programmato batch: se oltre ad avere uno spooling abbiamo anche che in Mcc ci sono più job-step di vari utenti. Aumenta l’utilizzazione delle unità Pc e quindi la produttività del sistema. Multi-programmato- interattivo batch: se abbiamo un multi-programmato batch con l’esistenza di terminali interattivi tra le periferiche T del sistema. Multi-processing: Tutti i governi di tipo multi-processing sono caratterizzati dalla presenza di una configurazione multi-processor. Multi-processing standard: I vari processori centrali si prendono carico di differenti job-step. Questa modalità è la più diffusa. Multi-processing client-server: alcuni processori Pc eseguono dei job-step che serviranno per eseguire altri job-step, che generano richieste e che sono eseguiti su unità diverse. Multi-processing parallela: in questa modalità i job-step vengono divisi in segmenti più piccoli (detti “task”) eseguibili in parallelo dalle varie unità P che compongono il multiprocessor. Multi-processing in rete: i job-step, e i relativi task, sono affidati a differenti impianti di rete, i quali li eseguono a loro volta in modalità client-server o parallela. Le modalità client-server, parallela e in rete sono gli elementi base per il governo a modalità distribuita (requisito 3) Altri: Memoria virtuale: è un tipo di governo della memoria è assunto dal software di sistema, perciò un utente non deve preoccuparsi di dividere un programma che non entri in Mcc. Real time: governo in cui un impianto è destinato al controllo di un processore esterno e del suo funzionamento legato ad eventi da elaborare in tempo utile (real time) rispettando alcuni stretti vincoli temporali. [3.2 Iazeolla] Impianti e configurazioni multi-processor: I vantaggi di questi impianti e configurazioni sono: - Minor cos 12 Legge di Grosch: E’ una legge formulata da Herbert Grosch negli anni 40’ che lega il costo “c” con la capacità operativa “w” di un impianto: (k=fattore tecnologico e a=parametro di Grosch) c=k*w^a dove a=0,5 con questo valore di a la stessa formula si può riscrivere come: c(w)=k* √w Perciò, più è elevata la capacità meno costa, ciò si chiamerà “economia di scala”. In questo grafico possiamo vedere una economia di scala in quanto a<1. In questo secondo grafico, invece, è mostrata una diseconomia di scala in quanto a>1. Quando a=1 la funzione sarà una retta crescente in cui non ci si troverà nè in economia nè in diseconomia di scala. Legge di Moore: Indica la capacità operativa nel tempo. Moore predisse che la capacità operativa “w” dei micro-processori sarebbe raddoppiata ogni 18 mesi, per questo nella formula : w(t)=(2^t)*w0 t è misurato in intervalli di 18 mesi. In sostanza ogni 10 anni la capacità operativa si moltiplica per 100 e perciò potremo anche scrivere w(t)=(100^t)*w0 Mettendo insieme la legge di Moore e la legge di Grosch si ottiene la seguente formula: c[w(t),t]=Kt*[w(t)]^a=Kt*[(100^t)*w0]^a Multiprocessor ideale e reale: Nella configurazione multiprocessor esiste una molteplicità di processori e di memorie e una rete di interconnessione. Le caratteristiche comuni delle strutture di interconnessione, sono il costo addizionale e la degradazione della capacità operativa. Se quindi il sistema è configurato come un multiprocessor senza l’effetto delle interconnessioni allora andremo verso quello che è chiamato “multiprocessor ideale”, vicecersa, se consideriamo un sistema multiprocessor con l’effetto delle interconnessioni (costo e riduzione della capacità operativa) si va incontro al “multiprocessor reale”. 13 [3.3 Iazeolla] Reti per impianti multiprocessor e reti per impianti distribuiti: Dipendendo dai nodi, le reti si distingueranno in: - Intraprocessor: Reti i cui nodi sono componenti interni di una data unità funzionale. - Interprocessor: reti i cui nodi sono le unità funzionali di uno stesso impianto. - Impianti distribuiti (computer networks): reti in cui i nodi sono impianti distinti. (LAN, MAN, WAN) Topologie di reti interprocessor Possono essere: -Regolari (statiche o dinamiche) -Irregolari Topologie Regolari statiche: Si dividono in: -Mono-dimensionali -Bi-dimensionali (topologia: ad anello, a stella, ad albero, ad allineamento matriciale ed ad allineamento sistolico) -Tri-dimensionali (cubo) -Ipercubiche (cubiche a più di 3 dimensioni) La scelta di una o l’altra tipologia dipende dal compromesso che si vuol raggiungere tra costo e prestazione della rete. Topologie Regolari Dinamiche: Tra le caratteristiche principali di una rete dinamica sono da citare la “connettività” e il “parallelismo”. Esistono 3 classi di topologie dinamiche: -Single-stage:consiste in un’ unica colonna di elementi di tipo S, preceduti e seguiti da elementi di tipo L. -Multi-stage: consente a qualunque processor di comunicare con qualunque modulo di memoria e con qualunque altro processor. Essa consiste di più stadi di elementi S (8x8 baseline e 8x8 Benes). -Crossbar:consente il massimo parallelismo tra coppie di link terminali ingresso/uscita. Reti per impianti distribuiti (computer networks): Sono le reti che collegano impianti diversi e appartengono a tre grandi classi: ● Local Area Networks (LAN): sono reti dove il mezzo trasmissivo è il cavo coassiale o la fibra ottica, collegando vari impianti di complessità medio-bassa. La velocità effettiva di una LAN (bandwidth logico) dipende sia dal bandwidth fisico che da altri fattori. ● Wide Area Networks (WAN): sono reti dove il mezzo trasmissivo è costituito da circuiti di comunicazione di vario tipo, che collegano impianti di complessità medio-alta, localizzati in differenti città, paesi o continenti. Gli impianti collegati sono detti “host computers”. La velocità effettiva di una wan dipende sia dal bandwidth fisico che da altri fattori. ● Metropolitan Area Networks (MAN): in questa classe di reti il mezzo trasmissivo di solito è la fibra ottica e lo scopo è il trasferimento di video, voce e dati su distanze fino a 50 km. [ARCHITETTURA DEI CALCOLATORI - ESAME FINALE] Tanenbaum: dal cap. 3.2 fino al 3.2.4 Iazeolla: cap. 3.2 (vedi appunti sopra), 3.3 (vedi appunti sopra), 4.0, 4.1, 4.2, 4.3 14 [3.2 Tanenbaum]: Il Livello logico digitale: I calcolatori odierni sono costituiti da circuiti digitali (Hardware); ogni circuito di base, se preso singolarmente, è straordinariamente semplice. Grazie all’aggregazione di circuiti di base possono essere realizzati sistemi arbitrariamente potenti e complessi. Un sistema digitale opera con segnali “discretizzati”. Nel caso dei calcolatori e, in generale, nella maggior parte dei circuiti elettronici un segnale può assumere solo 2 stati: 0 / FALSO 1 / VERO / [0...1] Volt / [2...5] Volt I mattoncini di base dei circuiti digitali sono le cosidette porte logiche (gate), ovvero semplici circuiti in grado di calcolare le principali operazioni dell’algebra Booleana Dal punto di vista elettronico, le porte logiche sono realizzate con elementi attivi chiamati “Transistor” che operano come interruttori automatici. Un segnale sulla base ha l’effetto di mettere in comunicazione diretta emettitore e collettore (che in stato di riposo sono elettricamente isolati). Le 5 Porte Logiche di Base: Una tabella della verità, è una tabella dove viene indicato l’output di un particolare circuito per ogni possibile configurazione di input. le 5 porte porte logiche di base sono: ● ● ● ● ● La porta NOT (invertitore): inverte (o nega) il segnale di ingresso. La porta AND: ha output vero solo se entrambi gli input sono veri. La porta OR: ha output vero solo se almeno uno dei 2 input è vero. La porta NAND: equivale a un AND la cui uscita è negata (l’output è falso solo se entrambi gli input sono veri). La porta NOR: equivale a un OR la cui uscita è negata (l’output è vero solo se entrambi gli input sono falsi). Circuiti digitali e Algebra Booleana: L’output di un circuito digitale può essere descritto, oltre che da una tabella della verità, anche come una funzione booleana dei suoi input: In generale si può descrivere una funzione di N variabili dando come output la “somma” (OR) di al massimo 2n termini prodotto (AND) di N variabili. [4.1 Iazeolla]: Caratterizzazione della prestazione è l’identificazione dei principali attributi prestazionali dei singoli componenti (unità funzionali e rete) di un impianto, ma da cui dipendono le prestazioni di tutto l’impianto. Per unità funzionali si intende: 15 M=memoria (ram) L = connessione P=processor S=switch K=controllore D=Operatore dati T=trasduttore Una unità funzionale è il risultato dell’unità fisica ad opera del software di sistema e applicativo La caratterizzazione dei singoli componenti è più semplice di quella di quella dell’intero impianto in quanto bisogna introdurre modelli matematici e tecniche risolutive per l’intero impianto. [4.2 Iazeolla - Caratterizzazione del processore]: La caratterizzazione delle prestazioni di una CPU consiste in diverse scelte, esse si distinguono in tra il miglioramento della caratterizzazione della cpu esistente alla configurazione dell’impianto. La maggiore difficoltà nel non avere un singolo indice di prestazione in quanto gli attributi della cpu sono molteplici: - velocità operativa - memoria indirizzabile - canali (processori periferici) - cache. Un indice che possa raggruppare tutti questi attributi è detto multiattributo (o indice di prestazione relativa). Questo indice è un valore numerico non-dimensionale che consente di paragonare diverse cpu (ottenuto in modo sperimentale o analitico). Il modo sperimentale si chiama benchmarking, un carico sintetico ad hoc che, fatto eseguire su varie cpu, consente di paragonare le prestazioni rispetto a date classi di applicativi. È molto costoso e poco obiettivo in quanto richiede l’esecuzione su campo e la disponibilità di benchmark. Il metodo alternativo è quello di avere dati forniti dal costruttore e di generale accessibilità. Con esso gli attributi fisici della cpu entrano, con diverso peso, in un’espressione matematica il cui risultato fornisce l’indice numerico cercato. Anche questo è un metodo sperimentale, ovvero dati statici nacessari ad ottenere i pesi (coefficenti moltiplicativi) dei fattori dell’espressione. Il metodo deve raccogliere diverse cpu attualmente disponibili sul mercato e in una data epoca. Attributi CPU: L’analisi di regressione (o fattoriale) è uno strumento statico e consente di valutare l’efetto di vari fattori (variabili indipentendi) su un dati indice (variabili dipendenti). Gli attributi sono: - tempo di cicli di macchina (MCYT) (nsec) - min memoria indirizzabile (NMIN) (kbyte) - max memoria indirizzabile (NMAX) (kbyte) - min numero canali collegabili (CHMIN) - max canali collegabili (CHMAX) - ampiezza memoria cache (CACHE) (kbyte) Dei 6 fattori solo 3 risultano significativi: A) Ampliezza media della memoria principale (Mbyte) B) Ampiezza memoria cache (1okbyte x 10) C) Capacità canale (cicli max ogni 10sec) secondo le seguenti trasformazioni variabili: A = (MMIN + MMAX) / 2 x 10-3 B = CACHE x 10-1 (0 se assente) C = CHAVG x SPEED x 10 con CHAVG = [(CHMIN + CHMAX)/2]+1 (canali)§ SPEED = 1/MCYT (cicli per nsec) L’indice multi attributo detto RELPERF variabile dipendente e A, B, C le variabili indipendenti l’analisi fattoriale mostra la seguente relazione quialitativa (≡): RELPERF ≡ A2 + B2 + C2 + 2 * (AB + AC + BC) 16 √(RELPERF) ≡ A + B + C RELPERF è funzione somma di A + B + C al quadrato, la radice è funzione della sola somma. L’analisi fattoriale rivela che dipende sia dai singoli fattori che dai loro prodotti che indicano le interazioni fra i fattori: le prestazioni di una cpu dipendono dalle combinazioni (due a due) dei valori dell’ampiezza (A = memoria, B = cache, C = canali). Il peso di ciascuno dei singoli fattori e delle loro interazioni si misura se si prendono le relazioni quantitative offerte dall’analisi fattoriale. Bilanciamento costo-prestazioni cpu: Un ulteriore uso del multi attributo è valutare le prestazioni RELPERF al minimo costo. PA, PB, PC i costi unitari dei fattori A,B,C (vedi sopra) e la cpu ottimale sarà: min(APA+BPA+CPC) Sensibilità ai fattori: Per ottenere i risultati di sensibilità delle RELPERF al cambiamento di uno o dell’altro fattore viene richiesta una standardizzazione dei coefficenti di regressione e tener conto del fatto che le quanittà A, B, C sono ciascuna su scala differente. Effettuando la standardizzazione si ottiene: √(RELPERF)st = h0 + h1 Ast + h2 Bst + h3 Cst di cui st vale: h0 = 0.0 h1 = 0.68 h2 = 0.22 h3 = 0.15 [4.3 Iazeolla]: Gli attributi prestazionali di una rete sono bandwidth (fisico e logico) e latency time. Il loro valore dipende sia da caratteristiche fisiche del circuito e sia dalle modalità connettive ossia caratteristiche del trasferimento dei blocchi infromativi tra i nodi della rete: queste caratteristiche sono modo operativo, strategia di controllo, metoido di switching e protocollo di comunicazione Modo operativo: è la caratteristicha che si riferisce alla modalità di comunicazione tra i nodi. Piò essere sintrono, asincrono oppure misto. Nal caso sincrono il nodo che riceve si disponga a farlo contemporaneamente a quello che trasmette. Strategia di controllo: è la caratteristica che definisce come i moduli switch e connessione sono gestiti. Il controllo può essere concentrato o distribuito. Nel primo è retto da un arbitro centrale, nel secondo sono gli stessi singoli componenti S e L. Metodo di switching: è la caratteristica con cui si instradano i dati, per trasferirli da un nodo ad un’altro. I due metodi principali sono la commutazione di circuito, la commutazione di pacchetto e la commutazione integrata. Nel primo caso chiudendo oppotuni L e S viene creato un collegamento fisico rigido tra sorgente e destinazione (come telefono). La connessione resta attiva per tutto il tempo necessario alla trasmissione tra i due nodi (modo sincrono): gli altri nodi in genere non vengono coinvolti. A livello di pacchetto i dati si dividono in pacchetti, ognuno può seguire un instradamento diverso per giungere alla destinazione. I nodi operano in modo asincrono, nella trasmissione sono coinvolti anche i nodi intermedi. Ogni nodo imagazzina i pacchetti temporaneamente e li inoltra al nodo succ appena elementi S e L si rendono disponibili. I dati vengono risequenziati all’arrivo. LA commutazione integrata è la modalità di instradamento che combina le prime due. Protocollo di comunicazione: è la modalità con cui elementi S e L della rete realizzano la strategia di controllo e il metodo di switching. La prima funzione che ne fa parte è il routing, riguarda il controllo degli elementi S per ottenere i dati dalla sorgente alla destinazione. LA seconda è detta handshaking riguarda il controllo degli elementi L per ottenere cooperazione tra punti S collegati dagli L medesimi. Bandwidth è la velocità trasmissiva (ampiezza banda in bit/sec) raggiungibile nella trasmissione 17 dati tra le unità. In quanto è un indice di prestazione può variare da pochi bit/sec a Mbit/sec. Il bandwidth fisico è la velocità consentita tra due nodi a livello fisico, questa viene raggiunta soltanto in assenza di interferenze con altri nodi o in assenza di collisione tra vari messaggi che si cndividono l’uso di link fisici L. Il bandwidth logico è la velocità trasmissiva ottenibile tra due nodi ed è più bassa di quella fisica e decresce all’aumentare del numero di nodi per link (totale nodi = totale link). Un importante attributo è il latency time: è il tempo medio di accesso a una base globale (comune) di blocchi informativi. In quanto la base può risiedere dentro la medesima unità o in unità funzionali distinte il latency time è definito: il peggiore tra i tempi di accesso minimi visti dalle varie unità. Si divide anchesso in logico e fisico, il primo essendo il limite superiore raggiungibile dal secondo (in assenza di interferenze sui link e la loro assenza di condivisione da parte di più nodi). Con riferimento a bandwidth e al latency time le reti si distinguono in loosely coupled e tightly coupled. Le prime sono reti che collegano nodi che interagiscono raramente (sistemi operativi indipendenti) in questo caso non sono richieste grandi velocità della rete. La seconda sono reti che collegano nodi che interagiscono raramente (due sistemi indipendenti su due nodi distinti) e sono richieste velocità operative maggiori. Reti intra-processor: sono le reti che all’interno di un processor multifunzionale connettono le varie unità funzionali (decodifica, operazioni artimetiche, logiche). La collocazione sulla scala dei tempi di latenza assume un valore dell’ordine di 0.01 a 1 microsec in quanto le unità informative oggetto di trasferimento sono quelle che viaggiano tra le unità funzionali ed i registri comuni (non sono coinvolti accessi alla memoria principale) Reti inter-processor: sono le reti che collegano i processori e le memorie che compongono un sistema multi processor. La collocazione sulla scala dei tempi di latenza assume un valore dell’ordine di 0.5 a 50 microsec in quanto ogni processore può accedere ai dati comuni e questi sono presneti in ciascuna delle unità di memoria destinate a memoria centrale. Complessità delle reti intra processor: è un fattore che diventa di interesse in reti dove il numero di componenti (S e L) cresce rapidamente le dimensioni dell’impianto. Mentre bandwidth e latency time sono attributi di efficienza la complessità è un modello di efficienza perchè fornisce un modello di valutaione caratterizzata da attributi costo/prestazione: A) reti statiche: numero di componenti (nodi S ed archi L), dimensione della rete, velocità componenti. B) reti dinamiche: attribuiti di A aggiungendo l’attributo prestazionale che è il svoraccarico del software che esprime il numero di interventi necessari al controllo degli elementi S ed L (strategia controllo e metodo switching) Complessità reti statiche: Gli attributi sono legati al numero dei componenti e alla dimensione della rete consideranto la rete un grafo ove archi sono i link L e i vertici (nodi) sono switch S collegati a memorie e processoi: Grado (Gs) di un nodo S: numero di archi L ad esso adiacenti Grado (Gr) della rete R: massimo dei gradi dei suoi nodi Eccentricità (Es) di un nodo S: massima distanza di S ad ogni nodo della rete Diametro (Dr) della rete R: massima eccentricità dei suoi nodi Complessità delle reti dinamiche: si può realizzare con un modello di qualità del tipo m4= e(f1)/c dove si assume che e(f1) = f1 fornisce grandezza m4 = f1/c (prestazione per unità costo = complessità). Prenderemo una combinazione C di fattori che esprimono le caratteristcihe hw e sw della rete mentre per efficienza prenderemol’ampiezza banda B. I fattori che entrano in C sono relativi alla numerosità e velocità dei componenti hw e sw della rete. Si definisce complessità (costo) della rete la funzione: C = f(N1, Ns, Bs) Fattori definiti: N1 = sovraccarico dell’arbitraggio (istruzioni chiamate in causa) dal software per risolvere i conflitti tra processori Ns = Numero di componenti S 18 Bs = Capacità operativa (ampiezza banda) Mentre la complessità crossbar: Cce = f((1/(m^2))), (nm + m) BS) 19
© Copyright 2024 Paperzz