04/12/2015 22:59 Praktiska kommenterar ● ● Laborationsanmälan tillgänglig – Simuleringslabbar => kan köras hemifrån – Redovisa på labbtillfälle MIA (labb 4) kräver X-windows TSEA28 Datorteknik Y (och U) Föreläsning 11 – Grafiskt interface – Fungerar inte med putty under windows 7/8/8.1 Kent Palmkvist Datorteknik, ISY 2 Bus A Agenda Agenda Bus B Bus C Maskininstruktioner MAR CMAR Read Write ● Närmare titt på 68000 implementering ● Generella egenskaper hos CISC ● Alternativ struktur: RISC CMBR ● Introduktion Pipelining CPC Address Minne ● Data MBR EMBR,B EIR,B R0 ER0,B CR0 ER1,B CR1 A F2 F1 F0 B ALU C VCNZ 4 ER0,C ● R1 TSEA28 Datorteknik Y 2015 Op-code 000 001 010 011 100 101 110 111 EPC,B CIR 2015-01-05 EMBR,C PC IR 3 Exempel på maskininstruktioner som ska kunna utföras Op-code | M eller T ER1,C Namn LOAD R0,M LOAD R1,M STORE M,R0 STORE M,R1 ADD R1,R0 SUB R1,R0 BRA T BEQ T Operation [R0] <- [M] [R1] <- [M] [M] <- [R0] [M] <- [R1] [R1] <- [R1] + [R0] [R1] <- [R1] - [R0] [PC] <- T Om [Z] = 1 då [PC] <- T Mikroprogrammet beskriver för varje instruktion alla styrsignaler och steg för implementering av instruktionen – Hämta instruktion (fetch) – Utför instruktion (beror på vilken instruktion som hämtats) CCR 2015-01-05 TSEA28 Datorteknik Y 2015 04/12/2015 22:59 Bus A Bus B Bus C CMAR Read Write Address Minne Data ● MBR EMBR,B CMBR EMBR,C Minne Read Data Minne Write Clock CXXX EPC,B IR CU Z Cxx,Exx,F R0 ER0,B CR0 R1 A F2 F1 F0 ER1,B ER0,C ER1,C B ALU C ● VCNZ MBR EMBR,B CMBR Läs från minne och placera värde i EMBR,C EPC,B CPC IR EIR,B CIR R0 ER0,B CR0 R1 ER1,B CR0 A F2 F1 F0 – Kopiera PC till MAR – Öka PC med 1 (peka på instruktion efter) – Läs minne till MBR – Kopiera MBR till IR – Välj rätt mikroprogram baserat på aktuell operation – Motsvarande styrsignaler (en av flera möjliga lösningar) ● ER0,C Funktion motsvarar ett case-uttryck eller switch i högnivåspråk uaddr Addrsel kontrollsignal 0 +1 EPC,B = 1, F2F1F0 = 0,0,0, CMAR 1 +1 EPC,B = 1, F2F1F0 = 0,1,0, CPC 2 +1 Read=1,CMBR 3 +1 EMBR,B = 1, F2F1F0 = 0,0,0, CIR 4 K1 - ER1,C B ALU C Addr - CCR VCNZ 6 TSEA28 Datorteknik Y 2015 Fetch: Läs instruktion från minne till IR, öka PC med 1 PC Effektivt sätt realisera sekvenser av styrsignaler 2015-01-05 2015-01-05 TSEA28 Datorteknik Y 2015 Bus B Bus C CMAR Read Write Address Minne ● Data MBR EMBR,B CMBR EMBR,C EPC,B CPC IR CIR EIR,B R0 ER0,B CR0 R1 ER1,B CR1 A CU ER0,C IR ● Kopiera R0 till MBR – Kopiera IR till MAR (får bara med adressdelen av instruktionen) – Skriv minne från MBR, starta om mikroprogrammet – Motsvarande styrsignaler (en av flera möjliga lösningar) Addrsel +1 +1 1 kontrollsignal ER0,B = 1, F2F1F0 = 0,0,0, CMBR EIR,B = 1, F2F1F0 = 0,0,0, CMAR Write=1 K2 0 1 01 0 Addr 0 ● addr addrsel 0 8 Z C V N 1 0 – Styr enskilda kontrollsignaler i arkitekturen (Cxx,EXX) – Välj vad som kan ge nästa address (+1, addr, K1, K2) – Alternativ nästa address till mikroprogrammet – Mikroprogramminne inte samma som programminne! IR består av operationskod, addresseringsmod samt argument ROM CCR TSEA28 Datorteknik Y 2015 1 Register 5 2015-01-05 Databitarna i varje address i ROM (mikroprogramminnet) har olika funktion +1 K1 pekar för opcode 010 på adress k (inte bestämd ännu) uaddr k k+1 k+2 ER1,C Kontrollenhet CU Cxx,Exx,F K1 – ● B ALU C VCNZ Z Utför instruktion 010 (STORE M,R0) PC F2 F1 F0 IR Exekvering av instruktion, del 2 MAR 7 ● Data CCR 5 Bus A Address Minne Read Write CU är mikroprogrammerad – Exekvering av instruktion, del 1 CMAR Skriv värde i Data till minnesaddress Spara värde i register XXX (MBR, MAR, PC, IR, R0, R1) Enable EXXX,B Kopiera värde från XXX till buss B (MBR,PC,IR,R0,R1) Enable EXXX,C Kopiera värde från XXX till buss C (MBR,R0,R1) ALU F2F1F0 Välj funktion i ALU EIR,B CIR Bus B Bus C MAR Styrsignaler definierade i arkitekturen styrs av kontrollenhet CU (ansluten mot IR, flaggor och alla styrsignaler i systemet) PC CPC CR1 Bus A Arkitektur, styrsignaler MAR – Operationskod (Add, Move, etc.) går via K1 – Addresseringsmod (direkt, omedelbar, etc) går via K2 ctl Cxx,Exx,F Indikerar funktion hos olika bitar av mikrokodsinstruktionen 2015-01-05 TSEA28 Datorteknik Y 2015 04/12/2015 22:59 Mikroprogram för exemplet (delar av programmet) IR uaddr Addrsel 0 +1 1 +1 2 +1 3 +1 4 K1 k (5) +1 k+1 (6) +1 k+2 (7) 1 l (8) Z l+1 (9) 1 l+2 (10) 1 K2 K1 0 1 +1 01 0 1 Register 0 1 2 3 4 5 6 7 8 9 10 ROM addr addrsel 5 0 9 Z C V N 1 0 ctl Cxx,Exx,F 2015-01-05 kontrollsignal EPC,B = 1, F2F1F0 = 0,0,0, CMAR EPC,B = 1, F2F1F0 = 0,1,0, CPC Read=1,CMBR EMBR,B = 1, F2F1F0 = 0,0,0, CIR ER0,B = 1, F2F1F0 = 0,0,0, CMBR EIR,B = 1, F2F1F0 = 0,0,0, CMAR Write=1 EIR,B = 1, F2F1F0 = 0,0,0, CPC Designmål för tidiga (< 1990) mikroprocressorer Addr 0 l+2 0 0 ● ● ● ● – DBEQ D0,addr ; test condition, if not true decrement register and branch ● 11 10 Bakåtkompatibla 2015-01-05 ● ● Avkodning inte allt för svår Tidigare skriven kod fungerade även på nya processorer TSEA28 Datorteknik Y 2015 Processor i Amiga 500 – Ganska populär hemdator – Samtida ungefär med första IBM PC Baserat bl a på ”reverse engineering” – ● Större och längre mikrokod ● Känd som CISC (Complex Instruction Set Computer) TSEA28 Datorteknik Y 2015 Numera används högnivåspråk (kompileras) Analys av 68000 Totalt sett ger det all mer styrlogik/mikroprogramminne 2015-01-05 Förenkla programmering om möjligt – Allt mer och längre instruktionssekvenser – ● Låt varje instruktion göra så mycket som möjligt – ● Fler allt mer komplexa instruktioner och addressmoder (exempel från 68000) MOVM.L D1-D3/A0-A2, -(A7) ; flytta D1-D3, A0-A2 till stacken – Få register, enkel dataväg, få olika instruktioner Fler styrsignaler behövs – Instruktionsorden var korta (8 eller 16 bitar) Programmering gjordes ofta i assembler – Fler interna register – IBM PC: Mer än 640 kByte RAM behöver man inte... – ● Vidareutveckling från 16 bitars datorer och framåt ● – ● 00000 00000 000001 01000000 000 00 00000 00000 000100 01000000 010 00 00000 00000 000000 00000000 000 10 00000 00000 001000 10000000 000 00 00000 10000 000000 00000000 000 00 00000 00000 000010 00010000 000 00 00000 00000 000001 00100000 000 00 00000 00001 000000 00000000 000 01 01010 00101 000000 00000000 000 00 00000 00001 000000 00000000 000 00 00000 00001 000100 00100000 000 00 TSEA28 Datorteknik Y 2015 Minne var dyrt Motsvarande patent och vetenskapliga tidningsartiklar finns även för aktuella processordesigner 70% av ytan till avkodning/kontroll av processor – 12 Görs även idag, finns många websiter med intressanta bilder från aktuella designer 2015-01-05 30% utför beräkningar/flytt av data TSEA28 Datorteknik Y 2015 04/12/2015 22:59 Alternativ för bättre prestanda/effektivitet Analys av prestanda ● CISC (Complex Instruction Set Computer) ● RISC (Reduced Instruction Set Computer) – Stor och komplicerad instruktionsavkodning – Färre och enklare instruktioner än för CISC – Långa (många klockcykler) per instruktion – Minnesaccess ofta begränsad – Långsamma klockcykler – Färre addresseringsmoder ● – Stora minnen används för avkodning ● Exempel på RISC-processorer Viss parallellism mellan olika interna operationer ● – Flytta mellan register ● Räkna upp PC ● Beräkna minnesadresser ● – 13 2015-01-05 TSEA28 Datorteknik Y 2015 14 2015-01-05 Load-Store arkitekturer ● Ofta sedda som RISC-arkitekturer ● Endast två instruktioner får tillgång till minne – – ● ● ● Fler men enklare instruktioner TSEA28 Datorteknik Y 2015 Load-Store arkitektur, forts. ● Exampel på instruktioner som INTE finns i en typisk RISC LOAD : läs från minnet STORE: Skriv till minnet Oftast begränsat antal adresseringsmoder ● – move.b $10080,$4000 ; två minneåtkomster – or.b #$04,$10084 ; läs och skriv till minne, inte bara skriv eller läs Eventuellt möjlig RISC instruktion Ofta får maximalt ett register ändras per instruktion – move.b (a0)+,d0 ; två register ändras! RISC har lite olika betydelse – 15 ARM (finns i smartphones), MIPS (t ex routrar etc.) Program tar ofta större plats i minnet för RISC än för CISC 2015-01-05 Ingen exakt definition finns TSEA28 Datorteknik Y 2015 16 2015-01-05 TSEA28 Datorteknik Y 2015 04/12/2015 22:59 Villkorliga hopp i RISC Antal operander ● En typisk RISC brukar ofta ta tre register som parametrar till instruktionen istället för två ● 68000: add.b d0,d1 ; d1 = d1 + d0 ● ARM: add r0,r1,r2 ; r0 = r1 + r2 – ● Villkorliga hopp fungerar ofta som vanligt – ● Undantag finns Omvänd ordning på destination jämfört med 68000 ● – Flaggregister kan saknas, villkor ligger istället inbakat i hoppinstruktionen – Ex: MIPS: beq r1,r2,label ; hoppa till label om r1=r2 Även villkorlig exekvering av andra instruktioner kan finnas – 17 2015-01-05 TSEA28 Datorteknik Y 2015 18 ● subrutin1: push lr .... bl subrutin2 .... pop lr bx lr Dessa instruktioner läser/skriver i minnet utan att vara rena LOAD/STORE instruktioner Alternativ till JSR/RTS: Länkregister – Vid subrutinanrop sparas återhoppsadressen i ett länkregister (på ARM: lr = r14) – Vid återhopp: Sätt PC = länkregister subrutin2: .... bx ● 19 2015-01-05 TSEA28 Datorteknik Y 2015 TSEA28 Datorteknik Y 2015 Subrutin med länkregister, exempel I en strikt load-store-arkitektur får inte JSR/RTS finnas – Ex: ARM: ADDEQ r1,r2,r3; Om Z = 1 utför r1=r2+r3 2015-01-05 Subrutiner och länkregister i RISC ● Uppdatera programräknare om flagga/flaggor stämmer med villkor 20 lr ; Spara undan återhoppsadress ; Hoppa och länka aktuell PC ; Återställ LR och hoppa ; tillbaks ; Denna subrutin anropar inte någon ; annan subrutin. Alltså behöver inte ; lr sparas undan ; hoppa tillbaks Mer beskrivning av detta hittas i avsnitt 3.8.1 i kursboken 2015-01-05 TSEA28 Datorteknik Y 2015 04/12/2015 22:59 Enklare instruktionsformat ● Sammanfattning RISC Enklare instruktionsformat ger enklare avkodning – Jfr MIA-systemet – Fasta registerfält (avkodar alltid register på samma sätt) – Vissa kombinationer onödiga/har samma funktion ● – ● ● 31 30 26 25 21 20 16 15 ● and r0,r0,r0 ● or r0,r0,r0 Enklare instruktionsformat => Lättare bygga avkodare 0 ● Mindre logik/yta för avkodare Få instruktioner => Lättare bygga avkodare och styrmodul Insparad yta/transistorer kan användas bättre – Fler eller snabbare exekveringsenheter – Fler register Alternativt sparad yta => Billigare chip Dest. Reg Källa1 Omedelbar operand 1 Opkod Dest. Ej använt Reg Källa1 Källa2 26 25 21 20 16 15 11 10 0 3130 0 Opkod 21 2015-01-05 TSEA28 Datorteknik Y 2015 22 2015-01-05 Datorprestanda ● ● 23 Prestandaexempel + area Klockfrekvens har dålig koppling till prestanda ● Prestandamått MIPS: Million Instructions Per Second ● Prestandasiffror från boken ”Embedded software development with C” MIPS: Bättre mått än klockfrekvens – MC68000: Ca 1 MIPS vid 8 MHz 68000 – Fortfarande otydligt: Vad består en instruktion av? – MC68020: Ca 4 MIPS vid 20 MHz 200000 – 80386DX: Ca 8.5 MIPS vid 25 MHz 275000 – ARM2: Ca 4 MIPS vid 4 MHz RISC behöver fler instruktioner än CISC? Bättre mått: SPEC (Standard Performance Evaluation Corporation) 2015-01-05 #Transistorer – ● ● TSEA28 Datorteknik Y 2015 – Benchmarkprogram fokuserar på tid för att slutföra en definierad uppgift (källkod finns) – Fortfarande inte samma som upplevd hastighet hos dator – Flera olika delar testas (heltal, flyttal) med olika deluppgifter TSEA28 Datorteknik Y 2015 24 2015-01-05 TSEA28 Datorteknik Y 2015 25000 04/12/2015 22:59 Ytterligare förbättringar ● ● Analysera sekvens av operationer i en processor – Hämta instruktion – Avkoda instruktion – Hämta operander – Utför instruktion – Spara resultat De flesta delar i processorn används inte hela tiden – Borde gå att hämta nästa instruktion medan föregående instruktion avkodas ● – 25 Alternativ datorarkitektur ● Minne Program och data Processor ● ● Von Neumann 27 Processor Minne data ● TSEA28 Datorteknik Y 2015 26 – RISC-arkitektur av LOAD-STORE typ – Alla register placerade i ”Register file” (klockad) ● – Programminne för sig – Dataminne för sig – Känt som Harvard-arkitektur 2015-01-05 TSEA28 Datorteknik Y 2015 Exekveringstid i exemplet ● Klockfrekvens begränsas av längsta väg från register till nästa register Två register kan läsas och 1 register skrivas samtidigt TSEA28 Datorteknik Y 2015 Går inte med arkitektur som använts hittills: von Neumann. Ny arkitektur: Dela minnet Harvard Inte säkert den kan användas om t ex hopp utförs Enkelt exempel från kursboken (avsnitt 7.2) 2015-01-05 Förenklas om nästa instruktion kan läsas parallellt med att data läses och skrivs i minnet – Minne data Enkel RISC-baserad struktur Chapter 7 Handout från http://alanclements.org/supplements.html Förenklas om få olika möjliga sekvenser Ide: Överlappa operationer från olika instruktioner 2015-01-05 ● Ide att överlappa flera instruktioner kallas pipelining 28 2015-01-05 – Instruktion LDR D,(S1,#L) – tcycle = tpc + tImem + tRF + tALU + tDmem + tMPLX + tRF TSEA28 Datorteknik Y 2015 04/12/2015 22:59 Pipelining, 1:a försöket ● Korta ned tcycle genom att läsa nästa instruktion innan föregående är slut – Utan pipelining tPC Läs Imem Läs RF Pipelining: Fler steg ● Kan dela upp instruktionen ytterligare (Ex 5 steg) Kräver ett register mellan Imem och resten av processor ALU t MPLX Läs Dmem t MPLXSkriv RF tid ● tPC ALU tMPLX – Läs Dmem tMPLXSkriv RF Läs Imem tPC Läs RF t PC 29 2015-01-05 ALU t MPLX Läs Imem TSEA28 Datorteknik Y 2015 www.liu.se Läs Dmem Läs Imem t MPLXSkriv RF Läs RF Hämta instruktion ● Läs operand ● Beräkna (ALU-operation) ● Minnesaccess ● Skriv till registerfil Borde ge upp till 4 gånger högre klockfrekvens Med pipelining Läs RF ● Ger andra problem ● Hoppaddress beräknas sent ● Läsning från dataminne till register ● Användning av registervärde innan värdet tillgängligt ALU 30 2015-01-05 TSEA28 Datorteknik Y 2015
© Copyright 2024