Arquitetura de Computadores I Pipeline -- Execções -- Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno
Exceções Exceções (ou interrupções ou falta) Desvio para um endereço que não faz parte de uma instrução na pipeline Várias causas Requisição de um dispositivo de I/O Chamada ao sistema operacional por um programa Depuração de código (Tracing, Breakpoint) Overflow em aritmética inteira Aritmética de FP (valores fora da faixa, NAN) Page Fault(Dado ou instrução fora da memória principal) Acesso desalinhado Violação de proteção de memória Instrução inválida Problemas de hardware (por ex., detectados com códigos) Falta de energia
Classificação Evento síncrono: Sempre na mesma instrução com dado na mesma posição de memória Evento assíncrono: Exceção geralmente pode ser tratada após a execução da instrução. Exceção localizada fora da CPU ou da memória. Requisitadas: Instrução no programa de usuário. Tratável ao término da instrução. Forçadas: Problemas de hardware fora de controle do programador
Classificação (cont...) Mascarável: Reconhecimento do evento pode ser desabilitado pelo usuário Não-mascarável: Geralmente eventos ligados ao hardware Intra-intrução: Eventos ocorrem durante a operação de uma dada instrução Exceções síncronas causadas pela instrução Exceções assíncronas devidas ao mal funcionamento do hardware Inter-instrução: É possível completar a instrução antes de tratar a exceção
Classificação Com término do programa: Programa é encerrado depois do evento de exceção Com retomada do programa: Programa deve retomar sua execução Mais difícil implementação: Exceções intra-instruções com retomada Envolve salvar o estado, sanar a causa e retomar a execução! Pipeline reiniciável: presente nos computadores atuais Ausente nos computadores mais antigos
Execução Suspenção e retomada Muito difícil: Exceção no meio da operação de uma instrução Exemplo: falta de página durante o acesso à memória de dados Problema: Outras instruções estão executando na pipeline É preciso parar a pipeline e salvar o estado do processador Por exemplo, transformando a instrução que causou a exceção em NOP também todas as instruções que se seguem na pipeline
Pipeline vs Exceções Exceções Precisas Instruções anteriores àquelas que causou a exceção são completamente executadas Instrução na qual ocorreu exceção e todas as sucessivas não alteram o estado Exceções Imprecisas Não é possível garantir que o estado não tenha sido alterado.
Em sistemas reais Com pipelines para aritmética sobre inteiros Suporte a exceções precisas é mais simples Suporte à memória virtual, geralmente demanda exceções precisas para falta de página Implementação de exceções precisas pode usar recursos de hardware e software MIPS Pipeline Exceções precisas Tratamento de exceções na mesma ordem que ocorreriam num implementação sem pipeline
Exceções na Pipeline MIPS
Exemplos de exceções Pipeline para Aritmética com Inteiros Podem ocorrer múltiplas exceções em um mesmo ciclo. LD Falha no acesso à memória de dados DADD Falha durante a operação aritmética Exceções podem ocorrer fora de ordem. Como implementar exceções precisas?
Tratamento de Exceções Para cada instrução: Vetor de exceções (Exception status vector) Marca exceções que ocorrem durante a execução da instrução Acompanha instrução passando pelos registradores de pipeline A partir do momento em que ocorre uma exceção Nenhuma instrução pode escrever em registradores ou memória Instrução de STORE: armazenamento em memória de dados não é permitido quando ocorre falta de página
Tratamento de Exceções Exceções são conferidas quando a instrução chega ao início do estágio WB Tratamento em ordem de ocorrência Exceções da instrução i são tratadas antes daquelas da instrução i+1 Se houve uma exceção as mudanças de estado deveriam ser invalidadas. Graças ao bloqueio de escrita, não houve mudança...
Atenuações do problema em MIPS Pontos que simplificam o projeto de exceções Um resultado por instrução Escrita no final da instrução Instruções que atingem o final do estágio MEM (ou o início do WB) sem marca de exceção tem garantia de término Portanto, somente instruções com garantia de término (committedi nstructions) realizam escritas que alteram estado. Garantia de término antes de alterações de estado