Egy harmadik generációs számítógép

Mint már fentebb említettük, a korszak és a későbbi fejlődés meghatározó tényezője volt az IBM System/360-as gépcsalád. (Az RCA (Radio Corporation of America) által gyártott Spectra 70-es sorozat nagymértékben kompatibilis volt az IBM gépeivel.)

53. ábra:

IBM 360-as számítógép

Maga a számítógép a két nagy szekrényben a terem közepén látható, az egyiknek az oldalán a korábbi generációkból örökölt vezérlőpult, amin az egyes regiszterek állapotát lehetett leolvasni és beállítani. A kép közepén van az operátori ún. konzolírógép: ezen keresztül lehetett parancsokat adni az operációs rendszernek és az üzeneteket is ide írta ki a gép. Balra elöl mágneslemezes egységek láthatók, a háttérben mindkét oldalon mágnesszalag-meghajtók, jobboldalt hátul pedig egy sornyomtató.

 

Tervezési szempontok

A 360-as gépek tervezésénél a fő szempontok az alábbiak voltak:

  1. A sorozat tagjait egyaránt lehessen használni üzleti és tudományos feladatokra. Ezt nagyrészt azzal érték el, hogy sokfajta adattípust használtak és a gép mind bináris, mind decimális aritmetikai műveleteket el tudott végezni (ez utóbbit BCD kódolású adatokkal).
  2. Az egyes modellek a programok szempontjából kompatibilisek legyenek, így az a felhasználó, aki egy kisebb teljesítményű gépet vásárol, az igények növekedésével könnyen tud átállni egy nagyobb gépre. A gépcsalád összes tagja ugyanazt az utasításkészletet használta, bár a hardver megvalósítás eltérhetett egymástól. A család kisebb tagjai mikroprogramozott CPU-t használtak, a nagyobbaknál minden funkciót hardverben oldottak meg.
  3. A gépek felépítése nyitott legyen abban az értelemben, hogy új vagy kiegészítő egységeket, pl. processzorokat vagy perifériákat könnyen lehessen a rendszerhez csatlakoztatni. Ez a célkitűzés nagyban meghatározta az input-output rendszert. Több különböző IO processzort (a saját szóhasználatukban csatornát) használtak, a perifériák és az IOP-ok csatlakozását pedig egységesítették.
  4. A rendszer alkalmas legyen multiprogramozásra. Erre a célra egy nagy, összetett operációs rendszert, az OS/360-at fejlesztették ki.

Az alábbi táblázat a 360-as gépcsalád egy kicsi és egy nagy tagjának paramétereit hasonlítja össze:

Alrendszer

Paraméter

Model 30

Model 70

Operatív

tár

A memória ciklusideje

2 m s

1 m s

A memória-busz szélessége

8 bit

64 bit

Az átlapolt memóriamodulok száma

1

2

Maximális adatátviteli sebesség

4 Mbit/s

128 Mbit/s

Ciklusidő

1 m s

0,2 m s

CPU

A regiszterek felépítése

ferritgyűrűs

félvezetős

A belső busz szélessége

8 bit

64 bit

Relatív számítási sebesség

1

50

A rendszer felépítése

Az ábrán egy tipikus 360-as gép általános felépítése látható (a későbbi 370-es sorozat ugyanilyen szerkezetű volt). Igen nagy a hasonlóság a korábbi IBM 7094-es géphez.

Itt kétfajta IOP-ot használtak, a multiplexer (vagy multiplexor) csatornát és a szelektor csatornát. A multiplexer csatorna több perifériát is ki tudott szolgálni olyan módon, hogy az eszközök és az operatív tár közötti adatátvitelt átlapolta, multiplexelte. Erre a csatornára kapcsolták a lassú perifériákat (nyomtató, kártyaolvasó, kártyalyukasztó), mert az eszközök fizikai sebessége megengedte, hogy közben az IOP más igényeket is kiszolgáljon. A szelektor csatorna viszont csak egy hozzá kapcsolt eszköz kiszolgálásával foglalkozott egyidejűleg. Erre kapcsolták a gyors perifériákat, tipikusan a mágneslemezeket. Mindegyik IOP egy egységes szerkezetű buszra, az úgynevezett I/O interfészre csatlakozott. Ezt a buszt közösen használták az adott IOP-ra kapcsolt eszközök. Mindegyik eszközhöz, illetve az azonos típusú eszközök egy csoportjához volt még egy helyi vezérlő egység, ami már az adott fajta perifériára jellemző felépítésű volt.

 

A memória szervezése, adatformátumok

A memória bájt szervezésű volt, azaz a bájt volt a legkisebb elérhető egység és minden bájtnak saját címe volt. Használatos fogalom volt még a szó, ami 4 szomszédos bájtot jelentett. Ugyancsak használták a félszót (2 bájt) és a duplaszót (8 bájt).

A numerikus adatokat négy alakban lehetett tárolni: fixpontos bináris (2 vagy 4 bájt), lebegőpontos bináris (4, 8 vagy 16 bájt), zónázott decimális (1 számjegy/bájt) és pakolt decimális (2 számjegy/bájt). A decimális adatok változó hosszúságúak lehettek, a számjegyeket a BCD kódjukkal tárolták. A fixpontos bináris számokat kettes komplemens formában tárolták. A bináris számokat tudományos alkalmazásokhoz szánták, a decimálisakat pedig üzleti alkalmazásokhoz. A decimális számokkal való számolásra a processzornak külön decimális aritmetikai áramkörei voltak.

Az alfanumerikus adatok változó hosszúságúak lehettek. Egy bájtban egy karaktert tároltak, általában EBCDIC (Extended Binary Coded Decimal Interchange Code) kóddal.

A CPU felépítése

Az IBM 360-as (és a későbbi 370-es) gépcsalád jellemző CPU-felépítése az ábrán látható. Az aritmetikai-logikai egység három különböző funkciójú részre osztható:

  1. Fixpontos műveletek végrehajtása, beleértve az egész számokkal végzendő aritmetikai műveleteket és a címkiszámítást is.
  2. Lebegőpontos műveletek.
  3. Változó hosszúságú operanduszokkal végzett műveletek, ide értve a decimális aritmetikai műveleteket és a string-műveleteket.

A processzorban kétféle, egymástól független regiszter-garnitúra szolgált az adatok és a címek tárolására. Volt 16 db általános célú regiszter, amikben az operanduszokat és az eredményeket lehetett tárolni, de indexregiszterként is lehetett használni őket. A lebegőpontos műveletekhez külön volt 4 db lebegőpontos regiszter. Ezek az általános célú és lebegőpontos regiszterek a korábbi gépek akkumulátorát és szorzó-hányados regiszterét is helyettesítették. A DR adatregiszter, az AR címregiszter és az IR utasításregiszter funkciója megegyezik a korábbi gépeknél látottal.

Egy külön regiszter van a programállapot-szó (PSW, Program Status Word) tárolására. Ez a korábban látott utasításszámláló regiszter, a PC kiterjesztéseként is felfogható. A következőként végrehajtandó utasítás címén kívül a PSW arról is tartalmazott információt, hogy a CPU milyen interruptra reagálhat. A PSW-t alapvetően az interruptok feldolgozására szánták. Interrupt esetén a CPU a PSW-t elteszi az operatív tárba, majd onnan egy új PSW–t tölt be. Ez természetesen egy új címet tartalmaz a következő végrehajtandó utasításhoz, tehát így hívódik meg a megszakítást lekezelő program. E program végrehajtása után a régi PSW visszatölthető a memóriából, és így a megszakított program végrehajtása folytatható.

A CPU többfajta állapotban lehet. Amikor az operációs rendszer egy rutinját hajtja végre, akkor supervisor állapotban van. Bizonyos utasításokat csak ebben az állapotban lehet végrehajtani. A felhasználói programok végrehajtásakor a CPU program állapotban van, ez az általános helyzet. A CPU állapotát a PSW egy részének tartalma szabja meg.

A PSW tartalmazott egy kulcsmezőt is, amivel a memória védelmét oldották meg. Az operatív tárat 2 kbájtos blokkokra osztották és mindegyik blokkhoz meg lehetett adni egy memória-kulcsot. Ez a kulcs az adott blokkhoz való hozzáférést engedélyezte (csak olvasható, írható és olvasható, vagy egyik sem). Amikor egy utasítás egy tárcímre hivatkozott, az utasítás csak akkor hajtódott végre, ha a PSW-ben lévő kulcsmező tartalma megegyezett az elérendő memória-blokk kulcsával.

Utasításkészlet

Az IBM 360-as gépcsalád utasításai 2, 4 vagy 6 bájt hosszúak lehettek és egy, kettő vagy három címet tartalmaztak. Öt különböző típusú utasítás van az operanduszok helyének megfelelően:

  1. RR (register-register) utasítások. Az R1 és R2 operandusz egy-egy általános célú regiszterben van. Az eredmény az R1-be kerül.
  2. RX (register-index) utasítások. Az egyik operandusz az R1 regiszterben van, a másik az operatív tárban. A címe X2+B2+D2 formában kapható meg, ahol X2 egy indexregiszterként használt általános célú regiszter tartalma, B2 egy bázisregiszterként használt általános célú regiszter tartalma, D2 pedig egy 12 bites relatív cím (eltolás, displacement) és magában az utasításban van. Az eredmény az R1-be kerülhet.
  3. RS (register-storage) utasítások. Két operandusz általános célú regiszterekben van, a harmadik az operatív tárban.
  4. SI (storage-immediate) utasítások. Az egyik operandusz a memóriában van, a másik magában az utasításban. Ez utóbbi tehát nem egy cím, hanem maga a konkrét adat.
  5. SS (storage-storage) utasítások. Mindkét operandusz az operatív tárban van. Az operanduszok változó hosszúságú adatok, az utasítás a kezdőcímüket és a hosszukat tartalmazza.

Az utasítások funkcióját tekintve megvoltak a korábban is említett fő típusok: adatátviteli, aritmetikai, elágazó és IO utasítások. A különböző utasításkódok száma majdnem 200 volt. Ennek jó része abból adódott, hogy egy utasításnak, pl. az összeadásnak különböző altípusai voltak az operanduszok típusának megfelelően.

Voltak újfajta utasítások is. Volt utasítás pl. arra, hogy adott mennyiségű adatot az operatív tár egyik részéből a másikba mozgassanak. Sok utasítás volt a különböző típusú adatok közötti konverzióra is. Logikai műveleteket is végre lehetett hajtani. Volt egy csoport úgynevezett privilegizált utasítás, amelyeket csak a CPU supervisor állapotában lehetett végrehajtani. Ezek szolgáltak a PSW módosítására, a memóriavédelmi kulcsok beállítására, stb.