A empresa Hard Co. possui um conjunto de unidades funcionais
implementadas, e está desenvolvendo uma nova linha de processadores seguindo o conjunto de instruções do RISC-V. O processador irá suportar instruções lógico-aritméticas com e sem imediato, load-stores e também desvios. A empresa vai implementar processadores seguindo a mesma separação de tarefas por ciclo do nosso livro texto.
a) Classifique as máquinas do melhor para o pior desempenho (e a
máquina X tem mais vazão que Y, então Y recebe 1 na sua coluna e X recebe 2. Não se esqueça que para algumas métricas um valor menor pode ser pior!) – 3 pontos
Métrica Uniciclo Multiciclo sem Multiciclo com
pipeline pipeline Tempo de ciclo 1 3 (2 desconsiderando 2 o controle mais complexo) CPI (# ciclos por 3 2 1 instrução) IPC (instr. 3 1 (2 desconsiderando 2 (3) completadas por stalls) ciclo)
b) Uma última opção que a Hard Co. quer considerar é o desenvolvimento
de um processador superescalar, podendo disparar um load/store e uma instrução logico-aritmética por ciclo. Indique, para cada métrica abaixo, qual deve melhorar, piorar ou se manter inalterada, explicando a sua opinião. – 3 pontos
Considerando a comparação com o multiciclo com pipeline
Tempo de ciclo – igual. Mantém o mesmo caminho de dados. CPI – Igual. Mantém o mesmo caminho de dados. IPC – Maior. Entrega duas instruções por ciclo Questão 2 (10 pontos)
O código abaixo está escrito em RISC-V. Ele irá executar em um processador
que possui pipeline similar ao que foi desenvolvido no nosso livro-texto (ou seja, possui unidade de adiantamento). Responda:
a) Em quais linhas de código temos hazards (perigos) de dados? 5 e 8
b) Em quais linhas do código temos hazards (perigos) de controle? 8 e 10 c) Em quais linhas o pipeline irá gerar um stall devido aos hazards? 5, 8, 10 d) Re-escreva o código acima da forma mais eficiente, adicionando a menor quantidade possível de nops, de forma a reduzir os hazards.
Aqui considerei também quem colocou dois nops depois de cada
instrução de desvio. Poderão ser gerados dois stalls a cada desvio devido ao hazard de controle. e) É possível resolver todos os hazards (controle e dados) apresentados? Em caso negativo, proponha formas em hardware para minimizar a quantidade de stalls nas situações que não puderam ser evitadas.
Não, ainda temos os hazards de controle. Eles podem ser amenizados
com mecanismos de predição de desvio ou dicas na instrução se o desvio deve ser tomado ou não. Questão 3 (5 pontos)
Dado o caminho de dados abaixo de uma máquina uniciclo, indique os valores
dos bits de controle (0, 1 ou X – don’t care) para as instruções abaixo do conjunto de instruções do RISC-V.
lw 1 1 0 1 0 0 sw 0 1 0 0 1 X sub 1 0 0 X 0 1 beq 0 0 ? X 0 X jal 1 1 1 x 0 x
Marquei com ? o PCSrc do BEQ porque faltou um AND no caminho de
dados, complicando a análise. Qualquer resposta aqui foi considerada certa. Quem indicou que considerou a ordem inversa dos bits no MUX, ou que percebi que houve uma inversão de todos os bits de controle, também teve os pontos considerados.
Questão 4 (4 pontos)
O processador multiciclo com pipeline possui registradores temporários entre
os seus estágios, por exemplo os registradores EX/MEM entre os estágios EX e MEM. Explique: A) Por que razão temos esses registradores entre os estágios?
Para que o sinal de entrada da lógica combinacional do estágio fique
constante durante todo o estágio. Também evita que o resultado de um estágio anterior seja encaminhado para o estágio seguinte antes do final do ciclo, e bagunce a computação.
B) O estágio MEM escreve a sua saída para os registradores temporários
MEM/WB. Qual seria a vantagem de escrever para esses registradores temporários, no lugar de já escrever o resultado no banco de registradores?
Escrever para os registradores temporários é mais rápido que escrever
para o banco de registradores (porque o banco de registradores tem uma implementação mais complexa que um único registrador, devido a termos o controle de escrita, a seleção dos registradores a serem lidos/escritos – um MUX com muitas portas atrasa muito o caminho de dados). Se a gente escrevesse direto, o tempo do processamento do estágio MEM/WB ficaria muito grande, impactando o tempo de ciclo.