101: Matt Godbolt
Matt Godbolt joins to talk about early microprocessors, working in the games industry, performance optimization on modern x86 CPUs, and the compute infrastructure that powers the financial trading industry. We also discuss Matt’s work on bringing YouTube to early mobile phones, and the origin story of Compiler Explorer, Matt’s well-known open source project and website.
Matt’s Site: https://xania.org/
Matt on LinkedIn: https://www.linkedin.com/in/godbolt/
Matt on X: https://twitter.com/mattgodbolt
Matt on Mastodon: https://hachyderm.io/@mattgodbolt
Matt on Bluesky: https://bsky.app/profile/mattgodbolt.bsky.social
Show Notes
- Welcome Matt (00:01:51)
- Jonathan Yu Mastodon Post (00:02:30)
- Matt’s Introduction to Computing (00:03:42)
- Sinclair ZX Spectrum (00:04:04)
- BASIC (00:04:42)
- Z80 Processor (00:05:33)
- Playing Computer Games (00:06:08)
- Writing Computer Games (00:06:44)
- Writing Assembly with a Pencil and Paper (00:07:51)
- BBC Micro (00:09:53)
- Microcomputers (00:10:02)
- Acorn Computers (00:11:02)
- BBC Master (00:11:56)
- MOS 6502 (00:12:02)
- RISC (00:12:11)
- Type-In Programs (00:13:09)
- BBC BASIC Assembler (00:14:24)
- Acorn Archimedes (00:14:39)
- 6502 Unspecified Opcodes (00:15:11)
- Apple I & II (00:18:24)
- Nintendo Entertainment System (NES) (00:18:26)
- Bender (Futurama) (00:18:32)
- The Terminator (00:18:35)
- 6502 vs. Z80 Price Comparison (00:18:50)
- 6502 vs. Z80 Microarchitecture (00:21:13)
- Z80 Rotate Instruction (00:24:08)
- Read-Modify-Write Instructions (00:24:24)
- Programmable Logic Array (PLA) (00:25:29)
- Memory Mapped Hardware (00:26:04)
- Encrypting Games (00:26:18)
- Obfuscating Decryption using Unspecified Instructions (00:28:29)
- Writing a 6502 Simulator in 6502 Assembly (00:30:08)
- Writing a 6502 Emulator in Javascript (00:30:27)
- Zero Page Addressing (00:31:13)
- Non-Maskable Interrupts (NMI) (00:32:55)
- 6502 Addressing Modes (00:33:43)
- Register Windows (00:34:29)
- Microarch Club Episode with Robert Garner (00:34:45)
- The Rising Complexity of Computing (00:35:29)
- Tom Lyon (00:36:33)
- Sun Microsystems (00:36:37)
- Abstractions as a Tool (00:37:06)
- Going to University (00:38:17)
- Studying Physics (00:38:45)
- Distance Learning University Lectures (00:39:37)
- Discovering the Internet (00:40:28)
- Atari (00:41:08)
- Amiga (00:41:09)
- The Acorn RISC Machine (The First ARM Chip) (00:41:20)
- Bill Mensch (00:41:57)
- Internet Relay Chat (IRC) (00:44:21)
- Writing an IRC Client in ARM Assembly (00:44:40)
- Learning C (00:45:52)
- GCC (00:46:36)
- Multi-User Dungeon (MUD) (00:46:47)
- Applying to a Games Company (00:48:02)
- Argonaut Games (00:50:07)
- Super FX Chip (00:50:30)
- Super Nintendo Entertainment System (SNES) (00:50:34)
- Jez San (00:50:52)
- Direct Memory Access (DMA) (00:52:02)
- Argonaut RISC Core (ARC) (00:52:14)
- Beginning of Games Consoles (00:52:39)
- Hitachi SH-4 (00:53:00)
- Dreamcast (00:53:04)
- Multiple Issue (00:53:22)
- Pipelining (00:53:25)
- Argonaut Games Red Dog: Superior Firepower (00:54:06)
- Instruction Level Parallelism (ILP) (00:55:13)
- Out-of-Order Processing (00:55:35)
- Intel U-Pipe & V-Pipe (00:55:38)
- Argonaut Blazing Renderer (BRender) (00:55:51)
- Intel Pentium Pro (00:57:03)
- Intel Pentium Klamath (00:57:14)
- Intel VTune (00:58:02)
- Dual-Issue (00:58:38)
- Very Long Instruction Word (VLIW) (00:58:40)
- Data Hazards (00:58:48)
- Carl Graham (00:59:01)
- Writing Games for Multiple Platforms (01:00:01)
- PlayStation (01:00:58)
- Xbox (01:01:20)
- PlayStation 2 (01:01:59)
- DirectX (01:02:43)
- Component Object Model (COM) (01:02:55)
- Porting from Xbox to PlayStation 2 (01:04:55)
- Blending Modes (01:06:45)
- Current State of Game Engine Development (01:07:51)
- Unreal Engine (01:07:58)
- Deciding to Start a Company (01:08:49)
- Optimizing C++ Build Time (01:09:48)
- ProFactor (01:10:56)
- Rockstar Games (01:11:45)
- Developing a C++ Code Formatter (01:13:03)
- Applying to Google (01:13:48)
- DeepMind (01:14:17)
- Making YouTube Work on Early Mobile Phones (01:14:27)
- Hardware MPEG Decoders (01:15:07)
- YouTube Infrastructure (01:15:33)
- J2ME (01:16:34)
- Android (01:16:44)
- Working at Large vs. Small Companies (01:17:02)
- Learning at Google Scale (01:18:00)
- Moving to Finance Industry (01:20:23)
- Moving to Chicago (01:21:50)
- Performance Optimization in Finance (01:21:59)
- Reverse Engineering How Intel Processors Work (01:24:08)
- Resources for Performance Analysis (01:25:28)
- Agner Fog (01:25:42)
- Bjarne Stroustrup: Tour of C++ (01:26:39)
- Charles Petzold: The Annotated Turing (01:27:13)
- Register Rename Buffer (01:28:31)
- Agner Fog’s Open Source Tooling (01:28:46)
- uops.info (01:29:02)
- Branch Predictor Reverse Engineering (01:30:19)
- Branch Target Buffer (01:31:54)
- Meltdown & Spectre Paper Attribution (01:32:57)
- Compute Infrastructure in Finance (01:33:29)
- Low Latency Trading Infrastructure (01:35:29)
- Executing Orders Over TCP (01:35:56)
- Market Data Over Multicast (01:38:07)
- Lead-Lag Trades (01:40:18)
- FPGAs for Accelerating Trading (01:41:49)
- Engineering Organization Structure in Trading Firms (01:43:45)
- cocotb (01:46:13)
- Updating Trading Hardware (01:47:05)
- Tilera RISC CPU (01:50:45)
- Propagation Delay (01:54:46)
- Number of Cycles in an Integer Division (01:55:26)
- Hashmap Performance Optimization (01:56:40)
- Rising Complexity in Modern Processors (01:58:11)
- Microarch Club Episode with Thomas Sohmers (02:01:06)
- CPU Cache Levels (02:02:34)
- Impact of New Workloads on Microarchitecture (02:03:34)
- Groq & LPUs (02:04:00)
- Branch Predictor Hints (02:05:11)
- Just in Time (JIT) Compilation (02:05:56)
- Profile Guided Optimization (PGO) (02:06:16)
- Tail Latency (02:08:42)
- Compiler Explorer Origin Story (02:10:22)
- C++ Ranged For Loops (02:11:15)
- tmux (02:14:30)
- node.js (02:15:13)
- Read Evaluate Print Loop (REPL) (02:17:43)
- Remote Code Execution (RCE) (02:19:21)
- Hosting on Personal Domain (02:20:30)
- Godbolt as a Verb (02:21:01)
- Two’s Complement Podcast (02:22:10)
- Ben Rady (02:23:12)
- Getting Feedback on Podcasts (02:25:45)
- Podcasts as a Hiring Tool (02:26:52)
- Getting a Job via Open Source (02:27:15)
Transcript
Coming soon.