TSEA28 Datorteknik Y (och U)

Relevanta dokument
TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

Tentamen. Datorteknik Y, TSEA28

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

TSEA28 Datorteknik Y (och U)

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

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

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

HF0010. Introduktionskurs i datateknik 1,5 hp

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

Tentamen. Datorteknik Y, TSEA28

TSEA28 Datorteknik Y (och U)

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

TSEA28 Datorteknik Y (och U)

Vad är en dator? Introduktion till datorer och nätverk. Pontus Haglund Institutionen för datavetenskap (IDA) 21 augusti 2018

Föreläsning 2. Operativsystem och programmering

Grundläggande programmeringsteknik Datorsystem

Tentamen. Datorteknik Y, TSEA28

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

Datorsystemteknik DVGA03 Föreläsning 8

Jacquards vävstol, 1801

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

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)

Grundläggande datavetenskap, 4p

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

TSEA28 Datorteknik Y (och U)

Tentamen den 18 mars svar Datorteknik, EIT070

Datorsystemteknik DAV A14 Föreläsning 1

Processor pipelining genom historien (Intel i9-intel i7)

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

Tentamen. Datorteknik Y, TSEA28

IT för personligt arbete F5

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

Minnet. Minne. Minns Man Minnet? Aktivera Kursens mål: LV3 Fo7. RAM-minnen: ROM PROM FLASH RWM. Primärminnen Sekundärminne Blockminne. Ext 15.

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

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

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

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

Maskinorienterad Programmering IT2, LP2-2016/2017

Datorsystemteknik DAV A14 Föreläsning 1

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

TSEA28 Datorteknik Y (och U)

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

TSEA28 Datorteknik Y (och U)

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

Introduktion till programmering och Python Grundkurs i programmering med Python

Maskinorienterad Programmering LP3-2017/2018

Tentamen (Exempel) Datorteknik Y, TSEA28

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

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

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok.

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Institutionen för elektro- och informationsteknologi, LTH

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

TSEA28 Datorteknik Y (och U)

Digital- och datorteknik

Program som ska exekveras ligger i primärminnet. Processorn hämtar instruk7on för instruk7on. Varje instruk7on, som är e= antal 1:or och 0:or, tolkas

Tentamen (Exempel) Datorteknik Y, TSEA28

Maskinorienterad Programmering LP2-2017/2018

Tentamen (Exempel) Datorteknik Y, TSEA28

Digital- och datorteknik

Tentamen (Exempel) Datorteknik Y, TSEA28

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

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.

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

LV6 LV7. Aktivera Kursens mål:

Tentamen i Digitala system - EDI610 15hp varav denna tentamen 4,5hp

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

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

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

LABORATION. Datorteknik Y

TSEA28 Datorteknik Y (och U)

Pipelining i Intel 80486

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

TSEA28 Datorteknik Y (och U)

Datorsystem. Tentamen

Föreläsningsanteckningar 2. Mikroprogrammering I

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

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

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Digital- och datorteknik

Det finns en hemsida. Adressen är

Lösningar till tentamen i EIT070 Datorteknik

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

Datorarkitektur. Informationsteknologi sommarkurs 5p, Agenda. Slideset 3

Datorkonstruktion. Datorkonstruktion 2018, 8hp

Exempeltentamen Datorteknik, EIT070,

Introduktion till ARM Cortex-M4

Syfte. Praktisk datorkunskap. Personal. Kursinfo. Examination- Krav för godkänt. Agenda idag DVG A06

Datorsystemteknik för E/D

Transkript:

Vem är jag TSEA28 Datorteknik Y (och U) Föreläsning 1 Kent Palmkvist, ISY N B-huset 2:a våning Föreläsare och kursansvarig Ingång 25 Kent Palmkvist kentp@isy.liu.se Kontor 3B:502 (andra våning) Till E-huset 2 Dagens föreläsning Tillgänglighet till information Introduktion/motivation Administrativ information Historik Vad är en dator Litet exempel Ingång 27 Alla slides finns på kursens hemsida 3 http://www.isy.liu.se/edu/kurs/tsea28 Kursmaterial (förutom bok) även på kurshemsidan Anvisningar för kursen (deadlines etc) Labbmaterial Gamla tentor Material även från Andreas Ehliar, Lennar Bengtsson, Camilla Eidem, och Tomas Svensson Labanmälan via Lisam 4

5 Kursens mål Varför detta är intressant Förstå En programmeringsintresserad U:are 7 8 Förstå begränsningar hos olika datorer Hur en dator är uppbyggd och fungerar på registernivå En matematikintresserad Y:are Binär aritmetik Snabba upp beräkningsprogram/simuleringar Kunna En fysikintresserad Y:are Skriva små enkla assemblerprogram Använda sensorer för insamling av mätdata En elektronikintresserad student Hantera in/utmatning Nästan all elektronik innehåller en dator Implementera instruktioner m h a mikroprogrammering Det är roligt! Kursens mål, forts. Senare kurser Känna till För Y Principer för hur cache fungerar Elektronik kandidatprojekt Olika sätt att öka exekveringshastigheten Inbyggda DSP processorer Hur processorn påverkar operativsystemet Datorarkitektur Datorteknik ett datorsystem på ett chip För U Processprogrammering och operativsystem Kompilatorkonstruktion?

9 Fortsatt prestandautveckling? Aktuella trender inom datorstrukturer Miniatyrisering ger allt snabbare datorer Hårdvaran allt mer specialiserad Exponentiell prestandaökning Många parallellkopplade datorer Kryptering, videokodning/avkodning, DSP Ibland skapad genom att två datorer delar vissa bitar (inkl delar av processorn) Moores lag Fysiska begränsningar finns Mjukvaran måste anpassas till denna hårdvara Kräver god förståelse för datorteknik Klockfrekvensökningen har avklingat 10 Många prestandamått Beräkningshastighet Instruktioner/s Effektförbrukning Värmeutveckling ger krav på kylning Storlek Fler transistorer och längre ledare ger större kapacitans och större effektförbrukning Pris Administrativ information 11

13 Kursens innehåll Föreläsningar och lektioner Går VT1 + VT2 hp (3hp tenta, 3hp lab) Föreläsningarna bygger delvis på kursboken, men även annat material ingår 1 föreläsningar Lektioner för att hjälpa till med labbförberedelser 3 lektioner (2 under VT1) Se dom som frågestunder 5 laborationer (3 under VT1) Se till att vara förberedd innan lektion! 1 tentamen (4h) Läs igenom labbeskrivning och dokumentation innan lektion! Självstudier > 100h!! 15 Laborationsförberedelse ~ 12h per styck Varierar mellan studenter, vissa kan behöva mer! 14 Kurslitteratur Laborationer Computer Organization and Architecture Themes and Variations; Alan Clements Laborationsanvisningar (finns på kurshemsidan) Notering: Tidigare års kurslitteratur går att använda, men saknar många detaljer Grundläggande Datorteknik (Roos) Fem laborationer uppdelat på 2 x 2h (totalt 4h/lab) Kompendium i Datorteknik (Wiklund) Lab1: Kodlås (introduktion till assembler) Lab2: Avbrott Lab3: Digitalur Lab4: Mikroprogrammering Lab5: Bussar/Cache Laborationsgrupper 2 personer per grupp Max 30 personer i labbet 1

17 Laborationsanmälan Laborationslokal Elektronisk anmälan via Lisam Labbanmälningssystemet begränsar inte antal grupper! Max 1 grupper per gång (om alla maskiner fungerar...) Labbanmälan stänger dagen innan första labbtillfället Bara anmälda studenter får delta i laborationen Mail till kurslistan när anmälan kan börja göras Laborationsförberedelser Endast ingång från väster! Viktigt! Förberedelse inför laborationsuppgiften Läsa labbkompendiet och annat material Lösa uppgifter/skriva kod innan laborationstillfället Ingång 25 B-huset, 2:a våning, mellan ingång 25 och 27 Kontrollera att labbtillfället passar (schemats indelning endast en rekommendation) Ingång 27 Korridor C 18 Förändringar från tidigare år Ej förbered student kan tvingas lämna labblokal! Ny laborationshårdvara (ARM-baserad) för laboration 1-3 Kursboken fokuserar mer på ARM Liknande laborationsuppgifter som för gamla systemet Förra året användes 8000-systemet (tutor) Förhoppningsvis är referenser till tutor borta ur årets material Tenta/omtenta kommer under närmaste året kunna lösas med antingen ARM eller 8000 kod För dom som missat tentan tidigare 21 N B-huset 2:a våning Mux1 15 grupper per lab, 2 personer per grupp 22

23 Nya Laborationshårdvaran: Darma System med mikrokontroller baserad på Cortex-M4 processor Tillverkare: Texas Instruments (röda kortet och svarta kretsen) Processordesign: ARM Gröna kortet: Darma, lokalt LiU Instruktionsuppsättning annorlunda mot gamla 8000 (tutor) Lite datorhistoria Namn, typ, funktioner 24 Nya Laborationshårdvaran: Darma, forts. Processorkort (röda Ti Launchpad) tillgängligt för intresserade 150-200 kr Sök efter EK-TM4C123GXL site:.se för att hitta återförsäljare Ex 180110: mouser.se, 12 SEK, frakt 170 SEK! men fraktfritt för > 400 SEK => Köp 4 kort, betala bara 12 SEK/kort Fungerar på windows, mac, linux I laborationsuppgifterna används lite extra extern hårdvara 2 Lite datorhistoria Frakt + ev. tull kan kosta. Billigare gå ihop några stycken Mjukvaran laddas ned gratis från ti.com (kan kräva registrering på site) Analytic engine (1837, Charles Babbage) Ritningar men ingen fungerande maskin Ca 3 minuter för multiplikation av två 20-siffriga tal https://commons.wikimedia.org/wiki/file:babbage_difference_engine.jpg Z3 (1941, Konrad Zuse) Elektromekanisk (relä) 3 sekunder för multiplikation https://commons.wikimedia.org/wiki/file:z3_deutsches_museum.jpg

27 Lite datorhistoria, forts. Lite datorhistoria, forts. Eniac, 194 IBM PC, 1981 Radiorör, 150 kw effektförbrukning 5000 additioner/subtraktioner per sekund 1-bitars 8088 processor, 29000 transistorer 4.77 MHz klockfrekvens, max 40 KB RAM Intel 4004, 1971 2300 transistorer Första enchips mikroprocessorn 740 khz klockfrekvens (0.095 MIPS) 28 Lite datorhistoria, forts. 32-bitars RISC processor, 25000 transistorer Acorn Archimedes ARM Ltd startat av Apple och Acorn 1990 Superdator, vektormaskin, 80 MHz, 10 MIPS Apple II, 1977, resp. VIC20, 1981 (tidiga hemdatorer) 8-bitars 502 processor 1 MHz klockfrekvens, 3500 transistorer 48 Kbyte RAM minne (max) https://commons.wikimedia.org/wiki/file:acornarchimedeswiki.jpg#/media/file:acornarchimedes-wiki.jpg 30 Lite datorhistoria, forts. Cray-I, 1975 http://www.oldcomputers.net/ibm5150.html ARM, 1985 https://commons.wikimedia.org/wiki/file:legendary_chip_designer_betting_on_hu man_mind.jpg#/media/file:legendary_chip_designer_betting_on_human_mind.jpg 29 https://commons.wikimedia.org/wiki/file:imb_pcimg_7271.jpg#/media/file:imb_pc-img_7271.jpg https://commons.wikimedia.org/wiki/file:eniac_penn1.jpg#/media/file:eniac_penn1.jpg "Cray-1-p1010221" by Rama - Own work. Licensed under CC BY-SA 2.0 fr via Wikimedia Commons https://commons.wikimedia.org/wiki/file:cray-1-p1010221.jpg#/media/file:cray-1-p1010221.jpg AMD4, 2003 4-bitars 808 kompatibel 1 miljon transistorer 1 GHz klockfrekvens Intel Haswell (i3, i5, i7), 2013 https://commons.wikimedia.org/wiki/file:commodorevic-20-fl.jpg#/media/file:commodore-vic-20-fl.jpg Inklusive grafikprocessor, 1.4 miljarder transistorer, 3 GHz Intel Xeon, 2015 18 kärnor, 5.7 miljarder transistorer, 10W Effektutveckling blir en viktig begränsning för person-datorer runt år 2000

Lite datorhistoria, summering Hastigheten (instruktioner per sekund) ökar exponentiellt Priset går ned trots ökad prestanda Moores lag Antal transistorer på ett chip dubbleras vartannat år Generellt: prestanda ökar också exponentiellt Olika exponenter => differenser ökar också exponentiellt (t ex hastighet minne jämfört med cpu) 31 En programmerares vy av en dator Högnivåspråk Interpreterande (tolka kod under körning, t ex JAVA) Kompilerande (översätt innan körning till maskinkod, t ex C) Assemblerspråk Datorns egna interna språk Alla högnivåspråk måste översättas till detta Mikroprogrammering (inget en vanlig användare ser) Styrning av interna funktioner i datorns inre Översiktsbeskrivning av en dator Indata En dators inre uppbyggnad 33 Switchar, sensorer, kommunikationsmoduler Utdata lysdioder, reläer, video, etc. In och utdata i digital form (binära tal) Datorsystem Indata Buss Utdata Processor (CPU) Minne Data Buss Program 34

35 Översiktsbeskrivning av en dator, forts Typer av byggblock i processorn Minnet innehåller två typer av information Indata Buss Utdata Processor (CPU) Minne Data Buss Datavärden som sparas i datorn Program 3 Register Lagrar ett värde tillfälligt En eller flera bitars värde Större vektor av registervärden Minnescell väljs via adress Ibland samma buss för data in och data ut Styrsignaler väljer om data sparas eller läses Processorn läser instruktioner från minnet och utför dessa operationer på värden från indata och minne. En instruktion åt gången Resultat hamnar i minne och som utsignaler Datorsystem Utdata Processor (CPU) Minne Data Buss Data in 1234 578 Program Aritmetikenhet för enklare beräkningar Adress Data in A Addition, subtraktion, and, or etc. Data in B Resultat analyseras (addition ger nollresultat, minnessiffra från addition etc.) Y = f(a,b) Styrsignaler väljer vilken funktion som ska beräknas Data ut : Byggblock, forts. Buss Data ut Minne Översiktsbeskrivning av en dator, forts Indata Data in 1234 Instruktioner som beskriver vilka operationer som utföras Datorsystem 37 38 Resultat Y ALU Flaggor där f kan vara AND, OR, XOR, NOT, ADD,SUB,SHIFT,ROTATE, Flaggor anger egenskaper hos resultat, t ex =0, minnessiffra, etc.

Byggblock, forts. 39 Endast en källa aktiv åt gången Bussar Skickar vidare värden från ett block till många andra Hämta nästa instruktion från minnet Avkoda instruktionen, styr vilka värden som skickas vart, påverkas ibland av flaggorna värde Klocka styr hur ofta styrsignaler ändras Styrsignaler Styrenhet Flaggor : Klocka Exekvering av program kräver minst Programräknare (PC) Aritmetikenhet (ALU) Beräknar addition etc. Z: flagga = 1 om resultat = 0 In Adress Lagra mellanresultat Styrenhet (CU) Argument xxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4 Binärt data Två delar Vilken typ av operation (4 bit => 1 olika) Argument till operation (32 bit) I detta exempel: 3 bitars ord i minnet 32 Typkod Förklaring 0000 (0) 0001 (1) 0010 (2) Ladda in argument i D Addera argument till D Jämför argument med D, Z=1 om D=argument,Z=0 annars Sätt PC till argument om Z=0 Sätt PC till argument om Z=1 Sätt PC till argument om argument = 2000 skicka D till display om argument = 2100 hämta aktuellt displayvärde till D om argument = 2200 hämta sensorvärde till D, D=1 om någon står i dörren, D=0 annars 0011 (3) 0100 (4) 0101 (5) 0110 () 0110 () 0110 () 42 Svårt komma ihåg och läsa binärmönster Använd så kallade mnemonics istället Data PC CU ALU D 40 Typ Assemblerinstruktioner Minne Tillfälliga register (D) Håller reda på position för aktuell instruktion i programminnet Lagrad i en minnescell Instruktion 41 Maskininstruktionens utseende Styrenhet Z Ut Typkod Assemblerinstruktion Föklaring 0000 (0) 0001 (1) 0010 (2) 0011 (3) 0100 (4) 0101 (5) 0110 () 0110 () 0110 () load D,#värde add D,#värde comp D,#värde bne adress beq adress jump adress jsr 2100 Ladda in argument i D Addera argument till D Jämför D med argument, Z=1 om D=argument, Z=0 annars Sätt PC till argument om Z=0 Sätt PC till argument om Z=1 Sätt PC till argument om argument = 2000 skicka D till display om argument = 2100 hämta aktuellt displayvärde till D om argument = 2200 hämta sensorvärde till D, D=1 om någon står i dörren, D=0 annars

43 Litet exempel: Räkna studenter Sätt en sensor i dörren och en sifferdisplay En dator får räkna Y:are: ni vet hur man bygger detta med två räknare, 7segmentsavkodare, enpulsare etc. Detta byggsätt saknar flexibilitet när nya funktioner ska läggas till Första steget: definiera en algoritm Varje gång sensorvärdet ändras från 0 till 1 ska displayvärdet ökas med 1 Dela upp i steg Initiering när strömmen slås på Hitta sensorvärdesändring 0 till 1 Öka displayvärde Hitta sensorvärdesändring 1 till 0 Börja om att leta efter sensor=1 45 Implementering i exempeldatorn Jag vill räkna antal studenter som besöker mig på kontoret under en dag Nollställ displayvärde sensorvärde = 1 Öka displayvärde med 1 sensorvärde = 0 44 Adress Maskinkod Assemblerinstruktion Förklaring 0 1 2 3 4 5 7 8 9 10 11 load D,#0 comp D,#1 bne 2 jsr 2100 add D,#1 comp D,#0 bne 8 jump 2 ; Nollställ D ; sätt display till 00 ; Står någon i dörren? ; nej, gör om ; hämta displayvärdet ; öka displayvärdet ; visa det nya värdet ; Är dörren tom? ; nej, kontrollera igen ; börja om Nollställ displayvärde sensorvärde = 1 Öka displayvärde med 1 sensorvärde = 0 Implementering i exempeldatorn, forts. Adress Maskinkod Typ Arg. Assemblerinstruktion Förklaring 0 1 2 3 4 5 7 8 9 10 11 load D,#0 comp D,#1 bne 2 jsr 2100 add D,#1 comp D,#0 bne 8 jump 2 ; Nollställ D ; sätt display till 00 ; Står någon i dörren? ; nej, gör om ; hämta displayvärdet ; öka displayvärdet ; visa det nya värdet ; Är dörren tom? ; nej, kontrollera igen ; börja om 0 2 3 1 2 3 5 0 2000 2200 1 2 2100 1 2000 2200 0 8 2 Nollställ displayvärde sensorvärde = 1 Öka displayvärde med 1 sensorvärde = 0 4

47 Assembler Ytterligare funktion: fördröjning Översätter assemblerinstruktion till maskinkod Varje besökare kan ge flera pulser Skriv en textfil med assemblerinstruktioner Två ben, väska, kläder. Håller även reda på adresser Lösning: vänta en stund efter display räknat upp Ange bara symboliska namn på platser i programmet (kallas label) En loop i programmet som bara tar tid att utföra Adress Maskinkod Typ Arg. wait0: label comp D,#0 bne wait0 ; Är dörren tom? ; nej, kontrollera igen 8 9 10 2200 2 0 3 8 Assemblerversion av programmet Label Assemblerinstruktion Förklaring start: load D,#0 comp D,#1 bne wait1 jsr 2100 add D,#1 comp D,#0 bne wait0 jump wait1 ; Nollställ D ; sätt display till 00 ; Står någon i dörren? ; nej, gör om ; hämta displayvärdet ; öka displayvärdet ; visa det nya värdet ; Är dörren tom? ; nej, kontrollera igen ; börja om wait1: wait0: Nollställ displayvärde 48 Assemblerinstruktion Förklaring start: load D,#0 comp D,#1 bne wait1 jsr 2100 add D,#1 load D,#0 add D,#1 comp D,#10000 bne delay comp D,#0 bne wait0 jump wait1 ; Nollställ D ; sätt display till 00 ; Står någon i dörren? ; nej, gör om ; hämta displayvärdet ; öka displayvärdet ; visa det nya värdet ; starta timer på 0 ; öka timer med 1 ; lämpligt antal klockcykler? ; inte tillräckligt många varv ; Är dörren tom? ; nej, kontrollera igen ; börja om wait1: sensorvärde = 0 delay: wait0: 49 Nollställ displayvärde sensorvärde = 1 Öka displayvärde med 1 Vänta 0.5s sensorvärde = 0 Ytterligare funktion: fördröjning, forts. Label sensorvärde = 1 Öka displayvärde med 1 Nollställ displayvärde sensorvärde = 1 Öka displayvärde med 1 Vänta 0.5s sensorvärde = 0 50

51 Billigare system: Förenkla display 53 Skillnad mellan instruktionstyp 0 och 7 Enklare display => billigare system Viktig skillnad mellan instruktion 0 och 7 Ta bort möjlighet att läsa av värdet 0 load D,#värde t ex load D,#1 Placera värdet 1 i D Kan bara skriva värde => behöver lagra värdet i datorn också 7 load D,adress t ex load D,1 D-registrets värde förstörs när sensor läses, kan inte användas Läs adress 1 och placera dess värde i D. Två alternativ: Fler register eller lagring i minnet Motsvarande maskinkod (binärt) move D,#1 => 000000000000000000000000000000000001 move D,1 => 011100000000000000000000000000000001 En uppsättning operationer för varje register Lagra i minnet => Två nya instruktion för att läsa och skriva i minnet Instruktioner för läsa och skriva i minnet Lägg till instruktioner för att spara och hämta ett värde i minnet Kod Assemblerinstr. Förklaring 7 load D,adress Läs värdet på angiven adress i minnet och placera det i D 8 load adress,d Skriv värdet i D på angiven adress i minnet Minne D adress load D,adress Minne : adress load adress,d 52 Skillnad indikeras i detta fall med tecknet # framför argumentet Exempel med displayvärdet i minnet start: wait1: delay: wait0: : Dvs samma argument i maskinkoden, men olika innebörd pga olika operationstyp Välj adress som inte används till annat (t ex i exemplet: 100 ) D Fler register => fler operationstyper load D,#0 load 100,D comp D,#1 bne wait1 load D,100 add D,#1 load 100,D load D,#0 add D,#1 comp D,#10000 bne delay comp D,#0 bne wait0 jump wait1 ; Nollställ D ; spara displayvärde adress 100 ; sätt display till 00 ; Står någon i dörren? ; nej, gör om ; hämta displayvärdet ; öka displayvärdet ; visa det nya värdet ; spara nya värdet i minnet ; starta timer på 0 ; öka timer med 1 ; lämpligt antal klockcykler? ; inte tillräckligt många varv ; Är dörren tom? ; nej, kontrollera igen ; börja om Nollställ displayvärde sensorvärde = 1 Öka displayvärde med 1 Vänta 0.5s sensorvärde = 0 54

www.liu.se