Escolar Documentos
Profissional Documentos
Cultura Documentos
Vicente Amorim
vicente.amorim.ufop@gmail.com
www.decom.ufop.br/vicente
Sumário
* Introdução
* Caminho de Dados
* Organização em multiciclos
* Pipelining
www.decom.ufop.br/vicente
Introdução
* Anteriormente
- Em OACI:
★ Como calcular o desempenho de um computador: número de
instruções, tempo de cada ciclo de clock, número de ciclos de
clock gastos por cada instrução (CPI).
www.decom.ufop.br/vicente
Introdução
* Anteriormente
- Em OACI:
★ Formatos de instruções conhecidos até agora:
www.decom.ufop.br/vicente
Introdução
* Anteriormente
- Exercício 1: Converter as seguintes instruções para binário.
. Traduzindo:
✓op de lw = 35; reg. $t1 = 9; reg. $t0 = 8; offset = 300 x 4 = 1200;
✓op de add = 0; funct = 32; reg. $t0 = 8; reg. $s2 = 18;
✓op de sw = 43;
www.decom.ufop.br/vicente
Introdução
* Anteriormente
- Exercício 1: Converter as seguintes instruções para binário.
. Equivalente em binário:
www.decom.ufop.br/vicente
Introdução
* Agora
- Em OACII:
★ Construção do caminho de dados;
★ Construção da unidade de controle;
★ Explicação das técnicas e princípios utilizados na construção
de uma CPU;
★ Paralelismo em nível de software e hardware;
★ Linguagens de descrição de hardware;
★ Sistemas de armazenamento e E/S.
www.decom.ufop.br/vicente
Introdução
* Agora
- Inicialmente, máquina com implementação básica do MIPS:
★ Instruções de acesso a memória: lw e sw.
★ Instruções aritméticas/lógicas: add, sub, and, or e slt.
www.decom.ufop.br/vicente
Introdução
* Visão Geral
- Independente da instrução a ser executada, dois primeiros passos
são comuns:
★ Envio do valor do contador de programa (PC)* para a memória
que contém o código e fazer o carregamento da instrução.
★ Leitura dos registradores:
• Ler um ou dois registradores à partir dos campos descritos na
instrução.
• lw precisa ter somente um registrador lido enquanto add, sub, etc
precisam ter dois.
* PC (program counter): registrador que contém o endereço de memória da instrução a ser executada.
www.decom.ufop.br/vicente
Introdução
* Visão Geral
- Após dois primeiros passos, ações são específicas para cada tipo
de instrução.
www.decom.ufop.br/vicente
Introdução
* Visão Geral
- Resumo da interconexão entre os principais elementos da
máquina MIPS (unidade de controle não descrita):
www.decom.ufop.br/vicente
Introdução
* Visão Geral
- Resumo da interconexão entre os principais elementos da
máquina MIPS:
www.decom.ufop.br/vicente
Introdução
* Visão Geral
- Implementação MIPS é composta por dois tipos de elementos
lógicos:
★ Combinacionais: Saídas dependem exclusivamente das entradas
providas - ULA, multiplexers, etc.
www.decom.ufop.br/vicente
Introdução
* Visão Geral
- Exemplos elementos combinacionais e de estado:
www.decom.ufop.br/vicente
Introdução
* Visão Geral
- Regime de clock / temporização:
★ Define quando os sinais dos componentes podem ser lidos e
quando devem ser escritos.
★ Importante definir quando um elemento pode ser escrito / lido:
• A leitura e escrita simultâneas de um sinal podem causar
inconsistências indesejáveis.
★ Escritas são feitas ao final do ciclo de clock enquanto que
leituras no início.
www.decom.ufop.br/vicente
Introdução
* Visão Geral
- Regime de clock / temporização:
★ Como saber quando um valor deve ser escrito em um dado
elemento? (registradores, por exemplo)
• Cada registrador possui um “sinal de carga” particular que é
ativado com lógica direta.
www.decom.ufop.br/vicente
Introdução
* Visão Geral
- Regime de clock / temporização:
★ Metodologia de baseada nos sinais de borda do clock, permite
que em um mesmo ciclo de clock:
• Execução de leitura do dado armazenado em um registrador;
www.decom.ufop.br/vicente
Caminho de Dados
www.decom.ufop.br/vicente
Caminho de Dados
* Criação do Caminho de Dados
- Como construir uma máquina capaz de executar instruções
MIPS?
www.decom.ufop.br/vicente
Caminho de Dados
* Criação do Caminho de Dados
- Instruções são executadas em diversos passos diferentes:
1) Busca de instrução;
2) Decodificação da instrução:
www.decom.ufop.br/vicente
Caminho de Dados
* Criação do Caminho de Dados
www.decom.ufop.br/vicente
Caminho de Dados
* Elementos Básicos
- Elementos necessários para a Busca da Instrução:
* Memória onde estão armazenadas as instruções;
* O contador de programa (PC) para saber a instrução a ser
executada;
* Um somador para calcular o endereço da próxima instrução.
www.decom.ufop.br/vicente
Caminho de Dados
* Elementos Básicos
- Elementos necessários para a Busca da Instrução:
* Contador de programa (PC)
contém o endereço da instrução
em execução.
www.decom.ufop.br/vicente
Caminho de Dados
* Elementos Básicos
- Simulação
www.decom.ufop.br/vicente
Caminho de Dados
* Elementos Básicos
- Elementos necessários para instruções do tipo R:
* Banco de registradores para armazenar os operandos e o
resultado das operações.
* Uma Unidade Lógica e Aritmética (ULA) que será utilizada para
realizar as operações.
www.decom.ufop.br/vicente
Caminho de Dados
* Elementos Básicos
- Elementos necessários para instruções do tipo R:
* A instrução (fornecida pelo hardware de busca da instrução)
contém o endereço de três registradores.
www.decom.ufop.br/vicente
Caminho de Dados
* Elementos Básicos
- Elementos necessários para instruções do tipo R:
www.decom.ufop.br/vicente
Caminho de Dados
* Elementos Básicos
- Simulação
www.decom.ufop.br/vicente
Caminho de Dados
* Elementos Básicos
- Elementos necessários para instruções lw e sw:
* Memória de dados;
* Módulo de extensão de sinal;
* Banco de registradores (já mostrado);
* Uma ULA (já mostrada).
www.decom.ufop.br/vicente
Caminho de Dados
* Elementos Básicos
- Combinando os elementos para a escrita em memória (sw):
* Endereço de escrita é obtido pela soma de um registrador
base (registrador 1) com um deslocamento de 16bits estendido
para 32bits.
* O registrador 2 é escrito na memória.
4
www.decom.ufop.br/vicente
Caminho de Dados
* Elementos Básicos
- Combinando os elementos para a leitura da memória (lw):
* Semelhante ao processo de escrita.
* Diferença básica é a existência de um caminho para escrever o
valor lido no banco de registradores.
4
www.decom.ufop.br/vicente
Caminho de Dados
* Elementos Básicos
- Elementos necessários p/ se executar um beq (branch on equal):
* Comparar dois registradores utilizando o bloco ULA (através
da subtração);
www.decom.ufop.br/vicente
Caminho de Dados
* Elementos Básicos
- Elementos necessários p/ se executar
um beq (branch on equal):
www.decom.ufop.br/vicente
Caminho de Dados
* Elementos Básicos
- Nesta versão do bloco operativo qualquer instrução executa em
um ciclo de clock.
- Período do relógio deverá ser suficientemente longo para
acomodar a instrução mais demorada.
- Durante a execução de qualquer instrução, cada unidade
funcional poderá ser utilizada uma única vez.
- Resultado: Necessário uma memória de instruções e outra
memória de dados.
- Quando combinando os módulos, muitas unidades funcionais
poderão ser compartilhadas.
www.decom.ufop.br/vicente
Caminho de Dados
* Elementos Básicos: Combinando os módulos
• sw: Campo rt (bits 20-16) designa registrador cujo conteúdo será escrito na
memória de dados.
• lw: Campo rt (bits 20-16) designa registrador no qual será carregado o valor
lido da memória de dados.
www.decom.ufop.br/vicente
Caminho de Dados
* Elementos Básicos: Combinando os módulos
4
www.decom.ufop.br/vicente
Caminho de Dados
* Elementos Básicos
- Acrescentando os recursos para a busca de instrução e cálculo do
próximo endereço.
www.decom.ufop.br/vicente
Caminho de Dados
* Elementos Básicos
- Acrescentando os recursos para a busca de instrução e cálculo do
próximo endereço.
www.decom.ufop.br/vicente
Caminho de Dados
* Elementos Básicos
- Ao final de cada ciclo do relógio o PC é carregado com um
novo valor;
www.decom.ufop.br/vicente
Caminho de Dados
* Esquema Simples de Implementação
- Caminho de dados anterior pode ser utilizado para criação da
máquina mínima MIPS.
www.decom.ufop.br/vicente
Caminho de Dados
* Esquema Simples de Implementação
- Componente controle da ALU
★ Sinal de controle com 4 bits.
★ Possíveis valores:
www.decom.ufop.br/vicente
Caminho de Dados
* Esquema Simples de Implementação
- Componente controle da ALU
★ É possível gerar os 4 bits de controle da ALU à partir de uma
unidade de controle que possui como entradas:
• Campo “function” da instrução; e
• 2 bits adicionais de controle (ALUOp).
★ ALUOp indica o tipo de operação a ser realizada.
www.decom.ufop.br/vicente
Caminho de Dados
* Esquema Simples de Implementação
- Componente controle da ALU
★ Abaixo uma descrição de como é dado o controle do sinal
ALUOp e da própria ALU:
www.decom.ufop.br/vicente
Caminho de Dados
* Esquema Simples de Implementação
- A unidade de controle principal
★ Tipos de instruções suportadas até agora:
www.decom.ufop.br/vicente
Caminho de Dados
* Esquema Simples de Implementação
- A unidade de controle principal
★ Caminho de dados atual com todos os multiplexadores e
sinais:
www.decom.ufop.br/vicente
Caminho de Dados
* Esquema Simples de Implementação
www.decom.ufop.br/vicente
Caminho de Dados
* Esquema Simples de Implementação
- A unidade de controle principal
★ Exceto o PCSrc, a unidade de controle principal é a responsável
por controlar todos os sinais.
www.decom.ufop.br/vicente
Caminho de Dados
* Esquema Simples de Implementação
www.decom.ufop.br/vicente
Caminho de Dados
* Esquema Simples de Implementação
- A unidade de controle principal
★ Uso dos sinais de controle por cada uma das instruções:
www.decom.ufop.br/vicente
Caminho de Dados
* Esquema Simples de Implementação
- Execução de instruções do tipo-R (Ex.: add $t1, $t2, $t3)
1. Instrução é carregada e valor de PC é incrementado;
www.decom.ufop.br/vicente
Caminho de Dados
www.decom.ufop.br/vicente
Caminho de Dados
* Esquema Simples de Implementação
- Execução de instruções de acesso a memória (Ex.: lw $t1,off($t2))
1. Instrução é carregada e valor de PC é incrementado;
2. O valor do registrador é lido do banco de registradores ($t2);
3. ALU computa a soma do valor lido do registrador $t2 com o
valor do offset (off) extendido de 16 para 32 bits;
4. O resultado da soma executada na ALU é utilizado como
endereço de entrada para memória de dados;
www.decom.ufop.br/vicente
Caminho de Dados
* Esquema Simples de Implementação
- Execução de instruções de desvio condicional (Ex.: beq $t1,$t2,off)
1. Instrução é carregada e valor de PC é incrementado;
2. Dois registradores ($t1e $t2) são lidos do banco de
registradores;
3. ALU faz uma subtração dos valores contidos em $t1e $t2. O
valor de PC + 4 é adicionado aos 16 bits menos significativos
(estendidos) da instrução (off), posteriormente shiftados de dois
bits; o resultado é o endereço-alvo do branch.
4. O sinal “zero" da ALU é utilizado para se decidir qual será o
novo valor a ser armazenado dentro do PC.
www.decom.ufop.br/vicente
Caminho de Dados
www.decom.ufop.br/vicente
Caminho de Dados
* Esquema Simples de Implementação
- Finalizando implementação da unidade de controle principal
★ Unidade de controle pode ser mapeada através de suas E/Ss.
www.decom.ufop.br/vicente
Caminho de Dados
* Esquema Simples de Implementação
- Implementando Jumps
★ Implementação das instruções de desvio incondicional (jump)
se assemelham com as de desvio incondicional (branch).
www.decom.ufop.br/vicente
Caminho de Dados
* Esquema Simples de Implementação
- Implementando Jumps
★ 32 bits do endereço final (PC) são compostos por:
• 4 bits mais significativos do PC+4 (31:28);
• 26 bits do campo de endereço da instrução jump (25-0); e
• 2 bits (00).
★ Para suporte a jumps máquina precisa receber um
multiplexador adicional como forma de selecionar o valor correto
de PC.
★ Consequentemente, um novo sinal de controle também deverá
ser utilizado (jump).
www.decom.ufop.br/vicente
Caminho de Dados
www.decom.ufop.br/vicente
Caminho de Dados
* Esquema Simples de Implementação
www.decom.ufop.br/vicente
Caminho de Dados
* Esquema Simples de Implementação
* Características principais:
-> Cada instrução executa em um ciclo de clock.
-> Período do relógio é determinado pela instrução mais lenta.
www.decom.ufop.br/vicente
Caminho de Dados
* Esquema Simples de Implementação
- Conclusões
★ Máquina proposta até aqui executa qualquer das instruções em
apenas um ciclo de clock.
www.decom.ufop.br/vicente
Exercícios
* Exercícios
1) Descreva o papel do registrador PC e como o mesmo
funciona.
www.decom.ufop.br/vicente
Exercícios
* Exercícios
5) Execute a instrução add $t0, $t1, $t2 na máquina
apresentada à seguir. Deixe claro os valores de cada elemento
na mesma.
www.decom.ufop.br/vicente
Exercícios
* Exercícios
6) Descreva a razão pela qual três das entradas do componente
“banco de registradores” podem ser especificadas utilizando-se
somente 5 bits.
www.decom.ufop.br/vicente
Organização em Multiciclos
www.decom.ufop.br/vicente
Organização em Multiciclos
* Introdução
- Instruções são divididas em etapas.
www.decom.ufop.br/vicente
Organização em Multiciclos
* Introdução
- Recursos de hardware podem agora ser reaproveitados:
★ Redução no custo do bloco operativo. :-D
★ Aumento na complexidade do bloco de controle. :-(
- Agora temos:
★ Única memória para instrução e dados.
★ Apenas uma ULA (sem necessidade de somadores extras).
www.decom.ufop.br/vicente
Organização em Multiciclos
* Introdução
- Agora temos:
★ Inserção de registradores (internos) para reter as saídas das
unidades funcionais (exigência do regime multiciclo):
www.decom.ufop.br/vicente
Organização em Multiciclos
* Introdução
- Novos registradores (não visíveis ao programador):
★ Registrador ULASaída.
www.decom.ufop.br/vicente
Organização em Multiciclos
(IR)
(MDR)
www.decom.ufop.br/vicente
Organização em Multiciclos
* Registradores são barreiras temporais:
www.decom.ufop.br/vicente
Organização em Multiciclos
* Introdução
- Com a utilização dos novos registradores tem-se então uma
separação mais clara do que é feito em cada ciclo.
www.decom.ufop.br/vicente
Organização em Multiciclos
* Registradores são barreiras temporais:
www.decom.ufop.br/vicente
Organização em Multiciclos
* Características do Bloco Operativo Multiciclos
- Acréscimo de recursos para suportar jump e branch on equal:
★ Três possíveis fontes para o valor de PC:
www.decom.ufop.br/vicente
Organização em Multiciclos
* Características do Bloco Operativo Multiciclos
- Acréscimo de recursos para suportar jump e branch on equal:
★ Três possíveis fontes para o valor de PC:
www.decom.ufop.br/vicente
Organização em Multiciclos
* Características do Bloco Operativo Multiciclos
www.decom.ufop.br/vicente
Organização em Multiciclos
* Ciclos (resumo)
- Busca da Instrução
- Decodificação da instrução
★ Leitura dos registradores - mesmo que não sejam utilizados.
★ Cálculo do endereço do branch - mesmo que a instrução não
seja de branch.
- Execução da operação:
★ Cálculo do endereço efetivo do operando - Instruções load/store
★ Determinar se branch deve ser executado - Instrução branch.
www.decom.ufop.br/vicente
Organização em Multiciclos
* Ciclos (resumo)
- Acesso à memória - Instruções load / store
★ Escrita / leitura na/da memória;
★ Escrita de registrador - Instruções do tipo R.
www.decom.ufop.br/vicente
Organização em Multiciclos
* Ciclos (resumo)
- Execução de Instruções
1. Busca da instrução (e incremento do PC).
★ RI = Mem[PC];
PC = PC + 4.
★ Duas operações acima ocorrem em paralelo.
www.decom.ufop.br/vicente
Organização em Multiciclos
* Ciclos (resumo)
- Execução de Instruções
2. Decodificação (Geração dos Sinais de Controle) e Leitura de Rs e
Rt.
★ A = Reg[RI[25-21]];
B = Reg[RI[20-16]];
ULASaída = PC + (extensão de sinal (RI[15-0]) << 2)
www.decom.ufop.br/vicente
Organização em Multiciclos
* Ciclos (resumo)
www.decom.ufop.br/vicente
Organização em Multiciclos
* Ciclos (resumo)
- Execução de Instruções
3. Execução da Instrução:
★ Referência à memória:
• ULASaída = A + extensão de sinal(RI[15-0]);
★ Tipo R
• ULASaída = A op B.
www.decom.ufop.br/vicente
Organização em Multiciclos
* Ciclos (resumo)
- Execução de Instruções
3. Execução da Instrução:
★ Desvio Condicional
• Se (A == B) então PC = ULASaída;
• Usar a ULA para fazer A-B, porém sem escrever em ULASaída).
★ Desvio Incondicional
• PC = PC[31-28] || (RI[25-0] << 2);
www.decom.ufop.br/vicente
Organização em Multiciclos
* Ciclos (resumo)
- Execução de Instruções
www.decom.ufop.br/vicente
Organização em Multiciclos
* Ciclos (resumo)
- Execução de Instruções
www.decom.ufop.br/vicente
Organização em Multiciclos
* Ciclos (resumo)
- Execução de Instruções
www.decom.ufop.br/vicente
Organização em Multiciclos
* Ciclos (resumo)
- Execução de Instruções
www.decom.ufop.br/vicente
Organização em Multiciclos
* Ciclos (resumo)
- Execução de Instruções
www.decom.ufop.br/vicente
Organização em Multiciclos
* lw
- Execução de Instruções
www.decom.ufop.br/vicente
Organização em Multiciclos
www.decom.ufop.br/vicente
Organização em Multiciclos
www.decom.ufop.br/vicente
Organização em Multiciclos
* Ciclos (resumo)
- Execução de Instruções
5. Final da execução de lw
★ lw:
• Reg[RI[20-16]] = RDM.
www.decom.ufop.br/vicente
Organização em Multiciclos
www.decom.ufop.br/vicente
Organização em Multiciclos
* Comparativo do número de passos
www.decom.ufop.br/vicente
Pipelining
www.decom.ufop.br/vicente
Pipelining
* Introdução
- Pipeline é a implementação de uma técnica na qual múltiplas
instruções são sobrepostas na execução.
www.decom.ufop.br/vicente
Pipelining
* Introdução
- Uma lavanderia sem pipeline:
★ Tempo total: 8h
★ Tempo entre início de duas mudas de roupa: 2h
www.decom.ufop.br/vicente
Pipelining
* Introdução
- Uma lavanderia com pipeline:
www.decom.ufop.br/vicente
Pipelining
* Introdução
- Paradoxo do pipeline:
★ O ganho do pipeline não está na redução do tempo de
execução de cada um dos estágios.
www.decom.ufop.br/vicente
Pipelining
* Introdução
- “Se todos os estágios levam a mesma quantidade de tempo, a
melhoria do sistema devido ao pipeline é igual ao número de estágios
do sistema.”
★ Quanto maior o tempo executando em pipeline, maior o
ganho.
★ Exemplo 1: 5 Tarefas
• Sem pipeline: 20 slots de tempo.
• Com pipeline: 8 slots de tempo.
• Ganho: 20/8 = 2,5
www.decom.ufop.br/vicente
Pipelining
* Introdução
★ Exemplo 2: 10 Tarefas
• Sem pipeline: 40 slots de tempo.
• Com pipeline: 13 slots de tempo.
• Ganho: 40/13 = 3,077
www.decom.ufop.br/vicente
Pipelining
* Introdução
- Mesmos princípios da lavanderia se aplicam aos processadores:
- Instruções em MIPS normalmente levam 5 estágios para serem
executadas:
1. Busca da instrução.
2. Decodificação e leitura dos registradores.
3. Execução da operação ou cálculo do endereço.
4. Acesso ao operando na memória de dados.
5. Escrita do resultado em um registrador.
www.decom.ufop.br/vicente
Pipelining
* Introdução
- Exemplo 3: Comparar o tempo de execução da versão
monociclo do MIPS com o tempo da versão pipeline. Considerar:
★ Execução sequencial de três instruções lw; e
★ Tabela de tempos nas unidades funcionais (abaixo).
www.decom.ufop.br/vicente
Pipelining
* Introdução
24/14 = 1.7
www.decom.ufop.br/vicente
Pipelining
* Introdução
- Se os estágios de um pipeline forem balanceados, então:
www.decom.ufop.br/vicente
Pipelining
* Introdução
- Motivos pelos quais o ganho teórico não é atingido:
★ Os estágios de um pipeline não são perfeitamente
balanceados;
www.decom.ufop.br/vicente
Pipelining
* Introdução
- Exemplo 4: Ainda em relação à tabela do exemplo 3, considere
que agora existam 1003 instruções lw seguidas.
www.decom.ufop.br/vicente
Pipelining
* Introdução
www.decom.ufop.br/vicente
Pipelining
* Introdução
- Exemplo 4:
www.decom.ufop.br/vicente
Pipelining
* Conceitos Básicos
- Facilidade de implementação do pipeline em MIPS (vs. x86):
★ Todas as instruções possuem o mesmo tamanho (32 bits):
Facilidade no carregamento e decodificação das instruções.
www.decom.ufop.br/vicente
Pipelining
* Hazards
- Durante o pipeline, determinadas situações impedem que a
próxima instrução comece a executar já no próximo ciclo de clock.
www.decom.ufop.br/vicente
Pipelining
* Hazards
- Hazards estruturais
★ Hardware não pode suportar a combinação de instruções a
serem executadas em um mesmo ciclo de clock.
www.decom.ufop.br/vicente
Pipelining
* Hazards
- Hazards de dados
★ Ocorre quando o pipeline necessita parar para aguardar que
um estágio anterior seja completado.
www.decom.ufop.br/vicente
Pipelining
* Hazards
- Hazards de dados
★ Se não houver uma intervenção, um hazard de dados pode
chegar a interromper o pipeline.
www.decom.ufop.br/vicente
Pipelining
* Hazards
- Hazards de dados
★ Como resolver?
• Com ajuda do compilador (já citado).
• Utilização de hardware adicional:
✓ Adiantamento (forwarding): Resultado disponibilizado pela ALU
pode ser adiantado como entrada para a próxima instrução.
• Para analisar o que realmente acontece utilizaremos o seguinte
esquema gráfico: add $s0, $t0, $t1
Esc
a
rit
tur
a
L ei
www.decom.ufop.br/vicente
Pipelining
* Hazards
- Hazards de dados
★ Como resolver?
• Alteração do hardware
www.decom.ufop.br/vicente
Pipelining
* Hazards
- Hazards de dados
★ Como resolver?
• Importante: Técnica do adiantamento em hardware só válida se
estágio destino está temporalmente após estágio fonte.
pipeline
stall
Pipelining
* Hazards
- Hazards de dados
★ Exercício: Considerando o trecho de código MIPS a seguir:
a) Solucione os possíveis hazards existentes.
b) Em número de ciclos, qual foi o ganho se compararmos o
código original com o melhorado?
lw $t1, 0($t0)
lw $t2, 4($t0)
add $t3, $t1, $t2
sw $t3, 12($t0)
lw $t4, 8($t0)
add $t5, $t1, $t4
sw $t5, 16($t0)
Pipelining
* Hazards
- Hazards de dados
★ Resposta:
lw $t1, 0($t0) IF-ID-EX-ME-WB
lw $t2, 4($t0) IF-ID-EX-ME-WB
————— STALL ————— ———— STALL ————
————— STALL ————— ———— STALL ————
add $t3, $t1, $t2 IF-ID-EX-ME-WB
————— STALL ————— ———— STALL ————
sw $t3, 12($t0) IF-ID-EX-ME-WB
lw $t4, 8($t0) IF-ID-EX-ME-WB
————— STALL ————— ———— STALL ————
————— STALL ————— ———— STALL ————
add $t5, $t1, $t4 IF-ID-EX-ME-WB
————— STALL ————— ———— STALL ————
sw $t5, 16($t0) IF-ID-EX-ME-WB
www.decom.ufop.br/vicente
Pipelining
* Hazards
- Hazards de controle
★ Considerando a existência de hardware especial que
possibilitasse a tomada de decisão já no segundo estágio do
pipeline:
www.decom.ufop.br/vicente
Pipelining
* Hazards
- Hazards de controle
★ Caso hardware especial não esteja disponível para cálculo no
segundo estágio:
• Stall ainda mais longo pode ser necessário.
• Stall pode se tornar inviável dependendo do programa
executado.
★ Segunda solução:
• Predição: “Chuta-se” o caminho a ser tomado.
• branches serão tomados todas as vezes! (ou não)
www.decom.ufop.br/vicente
Pipelining
* Hazards
- Hazards de controle
★ Considerando que os branches nunca serão tomados, o que
acontece caso contrário?
www.decom.ufop.br/vicente
www.decom.ufop.br/vicente
Pipelining
* Hazards
- Hazards de controle
★ Segunda solução (melhorada):
• Manter um histórico recente do comportamento associado aos
últimos branches: Tomados ou não tomados!?
www.decom.ufop.br/vicente
Pipelining
* Hazards
- Hazards de controle
★ Terceira solução: Decisão/branch atrasada(o)
• Baseia-se na espera em se tomar a decisão de qual a próxima
instrução a ser executada.
• Ao contrário, coloca-se outra “instrução útil” no lugar que não
dependa da decisão tomada pelo branch ainda não avaliado.
• Atualmente é a solução considerada na implementação da
arquitetura MIPS.
• MIPS “re-arranja” as instruções de forma que tal
comportamento se torna invisível ao programador.
www.decom.ufop.br/vicente
Pipelining
* Hazards
- Hazards de controle
★ Terceira solução: Decisão/branch atrasada(o)
www.decom.ufop.br/vicente
Pipelining
* Hazards
- Exercício:
★ Para cada uma das seguintes sequências de código abaixo,
avalie se:
• Código necessitará de stalls, executará sem stalls se
adiantamento for implementado ou se executará sem stalls.
a) lw $t0,0($t0) b) add $t1,$t0,$t0 c) addi $t1,$t0,1
add $t1,$t0,$t0 addi $t2,$t0,5 addi $t2,$t0,2
addi $t4,$t1,5 addi $t3,$t0,2
addi $t3,$t0,4
addi $t5,$t0,5
www.decom.ufop.br/vicente
Pipelining
* Hazards
- Solução:
IF-ID-EX-ME-WB
a) lw $t0,0($t0) ————STALL—————
add $t1,$t0,$t0 IF-ID-EX-ME-WB
www.decom.ufop.br/vicente
Pipelining
* Hazards
- Solução:
www.decom.ufop.br/vicente
Caminho de Dados com Pipeline
www.decom.ufop.br/vicente
Caminho de Dados com Pipeline
* Introdução
- Número de estágios para execução de uma instrução significa
também o número de estágios de um pipeline.
★ Se a mais longa das instruções leva n estágios, então esse será
também o número de estágios do pipeline.
www.decom.ufop.br/vicente
Caminho de Dados e Controle com Pipeline
www.decom.ufop.br/vicente
Caminho de Dados com Pipeline
* Introdução
- Fluxo de informações da esquerda para direita, exceto:
★ WB: Escrita dos valores de volta ao registrador destino; e
★ Escrita ou carregamento do novo valor de PC.
www.decom.ufop.br/vicente
Caminho de Dados e Controle com Pipeline
www.decom.ufop.br/vicente
Caminho de Dados com Pipeline
* Introdução
- Em um pipeline cheio de n estágios, até n instruções diferentes
podem executar ao mesmo tempo.
- Entretanto, como persistir os dados de uma instrução em um
dado estágio para o próximo?
★ Registradores especiais fazem a persistência dos dados de um
estágio a outro.
★ Registradores são escritos ao final de um ciclo e lidos no
início do próximo.
www.decom.ufop.br/vicente
Caminho de Dados com Pipeline
www.decom.ufop.br/vicente
Caminho de Dados com Pipeline
* Introdução
- Todas as instruções alteram o valor de PC:
★ Incremento direto; ou
★ Tomada de branch condicional/incondicional.
- PC também pode ser enxergado como sendo um outro
registrador parte do pipeline.
★ Alimenta o primeiro estágio de IF (instruction fetch).
★ Seu conteúdo deve ser salvo na ocorrência de alguma
excessão.
www.decom.ufop.br/vicente
Caminho de Dados com Pipeline
* Introdução
- Execução da maior instrução lw:
★ Ocupa todos os 5 estágios do pipeline.
★ Execução a seguir demonstra utilização da máquina por tal
instrução.
www.decom.ufop.br/vicente
Caminho de Dados com Pipeline
* Introdução
- Estágios do pipeline: 1- Instruction Fetch (IF) - busca da instrução
www.decom.ufop.br/vicente
Caminho de Dados com Pipeline
* Introdução
- Estágios do pipeline: 2- Instruction decode (ID) - Decodificação
www.decom.ufop.br/vicente
Caminho de Dados com Pipeline
* Introdução
- Estágios do pipeline: 3 - Execution (EX) - Execução ou calc. do end.
www.decom.ufop.br/vicente
Caminho de Dados com Pipeline
* Introdução
- Estágios do pipeline: 4 - Mem. access (MEM) - Acesso a memória
www.decom.ufop.br/vicente
Caminho de Dados com Pipeline
* Introdução
- Estágios do pipeline: 5 - Write back (WB) - Escrita de volta no reg.
www.decom.ufop.br/vicente
Caminho de Dados com Pipeline
* Introdução
- Execução da instrução sw:
★ Não ocupa todos os 5 estágios do pipeline.
★ Execução a seguir demonstra utilização da máquina por tal
instrução.
www.decom.ufop.br/vicente
Caminho de Dados com Pipeline
* Introdução
- Estágios do pipeline: 3 - Execution (EX) - Execução ou calc. do end.
www.decom.ufop.br/vicente
Caminho de Dados com Pipeline
* Introdução
- Estágios do pipeline: 4 - Mem. access (MEM) - Acesso a memória
www.decom.ufop.br/vicente
Caminho de Dados com Pipeline
* Introdução
- Estágios do pipeline: 5 - Write back (WB) - Escrita de volta no reg.
www.decom.ufop.br/vicente
Caminho de Dados com Pipeline
* Introdução
- Problema na execução da instrução lw:
★ O último passo da execução da instrução lw é o WB.
★ Nele o valor lido da memória é escrito de volta em um
registrador (dentro do banco).
★ Problema: O número do registrador a ser escrito foi perdido
no segundo passo do pipeline.
★ Geração de um hazard estrutural.
www.decom.ufop.br/vicente
Caminho de Dados com Pipeline
* Introdução
- Problema na execução da instrução lw:
www.decom.ufop.br/vicente
Caminho de Dados com Pipeline
* Representando graficamente os Pipelines
- Duas possíveis representações para:
★ Diagrama de múltiplos clocks:
www.decom.ufop.br/vicente
Caminho de Dados com Pipeline
* Representando graficamente os Pipelines
- Duas possíveis representações para:
★ Diagrama de clock simples: (correspondente ao 5o ciclo).
www.decom.ufop.br/vicente
Unidade de Controle com Pipeline
www.decom.ufop.br/vicente
Unidade de Controle com Pipeline
* Introdução
- No passo anterior vimos a implementação do caminho de dados
com pipeline.
www.decom.ufop.br/vicente
Unidade de Controle com Pipeline
www.decom.ufop.br/vicente
Unidade de Controle com Pipeline
* Introdução
- Significado e papel de cada sinal de controle já foi descrito
anteriormente.
- Valores de entradas e saídas do componente ALUOp também já
especificado anteriormente. Entretanto, agora separados em três
grupos:
www.decom.ufop.br/vicente
Unidade de Controle com Pipeline
* Considerações
- PC não possui sinal de controle (em todo ciclo ele será escrito).
www.decom.ufop.br/vicente
Unidade de Controle com Pipeline
* Considerações
- Sinais de controle agora divididos em cinco diferentes grupos:
★ Instruction fetch (IF);
★ Instruction decode / register file read (ID);
★ Execution / address calculation (EX);
★ Memory access (MEM);
★ Write back (WB).
www.decom.ufop.br/vicente
Unidade de Controle com Pipeline
* Considerações
www.decom.ufop.br/vicente
Unidade de Controle com Pipeline
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Introdução
- Cenários exemplificados anteriormente dificilmente acontecem
em programas reais.
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Introdução
- Considerando ainda que o registrador $2 possui o valor “10”
antes da operação de subtração e “20” após a mesma.
- Questionamentos:
★ Como tal trecho de código seria considerado no pipeline?
★ Algum problema? Se sim, qual(is)?
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Introdução
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Adiantamento
- Em execução normal, valor de $2 poderia ser utilizado somente
após o 5o ciclo de clock.
- Análise:
★ Resultado desejado está pronto após a execução do estágio
EX da primeira instrução.
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Adiantamento
- Possível solução:
★ Dados são efetivamente utilizados pelas instruções AND e OR
em seus estágios EX - ciclo de clock 4 e 5.
★ Execução do segmento de código pode prosseguir
normalmente se dados necessários forem “adiantados”.
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Adiantamento
- Como adiantamento de dados funciona?
★ Considerando somente os casos de adiantamento para uma
operação no estágio EX.
★ Algumas instruções não escrevem em registradores. Política de
adiantamento poderia causar mais problemas.
• Problema: Como controlar quando da ocorrência de instruções
que não escrevem em registradores?
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Adiantamento
- Como adiantamento de dados funciona?
★ Dependência dos dados agora advém dos registradores de
pipeline.
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Introdução
- Como adiantamento de dados funciona?
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Introdução
- Como adiantamento de dados funciona?
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Adiantamento
- Como adiantamento de dados funciona?
★ Controle de adiantamento dos dados é feito no estágio EX
pois os multiplexadores da ALU - que escolhem de onde vem os
operandos - se encontram nesse estágio.
★ Números dos registradores operandos precisam ser passados
do estágio ID para estágio EX via registrador de pipeline.
• Objetivo: Detectar para qual estágio os dados devem ser
adiantados.
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Adiantamento
- Como adiantamento de dados funciona?
★ Problema: Como detectar os hazards e acionar os sinais de
controle (ForwardA e ForwardB)?
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Adiantamento
- Como adiantamento de dados funciona?
★ Solução: Seguintes condições para ocorrência de um hazard
em MEM:
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Introdução
- Como adiantamento de dados funciona?
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Adiantamento
- Como adiantamento de dados funciona?
★ Valores de controle dos multiplexadores para adiantamento de
dados:
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Hazards de dados e Stalls
- Adiantamentos nem sempre funcionam:
★ Instrução que lê um registrador logo após uma instrução lw
que escreve no mesmo registrador.
- Como solucionar?
★ Algum componente precisa demandar a parada do pipeline
quando situação acima é detectada.
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Hazards de dados e Stalls
- Como detectar?
★ Necessária uma unidade de detecção de hazards.
★ Verificar por instruções lw diante da seguinte condição:
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Hazards de dados e Stalls
- Como detectar?
★ Se a condição anterior é verdadeira, pipeline pára por um ciclo.
• Se não existe adiantamento, stall deve ser de dois ciclos.
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Hazards de dados e Stalls
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Hazards de dados e Stalls
- Como detectar? Em nível de hardware…
★ Unidade de adiantamento continua existindo e sua tarefa é
recuperar os valores a serem “adiantados”.
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Hazards de dados e Stalls
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Hazards de controle
- Até o momento somente foram analisados problemas
relacionados as operações aritméticas e de transf. de dados.
- Entretanto, existem problemas (hazards) também envolvendo os
branches.
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Hazards de dados e Stalls
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Hazards de controle
- Hazards de controle são normalmente mais fáceis de serem
compreendidos.
- Possíveis soluções para hazards de controle não são tão efetivas
quanto as soluções para hazards de dados.
- Duas possíveis soluções e uma otimização:
1) Assumir que os branches nunca serão tomados;
• Reduzir os atrasos dos branches.
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Hazards de controle
- Assumir que branches nunca serão tomados:
★ Possível solução é sempre considerar que os branches nunca
serão tomados;
★ Continua-se executando as instruções seguidamente e as
enfileirando no pipeline.
★ Se porventura o branch for tomado, as instruções antes
buscadas na memória são descartadas.
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Hazards de controle
- Assumir que branches nunca serão tomados:
★ Reduzir os atrasos dos branches
• Mover o cálculo do endereço alvo do branch do estágio
EX para o estágio ID: alteração do hardware; e
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Hazards de controle
www.decom.ufop.br/vicente
Detecção e Tratamento dos Conflitos
* Hazards de controle
- Predição dinâmica de branches
★ Tenta-se “adivinhar” o comportamento do branch se baseando
em vários fatores.
• Analisar o endereço da instrução e verificar se da última
vez que a mesma foi executada o branch foi tomado ou não.
www.decom.ufop.br/vicente