Microcontroladores e Interfaces 3º Ano Eng. Electrónica Industrial



Documentos relacionados
Pipelining - analogia

Arquitecturas Alternativas. Pipelining Super-escalar VLIW IA-64

Exemplo: CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 ADD $s0, $t0, $t1 IF ID EX MEM WB SUB $t2, $s0, $t3 IF Stall Stall ID EX MEM WB

Predição de Desvios e Processadores Superescalares Especulativos

Arquitetura de Computadores I

Organização e Arquitetura de Computadores I

Visão Geral de Pipelining

Conflitos. Aula de Março de

Caminho dos Dados e Atrasos

Arquitetura de Computadores I

Para os problemas seguintes considere os 5 andares de pipelining do MIPS:

Arquitetura e Organização de Computadores 2

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática IM-NCE/UFRJ. Pipeline. Gabriel P. Silva. Microarquitetura de Alto Desempenho

ARQUITETURA DE COMPUTADORES

Modos de entrada/saída

ARQUITECTURA DE COMPUTADORES

Paralelismo a Nível de Instrução

Arquitetura de processadores: RISC e CISC

AULA DE REVISÃO 3 ILP

Aula 14: Instruções e Seus Tipos

SSC510 Arquitetura de Computadores. 2ª aula

Introdução ao Processamento Paralelo

Entradas/Saídas. Programação por espera activa Programação por interrupções

Memória cache. Prof. Francisco Adelton

Interrupções. As interrupções são casos especiais de chamadas de procedimentos.

Infraestrutura de Hardware. Revisão Pipeline, Superescalar e Multicores

Univ ersidade Feder al do Rio de Janei ro Informáti ca DCC/IM. Pipeline. Gabriel P. Silva. Gabriel P. Silva

Organização e Arquitetura de Computadores I

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

Processador ( CPU ) E/S. Memória. Sistema composto por Processador, Memória e dispositivos de E/S, interligados por um barramento

Processos. Estados principais de um Processo: Contexto de um Processo. Nível de um Processo.

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2)

SSC0611 Arquitetura de Computadores

Sistemas Operacionais Aula 2

Arquitetura e Organização de Processadores. Aula 4. Pipelines

Organização e Arquitetura de Computadores. Capítulo 13 Paralelismo no nível de instruções

Sistemas Operativos I

ANHANGUERA EDUCACIONAL. Capítulo 2. Conceitos de Hardware e Software

RISC simples. Aula de Março de

Entradas/Saídas. Programação por interrupções Conceitos gerais Programação da porta série Transmissão

Arquitetura de Computadores. Ivan Saraiva Silva

Introdução à Arquitetura de Computadores

Sequenciamento dinâmico

Computadores de Programação (MAB353)

Capítulo 6 Hazards Morgan Kaufmann Publishers. Ch6c 1

11- Tornar transparente para o processador os detalhes de operação e controle dos dispositivos periféricos.

Pipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir.

Implementação de pipelines

Aula 19. Conversão AD e DA Técnicas

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

EEC2104 Microprocessadores

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X

Faculdade de Computação Arquitetura e Organização de Computadores 2 3 a Lista de Exercícios Prof. Cláudio C. Rodrigues Data de Entrega: 22/11/2018

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

SSC0510 Arquitetura de Computadores

Sistemas Computacionais II Professor Frederico Sauer

ARQUITETURA DE COMPUTADORES

Informática I. Aula 5. Aula 5-13/05/2006 1

implementação Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa Fernando Ramos, Nuno Neves, Sistemas Operativos,

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

Trabalho Prático Nº2 Escrita e Leitura em Portos IO

Comunicação de Dados. Aula 5 Transmissão Analógica

SISTEMAS OPERACIONAIS

Métodos de Sincronização do Kernel

3. ANÁLISE DE RISCO NA CONSTRUÇÃO CIVIL

Gestor de Processos Núcleo do Sistema Operativo

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

Sistema de Memórias de Computadores

Arquitetura de Computadores I

ArchC. Wesley Nunes Gonçalves

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

Figure 2 - Nós folhas de uma árvore binária representando caracteres ASCII

TÉCNICAS DE PROGRAMAÇÃO

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

Explorando o paralelismo entre instruções

Arquitetura e Organização de Computadores

Introdução à Arquitetura e Linguagem Assembly de Processadores IA-32

Algoritmo. Iniciação do Sistema e Estimativa do consumo. Perfil do utilizador. Recolha de dados

Processos. Paulo Sérgio Almeida 2005/2006. Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho

Arquitectura de Computadores II. Pipelining Avançado e Paralelismo ao Nível da Instrução (ILP Instruction Level Paralelism)

Departamento de Informática

armazenamento (escrita ou gravação (write)) recuperação (leitura (read))

Sistemas Microcontrolados

Escalas. Antes de representar objetos, modelos, peças, A U L A. Nossa aula. O que é escala

Arquiteturas RISC. (Reduced Instructions Set Computers)

Gerência de Memória. Paginação

Arquitectura de Computadores II

RELATÓRIO REFERENTE AO SUPORTE DO MÊS JUNHO/2013.

SSC0611 Arquitetura de Computadores

Processador ARM Cortex-A9

Pipeline. Prof. Leonardo Barreto Campos 1

shift register demux prefetch control inc ldpc + 1 MAR Pipelining

2. A influência do tamanho da palavra

Introdução à Engenharia de Computação

INSTITUTO POLITÉCNICO DE BRAGANÇA ESCOLA SUPERIOR DE TECNOLOGIA E DE GESTÃO. Engenharia Electrotécnica. Microprocessadores. 2ºano - 1ºsemestre

O mecanismo de alocação da CPU para execução de processos constitui a base dos sistemas operacionais multiprogramados.

Administração da Produção I

Manual do Gestor da Informação do Sistema

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

Transcrição:

Microcontroladores e Interfaces 3º Ano Eng. Electrónica Industrial Carlos A. Silva 2º Semestre de 2005/2006 http://www.dei.uminho.pt/lic/mint Assunto: Pipeline Aula #5 28 Mar 06 Revisão Na implementação do pipeline temos problemas de implementação que são chamados de pipeline hazards. Existem três tipos de hazards: 2 Estrutural Acontece quando se tenta usar o mesmo recurso de duas maneiras diferentes. Por ex., não é possível usar a unidade de decode para duas instruções simultaneamente. Dados Acontece quando se tenta usar um item antes de estar disponível. P. ex., uma instrução depende de um resultado que está num estágio anterior do pipeline.

Revisão Controlo Acontece quando se tenta tomar uma decisão antes da condição ter sido avaliada. Por ex., nas instruções de salto condicional. 3 Hazard de dados Os hazard de dados acontecem devido a dependência de dados entre os operandos das instruções. Que tipos de dependência podemos identificar entre as instruções? Read-After-Write (RAW) Uma instrução escreve um valor que será lido posteriormente por uma outra instrução. P. ex., and $s, $s2, $s3 or $s4, $s, $s2 Está a ocorrer algum hazard? 4 2

Hazard de dados 5 Write-After-Read (WAR) Uma instrução lê um valor de um registo/memória que será posteriormente escrito por uma outra instrução. P. ex., and $s, $s2, $s3 Está a ocorrer algum hazard? or $s2, $s4, $s2 Write-After-Write (WAW) Uma instrução escreve um valor num registo/memória que será posteriormente escrito por uma outra instrução. P. ex., and $s, $s2, $s3 Está a ocorrer algum hazard? or $s, $s4, $s2 Hazard de dados Read-After-Read (RAR) Uma instrução lê um valor de um registo/memória que será posteriormente lido por uma outra instrução. P. ex., and $s, $s2, $s3 or $s5, $s4, $s2 Está a ocorrer algum hazard? 6 3

Consequências da dependência de dados: Técnicas: Correcção dos dados. Temos que detectar e resolver as dependências. Eficiência. O stall do pipeline é prejudicial ao desempenho, logo temos que procurar outras técnicas para resolvê-lo. Unidade de Stall Register forwarding. Register interlocking. Hazard de dados 7 Hazard de dados Register interlocking No register file, cada registo terá um bit associado Este bit indica se o conteúdo do registo está correcto 0: O conteúdo pode ser usado : Não use o conteúdo do registo. As instruções ao usar o registo reservam-no Exemplo: A Intel implementa esta técnica no processador Itanium: É chamado de NaT (Not-a-Thing). Este bit é usado no apoio à execução especulativa do pipeline. 8 4

Control Hazard Devemos, em cada ciclo, fazer o fetch de uma instrução de modo a manter o pipeline cheio. sub $2, $, $3 throughput máximo and $2, $2, $5 or $3, $6, $2 add $4, $2, $2 sw $5, 00($2) 9 Control Hazard Contudo, na estrutura usada, as operações de branch apenas são avaliadas no estágio MEM. Execução das instrução de branch ocorre no estágio MEM 0 5

Control Hazard A este atraso na determinação da condição do salto (branch) chamamos control hazard ou branch hazard. 40 beq $, $3, 7 44 and $2, $2, $5 48 or $3, $6, $2 52 add $4, $2, $2 72 lw $4, 50($2) Control Hazard Temos quatro maneiras de resolver o hazard: Stall do pipeline até a condição ser resolvida. Redução do atraso do salto. Predição do salto. 2 6

Primeira solução : Reduzir o atraso do salto Na implementação actual, a condição de branch só será resolvida no estágio de acesso à memória. Se movermos a condição de acesso para mais cedo, então menos instruções serão perdidas no pipeline. Quais elementos do datapath são usados na execução das instruções de branch? 3 Primeira solução : Reduzir o atraso do salto Alguns processadores conseguem resolver a condição do salto durante a fase de ID. Esta solução implica fazer o forwarding dos registos e a detecção de hazards na fase de ID. Como a comparação era feita na ALU que fica no estágio de EX, alguma electrónica terá que ser introduzida para realizar a comparação no estágio ID. 4 7

Primeira solução : Reduzir o atraso do salto Problema: Com o aumento das micro-operações executadas durante a fase de decoding, ID, a duração deste estágio aumentará. Qual é a consequência deste aumento? 5. Potencial desequilíbrio das micro-operações executadas em cada estágio, ou seja a duração dos estágios tornam-se desequilibradas. Menor rendimento do pipeline. 2. Limite na frequência máxima do processador. Primeira solução : Reduzir o atraso do salto Delayed branch execution A técnica anterior permitiu reduzir o atraso do salto para um ciclo de relógio. and $s, $s2, $s3 loop: add $s, $s2, $s beq $s5, $s4, loop lw $t, 00($t2) lw $t, 00($s) Devido a execução da instrução beq será feito o stall do pipeline até a condição ser avaliada na fase de decoding. Se observarmos o código acima, verificamos que a instrução add $s, $s2, $s será sempre executada. A técnica de delayed branch execution consiste em executar sempre a instrução a seguir ao branch. 6 8

A técnica anterior permitiu reduzir o atraso do salto para um ciclo de relógio. delay slot Primeira solução : Reduzir o atraso do salto and $s, $s2, $s3 beq $s5, $s4, loop add $s, $s2, $s lw $t, 00($t2) A instrução a seguir ao beq será sempre executada loop: lw $t, 00($s) Como a instrução a seguir ao branch é sempre executada, o compilador ou o programador tem a responsabilidade de garantir que a instrução a seguir é válida ou é a instrução nop. Com a junção desta técnica, o atraso associado à avaliação da condição da instrução de branch foi totalmente eliminado. 7 Segunda solução : Predição do salto Temos três tipos de estratégias de predição: Fixa Assume-se que o resultado da condição é conhecido (p. ex., falso) e o fetch é feito conforme o pressuposto. Esta técnica é pouco efectiva na execução de loops. Porque? Ex. Motorolo 68020 e VAX /780. Estática O valor da condição depende do tipo de salto. Nos saltos condicionais (if... then... else) assume-se que a condição é sempre falsa. Nos loops (for, while,...) assume-se que a condição é sempre verdadeira. Melhor desempenho que a predição fixa. 8 9

Dinâmica Segunda solução : Predição do salto Na avaliação da condição é analisado a execução do programa, ou seja o resultado das últimas instruções executadas. 9 Segunda solução : Predição do salto (dinâmica) Em vez de assumir que a condição é sempre falsa ou verdadeira, alternativamente consulta-se uma tabela de modo a verificar se, da última vez que a instrução foi executada, a condição era falsa ou verdadeira. Uma implementação desta técnica chama-se branch prediction buffer ou branch history table. Um buffer de predição de salto é uma memória de pequena dimensão indexada pela parte baixa do endereço da instrução. A memória tem um bit que indica se um salto foi feito recentemente. 20 0

Segunda solução : Predição do salto (dinâmica) 2 Segunda solução : Predição do salto (dinâmica - bit) Exemplo: int v= 0; for( int n= 0; n < 0; ++n ) v= v + n; Considere um loop implementado com um salto condicional. O loop é executado nove vezes. A seguir, a condição de salto falha. Qual será a percentagem de sucesso da predição do salto, assumindo que o bit de predição permanece no buffer de predição? 22

Segunda solução : Predição do salto (dinâmica - bit) Resposta: 23 Iteração Predição Resultado 0 0 2 3 4 5 6 7 8 9 0 Em execução contínua, a predição irá falhar na primeira e na última iteração do loop. A predição da última iteração está errada, sendo que este erro é inevitável, uma vez que o estado do bit indica salto efectuado, quando na verdade deve falhar. A predição errada do primeiro bit deve-se ao seu estado inicial. Por isso, num loop em que o salto ocorre 90% das vezes a predição foi correcta em 80% dos casos. Segunda solução : Predição do salto (dinâmica - bit) Qual seria o melhoramento se a nossa janela de análise fosse mais larga, ou seja se considerássemos mais do que apenas o último caso? Impacto das últimas n instruções de branch sobre o resultado da predição: Tipo de mistura n Compiler Business Scientific 0 64. 64.4 70.4 9.9 95.2 86.6 2 93.3 96.5 90.8 3 93.7 96.6 9.0 4 94.5 96.8 9.8 5 94.7 97.0 92.0 24 2

Segunda solução : Predição do salto (dinâmica - 2 bit) 25 Segunda solução : Predição do salto (dinâmica - 2 bit) Exemplo: Qual será a percentagem de sucesso da predição do salto, assumindo que estamos a usar 2 bits para predição? Iteração Predição actual Predição próx. Resultado 0 weakly taken 2 3 4 5 6 7 8 9 weakly taken 0 26 3

Control Hazard : Excepções 27 Uma outra forma de hazard de controlo são as excepções. Porque? Por exemplo, consideremos a seguinte instrução add $s, $s2, $s Caso os valores dos registos fossem tais que ocorresse um overflow, então precisaríamos de passar o controlo para a rotina de serviço à interrupção. Todos as latches do pipeline teriam que ser limpas (flush) e não deveríamos permitir que o resultado da operação afectasse a memória ou o file register. Finalmente, o endereço da instrução teria que ser guardado num registo especial (EPC Exception Program Counter) para a rotina de serviço à excepção possa saber qual foi a instrução que provocou a excepção. Control Hazard: Excepções Algumas causas possíveis para as excepções são: Pedido de dispositivo I/O. Chamada ao sistema operativo pela aplicação. Usar uma instrução indefinida. Problema com o hardware (p. ex., falha de um bit da memória). A existência de várias fontes de excepções levanta o problema de como associar uma excepção a uma determinada instrução, pois várias instruções estarão a ser executadas simultaneamente no pipeline. 28 4

Control Hazard : Excepções Solução: Prioridade nas excepções Associar diferentes excepções a diferentes estágios do pipeline. Devido a dificuldade de associar correctamente a excepção à instrução que a gerou, alguns processadores indicam a região onde ocorreu a excepção, deixando para o SO ou o utilizador descobrir a instrução correcta. Neste caso dizemos que temos uma interrupção ou excepção imprecisa (imprecise interrupt ou imprecise exception) 29 Como obter processadores ainda mais rápidos? Superpipelining. Superscalar. Temas Avançados Very Long Instruction Word (VLIW). Dynamic pipeline scheduling ou dynamic pipelining. 30 5

Temas Avançados: Superpipelining Ao diminuirmos as operações realizadas em cada estágio, iremos diminuir a sua latência, logo é possível aumentar a frequência do relógio. Exemplo MIPS R4000 8 estágios: IF: Primeira fase do fetch da instrução. Iniciação ao acesso à cache. IS: Segunda fase do fetch da instrução. RF: Descodificação da instrução e fetch dos registos, verificação dos hazards, detecção do hit da cache de instrução. 3 Temas Avançados: Superpipelining EX: Execução, o que inclui o cálculo do endereço efectivo, operações da ALU, cálculo do destino de um salto condicional e verificação da sua condição. DF: Primeira fase do acesso à cache de dados. DS: Segunda fase do acesso à cache de dados. TC: Verificação do Tag, determinação se houve um hit da cache. WB: Escrita do resultado da operação no file register. Este estágio é usado apenas pelas instruções de load e de registo-registo. 32 6

Temas Avançados: Superscalar Em vez de aumentarmos o número de estágio podemos aumentar o número de unidades funcionais. Com esta abordagem, passamos a executar várias instruções no mesmo ciclo do relógio. Neste processadores usamos a métrica IPC (instructions per clock cycle) IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB 33 Temas Avançados: Superscalar O projecto em duplo pipeline assume que as instruções têm o mesmo tempo de execução. Na prática, o tempo de execução das instruções varia Depende do tipo de instrução. Usa várias unidades de execução Ligadas a um único pipeline. Por ex., duas unidades de inteiros, duas unidades de FP. A este tipo de projecto chamamos de Superscalar. 34 7

Temas Avançados: Dynamic Pipelining Scheduling Na implementação com escalonamento dinâmico das instruções, novas instruções são executadas enquanto o stall é resolvido. Devido a diferença na latência das instruções e devido ao stall ou a sua complexidade (FP), as instruções serão executadas fora de ordem. Na implementação superscalar do pipeline teremos problemas acrescidos de hazard de dados devido a dependência das instruções. Estes hazards podem ser resolvidos: pelo compilador por hardware especial que irá fazer o scheduling das instruções. 35 Temas Avançados: Dynamic Pipelining Scheduling De modo a garantir interrupções precisas, o estágio a seguir a execução da instrução terá que restabelecer a ordem das instruções e verificar a ocorrência de excepções. A um sistema que implemente execução fora de ordem e predição dinâmica dos saltos, nós classificamo-lo como um processador que faz a execução especulativa do programa (speculative execution) 36 8

Exemplo: Pentium 4 37 Conclusão 38 9

Conclusão 39 20