MO615/MC900 - Implementação de Linguagens II

Segundo Semestre de 2014

Turma A

Aulas Atendimento Avaliação Referências Notas
Avisos

14 de janeiro de 2015
As notas da P2, trabalho e médias/conceitos finias estão disponíveis aqui.

12 de dezembro de 2014
Maxiwell disponibilizou um conjunto de testes do SPEC para o projeto aqui.

11 de dezembro de 2014
Como haverá outra prova as 16h no dia 15/12 na mesma sala (322) que usaremos, a prova de MO615 será iniciada as 13h45 e será finalizada as 15:55.

11 de dezembro de 2014
Link para exercicios do livro do Michael Wolfe. Contribuição da Danielle.

9 de dezembro de 2014
Link para a errata do livro do Muchnick. Contribuição do Maycon.

06 de novembro de 2014
As notas da P1 estão disponíveis aqui. Os alunos que desejarem ver a prova corrigida deverão comparecer à minha sala (42) no dia 10/11 as 13h.

04 de novembro de 2014
Link preparado pelo Maxiwell com material sobre o projeto. Contém a especificação e material de apoio sobre LLVM.

15 de outubro de 2014
Uma sugestão de exercicios para a matéria, complementar aqueles encontrados no Aho e no Appel, pode ser encontrada aqui. Notem que alguns são sobre tópicos que ainda não foram cobertos.

21 de setembro de 2014
Os slides em PDF podem ser encontrados aqui.

21 de agosto de 2014
As primeiras duas aulas serão palestras sobre LLVM, um conjunto de ferramentas de compilação que usaremos no projeto do curso. As palestras serão ministradas pelo aluno de doutorado Maxiwell Garcia, que trabalha com LLVM em sua tese. Neste período eu estarei ausente para viagem a uma conferência.

21 de agosto de 2014
Usarei o sistema weblectures para disponibilizar vídeos das aulas como material de apoio. Acesse WebLectures para ter acesso aos vídeos. Procure pela disciplina MO615A(2s2014).

21 de agosto de 2014
· Página da disciplina no ar. Confira critérios de avaliação e calendário. Consulte frequentemente para avisos sobre o curso.

Aulas

Turma A
· Seg e Qua: 14-16h, sala IC-351.

Atendimento


· Atendimento extra-classe podem ser agendados por email com o professor.

Contato
· Prof. Sandro Rigo (sandro AT ic dot unicamp dot br)
· OBS.: Quando enviar um e-mail favor colocar no subject [MO615], caso contrário você corre sério risco de seu email ser filtrado como spam.

Programa

Técnicas avançadas usados no projeto de compiladores modernos. Análise de Fluxo de Dados, otimização de código, alocação de registradores, escalonamento de instruções, geração de código para arquiteturas paralelas.

Calendário

  • Setembro:
  • 01: Palestra: Ferramentas LLVM
  • 03: Palestra: Representação Intermediária LLVM
  • 08: Não haverá aula
  • 10: Blocos Básicos, CFG, DAG
  • 15: Conceitos básicos de otimização
  • 17: Análise de Fluxo de Dados, Definições Alcançantes (Reaching Definitions)
  • 22: Expressões Disponíveis, Análise de Longevidade
  • 29: Análise de Longevidade, Alocação Global de Registradores
  • Outubro:
  • 01: Alocação Global de Registradores
  • 06: Otimizações de código
  • 08: PRE - Partial Redundancy Elimination
  • 13: Revisão
  • 15: Dúvidas e exercícios
  • 20/10: Prova 1
  • 22: Dúvidas sobre o projeto
  • 27: Feriado
  • 29: Laços no CFG. Dominadores, dominador imediato, árvore de dominadores, laços naturais, pre-headers, CFG redutíveis, laços aninhados
  • 30: Avaliação de Cursos da Graduação
  • Novembro:
  • 03: Invariantes no laço, detecção de variáveis de indução, Strength reduction, eliminação de variáveis de indução.
  • 05: Transformações em laços (cont.): loop peeling, loop splitting, loop fusion, loop fission, loop interchanging
  • 10: Seleção de instruções
  • 12: Escalonamento de instruções. Dependência de dados. Branch scheduling
  • 17: Escalonamento de instruções. List scheduling e trace scheduling
  • 19: Escalonamento de instruções. Software Pipelining
  • 24: A forma SSA
  • 26: Duvidas sobre o trabalho
  • Dezembro:
  • 01: Paralelismo
  • 03: Paralelismo
  • 08: Feriado
  • 10: Exercicios
  • 15/12: Prova 2
  • 17/12: Entrega e Apresentação do Projeto

Avaliação

Avaliação
A avaliação será baseada em duas provas teóricas mais um Trabalho de implementação. A média ponderada (MP) seguirá os seguintes pesos: Prova 1 (35%), Prova 2 (40%) e Trabalho (25%). O trabalho será sobre otimização de código usando o compilador LLVM.
Conceitos Finais para MO615: D se MP < 5.0 ; C se 5.0 <= MP <=6.9; B se 7.0 <= MP < 8.5; A se MP >= 8.5
Para MC900: Média Final (MF) = MP

Fraudes
Qualquer tentativa de fraude nas avaliações implicará em ZERO na nota correspondente para todos os envolvidos.

Referências Principais

Notas de Aula

Material de apoio

  • Aho, Sethi and Ullman. Compilers: Principles, techniques and tools. 2nd Edition. Addison-Wesley.
  • Steven S. Muchnick. Advanced Compiler Design and Implementation. Morgan Kaufmann
  • Michael Wolfe. High Performance Compilers for Parallel Computing.
  • Andrew Appel. Modern Compiler Implementation in Java. Second Edition. Cambridge