Aula 1: 16.09.2019
Apresentação
Considerações gerais sobre o programa, bibliografia, funcionamento das
aulas e método de avaliação.
Aula 2: 19.09.2019
Conceitos Básicos
Breve história do computador digital e das tecnologias afins. A
arquitetura de von Neumann. Microprocessadores. Lei de Moore. Evolução
do desempenho dos processadores. Multiprocessadores.
Aula 3: 23.09.2019
Execução de Programas
Estágios na transformação de um programa em C num processo em
execução: compilador, assemblador, linker e loader. Código assembly e
código máquina. Object files, linking estático e linking
dinâmico. Carregar um programa para memória.
Aula 4: 26.09.2019
Representação de Dados
Codificação de caracteres. Números inteiros com e sem
sinal. Representação em complemento para 2. Adição de números
inteiros. Overflow.
Aula 5: 30.09.2019
Representação de Dados
Números em vírgula flutuante. O formato IEEE 754: precisão simples e
precisão dupla. Números normalizados e não normalizados. Adição de
números em vírgula flutuante. Overflow e underflow.
Aula 6: 03.10.2019
Representação de Dados
Regras de arredondamento em IEEE 754. Registos e memória como locais
de manipulação e armazanamento de dados. Endianness.
Programação em MIPS
O projeto MIPS. Diferenças entre computadores CISC e RISC. Registos do
MIPS.
Aula 7: 07.10.2019
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 de fluxo.
Aula 8: 10.10.2019
Programação em MIPS
Pseudo-instruções. Modos de endereçamento. Exemplos básicos utilizando
construtores aritméticos, condicionais e de controle de fluxo.
Aula 9: 14.10.2019
Programação em MIPS
Espaço de endereçamento. Suporte à execução de
procedimentos. Procedure frames. Convenções caller e callee.
Aula 10: 17.10.2019
Programação em MIPS
Exemplos de procedimentos simples e recursivos. Estrutura base de um
programa. System calls.
Aula 11: 21.10.2019
Componentes Básicas
Circuitos lógicos sem memória (combinatórios) e com memória
(sequenciais). Portas lógicas básicas e portas lógicas
universais. Descodificador e multiplexador. Unidade lógica e
aritmética (ALU) de 1 bit e de 32 bits.
Aula 12: 24.10.2019
Componentes Básicas
Sinal de relógio. Célula de memória de 1 bit assíncrona - S-R
latch. Célula de memória de 1 bit síncrona - D latch e D
flip-flop. Implementação da componente de registos - register file.
Aula 13: 28.10.2019
Componentes Básicas
Leitura e escrita do register file. Implementação de memórias SRAM,
DRAM e synchronous RAM (SSRAM, SDRAM e DDRRAM).
Análise de Desempenho
Fatores que influenciam o desempenho. Métricas de desempenho. Tempo de
resposta (response time) e taxa de transferência (throughput). Relação
entre desempenho e tempo de execução.
Aula 14: 31.10.2019
Análise de Desempenho
Diferenças entre tempo de CPU, tempo de utilizador e tempo de
sistema. Instruction count (IC), clock cycles per instruction (CPI) e
instructions per clock cycle (IPC). Equação de desempenho. Vantagens
das arquiteturas RISC.
Implementação do MIPS
Diferenças entre Instruction set architecture (ISA) e possíveis
implementações. Arquiteturas single-register, special-purpose register
e general-purpose register. Arquiteturas load-store, register-memory e
memory-memory. Visão genérica do fluxo de informação para um
subconjunto representativo de instruções do MIPS.
Aula 15: 04.11.2019
Implementação do MIPS
Fluxo de informação e de controle para um subconjunto representativo
de instruções do MIPS.
Aula 16: 07.11.2019
Implementação do MIPS
Linhas de controle para um subconjunto representativo de instruções do
MIPS. Implementação de ciclo-único (single-cycle) versus implementação
multi-ciclo (multi-cycle).
Aula 17: 11.11.2019
Implementação do MIPS
Fluxo de informação e de controle da implementação
multi-ciclo. Diferenças para a implementação de ciclo-único. Passos da
implementação multi-ciclo: IF, ID, EX, MEM e WB.
Aula 18: 14.11.2019
Implementação do MIPS
Máquina de estados da implementação multi-ciclo. Pipelining. Passos da
implementação pipelining. Fluxo de informação e registos da
implementação pipelining.
Aula 19: 18.11.2019
Implementação do MIPS
Fluxo de controle da implementação pipelining. Pipeline hazards. Data
hazards: forwarding e stalls. Forwarding unit e detection unit.
Aula 20: 21.11.2019
Implementação do MIPS
Reordenação de código. Control hazards: branch prediction. Excepções:
traps e interrupts. Tratamento de excepções no MIPS.
Hierarquia de Memória
Hierarquia de memória: relação entre níveis da hierarquia, distância
ao CPU e tamanho em bytes. Princípio da localidade: localidade
temporal e localidade espacial.
Aula 21: 25.11.2019
Revisões para o teste.
Aula 22: 28.11.2019
Teste.
Aula 23: 02.12.2019
Hierarquia de Memória
Acertos (hits) e falhas (misses): taxa de acerto (hit rate), taxa de
falha (miss rate), tempo de acesso em caso de acerto (hit time) e em
caso de falha (miss penalty). Memórias cache de mapeamento direto
(direct-mapped caches). Total de bits na implementação duma
cache. Considerações sobre o tamanho dos blocos duma cache.
Aula 24: 05.12.2019
Hierarquia de Memória
Memórias cache associativas: totalmente associativas (fully
associative caches) e de n-vias (n-way set associative
caches). Políticas de substituição e tratamento de falhas. Caches
write-through e write-back.
Aula 25: 09.12.2019
Hierarquia de Memória
Desempenho das caches: relação com o CPI e com a frequência do
relógio. Caches multinível. Memória virtual: endereços virtuais e
endereços físicos.
Aula 26: 12.12.2019
Hierarquia de Memória
Memória virtual: tabela de páginas, faltas de página (page faults) e
algoritmos para a troca de página. Translation-lookaside buffer
(TLB). Interação entre a TLB, a tabela de páginas, as caches e a
memória física.
Aula 27: 16.12.2019
Discussão e resolução do teste.
Aula 28: 19.12.2019
Discussão e resolução do teste.