BASIS_MIER

Micro Elektronische Rekenmachine (MIER)

De Micro Elektronische Rekenmachine (MIER) werd in 1966 ontwikkeld en gebouwd. Dat was in de tijd dat de micro-elektronica nog maar net werd toegepast en men op laboratoriumniveau nog eigen rekenmachines bouwde, in dit geval door een team van vier medewerkers. Bij de opzet van de MIER werd uitgegaan van de eerdere ervaringen op het Physisch Laboratorium TNO die met digitale technieken voor rekenschakelingen waren opgedaan.

De MIER werd uitgevoerd met de eerste geïntegreerde schakelingen van de fabrikant Texas Instruments. Deze geïntegreerde schakelingen hadden een flat package uitvoering, waarbij specifieke technieken voor de montage werden gebruikt. Het ringkerngeheugen van 4096×20 bits werd apart aangeschaft. De elektronische besturing van het geheugen werd in eigen beheer ontwikkeld. De programma-invoer voor de MIER werd of manuaal met schakelaars op het bedieningspaneel of met een ponsbandlezer gedaan.

De MIER was een computer voor real-time procesbesturing met een zeer beperkte instructieverzameling, die voldeed voor de real-time aansturing die voor ogen stond. Met de kennis van nu (2019) zou volgens de ontwerper het acroniem ‘MIER’ beter kunnen staan voor: Minimal Instruction set Electronische unit voor Real-time procesbesturing.

De MIER werd onder andere gebruikt bij de besturing van de Computer Assisted Inertialess Scanning System Array (CAISSA radar).

Bedieningsconsole van de Micro Elektronische Rekenmachine (MIER)
Bedieningsconsole van de Micro Elektronische Rekenmachine (MIER)

Globale opbouw en werking van de MIER

Informatie wordt via Read Amplifiers (RA) uit het uit het geheugen M (Memory) gehaald en weggeschreven in het Memory Register (MR). Informatie dat naar het geheugen moet, wordt eerst in het MR geplaatst en vervolgens via Write Amplifiers (WA) in het geheugen weggeschreven. Het MR heeft hierbij de functie van bufferregister.
Het lezen van informatie uit het geheugen naar MR wordt steeds gevolgd door het weer terugzetten van de inhoud van het MR naar dezelfde geheugenplaats. Afhankelijk van de soort instructie kan de inhoud van MR voor het terugzetten echter worden gewijzigd. Het uitlezen en terugplaatsen naar het geheugen wordt in één geheugencyclus uitgevoerd.

Het Memory Address Register (MAR) bepaalt het adres van de geheugenplaats die wordt gelezen. De uitgangen van het MAR zijn daartoe verbonden met decoderingsmatrices. Het MAR is 13 bits breed. Hiermee zijn in principe 8192 (213) geheugenadressen te selecteren. De MIER is echter uitgevoerd met een geheugen met 4096 woorden die door de laatste 12 bits geadresseerd worden.
De woordbreedte van het geheugen (instructies of data) is 20 bits. Het least significant bit (LSB) van het woord is het parity bit.
Bij het schrijven van informatie (19 bits) wordt het parity bit gegenereerd. Is het aantal bits met waarde 1 een even getal, dan wordt de parity op een gezet. Is het aantal bits met waarde 1 oneven, dan wordt de parity nul. Na het lezen van een woord uit het geheugen naar het MR wordt met een PArity Check (PAC) schakeling gecontroleerd of het totaal aantal bits met waarde 1 in het woord van 20 bits oneven is. Zo niet, dan is er een leesfout opgetreden. Verdere verwerking stopt met de oplichtende indicatie “parity fault” op het bedieningspaneel.

Is het gelezen woord een instructie, dan wordt deze in het Memory Register (MR) gezet. Het adresgedeelte wordt overgebracht naar het Data Address Register (DAR) en het instructiegedeelte naar het Instruction Register (IR). De beide registers vormen samen met het Modification Register (MOR), Program Address Register (PAR), Memory Address Register (MAR) en de schakeling AU2 (Adding Unit 2) het besturingsgedeelte van de MIER.
Is het gelezen woord geen instructie, dan wordt deze na in het MR gezet te zijn, gekopieerd naar een van de data registers Accumulator (AC), Multiplier/Quotient (MQ), Input/Output Adres register (IAO), Input/Output Data register (IAD) en de schakeling AU1 (Adding Unit 1). Ook kan deze waarde naar één van de Flip-Flops (FF) of naar het Modificatie Register (MR) worden gekopieerd.

Iedere instructie heeft een schakel- en rekenperiode van tien schakeltijden van 0.5 µsec (minor clock cycle). Bij de verwerking van de instructies voor vermenigvuldigen, delen en schuiven zijn overigens meer dan tien schakeltijden nodig.

Aan een woord was niet te zien of het een instructie- of data-woord was. Het systeem veronderstelde dat op de adressen die het programma afliep steeds instructies stonden. In een instructie kon het adres van een ander woord worden aangegeven. Met de inhoud van zo’n woord kon bijvoorbeeld een handeling worden verricht.

Een instructiewoord is samengesteld uit een 13-bits adresdeel (bits 1 tot en met 13) en een 6-bits instructiedeel (bits 14 tot en met 19). Die laatste groep bits worden overgenomen in het Instructie Register (IR). Het adresdeel wordt overgenomen in het Data Address Register (DAR). Wil een instructie zinvol uitgevoerd kunnen worden, dan zal in de schakelperiode nog een tweede geheugencyclus worden opgenomen waarin de te bewerken informatie uit het geheugen gelezen wordt. Pas daarna kan de rekenperiode gestart worden.

Bij data geeft bit 1 het teken aan: 0= positief, 1= negatief. De absolute waarde wordt gevormd door bits 2 tot en met 19.

De computercyclus werkte als volgt:

  1. Genereer het adres voor de eerstvolgende instructie
  2. Zet adres in MAR
  3. Lees het geheugen op het adres dat met het MAR wordt aangegeven
  4. Zet de instructie in het Memory Register (MR)
  5. Kopieer de instructie uit het MR naar het Instructie Register (IR)
  6. Kopieer adresdeel uit MR naar het Data Address Register (DAR)
  7. Zet de instructie uit het MR op de met MAR aangewezen plaats in het geheugen (herschrijf)
  8. Kopieer het adres uit het DAR naar het MAR
  9. Lees data vanaf het MAR-adres uit het geheugen
  10. Zet de data in het MR
  11. Zet de inhoud van het MR terug in geheugen op het MAR-adres (herschrijf)

Dit schema geldt voor iedere MIER instructie.

Het starten van een programma gebeurt met het opgeven van het startadres via de paneelschakelaars ‘Start Address Switches’ (STAS).

MIER instructierepertoire

 

Instructie Werking Instructiecode
Clear and add AC:= MR ADC   000 000
Clear and add absolute value AC:= MR AVC   000 001
Add AC:= AC + MR ADD  000 010
Add logical AC:= logic OR(AC, MR) ADL   000 011
Clear and subtract AC:= – MR SUC   000 100
Subtract AC:= AC – MR SUB    000 101
Multiply AC:= MQ * MR MLY   000 110
Multiply logical AC:= logic AND(MQ,  MR) MLL   000 111
Divide MQ:= AC / MR DIV    001 000
Transfer Unconditional Jump to DAR adres TUN   001 001
Transfer and
              Set Return Address
Store address+1 at DAR; next instruction is at DAR+1  TSR   001 010
Transfer to Return Address   TTR    001 011
Transfer if AC < 0 Jump to DAR if AC<0 TNE    001 100
Transfer if AC = 0 Jump to DAR if AC=0 TZE    001 101
Store AC AC to MAR address SAC    001 110
Load MQ AC:= MQ LMQ   001 111
Store MQ MQ:= AC SMQ  010 000
Load MOR MOR:= AC LMO  010 001
Store MOR AC:= MOR SMO  010 010
Shift AC + MQ bits left/right Shift AC and MQ content; least significant bit of AC becomes sign bit of MQ SHI   010 011
Load IOD internal (via DAR) MR to IOD LDI    010 100
Load IOD external (via IOA) MR to IOD LDE   010 101
Store IOD internal (via DAR) IOD to MR SDI    010 110
Store IOD external (via IOA) IOD to MR SDE   010 111
Load IOA MR to IOA LAD  011 000
Load IOD (address) MAR to IOD LAA  011 101
Input IC to IOD/IOA INP   011 010
Output IOD/IOA to IOC OUT  011 011
NOP (no operation)   NOP  011 100
Set Flag-flip-flop n Flag-flop-flop n:= 1 SFF  011 101
Reset FLAG-Flip-flop Flag flip-flop n:=0  RFF  011 110
Stop Stop the MIER STP  011 111
Address Modification
(indirect addressing)
instructions above with MAR:= DAR + MOR 1xx xxx

Ponsband

De 8-kanaals ponsband wordt gemaakt met een elektrische schrijfmachine die gekoppeld is aan de PROgramma ponsband Samensteller (PROSA). De PROSA-elektronica zet de schrijfmachinecode om in een code die de MIER kan lezen. De woordinhoud wordt verdeeld in groepen van drie bits: 1, 2-4, 5-7, 8-10, 11-13, 14-16 en 17-19.  Spoor 8 bevat het parity-bit (per teken). Zowel de ponsbandlezer als de -ponser was eigen bouw,. met name vanwege de van ASCII-afwijkende code die de MIER gebruikte.
Bij het inlezen van de tape wordt het parity-bit gebruikt om de lees-procedure te bewaken. Bij een oneven gelezen aantal bits (error) wordt het lezen van de tape gestopt.
Het controle-spoor (spoor 7) van de ponsband regelt de opslag in het geheugen van een instructie- of datawoord en of de tape volledig is ingelezen. Een First Address Block (FOB) codering wordt als eerste gelezen om de (start)plaats in het geheugen van het programma aan te geven. Hiermee is het mogelijk om meer tapes achtereenvolgens in te lezen en te laden.
Een ponsband kan ook alleen data bevatten. Om een dergelijke ponsband in te lezen bevindt zich reeds een vast programma in de MIER.

MIER ponsbandstructuur: FOB dat een startadres aangeeft
MIER ponsbandstructuur: FOB dat een startadres aangeeft

 

Vaste programma’s

De Mier heeft drie ingebouwde (hardware) programma’s. Daarnaast zijn met de ingebouwde Flip-Flop’s, Sense Switches en de Interrupt-besturing eigen programma’s uit te voeren:

  1. Hoofdprogramma
    Het starten van dit programma kan op de volgende wijze:

    • Met stand “CONTINUE” gaat het programma verder vanaf punt, waarop werd gestopt.
    • Met stand “REPEAT” herhaalt de bewerking, waarmee werd gestopt.
    • Met stand “PRESET” start met het adres dat door schakelaars is ingesteld (13 STAS schakelaars).

    Bij het in werking zijn van het hoofdprogramma brandt de signalering “COMPUTER”.
    Het stoppen van het hoofdprogramma kan op de volgende manieren:

    • Met de instructie “STOP”.
    • Met de schakelaar “SUC” (Stop ongeconditioneerd).
    • Met de schakelaar “SC” (Stop Conditioneel).
    • Met de schakelaar “READER” continu ingeschakeld.
    • Buiten de eigen capaciteit raken: signaal “OVERFLOW’. Met de schakelaar “OVERFLOW INHIBIT” wordt dit signaal onderdrukt. Schakelaar “OVERFLOW CLEAR” maakt de weg weer vrij.
    • Met onjuiste instructies, waarbij de pariteit niet correct is.
    • Met schakelaar “STEP” doorloopt de machine één schakeltijd (0.5 µsec).
  2. Tape-Reader programma.
    Is in actie bij signalering “READER”. Lezen start:

    • Bij het lezen van een “SET Flip-Flop (011 101)” instructie in het hoofdprogramma.
    • Na een actie met de schakelaar “READER”. Deze stopt ook het programma.
    • Met een stop “SUC” instructie. Het programma kan daarna worden voortgezet.
    • Het starten wordt ook met de schakelaar “start inschr/uitl” met de keuzeschakelaar in de stand “WRITE” uitgevoerd.
    • Met de schakelstanden “cont” of “cont.count” kan het lezen eveneens worden gestart.
  3. In- en uitleeshulpprogramma’s
    • Met de hand invoeren van het geheugenadres ( 13 STAS schakelaars) en data (19 DSR schakelaars) op het bedieningspaneel.
    • Een geheugenadres met STAS schakelaars ingesteld, naar het MR-register halen en zichtbaar maken.
    • De DSR schakelstanden in een register zetten.
  4. Besturing van specifieke schakelingen, de flip-flops, Sense Switches en de Interrupt Switch.
    • In een programma kunnen de waarden van de flip-flops en Sense Switch worden gezet in accumulator AC1. Vanuit deze accumulator kunnen vooraf bepaalde acties worden uitgevoerd.
    • Door het zetten van een flip-flop bijvoorbeeld vanuit een meetsysteem wordt een programma onderbroken of als deze flip-flop op het bedieningspaneel van de MIER is ingesteld.
      Er wordt dan een subroutine uitgevoerd. Na afloop wordt het onderbroken programma voortgezet.

 

Bron

Ir. J.J.A. Vogel, Handleiding voor gebruikers van de MIER (1972)