Você está na página 1de 30

Escola de Engenharia

Universidade Federal de Minas Gerais (UFMG)


ELT123 - Arquitetura e Organização de Computadores

Tópico 9: Microarquitetura (Processador com Pipeline)

Prof. Jhonattan Cordoba Ramirez


Introdução

• Subdivisão do processador de single-cycle em cinco estágios de pipeline.


• A latência de cada instrução fica inalterada, mas a eficiência é melhorada por um fator
de cinco.
• Paralelismo temporal.
• Buscar: Procura as instruções que serão executadas.
• Decodificar: Os operandos do banco de registro serão lidos e decodificados com a
finalidade de disponibilizar ao sistema os sinais de controle.
• Execução: Executa calculo feito na ALU.
• Memoria: Lê e escreve na memoria de dados.
• WriteBack: Resultado obtido é escrito no banco de registro
Distribuição temporal

Cada instrução é executada cada 950 ps


Latência = 950 ps
Total 1.05 Bi de instruções/seg

Cada estágio possui a duração do mais


comprido

Comprimento total de cada estágio: 250 ps “MAIS LENTO”


Latência da instrução é de 5 x 250 ps = 1250 ps
Taxa de transferência é 1 instrução cada 250 ps ~ 4 Bi Instruções/seg
Distribuição temporal
Operação pipeline

Estágio RF é escrito na primeira


parte do ciclo e lido na segunda

O banco de registro é escrito por


todas as instruções exceto sw

Possíveis problemas?
(IM) Memoria de instrução (DM) Memoria de dados
(RF) Banco de registro WriteBack no banco de registros
Operação executada na ALU
Operação pipeline

Conflitos Hazard: Resultados


de uma instrução são
requeridos por uma instrução
posterior.

Método de solução:
• Forwarding:

Exemplo: Trocar $s2 pelo $t2 na instrução add Encaminhamento de dados


• Stalls ou Flushes : Delay de
O registrador $s2 deve ser escrito previamente na instrução lw.
execução
Caminho de dados pipeline
O caminho de dados pipeline, é formado
dividindo o caminho de dados single-cycle
em cinco estágios separados

É usado os sufixos F, D, E, M ou W para


indicar cada fase.

A leitura do banco de registros é feita na


fase de decodificação, mas a escrita é feita
na fase de WriteBack.

O banco de registros no pipeline, escreve


no flanco descendente do clock.
Controle pipeline
Hazards

• Conflitos Hazard: Resultados de uma instrução são requeridos por uma


instrução posterior.
• Tipos de Hazard:
• Hazard de dados: Leitura de um registro que ainda não foi escrito.
• Hazard de controle: Decisão de qual é a próxima instrução, não foi
tomada no momento em que a busca é realizada.
• Método de solução:
• Forwarding: Encaminhamento de dados
• Stalls ou Flushes: Delay de execução
Hazards

Hazard RAW (Ready After Writer)

Dado errado

Dado errado

Dado correto
Hazards (Solução: Encaminhamento)

SrcA – Verifica rs
SrcB – Verifica rt

if rsE ! = 0 and rsE == WriteRegM and RegWriteM then ForwardAE = 10

elseif rsE ! = 0 and rsE == WriteRegW and RegWriteW then ForwardAE = 01

else ForwardAE = 01
Hazards (Solução: Encaminhamento)
Hazards (Solução: Delay de execução)

A instrução lw, não termina


a leitura de dados até o
final do estágio de
memoria.

Nesse caso, o ciclo específico fica suspenso pela quantidade de ciclos que seja necessário, adicionalmente,
as instruções subsequentes são retidas devido que o elemento à seguir está ocupado.
Hazards (Solução: Delay de execução)

• Suspenção de um estado
• Desativação dos registros pipeline
• Nesse caso, são zerados os sinais no estado de execução.
Hazards (Solução: Delay de execução)

lwstall = rsD == rtE or rtD == rtE and MemtoRegE

stallF = stallD = FlushE = lwstall


Hazards de controle

Na implementação de uma instrução beq apresenta um BranchM


PCSrcM
hazard de controle: O processador com pipeline, não
ZerosM
sabe que instrução obter a seguir, devido que a decisão
do branch ainda não foi tomada no momento que o
estado de buscar da próxima instrução é realizado. • Stall pode ser uma alternativa de
solução?

SOLUÇÃO: Começar a execução do branch baseado em uma previsão.


• Previsão errada: Processador descarta as instruções executadas.
• Previsão correta: Sequencia de codigos, continua execução, seja positive ou negative a previsão
Hazards de controle

• Previsão feita: Branch não será realizado.


• Resultado após execução do beq: Branch deve ser
realizado sim.
BRANCH MISPREDICTION PENALTY
• Sequência de execução continua.
• Próximas três instruções após beq serão descartadas
e o registro do pipeline limpo.
Hazards de controle
Hazards de controle
• Ciclos de instrução desperdiçados.
• Como reduzir os Branch Misprediction Penalties?
• Incluir um comparador de igualdade para RD1 e RD2 no estágio de DECODIFICAÇÃO.
Hazards de controle

Introduz um nodo hazard


de dados (RAW)
Hazards de controle
Exemplo

O benchmark SPECint2000 considerado no Exemplo Multicycle é composto de


aproximadamente 25% cargas, 10% armazenamentos, 11% branch, 2% jumps, e 52%
instruções do tipo-R. Suponha que 40% das cargas são imediatamente seguidas por uma
instrução que usa o resultado, exigindo um stall, e que um quarto dos branchs são
erradamente previstos, exigindo um flush. Suponha que os jumps sempre descartam as
instruções subsequentes. Ignorar outros harzards. Calcular o CPI médio do processador com
pipeline.

• Interação com a memoria: CPI = 0,6 × 1 + 0,4 × 2 = 1,4


• Implementação de branchs: CPI = 0,75 × 1 + 0,25 × 2 = 1,25
• Jump sempre tem uma CPI = 2.
𝐂𝐂𝐂𝐂𝐈𝐈𝐦𝐦𝐦𝐦𝐦𝐦𝐦𝐦𝐦𝐦 = 𝟎𝟎, 𝟐𝟐𝟐𝟐 × 𝟏𝟏, 𝟒𝟒𝟒𝟒 + 𝟎𝟎, 𝟏𝟏𝟏𝟏 × 𝟏𝟏, 𝟎𝟎𝟎𝟎 + 𝟎𝟎, 𝟏𝟏𝟏𝟏 × 𝟏𝟏, 𝟐𝟐𝟐𝟐 + 𝟎𝟎, 𝟎𝟎𝟎𝟎 × 𝟐𝟐, 𝟎𝟎𝟎𝟎 + 𝟎𝟎, 𝟓𝟓𝟓𝟓 × 𝟏𝟏, 𝟎𝟎𝟎𝟎
= 𝟏𝟏, 𝟏𝟏𝟏𝟏
Exemplo
Exemplo

𝑡𝑡𝑝𝑝𝑝𝑝𝑝𝑝 + 𝑡𝑡𝑚𝑚𝑚𝑚𝑚𝑚 + 𝑡𝑡𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 Buscar


2(𝑡𝑡𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅 + 𝑡𝑡𝑚𝑚𝑚𝑚𝑚𝑚 + 𝑡𝑡𝑒𝑒𝑒𝑒 + 𝑡𝑡𝐴𝐴𝐴𝐴𝐴𝐴 + 𝑡𝑡𝑚𝑚𝑚𝑚𝑚𝑚 + 𝑡𝑡𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 ) Decodificação
𝑡𝑡𝑐𝑐 = 𝑚𝑚𝑚𝑚𝑚𝑚 𝑡𝑡𝑝𝑝𝑐𝑐𝑐𝑐 + 𝑡𝑡𝑚𝑚𝑢𝑢𝑢𝑢 + 𝑡𝑡𝑚𝑚𝑢𝑢𝑢𝑢 + 𝑡𝑡𝐴𝐴𝐿𝐿𝐿𝐿 + 𝑡𝑡𝑠𝑠𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒 Execução
𝑡𝑡𝑝𝑝𝑝𝑝𝑝𝑝 + 𝑡𝑡𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚 + 𝑡𝑡𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 Memória
2(𝑡𝑡𝑝𝑝𝑝𝑝𝑝𝑝 + 𝑡𝑡𝑚𝑚𝑚𝑚𝑚𝑚 + 𝑡𝑡𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅 ) WriteBack

1,15 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐
30 + 250 + 20 Texec = 100 × 109 𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖 550 × 10−12 𝑠𝑠𝑠𝑠𝑠𝑠
2(150 + 25 + 40 + 15 + 25 + 20) 𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖
𝑡𝑡𝑐𝑐 = 𝑚𝑚𝑚𝑚𝑚𝑚 30 + 25 + 25 + 200 + 20 = 550 𝑝𝑝𝑝𝑝
30 + 220 + 20 Tempo de execução = 63,3 seg
2(30 + 25 + 100)
Single-cycle = 92,5 seg

Multicycle = 133,9 seg


Exercício
1. MIPS single-cycle e controle:
a. Desenhe por completo uma microarquitetura single-cycle (via de dados e bloco de controle) capaz
de executar somente instruções add e bne da arquitetura MIPS. (Observações: 1. Sua resposta
deve apresentar somente os componentes imprescindiveis à execução das instruções propostas. 2.
Todos os componentes deverão estar completamente identificados, de forma que eu possa
reconhecer se o componente é combinacional ou sequencial, assim com suas entradas, saídas e
quantidade de bits dos sinais indicados).
b. Monte uma tabela que mostre o comportamento da unidade de controle. Essa tabela deverá conter
as instruções add e bne, bem como todos os sinais de controle necesários para executá-las.
Preencha os campos da tabela com os valores 0, 1 ou X. Considere que o código da adição para
ALU seja 00 e da subtração seja 11.
Exercício
2. MIPS multicycle e controle: Dada a microarquitetura multicycle da Figura 1 e o diagrama de maquina de
estados finitos da unidade de controle da mesma microarquitetura da Figura 2. Pede-se:
a. Marcar com uma X o(s) componente(s) da Figura 1 que precisará(ão) ser modificado(s) para que
esta microarquitetura execute a instrução slt (set less than).
b. Redesenhe o(s) componente(s) desta microarquitetura de maneira que ele(s) possa(m) executar de
forma correta o slt e todas as instruções que já executava antes.
c. Realize as modificações e/ou inclusões necessárias sobre a Figura 2, de maneira que o slt possa
ser executado de forma correta por essa microarquitetura.
Exercício
Exercício
Exercício
Exercício

Você também pode gostar