Table of Contents

Understanding Computer Architecture and Development Objectives

Stanford campus, used on an article about computer architecture.

Introduction

A laptop, a cloud server, and the chip in a router are all computers, but each is built to optimize something different. That design goal decides what the hardware gives up, and what it gives up is often where vulnerabilities come from. This post compares the three classic classes of computers, personal computers, servers, and embedded computers (Patterson and Hennessy ch. 1), in one table, then explains each. Understanding a basic level of machine language and computer architecture is helpful when developing or attacking each type of computer. Specifically, understanding computer architecture can help developers disassemble code to determine poor coding practices which introduce vulnerabilities.

Development objectives summary

TypeDevelopment objectiveExamplesWhy it matters for security
Personal computersDelivery of good performance to individual users at a low costLaptops, desktopsRuns lots of third-party software, so the attack surface is wide
ServersDependabilityWeb hosts, databases, cloud clustersDowntime and data loss are the main costs; one compromise can affect many users
Embedded computerMinimizing cost and powerTVs, routers, car and aircraft controllersTight budgets often mean fewer hardware protections and rare patches

Newer editions of Patterson and Hennessy also describe a “post-PC era”: personal mobile devices (phones and tablets) have largely replaced the PC as the device people carry, and cloud computing runs on warehouse-scale computers, which are huge clusters of servers. The three classes below are still the clearest way to compare design goals, so the rest of this post covers each one.

Personal computers

PCs are computers designed for individual use. They are often used with a graphics display, a keyboard, and a mouse. The development objective of PC manufacturers is to deliver good performance to individual users at a low cost.


🌸👋🏻 Join 10,000+ followers! Let’s take this to your inbox. You’ll receive occasional emails about whatever’s on my mind—offensive security, open source, academics, boats, software freedom, you get the idea.


Servers

Servers store, process, and manage data (ServerWatch). They often carry large workloads, such as a single complex application (e.g., a scientific application) or many small tasks (e.g., hosting, retrieving, and sending website files).

Server manufacturers focus on dependability because outages—a temporary suspension of operation—may cause users to lose access to critical data or services (American Heritage Dictionary).

The three most common causes are power supply failure (25%), cybercrime (22%) and accidental human error (22%) according to the Ponemon Institute.

When servers run or manage code, the server consumes energy, time, and money. Increased energy consumption and time translate to less financial gain for server users. Thus, developers may learn about basic low-level programming and computer architecture to improve the efficiency of their code, especially developers running code in the cloud, a global network of servers (Microsoft).

Embedded computers

Embedded computers are the largest class of computers by count. They represent one or more computers inside another device used for running one application or collection of software, for instance, a TV or dishwasher.

The development objective of embedded computers is to minimize cost and power. However, many also have a low failure tolerance since the results vary from “upsetting (when your new television crashes) to devastating (when the computer in a plane or cargo ship crashes)” (Patterson and Hennessy ch. 1).

Conclusion

This post was the first in my low-level series. Next, read Instruction Set Architectures, Computer Memory and Performance, and MIPS Assembly: Data, Registers, and Mimicking Scope, or browse all assembly posts. If you’re interested in security content, check out my offensive security work, like Offensive Security Attack Phases and Frameworks. 

Citations

Patterson, David A., and John L. Hennessy. Computer Organization and Design MIPS Edition: The Hardware/Software Interface. Morgan Kaufmann, 2020.

Portrait of Olivia Gallucci in garden, used in LNP article.

Written by Olivia Gallucci

Olivia is senior security engineer, certified personal trainer, and freedom software advocate. She writes about offensive security, open source software, and professional development.

Discover more from [ret]2read

An OS Internals Newsletter by Olivia Gallucci. Subscribe now to keep reading and get access to the full archive.

Continue reading