Ch01

1. The Computer Revolution

  • Progress in Computer Technology

    • Driven by domain-specific accelerators.

    • Enables novel applications:

      • Computers in automobiles: reduces pollution, improves fuel efficiency, enables automated driving.

      • Cell phones: transformative technology in communication and information access.

      • Human Genome Project: analyzing human DNA sequences for medical and genetic research.

      • World Wide Web: revolutionizes information access and replaces traditional libraries.

      • Search Engines: makes information retrieval efficient and widespread.

2. Classes of Computers

2.1 Personal Computers

  • General purpose, supports a variety of software.

  • Subjected to cost/performance tradeoffs.

2.2 Server Computers

  • Used for running larger programs serving multiple users.

  • Network-based with high capacity, performance, and reliability.

  • Ranges from small servers to building-sized units.

2.3 Supercomputers

  • Cost hundreds of millions of dollars.

  • Utilized for high-end scientific computations (e.g., weather forecasting, weapon research).

  • Exascale supercomputers: capable of performing quintillion calculations per second (1x10^18).

  • Small market presence despite high capability.

2.4 Embedded Computers

  • Found within systems (e.g., cars, TVs) and not typically user-accessible.

  • Internet of Things (IoT): numerous small devices communicating wirelessly over the internet.

  • Operating under strict power/performance/cost constraints.

3. The Post-PC Era

  • Rise of Personal Mobile Devices (PMDs):

    • Battery-operated, internet-connected devices (smartphones, tablets).

  • Cloud computing: large data centers known as Warehouse Scale Computers (WSCs) managed by companies like Amazon and Google (50,000+ servers).

  • Software as a Service (SaaS): software and data delivery over the internet.

4. Understanding Performance

  • Key Factors Influencing Performance:

    • Algorithm Efficiency: Determines number of operations executed.

    • Programming Language and Compiler: Affect number of machine instructions executed per operation.

    • Hardware (Processor and Memory): Influence execution speed of instructions.

    • I/O System: Performance of input/output operations impacted by hardware and operating system.

5. Seven Great Ideas in Computer Architecture

5.1 Abstraction

  • Simplifies design by hiding complexity.

5.2 Performance Improvements

  • Achieved via:

    • Parallelism

    • Pipelining

    • Prediction and speculative execution

5.3 Memory Hierarchy

  • Structured to maximize efficiency across storage classes.

5.4 Dependability

  • Achieved through redundancy in systems.

6. Levels of Program Code

6.1 High-Level Language

  • Closer to problem domain; aids productivity and portability.

6.2 Assembly Language

  • Textual representation of machine instructions.

6.3 Hardware Representation

  • Use of binary digits (bits) for encoded instructions and data.

7. Components of a Computer

7.1 Input/Output Devices

  • Includes user-interface devices (display, keyboard, mouse).

7.2 Storage Devices

  • Types include: hard disk, CD/DVD, and flash.

7.3 Network Adapters

  • Essential for communication with other computers.

8. Technology Trends

  • Continual evolution in electronics technology reflects increased capacity, performance, and reduced costs.

  • Historical performance trends:

    • 1951: Vacuum tubes

    • 2013: Ultra large scale integrated circuits with billions of transistors.

9. Moore’s Law

  • Concept related to the doubling of transistors manufactured approximately every 18 months, introduced by Gordon Moore, co-founder of Intel.

10. Pitfalls in Computer Performance

10.1 Amdahl’s Law

  • Improvement in one aspect does not guarantee proportional improvement in overall performance, highlights the importance of making common cases efficient.

10.2 MIPS as a Performance Metric

  • MIPS (Millions of Instructions Per Second) does not consider different ISAs or instruction complexity which can skew performance evaluations.

11. Performance Summary

  • Essential factors to consider: algorithms, programming languages, compilers, and instruction set architecture.

12. Concluding Remarks

  • Focus on cost/performance improvements driven by technological advancements and highlight the importance of parallelism for enhancing performance.