MC723: Laboratório de Projeto de Sistemas Computacionais

08/04: Entrega do Projeto 2 até o dia 14/05.

22/03: Entrega do Projeto 1 até o dia 02/04.

25/02: Não haverá aula no dia 19/03/2013.

25/02: Planilha de acompanhamento da disciplina com notas e informações sobre os grupos.

08/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 é:

  • David A. Patterson and John L. Hennessy. Computer Organization Design, The Hardware/Software Interface. Morgan Kaufmann
  • Sandro Rigo, Rodolfo Azevedo, Luiz Santos. Electronic System Level Design: An Open-Source Approach Springer, 2011
  • Linguagem SystemC. Existem livros na biblioteca sobre SystemC.
  • Linguagem ArchC (endereço alternativo).

Esta disciplina é composta por três projetos, a serem realizados durante o semestre. Os três projetos terão pesos iguais na composição da nota final.

Os projetos serão realizados em grupos de 3 a 5 participantes. 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 quartas, das 18h-19h, na sala 3 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 de relatórios parciais 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 computadores distintos.

Decisões de projeto: O que avaliar, como avaliar, que garantias este benchmark fornece, quais são as condições de contorno, etc.

Entregas: Este primeiro projeto tem uma exigência de acompanhamento mais de perto do professor, para auxiliar no desenvolvimento da metodologia. Espera-se dois relatórios parciais 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.
  • O segundo relatório, de até 3 páginas, deve ser entregue até duas semanas após o primeiro, já com resultados preliminares e uma descrição mais detalhada da metodologia seguida.
  • 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.

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: 02/04, durante o período da aula.

P2: Modelagem de processador em alto nível

Objetivo: Avaliar qual o impacto no desempenho de um processador ideal que os mecanismos arquiteturais/microarquiteturais têm. Começar com um processador que executa uma instrução por ciclo e analisar cada tipo de hazard que pode acontecer e seu impacto na execução de um programa.

Características gerais e motivação: Dado um simulador de processador MIPS, similar ao processador ao estudado em sala de aula. Este simulador é denominado comportamental pois apenas implementa os comportamentos das instruções, sem considerar nenhuma informação de temporização. Como considerar as informações de temporização relativas às interdependências de instruções e demais efeitos de implementação. Considere como implementação destino base um pipeline de 5 estágios, branch predictor, cache e, opcionalmente, um pipeline capaz de executar duas instruções independentes por vez.

Infraestrutura: Recomenda-se que todos utilizem o processador MIPS, o mesmo visto em sala de aula, utilizando o modelo em SystemC gerado pela linguagem ArchC (veja a bibliografia indicada e também um breve tutorial para MC723). SystemC é um conjunto de classes/templates em C++ para modelagem de hardware com suporte a temporização.

Decisões de projeto: Como cada uma das características descritas nos capítulos 4 e 5 do livro afetam o desempenho de um processador? Como você pode computar seu custo? Você precisa medir o tempo ou consegue computa-lo?

Critérios de avaliação:Clareza na definição das medidas/influência dos componentes na execução dos programas. Valores medidos. Veracidade dos números.

Não perca a oportunidade de aprender a usar um software de controle de versões (git, hg ou svn), depurador (experimente a versão gráfica ddd do gdb) e também um pouco mais de C++.

Entregas: Neste projeto, serão feitas apenas duas entregas:

  • A primeira é a especificação, em uma página, entregue impresso até o final da primeira aula, para comentários durante o período da aula pelo professor.
  • A segunda é o relatório final, de até 5 páginas, que deve conter todos os resultados do projeto e ser entregue antes da última aula do projeto, que terá a apresentação. Entrega para o dia 14/05.

P3: Modelagem de sistema computacional multi-processado

Objetivo: Montar e avaliar uma plataforma com múltiplos cores e incluir os componentes necessários para executar um software nesta plataforma. Sua plataforma final deve ter suporte a 8 cores e executar alguma atividade colaborativa entre eles para demonstrar que estão funcionando corretamente. Além disto ela também deve conter um periférico para acelerar a execução do seu software.

Características gerais e motivação: Hoje em dia é extremamente raro ter um equipamento com apenas um core. Além das tarefas de programar o software para explorar o paralelismo, o projetista do sistema tem ainda a necessidade de incluir as camadas de software necessárias para suportar a execução do hardware paralelo. Esta segunda parte é o foco deste projeto.

Infraestrutura: Você vai utilizar a ARP. (veja a bibliografia indicada e também um breve tutorial para MC723).

Critérios de avaliação:Clareza na definição das medidas/influência dos componentes na execução dos programas. Valores medidos. Veracidade dos números.

Não perca a oportunidade de aprender a usar um software de controle de versões (git, hg ou svn), depurador (experimente a versão gráfica ddd do gdb) e também um pouco mais de C++.

Entregas: Neste projeto, serão feitas apenas duas entregas:

  • A primeira é a especificação, em uma página, entregue impresso até o final da primeira aula, para comentários durante o período da aula pelo professor.
  • A segunda é o relatório final, de até 5 páginas, que deve conter todos os resultados do projeto e ser entregue antes da última aula do projeto, que terá a apresentação. Entrega para o dia 11/06.