Introdução Arquitectura com unidade de controlo uniciclo.

Slides:



Advertisements
Apresentações semelhantes
IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho
Advertisements

Arquitectura de Computadores 2004/05
1 ANÁLISE E PROJETO NO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE PROCESSO: CONCEITO MODELOS DE PROCESSO PROCESSO UNIFICADO HISTÓRIA CARACTERÍSTICAS AS QUATRO.
PIPELINE (continuação).
Arquitetura de Computadores
WebDesign Redes de Computadores Aula 07
Introdução à Programação usando Processing Programação Gráfica 2D Animações Exercício Animações 14/10/09 Bruno C. de Paula 2º Semestre 2009 > PUCPR >
14/10/09 Uma animação possui: Início; Passo; Fim; 1.
Aula 06: Introdução ao Pipelining, Hazards Estruturais e Forwarding
© Marcelo Bezerra de AlcântaraBanco de Dados II – Controle de Concorrência - 1 Disciplina Banco de Dados II Introdução ao Controle de Concorrência Msc,
Aritmética Aceleração da adição.
Introdução ao Projecto com Sistemas Digitais e Microcontroladores Introdução à arquitectura de microprocessadores - 1 Introdução à arquitectura de microprocessadores.
0. Introdução.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 3.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Exemplo de arquitetura registrador-registrador- MIPS
MIPS PIPELINE.
ES723 - Dispositivos Eletromecânicos
Resolução.
Processo de Pipelining (exemplo da lavanderia)
Análise de regressão linear simples: abordagem matricial
Arquiteturas Superescalares
Árvore Binária de Busca
Pipeline.
SSC114 Arquitetura de Computadores Pipeline - Predição de desvios
SSC144 Arquitetura de Computadores Introdução
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.
Capítulo 6 Sistemas de Arquivos 6.1 Arquivos 6.2 Diretórios
Estudo de Caso 1: UNIX e LINUX
FUNÇÃO MODULAR.
9. Modelos de Alta Freqüência Pequenos Sinais:
Aula 4 Nomes, Vinculações, Tipos e Escopos
Programação Baseada em Objectos Desenho de TAD
Avaliação do desempenho
Classes e objetos P. O. O. Prof. Grace.
Técnicas de Contagem.
Técnica de Contagem.
Processadores – Aula 3 Professor: André Luis Meneses Silva
Provas de Concursos Anteriores
Processadores – Aula 3 Professor: André Luis Meneses Silva
Semana 03: Comandos de desvio de fluxo. Expressões lógicas.
PROGRAMAÇÃO I UNIDADE 1.
Prof. Felipe Ferreira de Oliveira
Cinemática Plana de um Corpo Rígido Cap. 16
Funcionamento básico de um computador
1 António Arnaut Duarte. 2 Sumário: primeiros passos;primeiros passos formatar fundo;formatar fundo configurar apresentação;configurar apresentação animaçã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.
Funções Universidade Federal de Ouro Preto - UFOP
Salas de Matemática.
Coordenação Geral de Ensino da Faculdade
Arquitetura de computadores
2º Ciclo do Ensino Básico Ex - Grupo de docência REGIÃO AUTÓNOMA DOS AÇORES SECRETARIA REGIONAL DA EDUCAÇÃO E CULTURA 01 1º Grupo 200 Código do grupo de.
Arquitetura de computadores
Semana 03 Comandos de desvio de fluxo. Expressões lógicas.
É u m e l e m e n t o f u n d a m e n t a l
EXERCÍCIOS PARA GUARDA-REDES
Organização e Arquitetura de Computadores
1 2 Observa ilustração. Cria um texto. Observa ilustração.
ELETRÔNICA DIGITAL Circuitos Aritméticos
Agenda - Aula 2 Introdução (Computador Digital) Processadores
MATRICIAL CONSULTORIA LTDA. PREFEITURA MUNICIPAL DE GARIBALDI 23/10/ : ATENÇÃO Os locais descritos nas planilhas anexas não correspondem ao total.
Dinâmica do Movimento Plano de um Corpo Rígido: Força e Aceleração
Módulo Compras Relatórios e Relações 1. Objetivo 2 Conhecer os relatórios e as relações do sistema disponibilizadas no módulo Compras.
Introdução a Algoritmos
Unidade Central De Processamento: Processador
1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s Prof. Paulo Cesar Centoducatte
Aula 10 – Sumário Aritmética Pipelines Aceleração da adição
Transcrição da apresentação:

Introdução Arquitectura com unidade de controlo uniciclo

Introdução A mesma ideia, posta de uma forma diferente...

Introdução Fetch Descodificação Execução Acesso à memória Write back

Introdução Por cada instrução tem-se a sequência Fetch (IF) – ler a instrução localizada no endereço dado por PC Descodificação (ID) – obter o opcode e operandos; ler os registos fonte Execução (EXE) – operações na ALU e controlo dos saltos Memória (MEM) – aceder à memória para escrever ou ler dados Write-back (WB) – escrever o resultado no registo de destino

Funcionamento em pipeline Estrutura de um pipeline Separam-se as várias etapas por registos (buffers) E sincronizam-se esses registos com um sinal de relógio comum… Obtém-se um pipeline

Funcionamento em pipeline Com mais detalhe...

Funcionamento em pipeline Ideia semelhante a uma linha de montagem: Por cada impulso de relógio é realizada uma etapa de uma instrução Se o pipeline tem N etapas, então N instruções podem estar simultaneamente dentro do pipeline Uma instrução em cada etapa Inst. i Inst. i+1 Inst. i+2 Inst. i+3 Inst. i+4

Funcionamento em pipeline Ilustração do funcionamento Inst. 1 Inst. 2 Inst. 3 Inst. 4 Inst. 5 Inst. 6 … Programa a correr

Funcionamento em pipeline Ilustração do funcionamento Inst. 1 Inst. 2 Inst. 3 Inst. 4 Inst. 5 Inst. 6 … Programa a correr Inst. 1

Funcionamento em pipeline Ilustração do funcionamento Inst. 1 Inst. 2 Inst. 3 Inst. 4 Inst. 5 Inst. 6 … Programa a correr Inst. 2 Inst. 1

Funcionamento em pipeline Ilustração do funcionamento Inst. 1 Inst. 2 Inst. 3 Inst. 4 Inst. 5 Inst. 6 … Programa a correr Inst. 3 Inst. 2 Inst. 1

Funcionamento em pipeline Ilustração do funcionamento Inst. 1 Inst. 2 Inst. 3 Inst. 4 Inst. 5 Inst. 6 … Programa a correr Inst. 4 Inst. 3 Inst. 2 Inst. 1

Funcionamento em pipeline Ilustração do funcionamento Inst. 1 Inst. 2 Inst. 3 Inst. 4 Inst. 5 Inst. 6 … Programa a correr Inst. 5 Inst. 4 Inst. 3 Inst. 2 Inst. 1

Funcionamento em pipeline Ilustração do funcionamento Inst. 1 Inst. 2 Inst. 3 Inst. 4 Inst. 5 Inst. 6 … Programa a correr Inst. 6 Inst. 5 Inst. 4 Inst. 3 Inst. 2

Funcionamento em pipeline Outra maneira de ver.. Ciclos de relógio 1º 2º 3º 4º 5º 6º 7º 8º 9º 10º 11º inst 1 IF ID EXE MEM WB inst 2 inst 3 inst 4 inst 5 inst 6 ... .... Por exemplo, no 5º ciclo de relógio, a instrução 1 está na fase WB, a instrução 2 na fase MEM, a instrução 3 na fase EXE, a inst. 4 está na fase ID e a inst. 5 na fase IF.

Desempenho ideal Em condições ideais O pipeline está “equilibrado” todas as etapas demoram o mesmo tempo O pipeline encontra-se sempre cheio tem-se sempre uma instrução em cada etapa Ganho (ideal) face a uma versão sem pipeline:

Conflitos Mas num pipeline nem tudo são rosas... Existem situações em que Instruções em fases diferentes tentam aceder ao mesmo recurso (e.g. à memória) O resultado de uma instrução depende de outra que ainda não terminou a execução Essas situações designam-se por conflitos (ou pipeline hazards) A existência de conflitos reduzem significativamente o ganho de um pipeline...

Conflitos Tipos de conflitos Conflitos de dados ocorrem quando existem dependências de dados entre instruções que se encontram dentro do pipeline Conflitos estruturais ocorrem quando duas instruções em fases diferentes tentam aceder ao mesmo recurso Conflitos de controlo ocorrem em instruções de salto, quando o salto depende de um resultado que ainda não foi calculado

Conflitos de dados Conflito RAW (Read after Write) Para ilustrar a ocorrência destes conflitos vamos considerar que temos duas instruções: instrução 1 e instrução 2 A instrução 2 vai ser executada depois da instrução 1 Vamos supor que a instrução 2 lê dados que são o resultado da instrução 1 – existe uma dependência entre as instruções O conflito ocorre se a instrução 2 tentar ler os dados antes da instrução 1 os ter escrito A instrução 2 iria ler um valor desactualizado... Exemplo: ... inst. 1: ADD R0, R1, R2 # R0 ← R1 + R2 inst. 2: SUB R5, R0, R4 # R5 ← R0 – R4

Conflitos de dados Conflito RAW (cont.) CONFLITO ! k k+1 k+2 k+3 k+4 k+5 k+6 k+7 ... ADD R0, R1, R2 IF ID EXE MEM WB SUB R5, R0, R4 CONFLITO ! A instrução SUB está a utilizar o valor de R0 antes de tempo, pois a instrução ADD ainda não escreveu o resultado (Write-back)...

Conflitos de dados Resolução básica de conflitos Detecta-se o conflito Introduzem-se bolhas no pipeline Uma bolha é basicamente uma palavra de controlo que manda “não fazer nada” (nop) Cada bolha faz com que seja desperdiçado um ciclo de relógio Contudo existem alternativas mais eficientes para resolver cada tipo de conflito Inserir bolhas, só mesmo se não houver uma alternativa...

Conflitos de dados Para o caso anterior, resolve-se o conflito introduzindo 2 bolhas após detectado o conflito O conflito pode ser detectado quando é feita a descodificação do SUB Depois atrasa-se o SUB dois ciclos, de forma a dar tempo para fazer o WB do ADD k k+1 k+2 k+3 k+4 k+5 k+6 k+7 ... ADD R0, R1, R2 IF ID EXE MEM WB SUB R5, R0, R4 B … Conflito detectado Conflito resolvido

Conflitos de dados Outra maneira de ver o problema: SUB R5,R0,R4 ADD R0,R1,R2 …

Conflitos de dados Outra maneira de ver o problema: … SUB R5,R0,R4 ADD R0,R1,R2 …

Conflitos de dados Outra maneira de ver o problema: B … SUB R5,R0,R4 ADD R0,R1,R2 …

Conflitos de dados Outra maneira de ver o problema: B B … SUB R5,R0,R4 ADD R0,R1,R2

Conflitos de dados Outra maneira de ver o problema: B B … … SUB R5,R0,R4

Conflitos de dados Resolução mais eficiente de conflitos RAW Utiliza-se uma técnica chamada forwarding A ideia consiste em disponibilizar resultados nas entradas da unidade funcional (fase EXE)… …ainda antes de ser feito o write-back Quando são detectados conflitos, utilizam-se esses resultados em vez do que foi lido dos registos

Conflitos de dados Utilização de forwarding

Conflitos de dados Outros conflitos de dados Conflito WAW (Write after Write) Ambas as instruções são de escrita e o resultado vai ser escrito no mesmo local O conflito ocorre quando se a instrução 2 tentar escrever antes da instrução 1 Conflito WAR (Write after Read) A instrução 1 lê dados do local onde a instrução 2 escreve O conflito ocorre se a instrução 2 tentar escrever antes da instrução 1 ler Ocorrem em pipelines mais complexos, com várias fases onde podem ser feitas leituras e escritas e nos registos

Conflitos estruturais Duas (ou mais) instruções tentam aceder simultaneamente ao mesmo recurso Situação típica: Quando se usa uma única memória para dados e programa, não se pode fazer o fetch (IF) ao mesmo tempo que uma instrução acede à memória para ler/escrever dados Situações menos típicas Tentar escrever no mesmo registo em simultâneo (só ocorre em processadores com mais do que uma fase de write-back) Tentar ler ou escrever dados em simultâneo na mesma memória (só ocorre em processadores com mais do que uma fase de acesso à memória)

Conflitos estruturais Exemplo de um conflito estrutural k k+1 k+2 k+3 k+4 k+5 k+6 k+7 ... LOAD R1, a IF ID EXE MEM WB ADD R3,R4,R5 SUB R6,R6,R7 XOR R1,R4,R5 CONFLITO ! Não pode ser feito o fetch ao mesmo tempo que se acede à memória para ler dados (o LOAD)...

Conflitos estruturais Resolução do conflito Introdução de uma bolha antes do fetch... k k+1 k+2 k+3 k+4 k+5 k+6 k+7 k+8 ... LOAD R1, a IF ID EXE MEM WB ADD R3,R4,R5 SUB R6,R6,R7 XOR R1,R4,R5 B Conflito resolvido

Conflitos estruturais Resoluções mais eficientes Memórias de dados e de instruções separadas Tipicamente este esquema é implementado usando uma memória cache para dados e outra para instruções Instruction pre-fetching É feito antecipadamente o fetch de várias instruções, que ficam guardadas numa memória interna (buffer de instruções) Quando o buffer fica vazio vão-se buscar mais instruções à memória.

Conflitos de controlo Ocorrem quando aparecem saltos Saltos incondicionais O processador só fica a saber que é uma instrução de salto na fase ID (descodificação)... ... mas nessa altura a instrução na posição que se segue à de salto já se encontra na fase IF (fetch) Saltos condicionais Para além do que acontece com os saltos incondicionais, não se sabe antecipadamente se vai ou não ocorrer o salto Tipicamente só se sabe a ocorrência (ou não) do salto após a verificação da condição do salto (tipicamente associada à fase EXE)

Só aqui se sabe que é um salto... Conflitos de controlo Só aqui se sabe que é um salto... Nos saltos condicionais, só aqui se sabe se o salto vai ser tomado ou não...

Conflitos de controlo Exemplo (salto incondicional) ... LBL1: ADD R1, R4, R5 STORE a, R1 JUMP LBL1 LBL2: LOAD R1, a

Conflitos de controlo Ilustração do problema (salto incondicional): k k+1 k+2 k+3 k+4 k+5 k+6 k+7 k+8 k+9 ... JUMP LBL1 IF ID EXE MEM WB LOAD R1, a B ADD R1, R4, R5 Perde-se 1 ciclo, pois é feito um fetch inútil da instrução que se segue à de salto

Conflitos de controlo Exemplo (salto condicional) ... DEC R1, R1 JZER END ADD R0, R1, R2 STORE a, R0 END: LOAD R1, a Umas vezes há salto, outras não...

Conflitos de controlo supondo que o salto ocorre: k k+1 k+2 k+3 k+4 k+5 k+6 k+7 k+8 k+9 ... DEC R1, R1 IF ID EXE MEM WB JZER END ADD R0, R1, R2 B STORE a, R4 LOAD R1, a Perdem-se 2 ciclos, pois só se irá actualizar o valor de PC depois do salto concluir a fase EXE (só aí se sabe que o salto se vai verificar ou não)...

Conflitos de controlo Minorar a introdução de bolhas: Previsão de saltos (branch prediction) Previsão estática Assume-se que o salto é sempre tomado (predict-taken) Ou se assume que o salto nunca é tomado (predict-not-taken) Previsão dinâmica A previsão depende do que se passou em saltos anteriores Muito usada actualmente Nos casos em que a previsão está errada vão-se perder ciclos de processamento A anular o efeito das instruções que entretanto entraram