Capitolo 5
L'Evoluzione dell'Architettura (1960-1970)
L'avvento dei transistor e dei circuiti integrati non solo permise di costruire computer più veloci e affidabili, ma influenzò profondamente anche la loro architettura interna. Il decennio 1960-1970 vide l'emergere di nuove concezioni architetturali che si allontanarono dai modelli monolitici dei primi mainframe, aprendo la strada a sistemi più modulari, flessibili e adatti a una gamma più ampia di applicazioni.
5.1 L'Emergere dei Minicomputer e Nuove Architetture
Come accennato nel capitolo precedente, uno degli sviluppi più significativi di questo periodo fu l'ascesa dei minicomputer. Questi sistemi, come il DEC PDP-8 (introdotto nel 1965) e l'HP 2100 (introdotto nel 1966), si differenziavano dai grandi mainframe per diverse caratteristiche architetturali:
- Lunghezza della parola (Word Length): I minicomputer spesso utilizzavano lunghezze di parola inferiori rispetto ai mainframe (ad esempio, 12 o 16 bit contro i 36 o 60 bit dei mainframe). Questo compromesso permetteva di ridurre la complessità e il costo dell'hardware, pur offrendo una potenza di calcolo significativa per molte applicazioni.
- Dimensioni della memoria: La quantità di memoria principale indirizzabile dai minicomputer era generalmente inferiore rispetto ai mainframe, ma comunque sufficiente per molte applicazioni scientifiche, di controllo di processo e di elaborazione dati di medie dimensioni.
- Set di istruzioni: I set di istruzioni dei minicomputer erano spesso più semplici e compatti rispetto a quelli dei mainframe, focalizzandosi sulle operazioni più frequentemente utilizzate.
- Architettura più modulare: I minicomputer erano spesso progettati con un'architettura più modulare, che permetteva di configurare il sistema con diverse quantità di memoria, periferiche e interfacce in base alle esigenze specifiche dell'utente.
- Maggiore enfasi sull'interattività: A differenza dei mainframe, che spesso operavano in modalità batch, i minicomputer iniziarono a supportare modalità di interazione più dirette con l'utente, aprendo la strada a sistemi time-sharing e ad applicazioni interattive.
L'architettura del DEC PDP-8, ad esempio, era notevolmente più semplice rispetto a quella dei grandi mainframe IBM dell'epoca. Utilizzava un bus unico (Omnibus) per interconnettere la CPU, la memoria e le periferiche, semplificando la progettazione e la manutenzione del sistema. Questa architettura più snella contribuì al successo del PDP-8 e alla sua diffusione in numerosi laboratori e università.
5.2 Concetti di Memoria Più Avanzati
L'evoluzione dell'architettura dei computer in questo periodo fu strettamente legata ai progressi nelle tecnologie di memoria. La memoria a nuclei di ferrite divenne la tecnologia dominante per la memoria principale (RAM) grazie alla sua affidabilità, velocità di accesso relativamente rapida (rispetto ai tamburi magnetici) e non volatilità (manteneva i dati anche in assenza di alimentazione elettrica).
L'organizzazione della memoria a nuclei di ferrite era tipicamente tridimensionale, con i nuclei disposti su una griglia attraversata da fili di selezione e di lettura/scrittura.
L'indirizzamento della memoria avveniva selezionando le opportune linee di filo per magnetizzare o leggere lo stato di un particolare nucleo. La capacità della memoria principale nei minicomputer crebbe significativamente nel corso degli anni '60, passando da pochi kilobyte a decine di kilobyte.
Inoltre, in questo periodo iniziarono a comparire i primi concetti di gerarchia di memoria. L'idea era di utilizzare diversi tipi di memoria con caratteristiche di velocità e costo differenti per ottimizzare le prestazioni del sistema. Ad esempio, alcuni sistemi potevano includere una piccola quantità di memoria molto veloce (anche se costosa), utilizzata come una sorta di "cache" per i dati e le istruzioni più frequentemente utilizzati, in combinazione con una quantità maggiore di memoria principale più lenta ed economica. Questa precoce forma di gerarchia di memoria anticipava i sofisticati sistemi di cache che sarebbero diventati una caratteristica fondamentale delle architetture dei computer moderni.
5.3 L'Introduzione dell'Interrupt
Un'innovazione architetturale fondamentale introdotta in questo periodo fu il meccanismo di interrupt. Nei primi computer, la CPU doveva costantemente interrogare (polling) i dispositivi di input/output per verificare se avessero bisogno di attenzione (ad esempio, se un dispositivo di input aveva nuovi dati pronti o se un dispositivo di output aveva completato un'operazione). Questo approccio era inefficiente, in quanto la CPU sprecava cicli di clock preziosi in attesa di eventi.
L'introduzione degli interrupt permise ai dispositivi esterni di segnalare direttamente alla CPU la necessità di attenzione.
Quando un dispositivo generava un interrupt, la CPU sospendeva temporaneamente l'esecuzione del programma corrente, salvava il suo stato (ad esempio, il contenuto dei registri e l'indirizzo della prossima istruzione da eseguire) e passava a eseguire una speciale routine di gestione dell'interrupt (interrupt handler) associata a quel dispositivo. Una volta completata la gestione dell'interrupt, la CPU ripristinava lo stato del programma interrotto e riprendeva la sua esecuzione dal punto in cui era stata interrotta.
L'introduzione degli interrupt migliorò significativamente l'efficienza dei sistemi informatici, consentendo alla CPU di dedicare più tempo all'esecuzione dei programmi e di rispondere in modo più rapido agli eventi esterni. Questo meccanismo fu cruciale per lo sviluppo di sistemi operativi più sofisticati e per il supporto di interazioni più dinamiche con gli utenti e con il mondo esterno.
5.4 L'Introduzione del DMA (Direct Memory Access)
Un'altra importante evoluzione architetturale fu l'introduzione del DMA (Direct Memory Access). Inizialmente, tutti i trasferimenti di dati tra i dispositivi di input/output e la memoria principale dovevano passare attraverso la CPU. Questo approccio poteva sovraccaricare la CPU, soprattutto per i trasferimenti di grandi quantità di dati, come nel caso della lettura o scrittura su disco o nastro magnetico.
Il DMA introdusse un meccanismo che permetteva a determinati dispositivi periferici di accedere direttamente alla memoria principale per trasferire dati, senza l'intervento continuo della CPU. Un controller DMA veniva incaricato di gestire il trasferimento dei dati, liberando la CPU per eseguire altre operazioni.
Una volta completato il trasferimento, il controller DMA poteva generare un interrupt per notificare alla CPU che i dati erano pronti in memoria o che la scrittura era stata completata.
L'introduzione del DMA migliorò notevolmente le prestazioni del sistema, specialmente per le operazioni di input/output ad alta velocità, consentendo di trasferire grandi quantità di dati in modo più efficiente e di liberare la CPU per altre attività di elaborazione.
5.5 L'Architettura a 16-bit e Oltre
Come accennato in precedenza, i minicomputer spesso adottavano architetture con lunghezze di parola inferiori rispetto ai mainframe. Tuttavia, nel corso degli anni '60, si assistette a una tendenza verso lunghezze di parola maggiori. L'introduzione di architetture a 16-bit nei minicomputer, come nel DEC PDP-11 (introdotto nel 1970), rappresentò un passo significativo in avanti. Una maggiore lunghezza di parola permetteva di indirizzare una quantità maggiore di memoria e di manipolare dati più grandi in una singola operazione, migliorando le prestazioni complessive del sistema e aprendo la strada a software più complesso.
Parallelamente, anche nel mondo dei mainframe si continuò a evolvere verso architetture con lunghezze di parola maggiori, come i sistemi IBM System/360 che utilizzavano parole a 32 bit (e anche formati a 64 bit per i numeri in virgola mobile), offrendo una maggiore potenza di calcolo e capacità di indirizzamento.
5.6 L'Influenza dei Linguaggi di Programmazione sull'Architettura
È importante notare che l'evoluzione dell'architettura dei computer non avvenne isolatamente, ma fu spesso influenzata dalle esigenze dei linguaggi di programmazione di alto livello che stavano emergendo. Linguaggi come FORTRAN e COBOL, con le loro specifiche esigenze in termini di manipolazione di numeri, array, stringhe e strutture dati, spinsero i progettisti di architetture a includere set di istruzioni e meccanismi di gestione della memoria che potessero supportare in modo efficiente tali operazioni. Questa interazione tra le esigenze del software e le capacità dell'hardware fu un motore fondamentale dell'evoluzione dell'informatica.
Il decennio 1960-1970 fu un periodo cruciale per l'evoluzione dell'architettura dei computer. L'emergere dei minicomputer con le loro architetture più modulari e interattive, l'introduzione di concetti di memoria più avanzati come la gerarchia di memoria, e l'implementazione di meccanismi fondamentali come gli interrupt e il DMA rappresentarono passi significativi verso sistemi informatici più potenti, flessibili ed efficienti. La tendenza verso lunghezze di parola maggiori e la crescente influenza dei linguaggi di programmazione sull'architettura prepararono il terreno per le innovazioni che avrebbero caratterizzato i decenni successivi, culminando nella rivoluzione del microprocessore e del personal computer.