LIACS >Kristian Rietveld >Courses >Computerarchitectuur, Najaar 2017
headerimg

Banner image shows Intel Core i7-5960X die. Source.

Computerarchitectuur, Najaar 2017

Docent: dr. K. F. D. Rietveld
Practicumassistenten: Koen Putman, Jos Zandvliet

Deadline opdracht 3 uitgesteld naar donderdag 21 december.

Maandag 11 december is het laatste ingeroosterde werkcollege. Op maandag 18 december zal er nog een practicum-vragenuur zijn in de Snellius-computerzalen, waarschijnlijk tussen 13:45 en 15:15 uur.

Indien er begin januari (voordat het tentamen plaatsvindt) behoefte is aan een vragenuur: neem contact op met de docent en doe een voorstel voor een geschikt tijdstip.

CUDA werkt nu in de computerzalen. Zie de practicum-pagina voor CUDA handleiding en nieuw "CUDA-enabled" startpunt. Bij vragen: neem contact op met de docent!

We hebben de CUDA handleiding geupdated met enige verduidelijkingen over het gebruik van nvprof. Wanneer gebruikt in de computerzalen is het soms nodig het command line argument --unified-memory-profiling off toe te voegen.

Voor de mensen die veel vanuit huis werken: huisuil02 en huisuil03 zijn geupgraded naar Ubuntu 16.04.

Toegangseisen

Aanbevolen voorkennis: Programmeermethoden, Programmeertechnieken, Digitale Technieken.

Beschrijving

Basiskennis van computerarchitecturen is een vereiste om complexe softwaresystemen te kunnen ontwikkelen en optimaliseren, en voor het kunnen uitvoeren van onderzoek in het vakgebied computersystemen. In dit college bestuderen we de opbouw van moderne computerarchitecturen. We beginnen met een grondige introductie van de basisconcepten van computerarchitecturen: instruction set architectures, pipelining en memory hierarchy. We vervolgen onze studie door te kijken hoe instructies en processen almaar sneller verwerkt kunnen worden door het toepassen van oude en nieuwe hard- en softwarematige technieken. Te denken valt aan superscalar execution, out-of-order execution, branch prediction, vector processing en multi-core architecturen. Zowel de voordelen als beperkingen van deze technieken zullen aan bod komen. Tevens zullen we aandacht besteden aan GPGPU architecturen, welke in de afgelopen jaren een zeer grote opgang hebben gemaakt.

In het bijbehorende practicum is er de mogelijkheid de opgedane kennis in de praktijk te brengen. Tijdens het practicum zal er ervaring worden opgedaan met het werken met "assembly language", het decoderen van machine instructies, caching optimalisaties en het gebruik van vectorinstructies. Als de tijd het toelaat zal er aandacht worden besteed aan het programmeren van GPGPU's.

Leerdoelen

Het kunnen onderscheiden van verschillende klassen van computers. Het begrijpen hoe computer performance wordt gemeten en gerapporteerd. Inzicht hebben in de kwantitatieve principes van het ontwerp van computersystemen. Kunnen werken met verschillende Instruction Set Architectures en correspondenties hiertussen aanwijzen. Het kunnen omschrijven van een moderne "memory hierarchy" en begrijpen hoe hiervan gebruik kan worden gemaakt door middel van cache optimalisaties in software. Het kunnen uitleggen van verschillende technieken die worden gebruikt voor het verkrijgen van instruction-level parallelism en hun beperkingen. Inzicht verkrijgen in vector processing en de toepassing van deze techniek in SIMD instructies en GPGPU's. Voordelen en problemen met multi-core architecturen kunnen benoemen.

Examinering

De toetsing bestaat uit twee delen: een theoretisch en een praktisch deel. Het cijfer voor beide delen moet voldoende zijn om te kunnen slagen voor het vak.

Het theoretische deel wordt getoetst met een schriftelijk tentamen aan het eind van het semester en telt voor twee derde (2/3) mee. De tentamenstof zal bekend worden gemaakt op deze website.

Het cijfer voor het praktische deel wordt bepaald aan de hand van een drietal onderdelen. Er wordt gebruik gemaakt van verschillende toetsvormen, zowel een individuele schriftelijke toets als een programmeeropdracht en verslaglegging. Het practicumcijfer is een gewogen gemiddelde over de cijfers die zijn behaald over de drie onderdelen (opdracht 1: 0.3, opdracht 2: 0.4, opdracht 3: 0.3), en telt als een derde (1/3) mee voor het eindcijfer. De opdrachten met bijbehorende toetsvorm en gewicht voor het practicumcijfer worden aan het begin van het semester bekend gemaakt op de website van het vak. Om te kunnen slagen voor het praktische deel moeten alle opdrachten zijn ingeleverd en moet het uiteindelijke practicumcijfer voldoende zijn.

Indien het tentamencijfer onvoldoende is, is dit meteen het eindcijfer. Als het practicum incompleet of onvoldoende is, wordt er geen eindcijfer opgemaakt.

Literatuur

Boek

Boek: Computer Architecture: A Quantitative Approach, Fifth Edition. John Hennessy, David Patterson. 2011. Morgan Kaufmann. ISBN-13: 978-0-12-383872-8

Collegesheets

NB: collegesheets zijn geen vervanging van het tekstboek, maar dienen als leidraad door de tentamenstof. De tentamenstof is opgegeven op basis van het tekstboek.

Tentamenstof en oefententamen

Een overzicht van de tentamenstof, zoals ook tijdens de hoorcolleges is behandeld (zie slides hierboven), is hier te downloaden.

Oefenmateriaal

Contact

De docent is bereikbaar middels e-mail naar krietvel (at) liacs.nl.

Voorgaande jaren