Mikroarkitektur. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

Størrelse: px
Starte visningen fra side:

Download "Mikroarkitektur. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet"

Transkript

1 Mikroarkitektur Niels Olof Bouvin Institut for Datalogi Aarhus Universitet 1

2 Level 1: Mikrokode niveauet Level 5 Problem-oriented language level Translation (compiler) Level 4 Assembly language level Translation (assembler) Level 3 Operating system machine level Partial interpretation (operating system) Level 2 Instruction set architecture level Interpretation (microprogram) or direct execution Level 1 Micro-architecture level Hardware Level 0 Digital logic level 2

3 Oversigt Mic-1 s mikroarkitektur Introduktion til IJVM 3

4 Maskinniveauet Central Processing Unit (CPU) Control Unit Den generelle von Neumann maskine Arithmetic Logic Unit (ALU) Registers Input/Output devices Moderne CPUer ser alle ud som denne Vort eksempel er Mic-1 Main Memory Disk Printer simplere end (langt) de fleste CPUer, men stadig en god illustration Bus I dag skal vi se på Mic-1 s arkitektur og IJVM næste gang ser vi på, hvorledes IJVM kan realiseres ved hjælp af mikroprogrammering på Mic-1 4

5 IJVM instruktionerne og arbejdet bag dem Afvikles i en uendelig løkke bestående af fetch / decode / execute Mere specifikt: 1. Fetch the next instruction from memory into the instruction register 2. Change the program counter to point to the following instruction 3. Decode the type of instruction just fetched 4. If the instruction uses a word in memory, determine where it is 5. Fetch the word, if needed, into a CPU register 6. Execute the instruction 7. Go to step 1 to begin executing the next instruction 5

6 Execute? A + B A Registers Involverer som regel den aritmetisk logiske enhed (ALU en) Operander må typisk hentes ind fra lageret før ALU en kan operere på dem i forbindelse med udførsel af instruktionen Central Processing Unit (CPU) Control Unit Arithmetic Logic Unit (ALU) Registers Main Memory B A ALU A + B Input/Output devices Disk Printer B ALU Input registers ALU input bus ALU output register Bus 6

7 Registre Kan lagre et antal bits afhængig af registerbredden (typisk 8-64 bit) Central Processing Unit (CPU) Control Unit Kontrolinformation program counter instruktionsregister stack pointer stack frame pointer Arithmetic Logic Unit (ALU) Registers Main Memory Input/Output devices Disk Printer Operander (data) Bus Ikke alle registre er tilgængelige for ISA-programmøren ingen er tilgængelig via IJVM 7

8 Hukommelse En byte er 8 bit Et ord (word) afhænger som regel af maskinens registerbredde (oftest 4 eller 8 bytes) Hukommelse bruges til programmet (i form af absolut maskinkode) og data (operander) Organiseret som en sekvens af celler (angivet med adresse 0,,N-1), som gemmer et vist antal bits afhængig af den pågældende maskinarkitektur 8

9 Datadelen af Mic-1: Registre og busser MAR Memory Address Register. Adressen på et word i lageret (32-bit) MDR Memory Data Register. Indeholder word udpeget af MAR (32-bit) PC Program Counter. Adressen på næste instruktion (32-bit) MBR Memory Buffer Register. Til bytes fra method area (8- eller 32-bit) TOS Top of Stack. Kopi af det øverste element på stakken OPC Opcode Register. Temporær register. H A B C input register til ALU. Input fra C bus fra H til ALU bus fra registrene til ALU bus fra ALU til registrene 9

10 Kontrol af Mic-1 s Aritmetiske Logiske Enhed ALUen styres med 6 input bits Disse kan kombineres efter behag her er de typiske kombinationer (F 0 og F 1 vælger funktionen) N Z 1, hvis output fra ALU er negativt 1, hvis output fra ALU er 0 Shifteren kan to ting SLL8 (Shift Left Logical 8): Skubber bits én byte til venstre (fylder ud med nuller) SRA1 (Shift Right Arithmetic 1): Skubber bits (med fortegnsforlængelse) 1 bit til højre (ækvivalent til heltalsdivision med 2) 10

11 Timing is everything Hvad sker der i løbet af et taktslag (clock cycle)? Elektriske signaler tager tid Digital logik tager tid, før det stabiliserer sig w, x, y, z angiver tidsrum til de enkelte undertrin A 11

12 Timing af PC=PC A 12

13 Timing af PC=PC A 13

14 Timing af PC=PC A 14

15 Timing af PC=PC A 15

16 Timing af PC=PC A 16

17 Mikroarkitekturen i al sin gru og skønhed dette diagram kan realiseres i hardware Kontrolenheden styrer fetch/ decode/execute cyklen Control store MPC indeholder mikroprogrammet PC for mikroprogrammet MIR den aktuelle mikroinstruktion Registre Beregningsenhed Mic-1 A bus Kontrolenhed 17

18 Hukommelsestilgang fra Mic-1 Stack Constant Pool Method Area } bytes words PC/MBR bruges til at tilgå Method Area med byteadresser MAR/MDR bruges til at tilgå Constant Pool og Stak med wordadresser Mic-1 s hukommelse tilgås faktisk med byteadresser derfor er det nødvendigt at shifte MAR 2 bit til venstre (dvs.gange med 4) Cykel k Cykel k+1 Cykel k+2 MAR/PC sættes MBR/MDR kan læses Hukommelsen & bussen arbejder Timing: Hvis PC/MAR sættes i cycle k, kan MBR/MDR læses i cycle k+2 18

19 Fra MBR til B-bus: Unsigned og signed MBR har to kontrolsignaler, fordi den 8-bits værdi, som den kan indeholde kan sendes ud på B-bussen (der er 32-bit bred) på to måder: Unsigned praktisk, når byteværdien f.eks. skal sættes sammen med en anden unsigned byte til en 16-bits værdi, eller bruges til opslag i et indeks. Eksempel: iload 1 de første 24 bits sættes til 0 Signed bruges til værdier mellem -128 og 127. Eksempel: bipush 42 de første 24 bits sættes til kopier af den mest betydende bit af de 8 bits (altså eller ). Dette kaldes sign extension 19

20 H registret: Venstre input til ALU Der er kun to busser forbundet til registrene, B og C til input til hhv. output fra ALU og shifter Mic-1 er et basalt design, så der er ingen tredje bus, som registrene kunne sende input ud på A bus Men en ALU har behov for to input til mange operationer! Registret H tjener som fast inputsregister til ALUen den kan naturligvis slås fra, om nødvendigt (ENA sættes til 0) Det betyder, at det kan være nødvendigt at sende input over B bussen igennem ALUen over C bussen til H, for dernæst at foretage den operation med ALUen, som man ønsker sig ikke optimalt, men simpelt. Mic-2 (beskrevet i Chapter 4.4) har tre busser 20

21 Mikroinstruktionsformatet CPUen kontrolleres ved at sætte de rigtige kontrolsignaler Kontrolinstruktionerne til CPUen (mikroprogrammet) ligger i Control Store Formatet afhænger af hvor mange signaler, der skal til for at kontrollere CPUen. På Mic-1 bliver det 24 kontrol bits, 9 adresse bits og 3 JAM bits vi kan skrive til flere registre simultant på C-bussen (hvis vi vil), men vi kan kún kopiere ét register til B-bussen af gangen 21

22 NEXT_ADDRESS JAM ALU Mikroinstruktionsformatet En mikroinstruktion indeholder altid adressen på næste instruktion (512 words 9 bit er nok) bruges til at modificere NEXT_ADDRESS, f.eks. ved branching og goto ALU og shifter håndteres her under ét C-bus vs. B-bus adressering det kan være nødvendigt at udpege flere registre som destination, derfor en bit/et signal per register der skal kun bruges ét register som input (foruden H) til ALU, så 9 registre kan nemt enkodes i 4 bit Memory fetch bruges til PC/MBR; read/write bruges til MDR/MAR B-bus registre 0 = MBR 5 = LV 1 = PC 6 = CPP 2 = MBR 7 = TOS 3 = MBRU 8 = OPC 4 = SP 9-15 er ubrugte Micro address NEXT_ADDRESS 9 JAM ALU C-bus Memory JMPC JAMN JAMZ SLL8 SRA1 F₀ F₁ ENA ENB INVA INC H OPC TOS CPP LV SP PC MDR MAR WRITE READ FETCH B-bus B-bus 4 22

23 PC=PC+1 som mikroinstruktion 1 1????????? B-bus registre 0 = MBR 5 = LV 1 = PC 6 = CPP 2 = MBR 7 = TOS 3 = MBRU 8 = OPC 4 = SP 9-15 er ubrugte Mikroinstruktioner leverer signaler til styre beregningsenheden, samt registrenes adgang til busserne og hukommelsen Mikroinstruktionerne hentes fra kontrollageret, der er helt adskilt fra det sædvanlige lager Den næste mikroinstruktion står enten i NEXT_ADDRESS eller udvælges 23

24 Udvælgelse af næste mikroinstruktion Ofte kan man blot vælge instruktionen angivet i NEXT_ADDRESS den sædvanlige udførsel af mikroinstruktioner bemærk, at mikroinstruktionerne ikke nødvendigvis ligger sekventielt Men hvordan håndteres goto og branches? 24

25 Input til udvælgelse af næste mikroinstruktion N / Z resultatet fra ALU er negativt eller nul MBR JAMN / JAMZ angiver om N/Z skal bruges ved udvælgelse af næste mikroinstruktion Addr MBR 9 bit fra den aktuelle mikroinstruktion i MIR 8 bit fra MBR registret JMPC angiver om MBR skal bruges ved udvælgelse af næste mikroinstruktion 25

26 Beregning af næste mikroinstruktion: JAMZ og JAMN Hvis JAM er 000, så brug NEXT_ADDRESS overført til MPC MBR Hvis JAMN eller JAMZ er 1, sættes den højeste bit i MPC efter denne formel MPC[8] = (JAMZ AND Z) OR (JAMN AND N) OR NEXT_ADDRESS[8] Dvs., at hvis der er et negativ (eller nul) resultat fra ALU (og hvis vi bruger det), så lægges ₂ ( el ) til NEXT_ADDRESS der skal altså hoppes 100₁₆ (2⁸) mikroinstruktioner frem i mikroprogrammet: 26

27 Beregning af næste mikroinstruktion: JMPC Hvis JAM er 000, så brug NEXT_ADDRESS overført til MPC MBR Hvis JMPC er 1, sættes MPC til MPC = MBR OR NEXT_ADDRESS her vil NEXT_ADDRESS enten være 000₁₆ eller 100₁₆ Dvs., at MPC derefter er 0MBR eller 1MBR, alt efter om den højeste bit i NEXT_ADDRESS var sat Dette er superpraktisk, for det betyder, at vi kan hoppe til (mikro)adresser defineret ved opcodes dette er en virkelig elegant løsning på decoding af instruktioner 27

28 Mic-1 En simpel mikroarkitektur men med alt hvad man behøver Mic-1 er blot selve arkitekturen, ikke et instruktionssæt (ISA) Men man kan bygge et instruktionssæt ovenpå Mic-1 28

29 Oversigt Mic-1 s mikroarkitektur Introduktion til IJVM 29

30 Level 2: Maskinniveau (ISA) Level 5 Problem-oriented language level Translation (compiler) Level 4 Assembly language level Translation (assembler) Level 3 Operating system machine level Partial interpretation (operating system) Level 2 Instruction set architecture level Interpretation (microprogram) or direct execution Level 1 Micro-architecture level Hardware Level 0 Digital logic level 30

31 Maskinniveauet! Machine Language: You try to shoot yourself in the foot only to discover you must first reinvent the gun, gunpowder, the bullet, and your foot. 31

32 Maskinkodeinstruktionsformat og -repræsentation Højniveausprog k = 6-i-j; Symbolsk maskinkode bipush 6 iload 1 isub iload 2 isub istore 3 Absolut maskinkode 0x10 0x06 0x15 0x01 0x64 0x15 0x02 0x64 0x36 0x03 Den absolutte maskinkode er her opskrevet i heksadecimal for letlæselighed, men ligger som binære tal i hukommelsen 32

33 Hvorfor skrive maskinkode? Alle andre sprog er abstraktioner, der skjuler egenskaber hos CPUen oftest med god grund men ikke altid! Hvis man har behov for at skrive en compiler (det kommer I til senere i dovs) tale med hardware på laveste niveau (f.eks. skrive en devicedriver) få absolut maksimal performance (i tidskritiske applikationer) have den mindst mulige kode (på meget små enheder) så er maskinkode sandsynligvis et godt valg til nogle dele af ens program Hvis man har behov for at forstå, hvordan computere faktisk fungerer så er maskinekode ikke til at komme udenom 33

34 IJVM s ISA En kraftigt reduceret udgave af Java Virtual Machine Kun simple integeroperationer Ingen objektorientering Ingen synlige registre alt foregår på stakken 34

35 Register CPUer Langt den mest udbredte løsning Data og mellemregninger gemmes i registre lokalt på CPUen meget, meget hurtigt (registrene sidder direkte sammen med ALU etc) begrænset plads der kan kun være relativt få registre man bliver derfor nødt til jonglere en del med de registre, der er til rådighed instruktioner kan blive komplicerede i adressering ( register-register, register-hukommelse, ) historisk betingede omstændigheder kan begrænse antallet af registre (f.eks. x86-familien) eller reservere særlige registre til særlige formål (igen er x86-familien et godt eksempel) Når udregningerne er udført (eller vi har behov for registrene til andre, vigtigere formål), gemmes data i hukommelsen og det tager lang tid, ligesom det tager lang tid at hente data fra hukommelsen 35

36 Stak-baserede CPUer I stedet for at bruge registre, gemmes data og mellemregninger på en stak naturligvis er der registre, men de er skjulte for ISA-niveauet og opefter Fleksibelt: Stakken kan blive større og mindre efter behov Stakken kan være langt større end et begrænset antal registre En elegant løsning, der er let at programmere til intet behov for at jonglere med registre instruktioner kan være særdeles uniforme Men: Hvis stakken ligger i den almindelige hukommelse, så bliver der langt fra CPU til data hvilket er årsagen til, at det nu kun sjældent implementeres i hardware 36

37 Regning på en stak: Omvendt Polsk Notation RPN (Reversed Polish Notation) efter Jan Łukasiewicz Eliminerer behovet for parenteser og precedensregler Infix RPN A + B A B + A + B C B C A + A B + C D A B C D + A (B + C) D B??????????????????????????? C + A D ((A + B) C + D)/(E + F + G) A??????????????????????????? B + C D + E F + G + / Findes i programmeringssprog som PostScript og Forth, samt lommeregnere fra Hewlett-Packard 37

38 JVM ordreformat IJVM bruger en delmængde heraf 38

39 IJVM ISA: Stakoperationer bipush A ( -- A) Putter A (der er en signed byte) på stakken dup (A -- A, A) Putter det øverste element på stakken en gang til pop (A -- ) Fjerner det øverste element på stakken swap (A, B -- B, A) Bytter om på de to øverste elementer på stakken 39

40 IJVM ISA: Beregninger iadd (A, B -- A+B) Fjerner de to øverste ord på stakken, og putter summen af dem på stakken isub (A, B -- A-B) Fjerner de to øverste ord på stakken, og putter differencen mellem dem på stakken iand (A, B -- A&&B) Fjerner de to øverste ord på stakken, og putter logisk AND af dem på stakken ior (A, B -- A B) Fjerner de to øverste ord på stakken, og putter logisk OR af dem på stakken 40

41 IJVM ISA: Sammenligninger og branches goto offset Lægger offset (16-bit, signed) til PC ifeq offset (A -- ) Fjerner det øverste ord på stakken, og hvis det er nul lægger offset til PC iflt offset (A -- ) Fjerner det øverste ord på stakken, og hvis det er mindre end nul lægger offset til PC if_icmpeq offset (A, B -- ) Fjerner de to øverste ord på stakken, og hvis de er ens lægger offset til PC 41

42 Et simpelt program add.j.method main bipush 7 bipush 6 iadd ireturn ijvm-asm add.j add.bc ijvm add.bc add.bc main index: 0 method area: 10 bytes ac constant pool: 1 words IJVM Trace of add.bc stack = 0, 1, 5 bipush 7 [10 07] stack = 7, 0, 1, 5 bipush 6 [10 06] stack = 6, 7, 0, 1, 5 iadd [60] stack = 13, 0, 1, 5 ireturn [ac] stack = 13 return value: 13 42

43 Method area? Stack? Constant pool? IJVMs hukommelse (4 GB (2 32 bytes)) opdelt i tre områder: Constant pool, SP stack og metode area. Disse bestyres af fire 32-bit registre: Program Counter (PC) Udpeger aktuel instruktion (byte) i method area Constant Pool Pointer (CPP) Udpeger bunden (word) af constant pool i lageret Stack Pointer (SP) Udpeger toppen (word) af stakken Local Variable Frame Pointer (LV) Udpeger bunden (word) af det aktuelle stakafsnit Constant Pool CPP Current Operand Stack 3 Local Variable Frame 3 Local Variable Frame 2 Local Variable Frame 1 LV Method Area PC 32 bit 32 bit 8 bit 43

44 Stakken Bruges altså til beregninger og mellemresultater Samt til udførsel af metodekald 44

45 Metodekald Hvert kald har behov at få et nyt sæt argumenter Hvert kald har behov for sine egne lokale variabler Når kaldet afsluttes, skal verden genoprettes, så vi kommer tilbage til det rigtige sted i koden, og så vi har de rigtige argumenter/variabler klar for det pågældende kald Så hvordan gør vi dét? /* find_min.c */ #include <stdio.h> #include <stdlib.h> int min(int a, int b) { int r; } if (a >= b) { r = b; } else { r = a; } return r; int main(int argc, char *argv[]) { int a = atoi(argv[1]); // første tal på cmdlinjen int b = atoi(argv[2]); // andet tal på cmdlinjen printf("%d\n", min(a, b)); // } 45

46 IJVM ISA: Metodekald og lokale variabler invokevirtual disp kalder en metode disp angivet med et 2 bytes (16 bit) indeks i Constant Pool. Etablerer en ny stack frame med ny LV og SP, og gemmer de gamle værdier af LV, SP og PC så de kan reetableres senere ireturn returnerer fra et metodekald med det øverste word på stakken som resultat. Nedlægger den nuværende stack frame og genopretter den foregående, herunder de gamle PC, LV og SP registre iload n kopierer det n te (n er en byte, talt fra 1) word fra Local Variable Frame og putter det øverst på stakken istore n kopierer det øverste element fra stakken og gemmer det som det n te (n er en byte, talt fra 1) word i Local Variable Frame 46

47 invokevirtual De gamle værdier gemt Arbitrær værdi (place holder) callee's Med denne pointer kan verden genskabes (a) Inden kald til invokevirtual, efter parametre er puttet på stakken (b) Efter invokevirtual er udført 47

48 ireturn Callee's (a) Inden kald til ireturn (b) Efter ireturn er udført 48

49 find_min.j.method main // int main.args 3 // ( int a, int b ).define a = 1.define b = 2 // { bipush 88 // Push some object reference iload a iload b /* find_min.c */ #include <stdio.h> #include <stdlib.h> int min(int a, int b) { int r; } if (a >= b) { r = b; } else { r = a; } return r; invokevirtual min ireturn int main(int argc, char *argv[]) { int a = atoi(argv[1]); // fã rste tal pã cmdlinjen int b = atoi(argv[2]); // andet tal pã cmdlinjen printf("%d\n", min(a, b)); // } // return min (a,b); // }.method min // int min.args 3 // ( int a, int b ){.define a = 1.define b = 2.locals 1 // int r;.define r = 3 iload a // if ( a >= b ) iload b isub // stack = a - b,... ; a - b < 0 => a < b iflt else iload b // r = b; istore r goto end_if else: // else iload a // r = a; istore r end_if: iload r // return r; ireturn // } 49

50 find_min.bc main index: 0 method area: 40 bytes b ac b 00 0a a ac constant pool: 2 words e Genereret med kommandoen ijvm-asm find_min.j find_min.bc 50

51 Antal argumenter for main Antal argumenter for min Start adresse for main, udpeget af main index: 0 find_min.bc main index: 0 method area: 40 bytes bipush 88 (88d = 0x58) iload iload 2 10 b invokevirtual 1 13 ac ireturn iload iload isub 23 9b 00 0a iflt 10 (10d = 0x0a) iload istore 3 30 a goto iload istore iload 3 39 ac ireturn constant pool: 2 words e Antal lokale variabler for main Antal lokale variabler for min Start adresse for min (14d = 0x0e) 51

52 Kørsel af ijvm find_min.bc 9 8 IJVM Trace of find_min.bc stack = 0, 1, 8, 9, 15 bipush 88 [10 58] stack = 88, 0, 1, 8, 9, 15 iload 1 [15 01] stack = 9, 88, 0, 1, 8, 9, 15 iload 2 [15 02] stack = 8, 9, 88, 0, 1, 8, 9, 15 invokevirtual 1 [b ] stack = 12, 13, 0, 8, 9, 21, 0, 1, 8, 9, 15 iload 1 [15 01] stack = 9, 12, 13, 0, 8, 9, 21, 0, 1, 8, 9, 15 iload 2 [15 02] stack = 8, 9, 12, 13, 0, 8, 9, 21, 0, 1, 8, 9, 15 isub [64] stack = 1, 12, 13, 0, 8, 9, 21, 0, 1, 8, 9, 15 iflt 10 [9b 00 0a] stack = 12, 13, 0, 8, 9, 21, 0, 1, 8, 9, 15 iload 2 [15 02] stack = 8, 12, 13, 0, 8, 9, 21, 0, 1, 8, 9, 15 istore 3 [36 03] stack = 12, 13, 8, 8, 9, 21, 0, 1, 8, 9, 15 goto 7 [a ] stack = 12, 13, 8, 8, 9, 21, 0, 1, 8, 9, 15 iload 3 [15 03] stack = 8, 12, 13, 8, 8, 9, 21, 0, 1, 8, 9, 15 ireturn [ac] stack = 8, 0, 1, 8, 9, 15 ireturn [ac] stack = 8 return value: 8 Decimal Heksadecimal Decimal (Sådan er det bare) 52

53 Kørsel af ijvm find_min.bc 9 8 IJVM Trace of find_min.bc Argumenter for main stack = 0, 1, 8, 9, 15 4 bipush 88 [10 58] stack = 88, 0, 1, 8, 9, 15 6 iload 1 [15 01] stack = 9, 88, 0, 1, 8, 9, 15 8 iload 2 [15 02] stack = 8, 9, 88, 0, 1, 8, 9, invokevirtual 1 [b ] stack = 12, 13, 0, 8, 9, 21, 0, 1, 8, 9, iload 1 [15 01] stack = 9, 12, 13, 0, 8, 9, 21, 0, 1, 8, 9, iload 2 [15 02] stack = 8, 9, 12, 13, 0, 8, 9, 21, 0, 1, 8, 9, isub [64] stack = 1, 12, 13, 0, 8, 9, 21, 0, 1, 8, 9, iflt 10 [9b 00 0a] stack = 12, 13, 0, 8, 9, 21, 0, 1, 8, 9, iload 2 [15 02] stack = 8, 12, 13, 0, 8, 9, 21, 0, 1, 8, 9, istore 3 [36 03] stack = 12, 13, 8, 8, 9, 21, 0, 1, 8, 9, goto 7 [a ] stack = 12, 13, 8, 8, 9, 21, 0, 1, 8, 9, iload 3 [15 03] stack = 8, 12, 13, 8, 8, 9, 21, 0, 1, 8, 9, ireturn [ac] stack = 8, 0, 1, 8, 9, ireturn [ac] stack = 8 return value: 8 OBJREF Overskrives straks med link pointer Argumenter til min Lokal variabel for min Link pointer overskrives med return værdien 53

54 Opsummering Mic-1: Mikroarkitekturen Registre, busser, ALU Mikroinstruktioner IJVM maskinen Registre: PC, SP, LV, CPP Lagermodel: method area, constant pool, stakken Metodekald og stakafsnit, parametre og lokale variabler IJVM simulatoren Bytecode kode Kørsel med stack trace 54

55 Ugeopgave 2 55

Niveauer af abstrakte maskiner

Niveauer af abstrakte maskiner Mikroarkitektur Niveauer af abstrakte maskiner Spørgsmål... Hvordan realiseres IJVM maskinen (lev. 2), eller hvordan ser en IJVM-CPU ud? Opbygning (mikroarkitekturen Mic-1) Anvendelse (mikroprogrammet

Læs mere

Mikroprogrammering. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

Mikroprogrammering. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet Mikroprogrammering Niels Olof Bouvin Institut for Datalogi Aarhus Universitet Oversigt Mikroprogrammering: IJVM implementeret på Mic-1 Forbedringer af Mic-1 Metode til udvikling af symbolske maskinsprogsprogrammer

Læs mere

Eksamen dcomnet Q2/2010. Navn

Eksamen dcomnet Q2/2010. Navn 2582 Eksamen dcomnet Q2/2010 ID Navn Example I A32-prg1 Betragt følgende program skrevet i IA-32 symbolsk maskinsprog:.section.data x:.long 2 r:.long 27.section.text.globl _start _start: pushl x movl $0,%ebx

Læs mere

Maskinarkitektur. Lars Kristensen kris@daimi.au.dk. Christian Storm cstorm@daimi.au.dk. dmasark 1

Maskinarkitektur. Lars Kristensen kris@daimi.au.dk. Christian Storm cstorm@daimi.au.dk. dmasark 1 Maskinarkitektur Lars Kristensen kris@daimi.au.dk Christian Storm cstorm@daimi.au.dk dmasark 1 Praktiske oplysninger http://www.daimi.au.dk/dmasark dmasark 2 Forelæsninger Tirsdag 12.15-14.00, Store Aud,

Læs mere

Computerarkitektur Eksamen 2014Q3. Niels Olof Bouvin. Studienummer Navn

Computerarkitektur Eksamen 2014Q3. Niels Olof Bouvin. Studienummer Navn Computerarkitektur Eksamen 2014Q3 Niels Olof Bouvin Studienummer Navn Vejledning Eksamen varer en time fra kl. 9 til kl. 10. Husk at skrive studienummer og navn tydeligt på forsiden, inden eksamen afsluttes.

Læs mere

Computere og Netværk (dcomnet)

Computere og Netværk (dcomnet) Computere og Netværk (dcomnet) http://www.cs.au.dk/dcomnet Jens Kargaard Madsen (jkm@iha.dk) Jens Bennedsen (jbb@iha.dk) dcomnet 1 Computere og netværk Beskrivelse At give den studerende kendskab til computere

Læs mere

dcomnet-nr. 6 Talrepræsentation Computere og Netværk (dcomnet)

dcomnet-nr. 6 Talrepræsentation Computere og Netværk (dcomnet) dcomnet-nr. 6 Talrepræsentation Computere og Netværk (dcomnet) Efterår 2009 1 Talrepræsentation På maskinkodeniveau (Instruction Set Architecture Level) repræsenteres ordrer og operander ved bitfølger

Læs mere

Eksamen Computerarkitektur 2013Q4. Niels Olof Bouvin. Studienummer Navn

Eksamen Computerarkitektur 2013Q4. Niels Olof Bouvin. Studienummer Navn Eksamen Computerarkitektur 2013Q4 Niels Olof Bouvin Studienummer Navn Vejledning Eksamen varer en time fra kl. 9 til kl. 10. Husk at skrive studienummer og navn tydeligt på forsiden, inden eksamen afsluttes.

Læs mere

Eksamen dcomnet 2012Q4. Årskortsnummer Navn

Eksamen dcomnet 2012Q4. Årskortsnummer Navn Eksamen dcomnet 2012Q4 Årskortsnummer Navn Vejledning Eksamen varer en time fra kl. 9 til kl. 10. Husk at skrive årskort og navn tydeligt på forsiden, inden eksamen afsluttes. Der er ét rigtigt svar per

Læs mere

Eksamen dcomnet Q2/2012. Studiekortsnummer Navn

Eksamen dcomnet Q2/2012. Studiekortsnummer Navn Eksamen dcomnet Q2/2012 Studiekortsnummer Navn Vejledning Eksamen varer en time fra kl. 9 til kl. 10. Husk at skrive studienummer og navn tydeligt på forsiden, inden eksamen afsluttes. Der er ét rigtigt

Læs mere

Computerarkitektur Eksamen 2014Q2. Niels Olof Bouvin A. Studienummer Navn

Computerarkitektur Eksamen 2014Q2. Niels Olof Bouvin A. Studienummer Navn Computerarkitektur Eksamen 2014Q2 Niels Olof Bouvin A Studienummer Navn Vejledning Eksamen varer en time fra kl. 9 til kl. 10. Husk at skrive studienummer og navn tydeligt på forsiden, inden eksamen afsluttes.

Læs mere

Introduktion til Computerarkitektur. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

Introduktion til Computerarkitektur. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet Introduktion til Computerarkitektur Niels Olof Bouvin Institut for Datalogi Aarhus Universitet 1 Formål med dagens forelæsning Kurset læringsmål og emner folk og form eksamen Området maskinarkitektur 2

Læs mere

CPUer og maskinkode DM534. Rolf Fagerberg

CPUer og maskinkode DM534. Rolf Fagerberg CPUer og maskinkode DM534 Rolf Fagerberg CPUers opbygning En CPU er bygget op af elektriske kredsløb (jvf. sidste forelæsning), som kan manipulere bits. En CPU manipulerer flere bits ad gangen, deres antal

Læs mere

dcomnet-nr. 8 Simpel aritmetik på maskinniveau Computere og Netværk (dcomnet)

dcomnet-nr. 8 Simpel aritmetik på maskinniveau Computere og Netværk (dcomnet) dcomnet-nr. 8 Simpel aritmetik på maskinniveau Computere og Netværk (dcomnet) Efterår 2009 1 Simpel aritmetik på maskinniveau I SCO, appendix A, er det beskrevet, hvordan man adderer ikke-negative heltal

Læs mere

Det Digitale Niveau. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

Det Digitale Niveau. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet Det Digitale Niveau Niels Olof Bouvin Institut for Datalogi Aarhus Universitet Level : Det digitale niveau Level 5 Problem-oriented language level Translation (compiler) Level 4 Assembly language level

Læs mere

Computerarkitektur. - en introduktion til computerarkitektur med LINDA

Computerarkitektur. - en introduktion til computerarkitektur med LINDA Computerarkitektur - en introduktion til computerarkitektur med LINDA faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen Roskilde Universitetscenter Naturvidenskabelig

Læs mere

uprocessorens hardware

uprocessorens hardware uprocessorens hardware 8080 Architecture Kernen i en processor er ALUen. Det er den som kan udfører simple regne operationer. De tal den arbejdermed gemmes i en række registre. Når et tal skal hentes eller

Læs mere

Lageradministration. dopsys

Lageradministration. dopsys Lageradministration 1 Lageret i maskinarkitekturen Beregningsenhed, lagre (registre, RAM, disk), ydre enheder 2 Abstraktion over typerne: et hierarki En maskine har flere forskellige lagre Operativsystemet

Læs mere

Introduktion til Operativsystemer

Introduktion til Operativsystemer Introduktion til Operativsystemer 1 Niels Olof Bouvin Institut for Datalogi Aarhus Universitet Oversigt Formål Hvad er en computer? Operativsystemets rolle Multitasking 2 Formål Introduktion af de basale

Læs mere

Design af et ISA. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

Design af et ISA. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet Design af et ISA Niels Olof Bouvin Institut for Datalogi Aarhus Universitet Level 2: Maskinniveau (ISA) Level 5 Problem-oriented language level Translation (compiler) Level 4 Assembly language level Translation

Læs mere

Lageret i maskinarkitekturen. Beregningsenhed, lagre (registre, RAM, disk), ydre enheder

Lageret i maskinarkitekturen. Beregningsenhed, lagre (registre, RAM, disk), ydre enheder Lageradministration Lageret i maskinarkitekturen Beregningsenhed, lagre (registre, RAM, disk), ydre enheder Abstraktion over typerne: et hierarki En maskine har fl ere forskellige lagre Operativsystemet

Læs mere

Processer og tråde. dopsys 1

Processer og tråde. dopsys 1 Processer og tråde dopsys 1 Motivation.. parallelle processer udnytter hardwaren bedre: Batch operativsystemer (50 erne) hhv. små systemer: Multiprogrammering og time-sharing (fra 60 erne og frem): dopsys

Læs mere

Indhold. Maskinstruktur... 3. Kapitel 1. Assemblersprog...3. 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output...

Indhold. Maskinstruktur... 3. Kapitel 1. Assemblersprog...3. 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output... Indhold Maskinstruktur... 3 Kapitel 1. Assemblersprog...3 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output... 9 Kapitel 2. Maskinkode... 13 2.1 Den fysiske maskine... 13 2.2 Assemblerens

Læs mere

Operativsystemer - dopsys

Operativsystemer - dopsys Operativsystemer - dopsys Erik Ernst eernst@cs.au.dk dopsys 1 Q/A Mange deltagere er nu på 2. år af datalogistudiet, med dcomnet 1 for år siden Er din baggrund anderledes? dopsys 2 Praktiske oplysninger

Læs mere

Lageradministration Paging og segmentering

Lageradministration Paging og segmentering Lageradministration Paging og segmentering 1 Re: Logiske/fysiske adresser... Proces-struktur = kode og data for en proces 4G En proces tilgår sin proces-struktur via et logisk/virtuelt adresserum, fx 0,

Læs mere

Programmering i C Intro og grundlæggende C 5. marts 2007

Programmering i C Intro og grundlæggende C 5. marts 2007 Programmering i C Intro og grundlæggende C 5. marts 2007 Mads Pedersen, OZ6HR mads@oz6hr.dk Plan for kurset Ma. 5/3: Ma. 19/3: Ma. 2/4: To. 12/4: Formål, intro, grundlæggende Videre, sprogkonstruktioner

Læs mere

Algorithms & Architectures II

Algorithms & Architectures II Algorithms & Architectures II Algorithms & Architectures II Jens Myrup Pedersen Hans Peter Schwefel Kursusholdere Dagens lektion Overordnet mål: At etablere en forståelse for hvordan hardware og hardwarearkitekturer

Læs mere

DATALOGI MASKINARKITEKTUR

DATALOGI MASKINARKITEKTUR Københavns Universitet Natrvidenskabelig Embedseksamen DATALOGI ASKINARKITEKTUR Skriftlig eksamen fredag den 29. oktober 24 kl. -2 Frederiksholms kanal 4B Der er fem opgaver i alt og disse giver følgende

Læs mere

Styresystemer og tjenester

Styresystemer og tjenester Styresystemer og tjenester Indhold: 1. Introduktion til styresystemer. 2. Processer og tråde. 3. Synkroniseringsmetoder og InterProcesCommunikation. 4. Memory management. 5. I/O og devicedrivere. 6. Filsystemer.

Læs mere

DATALOGI MASKINARKITEKTUR Blok 2 samt Reeksamination i DATALOGI MASKINARKITEKTUR Blok 1 og arkitekturdelen af DATALOGI 1E

DATALOGI MASKINARKITEKTUR Blok 2 samt Reeksamination i DATALOGI MASKINARKITEKTUR Blok 1 og arkitekturdelen af DATALOGI 1E Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI MASKINARKITEKTUR Blok 2 samt Reeksamination i DATALOGI MASKINARKITEKTUR Blok 1 og arkitekturdelen af DATALOGI 1E Vejledende løsninger til

Læs mere

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen Programmering Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen Oversigt Undervisningen Hvad er programmering Hvordan er et program organiseret? Programmering og fysik Nobelprisen

Læs mere

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004 Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Skriftlig eksamen torsdag den 3. juni 2004 Opgaverne vægtes i forhold til tidsangivelsen herunder, og hver opgaves besvarelse bedømmes

Læs mere

Sider og segmenter. dopsys 1

Sider og segmenter. dopsys 1 Sider og segmenter dopsys 1 Lokal vs global sideallokering (1) Med (a) som udgangspunkt giver (b) lokal hhv. (c) global allokering forskellige resultater dopsys 2 Lokal vs global sideallokering (2) Den

Læs mere

DM13-3. Obligatorisk opgave E.05 Håndoptimering af SPARC assembler-kode

DM13-3. Obligatorisk opgave E.05 Håndoptimering af SPARC assembler-kode - 3. Obligatorisk opgave E.05 Håndoptimering af SPARC assembler-kode Jacob Aae Mikkelsen - 191076 12. december 2005 1 Indhold 1 Opgave beskrivelse 2 2 Muligheder for optimering 2 2.1 efter branch.........................

Læs mere

Sider og segmenter. dopsys 1

Sider og segmenter. dopsys 1 Sider og segmenter dopsys 1 Lokal vs global sideallokering (1) Med (a) som udgangspunkt giver (b) lokal hhv. (c) global allokering forskellige resultater dopsys 2 Lokal vs global sideallokering (2) Den

Læs mere

Processoren: Fler-cyklus implementation

Processoren: Fler-cyklus implementation Processoren: Fler-cykls implementation artin Zachariasen, DIKU Litteratr: Patterson & Hennessy, afsnit 5.4 5. Ulemper ved enkelt-cykls maskinen Ændring til fler-cykls maskine Styresignaler Implementering

Læs mere

Niveauer af abstrakte maskiner

Niveauer af abstrakte maskiner Det digitale niveau Niveauer af abstrakte maskiner Mikroarkitektur: Mic-1 Digitale kredsløb Logiske tilstande: 0 (0-1 V), 1 (2-5 V) Mikroarkitektur: Mic-1 Kombinatoriske kredsløb Logiske tilstande: 0 (0-1

Læs mere

Introduktion til C programmering

Introduktion til C programmering Introduktion til C programmering Rasmus Erik Voel Jensen Uge 17 voel@math.ku.dk Dagens forelæsning Formalia Indledende programmering, main, include, printf, variable, scanf, if-else, statements, eksempler

Læs mere

Abstrakte datatyper C#-version

Abstrakte datatyper C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype

Læs mere

Speciale. Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende Java Optimized Processor (JOP)

Speciale. Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende Java Optimized Processor (JOP) Speciale Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende Java Optimized Processor (JOP) Speciale efterår 2005 Teknisk Informationsteknologi Jan Lauritzen & Mads

Læs mere

Pentium IA-32 Maskinarkitekturen

Pentium IA-32 Maskinarkitekturen Pentium IA-32 Maskinarkitekturen 1 Historie (1) Starter i 1970 med udviklingen af Intel 4004: 2 Historie (2) Baglæns kompatibilitet tilbage til 8086. 3 Intel 4004 and Pentium 4 http://www.intel.com/museum/archives/index.htm

Læs mere

Computerens Anatomi. Af Martin Arnetoft

Computerens Anatomi. Af Martin Arnetoft Computerens Anatomi Af Martin Arnetoft Moores lov Moores lov siger, at antallet af transistorer på et stykke hardware over 18 eller 24 måneder fordobles. Denne lov bruges til at beskrive udviklingen indenfor

Læs mere

Niveauer af abstrakte maskiner

Niveauer af abstrakte maskiner Det digitale niveau Niveauer af abstrakte maskiner Digitale kredsløb Logiske tilstande: (- V), (2-5 V) Kombinatoriske kredsløb Logiske tilstande: (- V), (2-5 V) Registre Logiske tilstande: (- V), (2-5

Læs mere

3. Computerens opbygning.

3. Computerens opbygning. 3. Computerens opbygning. Computere er konstrueret med henblik på at skulle kunne behandle og opbevare data og det er de som nævnt i noterne om Bits og Bytes vældig gode til. Som overordnet model for computere

Læs mere

Programmering i C. Lektion september 2009

Programmering i C. Lektion september 2009 Programmering i C Lektion 1 8. september 2009 Målgruppe Motivation Indhold Form Materiale 2 / 47 Kursusintroduktion 1 Målgruppe 2 Motivation 3 Indhold 4 Form 5 Materiale Målgruppe Motivation Indhold Form

Læs mere

Programmering i C. Lektion september 2009

Programmering i C. Lektion september 2009 Programmering i C Lektion 2 14. september 2009 Kontrolstrukturer Udvælgelse Gentagelse Eksempler Kommentarer Format - scanf og printf 2 / 27 Fra sidst 1 Kontrolstrukturer 2 Udvælgelse 3 Gentagelse 4 Eksempler

Læs mere

Programmering i C. Lektion 4. 5. december 2008

Programmering i C. Lektion 4. 5. december 2008 Programmering i C Lektion 4 5. december 2008 Funktioner Eksempel Fra sidst 1 Funktioner 2 Eksempel Funktioner Eksempel Eksempel: 1 / f u n k t i o n s p r o t o t y p e r / i n t i n d l a e s ( void )

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 10. april, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

DATALOGI 1E. Skriftlig eksamen fredag den 7. juni 2002

DATALOGI 1E. Skriftlig eksamen fredag den 7. juni 2002 Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Skriftlig eksamen fredag den 7. juni 2002 Opgaverne vægtes i forhold til tidsangivelsen, og hver opgaves besvarelse bedømmes som en helhed.

Læs mere

Processoren: Enkelt-cyklus implementation

Processoren: Enkelt-cyklus implementation Processoren: Enkelt-cyklus implementation Martin Zachariasen, DIKU Litteratur: Patterson & Hennessy, afsnit 5.1 5.3 Historisk tilbageblik MIPS-arkitekturen/delmængde Klokning og byggeklodser Opbygning

Læs mere

Operativsystemer - dopsys. Erik Ernst

Operativsystemer - dopsys. Erik Ernst Operativsystemer - dopsys Erik Ernst eernst@cs.au.dk [Q/A] Mange deltagere er nu på 2. år af datalogistudiet eller cand.it., med dcomnet Er din baggrund anderledes? dopsys 2 Praktiske oplysninger http://cs.au.dk/dopsys

Læs mere

Interrupt - Arduino. Programmering for begyndere Brug af Arduino. Kursusaften 6 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK

Interrupt - Arduino. Programmering for begyndere Brug af Arduino. Kursusaften 6 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK Programmering for begyndere Brug af Arduino Programmeringskursus Interrupt - Arduino EDR Hillerød Knud Krogsgaard Jensen / OZ1QK Interrupts Programmeringskursus Genbrug Interrupts Betyder blot at man afbryder

Læs mere

Computer Literacy. En stationær bordmodel. En Bærbar Notebook, Labtop, Slæbbar, Blærebar mm.

Computer Literacy. En stationær bordmodel. En Bærbar Notebook, Labtop, Slæbbar, Blærebar mm. Computer Literacy Computer Literacy handler om at forstå hvad computer (hardware) og software kan gøre. Denne præsentation fokuserer kun på hardware februar 2002 Computerliteracy -hardware (15 dias) 1

Læs mere

Programmering i C. Lektion november 2008

Programmering i C. Lektion november 2008 Programmering i C Lektion 3 18. november 2008 Kontrolstrukturer Udvælgelse Gentagelse Eksempler Fra sidst 1 Kontrolstrukturer 2 Udvælgelse 3 Gentagelse 4 Eksempler Kontrolstrukturer Udvælgelse Gentagelse

Læs mere

MIPS, registerallokering og MARS

MIPS, registerallokering og MARS MIPS, registerallokering og MARS Torben Mogensen 2011 Resumé Vi beskriver modulerne Mips.sml og RegAlloc.sml, samt hvordan de bruges sammen med MIPS-emulatoren MARS. 1 MIPS modulet Modulet Mips.sml indeholder

Læs mere

Programmering i C. Lektion september 2009

Programmering i C. Lektion september 2009 Programmering i C Lektion 4 18. september 2009 Pointers Referenceparametre 2 / 19 Pointers 1 Pointers 2 Referenceparametre Pointers Referenceparametre 3 / 19 Husk: En variabel er en navngiven plads i computerens

Læs mere

Oversættere Skriftlig eksamen onsdag d. 19. april 2006

Oversættere Skriftlig eksamen onsdag d. 19. april 2006 Københavns Universitet Naturvidenskabelig Embedseksamen Oversættere Skriftlig eksamen onsdag d. 19. april 2006 Eksamenstiden er to timer. Opgavernes vægt i procent er angivet ved hver opgave. Den skriftlige

Læs mere

DATALOGI 1E. Skriftlig eksamen fredag d. 16. januar 2004

DATALOGI 1E. Skriftlig eksamen fredag d. 16. januar 2004 Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Skriftlig eksamen fredag d. 16. januar 2004 Opgaverne vægtes i forhold til tidsangivelsen herunder, og hver opgaves besvarelse bedømmes

Læs mere

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1 Project Step 7 Behavioral modeling of a dual ported register set. Copyright 2006 - Joanne DeGroat, ECE, OSU 1 The register set Register set specifications 16 dual ported registers each with 16- bit words

Læs mere

DATALOGI 1E. Skriftlig eksamen mandag den 23. juni 2003

DATALOGI 1E. Skriftlig eksamen mandag den 23. juni 2003 Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Skriftlig eksamen mandag den 23. juni 2003 Opgaverne vægtes i forhold til tidsangivelsen herunder, og hver opgaves besvarelse bedømmes

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 20. april, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Projekt DATA step view

Projekt DATA step view Projekt DATA step view Af Louise Beuchert Formål Formålet med dette projekt, er at sammenligne tid/ressourcekonsekvenser ved at køre SASjobs på data hentet som henholdsvis en fysisk kopi af data filen

Læs mere

PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU

PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU OUTLINE INEFFICIENCY OF ATTILA WAYS TO PARALLELIZE LOW COMPATIBILITY IN THE COMPILATION A SOLUTION

Læs mere

Operativsystemer of C Efterår 2013 Virtuel hukommelse (kap. 9)

Operativsystemer of C Efterår 2013 Virtuel hukommelse (kap. 9) Operativsystemer of C Efterår Virtuel hukommelse (kap. 9) 8// Planen for idag q Virtuel hukommelse. q Demand paging / page faults. q Sideudskiftningsalgoritmer. q Rammeallokering til processer. Ø Øvelser:

Læs mere

Grundlæggende Algoritmer og Datastrukturer. Analyseværktøjer [CLRS, 1-3.1]

Grundlæggende Algoritmer og Datastrukturer. Analyseværktøjer [CLRS, 1-3.1] Grundlæggende Algoritmer og Datastrukturer Analyseværktøjer [CLRS, 1-3.1] Eksempler på en beregningsprocess Puslespil ved ombytninger Maximum delsum Hvad er udførselstiden for en algoritme? Maskinkode

Læs mere

Lærevejledning. - en introduktion til maskinarkitektur. faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen

Lærevejledning. - en introduktion til maskinarkitektur. faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen Lærevejledning - en introduktion til maskinarkitektur faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen Roskilde Universitetscenter Naturvidenskabelig Basisuddannelse

Læs mere

Oversættere Skriftlig eksamen onsdag d. 25. januar 2006

Oversættere Skriftlig eksamen onsdag d. 25. januar 2006 Københavns Universitet Naturvidenskabelig Embedseksamen Oversættere Skriftlig eksamen onsdag d. 25. januar 2006 Eksamenstiden er to timer. Opgavernes vægt i procent er angivet ved hver opgave. Den skriftlige

Læs mere

COMPUTER ANATOMI. 4.-5. klasse 23. FEBRUAR 2015 HTX - ROSKILDE

COMPUTER ANATOMI. 4.-5. klasse 23. FEBRUAR 2015 HTX - ROSKILDE COMPUTER ANATOMI 4.-5. klasse 23. FEBRUAR 2015 HTX - ROSKILDE 1 Indholdsfortegnelse Kapitel 1: Opbygning s.2 Kapitel 2: CPU s.3 Kapitel 3: Motherboard s.4 Kapitel 4: Ram s.6 Kapitel 5: Grafikkort s.7 Kapitel

Læs mere

Lær Python dag 1 - modul 1

Lær Python dag 1 - modul 1 Lær Python dag 1 - modul 1 Introduktion, basis python Steffen Berg Klenow Jonas Bamse Andersen Syddansk Universitet Indhold 1. Velkommen 2. Programmering i python 3. Typer, variabler og udtryk 1 Velkommen

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 27. februar, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Programmering i C Videre med C (2 af 4) 19. marts 2007

Programmering i C Videre med C (2 af 4) 19. marts 2007 Programmering i C Videre med C (2 af 4) 19. marts 2007 Mads Pedersen, OZ6HR mads@oz6hr.dk Plan i dag Brush-up fra sidst Videre med C Kontrolløkker (while, for, ) Conditional Execution (if, if/else) Funktioner

Læs mere

Input/Output: Brugergrænseflader. dopsys

Input/Output: Brugergrænseflader. dopsys Input/Output: Brugergrænseflader dopsys Interaktion med bruger Visse devices lægger et fundamentalt sæt af spilleregler for vores brug af computere Generisk tilbagemelding, hvad laver den : Billedskærm

Læs mere

Rolf Fagerberg. Forår 2013

Rolf Fagerberg. Forår 2013 Forår 2013 Mål for i dag Dagens program: 1 2 3 4 5 6 Forudsætninger: DM536 og DM537 Timer: 50% forelæsninger, 50% øvelser Forudsætninger: DM536 og DM537 Eksamenform: Skriftlig eksamen: Timer: 50% forelæsninger,

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Introduktion til kurset Rolf Fagerberg Forår 2019 1 / 20 Hvem er vi? Underviser: Rolf Fagerberg, Institut for Matematik og Datalogi (IMADA) Forskningsområde: algoritmer

Læs mere

Scheduling. Niels Olof Bouvin. Institut for Datalogi Aarhus Universitet

Scheduling. Niels Olof Bouvin. Institut for Datalogi Aarhus Universitet Scheduling 1 Niels Olof Bouvin Institut for Datalogi Aarhus Universitet Tråde og deres indbyrdes forhold Sidste gang så vi på, hvorledes tråde kan skabes, og hvordan man kan skifte imellem dem I dag ser

Læs mere

Systemkald DM14. 1. Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/3-2004 Afleveret af: Jacob Christiansen, 130282-2111

Systemkald DM14. 1. Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/3-2004 Afleveret af: Jacob Christiansen, 130282-2111 DM14 1. Obligatoriske opgave Systemkald Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/3-2004 Afleveret af: Jacob Christiansen, 130282-2111 Side 1 af 5 Intro: Formålet med opgaven at et lave en system kald

Læs mere

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato: 14-05-2003

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato: 14-05-2003 Side 1 af 8 Dato: 14-05-2003 Til Sigurd Som aftalt vil jeg her fremsende vores program til vores 80C535 kit og display. Det gik jo ud på at vi skulle starte med at få den til at intialiserer displayet,

Læs mere

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter 2006. Abstract

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter 2006. Abstract Sproget Six Til brug i rapportopgaven på kurset Oversættere Vinter 2006 Abstract Six er baseret på det sprog, der vises i figur 6.2 og 6.4 i Basics of Compiler Design. Den herværende tekst beskriver basissproget

Læs mere

Filsystemer: Anvendelse. dopsys

Filsystemer: Anvendelse. dopsys Filsystemer: Anvendelse 1 Lageret er hierarkisk - Fokus: disk Sekundært lager er nødvendigt: Data i RAM forsvinder når processer terminerer o.lign. Og der er også brug for pladsen 2 Lageret er hierarkisk

Læs mere

Internt interrupt - Arduino

Internt interrupt - Arduino Programmering for begyndere Brug af Arduino Internt interrupt - Arduino - Afslutning EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Intern interrupt Jeg vil rydde lidt op. Her er nogle punkter vil har glemt

Læs mere

Virtuel Hukommelse. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

Virtuel Hukommelse. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet Virtuel Hukommelse 1 Niels Olof Bouvin Institut for Datalogi Aarhus Universitet Oversigt Formålet med virtuel hukommelse Organisering af virtuel hukommelse Håndtering af virtuel hukommelse 2 Minimal computerarkitektur

Læs mere

DM13-1. Obligatoriske Opgave - Kredsløbs design

DM13-1. Obligatoriske Opgave - Kredsløbs design DM13-1. Obligatoriske Opgave - Kredsløbs design Jacob Christiansen moffe42@imada.sdu.dk Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense 1. Opgaven Opgaven består i at designe et kredsløb,

Læs mere

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Design af Algoritmer Korrekt algoritme 1) algoritmen standser på alle input 2) Output er det rigtige på alle input Effektivitet 1) Optimer algoritmerne

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2017 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 6. april, 2017 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Repræsentation af tal

Repræsentation af tal Repræsentation af tal DM534 Rolf Fagerberg 1 / 18 Mål Målet for disse slides er at beskrive, hvordan tal repræsenteres som bitmønstre i computere. Dette emne er et uddrag af kurset DM548 Computerarkitektur

Læs mere

Lageradministration Intel Pentium og Unix/Linux

Lageradministration Intel Pentium og Unix/Linux Lageradministration Intel Pentium og Unix/Linux 1 Lageradministration Multiprogrammering Håndtering af flere procesbilleder i lageret Virtuelt lager og swapping Gennemsigtig udnyttelse af disk som udvidelse

Læs mere

Grundlæggende Algoritmer og Datastrukturer

Grundlæggende Algoritmer og Datastrukturer Grundlæggende Algoritmer og Datastrukturer Om kurset Grundlæggende Algoritmer og Datastrukturer Undervisningsformer Forelæsninger: 4 timer/uge (2+2). Øvelser: 3 timer/uge. Café. Obligatorisk program 13

Læs mere

Algoritmer og Datastrukturer 1

Algoritmer og Datastrukturer 1 Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Analyseværktøjer [CLRS, 1-3.1] Eksempler på en beregningsprocess Puslespil ved ombytninger Maximum delsum Hvad er udførselstiden for en algoritme? Maskinkode

Læs mere

Chapter. Information Representation

Chapter. Information Representation Chapter 3 Information Representation (a) A seven-bit cell. Figure 3. Figure 3. (Continued) (b) Some possible values in a seven-bit cell. Figure 3. (Continued) 6 8 7 2 5 J A N U A R Y (c) Some impossible

Læs mere

Intro til AVR. Mads Pedersen, OZ6HR mads@oz6hr.dk

Intro til AVR. Mads Pedersen, OZ6HR mads@oz6hr.dk Intro til AVR Mads Pedersen, OZ6HR mads@oz6hr.dk Projektidé Brug en AVR-microcontroller Mål temperatur vha. temperatursensor Vis på display Send til computer og vis temperatur Slide 2 Plan 27/10-2005:

Læs mere

Maskinsprog. Martin Zachariasen, DIKU. Programmer og ordrer. Ordretyper. Operander og deres placering. Ordreformat. Procedurekald. Andre arkitekturer

Maskinsprog. Martin Zachariasen, DIKU. Programmer og ordrer. Ordretyper. Operander og deres placering. Ordreformat. Procedurekald. Andre arkitekturer Maskinsprog Martin Zachariasen, DIKU Litteratur: Patterson & Hennessy, kap. 3 Programmer og ordrer Ordretyper Operander og deres placering Ordreformat Procedurekald Andre arkitekturer 1 Stored-program

Læs mere

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int wmid, wmevent; programmering med

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int wmid, wmevent; programmering med LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) int wmid, wmevent; PAINTSTRUCT Introduktion ps; til HDC hdc; programmering med switch (message) case WM_COMMAND: wmid = LOWORD(wParam);

Læs mere

Oversættere. Vejledende løsninger til Skriftlig eksamen onsdag d. 20. april 2005

Oversættere. Vejledende løsninger til Skriftlig eksamen onsdag d. 20. april 2005 Københavns Universitet Naturvidenskabelig Embedseksamen Oversættere Vejledende løsninger til Skriftlig eksamen onsdag d. 20. april 2005 Eksamenstiden er to timer. Opgavernes vægt i procent er angivet ved

Læs mere

Bits, bit operationer, integers og floating point

Bits, bit operationer, integers og floating point Denne guide er oprindeligt udgivet på Eksperten.dk Bits, bit operationer, integers og floating point Denne artikel beskriver hvordan data gemmes som bits og hvordan man kan manipulere med bits. Den forudsætter

Læs mere

PUT og INPUT funktionerne

PUT og INPUT funktionerne PUT og INPUT funktionerne Af: Peter Kellberg Danmarks Statistik Sejrøgade 11 DK-2100 København Ø pke@dst.dk PUT og INPUT-funktionerne Denne artikel er foranlediget af en henvendelse til vores interne SAS

Læs mere

Introduktion til DM507

Introduktion til DM507 Introduktion til DM507 Rolf Fagerberg Forår 2017 1 / 20 Hvem er vi? Underviser: Rolf Fagerberg, IMADA Forskningsområde: algoritmer og datastrukturer 2 / 20 Hvem er vi? Underviser: Rolf Fagerberg, IMADA

Læs mere

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for

Læs mere

Principper for Samtidighed og Styresystemer

Principper for Samtidighed og Styresystemer Principper for Samtidighed og Styresystemer kursusintroduktion og Introduktion til Styresystemer René Rydhof Hansen Februar 2008 PSS 08 (Forelsning 00) Kursus intro./intro. styresystemer Februar 2008 1

Læs mere

AVR MP3 29-05-08 05576 Ingeniørhøjskolen i Århus Michael Kaalund

AVR MP3 29-05-08 05576 Ingeniørhøjskolen i Århus Michael Kaalund AVR MP3 29-05-08 Indholdsfortegnelse 1 Introduktion...2 2 Udviklingsmiljø...2 3 Beskrivelse af systemet...3 3.1 VS1001k...3 3.2 MP3 file formatet...6 4 Konklusion...6 5 Litteratur liste...6 6 Illustrations

Læs mere

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1 Spørgsmål 1 Grundlæggende objektorienterede begreber o Klasse (class) o Objekt (object) o Metode (method), herunder return type og parametre o Instansvariable (instance variables) & egenskaber (properties),

Læs mere