Computerhistorie: De Control Data CYBER 170-835
Control Data CYBER 170-835
Benchmark op zijn “Frans”: pupitreur en pi
Op de Control Data VIM/ECODU ‘wereldconferentie’ in Minneapolis werd eind 1981 door Control Data Corporation een nieuwe systeemlijn aangekondigd, de CYBER 170-800 serie. De eerste twee modellen in de lijn waren de 825 en de 855. Het Physisch Laboratorium TNO zocht echter een model dat qua kracht daar tussen in gepositioneerd zou moeten zijn. De reden was de overbelasting van de CYBER 74: een CPU-bezettingsgraad overdag van 100% en 75-85% ‘s-nachts en in het weekeinde, en 500 batchjobs en 350 terminalsessies per dag. De Cyber 74 verwerkte 650.000 besturingssysteemcommando’s per maand: 200.000 vanuit batchjobs en 450.000 commando’s geïnitieerd vanaf terminals.
Het vervangende systeem voor de CYBER 74 zou minimaal 256 MB SecDed-geheugen (single error correction, double error detection) en meer en snellere I/O-kanalen moeten hebben om gebruik te kunnen maken van nieuwere schijven met een hogere datatransportsnelheid. Uit commentaarregels in nieuwe PP-code kon achterhaald worden, dat de leverancier werkte aan een nieuw systeem met de codenaam S2. Dat lag in tussen de S3 (855) en de S1 (825). Reden om door te vragen.
Onder non-disclosure werden nadere details onthuld. In mei 1982 kon op een van de eerste beta versie modellen van de CYBER 170-835 (“Early Bird programma”) een benchmark uitgevoerd worden bij Aerospatiale in Toulouse. Voorafgaande daaraan bleek het NLR al een benchmark op de Cyber 170-835 en een Cyber 170-855 uitgevoerd te hebben. Door hun benchmarkprogramma’s op de Cyber 74 te draaien hadden we al een eerste indruk van de capaciteit van de Cyber 170-835.
We gingen op stap met een dubbel stel magneetbanden. Eén stel magneetbanden zat in de koffers die bij het overstappen in Parijs op Charles de Gaulle een uitstapje maakten en pas een dag later op zaterdagavond in het hotel afgeleverd werden. De andere vier magneetbanden zaten in de handbagage en moesten op Charles de Gaulle doorgelicht worden in een niet-veilig Röntgenapparaat. Na aankomst in Toulouse was er dan ook reden genoeg om met spoed na te gaan of de vier doorgelichte banden nog leesbaar waren. Gelukkig was dat het geval.
Op zaterdag en zondag kon in het indrukwekkende rekencentrum van Aerospatiale volop op de Cyber 170-835 getest worden. Buiten een Franse CDC medewerker en de Nederlandse delegatie was er verder niemand aanwezig. Er stonden daar vier mainframes, vele tientallen schijfeenheden en een aantal printers en kaartlezers opgesteld in een ruimte die afgescheiden was van een vliegtuigproductiehal. Het NOS/BE systeem was door de Fransen behoorlijk gemodificeerd. Alle (fout)meldingen op het console en in de uitvoer van de vertalers waren omgezet in het Frans. Gelukkig waren de collega’s minder goed thuis in de wijze waarop de operatortekstinvoer vanaf het console tot een commando samengesteld werd. Daardoor kon het systeem toch nog behoorlijk door ons bediend worden.
De Franse collega die ons begeleidde sprak geen Engels en zijn Franse woordenstroom was slechts enkele ogenblikken te vertragen. Omdat de aanwezige nieuwe systemen (835, 855), schijven (844, 885) en regeldrukkers (580) qua Franse nummering erg veel op elkaar leken, was het steeds een probleem om huit cent, quatre vingt cinq en zo te decoderen naar een schijfeenheid of was het nu het mainframesysteem dat zo probleemloos draaide? Erger nog, hij had het steeds over ‘pupitreur’, een term die niet in ons woordenboek voorkwam. Pas na twee dagen konden wij de term herleiden naar pupitre (‘lessenaar’). Nu was het duidelijk dat de goede man het een en ander probeerde duidelijk te maken over zijn operators.
De benchmark bestond uit een twaalftal representatieve jobs die het zware I/O- en rekenwerk van het Physisch Laboratorium TNO en haar Defensieklanten moesten representeren. Daarnaast hadden wij de beschikking over een verzameling systeemtestprogramma’s van het NLR, waarmee de doorvoersnelheid van een representatieve batch gemeten kon worden. Deze verzameling was eerst op het TNO Laboratorium aangepast aan de specifieke ‘kentallen’ van de jobs die op de CYBER 74 verwerkt werden.
De benchmark verliep niet geheel foutloos; er werd een fout in de microcode van de CYBER 170-835 ontdekt. Het Pascal programma leverde een zogenaamde “error mode 4” – delen door nul – crash op in de systeembibliotheek. Door de code te debuggen kon achterhaald worden waar de fout optrad. Het programma berekende de constante ¶ (pi) door arctan(0)/4 uit te rekenen. De wijze waarop ‘oude’ CYBER’s rounded delingen door nul met de instructie RXi Xj/Xk afhandelden was net iets anders dan de wijze waarop de microcode van de CYBER 170-835 dat deed. Om de benchmark te kunnen continueren is pi handmatig gelijk gesteld aan 3.14 in de hoop dat de eindresultaten weinig beïnvloed zouden worden, hetgeen later juist bleek.
Het eindrapport van deze benchmark en het voorstel tot installatie van een CYBER 170-835 werd aangeboden aan de Computercommissie Hoofdgroep Defensieonderzoek (CCHDO) en de Coordinatiecommissie Computerfaciliteiten TNO (CCA). Dit mondde op 7 april 1983 uit in de ondertekening van een huurcontract voor een CYBER 170-835.
CYBER 170-835 hardware
De CYBER 170-835 CPU liep op een 56 nanoseconde klok en had een cachegeheugen van 2KB. Het geheugen was opgebouwd uit 16 K DRAM geheugen met SecDed met een effectieve woordbreedte van 64 bits (dus woorden van 72 bits inclusief SECDED-bescherming). Het systeem was watergekoeld, verstookte 65 KWh en had slechts 2.5 uur preventief hardware-onderhoud per maand nodig, een aanzienlijke verbetering ten opzichte van de vier keer drie uur onderhoud in de maand.
De architectuur van de machine was bijzonder. De hardware had in principe een uitgebreide 64-bits instructieset werkend met een virtueel, gepagineerd geheugen en kon tot 16 microcodes in één systeem emuleren. Eén van die systemen was ondersteuning voor de ‘oude’ CYBER-emulatie met de 60-bits instructies. Omdat de oude Cyber operating systemen NOS en NOS/BE uitgingen van een absoluut geheugen, gebruikten deze het onderste gedeelte van het geheugen van de machine.
De 20 peripheral processors werkten in vier ringen van vijf PP’s met een kloksnelheid van 250 nsec (major cycle). De ‘native’ PP’s beschikten over 16 Kwoorden van 16 bits.
Installatie en configuratie
Op 31 augustus 1983 laat werd de CYBER 74 buiten gebruik gesteld. Een aantal kabels van de zogenaamde “kerstboom” tussen de vier systeempoten werd met een kabelschaar doorgeknipt. Binnen een half uur was het overal binnen het Laboratorium bekend dat de systeemdelen, zo’n 1700 kg per stuk, afgevoerd zouden worden naar de verschrootpers van Pametex. Van alle hoeken van het laboratorium kwamen Physisch Laboratorium-medewerkers met schroevendraaiers en kniptangen aanzetten om de geheugenblokken, logica en dergelijke uit te bouwen.
Na aanpassing en isolatie van de koelleidingen werd de CYBER 170-835 binnengerold. De installatie en de acceptatietesten verliepen zo voorspoedig, dat het systeem op 5 september -een dag eerder dan gepland- in productie genomen kon worden. De schijvenconfiguratie was inmiddels uitgebouwd tot vier 844-41 schijfeenheden en vier 885 eenheden met 2 HDA’s van 692 Mbyte per stuk. Ook waren alle twaalf schijfpakketten vanuit drie schijfbesturingseenheden tweezijdig benaderbaar. De PP’s van het systeem waren zo snel dat overgegaan kon worden van twofold interlaced naar full-tracking. Bij twofold-interlaced werd een blok informatie geschreven, een blok overgeslagen, een volgend blok geschreven. Hierdoor bleef er voldoende tijd over voor de controller en de PP tijdens de onder de schrijf- en leeskop doordraaien van het ‘overgeslagen’ blok om het volgende informatieblok klaar te zetten of naar het centrale geheugen te schrijven. Hierdoor was de kans kleiner dat er een volledige omwenteling 18.3 ms gewacht hoefde te worden voordat een volgend blok benaderd kon worden. Full tracking betekent dat opeenvolgende blokken probleemloos gelezen of geschreven konden worden waardoor een veel betere schijfperformance bereikt werd.
Twee nieuwe magneetbandeenheden werden geïnstalleerd. Deze konden banden met de ‘oude’ snelheid van 800 bits per inch (bpi) alleen lezen, doch konden naast 1600 bpi ook 6250 bpi magneetbanden lezen en schrijven. De doorvoersnelheid was verhoogd tot 200 inch per seconde (ips). Het enige nadeel was dat de nieuwe eenheden geen handmatige ingrepen meer toelieten omdat de luchtstroom die de magneetbanden op spanning hielden tijdens het stoppen of versnellen van de spoelen dan wegviel. Deze ingrepen waren soms nodig bij meetbanden die van de onderzeeboten binnen kwamen. Niet door enige computerkennis gehinderde matrozen spoelden banden halverwege enkele meters door, plakten er een “beginblinker” op en namen de volgende meetserie op. Een blinker was een aluminium stripje die op de magneetband geplakt werd om het begin van de gegevensopslagstructuur aan te geven. Het stuk daarvoor was de ‘leader’ van enkele meters die gebruikt werd om de magneetband op te zetten. Het handmatig doorspoelen naar een tweede beginpunt werkte niet meer op de nieuwe magneetbandeenheden.
In 1990 ontvingen we ponsbanden die door een matroos van de Koninklijke Marine keurig in achtvorm ‘opgeschoten’ was alsof het een landvast was!
Het geheugen van de CYBER 835 werd zodanig ingedeeld dat NOS/BE een geheugen van 256 MB direct kon gebruiken en 256 MB als UEM (extended) geheugen gebruikt werd. Batchjobs mochten nu overdag maximaal een geheugenbeslag hebben van 200000B en ‘s-nachts 377000B woorden (492 KB resp. 980 KB). Interactief lag die grens bij 100000B woorden (246 KB). Overdag mocht een interactief commando maximaal 15 seconden CPU-tijd per stap duren (tussen twee enter-opdrachten), voor batchjobs lag die grens op acht minuten.
ACCU en ENR in last door TNO-worm
Tijdens de installatie moesten wij nog een probleem bij het rekencentrum van de Universiteit Utrecht (ACCU) uit de wereld helpen. Wij waren de eersten in Nederland met magneetbandeenheden die 6250 bpi aankonden. Tijdens de backup (DUMPF) werd een filebeschrijvingsblok (in Unix-termen: inode-tabel) op magneetband gezet met daarin aangegeven welke dichtheid de magneetband geschreven was. De door TNO gebruikte softwareversie had het bitje dat “6250 bpi” aangaf gezet op een plaats die voor eerdere versies van het besturingssysteem de betekenis van niet uitwisbare en niet te backuppen systeemfile had. Een van onze gebruikers was uitgeweken naar het ACCU en had van ons een DUMPF-band meegekregen. Nadat deze geladen waren, waren deze files niet te backuppen en niet uit het systeem te verwijderen files geworden. Omdat de collega’s de nieuwe versie van het besturingssysteem nog niet hadden, snapten ze er niets van! Na een kwartiertje nadenken konden de TNO systeemprogrammeurs een oplossing aandragen om de files te verwijderen. De oplossing vergde wel het nodige ‘patchwerk’ in het systeemgeheugen, feitelijk ‘hacking’ mondeling via de telefoon op afstand.
Een andere gebruiker zou op eenzelfde wijze naar het Rekencentrum van het Energiecentrum Nederland (ENR) uitwijken, doch had zijn files nog niet geladen. Doordat bekend was wat het probleem was, kon via een andere methode van laden (LOADPF replace) een tweede ‘worm’ voorkomen worden.
Doorberekening
Omdat er steeds meer externe klanten voor de CYBER kwamen, waarvan enkele betalende gebruikers waren en omdat beter inzicht in het gebruik van de CYBER voor projecten verkregen moest worden, werd de bestaande accountkaart in 1984 gewijzigd.
Aan de hand van het project- respectievelijk instituutsnummer werd een controlegetal in de accountkaart gecontroleerd. Het controle-algoritme was: ((X2+42) modulo 89 + 10). Hierdoor waren de controlenummers altijd twee cijfers, iets dat het in assembler geschreven accountprogramma vereenvoudigde. Het magische getal “42” werd gebruikt om er voor te zorgen dat systeemprogrammering het oude Physisch Laboratorium TNO ‘instituutsnummer’ 51 kon blijven gebruiken als controlegetal voor hun eigen projectnummers. Tenslotte moet de ontwerper van een controlesysteem allereerst het eigen gemak vooropstellen, nietwaar? Met behulp van de eerder beschreven ‘snelle I/O’-module werd ieder actief projectnummer met een bitje aangegeven in een projectdatabase, die bij de verwerking van de ACCOUNT-opdracht gecontroleerd werd.
Computergrafiek: Preview en Plotlib
De op het Laboratorium aanwezige Calcomp basisbibliotheek stamde nog uit de tijd van de Control Data 3200. Met veel kunst- en vliegwerk was de bibliotheek steeds meegesleept. Met de komst van de Calcomp 1051 met de Calcomp 906-controller diende de basisbibliotheek aangepast te worden. De basisbibliotheek bestond uit enkele simpele routines als penselectie, pen up/down en het tekenen van een teken, een lijn (line) en een assenstelsel (axis). De basisbibliotheek stuurde aan de ‘onderzijde’ de plotter aan. Bovenop de basisbibliotheek had het Laboratorium ook een Calcomp-bibliotheek met complexe ‘top-level’ routines aangeschaft.
Om de gebruikers een vriendelijker pakket aan subroutines en functies aan te bieden, die zowel plotten als previewen ondersteunde, werd een projectgroep ingesteld. De gebruikers kregen mogelijkheden om kleuren en lijndikten toe te wijzen aan andere pennummers, ballpoint of inkt te selecteren, normaal papier of velum (speciale plotfolie) te kiezen. Schalen en ‘clippen’ werden ook toegevoegd.
Het grootste probleem voor de projectgroep was om de noodzakelijke wijzigingen in bestaande gebruikersprogramma’s zo minimaal mogelijk te laten zijn. Gelijktijdig moest de plotbibliotheek zowel vanuit de 1966 als de 1977 versie van Fortran aanroepbaar blijven.
Enige kentallen van het gebruik
Metingen op het CYBER 170-835 systeem gaven in 1984 een bezetting te zien van:
- 34 interactieve commando’s per minuut.
- 40 I/O-aanroepen per seconde.
- 107 schijf-accesses per seconde.
- 162 interactieve swaps per minuut (aantal malen “enter”/minuut).
- 150 PP-programma’s werden per seconde geladen en uitgevoerd; hiervan werden er slechts vijf per seconde van schijf geladen gegeven de eerder beschreven Poolse slimheid. Ten opzichte van de CYBER 74 was het aantal swaps naar schijf gedaald met een factor 100 (wegschrijven van een actief programma naar schijf om geheugenruimte vrij te maken of om het programma weer van schijf te laden en dan weer te laten verwerken.
Begin 1986 waren er 71 gebruikers van de 350 geregistreerde gebruikers tegelijk interactief aan het werk op de Cyber. Overigens waren op de andere centrale systemen (DEC, PDP), zo’n 150 gebruikers regelmatig actief. In één jaar werden 2.500.000 vellen computerpapier afgedrukt, een pad van 38 cm breed van Den Haag tot ver voorbij Parijs. Operations beheerde (backup) zo’n 10.000 actieve en 50.000 inactieve bestanden en 2.500 magneetbanden.
Dual-state werken met NOS/VE
Medio 1985 werd besloten om proeven te nemen met het nieuwe, virtuele operating systeem NOS/VE (Network Operating System/Virtual Environment). NOS/VE was een operating systeem dat gebaseerd was op virtuele geheugentechnieken, waarbij niet alleen het geheugen, doch ook iedere file “virtueel” benaderd werd. De basis voor NOS/VE was gezamenlijk ontwikkeld door NCR en CDC. NCR besloot zich halverwege de ontwikkeling toe te gaan leggen op een andere markt en stapte uit het project. NOS/VE werd ontwikkeld in de programmeertaal Pascal 1 – later omgedoopt tot CYBIL (CYBER Implementation Language) – een systeemprogrammeringsgericht derivaat van Pascal.
In augustus 1985 werd NOS/VE op de CYBER 170-835 van TNO geïnstalleerd. Daarmee werd voor het eerst werkelijk gebruik gemaakt van de ‘native’ hardware-instructies van het systeem. Wij waren daarmee een van de eerste rekencentra op de wereld die de combinatie NOS/BE – NOS/VE (dual-state) in één systeem operationeel draaiden. Bij het installeren liepen wij natuurlijk tegen de bekende 63 character set problemen op. Ook genereerde NOS/VE standaard jobnamen onder NOS/BE die in conflict kwamen met de door ons gebouwde beveiligingscode. Aan NOS/BE-zijde en in de interfacesoftware waren dan ook vele aanpassingen nodig. Omdat NOS/VE voornamelijk bestond uit binair uitvoerbare code (‘executables’), konden wij de meeste fouten niet zelf herstellen. Hierdoor liep de hoeveelheid problem software reports (PSRs) sterk op.
Dual-state plotten
De eerste NOS/VE gebruikers hadden al snel behoefte aan het gebruik van de Calcomp 1051 plotter onder NOS/VE. Nu gaf de dual-state software de mogelijkheid om vanuit NOS/VE een batchjob onder NOS/BE op te starten, een zogenaamde Interstate-job. Omdat de plotbibliotheek de plotter met ‘laag niveau’ stuurcodes aanstuurde welke in een complex assemblerprogramma in de 60-bit woorden gepakt werden, leek het een grote klus om de plotprogrammatuur onder NOS/VE aan het draaien te krijgen. De beste ideeën komen echter als je er niet bewust over nadenkt. Tijdens een weekeinde werd een zeer simpele oplossing bedacht: converteer de basisplotbibliotheek niet naar NOS/VE, maar sla de aanroepen van de basisplotbibliotheek en de parameters op. Een tiental simpele Fortran routines van ieder enkele regels (subroutine, write, return, end) werd geschreven. De write-opdracht zorgde er voor dat een routinenummer gevolgd door een kopie van de parameters in een ASCII-file bijschreven werd. De PLTCLOSE-aanroep voegde aan deze file enkele stuurcommando’s toe en startte de file als batchjob onder NOS/BE. Daar interpreteerde een kort en simpel programma de overgestuurde file en riep de echte plotroutines uit de Calcompbibliotheek aan. De oplossing was zo simpel, dat binnen een halve dag de eerste plotprogramma’s onder NOS/VE draaiden! Later meer over deze “interpreter”.
De aanwezige systeemsoftware onder NOS/VE
Onder NOS/BE was de volgende systeemsoftware aanwezig:
- de regelgebaseerde editors: SUEDI en SUEDA;
- de tekstscanners: IDAF (ASCII) en SCAN (6-bit bytes);
- de tekstopmaker TOI5 (HTML-like macro processor);
- de Fortran vertalers en pre-processors: FTN4, F45, FTN5 (Fortran 1977-standaard) en FTS (Fortran structured);
- de vertalers Pascal2 (tot medio 1984), Pascal3, Cobol5, Compass (assembler), Basic en Algol 5;
- het source code onderhoudspakket UPDATE;
- de pakketten PERT/TIME, APEX3, MPOS, SPSS, DYNAMO, BLUEPACK en INFOL;
- de bibliotheken IMSL (mathematische bibliotheek), CERNlib, PLTNlib (eigen routines), ACCUlib, PLOTlib en Tektronix PLOT 10/TCSlib (terminal control system);
- de tool voor de mededelingen aan gebruikers: APMED;
- het terminal cursor controlepakket;
- de FILMAN file-manipulator (eind ’82 opgeleverd).
Onder NOS/VE vanaf augustus 1985:
- de vertalers: FTN/VE en CYBIL/VE;
- de programmeeromgeving: PE;
- de UNIX-emulatie: VX/VE (2/87);
- de grafische pakketten: Graphical Kernel System (GKS) (2/87), en de Tektronix TCSLib/PLOT 10 bibliotheek omgezet naar NOS/VE;
- de bibliotheek: IMSL/VE.
Al snel daarna werden de NOS/VE equivalenten van de NOS/BE pakketten TOI (Tekst Opmaker IWIS) en TCS (Terminal Control System) aangemaakt.
Brandweerbezoeken
Met name gedurende deze periode heeft het laboratorium een goede relatie met de plaatselijke brandweer opgebouwd. Verschillende keren kregen de CDC technici die een correctie aan moest brengen op een printed circuit bord en daarbij de soldeerbout goed lieten roken, belangstellend bezoek van gehelmd gemeentepersoneel omdat het brandalarm vanuit de computerruimte onvertraagd doorgemeld werd.