CS220{C,S,T}. Computer Architecture
Introduces students to the organization and architecture of computer systems, beginning with the standard von Neumann model and then moving forward to more recent archictural concepts.
Prerequisites: introduction to computer science (any implementation of CS103 or CS112), discrete structures (CS106 or CS115)
Syllabus:
- Digital logic: Fundamental building blocks (logic gates, flip-flops, counters, registers, PLA); logic expressions, minimization, sum of product forms; register transfer notation; physical considerations (gate delays, fan-in, fan-out)
- Data representation: Bits, bytes, and words; numeric data representation and number bases; fixed- and floating-point systems; signed and twos-complement representations; representation of nonnumeric data (character codes, graphical data); representation of records and arrays
- Assembly level organization: Basic organization of the von Neumann machine; control unit; instruction fetch, decode, and execution; instruction sets and types (data manipulation, control, I/O); assembly/machine language programming; instruction formats; addressing modes; subroutine call and return mechanisms; I/O and interrupts
- Memory systems: Storage systems and their technology; coding, data compression, and data integrity; memory hierarchy; main memory organization and operations; latency, cycle time, bandwidth, and interleaving; cache memories (address mapping, block size, replacement and store policy); virtual memory (page table, TLB); fault handling and reliability
- Interfacing and communication: I/O fundamentals: handshaking, buffering, programmed I/O, interrupt-driven I/O; interrupt structures: vectored and prioritized, interrupt acknowledgment; external storage, physical organization, and drives; buses: bus protocols, arbitration, direct-memory access (DMA); introduction to networks; multimedia support; raid architectures
- Functional organization: Implementation of simple datapaths; control unit: hardwired realization vs. microprogrammed realization; instruction pipelining; introduction to instruction-level parallelism (ILP)
- Multiprocessor and alternative architectures: Introduction to SIMD, MIMD, VLIW, EPIC; systolic architecture; interconnection networks; shared memory systems; cache coherence; memory models and memory consistency
- Performance enhancements: RISC architecture; branch prediction; prefetching; scalability
- Contemporary architectures: Hand-held devices; embedded systems; trends in processor architecture
Units covered:
| AR1 | Digital logic and digital systems | 3 | core hours (of 6) |
| AR2 | Machine level representation of data | 3 | core hours |
| AR3 | Assembly level machine organization | 9 | core hours |
| AR4 | Memory system organization and architecture | 5 | core hours |
| AR5 | Interfacing and communication | 3 | core hours |
| AR6 | Functional organization | 7 | core hours |
| AR7 | Multiprocessing and alternative architectures | 3 | core hours |
| AR8 | Performance enhancements | 3 | hours |
| | Contemporary architectures | 2 | hours |
| | Elective topics | 2 | hours |
Notes:
Differences in the internal structure and organization of a computer lead to significant differences in performance and functionality, giving rise to an extraordinary range of computing devices, from hand-held computers to large-scale, high-performance machines. This course addresses the various options involved in designing a computer system, the range of design considerations, and the trade-offs involved in the design process.
A key issue in relation to this course is motivation. It is important to try to heighten the motivation of both students and faculty into seeing hardware design as an increasingly interesting, relevant, and challenging area. One approach is to include a significant laboratory component with the course that gives students the opportunity to build their own computer system. In doing so, they will come to appreciate the underlying issues at a much greater level of detail. In addition, those students will experience a sense of accomplishment in the hardware area similar to what most students describe when they complete a significant software project.
Software tools can play an important role in this course, particularly when funding for a hardware laboratory is not available. These tools include, for example, instruction set simulators, software that will simulate cache performance, benchmark systems that will evaluate performance, and so on.
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 important 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.
Online resources for CS220