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.