Arquitetura de Computadores

Ano
1
Ano lectivo
2012-2013
Código
01000096
Área Científica
Informática
Língua de Ensino
Português
Outras Línguas de Ensino
Inglê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 dos Computadores; Introdução à Programação e Resolução de Problemas.

Métodos de Ensino

Distribuição das 5h de contacto semanais:
- 2h de teórica, suportadas por slides e estudo dos capítulos de livro recomendados;
- 1h de teórico-prática, que incidem na resolução de problemas;
- 2h de prática laboratorial, onde se realiza um conjunto de trabalhos, esclarecem dúvidas e avalia o trabalho realizado.

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 e consequente consolidação das competências de programação em linguagem C.

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

-          Pooling e Interrupções (se houver tempo disponível)

 

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: A Linguagem C e o Hardware (se houver tempo disponível)

-          Linguagem C (revisão de conceitos básicos)

-          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

Portos de I/O e programação de hardware

Docente(s) responsável(eis)

Gabriel Falcão Paiva Fernandes

Métodos de Avaliação

Avaliação
Frequência: 25.0%
Desempenho nas aulas laboratoriais: 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.