This shows you the differences between two versions of the page.
|
iocla:cursuri:capitol-09 [2017/12/12 21:05] dragos.niculescu [Capitol 09: Optimizări] |
— (current) | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Capitol 09: Optimizări ====== | ||
| - | |||
| - | <html> | ||
| - | <iframe src="https://docs.google.com/viewer?url=http://elf.cs.pub.ro/asm/res/cursuri/capitol-09/IOCLA - Capitol 09 - Operatii si extensii dedicate.pdf&embedded=true" width="600" height="480" style="border: none;"> | ||
| - | </iframe> | ||
| - | </html> | ||
| - | |||
| - | * [[http://elf.cs.pub.ro/asm/res/cursuri/capitol-09/IOCLA - Capitol 09 - Optimizari.pdf|Capitol 09: Optimizari (PDF)]] | ||
| - | * [[http://elf.cs.pub.ro/asm/res/cursuri/capitol-09/IOCLA - Capitol 09 - Optimizari - 3on1 notes.pdf|Capitol 09: Optimizari (handout: 3on1 notes)]] | ||
| - | * [[http://elf.cs.pub.ro/asm/res/cursuri/capitol-09/IOCLA - Capitol 09 - Optimizari - 6on1.pdf|Capitol 09: Optimizari (handout: 6on1)]] | ||
| - | |||
| - | * Suport curs | ||
| - | * Ray Sefarth, "Introduction to 64 Bit Intel Assembly Language Programming for Linux", 2011, capitolul 15 | ||
| - | * Richard Blum, "Professional Assembly Language", 2005, capitolul 16 | ||
| - | * De citit, alte surse | ||
| - | * [[http://www.virtualdub.org/blog/pivot/entry.php?id=340|A Visual C++ x64 code generation peculiarity]] | ||
| - | * [[https://danluu.com/assembly-intrinsics/|Hand coded assembly beats intrinsics in speed and simplicity]] | ||
| - | * [[http://arjunsreedharan.org/post/82710718100/kernel-101-lets-write-a-kernel|Let's write a kernel]] | ||
| - | * [[http://neilkemp.us/src/sse_tutorial/sse_tutorial.html|Intel SSE Tutorial : An Introduction to the SSE Instruction Set]] | ||
| - | |||
| - | | ||
| - | |||
| - | |||
| - | ===== Demo-uri ===== | ||
| - | |||
| - | Pentru parcurgerea demo-urilor, folosim [[http://elf.cs.pub.ro/asm/res/cursuri/capitol-09/capitol-09-demo.zip|arhiva aferentă]]. Demo-urile rulează pe Linux. Descărcăm arhiva folosind comanda<code bash> | ||
| - | wget http://elf.cs.pub.ro/iocla/res/cursuri/capitol-09/capitol-09-demo.zip | ||
| - | </code> și apoi decomprimăm arhiva<code bash> | ||
| - | unzip capitol-09-demo.zip | ||
| - | </code> și accesăm directorul rezultat în urma decomprimării<code bash> | ||
| - | cd capitol-09-demo/ | ||
| - | </code> | ||
| - | |||
| - | Acum putem parcurge secțiunile cu demo-uri de mai jos. | ||
| - | |||
| - | ==== Demo ==== | ||
| - | |||
| - | cd capitol-09-demo/ | ||
| - | cat /proc/cpuinfo | grep Hz | ||
| - | make | ||
| - | ./test_freq | ||
| - | estimează frecvența procesorului folosind registrul TSC pentru sleep(1) | ||
| - | |||
| - | ./test_rdtsc | ||
| - | în bucla rep trebuie încercate diverse combinații de instrucțiuni. | ||
| - | Programul afișează numărul de instrucțiuni din buclă și numărul de cicli folositi. | ||
| - | |||
| - | ./test_sse.c | ||
| - | se compară viteza de execuție cu operații SSE cu prelucrarea clasică octet cu octet | ||
| - | |||
| - | ./lock.cc | ||
| - | Cum arată inline assembly? | ||
| - | Cum arată un "race condition"? | ||
| - | Instrucțiunile nu sunt atomice! | ||
| - | Prefixul lock. | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||