GRUNDLÄGGANDE DATORTEKNIK
Roger Johansson
Kopieringsförbud Detta verk är skyddat av upphovsrättslagen. Kopiering, utöver lärares och studenters begränsade rätt att kopiera för undervisningsändamål enligt Bonus Copyright Access kopieringsavtal är förbjuden. För information om avtalet hänvisas till utbildningsanordnarens huvudman eller Bonus Copyright Access . Vid utgivning av detta verk som e-bok, är e-boken kopieringsskyddad. Den som bryter mot lagen om upphovsrätt kan åtalas av a llmän åklagare och dömas till böter eller fängelse i upp till två år samt bli skyldig att erlägga ersättning till upphovsman eller rättsinnehavare. Studentlitteratur har både digital och traditionell bokutgivning. Studentlitteraturs trycksaker är miljöanpassade, både när det gäller papper och tryckprocess.
Art.nr 35808 ISBN 978-91-44-07650-8 Upplaga 1:1 © Författaren och Studentlitteratur 2016 www.studentlitteratur.se Studentlitteratur AB, Lund Omslagslayout: Francisco Ortega Omslagsbild: Shutterstock/Lukas Radavicius Printed by Interak, Poland 2016
Innehåll 1 Introduktion till datortekniken.................................... 7 1.1 Beskrivningsnivåer .............................................................................. 12 1.2 Kretsnivån, transistorn som omkopplare ............................................. 15 1.3 Analog kontra digital teknik ................................................................ 18 1.4 Program och specifikation ................................................................... 21
2 Binära koder och talomvandlingar ........................... 25 2.1 Talbaser och talvärden......................................................................... 25 2.2 Talomvandling .................................................................................... 28 2.3 Binärkodning ....................................................................................... 35 2.4 Binärkodade decimaltal (NBCD) ........................................................ 36
3 Switchnätalgebra ......................................................... 45 3.1 Boolesk algebra ................................................................................... 45 3.2 Karnaughminimering........................................................................... 58 3.3 Grindar för sammansatta logikfunktioner ........................................... 67 3.4 Reducering av kostnad för grindnät .................................................... 69
4 Binär aritmetik ............................................................ 75 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10
Aritmetik i det binära talsystemet ....................................................... 75 Aritmetik för NBCD-kodade tal .......................................................... 76 Teckenrepresentation........................................................................... 77 Tvåkomplementsrepresentation........................................................... 82 Flaggbitar ............................................................................................ 87 Subtraktion .......................................................................................... 93 Speciella operatorer ............................................................................. 96 Multiplikation .................................................................................... 107 Division ............................................................................................. 111 Flyttal .............................................................................................. 115
5 Kombinatoriska nät .................................................. 121 5.1 Kodomvandlare ................................................................................. 122 5.2 Omkodare .......................................................................................... 125 5.3 Väljare ............................................................................................... 126 5.4 Fördelare............................................................................................ 131 © FÖRFATTAREN OCH STUDENTLITTERATUR
5
Grundläggande datorteknik för högskolans ingenjörsutbildningar
5.5 5.6 5.7
Aritmetik ........................................................................................... 132 Skiftlogik ........................................................................................... 140 Högimpedanstillstånd (three state) .................................................... 142
6 Sekvensnät.................................................................. 145 6.1 6.2 6.3
Vippor................................................................................................ 146 Register.............................................................................................. 158 Tillståndsmaskiner och binärräknare ................................................. 161
7 Dataväg, ALU och minne ......................................... 173 7.1 7.2 7.3 7.4 7.5 7.6
8-bitars register med LOAD och OUTPUT ENABLE ...................... 173 Beskrivning med RTN....................................................................... 175 ALU-funktioner ................................................................................. 177 Användning av ALU och register ..................................................... 184 Flaggregistret ..................................................................................... 186 Minnet ............................................................................................... 189
8 Styrenheten ................................................................ 197 8.1 8.2 8.3 8.4 8.5 8.6
Det lagrade programmets princip ...................................................... 198 En automatisk styrenhet .................................................................... 199 FLIS-processorn ................................................................................ 203 FLISP:s fasta styrenhet...................................................................... 204 Implementering av instruktioner i den fasta styrenheten................... 217 Kontroll av programflöde .................................................................. 227
9 Assemblerprogrammering ....................................... 243 9.1 9.2 9.3 9.4
Enkla datatyper, lagringsklasser och synlighet ................................. 251 Programmeringsmodell ..................................................................... 253 Instruktionsuppsättning för FLIS-processorn .................................... 255 Styrning av programflöde .................................................................. 265
10 Datorsystemet .......................................................... 295 10.1 10.2 10.3 10.4 10.5
6
Undantagshantering ......................................................................... 295 Minnessystem .................................................................................. 302 Bussystem........................................................................................ 306 Adressavkodning ............................................................................. 308 Buss-kommunikation....................................................................... 317
© FÖRFATTAREN OCH STUDENTLITTERATUR
3
Switchnätalgebra
Digitaltekniken är grundläggande för datortekniken. Digitala kretsar används för att bygga de komplexa funktioner av logiknät som krävs exempelvis för en mikroprocessor. Grunderna för konstruktion av digitala kretsar utgörs av switchnätteori. Switchnät är en sammanfattande beteckning på nät uppbyggda av element som kan växla mellan två tillstånd. Switchnät kan vara strikt kombinatoriska, varvid utsignalerna beror enbart av insignalernas ögonblicksvärden. Kombinatoriska nät behandlas speciellt i kapitel 5. Switchnät kan också innehålla så kallade sekvensnät, som dessutom tillför en minnesfunktion. Sekvensnät behandlas i kapitel 6. Ideala switchelement har alltså bara två distinkta tillstånd, vilket inte alls är fallet i verklighetens komplexa nät. I själva verket kommer fysikaliska egenskaper hos elementen att medföra fördröjningar som kan leda till så kallade kapplöpningsvillkor, vilka gör att utsignalerna kan komma att bero av längden hos olika signalvägar i nätet. Men vi behandlar inte kretsnivån utanför illustrativa syften, varför våra switchelement, dvs. de CMOS-transistorer vi introducerade i kapitel 1, är att betrakta som ideala kretselement. Ideala kretselement med endast två olika tillstånd modelleras och analyseras enkelt med grundläggande matematisk satslogik. Ett påstående (en utsaga) kallas för en sats. Resultatet av en sats kan vara sant eller falskt (1 eller 0). Med hjälp av boolesk algebra kan vi avbilda våra kretselement på en matematisk modell, och tvärtom. I detta kapitel ger vi därför en introduktion till boolesk algebra och dess användning för analys och konstruktion av kretsar i digitala system.
3.1 Boolesk algebra Boolesk algebra har fått sitt namn efter den engelske matematikern George Boole (1815–1864) som 1854 presenterade denna algebra i boken An investigation of the laws of thought. Boolesk algebra var ursprungligen en satsalgebra som var avsedd att studera relationer mellan utsagor inom matematisk logik. År 1938 visade Claude E. Shannon (1916–2001) i verket Symbolic analysis © FÖRFATTAREN OCH STUDENTLITTERATUR
45
Grundläggande datorteknik för högskolans ingenjörsutbildningar
of relay and switching circuits, att boolesk algebra kunde användas för analys och syntes av switchnät. Denna form av boolesk algebra kallas switchnätalgebra (reläalgebra eller kontaktnätalgebra). Switchnätalgebran kom till användning på allvar under 1940-talet, då man började konstruera datorer uppbyggda kring logikkretsar i form av grindar. En boolesk variabel kan anta något av värdena 0 eller 1, medan algebran definierar endast tre olika grundläggande operationer: NOT, OR respektive AND. För att realisera, dvs. bygga upp, de grundläggande funktionerna används olika typer av komponenter med samlingsnamnet grindar. Olika grindar realiserar de olika grundläggande logikfunktionerna och komponenter som MOS-transistorer, introducerade i kapitel 1 används för att implementera (förverkliga) grindfunktionerna på kretsnivå. 3.1.1
Logisk invers
Låt x vara en boolesk variabel. Operationen ICKE (NOT) kallas för logisk invers och betecknas . Den utläses ”icke x” och kan också logiska inversen skrivas som den generella booleska funktionen:
x 0 1
1 0
där funktionsvärdet ges av sanningstabellen för ICKE-operationen. Den logikgrind som realiserar funktionen ”icke” kallas inverterare. Vi såg redan i kapitel 1 hur två MOStransistorer kan använLogiknivå, europeisk symbol das för att skapa denna grind. I figur 3.1 illustreras inverteraren med CMOS-teknik såväl som de symboler vi använder för funktionens grindnivå. Det finns två varianter som beskriver samma sak: den euroKretsnivå Logiknivå amerikansk symbol peiska standarden och FIGUR 3.1 LOGIKGRIND, INVERTERARE den amerikanska standarden. Beroende på litteraturens ursprung kan man alltså träffa på vilken som. Antalet transistorer som krävs på kretsnivå för att skapa logiknivån kallas allmänt för kostnad. I detta fall är alltså kostnaden två transistorer.
46
© FÖRFATTAREN OCH STUDENTLITTERATUR
Switchnätalgebra
3.1.2
Logisk summa
Låt x och y vara booleska variabler. Operationen ELLER (OR) kallas logisk summa och beteckas +. Den logiska summan x + y utläses ”x eller y” och kan också skrivas som den generella booleska funktionen: f(x,y) = x + y där funktionsvärdet ges enligt sanningstabellen logikgrind kallas ELLER-grind, (OR-grind).
x 0 0 1 1
y 0 1 0 1
f(x,y) = x + y 0 1 1 1
till höger. Motsvarande
Logiknivå, europeisk symbol
Kretsnivå FIGUR 3.2
3.1.3
Logiknivå amerikansk symbol
LOGIKGRIND, ELLER (LOGISK SUMMA)
Logisk produkt
Låt x och y vara booleska variabler. f(x,y) = x • y x y Operationen OCH (AND) kallas logisk pro0 0 0 dukt och betecknas •. Den logiska produkten 0 1 0 x • y utläses ”x och y” och kan också skrivas 1 0 0 som den generella booleska funktionen: 1 1 1 f(x,y) = x • y där funktionsvärdet ges enligt sanningstabellen för OCH-operationen. Motsvarande logikgrind kallas OCH-grind (AND-grind).
© FÖRFATTAREN OCH STUDENTLITTERATUR
47
Grundläggande datorteknik för högskolans ingenjörsutbildningar
Logiknivå, europeisk symbol
Kretsnivå FIGUR 3.3
3.1.4
Logiknivå amerikansk symbol
LOGIKGRIND, OCH (LOGISK PRODUKT)
Grundläggande räkneregler
Parenteser sätts ut för att styra evalueringsordningen. Då parenteser saknas gäller följande ordning: 1. NOT; inverser evalueras först 2. AND, logisk produkt 3. OR, logisk summa. För operationer på booleska variabler gäller nu följande teorem, som enkelt bevisas med sanningstabeller: Teorem 1 (T1), de kommutativa lagarna: De kommutativa lagarna innebär att det inte spelar någon roll i vilken ordning de ingående operanderna presenteras för operatorn. Konsekvenser av T1 är därför a) x + y = y + x b) x • y = y • x Teorem 2 (T2), de associativa lagarna: De associativa lagarna visar oss att evalueringsordningen i uttryck med operatorerna summa respektive produkt, är godtycklig: a) x + (y + z) = (x + y) + z b) x × (y × z) = (x × y)× z 48
© FÖRFATTAREN OCH STUDENTLITTERATUR
Switchnätalgebra
Teorem 3 (T3), de distributiva lagarna: De distributiva lagarna bestämmer evalueringsordning för de binära operatorerna summa och produkt, produktbildning (multiplikation) har högre prioritet än summabildning (addition). Konsekvenser är därför: a) x • (y + z) = (x • y) + (x • z) vilket inte är förvånande men dessutom det mer spektakulära: b) x + (y • z) = (x + y) • (x + z) Teorem 4 (T4), neutrala element: a) x + 0 = x b) x • 1 = x Teorem 5 (T5), komplementlagarna: a) 1 0 b) ∙ Som en följd av ovanstående får vi följande räkneregler: Regel
exempel x=0 0 1
x+x=x x•x=x 1 ∙ 0 x+1=1 x+0=x x•0=0 x•1=x
0 0 0 0 0 0 0 0
0 + • + • + + • •
0 0 1 1 1 0 0 1
0 = = = = = = = =
x=1 1 0 0 0 1 0 1 0 0 0
1 1 1 1 1 1 1 1
1 + • + • + + • •
1 1 0 0 1 0 0 1
1 = = = = = = = =
1 1 1 0 1 1 0 1
Ofta används förenklade skrivsätt. Precis som i vanlig algebra utelämnar man operatorn • för logisk produkt, om inget missförstånd kan uppstå, dvs. X • y = xy ICKE-operatorn skrivs också ”prim” dvs.: ′
© FÖRFATTAREN OCH STUDENTLITTERATUR
49
Grundläggande datorteknik för högskolans ingenjörsutbildningar
EXEMPEL 3.1
EVALUERINGSORDNING
Detaljera evalueringsordningen genom att sätta ut parenteser i följande uttryck: . Vi sätter först ut parentes kring inversen, därefter kring produkterna och får: Då uttrycket sedan evalueras gör vi precis som vanligt: börjar med den innersta parentesen osv.
Ett booleskt uttryck i n variabler kan vi beteckna: f(x0, x1,..., xn−1) Olika uttryck kan utgöra en och samma funktion. Två uttryck sägs vara ekvivalenta, om det ena uttrycket kan överföras i det andra med hjälp av postulaten och härledda teorem, dvs. algebraiska omskrivningar. Att två booleska uttryck är ekvivalenta kan också visas genom en fullständig binär evaluering.
EXEMPEL 3.2
EKVIVALENS HOS UTTRYCK
Visa att för de booleska variablerna x och y gäller: X + xy = x Lösning: De booleska uttrycken f och g är identiska om f = g för varje kombination av uttryckens variabler, dvs. sanningstabellerna för f och g är identiska. Beteckna vänstra ledet: f(x,y) = x + xy, och högra ledet: g(x,y) = x Vi har två variabler som kan anta värdena 0 och 1. Alltså behöver vi undersöka fyra fall: x 0 0 1 1
y 0 1 0 1
f=x+xy 0 0 1 1
g=x 0 0 1 1
dvs. f = g, vilket skulle visas. Vi kan visa samma sak algebraiskt: x + xy = x (1+y) = x
50
© FÖRFATTAREN OCH STUDENTLITTERATUR
Switchnätalgebra
3.1.5
de Morgans lag
de Morgans lag ger ett enkelt samband för övergång mellan OCH respektive ELLER-funktioner: (1 (2 Detta visas enklast med en sanningstabell där vi evaluerat de ingående uttrycken: x 0 0 1 1
y 0 1 0 1
1 0 0 0
1 0 0 0
1 1 1 0
1 1 1 0
de Morgans lag kan generaliseras och gäller för godtyckligt antal variabler, vilket inses av följande exempel.
EXEMPEL 3.3 Visa att Lösning: Sätt
, detta ger för högra ledet: (enligt de Morgans lag 1) (tillämpa samma lag igen) , dvs. vänstra ledet, vilket skulle visas.
3.1.6
N-ingångars grindar
De associativa lagarna ger bland annat (T2a): x + (y + z) = (x + y) + z = x + y + z dvs. evalueringsordningen är oväsentlig. Högra ledet motsvarar en treingångars ELLER-grind. Det gäller också att (T2b): x (yz) = (xy) z = xyz där högra ledet nu motsvarar en tre-ingångars OCH-grind, se figur 3.4.
© FÖRFATTAREN OCH STUDENTLITTERATUR
51
Grundläggande datorteknik för högskolans ingenjörsutbildningar
Logiknivå, europeisk symbol
Logiknivå amerikansk symbol Kretsnivå
Logiknivå, europeisk symbol
Logiknivå amerikansk symbol Kretsnivå FIGUR 3.4
3-INGÅNGARS ELLER/OCH GRINDAR
Antalet ingångar hos en grind kallas fan-in och är begränsat av den använda teknologin. På motsvarande sätt gäller att en grinds drivförmåga, fan-out, anger hur många ingångar till andra grindar som ansluts till grindens utgång.
52
© FÖRFATTAREN OCH STUDENTLITTERATUR
Switchnätalgebra
Vi kan alltså skapa grindar med fler än två ingångar. Vinsten kan vara stor, som man inser av följande exempel.
EXEMPEL 3.4 Implementera funktionen f(x,y,z,w) = x+y+z+w med minsta kostnad. Lösning: Med grindar för grundläggande funktioner får vi: f(x,y,z,w) = (x+y)+(z+w)
Kostnaden för en enstaka OR-grind är, som vi tidigare sett (figur 3.2), 6 transistorer. För denna koppling får vi därför totalt 18 transistorer. Eftersom evalueringsordningen är godtycklig kan vi i stället konstruera grinden:
som ger en kretsrealisering enligt figuren till höger. Antalet transistorer, dvs. kostnaden, är nu 10.
© FÖRFATTAREN OCH STUDENTLITTERATUR
53
Grundläggande datorteknik för högskolans ingenjörsutbildningar
3.1.7
Disjunktiv form och mintermer
En godtycklig funktion f (x0, x1,..., xn−1) kan skrivas som booleska uttryck på olika sätt Vissa former visar sig dock vara mer användbara än andra. Uttryck med formen summa av produkter (SOP-form) omfattar två nivåer av grindar, med en ELLER-grind som yttersta nivå. Varje ingång, term, hos grinden bildas i sin tur som en produkt, dvs. OCH-grind, på den första nivån. Endast variabler och deras inverser, kan då finnas hos OCH-grindarnas ingångar. Formen kallas också disjunktiv form.
FIGUR 3.5 DISJUNKTIV FORM "SUMMA AV PRODUKTER"
I praktiken visar det sig att inte alla funktioner kan byggas som grindnät med fysiska komponenter så här, på grund av begränsningar i fan-in. I detta material bortser vi dock från sådana begränsningar. En minterm är en speciell produkt i vilken varje variabel uppträder (eventuellt inverterad) exakt en gång. En funktion med n variabler har alltså 2n mintermer. För varje rad i funktionstabellen kan man därför ta fram en unik produkt av invariabler som ger funktionsvärdet 1. EXEMPEL 3.5
MINTERMER
En funktion såsom f(x,y,z), dvs. av tre variabler har 23 = 8 mintermer. Varje minterm är 1 för exakt en kombination av insignalvärden: minterm är 1 om: kortform xyz x=0,y=0,z=0 m0 För varje rad i funktionstabellen kan man ta fram en unik produkt av invariabler som ger 1 ×1 × 1 = xyz x=0,y=0,z=1 m1 1. xyz x=0,y=1,z=0 m2 En sådan produkt har alltså värdet 1 endast för xyz x=0,y=1,z=1 m3 den kombination av insignalvärden som xyz x=1,y=0,z=0 m4 motsvarar den aktuella raden. xyz x=1,y=0,z=1 m5 För alla andra insignalkombinationer har produkten värdet 0. xyz x=1,y=1,z=0 m6 xyz x=1,y=1,z=1 m7
54
© FÖRFATTAREN OCH STUDENTLITTERATUR
Roger Johansson är tekn. dr och universitetslektor i datorteknik vid Chalmers tekniska högskola, tillika programansvarig för civilingenjörsutbildningen i Datateknik vid Chalmers. Roger har mer än 25 års erfarenhet av undervisning och kursutveckling på akademisk nivå och har utvecklat flera interaktiva läromedel inom datorteknikområdet.
GRUNDLÄGGANDE DATORTEKNIK Grundläggande datorteknik ger en bred introduktion till en dators uppbyggnad, funktion och arbetssätt såväl som maskinnära programmering. I boken behandlas grundläggande digitalteknik, digitala kretsar för uppbyggnaden av en enkel dator och assembler programmering. Boken ingår i ett kursmaterial bestående av textbok, arbetsbok och simulatorer för praktiska övningar. Kursmaterialets ide och upplägg är baserat på erfarenheter av en längre tradition av läro medel som utvecklats på Chalmers tekniska högskola. Utgångs punkten är att en dator kan förstås bäst mot bakgrund av hur den är tänkt att användas, och den teknik som erbjuds för att låta den realiseras. Med kursmaterialets hjälp bygger därför eleven själv ständigt upp en enkel dator som avslutningsvis kan programmeras i assemblerspråk för enklare uppgifter. Inledningsvis ges en kortfattad introduktion till datortekniken. Grunder för digitaltekniken så som: binära koder, talomvand lingar, swithnätsalgebra och binär aritmetik lärs ut. Inom digi taltekniken behandlas såväl kombinatoriska nät som sekvensnät. Speciell tonvikt har lagts på komponenter för uppbyggnad av centralenhetens dataväg, aritmetik/logik enhet och styrenhet. Slutligen ges en introduktion till assemblerprogrammering och en översikt av andra systemkomponenter som minne och perife rikretsar. Boken vänder sig huvudsakligen till förstaårsstudenter vid univer sitet och teknisk högskola, och då utan att förutsätta några andra eftergymnasiala studier i ämnet. Omfattningen motsvarar 7,5 p studier på denna nivå. Art.nr 35808
www.studentlitteratur.se