Computer Architecture--The Essentials -- Article Index + Overview



Home | Forum | DAQ Fundamentals | DAQ Hardware | DAQ Software

Input Devices
| Data Loggers + Recorders | Books | Links + Resources


AMAZON multi-meters discounts AMAZON oscilloscope discounts


Contents:

Overview (below)

  1. Introduction and Overview
  2. Part I: Basics of Digital Logic and Data Representation -- The Fundamentals from Which Computers are Built
  3. Fundamentals of Digital Logic
  4. Data and Program Representation
  5. Part II: Processors: The Engines that Drive Computation
  6. The Variety of Processors and Computational Engines
  7. Processor Types and Instruction Sets
  8. Data Paths and Instruction Execution
  9. Operand Addressing and Instruction Representation
  10. CPUs: Microcode, Protection, and Processor Modes
  11. Assembly Languages and Programming Paradigm
  12. Part III: Memories: Program & Data Storage Technologies
  13. Memory and Storage
  14. Physical Memory and Physical Addressing
  15. Caches and Caching
  16. Virtual Memory Technologies and Virtual Addressing
  17. Part IV: Input and Output: External Connections and Data Movement
  18. Input /Output Concepts and Terminology
  19. Buses and Bus Architectures
  20. Programmed and Interrupt Driven I/O
  21. A Programmer's View of Devices, I/O, and Buffering
  22. Parallelism
  23. Data Pipelining
  24. Power and Energy
  25. Assessing Performance
  26. Architecture Examples and Hierarchy
  27. Hardware Modularity

Lab Exercises for a Computer Architecture Course

ARM Register Definitions and Calling Sequence


Overview

Hardware engineering has shifted the use of discrete electronic components to the use of programmable devices. Consequently, programming has become much more important. Programmers who understand how hardware operates and a few basic hardware principles can construct software systems that are more efficient and less prone to errors. Consequently, a basic knowledge of computer architecture allows programmers to appreciate how software maps onto hardware and to make better software design choices. A knowledge of the underlying hardware is also a valuable aid in debugging because it helps programmers pinpoint the source of problems quickly.

The text is suitable for a one-semester undergraduate course. In many Computer Science programs, a course on computer architecture or computer organization is the only place in the curriculum where students are exposed to fundamental concepts that explain the structure of the computers they program. Unfortunately, most texts on computer architecture are written by hardware engineers and are aimed at students who are learning how to design hardware. This text takes a different approach: instead of focusing on hardware design and engineering details, it focuses on programmers by explaining the essential aspects of hardware that a programmer needs to know. Thus, topics are explained from a programmer's point of view, and the text emphasizes consequences for programmers.

This guide is divided into five parts. Part I covers the basics of digital logic, gates, data paths, and data representation. Most students enjoy the brief look at the underlying hardware (especially because the text and labs avoid minute hardware details). Parts II, III, and IV cover the three primary aspects of architecture: processors, memories, and I/O systems. In each case, the sections give students enough background to understand how the mechanisms operate and the consequences for programmers without going into many details. Finally, Part V covers the advanced topics of parallelism, pipelining, power and energy, and performance.

Appendix 1 describes an important aspect of the course: a hands-on lab where students can learn by doing. Although most lab problems focus on programming, students should spend the first few weeks in lab wiring a few gates on a breadboard. The equipment is inexpensive (we spent less than fifteen dollars per student on permanent equipment; students purchase their own set of chips for under twenty dollars).

Appendix 2 provides a quick introduction to x86 assembly language and the x64 extensions. Many professors teach x86 and have requested that it be included. The material is in an appendix, which means that professors who choose to focus on a RISC assembly language (e.g., the ARM architecture) can use it for comparison.

NEXT

Related Articles -- Top of Page -- Home

Updated: Thursday, April 27, 2017 17:49 PST