- Ilustre o pipeline de um MIPS com dual-issue estático, mostrando como instruções ALU e load/store são alinhadas.
Passo 1
O enunciado pede para a gente mostrar como funciona o pipeline de um MIPS com dual-issue estático, isto é, capaz de emitir até duas instruções por ciclo sob regras pré-definidas. Aqui vamos focar em pares formados por uma instrução ALU (ex.: add, sub) e uma instrução load/store (ex.: lw, sw), que é o emparelhamento estático mais comum. Precisamos lembrar que cada “slot” segue
estágios: IF, ID, EX, MEM, WB, mas como são dois slots, chamaremos de I
/I
, I
/I
, E
/E
, ME
/ME
e W
/W
.
Passo 2
Arquitetura e regra de emparelhamento estático:
) Slot
(pipeline
) aceita qualquer instrução inteiramente no E
e gravagem em W
.
) Slot
(pipeline
) só aceita instruções de load/store, faz cálculo de endereço em E
, acesso de memória em ME
e write-back em W
.
) Nos estágios ME
e E
e ME
e E
podem ocorrer bolhas (bubbles) para instruções que não usam aquele estágio.
Passo 3
Fluxo de uma dupla típica
ALU e
load:
– Ciclo : I
busca
; I
busca
.
– Ciclo : I
decodifica
; I
decodifica
.
– Ciclo : E
executa operação ALU de
; E
faz cálculo de endereço de
.
– Ciclo : ME
é bolha para
(ALU não acessa memória); ME
acessa memória para
.
– Ciclo : W
escreve resultado de
; W
write-back de
.
– Ciclo
– Ciclo
– Ciclo
– Ciclo
– Ciclo
Passo 4
Para ver como isso se estende a vários pares, considere quatro instruções:
AL
,
L
,
AL
,
L
. O pipeline fica assim:
Ciclo | I\(F_{1}\) I\(F_{2}\) | I\(D_{1}\) I\(D_{2}\) | E\(X_{1}\) E\(X_{2}\) | ME\(M_{1}\) ME\(M_{2}\) | W\(B_{1}\) W\(B_{2}\)
-----------------------------------------------------------------------
\(1\) | \(I_{1} I_{2}\) | | | |
\(2\) | \(I_{3} I_{4}\) | \(I_{1} I_{2}\) | | |
\(3\) | | \(I_{3} I_{4}\) | \(I_{1}\)(ALU) \(I_{2}\)(addr) | |
\(4\) | | | \(I_{3}\)(ALU) \(I_{4}\)(addr) | ME\(M_{2}\)(\(I_{2}\)) |
\(5\) | | | | ME\(M_{2}\)(\(I_{4}\)) W\(B_{1}\)(\(I_{1}\)) | W\(B_{2}\)(\(I_{2}\))
\(6\) | | | | W\(B_{1}\)(\(I_{3}\)) W\(B_{2}\)(\(I_{4}\)) |
Aqui “addr” no E
é o cálculo de endereço da load/store. Perceba que em cada ciclo temos até duas instruções em estágios diferentes e que ALU do slot
nunca disputa a unidade de MEM com o slot
.
Passo 5
Conclusão sobre o alinhamento:
- ALU no slot
avança por E ME (bolha) W . - Load/store no slot
avança por E (endereço) ME (acesso) W . - Em cada ciclo só há um acesso real à memória (ME
), e a E do slot corre paralela à E do slot .
Resposta
O pipeline de um MIPS dual-issue estático, emparelhando ALU e load/store, tem
estágios duplicados e alinha as fases de E
com E
(para cálculo de endereço), depois ME
para acesso à memória e W
/W
em paralelo, conforme ilustrado no diagrama acima.