Un bref tour du PDP-11, le mini-ordinateur le plus influent de tous les temps

saccade.com

L’histoire de l’informatique pourrait sans doute être divisée en trois époques : celle des ordinateurs centraux, des mini-ordinateurs et des micro-ordinateurs. Les mini-ordinateurs ont fourni un pont important entre les premiers ordinateurs centraux et les micros omniprésents d’aujourd’hui. C’est l’histoire du PDP-11, le mini-ordinateur le plus influent et le plus réussi de tous les temps.

À leur époque, les mini-ordinateurs étaient utilisés dans une variété d’applications. Ils ont servi de contrôleurs de communication, de contrôleurs d’instruments, de grands préprocesseurs de système, de calculatrices de bureau et de gestionnaires d’acquisition de données en temps réel. Mais ils ont également jeté les bases d’avancées significatives en matière d’architecture matérielle et ont grandement contribué aux systèmes d’exploitation modernes, aux langages de programmation et à l’informatique interactive tels que nous les connaissons aujourd’hui.

Dans le monde informatique d’aujourd’hui, dans lequel chaque ordinateur exécute une variante de Windows, Mac ou Linux, il est difficile de faire la distinction entre les processeurs sous le système d’exploitation. Mais il fut un temps où les différences d’architecture CPU étaient un gros problème. Le PDP-11 aide à expliquer pourquoi c’était le cas.

Le PDP-11 a été introduit en 1970, à une époque où la plupart des calculs étaient effectués sur des mainframes coûteux de GE, CDC et IBM auxquels peu de gens avaient accès. Il n’y avait pas d’ordinateurs portables, d’ordinateurs de bureau ou d’ordinateurs personnels. La programmation n’était effectuée que par quelques entreprises, principalement en assemblage, COBOL et FORTRAN. La saisie a été effectuée sur des cartes perforées et les programmes ont été exécutés par lots non interactifs.

Bien que le premier PDP-11 ait été modeste, il a jeté les bases d’une invasion de mini-ordinateurs qui rendrait une nouvelle génération d’ordinateurs plus facilement disponible, créant essentiellement une révolution dans l’informatique. Le PDP-11 a contribué à la naissance du système d’exploitation UNIX et du langage de programmation C. Cela influencerait également grandement la prochaine génération d’architectures informatiques. Au cours de la durée de vie de 22 ans du PDP-11 – un mandat sans précédent selon les normes actuelles – plus de 600 000 PDP-11 ont été vendus.

Les premiers modèles PDP-11 n’étaient pas trop impressionnants. Le premier PDP-11 11/20 coûtait 20 000 $, mais il n’était livré qu’avec environ 4 Ko de RAM. Il utilisait une bande de papier comme stockage et disposait d’une console d’imprimante télétype ASR-33 qui imprimait 10 caractères par seconde. Mais il avait également une étonnante architecture orthogonale 16 bits, huit registres, 65 Ko d’espace d’adressage, un temps de cycle de 1,25 MHz et un bus matériel UNIBUS flexible qui prendrait en charge les futurs périphériques matériels. C’était une combinaison gagnante pour son créateur, Digital Equipment Corporation.

L’application initiale du PDP-11 comprenait le contrôle matériel en temps réel, l’automatisation de l’usine et le traitement des données. Au fur et à mesure que le PDP-11 a acquis une réputation de flexibilité, de programmabilité et d’abordabilité, il a été utilisé dans les systèmes de contrôle des feux de circulation, le système de défense antimissile Nike, le contrôle du trafic aérien, les centrales nucléaires, les systèmes de formation des pilotes de la Marine et les télécommunications. Il a également été le pionnier du traitement de texte et du traitement des données que nous tenons maintenant pour acquis.

Et l’influence du PDP-11 est particulièrement évidente dans la programmation d’assemblage de l’appareil.

Bases de la programmation en assembleur

Avant l’invention des langages de haut niveau tels que Python, Java et Fortran, la programmation se faisait en langage assembleur. La programmation en langage d’assemblage peut être effectuée avec très peu de RAM et de stockage, ce qui est parfait pour l’environnement des débuts de l’informatique.

Le langage d’assemblage est un format intermédiaire de bas niveau qui est converti en langage machine et qui peut ensuite être exécuté directement par l’ordinateur. Il est de bas niveau car vous manipulez directement des aspects de l’architecture de l’ordinateur. En termes simples, la programmation en assembleur déplace vos données octet par octet à travers les registres matériels et la mémoire. Ce qui a rendu la programmation du PDP-11 différente, c’est que la conception du mini-ordinateur était élégante. Chaque instruction avait sa place et chaque instruction avait un sens.

Un espace d’adressage de 16 bits signifiait que chaque registre pouvait adresser directement jusqu’à 64 Ko de RAM, les 4 Ko supérieurs étant réservés aux entrées et sorties mappées en mémoire. Les PDP-11 pourraient adresser un total de 128 Ko de RAM en utilisant des segments de registre (plus à ce sujet dans un instant). Ainsi, malgré les systèmes PDP-11 livrés avec seulement 4 Ko de RAM, ils étaient toujours productifs grâce à l’utilisation intelligente des premières techniques de programmation.

Un programme en langage assembleur

Il est plus facile de saisir ce concept à travers un exemple de programme simple en langage assembleur PDP-11, que nous verrons ci-dessous. Les mots clés qui commencent par un “.” sont des directives à l’assembleur. .globl exporte une étiquette en tant que symbole vers l’éditeur de liens pour une utilisation par le système d’exploitation. .text définit le début du segment de code. .data définit le début d’un segment de données séparé. Les mots-clés se terminant par un “:” sont des étiquettes. La programmation en assembleur utilise des étiquettes pour adresser symboliquement la mémoire. (Remarque : avec le jargon PDP-11 et le codage à venir, tout texte après / est un commentaire.)

Mots clés Traduction
.globl _main Exporter l’étiquette _main comme point d’entrée pour le système d’exploitation à utiliser
.texte Début du segment d’instruction où vit le code en lecture seule
_principal : MOV VAL1, R0 Copiez la valeur du mot à l’emplacement mémoire VAL1 dans le registre 0
AJOUTER 10 $, R0 Ajouter 10 à la valeur du registre 0
MOV R0, VAL1 Copiez la valeur du registre 0 dans l’emplacement mémoire VAL1
_.Les données Début du segment de données où vivent les données en lecture/écriture
VAL1 : .word 100 $ Réservez 2 octets de stockage pour contenir Val1, initialisé à 100

Bien que des valeurs numériques puissent être utilisées pour les adresses mémoire, l’utilisation d’étiquettes au lieu d’adresses codées en dur facilite la programmation et rend le code relocalisable en mémoire. Cela donne au système d’exploitation une flexibilité lors de l’exécution du code, garantissant que chaque programme est rapide et efficace.

La directive assembleur .data place les données dans un segment de mémoire qui est à la fois lisible et inscriptible. Le segment de mémoire pour le code est en lecture seule pour empêcher les erreurs de programmation de corrompre le programme et de provoquer des plantages. Cette séparation des instructions des données sur le PDP-11 est appelée “instruction et données séparées”. En plus d’ajouter de la stabilité, cette fonctionnalité double également l’espace d’adressage en activant 64 Ko pour le code et 64 Ko pour les données – cela était considéré comme une innovation à l’époque. En conséquence, les micro-ordinateurs X86 d’Intel ont ensuite largement utilisé les segments.

Leave a Comment