CSA 278 Computer Architecture (3 credits)
Typically offered during both the fall and spring semesters.
Catalog description:
Principles of Von Neumann computer architecture. Data representation and computer arithmetic. Memory hierarchy. CPU structure and instruction sets. Assembly language programming to better understand and illustrate computer architecture concepts. Performance considerations and alternative computer architectures.
Prerequisite: CSA 271 or equivalent
Course Objectives:
Describe basic concepts of a computer system. Describe the organization and structuring the major hardware components of computers. Describe basic computer architecture. Describe the interrelationships between a computer's architecture and an assembly language executed on that computer. Describe the interrelationships between a machine-level language and higher-level languages. Describe the assembly process. Program effectively in an assembly language.
Required topics (approximate weeks allocated):
Overview of computer architecture (1)
- components of a computer
- registers (instruction register, instruction pointer, memory address register, etc.) and their uses
- hardware/software interface concepts: operating systems, hierarchy of language translators
- historical perspective
Representation of numbers and arithmetic for computers (1.5)
- number systems (decimal, binary, hexadecimal, octal, etc.)
- one's and two's complement notation
- representation of integer numbers
- representation of floating point numbers
- computer arithmetic using two's complement notation (multi. and div. are optional)
- floating point arithmetic (optional)
Machine instructions and memory addressing modes (3)
- stored program concept
- instructions formats, opcode and operands
- addressing modes
- phases of instruction execution
- virtual memory and physical memory connection
- measuring performance
Assembly process (3.5)
- symbolic machine language to machine language translation
- passes and fundamental data structures (symbol table and machine operation table) of an assembler
- assembler directives
- program debugging and tracing in assembly language programming
- linking and loading processes
CPU structure (3)
- decomposing machine instructions into smaller (micro) instructions
- use of system registers by micro instructions
- microprogramming
- interrupt handling
- reduced/complex instruction set computer concepts
Pipelining concepts (1)
- concepts
- synchronization of pipeline stages
- measuring performance
Large/parallel processors (1)
- categorization of computers: SISD, SIMD, MISD, MIMD
- processor examples
- network connection
