# PDP-10

Le PDP-10 est un ordinateur créé à la fin des années 1960 par Digital Equipment Corporation. Son nom signifie « Programmed Data Processor model 10 ».
Seul grand système au catalogue de DEC, il cibla une clientèle moins commerciale qu'IBM et fut particulièrement populaire durant les années 1970 parmi les universités et les centres de recherche, notamment Harvard, le MIT, Standford, ou encore le CERN, où il servit tant aux travaux de recherche qu'aux tâches administratives.
Les PDP-10 jouèrent un rôle prépondérant dans la création d'ARPANET et des débuts d'Internet, étant à l'époque un des rares ordinateurs abordables disposant de la puissance nécessaire pour le fonctionnement d'une pile NCP puis TCP/IP complète en environnement multi-utilisateurs. De la même façon, le fournisseur de services Compuserve en employa à son apogée plus de 200, et les utilisa jusqu'à la fin des années 1980, puis en petite série jusqu'à la fin des années 2000.
L'architecture 36 bits du PDP-10, permettant d'enregistrer les 2x18 bits d'une paire LISP (cons cell) sur un seul mot de mémoire, en fit également un ordinateur particulièrement prisé pour la recherche en intelligence artificielle de la fin des années 1960 au milieu des années 1980, notamment par le MIT AI Lab et le Stanford Artificial Intelligence Laboratory (SAIL), avant l'émergence des machines LISP. SHRDLU, un des premiers programmes de reconnaissance de langage humain, en est un exemple.
Certains programmes développés par le MIT pour le PDP-10 existent encore de nos jours, tels que Emacs, TeX, MacLisp ou encore Scheme.
Selon DEC, il s'en était vendu environ 1500 en 1980.
Le PDP-10 utilise un processeur 36 bits comme son prédécesseur, le PDP-6, dont il partage le même jeu d'instructions avec quelques compléments. L'architecture du PDP-10 est particulièrement orthogonale, à la manière des PDP-11 ou des microprocesseurs Motorola 68000.
A partir de 1970, DEC abandonna le nom de PDP-10, craignant que ce dernier ne soit assimilé aux mini-ordinateurs de la même marque, au profil de DECsystem10, parfois abrégé DEC-10, auquel se rajouteront ultérieurement les DECSYSTEM20 fonctionnant sous TOPS-20.
Au début des années 1980, DEC travaillait simultanément sur un processeur de PDP-10 de nouvelle génération, le projet Jupiter (KC10), et sur le super-mini VAX, descendant 32 bits du PDP-11. DEC réalisa que ses deux gammes entraient en concurrence, et décida en 1983 l'arrêt de la gamme PDP-10 et du futur processeur KC10, pourtant presque terminé, pour se concentrer sur VAX, plus rentable et doté d'une architecture 32 bits plus contemporaine.
Malgré l'abandon du matériel, un certain nombre de clones furent produit, et l'on trouve encore de nos jours des traces du PDP-10 et du système TOPS-20 dans certains équipements.

## Systèmes d'exploitation

Le système original du PDP-10, hérité du PDP-6, s'appelait simplement "monitor", puis fut renommé TOPS-10 lors du changement de nom commercial vers DECSYSTEM-10.
DEC fournissait le code source de TOPS-10 avec le matériel, ce qui lui permit de servir de base pour d'autres systèmes d'exploitation, notamment WAITS (Western Artificial Intelligence Time Sharing), créé par l'université de Standford. CompuServe créa également son propre système dérivé de TOPS-10, ainsi que l'entreprise Tymshare qui développa un système à mémoire paginée dénommé TYMCOM-X. TOPS-10 servi aussi d'inspiration, ultérieurement, pour les systèmes CP/M et MS-DOS. TOPS-10 est un des rares systèmes, y compris de nos jours, à pouvoir faire fonctionner simultanément des tâches de type batch, temps réel et temps partagé.
BBN, qui produisit un gestionnaire de mémoire virtuelle pour le processeur KA-10, développa un système permettant d'en tirer parti : TENEX, qui devint populaire dans le monde de la recherche. DEC le porta ultérieurement vers le processeur KL10, en l'améliorant substantiellement. Ce système deviendra TOPS-20, de la gamme DECSYSTEM-20.
Le MIT, qui avait développé le système à temps partagé CTSS (Compatible Time-Sharing System) pour l'IBM 709, développa ITS, Incompatible Timesharing System, pour les PDP-6 et 10. ITS, dont l'un des quatre développeurs était Richard Stallman, était un système open-source et remarquablement avancé, qui préfigura la culture hacker et le projet GNU.
TOPS-10, le système d'exploitation principal du PDP-10, reçu des mises à jour jusqu'en 1988 avec la version 7.04.

## Processeurs
### KA10

Le premier processeur de PDP-10 est le KA10, sorti en septembre 1967. Il se compose de trois armoires pesant un total de 875 kg et consommant 4,3 kW. Il utilise des cartes modulaires "Flip-Chip" de série B construites en logique discrète DTL, ce qui en fait un ordinateur de deuxième génération. Le KA-10 est dépourvu de mémoire virtuelle, se limitant à un adressage mémoire sur 18 bits (256 Kmots de 36 bits, soit environ 1,1 Mo de mémoire). L'entreprise BBN proposa un gestionnaire de mémoire virtuelle sur 23 bits pour le KA-10, ainsi qu'un système d'exploitation en tirant partie : TENEX, qui servira ultérieurement de base pour le système TOPS-20.
La performance du KA-10 était estimée par DEC aux alentours de 0,38 MIPS.

### KI10

Le processeur KI10 (I pour "Integrated), est commercialisé en mai 1972 après trois ans de conception. Il est implémenté avec des circuits intégrés TTL montés sur de larges cartes, qui permettent une fiabilisation de l'électronique, ainsi qu'une réduction de la consommation électrique. La performance est presque doublée par rapport au KA10, à environ 0,72 MIPS. Le KI10 étend l'espace d'adressage à 22 bits, mais surtout apporte une gestion de mémoire virtuelle, suivant le même chemin que la série IBM 370 sortie cette même année. Il peut théoriquement adresser jusqu'à 4 mégamots de mémoire, soit environ 20 Mo, une quantité rarement atteinte en 1972. L'espace d'adressage virtuel par processus est de 8 mégamots, soit environ 36 Mo. Quatre modèles sont commercialisés par DEC : les 1060, 1070 et 1077, ce dernier incorporant deux CPU. Les 1070 et 1077 peuvent exécuter jusqu'à 127 tâches simultanément.

### KL10

Le KI10 est suivi du KL10 (L pour "Large Scale"), qui commence sa carrière en juin 1975 après quatre ans d'étude et conception. Le KL10 est le premier de la gamme à utiliser un microcode, et est conçu avec des circuits intégrés ECL, augmentant encore sa performance (1,8 MIPS), mais également sa consommation électrique. DEC estimait la performance du KL10 20% supérieure à celle d'un IBM 370/158, alors son concurrent le plus proche, ou encore près de cinq fois celle du KA10.
Le KL10 sera suivi d'une variante B en 1978. En plus du mode d'adressage paginé, cette variante apporte un espace d'adressage étendu supportant 32 "sections" de 256 kmots ainsi que des changements substantiels dans le jeu d'instruction, faisant du KL10-B un processeur distinct. La version 3 de TOPS-20 sera le premier système à tirer parti de ces nouvelles capacités, tandis que la version 4.1 ne fonctionnera plus que sur le KL10-B.
Les processeurs KL10-A et B consomment environ 20 kW pour un poids de 1200 kg, répartis dans trois armoires. Il faut à cela ajouter les armoires de mémoire et de gestion des périphériques.

### KS10

Sorti en 1978, le KS10 (S pour "Small Scale") est une variante à bas coût utilisant des puces Am2900 à bit-slice, et un microprocesseur 8 bits (Intel 8080) pour l'amorçage et contrôle. Afin de réduire les coûts, les périphériques du KS10 utilisent un bus UNIBUS, comme les PDP-11 et VAX-11. Les bus mémoire et entrées-sorties traditionnels du PDP-10 ne sont pas supportés sur ce processeur, et à cet effet, les instructions d'entrées-sorties sont différentes sur le KS10 des autres processeurs de PDP-10. Ce processeur est, comme le KL10, microcodé, et sa séquence de démarrage est identique : chargement du microcode depuis un périphérique de stockage (bande ou disque), démarrage du processeur central, puis passage en mode de contrôle une fois le processeur démarré. Contrairement aux autres processeurs de PDP-10, le KS10 fonctionne en courant monophasé sur prise domestique.

### KC10

Le processeur KC10, avorté en 1983 alors que sa conception touchait à sa fin, utilisait des puces de portes NAND intégrées (comme le VAX 11/750) en technologie ECL. Son processeur de contrôle aurait été basé sur un microprocesseur F11 (FONZ-11) de PDP-11/23$^,$. Les technologies du KC10 seront en partie ré-utilisées pour le VAX 8600.
Sa fréquence d'horloge maître était prévue entre 50 et 100 MHz, exceptionnelle pour le début des années 1980.

### Processeurs frontaux

Comme la plupart des grands-systèmes, le PDP-10 peut employer des processeurs frontaux pour la gestion des entrée-sorties des périphériques plus lents tels que les terminaux, afin que leurs interruptions ne ralentissent pas le processeur principal.
Le PDP-10 utilise à cet effet des unités DA10 permettant la connexion de quatre PDP-8 ou PDP-9, ou DL10, permettant la connexion de quatre PDP-11. Ces processeurs frontaux sont alors en mode "esclave" du PDP-10 et ne peuvent être utilisés de façon autonome.
Le KL-10, microcodé, dépend d'un processeur frontal pour son amorçage et contrôle. Il inclut à cet effet un PDP-11/40 servant à charger le microcode du KL-10 depuis une bande magnétique (généralement depuis un lecteur TU-56), à effectuer le démarrage du CPU, et à permettre son diagnostique. Il utilise pour cela un système d'exploitation dédié, RSX-20F, dérivé de RSX-11M, qui implémente les commandes de diagnostique. Le KL-10 marque l'abandon des témoins lumineux et des clés en façade, désormais remplacés par la console de diagnostique sur le processeur frontal, accédée depuis un terminal. Les témoins lumineux en façade sont ceux du PDP-11/40 mais ne sont pas connectés au KL-10.
Le KS-10 utilise un microprocesseur Intel 8080 comme processeur frontal.

### Autres notes

DEC commercialisa les trois premières générations de processeurs sous le nom commercial DECsystem10 (sous TOPS-10), auquel se rajouta DECSYTEM20 (sous TOPS-20) à partir de 1977. A partir de cette même année, DEC commercialise le VAX 11/780 et ré-utilise les mêmes armoires pour le PDP-10, qui change alors d'apparence. La livrée DECsystem10 utilise un liseré bleu, tandis que la livrée DECSYSTEM20 utilise un liseré orange. Le KS10 fut uniquement commercialisé avec la livrée DECSYSTEM20 (modèle 2020).
À l'exception du KS10, toutes les générations sont disponibles en version bi-processeurs, ou quadri-processeurs pour le KL10.
Le jeu d'instruction des PDP-10 comprend 366 instructions pour le KA10, 378 pour le KI10 et 398 pour le KL10.
Récapitulatif d'implémentation des processeurs DECsystem-10$^,$ :
| Processeur | PDP-6 | KA10 | KI10 | KL10 | KS10 |
| Début de conception | 03/1963 | 01/1966 | 12/1969 | 01/1972 | Inconnue |
| Début de commercialisation | 06/1964 | 09/1967 | 05/1972 | 06/1975 | 1978 |
| Logique | Discrète, DTL | Discrète, DTL | Intégrée (MSI), TTL | Intégrée (MSI), ECL | Intégrée (LSI, bitslice) |
| MIPS (est.) | 0,25 | 0,38 | 0,72 | 1,8 | 0,3 |
| Prix (USD) | $120K | $150K | $200K | $250K | Inconnu |
| Nombre de registres | 16 | 16 | 4 x 16 | 8 x 16 | 8 x 16 |
| Gestion de la mémoire | Adressage 18 bits Registres de protection et réallocation pour les segments partagés de programmes. Max 256 kmots | Idem PDP-6 | Adressage 22 bits Pagination possible via 32 mots de mémoire associative (max 4 Mmots) | Adressage 22 bits Pagination via cache de mémoire associative (max 4 Mmots) | Adressage 20 bits, pagination possible (max 512 kmots) |
| Parallélisme | Aucun | Pipeline raccourci par rapport au PDP-6 | Recherche d'instruction (fetch) en avance de phase (4 mots) | Cache d'instructions de 2 à 4 kmots | Cache d'instructions de 512 mots |
| Fabrication | Modules larges de composants discrets, peu fiable | Wrappage automatisé des interconnexions au fond de panier | Wrappage automatisé des paires torsadées | Modules larges de circuits intégrés, fiable. | Circuits intégrés bit-slice, microprocesseur |
| Conséquence | A servi de prototype du PDP-10 | Industrialisation possible | Meilleures performances (science, temps-réel) | Meilleures performances : cache, microcode, I/O... | Version à bas coût du PDP10, peut fonctionner dans une seule armoire alimentée en courant domestique (110-240VAC) |

## Clones

À la suite de l'abandon du PDP-10 en 1983, DEC réorienta ses clients vers le VAX 11/780. Ce dernier, vanté pour son espace d'adressage 32 bits (512 Mo physique, 2 Go virtuels), ne pouvait cependant être initialement configuré qu'avec un maximum de 2 Mo de mémoire, contrairement aux 20 Mo des KI-10 et KL-10. De plus, le riche écosystème 36 bits du PDP-10 ne fonctionnait pas sur VAX.
Un certain nombre de constructeurs décidèrent alors de commercialiser des clones.

### Foonly

Le laboratoire d'intelligence artificielle de l'université de Standford, forte utilisatrice de PDP-10, avait lancé le projet Superfoonly visant à concevoir un processeur de PDP-10 un ordre de grandeur plus performant que le KA-10.
Alors que la conception du processeur touchait à sa fin, la DARPA, qui finançait le projet, décida de se retirer, signant l'arrêt des études. Néanmoins, les travaux réalisés inspirèrent la création du KL-10, puis furent repris par l'entreprise Foonly créée par la même occasion.
Le premier clone, le Foonly F-1, est produit en 1978, avant l'arrêt de commercialisation du PDP-10. Le F-1 reprend l'architecture du KA-10, ré-implémenté en ECL et cadencé à une vitesse de 11.1 MHz. Sa performance de 4.5 MIPS en fait le PDP-10 le plus performant de l'époque. Le F-1 possède une mémoire vidéo de 3 Mo permettant de générer des trames vidéo, et fût à cet effet utilisé pour les effets graphiques de certains films des années 1980, notamment Tron ou encore Star Trek III.
La gamme fût complétée par les F-2, F-3, F-4 et F-5, chacun moins onéreux mais moins puissant que le précédent.

### Xerox

Au début des années 1970, Xerox travaillait sur différents projets de recherche en intelligence artificielle, nécessitant de nouveaux moyens informatiques. L'architecture du PDP-10 se prêtant bien à cette tâche ainsi qu'au temps partagé, mais Xerox et DEC étant partiellement en rivalité, il fut décidé d'en créer un clone, le MAXC (Multiple Access Xerox Computer). Cette machine fut construite entre 1971 et 1973.
Par rapport aux modèles vendus par DEC, le MAXC utilisait de la mémoire à semi-conducteurs plutôt qu'à tores de ferrite, devenant l'un des premiers ordinateurs à en être équipé. Le processeur était implémenté avec des puces TTL comme le KI-10, et micro-codé comme sur les KI-10 et KL-10. Un Data General Nova 800 était employé comme processeur frontal, tandis qu'un gestionnaire de mémoire virtuelle inspiré du Pager de BBN permettait l'exécution de TENEX et l'utilisation simultanée du système par environ cent utilisateurs. La performance en calcul du MAXC était intermédiaire entre le KA-10 et le KI-10.
Un soin particulier fut apporté à la fiabilité du matériel avec notamment le choix de mémoire ECC. Anecdotiquement, le MAXC établi le record de la plus longue disponibilité continue d'un nœud ARPANET.
Si le MAXC ne devint pas un produit commercial, son succès en usage interne entraîna la construction d'un deuxième MAXC entre 1976 et 1978. Le premier MAXC fut retiré du service en 1981.

### Systems Concepts

Systems Concepts, Inc. proposa également des clones. Les SC-20, 25 et 30 approchaient de la performance des F-1, tout en consommant moins d'énergie et de place. Ils ré-implémentaient le processeur KL-10 et de ce fait, pouvaient exécuter nativement et deux à trois fois plus rapidement les binaires de KL-10.
Ces clones furent suivi du SC-40, sorti en 1993. Sa vitesse était d'environ huit fois celle du KL-10, soit une performance d'environ 12 MIPS. Son espace d'adressage, étendu à 30 bits, permettait d'adresser 64 mégamots (288 Mo).

### CompuServe

CompuServe, un des plus gros utilisateurs de PDP-10, utilisa plus d'une dizaine de ces clones, tout en apportant des améliorations sur les machines DEC existantes (alimentations à découpage, remplacement des centaines de témoins lumineux à incandescences par des LED). Le dernier SC40 fût éteint en 2009.

### XKL

L'entreprise XKL, spécialisée dans les équipements réseau, proposa le TOAD1 en 1995. Basé sur le DECSYSTEM20 et fonctionnant sous TOPS-20, il incluait un bus d'adressage mémoire de 33 bits (soit une capacité d'adressage d'environ 8 Go), dont 30 bits virtuels. Il fut suivi en 2005 du TOAD2, intégré sur un seul FPGA. L'architecture du TOAD2 semble encore utilisée dans les équipements réseau commercialisés par XKL, et un système embarqué basé sur TOPS-20 est toujours employé aujourd'hui pour la configuration de ses équipements.

## Influence

Le premier courrier électronique fût échangé entre deux PDP-10 adjacents et connectés via ARPANET en 1971, marquant pour la première fois l'utilisation du caractère arobase dans l'adresse des destinataires.
C'est également sur un PDP-10 que Bill Gates découvrit l'informatique à la Lakeside School de Seattle. Il y réalisa avec Paul Allen son premier programme, un jeu de tic-tac-toe. Le système TOPS-10 qu'ils utilisent alors influencera bien plus tard MS-DOS, en particulier pour certaines commandes, les extensions (.EXE, .TXT...) et les caractères de contrôle.
Les programmes commercialisés par Microsoft durant ses trois premières années d'existence furent également développés sur un PDP-10 (KA10), dont le tout premier, Microsoft BASIC, à l'aide d'émulateurs pour les tests et portages vers les architectures cibles, notamment Intel 8080 et MOS 6502. Les anciens codes sources rendus publics par Microsoft mentionnent parfois le PDP-10 en commentaire.
Paul Allen acheta en 1997 un XKL TOAD-1 pour sa collection personnelle.
Richard Stallman, promoteur du mouvement pour le logiciel libre (terme utilisé par opposition à celui de logiciel propriétaire), débuta lui aussi sa carrière au MIT AI Lab sur cette machine, pour laquelle il nourrissait une certaine affection. Il fut par ailleurs un des quatre développeurs originaux du système ITS, dont l'influence, ainsi que celle des programmes développés dessus (Emacs, LISP), se fera plus tard sentir dans le projet GNU.
On retrouve aussi la trace du PDP-10 dans les instructions LDB et DPB (Load/Deposit Byte) du Common LISP, directement tirées de son jeu d'instruction.
Aujourd'hui, le PDP-10 vit toujours via l'émulateur SIMH, capable de faire fonctionner les quatre processeurs de PDP-10 sur une machine Unix ou Windows. Des copies des systèmes d'exploitation TOPS-10, TOPS-20, ITS et WAITS sont également disponibles en ligne. Certains passionnés ont également réalisé des clones de PDP-10 sur FPGA.
En 2023, le fournisseur de service SDF intègre des SC-40 à son offre en complément des XKL TOAD2, et permet des connexions publiques à ces systèmes fonctionnant sous TOPS-20.
Une réplique fonctionnelle à échelle 2:3 du panneau de contrôle du KA-10 est disponible depuis 2024 à destination des hobbyistes, sous le nom de PiDP-10.

## Galerie

* Une des nombreuses cartes "flip chip" en logique discrète utilisées par le KA-10
* Fond de panier wrappé d'un processeur KA-10
* Un CPU KL10-DA 1090 (trois armoires de gauche) et six modules mémoire MH10 (4*64 kmots)
* Un des fonds de panier du PDP-10 1090 (KL-10)
* KL-10 en livrée DECSYSTEM20. La photo au dessus représente Bill Gates et Paul Allen devant ce même modèle
* Deux DECSYSTEM2020 (KS-10)
* Vue intérieure d'un processeur KS10
* BBN Pager, gestionnaire de mémoire virtuelle pour KA10 (tierce partie)
* Carte du réseau ARPANET en 1977, illustrant l'importante représentation des PDP-10 et clones