A PDP–11 egy 16 bites, Digital Equipment Corporation (DEC) gyártmányú miniszámítógép-sorozat elnevezése; ezeket a PDP termékvonalba illeszkedő gépeket a cég 1970-től egészen az 1990-es évekig forgalmazta. A PDP–11 a PDP–8-as gépeket váltotta fel, főleg a valós idejű alkalmazások terén, bár mindkét család több mint 10 évig létezett egymással párhuzamosan. A PDP–11 sok egyedi újítást vonultatott fel, programozása az elődeinél könnyebb volt, ami többek között a nagyszámú általános célú regiszternek volt köszönhető. A gépcsaládot a középkategóriás, 32 bites VAX–11 követte a miniszámítógépek szektorában.
A PDP–11 felépítésének sajátosságai nagy hatással voltak a rákövetkező processzorok terveire, pl. a Motorola 68000-es több jellemzője – utasításkészlete, annak ortogonalitása, ki- és bemeneti rendszere, működési sajátosságai stb. – nagymértékben hasonlít a PDP–11-esre; a PDP–11-es gépek operációs rendszereinek kialakítása és jellemzői, a Digital Equipment egyéb operációs rendszereihez hasonlóan, sok más operációs rendszerben köszönnek vissza, így pl. a CP/M rendszerben, ezáltal az MS-DOS-ban is. A Unix operációs rendszer első hivatalos verziója egy PDP–11/20 gépen futott, 1970-ben. Közismert, hogy a gép fizikai kialakítása nagy hatással volt a C programozási nyelv kialakítására, és hogy a nyelv egyes programozási jellemzői a PDP–11 alacsony szintű lehetőségeinek kihasználása miatt kerültek a nyelvbe,Bakyo, John. "DEC PDP-11, benchmark for the first 16/32 bit generation. (1970)" in Great Microprocessors of the Past and Present (V 13.4.0), Section Three, Part I. Accessed 2011-03-04 nem pedig az eredeti tervezői szándék miatt."The Development of the C Language" in section More History, by Dennis M. Ritchie. Accessed August 5, 2011.
Története A 16 bites PDP–11 típus a DEC válasza volt a Data General NOVA bevezetésére; ezzel a DEC is belépett a 16 bites számítógépek világába, ugyanis a PDP sorozat előző típusa, a PDP–8-as, 12 bites szervezésű gép volt. A PDP–11 család 1970 januárjában lett bejelentve, és a bejelentést követően nem sokkal meg is kezdték a szállításokat. A DEC több mint PDP–11-est adott el csak az 1970-es években.Paul Cerruzi, A History of Modern Computing, MIT Press, 2003, , page 199 A gépeket eredetileg kis integráltságú TTL logikával szerelték, de ezt egy egykártyás LSI technológiával készült processzorkártya váltotta fel 1975-ben. 1979-ben kifejlesztették az egylapkás J-11 processzort, ami további méretcsökkentést tett lehetővé. A PDP–11 széria utolsó modelljei, a PDP–11/94 és a –11/93, 1990-ben jelentek meg.
Innovatív jellemzők
Az utasításkészlet ortogonalitása
A PDP–11 processzorarchitektúra nagymértékben ortogonális utasításkészlettel rendelkezett (az ortogonalitás – „merőlegesség” – itt arra utal, hogy minden utasítástípus minden címzési típust használhat, azaz egymástól független a kettő). Például a load (betöltés) és store (tárolás) utasítások céljaira egy általános move adatmozgató utasítás használható, amelynek forrás- és céloperandusa egyaránt lehet egy memóriacím vagy regiszter. Nincsenek input vagy output utasítások; a PDP–11 memóriába leképzett ki- és bemeneti rendszert használ, így ezek helyett is a move utasítást kell használni, az ortogonalitás még a bemeneti eszközről közvetlenül a kimeneti eszközre történő adatmozgatást is lehetővé teszi. A bonyolultabb műveletekben, mint pl. az add (összeadás) hasonlóan memória-, regiszter- vagy I/O címek állhatnak a forrás és céloperandusok helyén.
A legtöbb utasításban nyolc címzési mód és nyolc regiszter használható. A megengedett címzési módok: regisztercímzés, abszolút, relatív, indirekt és indexelt címzések, amelyekben a regiszteres címzések számára megengedett a növelési és csökkentési művelet a címszámítás után (autoinkrementáló és autodekrementáló módok, bájt címzés esetén 1-gyel, szavas címzés esetén 2-vel való növelés/csökkentés). Az utasításkészletben megengedett a relatív címzés, ami lehetővé tette a betöltési címtől független (akár emberi programozók által, gépi kódban írt) programok készítését és használatát.
A dedikált ki- és bemeneti utasítások hiánya A PDP–11 korai modelljeiben nem volt kijelölt sín a bemeneti-kimeneti műveletek számára. Ezek a gépek a Unibusejtsd: „junibusz” elnevezésű rendszersínnel rendelkeztek, amelyben a bemeneti-kimeneti eszközök a főmemória hozzájuk rendelt területein keresztül kommunikáltak: a perifériaeszköz számára ki volt jelölve egy meghatározott címterület a központi memóriában (I/O regiszterek helyett), másrészt a központi tár meghatározott területe kizárólag a perifériás eszközök számára volt fenntartva. A perifériás eszközök működése azonban nem merül ki a memóriahozzáférésben.
A PDP–11 rendszerében egy bemeneti/kimeneti eszköz meghatározza a memóriacímeket, amelyeken keresztül kommunikál, emellett rendelkezik saját megszakítási vektorral és megszakítási prioritással is. Ez a processzorfelépítés által biztosított rugalmas keret rendkívül megkönnyítette a változatos új perifériás eszközök csatlakoztatását a sínrendszeren keresztül, még az olyan eszközöket is, amire a processzor és a sínrendszer fel sem volt készítve a tervezés idején. A DEC nyilvánosan publikálta az alapvető Unibus specifikációkat, ráadásul még prototípus sín-interfész áramköröket is kínált, amelyek alapján az ügyfelek könnyedén saját Unibus kompatibilis hardvert alakíthattak ki.
A Unibus sínrendszer tette alkalmassá a PDP–11-et teljesen egyedi perifériák használatára. Ennek a hajlékonyságnak egyik példája a Bell Telephone Manufacturing Company által fejlesztett BTMC DPS-1500 csomagkapcsolt hálózat (X.25), amelyben PDP–11-es gépeket használtak a regionális és országos hálózat vezérlésére, és ahol a gépek Unibus sínje közvetlenül kapcsolódik a DPS-1500 hardverhez.
A PDP–11 család magasabb teljesítményű tagjai, kezdve a PDP–11/45 Unibus és 11/83 Q-bus rendszerekkel, eltávolodtak az egysínes (egyetlen sínt alkalmazó) megközelítéstől. A memória kezelését egy kizárólag erre a feladatra szolgáló dedikált elektronika vette át, míg a Unibus továbbra is használatban maradt, de ezután használata kizárólag a be/kimenet kezelésére korlátozódott. Az 1970-es években a változás tovább folytatódott; a PDP–11/70-es modellben megjelent a Massbus, ami a mágneslemezes és szalagos eszközök és a memória közötti nagy teljesítményű dedikált adatátviteli interfész. Ebben a rendszerben az eszközök továbbra is memóriacímeken keresztül kommunikáltak, de ehhez a kiegészítő síninterfészek további programozására is szükség volt.
A megszakítási rendszer A PDP–11 négy prioritási szintet támogat a hardveres megszakítások kiszolgálásában (az architektúra valójában 8 prioritási szintet tesz lehetővé, 0-tól 7-ig, azonban ebből a PDP–11/40-es modellig csak a 7–4 szinteket valósították meg). A megszakításokat szoftveres kiszolgálórutinok kezelik, ezek meghatározhatják, hogy futásuk közben felléphet-e további megszakítás (lehetőség van a megszakítások egymásba ágyazása). A megszakítást okozó eseményt maga az eszköz jelzi, úgy, hogy elküldi a processzornak a hozzá tartozó megszakítási vektor címét. – Chapter 2.6 Automatic priority interrupts
A megszakítási vektorok két 16 bites szóból álló blokkok a kernel (rendszermag) alacsony címtartományában (ami rendszerint megfelelt a fizikai memória alacsony címeken elérhető részének), a 0-tól 776-ig terjedő oktális címeken. A megszakításvektor első szava a megszakítást kiszolgáló eljárás kezdőcímét tartalmazza, a második szó tartalmát a processzor a PSW regiszterbe tölti a kiszolgálórutin indulásakor (PSW: processzor-állapotszó, a prioritási szintet ezzel állítja be).
A PDP–11 architektúra cikkben a megszakításkezelés részletesebb leírása olvasható.
Tömeggyártásra alkalmas technológia A PDP–11-et úgy tervezték, hogy könnyen gyártható legyen olcsó, betanított munkaerővel is. A darabok méretei nem voltak túl nagyok. Az áramköri lapok hátoldalán wire-wrap kötéssel kötötték össze az alkatrészeket, ez korrózióálló, megbízható kötést biztosított.
LSI–11
Az 1975 februárjában bemutatott LSI–11 (PDP–11/03) volt az első nagy integráltságú LSI csipekkel megvalósított PDP–11 modell; az egész CPU négy, Western Digital gyártmányú LSI integrált áramkörből állt, ez volt az MCP-1600 csipkészlet, amelyhez egy ötödik csip is hozzáadható, utasításkészlet bővítés gyanánt. Ebben a típusban egy újabb, LSI Bus vagy Q-Bus elnevezésű sínrendszert vezettek be, amely a Unibus közeli változata. A Unibus-tól elsősorban abban tér el, hogy a címek és adatok multiplexelve közlekednek egy közös vezetékkészleten, míg a Unibus-nál a címek és az adatok továbbítására külön vezetékcsoportok szolgálnak. Továbbá a Q-Bus másképpen címzi a be- és kimeneti eszközöket és végül lehetővé teszi 22 bites fizikai cím használatát – míg a Unibus csak 18 bites fizikai címet enged meg.22 bites fizikai cím 4 MiB memória címzését teszi lehetővé, 18 bittel 256 KiB címezhető
A CPU mikrokódja hibakereső szoftvert (debuggert) is tartalmaz a firmware-ben, ez közvetlen soros interfészen (RS-232 kapcsolat) vagy áramhurkon (két vezetékes vezérlővonal) keresztül érhető el. A gépkezelő ezen keresztül végezheti a hibakeresést, parancsok begépelésével és az oktális számok formájában megjelenő eredmények olvasásával – ez nagy előrelépést jelentett, mivel akkoriban a tipikus hibakeresés során a kezelőnek bináris kódokat kellett bevinnie kapcsolókkal és a bináris eredményt állapotjelző lámpák soráról kellett leolvasnia. A kezelő így képes vizsgálni és módosítani a számítógép regisztereinek tartalmát, a memóriát és a be/kimeneti eszközök állapotát, megállapíthatja és még javíthatja is a szoftverek és perifériák hibáit (kivéve, ha a hiba letiltja mikrokódhoz való hozzáférést). Az kezelő megadhatja, hogy melyik lemezről induljon a rendszer.
Mindkét újítás növelte a megbízhatóságot és csökkentette a LSI-11 előállítási költségeit.
A későbbi Q-Bus alapú rendszerek, mint például az LSI-11/23, /73, és /83 a Digital Equipment Corporation által tervezett csipkészleteken alapultak. A későbbi Unibus alapú PDP–11 rendszereket úgy tervezték, hogy hasonló Q-Bus processzorkártyákat használjon és egy Unibus adapter használatával támogassa a létező Unibus perifériákat, egyes típusokban speciális memóriasínnel kiegészítve a nagyobb sebesség érdekében.
A Q-Bus termékvonalban is jelentős fejlesztéseket végeztek. A PDP–11/03 egyik rendszerváltozatában például bevezették a teljes rendszerre vonatkozó indítási öntesztet (POST).
Hanyatlás Bár a PDP–11-es alapvető kialakítása rugalmas volt és folyamatosan frissítették az újabb technológiákhoz való alkalmazkodás jegyében, egyre inkább nyilvánvalóvá vált, hogy a Unibus és a Q-Bus korlátozott átbocsátó képessége a rendszer-teljesítmény szűk keresztmetszete. A logikai cím 16 bites korlátozása gátolta a nagyobb szoftveralkalmazások fejlesztését. A PDP–11 architektúra cikk bővebben ír a címtér korlátozásainak megkerülésére használt hardver- és szoftvertechnikákról.
A PDP–11-es 32 bites utódja a DEC-nél a VAX ("Virtual Address eXtension", a „virtuális címkiterjesztés” rövidítése) géptípus volt, amely legyőzte a 16 bites korlátozást, ám ez kezdetben szuperminiszámítógép volt, amely a nagy teljesítményű időosztásos rendszerek piacát célozta. A korai VAX-ok biztosítottak egy PDP–11-es kompatibilitási üzemmódot, amelyben a legtöbb meglévő szoftver azonnal használható volt, az újabb 32 bites szoftverrel párhuzamosan.