Contextualização de Paralelismo em nível de instrução

Slides:



Advertisements
Apresentações semelhantes
Paralelismo em Máquinas Monoprocessadas
Advertisements

Organização de Computadores I
WebDesign Redes de Computadores Aula 07
Arquitetura e organização de computadores
Arquitetura e organização de computadores.
Arquitetura de Computadores
Aula 06: Introdução ao Pipelining, Hazards Estruturais e Forwarding
Software Básico Silvio Fernandes
ARQUITETURAS RISC E CISC
Sistemas Digitais Projeto RTL – Unidade de Execução
Unidades de Execução e de Controle Sistemas Digitais.
Exemplo de arquitetura registrador-registrador- MIPS
MIPS PIPELINE.
MIPS MULTICICLO Fluxo de Dados e Controle
Arquitetura de Sistemas Operacionais
Processo de Pipelining (exemplo da lavanderia)
Processador Intel Itanium
Daniel M. Aquino, Marcelo C. Perez, Thais A. B. Fernandes
Arquiteturas Superescalares
Paralelismo em nível de instrução: Arquiteturas VLIW Grupo 01: Júlia Martinez Perdigueiro ra Tatiane Baggio Borili ra
Pipeline.
Organização de Computadores Inserindo o Controle Identifica pontos de controle no caminho de dados – Busca da instrução – Operações lógicas e aritméticas.
Aula 8 01/09/10 (Turmas 1 e 2) Profa. Sarita
SSC114 Arquitetura de Computadores Pipeline - Predição de desvios
SSC144 Arquitetura de Computadores Introdução
SSC114 Arquitetura de Computadores Pipeline - Desempenho
Aula 10 06/10/10 (Turma 1 e 2) Profa. Sarita
Introdução à Informática
Joao Cláudio Soares Otero
Rganização de Computadores Melhorias de Desempenho com Pipelines - Parte B - Capítulo 6 – Patterson & Hennessy Organização de Computadores Melhorias de.
Rganização de Computadores Melhorias de Desempenho com Pipelines Capítulo 6 – Patterson & Hennessy Organização de Computadores Melhorias de Desempenho.
Multiplicador e Forwarding no MIPS
Melhorando o desempenho com pipeline
Avaliando e Compreendendo o Desempenho - Respostas
Processadores – Aula 3 Professor: André Luis Meneses Silva
Arquitetura de Computadores
Processadores – Aula 3 Professor: André Luis Meneses Silva
2- Entendendo o que é Arquitetura e Organização
Introdução à Programação
Prof. Felipe Ferreira de Oliveira
Fundamentos da Arquitetura de Computadores
Prof.: Vagner Pinto Borges Prof.: Vagner Pinto Introdução à Arquitetura e Organização.
Pipeline O throughput de um pipeline é determinado pela freqüência com que uma instrução sai do pipeline. Todos os estágios devem estar prontos ao mesmo.
Paralelismo Computadores de alto-desempenho são utilizados em diversas áreas: - análise estrutural; - previsão de tempo; - exploração de petróleo; -
Fundamentos de programação CUDA
Tópicos em redes e sistemas distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Arquitetura de computadores
Arquitetura de computadores
Organização de um computador
Arquitetura de computadores
Organização e Arquitetura de Computadores
Davi de Andrade Lima Castro RA:  A plataforma C6000: ◦ Ponto-fixo:  C62x  C64 / C64x+ ◦ Ponto-flutuante:  C67x / C67x+ ◦ Arquitetura VLIW:
Organização e Arquitetura de Computadores
Unidade Central De Processamento: Processador
Paralelismo em Máquinas Monoprocessadas
Conceitos Avançados de Arquitetura de Computadores Arquiteturas RISC Reduced Instruction Set Computer 6.
Parte 3 Seção de Dados e Unidade de Controle
Conceitos Avançados de Arquitetura de Computadores Arquiteturas RISC Arquiteturas Superpipeline e Superescalares.
Bruno Iran Ferreira Maciel
Slides before 1st Section Divider
Arquitetura de Computadores Processadores 2 Waldemiro Arruda.
Processadores.
Elementos de Informática
Arquitetura de Microcomputadores
Arquitetura de computadores
Arquitetura de computadores
Aula Introdutória Universidade Federal de Uberlândia Faculdade de Computação Prof. Dr. rer. nat. Daniel D. Abdala GSI013 – Arq. e Org. de Computadores.
Pet computação UFPE Arquitetura Von Neumann. pet computação UFPE 1.Definição e tipos de arquitetura Quando falamos em arquitetura temos dois tipos a considerar:
Organização de Computadores Implementação da UCP Construção do caminho de dados Controle Implementação monociclo.
Construção de Via de dados Trabalho Avaliativo do Primeiro Bimestre. Marcos André de Sena Silva.
Transcrição da apresentação:

Aula 12 Organização de Computadores Processadores Paralelos - Superescalar Profa. Débora Matos

Contextualização de Paralelismo em nível de instrução Vamos considerar a possibilidade de despachar 2 instruções por ciclo. O que muda? 1) O despacho de duas instruções por ciclo no MIPS exigirá a decodificação de 64 bits de instruções. As instruções são despachadas em pares. Quando não for possível despachar uma das instruções, ela é substituída por um NOP.

Contextualização de Paralelismo em nível de instrução 2) Para que as duas instruções sejam despachadas sem que ocorram hazards, o compilador ou um controle por hardware precisará removê-los. 3) É necessário adicionar portas extras ao banco de registradores. 4) É necessário adicionar um somador. É necessário adicionar portas extras ao banco de registradores, porque para a operação com a ALU é requerida a leitura no banco de registradores, bem como mais dois para uma operação de store. Além disso, é necessário adicionar um somador para calcular o endereço efetivo para as transferência de dados. Sem esses recursos extras o despacho duplo de instruções encontraria hazards estruturais. Nesse caso, o resultado de uma instrução load não pode ser usado no próximo ciclo de clock, isso significa que duas instruções seguintes não podem usar o resultado do load sem sofrer stall. Além disso, essa solução os resultados de uma instrução com a ALU não pdem ser usados por load ou store emparelhados. Esta ALU pode ser definido para os cálculos de endereço de transferência da dados.

Contextualização de Paralelismo em nível de instrução A primeira ideia por trás do paralelismo em nível de instrução é a adição de mais recursos de hardware. No entanto, verificaremos que uma série necessidades e restrições precisam ser observadas e controladas nestas arquiteturas. Exemplos: Processadores superescalares VLIW – Very Long Instruction Word Processadores com superpipelines

Processadores superescalares Um processador superescalar utiliza múltiplos e independentes pipelines de instruções; Permite executar um número variado de instruções por ciclo de clock. Cada pipeline consiste de múltiplos estágios e pode lidar com múltiplas instruções ao mesmo tempo; Quando ocorrem dependências entre as instruções, o processador pode executá-las fora de ordem;

Duplicação de recursos Modelo de arquitetura superescalar Cada unidade funcional implementa um pipeline, e cada pipeline permite a execução paralela de múltiplas instruções; Duas operações de inteiros, duas operações com ponto flutuante e 1 operação com a memória podem ser executadas ao mesmo tempo.

Processadores superescalares Modelo de arquitetura superescalar Duas operações de inteiros, duas operações com ponto flutuante e 1 operação com a memória podem ser executadas ao mesmo tempo.

Processadores superescalares No entanto, um processador superescalar precisa se preocupar com as seguintes situações: Dependência de dados Dependência procedural Conflitos de recursos Dependência de saída Antidependência Duas operações de inteiros, duas operações com ponto flutuante e 1 operação com a memória podem ser executadas ao mesmo tempo.

Processadores superescalares Duas operações de inteiros, duas operações com ponto flutuante e 1 operação com a memória podem ser executadas ao mesmo tempo.

Processadores superescalares No entanto, um processador superescalar precisa se preocupar com as seguintes situações: Dependência de dados Dependência procedural Conflitos de recursos Dependência de saída Antidependência Duas operações de inteiros, duas operações com ponto flutuante e 1 operação com a memória podem ser executadas ao mesmo tempo.

Processadores superescalares Dependência de saída: Exemplo: I1: R3 <= R3 op R5 I2: R4 <= R3 + 1 I3: R3 <= R5 + 1 I4: R7 <= R3 op R4 Duas operações de inteiros, duas operações com ponto flutuante e 1 operação com a memória podem ser executadas ao mesmo tempo.

Processadores superescalares Dependência de saída: Exemplo: I1: R3 <= R3 op R5 I2: R4 <= R3 + 1 I3: R3 <= R5 + 1 I4: R7 <= R3 op R4 – Instruções I1 e I3 escrevem em R3 – Atribuição da 1ª instrução não pode ser feita após a atribuição da 3ª – Despacho da 3ª instrução precisa ser congelado. Duas operações de inteiros, duas operações com ponto flutuante e 1 operação com a memória podem ser executadas ao mesmo tempo.

Processadores superescalares Antidependência: Exemplo: I1: R3 <= R3 op R5 I2: R4 <= R3 + 1 I3: R3 <= R5 + 1 I4: R7 <= R3 op R4 Duas operações de inteiros, duas operações com ponto flutuante e 1 operação com a memória podem ser executadas ao mesmo tempo.

Processadores superescalares Antidependência: Exemplo: I1: R3 <= R3 op R5 I2: R4 <= R3 + 1 I3: R3 <= R5 + 1 I4: R7 <= R3 op R4 A instrução I3 não pode concluir sua execução antes da instrução I2 ter obtido seus operandos. Duas operações de inteiros, duas operações com ponto flutuante e 1 operação com a memória podem ser executadas ao mesmo tempo. despacho da instrução I3 precisa ser congelado até que a instrução I2 tenha lido valor de R3.

Processadores superescalares Com todas essas limitações, qual seria uma possível solução para otimizar os recursos do pipeline? Uma solução é alterar a ordem de execução das instruções; A restrição é de que o resultado da execução deve ser igual ao resultado obtido com a execução sequencial. No entanto, exige controles mais complexos para testar as dependências. Duas operações de inteiros, duas operações com ponto flutuante e 1 operação com a memória podem ser executadas ao mesmo tempo.

Execuções fora de ordem A janela de instruções é uma solução para permitir a execução fora-de-ordem com conclusão fora-de-ordem; Sempre que uma instrução não apresenta dependências, o processador pode decodificá-la e colocá-la na janela de instruções. Quando houver uma unidade funcional livre, uma instrução da janela de instruções pode ser emitida para o estágio de execução. Duas operações de inteiros, duas operações com ponto flutuante e 1 operação com a memória podem ser executadas ao mesmo tempo.

Banco de Registradores Execução fora de ordem Banco de Registradores Exemplo de Janela de Instruções Centralizada ALU branch Cache de Instruções IF Janela de Instruções . . . Cache de dados store Este é um exemplo de janela de instruções centralizada, ela também poderia ser distribuida. Para isso, as instruções são decodificadas e enviadas para a estação de reserva apropriada. Janela Distribuída: Semelhante ao algoritmo de Tomasulo que combina estações de reserva distribuida com renomeação de registradores. load

Renomeação de Registradores Quando as instruções são executadas fora de ordem, os valores dos registradores podem não ser conhecidos, considerando-se apenas a sequência de instruções do programa. As antidependências e dependências de saída são exemplos comuns de conflitos no uso de registradores em arquiteturas superescalares. Uma solução para este problema é utilizar a técnica de Renomeação de Registradores. Renomeação de Registradores: com isso nós conseguimos eliminar as falsas dependências

Renomeação de Registradores Exemplo: I1: R3 <= R3 op R5 I2: R4 <= R3 + 1 I3: R3 <= R5 + 1 I4: R7 <= R3 op R4 São utilizados registradores internos escolhidos dinamicamente. Duas operações de inteiros, duas operações com ponto flutuante e 1 operação com a memória podem ser executadas ao mesmo tempo. Elimina antidependência e dependência de saída

Previsão de Desvios Arquiteturas superescalares retomaram as técnicas de previsão de desvio empregadas antes da arquitetura RISC; Processadores mais simples empregam previsões estáticas, enquanto processadores mais sofisticados usam previsão dinâmica, baseando-se em históricos de desvios. Nas arquiteturas RISC, a estratégia de desvio atrado foi explorada.

Projeto de processadores superescalares O processo de busca de instruções (incluindo previsão de desvio) constrói um fluxo dinâmico de instruções, onde o processador identifica e tenta eliminar dependências; As instruções são despachadas para uma janela de execução, onde não formam mais um fluxo sequencial; As instruções são reordenadas de acordo com as dependências de dados verdadeiras e recolocadas em um novo fluxo sequencial. Inicialmente tem-se um programa estático conforme gerado pelo compilador. Um fluxo dinâmico de instruções é formado com base em previsões de desvio. O processador despacha as instruções para uma janela de execução. Nessa janela as instruções não formam mais um fluxo sequencial. O processador efetua o estágio de execução de cada instrução numa ordem determinada pelas dependências de dados verdadeiras e pela disponibilidade de recursos de HW. Finalmente, as instruções são reordenadas. O passo final é o commit. Como as instruções podem ser executadas fora de ordem devido a previsão de desvios, algumas instruções podem ter de ser abandonadas após o resultado do desvio. Sendo assim, elas não podem alterar unidades de armazenamento visíveis ao programa.

Projeto de processadores superescalares Requerem: Uso de múltiplos estágios de busca e decodificação e uma lógica de previsão de desvio. Lógica para determinar dependências verdadeiras, envolvendo registradores e mecanismos para transferir os valores (renomeação de registradores); Mecanismos para emitir múltiplas instruções em paralelo; Recursos adicionais de HW: memória, unidades funcionais, registradores... Mecanismo para concluir o estado do processo na ordem correta (buffer de reordenamento). Nas arquiteturas RISC, a estratégia de desvio atrado foi explorada.

Projeto de processadores superescalares Exemplo de arquitetura superescalar: Pentium 4 O processo busca a instrução a instrução na memória na ordem do programa estático Cada instrução é traduzida em uma ou mais intruções RISC de tamanho fixo, chamadas de micro-operaçoes, micro-ops. Trace cache é uma cache de instruções As instruções são obtidas sequencialmente da cache L2.

Projeto de processadores superescalares Exemplo de arquitetura superescalar: Pentium 4 Buffers de desvio e análise antecipada. Aqui a ordem de leitura das operações pode ser alterada. O processo busca a instrução a instrução na memória na ordem do programa estático Cada instrução é traduzida em uma ou mais intruções RISC de tamanho fixo, chamadas de micro-operaçoes, micro-ops. Trace cache é uma cache de instruções As instruções são obtidas sequencialmente da cache L2. O Pentium 4 usa uma estratégia dinâmica de previsão de desvios baseada em histórico. O campo de histórico é composto por 4 bits.

Projeto de processadores superescalares Exemplo de arquitetura superescalar: Pentium 4 O processo busca a instrução a instrução na memória na ordem do programa estático Cada instrução é traduzida em uma ou mais intruções RISC de tamanho fixo, chamadas de micro-operaçoes, micro-ops. Trace cache é uma cache de instruções As instruções são obtidas sequencialmente da cache L2. O decodificador traduz cada instrução para até 4 micro-ops (instruções RISC, cada uma com 118 bits)

Projeto de processadores superescalares Exemplo de arquitetura superescalar: Pentium 4 O processo busca a instrução a instrução na memória na ordem do programa estático Cada instrução é traduzida em uma ou mais instruções RISC de tamanho fixo, chamadas de micro-operaçoes, micro-ops. Trace cache é uma cache de instruções As instruções são obtidas sequencialmente da cache L2. As micro-ops geradas são guardadas no trace cache.

Projeto de processadores superescalares Exemplo de arquitetura superescalar: Pentium 4 Após a verificação se a micro-op possui todos os operandos requeridos e a unidade de execução estiver disponível, a micro-op é despachada. O processo busca a instrução a instrução na memória na ordem do programa estático Cada instrução é traduzida em uma ou mais intruções RISC de tamanho fixo, chamadas de micro-operaçoes, micro-ops. Trace cache é uma cache de instruções As instruções são obtidas sequencialmente da cache L2. O alocador é ainda responsável por alocar registradores necessários para a execução das micro-ops. (ex. renomeação de registradores) Verifica se um recurso está indisponível para alguma das micro-ops que chegam no alocador.

Conceitos iniciais de arquiteturas VLIW Várias operações (o que seriam instruções em uma máquina normal) são codificadas em uma mesma instrução; A palavra de instrução é bastante longa, podendo conter várias operações (que operam sobre vários operandos) independentes; A posição de cada operação dentro da palavra VLIW determina a unidade funcional que será usada; O hardware de despacho é simples quando comparado ao superescalar;

VLIW x Superescalar VLIW Superescalar Número de instruções por clock Utilizam um número fixo de instruções Variam o número de instruções por clock Dependências Resolvidas em tempo de compilação pelo compilador Resolvidas em tempo de execução por um hardware dedicado Consumo de energia Baixo Alto Tamanho do código Maior Menor Compatibilidade através de gerações de HW Não Sim

Exercício Supondo um processador superescalar com a seguinte configuração: 4 unidades funcionais, 1 multiplicador, 1 load/store Pode executar 4 instruções por ciclo em cada estágio do pipeline Latências: Somador – 1 ciclo, Multiplicador – 2 ciclos, Load/ store – 2 ciclos Deve ser executado o seguinte programa: ADD R1, R2, R3 LW R10, 100 (R5) ADD R2, R7, R3 ADD R9, R4, R10 ADD R11, R4, R6 Verificas as dependências e classificá-las

Exercício

Projeto no nível RT: Exploração de paralelismo no datapath Débora Matos