Simulação Integrada de Processador no Nível ISA e ... · montagem do processador Intel® 8085,...

4
Simulação Integrada de Processador no Nível ISA e Hierarquia de Memória Henrique Santos Rocha, Leonan Felipe de Souza Vasconcelos, Daniel de Carvalho Gomes, Gladyston Pereira Batista, Carlos Augusto Paiva da Silva Martins Departamento de Ciência da Computação- Pont(ficia Universidade de Minas Gerais, Av. Dom José Gaspar. 500- CEP 30535-610- Belo Horizonte, MG- Brasil {a89396. a89417, a89409, a89405}@alunos.dcc.pucmg.br. [email protected] Resumo O estudo e a realizaçâo de testes em arquitetura de compuwdores pode ser ./(1ci litado através do uso de simuladores. Estes podem auxiliar 110 e11si11o e na compreenscio do objeto simulado porque simuladores reproduzem comportamentos espec(ficos do objeto real dentro de um ambiente controlado. O objetivo deste a11igo é propor como pode ser projetado um simulador que auxilie 110 estudo de hierarquia de memória. Esta fe rramenta possui um recurso d(f erenciado em relaçao à simuladores simples - processador virtual 11ivel /SA - que permite reali zar simulações mais pró:r:inu:1s da real execuçâo de um 11úcleo de programa acessa nd o a hierarquia de memória. 1. Introdução Durante a graduação, os autores deste artigo desenvolveram um simulador de memória cache para a disciplina Arquitetura de Computadores. O propósito deste primei-o trabalho prático era implementar uma ferramenta de simulação simples, para ser utilizada pelos próprios autores, a fim de aprimorar o conhecimento teóri co sobre hi erarquia de memória. Contudo, após a conclusão da disciplina, decidiu-se estender o trabalho para um projeto de iniciação científica, c uj a motivação era estudar as características desejáveis de um simulador para que ele pudesse ser utilizado por terceiros de forma simples e dinâmica. Realizaram-se então buscas na Internet a fim de ana li sar os smuladores de memória cache existentes[ 1)[2][3]. Percebeu-se que os simu ladores encontrados eram simples demais ou complicados demais. Pensando nesta questão, o trabalho de graduação foi reformulado e acrescido de novas funcionalidades, dando origem à inplementação de um simulador que fosse trivial de se utilizar, mas que oferecesse recursos diferenciados em relação aos simuladores simples. O software implementado, JPACS - Ja va Processar and Cache Simulator - é capaz de sim ul ar uma hierarquia de memória, possuindo configurações ajustáveis de acordo com o tamanho, tempo de acesso e outros parâmetros. Deste modo é possível comparar o 172 desempenho de configurações distintas para um mesmo conjunto de acessos à memória (mem01:v trace). Figura 1. Janelas Memória Cache e Processador No processo de de senvolvimento optou-se por implementar também um simulador de processador, assim como uma linguagem de programação montadora (assembl y). Essa linguagem possui instruções básicas necessárias para a criação de núcleos de programas práticos, como multiplicação de matrizes. Logo, a simulação aproxima-se da realidade, gerando os acessos à memória cache e à prin cipa l de acordo com as instruções executadas pelo processador virtual, como na figura I. Antes de prosseguir co m a leitura recomenda-se a consulta de um outro artigo submetido pelos autores (4], em http://sourceforge.net/docman/?group id=84799. que ap r ese nta a ferramenta de simulação alvo da aná li se deste. 2. Características desejadas As principais características visadas durante a concepção de uma ferramenta de simulação, como projeto de iniciação científica, deveriam ser refinadas e aprimoradas para irem além dos requisitos fixados pelo

Transcript of Simulação Integrada de Processador no Nível ISA e ... · montagem do processador Intel® 8085,...

Simulação Integrada de Processador no Nível ISA e Hierarquia de Memória

Henrique Santos Rocha, Leonan Felipe de Souza Vasconcelos, Daniel de Carvalho Gomes, Gladyston Pereira Batista, Carlos Augusto Paiva da Silva Martins

Departamento de Ciência da Computação- Pont(ficia Universidade de Minas Gerais, Av. Dom José Gaspar. 500- CEP 30535-610- Belo Horizonte, MG- Brasil

{a89396. a89417, a89409, a89405}@alunos.dcc.pucmg.br. [email protected]

Resumo

O estudo e a realizaçâo de testes em arquitetura de compuwdores pode ser ./(1cilitado através do uso de simuladores. Estes podem auxiliar 110 e11si11o e na compreenscio do objeto simulado porque simuladores reproduzem comportamentos espec(ficos do objeto real dentro de um ambiente controlado.

O objetivo deste a11igo é propor como pode ser projetado um simulador que auxilie 110 estudo de hierarquia de memória. Esta ferramenta possui um recurso d(ferenciado em relaçao à simuladores simples -processador virtual 11ivel /SA - que permite realizar simulações mais pró:r:inu:1s da real execuçâo de um 11úcleo de programa acessando a hierarquia de memória.

1. Introdução

Durante a graduação, os autores deste artigo desenvolveram um simulador de memória cache para a disciplina Arquitetura de Computadores. O propósito deste primei-o trabalho prático era implementar uma ferramenta de simulação simples, para ser utilizada pelos próprios autores, a fim de aprimorar o conhecimento teórico sobre hierarquia de memória. Contudo, após a conclusão da disciplina, decidiu-se estender o trabalho para um projeto de iniciação científica, cuja motivação era estudar as características desejáveis de um simulador para que ele pudesse ser utilizado por terceiros de forma simples e dinâmica. Realizaram-se então buscas na Internet a fim de analisar os smuladores de memória cache já existentes[ 1)[2][3]. Percebeu-se que os simuladores encontrados eram simples demais ou complicados demais. Pensando nesta questão, o trabalho de graduação foi reformulado e acrescido de novas funcionalidades, dando origem à inplementação de um simulador que fosse trivial de se utilizar, mas que oferecesse recursos diferenciados em relação aos simuladores simpl es.

O software implementado, JPACS - Java Processar and Cache Simulator- é capaz de simular uma hierarquia de memória, possuindo configurações ajustáveis de acordo com o tamanho, tempo de acesso e outros parâmetros. Deste modo é possível comparar o

172

desempenho de configurações distintas para um mesmo conjunto de acessos à memória (mem01:v trace).

Figura 1. Janelas Memória Cache e Processador

No processo de desenvolvimento optou-se por implementar também um simulador de processador, assim como uma linguagem de programação montadora (assembly). Essa linguagem possui instruções básicas necessárias para a criação de núcleos de programas práticos, como multiplicação de matrizes. Logo, a simulação aproxima-se da realidade, gerando os acessos à memória cache e à principal de acordo com as instruções executadas pelo processador virtual , como na figura I.

Antes de prosseguir com a leitura recomenda-se a consulta de um outro artigo submetido pelos autores (4], em http://sourceforge.net/docman/?group id=84799. que apresenta a ferramenta de simulação alvo da análise deste.

2. Características desejadas

As principais características visadas durante a concepção de uma ferramenta de simulação, como projeto de iniciação científica, deveriam ser refinadas e aprimoradas para irem além dos requisitos fixados pelo

Anais WSCAD 2003

professor pam o trabalho da graduação. A princípio, era esperado apenas que fossem realizadas simulações de acessos à memória cache e principal , reportando o tempo total gasto em cada acesso, e as estatísticas finais de tempo médio, taxa de acerto e taxa de erro. O processo de simulação deveria ser realizado de dois modos: passo a passo ou instantâneo.

Para o projeto de inic iação científica decidiu-se implementar somente a simulação de memória cachc completamente associativa por motivos de simplicidade. sendo o ideal s imular todas arquiteturas de cachc. O usuário pode configurar facilmente a memória cachc c principal de diversas maneiras. As políticas de substituição de blocos são: LRU ou "mais recentemente utilizado" e FIFO ou " fila" . O simulador provê acesso seqüencia I ou paralelo à cache e à memória principal. Quanto à atualização da memória principal, pode-se configura r como Copy Back ou Write Through.

A fim de facilitar a realização de testes, os dados da simulação, ou endereços de acesso, podem ser salvos e carregados pelo simulador posteriormente.

Almejando uma simulação mais próx ima da realidade, há a opção de simul ar a execução de roteiros escritos em uma linguagem de programação. Um processador virtual executa instruções integrando memória cachc, principal. e registradores ao processo de simulação.

3. Interface com o usuário

. O público alvo inicial do simulador consistia de alunos de graduação, portanto, houve a preocupação em criar uma interface gráfica prática e intelig íve l. Considerando a impo rtância de estudar um simulador multi-plataforma, o pacote de desenvolvimento escolhido para implementar este estudo foi o Java [5].

Figura 2. Interface do JPACS

Dentro da área de trabalho criada para o simulador temos menus que dão acesso à todas funcionalidades do programa, barras de ferramentas com as principais

173

funções em janelas específicas e janelas separadas para cada componente, como pode-se observar na figura 2.

Inicialmente. as janelas que representam a memória cachc, a memória principal, osflags do processador junto com os registradores e a janela onde será exibido o relatório da simulação são apresentadas vazias. Ao criar uma nova simulação. ou abrir uma já gravada. obtém-se uma nova j anela onde é possível determinar os endereços a serem acessados ou escrever rotinas em linguagem de programação.

Acessando a opção " Iniciar Simulação", é iniciado o processo de simulação que, ao té rmino, apresenta um rel atório com todos os endereços acessados, os resultados das buscas na memória cache e a lg uns dados estatísticos.

4. Recursos do Simulador

O JPACS é formado por a lguns componentes, necessários para realização das simulações, tradução e interpretação dos códigos fonte. São eles: processador virtual (com flags e registradores), uma linguagem de programação semelhante à linguagem de montagem, memória cache e principal.

O processador virtual implementado dispõe de vinte e seis registradores e dois./lags (zero e sinal). A linguagem deSenvolvida para este processador virtual reconhece ao todo vinte e quatro instruções baseadas no linguagem de montagem do processador Inte l® 8085, detalhadas na ' Ajuda' do simulador. As instruções geradas pelo montador (byte codes) possuem tamanho variado, sendo que as mais simples ocupam uma célula apenas e as mais complexas, como as que recebem parâmetros, podem ocupar até três células.

Alg uns recursos foram criados para evitar falhas na simulação. Por exemplo, finalizar a execução do prog rama caso o processador tente executar uma instrução não reconhecida pelo mesmo. Além disso. no processo de tradução, instruções não reconhecidas são reportados ao usuário.

A memória principal pode ter seu tamanho ajustado de acordo com as necessidades do usuário, assim como seu tempo de acesso pode ser especificado. A memória cache pode ser detalhadamente configurada. É possível especificar a quantidade de s/ots, o tempo de acesso à cache e a quantidade de células de memória que cabem em cada bloco. A política de substituição de blocos pode ser FIFO ou LRU.

A interação entre memória cache e principal tarrbém pode ser ajustada conforme a finalidade dos testes. Quanto à atualização de blocos pode~e optar por Copy Back ou Write Through. Em Copy Back, quando alguma célula da memória é a lterada e esta encontra-se também na memória cache, o computador irá atualizar a memória principal somente quando o bloco correspondente for removido da cache e substituído por o utro. Isto ocorre apenas se tiver existido um acesso de escrita neste bloco

Anais WSCAD 2003

que sai. No caso de Write Through , a memória principal é atualizada imediatamente após ocorrer qualquer alteração no slot da cache.

O usuário pode ainda determinar se o acesso à memória cachc será paralelo à memória principal ou seqüencial. Para efeito de simulação, se o acesso for seqüencial, ao buscar um bloco que não está na cache será despendido o tempo de acesso à memória principal acrescido do tempo de acesso à memória cache. No caso de acesso paralelo, considera-se apenas o tempo de acesso à memória principal que é superior ao tempo de acesso da memória cachc.

As simulações podem ser feitas de forma imediata, ou instantânea, gerando um relatório com todos acessos realizados e dados estatísticos. Conforme a necessidade do usuário. pode ser realizada também uma simulação passo a passo. Esta segunda forma funciona como uma depuração, parando a execução da s imulação a cada acesso realizado. Este é um recurso bastante didático, auxiliando no processo de aprendizagem, podendo o usuário acompanhar a atualização das memórias, o estado dos.flags e dos registradores do processador.

Os dados do relatório de simulação foram estruturados no padrão XML, permitindo a exportação das características referentes aos objetos simulados, assim com o resultado da simulação em si, como mostrado na figura 4. Existe ainda a opção de salvar este relatório no formato de texto simples.

Após a implementação do programa percebeu-se a necessidade de gerar algum mecanismo que possibilitasse a tradução do JPACS para os mais diversos idiomas. Conseqüentemente, foi implementado o recurso de multi­linguagem já com o s idiomas português e ing lês. A criação de novos idiomas é totalmente independente do código fonte do software, podendo ser feita por usuários do simulador bastando salvar a tradução seguindo o padrão dos arquivos com extensão " properties", contido no pacote de instalação.

5. Utilização

O JPACS permite realizar simulações de três modos: i) processador - simular o funcionam ento de um

processador nível lSA (lnstruction Set Arcltitecture), através da execução de um programa escrito na linguagem do JPACS;

ii) hierarquia de memória - simular hierarquia de memória - cache e principal - realizando acessos à posições de memória definidas em uma lista de endereços;

iii) híbrido - integrando os outros dois modos, realizar a simulação de processador nível ISA com hierarquia de memória.

Para o modo "processador" o usuário pode editar arquivos do tipo texto contendo código fonte escrito na linguagem do processador virtual implementado. Ao

174

compilar este arquivo, o montador grava na memona principal os byte codes traduzidos do código fonte -figura 3. Ao iniciar a simulação. o processador virtual interpreta estas instruções. Desta forma. é possível simular estruturas de repetição, operações matemáticas, sub-rotinas c até tipos abstratos de dados, como pilhas e filas, aproximando as simulações das condições reais de execução de um programa.

EJ Assem... r:f rlf fBJ EJ Memória Principal r:f

l li::! l o ll a ll ~ l r F>asidfo :;;:nnteudo

< 2 I•

Ma in 5 ~ € . . 1 ~

... -~ .. ; lfvi J.., 5 IIJI ······· ........ . ...

!f vi B, 80 . . . 9 .. 2

Mvi C, 3 10 .a~ lfvi H, 55 .,_. . . . . . '11' . .. . . .

Jmp 25 f 3 P:rog 25 11 . 3 .. . . .. '' ' ú . . Ld.J: D, A 2

1~ . .

8 Add D, c St:r D, B .. 16 55

ú . .

. 1 ~ In c A . . . .. In c B '18 !f o v D, A 19 25

·2o o Sub D, H . . . . ..

Jnz 25 - ~ --- ~ i () Hal.t I -;- . ·,. . ' . o ... .. . . . '

F1gura 3. Arqu1vo Cesar.asm traduzido

Os roteiros programados podem ser editados no próprio simulador ou em um editor de textos, assim como os arquivos contendo as listas de endereços e seus respectivos tipos de acesso, leitura ou escrita.

Para simular o modo " hierarquia de memória" o usuário define as config urações da memória cache e principal. Pode-se salvar esta configuração e carregá-la posteriormente, armazenando-se vários perfis. Este tipo de simulação é denominado "acesso direto" pois ela independe do processador.

No modo "híbrido" o JPACS realiza a simulação do processador virtual nível lSA com hierarquia de memória. Esta é a mais completa forma de simulação pois utiliza todos os componentes do simulador. O usuário configura as memórias, e fornece o código fonte a ter sua execução simulada, conseqüentemente, gerando acessos à memória principal por intermédio da cache.

Todas as simulações podem ser realizadas passo a passo, permitindo ao usuário acompanhar pausadamente cada etapa do processo nas janelas processador, memória cache, memória principal e relatório de simulação. Entretanto é possível completar a simulação instantaneamente, permitindo a visualização dos resultados finais da simulação como um todo. Esta função é denominada "simulação relâmpago".

Anais WSCAD 2003

Um exemplo prático de utilização do modo ' 'híbrido" é apresentado na forma de tutorial s imples no outro artigo previamente citado e submetido pelos autores, sendo recomendada sua leitura. Caso o usuário necessite de maiores detalhes pertinentes ao processo de simulação, ao carregamento e armazenamento de arquivos envolvidos ou configurações. deve-se consultar os recursos de ajuda do JPACS. Este manual do simulador foi escrito em formato hipertexto. podendo ser visualizado no pró prio JPACS ou em um navegador HTML.

6. Resultados

Uma série de testes foi realizada para verificar a validade e a e fic iência do simulador. O relatório de simulação do JPACS possui o mesmo formato para os modos de simulação "hierarquia de memória" e " processador" . Devido à limitação de espaço deste artigo, será apresentado apenas um teste de simulação da execução de um programa criado na linguagem do processador virtual do JPACS, com uso do recurso de hierarquia de memória, ou seja, o modo " híbrido".

O simulador foi configurado conforme a figura 2: memória principal com o tamanho de I 024 células, I OOns de tempo de acesso. acesso paralelo a cache, sincronia Write Through; cache com 5 slots, 8 células por bloco, 15ns de tempo de acesso, política de substituição FI FO.

Utilizou-se o código apresentado na figura 3. cujo algoritmo consiste em copiar os byte codes do próprio programa, armazenado na memória. após a tradução feita pelo montador (posições 5 até 55 da nl!mória), para um outro trecho da mesma (a partir da posição 80), aplicando criptografia de César com chave igual a 3.

Como resultado da simulação, o JPACS gerou o relatório apresentado no formato XML, figura 4:

'l Relatono.xmt

<.JPACS> - ..:config>

- <memona'> <princ•pal tamanhc.="1024" tempoacesso='lDD" / >

+ <cache tamanho="!5" tempoacesso="l!5' tam~nhobloco="B">

</memona> </config>

- <r~latono>

<acesso numero='1216" posicao="47' natureza="lelturo' bloco="!5" tempc;="1!5' resultado="ocerto" / >

- <estast!Sl!cas> <mempnnciJjal acessos="76" tempoacesso="lDD" tempototai="76DD" /> <memcache acessos="1216' tompoacesso='1!5" tempototal="18240"

ta::aacerto:•97" taxaerro=·a• / > <tot.;l comcache="247DD' semcache="1216DD' ganho='D.7968' />

</estastisticas> </relatorio>

</JPACS>

Figura 4 . Relatório da Simulação - XML

7. Análise de Resultados

O simulador utilizado nos testes, o JPACS, mostrou ser

175

uma ferramenta eficiente que permite realizar simulações de processador nível ISA com hierarquia de memória de um modo simplificado c prático. Foi realizada uma simulação de um algoritmo relativamente simples, mas que gera uma lista de endereços de acesso à memória (mem01:v trace) complexa, dificil de ser criada manualmente.

O código fonte do programa foi traduzido com sucesso. sendo gravado na memória principal os byte codes correspondentes para que pudessem ser interpretados pelo processador virtual.

Ao inic iar a simulação, os endereços de memória desejados foram acessados da forma prevista. gerando os acessos correspondentes à memória cache c princ ipal.

Ao término da simulação, o conteúdo das memórias estavam condizentes com a configuração escolhida. Através do relatório de acesso gerado, pode-se observar que esta configuração proporc ionou um ganho de 79.60% de efi c iência no acesso à memória.

8. Conclusões

A pesquisa realizada na iniciação científica foi uma cxpenencia válida e gratificante, proporcionando contribuições aos autores e à comunidade acadêmica.

O processo de elaboração e implementação do JPACS permitiu que os autores compreendessem e maturassem a teoria de memórias cache. pois o projeto e implementação de simuladores é uma tarefa que exige um conhecimento aprofundado do assunto. a fim de que o modelo computacional reproduza as regras do mundo real com o grau de exatidão pretendido.

Os autores deixaram sua contribuição para a comunidade acadêmica, desenvolvendo um simulador que poderá ser utilizado por outras pessoas no processo de aprendizagem da teoria relativa à hierarquia de memória e ainda programação em linguagem de montagem.

Futuramente pretende-se comparar o JPACS com outras ferramentas de simulação e fazendo medições reais e paramétricas, dando continuidade à pesquisa, visando a constante evolução do processo de estudo e aprendizagem de arquitetura de computadores.

9. Referências

[I] Costa, A. S., Pousa, C. V., Martins, C. A. S. P., "Projeto e desenvolvimento de um simulador de memória cache: analise funcional e de desempenho", 3° WSCAD, Vitória, 2002. [2] Website SimpleScalar. - Em http://www.simplescalar.com [3] Website PCSpim. - Em

http://www .cs. wisc.cd u/-larus/spi m.htm I [4] Rocha, H. S., Vasconcelos, L. F. S, Gomes, D. C., Batista, G. P., Martins, C. A. P. S., "JPACS: Uma Ferramenta de Simulação Integrada de Processador NíveiiSA e Memória Cache". 4° WSCAD, São Paulo, 2003. [5] Website Sun - Java Em http:// java.sun.com