ase_architettura_sis..

**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