• Nenhum resultado encontrado

Selecção de Instruções

N/A
N/A
Protected

Academic year: 2021

Share "Selecção de Instruções"

Copied!
17
0
0

Texto

(1)

1 1 Compilação – 2003/04 Compilação – 2003/04 T12T12

Selecção de Instruções

Selecção de Instruções

Compilação 2003/04 ©2004 Salvador Abreu

(2)

2 2 Compilação – 2003/04 Compilação – 2003/04 T12T12

Resumo

Resumo

Objectivo:

Objectivo:

– A partir da IR,A partir da IR,

– Gerar código para uma arquitectura concretaGerar código para uma arquitectura concreta

● máquinas CISCmáquinas CISC

● máquinas load/store (RISC)máquinas load/store (RISC)

– Ainda não resolver Ainda não resolver todotodo o problema o problema

● omitir alocação de registosomitir alocação de registos

● deixar as optimizações de foradeixar as optimizações de fora

Meios:

Meios:

(3)

3 3 Compilação – 2003/04 Compilação – 2003/04 T12T12

Padrões

Padrões

Ideia

Ideia

– emparelhar os padrões correspondentes às instruções emparelhar os padrões correspondentes às instruções

da máquina com os que ocorrem na IR.

da máquina com os que ocorrem na IR.

Requisito

Requisito

– especificação detalhada da arquitectura objectoespecificação detalhada da arquitectura objecto

● registos (temporários)registos (temporários) ● organização de memóriaorganização de memória ● instruçõesinstruções

(4)

4 4 Compilação – 2003/04

Compilação – 2003/04 T12T12

A Arquitectura

A Arquitectura

Jouette

Jouette

Baseada em arquitecturas reais

Baseada em arquitecturas reais

– load/store (ala RISC)load/store (ala RISC)

● movimentos entre registos e memóriamovimentos entre registos e memória ● operações só sobre registosoperações só sobre registos

– muitos registosmuitos registos

– um só tipo de dadosum só tipo de dados

(5)

5 5 Compilação – 2003/04 Compilação – 2003/04 T12T12

Instruções

Instruções

Nome

Nome SemânticaSemântica PadrõesPadrõ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.

(6)

6 6 Compilação – 2003/04 Compilação – 2003/04 T12T12

Exemplo

Exemplo

Um mesmo padrão IR pode ser “preenchido” com

Um mesmo padrão IR pode ser “preenchido” com

diversas sequências de código:

diversas sequências de código:

move mem mem + + temp(fp) const(x) mem * temp(i) const(4) + temp(fp) const(a) 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

(7)

7 7 Compilação – 2003/04 Compilação – 2003/04 T12T12

Exemplo

Exemplo

Outra sequência com a mesma semântica:

Outra sequência com a mesma semântica:

move mem mem + + temp(fp) const(x) mem * temp(i) const(4) + temp(fp) const(a) 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]

(8)

8 8 Compilação – 2003/04

Compilação – 2003/04 T12T12

Mural: “tiling”

Mural: “tiling”

Um “mural” (o “quadro” feito pela árvore IR) pode

Um “mural” (o “quadro” feito pela árvore IR) pode

ser “preenchido” com “azulejos”

ser “preenchido” com “azulejos”

– o “azulejo” é a instrução, na sua representação de o “azulejo” é a instrução, na sua representação de

fragmento de IR

fragmento de IR

– o objectivo é cobrir integralmente o programa (ie. o o objectivo é cobrir integralmente o programa (ie. o

“mural”)

“mural”)

Casos particulares

Casos particulares

(9)

9 9 Compilação – 2003/04

Compilação – 2003/04 T12T12

Tilings optimos e optimais

Tilings optimos e optimais

Associar um

Associar um

custo

custo

a cada instrução

a cada instrução

optimo

optimo

– um tiling com custo mínimoum tiling com custo mínimo

optimal

optimal

– um tiling com custo que não pode ser minorado um tiling com custo que não pode ser minorado

juntando dois azulejos num maior

juntando dois azulejos num maior

modelo simplista

modelo simplista

– custo duma instrução depende do contexto (p/ex custo duma instrução depende do contexto (p/ex

pipelining)

(10)

10 10 Compilação – 2003/04

Compilação – 2003/04 T12T12

Algoritmos de Selecção de Instruções

Algoritmos de Selecção de Instruções

Maximal munch”

Maximal munch”

– mais simplesmais simples – top-downtop-down

– para cada sub-árvore IR ainda não coberta:para cada sub-árvore IR ainda não coberta:

● encontrar a instrução que “engole” (daí o nome) o maior encontrar a instrução que “engole” (daí o nome) o maior

número de nós IR

número de nós IR

● marcar as suas sub-árvores ainda não cobertas para a marcar as suas sub-árvores ainda não cobertas para a

próxima passagem

próxima passagem

– deve garantir cobertura de todos os nós elementares deve garantir cobertura de todos os nós elementares

da IR com

da IR com algumalgum padrão de instrução, para evitar o padrão de instrução, para evitar o fracasso do processo.

(11)

11 11 Compilação – 2003/04

Compilação – 2003/04 T12T12

Algoritmos de Selecção de Instruções

Algoritmos de Selecção de Instruções

Programação Dinâmica

Programação Dinâmica

– mais complexamais complexa – bottom-upbottom-up

– cálculo com base em cálculo com base em custoscustos de sub-árvores de sub-árvores

– é escolhido o “tiling” que oferece o é escolhido o “tiling” que oferece o menormenor custo total, custo total,

dado por:

dado por:

● custo do nócusto do nó

(12)

12 12 Compilação – 2003/04

Compilação – 2003/04 T12T12

Algoritmos de Selecção de

Algoritmos de Selecção de

Instruções

Instruções

Gramáticas de Árvores

Gramáticas de Árvores

– Especificam padrões de árvore e as instruções Especificam padrões de árvore e as instruções

associadas

associadas

– Diversos tipos de gramática dão diversos tipos de Diversos tipos de gramática dão diversos tipos de

algoritmo:

algoritmo:

● bottom-up (ala LR)bottom-up (ala LR)

● top-down (ala LL, DCG)top-down (ala LL, DCG)

– Algoritmos podem ser não-determinísticosAlgoritmos podem ser não-determinísticos

● aumenta expressividadeaumenta expressividade ● permite combinarpermite combinar

– estrutura da árvoreestrutura da árvore – condições arbitráriascondições arbitrárias

(13)

13 13 Compilação – 2003/04

Compilação – 2003/04 T12T12

Máquinas “reais” CISC e RISC

Máquinas “reais” CISC e RISC

Máquinas RISC típicas

Máquinas RISC típicas

– ““muitos” registos (32 ou múltiplos)muitos” registos (32 ou múltiplos)

– registos indiferenciados (inteiros/endereços)registos indiferenciados (inteiros/endereços) – operações com 3 operandos (Rd = Rs OP Rt)operações com 3 operandos (Rd = Rs OP Rt) – instruções load/store com M[R+const]instruções load/store com M[R+const]

– instruções de tamanho fixoinstruções de tamanho fixo

– um só resultado/efeito por instruçãoum só resultado/efeito por instrução

(14)

14 14 Compilação – 2003/04

Compilação – 2003/04 T12T12

Máquinas “reais” CISC e RISC

Máquinas “reais” CISC e RISC

Máquinas CISC...

Máquinas CISC...

– ““poucos” registos (entre 5/6 e 8 ou 16 no máximo)poucos” registos (entre 5/6 e 8 ou 16 no máximo) – registos classificados, com usos particulares ou registos classificados, com usos particulares ou

implícitos

implícitos

– operações que podem aceder à memória, geralmente operações que podem aceder à memória, geralmente

com muitos “modos de endereçamento”

com muitos “modos de endereçamento”

– operações com 2 operandos (operações com 2 operandos (RdRd = = RdRd OP Rs) OP Rs) – instruções de tamanho variávelinstruções de tamanho variável

– instruções com efeitos secundários (p/ex modos “auto-instruções com efeitos secundários (p/ex modos

“auto-incremento”)

incremento”)

(15)

15 15 Compilação – 2003/04

Compilação – 2003/04 T12T12

Geração de Código para CISC (1)

Geração de Código para CISC (1)

Poucos registos

Poucos registos

– continuar como anteriormente e assumir que o continuar como anteriormente e assumir que o

alocador de registos irá funcionar “bem”

alocador de registos irá funcionar “bem”

Classes de registos (especializadas)

Classes de registos (especializadas)

– decompor as operações “genéricas” em múltiplas, decompor as operações “genéricas” em múltiplas,

assumindo que o alocador de registos irá suprimir

assumindo que o alocador de registos irá suprimir

movimentos evitáveis

movimentos evitáveis

Operações com 2 operandos:

Operações com 2 operandos:

(16)

16 16 Compilação – 2003/04

Compilação – 2003/04 T12T12

Geração de Código para CISC (2)

Geração de Código para CISC (2)

Operações com operandos em memória

Operações com operandos em memória

– pouco pertinentepouco pertinente

– código que movimenta entre a memória e os registos, código que movimenta entre a memória e os registos,

opera sobre os registos e volta a movimentar não é

opera sobre os registos e volta a movimentar não é

mais lento que código que opera sobre a memória,

mais lento que código que opera sobre a memória,

embora possa ser mais comprido.

embora possa ser mais comprido.

Modos de endereçamento

Modos de endereçamento

– como anteriormentecomo anteriormente

(17)

17 17 Compilação – 2003/04

Compilação – 2003/04 T12T12

Geração de Código para CISC (3)

Geração de Código para CISC (3)

Operações com efeitos secundários

Operações com efeitos secundários

– difíceis de enquadrar na árvore de IRdifíceis de enquadrar na árvore de IR – várias abordagens possíveis:várias abordagens possíveis:

● ignorar a sua existência (não gerar esse código!)ignorar a sua existência (não gerar esse código!) ● ““apanhar” casos particularesapanhar” casos particulares

● usar um modelo de selecção de instruções diferente, p/ex um 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

baseado em padrões dum DAG de IR em vez duma árvore

de IR

Referências

Documentos relacionados

As variedades com maior desempenho relativo foram a testemunha AL Avaré, seguida pelas variedades 5, 4, 1, 2, 3 e Ipanema, todas com produtividade acima da média.. Dentre as

Ficam, portanto, excluídas todas as publicações cuja finalidade seja unicamente a promoção/difusão de obra arquitectónica (própria ou de terceiros), sem que haja algum tipo

Acresce que, conforme será melhor referido adiante, foi recolhida prova de que o arguido não apenas utilizou a "Barden Assets LLC" como empresa de fachada para o exercício

Assumimos o compromisso de não portar nem utilizar, nem permitir que o MENOR porte ou utilize, dentro das áreas onde serão realizados os JCV, nenhum tipo de material ou objeto

outra Igreja, instituição ou autoridade denominacional, e reconhece como seu único cabeça e suprema autoridade somente a Jesus Cristo, e para seu governo em matéria de

Dockrillia linguiformis (mounted on cork oak) Australia 20,00 € C FS Yes. Dockrillia mortii (mounted on cork oak) Australia 20,00 € C

Para Karine Gomes (2016) “O grande espirito da cibercultura é o hacking (ação originária feita pelos hackers) que é transgredir, desviar e apropriar das

São fornecidos junto com o equipamento: Conjunto de células conforme modelo para ensaios de adensamento em corpos de prova com 20, 40, 60 e 80 cm² ou 20, 40, 50 e 100 cm² de área,