Understanding Computer Architecture and Development Objectives

Stanford campus, used on an article about computer architecture.

Introduction

In general, there are three classifications of computer applications: personal computers, servers, and embedded computers (Patterson and Hennessy ch. 1). Each application has distinct design requirements and employs the core hardware technologies differently. 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 objective
Personal computersDelivery of good performance to individual users at a low cost
ServersDependability
Embedded computerMinimizing cost and power

Although most of my readers already know what personal computers (PCs), servers, and embedded computers are, I will provide a description and an extended development objective.

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.

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 is the largest classification of computer uses. 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

If you enjoyed this post, I recommend checking out my future assembly posts. This post marks the beginning of a new series where I’ll explore low-level programming and computer architecture. 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.

Join 1,216 other subscribers
Portrait of Olivia Gallucci in garden, used in LNP article.

Written by Olivia Gallucci

Olivia is an honors student at the Rochester Institute of Technology. She writes about security, open source software, and professional development.