Post on 23-Dec-2018
Capítulo 4
O Processador
Introdução
Fatores de desempenho da CPU Contagem de instrução
Determinado pelo ISA e compilador
CPI e tempo de ciclo Determinado pelo hardware da CPU
Nós examinaremos duas implementações do MIPS Uma versão simplificada
Uma versão de pipeline mais realista
Subconjunto simples, mostra a maioria dos aspectos Referência de memória: lw, sw
Aritmética/lógica: add, sub, and, or, slt
Transferência de controle: beq, j
Execução da Instrução (1)
Para cada instrução, os dois primeiros passos são idênticos:
Envia o contador de programa (PC) para a memória que contém o código
busca a instrução a partir daquela memória
Lê um ou dois registradores, usando os campos da instrução para selecionar os registradores para ler
Para a instrução de carregar a palavra, nós precisamos ler somente um registrador
A maioria das outras instruções exigem que se leia dois registradores
Após estas etapas, as ações para completar a instrução depende da classe de instrução
Execução da Instrução (2)
Dependendo da classe de instrução
Usa a unidade lógica aritmética (ULA) para calcular
Endereço da memória para instruções load/store
Resultado aritmético para a execução da operação
Comparações para o endereço alvo de desvio
Instrução de referência de memória precisa ter acesso a memória para ler/escrever dados
Instruções de lógica aritmética deve escrever dados a partir da ULA ou memória no registrador
Instruções de desvio precisam alterar o próximo endereço de instrução baseado na comparação
PC endereço alvo ou PC + 4
Visão Geral da CPU
Fornece endereço da instrução
PC+4
- endereço de memória (resultado da ULA ou memória no reg.)- resultado aritmético (escreve resultado da ULA no reg.)- comparação (PC e offset do desvio são somados)
Linhas interligando as unidades funcionais representam barramentos
Multiplexadores
Não pode simplesmente juntar os fios Use multiplexadores
Deve-se acrescentar um elemento lógico que escolhe entre as várias fontes e dirige uma dessas fontes para o seu destino
Vindo de dois somadores
ULA / mem. dados
reg. / campo imediato da instrução
Exercício
Considere um pequeno multiplexador com 4 entradas de dados de 1 bit
a) Este bloco contém somente lógica, somente flip-flops, ou ambos?
b) Mostre como este bloco pode ser implementado. Use somente AND, OR, NOT
c) Estenda a letra b) com buffers tri-state
A intenção do estado Z é permitir que diversoscircuitos compartilhem o mesmo barramentode dados, sem afetar umas as outras
Entrada SaídaA B C0 0 Z1 0 Z0 1 01 1 1
Controle
Memória de dados deve ler em um load e escrever em um storeregs. devem escrever
em uma instrução de load e aritmética
estas operações são dirigidas pelas linhas de controle que são definidas em função de vários campos da instrução
Exercício
Diferentes instruções utilizam diferentes blocos de hardware na implementação básica do ciclo único
a) Quais são os valores dos sinais de controle gerados pelo controle do slide anterior?
b) Quais recursos (blocos) executam uma função útil?
Instrução Interpretação
a. AND Rd, Rs, Rt Reg[Rd] = Reg[Rs] AND Reg[Rt]
b. SW Rt, Offs(Rs) Mem[Reg[Rs] + Offs] = Reg[Rt]
Fundamentos de Lógica
Os dados são codificados em binário
Baixa tensão = 0, Alta tensão = 1
Um fio por bit
Dados de múltiplos bits codificados em barramentos de mútiplos fios
Elemento combinacional
Opera em dados
Saída é uma função da entrada
Elementos de estado (sequencial)
Armazena dados
Elementos Combinacionais
Porta AND
Y = A & B
A
BY
I0
I1Y
Mux
S
Multiplexador
Y = S ? I1 : I0
A
B
Y+
A
B
YALU
F
Somador
Y = A + B
Unidade lógica/aritmética
Y = F(A, B)
Elementos Sequenciais (1)
Registrador: armazena dados num circuito
Usa um sinal de relógio para determinar quando atualizar o valor armazenado
Disparado pela borda: atualiza quando Clk muda de 0 para 1
D
Clk
Q
Clk
D
Q
Clk D Q Comentário
0 X Qant Nenhuma mudança
1 0 0 Reseta
1 1 1 Seta
Elementos Sequenciais (2)
Registrador com controle de escrita
Somente atualiza na borda do relógio quando a entrada do controle de escrita é 1
Usado quando o valor armazenado é solicitado mais tarde
D
Clk
Q
Write
Write
D
Q
Clk
Metodologia de Relógio
Lógica combinacional transforma dados durante ciclos de relógio Entre as bordas do relógio
Entrada a partir de elementos de estado, saída para elemento de estado
Atraso mais longo determina o período de relógio
Uma metodologia de disparo de bordas permite que um elemento de estado possa ser lido e escrito no mesmo ciclo de relógio, sem criar uma corrida que poderia levar a valores de dados indeterminados
Construindo Caminho de Dados
Caminho de dados
Elementos que processam dados e endereços na CPU
Registradores, ULAs, muxes, memórias, …
Nós vamos construir um caminho de dados do MIPS de forma incremental
Refinando o design geral Unidade de memória: armazena as instruções de um
programa e fornece as instruções dado um endereço
Contador de programa (PC): armazena o endereço da instrução atual
Somador: incrementa o endereço de PC para o endereço da próxima instrução
Busca Instrução
Registrador de 32 bits
Incrementa por 4 para próxima
instrução
fornece as instruções dado um endereço
Instruções do Format-R
Lê dois operandos de registrador (Read Register)
Executa operação lógica/aritmética
Escreve resultado no registrador (Write Register)
No total, tem-se 32 regs (i.e., 25)
O barramento da entrada e saída de dados são de 32 bits
op rs rt rd shamt funct
6 bits 6 bits5 bits 5 bits 5 bits 5 bits
add, sub, AND, OR e slt
Fornece dado a ser escrito no registrador
Instruções de Load/Store
Lê operandos do registrador
Calcula endereço usando um deslocamento de 16 bits
Usa ULA, mas com deslocamento de sinal estendido
Load: Lê memória offset ($t2) e atualiza registrador ($t1)
Store: Escreve valor do registrador ($t1) para memória offset ($t2)
lw $t1,offset_value($t2)sw $t1,offset_value ($t2)
Soma registrador base ($t2) ao campo offset de 16 bits sinalizado
Usado pelo load
Usado pelo store
Instruções de Desvio (1)
Lê operandos do registrador
Compara operandos
Usa ULA, subtrai e checa saída Zero
Calcula endereço alvo
Deslocamento de extensão do sinal
Desloca 2 casas para esquerda (aumenta o intervalo efetivo do offset por um fato de 4)
Adiciona ao PC + 4 Já calculado pela busca de instrução
op rs rt constante ou endereço
6 bits 5 bits 5 bits 16 bits
beq $t1,$t2,offset
offset de 16 bits sinalizado
offset
Instruções de Desvio (2)
Somente redireciona
fios
Fio do bit de sinal replicado
Usa ULA para avaliar a condição do desvio
Um somador para calcular o alvo de desvio como a soma do PC incremento e a extensão do sinal
Saída zero é true se os dois valores forem iguais
O deslocamento vai jogar fora somente os bits de sinal
A unidade shift-left 2 é simplesmente um roteamento dos sinais entre a entrada e saída que adiciona 00 aos bits menos significativos da extensão do sinal de offset
Dobra a quantidade de fios
Compondo os Elementos
O caminho de dados tenta executar todas as instruções em um único ciclo de relógio
Nenhum dos recursos do caminho de dados pode ser usado mais de uma vez por cada instrução
de modo que, qualquer elemento necessário mais do que uma vez, deve ser duplicado
Por isso, precisamos de uma memória de instruções separada da memória de dados
Compartilhar elemento do caminho de dados entre duas diferentes classes de instrução
Usar multiplexadores e sinal de controle para selecionar entre as múltiplas entradas
Caminho de Dados Tipo-R/Load/Store
Instruções tipo-R usam dois regs
Instruções tipo load/storeusam sign-extended
O valor armzenado no registrador de destino vem da ULA (p/ uma instrução do tipo-R) ou da memória (p/ um instrução do tipo load)
load/store usam um reg + offset
Tipo-R
load
O Caminho de Dados Completo
Exercício 1
Quais das seguintes frases estão corretas para uma instrução load? Consulte o slide anterior
a) MemtoReg deve ser setado para fazer com que o dado da memória seja enviado para o arquivo de registrador
b) MemtoReg deve ser setado para fazer com que o registrador de destino correto seja enviado para o arquivo de registrador
c) Nós não nos importamos sobre a definição de MemtoReg para loads
Exercício 2
O caminho de dados de ciclo único, descrito conceitualmente até aqui, deve ter memória de instruções e dados separada, porque
a) O formato das instruções e dos dados são diferentes no MIPS, e deste modo diferentes memórias são necessárias
b) Tendo memórias separadas é menos dispendioso
c) O processador opera em um ciclo e não pode usar uma memória de única porta para dois acessos diferentes dentro desse ciclo
Exercício 3
Diferentes unidades de execução e blocos de lógica digital têm diferentes latências (tempo necessário para realizar o trabalho).
I-Mem Add Mux ULA Regs D-Mem Control
a. 200ps 70ps 20ps 90ps 90ps 250ps 40ps
b. 750ps 200ps 50ps 250ps 300ps 500ps 300ps
Qual é o tempo necessário para executar as instruções AND,LOAD e BEQ? Responda esta questão com base no circuito do slide 8
Controle da ULA (1)
ULA usada para
Load/Store: F = adiciona
Desvio: F = subtrai
Tipo-R: F = depende do campo funct
Controle da ULA Função
0000 AND
0001 OR
0010 add
0110 subtract
0111 set-on-less-than
1100 NOR
Controle da ULA (2)
Assume ALUOp de 2-bit derivado a partir do opcode
Lógica combinacional deriva o controle da ULA
opcode ALUOp Operação funct Função da ULA Controle daULA
lw 00 load word XXXXXX add 0010
sw 00 store word XXXXXX add 0010
beq 01 branch equal XXXXXX subtract 0110
R-type 10 add 100000 add 0010
subtract 100010 subtract 0110
AND 100100 AND 0000
OR 100101 OR 0001
set-on-less-than 101010 set-on-less-than 0111
Controle da ULA (3)
Tabela da verdade para os 4 bits de controle da ULA
As entradas são ALUOp e o campo de código de função
Os dois primeiros campos do campo de função são sempre 10
Don’t care terms = X
Controle da ULA (4)
Gera os 4 bits de controle baseado nos bits da ALUOp e o código de função
Exercício
Projete um circuito lógico com três entradas A, B e C, cuja saída será nível alto apenas quando a maioria das entradas for nível alto
A Unidade de Controle Principal
Sinais de controle derivados a partir da instrução
0 rs rt rd shamt funct
31:26 5:025:21 20:16 15:11 10:6
35 or 43 rs rt endereço
31:26 25:21 20:16 15:0
4 rs rt endereço
31:26 25:21 20:16 15:0
Tipo-R
Load/Store
Desvio
opcode sempre lê
lê, exceto p/ load
escrita p/ tipo-R e
load
sign-extend e add
Caminho de Dados com Controle
Instruções do Tipo-R
Instruções Load
Instruções Branch-on-Equal
Finalizando o Controle (1)
A função de controle pode ser precisamente definida usando a seguinte tabela:
Instruções do formato-R (add, sub, AND, OR, and slt):
Possuem regs fontes rs e rt e reg de destino rd Define como ALUSrc e RegDst são setados
Usam RegWrite=1, mas nunca lêem nem escrevem na memória de dados
Finalizando o Controle (2)
Quando o sinal de controle de branch é zero, o PC é substituído de forma incondicional por PC+4
Caso contrário, o PC é substituído pelo alvo de desvio se a saída Zero da ULA for também alto
O campo ALUOp para instruções do tipo-R é setado para 10 para indicar que o controle da ULA deve ser gerado a partir do campo funct
Instruções do formato load/store usam ALUSrce ALUOp para executar o cálculo do endereço
MemRead e MemWrite são setados para executar acesso a memória
RegDst e RegWrite são setados para um load para fazer com que o resultado seja armazenado em rt
Finalizando o Controle (3)
A instrução de desvio envia os regs rs e rtpara a ULA (similar ao formato-R)
ALUOp é setado para uma subtração (Controle da ULA = 01), que é usado para teste de igualdade
MemtoReg é irrelevante quando o sinal RegWrite é zero (uma vez que o registrador não está sendo escrito)
RegDst é também irrelevante quando RegWrite é 0
Finalizando o Controle (4)
A função de controle para uma implementação de um único ciclo
Finalizando o Controle (5)
Implementação estruturada da função de controle
Exercício
A latência de componentes individuais do caminho de dados afetam o tempo de ciclo de relógio de todo caminho de dados
I-Mem Add Mux ULA Regs D-Mem Sign-extend
Shift-left-2
a. 200ps 70ps 20ps 90ps 90ps 250ps 15ps 10ps
b. 750ps 200ps 50ps 250ps 300ps 500ps 100ps 5ps
a) Qual é o tempo de ciclo de relógio se somente as instruções do tipo ULA (add, AND, etc.) são executdas?
b) Qual é o tempo de ciclo de relógio se somente instruções LW são suportadas?
c) Qual é o tempo de ciclo de relógio se somente instruções ADD, BEQ, LW e SW são suportadas?
Implementando Jumps
Jump usa endereço de palavra
Atualiza PC com concatenação de
Os 4 bits superiores do PC atual + 4 (estes são os bits 31:28 da instrução de endereço seguinte)
Endereço de jump de 26 bits
Os bits 002
Precisa de um sinal de controle extra (Jump) decodificado a partir do opcode
000010 endereço
31:26 25:0
Jump
Caminho de Dados com Jumps Adicionados
Aspectos de Desempenho
Atraso mais longo determina período de relógio
Caminho crítico: instrução de load
Memória de instrução registrador ULA memória de dados registrador
Não é viável variar período para diferentes instruções
O ciclo de relógio deve ter a mesma duração para cada instrução neste projeto de ciclo único
Viola princípio de projeto
Fazendo o caso comum rápido
Melhorar o desempenho através do pipeline
Analogia do Pipeline
Lavanderia pipelined: sobreposição de execução
Paralelismo melhora o desempenho
Quatro cargas:
Aceleração = 8/3.5 ≈ 2.3
Dependendo do número de cargas, aceleração pode ser igual ao número de estágios no pipeline
3.5
8
Pipeline do MIPS
Cinco estágios, um passo por estágio
1. IF: Busca instrução da memória
2. ID: Decodifica instrução & lê registrador
3. EX: Executa operação ou calcula endereço
4. MEM: Acessa o operando de memória
5. WB: Escreve o resultado de volta para o registrador
Desempenho do Pipeline (1)
Suponha que o tempo para os estágios é:
100ps para escrita e leitura do registrador
200ps para os outros estágios
Compara um caminho de dados com pipeline e com único ciclo
Instr BuscaInstr
Leiturado reg
OperaçãoULA
Acesso a memória
Escritado reg
Tempo total
lw 200ps 100 ps 200ps 200ps 100 ps 800ps
sw 200ps 100 ps 200ps 200ps 700ps
R-format 200ps 100 ps 200ps 100 ps 600ps
beq 200ps 100 ps 200ps 500ps
Desempenho do Pipeline (2)
Único ciclo (Tciclo= 800ps)
Pipeline (Tciclo= 200ps)
Aceleração do Pipeline
Se todos os estágios estiverem balanceados
i.e., todos têm o mesmo tempo
Tempo entre instruçõespipelined
= Tempo entre instruçõesnonpipelined
Número de estágios
Se não estiver balanceado, aceleração é menor
Aceleração devido ao aumento da taxa de transferência (throughput)
Latência (tempo para cada instrução) não diminui
Sob condições ideais e com um grande número de instruções, a aceleração (com o pipeline) é igual ao número de estágios
Tp = 800ps = 160ps5
Pipelining e Projeto do ISA
ISA do MIPS foi projetado para pipelining Todas as instruções são de 32 bits
Mais fácil de buscar e decodificar em um ciclo
c.f. x86: instruções de 1 byte a 17 bytes Implementações recentes do x86 traduzem as instruções em
operações mais simples, parecido com o MIPS
Poucos e regulares formatos de instruções e.g., o campo dos registradores fontes estão sempre
localizados no mesmo lugar em cada instrução
Pode decodificar e ler registradores em um passo
Endereçamento de load/store Operandos de memória somente aparecem no load/store
Pode calcular endereço no 3rd estágio, acessar memória no 4th estágio
Alinhamento de operandos de memória Acesso a memória leva somente um ciclo
Perigos
Situações que impeçam de iniciar a próxima instrução no próximo ciclo
Perigo estrutural O hardware não suporta a combinação de instruções
que desejamos executar no mesmo ciclo de relógio
Um recurso necessário está ocupado
Perigo de dados Precisa esperar pela instrução anterior para
completar a sua leitura / escrita de dados
Perigo de controle Decidir sobre a ação de controle depende da
instrução anterior
Perigo Estrutural (1)
Conflito por utilização de um recurso
e.g., usar uma combinação de máquina de lavar e secar em vez de uma lavadora e secadora separado
No pipeline do MIPS, suponha uma única memória e uma quarta instrução
No mesmo ciclo, uma instrução estaria acessando o dado da memória, enquanto a quarta instrução estaria buscando uma instrução da mesma memória
Perigo Estrutural (2)
Load/store exigem acesso aos dados
Busca da instrução teria que parar para aquele ciclo
Causaria uma “bolha” no pipleline
Deste modo, o caminho de dados no pipelineexige memórias de instruções e dados separados
Caso contrário, pode-se ter um perigo estrutural
Ocorre quando uma instrução planejada não pode executar no ciclo de relógio apropriado, pois o hardware não suporta a combinação de instruções que são definidas para executar
Perigo de Dados
Uma instrução depende da conclusão do acesso de dados por uma instrução anterior add $s0, $t0, $t1sub $t2, $s0, $t3
Não escreve o resultado até o quinto estágio
Desperdiçaria 3 ciclos de relógio
Emcaminhamento (Bypassing)
Usar resultado quando estiver calculado
Não esperar para ser armazenado em um registrador
Assim que a ULA produz a soma, pode-se fornecer o resultado como entrada para a subtração
Exige conexões extras no caminho de dados
Perigo de Dados no Uso do Load
Nem sempre é possível evitar atrasos através do encaminhamento
Se o valor não for calculado, quando necessário
Não é possível encaminhar para trás no tempo!
Disponível somente depois do quarto estágio
Ainda existe atraso de um estágio
Escalonamento para Evitar Atrasos
Reordenar o código para evitar o uso de resultados do load na próxima instrução
Código C para A = B + E; C = B + F;
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)
parada
parada
lw $t1, 0($t0)
lw $t2, 4($t0)
lw $t4, 8($t0)
add $t3, $t1, $t2
sw $t3, 12($t0)
add $t5, $t1, $t4
sw $t5, 16($t0)
11 ciclos13 ciclos
Perigos de Controle
Precisa realizar uma decisão baseado nos resultados de uma instrução Enquanto as demais estão executando
Desvio determina o fluxo de controle Busca pela próxima instrução depende do resultado
do desvio
No pipeline nem sempre é possível buscar a próxima instrução logo após uma instrução de desvio
Pois o processador ainda estará trabalhando no estágio ID do desvio
No pipeline do MIPS Precisa comparar registradores e calcular alvo no
início do pipeline
Adicionar hardware para fazê-lo no estágio do ID
Parada no Desvio
Espera até que o resultado do desvio seja determinado
Antes de buscar a próxima instrução para executar
Hardware extra para testar regs, calcular o endereço dedesvio e atualizar o PC no segundo estágio do pipeline
Previsão de Desvio
Pipelines mais longos não podem facilmente determinar o resultado do desvio mais cedo
Pena por parada torna-se inaceitável
Prever o resultado do desvio
Prevê sempre que os desvios não serão tomados
Apenas pára se a previsão estiver errada
Caso contrário, o pipeline continua na velocidade máxima
No pipeline do MIPS
Pode prever desvios que não foram tomados
Busca instrução depois do desvio, sem atraso
MIPS com Previsão
Previsão correta
Previsão incorreta
Quando o desvio não é realizado
Quando o desvio é realizado
Previsão de Desvio mais Realística
Previsão de desvio estático
Baseado no comportamento de desvio típico
Exemplo: desvios de laço e instruções if Laços são desvios que pulam para o topo do laço
uma vez que são susceptíveis de serem tomados e que se desviam para trás, poderia prever que os desvios são tomados e que pulam para um endereço anterior
Previsão de desvio dinâmico
Hardware mensura o comportamento real do desvio e.g., registra história recente de cada desvio
Assume que o comportamento futuro continuará a tendência
Quando errado, pára enquanto busca instrução, e atualiza história
Resumo de Pipeline
Pipeline melhora o desempenho, aumentando a taxa de instrução
Executa múltiplas instruções em paralelo
Cada instrução tem a mesma latência
Não reduz o tempo que uma instrução individual leva para completar
Sujeio a riscos
Estrutura, dado e controle
Projeto do conjunto de instrução afeta a complexidade da implementação do pipeline
The BIG Picture
Exercício 1
Examinaremos como pipeline afeta o tempo de ciclo do processador. Assuma as seguintes latências de cada estágio individual:
a) Qual é o tempo de ciclo de relógio em um processador com e sem pipeline?
b) Qual é o tempo entre instruções (Tp)?
c) Qual é o desempenho de três instruções LW indep. em um processador com e sem pipeline?
IF ID EX MEM WB
a. 250ps 350ps 150ps 300ps 200ps
b. 200ps 170ps 220ps 210ps 150ps
Exercício 2
Para as seguintes instruções, assuma que elas são executadas em um caminho de dados com 5 estágios de pipeline
a) Quais são os perigos que podemos encontrar?
b) Como eles podem ser resolvidos?
ADD R5, R2, R1LW R3, 4(R5)LW R2, 0(R2)OR R3, R5, R3SW R3, 0(R5)
a) LW R2, 0(R1)AND R1, R2, R1LW R3, 0(R2)LW R1, 0(R1)SW R1, 0(R2)
b)
Exercício 3
Para cada sequência de código abaixo, declare se o mesmo deve parar, pode evitar paradas usando encaminhamento ou pode executar sem parar ou encaminhar
lw $t0, 0($t0)add $t1, $t0, $t0
Sequência 1
add $t1, $t0, $t0addi $t2, $t0, #5addi $t4, $t1, #5
Sequência 2
addi $t1, $t0, #1addi $t2, $t0, #2addi $t3, $t0, #2addi $t3, $t0, #4addi $t5, $t0, #5
Sequência 3
Caminho de Dados - Pipeline do MIPS
WB
MEM
Fluxo da direita para a esquerda leva a riscos
Instruções e dados se movem geralmente da esquerda para direita através dos cinco estágios
Perigo de dados
Perigo de controle
apenas as instruções posteriores no pipeline são influenciadas por esses movimentos de dados reverso
Registradores do Pipeline
Precisa de registradores entre estágios
Para manter a informação produzida no ciclo anterior
Analogia com a lavanderia: Ter um cesto entre cada par de estágios para guardar as roupas para o próximo passo
Operação do Pipeline
Fluxo ciclo-por-ciclo de instruções através do caminho de dados com pipeline
Diagrama do pipeline com “ciclo de relógio único”
Mostra o uso do pipeline num único ciclo
Destaca recursos utilizados
c.f. diagrama de “mútiplos ciclos de relógio”
Gráfico de operações ao longo do tempo
Nós vamos olhar para os diagramas de “ciclo de relógio único” para o load & store
Pois os mesmos são ativos em todos os cincos estágios
IF para o Load, Store, …
Destaca a metade direitaquando está sendo lido e destaca a metade esquerda quando está sendo escrito
O endereço incrementado é salvo no registrador IF/ID caso seja necessário para uma instrução posterior (e.g., beq)
ID para o Load, Store, …
Escreve no registrador ID/EX o valor de PC incrementado, os dois registradores e o sinal estendido
Destaca a metade direitaquando está sendo lido e destaca a metade esquerda quando está sendo escrito
EX para o Load
Lê o conteúdo do reg. 1 e o sinal estendido a partir do reg. ID/EX e os adiciona usando a ULA
O resultado da soma é colocado no reg. EX/MEM
Destaca a metade direitaquando está sendo lido e destaca a metade esquerda quando está sendo escrito
MEM para o Load
Lê a memória de dados usando o endereço a partir do reg. EX/MEM e carrega o dado no reg. MEM/WB
Destaca a metade direitaquando está sendo lido e destaca a metade esquerda quando está sendo escrito
WB para o Load
Número do registrador incorreto
Lê o dado a partir do reg. MEM/WB e o escreve no registrador mostrado no meio da figura
A instrução no reg. IF/ID fornece o número do registrador de escrita; esta informação ocorre consideravelmente depois da instrução de load
Caminho de Dados Corrigido para o Load
O número do registrador de escrita agora vem a partir do reg. MEM/WB juntamente com o dado
O número do registrador é passado a partir do estágio do ID até alcançar o reg/ MEM/WB
EX para o StoreO endereço efetivo é colocado no registrador EX/EM
Destaca a metade direitaquando está sendo lido e destaca a metade esquerda quando está sendo escrito
MEM para o StoreMostra o dado sendo escrito na memóriaA única maneira de ter o dado disponível durante o estágio MEM é colocar o dado no EX/MEM no estágio EX
Destaca a metade direitaquando está sendo lido e destaca a metade esquerda quando está sendo escrito
WB para o StoreNada acontece no ciclo do write-back, pois cada instrução atrás do store já está em progresso (não existe maneira de acelerar aquelas instruções)
Destaca a metade direitaquando está sendo lido e destaca a metade esquerda quando está sendo escrito
Diagrama de Pipeline de Múltiplos-Ciclos
Pipeline é difícil de entender, pois várias instruções estão executando simultaneamente
Destaca a metade direitaquando está sendo lido e destaca a metade esquerda quando está sendo escrito
Mostra o uso de recursos
Diagrama de Pipeline de Múltiplos-Ciclos
Forma tradicional (usa o nome em cada estágio em vez do uso de recursos)
Diagrama de Pipeline de um Único Ciclo
Estado do pipeline em um dado ciclo
Diagrama correspondente ao ciclo de relógio (CC) 5
Controle do Pipeline (Simplificado)
identificação dos sinais de controle em azul
Controle do Pipeline (1)
Podemos dividir as linhas de controle em cinco grupos de acordo com o estágio do pipeline
IF: Sinais de controle para ler a memória de instrução e escrever no PC (não existe controle especial)
ID: Como no estágio anterior, a mesma coisaacontece em todo ciclo de relógio
EX: Os sinais para setar são RegDst, ALUOp e ALUSrc
MEM: Os sinais para setar são Branch, MemRead e MemWrite
WB: Os dois sinais de controle são MemtoReg e RegWrite
Controle do Pipeline (2)
Sinais de controle derivados a partir da instrução
Como uma implementação de ciclo único
O PC é escrito em cada ciclo de relógio
Não existem sinais de escrita separados para os registradores de pipeline (IF/ID, ID/EX, EX/MEM e MEM/WB), pois os registradores são escritos durante cada ciclo de relógio
Controle do Pipeline (3)
EX: RegDst, ALUOp e ALUSrc
MEM: Branch, MemReade MemWrite
WB: MemtoReg e RegWrite
Perigo de Dados em Instruções da ULA
Considere a seguinte sequência de código:
As últimas 4 instruções são dependents do resultadono registrador $2
sub $2, $1,$3and $12,$2,$5or $13,$6,$2add $14,$2,$2sw $15,100($2)
Nós podemos resolver perigos com o encaminhamento
Como é que podemos detectar quando encaminhar?
Dependências & Encaminhamento
O valor apropriado do reg. $2 só estádisponível no CC5
Detectar a necessidade de encaminhamento (1)
Passe o número dos registradores ao longodo pipeline e.g., ID/EX.RegisterRs = número do registrador
para Rs definido no registrador do pipeline ID/EX
Os números do registrador do operando da ULA no estágio EX são dados por ID/EX.RegisterRs, ID/EX.RegisterRt
Perigo de dados quando1a. EX/MEM.RegisterRd = ID/EX.RegisterRs
1b. EX/MEM.RegisterRd = ID/EX.RegisterRt
2a. MEM/WB.RegisterRd = ID/EX.RegisterRs
2b. MEM/WB.RegisterRd = ID/EX.RegisterRt
Enc. a partirdo reg. pipelineEX/MEM
Enc. a partirdo reg. pipelineMEM/WB
Mas somente se a instrução de encaminhamento for escrever no registrador!
EX/MEM.RegWrite, MEM/WB.RegWrite
E somente se Rd para aquela instrução não for $zero
EX/MEM.RegisterRd ≠ 0,MEM/WB.RegisterRd ≠ 0
No nosso exemplo, temos um perigo quando a instrução add está no estágio EX e a instrução
anterior está no estágio MEM (condição 1a)
EX/MEM.RegisterRd = ID/EX.RegisterRs=$2
Detectar a necessidade de encaminhamento (2)
Exercício 1
Neste exercício, desenhe o diagrama de execução do pipeline para este código:
lw $t0, 1200($t1) add $t0, $s2, $t0 sw $t0, 1200($t1)
Label1: LW R2, 0(R2)BEQ R2, R0, Label1;
taken once, then not takenOR R2, R2, R3SW R2, 0(R5)
Sequência de código 1
Sequência de código 2
Assuma um processador com pipeline de 5 estágios, encaminhamentocompleto, previsor de desvio
Exercício 2
Classifique as dependências nesta sequência:
sub $2, $1, $3and $12, $2, $5 or $13, $6, $2add $14, $2, $2sw $15, 100($2)