Siirry pääsisältöön

HP1000 - Arkkitehtuuria: Mikrokoodi, ALU, rekisterit

HP:n sielunelämä on kaukana normaalista nykyajan lapsen näkökulmasta, johtuen varmaankin HP:n hippiajan juurista. Esimerkiksi kaikki dokumentaatio on esitetty oktaalilukuina, eli 3-bitin paloissa. Luulisi että heksana esittäminen olisi hiukan loogisempaa, kun kone on kuitenkin 16-bittinen.

Toinen omituisuus on rautapinon puuttuminen. Toki pinon voi tehdä mikrokoodilla muistiin ja käyttömuistissahan pino yleensä onkin, mutta koneessa ei ole mitään rautatasolla toimivaa mekanismia sille. Eikä muuten vakiokäskykannassa ole mitään push/pop-käskyjä. Samasta syystä puuttuu myös aliohjelmien paluuosoitteiden tallennuksen puuttuminen, kun ei ole sitä pinoa.

Mikrokoodille löytyy kuitenkin pino, joka onkin sen luonteesta johtuen vähän pakollinen. Lisäksi mikrokoodille on sen touhuihin varattuna 12 rekisteriä, mutta makrokoodille (siis konekoodille) ei yhtään, vain kaksi akkua, A ja B. Näillä on myös muistipaikat 0 ja 1 osoiteavaruudessa.


HP:n kaiken selittävä lohkokaavio.


Lohkokaaviosta selviää paljon. Vasemmalla puolella olevat muistiin ja sen suojaukseen liittyvät kortit ovat liitettynä koneen etupuolella olevaan räkkiin. Oikealla puolella olevat IO-kortit ja uudelleen kirjoitettava mikrokoodimuisti sijaitsevat koneen takana olevassa räkissä. Mikrokoodinlaajennus-ROMit sijaitsevat koneen alla ja näkyvät kuvassa oikeassa alareunassa.

Kiinnostavin on kuitenkin kuvassa tietysti itse CPU, joka löytyy kuvan alaosasta keskeltä. Fyysisesti CPU on yksi iso kortti koneen pohjassa.

CPU:n lohkokaavio.


Mikrokoodi


Jos hiukan tutkitaan CPU:n kaaviota, näemme oikealla mikrokooditulkin, CPU:n ulkopuolella on käskykannan laajennukset. Käytännössä mikrokooditulkki on tilakone, joka pääsee ronkkimaan vähän joka nurkkaa CPU:sta.



Punainen ALU, rekisterit ja akut. Vihreä mikrokoodin tulkkaus. Sininen S-väylä. Oranssi loader-ROMit. Kuvasta puuttuu S-väylä ja MIR-rekisterin (bit10-bit17) portti.


Mikrokoodi yksinkertaistettuna toimii seuraavasti: konekäsky saapuu käskyrekisteriin (IR), jonka 8-bittinen ylempi osa siirretään hyppy-ROMiin (jump tables). ROMmeista löytyy käskyä vastaava mikrokoodiosoite, joka siirretään CMAR (control memory address) -rekisteriin. CMAR osoittaa osoitetta mikrokoodi-ROMeilla, josta sitten 24-bittinen mikrokoodi MIR (microcode instruction register) -rekisteriin dekoodattavaksi. CMAR-rekisteri on muodostuu 74163 TTL-laskureista, joten samalla saadaan seuraavan mikrokäskyn osoite helposti.


Mikrokooditulkin kytkentäkuva.


Mikrokoodin dekoodaus.


Mikrokoodi hoitaa lähes kaiken tässä laatikossa. Se fetchaa uuden käskyn muistista, lataa loader-ROMin muistiin ja hoitaa myös etutaulun valojen ja kytkimien toiminnat. Ikävä kyllä samasta syystä valot eivät vilku suorituksen aikana etutaulussa...

Mutta ihan kaikki ei mene mikrokoodin läpi, löytyy yksi erikoisuus, joka liittyy HP:n käskykantaan. Käskykannassa on mahdollista lisätä käskyjä käskyyn. Kuulostaa omituiselta ja sitä se onkin. Normaalisti konekielessä sinulla on yksi käsky ja sille ehdot. HP:ssa joidenkin käskyjen kohdalla voidaan lisätä "mikrokäskyjä" asettamalla bittejä käskyyn. Esimerkiksi jos sinulla on käsky "hyppää jos negatiivinen", voit lisätä käskyt "käänteinen tila" ja "vieritä A" käskyn kahdella tietyllä bitillä.


Mikrokäskyt löytyvät kohdista ASG ja SRG


Mikrokäskyt dekoodataan suoraan IR-rekisteristä.


Jostain syystä mikrokäskyt ovat nimetty hullulla tavalla, koska ne eivät liity mitenkään mikrokoodiin. Oikeastaan niitä pitäisi kutsua nanokäskyiksi.


ALU & rekisterit


Kuten vähän kaikissa 70-luvun minitietokoneissa, matemaattiset ja loogiset toimitukset hoitaa legendaarinen 74181 ALU sekä 74182 look-ahead carry unit. 74181 ei kuitenkaan kykene bittien vieritykseen, joten kokonaisuuteen on lisätty 74153:sia hoitamaan rotate/shift -toiminnot.


ALUn kytkentäkuva.


Rekisteripuolella ei ole mitään ihmeellistä, 64-bitin (4x16) 74189 SRAM, mutta A&B-akkuissa on jotain erikoisempaa, porttina toimii 74198 shifteri. Tämä sen takia, että CPU voi suorittaa 32-bittisiä laskutoimituksia.


Loader ROMit


Koska tätä 211x/21MX/1000 -sarjaa ei ole koskaan tarkoitettu yhteen tehtävään, ei siinä ole vakiona mitään ROM-muistia käyttöjärjestelmälle. Käyttöjärjestelmä tai ohjelma on ladattu ulkopuolisesta laitteesta muistiin. Mutta jokin ROM tarvitaan, jotta dataa saadaan ulkopuoliselta laitteelta muistiin. Muuten ainoa vaihtoehto olisi näpyttää joka käynnistyksessä loaderi taulun nappien kautta muistiin.

HP ratkaisi laittamalla loaderit emolle, 4x256-bittiset ROM-piirit, 64 sanaa pitkät loaderit, jotka ladataan melko mystisellä tavalla muistiin mikrokoodin avustamana. Kytkennästä nähdään, että jokainen ROM on neljällä bitillä kiinni S-väylässä, josta se siirtyy muistin yläosaan. IR-rekisterin pari ylintä bittiä valitsevat halutun ROMin ja alempi 8-bittiä osoitteen. 8-bittinen osoitelaskuri on IR-rekisterin alempi puolisko, johon mikrokoodi pääsee käsiksi. Mikrokoodi sählää 4-bit palat muistiin järjestyksessä ja kasvattaa laskurinarvoa.

Samaa IR-rekisteriä/laskuria mikrokoodi voi käyttää muihinkin tarpeisiin, ei pelkästään loaderien lataamiseen (käskyrekisterillä kun ei ole mitään virkaa, kun sen tieto on kerran mennyt hyppy-ROMien läpi).


Loader ROMit näkyvät kuvassa keskellä.


Seuraavalla kerralla sitten keskeytyksistä, muistiavaruudesta ja sen sellaisesta.


Ps. Jos on pakottava tarve tutustua kytkentäkuviin ja toiminnan kuvaukseen, niin täältä löytyy: http://bitsavers.trailing-edge.com/pdf/hp/1000/1000_MEF_EngrRef/92851-90001_Mar81_1.1.pdf

Kommentit

  1. Mielenkiintoista luettavaa on ollut täällä, kiitoksia!

    Aikaisemminhan sananleveydet olivat yleensä kuudella jaollisia ja siten luontevampia jakaa kolmen pätkiin, ja oktaali periytyi niistä sitten kahdenpotenssikoneisiinkiin. Vähemmän muutosvastarintaa, kun pitäydytään totutussa edes jossain asiassa. Se on sen sijaan itselleni vähän kysymysmerkki, mistä kuudellajaollisuus alkujaan tuli. Veikkaisin, että se liittyy jotenkin kaukokirjoittimiin, niissä käytettyihin reikänauhaformaatteihin sekä siihen, että kuusibittiseen merkistöön mahtuvat luontevasti sekä numerot, isot kirjaimet että muutama välimerkki.

    VastaaPoista
  2. Kiitoksia ja olkaa hyvä! Lisää juttua HP:n mikrokoodimodauksesta luvassa. Tarkoitus olisi tehdä tuosta vektorinäytönohjain ja se vaatii hiukan käskykannan rommaamista.

    Kaukokirjoitin on varmasti oktaalihelvetin alkujuuri. Aivot nyrjähtävät heksaihmisellä, kun HP:n etupaneelista yrittää tulkita dataa; valot kun ovat kolmen ryhmissä...

    VastaaPoista
  3. Jos muuten vektorinäyttö kaipailee kooditemppuja jossain vaiheessa niin vanhana demokoodaajana voisin olla kiinnostunut auttamaan asiassa (:

    VastaaPoista
    Vastaukset
    1. Voitaisiin kyllä törmäillä liittyen aiheeseen jossain kohtaa. Alkuun suosittelen hakemaan jonkun 21MX-emun netistä. Niissä ei kyllä taida olla mikrokoodin muokkaukselle mahdollisuutta...

      HP on todella tykki laite, etenkin jos käskykanta on modattu sopivaksi, voi vetää koko viivan bresenhamin läpi yhdellä käskyllä. Mitään rajaa ei ole kauan (kone)käsky kestää, tässä oikeastaan koko mikrokoodin nerokkuus: koodia koodissa ja fetchit jää välistä.

      Käsittääkseni HP:lla oli oma vektori-käskykanta ja se on ladattavissa Bitsaverssista, mutta pahoin pelkään ettei se ole kovin optimoitu. Pitänee testata.

      Jenkeistä yksi tunnettu HP-entisöijä lupasi katsoa WCS(Writable Control Store)-kortin jemmoistaan tänne pohjolan hulluille, pääsee tekemään empiirisiä kokeita omalla käskykannalla ilman prommeria.


      Ps. Mielessä on pyörinyt yksi melko eeppinen projekti, joka ei kylläkään tule tapahtumaan ihan hetkessä... Vihjeenä 1800 & 1000 | 316 & vektorinäyttö & messukeskus. Terävimmät tajuaa mistä on kyse ;)

      Olen töitteni kanssa aika kiireinen tällä hetkellä, mutta laittele vaikka sähköpostia!

      Poista

Lähetä kommentti

Tämän blogin suosituimmat tekstit

Uusi löytö talliin - IBM 1800

IBM 1800. On se upea.

Joskus se päivä paistaa risukasaankin, tällä kertaa aivan uskomattoman kokoisen ja upean IBMn muodossa. Olin kerännyt vuosien aikana kokoelman 80-luvun tietokoneita, en itseäni varten vaan lähinnä siksi, että joku muu tulisi tarvitsemaan niitä kokoelmiinsa tulevaisuudessa. Oma kiinnostukseni kun on ollut mineissä ja mainframeissa, jenkkejä myöten olen yrittänyt jotain jättiläistä saada tallin nurkkaan.

Reilu vuosi sitten aloin hukkaamaan kasarikokoelmaa ja kyselin kaikilta koneiden noukkijoilta tietääkö kukaan mitään tosi vanhaa tietokonetta jossain päin Suomea. Yksi Atari 800:sta kiinnostunut kaveri vinkkasi, että Outokummussa on vanha, rekan kokoinen tietokone toimettomana.

Koska fiksaationi mainframe-tietokoneisiin on melko huolestuttavalla tasolla (ainakin tyttöystävän mielestä) oli pakko kaivaa kaverilta kaikki tieto koneesta. Yhteystiedot tulivat mistä kysyä lisää ja pari kuvaa, joista sitten lähti jakkara alta. Tunnistin heti mistä on kyse, IBM 1800, ikälu…

IBM 1800 - Ensimmäiset savut

Voin vihdoin ilmoittaa kaikille blogin lukijoille, että Heili on on saanut sähköä sisuksiinsa ja on melkoisen hyvissä sielun ja ruumiin voimissa, ainakin olosuhteet huomioon ottaen. Tietenkään tämä ei tapahtunut ihan päivässä, vasemmalla kädellä huitaisten tai ilman ongelmia ja armotonta skopettamista.

Alkuun virtalähteet 1800:ssa on 18 virtalähdettä, joiden kaikkien tarpeellisuus ei ole selvinnyt blogin kirjoittajallekaan. Samaa jännitettä on useampaa ja koot ovat hurjia: isoimmat 6V/18A ja massaa yli kymmenen kilon. 

Virtalähteissä on yksi erikoinen piirre, niiden pitää ola vähintään 25% kuormalla, jotta regulointi toimii oikein. Tämä ongelma on ratkaistu koneen sisällä nipulla tehovastuksia, jotka syövät neljänneksen virtalähteiden tehosta lämmöksi, riippumatta tekeekö tietokone yhtään mitään. 
Testasin ensin jokaisen virtalähteen yksitellen pöydällä suoraan sukotulpasta, apuna skooppi ja nippu autonpolttimoita keinotekoiseksi kuormaksi. 17 virtalähdettä selviytyi hyvin testistä, v…

IBM 1800 - Se toimii sittenkin

Pahoitteluni lukijoilleni alkuun blogin luvattoman pitkästä hiljaiselosta. Lupasin reilu kuukausi sitten kommenttiosiossa juttua viikonlopuksi (...tosin en sanonut mille viikonlopulle ;), mutta yksinkertaisesti aika on ollut sen verran kortilla, ettei näihin harrastuksiin ole ehtinyt paneutumaan. No nyt sitä juttua kuitenkin tulee kahden kuukauden ajalta, kahdessa osassa!


Ensimmäinen ohjelma Pessimisti ei pety, ei edes tälläkään kertaa; vastoin kaikkia odotuksia ja/tai todennnäköisyyksiä, Heili ajoi jo ensimmäiset testiohjelmat parisen kuukautta sitten. Ei kylläkään kovin kummoisia, sillä interface PC:n ja Heilin välillä on vielä kesken. Ohjelmat pitää vieläkin naputella taulun kytkimien kautta binäärinä ja ymmärrettävistä syistä, Y-sukupolven edustajan pää ei yksinkertaisesti kestä (vaikka kytkimien ketkuttelu onkin kivaa aikansa).

1130/1800:n yhden rekisterin arkkitehtuuri (accumulator-based architecture) on vähänkään moderneihin koneisiin tottuneelle hiukan omituinen. Ohjelmoijall…

Kuulumisia pitkän tauon jälkeen

Nyt alkaa olemaan jo aika päivittää blogiin jotain, sillä edellisestä kerrasta on jo yli vuosi ja kommenttiosuuksissa on tullut parikin kertaa luvattua uutta materiaalia milloin mihinkin mennessä. Ikävä kyllä vuosi on ollut niin kiireinen ja syy se tuttu, oma yritys ja ne kymmenet siihen liittyvät projektit.

Ajattelin ensin viimeistellä ja julkaista yli vuosi sitten aloittamani IBM:n kovalevynjutun, mutta yksinkertaisesti se ei ole vieläkään valmis ja jutun koko on turvonnut raamatullisiin mittasuhteisiin. Kovalevyihin liittyvä historia, mekaniikka, elektroniikka, formaatti, rajapinnat, softa ja muu on monimutkainen ja vieläpä äärettömän sekava kokonaisuus IBM:n tapauksessa.

Mutta tuon valmistumista odotellessa voidaan ottaa sillisalaattimainen yhteenveto mitä kaikkea vuoden aikana on tapahtunut lahtelaisella muinaistietokonerintamalla. Aloitetaan Suomen tietokonehistoriaa ravistelevalla jutulla.


Esko Koho ja Suomen ensimmäinen kotitietokone

Mikä oli Suomen ensimmäinen kotitietokone?…