Algorithms & Architectures II
Algorithms & Architectures II
Jens Myrup Pedersen Hans Peter Schwefel Kursusholdere
Dagens lektion Overordnet mål: At etablere en forståelse for hvordan hardware og hardwarearkitekturer påvirker kørslen (herunder effektivitet og performance) af algoritmer. Hardware arkitekturer CPU-opbygning, med fokus på hukommelse Performance, med fokus på hukommelse Virtuel hukommelse Ca. 2 x 40 minutters forelæsning derefter opgaveregning.
Organisering af CPU Hardware-arkitekturer
Von Neumann maskine Difference between Neumann and Harward?
Øger throughput Forudsætter Branch Prediction Failure: Stall. Spekulativ eksekvering Pipelining
Von Neumann computer Single-stream af instruktioner, med tæller Instruktioner og data gemt i samme hukommelse Adresserbar hukommelse Instruktioner kodet som numre Harward computer Separat hukommelse for data og instruktioner Parallel adgang til de to hukommelser Ingen skrivning til den hukommelse hvor instruktionerne ligger
(Super)skalerbare arkitekturer
Multiprocessor
Adressering, primær hukommelse
Problemer med parallelitet Data konsistens Opdeling af opgaver Synkronisering Skedulering Deling af ressourcer På hvilke niveauer opstår disse problemer?
Konsistens Flere kopier af data Read access mindst problematisk Skrivning modificeret af en enkelt kopi? Skrivning til flere kopier?
Opdeling af opgaver Kan opgaver løses uafhængigt - Eller får de resultater fra hinanden? (Ændring af delte ressourcer, sekventielle beregninger). Kan det betale sig? Opgave (5-10 min): Kom med eksempler på opgaver der kan paralleliseres eller ikke paralleliseres. Kan det betale sig?
Processer kan køres når data er klar Notification Vente på data (ventetid)? Optimere rækkefølger Synkronisering
Skedulering og deling af ressourcer Fair deling af ressourcer Optimering Prioritering Deadlock Undgå, løse, detektere
Caching Main memory er langsommere end CPU Hurtig memory er dyrt Hurtig hukommelse er mindre Tilgang til memory Temporal locality Address locality Forsøg at hente data der skal bruges ind i hurtig hukommelse
Caching flere niveauer Level 1 ofte delt mellem data og instruktioner Level 2 ofte delt Cache kan være Integreret i CPU På CPU modulet På Motherboard
Caching koncept Address in cache: Hit Address not in cache: Miss Moving to cache = cache line fill Write strategies: Write back = cache only Write through = cache and main memory Write allocation = Writing to data not in the cache.
Caching flere niveauer
Caching flere niveauer
Caching direct-mapped (simple)
Caching directly mapped Simple Flyttes i hele linier (foregående eksempel 32 bytes) Hver linie markeret som valid eller invalid Én adresse kan kun gemmes ét sted Adresser nedbrudt til tag, line, word, byte
Caching 4way set-associative
Branch-prediction (dynamic/static)
Out-of-order eksekvering? (tavle) Hvilken rækkefølge skal vi køre koden i? Eksempel: in-order issue and in-order completion Spekulativ eksekvering: Dependencies: RAW, WAR, WAW.
CPU andre forhold Øget klok-frekvens Ændret arkitektur Pipelines, caches, instruktioner/sæt Insruktions-størrelser: 16,62,64 bit Flere kerner Kompatibilitet (CPU pris vs. Rekompilering af SW).
Virtuel hukommelse (OS level)
Virtuel hukommelse (OS level)
Virtuel hukommelse Konceptuelt minder det meget om caching, men det er på et andet niveau. Større adresserum end der er fysisk hukommelse Virtuelle adresser bliver afbildet over i den fysiske, og MMU (Memory Management Unit) sørger for at den ønskede data er tilgængelig.
Paging
Paging - implementation
Paging multiprocessorsystemer
Exercises Gennemgå fig 4.44, s. 308 Overvej hvilke HW constraints der er i jeres projekter Hvilke beregninger skal I foretage i jeres projekter og hvordan hænger de sammen med HW? Tanenbaum: 2.1-2.4, 4.19, 6.2-6.5