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

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

Datorarkitekturer med operativsystem

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

CPU. Carry/Borrow IX. Programräknare

SKAPA DET FÖRSTA PROJEKTET I mikrobasic PRO for AVR

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

Programmering i maskinspråk (Maskinassemblering)

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

Programmering i maskinspråk (Maskinassemblering)

NetBeans 5.5. Avsikt. Projektfönster

AVR Studio 4 Och AVRFLASH

Datorsystem Laboration 2: Minnesmappade bussar

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

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

*Pekarvärden *Pekarvariabler & *

Hemlaboration Cache Cacheminnen

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Labora&on 1 Introduk&on &ll utvecklingsmiljön övningar/uppgi<er

Komponenter med COM (och COM+/VC++ 7.0)

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

I denna laboration undersöker vi hur aritmetiska beräkningar utförs. Vi tittar på olika variabeltyper: 8-bitars, 16-bitars, 32-bitars och flyttal.

Det finns en handledning till kortet på hemsidan. AVR STK500.

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

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: 8-13, den 18 februari 2012

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

Marcus Wilhelmsson 12 april 2013

NetBeans 7. Avsikt. Projektfönster

Travel Phrase Guide. Instruktionshäfte

Workshop IBA internet based assessment

Instruktion för laboration 1

Introduktion till syntesverktyget Altera Max+PlusII

PC-teknik, 5 p LABORATION FILHANTERING

Enchipsdatorer med tillämpningar LABORATION 7, ROBOT

Processidentifiering och Polplacerad Reglering

OBS!! Detta är DEL 2 av tentan. För att få ut denna måste du ha lämnat in del 1. Om du inte fått ut del 1 bör du meddela skrivningsvakten. OBS!!

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

Lösningar till tentamen i EIT070 Datorteknik

Introduktion till programmering och Python Grundkurs i programmering med Python

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

Instruktion för laboration 1

Exempelsamling Assemblerprogrammering

Index. Vektorer och Elementvisa operationer. Summor och Medelvärden. Grafik i två eller tre dimensioner. Ytor. 20 januari 2016 Sida 1 / 26

LABORATION DATORKONSTRUKTION TSEA83 UART. Namn och personnummer. Version: (OS)

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Ladda upp filer fra n PLC till PC

AVR 5. Styrning av trafikljus. Digitala system 15 p

Labora&on 1 Introduk&on &ll utvecklingsmiljön övningar/uppgi<er

Repetition C-programmering

Nemo96 HD och Nemo96 HD+ firmware uppdatering

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

CE_O5. Cacheminne. Hemlaboration 2.

Minnet från processorns sida Datorteknik

Att börja med EndNote och inställningar som bör göras innan man lägger in referenser (170301)

Extramaterial till Matematik Y

Introduktion C-programmering

Lösningar till tentamen i EIT070 Datorteknik

Datorteknik 2 (AVR 2)

Tidtagning med Eresults Lite programmet

På servern För att registrera och köra en Topocad 17 nätverkslicens krävs att man installerar den senaste Licensservern

OBS!!! Anslut ej USB kabeln till dator eller GPS innan du först har installerat drivrutinerna för USB kabeln i din dator.

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

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

Översättningsminnen laboration

Flödesschema som visar hur man använder Quartus II.

HI1024 Programmering, grundkurs TEN

surell consulting ab

Laboration 10 - Eclipse

LEU240 Mikrodatorsystem

Manuell installation av SQL Server 2008 R2 Express för SSF Timing

Home Nerladdning typsnitt Ladda Ladda fonter Menyn Skrivare Menyn teckensnitt Menyn Verktygsfält Menyn Hjälp Snabbtangenter

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

Så här skriver du ditt första program i C++

Lunds Universitet LTH Ingenjörshögskolan IDa1, IEa1 Helsingborg. Laboration nr 4 i digitala system ht-15. Ett sekvensnät. grupp. namn.

Installationsanvisningar. till IST Analys

DD1311 Programmeringsteknik för S1 Laborationer läsåret

Hemlaboration Cache Cacheminnen

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

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

En kort text om programmering i C.

Digitalteknik och Datorarkitektur

Allmänt. Välkommen till SVENSKA VÅGs datorprogram för räknevägning på PC.

Labora&on 2 HTML och validering övningar/uppgi:er

CE_O3. Nios II. Inför lab nios2time

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

FactoryCast HMI. Premium & Quantum PLC. MySQL Server och FactoryCast HMI databastjänst

Programmeringsteknik med C och Matlab

Bruksanvisning. Swema AB Tel: För support och nedladdning av aktuell programvara kontakta:

Lathund för överföring av rapporter och ljudfiler

Datorlaboration 4. Pedigree-analys

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

Blackboard learning system CE

Lycka till! TENTAMEN: Objektorienterade applikationer. Läs detta! 1 (6) Tentamen

Introduktion till användning av PicoLog TC-08

Manuell installation av SQL Server 2008 R2 Express SP2 fo r SSF Timing

Styrsystem. Quantum, M340 o Momentum. Kom-igång med konvertera Concept till Unity Rev

HI1024 Programmering, grundkurs TEN

Programmets startmeny ser ut så här. För att få fram menyerna Avsluta, Inställningar och Användare måste du föra markören upp till det blåa fältet.

Transkript:

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 används. Ef- ter laborationen kommer du att förstå hur datorns cacheminne fungerar och vilka parametrar som påverkar cacheminnen. Förberedelser Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok Redovisning Demonstrera dina lösningar för laborationsassistenten och lämna in labo- rationsrapport med källkod. OBS, använd försättsbladet (se kurshemsidan). Godkänt Laborationen är godkänd när följande moment är avklarade: de elektroniska frågorna är besvarade labborationen är demonstrerad labborationsrapporten godkänd Erik Larsson

Laborationsmiljö För denna laboration behövs: MipsIt.exe (för programutvecklingen) och Mips.exe (för simuleringen) Ladda ner MIPSIt (finns på hemsidan). Packa upp filen. Starta Mipsit.exe i mappen \bin. Ignorera popup- fönstret med texten: "Failed to open COM- port...". Tänk på följande: Spara filer i hemmakatalog. Skapa en ny projektfil för varje nytt program. Spara det gamla projektet innan du skapar ett nytt. Undvik mellanrum och konstiga tecken i mappar och filnamn. Komma igång Starta MipsIt (i mappen \bin) Skapa under File New ett nytt assemblerprojekt. Skapa en ny mapp skapas med samma namn. Skapa en ny assemblerfil. Studera nedanstående program som utför additionen 2 + 3 = 5. Först laddas värdet 2 i register $8, sedan laddas talet 3 i register $9 och slutligen adderas innehållen i dessa båda register och resultatet läggs i register $10. Den första raden i programlistningen är en kommentarrad. Den inleds alltid med tecknet #. De fyra efterföljande raderna består av direktiv som bestämmer hur programmet ska översättas av assemblern. Namnet start utgör en symbol för en adress; det är an- vändbart ifall man vill referera till denna adress utan att känna till dess verkliga värde. De tre följande raderna är programmets verkliga instruktioner. # Laboration 1, Hemuppgift 1.set noreorder # Ändra inte instruktionernas ordning.text # Instruktioner skapas.globl start # start är en global symbol.ent start # Programmet börjar vid start # Dina kommentarer: start: li $8, 0x2 #... li $9, 0x3 #... add $10, $8, $9 #....end start # Markerar slutet på programkoden 2

Skriv in programmet ovan. Översätt programmet till maskinkod med kommandot Build (snabbtangenten F7). Rätta eventuella fel. Starta MIPS.exe Ladda upp programmet till simulatorn (snabbtangenten F5). Instruktionerna kommer att läggas i simulatorns RAM från adress 0x80020000. Klicka upp Mips- simulatorn och klicka på rutan RAM. Provkör. Laborationsuppgifter Uppgift 1 Studera cache- inställningar. Programmet nedan består av två subrutiner för att beräkna summan av elementen i en matris. Enda skillnaden mellan de två rutinerna är i vilken ordning elementen beräknas. Det kan tyckas oviktigt, men med ett cache- minne spelar det roll. Matrisaddition genomförs så här: Z=X+Y där Z, X, och Y är matriser av någon storlek, till exempel 5*10. Det innebär att matriserna Z, X, och Y består av 5 rader och 10 kolumner. Ett element zij i matrisen Z är på rad i och kolumn j och zij beräknas som xij + yij. Till exempel, för två små matriser (A och B) med 3 rader och 2 kolumner, beräknas summan (A+B) ut så här: (Exemplet är från Wikipedia: http://sv.wikipedia.org/wiki/matrisaddition) Skriv in, kompilera och simulera programmet nedan. Obs, använd grundin- ställningar (default settings). Kör ett antal simuleringar med olika inställ- ningar. Fyll i tabellen nedan. 3

#include <stdio.h> #include <idt_entrypt.h> #define N 10 int A[N][N]; int (int Matrix[N][N]) int i, j, Sum = 0, Time; for (j = 0; j < N; j ++) for (i = 0; i < N; i ++) Sum += Matrix[i][j]; printf(" tid: %d\n", Time); int (int Matrix[N][N]) int i, j, Sum = 0, Time; for (i = 0; i < N; i ++) for (j = 0; j < N; j ++) Sum += Matrix[i][j]; printf(" tid: %d\n", Time); main () int a, b; printf ("Cache laboration. Del 1\n"); a = (A); b = (A); printf ("Summan är %d och %d\n", a, b); 4

I-cache D-cache Memory cache size = 16 Grundinställning block size = 2 cache size = 16 block size = 2 read cycles = 50, write cycles = 50 writepolicy = WriteThrough blocks in sets = 1 blocks in sets = 1 write buffersize = 0 replacementpolicy = Random Settings Allt på grundinställningar I-cache och D-cache cache size =32 I-cache and D-cache blocksize =8 I-cache and D-cache Number of blocks in sets =2 Övrigt: grundinställnin D-cache writepolicy=writeback D-cache replacementpolicy=fifo I-cache Hit rate D-cache Hit rate Simuleringstid 5

Uppgift 2 Studera hur programvaran kan påverka cacheminne. Skriv in programmet nedan. Kompilera med Optimization high. #include <stdio.h> #include <idt_entrypt.h> #define N 10 int A[N][N]; int initmatrix (int Matrix[N][N]) int i, j; for (i = 0; i < N; i ++) for (j = 0; j < N; j ++) Matrix[i][j] = i*n+j; return 0; int SumOfProdByRowCol (int Matrix[N][N]) int i, j, k, r, Sum = 0, Time; for (i = 0; i < N; i ++) for (j = 0; j < N; j ++) r = 0; for (k = 0; k < N; k = k + 1) r = r + Matrix[i][k]*Matrix[k][j]; Sum += r; printf("sumofprod tid: %d\n", Time); int main () int a; initmatrix(a); printf ("Cachelaboration. Del 2\n"); a = SumOfProdByRowCol(A); printf ("Summan av produkterna är %d\n", a); 6

Introducera en blockeringsfaktor (blocking factor) och ändra programmet enligt lokaliseringsoperationerna. Ett exempel på kod är: #define B 4 #define min(x,y) (X>Y?Y:X) int SumOfProdByRowCol_Blockfactor (int Matrix[N][N]) int i, j, k, r, Sum = 0, Time; int jj, kk; for (jj = 0; jj < N; jj = jj + B) for (kk = 0; kk < N; kk = kk + B) for (i = 0; i < N; i ++) for (j = jj; j < min(jj+b, N); j ++) r = 0; for (k = kk; k < min(kk+b, N); k = k + 1) r = r + Matrix[i][k]*Matrix[k][j]; Sum += r; printf("sumofprod tid: %d\n", Time); Simulera programmen och fyll i tabellen.. Inställningar I-cache: Disable penalty Utan blockeringsfaktor D-cache: block size= 4 Övriga: Grundinställningar Med blockeringsfaktor I-cache D-cache Hit rate Hit rate Simuleringstid 7