- ICEI
Transcrição
- ICEI
WEAC 2011 Workshop sobre Educação em Arquitetura de Computadores APRESENTAÇÃO O Workshop sobre Educação em Arquitetura de Computadores (WEAC) é um evento promovido pela comissão especial em Arquitetura de Computadores e Processamento de Alto Desempenho da Sociedade Brasileira de Computação (SBC). Em sua sexta edição, o WEAC 2011 conta com 5 artigos distribuídos em duas sessões técnicas. Destaca-se o empenho do Comitê de Programa durante o processo de avaliação. Cada artigo recebeu 3 avaliações que consideraram tanto o mérito técnico como a inserção nos tópicos de interesse do evento. Nesta edição, o WEAC promove um painel sobre o livro “Arquitetura de Computadores: educação, ensino e aprendizado”, cujo objetivo é discutir a aplicação do livro e de seus capítulos em disciplinas da graduação e pós-graduação. O WEAC promove também um grupo de discussão sobre a Revista Eletrônica de Educação em Arquitetura de Computadores (REEAC). O objetivo é a criação de um fluxo contínuo de submissões promovendo a divulgação de novas idéias sobre educação em Arquitetura de Computadores. Tenham todos um excelente workshop. Henrique Cota de Freitas Coordenação do WEAC 2011 Vitória, 28 de outubro de 2011 WEAC 2011 Workshop sobre Educação em Arquitetura de Computadores Coordenação do WEAC 2011 Henrique Cota de Freitas (PUC Minas) Comitê de Programa do WEAC 2011 Carlos Augusto Paiva da Silva Martins (PUC Minas) Cesar Albenes Zeferino (UNIVALI) Cesar De Rose (PUCRS) Dilma M da Silva (IBM – USA) Edil Fernandes (UFRJ) Edson Midorikawa (USP) Eduardo Marques (USP) Edward David Moreno (UFS) Gabriel Pereira da Silva (UFRJ) Henrique Cota de Freitas (PUC Minas) Ivan Saraiva Silva (UFPI) Joao Angelo Martini (UEM) Manoel Eusébio de Lima (UFPE) Maurício Pilla (UFPEL) Nahri Moreano (UFMS) Philippe Olivier Alexandre Navaux (UFRGS) Rafael dos Santos (CEITEC) Rafael Dueire Lins (UFPE) Raimundo Barreto (UFAM) Ricardo Santos Ferreira (UFV) Roberto A Hexsel (UFPR) Rodolfo Jardim de Azevedo (UNICAMP) Romanelli Lodron Zuim (PUC Minas) Ronaldo Augusto de Lara Gonçalves (UEM) Sandro Neves Soares (UCS) Sandro Rigo (UNICAMP) Sérgio Takeo Kofuji (USP) SUMÁRIO Metodologia de Ensino Orientada a Projetos e Criação de Material Didático aplicada ao Projeto de Processadores Ricardo Duarte (UFMG), Pedro Donoso-Garcia (UFMG) 1 Simuladores de Memória Cache, um Estudo Comparativo Direcionado ao Ensino Matheus Xavier (IFCE), Jardel Rodrigues (IFCE), Otávio Júnior (IFCE) 7 Extensão do Ptolemy para o ensino de Organização e Arquitetura de Computadores André Torres (UFPB), Alisson Brito (UFPB) 13 Arquitetura de Computadores em uma Simples Folha de Papel Ricardo Ferreira (UFV) 19 BIP IV: Especificação e Suporte na Ferramenta Bipide Paulo Rech (UNIVALI), Paulo Vieira (UNIVALI), Cesar Zeferino (UNIVALI), André Raabe (UNIVALI) 25 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) Metodologia de Ensino Orientada a Projetos e Criação de Material Didático aplicada ao Projeto de Processadores Ricardo de Oliveira Duarte, Pedro Francisco Donoso Garcia Depto. de Engenharia Eletrônica – Escola de Engenharia Universidade Federal de Minas Gerais Av. Antônio Carlos, 6627 – Campus da Pampulha – CEP 31.270-901 – Belo Horizonte, MG ([email protected], [email protected]) ensino é a forma como os alunos propõem a solução para um projeto em Engenharia enunciado, por meio dos conhecimentos adquiridos e na integração deles com outros conhecimentos. A partir da identificação dos requisitos mínimos determinados pelo projeto proposto pelo professor, inicia-se o fracionamento do projeto em etapas, que necessita de profundo entendimento de conceitos, análise e técnicas envolvidas na sua solução. O aluno é incentivado a construir seu próprio aprendizado estudando os conceitos em material didático cuidadosamente desenvolvido para esse fim e de outros disponibilizados, para a realização de sua própria solução da situação-problema proposta. O aluno é orientado a definir, documentar, implementar seu próprio projeto e testá-lo em laboratório. O professor atua como orientador das atividades propostas e trabalha como ator facilitador da construção do conhecimento de cada estudante, esclarecendo dúvidas sobre seus projetos, sugerindo alternativas de projeto e referências bibliográficas para o desenvolvimento das soluções, além de avaliar o aprendizado e o envolvimento do aluno no projeto. Essa metodologia de ensino já vem sendo empregada em algumas disciplinas do curso de Engenharia Elétrica e de Engenharia de Controle e Automação, mas especificamente nas disciplinas de laboratório de Eletrônica I, Eletrônica de Potência e Controle I na UFMG desde 2006. Conforme observa Donoso-Garcia, professor da disciplina de laboratório de Eletrônica I, “tal abordagem no âmbito da Engenharia se aproxima muito do modus operandis, encontrado em diversas indústrias no desenvolvimento de novos produtos tecnológicos” [2]. A partir de uma especificação parcial de um conjunto de instruções e requisitos da arquitetura, o aluno é convidado a envolver-se ativamente com o processo de criação da sua própria solução. O desenvolvimento do processador é realizado seguindo orientações gerais passadas pelo professor da disciplina. Como o aluno é responsável por suas próprias decisões de projeto, isso faz com que o seu aprendizado se torne mais agradável, estimulante e próximo da realidade Resumo Este artigo descreve uma experiência de produção de material didático para o ensino do projeto de processadores para uma disciplina teórica e prática conhecida por Sistemas, Processadores e Periféricos obrigatória aos cursos de Graduação em Engenharia Elétrica, Engenharia de Controle e Automação e Engenharia de Sistemas da UFMG. A construção de materiais didáticos desenvolvidos para essa disciplina segue diretrizes encontradas em metodologias ativas de ensino orientadas a projetos. É considerada uma proposta para atividades de laboratório, motivando os alunos a adquirir e construir seu próprio conhecimento através da auto-aprendizagem com materiais didáticos desenvolvidos especificamente para este fim. Os alunos tomam decisões de projeto e apresentam suas próprias soluções, ao invés da simples repetição de tarefas pré-determinadas encontradas em metodologias de ensino práticas baseadas em guias de aula. Os resultados observados são o aumento da motivação, do aprendizado e da participação dos alunos nas aulas e atividades propostas. 1. Introdução Este artigo trata do relato de caso da aplicação da metodologia de Ensino Orientado a Projetos e o desenvolvimento de material didático para uma disciplina prática de laboratório cujo nome é Sistemas, Processadores e Periféricos (SPP). Essa disciplina é obrigatória aos cursos de Engenharia Elétrica, Engenharia de Controle e Automação e Engenharia de Sistemas na UFMG, onde o aprendizado do projeto de processadores é um dos objetivos. O material didático desenvolvido foi norteado pela metodologia de ensino que tem seus princípios inspirados na metodologia conhecida como Problem Based Learning – PBL, amplamente divulgada em literatura [1]. O elemento chave dessa metodologia de 1 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) enfrentada na vida profissional de um engenheiro. Para que isso se torne uma realidade, um conjunto de objetos multimidiáticos, enfatizando os conceitos e a base teórica necessária ao desenvolvimento da situação-problema deve ser desenvolvido e apresentado ao aluno no início das atividades da disciplina. O enfoque desse trabalho concentra-se no relato de um caso de aplicação de uma metodologia de ensino orientada a projetos e a criação do material didático voltado ao projeto de processadores nas aulas práticas da disciplina SPP. A abordagem de ensino orientada a projetos possibilita a valorização das habilidades e competências individuais de cada aluno e também estimula o trabalho em grupo, pois implica na constante troca de experiências dos atores envolvidos no processo. Essa abordagem também estimula o professor que ministra a disciplina a cada semestre por vivenciar diferentes soluções e situações práticas com a cada situação-problema proposta. Para cada semestre letivo, o professor pode e deve elaborar uma nova situação-problema, de forma que os alunos se sintam motivados e desafiados a desenvolver um trabalho inédito. A teoria tem uma importância substancial e não é menosprezada, mas prioritariamente se enfatiza que esta serve como subsídio para a realização de trabalhos práticos, e não apenas uma simples memorização de conceitos teóricos, sem relacionamento com a prática. Os alunos têm sido incentivados a serem atores participantes do ensino e não apenas receptores de informações prontas. Por outro lado, o professor torna-se um gestor de ensino, auxiliando e provendo suporte para o aprendizado dos alunos e não apenas repetindo conteúdo teórico extraído de livros. Nas aulas de laboratório onde são utilizados os guias ou roteiros contendo descrição de experimentos, estes se mostram repetitivos e muitas vezes desconexos com a evolução inerente de certos temas abordados em disciplinas de uma área tecnológica. Desta forma, o aluno desenvolve menos sua criatividade. O artigo está organizado da seguinte forma: Na seção 2 apresenta-se o contexto no qual a disciplina era ministrada até então, seus objetivos e as justificativas observadas para o desenvolvimento do um novo material didático e a mudança da metodologia de ensino. Na seção 3 apresenta-se a Estruturação do Projeto de construção do material didático. Na seção 4, apresenta-se uma síntese dos Materiais e Métodos desenvolvidos para a aplicação da metodologia de ensino orientada a projetos, empregada na disciplina. O método de avaliação utilizado também é brevemente relatado nessa mesma seção. Na seção 5, apresenta-se uma descrição dos resultados alcançados. Considerações finais compõem a última seção. 2. Contextualização SPP é uma disciplina obrigatória para três cursos de graduação da UFMG: em Engenharia Elétrica, em Engenharia de Controle e Automação e em Engenharia de Sistemas, totalizando aproximadamente 150 alunos matriculados a cada semestre. SPP é composta de uma carga horária semestral de 45 horas de aulas teóricas e 30 horas de aulas práticas em laboratório (total de 75h/semestre). Todas as aulas teóricas acontecem concomitantemente com as aulas práticas. A disciplina SPP é de caráter formativo do aluno na área de Projetos de Sistemas Digitais dos cursos supracitados e tem como pré-requisitos às disciplinas de Sistemas Digitais e Laboratório de Sistemas Digitais, onde o enfoque de projetos de sistemas digitais modernos baseados em linguagens de descrição de hardware e uso de dispositivos lógicos programáveis deve ser ensinado e praticado em aulas de laboratório. De forma geral, os objetivos da disciplina SPP são de capacitar o aluno para: a) O entendimento do funcionamento e o projeto de um processador, suas partes, como estas se integram e se comunicam para realizar funções para as quais foi projetado. b) Identificação e caracterização de um periférico, sua forma de comunicação com processadores e seus modos de operação. Antes do desenvolvimento do material didático aqui apresentado, as aulas de laboratório desta disciplina eram baseadas em roteiros com experiências bem definidas e repetitivas, onde o aluno executava tarefas pré-determinadas, devendo apresentar pré-relatórios no início de cada aula de laboratório ao professor da disciplina. Desta forma, os pré-relatórios permitiam identificar se o aluno havia estudado o assunto previamente e se preparado para as atividades presenciais da aula prática da semana. Os roteiros de laboratório da aula prática estavam sempre atrelados ao assunto dado na aula teórica da semana. Para se alcançar o primeiro objetivo geral da disciplina, o professor apresentava em sala de aula o desenvolvimento de um processador definido para fins didáticos, conhecido por MIC-1 [3]. O projeto desse processador era dividido em oito aulas práticas na forma de roteiros de atividades. O aluno era convidado a projetar o processador MIC-1 na linguagem de descrição de hardware VHDL e validá-lo através de um simulador de códigos de descrição de hardware produzidos da mesma linguagem. O segundo grande objetivo dessa disciplina era alcançado com o estudo de periféricos e sua programação na linguagem Assembly da arquitetura da família de processadores da Intel™. Esse objetivo era alcançado em sete aulas práticas, sendo cada uma com o seu próprio roteiro de atividades abordando a programação de um periférico. 2 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) do mesmo, também foi desenvolvida [7]. Essa apostila contém o material teórico mínimo e aplicação da teoria nas atividades práticas relacionada ao estudo de periféricos de um microcontrolador, sua programação e o desenvolvimento de pequenos sistemas, utilizando-se os periféricos estudados. Exemplos de programação e uso de cada periférico são apresentados em cada seção da apostila. Complementando o material disponibilizado para os alunos, foram selecionados manuais, tutoriais e folhas de dados de processadores e microcontroladores comerciais e material de apoio, (softwares e tutoriais) que auxiliam o aluno no uso das ferramentas empregadas no laboratório e na realização dos trabalhos propostos. Todo o material didático desenvolvido foi estruturado de forma a permitir seu crescimento e atualização com outras técnicas de projeto de processadores que venham a ser agregadas, sem ser necessário efetuar modificações nos objetos de aprendizagem já produzidos. Relatos dos alunos descreviam a pouca motivação pelas aulas práticas devido a constante repetição e constatação de resultados descritos nos roteiros. Também relatavam sobre as aulas, que por se tratarem de atividades repetitivas já vivenciadas e desenvolvidas por alunos de turmas anteriores, não se sentiam motivados a preparar os pré-relatórios, tornando essa atividade um mero cumprimento de tarefas decorrentes da metodologia de ensino empregada na disciplina. Com a metodologia baseada em roteiros de aulas, os professores percebiam o baixo interesse e a pouca motivação dos alunos. Em geral os alunos não percebiam a razão de estarem estudando certos assuntos, por não terem a noção do todo. Todos esses sinais apontavam para a necessidade de mudança na estratégia de ensino. 3. Estruturação do material da disciplina A metodologia de ensino proposta para essa disciplina é centrada no Ensino Orientado ao Projeto, baseada em aliar a teoria à prática, apresentando conceitos teóricos fundamentais, mas sempre procurando exemplificar aos alunos como aplicá-los [1]. A teoria usada para a base do desenvolvimento dos objetos de ensino utilizados na disciplina SPP foi baseada em livros-texto contemporâneos, referência das áreas, de Sistemas Digitais [4], Arquitetura e Organização de Computadores [5] e Projetos com Microcontroladores [6]. A fim de alcançar o primeiro objetivo da disciplina (mencionado na seção 2) e com base nos livros-textos citados foi desenvolvido o material didático contendo teoria e aspectos práticos do projeto de processadores. Um sequenciamento completo do projeto de um processador dividido em etapas foi elaborado. Um exemplo completo de projeto de um processador foi apresentado, desde a especificação de requisitos, seguindo cada uma das etapas do sequenciamento de projeto citado. Desta forma, os alunos são orientados ao estudo, ao desenvolvimento e à documentação dos procedimentos realizados para seus projetos. Paralelamente para cada etapa de projeto, documentosmodelos foram elaborados, no intuito de manter um padrão de documentação de projeto e facilitar a avaliação dos trabalhos. Alcançando-se o primeiro objetivo da disciplina, na oitava aula, é realizado um Workshop, onde os alunos testam por completo seus projetos em um kit de desenvolvimento de projetos baseado em dispositivo lógico programável (FPGA – Field Programmable Gate Arrays), e apresentam seus trabalhos. Neste evento são incentivados a discussão dos trabalhos, com aportes de novas idéias baseadas na experiência adquiridas pelos alunos. Uma apostila focando o segundo objetivo da disciplina, que é o de identificar e caracterizar um periférico e desenvolver pequenos sistemas com o uso 4. Materiais e métodos As condições mínimas de utilização de equipamentos e material didático existente em laboratório para realização das atividades práticas devem estar funcionalmente disponíveis desde o primeiro dia de aula. O material didático é constituído de kits DE2-Altera de dispositivos lógicos programáveis para cada grupo de alunos, capazes de ser reconfigurados por software Quartus II - Altera [8], [9]. Os kits de dispositivos lógicos programáveis necessitam de um microcomputador com todo o software necessário ao desenvolvimento do projeto, instalados em cada bancada para cada grupo de alunos. A caracterização da forma semi-presencial da disciplina, onde o estudo e o desenvolvimento das etapas de projeto do processador e da programação de pequenos sistemas com o uso de periféricos, bem como o envio dessas atividades de cada etapa semanalmente ao professor demandam o apoio de uma plataforma de ensino a distância. A plataforma Moodle – Minha UFMG é utilizada intensamente, onde professores, monitores-bolsistas e alunos a utilizarão como meio para consulta ao material didático, esclarecimento de dúvidas, troca de informação através dos fóruns para realização das atividades propostas. Semanalmente, todos os grupos de alunos devem submeter suas tarefas de cada etapa de projeto para apreciação e comentários do professor dentro de um prazo estabelecido pelo mesmo. As atividades presenciais semanais em laboratório consistem na realização de testes por parte dos alunos das atividades a distância que desempenharam na semana. Esses testes são realizados utilizando-se os kits de desenvolvimento de projetos [8]. Esclarecimentos de dúvidas remanescentes com o 3 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) d) Um documento contendo as especificações de requisitos mínimas do processador proposto. e) Dez guias de projeto, as quais orientarão os alunos nas atividades de documentação, implementação e validação de suas soluções para submissão da tarefa semanal. f) Material para referência no desenvolvimento dos projetos. Esse material fica disponível no ambiente Moodle – Minha UFMG para acesso dos alunos e também no repositório de objetos de aprendizagem GIZ-UFMG [10] e está organizado em sumários, aula a aula (vide Figura 2). Estão disponíveis materiais para aprendizado e consulta sobre aspectos relacionados à Linguagem de Descrição de Hardware; Material de referência e usuário do Kit de desenvolvimento e do ambiente de programação que o aluno deverá usar para validar a sua solução. g) Um modelo para elaboração de cada etapa de projeto do processador, que cada grupo de alunos deverá submeter à apreciação do professor pelo ambiente Moodle. h) Um exemplo completo do projeto de um processador, seguindo as etapas do seqüenciamento de projeto apresentado, acompanhado de toda documentação necessária: códigos e simulações utilizados no projeto, conforme modelo sugerido pelo professor. i) Um roteiro sugestivo de avaliação de trabalhos dos workshops para o professor. j) Um documento informativo para o aluno contendo os critérios que são utilizados na avaliação dos workshops. k) Uma apostila com a teoria mínima necessária ao projeto de sistemas com microcontroladores e seus periféricos. professor da disciplina são também tratadas presencialmente nesses encontros. Ainda dentro do tempo de aula, o professor avalia a participação individual e o conhecimento de cada aluno sobre os assuntos tratados na etapa. Um recurso didático importante desenvolvido para a aplicação dessa metodologia de ensino é a vídeoaula. As vídeo-aulas foram construídas a partir de narrações de animações produzidas respectivamente com os softwares Camtasia Studio© e Microsoft PowerPoint©. As vídeo-aulas apresentam de forma concisa e objetiva toda a teoria e o sequenciamento de projeto, apresentando as etapas para o desenvolvimento de um processador. Desta forma, um exemplo do projeto de um processador completo é apresentado nas vídeo-aulas, sugerindo ao aluno como aliar a teoria à prática. A Figura 1 mostra o sequenciamento de etapas de projeto do processador proposto ao aluno desenvolvido com base nos livros-texto citados [4][5]. Adicionalmente foram elaboradas dez guias de projeto que orientam passo a passo os alunos no desenvolvimento e documentação de suas soluções nas referidas etapas de acordo com modelos fornecidos para cada fim. Figura 1. Sequenciamento do Projeto. A Figura 2 mostra um sumário do curso organizado no ambiente Moodle. Cada sumário está associado a uma aula e a uma etapa do sequenciamento do projeto do processador. Todas as aulas são apresentadas de forma padronizada, contendo os seguintes itens: objetivo da aula; material que o grupo deverá produzir; material para estudo e atividades propostas, separadas em documentos, vídeo-aulas e softwares. Cada aula também apresenta um link para submissão das tarefas da etapa de projeto para avaliação e comentários do professor. Em síntese geral o material didático produzido para a disciplina é composto pelos seguintes artefatos: a) Um planejamento de aulas sugestivo para a parte teórica da disciplina, contendo o assunto que deverá ser tratado em cada aula, material de referência e a conexão com as atividades fim, tratadas em laboratório. b) Um planejamento de atividades em laboratório, contendo o objetivo de cada atividade presencial, material que deverá ser produzido pelo aluno na etapa e material de referência disponível ao aluno para a execução da etapa. c) Nove vídeo-aulas com animações explicando a base teórica necessária para o aluno projetar, documentar e desenvolver sua própria solução para a situação-problema proposta. 4 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) semestre, também são apresentados os instrumentos que ele terá a sua disposição para desenvolver a sua própria solução e o modo de utilizá-los. Nas seis aulas subsequentes do módulo 1, cada dupla deverá criar, desenvolver, testar e documentar sua solução com o acompanhamento e a orientação presencial do professor responsável pela turma. Na última aula do módulo, cada grupo deverá apresentar sua solução para a turma. Essa último aula presencial funciona como um workshop. As últimas sete aulas compõem o segundo módulo, onde pretende-se alcançar o segundo grande objetivo da disciplina. O objeto de aprendizado principal desse segundo módulo é a apostila, que apresenta sete situações-problemas, que induzem o grupo de alunos a criarem suas próprias soluções. A avaliação da disciplina é realizada por meio de avaliações parciais semanais e no final de cada módulo. Os alunos são arguidos individualmente semanalmente e são atribuídos conceitos ao grupo e a cada aluno do grupo, em cada etapa de projeto. Figura 2. Organização da Disciplina no Moodle A Figura 3 apresenta um slide de uma das nove vídeo-aulas, visualizada com o auxílio de um navegador de Internet. Observa-se uma via de dados de um processador simples de três instruções. A esquerda dessa imagem observa-se um recurso utilizado na criação dos vídeos, de grande utilidade para o aluno, que é a navegação por slides utilizados na produção da aula. Esse recurso possibilita ao aluno interromper e voltar a assistir o vídeo de onde parou sem se preocupar em tomar nota do tempo do momento no qual parou de assistir. 5. Resultados Os objetos de aprendizado desenvolvidos segundo a metodologia do Ensino Orientado a Projetos se encontram disponíveis, à comunidade da UFMG, no repositório de objetos de aprendizado do GIZ – Rede de Desenvolvimento de Práticas de Ensino Superior, vinculado a Pró-Reitoria de Graduação da UFMG sob a licença Creative Commons [10]. Essa metodologia de ensino com todos os objetos de aprendizagem desenvolvidos vem sendo aplicada há dois semestres na disciplina SPP (2010/2 e 2011/1). Resultados quantitativos a partir de enquetes com os alunos sobre as disciplinas e os professores são obtidos e divulgados semestralmente pela Pró-Reitoria de Graduação da UFMG. Um total de 269 alunos já cursou esta disciplina utilizando essa metodologia de ensino. A figura 4 mostra quantitativamente a afirmação sobre o aumento da motivação dos alunos na disciplina diante da metodologia de ensino proposta nesse trabalho. O gráfico de barras da Figura 5 mostra que o aluno considera que seu aprendizado melhorou com a nova metodologia aplicada nos semestres de 2010/2 e 2011/1. Ainda como resultado quantitativo da mesma enquete, 63% e 62% (respectivamente em 2011/1 e 2010/2) contra 41% e 40% (respectivamente em 2010/1 e 2009/2) afirmam que o material didático é considerado como bom a muito bom. Os alunos afirmam que as vídeo-aulas propiciam uma base primordial para o desenvolvimento de seus projetos. Por fim, os documentos que acompanham o material didático e o desenvolvimento de um exemplo de projeto de um processador são objetos de aprendizagem essenciais para o sucesso da aplicação dessa metodologia. Figura 3. Imagem com o Trecho de uma Vídeo-aula 4.1. Aplicação do material produzido Na primeira aula de SPP é apresentada a proposta da disciplina, mostrando os objetivos, a metodologia de trabalho e o material que o aluno terá a disposição para desenvolver sua solução, bem como as formas das atividades avaliativas. Os alunos são agrupados em duplas ou trios, para realizar todas as atividades propostas no semestre. Cada grupo seguirá seu próprio projeto, tomará suas próprias decisões e proporá uma solução. Incentiva-se a discussão entre os membros de um grupo para definir as possíveis decisões sobre as etapas de projeto do processador. A disciplina de SPP tem dois objetivos claros e distintos, citados na seção 2. Cada objetivo é tratado em um módulo composto por sete aulas de 2h/aula. No início do primeiro módulo é apresentado ao aluno uma situação-problema do módulo, ou seja, o documento de requisitos mínimos de projeto do processador no 5 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) Agradecimentos 50% A Pró-Reitoria de Graduação ção da UFMG pelo suporte financeiro ao projeto de desenvolvimento do material didático apresentado nesse artigo. 40% 30% Ruim 20% Médio 10% Bom 0% 7. Referências Muito bom [1] Donoso-Garcia, Garcia, P. F., Martins, L. F.; Cortizo, P. C. Ensino Orientado ao Projeto: Uma Experiência para o Ensino de Eletrônica nas disciplinas de laboratório de Eletrônica nica e Eletrônica de Potência. Eletrônica de Potência (Florianópolis), v. 13, p. 109-116, 109 2008. Figura 4. Grau de motivação com relação à disciplina 60% 50% 40% 30% 20% 10% 0% [2] Donoso-Garcia, Garcia, P. F., Torres, L. Ensino Orientado ao projeto desafio: uma experiencia para o ensino de controle, instrumentação e eletrônica. In: Congresso Brasileiro de Educação em Engenharia, 2007, 2007 Curitiba. XXXV COBENGE 2007. p. 3B05--1-3B05-15. Ruim Médio [3]] Tanenbaum, A. S. Organização Estruturada de Computadores. 5ª Edição, ão, Prentice Hall, 2006. Bom [4]] Vahid, F. Sistemas Digitais: Projeto, Otimização e HDLs, Bookman, 2008. Muito bom [5]] Patterson, D. A., Hennessy, J. L. Organização e Projeto de Computadores - A Interface Hardware/ Software.. 3a. Edição. Editora Campus, 2005. Figura 5. Meu aprendizado na disciplina 6. Considerações finais [6] de Oliveira, veira, A. S. e Andrade, F. S. Sistemas Embarcados - Hardware e Firmware na Prática. 1a. Edição. Editora Érica, 2006. As vantagens da adoção dessa metodolo metodologia de ensino são muitas: (i) Alunos mais motivado motivados para projetar, tomar decisões de projeto e analisar o impacto das decisões tomadas. Cabe-lhes lhes desenvolver uma postura ativa perante o processo de aprendizagem e reconhecer que o professor não é mais o único a decidir sobre os caminhos a serem seguidos. (ii) Para o professor, essa metodologia de ensino ensino-aprendizagem proporciona uma dinâmica constante a cada seme semestre, em que uma nova situação-problema problema é elaborada e proposta aos alunos. O professor é o condutor da formação da experiência ia prática do aluno, mostrando os possíveis is rumos a serem tomados e corrigindo erros conceituais que possam surgir no percurso percurso. Como desvantagem: (i) necessita dedicação intensiva do professor; (ii) demanda ferramenta de en ensino a distância bem instalada, funcional e disponível disponível. Vários tipos de objetos de aprendizagem podem ser desenvolvidos segundo essa metodologia, desde que o princípio que a norteia seja obedecido, ou seja, aliar a teoria à prática para o desenvolvimento da situação-problema, conduzindo o aluno as suas próprias escolhas e decisões sões de projeto. Dentre os materiais desenvolvidos,, cabe destacar que as vídeo-aulas são um dos objetos de ap aprendizado principais desenvolvidos nesse trabalho. [7]] Oliveira Junior, M., Duarte, R. O. Apostila sobre Introdução ao Projeto com Microcontroladores e Programação ção de Periféricos. DELT – EE – UFMG, 2011. Disponível por acesso restrito a comunidade da UFMG em: <https://dspaceprod01.grude.ufmg.br/dspace/handle/O https://dspaceprod01.grude.ufmg.br/dspace/handle/O AUFMG/545/browse?type=title>, >, acessado em 24 de agosto de 2011. [8] Altera Corporation©: DE2 Development and Education Board User Manual – Version 1.3, 2006. Disponível para download em: <http://www.abramovbenjamin.net/altera_ http://www.abramovbenjamin.net/altera_de2.pdf>, acessado em 24 de agosto de 2011.. [9] Altera Corporation©: Introduction to Quartus II Software - Version 10.0, 2011. Disponível em: <http://www.altera.com/literature/manual/archives/int http://www.altera.com/literature/manual/archives/int ro_to_quartus2.pdf>, acessado cessado em 24 de agosto de 2011. [10] Repositório da Rede de Desenvolvimento de Práticas de Ensino Superior, or, Pró-Reitoria Pró de Graduação - UFMG. Disponível por acesso restrito em: <https://dspaceprod01.grude.ufmg.br/dspace/handle/O https://dspaceprod01.grude.ufmg.br/dspace/handle/O AUFMG/545/browse?type=title>, >, acessado em 24 de agosto de 2011. 6 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) Simuladores de Memória Cache, um Estudo Comparativo Direcionado ao Ensino Matheus Arleson Sales Xavier¹, Jardel das Chagas Rodrigues¹, Otávio Alcântara de Lima Júnior¹ ¹Laboratório de Eletrônica e Sistemas Embarcados (LAESE) Instituto Federal de Educação, Ciência e Tecnologia do Ceará (IFCE) Av. Contorno Norte, 10 – CEP: 61925-315 – Maracanaú, Ceará [email protected], [email protected], [email protected] disciplina de Arquitetura de Computadores. Motivar os alunos a estudar Arquitetura de Computadores pode ser um problema quando o aluno acredita não ser necessário conhecer arquitetura para desenvolver softwares. O desafio em motivar os alunos pode não estar somente na disciplina de Arquitetura de Computadores, mas em todas as disciplinas de um curso, quando estas deixam ausente a correlação de importância com Arquitetura de Computadores [1]. Portanto, devem-se utilizar mecanismos para solucionar essa problemática e tornar a disciplina mais atrativa e menos complexa para os alunos. A utilização de simuladores didáticos contribui para uma melhor compreensão do assunto, uma vez que esses são capazes de traduzir para a realidade os conceitos teóricos através de uma introdução de forma clara e didática dos mesmos [2]. À medida que a complexidade e variedade de sistemas computacionais aumentam, a adequação desses como ferramentas pedagógicas nos cursos de Arquitetura de Computadores diminuem. Em consequência disso, muitos instrutores estão se voltando para simuladores como auxiliares de ensino, muitas vezes empregando o valioso tempo de ensino/pesquisa para construí-los [3]. Um simulador de memória cache pode ser utilizado para facilitar as aulas e auxiliar no aprendizado de sistemas computacionais modernos. O objetivo geral do artigo é realizar um estudo comparativo de alguns simuladores de memória cache e sua empregabilidade no ensino, com o intuito de facilitar o processo de seleção da ferramenta usada como apoio ao ensino em cursos introdutórios de arquitetura de computadores. Alguns simuladores já foram propostos com esse objetivo e os mesmos serão analisados no decorrer desse trabalho, dentre os quais foram selecionados: KSH [4], MSCSim [5], DCMSim Resumo O conceito de memória cache é um tópico importante visto principalmente na disciplina de Arquitetura de Computadores, em cursos da área de computação. Esse é um assunto no qual muitos alunos sentem dificuldades, isso se deve ao cunho extremamente teórico das aulas na maioria dos cursos ofertados. Um simulador se mostra uma ferramenta importante neste cenário. Este artigo apresenta um estudo comparativo entre os principais simuladores de memória cache disponíveis, visando avaliar sua aplicabilidade como ferramenta de apoio ao ensino em cursos introdutórios de arquitetura de computadores. O estudo aponta que um dos principais empecilhos à aplicação destas ferramentas é a dificuldade em localizar estes aplicativos. 1. Introdução No decorrer da evolução dos sistemas computacionais, a diferença de velocidade entre a unidade central de processamento e a memória principal se tornou um obstáculo ao aumento do desempenho dos computadores. Uma das formas encontradas para mitigar essa problemática foi o emprego de uma pequena porção de memória veloz e de custo mais elevado, denominada memória cache, localizada entre o processador e a memória principal. A memória cache armazena temporariamente os dados e instruções que possuem maior probabilidade de serem usados pelo processador, reduzindo o número de acessos à memória principal. A memória cache é largamente empregada nas arquiteturas computacionais modernas. Sua utilização visa à melhora de desempenho do sistema. O conceito de memória cache está inserido na 7 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) [6] e o Dinero IV [7]. O restante do trabalho está organizado em cinco seções. A seção 2 traz o conceito de memória cache e explica brevemente o seu funcionamento. A seção 3 do artigo detalha cada simulador. A seção 4 do artigo exibe os parâmetros de comparação e características desejáveis em um simulador utilizado no ambiente ensino-aprendizagem. A seção 5 faz um estudo comparativo dos simuladores. A seção 6 mostra as conclusões deste artigo. Finalmente, a última seção mostra as referências utilizadas nesse trabalho. probabilidade de serem acessadas nas próximas referências de memória . 2. Memória cache Figura 2. Esquema de uma memória cache [9]. Ao passar dos anos, os processadores e outros dispositivos conseguiram um aumento incrível na velocidade de processamento das informações, o que não foi acompanhado pela memória principal, tornando-se lenta e atrasando as demais operações [8]. Na Figura 1 é mostrada claramente essa diferença. Nesse âmbito, precisava-se de uma unidade intermediária que acelerasse as operações que a envolviam. Ao analisar o comportamento dos programas, percebeu-se que o processador tende a referenciar endereços de memória próximos, devido ao grande uso de estruturas de repetições e dados, localizados um após o outro na memória [9]. Para que esta operação ganhe velocidade, a cache fica próxima ao processador e é feita deste mesmo material. Apenas quando um dado referenciado não está na cache, um acesso à memoria principal é feito. A Figura 3 apresenta um resumo das operações envolvidas na busca de uma posição de memória em um sistema empregando memória cache. Figura 3. Funcionamento da cache [9]. Embora existam diversas implementações, poucos elementos básicos de projeto servem para classificar e diferenciar as diversas arquiteturas. O primeiro deles: o tamanho da memória cache. Quanto maior, mais caro e rápido, até certo ponto, fica o sistema. Como a cache é feita do mesmo material do processador, o custo por bit é muito elevado e o tempo de procura é maior. A função de mapeamento determina como a cache é preenchida, podendo ser de forma direta: cada bloco da memória principal é mapeado para apenas uma linha de cache, associativa: um bloco pode ser alocado em qualquer linha da cache, associativa por conjunto: a cache é dividida em conjuntos, com certo número de linhas cada e um bloco pode estar associado a qualquer Figura 1. Evolução de desempenho Memória x CPU [8]. A Figura 2 mostra o posicionamento da memória cache no sistema, onde a mesma pode ser dividida em vários níveis de acordo com a proximidade da CPU, proporcionando uma melhoria no desempenho global. A cache mantém um bloco de informações, composto das posições de memória mais recentemente utilizadas, como também o conteúdo das posições de memória próximas, pois estas possuem alta 8 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) linha de um conjunto já pré-determinado. Os algoritmos de substituição determinam como os dados serão substituídos, podendo ser pelas técnicas: Least Frequently Used (LFU), os dados menos frequentemente utilizados serão substituídos; First In First Out (FIFO), o primeiro dado a entrar é o primeiro a sair; Least Recently Used (LRU), os dados menos recentemente usados são descartados primeiro; ou de forma aleatória. A política de escrita determina como os dados serão atualizados na memória principal, podendo ser de forma simultânea: write through ou os dados são escritos temporariamente na cache e depois na memória, o que denominamos write back. Por fim, o tamanho do bloco, que determina a quantidade de dados de um bloco alocado e a quantidade de níveis, para um sistema com vários níveis de cache. Atualmente a memória cache vem evoluindo e já não está apenas presente nos processadores, mas em quase todos os dispositivos que necessitam dessa aceleração, como os discos-rígidos, por exemplo. Podemos encontrar também sistemas com vários níveis de cache ou caches separadas para dados e instruções. O seu memory trace pode ser um arquivo de texto ou um comando via teclado. O programa possui basicamente três ambientes de execução: o primeiro, logo após o menu do programa, é o controle da simulação, que permite tanto a observação passo-apasso, quanto visualizar diretamente o final da simulação; o segundo, abaixo do controle da simulação, é onde é possível observar as informações; o terceiro, à direita, informa o conteúdo do memory trace. 3. Simuladores 3.2 DCMSim Esta seção analisa as características presentes nos simuladores, exibindo suas principais funcionalidades e modos de operação. No presente artigo foram escolhidos quatro simuladores para realização do estudo, entretanto outras ferramentas podem ser encontradas, como o SMPCache [10] e o Loop-way Cache [11], por exemplo. Alguns critérios para a escolha dos simuladores foram adotados, a saber: ou grau de exibição dos simuladores em relação às pesquisas realizadas na web sobre o tópico de memória cache e as documentações encontradas referentes aos mesmos, sejam estas artigos ou páginas da internet. DCMSim (Didatic Cache Memory Simulator) é um simulador que foi projetado na Digital and Computational System Groups (GSDC) na Pontifícia Universidade Católica. A primeira versão foi iniciada como um trabalho universitário, enquanto que a última versão foi desenvolvida como um trabalho de graduação, ambos foram escritos em Java. A última versão, selecionada para o estudo, implementa as seguintes arquiteturas de cache: mapeamento direto; associativa e associativa por conjunto. Políticas de substituição: FIFO e LRU. Políticas de escrita: write back e write through. Os dados de entrada são representados pelo conjunto de acessos à memória. O memory trace apresenta-se na forma de um arquivo de texto onde cada linha representa um acesso à memória e tem suas linhas neste formato: <endereço> <indicação de (d)ado ou (i)nstrução> <indicação de (l)eitura ou (e)scrita> <dado/instrução>. Possui um recurso denominado MissAnalyst que analisa os acertos e erros dos acessos realizados na memória cache. Na seção denominada LogBox, as estatísticas do tempo de acesso são exibidas, tanto da iteração corrente, como de toda a simulação. Isso possibilita gerar um arquivo de relatório contendo a sequência das ocorrências, configurações e os resultados da simulação. Figura 4. Visão geral do simulador KSH. 3.1 KSH O KSH foi desenvolvido na Pontifícia Universidade Católica de Minas Gerais e desenvolvido na linguagem de programação Java. Esta ferramenta pode ser executada em modo gráfico ou via console, ambos possuindo as mesmas funcionalidades. O KSH implementa as três arquiteturas de memória cache: mapeamento direto; mapeamento associativo e mapeamento associativo por conjunto. Suas políticas de substituição são FIFO e LRU. Possui técnicas de escrita: write back e write through e o acesso à memória pode ser de modo sequencial ou paralelo. 9 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) 3.4 Dinero IV Desenvolvido pelo Dr. Jan Edler da NEC Researchs Corporation e pelo prof. Mark D. Hill do Departamento de Ciência da Computação da Universidade de Wisconsin. O Dinero IV é um simulador de memória cache baseado nas referências do memory trace que permite a simulação de caches multi-níveis dentre seus mais diversos tipos, como, por exemplo, uma cache separada para instrução e uma para dados. Possui melhor desempenho e portabilidade do que seu antecessor, o Dinero III. O Dinero IV não apresenta o tempo decorrido da simulação, sendo a sua principal funcionalidade o cálculo das taxas de acerto e de erro dos acessos feitos à memória cache. Suas políticas de substituição são: LRU; FIFO ou aleatória. Os vários parâmetros de cada cache podem ser configurados separadamente em relação aos fatores como: arquitetura; política e estatísticas. Durante a inicialização é realizada a configuração, uma cache por vez, começando por cada nível, desde a memória principal. Após a inicialização, os níveis superiores são alimentados a cada referência através por uma chamada simples de uma função, enquanto que os níveis mais baixos da hierarquia são tratados de maneira automática. O Dinero IV foi testado nos ambientes: x86/Linux, Alpha/Linux, Alpha/OSF, SGI/IRIX-6, RS6000/AIX, x86/Solaris, e Sparc/Solaris. Figura 5. Visão geral do DCMSim. 3.3 MSCSim MSCSim (Multilevel and Split Cache Simulator), foi desenvolvido na Pontifícia Universidade Católica de Minas Gerais. Desenvolvido também em Java e implementa as arquiteturas de cache: mapeamento direto; mapeamento associativo e associativo por conjunto. Políticas de substituição: FIFO e LRU. Políticas de escrita: write back e write through. Acesso à memória: paralelo e sequencial. O programa possui interface gráfica composta de vários ambientes, sendo a janela principal composta de um menu principal e um espaço onde é mostrado os arquivos usados recentemente (configurações e traces). Seu memory trace pode ser feito através de um trace generator no programa, o qual permite a criação manual ou randômica seguindo o formato: <endereço> <(L)eitura/(E)scrita> <(I)nstrução/(D)ado>. Quanto à configuração da arquitetura, pode ser elaborada ou ser importada de um arquivo prédefinido. É possível dividir a cache em vários níveis e diferenciar as características de cada nível. Depois de configurada a arquitetura e informado o trace, surge o ambiente de simulação – uma janela com abas: simulação, memória cache, memória principal e estatísticas – a simulação pode ocorrer passo-a-passo ou diretamente. Figura 7. Resultado de uma simulação realizada pelo Dinero IV. 4. Comparação entre os simuladores Essa seção apresenta a comparação entre os simuladores selecionados, através da análise de seus respectivos artigos. Figura 6. Visão geral do MSCSim. 10 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) pertinentes apenas aos simuladores Dinero IV e MSCSim. Em relação ao memory trace, a maioria dos simuladores usa arquivos de texto elaborados pelo usuário, baseados em um modelo pré-definido. Embora não seja uma tarefa tão complexa, uma função randômica que gere o memory trace é importante, sendo o MSCSim o único simulador que possui tal recurso. O Dinero IV utiliza um trace gerado pelo próprio programa. No quesito intuitividade, o que mais demonstrou deficiência foi o Dinero IV, pois não apresenta interface gráfica e nem comandos simples para as operações, que são exclusivamente via console. Todos os outros possuem interfaces gráficas, variando em complexidade. A ferramenta que se mostrou mais completa foi o MSCSim, apresentando uma interface bem estruturada. Na análise da visibilidade de informações, o MSCSim se destaca, exibindo uma gama de informações em sua simulação, além de possuir animações que ajudam a visualizar as modificações. O DCMSim e o KSH apresentam apenas as informações básicas e o Dinero IV não apresenta informações durante sua simulação, apresentando apenas um arquivo de relatório ao término. O MSCSim possui um recurso de importação de arquivos de extensão xml com arquiteturas prédefinidas para este fim. Já o KSH possui um script de configuração, porém a edição do mesmo é mais trabalhosa. Todos os outros não apresentam nenhuma forma de implementação de tutoriais. A tabela 1 mostra as características básicas, que foram os parâmetros de comparação existentes nos simuladores, e outras características adicionais que se mostraram presentes nos mesmos. 4.1 Parâmetros de comparação Após a análise dos simuladores, algumas características fundamentais foram discutidas e essa seção mostra os requisitos essenciais desejados em um simulador. Como a interface gráfica é a forma de interação com o usuário, esta deve ser intuitiva, de forma que a ferramenta seja fácil de utilizar. É importante que o processo de utilização do ambiente de simulação aconteça em etapas. O usuário deve passar por cada etapa, inserindo as informações solicitadas sobre a arquitetura simulada até a conclusão da simulação e exibição dos resultados. A visibilidade das informações é fundamental, a ferramenta deve mostrar como é feito o acesso à memória cache, através da exibição de todos os parâmetros envolvidos no controle da mesma. Ao final da simulação, é esperado um relatório, cujo conteúdo mostraria uma descrição detalhada do desempenho do sistema. Para evitar erros, a geração do memory trace deve seguir um modelo fácil e deve ser feita de forma manual ou aleatória dentro do aplicativo. É essencial a disponibilização do aplicativo e de seu código fonte. Alguns dos trabalhos desenvolvidos não estão disponíveis para download e o contato dos desenvolvedores não é mais válido. Após o desenvolvimento da ferramenta, esta deve ser disponibilizada de forma simples, através, por exemplo, de sites que ofereçam hospedagem permanente. 4.2 Estudo comparativo Após a análise dos artigos dos simuladores de acordo com os critérios escolhidos, foi possível verificar que a maioria dos simuladores analisados não atende a alguns critérios. Dos simuladores selecionados apenas o Dinero IV não apresenta uma cache dividida para dados e instruções, enquanto que todos os outros possuem tal recurso. Em relação à quantidade de níveis de memória cache apenas o KSH e o DCMSim não apresentam a possibilidade de realizar simulações com vários níveis de cache. Os tipos de acesso sequencial e paralelo, bem como o tempo de cada acesso são características apenas do KSH e do MSCSim, os outros simuladores não disponibilizam tal opção. Os erros de compulsório, conflito e capacidade que podem ocorrem em um acesso à memória cache são Tabela 1. Características gerais pertinentes aos simuladores 11 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) estudo comparativo, de modo a facilitar a escolha de uma ferramenta de simulação que possa ser empregada na disciplina de arquitetura de computadores. 5. Resultados Todos os simuladores apresentaram problemas de disponibilidade do aplicativo e do código fonte. O DCMSim possui o aplicativo disponível, porém em uma versão incompleta. O Dinero IV é disponível no site do autor, enquanto que para obter o MSCSim, é necessário entrar em contato com seus autores, os quais não retornaram os inúmeros contatos realizados. Não foram encontradas fontes para o KSH. A partir do estudo comparativo realizado, podemos verificar que há uma grande carência nas ferramentas de simulação. Mesmo havendo vários trabalhos publicados, não é possível encontrar os simuladores, exceto o Dinero IV, tanto por estes não estarem mais disponibilizados, quanto pela impossibilidade de contato com os idealizadores. Dos trabalhos selecionados, o MSCSim se destaca, sendo a ferramenta mais completa em todos os quesitos avaliados em nossa análise. Ele possui a interface com mais informações e as animações permitem uma melhor visualização das mudanças durante a simulação. Já o Dinero IV obteve o pior desempenho. A operação via console e a falta de informações durante a simulação, tornam o uso e a compreensão difíceis, sendo não indicado para o ensino. 7. Referências [1] Coutinho, L. M. N.; Mendes, J. L. D.; Martins, C. A. P. S. “MSCSim – Simulador de Memória Cache, Split e Multiníveis”, VI WSCAD, 2005, pp. 193-196. [2] Djordjevic, J.; Nikolic, B.; Mitrovic, M. “A Memory System for Education”, The Computer Journal, Vol. 48, No. 6, 2005, pp. 630-641. [3] Yurcik, W.; Wolffe, G. S.; Holliday, M. A; “A Survey of Simulators Used in Computer Organization/Architecture Courses”, Summer Computer Simulation Conference (SCSC), Society for Computer Simulation (SCS), 2001. [4] Ribeiro, A. S.; Duarte, R. P. “KSH: Simulador de memória cache com carregamento dinâmico de módulos e execução de script de configuração”, IV Workshop em Sistemas Computacionais de Alto Desempenho, 2003, pp. 160-163. [5] Cordeiro, E. S.; Stefani, I. G. A.; Soares, T.; Martins, C. A. P. S. “DCMSim: Didactic Cache Memory Simulator”, Frontiers in Education Conference – FIE 2003, Boulder – Colorado, v. 2003, pp. F1C14-F1C19, 2003. PDF. 6. Conclusões Nesse ambiente conclui-se que apenas um único simulador atende às principais características que um simulador didático deve possuir. Porém, o programa não foi localizado e as inúmeras tentativas de contato com os autores não obtiveram êxito. Dessa maneira, os objetivos do artigo foram alcançados e foi percebida a carência da existência de simuladores que possam auxiliar o ensino sobre memória cache. Assim, surge a necessidade de que sejam elaborados novos simuladores de acordo com os estudos já realizados, onde sejam implementadas as funcionalidades expostas nesse artigo. As novas ferramentas devem, primeiramente, ser disponibilizadas de forma simples, através, por exemplo, de um serviço de hospedagem permanente de arquivos. O projeto da interface gráfica deve primar por criar um ambiente agradável, no qual o aluno possa obter as informações do funcionamento e de desempenho de várias organizações diferentes de memória cache. Juntamente com os artigos analisados nesse estudo, este trabalho complementa as pesquisas realizadas sobre simuladores de memória cache mostrando um [6] Coutinho, L. M. N.; Mendes, J. L. D.; Martins, C. A. P. S. “MSCSim – Multilevel and Split Cache Simulator”, IV Workshop em Sistemas Computacionais de Alto Desempenho, 2006, pp. 193-196, (in portuguese). [7] Edler, J. Dinero IV Trace-Driven Uniprocessor Cache Simulator. Disponível em: http://www.cs.wisc.edu/~markhill/DineroIV/. [8] Hennessy, J. L.; Patterson, D. A. “Computer Organization and Design: The Hardware/Software Interface”, 3rd Edition, Morgan Kaufman, 2005. [9] William Stallings. “Organização e Arquitetura de Computadores”, 5ª Edição, Pearson Prentice Hall, 2002. [10] Vega M. A.; Martin R.; Zarallo F.A.; Sánchez J. M.; Gómez, J. A. "SMPCache: Simulador de Sistemas de Memoria Caché en Multiprocesadores Simétricos". Actas de las Xi Jornadas de Paralelismo, 2000, pp.3-8. [11] Moreira, L.; Pontes, B.; Fernandes, G.; Vidal, J. M.; Wanderley Netto, E. B.; Loop-way Cache. In Anais do Workshop em Sistemas Computacionais de Alto Desempenho, Oct, 24-27, pp. 197-200 Rio de Janeiro, Brazil, 2005. 12 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) Extensão do Ptolemy para o ensino de Organização e Arquitetura de Computadores André L. L Torres, Alisson V. Brito Universidade Federal da Paraiba Programa de Pós-Graduação em Informática {atorres, alissonbrito}@dce.ufpb.br Resumo concorrente que trata “atores” como sendo os elementos primitivos da computação concorrente digital [6]. Dada as limitações das soluções e propostas existentes, este trabalho propõe uma metodologia para o ensino de Organização e Arquitetura de Computadores apoiada pela simulação de sistemas concorrentes baseada em atores e pela ferramenta Ptolemy II, desenvolvida pela Universidade de Berkeley. O objetivo geral deste trabalho é prover um simulador que possibilite um ambiente didático onde os alunos possam criar seus próprios modelos de arquitetura de maneira simples, interativa e didática. A utilização de simuladores na educação se faz cada vez mais presente nas atividades pedagógicas. Nesta nova realidade, várias aplicações visam facilitar a construção do conhecimento por parte dos professores em relação aos alunos, através de métodos dinâmicos e expondo aulas para múltiplos ramos sem haver grande esforço ou repetições desnecessárias. Neste sentido, este trabalho apresenta uma extensão desenvolvida numa ferramenta de modelagem e simulação de sistemas concorrente baseada em atores, denominada Ptolemy, para contribuir com o processo de ensino-aprendizagem da disciplina de Organização e Arquitetura de Computadores. A extensão permite a criação de roteiros didáticos que abordam a disciplina e a verificação automática dos mesmos. 2. Trabalhos Relacionados Os simuladores computacionais são recursos tecnológicos que podem auxiliar em diversas áreas. No contexto abordado neste trabalho, os simuladores auxiliam os professores a provocar, favorecer e orientar situações controladas de ensino e aprendizagem, pedagogicamente interessantes para o nível de ensino que deseja. Do ponto de vista pedagógico, simuladores computacionais são softwares úteis e simples, uma vez que levam os alunos a interagirem com os mesmos, o que lhes facilita a compreensão de conceitos abstratos, leis e características do mundo físico. Segundo Felix [4], em tal disciplina é notável a necessidade de ferramentas gráficas e didáticas para auxiliar o aprendizado. Especificamente para explicar a arquitetura de processadores, pois são necessárias muitas figuras para ilustrar os caminhos de dados e de controle quando uma instrução é executada. Para a disciplina de Organização e Arquitetura de Computadores, podemos citar algumas ferramentas voltadas para o campo da informática educativa, especificamente em uma das áreas correlatas (processadores) ao tema da pesquisa. Dentre os vários processadores, dos mais simples aos mais complexos, destacamos o processador MIPS (Microprocessor 1. Introdução A análise dos sistemas computacionais atuais, seu entendimento é uma tarefa difícil, principalmente embasado apenas na teoria. Logo, o estudo da disciplina Organização e Arquitetura de Computadores podem ser facilitados com a utilização de simuladores [3], sendo uma abordagem benéfica para que os alunos entendam seu comportamento e possam visualizar a execução de programas para montagem real de uma arquitetura. Existem muitas técnicas de ensino utilizando simuladores para representar arquiteturas reais ou hipotéticas [2]. Estas técnicas, porém, não permitem uma abordagem construtivista onde os alunos possam criar suas próprias arquiteturas. Neste sentido, esse trabalho aborda uma metodologia para modelagem e simulação de sistemas concorrentes baseada em atores, utilizando um Framework denominado Ptolemy [6]. A metodologia abordada possui um grande potencial educacional ainda pouco explorado. Onde um modelo de atores é definido como um modelo matemático de computação 13 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) without Interlocked Pipe Stages). O MIPS é uma arquitetura de microprocessador projetada com objetivo de oferecer alto desempenho na execução de código compilado. Suas instruções são todas de 32 bits, mesmo nos processadores de 64 bits, como forma de manter a compatibilidade. Todas as operações aritméticas no MIPS utilizam valores contidos nos registradores e os resultados também são colocados em um registrador. O WebMIPS [1] possui uma plataforma gráfica visualmente agradável para simular a arquitetura MIPS com pipeline. Ele possui a vantagem de ser uma plataforma disponível na Internet, proporcionando uma interface dinâmica, a qual o estudante pode ter acesso sem ter que instalar módulos do simulador. O DIMIPSS [4] (Didact Interactive MIPS Simulator) é um software multiplataforma de simulação da execução (caminho de dados e de controle) das instruções do MIPS Monociclo. Ele recebe um programa em linguagem de montagem (assembly), o converte para a linguagem de máquina e representa graficamente o comportamento do caminho de dados e de controle durante a sua execução. O MARS (Mips Assembly and Runtime Simulator) desenvolvido por Vollmar e Sanderson [9] é uma ferramenta em Java com a IDE gráfica implementada usando Swing que simula um conjunto de instruções do MIPS32. A versão atual é a 3.8 e implementa 98 instruções, 36 pseudo-instruções e 17 chamadas de sistemas. Outra ferramenta é o WinMIPS64 [8] que simula a arquitetura pipeline do microprocessador MIPS64, apresentando um conjunto de 32 registradores para números inteiros, e 32 para números representados em pontos flutuantes. O WinMIPS64 [8] possibilita a visualização da instrução passando pelos pipelines, e ainda estatísticas relativas à execução, como, por exemplo, quantidade de ciclos que determinada instrução consumiu para passar por todos os estágios do pipeline. E por último descrevemos o MipsIt [3] que é um ambiente de desenvolvimento integrado e que também realiza a simulação do processador MIPS, possibilitando a programação em alto nível e permitindo relacionar conceitos de programação com organização e arquitetura de computadores. A Tabela 1 descreve uma análise comparativa entre ferramentas de simulação. Os tópicos abordados baseiam-se nos estudos de [7] para avaliar o potencial educacional dos simuladores. Tabela 1: Análise comparativa entre ferramentas no ensino de Arquitetura Computadores Ferramentas A B C D E WebMIPS AA N S IL S DIMIPSS BA N S IL N MARS BA N S PL N WinMIPS64 BA N N IL S MipsIt AA N S IL/PL N Ptolemy BA/AA S S CL/IL N Legenda: (A) (B) (C) (D) (E) (F) as de F S N S S S S Ambiente e Complexidade Suporte ao Projeto Apresentação Visual Nível de Simulação Ensino a Distância Detalhamento da Implementação Onde (A) avalia se o simulador apresenta noções básicas da introdução à Organização e Arquitetura de Computadores. Os níveis de avaliação são Arquitetura Básica (BA) e Arquitetura Avançada (AA). O critério (B) avalia se o simulador inclui ferramentas de apoio à elaboração de modulos informatizados reutilizáveis ou apenas simula sistemas pré-definidos. Para o critério (C) existem aqueles simuladores que detalham visualmente o funcionamento interno de um sistema computacional seguindo um fluxo de dados, ou aqueles onde os resultados são apresentados de forma textual, com a possibilidade de seu pós processamento. Ainda sobre os critérios utilizados, o (D) diz respeito ao nível de detalhamento do comportamento de um objeto exposto, com base no nivel mais baixo de granularidade suportado durante uma seção de simulação. Podendo ser: Nível de Clock (CL), Nível de Instrução (IL) ou Nível de Programa (PL). Para o critério (E), com base na disponibilidade de suporte para ensino à distância, os simuladores podem ser divididos entre aqueles com e sem suporte para o critério. E finalizando o (F) avalia se os simuladores fornecem detalhes da execução visíveis durante a simulação. Após a análise das ferramentas verificou-se que o Ptolemy é o único que possibilita suporte ao projeto (B), pois permite que o aluno crie seus próprios elementos e possa reutilizá-los em diferentes níveis de abstração, como também em outros projetos e arquiteturas. Além disso, o Ptolemy possui algumas vantagens em relação às outras ferramentas, como por exemplo: i) no WebMIPS [1] as modificações que ocorrem nos caminhos de dados e controle durante a execução das instruções não são apresentadas; ii) O DIMIPSS [4] não é uma ferramenta web, dificultando o ensino a distância. Além de só implementar um pequeno número de instruções do MIPS monociclo; iii) 14 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) o MARS não possui suporte a depuração e não permite que o usuário desfaça etapas de execução; iv) o WinMIPS64 [8] não possui uma área para edição do código de execução pelo usuário; v) já o sistema MipsIt [3] a arquitetura do processador MIPS, ilustrada no MipsIt, possui complexidade acima do desejável para ilustração de conceitos aos alunos que estão ingressando em cursos de Computação. Podemos concluir que apesar do framework Ptolemy não ser um simulador didático (não possuindo um procedimento para o ensino a distância e de ter uma interface gráfica complexa), ele oferece a funcionalidade de criação de um repositório de atores, possibilitando ao aluno criar seus próprios cenários, como também seus atores, além de ser uma ferramenta gratuita e com o código fonte aberto, possibilitando que novas funcionalidades e mudanças na sua interface sejam realizadas para torná-la uma ferramenta apropriada para fins educacionais. critérios de avaliação e o eixo vertical apresenta o percentual de questões conformes, não-conformes e não-aplicáveis em cada critério. Após a avaliação, podem-se destacar problemas de usabilidade nos seguintes critérios, cujo percentual de questões não-conformes se sobressaíram: • Feedback: o Ptolemy II apresentou quase 60% de questões não-conformes, tendo em vista que, por existir uma documentação muita extensa, muitas tarefas executadas não fornecem um feedback apropriado para o usuário ficar mais seguro do que está fazendo; • Flexibilidade: o sistema deve disponibilizar diversas formas de se realizar uma tarefa e possibilitar efetuar modificações. Com quase 67% de questões não-conformes, no Ptolemy II só é possível essa flexibilidade se o usuário conhecer Java e XML; • Proteção contra erros: esse critério diz respeito aos mecanismos de detecção e prevenção de erros de entrada de dados ou comandos e ações não recuperáveis. O Ptolemy II obteve mais de 85% de questões não-conformes, pois a maioria dos erros é detectada na validação dos arquivos XML e classes Java; Buscando atender às necessidades do software para torná-lo uma ferramenta apropriada para o ensino de Organização e Arquitetura de Computadores, o trabalho descreve duas melhorias: i) tornar sua interface mais amigável, com instruções em português, e para que instruções passo a passo sejam dadas aos alunos na montagem de seus ambientes na forma de atividades; ii) Verificar automaticamente os exercícios feitos pelos alunos e dar feedback sobre o que pode ser melhorado. 3. Framework Ptolemy Este trabalho se baseia no uso do Ptolemy [6], criado e mantido na Universidade de Berkeley, como uma ferramenta de ensino de Organização e Arquitetura de Computadores. Mas para conseguir êxito em tal objetivo, foram verificadas algumas barreiras para a utilização da ferramenta: i) Ptolemy é um software para fins científicos e industriais com interface pouca amigável para usuários inexperientes. ii) Ptolemy não oferece nenhum tipo de ajuda sobre como o aluno deverá montar seus ambientes. iii) Caso um professor configure um ambiente para que seja trabalhado por seus alunos, ele não terá controle sobre o que os alunos fizeram com o ambiente ou com os atores. Além destas barreiras, foi realizada uma análise de usabilidade no framework Ptolemy, buscando compreender e apontar as necessidades do software para torná-lo uma ferramenta de ensino eficaz, para auxílio na disciplina de Arquitetura de Computadores, de forma mais simples e mais amigável. Na realização da avaliação de usabilidade, foi utilizada a técnica diagnóstica de inspeção via checklist, com o auxílio da ferramenta Ergolist1, desenvolvida pelo Laboratório de Utilizabilidade da UFSC/SENAI (LabiUtil), coordenado pelo Prof. Dr. Walter de Abreu Cybis. Essa ferramenta possui dezoito checklists, totalizando 193 questões. Na Figura 1 é apresentado um gráfico referente às estatísticas da avaliação de usabilidade do Ptolemy II na ferramenta Ergolist. O eixo horizontal apresenta os 4. Extensão Ptolemy para fins educacionais A extensão desenvolvida permite que o usuário modele suas próprias arquiteturas utilizando o repositório de atores específicos para a disciplina de Arquitetura de Computadores. A nova interface contribuirá para que o professor demonstre na prática aos seus alunos tópicos abordados na ementa da disciplina, como: hierarquia de memória, registradores, barramentos, dispositivos de entrada/saída e a abordagem estrutural no estudo de computadores. De forma a especificar a nova arquitetura do Ptolemy para fins educacionais, foram utilizados padrões de projeto de interface [5], estudo de 1 Para acessar o Ergolist, visite: http://www.labiutil.inf.ufsc.br/ergolist/check.htm 15 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) Figura 1: Avaliação da usabilidade do Ptolemy algumas ferramentas educacionais (seção 2) e abordagens para software educativo. Inicialmente foram desenvolvidos atores para representação dos componentes da arquitetura do processador MIPS como estudo de caso. Com a aplicação da ferramenta almeja-se estender sua aplicação para outras arquiteturas de processadores, memórias, dispositivos de Entrada e Saída etc. A Figura 2 apresenta uma visão geral da estrutura para modelagem e simulação em Arquitetura de Computadores, seguindo uma aplicação didática do professor para o aluno. Na nova interface é visualizada as mudanças sugeridas para criação dos roteiros didáticos e da avaliação automática dos alunos, respectivamente, (a) Descrição do Exercício e (b) Verificação Automática. 4.1. Interface gráfica Vergil 5. Roteiro didático A nova interface foi implementada na versão 8.0.1 do Ptolemy. Seu desenvolvimento foi na linguagem de programação Java, utilizando o compilador Eclipse Helios Service Release 2. Ao acessar a interface gráfica [6], o usuário decidirá se deseja abrir um ambiente de modelagem para: (a) criar um novo projeto ou abrir um projeto já desenvolvido, podendo este ser (b) um projeto salvo no computador ou (c) um roteiro didático também salvo. No caso (a) o usuário utilizará a interface para modelagem e simulação, onde terá duas opções: i) criar um roteiro didático, clicando na opção do menu “Descrição de Exercício” (Figura 3), utilizando os atores da biblioteca, selecionando os obrigatórios, suas propriedades e as conexões entre eles, além de salvá-lo e/ou simulá-lo ou ii) criar seu próprio modelo utilizando a biblioteca, salvá-lo e/ou simulá-lo. Em relação ao item (b) o usuário poderá abrir projetos existentes, adicionar/editar atores, salvá-los e simulá-los por último, o item (c) possibilita que ele abra roteiros didáticos existentes, resolvendo os exercícios propostos, verifique possíveis erros através do Checker e receba um checklist da avaliação. Para ilustrar o roteiro didático aplicado aos alunos, é detalhado um exercício sobre o comportamento de uma Unidade Lógica Aritmética – Arithmetic Logic Unit (ALU) que é a unidade do processador que executa as operações aritméticas e lógicas referenciadas pelos códigos de operações (opcodes). O ator criado para representar a ALU suporta oito operações (AND, OR, ADD, SUB, MUL, DIV, SLT, E NOR) em um circuito combinacional que calcula uma saída de 32 bits baseada em duas entradas de 32 bits e uma entrada de 4 bits que especifica a operação da ALU a ser executada além de computar bits para verificar se existiu overflow. No Ptolemy, a simulação é orientada ao ator. Logo, o aluno poderá estudar o caminho de dados e controle verificando o fluxo de dados através da simulação do cenário, pois as interações entre atores são mensagens com base na passagem dos dados de entrada e saída. No exercício sugerido (Figura 3), o aluno deverá resolver a equação (2X+Y)2 utilizando números binários. O exercício consiste na utilização das operações da ALU, calculando a equação na base binária, onde X = 10 e Y = 11. 16 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) Figura 2: Visão geral da estrutura da nova interface gráfica O aluno deverá adicionar seis atores (ALU) ao cenário, juntamente com outros atores que correspondem aos valores de X,Y (ator Const) e Operação da ALU, além dos atores Clock e Display (para exibir o resultado), conectando-os de forma que suas relações efetuem os cálculos para a equação sugerida, informando na sua saída o valor binário numa sequência de 32 bits. A Figura 5 ilustra dois exemplos da resolução do exercício, um feito de forma correta, e outro com erros cometidos pelo aluno. No projeto “ALUAluno.xml” o aluno seguiu todas as recomendações da Figura 3 e teve como resultado o valor “11001”. Já no projeto “ALUAlunoErrado.xml” o aluno não seguiu as recomendações para o valor de entrada de Y, adicionando o valor “111” e conectou indevidamente a entrada “operation code” da ALU4 na relação conectada a operação da ALU (Multiplicação), sendo a correta a da (Adição). Logo, o resultado não foi o esperado. Outras mensagens de erros foram configuradas para colaborar com o aprendizado do aluno. Na Figura 6 são apresentados os erros referentes à propriedade do ator Y (valor indevido) e das conexões dos atores e suas relações. 6. Considerações Finais Figura 3: Exercício proposto De forma a oferecer um feedback ao aluno, o mesmo poderá utilizar a opção do menu Verificação Automática para corrigir possíveis erros no seu cenário. Onde, caso o aluno não adicione algum ator obrigatório ao cenário, será informado uma mensagem de erro, conforme a Figura 4. A extensão do Ptolemy ainda está em desenvolvimento, mas pelo seu potencial educacional que possibilita aos alunos criarem seus próprios modelos, combinarem novos elementos em diferentes níveis de abstração e ampliarem seus estudos, esperase com sua aplicação em sala de aula que os alunos possam resolver roteiros didáticos e verifiquem os erros existentes de uma forma clara e intuitiva. Na próxima etapa, a extensão criada incorporará a verificação automática na nova interface gráfica e será aplicada com alunos de graduação em Ciências da Figura 4: Erro (Ator obrigatório pendente) 17 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) Figura 5: Resolução do exercício Figura 6: Mensagens de erro informadas no projeto do aluno Computação a fim de efetuar testes e analisar os resultados produzidos. Computadores (WEAC) – Simpósio Brasileiro de Arquitetura de Computadores. SBAC, Ouro Preto - MG, 2006. Referências [5] Koscianski, A., Soares, M. S. Qualidade de Software: Aprenda as metodologias e técnicas modernas para o desenvolvimento de software. Editora: Novatec. São Paulo – SP. 2007. [1] Branovic, I, Giorgi, R e Matinelli, E., 2004. WebMIPS: A New Web-Based MIPS Simulation Environment for Computer Architecture Education, Proceedings of the 31st Annual International Symposium on Computer Architecture, Munchen, Germany. [6] Lee, A, 2007. Neuendorffer, S. Tutorial: Building Ptolemy II Models Graphically. Technical Report No. UCB/EECS-2007-129. [2] Brito, A. V. Simulação Baseada em Atores para o Ensino de Arquitetura de Computadores. Apresentado no Workshop sobre Educação em Arquitetura de Computadores (WEAC) – Simpósio Brasileiro de Arquitetura de Computadores. SBAC, São Paulo, 2009. [7] Nikolic, B., Radivojevic, Z., Djordjevic, J and Milutinovic V, 2009. A Survey and Evaluation of Simulators Suitable for Teaching Courses in Computer Architecture and Organization. IEEE Transactions on Education, Vol. 52, No. 4. [3] Brorsson, M. MipsIt: a simulation and development environment using animation for computer architecture education. In Proceedings of 2002 Workshop on Computer Architecture Education: Held in Conjunction with the 29th international Symposium on Computer Architecture (Anchorage, ACM, New York, NY, 12. p. WCAE‘02.Alaska),p.1 -8. [8] Scott, M. WinMips64, version 1.5, School of Computing, Dublin City University, Ireland, 2006. [9] Vollmar, K. and Sanderson, P., A MIPS Assembly Language Simulator Designed For Education. The Journal of Computing Sciences in Colleges, Vol. 21, No. 1, 2005. [4] Felix, A. F; Pousa, C. V. e Carvalho, M. B. DIMIPSS: Um simulador didático e interativo do MIPS . Apresentado no Workshop sobre Educação em Arquitetura de 18 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) Arquitetura de Computadores em uma Simples Folha de Papel Ricardo Ferreira Departamento de Informática Universidade Federal de Vicosa Vicosa, MG, 36570 000 [email protected] Abstract retornar ao tópico e explicar ou esclarecer o assunto ou se pode seguir adiante, tendo uma ideia precisa da percepção dos alunos. Notebooks ou celulares também podem ser usados neste tipo de abordagem através da rede WIFI que está disponı́vel na maioria dos ambientes universitários. Já os clickers e o software especı́fico tem que ser adquiridos para tal finalidade. Apesar da teconologia ajudar e trazer grandes benefı́cios, muitas vezes o uso intensivo de projetores multimı́dia gera muita dispersão na turma. Este trabalho apresenta uma ideia simples de baixo custo e de fácil implementação. Durante as aulas cada aluno recebe um ou no máximo duas folhas de papel (como ilustrado nas figuras no final do artigo). Na folha tem exercı́cios numéricos sobre o assunto da aula que o estudante faz durante a dinâmica da aula. O professor pode fazer uso de simuladores de circuitos ou processadores, do projetor multimı́dia ou de um simples quadro negro. O importante é a participação do estudante para o qual são delegadas várias pequenas tarefas para ficar ativo e participativo na aula, gerando dúvidas e questões. Com o objetivo de ilustrar a abordagem de ensino, dois temas e alguns exercı́cios serão serão utilizados. O primeiro envolve o conceito de memória virtual e memória cache. Apesar de simples o conceito de memória virtual, a implementação devido ao uso de ponteiros e indireções gera dúvidas nos estudantes. O segundo exercı́cio é mais direto, encaminhamento no pipeline de 5 estágio do MIPS. Este trabalho apresenta um estudo inicial do uso de uma ferramenta simples para coletar um retorno dos alunos e uma participação efetiva nas aulas de arquiteturas de computadores. Os estudantes fazem exercı́cios simples em conjunto com o professor ou isoladamente, durante a apresentação dos conceitos teóricos. Dois temas são abordados no artigo: memória e encaminhamento de instruções. Os exercı́cios são formatados para ficar em uma folha de papel. O uso foi avaliado apenas em um semestre letivo e apresentou uma melhora qualitativa. Os resultados ainda são preliminares para uma avaliação quantitativa. 1. Introdução Estudos recentes vem mostrando uma preocupação em mudar a abordagem tradicional de ensino para os novos jovens da geração Y [3]. Os jovens nascidos nas duas últimas décadas são considerados por alguns pesquisadores como geração Y. São dinâmicos, fazem muitas tarefas simultâneas, mas tem grande dificuldade ao ficarem presos em uma sala de aula para manter a concentração por mais de 50 minutos [3]. A disponibilidade da tecnologia com a internet e suas facilidades de uso vem gerando modificações na sociedade. Os jovens fazem uso intenso da internet, por meio de notebooks, telefones celulares, se comunicam por redes sociais, etc. O uso da tecnologia é uma alternativa com a disponibilidade de recursos multimı́dia, ferramentas colaborativas em sı́tios na internet com animações, vı́deos, etc. Uma ferramenta interessante são os clickers [2]. O professor faz a exposição da aula e várias pausas entre os tópicos. Mostra perguntas simples no formato de múltipla escolha, falso ou verdadeiro, afirmativas. O estudante responde com o clicker escolhendo a opção sim ou não, a, b ou c. No mesmo instante o professor tem o retorno dos alunos e sabe se deve 2. Memória Os conceitos de memória cache e virtual são muito importantes para a compreensão do alto desempenho dos computadores e sua evolução nas últimas décadas. A ideia de memória cache é simples e em geral bem assimilada pelos estudantes. O uso de notação decimal e um exercı́cio numérico simples gera rapidamente resultados na compreensão das polı́ticas de escrita. A seção 2.1 mostra um exercı́cio simples com este intuito. O conceito de paginação em dois nı́veis com a paginação da tabela de páginas e uso 19 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) L 0 1 2 ... 9 Cache Tag Dado 12 1 12 2 40 3 tempo → Memória End Dado L 0 1 2 Figura 1. Cache e Memória no Estado Inicial Cache T D 12 1 12 2 40 3 t 43 24 01 d 430 241 5 tempo → t d 32 10 41 411 t d 41 45 Memória End Dado 120 1 121 2 402 3 012 12 430 430 320 320 241 241 411 411 9 Figura 2. Cache e Memória no Estado Final de TLB (Translation lookaside buffer), gera mais dúvidas. A seção 2.2 apresenta outro exercı́cio que é formatado em uma única folha que ajuda os estudantes a entender o conceito. e ler, mostra a polı́tica write-back em funcionamento. O uso de notação decimal facilita o conceito inicial da cache. Variações com outras caches com totalmente associativa ou mapeamento por conjunto, polı́tica write through de escrita e o conceito de bloco podem ser incorporados ao mesmo formato de exercı́cio. A notação binária ou hexadecimal também pode ser usada. 2.1. Cache A metodologia deste trabalho, envolve a elaboração de exercı́cios numéricos para os tópicos de arquitetura. Os exercı́cios tem o objetivo de complementar os exercı́cios já disponibilizados em livros clássicos da literatura [4]. Iremos ilustrar um exercı́cio simples com uma cache de mapeamento direto, sistema decimal para facilitar a introdução ao assunto, polı́tica de escrita write-back. O estudante tem que preencher o contéudo inicial da cache que aparece em branco (veja figura 1). Executar a sequência de operações e deixar o conteúdo final da cache, mostrando o rastreio das operações. Os estudantes compreende sem dificuldade os conceitos e manipulando os tags e dados numericamente ao executar o exercı́cio. Suponha o seguinte enunciado para o exercı́cio: ”Ex1. Mapeamento Direto: Suponha uma cache no sistema decimal com 10 posições e uma memória com 1000 posições. Suponha que o Tag tenha os valores 12, 12, 40 armazenados nas linhas 0, 1 e 2 e armazene os dados 1, 2 e 3 nas linhas 0, 1 e 2, respectivamente. Para a memória suponha que mem(i) armazena i. Execute uma sequência de escritas e leituras: Ler 430, escrever 10 em 320, ler 241, escrever 5 na 012, ler 411 e escrever 45 na 411. Suponha a polı́tica write-back (só atualiza a memória no caso da retirada do dado da cache). Qual o estado final dos dados na cache e na memória ? ”. O resultado final do exercı́cio é ilustrado na Figura 2. A evolução dos tag e dos dados na cache são mostrados ao longo da linha de tempo, entre as tabelas da cache e memória, onde t é usado para os tags e d para os dados. Na memória, como usamos um campo extra para endereço, os endereços podem ser ordenados ou aparecer na sequência do exercı́cio mostrando no tempo como a memória é alterada ou não, já que a polı́tica write-back é adotada no exercı́cio. A primeira coluna mostra a linha e deixa claro o conceito do Tag do mapeamento direto. O fato de escrever 2.2. Virtual Esta seção apresenta um exemplo de paginação em dois nı́veis com TLB. O exemplo é dimensionado para o estudante visualizar todo o possı́vel conteúdo da memória real e virtual em uma única folha como ilustrado na figura 3. A página de memória possui 4 entradas. A memória real tem 32 entradas em 8 molduras. A memória virtual tem 64 entradas em 16 páginas. O tamanho da TLB pode variar, no exemplo usamos uma TLB com 4 entradas. A tabela de página tem 2 nı́veis. O primeiro nı́vel tem 2 bits ou 4 entradas. Cada entrada leva a 2 bits ou 4 entradas no segundo nı́vel. Ou seja, são dimensionados no tamanho da página. O endereço virtual tem 6 bits no formato P1 P0 S1 S0 O1 O0 . Onde P é o primeiro nı́vel, S o segundo nı́vel e O é o offset dentro O endereço real tem 5 bits no formato M2 M1 M0 O1 O0 , onde M é a moldura e O é o offset. A TLB realiza o mapeamento direto entre P1 P0 S1 S0 para M2 M1 M0 . Vários conceitos são trabalhados no exercı́cio. Suponha o conteúdo inicial das memórias ilustrado na Figura 3. Considere o exemplo sem o uso da TLB para o estudante realizar o mapeamento e verificar que são feitos três acessos a memória real em um caso de sucesso no mapeamento. Suponha a busca do endereço virtual 3 = 000011. Suponha que o primeiro nı́vel da tabela fique sempre alocado na moldura 000. Para o primeiro nı́vel onde P1 P0 = 00, a posição de memória real 00000 é lida e retorna 7 = 111. Para o segundo nı́vel como S1 S0 = 00, a posição de memória real será 11100 ou 28 em decimal que será lida e retornará o valor 6 = 110. Finalmente, o dado é encontrado no terceiro acesso no endereço real 11011 onde a moldura será a moldura 6 e o offset é 3, o acesso retornará o dado t, que é 20 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) diferente do dado da memória virtual onde a posição 3 armazena d. Ou seja, o estudante visualiza que a memória real pode ser atualizada sem a necessidade de atualizar a virtual. A TLB pode ser introduzida, mostrando que a página 0 está diretamente mapeada na moldura 6. As outras entradas da TLB podem ser mostradas ao estudante. Outra questão é perguntar para o estudante se ele consegue fazer o mapeamento inverso e responder as perguntas: Quais as molduras que estão ocupadas e quais estão livres ? Quais as páginas que estão mapeadas na memória real e em quais molduras ? Neste exemplo apenas a moldura dois está livre. As molduras 0, 7 e 3 armazenam a tabela de página e as molduras 1, 4, 5 e 6 armazenam as páginas. No caso de uma falha no segundo nı́vel, como a moldura 2 está livre, ela pode ser alocada para a nova página. Após a alocação da moldura 2, o que ocorre com a TLB ? Se outra página for acessada, quais molduras e páginas serão afetadas ? Neste ponto, os conceitos de polı́tica de escrita, substituição na memória e na TLB são apresentados. O que deve ser feito: remover uma moldura com um pedaço da tabela de página ou com uma página fı́sica. Todos estes pontos podem ser abordados com uma sequência de operações de leitura e escrita. Para facilitar o rastreio das operações em sequências, uma marcação de tempo com t1 , t2 , . . . , tn pode ser usada para que o estudante mostre no diagrama da memória da figura 3 o que foi modificado em cada passo. Neste exemplo, são executadas 5 operações de t1 a t5 . O conteúdo da memória real, virtual e TLB são atualizados e o estudante tem uma visão completa de todas as operações e decisões envolvidas. curso de Organização de Computadores II da Universidade Federal de Viçosa. Em relação aos anos anteriores houve uma melhora significativa na compreensão e visualização. Principalmente quando os estudantes tinham em mão o diagrama e vão acompanhando o professor para depois fazerem exercı́cios sozinhos que valem poucos pontos (1 ponto em geral), mas são instrumentos de avaliação. 4. Resultados Preliminares Como o trabalho ainda é inicial, alguns exercı́cios já vem sendo utizados a vários semestres e outros a apenas um ou dois semestres. Algumas considerações iniciais podem ser observadas. A tabela 1 mostra a média das notas dos estudantes de Organização de Computadores II nos anos de 2009, 2010 e 2011. Aparentemente parece que a metodologia não surgiu efeito com a queda da média e aumento das reprovações, mas iremos explicar a seguir. Por exemplo, em uma cidade a média de pães é 1 por pessoa, onde uma pessoa come três pães e outras duas nenhum. Temos que olhar com calma a distribuição das notas na geração da média. Em 2011, o uso da metodologia com exercı́cios em quase todas as aulas foi aplicado. Em 2010 e 2009, os estudantes apenas faziam pequenas avaliações de 1 ponto de 10 em 10 dias sobre os tópicos. A diferença em 2011 foi disponibilizar sempre para o estudante uma ou duas folhas com desenhos e exercı́cios que ele vai completando e fazendo durante a aula. Esta dinâmica tem deixado os estudantes menos dispersos e mais colaborativos e além de exporem suas dúvidas e participarem mais das aulas. Ano 2009 2010 2011 3. Encaminhamento Esta seção mostra um exercı́cio simples onde o estudante necessita completar o caminho de dados do processor MIPS com pipeline de 5 estágios. O objetivo é que o estudante participe e encontre os caminhos dos dados em presença de encaminhamentos, interagindo durante a aula. Ele recebe o desenho básico e apenas precisa completar algumas linhas no instante de tempo correto. Este material complementa o texto do livro clássico de Patterson e Hennessy [4]. Em geral no diagrama de tempo, o estudante iniciante não tem muita dificuldade para visualizar, mas muitos tem dúvidas na hora de desenhar os fios extras no caminho de dados. Na figura 4 são ilustrados dois trecho de programas em execução. Primeiro, o diagrama é entregue ao estudante para completar. A figura mostra a solução do exercı́cio, onde cada fio extra (linha em destaque no caminho de dados) adicionado é numerado e o número deve aparecer no diagrama de tempo da execução das etapas pipeline das instruções. Este exercı́cio tem sido usado nos três últimos anos do Alunos 28 38 43 Média 68,4 66,1 65,6 Reprovados 2 2 10 65+ 75 73 77 85+ 1 3 5 Tabela 1. Desempenho nos anos de 2009, 2010 e 2011 De 2009 para 2010, a média caiu 2 pontos, porém a turma aumentou em 10 alunos ou em 30%. Vale ressaltar que a turma de 2011 foi a maior turma em número de alunos e teve a média de 65,6. Outro ponto que merece uma consideração é o número de reprovações. Nos anos de 2009 e 2010, apesar de ter apenas 2 alunos reprovados, as questões das avaliações eram mais simples que as questões de 2011. Outro ponto que muitos estudantes foram aprovados com notas mı́nimas entre 60 e 65, sendo 7 estudantes em 2009 e 15 em 2010. O número de reprovados foi pequeno pois os estudantes que obtiveram notas entre 60 a 65, tiveram oportunidades de avaliações extras. Em 2011 não houve ajuste nas notas, apesar de 12 estudantes nesta faixa 21 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) de 60 a 65, 5 estudantes tiveram média superior a 85 pontos. Em 2009 apenas 1 estudante obteve 85 pontos. Em 2010 três estudantes obtiveram desempenho superior a 85 pontos. Ainda é cedo para concluir, mas o que pode ser observado que mesmo com avaliações mais rigorosas em 2011 e um número significativo de reprovados, a média da turma se manteve. A parcela da turma que participou efetivamente dos exercı́cios contribuiu para que notas maiores sustentassem a média. Não foi usado nenhum ajuste (provas suplementares, exercı́cios extras) que beneficia-se alunos que tivessem notas próximas do mı́nimo exigido. Em 2011, 46% dos alunos tiveram média acima de 65 pontos. Em 2010 foram 55% e em 2009 forma 68% da turma. Apesar de ter o menor número de alunos com média superior a 65 pontos em 2011, eles tiveram notas melhores que gerou uma média próxima aos anos anteriores mesmo com avaliações mais rigorosas. Para os alunos com notas acima de 65 pontos, a média em 2009 foi 75, em 2010 caiu para 73 e em 2011 subiu para 77. Ou seja, a metade da turma que participou efetivamente dos exercı́cios em 2011 foi aprovada com notas maiores que dos anos anteriores. Outro efeito, foi a redução nas dúvidas de última hora antes das grandes avaliações. Os estudantes se mostraram mais preparados. Não foi medido, mas o tempo médio para resolução das provas também diminuiu. Metade da turma resolvia a prova em torno de uma hora a uma hora e meia, uma vez que já estavam mais preparados para resolver as questões da avaliação. nais, máquinas de estados, assembler e projeto de um processador multiciclo. O segundo curso para o qual foi apresentada a metodologia deste trabalho tem 60 horas e envolve os tópicos de pipeline e técnicas de paralelismo a nı́vel de instrução, memória cache e virtual, arquiteturas paralelas. A avaliação dos desempenho da metodologia através das notas nos três últimos anos é muito preliminar, pois o conjunto dos estudantes é muito pequeno. O que foi observado é a melhoria na iteração professor/aluno, o aumento no número de perguntas e participação nas aulas. Estes pontos não foram medidos. Apenas dois exercı́cios foram detalhados no artigo, mas uma série de exercı́cios foram aplicados. Por restrições de espaço não foram apresentados aqui. Uma adaptação da metodologia está também em fase de testes. Durante as aulas práticas no laboratório, o estudante responde a questões e exercı́cios gerados no ambiente didático PVANET da Universidade Federal de Viçosa e no ambiente do Google Formulários. O problema da ferramenta do Google é a falta de formatação nas questões e a impossibilidade de colocar figuras. Apesar disso, para questões simples, o Google é bem fácil para o professor formular o questionário, gerar um link WEB, onde os estudantes respondem rapidamente as questões de múltipla escolha ou check box. O professor tem imediatamente acesso aos gráficos das respostas e pode avaliar se os pontos abordados estão sendo repassados para os alunos. O mais importante é o retorno e a participação dos alunos nas aulas, seja por meio de uma simples folha de papel ou um recurso multimı́dia/internet. Outro estudo recente, mostrou a importância de se estudar computação sem o uso de computadores para desenvolver o raciocı́nio computacional. O experimento vem mostrando bons resultados com crianças e jovens [1]. Em resumo, os resultados mostraram que metade da turma participou das atividades com um retorno na melhoria das notas e redução no tempo médio para realizar as avaliações. Em se tratando de um curso de Ciência da Computação, onde os alunos em geral não se interessam pelo hardware, outras estratégias devem ser avaliadas e experimentadas para ampliar ainda mais a participação. 5. Considerações Finais Este trabalho apresenta uma ferramenta simples e talvez considerada obsoleta, onde retornamos a uma folha de papel. Apesar de simples, o mecanismo aumenta a participação do estudante em sala de aula e evita a dispersão com a participação efetiva dos estudantes que passam a responder as questões durante a aula, ter dúvidas e compreender o assunto. Uma solução mais atual com apoio da tecnologia seria o uso de tablet que já vem sendo feito em algumas escolas. A ideia pode ser transportada para o tablet sem problema. Pois a metodologia propõe o uso de exercı́cios quantitativos para o estudante colocar em prática durante a aula os conceitos que vão sendo introduzidos, reduzindo as abstrações através de exemplos concretos onde ele pode interagir e calcular. Uma ressalva importante é o contexto dos estudantes da Universidade Federal de Viçosa. Apenas estudantes do curso de Ciência da Computação foram avaliados, onde alguns tem mais dificuldade ou pouca familariadade com apresentação estrutural e paralela dos circuitos digitais. Os estudantes tem apenas dois cursos na área de hardware. O primeiro curso de Organização tem carga horária de 90 horas e o contéudo: algebra Booleana, circuito combinacio- Referências [1] M. Fellows. Computer Science Unplugged. Lulu, 2005. [2] J. Fitch. Student feedback in the college classroom: A technology solution. Educational Technology Research and Development, 52:71–77, 2004. 10.1007/BF02504773. [3] L. Leszczynski. A cara da geração y. Revista Ensino Superior, 2010. [4] D. A. Patterson and J. L. Hennessy. Computer organization and design - the hardware / software interface (4. ed.). Morgan Kaufmann, 2009. 22 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) Figura 3. Exercı́cio de Memória Virtual em 2 nı́veis de paginação 23 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) Figura 4. Exercı́cio de Encaminhamento 24 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) BIP IV: Especificação e Suporte na Ferramenta Bipide Paulo R. M. Rech, Paulo V. Vieira, Cesar A. Zeferino e André L. A. Raabe Universidade do Vale do Itajaí - Univali Rua Uruguai, 458, C.P. 360, 88302-202, Itajai, SC, BRASIL {paulorech; pauloviniccius, zeferino, raabe}@univali.br Resumo Para facilitar a utilização desses processadores no ensino foi desenvolvida também uma ferramenta educacional chamada Bipide [4]. A família BIP foi concebida em níveis de complexidade de arquitetura e organização crescentes, sendo que o processador BIP I oferece apenas instruções de aritmética e de acesso à memória [5]. O BIP II inclui instruções de desvio condicional e incondicional [6], enquanto que o BIP III acrescenta suporte para operações de lógica bit-a-bit. O µBIP, por sua vez, foi desenvolvido com o intuito de ser utilizado no ensino de Sistemas Embarcados, agregando periféricos e funcionalidades típicas de microcontroladores aos processadores BIP [7]. A ferramenta Bipide consiste em um ambiente de desenvolvimento integrado (IDE - Integrated Development Environment) baseado na arquitetura dos processadores BIP I e BIP II, oferecendo funcionalidades que auxiliam na compreensão e utilização desses processadores no ensino. Nesse ambiente, é possível criar pequenos algoritmos em Portugol (pseudolinguagem utilizada para facilitar o ensino de algoritmos) e executá-los passo a passo. A interface do Bipide utiliza animações gráficas que ilustram a organização do processador e destacam a linha de código Portugol sendo executada e o assembly correspondente. Esta abordagem didática tem sido utilizada ao longo de três semestres letivos e tem trazido resultados positivos conforme mencionado em [4]. No entanto, os processadores BIP I, II e III não suportam chamadas de procedimentos ou a interação com o usuário através de operações de entrada-e-saída, o que restringe sua utilização a algoritmos muito simples. Esse aspecto tem gerado limitações quanto ao uso da abordagem para o ensino de conceitos mais abrangentes da aprendizagem de programação. Analisando a bibliografia de apoio utilizada nas disciplinas da área de algoritmos, percebe-se que muitos autores [8, 9] adotam problemas que necessitam interações como entrada-e-saída de dados. Baseado nisso, conclui-se que a interação, via entrada-e-saída de dados, é um Para reduzir a abstração de conceitos de lógica de programação nos primeiros semestres de cursos da área de computação, a família de processadores BIP e o ambiente de desenvolvimento integrado Bipide foram desenvolvidos. Os processadores da família BIP disponibilizados na primeira versão da ferramenta Bipide apresentam algumas limitações, pois não oferecem suporte a chamadas de procedimentos e a interação com o usuário através de operações de entrada e saída, o que impossibilita sua utilização em problemas mais complexos ou que necessitem de alguma interação. Neste contexto, este trabalho apresenta o desenvolvimento do processador BIP IV, que estende as características dos processadores BIP, agregando novas funcionalidades e aumentando a abrangência de sua utilização. Também foram implementadas modificações na IDE Bipide a fim de suportar o uso do processador BIP IV. Com isto, aumenta-se a interação do aluno com a ferramenta e seu uso na resolução de problemas mais complexos. 1. Introdução Com o objetivo de auxiliar o processo de ensinoaprendizagem nos semestres iniciais de cursos de Ciência da Computação, foi proposta uma abordagem interdisciplinar envolvendo conceitos de arquitetura e organização de computadores nas disciplinas ligadas a aprendizagem de programação [1]. Este enfoque parte de um problema frequente relatado por pesquisadores da área, os quais apontam o alto nível de abstração envolvido nos conceitos de programação como um dos principais aspectos que dificultam a aprendizagem inicial de programação. Acredita-se que a redução da abstração envolvida nesses conceitos pode diminuir os problemas de aprendizagem apresentados pelos alunos iniciantes [2,3]. Para atender esse objetivo, foi desenvolvida uma família de processadores de baixa complexidade denominada BIP (Basic Instruction-set Processor). 25 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) componente importante para auxiliar a despertar mais interesse por parte do aluno. Nesse contexto, a solução apresentada neste trabalho consiste na criação de um novo integrante da família BIP, o BIP IV, que incorpora instruções de entrada-e-saída (E/S), manipulação de vetores e chamadas de procedimentos. Para suportar as novas funcionalidades do BIP IV, várias alterações no ambiente Bipide foram necessárias, incluindo mudanças na estrutura da pseudolinguagem Portugol. Entre os benefícios da implementação em questão estão: (i) maior interação do aluno com a ferramenta; (ii) aprendizagem de novas funcionalidades e seu funcionamento no processador; (iii) extensão do uso da ferramenta para disciplinas de semestres posteriores aos já aplicados, uma vez que permite algoritmos mais complexos; e (iv) a continuidade da pesquisa relacionada à abordagem didática interdisciplinar. de instrução composto por apenas dois campos: o código de operação (de 5 bits) e o operando (de 11 bits) [6]. O acumulador é utilizado como operando implícito da maioria das instruções. A organização dos processadores BIP é baseada em uma estrutura de memória do tipo Harvard, com memórias separadas para dados e programa [6]. O processador é estruturado em dois blocos: o Controle e o Caminho de Dados. O primeiro é responsável por buscar e decodificar as instruções da memória de programa, gerando sinais de comando para a execução das instruções pelo Caminho de Dados. Os processadores BIP representam níveis incrementais de complexidade de arquitetura e de organização. O processador BIP I [5] suporta instruções aritméticas e de transferência. O processador BIP II [6] estende o BIP I agregando instruções de desvio condicional e incondicional necessárias para a implementação de laços de repetição. O processador BIP III agrega instruções de lógica bit-a-bit, enquanto que o µBIP [7] adiciona funcionalidades típicas de microcontroladores. 2. Família de processadores BIP Uma prática essencial para o ensino de computação é a experimentação realizada em laboratórios, onde os estudantes podem aplicar o conhecimento teórico adquirido em sala de aula na solução de problemas práticos relacionados às disciplinas estudadas. Nesse aspecto, a escolha de um modelo de processador com características pedagógicas que possibilitem sua utilização em um contexto educacional é de extrema importância para a demonstração dos conceitos relacionados à arquitetura e à organização do computador. Dessa forma, alguns autores e professores optam pela utilização de processadores reais e comerciais, enquanto outros preferem usar um modelo hipotético de processador disponível na literatura [10, 11]. Outra abordagem utilizada é o desenvolvimento de um modelo específico de processador que atenda as necessidades pedagógicas do curso [1, 10]. Os processadores BIP foram desenvolvidos por pesquisadores do Laboratório de Sistemas Embarcados e Distribuídos e do Grupo de Informática na Educação da UNIVALI (Universidade do Vale do Itajaí) com o intuito de estabelecer uma relação entre a programação de alto nível e sua representação em hardware, auxiliando o aprendizado nas disciplinas “Arquitetura e Organização de Computadores” e “Algoritmos e Programação”, ministradas nas fases iniciais dos cursos de graduação na área de Computação [4]. Os processadores BIP são baseados na arquitetura do processador PIC (Programmable Intelligent Computer), utilizam uma arquitetura orientada a acumulador e não possuem banco de registradores. Todas as instruções são baseadas em um único formato 3. O ambiente integrado Bipide O ambiente Bipide foi concebido pela necessidade de um simulador educacional que permitisse relacionar os conceitos de lógica de programação com aspectos definidos no hardware dos processadores BIP I e BIP II. Este ambiente possibilita a criação de algoritmos em Portugol e sua execução passo a passo. A ferramenta permite visualizar o código correspondente ao programa em linguagem assembly e o estado dos componentes da organização do processador através de animações que ilustram o funcionamento interno do processador [4]. O subconjunto da linguagem Portugol utilizada no ambiente Bipide foi definido segundo as características arquiteturais dos processadores BIP I e BIP II. Foram disponibilizadas estruturas de desvio e de laços de repetição, além dos elementos básicos necessários para estruturar um algoritmo [4]. O Bipide apresenta um compilador integrado, construído através da ferramenta ANTLR3 (ANother Tool for Language Recognition V.3) [12]. Foram construídos os analisadores léxico e sintático e definidas as ações semânticas para geração do código em linguagem de montagem e tratamento de erros. Utilizou-se também a IDE ANTLRWorks, a qual é composta por um ambiente de desenvolvimento de gramáticas para o ANTLR3. O módulo de simulação do Bipide permite a visualização simultânea dos programas em Portugol e assembly, assim como a organização do processador, o 26 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) que contribui para a redução das abstrações apresentadas nos conceitos de programação [4]. Para o desenvolvimento do Bipide, utilizou-se a tecnologia WPF (Windows Presentation Foundation) [13] e a ferramenta Expression Blend [14]. Essas tecnologias possibilitam a criação de aplicações com interfaces ricas, agregando ao Bipide funcionalidades mais intuitivas e recursos de animação que permitem uma maior interatividade com o usuário. simulação, bem como a representação dessas em linguagem de baixo nível. 5. Arquitetura do BIP IV A especificação do BIP IV aproveita algumas instruções presentes no µBIP e estende o BIP III. Além de possibilitar operações de entrada-e-saída e chamada de procedimentos, foram incluídas instruções de deslocamento e de manipulação de vetores. Para suportar as operações de E/S, foi adotado o método de E/S mapeada em memória, utilizado no µBIP, não sendo necessárias grandes modificações na arquitetura e na organização do processador [7]. Os registradores IN_PORT (entrada) e OUT_PORT (saída) são utilizados para acesso à interfaces de E/S. A Tabela 1 resume a arquitetura do BIP IV, identificando as classes de instrução suportadas pelos diferentes processadores da família (do BIP I ao BIP IV). O código de operação dos processadores BIP é composto por 5 bits, permitindo identificar até 32 instruções. O conjunto de instruções do BIP IV é formado por 28 instruções. Do total de 32 códigos de operação possíveis, restam três para novas instruções, sendo que um é utilizado para representar a instrução de retorno de interrupção no µBIP [7]. Ressalta-se que as instruções acrescentadas ao BIP IV foram herdadas do processador µBIP. A organização do BIP IV foi baseada na organização do processador BIP III com a adição de alguns componentes presentes no µBIP para suportar manipulação de vetores e chamada de sub-rotinas, além dos pinos de E/S (registradores IN_PORT e OUT_PORT). Estes componentes incluem uma pilha de suporte a procedimentos, onde será salvo o endereço de memória da instrução seguinte à chamada da subrotina e uma unidade de manipulação de vetores. 4. Proposta interdisciplinar As iniciativas de criação de processadores com objetivo didático normalmente buscam apoiar as disciplinas diretamente envolvidas, como “Arquitetura e Organização de Computadores”. A criação da família de processadores BIP, com suas diferentes versões, permitiu trabalhar níveis de complexidade diferentes e com isso explorar os conceitos de arquitetura e organização de computadores em diferentes disciplinas do primeiro, segundo, terceiro e sétimo semestres do curso de Ciência da Computação da UNIVALI. De forma semelhante, esse aspecto facilitou o estabelecimento de relações entre as diferentes disciplinas envolvidas, numa abordagem interdisciplinar. [1]. Sabe-se que a utilização de processadores simplificados no ensino, como é o caso dos processadores BIP, auxilia a melhorar a compreensão de conceitos relacionados à aprendizagem inicial de programação reduzindo seu grau de abstração. Essa abordagem pode facilitar a aprendizagem dos alunos que apresentam problemas em lidar com abstrações [1]. Motivados por essa proposta, uma série de trabalhos foram desenvolvidos, disponibilizando novos recursos e ferramentas a serem utilizados na abordagem citada, entre os quais a criação de um microcontrolador baseado na arquitetura BIP (o µBIP) [7] e o ambiente de desenvolvimento Bipide [4], o qual inclui simuladores para os processadores BIP I e BIP II. A fim de dar continuidade a esta proposta interdisciplinar, um novo integrante da família BIP foi desenvolvido. Este processador, designado BIP IV, possui funcionalidades intermediárias aos processadores BIP III e µBIP, permitindo operações de E/S, manipulação de vetores e o uso de subrotinas. Estes recursos suprem uma necessidade apresentada pelos processadores disponibilizados anteriormente, no que diz respeito às restrições arquiteturais impostas pelas versões anteriores. O suporte a este novo processador no ambiente Bipide também foi implementado, permitindo ao aluno compreender as novas funcionalidades através de 6. Suporte ao BIP IV no Bipide Para implementar o suporte ao BIP IV na ferramenta Bipide, foram levantadas características relacionadas à interfaces de E/S de simuladores de arquitetura similares. Essas características permitiram definir aspectos que orientaram a construção da interface de E/S utilizada no Bipide. A seguir descrevese a análise realizada e a implementação do suporte ao BIP IV na ferramenta Bipide. 27 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) Tabela 1. Resumo da Arquitetura do BIP IV Tamanho da palavra de dados 16 bits Tipos de dados Inteiro de 16 bits com sinal –32768 a +32767 Tamanho da palavra de instrução 16 bits Formato de instrução 15 14 13 12 11 10 9 8 7 6 5 4 Cód. Operação Operando Modos de endereçamento Registradores Classe de instução (Processadores) 3 2 1 0 Direto: o Operando é um endereço da memória Imediato: o Operando é uma constante Indireto: o Operando é um endereço base de um vetor que é somado ao INDR para o cálculo de um endereço efetivo da memória de dados ACC: acumulador PC: contador de programa STATUS: registrador de Status INDR: registrador de índice SP: apontador do topo da pilha Controle: HLT Armazenamento: STO Carga: LD e LDI Aritmética: ADD, ADDI, SUB e SUBI Desvio: BEQ, BNE, BGT, BGE, BLT, BLE e JMP Lógica booleana: AND, OR, XOR, ANDI, ORI, XORI e NOT Deslocamento Lógico : SLL e SRL Manipulação de vetor: LDV e STOV Suporte a procedimentos : RETURN e CALL (BIP I-IV) (BIP II-IV) (BIP III-IV) (BIP IV) A Tabela 2 apresenta a comparação entre os sistemas analisados e a proposta implementada no Bipide. Outras características relacionadas ao desenvolvimento de programas em linguagem de alto nível e à simulação da organização também foram levantadas. Observa-se na comparação realizada, que os sistemas Bipide e MipsIt apresentam as mesmas características, sendo os únicos a permitir programação em linguagem de alto nível. No entanto, a arquitetura do processador MIPS, ilustrada no MipsIt, possui complexidade acima do desejável para a apresentação de conceitos iniciais de programação. Já a arquitetura do BIP, tendo sido criada para propósito didático, possui a simplicidade necessária para ilustração desses conceitos. Percebe-se ainda que o ambiente Bipide possibilita a simulação da organização dos processadores BIP, permitindo que o aluno visualize graficamente, por meio de animações, o funcionamento dos componentes do processador. Considera-se essa característica um grande diferencial da ferramenta, contribuindo para o aprendizado. 6.1. Análise de trabalhos similares A análise de trabalhos similares considerou simuladores de arquitetura de processadores que permitam E/S. Os simuladores analisados compreendem o NeanderWin [15], GNUSim8085 [16], MipsIt [17], ABACUS [18] e WinMIPS64 [19]. A seguir descrevem-se as principais características observadas nos trabalhos citados. Dentre os simuladores estudados, alguns apresentaram interfaces de E/S baseadas em controles simples, como representações de chaves e LEDs, outros apresentam também visores ilustrando valores em decimal ou em hexadecimal. Essas interfaces possibilitam resolver problemas simples, onde a entrada e a saída são números, ou até problemas que simulam o controle de algum dispositivo acoplado ao processador e que tenham a necessidade de ler ou escrever em determinados bits da porta. Com isso, optou-se representar no Bipide uma interface baseada em chaves e LEDs, juntamente com opções de edição e leitura em decimal. 28 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) Simulador NeanderWin GNUSim8085 MipsIt ABACUS WinMIPS64 Bipide Tabela 2. Características dos Sistemas Analisados Simula Organização Suporta linguagem de alto nível Não Não Não Não Sim Sim Não Não Não Não Sim Sim Interface de E/S Chaves e visor Campo Editável Chaves e LEDs Chaves e LEDs Terminal Chaves e LEDs Os recursos do Bipide, ilustrados na Figura 1, são descritos a seguir: 1. Simulações: Disponibiliza botões que permitem controlar a simulação, incluindo a simulação passo a passo; 2. Velocidade: Permite controlar a velocidade da simulação do programa; 3. Portugol: exibe o programa Portugol que está sendo simulado destacando a linha em execução; 4. Assembly: Exibe o código assembly gerado pelo compilador. A linha do programa em execução é destacada bem como todo o conjunto de instruções que correspondem à linha de código em alto nível destacada na janela Portugol; 5. Organização do Processador: exibe a imagem da organização do processador (BIP I, BIP II, BIP III ou BIP IV), bem como as animações que representam as instruções em execução. Na ilustração é exibida a organização do BIP IV; 6. Registradores: exibe os valores dos registradores do processador durante a simulação do programa; 7. Descrição: exibe o nome e a descrição de cada instrução executada; e 8. Interface de E/S: permite ao usuário visualizar e informar valores em decimal ou binário. 6.2. Implementação Para contemplar o suporte ao BIP IV, o ambiente Bipide foi alterado de modo a suportar as seguintes características dos processadores BIP III e BIP IV: (i) operações de E/S; (ii) utilização de vetores; (iii) chamada de sub-rotinas com passagem de parâmetros; e (iv) operações de lógica. Para isso, as alterações feitas no Bipide incluem mudanças na gramática Portugol e novas verificações nas ações semânticas, assim como alterações na geração de código assembly e mudanças no simulador. Em sua versão anterior, o simulador do Bipide permitia escolher entre os processadores BIP I e BIP II, refletindo em mudanças nas instruções disponíveis, ilustrações e animações do processador. Para manter esse conceito, o simulador foi alterado de modo a permitir escolher, além do BIP I e BIP II, os processadores BIP III e BIP IV. Entre as alterações feitas na IDE, destaca-se ainda a interface de E/S, ilustrada pelo item 8 da Figura 1, onde é possível visualizar o conteúdo dos registradores $in_port e $out_port. Pode-se ainda atribuir valores ao registrador $in_port através das chaves disponíveis na interface ou digitando-os em notação decimal. Figura 1. Interface do Bipide 29 Workshop sobre Educação em Arquitetura de Computadores (WEAC 2011) A interface de E/S adotada permite a resolução de problemas onde a entrada e a saída são números. Além disto, possibilita simular o controle de dispositivos periféricos acoplado ao processador, que necessitam ler ou escrever em determinados bits da porta. Dessa forma, imagina-se um conjunto de problemas que podem ser ilustrados por esse ambiente, os quais vão desde o desenvolvimento de um algoritmo que realiza a soma de dois números inteiros até o controle da rotação de um motor de passo (onde a ativação de determinados bits em uma sequência determinada de passos são necessários para produzir o movimento de rotação do dispositivo). [2] 7. Conclusões [6] [3] [4] [5] Este artigo apresentou o desenvolvimento do processador BIP IV e a implementação de alterações realizadas na IDE Bipide para suportar este processador. As alterações realizadas na IDE Bipide ampliaram seu potencial pedagógico, permitindo o desenvolvimento de algoritmos mais complexos do que os suportados pela versão anterior da ferramenta. Esta amplitude de possibilidades favorece a adoção do ambiente Bipide como software de apoio em outras disciplinas dos cursos da área de computação, que até então tinham dificuldades na utilização da ferramenta devido às restrições impostas pela arquitetura dos processadores BIP disponíveis anteriormente. Isso amplia o potencial pedagógico de uma abordagem educacional interdisciplinar que busca reduzir o nível de abstração envolvido em conceitos de programação, colaborando para a melhoria do ensino de computação. Com as novas funcionalidades e possibilidades de exploração disponibilizadas, pretende-se obter novas evidências sobre a redução dos problemas de aprendizagem associados à abstração dos conceitos abordados. Pretende-se ainda promover o uso dos processadores BIP e da ferramenta Bipide em outras disciplinas do curso, como Compiladores e Circuitos Digitais. Outros trabalhos futuros incluem o suporte a diferentes linguagens de alto nível, como C e Java, e a realização de experimentos práticos que permitam avaliar empiricamente os benefícios obtidos com as novas funcionalidades disponibilizadas. [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] Referências [1] C. A. Zeferino et al., Um Enfoque Interdisciplinar no Ensino de Arquitetura de Computadores. In: Arquitetura de Computadores: educação, ensino e aprendizado. Martins, C; Navaux P.; Azevedo, R.; Kofuji, S. (Org.). No Prelo, 2011. [18] [19] 30 M. McCracken et al., A Multi-National, MultiInstitutional Study of Assessment of Programming Skills of First-year CS Students. SIGCSE Bulletin, USA, n. 33, v. 4, p. 125-140, 2001. R. Lister et al. A multi-national study of reading and tracing skills in novice programmers. ACM SIGCSE Bulletin, USA, v. 36, n. 4, p. 119-150, dez. 2004. P. V. Vieira, A. L. A. Raabe, C. A. Zeferino, Bipide – ambiente de desenvolvimento integrado para a arquitetura dos processadores BIP. Revista Brasileira de Informática na Educação, Vol. 18, No 1, 2010. D. Morandi et al., Um processador básico para o ensino de conceitos de arquitetura e organização de computadores. Hífen, Uruguaiana, v. 30, p. 73-80, 2006. D. Morandi, A. L. A. Raabe, C. A. Zeferino, Processadores para Ensino de Conceitos Básicos de Arquitetura de Computadores. In: WEAC 2006, Proceedings... Porto Alegre: SBC, 2006. p. 17-24. M. C. Pereira, C. A. Zeferino, uBIP: a simplified microcontroller architecture for education in embedded systems design. In: IP Based Electronic System Conference & Exhibition - IP 08, 2008, Grenoble. Proceedings.... Grenoble : Design and Reuse, 2008. p. 193-197. J. A. N. G. Manzano, J. F. Oliveira, Algoritmos: lógica para desenvolvimento de programação de computadores. 17. ed. São Paulo, SP: Érica, 2005. N. Ziviani.,Projeto de algoritmos: com implementações em Java e C++. São Paulo, SP: Thomson, 2007. B. Nikolic et al., A Survey and Evaluation of Simulators Suitable for Teaching Courses in Computer Architecture and Organization. IEEE Transactions on Education, USA, v. 52, n. 4, p. 449458, 2009. A. Clements, Selecting a processor for teaching computer architecture. Microprocessor and Microsystems, USA, v. 23, n. 5, p. 281-290, 1999. P. Terence, The Definitive ANTLR Reference, The Pragmatic Bookshelf, Dallas, Texas, 1997. Microsoft Corporation. Windows Presentation, 2011. Microsof Corporation. Expression Blend, 2011. J. A. S. Borges, G. P. Silva, NeanderWin – um simulador didático para uma arquitetura do tipo Acumulador. In: WEAC 2006. Proceedings… Porto Alegre: SBC, 2006. GNUSim8085. GNUSim8085, 2003. M. Brorsson, MipsIt: A Simulation and Development Environment Using Animation for Computer Architecture Education. In: Workshop on Computer Architecture Education, 2002, Anchorage, Alaska. Proceedings… New York, NY: ACM, 2002. R. M. Ziller, ABACUS, 1999. M. Scott, WinMIPS64, 2010.