2024

Arquitetura de Computadores I

Nome: Arquitetura de Computadores I
Cód.: INF13187L
6 ECTS
Duração: 15 semanas/156 horas
Área Científica: Informática

Língua(s) de lecionação: Português
Língua(s) de apoio tutorial: Português

Objetivos de Desenvolvimento Sustentável

Objetivos de Aprendizagem

A unidade curricular tem como objectivo introduzir os estudantes aos conceitos fundamentais dos dispositivos computacionais, nomeadamente a organização e estrutura de um computador digital e a sua programação em baixo nível. Os alunos deverão compreender como é executado um programa e estar aptos a escrever programas em Assembly. Os alunos deverão obter os seguintes conhecimentos:
- Organização da memória de um computador (bits, bytes, endereços);
- Conhecer uma arquitectura de conjunto de instruções (e.g. MIPS), incluindo o código máquina;
- Conhecer alguns detalhes de uma Application Binary Interface (pilha, heap, chamada de funções e passagem de argumentos, utilização de registos);
- Representação de números inteiros e vírgula flutuante (IEEE754) em binário.

Conteúdos Programáticos

- Introdução à arquitectura de Von Neumann (stored program computer).
- Organização da memória. Conceito de byte e endereço.
- Versão simplificada do ciclo de execução de instruções pelo processador (busca, descodificação, execução). O papel do registo Program Counter.
- Introdução ao microprocessador MIPS: registos, instruções em assembly, endereçamento. Bytes, words e endianness. Código máquina.
- Organização de um programa. Versão simplificada de uma Application Binary Interface (convenções de utilização dos registos, chamada de funções, passagem de argumentos e retorno, pilha, alocação de memória).
- Mecanismo de excepções. Interrupts e syscalls. Modos de execução usermode e kernelmode do processador.
- Representação de números em vírgula flututante no formato IEEE754. Questões numéricas.
- Breve introdução a questões de segurança em software (buffer overflows e exploits).

Métodos de Ensino

O método de ensino consiste em aulas teóricas de 2h e aulas práticas de 2h ambas leccionadas uma vez por semana.
Nas aulas teóricas é exposta a matéria acompanhada de exemplos. Nas aulas práticas são resolvidos problemas em papel ou computador relativos à matéria leccionada recentemente. Está simultaneamente disponível uma plataforma online com exercícios com correcção automática para auxiliar o estudo em casa.
A avaliação é composta por duas componentes: uma teórica e uma prática.
A componente teórica consiste em:
- vários testes realizados ao longo do semestre sobre os vários tópicos leccionados.
- um exame final sobre toda a matéria.
A componente prática consiste num trabalho realizado em grupo e com duração de várias semanas. É obrigatória uma apresentação do trabalho e discussão oral no final.

Bibliografia

- David Patterson & John Hennessy, "Computer Organization and Design - The Hardware/Software Interface", Morgan Kaufmann.
- Textos de apoio e slides disponibilizados na plataforma de eLearning.
- Conjunto de exercícios das aulas práticas.
- Plataforma online com problemas teóricos e de programação com correcção automática.