Data General Nova - Data General Nova

Systém Nova (béžový a žlutý, uprostřed dole) a systém pevného disku kazety (otevřený, pod Nova) v většinou prázdném držáku do racku.
Přední panel Data General Nova 1200
Nova 1200, uprostřed vpravo, zpracovávala obrázky generované EMI-Scannerem, prvním komerčně dostupným CT skenerem na světě .

Data Všeobecné Nova je série 16-bitových minipočítačů zveřejněných americkou firmou General dat . Rodina Nova byla v 70. letech velmi populární a nakonec se jí prodaly desítky tisíc kusů.

První model, známý jednoduše jako „Nova“, byl vydán v roce 1969. Nova byla zabalena do jediného pouzdra pro montáž do stojanu a měla dostatek výpočetního výkonu, aby zvládla většinu jednoduchých úkolů. Nova se stala populární ve vědeckých laboratořích po celém světě. Další rok na to navázala SuperNOVA , která běžela zhruba čtyřikrát rychleji.

Představený v období rychlého pokroku v designu integrovaných obvodů (nebo „mikročipů“), linka prošla během příštích pěti let několika upgrady, představením 800 a 1200, Nova 2, Nova 3 a nakonec Nova 4. A implementace jednoho čipu byla také představena jako microNOVA v roce 1977, ale neviděla široké využití, protože trh se přesunul k novým návrhům mikroprocesorů. Fairchild Semiconductor také představil mikroprocesorovou verzi Nova v roce 1977, Fairchild 9440 , ale také viděl omezené použití na trhu.

Řadu Nova nahradil Data General Eclipse , který byl ve většině případů podobný, ale přidal podporu virtuální paměti a další funkce vyžadované moderními operačními systémy . 32bitová aktualizace Eclipse vyústila v sérii Eclipse MV z 80. let.

Dějiny

Edson de Castro a PDP-X

Edson de Castro byl produktovým manažerem průkopnické digitální zařízení Corporation (DEC) PDP-8 , 12bitového počítače, široce označovaného jako první skutečný minipočítač. Vedl také návrh modernizovaného PDP-8/I, který používal rané integrované obvody místo jednotlivých tranzistorů.

Během procesu PDP-8/I de Castro navštěvoval výrobce obvodových desek, kteří rychle pokročili ve složitosti desek, které mohli sestavit. de Castro dospěl k závěru, že 8/I lze vyrábět pomocí plně automatizované montáže na velkých deskách, což by bylo jen o rok dříve nemožné. Ostatní v DEC si zvykli na menší desky používané v dřívějších strojích a měli obavy ze sledování problémů, když bylo na jedné desce mnoho komponent. U 8/I bylo rozhodnuto zůstat u malých desek s použitím nového obalu „ flip-chip “ pro mírné zlepšení hustoty.

Během období, kdy byl PDP-8 vyvíjen, vedlo zavedení ASCII a jeho hlavní aktualizace v roce 1967 k nové generaci návrhů s délkami slov, které byly násobky 8 bitů spíše než násobky 6 bitů jako ve většině předchozích návrhů. To vedlo k návrhům střední třídy pracujících na 16bitových délkách slov namísto aktuálních 12- a 18bitových sestav DEC. de Castro byl přesvědčen, že je možné zlepšit PDP-8 vybudováním 16bitového minipočítačového procesoru na jedné 15palcové čtvercové desce.

V roce 1967 zahájil de Castro nové konstrukční úsilí známé jako „PDP-X“, které zahrnovalo několik pokročilých funkcí. Mezi nimi byl jeden základní návrh, který by mohl být použit k sestavení 8-, 16- a 32bitových platforem. To postupovalo do té míry, že vzniklo několik podrobných architektonických dokumentů. Ken Olsen tento projekt nepodporoval, protože měl pocit, že nenabízí dostatečné výhody oproti 12bitovému PDP-8 a 18bitovému PDP-9 . To bylo nakonec zrušeno na jaře 1968.

Design Nova

Zrušení PDP-X přimělo de Castra, aby zvážil odchod DEC k vybudování systému na vlastní pěst. Nebyl sám; na konci roku 1967 se vytvořila skupina podobně smýšlejících inženýrů, aby zvážili takový stroj. Tato skupina zahrnovala Pat Green, divizní manažer, Richard Sogge, další hardwarový inženýr a softwarový inženýr, Henry Burkhardt III. Na rozdíl od PDP-X se nové úsilí soustředilo na jeden stroj, který by mohl být uveden na trh rychle, protože de Castro cítil, že koncept PDP-X je pro malou začínající společnost příliš ambiciózní .

Když jsme o tom diskutovali s ostatními na DEC, původní koncept vedl k 8bitovému počítači, jehož implementace by byla méně nákladná. Skupina začala mluvit s Herbertem Richmanem, prodejcem Fairchild Semiconductor, který ostatní poznal díky kontaktům s DEC. V té době Fairchild bojoval s Texas Instruments and Signetics na rychle rostoucím trhu TTL a představoval nové fabriky, které umožňovaly složitější návrhy. Fairchildova nejnovější řada 9300 umožňovala až 96 bran na čip a použili to k implementaci řady 4bitových čipů, jako jsou binární čítače a posuvné registry .

Použití těchto integrovaných obvodů snížilo celkový počet integrovaných obvodů potřebných k implementaci kompletní aritmetické logické jednotky (ALU), základní matematické součásti procesoru, což umožňuje rozšíření z 8bitového designu na 16bitové. To vyžadovalo rozšíření CPU z jedné desky plošných spojů o rozměrech 38 x 38 cm na 15, 15 palců (38 cm x 38 cm) na dvě, ale výroba takového designu by byla stále výrazně levnější než 8/I, a přitom by byla stále výkonnější a Na bázi ASCII. Třetí deska obsahovala vstupní/výstupní obvody a kompletní systém obvykle obsahoval další desku se 4 kB paměti s libovolným přístupem . Kompletní systém se čtyřmi kartami se vejde do jediného šasi pro montáž do racku.

Desky byly navrženy tak, aby je bylo možné spojit dohromady pomocí propojovací desky s tištěnými obvody s minimálním ručním zapojením, což umožňuje automatizované stavění všech desek. To výrazně snížilo náklady na 8/I, který sestával z mnoha menších desek, které musely být zapojeny dohromady na propojovací desce, která byla sama spojena dohromady pomocí drátěného omotání . Díky konstrukci s většími deskami byla Nova také spolehlivější, díky čemuž byla obzvláště atraktivní pro průmyslové nebo laboratorní prostředí.

Nový design používal jednoduchou architekturu load -store, která by se v 80. letech znovu objevila v návrzích RISC. Jelikož se složitost klopného obvodu rychle snižovala, protože byly implementovány do čipů, návrh kompenzoval nedostatek adresovacích režimů návrhu load/store přidáním čtyř univerzálních akumulátorů namísto jediného registru, který by byl nalezen v podobných levných nabídkách, jako je řada PDP.

Úvod do Novy

Koncem roku 1967 Richman představil skupinu právníkovi Fredu Adlerovi z New Yorku, který začal získávat různé zdroje financování pro počáteční kapitál. V roce 1968 zařídil Adler významnou dohodu o financování s konsorciem fondů rizikového kapitálu z oblasti Bostonu, kteří souhlasili s poskytnutím počáteční investice 400 000 USD a druhou částkou 400 000 USD dostupnou pro rozběh výroby. de Castro, Burkhart a Sogge opustili DEC a zahájili Data General (DG) dne 15. dubna 1968. Green se k nim nepřipojil, protože podnik považoval za příliš riskantní, a Richman se nepřipojil, dokud produkt nebyl spuštěn později v tomto roce.

Práce na prvním systému trvaly zhruba devět měsíců a první prodejní úsilí začalo v listopadu. Měli trochu štěstí, protože společná počítačová konference Fall byla odložena až do prosince toho roku, takže mohli přivést pracovní jednotku do Moscone Center, kde provozovali verzi Spacewar! . DG oficiálně vydalo Nova v roce 1969 za základní cenu 3 995 USD (ekvivalent 28 193 USD v roce 2020) a inzerovalo ji jako „nejlepší malý počítač na světě“. Základní model nebyl po vybalení příliš užitečný a přidání 4 kW (8 kB) RAM v podobě základní paměti obvykle vyneslo cenu až na 7 995 $. Naproti tomu 8/I se 4 kW (6 kB) měl cenu 12 800 $.

První prodej byl na univerzitu v Texasu, přičemž tým ručně vytvořil příklad, který byl odeslán v únoru. To však bylo uprostřed stávky v leteckém průmyslu a stroj nikdy nedorazil. Poslali druhý příklad, který dorazil okamžitě, protože stávka v tu chvíli skončila, a v květnu byl konečně doručen i ten původní.

Systém byl od začátku úspěšný, 100. se prodával po šesti měsících a 500. po 15 měsících. Prodeje se zrychlovaly, protože byly představeny novější verze, a v roce 1975 měla společnost roční tržby 100 milionů dolarů.

SuperNOVA

Ken Olsen veřejně předpověděl, že DG selže, ale s vydáním Novy bylo jasné, že se to nestane. Do této doby řada dalších společností hovořila o zavedení také 16bitových návrhů. Olsen se rozhodl, že tyto představují hrozbu pro jejich 18bitovou i 12bitovou linii, a začal s novým 16bitovým designovým úsilím. To se objevilo v roce 1970 jako PDP-11 , mnohem složitější konstrukce, která se lišila od PDP-X jako Nova. Oba návrhy na trhu silně konkurovaly.

Pověsti o novém systému od DEC se do DG dostaly krátce poté, co Nova začala dodávat. Na jaře roku 1970 najali nového konstruktéra Larryho Seligmana, aby přeskočil jakýkoli možný stroj při výrobě. Od návrhu Novy došlo ke dvěma zásadním změnám; Jedním z nich bylo, že společnost Signetics představila 8260, 4bitový integrovaný obvod, který kombinoval sčítač, XNOR a AND, což znamená, že počet čipů potřebných k implementaci základní logiky se snížil přibližně třikrát. Další bylo, že Intel agresivně hovořil o polovodičových pamětech, sliboval 1000 bitů na jednom čipu a běžel mnohem vyššími rychlostmi než jádro.

Nový design společnosti Seligman využil výhod obou těchto vylepšení. Za prvé, nové integrované obvody umožnily rozšířit ALU na plnou 16bitovou šířku na stejných dvou kartách, což mu umožňuje provádět matematické a logické operace v jediném cyklu a díky tomu je nový design čtyřikrát rychlejší než původní . Kromě toho byla použita nová menší jádrová paměť, která zlepšila dobu cyklu z původních 1 200 ns na 800 ns, což nabízí další1/3zlepšení. Výkon lze dále zlepšit nahrazením jádra pamětí pouze pro čtení ; postrádající cyklus čtení/zápisu jádra, k tomu bylo možné přistupovat po 300 ns pro dramatické zvýšení výkonu.

Výsledný stroj, známý jako SuperNOVA , byl vydán v roce 1970. Přestože původní modely stále používaly jádro, celý návrh byl založen na předpokladu, že budou k dispozici rychlejší polovodičové paměti a platforma je dokáže plně využít. To bylo představeno později ve stejném roce jako SuperNOVA SC s polovodičovou (SC) pamětí. Paměť s mnohem vyšším výkonem umožnila CPU, který byl synchronní s pamětí, dále zvýšit rychlost tak, aby běžel v cyklu 300 ns (3,3 MHz). Díky tomu se stal po mnoho let nejrychleji dostupným minipočítačem. Zpočátku byla nová paměť také velmi drahá a běžela, takže nebyla příliš využívána.

1200 a 800

Deska s plošnými spoji CPU CPU Nova 1200 . 74181 ALU je velký středový pravý IC.

Jako demonstraci síly své technologie hradlových polí Micromatrix v roce 1968 Fairchild prototypoval 4711, jednočipový 4bitový ALU. Návrh nebyl nikdy určen pro sériovou výrobu a jeho výroba byla poměrně drahá. Zavedení Signetics 8260 v roce 1969 si vynutilo ruku; Texas Instruments i Fairchild zavedly v roce 1970 vlastní 4bitové ALU, 74181 a 9341 . Na rozdíl od 8260 nové designy nabízely všechny běžné logické funkce a dále snížily počet čipů.

To vedlo DG k úvaze o návrhu nového CPU s využitím těchto integrovanějších integrovaných obvodů. Minimálně by to snížilo CPU na jednu kartu buď pro základní Novu, nebo pro SuperNOVA. Objevil se nový koncept, kdy by jediné šasi mohlo hostit jeden stroj jednoduše výměnou desky plošných spojů CPU, což by zákazníkům umožnilo zakoupit levnější systém a poté kdykoli upgradovat.

Zatímco Seligman pracoval na SuperNOVA, společnost obdržela dopis od Rona Grunera, ve kterém stálo: „Četl jsem o vašem produktu, přečetl jsem si vaše reklamy a budu pro vás pracovat. A budu za týden si o tom promluvíme ve vaší kanceláři. " Byl najat na místě. Gruner byl pověřen levným strojem, zatímco Seligman navrhl odpovídající vysoce výkonnou verzi.

Grunerův levný model, který byl uveden na trh v roce 1970 jako Nova 1200 , 1200 odkazující na využití původní 1 200 ns základní paměti Nova. Představoval 4bitový ALU založený na jediném čipu 74181, a byl tedy v podstatě přebalenou Nova. Seligmanova repackaged four-ALU SuperNOVA byla vydána v roce 1971 jako Nova 800 , což mělo za následek poněkud matoucí pojmenování, kde model s nižším číslem má vyšší výkon. Oba modely byly nabízeny v různých případech, 1200 se sedmi sloty, 1210 se čtyřmi a 1220 se čtrnácti.

Pozdější modely

Do této doby byl PDP-11 konečně odeslán. Nabízela mnohem bohatší architekturu instrukčních sad než ta záměrně jednoduchá na Nově. Pokračující zlepšování návrhů integrovaných obvodů, a zejména jejich poměr ceny a výkonu , narušovalo hodnotu původních zjednodušených pokynů. Seligman byl pověřen návrhem nového stroje, který by byl kompatibilní s Novou a zároveň nabízel mnohem bohatší prostředí pro ty, kteří to chtěli. Tento koncept byl dodán jako řada Data General Eclipse , která nabízela možnost přidat další obvody pro přizpůsobení sady instrukcí pro vědecké úlohy nebo úlohy zpracování dat. Eclipse byla úspěšná v soutěži s PDP-11 na horním konci trhu.

Přibližně ve stejnou dobu se na povrch začaly objevovat zvěsti o novém 32bitovém počítači od DEC. Generální ředitelství se rozhodlo, že musí mít podobný produkt, a Gruner dostal na starost to, co se stalo projektem Fountainhead. Vzhledem k rozsahu projektu se dohodli, že celé úsilí by mělo být řešeno mimo pracoviště, a Gruner si vybral místo v Research Triangle Park v Severní Karolíně . Tento design se stal velmi složitým a nakonec byl po letech zrušen.

Zatímco tyto snahy probíhaly, práce na lince Nova pokračovaly.

840

Běží Nova 840 (Přední panel byl nahrazen jedním z 1220)

840, poprvé nabízený v roce 1973, také obsahoval nový stránkovaný paměťový systém umožňující adresy až 17 bitů. Index posunul základní adresu do větší paměti 128 kword. Ve skutečnosti instalace tolik paměti vyžadovala značný prostor; 840 dodáván ve velkém 14-slotovém pouzdře.

Nova 2

Další verzí byla Nova 2 , přičemž první verze byly dodány v roce 1973. Nova 2 byla v podstatě zjednodušenou verzí dřívějších strojů, protože rostoucí hustota čipů umožňovala zmenšení CPU. Zatímco SuperNOVA používala k implementaci CPU a jeho paměti tři desky 15 × 15 ", Nova 2 to vše vybavila na jednu desku. ROM sloužil k uložení bootovacího kódu, který byl poté zkopírován do jádra při„ načtení programu “ Přepínač byl převrácen. K dispozici byly verze se čtyřmi („2/4“), sedmi a deseti („2/10“) sloty.

Nova 3

Data General Nova 3

Nova 3 1975 přidá další dva registry, který se používá pro řízení přístupu k vestavěnému ve stohu. Procesor byl také znovu implementován pomocí komponent TTL , což dále zvýšilo výkon systému. Nova 3 byla nabízena ve verzích se čtyřmi sloty (Nova 3/4) a dvanácti sloty (Nova 3/12).

Nova 4

Zdá se, že Data General původně zamýšlel Nova 3 jako poslední ze své řady a plánoval nahradit Novu novějšími stroji Eclipse. Pokračující poptávka však vedla ke stroji Nova 4 , tentokrát založenému na čtyřech ALU s AMD Am2901 bit-slice . Tento stroj byl od začátku navržen jak pro Nova 4, tak pro Eclipse S/140, pro každý jiný mikrokód . K dispozici byl také koprocesor s plovoucí desetinnou čárkou, který zabíral samostatný slot. Další možnost povolená pro mapování paměti umožňuje programům přistupovat až k 128 kwords paměti pomocí přepínání bank . Na rozdíl od starších strojů, Nova 4 nezahrnovala přední konzolu panelu a místo toho se spoléhal na terminál k emulaci konzoly v případě potřeby.

Existovaly tři různé verze Nova 4, Nova 4/C, Nova 4/S a Nova 4/X. Nova 4/C byla implementace na jedné desce, která obsahovala veškerou paměť (16 nebo 32 kwordů). Nova 4/S a 4/X používaly samostatné paměťové desky. Nova 4/X měla povolenou palubní jednotku pro správu paměti (MMU), která umožňovala použití až 128 kwords paměti (MMU byla také nainstalována v Nova 4/S, ale byla zakázána firmwarem). 4/S i 4/X obsahovaly „prefetcher“ pro zvýšení výkonu načítáním až dvou instrukcí z paměti, než byly potřeba.

microNOVA

Data General také produkovala řadu jednočipových implementací procesoru Nova jako microNOVA . Změny v architektuře autobusu dramaticky omezily rychlost až do bodu, kdy dosahovala zhruba poloviny rychlosti původní Novy. Původní microNOVA s procesorem „mN601“ byla dodána v roce 1977. Následovala microNOVA MP/100 v roce 1979, která redukovala CPU na jeden čip VLSI , mN602. Větší verze byla také nabízena jako microNOVA MP/200 , expedice ve stejném roce.

MicroNOVA byla později znovu zabalena do pouzdra ve stylu PC se dvěma disketami jako Enterprise . Enterprise byla dodána v roce 1981 se systémem RDOS , ale zavedení IBM PC ve stejném roce způsobilo, že většina ostatních strojů zmizela pod radarem.

Dědictví Novy

Nova ovlivnila design počítačů Xerox Alto (1973) i Apple I (1976) a její architektura byla základem řady Computervision CGP (Computervision Graphics Processor). Jeho vnější design byl údajně přímou inspirací pro přední panel mikropočítače MITS Altair (1975).

Data General navázala na úspěch původní Novy řadou rychlejších návrhů. Rodina systémů Eclipse byla později představena s rozšířenou instrukční sadou, která je kompatibilní se směrem nahoru, a řada MV dále rozšířila Eclipse na 32bitovou architekturu, aby mohla konkurovat DEC VAX . Vývoj řady MV byl dokumentován v populární knize Tracy Kidder z roku 1981, Duše nového stroje . Samotný Data General se později vyvinul v dodavatele serverů a úložných polí založených na procesorech Intel, které nakonec koupila společnost EMC .

Jak 2004, tam jsou ještě 16-bit Novas a Eclipses běží v různých aplikacích po celém světě, včetně řízení letového provozu. Na celém světě existuje různorodá, ale horlivá skupina lidí, kteří obnovují a uchovávají původní 16bitové systémy Data General.

Technický popis

Návrh procesoru

Data General Nova se registruje
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 (bitová pozice)
Akumulátor se registruje
0 Zaregistrujte se 0
1 Registrace 1
Rejstříkové registry
2 Rejstřík Registrace 2
3 Rejstřík Registrace 3
Počitadlo programů
  PC     P rogram C ounter
Stavový registr
  C C arry vlajka

Nova, na rozdíl od PDP-8 , byla architektura typu load-store . Měl čtyři 16bitové akumulátorové registry, z nichž dva (2 a 3) mohly být použity jako indexové registry . Tam byl 15-bitový programový čítač a single-bit carry registr. Stejně jako u PDP-8 bylo adresování aktuální + nulové stránky centrální. Neexistoval žádný zásobník , ale později Eclipse designy využívaly vyhrazenou adresu hardwarové paměti pro tuto funkci.

Nejstarší modely Novy zpracovávaly matematiku sériově ve 4bitových paketech pomocí jediného 74181 bitslice ALU . Rok po svém představení byl tento design vylepšen, aby zahrnoval plnou 16bitovou paralelní matematickou jednotku využívající čtyři 74181, přičemž tento design je označován jako SuperNova. Budoucí verze systému přidaly jednotku zásobníku a násobení/dělení hardwaru.

Nova 4 / Eclipse S / 140 byla založena na čtyřech ALU AMD s bitovými výřezy AMD 2901 s mikrokódem v paměti jen pro čtení a byla první Nova navržená pouze pro hlavní paměť DRAM , bez zajištění paměti s magnetickým jádrem .

Paměť a I/O

První modely byly k dispozici s 8 K slova z paměti magnetického jádra je možnost, že ten, který prakticky každý musel koupit, čímž se systém nákladů až do výše $ 7.995.

Tato paměťová deska jádra byla organizována planárním způsobem jako čtyři skupiny čtyř bank, z nichž každá nesla dvě sady jader v matici 64 x 64; tedy bylo 64 x 64 = 4096 bitů na sadu, x 2 sady dávající 8192 bitů, x 4 banky dávající 32 768 bitů, x 4 skupiny dávající celkem 131 072 bitů, a to děleno velikostí strojového slova 16 bitů dalo 8 192 slov paměti.

Jádro na této 8K paměťové desce obsahovalo centrálně umístěnou „desku na desce“, šířku 5,25 "a výšku 6,125", a bylo zakryto ochrannou deskou. Byl obklopen nezbytnými obvody podpory čtení, zápisu a přepisu ovladače. Všechna jádra a odpovídající podpůrná elektronika se vejdou na jedinou standardní desku o rozměrech 380 x 15 x 15 palců. V jednom externím rozšiřujícím boxu by mohlo být podporováno až 32 kB takové základní paměti RAM . Polovodičová ROM již byla v té době k dispozici a systémy bez RAM (tj. Pouze s ROM) se staly populární v mnoha průmyslových podmínkách. Původní stroje Nova běžely přibližně na 200 kHz , ale jeho SuperNova byla navržena tak, aby při použití se speciální polovodičovou hlavní pamětí běžela až na 3 MHz.

Standardizované signály backplane a I/O vytvořily jednoduchou a efektivní konstrukci I/O, která ve srovnání s konkurenčními stroji zjednodušila propojení programovaných zařízení I/O a Data Channel se zařízením Nova. Kromě vyhrazené I/O sběrnicové struktury měla sběrnice Nova pinové ovíjecí piny, které bylo možné použít pro nestandardní konektory nebo pro jiné speciální účely.

Programovací model

Formát instrukce lze široce kategorizovat do jedné ze tří funkcí: 1) manipulace mezi registry a registrem, 2) reference paměti a 3) vstup/výstup. Každá instrukce byla obsažena v jednom slově. Manipulace registru s registrem byla ve své bitové účinnosti téměř RISC ; a instrukce, která manipulovala s daty registru, by také mohla provádět testy, směny a dokonce se rozhodnout vyřadit výsledek. Možnosti hardwaru zahrnovaly celočíselnou jednotku pro násobení a dělení, jednotku s plovoucí desetinnou čárkou (jednoduchá a dvojitá přesnost) a správu paměti .

Software Data General na děrné pásce

Nejdříve Nova přišla s BASIC tlumočníkem na děrné pásce . Jak produkt rostl, vyvinul Data General pro jazyky Nova mnoho jazyků, běžících pod řadou konzistentních operačních systémů. FORTRAN IV , ALGOL , Extended BASIC, Data General Business Basic , Interactive COBOL a několik assemblerů byly k dispozici od společnosti Data General. Prodejci třetích stran a komunita uživatelů rozšířily nabídky o Forth , Lisp , BCPL , C , ALGOL a další proprietární verze COBOL a BASIC .

Instrukční sada

Níže uvedené pokyny ke stroji jsou běžnou sadou implementovanou všemi procesory řady Nova. Specifické modely často implementovaly další pokyny a některé pokyny byly poskytnuty volitelným hardwarem.

Aritmetické pokyny

Všechny aritmetické pokyny provozovány mezi akumulátory. U operací vyžadujících dva operandy byl jeden odebrán ze zdrojového akumulátoru a jeden z cílového akumulátoru a výsledek byl uložen do cílového akumulátoru. U operací s jedním operandem byl operand převzat ze zdrojového registru a výsledek nahradil cílový registr. U všech jednobarevných operačních kódů bylo přípustné, aby zdrojové a cílové akumulátory byly stejné a operace fungovala podle očekávání.

Všechny aritmetické instrukce obsahovaly bit „bez zatížení“, který po nastavení potlačil přenos výsledku do cílového registru; toto bylo použito ve spojení s možnostmi testu k provedení testu bez ztráty stávajícího obsahu cílového registru. V jazyce sestavení přidáním znaku '#' do operačního kódu nastavíte bit bez zatížení.

CPU obsahoval jednobitový registr nazývaný přenosový bit, který by po aritmetické operaci obsahoval provedení nejvýznamnějšího bitu. Přenosový bit by mohl být nastaven na požadovanou hodnotu před provedením operace pomocí dvoubitového pole v instrukci. Bit lze nastavit, vymazat nebo doplnit před provedením instrukce. V jazyce sestavení byly tyto možnosti specifikovány přidáním písmene do operačního kódu: 'O' - nastavte přenosový bit; „Z“ - vymažte přenosový bit, „C“ - doplňte přenosový bit, nic - nechte přenosový bit na pokoji. Pokud by byl také zadán bit bez zátěže, byla by pro výpočet použita zadaná přenosová hodnota, ale skutečný registr přenosu by zůstal nezměněn.

Všechny aritmetické instrukce obsahovaly dvoubitové pole, které bylo možné použít k určení možnosti posunu, který by byl použit na výsledek před jeho načtením do cílového registru. Lze zadat jednobitový posun doleva nebo doprava nebo lze zaměnit dva bajty výsledku. Posuny byly 17bitové kruhové, přičemž přenosový bit „doleva“ nejvýznamnějšího bitu. Jinými slovy, když byl proveden posun vlevo, nejvýznamnější bit výsledku byl přesunut do přenosového bitu a předchozí obsah přenosového bitu byl posunut do nejméně významného bitu výsledku. Byte swapy neovlivnily přenosový bit. V jazyce sestavení byly tyto možnosti specifikovány přidáním písmene do operačního kódu: 'L' - posun vlevo; 'R' - posun doprava, 'S' - prohození bytů; nic - neprovádějte směnu ani výměnu.

Všechny aritmetické instrukce obsahovaly tříbitové pole, které mohlo specifikovat test, který měl být aplikován na výsledek operace. Pokud byl test vyhodnocen jako pravdivý, byla přeskočena další instrukce v řádku. V jazyce sestavení byla možnost testu zadána jako třetí operand instrukce. Dostupné testy byly:

  • SZR - přeskočte na nulový výsledek
  • SNR - přeskočte na nenulový výsledek
  • SZC - přeskočte při nulovém nošení
  • SNC - přeskočte na nenulové nošení
  • SBN - přeskočte, pokud jsou přenos i výsledek nenulové
  • SEZ - přeskočit, je -li buď carry, nebo result, nebo obojí, nulové
  • SKP - vždy přeskočte
  • nic - nikdy nepřeskočte

Skutečné aritmetické pokyny byly:

  • MOV - přesuňte obsah zdrojového akumulátoru do cílového akumulátoru
  • COM - přesune bitový doplněk zdrojového akumulátoru do cílového akumulátoru
  • PŘIDAT - přidejte zdrojový akumulátor do cílového akumulátoru
  • ADC - vezměte bitový doplněk zdrojového akumulátoru a přidejte jej do cílového akumulátoru
  • NEG - přesuňte záporný zdrojový akumulátor do cílového akumulátoru
  • SUB - odečtěte zdrojový akumulátor obsahu od cílového akumulátoru
  • INC - přidejte 1 k obsahu zdrojového akumulátoru a přesuňte se do cílového akumulátoru
  • AND - proveďte bitový AND dvou akumulátorů a výsledek umístěte do cílového akumulátoru

Příkladem aritmetických pokynů se všemi použitými možnostmi je:

ADDZR# 0,2, SNC

Toto bylo dekódováno jako: vymazat přenosový bit; přidejte obsah AC2 (akumulátor 2) do AC0; kruhově posuňte výsledek o bit doprava; otestujte výsledek, abyste zjistili, zda je nastaven přenosový bit, a pokud ano, přeskočte další instrukci. Po provedení testu výsledek zlikvidujte. Ve skutečnosti to přidá dvě čísla a testy, aby zjistil, zda je výsledek lichý nebo sudý.

Pokyny k paměti

Instrukční sada Nova obsahovala dvojici instrukcí, které přenášely obsah paměti do akumulátorů a naopak, dvě instrukce pro přenos řízení a dvě instrukce, které testovaly obsah paměťového místa. Všechny pokyny pro referenci paměti obsahovaly osmibitové pole adresy a dvoubitové pole, které určovalo režim adresování paměti. Šlo o tyto čtyři režimy:

  • Režim 0 - absolutní adresování. Obsah pole adresy instrukce je vlevo vyplněn nulou a použit jako cílová adresa.
  • Režim 1 - relativní adresování. Obsah pole adresy instrukce je znaménko rozšířeno doleva a přidáno k aktuální hodnotě čítače programu (který v době, kdy se instrukce provádí, ukazuje na další instrukci). Výsledek se použije jako cílová adresa.
  • Režim 2 - indexované adresování. Obsah pole adresy instrukce je znaménko rozšířeno doleva a přidáno k aktuální hodnotě akumulátoru 2. Výsledek je použit jako cílová adresa.
  • Režim 3 - indexované adresování. Obsah pole adresy instrukce je znaménko rozšířeno doleva a přidáno k aktuální hodnotě akumulátoru 3. Výsledek je použit jako cílová adresa.

Je zřejmé, že režim 0 byl schopen adresovat pouze prvních 256 paměťových slov, vzhledem k osmibitovému adresnímu poli. Tato část paměti byla označována jako „stránka nula“. Slova paměti s nulovou stránkou byla považována za vzácná pro programátory programu Nova Assembly, protože je k dispozici malý počet; z jakéhokoli místa v programu bylo možné adresovat pouze nulová umístění stránky, aniž by se uchýlilo k indexovanému adresování, což vyžadovalo vázání akumulátoru 2 nebo 3 k použití jako rejstříkový rejstřík. V jazyce sestavení direktiva „.ZREL“ způsobila, že assembler umístil instrukce a datová slova, která za ním následovala, na stránku nula; směrnice „.NREL“ umístila následující instrukce a datová slova do „normální“ paměti. Pozdější modely Nova přidaly pokyny s rozšířenými adresovacími poli, které tuto obtíž překonaly (při penalizaci výkonu).

Assembler vypočítal relativní offsety pro režim 1 automaticky, i když to bylo také možné explicitně zapsat do zdroje. Pokud referenční instrukce paměti odkazovala na paměťovou adresu v prostoru .NREL, ale žádný specifikátor režimu, předpokládal se režim 1 a assembler vypočítal posun mezi aktuální instrukcí a odkazovaným místem a umístil to do pole adresy instrukce (za předpokladu, že výsledný hodnota se vejde do 8bitového pole).

Tyto dva pokyny pro načtení a uložení byly:

  • LDA - načte obsah paměťového místa do určeného akumulátoru.
  • STA - obsah zadaného akumulátoru uložte do paměťového umístění.

Oba tyto pokyny obsahovaly „nepřímý“ bit. Pokud byl tento bit nastaven (provedeno v jazyce sestavení přidáním '@' do operačního kódu), obsah cílové adresy byl považován za samotnou adresu paměti a na tuto adresu by bylo odkazováno pro načtení nebo uložení.

Dva pokyny k přenosu kontroly byly:

  • JMP - přenáší řízení do zadaného paměťového umístění
  • JSR ("podprogram skoku") - Provádí to samé jako instrukce JMP, ale navíc před skokem načte zpáteční adresu (instrukce následující za instrukcí JSR v řádku) do akumulátoru 3.

Stejně jako v případě instrukcí pro načtení a uložení, instrukce pro skok obsahovaly nepřímý bit, který byl rovněž specifikován při sestavování pomocí znaku '@'. V případě nepřímého skoku procesor získal obsah cílového umístění a hodnotu použil jako adresu paměti, na kterou měl skočit. Na rozdíl od instrukcí pro načtení a uložení, pokud by nepřímá adresa měla nastavenou nejvýznamnější bit, provedla by další cyklus indirection. Na procesorech řady Nova před verzí Nova 3 nebyl počet cyklů směrování omezen; nepřímá adresa, která by sama odkazovala, by měla za následek nekonečnou smyčku nepřímého adresování, přičemž by se instrukce nikdy nedokončila. (To by mohlo být pro uživatele alarmující, protože když byl v tomto stavu, stisknutí spínače STOP na předním panelu nic neudělalo. Bylo nutné resetovat stroj, aby se přerušila smyčka.)

Dva pokyny pro test paměti byly:

  • ISZ - zvýší umístění v paměti a přeskočí další instrukci, pokud je výsledek nulový.
  • DSZ - zmenší umístění v paměti a přeskočí další instrukci, pokud je výsledek nulový.

Stejně jako v případě instrukcí pro načítání a ukládání existoval nepřímý bit, který by prováděl jedinou úroveň nepřímého adresování. Tyto pokyny byly zvláštní v tom, že na Novách s pamětí magnetického jádra byla instrukce provedena na samotné paměťové desce. Jak bylo v té době běžné, paměťové desky obsahovaly obvod „zpětného zápisu“ k vyřešení problému s destruktivním čtením, který je vlastní paměti magnetického jádra. Mechanismus zpětného zápisu však také obsahoval mini aritmetickou jednotku, kterou procesor používal k několika účelům. U instrukcí ISZ a DSZ došlo k přírůstku nebo úbytku mezi místem čtení paměti a zpětným zápisem; CPU prostě čekal, až se dozví, jestli je výsledek nulový nebo nenulový. Tyto pokyny byly užitečné, protože umožňovaly použít místo v paměti jako počitadlo smyčky bez vázání akumulátoru, ale byly pomalejší než provádění ekvivalentních aritmetických pokynů.

Několik příkladů referenčních pokynů k paměti:

LDA 1, POČET

Přenáší obsah paměťového místa označeného COUNT do akumulátoru 1. Za předpokladu, že je COUNT v prostoru .NREL, je tato instrukce ekvivalentní: LDA 1,1, (COUNT-(.+1)) kde '.' představuje umístění instrukce LDA.

JSR@ 0,17

Přeskočte nepřímo na adresu paměti určenou obsahem umístění 17 v prostoru nulové stránky a vložte zpáteční adresu do akumulátoru 3. Toto byla standardní metoda pro volání systému RDOS na starších modelech Nova; do toho přeloženo mnemotechnické pomůcky v jazyce sestavení „.SYSTM“.

ŽMP 0,3

Přejděte na místo v paměti, jehož adresa je obsažena v akumulátoru 3. Toto byl běžný způsob návratu z volání funkce nebo podprogramu, protože instrukce JSR ponechala zpáteční adresu v akumulátoru 3.

STA 0,3, -1

Uložte obsah akumulátoru 0 na místo, které je o jeden menší než adresa obsažená v akumulátoru 3.

DSZ POČET

Snižte hodnotu v místě označeném COUNT a přeskočte další instrukci, pokud je výsledek nula. Stejně jako v případě výše platí, že pokud se předpokládá, že COUNT je v prostoru .NREL, odpovídá: DSZ 1, (COUNT-(.+1))

I/O pokyny

Novas implementoval channelizovaný model pro propojení s I/O zařízeními. V modelu se očekávalo, že každé I/O zařízení bude implementovat dva příznaky, označované jako „Busy“ a „Done“, a že budou k dispozici tři datové a řídicí registry, označované jako A, B a C. I/O instrukce ke čtení a zápisu registrů a k odeslání jednoho ze tří signálů do zařízení, označovaných jako „start“, „clear“ a „pulse“. Obecně odeslání startovacího signálu iniciovalo I/O operaci, která byla nastavena načtením hodnot do registrů A/B/C. Jasný signál zastavil I/O operaci a vymazal všechna výsledná přerušení. Pulzní signál byl použit k zahájení pomocných operací na komplexních subsystémech, jako jsou vyhledávací operace na diskových jednotkách. Dotazovaná zařízení obvykle přesouvala data přímo mezi zařízení a registr A. Zařízení DMA obecně používaly registr A k určení adresy paměti, registr B k určení počtu slov, která mají být přenesena, a registr C pro řídicí příznaky. Kanál 63 odkazoval na samotný CPU a byl používán pro různé speciální funkce.

Každá I/O instrukce obsahovala šestibitové pole s číslem kanálu, čtyřbitové pro určení registru, který se má číst nebo zapisovat, a dvoubitové pole pro určení, který signál má být odeslán. V sestavovacím jazyce byl signál specifikován přidáním písmene do operačního kódu: 'S' pro začátek, 'C' pro vymazání, 'P' pro puls a nic pro žádný signál. Operační kódy byly:

  • DIA - přesuňte obsah registru A zařízení do určeného akumulátoru
  • DOA - odešle obsah zadaného akumulátoru do registru A zařízení na zadaném kanálu
  • DIB - přesuňte obsah registru B zařízení do určeného akumulátoru
  • DOB - odešle obsah zadaného akumulátoru do registru B zařízení na zadaném kanálu
  • DIC - přesuňte obsah registru C zařízení do určeného akumulátoru
  • DOC - odešle obsah zadaného akumulátoru do registru C zařízení na zadaném kanálu
  • NIO - „no I/O“, nesprávné pojmenování. Instrukce byla použita k odeslání signálu do zařízení bez provedení přenosu registru.

Kromě toho byly k dispozici čtyři pokyny k testování stavu zařízení:

  • SKPBN - přeskočte další instrukci, pokud je nastaven příznak zaneprázdnění zařízení
  • SKPBZ - přeskočte další instrukci, pokud je příznak obsazenosti zařízení jasný
  • SKPDN - přeskočte další instrukci, pokud je nastaven příznak Hotovo zařízení
  • SKPDZ - přeskočte další instrukci, pokud je příznak Hotovo zařízení jasný

Spuštění zařízení způsobilo, že nastavilo příznak zaneprázdnění. Když byla požadovaná operace dokončena, zařízení obvykle vymazalo příznak zaneprázdnění a nastavilo příznak Hotovo; většina zařízení měla svůj mechanismus požadavku na přerušení propojený s příznakem Hotovo, takže nastavení parametru Hotovo způsobilo přerušení (pokud byla povolena přerušení a zařízení nebylo maskováno).

speciální instrukce

Tyto pokyny prováděly různé funkce řízení a stavu CPU. Všichni byli ve skutečnosti zkratkou mnemotechniky pro I/O instrukce na kanálu 63, samoreferenčním I/O kanálu CPU.

  • INTA - potvrzení přerušení. Přeneseno číslo kanálu přerušovacího zařízení do zadaného akumulátoru.
  • INTDS - deaktivuje všechna přerušení
  • INTEN - povoleno všechna přerušení
  • IORST - reset I/O. Odeslal resetovací signál na I/O sběrnici, která zastavila všechny I/O, deaktivovala přerušení a vymazala všechna čekající přerušení.
  • MSKO - maskovat. Použil obsah zadaného akumulátoru k nastavení masky přerušení. Interpretace masky byla na implementaci každého I/O zařízení. Některá zařízení nebylo možné maskovat.
  • READS - přenesl obsah 16 datových přepínačů na předním panelu do zadaného akumulátoru.
  • HALT - zastavil CPU. Jakmile byl zastaven, procesor mohl být znovu spuštěn pouze ručním zásahem na předním panelu.

Přerušení a zpracování přerušení

Z hlediska hardwaru byl mechanismus přerušení relativně jednoduchý, ale také méně flexibilní než současné architektury CPU. Základní deska podporovala jedinou linku požadavku na přerušení, ke které byla připojena všechna zařízení schopná přerušení. Když zařízení potřebovalo požádat o přerušení, zvedlo tento řádek. CPU provedlo přerušení, jakmile dokončilo aktuální instrukci. Jak bylo uvedeno výše, od zařízení se očekávalo, že zvýší svůj příznak „hotovo“ I/O, když požaduje přerušení, a konvencí bylo, že zařízení vymaže svůj požadavek na přerušení, když CPU provede instrukci vymazání I/O na kanálu zařízení číslo.

CPU očekával, že operační systém umístí adresu své rutiny služby přerušení do adresy paměti 1. Když se zařízení přeruší, CPU provede nepřímý skok přes adresu 1, umístí zpáteční adresu do adresy paměti 0 a deaktivuje další přerušení. Obsluha přerušení pak provede instrukci INTA, aby zjistila číslo kanálu přerušovacího zařízení. Fungovalo to tak, že se na propojovací rovině zvýšil signál „potvrzení“. Potvrzovací signál byl zapojen ve formátu sedmikrásky přes propojovací desku tak, aby procházel každou deskou sběrnice. Očekávalo se, že jakékoli zařízení požadující přerušení zablokuje další šíření potvrzovacího signálu po sběrnici, takže pokud by dvě nebo více zařízení měla čekající přerušení současně, pouze první by viděl potvrzovací signál. Toto zařízení poté zareagovalo umístěním čísla svého kanálu na datové linky na sběrnici. To znamenalo, že v případě současných požadavků na přerušení bylo zařízení, které mělo prioritu, určeno tím, které bylo fyzicky nejblíže CPU v kleci karty.

Poté, co bylo přerušení zpracováno a servisní rutina odeslala zařízení vymazání I/O, obnovilo normální zpracování povolením přerušení a následným vrácením nepřímým skokem přes adresu paměti 0. Aby se zabránilo přerušení čekajícího přerušení bezprostředně před návratový skok (což by způsobilo přepsání zpáteční adresy), INTEN instrukce měla zpoždění cyklu jedné instrukce. Když byla spuštěna, přerušení nebude povoleno, dokud nebude provedena následující instrukce, která měla být instrukcí JMP@ 0.

Rutina služby přerušení operačního systému pak obvykle provedla indexovaný skok pomocí čísla přijatého kanálu, aby se přeskočila na konkrétní rutinu zpracování přerušení pro zařízení. Bylo několik zařízení, zejména obvod detekce výpadku napájení procesoru, který nereagoval na instrukci INTA. Pokud INTA vrátila výsledek nula, rutina služby přerušení musela vyzvednout všechna zařízení, která nereagují na INTA, pomocí pokynů SKPDZ/SKPDN, aby zjistila, která z nich byla přerušena.

Operační systém by mohl poněkud řídit řazení přerušení nastavením masky přerušení pomocí instrukce MSKO. To mělo umožnit operačnímu systému určit, která zařízení byla povolena v daném čase přerušit. Když byla tato instrukce vydána, byla 16bitová maska ​​přerušení přenesena do všech zařízení v propojovací rovině. Bylo na zařízení, aby se rozhodlo, co pro ni maska ​​vlastně znamená; podle úmluvy zařízení, které bylo maskováno, nemělo zvýšit linku přerušení, ale CPU neměl prostředky, jak to vynutit. Většina maskovatelných zařízení umožňovala výběr bitové masky pomocí propojky na desce. Existovala zařízení, která masku úplně ignorovala.

V systémech s pamětí magnetického jádra (která si uchovávala svůj obsah bez napájení) bylo možné obnovení po výpadku napájení. Obvod detekce výpadku napájení v CPU vydal přerušení, když byla detekována ztráta hlavního napájení přicházejícího do počítače; od tohoto okamžiku měl CPU krátkou dobu, než kondenzátor v napájecím zdroji ztratil náboj a napájení CPU selhalo. To bylo dost času na zastavení probíhajících I/O vydáním IORST instrukce a poté uložením obsahu čtyř akumulátorů a přenosového bitu do paměti. Když se napájení vrátilo, pokud by klíčový spínač na předním panelu CPU byl v poloze LOCK, CPU by se spustil a provedl nepřímý skok přes adresu paměti 2. Očekávalo se, že to bude adresa rutiny služby operačního systému, která by znovu nahrála akumulátory a přenášejte bit a poté pokračujte v normálním zpracování. Bylo na servisní rutině, aby zjistila, jak restartovat I/O operace, které byly přerušeny výpadkem napájení.

Rozložení předního panelu

Jak bylo zvykem dne, většina modelů Nova poskytovala konzolu na předním panelu pro ovládání a monitorování funkcí CPU. Modely před verzí Nova 3 se spoléhaly na kanonické rozložení předního panelu, jak je uvedeno na panelové fotografii Nova 840 výše. Rozložení obsahovalo klíčový vypínač, dvě řady kontrolek adresy a zobrazení dat, řadu přepínačů pro zadávání dat a řadu funkčních spínačů, které po stisknutí aktivovaly různé funkce CPU. Adresní lampy vždy zobrazovaly aktuální hodnotu programového čítače, binárně. Datové kontrolky zobrazovaly různé hodnoty podle toho, která funkce CPU byla v danou chvíli aktivní. Vlevo od datové kontrolky úplně vlevo zobrazovala další kontrolka aktuální hodnotu přenosového bitu. U většiny modelů byly žárovky žárovky, které byly připájeny k desce panelu; výměna vyhořelých žárovek byla pro inženýry terénní služby Data General prokletím existence.

Každý z datových přepínačů řídil hodnotu jednoho bitu v 16bitové hodnotě a podle obecné datové konvence byly očíslovány 0-15 zleva doprava. Datové přepínače poskytovaly vstup do CPU pro různé funkce a mohly být také čteny spuštěným programem pomocí instrukčního jazyka READS assembler. Aby se omezil nepořádek na panelu a ušetřily se peníze, byly funkční přepínače implementovány jako obousměrné okamžité spínače. Když byla páčka přepínače funkcí zvednuta, spustila funkci, jejíž jméno bylo vytištěno nad spínačem na panelu; když byla páčka stisknuta, aktivovala funkci, jejíž jméno se objevilo pod spínačem. Po uvolnění se přepínací páčka vrátila do neutrální polohy.

S odkazem na fotografii Nova 840 provedly první čtyři přepínače zleva funkce EXAMINE a DEPOSIT pro čtyři akumulátory. Stisknutím EXAMINE na jednom z nich způsobí, že se aktuální hodnota akumulátoru zobrazí binárně pomocí datových kontrolek. Stisknutím DEPOSIT přenesete binární hodnotu reprezentovanou aktuálním nastavením datových přepínačů do akumulátoru.

Při přechodu doprava byl dalším přepínačem přepínač RESET/STOP. Stisknutím tlačítka STOP došlo k zastavení procesoru po dokončení aktuální instrukce. Stisknutím tlačítka RESET došlo k okamžitému zastavení procesoru, vymazání řady interních registrů CPU a odeslání signálu resetování I/O všem připojeným zařízením. Přepínač napravo od toho byl přepínač START/POKRAČOVAT. Stisknutím tlačítka POKRAČOVAT se CPU obnoví v provádění instrukce, na kterou aktuálně ukazuje programový čítač. Stisknutím tlačítka START přenesete hodnotu aktuálně nastavenou v datových přepínačích 1-15 do čítače programu a odtud se začne vykonávat.

Další dva přepínače poskytovaly přístup ke čtení a zápisu do paměti z předního panelu. Stisknutím tlačítka EXAMINE byla hodnota nastavená v datových přepínačích 1-15 přenesena na čítač programů, načtena hodnota na odpovídající paměťové místo a její hodnota zobrazena v datových lampách. Stisknutím tlačítka EXAMINE NEXT se zvýšil čítač programu a poté se provedla operace prozkoumání v tomto paměťovém umístění, což uživateli umožnilo projít řadou paměťových míst. Stisknutím tlačítka DEPOSIT se zapíše hodnota obsažená v datových přepínačích do místa paměti, na které ukazuje čítač programu. Stisknutím tlačítka DEPOSIT NEXT se nejprve zvýší čítač programu a poté se uloží na místo zaměřené do paměti.

Funkce INST STEP způsobila, že CPU provedl jednu instrukci v aktuálním umístění čítače programu a poté se zastavil. Vzhledem k tomu, že by se čítač programu zvýšil jako součást provádění instrukce, umožnilo to uživateli krokovat programem. MEMORY STEP, nesprávné pojmenování, způsobilo, že CPU běžel jediným hodinovým cyklem a zastavil se. To bylo málo užitečné pro uživatele a bylo obecně používáno pouze pracovníky terénního servisu pro diagnostiku.

PROGRAM LOAD byl mechanismus obvykle používaný ke spuštění Nova. Když byl tento přepínač spuštěn, způsobil mapování bootovací ROM o 32 slovech během prvních 32 slov paměti, nastavení čítače programu na 0 a spuštění CPU. Spouštěcí ROM obsahovala kód, který by přečetl 256 slov (512 bajtů) kódu z vybraného I/O zařízení do paměti a poté přenesl řízení na načtený kód. Datové přepínače 8-15 byly použity k určení zaváděcí ROM, ze kterého I/O kanálu se má spustit. Pokud by přepínač 0 byl vypnutý, spouštěcí ROM by předpokládala, že zařízení je vyzvednuté zařízení (např. Čtečka papírových pásek) a spouštělo vstupní polled smyčku, dokud nebylo přečteno 512 bytů. Pokud byl přepínač 0 zapnutý, spouštěcí ROM předpokládala, že zařízení je zařízení podporující DMA, a zahájila přenos dat DMA. Zaváděcí ROM nebyla dostatečně chytrá, aby umístila zařízení před zahájením přenosu. To byl problém při restartu po havárii; pokud byla zaváděcím zařízením disková jednotka, její hlavy byly pravděpodobně ponechány na náhodném válci. Aby spouštěcí sekvence fungovala, musely být přemístěny do válce 0, kde RDOS napsal zaváděcí blok první úrovně. Obvykle se to dělalo tak, že se měnič procházel jeho sekvencí načítání, ale uživatelé, kteří byli frustrovaní z čekací doby (až 5 minut v závislosti na modelu disku), se naučili zadávat z předního panelu disk „rekalibrovat“ I/O kód a krokujte CPU, což je operace, která zkušenému uživateli zabrala jen několik sekund.

Vypínač byl třícestný klíčový spínač s polohami označenými OFF, ON a LOCK. V poloze VYPNUTO bylo z CPU odebráno veškeré napájení. Přepnutím klíče na ZAPNUTO přivedete napájení CPU. Na rozdíl od současných procesorů se však CPU při zapnutí napájení nespustilo automaticky; uživatel musel použít PROGRAM LOAD nebo jinou metodu ke spuštění CPU a spuštění bootovací sekvence. Otočením přepínače do polohy LOCK se deaktivují funkční přepínače na předním panelu; otočením přepínače do polohy LOCK a vyjmutím klíče může uživatel zajistit odolnost CPU proti neoprávněné manipulaci. V systémech s pamětí magnetického jádra poloha LOCK také umožňovala funkci automatického obnovení po výpadku napájení. Klíč lze vyjmout v poloze VYPNUTO nebo ZAMKNUTO.

Výkon

Nova 1200 provedla pokyny pro přístup k základní paměti (LDA a STA) za 2,55 mikrosekundy (μs). Uložení paměti jen pro čtení ušetřilo 0,4 μs. Pokyny k akumulátoru (ADD, SUB, COM, NEG atd.) Trvaly 1,55 μs, MUL 2,55 μs, DIV 3,75 μs, ISZ 3,15-4,5 μs. Na pozdějším Eclipse MV/6000 trvalo LDA a STA 0,44 μs, ADD atd. Trvalo 0,33 μs, MUL 2,2 μs, DIV 3,19 μs, ISZ 1,32 μs, FAD 5,17 μs, FMMD 11,66 μs.

Příklady montážního jazyka

Ahoj světový program

Toto je minimální programovací příklad v jazyce sestavení Nova. Je navržen tak, aby běžel pod RDOS a tiskl řetězec „ Ahoj, světe. “Na konzole.

    ; 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

16bitové násobení

Základní modely Nova přišly bez vestavěného hardwaru pro násobení a dělení, aby byly ceny konkurenceschopné. Následující rutina vynásobí dvě 16bitová slova a vytvoří 16bitový výsledek slova (přetečení je ignorováno). Ukazuje kombinované použití ALU op, shift a test (skip). Všimněte si, že když je tato rutina volána jsr, AC3 obsahuje zpáteční adresu . Toho používá instrukce pro vrácení jmp 0,3. Idiomatický způsob, jak vyčistit akumulátor, je sub 0,0. Mohou být uspořádány další jednotlivé instrukce pro načtení konkrétní sady užitečných konstant (např. -2, -1 nebo +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

Binární tiskový akumulátor

Následující rutina vytiskne hodnotu AC1 jako 16místné binární číslo na konzole RDOS. Odhalí další vtípky instrukční sady Nova. Například neexistuje žádná instrukce pro načtení libovolné „okamžité“ hodnoty do akumulátoru (ačkoli instrukce pro referenci paměti takovou hodnotu kódují, aby vytvořily efektivní adresu). Akumulátory musí být obecně načteny z inicializovaných paměťových míst (např. n16). Jiné současné stroje, jako je PDP-11 , a prakticky všechny moderní architektury, umožňují okamžité zatížení, ačkoli mnoho takových jako ARM omezuje rozsah hodnot, které lze načíst okamžitě.

Protože .systmmakro volání RDOS implementuje a jsr, AC3 je přepsáno zpáteční adresou pro tuto .pcharfunkci. Proto je potřeba dočasné umístění, aby byla zachována zpáteční adresa volajícího této funkce. Pro rekurzivní nebo jinak opakující se rutinu musí být místo toho použit zásobník, hardware, je-li k dispozici, software, pokud není. Vrátí se instrukce návratu, jmp @ retrnkterá využívá režim nepřímého adresování Nova k načtení návratového počítače.

Definice konstant na konci ukazují dvě funkce assembleru: radix assembleru je ve výchozím nastavení osmičkový ( 20= šestnáct) a znakové konstanty lze kódovat např "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

Fakta

Kanadská vysílací společnost v Montrealu používala Nova 1200 pro automatizaci přehrávání kanálů až do konce 80. let minulého století. Poté byl nahrazen renovovanými jednotkami Nova 4, které se používaly až do poloviny 90. let.

Viz také

Poznámky

Reference

Citace

Bibliografie

externí odkazy