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:
A bibliografia recomendada para as atividades desta disciplina é:
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:
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.
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.
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:
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: