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.