Aula 1: 14.02.2023 / 17.02.2023
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: 24.02.2023 / 28.02.2023
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: 03.03.2023 / 07.03.2023
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: 10.03.2023 / 14.03.2023
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: 17.03.2023 / 21.03.2023
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: 24.03.2023 / 28.03.2023
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: 11.04.2023 / 14.04.2023
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: 18.04.2023 / 21.04.2023
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: 28.04.2023 / 02.05.2023
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: 05.05.2023 / 16.05.2023
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).
Aula 11: 19.05.2023 / 23.05.2023
Hierarquia de Memória
Caches write-through e write-back. Políticas de substituição e
tratamento de falhas. 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: 26.05.2023 / 30.05.2023
Discussão e resolução do teste I. Revisões para o teste II.