Computer Architecture
Prerequisites
C or better in either CMSC 313 (Computer Organization and Assembly Language Programming) or CMPE 212 (Principles of Digital Design) & CMPE 310 (Systems Design and Programming)
Description
This course covers the design of complex computer systems making heavy use of the components and techniques discussed in CMSC 313, CMPE 212 and CMPE 310. All parts of the computer system – CPU, memory and input/output – are discussed in detail. Topics include information representation, floating-point arithmetic, instructions set design issues (RISC vs. CISC), microprogrammed control, hardwired control, pipelining, memory cashes, bus control and timing,input/output mechanism and issues in the construction of parallel processors.
Course Outcomes
- In-depth understanding of the inner-workings of modern computers, their evolution, and trade-offs present at the hardware/software boundary
- Broad knowledge of the state of the art in computer architectures
- Familiarity of performance metrics and benchmarks
- General knowledge of advances in microelectronics and their implication on computer design
- Experience the design process in the context of a reasonable size hardware
- Exposure to design tools and validation setup
Program Outcomes
CMSC 411 supports the CMSC program outcomes:
- (O3) through exposure to tools and techniques used in computer architecture
- (O5) through exposure to the fundamentals of computer architecture and design.
Text
Computer Organization and Design, The hardware/software interface (4th edition), David Patterson and John Hennessy, Morgan Kaufmann, 2008. Required
Topics
- Instruction Set Architecture
- Instruction formats and semantics
- Addressing modes
- Performance Evaluation
- Measures of performance
- Benchmarks and metrics
- Machine Arithmetic
- ALU design
- Integer multiplication and division
- Floating-point arithmetic
- Processor Design
- Datapath design
- Instruction execution and sequencing
- Hardwired and microcode control
- Pipelining
- Hardware Design Languages
- Design with a simplified VHDL
- Modeling and simulation
- Memory Hierarchy
- Cache design and Evaluation
- Virtual addressing
- Performance evaluation
- Input/Output
- Types of I/O devices
- Device access and interface
- Device control
- I/O performance
Optional Topics
- Multiprocessing
- Interconnection networks
- Programming issues
Grading
20% | Homework |
25% | Project |
25% | Midterm exam |
30% | Final exam |