+353-1-416-8900REST OF WORLD
+44-20-3973-8888REST OF WORLD
1-917-300-0470EAST COAST U.S
1-800-526-8630U.S. (TOLL FREE)


Learning Computer Architecture with Raspberry Pi

  • ID: 3329310
  • Book
  • September 2016
  • 528 Pages
  • John Wiley and Sons Ltd
Take an insider tour of the Raspberry Pi and learn the mechanics of computing

Inspired by the relatively cheap, highly programmable computers of the 1980s and their impact on the UK tech industry the Raspberry Pi was designed to inspire and empower a new generation of programmers. Accessible both economically and technically, the Raspberry Pi is the ideal vehicle for learning how computers work. Learning Computer Architecture with Raspberry Pi is your personal guide on this journey of discovery, and it's your expert coach for developing a knowledge base that translates well beyond the Pi itself. Authors Eben Upton and Jeff Dunteman are the ideal teachers: Upton provides deep insight as a Raspberry Pi co–creator, and Dunteman distills complex technical knowledge into easily understood explanations. Together they provide expert guidance on the technology behind all computers, based on the mechanics behind the credit card sized computer that is revolutionizing the world of programming.

This book walks you through each component step by step to show you what it does, why it's needed, how it relates to the other components, and the choices the designers faced when creating it. From memory, storage, and processors, to Ethernet, cameras, and audio, Upton and Dunteman team up to give you a solid understanding of the Raspberry Pi internals, and how it relates to the technology underlying computing as a whole.

With design intent and critical function straight from the source, Learning Computer Architecture with Raspberry Pi helps you:

- Learn the purpose behind each piece of the Pi
- Understand how the various components interact
- Dig into the thought process behind the system's design
- Learn how programming works
- Examine the interplay between hardware and operating system
- Delve into the mechanics behind the ARM chip
- Compare and contrast different chips, from ARM to Intel

Visit the companion website at [external URL]
Note: Product cover images may vary from those shown

Introduction 1

Cambridge 1

Cut to the Chase 3

The Knee in the Curve 4

Forward the Foundation 5

CHAPTER 1 The Shape of a Computer Phenomenon 7

Growing Delicious, Juicy Raspberries 7

System–on–a–Chip 10

An Exciting Credit Card–Sized Computer 12

What Does the Raspberry Pi Do? 14

Meeting and Greeting the Raspberry Pi Board 14

GPIO Pins 15

Status LEDs 16

USB Receptacles 18

Ethernet Connection 18

Audio Out 19

Composite Video 21

CSI Camera Module Connector 21


Micro USB Power 22

Storage Card 23

DSI Display Connection 24

Mounting Holes 25

The Chips 25

The Future 25

CHAPTER 2 Recapping Computing 27

The Cook as Computer 28

Ingredients as Data 28

Basic Actions 30

The Box That Follows a Plan 31

Doing and Knowing 31

Programs Are Data 32

Memory 33

Registers 34

The System Bus 36

Instruction Sets 36

Voltages, Numbers and Meaning 37

Binary: Counting in 1s and 0s 37

The Digit Shortage 40

Counting and Numbering and 0 40

Hexadecimal as a Shorthand for Binary 41

Doing Binary and Hexadecimal Arithmetic 43

Operating Systems: The Boss of the Box 44

What an Operating System Does 44

Saluting the Kernel 46

Multiple Cores 46

CHAPTER 3 Electronic Memory 47

There Was Memory Before There Were Computers 47

Rotating Magnetic Memory 48

Magnetic Core Memory 50

How Core Memory Works 50

Memory Access Time 52

Static Random Access Memory (SRAM) 53

Address Lines and Data Lines 54

Combining Memory Chips into Memory Systems 56

Dynamic Random Access Memory (DRAM) 59

How DRAM Works 60

Synchronous vs Asynchronous DRAM 62

SDRAM Columns, Rows, Banks, Ranks and DIMMs 64


Error–Correcting Code (ECC) Memory 69

The Raspberry Pi Memory System 70

Power Reduction Features 70

Ball–Grid Array Packaging 71

Cache 72

Locality of Reference 72

Cache Hierarchy 72

Cache Lines and Cache Mapping 74

Direct Mapping 76

Associative Mapping 78

Set–Associative Cache 79

Writing Cache Back to Memory 81

Virtual Memory 81

The Virtual Memory Big Picture 82

Mapping Virtual to Physical 83

Memory Management Units: Going Deeper 84

Multi–Level Page Tables and the TLB 88

The Raspberry Pi Swap Problem 88

Watching Raspberry Pi Virtual Memory 90

CHAPTER 4 ARM Processors and Systems–on–a–Chip 93

The Incredible Shrinking CPU 93

Microprocessors 94

Transistor Budgets 95

Digital Logic Primer 95

Logic Gates 96

Flip–Flops and Sequential Logic 97

Inside the CPU 99

Branching and Flags 101

The System Stack 102

System Clocks and Execution Time 105

Pipelining 106

Pipelining in Detail 108

Deeper Pipelines and Pipeline Hazards 109

The ARM11 Pipeline 112

Superscalar Execution 113

More Parallelism with SIMD 115

Endianness 118

Rethinking the CPU: CISC vs RISC 119

RISC s Legacy 121

Expanded Register Files 122

Load/Store Architecture 122

Orthogonal Machine Instructions 123

Separate Caches for Instructions and Data 123

ARMs from Little Acorns Grow 124

Microarchitectures, Cores and Families 125

Selling Licenses Rather Than Chips 125

ARM11 126

The ARM Instruction Set 126

Processor Modes 129

Modes and Registers 131

Fast Interrupts 137

Software Interrupts 137

Interrupt Priority 138

Conditional Instruction Execution 139

Coprocessors 142

The ARM Coprocessor Interface 143

The System Control Coprocessor 143

The Vector Floating Point (VFP) Coprocessor 144

Emulating Coprocessors 145

ARM Cortex 145

Multiple–Issue and Out–Of–Order Execution 146

Thumb 2 147

Thumb EE 147

big.LITTLE 147

The NEON Coprocessor for SIMD 148

ARMv8 and 64–Bit Computing 148

Systems on a Single Chip 150

The Broadcom BCM2835 SoC 150

Broadcom s Second– and Third–Generation SoC Devices 151

How VLSI Chips Happen 151

Processes, Geometries and Masks 152

IP: Cells, Macrocells and Cores 153

Hard and Soft IP 154

Floorplanning, Layout and Routing 154

Standards for On–Chip Communication: AMBA 155

CHAPTER 5 Programming 159

Programming from a Height 159

The Software Development Process 160

Waterfall vs Spiral vs Agile 162

Programming in Binary 165

Assembly Language and Mnemonics 166

High–Level Languages 167

Après BASIC, Le Deluge 170

Programming Terminology 171

How Native–Code Compilers Work 173

Preprocessing 174

Lexical Analysis 175

Semantic Analysis 175

Intermediate Code Generation 176

Optimisation 176

Target Code Generation 176

Compiling C: A Concrete Example 177

Linking Object Code Files to Executable Files 183

Pure Text Interpreters 184

Bytecode Interpreted Languages 186

P–Code 186

Java 187

Just–In–Time (JIT) Compilation 189

Bytecode and JIT Compilation Beyond Java 191

Android, Java and Dalvik 191

Data Building Blocks 192

Identifiers, Reserved Words, Symbols and Operators 192

Values, Literals and Named Constants 193

Variables, Expressions and Assignment 193

Types and Type Definitions 194

Static and Dynamic Typing 196

Two s Complement and IEEE 754 198

Code Building Blocks 200

Control Statements and Compound Statements 200

If/Then/Else 200

Switch and Case 202

Repeat Loops 205

While Loops 205

For Loops 207

The Break and Continue Statements 208

Functions 210

Locality and Scope 211

Object–Oriented Programming 214

Encapsulation 217

Inheritance 219

Polymorphism 221

OOP Wrapup 224

A Tour of the GNU Compiler Collection Toolset 224

gcc as Both Compiler and Builder 225

Using Linux Make 228

CHAPTER 6 Non–Volatile Storage 231

Punched Cards and Tape 232

Punched Cards 232

Tape Data Storage 232

The Dawn of Magnetic Storage 235

Magnetic Recording and Encoding Schemes 236

Flux Transitions 237

Perpendicular Recording 238

Magnetic Disk Storage 240

Cylinders, Tracks and Sectors 240

Low–Level Formatting 242

Interfaces and Controllers 244

Floppy Disk Drives 246

Partitions and File Systems 247

Primary Partitions and Extended Partitions 247

File Systems and High–Level Formatting 249

The Future: GUID Partition Tables (GPTs) 249

Partitions on the Raspberry Pi SD Card 250

Optical Discs 252

CD–Derived Formats 254

DVD–Derived Formats 254

Ramdisks 255

Flash Storage 257

ROMs, PROMs and EPROMs 257

Flash as EEPROM 258

Single–Level vs Multi–Level Storage 260

NOR vs NAND Flash 261

Wear Levelling and the Flash Translation Layer 265

Garbage Collection and TRIM 267

SD Cards 268

eMMC 270

The Future of Non–Volatile Storage 271

CHAPTER 7 Wired and Wireless Ethernet 273

The OSI Reference Model for Networking 274

The Application Layer 276

The Presentation Layer 276

The Session Layer 278

The Transport Layer 278

The Network Layer 279

The Data Link Layer 281

The Physical Layer 282

Ethernet 282

Thicknet and Thinnet 283

The Basic Ethernet Idea 283

Collision Detection and Avoidance 285

Ethernet Encoding Systems 286

PAM–5 Encoding 290

10BASE–T and Twisted–Pair Cabling 291

From Bus Topology to Star Topology 292

Switched Ethernet 293

Routers and the Internet 296

Names vs Addresses 296

IP Addresses and TCP Ports 297

Local IP Addresses and DHCP 300

Network Address Translation 302

Wi–Fi 304

Standards within Standards 305

Facing the Real World 305

Wi–Fi Equipment in Use 309

Infrastructure Networks vs Ad Hoc Networks 311

Wi–Fi Distributed Media Access 312

Carrier Sense and the Hidden Node Problem 314

Fragmentation 315

Amplitude Modulation, Phase Modulation and QAM 316

Spread–Spectrum Techniques 319

Wi–Fi Modulation and Coding in Detail 320

How Wi–Fi Connections Happen 323

Wi–Fi Security 325

Wi–Fi on the Raspberry Pi 326

Even More Networking 329

CHAPTER 8 Operating Systems 331

Introduction to Operating Systems 333

History of Operating Systems 333

The Basics of Operating Systems 336

The Kernel: The Basic Facilitator of Operating Systems 343

Operating System Control 344

Modes 345

Memory Management 346

Virtual Memory 347

Multitasking 347

Disk Access and File Systems 348

Device Drivers 349

Enablers and Assistants to the Operating System 349

Waking Up the OS 349

Firmware 353

Operating Systems for Raspberry Pi 354


Third–Party Operating Systems 356

Other Available Operating Systems 356

CHAPTER 9 Video Codecs and Video Compression 359

The First Video Codecs 360

Exploiting the Eye 361

Exploiting the Data 363

Understanding Frequency Transform 367

Using Lossless Encoding Techniques 371

Changing with the Times 373

The Latest Standards from MPEG 374

H.265 378

Motion Search 378

Video Quality 381

Processing Power 382

CHAPTER 10 3D Graphics 383

A Brief History of 3D Graphics 383

The Graphical User Interface (GUI) 384

3D Graphics in Video Games 386

Personal Computing and the Graphics Card 387

Two Competing Standards 390

The OpenGL Graphics Pipeline 391

Geometry Specification and Attributes 393

Geometry Transformation 396

Lighting and Materials 400

Primitive Assembly and Rasterisation 403

Pixel Processing (Fragment Shading) 405

Texturing 407

Modern Graphics Hardware 411

Tiled Rendering 411

Geometry Rejection 413

Shading 415

Caching 416

Raspberry Pi GPU 417

Open VG 421

General Purpose GPUs 423

Heterogeneous Architectures 423

OpenCL 425

CHAPTER 11 Audio 427

Can You Hear Me Now? 427

MIDI 428

Sound Cards 428

Analog vs Digital 429

Sound and Signal Processing 430

Editing 431

Compression 431

Recording with Effects 432

Encoding and Decoding Information for Communication 433

1–Bit DAC 434

I2S 436

Raspberry Pi Sound Input/Output 437

Audio Output Jack 437

HDMI 438

Sound on the Raspberry Pi 438

Raspberry Pi Sound on Board 439

Manipulating Sound on the Raspberry Pi 439

CHAPTER 12 Input/Output 447

Introducing Input/Output 448

I/O Enablers 451

Universal Serial Bus 452

USB Powered Hubs 455

Ethernet 457

Universal Asynchronous Receiver/Transmitters 458

Small Computer Systems Interface 459

Parallel ATA 459

Serial Advanced Technology Attachment 460

RS–232 Serial 460

High Definition Media Interface 461

I2S 462

I2C 463

Raspberry Pi Display, Camera Interface and JTAG 464

Raspberry Pi GPIO 464

GPIO Overview and the Broadcom SoC 465

Meeting the GPIO 466

Programming GPIO 473

Alternative Modes 479

GPIO Experimentation the Easy Way 480

Index 481

Note: Product cover images may vary from those shown
Eben Upton
Jeffrey Duntemann
Ralph Roberts
Tim Mamtora
Ben Everard
Note: Product cover images may vary from those shown