•Sidestorrelse bestemmer offset: f.eks. 4KB = 12 bits offset
Vanlige feil å unngå
Digital representasjon
•Glemme a fylle opp med ledende nuller til riktig antall bits. 37 i binaer er 100101, men med 8 bits ma du skrive 00100101.
•Forveksle fortegnsbit-representasjon med 2-ers komplement. I 2-ers komplement er -1 representert som 11111111, ikke 10000001.
•Glemme a legge til 1 etter invertering ved 2-ers komplement. Bare inversjon gir 1-ers komplement.
•Feil retning ved desimal-til-binaer: restene skal leses nedenfra og opp (siste rest forst).
Kombinatorisk logikk
•Forveksle NAND og NOR. NAND har boble pa utgangen av AND, NOR har boble pa utgangen av OR. En boble pa inngangen betyr inversjon av den spesifikke inngangen.
•Glemme a bruke konsensusregelen. Mange studenter kjenner den ikke, men den dukker opp hvert ar pa eksamen.
•Feil med De Morgans: (A+B)' er IKKE A'+B'. Riktig: (A+B)' = A'B'. AND og OR bytter plass.
•Forveksle XOR og XNOR. XOR gir 1 nar inngangene er forskjellige, XNOR gir 1 nar de er like.
Sekvensiell logikk
•Forveksle latch og flip-flop. Latch er niva-sensitiv (gjennomsiktig nar klokke aktiv), flip-flop er flanke-sensitiv (sampler kun pa flanke).
•Glemme at en boble pa klokke-inngangen inverterer triggerbetingelsen: flip-flop med boble trigges pa fallende flanke.
•Anta at utgangen endres med en gang inngangen endres. For flip-flops endres utgangen KUN pa klokkeflanken.
•Feil pa krets 2 (H2023/2022): glemme at forste element er en latch (ingen trekant) og andre er en flip-flop.
VHDL og hardwarebeskrivelsessprak
•Tro at syntese oversetter VHDL til maskinkode. Syntese oversetter til en nettliste av logiske porter -- det er noe helt annet.
•Forveksle VHDL med ARM-assembler. ARM er et programmeringssprak for prosessorer, VHDL beskriver hardware.
•Tro at std_logic '1' og '0' drevet samtidig gir '0'. Det gir 'X' (konflikt). Men 'H' og '0' gir '0', og 'L' og '1' gir '1'.
•Glemme at en prosess i VHDL kan tilordne mange signaler. Det er IKKE begrenset til ett signal per prosess.
Digitale byggeblokker
•Glemme at subtraksjon i ALU gjores via A + NOT(B) + 1 (2-ers komplement). Cin settes til 1 for subtraksjon.
•Feil kritisk sti: den langste stien er vanligvis carry-kjeden, ikke sum-stien. For ripple-carry: carry propagerer gjennom alle addere.
•Forveksle overflow (V) og carry (C). Overflow = fortegnsfeil (gjelder signed tall), Carry = mente fra MSB (gjelder unsigned).
•Feil pa LUT-oppgaven: lese av feil rad. Husk at dekoderen velger rad basert pa inngangsverdi, ikke utgangsnummer.
ARM-arkitektur og assemblersprak
•Glemme at PC er 8 foran naavaerende instruksjon i branch target-beregningen (pga. pipeline). imm24 = (target - PC - 8) / 4.
•Forveksle caller-saved og callee-saved. Funksjonen MÅ lagre R4-R11 hvis den endrer dem. R0-R3 kan overskrive fritt.
•Feil betingelse i branch: if (a >= b) betyr CMP + BLT (hopp forbi hvis IKKE oppfylt), ikke BGE.
•Glemme BL vs B: BL lagrer returadressen i LR, B gjor ikke det. Bruk BL for funksjonskall, B for lokker.
Mikroarkitektur og pipeline
•Tro at pipeline alltid er raskest. Med mange stalls og hazards kan den vaere tregere. Single-cycle har alltid CPI=1.
•Glemme at registerfilen leses i andre halvdel og skrives i forste halvdel. Dermed kan to instruksjoner bruke registerfilen i samme syklus uten konflikt.
•Forveksle forwarding og stall. Forwarding ungar stalls for de fleste datahazards, men load-use hazard krever fortsatt 1 syklus stall.
•Feilberegne antall sykler for pipeline. N instruksjoner tar N + (antall steg - 1) sykler, IKKE N * antall steg.
Minnesystemer og cache
•Blande miss rate og hit rate. Miss rate = 1 - hit rate. Aksesstid bruker BEGGE: hit_rate * T_cache + miss_rate * T_memory.
•Feil antall bits for index. Antall sett = cache-storrelse / (blokkstorrelse * assosiativitet). Index = log2(antall sett).
•Glemme at sideoffset er SAMME i virtuell og fysisk adresse. Bare VPN oversettes til PPN -- offseten beholdes.
•Forveksle cache-miss med page fault. Cache-miss henter data fra hovedminne (100 sykler). Page fault henter fra disk (millioner av sykler).
Eksamenstips
Digital representasjon
•Oppgave 1-3 pa eksamen er alltid tallkonvertering. De er verdt 2 poeng hver -- lov a gjore raskt.
•Husk snarvei for hex/oktal: konverter hvert siffer separat til 4/3 bits. Mye raskere enn via desimal.
•For bitopploesning: finn minste n der 2^n >= antall verdier. Kjenn potensene: 2^8=256, 2^9=512, 2^10=1024, 2^12=4096.
Kombinatorisk logikk
•Oppgave 4 pa eksamen: les kretsskjemaet noyaktig. Tell bobler -- boble pa utgang = NOT rundt hele funksjonen, boble pa inngang = NOT pa den ene variabelen.
•Oppgave 5: forenkle boolsk uttrykk. Skriv ned hvert steg -- sensor gir delpoeng for riktig metode selv om svaret er feil.
•Memoriser konsensusregelen: AB+A'C+BC = AB+A'C. Den brukes nesten hvert ar.
Sekvensiell logikk
•Oppgave 7 er verdt hele 12 poeng -- bruk god tid her. Tegn opp klokkeflanker pa tidsdiagrammet og marker samplingspunktene.
•Start med a identifisere latch vs. flip-flop for HVERT minneelement. Se etter trekant pa clk.
•For eliminasjonsmetoden: sjekk utgangens startverdi (alltid 0 ifolge oppgaven) og det forste skiftet. Dette eliminerer ofte 3-4 alternativer umiddelbart.
VHDL og hardwarebeskrivelsessprak
•HDL-oppgaven har mange delsporsmal med nedtrekk. Les hvert alternativ noyaktig -- feil ordlyd betyr feil svar.
•Husk forskjellen: behavioral = hva kretsen gjor (prosess), dataflow = boolske uttrykk, structural = kobling av komponenter.
•Testbenk har alltid en tom entity. Hvis oppgaven spor om en modul uten porter, er svaret testbenk.
Digitale byggeblokker
•ALU-oppgaven: konverter hex til binaer, utfor operasjonen bitvis, og konverter tilbake. Viser du utregningen far du delpoeng.
•Kritisk sti: tell antall porter pa den LENGSTE stien fra inngang til utgang. Husk at parallelle porter ikke adderes.
•For FPGA vs ASIC: i FPGA har alle LUT-er lik delay. I ASIC har forskjellige porter forskjellig delay.
ARM-arkitektur og assemblersprak
•Branch target-oppgaven: skriv ut adressen til BL-instruksjonen og maladressen. Bruk formelen imm24 = (mal - BL_adr - 8) / 4.
•Maskinkode-oppgaven: konverter hex til 32-bit binaer og les av feltene systematisk. Skriv ned opcode-tabellen.
•Funksjonskonvensjonen: se bare pa R4-R11 og LR. Hvis funksjonen endrer noen av disse, ma de pushes. Sjekk ogsa om funksjonen kaller andre funksjoner (da ma LR pushes).
Mikroarkitektur og pipeline
•Tegn pipeline-diagrammet! Bruk en tabell med instruksjoner pa radene og sykler pa kolonnene. Marker IF/ID/EX/MEM/WB for hver instruksjon.
•For registeraktivitet: sjekk hvilket steg som er aktivt for ALLE instruksjoner i den aktuelle syklusen. ID leser, WB skriver.
•Branch prediction-sporsmalet: svaret er alltid 'a forutsi utfallet av branch-instruksjoner og redusere pipeline stalls'.
Minnesystemer og cache
•Cache-oppgaven er verdt 6-10 poeng. Skriv ut bitberegningene tydelig: offset, index, tag. Vis utregning for delpoeng.
•For aksesstid-oppgaven: skriv formelen T_avg = hit * T_cache + miss * T_memory og sett inn tall. Tre siffers presisjon.
•Virtuelt minne: tegn opp adresseformatet med VPN og offset. Bruk sidetabellen som en enkel oppslags-tabell fra VPN til PPN.