Computer Organization
Students will utilize C/C++ and assembly languages in this course.
Computer Architecture Basics
Clock Rates, Instructions, and Benchmarking
Instruction Set Architectures
RISC vs CISC
Abstraction
Design Complexity and Performance Considerations
Amdhal’s Law
Digital Logic & Arithmetic
Sum of Products / Product of Sums
Combinational & Sequential Logic
Truth Tables
Circuit Diagrams
Twos-Complement (Including Negative Integers)
Addition of Integers in Binary [Reiteration]
Multiplication of Integers in Binary
Floating Point Formats (IEEE-754)
Assembly
Translation to/from Machine Code
Decision Points and Loops
Procedures in Assembly (Writing, Calls, Execution, and Return Values)
Recursive Procedures
Main Memory Sections
Register Preservation and Stack Frames
Buffer Overflow Vulnerabilities (“Stack Smash”)
Processor Architecture
Single-Cycle Steps & Resources in ARM Instruction Execution
Control Signal Values (R-type, D-type and CBZ instructions)
Speed Differences: Single-Cycle vs Pipelined Datapath
Structural, Control, & Data Hazards
Forwarding & Data Hazard Reduction
Instruction Tracing: Branches & Data Hazards in Pipelined Processors
Static & Dynamic Branch Prediction
Memory Architecture
Average Memory Access Time: Look-Aside & Look-Through Caches
Spatial and Temporal Locality Principles
Hit Rates: Fully Associative, Direct-Mapped, and Set-Associative Caches
Cache Locations for Fully Associative, Direct-Mapped, and Set-Associative Caches
Simulation of Fully Associative, Direct-Mapped, and Set-Associative Caches
Function of Virtual Memory Addressing
Virtual to Physical Memory Addresses
Parallel Processing
Instruction Allocation for Static Multiple Issue Pipeline
Vector Processing & Shared Memory Processing
Single-Program Multiple-Data Processing