Dec 06, 2023
CSCI 2016 - Introduction to the Organization of Computer Systems Credits: 4
Hours/Week: Lecture 4 Lab None
Course Description: This course is an introduction to hardware/software components of a computer system. Topics covered will include data representation, computer arithmetic, basic logic design, machine-level programs, instruction set architectures, processor and memory organization, storage hierarchy, optimization techniques and future trends. Students will write programs in a low-level language, such as assembly language.
Prerequisite(s): CSCI 1082 with a grade of C or higher or instructor consent.
Recommendation: CSCI 1020
- Evolution of computer architecture and influence on development of systems; future trends
- Boolean algebra and simplification, simple combinational and sequential logic design, and implementation
- Binary representation of different types of data; numeric data representation including signed and unsigned integers and floating point formats
- Basic operation and organization of the Von Neumann machine including cpu, memory, buses, and fetch/execute cycle; Von Neumann bottleneck; memory types and organization; interleaving
- Machine language concepts and characteristics including instruction formats, addressing modes, RISC versus CISC, and relationship to logic circuits
- Assembly language programs including standard programming structures, subroutines, I/O and macros; conversion process from higher-level language to assembly language to machine language
- Storage system concepts, types and operations; characteristics of media formats and tradeoffs; access time, throughput, bandwidth
- Storage hierarchy pyramid and operation; principle of locality
- Memory cache concepts and operations; different types of cache including direct, associative, and set associative; write policies and cache coherency in SMP systems
- Virtual memory techniques and concepts including segmentation and paging
- I/O: fundamental concepts including handshaking, buffering, programmed I/O, and interrupts
- Buses: bus protocols, arbitration, and direct-memory access (DMA)
- Improving performance through superscalar, pipelining, multi-threading, vector processors, GPUs and other concurrent techniques
- Pipelining operation and hazards; optimization techniques such as branch prediction and speculative and out-of-order execution
- Flynn’s revised taxonomy including SISD, SIMD, MISD, and MIMD; categorize current systems in this taxonomy
- Quantum computing, neural networks, DNA data storage and other emerging technologies
At the end of this course students will be able to:
- design and implement simple combinational and sequential logic circuits.
- represent numeric and text data in current standard formats and convert between numeric formats.
- describe instruction execution cycle and how the processor and memory work
- describe machine instruction formats and discuss features and differences of instruction set formats and architectures.
- write assembly language programs that incorporate standard programming structures, subroutines, i/o and macros.
- describe the memory hierarchy including different levels and optimization strategies such as cache and virtual memory.
- discuss different i/o and storage devices and mechanisms including bus protocols, interrupts, and interfaces
- discuss concurrency techniques to bypass performance bottleneck including pipelining, superscalar, multi-core, and multi-threading
- list and compare the different architecture categories and describe emerging technologies.
Competency 1 (1-6)
Competency 2 (7-10)
Courses and Registration
Add to Portfolio (opens a new window)