Architektura PDP-11 - PDP-11 architecture

Architektura PDP-11 je architektura instrukční sady CISC (ISA) vyvinutá společností Digital Equipment Corporation (DEC). Je implementován centrálními procesorovými jednotkami (CPU) a mikroprocesory používanými v minipočítačích PDP-11 . V 70. letech se široce používal, ale v 80. letech byl nakonec zastíněn výkonnější architekturou VAX-11 .

Paměť

Datové formáty

Šestnáctbitová slova jsou uložena v malém endianu ( nejprve s nejméně významnými bajty ). Třicet dvoubitových dat - podporovaných jako rozšíření základní architektury, např. S plovoucí desetinnou čárkou v instrukční sadě FPU, dvouslovná slova v rozšířené instrukční sadě nebo dlouhá data v komerční instrukční sadě - jsou uložena ve více než jednom formátu, včetně neobvyklého formátu středního endianu, který se někdy označuje jako „PDP-endian“.

Správa paměti

16bitové adresy PDP-11 mohou adresovat 64  kB . V době, kdy se PDP-11 vzdal VAX, se v oboru staly standardem 8bitové bajty a hexadecimální zápis; číselné hodnoty na PDP-11 však vždy používají osmičkovou notaci a množství paměti připojené k PDP-11 je vždy uvedeno jako počet slov. Základní logický adresový prostor je 32 kB, ale vysoké 4K fyzického adresního prostoru (adresy 160000 8 až 177777 8 při absenci správy paměti) nejsou naplněny, protože vstupní / výstupní registry na sběrnici reagují na adresy v tomto rozsahu. Původně tedy plně naložený PDP-11 měl 28 tisíc slov.

Procesor si vyhrazuje nízké adresy paměti pro dvouslovné vektory, které dávají čítač programu a stavové slovo procesoru, se kterými zahájí servisní rutinu. Když I / O zařízení přeruší program, umístí adresu svého vektoru na sběrnici, aby určilo, která servisní rutina by měla převzít kontrolu. Nejnižší vektory jsou servisní rutiny pro zpracování různých typů trapů. Při některých chybách programu, například při pokusu o provedení nedefinované instrukce, se vyskytnou pasti; a také když program provede instrukci jako BPT, EMT, IOT nebo TRAP k vyžádání služby z operačního systému.

Rozšíření paměti

Článek PDP-11 popisuje, jak se 16bitový prostor logických adres stal nepřekonatelným omezením. Během života PDP-11 byly k obcházení omezení použity následující techniky:

  • Procesory PDP-11 novější verze zahrnovaly správu paměti pro podporu virtuálního adresování . Fyzický adresový prostor byl rozšířen na 18 nebo 22 bitů, což umožnilo až 256 KB nebo 4 MB RAM. Logický adresní prostor (tj. Adresní prostor dostupný kdykoli bez změny tabulky mapování paměti) zůstal omezen na 16 bitů.
  • Některé modely, počínaje PDP-11/45, lze nastavit tak, aby používaly 32 kB slova (64 kB) jako „instrukční prostor“ pro programový kód a samostatná 32 kB slova „datového prostoru“. Některé operační systémy - zejména Unix od vydání V7 a RSX11-M + - spoléhají na tuto funkci.
  • Programovací techniky, jako je překrytí bloku uložených instrukcí nebo dat jinými podle potřeby, mohou před aplikačním programátorem zakrýt problémy s stránkováním. Například kompilátor Modula-2 produkuje kód, pod kterým běhový systém zamění 8 Kb stránky do paměti, když jednotlivé procedury dostanou kontrolu. (Viz externí odkaz zde .)

Registry CPU

DEC PDP-11 registry
1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 (bitová pozice)
Hlavní registry
R0 R egister 0
R1 R egister 1
R2 R egister 2
R3 R egister 3
R4 R egister 4
R5 R egister 5
Ukazatel zásobníku
R6 / SP R egister 6 / S lepivost P ointer
Počítadlo programu
R7 / PC R egister 7 / P rogram C ounter
Stavové příznaky
  T N Z PROTI C P rocesor S tatus W ord
    P říprava P mast S tatus R egister

CPU obsahuje osm univerzálních 16bitových registrů (R0 až R7). Registr R7 je počitadlo programu (PC). Ačkoli jakýkoli registr lze použít jako ukazatel zásobníku, R6 je ukazatel zásobníku (SP) používaný pro hardwarová přerušení a depeše. R5 se často používá k ukázání na aktuální rámec volání procedury. Aby se urychlilo přepínání kontextu, některé modely PDP-11 poskytují duální sady registrů R1-R5. Režimy jádra, správce (pokud jsou k dispozici) a Uživatel mají samostatné mapy paměti a také samostatné ukazatele zásobníku (takže uživatelský program nemůže způsobit nefunkčnost systému uložením neplatné hodnoty do registru ukazatele zásobníku).

Režimy adresování

Většina pokynů přiděluje šest bitů k určení operandu. Tři bity vybírají jeden z osmi režimů adresování a tři bity vybírají obecný registr.

Kódování šestibitového režimu adresování operandu je následující:

5 3 2 0
Režim Registrovat


V následujících částech obsahuje každá položka příklad toho, jak by byl operand napsán v jazyce sestavení. Rn znamená jeden z osmi registrů, zapsaných R0 až R7.

Obecné režimy adresování registrů

Následující osm režimů lze použít na jakýkoli obecný registr. Jejich efekty při použití na R6 (ukazatel zásobníku, SP) a R7 (programové počítadlo, PC) jsou uvedeny samostatně v následujících částech.

Kód název Příklad Popis
0n Registrovat Rn Operand je v Rn
1n Registrace odložena (Rn) Rn obsahuje adresu operandu
2n Automatický přírůstek (Rn) + Rn obsahuje adresu operandu, poté zvyšuje Rn
3n Automatické zvyšování odloženo @ (Rn) + Rn obsahuje adresu adresy operandu, poté zvýší Rn o 2
4n Autodecrement - (Rn) Snižte Rn, poté použijte výsledek jako adresu operandu
5n Autodecrement odloženo @ - (Rn) Snižte Rn o 2, poté použijte výsledek jako adresu adresy operandu
6n Index X (Rn) Rn + X je adresa operandu
7n Index odložen @X (Rn) Rn + X je adresa adresy operandu

V režimech indexu a odloženého indexu je X 16bitová hodnota převzatá z druhého slova instrukce. V pokynech s dvojitým operandem mohou oba režimy používat tyto režimy. Tyto pokyny jsou dlouhé tři slova.

Automatické zvýšení a automatické operace v registru jsou o 1 v bajtových pokynech, o 2 ve slovních pokynech a o 2, kdykoli se použije odložený režim, protože množství adres v registru je (slovní) ukazatel.

Programujte režimy adresování čítače

Když je zadán R7 (čítač programu), čtyři z režimů adresování přirozeně přinášejí užitečné efekty:

Kód název Příklad Popis
27 Bezprostřední #n Operand je dalším slovem instrukce
37 Absolutní @#A Adresa operandu je dalším slovem instrukce
67 Relativní A Adresa operandu je další slovo instrukce přidané do PC
77 Relativně odloženo @A Adresa adresy operandu je další slovo instrukce přidané do PC

Jediným běžným použitím absolutního režimu, jehož syntaxe kombinuje okamžitý a odložený režim, je zadání vstupních / výstupních registrů, protože registry pro každé zařízení mají konkrétní adresy paměti. Relativní režim má jednodušší syntaxi a je typičtější pro odkazování na programové proměnné a cíle skoků. Program, který používá relativní režim (a relativní odložený režim) výhradně pro interní reference, je nezávislý na poloze ; neobsahuje žádné předpoklady o svém vlastním umístění, takže jej lze načíst do libovolného umístění v paměti nebo dokonce přesunout, aniž by bylo nutné upravit jeho adresy tak, aby odrážely jeho umístění ( přemístěno ). Při výpočtu těchto adres vzhledem k aktuálnímu umístění provedl procesor přemístění za běhu.

Okamžitý a absolutní režim jsou pouze automatický přírůstek a automatický přírůstek odložený režim, respektive aplikovaný na PC. Pokud je pomocné slovo „v instrukci“, jak říká výše uvedená tabulka, počítač pro další instrukci se automaticky zvýší za pomocné slovo. Protože PC vždy ukazuje na slova, operace automatického zvyšování je vždy o 2.

Režimy adresování zásobníku

R6, také psaný SP, se používá jako hardware stack pro pasti a přerušení. Konvence vynucená sadou režimů, které PDP-11 poskytuje, spočívá v tom, že hromádka roste směrem dolů - směrem k nižším adresám - jak jsou na něj tlačeny položky. Když je režim použit na SP nebo na jakýkoli registr, který si programátor zvolí jako softwarový zásobník, mají režimy adresování následující účinky:

Kód název Příklad Popis
16 Odložený (SP) Operand je v horní části zásobníku
26 Automatický přírůstek (SP) + Operand je v horní části zásobníku, poté jej vysuňte
36 Automatické zvyšování odloženo @ (SP) + Ukazatel na operand je na vrcholu zásobníku; vypněte ukazatel
46 Autodecrement - (SP) Zatlačte hodnotu do zásobníku
66 Indexováno X (SP) To se týká jakékoli položky v zásobníku podle její kladné vzdálenosti od vrcholu
76 Indexováno odloženo @X (SP) To se týká hodnoty, na kterou je ukazatel na zadaném místě v zásobníku

Ačkoli softwarové sady mohou obsahovat bajty, SP je vždy hromada slov. Automatické zvyšování a automatické zvyšování operací v SP je vždy o 2.

Sada instrukcí

PDP-11 pracuje na bajtech a slovech. Bajty jsou specifikovány číslem registru - identifikujícím bajt nízkého řádu registru - nebo paměťovým místem. Slova jsou specifikována číslem registru nebo paměťovým místem bajtu nízkého řádu, což musí být sudé číslo. Ve většině instrukcí, které berou operandy, je bit 15 nastaven tak, aby určoval adresování bajtů, nebo clear, aby určoval adresování slov. V seznamech v následujících dvou částech programátor v assembleru připojil B k symbolu instrukce, aby určil bajtovou operaci; například MOV se stal MOVB.

Několik pokynů, například MARK a SOB, nebylo na některých modelech PDP-11 implementováno.

Pokyny pro dvojitý operand

Čtyři bity vyššího řádu specifikují operaci, která má být provedena (s bitem 15 obecně vybírajícím slovo versus adresování bajtů). Dvě skupiny šesti bitů určují režim adresování zdrojového operandu a režim adresování cílového operandu, jak je definováno výše.

15 12 11 9 8 6 5 3 2 0
Operační kód Src Registrovat Dest Registrovat
Operační kód Mnemotechnická pomůcka Úkon
01 MOV Hýbat se: Dest ← Src

Poznámka: Přesunutí bajtu do znaménka registru se rozšíří na bity 8-15

11 MOVB
02 CMP Porovnat: Set-flags(Src − Dest)
12 CMPB
03 BIT Bitový test: Set-flags(Src ∧ Dest)
13 BITB
04 BIC Trochu jasné: Dest ← Dest ∧ Ones-complement(Src)
14 BICB
05 BIS Sada bitů: Dest ← Dest ∨ Src
15 BISB
06 PŘIDAT Přidat: Dest ← Dest + Src
16 SUB Odčítat: Dest ← Dest − Src

Pokyny ADD a SUB používají adresování slov a nemají žádné varianty orientované na bajty.

Některé instrukce se dvěma operandy využívají operand režimu adresování a další operand registru:

15 9 8 6 5 3 2 0
Operační kód Reg Src / Dest Registrovat

Pokud je použit registrový pár (zapsán níže jako „(Reg, Reg + 1)“), první registr obsahuje část operandu nižšího řádu a musí to být sudý registr. Další registr s vyšším číslem obsahuje vyšší řád část operandu (nebo zbytek). Výjimkou je instrukce násobení; Reg může být lichý, ale pokud ano, vysokých 16 bitů výsledku se neuloží.

Operační kód Mnemotechnická pomůcka Úkon
070 MUL Násobit: (Reg, Reg+1) ← Reg × Src
071 DIV Rozdělit: Compute (Reg, Reg+1) ÷ Src; Reg ← quotient; Reg+1 ← remainder
072 POPEL Aritmetický posun: if Src<5:0> < 0 then Reg ← Shift-right(Reg, -Src<5:0>) else Reg ← Shift-left(Reg, Src<5:0>)
073 ASHC Kombinovaný aritmetický posun: if Src<5:0> < 0 then (Reg, Reg+1) ← Shift-right((Reg, Reg+1), -Src<5:0>) else (Reg, Reg+1) ← Shift-left((Reg, Reg+1), Src<5:0>)
074 XOR Exkluzivní nebo: Dest ← Dest ⊻ Reg

Pokyny pro jeden operand

Deset bitů vyššího řádu určuje operaci, která má být provedena, přičemž bit 15 obecně vybírá adresování bajtu versus slovo. Jedna skupina šesti bitů určuje operand, jak je definováno výše.

15 6 5 3 2 0
Operační kód Src / Dest Registrovat
Operační kód Mnemotechnická pomůcka Úkon
0001 JMP Skok: PC ← Src
0003 TAMPON Vyměnit bajty slova: Dest ← Swap-bytes(Dest)
0050 CLR Průhledná: Dest ← 0
1050 CLRB
0051 KOM Doplněk: Dest ← Ones-complement(Dest)
1051 HŘEBEN
0052 INC Přírůstek: Dest ← Dest + 1
1052 INCB
0053 DEC Úbytek: Dest ← Dest − 1
1053 DECB
0054 NEG Negovat: Dest ← Twos-complement(Dest)
1054 NEGB
0055 ADC Přidat přenos: Dest ← Dest + C flag
1055 ADCB
0056 SBC Odečíst: Dest ← Dest - C flag
1056 SBCB
0057 TST Test: Set-flags(Src)
1057 TSTB
0060 ROR Otočit doprava: Dest ← Rotate-right(Dest, 1)
1060 RORB
0061 ROL Otočit doleva: Dest ← Rotate-left(Dest, 1)
1061 ROLB
0062 ASR Aritmetický posun doprava: Dest ← Shift-right(Dest, 1)
1062 ASRB
0063 ASL Aritmetický posun doleva: Dest ← Shift-left(Dest, 1)
1063 ASLB
1064 MTPS Přejít na PSW: PSW ← Src
0065 MFPI Přesunout z předchozího I prostoru: −(SP) ← Src
1065 MFPD Přesunout z předchozího D prostoru: −(SP) ← Src
0066 MTPI Přejít na předchozí I prostor: Dest ← (SP)+
1066 MTPD Přejít na předchozí D prostor: Dest ← (SP)+
0067 SXT Prodloužení znaménka: if N flag ≠ 0 then Dest ← -1 else Dest ← 0
1067 MFPS Přechod z PSW: Dest ← PSW

Pokyny pobočky

Ve většině pokynů větvení je to, zda je větev přijata, založeno na stavu stavových kódů. Větvové instrukci obvykle předchází instrukce CMP (porovnání) nebo BIT (bitový test) se dvěma operandy nebo instrukce TST (test) s jedním operandem. Aritmetické a logické pokyny také nastavují kódy podmínek. Na rozdíl od procesorů Intel v architektuře x86 je nastavují také instrukce MOV, takže větvicí instrukci lze použít k větvení v závislosti na tom, zda byla přesunutá hodnota nulová nebo záporná.

Bajt vyššího řádu instrukce určuje operaci. Bity 9 až 15 jsou operační kód a bit 8 je hodnota výpočtu stavového kódu, která vede k převzetí větve. Bajt nižšího řádu je offset podepsaného slova vzhledem k aktuálnímu umístění čítače programu. To umožňuje vpřed a vzad větve v kódu.

15 9 8 7 0
Operační kód C Ofset
Operační kód C Mnemotechnická pomůcka Stav nebo provoz
000 1 BR Pobočka vždy PC ← PC + 2 × Sign-extend(Offset)
001 0 BNE Větev, pokud není stejná Z = 0
001 1 BEQ Větev, pokud je stejná Z = 1
002 0 BGE Větev, pokud je větší nebo rovna (N ⊻ V) = 0
002 1 BLT Pobočka, pokud je menší než (N ⊻ V) = 1
003 0 BGT Větev, pokud je větší než (Z ∨ (N ⊻ V)) = 0
003 1 BLE Větev, pokud je menší nebo rovna (Z ∨ (N ⊻ V)) = 1
100 0 BPL Pobočka, pokud plus N = 0
100 1 BMI Pobočka, pokud je minus N = 1
101 0 BHI Větve, pokud je vyšší (C ∨ Z) = 0
101 1 BLOS Větev, pokud je nižší nebo stejná (C ∨ Z) = 1
102 0 BVC Větev, pokud je přepad jasný V = 0
102 1 BVS Větev, pokud je nastaven přepad V = 1
103 0 BCC nebo BHIS Větev, pokud je nesena jasně, nebo Větev, pokud je vyšší nebo stejná C = 0
103 1 BCS nebo BLO Větev, pokud je sada na přenášení, nebo Větev, pokud je nižší C = 1

Omezený rozsah instrukcí větve znamenal, že s růstem kódu se cílové adresy některých větví staly nedostupnými. Programátor by změnil jednoslovnou BR na dvouslovnou instrukci JMP z další skupiny. Protože JMP nemá žádné podmíněné formy, programátor by změnil BEQ na BNE, které se rozvětvilo kolem JMP.

SOB (Subtract One and Branch) je další podmíněná instrukce větvení. Zadaný registr se sníží o 1, a pokud výsledek není nula, provede se reverzní větev založená na 6bitovém posunu slova.

15 9 8 6 5 0
Operační kód Reg Ofset
Operační kód Mnemotechnická pomůcka Úkon
077 VZLYK Subtract One and Branch: Reg ← Reg - 1; if Reg ≠ 0 then PC ← PC - 2 × Offset

Pokyny k podprogramu

Instrukce JSR mohla uložit jakýkoli registr na zásobníku. Programy, které tuto funkci nepotřebovaly, zadaly PC jako registr (PC JSR, adresa) a rutina se vrátila pomocí RTS PC. Pokud by byla rutina volána například s „JSR R4, adresa“, pak by byla stará hodnota R4 v horní části zásobníku a zpáteční adresa (hned za JSR) by byla v R4. To umožňuje rutině získat přístup k hodnotám kódovaným in-line zadáním (R4) +, nebo k in-line ukazatelům zadáním @ (R4) +. Automatická inkrementace se přesunula kolem těchto dat do bodu, ve kterém se obnovil kód volajícího. Taková rutina by musela specifikovat RTS R4, aby se vrátila svému volajícímu.

15 9 8 6 5 3 2 0
Operační kód Reg Src Registrovat
Operační kód Mnemotechnická pomůcka Úkon
004 JSR Přejít na podprogram: -(SP) ← Reg; Reg ← PC; PC ← Src
15 3 2 0
Operační kód Reg
Operační kód Mnemotechnická pomůcka Úkon
00020 RTS Návrat z podprogramu: PC ← Reg; Reg ← (SP)+

Pokyny k pasti

15 9 8 7 0
Operační kód S Provozní kód
Operační kód S Mnemotechnická pomůcka Úkon
104 0 EMT Emulátorová past: -(SP) ← PS; -(SP) ← PC; PC ← (30); PS ← (32)
104 1 PAST Obecná past: -(SP) ← PS; -(SP) ← PC; PC ← (34); PS ← (36)
15 0
Operační kód
Operační kód Mnemotechnická pomůcka Úkon
000002 RTI Návrat z přerušení: PC ← (SP)+; PS ← (SP)+
000003 BPT Trap zlomu: -(SP) ← PS; -(SP) ← PC; PC ← (14); PS ← (16)
000004 IOT Trapéz I / O: -(SP) ← PS; -(SP) ← PC; PC ← (20); PS ← (22)
000006 RTT Návrat z pasti: PC ← (SP)+; PS ← (SP)+

Přiřazení trapových a výjimkových vektorových adres

Vektor Stav
000000 (Rezervováno)
000004 Neplatná instrukce, chyba sběrnice, limit zásobníku
000010 Rezervovaná instrukce
000014 Instrukce BPT, sledovací past
000020 Instrukce IOT
000030 Instrukce EMT
000034 TRAP instrukce
000244 Výjimka s plovoucí desetinnou čárkou
000250 Chyba správy paměti

Různé pokyny

15 0
Operační kód
Operační kód Mnemotechnická pomůcka Úkon
000000 STŮJ Zastavit procesor: Halt execution before next instruction
000001 POČKEJTE Počkejte na přerušení: Halt execution before next instruction; Resume execution at next interrupt handler
000005 RESETOVAT Resetovat UNIBUS: Assert INIT on UNIBUS for 10 ms; All other devices reset to power up state

Operace podmíněného kódu

15 6 5 4 3 2 1 0
Operační kód 1 S N Z PROTI C
Operační kód S Mnemotechnická pomůcka Úkon
0002 0 Ccc Vymazat kódy stavu: Clear codes according to N, Z, V, C bits
0002 1 Scc Nastavit kódy podmínek: Set codes according to N, Z, V, C bits

Čtyři stavové kódy ve stavovém slově procesoru (PSW) jsou

  • N označující zápornou hodnotu
  • Z označující nulovou (stejnou) podmínku
  • V označující podmínku přetečení a
  • C označující stav nošení.

Pokyny v této skupině byly to, co Digital nazýval „mikroprogramovaný“: Jeden bit ve slově instrukce odkazoval na jeden podmínkový kód. Assembler nedefinoval syntaxi k určení každé kombinace, ale symboly SCC a CCC sestavily instrukci, která nastavila nebo vymazala všechny čtyři kódy podmínek.

Vymazání nebo nastavení žádného z stavových kódů (operační kódy 000240 a 000260) nelze považovat za pokyny k neúčinnosti. Ve skutečnosti se mnemotechnika NOP sestavila do 000240.

Volitelné sady instrukcí

Rozšířená instrukční sada (EIS)

EIS byl volbou pro 11/35/40 a 11/03 a byl standardem pro novější procesory.

  • MUL, DIV násobí a dělí celočíselný operand na registraci dvojice
  • ASH, ASHC aritmetika - posune registr nebo pár registrů. U kladného čísla se posune doleva a doprava o záporné číslo.
Plovoucí instrukční sada (FIS)

Sada instrukcí FIS byla doplňkem pro PDP-11/35/40 a 11/03

  • FADD, FSUB, FMUL, FDIV pouze pro operace s jednou přesností na zásobníku adresovaném operandem registru
Procesor s plovoucí desetinnou čárkou (FPP)

Jednalo se o volitelnou možnost procesoru s plovoucí desetinnou čárkou pro 11/45 a většinu následných modelů.

  • operace s plnou plovoucí desetinnou čárkou na operandech s jednoduchou nebo dvojitou přesností, vybrané jedním / dvojitým bitem ve stavovém registru s plovoucí desetinnou čárkou
  • předchůdce datového formátu s plovoucí desetinnou čárkou s jednoduchou přesností ve formátu IEEE 754 : signální bit, 8bitový exponent, 23bitová mantisa se skrytým bitem 24
Sada komerčních pokynů (CIS)

CIS byl implementován volitelným mikrokódem v 11/23/24 a přídavným modulem v 11/44 a v jedné verzi 11/74. Poskytoval řetězcové a desetinné pokyny používané COBOL a Dibol .

Přístup ke stavovému slovu procesoru (PSW)

PSW byl namapován na paměťovou adresu 177 776, ale instrukce nalezené na všech PDP-11 kromě prvních dávaly programům přímější přístup do registru.

  • SPL (nastavená úroveň priority)
  • MTPS (přejít do stavu procesoru)
  • MFPS (přechod ze stavu procesoru)
Přístup do dalších paměťových prostor

Na PDP-11, které poskytovaly více prostorů instrukcí a datových prostorů, poskytla sada neortogonálních instrukcí Move přístup do dalších prostorů. Například rutiny v operačním systému, které zpracovávaly volání služby za běhu, by pomocí těchto pokynů vyměňovaly informace s volajícím.

  • MTPD (přechod na předchozí datový prostor)
  • MTPI (přechod na předchozí prostor instrukcí)
  • MFPD (přesun z předchozího datového prostoru)
  • MFPI (přesun z předchozího prostoru instrukcí)

Nekonzistentní pokyny

V průběhu životnosti PDP-11 vznikly jemné rozdíly v implementaci instrukcí a kombinací režimů adresování, ačkoli žádná implementace nebyla považována za správnou. Nesrovnalosti neměly vliv na běžné používání PDP-11.

Rychlost

Rychlost procesoru PDP-11 se liší podle modelu, konfigurace paměti, operačního kódu a režimů adresování. Načasování instrukce mělo až tři komponenty, provedení / načtení samotné instrukce a přístupový čas pro zdroj a cíl. Poslední dvě komponenty závisely na režimu adresování. Například na PDP-11/70 (cca 1975) měla instrukce ve tvaru ADD  x (R m ), y (R n ) čas načtení / provedení 1,35 mikrosekundy plus čas zdroje a cíle po 0,6 mikrosekundě , pro celkovou dobu výuky 2,55 mikrosekund. Jakýkoli případ, kdy adresovaná paměť nebyla v mezipaměti, přidal 1,02 mikrosekundy. Register-to-register ADD R m , R n mohl provést z mezipaměti za 0,3 mikrosekundy. Plovoucí desetinná čárka byla ještě složitější, protože došlo k určitému překrytí mezi CPU a procesorem s plovoucí desetinnou čárkou, ale obecně byla plovoucí desetinná čárka výrazně pomalejší. Instrukce s plovoucím přidáním s jednou přesností se může pohybovat od 2,4 do 5,5 mikrosekund plus čas na načtení operandů.

Přerušení

PDP-11 pracoval na prioritní úrovni od 0 do 7, deklarované třemi bity ve stavovém slově procesoru (PSW) , a špičkové modely mohly pracovat v různých režimech, jádro (privilegované), uživatel (aplikace), a někdy supervizor, podle dvou bitů v PSW.

Chcete-li požádat o přerušení, zařízení sběrnice bude prosazovat jednu ze čtyř běžných linek sběrnice BR4 až BR7, dokud procesor neodpoví. Vyšší čísla naznačovala větší naléhavost, možná že by mohlo dojít ke ztrátě dat nebo by se požadovaný sektor mohl otáčet mimo kontakt s čtecími / zapisovacími hlavami, pokud procesor nereagoval rychle. Připravenost tiskárny na další znak měla nejnižší prioritu (BR4), protože by zůstala připravena na neurčito. Pokud by procesor pracoval na úrovni 5, pak by byly BR6 a BR7 v pořádku. Pokud procesor pracoval na 3 nebo nižší, poskytl by jakékoli přerušení; pokud v 7, neposkytl by žádný. Žádosti o autobus, které nebyly schváleny, nebyly ztraceny, pouze odloženy. Zařízení vyžadující službu bude i nadále prosazovat svůj požadavek na sběrnici.

Kdykoli přerušení překročilo úroveň priority procesoru, procesor uplatnil odpovídající přidělení sběrnice, BG4 až BG7. Autobusové linky nebyly běžné linky, ale byly řetězcem : Vstupem každé brány byl výstup předchozí brány v řetězci. Na každém sběrnicovém zařízení byla brána a zařízení fyzicky blíže k procesoru bylo dříve v řetězci. Pokud zařízení zadalo požadavek, mohlo by při snímání vstupu vstupu sběrnice dojít k závěru, že má kontrolu nad sběrnicí, a nepředalo signál povolení dalšímu zařízení na sběrnici. Pokud zařízení neprovedlo požadavek, rozšířilo svůj vstup sběrnicového grantu na svůj výstup sběrnicového grantu, čímž dalo dalšímu nejbližšímu zařízení šanci odpovědět. (Pokud zařízení neobsazovala přilehlé sloty k desce procesoru, „udělení spojitých karet“ vložené do prázdných slotů šířily linku udělení sběrnice.)

Jakmile zařízení ovládlo sběrnici, zařízení zrušilo svůj požadavek na sběrnici a umístilo na sběrnici adresu paměti svého dvouslovného vektoru. Procesor uložil čítač programu (PC) a PSW, vstoupil do režimu jádra a načetl nové hodnoty ze zadaného vektoru. Pro zařízení v BR6 by nový PSW ve svém vektoru typicky specifikoval 6 jako novou prioritu procesoru, takže procesor by během servisní rutiny ctil naléhavější požadavky (BR7), ale odkládal požadavky stejné nebo nižší priority. S novým počítačem procesor skočil na servisní rutinu přerušujícího zařízení. Tato rutina obsluhovala zařízení, alespoň odstranila stav, který způsobil přerušení. Rutina skončila instrukcí RTI (ReTurn from Interrupt), která obnovila PC a PSW těsně předtím, než procesor povolil přerušení.

Pokud byl požadavek na sběrnici vytvořen omylem a žádné zařízení neodpovědělo na sběrnici, procesor vypršel a provedl past, která by naznačovala špatný hardware.

Montážní jazyk MACRO-11

Děrovaná páska použitá pro PDP-11

MACRO-11 je jazyk sestavení pro PDP-11. Jedná se o nástupce PAL-11 (Program Assembler Loader), dřívější verze montážního jazyka PDP-11 bez funkcí maker. MACRO-11 byl podporován na všech operačních systémech DEC PDP-11. Systémy PDP-11 Unix také obsahují assembler (nazývaný „ as “), strukturálně podobný MACRO-11, ale s odlišnou syntaxí a méně funkcemi.


Poznámky

Reference

  • Příručka k procesoru pdp11 - pdp11 / 05/10/35/40 . Digital Equipment Corporation. 1973.
  • Příručka k procesoru pdp11 - pdp11 / 04 / 34a / 44/60/70 . Digital Equipment Corporation. 1979.

Další čtení

  • Eckhouse, jr., Richard H .; Morris, L. Robert (1979). Organizace, programování a aplikace mikropočítačových systémů (PDP-11) . Englewood Cliffs, New Jersey : Prentice-Hall . ISBN 0-13-583914-9.
  • Michael Singer, PDP-11. Assembler Language Programming and Machine Organisation , John Wiley & Sons, NY: 1980.

externí odkazy