Sistemas de Microprocessadores

Ano
1
Ano lectivo
2014-2015
Código
01000340
Área Científica
Sistemas Digitais e Computadores
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

Programação de Computadores (preferencialmente em linguagem C); Laboratório de Sistemas Digitais.

Métodos de Ensino

A disciplina prevê 5 horas de contacto semanais: 2 horas de explanação teórica numa aula magistral de tipo convencional, e 3 horas de prática laboratorial em turmas de não mais que 20 alunos.

As aulas teóricas são suportadas por slides que sumarizam os conceitos a ser discutidos em cada sessão e encaminham para os capítulos dos livros recomendados. Estes slides são disponibilizados com um mínimo de 8 dias de antecedência, e os alunos são incentivados a lê-los previamente de forma a tirarem o máximo partido da aula de exposição que tipicamente é muito participada.

A componente laboratorial consiste num conjunto de trabalhos que acompanham e ilustram os conceitos discutidos na nas teóricas. Cada sessão corresponde a um trabalho cujo enunciado é disponibilizado com um mínimo de 8 dias de antecedência.

A avaliação é feita através dos seguintes componentes:

• Trabalhos Laboratoriais (25%)

• Frequência (semana 11) (25%)

• Exame teórico final (50%)

Resultados de Aprendizagem

Sistemas de microprocessadores pretende dar ao aluno uma noção global do funcionamento de um sistema computacional, estabelecendo um ponte clara entre os conteúdos lecionados nas disciplinas de linguagens de programação e sistemas digitais. No fim da unidade curricular espera-se o desenvolvimento das seguintes competências: (i) compreensão da forma como o software interage com o hardware e consequente consolidação das competências de programação em C, (ii) programação em assembly, (iii) conhecimentos sobre as arquiteturas de computadores atuais e “trade-offs” que têm que ser tidos em consideração durante o desenho de um sistema computacional, e (iv) compreensão dos princípios de abstração por camadas que permitem o desenho e implementação de sistemas complexos.

Estágio(s)

Não

Programa

Módulo 1: A Linguagem C e o Hardware

- 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

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 floatingpoint

- make-ing an Executable (compilação, assemblagem, linkagem, etc)

Módulo 3: Introdução à Arquitectura de Computadores

- Organização e funcionamento do CPU (datapath e lógica de controlo)

- Execução paralela usando Pipelining

- Hierarquia de memória

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

Docente(s) responsável(eis)

João Pedro de Almeida Barreto

Métodos de Avaliação

Avaliação
Trabalho laboratorial ou de campo: 25.0%
Frequência: 25.0%
Exame: 50.0%

Bibliografia

• Joao P Barreto (2009). Slides das Aulas / Slides from the Theoretical Courses. - DEEC, Universidade de Coimbra

• Patterson and Hennessy (2004). “Computer Organization and Design: The Hardware/Software Interface”, Third Edition, (COD).

• Kernighan and Ritchie (1988). “The C Programming Language”, 2nd edition, Prentice Hall