- ES Español

- EN English

5.21. Computer Systems Architecture (Mandatory)
- Semester: 4th Sem. Credits: 4
- Hour of this course: Theory: 2 hours; Laboratory: 4 hours;
- Syllabus:
- htmlonly

Español

English - Prerrequisites:
- CS1D1 Discrete Structures (2nd Sem) itemize
5.21.1. Justification ↑ Back to top
A deep understanding of computer architecture is essential for developing high-performance software and understanding the hardware-software interface. This course explores how computers execute instructions, manage memory, and communicate with external devices. By studying the internal organization of processors and the hierarchy of memory systems, students gain the ability to optimize code for specific hardware architectures and understand the trade-offs in modern system design.
5.21.2. Generales Goals ↑ Back to top
- Understand the principles of digital logic and data representation.
- Understand the organization of the Central Processing Unit (CPU).
- Master the basics of assembly language and instruction set architecture.
- Analyze the memory hierarchy, including cache memory and virtual memory.
- Evaluate performance improvements through pipelining and parallelism.
5.21.3. Contribution to Outcomes ↑ Back to top
- AG-C09) Design and Development of Solutions: Designs, implements, and evaluates solutions for complex computing problems. (Usage)
- AG-C03) Individual and Team Work: Performs effectively as an individual and as a member or leader in diverse teams. (Usage)
5.21.4. Content ↑ Back to top
5.21.4.1. Assembly Level Machine Organization (20 hours) [Skills AG-C03,AG-C09] ↑ Back to top
Bibliography: (Patterson and Hennessy, 2020; Harris and Harris, 2012)
Topics
- von Neumann machine architecture
- Control unit: instruction fetch, decode, and execution
- Introduction to SIMD vs MIMD and the Flynn taxonomy
- Shared memory multiprocessors/multicore organization
- Instruction set architecture (ISA) (e.g., x86, ARM and RISC-V):
- Fixed vs variable-width instruction sets
- Instruction formats
- Data manipulation, control, I/O
- Addressing modes
- Machine language programming
- Assembly language programming enumerate
- Subroutine call and return mechanisms
- I/O and interrupts
- Heap, static, stack, and code segments
Learning Outcomes
- Discuss how the classical von Neumann functional units are implemented in embedded systems, particularly on-chip and off-chip memory [Debate]
- Describe how instructions are executed in a classical von Neumann machine, with extensions for threads, multiprocessor synchronization, and SIMD execution [Describe]
- Assess an example diagram with instruction-level parallelism and hazards to describe how they are managed in typical processor pipelines [Assess]
- Discuss how instructions are represented at the machine level and in the context of a symbolic assembler [Debate]
- Map an example of high-level language patterns into assembly/machine language notations [Map]
- Contrast different instruction formats considering aspects such as addresses per instruction and variable-length vs fixed-length formats [Contrast]
- Analyze a subroutine diagram to comment on how subroutine calls are handled at the assembly level [Analyze]
- Describe basic concepts of interrupts and I/O operations [Describe]
- Write a simple assembly language program for string/array processing and manipulation [Write]
5.21.4.2. Memory Hierarchy (18 hours) [Skills AG-C03,AG-C09] ↑ Back to top
Bibliography: (Patterson and Hennessy, 2020; Stallings, 2015)
Topics
- Memory hierarchy: the importance of temporal and spatial locality
- Main memory organization and operations
- Persistent memory (e.g., SSD, standard disks)
- Latency, cycle time, bandwidth, and interleaving
- Cache memories:
- Address mapping
- Block size
- Replacement and store policy
- Prefetching enumerate
- Multiprocessor cache coherence
- Virtual memory (hardware support)
- Fault handling and reliability
- Reliability:
- Error coding
- Data compression
- Data integrity enumerate
- Processing In-Memory (PIM)
Learning Outcomes
- Using a memory system diagram, identify the main types of memory technology (e.g., SRAM, DRAM) and their relative cost and performance [Analyze]
- Measure the effect of memory latency on running time [Evaluate]
- Enumerate the functions of a system with virtual memory management [Enumerate]
- Compute average memory access time under various cache and memory configurations and mixes of instruction and data references [Compute]
5.21.4.3. Interfacing and Communication (8 hours) [Skills AG-C03,AG-C09] ↑ Back to top
Bibliography: (Patterson and Hennessy, 2020; Tanenbaum and Austin, 2012)
Topics
- I/O fundamentals:
- Handshaking and buffering
- Programmed I/O
- Interrupt-driven I/O enumerate
- Interrupt structures: vectored and prioritized, interrupt acknowledgment
- I/O devices (e.g., mouse, keyboard, display, camera, sensors, actuators)
- External storage, physical organization, and drives
- Buses fundamentals:
- Bus protocols
- Arbitration
- Direct-memory access (DMA) enumerate
Learning Outcomes
- Analyze an interrupt control diagram to comment on how interrupts are used to implement I/O control and data transfers [Analyze]
- Enumerate various types of buses in a computer system [Enumerate]
- List the advantages of magnetic disks and contrast them with those of solid-state disks [List]
5.21.4.4. Functional Organization (8 hours) [Skills AG-C03,AG-C09] ↑ Back to top
Bibliography: (Harris and Harris, 2012; Patterson and Hennessy, 2020)
Topics
- Implementation of simple datapaths, including instruction pipelining, hazard detection, and resolution (e.g., stalls, forwarding)
- Control unit:
- Hardwired implementation
- Microprogrammed realization enumerate
- Instruction pipelining
- Introduction to instruction-level parallelism (ILP)
Learning Outcomes
- Compare alternative implementation of datapaths in modern computer architectures [Compare]
- Produce a set of control signals for adding two integers using hardwired and microprogrammed implementations [Produce]
- Discuss instruction-level parallelism using pipelining and significant hazards that may occur [Debate]
- Design a complete processor, including datapath and control [Design]
- Compute the average cycles per instruction for a given processor and memory system implementation [Compute]
5.21.4.5. Heterogeneous Architectures (10 hours) [Skills AG-C03,AG-C09] ↑ Back to top
Bibliography: (Patterson and Hennessy, 2020; Stallings, 2015)
Topics
- SIMD and MIMD architectures (e.g., General-Purpose GPUs, TPUs, and NPUs)
- Heterogeneous memory systems:
- Shared memory versus distributed memory
- Volatile vs non-volatile memory
- Coherence protocols enumerate
- Domain-Specific Architectures (DSAs):
- Machine Learning Accelerator
- In-networking computing
- Embedded systems for emerging applications
- Neuromorphic computing
- Edge computing devices enumerate
- Packaging and integration solutions such as 3DIC and chiplets
- Machine learning in architecture design:
- AI algorithms for workload analysis
- Optimization of architecture configurations for performance and power efficiency enumerate
- Data-Oriented Design (DOD): organizing data in memory (array-of-structures vs. structure-of-arrays) to maximize cache locality and exploit SIMD vectorization; contrast and complementarity with the object-oriented paradigm.
Learning Outcomes
- Analyze a system diagram with alternative parallel architectures, e.g., SIMD and MIMD, and identify the key differences [Assessment]
- Discuss what memory-management issues are found in multiprocessors that are not present in uniprocessors and how these issues might be resolved [Assessment]
- Indicate the differences between memory backplane, processor memory interconnect, and remote memory via networks, their implications for access latency, and their impact on program performance [Familiarity]
- Discuss how you would determine when to use a domain-specific accelerator instead of a general-purpose CPU [Assessment]
- Enumerate key differences in architectural design principles between a vector and scalar-based processing unit [Familiarity]
- List the advantages and disadvantages of a PIM architecture [Familiarity]
- Restructure a collection of objects (AoS) into a DOD layout (SoA) and measure the performance impact [Usage].
5.21.4.6. Secure Processor Architectures (8 hours) [Skills AG-C03,AG-C09] ↑ Back to top
Bibliography: (Patterson and Hennessy, 2020; Anderson, 2020)
Topics
- Principles of Secure Hardware:
- Security Risk Analysis, Asset Protection, and Threat Model
- Cryptographic Acceleration with Hardware
- Support for virtualization (e.g., OS isolation) enumerate
- Roots of trust in hardware, Physically Unclonable Functions (PUF)
- Hardware Random Number Generators
- Memory protection extensions:
- Runtime pointer bounds checking (e.g., buffer overflow)
- Protection at the microarchitectural level
- Protection at the ISA level enumerate
- Trusted Execution Environment (TEE):
- Trusted Computer Base Protections
- Protecting virtual machines
- Protecting containers
- Trusted software modules (Enclaves) enumerate
- Homomorphic encryption for privacy-preserving data processing
Learning Outcomes
- Discuss principles of secure hardware, exploring a framework for risk analysis and asset protection [Debate]
- Summarize how Physically Unclonable Functions (PUF) can be a unique device identifier in security applications [Summarize]
- Distinguish a random number generator with dedicated hardware support from generators without hardware dedicated to generating entropy [Distinguish]
- List the advantages and disadvantages of memory protection at the ISA level [List]
- Describe key design issues of a trusted execution environment (TEE) to support virtual machines [Describe]
5.21.5. Bibliography ↑ Back to top
Patterson, D. A. and Hennessy, J. L. (2020). Computer Organization and Design RISC-V Edition: The Hardware Software Interface. Morgan Kaufmann, 2nd edition.
Harris, D. and Harris, S. (2012). Digital Design and Computer Architecture. Morgan Kaufmann, 2nd edition.
Stallings, W. (2015). Computer Organization and Architecture: Designing for Performance. Pearson, 10th edition.
Tanenbaum, A. S. and Austin, T. (2012). Structured Computer Organization. Pearson, 6th edition.
Anderson, R. J. (2020). Security Engineering: A Guide to Building Dependable Distributed Systems. Wiley, 3rd edition.