MIPS - Pipe Line
É uma técnica de implementação que visa maximizar a utilização dos diferentes recursos de HW
Pipeline permite que várias instruções sejam processadas simultaneamente com cada parte do HW atuando numa instrução distinta
Aumento do número de estágios do pipeline aumenta o desempenho
Estágios de um Pipeline:
IF (Instruction Fetch) : Busca instrução
ID (Instruction Decode): Decodifica instrução e lê registradores
EX (EXecute operation) : Calcula dados ou endereços
MEM (Access MEMory operand): Acessa operando na memória
WB (Write result Back to register): Escreve resultado no registrador
MIPS projetado para pipeline:
• Todas as instruções são de 32 bits, mais fácil de buscar e decodificar em um ciclo
• Poucas instruções e instruções regulares, permite decodificação e leitura de registradores em um estágio
• Endereçamento do Load/store : Permite cálculo de endereço no terceiro estágio e acesso no quarto estágio
Melhora de desempenho por utilizar pipeline:
• Estágios com a mesma duração
• Instruções independentes de resultados calculados em instrução anterior
• Execução sequencial das instruções
Conflitos : Situações que evitam que uma nova instrução seja iniciada no próximo ciclo
• Estruturais: Recurso necessário para execução de uma instrução está ocupado, por exemplo, 2 instruções tentam acessar a memória no mesmo ciclo. Solução é replicar recurso.
• Dados : Dependência de dados entre instruções, uma instrução depende de um dado gerado por uma instrução anterior. o Soluções em software (compilador/montador) : Inserção de NOPs e Re-arrumação de código. o Soluções em hardware : Método de Curto-circuito (Forwarding), Usa o resultado desejado assim que é computado; Inserção de retardos (stalls).
Como Implementar Forwarding?
• Idéia é acrescentar HW com uma lógica capaz de detectar conflitos de dados e controlar unidade de processamento para realizar o forwarding
• Deve-se acrescentar mais conexões para permitir que