Arquitetura de Computadores I



Documentos relacionados
Arquitetura de Computadores I

Arquitetura de Computadores. Ivan Saraiva Silva

Visão Geral de Pipelining

Organização e Arquitetura de Computadores I

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

Caminho dos Dados e Atrasos

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:

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

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 e Arquitetura de Computadores I

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

Introdução ao Processamento Paralelo

Organização e Arquitetura de Computadores I

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

Componentes do Computador e. aula 3. Profa. Débora Matos

Conflitos. Aula de Março de

Arquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva

Revisão dependências de dados

28/9/2010. Unidade de Controle Funcionamento e Implementação

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

Computadores de Programação (MAB353)

Arquitetura de Computadores I

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

MODOS DE ENDEREÇAMENTO

Organização e Arquitetura de Computadores

ARQUITETURA DE COMPUTADORES

Programação Básica em STEP 7 Operações Binárias. SITRAIN Training for Automation and Drives. Página 6-1

Arquiteturas RISC. (Reduced Instructions Set Computers)

ARQUITECTURA DE COMPUTADORES

Arquitetura de Computadores - Princípio de Funcionamento da CPU. Por Helcio Wagner da Silva

Universidade Federal de Santa Catarina Departamento de Informática e Estatística Bacharelado em Ciências da Computação

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

ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

ULA Sinais de Controle enviados pela UC

Arquitetura de Computadores. Tipos de Instruções

ArchC. Wesley Nunes Gonçalves

Arquitecturas Alternativas. Pipelining Super-escalar VLIW IA-64

2 Formalidades referentes ao trabalho

CAPÍTULO 6 ARITMÉTICA DIGITAL

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

Introdução à Arquitetura de Computadores

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

Organização Básica do Computador

Arquitetura de Computadores RISC x CISC. Gustavo Pinto Vilar

Programando o computador IAS

Organização e Arquitetura de Computadores I

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

EA773 - Experimento 5

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

Introdução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis

O Processador: Caminho de Dados e Controle

Recursos. Um recurso é ou um dispositivo físico (dedicado) do hardware, ou Solicitar o recurso: esperar pelo recurso, até obtê-lo.

Pipelining. Professor: Carlos Bazilio. Pólo Universitário rio de Rio das Ostras

Sistemas Operacionais

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

Sistemas Operacionais

Arquitetura e Organização de Computadores 2

Arquitetura de Computadores. Sistemas Operacionais IV

Introdução. ULA: Faz os Cálculos UC: Como isso tudo ocorre?

Aula 14: Instruções e Seus Tipos

CALCULADORA SIMPLES COM ULA

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

Gerenciamento de Memória

ARQUITETURA DE COMPUTADORES

Organização e Arquitetura de Computadores

Arquitetura e Organização de Computadores I

Paralelismo a Nível de Instrução

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

Arquitetura de Computadores - Revisão -

Organização e Arquitetura de Computadores. Aula 10 Ponto Flutuante Parte I Juliana F. Camapum Wanderley

Sistemas Computacionais II Professor Frederico Sauer

Linguagem de Montagem Funcionamento de CPU e Assembly Rudimentar

Predição de Desvios e Processadores Superescalares Especulativos

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

Conjunto de. Instrução MIPS. Parte II. Instruções MIPS. Instruções MIPS. Instruções MIPS :: Instruções lógicas. :: Instruções lógicas

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

CHECK - LIST - ISO 9001:2000

Memória Virtual. Prof. Dr. José Luís Zem Prof. Dr. Renato Kraide Soffner Prof. Ms. Rossano Pablo Pinto

Arquitectura de Computadores RECUPERAÇÃO DO 1º TESTE

Computador Cleópatra

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

Algumas características especiais

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Arquitetura de Computadores I

Fundamentos de Sistemas Operacionais

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

Nível da Microarquitetura

Um Caminho de Dados Pipeline Para a ISA MIPS: Aprendendo na Prática

Ministério da Educação Secretaria de Educação Profissional e Tecnológica Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul

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

RISC - Reduced Instruction Set Computer

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas:

Pipelining - analogia

A Figura 1 mostra uma organização do NEANDER com uma UAL de 6 funções. Figura 1: Organização para o NEANDER.

1. A pastilha do processador Intel possui uma memória cache única para dados e instruções. Esse processador tem capacidade de 8 Kbytes e é

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann

Transcrição:

Arquitetura de Computadores I Pipeline -- Conflito de dados paradas e adiantamentos -- Conflito de controle detecção de desvios e descarte de instruções -- Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno

Conflito de dados Parada / Bolha / Stall

Conflito de dados e parada Nem sempre o adiantamento irá resolver um conflito de dados. Exemplo: lw and or add slt $2, 20($1) # registrador $2 é escrito $4, $2, $5 # primeiro operando ($2) depende de lw; registrador $4 é escrito $8, $2, $6 # primeiro operando ($2) depende de lw $9, $4, $2 # prim. operando ($4) depende de and e seg.($2) de lw $1, $6, $7 # nenhuma dependência

Conflito de dados e parada

Conflito de dados e parada Unidades de detecção de conflitos Faz o pipeline parar quando houver uma instrução load word, seguida da instrução que leia o registrador onde esta instrução de load word escreveu Vai operar durante o estágio DI, inserindo uma parada entre a instrução load word e o uso de seu resultado Condição a ser verificada: Se ( (DI/EX.LerMem = 1) e ( ) (DI/EX.RegistradorRt = BI/DI.RegistradorRs) ou (DI/EX.RegistradorRt = BI/DI.RegistradorRt) ) então «Pára o pipeline por um ciclo de relógio» Load é a única instrução que lê dados da memória

Conflito de dados e parada

Conflito de dados e parada Trancando o prosseguimento das instruções posteriores a uma instrução de load word Se a instrução que está no estágio DI estiver parada, então o estágio BI também precisa parar Para impedir o avanço das instruções pelo pipeline, basta evitar que tanto o PC quanto o registrador BI/DI sejam escritos As condições do item anterior fazem com que, no ciclo de relógio seguinte: A instrução que está em BI seja lida novamente Os registradores lidos em DI serão lidos novamente

Propagando uma bolha pelo pipeline Como a instrução load word prossegue pelo pipeline, cria-se uma «bolha» de execução, a qual deve também prosseguir pelo pipeline Uma «bolha» deve executar em cada estágio o mesmo que uma instrução NOP executa NOP Todos os sinais de controle em 0 (zero) para os estágios EX, MEM, ER Estes valores de sinal de controle são passados adiante a cada ciclo de relógio, produzindo o efeito desejado (nenhum registrador ou memória é alterado/escrito)

Conflito de dados Adiantamento / Fowarding / Bypass

Conflito de dados Seja o seguinte trecho de código, escrito para o MIPS sub $2, $1, $3 # registrador $é é escrito pela instrução sub and $12, $2, $5 # primeiro operando ($2) depende de sub or $13, $6, $2 # segundo operando ($2) depende de sub add $14, $2, $2 # prim. e seg. operandos ($2) dependem de sub sw $15, 100($2) # base ($2) depende de sub Para estudar as conseqüências destas dependências quando da execução em pipeline, usar um diagrama de pipeline de múltiplos ciclos.

Conflito de dados

Conflito de dados Uma solução seria o compilador evitar seqüências de instruções que gerem conflitos de dados sub $2, $1, $3 # registrador $2 é escrito pela instrução sub nop # na falta de instruções de sejam independentes, o nop # compilador inseriria instruções «nop» and $12, $2, $5 # primeiro operando ($2) depende de sub or $13, $6, $2 # segundo operando ($2) depende de sub add $14, $2, $2 # prim. e seg. operandos ($2) dependem de sub sw $15, 100($2) # base ($2) depende de sub Problemas? Conflitos de dados são muito freqüentes A inserção de instruções nop causam perda de desempenho

Conflito de dados Outra solução Detectar o conflito Adiantar o resultado da ULA (ou da memória de dados) Testes para detecção de conflitos (uso de registardores de pipeline) 1a. DI/EX.RegistradorRs = EX/MEM.RegistradorRd 1b. DI/EX.RegistradorRt = EX/MEM.RegistradorRd 2a. DI/EX.RegistradorRs = MEM/ER.RegistradorRd 2b. DI/EX.RegistradorRt = MEM/ER.RegistradorRd

Conflito de dados

Conflito de dados

Conflito de dados

Conflito de dados

Detectando e resolvendo conflitos de dados 1. Conflito no estágio EX Se ( (EX/MEM.EscReg = 1) e (EX/MEM.RegistradorRd 0) e (EX/MEM.RegistradorRd = DI/EX.RegistradorRs) ) Então Adianta.opA = 10 Se ( (EX/MEM.EscReg = 1) e (EX/MEM.RegistradorRd 0) e (EX/MEM.RegistradorRd = DI/EX.RegistradorRt) ) Então Adianta.opB = 10

Detectando e resolvendo conflitos de dados 2. Conflito no estágio MEM Se ( (MEM/ER.EscReg = 1) e (MEM/ER.RegistradorRd 0) e (MEM/ER.RegistradorRd = DI/EX.RegistradorRs) ) Então Adianta.opA = 01 Se ( (MEM/ER.EscReg = 1) e (MEM/ER.RegistradorRd 0) e (MEM/ER.RegistradorRd = DI/EX.RegistradorRt) ) Então Adianta.opB = 01

Arquitetura sem adiantamento

Arquitetura com adiantemento

Arquitetura com adiantemento

Complicação Conflito entre o resultado do estágio ER e o resultado no estágio MEM e o operando-fonte da instrução no estágio da ULA. add $1, $1, $2 add $1, $1, $3 add $1, $1, $4

Detectando e resolvendo conflitos de dados 2. Conflitos no estágio MEM se( (MEM/ER.EscReg = 1) e (MEM/ER.RegistradorRd 0) e (EX/MEM.RegistradorRd DI/EX.RegistradorRs) e (MEM/ER.RegistradorRd = DI/EX.RegistradorRs) ) então Adianta.opA = 01 se( (MEM/ER.EscReg = 1) e (MEM/ER.RegistradorRd 0) e (EX/MEM.RegistradorRd DI/EX.RegistradorRt) e (MEM/ER.RegistradorRd = DI/EX.RegistradorRt) ) então Adianta.opB = 01

Conflito de controle Tratamento de desvios e descarte de instruções

Detecção de desvios Ocorrência é menor do que os conflitos de dados Mecanismos de adiantamento e parada tem maior emprego Mecanismos de tratamento Decisão estática Decisão dinâmica Instruções de desvio Reconhecidas somente a partir do segundo estágio

Consideração estática Desvio não é tomado Conforme visto, bolhas afetam o desempenho do pipeline Boa solução é assumir que o salto nunca ocorre Mas e se o salto ocorrer? Condição somente é validada no final do terceiro estágio Instruções presentes nos estágios BI, DI e EX tem de ser eliminadas Processo similar a inserção de bolhas quando da ocorrência de uma parada

Consideração estática Desvio não é tomado Eliminando instruções inválidas do pipeline Processo conhecido como flush Elimina as instruções através do reset das barreiras de registradores BIDI, DIEX e EXME Registradores de dado e sinais de controle representam instrução NOP

Consideração estática Como reduzir o atraso dos desvios Reduzindo o custo do desvio tomado Adiantando um estágio, reduz a penalidade PC desviado somente válido no estágio ME, após EX Menos instruções carregadas inutilmente Melhora a vazão de instruções válidas Maioria dos desvios contam com testes simples Observação feita por projetistas Consideram a igualdade ou sinal (qualificadores) Não exigem operação com a ULA Podem ser realizados com poucas portas lógicas

Consideração estática Como reduzir o custo do desvio tomado Antecipação do desvio exige Mecanismo para cálculo do novo PC Presente desde a barreira BIDI o PC + 4 + Valor imediato Somador destes valores pode ser alocado no estágio DI o Cálculo realizado para todas instruções Mecanismo de avaliação do desvio Deve considerar valores lidos no banco de registradores (beq) Igualdade pode ser testada a partir de um xor bit a bit + or o Zero representa que todos bits são iguais Mover tal procedimento para o estágio DI implica hw adicional o Deve prever conflito de dados (dependência verdadeira)

Consideração estática Complicadores da antecipação do teste de igualdade Se realizado durante o estágio DI, exige Decodificar a instrução Decidir pelo uso ou não da unidade de igualdade Completar a comparação de igualdade Se desvio ocorrer, novo PC tem de ser liberado Valores necessário para desvio podem sofrer com parada Operando de comparação pode Depender de uma operação que está sendo realizada na ULA Depender de uma leitura na memória

Conflito de controle Desvio condicional em pipeline Exemplo 36 sub $10, $4, $8 40 beq $1, $3, 7 # desvio relativo ao PC para 40 + 4 + (7*4) = 72 44 and $12, $2, $5 48 or $13, $2, $6 52 add $14, $4, $2 56 slt $15, $6, $7 72 lw $4, 50($7)

Conflito de controle Considerando o bloco operativo pipeline visto

Consideração estática Antecipação do desvio Apesar das dificuldades reduz a penalidade Apenas uma instrução é eliminada se desvio for tomado Instrução presente no estágio BI é descartado Descarte da instrução exige a inclusão de um único sinal de controle BI.flush Transforma a instrução em BI em NOP

Antecipação do desvio (BEQ em DI)

Antecipação do desvio (BEQ em EX)

Previsão dinâmica de desvios Previsão estática é adequada para arquiteturas que exploram pouca profundidade em pipelines O erro na previsão implica em custo relativamente baixo quando comparado a arquiteturas de pipeline mais profundo Previsão dinâmica de desvios leva em consideração decisões passadas Associa um dado endereço a instrução de desvio Caso um desvio tenha ocorrido previamente o novo endereço de PC é o mesmo assumido anteriormente, e não PC+4

Previsão dinâmica de desvios Proposta de implementação Buffer de previsão de desvios (tabela de histórico de desvios) Implementação feita em um bit Último salto ocorreu ou não Organização da memória de histórico Indexada pelos parte menos significativa do endereço do PC da instrução de desvio Contém um bit referenciando se um desvio foi realizado recentemente ou não Proposta simples que não garante a corretude da previsão Bit de salto pode ter sido assinalida por outra instrução Previsão incorreta reflete em tratamento Estratégia similar de descarte tem de ser implementado como visto antes também

Previsão dinâmica de desvios Outra proposta de implementação Implementação feita em dois bit Explora frequência de desvios regulares Esquema mais empregado quando comparado com a implementação de 1 bit Duas decisões errôneas têm de ser assinalada para efetivar a atualização da decisão correta

Mecanismo de previsão dinâmica Estados de um esquema de previsão de 2 bits