Capítulo 4. O Processador

Documentos relacionados
Introdução. Os mesmos princípios se aplicam a processadores. No MIPS as instruções são divididas normalmente em cinco etapas:

CAPÍTULO 4 CAMINHO DE DADOS E CONTROLE

Relembrando desempenho...

Relembrando desempenho...

Arquitetura de Computadores I

ção de Computadores II

O Processador: Via de Dados e Controle

Organização e Arquitetura de Computadores I

Exercícios resolvidos (aula de 4 de Maio) Resolução:

PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

Organização e Arquitetura de Computadores I

UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

Sistemas Processadores e Periféricos Aula 5 - Revisão

Sistemas de Computação. Instruções de Linguagem de Máquina

Arquitetura e Organização de Processadores. Aulas 06 e 07. Superescalaridade

Pipelines. João Canas Ferreira. Mar-Abr Contém figuras de: Computer Organization & Design, D. A Patterson e J. L. Hennessy, 2 a ed. (cap.

Sistemas Processadores e Periféricos Aula 2 - Revisão

Tiago Alves de Oliviera

Organização de Computadores μarquitetura. Na Aula Anterior... Introdução. Nesta Aula. MIPS-Monociclo. Formas de Organização 17/10/2016

ARQUITECTURA DE COMPUTADORES

Arquitetura e Organização de Computadores

Implementação da UCP. Construção do caminho de dados Controle Implementação monociclo. Organização de Computadores

Pipelining - analogia

Visão Geral de Pipelining

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

1. A pastilha do processador Intel possui uma memória cache única para dados e instruções. Esse processador tem capacidade de 8 Kbytes e é

Organização e Arquitetura de Computadores I

Arquitetura de Computadores. Professor: Vilson Heck Junior (Material: Douglas Juliani)

Todo processador é constituído de circuitos capazes de realizar algumas operações primitivas:

Organização e Projetos de Computadores. Capítulo 2. Organização e Projetos de Computadores. Instruções

SSC0611 Arquitetura de Computadores

William Stallings Arquitetura e Organização de Computadores 8 a Edição. Capítulo 12 Estrutura e função do processador

AULA DE REVISÃO 3 ILP

Organização de Sistemas de Computadores

Conceitos Básicos Processador

Aula 16: UCP: Conceitos Básicos e Componentes

CPU Implementação. Multiciclo. Prof. Carlos Bazilio

SSC0611 Arquitetura de Computadores

Registradores na Arquitetura MIPS. 29/4/2016 MIPS - Instruction Set Architecture

O Porcessador: Via de Dados e Controle (Parte B: multiciclo) 1998 Morgan Kaufmann Publishers Ch5B 1

Processador: Conceitos Básicos e Componentes

ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO 6: PROCESSADORES. Prof. Juliana Santiago Teixeira

SSC510 Arquitetura de Computadores 1ª AULA

X Y Z A B C D

Data Path / Control Path Controle do MIPS

ORGANIZAÇÃO DE COMPUTADORES

Instruções de Máquina

Aula 15: Ciclo de Execução e Introdução ao Pipeline

Arquitetura de Computadores. Ciclo de Busca e Execução

É um sinal elétrico periódico que é utilizado para cadenciar todas as operações realizadas pelo processador.

Unidade Central de Processamento UCP (CPU)

ARQUITETURA DE COMPUTADORES. Organização de Sistemas Computacionais. Prof.: Agostinho S. Riofrio

Arquitetura e Organização de Processadores. Aula 3. Processador MIPS Bloco operacional

Parte 7 Pipeline: Conceitos básicos, implementação e ganho de desempenho

Organização de computadores. Aula 05

Organização e Arquitetura de Computadores INTRODUÇÃO

ção de Computadores I

ção de Computadores I

Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores

Organização de Sistemas Computacionais Processadores: Organização da CPU

Melhorando o Desempenho com Pipelining

3 a Lista de Exercícios

ELETRÔNICA DIGITAL II. AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

UM PROCESSADOR SIMPLES

Univ ersidade Feder al do Rio de Janei ro Informáti ca DCC/IM. Pipeline. Gabriel P. Silva. Gabriel P. Silva

EA869 Pipeline. Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof.

Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO

Disciplina: Arquitetura de Computadores

Microprocessadores. Execução em Paralelo Pipelines

Figura 1. Datapath do MIPS Superescalar Especulativo CES SE

Processador. Processador

Prof. Frank Sill Torres DELT Escola de Engenharia UFMG

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

SSC0112 Organização de Computadores Digitais I

Arquitetura e organização de computadores

Introdução à Computação: Arquitetura von Neumann

Nível da Lógica Digital

Prof. Leonardo Augusto Casillo

Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação.

NEANDERWIN. Algumas características do processador Neander são:

Organização de Computadores

William Stallings Organização de computadores digitais. Capítulo 14 Operação da Unidade de Controle

4. Modelo de Programação do DLX Introdução

Instruções. Maicon A. Sartin

Organização e Arquitetura de Computadores I

Organização de Computadores 1

Arquitetura de Computadores. Ivan Saraiva Silva

O Que Veremos. Introdução. Introdução. Definindo Desempenho. Definindo Desempenho. Avaliando e Compreendendo o Desempenho

PIPELINE. Introdução ao Pipeline. PIPELINE Ciclo de Instruções. PIPELINE Ciclo de Instruções. PIPELINE - Exemplo. PIPELINE Considerações

Micro-Arquiteturas de Alto Desempenho. Introdução. Ementa

2. A influência do tamanho da palavra

PCS-2529 Introdução aos Processadores. Prof. Dr. Paulo Sérgio Cugnasca

O Funcionamento do Processador

ULA. Combina uma variedade de operações lógicas e matemáticas dentro de uma única unidade.

Caminho dos Dados e Atrasos

Computador Cleópatra

Unidade de Controle. Sinais e temporização da busca de instrução. Prof. Eduardo Appel

Organização e Arquitetura de Computadores I

Departamento de Sistemas de Computação - SSC. Sistemas Digitais. 2 o Semestre Projeto CPU. Data da apresentação: 26/27 de outubro

Transcrição:

Capítulo 4 O Processador

Introdução Fatores de desempenho da CPU Contagem de instrução Determinado pelo ISA e compilador CPI e tempo de ciclo Determinado pelo hardware da CPU Nós examinaremos duas implementações do MIPS Uma versão simplificada Uma versão de pipeline mais realista Subconjunto simples, mostra a maioria dos aspectos Referência de memória: lw, sw Aritmética/lógica: add, sub, and, or, slt Transferência de controle: beq, j

Execução da Instrução (1) Para cada instrução, os dois primeiros passos são idênticos: Envia o contador de programa (PC) para a memória que contém o código busca a instrução a partir daquela memória Lê um ou dois registradores, usando os campos da instrução para selecionar os registradores para ler Para a instrução de carregar a palavra, nós precisamos ler somente um registrador A maioria das outras instruções exigem que se leia dois registradores Após estas etapas, as ações para completar a instrução depende da classe de instrução

Execução da Instrução (2) Dependendo da classe de instrução Usa a unidade lógica aritmética (ULA) para calcular Endereço da memória para instruções load/store Resultado aritmético para a execução da operação Comparações para o endereço alvo de desvio Instrução de referência de memória precisa ter acesso a memória para ler/escrever dados Instruções de lógica aritmética deve escrever dados a partir da ULA ou memória no registrador Instruções de desvio precisam alterar o próximo endereço de instrução baseado na comparação PC endereço alvo ou PC + 4

Visão Geral da CPU PC+4 Linhas interligando as unidades funcionais representam barramentos Fornece endereço da instrução - endereço de memória (resultado da ULA ou memória no reg.) - resultado aritmético (escreve resultado da ULA no reg.) - comparação (PC e offset do desvio são somados)

Multiplexadores Vindo de dois somadores Não pode simplesmente juntar os fios Use multiplexadores ULA / mem. dados reg. / campo imediato da instrução Deve-se acrescentar um elemento lógico que escolhe entre as várias fontes e dirige uma dessas fontes para o seu destino

Exercício Considere um pequeno multiplexador com 4 entradas de dados de 1 bit a) Este bloco contém somente lógica, somente flipflops, ou ambos? b) Mostre como este bloco pode ser implementado. Use somente AND, OR, NOT c) Estenda a letra b) com buffers tri-state A intenção do estado Z é permitir que diversos circuitos compartilhem o mesmo barramento de dados, sem afetar umas as outras Entrada Saída A B C 0 0 Z 1 0 Z 0 1 0 1 1 1

Controle regs. devem escrever em uma instrução de load e aritmética Memória de dados deve ler em um load e escrever em um store estas operações são dirigidas pelas linhas de controle que são definidas em função de vários campos da instrução

Exercício Diferentes instruções utilizam diferentes blocos de hardware na implementação básica do ciclo único Instrução Interpretação a. AND Rd, Rs, Rt Reg[Rd] = Reg[Rs] AND Reg[Rt] b. SW Rt, Offs(Rs) Mem[Reg[Rs] + Offs] = Reg[Rt] a) Quais são os valores dos sinais de controle gerados pelo controle do slide anterior? b) Quais recursos (blocos) executam uma função útil?

Fundamentos de Lógica Os dados são codificados em binário Baixa tensão = 0, Alta tensão = 1 Um fio por bit Dados de múltiplos bits codificados em barramentos de mútiplos fios Elemento combinacional Opera em dados Saída é uma função da entrada Elementos de estado (sequencial) Armazena dados

Elementos Combinacionais Porta AND Y = A & B Somador Y = A + B A B + Y A B Y Multiplexador Y = S? I1 : I0 Unidade lógica/aritmética Y = F(A, B) I0 I1 M u x Y A ALU Y S B F

Elementos Sequenciais (1) Registrador: armazena dados num circuito Usa um sinal de relógio para determinar quando atualizar o valor armazenado Disparado pela borda: atualiza quando Clk muda de 0 para 1 Clk D Q D Q Clk Clk D Q Comentário 0 X Q ant Nenhuma mudança 1 0 0 Reseta 1 1 1 Seta

Elementos Sequenciais (2) Registrador com controle de escrita Somente atualiza na borda do relógio quando a entrada do controle de escrita é 1 Usado quando o valor armazenado é solicitado mais tarde Clk D Write Clk Q Write D Q

Metodologia de Relógio Lógica combinacional transforma dados durante ciclos de relógio Entre as bordas do relógio Entrada a partir de elementos de estado, saída para elemento de estado Atraso mais longo determina o período de relógio Uma metodologia de disparo de bordas permite que um elemento de estado possa ser lido e escrito no mesmo ciclo de relógio, sem criar uma corrida que poderia levar a valores de dados indeterminados

Construindo Caminho de Dados Caminho de dados Elementos que processam dados e endereços na CPU Registradores, ULAs, muxes, memórias, Nós vamos construir um caminho de dados do MIPS de forma incremental Refinando o design geral Unidade de memória: armazena as instruções de um programa e fornece as instruções dado um endereço Contador de programa (PC): armazena o endereço da instrução atual Somador: incrementa o endereço de PC para o endereço da próxima instrução

Busca Instrução Registrador de 32 bits fornece as instruções dado um endereço Incrementa por 4 para próxima instrução

Instruções do Format-R Lê dois operandos de registrador (Read Register) Executa operação lógica/aritmética Escreve resultado no registrador (Write Register) No total, tem-se 32 regs (i.e., 2 5 ) Fornece dado a ser escrito no registrador add, sub, AND, OR e slt O barramento da entrada e saída de dados são de 32 bits op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

Instruções de Load/Store Lê operandos do registrador Calcula endereço usando um deslocamento de 16 bits Usa ULA, mas com deslocamento de sinal estendido Load: Lê memória offset ($t2) e atualiza registrador ($t1) Store: Escreve valor do registrador ($t1) para memória offset ($t2) Usado pelo store Soma registrador base ($t2) ao campo offset de 16 bits sinalizado Usado pelo load lw $t1,offset_value($t2) sw $t1,offset_value ($t2)

Instruções de Desvio (1) Lê operandos do registrador Compara operandos Usa ULA, subtrai e checa saída Zero Calcula endereço alvo Deslocamento de extensão do sinal Desloca 2 casas para esquerda (aumenta o intervalo efetivo do offset por um fato de 4) Adiciona ao PC + 4 Já calculado pela busca de instrução beq $t1,$t2,offset offset offset de 16 bits sinalizado op rs rt constante ou endereço 6 bits 5 bits 5 bits 16 bits

Instruções de Desvio (2) Somente redireciona fios O deslocamento vai jogar fora somente os bits de sinal Usa ULA para avaliar a condição do desvio Um somador para calcular o alvo de desvio como a soma do PC incremento e a extensão do sinal Saída zero é true se os dois valores forem iguais Dobra a quantidade de fios Fio do bit de sinal replicado A unidade shift-left 2 é simplesmente um roteamento dos sinais entre a entrada e saída que adiciona 00 aos bits menos significativos da extensão do sinal de offset

Compondo os Elementos O caminho de dados tenta executar todas as instruções em um único ciclo de relógio Nenhum dos recursos do caminho de dados pode ser usado mais de uma vez por cada instrução de modo que, qualquer elemento necessário mais do que uma vez, deve ser duplicado Por isso, precisamos de uma memória de instruções separada da memória de dados Compartilhar elemento do caminho de dados entre duas diferentes classes de instrução Usar multiplexadores e sinal de controle para selecionar entre as múltiplas entradas

Caminho de Dados Tipo-R/Load/Store Instruções tipo-r usam dois regs load load/store usam um reg + offset Instruções tipo load/store usam sign-extended O valor armzenado no registrador de destino vem da ULA (p/ uma instrução do tipo-r) ou da memória (p/ um instrução do tipo load) Tipo-R

O Caminho de Dados Completo

Exercício 1 Quais das seguintes frases estão corretas para uma instrução load? Consulte o slide anterior a) MemtoReg deve ser setado para fazer com que o dado da memória seja enviado para o arquivo de registrador b) MemtoReg deve ser setado para fazer com que o registrador de destino correto seja enviado para o arquivo de registrador c) Nós não nos importamos sobre a definição de MemtoReg para loads

Exercício 2 O caminho de dados de ciclo único, descrito conceitualmente até aqui, deve ter memória de instruções e dados separada, porque a) O formato das instruções e dos dados são diferentes no MIPS, e deste modo diferentes memórias são necessárias b) Tendo memórias separadas é menos dispendioso c) O processador opera em um ciclo e não pode usar uma memória de única porta para dois acessos diferentes dentro desse ciclo

Exercício 3 Diferentes unidades de execução e blocos de lógica digital têm diferentes latências (tempo necessário para realizar o trabalho). I-Mem Add Mux ULA Regs D-Mem Control a. 200ps 70ps 20ps 90ps 90ps 250ps 40ps b. 750ps 200ps 50ps 250ps 300ps 500ps 300ps Qual é o tempo necessário para executar as instruções AND,LOAD e BEQ? Responda esta questão com base no circuito do slide 8

Controle da ULA (1) ULA usada para Load/Store: F = adiciona Desvio: F = subtrai Tipo-R: F = depende do campo funct Controle da ULA Função 0000 AND 0001 OR 0010 add 0110 subtract 0111 set-on-less-than 1100 NOR

Controle da ULA (2) Assume ALUOp de 2-bit derivado a partir do opcode Lógica combinacional deriva o controle da ULA opcode ALUOp Operação funct Função da ULA Controle da ULA lw 00 load word XXXXXX add 0010 sw 00 store word XXXXXX add 0010 beq 01 branch equal XXXXXX subtract 0110 R-type 10 add 100000 add 0010 subtract 100010 subtract 0110 AND 100100 AND 0000 OR 100101 OR 0001 set-on-less-than 101010 set-on-less-than 0111

Controle da ULA (3) Tabela da verdade para os 4 bits de controle da ULA As entradas são ALUOp e o campo de código de função Don t care terms = X Os dois primeiros campos do campo de função são sempre 10

Controle da ULA (4) Gera os 4 bits de controle baseado nos bits da ALUOp e o código de função

Exercício Projete um circuito lógico com três entradas A, B e C, cuja saída será nível alto apenas quando a maioria das entradas for nível alto

A Unidade de Controle Principal Sinais de controle derivados a partir da instrução Tipo-R Load/ Store Desvio 0 rs rt rd shamt funct 31:26 25:21 20:16 15:11 10:6 5:0 35 or 43 rs rt endereço 31:26 25:21 20:16 15:0 4 rs rt endereço 31:26 25:21 20:16 15:0 opcode sempre lê lê, exceto p/ load escrita p/ tipo-r e load sign-extend e add

Caminho de Dados com Controle

Instruções do Tipo-R

Instruções Load

Instruções Branch-on-Equal

Finalizando o Controle (1) A função de controle pode ser precisamente definida usando a seguinte tabela: Instruções do formato-r (add, sub, AND, OR, and slt): Possuem regs fontes rs e rt e reg de destino rd Define como ALUSrc e RegDst são setados Usam RegWrite=1, mas nunca lêem nem escrevem na memória de dados

Finalizando o Controle (2) Quando o sinal de controle de branch é zero, o PC é substituído de forma incondicional por PC+4 Caso contrário, o PC é substituído pelo alvo de desvio se a saída Zero da ULA for também alto O campo ALUOp para instruções do tipo-r é setado para 10 para indicar que o controle da ULA deve ser gerado a partir do campo funct Instruções do formato load/store usam ALUSrc e ALUOp para executar o cálculo do endereço MemRead e MemWrite são setados para executar acesso a memória RegDst e RegWrite são setados para um load para fazer com que o resultado seja armazenado em rt

Finalizando o Controle (3) A instrução de desvio envia os regs rs e rt para a ULA (similar ao formato-r) ALUOp é setado para uma subtração (Controle da ULA = 01), que é usado para teste de igualdade MemtoReg é irrelevante quando o sinal RegWrite é zero (uma vez que o registrador não está sendo escrito) RegDst é também irrelevante quando RegWrite é 0

Finalizando o Controle (4) A função de controle para uma implementação de um único ciclo

Finalizando o Controle (5) Implementação estruturada da função de controle

Exercício A latência de componentes individuais do caminho de dados afetam o tempo de ciclo de relógio de todo caminho de dados I-Mem Add Mux ULA Regs D-Mem Signextend Shiftleft-2 a. 200ps 70ps 20ps 90ps 90ps 250ps 15ps 10ps b. 750ps 200ps 50ps 250ps 300ps 500ps 100ps 5ps a) Qual é o tempo de ciclo de relógio se somente as instruções do tipo ULA (add, AND, etc.) são executdas? b) Qual é o tempo de ciclo de relógio se somente instruções LW são suportadas? c) Qual é o tempo de ciclo de relógio se somente instruções ADD, BEQ, LW e SW são suportadas?

Implementando Jumps Jump 000010 endereço 31:26 25:0 Jump usa endereço de palavra Atualiza PC com concatenação de Os 4 bits superiores do PC atual + 4 (estes são os bits 31:28 da instrução de endereço seguinte) Endereço de jump de 26 bits Os bits 00 2 Precisa de um sinal de controle extra (Jump) decodificado a partir do opcode

Caminho de Dados com Jumps Adicionados

Aspectos de Desempenho Atraso mais longo determina período de relógio Caminho crítico: instrução de load Memória de instrução registrador ULA memória de dados registrador Não é viável variar período para diferentes instruções O ciclo de relógio deve ter a mesma duração para cada instrução neste projeto de ciclo único Viola princípio de projeto Fazendo o caso comum rápido Melhorar o desempenho através do pipeline

Analogia do Pipeline Lavanderia pipelined: sobreposição de execução Paralelismo melhora o desempenho 8 3.5 Quatro cargas: Aceleração = 8/3.5 2.3 Dependendo do número de cargas, aceleração pode ser igual ao número de estágios no pipeline

Pipeline do MIPS Cinco estágios, um passo por estágio 1. IF: Busca instrução da memória 2. ID: Decodifica instrução & lê registrador 3. EX: Executa operação ou calcula endereço 4. MEM: Acessa o operando de memória 5. WB: Escreve o resultado de volta para o registrador

Desempenho do Pipeline (1) Suponha que o tempo para os estágios é: 100ps para escrita e leitura do registrador 200ps para os outros estágios Compara um caminho de dados com pipeline e com único ciclo Instr Busca Instr Leitura do reg Operação ULA Acesso a memória Escrita do reg Tempo total lw 200ps 100 ps 200ps 200ps 100 ps 800ps sw 200ps 100 ps 200ps 200ps 700ps R-format 200ps 100 ps 200ps 100 ps 600ps beq 200ps 100 ps 200ps 500ps

Desempenho do Pipeline (2) Único ciclo (T ciclo = 800ps) Pipeline (T ciclo = 200ps)

Aceleração do Pipeline Se todos os estágios estiverem balanceados i.e., todos têm o mesmo tempo Tempo entre instruções pipelined = Tempo entre instruções nonpipelined Número de estágios Se não estiver balanceado, aceleração é menor Aceleração devido ao aumento da taxa de transferência (throughput) T p = 800ps = 160ps 5 Latência (tempo para cada instrução) não diminui Sob condições ideais e com um grande número de instruções, a aceleração (com o pipeline) é igual ao número de estágios

Pipelining e Projeto do ISA ISA do MIPS foi projetado para pipelining Todas as instruções são de 32 bits Mais fácil de buscar e decodificar em um ciclo c.f. x86: instruções de 1 byte a 17 bytes Implementações recentes do x86 traduzem as instruções em operações mais simples, parecido com o MIPS Poucos e regulares formatos de instruções e.g., o campo dos registradores fontes estão sempre localizados no mesmo lugar em cada instrução Pode decodificar e ler registradores em um passo Endereçamento de load/store Operandos de memória somente aparecem no load/store Pode calcular endereço no 3 rd estágio, acessar memória no 4 th estágio Alinhamento de operandos de memória Acesso a memória leva somente um ciclo

Perigos Situações que impeçam de iniciar a próxima instrução no próximo ciclo Perigo estrutural O hardware não suporta a combinação de instruções que desejamos executar no mesmo ciclo de relógio Um recurso necessário está ocupado Perigo de dados Precisa esperar pela instrução anterior para completar a sua leitura / escrita de dados Perigo de controle Decidir sobre a ação de controle depende da instrução anterior

Perigo Estrutural (1) Conflito por utilização de um recurso e.g., usar uma combinação de máquina de lavar e secar em vez de uma lavadora e secadora separado No pipeline do MIPS, suponha uma única memória e uma quarta instrução No mesmo ciclo, uma instrução estaria acessando o dado da memória, enquanto a quarta instrução estaria buscando uma instrução da mesma memória

Perigo Estrutural (2) Load/store exigem acesso aos dados Busca da instrução teria que parar para aquele ciclo Causaria uma bolha no pipleline Deste modo, o caminho de dados no pipeline exige memórias de instruções e dados separados Caso contrário, pode-se ter um perigo estrutural Ocorre quando uma instrução planejada não pode executar no ciclo de relógio apropriado, pois o hardware não suporta a combinação de instruções que são definidas para executar

Perigo de Dados Uma instrução depende da conclusão do acesso de dados por uma instrução anterior add $s0, $t0, $t1 sub $t2, $s0, $t3 Não escreve o resultado até o quinto estágio Desperdiçaria 3 ciclos de relógio

Emcaminhamento (Bypassing) Usar resultado quando estiver calculado Não esperar para ser armazenado em um registrador Assim que a ULA produz a soma, pode-se fornecer o resultado como entrada para a subtração Exige conexões extras no caminho de dados

Perigo de Dados no Uso do Load Nem sempre é possível evitar atrasos através do encaminhamento Se o valor não for calculado, quando necessário Não é possível encaminhar para trás no tempo! Disponível somente depois do quarto estágio Ainda existe atraso de um estágio

Escalonamento para Evitar Atrasos Reordenar o código para evitar o uso de resultados do load na próxima instrução Código C para A = B + E; C = B + F; parada parada lw $t1, 0($t0) lw $t2, 4($t0) add $t3, $t1, $t2 sw $t3, 12($t0) lw $t4, 8($t0) add $t5, $t1, $t4 sw $t5, 16($t0) 13 ciclos lw $t1, 0($t0) lw $t2, 4($t0) lw $t4, 8($t0) add $t3, $t1, $t2 sw $t3, 12($t0) add $t5, $t1, $t4 sw $t5, 16($t0) 11 ciclos

Perigos de Controle Precisa realizar uma decisão baseado nos resultados de uma instrução Enquanto as demais estão executando Desvio determina o fluxo de controle Busca pela próxima instrução depende do resultado do desvio No pipeline nem sempre é possível buscar a próxima instrução logo após uma instrução de desvio Pois o processador ainda estará trabalhando no estágio ID do desvio No pipeline do MIPS Precisa comparar registradores e calcular alvo no início do pipeline Adicionar hardware para fazê-lo no estágio do ID

Parada no Desvio Espera até que o resultado do desvio seja determinado Antes de buscar a próxima instrução para executar Hardware extra para testar regs, calcular o endereço de desvio e atualizar o PC no segundo estágio do pipeline

Previsão de Desvio Pipelines mais longos não podem facilmente determinar o resultado do desvio mais cedo Pena por parada torna-se inaceitável Prever o resultado do desvio Prevê sempre que os desvios não serão tomados Apenas pára se a previsão estiver errada Caso contrário, o pipeline continua na velocidade máxima No pipeline do MIPS Pode prever desvios que não foram tomados Busca instrução depois do desvio, sem atraso

MIPS com Previsão Previsão correta Quando o desvio não é realizado Previsão incorreta Quando o desvio é realizado

Previsão de Desvio mais Realística Previsão de desvio estático Baseado no comportamento de desvio típico Exemplo: desvios de laço e instruções if Laços são desvios que pulam para o topo do laço uma vez que são susceptíveis de serem tomados e que se desviam para trás, poderia prever que os desvios são tomados e que pulam para um endereço anterior Previsão de desvio dinâmico Hardware mensura o comportamento real do desvio e.g., registra história recente de cada desvio Assume que o comportamento futuro continuará a tendência Quando errado, pára enquanto busca instrução, e atualiza história

Resumo de Pipeline The BIG Picture Pipeline melhora o desempenho, aumentando a taxa de instrução Executa múltiplas instruções em paralelo Cada instrução tem a mesma latência Não reduz o tempo que uma instrução individual leva para completar Sujeio a riscos Estrutura, dado e controle Projeto do conjunto de instrução afeta a complexidade da implementação do pipeline

Exercício 1 Examinaremos como pipeline afeta o tempo de ciclo do processador. Assuma as seguintes latências de cada estágio individual: IF ID EX MEM WB a. 250ps 350ps 150ps 300ps 200ps b. 200ps 170ps 220ps 210ps 150ps a) Qual é o tempo de ciclo de relógio em um processador com e sem pipeline? b) Qual é o tempo entre instruções (T p )? c) Qual é o desempenho de três instruções LW indep. em um processador com e sem pipeline?

Exercício 2 Para as seguintes instruções, assuma que elas são executadas em um caminho de dados com 5 estágios de pipeline a) ADD R5, R2, R1 LW R3, 4(R5) LW R2, 0(R2) OR R3, R5, R3 SW R3, 0(R5) b) LW R2, 0(R1) AND R1, R2, R1 LW R3, 0(R2) LW R1, 0(R1) SW R1, 0(R2) a) Quais são os perigos que podemos encontrar? b) Como eles podem ser resolvidos?

Exercício 3 Para cada sequência de código abaixo, declare se o mesmo deve parar, pode evitar paradas usando encaminhamento ou pode executar sem parar ou encaminhar Sequência 1 lw $t0, 0($t0) add $t1, $t0, $t0 Sequência 2 add $t1, $t0, $t0 addi $t2, $t0, #5 addi $t4, $t1, #5 Sequência 3 addi $t1, $t0, #1 addi $t2, $t0, #2 addi $t3, $t0, #2 addi $t3, $t0, #4 addi $t5, $t0, #5

Caminho de Dados - Pipeline do MIPS Perigo de dados apenas as instruções posteriores no pipeline são influenciadas por esses movimentos de dados reverso MEM Fluxo da direita para a esquerda leva a riscos WB Instruções e dados se movem geralmente da esquerda para direita através dos cinco estágios Perigo de controle

Registradores do Pipeline Precisa de registradores entre estágios Para manter a informação produzida no ciclo anterior Analogia com a lavanderia: Ter um cesto entre cada par de estágios para guardar as roupas para o próximo passo

Operação do Pipeline Fluxo ciclo-por-ciclo de instruções através do caminho de dados com pipeline Diagrama do pipeline com ciclo de relógio único Mostra o uso do pipeline num único ciclo Destaca recursos utilizados c.f. diagrama de mútiplos ciclos de relógio Gráfico de operações ao longo do tempo Nós vamos olhar para os diagramas de ciclo de relógio único para o load & store Pois os mesmos são ativos em todos os cincos estágios

IF para o Load, Store, O endereço incrementado é salvo no registrador IF/ID caso seja necessário para uma instrução posterior (e.g., beq) Destaca a metade direita quando está sendo lido e destaca a metade esquerda quando está sendo escrito

ID para o Load, Store, Escreve no registrador ID/EX o valor de PC incrementado, os dois registradores e o sinal estendido Destaca a metade direita quando está sendo lido e destaca a metade esquerda quando está sendo escrito

EX para o Load Lê o conteúdo do reg. 1 e o sinal estendido a partir do reg. ID/EX e os adiciona usando a ULA Destaca a metade direita quando está sendo lido e destaca a metade esquerda quando está sendo escrito O resultado da soma é colocado no reg. EX/MEM

MEM para o Load Lê a memória de dados usando o endereço a partir do reg. EX/MEM e carrega o dado no reg. MEM/WB Destaca a metade direita quando está sendo lido e destaca a metade esquerda quando está sendo escrito

WB para o Load Lê o dado a partir do reg. MEM/WB e o escreve no registrador mostrado no meio da figura Número do registrador incorreto A instrução no reg. IF/ID fornece o número do registrador de escrita; esta informação ocorre consideravelmente depois da instrução de load

Caminho de Dados Corrigido para o Load O número do registrador de escrita agora vem a partir do reg. MEM/WB juntamente com o dado O número do registrador é passado a partir do estágio do ID até alcançar o reg/ MEM/WB

EX para o Store O endereço efetivo é colocado no registrador EX/EM Destaca a metade direita quando está sendo lido e destaca a metade esquerda quando está sendo escrito

MEM para o Store Mostra o dado sendo escrito na memória A única maneira de ter o dado disponível durante o estágio MEM é colocar o dado no EX/MEM no estágio EX Destaca a metade direita quando está sendo lido e destaca a metade esquerda quando está sendo escrito

WB para o Store Nada acontece no ciclo do write-back, pois cada instrução atrás do store já está em progresso (não existe maneira de acelerar aquelas instruções) Destaca a metade direita quando está sendo lido e destaca a metade esquerda quando está sendo escrito

Diagrama de Pipeline de Múltiplos-Ciclos Pipeline é difícil de entender, pois várias instruções estão executando simultaneamente Destaca a metade direita quando está sendo lido e destaca a metade esquerda quando está sendo escrito Mostra o uso de recursos

Diagrama de Pipeline de Múltiplos-Ciclos Forma tradicional (usa o nome em cada estágio em vez do uso de recursos)

Diagrama de Pipeline de um Único Ciclo Estado do pipeline em um dado ciclo Diagrama correspondente ao ciclo de relógio (CC) 5

Controle do Pipeline (Simplificado) identificação dos sinais de controle em azul

Controle do Pipeline (1) Podemos dividir as linhas de controle em cinco grupos de acordo com o estágio do pipeline IF: Sinais de controle para ler a memória de instrução e escrever no PC (não existe controle especial) ID: Como no estágio anterior, a mesma coisa acontece em todo ciclo de relógio EX: Os sinais para setar são RegDst, ALUOp e ALUSrc MEM: Os sinais para setar são Branch, MemRead e MemWrite WB: Os dois sinais de controle são MemtoReg e RegWrite

Controle do Pipeline (2) Sinais de controle derivados a partir da instrução Como uma implementação de ciclo único O PC é escrito em cada ciclo de relógio Não existem sinais de escrita separados para os registradores de pipeline (IF/ID, ID/EX, EX/MEM e MEM/WB), pois os registradores são escritos durante cada ciclo de relógio

Controle do Pipeline (3) EX: RegDst, ALUOp e ALUSrc MEM: Branch, MemRead e MemWrite WB: MemtoReg e RegWrite

Perigo de Dados em Instruções da ULA Considere a seguinte sequência de código: As últimas 4 instruções são dependents do resultado no registrador $2 sub $2, $1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) Nós podemos resolver perigos com o encaminhamento Como é que podemos detectar quando encaminhar?

Dependências & Encaminhamento O valor apropriado do reg. $2 só está disponível no CC5

Detectar a necessidade de encaminhamento (1) Passe o número dos registradores ao longo do pipeline e.g., ID/EX.RegisterRs = número do registrador para Rs definido no registrador do pipeline ID/EX Os números do registrador do operando da ULA no estágio EX são dados por ID/EX.RegisterRs, ID/EX.RegisterRt Perigo de dados quando 1a. EX/MEM.RegisterRd = ID/EX.RegisterRs 1b. EX/MEM.RegisterRd = ID/EX.RegisterRt 2a. MEM/WB.RegisterRd = ID/EX.RegisterRs 2b. MEM/WB.RegisterRd = ID/EX.RegisterRt Enc. a partir do reg. pipeline EX/MEM Enc. a partir do reg. pipeline MEM/WB

Detectar a necessidade de encaminhamento (2) Mas somente se a instrução de encaminhamento for escrever no registrador! EX/MEM.RegWrite, MEM/WB.RegWrite E somente se Rd para aquela instrução não for $zero EX/MEM.RegisterRd 0, MEM/WB.RegisterRd 0 No nosso exemplo, temos um perigo quando a instrução add está no estágio EX e a instrução anterior está no estágio MEM (condição 1a) EX/MEM.RegisterRd = ID/EX.RegisterRs=$2

Exercício 1 Neste exercício, desenhe o diagrama de execução do pipeline para este código: Sequência de código 1 lw $t0, 1200($t1) add $t0, $s2, $t0 sw $t0, 1200($t1) Sequência de código 2 Label1: LW R2, 0(R2) BEQ R2, R0, Label1; taken once, then not taken OR R2, R2, R3 SW R2, 0(R5) Assuma um processador com pipeline de 5 estágios, encaminhamento completo, previsor de desvio

Exercício 2 Classifique as dependências nesta sequência: sub $2, $1, $3 and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2)