Computer e informa.ca
Mezzo secolo di vita vissuta tra hardware e so8ware
Franco Fellicò
Da dove comincio?
• Dall’inizio? • Da oggi?
NO.
Voglio prima riportare qui di seguito i “Foils” di una mia presentazione che nel 1990 feci in occasione della visita del DireIore Generale del Banco di Napoli Prof. Ferdinando Ventriglia al Centro Elaborazione da..
Presentazione del 1990 …
Con la presentazione intendevo illustrare al “grande capo” l’evoluzione che avevano avuto le macchine del Centro EleIronico in 30 anni e cioè a par.re dalla sua nascita.
Volevo inoltre dare un’idea della disponibilità di potenza elabora.va che avevamo nel 1990.
… presentazione del 1990 …
… presentazione del 1990 …
… presentazione del 1990 …
… presentazione del 1990 …
… presentazione del 1990 …
… presentazione del 1990 …
… presentazione del 1990 …
… presentazione del 1990 …
… presentazione del 1990 …
… presentazione del 1990 …
Per concludere lessi un documento che avevo preparato 21 anni prima per una mia conferenza in occasione della visita al CED dei capi di filiale.
Feci notare che l’architeIura delle macchine era rimasta aIuale anche dopo più di 20 anni .
E anche oggi (dopo altri 23 anni) si può dire che tuIo quanto vi era raccontato è ancora vero.
… presentazione del 1990 …
Non riporto qui il documento, visto che può essere ritrovato facilmente nel mio SITO al link che segue:
hIp://lnx.ffellico.com/newfrancoweb257/index.php?op.on=com_content&view=ar.cle&id=36
Il sito è -‐> hIp://www.ffellico.com
E dopo il 1990 ?
Il 7070 aveva ovviamente una sua CPU i cui componen. ajvi erano 40.000 transistors.
Essi erano salda. uno per uno con i loro tre piedini su apposite schedine dotate di una ven.na di contaj.
Le schedine erano inserite con i contaj in un cosiddeIo “backplane” che nella parte posteriore aveva migliaia di collegamen. “wire-‐up” realizza. con un sojle filo giallo.
L’evoluzione delle CPU
L’evoluzione dei mainframe con.nuava a progredire, ma considerato che a tuj sono più no. i personal computer, preferisco illustrare l’evoluzione di un piccolo componente che pian piano è andato sempre più sos.tuendosi alle grandi CPU.
La sua storia comincia all’incirca nel 1970.
Il microprocessore
Questo chip simile ad un ragneIo perché cos.tuito da un involucro con una superficie di un paio di cen.metri quadra. irto di tan. piedini, cos.tuì la meraviglia dell’eleIronica degli anni 70.
Nato per sos.tuire con un sistema programmabile i chip che contenevano circui. di logica digitale (and, or, nand, ecc.) si dimostrò presto essere una vera CPU che consen.va di costruire veri e propri computer economici e di piccole dimensioni.
Evoluzione del microprocessore I microprocessori più no.
dal 1970 al 1996:
Anno Transistor Tecnologia
Intel 4004 1971 2.300 10,0 µm Intel 8008 1972 3.500 10,0 µm INTEL 8080 1974 4.500 6,0 µm Zilog Z80 1976 8.500 4,0 µm Intel 8086 1979 29.000 3,0 µm Intel 8088 1979 29.000 3,0 µm Motorola 68000 1979 68.000 4,0 µm Intel 80186 1982 55.000 3,0 µm Intel 80286 1982 134.000 1,5 µm Intel 80386 1985 275.000 1.5 µm Intel 80486 1989 1.180.000 1,0 µm Pen.um 1993 3.100.000 0,8 µm Amd K5 1996 4.300.000 0,5 µm
I microprocessori più no. dal 1997 a oggi:
Anno Transistor Tecnologia
Pen.um II 1997 7.500.000 0,35 µm Amd K6 1997 8.800.000 0,35 µm Pen.um III 1999 9.500.000 0,25 µm Amd K7 1999 22.300.000 0,25 µm Pen.um IV 2000 42.000.000 180 nm Amd K8 2003 105.900.000 130 nm Intel Itanium 2 2003 220.000.000 130 nm Intel Core 2 Duo 2006 291.000.000 65 nm Amd K10 2007 463.000.000 65 nm Intel Core I7 2008 731.000.000 45 nm Intel Six core I7 2010 1.170.000.000 32 nm Intel 10-‐core Xeon 2011 2.600.000.000 32 nm
E non dimen.cate che nel 1990 il mainframe IBM del Banco di Napoli aveva 500.000.000 di transistor
Evoluzione delle RAM
Il 7070 del Banco di Napoli (quello da un milione di lire di fiIo al giorno) aveva nel 1960 una memoria centrale di 50.000 caraIeri.
Il primo mio microcomputer nel 1978 aveva 4 Kb di memoria RAM.
Oggi un personal computer di medie dimensioni ha 4 Gb di RAM (il mol.plicatore è 1.000.000).
Evoluzioni delle memorie esterne …
Il 2311 (prima unità a disco della IBM negli anni 60) aveva una capacità di 7,5 Mb ed era poco più grande di una lavatrice.
… evoluzione delle memorie esterne …
Oggi un hard disk da 2Tb (mol.plicatore 266.000) può essere anche da 2,5 pollici, è alimentato direIamente dalla porta USB di un personal computer ed è poco più grande di un paccheIo di sigareIe.
… evoluzione delle memorie esterne
Conclusione 1
Le memorie esterne disponibili nel 7070 IBM nel 1960 potevano accogliere 3 vocabolari.
Nel 1990 i sistemi successivi potevano contenere 9.750 vocabolari.
Oggi in un disco poco più grande di un paccheIo di sigareIe si possono memorizzare:
100.000 vocabolari
Conclusione 2
Il 7070 IBM nel 1960 aveva una potenza per secondo (0,1Mips) pari a quella di 3,5 giorni di lavoro di un impiegato velocissimo.
I sistemi successivi nel 1990 avevano una potenza per secondo (82 Mips) pari al lavoro di 11 anni e 3 mesi dello stesso impiegato.
Oggi un buon personal computer ha una potenza al secondo (177.730 Mips) pari al lavoro svolto dal solito impiegato in ben 243,8 secoli.
1 Mips = 1 milione di istruzioni per secondo
Conclusione 3
Ho riferito che il grande computer IBM del 1960 costava UN MILIONE DI LIRE al giorno soltanto di fiIo (senza contare i cos. dell’extra-‐shi8).
Lascio a tuj voi il compito di valutare come sono cambia. i cos., considerando che oggi un computer personale, ben più potente di quella macchina si può acquistare con una cifra che va dai 500 ai 1500 euro.
Una riflessione
Se l’evoluzione dell’automobile avesse avuto in 50 anni lo stesso sviluppo delle CPU, un’auto di oggi dovrebbe avere un motore delle dimensioni di meno di un millimetro ed una potenza di migliaia di Kw.
Dovrebbe percorrere con un litro di benzina alcune decine di migliaia di chilometri.
E potrebbe costare molto meno di UN EURO !
Ora possiamo tornare al 1960
L’arrivo del gioiello
L’installazione
L’impianto funzionante
Tecnologia della memoria centrale
Le prime memorie RAM erano realizzate con nuclei di ferrite:
Memoria su nuclei di ferrite
Gioielli di tecnologia (anni 70)
Bit, caraIeri, bytes
Oggi parliamo di bit e bytes, ma all’inizio i bit c’erano, mentre i bytes non ancora.
I bit, furono e sono l’unità elementare di memorizzazione; tuIe le memorie furono e sono un insieme di bit.
Ma da subito nacque la necessità di u.lizzarli in gruppi perché in ogni caso era ed è necessario poter rappresentare e memorizzare numeri e leIere.
Da. e istruzioni …
• Una importante dis.nzione da fare è che esistono da. e istruzioni
• I DATI sono le informazioni numeriche o alfanumeriche da traIare
• Le ISTRUZIONI sono i “comandi” invia. alla CPU che la inducono ad agire sui da.
…Da. e istruzioni
Così, come anche oggi, nella memoria dovevano trovare posto sia i da. che le istruzioni dei programmi.
Nel 7070 IBM ogni istruzione occupava una voce e per ciascuna di esse i 53 bit disponibili venivano u.lizza. per indicare codice opera.vo e indirizzi dei da. su cui agire.
In ogni caso sia i da. che le istruzioni hanno un proprio modo di essere rappresenta. in memoria
I caraIeri
Un bit può contenere una sola cifra binaria e quindi due soli valori diversi.
Gruppi di bit possono rappresentare numeri binari sia posi.vi che nega.vi.
Per le leIere era necessario usare gruppi di bit e una codifica per ciascuna leIera o segno speciale.
Come raggruppare i bit per le varie esigenze?
Numeri decimali e leIere
Anche se la numerazione binaria si prestava ad essere usata con i bits, per comodità era u.le poter u.lizzare la numerazione decimale per cui, specie all’inizio dell’era informa.ca, si adoIarono codifiche par.colari per rappresentare sia i numeri che le leIere e i caraIeri speciali.
Il 7070 raggruppava i da. in VOCI (words) u.lizzando una codifica deIa two-‐out-‐of-‐five.
La codifica two-‐out-‐of-‐five …
Gruppi di 5 bit in cui solo due di essi erano ON rappresentavano le cifre decimali da 0 a 9; sempre e solo 2 bit dovevano essere in ON con il che si poteva anche avere un controllo sulla validità del dato.
Un insieme di 10 gruppi da 5 bit era una VOCE e quindi poteva contenere un numero di 10 cifre.
Ma per consen.re la rappresentazione di cifre anche nega.ve occorreva un segno.
… la codifica two-‐out-‐of-‐five …
Alla voce veniva associato allora anche un altro gruppo di 3 bits dove con la regola del two-‐out-‐of-‐three si poteva rappresentare il segno più, il segno meno o il segno “alpha”.
Se il segno era alpha, ogni coppia di cifre rappresentava una leIera o un caraIere speciale.
Dunque una voce poteva contenere un numero di 10 cifre o 5 leIere o caraIeri speciali.
… la codifica two-‐out-‐of-‐five
Digit 0 1 2 3 6
1 1 1 0 0 0
2 1 0 1 0 0
3 1 0 0 1 0
4 0 1 0 1 0
5 0 0 1 1 0
6 1 0 0 0 1
7 0 1 0 0 1
8 0 0 1 0 1
9 0 0 0 1 1
0 0 1 1 0 0
Segno 0 -‐ -‐ 3 6
Alfa 1 -‐ -‐ 1 0
-‐ 1 -‐ -‐ 0 1
+ 0 -‐ -‐ 1 1
Altre soluzioni (il codice BCD)
Ma presto l’IBM adoIò un diverso metodo per la memorizzazione dei da..
Nel 1401 IBM i da. erano rappresenta. sia nella memoria centrale che sui suppor. magne.ci con la codifica BCD (Binary Coded Decimal).
In effej per ogni caraIere (cifra o leIera) era u.lizzato un gruppo di 7 bit; 6 venivano usa. per il dato e il sejmo per un controllo di parità.
Una soluzione diversa …
Nel suo 1401 (da considerarsi un computer asservito al grande mainframe) l’IBM adoIò per la memoria centrale il codice BCD con seIe bit compreso quello per il controllo di parità.
Si traIava ancora di caraIeri numerici o alfabe.ci, ma l’organizzazione della memoria era completamente diversa.
… una soluzione diversa …
Mentre nel 7070 sia i campi di da. che le istruzioni erano di lunghezza fissa, nel 1401 entrambi avevano lunghezza variabili.
Per delimitarli veniva u.lizzato un oIavo bit chiamato word mark che quando era in ON indicava l’inizio di una istruzione o la fine di un campo di da..
… una soluzione diversa …
Ogni caraIere della memoria era indirizzabile e quindi aveva il proprio indirizzo.
La CPU leggeva le istruzioni da sinistra a destra e i da. da destra a sinistra; così che l’indirizzo di un’istruzione era quello del caraIere di ordine più alto mentre l’indirizzo di un dato era quello del caraIere di ordine più basso.
Ogni istruzione iniziava con una word mark e terminava quando veniva incontrata la word mark dell’istruzione successiva.
… una soluzione diversa
Un campo di da. iniziava con l’indirizzo del suo caraIere più a destra e proseguiva verso sinistra terminando all’incontro di un caraIere che aveva la word mark in ON.
Opportune istruzioni (SET WORD MARK e CLEAR WORD MARK) consen.vano ai programmatori di definire campi di qualunque lunghezza.
Il Byte …
Fu la necessità di rappresentare, oltre che tuIe le leIere e i numeri anche un buon numero di caraIeri speciali, che spinse il mondo intero ad adoIare una rappresentazione meno restrijva e si passò universalmente ad adoIare la codifica ASCII (American Standard Code for Informa.on Interchange) che prevedeva di u.lizzare il byte cioè un OTTETTO di bit per la memorizzazione di ogni numero, leIera o caraIere speciale.
L’IBM, pur adoIando il byte, u.lizzò però per un certo tempo una diversa codifica a nome EBCDIC (Extended Binary Coded Decimal Interchange Code).
… il Byte
In IBM il byte nacque negli anni 70 e fu adoIato con i computers della “terza generazione”; questa nuova generazione fu il fruIo di un grande salto tecnologico dovuto principalmente a due novità importan.:
L’u.lizzo dei circui. digitali integra. in luogo dei singoli transistors.
Il defini.vo abbandono delle memorie in ferrite, sos.tuite anch’esse da transistors
L’indirizzamento …
U.lizzare i da. presen. in una memoria centrale richiede di poter indirizzare le singole posizioni della memoria stessa.
Più grande è la memoria, maggiore è il numero di cifre richieste per citare un indirizzo.
Di conseguenza poiché le istruzioni contengono sempre uno o più indirizzi di memoria su cui agire, la dimensione delle istruzioni di una CPU è influenzata dalla dimensione della memoria su cui deve agire.
… l’indirizzamento
Le istruzioni di ogni CPU hanno un formato ben preciso ed è ovvio quindi che il set di istruzioni ha una propria capacità di indirizzamento che non può essere superata.
Per consen.re un alto spazio di indirizzamento, senza “appesan.re” ciascuna istruzione con indirizzi molto grandi in mol. casi si decise di u.lizzare indirizzi cos.tui. da un valore base (contenuto in un registro) e un “displacement”.
Dunque in questo modo le istruzioni potevano contenere solo il displacement e un riferimento al registro base.
Le istruzioni …
Ho parlato già di istruzioni, ma forse è bene dare qualche informazione in più.
Ogni .po di processore dispone di un proprio set di istruzioni; si traIa delle operazioni elementari che la CPU è in grado di eseguire.
Sono tre le categorie fondamentali a cui appartengono queste istruzioni.
… le istruzioni …
Istruzioni aritme.che: Spesso basta l’aritme.ca semplice e cioè anche solo addizioni e soIrazioni.
Istruzioni di logica: Confron. tra numeri o tra leIere
Istruzioni di salto: Sal. condiziona. o incondiziona. all’esecuzione di altre istruzioni
… le istruzioni …
Le istruzioni per essere eseguite devono risiedere nella memoria centrale e quindi hanno ciascuna un proprio indirizzo.
All’interno di ogni istruzione esiste sempre almeno un codice opera.vo e uno o più indirizzi.
Gli indirizzi possono essere sia quelli di un dato su cui operare sia quelli di un’altra istruzione.
… le istruzioni … L’esecuzione di una istruzione richiede un certo numero di cicli macchina che dipendono alla complessità dell’istruzione stessa.
Ogni CPU (il componente che esegue le istruzioni) compie un ciclo macchina al passo con un “clock” che funge da metronomo.
Quindi più è veloce il clock e più rapida è l’esecuzione delle istruzioni.
Le velocità dei clock nel tempo sono passate da qualche MegaHerz ad alcuni GigaHerz.
Il limite delle velocità raggiungibili sono innalzabili con una miniaturizzazione spinta.
Un altro modo per migliorare le prestazioni è la sovrapposizione delle azioni (più azioni nello stesso ciclo macchina) e anche l’uso di CPU mul.ple.
… le istruzioni
Il processo è semplicissimo: la CPU esegue una per volta le istruzioni sequenzialmente, a meno dei casi in cui una istruzione di “salto” non indichi di u.lizzare invece una istruzione in un indirizzo diverso.
Si possono realizzare quindi anche dei “loop” che consentono di iterare delle azioni.
I programmatori realizzano programmi anche complessi combinando insieme migliaia di sequenze di istruzioni.
Il micro-‐code
Ora che è ben chiaro cosa è una istruzione voglio approfiIare per dire che la IBM (e non solo lei) a par.re dalla terza generazione delle sue macchine cominciò a “costruire” le singole istruzioni di macchina con delle “istruzioni più elementari”: il cosiddeIo micro-‐code.
Il micro-‐code veniva caricato in macchina in un’apposita memoria e poteva essere modificato e cambiato nel tempo!
Assemblatori e compilatori
Nei primissimi anni si programmava “in codice assoluto” cioè scrivendo le istruzioni con il loro codice opera.vo e indirizzi.
Ma ben presto nacquero prima gli assemblatori e poi i compilatori che alleviarono fortemente il lavoro dei programmatori.
Oggi ci sono tecniche molto sofis.cate che agevolano fortemente il lavoro di chi programma.
Il discorso qui è ampio e fin d’ora vi prome5o, ove vi fosse interesse, di illustrarvi quanto è cambiato nel tempo il modo di programmare.
SfruIare bene la CPU
La CPU, uno dei componen. più costosi di un computer, era inizialmente poco sfruIata perché la sua velocità era estremamente più alta delle unità periferiche, necessariamente meccaniche.
Ma nella terza generazione (a par.re dagli anni 70) un par.colare meccanismo offerto dall’hardware, coadiuvato da apposite nuove funzioni aggiunte al so8ware di base, consen.rono un migliore u.lizzo della CPU e una nuova importante funzionalità.
La mul.programmazione …
All’inizio i programmi venivano carica. in memoria uno alla volta e solo al termine di ciascuna esecuzione si provvedeva a rimuoverlo e sos.tuirlo con altro programma da eseguire.
La mul.programmazione mise in grado invece di eseguire “contemporaneamente” più programmi.
La CPU in effej eseguiva le istruzioni dei vari programmi u.lizzando i “tempi mor.” di uno per passare ad eseguire un pò di istruzioni di un altro.
… la mul.programmazione
Quando la CPU non può più con.nuare ad eseguire le istruzioni di un programma per mancanza di da., abbandona le istruzioni di quel programma, si annota l’indirizzo dell’ul.ma eseguita e passa ad eseguire un altro programma.
L’hardware genera delle “interrupt” quando una unità periferica finisce di lavorare e avverte il so8ware di questo evento.
Il so8ware a seguito di quell’evento può decidere di invitare la CPU a tornare ad eseguire uno dei programmi lascia. in aIesa e per il quale ormai i da. sono arriva. in memoria.
Limi. della memoria …
Anche la memoria era nei primi tempi, una risorsa costosa e quindi sempre piuIosto scarsa in relazione alle necessità, specie considerando che si cominciava a voler eseguire più programmi insieme.
Nacque così la “memoria virtuale”; si traIava di un meccanismo realizzato dall'hardware e dal so8ware che consen.va di u.lizzare la memoria reale come se fosse molto maggiore di quella effejva.
Memoria virtuale e “paging”
L’hardware era in grado di sapere con che frequenza erano accedu. dei blocchi di memoria (in genere erano blocchi da 4Kb) e il so8ware provvedeva a salvare su disco i blocchi meno “frequenta.” facendo così posto ad altri da. e programmi.
La memoria sembrava maggiore di quella esistente e al prezzo di un pò di aggravio di lavoro della CPU e con qualche rallentamento, si riusciva a simulare di avere una memoria ben maggiore di quella reale.
I sistemi opera.vi …
Ripensando anche solo a queste due ul.me interessan. caraIeris.che, ormai presen. in tuj i computer, ci si rende conto che è necessario disporre di un so8ware “non di applicazione” ma “di sistema” che si dedichi esclusivamente alla ges.one della stessa macchina.
Il sistema opera.vo è dunque un “so8ware di base” che in maniera più estensiva, si occupa della ges.one di TUTTE le risorse disponibili.
… sistemi opera.vi …
Così come sui mainframe, ogni computer anche personale ha un proprio sistema opera.vo.
Oggi esistono diversi sistemi opera.vi sia per i mainframe che per i personal computer.
Per ques. ul.mi i più no. sono quelli adoIa. da Microso8 (i vari Windows) e quelli Unix tra cui l’OSX di Apple.
… i sistemi opera.vi
Nel caso dei computer personali una parte non trascurabile del lavoro del sistema opera.vo è dedicato alla ges.one del video.
Si traIa di manipolare tuIa la grafica che è ormai una modo universalmente u.lizzato per consen.re l’interazione tra uomo e macchina.
Le re. LAN e WAN …
Local Area Network e Wide Area Network sono oggi una realtà consolidata
Le re. sono state e sono tuIora le principali protagoniste del processo di standardizzazione
Infaj la comunicazione tra computer di ogni dimensione, caraIeris.ca e produIore richiedeva assolutamente il rispeIo di regole standard comuni appositamente fissate.
… le re. LAN e WAN …
All’inizio, a cura dei diversi produIori nacquero protocolli diversi di comunicazione, ma ben presto l’Ethernet e le re. “a paccheIo” ebbero il sopravvento ed oggi esiste un unico protocollo universalmente u.lizzato sia per le LAN che per le WAN.
Il mondo delle comunicazioni immaginato da IBM assoggeIato ad un unico gestore centralizzato, è miseramente finito.
… le re. LAN e WAN
La rete a commutazione di paccheIo (X25) fa ormai da padrona.
Si traIa di una rete parite.ca che si riconfigura automa.camente all’inserimento dei nuovi nodi e nella quale il malfunzionamento di uno o più nodi è assolutamente privo di conseguenze.
Internet è la chiara dimostrazione di come la rete sia affidabile e sicura.
E i mainframe sono fini.?
No, i mainframe ci sono sempre e vengono u.lizza. dalle grosse organizzazioni, anche se la distribuzione dell’intelligenza ha avuto un grande boom e non conoscerà fine.
In più oggi, con la virtualizzazione e il “Cloud”, essi si apprestano a rivivere una seconda vita, offrendo grandi potenze che essendo presen. in rete sono u.lizzabili a distanza da chi ne sente il bisogno.
Conclusione
• Questo mondo che è un con.nuo divenire, evolverà ancora e sempre con un trend di crescita superiore ad ogni altro campo della scienza
• Gli obiejvi principali rimarranno l’aumento con.nuo delle potenze, la diminuzione delle dimensioni e dei consumi e un sempre miglior rapporto tra uomo e macchina.
La mia idea sui computer
STRUMENTO UTILE MA ANCHE EDUCATIVO
vedi:
“MIGLIORARE SE STESSI”
Grazie per l’aIenzione
• Grazie dell’aIenzione
• Franco Fellicò • Email: franco @ffellico.com
• Sito: hIp://www.ffellico.com