MC723: Laboratório de Projeto de Sistemas Computacionais

07/05: Tabela de notas

26/02: Não perca das datas importantes do Calendário de graduação.

Aprimorar os conceitos aprendidos no curso de Projeto de Sistemas Computacionais. Reforçar conceitos de programação em grandes bases de código. Ao final desta disciplina, o aluno deverá ser capaz de:

  • Definir e usar um benchmark para avaliar o desempenho de sistemas computacionais, comparando o resultado de múltiplos equipamentos;
  • Modelar um processador em linguagem de alto nível, considerando informações de temporização e desempenho;
  • Modelar um sistema computacional multi-processado em linguagem de alto nível, considerando mecanismos de interconexão, periféricos e software a ser executado.

A bibliografia recomendada para as atividades desta disciplina é:

Esta disciplina é composta por três projetos, a serem realizados durante o semestre. A nota final será a média aritmética das notas dos três projetos.

Os projetos serão realizados em grupos em torno de, no máximo, 4 participantes (ajustados pelo tamanho da turma). A composição e o tamanho dos grupos serão definidos pelo professor.

Qualquer tentativa de fraude durante o semestre será punida até o limite da minha autoridade, incluindo nota zero na disciplina para todos os envolvidos.

Os atendimentos acontecerão às terças, das 14h-15h, na sala 3 do IC e às quintas, das 18h-19h, pelo monitor da disciplina (Tiago Falcão) na sala 361 do IC. Caso precise de atendimento em outro horário, basta combinar por email. Neste caso, envie o email já com uma sugestão de dia e horário para facilitar o atendimento.

Lembre-se que estarei em sala de aula durante todas as aulas do semestre.

Serão 3 projetos durante o semestre, cada um com 5 semanas para serem realizados. Os projetos devem ser realizados em grupo, onde todos os componentes do grupo devem estar cientes de todas as decisões tomadas, sendo capazes de justifica-las. Os projetos serão avaliados através de:

  • Relatório final entregue antes da última aula do período do projeto;
  • Apresentação de até 15 minutos que será feita na última aula do período do projeto. As respostas às perguntas serão consideradas nas notas;
  • Código fonte entregue antes da última aula do período do projeto;
  • Participação de cada aluno do grupo;
  • Entrega do roteiro conforme solicitado por projeto;

P1: Avaliação de desempenho

Objetivo: Desenvolver um benchmark com, ao menos, 5 componentes, para avaliar o desempenho de, ao menos, 5 equipamentos computacionais (ou parte deles) distintos.

Decisões de projeto: O que avaliar, como avaliar, que garantias este benchmark fornece, quais são as condições de contorno, metodologia, formas de medir o desempenho, escalabilidade, reprodutibilidade, etc. Exemplos de benchmarks para desempenho de processadores/computadores existentes: SPEC (procure a documentação do runspec, script que controla a execução), PARSEC (procure pela documentação do parsecmngt, script que controla a execução), CloudSuite, DaCapo, MediaBench, MiBench, MineBench, Rodinia, San Diego Vision Benchmark Suite, SPECWeb, SPECJBB, SPECJVM, Streamit Systench, TPC, NAS NPB, NAS OMP, HPCC, Mantevo benchmark suite, CSiBE.

Entregas: Este primeiro projeto tem uma exigência de acompanhamento mais de perto do professor, para auxiliar no desenvolvimento da metodologia. Espera-se um relatório parcial durante o período e um relatório final.

  • O primeiro dele contendo a metodologia a ser seguida, em uma página, entregue impresso até o final da primeira aula, para comentários durante o período da aula pelo professor. Este será o roteiro do experimento que será feito nas demais aulas pelo grupo. Aproveitem a oportunidade da aula para tirarem dúvidas. Este roteiro terá peso de 20% na nota do projeto.
  • O relatório final, de até 5 páginas, deve conter todos os resultados do projeto e ser entregue antes da última aula do projeto, que terá a apresentação. Este relatório terá peso de 80% na nota do projeto.

Critérios de avaliação: Clareza na definição dos critérios de avaliação de desempenho (O que você mediu? Como? Por que?). Capacidade de reproduzir os resultados obtidos nos computadores informados e também de adicionar novos computadores.

Relatório Final e Apresentação: 27/03, durante o período da aula.

Grupos formados para o projeto 1:

  • G1: Nicholas (103659), Ruan (104034), Thiago (104207), Yuri (107001)
  • G2: Daniel (11645), Matheus (118124), Victor (121400), Allan (134796)
  • G3: Antônio Carlos (134985), Gabriel (135801), Lucas (136640), Luis Fernando Antonioli (136710)
  • G4: Luis Fernando Villela (136734), Erick (139415), José (139553), Ulisses (140958)
  • G5: Eric (076624), Felipe (083499), Murilo (094236), Pedro (105542)
  • G6: Cristina (135368), Marcos (136823), Rogério (140922), Diego (119319)
  • G7: André (101510), Flávio (135749), Vinícius (084197), André (119098)
  • G8: Gabriel (116909), Rafael (118439), Fabio (138311), Gustavo (105046), Matheus (119920)

Horário das apresentações dos Grupos para o Projeto 1:

  • 8:00: vazio (se quiser chegar mais cedo, eu atenderei)
  • 8:30: G4
  • 9:00: G3
  • 9:30: G5
  • 10:00: G7
  • 10:30: G6
  • 11:00: G8
  • 11:30: G2
  • 12:00: G1

P2: Desempenho do Processador

Objetivo: Avaliar o impacto, no desempenho de um processador, de várias características arquiteturais estudadas na disciplina teórica.

Dentre as características a considerar, sugiro:

  • Tamanho do pipeline: 5, 7 e 13 estágios
  • Processador escalar vs superescalar
  • Hazard de dados e controle
  • Branch predictor (2 configurações distintas)
  • Cache (4 configurações distintas)

Como cada uma destas características afeta o desempenho do processador? (melhoram, pioram, deixam no mesmo patamar).

Vocês devem utilizar o simulador MIPS baseado em ArchC (veja um tutorial), disponível no IC-3 e também para instalação na sua casa/notebook. Este simulador executa programas, compilados para MIPS, uma instrução por vez. Faz parte da sua tarefa implementar toda a contabilidade para prever o comportamento de uma execução conforme as funcionalidades acima. Não é esperado nem desejado que você implemente a execução em pipeline, apenas que consiga contabilizar os efeitos do pipeline.

Critérios de avaliação: Capacidade de implementar a contabilidade das funcionalidades acima. Coerência entre os dados obtidos e um sistema real (os dados fazem sentido?). Capacidade de entender uma base grande de código e realizar pequenas modificações nela.

Roteiro: contendo a metodologia a ser seguida, em uma página, entregue impresso até o final da primeira aula, para comentários durante o período da aula pelo professor. Este será o roteiro do experimento que será feito nas demais aulas pelo grupo. Aproveitem a oportunidade da aula para tirarem dúvidas. Este roteiro terá peso de 20% na nota do projeto. Inclua, ao final do roteiro, o endereço do repositório git que seu grupo colocará o código de seu trabalho.

Relatório Final e Apresentação: 15/05, durante o período da aula. Enviar o relatório por email antes do período da aula. Limite de 5 páginas.

Ao final do seu relatório, inclua uma seção de resultados com uma tabela da forma:

Config. 1Config. 2...
Prog 1Prog 2Prog 3P1P2P3...
Evento 1
Evento 2
Evento 3
...
Ciclos
Tempo

onde Config. 1, Config. 2, ..., representam as configurações que você avaliou e Evento 1, Evento 2, ..., representam os eventos analisados. Ao final, totalize o número de ciclos e também a estimativa de tempo conforme conversado na entrega do Roteiro. Você deve ter as descrições e características das Configurações e Eventos no seu relatório. Note que não deve ser possível colocar todas as configurações nesta tabela, você terá que escolher as configurações mais relevantes. Como exemplo, depois de testar diversas configurações de cache, você pode escolher apenas uma (a melhor) e colocar nesta tabela, deixando os dados das outras apenas nas seções anteriores do relatório. Uma leitura da tabela na vertical, com alguns exemplos, pode ser: "Usando o processador com a configuração 1, descrita no texto, executando o programa xyz, utiliza X instruções (Evento 1), 200 cache misses (Evento 2), 150 hazzard de dados (Evento 3), ..., o que totaliza 1487 ciclos (número fictício) e equivale a um tempo de execução de 1ms."

Grupos formados para o projeto:

  • G1: Thiago (104207), Ulisses (140958), Eric (076624), Gabriel (116909), André (101510)
  • G2: Yuri (107001), Matheus (118124), Felipe (083499), Diego (119313)
  • G3: Victor (121400), Antonio (134985), Pedro (105542), Cristina (135368)
  • G4: Allan (134796), Gabriel (135801), Luiz Fernando (136734), Flávio (135749)
  • G5: Luís Fernando (136710), Erick (139415), Marcos (136823), Fabio (138311)
  • G6: Ruan (104034), José Ernesto (139553), Murilo (094236), Rogério (140922)
  • G7: Nicholas (103659), Daniel (116545), André (119098), Lucas (136640), Vinícius (084197)

Horário das apresentações dos Grupos:

  • 8:00: G1
  • 8:30: G7
  • 9:00: G3
  • 9:30: G4
  • 10:00: G2
  • 10:30: G5

P3: Sistemas Multicore e Offload para Hardware

Neste projeto, cada grupo deverá modelar um sistema com 8 cores, executar um software que tire proveito de paralelismo nele. Além disto, um módulo de hardware extra deverá ser criado (software offloading) para acelerar o desempenho deste software.

No roteiro, os grupos devem responder 3 perguntas:

  1. Como um processador multicore é iniciado?
  2. Como é feito (implementado) o controle de concorrência em hardware?
  3. Como escolher o melhor trecho de código para implementar em hardware?

Os grupos de até 4 participantes serão formados pelos próprios alunos e indicados no roteiro.

Deadline para o Roteiro: 29/05 até as 9h. Valendo nota: Você deve indicar, no roteiro, um repositório passível de ser clonado. Vamos verificar isto imediatamente após a entrega do roteiro.

Um repositório git contendo a plataforma base para desenvolvimento está em /home/staff/rodolfo/mc723/base_platform.git. Note que você não tem nem terá autorização para escrita neste repositório.

Relatório Final e Apresentação: 26/06, durante o período da aula. Enviar o relatório por email antes do período da aula. Limite de 5 páginas.

Grupos formados para o projeto:

  • G1: Cristina (135368), Flávio (135749), Gabriel (135801), Marcos (136823)
  • G2: Felipe (083499), Matheus (118124), Víctor (121400), Rogério (140922)
  • G3: Antonio (134985), Lucas (136640), Luiz Fernando (136734), Erick (139415)
  • G4: Vinicius (084197), Nicholas (103659), André (119098), Diego (119319), Fabio (138311)
  • G5: Eric (076624), Thiago (104207), Yuri (107001), Gabriel (116909)
  • G6: Allan (134796), Luís Fernando (136710), José Ernesto (139553), Ulisses (140958)
  • G7: Murilo (094236), Ruan (104034), Daniel (116545)
  • G8: André (101510), Pedro (105542)
DataAtividade
27/fevRoteiro do Projeto 1
06/mar
13/mar
20/mar
27/marEntrega do Projeto 1
03/abrNão haverá atividades
10/abrRoteiro do Projeto 2
17/abr
24/abr
01/maiNão haverá atividades
08/mai
15/maiEntrega do Projeto 2
22/mai
29/maiRoteiro do Projeto 3 (até as 9h)
05/junNão haverá atividades
12/jun
19/jun
26/junEntrega do Projeto 3