CISC 221/3.0 Computer Architecture
Original Author: Dave Dove
Last Revised: October 15, 2009
The descriptive levels of computer architecture. Instruction-set
architectures. Assembly Language. Data representation. Support for
operating-system management and high-level languages. Input/output and
interrupts. Designing for performance. Digital Logic.
Prerequisite: CISC 124/3.0; CISC-220/3.0 is recommended.
Writing quality program code requires more than just knowledge of
algorithms, data structures, and programming languages. The statements
and structures you choose can have a big impact on the performance and
security of the machine code generated by the compiler.
The software designer should understand how a compiler maps high level
languages to the low level instructions understood by the hardware and
how the hardware executes those instructions. By thinking low level
and writing high level, the software designer will help the compiler
produce code that will use the processor, memory, and other resources
efficiently. A working knowledge of these principles is also necessary
in order to understand how some types of security vulnerabilities occur
and how they can be avoided.
This course provides a firm grounding in the characteristics and
operation of the hardware/software interface that may be required to
produce the best quality software. It will answer many basic questions
about computer operation which might otherwise be stumbling blocks to
understanding more complex software topics.
The courses to which this course is a prerequisite are
- CISC-340/3.0 (Digital Systems)
- CISC-324/3.0 (Operating Systems)
- CISC-426/3.0 (Real-Time Systems)
- CISC-434/3.0 (Distributed Systems)
- CISC-437/3.0 (Performance Analysis)
- CISC-441/3.0 (Advanced Computer Architecture)
- CISC-458/3.0 (Programming Language Processors)
- ELEC-476/3.0 (Modelling and Systems Simulation)
This course is required in CSCI, SODE, COMP-M-BCH, BMCO, COGS, COMP-G-BCP, and CISC-G-BA.
- Introduction to Computer Architecture
Course description, terminology,
levels of abstraction, computers as multi-level machines.
- Introduction to C programming
Program Structure, data types,
operations, control structures, functions, arrays.
- Instructions - Language of the Computer
Basic instruction set,
operand specification, CISC (e.g., Intel IA-32) and RISC (e.g., MIPS)
architectures; mapping high level languages to machine language
- Assembly Language Programming
Assembly language program structure,
linkers, debugging techniques, system call mechanism.
- Data representation and computer arithmetic
unsigned, floating point numbers. Computer addition and subtraction.
- Enhancing Performance
Caches, pipelining, instruction-level parallelism
and superscalar processors. Multiprocessors and clusters.
- Storage Management
Memory management and memory hierarchy.
Uniprogramming, multiprogramming. Segmentation. Virtual memory and
- Devices, Interrupts and Connectivity
I/O, role of operating system,
interrupts and traps. Interrupt service routines. Event driven
programming. Buses and networks.
- Digital Logic
Combinational networks, truth tables, boolean algebra.
- D. Patterson, J. L. Hennessy: Computer Organization and Design, The
Hardware/Software Interface, Morgan Kaufmann Publications, 2005.
- C. Hamacher, Z. Vranesic, S. Zaky: Computer Organization, 5th edition,
McGraw Hill, 2002.
- W. Stallings: Computer Organization & Architecture, 6th edition,
Prentice Hall, 2003.
- J. S. Warford: Computer Systems, 3rd edition, Jones and Bartlett, 2005.