Selecção de Instruções

Documentos relacionados
Organização e Arquitetura de Computadores I

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

Componentes do Computador e. aula 3. Profa. Débora Matos

Arquiteturas RISC. (Reduced Instructions Set Computers)

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

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

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

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

Modos de entrada/saída

Arquitetura de Computadores RISC x CISC. Gustavo Pinto Vilar

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

Linguagem de Montagem Funcionamento de CPU e Assembly Rudimentar

Introdução à Arquitetura de Computadores

Sequenciamento dinâmico

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

Aula 26: Arquiteturas RISC vs. CISC

Conjunto de Instruções e Arquitectura p.1

ALP Algoritmos e Programação. . Linguagens para Computadores

Geração de código intermediário. Novembro 2006

ARQUITETURA DE COMPUTADORES

Arquitecturas Alternativas. Pipelining Super-escalar VLIW IA-64

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

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

BARRAMENTO DO SISTEMA

Organização e Arquitetura de Computadores I

Programação de Sistemas

Figura 1 - O computador

Introdução aos Sistemas Operativos

Organização e Arquitetura de Computadores I

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

O Nível ISA. Modelo de programação Arquitecturas CISC e RISC Introdução ao IA-32 da Intel

MICROPROCESSADORES. Arquitectura do Conjunto de Instruções. Nuno Cavaco Gomes Horta. Universidade Técnica de Lisboa / Instituto Superior Técnico

Arquitectura de Computadores

Análises Geração RI (representação intermediária) Código Intermediário

RISC X CISC - Pipeline

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

Arquitetura de Computadores

Arquitetura de Computadores I

ARQUITECTURA DE COMPUTADORES

Arquitetura de Computadores I

Aula 14: Instruções e Seus Tipos

Organização e Arquitetura de Computadores I. de Computadores

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

Implementação de pipelines

5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS Os Programas de Avaliação

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

Introdução. introdução. tópicos. referência. INF1005 Programação I Prof. Hélio Lopes 8/7/12

Capítulo 3 Processadores de Propósito Geral: Software

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

Introdução à Organização de Computadores. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Organização e Arquitetura de Computadores. Hugo Barros @hugobarros.com.br

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

MODOS DE ENDEREÇAMENTO

Introdução à Organização de Computadores. Execução de Programas Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Software. Professora Milene Selbach Silveira Prof. Celso Maciel da Costa Faculdade de Informática - PUCRS

ULA Sinais de Controle enviados pela UC

Memória. Espaço de endereçamento de um programa Endereços reais e virtuais Recolocação dinâmica Segmentação

Edeyson Andrade Gomes

Algumas características especiais

Arquitetura de Computadores

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

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

INF1004 e INF1005: Programação 1. Introdução à Programação

Introdução. INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br

Geração de Back-end LLVM Para o Processador r-vex

Linguagem de Montagem 2. Operações e Operandos

Web site. Objetivos gerais. Introdução. Profa. Patrícia Dockhorn Costa

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

Arquitectura de Computadores RECUPERAÇÃO DO 1º TESTE

Arquitetura de processadores: RISC e CISC

Arquitetura de Computadores. Ivan Saraiva Silva

Protótipo de Gerador de Código Executável no Ambiente FURBOL

Processadores BIP. Conforme Morandi et al (2006), durante o desenvolvimento do BIP, foram definidas três diretrizes de projeto:

COMPILADORES E INTERPRETADORES

Análise de complexidade

Índice. Tudo! (datapath de um ciclo)

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

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:

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES ARQUITETURAS RISC E CISC. Prof. Dr. Daniel Caetano

Sistemas Computacionais II Professor Frederico Sauer

Universidade Federal de Santa Catarina Departamento de Informática e Estatística Bacharelado em Ciências da Computação

Caminho dos Dados e Atrasos

O modelo do computador

ARQUITETURA DE COMPUTADORES

Previsão do Desempenho. AC1 13ª aula Previsão do Desempenho 1

A FÓRMULA DE CONVERSÃO ENTRE AS UNIDADES É: F = 1.8 C

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

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

O Processador: Caminho de Dados e Controle

RISC simples. Aula de Março de

UNIVERSIDADE DO OESTE DE SANTA CATARINA CAMPUS DE SÃO MIGUEL DO OESTE

Estrutura do tema ISC

Organização de Computadores Hardware

Microarquiteturas Avançadas

Primeiro Curso de Programação em C 3 a Edição

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

RISC - Reduced Instruction Set Computer

Geração e Otimização de Código

Resolução de problemas e desenvolvimento de algoritmos

Computadores de Programação (MAB353)

Transcrição:

1 Selecção de Instruções Compilação 2003/04 2004 Salvador Abreu

2 Resumo Objectivo: A partir da IR, Gerar código para uma arquitectura concreta máquinas CISC máquinas load/store (RISC) Ainda não resolver todo o problema Meios: omitir alocação de registos deixar as optimizações de fora Emparelhamento de padrões com a árvore de IR

3 Padrões Ideia emparelhar os padrões correspondentes às instruções da máquina com os que ocorrem na IR. Requisito especificação detalhada da arquitectura objecto registos (temporários) organização de memória instruções casos especiais

A Arquitectura Jouette Baseada em arquitecturas reais load/store (ala RISC) movimentos entre registos e memória operações só sobre registos muitos registos um só tipo de dados inteiro de X bits (tamanho fixo) Compilação 2003/04 T12 4

5 Instruções Nome Semântica Padrões - Ri temp(_) ADD Ri = Rj + Rk _+_ MUL Ri = Rj * Rk _*_ SUB Ri = Rj Rk _-_ DIV Ri = Rj / Rk _/_ ADDI Ri = Rj + a _+const(_) const(_)+_ SUBI Ri = Rj a _-const(_) LOAD Ri = M[Rj + c] mem(_+const(_)) mem(const(_)+_) mem(const(_)) STORE M[Rj + c] = Ri move(mem(_,const(_)), _) etc. MOVEM M[Rj] = M[Ri] move(mem(_), mem(_))

6 Exemplo Um mesmo padrão IR pode ser preenchido com diversas sequências de código: move mem mem + + mem * temp(fp) const(x) load R1 = M[fp + a] addi R2 = R0 + 4 mul R2 = R1 * R2 add R1 = R1 + R2 load R2 = M[fp + x] store M[R1 + 0] = R2 + temp(i) const(4) temp(fp) const(a)

7 Exemplo Outra sequência com a mesma semântica: move mem mem + + mem * temp(fp) const(x) load R1 = M[fp + a] addi R2 = R0 + 4 mul R2 = R1 * R2 add R1 = R1 + R2 addi R2 = fp + x movem M[R1] = M[R2] + temp(i) const(4) temp(fp) const(a)

8 Mural: tiling Um mural (o quadro feito pela árvore IR) pode ser preenchido com azulejos o azulejo é a instrução, na sua representação de fragmento de IR o objectivo é cobrir integralmente o programa (ie. o mural ) Casos particulares fazem aparecer constantes particulares, p/ex. 0

9 Tilings optimos e optimais Associar um custo a cada instrução optimo um tiling com custo mínimo optimal um tiling com custo que não pode ser minorado juntando dois azulejos num maior modelo simplista custo duma instrução depende do contexto (p/ex pipelining)

10 Algoritmos de Selecção de Instruções Maximal munch mais simples top-down para cada sub-árvore IR ainda não coberta: encontrar a instrução que engole (daí o nome) o maior número de nós IR marcar as suas sub-árvores ainda não cobertas para a próxima passagem deve garantir cobertura de todos os nós elementares da IR com algum padrão de instrução, para evitar o fracasso do processo.

11 Algoritmos de Selecção de Instruções Programação Dinâmica mais complexa bottom-up cálculo com base em custos de sub-árvores é escolhido o tiling que oferece o menor custo total, dado por: custo do nó soma dos custos das sub-árvores

12 Algoritmos de Selecção de Gramáticas de Árvores Instruções Especificam padrões de árvore e as instruções associadas Diversos tipos de gramática dão diversos tipos de algoritmo: bottom-up (ala LR) top-down (ala LL, DCG) Algoritmos podem ser não-determinísticos aumenta expressividade permite combinar estrutura da árvore condições arbitrárias

13 Máquinas reais CISC e RISC Máquinas RISC típicas muitos registos (32 ou múltiplos) registos indiferenciados (inteiros/endereços) operações com 3 operandos (Rd = Rs OP Rt) instruções load/store com M[R+const] instruções de tamanho fixo um só resultado/efeito por instrução T(design) > 1990

14 Máquinas reais CISC e RISC Máquinas CISC... poucos registos (entre 5/6 e 8 ou 16 no máximo) registos classificados, com usos particulares ou implícitos operações que podem aceder à memória, geralmente com muitos modos de endereçamento operações com 2 operandos (Rd( = Rd OP Rs) instruções de tamanho variável instruções com efeitos secundários (p/ex modos auto- incremento ) T(design) < 1990

15 Geração de Código para CISC (1) Poucos registos continuar como anteriormente e assumir que o alocador de registos irá funcionar bem Classes de registos (especializadas) decompor as operações genéricas em múltiplas, assumindo que o alocador de registos irá suprimir movimentos evitáveis Operações com 2 operandos: desdobrar com um move adicional

16 Geração de Código para CISC (2) Operações com operandos em memória pouco pertinente código que movimenta entre a memória e os registos, opera sobre os registos e volta a movimentar não é mais lento que código que opera sobre a memória, embora possa ser mais comprido. Modos de endereçamento como anteriormente mais compactos mas não mais eficientes

17 Geração de Código para CISC (3) Operações com efeitos secundários difíceis de enquadrar na árvore de IR várias abordagens possíveis: ignorar a sua existência (não gerar esse código!) apanhar casos particulares usar um modelo de selecção de instruções diferente, p/ex um baseado em padrões dum DAG de IR em vez duma árvore de IR