aula 21: ucp: instrução jump, monociclo vs. multiciclo...

49
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 1 / 47

Upload: lelien

Post on 27-May-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

Diego Passos

Universidade Federal Fluminense

Fundamentos de Arquiteturas de Computadores

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 1 / 47

Page 2: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Revisão

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 2 / 47

Page 3: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Na Aula Passada. . .

Praticamente terminamos a implementação do nosso processador.Combinamos os caminhos de dados para cada instrução em um único.Através de linhas de controle e componentes de controle, caminho de dados se comportacomo esperado.

▶ Conseguimos executar várias instruções diferentes.Mas o projeto não estava completo.

▶ Faltava a implementação da instrução jump.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 3 / 47

Page 4: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Na Aula de Hoje

Três objetivos:▶ Completar nossa implementação com a instrução jump.▶ Entender a diferença de uma implementação monociclo para uma multiciclo.▶ Discutir como um processador pode implementar um pipeline.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 4 / 47

Page 5: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

A Instrução Jump

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 5 / 47

Page 6: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Instrução Jump: Relembrando

Instrução de desvio incondicional.▶ Sempre alteramos o PC para o endereço de desvio.

Utiliza um terceiro formato, diferente das demais instruções vistas até aqui.▶ 6 bits de OpCode.▶ 26 de imediato.

Cálculo do novo PC:▶ Multiplica-se o imediato por 4.

⋆ Deslocamento de 2 bits para a esquerda.▶ Combina-se o resultado com os 4 bits mais significativos do PC.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 6 / 47

Page 7: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Instrução Jump: Relembrando

PC PC PC PC PC PC PC PC PC PC PC PC PC PC PC PCPC PC PC PC PC PC PC PC PC PC PC PC PC PC PC PC

I I I I I I I II I I I I I I II I I I I I I II I

DDPC PC PC PC I I I I I I I II I I I I I I II I I I I I I II I

{ PC, 32 bits{ Imediato, 26 bits{ { {Deslocamento, 2 bits

Podemos saltar para qualquer endereço que:▶ Tenha o mesmo prefixo de 4 bits do valor atual do PC.▶ Esteja alinhada em 4 bytes.

Note que por “valor atual do PC” estamos nos referindo a PC + 4.▶ i.e., depois do incremento.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 7 / 47

Page 8: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Instrução Jump: Planejando a Implementação

Note que a instrução Jump não faz uso de registradores ou dados na MP.▶ Nem leituras, nem escritas.

Também não há operações lógicas/aritméticas explícitas.▶ Podemos montar endereço de destino “juntando bits”.▶ Não precisamos da ALU.

De maneira resumida, precisamos:▶ Montar o novo endereço do PC.

⋆ A partir de PC + 4 e dos 26 bits menos significativos do RI.▶ E substituir o PC + 4 por este endereço.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 8 / 47

Page 9: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Instrução Jump: Planejando a Implementação (II)

Lógica de controle:▶ Contanto que não mudemos nada no estado da máquina, linhas de controle já vistas não

fazem diferença.⋆ i.e., não podemos escrever registradores/memória.⋆ O que a ALU faz, ou de onde vem as entradas do banco de registradores? Irrelevante.

▶ Contando com o desvio condicional, temos três possíveis valores para PC.⋆ Precisamos de mais um multiplexador.⋆ E mais uma linha de controle.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 9 / 47

Page 10: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Instrução Jump: Implementação

Controle

PC

ControleALU

Extensãode

Sinal

Deslocamentode 2 à

Esquerda

Deslocamentode 2 à

EsquerdaSomador

Somador

ALU

Zero

Resultado

Escrita

Escrita Leitura

4

RI RI[31-26]

RI[25-21]

RI[20-16]

RI[15-0]

Mux

0

1

16 32

Mux

0

1Mux

1

0

RI[15-11]

PC+4[31-28]

RI[25-0]

26 28 32

Endereço de Salto

Mux

1

0

RegDest

Branch

MemReadMemWrite

MemToReg

ALUOp1

ALUSrcRegWrite

RI[5-0]

Memória de Dados

Endereço

Valor Escrito

Valor Lido

Memória de Instruções

Endereço

Instrução Lida

JumpALUOp0

Bit 0Bit 1Bit 2Bit 3

Mux

0

1

Registrador de Leitura 1

Valor Lido 1

Registrador de Leitura 2

Valor Lido 2

Registrador de Escrita

Valor Escrito

Registradores

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 10 / 47

Page 11: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Nosso Processador Completo

Controle

PC

ControleALU

Extensãode

Sinal

Deslocamentode 2 à

Esquerda

Deslocamentode 2 à

EsquerdaSomador

Somador

ALU

Zero

Resultado

Escrita

Escrita Leitura

4

RI RI[31-26]

RI[25-21]

RI[20-16]

RI[15-0]

Mux

0

1

16 32

Mux

0

1Mux

1

0

RI[15-11]

PC+4[31-28]

RI[25-0]

26 28 32

Endereço de Salto

Mux

1

0

RegDest

Branch

MemReadMemWrite

MemToReg

ALUOp1

ALUSrcRegWrite

RI[5-0]

Memória de Dados

Endereço

Valor Escrito

Valor Lido

Memória de Instruções

Endereço

Instrução Lida

JumpALUOp0

Bit 0Bit 1Bit 2Bit 3

Mux

0

1

Registrador de Leitura 1

Valor Lido 1

Registrador de Leitura 2

Valor Lido 2

Registrador de Escrita

Valor Escrito

Registradores

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 11 / 47

Page 12: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Implementação Monociclo vs. Multiciclo

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 12 / 47

Page 13: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Implementação Monociclo

O projeto que criamos é de um processador monociclo.Cada instrução é executada em exatamente um ciclo de relógio.

▶ No início de um ciclo, próxima instrução é colocada no RI.▶ Os sinais dos bits se propagam pelos componentes combinacionais.▶ Neste processo, dados podem ser escritos em elementos sequenciais.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 13 / 47

Page 14: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Implementação Monociclo (II)

Embora a implementação monociclo seja viável, ela não é muito utilizada na práticaatualmente.Motivo: inúmeras desvantagens.

▶ Ciclo de clock determinado pela instrução mais lenta.⋆ Geralmente, instruções de transferência de memória.⋆ Maior extensão no caminho de dados.⋆ E precisa interfacear com a memória, que normalmente é bem mais lenta.

▶ Duplicação de componentes.⋆ Somadores, deslocadores, multiplexadores, . . .

Mas qual é a alternativa?▶ Uma implementação multiciclo.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 14 / 47

Page 15: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Implementação Multiciclo

Em uma implementação multiciclo, execução é dividida em etapas.▶ Por exemplo, do ciclo de execução de uma instrução visto anteriormente.

⋆ Busca de instrução.⋆ Decodificação.⋆ Busca de operandos.⋆ Execução.⋆ Armazenamento do resultado.

Em um ciclo de relógio, apenas uma das etapas é executada para uma dada instrução.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 15 / 47

Page 16: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Implementação Multiciclo (II)

Isso significa que a execução de uma instrução é feita em vários ciclos de relógio.Isso não é mais lento?

Não necessariamente.▶ Depende da duração do ciclo.

Cada ciclo agora faz menos.▶ Ciclos podem ser mais curtos.

e.g., instrução foi dividida em 5 etapas.▶ Cada etapa em um ciclo de relógio.▶ Mas ciclo de relógio é 6 vezes mais curto que o da implementação monociclo.▶ Reduzimos tempo de execução para 5/6.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 16 / 47

Page 17: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Implementação Multiciclo (II)

Isso significa que a execução de uma instrução é feita em vários ciclos de relógio.Isso não é mais lento?Não necessariamente.

▶ Depende da duração do ciclo.Cada ciclo agora faz menos.

▶ Ciclos podem ser mais curtos.e.g., instrução foi dividida em 5 etapas.

▶ Cada etapa em um ciclo de relógio.▶ Mas ciclo de relógio é 6 vezes mais curto que o da implementação monociclo.▶ Reduzimos tempo de execução para 5/6.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 16 / 47

Page 18: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Implementação Multiciclo: Como?

Como fazer uma implementação multiciclo pura?▶ Similar à implementação monociclo.▶ Mas com menos componentes no caminho de dados.▶ E com uma lógica de controle mais complexa.

Não veremos esta implementação passo a passo.▶ Fora do escopo desta disciplina.

Ao invés disso, veremos a implementação multiciclo com pipeline.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 17 / 47

Page 19: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Implementando um Pipeline

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 18 / 47

Page 20: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Implementação Multiciclo com Pipeline

Implementações multiciclo puras também não são muito utilizadas atualmente.O conceito de implementação multiciclo ganha importância quando combinado com aideia de pipeline.Ambos os conceitos dividem a execução em etapas.

▶ O multiciclo diz que cada ciclo de relógio executa uma etapa da instrução.▶ O pipeline permite a execução de etapas diferentes de instruções diferentes em paralelo.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 19 / 47

Page 21: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Pipeline: Relembrando

Já vimos o conceito de pipeline nesta disciplina.▶ Execução da instrução é dividida em etapas.▶ Cada etapa usa (conjuntos de) componentes diferentes.▶ Podemos executar várias instruções “ao mesmo tempo”, desde que em etapas diferentes.▶ O tempo de execução de uma instrução não muda.▶ Mas a vazão aumenta.

Aumentar o número de estágios tende a:▶ Simplificar o que se faz por ciclo de relógio.▶ Reduzir a duração de um ciclo de relógio.▶ Aumentar a vazão (instruções por tempo).

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 20 / 47

Page 22: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Pipeline: Relembrando (II)

S1:

S2:

S3:

S4:

S5:

1 2 3 4 5 7 86

Tempo

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7

1 2 3 4 5 6

1 2 3 4 5

1 2 3 4

...

Exemplo numérico:▶ Pipeline de 5 estágios vs. monociclo.▶ Ciclo de relógio: 1 ns vs. 5 ns.▶ Vazão: 5G instruções por segundo vs. 1G instruções por segundo.

⋆ Assumindo pipeline cheio.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 21 / 47

Page 23: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Aplicando Pipeline ao Nosso Processador

Podemos alterar o projeto do nosso processador monociclo e implementar um pipeline.Primeira tarefa: definir os estágios.

▶ Estágio 1: Busca de Instrução (BI).▶ Estágio 2: Decodificação/Acesso a Registradores (DI).▶ Estágio 3: Execução/Cálculo de endereços (EX).▶ Estágio 4: Acesso à Memória (MEM).▶ Estágio 5: Escrita em registradores (ER).

Basicamente, vamos dividir o caminho de dados nestes estágios.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 22 / 47

Page 24: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Aplicando Pipeline ao Nosso Processador (Simplificado)

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 23 / 47

Page 25: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Registradores de Pipeline

Note que esta divisão do caminho de dados em estágios não pode ser simplesmente lógica.Lembre-se que grande parte dos componentes são combinatoriais.

▶ As entradas são imediatamente propagadas.Precisamos conectar os estágios através de algum componente que armazene osresultados do estágio anterior até o próximo ciclo de relógio.

▶ Ou seja, precisamos de um registrador.▶ Ou melhor, de um para cada interconexão entre estados.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 24 / 47

Page 26: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Representação Gráfica da Execução com PipelinePara simplificar, usaremos a seguinte representação gráfica de um pipeline.

BI DI MEM EREX

Tempo

Instrução add

CC 1 CC 2 CC 3 CC 4 CC 5

Cada bloco representa um estágio do pipeline.Linhas entre os blocos representam informações passando entre estágios.Cada bloco é executado dentro de um ciclo de relógio.Blocos com fundo cinza indicam que algo é feito naquele estágio.

▶ Fundo é branco caso contrário.Fundo cinza na metade esquerda indica escrita.

▶ Na direita, indica leitura.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 25 / 47

Page 27: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Representação Gráfica da Execução com Pipeline: Sequência

BI DI MEM EREX

Tempo

Inst.: load wordEnd.: reg. 0 + 100Dest.: reg. 1

CC 1 CC 2 CC 3 CC 4 CC 5

BI DI MEM EREX

CC 6

BI DI MEM ER

BI DI MEM EREXBI DI MEM ER

CC 7

Inst.: load wordEnd.: reg. 0 + 200Dest.: reg. 2

Inst.: load wordEnd.: reg. 0 + 300Dest.: reg. 3

Seq. deInstruções

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 26 / 47

Page 28: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Os Conflitos do Pipeline

A estratégia de pipeline resulta em ganhos porque permite o uso de recursos que ficariamociosos.

▶ e.g., uma instrução no estágio de execução não usa o banco de registradores.▶ Recurso ficaria ocioso.▶ Ao invés disso, usamos o banco de registradores para outra instrução na etapa de DI.

Isso só é possível porque assumimos um certo grau de independência entre asinstruções/estágios.Até agora, assumimos que a execução de um estágio de uma instrução dependeapenas da conclusão dos estágios anteriores (para esta instrução).

▶ Mas isso é sempre verdade?

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 27 / 47

Page 29: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Os Conflitos do Pipeline (II)

A resposta é não!Algumas vezes, os estágios de execução de duas instruções próximas estão interligadosde alguma forma.

▶ Gostaríamos que eles fossem executados em paralelo, mas, por algum motivo, isso não épossível.

▶ Existe algum tipo de conflito que impede a execução simultânea.A esta situação, damos o nome de Conflito do Pipeline.

▶ Ou Hazard, em inglês.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 28 / 47

Page 30: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Os Conflitos do Pipeline (III)

Há vários tipos de conflito diferentes.Nesta disciplina, os classificaremos em três categorias.

▶ Confitos Estruturais.▶ Conflitos de Controle.▶ Conflitos de Dados.

Daqui até o final desta aula, veremos exemplos e contra-medidas para cada um deles.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 29 / 47

Page 31: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Conflitos Estruturais

Os conflitos estruturais acontecem quando duas (ou mais) instruções tentam utilizar ummesmo componente ao mesmo tempo.

▶ Cada instrução está no seu próprio estágio.▶ Tentamos executar os estágios simultaneamente.▶ Por alguma característica de implementação, ambos precisam de um mesmo compontente

naquele ciclo de relógio.

Conflito EstruturalTentativa de utilizar o mesmo recurso, de modos diferentes, ao mesmo tempo.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 30 / 47

Page 32: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Conflitos Estruturais: Acesso à Memória

O exemplo mais comum de conflito estrutural é o acesso à memória na Arquitetura deVon Neumann.Lembrando:

▶ Arquitetura de Von Neumman → memória única para dados e código.Se a memória é única, como executar estágios MEM e BI simultaneamente?

▶ Estágio BI sempre lê da memória (instrução).▶ Estágio MEM pode ler/escrever no caso de uma instrução load word ou store word (dado).

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 31 / 47

Page 33: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Conflitos Estruturais: Acesso à Memória (II)

BI DI MEM EREX

Tempo

Inst.: load wordEnd.: reg. 0 + 100Dest.: reg. 1

CC 1 CC 2 CC 3 CC 4 CC 5

BI DI MEM EREX

CC 6

BI DI MEM ER

BI DI MEM EREXBI DI MEM ER

CC 7

Inst.: load wordEnd.: reg. 0 + 200Dest.: reg. 2

Inst.: load wordEnd.: reg. 0 + 300Dest.: reg. 3

Seq. deInstruções

BI DI MEM EREXBI DI MEM ERInst.: load wordEnd.: reg. 0 + 400Dest.: reg. 4

CC 8

ConflitoEstrutural

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 32 / 47

Page 34: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Conflitos Estruturais: Como Detectar?

Embora possam existir outras fontes de conflitos estruturais, a memória e o casorelevante.

▶ Outros componentes mais simples geralmente podem ser facilmente replicados.⋆ Como somadores, multiplexadores, . . .

No caso da memória, a detecção do conflito é trivial:▶ Toda instrução que escreve/lê dados para/da memória sempre causará um conflito no estágio

MEM.▶ No nosso processador, apenas as instruções load word e store word.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 33 / 47

Page 35: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Conflitos Estruturais: Como Resolver?

Quando possível, a solução mais imediata é replicar o componente.▶ Mas nem sempre é possível/fácil.▶ Como no caso da memória.

Para o caso da memória, algumas soluções possíveis são:▶ Separar código e dados em memórias diferentes.

⋆ i.e., migrar para a Arquitetura de Harvard.▶ Usar caches separadas para dados e código.

⋆ Muito usado, mas não resolve completamente.⋆ e.g., podemos ter cache miss nos estágios MEM e BI simultaneamente.

▶ Pipeline Stall.⋆ Também conhecido como Bubble, ou Bolha.⋆ Insere um atraso artificial no pipeline.⋆ Seguramos a próxima instrução para evitar o conflito.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 34 / 47

Page 36: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Conflitos Estruturais: Pipeline Stall

BI DI MEM EREX

Tempo

Inst.: load wordEnd.: reg. 0 + 100Dest.: reg. 1

CC 1 CC 2 CC 3 CC 4 CC 5

BI DI MEM EREX

CC 6

BI DI MEM ER

BI DI MEM EREXBI DI MEM ER

CC 7

Inst.: load wordEnd.: reg. 0 + 200Dest.: reg. 2

Inst.: load wordEnd.: reg. 0 + 300Dest.: reg. 3

Seq. deInstruções

BI DI MEM EREXBI DI MEM ERInst.: load wordEnd.: reg. 0 + 400Dest.: reg. 4

CC 8

Bolha Bolha Bolha Bolha Bolha

CC 9

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 35 / 47

Page 37: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Conflitos de Controle

O segundo tipo de conflito é o Conflito de Controle.Ocorre quando alguma decisão de controle depende de algum estágio não concluído deoutra instrução.O exemplo clássico deste conflito envolve instruções de desvio condicional.

▶ Avaliação da condição só ocorre no estágio EX.▶ Mas decisão é necessária quando instrução de desvio entra no estágio DI.

Conflito de ControleTentativa de tomar uma decisão antes que a condição seja avaliada.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 36 / 47

Page 38: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Conflitos de Controle: Exemplo

BI DI MEM EREX

Tempo

Inst.: load wordEnd.: reg. 0 + 100Dest.: reg. 1

CC 1 CC 2 CC 3 CC 4 CC 5

BI DI MEM EREX

CC 6

BI DI MEM ERInst.: branch on equalArgs.: reg. 1 e reg. 2Offset: 1000

Seq. deInstruções

PC + 4 ou

PC + 1004?? ? ? ?

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 37 / 47

Page 39: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Conflitos de Controle: Soluções

Já falamos um pouco sobre este problema há algumas aulas.▶ Só que sem saber o nome.

De maneira informal, vimos algumas possíveis soluções.▶ Sempre assumir que o desvio (não) vai ser tomado.

⋆ Se errarmos, fazemos um flush no pipeline.▶ Usar um preditor de branch para tentar reduzir erros da estratégia anterior.

⋆ Ainda podemos estar errados.

Uma outra solução é usar o pipeline stall.▶ Colocamos “bolhas” nos estágios iniciais do pipeline até conhecermos o resultado do desvio.▶ Só ai colocamos instruções úteis.▶ Solução mais conservadora, mas com pior desempenho.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 38 / 47

Page 40: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Conflitos de Controle: Exemplo de Predição Correta

BI DI MEM EREX

Tempo

Inst.: load wordEnd.: reg. 0 + 100Dest.: reg. 1

CC 1 CC 2 CC 3 CC 4 CC 5

BI DI MEM EREX

CC 6

BI DI MEM ERInst.: branch on equalArgs.: reg. 1 e reg. 2Offset: 1000

Seq. deInstruções

Instrução prevista(e.g., PC + 4) BI DI MEM EREXBI DI MEM ER

Instrução prevista(e.g., PC + 8) BI DI MEM EREXBI DI MEM ER

CC 7 CC 8

Instrução prevista(e.g., PC + 12) BI DI MEM EREXBI DI MEM ER

CC 9

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 39 / 47

Page 41: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Conflitos de Controle: Exemplo de Predição Errada

BI DI MEM EREX

Tempo

Inst.: load wordEnd.: reg. 0 + 100Dest.: reg. 1

CC 1 CC 2 CC 3 CC 4 CC 5

BI DI MEM EREX

CC 6

BI DI MEM ERInst.: branch on equalArgs.: reg. 1 e reg. 2Offset: 1000

Seq. deInstruções

Instrução prevista(e.g., PC + 4) BI DIBI DI

Instrução prevista(e.g., PC + 8) BIBI

CC 7 CC 8

Instrução correta(e.g., PC + 1004) BI DI MEM EREXBI DI MEM ER

CC 9

BolhaBolhaBolha

Bolha Bolha Bolha Bolha

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 40 / 47

Page 42: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Conflitos de Controle: Exemplo de Stall

BI DI MEM EREX

Tempo

Inst.: load wordEnd.: reg. 0 + 100Dest.: reg. 1

CC 1 CC 2 CC 3 CC 4 CC 5

BI DI MEM EREX

CC 6

BI DI MEM ERInst.: branch on equalArgs.: reg. 1 e reg. 2Offset: 1000

Seq. deInstruções CC 7 CC 8

Instrução correta(e.g., PC + 1004) BI DI MEM EREXBI DI MEM ER

CC 9

BolhaBolhaBolha

Bolha Bolha Bolha Bolha

Bolha

Bolha

Bolha

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 41 / 47

Page 43: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Conflitos de Controle: Desvios Atrasados

Uma outra solução mais complexa, mas com bom desempenho consiste em atrasar osdesvios.Conhecida em inglês como delayed branch, a técnica funciona assim:

▶ Suponha que haja uma instrução antes da instrução de desvio que não altere a condiçãodo branch.

⋆ e.g., uma soma que armazena resultado no registrador 2.⋆ Desvio testa igualdade entre registradores 0 e 1.

▶ Podemos colocar a soma imediata depois da instrução de desvio.▶ Enquanto o desvio está nos estágios iniciais, começamos a executar a soma

⋆ Seria executada de qualquer forma!⋆ Dá tempo do processador decidir sobre a condição de desvio.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 42 / 47

Page 44: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Conflitos de Dados

O último tipo de conflito é chamado de Conflito de Dados.Ocorre quando um estágio de uma instrução tenta acessar um dado/produto de umainstrução anterior.

▶ Mas este produto só estará disponível em ciclos de relógio futuros.Ocorre por conta da dependência de dados entre instruções.

▶ e.g., queremos somar os valores nos registradores 0, 1 e 2.▶ Usamos duas instruções de soma, em sequência.▶ A primeira soma registradores 0 e 1 e armazena no registrador 15.▶ A segunda pega o conteúdo do registrador 15 e soma com o do registrador 2.

Conflito de DadosTentativa de utilizar um item antes deste estar pronto/disponível.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 43 / 47

Page 45: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Conflito de Dados: Exemplo

TempoCC 1 CC 2 CC 3 CC 4 CC 5 CC 6

Seq. deInstruções

BI DI MEM EREXInst.: addArgs.: reg 0, reg. 1Dest.: reg. 15

BI DI MEM EREXInst.: addArgs.: reg 15, reg. 2Dest.: reg. 15

Valor necessário

aqui

Mas só disponível

aqui

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 44 / 47

Page 46: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Conflito de Dados: Soluções

Há várias possíveis soluções para os conflitos de dados.▶ Aplicabilidade depende do cenário específico.▶ e.g., o quão no futuro está o dado necessário.

Para efeito desta disciplina, consideraremos três soluções:▶ Pipeline stall: colocar “bolhas” entre instruções dependentes.▶ Execução fora de ordem: inserir outras instruções úteis independentes entre instruções

dependentes.⋆ Similar ao delayed branch.

▶ Adiantamento de dados: disponibilizar dado para próxima instrução antes de ER.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 45 / 47

Page 47: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Conflito de Dados: Adiantamento de Dados

TempoCC 1 CC 2 CC 3 CC 4 CC 5 CC 6

Seq. deInstruções

BI DI MEM EREXInst.: addArgs.: reg 0, reg. 1Dest.: reg. 15

BI DI MEM EREXInst.: addArgs.: reg 15, reg. 2Dest.: reg. 15

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 46 / 47

Page 48: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Uma Última Palavra sobre a Solução de Conflitos

Várias das soluções de conflitos discutidas aqui podem ser implementadas em software.▶ e.g., stalls podem ser “simulados” inserindo instruções nop’s onde haveria conflitos.▶ Não necessariamente uma preocupação do programador, mas do compilador/montador.

Mesmo assim, diversos processadores implementam estas (e outras) soluções emhardware.

▶ Facilitam a vida do programador/compilador/montador.▶ Mas incluem bastante complexidade no hardware.

A pergunta é: vale a pena?

▶ Sim! O ganho de desempenho dos pipelines modernos é enorme.▶ Mesmo com os overheads e cuidados necessários.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 47 / 47

Page 49: Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo ...diego/disciplinas/2015_1/FAC/arquivos/aula21.pdf · Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Uma Última Palavra sobre a Solução de Conflitos

Várias das soluções de conflitos discutidas aqui podem ser implementadas em software.▶ e.g., stalls podem ser “simulados” inserindo instruções nop’s onde haveria conflitos.▶ Não necessariamente uma preocupação do programador, mas do compilador/montador.

Mesmo assim, diversos processadores implementam estas (e outras) soluções emhardware.

▶ Facilitam a vida do programador/compilador/montador.▶ Mas incluem bastante complexidade no hardware.

A pergunta é: vale a pena?▶ Sim! O ganho de desempenho dos pipelines modernos é enorme.▶ Mesmo com os overheads e cuidados necessários.

Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline FAC 47 / 47