Arquitectura de Computadores

Código

0104065

Créditos ECTS

6

Objetivos

- Identificar os componentes fundamentais da arquitectura de um computador e o seu papel no conjunto.
- Identificar os componentes fundamentais de um processador e o seu papel no conjunto.
- Identificar os diferentes tipos de instruções e os mecanismos (a um nível introdutório) para a execução dos mesmos.
- Compreender a forma como um programa, escrito numa linguagem de alto nível é executado, incluindo o papel do compilador, assembler e loader.
- Realizar programas simples em linguagem assembly.
- Compreender o funcionamento de interrupções/excepções, assim como a interface com os periféricos de um processador.
- Compreender a importância de uma estrutura hierárquica de memória e o seu papel no desempenho das aplicações.
- Identificar as vantagens e restrições inerentes ao funcionamento de um computador decorrentes das evoluções face à arquitectura original

Programa


Objetivos de aprendizagem

- Identificar os componentes fundamentais numa arquitetura de computador e o seu papel no conjunto.
- Identificar os componentes fundamentais num processador e o seu papel no conjunto; projetar os componentes fundamentais de um processador elementar.
- Aplicar o conceito de interrupção, nomeadamente nas operações de transferência de dados.
- Escolher o interface externo adequado à ligação com um periférico.
- Utilizar uma estrutura hierárquica de memória no contexto das arquiteturas de computadores.
* - Identificar as vantagens e restrições inerentes ao funcionamento de um computador decorrentes das evoluções face à arquitetura original.
- Programar um computador em linguagem “Assembly”.


Conteúdos programáticos

1. Arquitetura e organização de um computador
1.1. Componentes principais - modelo de von Neumann
1.2. História e evolução dos computadores
2. Unidade processamento principal (CPU)
2.1. Registos e unidades funcionais
2.2. Execução das instruções: interrupções, "pipelining" e paralelismo
3. Unidade de controlo
3.1. Funções e componentes
3.2. Implementações - microprogramação
4. Arquiteturas de processadores
4.1. RISC e CISC
4.2. Multi-core
5. Memórias
5.1. Interna - cache e RAM
5.2. Externa - discos magnéticos, óticos e flash
6. Buses
6.1. Tipos, estrutura e temporização
6.2. Implementações (exemplos)
7. Entradas e saídas
7.1. Módulos e técnicas de E/S
7.2. Interfaces externas - comunicação com os periféricos
8. Linguagem "assembly"
8.1. Instruções e tipos de dados
8.2. Entrada e saída de dados
8.3. Modos de endereçamento

Métodos de Ensino

Aulas teóricas

Exposição dos conceitos e apresentação de exemplos; resolução de exercícios teórico-práticos.
Realização de testes de diagnóstico no final de cada capítulo.

Aulas práticas laboratoriais

Montagem de componentes num computador e ligação de periféricos.
Construção de programas em linguagem "assembly"; utilização de uma ferramenta para codificação e teste de programas numa
linguagem "assembly" em particular.
Utilização do sistema de gestão de aprendizagem Moodle, onde estão disponíveis recursos e atividades diversas, como complemento
às aulas presenciais.

Bibliografia

Essencial

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.

Complementar

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.

Método de Avaliação