Sequenciamento dinâmico



Documentos relacionados
Implementação de pipelines

Predição de Desvios e Processadores Superescalares Especulativos

Execução concorrente de instruções

Execução concorrente de instruções

Conflitos. Aula de Março de

Organização e Arquitetura de Computadores. Capítulo 13 Paralelismo no nível de instruções

Processadores Superescalares - Avançando na exploração de paralelismo entre instruções

Arquitetura de Computadores I

Exemplo: CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 ADD $s0, $t0, $t1 IF ID EX MEM WB SUB $t2, $s0, $t3 IF Stall Stall ID EX MEM WB

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

Arquitetura e Organização de Computadores 2

Caminho dos Dados e Atrasos

Organização e Arquitetura de Computadores I

Arquitetura de Computadores - Processadores Superescalares. por Helcio Wagner da Silva

1.0 val. (b) Determine o CPI do processador na execução do código indicado. Num.: Nome: Pág. 1. Arquitecturas Avançadas de Computadores (AAC)

Arquitecturas Alternativas. Pipelining Super-escalar VLIW IA-64

Arquitetura de Computadores. Ivan Saraiva Silva

Arquitetura de Computadores I

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

Informática I. Aula 5. Aula 5-13/05/2006 1

1. Considere um processador super-pipelined com 4 estágios (IF,ID,EX,WB), a operar à frequência de 1GHz, e com as seguintes caracteristicas:

Interrupções. As interrupções são casos especiais de chamadas de procedimentos.

Pipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir.

Arquiteturas RISC. (Reduced Instructions Set Computers)

Introdução às Linguagens de Programação

ARQUITECTURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

Visão Geral de Pipelining

Aula 26: Arquiteturas RISC vs. CISC

GUIA DE FUNCIONAMENTO DA UNIDADE CURRICULAR

Programação de Sistemas

Unidade 10: A Unidade Lógica Aritmética e as Instruções em Linguagem de Máquina Prof. Daniel Caetano

Arquitetura de Computadores RISC x CISC. Gustavo Pinto Vilar

Microarquiteturas Avançadas

SISTEMAS DIGITAIS. Memórias. Prof. Guilherme Arroz Prof. Carlos Sêrro Alterado para lógica positiva por Guilherme Arroz.

Arquitetura de Computadores. Tipos de Instruções

Tarefa Orientada 16 Vistas

ULA Sinais de Controle enviados pela UC

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2)

Sistemas de armazenamento

Sistemas Computacionais II Professor Frederico Sauer

Figura 1 - O computador

Modelo Cascata ou Clássico

28/9/2010. Unidade de Controle Funcionamento e Implementação

Análise de complexidade

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:

Algumas características especiais

Ministério da Educação Secretaria de Educação Profissional e Tecnológica Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul

Gestor de Processos Núcleo do Sistema Operativo. Sistemas Operativos 2011 / Gestor de Processos

Pipelining - analogia

Computação Paralela. Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho.

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

Programação 2ºSemestre MEEC /2011. Programação 2º Semestre 2010/2011 Enunciado do projecto

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática IM-NCE/UFRJ. Pipeline. Gabriel P. Silva. Microarquitetura de Alto Desempenho

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Mensagens instantâneas

Desempenho de Computadores

Guia de Estudo Folha de Cálculo Microsoft Excel

Processadores Superescalares. Melhorando ainda mais o desempenho...

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas:

Manual do Gestor da Informação do Sistema

Arquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva

Predição de Desvios e Processadores Superescalares Especulativos

Aula 14: Instruções e Seus Tipos

Organização e Arquitetura de Computadores I

Geração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO

Árvores Binárias de Busca

Acronis Servidor de Licença. Manual do Utilizador

Pragmática das Linguagens de Programação 2004/2005

Introdução à Arquitetura de Computadores

Arquitetura de Computadores I

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados

Engenharia de Software e Sistemas Distribuídos. Enunciado Geral do Projecto

PPD: Balanceamento de Carga e Scheduling 2

Computadores de Programação (MAB353)

Memória Cache. Prof. Leonardo Barreto Campos 1

Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Características Roteamento

Arquitetura de Computadores. Sistemas Operacionais IV

Guia rápido do utilizador

Conjunto de instruções. O Conjunto de Instruções. Conjunto de instruções. Instruções típicas. Instruções típicas. Instruções típicas

Computadores de Programação (MAB353)

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

3. O NIVEL DA LINGUAGEM DE MONTAGEM

ARQUITETURA DE COMPUTADORES

RISC simples. Aula de Março de

Transcrição:

Sequenciamento dinâmico João Canas Ferreira Outubro de 2004 Contém figuras de Computer Architecture: A Quantitative Approach, J. Hennessey & D. Patterson, 3 a. ed., MKP c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 1/20

Assuntos 1 Sequenciamento dinâmico 2 Utilização de scoreboard 3 Algoritmo de Tomasulo c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 2/20

Sequenciamento dinâmico O conceito de sequenciamento dinâmico Sequenciamento dinâmico: rearranjo da execução de operações efectuado pelo processador com o objectivo de reduzir os protelamentos, preservando o fluxo de dados. Vantagens: 1. Possibilita o tratamento de casos em que as dependências não são conhecidas em tempo de compilação; Importante para obter bons desempenhos sem comprometer a compatibilidade binária. 2. Simplifica o compilador; 3. Permite que código compilado para uma arquitectura de pipeline execute bem noutra; 4. Serve de base a especulação de hardware, uma técnica com vantagens apreciáveis para o desempenho. c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 3/20

Sequenciamento dinâmico Redução do impacto de conflitos Situação: É detectado um conflito entre a instrução descodificada (andar ID) e uma instrução em execução. Solução 1: Esperar que a instrução em execução ultrapasse a fase que está na origem do conflito (protelar). Entretanto, todas as instruções posteriores à instrução em conflito são suspensas e nenhuma instrução adicional é processada. Solução2: A instrução em conflito é suspensa (até que o conflito desapareça porque a instrução anterior passou um certo estágio) mas instruções posteriores continuam a respectiva execução (caso elas próprias não tenham conflitos) e novas instruções podem ser processadas. A solução 2 (sequenciamento dinâmico) é potencialmente mais vantajosa, mas implica a execução de instruções fora de ordem bem como a terminação fora de ordem. conflitos WAR e WAW; dificuldade na coordenação com excepções (imprecisão). c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 4/20

Sequenciamento dinâmico Extensão de pipeline para sequenciamento dinâmico Dividir o andar ID em dois: 1. Emissão Descodificação da instrução e verificação de conflitos estruturais. 2. Leitura de operandos (RO) Esperar até que não haja conflitos de dados e, então, ler os operandos. IF coloca a instrução num registo ou numa fila de instruções pendentes; as instruções são emitidas a partir daí. Quando uma instrução passa de RO para EX começa a execução propriamente dita. Sequenciamento dinâmico permite ter múltiplas instruções em execução e requer unidades pipelined, múltiplas unidades funcionais, ou ambas. As instruções são emitidas em ordem, mas podem entrar em execução fora de ordem. Abordagens: tabela de resultados (scoreboard); algoritmo de Tomasulo. c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 5/20

Utilização de scoreboard Unidade scoreboard A utilização de scoreboard foi introduzida com o CDC 6600 em 1964 (16 unidades funcionais). Princípio de funcionamento: Quando a instrução a executar é suspensa ( protelada ), as instruções seguintes são emitidas e executadas se não dependerem da instrução suspensa nem de qualquer instrução activa. Todas as instruções passam pelo scoreboard, onde é mantido um registo das dependências. Este passo corresponde à emissão (e substitui uma parte do andar ID). Quando uma instrução é suspensa, o scoreboard monitora todas as modificações e decide quando é que a instrução pode começar a executar. O scoreboard também controla quando são efectuadas as escritas nos registos. c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 6/20

Utilização de scoreboard Exemplo: MIPS com scoreboard c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 7/20

Utilização de scoreboard Etapas do processamento de instruções com scoreboard Substituem ID, EX e WB; não estamos a considerar acessos a memória. 1. Emissão Se a unidade funcional estiver livre e mais nenhuma instrução tiver o mesmo registo de destino, a instrução é emitida. I.e., a instrução é protelada se existir um conflito estrutural ou um conflito WAW; não são emitidas mais instruções até o conflito desaparecer. 2. Leitura de operandos O scoreboard monitora a disponibilidade de registos-fonte: um registo está disponível se nenhuma instrução emitida anteriormente o vai alterar. Quando os operandos estão disponíveis, a unidade funcional é autorizada a ler os operandos. Esta etapa elimina os conflitos RAW, mas as instruções podem passar à próxima fora de ordem. 3. Execução A unidade funcional inicia o processamento dos operandos e notifica o scoreboard quando termina. 4. Escrita do resultado O scoreboard autoriza a escrita de resultados se não existir um conflito WAR; caso contrário, a escrita é suspensa até o conflito desaparecer. c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 8/20

Utilização de scoreboard Exemplo: Operação de scoreboard Status da instrução Instrução Emissão leitura Execução terminada Escrita L.D F6,34(R2) L.D F2,45(R3) MUL.D F0,F2,F4 SUB.D F8,F6,F2 DIV.D F10,F0,F6 ADD.D F6,F8,F2 Status das unidades funcionais Nome Busy Op Fi Fj Fk Qj Qk Rj Rk Int Sim Load F2 R3 Não Mult1 Sim Mult F0 F2 F4 Int Não Sim Mult2 Não Add Sim Sub F8 F6 F2 Int Sim Não Div Sim Div F10 F0 F6 Mult1 Não Sim Status dos registos destino F0 F2 F4 F6 F8 F10 F12... F30 FU Mult1 Int Add Div c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 9/20

Utilização de scoreboard Exemplo: Antes de DIV.D escrever o resultado Status da instrução Instrução Emissão leitura Execução terminada Escrita L.D F6,34(R2) L.D F2,45(R3) MUL.D F0,F2,F4 SUB.D F8,F6,F2 DIV.D F10,F0,F6 ADD.D F6,F8,F2 Status das unidades funcionais Nome Busy Op Fi Fj Fk Qj Qk Rj Rk Int Não Mult1 Não Mult2 Não Add Não Div Sim Div F10 F0 F6 Não Não FU Status dos registos destino F0 F2 F4 F6 F8 F10 F12... F30 Div c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 10/20

Algoritmo de Tomasulo Aspectos básicos do algoritmo de Tomasulo 1. Primeira utilização: unidade VF do IBM 360/91. 2. Existem muitas variações em uso actualmente. 3. Combina a monitorização da disponibilidade de operandos (evitar conflitos raw) com register renaming (minimizar conflitos waw e war). 4. Register renaming modifica o nome dos registos-destino de forma a que as escritas fora de ordem não afectem instruções que dependem de um valor anterior do operando. 5. Esta abordagem usa estações de reserva para implementar register renaming. Uma estação de reserva obtêm e guarda um operando mal este esteja disponível; referências a registos são substituídas por referências a estações (instruções pendentes designam qual a estação que fornece os dados de entrada); quando ocorrem escritas sobrepostas, apenas a última é efectuada. 6. Se existirem mais estações que registos é possível eliminar conflitos que não podem ser eliminados pelo compilador. c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 11/20

Algoritmo de Tomasulo Exemplo: eliminar dependências com estações de reserva DIV.D F0,F2,F4 DIV.D F0,F2,F4 ADD.D F6, F0,F8 ADD.D S,F0,F8 S.D F6,0(R1) A.D S,0(R1) SUB.D F8,F10,F14 SUB.D T,F10,F14 MUL.D F6,F10, F8 MUL.D F6,F10,T (Supondo a existência de dois registos auxiliares S e T.) Antidependência entre ADD.D e SUB.D via F8 conflito war. Dependência de saída entre ADD.D e MUL.D via F6 conflito waw. A utilização de registos auxiliares elimina as dependências de nomes. No caso actual, os registos são os buffers das estações de reserva. c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 12/20

Algoritmo de Tomasulo MIPS adaptado para o algoritmo de Tomasulo c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 13/20

Algoritmo de Tomasulo Informação distribuída pelo processador Estação de reserva: Op operação a efectuar; Qj, Qk ER que produzirão os operandos (0 operando disponível ou desnecessário); Vj, Vk Valores dos operandos; para leituras de memória Vk contém o deslocamento; A regista informação para acessos a memória: valor imediato/endereço efectivo; Busy indica se ER (ou unidade funcional) está ocupada. Cada registo contém indicação da ER que contém a operação cujo resultado deverá ser aí guardado (Qi). c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 14/20

Algoritmo de Tomasulo Etapas do algoritmo de Tomasulo 1. Emissão Obter a próxima instrução de fila de instruções.se existir uma ER apropriada vazia, emitir instrução para a ER com os operandos (se existirem). Se não existirem ER vazias, a instrução é suspensa. Se os operandos não estão nos registos, referenciar as unidades que os produzem (register renaming). 2. Execução Se algum dos operandos ainda não está disponível, monitorar o barramento comum até que apareça. Quando todos os operandos estão disponíveis, a operação pode ser efectuada. (Assim evitam-se os conflitos RAW). Múltiplas instruções podem ter a possibilidade de entrar em execução simultâneamente, o que complica as operações de acesso a memória que deve ser feito em dois tempos. 3. Escrita Quando o resultado está disponível, é enviado via CDB para o registo e para todas as ER (incluindo o store buffer). c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 15/20

Algoritmo de Tomasulo Tratamento de acessos a memória Os acessos a memória processam-se em dois passos: 1. Calcular o endereço efectivo quando o registo de base está disponível e colocá-lo no buffer correspondente (load/store). 2. Executar load quando a unidade de memória estiver disponível; Store espera pelo valor a guardar (já no store buffer) antes de aceder a memória. Quando load e store acedem à mesma posição, então load precede store: trocá-los provoca WAR; store precede load: trocá-los provoca RAW. Trocar duas operações de store provoca WAW. Para detectar estas situações, é necessário conhecer os endereços de qualquer acesso a memória precedente. Condição suficiente: calcular os endereços efectivos por ordem e comparar (em paralelo) com os endereços nos buffers. c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 16/20

Algoritmo de Tomasulo ATom: Detalhes de funcionamento c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 17/20

Algoritmo de Tomasulo ATom: Processamento de ciclos Exemplo: Multiplicar elementos de um vector por um escalar (F2). Loop: L.D F0,0(R1) MUL.D F4,F0, S.D F4,0(R1) DADDUI R1,R1,-8 BNE R1,R2,Loop Se assumirmos que os saltos são previstos como tomados, a utilização de ER permite a execução concorrente de mais que uma iteração (duas, neste caso, conforme indicado na próxima folha). Assumindo que as multiplicações podem ser executadas em 4 ciclos (e os acessos a memória demoram 2), o sistema atinge um CPI próximo de 1. (Nota: A unidade inteira não é mostrada na tabela.) c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 18/20

Algoritmo de Tomasulo ATom: Processamento de ciclos (cont.) Status da instrução Instrução Iteração Emissão Execução Escrita L.D F0,0(R1) 1 MUL.D F4,F0,F2 1 S.D F0,0(R1) 1 L.D F0,0(R1) 2 MUL.D F4,F0,F2 2 S.D F0,0(R1) 2 Estações de reservas Nome Busy Op Vj Vk Qj Qk A Load1 S Load Regs[R1]+0 Load2 S Load Regs[R1]-8 Add1 N Add2 N Add3 N Mult1 S Mul Regs[F2] Load1 Mult2 S Mul Regs[F2] Load2 Store1 S Store Regs[R1] Mult1 Store2 S Store Regs[R1]-8 Mult2 Status dos registos F0 F2 F4 F6 F8 F10 F12... F30 Qi Load2 Mult2 Div c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 19/20

Algoritmo de Tomasulo Algoritmo de Tomasulo: Sumário Sequenciamento dinâmico permite obter muito bons desempenhos (desde que os saltos sejam bem previstos). Algoritmo de Tomasulo é particularmente favorável para arquitecturas: para as quais é difícil sequenciar instruções estaticamente; têm poucos registos; em que se pretende obter elevado desempenho sem compilação específica. Desvantagens do algoritmo de Tomasulo: complexidade: cada ER tem uma memória associativa e controlo sofisticado ; CDB limita o desempenho: múltiplos CDBs podem ser usados, mas complicam ainda mais a implementação. c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 20/20