ISO 9126: Software Quality Internal Quality: Maintainability Analyzability, Testability, Stability, Changeability External Quality Functionality Usability Reliability Portability Efficiency
Moore's Law Noted that the number of transistors per unit area had doubled every year from 1958 to 1965 Expected the trend to last “for at least ten years” Gordon Moore Co-founder of Intel Often misquoted as “the speed will double every 18 months”
Intel Processor Speeds over Time 10 GHz 1 GHz 100 MHz 10 MHz 1 MHz Pentium 4 Pentium III Pentium II Pentium 80486 80386 80286 8086 8080 8008 4004 1970 1980 1990 2000 2010
What’s the State-of-the-Art? Fastest commercially available CPU: ~4GHz Fastest experimental CPU: 500Ghz Need to cool it down to 4°K, though Fastest theoretical transistor: 1THz
The End of Moore’s Law? Production limitations Physical limitations Bottleneck issues Market issues
pre-1940s Mechanical 1940s Electromagnetic Relays 1950s Vacuum Tubes 1960s Transistors since 1970s Integrated Circuits The Future Quantum Computers?
The Current Solution: Parallelism
Process-Level Parallelism Early computers (1950s and 1960s) could only run one program at a time When it finished, it would run the next one Multi-programming operating systems (1970s) made it appear as if multiple programs were running simultaneously 10
Instruction-Level Parallelism Rather than wait for an instruction to finish, start the next one as soon as possible Very common in RISC architectures Pipelining: Fetch/decode one instruction while executing another 11
Thread-Level Parallelism Modern programming languages support threads, which allow a program to do more than one thing at a time Examples Reading data from one source while writing to another Performing two parts of a calculation simultaneously Handling interaction with multiple users at the same time 12
Today Concurrency (threads) in C Does concurrency really make your code faster? Race conditions and synchronization Short break; head to Moore 207 Lab assignment