keskiviikko 17. kesäkuuta 2015

IBM 1800 - Arkkitehtuuria osa 1


Heili menossa takaisin kasaan.

Voisi välillä päivittää 1800:n kuulumisia ja valaista tämän keksinnön sielunelämää. Pikakuvaus ennen asiaan menemistä: IBM 1800 on prosessinohjaustietokone, jota valmistettiin noin 2000 kappaletta vuosina 1965 - 1973. Siis peräisin tietokoneen kultaisilta vuosilta, ajalta jolloin sähköaivot aiheuttivat tavallisessa ihmisessä kauhunsekaisia tunteita, tietokone kun joko oli viemässä työpaikat tai orjuuttamassa ihmiskunnan.

Obey!

Vaikkei 1800 ole läheskään niin tunnettu kone kuin sen sisarmalli 1130, on se historiallisesti merkittävä kone. Se on ollut vastuussa ydinvoimaloiden, ruukkien, tehtaiden ja muiden teollisuudenprosessien ohjaamisesta, kuin myös NASAn kantorakettien laukaisusta. Tämä kokoelmaani eksynyt yksilö on peräisin Outokumpu Oy:n Vuonoksen kaivoksen rikastamosta. Se toimi 1971 - 1986, kunnes töpseli vedettiin seinästä ja se jäi niille sijoilleen.



Perusjutut ensin


Heilin kokoonpano vie noin 40..50m2 huonetilaa. Kyseinen muutaman tonnin painoinen kokoonpano sisältää räkit:

1801 CPU
1803 muistilaajennus
1826 data-adapteri (3kpl)
1829 IO-kytkentäkaappi multiplexereillä (2kpl)
2841 kiintolevyohjain

...lisälaitteet:

2311 kiintolevyt (2kpl)
1442 reikakortinlukija/kirjoitin
1443 nopea tulostin
1816 terminaali
1053 Seletric tulostin (muutama)
1627 plotteri

Tyypillinen kokoonpano, huonekoko vaatimattomat 7m x 9m.


Leveys data- ja osoiteväylällä 16-bittiä. Muistia maksimissaan 64 kilosanaa, toisin sanoen 128 kilotavua. Jokaisella on myös pariteetti- ja suoja-bitti, joka on aika tyypillinen aikansa ratkaisu. Muisti sijaitsee osittain 1801 CPU:n sisällä ja loput 400kg:n lisämuistiräkissä. Muistin aika joko 4us, 2.25us tai 2us, riippuen muistin määrästä ja ostetusta optiosta. Heilin muisti on 2.25us muistilaajennuksesta johtuen.

Älyn toteutus on IBM:n omalla SLT (Solid Logic Technology) -tekniikalla. Tämä tarkoittaa modulaarisia piirilevynpaloja, joissa on IBM:n omakehittämiä keraamisia piirejä. Monimutkaisuus piireillä on aika vaatimaton, monimutkaisemmat tämän ikäluokan SLT:t sisältävät parhaimmillaan yhden kiikkukytkennän.

CPU:n (1801) sisällä ei itse "ydin"-CPU:ta ole oikeastaan kuin parin lohkon muodossa, loput ovat tavalla tai toisella IO-, DMA-, tai keskeytyspuoleen liittyvää.

Tässä sitten livenä koko CPU.



Käskykanta


Käskykanta.

1800:n CPU noudattaa todellista RISC (Reduced Instruction Set Computing) -ajattelua, käskyjä löytyy vajaa kolmekymmentä, hiukan laskutavasta riippuen. Mitään mikrokoodia käskyjen purkuun ei ole, kaikki tapahtuvat "kova"-koodattuna suoraan porttitasolla, josta seuraa melko rajallinen käskykanta. Mikä mielenkiintoista, CPU osaa yhteen- ja vähennyslaskujen lisäksi myös kerto- ja jakolaskut, 16- että 32-bittisinä. Liukulukuarithmetiikkaa ei ole, se on hoidettava softatasolla. Muistinosoitus käy suorasti, epäsuorasti ja/tai indeksoituna. Indeksointia varten on kolme rekisteriä.

Jokainen käsky on jaettu I-, E- ja/tai A-jaksoihin, joista jokainen puolestaan kestää kahdeksan kellojaksoa, T0 - T7. I-jakso siirtää käskyn muistista käskyrekisteriin, E-jakso(t) suorittaa sen. A-jaksoa käytetään vain epäsuoran muistinosoituksen kanssa.

Heilin sydän.

Koneen kello juoksee 4MHz taajuudella, mutta käytännössä kellotaajuus ei realisoidu suorituskykynä, johtuen suuresta määrästä kellojaksoja per käsky. Parhaimmilaan Heili suorittaa käskyn noin 5us ajassa, eli 200 000 käskyä / s.



Rekisterit


Rekistereitä ei tähän keksintöön ole uhrattu sen enempää kuin käskyjä:

A-Reg, tulosrekisteri
D-Reg, datarekisteri
U-Reg, väliaikaisrekisteri
Q-Reg, A-rekisterin jatke
I-Reg, ohjelmalaskuri
M-Reg, muistiosoitteen rekisteri
B-Reg, muistidatan rekisteri
XR (1-3), indeksirekisterit
Käskyrekisteri

CPU:n yksinkertaistettu lohkokaavio.

Oikeastaan CPU:ssa ei ole kuin yksi rekisteri, tulosrekisteri A. Se on ainut joka näkyy ohjelmoijalle suoraan, käskyt kun ovat muotoa: "laske osoitteen sisältö yhteen A-rekisterin kanssa ja tallenna tulos A-rekisteriin". Q-rekisteri näkyy epäsuorasti, sitä käytetään 32-bittisten laskujen yhteydessä. U-rekisteriä ei näe edes taulun valoista, se on vain A-rekisterin väliaikainen paikka, kun ALU varastetaan ohjelmalaskurin kasvattamiseen tai indeksoidessa muistiosoitteen laskemiseen. Mikä taas huomion arvoista, ALUa ei lohkokaaviossa näy. Se on kimpassa A-rekisterin kanssa, mutta nähtävästi IBM ei ole vaivautunut moista "turhuutta" mainostamaan.

SLT-moduli, jossa A-, U- ja D-rekisterien bitit 0 ja 1 sekä jotain ALUn portteja. 361435-piiri on kiikku, joka pitää rekisterin bitin tallessa.

Sama asia sitten ALD-kuvissa. Gate B, Array A2 ja korttipaikka C4. Piirissä viite "A BIT 0".

Ja sitten se piirin sisus.

Nämä ominaisuudet eivät tarkoita, että 1800 olisi jotenkin alkeellinen tai huono esitys ajaltaan, hienous piilee enemmänkin sen DMA:ssa ja siinä, että tämä kone noudattaa jo käskyformaatiltaan nykyaikaista konetta. Käskyt voivat olla joko lyhyessä tai pitkässä muodossa. jolloin käskyä seuraava muistipaikka sisältää muistiosoitteen käskyn tarvitsemalle datalle. Tämä ei ollut mikään ilmiselvä asia aikanaan, esimerkiksi Honeywellin tapauksessa kaikki käskyt ovat yhden sanan mittaisia. Yksi sana sisältää käskyn ja 9 bittiä pitkän osoitteen datalle. Tämä tuottaa ongelman, koska 9 bitillä ei pääse käsiksi koko muistiavaruuteen ja purukumipaikaksi on joko indeksointi tai muistipankin vaihto (bank switching).

Lyhyt ja pitkä käskymuoto.

Pitkä käskymuoto myös mahdollistaa IBM:n tapauksessa ehdolliset hyppykäskyt suoraan haluttuun osoitteeseen, eivätkä ne ole "Skip Next If"-tyylisiä. IBM osaa myös palata aliohjelmasta takaisin tallentamalla paluuosoitteen. Ominaisuus joka - uskomatonta kyllä - ei todellakaan ollut mikään selviö.

"Älyvapaat" (tai sitten hyvin nerokkaat...) muistinosoitustavat puuttuvat IBM:stä kokonaan, kuten mahdollisuus usean hypyn epäsuoraan muistinosoitukseen. Kyseinen erikoisuus löytyy mm. HP1000:sta ja Honeywell H316:sta. Ja IBM:n ajatusmaailma on tuolloin ollut jo heksamuodossa, ei oktaaleina kuten monella muulla vielä 70/80-luvun taitteessa.



DMA


Se mikä tekee 1800:sta poikkeuksellisen on sen kehittynyt keskeytyksen hallinta ja huippunopea DMA (Direct Memory Access), noin 1MB/s. IBM ei tuolloin kutsutunut kyseistä ominaisuutta DMA:ksi, vaan Cycle-Stealiksi. Sinällään ilmaisu on oikea, suora datansiirto muistiin varastaa CPU:lta jaksoja. CPU:lla on oma kellonsa, joka kulkee T0:sta T7:ään, Cycle-Stealilla puolestaan kello X0 - X7. Kun muistin varastamista tarvitaan, CPU:n T-kello pysähtyy ja X-kello alkaa juoksemaan, jonka kahdeksan jakson aikana data vaihtaa paikkaa IO:n ja muistin välillä.

Datakanava.

IO:laitteet voivat itsenäisesti kirjoittaa tai lukea muistia ja nämä tapahtumat voivat tulla ajastettuina, keskeytyksen kautta tai jatkuvana. Tämä oli sitä jotain ensijulkaisun aikaan 1965. DMA ei kotikoneisiin rantautunut vasta kuin parikymmentä vuotta myöhemmin.

Tarkempi kuvaus Cycle-Stealista ja keskeytyksistä luvassa myöhemmin 2841 kiintolevynohjaimen toiminnankuvauksen yhteydessä.



Muisti


Ferriittimuistilla on hyviä ja huonoja ominaisuuksia, jotka olivat hyväksyttävä 60- ja 70-luvulla. Se ei ole erityisen nopea, johtuen osittain siitä, että se pitää kirjoittaa takaisin aina kun siitä on luettu. Ei nyt mahdoton ongelma, koska muisti voidaan kirjoittaa takaisin "tyhjän" konejakson aikana tai muisti tekee sen itse. 1800 tekee tämän takaisinkirjoituksen CPU:n avustamana käskyn tai datan noudon jälkeen.

Käskyn nouto ja muistin palautus.

Mutta se hyvä puoli: ferriitti ei ikinä (ainakaan ihmisiän aikana) hukkaa sisältöään, joten Heilillä pitäisi olla vieläkin mielessä vuosi 1986 ja mihin se jäi. Kunhan tämä joskus herää, ensimmäinen työ on dumpata muisti PC:lle DMA:n avulla.

Yksi muistilohkoista. 8 kilosanaa ferriittiä, yhteensä 16 bit + 2 bit x 8192 = 147 456 ferriittirengasta. Näitä koneessa on yhteensä 8 kpl, eli pieniä renkaita huikeat 1,2 miljoonaa kappaletta.
Ferriittimuistin rakennetta.



Heilin edistyminen


Työkiireet ja uudet lelut ovat hiukan hidastaneet Heilin entisöintiä. mutta on saanut älynsä takaisin kuoriensa sisään. Lattakaapeleita "älyovien" välissä menee noin 70 kappaletta, joten pitää tarkistaa vielä kertaalleen jokaisen paikka: jonkinasteinen tuho on aika varma seuraus väärästä liittimestä väärässä paikassa.

Lisäksi pitää arvailla voimajohdotus älyoville, niitä kun ei IBM vaivautunut merkitsemään, eikä aika riittänyt merkitsemiseen paikan päällä. Tosin oikeiden johtojen löytäminen ei sinällään ole haaste, se vain ottaa mutaman tunnin aikaa. Nyt pitäisi enää hankkia riittävän iso säädettävä muuntaja virtalähteiden keittämiseen.

Loppuun vielä aika hauska löytö, joka osui silmään Elkan valokuva-arkistosta:


ELKA: KUVAN TIEDOT
Arkiston muodostajan nimi: OUTOKUMPU OY, KUVA- JA ÄÄNIARKISTO
Kuvan numero: 10531_000499
(ota numero talteen esim. kuvan tilausta varten)
KUVA
Otsikko: VUONOKSEN TIETOKONEEN VIHKIÄISET JA NIMENANTOTODISTUKSEN ALLEKIRJOITUS VUONOKSEN TIETOKONEHUONEESSA
Toimiala: KAIVOS- JA KAIVANNAISTOIMINTA:ELINKEINO- JA AMMATTIJÄRJESTÖT
Sisällön tyyppi: JUHLA
Aika: 1971
Kunta: OUTOKUMPU (ENT. KUUSJÄRVI),:POHJOIS-KARJALA - NORRA KARELEN
Väri: MV
Kuvan koko: 124x87 MM
Kuvan tyyppi: PAPERIKOPIO
Asiasanat: VUONOS, TIETOKONEET
Sisällön kuvaus: ILMIN PÄIVÄNÄ 26.8. ANNETTIIN VUONOKSEN TIETOKONEELLE NIMI HEILI. VASEMMALTA: ATK-TOIMIKUNTA P. IKÄHEIMO/OKHI, R. O. KURPPA/OK, A. PYNNÖ/OKM, K. KAASILA/OKHI, E. LEIKKONEN/OKHI JA J. HAAPALA/OK. VALOKUVA: SVANTE LUUKKO.



Kuvassa 1800:n nimeämisjuhlat. Kuvan alalaidassa näkyy 1442 reikäkorttilävistimen/lukijan kulma, takana Kentin valmistama IO-adapteri. Ikävä kyllä itse juhlan kohde jää kuva-alueen ulkopuolelle. Mutta huone on sama josta Heili käytiin noukkimassa ja sieltä löytyi samalla myös paperikasasta tämä:



Juurikin kyseistä lappua kirjoitetaan tuossa arkiston kuvassa. Aika metatasoille menevää kamaa, tuskinpa herrat ajattelivat tuolloin että joku (yrittää) elvyttää 44 vuotta myöhemmin Heiliä henkiin ;)

Juhannusta kaikille!



Lähteitä ja muuta lukemista:
http://bitsavers.informatik.uni-stuttgart.de/pdf/ibm/logic/
http://bitsavers.informatik.uni-stuttgart.de/pdf/ibm/1130/
http://bitsavers.informatik.uni-stuttgart.de/pdf/ibm/1800/





Ei kommentteja:

Lähetä kommentti