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)

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

TSEA28 Datorteknik Y (och U)

Tentamen den 18 mars svar Datorteknik, EIT070

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)

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

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

Assemblerprogrammering för ARM del 2

Tentamen. Datorteknik Y, TSEA28

TSEA28 Datorteknik Y (och U)

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

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

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

Övning2 Datorteknik, HH vt12 - Programmering

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

Tentamen. Datorteknik Y, TSEA28

Grunderna i stegkodsprogrammering

TSEA28 Datorteknik Y (och U)

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Tentamen (Exempel) Datorteknik Y, TSEA28

Tentamen (Exempel) Datorteknik Y, TSEA28

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

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

Exempeltentamen Datorteknik, EIT070,

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

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

Datorarkitekturer med operativsystem ERIK LARSSON

Programexempel för FLEX

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Tentamen. Datorteknik Y, TSEA28

Superscalar Bra: Hårdvaran löser allt: Hårdvara detekterar poten6ell parallellism av instruk6oner Hårdvara försöker starta exekvering (issue) av så

Tentamen (Exempel) Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

TSEA28 Datorteknik Y (och U)

IT för personligt arbete F5

Tentamen. Datorteknik Y, TSEA28

TSEA28 Datorteknik Y (och U)

Assemblerprogrammering, ARM-Cortex M4 del 3

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

TSEA28 Datorteknik Y (och U)

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

TSEA28 Datorteknik Y (och U)

Assemblerprogrammering - fördjupning

TSEA28 Datorteknik Y (och U)

TENTAMEN. Datorteknik. D1/E1/Mek1/Ö Hjälpmedel: Häfte "ARM-instruktioner", A4-format, 17 sidor. Maxpoäng:

Lösningar till tentamen i EIT070 Datorteknik

Lösningar till tentamen i EIT070 Datorteknik

Laboration 2 i Datorteknik- Assemblerprogrammering II

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

HF0010. Introduktionskurs i datateknik 1,5 hp

Föreläsningsanteckningar 3. Mikroprogrammering II

Tentamen (Exempel) Datorteknik Y, TSEA28

Fö 5+6 TSEA81. Real-time kernel + Real-time OS

TSEA28 Datorteknik Y (och U)

Assemblerprogrammering för ARM del 1

CPU. Carry/Borrow IX. Programräknare

Assemblerprogrammering för ARM del 1

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

Datorsystemteknik DVGA03 Föreläsning 8

CE_O3. Nios II. Inför lab nios2time

Tentamen. Datorteknik Y, TSEA28

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

4. Pipelining. 4. Pipelining

TSEA28 Datorteknik Y (och U)

Digitala System: Datorteknik ERIK LARSSON

TSEA28 Datorteknik Y (och U)

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Datorarkitekturer med operativsystem ERIK LARSSON

Assemblerprogrammering, ARM-Cortex M4 del 1

Institutionen för datavetenskap 2014/15

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

Digital- och datorteknik

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

Digital- och datorteknik

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Datorsystemteknik DAV A14 Föreläsning 1

F5: Högnivåprogrammering

F5: Högnivåprogrammering

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.

Assemblerprogrammering del 3

Utvecklingen från en 8 bitars till en 16 bitars mikroprocessor

Introduktion till ARM Cortex-M4

Föreläsning 2. Operativsystem och programmering

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

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

Digital- och datorteknik

Styrteknik: MELSEC FX och numeriska värden

Styrenheten styrsignalsekvenser programflödeskontroll

Grundläggande datavetenskap, 4p

MIKRODATORTEKNIK 2012 INNEHÅLLSFÖRTECKNING

Transkript:

TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 3 TSEA28 Datorteknik Y (och U) Föreläsning 8 Kent Palmkvist, ISY Praktiska kommentarer Ordning i labbet Allra flesta sköter det bra Kopplar ned allt (med strömmen avstängd) Loggar ur (ni ska inte stänga av datorn) Inga gamla kaffekoppar eller liknande kvar i labbet Labbet kommer användas för annan undervisning i vt2 Darma-systemet plockas ut från labbet inför vt2 TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 2 TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 4 Dagens föreläsning Lab2 praktisk info: Hur stack läses av... Hjälp för dom som inte färdiga med lab2 del A. Ett större exempel av signalbehandlande system Ge fler exempel på assemblerkodning Optimering av kod Nya instruktioner Hur man jämför datorer SPEC Andra mätmetoder Ett större exempel Signalbehandlingsexempel Filtrering av en signal Se länk från föreläsningstabellen för mer information Generell struktur

TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 5 TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 7 Ett större exempel, forts. Antag vi vill bygga ett filter som implementerar N y[n]= i=0 x[n i]b i Antag b = [-0.0448 0.1659 0.8105 0.1659-0.0448} Lagra koefficienterna i b i en minnesarea coefficients (multiplicerade med 2^15 för att få heltal) Data är 16-bitars värden (2 byte var) Antag 100 sampel som ska filtreras per gång är lagrade i en minnesarea 0x20001000-0x200013EC 4 extra insampel för att skapa 100 utsampel Antag resultatet ska lagras i minnesarea 0x20002000-0x200023E8 Totalt 0x10000 (= 65536) block ska filtreras Ett större exempel, kodstruktur Initiera addresspekare (R5, R6) och sampelräknare (R4) mov r3,#0x10000 ; Antal block som ska filtreras ldr r5,indata ; Indataadress från.field ldr r6,outdata ; Outdataadress från.field mov r4,#100 ; Antal sampels TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 6 TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 8 Ett större exempel, kodstruktur Initiera addresspekare (R5, R6), sampelräknare (R4) samt blockräknare (R3) Loop över alla sampel Sätt koefficientpekare R7 till start av koefficienter Nollställ mellanresultat (R2) Loop över alla koefficienter Multiplicera sampel med koefficient => R0 Addera till mellanresultat (R2) Hoppa ur loop om adresspekare = coefficient_end Dividera med 2^15 (för att få multiplikation med 0.0448 etc), spara resultat i ut Räkna ned sampelräknare (R4), ta nästa sampel om inte slut Räkna ned block (R3), om alla block klara returnera, annars ta nästa block Filter v1 Följer efter initiering adr r7,coefficients ; Koefficienter för filtret finns här ; Nollställ ackumulator beq sample_ready b sample_loop ; Dividera med 2^15 strh r2,[r6],#2 ; Spara resultat i utbuffert ; Justera a0 så den pekar på nästa sampel med indata ; Räkna ner loopräknaren ; nästa block att räkna på

TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 9 TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 11 Olika instruktioner tar olika lång tid Klockfrekvens Dubbel klockfrekvens betyder inte dubbel prestanda Vanligt mått: IPC (Instruction Per Clockcycle) Antal minnesläsningar/skrivningar Kan 32 bitar läsas på en gång? Hur snabbt är minnet? Hur lång är instruktionen Villkorliga hopp kan ta olika lång tid beroende på om villkoret är sant eller falskt Filter version 2 Vanligaste hoppet är det första som testas Programmet aningen mindre (2 byte kortare) 1 instruktion borttagen (bra inner_loop) Exekveringstid Ca 29 sekunder (liten förbättring) adr r7,coefficients bne sample_loop TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 10 TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 12 Prestanda filter version 1 Exekveringstid ca 30 sekunder på Darma Inte optimerat, kan göras bättre Vad tar onödig tid (instruktioner i loop är dyrast) Vanligaste hoppet tas inte (jämför, hoppa inte, hoppa) beq sample_ready b sample_loop Bättre lösning bne sample_loop Prestanda filter version 2 Titta på vanligaste operationerna ldrshr0,[r5],#2 ldrshr1,[r7],#2 bne sample_loop Vad tar onödig tid Test av slut på loop är onödig (2 av 6 instruktioner) Kopiera istället instruktionerna motsvarande antal Tekniken kallas Loop unrolling Enklast om fixt antal varv i loop adr r7,coefficients bne sample_loop

TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 13 TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 15 Filter version 3 Programmet växer i storlek Exekveringstid: 17 sekunder (-10%) mov r3,#0x10000 ldr r5,indata ldr r6,outdata mov r4,#100 adr r7,coefficients Filter version 4 Ta bort konstanttabellen Inre loop kortare Exekveringstid 13 sekunder (-23%) mov r3,#0x10000 ldr r5,indata ldr r6,outdata mov r4,#100 mul r0,r8,r0 mvn r7,#~(coeff1+1) mul r0,r9,r0 mov r8,#coeff2 mov r9,#coeff3 mul r0,r8,r0 coeff1.equ -1448.equ 5437.equ 26559 mul r0,r7,r0 mul r0,r7,r0 TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 14 TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2017-02-27 16 Prestanda filter version 3 Koefficienterna alltid samma Läs in dom i register innan loop Fungerar bäst för beräkningar med fixa värden och få konstanter 5 koefficienter men bara 3 olika värden mov r3,#0x10000 ldr r5,indata ldr r6,outdata mov r4,#100 adr r7,coefficients Prestanda filter version 4 Allt svårare öka prestanda Det mesta av tiden spenderas på ldrsh, mul och add Några saker kan förbättras En instruktion som kombinerar add och mult mla r2,r0,r7,r2 mov r3,#0x10000 ldr r5,indata ldr r6,outdata mov r4,#100 mvn r7,#~(coeff1+1) mov r8,#coeff2 mov r9,#coeff3 mla r2,r7,r0,r2 mla r2,r8,r0,r2 mla r2,r9,r0,r2 mla r2,r8,r0,r2 mla r2,r7,r0,r2 coeff1.equ -1448.equ 5437.equ 26559

TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 17 TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2016-02-26 19 Prestanda filter version 5 Använd instruktion som adderar och multiplicerar två 16-bitars tal direkt SMLAD rx,ry,rz,rw Beräknar rx = (ry[31:16]*rz[31:16])+(ry[15:0]*rz[15:0])+rw Kräver annorlunda hantering av konstanter Kombinera två konstanter i ett register T ex använd movt rx,#16-bit Placera 16-bitars konstant i rx[31:16] Andra alternativ, forts. Andra alternativ bygger på förändringar/byte av algoritmen För den intresserade: Googla på FFA (Fast Fir Algorithm) Kan vara intressant att använda t ex FFT (Fast Fourier Transform) Byta multiplikation mot flera additioner Exempel: b0=b4 => b0*x(n)+b4*x(n-4) = b0*(x(n)+x(n-4)) Ändra beräkningsordning för att undvika läsning av samma minnesvärde flera gånger Läs en gång till register och multiplicera sedan med alla olika koefficienter (resultat i olika register) TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 18 TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 20 Andra alternativ Ytterligare förbättringar kan göras Kräver detaljerad kunskap om Cortex M4 och hur den utför instruktioner Måste veta hur lång tid varje instruktion tar Kan bero bl a på adresseringsmod Stort antal andra instruktioner att undersöka Villkorlig exekvering Bitfältsoperationer Slutsats om prestanda Går ofta att förbättra (till en viss gräns) I exemplet: 21 sekunder -> 14 sekunder En kraftig minskning! Prestandaökning inte gratis Ökad mängd kod Mindre flexibilitet Svårt öka antal koefficienter Fungerar kanske bara på en processormodell Svårare förstå kod

TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 21 TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 23 Slutsats om prestanda, forts. En del av förbättringarna är svåra att generera automatiskt vid kompilering av högnivåspråk Extrem prestanda kräver ibland assemblerprogrammering Kompilatorns kvalitet viktig Översätter högnivåspråk till assembler Som synes finns många val, kompilatorn måste vara bra på att hitta snabba lösningar Prestanda hos andra arkitekturer Hastighet att utföra instruktioner endast en av flera intressanta egenskaper Beror på tänkt tillämpning Kostnadsmått varierar Exekveringshastighet, programstorlek, stöd för datatyper och operationer Hastighetskrav för avbrott Hur snabbt svar? Extra register, automatiskt spara register etc. Hur vet processorn adress för avbrott? Flexibilitet vs hastighet TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 22 TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 24 Slutsats om prestanda, forts. Nästa processorgeneration kan ha helt andra egenskaper Nya instruktioner som löser delproblem bättre Bredare/snabbare minnebuss Fler register Alternativa instruktionsuppsättningar ARM (används i ARM Cortex-A, t ex Raspberry Pi) Möjliggör villkorlig exekvering av flytt, aritmetiska och subrutinhoppsoperationer CMP r0, #0 ; if (x <= 0) MOVLE r0, #0 ; x = 0; MOVGT r0, #1 ; else x = 1; Tillåter val om flaggor ska påverkas av en instruktion Varje instruktion är 32 bitar lång Väldigt få adresseringsmoder Cortex-A familjen kan tolka olika instruktionsuppsättningar ARM vs THUMB vs THUMB2 Olika längd på instruktioner beroende på instruktionsuppsättning

TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 25 TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 27 Alternativa instruktionsuppsättningar Intel x86 (gamla IBM PC) Instruktioner är 8 bitar eller längre Prefix för att utöka antal möjliga instruktioner (8 bit instruktioner) Zilog (Z80), satt i många av de första hemdatorerna Byggde på Intel 8080 (samma designers) 8-bitars processor, med register A-E, H, L, SP, PC Prefixbyte i instruktionen väljer ett alternativt register (IX eller IY) istället för HL i följande instruktion $09 ADD HL,BC $FD $09 ADD IY,BC Prestandajämförelse, forts. Standardiserade test: SPEC Standard Performance Evaluation Corporation SPEC CPU2006 SPECint 2006: 12 olika program att mäta heltalsprestanda på SPECfp 2006: 19 olika program att mäta flyttalsprestanda på Definierade test ger samma effekt som för dieselbilars utsläppstester... Processorer blir optimerade för att ge bra testresultat Bra testresultat stämmer inte alltid med bra prestanda för önskad applikation. Vanligt med stor mängd verkliga testfall istället TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 26 TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 28 Prestandajämförelse Antal register, operationstyper, klockfrekvenser och ordbredder skiljer sig åt Varierar även inom samma familj av processorer Köparen av en dator är intresserad av prestanda (tid, effekt, kostnad) för att köra köparens applikationer Olika processorer är bra på olika saker (heltalsaritmetik, sekvensiell vs parallel exekvering etc.) Vill därför kunna jämföra prestanda för vissa typer av arbetsuppgifter Prestandajämförelse, forts. Alternativa jämförelser Generella, sammanfattande PC Mark, SISoftware Sandra Specifika, vanliga nyttoprogram Office Adobe Zip Specifika, beräkningsserver NAMD, Unixbench, sysbench Specifika, Gaming Battlefield, hitman, GTA etc.

TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 29 TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 31 Prestandajämförelse, forts. Att komma ihåg vid jämförelse av datorer Processorn är en del av ett större system Prestanda kan begränsas av många andra delar Hårddisk vs SSD Minne Kylning Nästa period (VT2), forts. Ingen mer ARM Cortex-M assembler i nästa period Undantag: Tenta! Titta på gamla tentor för att se upplägg och tillgänglig information Se till att träna så ni kan skriva egna små program Träna att analysera given kod Förväntar mig inte att ni kan alla instruktioner Ska kunna de instruktioner ni använde i labben Många specialinstruktioner är inte nödvändiga Darma-manualen ger en bra lista TSEA28 Datorteknik Y (och U), föreläsning 8, Kent Palmkvist 2018-02-26 30 Nästa period (VT2) Dags att lära sig hur datorn är uppbyggd i detalj Introducera bussar, register, beräkningselement, klockcykler, styrsignaler etc. Se hur arkitektur bestämmer hastighet hos datorn Därefter se hur prestanda kan ökas mha diverse lösningar Förutse nästa instruktion Använda små snabba minnen Göra flera saker samtidigt www.liu.se