Hur implementera algoritmerna på maskinnivå - datorns byggstenar

Relevanta dokument
F2 Binära tal EDA070 Datorer och datoranvändning

DIGITALA TAL OCH BOOLESK ALGEBRA

IE1205 Digital Design: F6 : Digital aritmetik 2

Digital Aritmetik Unsigned Integers Signed Integers"

Mattias Wiggberg Collaboration

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

Block 2 Algebra och Diskret Matematik A. Följder, strängar och tal. Referenser. Inledning. 1. Följder

Logik och kontrollstrukturer

Utsagor (Propositioner) sammansatta utsagor sanningstabeller logisk ekvivalens predikat (öppna utsagor) kvantifierare Section

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

Digital- och datorteknik

Digital elektronik CL0090

Digital- och datorteknik

T1-modulen Lektionerna Radioamatörkurs OH6AG OH6AG. Bearbetning och översättning: Thomas Anderssén, OH6NT Heikki Lahtivirta, OH2LH

Sanningsvärdet av ett sammansatt påstående (sats, utsaga) beror av bindeord och sanningsvärden för ingående påståenden.

MATEMATIKENS SPRÅK. Avsnitt 1

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

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

Digital- och datorteknik

Datorsystemteknik DVG A03 Föreläsning 3

F5 Introduktion till digitalteknik

Kap. 7 Logik och boolesk algebra

Digital Design IE1204

Vad är det? Översikt. Innehåll. Vi behöver modeller!!! Kontinuerlig/diskret. Varför modeller??? Exempel. Statiska system

F2 Datarepresentation talbaser, dataformat och teckenkodning

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

p /\ q r DD1350 Logik för dataloger Kort repetition Fö 3 Satslogikens semantik

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

Tentamen i IE1204/5 Digital Design måndagen den 15/

Hambley avsnitt 12.7 (7.3 för den som vill läsa lite mer om grindar) sann 1 falsk 0

D0013E Introduktion till Digitalteknik

Språket Python - Del 1 Grundkurs i programmering med Python

Turingmaskinen - en abstrakt datormodell

Ett minneselements egenskaper. F10: Minneselement. Latch. SR-latch. Innehåll:

Data, typ, selektion, iteration

Tentamen i Grundläggande ellära och digitalteknik ETA 013 för D

729G11 Artificiell Intelligens Marcus Johansson Marjo581. Fuzzy logic. Marcus Johansson Marjo581

Talsystem Teori. Vad är talsystem? Av Johan Johansson

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

F5 Introduktion till digitalteknik

Logik. Boolesk algebra. Logik. Operationer. Boolesk algebra

Tentamen i IE1204/5 Digital Design onsdagen den 5/

MA 11. Hur starkt de binder. 2 Reella tal 3 Slutledning 4 Logik 5 Mängdlära 6-7 Talteori 8 Diofantiska ekvationer 9 Fördjupning och kryptografi

Laboration 6. A/D- och D/A-omvandling. Lunds universitet / Fakultet / Institution / Enhet / Dokument / Datum

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Logik. Dr. Johan Hagelbäck.

Formell logik Kapitel 3 och 4. Robin Stenwall Lunds universitet

Grundläggande Datorteknik Digital- och datorteknik

Föreläsningsanteckningar och övningar till logik mängdlära

Objektorienterad programmering D2

sanningsvärde, kallas utsagor. Exempel på utsagor från pass 1 är

Grundläggande logik och modellteori

i LabVIEW. Några programmeringstekniska grundbegrepp

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

Tentamen i Grundläggande ellära och digitalteknik ETA 013 för D

Tentamen i TDDC75 Diskreta strukturer , lösningsförslag

Digital- och datorteknik

Digital- och datorteknik

Digital- och datorteknik

Tentamen i Digital Design

Grundläggande digitalteknik

A B A B A B S S S S S F F S F S F S F F F F

5:2 Digitalteknik Boolesk algebra. Inledning OCH-funktionen

Lösningsförslag till tentamen i Digitalteknik, TSEA22

CS - Computer science. Datateknik Informationsbehandling Datalogi Datavetenskap (ÅA 2008)

Översikt, kursinnehåll

Grundläggande logik och modellteori

Explorativ övning 7 KOMPLEXA TAL

Tenta i Digitalteknik

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013

Övningshäfte 1: Logik och matematikens språk

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

Tema: Pythagoras sats. Linnéa Utterström & Malin Öberg

TATM79: Föreläsning 1 Notation, ekvationer, polynom och summor

Tentamen i Digitalteknik, EITF65

IE1204 Digital Design

Du har följande material: 1 Kopplingsdäck 2 LM339 4 komparatorer i vardera kapsel. ( ELFA art.nr datablad finns )

Övningar och datorlaborationer, Datorer i system

IE1205 Digital Design. F2 : Logiska Grindar och Kretsar, Boolesk Algebra. Fredrik Jonsson KTH/ICT/ES

LMA033/LMA515. Fredrik Lindgren. 4 september 2013

Introduktion till digitalteknik

PARITETSKONTROLL. Om generatorn i vidstående exempel avkänner ett jämt antal ettor ger den en nolla ut. Detta innebär att överföringen

Talrepresentation. Heltal, positiva heltal (eng. integers)

DIGITALTEKNIK I. Laboration DE1. Kombinatoriska nät och kretsar

Grundläggande logik och modellteori (5DV102)

Algebra och Diskret Matematik A (svenska)

Binär addition papper och penna metod

Lektion 8: Konstruktion av semantiska tablåer för PTL-formler

SMD033 Digitalteknik. Digitalteknik F1 bild 1

Objektorienterad programmering Föreläsning 4

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

Övningshäfte 6: 2. Alla formler är inte oberoende av varandra. Försök att härleda ett par av de formler du fann ur några av de övriga.

Switch. En switch har två lägen. Sluten/Till (Closed/On) Öppen/Från (Open/Off) Sluten. Öppen. Symbol. William Sandqvist

Tenta i Digitalteknik

2-13 Binära talsystemet Namn:

Digitalteknik och Datorarkitektur

Block 1 - Mängder och tal

Övningsblad 1.1 A. Tallinjer med positiva tal. 1 Skriv det tal som motsvaras av bokstaven på tallinjen.

Transkript:

Hur implementera algoritmerna på maskinnivå - datorns byggstenar Binära tal Boolesk logik grindar och kretsar A A extern representation intern representation minnet i datorn extern representation 1000001 Binärt talsystem är ett talsystem som har talbasen 2 och siffrorna 0 och 1. Det binära talsystemet är i princip lika lätt att använda som det decimala; grundidén är detsamma, men basen är 2 i stället för 10: Introduktion till Datateknik/cs5, A. Soini 1

binärt decimalt 0 0 1 1 10 2 11 3 100 4 101 5 110 6 111 7 1000 8 1001 9 1010 10 1011 11 1100 12 1101 13 1110 14 1111 15 Konstruktion: 31 10 = 3 * 10 1 + 1 * 10 0 11111 2 = 1 * 2 4 + 1 * 2 3 + 1 * 2 2 + 1 * 2 1 + 1 * 2 0 = 16 + 8 + 4 + 2 + 1 = 31 10 Konvertering: 31 10 = x 2? Dividera med 2, notera resten! Introduktion till Datateknik/cs5, A. Soini 2

division kvoten resten 31 div 2 15 1 15 div 2 7 1 7 div 2 3 1 3 div 2 1 1 1 div 2 0 1 Ex. 2.: 42 10 = x 2? division kvoten resten 42 div 2 21 0 21 div 2 10 1 10 div 2 5 0 5 div 2 2 1 2 div 2 1 0 1 div 2 0 1 Resultatet blir 101010 Kontroll: 1 * 2 5 + 0 * 2 4 + 1 * 2 3 + 0 * 2 2 + 1 * 2 1 + 0 * 2 0 = 32 + 0 + 8 + 0 + 2 + 0 = 42 10 Algoritmen för att konvertera en decimaldel är likadan, men nu multiplicerar man med två i stället för att dividera med två och noterar heltalsdelen. Positionerna efter s.k. radixpunkten motsvarar 2-1, 2-2, 2-3,... dvs. 1/2, 1/4, 1/8.... Vikten på positionen halveras i stället för att dubbleras. Att dividera med 1/2 är ju samma som att multiplicera med 2, därav ändringen i algoritmen. Ex. 5.25 10 = 101.01 2. 5 blir 101. 0.25 konverterar vi så här: 2 * 0.25 = 0.5. Skriv 0. 2 * 0.5 = 1.0. Skriv 1. Resultatet blev.01 (här skrivs bitarna efter radixpunkten i den ordning vi räknar ut dem - alla tal ger ju inte ens jämna resultat). Slutresultatet är alltså 101.01. Introduktion till Datateknik/cs5, A. Soini 3

Aritmetik med binära tal (operationerna utförs helt normalt): 1 11 + 1 10 -------- 1001 3 + 6 = 9 1 10 100 /////1-11 --------- 110 9-3 = 6 110 11 --------- 1110 110 ---------- 10010 3 6 = 18 10 11 110 6 / 3 = 2 11 ----- 0 0 0 ------- 0 Introduktion till Datateknik/cs5, A. Soini 4

För att kunna representera dessa ettor och nollor behöver vi binära lagringsmedier. Dylika bör uppfylla följande villkor: Ha två stabila energitillstånd som ska vara separerade av en kraftig energibarriär Tillståndet skall kunna avläsas utan att rubbas, och tillståndet skall kunna ändras. Ex. magnetiska kärnor, transistorer in (collector) bas (kontroll) vippan transistor ut (emitter) power supply (+5 v) 1 vippan stängs ON-tillstånd, binärt 1 0 5 mätinstrument Introduktion till Datateknik/cs5, A. Soini 5

power supply (+5 v) 0 vippan öppen OFF-tillstånd, binärt 0 0 5 mätinstrument Viktig terminologi: 0 eller 1 kallar vi för en bit. 8 bittar = 1 byte. enhet Hur många byte? Motsvarande mängd text Byte 2 0 byte = 1 byte ett tecken Kilobyte (KB) 2 10 byte = 1.024 byte en sida text Megabyte (MB) 2 20 byte = 1.048.578 byte två tre romaner Gigabyte (GB) 2 30 byte = 1.073.741.824 byte privatbibliotek Terabyte (TB) 2 40 byte = 1.099.511.627.776 byte universitetsbibliotek Petabyte (PB) 2 50 byte = 1.125.899.906.842.624 byte alla bibliotek i USA (Källa: Schneider & Gersting) Introduktion till Datateknik/cs5, A. Soini 6

Boolesk logik - tvåvärdeslogik med 0/1, false/true I boolesk logik arbetar vi enbart med två värden, true (T) och false (F), sant och falskt, 1 och 0. Ett booleskt uttryck är ett uttryck som endast kan anta någotdera av värdena T eller F. Booleska uttryck kan kombineras till större uttryck med de booleska operatorerna NOT, AND, OR. Resultatet av en boolesk operation kan uttryckas med en sanningstabell. Introduktion till Datateknik/cs5, A. Soini 7

NOT A (negation) (-A, A, ~A, A) A -A 0 1 1 0 Som du ser, kastar negationen om sanningsvärdet på inputen/påståendet A. A AND B (konjunktion) (A & B, A B, A B, AB) A B A & B 0 0 0 0 1 0 1 0 0 1 1 1 A och B blir sant endast när både A är sant och B är sant. A OR B (inklusiv disjunktion) (A B, A + B) A B A V B 0 0 0 0 1 1 1 0 1 1 1 1 A eller B blir falskt endast när både A är falskt och B är falskt. Introduktion till Datateknik/cs5, A. Soini 8

Grindar (gates) En grind är en elektronisk entitet som transformerar ett antal binära inputvärden till ett outputvärde. De tre grundläggande grindarna motsvarar de tre booleska operatorerna. AND-grind: A B A & B A B A & B 0 0 0 0 1 0 1 0 0 1 1 1 OR-grind: A B A V B A B A V B 0 0 0 0 1 1 1 0 1 1 1 1 Introduktion till Datateknik/cs5, A. Soini 9

NOT-grind: A -A (Egentligen ska bollen efter triangeln vara ofärgad, men det lyckas inte med detta ritprogram...) A -A 0 1 1 0 NOT - gränd: power supply (+5 v) resistor output input roskis Här har vi output bakom en resistor. Om input är 0 (som i bilden ovan), övervinns resistorn och den registrerade outputen blir 1. Om input är 1, stängs vippan, och basströmmen far direkt till roskisen. Den registrerade inputen bakom resistorn blir 0. Introduktion till Datateknik/cs5, A. Soini 10

AND-grind: A B A & B A B A & B 0 0 0 0 1 0 1 0 0 1 1 1 power supply input-1 input-2 output Här är båda inputs 0, så vipporna är öppna och outputen blir 0. Bara i det fallet att båda inputs blir 1, stängs båda vipporna, strömmen flyter genom och den registrerade outputen blir 1. Introduktion till Datateknik/cs5, A. Soini 11

OR-grind: A B A V B A B A V B 0 0 0 0 1 1 1 0 1 1 1 1 power supply input-1 input-2 output I bilden är båda inputs 0, så vipporna är öppna och den registrerade outputen blir 0. Så fort en av de parallella inputs blir 1, strängs vippan ifråga, och strömmen kommer genom, outputen registreras som 1. Introduktion till Datateknik/cs5, A. Soini 12

Kretskonstruktion En krets är en samling grindar, som transformerar en mängd av binära inputvärden till en annan mängd av outputvärden, och där outputvärdena entydigt bestäms av den aktuella kombinationen av inputvärden. input-1 input-2 input-3... input-m m inputs Krets C output-1 output-2 output-3... output-n n outputs Exempel: Tänk på hur kretsen fungerar (vad outputs c och d blir) för olika inputs a och b! a c d b Introduktion till Datateknik/cs5, A. Soini 13

a 1 1 1 c b 0 1 1 1 0 d En algoritm för konstruktion av kretsar: Det finns ett helt automatiskt sätt att, givet det önskade beteendet för en krets, konstruera den. (Kretsen blir sällan optimal, så rekommenderas det att använda lite logik och matematik i stället för eller efter automatiken...) Summan av produkterna -algoritmen: 1. Konstruera en sanningstabell för kretsens önskade beteende (sätt med alla kombinationerna för inputs, 2 n för n inputs, och en separat kolumn för varje output. Varje output betraktas sedan separat. 2. Betrakta de kombinationer som ger en 1 i den aktuella output-kolumnen (resultatkolumnen), dvs. varje rad som gör uttrycket sant. Konstruera ett deluttryck för varje sådan rad med AND- och NOTgrindar. 3. Kombinera dessa deluttryck med OR-grindar. 4. Rita upp det motsvarande kretsdiagrammet (gärna optimera, om det går!). Introduktion till Datateknik/cs5, A. Soini 14

Inputs Outputs a b c output-1 output-2 0 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 1 1 0 1 1 0 0 0 0 1 0 1 0 0 1 1 0 1 1 1 1 1 0 0 För 3 st. inputs får vi 2 3 rader i tabellen, dvs. 8 olika kombinationer av sanningsvärden. Logikerna kallar dessa för möjliga världar. Det lönar sig att ordna dessa som binära tal, dvs. 000, 001, 010, 011,..., även om ordningen ur logisk synpunkt inte spelar någon roll. Med tanke på samarbete och korrigering rekommenderas dock detta förfarande!!! De önskade output-kolumnerna ges då av uppdragsgivaren - vår uppgift är att se när den önskade outputen ska vara sann (1), och konstruera ett logiskt uttryck som beskriver just denna situation. Ex. output-1 ovan: Vi har en 1 på tredje och sjunde raden, dvs. kombinationerna 010 och 110. Detta ger oss uttrycken -a & b & -c respektive a & b & -c. Nu ska dessa kombineras med OR emellan: -a & b & -c V a & b & -c Man får använda parenteser för att klargöra uttrycket: (-a & b & -c) V (a & b & -c). Detta är dock frivilligt; operatorprioriteten (först NOT, sedan AND, sist OR) tar hand om den rätta tolkningen. Jämför med unärt - som negation, multiplikation, addition. Om vi nu ritar en bild för denna formel, får vi följande krets: Introduktion till Datateknik/cs5, A. Soini 15

Exempelkrets för output-1 (direkt enligt algoritmen): a -a -a & b -a & b & -c b c -c b -c out-1 a a & b -c a & b & -c b Som du ser, finns det en hel del att rita här. Och detta var bara output-1 - output-2 kan du rita som egen övning. Men - om vi lite vidare analyserar resultatformeln -a & b & -c V a & b & -c... så ser vi att b och -c krävs i båda alternativen. a:s värde däremot spelar ingen roll. Vi kan alltså reducera formeln till b & -c. Att detta är korrekt går enkelt att visa med en sanningstabell - om resultatkolumnen för båda uttrycken blir identiska, så är uttrycken ekvivalenta. (Detta går också att bevisa rent matematiskt, men det tas upp på andra kurser. Idén är följande: (-a & b) V (a & b) = b & (-a V a) = b & T = b.) Inputs Outputs a b c (-a & b & -c) V (a & b & -c) b & -c 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 1 1 1 1 1 0 0 Introduktion till Datateknik/cs5, A. Soini 16

Den motsvarande kretsen blir också MYCKET enklare att rita: a oanvänt b output-1 c En annan vink: om du har ex. 6 rader med 1 och bara 2 som ger 0, lönar det sig att konstruera ett uttryck för den situationen som producerar dessa 0:or - och sedan negera det! Resultatet blir då det uttryck som gör formeln sann (om du har räknat rätt...) EN CE-krets (Compare for Equality) - är bitarna a och b lika eller olika? a b output med kommentarer 0 0 1 fall 1 - samma bitar (0) 0 1 0 1 0 0 1 1 1 fall 2 - samma bitar (1) 1-CE krets a b Output Introduktion till Datateknik/cs5, A. Soini 17

För att jämföra två strängar bestående av n st bitar, har vi följande krets: a1 b1 1-CE a2 b2 1-CE a3 b3 1-CE a4 b4 1-CE...... an bn 1-CE output Introduktion till Datateknik/cs5, A. Soini 18

1-ADD - en krets för addition (av två binära bitar) inputs: outputs: a[i] b[i] c[i] 1-ADD s[i] (summasiffran) c[i-1] (nästa carry - minnessiffran) inputs outputs a[i] b[i] c[i] s[i] c[i-1] 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 Vi betraktar först bara den första outputen, s[i]: inputs outputs a[i] b[i] c[i] s[i] c[i-1] 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 Introduktion till Datateknik/cs5, A. Soini 19

Raderna 2, 3, 5 och 8 ger en 1 i dess resultatkolumn. Vi ska alltså konstruera ett uttryck för alla dessa fyra rader (med NOT och AND), och sedan kombinera dessa fyra uttryck med OR: -a & -b & c V -a & b & -c V a & -b & -c V a & b & c dvs. NOT a AND NOT b AND c OR NOT a AND b AND NOT c OR a AND NOT b AND NOT c OR a AND b AND c... vilket ger oss följande krets: a[i] fall 1: -a & -b & c b[i] c[i] -a -c fall 2: -a & b & -c b s[i] a fall 3: a & -b & -c b a c fall 4: a & b & c Introduktion till Datateknik/cs5, A. Soini 20

a -a b -b c -c 1-ADD summa s[i] carry c[i-1] inputs: a[i] b[i] c[i] Introduktion till Datateknik/cs5, A. Soini 21

Hur ska dessa 1-ADD-kretsarna kombineras för att addera n-bitar långa binära heltal (med samma princip som i algoritmen i början av kursen)? a[1]a[2]a[3]... a[n] + b[1]b[2]b[3]... b[n] s[0]s[1]s[2]s[3]... s[n] n-bit inputvärde b n-bit inputvärde a b 1 b 2 b 3... b n-1 b n a 1 a 2 a 3... a n-1 a n c 0 1-ADD 1-ADD 1-ADD c 1-ADD 1 c c 2...... c n-2 n-1 0 (init. carry) s 0 s 1 s 2... s n-1 s n (n+1)-bit outputvärde s Introduktion till Datateknik/cs5, A. Soini 22

Kontrollkretsar: multiplexor (MUX) och avkodare (decoder) 0 1 2 n inputlinjer 2 MUX 1 (en enda!) outputlinje 2 n -1 n selektorlinjer Exempel: är det värde a eller b som kopieras till outputen? inputlinje 0 a output inputlinje 1 b AND nr 1 selektorlinje AND nr 2 Introduktion till Datateknik/cs5, A. Soini 23

inputlinje-0 a a AND 1 = a inputlinje-1 b 0 1 AND nr 1 a OR 0 = a 0 selektorlinje : 0 AND nr 2 b AND 0 = 0 Väljer vi selektorvärde 0, så blir resultatet efter AND-nr-2 lika med 0. Denna 0 går som input till OR, vars output då enbart bestäms av resultatet från AND-nr-1, dvs. resultatet beror på inputlinje-0. Om a = 1, får vi 1 som output. Om a = 0, får vi 0 som output. Värdet på inputlinje-0 kopieras alltså som output. inputlinje-0 a a AND 0 = 0 inputlinje-1 b 1 0 AND nr 1 0 OR b = b AND nr 2 b AND 1 = b selektorlinje: 1 Väljer vi selektorvärde 1, så omvandlar NOT-grinden vid inputlinje-0 detta till 0. Denna 0 går till AND-nr-1, vars resultat således blir 0. Nu är det inputlinje 1 vars värde blir avgörande; det kopieras som output. Introduktion till Datateknik/cs5, A. Soini 24

Avkodare (decoder): n inputlinjer 0 1 2 avkodarkrets 0 1 2 2 n outputlinjer n-1 2 n -1 Introduktion till Datateknik/cs5, A. Soini 25