750 likes | 1.1k Views
IS1500 Datorteknik och komponenter. Föreläsning CE F1 Computer Engineering Introduktion. Välkommen till fortsättning av IS1500 Datorteknik och komponenter. ”Hur datorer fungerar” Kursens hemsida finns utpekad från: http://www.ict.kth.se/courses/IS1500 emailadress till lärare:
E N D
IS1500 Datorteknik och komponenter Föreläsning CE F1 Computer Engineering Introduktion IS1500 Datorteknik o k, föreläsning CE - F1
Välkommen till fortsättning avIS1500 Datorteknik och komponenter ”Hur datorer fungerar” Kursens hemsida finns utpekad från: http://www.ict.kth.se/courses/IS1500 emailadress till lärare: is1500@ict.kth.se Kursansvarig: Fredrik Lundevall IS1500 Datorteknik o k, föreläsning CE - F1
IS1500 Datorteknik o kCE - Computer Engineering Datorns funktion på olika nivåer från JAVA/C-kod till NAND-grind • Programexempel: sum = 0 ; for (i=1; i<=17; i=i+1) sum = sum + i; • Exempel på digitala komponenter: IS1500 Datorteknik o k, föreläsning CE - F1
IS1500 Datorteknik o khttp://www.ict.kth.se/courses/IS1500 DC Ö1 DC F1 Digitala komponenter DC F2 DC Ö2 lab dicom CE F1 CE F2 CE Ö1 CE F3 CE Ö2 Assemblerprogram CE F4 CE Ö3 lab nios2time C CE F5 CE Ö4 hemlab C In- och utmatning CE F6 CE Ö5 CE Ö6 lab nios2io Avbrott och "trap" CE F7 CE Ö1 lab nios2int Cacheminnen CE F8 CE Ö2 hemlab cache Trådar, synkronisering CE F9 CE Ö3 hemlab trådar CE F10 CE Ö10 tentamen IS1500 Datorteknik o k, föreläsning CE - F1
LaborationerCE – Computer Engineering Assemblerprogrammering av Nios-processorn • Enkla program på Nios-processorn (nios2time) • I/O på Nios-processorn (nios2io) • Avbrottshantering på Nios-processorn (nios2int) Hemlaborationer • Maskinnära programmering med C (”C-labben”) • Minnessystem med cache-minnen (”Cache-labben”)Prestanda påverkas av parametervärden • Operativsystem, (”OS-labben”) Fördelning av CPU-tidSamverkan mellan processer med semaforer IS1500 Datorteknik o k, föreläsning CE - F1
IS1500 DatorteknikLärare: • Fredrik Lundevall, kursledare, föreläsare, Övn och lab • Johan Wennlund, biträdande kursledare, föreläsare, Övn och lab • Artur Podoba, Övn och lab • Ananya Muddukrishna, Övn och lab • Gunnar Johansson, lab IS1500 Datorteknik o k, föreläsning CE - F1
IS1500 Datorteknik • Föreläsning CE F1, innehåll • CPU - BUS – MEM – I/O • Fetch - Execute • Instruktioner och Data • Instruktionsformat • Adressering - operandutpekning • Hoppinstruktioner IS1500 Datorteknik o k, föreläsning CE - F1
Litteraturhänvisningar • Kursboken, valda delar av kapitel 2,Speciellt sidorna • 74-101 • 105-108 • 128-136 IS1500 Datorteknik o k, föreläsning CE - F1
Köp Nios2-Manual till övningar Nios II Processor Reference HandbookChap 3 & 8 Finns att köpa på ”Delfi-STEX” 40:- (eller skriv ut själv) IS1500 Datorteknik o k, föreläsning CE - F1
Nu börjar det !Programexempel • Java-/C-kod int A, B, C; /* variabler, data */ ... C = A + B; /* program, code/text */ ... IS1500 Datorteknik o k, föreläsning CE - F1
Program i Java/C-kodkompileras/översätts tillASSEMBLER-kod int A, B, C; /* variabler, data */ • översätts (kompileras) till assembler-kod .data # nu kommer data .align 2 # på adress delbar med 4 A: .word 0 # plats för en integer /32 bitar B: .word 0 # plats för en integer /32 bitar C : .word 0 # plats för en integer /32 bitar IS1500 Datorteknik o k, föreläsning CE - F1
Program i Java/C-kodkompileras/översätts tillASSEMBLER-kod C = A + B; /* program, code/text */ • översätts (kompileras) till assembler-kod .text # nu kommer programkod .align 2 # på adress delbar med 4 LOAD R1 <-- A LOAD R2 <-- B ADD R3 <-- R1 + R2 STORE C <-- R3 IS1500 Datorteknik o k, föreläsning CE - F1
Program i ASSEMBLER-kod assembleras/översätts tillMaskinkod / binärkod # maskinkod/binärkod #kommentarer 0010 1101 1111 …. 1101 #LOAD R1 <-- A 0010 1101 1110 …. 1101 #LOAD R2 <-- B 1001 1101 0101 …. 1111 #ADD R3 <-- R1+R2 0011 1111 1101 …. 0010 #STORE C <-- R3 # hur många bitar? IS1500 Datorteknik o k, föreläsning CE - F1
Viktiga delar i en dator CPU BUS program I/O MEM data IS1500 Datorteknik o k, föreläsning CE - F1
Viktiga delar i en dator • MEM - Memory/Minne lagrar program och data (Minne = Lagringsplats) • CPU - Central Processing Unit; den enhet som ”kör program” dvs hämtar och utför instruktioner • IO - Input/Output; enheter för kommunikation med omvärlden • BUS; överföring av information/bitar mellan CPU/MEM/IO IS1500 Datorteknik o k, föreläsning CE - F1
(decode) EXECUTE Programexekvering FETCH (update PC) HÄMTA UTFÖR IS1500 Datorteknik o k, föreläsning CE - F1
Programexekvering FETCH - HÄMTA • PC - Program Counter innehåller en minnesadress som pekar ut aktuell instruktion. • Kopiera en instruktion från minne till processorns IR - Instruction Register • Uppdatera PC för att peka ut nästa instruktion (öka PC med 1/2/4 ...) IS1500 Datorteknik o k, föreläsning CE - F1
Programexekvering EXECUTE - UTFÖR • Decode - Avkoda innehållet i IR – Instruction Register dvs ”lista ut” vilken instruktion som bitkoden i IR motsvarar • Execute - Utför denna instruktion IS1500 Datorteknik o k, föreläsning CE - F1
Minne Generella register Programräknare R0 PC R1 R31 Processorn(t.ex Nios eller MIPS eller …) En förenklad bild av NiosII-arkitekturen med minne. IS1500 Datorteknik o k, föreläsning CE - F1
Programexempel 1 PROGRAMRÄKNAREE PROGRAM COUNTER MINNE uppdatera öka med vad? 4 eller 2 eller LOAD LOAD ADD STORE PROGRAM (.text) LOAD LOAD A:B:C: DATA (.data) ADD STORE IS1500 Datorteknik o k, föreläsning CE - F1
Assembler-instruktionervilka behövs ? exempel ! • LOAD kopiera från minne till CPU • ADD utför aritmetisk operation • STORE kopiera från CPU till minne • SUB utför aritmetisk operation • ADDI Add Immediate • SUBI Subtract Immediate • ... flera ”införs” vid behov ... IS1500 Datorteknik o k, föreläsning CE - F1
Assembler-InstruktionenLOAD Rdst <-- A • LOAD: Läs/Kopiera från minne till register • Destinationsplats är Rdst • Källoperanden finns i minnet på adress A • Effektivadressen till källoperanden är A • En läsning från minnet i Fetch • En läsning från minnet i Execute IS1500 Datorteknik o k, föreläsning CE - F1
Assembler-InstruktionenSTORE C <-- Rsrc • STORE: Skriv/Kopiera från register till minne • Källoperand finns i Rsrc • Destinationsplats i minnet på adress C • Effektivadressen till destinationen är C • En läsning från minnet i Fetch • En skrivning till minnet i Execute IS1500 Datorteknik o k, föreläsning CE - F1
Assembler-InstruktionenADDITION • ADD Rdst, Rsrc1 , Rsrc2 Utför addition av två värden, som vardera upptar 32 bitar, hämtade från register Rsrc1 och Rsrc2 och skriver summan till register Rdst • En läsning från minnet (Fetch) • Rdst Rsrc1 + Rsrc2 IS1500 Datorteknik o k, föreläsning CE - F1
INSTRUKTIONSFORMAT binärkodsformat ADD Rdst, RsrcA, RsrcB ADD 6 5 5 5 bitar per fält Hur många bitar behövs ? 3 regadr + opcode ! Hur stor blir varje instruktion ? 21 bitar ! INSTRUKTIONSFORMAT enligt ovan IS1500 Datorteknik o k, föreläsning CE - F1
INSTRUKTIONSFORMAT Binärkod i Nios II, 32 bitar ADD Rdst, RsrcA, RsrcB 0x31 0x00 0x3a 5 5 5 6 5 6 bitar per fält Hur många bitar behövs ? 15 + op-code Hur stor är varje instruktion ? 32 bitar ! INSTRUKTIONSFORMAT enligt ovan IS1500 Datorteknik o k, föreläsning CE - F1
Assembler-InstruktionenSUBTRAKTION • SUB Rdst, Rsrc1 , Rsrc2 Utför subtraktion mellan två värden som vardera upptar 32 bitar hämtade från register Rsrc1 och Rsrc2 och skriver skillnaden till register Rdst • En läsning från minnet (Fetch) • Rdst Rsrc1 - Rsrc2 IS1500 Datorteknik o k, föreläsning CE - F1
Nytt Programexempel C = A + 17 # addera med konstant • ”kan översättas” till LOAD R1 <-- A ADDI R3 <-- R1 + 17 #ny instruktion STORE C <-- R3 IS1500 Datorteknik o k, föreläsning CE - F1
Assembler-InstruktionenADDITION, Add Immediate • ADDI Rdst, Rsrc1 , datan Utför addition av två värden, som vardera upptar 32 resp. n bitar, hämtade från register Rsrc1 samt ???, och skriver summan till register Rdst • En läsning från minnet (Fetch) ??? • Rdst <-- Rsrc1 + datan IS1500 Datorteknik o k, föreläsning CE - F1
Assembler-InstruktionenSUBTRAKTION, Sub Immediate • SUBI Rdst, Rsrc1 , datan Utför subtraktion mellan två värden som vardera upptar 32 resp. n bitar hämtade från register Rsrc1 samt ???, och skriver skillnaden till register Rdst • En läsning från minnet (Fetch) ??? • Rdst <-- Rsrc1 - datan IS1500 Datorteknik o k, föreläsning CE - F1
INSTRUKTIONSFORMAT binärkodsformat ADDI Rdst, Rsrc, datan SUBI Rdst, Rsrc, datan ADDI/SUBI 6 5 5 n bitar per fält Hur många bitar behövs? 16 + n ! Hur stor blir varje instruktion? 16+n! INSTRUKTIONSFORMAT enligt ovan Vilket värde bör man välja för n? 16! IS1500 Datorteknik o k, föreläsning CE - F1
INSTRUKTIONSFORMAT Binärkod i Nios II, 32 bitar ADDI Rdst, RsrcA, Data 0x04 5 5 16 6 bitar per fält SUBI rB, rA, IMM16 ADDI rB, rA, -IMM16 IMM16 innehåller ett 2-komplement-tal ... Intruktionen SUBI får man ”gratis” IS1500 Datorteknik o k, föreläsning CE - F1
OperandutpekningAdressering Exempel på varianter ”Var finns operanden” • I register, med namn/nummer, t.ex. i R4 Vilka register finns? t.ex. R0--R31 (~få !) (”snabbt”, register finns inne i CPU-chipet) • I minnet, på en viss adress t.ex. 0x046C (”långsamt”, minnet finns utanför CPU-chipet)Hur många platser finns? (~många !) IS1500 Datorteknik o k, föreläsning CE - F1
Effektivadressvid operand i minnet • Vid operandutpekning i minnet gäller Effektiva Adressen är adressen till den plats i minnet där operanden lagras IS1500 Datorteknik o k, föreläsning CE - F1
Operandutpekning medoperand i minnet • Effektivadress i instruktionens ”adressfält” • Effektivadress i ett register • Operand i instruktionens ”datafält” • Indexerad adressering • Självrelativ adressering, PC-relativ • … det finns fler varianter ... IS1500 Datorteknik o k, föreläsning CE - F1
Direkt adress (ej indirekt)Absolut adress (ej relativ) • Instruktionens adressfält innehållereffektivadressen (EA) • effektivadressen är adressen till den plats i minnet där operanden lagras till exempel: LOAD reg <- Addr # reg := mem(Addr) reg Addr LOAD IS1500 Datorteknik o k, föreläsning CE - F1
Direkt operand(Immediate addressing) • Instruktionens ”adressfält” innehålleroperandvärdet • effektivadress är inte relevant exempel: MOVI reg <- Data #reg := Data reg Data MOVI IS1500 Datorteknik o k, föreläsning CE - F1
Register operand(Register addressing) • Ett register innehålleroperandvärdet • effektivadress är inte relevant • Kan betecknas direkt via register exempel: MOVE reg1 <- reg2 #reg1 := reg2 ??? reg reg MOVE IS1500 Datorteknik o k, föreläsning CE - F1
Register indirect addressing(Indirekt adress via register) • Ett register innehåller effektivadressen • Effektivadressen är adressen till den plats i minnet där operanden lagras exempel: LOAD reg1 <- (reg2) #reg1 := mem(reg2) ??? reg1 reg2 LOAD IS1500 Datorteknik o k, föreläsning CE - F1
Indexerad adressering(Displacement addressing) • Effektivadressen är adressen till den plats i minnet där operanden lagras • Effektivadressen är summan avinnehåll i instruktionens adressfält ochinnehåll i angivet indexregister exempel: LOAD reg <- offset(INDEXREG) reg := mem (offset+indexreg) offset reg LOAD indexreg IS1500 Datorteknik o k, föreläsning CE - F1
Indexerad adressering Exempel på specialfall LOAD Offset(Indexregister) • Offset = 0 ger ”adress i register” • Indexregister innehåller 0 ger direkt (absolut) adress • Indexregister = PC ger PC-relativ adressering= själv-relativ adressering IS1500 Datorteknik o k, föreläsning CE - F1
Självrelativ adresseringPC-relativ adressering(specialfall av Indexerad adressering) • Effektivadressen är adressen till den plats i minnet där operanden lagras • Effektivadressen är summan avinnehåll i instruktionens adressfält och(aktuellt) innehåll i Program Counter (PC) IS1500 Datorteknik o k, föreläsning CE - F1
Next Body1 Body2 Cond ? Java/C-kod: if-sats ger behov av hopp If: if (cond) then body1 else body2; leder till flödes-schema enligt figur till höger Vi får behov av HOPP VILLKORLIGT HOPP OVILLKORLIGT HOPP True False IS1500 Datorteknik o k, föreläsning CE - F1
init start Next Body update Cond ? Java/C-kod: for-loop ger behov av hopp init; for (start; cond; update) body; leder till flödes-schema enligt figur till höger Vi får behov av HOPP OVILLKORLIGT HOPP VILLKORLIGT HOPP (även while, repeat-until, ...) Test: False True IS1500 Datorteknik o k, föreläsning CE - F1
Effektiv adressvid hoppinstruktioner • Vid hoppinstruktioner gäller: Effektiva Adressen är det värde som skrivs till PC dvs adressen till den plats i minnet där programmet ska fortsätta IS1500 Datorteknik o k, föreläsning CE - F1
Ovillkorliga hoppJUMP och BRA • JUMP brukar ha direkt adress • BRA brukar ha PC-relativ adress 32: JMP 104 # PC := 104 ”hopp till 104” . . 104: 224: BRA 40 # PC := pc + 40 ”hopp till 268” 268: IS1500 Datorteknik o k, föreläsning CE - F1
JMP Label # symbolisk adressöversätts tillJMP addr # numerisk absolutadressav översättaren/assemblern RUT: ADD … t.ex.500 520: JMP RUT 500: ADD … 520: JMP 500 IS1500 Datorteknik o k, föreläsning CE - F1
BRA Label # symbolisk adressöversätts tillBRA disp # numerisk displacementav översättaren/assemblern RUT: ADD … t.ex.500 520: BRA RUT 500: ADD … 520: BRA -24 IS1500 Datorteknik o k, föreläsning CE - F1
JMP ger icke relokerbar kodpå grund av absolut adressering RUT: ADD … t.ex. 500 520 JMP 500 hopp tillfel plats relokering RUT: ADD … ny plats JMP 500 Efter relokering Före relokering IS1500 Datorteknik o k, föreläsning CE - F1
BRA ger relokerbar kodtack vare PC-relativ adressering RUT: ADD … t.ex. 500 520 BRA -24 hopp tillrätt plats relokering RUT: ADD … ny plats BRA -24 Efter relokering Före relokering IS1500 Datorteknik o k, föreläsning CE - F1