Le PDP-8 est une famille de mini-ordinateurs à 12 bits produite, à succès, par Digital Equipment Corporation (DEC). Lancé en 1965, ce fut le premier mini-ordinateur vendu à moins de 20 000 dollars ; le seuil des 25 000 dollars pour un système complet allait par la suite devenir une caractéristique déterminante de la catégorie des mini-ordinateurs. Avec exemplaires produits entre son lancement le et son arrêt de fabrication en 1984 (PDP-8/A). Il a parfois été qualifié de Ford T de l'informatique en raison de sa très grande simplicité architecturale, permettant de réduire les coûts, ainsi qu'en étant le premier ordinateur abordable (moins de $10 000 USD de l'époque pour le PDP-8/S) produit en masse.

Vue d'ensemble Le tout premier modèle de PDP-8, parfois désigné sous le nom de « Straight-8 », a été introduit le au prix de 18 500 $ (soit environ 178 900 $ en 2023), significativement moins que les ordinateurs de l'époque coûtant généralement plusieurs centaines de milliers de dollars. Il utilisait une logique discrète à diode-transistor (DTL), intégrée sur des cartes Flip-Chip du même constructeur, et se présentait sous la forme d'une machine de la taille d’un petit réfrigérateur.

Le PDP-8 fut le premier ordinateur vendu à moins de 20 000 $, en faisant le modèle d’ordinateur le plus populaire de l’époque. Le Straight-8 a été remplacé en 1966 par le PDP-8/S, proposé en versions de bureau et montable en rack. Grâce à une unité arithmétique et logique (UAL) série à un bit plutôt que 12 bits parallèle, le PDP-8/S était plus compact et moins coûteux, bien que considérablement plus lent que le PDP-8 d'origine. Un PDP-8/S de base était vendu à moins de 10 000 $, devenant ainsi le premier ordinateur à franchir ce seuil.

Les systèmes ultérieurs (PDP-8/I et /L, PDP-8/E, /F et /M, ainsi que le PDP-8/A) ont bénéficié d'une implémentation parallèle et en logique MSI à transistor-transistor (TTL), bien moins coûteuse. La plupart des PDP-8 encore existants proviennent de cette période. Le PDP-8/E était particulièrement courant et apprécié en raison de la diversité des périphériques d'entrée/sortie disponibles pour ce modèle. Les derniers modèles commerciaux de PDP-8, introduits en 1979 et appelés « CMOS-8 », étaient basés sur des microprocesseurs CMOS, cependant, ces modèles n’étaient pas compétitifs en termes de prix et furent des échecs commerciaux. Intersil a néanmoins vendu les circuits intégrés associés jusqu'en 1982 sous le nom de famille Intersil 6100. Grâce à leur technologie CMOS, ces modèles nécessitaient peu d'énergie et ont été utilisés dans certains systèmes militaires embarqués.

L’ingénieur en chef ayant conçu la version initiale du PDP-8 était Edson de Castro, qui a ensuite fondé Data General.

Particularités techniques Le PDP-8 alliait une extrême simplicité architecturale à une extensibilité remarquable, doublé d'une conception soigneusement optimisée pour minimiser le nombre de composants électroniques et ainsi réduire les coûts. Son importance historique réside principalement dans le fait que son faible coût et son volume de production élevé ont rendu l'informatique accessible à de nombreux nouveaux clients et à une grande variété d’usages.

Cette simplicité architecturale avait néanmoins un coût : elle rendait la programmation laborieuse, particulièrement concernant la gestion de la mémoire et des interruptions. En raison d'un jeu d'instruction extrêmement minimaliste - seulement huit instructions de base - et d'une absence de registres généraux (seulement un accumulateur), une grande partie du code devait être consacrée à la gestion de trivialités bas-niveau plutôt qu’à la focalisation sur les algorithmes. Par exemple, soustraire un nombre nécessitait de calculer son complément à deux avant de l’ajouter ; écrire un saut conditionnel impliquait de coder un saut conditionnel inversé autour du saut souhaité. Certains projets de programmation plus ambitieux ne tenaient pas dans la mémoire disponible (6 Ko par défaut) ou faisaient face à des limites techniques insolubles. Par exemple, une récursion accidentelle d’une sous-routine engendrait des problèmes difficiles à attribuer à la sous-routine concernée, rendant le débogage ardu. vignette|Panneau frontal du PDP-8 originel ("Straight 8") Au fur et à mesure que les progrès techniques ont réduit les coûts des puces et de la mémoire, le temps consacré au développement est devenu plus problématique que le coût du matériel, rendant l'approche du PDP-8 caduque. A l'opposé du PDP-8 conçu pour la plus grande simplicité architecturale possible, les ordinateurs CISC ultérieurs mettront l’accent sur la facilité de programmation en adoptant des jeux d’instructions toujours plus sophistiqués et intuitifs.

De manière intéressante, la quasi-totalité du code machine est aujourd'hui généré par des compilateurs, déchargeant les programmeurs des trivialités. L'architecture RISC (Reduced Instruction Set Computer) est ainsi revenue à la philosophie du PDP-8, privilégiant un jeu d’instructions simple et l’exécution de plusieurs actions par cycle d’instruction pour maximiser la vitesse d’exécution, bien que les jeux d’instruction des ordinateurs modernes soient beaucoup plus complexes.

Caractéristiques vignette|Un PDP-8/e (centre) avec un lecteur de bande (haut) et un disque-dur RK05 de 2.5 Mo (bas) La taille de mot du PDP-8 était de 12 bits, car le codage des caractères chez DEC utilisait du Sixbit sur 6 bits plutôt que de l'ASCII sur 8 bits. Bon nombre des mini-ordinateurs commercialisés par DEC employaient donc un multiple de 6 en largeur de mot, soit 12 bits pour le PDP-8, 18 bits pour les PDP 1, 5, 7, 9 et 15, ou encore 36 bits pour le PDP-10. De plus, le PDP-8 se destinait notamment parmi ses cas d'usage à l'instrumentation de laboratoire (par intégration OEM) et ces 12 bits correspondaient à la résolution maximale des capteurs disponibles à l'époque. Le coût de la mémoire étant alors élevé, ce choix constituait un optimum économique puisque ni les télécommunications, ni le traitement de texte n'imposaient alors l'octet. Celui-ci ne sera utilisé chez DEC que bien plus tard, avec le PDP-11.

Sa mémoire standard était de 4096 mots de 12 bits (maximum adressable avec ces 12 bits), possédant un temps de cycle de 1,5 µs. Une extension mémoire permettait d'augmenter la mémoire à huit pages de mots de 12 bits en faisant appel à un registre de page. C'était une mémoire à tores de ferrite, conservant ses données lors d'une coupure d'alimentation.

Il utilisait comme unité de pupitrage un télétype ASR-33 (en) et comportait un disque dur fixe complété de bandes magnétiques adressantes DECtapes. Il était cependant possible de l'alimenter en programmes avec le lecteur de ruban perforé (papier) de l'ASR33.

La taille de mot de 12 bits du PDP-8 avait fait choisir pour cette machine l'usage généralisé de l'octal plutôt que de l'hexadécimal. Le contenu d'un mot aussi bien que les adresses étaient représentés par quatre chiffres en octal.

Programmation vignette|Panneau frontal d'un PDP-8/I. Sur la gauche, le RIM Loader : la séquence de code octal à saisir "aux clés" pour charger un programme depuis le lecteur de ruban perforé Les premiers systèmes PDP-8 étaient livrés sans logiciel préinstallé ; chaque fois que le PDP-8 était mis sous tension, l'utilisateur devait entrer manuellement les instructions à l'aide d'une série de 12 interrupteurs à bascule en façade dénommés "clés". En général, ces instructions constituaient un chargeur d'amorçage ("bootloader") permettant de charger un autre programme depuis le lecteur de ruban perforé. Le développement de programmes pouvait ensuite se poursuivre en employant le lecteur de ruban perforé. Cet amorceur primitif était nommé RIM Loader par DEC. Un autre amorceur, le BIN Loader, plus avancé, était capable de charger des programmes binaires complexes avec vérification des erreurs et une meilleure gestion des adresses mémoire. Le BIN Loader se trouvait généralement sur ruban perforé et devait donc d'abord être chargé par le RIM Loader.

Des versions sur ruban perforé de plusieurs langages de programmation étaient disponibles, notamment l'interpréteur FOCAL de DEC et un compilateur et environnement d'exécution FORTRAN pour une mémoire de 4 Ko.

Vers la fin de l'ère du PDP-8, des systèmes d'exploitation comme OS/8 et COS-310 permettaient d'utiliser un éditeur en ligne de commande et un système de développement avec compilateur, prenant en charge des langages tels que l'assembleur PAL-III, FORTRAN, BASIC et DIBOL.

Des systèmes d'exploitation temps réel (RTOS) relativement modernes et avancés, ainsi que des systèmes multitâches préemptifs multi-utilisateurs, étaient disponibles : un système temps réel (RTS-8), des systèmes commerciaux multi-utilisateurs (COS-300 et COS-310), ainsi qu'un système dédié de traitement de texte monoposte (WPS-8).

Un système de partage de temps, TSS-8, était également disponible. TSS-8 permettait à plusieurs utilisateurs de se connecter au système via des terminaux à 110 bauds pour éditer, compiler et déboguer des programmes. Les langages pris en charge incluaient une version spéciale de BASIC, un sous-ensemble de FORTRAN similaire à FORTRAN-1 (sans sous-routines ni fonctions définies par l'utilisateur), un sous-ensemble d'ALGOL, FOCAL et un assembleur appelé PAL-D.

Une quantité considérable de logiciels offerts par des utilisateurs du PDP-8 était disponible via DECUS (Digital Equipment Corporation User Society), souvent accompagnés du code source complet et de la documentation.

Jeu d'instructions Chaque mot d'instruction du PDP-8 est constitué de 12 bits dont les trois bits de poids fort (étiquetés bits 0 à 2) constituent le code d'opération. Puis, pour les six opérations faisant référence à la mémoire, les bits 5 à 11 fournissent une adresse sur 7 bits. Le bit 4 (Z), s'il est activé, indique que l'adresse doit être complétée en utilisant les cinq bits de poids fort du compteur de programme (PC), ce qui implique que l'adresse cible se trouve dans les 128 mots suivants à partir de l'instruction. Si le bit 4 est désactivé, des zéros sont utilisés, plaçant ainsi l'adresse cible dans les 128 premiers mots de la mémoire.

Le bit 3 (I) spécifie l'indirection ; s'il est activé, l'adresse obtenue jusqu'à présent pointe vers une valeur de 12 bits en mémoire, représentant l'adresse effective réelle pour l'instruction. De cette manière, les opérandes peuvent se trouver n'importe où en mémoire, au prix d'un mot supplémentaire.

L'instruction JMP n'opère pas directement sur une adresse mémoire, sauf si l'indirection est spécifiée, mais elle utilise les mêmes champs de bits.

Décomposition des douze bits d'un mot d'instruction : 0234511OpérationIZAdresse (7 bits)

Pages mémoire Cette utilisation des douze bits d'un mot d'instruction divise la mémoire de 4 096 mots en 32 pages de 128 mots ; le bit 4 de l'instruction sélectionne soit la page courante, soit la page 0 (adresses 0000–0177 en octal). Le contenu de la page 0 est donc extrêmement précieux, car les variables placées ici peuvent être adressées directement depuis n'importe laquelle des autres pages.

De plus :

L'adresse 0000 est le point d'entrée de toute routine du gestionnaire d'interruption. Les adresses 0010–0017 sont auto-incrémentées avant toute référence indirecte via elles.

L'assembleur place les valeurs constantes pour les opérations arithmétiques dans la page courante. De même, les sauts et appels de sous-programmes inter-pages utilisent une adresse indirecte dans la page courante.