Programação de Computadores (preferencialmente em linguagem C); Laboratório de Sistemas Digitais.
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%)
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.
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)
João Pedro de Almeida Barreto
Avaliação
Trabalho laboratorial ou de campo: 25.0%
Frequência: 25.0%
Exame: 50.0%
• 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