Arquitecturas Alternativas. Pipelining Super-escalar VLIW IA-64



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

ARQUITECTURA DE COMPUTADORES

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 I

Organização e Arquitetura de Computadores I

Arquitetura de Computadores. Ivan Saraiva Silva

Arquitetura de processadores: RISC e CISC

Predição de Desvios e Processadores Superescalares Especulativos

Caminho dos Dados e Atrasos

ARQUITETURA DE COMPUTADORES

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

Pipelining - analogia

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

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

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

Algumas características especiais

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

Introdução à Organização de Computadores. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Arquiteturas que Exploram Paralismos: VLIW e Superscalar. Ch9 1

O Nível ISA. Modelo de programação Arquitecturas CISC e RISC Introdução ao IA-32 da Intel

Arquitetura e Organização de Computadores 2

Arquitetura de Computadores - Processadores Superescalares. por Helcio Wagner da Silva

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

Organização de Computadores 2005/2006 Processadores Intel

Conflitos. Aula de Março de

Introdução à Organização de Computadores. Execução de Programas Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

ARQUITETURA DE COMPUTADORES

Arquitetura de Computadores I

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

Sistemas Computacionais II Professor Frederico Sauer

Microarquiteturas Avançadas

Visão Geral de Pipelining

Paralelismo a Nível de Instrução

5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS Os Programas de Avaliação

RISC simples. Aula de Março de


Aula 14: Instruções e Seus Tipos

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES ARQUITETURAS RISC E CISC. Prof. Dr. Daniel Caetano

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

Capítulo 3 Processadores de Propósito Geral: Software

Organização de Computadores 2005/2006 Processamento Paralelo

ArchC. Wesley Nunes Gonçalves

Modos de entrada/saída

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

Unidade 4 Paralelismo em Nível de Instrução. Filipe Moura de Lima Gutenberg Pessoa Botelho Neto Thiago Vinícius Freire de Araújo Ribeiro

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

7-1. Parte 6 Otimizações da Arquitetura

Programação de Sistemas

Intel Pentium 4 vs Intel Itanium

Previsão do Desempenho. AC1 13ª aula Previsão do Desempenho 1

periféricos: interfaces humano-computador (HCI) arquivo de informação comunicações

Conjunto de Instruções e Arquitectura p.1

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

Arquitetura de Computadores RISC x CISC. Gustavo Pinto Vilar

Arquitetura de Computadores. Ivan Saraiva Silva

Primeiros "computadores" digitais. Execução de um programa. Consolas. Primórdios dos computadores. Memória interna. Computadores com memória interna

Introdução à Arquitetura de Computadores

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES INTRODUÇÃO AO PARALELISMO: PROCESSADORES SUPERESCALARES. Prof. Dr. Daniel Caetano

Arquitectura de Computadores II

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:

Introdução ao Processamento Paralelo

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini prof.andre.luis.belini@gmail.com /

Arquiteturas RISC. (Reduced Instructions Set Computers)

Organização de Computadores 2005/2006 Processadores Intel

Organização e Arquitetura de Computadores I

Memória. Espaço de endereçamento de um programa Endereços reais e virtuais Recolocação dinâmica Segmentação

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X

Multi-processamento. Arquitecturas MIMD de memória partilhada Multi-cores heterogéneos Multi-processadores

Organização e Arquitetura de Computadores I

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

Sequenciamento dinâmico

Aula 26: Arquiteturas RISC vs. CISC

Arquitecturas Alternativas. Arquitectura X86-64 Arquitecturas RISC Exemplo: MIPS Desempenho de sistemas Pipelining

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

Organização de Computadores

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

1.3. Componentes dum sistema informático HARDWARE SOFTWARE

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

CPU Unidade Central de Processamento. História e progresso

Sistema de Computação

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

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

Capítulo 1 Introdução

LISTA DE EXERCÍCIOS - Nro. 01

Introdução aos Computadores

Organização e Arquitetura de Computadores. Hugo Barros @hugobarros.com.br

Unidade 14: Arquiteturas CISC e RISC Prof. Daniel Caetano

Microprocessadores. Execução em Paralelo Pipelines

Edeyson Andrade Gomes

SSC510 Arquitetura de Computadores. 2ª aula

Cap. 5 - Microprocessadores

Avaliação de Desempenho

Sistemas Operacionais. Revisando alguns Conceitos de Hardware

RISC X CISC - Pipeline

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema.

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

FACULDADE PITÁGORAS PRONATEC

Arquitetura de Computadores I

Transcrição:

Arquitecturas Alternativas Pipelining Super-escalar VLIW IA-64

Pipeline de execução A execução de uma instrução passa por várias fases: Vimos o ciclo: fetch, decode, execute fetch decode execute instrução operandos resultado Memória ou registos Se em média, cada instrução despender 1 ciclo em cada fase, em média, cada instrução demora 3 ciclos para executar Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 419

Pipelining Supondo que a arquitectura permite manter o pipeline sempre ocupado, como numa linha de montagem: Tempo (ciclos) fetch decode execute 1 I1 2 I2 I1 3 I3 I2 I1 4 I4 I3 I2 5 I5 I4 I3 6 I5 I4 7 I5 Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 420

Pipelining Mesmo que cada instrução demore 3 ciclos, o CPU é capaz de concluir uma instrução em cada ciclo! (mesma latência, mas melhor throughput) Tempo para executar uma sequência de 1000 instruções: Sem pipelining: 1000x3 = 3000 ciclos Com pipelining: 3 ciclos para a primeira instrução (pipeline vazio) + 1 ciclo por cada uma das restantes 3+999x1 = 1002 ciclos Speedup = 3000/1002 = 2,99 (aprox. 3) Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 421

Aumentando o pipeline Supondo que podemos introduzir fases intermédias sem penalizar o tempo total de cada instrução Por exemplo: a arquitectura é mais eficiente em cada fase ou permite aumentar o clock Exemplo: com um pipeline de 5 fases: fetch decode fetch operands execute instruction store result Memória/Cache ou registos Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 422

Aumentando o pipeline Tempo (ciclos) fetch decode fetch operands execute instruction store result 1 I1 2 I2 I1 3 I3 I2 I1 4 I4 I3 I2 I1 5 I5 I4 I3 I2 I1 6 I5 I4 I3 I2 7 I5 I4 I3 8 I5 I4 9 I5 10 Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 423

Pipelining Tempo para executar uma sequência de 1000 instruções: Sem pipelining: 1000x5 = 5000 ciclos Com pipelining: 5 ciclos para a primeira instrução (pipeline vazio) + 1 ciclo por cada uma das restantes 5+999x1 = 1004 ciclos Speedup = 5000/1004 = 4,98 (aprox. 5) Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 424

Aumentar o pipeline É possível? Sim se por exemplo: antes CPU 1GHz 3 ciclos = 3ns agora CPU 1,66GHz 5 ciclos 3ns O aumento do pipeline é conseguido mais facilmente nos CPU RISC Tempo para as 1000 instruções: Sem pipelining: 3000x1 = 3000 ns (speedup=1) Com pipeline de 3: 1002x1 = 1002 ns (2,99) Com pipeline de 5: 1004x0,6 = 602 ns (4,98) No limite, Speedup = número de fases do pipeline Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 425

Premissas Podemos aumentar a profundidade do pipeline (número de fases) mantendo ou penalizando pouco o tempo de execução por instrução Cada componente do pipeline está sempre ocupado (o pipeline está sempre cheiro) O que pode correr mal? Conflito no acesso a recursos Dependências entre operandos (dados) Uma instrução ser um salto (branch) Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 426

Conflito no acesso a recursos Algumas fases podem entrar em conflito no acesso a partes do CPU ou exterior O acesso a memória no fetch O acesso para obter operando e o acesso para guardar o resultado Nos RISC só os load/store acedem à memória Arquitectura Load/Store Optimizações: Bus para dados e instruções separados Caches L1 para código e dados separadas Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 427

Dependências entre operandos Pode existir dependência entre os dados de instruções diferentes Instrução I n necessita do resultado da I n-k add R1, R1, 5 add R2, R2, R1 add R3, R3, 4 add R4, R4, R3 Reordenar instruções para adiar I n Fetch Desc Oper Exec Store add R1 add R2 add R1 add R3 add R2 add R1 add R4 add R3 add R2 add R1 add R4 add R3 add R2 X add R1 add R4 add R3 add R2 X add R4 add R3 add R2 add R4 X add R3 add R4 X add R4 Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 428

Dependências entre operandos Reordenando instruções: add R1, R1, 5 add R3, R3, 4 add R2, R2, R1 add R4, R3, R3 Fetch Desc Oper Exec Store add R1 add R3 add R1 add R2 add R3 add R1 add R4 add R2 add R3 add R1 add R4 add R2 add R3 add R1 add R4 add R2 add R3 Alguns CPU possuem um componente que reordena as instruções no pipeline add R4 add R2 add R4 Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 429

Uma instrução de salto Consideremos a seguinte sequência de instruções: sa: add R1, R1, 5 add R2, R2, 10 beq R1, R2, sa sub R1, R2, 10 sub R2, R1, R2 Que instrução é que se coloca no pipeline depois do beq? Fetch Desc Oper Exec Store add R1 add R2 add R1 beq add R2 add R1? beq add R2 add R1?? beq add R2 add R1??? beq add R2??? beq?????? Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 430

Uma instrução de salto Saltos (jumps ou Branchs ) Alteram o PC, logo a próxima instrução a executar pode não ser a que está no pipeline Nos jumps condicionais nem sabemos qual vai ser a próxima instrução. Se não saltar vai executar a próxima instrução, mas se saltar, vai executar outra Optimizações: Se salto incondicional: tentar avaliar o destino durante a descodificação Se salto condicional: dispor de branch prediction Arquitectura de Computadores (2007/2008): Arquitecturas alternativas 431

Branch prediction Acrescenta-se um componente ao CPU responsável por prever o próximo valor do Program Counter Tenta executar (adivinhar) os jumps assim que entram no pipeline Exemplos de heurísticas: O jump vai ocorrer se salta para trás; não ocorre se é um salto para a frente O jump vai ocorrer se anteriormente ocorreu Arquitectura de Computadores (2007/2008): Arquitecturas alternativas 432

Execução especulativa Ao tentarmos prever o comportamento do salto podemos errar As operações que estão no pipeline só são committed quando se tem a confirmação que se a previsão foi acertada Se a previsão falhou os resultados são descartados De qualquer forma a alternativa era não fazer nada Arquitectura de Computadores (2007/2008): Arquitecturas alternativas 433

Execução especulativa Usando a heurística do salto para trás: sa: add R1, R1, 5 add R2, R2, 10 beq R1, R2, sa sub R1, R2, 10 sub R2, R1, R2 Fetch Desc Oper Exec Store add R1 add R2 add R1 beq add R2 add R1 add R1 beq add R2 add R1 add R2 add R1 beq add R2 add R1 beq add R2 add R1 beq add R2 Se a previsão foi acertada o resultado das instruções especulativas é guardado add R1 beq add R2 add R1 beq add R1 beq add R2 add R1 add R1 Beq add R2 add R1 beq Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 434

Execução especulativa Usando a heurística do salto para trás: sa: add R1, R1, 5 add R2, R2, 10 beq R1, R2, sa sub R1, R2, 10 sub R2, R1, R2 Se a previsão foi errada o resultado das instruções especulativas não é guardado e o pipeline é enchido com o ramo certo Fetch Desc Oper Exec Store add R1 add R2 add R1 beq add R2 add R1 add R1 beq add R2 add R1 add R2 add R1 beq add R2 add R1 beq add R2 add R1 beq add R2 sub R1 beq add R2 add R1 beq sub R2 sub R1 beq add R2 add R1 sub R2 sub R1 beq add R2 sub R2 sub R1 beq Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 435

Ainda mais rápido Ainda é possível mais???? Tipicamente a fase de execução é a mais demorada Os CPU possuem unidades diferentes para os vários tipos de instruções (FPU, ALU, etc. ) Estas podem trabalhar em paralelo Optimização: CPU Super-escalar Arquitectura de Computadores (2007/2008): Arquitecturas alternativas 436

Paralelizando a execução Mais de uma instrução executada em simultâneo arquitectura super-escalar Convém que a sequência de instruções no programa alterne entre os vários tipos execute Int. inst. fetch decode fetch operands execute FPU inst store result execute move Execute Units Arquitectura de Computadores (2007/2008): Arquitecturas alternativas 437

Paralelismo ao nível das instruções O desenho da arquitectura do CPU permite o paralelismo na execução de várias instruções: Pipelining Sobrepõem a execução das várias fases do pipeline, para várias instruções O relógio do pipeline pode ser superior ao relógio externo do CPU Super-escalar Várias unidades de execução executam várias instruções em simultâneo Estas optimizações levam a que o CPU seja capaz de executar mais de uma instrução por ciclo de relógio! Arquitectura de Computadores (2007/2008): Arquitecturas alternativas 438

Vários pipelines Vários pipelines com vários unidades de execução execute Int. inst. fetch fetch decode decode fetch operands fetch operands execute Int. inst. execute FPU inst execute FPU inst store result store result execute move Arquitectura de Computadores (2007/2008): Arquitecturas alternativas 439

Execução fora de ordem Para se tirar partido de arquitecturas com pipeline e superescalares é necessário reescalonar a sequência das instruções dinamicamente O CPU pode executar as instruções num ordem diferente da definida pelo utilizador Mantendo as depêndencias de dados, claro Estas optimizazões precisam de hardware especializado e complexo Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 440

A arquitectura Intel é CISC? Ao nível da execução, não As instruções mais complexas são traduzidas para um microcódigo RISC Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 441

VLIW VLIW (Very Large Instruction Word) Técnica utilizada desde do início dos anos 80 O seu propósito é delegar no compilador o escalonamento das instruções É este que deve ordenar as instruções de forma a tirar o maior partido possível da arquitectura, não o hardware Instruções que podem ser executadas em paralelo são agregadas numa única instrução VLIW Exemplo: Uma instrução VLIW de 128 que pode conter 4 instruções de 32 bits Uma instrução VLIW Inst 1 Inst 2 Inst 3 Inst 4 Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 442

VLIW: Vantagens e desvantagens Vantagens do VLIW Reduz a complexidade do hardware Simplifica o lançamento das instruções Não é preciso verificar dependências de dados e fazer escalonamento dinâmico Desvantagens Aumenta a complexidade dos compiladores Não responde a eventos dinâmicos tão eficientemente quanto a abordagem super-escalar Caso não existam instruções independentes suficientes para encher a instrução VLIW é preciso colocar NOPs Inst 1 Inst 2 Inst 3 NOP Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 443

Intel IA-64 O ISA IA-64 é implementado pela família de processadores Intel Itanium Não é compatível com o IA-32 (também conhecido por x86) e o x86-64 A compatibilidade só é possível através de um emulador implementado em hardware Tem um desenho RISC com instruções VLIW de 128 bits denominado EPIC (Explicitly Parallel Instruction Computers) Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 444

EPIC Os saltos condicionais são resolvidos através de instruções predicadas (dependem da validade de um predicado) Exemplo: cmovz R2, R3, R1 Se R1 == 0 copia o conteúdo de R3 para R2 Se R1!= 0 não faz nada Loads especulativos Especular que dados vão ser usados no futuro carregálos para perto do CPU antes de ser preciso Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 445

Predicação: vantagens e desvantagens Vantagens Elimina os saltos Reduz o código do programa Elimina a necessidade de hardware para branch prediction Desvantagens Precisa de bits na instrução para codificar o predicado Arquitectura de Computadores (2008/2009): Arquitecturas alternativas 446