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



Relevanta dokument
Institutionen för elektro- och informationsteknologi, LTH

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

Datorsystemteknik DVG A03 Föreläsning 3

Datorsystemteknik DAV A14 Föreläsning 1

Datorsystemteknik DAV A14 Föreläsning 1

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

HF0010. Introduktionskurs i datateknik 1,5 hp

Snabbslumpade uppgifter från flera moment.

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

DOP-matematik Copyright Tord Persson. Bråktal Läs av vilka tal på tallinjen, som pilarna pekar på. Uppgift nr

F2 Datarepresentation talbaser, dataformat och teckenkodning

Lathund, procent med bråk, åk 8

Digital- och datorteknik

Grunderna i stegkodsprogrammering

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

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

Det finns en hemsida. Adressen är

IE1205 Digital Design: F6 : Digital aritmetik 2

Avsikt På ett lekfullt sätt färdighetsträna, utveckla elevers känsla för hur vårt talsystem är uppbyggt samt hitta mönster som uppkommer.

MIKRODATORTEKNIK 2012 INNEHÅLLSFÖRTECKNING

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

DE FYRA RÄKNESÄTTEN (SID. 11) MA1C: AVRUNDNING

Algebra, polynom & andragradsekvationer en pampig rubrik på ett annars relativt obetydligt dokument

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

Digital Aritmetik Unsigned Integers Signed Integers"

ATT KUNNA TILL. MA1050 Matte Grund Vuxenutbildningen Dennis Jonsson

Tentamen i Programmering grundkurs och Programmering C

Grundläggande datavetenskap, 4p

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

L(9/G)MA10 Kombinatorik och geometri Gruppövning 1

Praktisk programmering

Väga paket och jämföra priser

IE1204 Digital Design

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

F2 Binära tal EDA070 Datorer och datoranvändning

Vi skall skriva uppsats

Introduktion till programmering D0009E. Välkomna!

Stack och subrutiner Programmeringskonventionen

Idag: Dataabstraktion

Procent - procentenheter

Distribuerade Informationssystem VT-04

Föreläsning 1 & 2 INTRODUKTION

Grundläggande digitalteknik

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

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

Digital- och datorteknik

Programmera en NXT Robot

Från min. klass INGER BJÖRNELOO

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

4-3 Vinklar Namn: Inledning. Vad är en vinkel?

Menys webbaserade kurser manual för kursdeltagare. Utbildningsplattform: Fronter

Omvandla Vinklar. 1 Mattematiskt Tankesätt

a), c), e) och g) är olikheter. Av dem har c) och g) sanningsvärdet 1.

Upplägg och genomförande - kurs D

Kursplan i svenska. Därför tränar vi följande färdigheter under elevens skoltid i ämnet svenska: Tala, lyssna och samtala. År 1

Svenska Du kan med flyt läsa texter som handlar om saker du känner till. Du använder metoder som fungerar. Du kan förstå vad du läser.

Dash and Dot. Svårighetsgraden bestämmer du själv genom att välja någon av av de 5 appar som är kopplade till Dash & Dot.

Konsten att multiplicera (stora) heltal

Boken om Teknik. Boken om Teknik är en grundbok i Teknik för åk 4 6.

Sidor i boken , , 3, 5, 7, 11,13,17 19, 23. Ett andragradspolynom Ett tiogradspolynom Ett tredjegradspolynom

NATIONELLA MATEMATIKTÄVLING

Sundbybergs stad Skolundersökning 2015 Föräldrar förskola Fristående förskolor totalt Antal svar samtliga fristående förskolor: 360 (57 %)

Texturbild. Lagerpaletten du kommer arbeta med ser du till höger. 1. Kopiera bakgrunden till ett nytt lager och gör den svartvit.

F2 Datarepresentation talbaser, dataformat och teckenkodning

Modul 6: Integraler och tillämpningar

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Det är bra om även distriktsstyrelsen gör en presentation av sig själva på samma sätt som de andra.

Två konstiga klockor

Erfarenheter från ett pilotprojekt med barn i åldrarna 1 5 år och deras lärare

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

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)

Sundbybergs stad Skolundersökning 2015 Föräldrar förskola Stella Nova förskola

Datorsystemteknik D. Lösningar till tentamen i kursen EDA330 14/1 2000

Hävarmen. Peter Kock

4-6 Trianglar Namn:..

Skriva B gammalt nationellt prov

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

Utveckla arbetsmiljö och verksamhet genom samverkan

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

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.

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Lathund för pedagoger Grundskola med:

Handbok Blinken. Danny Allen Översättare: Stefan Asserhäll

Träning i bevisföring

De grundläggande logiska grindarna

Handledning för digitala verktyg Talsyntes och rättstavningsprogram. Vital, StavaRex och SpellRight

Institutionen för datavetenskap 2014/15

Att komma igång. Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program

Arbeta bäst där du är Dialect Unified Mi

Uppgift (poäng) 1 (2) 2 (3) 3 (4) 4 (4) 5 (3) 6 (4) 7 (6) 8 (6) 9 (8) Summa

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

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

Säkerhet. De onda. Vilka är farorna?

Hur du arbetar med VFU-portfölj i Mondo. en lathund för student

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

Boll-lek om normer. Nyckelord: likabehandling, hbt, normer/stereotyper, skolmiljö. Innehåll

Hur utvecklar man användbara system? Utvärdering. Användbarhet handlar om kvalitet. Utvärdering. Empiriska mätningar. Metoder

Digital- och datorteknik

Tillståndsmaskiner. 1 Konvertering mellan Mealy och Moore. Ola Dahl och Mattias Krysander Linköpings tekniska högskola, ISY, Datorteknik

Föreningen Nordens lokala hemsidor

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 1

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

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 3

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 4

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! 5

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! 6

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 7

Var finns inbyggda datorer? Kontorsdator Kontorsdator 8

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

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) 10

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) 11

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) 12

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 13

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. 14

MIPS-arkitekturen Generella register $0 $1 $2 $3... $30 $31 Programräknare PC 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) 15

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.) 16

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 17

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 18

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

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). 20

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! 21

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. 22

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 23

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) 24

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 25

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 26

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. 27

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 28

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 29

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