Course Theme 15 213 The Class That Gives CMU Its Zip Abstraction is good but don t forget reality Courses to date emphasize abstraction Introduction to Computer Systems Abstract data types Asymptotic analysis These abstractions have limits Randal E Bryant August 30 2006 Especially in the presence of bugs Need to understand underlying implementations Useful outcomes Topics Theme Five great realities of computer systems How this fits within CS curriculum Become more effective programmers Able to find and eliminate bugs efficiently Able to tune program performance Prepare for later systems classes in CS ECE Compilers Operating Systems Networks Computer Architecture Embedded Systems class01a ppt 15 213 F 06 2 Great Reality 1 Computer Arithmetic Int Int s are not Integers Float Float s are not Reals Does not generate random values Examples Yes Int s Due to finiteness of representations Integer operations satisfy ring properties Floating point operations satisfy ordering properties Commutativity associativity distributivity 40000 40000 1600000000 50000 50000 Is x y z x y z Unsigned Signed Int s Monotonicity values of signs Yes Observation Float s 1e20 1e20 3 14 3 14 1e20 1e20 3 14 3 Arithmetic operations have important mathematical properties Cannot assume usual usual properties Is x2 0 Float s 15 213 F 06 15 213 F 06 4 Need to understand which abstractions apply in which contexts Important issues for compiler writers and serious application programmers 15 213 F 06 Great Reality 2 Assembly Code Example You You ve got to know assembly Time Stamp Counter Chances are you you ll never write program in assembly Compilers are much better more patient than you are Understanding assembly key to machinemachine level execution model Special 64 bit register in Intel compatible machines Incremented every clock cycle Read with rdtsc instruction Application Behavior of programs in presence of bugs Tuning program performance double t start counter P t get counter printf P required f clock cycles n t Understanding sources of program inefficiency Implementing system software Compiler has machine code as target Operating systems must manage process state Creating fighting malware x86 assembly is the language of choice 5 15 213 F 06 Code to Read Counter 15 213 F 06 6 Great Reality 3 Write small amount of assembly code using GCC s asm facility Inserts assembly code into machine code generated by compiler static unsigned cyc hi 0 static unsigned cyc lo 0 Memory Matters Random Access Memory is an unun physical abstraction Memory is not unbounded Set hi and lo to the high and low order bits of the cycle counter void access counter unsigned hi unsigned lo asm rdtsc movl edx 0 movl eax 1 r hi r lo edx eax 7 Measure time required by procedure In units of clock cycles High level language model breaks down 15 213 F 06 It must be allocated and managed Many applications are memory dominated Memory referencing bugs especially pernicious Effects are distant in both time and space Memory performance is not uniform 8 Cache and virtual memory effects can greatly affect program performance Adapting program to characteristics of memory system can lead to major speed improvements 15 213 F 06 Memory Referencing Bug Example Referencing Bug Explanation double double fun int fun int i i volatile volatile double double d 1 d 1 3 14 3 14 volatile volatile long long int int a 2 a 2 a i a i 1073741824 1073741824 Possibly Possibly out out of of bounds bounds return return d 0 d 0 fun 0 fun 0 fun 1 fun 1 fun 2 fun 2 fun 3 fun 3 fun 4 fun 4 3 14 3 14 3 14 3 14 3 1399998664856 3 1399998664856 2 00000061035156 2 00000061035156 3 14 3 14 then thensegmentation segmentationfault fault 15 213 F 06 9 Memory Referencing Errors C and C do not provide any memory protection Out of bounds array references Invalid pointer values Abuses of malloc free Can lead to nasty bugs Whether or not bug has any effect depends on system and compiler Action at a distance 11 Understand what possible interactions may occur Use or develop tools to detect referencing errors d3 d0 2 a 1 1 a 0 0 Location accessed by fun i C does not implement bounds checking Out of range write can affect other parts of program state 15 213 F 06 void copyij int int int i j for i 0 i for j 0 dst i j src 2048 2048 dst 2048 2048 2048 i j 2048 j src i j 59 393 288 clock cycles void copyji int int int i j for j 0 j for i 0 dst i j src 2048 2048 dst 2048 2048 2048 j i 2048 i src i j 1 277 877 876 clock cycles 21 5 times slower How can I deal with this 3 Memory System Performance Example Effect of bug may be first observed long after it is generated Program in Java Lisp or ML 4 d7 d4 10 Corrupted object logically unrelated to one being accessed Saved State Hierarchical memory organization Performance depends on access patterns Measured on 2GHz Intel Pentium 4 Including how step through multi dimensional array 15 213 F 06 12 15 213 F 06 The Memory Mountain Memory Performance Example 1200 Read throughput MB s copyij 1000 L1 Pentium III Xeon 550 MHz 16 KB on chip L1 d cache 16 KB on chip L1 i cache 512 KB off chip unified L2 cache Implementations of Matrix Multiplication copyji ijk ijk for for i 0 i 0 i n i n i i for j 0 for j 0 j n j n j j sum sum 0 0 0 0 for for k 0 k 0 k n k n k k sum sum a i k a i k b k j b k j c i j sum c i j sum Multiple ways to nest loops 800 600 400 xe L2 200 2k 8k 32k 128k 512k 2m 8m s13 s15 s9 Stride words s11 s5 Mem s7 s1 s3 0 Working set size bytes 15 213 F 06 13 Matmult Performance Alpha 21164 Too big for L1 Cache jik jik for for j 0 j 0 j n j n j j for i 0 for i 0 i n i n i i sum sum 0 0 0 0 for for k 0 k 0 k n k n k k sum sum a i k a i k b k j b k j c i j sum c i j sum 15 213 F 06 14 Blocked matmult perf Alpha 21164 Too big for L2 Cache 160 160 140 140 120 120 ijk 100 100 ikj bijk jik 80 bikj 80 jki ijk kij 60 kji ikj 60 40 40 20 20 0 0 50 matrix size n 75 100 125 150 175 200 225 250 275 300 325 350 375 400 425 450 475 500 matrix size n 15 15 213 F 06 16 15 213 F 06 Great Reality 4 Great Reality 5 There There s more to performance than asymptotic complexity Computers do more than …
View Full Document