Hemlaboration Cache Cacheminnen

Storlek: px
Starta visningen från sidan:

Download "Hemlaboration Cache Cacheminnen"

Transkript

1 IS1200 Datorteknik IS1500 Datorteknik och komponenter Hemlaboration Cache Cacheminnen Kursdeltagarens namn:.. Datum: Godkänd av (assistentens signatur):.. IS1200/IS1500 Hemlab cache: Cacheminnen sida 1

2 Målsättning med hemlaborationen När du har redovisat den här hemlaborationen kommer du att kunna: Allmänt beskriva och motivera hur cacheminnen påverkar prestanda för olika datorprogram. Beskriva och motivera hur ändringar i cacheminnets parametrar kan påverka prestanda för ett visst program. Föreslå och motivera hur program kan ändras för att ge högre prestanda i datorsystem med cacheminnen. Förkunskaper Innan du genomför den här hemlaborationen måste du kunna: Läsa och skriva program i språket C, på en nivå som motsvar godkänd hemlaboration 1 (om C). Förklara grundläggande principer hos cacheminnen, på en nivå motsvarande kapitel 6 i Mats Brorssons bok Datorsystem. Förstå och gärna förklara konstruktionsprinciper hos cacheminnen, på en nivå motsvarande cacheminnesdelen av F Lundevalls kompendium Cacheminne och adressöversättning. Kompendiet Cacheminne och adressöversättning är mer omfattande och detaljerat än kapitel 6 i Mats Brorssons bok. Den som har läst, förstått och kan tillämpa innehållet i kompendiets cacheminnesdel behöver inte läsa kapitel 6 i boken. Tekniska krav Den här hemlaborationen använder en annan programvara än övriga laborationer i kursen. Programvaran kräver tillgång till en persondator med Microsoft Windows. Den är testad med Windows 98 och Windows XP, samt med Ubuntu LTS (kräver Wine). Frågor Vi i kursteamet svarar gärna på frågor om du undrar över något när du arbetar med hemlaborationen! E-postadress: is1200@ict.kth.se eller is1500@ict.kth.se Båda adresserna fungerar. Välj helst den som stämmer med kurskoden för den kurs du läser. Se också kursens webbplats. Redovisning av hemlaborationen Bokför alla ändringar i programfiler, cacheminnesinställningar och resultat från varje provkörning! Vid redovisningen ska du kunna beskriva och förklara alla resultat. Om någon dokumentation saknas så krävs komplettering och ny redovisning. Om det är några enstaka resultat som du inte har lyckats förstå eller förklara så har du möjlighet att be assistenten förklara för dig. Vid redovisningen ställer assistenten flera frågor än dem som finns med här i lab-pm. En viktig fråga, som assistenten kan ställa ofta, är frågan "Varför?" När Du vid redovisningstillfället uppvisar tillräckliga kunskaper bokförs din laboration som godkänd. Om du inte kan visa att du förstått allt, eller inte har utfört alla moment, eller saknar dokumentation, eller har hunnit glömma viktiga kunskaper, så får du göra om redovisningen vid ett senare tillfälle. Inför det senare tillfället kompletterar du förstås provkörningar och dokumentation, och repeterar allt så att du har det aktuellt vid redovisningen. Redovisning ska göras ensam eller i grupp om 2 personer. Vid redovisning i grupp bedöms kunskaperna individuellt. Om bara en av gruppmedlemmarna har tillräckliga kunskaper så blir bara den medlemmen godkänd. Gör pappersutskrifter! Laborationsredovisningen genomförs utan dator. Se till att ha dina utskrifter väl organiserade, så att du hinner klart redovisningen på utsatt tid. Annars får du göra om redovisningen vid ett senare tillfälle. IS1200/IS1500 Hemlab cache: Cacheminnen sida 2

3 Programvara Programvaran har två delar: MipsIT Studio, som används för att redigera och kompilera program, samt Mips Simulator, som är själva simulatorn. Du hämtar och installerar programvaran enligt instruktionerna på kursens webbsidor om labben: MipsIT Studio Obs! Meddelandet Failed to open COM port är ofarligt. Klicka bara OK. När du vill kompilera ett program i C-kod för att köra det i simulatorn gör du följande. Skapa ett Projekt (New Project) markerat som C(minimal)/Assembler, och därefter en fil (New File) markerad som C-file. Nu kan du klippa-och-klistra in en programfil från detta lab-pm eller från webben. Använd filen: Därefter kan du kompilera med Build Rebuild all. Då skapas en fil som kan köras i Mips-simulatorn. En genväg för att kompilera är att trycka på funktionsknapp F7. Du kan studera Mips-assemblerkoden från kompilatorn, med Build View Assembler. När du vill simulera programmet startar du Mips-simulatorn. Växla sedan tillbaka till MipsIT Studio och gör Build Upload to simulator. En genväg är att trycka på F5. Sedan kan du studera innehåll och beteenden i Instruktions- och Data-cache. Klickar du på rutorna märkta I-cache respektive D-cache, så får du fram en grafisk bild som visar konfiguration och innehåll i respektive cacheminne. I Mips-simulatorn kan du ändra konfiguration för cacheminnena och primärminnet genom att välja Edit Cache/Mem Config. I laborationen ingår att studera hur utseendet på cachen förändras då du ändrar konfigurationsparametrarna. Mips-kod. "Programdriven" betyder att Mipsinstruktionerna tolkas och utförs i simulatorn, och att läsningar och skrivningar till cacheminnena simuleras under programkörningen. Att simulatorn kör Mips-programkod betyder inte att du måste skriva program i Mipsassembler. MipsIT Studio innehåller en C-kompilator som producerar Mips-kod. De C-program som ska köras begränsas av att simulatorn inte har något operativsystem, men hemlaborationen är speciellt konstruerad för att detta inte ska ge problem. Viktiga tips för hela labben På många ställen finns prickade rader för svar på frågorna. Vi rekommenderar att du skriver ut lab-pm på papper, och skriver svaren på de prickade raderna. Då hittar du snabbt rätt svar på redovisningen. Gör extra anteckningar om motiveringar och förklaringar. Ibland saknas prickade rader. Då är svaret mer komplicerat än vad som brukar få plats på en prickad rad. Använd ett separat papper. I en del fall är förväntade resultat tryckta med fetstil i lab-pm. Om dina resultat inte stämmer med det förtryckta värdet så måste du undersöka vad som har blivit fel. Förslag på åtgärder är: Skapa ett nytt projekt och se till att välja "C(minimal)/Assembler". Skulle du råka välja något av de andra alternativen så får du fel resultat. Skapa i så fall ett nytt projekt och gör om simuleringen med det nya projektet. Var noga med att ställa in optimeringsgraden enligt anvisningarna för varje uppgift. Om du behöver starta om MipsIT Studio så måste du göra om inställningarna efter varje omstart. Vi rekommenderar att du återställer simulatorn med menyvalet Cpu Reset före varje ny körning. Kom ihåg att kontrollera cache- och minneskonfigurationerna innan varje körning. Simulatorn Simulatorn är en programdriven cacheminnessimulator, som kör program kompilerade till IS1200/IS1500 Hemlab cache: Cacheminnen sida 3

4 Inledning För att en dator ska gå snabbt måste alla komponenterna i datorn gå tillräckligt fort. Är någon del långsammare än de andra så skapar den delen problem, och blir det som begränsar totalprestandan hos systemet. Prestanda hos processorer har under perioden ökat exponentiellt. Primärminnet har under samma period växt exponentiellt i storlek, men hastigheten bara har ökat linjärt. Idag är hastighetsskillnaden mellan processor och huvudminne mycket stor. Det problemet kan angripas på flera sätt. Ett sätt skulle vara att helt enkelt använda supersnabba minneskretsar som primärminne. Det är dock mycket dyrt och energislukande. Tidigare användes denna metod av ett fåtal superdatortillverkare. Idag skulle den leda till nya svåra flaskhalsar, eftersom det energislukande minnet måste placeras långt från processorn för att kunna kylas ordentligt. Men med stort avstånd så tar det lång tid att flytta data mellan minne och processor, och prestandavinsten uteblir. Ett bättre sätt att angripa problemet är att använda cacheminne. Detta är idag en standardlösning som används i alla datorer som är byggda för snabb programkörning. Det är värt att notera, att datorer i inbyggda system (embedded systems) bara behöver vara tillräckligt snabba för att klara systemets uppgift. I sådana system är cacheminnen i vissa fall onödiga. Lokalitet Cacheminnen utnyttjar lokalitet i program, för att snabba upp huvuddelen av de läsningar och skrivningar som görs mot minnet. En minnesläsning eller skrivning kallas ofta för referens. Därför talar man ibland om referenslokalitet. Den som konstruerar en ny dator studerar beteendet hos viktiga program, bland annat de testprogram som marknadsförarna ska använda för att hävda att datorn är snabb, och anpassar cacheminnena så att programexekveringen går fort utan att datorn blir för dyr. Ett annat sätt att få program att gå fort är den omvända metoden: studera hur cacheminnena fungerar och anpassa sitt program så att det utnyttjar cacheminnena på bästa sätt. I den här hemlaborationen ska du få möjlighet att prova på båda vägarna. En av grundidéerna med cacheminnen är att de vanligtvis ger bra effekt utan ändringar i programmen. Att anpassa sina program till cacheminnena är alltså ett nischområde, men när det behövs kan prestandaförbättringen vara dramatisk. Låt oss repetera de båda typerna av lokalitet. Lokalitet i tiden: om en minnescell just har lästs eller skrivits, så läser eller skriver programmet troligen snart precis samma minnescell igen. Detta kallas också temporal lokalitet, eller re-use. Lokalitet i rummet: om en minnescell just har lästs eller skrivits, så läser eller skriver programmet troligen snart en annan minnescell med näraliggande adress. Detta kallas också spatial lokalitet, eller bara locality. IS1200/IS1500 Hemlab cache: Cacheminnen sida 4

5 Byte-adresserat minne och cacheminne I simulatorns minne innehåller en byte 8 bitar, och varje byte har en egen adress. Så fungerar de flesta nya datorer idag. Instruktionerna till en Mips-processor är alltid 4 byte långa, det vill säga 32 bitar. Om första instruktionen finns på adress 0 och är 4 byte lång, så finns nästa instruktion på adress 4. Sedan följer instruktioner på adresserna 8, 12, 16, 20 och så vidare. Se figuren. Adresserna för instruktioner är alltså alltid jämnt delbara med 4. Det gör att instruktionsadresserna alltid har 0:or i de båda minst signifikanta bitarna, alltså längst till höger. Ett minne blir enklare att konstruera om det bara behöver hantera hela ord. Därför byggs instruktionscacheminnet i Mips-datorer för att alltid hantera hela 4-bytes ord. Ett ord börjar alltid på en adress som är jämnt delbar med 4, och sådana adresser slutar ju med två binära 0:or. Av samma orsak innehåller alltid programräknaren (Program Counter, PC), alltid adresser som är jämnt delbara med 4 (och slutar med två binära 0:or). Instruktionscacheminnet konstrueras alltså med förutsättningen att de två minst signifikanta adressbitarna är noll. Då behöver cacheminnet inte använda de båda bitarna. För säkerhets skull kan det vara bra om cacheminnet kollar att de två minst signifikanta adressbitarna verkligen är nollställda. Detta görs i de flesta datorer. Ett undantag är Nios II, där processorn i vissa konfigurationer ignorerar bitarnas värden och alltid arbetar som om de var nollställda. Mats Brorssons bok Datorsystem tar inte upp de här detaljerna om hur byte-adressering påverkar cacheminnet. Du kan i stället läsa om det i kompendiet Cacheminnen och adressöversättning. Mips-simulatorn särbehandlar de två minst signifikanta adressbitarna, och förutsätter att de är nollställda. Figur 2 visar ett direktmappat cacheminne med storlek 64 byte (16 ord) och blockstorlek 8 byte per block (2 ord per block). väljer rad i cacheminnet adressetikett giltigbit (valid-bit) OCH-grind Figur 1. 4-bytes instruktioner i byte-adresserat minne. de 2 minst signifikanta adressbitarna ska vara noll jämförare adress byte (8 bitar) en instruktion nästa instruktion en instruktion till ännu en instruktion och så vidare väljer ord inom raden Figur 2. Cacheminne (bild från simulatorn). IS1200/IS1500 Hemlab cache: Cacheminnen sida 5

6 Laborationsuppgifter Läs hela lab-pm innan du börjar! Uppgift 1. Längd, bredd, höjd hos olika cacheminnen Starta simulatorn. Välj Edit Cache/Mem Config och studera de inställningar som finns för I-cache, D-cache och Memory. Figur 3 till höger visar ett cacheminne med standardinställningarna. Det är direktmappat, med storlek 16 ord (64 byte) och blockstorlek 2 ord per block (8 byte per block). Svara på följande frågor. Vid redovisningen ska du kunna förklara och motivera svaren i detalj. Du kan också få nya, liknande frågor vid redovisningen. 1 ord är 4 bytes, det vill säga 32 bitar, i simulatorn. Fråga 1.1. Hur många bitars adress krävs (till exempel i Program Counter) i en byteadresserad dator med ett RAM-minne som är 512 Mbyte stort? Fråga 1.2. Förklara i vilka fält adressen delas och Figur 3. Cacheminne (bild från simulatorn). hur många bitar som ingår i varje fält, för ett direktmappat cache-minne med storlek 16 kbyte (16384 byte) och blockstorlek 2 ord. Ange också namnet på varje fält. Figur 4 visar ett exempel på hur en fältindelning kan se ut. Fråga 1.3. Utgå från figur 3. Den visar ett direktmappat cacheminne med storlek 16 ord (64 byte) och blockstorlek 2 ord per block (8 byte per block). I vilka fält delas adressen och hur många bitar ingår i varje fält? Fråga 1.4. Utgå från figur 3. Hur ändras cacheminnets utseende om du ökar cacheminnesstorleken (Size) från 16 ord till 32 ord och hur påverkas fältindelningen i adressen? Adress från CPU:n (32 bitar) Exempel på fältindelning, här med 3 fält Figur 4. Exempel på fältindelning av den adress som kommer från CPU:n. Bilden saknar namn och storlekar på fälten. Fråga 1.5. Utgå från figur 3. Hur ändras cacheminnets utseende om du ökar blockstorleken (Block size) från 2 ord per block till 4 ord per block, och hur påverkas fältindelningen i adressen? Fråga 1.6. Utgå från figur 3. Hur ändras cacheminnets utseende om du ändrar från associativitet 1 (direktmappat cacheminne) till associativitet 2, och hur påverkas fältindelningen i adressen? IS1200/IS1500 Hemlab cache: Cacheminnen sida 6

7 Figur 5. Cache miss penalty när blockstorleken är 4 ord (16 byte). Cache miss penalty Tidsförlusten för en miss i ett cache-minne (cache miss penalty) anges ofta som hur många extra CPU-klockcykler det tar att läsa/skriva huvud-minnet. Standardvärdet för denna "kostnad" är i Mips-simulatorn satt till 50 klockcykler per ord. Här följer en beskrivning av hur man kan räkna fram ett mer realistiskt värde på miss penalty, vid olika klockfrekvenser hos processor och minnesbuss. Som exempel väljer vi CPU-frekvens 2 GHz, och minnesklockfrekvens 200 MHz. Vidare förutsätter vi att varje minnesreferens görs som en burst (skur), med 4 stycken överföringar av 4-bytes data, det vill säga 4 32 bits data. Orsaken till att överföringen görs som burst är att överföringen har en viss uppstartstid. Att läsa eller skriva ett enda ord (4 byte) i primärminnet tar 3 busscykler. Om man i stället läser en skur, så tar första ordet 3 busscykler och de följande orden 1 busscykel var. När CPU/cacheminne läser 4 ord i taget så blir alltså totaltiden busscykler. Detta brukar betecknas Referensmönster betyder alltså att den första referensen tar 3 busscykler och att efterföljande 3 referenser tar vardera 1 ytterligare busscykel. I vårt exempel är CPU:n 10 gånger så snabb som minnesbussen. Att referera 4 4 bytes tar då = 60 CPU-cykler. Vid en läs-miss som leder till att cacheminnet hämtar ett block på 4 ord (16 bytes), så blir alltså miss penalty 60 CPU-cykler. Med lite tur så kommer det i framtiden att göras referenser till andra ord/bytes inom detta block, och då ger de referenserna träffar i cachen. Tyvärr tar inte simulatorn någon hänsyn till att den första referensen i ett block tar längre tid. Det går inte att ställa in i simulatorn. För att få riktiga värden vid simuleringen måste du räkna ut medelvärdet av miss penalty. Det medelvärdet ställer du in som access time i simulatorn. Om totaltiden för att hämta 4 ord är 60 CPUcykler som i exemplet, så är genomsnittstiden per ord 15 cykler. 15 cykler är alltså den access time som ska anges i simulatorn när blockstorleken är 4 ord. Read och Write ska ha samma access time. IS1200/IS1500 Hemlab cache: Cacheminnen sida 7

8 Figur 6. Cache miss penalty när blockstorleken är 2 ord (8 byte). Uppgift 2. Instruktions- och datacacheminnen Simulatorn förstår alltså inte resonemangen om burst-referenser med mera. I simulatorn ställer du in en access time som sedan gäller för alla ord. Därför behöver du ändra access time när du ändrar blockstorleken. Se till att access time motsvarar genomsnittstiden enligt resonemanget här. Simulatorn klarar att man har olika blockstorlek för datacacheminne (D-cache) och instruktionscacheminne (I-cache). Tyvärr går det inte att ha olika access time för D-cache och I-cache. Det gör att simuleringen inte kan ge helt korrekta värden på körtiden (execution time) när blockstorleken är olika för data- och instruktionscacheminnena. För att felet vid dina mätningar ska bli så litet som möjligt ska du ställa in access time i simulatorn efter det cacheminne som gör flest referenser (läsningar och/eller skrivningar) till primärminnet. I simulatorn kan du göra en provkörning, och studera antalet missar (miss count) för instruktions- och datacacheminnena. Det cacheminne som har högst värde på miss count kommer att påverka körtiden mest. Miss count multiplicerad med miss penalty ger ju den totala extratid som det aktuella cacheminnet (I eller D) har använt till hämtningar från det långsamma primärminnet. Fråga 2.1. Vilket cacheminne används oftast, instruktionscacheminnet eller datacacheminnet? Fråga 2.2. Anta att du ska göra en simulering där instruktions- och datacacheminne har olika blockstorlek. Du gör en provkörning och ser att båda har 50% hit-rate. Vilket cacheminne ska styra din inställning av miss penalty? Fråga 2.3. Varför har datacacheminnet (D-cache) en write-policy, men inte instruktionscacheminnet? Ledning till alla tre frågorna: vilket cacheminne används vid och vilket används när Load och Store utförs? IS1200/IS1500 Hemlab cache: Cacheminnen sida 8

9 CPI, Cycles Per Instruction Här nedanför ser du simulatorns standardinställningar för I-cache och D-cache. Figur 7. Standardinställningarna för instruktions- och datacacheminnena i simulatorn. Du når de här inställningarna i simulatorn med Edit Cache/Mem Config. Associativitetstalet kallas i simulatorn för Blocks in sets. Utbytespolicyn (Replacement policy) spelar ingen roll så länge associativitetstalet är 1, det vill säga när cacheminnet är direktmappat. Standardinställningarna för primärminnet visas här nedanför till höger. Standardinställningarna i simulatorn ger inte så bra prestanda. Du har redan gjort provkörningar. Räkna fram CPI, Cycles Per Instruction: cycle count CPI = hit count miss count Lågt CPI betyder bättre prestanda, så länge klockfrekvensen är konstant. En Mips-processor kan hämta och utföra en instruktion varje klockcykel. Det betyder att processorn har CPI = 1. Ska vi vara noga så tar hoppinstruktioner 2 cykler, vilket höjer det genomsnittliga CPI-värdet till cirka 1,2. Beräkna det CPI-värde du fått vid provkörningen. Har du använt Figur 8. Standardinställningar, primärminne. standardinställningarna så blir CPI-värdet mycket högre än 1,2. I nästa uppgift ska vi studera detta lite närmare. Påminnelse: Read och Write ska ha samma access time. IS1200/IS1500 Hemlab cache: Cacheminnen sida 9

10 Tidslinje ett sätt att analysera prestanda för cacheminnen Tidslinjen är ett verktyg för analys av cacheminnesprestanda. Med en tidslinje kan du för hand ta fram exakt vilka referenser ett visst program kommer att göra till cacheminnena. Det gör det möjligt att exakt beräkna den hit rate programmet bör ha. Om de simulerade värdena inte stämmer med de beräknade, så finns en felkälla någonstans. Simuleringen kan vara fel, till exempel för att någon kompilator- eller simulator-inställning inte är som den ska vara. Beräkningen kan också vara fel, till exempel på grund av misstag i analysen av vilka referenser som blir träff och vilka som blir miss. adress 0 adress 4 adress 8 adress 12 adress 16 adress 20 adress 24 tid Figur 9. Exempel på ofullständig tidslinje för instruktionscacheminne (I-cache). Programmet i detta exempel har inga hoppinstruktioner, utan består enbart av "rak" kod. När du har ställt upp tidslinjen analyserar du hur cacheminnet kommer att reagera på varje referens. Eftersom cacheminnets beteende beror på tidigare händelser så är det viktigt att ta händelserna i den ordning de verkligen inträffar. Som exempel studerar vi tidslinjen i figuren här ovanför. Fetch betyder att en instruktion hämtas. Vi antar att instruktionscacheminnet är tomt när vårt exempel börjar. Då kommer den första händelsen på tidslinjen, Fetch från adress 0, att medföra miss i cacheminnet. Vi bokför detta i tidslinjen. Miss innebär att cacheminnet inte har den information som CPU:n begärt. Cacheminnet kan alltså inte leverera informationen till CPU:n. Då startar cacheminnet en hämtning från primärminnet. Hur mycket cacheminnet hämtar från primärminnet beror på blockstorleken. Vid miss på grund av läsning, som det är fråga om här, så hämtar alla cacheminnen alltid ett helt block. Anta att blockstorleken är 8 byte (2 ord). Cacheminnet hämtar alla bytes i blocket, och med 8 bytes blockstorlek är det de bytes som har binär adress från och med xxxx000 till och med xxxx111. Gå gärna tillbaka till figur 1, så ser du att cacheminnet i så fall hämtar två instruktioner: den instruktion som orsakade missen (på adress 0), och så den instruktion som ligger intill (på adress 4). Nästa referens är Fetch från adress 4. Den informationen har redan hämtats till cacheminnet, vid missen alldeles nyss. Vi får alltså en träff. Referensen därefter är Fetch från adress 8. Med blockstorleken 2 ord så ingår inte adress 8 i det block som just hämtades. Adress 8 är aldrig hämtad till cacheminnet, och vi får en miss. Vi fortsätter tidslinjen tills vi är säkra på att vi sett hela referensmönstret. Slutar vi för tidigt finns ju risk att vi använder fel värden i vår beräkning. adress 0 adress 4 adress 8 adress 12 adress 16 adress 20 adress 24 MISS TRÄFF MISS TRÄFF MISS Figur 10. Tidslinjen, när resultatet från de första fem referenserna har fyllts i. I det här fallet bör vi fortsätta tills vi har fyllt drygt två block. Vi ser att programmets förväntade hit rate i instruktionscacheminnet är 50%. tid IS1200/IS1500 Hemlab cache: Cacheminnen sida 10

11 1 ord (4 byte) L: call f1 call f1 call f1 br L nop f1: ret Figur 11. Ett program i primärminnet. 27 bit tag2 bit index1 bit ordval 2 bit byte-i-ord Figur 12. Tvåvägsassociativt cacheminne, med storlek 64 byte (16 ord) och blockstorlek 8 byte (2 ord). Adressens fältindelning förklaras uppe till höger. Placering av information i cacheminnet För att veta vilka referenser som ger träff och vilka som ger miss, så måste vi beräkna vilken information som placeras på vilken rad i cacheminnet. Som exempel använder vi programmet här till vänster. Vi studerar en I-cache med storlek 64 byte (16 ord), blockstorlek 8 byte (2 ord) och tvåvägsassociativitet (blocks in set = 2). Se figuren ovan. Först av allt ska CPU:n hämta instruktionen på adress 0. Indexdelen av adressen är noll. Därför används rad 0, som är den översta raden i cacheminnet. Översta raden är markerad i figuren. Cacheminnet är till en början tomt. Det blir miss och cachen ska hämta in ett block. Båda blocken på översta raden är lediga (eftersom cachen är tom). Då spelar det ingen roll om vi placerar blocket i vänster eller höger halva av cacheminnet. Vi väljer den vänstra halvan. Vid miss hämtas alltid ett helt block, alltså två instruktioner: den på adress 0 och den på adress 4. Sedan hämtas instruktionen på adress 4. Det blir en träff. Instruktionen call f1 hoppar till adress 36. Där ska alltså nästa instruktion hämtas. Binär form av talet 36 är Indexbitarna är 00, så vi undersöker översta raden i cacheminnet. I vänstra halvan finns information från adress 0. Alla bitar i adressetiketten (tag) är nollställda. Det stämmer inte med motsvarande del av adress 36: Ingen träff i den halvan alltså. I högra halvan av översta raden är det tomt, så där blir det inte heller träff. Nu har vi undersökt hela raden och inte hittat det vi sökte. Vi har en miss, och måste hämta från primärminnet. Eftersom indexbitarna är noll så ska informationen placeras på översta raden i cacheminnet. Som tur är finns ett ledigt block där: det högra. Cacheminnet hämtar alltid ett helt block vid miss, med binära adresser från och med xxxx000 till och med xxxx111, det vill säga instruktionerna på adress 32 och 36. Nu innehåller cacheminnet den information som visas i figuren här till höger L: call f nop f1: Figur 13. Innehåll i cacheminnet efter de tre första referenserna. IS1200/IS1500 Hemlab cache: Cacheminnen sida 11

12 Uppgift 3. Provkörning av ett enkelt program: string-copy I den här uppgiften ska du provköra programmet strcpy.c, som visas här nedanför. Du kan hämta programtexten på kursens webbsidor om labben: strcpy.c 1 /* strcpy.c */ 2 3 #include <stdio.h> 4 #include <idt_entrypt.h> 5 6 /* C stringcopy */ 7 8 static void str_cpy( char *to, const char *from) 9 { 10 while( *from) 11 { 12 *to++ = *from++; 13 } 14 *to = '\0'; 15 } int main() 18 { 19 static char* hello = "Hello World!"; 20 static char to[4711] = "blaha blaj blurk bletch"; 21 int Time; printf("strangen hello ser ut sa har: %s\n", hello); 24 flush_cache(); /* toem cache-minnet */ 25 timer_start(); /* nollstall tidmatning */ str_cpy( to, hello); Time = timer_stop(); /* las av tiden */ 30 printf("time to copy: %d\n",time); 31 printf("och kopian sa har: %s\n", to); 32 } Kompilering av strcpy.c För programmet strcpy.c ska du ha kompileringsinställningen Optimization level: Default. Vid behov ändrar du i MipsIT Studio, under Project Settings Compile/Assemble. Simulering Starta simulatorn och ladda programmet till simulatorn. Provkör programmet. Klicka sedan på rutan I-Cache, så att instruktionscacheminnesfönstret öppnas. Summan av Hit Count och Miss Count anger antalet instruktioner som hämtats och utförts. Ändra textsträngen hello i programmet. Ta bort eller lägg till ett eller ett par tecken så att strängen får en lite annan längd. Kompilera, återställ simulatorn, ladda upp programmet, provkör. Skillnaden i antalet utförda instruktioner beror på att loopen i funktionen str_cpy körs olika antal varv för olika längder på strängen. Fråga 3.1. Exakt hur många instruktioner körs i ett varv i loopen? IS1200/IS1500 Hemlab cache: Cacheminnen sida 12

13 Uppgift 4. Mer om string-copy Kom ihåg: Optimization level: Default. I-cache disabled, D-cache disabled och miss penalty disabled Återställ simulatorn och gör följande cacheinställningar. Se till att kryssrutorna Disable och Disable penalty är ikryssade, för både instruktions- och datacacheminnena. Inställningarna för primärminnet behöver inte ändras. Gör en provkörning. Fråga 4.1. Hur lång tid tog programmet enligt utskriften Time to copy? Fråga 4.2. Hur många cykler tog programmet enligt simulatorns Cycle count? Fråga 4.3. Varför blev värdena olika? Båda anger antalet cykler. I-cache enabled, D-cache enabled och miss penalty enabled Återställ simulatorn och se till att I-cache och D-cache är enabled. Ställ in en rimlig access time för primärminnet. Låt de andra parametrarna ha standardvärdena. Gör en provkörning. Fråga 4.4. Vilket värde valde du på access time?.. Fråga 4.5. Hur många cykler tog programmet enligt simulatorns Cycle count? Fråga 4.6. Hur många instruktioner utfördes?.. Fråga 4.7. Vilken hit rate fick du i instruktionscacheminnet? Fråga 4.8. Vad blev CPI? Fråga 4.9. Varför blir det så dålig hit rate i instruktionscacheminnet? Variera parametrar för I-cachen Försök förbättra prestanda genom att ändra parametervärden för instruktionscacheminnet. Kan du genom att ändra någon parameter få kortare körtid (mindre cycle count) på grund av förbättrad hit rate i I-cachen? Fråga Provkör systematiskt. Bokför i tabellen här nedanför, eller i en likadan tabell på separat papper. Förklara resultaten vid redovisningen. Size (antal ord) Block size (ord) Associativitet (blocks in sets) Access time Cycle count CPI I-cache hit rate I-cache miss count D-cache hit rate D-cache miss count IS1200/IS1500 Hemlab cache: Cacheminnen sida 13

14 Uppgift 5. Matris-addition Studera programmet matris.c som visas här nedanför. Du kan hämta programtexten på kursens webbsidor om labben: För programmet matris.c ska du ha kompileringsinställningen Optimization level: 3 (High). Vid behov ändrar du i MipsIT Studio, under Project Settings Compile/Assemble. 1 /* matris.c */ 2 #include <stdio.h> 3 #include <idt_entrypt.h> 4 5 #define MATRIXSIZE 16 6 #define MATRIXSIZE_ROWS 16 7 #define MATRIXSIZE_COLS /* 10 * addera two matriser 11 */ 12 void matrisadd( int res[matrixsize_rows][matrixsize_cols], 13 int a[matrixsize_rows][matrixsize_cols], 14 int b[matrixsize_rows][matrixsize_cols] ) 15 { 16 int i,j; for(j=0; j < MATRIXSIZE; ++j) /* variera kolumn-index */ 19 for(i=0; i < MATRIXSIZE; ++i) /* variera rad-index */ 20 res[i][j] = a[i][j] + b[i][j]; 21 } int main() 24 { 25 static int a[matrixsize_rows][matrixsize_cols]; 26 static int b[matrixsize_rows][matrixsize_cols]; 27 static int res[matrixsize_rows][matrixsize_cols]; 28 int i,j, Time; /* 31 * initiera matris a och b 32 */ 33 for( i=0; i<matrixsize; ++i) 34 for( j=0; j<matrixsize; ++j) 35 { 36 a[i][j] = i+j; 37 b[i][j] = i-j; 38 } flush_cache(); /* toem cachen */ 41 timer_start(); /* nollstall tidmatning */ matrisadd( res, a, b); Time = timer_stop(); /* las av tiden */ 46 printf("time: %d\n",time); 47 } Påminnelse: för matris.c ska du ha kompileringsinställningen Optimization level: 3 (High). IS1200/IS1500 Hemlab cache: Cacheminnen sida 14

15 De tre matrisernas placering i primärminnet Programmet matris.c gör beräkningar på matriser. Varje matris innehåller ett antal matriselement, och varje matriselement består av ett heltal. Ett heltal är 4 byte stort i simulatorn. Kompilatorn placerar matriserna omedelbart efter varandra i primärminnet, som figuren till höger visar. Inom varje matris placeras matriselementen radvis, helt enligt definitionen av programmeringsspråket C. Index för några av matriselementen finns angivna i figuren till höger. adress 0 1 ord (4 byte) a[0][0] a[0][1] a[0][2] Addition av matriser Figuren här nedanför visar en principskiss över addition av matriser. Matriserna lagras radvis i primärminnet. Fråga 5.1. Vilket index, radnummer eller kolumnnummer, är det som ska variera i inre loopen för att programmet ska referera närliggande adresser i primärminnet? a[0][15] a[1][0] a[1][1] Addition av matriser För varje i och j utförs: res[i][j] = a[i][j] + a[i][j] kolumn j a[1][15] a[2][0] rad i = + a[15][15] b[0][0] b[0][1] res[i][j] a[i][j] b[i][j] Figur 15. Elementen i en matris M lagras radvis i primärminnet. Ett element väljs ut med uttrycket M[radnummer][kolumnnummer]. b[15][15] res[0][0] res[0][1] res[15][15] Figur 14. De tre matrisernas placering i primärminnet. IS1200/IS1500 Hemlab cache: Cacheminnen sida 15

16 En första provkörning av matris.c Se till att kompileringsinställningen för optimering är 3 (High). Kompilera. Återställ simulatorn. Ställ in de värden som anges här nedanför. I-cache Size: 32 ord (ej standardvärde). Block size: 2 ord. Blocks in sets (associativitet): 1. D-cache Size: 16 ord. Block size: 2 ord. Blocks in sets (associativitet): 1. Write policy: Write back (ej standardvärde). Minnet Fråga 5.2. Vilken access time valde du? Varning för cycle count! Det finns en viktig brist hos simulatorn. Värdena för cycle count som visas tillsammans med I-cache och D-cache har bara 5 siffror. De visar fel om det behövs fler siffror än 5. För att få riktiga värden, använd View I-cache Stats, eller View D-cache Stats. Båda visar rätt antal clock cycles. Fråga 5.3. Hur många cykler tog programmet enligt simulatorns antal clock cycles?. Fråga 5.4. Hur många instruktioner utfördes?.. Fråga 5.5. Vilken hit rate fick du i instruktionscacheminnet (I-cache)?.. Fråga 5.6. Vilken hit rate fick du i datacacheminnet (D-cache)?.. Fråga 5.7. Varför blir det så bra hit rate i instruktionscacheminnet? Variera parametrar för I-cachen Försök nu förbättra prestanda genom att ändra parametervärden för instruktionscacheminnet. Kan du genom att ändra någon parameter få kortare körtid (mindre cycle count) på grund av förbättrad hit rate i I-cachen? Fråga 5.8. Provkör systematiskt. Bokför i tabellen, eller i en likadan tabell på separat papper. Förklara resultaten vid redovisningen. Size (antal ord) Block size (ord) Associativitet (blocks in sets) Access time Cycle count CPI I-cache hit rate I-cache miss count D-cache hit rate D-cache miss count IS1200/IS1500 Hemlab cache: Cacheminnen sida 16

17 Matris-addition program-version 1 (originalversion från lab-pm) Instruktionscacheminnet (I-cache) ska alltid ha följande värden: Size = 32 ord; Block size = 2 ord; Blocks in sets = 1 (det vill säga direktmappat). Var noga med att datacacheminnet alltid har Write policy = Write back. Variera D-cache-storlek (size) för programversion 1 Prova olika storlekar på datacacheminnet, från 16 till 1024 ord. Låt Block size = 2 ord, och Blocks in sets (associativiteten) = 1. Ange access time här:. Size Hit rate Cycle count högst 3 % Fråga 5.9. Förklara de värden du fått på hit rate och körtid. Fråga Varför blir det så dåligt ända tills storleken når 512 ord? Variera D-cache-associativitet (blocks in sets) för programversion 1 Prova olika associativitet (blocks in sets) för D-cachen, från 1 till 4. Låt Size = 128 ord, och Block size = 4 ord. Välj LRU som utbytespolicy (replacement policy). Ange access time här: Associativitet Hit rate högst 3 % Cycle count Fråga Förklara de värden du fått på hit rate och körtid. Fråga Det första matriselement som hämtas in till D-cachen är a[0][0]. För associativitetstalen 1 och 4, analysera fram och förklara i detalj vilket element i vilken matris som skriver över a[0][0] i D-cachen. Variera D-cache-blockstorlek (block size) för programversion 1 Prova olika blockstorlek för D-cachen, från 1 till 4. Låt Size = 128 ord, och Blocks in sets (associativiteten) = 1.. Block size Access time Hit rate högst 3 % Cycle count Fråga Förklara de värden du fått på hit rate och körtid. IS1200/IS1500 Hemlab cache: Cacheminnen sida 17

18 Matris-addition program-version 2 (med inre och yttre loop växlade) Du ska nu ändra programmet på följande sätt. I funktionen matrisadd finns ett loop-nest bestående av två slingor (loopar) i varandra. Program-version 1 (originalversion från lab-pm) ser ut så här: for(j=0; j < MATRIXSIZE; ++j) /* variera kolumn-index */ for(i=0; i < MATRIXSIZE; ++i) /* variera rad-index */ res[i][j] = a[i][j] + b[i][j]; Du ska byta plats på de två raderna med for, så att programmet gör samma beräkningar fast i en annan ordning. I det nya programmet ser de tre raderna i ut så här: for(i=0; i < MATRIXSIZE; ++i) /* variera rad-index */ for(j=0; j < MATRIXSIZE; ++j) /* variera kolumn-index */ res[i][j] = a[i][j] + b[i][j]; Instruktionscacheminnet (I-cache) ska alltid ha följande värden: Size = 32 ord; Block size = 2 ord; Blocks in sets = 1 (det vill säga direktmappat). Var noga med att datacacheminnet alltid har Write policy = Write back. Variera utbytespolicy (replacement policy) för D-cache för programversion 2 Använd följande värden för datacacheminnet (D-cache). Låt storleken (size) = 32 ord (128 byte), Block size = 8 ord (32 byte), och Blocks in sets (associativiteten) = 4. Ange access time här:.. Utbytespolicy Random FIFO LRU Hit rate Cycle count Fråga I vilka fält delas adressen, och hur många bitar ingår i varje fält, när det cacheminne som ingår i den här uppgiften ska adresseras? Fråga Varför blir värdena på hit rate och körtid lika för FIFO och LRU? Fråga Förklara varför värdet på hit rate för LRU blev just det värde du fick. Kunde värdet lika gärna ha varit 5% högre eller lägre? Varför, eller varför inte? Adress från CPU:n (32 bitar) Exempel på fältindelning, här med 3 fält Figur 16 (samma som figur 4). Exempel på fältindelning av adressen från CPU:n. IS1200/IS1500 Hemlab cache: Cacheminnen sida 18

19 Matris-addition program-version 2 (fortsättning) Instruktionscacheminnet (I-cache) ska alltid ha följande värden: Size = 32 ord; Block size = 2 ord; Blocks in sets = 1 (det vill säga direktmappat). Var noga med att datacacheminnet alltid har Write policy = Write back. Variera D-cache-storlek (size) för programversion 2 Prova olika storlekar på datacacheminnet, från 16 till 1024 ord. Låt Block size = 2 ord, och Blocks in sets (associativiteten) = 1. Ange access time här:. Size Hit rate Cycle count högst 3 % Fråga Förklara de värden du fått på hit rate och körtid. Fråga Varför blir det så dåligt ända tills storleken når en viss gräns? Variera D-cache-associativitet (blocks in sets) för programversion 2 Prova olika associativitet (blocks in sets) för D-cachen, från 1 till 4. Låt Size = 128 ord, och Block size = 4 ord. Välj LRU som utbytespolicy (replacement policy). Ange access time här: Associativitet Hit rate högst 3 % Cycle count Fråga Förklara de värden du fått på hit rate och körtid. Fråga Det första matriselement som hämtas in till D-cachen är a[0][0]. För associativitetstal 4, analysera fram och förklara i detalj vilket element i vilken matris som skriver över a[0][0] i D-cachen. Variera D-cache-blockstorlek (block size) för programversion 2 Prova olika blockstorlek för D-cachen, från 1 till 4. Låt Size = 128 ord, och Blocks in sets (associativiteten) = 1.. Block size Access time Hit rate högst 3 % Cycle count Fråga Förklara de värden du fått på hit rate och körtid. IS1200/IS1500 Hemlab cache: Cacheminnen sida 19

20 Matris-addition program-version 3 (med inre och yttre loop växlade, och med konstanten MATRIXSIZE_ROWS ändrad till 17) Utgå från programversion 2. Kontrollera att looparna i funktionen matrisadd ser ut så här: for(i=0; i < MATRIXSIZE; ++i) /* variera rad-index */ for(j=0; j < MATRIXSIZE; ++j) /* variera kolumn-index */ res[i][j] = a[i][j] + b[i][j]; Ändra nu konstanten MATRIXSIZE_ROWS från 16 till 17. Fråga När MATRIXSIZE_ROWS ändras från 16 till 17, så blir det ju flera matriselement i varje matris. Markera i figuren här intill var de nya matriselementen placeras i datorns primärminne. Motivera. Fråga Förklara vilken påverkan de nya matriselementen kan förväntas få på programkörningen. adress 0 1 ord (4 byte) a[0][0] a[0][1] a[0][2] a[0][15] a[1][0] a[1][1] a[1][15] a[2][0] a[15][15] b[0][0] b[0][1] b[15][15] res[0][0] res[0][1] res[15][15] Figur 17 (samma som figur 11). De tre matrisernas placering i primärminnet. IS1200/IS1500 Hemlab cache: Cacheminnen sida 20

21 Matris-addition program-version 3 (fortsättning) Instruktionscacheminnet (I-cache) ska alltid ha följande värden: Size = 32 ord; Block size = 2 ord; Blocks in sets = 1 (det vill säga direktmappat). Var noga med att datacacheminnet alltid har Write policy = Write back. Variera D-cache-storlek (size) för programversion 3 Prova olika storlekar på datacacheminnet, från 16 till 1024 ord. Låt Block size = 2 ord, och Blocks in sets (associativiteten) = 1. Ange access time här:. Size Hit rate Cycle count högst 3 % Fråga Förklara de värden du fått på hit rate och körtid. Fråga Nu har vi ju förbättrat programmet på två olika sätt. Varför blir det ändå så dålig hit rate när storleken är 16 ord? Variera D-cache-associativitet (blocks in sets) för programversion 3 Prova olika associativitet (blocks in sets) för D-cachen, från 1 till 4. Låt Size = 128 ord, och Block size = 4 ord. Välj LRU som utbytespolicy (replacement policy). Ange access time här: Associativitet Hit rate Cycle count Fråga Förklara de värden du fått på hit rate och körtid. Variera D-cache-blockstorlek (block size) för programversion 3 Prova olika blockstorlek för D-cachen, från 1 till 8. Låt Size = 128 ord, och Blocks in sets (associativiteten) = 1.. Block size Access time Hit rate Cycle count Fråga Förklara de värden du fått på hit rate och körtid. IS1200/IS1500 Hemlab cache: Cacheminnen sida 21

22 Här följer ett urklipp/avskrift av optimerad MIPS-kod för inre och yttre loop. for(i=0; i < MATRIXSIZE; i++) /* variera rad-index */ for(j=0; j < MATRIXSIZE; j++) /* variera kolumn-index */ res[i][j] = a[i][j] + b[i][j]; 1 move $11,$0 ;i=0 2 la $10,b.5 ;reg10 pekar på matris b 3 la $9,a.4 ;reg9 pekar på matris a 4 la $8,res.6 ;reg8 pekar på matris res 5 $L38: move $7,$0 ;j=0 6 move $6,$8 ;reg6 pekar på res[i,j] 7 move $5,$10 ;reg5 pekar på b[i,j] 8 move $4,$9 ;reg4 pekar på a[i,j] 9 $L42: lw $3,0($5) ;reg 3 innehåller nu a[i,j] 10 addu $5,$5,4 ;peka ut nästa radelement i a 11 lw $2,0($4) ;reg 2 innehåller nu b[i,j] 12 addu $4,$4,4 ;peka ut nästa radelement i b 13 addu $7,$7,1 ;j++ 14 addu $2,$2,$3 ;reg2 = a[i,j] + b[i.j] 15 sw $2,0($6) ;skriv till res [i,j] 16 slt $2,$7,16 ;reg2 :=1 om i<16 17 bne $2,$0,$L42 ;hoppa om i<16, samt i hoppluckan 18 addu $6,$6,4 ;peka ut nästa radelement i res 19 addu $10,$10,64 ;byt rad i b 20 addu $9,$9,64 ;byt rad i a 21 addu $11,$11,1 ;i++ 22 slt $2,$11,16 ;reg2 :=1 om i<16 23 bne $2,$0,$L38 ;hoppa om i<16 24 addu $8,$8,64 ;byt rad i res (i hopplucka) IS1200/IS1500 Hemlab cache: Cacheminnen sida 22

Hemlaboration Cache Cacheminnen

Hemlaboration Cache Cacheminnen IS1200 Datorteknik IS1500 Datorteknik och komponenter Hemlaboration Cache Cacheminnen 2014-12-15 Kursdeltagarens namn:.. Datum: Godkänd av (assistentens signatur):.. IS1200/IS1500 Hemlab cache: Cacheminnen

Läs mer

CE_O5. Cacheminne. Hemlaboration 2.

CE_O5. Cacheminne. Hemlaboration 2. IS1500 Exempelsamling till övning CE_O5, 2014 CE_O5. Cacheminne. Hemlaboration 2. 5.1. Medeltidshistoria Diskutera förloppet då CPU:n gör en läsreferens i huvudminnet dvs information kopieras från huvudminne

Läs mer

CE_O8. Cacheminne. Hemlaboration 2.

CE_O8. Cacheminne. Hemlaboration 2. IS1200 Lösningsförslag till övning CE_O8, 2015 CE_O8. Cacheminne. Hemlaboration 2. 8.1. Medeltidshistoria Diskutera förloppet då CPU:n gör en läsreferens i huvudminnet dvs information kopieras från huvudminne

Läs mer

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok Namn: Laborationen godkänd: Laboration 2. Cacheminne Laborationens syfte I laborationen ska du bekanta dig med cacheminnen. Genom laborationen fås kunskap om hur cacheminnen är konstruerade och hur de

Läs mer

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok.

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok. Namn: Laborationen godkänd: Laboration 3. Pipeline Laborationens syfte I laborationen ska du bekanta dig med pipelining. Genom laborationen fås kunskap om hur pipelines är konstruerade och hur de används.

Läs mer

CPU. Carry/Borrow IX. Programräknare

CPU. Carry/Borrow IX. Programräknare Laboration:. Jämförelser mellan assembler och C. CPU ACCA ACCD ACCB 8-bitars ackumulatorer eller 16- bitars ackumulator CCR 1 1 1 SXH I NZVC Flaggregister Carry/Borrow IX IY PC Indexregister X Indexregister

Läs mer

Minnet från processorns sida Datorteknik

Minnet från processorns sida Datorteknik Minnet från processorns sida Datorteknik ERIK LARSSON Processorn ger kommandon/instruktioner med en adress och förväntar sig data. Exempel: READ(ADR) -> DATA Fysisk adress Logisk adress READ 00001000 READ

Läs mer

Tentamen den 17 mars 2016 Datorteknik, EIT070

Tentamen den 17 mars 2016 Datorteknik, EIT070 Lunds Universitet LTH Tentamen den 17 mars 2016 Datorteknik, EIT070 Skrivtid: 14.00-19.00 Tillåtna hjälpmedel: Inga. Maximalt antal poäng: 50 poäng För betyg 3 krävs 20 poäng För betyg 4 krävs 30 poäng

Läs mer

Föreläsningsanteckningar 5. Cacheminnen

Föreläsningsanteckningar 5. Cacheminnen Föreläsningsanteckningar 5. Cacheminnen Olle Seger 2012 Anders Nilsson 2016 1 Inledning Bakgrunden till att cacheminnen behövs för nästan alla datorer är enkel. Vi kan kallt räkna med att processorn är

Läs mer

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621 Lunds Universitet LTH Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621 Skrivtid: 8.00-13.00 Inga tillåtna hjälpmedel Uppgifterna i tentamen ger maximalt 60 poäng. Uppgifterna är

Läs mer

Datorarkitekturer med Operativsystem

Datorarkitekturer med Operativsystem Lunds Tekniska Högskola Campus Helsingborg Datorarkitekturer med Operativsystem EDT621 Rapport Cacheminneshantering för ARM3-processorer 7 december 2015 Pierre Aupeix dat11pau@student.lu.se 1 Abstract

Läs mer

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60) Lunds Universitet LTH Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60) Skrivtid: 08.00-13.00 Tillåtna hjälpmedel: Inga. Maximalt antal poäng: 50 poäng För betyg 3 krävs 20 poäng

Läs mer

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

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng Lunds Universitet LTH Ingenjörshögskolan, Helsingborg Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng Skrivtid: 08.00-13.00 Tillåtna hjälpmedel: Inga. Maximalt

Läs mer

Datorsystem. Laboration 3: Operativsystem Senast uppdaterad: 14 oktober 2012 Version 1.3. Student: Underskrift: Underskrift: Datum:

Datorsystem. Laboration 3: Operativsystem Senast uppdaterad: 14 oktober 2012 Version 1.3. Student: Underskrift: Underskrift: Datum: Datorsystem Laboration 3: Operativsystem Senast uppdaterad: 14 oktober 2012 Version 1.3 Student: Lärare: Underskrift: Underskrift: Datum: Datorsystem Laboration 3 1 Innehåll 1 Inledning 2 1.1 Introduktion...........................................

Läs mer

HF0010. Introduktionskurs i datateknik 1,5 hp

HF0010. Introduktionskurs i datateknik 1,5 hp HF0010 Introduktionskurs i datateknik 1,5 hp Välkommna - till KTH, Haninge, Datateknik, kursen och till första steget mot att bli programmerare! Er lärare och kursansvarig: Nicklas Brandefelt, bfelt@kth.se

Läs mer

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION Laborationsansvarig: Anders Arvidsson Utskriftsdatum: 2005-08-31 Laborant(er): 1 Syfte Laborationen ska ge studenten möjlighet att genom assemblerinlägg

Läs mer

Digitalteknik och Datorarkitektur 5hp

Digitalteknik och Datorarkitektur 5hp Digitalteknik och Datorarkitektur 5hp Minnes-hierarkier och Cache 12 maj 2008 karl.marklund@it.uu.se issa saker använder vi ofta Dessa saker vill vi ha nära till hands Storleken har betydelse Litet är

Läs mer

MESI i Intel Core 2 Duo

MESI i Intel Core 2 Duo MESI i Intel Core 2 Duo Sammanfattning Denna rapport beskriver en processor (Intel Core 2 Duo) vars cache coherence protokoll är MESI. Rapporten beskriver hur processorn är uppbyggd, hur många kärnor den

Läs mer

Exempeltentamen Datorteknik, EIT070,

Exempeltentamen Datorteknik, EIT070, Lunds Universitet LTH Exempeltentamen Datorteknik, EIT070, Skrivtid: xx.00-xx.00 Tillåtna hjälpmedel: Inga. Maximalt antal poäng: 50 poäng För betyg 3 krävs 20 poäng För betyg 4 krävs 30 poäng För betyg

Läs mer

Datorteknik 2 (AVR 2)

Datorteknik 2 (AVR 2) Namn: Laborationen godkänd: Digitala system 15 hp Datorteknik 2 (AVR 2) LTH Ingenjörshögskolan vid Campus Helsingborg Enkel in- och utmatning. Drivrutiner. Bithantering. I denna laboration ska vi förbättra

Läs mer

Uppgift 1: a) u= a c + a bc+ ab d +b cd

Uppgift 1: a) u= a c + a bc+ ab d +b cd Uppgift 1: a) u= a c a bc ab d b cd b) a b c d u 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 0 1 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 0 0 1 1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 0 0 1

Läs mer

CE_O3. Nios II. Inför lab nios2time

CE_O3. Nios II. Inför lab nios2time IS1200 Exempelsamling till övning CE_O3, 2015 CE_O3. Nios II. Inför lab nios2time 3.1. Logiska operationer (se uppgift 1.2 c) Repetera (eller lär dig) innebörden av de logiska operationerna "bitvis AND",

Läs mer

En processor kan ha en klockfrekvens på flera GHz. Det går alltså a9 exekvera en instruk=on väldigt for, givet a9 instruk=onen finns i processorn.

En processor kan ha en klockfrekvens på flera GHz. Det går alltså a9 exekvera en instruk=on väldigt for, givet a9 instruk=onen finns i processorn. 1 2 En processor kan ha en klockfrekvens på flera GHz. Det går alltså a9 exekvera en instruk=on väldigt for, givet a9 instruk=onen finns i processorn. Instruk=onerna =ll programmet som exekveras finns

Läs mer

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

Multi-ported cache En rapport om några lösningar till att få flera minnesaccesser simultant. Multi-ported cache En rapport om några lösningar till att få flera minnesaccesser simultant. Sammanfattning När processorns klockhastighet ökar medför det en ökning av instruktioner vilket såklart ökar

Läs mer

Tentamen den 18 mars svar Datorteknik, EIT070

Tentamen den 18 mars svar Datorteknik, EIT070 Lunds Universitet LTH Tentamen den 18 mars 2015 - svar Datorteknik, EIT070 Skrivtid: 14.00-19.00 Tillåtna hjälpmedel: Inga. Maximalt antal poäng: 50 poäng För betyg 3 krävs 20 poäng För betyg 4 krävs 30

Läs mer

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

Tentamen den 14 januari 2015 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng Lunds Universitet LTH Ingenjörshögskolan, Helsingborg Tentamen den 14 januari 2015 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng Skrivtid: 08.00-13.00 Tillåtna hjälpmedel: Inga. Maximalt antal

Läs mer

Pipelining i Intel 80486

Pipelining i Intel 80486 Lunds Universitet Pipelining i Intel 80486 EITF60 Datorarkitekturer med operativsystem Martin Wiezell 2017-12-04 Abstract This paper gives a brief description of the instruction pipeline of the Intel 80486

Läs mer

Lösningar till tentamen i EIT070 Datorteknik

Lösningar till tentamen i EIT070 Datorteknik Lösningar till tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Onsdagen den 13 mars 2013, klockan 14:00 19:00 i Vic 2 A-D, 3 A-C. Tillåtna hjälpmedel: på tentan utdelad

Läs mer

Digitala System: Datorteknik ERIK LARSSON

Digitala System: Datorteknik ERIK LARSSON Digitala System: Datorteknik ERIK LARSSON Dator Primärminne Instruktioner och data Data/instruktioner Kontroll Central processing unit (CPU) Fetch instruction Execute instruction Programexekvering (1)

Läs mer

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013 Rahim Rahmani (rahim@dsv.su.se) Division of ACT Department of Computer and Systems Sciences Stockholm University SVAR TILL TENTAMEN I DATORSYSTEM, VT2013 Tentamensdatum: 2013-03-21 Tentamen består av totalt

Läs mer

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013 Rahim Rahmani (rahim@dsv.su.se) Division of SAS Department of Computer and Systems Sciences Stockholm University SVAR TILL TENTAMEN I DATORSYSTEM, HT2013 Tentamensdatum: 2013-10-30 Tentamen består av totalt

Läs mer

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011, KTH STH TENTAMEN HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011, 8.15-13.15 Gamla kurskoder: HI1900, 6E2950, etc. Examinator: Johnny Panrike Rättande lärare: Nicklas Brandefelt, Johnny

Läs mer

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

Minnets komponenter. Digitala System: Datorteknik. Programexekvering. Programexekvering. Enhet för utdata. Enhet för indata CPU. Digitala System: Datorteknik Minnets komponenter ERIK LARSSON Enhet för indata CPU Enhet för utdata Sekundärminne Programexekvering Program i högnivåspråk.. Z:=(Y+X)*3. Kompilator Exekverbart program i

Läs mer

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

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647 Lågnivåprogrammering Föreläsning 2 Lågnivåprogrammering Förberedelse inför laboration 2. Maskinspråk, assemblerspråk Talrepresentation En enkel dator, komponenter Instruktionsformat, instruktionscykel

Läs mer

Datorsystemteknik för E/D

Datorsystemteknik för E/D Tentamen i kursen Datorsystemteknik (EDA330 för D och EDA370 för E) 19/8 2000 1(8) Tentamen i kursen Datorsystemteknik (EDA330 för D och EDA370 för E) Datorsystemteknik för E/D 19/8 2000 Tentamensdatum:

Läs mer

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621 Lunds Universitet LTH Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621 Skrivtid: 08.00-13.00 Tillåtna hjälpmedel: Inga. Maximalt antal poäng: 50 poäng För betyg 3 krävs 20 poäng

Läs mer

Ladda upp filer fra n PLC till PC

Ladda upp filer fra n PLC till PC Supportdokument Ladda upp filer fra n PLC till PC Synpunkter, felaktigheter, önskemål etc. för dokumentet meddelas Fil: Malthe_Suppo_Ladda upp filer från.docx Innehållsförteckning 1. Allmänt... 2 2. Installation

Läs mer

Föreläsning 3. Programmering, C och programmeringsmiljö

Föreläsning 3. Programmering, C och programmeringsmiljö Föreläsning 3 Programmering, C och programmeringsmiljö Vad är programmering? Ett väldigt kraftfullt, effektivt och roligt sätt att kommunicera med en dator Att skapa program / applikationer till en dator

Läs mer

Lösningar till tentamen i EIT070 Datorteknik

Lösningar till tentamen i EIT070 Datorteknik Lösningar till tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Torsdagen den 13 mars 2014, klockan 14:00 19:00 i MA:10. Tillåtna hjälpmedel: på tentan utdelad formelsamling,

Läs mer

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18 F3 Föreläsning i Mikrodatorteknink 2006-08-29 Kärnan i microcontrollern består av ett antal register och en ALU. Till detta kommer också ett antal portar. Det finns 64 st portar. Några är anslutna mot

Läs mer

Datorteknik ERIK LARSSON

Datorteknik ERIK LARSSON Datorteknik ERIK LARSSON Laborationer Gå bara på tillfällen där du är anmäld. Moment svarar mot 1.5hp, dvs 40 timmar arbete Schemalagd tid: 4*2 (lektioner)+4*4(laborationer)=20 timmar Material: Finns på

Läs mer

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

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre Lågnivåprogrammering Föreläsning 2 Lågnivåprogrammering Förberedelse inför laboration 2. Maskinspråk, assemblerspråk Talrepresentation En enkel dator, komponenter Instruktionsformat, instruktionscykel

Läs mer

Cacheminne och adressöversättning

Cacheminne och adressöversättning Cacheminne och adressöversättning From: Central Processing Box 1 COMPUTERLAND 1 Virtual $00005A3C From: Central Processing Box 1 COMPUTERLAND 1 Physical $00005A3C $007B2A3C Innehåll Cacheminnen Cacheminnen

Läs mer

Datorarkitekturer med operativsystem ERIK LARSSON

Datorarkitekturer med operativsystem ERIK LARSSON Datorarkitekturer med operativsystem ERIK LARSSON Dator Primärminne Instruktioner och data Data/instruktioner Kontroll Central processing unit (CPU) Fetch instruction Execute instruction Programexekvering

Läs mer

Cacheminne i en Intel Core 2 Duo-processor

Cacheminne i en Intel Core 2 Duo-processor Peter Hesslow EDT621 Cacheminne i en Intel Core 2 Duo-processor Abstrakt Det finns många olika sätt att bygga upp ett datorminne på, och med en flerkärnig processor så blir alternativen ännu fler. Denna

Läs mer

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

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär: Lösningsförslag för 725G45-tentan 3/11-10 1. Vad menas med Von Neumann-arkitektur? (2p) En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär: Data och instruktioner lagras i samma

Läs mer

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

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte CT3760 Mikrodatorteknik Föreläsning 4 Tisdag 2005-09-06 Stacken I datasammmanhang är en stack ett minnesområde. Det är processorn som använder stacken. För att skapa en stack anger man en adress i stackpekarregistret.

Läs mer

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)

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) Datorsystem 2 CPU Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur CPU Visning av Akka (för de som är intresserade) En dators arkitektur På en lägre nivå kan vi ha lite olika

Läs mer

Digitala System: Datorteknik ERIK LARSSON

Digitala System: Datorteknik ERIK LARSSON Digitala System: Datorteknik ERIK LARSSON Huvudled (H) Trafikljus för övergångsställe Trafikljus för huvudled (H) Trafikljus: Sväng vänster (H->T) Gående - vänta Trafikljus för tvärgata (T) Tvärgata (T)

Läs mer

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga Datorarkitektur I Tentamen Lördag 10 April 2010 Ekonomikum, B:154, klockan 09:00 14:00 Examinator: Karl Marklund 0704 73 32 17 karl.marklund@it.uu.se Tillåtna hjälpmedel: Penna Radergummi Linjal Följande

Läs mer

Datorsystemteknik DVGA03 Föreläsning 8

Datorsystemteknik DVGA03 Föreläsning 8 Datorsystemteknik DVGA03 Föreläsning 8 Processorns uppbyggnad Pipelining Större delen av materialet framtaget av :Jan Eric Larsson, Mats Brorsson och Mirec Novak IT-inst LTH Innehåll Repetition av instruktionsformat

Läs mer

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng TENTAMEN I PROGRAMMERING Ansvarig: Jan Skansholm, tel 7721012 Betygsgränser: Hjälpmedel: Sammanlagt maximalt 60 poäng. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Skansholm,

Läs mer

Lösningsförslag till tentamen i IS1500 Datorteknik

Lösningsförslag till tentamen i IS1500 Datorteknik Lösningsförslag till tentamen i IS1500 Datorteknik 2010-12-13 Obs! Dessa lösningsförlag kan vara felakktiga och/eller ofullständ Uppgift 1. Maskinartmetik a) Flyttalet X lagras som 0 1000 0011 000 1001

Läs mer

Datorsystem. Tentamen 2011-10-29

Datorsystem. Tentamen 2011-10-29 Datorsystem Tentamen 2011-10-29 Instruktioner Samtliga svar skall vara motiverade och läsbara. Eventuella tabeller och beräkningar som används för att nå svaret ska också finnas med i lösningen. Ett svar

Läs mer

System S. Datorarkitektur - en inledning. Organisation av datorsystem: olika abstraktionsnivåer. den mest abstrakta synen på systemet

System S. Datorarkitektur - en inledning. Organisation av datorsystem: olika abstraktionsnivåer. den mest abstrakta synen på systemet Datorarkitektur - en inledning Organisation av datorsystem: olika abstraktionsnivåer System S den mest abstrakta synen på systemet A B C Ett högnivåperspektiv på systemet a1 b1 c1 a2 b3 b2 c2 c3 En mera

Läs mer

Programmeringsteknik med C och Matlab

Programmeringsteknik med C och Matlab Programmeringsteknik med C och Matlab Kapitel 6: Filhantering Henrik Björklund Umeå universitet 13 oktober 2009 Björklund (UmU) Programmeringsteknik 13 oktober 2009 1 / 22 Textfiler Filer är sekvenser

Läs mer

Föreläsning 3. Programmering, C och programmeringsmiljö

Föreläsning 3. Programmering, C och programmeringsmiljö Föreläsning 3 Programmering, C och programmeringsmiljö Vad är programmering? Ett väldigt kraftfullt, effektivt och roligt sätt att kommunicera med en dator Att skapa program / applikationer till en dator

Läs mer

Grundläggande datavetenskap, 4p

Grundläggande datavetenskap, 4p Grundläggande datavetenskap, 4p Kapitel 2 Datamanipulation, Processorns arbete Utgående från boken Computer Science av: J. Glenn Brookshear 2004-11-09 IT och Medier 1 Innehåll CPU ALU Kontrollenhet Register

Läs mer

Närliggande allokering Datorteknik

Närliggande allokering Datorteknik Närliggande allokering Datorteknik ERIK LARSSON TID Problem: Minnet blir fragmenterat Paging Demand paging Sida (S) Dela upp primärminnet i ramar (frames) och program i sidor (pages) Program 0 RD.0 1 RD.1

Läs mer

Övning 6. Parallellport, timer

Övning 6. Parallellport, timer Övning 6 Parallellport, timer 6.1 de2_pio_toggles18 Memory-Mapped addresses LEDG8 LEDR17 LEDR16 LEDR15 LEDR14 LEDR13 LEDR12 LEDR11 LEDR10 LEDR9 LEDR8 LEDR7 LEDR6 LEDR5 LEDR4 LEDR3 LEDR2 LEDR1 LEDR0 LEDG7

Läs mer

Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar

Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar Gabriel Gerhardsson Cacheprobe p.1/38 Abstract Kan analytiskt ta reda på associativitet, line storlek och storlek på processorns cacheminnen

Läs mer

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

c a OP b Digitalteknik och Datorarkitektur 5hp ALU Design Principle 1 - Simplicity favors regularity add $15, $8, $11 A basic -bit Select between various operations: OR, AND, XOR, and addition Full Adder Multiplexer Digitalteknik och Datorarkitektur hp Föreläsning : introduktion till MIPS-assembler - april 8 karlmarklund@ituuse

Läs mer

Mer datorarkitektur. En titt I datorn Minnen

Mer datorarkitektur. En titt I datorn Minnen Mer datorarkitektur En titt I datorn Minnen von Neumann-modellen von Neumann-modellen CPU (Central Processing Unit) Styrenhet hämtar programinstruktioner ALU (Arithmetic and Logical Unit) utför beräkningar

Läs mer

Digitala System: Datorteknik ERIK LARSSON

Digitala System: Datorteknik ERIK LARSSON Digitala System: Datorteknik ERIK LARSSON Översikt Minnets komponenter Minneshierarkin Cacheminne Paging Virtuellt minne Minnets komponenter Enhet för indata Primärminne (CPU) Enhet för utdata Sekundärminne

Läs mer

Tentamen i IS1500/IS1200/2G1518 Datorteknik fredagen den 19 augusti 2011 kl

Tentamen i IS1500/IS1200/2G1518 Datorteknik fredagen den 19 augusti 2011 kl Tentamen i IS1500/IS1200/2G1518 Datorteknik fredagen den 19 augusti 2011 kl 14.00 19.00 Examinator: Fredrik Lundevall (IS1500), Johan Wennlund (IS1200, 2G1518). Jourhavande lärare: Johan Wennlund. Tentamensuppgifterna

Läs mer

Föreläsning 1: Intro till kursen och programmering

Föreläsning 1: Intro till kursen och programmering Föreläsning 1: Intro till kursen och programmering λ Kursens hemsida http:www.it.uu.se/edu/course/homepage/prog1/mafykht11/ λ Studentportalen http://www.studentportalen.uu.se UNIX-konton (systemansvariga

Läs mer

Hantering av hazards i pipelines

Hantering av hazards i pipelines Datorarkitektur med operativsystem Hantering av hazards i pipelines Lisa Arvidsson IDA2 Inlämningsdatum: 2018-12-05 Abstract En processor som använder pipelining kan exekvera ett flertal instruktioner

Läs mer

NetBeans 7. Avsikt. Projektfönster

NetBeans 7. Avsikt. Projektfönster NetBeans 7 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till

Läs mer

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället

Läs mer

Lab1 Introduktion. 1 Syfte. 2 Innehåll Win32API Skapa trådar Kritiska sektioner Mailslothantering. 3 Förberedelse & Tips

Lab1 Introduktion. 1 Syfte. 2 Innehåll Win32API Skapa trådar Kritiska sektioner Mailslothantering. 3 Förberedelse & Tips Lab1 Introduktion Förberedelse för planetlabben genom att kapsla in (skapa wrappers) systemanrop. 1 Syfte Få en känsla av hur Win32API fungerar, dvs programmerarens interface gentemot Windows. Känsla för

Läs mer

Jämförelse av skrivtekniker till cacheminne

Jämförelse av skrivtekniker till cacheminne Jämförelse av skrivtekniker till cacheminne 1 Innehåll 1. Sammanfattning 2. Inledning 3. Diskussion 4. Referenslista 1. Sammanfattning En rapport innehållande jämförelser av olika skrivtekniker till minnen

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #17 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Tallriksmodellen Stackoperationer Element kan endast

Läs mer

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

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 Datorhistorik Föreläsning 3 Datorhistorik Datorns uppbyggnad, komponenter Processor, primärminne, sekundärminne Minneshierarkier Inbyggda system, stora datorer I think there is a world market for maybe

Läs mer

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt

Läs mer

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

Datorteknik. Föreläsning 6. Processorns uppbyggnad, pipelining. Institutionen för elektro- och informationsteknologi, LTH. Mål Datorteknik Föreläsning 6 Processorns uppbyggnad, pipelining Mål Att du ska känna till hur processorn byggs upp Att du ska kunna de viktigaste byggstenarna i processorn Att du ska känna till begreppet

Läs mer

Skärmbilden i Netscape Navigator

Skärmbilden i Netscape Navigator Extratexter till kapitel Internet Skärmbilden i Netscape Navigator Netscape är uppbyggt på liknande sätt som i de flesta program. Under menyraden, tillsammans med verktygsfältet finns ett adressfält. I

Läs mer

Lathund Blanketthotell Komma igång

Lathund Blanketthotell Komma igång Lathund Blanketthotell Komma igång Introduktion Denna lathund innehåller lite samlade råd och tips för de som ska använda tjänster från NT Smartwork. (För de som redan börjat använda Blanketthotellet finns

Läs mer

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

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp Tentamen i Digitala system EITA5 5hp varav denna tentamen 4,5hp Institutionen för elektro och informationsteknik Campus Helsingborg, LTH 289 8. 3. (förlängd 4.) Uppgifterna i tentamen ger totalt 6 poäng.

Läs mer

Föreläsning 1: Intro till kursen och programmering

Föreläsning 1: Intro till kursen och programmering Föreläsning 1: Intro till kursen och programmering Kursens hemsida http:www.it.uu.se/edu/course/homepage/prog1/vt11 Studentportalen http://www.studentportalen.uu.se Lärare: Tom Smedsaas, Tom.Smedsaas@it.uu.se

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #23 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Översikt När flera minnesmoduler placeras i processorns

Läs mer

LEU240 Mikrodatorsystem

LEU240 Mikrodatorsystem Institutionen för data- och informationsteknik 2011-10-11 LEU240 Mikrodatorsystem Vi har tidigare i olika sammanhang sett att det är önskvärt att kunna använda ett högnivåspråk som C för att skriva program

Läs mer

Instruktioner för att kunna programmera på skolans datorer

Instruktioner för att kunna programmera på skolans datorer Instruktioner för att kunna programmera på skolans datorer De här instruktionerna är viktiga att känna väl till inför tentamen samt inför laborationsredovisningar. Många av er kommer att använda bärbara

Läs mer

Kursupplägg. Examination. Föreläsning 1: Intro till kursen och. Kursmaterial. programmering. Kursboken: Programmera med a multimedia approach

Kursupplägg. Examination. Föreläsning 1: Intro till kursen och. Kursmaterial. programmering. Kursboken: Programmera med a multimedia approach Föreläsning 1: Intro till kursen och Kursens hemsida http://www.it.uu.se/edu/course/homepage/prog1/esvt10 Studentportalen http://www.studentportalen.uu.se Kursmaterial Kursbok Kursprogramvara Tips: Installera

Läs mer

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

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp Institutionen för elektro- och informationsteknik Campus Helsingborg, LTH 2018-01-09 8.00-13.00 (förlängd 14.00) Uppgifterna i tentamen

Läs mer

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas. Eclipse Avsikt Att bekanta dig med Eclipse programmeringsmiljö, dvs att med hjälp av Eclipse 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till byte-kod

Läs mer

Laboration i datateknik

Laboration i datateknik KUNGLIGA TEKNISKA HÖGSKOLAN Laboration i datateknik Felsökning och programmering av LEGO NXT robot Daniel Willén 2012 09 06 dwill@kth.se Introduktionskurs i datateknik II1310 Sammanfattning Syftet med

Läs mer

LMSim, cacheminnessimulator för utbildningssyfte

LMSim, cacheminnessimulator för utbildningssyfte LMSim, cacheminnessimulator för utbildningssyfte LMSim - a Cache Memory Simulator for Education MAGNUS KOCH, LEONID SIBIRZEFF Examensarbete inom Elektronik och datorsystem Grundnivå, 15 hp Stockholm, Sweden

Läs mer

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf Föreläsning1 Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf scanf Ni behöver läsa boken både för att

Läs mer

Lösningar till tentamen i EIT070 Datorteknik

Lösningar till tentamen i EIT070 Datorteknik Lösningar till tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Onsdagen den 7 mars 2012, klockan 14:00 19:00 i Vic 2, 3. Tillåtna hjälpmedel: på tentan utdelad formelsamling,

Läs mer

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012 KTH STH TENTAMEN HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012 Gamla kurskoder: HI1900, 6E2950, etc. Examinator: Johnny Panrike Rättande lärare: Nicklas Brandefelt, Johnny Panrike och

Läs mer

Vilken version av Dreamweaver använder du?

Vilken version av Dreamweaver använder du? Sida 1 av 7 Lektion 1: sida 1 av 4 Till kursens framsida Sida 2 av 4» Lektion 1 Då ska vi sätta igång med den här kursens första lektion! Här kommer du att få lära dig hur man skapar och förbereder webbplatser

Läs mer

Studera databladen för LCD på sid 4, 5, 7, 8, 14, 18, 19, 20 och 23. Datablad finns på kurshemsidan.

Studera databladen för LCD på sid 4, 5, 7, 8, 14, 18, 19, 20 och 23. Datablad finns på kurshemsidan. Namn: Laborationen godkänd: Digitala system 15 p Datorprojekt, del 2 L T H I n g e n j ö r s h ö g s k o l a n v i d C a m p u s H e l s i n g b o r g Projektlaboration 2, skrivning till LCD. Förberedelser:

Läs mer

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.

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. F5 Föreläsning i Mikrodatorteknink 2006-09-05 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. Programräknaren

Läs mer

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data. 1 3 4 Antag a' processorn ska exekvera instruk3onen ADD R1, R3. När instruk3onen är exekverad så a' processorn tagit innehållet i R1 och R3 och med hjälp av ALU:n är värdena adderade och resultatet är

Läs mer

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data. 1 2 3 Antag a' processorn ska exekvera instruk3onen ADD R1, R3. När instruk3onen är exekverad så a' processorn tagit innehållet i R1 och R3 och med hjälp av ALU:n är värdena adderade och resultatet är

Läs mer

Snapdragon 810: Cacheminnet

Snapdragon 810: Cacheminnet Snapdragon 810: Cacheminnet Daniel Eckerström dat14dec@student.lu.se Sammanfattnig Snapdragon 810 innehåller två olika processor arkitekturer, ARM Cortex-A53 samt Cortex-A57. Detta för att kunna på ett

Läs mer

NetBeans 5.5. Avsikt. Projektfönster

NetBeans 5.5. Avsikt. Projektfönster NetBeans 5.5 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till

Läs mer

Viktigt angående version av Win 7 och Win 8 OS

Viktigt angående version av Win 7 och Win 8 OS kä11mans imatri www.imatri.se/100faglar/ 100 Fåglar i Sverige - en CD-ROM från historisk tid Installation på Win XP/Win7/Win8 Det går utmärkt att köra skivan från 1995 på datorer med sentida operativsystem

Läs mer

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe Kodningskonventioner Viktor Kämpe Varför kodningskonventioner? Förståelse för Skillnaden mellan lokala/globala variabler. Funktionsargument. Returvärde. Möjliggör Mix av assembler och C. Kodningskonventioner/VK

Läs mer