Trabalho Implementação Microprocessador
Nesta página estão detalhados os procedimentos que devem ser seguidos para o desenvolvimento do Trabalho 1 da disciplina de Arquitetura de Computadores II. Este trabalho será desenvolvido ao longo do 2o. Bimestre deste semestre letivo e constituirá parte da nota final da disciplina. É fortemente recomendado que os estudantes acessem com freqüencia esta página para: esclarecer possíveis dúvidas, estar ciente do cronograma, estar a par de possíveis atualizações/alterações no trabalho.
Objetivos: Implementar, em duplas e utilizando a linguagem ArchC, um simulador para o processador ARM (Advanced RISC Machines) versão 9 (ARM9).
O que deve ser feito?
Implementar a especificação (mais próxima possível do modelo completo) do processador em ArchC.
Implementar, pelo menos, cinco programas (1 instruções aritméticas, 1 instruções de memória, 1 instruções de desvio condicional (sem loop), 1 loop, 1 instruções para chamadas a procedimentos) exemplo que testam diferentes características do processador.
Fornecer montador/linker para o processador.
Escrever relatório (máximo de 8 páginas) relatando o que foi realizado no trabalho.
Sugestão de metodologia para desenvolvimento do trabalho
Trabalho em grupo mas com forte viés colaborativo.
Entendimento da arquitetura ARM.
Determinação e implementação dos recursos da arquitetura e do conjunto de instruções (o conjunto de instruções ARM está aqui e o conjunto Thumb está aqui). O conjunto completo e detalhado das instruções ARM está aqui.
Implementação comportamental das instruções.
Testes de correção/desempenho da arquitetura
Definição/Configuração de um montador+linker para o processador
Qual o Cronograma ?
01/10: Atribuição e início do trabalho
22/10: 1o. Checkpoint: O horário da aula será dedicado para entrevistas/esclarecimentos de dúvidas com cada dupla sobre o andamento do trabalho. É esperado que cada dupla apresente a versão inicial da implementação da arquitetura, definições dos formatos das instruções e início da implementação do comportamento das instruções
05/11: 2o. Checkpoint: É esperado que cada dupla tenha finalizado a implementação do comportamento das instruções e apresente programas que utilizam os recursos (instruções) já implementados.
19/11: 3o. Checkpoint: Cada dupla deve apresentar a situação atual do trabalho: situação do simulador e ferramenta para geração/otimização de código. Será utilizada parte da aula.
26/11: Entrega de relatório com, não mais que 8 páginas, contendo as seguintes seções :
O que foi implementado.
O que faltou implementar.
A sintaxe para execução da ferramenta.
Bugs/Falhas detectados e não corrigidos.
Dificuldades encontradas durante o desenvolvimento do trabalho.
Conclusões.
Enviar o código fonte da ferramenta, o respectivo arquivo executável e programas de exemplo para execução.
Como será a avaliação?
A avaliação também constará das avaliações parciais dos checkpoints (cada checkpoint terá peso 1).
A nota do professor para o relatório entregue terá peso 3.
A avaliação final de todo o trabalho de acordo com a abrangência e versão alcançada (peso 4);
Bônus (peso 1.5): versão alcançada pelo simulador, organização e documentação do código, arquivo README, scripts para configuração e execução, clareza na explicação do relatório;
Dicas/Sugestões
Procure estudar a implementação dos modelos implementados e disponíveis na página da linguagem ArchC.
Inicie o trabalho o quanto antes. O tempo voa!
Documente o código. Isso ajudará a relembrar o que estava sendo feito no dia anterior e, principalmente, depurar o código em caso de bugs.
Retire as dúvidas quanto ao entendimento da sintaxe antes de implementá-la. Isso permitirá que a etapa de implementação não seja interrompida.
Perguntas frequentes:
P: Se faltar no dia do checkpoint, fica com 0?
R: Há duas possibilidades: 1) Se souber, previamente, que irá faltar em dia de checkpoint, a dupla deve avisar ao professor que irá agendar um horário anterior ao dia do checkpoint. 2) caso a falta seja devido a um imprevisto, a dupla deve procurar o professor e deve justificar a ausência e, após isso, o professor marcará um horário para a entrevista. Faltas sem justificativa, aí sim, terão 0 como nota do checkpoint.
P: Há possibilidade de adiar a entrega do trabalho por alguns dias?
R: Infelizmente, não. As datas de entrega estão no limite do aceitável. Trabalhos entregues fora do prazo correm o sério risco de não serem avaliados e, no melhor dos casos, serão avaliados mas os atrasos serão descontados no valor da nota.
P: O que devo privilegiar: implementar todo o conteúdo de uma etapa ou implementar todas as etapas?
R: Se não houver tempo hábil, é melhor implementar o mínimo necessário em uma etapa e partir para a próxima. A contribuição deste trabalho para vocês é justamente a experiência prática com relação a uma implementação de mais baixo nível dos processadores e de algoritmos para geração de código.
P: O que fazer em caso de dúvidas no entendimento do trabalho (recursos não disponíveis na linguagem ArchC, ausência de detalhes na atribuição das tarefas, etc.)?
R: Procure o professor o quanto antes: pessoalmente ou enviando mensagem eletrônica com subject: "Dúvidas: Trabalho1 – Tópicos Avançados". Nesse último caso, procure discorrer sucintamente a sua dúvida. Além disso, aproveite bem os encontros de checkpoint para retirar suas dúvidas, sugerir alterações na atribuição do trabalho, justificar suas escolhas. Isso contará na sua participação e dedicação do trabalho.
P: Como deve ser a saída do simulador?
R: O simulador que será entregue para avaliação não deverá ``fugir'' do formato de saída padrão do ArchC. É importante seguir a risca essa recomendação para que a avaliação de todos os trabalhos seja a mais coerente possível.
P: As notas serão as mesmas para os componentes da dupla?
R: Não. As entrevistas serão com a dupla mas a nota é individual. O fato de um membro da dupla faltar em dia de checkpoint não implica que a entrevista será cancelada. Por isso, é extremamente importante que ambos dividam o trabalho e, continuamente, atualizem-se quanto ao desenvolvimento do mesmo.
P: Estou tendo problemas com o outro componente da dupla. O que devo fazer?
R: Uma das motivações desta tarefa é justamente melhorar a habilidade de trabalho em grupo. Nesse sentido, a dupla deve conversar bastante, procurando resolver todos os conflitos que porventura possam surgir. Saber ouvir opiniões, discutir idéias educadamente, ceder sobre pontos de vistas e dividir tarefas é o que aprendemos de melhor em um trabalho em grupo. Certamente, cada membro pode contribuir positivamente para a nota do outro colega da dupla. Mas, caso um dos membros "desista" do trabalho, o outro membro pode continuar a implementação que o trabalho será avaliado levando isso em consideração.
P: Como saber que versão atribuir à minha implementação do simulador?
Models Road Map |
|||
Version |
Development Stage |
Benchmark |
Certifies that ... |
0.0.x |
Writing AC_ISA and AC_ARCH description |
— |
— |
0.1.0 |
AC_ARCH and AC_ISA declarations finished |
— |
All instructions are correctly decoded |
0.2.0 |
Instruction behavior description finished |
— |
Individual behaviors are working properly |
0.3.0 |
AC_ARCH and AC_ISA completed |
ACStone benchmark |
All programs passed successfully |
0.4.0 |
ABI design finished |
— |
Individual system calls are working properly |
0.5.0 |
Model description completed |
All selected programs passed successfully |
|
0.6.0 |
Testing ... |
MiBench |
All selected programs passed successfully |
0.7.0 |
Testing ... |
MiBench |
All selected programs passed successfully |
1.0.0 |
Final Test |
SPEC 2000 |
All selected programs passed successfully |
P: Se obter nota máxima em todos os itens da avaliação ficarei com 11.5?
R: Não. A nota máxima é 10! Além disso, esses pontos não são cumulativos.