Aula 1: 04.03.2022 / 08.03.2022
Apresentação
Considerações gerais sobre o programa, bibliografia, funcionamento das
aulas e método de avaliação.
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 2: 11.03.2022 / 15.03.2022
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.
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. Números em vírgula flutuante. O formato IEEE 754:
precisão simples e precisão dupla.
Aula 3: 18.03.2022 / 22.03.2022
Representação de Dados
Números normalizados e não normalizados. Adição de números em vírgula
flutuante. Overflow e underflow. 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. Representação de instruções. Código assembly e código máquina.
Aula 4: 25.03.2022 / 29.03.2022
Programação em MIPS
Instruções comuns do MIPS: aritméticas, lógicas, para transferência de
dados, e de controle de fluxo. Pseudo-instruções. Modos de
endereçamento. Exemplos básicos utilizando construtores aritméticos,
condicionais e de controle de fluxo.
Aula 5: 01.04.2022 / 05.04.2022
Programação em MIPS
Espaço de endereçamento. Suporte à execução de
procedimentos. Procedure frames. Convenções caller e callee. Exemplos
de chamadas a procedimentos simples e a procedimentos
recursivos. Estrutura base de um programa. System calls.
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 6: 08.04.2022 / 19.04.2022
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. 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. 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.
Aula 7: 22.04.2022 / 26.04.2022
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 das instruções do
MIPS. Implementação de ciclo-único: fluxo de informação, fluxo de
controle e linhas de controle para um subconjunto representativo de
instruções do MIPS (instruções add, lw, sw, beq e j).
Aula 8: 29.04.2022 / 10.05.2022
Implementação do MIPS
Implementação de ciclo-único versus implementação multi-ciclo. 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. Máquina de estados da implementação
multi-ciclo.
Aula 9: 13.05.2022 / 17.05.2022
Implementação do MIPS
Pipelining. Passos da implementação pipelining. Fluxo de informação e
registos da implementação pipelining. Fluxo de controle da
implementação pipelining. Pipeline hazards. Data hazards: forwarding e
stalls. Forwarding unit e detection unit. Reordenação de
código. Control hazards: branch prediction. Excepções: traps e
interrupts.
Aula 10: 20.05.2022 / 24.05.2022
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. 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. 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.
Aula 11: 27.05.2022 / 31.05.2022
Hierarquia de Memória
Caches write-through e write-back. 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. Tabela de páginas,
faltas de página (page faults), translation-lookaside buffer (TLB),
interação entre a TLB, a tabela de páginas, as caches e a memória
física. Bits de paridade e códigos de deteção de erro: Error Detection
Code (ECC), Single Error Correcting (SEC), e Single Error
Correcting/Double Error Detecting (SEC/DED).
Aula 12: 03.06.2022 / 07.06.2022
Discussão e resolução do teste I. Revisões para o teste II.