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

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

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:

Innehåll Datorteknik Föreläsning 1 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 Kursinformation, introduktion, aritmetik 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 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 Maskinvara 1

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@eitlthse Doris Glöck (kurssekreterare, registreringar, labbflyttning, etc): dorisglock@eitlthse Bertil Lindvall (labbchef): bertil@eitlthse Kontakta oss om du har frågor, eller behöver hjälp! 2

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? 3

Definition av ett datorsystem Programmerings på olika nivåer En generell logisk maskin vars funktion och beteende förändras genom att man förändrar dess program 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 Minne -RAM -ROM -PROM Processor Styrenhet ALU Register I/Oenheter 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) Adressbuss Databuss Processor Bitmönster i minnet 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 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) 4

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 12695389*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 Instruktionsuppsättning hos MIPS Generella register $0 $1 $2 $3 $30 $31 Programräknare PC Alla instruktioner är 32 bitar långa (1 ord) Olika klasser av instruktioner: Aritmetiska och logiska Minnesinstruktioner Programflödesinstruktioner (hopp) Modern arkitektur av risc-typ Mer än 100 miljoner sålda processorer MIPS har 32 register om vardera 32 bitar 5

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 fkr) 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 6

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

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 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 Overflow kan även uppträda vid subtraktion! 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) 8

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 Uppdaterad MIPS-arkitektur 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 Generella register $0 $1 $2 $3 $30 $31 Programräknare PC Specialregister HI LO Hur representeras reella tal? Flyttal 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) Normaliserade flyttal: tex 1,0 10 12 Ej normaliserat flyttal: 0,026 10 2 Normaliserat: 26 10 0 Inte ger vi upp så lätt Används flyttal blir det rätt 9

Normaliserat flyttal IEEE 754 Decimalt flyttal tecken Binärt flyttal tecken signifikand -6,234 10 23 bas signifikand -1011 2 011 bas exponent exponent tecken exponent 1 8 bitar 23 bitar signifikand 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 (10 + 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 Multiplikation 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 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 10