sistemi di elaborazione
Transcript
sistemi di elaborazione
I.T.I. INFORMATICA SISTEMI DI ELABORAZIONE E TRASMISSIONE DELL’ INFORMAZIONE INDICE : Il multiprocessore Array processor Le comunicazioni satellitari Data link La posta elettronica Jhon Von Neumann Il multiprocessore Con il termine multiprocessore si intende un sistema (computer, workstation, server) equipaggiato con più di 2 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. Inizialmente questo avveniva solo sui sistemi che chiedevano un'elevata potenza di calcolo, come quelli che dovevano operare su database di grandi dimensioni o eseguire calcoli molto complessi di simulazione o in ambienti dove le informazioni sono di importanza vitale. Non a caso gli unici processori che supportano tale modalità sono quelli espressamente progettati per il settore server, come gli Intel Xeon MP (multi processor), o Itanium 2 MP e gli AMD Athlon MP e Opteron. Per sfruttare i vantaggi di un sistema multiprocessore, al pari di uno biprocessore, è necessario che anche il sistema operativo e i programmi siano realizzati in maniera da utilizzare le maggiori risorse offerte. In pratica, in fase di programmazione è necessario "parallelizzare" il codice in modo che non si abbiano situazioni in cui l'applicazione "vede" solo uno dei processori saturandolo, lasciando inutilizzati tutti gli altri. Spesso è necessario utilizzare più processori, gruppi di processori e cluster. Nel caso di basi di utenti molto ampie e diffuse, i gruppi di più processori e le varie istanze del database possono anche essere geograficamente dispersi. Nei multiprocessori diverse CPU condividono una memoria comune: • le CPU devono coordinarsi per accedere alla memoria • esistono diversi schemi di collegamento tra CPU e memoria; quello più semplice prevede un bus condiviso. Nel corso del 2005 sia Intel che AMD sono giunti ad un punto in cui non riescono più ad aumentare il clock dei propri processori e quindi, dato che ormai i processi di miniaturizzazione lo consentono, hanno cominciato ad intraprendere la nuova strada del processore dual core che è una sorta di sistema biprocessore un po' particolare. Il socket sulla motherboard rimane uno solo, ma sul package vengono montati due core identici, che vengono visti dal sistema operativo come due core "fisici", quindi quasi come se fosse un sistema biprocessore tradizionale. In realtà questo non è propriamente un sistema biprocessore, considerando che un sistema dual core condivide lo stesso BUS tra i due core. Combinando processori dual core con motherboard dotate di due socket si avranno in pratica 4 core fisici di elaborazione; questo, secondo le definizioni iniziali rimane un sistema biprocessore, anche se all'atto pratico è come se fosse un "quadriprocessore". Intel ha già dimostrato un sistema Itanium 2 Montecito (processore dual core) composto da 4 processori. Moltiplicando il numero di CPU per il numero di core di ciascuna, e considerando che ogni core implementa la tecnologia Hyper-Threading, il sistema operativo vedeva ben 16 processori "logici". Array processor Un processore vettoriale o array processor è una CPU progettata per svolgere operazioni matematiche su più dati elementari contemporaneamente. Questo in contrasto con l'architettura classica di un processore scalare che prevede l'elaborazione di un singolo dato per volta. La maggior parte dei processori sono scalari (o esternamente lo sembrano). I processori vettoriali sono comuni nelle applicazioni scientifiche e sono spesso alla base dei supercomputer fin dagli anni 80. Con la fine degli anni 90 i microprocessori sono cresciuti di prestazioni e molti processori per applicazioni generiche si sono dotati di unità vettoriali o sono diventati vettoriali al loro interno. Nel 2000 IBM, Toshiba e Sony hanno iniziato lo sviluppo del processore Cell, un microprocessore ad elevate prestazioni dotato di svariate unità vettoriali e rivolto ad applicazioni che spaziano dalle console al supercalcolo. Attualmente praticamente ogni CPU moderna include istruzioni vettoriali tipicamente conosciute come istruzioni SIMD. Le console per i videogiochi e le schede grafiche fanno un ampio uso di processori vettoriali dato che l'elaborazione di flussi audio e video in tempo reale è un campo che ben si presta all'elaborazione vettoriale. in genere le CPU sono capaci di manipolare uno o due frazioni di dati alla volta. Per esempio la maggior parte delle CPU hanno un'istruzione che essenzialmente dice “somma A a B e memorizza il risultato in C” mentre altre come il MOS 6502 necessitano di due o tre istruzioni per eseguire questo genere di operazioni. I dati per A, B e C possono teoricamente essere contenuti nell'istruzione stessa; tuttavia le cose sono raramente così semplici. In genere il dato non viene inviato in forma grezza, ma è invece “puntato” passando un indirizzo alla locazione di memoria che contiene il dato. Decodificare questo indirizzo e tirare fuori il dato dalla memoria, occupa del tempo. Con l'incremento della velocità delle CPU, questa latenza di memoria è diventata un impedimento sempre più grande per le prestazioni finali. Per ottimizzare i tempi, le più moderne CPU utilizzano una tecnica conosciuta come pipeline di istruzioni, nella quale l'istruzione passa attraverso differenti sotto-unità a turno. La prima sottounità legge l'indirizzo e lo decodifica, la successiva reperisce i valori situati a quell'indirizzo e la successiva ancora elabora l'effettivo calcolo matematico. Il “trucco” della pipeline consiste nel cominciare la decodifica della successiva istruzione persino prima che la precedente sia stata effettivamente elaborata dalla CPU, nello stile di una catena di montaggio, cosicché la decodifica degli indirizzi sia costante. Ogni particolare istruzione necessita la stessa quantità di tempo per essere completata, ma la CPU può processare un'intera serie di operazioni molto più velocemente rispetto a quanto farebbe calcolandone una alla volta. I processori vettoriali portano questo concetto un passo più avanti. Anziché utilizzare la tecnica di pipeline solo con le istruzioni, la utilizzano anche sui dati stessi; sono quindi capaci di applicare una medesima istruzione ad un grosso lotto di dati in parallelo, senza decodificare ogni singola istruzione dalla memoria. Questo spesso, come ad esempio nelle applicazioni multimediali, consente di risparmiare grosse quantità di tempo. Un processore vettoriale contiene al suo interno una memoria condivisa, varie unità di calcolo, e un'unità di controllo che gestisce il parallelismo tra le unità di calcolo. Il parallelismo è gestito a livello hardware e non è visibile a livello di programmazione. Per illustrare che differenza comporta l'elaborazione vettoriale, consideriamo il semplice compito di sommare due gruppi di dieci numeri. In un normale linguaggio di programmazione si scriverebbe un “ciclo” che prende per ogni coppia il primo numero e lo somma al secondo. Le comunicazioni staellitari l famoso scrittore di fantascienza Arthur C. Clarke (autore di 2001: Odissea nello spazio) viene notoriamente indicato come l'ideatore dei sistemi satellitari cosiddetti geostazionari; infatti, nel 1945 Clarke scrisse che un satellite in orbita equatoriale circolare con un raggio di circa 42424 km (dal centro della Terra) avrebbe una velocità angolare esattamente pari a quella del pianeta, rimanendo quindi relativamente immobile nel cielo rispetto al suolo e divenendo così un possibile ponte radio tra due punti dell'emisfero visibili dal satellite. Inoltre, tre satelliti spaziati di 120° potrebbero (con qualche sovrapposizione) coprire l'intera circonferenza del pianeta; in questo caso i messaggi potrebbero essere anche scambiati tra i satelliti, o attraverso un doppio hop a terra, rendendo possibile una comunicazione diretta tra due punti qualsiasi del globo. L'idea di Clarke è incredibilmente innovativa se si pensa che il lancio dello Sputnik da parte dell'Unione Sovietica avvenne solo nel 1957; in quel caso inoltre si disponeva di una tecnologia missilistica sufficiente solamente per portare il satellite in un'orbita bassa. Non si riuscirà a raggiungere un'orbita sincrona primadel 1963. La serie Syncom fu il primo sistema di comunicazione satellitare geostazionario ed iniziò nel 1963, poco meno di 20 anni dopo la concezione dell'idea da parte di Clarke. Syncom I fallì nella fase di lancio, ma Syncom II e III vennero messi in orbita con successo il 26 luglio 1963 e il 19 luglio 1964 rispettivamente (con lo sforzo della NASA e del Dipartimento della Difesa). Il primo satellite geostazionario commerciale fu Intelsat I, sviluppato da Comsat per Intelsat (1965-1969). Le prime comunicazioni regolari tra Stati Uniti ed Europa iniziarono il 28 giugno 1965, data di nascita delle comunicazioni satellitari commerciali. Tramite i satelliti verrà gestita l'intera difesa militare secondo quanto previsti dai protocolli di Internet 2, che per questi usi hanno dovuto risolvere ai problemi di robustezza e sicurezza del TCP attuale. Tramite il mezzo satellitare già passano criptate gran parte delle transazioni commerciali statunitensi. Negli anni '90, l'uso commerciale e il futuro militare dei satelliti hanno portato gli esperti di telecomunicazioni a sopravvalutarne le potenzialità e a ritenerlo il mezzo del futuro a discapito della fibra ottica. Negli anni '90, invece, è stata posta nel mondo una quantità di fibra ottica pari a 10000 volte il diametro della Terra, mentre il satellite è stato rilasciato a TV satellitari minori e a costi di connessione scesi verticalmente. Si è pensato di utilizzare il satellite come servizio a banda larga. La qualità è improponibile per l'elevato tempo di latenza di centinaia di millisecondi (per satelliti di tipo GEO). I satelliti INTELSAT già avevano una latenza per il traffico voce (a 4 KHz) molto alta, per cui si preferirono i molto più costosi cavi sottomarini come collegamento per le chiamate intercontinentali. Per frequenze superiori, come quelle utilizzate da ADSL, la latenza diviene ancora più alta. La qualità del servizio Internet via satellite è notevolmente peggiore di una connessione ADSL; talvolta più lenta di una connessione analogica (per via del tempo di latenza, di attesa perché inizi un download di megabit al sec.) e rende insensato parlare di "ADSL satellitare". Il satellite rimane però imbattibile in tutte le applicazioni di tipo broadcast, cioè tutte quelle applicazioni per le quali occorre inviare gli stessi dati a molti ricevitori. La sua scalabilità, rispetto alla rete terrestre, è semplicemente non paragonabile. Sia che si tratti di inviare lo stesso flusso audio/video (es. per applicazioni di formazione a distanza in tempo reale) o lo stesso file a un gran numero di stazioni riceventi, il satellite è in grado, a costi praticamente indipendenti dal numero di postazioni, di servire tutti i destinatari con la stessa qualità. Questo enorme vantaggio è anche dovuto alla pratica assenza del cosiddetto peering multicast nelle reti terrestri. Se le reti terrestri si scambiassero il traffico multicast, in effetti, la scalabilità di soluzioni terrestri aumenterebbe notevolmente. Al momento però, i fornitori preferiscono tenere il multicast confinato all'interno delle loro reti, con la speranza di ottenerne un vantaggio competitivo legato alla diffusione di contenuti esclusivi (es. eventi sportivi o spettacoli). datalink l livello datalink è il secondo livello dei protocolli del modello ISO/OSI per l'interconnessione di sistemi aperti. Questo livello riceve pacchetti dal livello di rete e forma i frame che vengono passati al successivo livello fisico. Il Livello di Datalink deve svolgere diverse funzioni specifiche: • Raggruppare i bit del livello fisico in pacchetti chiamati frame (framing); • Controllare e gestire gli errori di trasmissione; • Regolare il flusso della trasmissione fra sorgente e destinatario (controllo di flusso). Al fine di fornire servizi al livello di rete, il livello data link deve usufruire dei servizi fornitigli dal livello fisico. L'approccio consueto del livello data link è quello di dividere il flusso dei bit in pacchetti e calcolarne la Checksum. Quando un pacchetto arriva a destinazione la Checksum viene ricalcolata. Se il nuovo risultato è diverso da quello contenuto nel pacchetto, il livello data link riconosce che deve essere stato commesso un errore e prende adeguati provvedimenti( come ad esempio scartare il pacchetto e spedire in risposta un messaggio di errore). Vengono utilizzati vari metodi per la suddivisione dei bit in pacchetti: • Conteggio dei caratteri. • Caratteri di inizio e fine. • Indicatori (flag) di inizio e fine. Il metodo del conteggio di caratteri (specificando in un campo dell’intestazione il numero di caratteri del frame) è raramente utilizzabile perché, se il campo che contiene il conteggio si rovina durante la trasmissione, non si può più individuare dove comincia il frame successivo; vengo quindi utilizzate le altre tecniche. Nella trasmissione orientata al byte (il frame mantiene la suddivisione in byte) il frame viene preceduto dalla sequenza di caratteri ASCII DLE STX (Data Link Escape Start of TeXt) e finisce con la sequenza DLE ETX (Data Link Escape End of TeXt). Se un frame si rovina e la destinazione perde la sincronizzazione basta trovare il successivo DLE STX o DLE ETX. Il carattere DLE però può comparire casualmente dentro al frame quando vengono trasmessi dati binari come programmi oggetto o numeri in virgola mobile; perché questi caratteri non interferiscano viene aggiunto un ulteriore DLE (che viene rimosso a destinazione prima di passare al frame al livello di rete) in modo che solo i DLE singoli vengano interpretati come delimitatori; questa tecnica si chiama character stuffing. Nella trasmissione orientata al bit (il frame può contenere un numero qualsiasi di byte) ogni frame inizia e finisce con la sequenza 01111110 chiamata flag: questa sequenza può comparire casualmente nei dati, perciò in trasmissione dopo cinque 1 consecutivi viene sempre inserito uno 0 nel flusso di bit, indipendentemente dal fatto che il bit successivo sia 1 o 0, mentre in ricezione bisogna provvedere ad eliminare i bit inseriti, rimuovendo sempre uno 0 dopo cinque; questa tecnica è chiamata bit stuffing. La posta elettronica La e-mail o email (abbreviazione dell'inglese «electronic mail», in italiano posta elettronica) è un servizio Internet grazie al quale ogni utente può inviare o ricevere dei messaggi. È l'applicazione Internet più conosciuta e più utilizzata attualmente. La sua nascita risale al 1972, quando Ray Tomlinson installò su ARPANET un sistema in grado di scambiare messaggi fra le varie università, ma chi ne ha realmente definito il funzionamento fu Jon Postel. È la controparte digitale ed elettronica della posta ordinaria e cartacea. A differenza di quest'ultima, il ritardo con cui arriva dal mittente al destinatario è normalmente di pochi secondi/minuti. o scopo del servizio di e-mail è il trasferimento di messaggi da un utente ad un altro. Ciascun utente può possedere una o più caselle e-mail, su cui può ricevere messaggi, che vengono conservati per lui. Quando lo desidera, l'utente può consultare il contenuto della sua casella, organizzarlo, inviare messaggi a uno o più utenti. L'accesso alla casella di posta elettronica è normalmente controllato da una password o da altre forme di autenticazione. La modalità di accesso al servizio è quindi asincrona, ovvero per la trasmissione di un messaggio non è necessario che mittente e destinatario siano contemporaneamente attivi o collegati. La consegna al destinatario dei messaggi inviati non è garantita. Nel caso un server SMTP non riesca a consegnare un messaggio che ha ricevuto, tenta normalmente di inviare una notifica al mittente per avvisarlo della mancata consegna, ma anche questa notifica è a sua volta un messaggio di e-mail (generato automaticamente dal server), e quindi la sua consegna non è garantita. Il mittente può anche richiedere una conferma di consegna o di lettura dei messaggi inviati, ma il destinatario è normalmente in grado di decidere se vuole inviare o meno tale conferma. Il significato della conferma di lettura può essere ambiguo, in quanto aver visualizzato un messaggio per pochi secondi in un client non significa averlo letto, compreso o averne condiviso il contenuto. A ciascuna casella sono associati uno o più indirizzi di e-mail. Questi hanno la forma nomeutente@dominio, dove nomeutente è un nome scelto dall'utente o dall'amministratore del server, che identifica in maniera univoca un utente (o un gruppo di utenti), e dominio è un nome DNS. L'indirizzo email può contenere qualsiasi carattere alfabetico e numerico (escluse le accentate) e alcuni simboli come l'underscore (_) ed il punto (.). Molto spesso può tornare utile agli utenti servirsi dei servizi di reindirizzamento, utilizzati per inoltrare automaticamente tutti i messaggi che arrivano sulla casella e-mail, verso un'altra di loro scelta, in modo che al momento della consultazione l'utente non debba accedere a tutte le caselle e-mail di cui dispone, ma gli sia sufficiente controllarne una. John von Neumann, John von Neumann, nato János Neumann (Budapest, 28 dicembre 1903 – Washington, 8 febbraio 1957), è stato un matematico e informatico ungherese naturalizzato statunitense. Fu una delle personalità scientifiche preminenti del XX secolo cui si devono fondamentali contributi in campi come teoria degli insiemi, analisi funzionale, topologia, fisica quantistica, economia, informatica, teoria dei giochi, fluidodinamica e in molti altri settori della matematica. John von Neumann è stato una delle menti più brillanti e straordinarie del secolo appena passato. Insieme a Leo Szilard, Edward Teller ed Eugene Wigner, i quattro facevano parte del "clan degli ungheresi" ai tempi di Los Alamos e del Progetto Manhattan. Oltre ad essere ungheresi, tutti e quattro erano di origini ebraiche ed erano stati costretti a rifugiarsi negli USA per sfuggire alle persecuzioni naziste. Le sue capacità hanno permesso a Neumann di apportare contributi significativi e spesso assolutamente innovativi in molti campi della ricerca, dalla matematica alla meccanica statistica, dalla meccanica quantistica alla cibernetica, dall'economia all'evoluzione biologica, dalla teoria dei giochi all'intelligenza artificiale. Quello di von Neumann con i militari è stato un rapporto piuttosto stretto, alimentato dalle sue convinzioni anti-naziste prima e anti-comuniste poi, sfociate in un vero e proprio odio che lo porterà ai vertici delle istituzioni politico militari degli Stati Uniti. Johnny, come lo chiamavano i suoi colleghi americani, era anche un grande amante della vita, e accanto alla personalità geniale ma cinica e spietata conviveva, apparentemente senza contraddizione alcuna, l'altro volto dello scienziato ungherese, quello affabile, mai presuntuoso, simpatico, goliardico e donnaiolo. Attorno alla sua figura sono state scritte molte storie che hanno caratterizzato nell'eccesso questo personaggio, gran parte della quali, però, dettate da ostilità e avversione nei confronti del suo pensiero politico e sociale.Era il 1930 e il 1933 viene invitato a Princeton, dove mette in luce una vena didattica non proprio esemplare; la sua grande fluidità di pensiero mette in difficoltà molti degli studenti, che sono costretti a seguire i calcoli su una piccola porzione di lavagna che lo scienziato cancella poi velocemente impedendo agli allievi di copiare le equazioni. Nel 1933 apre i battenti l'Institute for Advanced Study, sempre a Princeton, e von Neumann è uno dei sei professori originari di matematica insieme a Albert Einstein, Hermann Weyl, Morse, Alexander e Thorstein Veblen.Poco dopo, con l'arrivo dei nazisti al potere, abbandona la sua posizione accademica in Germania, considerando l'avventura americana ben più promettente. Terrà la cattedra di Princeton fino alla fine dei suoi giorni.Negli anni successivi, von Neumann dà sfoggio del suo enorme talento nel campo della ricerca e si interessa dei problemi legati alla turbolenza idrodinamica e quindi alla risoluzione delle equazioni differenziali non lineari, che gli serviranno come stimolo per studiare nuove possibilità legate alla computazione elettronica. Ma a rendere famoso e amato Johnny è anche l'altro lato della sua personalità, quello allegro e gioviale, che lo rende particolarmente abile nell'organizzare e animare le feste. I suoi party sono famosi, numerosi e piuttosto lunghi e sa intrattenere amabilmente gli ospiti con un repertorio vastissimo di barzellette e storielle, naturalmente in molte lingue. Durante la Seconda Guerra Mondiale approfondisce la conoscenza della teoria dei giochi dimostrando il teorema minimax e pubblicando nel 1944, insieme a Oskar Morgenstern, un testo che diverrà un classico, Theory of Games and Economic Behavior. Secondo questo modello in molti giochi, ad esempio gli scacchi, esiste un algoritmo, il minimax, che permette di scegliere qual è la mossa migliore. Alcuni anni più tardi Shannon, uno dei padri fondatori della teoria dell'informazione, si baserà sui lavori di von Neumann per pubblicare il suo articolo Una macchina giocatrice di scacchi. Sempre nel 1944, von Neumann viene a conoscenza da un suo collega, Herman Goldstine, impegnato anch'esso nel Progetto Manhattan, dei tentativi effettuati presso il laboratorio balistico di costruire una macchina capace di trecento operazioni al secondo. Von Neumann rimane profondamente colpito da questa cosa e dentro alla sua mente si aprono nuovi e affascinanti scenari. Il primo incontro con un calcolatore risale a poco tempo dopo, con la macchina Harvard Mark I (ASCC) di Howard Aiken, costruita in collaborazione con l'IBM; poi conosce ENIAC (Electronic Numerical Integrator And Computer), un ammasso enorme di valvole, condensatori e interruttori da trenta tonnellate di peso, costruita da Prosper Eckert e John Mauchly. Questo primordiale computer è utile per eseguire calcoli balistici, meteorologici o sulle reazioni nucleari, ma è una macchina limitata, quasi del tutto priva di memoria e di elasticità; in altre parole, una macchina stupida. Per migliorare un simile marchingegno c'è bisogno di quell'intuizione che una decina d'anni prima aveva avuto Alan Turing nel suo articolo sui numeri computabili, e cioè permettere al computer di modificare il proprio comportamento, o, in altre parole, imparare un software. Nel 1945 esce così First Draft of a Report on the Edvac. L'EDVAC (Electronic Discrete Variables Automatic Computer) è la prima macchina digitale programmabile tramite un software basata su quella che sarà poi definita l'architettura di von Neumann. Il merito dell'invenzione, oltre che allo scienziato ungherese, va a Alan Turing (per l'idea: l'EDVAC, a dispetto della propria memoria finita, è la realizzazione della macchina universale inventata da Turing nel 1936, ovvero, un computer programmabile nel senso moderno del termine) e ad Eckert e Mauchly (per la realizzazione). Gli anni della guerra vedono von Neumann coinvolto nel progetto Manhattan per la costruzione della bomba atomica; è un coinvolgimento alimentato da un profondo odio verso i nazisti, i giapponesi e successivamente verso i sovietici. Già nel 1937, dopo aver ottenuto la cittadinanza statunitense, gli viene proposto di collaborare con le forze armate e da quel momento la sua escalation ai vertici delle istituzioni politico-militari non conoscerà più soste. È lui a suggerire come deve essere lanciata la bomba atomica per creare il maggior numero di danni e di morti, è lui che interviene nella costruzione della bomba al plutonio realizzando la cosiddetta "lente al plutonio", ed è ancora lui a incentivare la costruzione di ordigni nucleari sempre più potenti. Ma si spinge oltre, proponendo alle autorità militari di bombardare preventivamente l'Unione Sovietica per scongiurare il pericolo rosso. La sua teoria dei giochi viene utilizzata in questo contesto per studiare e ipotizzare tutti i possibili scenari bellici che si possono sviluppare in seguito a certe decisioni. Il fervore con cui appoggia lo sviluppo degli ordigni atomici lo spinge a seguire di persona alcuni test sulle armi nucleari nella seconda metà degli anni quaranta, che raggiungeranno l'apice con l'esplosione della bomba H nelle Isole Marshall nel 1952. Probabilmente saranno proprio le radiazioni sprigionate da questi test a condannarlo a morte, da lì a poco. Nello stesso anno dell'esplosione della bomba H, viene nominato membro del General Advisory Committee della potente AEC (Atomic Energy Commission) e consigliere della CIA (Central Intelligence Agency, l'agenzia statunitense per lo spionaggio all'estero). Tre anni più tardi diventa membro effettivo dell'AEC. Nel pieno della Guerra Fredda, a metà degli anni Cinquanta, si impegna al massimo per appoggiare la costruzione del missile balistico intercontinentale (ICBM) Atlas che, successivamente, servirà a scopi più nobili della guerra; un Atlas modificato, infatti, porterà John Glenn nello spazio nel 1962. Un tumore alle ossa lo costringe sulla sedia a rotelle, anche se la malattia non gli impedisce di seguire di persona le riunioni strategiche con i militari, mentre si dedica a nuovi studi che riguardano programmi capaci di autoriprodursi e che lui chiama automi cellulari.