Datorarkitekturer med operativsystem ERIK LARSSON

Relevanta dokument
Datorarkitekturer med operativsystem ERIK LARSSON

Datorteknik ERIK LARSSON

Program Datorteknik. Kontrollenhet. Exekvering av en instruktion. Abstraktionsnivå: Högnivåspråk. Assemblyspråk. Maskinspråk.

Datorarkitekturer med operativsystem ERIK LARSSON

Närliggande allokering Datorteknik

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

Datorarkitekturer med operativsystem ERIK LARSSON

Pipelining i Intel Pentium II

Datorarkitekturer med operativsystem ERIK LARSSON

Grundläggande datavetenskap, 4p

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

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

Datorteknik ERIK LARSSON

Datorteknik ERIK LARSSON

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)

Datorteknik ERIK LARSSON

Digitala System: Datorteknik ERIK LARSSON

Datorteknik ERIK LARSSON

Exempeltentamen Datorteknik, EIT070,

Tentamen den 18 mars svar Datorteknik, EIT070

Fetch-Execute. Datorteknik. Pipelining. Pipeline diagram (vid en viss tidpunkt)

Digitala System: Datorteknik ERIK LARSSON

Arm Cortex-A8 Pipeline

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Pipelining i Intel 80486

IBM POWER4, den första flerkärniga processorn och dess pipelines.

F5: Högnivåprogrammering

F5: Högnivåprogrammering

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

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

Hantering av hazards i pipelines

0.1. INTRODUKTION Instruktionens opcode decodas till en språknivå som är förstålig för ALUn.

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

Pipelining i RISC-processorn. Joakim Lindström Institutionen för informationsbehandling Åbo Akademi E-post: jolindst@abo.fi

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

DEC Alpha instruktions Arkitektur

Datorarkitektur. Fö 9: Datorarkitektur. Datororganisation. Typiska Arkitekturattribut. Introduktion till datorarkitektur.

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Digital- och datorteknik

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

Processor pipelining genom historien (Intel i9-intel i7)

Hannes Larsson - IDA 2, LTH Campus Helsingborg. NEC V R 4300i. Interlock-handling EDT621

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.

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

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

Datorsystemteknik DVGA03 Föreläsning 8

Minnet från processorns sida Datorteknik

Datorarkitekturer med operativsystem ERIK LARSSON

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

Parallellism i CDC 7600, pipelinens ursprung

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

Stack och subrutiner Programmeringskonventionen

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

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

Multi-ported cache En rapport om några lösningar till att få flera minnesaccesser simultant.

Institutionen för datavetenskap 2014/15

Datorteknik ERIK LARSSON

Digital- och datorteknik

Föreläsning 2. Operativsystem och programmering

Datorarkitektur. Informationsteknologi sommarkurs 5p, Agenda. Slideset 3

Pipeline hos ARM Cortex-A53 och ARM Cortex-A73

Lösningar till tentamen i EIT070 Datorteknik

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion.

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

Assemblerprogrammering - fördjupning

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

Jacquards vävstol, 1801

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

Mål. Datorteknik. Innehåll. Innehåll (forts) Hur ser ett program ut? Hur skapas maskinkoden?

TSEA28 Datorteknik Y (och U)

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

Emil Kristiansson Kurs: EDT621 Delmoment: Rapport. En introduktion till Smart cache

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 3. Assembler, stack och subrutiner, programmeringskonventionen. Institutionen för elektro- och informationsteknologi, LTH

Assemblerprogrammering för ARM del 2

Föreläsningsanteckningar 4. Pipelining

32 Bitar Blir 64 Sammanfattning

TSEA28 Datorteknik Y (och U)

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

Hur det går att minska effektutvecklingen i en processor genom att ändra pipeline

Digitalteknik och Datorarkitektur

Tentamen. Datorteknik Y, TSEA28

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte

Imperativ programmering. Föreläsning 2

TSEA28 Datorteknik Y (och U)

CDC en jämförelse mellan superskalära processorer. EDT621 Campus Helsingborg av: Marcus Karlsson IDA

Digital- och datorteknik

Lösningar till tentamen i EIT070 Datorteknik

Minnets komponenter. Digitala System: Datorteknik. Programexekvering. Programexekvering. Enhet för utdata. Enhet för indata CPU.

Assemblerprogrammering, ARM-Cortex M4 del 3

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

Tentamen den 17 mars 2016 Datorteknik, EIT070

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

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

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

CE_O3. Nios II. Inför lab nios2time

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

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

Transkript:

Datorarkitekturer med operativsystem ERIK LARSSON

Semantic gap Alltmer avancerade programmeringsspråk tas fram för att göra programvaruutveckling mer kraftfull Dessa programmeringsspråk (Ada, C++, Java) ger högre abstraktionsnivå, konsistens och kraft Det semantiska gapet ökar (högnivåspråk-maskinspråk) Abstraktionsnivå Högnivåspråk Maskinspråk Semantiskt gap

Semantic gap Problem: Hur ska högnivåspråk kompileras och exekveras effektivt i en processorarkitektur Två alternativ: CISC (Complex Instruction Set Computers): utveckla komplex arkitektur med många instruktioner och många adresseringsmöjligheter; ta med instruktioner som liknas högnivåinstruktioner. RISC (Reduced Instruction Set Computers): förenkla instruktionsuppsättningen och anpassa den till de verkliga kraven ett applikationsprogram har

X86 - instruktioner

Utvärdering av applikationsprogram Många studier har gjorts för att ta fram karaktärsdrag av maskinkod som genererats från högnivåspråk Intressanta aspekter: Hur ofta används varje instruktion? Hur används operander? Och hur ofta? Hur mycket används hopp, loopar, anrop till procedurer/ funktioner/subrutiner?

Utvärdering av applikationsprogram Typ Instruktioner i högnivåspråk (%) Instruktioner i maskinspråk (%) Minnesreferenser (%) Pascal C Pascal C Pascal C Tilldelning 45 38 13 13 14 15 Loop 5 3 42 32 33 26 Call 15 12 31 33 44 45 Villkor (if) 29 43 11 21 7 13 Andra 6 1 3 1 2 1 Många tilldelningar i högnivåspråk men dessa ger få instruktioner i maskinspråk och relativt få minnesreferenser Relativt få loopar men looparna resulterar i många maskininstruktioner och många minnesreferenser

Utvärdering av applikationsprogram Typ Instruktioner i högnivåspråk (%) Instruktioner i maskinspråk (%) Minnesreferenser (%) Pascal C Pascal C Pascal C Tilldelning 45 38 13 13 14 15 Loop 5 3 42 32 33 26 Call 15 12 31 33 44 45 Villkor (if) 29 43 11 21 7 13 Andra 6 1 3 1 2 1 Få CALL (anrop till funktioner/ procedurer/subrutiner) men de ger många instruktioner i maskinspråk och relativt många minnesreferenser Relativt många villkor med de ger relativt få maskininstruktioner och relativt få minnesreferenser

Utvärdering av applikationsprogram Fördelning av maskininstruktioner (frekvens av användande): Flytta data (move): ~33% Villkorliga hopp: ~20% ALU operationer: ~16% Adressering Komplexa adressering: ~18% (memory indirect, indexed+indirect, displacement+indexed, stack) Enkel adressering: vanligast (adress kan beräknas i en klockcykel, register, register indirekt, displacement)

Utvärdering av applikationsprogram Typer av operander 74-80% av operander är skalärer (heltal, flyttal, tecken, etc), vilka kan lagras i register (icke-skalär, t ex array) Resterande (20-26%) är arrayer; 90% är globala variabler 80% av skalärer är lokala variabler Slutsats: Lagring i register

Utvärdering av applikationsprogram Trots att endast 10-15% av högnivå instruktionerna var funktion/procedure/ subrutin anrop, så svarar dessa CALL och RETURN instruktioner för: 31-43% av maskininstruktionerna 44-45% av minnesreferenserna För procedurer: Endast 1.25% har fler än 6 parametrar Endast 6.7% har fler än 6 lokala variabler Antal nästlingar är ofta få (korta) och mycket sällan längre än 6 int x, y; float z; void proc3(int a, int b, int c) { ---------------- } void proc2(int k) { int j, q; ---------------- proc3(j, 5, q); } void proc1() { int i; ---------------- proc2(i); } main () { proc1(); }

Utvärdering av applikationsprogram - sammanfattning En stor del av de instruktioner som exekveras är enkla ALU och flytt av data Vanligt att använda enkla adresserings möjligheter Relativt mycket operand adressering; i medel refererar varje instruktion 1.9 operander Många av operanderna som refereras är skalärer (enkla tal inte vektorer) Skalärer lagras enkelt i register Optimering av CALL-anrop skulle kunna förbättra prestanda Givet ovan, påbörjades utvecklingen av Reduced Instruction Set Computers (RISC) (Patterson, D och Hennessy, J)

Karaktärsdrag hos RISC processorer Enkla och få instruktioner Enkla och få adresseringsmöjligheter Fixt (fast) instruktionsformat Stort antal register Load-and-store architecture

Karaktärsdrag hos RISC processorer Målet med enkla och få instruktioner är att kunna exekvera snabbare. De flesta instruktion exekveras i en enda maskincykel (efter fetch och decode) Pipeline (utan minnesreferenser): FI DI EI Med enkla och få instruktioner, blir kontrollenheten enklare.

Karaktärsdrag hos RISC processorer Ett litet exempel: Antag ett program med 80% enkla instruktioner och 20% komplexa instruktioner som exekveras på en CISC och en RISC CISC: enkla instruktioner tar 4 klockcykler medan komplexa instruktioner tar 8 klockcykler. Antag klockcykel tid på 100 ns (10-7 s) RISC: enkla instruktioner 1 klockcykel medan komplexa instruktioner implementeras som en sekvens av enkla. Antag att det tar i genomsnitt 14 instruktioner för en komplex instruktion. Antag klockcykel tid på 75 ns (0.75*10-7 ). Hur lång tid tar det att exekvera 1 000 000 instruktioner? CISC: (10 6 *0.80*4 + 10 6 *0.20*8)*10-7 =0.48s RISC: ( 10 6 *0.80*1 + 10 6 *0.20*14)*0.75*10-7 =0.27s

Karaktärsdrag hos RISC processorer Load-and-store architecture: Endast LOAD och STORE instruktioner refererar data i minnet (primärminnet). Pipeline vid minnesreferenser: FI DI CA TR CA: Compute adress, TR: Transfer

Karaktärsdrag hos RISC processorer Instruktioner använder få adresseringsmöjligheter: Typiskt: register, direkt, register indirekt, displacement Instruktioner har fixt (fast) längd och uniformt format Detta förenklar och snabbar upp laddning och avkodning. Processorn behöver inte vänta på att hela instruktionen är laddad innan avkodning kan påbörjas Uniformt format, dvs opcode och adressfält är placerat på samma position för olika instruktioner, gör att avkodning förenklas.

Karaktärsdrag hos RISC processorer Stort antal register Register kan användas för att lagra variabler och för mellanlagring resultat. Det minskar behov av att använda upprepade load och store med primärminnet. Alla lokala variabler från CALL/RETURN strukturer (anrop till funktioner, procedurer, subrutiner) kan lagras i register. Vad händer vid anrop till funktioner och procedurer? Register innehåll måste sparas, parametrar ska föras över, återhopps adresser ska sparas. Relativt mycket minnes access, vilket tar mycket tid. Med många register, kan nya register allokeras vid anrop

Hopp till subrutiner (och funktioner) Trots att endast 10-15% av högnivå instruktionerna var funktion/ procedure/subrutin anrop, så svarar dessa CALL och RETURN instruktioner för: 31-43% av maskininstruktionerna 44-45% av minnesreferenserna För procedurer: Endast 1.25% har fler än 6 parametrar Endast 6.7% har fler än 6 lokala variabler Antal nästlingar är ofta få (korta) och mycket sällan längre än 6 Med register minskar (tar bort) minnes accesser och relativt lite parameteröverföring och få nästlingar Stort antal register är typiskt för RISC därför att kiselytan som ofta är relativt fix inte innehåller komplex logik

Hopp till subrutiner (och funktioner) Problem instruktion 1 call proc A instruktion 3 instruktion 4 call proc A instruktion 6 Hopp till subrutin Återhopp Parameteröverföring Nästlade subrutinanrop proca: instruktion 11 call proc B instruktion 13 return procb: Instruktion 21 Instruktion 22 return instruktion 1 instruktion 11 //Proc A Instruktion 21 //Proc B Instruktion 22 instruktion 13 //Proc A instruktion 3 instruktion 4 instruktion 11 //Proc A Instruktion 21 //Proc B Instruktion 22 instruktion 13 //Proc A instruktion 6

Register eller stack Använd ett antal register för att spara återhoppsadress (och för parameteröverföring) Fördel: snabbt. Nackdel: register behövs Stack Reservera en del av minnet Fördel: stort. Nackdel: långsamt (jmf register) Är en kö som fungerar enligt Last-In First-Out» Två operationer: Lägg in element i kö: Push Ta fram element från kö: Pop

Hopp till subrutiner (och funktioner) Push 10 (tid 2) Push 10 (tid 6) Push 2 (tid 1) 10 2 5 10 2 instruktion 1 call proc A instruktion 3 instruktion 4 call proc A instruktion 6 Push 5 (tid 5) proca: instruktion 11 call proc B instruktion 13 return Pop (tid 4) ger 2 10 2 procb: Instruktion 21 Instruktion 22 return Pop (tid 3) ger 10 10 2 5 Pop (tid 8) Ger 5 10 5 Pop (tid 7) ger 10 10 5

Hopp till subrutiner (och funktioner) R 0 Alla register R N Level i Register window In Local Out CWP: Current Window Pointer Level i+1 Level i+2 CWP CWP In Local Out In Local Out instruktion 1 call proc A instruktion 3 instruktion 4 call proc A instruktion 6 proca: instruktion 11 call proc B instruktion 13 return procb: Instruktion 21 Instruktion 22 return CWP

Delayed load problem LOAD och STORE instruktioner refererar data i minnet (primärminnet). Alla andra instruktioner opererar enbart på register (register-till-register instruktioner). LOAD och STORE instruktioner hinner inte bli exekverade på en klockcykel. LOAD R1, X ADD R2, R1 ADD R4, R3 FI DI CA TR FI DI EI FI DI EI Här är R1 tillgängligt

Delayed load problem Två alternativ: Hårdvaran gör delay (stall) av instruktioner som följer efter LOAD Kompilatorn ändrar ordningen genom delayed load (jämför med delayed branching) Med delayed load exekveras alltid instruktionen som följer en LOAD instruktion (inget stall). Det är programmerarens (kompilatorns) ansvar att se till att instruktionen direkt efter LOAD inte behöver just det värde som laddas.

Delayed load problem Om programmet är: LOAD R1, X ADD R2, R1 ADD R4, R3 SUB R2, R4 Genererar kompilatorn: LOAD R1, X ADD R4, R3 ADD R2, R1 SUB R2, R4 FI DI CA TR FI DI EI FI DI EI FI DI CA TR FI DI EI FI DI EI FI DI EI FI DI EI Här är R1 tillgängligt Här används R1 Här är R1 tillgängligt Här används R1

Delayed load problem Om programmet är: LOAD R1, X ADD R2, R1 ADD R4, R2 SUB R4, X Genererar kompilatorn: LOAD R1, X NOP ADD R2, R1 ADD R4, R2 STORE R4, X FI DI CA TR FI DI EI FI DI EI FI DI CA TR FI DI EI FI DI EI FI DI EI FI DI EI Här är R1 tillgängligt Här används R1 Här är R1 tillgängligt Om kompilatorn inte hittar en instruktion, tas en NOP (no operation) instruktion Här används R1 FI DI CA TR

RISC eller CISC? Ett entydigt svar är svårt att ge Flera prestanda jämförelser (benchmarking) visar att RISC exekverar snabbare än CISC Men, det är svårt att identifiera vilket karaktärsdrag som är avgörande. Det är svårt att jämföra; t ex olika halvledartekniker, kompilatorer Ett argument för CISC: Den enklare RISC konstruktionen gör att program behöver mer minne (fler instruktioner) jämfört med samma program för en CISC processor Processorer av idag använder sig ofta av lite RISC och lite CISC

Några exempel CISC VAX 11/780 Nr. of instructions: 303 Instruction size: 2 57 bytes Instruction format: not fixed Addressing modes: 22 Number of general purpose registers: 16 Pentium Nr. of instructions: 235 Instruction size: 1 11 bytes Instruction format: not fixed Addressing modes: 11 Number of general purpose registers: 8 (32-bitar mode), 16 (64-bitar mode)

Några exempel RISC Sun SPARC Nr. of instructions: 52 Instruction size: 4 bytes Instruction format: fixed Addressing modes: 2 Number of general purpose registers: up to 520 PowerPC Nr. of instructions: 206 Instruction size: 4 bytes Instruction format: not fixed (but small differences) Addressing modes: 2 Number of general purpose registers: 32

Några exempel ARM (Advanced RISC Machine och Acorn RISC Machine) Antal instruktioner (standard set): 122 Instruktions storlek: 4 (standard), 2 (Thumb) byte Instruktions format: fixerat (olika mellan standard och Thumb) Adresserings modes: 3 Antal general purpose register: 27 (16 kan användas samtidigt) Dagens ARM processorer kan exekvera både standard set (32 bitars instruktioner och 16 bitars Thumb instruktions set. Thumb består av en delmängd av 32-bitars setet, kodat som 16-bitars instruktioner).

Sammanfattning Både RISC och CISC försöker lösa samma problem minska det semantiska gapet. CISC alternativet innebär att instruktioner görs alltmer komplexa RISC alternativet innebär att göra instruktionerna enklare Viktiga kännetecken för RISC arkitekturer är: Få och enkla instruktioner Få adresserings möjligheter Load-store arkitektur Instruktioner har fix längd och format Många register är tillgängliga Viktigt för RISC utveckling är att maximera effektiviteten i pipelines En processorer av idag använder sig ofta av lite RISC och lite CISC kännetecken

Arkitekturer PowerPC 604 6 oberoende exekverings enheter:» 1 branch execution unit» 1 load/store unit» 3 integer units» 1 flyttals enhet In-order issue PowerPC 620 Som PowerPC604 men out-of-order issue

Arkitekturer Pentium 3 oberoende exekverings enheter» 2 heltals enheter» 1 flyttals enhet In-order issue (2 instruktioner per klockcykel) Pentium II till 4 Som Pentium men med out-of-order exekvering 5-7 oberoende exekverings enheter

Effektförbrukning Komplexitet pga dynamisk schemaläggning och spekulering kräver mer effekt Multipla kärnor (cores) kan vara bättre Microprocessor Year Clock Rate Pipeline Stages Issue width Out-of-order/ Speculation Cores i486 1989 25MHz 5 1 No 1 5W Power Pentium 1993 66MHz 5 2 No 1 10W Pentium Pro 1997 200MHz 10 3 Yes 1 29W P4 Willamette 2001 2000MHz 22 3 Yes 1 75W P4 Prescott 2004 3600MHz 31 3 Yes 1 103W Core 2006 2930MHz 14 4 Yes 2 75W UltraSparc III 2003 1950MHz 14 4 No 1 90W UltraSparc T1 2005 1200MHz 6 1 No 8 70W

Sammanfattning Typiskt för superscalar architectures är: Flera pipelines som verkar parallellt; Out-of-order issue&out-of-order completion; Register renaming. Alla teknikerna syftar till att öka prestandan.