Un breve sguardo al PDP-11, il minicomputer più influente di tutti i tempi

Un breve sguardo al PDP-11, il minicomputer più influente di tutti i tempi

La storia della tecnologia informatica può essere suddivisa approssimativamente in tre epoche: l’era dei mainframe, dei minicomputer e dei microcomputer. I minicomputer sono diventati un importante collegamento tra i primi mainframe e gli onnipresenti microcomputer di oggi. Questa è la storia del PDP-11, il minicomputer più influente e di successo.

Un tempo, i minicomputer venivano utilizzati in una varietà di applicazioni. Servivano come controller di comunicazione, controller di strumenti, preprocessori di grandi sistemi, calcolatrici desktop e processori di acquisizione dati in tempo reale. Ma hanno anche posto le basi per progressi significativi nell’architettura hardware e hanno dato importanti contributi ai moderni sistemi operativi, linguaggi di programmazione e calcolo interattivo come li conosciamo oggi.

Nel mondo informatico di oggi, in cui ogni computer esegue una versione di Windows, Mac o Linux, è difficile distinguere le CPU che sono alla base del sistema operativo. Ma c’è stato un tempo in cui le differenze nell’architettura della CPU contavano molto. Il PDP-11 aiuta a spiegare perché è così.

Il PDP-11 è stato introdotto nel 1970, quando la maggior parte dei computer veniva eseguita su costosi mainframe GE, CDC e IBM a cui pochi avevano accesso. Non c’erano laptop, desktop, personal computer. Solo poche aziende erano coinvolte nella programmazione, principalmente in linguaggio assembly, COBOL e FORTRAN. L’input è stato effettuato con schede perforate e i programmi sono stati avviati da esecuzioni batch non interattive.

Sebbene il primo PDP-11 fosse modesto, ha posto le basi per l’invasione dei minicomputer che ha reso i computer di nuova generazione più accessibili, sostanzialmente rivoluzionando l’informatica. Il PDP-11 ha contribuito a creare il sistema operativo UNIX e il linguaggio di programmazione C. Inoltre influenzerebbe notevolmente la prossima generazione di architetture di computer. Nei 22 anni di vita del PDP-11 – un periodo di tempo senza precedenti per gli standard odierni – sono stati venduti più di 600.000 PDP-11.

I primi PDP-11 non erano così impressionanti. Il primo PDP-11 11/20 costava $ 20.000 ma aveva solo 4 KB di RAM. Utilizzava nastro di carta come memoria e aveva una console di telescrivente ASR-33 che stampava 10 caratteri al secondo. Ma aveva anche un’incredibile architettura ortogonale a 16 bit, otto registri, 65 KB di spazio degli indirizzi, un tempo di ciclo di 1,25 MHz e un bus hardware UNIBUS flessibile che supportava le future periferiche hardware. È stata una combinazione vincente per il suo creatore, Digital Equipment Corporation.

L’applicazione iniziale per il PDP-11 includeva il controllo hardware in tempo reale, l’automazione di fabbrica e l’elaborazione dei dati. Man mano che il PDP-11 si guadagnava una reputazione di flessibilità, programmabilità e convenienza, trovò impiego nei sistemi di controllo dei semafori, nel sistema di difesa missilistica di Nike, nel controllo del traffico aereo, nelle centrali nucleari, nei sistemi di addestramento dei piloti della Marina e nelle telecomunicazioni. Ha anche aperto la strada all’elaborazione di testi e dati che ora diamo per scontati.

E l’influenza del PDP-11 è più evidente nella programmazione dell’assemblaggio del dispositivo.

Nozioni di base sulla programmazione di assiemi

Prima dell’invenzione di linguaggi di alto livello come Python, Java e Fortran, la programmazione veniva eseguita in linguaggio assembly. La programmazione in linguaggio assembly può essere eseguita con pochissima RAM e spazio su disco, ideale per i primi giorni dell’informatica.

Il linguaggio assembly è un formato intermedio di basso livello che viene convertito in linguaggio macchina, che può quindi essere eseguito direttamente dal computer. È di basso livello perché controlli direttamente gli aspetti dell’architettura del computer. In poche parole, la programmazione in linguaggio assembly sposta i tuoi dati byte per byte attraverso i registri hardware e la memoria. Ciò che distingueva la programmazione PDP-11 era l’elegante design del minicomputer. Ogni istruzione aveva il suo posto e ogni istruzione aveva un significato.

Lo spazio degli indirizzi a 16 bit significava che ogni registro poteva indirizzare direttamente fino a 64 KB di RAM, con i 4 KB superiori riservati all’input e all’output mappati in memoria. I PDP-11 potrebbero indirizzare un totale di 128 KB di RAM utilizzando segmenti di registro (ne parleremo tra poco). Quindi, anche se i sistemi PDP-11 venivano spediti con solo 4 KB di RAM, erano comunque produttivi grazie all’uso intelligente delle prime tecniche di programmazione.

Programma di montaggio

Il modo più semplice per comprendere questo concetto è con un semplice programma in linguaggio assembly PDP-11, che vedremo di seguito. Le parole chiave che iniziano con “.”sono direttive per l’assembler. .globlesporta l’etichetta come simbolo nel linker per l’utilizzo da parte del sistema operativo. .textdefinisce l’inizio di un segmento di codice. .datadefinisce l’inizio di un singolo segmento di dati. Le parole chiave che terminano in “:” sono tag. La programmazione in linguaggio assembly utilizza etichette per indirizzare simbolicamente la memoria. (Nota: con l’avvento del gergo e della codifica PDP-11, qualsiasi testo dopo / è un commento.)

Parole chiave Traduzione
.globl_main Esportare l’etichetta _main come punto di ingresso per l’utilizzo da parte del sistema operativo.
.testo Inizio del segmento di istruzione contenente codice di sola lettura
_main: VALORE MOTORE1, R0 Copia il valore della parola dalla posizione di memoria VAL1 al registro 0.
AGGIUNGI $ 10, R0 Aggiungi 10 al valore nel registro 0
VALORE R0 MOTORE1 Copia il valore dal registro 0 alla locazione di memoria VAL1.
_.dati L’inizio di un segmento di dati contenente dati di lettura/scrittura.
VAL1:. parola $ 100 Riserva 2 byte di memoria per mantenere Val1 inizializzato a 100.

Sebbene sia possibile utilizzare valori numerici per gli indirizzi di memoria, l’utilizzo di etichette invece di indirizzi hardcoded semplifica la programmazione e consente di spostare il codice all’interno della memoria. Ciò offre al sistema operativo la flessibilità necessaria per eseguire il codice, rendendo ogni programma veloce ed efficiente.

direttiva assembler. data colloca i dati in un segmento di memoria che è sia leggibile che scrivibile. Il segmento di memoria del codice è di sola lettura per evitare che errori di programmazione danneggino il programma e causino arresti anomali. Questa separazione delle istruzioni dai dati sul PDP-11 è chiamata “separazione di istruzioni e dati”. Oltre a migliorare la stabilità, questa funzione raddoppia anche lo spazio degli indirizzi, fornendo 64 KB per il codice e 64 KB per i dati, che all’epoca era considerata un’innovazione. Di conseguenza, i microcomputer Intel X86 hanno successivamente fatto ampio uso di segmenti.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *