Microprocessor Architecture

Chapter 1
Foundations and Evolution of Microprocessors

Bachelors Program in Electronics and Communication
Microprocessor Architecture   •   Bachelor

Foundations and Evolution of Microprocessors

Introduction

A microprocessor is a programmable digital processor whose central processing functions are implemented primarily in integrated circuitry. Early microprocessors placed a single CPU on one silicon die; modern devices may contain several CPU cores, caches, accelerators, memory controllers and interconnects. Microprocessors underpin computers, communication equipment, industrial controllers, vehicles, medical devices and intelligent embedded systems.

Understanding them requires more than memorizing product generations. Engineers must distinguish what a processor is specified to do from how it is organized and physically realized. They must also understand stored-program computing, memory models, performance limits and the transition from relatively homogeneous CPUs to heterogeneous systems combining CPUs, GPUs, DSPs and specialized accelerators.

Learning Objectives

After studying this chapter, students should be able to:

  • define microprocessor, CPU, core, ISA, microarchitecture and related terminology;
  • distinguish architecture, organization and implementation;
  • compare microprocessors, microcontrollers, GPUs, DSPs and systems-on-chip;
  • explain stored-program operation and the von Neumann and Harvard models;
  • describe major stages in processor evolution;
  • interpret Moore’s law without treating it as a physical law;
  • compare CISC and RISC design traditions;
  • calculate basic processor execution time, speedup and address-space capacity;
  • explain why modern computing increasingly uses multicore and heterogeneous architectures.

1. Processor Terminology

1.1 Processor, CPU and microprocessor

A processor is a device or computational unit that executes operations on data according to instructions or configured control rules. The term includes CPUs, GPUs, DSPs and specialized accelerators.

The central processing unit (CPU) is the principal general-purpose instruction-executing component of a computer. It normally includes:

  • a control unit that directs instruction execution;
  • an arithmetic and logic unit (ALU);
  • registers holding operands, addresses and processor state;
  • mechanisms for instruction sequencing and exception handling.

A processor core is an independently operating instruction-execution engine. A multicore CPU contains two or more cores, often sharing some caches and interfaces.

A microprocessor traditionally means a programmable CPU implemented on one integrated-circuit die. Contemporary usage is broader because a marketed microprocessor may include several cores and substantial supporting circuitry. The defining distinction is therefore less about literal component count and more about an integrated, programmable processing device whose main role is general-purpose computation.

1.2 Instruction set architecture

An instruction set architecture (ISA) is the programmer-visible specification of a processor. It typically defines:

  • machine instructions and their encodings;
  • programmer-visible registers;
  • data types and operand sizes;
  • addressing modes;
  • memory and input/output behavior;
  • exception, interrupt and privilege mechanisms;
  • rules affecting software compatibility.

Examples include x86-64, Arm, RISC-V and MIPS. Programs compiled for one ISA do not ordinarily execute directly on another unless translated or emulated.

1.3 Architecture, organization and implementation

These terms describe different abstraction levels.

LevelCentral questionExamples
ArchitectureWhat behavior is visible to software?ISA, registers, addressing modes, exception model
Organization or microarchitectureHow is the architecture realized internally?Pipeline depth, cache hierarchy, branch predictor, execution units
ImplementationHow is a particular design physically produced?Transistor technology, clock distribution, floor plan, package, thermal design

Two processors can implement the same ISA while using different organizations. For example, one implementation may be a simple in-order pipeline, while another executes instructions out of order with multiple execution units. Both remain software-compatible if they preserve the architectural behavior.

Physical implementation decisions also matter. The same microarchitecture fabricated using different process technologies may have different power, frequency, area and manufacturing yield.

1.4 Registers, buses and memory addresses

Registers are small, rapidly accessible storage locations within a processor. Common categories include general-purpose registers, a program counter, a stack pointer, status registers and instruction registers.

A bus is a shared set of signal paths carrying information between components. Conceptually, processor interfaces include:

  • an address path, identifying a memory or I/O location;
  • a data path, carrying instructions or data;
  • control signals, specifying operations such as read, write or acknowledge.

If a system has n address bits and each address identifies one byte, the directly addressable capacity is:

A = 2n bytes

Here, A is the byte-addressable capacity and n is the number of address bits. This formula assumes every possible bit pattern is usable and that addressing is byte-based. Actual usable memory may be smaller because portions of the address space can be reserved for devices or system functions.

Example: A 20-bit byte address identifies 220 = 1,048,576 bytes, equal to 1 MiB. A mebibyte uses the binary definition 1 MiB = 220 bytes.

2. Related Processing Devices

2.1 Microcontroller

A microcontroller (MCU) integrates a CPU, program memory, data memory and peripherals—such as timers, serial interfaces and analog-to-digital converters—on one chip. It is optimized for embedded control, low cost, deterministic interaction and low power.

A stand-alone microprocessor commonly depends on external memory and support devices, although modern boundaries are not absolute. An MCU usually emphasizes complete control-system integration rather than maximum general-purpose performance.

2.2 Digital signal processor

A digital signal processor (DSP) is optimized for numerical processing of sampled signals. Common features include:

  • multiply–accumulate units;
  • predictable pipelines;
  • circular or modulo addressing;
  • saturation arithmetic;
  • efficient vector or fixed-point operations;
  • separate instruction and data paths in many designs.

DSPs are used in audio processing, communication receivers, radar, motor control and image filtering.

2.3 Graphics processing unit

A graphics processing unit (GPU) contains many execution resources designed for high-throughput parallel workloads. GPUs are effective when the same or similar operation can be applied to many data elements. Applications include graphics, scientific simulation and neural-network processing.

GPU throughput does not make a GPU universally superior to a CPU. Irregular control flow, small serial tasks, strict interrupt latency or limited parallelism may favor CPUs.

2.4 System-on-chip and system-in-package

A system-on-chip (SoC) integrates major system functions on a single semiconductor die. These may include CPU cores, GPU or DSP units, memory controllers, communication interfaces, accelerators and security logic.

The term should not be confused with a system-in-package (SiP). An SiP integrates multiple dies or components within one package. A package containing separate CPU, memory and radio dies is not strictly a single-die SoC merely because it appears externally as one component. Modern chiplet-based products may combine SoC-like functionality at package level, so technical documentation should identify whether integration is monolithic or multi-die.

DevicePrimary emphasisTypical applications
CPU/microprocessorFlexible general-purpose executionComputers, servers, high-end embedded systems
MCUIntegrated control and peripheralsAppliances, sensors, industrial control
DSPPredictable signal mathematicsModems, audio, radar, motor drives
GPUHigh-throughput data parallelismGraphics, simulation, machine learning
SoCSingle-die system integrationPhones, routers, cameras, embedded platforms
SiPPackage-level integration of multiple diesCompact radio modules, advanced computing modules

3. Stored-Program Computing

The stored-program concept represents instructions in memory using encoded binary values. A processor can therefore retrieve instructions in much the same general manner as stored data. Programs can be loaded, copied and modified without physically rewiring the machine.

A simplified instruction cycle contains:

  1. Fetch: obtain the instruction identified by the program counter.
  2. Decode: determine the required operation and operands.
  3. Execute: perform arithmetic, logic, control or data movement.
  4. Memory access: read or write memory when required.
  5. Write-back: store a result in architectural state.
  6. Update sequencing: select the next instruction address.

Real processors overlap these stages through pipelining and may execute instructions internally out of order. Nevertheless, they must normally appear to software to obey the ISA’s ordering and exception rules.

Stored-program processor and memory transfers CPU Control unit ALU and registers Memory Instructions Data Address and read/write control Read response: instruction or data Write data The CPU initiates an access; memory returns read information or accepts write data.
Correct direction of address, control, read-response and write-data transfers in a stored-program computer
Figure: Correct direction of address, control, read-response and write-data transfers in a stored-program computer

Figure: Direction of principal transfers between a CPU and memory. Address and command signals originate at the CPU; read information returns from memory, while write data travels to memory.

4. Von Neumann and Harvard Models

4.1 Von Neumann model

In a von Neumann architecture, instructions and data occupy one logical memory space and use a shared transfer structure in the classical model. This provides flexibility because memory capacity can be allocated dynamically between code and data.

A shared path may limit simultaneous instruction and data transfers. This limitation is commonly called the von Neumann bottleneck. Caches, wider buses, prefetching and pipelining reduce its practical impact but do not eliminate the underlying need to move information between processing and memory resources.

4.2 Harvard model

A Harvard architecture provides distinct instruction and data memories or address spaces, typically with separate access paths. It can fetch an instruction while accessing data, improving bandwidth and timing predictability. However, separate spaces may complicate programming and memory utilization.

4.3 Modified Harvard designs

Many contemporary processors are not pure examples of either model. A common modified Harvard organization has separate instruction and data caches near each CPU core but a unified main-memory address space. This captures parallel access benefits while preserving a conventional software memory model.

PropertyClassical von NeumannHarvardModified Harvard
Instruction/data spacesUnifiedSeparateOften unified at main memory
Access pathsSharedSeparateSeparate near the core
Simultaneous accessesRestricted by shared pathNaturally supportedCommonly supported through caches
Typical useGeneral conceptual modelDSPs and MCUsModern CPUs and SoCs

Security creates an additional reason to distinguish code from data. Memory-protection mechanisms may mark regions as executable or non-executable, reducing the possibility that injected data will be executed as instructions.

5. Measuring Processor Performance

Clock frequency alone does not determine performance. A basic execution-time model is:

TCPU = (IC × CPI) ÷ f

where:

  • TCPU is CPU execution time in seconds;
  • IC is the dynamic instruction count;
  • CPI is the average clock cycles per instruction;
  • f is clock frequency in cycles per second, or hertz.

The model applies to the measured program under stated conditions. Instruction count depends on the algorithm, compiler and ISA, while CPI depends on microarchitecture and workload behavior. It does not by itself include external waiting time unless such effects are reflected in CPI.

If instruction class i represents fraction pi of executed instructions and requires an average CPIi, then:

CPIavg = ∑ pi CPIi, where ∑ pi = 1

Worked Example 1: Execution time

A program executes 1.2 × 10⁹ instructions. The instruction mix is 50% at 1 cycle, 30% at 2 cycles and 20% at 4 cycles. The processor frequency is 2.4 GHz.

CPIavg = (0.50 × 1) + (0.30 × 2) + (0.20 × 4) = 1.90
TCPU = (1.2 × 109 × 1.90) ÷ (2.4 × 109) = 0.95 s

The numerical result is valid under the assumption that the listed CPI values already include the relevant pipeline, cache and memory effects.

Speedup and Amdahl’s law

Optimizing only part of a workload limits total improvement. If fraction p of original execution time is improved by factor s, the overall speedup is:

S = 1 ÷ [(1 − p) + (p ÷ s)]

This form of Amdahl’s law assumes the unaffected fraction remains unchanged and that fractions are measured using the original execution time.

Example: If 80% of execution time is accelerated fourfold:

S = 1 ÷ [0.20 + (0.80 ÷ 4)] = 1 ÷ 0.40 = 2.5

A fourfold accelerator therefore produces only a 2.5-fold overall speedup.

6. Evolution of Microprocessors

Processor history is often described in generations, but boundaries overlap and should not be treated as universal standards.

Broad periodRepresentative developmentArchitectural significance
Early 1970s4-bit processorsSingle-chip CPU for calculators and control
Mid-to-late 1970s8-bit processorsLarger instruction sets and broader embedded use
Late 1970s–1980s16-bit processorsLarger address spaces and improved software capability
1980s–1990s32-bit processorsWorkstations, personal computers, deeper pipelines and caches
1990s–2000sSuperscalar and out-of-order executionMultiple instructions processed per cycle internally
2000s–2010s64-bit and multicore systemsLarger address spaces and thread-level parallelism
2010s onwardHeterogeneous SoCs and acceleratorsCPUs combined with GPUs, DSPs, AI and security engines
Contemporary systemsChiplets and advanced packagingMultiple specialized dies connected within a package

6.1 Integration and Moore’s law

Moore’s law is the historical observation that economically producible transistor counts on integrated circuits tend to increase exponentially, with an approximate doubling over a characteristic period. A simplified model is:

N(t) = N0 × 2t/T

where N0 is the transistor count at the initial time, t is elapsed time and T is the assumed doubling period. The model is empirical, not a law of physics. The doubling period has varied, and transistor count does not imply proportional gains in speed or energy efficiency.

Example: Starting from 10 billion transistors and assuming a 2.5-year doubling period, ten years corresponds to four doublings:

N(10) = 10 × 210/2.5 = 10 × 16 = 160 billion transistors

This is a projection under the assumed trend, not a manufacturing guarantee.

6.2 The power wall

Approximate dynamic switching power in CMOS circuits is:

Pdynamic ≈ α C V2 f

where α is average switching activity, C is effective switched capacitance in farads, V is supply voltage in volts and f is switching frequency in hertz. The result is in watts. The approximation concerns dynamic power; total chip power also includes leakage, short-circuit and other losses.

Because power depends approximately on the square of voltage, voltage reduction can substantially reduce switching power. However, lower voltage may also reduce reliable maximum frequency. Thermal and energy limits curtailed the earlier strategy of obtaining performance mainly through rising clock frequencies, encouraging multicore and specialized accelerators.

7. CISC, RISC and Their Convergence

7.1 Complex instruction set computing

CISC designs historically emphasized rich instruction sets, many addressing modes and instructions capable of performing multi-step operations. The approach could improve code density and support compatibility across processor generations.

7.2 Reduced instruction set computing

RISC designs historically emphasized regular instruction encodings, load/store operation, many registers and instructions suited to efficient pipelining. Memory is generally accessed by explicit load and store instructions, while arithmetic operates mainly on registers.

DimensionTraditional CISC tendencyTraditional RISC tendency
Instruction complexityMore variedMore regular
Instruction lengthOften variableOften fixed or constrained
Memory operandsMore widely supportedUsually load/store
Control realizationHistorically more microcodedHistorically more directly controlled
Code densityOften highDepends on ISA and compressed forms

These are tendencies, not rigid laws. Modern CISC processors may decode complex instructions into simpler internal operations. Modern RISC processors may include vector, cryptographic and compressed instructions. Performance depends on the complete system—compiler, caches, prediction, execution width, memory hierarchy and power constraints—not on the label alone.

8. Multicore and Heterogeneous Systems

Increasing core count improves potential throughput, but software must expose parallel work. Shared-memory contention, synchronization, communication and serial code constrain scaling.

A heterogeneous architecture combines unlike processing resources. A mobile SoC might contain:

  • high-performance CPU cores for demanding serial tasks;
  • energy-efficient CPU cores for background work;
  • a GPU for graphics and parallel arithmetic;
  • a DSP for audio and radio signals;
  • a neural processing unit for machine-learning inference;
  • cryptographic and media accelerators.

The operating system, runtime and compiler must assign tasks to appropriate engines. This creates opportunities for energy efficiency but raises programming complexity, data-movement overhead and verification challenges.

AI accelerators illustrate this trend. Matrix-oriented hardware can execute neural-network inference efficiently, but it does not replace general-purpose processors. CPUs remain essential for control flow, operating systems, exception handling and workloads not suited to structured parallelism.

9. Illustrative Case: Wearable Communication Monitor

Background

An engineering team is designing a battery-powered wearable device that monitors a biosignal, detects abnormal patterns, encrypts records and communicates with a smartphone. This is an illustrative case.

Problem

The first prototype uses a general-purpose processor. Signal filtering consumes 45% of execution time, encryption and radio preparation consume 20%, control software consumes 25%, and operating-system services consume 10%. Battery life and response latency are inadequate.

Analysis

A candidate SoC includes a DSP that performs signal processing six times faster and a cryptographic accelerator that performs the encryption-related work four times faster. Assuming other portions remain unchanged, normalized execution time becomes:

Tnew = (0.45 ÷ 6) + (0.20 ÷ 4) + 0.25 + 0.10 = 0.475

Thus:

S = 1 ÷ 0.475 ≈ 2.11

The result is lower than either accelerator’s individual speedup because 35% of the original workload is unaffected. It also excludes possible data-transfer and accelerator-setup overheads; these must be measured in the prototype.

Approach and Solution

The team selects the heterogeneous SoC and assigns filtering to the DSP, encryption to dedicated hardware and control tasks to the CPU. Double buffering allows one signal block to be acquired while another is processed. Access controls isolate encryption keys, and firmware updates require authenticated signatures.

Outcome

The execution model predicts approximately 2.11× performance improvement before overhead. Laboratory measurements must verify latency, energy per sample, radio behavior and worst-case timing. The design also benefits from reduced component count because the SoC integrates interfaces on one die.

Learning Points

  • Accelerators improve only the workload portions assigned to them.
  • Amdahl’s law provides an initial performance bound.
  • Data movement and setup costs must be included in final evaluation.
  • Integration can reduce size and power but increases dependence on a particular vendor platform.
  • Security, updateability and privacy are architectural requirements, not optional additions.

10. Design Challenges and Professional Considerations

10.1 Performance, energy and cost

A processor must be evaluated against workload requirements rather than peak specifications. Useful measures include execution time, throughput, worst-case latency, energy per task, memory capacity, package cost and toolchain maturity.

10.2 Memory and communication limits

Processors can remain idle while waiting for memory. Cache hierarchies reduce average latency but introduce coherence, predictability and verification issues. Accelerators may also lose their advantage if moving data costs more time or energy than computation.

10.3 Reliability and security

Modern processors face transient faults, manufacturing variation, malicious software and hardware attacks. Protection may involve privilege levels, memory protection, secure boot, error-correcting memory and cryptographic isolation. Speculative execution and shared microarchitectural resources can create side channels even when architectural access rules are correct.

10.4 Ethics, governance and sustainability

Processor selection influences privacy, safety and environmental impact. Engineers should minimize unnecessary collection of personal data, support secure updates and document safety assumptions. Proprietary accelerators can create vendor lock-in, while undocumented hardware may obstruct security auditing.

Manufacturing advanced devices consumes energy, water and scarce materials. Longer product support, repairability and energy-efficient operation can reduce lifecycle impact. Export controls and communication-security regulations may also affect the use of high-performance processors and cryptographic hardware.

10.5 Engineering best practices

Professional processor evaluation should:

  1. characterize representative workloads;
  2. distinguish ISA requirements from microarchitectural preferences;
  3. measure complete application performance rather than clock rate alone;
  4. include memory, communication and accelerator overhead;
  5. evaluate average and worst-case timing where real-time behavior matters;
  6. budget power and thermal limits under realistic operating conditions;
  7. assess toolchains, documentation, lifecycle support and security updates;
  8. verify whether advertised integration is single-die SoC or multi-die package integration.

Chapter Summary

A microprocessor is an integrated programmable processing device, while the CPU is the principal general-purpose execution unit and a core is an individual instruction-execution engine. Architecture specifies software-visible behavior; organization describes internal realization; implementation concerns physical construction.

Stored-program computers encode instructions in memory and execute them through fetch, decode and execution activities. Von Neumann systems conceptually share instruction and data storage, while Harvard systems separate them. Modified Harvard designs combine separate near-core paths with a unified main-memory model.

Processor evolution progressed from early 4-bit devices to 64-bit multicore and heterogeneous systems. Moore’s law describes a historical transistor-count trend, not guaranteed performance growth. Power, memory and parallelism limits encouraged multicore designs and specialized accelerators. CISC and RISC originated from different design priorities, but modern implementations combine features from both traditions. Effective engineering requires workload-based evaluation, correct use of performance models, attention to security and consideration of lifecycle and environmental impacts.

Key Terms

Architecture: The programmer-visible specification of a processor.

CPU: The principal general-purpose instruction-executing component of a computer.

Microprocessor: An integrated programmable processor primarily intended to perform CPU functions.

Microcontroller: A chip integrating a CPU, memories and embedded-control peripherals.

ISA: The instruction set architecture defining instructions, registers and software-visible behavior.

Microarchitecture: The internal organization used to implement an ISA.

Implementation: The physical realization of a processor in circuits, silicon and packaging.

Core: An independently operating instruction-execution engine.

Register: Small, fast storage located within a processor.

Stored-program concept: The representation and storage of program instructions in memory.

Von Neumann architecture: A model with unified instruction and data storage.

Harvard architecture: A model with distinct instruction and data memories or paths.

CISC: An ISA tradition emphasizing comparatively rich and varied instructions.

RISC: An ISA tradition emphasizing regular operations suited to efficient pipelines.

DSP: A processor optimized for numerical operations on sampled signals.

GPU: A processor optimized for high-throughput parallel workloads.

SoC: A system integrating major functional blocks on a single semiconductor die.

SiP: A package containing multiple dies or components forming a system.

Amdahl’s law: A relationship showing how an unimproved workload fraction limits total speedup.

Moore’s law: An empirical historical trend of increasing integrated-circuit transistor counts.

Review Questions

Short Answer Questions

  1. Define an instruction set architecture.
  2. Distinguish a CPU from a processor core.
  3. What is the stored-program concept?
  4. State one difference between an SoC and an SiP.
  5. Why is clock frequency alone an inadequate performance measure?

Long Answer Questions

  1. Explain architecture, organization and implementation with suitable processor examples.
  2. Compare von Neumann, Harvard and modified Harvard memory organizations.
  3. Trace the evolution of microprocessors from early single-chip CPUs to heterogeneous systems.
  4. Critically compare the traditional CISC and RISC design philosophies.
  5. Discuss the effects of power, memory latency and parallelism on contemporary processor design.

Analytical / Application Questions

  1. A program executes 800 million instructions with an average CPI of 1.5 on a 2 GHz processor. Calculate CPU execution time and state the model’s assumptions.
  2. An accelerator improves 70% of a workload by a factor of five. Apply Amdahl’s law to determine overall speedup.
  3. Select and justify an appropriate combination of CPU, MCU, DSP, GPU or SoC resources for a real-time camera that performs image capture, compression, object detection and encrypted communication.

Multiple Choice Questions with Answers

Question 1

Which processor property belongs primarily to the instruction set architecture rather than the microarchitecture?

A. Pipeline depth

B. Programmer-visible registers

C. Transistor layout

D. Cache replacement circuitry

Correct Answer: B. Programmer-visible registers

Question 2

During a conventional memory read initiated by a CPU, which direction is correct?

A. Address and read control travel from memory to the CPU

B. Read data and address both travel from the CPU to memory

C. Address and read control travel from the CPU to memory, and read data returns to the CPU

D. All signals travel only from memory to the CPU

Correct Answer: C. Address and read control travel from the CPU to memory, and read data returns to the CPU

Question 3

What principally distinguishes a classical Harvard architecture from a classical von Neumann architecture?

A. Harvard architecture requires a GPU

B. Harvard architecture uses distinct instruction and data memories or paths

C. Von Neumann architecture cannot execute stored programs

D. Von Neumann architecture has no registers

Correct Answer: B. Harvard architecture uses distinct instruction and data memories or paths

Question 4

A program executes 600 million instructions at an average CPI of 1.5 on a 3 GHz processor. What is its CPU execution time under the basic execution-time model?

A. 0.20 s

B. 0.30 s

C. 0.90 s

D. 3.00 s

Correct Answer: B. 0.30 s

Question 5

Which statement correctly characterizes Moore’s law?

A. It guarantees that clock frequency doubles every year

B. It is a physical law requiring constant power density

C. It is an empirical trend concerning integrated-circuit transistor counts

D. It states that every parallel program achieves linear speedup

Correct Answer: C. It is an empirical trend concerning integrated-circuit transistor counts

Question 6

Which description correctly distinguishes an SoC from an SiP?

A. An SoC integrates major functions on one die, whereas an SiP can combine multiple dies in one package

B. An SoC must contain several packages, whereas an SiP contains one transistor

C. An SiP is always software-compatible with every SoC

D. There is no technical distinction between the terms

Correct Answer: A. An SoC integrates major functions on one die, whereas an SiP can combine multiple dies in one package

Question 7

A fraction 0.80 of a workload is accelerated by a factor of 4, while the remainder is unchanged. What overall speedup does Amdahl’s law predict?

A. 1.25

B. 2.00

C. 2.50

D. 4.00

Correct Answer: C. 2.50

Question 8

Which feature is most strongly associated with a DSP?

A. Efficient multiply–accumulate operations

B. Mechanical instruction storage

C. Absence of arithmetic hardware

D. Mandatory use as a desktop operating-system processor

Correct Answer: A. Efficient multiply–accumulate operations

Question 9

Which statement best describes modern CISC and RISC processors?

A. All CISC processors lack pipelines

B. All RISC instructions execute in exactly one cycle

C. The two traditions have converged in many implementation features

D. RISC processors cannot include vector instructions

Correct Answer: C. The two traditions have converged in many implementation features

Question 10

Using Pdynamic ≈ αCV2f, what is the dynamic-power ratio after voltage is reduced to 80% of its original value while switching activity, capacitance and frequency remain unchanged?

A. 0.40

B. 0.64

C. 0.80

D. 1.25

Correct Answer: B. 0.64

Microprocessor Architecture
Chapter 1 of 15