Aula 27: Seleção de Instruções

Data de Publicação

25/03/2026

Data de Modificação

08/03/2026

Objetivos

  • Otimizar a seleção de instruções usando Tree Covering.
  • Programação Dinâmica para custo mínimo.

Motivação

Seleção de instruções avançada é o ponto em que conhecimento da ISA (Instruction Set Architecture) é explorado ao máximo:

  • Aproveita instruções complexas (CISC) ou combinadas (MAC, FMA) para reduzir ciclos.
  • Explora instruções vetoriais e especializadas presentes em arquiteturas modernas de alto desempenho e embarcadas.

Conteúdo

Mapear cada operação da IR para uma sequência fixa de instruções (template) é simples mas subótimo. Seleção de instruções avançada usa o conhecimento da ISA: instruções compostas (ex.: multiply-accumulate), endereçamento e custos por instrução.

flowchart LR
  IR[IR / árvore] --> Tiles[Tiles padrões]
  Tiles --> Custo[Custo por tile]
  Custo --> Cover[Cobertura mínima]
  Cover --> Inst[Instruções]

Ex: Multiply-Accumulate (MAC) faz a + b*c em 1 ciclo. Se usarmos expansão simples, geramos um MUL e um ADD (2 ciclos + latência).

Tree Covering (Cobertura de Árvore)

  1. Representamos a expressão IR como uma árvore.
  2. Temos uma biblioteca de “Tiles” (padrões), onde cada tile corresponde a uma instrução de máquina e tem um custo.
  3. Objetivo: Cobrir a árvore inteira gastando o menor custo acumulado.

Isso é resolvido com programação dinâmica (ou geradores como BURS): custo ótimo para cada subárvore (bottom-up) e escolha do melhor tile na raiz.

Resumo

  • Tree covering: expressão como árvore; cada tile é um padrão que casa com uma subárvore e corresponde a uma instrução; objetivo é cobrir a árvore com custo total mínimo.
  • Permite explorar instruções complexas (MAC, FMA) e reduzir número de instruções e ciclos.

Referências

  • Aho et al. (2006); Cooper & Torczon (2011).

Materiais da aula

Última atualização: 08/03/2026

De volta ao topo