Een korte blik op de PDP-11, de meest invloedrijke minicomputer aller tijden
De geschiedenis van de computertechnologie is grofweg in te delen in drie tijdperken: het tijdperk van mainframes, minicomputers en microcomputers. Minicomputers werden een belangrijke schakel tussen de eerste mainframes en de alomtegenwoordige microcomputers van vandaag. Dit is het verhaal van de PDP-11, de meest invloedrijke en succesvolle minicomputer.
Vroeger werden minicomputers in verschillende toepassingen gebruikt. Ze dienden als communicatiecontrollers, instrumentcontrollers, preprocessors van grote systemen, desktoprekenmachines en real-time data-acquisitieprocessors. Maar ze legden ook de basis voor aanzienlijke vooruitgang in hardware-architectuur en leverden belangrijke bijdragen aan moderne besturingssystemen, programmeertalen en interactieve computers zoals we die nu kennen.
In de huidige computerwereld, waarin op elke computer een bepaalde versie van Windows, Mac of Linux draait, is het moeilijk om de CPU’s te onderscheiden die ten grondslag liggen aan het besturingssysteem. Maar er was een tijd dat verschillen in CPU-architectuur er erg toe deden. De PDP-11 helpt verklaren waarom dit zo is.
De PDP-11 werd geïntroduceerd in 1970 toen de meeste computers werden gedaan op dure GE-, CDC- en IBM-mainframes waar maar weinigen toegang toe hadden. Er waren geen laptops, geen desktops, geen personal computers. Slechts een paar bedrijven waren betrokken bij de programmering, meestal in assembleertaal, COBOL en FORTRAN. Input werd gedaan met ponskaarten en programma’s werden gelanceerd door niet-interactieve batchruns.
Hoewel de eerste PDP-11 bescheiden was, vormde hij de weg voor de minicomputerinvasie die de computers van de volgende generatie betaalbaarder maakte, wat in wezen een revolutie teweegbracht in de informatica. De PDP-11 hielp bij het creëren van het UNIX-besturingssysteem en de programmeertaal C. Het zou ook grote invloed hebben op de volgende generatie computerarchitecturen. In de 22 jaar van het leven van de PDP-11 – een ongekende hoeveelheid tijd naar huidige maatstaven – zijn er meer dan 600.000 PDP-11’s verkocht.
De vroege PDP-11’s waren niet zo indrukwekkend. De eerste 11/20 PDP-11 kostte $ 20.000, maar werd geleverd met slechts 4 KB RAM. Het gebruikte papieren tape als opslag en had een ASR-33 teletype-console die 10 tekens per seconde afdrukte. Maar het had ook een verbazingwekkende orthogonale 16-bits architectuur, acht registers, 65 KB adresruimte, een cyclustijd van 1,25 MHz en een flexibele UNIBUS-hardwarebus die toekomstige hardware-randapparatuur ondersteunde. Het was een winnende combinatie voor de maker, Digital Equipment Corporation.
De eerste toepassing voor de PDP-11 omvatte real-time hardwarecontrole, fabrieksautomatisering en gegevensverwerking. Toen de PDP-11 een reputatie verwierf vanwege zijn flexibiliteit, programmeerbaarheid en betaalbaarheid, werd hij gebruikt in controlesystemen voor verkeerslichten, het raketafweersysteem van Nike, luchtverkeersleiding, kerncentrales, opleidingssystemen voor piloten van de marine en telecommunicatie. Hij was ook een pionier in de tekstverwerking en gegevensverwerking die we nu als vanzelfsprekend beschouwen.
En de invloed van de PDP-11 is het duidelijkst in de programmering van de montage van het apparaat.
Basisprincipes van assemblageprogrammering
Vóór de uitvinding van talen op hoog niveau, zoals Python, Java en Fortran, werd geprogrammeerd in assembleertaal. Programmeren in assembleertaal kan worden gedaan met heel weinig RAM en schijfruimte, ideaal voor de begindagen van computers.
Assembleertaal is een low-level tussenformaat dat wordt geconverteerd naar machinetaal, dat vervolgens rechtstreeks door de computer kan worden uitgevoerd. Het is laagdrempelig omdat u rechtstreeks aspecten van de architectuur van de computer bestuurt. Simpel gezegd, assembleertaalprogrammering verplaatst uw gegevens byte voor byte door hardwareregisters en geheugen. Wat PDP-11-programmering onderscheidde, was het elegante ontwerp van de minicomputer. Elke instructie had zijn plaats en elke instructie had een betekenis.
De 16-bits adresruimte betekende dat elk register rechtstreeks tot 64 KB RAM kon adresseren, waarbij de bovenste 4 KB gereserveerd was voor in het geheugen toegewezen invoer en uitvoer. PDP-11’s konden in totaal 128 KB RAM adresseren met behulp van registersegmenten (daarover zo meteen meer). Dus hoewel de PDP-11-systemen slechts met 4 KB RAM werden geleverd, waren ze nog steeds productief dankzij het slimme gebruik van vroege programmeertechnieken.
Montage programma
De gemakkelijkste manier om dit concept te begrijpen is met een eenvoudig PDP-11 assembleertaalprogramma, dat we hieronder zullen bekijken. Sleutelwoorden die beginnen met “.” zijn richtlijnen voor de assembler. .globl
exporteert het label als een symbool naar de linker voor gebruik door het besturingssysteem. .text
definieert het begin van een codesegment. .data
definieert het begin van een enkel gegevenssegment. Trefwoorden die eindigen op “:” zijn tags. Programmeren in assembleertaal gebruikt labels om het geheugen symbolisch aan te spreken. (Opmerking: met de komst van jargon en PDP-11-codering is elke tekst na / een opmerking.)
Trefwoorden | Vertaling |
.globl_main | Exporteer het _main-label als toegangspunt voor gebruik door het besturingssysteem. |
.tekst | Begin van instructiesegment met alleen-lezen code |
_main: MOTORWAARDE1, R0 | Kopieer de woordwaarde van geheugenlocatie VAL1 naar register 0. |
VOEG $10, R0 TOE | Voeg 10 toe aan de waarde in register 0 |
MOTOR R0 WAARDE1 | Kopieer de waarde van register 0 naar geheugenlocatie VAL1. |
_.gegevens | Het begin van een gegevenssegment met lees-/schrijfgegevens. |
VAL1:. woord $ 100 | Reserveer 2 bytes geheugen om Val1 geïnitialiseerd op 100 te houden. |
Hoewel u numerieke waarden kunt gebruiken voor geheugenadressen, vereenvoudigt het gebruik van labels in plaats van hardgecodeerde adressen het programmeren en kunt u code in het geheugen verplaatsen. Dit geeft het besturingssysteem de flexibiliteit om code uit te voeren, waardoor elk programma snel en efficiënt wordt.
assembler richtlijn. data plaatst data in een geheugensegment dat zowel leesbaar als beschrijfbaar is. Het codegeheugensegment is alleen-lezen om te voorkomen dat programmeerfouten het programma beschadigen en crashes veroorzaken. Deze scheiding van instructies en gegevens op de PDP-11 wordt “scheiding van instructies en gegevens” genoemd. Naast het verbeteren van de stabiliteit, verdubbelt deze functie ook de adresruimte, met 64 KB voor code en 64 KB voor data, wat destijds als een innovatie werd beschouwd. Dienovereenkomstig maakten de Intel X86-microcomputers later uitgebreid gebruik van segmenten.
Geef een reactie