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/





sunnuntai 7. kesäkuuta 2015

HP3000 Series III - Uusi lahjoitus talliin


En ole juuri ehtinyt blogia päivitellä, kiitos työkiireiden, mutta koneet ovat edistyneet; IBM on virtalähteitä vailla ja Hilijuskan poweri on nyt alkuperäisessä kunnossa. Mutta nyt on pakko hiukan kertoa viimeisimmästä lahjoituksesta, jonka sain Itä-Suomesta.

Reilu kuukausi sitten sain yhteydenoton, että olisi iso nippu vanhoja tietokoneita romutusuhan alla ja se saisi noukkia talteen. No, tottakai ne piti hakea, ennakkotiedon mukaan siellä olisi mm. HP3000 ja Honeywell, molemmat 70-luvulta. Paikanpäällä sitten löytyi HP3000 -79, Honeywell H316 -71 (...siis samanlainen kuin Vuonoksen Hilijuska), Intelin 8080 Multibus -kehitysalustoja, Intel Prompt 80, National Semiconductorin NS16000 piirisarjoja, VAX 11/780 varaosia, dokumentaatiota, esitteitä, Teletypejä ja terminaaleja... Terminaaleja läjästä löytyi mm. HP:n 2640 ja 2465, DECin VT102:sia, Tektronixin 4006:sia ja yksi melko poikkeuksellinen outolintu: DEC VK100 "GIGI" vektoriterminaali/BASIC-tietokone, joka on ihan oman postauksen arvoinen kaikessa outoudessaan, kuten monet muut tuon lahjoituksen koneista.

Koska en ole vielä saanut lupaa julkaista lahjoittajaa, niin jätetään se välistä, mutta iso kiitos lahjoittajalle ja kaverille joka kaukoviisaasti säilöi nämä 90-luvulla talteen!


Series II kun ei kolmosesta löytynyt tähän hätään hyvää promokuvaa.


Otetaan alkuun tästä uskomattoman kasan tietokoneista suurin: HP3000, mallinimen jatke on Series III, joka on tarkalleen Series II paranneltuna: enemmän muistiavaruutta ja pinokäskykanta. Konetta valmistettiin II:n aina 1976 ja III:n 1978 alkaen aina jonnekin aina 80-luvun alkuun, kunnes sen korvaa pienemmät LSI-versiot. Tämä saamani yksilö on miltei täydellinen oheislaitteiltaan: terminaalit, kiintolevy, magneettinauha, reikäkortinlukija ja aivan tajuttoman kokoinen CalCompin A0-plotteri!


HP3000 ja sen monet sarjat


3000:set tulivat 70-luvun alussa, jota seuraa CX, Series II, Series I ja lopuksi Series III. HP:n logiikan mukaan Series I tuli vasta kakkosen jälkeen ja ennen kolmosta (...logiikka noudattaa tuttua kaavaa HP1000:sta, joka on 21MX-sarjaa, mutta ei sama kuin 2100, vaikka onkin 2109...). 3000 sarjana elää aina pitkälle 90-luvulle, mutta viimeisillä RISC-ajatteluun perustuvilla ei ole mitään tekemistä enää näiden aitojen ja alkuperäisten CISC-arkkitehtuuria noudattavien kanssa.


CPUn 74181-sielunelämää



3000:n sisältä. Alhaalla IO-kortit, muistit keskellä ja CPU yläosassa. Kaapelointi pitää tarkistaa, tämän ikäisissä kun kaikki liittimet sopivat ihan kaikkialle ja tuho on varma, jos jotain on väärin. Olettaisin ylimpään korttiin menevän kaapelin olevan väärässä paikassa: tuskin diagnostiikkapaneelin lattakaapeli menee laajennetun COBOL-käskykannan kortille...


Tämä oli aikamoinen TTL-tehomylly puolijohdemuistein. Karkea arvio on että tämä kykenee parhaimillaan yli miljoonan käskyn vauhtiin sekunnissa, mikrokoodi kun juoksee 5.7MHz taajuudella. Tälläinen jättiläismäinen osituskone ei tietenkään ollut yhden ihmisen lelu, vaan sen aikaa jaettiin useamman kesken. Series III:n pystyi liittämään 64 terminaalia, joiden kautta sitten useampi pääsi osalliseksi MPE-käyttöjärjestelmän anteliaista resurseista. Tässä tapauksessa peräti 16KB muistia ja 16KB tallenustilaa per kuuppa. 1979 se oli varmasti paljon tai ainakin riittävästi.

3000:n CPU on vahvasti CISC- (Complex Instruction Set Computer) ja mikrokoodiorientoitunut. 16-bittinen väylänleveys ja 74181:t ALUn virkaa toimittamassa, joka on yhtä ilmiselvää tämän ikäisessä tietokoneessa kuin V8 60-lukulaisessa jenkkiautossa.


ALU-kortti.


HP3000:n CPU pinoprosessori, joka käytännössä tarkoittaa seuraavaa. Jos haluat ratkaista kaavan  X+Y*Z+U, olisi se pseudokoodina pinokäskyillä seuraava:

 push X
 push Y
 push Z
 multiply
 add
 push U
 add

...ja lopulta pinon päällä on tulos. Pino helpottaa korkeantason kielten tulkkausta ja kääntämistä, luonnollisesti etenkin pino-orientoituneiden kielten kanssa.

Käsittääkseni pino on kuitenkin tässä 3000:n tapauksessa tehty (taas kerran) mikrokoodilla, eli oikeaa rautaa ei ole kuitenkaan pinon takana. Pitänee tutkia kytkiksiä, onko siellä ihan oikeasti jokin fyysinen pino laitettu CPU:n sisään vai varataanko muistista alue pinoa varten.


Muisti oli halpaa, kunhan oli rahaa


Yksi 256KB:n muistikorteista, jossa MB8316-piirejä 176 kpl (176x16Kbit/8-bit = 352KB..?)


Koneen etutauluun oli liimatttu lappu, jossa lukee keskusmuistin olevan 2MB. Itse en kyllä korteista saa piirejä laskemalla kuin 1MB, ehkä muistilaajennus on kadonnut tai sitten tavut ja sanat ovat menneet sekaisin lappua kirjoittessa.

Mutta pieni ja aika makea twisti löytyy muistista. Jos 16K x 1bit -muistipiirit laskee (256KB) levyltä, niin huomaa pienen ongelman; muistipiirien määrä ei vastaa muistin määrää, jokaista 16-bittiä kohden on avain muistia "liikaa".

Taika tämän takana on muistin automaattinen korjaus, Hammingin pariteetti. Parempi kuvaus 3000:n muistinkorjauksesta löytyy HP Journalista: http://www.hpl.hp.com/hpjournal/pdfs/IssuePDFs/1976-08.pdf


HP Journal kertoo mistä on kyse.


Toisin sanoen muistia "tuhlataan" aikamoinen määrä pelkästään automaattiseen korjaukseen. Toki pitää ymmärtää sen ajan muistipiirien hajoamisalttius ja tälläisen järjestelmän vaatimukset. Ja jos hintalappu koneella oli 100 000 $ nurkilla, niin aivan sama paljon sitä muistia meni lopulliseen tuotteeseen, kunhan se toimi.


Dokkarit hukassa


Kunhan saan IBM:n sähköihin, niin tätä voisi seuraavaksi kokeilla. Ainoa ongelma 3000:n tapauksessa on, ettei näistä ole oikein dokumentaatio jäljellä, ei edes Bitsaversissa. Tämänkin koneen täydellinen dokumentaatio tuhoutui joku vuosi takaperin... Onneksi sentään kytkikset löytyvät Bitsaversista, joka on jo hyvä lähtökohta saattaa tämä takaisin eloon.  Jos jollain sattuu roikkumaan kotonaan vielä HP3000:n kirjallisuutta, niin neppaathan viestiä!

Lisää juttua 3000:sta seuraa kunhan ehdin tutkia kytkikset läpi!


HP ja muut lelut nykyisessä ei-nyt-niin-hyvässä säilytyspaikassa, ainakaan talvea ajatellen. IBM vie sen verran paljon tilaa pajalta, että tilankäyttö vaatii pientä uudelleenjärjestelyä. Eikä uuden pajan rakentamisesta ole vielä varmuutta tai saako sitä ennen talvea pystyyn. Museovirastolta tai kaupungilta tuskin kannattaa odottaa sieltä saavansa säilytystilaa näin "arvottomalle" rojulle, kyseessähän on vain Suomen teknologiateollisuuden juuret. Pääasia että nykytaiteenmuseoita on joka h*lvetin notkelmassa ;)


Linkkejä:
HP3000 HP Museumissa: http://www.hpmuseum.net/exhibit.php?class=3&cat=32
HP3000 Bitsaverissa: http://bitsavers.informatik.uni-stuttgart.de/pdf/hp/3000/
HP Journalin kaikki numerot: http://www.hpl.hp.com/hpjournal/pdfs/IssuePDFs/hpjindex.html
Pinokone (wiki): http://en.wikipedia.org/wiki/Stack_machine