LABORATION. Datorkonstruktion D

Relevanta dokument
LABORATION. Datorteknik Y

LABORATION. Datorteknik Y Datorkonstruktion D

LABORATION DATORTEKNIK Y,C,I DATORTEKNIK D

Föreläsningsanteckningar 2. Mikroprogrammering I

Tentamen. Datorteknik Y, TSEA28

Digital- och datorteknik

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

3. Mikroprogrammering II

Tentamen. Datorteknik Y, TSEA28

Mikroprogrammering I

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

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

Digital- och datorteknik

Tentamen. Datorteknik Y, TSEA28

Digital- och datorteknik

Föreläsningsanteckningar 3. Mikroprogrammering II

Digital- och datorteknik

Tentamen. Datorteknik Y, TSEA28

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

Tentamen. Datorteknik Y, TSEA28

Digital- och datorteknik

Tentamen Datorteknik D del 2, TSEA49

Digital- och datorteknik

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

Tentamen (Exempel) Datorteknik Y, TSEA28

Styrenheten 9/17/2011. Styrenheten - forts Arb s 120. LV4 Fo10. Aktivera Kursens mål: Kap 7 Blå

Omtentamen i CDT204 - Datorarkitektur

Tentamen (Exempel) Datorteknik Y, TSEA28

Datorsystemteknik DVGA03 Föreläsning 8

Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP.

CPU. Carry/Borrow IX. Programräknare

Digitala System: Datorteknik ERIK LARSSON

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

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

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

Datorarkitekturer med operativsystem ERIK LARSSON

TSEA28 Datorteknik Y (och U)

Tentamen Datorteknik Y, TSEA28 Datum

LABORATION DATORTEKNIK D. Pipelining. Namn och personnummer. Version: (OS,OVA,AN)

Programmering i maskinspråk (Maskinassemblering)

Laboration nr 3 behandlar

Tentamen (Exempel) Datorteknik Y, TSEA28

Programmering i maskinspråk (Maskinassemblering)

7) Beskriv tre sätt att överföra parametrar mellan huvudprogram och subrutin.

Tentamen Datorteknik Y, TSEA28 Datum

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

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

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

LV6 LV7. Aktivera Kursens mål:

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

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

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

Reducerad INSTRUKTIONSLISTA för FLIS-processorn

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

Närliggande allokering Datorteknik

Programexempel för FLEX

DatorsystemteknikDAVA14 Föreläsning 9

Villkorliga hopp: 9/26/2011. Dagens mål: Du ska kunna.. Villrorliga (Relativa) hopp - forts Arb s 140. LV5 Fo12. LV5 Fo12. Aktivera Kursens mål:

Styrenheten styrsignalsekvenser programflödeskontroll

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

Konstruera en dator mha grindar och programmera denna Använda en modern microcontroller

Digital- och datorteknik

Digital- och datorteknik

Ansvarig lärare: Olof Andersson, Telefon (besöker skrivsalen)

Digital- och datorteknik

Tentamen Datorteknik Y, TSEA28 Datum TER1 och TER2 Tid 14-18

CE_O3. Nios II. Inför lab nios2time

Grundläggande datavetenskap, 4p

TSEA28 Datorteknik Y (och U)

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

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

Tentamen (Exempel) Datorteknik Y, TSEA28

Tentamen Datorteknik Y, TSEA28 Datum TER2 och TER3 Tid 14-18

F4: Assemblerprogrammering

Assemblerprogrammering del 1

Extra lab. Nu på fredag kl 8-12 Frivillig Enbart hjälp med projektuppgiften Ingen examination

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Laboration nr2 med enchipsdatorn PIC-16F877

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

TSEA28 Datorteknik Y (och U)

Så här fungerar datorer Baserad på T-J Hallbergs minimalmaskin Högskolan i Jönköping/JTH Ragnar Nohre

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

9/22/2012. Assemblernivå Beskrivning av funktion Automatiskt styrd borrmaskin Positionera borr Starta borr Borra genom arbetsstycke...

Föreläsning 2. Operativsystem och programmering

Exempeltentamen Datorteknik, EIT070,

Föreläsningsanteckningar 4. Pipelining

Objektorienterad programmering Föreläsning 10. Copyright Mahmud Al Hakim Sorteringsalgoritmer

Tentamen den 14 januari 2015 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Exempel 3 på Tentamen

Tentamen Datorteknik Y, TSEA28 Datum TER2, TER4, TERE Tid 14-18

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

TSEA28 Datorteknik Y (och U)

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

TSEA28 Datorteknik Y (och U)

Assemblerprogrammering del 3

Transkript:

LABORATION Datorkonstruktion D Mikroprogrammering Version 4.0 2017 (AN) 1

1 Inledning Syftet med laborationen är att skapa en känsla för vad som händer i en enkel dator då en maskinkodsinstruktion (även kallad assemblerinstruktion) exekveras. Syftet är också att exemplifiera några av de byggblock som en processor kan vara uppbyggd av. Efter genomförd laboration ska du ha en grundförståelse för hur en enkel dator fungerar och hur mikrokod och maskinkod tillsammans kan användas för att skapa en (relativt) hårdvaruoberoende programmeringsmodell för en assemblerprogrammerare. Den dator som används i laborationen är helt mikroprogrammerbar och finns beskriven i häftet Beskrivning av MIA-systemet. I det här laborationerna kommer du att få skriva all mikrokod som behövs för att kunna exekvera ett antal maskinkodsinstruktioner. Du kommer även att få skriva några maskinspråksprogram för att testa din konstruktion. 2 Praktiska råd Precis som i all annan mjukvaruutveckling är det bra om du kan utveckla ditt program i små delar och testa dessa delar var för sig. Det är givetvis också lämpligt att spara undan gamla versioner så att du kan gå tillbaka till dessa om du av misstag skulle radera dina fungerande program. Tänk också på att laborationen är ett examinationsmoment, det är alltså viktigt att båda personerna i en laborationsgrupp har förstått alla moment i laborationen. 2

3 Laborationen Innan första labtillfället ska detta lab-pm vara noggrannt genomläst. Likaså bör de kapitel i eventuell kurslitteratur som berör mikroprogrammering vara genomlästa. Till det första lab-tillfället ska Uppgift 1 till Uppgift 3 vara förberedda, det vill säga samtliga maskinspråksprogram och mikroprogram ska ha skrivits hemma. Till hjälp vid mikroprogrammeringen finns speciella blanketter sist i detta PM. På dessa skriver man styrordets utseende i binär form och översätter detta sedan till hexadecimal form, eftersom programmeringen av datorn sker hexadecimalt. Uppgift 1 Skriv mikroprogrammet för följande maskininstruktioner: Instruktion Betydelse Adresserings- Påverkar moder flaggor LOAD GRx,M,ADR GRx := PM(A) 00,01,10,11 - STORE GRx,M,ADR PM(A) := GRx 00,10,11 - ADD GRx,M,ADR GRx :=GRx+PM(A) 00,01,10,11 Z,N,O,C SUB GRx,M,ADR GRx :=GRx-PM(A) 00,01,10,11 Z,N,O,C AND GRx,M,ADR GRx :=GRx and PM(A) 00,01,10,11 Z,N LSR GRx,M,Y GRx skiftas logiskt - (ange 00) Z,N,C utskiftad bit höger Y steg BRA ADR PC :=PC+1+ADR - (ange 00) - BNE ADR PC := PC+1+ADR - (ange 00) - om Z=0, annars PC:= PC+1 HALT avbryt exekv. - (ange 00) - Kommentar: PC+1 i hoppinstruktionerna avser den uppräkning som görs av PC i hämtfasen. Hämtfas Börja med att skriva mikroprogrammet för instruktionshämtningen. Det ska börja i mikroadress 00 eftersom exekveringen av en maskininstruktions mikroprogram alltid avslutas med att mikroprogramräknaren nollställs. Hämtrutinen ska göra följande: um adress utför 00 ASR:= PC 01 IR:= PM, PC:= PC+1 Effektivadressberäkning Efter instruktionshämtningen ska instruktionens effektivadress beräknas och läggas i ASR. Detta görs för alla instruktioner trots att det inte behövs för t ex BRA, som alltid är relativadresserande, eller LSR som inte berör minnet. Det behövs en mikroprogramsekvens för var och en av de fyra olika adresseringssätten. Vilken sekvens som ska utföras bestäms av M-fältet via nätet K2. Man får alltså: 3

um adress utför 02 upc:= K2(M-fältet) För de fyra adresseringslägen som finns i datorn behövs följande mikrokod: um adress utför 03 ASR:=IR, upc:= K1(OP-fältet) ; Direktadressering 04 ASR:=PC, PC:= PC+1, upc:= K1(OP-fältet) ; Immediate 05 ASR:= IR ; Indirekt adressering 06 ASR:= PM, upc:= K1(OP-fältet) ; Se kommentar i Uppgift 3 om indirekt adressering! 07 AR:= IR ; Indexerad adressering 08 AR:= GR3+AR 09 ASR:= AR, upc:= K1(OP-fältet) Observera att K2 också måste programmeras på följande sätt: Adress 0 Adress 1 Adress 2 Adress 3 anger startadress för direktadresseringsprogrammet dito för omedelbar operand dito för indirektadressering dito för indexerad adressering Minnesinnehållet ges av de olika sekvensernas adresser enligt ovan. Exekveringssekvenserna för instruktionerna kan läggas på godtycklig plats i mikrominnet då hoppadressen till respektive sekvens anges i K1. Det är dock lämpligt att placera dessa sekvenser omedelbart efter adressberäkningen. Tips: M-fältet i instruktionen kommer alltid att vara satt till 11 när indexerad adressering används. För att få fram GR3 kan du alltså använda S-biten. Förberedelseuppgift: Det finns två olika additionsinstruktioner i n. Vilken av dessa ska användas på adress 8 i mikrominnet för att utföra AR:=GR3+AR och varför? Uppgift 2 På adress $FE i minnet finns fyra stycken fyra bitar breda tal lagrade enligt nedan: A B C D Skriv ett assemblerprogram som använder de instruktioner du implementerade i uppgift 1 som räknar ut värdet A + B + C + D och lagrar detta på position $FF i minnet. Exempel: Om värdet $53AF finns på på adress $FE så ska $0021 skrivas in på adress $FF. 4

Uppgift 3 Skriv ett program som sorterar en lista med tvåkomplementstal. Listan börjar på adress $E0 och slutar på adress $FF. När programmet körts klart ska listan vara sorterad och det minsta värdet ska finnas på adress $E0. Tabell 1 visar ett exempel på hur ditt program ska bete sig. Du får implementera sorteringen på valfritt sätt, men det lättaste sättet att göra detta är antagligen genom att använda bubble sort enligt följande algoritm 1 1. För varje element i listan: Jämför detta element med nästa element. Om nästa element är mindre (eller större, beroende på om du vill sortera listan i stigande eller fallande ordning) än det nuvarande elementet så byter du plats på dessa. 2. Gå igenom listan om och om igen tills du inte längre behöver byta plats på några element. Då vet du att listan är sorterad. Tips: Det blir antagligen lättare att skriva ditt sorteringsprogram om du implementerar en eller flera av följande instruktioner: CMP (samma som SUB förutom att GRx inte uppdateras) BGE (hoppa om GRx var större än eller lika med PM(A) i CMP-instruktionen) (båda talen använder tvåkomplement!) BEQ (hoppa om Z-flaggan är satt) Du får dock, om du vill, implementera helt andra instruktioner om det passar ditt sorteringsprogram bättre. (Du kan exempelvis tänkas ha nytta av stöd för en stack genom PUSH/POP eller JSR/RTS.) Du får även, om du vill, byta ut adresseringsläget indirekt adressering mot något annat om du tycker att det skulle passa din algoritm bättre! Se även Appendix 1 för ett lämpligt flödesschema. Tävling Det finns inga prestandakrav i denna laboration, men för att uppmuntra er till att försöka skriva snabba program så utlyser vi en liten tävling där det gäller att skriva den snabbaste sorteringsalgoritmen. Om ni vill vara med i denna tävling så ska ni maila in er lösning (som ni sparat ifrån LMIA) till examinator. Se kurshemsidan för information om deadlines för tävlingen. Skriv Tävling och mikrokod i ärenderaden. Notering: Vi kommer att använda fem slumpmässigt genererade listor 2 för att testa prestandan på era lösningar. Ni tjänar alltså inte på att optimera ert program för just den lista som anges i Tabell 1. 1 Det är värt att notera att Bubble-sort är en tämligen usel sorteringsalgoritm. Det finns dock några ganska enkla sätt att snabba upp den, men för de som är ute efter att skriva en riktigt snabb sorteringsalgoritm så rekommenderar jag er att antingen läsa i en lärobok om datastrukturer och algoritmer, alternativt att ta en titt på Wikipedia-sidan om Sorting algorithm. (Däremot så är det inte säkert att de mest avancerade algoritmer går att anpassa till LMIA så att de är bättre än enklare algoritmer i de fall då enbart 32 element ska sorteras.) 2 För de som är intresserade så kommer vi att använda 5 32 16 bitar tagna ifrån /dev/random. 5

Adress Före Efter E0 92f1 8034 E1 8034 835f E2 971b 8832 E3 99fb 90e8 E4 7ef1 92f1 E5 90e8 959f E6 5ee7 969c E7 3de3 971b E8 7351 99fb E9 53ed 9f74 EA 56a2 9fc4 EB dea5 b11c EC 6c5a bd89 ED 835f bfb0 EE 7c67 dea5 EF ec86 ec86 F0 bd89 3de3 F1 969c 4c67 F2 5f63 53ed F3 72d7 56a2 F4 959f 5ee7 F5 6081 5f63 F6 4c67 6081 F7 7e12 623d F8 9fc4 6c5a F9 b11c 7044 FA 623d 72d7 FB 8832 7351 FC 78ea 78ea FD 9f74 7c67 FE 7044 7e12 FF bfb0 7ef1 Tabell 1: Ett sorteringsexempel 6

Appendix 1: Flödesschema för bubblesort Start lista_sorterad = 1 Addr = $E0 tmp = PM(Addr) tmp2 = PM(Addr+1) tmp1 > tmp2? Nej Ja Byt plats på PM(Addr) och PM(Addr+1) lista_sorterad = 0 Räkna upp Addr Nej Addr=$FF? Ja Nej lista_sorterad = 1? Ja Klar 7

Adress ALU TB FB S P LC SEQ myadr (Hexadecimalt) Kommentar Lathund till fälten (se labhäfte för mer information) 0 0001 Buss 0010 Buss' 0011 0 0100 AR+Buss 0101 AR-Buss 0110 AR & Buss 0111 AR Buss 1000 AR+Buss (inga flaggor) 1001 AR << 1 1010 ARHR << 1 1011 AR >> 1 (aritmetiskt) 1100 ARHR >> 1 (aritmetiskt) 1101 AR >> 1 (logiskt) 1110 Rotera AR åt vänster 1111 Rotera ARHR åt vänster TB 100 AR 111 Styrord FB 100-111 ASR P 0 NOP 1 PC++ LC 00 NOP 01 LC-- 10 LC=Buss 11 LC=uADR S 0 GRx-mux styrs av GRx-fältet 1 GRx-mux styrs av M-fältet SEQ 0000 upc++ 0001 upc=k1 0010 upc=k2 0011 upc=0 0101 upc=uadr 0110 ujsr uadr 0111 urts 1000 Hopp om Z=1 1001 Hopp om N=1 1010 Hopp om C=1 1011 Hopp om O=1 1100 Hopp om L=1 1111 HALT

Adress ALU TB FB S P LC SEQ myadr (Hexadecimalt) Kommentar Lathund till fälten (se labhäfte för mer information) 0 0001 Buss 0010 Buss' 0011 0 0100 AR+Buss 0101 AR-Buss 0110 AR & Buss 0111 AR Buss 1000 AR+Buss (inga flaggor) 1001 AR << 1 1010 ARHR << 1 1011 AR >> 1 (aritmetiskt) 1100 ARHR >> 1 (aritmetiskt) 1101 AR >> 1 (logiskt) 1110 Rotera AR åt vänster 1111 Rotera ARHR åt vänster TB 100 AR 111 Styrord FB 100-111 ASR P 0 NOP 1 PC++ LC 00 NOP 01 LC-- 10 LC=Buss 11 LC=uADR S 0 GRx-mux styrs av GRx-fältet 1 GRx-mux styrs av M-fältet SEQ 0000 upc++ 0001 upc=k1 0010 upc=k2 0011 upc=0 0101 upc=uadr 0110 ujsr uadr 0111 urts 1000 Hopp om Z=1 1001 Hopp om N=1 1010 Hopp om C=1 1011 Hopp om O=1 1100 Hopp om L=1 1111 HALT

Adress ALU TB FB S P LC SEQ myadr (Hexadecimalt) Kommentar Lathund till fälten (se labhäfte för mer information) 0 0001 Buss 0010 Buss' 0011 0 0100 AR+Buss 0101 AR-Buss 0110 AR & Buss 0111 AR Buss 1000 AR+Buss (inga flaggor) 1001 AR << 1 1010 ARHR << 1 1011 AR >> 1 (aritmetiskt) 1100 ARHR >> 1 (aritmetiskt) 1101 AR >> 1 (logiskt) 1110 Rotera AR åt vänster 1111 Rotera ARHR åt vänster TB 100 AR 111 Styrord FB 100-111 ASR P 0 NOP 1 PC++ LC 00 NOP 01 LC-- 10 LC=Buss 11 LC=uADR S 0 GRx-mux styrs av GRx-fältet 1 GRx-mux styrs av M-fältet SEQ 0000 upc++ 0001 upc=k1 0010 upc=k2 0011 upc=0 0101 upc=uadr 0110 ujsr uadr 0111 urts 1000 Hopp om Z=1 1001 Hopp om N=1 1010 Hopp om C=1 1011 Hopp om O=1 1100 Hopp om L=1 1111 HALT

Adress ALU TB FB S P LC SEQ myadr (Hexadecimalt) Kommentar Lathund till fälten (se labhäfte för mer information) 0 0001 Buss 0010 Buss' 0011 0 0100 AR+Buss 0101 AR-Buss 0110 AR & Buss 0111 AR Buss 1000 AR+Buss (inga flaggor) 1001 AR << 1 1010 ARHR << 1 1011 AR >> 1 (aritmetiskt) 1100 ARHR >> 1 (aritmetiskt) 1101 AR >> 1 (logiskt) 1110 Rotera AR åt vänster 1111 Rotera ARHR åt vänster TB 100 AR 111 Styrord FB 100-111 ASR P 0 NOP 1 PC++ LC 00 NOP 01 LC-- 10 LC=Buss 11 LC=uADR S 0 GRx-mux styrs av GRx-fältet 1 GRx-mux styrs av M-fältet SEQ 0000 upc++ 0001 upc=k1 0010 upc=k2 0011 upc=0 0101 upc=uadr 0110 ujsr uadr 0111 urts 1000 Hopp om Z=1 1001 Hopp om N=1 1010 Hopp om C=1 1011 Hopp om O=1 1100 Hopp om L=1 1111 HALT

Adress ALU TB FB S P LC SEQ myadr (Hexadecimalt) Kommentar Lathund till fälten (se labhäfte för mer information) 0 0001 Buss 0010 Buss' 0011 0 0100 AR+Buss 0101 AR-Buss 0110 AR & Buss 0111 AR Buss 1000 AR+Buss (inga flaggor) 1001 AR << 1 1010 ARHR << 1 1011 AR >> 1 (aritmetiskt) 1100 ARHR >> 1 (aritmetiskt) 1101 AR >> 1 (logiskt) 1110 Rotera AR åt vänster 1111 Rotera ARHR åt vänster TB 100 AR 111 Styrord FB 100-111 ASR P 0 NOP 1 PC++ LC 00 NOP 01 LC-- 10 LC=Buss 11 LC=uADR S 0 GRx-mux styrs av GRx-fältet 1 GRx-mux styrs av M-fältet SEQ 0000 upc++ 0001 upc=k1 0010 upc=k2 0011 upc=0 0101 upc=uadr 0110 ujsr uadr 0111 urts 1000 Hopp om Z=1 1001 Hopp om N=1 1010 Hopp om C=1 1011 Hopp om O=1 1100 Hopp om L=1 1111 HALT