(Fr.: ordinateur; Du.: Computer, Datenverarbeitungsanlage, Rechenanlage; Eng.: computer), ook: rekentuig, een elektronisch, programmeerbaar apparaat.
Naast de analoge en hybride computers, voornamelijk toegepast bij automatische procesbeheersing, heeft vooral door de administratieve automatisering de toepassing van de digitale computers een grote vlucht genomen. Deze zijn hier aan de orde. Zij voeren automatisch een reeks bewerkingen uit, zoals rekenkundige operaties op numerieke grootheden, logische operaties op logische variabelen en manipulaties met beschrijvende gegevens. De digitale computer is ontstaan uit de behoefte aan apparatuur waarmee gecompliceerd rekenwerk snel en foutloos gedaan kan worden. De grote stoot tot de ontwikkeling van de digitale computer werd gegeven in de Tweede Wereldoorlog door de Amerikanen die door de grote variatie in geschut genoodzaakt waren vele ballistische tabellen op te stellen. Tevens zie Automatisering.
Kenmerken.
Een digitale computer heeft de volgende kenmerken.
1. Alle informatie moet in gecodeerde vorm aan de computer worden toegevoerd. De vorm waarin deze wordt gerepresenteerd, het woord (Eng.: format), is opgebouwd uit bits (code-elementen, binaire cijfers 0 of 1; tevens zie Binair; Code).
2. De bewerkingen die een computer kan verrichten zijn elementair. Als rekenkundige operaties bijv. zijn beschikbaar optellen en aftrekken en vaak ook vermenigvuldigen en delen. Daarom moeten wiskundige functies zoals bijv. integreren en differentiëren herleid worden tot een serie elementaire rekenkundige bewerkingen.
3. In een computer vinden alle acties nl. de invoer van gegevens, het verrichten van bewerkingen en de uitvoer van resultaten, onder besturing van een programma plaats.
4. Een programma is een reeks opdrachten, behorend tot het repertoire van de computer, die één voor één na elkaar worden uitgevoerd.
5. Het is mogelijk in een programma de volgorde waarin de bewerkingen worden uitgevoerd te wijzigen op grond van gegevens of berekende condities. Een computer kan dus een beslissing nemen; deze is het resultaat van een toets (test). Afhankelijk van de testuitslag wordt een keuze gemaakt uit verschillende reeksen instructies. Hierdoor zijn de mogelijkheden van een computer talrijk. Toch kan een computer niet ‘zelf ’ een probleem oplossen; de lijn die daartoe gevolgd moet worden moet door de mens worden aangegeven. De computer is dan in staat deze lijn te volgen en oplossingen, gebaseerd op steeds wisselende ingangsgegevens, te produceren.
6. Het uit te voeren programma wordt met de bijbehorende gegevens in het geheugen van de computer opgeslagen. Zowel programma en gegevens als instructies worden digitaal voorgesteld.
7. Bij veranderingen in de taak wordt het programma vervangen door een ander. Dit verklaart mede de grote toepassingsmogelijkheden van de computer.
8. De computer is opgebouwd uit logische en sequentiële schakelingen met twee discrete niveaus: een stroom of spanning op een bepaald ogenblik kan slechts één van de twee waarden hebben. Variaties van de elektrische signalen binnen zekere grenzen beïnvloeden de werking van de schakelingen niet, hetgeen in hoge mate bijdraagt tot de betrouwbaarheid van een computer. Elk elektrisch signaal stelt een bit voor. Het aantal bits, gebruikt voor de codering van de gegevens, bepaalt de nauwkeurigheid van de computer.
Opbouw.
Voor vrijwel iedere digitale computer geldt dat deze is opgebouwd uit een aantal functionele delen voor invoeren, bewerken, bewaren, besturen en uitvoeren van informatie (afb. 1).
Geheugen.
In het werkgeheugen zijn vastgelegd de stappen d.w.z. bewerkingsopdrachten, die achtereenvolgens genomen moeten worden om tot de oplossing van een probleem te komen. Verder zijn in het geheugen ook de gegevens opgenomen voor de uitvoering van de bewerking. Voorts worden in het geheugen de tussen- en eindresultaten geplaatst die tijdens de berekening ontstaan. Het geheugen is een verzameling opbergplaatsen die alle evenveel bits kunnen bevatten. Elke plaats heeft een eigen nummer: het adres dat zelf ook met bits wordt aangegeven; met een adres van 12 bits kunnen de getallen (dus adressen) 0...4096 worden aangegeven (4096 = 212).
Behalve bewaren kan het geheugen ook informatie opnemen (schrijven) en weer afgeven (lezen). Bij schrijven wordt de nieuwe informatie geschreven over de oude heen die daarbij verloren gaat. Bij lezen blijft de inhoud ongewijzigd; de informatie wordt dan gekopieerd.
Bewerkingsorgaan.
Dit verricht de eigenlijke bewerkingen. Deze omvatten niet slechts rekenkundige operaties, maar kunnen ook de een of andere transformatie van een gegeven tot gevolg hebben. De bewerkingen worden één voor één uitgevoerd, geleid door de besturing. Het bewerkingsorgaan bevat ten minste één rekenregister (accumulator). Een register kan een beperkt aantal bits opnemen, bewaren en weer afgeven; het fungeert dus als lokaal geheugen voor het bewerkingsorgaan. Bij de bewerking zijn meestal een gegeven uit het geheugen en de inhoud van de accumulator betrokken; het resultaat wordt in de accumulator geplaatst, waarbij het oorspronkelijke gegeven verloren gaat. Van de accumulator uit kan het resultaat naar het geheugen worden gebracht, meestal na een speciale opdracht.
In het bewerkingsorgaan is voor het uitvoeren van de bewerking een logische schakeling aanwezig, veelal aangeduid als ALU (arithmetic and logical unit). De besturing bepaalt welke bewerking de ALU moet verrichten en geeft het commando voor het plaatsen van het resultaat in de accumulator.
Besturingsorgaan.
Dit regelt, bestuurt en coördineert de acties in de verschillende delen van een computer. Besturings- en bewerkingsorgaan vormen de kern van een computer en worden gezamenlijk aangeduid als centrale verwerkingseenheid.
Voor het bijhouden van de instructieadressen wordt een instructie- of programmateller gebruikt. Het programma is zodanig in het geheugen geplaatst, dat de instructies zich op opeenvolgende plaatsen bevinden. Steeds als een instructie is opgehaald wordt de getalmatige inhoud van de instructie- of programmateller met één verhoogd, waardoor dus het adres van de volgende instructie ontstaat. Een instructie bestaat ten minste uit een functie- en een adresdeel; het eerste bevat de code van de te verrichten bewerking, het andere het adres van de operand (het gegeven dat bij de bewerking betrokken is):
Een-adresinstructie:
o - operatiecode
n - operandadres
Als de instructie slechts één adres bevat heet de machine een één-adrescomputer. Vele operaties zijn echter dyadisch: bij de bewerking zijn twee gegevens betrokken, zodat in totaal drie adressen of plaatsen nodig zijn nl. twee voor de gegevens en één voor het resultaat. Bij de één-adrescomputer is dit als volgt opgelost: het ene gegeven staat al in de accumulator, het andere wordt uit het geheugen gehaald en het resultaat wordt in de accumulator gezet, met het voordeel dat met het resultaat meteen verder gewerkt kan worden.
Behalve de één-adrescomputer komen ook twee-adresmachines voor:
Twee-adresinstructie:
o - operatiecode
n1 - adres 1ste operand
n2 - adres 2de operand en resultaat
Bij dit type is geen accumulator nodig: de twee gegevens worden uit het geheugen gehaald en het resultaat op de plaats van de tweede operand gezet.
Nadat de instructie uit het geheugen is gehaald wordt de operatiecode gedecodeerd:
Opdrachtcode Betekenis
4 - plaats gegeven uit geheugen in accumulator
5 - tel gegeven uit geheugen op bij inhoud van accumulator, plaats resultaat in accumulator
6 - vermenigvuldig gegeven uit geheugen met inhoud van accumulator, plaats resultaat in accumulator
15 - plaats inhoud van accumulator in geheugen
De bewerking wordt veelal uitgevoerd door een opeenvolging van zeer elementaire acties (microstappen). De bij iedere bewerking behorende reeks micro-operaties heet een microprogramma. De besturing zorgt ervoor dat de micro-operaties van het juiste microprogramma in de juiste volgorde worden verricht.
Behalve het vaststellen van de operatie is het adresseren van het geheugen belangrijk. Instructieadressen worden met de instructieteller bepaald. Daarnaast moet ook het operandadres worden vastgesteld. Het is mogelijk dat de inhoud van het adresdeel niet direct de operand aanwijst, maar eerst moet worden gemodificeerd. Dit vindt alleen plaats wanneer het expliciet is vermeld in het modificatieveld. De instructie bestaat dan dus uit drie delen:
o - operatiecode
m - modificatie
n - operandadres
Adresmodificatie kan bestaan uit indicering en/of indirectie. Voor indicering heeft de besturing indexregisters, die worden aangewezen door het modificatieveld. Bij indirectie geldt dat het in eerste instantie gevormde geheugenadres nog niet de operand bevat, maar het adres daarvan. Voor indicering kan het besturingsorgaan óf een eigen optelschakeling óf de ALU gebruiken, afhankelijk van de opzet van de verwerkingseenheid. Deze kan uitgerust zijn met aparte reken- en indexregisters, zoals in het voorgaande werd verondersteld. Tegenwoordig worden echter veel algemene registers gebruikt, zodat de programmeur een register naar keuze als reken- of als indexregister kan gebruiken. Dan kan ook elk register als accumulator dienen; de programmeur moet nu aanwijzen, welk rekenregister dat zal zijn. In het instructieformaat is daartoe een registerveld opgenomen:
o - operatiecode
r - registeroperand
m - modificatieveld
n - adres
Het o-veld bevat de operatiecode; het r-veld wijst een register als accumulator aan; het n-veld kiest uit de algemene registers een indexregister en het n-veld bevat een deel van het operandadres.
In het algemeen worden instructies achtereenvolgens afgewerkt, maar ook hiervan kan worden afgeweken door in het programma een sprongopdracht op te nemen. Met sprongopdrachten kunnen door de programmeur sprongen en vertakkingen in het programma worden aangebracht, mits het moment van een wijziging in de programmavolgorde was voorzien. Is dit niet zo, wanneer dat moment dus bepaald wordt door een gebeurtenis buiten het programma om, zoals bij computerbesturing van technische processen, dan moet om het tijdstip toch aan de computer kenbaar te maken, een onderbrekingssignaal (interrupt) worden gebruikt. De besturing onderbreekt dan het lopende programma en redt de stand van de instructieteller en de inhoud van de reken- en indexregisters. Vervolgens wordt een nieuw adres in de instructieteller gezet en een reeks opdrachten die niet tot het onderbroken programma behoren afgewerkt. In het nieuw gestarte programma worden de door de programmaonderbreking geëiste acties verricht, waarna met het onderbroken programma wordt doorgegaan.
Invoer- en uitvoerorgaan.
De in- en uitvoerorganen die in het functionele blokschema apart zijn aangegeven, vormen in werkelijkheid meestal één geheel: de invoer-uitvoereenheid, ook wel kanaal genoemd (zie Datatransport). Het kanaal verzorgt via de in- en uitvoerapparaten, de randapparatuur, de communicatie met de buitenwereld. Vóór de computer aan een programma kan beginnen moeten de instructies en de benodigde gegevens in het geheugen geplaatst zijn. Men verdeelt de randapparatuur in twee categorieën: in- en uitvoerapparaten die als communicatiemiddel fungeren tussen gebruiker en computer (terminals of communicatiestations) en de apparaten die als extra geheugen voor de computer dienst doen en wegens de grote hoeveelheden informatie die zij kunnen bevatten, massageheugens worden genoemd. Terwille van een uniforme aansluiting van de randapparaten heeft iedere computer een standaardmanier waarop zij zowel logisch als fysisch met de computer moeten worden verbonden (standaardinterface ).
Architectuur van een computer, de gangbare term voor de functionele beschrijving van de computer. Hierin zijn nauwkeurig vastgelegd: de representatie, omvattende de coderingsvoorschriften voor instructies en gegevens; de adresseringsfaciliteiten, zoals indiceren en indirectie (zie Adresseren); de operaties die verricht kunnen worden; de besturingsfaciliteiten en de wijze waarop de in- en uitvoer moeten plaatsvinden, inclusief in- en uitvoerinstructies.
Representatie.
Bij de representatie wordt vermeld welke soorten gegevens, te onderscheiden in getallen (binaire en decimale vaste-komma- en drijvende-kommagetallen, logische variabelen, en letters en andere tekens verwerkt kunnen worden). Voor binaire vaste-kommagetallen wordt vooral complementnotatie toegepast. Voor decimale vaste-kommagetallen zijn de bits in groepen van vier (tetraden) ingedeeld; de decimale cijfers worden in BCD-(binary coded decimal)code weergegeven. Zij bieden voordelen bij administratieve toepassingen.
Het bereik van de vaste-kommagetallen wordt door het aantal beschikbare cijferplaatsen bepaald; is dat onvoldoende, dan kan worden overgegaan op de drijvende-kommanotatie. Voor het weergeven van natuurlijke taal worden letters en andere tekens (Eng.: characters) gebruikt. Deze beschrijvende gegevens zijn van belang voor programmeertalen, tekstverwerking en administratieve toepassingen. Voor de codering worden toegepast: EBCDIC (extended binary coded decimal interchange code) en ASCII (American Standard code for interchange of information). Voorts zie Datarepresentatie.
Operaties.
De operaties zijn te verdelen in rekenkundige en logische operaties, interne transportbewerkingen, schuifbewerkingen en operaties voor behandeling van gegevens.
Wat de rekenkundige operaties betreft: voor binaire vaste-komma-aritmetiek heeft elke computer wel enige bewerkingen. Decimale vaste-komma- en drijvende-komma-aritmetiek zijn vaak optioneel, d.w.z. de gebruiker kan desgewenst kopen of huren; de rekenkundige bewerkingen zijn hier beperkt tot optellen, aftrekken, vermenigvuldigen en delen. Vergelijkoperaties worden door middel van een aftrekking uitgevoerd; daarmee kunnen relaties bepaald worden als
A < B, A ≦ B, A = B, A ≠ B, A ≧ B, A > B.
Het vastleggen van de resultaten geschiedt met conditieflipflops (zie Flipflop).
De logische operaties, meestal de ‘en’ en de ‘of ’, worden uitgevoerd op logische variabelen, een verzameling onafhankelijke bits, ieder met een bepaalde betekenis. Deze operaties zijn dyadisch en worden per overeenkomstige bitpositie verricht:
0101
0110 en
0100
0101
0110 of
0111
Bij interne transportbewerkingen gaat het om transport van informatie, waarbij uitsluitend geheugenplaatsen en registers van de verwerkingseenheid betrokken zijn; de operaties betreffen laad- en berginstructies. Voor het verplaatsen van informatie in het geheugen hebben sommige computers verplaatsinstructies, volgens welke een aantal woorden van het ene geheugengebied naar een ander wordt overgebracht.
Met een schuifopdracht kan informatie in een register van het bewerkingsorgaan een aantal plaatsen worden verschoven. Deze instructie is belangrijk voor bewerkingen, waarbij delen van een woord afzonderlijk behandeld moeten worden. Zowel aritmetisch als logisch schuiven kan naar links en naar rechts worden uitgevoerd. Het onderscheid berust op de behandeling van het teken; bij logisch schuiven doet het tekenbit gewoon mee, bij aritmetisch schuiven blijft het onveranderd op zijn plaats. In beide gevallen moeten de opengevallen cijferposities (bits of tetraden) worden aangevuld.
De operaties voor databehandeling betreffen specifieke instructies voor beschrijvende gegevens.
Besturingsfaciliteiten.
Tot de besturingsfaciliteiten behoren de sprongopdrachten en de mogelijkheden tot programmaonderbreking. Met eerstgenoemde kan de inhoud van de instructieteller zodanig worden gewijzigd dat de sequentie van het programma wordt onderbroken. Met een relatieve sprong wordt een verplaatsing bewerkstelligd ten opzichte van het instructieadres in de programmateller op het moment van de sprong. Met voorwaardelijke sprongen kan de programmeur het verdere verloop van het programma laten afhangen van een bepaald resultaat. De voorwaarde is in een conditiecode vastgelegd, die wordt vergeleken met de inhoud van het conditieregister, samengesteld uit de eerder genoemde conditieflipfloppen.
Voor het afhandelen van programmaonderbrekingen zijn vaak speciale systeembesturingsinstructies aanwezig. Een programmaonderbreking kan het gevolg zijn van een fout in het programma zelf; bijv. deling door nul, overschrijding van de registercapaciteit (‘overloop’ of overflow) (bij drijvende-kommagetallen ook ‘onderloop’ of underflow), adressering van verboden geheugengebieden of gebruik van verboden instructies enz. Voorts door een fout in de computer, en door externe gebeurtenissen, bijv. bij de randapparatuur. Aan programmaonderbrekingen worden prioriteiten toegekend.
Een computer kent vaak twee modes van werken: de supervisormode, waarin het gebruik van alle instructies is toegestaan en toegang tot alle geheugenadressen mogelijk is; en de gebruikersmode, waarin bepaalde instructies en geheugengebieden verboden zijn. Door deze opzet is multiprogrammering mogelijk; dit houdt in dat verscheidene programma’s tegelijk zich in de executiefase bevinden.
Uitrusting.
De uitrusting geeft de logische structuur van de computer weer. Algemeen geldt: hoe sneller, hoe meer apparatuur, hoe duurder. Door het kiezen van een bepaalde uitrusting kan het logisch ontwerp afgestemd worden op de verwachte hoeveelheid werk. Op grond hiervan ontwerpt men computerfamilies: een reeks computers met dezelfde architectuur maar met verschillende uitrustingen; zulke computers heten compatibel. In een computerfamilie bestaat soms slechts opwaartse compatibiliteit, d.w.z. programma’s van lagere modellen kunnen wél door hogere verwerkt worden, maar niet omgekeerd. De elementaire logische functies worden gerealiseerd met poorten en flipfloppen, waarmee weer grotere logische en sequentiële structuren gevormd worden zoals: tellers, registers, reken- en decodeerschakelingen. Voorts zie Schakeltechniek.
In afb. 4 is de uitrusting van een eenvoudige verwerkingseenheid weergegeven. Elk pad stelt in werkelijkheid een aantal draden voor. Bij parallelle verwerking worden alle bits van een register naar de ALU gevoerd; er zijn dan zoveel draden nodig als er bits zijn. Bij seriële verwerking vindt de bewerking bit voor bit plaats en is slechts één draad nodig.
De uitvoering van een instructie geschiedt in twee fasen: een haal-, instructie- of routinefase en een executie-, uitvoerings- of variabele fase.
De ALU wordt ook bij indicering gebruikt; het effectieve adres wordt dan rechtstreeks aan het geheugen aangeboden. Het vullen van de instructieteller met een nieuw adres in geval van een sprong gebeurt ook via de ALU, evenals het redden van het instructieadres in geval van een interrupt. De stuureenheid kan zijn samengesteld uit sequentiële en combinatorische schakelingen. Ook kan een besturingsgeheugen toegepast worden waarin de microprogramma’s van de bewerkingen zijn opgeslagen; de stuureenheid gaat dan op een kleine computer gelijken.
Realisatie.
Gaven de architectuur en de uitrusting van een computer de functionele verschijning en de logische structuur ervan aan, in de realisatie wordt beschreven welke fysische componenten gebruikt zijn.
Als componenten worden geïntegreerde halfgeleiderschakelingen gebruikt. Bij computers van de derde generatie worden de componenten gemonteerd op kaarten met gedrukte bedrading en geplaatst in rekken van achteren met bedrading voorzien. Aangezien computerontwerpen steeds ingewikkelder worden, automatiseert men de realisatiefase zoveel mogelijk (zie Ontwerpautomatisering).
Om bij storing het zoeken van de fout te vergemakkelijken, terwijl de computer in bedrijf blijft, zijn in het ontwerp foutdetectieschakelingen opgenomen. Wanneer aan een computersysteem bijzonder hoge betrouwbaarheidseisen gesteld worden zoals voor luchtverkeersleiding, worden zelfs twee of drie computers toegepast. In geval van storing zet één computer de taak voort, terwijl intussen de defecte gerepareerd wordt.