- Future Students
- Academic Progams
- Undergraduate Program
- Current Semester CS Courses
- New Course Offerings
- Upcoming Semesters
- Previous Semesters
- Canonical Syllabi
- Course Access & Request Policy
- Academic Integrity Policy
- Grad Student Registration
- Variable Title Courses
- Study Abroad
- Professional Practice
- Co-Op Professional Practice
- Non-Co-Op Professional Practice
- ISS Application Process for International Students (CPT, OPT, RCL, Program Extension, COEL)
- Pass/Not Pass Spring 2020
CS 250: Computer Architecture
Prerequisites:
CS 18200 (Foundations of Computer Science)
CS 24000 (Programming in C)
Detailed Syllabus:
- Digital Logic:
- fundamentals of digital logic;
- using a breadboard to create a digital circuit;
- using logic gates to build and test combinatorial circuits;
- wiring and testing a circuit that uses a clock to control a sequence of operations.
- Data paths and a fetch-execute cycle.
-
Processors:
- operand addressing and instruction representation;
- RISC and CISC machines;
- CPUs;
- programming a RISC computer in assembly language;
- converting among one's complement, two's complement, signed, and sign-magnitude representations;
- writing code to test whether the underlying hardware uses one’s or two’s complement arithmetic;
- writing code to test whether the underlying hardware uses big-endian or little-endian byte order;
- writing a function in assembly language that is called from C;
- calling a C function from an assembly language program;
- rearranging instructions to avoid pipeline stalls.
-
Memory:
- physical and virtual memories;
- access paradigm;
- physical and virtual addressing;
- caches and caching;
- comparing programs that access an array in row-major and column-major order;
- stepping through the mapping from virtual address to physical address;
- calculating the memory bank into which a given memory location maps when using N-way interleaving.
-
Input/Output:
- buses and bus address spaces;
- programmed and interrupt-driven I/O;
- multiplexing;
- a programmer’s view of I/O;
- buffering;
- basic role of a device driver.
-
Design Considerations:
- parallelism and parallel architectures;
- data pipelining;
- pipeline stalls and flush times;
- performance of a data pipeline;
- power and energy;
- hardware modularity and module reuse
Last Updated: Apr 25, 2017 4:41 PM