thumb|jobbra|220px|Egy PDP8 "Straight-8" változat a washingtoni Smithsonian Intézet múzeumában
A PDP–8 egy 12 bites számítógéptípus, a PDP számítógép-család tagja volt az 1960-as években. A Digital Equipment Corporation (DEC) cég a típust 1965. március 22-én vezette be. Ez a gép volt az első széles körben elterjedt miniszámítógép: több mint példányt adtak el belőle, így a legnagyobb példányszámban eladott számítógép volt a maga korában.The Digital Equipment Corporation PDP-8 by Douglas W. JonesPDP-8 1965, History Wired, Smithsonian Institution, accessed February 17, 2015 Sikerének titka – saját korához viszonyított – kis mérete (elfért egy asztalon) és alacsony ára volt (piacra kerülésekor dollárba, öt évvel később dollárba került).
A gépet kifejezetten kisméretű, olcsó és nagy sebességű tudományos számítógépnek tervezték, amely a lehető legkevesebb hardverrel felépíthető. A tervezési célok között elsődleges volt, hogy a géphez a hagyományos be-/kimeneti perifériák csatlakoztathatók legyenek és képes legyen együttműködni a mérési és szabályozási alkalmazásokban használt különféle analóg mérőeszközökkel. A gép emellett önállóan egy általános célú kisszámítógépként működött.
A gép vezető tervezője Edson de Castro, a Data General cég későbbi megalapítója volt.
Az első, informálisan „Straight–8” néven emlegetett PDP–8 modell ún. flip chip kártyákra szerelt, dióda-tranzisztor logikájú áramköri panelekből épült fel, maga a gép egy kisebb hűtőgép méretű volt.
Ezt követte a PDP–8/S modell, amely asztali és fiókos (rack-mount) változatokban jelent meg. A PDP–8/S kisebb és olcsóbb, ugyanakkor mérhetetlenül lassúbb is volt az elődjénél, a benne alkalmazott egybites soros ALU megvalósításnak köszönhetően. Ehhez a géphez egyetlen háttértároló eszköz volt elérhető, a DF32 jelű lemezegység.
A későbbi rendszerekben (PDP–8/I és /L, PDP–8/E, /F, és /M, valamint a PDP–8/A) már visszatért a gyorsabb párhuzamos megvalósítás, ami azonban az olcsóbb TTL MSI logikán alapult. A legtöbb mai napig fennmaradt PDP–8-as ebből az időszakból származik. A legáltalánosabb modell a PDP–8/E, mivel ehhez I/O eszközök sokasága volt elérhető és gyakran általános célú számítógépnek használták.
A személyi számítógépek 1975-ös megjelenésétől kezdve az olcsó mikroprocesszorokra épülő rendszerek, mint pl. a MITS Altair, majd később a TRS-80, Apple II és mások, kezdték uralni az általános célú kisszámítógépek piacát.
Az utolsó forgalomba került PDP–8 az 1979-es "CMOS–8s" nevű modell volt, ez már egy egyedi CMOS mikroprocesszort tartalmazott. A gép üzletileg megbukott, a versenyképtelen árazás miatt. A CMOS–8s sírját az 1981-ben megjelent IBM PC ásta meg, amely gyorsan beterítette az általános célú kisszámítógép-piacot.
A mikroprocesszort és kiegészítő csipjeit az Intersil egészen 1982-ig forgalmazta, az Intersil 6100 család tagjaiként. A kis energiaigényű CMOS csipeket katonai beágyazott rendszerekben használták.
Története A PDP–8 sok ötletet vett át néhány korábban megvalósított 12 bites számítógépből, leginkább a Wesley A. Clark és Charles Molnar által 1962-ben tervezett LINC laboratóriumi gépből, amelynek terveire viszont nagy hatással volt Seymour Cray még korábbi 1960-as CDC 160 miniszámítógépe. A gép közvetlen elődje a DEC PDP–5 számítógépe volt. A PDP–8 lényegében a PDP–5 továbbfejlesztése volt, amelyben a PDP–5 egyes hiányosságait javították és amellyel sikerült megvalósítaniuk a gépi összeszerelést, amellyel nagy mértékben csökkenthető volt az előállítási költség. A gép vezető tervezője Edson de Castro volt. A gép 1965-ben jelent meg a piacon.
A PDP–8 változatai thumb|PDP–8/E előlap
A PDP–8 családba tartozó eladott gépek számát fölöttire becsülik. Az alábbi típusok készültek:
PDP–8 LINC–8 PDP–8/S PDP–8/I PDP–8/L PDP–12 PDP–8/E PDP–8/F PDP–8/M PDP–8/A Intersil 6100 egycsipes PDP–8-kompatibilis mikroprocesszor (a VT78 számítógép processzora) Harris 6120 CMOS egycsipes PDP–8-kompatibilis mikroprocesszor (a DECmate szövegszerkesztő gépekben alkalmazták)
Modern megvalósítások A PDP–8-as gépet igen könnyű emulálni, mivel utasításkészlete sokkal egyszerűbb a modern számítógépekénél. A rajongók teljes PDP–8-as gépeket is építettek egyetlen FPGA áramkörrel.
A PDP–8-as több szoftveres szimulációja is elérhető az interneten. Ezek közül a jobb minőségűek pontosan hajtják végre a DEC operációs rendszert és a diagnosztikai programokat. A szoftver-szimulációk gyakran a PDP–8s modellt szimulálják a hozzá való összes lehetséges perifériával, de még ezek a szimulációk is csak egy kis részét foglalják le egy modern személyi számítógép kapacitásának.
Magyar vonatkozás A KFKI Elektronikus Főosztályának munkatársai a PDP–8 gépet alapul véve kezdték el fejleszteni a TPA típusú számítógépeket 1966-ban. Az 1968-ban bemutatott TPA–1001 a PDP–8 újraimplementálása volt, a DEC által közreadott utasításkészlet és ismertető alapján. A TPA–1001 ugyan klón, de egy független megvalósítása a PDP–8 utasításkészletének.
Felépítése thumb|right|200px|PDP-8/E kinyitott kártyafiókkal – láthatók a logikai modulok, felül pedig két DECtape meghajtó
A gép CPU-ja alapján egy egycímes, akkumulátoros rendszerű CISC felépítésű számítógép – az utasításkészletében összetett parancsok találhatók, amelyek a regisztert memóriaoperandusokkal kombinálják (pl. TAD a # AC = AC + MEM[a], stb.), ami a CISC felépítésre jellemző.
A gép tára 12 bites szavakból áll – a tervezők úgy ítélték meg, hogy ez a szóhossz elégséges a mérési és szabályozási alkalmazásokban. Ennek megfelelően a gép regiszterei is 12 bitesek. A gépi szót tehát egyszerűen 12 bites adatként definiálták, így nem volt külön kijelölt előjelbit, a mennyiségek egyszerű előjel nélküli egészként kezelhetők. Az előjeles értékek kezelésére a programokban szubrutinokat kellett alkalmazni, amely lehetővé tette a kettes komplemens ábrázolásmód használatát.
A központi tár mérete általában 4096 szó (azaz 212), ez egyes modellekben bővíthető volt; a bővített tárat lapozással (memóriabank-váltással) lehet elérni a programokból. A tár ferritmagos memória volt, 1,5 mikroszekundumos frissítési idővel, ezáltal a tipikus kétciklusos (fetch, execute) utasítások használatával a gép elérhette a 0,333 MIPS sebességet is.
A gép minden utasítása 12 bites, amelyben 3 bit szolgál az utasítás kódolására (opkód), 2 bit szolgál a címzési módok jelölésére, a maradék 7 bit pedig a címet határozza meg (ofszetcím, eltolás). Minden utasítás egyszavas. A 3 bit nyolc utasítás kódolását engedi meg. A nyolc utasítás közül a bináris „1112” kódú utasítás egy bővítőutasítást határoz meg (OPR), amellyel mikrokódolt részműveletek sorozatát lehet végrehajtani, így ezzel végezhetők a különféle bitmanipulációs és vezérlési műveletek (eltolás, komplemensképzés, növelés, törlés, szorzás, osztás és feltételes átlépő utasítások) – ezek olyan utasítások, amelyeknek nincs szükségük operanduscímekre, így az egész címrész felhasználható a műveletek kódolására.
Az utasításkészlet egy másik utasítása a be-/kimeneti műveletet jelöli, így az utasításkészletben az általános utasítások számára 6 lehetőség marad.
7 bittel 128 szó címezhető, ezáltal a 4096 szavas memóriaterület 128 szavas lapokra van felosztva és a 7 bites cím egy lapon belül érvényes. A cím vagy az aktuális lapon, vagy a 0. lapon elhelyezkedő szóra mutathat, a 4. „Z” bit értékétől függően. Az utasításkészletben indirekt címzés is rendelkezésre áll.
A PDP-8 regiszterei 11 10 9 8 7 6 5 4 3 2 1 0 (bitpozíció) Fő regiszterek AC Akkumulátor Programszámláló PC Programszámláló Állapotjelzők L Link regiszter Belső regiszterek (programkódból nem elérhetőek) MBR Memóriapuffer-regiszter MAR Memóriacím-regiszter
A gép regiszterkészlete igen kicsi, az AC akkumulátorregiszterből és a PC programszámlálóból áll. Ezek mind 12 bitesek, tehát a PC a teljes 4096 szavas memóriabankot képes megcímezni. Az adatok tárolására a memóriát, főleg annak 0. lapját használták. A két kisegítő regiszter a memóriaelérésnél játszik szerepet, ezek programból nem elérhetőek. Az „L” link-regiszter a túlcsordulásbitet tárolja.
A szorzás és osztás műveletekkel együtt egy további regisztert is bevezettek a „kiterjesztett számolóelem” (Extended Arithmetic Element, EAE) elnevezésű opcionális kiterjesztésben „szorzó/hányados regiszter” (Multiplier/Quotient) avagy MQ regiszter néven. Az EAE kiterjesztés választható összetevő volt az eredeti PDP–8-banChapter 8: Extended Arithmetic Element Type 182, PDP-8 User's Handbook, Digital Equipment Corporation, 1966; page 41. valamint a 8/I és 8/E modellekben,Chapter 4: System Description and Operation, Introduction to Programming, Digital Equipment Corporation, 1969; page 4-22. az Intersil 6100 mikroprocesszor pedig már beépítve tartalmazta azt.
A gépnek nincs hardveres verme, ezt szubrutinnal lehet megoldani.
A PDP–8-asnak egyetlen megszakítási vonala van. A megszakítást a processzor a 00008 címre való ugrással kezeli (valójában a visszatérési címet helyezi el a 00008 címen és a végrehajtást a 00018 címen kezdi meg, a JMS szubrutinhívó utasításnak megfelelően) és minden további megszakítást letilt a kiszolgálás idejére. Emiatt nehéz reentráns (újrabeléptethető) szubrutinokat írni és egymásba ágyazott megszakításokat kezelni – ezeket a technikákat általában nem is alkalmazták.
A be-/kimeneti rendszer kétfajta interfész csatlakoztatását engedi meg. A lassú készülékek esetén a be-/kimeneti művelet megszakítással kezelhető a felhasználói programban; a műveletet egy kiszolgálóprogram végzi el. Gyorsabb készülékek esetén úgynevezett „cikluslopásra” van lehetőség, ami azt jelenti, hogy a készülék és a tár között adatmozgatás történik, amit nem a programutasítások, hanem a készülék vezérművei vezérlik. A cikluslopás a memóriafrissítési ciklusok alatt történik, és több szó átvitelét teszi lehetővé.
Utasításkészlet Alaputasítások 0 2 3 4 5 11 Művelet I Z offszetcím Az utasítások szerkezete
000 – AND – Logikai ÉS műveletet végez az AC és a memóriaoperandus tartalmával; az eredmény az akkumulátorba kerül. 001 – TAD – Kettes komplemens típusú összeadás művelet: az <L,AC> tartalmához hozzáadja a memóriaoperandus tartalmát, az eredmény 12 bites előjeles érték, átvitelbit az L-ben (T a two's complement, AD az add rövidítése). 010 – ISZ – A memóriaoperandus tartalmának növelése és a következő utasítás átugrása, ha az eredmény nulla. 011 – DCA – Elhelyezi az AC tartalmát a memóriaoperandus által címzett memóriarekeszben és törli az AC-t. 100 – JMS – Ugrás szubrutinra (JuMp to Subroutine); a visszatérési címet a vezérlés a szubrutin első szavában helyezi el. 101 – JMP – Ugrás (JuMP). 110 – IOT – Be-/kimeneti átvitel (ld. alább). 111 – OPR – Mikrokódolt műveletek (ld. alább).
Az IOT utasításcsoport A be-/kimeneti utasítások kódja a 68, mnemonikus kódja pedig az IOT, ami az Input-Output Transfer (bemeneti és kimeneti átvitel) rövidítése. A PDP–8 processzor maga kevés be-/kimeneti átviteli utasítást tartalmazott, ám ehelyett egy teljes keretrendszert definiált. A legtöbb IOT utasítást az egyedi be-/kimeneti eszközök határozták meg.
0 2 3 8 9 11 6=IOT készülék funkció
Készülék Az IOT utasítás 3–8. bitje a be-/kimeneti készüléket, eszközt választják ki. Néhány ilyen eszközcímet szabványosítottak megállapodás szerint:
00 a processzor kezeli, nem küldi egyetlen be-/kimeneti eszköznek sem (ld. alább) 01 általában a nagy sebességű lyukszalagolvasót jelenti 02 a nagy sebességű lyukszalag-lyukasztót jelöli 03 a konzolírógép és tetszőleges hozzárendelt kis sebességű papírszalagolvasó száma 04 a konzolírógép és tetszőleges hozzárendelt kis sebességű papírszalag-lyukasztó száma
A 0 eszközhöz tartozó utasítások magát a processzort érintik. Például az ION (6001) utasítás engedélyezi a megszakításkezelést és az IOFF (6002) letiltja azt.
Funkció (ill. esemény)