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



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

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

Käyttöjärjestelmät: Virtuaalimuisti

Välimuistin suorituskyvyn mittaus

String-vertailusta ja Scannerin käytöstä (1/2) String-vertailusta ja Scannerin käytöstä (2/2) Luentoesimerkki 4.1

MAA10 HARJOITUSTEHTÄVIÄ

Ratkaisuehdotukset Kesäyliopisto Kuvassa on esitetty erään ravintolan lounasbuffetin kysyntäfunktio.

c) Määritä paraabelin yhtälö, kun tiedetään, että sen huippu on y-akselilla korkeudella 6 ja sen nollakohdat ovat x-akselin kohdissa x=-2 ja x=2.

Asenna myös mikroskopian lisäpala (MBF ImageJ for Microscopy Collection by Tony Collins)

ABT 2000kg Haarukkavaunun käyttöohje

Kuntosaliharjoittelun kesto tunteina Kokonaishyöty Rajahyöty

Johdatus diskreettiin matematiikkaan Harjoitus 7,

Matematiikan tukikurssi

Luonnollisten lukujen laskutoimitusten määrittely Peanon aksioomien pohjalta

Mihin kotityöpalvelu perustuu asiakkaan kanssa tehtyyn sopimukseen

Tekijät: Hellevi Kupila, Katja Leinonen, Tuomo Talala, Hanna Tuhkanen, Pekka Vaaraniemi

OHJ-1151 Ohjelmointi IIe

TKT-3201 Tietokonearkkitehtuuri 2

TimeEdit henkilökunnan ohje

AMMATTIKORKEAKOULUJEN NUORTEN SUOMENKIELINEN KOULUTUS

Terveisiä tulevaisuuden työelämästä Etätyö ja työaikajoustot valtiolla -seminaari

Laboratoriotyön sisältö. Pareittain tehtävä laboratoriotyö Vaatimukset: Laboratoriotyöskentely Loppuraportti (1 raportti/työ)

PROJEKTIN DOKUMENTOINTI JOUNI HUOTARI, ESA SALMIKANGAS

Väylät. Prosessorin tie ulkomaailmaan Pienissä järjestelmissä vain yksi väylä. Osoite, data ja ohjaussignaalit Prosessori ainoa herra (master)

Marjan makuisia koruja rautalangasta ja helmistä -Portfolio

MS-A Matriisilaskenta Laskuharjoitus 3

Huomaathan, että ohjeessa olevat näytöistä otetut kuvat voivat poiketa sinun koulutuksesi vastaavien sivujen kuvista.

PROJEKTIN OHJAUS JA SEURANTA JOUNI HUOTARI, ESA SALMIKANGAS

Opettajalle ohje opintojakson toteutuksen tekemiselle mallipohjana ja mallipohjan tuominen opintojakson toteutukseen.

Internal Memory, Cache

Hae Opiskelija käyttöohje

EXELON -depotlaastarin KÄYTTÖOHJEET JA LÄÄKITYSPÄIVÄKIRJA

3. Piirrä kaksi tasoa siten, että ne jakavat avaruuden neljään osaan.

Ulkoiset mediakortit Käyttöopas

Asenna myös mikroskopian lisäpala (MBF ImageJ for Microscopy Collection by Tony Collins)

Internal Memory, Cache

Lausuntopyyntö STM 2015

TW- EAV510: WDS- TOIMINTO KAHDEN TW- EAV510 LAITTEEN VÄLILLÄ

Matematiikan tukikurssi

P-Analyzer. PPA-Budjetointi. Käyttöohjeet

Lue ohjeet huolellisesti ennen laitteen käyttöä.

Ohje PhotoPortaalin käytöstä

MATEMATIIKKAKILPAILU

Matematiikan tukikurssi 3.4.

360 asteen kuvan tekeminen

52480S TIETOKEARKKITEHTUURIT Tentti

Aluksi Kahden muuttujan lineaarinen epäyhtälö

Hyvä vesihuoltohanke, suunnittelijan näkökulma

Sonera Hosted Mail -palvelun käyttöohje

monissa laskimissa luvun x käänteisluku saadaan näyttöön painamalla x - näppäintä.

Sonic Boom BD4000. Käyttöohje

Hallituksen esitys työeläkejärjestelmää koskevan lainsäädännön muuttamiseksi ja eräiksi siihen liittyviksi laeiksi HE 16/2015

Kauden vaihtaminen. Tom Hedman Jopox oy;

Zeon PDF Driver Trial

Internal Memory, Cache (välimuisti)

Internal Memory, Cache (välimuisti)

Kenguru 2006 sivu 1 Benjamin 6. ja 7. luokka ratkaisut

Uutta radioaktiivisten aineiden kuljetuksista

Epäyhtälön molemmille puolille voidaan lisätä sama luku: kaikilla reaaliluvuilla a, b ja c on voimassa a < b a + c < b + c ja a b a + c b + c.

Lakisääteinen tapaturmavakuutus Tapaturman sattuessa - vakuutustodistuksen täyttöohje esimiehille

Mobiiliturva Palvelun käyttöönotto

JOENSUUN SEUDUN HANKINTATOIMI KOMISSIOMALLI

Navigointia - perusopetus. Antti Ikonen Rehtori Vpj SURE FIRE

Kysely työturvallisuusasenteista

4A 4h. KIMMOKERROIN E

Työtapaturman ilmoittaminen 2016-> Uusi sähköinen lomake, täyttäminen esimies ja palkkahallinto

1 / 11. Digitaalisen arkkitehtuurin yksikkö Aalto-yliopisto. Pikaopas Maxwelliin. ARK-A2500 DA-alkeet Elina Haapaluoma, Heidi Silvennoinen Syksy 2015

Varhaiskasvatuspalveluiden asiakaskysely 2014

Aloittavilla opiskelijoilla on hyvin erilaiset fysiikan taidot Taitavat turhautuvat herkästi Vähemmän taitavat eivät välttämättä osaa yhdistää

(x 0 ) = lim. Derivoimissääntöjä. Oletetaan, että funktiot f ja g ovat derivoituvia ja c R on vakio. 1. Dc = 0 (vakiofunktion derivaatta) 2.

Installation instructions, accessories. Kattolaatikko. Volvo Car Corporation Gothenburg, Sweden. Ohje nro Versio Osa nro

TG8200NE_QG_(fi-fi).fm Page 1 Friday, September 7, :21 PM. Koukut ( V, 50 Hz)

- Kommentoi koodisi. Koodin kommentointiin kuuluu kuvata metodien toiminta ja pääohjelmassa tapahtuvat tärkeimmät toiminnat. Esim.

Monialaisen oppimiskokonaisuuden arviointikäytännöt. Työkaluja monialaisen oppimiskokonaisuuden toteutumisen seurantaan ja arviointiin - OPS2016

Opintopolku opastaa korkeakouluhakuihin

TOIMINTAOHJEITA CUMU- JA GRADUMITTAUKSIIN

Merkintöjen tekeminen pohjakuvaan Libre Officella v.1.2

Mitä lapsen tulisi varhaiskasvatuksesta saada? Leikki-ikäisen hyvän kasvun eväät MLL Helsinki Marjatta Kalliala

Tietoturva langattomissa verkoissa. Anekdootti

PÄIHDEHAASTATTELU osio 2 - Päihdekartoitus

MUUTOS 14! - Sosiaaliset kriteerit julkisissa hankinnoissa!

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

Windows Live SkyDrive - esittely

KiVa Koulu tilannekartoituskysely 2016 sivu 1/31. KiVa Koulu tilannekartoituskysely 2016 sivu 2/31. KiVa Koulu tilannekartoituskysely 2016 sivu 3/31

Induktio kaavan pituuden suhteen

TILASTOKATSAUS 4:2016

Trust PhotoCam 1300 TRUST PHOTOCAM Pika-asennusohje. Versio 1.0

KÄYTTÖOHJE FLSNIF KÄYTTÖÖNOTTO V2.2 ( ) 1 (5)

L2TP LAN to LAN - yhteys kahden laitteen välille

KELAN INDUKTANSSI VAASAN YLIOPISTO TEKNILLINEN TIEDEKUNTA SÄHKÖTEKNIIKKA. Miika Manninen, n85754 Tero Känsäkangas, m84051

NOUHÄTÄ 2015 Grande Finale. Projektipäällikkö Teemu Jumpponen Palopäällystökurssi AmkN13

Käyttöjärjestelmät. Tietokoneen rakenne. Stallings, Luku 1. KJ-I S2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 1-1

Asteri Kirjanpito Dos ALV% nousu 1 %-yksiköllä Vuosipäivitys

Algoritmit 1. Luento 3 Ti Timo Männikkö

Rohkeasti robotiikkaan Lego Mindstorms EV3:lla Tehtäväkortteja tuntityöskentelyyn

30 + x ,5x = 2,5 + x 0,5x = 12,5 x = ,5a + 27,5b = 1,00 55 = 55. 2,5a + (30 2,5)b (27,5a + 27,5b) =

SAIPPUALIUOKSEN SÄHKÖKEMIA JOHDANTO

Raportointi hankkeen tulosten kuvaajana ja toteutuksen tukena

Seuranta ja raportointi KA2-hankkeessa. CIMO, Helsinki Esityksen sisältö. 1. Hankkeen sisäinen seuranta ja raportointi

Jakso 3: Dynamiikan perusteet Näiden tehtävien viimeinen palautus- tai näyttöpäivä on keskiviikko

Transkriptio:

TKT-3200 Tietokonetekniikka I Harjoitustyö 4: Cache - työohje Syksy 2010 Ryhmän numero Jäsen #1 nimi opiskelijanumero sähköposti Jäsen #2 nimi opiskelijanumero sähköposti Jäsen #3 nimi opiskelijanumero sähköposti Tarkistava assistentti Palautettu Bumerangi Hyväksytty Virheelliset tehtävät 1

Vastaa lyhyesti, mutta muista ilmoittaa vastauksissa mittayksikkö. Jos ilmoitat osoitteita tai muita lukuarvoja 16-kantaisena eli heksadesimaalimuodossa, käytä etuliitettä 0x, esim. 0x100A. Jos jotain asetusta ei ole määritelty, käytä simulaattorin käynnistyksessä tarjoamaa oletusarvoa. Käynnistä tarvittaessa simulaattori uudestaan, jos olet välillä kokeillut erikoisia asetuksia. Pyri käyttämään oikeita termejä itsekeksittyjen sijaan. 1. Esivalmistelut Lue Patterson & Hennessyn kappale 7 Large and Fast: Exploiting Memory Hierarchy sekä simulaattorin käyttöohje. Selaa työohje läpi. Kauanko arvioit työn suoritukseen kuluvan aikaa? 2. Välimuistin rakentamisperiaatteet Opiskelemme paikallisuutta kahden ohjelman avulla. Ensimmäinen ohjelma, example0, laskee Fibonaccin lukuja ja on listattuna työohjeen lopussa. Tutkimme mihin muistiosoitteisiin ohjelma viittaa suorituksensa aikana. Tämä tapahtuu paikallisuuskuvaajan (locality graph) avulla. Vaaka- akselilla on muistiviittauksen järjestysnumero ja pystyakselilla viittauksen tavuosoite. Ohjelman suorituksen aikana CPU:n viittaaman muistialueen koko, so. muistiavaruus, on (yksinkertaistettuna) korkeimman ja matalimman muistiosoitteen erotus. Kannattaa huomata, että vaikka ohjelma viittaa samaan osoitteeseen useampaan kertaan, sen muistiavaruus ei kasva. (Toisaalta ohjelma ei välttämärrä viittaa jokaiseen osoitteeseen pienimmän ja isoimman välillä. Tällöin muistiavaruuden tarkka määritys vaatii että nämä aukot jätetään huomiotta.) Päämuistin on syytä olla ainakin tämän muistiavaruuden kokoinen, kun ei ole levytilaa käytettävissä. 2.1. Fibonacci Käynnistä simulaattori käskyllä cache example0 Ota välimuisti pois käytöstä (Cache type = No cache). Suorita ohjelma komennolla Go ja ota esiin paikallisuuskuvaaja (ainakin Show Localitygraph, All). Käytä 2

ohjelmalistausta apuna. Kuinka suuri on ohjelman muistiavaruus sanoissa mitattuna? Laske pallukoista kuinka moneen sanaan (käskyt + data) viitataan yhden for-silmukan kierroksen aikana? + Mihin osoitteisiin ohjelma kirjoittaa dataa? Kuinka suuri on for-loopin viittaaman muistiavaruuden prosenttiosuus ohjelman muistiavaruudesta? Paljonko on ohjelman suoritusaika (Show result) mikrosekunteina? 2.2. Bubblesort Bubblesort on yksinkertainen järjestelyalgoritmi. Poistu simulaattorista (Quit) ja käynnistä se uudelleen (cache example1). Kytke välimuisti pois käytöstä (Cache type = No cache) ja suorita ohjelma. Ota esille käskyviittausten paikallisuuskuvaaja (Show Localitygraph, Instr.). Tunnista kuvaajasta ohjelman eri vaiheet. Suorituksen päävaiheet: Kuinka suuri on ohjelman käskyjen muistiavaruus sanoissa mitattuna? Kuinka moneen käskysanaan viitataan sisimmässä for2(j)-silmukassa yhden kierroksen aikana? Kuinka suuri on for1(i)-silmukan käskyjen muistiavaruuden prosenttiosuus koko ohjelman käskyjen muistiavaruudesta? 3

Kuinka moneen sanaan viitataan viimeisen for(i)-silmukan suorituksen aikana? Paljonko on ohjelman suoritusaika? Kuinka suuri on viimeisen for-silmukan käskyjen muistiavaruuden osuus ohjelman käskyjen muistiavaruudesta? 3. Välimuistin rakenteet ja algoritmit Otetaan välimuisti käyttöön sekä käskyille että datalle (Cache type= Cache). Lohkon koko 1 Joukkojen määrä 1 3.1. Välimuistin koko Minkä kokoisen välimuistin valitsisit ohjelmalle example0? Entä ohjelmalle example1? Miksi? Aseta välimuistille sopiva koko ja aja molemmat ohjelmat. Mitkä olivat ohjelmien suoritusajat välimuistin kanssa? 4

3.2. Välimuistin rakenne Kirjassa ajatellaan välimuistia assosiatiivisyyden kannalta ja simulaattorissa joukkojen määrän avulla. Lisäksi käytetyt nimitykset poikkeavat hieman toisistaan. Ole tarkkana. Selvitä itsellesi seuraavat termit. suorasijoitettava (direct mapped) joukkoassosiatiivinen (set associative) täysassosiatiivinen (fully associative) joukko (set) ja joukkojen määrä eri välimuistityypeillä lohkon koko (block size) (joskus näkee myös termiä cache line size) tag-kenttä index-kenttä (simulaattorissa set) block offset (simulaattorissa word) byte offset Sijoita block offset, tag ja index oheisen kuvan laatikoihin 1, 2 ja 3. 1 2 3 Kuva1. Välimuisti Välimuistin assosiatiivisuusaste on Pyynnöistä huolimatta opiskelijat eivät perinteisesti selvitä termejä itselleen ja saavat sitten työstä bumerangin. Älä tee samaa virhettä, vaan selvitä nämä termit. 5

Ihan oikeasti. 3.2.1. Suorasijoitettava välimuisti Koko S=16 sanaa ja lohkon koko B=1 sana. Tavuosoitettavan päämuistin koko M=1024 sanaa. Sananleveys W=32 bittiä. Ilmoita seuraavien kenttien leveydet laskukaavoineen, käyttäen muuttujia S, B, M ja W. Osoitteen leveys on pienin mahdollinen. Merkitse lisäksi "X" niihin kenttiin, jotka talletetaan välimuistiin. Suluissa simulaattorin käyttämä termi. päämuistille menevän osoitteen minimileveys = index (sim:set)= block offset (sim:word) = byte offset = tag = 3.2.2. Täysassosiatiivinen välimuisti Koko S=64 sanaa ja lohkon koko B=2 sanaa. Tavuosoitettavan päämuistin koko M=1024 sanaa. Sananleveys W=32 bittiä. Ilmoita seuraavien kenttien leveydet laskukaavoineen, käyttäen muuttujia S, B, M ja W. Osoitteen leveys on pienin mahdollinen. Merkitse lisäksi "X" niihin kenttiin, jotka talletetaan välimuistiin. osoitteen minimileveys = index (sim:set)= block offset (sim:word) = byte offset = tag = 3.2.3. Hudit Käynnistä simulaattori cache example0 Suorasijoitettava välimuisti Välimuistin koko 8 sanaa Lohkon koko 1 sana 6

Ota esille välimuistin sisältö ja suorita ohjelmaa komennolla Step, kunnes välimuisti on täynnä. Seuraa samalla ohjelman suoritusta käskylistauksen avulla. Kun välimuisti on täynnä, anna komento Step. Mikä lohko (käsky) poistetaan ja miksi? Mikä käsky noudettiin välimuistiin (ks. ohjelmalistaus)? Mistä osoitteesta? Jatka ohjelman suoritusta kunnes koko silmukka on välimuistissa. Tutki tämän jälkeen välimuistin käyttäytymistä joko ajamalla ohjelmaa puolinopeudella (Visual) tai painelemalla steppiä. Montako viittausta tuli päämuistiin yhden silmukan kierroksen aikana? Mihin osoitteisiin? Mitkä käskyt aiheuttivat viitauksia päämuistiin? Miksi vain näiden osoitteiden suhteen esiintyy huteja? Mistä johtuvat konfliktihudit (conflict misses)? Mistä johtuvat kapasiteettihudit (capacity misses)? 7

3.3. Poistoalgoritmit Millaisessa välimuistityypissä tarvitsee käyttää poistoalgoritmeja ja millaisessa ei? Miksi? Selitä seuraavat poistoalgoritmit lyhyesti Random FIFO LRU Muuta välimuistin asetukset seuraaviksi ja resetoi CPU Täysassosiatiivinen Koko 8 sanaa, lohkon koko 1 sana Poistoalgortimi LRU Montako joukkoa on tämän tehtävän täysassosiatiivisessa muistissa? Suorita ohjelmaa example0, kunnes välimuisti täyttyy. Mikä lohko tullaan poistamaan seuraavan vittauksen aikana? Miksi? Anna komento Step ja varmista vastauksesi. Mikä käsky välimuistiin luettiin poistetun tilalle? Jatka kunnes koko silmukka on välimuistissa. Tutki tämän jälkeen välimuistin toimintaa ajamalla ohjelmaa puolinopeudella (Visual) tai stepillä. Mikä muistioperaatio saa sekä väli- että päämuistin mustaksi yhtä aikaa? 8

Kuinka monta lukuhutia esiintyy jokaisella silmukan kierroksella ja miksi. Entä montako kirjoitushutia ja miksi? Suorita ohjelma loppuun komennolla Go. Tutki tuloksia (Show results). Mitkä ovat eri osumaprosenttien arvot (hit ratio)? Mikä on ohjelman suoritusaika? 3.4. Päämuistin päivitysstrategiat Selitä seuraavat termit Write-through Copy-back Käynnistä ohjelma example0 edellisen tehtävän asetuksilla, mutta vaihda päivitysstategiaksi copy-back. Suorita ohjelmaa puolinopeudella 64 askelta. Mitä voit sanoa muistiliikenteen määrästä? Suorita ohjelma loppuun. Mitä tapahtui suoritusajalle? 4. Välimuistin rakenteen vaikutus suorituskykyyn Käynnistä simulaattori ohjelmalla example1. Välimuistin koko 64 sanaa, lohkon koko 2 sanaa. Suorasijoitettava 9

Suorita ohjelma komennolla Go ja esille osumakuvaaja (Show hitgraph, All) sekä komentojen paikallisuuskuvaaja (Show Localitygraph, Intr.). Miksi osuma-% on aluksi melko huono? Mistä johtuvat osumaprosenttikäyrän heilahtelut käyrän puolivälin paikkeilla? Miksi osuma-% laskee ohjelman suorituksen loppuvaiheessa? 4.1. Välimuistin koon vaikutus osumaprosenttiin Resetoi CPU. Välimuistin tyyppi Instr. cache Suorasijoitettavan välimuistin koko 8,16,32,64 ja 128 sanaa Lohkon koko 1 sana Write-through Suorita ohjelma täydellä nopeudella ja ota tulokset esille (Show result). Täytä alla oleva taulukko ja piirrä kuvaaja koordinaatistoon. Taulukko 1: Välimuistin koon vaikutus Cachen koko S Joukkojen määrä Käskyjen osuma-% H (%) 8 16 32 64 128 10

H 1.0 0.5 8 16 32 64 128 Kuva2. Välimuistin koon vaikutus (Tehtävä 4.1) S Tietyn välimuistin koon jälkeen koon kasvattaminen parantaa osumaprosenttia vain minimaalisesti. Vertaa tätä kokoa sisemmän for2-silmukan muistiavaruuteen. Kommentteja? 4.2. Lohkon koon vaikutus osumaprosenttiin Käynnistä simulaattori ohjelmalla example1. Tyyppi Cache Suorasijoitettava Koko 32 sanaa Write-through Lohkon koko 1,2,4,8 ja 16 Välimuistin saantiaika 10 ns CPU kellojakson pituus 10 ns Päämuistin saantiaika 100 ns, leveys 1 sana 11

Mikä on lukuoperaatioiden osuus kaikista muistiviittauksista? Entä kirjoitusten? Mikä on ohjelman muistiviittausten määrä? Täytä alla oleva taulukko Taulukko 2: Lohkon koon vaikutus Lohkon Joukkojen Osuma-% Osuma-% Osuma-% Suoritusaika koko määrä (kaikki) (käskyt) (data) (us) 1 2 4 8 16 Kummalla on parempi osumisprosentti käskyillä vai datalla? Miksi? Miksi osumien määrä vähenee suurilla lohkoilla? Miksi ohjelman suoritusaika kasvaa, vaikka osumaprosentti kasvaa? (Tärkeä kysymys!) 12

4.3. Päämuistin leveyden vaikutus suoritusaikaan Käytä edellisen tehtävän asetuksia, mutta muuta päämuistin leveys samaksi kuin lohkon koko. Täytä taulukko. Taulukko 3: Päämuistin leveyden vaikutus Lohkon koko = Päämuistin leveys 1 4 8 Osuma-% (kaikki) Suoritusaika [us] Miten suoritusaika nyt käyttäytyy osumaprosenttiin verrattuna? Mikä on lyhin suoritusaika? 4.4. Joukkoassosiatiivisyyden vaikutus osumaprosenttiin Kuten huomasimme, voimme kokonaan eliminoida konflikteista johtuvat hudit muuttamalla välimuistin täysassosiatiiviseksi. Käytännössä sellaisten välimuistien toteuttaminen on kallista, joten joudumme tyytymään joukkoassosiatiivisiin välimuisteihin. Käynnistä simulaattori ohjelmalla example1. Välimuistin koko 32 sanaa, lohkon koko 4 sanaa Joukkojen määrä 1, 2, 4 ja 8 Poistoalgoritmi LRU 13

Taulukko 4: Joukkoassosiatiivisyyden vaikutus Joukkojen määrä Assosiatiivisyys 1 2 4 8 Osuma-% (kaikki) Miten osuma-% muuttuu joukkojen lisääntyessä? Millä joukkojen määrällä saadaan paras osumaprosentti? Paljonko joukkojen määrä vaikutti osumisprosenttiin? Käytännössä on osoittaunut, että 2-4 lohkoa joukkoa kohti parantaa osumasuhdetta. Tämän jälkeen muutos on marginaalista. Toteutuskustannukset kasvavat huomattavasti assosiatiivisyyttä lisättäessä, joten suorituskyvyn kasvun pitää olla merkittävää, jotta muutos on kannattavaa tehdä. 4.5. Poistoalgoritmien vaikutus osumaprosenttiin Tutki eri poistoalgoritmien vaikutusta käyttäen samoja asetuksia kuin edellisessä tehtävässä ja joukkojen määrää 4 ja päämuistinleveyttä 1. Taulukko 5:Poistoalgoritmin vaikutus Osuma-% (kaikki) Suoritusaika [us] Random FIFO LRU Kuinka suuri on poistoalgoritmin vaikutus tässä esimerkissä? 14

4.6. Päämuistin päivitystapojen vaikutus suoritusaikaan Käynnistä simulaattori ohjelmalla example1 ja täytä taulukko. Tyyppi Cache Täysassosiatiivinen Koko 32 sanaa, lohkon koko 4 Kokeile sekä Write-through ja copy-back LRU CPU kellojakson pituus 10 ns Välimuistin saantiaika 10 ns Päämuistin saantiaika 100 ns, leveys 1,2 ja 4 sanaa Taulukko 6:Päivitysstrategian vaikutus Päämuistin leveys Suor.aika Write-through [us] Suor.aika Copy-back [us] 1 2 4 Milloin write-through on parempi ja miksi? Kummalla on suurempi vaikutus suoritusaikaan päämuistinleveydellä vai sen päivitysstrategialla? Huomautus Suorituskykymallimme olettaa, että CPU joutuu odottamaan kirjoituksen valmistumista. Käytännon toteuksissa käytetään kirjoituspuskuria, jolloin CPU voi jatkaa ennen kuin kirjoittaminen on suoritettu loppuun. 15

Suorita example1 sellaisella välimuistilla, joka antaa mielestäsi parhaimman suoritusajan. Välimuistin rakenne (välimuistin koko, lohkon koko, joukkojen määrä, päämuistin leveys)? Suoritusaika? Paljonko suoritus on hitaampaa, jos ei käytetä välimuistia (teht. 2.2). 4.7. Välimuistin rakenteen vaikutus sen saantiaikaan Suoritetuissa simulaatioissa emme ole huomioineet välimuistin rakenteen vaikutusta sen saantiaikaan. Niiden välinen riippuvuus on varsin monimutkainen, mutta käydään joitakin ominaisuuksia läpi. Usein suurempi muisti on hitaampi, koska osoitteen dekoodaukseen tarvitaan enemmän bittejä ja datan ohjaamiseen isompia multipleksereitä, jolloin kriittisen polun viive pitenee. Suuremmalla välimuistilla saadaan usein parempi osumaprosentti, mutta sen maksimitaajuus on pienempi. Joukkoassosiatiivisen välimuistin tag-kenttien vertailut voidaan suorittaa rinnakkain, jolloin assosiatiivisyys ei juurikaan vaikuta välimuistin nopeuteen vaan pääasiassa pinta-alaan. (Vertailujen tulokset joudutaan yhdistämään hit-signaaliksi, joka periaatteessa aiheuttaa pienen lisäviiveen.) Lopuksi valitaan oikea sana lohkon sisältä ja mahdollisesti oikea tavu sanan sisällä. Approksimaatio saantiajasta otetaan käyttöön kytkemällä välimuistin asetuksista päälle optio Auto access time. Rakenna sellainen välimuisti, jolla saavutetaan alle 525 us suoritusaika ohjelmalle example2. Ohjelma example2 suorittaa matriisien yhteenlaskun ja sen ohjelmalistaus löytyy työohjeen lopusta. 16

Pidä nämä rajoitukset voimassa Auto access time ON CPU:n kellojakso 10 ns Päämuistin saantiaika 100 ns Päämuistin leveys (interleave factor) korkeintaan 4 Assosiatiivisyys korkeintaan 4 (Huomaa tämä rajoitus!) Välimuistin koko, korkeintaan 128 sanaa Muunneltavat asetukset Lohkon koko Joukkojen määrä Päämuistin leveys Päämuistin päivitystapa Korvausalgoritmi Paljonko arvelet, että laillisia konfiguraatioita on olemassa? Rajataan mahdollisuuksia hieman. Vastaa edellisten tehtävien perusteella. Yliviivaa mielestäsi väärä vaihtoehto päämuistin leveys kannattaa olla pienin/suurin mahdollinen päämuistin päivitystapa kannattaa olla Write-Through/Copy-back tehokkain korvausmenetelmä oli Random/FIFO/LRU tehokkaampi välimuistityyppi on suorasijoitettava/mahdollisimman assosiatiivinen Millä arvoilla vaatimukset saavutetaan (välimuistin koko, lohkon koko, joukkojen määrä, päämuistin leveys)? Mikä oli suoritusaika ja osumaprosentti? 17

5. Yhteenveto Mitkä ovat mielestäsi välimuistin tärkeimmät ominaisuudet ja hienoudet? 6. Pakollinen palaute harjoitustyöstä Luitko kirjan kappaleen ennen työn tekemistä? Kauanko työhön kului aikaa? Työssä/ohjeessa oli hyvää, huonoa, muuta kommentoitavaa. Oliko ohjeessa epäselviä kohtia (nimeä ne jos oli)? Olet nyt tehnyt CACHE-harjoitustyön. Palauta nämä harjoitustyöpaperit yläkulmasta nidottuna tarkastavalle assistentille. Palauta ajoissa. 18