Data General Nova - Data General Nova

Nova -järjestelmä (beige ja keltainen, keskellä alhaalla) ja patruunan kiintolevyjärjestelmä (avattu, Novan alapuolella) lähes tyhjässä telineasennuksessa.
Data General Nova 1200 etupaneeli
Nova 1200, oikealla puolivälissä, käsitteli EMI-skannerin, maailman ensimmäisen kaupallisesti saatavilla olevan CT -skannerin, tuottamat kuvat .

Data General Nova on sarja 16-bittinen pientietokoneet vapauttaa amerikkalaisen Data General . Nova -perhe oli erittäin suosittu 1970 -luvulla ja myi lopulta kymmeniä tuhansia yksiköitä.

Ensimmäinen malli, joka tunnetaan yksinkertaisesti nimellä "Nova", julkaistiin vuonna 1969. Nova pakattiin yhteen telineeseen asennettavaan koteloon, ja sillä oli tarpeeksi laskentatehoa useimpien yksinkertaisten tehtävien hoitamiseen. Novasta tuli suosittu tiedelaboratorioissa ympäri maailmaa. Sitä seurasi seuraavana vuonna SuperNOVA , joka juoksi suunnilleen neljä kertaa nopeammin.

Integroitujen piirien (tai "mikrosirujen") suunnittelun nopean edistymisen aikana käyttöön otettu linja kävi läpi useita päivityksiä seuraavan viiden vuoden aikana ja esitteli 800: n ja 1200: n, Nova 2: n, Nova 3: n ja lopulta Nova 4: n. Yksisiruinen toteutus otettiin käyttöön myös microNOVA-nimisenä vuonna 1977, mutta se ei nähnyt laajaa käyttöä markkinoiden siirtyessä uusiin mikroprosessorimalleihin. Fairchild Semiconductor esitteli myös Novan mikroprosessoriversion vuonna 1977, Fairchild 9440: n , mutta se näki myös rajoitetun käytön markkinoilla.

Nova -linjaa seurasi Data General Eclipse , joka oli useimmiten samanlainen, mutta lisäsi virtuaalimuistituen ja muita nykyaikaisten käyttöjärjestelmien edellyttämiä ominaisuuksia . Eclipsen 32-bittinen päivitys johti 1980-luvun Eclipse MV -sarjaan .

Historia

Edson de Castro ja PDP-X

Edson de Castro oli uraauurtavan Digital Equipment Corporationin (DEC) PDP-8 , 12-bittisen tietokoneen tuotepäällikkö, jota kutsutaan laajalti ensimmäiseksi todelliseksi minitietokoneeksi. Hän johti myös päivitetyn PDP-8/I: n suunnittelua, jossa käytettiin varhaisia integroituja piirejä yksittäisten transistorien sijasta.

PDP-8/I-prosessin aikana de Castro oli käynyt piirilevyvalmistajien luona, jotka edistivät nopeasti kokoamiensa levyjen monimutkaisuutta. de Castro totesi, että 8/I voitaisiin valmistaa käyttämällä täysin automatisoitua kokoonpanoa suurille levyille, mikä olisi ollut mahdotonta vain vuotta aiemmin. Toiset DEC: ssä olivat tottuneet aiempien koneiden pienempiin levyihin ja olivat huolissaan ongelmien jäljittämisestä, kun yhdellä levyllä oli monia komponentteja. 8/I: ​​n osalta päätettiin pysyä pienillä levyillä käyttämällä uutta " kääntölastu " -pakkausta, jotta tiheys paranisi hieman.

Aikana, jolloin PDP-8: ta kehitettiin, ASCII: n käyttöönotto ja sen merkittävä päivitys vuonna 1967 johti uuden sukupolven malleihin, joiden sanapituudet olivat 8-bittisiä monikertoja eikä 6-bittisiä monikertoja, kuten useimmissa aiemmissa malleissa. Tämä johti siihen, että keskitason mallit toimivat 16-bittisillä sanapituuksilla DEC: n nykyisten 12- ja 18-bittisten kokoonpanojen sijasta. de Castro oli vakuuttunut siitä, että PDP-8: ta on mahdollista parantaa rakentamalla 16-bittinen minitietokone CPU yhdelle 15 tuuman neliölevylle.

Vuonna 1967 de Castro aloitti uuden suunnittelutyön nimeltä "PDP-X", joka sisälsi useita kehittyneitä ominaisuuksia. Näiden joukossa oli yksi taustalla oleva malli, jota voitaisiin käyttää 8-, 16- ja 32-bittisten alustojen rakentamiseen. Tämä edistyi siihen pisteeseen, että tuotettiin useita yksityiskohtaisia ​​arkkitehtuuriasiakirjoja. Ken Olsen ei tukenut tätä hanketta, koska se ei tarjonnut riittävästi etuja 12-bittiseen PDP-8- ja 18-bittiseen PDP-9 - tekniikkaan verrattuna . Lopulta se peruutettiin keväällä 1968.

Novan suunnittelu

PDP-X: n peruuttaminen sai de Castron harkitsemaan DEC: n jättämistä rakentamaan järjestelmän itse. Hän ei ollut yksin; loppuvuodesta 1967 ryhmä samanhenkisiä insinöörejä muodostui harkitsemaan tällaista konetta. Ryhmään kuului divisioonan johtaja Pat Green, toinen laitteistoinsinööri Richard Sogge ja ohjelmistosuunnittelija Henry Burkhardt III. Toisin kuin PDP-X, uudet toimet keskittyivät yhteen koneeseen, joka voitaisiin tuoda nopeasti markkinoille, koska de Castron mielestä PDP-X-konsepti oli aivan liian kunnianhimoinen pienelle startup-yritykselle .

Keskustellessaan siitä muiden kanssa DEC: ssä alkuperäinen konsepti johti 8-bittiseen koneeseen, jonka toteuttaminen olisi halvempaa. Ryhmä alkoi keskustella Herbert Richmanin, Fairchild Semiconductorin myyjän kanssa, joka tunsi muut DEC: n kanssa tekemiensä yhteyksien kautta. Tuolloin Fairchild oli taistelee Texas Instruments ja Signetics nopeasti kasvavilla TTL markkinoilla ja se ottaa käyttöön uusia fabs joka mahdollisti monimutkaisempia malleja. Fairchildin uusin 9300-sarja mahdollisti jopa 96 porttia per siru, ja he olivat käyttäneet tätä toteuttamaan useita 4-bittisiä siruja, kuten binäärilaskurit ja siirtorekisterit .

Näiden IC: iden käyttäminen pienensi kokonaisen aritmeettisen logiikkayksikön (ALU), joka on suorittimen matemaattinen komponentti, toteuttamiseen tarvittavaa IC-kokonaismäärää , mikä mahdollistaa laajennuksen 8-bittisestä mallista 16-bittiseksi. Tämä edellytti CPU: n laajentamista yhdestä 15 x 15 tuuman (38 cm × 38 cm) painetusta piirilevystä kahteen, mutta tällainen malli olisi silti huomattavasti halvempi valmistaa kuin 8/I ja silti tehokkaampi ja ASCII-pohjainen. Kolmas kortti piti tulo-/lähtöpiiriä ja täydellinen järjestelmä sisälsi tyypillisesti toisen kortin, jossa oli 4 kt satunnaismuistia . Täydellinen neljän kortin järjestelmä mahtuu yhteen telineeseen.

Levyt on suunniteltu siten, että ne voidaan yhdistää toisiinsa painetun piirilevyn taustalevyn avulla , minimaalinen manuaalinen johdotus, jolloin kaikki levyt voidaan rakentaa automaattisesti. Tämä alensi huomattavasti kustannuksia yli 8/I, joka koostui monista pienemmistä levyistä, jotka jouduttiin kytkemään yhteen taustalevyyn, joka itse oli yhdistetty toisiinsa lankakääröllä . Suurempi levyrakenne teki myös Novasta luotettavamman, mikä teki siitä erityisen houkuttelevan teollisiin tai laboratoriotiloihin.

Uudessa mallissa käytettiin yksinkertaista kuorma -varastoarkkitehtuuria, joka toistui RISC -malleissa 1980 -luvulla. Kuten monimutkaisuus kiikun oltiin pienenee nopeasti, koska ne toteutettiin pelimerkkejä, suunnittelu puuttumisen korvaamiseksi osoitusmuotoja kuorman / tallentaa suunnittelu lisäämällä neljä yleiskäyttöinen akut , sen sijaan, että yhteen rekisteriin, joita voidaan löytää vastaavissa edullisissa tarjonnoissa, kuten PDP-sarjassa.

Novan esittely

Vuoden 1967 lopulla Richman esitteli ryhmän New Yorkissa toimivalle lakimiehelle Fred Adlerille, joka aloitti erilaisten siemenpääoman rahoituslähteiden käytön. Vuoteen 1968 mennessä Adler oli järjestänyt suuren rahoitussopimuksen Bostonin alueen riskipääomarahastojen yhteenliittymän kanssa , joka suostui tarjoamaan 400 000 dollarin alkuinvestoinnin ja toisen 400 000 dollarin tuotannon lisärahoituksen. de Castro, Burkhart ja Sogge lopettivat DEC: n ja aloittivat Data Generalin (DG) 15. huhtikuuta 1968. Green ei liittynyt heidän joukkoonsa , koska yritys oli liian riskialttiita, ja Richman liittyi mukaan vasta, kun tuote otettiin käyttöön myöhemmin vuoden aikana.

Ensimmäisen järjestelmän työ kesti noin yhdeksän kuukautta, ja ensimmäiset myyntitoimet alkoivat marraskuussa. Heillä oli vähän onnea, koska syksyinen yhteinen tietokonekonferenssi oli lykätty saman vuoden joulukuuhun, joten he pystyivät tuomaan toimivan yksikön Moscone -keskukseen, jossa he käyttivät Spacewar -versiota ! . PO julkaisi virallisesti Novan vuonna 1969 perushintaan 3 995 dollaria (vastaa 28 193 dollaria vuonna 2020) ja mainosti sitä "maailman parhaana pienenä tietokoneena". Perusmalli ei ollut kovin hyödyllinen pakkauksesta, ja 4 kW: n (8 kt) RAM -muistin lisääminen ydinmuistin muodossa nosti tyypillisesti hinnan jopa 7995 dollariin. Sitä vastoin 8/I 4 kW: n (6 kB) hinnalla oli 12 800 dollaria.

Ensimmäinen myynti tapahtui Texasin yliopistolle, ja tiimi rakensi esimerkkiä, joka lähetettiin helmikuussa. Tämä oli kuitenkin keskellä lakkoa lentoteollisuudessa, eikä kone koskaan saapunut. He lähettivät toisen esimerkin, joka saapui nopeasti, kun lakko oli siihen mennessä päättynyt, ja toukokuussa myös alkuperäinen lähetettiin lopulta.

Järjestelmä toimi alusta alkaen menestyksekkäästi: 100. myytiin kuuden kuukauden kuluttua ja 500. 15 kuukauden kuluttua. Myynti kiihtyi, kun uusia versioita esiteltiin, ja vuoteen 1975 mennessä yrityksen liikevaihto oli 100 miljoonaa dollaria.

SuperNOVA

Ken Olsen oli julkisesti ennustanut pääosaston epäonnistuvan, mutta Novan julkaisemisen jälkeen oli selvää, että näin ei tapahdu. Tähän mennessä monet muut yritykset puhuivat myös 16-bittisten mallien käyttöönotosta. Olsen päätti, että nämä ovat uhka heidän 18- ja 12-bittiselle linjalleen, ja aloitti uuden 16-bittisen suunnittelun. Tämä syntyi vuonna 1970 nimellä PDP-11 , paljon monimutkaisempi muotoilu, joka oli yhtä erilainen kuin PDP-X kuin Nova. Molemmat mallit kilpailevat voimakkaasti markkinoilla.

Huhut uudesta järjestelmästä DEC: ltä saapuivat pääosastoon pian sen jälkeen, kun Novan toimitus alkoi. Keväällä 1970 he palkkasivat uuden suunnittelijan, Larry Seligmanin, hyppäämään mahdollisten koneiden pariin. Novan suunnittelun jälkeen oli tapahtunut kaksi suurta muutosta; yksi oli se, että Signetics oli tuonut markkinoille 8260: n, 4-bittisen IC: n, joka yhdisti summaimen, XNOR: n ja AND: n, eli peruslogiikan toteuttamiseen tarvittavien sirujen määrä väheni noin kolme kertaa. Toinen oli se, että Intel puhui aggressiivisesti puolijohdepohjaisia ​​muistoja, lupaamalla 1000 bittiä yhdelle sirulle ja toimimalla paljon nopeammin kuin ydin.

Seligmanin uusi muotoilu hyödynsi molempia parannuksia. Aluksi uudet IC: t mahdollistivat ALU: n laajentamisen täyteen 16-bittiseen leveyteen samoilla kahdella kortilla, jolloin se pystyi suorittamaan matemaattisia ja logiikkaoperaatioita yhdellä syklillä ja tekemään uudesta mallista neljä kertaa nopeampaa kuin alkuperäinen . Lisäksi käytettiin uutta pienempää ydinmuistia, joka paransi syklin kestoa alkuperäisen 1200 ns: sta 800 ns: iin ja tarjosi1/3parantaminen. Suorituskykyä voitaisiin edelleen parantaa korvaamalla ydin vain luku -muistilla ; koska ytimen luku- ja kirjoitusjakso puuttuu, tämä voidaan käyttää 300 ns: n nopeudella dramaattisen suorituskyvyn parantamiseksi.

Tuloksena oleva kone, joka tunnetaan nimellä SuperNOVA , julkaistiin vuonna 1970. Vaikka alkuperäisissä malleissa käytettiin edelleen ydintä, koko suunnittelu perustui oletukseen, että nopeampia puolijohdemuisteja tulee saataville ja alusta voi hyödyntää niitä täysimääräisesti. Tämä esiteltiin myöhemmin samana vuonna kuin SuperNOVA SC , jossa on puolijohdemuisti (SC). Paljon tehokkaampi muisti mahdollisti muistin kanssa synkronoidun suorittimen nopeuden lisäämisen, jotta se toimisi 300 ns jaksoaikana (3,3 MHz). Tämä teki siitä nopeimman saatavilla olevan minitietokoneen monien vuosien ajan. Aluksi uusi muisti oli myös erittäin kallis ja kuuma, joten sitä ei käytetty laajalti.

1200 ja 800

Nova 1200 CPU -piirilevy . 74181 ALU on suuri IC-keskusta oikealla.

Osoituksena voiman niiden Micromatrix gate array tekniikkaa, 1968 Fairchild prototyyppi 4711, yhden sirun 4-bittinen ALU. Suunnittelua ei ollut koskaan tarkoitettu massatuotantoon ja se oli melko kallista valmistaa. Signetics 8260: n käyttöönotto vuonna 1969 pakotti heidän kätensä; sekä Texas Instruments että Fairchild esittivät omat 4-bittiset ALU: t vuonna 1970, 74181 ja 9341. Toisin kuin 8260, uudet mallit tarjoavat kaikki yleiset logiikkatoiminnot ja vähentävät edelleen sirujen määrää.

Tämä sai pääosaston harkitsemaan uuden suorittimen suunnittelua käyttämällä näitä integroituneempia IC: itä. Vähintään tämä vähentäisi suorittimen yhdelle kortille joko perus -Nova- tai SuperNOVA -laitteille. Syntyi uusi konsepti, jossa yksi runko pystyisi isännöimään kumpaakin konetta yksinkertaisesti vaihtamalla suorittimen piirilevyn, jolloin asiakkaat voisivat ostaa halvemman järjestelmän ja päivittää sen milloin tahansa.

Kun Seligman työskenteli SuperNOVAn parissa, yhtiö sai kirjeen Ron Grunerilta, jossa sanottiin: "Olen lukenut tuotteestasi, olen lukenut mainoksesi ja aion työskennellä sinulle. viikon päästä toimistollesi keskustelemaan siitä. " Hänet palkattiin paikan päälle. Gruner oli vastuussa edullisesta koneesta, kun taas Seligman suunnitteli vastaavan korkean suorituskyvyn version.

Grunerin halpa malli julkaistiin vuonna 1970 nimellä Nova 1200 , 1200 viitaten alkuperäisen Novan 1200 ns: n ydinmuistin käyttöön. Se sisälsi 4-bittisen ALU: n, joka perustuu yhteen 74181-siruun, ja oli siten olennaisesti uudelleenpakattu Nova. Seligmanin uudelleenpakattu neljän ALU SuperNOVA julkaistiin vuonna 1971 nimellä Nova 800 , mikä johti hieman hämmentävään nimeämiseen, missä alemman mallin suorituskyky on parempi. Molempia malleja tarjottiin useissa tapauksissa, 1200: ssa seitsemän paikkaa, 1210: ssä neljä ja 1220: ssa neljätoista.

Myöhemmät mallit

Tähän mennessä PDP-11 oli vihdoin lähetetty. Se tarjosi paljon rikkaamman ohjejoukon arkkitehtuurin kuin tarkoituksellisesti yksinkertainen Novassa. Jatkuva parantaminen IC -malleissa ja erityisesti niiden hinta -laatusuhteessa heikensi alkuperäisten yksinkertaistettujen ohjeiden arvoa. Seligmanin tehtävänä oli suunnitella uusi kone, joka olisi yhteensopiva Novan kanssa ja joka tarjoaa paljon rikkaamman ympäristön halukkaille. Tämä konsepti toimitettiin Data General Eclipse -sarjana, joka tarjosi mahdollisuuden lisätä lisäpiirejä räätälöidäkseen ohjesarjan tieteellisiin tai tietojenkäsittelykuormiin. Eclipse onnistui kilpailemaan PDP-11: n kanssa markkinoiden ylemmässä päässä.

Noin samaan aikaan huhut uudesta 32-bittisestä koneesta DEC: stä alkoivat nousta esiin. PO päätti, että heidän oli hankittava samanlainen tuote, ja Gruner oli vastuussa Fountainhead -hankkeesta. Ottaen huomioon projektin laajuutta, he sopivat, että koko vaivaa tulee käsitellä muualla, ja Gruner valinnut paikalla Research Triangle Park vuonna North Carolina . Tästä suunnittelusta tuli hyvin monimutkainen ja se lopulta peruttiin vuosia myöhemmin.

Näiden ponnistelujen aikana Nova -linjan työ jatkui.

840

Käynnissä oleva Nova 840 (etupaneeli on korvattu 1220: n mallilla)

840, joka esiteltiin ensimmäisen kerran vuonna 1973, sisälsi myös uuden haetun muistijärjestelmän, joka mahdollistaa jopa 17-bittiset osoitteet. Hakemisto siirtää perusosoitteen suurempaan 128 kword -muistiin. Itse asiassa tämän paljon muistia asentaminen vaati paljon tilaa; 840 toimitetaan suuressa 14-paikkaisessa kotelossa.

Nova 2

Seuraava versio oli Nova 2 , ja ensimmäiset versiot toimitettiin vuonna 1973. Nova 2 oli pohjimmiltaan yksinkertaistettu versio aiemmista koneista, koska kasvavat sirutiheydet mahdollistivat CPU: n pienentämisen. Vaikka SuperNOVA käytti kolmea 15 × 15 tuuman levyä suorittimen ja sen muistin toteuttamiseen, Nova 2 sovitti kaiken tämän yhdelle levylle. ROM -muistia käytettiin käynnistyskoodin tallentamiseen, joka kopioitiin sitten ytimeen ohjelman lataamisen yhteydessä "kytkin käännettiin. Versioita oli saatavana neljä (" 2/4 "), seitsemän ja kymmenen (" 2/10 ") paikkaa.

Nova 3

Data General Nova 3

Vuoden 1975 Nova 3 lisäsi kaksi muuta rekisteriä, joita käytettiin sisäänrakennetun pinoon pääsyn ohjaamiseen. Suoritin otettiin myös uudelleen käyttöön käyttämällä TTL- komponentteja, mikä lisäsi järjestelmän suorituskykyä entisestään. Nova 3: ta tarjottiin neljän kortin (Nova 3/4) ja kahdentoista kortin (Nova 3/12) versioina.

Nova 4

Näyttää siltä, ​​että Data General oli alun perin suunnitellut Nova 3: n viimeiseksi, ja aikoi korvata Novan myöhemmillä Eclipse -koneilla. Kuitenkin jatkuva kysyntä johti Nova 4 kone, tällä kertaa perustuu neljään AMD Am2901 bitti-siivu ALU . Tämä kone on alusta alkaen suunniteltu sekä Nova 4: ksi että Eclipse S/140: ksi, ja jokaisella on erilainen mikrokoodi . Saatavana oli myös liukulukuinen prosessori, joka otti erillisen paikan. Lisävaihtoehto sallitaan muistin liittäminen, jolloin ohjelmat voivat käyttää enintään 128 kilosanaa muistin avulla pankin vaihtamista . Toisin kuin aikaisemmat koneet, Nova 4 ei sisältänyt etupaneelin konsolia ja sen sijaan luotti päätelaitteeseen jäljittelemään konsolia tarvittaessa.

Nova 4: sta oli kolme eri versiota, Nova 4/C, Nova 4/S ja Nova 4/X. Nova 4/C oli yhden levyn toteutus, joka sisälsi koko muistin (16 tai 32 sanaa). Nova 4/S ja 4/X käyttivät erillisiä muistikortteja. Nova 4/X: ssä oli sisäinen muistinhallintayksikkö (MMU) käytössä, jotta se voi käyttää jopa 128 sanaa muistia (MMU asennettiin myös Nova 4/S -laitteeseen, mutta laiteohjelmisto poisti sen käytöstä). Sekä 4/S että 4/X sisälsivät "esipuhelimen" suorituskyvyn parantamiseksi hakemalla muistista jopa kaksi käskyä ennen kuin niitä tarvittiin.

microNOVA

Data General tuotti myös sarjan yhden sirun toteutuksia Nova-prosessorista microNOVA: na . Muutokset linja-arkkitehtuuriin rajoittivat nopeutta dramaattisesti siihen pisteeseen, jossa se oli noin puolet alkuperäisen Novan nopeudesta. Alkuperäinen microNOVA ”mN601” -prosessorilla toimitettiin vuonna 1977. Sitä seurasi microNOVA MP/100 vuonna 1979, joka pienensi suorittimen yhdeksi VLSI -siruksi, mN602: ksi. Suurempi versio tarjottiin myös nimellä microNOVA MP/200 , joka toimitetaan samana vuonna.

Micronova myöhemmin uudelleen pakattu PC-tyylinen tapauksessa kaksi levykkeet kuin Enterprise . Enterprise toimitettiin vuonna 1981 ja siinä oli RDOS , mutta IBM PC: n käyttöönotto samana vuonna sai useimmat muut koneet katoamaan tutkan alle.

Novan perintö

Nova vaikutti sekä Xerox Alto (1973) että Apple I (1976) -tietokoneiden suunnitteluun, ja sen arkkitehtuuri oli perusta Computervision CGP (Computervision Graphics Processor) -sarjalle. Sen ulkoisen rakenteen on kerrottu olevan suora inspiraatio MITS Altair (1975) -mikrotietokoneen etupaneelille .

Data General seurasi alkuperäisen Novan menestystä sarjaan nopeampia malleja. Eclipse-järjestelmäperhe esiteltiin myöhemmin laajennetulla ylöspäin yhteensopivalla käskyjoukolla, ja MV-sarja laajensi Eclipseä edelleen 32-bittiseksi arkkitehtuuriksi kilpailemaan DEC VAX: n kanssa . MV-sarjan kehitystä dokumentoitiin Tracy Kidderin vuonna 1981 suositussa kirjassa The Soul of a New Machine . Data General itse kehittyy myöhemmin Intel-prosessoripohjaisten palvelimien ja tallennusjärjestelmien myyjäksi, ja lopulta EMC ostaa sen .

Vuodesta 2004 lähtien 16-bittisiä Novas- ja Eclipses- sovelluksia on edelleen käytössä eri sovelluksissa ympäri maailmaa, mukaan lukien lennonjohto. Maailmassa on monipuolinen mutta innokas ryhmä ihmisiä, jotka palauttavat ja säilyttävät alkuperäiset 16-bittiset Data General -järjestelmät.

Tekninen kuvaus

Prosessorin suunnittelu

Data Yleiset Nova -rekisterit
1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 (bitin sijainti)
Akkurekisterit
0 Rekisteröidy 0
1 Rekisteröidy 1
Indeksirekisterit
2 Indeksirekisteri 2
3 Indeksirekisteri 3
Ohjelmalaskuri
  PC     P rogrammi C -laskuri
Tilarekisteri
  C C arry lippu

Nova, toisin kuin PDP-8 , oli kuormitusarkkitehtuuri . Siinä oli neljä 16-bittistä akkurekisteriä , joista kahta (2 ja 3) voitiin käyttää indeksirekisterinä . Siellä oli 15-bittinen ohjelmalaskuri ja yhden bitin kantorekisteri . Kuten PDP-8: ssa, nykyinen + nolla-sivun osoite oli keskeinen. Ei ollut pino rekisteriä , mutta myöhemmin Eclipse malleja voisi hyödyntää erityisen laitteiston muistiosoitteen tätä toimintoa varten.

Varhaisimmat malleja Nova jalostettujen matematiikka sarjana 4-bittinen paketteja, käyttämällä yhtä 74181 bitslice ALU . Vuosi sen käyttöönoton jälkeen tätä muotoilua parannettiin siten, että se sisälsi täyden 16-bittisen rinnakkaisen matemaattisen yksikön, joka käytti neljää 74181: tä, ja tätä mallia kutsutaan SuperNovaksi. Järjestelmän tulevat versiot lisäsivät pinoyksikön ja laitteiston kerto/jako.

Nova 4 / Eclipse S / 140 perustui neljään AMD 2901 -bittiviipaleeseen, jossa oli mikrokoodi vain luku -muistissa , ja se oli ensimmäinen Nova, joka on suunniteltu vain DRAM- päämuistiin ilman magneettista ydinmuistia .

Muisti ja I/O

Ensimmäiset mallit olivat käytettävissä 8 K sanoilla on ferriittirengasmuisti optiona joka käytännössä kaikki piti ostaa, jolloin järjestelmän kustannuksia jopa $ 7995.

Tämä ydinmuistikortti järjestettiin tasomaisesti neljäksi neljän pankin ryhmäksi, joista jokaisessa oli kaksi ydinsarjaa 64 x 64 matriisissa; näin oli 64 x 64 = 4096 bittiä per sarja, x 2 sarjaa, jotka antavat 8192 bittiä, x 4 pankkia, jotka antoivat 32 768 bittiä, x 4 ryhmää, yhteensä 131 072 bittiä, ja tämä jaettuna konesanan koolla 16 bittiä antoi 8 192 sanaa muistista.

Tämän 8K sanamuistikortin ydin oli keskeisellä paikalla "board-on-a-board", 5,25 "leveä ja 6,125" korkea, ja se peitettiin suojalevyllä. Sitä ympäröi tarvittava tukiohjaimen luku-kirjoitus-uudelleenkirjoituspiiri. Kaikki ydin ja vastaava tukielektroniikka mahtuvat yhteen tavalliseen 15 x 15 tuuman (380 mm) levyyn. Jopa 32K Sellaisten ydin muistia voitaisiin tukea yksi ulkoinen paisuntakammion. Puolijohde- ROM oli jo silloin saatavilla, ja RAM-muistittomista järjestelmistä (eli vain ROM-levyistä) tuli suosittuja monissa teollisuusympäristöissä. Alkuperäiset Nova -koneet toimivat noin 200 kHz: n taajuudella , mutta sen SuperNova on suunniteltu toimimaan jopa 3 MHz: n taajuudella, kun sitä käytetään erityisellä puolijohdemuistilla.

Standardoidut taustalevyt ja I/O -signaalit loivat yksinkertaisen ja tehokkaan I/O -suunnittelun, joka teki ohjelmoitujen I/O- ja datakanavalaitteiden rajapinnasta Novaan yksinkertaisen verrattuna kilpaileviin koneisiin. Omistetun I/O-väylärakenteen lisäksi Nova-taustalevyssä oli lankakierretappeja , joita voidaan käyttää epätyypillisiin liittimiin tai muihin erikoistarkoituksiin.

Ohjelmointimalli

Käskyformaatin voidaan karkeasti jakaa kolmeen toiminnot: 1) rekisteristä-rekisteriin manipulointi, 2) muistin viite, ja 3) tulo / lähtö. Jokainen ohje sisälsi yhden sanan. Rekisteristä rekisteriin manipulointi oli bittitehokkuudeltaan lähes RISC- tyyppistä; ja käsky, joka manipuloi rekisteritietoja, voisi myös suorittaa testejä, vuoroja ja jopa päättää hylätä tuloksen. Laitteistovaihtoehtoja olivat kokonaislukujen kerto- ja jakoyksikkö, liukulukuyksikkö (yhden ja kahden tarkkuus) ja muistinhallinta .

Data Yleiset ohjelmistot rei'itetylle nauhalle

Varhaisimmat Nova mukana tuli BASIC tulkki Reikänauha . Tuotteen kasvaessa Data General kehitti Nova -tietokoneille monia kieliä, jotka toimivat erilaisissa yhtenäisissä käyttöjärjestelmissä. FORTRAN IV , ALGOL , Extended BASIC, Data General Business Basic , Interactive COBOL ja useita kokoonpanijoita oli saatavilla Data Generalilta. Kolmannen osapuolen toimittajat ja käyttäjäyhteisö laajensivat tarjontaansa Forthilla , Lispillä , BCPL: llä , C: llä , ALGOLilla ja muilla COBOL- ja BASIC -versioilla .

Käyttöohjeet

Alla esitetyt koneen ohjeet ovat kaikkien Nova -sarjan prosessorien toteuttama yhteinen sarja. Tietyt mallit käyttivät usein lisäohjeita, ja jotkin ohjeet saatiin valinnaisella laitteistolla.

Aritmeettiset ohjeet

Kaikki aritmeettiset ohjeet toimivat akkujen välillä. Toiminnoissa, jotka vaativat kahta operandia, yksi otettiin lähdeakusta ja toinen kohdeakusta, ja tulos talletettiin kohdeakkuun. Yksitoimisia operaatioita varten operandi otettiin lähderekisteristä ja tulos korvasi kohderekisterin. Kaikkien yhden operandin opcodejen kohdalla oli sallittua, että lähde- ja kohdeakut ovat samat ja toiminta toimi odotetusti.

Kaikki aritmeettiset ohjeet sisälsivät "kuormittamaton" -bitin, joka asetettuna vaimensi tuloksen siirron kohderekisteriin; tätä käytettiin yhdessä testivaihtoehtojen kanssa testin suorittamiseksi menettämättä kohderekisterin nykyistä sisältöä. Kokoonpanokielellä#-merkin lisääminen opcode-asetukseen asettaa tyhjäkäyntibitin.

CPU sisälsi yhden bitin rekisterin, jota kutsutaan kantobitiksi, joka aritmeettisen operaation jälkeen sisältäisi merkittävimmän bitin suorituksen. Siirtobitti voidaan asettaa haluttuun arvoon ennen toimenpiteen suorittamista käyttämällä käskyn kaksibittistä kenttää. Bitti voidaan asettaa, tyhjentää tai täydentää ennen käskyn suorittamista. Kokoonpanokielellä nämä vaihtoehdot määriteltiin lisäämällä opcode -kirjain: 'O' - aseta siirtobitti; 'Z' - poista kantobitti, 'C' - täydennä kantobittiä, ei mitään - jätä kantobitti rauhaan. Jos myös tyhjäkäyntibitti määritetään, määritettyä siirtoarvoa käytetään laskennassa, mutta varsinainen siirtorekisteri pysyy muuttumattomana.

Kaikki aritmeettiset ohjeet sisälsivät kaksibittisen kentän, jota voitaisiin käyttää siirtovaihtoehdon määrittämiseen, jota sovellettaisiin tulokseen ennen sen lataamista kohderekisteriin. Yksibittinen siirto vasemmalle tai oikealle voidaan määrittää tai tuloksen kaksi tavua voidaan vaihtaa. Vuorot olivat 17-bittisiä pyöreitä, ja siirtobitti "vasemmalle" merkittävimmästä bitistä. Toisin sanoen, kun suoritettiin vasen siirto, tulos merkittävin bitti siirrettiin siirtobittiin ja edellinen sisältö siirrettiin tuloksen vähiten merkittävään bittiin. Tavu -vaihdot eivät vaikuttaneet kantobittiin. Kokoonpanokielellä nämä vaihtoehdot määriteltiin lisäämällä opcode -kirjain: 'L' - vaihto vasemmalle; 'R' - siirto oikealle, 'S' - vaihda tavua; ei mitään - älä suorita vuoroa tai vaihtoa.

Kaikki aritmeettiset ohjeet sisälsivät kolmibittisen kentän, joka voisi määrittää testin, jota oli sovellettava operaation tulokseen. Jos testi arvioitiin oikeaksi, seuraava rivin ohje ohitettiin. Kokoonpanokielellä testivaihtoehto määritettiin ohjeen kolmanneksi operandiksi. Käytettävissä olevat testit olivat:

  • SZR - ohita nolla tulos
  • SNR - ohita nollatulos
  • SZC - ohita nollakanto
  • SNC - ohita ei -nollakanto
  • SBN - ohita, jos sekä kanto että tulos ovat nolla
  • SEZ - ohita, jos siirto tai tulos tai molemmat ovat nolla
  • SKP - ohita aina
  • ei mitään - älä koskaan ohita

Varsinaiset aritmeettiset ohjeet olivat:

  • MOV - siirrä lähdeakun sisältö kohdeakkuun
  • COM - siirrä lähdeakun bittikohtainen täydennys kohdeakkuun
  • LISÄÄ - lisää lähdeakku kohdeakkuun
  • ADC - ota lähdeakun bittikohtainen täydennys ja lisää se kohdeakkuun
  • NEG - siirrä lähdeakun negatiivi kohdeakkuun
  • SUB - vähennä sisältölähteen varaaja kohdeakusta
  • INC - lisää 1 lähdeakun sisältöön ja siirry kohdeakkuun
  • JA - suorita kummankin akun bittisuuntainen AND ja aseta tulos kohdeakkuun

Esimerkki aritmeettisista ohjeista, joissa käytetään kaikkia vaihtoehtoja, on:

ADDZR# 0,2, SNC

Tämä dekoodattiin seuraavasti: tyhjennä kantobitti; lisää AC2: n (varaaja 2) sisältö AC0: een; siirrä tulosta pyöreästi yksi bitti oikealle; testaa tulosta nähdäksesi onko siirtobitti asetettu ja ohita seuraava ohje, jos on. Hävitä tulos testin suorittamisen jälkeen. Käytännössä tämä lisää kaksi numeroa ja testiä nähdäkseen, onko tulos pariton vai parillinen.

Ohjeet muistiin

Nova-käskysarja sisälsi pari käskyjä, joilla siirrettiin muistin sisältö akkuihin ja päinvastoin, kaksi ohjauksen siirto-ohjetta ja kaksi ohjetta, jotka testasivat muistipaikan sisällön. Kaikki muistiviittausohjeet sisälsivät kahdeksan bittisen osoitekentän ja kahden bitin kentän, joka määritteli muistin osoitetavan. Neljä tilaa olivat:

  • Tila 0 - ehdoton osoite. Käskyn osoitekentän sisältö on tyhjä vasemmalla ja sitä käytetään kohdeosoitteena.
  • Tila 1 - suhteellinen osoite. Käskyn osoitekentän sisältö laajennetaan vasemmalle ja lisätään ohjelmalaskurin senhetkiseen arvoon (joka käskyn suorittamisen yhteydessä viittaa seuraavaan käskyyn). Tulosta käytetään kohdeosoitteena.
  • Tila 2 - indeksoitu osoite. Käskyn osoitekentän sisältö laajennetaan vasemmalle ja lisätään varaajan 2 nykyiseen arvoon. Tulosta käytetään kohdeosoitteena.
  • Tila 3 - indeksoitu osoite. Käskyn osoitekentän sisältö laajennetaan vasemmalle ja lisätään varaajan 3 nykyiseen arvoon. Tulosta käytetään kohdeosoitteena.

Ilmeisesti tila 0 pystyi osoittamaan vain ensimmäiset 256 muistisanaa, kun otetaan huomioon kahdeksan bitin osoitekenttä. Tätä muistin osaa kutsuttiin "sivun nollaksi". Sivun nolla muistisanoja pidettiin arvokkaina Novan kokoonpanokielen ohjelmoijille, koska niitä oli vähän saatavilla; vain sivun nolla sijainteja voitaisiin käsitellä mistä tahansa ohjelman kohdasta turvautumatta indeksoituun osoitteistoon, mikä vaati akun 2 tai 3 sitomisen, jotta sitä voitaisiin käyttää hakemistorekisterinä. Kokoonpanokielellä ".ZREL" -direktiivi sai kokoonpanijan sijoittamaan sitä seuraavat ohjeet ja datasanat sivulle nolla; ".NREL" -direktiivi sijoitti seuraavat ohjeet ja datasanat "normaaliin" muistiin. Myöhemmin Nova -mallit lisäsivät ohjeita laajennetuilla osoitekentillä, jotka voittivat tämän vaikeuden (suoritusrangaistuksella).

Asentaja laski suhteelliset poikkeamat moodille 1 automaattisesti, vaikka se oli myös mahdollista kirjoittaa nimenomaisesti lähteeseen. Jos muistiviittausohje viittasi .NREL -tilassa olevaan muistiosoitteeseen, mutta ei tilamäärittäjää, oletettiin tila 1 ja kokoonpanija laski nykyisen käskyn ja viitatun sijainnin välisen siirtymän ja sijoitti tämän käskyn osoitekenttään (edellyttäen, että tuloksena oleva arvo mahtuu 8-bittiseen kenttään).

Kaksi lastaus- ja varasto -ohjetta olivat:

  • LDA - lataa muistipaikan sisältö määritettyyn akkuun.
  • STA - Tallenna määritetyn varaajan sisältö muistipaikkaan.

Molemmat ohjeet sisälsivät "epäsuoran" bitin. Jos tämä bitti on asetettu (tehty kokoonpanokielellä lisäämällä op -koodiin '@'), kohdeosoitteen sisällön oletettiin olevan itse muistiosoite, ja tähän osoitteeseen viitataan latauksen tai tallennuksen suorittamiseksi.

Kaksi ohjauksen siirto-ohjetta olivat:

  • JMP - siirtää ohjauksen määritettyyn muistipaikkaan
  • JSR ("hypätä aliohjelma") - Toimii samalla tavalla kuin JMP -käsky, mutta lataa lisäksi palautusosoitteen (JSR -ohjeen mukainen ohje) akkuun 3 ennen hyppäämistä.

Kuten lataus- ja säilytysohjeiden tapauksessa, hyppyohjeet sisälsivät epäsuoran bitin, joka samoin määriteltiin kokoonpanossa käyttämällä@-merkkiä. Jos kyseessä on epäsuora hyppy, prosessori haki kohdepaikan sisällön ja käytti arvoa muistiosoitteena hyppäämiseen. Kuitenkin toisin kuin lataus- ja tallennusohjeet, jos epäsuoralla osoitteella olisi merkittävin bittijoukko, se suorittaisi uuden suunnan. Nova 3 -prosessoreissa ennen Nova 3: ta ei ollut rajoituksia epäsuuntasyklien määrälle; epäsuora osoite, johon viitattiin, johtaisi äärettömään epäsuoraan osoitussilmukkaan, jolloin käsky ei koskaan valmistu. (Tämä voi olla hälyttävää käyttäjille, koska tässä tilassa etupaneelin STOP -kytkimen painaminen ei tehnyt mitään. Kone oli nollattava silmukan katkaisemiseksi.)

Kaksi muistin testausohjeita olivat:

  • ISZ - lisää muistipaikkaa ja ohita seuraava käsky, jos tulos on nolla.
  • DSZ - pienennä muistipaikkaa ja ohita seuraava käsky, jos tulos on nolla.

Kuten lataus- ja tallennusohjeiden tapauksessa, oli olemassa epäsuora bitti, joka suorittaisi yhden tason epäsuoran osoitteen. Nämä ohjeet olivat outoja siinä mielessä, että magneettisella ydinmuistilla varustetuissa Novasissa käsky suoritettiin itse muistikortilla. Kuten tuolloin oli yleistä, muistikortit sisälsivät "takaisinkirjoitus" -piirin magneettisen ydinmuistin luontaisen tuhoisan lukemisen ongelman ratkaisemiseksi. Mutta kirjoitusmekanismi sisälsi myös pienen aritmeettisen yksikön, jota prosessori käytti useisiin tarkoituksiin. ISZ- ja DSZ-ohjeissa lisäys tai vähennys tapahtui luettavan muistipaikan ja takaisinkirjoituksen välillä; CPU yksinkertaisesti odotti, että kerrotaan, onko tulos nolla vai ei -nolla. Nämä ohjeet olivat hyödyllisiä, koska niiden ansiosta muistipaikkaa voitiin käyttää silmukkalaskurina sitomatta akkua, mutta ne olivat hitaampia kuin vastaavien aritmeettisten ohjeiden suorittaminen.

Muutamia esimerkkejä muistin ohjeista:

LDA 1, LASKE

Siirtää COUNT-nimisen muistipaikan sisällön varaajaksi 1. Olettaen, että COUNT on .NREL-tilassa, tämä ohje vastaa: LDA 1,1, (COUNT-(.+1)) where '.' edustaa LDA -käskyn sijaintia.

JSR@ 0,17

Hyppää välillisesti sijainnin 17 sisällön määrittämään muistiosoitteeseen sivun nollapisteeseen ja tallenna palautusosoite varaajaan 3. Tämä oli vakiomenetelmä RDOS -järjestelmäkutsun soittamiseksi varhaisille Nova -malleille; kokoonpanokielen mnemoninen ".SYSTM" käännetty tähän.

JMP 0,3

Hyppää muistipaikkaan, jonka osoite on akussa 3. Tämä oli yleinen tapa palata funktiosta tai aliohjelmakutsusta, koska JSR -käsky jätti palautusosoitteen varaajaan 3.

STA 0,3, -1

Säilytä varaajan 0 sisältö paikassa, joka on yksi vähemmän kuin varaajan 3 osoite.

DSZ COUNT

Pienennä COUNT -merkityn paikan arvoa ja ohita seuraava ohje, jos tulos on nolla. Kuten yllä olevassa tapauksessa, jos COUNT: n oletetaan olevan .NREL-tilassa, tämä vastaa: DSZ 1, (COUNT-(.+1))

I/O -ohjeet

Novas otti käyttöön kanavoidun mallin I/O -laitteiden liitäntää varten. Mallissa jokaisen I/O -laitteen odotettiin toteuttavan kaksi lippua, joita kutsutaan "Varattu" ja "Valmis", ja kolme data- ja ohjausrekisteriä, joihin viitataan A, B ja C.I/O -ohjeet olivat saatavilla lukea ja kirjoittaa rekistereitä ja lähettää yksi kolmesta signaalista laitteelle, joita kutsutaan "käynnistys", "tyhjennys" ja "pulssi". Yleensä käynnistyssignaalin lähettäminen käynnisti I/O -toiminnon, joka oli määritetty lataamalla arvot A/B/C -rekistereihin. Selkeä signaali pysäytti I/O -toiminnon ja poisti mahdolliset keskeytykset. Pulssisignaalia käytettiin liitännäistoimintojen aloittamiseen monimutkaisissa osajärjestelmissä, kuten etsintäoperaatioille levyasemilla. Pollatut laitteet yleensä siirtävät tietoja suoraan laitteen ja A -rekisterin välillä. DMA -laitteet käyttivät yleensä A -rekisteriä muistiosoitteen määrittämiseen, B -rekisteriä siirtojen sanamäärän määrittämiseen ja C -rekisteriä ohjauslippuihin. Kanava 63 viittasi itse suorittimeen ja sitä käytettiin erilaisiin erityistoimintoihin.

Kukin I/O-käsky sisälsi kuusibittisen kanavanumerokentän, neljän bitin, joka määrittää, minkä rekisterin lukea tai kirjoittaa, ja kahden bitin kentän, joka määrittää lähetettävän signaalin. Kokoonpanokielellä signaali määritettiin lisäämällä opcode -kirjain: "S" aloittamiseen, "C" selkeään, "P" pulssiin ja ei mitään signaaliin. Opcodes olivat:

  • DIA - siirrä laitteen A -rekisterin sisältö määritettyyn varaajaan
  • DOA - lähetä määritetyn varaajan sisältö laitteen A -rekisteriin määritetyllä kanavalla
  • DIB - siirrä laitteen B -rekisterin sisältö määritettyyn varaajaan
  • DOB - lähetä määritetyn varaajan sisältö laitteen B -rekisteriin määritetyllä kanavalla
  • DIC - siirrä laitteen C -rekisterin sisältö määritettyyn varaajaan
  • DOC - lähetä määritetyn varaajan sisältö laitteen C -rekisteriin määritetyllä kanavalla
  • NIO - "ei I/O", harhaanjohtava. Ohjetta käytettiin signaalin lähettämiseen laitteeseen ilman rekisterinsiirtoa.

Lisäksi käytettävissä oli neljä ohjeita laitteen tilan testaamiseen:

  • SKPBN - ohita seuraava ohje, jos laitteen varattu -lippu on asetettu
  • SKPBZ - ohita seuraava ohje, jos laitteen varattu -lippu on selkeä
  • SKPDN - ohita seuraava ohje, jos laitteen valmis -lippu on asetettu
  • SKPDZ - ohita seuraava ohje, jos laitteen valmis -lippu on selvä

Laitteen käynnistäminen aiheutti sen varattu -lipun. Kun pyydetty toiminto oli suoritettu, laite poisti tavanomaisesti varattu -lipun ja asetti sen valmiiksi; useimpien laitteiden keskeytyspyyntömekanismi on kytketty valmiiksi -lippuun, joten tehdyn lipun asettaminen aiheutti keskeytyksen (jos keskeytykset olivat käytössä ja laitetta ei peitetty).

erityisohjeet

Nämä ohjeet suorittivat erilaisia ​​suorittimen ohjaus- ja tilatoimintoja. Kaikki ne olivat itse asiassa lyhennettyjä muistelmia I/O-ohjeille kanavalla 63, suorittimen itseviittaavalla I/O-kanavalla.

  • INTA - keskeytä kuittaus. Siirrettiin keskeyttävän laitteen kanavanumero määritettyyn varaajaan.
  • INTDS - poistaa kaikki keskeytykset käytöstä
  • INTEN - mahdollistaa kaikki keskeytykset
  • IORST - I/O -nollaus. Lähetti nollaussignaalin I/O -väylälle, joka pysäytti kaikki I/O -toiminnot, poisti keskeytykset käytöstä ja tyhjensi kaikki odottavat keskeytykset.
  • MSKO - maski pois. Käytti määritetyn varaajan sisältöä keskeytysmaskin määrittämiseen. Maskin tulkinta oli kunkin I/O -laitteen käyttöönottoa. Joitakin laitteita ei voitu peittää.
  • READS - siirsi 16 etupaneelin datakytkimen sisällön määritettyyn varaajaan.
  • HALT - pysäytti suorittimen. Keskeytyksen jälkeen suoritin voidaan käynnistää uudelleen vain manuaalisesti etupaneelista.

Keskeyttää ja keskeyttää käsittelyn

Laitteiston kannalta keskeytysmekanismi oli suhteellisen yksinkertainen, mutta myös vähemmän joustava kuin nykyiset suoritinarkkitehtuurit. Taustalevy tuki yhtä keskeytyspyyntölinjaa, johon kaikki keskeytyslaitteet ovat yhteydessä. Kun laite tarvitsi keskeytyksen, se nosti tämän linjan. Suoritin otti keskeytyksen heti, kun se oli suorittanut nykyisen käskyn. Kuten edellä todettiin, laitteen odotettiin kohottavan "valmis" I/O -lippuaan, kun se pyysi keskeytystä, ja tavanomaista oli, että laite tyhjensi keskeytyspyynnön, kun CPU suoritti I/O -selkeän käskyn laitteen kanavalla määrä.

CPU odotti, että käyttöjärjestelmä sijoittaa keskeytyspalvelurutiininsa osoitteen muistiosoitteeseen 1. Kun laite keskeytyi, suoritin suoritti epäsuoran hyppyn osoitteen 1 läpi, asettamalla palautusosoitteen muistiosoitteeseen 0 ja poistamalla käytöstä keskeytykset. Keskeytyksen käsittelijä suorittaisi sitten INTA -käskyn löytääkseen keskeyttävän laitteen kanavanumeron. Tämä toimi nostamalla "kuittaus" -signaalia takalevylle. Kuittaussignaali johdettiin ketjutusmuodossa taustalevyn poikki niin, että se silmukkasi väylän jokaisen levyn läpi. Kaikkien keskeytystä pyytävien laitteiden odotettiin estävän kuittaussignaalin jatkuva eteneminen väylällä, joten jos kahdella tai useammalla laitteella olisi vireillä keskeytyksiä samanaikaisesti, vain ensimmäinen näkyisi kuittaussignaalin. Laite vastasi asettamalla kanavanumeronsa väylän datalinjoille. Tämä tarkoitti sitä, että samanaikaisten keskeytyspyyntöjen tapauksessa prioriteetin omaava laite määritettiin sen mukaan, kumpi oli fyysisesti lähimpänä korttikotelon keskusyksikköä.

Kun keskeytys oli käsitelty ja palvelurutiini oli lähettänyt laitteelle I/O -tyhjennyksen, se jatkoi normaalia käsittelyä sallimalla keskeytykset ja palaamalla sitten epäsuoralla hyppyllä muistiosoitteen 0 läpi. Estääkseen odottavan keskeytyksen keskeyttämästä välittömästi paluuhyppy (joka aiheuttaisi paluosoitteen korvaamisen), INTEN-käskyllä ​​oli yhden käskyn jakson viive. Kun se suoritettiin, keskeytykset otettiin käyttöön vasta, kun seuraava ohje, jonka odotettiin olevan JMP@ 0 -käsky, on suoritettu.

Käyttöjärjestelmän keskeytyspalvelurutiini suoritti sitten tyypillisesti indeksoidun hyppyn käyttämällä vastaanotettua kanavanumeroa hypätäkseen laitteen erityiseen keskeytyksen käsittelyrutiiniin. Siellä oli muutamia laitteita, erityisesti suorittimen virtakatkoksen havaitsemispiiri, joka ei vastannut INTA-käskyyn. Jos INTA palautti tuloksen nolla, keskeytyspalvelurutiinin täytyi pollata kaikki ei-INTA-reagoivat laitteet SKPDZ/SKPDN-ohjeiden avulla nähdäkseen, kumpi keskeytti.

Käyttöjärjestelmä voisi jonkin verran hallita keskeytysten järjestystä asettamalla keskeytysmaskin käyttämällä MSKO -käskyä. Tämän tarkoituksena oli antaa käyttöjärjestelmän määrittää, mitkä laitteet saivat keskeyttää tiettynä ajankohtana. Kun tämä käsky annettiin, 16-bittinen keskeytysmaski lähetettiin kaikille taustalevyn laitteille. Laitteen oli päätettävä, mitä naamio todella merkitsi sille; tavanomaisesti peitetyn laitteen ei pitänyt nostaa keskeytyslinjaa, mutta suorittimella ei ollut keinoja valvoa tätä. Useimmat naamioituneet laitteet mahdollistivat naamaribitin valitsemisen taululla olevan hyppyjohtimen avulla. Oli laitteita, jotka sivuuttivat naamion kokonaan.

Järjestelmissä, joissa oli magneettinen ydinmuisti (joka säilytti sisällön ilman virtaa), toipuminen sähkökatkoksesta oli mahdollista. Keskusyksikön sähkökatkon havaitsemispiiri antoi keskeytyksen, kun tietokoneeseen tulevan päätehon katoaminen havaittiin; tästä lähtien suorittimella oli vähän aikaa, kunnes virtalähteen kondensaattori menetti varauksensa ja CPU: n virta katkesi. Tämä oli riittävä aika pysäyttää käynnissä oleva I/O antamalla IORST -käsky ja tallentaa sitten neljän akun sisältö ja siirtobitti muistiin. Jos virta palautui, keskusyksikön etupaneelin avainkytkin oli LOCK -asennossa, suoritin käynnistyy ja suorittaa epäsuoran hyppymuistiosoitteen 2 läpi. Tämän odotettiin olevan käyttöjärjestelmän palvelurutiinin osoite, joka lataa akut uudelleen ja kantaa bittiä, ja jatka sitten normaalia käsittelyä. Huoltorutiinin tehtävänä oli selvittää, miten sähkökatkon keskeyttämät I/O -toiminnot käynnistetään uudelleen.

Etupaneelin asettelu

Päivän tapaan useimmissa Nova -malleissa oli etupaneelin konsoli CPU -toimintojen ohjaamiseen ja valvontaan. Kaikki mallit ennen Nova 3: ta nojautuivat kanoniseen etupaneelin asetteluun, kuten yllä olevassa Nova 840 -paneelikuvassa näkyy. Asettelussa oli näppäimillä varustettu virtakytkin, kaksi riviä osoite- ja datanäyttölamppuja, rivi tietojen syöttökytkimiä ja rivi toimintokytkimiä, jotka aktivoivat erilaisia ​​CPU -toimintoja painettaessa. Osoitelamput näyttävät aina ohjelmalaskurin senhetkisen arvon binäärinä. Datavalaisimet näyttivät erilaisia ​​arvoja sen mukaan, mikä CPU -toiminto oli aktiivinen tällä hetkellä. Vasemmanpuoleisimman datavalon vasemmalla puolella lisälamppu näytti siirtobitin nykyisen arvon. Useimmissa malleissa lamput olivat hehkulamppuja, jotka oli juotettu paneelilevyyn; palaneiden lamppujen vaihtaminen oli Data General -kenttähuollon insinöörien olemassaolo.

Jokainen datakytkin hallitsi yhden bitin arvoa 16-bittisessä arvossa, ja Data General -käytännön mukaan ne numeroitiin 0-15 vasemmalta oikealle. Datakytkimet antoivat tulon CPU: lle eri toimintoja varten, ja myös käynnissä oleva ohjelma pystyi lukemaan sen käyttämällä READS -kokoonpanokielen käskyä. Paneelien sotkun vähentämiseksi ja rahan säästämiseksi toimintokytkimet otettiin käyttöön kaksisuuntaisina hetkellisinä kytkiminä. Kun toimintokytkimen vipua nostettiin, se laukaisi toiminnon, jonka nimi oli painettu paneelin kytkimen yläpuolelle; kun vipua painettiin alas, se aktivoi toiminnon, jonka nimi ilmestyi kytkimen alle. Kytkinvipu palasi vapaalle, kun se vapautettiin.

Viitaten Nova 840 -kuvaan, ensimmäiset neljä kytkintä vasemmalta suorittivat EXAMINE- ja DEPOSIT -toiminnot neljälle varaajalle. EXAMINE -painikkeen painaminen johonkin näistä aiheutti akun nykyisen arvon näyttämisen binäärinä datavaloilla. DEPOSIT -painikkeen siirtäminen datakytkinten nykyisten asetusten esittämää binääriarvoa akkuun.

Oikealle menemällä seuraava kytkin oli RESET/STOP -kytkin. STOP -näppäimen painaminen keskeytti suorittimen senhetkisen käskyn suorittamisen jälkeen. RESET -painikkeen painaminen keskeytti suorittimen välittömästi, tyhjensi useita suorittimen sisäisiä rekistereitä ja lähetti I/O -nollaussignaalin kaikille liitetyille laitteille. Oikealla oleva kytkin oli START/CONTINUE -kytkin. JATKA -painikkeen painaminen sai suorittimen jatkamaan suoritustaan ​​ohjelmanlaskurin osoittaman ohjeen mukaisesti. START-painikkeen siirtäminen datakytkimissä 1-15 tällä hetkellä asetetun arvon ohjelmalaskuriin ja aloitti sitten suorituksen sieltä.

Seuraavat kaksi kytkintä tarjosivat luku- ja kirjoitusoikeuden etupaneelin muistiin. Painamalla EXAMINE siirrettiin datakytkimissä 1-15 asetettu arvo ohjelmalaskurille, haettiin arvo vastaavalta muistipaikalta ja näytettiin arvo datavaloissa. EXAMINE NEXT -painikkeen painaminen lisäsi ohjelmalaskuria ja suoritti sitten tarkastustoimenpiteen kyseisessä muistipaikassa, jolloin käyttäjä pystyi käymään läpi useita muistipaikkoja. DEPOSIT -painikkeen painaminen kirjoitti datakytkinten arvon ohjelmamittarin osoittamaan muistipaikkaan. DEPOSIT NEXT -painikkeen painaminen kasvatti ensin ohjelmalaskuria ja sijoitti sitten muistipaikkaan.

INST STEP -toiminto sai suorittimen suorittamaan yhden käskyn nykyisessä ohjelmalaskurin paikassa ja pysäyttämään sen jälkeen. Koska ohjelmalaskuria lisätään osana käskyjen suorittamista, käyttäjä sai yhden askeleen ohjelman läpi. MEMORY STEP, virheellinen nimitys, sai suorittimen käymään yhden kellosyklin läpi ja pysähtymään. Tästä oli käyttäjille vähän hyötyä, ja sitä käyttivät yleensä vain kenttähuoltohenkilöstö diagnostiikkaan.

PROGRAM LOAD oli mekanismi, jota yleensä käytettiin Novan käynnistämiseen. Kun tämä kytkin laukaistiin, se aiheutti 32 sanan käynnistyslevyn kartoittamisen muistin 32 ensimmäisen sanan päälle, asetti ohjelmalaskurin arvoon 0 ja käynnisti suorittimen. Käynnistys-ROM sisälsi koodin, joka lukisi 256 sanaa (512 tavua) koodia valitusta I/O-laitteesta muistiin ja siirtää sitten ohjauksen lukukoodiin. Datakytkimiä 8-15 käytettiin kertomaan käynnistyslevylle, mistä I/O-kanavasta käynnistetään. Jos kytkin 0 olisi pois päältä, käynnistyslevy olettaisi, että laite oli kyselylaite (esim. Paperinauhanlukija), ja suoritti pollatun syöttösilmukan, kunnes 512 tavua oli luettu. Jos kytkin 0 oli päällä, käynnistys-ROM oletti, että laite oli DMA-yhteensopiva laite, ja se aloitti DMA-tiedonsiirron. Käynnistys -ROM ei ollut tarpeeksi älykäs laitteen sijoittamiseen ennen siirron aloittamista. Tämä oli ongelma käynnistettäessä uudelleen kaatumisen jälkeen; jos käynnistyslaite oli levyasema, sen päät oli todennäköisesti jätetty satunnaiseen sylinteriin. Ne oli siirrettävä sylinteriin 0, jossa RDOS kirjoitti ensimmäisen tason käynnistyslohkon, jotta käynnistysjärjestys toimisi. Perinteisesti tämä tehtiin pyöräilemällä taajuusmuuttaja sen kuormitusjärjestyksen läpi, mutta käyttäjät, jotka olivat turhautuneita odotusaikaan (jopa 5 minuuttia taajuusmuuttajamallista riippuen), oppivat syöttämään etupaneelista aseman "uudelleenkalibroimaan" I/O -koodin ja suorita suoritin yksivaiheisesti sen läpi, mikä kesti kokeneen käyttäjän vain muutaman sekunnin.

Virtakytkin oli 3-suuntainen avain, jossa asemat on merkitty OFF, ON ja LOCK. OFF -asennossa kaikki virta poistettiin suorittimesta. Kääntämällä avain ON -asentoon virransyöttö suoritin. Toisin kuin nykyiset suorittimet, suoritin ei kuitenkaan käynnistynyt automaattisesti, kun virta kytkettiin. käyttäjän oli käytettävä PROGRAM LOAD -toimintoa tai jotakin muuta tapaa käynnistää keskusyksikkö ja käynnistää käynnistysjärjestys. Käännä kytkin asentoon LOCK pois päältä etupaneelin toimintokytkimistä; kääntämällä kytkin asentoon LOCK ja poistamalla avaimen käyttäjä voi tehdä suorittimesta väärentämisen kestävän. Järjestelmissä, joissa on magneettinen ydinmuisti, LOCK -asento mahdollisti myös automaattisen sähkökatkoksen palautustoiminnon. Avain voidaan poistaa OFF- tai LOCK -asennossa.

Esitys

Nova 1200 suoritti ydinmuistin käyttöohjeet (LDA ja STA) 2,55 mikrosekunnissa (μs). Vain luku -muistin käyttö säästää 0,4 μs. Akun ohjeet (ADD, SUB, COM, NEG jne.) Kesti 1,55 μs, MUL 2,55 μs, DIV 3,75 μs, ISZ 3,15-4,5 μs. Myöhemmässä Eclipse MV/6000: ssa LDA ja STA kesti 0,44 μs, ADD jne. Kesti 0,33 μs, MUL 2,2 μs, DIV 3,19 μs, ISZ 1,32 μs, FAD 5,17 μs, FMMD 11,66 μs.

Esimerkkejä kokoonpanokielestä

Hei maailman ohjelma

Tämä on minimaalinen ohjelmointiesimerkki Nova -kokoonpanokielellä. Se on suunniteltu toimimaan RDOS: n alla ja tulostaa merkkijonon " Hei, maailma. ”Konsolissa.

    ; a "hello, world" program for Nova running RDOS
    ; uses PCHAR system call
    .titl hello
    .nrel
    .ent start

 start:
 dochar:
    lda    0,@pmsg  ; load ac0 with next character,
    mov#   0,0,snr  ; test ac0; skip if nonzero (don't load result)
    jmp    done
    .systm
    .pchar          ; print first
    jmp    er       ; skipped if OK
    movs   0,0      ; swap bytes
    .systm
    .pchar          ; print second
    jmp    er       ; skipped if OK
    isz    pmsg     ; point to next character
    jmp    dochar   ; go around again

 done:
    .systm          ; normal exit
    .rtn
 er:
    .systm          ; error exit
    .ertn
    halt

 pmsg:
    .+1             ; pointer to first character of string
                    ; note bytes are packed right-to-left by default
                    ; <15><12> denotes a CR LF pair.
    .txt /Hello, world.<15><12>/
    0               ; flag word to end string

    .end start

16-bittinen kertolasku

Novan perusmalleissa ei ollut sisäänrakennettua laitteiston kerto- ja jakotoimintoa, jotta hinnat pysyisivät kilpailukykyisinä. Seuraava rutiini kertoo kaksi 16-bittistä sanaa 16-bittisen sanatuloksen aikaansaamiseksi (ylivuoto ohitetaan). Se osoittaa ALU op: n, vuoron ja testin (ohitus) yhdistetyn käytön. Huomaa, että kun tätä rutiinia kutsutaan jsr, AC3 pitää palautusosoitteen . Tätä käytetään palautusohjeessa jmp 0,3. Idiomaattinen tapa tyhjentää akku on sub 0,0. Muita yksittäisiä ohjeita voidaan järjestää lataamaan tietty joukko hyödyllisiä vakioita (esim. -2, -1 tai +1).

 mpy:	; multiply AC0 <- AC1 * AC2, by Toby Thain

 	sub 0,0		; clear result
 mbit:	movzr 1,1,szc	; shift multiplier, test lsb
 	add 2,0		; 1: add multiplicand
 	movzl 2,2,szr	; shift and test for zero
 	jmp mbit	; not zero, do another bit
 	jmp 0,3		; return

Binaarinen tulostusakku

Seuraava rutiini tulostaa AC1-arvon 16-numeroisena binäärilukuna RDOS-konsoliin. Se paljastaa Nova -ohjesarjan muita omituisuuksia. Esimerkiksi ei ole ohjeita mielivaltaisen "välittömän" arvon lataamiseen akkuun (vaikka muistiviittausohjeet koodaavat tällaisen arvon muodostaakseen tehokkaan osoitteen). Akut on yleensä ladattava alustetuista muistipaikoista (esim. n16). Muut nykyaikaiset koneet, kuten PDP-11 , ja käytännössä kaikki nykyaikaiset arkkitehtuurit mahdollistavat välittömät kuormitukset, vaikka monet, kuten ARM, rajoittavat välittömästi ladattavien arvojen valikoimaa.

Koska RDOS -kutsumakro .systmtoteuttaa a jsr, AC3 korvataan .pchartoiminnon palautusosoitteella . Siksi tarvitaan väliaikainen sijainti tämän toiminnon soittajan palautusosoitteen säilyttämiseksi. Rekursiiviseen tai muutoin uudelleenastuavaan rutiiniin on käytettävä pinoa, laitteistoa, jos saatavilla, ohjelmistoa, jos ei. Palautusohjeesta tulee, jmp @ retrnjoka käyttää Novan epäsuoraa osoitetilaa palautus -PC: n lataamiseen.

Vakiomääritelmät lopussa näyttävät kaksi kokoonpanon ominaisuutta: assemblerin radix on oletuksena oktaali ( 20= kuusitoista) ja merkkivakiot voidaan koodata esim "0.

 pbin:  ; print AC1 on console as 16 binary digits, by Toby Thain

        sta     3,retrn     ; save return addr
        lda     2,n16       ; set up bit counter
 loop:  lda     0,chr0      ; load ASCII '0'
        movzl   1,1,szc     ; get next bit in carry
        inc     0,0         ; bump to '1'
        .systm
        .pchar              ; AC0-2 preserved
        jmp     err         ; if error
        inc     2,2,szr     ; bump counter
        jmp     loop        ; loop again if not zero
        lda     0,spc       ; output a space
        .systm
        .pchar
        jmp     err         ; if error
        jmp     @retrn

 spc:   " ;that's a space
 chr0:  "0
 n16:   -20
 retrn: 0

Faktoja

Canadian Broadcasting Corporation Montrealissa käytti Nova 1200 -laitetta kanavien toiston automatisointiin aina 1980-luvun loppuun asti. Se korvattiin sitten kunnostetuilla Nova 4 -yksiköillä, ja ne olivat käytössä 1990 -luvun puoliväliin saakka.

Katso myös

Huomautuksia

Viitteet

Lainaukset

Bibliografia

Ulkoiset linkit