PDP-11Un PDP-11 est un modèle d'ordinateur de la gamme des PDP (Programmable Data Processor) construit par Digital Equipment Corporation (DEC) entre 1970 et 1993. Tous les PDP-11 sont 16 bits et entrent dans la classe des mini-ordinateurs. Ils furent extrêmement populaires car ils alliaient modularité et un excellent rapport qualité/prix. De fait, leur utilisation n'était pas cantonnée à un seul secteur d'application : on les retrouvait aussi bien dans les laboratoires de physique pour faire de l'acquisition de données que dans les cabinets comptables. Enfin, le monde universitaire a aussi fait l'acquisition d'un nombre important de ces machines. Cette gamme est aussi populaire car elle a servi de base au développement du système d'exploitation Unix et du langage C. La pré-incrémentation (++i) et la post-incrémentation (i++) du C permettaient en particulier d'exploiter cette possibilité du langage-machine du PDP-11. Elle arriva également quand l'IBM 1130 lancé en 1965, qui équipait beaucoup de laboratoires et d'écoles d'ingénieurs dans le monde, commençait à prendre de l'âge sans avoir de successeur proposé par IBM. Hormis son immense bibliothèque contributive de logiciels gratuits, le 1130 ne possédait pas d'avantage particulier sur le PDP-11 ni en vitesse, ni en coût. Comme beaucoup d'autres, cette gamme a disparu car son espace d'adressage mémoire était trop limité (16 à 18 bits, 22 au maximum). Elle fut remplacée par les VAX, qui signifie Virtual Address eXtension (Extension de l'adressage virtuel), 32 bits. Les VAX possèdent un mode de fonctionnement « compatible PDP-11 ». ArchitectureBusLes premiers PDP-11 étaient architecturés autour du bus UNIBUS. Les derniers modèles, avec le jeu d'instruction compris sur quelques puces, et appelés LSI-11, sont basés sur le bus (moins large) appelé Q-BUS. RegistresLe processeur du PDP-11 est doté de 8 registres, dont deux ont des utilisations spéciales : le registre 7, le PC (pour Program Counter ou compteur ordinal) et le registre 6, le pointeur de pile (SP, pour Stack Pointer ). Les autres registres R0, R1, ..., R5 et sont d'un usage général. Le dernier registre est le registre d'état. 15 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R0 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R1 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R2 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R3 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R4 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R5 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R6 (SP) | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R7 (PC) | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_____________________________________________________________/ registres (16 bits) 15 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | CM | PM | R | | PRI | T | N | Z | V | C | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_____________________________________________________________/ registre d'état(16 bits) La signification des drapeaux du registre d'état sont :
Tous les modèles de PDP-11 ne possèdent pas exactement le même type de registres d'état, celui présenté ici correspond aux modèles les plus avancés. Types des donnéesOn distingue trois classes :
Jeux d'instructionsIl y a trois jeux d'instructions possibles :
Chaque instruction spécifie une opération à effectuer, éventuellement des opérandes (registres etc.) et un mode d'adressage. Format des instructionsLe PDP-11 définit 7 formats. Dans tous les formats décrit ci-dessous :
Interprétation du champ modeLe champ mode tient sur 3 bits. Par exemple une instruction à deux opérandes contient deux champs registres et deux champs mode, chacun décrivant comment interpréter le champ registre. Si l'on considère uniquement les bits les plus à gauche (le troisième est le bit d'indirection, voir plus bas) :
Le bit le plus à droite du mode est le bit d'indirection : si ce bit est à un, l'adressage sera indirect :
On notera qu'il n'y a pas de mode « immédiat » : celui-ci est accompli en utilisant le mode 2 (autoincrémentation). En effet, le PC pointe vers le mot qui suit l'instruction, et la postincrémentation le fait passer à l'instruction suivante après que la valeur immédiate suivant l'instruction en cours d'exécution est chargée par le processeur.
Les modes d'adressage postincrémenté et prédécrementé seront particulièrement utilisé associé au pointeur de pile SP : -(SP) permettant l'empilement et (SP)+ le dépilement. Les instructions à un opérande15 6 5 3 2 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération | mode | Rn | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_____________________/ destination Exemple : CLR (R0) 005010 Les instructions à deux opérandes15 11 9 8 6 5 3 2 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération| mode | Rn | mode | Rn | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_____________________/ \_____________________/ source destination Exemple : ADD R0, (R1) N.B. : certaines instructions (ASH, ASHC, MUL, DIV) ne peuvent avoir qu'un registre comme source, dans ce cas le code opération s'étend du bit 9 au bit 15 : 15 11 9 8 6 5 3 2 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération | Rn | mode | Rn | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_________/ \_____________________/ source destination Les branchements15 8 7 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération| | déplacement | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ Le champ déplacement est signé, autorisant donc un décalage de -128 à +127 octets. Les sauts et appels/retours de sous-programmesPour l'instruction JSR (Jump to Subroutine) : 15 9 8 6 5 3 2 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération | Rn | mode | Rn | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_________/ \_____________________/ lien destination Pour l'instruction RTS (Return from Subroutine) : 15 3 2 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération | Rn | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_________/ lien Trappes et InterruptionsEMT, TRAP, BPT, IOT, CSM, RTI, RTT : pas de format particulier. Codes conditionsCLC, CLV, CLZ, CLN, CCC, SEC, SEV, SEZ, SEN, SEC : pas de format particulier. 15 5 3 2 1 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération | O | N | Z | V | C | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
Instructions diversesHALT, WAIT, RESET, MTPD, MTPI, MFPD, MFPI, MTPS, MFPS, MFPT : pas de format particulier. Jeu d'instructions nombres flottantsCette option est appelée FPP ou FP-11, FP pour Floating Point. Elle ajoute 6 nouveaux registres 64 bits (deux fois 32) pour les calculs, ainsi que quelques autres spécialisés (comme un registre d'état). Le fonctionnement du processeur flottant est distinct du processeur standard du PDP-11 : hormis un léger retard au moment où le processeur flottant va chercher l'instruction en mémoire, les deux processeurs calculent indépendamment. Ce nouveau jeu d'instructions est disponible par modification du microcode. Jeu d'instructions de gestionAppelé CIS, pour Commercial Instruction Set, ce jeu d'instructions principalement axé sur la gestion de chaînes de caractères est étudié pour accélérer les opérations habituellement demandées par les programmes de gestion (écrit en COBOL par exemple). Il permet la conversion de la représentation de nombres sous forme de caractères vers des valeurs binaires (et inversement) ou les calculs directement sur les représentations « chaîne de caractères ». Simulateurs
Systèmes d'exploitationNotes et référencesAnnexesArticles connexesLiens externes |