Arquitetura de Computadores
2
2021-2022
01000096
Informática
Português
Presencial
Semestral
6.0
Obrigatória
1º Ciclo - Licenciatura
Conhecimentos de Base Recomendados
Tecnologias da Informática; Introdução à Programação e Resolução de Problemas; Princípios de Programação Procedimental.
Métodos de Ensino
As aulas teóricas introduzem os conceitos fundamentais sobre o desenho e implementação de uma arquitetura de computadores e a forma como o software se relaciona com ela.
As aulas teórico-práticas vão incidir na resolução de problemas, para posterior aplicação do conhecimento adquirido nas aulas laboratoriais.
A componente laboratorial consiste na realização de um conjunto de trabalhos práticos cujo enunciado é disponibilizado antecipadamente aos alunos e que acompanham e ilustram os conceitos apresentados nas aulas teóricas.
Resultados de Aprendizagem
Proporcionar ao aluno uma noção global do funcionamento de um sistema computacional, na perspetiva do programador e do projetista de sistemas digitais, com especial enfoque em: (i) conhecimentos sobre arquiteturas de computadores atuais e compromissos que devem ser tidos em consideração no desenvolvimento de um sistema computacional; (ii) programação em linguagem Assembly; e (iii) compreensão da forma como o software interage com o hardware.
De uma forma geral, aquisição de competências em análise e síntese, resolução de problemas, trabalho de grupo, raciocínio crítico, entendimento da linguagem de outros, aprendizagem autónoma, adaptabilidade a novas situações, e adaptação prática dos conhecimentos teóricos.
Estágio(s)
NãoPrograma
Módulo 1: Introdução à Arquitetura de Computadores
- Organização e funcionamento do CPU (unidade de lógica e controlo (ALU) e datapath)
- Execução paralela usando Pipelining
- Hierarquia de memória
- Unidade de Entrada/Saída
Módulo 2: Programação em Assembly para o MIPS
- Instruções aritméticas básicas
- Instruções de leitura e escrita da memória
- Mecanismos para controlo do fluxo de execução
- Codificação de instruções
- Números e representação em floating-point
- Criação de um executável (compilação, assemblagem, linkagem, etc.)
Módulo 3: Linguagens de alto-nível e o Hardware
- Ponteiros e endereçamento de memória
- Zonas de memória: código, alocação estática, pilha, e “heap” para alocação dinâmica
- Gestão de memória dinâmica
- Chamada a Funções/Procedimentos
- Portos de I/O e programação de hardware.
Docente(s) responsável(eis)
Paulo José Monteiro Peixoto
Métodos de Avaliação
Avaliação
Frequência: 25.0%
Trabalho laboratorial ou de campo: 25.0%
Exame: 50.0%
Bibliografia
1. Slides das Aulas / Slides from the Theoretical Courses
2. D.A. Patterson and J. L. Hennessy. Computer Organization and Design: The Hardware/Software Interface, 4th edition, Morgan Kaufmann.
3. B. W. Kernighan and D. M. Ritchie. The C Programming Language, 2nd edition, Prentice Hall.