Seyed Masoud Hosseini · Overview · Study log · Ideas · Transcript · RSS feed

Digital Design & Computer Architecture · Lecture 9 of 37 · 1:50:31

Lecture 7: Von Neumann Model & Instruction Set Architectures

Digital Design and Comp. Arch. - L7: Von Neumann Model & Instruction Set Architectures (Spring 2025) on YouTube

Study guide

What this lecture covers

This lecture opens the computer-architecture portion of the course after three weeks of digital design. It asks how a computer actually executes a program: what components does it need, how does it represent instructions as bits, and how does it step through them one at a time? The lecture builds from Von Neumann's 1946 model up to concrete instruction encodings in two example instruction set architectures (ISAs), LC-3 and MIPS, and ends by walking through how a single instruction moves through fetch, decode, and execute stages in hardware.

By the end, you can describe the five components of the Von Neumann model, explain memory addressing concepts (address space, addressability, byte vs. word addressing, endianness), read and hand-encode simple LC-3 and MIPS instructions, and trace how the LC-3 microarchitecture executes an ADD or LDR instruction using registers, an ALU, and a finite state machine controller.

Key ideas

  • Von Neumann model: a computing model with five components — memory, a processing unit, input, output, and a control unit — where memory holds both instructions and data with no inherent distinction between them.
  • Stored-program and sequential execution: the two defining properties of Von Neumann machines — instructions live in memory as data, and the program counter normally advances sequentially except for control-flow instructions.
  • Address space and addressability: address space is the number of uniquely addressable locations; addressability is how many bits each address refers to (for example LC-3 is word-addressable with 16-bit words, MIPS is byte-addressable).
  • Registers as fast temporary storage: a small register file sits next to the ALU so intermediate results don't need slow round-trips to main memory.
  • Opcode and operand: every instruction encodes what to do (opcode) and what to do it to (operand), with the exact bit layout defined by the ISA specification.
  • Endianness: big-endian stores the most significant byte at the lowest address, little-endian stores the least significant byte there; it only matters when systems using different conventions communicate.
  • Instruction processing cycle: fetch, decode, evaluate address, fetch operand, execute, store result — not every instruction uses every phase (for example ADD skips address evaluation).
  • Control-flow instructions: instructions like jump can load a new value directly into the program counter, letting execution deviate from strict sequential order.

Walkthrough

From digital design to computer architecture (4:50)

The lecture marks the transition from digital design (transistors, gates, sequential circuits, timing) to computer architecture, and introduces the plan: the Von Neumann model today, instruction set architectures using LC-3 and MIPS as running examples, and assembly programming starting the next lecture, before microarchitecture begins the following week.

The Von Neumann model (9:56)

John Von Neumann's 1946 model is introduced as the dominant (though not only) model for general-purpose computing: memory, a processing unit, input, output, and a control unit. Memory stores programs and data indistinguishably as bits; the control unit is what decides, based on context, whether a given memory location is being treated as an instruction or as data.

Memory: addressing and endianness (15:03)

The lecture defines address space (LC-3: 2^16, MIPS: 2^32) and addressability (bit-, byte-, or word-addressable), and works through examples of word-addressable versus byte-addressable memory layouts. It also covers big-endian versus little-endian byte ordering — using Gulliver's Travels' "Big-Endian"/"Little-Endian" egg-breaking factions as the historical reference for the terms — and explains that the convention only matters when systems with different endianness exchange data.

The processing unit and registers (30:13)

Building on the previously designed ALU, the lecture introduces the register file as fast temporary storage close to the ALU, contrasting it with slow, large main memory. LC-3 has 8 general-purpose registers (R0-R7, 3-bit IDs); MIPS has 32 (r0-r31, 5-bit IDs), which makes MIPS registers cheaper to access but its instruction encodings larger. Register allocation — deciding what lives in registers versus memory — is described as a compiler's job in high-level languages, or the assembly programmer's job otherwise.

The control unit and architectural state (37:21)

The control unit is described as the "conductor" that sequences instruction execution using the instruction register (holds the current instruction's bits) and the program counter (holds the address of the current or next instruction). Together, memory, registers, and the program counter make up the architectural state visible to the programmer. The lecture previews the full LC-3 Von Neumann datapath diagram, pointing out the ALU, register file, instruction register, program counter, control finite state machine, and the tri-state buffer that gates ALU results onto the processor bus.

Instruction formats and encoding (1:07:34)

Every instruction is built from an opcode (what to do) and operands (what to do it to). The lecture hand-encodes an LC-3 ADD instruction (4-bit opcode, three register fields) and a byte-addressable LDR (load register) instruction using base-plus-offset addressing, then contrasts them with the equivalent MIPS R-type (register-register, with an opcode plus function field) and I-type (immediate) encodings, which use more bits for a larger register file and a 16-bit immediate field.

The instruction processing cycle (1:24:47)

The lecture defines the six possible phases of executing an instruction — fetch, decode, evaluate address, fetch operand, execute, store result — and notes that not every instruction needs every phase (ADD skips address evaluation, LDR skips the ALU execute step). It then walks the LC-3 microarchitecture's finite state machine through fetching an instruction (loading the memory address register from the program counter, reading memory into the memory data register, then into the instruction register), decoding it via a 4-to-16 decoder on the opcode bits, and executing ADD and LDR by routing values through the ALU, register file, and processor bus under specific control signals.

Changing the sequence of execution (1:46:05)

The lecture closes with control instructions, which load a new value into the program counter instead of letting it increment sequentially. It shows LC-3's unconditional jump (JMP, register addressing: PC gets the value in a base register) and MIPS's jump (J-type: opcode plus a 26-bit target combined with the top bits of the incremented PC and multiplied by four for word alignment), noting these are what let programs implement branches, function calls, and returns instead of running strictly instruction-after-instruction.

Before you watch

  • Be comfortable with the ALU, register, decoder, and finite state machine designs from the digital design portion of the course, since this lecture reuses them directly.
  • Review binary and hexadecimal number representation, used throughout for instruction encoding.
  • Recall tri-state buffers and bus-based data movement, used to explain how values move between the ALU, memory, and register file on the processor bus.

Check your understanding

  1. Why does memory contain no inherent distinction between "instructions" and "data," and what determines how a given bit pattern is interpreted?
  2. If a memory is word-addressable with a 16-bit word versus byte-addressable with an 8-bit byte, how does the address needed to reach the same data element change?
  3. Why does a big-endian and little-endian system only run into trouble when they communicate with each other, not when each operates on its own?
  4. Which phases of the instruction processing cycle does an ADD instruction skip, and which does an LDR (load register) instruction skip? Why?
  5. Why do MIPS instructions need more encoding bits for registers than LC-3 instructions, and what tradeoff does that reflect?

From the YouTube description

Digital Design and Computer Architecture, ETH Zürich, Spring 2025 (https://safari.ethz.ch/ddca/spring2025/)

Lecture 7: Von Neumann Model & Instruction Set Architectures
Lecturer: Prof. Onur Mutlu
Date: 13 March 2025

Lecture 7 Slides (pptx): https://safari.ethz.ch/ddca/spring2025/lib/exe/fetch.php?media=onur-ddca-2025-lecture7-vonneumann-isa-afterlecture.pptx
Lecture 7 Slides (pdf): https://safari.ethz.ch/ddca/spring2025/lib/exe/fetch.php?media=onur-ddca-2025-lecture7-vonneumann-isa-afterlecture.pdf

Recommended Reading:
====================
Intelligent Architectures for Intelligent Computing Systems
https://people.inf.ethz.ch/omutlu/pub/intelligent-architectures-for-intelligent-computingsystems-invited_paper_DATE21.pdf

A Modern Primer on Processing in Memory
https://people.inf.ethz.ch/omutlu/pub/ModernPrimerOnPIM_springer-emerging-computing-bookchapter21.pdf

RowHammer: A Retrospective
https://people.inf.ethz.ch/omutlu/pub/RowHammer-Retrospective_ieee_tcad19.pdf

RECOMMENDED LECTURE VIDEOS & PLAYLISTS:
========================================
Computer Architecture Fall 2021 Lectures Playlist:
https://www.youtube.com/watch?v=4yfkM_5EFgo&list=PL5Q2soXY2Zi-Mnk1PxjEIG32HAGILkTOF

Computer Architecture Fall 2022 Lectures Playlist:
https://www.youtube.com/watch?v=BIpPTqHK-Lc&list=PL5Q2soXY2Zi-cAls3cyauNzM7-74Eq31O

Digital Design and Computer Architecture Spring 2022 Livestream Lectures Playlist:
https://www.youtube.com/watch?v=cpXdE3HwvK0&list=PL5Q2soXY2Zi97Ya5DEUpMpO2bbAoaG7c6

Digital Design and Computer Architecture Spring 2021 Livestream Lectures Playlist:
https://www.youtube.com/watch?v=LbC0EZY8yw4&list=PL5Q2soXY2Zi_uej3aY39YB5pfW4SJ7LlN

Featured Lectures:
https://www.youtube.com/watch?v=jVYCchBGNVc&list=PL5Q2soXY2Zi8VrmOTz44l2WupethSdh-M&index=1

Interview with Professor Onur Mutlu:
https://www.youtube.com/watch?v=8ffSEKZhmvo&list=PL5Q2soXY2Zi8VrmOTz44l2WupethSdh-M&index=9

The Story of RowHammer Lecture:
https://www.youtube.com/watch?v=sgd7PHQQ1AI&list=PL5Q2soXY2Zi8D_5MGV6EnXEJHnV2YFBJl&index=39

Accelerating Genome Analysis Lecture:
https://www.youtube.com/watch?v=r7sn41lH-4A&list=PL5Q2soXY2Zi8D_5MGV6EnXEJHnV2YFBJl&index=41

Memory-Centric Computing Systems Tutorial at IEDM 2021:
https://www.youtube.com/watch?v=H3sEaINPBOE&list=PL5Q2soXY2Zi8D_5MGV6EnXEJHnV2YFBJl&index=35

Intelligent Architectures for Intelligent Machines Lecture:
https://www.youtube.com/watch?v=GTieZPY4Wmc&list=PL5Q2soXY2Zi8D_5MGV6EnXEJHnV2YFBJl&index=38

Computer Architecture Fall 2020 Lectures Playlist:
https://www.youtube.com/watch?v=c3mPdZA-Fmc&list=PL5Q2soXY2Zi9xidyIgBxUz7xRPS-wisBN

Digital Design and Computer Architecture Spring 2020 Lectures Playlist:
https://www.youtube.com/watch?v=AJBmIaUneB0&list=PL5Q2soXY2Zi_FRrloMa2fUYWPGiZUBQo2

Public Lectures by Onur Mutlu, Playlist:
https://www.youtube.com/watch?v=kgiZlSOcGFM&list=PL5Q2soXY2Zi8D_5MGV6EnXEJHnV2YFBJl

Computer Architecture at Carnegie Mellon Spring 2015 Lectures Playlist:
https://www.youtube.com/watch?v=zLP_X4wyHbY&list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq

Rethinking Memory System Design Lecture @stanfordonline :
https://www.youtube.com/watch?v=F7xZLNMIY1E&list=PL5Q2soXY2Zi8D_5MGV6EnXEJHnV2YFBJl&index=4

← Lecture 6: Timing & Verification II · Lecture 8: Instruction Set Architectures II →