Arquitetura de Computadores

Ano
2
Ano lectivo
2023-2024
Código
01000096
Área Científica
Informática
Língua de Ensino
Português
Modo de Ensino
Presencial
Duração
Semestral
Créditos ECTS
6.0
Tipo
Obrigatória
Nível
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ão

Programa

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.