Workshop sobre Educação em Arquitetura de Computadores - WEAC 2008 CSML-SimE: Ambiente de Simulação Multi-nível de Sistemas de Computação Gabriela da Silva, Marco Santos Chalub, Samuel Domingues Rocha Oliveira, Vinícius Guimarães, Carlos Augusto Paiva da Silva Martins Pontifícia Universidade Católica de Minas Gerais [email protected], [email protected], [email protected], [email protected], [email protected] conceitos de sistemas de computação apresentados para o aluno. A ferramenta foi criada para atender qualquer usuário, independente do seu nível de conhecimento. Quanto às entradas, o ambiente suporta três tipos: High Level Language (HLL), Memory Trace (MT) ou Assembly. A entrada em linguagem de alto nível permite ao usuário observar o comportamento e resultado do programa, além de permitir a análise do impacto de um código no desempenho computacional. Se for desejo do usuário simplesmente analisar o desempenho de um MT, então o usuário poderá simular somente o nível de HM. Mas ainda assim, se o interesse do usuário, for o de partir do Assembly para quaisquer das simulações, basta ativar tal entrada. Assim é possível obter várias combinações entre entradas e tipos de simulação, o que traz flexibilidade e não determinismo ao ambiente. Na parte 2 são apresentados os trabalhos relacionados, seis simuladores semelhantes foram encontrados [1,2,3,4,5,6]. Na parte 3 é apresentado o CSML-SimE. Na parte 4 é feita uma comparação e são apresentadas suas vantagens diante dos outros simuladores. E finalmente nas partes 5 e 6 são apresentadas a conclusão e as referências respectivamente. Resumo A maioria dos simuladores de hierarquia de memória e de nível Instruction Set Architecture (ISA) tem simulação isolada e aqueles que possuem simulação multi-nível são pouco didáticos. Além disso, os simuladores analisados possibilitam apenas o Memory Trace (MT) e o código Assembly como entrada de dados. Com a finalidade de proporcionar simulação multi-nível foi proposto e desenvolvido o CSML-SimE, ambiente de simulação de sistema de computação que unifica essas características. Com a utilização desse ambiente será possível analisar o resultado e o desempenho computacional a partir de uma High Level Language (HLL), Assembly ou MT de forma didática, facilitando a utilização por usuários de diferentes níveis de conhecimento. 1. Introdução Muitos são os simuladores que têm simulação isolada de Hierarquia de Memória (HM) [1,2,3,4] e de nível Instruction Set Architecture (ISA) [2,3,5,6]. Por outro lado, poucos propiciam a simulação integrada ou individual dos mesmos [3]. Além das ferramentas que integram esses dois conceitos serem minoria, raramente oferece didática. Dessa forma, propôs-se construir um ambiente de simulação que atendesse aos requisitos não encontrados, ou seja, um simulador com níveis integrados que simulasse didaticamente a HM juntamente com nível ISA e ao mesmo tempo fosse flexível tanto com relação ao código, quanto á utilização. O objetivo do desenvolvimento do CSML-SimE é proporcionar um ambiente no qual se pode direcionar a simulação de acordo com o interesse de estudo ou pesquisa. Além de promover maior dinamismo aos 2. Trabalhos Relacionados Ao desenvolver a pesquisa do estado da arte foram encontrados e analisados alguns simuladores [1,2,3,4,5,6] dentre os quais encontraram-se diversas características importantes para um ambiente de simulação. Tal análise tem como finalidade realizar um levantamento das melhores características de cada ferramenta, para chegar-se às características ideais. O intuito é promover a integração dessas e se necessário 17 Workshop sobre Educação em Arquitetura de Computadores - WEAC 2008 Ao analisar o estado da arte percebeu-se que raros são os simuladores ou ambientes de simulação didáticos preparados para atender diferentes estágios de conhecimentos de usuários. Foi possível também perceber que a maioria dos simuladores analisados e pesquisados oferece simulação isolada de nível ISA ou de HM, o que agrega especificidade a ferramenta e a faz uma ferramenta de propósito único. Buscando criar uma ferramenta de propósito geral e não destinada a apenas um público alvo, propôs-se o desenvolvimento do CSML-SimE, ambiente de simulação que tem como finalidade manter as simulações isoladas comumente encontradas agregando a estas a opção de integração das mesmas. adicionar algumas outras que não se encontrarem no estudo realizado. Várias são as características que se considera importantes em um ambiente de simulação de Sistemas de Computação, dentre as quais se pode destacar: portabilidade, simulação isolada ou simulação integrada de HM e nivel ISA, possibilidade de entrada de dados em alto (HLL) ou baixo nível (Assembly), didática, entre outros. Diante disso, irá ser feito uma análise crítica dos simuladores pesquisados em relação às características padrões já citadas. O LBGCache [4] é um simulador simples e didático para análise do comportamento e funcionamento estrutural de memórias cache e apresenta uma simulação muito pouco detalhada, por este motivo o LBGCache consegue fornecer ao usuário uma didática altamente eficiente. O SimpleScalar [3] é um ambiente onde simuladores podem ser agregados. Ao contrário do LBGCache, o SimpleScalar não possui uma boa didática, pois as simulações são apresentadas em um nível de detalhamento extremamente alto, considerando que o usuário leigo não consegue absorver informações consistentes. O SimpleScalar não apresentada uma portabilidade considerável, pois deve ser instalado em uma maquina local e apenas em sistemas UNIX. Assim como o SimpleScalar, o simulador SPIM [5] não possui uma boa portabilidade por ser uma aplicação desktop. O SPIM apresenta apenas a entrada de linguagem Assembly e possui apenas o nível de simulação ISA, assim este simulador é caracterizado por sua extrema limitação. Outro simulador chamado WinDLX [6] é altamente didático por utilizar de várias animações no fluxo das instruções, mas é semelhante ao SPIM quanto às suas funcionalidades e portabilidade. É necessário que seja instalado em uma máquina local e oferece apenas entrada de dados em Assembly e simulação do nível ISA. O MH-TEDSim [1] e o SIM-MIPS&HM [2] foram desenvolvidos durante a graduação, por alunos da PUC Minas, e juntos apresentam qualidades na qual se acredita serem fundamentais em um ambiente de simulação. Ambos são amigáveis, não apresentando dificuldades na utilização, além de oferecerem simulação completa da HM. O primeiro possui a simulação por execução de código Assembly como principal característica, uma vez que suporta um grande número de instruções. O segundo proporciona uma simulação detalhada do nível ISA possibilitando a análise avançada do resultado a partir de um código Assembly. 3. CSML-SimE O desenvolvimento do CSML-SimE foi definido, especificado e desenvolvido de forma a disponibilizar um ambiente de simulação que una as características de todos estes simuladores, proporcionando simulação multi-nível e didática para usuários de diferentes níveis de conhecimento. No CSML-SimE foram aproveitadas as melhores características dos simuladores analisados. Após o levantamento dos requisitos para a ferramenta, foi proposta e desenvolvida uma arquitetura flexível que permite escolher o tipo de entrada de dados. Foram desenvolvidas as simulações tanto do nível ISA, quanto da HM e as entradas em HLL, em código Assembly ou em MT. Ao escolher o tipo de entrada deve-se configurar o tipo de simulação do código de entrada em nível ISA, HM ou ISA e HM integrados. O CSML-SimE foi desenvolvido em linguagem JAVA para plataforma Web. A arquitetura do software é estruturada em três camadas com o objetivo de favorecer a reutilização com o propósito de aumentar sua extensibilidade. Figura 1. Arquitetura do fluxo de execução 18 Workshop sobre Educação em Arquitetura de Computadores - WEAC 2008 A camada Graphical User Interface na qual constam as classes de comunicação com o usuário, o permite configurar a entrada de dados e simulação desejados. A segunda camada é a de controle de dados, onde se encontram as classes responsáveis pela filtragem dos dados, estabelecendo-se melhor estrutura, preparando os dados para a próxima camada e fazendo a comunicação entre HLL, Assembly e MT. Por fim, a camada Simulação constitui-se de classes da simulação do nível ISA e da HM. Figura 2. Entrada em HLL 4. Resultados de Verificação O usuário pode salvar o código gerado ou simplesmente continuar a simulação. Ele pode simular isoladamente o nível ISA, a HM ou integrar ambos os níveis. Para esse exemplo foi feita a simulação integrada com o objetivo de verificar o resultado e analisar o desempenho computacional. O próximo passo é a simulação do nível ISA integrada com a HM, feita a partir do código Assembly e do MT gerado. Essa simulação pode ser feita passo-apasso ou direta. Pode-se verificar o resultado nos registradores verificando o nível ISA. Já o desempenho da HM, por sua vez, pode ser analisado através do tempo gasto e de outros dados estatísticos que representam o desempenho computacional. O Gráfico 1 compara o desempenho dos dois código. O ambiente proporciona a simulação multi-nível que é importante em situações que seja interessante analisar o desempenho e o comportamento. Será utilizado um exemplo de convolução de imagens para demonstrar a simulação dos níveis de HM e ISA, a partir da HLL. Considere uma figura e máscara representada pelas seguintes matrizes: 1 3 5 8 2 7 1 9 8 1 1 2 4 7 6 5 1 1 1 1 1 1 1 1 1 Tabela 1. Imagem (esquerda) e máscara (direita) No algoritmo de convolução são utilizados quatro laços de repetição que fazem o controle do deslocamento da máscara na imagem. O trecho de código abaixo demonstra a entrada de dados HLL na linguagem L: inteiro l, j, m, n; //declaração de variáveis l := 0; j:=0; m:=0; n:= 0; //inicialização while ( i <= 4 ) Begin //algoritmo de convolução while ( j <= 4) while (m <= 3) while (n < = 3) … endwhile; Os dois primeiros laços representam as dimensões da imagem e os outros dois a máscara. Para demonstrar as vantagens da simulação multi-nível, foi comparado esse trecho de código na linguagem L com outro, definido pela inversão dos laços tanto da imagem quanto da máscara. Entrando com um trecho de código para simulação pode-se gerar o Assembly, de acordo com a Figura 2. Gráfico 1. Desempenho entre os algoritmos de convolução Apenas ao observar a quantidade de cache hit e cache miss e, conseqüentemente, o tempo gasto na execução, pode-se perceber a grande diferença entre ambos os trechos. A explicação para a diferença é simples, uma vez que o primeiro trecho de código segue o sentido de mapeamento da memória do compilador, já o segundo segue o sentido invertido. Dessa forma pôde-se verificar que existem diferentes formas de chegar a um mesmo resultado, e que cada uma pode ter uma implicação mais ou menos significante no desempenho computacional. Portanto podemos concluir que a simulação integrada oferece informações importantes para determinados casos, contribuindo para a compreensão tanto do nível ISA quanto da HM. 19 Workshop sobre Educação em Arquitetura de Computadores - WEAC 2008 CSMLSimE LBGCach e SPIM SimpleScal ar WinDLX MHTEDSim SIMMIPS&HM Didático X X - - X X X Entrada em Assembly X X X X X X X Simula nível de HM isolado X X - X - X X Simula nível ISA isolado X - X X X - X Entrada em MT X - - - - X X Entrada em HLL X - - X - - - Simulação Multi-nível X - - X - - - Tabela 2. Análise comparativa entre características de um simulador de sistema de computação didático 6. Referências 5. Conclusão [1] SILVA, GABRIELA ; MORAIS, RAFAEL D. ; OLIVEIRA, SAMUEL D. R. ; PEREIRA, VINÍCIUS G. ; MARTINS, C. A. P. S. . “MH-TEDSim: Simulador de hierarquia de memória com simulação dirigida por execução ou por rastro”. In: Workshop em Sistemas Computacionais de Alto Desempenho - Concurso de Trabalhos de Iniciação Científica (WSCAD-CTIC) 2007, Porto Alegre: Sociedade Brasileira de Computação, 2007. p. 1-4. Como apresentado, o ambiente desenvolvido possui todas as características traçadas como objetivo. O ambiente oferece simulação integrada do nível ISA e da HM, pode ser utilizada para aprendizagem e atividades de pesquisa. Portanto pode-se dizer que a primeira onda do projeto foi alcançada com sucesso. Durante o estudo de outros simuladores não foi encontrado nenhum com todas as características oferecidas pelo CSML-SimE. Como principais contribuições desse trabalho estão a possibilidade de se simular mais de um nível (ISA e HM), diferentes tipos de entrada (HLL, Assembly e MT) e a disponibilização de um ambiente de simulação. Com isso pôde-se contribuir para o estudo do comportamento e desempenho de determinado código, além de auxiliar na aprendizagem e pesquisa por usuários de muitos níveis de conhecimento diferentes. Por fim deve-se ressaltar a implementação do conceito de ambiente, que tem como objetivo promover a independência entre módulos, facilitando a inclusão de novas funcionalidades e possibilitando a customização da simulação. Com a conclusão desse trabalho, novos projetos são previstos para o ambiente de simulação. Proporcionar ao usuário a possibilidade de configurar o sistema computacional através da integração de simulação de multiprocessadores visando o estudo dos sistemas computacionais atuais, a adição de novas linguagens de alto nível conhecidas, como Java e C. [2] AZEVEDO, HUGO C.; MARTINS, C. A. P. S. . “SIMMIPS&HM - Simulador didático do nível ISA do MIPS e de hierarquia de memória”. In: Workshop em Sistemas Computacionais de Alto Desempenho - Concurso de Trabalhos de Iniciação Científica (WSCAD-CTIC) 2007. Porto Alegre: Sociedade Brasileira de Computação, 2007. p. 1-4. [3] BURGER, D.; AUSTIN, T. M. . “The SimpleScalar Tool Set”, Version 2.0. Technical Report #1342, Computer Sciences Department, University of Wisconsin-Madison, Jun. 1997. [4] MOREIRA, L.; PONTES, B.; FERNANDES, G.; VIDAL, J. M.; WANDERLEY NETTO, E. B. . “LBGCACHE V2.0: Simulador Didático para Análise do Comportamento e Funcionamento Estrutural de Memórias Caches”. In: Anais III Congresso de Iniciação Científica do CEFETRN , Dec, 22-23, Natal, Brazil, 2005 [5] SPIM Simulator http://cs.wisc.edu/~larus/spim.html [6] WinDLX Simulator ftp://ftp.mkp.com/pub/dlx/ftp 20 Home Home Page, Page,