Departamento de Informática (UM)

Página de Unidade Curricular 🇬🇧

DesignaçãoCódigoCursoRegimeRegente

Sistemas e Arquiteturas de Computadores

16926 [ME97ME9700007451]

Mestrado em Computação Avançada [MCA]

S1

André Martins Pereira

Objetivos

Esta unidade curricular tem como objetivo fornecer os conhecimentos necessários aos estudantes para compreenderem, analisarem e avaliarem as características fundamentais de sistemas de computação. Os resultados da aprendizagem focam-se em entender como sistemas de computação representam e processam dados, e nos conceitos da sua arquitetura relevantes para o desempenho de código, dando ênfase ao desenvolvimento do pensamento crítico na análise e melhoria de limitações ao desempenho.
Os conteúdos programáticos são consistentes e sincronizados com estes resultados de aprendizagem. Os conceitos são apresentados recorrendo a casos de estudo, permitindo aos estudantes avaliar o impacto de usar eficazmente o hardware no desempenho e eficiência do código. Os conteúdos estão estruturados de forma a permitir o estudo incremental e o teste de otimizações e metodologias que permitam o desenvolvimento de código paralelo eficiente.

Programa

1. Estrutura e organização de um computador
2. Representação binária de números inteiros e reais
3. Modelo de execução de desempenho (métricas e previsão de desempenho)
4. Organização e desempenho da hierarquia de memória
5. Encadeamento de instruções, superescalaridade, e processamento vetorial
6. Paralelismo em ambientes de memória partilhada com dispositivos multicore

Bibliografia


Computer Organization and Design: The Hardware/Software Interface, David Patterson and John Hennessy, 5th Edition, Morgan Kaufmann, 2013.

Computer Systems: A Programmer's Perspective, Randal E. Bryant and David R. O'Hallaron, 3rd Edition, Pearson, 2016.

Algorithms in C: parts 1-4, Fundamentals, Data Structures, Sorting, and Searching, Robert Sedgewick, 3rd Edition, Addison-Wesley Longman Publishing Co., 1997.

Resultados da aprendizagem

- Reconhecer a organização e estrutura de um computador
- Analisar o funcionamento de programas imperativos (tipo C)
- Usar efetivamente ferramentas de compilação de linguagens de alto nível
- Caracterizar as métricas de desempenho e a sua relação com o código
- Avaliar o impacto do uso implícito e explícito da hierarquia de memória
- Analisar o impacto da superescalaridade e do processamento vetorial no desempenho de código

Método de avaliação

A avaliação é feita através de dois testes (80% - 90%) e participação nas sessões práticas (10% - 20%).


Funcionamento

Turno: T 1; Docente: André Martins Pereira; Dep.: DI; Horas: 15.
Turno: PL 1; Docente: Gonçalo Medeiros São Pedro Raposo; Dep.: DI; Horas: 30.

[ Outras UCs do Departamento ]