Image goes here
Introduction
CptS 260 - Intro to Computer Architecture
Washington State University

Introduction to Computer Architecture

What is this class about?

The purpose of this course is to provide Computer Science students with the knowledge of computer hardware they need to design and implement effective and efficient software. Students who complete this course should be able to perform the following tasks:

  • Write and debug simple programs using assembly code.
  • Explain the principles underlying the design and development of computer systems for a variety of purposes.
  • Trace the influences of imporant computing developments (such as compiler technology, networking, the web, multimedia, safety, security) on the architecture of computer systems.
  • Outline the architectural features of a modern computer system.
Topics:
  1. Digital logic and digital systems
  2. Machine level representations of data
  3. Assembly level machine organization and programming
  4. Memory system organization and architecture
  5. Interfacing and communication
  6. Functional organization
  7. Multiprocessing and alternative architectures
  8. Performance enhancements
  9. Contemporary architectures

How does this class relate to other classes you have taken and will take for your computer science degree?

121, 122, and 223 (//): prerequisites; you need to be comfortable with basic programming tasks. Also, memory and file organization is strongly influenced by data structures you will study in 223.

This course is prerequisite for CptS 360 (system programming) where you will study, for example, file system implementation and how a program interacts with external storage devices. It is even more essential for CptS 460 where you will learn how to "boot" an operating system onto "bare" hardware.

You will do relatively little assembly-language programming in these classes but you will need to know what the computer is doing at the instruction level when it is executing your programs.

If you are interested in pursuing advanced computer architecture courses (for example as part of a Computer Engineering minor or option area) you should drop this course and take EE 214 and 234 which are preprequisites for the advanced courses.

Why do we call it computer "architecture"? Why not "design"?

Computer architecture (for a software person) is typically concerned with two related topics:

  1. What facilities does a (family of) computers make accessible to the programmer? Instruction set, storage management, IO.
  2. How are the building blocks that make up the computer interconnected?
These questions are relevant both at the level of (micro) processors architecture (e.g. Pentium, MIPS) and at the level of whole systems (e.g. PC/AT, IBM S/390) and even at the level interconnected systems (e.g., internet architecture, topics covered in CptS 464).

An architecture is an abstraction of many details. Those details make up the design of the computer. For example, the Intel Pentium is a processor architecture that has been implemented in many designs. Different designs have different performance qualities but typically otherwise have little effect on software so we say we "abstract away from the details". Design is also very important but is more in the realm of Computer Engineering. (All boundaries here are quite fuzzy!) Design has to concern itself with power consumption, size, speed, physical constraints, etc. all of which disappear from consideration when we talk about architecture. Creating an architecture requires a lot of design knowledge as input so that good choices are made that can be implemented within the current capabilities of technology. Consider history of n-bit microprocessor architectures. Architecture is also strongly influenced and constrained by history: backward compatibility is often an issue.

Exercises

  1. List as many processor architectures as you can. Don't forget 4, 8, and 16 bit architectures.
  2. Is a 64 bit architecture always preferable to an architecture supporting fewer bits? Is it ever preferable?
(c) 2004-2006 Carl H. Hauser           E-mail questions or comments to Prof. Carl Hauser