Kort beskrivning av Sveriges första dator BESK

Relevanta dokument
Digital- och datorteknik

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

Datorsystemteknik DVG A03 Föreläsning 3

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

Grundläggande datavetenskap, 4p

F2 Datarepresentation talbaser, dataformat och teckenkodning EDAA05 Datorer i system! Roger Henriksson!

Datorhistorik. Föreläsning 3 Datorns hårdvara EDSAC. Eniac. I think there is a world market for maybe five computers. Thomas Watson, IBM, 1943

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

6. Ge korta beskrivningar av följande begrepp a) texteditor b) kompilator c) länkare d) interpretator e) korskompilator f) formatterare ( pretty-print

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

IT för personligt arbete F5

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

7 november 2014 Sida 1 / 21

Flyttal kan också hantera vanliga tal som både 16- och 32-bitars dataregister hanterar.

Digital elektronik CL0090

F2 Datarepresentation talbaser, dataformat och teckenkodning

CE_O3. Nios II. Inför lab nios2time

c a OP b Digitalteknik och Datorarkitektur 5hp ALU Design Principle 1 - Simplicity favors regularity add $15, $8, $11

F5: Högnivåprogrammering

F5: Högnivåprogrammering

I denna laboration undersöker vi hur aritmetiska beräkningar utförs. Vi tittar på olika variabeltyper: 8-bitars, 16-bitars, 32-bitars och flyttal.

Digital- och datorteknik

Grundläggande programmeringsteknik Datorsystem

Digital- och datorteknik

Grunderna i stegkodsprogrammering

Digital- och datorteknik

Introduktion till programmering och Python Grundkurs i programmering med Python

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

"Crash Course in Programming"

System S. Datorarkitektur - en inledning. Organisation av datorsystem: olika abstraktionsnivåer. den mest abstrakta synen på systemet

Digital- och datorteknik

ÖH kod. ( en variant av koden används i dag till butikernas streck-kod ) William Sandqvist

Föreläsning 2. Operativsystem och programmering

Berättelsen om AutoChemist Del 5: Utvecklat svar på intervjufråga 3, kapitel 3:2 Av: Ingmar Jungner

Tentamen. Datorteknik Y, TSEA28

Enkla datatyper minne

Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP.

Digital- och datorteknik

F2 Binära tal EDA070 Datorer och datoranvändning

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

HF0010. Introduktionskurs i datateknik 1,5 hp

Styrenheten styrsignalsekvenser programflödeskontroll

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok.

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Digital Aritmetik Unsigned Integers Signed Integers"

ENKEL Programmering 3

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga

Digital- och datorteknik

Struktur: Elektroteknik A. Digitalteknik 3p, vt 01. F1: Introduktion. Motivation och målsättning för kurserna i digital elektronik

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

Minnet. Minne. Minns Man Minnet? Aktivera Kursens mål: LV3 Fo7. RAM-minnen: ROM PROM FLASH RWM. Primärminnen Sekundärminne Blockminne. Ext 15.

Talsystem Teori. Vad är talsystem? Av Johan Johansson

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

IE1205 Digital Design: F6 : Digital aritmetik 2

Övningsuppgifter till föreläsning 2 Variabler och uttryck

Digital- och datorteknik

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Data, typ, selektion, iteration

520DP. Bordsräknare med utskrift Bruksanvisning

Turingmaskinen - en abstrakt datormodell

2-14 Binära talsystemet-fördjupning Namn:

520 DP. Bordsräknare med utskrift. Bruksanvisning

Inledande programmering med C# (1DV402) Introduktion till programmering

Dela, koda och korrigera! Undervisningsmaterial inom digital kompetens

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Lösningar till tentamen i EIT070 Datorteknik

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Programmering i maskinspråk (Maskinassemblering)

IE1204 Digital Design

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Inledning. Statistisk Programmering. UNIVAC 1107 (sextio- och sjuttiotal) Hålkorten. Att använda dator

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

Datorsystemteknik DAV A14 Föreläsning 1

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

TDDC77 Objektorienterad Programmering

Förenklad förklaring i anslutning till kompedieavsnitten 6.3 och 6.4

Programmering, dans och loopar

Datormetaforen. Från människa till dator Från dator till människa o.s.v.

Programmering i maskinspråk (Maskinassemblering)

Föreläsning 5: Kardinalitet. Funktioners tillväxt

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion.

JavaScript Block Editor:

Digital- och datorteknik

MIKRODATORTEKNIK 2012 INNEHÅLLSFÖRTECKNING

Datorsystemteknik DAVA14 Föreläsning 10

Ansvarig lärare: Olof Andersson, Telefon (besöker skrivsalen)

Mattias Wiggberg Collaboration

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

F1 Introduktion och ingenjörsrollen EDAA05 Datorer i system! Roger Henriksson!

Uppgift 1: a) u= a c + a bc+ ab d +b cd

Extramaterial till Matematik Y

Extramaterial till Matematik Y

Inledande programmering med C# (1DV402) 85/2=42. OBS! Heltal 1 (13)

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

LV6 LV7. Aktivera Kursens mål:

DIGITALA TAL OCH BOOLESK ALGEBRA

F1 Introduktion och ingenjörsrollen

Extramaterial till Matematik Y

Transkript:

Kort beskrivning av Sveriges första dator BESK Bo Einarsson MAI 10 januari 2005 Den första svenska egentliga datorn är BESK, vilket står för Binär Elektronisk SekvensKalkylator. Den var körklar den 6 november 1953 och togs i reguljär drift under februari 1954. Räknearbeten som tog en människa fem dagar tog på företrädaren BARK (Binär Automatisk ReläKalkylator) två timmar och på BESK endast en minut. BESK hjälpte till att spå väder, lösa hållfasthetsproblem åt Vattenfall, generera tabeller åt försäkringsbolag, undersöka vibrationer åt ASEA, osv. Dessa är uppgifter som fortfarande utförs av superdatorer, men när BESK var klar trodde man att dess kapacitet skulle räcka för Sveriges behov. 1

Tekniska data för BESK Primärminne (ferritminne): 1024 helord om 40 bitar, dvs 5 KiB Sekundärminne (trumminne): 8192 helord om 40 bitar, lagrade i 256 kanaler om 32 helord, dvs 40 KiB Talrepresentation: Binär med helord x i intervallet ½ Ü ½ Additionstid: 42 s Multiplikationstid: 350 s Divisionstid: 686 s Ungefärlig hastighet: 5000 FIOPS (FIOPS = fixpunktsoperationer per sekund) Ungefärlig hastighet: 250 FLOPS (FLOPS = flytpunktsoperationer per sekund) Jämförelse: Monolith vid NSC klarar 1 132 000 000 000 FLOPS eller drygt 1 TFLOPS (november 2002). IBM Blue Gene klarar drygt 70 TFLOPS (november 2004). 2

Inmatning: Pappersremsa 400 tecken (hexadecimala tal) i sekunden Utmatning: Pappersremsa 145 tecken i sekunden eller skrivmaskin 15 tecken i sekunden Anm: Under denna tid användes i Stockholm den korrekta benämningen sedecimala tal för vad som numera kallas hexadecimala tal. Notis: BESK och dess närmaste efterföljare SARA och FACIT EDB-3 hade alla den egenheten att ½µ ½µ blev ½, medan alla andra multiplikationer som ¼ µ ¼ µ ¼ ¾ blev korrekta. Notera att talet ½ inte var ett tillåtet normaliserat tal. 3

Programmering av BESK Programmering av BESK skedde helt hexadecimalt, både för operationer och adresser. Varken memotekniska namn på operationer ( ADD i stället för 10 ) eller namn på variabler fanns att tillgå. I ett helord med dess 40 bitar ryms 10 hexadecimala siffror. Man använder sig mycket av halvord om 20 bitar och således 5 hexadecimala siffror. De tre första användes för adressen, som går från 000 till 7FF (decimalt 2047), de två sista för operationen. Grundfomen för addition är 10, dessutom finns tre tilläggsformer enligt nedan: Ordern 15810 innebär att vänster halvord i position 158 adderas till ackumulatorregistret, med resultatet i ackumulatorregistret. Ordern 15830 innebär att helordet i position 158 adderas till ackumulatorregistret, med resultatet i ackumulatorregistret. Ordern 15850 innebär att vänster halvord i position 158 kopieras till ackumulatorregistret. Ordern 15870 innebär att helordet i position 158 kopieras till ackumulatorregistret. 4

Ordern 15970 uppfattas som ett fel, en udda address kan inte svara mot ett helord, maskinen stannar! Om man då trycker på start utförs operationen som en halvordsoperation, dvs 15950. Den mer eller mindre fiktiva adressen 800 utnyttjas som startpunkt för subrutiner, som systemet sedan lägger in på en lämplig adress. Exempel 1: Här kommer en programsnutt för att utföra beräkningen Ü Ý Þ. Talen finns i helorden med adress 100, 102 och 104, resultatet önskas i det helord som har adressen 180, nedan kallat cell 180. 10070 Ü till AR 10230 Ü Ý till AR 1042B Ü Ý Þ till AR 18031 Ü Ý Þ till cell 180 Exempel 2: Här kommer en programsnutt för att byta tecken på innehållet Ü i ackumulatorregistret. Vi kopierar först värdet till cell 106. 10631 Ü till cell 106 1066B Ü till AR 5

Wheeler-hopp Ibland är det önskvärt att i ett program bryta den vanliga sekventiella exekveringen och hoppa till ett annat ställe i programmet. Den vanliga hoppsatsen kan då användas; men ibland skall samma följd av instruktioner utföras flera gånger på olika ställen i programmet. Det är då olämpligt att behöva upprepa dessa satser. En möjlighet är då att använda sig av ett Wheeler-hopp. Antag att prgramavsnitten A och B skall utföras flera gånger. Det är då tillräckligt att att avsnitten finns vardera en gång i programmet, och att man hoppar till respektive avsnitt, men sedan måste man hoppa tillbaks till rätt ställe. Det är detta senare problem som Wheeler löst. David John Wheeler (1927-2004) utvecklade Wheeler Jump för att tillåta ett program att flytta exekveringen till en subrutin, en föregångare till goto satsen som är välkänd för alla som programmerat i Basic. Hans erfarenhet att skriva program för EDSAC i Cambridge från mars 1949 ledde Wheeler och hans kolleger Maurice Wilkes och Stanley Gill till att skriva den första boken om programmering: The Preparation of Programs for an Electronic Digital Computer, 1951. 6

Antag att man lämnar huvudprogrammet vid order n, där n är jämnt, och att b är startorder till subsekensen. Man skriver i huvudprogrammet rad order --- ------ n-1 n-1 50 n b 0C Order n-1 adderar högerhalvordet n-1 (där ordern själv står) till ackumulatorregistret efter dess nollställning. I detta register står då 00000 n-1 50 Här representerar n-1 de tre hexadecimala siffrorna i adressdelen. Härefter utföres hoppet b 0C, vilket ej påverkar ackumulatorregistret. 7

Första orderna i subsekvensen är rad order --- ------ b 001 10 b+1 u 07 I order b adderas talet 2 till adressdelen i ackumulatorregistret, som således blir 00000 n+1 50 Adressen u i nästa order anger platsen för den hopporder varifrån återhoppet sker, Order u är alltid udda. Order b+1 kommer alltså att sätta n+1 i adressdelen i order u. Återhoppet sker alltså till order n+1 i huvudprogrammet. 8

Flyttalsaritmetik på BESK Som tidigare nämnts är BESK konstruerad för fixpunktsaritmetik med alla tal mellan -1 och 1, nedre gränsen tillåten, övre gränsen ej tillåten. Programmeraren var därför tvungen att skala alla tal, om resultatet av en beräkning blev till beloppet mindre än 0,5 fanns risk för extra noggrannhetsförlust, om det blev till beloppet större än 1 inträffade spill, vilket fick åtgärdas med omnormalisering. För att förenkla användningen av BESK utvecklade Matematikmaskinnämnden under hösten 1957 FLINTA, ett interpretativt system för räkning med flytande binärpunkt (dvs flyttalsaritmetik). Flyttalen lagrades på ett sätt som ganska liknar IEEE 754, den normerade taldelen fanns i position 0-31 och en med det hexadecimala talet 80 (decimalt 128) förskjuten exponent i position 32-39. Den första positionen (0) är taldelens tecken, negativa taldelar representeras av sitt komplement. Talomfånget blev från ½ ½¼ via det minsta normaliserade ½ ½¼ till ½ ½¼. 9

Följande är citat ur skriften SNABBKODSSYSTEMET FLINTA: Operationerna tar relativt lång tid, de flesta tar mellan 1 och 3 millisekunder. Om Flinta användes för kodning av ett problem med lång maskintid kan det bli nödvändigt att koda lämpliga delar av programmet i vanlig maskinkod för att minska räknetiden. 10