MC723 - Laboratório de projetos de sistemas computacionais

Avisos

23/06Submetam o relatório do trabalho através do Susy. No máximo 4 páginas.
07/05Montem seus grupos nesta planilha. Prazo para completarem os grupos: até 22/05
21/04Primeiras notas já no quadro de notas.
20/03Roteiro para instalação das ferramentas no seu computador.
11/03Endereço para envio do Relatório 1.
11/03Ainda estou com problemas para configurar o Susy. Aguardem mais detalhes sobre o envio das tarefas.
22/02Site colaborativo para dúvidas de alunos. Utilize tag mc723.
22/02Modelo de Relatório.
22/02 Datas importantes do calendário de graduação.

Objetivos

Aprimorar os conceitos aprendidos no curso de Projeto de Sistemas Computacionais através de exercícios e da modelagem de sistema(s) com processador(es) e periférico(s). Reforçar conceitos de programação em grandes bases de código.

Atividades

O semestre será dividido em duas partes: exercícios e projeto. Na parte de exercícios, cada aluno implementará pequenas atividades para garantir o entendimento de alguns tópicos básicos. Na segunda parte, cada grupo implementará um projeto que será definido até o meio do semestre.

Todas as entregas possuem uma carência automática de 24 horas, mas não aceitarei nenhuma justificativa de adiamento com base em fatos ocorridos nessas 24 horas. A carência não é válida se ultrapassar o limite do período letivo.

Bibliografia

Os documentos online, referenciados aqui, também estão disponíveis no meu homedir do IC3 (cd ~rodolfo/mc723).

Atendimento

Além do horário reservado para a disciplina, posso atender os alunos em vários horários alternativos, incluindo pedaços do horário do almoço e também horários no início da noite (até 20h).

Para facilitar seu atendimento, procure marcar por email para garantir que eu esteja disponível no dia. Envie uma mensagem sugerindo um horário de atendimento (olhe minha agenda atualizada). Se você quer me demonstrar algum código, procure tê-lo instalado na máquina ssh.students.ic.unicamp.br para que seja fácil demonstrar na hora (por favor, evite trazer algo para instalar na minha máquina, minha experiência diz que teremos grande trabalho para instalar).

Exercícios

Todos devem fazer, individualmente, cada um dos exercícios a seguir:

Os exercícios deverão ser realizados em sala de aula. Os exercícios são completamente individuais, inclusive a interpretação do enunciado. Em caso de dúvidas, procure exclusivamente o professor.

Trabalhos

Vejam os prazos de entrega no calendário:

Cada entrega deve ser na forma de um relatório com tamanho máximo de 2 páginas. Todos os grupos devem guardar o código definido por cada entrega para apresentação. Haverá um sorteio para as fases intermediárias e todos os grupos farão uma apresentação final diretamente com o professor.

O que é o trabalho

O trabalho consiste em montar uma plataforma com, no mínimo, 2 processadores e 2 periféricos novos (você pode utilizar todos os periféricos feitos até agora, mas terá que criar 2 novos). Esta plataforma deverá executar um software que deve tirar proveito do paralelismo oferecido. Vocês estão liberados para escolherem o programa, não deve ser nenhum dos programas utilizados no exercício 6. Sugestões de programas: os escolhidos no exercício 3, um dos programas do benchmark SPLASH-2, ou qualquer outro que você possa extrair paralelismo.

Os dois periféricos devem ser criados para aumentar o desempenho da plataforma. Utilize profilling para descobrir o que melhorar do código, migre para periféricos esta parte do código conforme o Exercício 4. Você não precisa utilizar as caches implementadas no Exercício 5.

Seu programa tem que trabalhar de forma paralela. Não vale executar a primeira parte no primeiro processador enquanto o segundo fica parado e, depois, executar a segunda parte no segundo processador enquanto o primeiro fica parado. Você, provavelmente, vai precisar do periférico de Lock, da implementação de barreiras, etc. Este periférico não conta como um dos dois solicitados pois já deve ter sido implementado no exercício 4.

Relatório da Especificação Detalhada

Este é o primeiro relatório onde o grupo deve descrever, em detalhes, o que será feito no trabalho. O limite é de 2 páginas, por isto, escreva apenas o necessário. Recomendo que siga as seguintes partes:

  1. Introdução: Apresente superficialmente o que é esperado de sua plataforma: funcionalidades, características, componentes, motivação para criá-la, um diagrama geral da plataforma pode ser útil para as seções futuras, etc
  2. Componentes da plataforma: Crie uma subseção para cada um dos componentes e indique questões relevantes sobre cada um deles. Ex.: protocolo de comunicação, interface com o software, restrições, forma de implementação (ao menos uma meta), etc.
  3. Software: O que será feito em software, como vai funcionar, o que vai ser executado em cada processador, etc.
  4. Espaço de endereçamento utilizado pelos periféricos.
  5. Alocação de atividades aos componentes do grupo: Se o grupo vai dividir as atividades, indicar quais ficarão com cada componente.

Formato da entrega

As entregas serão via Susy. Utilize a senha de um dos componentes do grupo (se dois componentes do grupo enviarem os arquivos, eu escolherei o que vou avaliar). Veja os detalhes da entrega abaixo e no calendário:

Qualquer entrega fora da especificação que não contar com um acordo prévio com o professor será terminantemente desconsiderada.

Calendário

28/02Sem aula
06/03Exercício 1
13/03
20/03Exercício 2
27/03
03/04Exercício 3
10/04
17/04Exercício 4
24/04
01/05Não haverá atividades
08/05Exercício 5
15/05Sem aula
22/05Exercício 6
29/05
05/06Trabalho
12/06Trabalho
19/06Trabalho
26/06Entrega dos Trabalhos e Avaliação Final