Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Federal de Pelotas Instituto de Física e Matemática Departamento de Informática Bacharelado em Ciência da Computação Arquitetura Arquitetura e e OrganizaOrganizaçãçãoo de de Computadores Computadores IIII Aula 10 2. MIPS pipeline: conflitos por dados e adiantamento. Prof. José Luís Güntzel guntzel@ufpel.edu.br www.ufpel.edu.br/~guntzel/AOC2/AOC2.html slide 10.2 Prof. José Luís Güntzel 2. Organizações do MIPS: pipeline ComputaçãoUFPel Arquitetura e Organização de Computadores II Conflitos por Dados Seja o seguite trecho de código, escrito para o MIPS # primeiro operando ($2) depende de sub$12, $2, $5and # registrador $2 é escrito pela instrução sub$2, $1, $3sub # segundo operando ($2) depende de sub$13, $6, $2or # base ($2) depende de sub$15, 100($2)sw # primeiro e segundo operandos ($2) dependem de sub$14, $2, $2add Para estudar as conseqüências destas dependências quando da execução em pipeline, usar um diagrama de pipeline de múltiplos ciclos. slide 10.3 Prof. José Luís Güntzel 2. Organizações do MIPS: pipeline ComputaçãoUFPel Arquitetura e Organização de Computadores II sub $2, $1, $3 Ordem de execução do programa (em instruções) MI Reg MD RegULA MI Reg MD RegULA Conflitos por Dados -20-20-20-2010/-2010101010Valor do reg. $2 CC9CC8CC7CC6CC5CC4CC3CC2CC1 Tempo, em Ciclos de clock MI Reg MD RegULA MI Reg MD RegULA MI Reg MD RegULA and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) slide 10.4 Prof. José Luís Güntzel 2. Organizações do MIPS: pipeline ComputaçãoUFPel Arquitetura e Organização de Computadores II Conflitos por Dados Uma solução seria o compilador evitar seqüências de instruções que gerassem conflitos por dados # na falta de instruções que sejam independentes, onop # compilador inseriria instruções “nop”nop # primeiro operando ($2) depende de sub$12, $2, $5and # registrador $2 é escrito pela instrução sub$2, $1, $3sub # segundo operando ($2) depende de sub$13, $6, $2or # base ($2) depende de sub$15, 100($2)sw # primeiro e segundo operandos ($2) dependem de sub$14, $2, $2add Problemas: Conflitos por dados são muito freqüentes A inserção de instruções nop causa perda de desempenho! slide 10.5 Prof. José Luís Güntzel 2. Organizações do MIPS: pipeline ComputaçãoUFPel Arquitetura e Organização de Computadores II Conflitos por Dados Outra solução Detectar o conflito Adiantar o resultado da ULA (ou da memória de dados) Testes para detecção de conflito (uso dos registradores de pipeline): 1a) EX/MEM.RegistradorRd = DI/EX.RegistradorRs 1b) EX/MEM.RegistradorRd = DI/EX.RegistradorRt 2a) MEM/ER.RegistradorRd = DI/EX.RegistradorRs 2b) MEM/ER.RegistradorRd = DI/EX.RegistradorRt slide 10.6 Prof. José Luís Güntzel 2. Organizações do MIPS: pipeline ComputaçãoUFPel Arquitetura e Organização de Computadores II sub $2, $1, $3 Ordem de execução do programa (em instruções) MI Reg MD RegULA MI Reg MD RegULA Conflitos por Dados -20-20-20-2010/-2010101010Valor do reg. $2 CC9CC8CC7CC6CC5CC4CC3CC2CC1 Tempo, em Ciclos de clock MI Reg MD RegULA MI Reg MD RegULA MI Reg MD RegULA and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) Rd Rs Rt 1a) EX/MEM.RegistradorRd = DI/EX.RegistradorRs 1b) EX/MEM.RegistradorRd = DI/EX.RegistradorRst 2a) MEM/ER.RegistradorRd = DI/EX.RegistradorRs 2b) MEM/ER.RegistradorRd = DI/EX.RegistradorRt slide 10.7 Prof. José Luís Güntzel 2. Organizações do MIPS: pipeline ComputaçãoUFPel Arquitetura e Organização de Computadores II Conflitos por Dados Endereço Dado lido Dado a ser escrito Memória de dados EX/MEM MEM/ER 32Endereço Instrução lida Memória de Instruções PC 4 M U X 0 1 + M U X 0 1 DI/EX Desl. à esq. 2 bits M U X 0 1 Zero Resultado ULA + M U X 0 1 BI/DI Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Dado lido #1 Dado lido #2 Registradores Exten- são de sinal 3216 [25-21] [20-16] [15-11] [15-0] 1a) EX/MEM.RegistradorRd = DI/EX.RegistradorRs MemóriaExecuçãoDecodificação da instrução or $13, $6, $2 and $12, $2, $5 sub $2, $1, $3 Rs Rd slide 10.8 Prof. José Luís Güntzel 2. Organizações do MIPS: pipeline ComputaçãoUFPel Arquitetura e Organização de Computadores II Conflitos por Dados Endereço Dado lido Dado a ser escrito Memória de dados EX/MEM MEM/ER 32Endereço Instrução lida Memória de Instruções PC 4 M U X 0 1 + M U X 0 1 DI/EX Desl. à esq. 2 bits M U X 0 1 Zero Resultado ULA + M U X 0 1 BI/DI Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Dado lido #1 Dado lido #2 Registradores Exten- são de sinal 3216 [25-21] [20-16] [15-11] [15-0] Rt 2b) MEM/ER.RegistradorRd = DI/EX.RegistradorRt MemóriaExecuçãoDecodificação da instrução add $14, $2, $2 and $12, $2, $5 Escrita no banco de registradores sub $2, $1, $3or $13, $6, $2 Rd slide 10.9 Prof. José Luís Güntzel 2. Organizações do MIPS: pipeline ComputaçãoUFPel Arquitetura e Organização de Computadores II Conflitos por Dados Endereço Dado lido Dado a ser escrito Memória de dados EX/MEM MEM/ER 32Endereço Instrução lida Memória de Instruções PC 4 M U X 0 1 + M U X 0 1 DI/EX Desl. à esq. 2 bits M U X 0 1 Zero Resultado ULA + M U X 0 1 BI/DI Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Dado lido #1 Dado lido #2 Registradores Exten- são de sinal 3216 [25-21] [20-16] [15-11] [15-0] Ao final deste CC, add $14, $2, $2 lê o valor correto de $2 MemóriaExecuçãoDecodificação da instrução add $14, $2, $2 and $12, $2, $5 Escrita no banco de registradores sub $2, $1, $3or $13, $6, $2 slide 10.10 Prof. José Luís Güntzel 2. Organizações do MIPS: pipeline ComputaçãoUFPel Arquitetura e Organização de Computadores II sub $2, $1, $3 Ordem de execução do programa (em instruções) MI Reg MD RegULA MI Reg MD RegULA Conflitos por Dados -20-20-20-2010/-2010101010Valor do reg. $2 CC9CC8CC7CC6CC5CC4CC3CC2CC1 Tempo, em Ciclos de clock MI Reg MD RegULA MI Reg MD RegULA MI Reg MD RegULA and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) slide 10.11 Prof. José Luís Güntzel 2. Organizações do MIPS: pipeline ComputaçãoUFPel Arquitetura e Organização de Computadores II Detectando e Resolvendo Conflitos por Dados 1. Conflitos no Estágio EX se (EX/MEM.EscReg = 1 e (EX/MEM.RegistradorRd ≠ 0 ) e (EX/MEM.RegistradorRd = DI/EX.RegistradorRs )) Adianta.A = 10 se (EX/MEM.EscReg = 1 e (EX/MEM.RegistradorRd ≠ 0 ) e (EX/MEM.RegistradorRd = DI/EX.RegistradorRt )) Adianta.B = 10 slide 10.12 Prof. José Luís Güntzel 2. Organizações do MIPS: pipeline ComputaçãoUFPel Arquitetura e Organização de Computadores II Detectando e Resolvendo Conflitos por Dados 2. Conflitos no Estágio MEM se (EX/MEM.EscReg = 1 e (EX/MEM.RegistradorRd ≠ 0 ) e (MEM/ER.RegistradorRd = DI/EX.RegistradorRs )) Adianta.A = 01 se (EX/MEM.EscReg = 1 e (EX/MEM.RegistradorRd ≠ 0 ) e (MEM/ER.RegistradorRd = DI/EX.RegistradorRt )) Adianta.B = 01 slide 10.13 Prof. José Luís Güntzel 2. Organizações do MIPS: pipeline ComputaçãoUFPel Arquitetura e Organização de Computadores II Detectando e Resolvendo Conflitos por Dados Complicação: Conflito entre o resultado no estágio ER e o resultado no estágio MEM e o operando-fonte da instrução no estágioda ULA. $1, $1, $4add … $1, $1, $3add $1, $1, $2add slide 10.14 Prof. José Luís Güntzel 2. Organizações do MIPS: pipeline ComputaçãoUFPel Arquitetura e Organização de Computadores II Detectando e Resolvendo Conflitos por Dados 2. Conflitos no Estágio MEM se (EX/MEM.EscReg = 1 e (EX/MEM.RegistradorRd ≠ 0 ) e (EX/MEM.RegistradorRd ≠ DI/EX.RegistradorRs ) e (MEM/ER.RegistradorRd = DI/EX.RegistradorRs )) Adianta.A = 01 se (EX/MEM.EscReg = 1 e (EX/MEM.RegistradorRd ≠ 0 ) e (EX/MEM.RegistradorRd ≠ DI/EX.RegistradorRt ) e (MEM/ER.RegistradorRd = DI/EX.RegistradorRt )) Adianta.B = 01 slide 10.15 Prof. José Luís Güntzel 2. Organizações do MIPS: pipeline ComputaçãoUFPel Arquitetura e Organização de Computadores II Uso do Simulador DLX O processador DLX é um primo-irmão do MIPS, mostrado no outro livro do Patersson-Hennessy (Computer Architecture: A Quantitative Approach. 2nd edition. San Francisco, California: Morgan Kaufmann Publishers, 1996.) O DLX é capaz de executar todas as instruções do MIPS Disponível em ftp://ftp.mkp.com/pub/dlx/ O arquivo-fonte contendo o programa em simbólico deve ser editado em um editor ascii, sem formatação, e deve receber um nome com extensão “.s” O simulador do DLX mostra a progressão das instruções nos estágios do pipeline Permite visualizar a execução com e sem Unidade de Adiantamento (with or without forwarding)
Compartilhar