Baixe o app para aproveitar ainda mais
Prévia do material em texto
06/04/2020 1 Requisitos para Alto Desempenho RISC x CISC 2 Requisitos para Alto Desempenho • Arquiteturas RISC X CISC • Histórico • Arquitetura CISC • Arquitetura RISC • Projeto com foco no desempenho • Arquitetura RISC x CISC • Alto desempenho da arquitetura RISC 3 Arquitetura CISC Primeiros computadores digitais: arquitetura simples, poucas instruções e um ou dois modos de endereçamento. Em meados da década de 60 surgiu o IBM/360 que trouxe como novidade instruções mais complexas e completes, programáveis (instruções eram de fato microprogramas). Isso ocorreu devido ao surgimento de novas linguagens de programação, com estruturas mais elaboradas, usando instruções do tipo: IF_ELSE, WHILE, CASE, … mapeadas através das instruções de máquina MOVE, ADD, JMP, JZ, JNZ, … com menor expressividade. Essa diferença foi chamada de “gap semântico”. A solução foi elevar o nível da linguagem de máquina através da microprogramação, incorporando novos modos de endereçamento. Solução CISC - Complex Instruction Set Computers 4 Arquitetura CISC Nível de Linguagem de Montagem (Assembly) Nível de Linguagem de Programação Orientada a Problemas Nível de Sistema Operacional Nível de Máquina Nível de Microprogramação Nível de Lógica Digital Nível 0 Nível 1 Nível 2 Nível 3 Nível 4 Nível 5 Execução Hardware Interpretação Microprograma Interpretação Sistema Operacional Tradução Montador Tradução Compilador Níveis das Instruções: 5 Arquitetura RISC À medida que a linguagem de máquina foi ficando mais complexa os microprogramas ficaram maiores e mais lentos. Avanços na área de desenvolvimento de software possibilitaram o desenvolvimento de compiladores capazes de gerar microcódigos eficientes. Surgiram as máquinas com instruções simples: um único formato de instrução, poucos modos de endereçamento. Adoção da técnica denominada “pipeline” onde os passos da busca e da execução das instruções são feitos em paralelo. Solução RISC – Reduced Instruction Set Computers Projeto com foco no Desempenho As técnicas usadas para aumentar a velocidade de processamento do microprocessador são: Execução em pipeline Predição de desvio Execução superescalar Análise de fluxo de dados Execução especulativa 7 • Arquitetura de Harvard • É uma arquitetura onde a leitura de instruções e de alguns tipos de operandos pode ser feita ao mesmo tempo em que executa instruções. • Enquanto uma instrução está sendo executada, a seguinte está sendo lida. • A busca e a execução das instruções ocorrem em paralelo. • Esse processo é conhecido como pipelining. Ref: https://pt.wikipedia.org/wiki/Arquitetura_Harvard Projeto com foco no Desempenho https://pt.wikipedia.org/wiki/Arquitetura_Harvard Execução em pipeline A execução de uma instrução envolve vários estágios, como: o Busca da instrução na memória; o Decodificação das diversas partes do código de operação (opcode); o Busca de operandos na memória; o Realização de cálculos pertinentes à instrução; Cada estágio envolve diferentes ciclos de máquina O pipeline possibilita que um processador trabalhe simultaneamente em diversas instruções ao executar um estágio diferente de cada instrução ao mesmo tempo. Projeto com foco no Desempenho Exemplo de Pipeline de 5 estágios: o Estágio 1 - Busca da instrução na memória; o Estágio 2 - Decodificação das diversas partes do código de operação (opcode); o Estágio 3 - Busca de operandos na memória; o Estágio 4 - Realização de cálculos pertinentes à instrução; o Estágio 5 – Escrita de resultados Funcionamento: Projeto com foco no Desempenho Estágio 1 instrução1 instrução2 instrução3 instrução4 instrução5 Estágio 2 instrução1 instrução2 instrução3 instrução4 Estágio 3 instrução1 instrução2 instrução3 Estágio 4 instrução1 instrução2 Estágio 5 instrução1 Predição de desvio O processador antecipa o código de instrução buscado a partir da memória e prediz quais desvios ou grupos de instruções provavelmente serão processadas em seguida. Se o processador prediz corretamente a maior parte do tempo, ele pode antecipar a busca das instruções corretas e agrupá-las, de modo a mantê-lo ocupado com a execução dos programas. A predição de desvio potencialmente aumenta a quantidade de trabalho do processador. Projeto com foco no Desempenho Conflitos em predição de desvio Dependências estruturais – relacionadas ao conflito de acesso a recursos comuns. Solução: uma instrução espera a outra executar. Dependência de dados – uma instrução depende de resultados de outra que ainda está em estágio anterior no pipeline. Solução: procurar antecipar a obtenção do operando que falta. Dependências de controle – tomada de decisão com base no resultado de uma instrução enquanto outras estão sendo executadas. Estão relacionadas a desvios condicionais. Solução: pipeline executa a instrução de desvio, interrompendo a execução das demais instruções. Se o desvio não se efetivar, perde-se um ciclo, caso contrário, são ignoradas as demais execuções. Projeto com foco no Desempenho Projeto com foco no Desempenho – Execução superescalar Execução superescalar Capacidade de enviar mais de uma instrução em todos os ciclos de clock de processador, o que requer o uso de pipelines paralelos. Projeto com foco no Desempenho Análise de fluxo de dados O processador analisa quais instruções são dependentes dos resultados ou dados, uma das outras, a fim de criar uma lista otimizada de instruções. As instruções são listadas para serem executadas quando prontas, de forma independente do pedido do programa original, para prevenir atrasos desnecessários. Projeto com foco no Desempenho Execução especulativa Usando a predição de desvio e a análise de fluxo de dados, alguns processadores especulativamente executam instruções antes de seu surgimento real na execução do programa, mantendo os resultados em locais separados. O objetivo é manter os mecanismos de execução do processador ocupados o máximo possível, a partir da execução de instruções que provavelmente serão executadas. Técnicas especulativas sobre desvios (busca do fluxo de maior probabilidade de execução) Implementadas por software: Delayed branch – consiste na reorganização das instruções, preservando a semântica do programa e minimizando os retardos impostos pela ramificação. O compilador tenta realocar instruções para depois das instruções de desvio. Branch Folding – em instruções que dependem dos flags é possível que os flags já estejam ‘setados’ e o resultado do desvio seja conhecido quando for executado. Neste caso a instrução de desvio pode ser removida do fluxo, sendo substituída pela instrução de seu sucessor lógico. Essa técnica tem como efeito um desvio de fluxo zero. Projeto com foco no Desempenho Técnicas especulativas sobre desvios (busca do fluxo de maior probabilidade de execução) Implementadas por software: In-line – consiste em substituir as procedures pelo código objeto correspondente, nos locais de ativação. Isso reduz o tempo de execução de troca dos parâmetros e transferência do controle de execução (chamadas e retornos). Tem como desvantagem o aumento do código objeto. Desenrolamento de loops – consiste de usar registradores para controle de loops (variáveis de controle do for) evitando as instruções de load e store nessas variáveis. Projeto com foco no Desempenho Técnicas especulativas sobre desvios (busca do fluxo de maior probabilidade de execução) Implementadas por hardware: atuam em tempo de execução do programa. Técnicas estáticas – implementadas em 3 variações: o desvio sempre ocorrerá, nunca ocorrerá ou o código da operação determina a previsão. Na primeira é buscada a instrução no endereço alvo ao invés de buscar a do código adjacenteà instrução de desvio. Na segunda, é buscada a instrução adjacente ao comando de desvio (usada na busca antecipada de instruções). A terceira considera o código de operação já que alguns códigos têm uma tendência maior para um dos fluxos. Essa técnica usa resultados de simulações sobre o comportamento dos desvios, calcula suas probabilidades e armazena os resultados em uma ROM no interior do processador, que é consultada em tempo de execução. Projeto com foco no Desempenho Técnicas especulativas sobre desvios (busca do fluxo de maior probabilidade de execução) Implementadas por hardware: atuam em tempo de execução do programa. Técnicas dinâmicas – armazenam informações em tempo de execução e, quando o desvio for novamente executado, verifica o desvio utilizado no passado mais recente e especula o resultado. Para isso utiliza uma tabela de histórico de desvios e o endereço da próxima instrução a ser executada ou mesmo a instrução a ser executada, eliminando o passo da busca da instrução de desvio. As técnicas dinâmicas podem ser melhoradas se contarem com bits de sucesso/insucesso nas operações de desvio e mesmo contadores indicando a quantidade de iterações. Projeto com foco no Desempenho 19 Arquitetura RISC x CISC Diferenças entre as arquiteturas RISC e CISC RISC CISC Instruções LOAD e STORE referenciam a memória principal Altamente pipelined Instruções executadas por hardware Instruções com formato fixo Poucas instruções e modos de endereçamento Múltiplos conjuntos de registradores Compilador arca com a tarefa mais complexa Instruções simples, com 1 ciclo Instruções com vários ciclos Várias instruções referenciam a memória Pouco uso do pipeline Instruções interpretadas por microprograma Vários formatos de instrução Vários formatos de instrução Conjunto único de registradores Microprogramas arcam com as Tarefas mais complexas 20 Alto Desempenho da Arquitetura RISC Instruções executadas por hardware e não por microprogramas. Menor quantidade de instruções: o número de bits do código da instrução é menor, ganho de tempo na decodificação. Instruções de um único tamanho: apenas 1 acesso à memória para busca da instrução e 1 para execução das instruções LOAD e STORE (fazem acesso à memória). Execução otimizada das chamadas de funções (parâmetros são armazenados em registradores). A arquitetura conta com múltiplos conjuntos de registradores. Menor quantidade de modos de endereçamento, facilitando a decodificação das instruções também. E, o mais importante, execução em pipeline. A arquitetura tem melhor desempenho por se beneficiar do paralelismo. Perguntas?
Compartilhar