TKT-3200 Tietokonetekniikka I. Harjoitustyö 4: Cache - simulaattorin ohje

Samankaltaiset tiedostot
TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

Luento 5. Timo Savola. 28. huhtikuuta 2006

TTY TKT-1110 Mikroprosessorit TKT. HEW-ohjeet ver 1.0

Tilastokeskuksen rajapintapalveluiden käyttöönotto ArcGISohjelmistossa

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 2: DLX I - arkkitehtuuri

Hieman linkkejä: lyhyt ohje komentoriviohjelmointiin.

Kappale 20: Kantaluvut

Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto

2 Konekieli, aliohjelmat, keskeytykset

TKT-3200 Tietokonetekniikka I. Harjoitustyö 4: Cache - työohje. Syksy 2010

KUVAN TUOMINEN, MUOKKAAMINEN, KOON MUUTTAMINEN JA TALLENTAMINEN PAINTISSA

Derivaatta graafisesti, h- ja keskeisdifferenssimuodot GeoGebralla Valokuva-albumi

FUNKTION KUVAAJAN PIIRTÄMINEN

1. HARJOITUS harjoitus3_korjaus.doc

6.1 Tekstialueiden valinta eli maalaaminen (tulee tehdä ennen jokaista muokkausta ym.)

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

1 Asentaminen. 2 Yleistä ja simuloinnin aloitus 12/

Hellä ensikosketus. Tomi Kiviniemi

Tietokoneen toiminta, K Tavoitteet (4)

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100


Välimuistin suorituskyvyn mittaus

Fixcom Webmail ohje. Allekirjoitus. Voit lisätä yhden tai useamman allekirjoituksen.

Luento 3. Timo Savola. 7. huhtikuuta 2006

Mainoksen taittaminen Wordilla

Visma Fivaldi -käsikirja Asiakaskohtaiset hinnat

Uutiskirjesovelluksen käyttöohje

Word 2003:n käyttötoimintojen muutokset Word 2010:ssä

Jypelin käyttöohjeet» Ruutukentän luominen

KÄYTTÖOHJE LÄMPÖTILA-ANEMOMETRI DT-619

MOODLE-KURSSIN LAATIMINEN /OPETTAJAN OHJEET

FUNKTION KUVAAJAN PIIRTÄMINEN

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

TAMPEREEN TEKNILLINEN YLIOPISTO

TAMPEREEN TEKNILLINEN YLIOPISTO KÄYTTÖOHJE TIETOVARASTON KUUTIOT

GEOS 1. Ilmastodiagrammi Libre Office Calc ohjelmalla

Tasohyppelypeli. Piirrä grafiikat. Toteuta pelihahmon putoaminen ja alustalle jääminen:

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

1 (14) Ohje. Ohje. GTK-wiki. Geologian tutkimuskeskus, Verkkosivustopalvelut

Sähköpostitilin määrittäminen Outlook 2013, kun ohjelma käynnistetään ensimmäistä kertaa.

Vapo: Turveauman laskenta 1. Asennusohje

Aloita uusi kartoitus -painikkeesta käynnistyy uuden kartoituksen tekeminen

CISS Base Excel raporttien määritys Käyttäjän käsikirja. CISS Base Käyttäjän Käsikirja Econocap Engineering Oy 1

Mitä Uutta - SURFCAM V5.1 Sisällysluettelo

Luento 4. Timo Savola. 21. huhtikuuta 2006

52480S TIETOKEARKKITEHTUURIT Tentti

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

UpdateIT 2010: Editorin käyttöohje

Ohjeet Libre Officen käyttöön

Nuorten hyvinvointi tilastotietokannan käyttöohjeet Tieke

Ohjeissa pyydetään toisinaan katsomaan koodia esimerkkiprojekteista (esim. Liikkuva_Tausta1). Saat esimerkkiprojektit opettajalta.

Ohjeita Siemens Step7, Omron CX Programmer käyttöön

Skype for Business ohjelman asennus- ja käyttöohje Sisällys

Artikkelin lisääminen

TAMPEREEN TEKNILLINEN YLIOPISTO

TAULUKKO, KAAVIO, SMARTART-KUVIOT

FUNKTION KUVAAJAN PIIRTÄMINEN

SiMAP - lämmityksen ohjauskeskus. Contents

VIENET JULKAISUJÄRJESTELMÄLLÄ TOTEUTETTUJEN INTERNET-SIVUJEN YLLÄPITO-OHJE

PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER

Asiakastukiryhmä Kesä- ja talviaika

EDMODO. -oppimisympäristö opettajille ja oppilaille KOONNUT: MIKA KURVINEN KANNUKSEN LUKIO

Sähköpostitilin määrittäminen Outlook 2016, kun ohjelma käynnistetään ensimmäistä kertaa.

UpdateIT 2010: Uutisten päivitys

Condes. Quick Start opas. Suunnistuksen ratamestariohjelmisto. Versio 7. Quick Start - opas Condes 7. olfellows 1.

Helsingin yliopisto Kehittämisosasto Opiskelijarekisteri. Oodi 2.81 Käyttöohje Opintosuoritusten rekisteröinti OPINTOSUORITUSTEN REKISTERÖINTI

CLOUDBACKUP TSM varmistusohjelmiston asennus

OPISKELIJAN OPINNOT -NÄYTTÖ. Opiskelijan opintosuoritustietoja katsellaan Opiskelijan opinnot -näytöltä. Näyttö löytyy päävalikosta Opinnot.

Sähköpostitilin määrittäminen Outlook 2010, kun ohjelma käynnistetään ensimmäistä kertaa.

Kuvien lisääminen ja käsittely

(Tätä ohjetta saa käyttää yliopiston opetustarkoituksiin ja jatkokehittelyyn.)

Valitse aineisto otsikoineen maalaamalla se hiirella ja kopioimalla (Esim. ctrl-c). Vaihtoehtoisesti, Lataa CSV-tiedosto

OPINTOSUORITUSTEN REKISTERÖINTI

Internet Explorer 7 & 8 pop-up asetukset

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

MixW ja Dx-vihjeet (ohje) oh3htu

Osa 7: Hahmojen ohjelmointi ja hienosäätö


WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8)

2020 Fusion. What s New in Version 6? What s New in Version 6? 1 of Fusion

a. Tavallisesti

PlanMan Project projektihallintaohjelmisto koulutusohjeistus

GeoGebra-harjoituksia malu-opettajille

Harjoitustyö 3: DLX kontrolli

Komentotulkki. Kysymyksiä

10. ASIAKASHALLINTA CRM; Osoitetarrat, ryhmäsähköposti ja export

Toinen harjoitustyö. ASCII-grafiikkaa 2017

Laskuharjoitus 9, tehtävä 6

Excel Perusteet Päivi Vartiainen 1

FrontPage Näkymät

HYVÄKSILUKEMISEN TEKEMINEN ILMAN ENNAKKOPÄÄTÖSTÄ

RACE-KEEPER COMPARO PC-OHJELMAN PIKAOHJE

Routa Markkinointi. Ohjeet päivitystyökalun käyttöön

Kuva liikennemerkistä 1. Aleksanteri Numminen. ITKP101

KESKUSTANUORTEN NETTISIVUT- OHJEITA PIIRIYLLÄPITÄJÄLLE 1. KIRJAUTUMINEN

1/10 E-RESULTS LITE-OHJEET ITÄRASTEILLE (JL )

Transkriptio:

TKT-3200 Tietokonetekniikka I 1. Harjoitustyön tarkoitus Harjoitustyö 4: Cache - simulaattorin ohje Välimuistilla (cache) on suuri merkitys nykyaikaisessa muistihierarkiassa. Tämän harjoitustyön tarkoitus on auttaa ymmärtämään millainen suorituskyvyn parannus saadaan aikaan välimuistilla. Välimuistilla on suuri merkitys nykyaikaisessa muistihierarkiassa. Harjoitustyössä käytetty cache-simulaattori on myös tehty Ruotsissa Lundin yliopistossa ja on paikoitellen oikea käyttöliittymäsuunnittelun helmi, mutta pääasiassa ihan fiksu. Jos simulaattori jossain vaiheessa menee nurin, saattaa x- ikkunointi ottaa itseensä, eikä ohjelma toimi uudelleen käynnistäessä kunnolla. Helpointa on logata pihalle ja varmistaa ettei mitään ylimääräisiä prosesseja (xgraph yms.) jää roikkumaan (esim. ps -u <tunnari>). Tässä dokumentissa heksadesimaalilukuja merkitään etuliitteellä 0x, esim. 0xA50. 1.1. Asennus ja käynnistys Varmista että sinulla on quotaa jäljellä ainakin noin 1 MB. Kopioi ohjelmahakemisto itsellesi komennolla: korppi 52% cp -r /share/www/vhosts/www.tkt.cs.tut.fi/kurssit/ 3200/Harkat/Cache/CACHE/. Jolloin kopioit tarvittavat tiedostot itsellesi uuteen hakemistoon nimeltä CACHE. Varmista että sinulla ympäristömuuttujassa path myös nykyinen hakemisto eli piste (.). korppi 52% echo $path Jos ei ole, komentotulkista riippuen voit lisätä sen esim. tyyliin: korppi 53% set path = ($path.) tai korppi 53% export PATH=$PATH:.

Jos haluat, että yo. lisäys hakupolussasi aina, lisää piste shellin alustustiedoston (esim..bashrc tai.cshrc) path-muuttujan asetuskohtaan. Turvallisuussyistä lisäys kannattaa tehdä hakupolussa viimeiseksi. Simulaattorin käynnistäminen (CACHE-hakemistossa) tapahtuu seuraavasti (Huom! Assembly-tiedoston nimi ilman s-päätettä): korppi 54% cache <assembly-tiedosto-ilman-s-päätettä> (Jos käynnistys ei onnistu kuin komennolla./cache example0, et ole asettanut hakupolkua oikein) Käynnistyksen jälkeen ruutuun ilmestyy ohjelman pääikkuna, ks. Kuva 1. Kuva1. Cache-simulaattorin pääikkuna 2. Simulaattorin toiminnot Avatussa ikkunassa näkyvät kolme suurta laatikkoa kuvaavat CPU:ta, välimuistia (cache) ja päämuistia. CPU:un ja välimuistin sekä välimuistin ja päämuistin välissä on kolme kenttää, jotka simulaation aikana ilmoittavat muistioperaation osoitteen, väylällä

liikkuvan datan ja operaation tyypin. Osoite ja data ovat heksadesimaalimuodossa. Osoite näytetään myös CPU:ta ja välimuistia yhdistävän viivan yläpuolella kolmeen osaan jaettuna: tag, set sekä word. Kirjassa vastaavat termit ovat hämäävästi tag, index sekä block offset. (Yleisen sekaannuksen lisäämiseksi usein käytetään vielä termiä line size tarkoittamaan samaa kuin lohkon koko eli block size). CPU on täysverinen DLX-prosessori, jossa on tietenkin liukuhihna käytössä. Kuva2. Cache-simulaation suoritus Osuman (hit) tapahtuessa välimuisti näkyy mustana laatikkona (ks. Kuva 2.), ja jos operaatio kohdistuu päämuistiin (miss), niin päämuisti on väriltään musta. Esimerkiksi yllä olevassa kuvassa on tapahtunut osuma, koska välimuisti on musta. Välimuistista ollaan lukemassa käskyä (Read=lukuoperaatio, L=32-bittinen pitkä sana, I=käskyviittaus) osoitteesta 0x4. Käskyn heksadesimaaliarvo on 0x0001 2080. Jossain tapauksissa sekä välimuisti että päämuisti voivat olla samanaikaisesti mustia. Huomaa, että kaikki muistioperaatiot ovat 32-bittisiä. Muisteille menevät osoitteet ovat sen sijaan tavuosoitteita. Ohjelmalla on kuitenkin hieman kerettiläinen käsitys heksadesimaalien esittämisestä, koska ohjelma jättää lukujen alussa olevat nollat näyttämättä. Tällöin heksadesimaaliluvusta ei välttämättä voi päätellä montako bittiä

vastaavassa kohdassa oikeasti on. (Ohjelma näyttää arvon 0x08 siis muodossa 8 ja arvon 0xF8 muodossa F8. Molemmissa tapauksissa arvo vaatii 8 bittiä.) 2.1. Ohjelman suoritus Ohjelma voidaan suorittaa kolmella eri tavalla. Ohjelma voidaan suorittaa täydellä nopeudella komenolla Go tai siihen saakka, kunnes seuraava muistiviittaus tapahtuu komennolla Step. Kolmas tapa suorittaa ohjelma tapahtuu määrittelemällä suoritettavien askelien määrä (No of steps) ja antamalla komento Go tai Visual. Komennolla Visual ohjelma suoritetaan puolella nopeudella, eli simulaattorin ikkunaan tulostetaan samat tiedot ohjelman suorituksen aikana, kuten vastavaasti komento Step tulostaisi. Ohjelman suoritus voidaan pysäyttää sijoittamalla keskeytyskohtia haluttuihin muistiosoitteisiin. Osoita hiirellä CPU:ta ja pidä vasen nappula pohjassa. Valitse aukeavasta alasvetovalikosta komento Break On Address ja syötä osoite heksadesimaalimuodossa. Ohjelman suoritus pysähtyy seuraavan osoitteen kohdalle. 2.2. CPU:n, välimuistin ja päämuistin parametrien muuttaminen Osoittamalla hiirellä joko CPU:ta, välimuistia tai päämuistia ja pitämällä hiiren vasenta/oikeaa nappulaa pohjassa saat esille kolme erilaista alasvetovalikkoa. CPU-valikko: Reset - Resetoi CPU:n. Change - CPU:n kellojakson pituuden muuttaminen. Break On Address - Keskeytyskohtien asettaminen. Quit - Simulaattorista poistuminen. Välimuistivalikko: Change - Välimuistin asetuksien muuttaminen. Contents - Välimuistin sisällön tutkiminen. Komennolla Change aukeaa seuraava ikkuna (Kuva 3.), josta välimuistin rakennetta voidaan muuttaa.

Kuva3. Välimuistin asetusikkuna Komennolla Contents voidaan tutkia välimuistin sisältöä ajonaikana. Alla olevassa on kuvassa esimerkki välimuistin sisällöstä yllä olevilla asetuksilla. Jokaista lohkoa kohti on yksi rivi tietoa: statusbitit (V=Valid, D=Dirty ja R=reference LRU:n ja FIFO:n toteuttamista varten), tag ja data (1 sana on 4 tavua). Kaikilla välimuistityypeillä ei ole statusbittejä D ja R. Kuva 3 esittää välimuistin asetusikkunaa ja Kuva 4 vastaavan välimuistin sisältöä. Kuvassa 4 näkyy 4 joukkoa, jossa jokaisessa on 2 lohkoa. Lohkon koko on 2 sanaa. Välimuistin koko on siis 4*2*2=16 sanaa. Päämuistivalikko: Change - Päämuistin asetuksien muuttaminen. Contents - Päämuistin sisällön tutkiminen. Muistin leveys määrittelee montako sanaa saadaan sirrettyä kerralla päämuistin ja välimuistin välillä. Leveys näkyy tulosikkunassa (ks. alla) nimellä interleave factor. Jos leveys on enemmän kuin yksi, simulaatioikkunassa ei näy mitään arvoja muistin ja välimuistin välisellä dataväylällä vaan ainoastaan osoite. Kannattaa huomata, että stepkäsky suorittaa koko muistioperaation kerralla eikä siis yhtä prosessorin kellojaksoa. Toisin sanoen, yksi step voi vie eri pituisen ajan rippuen päämuistin leveydestä (Show results -> Execution time).

Kuva4. Välimuistin sisältö Muistin sisältö päivittyy ajonaikana ja se on listattu heksadesimaalina big-endian - muodossa (ts. sanan eniten merkitsevä tavu on pienimmässä osoitteessa). Muistin 32- bittiset sanat on jaoteltu tavuihin ja yhden 8-bittisen tavun esittäminen vie max. kaksi merkkiä heksadesiaamaalina. Kuten todettua, alussa olevat nollat jätetään näyttämättä (the väärä tapa). Yhdellä rivillä näkyy yksi lohko tavuittain. Lohkon koko asetetaan välimuistin asetuksista. Vasemmassa ylänurkassa on muistin osoite 0x0 ja siitä oikealle ensimmäisellä rivillä ovat osoitteet 0x1, 0x2, 0x3 jne. Rivin alussa kerrotaan rivin ensimmäisen (vasemmanpuoleisimman) alkion osoite. Jos blockin koko on yksi, näkyy rivillä yksi 32-bittinen muistipaikka. 2.3. Simulointitulosten tarkastelu Osoittamalla simulaattorin ikkunaa ja painamalla hiiren keskimmäistä nappulaa, aukeaa Showmenu. Showmenun komennoilla voidaan simulaation tuloksia tarkastella vaihtelevalla menestyksellä.

Showmenu: Show Result - Tulokset (ja käytetyt asetukset) numeromuodossa (ks. Kuva 5) Show Hitgraph, All - Kaikkien viittausten osumat välimuistiin (ks. Kuva 6). Show Hitgraph, Data - Dataviittausten osumat välimuistiin. Show Hitgraph, Instr - Käskyosumat välimuistiin. ÄLÄ KÄYTÄ! Saattaa kaataa ohjelman! Show Localitygraph, All. - Kaikki ohjelman suorittamat muistiviittaukset (ks. Kuva 6). Show Localitygraph, Data. - Ohjelman dataviittaukset Show Localitygraph, Instr - Ohjelman käskyviittaukset Tulosvalikko Show Result päivittyy joka käskyn jälkeen, mutta valitettavasti kuvaajat eivät päivity reaaliaikaisesti. Jos esimerkiki otat kuvaajan esiin ohjelman puolivälissä ja suoritat ohjelmaa käsky kerrallaan, pysyy kuvaaja ennallaan. Avaamalla uuden kuvaajan saat päivtetyn tilanteen näkyviin. Kuvaajia voi zoomata painamalla hiiren vasenta/oikeaa nappia ja rajaamalla haluamasi alueen. Kuvaajia ei saa näkyviin ennen kuin ohjelmaa on suoritettu muutaman käskyn verran. Vaaka-akselilla on muistiviittauksen järjestysnumero eli aika kasvaa oikealle. Hitgrapheissa pystyakselilla on osumaprosentti (hit ratio). Localitygraph-kuvaajassa pallukka ilmaisee (4-tavuisen) muistipaikan tavuosoitteen 10-kantaisena. Localitygraph ei jostain syystä tunnu näyttävän viittausta osoitteeseen nolla ohjelman alussa (ko. viittauksen järjestynumero on 0), mikä on varsin hämäävää. Aina ei voi voittaa, mutta aina voi hävitä.

Kuva5. Tekstimuotoiset tulokset Kuva6.Graafimuotoiset tulokset

3. Ohjelmalistaukset Käytetyt testiohjelmat on listattu tässä. 3.1. example0.p program FIBONACCI; var x0,x1,x2.temp,i : integer x0 := 1; x1 := 1; for i := 1 to 10 do temp := x0 + x1; x0 := x1; X1 := temp; X2 := temp; end; end. 3.2. Koodista example0.p käännetty DLX assembly-koodi: 0000 addi r1,r0,#1 ; x0 := 1; 0004 addi r2,r0,#1 ; x1 := 1; 0008 addi r5,r0,#x2 000C addi r3,r0,10 ; i := 10; 0010 L1: add r4,r1,r2 ; temp := x0+x1; 0014 add r1,r0,r2 ; x0 := x1; 0018 add r2,r0,r4 ; x1 := temp 001C sw 0(r5),r4 ; x2 := temp; 0020 subi r3,r3,#1 0024 bnez r3,l1 ; then branch L1 0028 nop 002C trap #0 ; halt execution 0038 x2:

3.3. example1.p program BUBBLESORT; var X,Y : array[1..10] of integer; i,j,temp : integer; for i:= 1 to 10 do X[i] := 11-i; for i := 1 to 9 do for j := 10 downto i+1 do if X[j] < X[j-1] then temp := X[j-1]; X[j-1] := X[j]; X[j] := temp; end; end; (*** for2 (j)***) end; (*** for1 (i)***) for i := 1 to 10 do Y[i] := X[i]; end. 3.4. example2.p program MATRIXADD; var A,B,C : array[1..10] of array[1..10] of integer; i,j : integer; for i := 1 to 10 do for j := 1 to 10 do C[i,j] := A[i,j]+B[i,j]; end.