110: Rick Altherr
Rick Altherr joins to talk about working on hardware performance analysis tools at Apple during the PowerPC to x86 transition, building flight control software for internet satellites at Google, discovering vulnerabilities in baseboard management controllers, and much more. We also spend an extended portion of the conversation on Rick’s current work in quantum computing, including comparing and contrasting with classical computing, and examining some of the challenges of interfacing with these machines today.
Rick’s Site: https://www.kc8apf.net/
Rick on LinkedIn: https://www.linkedin.com/in/mxshift/
Rick on Mastodon: https://social.treehouse.systems/@mxshift
Rick on GitHub: https://github.com/mx-shift
Rick’s Mentoring Sign-Up: https://calendly.com/mxshift
Show Notes
- Welcome Rick (00:01:45)
- Rick on On the Metal Podcast (00:02:02)
- The Amp Hour Podcast (00:02:12)
- Introduction to Computing (00:02:44)
- Growing up in a Family of Auto Mechanics (00:03:01)
- Wurlitzer Hope-Jones Unit Orchestra (00:03:18)
- Hanging out in the Computer Store (00:04:17)
- Intel 80286 (00:04:38)
- Working at the Local ISP (00:05:03)
- Choosing Computer Science over Computer Engineering (00:05:34)
- Intel 8086 (00:05:54)
- Intel 80386 (i386) (00:06:12)
- BASIC (00:06:19)
- Exposure to Computing Growing Up in the Midwest (00:06:40)
- QBasic (00:06:57)
- DOS (00:06:59)
- Cisco CCNA Courses (00:08:17)
- TI Calculators (00:09:20)
- Decision to Study Computer Science (00:10:35)
- Computer Science Curriculum at University of Cincinnati (00:12:19)
- Nathanael Huffman on the Microarch Club (00:13:04)
- Co-Op Program at University of Cincinnati (00:13:06)
- Getting an Internship at Apple (00:13:27)
- Working on Performance Analysis at Apple (00:16:24)
- Hardware Performance Counters (00:16:38)
- PowerPC 970 (00:16:39)
- Writing the IBM Performance Counter Documentation (00:17:11)
- Power Mac G5 (00:17:30)
- Out of Order Processor (00:17:37)
- CHUD Tools (00:18:03)
- C.H.U.D. (1984) (00:18:51)
- Apple Transition from PowerPC to x86 (00:19:51)
- Migrating Tooling to x86 (00:20:56)
- Cycle Accurate Simulation (00:21:27)
- Endianness (00:22:13)
- Beginning of iPhone Development (00:22:28)
- ARM (00:22:34)
- Secrecy at Apple (00:22:59)
- Working with Adobe on Photoshop (00:25:05)
- Rock Band Performance Bug (00:25:30)
- System X (G5 Supercomputing Cluster) (00:26:10)
- Apple Instruments (00:27:50)
- Decision to Join Google (00:28:11)
- Analyzing Performance of Single Machine vs. Data Center Scale Systems (00:29:23)
- Internal Tooling at Google (00:30:35)
- Google Server System Software (00:31:35)
- Matt Godbolt on the Microarch Club (00:32:21)
- Micro-Optimizations at Google Scale (00:32:34)
- Google Search Auto-Complete (00:33:06)
- CPU Scheduler Bug (00:33:43)
- Allocating Unused PCIe Pins for USB (00:34:13)
- SR-IOV (00:34:38)
- MR-IOV (00:35:04)
- Open Compute Project (00:35:41)
- OpenBMC (00:35:48)
- Barreleye G2 (00:35:53)
- Zaius (00:35:56)
- IBM Power 8 (00:36:00)
- Baseband Management Controller (BMC) (00:36:14)
- Google Server Architecture (00:37:56)
- Server Architecture Mirrors Organizational Responsibilities (00:38:14)
- Intelligent Platform Management Interface (IPMI) (00:38:51)
- Lights Out Management (00:40:15)
- ipmitool (00:41:08)
- Redfish (00:41:31)
- BMCs Outside of the Data Center (00:42:01)
- Active Management Technology (AMT) (00:43:05)
- Working on Flight Control Software at Google (00:44:18)
- Building Low Earth Orbit (LEO) Satellite Internet (00:45:10)
- Starlink (00:45:22)
- Spatial Temporal Software Defined Network (00:47:28)
- Project Loon (00:47:58)
- Why Satellite Internet Didn’t Work at Google (00:48:25)
- Collision Avoidance in Space (00:49:53)
- Architecture of an Internet Satellite (00:50:37)
- Firmware Update Process for Satellites (00:52:05)
- Working on Open Source FPGA Tooling (00:53:09)
- The Aspeed / Nuvoton BMC Duopoly (00:54:29)
- Google Axion Arm Processors (00:55:25)
- Bart Sano (00:55:35)
- Tim Ansell (00:56:00)
- Reverse Engineering FPGA Chips (00:56:45)
- prjxray (00:56:56)
- Claire Wolf (00:57:03)
- Verilog (00:57:45)
- Xilinx 7 Series FPGAs (00:58:53)
- Modern Hardware Description Languages (HDL) (00:59:12)
- Symbiflow (00:59:35)
- Whitequark (01:00:13)
- Amaranth HDL (01:00:15)
- SystemVerilog (01:00:46)
- Yosys (01:01:20)
- nextpnr (01:01:21)
- Decision to Leave Google (01:01:42)
- Getting Involved in Hardware and Firmware Security (01:02:47)
- Aurora Attacks (01:03:41)
- How Do You Know That Hardware Can Be Trusted? (01:04:52)
- OpenTitan (01:05:31)
- Root of Trust (RoT) (01:05:39)
- How Project Titan Works (01:06:16)
- UEFI Secure Boot (01:06:33)
- Intel Boot Guard (01:06:39)
- First Instruction Integrity (01:06:43)
- Prevention vs. Detection vs. Remediation (01:07:34)
- Serial Peripheral Interface (SPI) (01:08:15)
- SPI Speed (01:09:53)
- Trusted Platform Module (TPM) (01:10:26)
- Research vs. Engineering (01:10:58)
- Eclypsium (01:11:17)
- Security Research Business Model (01:12:40)
- USBAnywhere (01:14:54)
- USB Emulation (01:16:07)
- USB On-the-Go (OTG) (01:16:22)
- Small Computer System Interface (SCSI) (01:17:52)
- WebSocket (01:18:15)
- Java Native Interface (JNI) (01:18:50)
- ami (01:19:17)
- Vertiv (01:19:19)
- Facedancer (01:20:11)
- Reception to USBAnywhere (01:21:18)
- Joining Oxide Computer Company (01:23:40)
- Jessie Frazelle (01:24:44)
- Bryan Cantrill (01:24:55)
- Open Compute Project as a Product (01:27:20)
- Oxide’s Alternative to a Traditional BMC (01:28:23)
- Rack Scale Computing (01:29:59)
- Ignition FPGA (01:30:48)
- FPGA and Microcontrollers on the Oxide Server Board (01:31:25)
- NXP LPC55S69 (01:33:40)
- Discovering Vulnerabilities in the Root of Trust (01:34:13)
- Decapping (01:34:43)
- Physically Unclonable Function (PUF) (01:35:14)
- Reverse Engineering ROM (01:36:47)
- Vulnerability Disclosure (01:37:44)
- DefCon Talk (01:37:55)
- Dumping and Analyzing ROM (01:38:24)
- Joining IONQ (01:39:56)
- How Quantum Computing Works (01:40:47)
- quantum.country Tutorial (01:42:22)
- Quantum Mechanics (01:42:39)
- Qubits (01:42:57)
- Bloch Sphere (01:43:12)
- Unit Sphere (01:43:35)
- Quantum Computing Theory vs. Practice (01:45:05)
- Current State of Quantum Computers (01:45:22)
- Relay Computers (01:45:48)
- Vacuum Tubes (01:45:50)
- Williams Tubes (01:45:54)
- Mercury Delay Lines (01:45:57)
- Transmons (01:46:06)
- Trapped Ions (01:46:09)
- Using Binary in Classical Computing (01:46:34)
- Ytterbium (01:47:06)
- IONQ Learning Resources (01:49:45)
- Entanglement (01:51:08)
- Q Gate (01:51:43)
- Teleportation (01:54:26)
- Instruction Set of Quantum Computers (01:56:32)
- Comparison to VLIW Processors (01:59:40)
- Quantum Error Correction (QEC) (02:01:28)
- Hybrid Quantum Computing (02:02:09)
- Experience of Using Quantum Computers Today (02:07:45)
- Qiskit (02:08:50)
- AWS Braket (02:08:56)
- Mentorship (02:10:42)
- Sharing Work Publicly (02:13:23)
- 99% Invisible Podcast (02:14:48)
Transcript
Coming soon.