Sovjetiske dataloger løste transistormangel med 3-talsmatematik

Illustration: Institute of Cybernetics of the National Academy of Sciences of Ukraine
Binært er ikke det eneste talsystem, der kan bruges i computere. Tidlige computere i Sovjetunionen eksperimenterede med et 3-talssystem og omvendt polsk notation.

En bit. 0 eller 1. Det er den helt fundamentale byggesten i computere, men det kunne være gået anderledes. Det binære talsystem er nemlig ikke den eneste måde, man kan designe en computer på.

Blogger Andrew Buntine har i et indlæg på Dev.to skrevet om de sovjetiske Setun-computere, som brugte et balanceret ternært talsystem. Altså en særlig variant af et tretalssystem.

Der er gode grunde til at bruge binære tal i computere, men det giver især mening, fordi de forskellige teknologier, der blev brugt i de første computere, var gode til at have to tilstande, eksempelvis tændt eller slukket. Det var både tilfældet for radiorør og for computere med transistorer og siden mikrochip. En enkelt 'kontakt' kunne derfor repræsentere en bit.

Men udviklingen af pålidelige transistorer skete i Vesten under den kolde krig i 1950'erne. I Sovjetunionen måtte datalogerne på daværende tidspunkt enten fortsætte med de upraktiske radiorør eller finde på nye måder at bygge computere på.

Det er her Setun-computerne kommer ind i billedet. De blev skabt af dataloger ved statsuniversitetet i Moskva i slutningen af 1950'erne og brugte ferritkerner sat sammen i par som hukommelse.

Arbejdede med heltal med mulighed for negative

Det mest interessante var dog, at de sovjetiske dataloger valgte at lade dette par ferritkerner repræsentere en 'trit', altså tre tilstande, i stedet for at lade de to kerner repræsentere to bit.

Årsagen var, at der ikke blot var tale om at bruge 3 som base i stedet for 2, men at talsystemet var balanceret, så de tre værdier for en trit var -1, 0 og +1.

Det betyder, at Setun-computeren arbejdede med heltal, hvor der allerede i talsystemet var indbygget mulighed for negative tal. En binær computer er nødt til at bruge en ekstra bit til at holde styr på fortegnet - signed og unsigned integers.

Det gør det også nemt at trække tal fra hinanden, da man kan vende fortegnet og blot foretage en addition med det negative tal. I det hele taget giver sådanne balancerede talsystemer en række interessante muligheder inden for talteori og diskret matematik. I sit blogindlæg angiver Andrew Buntine eksempelvis, hvordan afrunding af kommatal til nærmeste heltal kan opnås blot ved at droppe trits efter kommaet.

Setun-computerne endte som blot en kuriøs fodnote i datalogihistorien, men ikke før de sovjetiske dataloger i slutningen af 1960'erne konstruerede en version, der var konstrueret som en stack machine. Det er en type computer, der arbejder med én eller flere stakke i stedet for registre.

Det særlige ved programmering af en stack machine er, at man skriver operationerne i omvendt polsk notation. For dem, der har været forskånet for eller været så uheldige ikke at eje én af de klassiske HP-lommeregnere, så er omvendt polsk notation der, hvor man først skriver tallene og dernæst den matematiske operator. Eksempelvis '3 5 +' i stedet for '3 + 5'.

Havde det ikke været for jerntæppet og Vestens billige transistorer, kunne datalogien altså have været et fag, hvor vi talte om trits i stedet for bits og brugte omvendt polsk notation.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (6)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#1 Maciej Szeliga

...har mange fordele, man kan f.eks. spare en hel del paranteser med RPN og stakken er hukkommelse uden at der er brug for hukkommelse. Der er i øvtigt også et helt programmeringssprog til alm. computere som er baseret på stakke, det hedder FORTH.

  • 2
  • 0
#2 Torben Mogensen Blogger

Jeg har set et diagram over Setuns kredsløb til at gemme en trit, og det er en kun lidt forenklet udgave af et kredsløb til at gemme to bit, da hver trit blev repræsenteret som to bit, hvor muligheden 11 var udeladt. Det betyder også, at der brugtes to ledninger per trit i signalvejene, og kredsløb for addition m.m. var en del mere komplicerede end for binær aritmetik.

Fordelen var rent matematisk: Intervallet af heltal er symmetrisk omkring 0, hvor binær tokomplementrepræsentation har et mere negativt tal end positive tal. Aritmetisk negation var som nævnt også triviel, men da de øvrige aritmetiske operationer var mere komplicerede, var der ikke nogen samlet besparelse.

Jeg skrev i øvrigt om Setun i et gammelt blogindlæg (https://www.version2.dk/blog/underlige-cpuer-57212), hvor jeg dog kom til at kalde den for "Saturn" (hvilket blev rettet i en kommentar til indlægget).

  • 5
  • 0
#4 Finn Glamhøj

Ligger der ikke en fordel når man flytter data?(Antager at det ikke kun er CPU'en der arbejder i trits)

Det kan der som godt være, da det kun er nødvendigt med én ledning pr. trit, hvis man arbejde med f.eks. en +/-5V forsyning hvor -1=-5V, 0=0V og +1=+5V, eller med f.eks. én enkelt +5V forsyning således at -1=0V, +1=+5V og 0=åben (intet kredsløb).

Hvorvidt det var tilfældet med Setun ved jeg ikke, men det var øjensynligt ikke tilfældet jævnfør:

Det betyder også, at der brugtes to ledninger per trit i signalvejene

  • 0
  • 0
#5 Torben Mogensen Blogger

Ligger der ikke en fordel når man flytter data?(Antager at det ikke kun er CPU'en der arbejder i trits)

Lad os antage, at en ledning har tre mulige spændinger i stedet for to, sådan som Finn nævner det. For at kunne skelne data lige så godt som i det binære tilfælde, skal spændingsgabet mellem to værdier være det samme i begge tilfælde, så hvis det binære signal bruger 0V og nV, vil det ternære signal bruge 0V og +/-nV. Energien for at skifte mellem to spændinger er v²/t, hvor v er spændingsforskellen og t er den brugte tid. Hvis vi ser på et tilfældigt binært signal, så er der 50% chance for at spændingen er uændret og 50% chance for, at den skifter med v. Altså er energiforbruget per overført bit lig med v/2t. Ved det ternære signal, er der 1/3 chance for uændret spænding, 4/9 chance for en ændring på v og 2/9 for en ændring på 2v. Altså er energiforbruget per trit (4/9+4×2/9)v/t = 4v/3t. Der går log(3)/log(2) = 1.585 bits per trit, så energiforbruget per bit er (4/3)/1.585 v/t = 0.8412v/t.

Der bruges altså 42% mere energi per bit til at overføre et signal over en ledning med tre spændingsniveauer end over en ledning med to niveauer.

Hvis man bruger f.eks. to eller tre forskellige faser af lys til at sende information over en lysleder, kan det se anderledes ud, men jeg kender ikke matematikken bag dette.

  • 0
  • 0
#6 Finn Glamhøj

Der bruges altså 42% mere energi per bit til at overføre et signal over en ledning med tre spændingsniveauer end over en ledning med to niveauer.

Men man kan tilgengæld nøjes med færre ledninger til at overføre en given informationsmængde, hvilket kan være relevant, hvis de fysiske forhold sætter en begrænsning såsom at der f.eks. ikke er plads til et kabel med mere end et givent antal ledere.

Jeg skal gerne indrømme at jeg aldrig stødt på et kredsløb der var baseret på trit med +/- forsyning, men jeg har med en trit med et åbent kredsløb som tredje tilstand. (4 leder giver 81 forskellige værdier, hvor alle åbne indikere en fejl f.eks. at kablet ikke er forbundet, hvilket giver 80 reelle informationsværdier)

  • 0
  • 0
Log ind eller Opret konto for at kommentere