Computer Architecture

« Return

Objectives

- Identify the fundamental computer architecture components and their roles.
- Identify the main processor's components and their role.
- Identify the different instruction types and the required mechanisms for their execution (at an introductory-level).
- Understand how a program, written in a high-level language, is executed, including the role of the compiler, assembler, and loader.
- Write simple programs in Assembly language.
- Understand the underlying principals of interruptions/exceptions and the interface with processor peripherals.
- Understand the importance of a hierarchical memory subsystem and its role in the performance of applications.
- Identify the advantages and drawbacks stemming from the evolution of computers with respect to the original architecture.

Program

Learning outcomes

- Identify the fundamental components in a computer architecture and their role as a whole.
- Identify the fundamental components in a processor and their role as a whole; design the fundamental components of an elementary processor.
- Apply the concept of interruption, namely in data transfer operations.
- Choose the external interface suitable for connection with a peripheral.
- Use a hierarchical structure of memory in the context of computer architectures.
* - Identify the advantages and restrictions inherent in the operation of a computer resulting from the evolution of the original architecture.
- Program a computer in “Assembly” language.


Syllabus

1. Architecture and organization of a computer
1.1. Main components - von Neumann model
1.2. History and evolution of computers
2. Central processing unit (CPU)
2.1. Registers and functional units
2.2. Execution of instructions: interruptions, pipelining and parallelism
3. Control unit
3.1. Functions and components
3.2. Implementations - microprogramming
4. Processor Architectures
4.1. RISC and CISC
4.2. Multi-core
5. Memories
5.1. Internal - cache and RAM
5.2. External - magnetic, optical and flash disks
6. Buses
6.1. Types, structure and timing
6.2. Implementations (examples)
7. Inputs and Outputs
7.1. I/O Modules and Techniques
7.2. External interfaces - communication with peripherals
8. Assembly language
8.1. Instructions and data types
8.2. Input and output of data
8.3. Addressing modes

Teaching Methodologies

Lectures

Exposure of the concepts and presentation of examples; solving theoretical and practical exercises.
Performing diagnostic tests at the end of each chapter.

Laboratory classes

Assembly of components on a computer and connecting peripherals.
Construction of language programs "assembly", using a tool for coding and testing programs in language "assembly" in particular.
Using learning management system Moodle, where resources are available and various activities to supplement classroom.

Bibliography

Essential

José Delgado e Carlos Ribeiro, Arquitectura de Computadores, 5a. Edição, FCA, 2014.
William Stallings, Computer Organization and Architecture, 9th Edition, Prentice-Hall, 2013.
Andrew S. Tanenbaum, Structured Computer Organization, 6th Edition, Prentice-Hall, 2013.

Complementary

Guilherme Arroz et al., Arquitectura de Computadores, 3a. Edição, IST Press, 2014.
John L. Hennessy and David A. Petterson, Computer Organization and Design, 5th Edition, Morgan Kaufman, 2014.

Code

0104065

ECTS Credits

6

Classes

  • Práticas e Laboratórios - 28 hours
  • Teóricas - 28 hours