Plano de Estudos

Unidade curricular do 1º semestre dos seguintes cursos da Faculdade de Ciências da Universidade do Porto:

Escolaridade

2 horas teóricas e 2 horas práticas por semana.

Objectivos

Fornecer aos estudantes os conceitos fundamentais da organização e funcionamento de um computador, nomeadamente, o seu modelo de representação de dados e programas, as suas componentes e interações, e a forma de avaliar o seu desempenho.

Programa

Conceitos Básicos
Breve história do computador digital e das tecnologias afins. A arquitetura de von Neumann. Lei de Moore. Evolução do desempenho dos processadores.

Execução de Programas
Estágios na transformação de um programa: compilador, assemblador, linker e loader. Object files. Linking dinâmico.

Representação de Dados
Codificação de caracteres. Números inteiros com e sem sinal. Representação em complemento para 2. Números em vírgula flutuante. O formato IEEE 754. Adição de números inteiros e de vírgula flutuante. Overflow e underflow. Registos e memória no MIPS.

Programação em MIPS
Representação de instruções. Código assembly e código máquina. Instruções comuns do MIPS: aritméticas, lógicas, para transferência de dados, e de controle. Pseudo-instruções. Modos de endereçamento. Exemplos básicos utilizando construtores aritméticos, condicionais e de controle de fluxo. Suporte à execução de procedimentos. Procedure frames. Convenções caller e callee. Exemplos de procedimentos simples e recursivos. System calls. Estrutura base de um programa.

Componentes Básicas
Portas lógicas universais, decoders, multiplexors, adders e ALUs. Sinal de relógio. Latches e flip-flops. Registos. Memórias SRAM e DRAM.

Análise de Desempenho
Tempo de resposta e throughput. Tempo de execução e tempo de CPU. Clock cycles per instruction (CPI) e instructions per clock cycle (IPC). Equação de desempenho de um processador.

Implementação do MIPS
Fluxo de informação e de controle para um subconjunto de instruções do MIPS. Implementação de ciclo-único. Implementação multi-ciclo. Passos da implementação multi-ciclo e respectiva máquina de estados. Pipelining. Pipeline hazards. Tratamento de excepções.

Hierarquia de Memória
Memórias cache. Caches de mapeamento direto. Caches write-through e write-back. Caches associativas. Caches multi-nível. Memória virtual. Translation-lookaside buffer. Códigos para a deteção e correção de erros.

Bibliografia

Computer Organization and Design, The Hardware/Software Interface, 5/E
David Patterson and John Hennessy, Morgan Kaufmann, 2014

Avaliação

A avaliação dos alunos faz-se por realização de dois testes escritos ou por exame final escrito.

Frequência

Para obtenção de frequência é necessária a presença em pelo menos 2/3 das aulas práticas.

Corpo Docente

Ricardo Rocha e João Soares