Lecture from: 23.02.2023 | Video: YT
Course Goals
This course provides a bottom-up exploration of computer architecture, from transistors to complex systems, with the aim of understanding:
- Fundamentals: Core concepts of digital design.
- Design Principles & Tradeoffs: Reasoning behind architectural choices and their implications.
- Historical Context: Evolution of computer architectures.
This knowledge will enable us to:
- Comprehend the inner workings of modern computers.
- Evaluate design tradeoffs effectively.
- Implement a basic microprocessor.
- Debug complex systems systematically.
- Develop innovative computer architectures.
Rationale
A fundamental understanding of computer architecture is crucial for computer scientists to effectively design, analyze, and optimize computing systems.
Course Structure
The Purpose of Computers
Computers solve problems, ultimately facilitating insights for a better future.
How Computers Operate
Computers manipulate electrons to solve problems. Complex problems must be decomposed into simpler, electron-level operations.
Abstraction Layers
The problem-solving process involves several layers of abstraction and transformation:
- Problem: The initial task to be solved.
- Algorithm: A finite, definite, and effectively computable procedure.
- Finiteness: Algorithm terminates after a finite number of steps.
- Definiteness: Each step is precisely defined and unambiguous.
- Effective Computability: Each step can be carried out by a computer.
- Program/Language: Implementation of the algorithm in a specific programming language.
- System Software: Includes Virtual Machines (VMs), Operating Systems (OS), Memory Managers, etc., providing a platform for program execution.
- Instruction Set Architecture (ISA): The interface between software and hardware. It defines the instructions the hardware understands. The programmer relies on the hardware to correctly implement the ISA.
- Microarchitecture: The specific implementation of the ISA (e.g., x86, ARM, RISC-V). Different microarchitectures can implement the same ISA with varying performance and power characteristics.
- Logic: Digital logic circuits that implement the microarchitecture.
- Devices: Physical devices, such as transistors, that realize the logic gates.
- Electrons: The fundamental particles manipulated to perform computation.
Computer Architecture Defined
Computer architecture is the art and science of designing computing platforms, encompassing hardware, interfaces, system software, and programming models.
The design aims to achieve specific goals, such as:
- Maximum performance.
- Optimal energy efficiency (battery life).
- Best performance-to-cost ratio.
The design goals vary depending on the application (e.g., supercomputer vs. smartphone), but the underlying principles remain constant.
Real-World Considerations
Modern computer architecture often involves co-design across the hierarchy, optimizing from algorithms down to devices. Specialization is key to achieving optimal performance within specific design constraints.
Contemporary Computer Architecture
Emerging Trends and Challenges
Computer architecture is a dynamic field driven by diverse requirements and technological advancements. Key areas of focus include:
- Performance, Energy Efficiency, Sustainability, and Specialized Accelerators: Balancing performance with energy consumption and environmental impact, and utilizing specialized hardware for specific workloads.
- Reliability, Safety, Security, and Privacy: Ensuring dependable operation, protecting against malicious attacks, and safeguarding sensitive data.
- Demanding Workloads: Adapting to increasingly complex and data-intensive applications (e.g., AI/ML, big data analytics).
- New Device Technologies: Leveraging emerging technologies like memristors, 3D-stacked memory, and quantum computing.
Achieving improvements across all these dimensions simultaneously is a significant challenge. There are inherent tradeoffs (e.g., power/performance vs. energy/climate change). Furthermore, memory access is significantly more expensive than computation. A single memory access can consume orders of magnitude more energy (6400x) than a simple integer addition. This disparity highlights the importance of memory hierarchy optimizations and data locality.
Security Vulnerabilities
Security is a paramount concern in modern computer architecture. Side-channel vulnerabilities exploit unintended information leakage during computation.
Rowhammer
Rowhammer is a hardware vulnerability affecting DRAM (Dynamic Random-Access Memory). Repeatedly accessing a row of memory cells (the “aggressor” or “hammered” row) can induce bit flips in physically adjacent rows (the “victim” rows).
The rapid and repeated activation of a memory row can cause electrical disturbance leading to unintended changes in the state of neighboring cells. This can be exploited by attackers to gain unauthorized access or control of a system. Analogy: “Breaking into an apartment by repeatedly slamming a neighbor’s door until the vibrations open the door you were after.”
Meltdown and Spectre
Meltdown and Spectre are speculative execution vulnerabilities that affect many modern processors. They exploit the out-of-order execution and branch prediction features used to improve performance. By carefully crafting input data and observing timing differences, attackers can infer information about privileged memory regions or other processes.
Continue here: 02 Tradeoffs, Metrics & Combinational Logic 1