Institutionen för elektro- och informationsteknologi, LTH

Relevanta dokument
Innehåll. Datorteknik. Abstraktionsnivå 1. Spelkonsol - blockschema. Spelkonsol abstraktionsnivå 2. Abstraktionsnivå 2

Datorsystemteknik DVG A03 Föreläsning 3

Datorteknik. Föreläsning 1. Kursinformation, introduktion, aritmetik. Institutionen för elektro- och informationsteknologi, LTH.

Datorsystemteknik DAV A14 Föreläsning 1

Datorsystemteknik DAV A14 Föreläsning 1

Digital- och datorteknik

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

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

MIKRODATORTEKNIK 2012 INNEHÅLLSFÖRTECKNING

IE1205 Digital Design: F6 : Digital aritmetik 2

F2 Binära tal EDA070 Datorer och datoranvändning

HF0010. Introduktionskurs i datateknik 1,5 hp

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

Digital Aritmetik Unsigned Integers Signed Integers"

Grundläggande datavetenskap, 4p

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

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

F2 Datarepresentation talbaser, dataformat och teckenkodning

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

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)

Datorsystemteknik DVGA03 Föreläsning 8

IE1204 Digital Design

Digital- och datorteknik

Moment 2 Digital elektronik. Föreläsning Inbyggda system, introduktion

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 2. Programmering i C och assembler MIPS instruktionsarkitektur. Institutionen för elektro- och informationsteknologi, LTH

Lösningar till tentamen i EIT070 Datorteknik

Datorteknik. Föreläsning 6. Processorns uppbyggnad, pipelining. Institutionen för elektro- och informationsteknologi, LTH. Mål

Föreläsning 1: Intro till kursen och programmering

Mål. Datorteknik. Innehåll. Vad händer med en add-instruktion? Vad händer med en add-instruktion. Instruktioner som bitmönster i minnet

0.1. INTRODUKTION Instruktionens opcode decodas till en språknivå som är förstålig för ALUn.

NUV 647E. Digitalteknik och Datorarkitektur 5hp. 3x12 = 36 2x12 = 24 1x12 = 12 0x12 = 18

Föreläsning 1: Intro till kursen och programmering

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

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

Digital- och datorteknik

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

DIGITALA TAL OCH BOOLESK ALGEBRA

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

Föreläsning 2. Operativsystem och programmering

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

Det finns en hemsida. Adressen är

Digital- och datorteknik

Datorsystem. Övningshäfte. Senast uppdaterad: 22 oktober 2012 Version 1.0d

Datorteknik. Tomas Nordström. Föreläsning 2. För utveckling av verksamhet, produkter och livskvalitet.

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

Jacquards vävstol, 1801

Datorteknik. Föreläsning 7 Historia och framtid. Institutionen för elektro- och informationsteknologi, LTH

Digital- och datorteknik

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

Grundläggande datorteknik

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

Talsystem Teori. Vad är talsystem? Av Johan Johansson

Binär addition papper och penna metod

Kursupplägg. Examination. Föreläsning 1: Intro till kursen och. Kursmaterial. programmering. Kursboken: Programmera med a multimedia approach

Lösningar till tentamen i EIT070 Datorteknik

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

Program kan beskrivas på olika abstrak3onsnivåer. Högnivåprogram: läsbart (för människor), hög abstrak3onsnivå, enkelt a> porta (fly>a 3ll en annan ar

Kort beskrivning av Sveriges första dator BESK

Talrepresentation. Ett tal kan representeras binärt på många sätt. De vanligaste taltyperna som skall representeras är:

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

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.

TSEA28 Datorteknik Y (och U)

Datoraritmetik. Binär addition papper och penna metod. Binär subtraktion papper och penna metod. Binär multiplikation papper och penna metod

Föreläsning 8: Aritmetik och stora heltal

Datorsystemteknik Föreläsning 7DAVA14

Tentamen PC-teknik 5 p

Stack och subrutiner Programmeringskonventionen

Maskinorienterad Programmering /2011. Maskinorienterad Programmering 2010/11. Maskinnära programmering C och assemblerspråk

Digital elektronik CL0090

Introduktion till programmering och Python Grundkurs i programmering med Python

DOP-matematik Copyright Tord Persson Övning Bråkräkning. Matematik 1. Uppgift nr 14 Addera 9. Uppgift nr 15 Addera 3. Uppgift nr 16 Subtrahera

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

Datorsystemteknik DAVA14 Föreläsning 10

Datorsystem. Tentamen

Datorarkitektur. Informationsteknologi sommarkurs 5p, Agenda. Slideset 3

TSEA28 Datorteknik Y (och U)

Grunderna i stegkodsprogrammering

TSEA28 Datorteknik Y (och U)

Grundläggande datavetenskap 4p

Introduktion till programmering

Datoraritmetik. Från labben. Från labben. Några exempel

Datorsystem. Tentamen

PASS 2. POTENSRÄKNING. 2.1 Definition av en potens

Digitalteknik och Datorarkitektur

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

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

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

Tentamen. Datorteknik Y, TSEA28

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

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

Moment 2 - Digital elektronik. Föreläsning 1 Binära tal och logiska grindar

Introduktion till programmering. Undervisning. Litteratur och examination. Lärare. Föreläsning 1

Intel Pentium. Intel khz. 32 million 2600MHz. Copyright 2005 Benny Thörnberg, Mattias O Nils

Kursplanering för Mikrodatorteknik 4p/5p

Maskinorienterad Programmering LP3-2017/2018

Polling (cyklisk avfrågning) Avbrott

Datormodell. Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden

Extra lab. Nu på fredag kl 8-12 Frivillig Enbart hjälp med projektuppgiften Ingen examination

Transkript:

Datorteknik Föreläsning 1 Kursinformation, introduktion, aritmetik

Innehåll Hur kan en dator se ut? Vilka är kursens mål? Hur är denna kurs upplagd? Hur ser ett datorsystem ut från applikation till hårdvara? Vilken är relationen mellan programvara och hårdvara? Exempeldatorn MIPS Datoraritmetik

Spelkonsol - blockschema

Abstraktionsnivå 1 En dator som består av Maskinvara Programvara In och ut-enheter Datorn ska kunna utföra vissa uppgifter

Spelkonsol abstraktionsnivå 2 Programvara Maskinvara

Abstraktionsnivå 2 Programvara (högnivå, assembler, maskinkod) Applikationsprogramvara (för funktionaliteten) Systemprogramvara (för att datorsystemet ska funka) Maskinvara Processor Minne (för program och data) I/O (In- och utenheter) kommunicerar med omvärlden

Vilka är kursens mål? Att du ska förstå hur ett datorsystem är uppbyggt Att du ska förstå samspelet mellan maskinvara och program Att du ska förstå maskinvarans uppbyggnad och varför instruktionsuppsättningen ser ut som den gör Att du ska kunna använda dina kunskaper på ett professionellt sätt vid design och programmering av datorsystem Att du ska få viss färdighet i assemblerprogrammering, eftersom detta är ett bra sätt att lära sig förstå datorn

Var används datorteknikens kunskaper? All datakommunikation (Internet, trådlös) Alla inbyggda system Alla VLSI-system och Systems on Chip Alla elektroniska produkter Alla informationssystem Alla styrsystem, kontrollrum, transport, logistik, etc. Teknikprodukter, bilar, flygplan, motorer, maskiner, etc. Viktigast: i vanlig programmering

Vart leder kursen vidare? Datorkommunikation, Internet Reglerteknik, Automation Realtidssystem Produktutveckling Sensorteknik VLSI Viktigast: vanlig programmering C: bas för datorkommunikation D: bas för produktnära kod och operativsystem E: elektronik och VLSI, system-on-a-chip, SocWare I: modern produkter som bilar, mobiltelefoner, etc.

Hur är kursen upplagd? Föreläsningar 7 stycken med start LP-vecka 1 Övningar 5 stycken med start LP-vecka 2 Labbar 4 stycken med start LP-vecka 3 Labbförberedelser Tenta!

Kursbok Mats Brorsson Datorsystem program och maskinvara eller Patterson & Hennessy Computer Organization and Design

Praktisk information Jan Eric Larsson (föreläsare, kursansvarig): janeric@eit.lth.se Doris Glöck (kurssekreterare, registreringar, labbflyttning, etc.): doris.glock@eit.lth.se Bertil Lindvall (labbchef): bertil@eit.lth.se Kontakta oss om du har frågor, eller behöver hjälp!

Vad kommer att krävas av dig? Godkända laborationer Godkänd tentamen Men framförallt att du vill lära dig själv Läs själv i boken och experimentera med labbsystemet på din dator!

Vilka olika datorsystem finns det? Väldig variation på datorsystem! Superdatorer (tex CRAY) Persondatorer (PC) avsedda för en användare Arbetsstationer Servers av olika slag Styr- och reglerdatorer av olika slag Störst marknad: Inbyggda datorer

Var finns inbyggda datorer?

Kontorsdator Kontorsdator

Inbyggd dator Inbyggd dator

Vilken krets är en dator? Kan detta vara en dator?

Definition av ett datorsystem En generell logisk maskin vars funktion och beteende förändras genom att man förändrar dess program.

Programmerings på olika nivåer Applikationer (tex Matlab, Webbrowsers etc.) Högnivåspråk (tex Java, C, C++, Pascal) Assemblerspråk (specifikt för varje processorarkitektur) Maskinspråk (binärkod för en specifik processor) Hårdvara (organisation av processor, instruktioner, minne och I/Oenheter)

Hårdvarans viktigaste komponenter Minne -RAM -ROM -PROM Processor Styrenhet ALU Register I/Oenheter Adressbuss Databuss

Minne RAM: Läs och skrivbart minne - (griffeltavla) ROM: Läsbart minne - (bok) PROM: Programmerbart minne för läsning - (bok med blanka sidor) EPROM: PROM som går att radera - (tvättbar bok) EEPROM: PROM som går enkelt att radera (whiteboard)

Processor Styrenheten: Hämtar och utför instruktioner från minnet ALU: Enhet som beräknar (aritmetiska och logiska operationer) Register: Plats för data. Processorn kan operera på data i registren.

Bitmönster i minnet Minnet är en följd av numrerade celler 0:01011001 1:11110000 2:01011000 3:11011100 osv binärt 0:59 1:F0 2:58 3:DC osv hexadecimalt På varje adress finns ett 8-bit bitmönster (byte)

Binärt till hexadecimalt Ofta skriver man binära bitmönster på hexadecimal form (för att öka läsbarheten) Binärt Hex 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 Binärt Hex 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F

Olika beteckningar på bitgrupper Byte = 8 bitar Ord = 32 bitar (på MIPS, beror på datorarkitektur) Nibble = 4 bitar Halfword = 16 bitar Ett ord (32 bitar) tar upp 4 konsekutiva adresser i minnet

Vad kan ordet (02114020) 16 betyda? Samma bitmönster kan betyda olika saker beroende på sammanhang 1) Heltal. (02114020) 16 är decimaltalet 16777216 2) Flyttal. (02114020) 16 är talet 1.2695389*10-119 3) Instruktion. För MIPS-arkitekturen innebär denna att addera innehållen i register 16 och 17 och lägga i register 8. 4) Tecken. (02114020) 16 är ^C^Q@<space>

Processoraktitektur Arkitekturen hos en processor är Instruktionsuppsättningen Format på data som instruktionerna manipulerar En arkitektur kan ha flera implementationer Intel Pentium Intel Pentium Pro Intel Pentium II, III, etc.

MIPS-arkitekturen Generella register $0 $1 $2 $3... Programräknare PC $30 $31 Modern arkitektur av risc-typ Mer än 100 miljoner sålda processorer MIPS har 32 register om vardera 32 bitar

Instruktionsuppsättning hos MIPS Alla instruktioner är 32 bitar långa (1 ord) Olika klasser av instruktioner: Aritmetiska och logiska Minnesinstruktioner Programflödesinstruktioner (hopp)

Enkla MIPS-instruktioner Aritmetiska instruktioner add $8, $9, $10 # addera innehåll i register addi $8, $9, 123 # addera med konstant sub $8, $9, $10 # subtrahera Minnesinstruktioner lw $8, 0($10) # hämta ord från minnet sw $8, 24($9) # lagra ord i minnet Lägg adress i register lui $10, 0x0800 # först de sexton högsta bitarna ori $10, $10, 0x2000 # sedan de sexton lägsta

Naturliga tal Olika talsystem: Vi använder oftast basen b=10 Andra exempel: Basen b=60 (Ur, Sumererna), eller b=20 (Mayaindianerna) Talet x=x i-1 *b (i-1) +x i-2 *b (i-2) + +x 1 b 1 +x 0 b 0 Ex: (313) 10 =3*10 2 +1*10 1 +3*10 0 Positionssystem - en av de stora upptäckterna! (Babylonierna, ca 2000 f.kr.)

Naturliga tal Euklides algoritm: D i =D i-1 /b (heltalsdivision) R i =D i-1 %b (resten efter heltalsdivision) D -1 = N (Det tal vi vill konvertera) Sluta i det steg då D k =0 N=(R k R k-1 R k-2...r 1 R 0 ) b

Datorer använder basen 2 Konversionen sker på följande sätt. Ex: (13) 10 D -1 =(13) 10 D 0 =13/ 2=6 R 0 =13 % 2 = 1 D 1 =6/ 2=3 R 1 =6 % 2 = 0 D 2 =3/ 2=1 R 2 =3 % 2 = 1 D 3 =1/ 2=0 R 3 =1 % 2 = 1 Alltså: (13) 10 =(1101) 2

N bitar ger begränsning Största talet = 2 n-1 + 2 n-2 + + 2 0 = 2 n -1 8 bitar (byte): 0<= x <=255 16 bitar: 0<= x <=65535 32 bitar: 0<= x <=4 294 967 295

Negativa tal Alla heltal är ju inte naturliga tal. Hur representas negativa tal? Det har funnits försök (1-komplement) med att låta biten längst till vänster vara teckenbit (1: neg. tal) Nackdelar: Två nollor, addition och subtraktion blir konstiga Den bästa representationen: 2-komplement

Talcirkeln Positiva heltal Positiva och negativa heltal 1111 0000 1110 1101 0 1 14 15 13 1100 12 11 1011 10 9 1010 8 7 1001 1000 0001 0010 2 6 3 4 5 0110 0111 0011 0100 0101 1111 0000 0001 1110 0010 0 1 1101-2 -1 2 0011 1100-3 -4 3 4 0100-5 5 1011-6 6 0101-7 -8 7 1010 0110 1001 1000 0111

Positiva och negativa tal Låt x vara det binära talet x med alla bitpositioner inverterade. Då består x+x av bara ettor! Alltså är x+x =-1 i 2-komplement Förenkla: -x=x +1

2-komplement exempel Hitta 2-komplementrepr av -x då x=18 i 6-bits repr. x = 010010 x = 101101 x +1 = 101110 = (-18) Tillbaka: 101110 -> 010001. 010001+1=010010 = 18

Fördelar med 2-komplement Entydig nolla Addition mm blir konsekvent Teckenbit längst till vänster Enkelt att förlänga ett tal till flera bitar: Ex: ett 8-bits tal förlängs till 32 genom att teckenbiten kopieras till de 24 nya positionerna till vänster. Detta kallas teckenförlängning (sign extension).

Addition och subtraktion Addera 17 och 13 i 6-bits 2-komp representation: 1 010001 + 001101 ------------ 011110 = 30 Vad händer om vi byter 13 mot 15 här?

Overflow Addera 17 och 15 i 6-bits 2-komp representation: 11111 010001 + 001111 ------------ 100000 = -32 Vi har fått Overflow. Hårdvaran kan kolla detta!

Overflow Subtrahera 13 från 17 i 6-bits 2-komp representation: 17-13 = 17 + (-13). -13 = 110010+1= 110011. 1 11 010001 + 110011 ------------ (1)000100 = 4 Overflow kan även uppträda vid subtraktion!

Overflow vid addition och subtraktion Overflow kan detekteras om : Addition: två positiva tal ger negativt resultat eller två negativa tal ger positivt resultat Subtraktion: Positivt-negativt-> negativt resultat eller negativtpositivt -> positivt resultat.

MIPS-instruktioner - addition add $8, $9, $10 # Addera 2-kompl talen i # register $9 och $10, lägg i $8 # Kollar overflow addi $8, $9, K # Addera konstant K till reg # $9, lägg i $8. Kollar overflow addu $8, $9, $10 # Addera positiva tal - kollar ej overflow

Subtraktion sub $8, $9, $10 # Subtrahera $9-$10, lägg i $8 # Kollar overflow subu $8, $9, $10 # Subtrahera positiva tal - # kollar ej overflow

Multiplikation och division Multiplikationsalgoritmen från småskolan: Multiplicera (101) 10 (multiplikand) med (110) 10 multiplikatorn (OBS! Basen 10) 101 *110 ------ 000 (0*multiplikanden) 101 (skifta vänster, 1* mult.) 101 (skifta vänster, 1*mult.) -------- 11110 (addera)

Multiplikation För binära tal kan det aldrig vara annat än 0 eller 1 i skiften! 101 *110 ------ 000 (0*multiplikanden) 101 (skifta vänster, 1* mult.) 101 (skifta vänster, 1*mult.) -------- 11110 (addera)

Multiplikation Multiplikation av binära tal består av en serie additioner och skiftningar! Kan göras relativt snabbt (men långsammare än addition )

Division Division är i allmänhet långsam men är relativt sällsynt Täljare Rest 0001001 1001010 1000-1000000 0001010-1000 10 Kvot Nämnare Nämnaren skiftad tre steg åt vänster Nämnaren skiftad noll steg

MIPS-instruktioner mult $8, $9 # Multiplicera innehållet i # register $8 med $9 och lägg # resultatet i specialregister HI och LO div $8, $9 # Dividera $8/$9, lägg kvoten # i LO och resten i HI

Uppdaterad MIPS-arkitektur Generella register $0 $1 $2 $3... $30 $31 Programräknare PC Specialregister HI LO

Hur representeras reella tal? 2,7182818. Lagförslag i Kansas: pi = 3! 6,02. 10 23 1,609. 10-19 Dessa tal kallas ofta för flyttal -- decimalkommat flyter i representationen. Motsats: fixpunktsrepresentation (används i snabba implementationer av tex bildkodningsalgoritmer).

Flyttal Normaliserade flyttal: t.ex. 1,0. 10 12 Ej normaliserat flyttal: 0,026. 10 2 Normaliserat: 2.6. 10 0 Inte ger vi upp så lätt. Används flyttal blir det rätt.

Normaliserat flyttal Decimalt flyttal tecken Binärt flyttal tecken signifikand -6,234 10 23 bas signifikand -1.011 2 011 bas exponent exponent

IEEE 754 tecken exponent signifikand 1 8 bitar 23 bitar Basen är underförstått lika med 2 Exponenten representeras i excess-127 Signifikanden är ett fixtal x, 0 x < 1 Värdet = (-1) tecken (1.0 + signifikand) 2 (exponent-127) En implicit etta i signifikanden ökar noggrannheten En exponent i excess-format tillåter jämförelser av två flyttal med heltalsinstruktioner

Addition/subtraktion av flyttal Algoritm: 1. Jämför de båda talens exponenter. Skifta det minsta talets signifikand (inkl. implicit etta) till höger så att de båda talens exponenter blir lika stora 2. Addera/subtrahera signifikanderna 3. Normalisera summan (skifta, ändra exponent) 4. Om det blir exponent overflow är det aritmetiskt fel 5. Avrunda signifikanden 6. Om avrundningen medför att talet blir onormaliserat, gå till steg 3

Multiplikation av flyttal Algoritm: 1. Addera exponenterna och dra ifrån en excess 2. Multiplicera signifikanderna 3. Normalisera produkten 4. Om det blir exponent overflow är det aritmetiskt fel 5. Avrunda signifikanden 6. Om avrundningen medför att talet blir onormaliserat, gå till steg 3 7. Beräkna produktens tecken

Sammanfattning Datorns byggstenar Kopplingen mellan program- och mjukvara Olika typer av datorsystem Vad representerar data? Processorarkitektur Aritmetik