Learning Computer Architecture with Raspberry Pi
26%
off

Learning Computer Architecture with Raspberry Pi

4.27 (18 ratings by Goodreads)
By (author)  , By (author)  , By (author)  , By (author)  , By (author) 

Free delivery worldwide

Available. Dispatched from the UK in 2 business days
When will my order arrive?

Description

Use your Raspberry Pi to get smart about computing fundamentals


In the 1980s, the tech revolution was kickstarted by a flood of relatively inexpensive, highly programmable computers like the Commodore. Now, a second revolution in computing is beginning with the Raspberry Pi. Learning Computer Architecture with the Raspberry Pi is the premier guide to understanding the components of the most exciting tech product available. Thanks to this book, every Raspberry Pi owner can understand how the computer works and how to access all of its hardware and software capabilities.


Now, students, hackers, and casual users alike can discover how computers work with Learning Computer Architecture with the Raspberry Pi. This book explains what each and every hardware component does, how they relate to one another, and how they correspond to the components of other computing systems. You'll also learn how programming works and how the operating system relates to the Raspberry Pi's physical components.




Co-authored by Eben Upton, one of the creators of the Raspberry Pi, this is a companion volume to the Raspberry Pi User Guide
An affordable solution for learning about computer system design considerations and experimenting with low-level programming
Understandable descriptions of the functions of memory storage, Ethernet, cameras, processors, and more
Gain knowledge of computer design and operation in general by exploring the basic structure of the Raspberry Pi


The Raspberry Pi was created to bring forth a new generation of computer scientists, developers, and architects who understand the inner workings of the computers that have become essential to our daily lives. Learning Computer Architecture with the Raspberry Pi is your gateway to the world of computer system design.
show more

Product details

  • Paperback | 528 pages
  • 186 x 234 x 26mm | 878g
  • New York, United States
  • English
  • 1. Auflage
  • 1119183936
  • 9781119183938
  • 70,095

Back cover copy

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 www.wiley.com/go/comparchitecture
show more

Table of contents

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


HDMI 22


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


DDR, DDR2 DDR3 and DDR4 SDRAM 66


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


Apres 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


NOOBS 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
show more

About Tim Mamtora

Eben Upton is one of the co-creators of the Raspberry Pi, driven by the desire to create a new generation of developers capable of making an effective contribution to the field. Eben is also a co-author of the Raspberry Pi User Guide.


Jeff Dunteman is a veteran tech author and a co-founder of Coriolis Press. His previous publications include Assembly Language Step By Step and Jeff Dunteman's Wi-Fi Guide.
show more

Rating details

18 ratings
4.27 out of 5 stars
5 44% (8)
4 44% (8)
3 6% (1)
2 6% (1)
1 0% (0)
Book ratings by Goodreads
Goodreads is the world's largest site for readers with over 50 million reviews. We're featuring millions of their reader ratings on our book pages to help you find your new favourite book. Close X