„PDP–11 architektúra” változatai közötti eltérés

[ellenőrzött változat][ellenőrzött változat]
Tartalom törölve Tartalom hozzáadva
j
j.tot
12. sor:
A processzor, a tár és a perifériavezérlők egyetlen kétirányú, aszinkron működésű univerzális sínrendszerre kapcsolódnak. A perifériák vezérlőregiszterei a memória felső 4 KiB méretű részébe vannak leképezve; nincsenek külön I/O utasítások, az adatcsere a perifériák és a processzor között az utasításkészlet MOV (adatmozgató) utasításával végezhető. A sínrendszer biztosítja a perifériák közötti beavatkozás nélküli adatátvitelt és a [[DMA]] lehetőségét.
 
Az architektúra gépei hierarchikus, hardveresen kezelt megszakításkezeléssel rendelkeznek. A processzor 8 prioritási szintet kezel, a perifériákhoz hardveresen prioritás van hozzárendelve. A megszakítási rendszer vektoros típusú. A megszakításvektorok kétszavas értékek, amelyek a kezelőrutin kezdőcímét és állapotszavát tartalmazzák, és a memória (oktális) 0–377<sub>8</sub>, más konfigurációkban 0–777<sub>8</sub> címtartományában vannak tárolva.
 
== Memória ==
=== Adatformátumok ===
A 16 bites szavak ''little-endian'' [[bájtsorrend]]ben voltak tárolva (tehát a legkisebb helyiértékű bájt a legkisebb címen). A PDP-11PDP–11 nagyon népszerű gép volt, és emiatt ezt az adatábrázolási módot gyakran ''pdp-endian''-ként emlegetik. A 32 bites adatok az alap architektúra kiterjesztéseiben jelentek meg, pl. a lebegőpontos formátum az ''FPU Instruction Set'' (lebegőpontos processzor utasításkészlet), a duplaszó az ''Extended Instruction Set'' (kiterjesztett utasításkészlet) vagy a ''long'' adattípus a ''Commercial Instruction Set'' (kereskedelmi utasításkészlet) bővítésekben; ezeket több formátumban tárolta a processzor, pl. a szokatlan ''middle-endian'' formátumban (ld. [[Bájtsorrend#Logikai_és_aritmetikai_leírás|Bájtsorrend, Középső a végén]]).<ref>pdp11/05/10/35/40, Chapter 7.</ref><ref>pdp11/04/34a/44/60/70, page 421.</ref>
 
=== Memóriakezelés ===
A PDP-11PDP–11 [[16 bites]] címeket használ, amivel 64 [[KiB]] memóriát képes címezni. Abban az időben, mikor a PDP-11PDP–11 átadta a helyét a VAX-nak, a 8 bites [[bájt]] és a [[hexadecimális]] jelölés szinte ipari szabvánnyá vált, azonban a PDP-11PDP–11-nél a számok jelölésében mindenhol az oktális, [[nyolcas számrendszer]]t használták, és a memória méretét sem bájtban, hanem szavakban adták meg. Az alap logikai címmező 32 K szóból áll, de a legfelső 4 K (tehát az oktális {{szám|160000}}—{{szám|177777}} címeken lévő) szó nem volt memóriához rendelve, mert a sín be/kimeneti regiszterei voltak erre a címterületre leképezve. Tehát eredetileg egy teljes kiépítésű PDP-11PDP–11 28 K szót tartalmazott.
 
A processzor az alsó memóriacímeket kétszavas vektoroknak tartotta fenn, amelyekben az elvégzendő kiszolgálórutin kezdőcímét és kezdeti állapotszavát tárolta a rendszer. Mikor egy I/O eszköz megszakítja a program futását, a saját vektorcímét a sínre helyezi/írja, ezzel jelezve, hogy melyik kiszolgálórutinnak kell átadni a vezérlést. A legalacsonyabb című vektorok különböző csapdák (''trap'') kiszolgálórutinjainak címét tartalmazták. A csapdák olyan megszakítások, amelyeket programhibák, pl. túlcsordulás vagy nem implementált utasításkód végrehajtásának kísérlete okoznak, valamint a BPT, EMT, IOT vagy TRAP utasítások, amelyekkel az operációs rendszer szolgáltatásai hívhatók.
 
=== Memóriabővítés ===
A PDP-11PDP–11-es alaparchitektúra elég rugalmas volt és folyamatosan integrálta az újabb technológiákat, azonban a 16 bites logikai címzés végül a nagyobb alkalmazások készítésének leküzdhetetlen akadályává vált. A PDP-11PDP–11 életciklusában az alábbi módszerekkel igyekeztek megkerülni:
* A késői PDP-11PDP–11 modellek processzorai már memóriakezelőt is tartalmaztak, amely támogatta a [[virtuális memória]]címzést. A fizikai címet 18 vagy 22 bitesre terjesztették ki, ami ezáltal 256 KiB vagy 4 MiB RAM címzését teszi lehetővé. A logikai címtér (az a címtér, ami bármely pillanatban rendelkezésre áll a memória lapkiosztás változtatása nélkül) továbbra is 16 bites maradt.
* Néhány modellnél, kezdve a PDP-11PDP–11/45-tel, beállítható külön 32 K szó (64 KiB) az "utasítástér" és egy másik külön 32 K szó méretű memóriaterület az "adattér" számára. Néhány operációs rendszer – például a V7 kiadás utáni Unix és az RSX11-M+ – erősen kihasználta ezt a tulajdonságot.
* Programozási technikákkal elrejthetők a memórialapozási problémák az alkalmazásprogramozók elől. Például a [[Modula-2]] nyelvben a fordítóprogram olyan kódot generált, amelyben a futtatórendszer 8 KiB méretű lapokat váltogatott a logikai címtérben, mikor az egyes procedúrák megkapták a vezérlést.<!-- hivatkozás?? -->
 
166. sor:
 
==Utasításkészlet==
A PDP-11PDP–11 bájtokon és szavakon képes műveleteket végezni. A bájtok lehetnek regiszterekben, ekkor a bájt a regiszter alsó bájtjára kerül; avagy egy memóriacímen. A szavak lehetnek regiszterekben vagy a memóriában, ahol a szó címe a szó kisebb helyiértékű bájtjára mutat és a cím páros. Az operandusokat használó utasításokban általában a 15-ik bit mutatja, hogy bájtos (1) vagy szavas (0) címzésről van szó. Az assembly nyelvben az utasítások alapértelmezésben szavas címzést használnak, az utasítás mnemonikja után írt B betű jelzi a bájtos műveletet, pl. a MOV bájtos változata a MOVB lesz.
 
=== Kétoperandusú utasítások ===
316. sor:
|0003 || SWAB || ''Swap bytes'', bájtfelcserélés: a céloperandus alacsonyabb és magasabb helyiértékű bájtjainak értékét cseréli fel
|-
|004r ||colspan=2 JSR || ''Jump to subroutine'', szubrutinra ugrás
|-
|104x ||colspan=2 EMT || ''Emulator trap'', emulátor-csapda
|-
|0050 || CLR ||rowspan=2| ''Clear'', törlés: dest = 0
513. sor:
 
;Hozzáférés a processzor állapotszóhoz (''Processor Status Word'', PSW)
A PSW az oktális {{szám|177776}}-os memóriacímre volt leképezve, de a PDP-11PDP–11-es modellek közvetlenebb hozzáférést biztosítottak ehhez a regiszterhez, legkorábbi PDP-11PDP–11 modelleket kivéve.
*SPL – ''Set priority level'', prioritási szint beállítása
*MTPS – ''Move to Processor Status'', mozgatás a processzor állípotregiszterbe
519. sor:
 
;Hozzáférés egyéb memóriaterületekhez
Azokon a PDP-11PDP–11 modelleken, amelyeken rendelkezésre állt az elkülönített utasításterület és adatterület, a területek elérését egy nem-ortogonális mozgatóutasítás-készlet biztosította. Ezeket pl. a futásidejű rendszerhívásokat kezelő operációs rendszerrutinokban használták, amelyek ezek segítségével kommunikáltak a hívóval. Az utasítások:
*MTPD – ''Move to previous data space'', mozgatás az előző adatterületre
*MTPI – ''Move to previous instruction space'', mozgatás az előző utasításterületre
525. sor:
*MFPI – ''Move from previous instruction space'', mozgatás az előző utasításterületről
=== Inkonzisztens utasítások ===
A PDP-11PDP–11 élettartama alatt a különböző felépítésű és különböző technikákkal megvalósított modellekben idővel apró eltérések jelentkeztek az utasítás- és címzésimód-kombinációk végrehajtásában, bár egyiket sem tartottak az egyedüli helyes megoldásnak. Az eltérések nem nagyon befolyásolták a PDP-11PDP–11 szokásos használatát.
 
Például a MOV R5,-(R5) utasítás a regiszterben tárolt értéket az általa mutatott címre mozgatja (az érték és a cím ugyanaz a szám), a cím kettővel való csökkentése után. Egy mikroprogramozott PDP-11PDP–11 képes lehetett teljesen kiszámítani/kiértékelni a forrásoperandust, még a céloperandus kiértékelésének megkezdése előtt, így a mozgatott érték nem tükrözi a csökkentést (dekrementálást). Egy áramkörökkel megvalósított (huzalozott) PDP-11PDP–11 esetleg a csökkentést hajtotta végre először, mivel így megtakaríthatott egy memóriaciklust.
 
=== Sebesség ===
542. sor:
 
== A MACRO-11 assembly nyelv ==
[[Image:Papertape.jpg|thumb|[[Lyukszalag]] a PDP-11PDP–11-hez]]
 
A [[MACRO-11]] a PDP–11 [[assembly nyelv]]e. Ez a nyelv a PAL-11 (''Program Assembler Loader'') utódja, amely szintén a PDP–11 assembly nyelve, de nem támogatja a makrók használatát. A MACRO-11 megtalálható volt a DEC minden PDP–11-hez készített [[operációs rendszer]]ében. A PDP–11-es [[Unix]] rendszerek szintén tartalmaztak egy „as” nevezetű assemblert, amely struktúrájában hasonlított a MACRO-11-hez, de eltérő volt a szintaxisa és kevesebb lehetőséget nyújtott.
557. sor:
| title = Macro nyelvű programozás I.
| url =
| author =
| coauthors = Gálfi Zoltán, Ivanyos Lajosné, Kovács Kálmán, Nagy Mihály, Salamon Márton
| editor = Lőcs Gyula
| year = 1984
| publisher = [[SZÁMALK]]
| language = magyar
| id = HU ISSN 0230-7464, ISBN 963-553-069-2 összkiadás, ISBN 963-553-070-6 I. kötet
| pages = 37
| chapter = 2.3 Közvetett címzés
| quote =
}}</ref>
 
572. sor:
| title = Macro nyelvű programozás I.
| url =
| author =
| coauthors = Gálfi Zoltán, Ivanyos Lajosné, Kovács Kálmán, Nagy Mihály, Salamon Márton
| editor = Lőcs Gyula
| year = 1984
| publisher = [[SZÁMALK]]
| language = magyar
| id = HU ISSN 0230-7464, ISBN 963-553-069-2 összkiadás, ISBN 963-553-070-6 I. kötet
| pages = 53-54
| chapter = 2.3 Közvetett címzés
| quote =
}}</ref>
 
641. sor:
 
[[Kategória:Utasításkészlet-architektúrák]]
 
<!-- ideiglenesen -->