projeto e desenvolvimento de um software de simulação de ... · simulação de um asip no nível...

4
Projeto e Desenvolvimento de um Software de Simulação de um ASIP no Nível ISA Talles H. Medeiros 1 , João B. T. Corrêa 1 , Carlos A. P. S. Martins 2 Pontifícia Universidade Católica de Minas Gerais, Instituto de Informática LSDC - Laboratório de Sistemas Digitais e Computacionais, Prédio 34 Av. Dom José Gaspar 500, Coração Eucarístico, Belo Horizonte- MG - Bras il 1 { talles, joaobtc} @pucmg.br} 2 { caspm@ pucmi na s. br} Resumo- Neste artigo apresentaremos um software da simulação desenvolvido com a intenção de servir como uma ferramenta interativa para a validação do projeto de um microprocessador com um conjunto de instruções de aplicação específica (ASIP), onde o nível de abstração do objeto simulado a ser definido é o nível da arquitetura do conjunto de instruções (ISA). Com isto apresentaremos o mecanismo de simulação utilizado como de ferramenta de validação e, consequentemente, o microprocessador projetado. Palavras-chave- Simulação, ASIP, ISA, arquitetura, validação, software da simulação, validação do processador. Abstract- ln this article we will present a simulation software developed with the intention to serve as an interactive tool for the validation of the design of a microprocessor with a "set of instructions of specific application" (ASIP), where the defined levei of abstraction to be the simulated object is the levei of instruction set architecture (ISA). With these we will present the mechanism used for validating the tool of simulation and, consequently, the microprocessor designed. Keywords - Simulation, ASIP, ISA, architecture, validation, simulation software, processor validation. I. INTRODUÇÃO Neste artigo apresentaremos um software de simulação funcional de um mi croprocessador AS TP (app/icalion specific inslruclion sei processor) no nível ISA (inslruction sei archilelure) [TAN 99], que foi desenvolvido, no primeiro seme stre de 2000, durante a disciplina Arquitetura de Computadores no curso de Ciência da Computação da PUC Minas. A modelagem de sistemas por meio de simulação é sem dúvida nenhuma um dos métodos mais aplicados no processo de validação ou teste de sistemas computacionais. A simulação vem sendo extremamente uti li zada, principalmente para o projeto e desenvolvimento de novas arquiteturas, permitindo representar um modelo com grande detalhamento sem que isto necessariamente gere um significativo aumento na complexidade da solução. Como a modelagem da arquitetura interna de um processador é uma tarefa (problema) com relativo grau de detalhamento e complexidade, o projeto e/ou uso de um sof tware de simulação se encaixa melhor que o uso de outros métodos como o analíti co [SAN 94] [SOA 92]. 146 Ao propormos uma nova arquitetura para um processador, necessitamos validar nosso projeto de alguma forma, e esta forma pode ser o uso de um programa de simulação que transfira para o computador a complexa e repetitiva tarefa de atuali zação dos dados durante a execução de um programa escrito em assembly ou código de máquina (ISA) para da arquitetura proposta. A motivação para se implementar um so ftware que s imule com fidelidade a arquitetura do processador proposta durante a disciplina Arquitetura de Computadores, veio da necessidade de se encontrar um meio mais interativo e eficiente para se verificar ou validar o funcionamento da arquitetura interna do processador . O nosso principal objetivo é o desenvolvimento de um software de simulação para validar o funcionamento de um microprocessador ASIP projetado no nível ISA. Contudo, temos também, objetivos pessoais como aprendizado de técnicas de projeto e validação por meio de simulação. Este software de simulação deve apresentar aos usuários (projetistas) um método eficiente e amigável para o acompanhamento, estudo, análise, e principalmente para a validação da lógica funcional da arquitetura proposta. A elaboração deste programa para simulação serviria para confirmar e complementar os conceitos e conhecimentos adquiridos em sala de aula através de uma técnica bem mais otimizada e automatizada que o uso de resolução manual de exercícios [MAR OI] . 11. ETAPAS DO DESENVOLVIMENTO Nesta seção apresentaremos as fases de projeto do nosso processador e de desenvolvimento do seu simulador. A primeira fase no projeto é o entendimento do sistema no qual iremos trabalhar. No caso, é um microprocessador de aplicação específica (AS IP) com arquitetura interna e conjunto de instruções dedicadas à automação residencial. Ele foi projetado baseando-se na idéia de se ter casas inte li gentes que possam acionar alarmes, restringir o acesso controlando a autorização de entrada na residência, controlar a iluminação por intervalos de tempo e/ou por ambientes ou mes mo controlar o fechamento de janelas num determinado horário. Durante a especificação do microprocessador, definimos à priori , o nível de abs tr ação do nosso projeto. Isso é extremamente importante porque

Upload: danganh

Post on 11-Oct-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Projeto e Desenvolvimento de um Software de Simulação de um ASIP no Nível ISA

Talles H. Medeiros1, João B. T. Corrêa1

, Carlos A. P. S. Martins2

Pontifícia Universidade Católica de Minas Gerais, Instituto de Informática LSDC - Laboratório de Sistemas Digitais e Computacionais, Prédio 34

Av. Dom José Gaspar 500, Coração Eucarístico, Belo Horizonte- MG - Brasil 1

{ talles, joaobtc} @pucmg.br} 2

{ caspm@ pucmi nas. br} Resumo-Neste artigo apresentaremos um software da simulação

desenvolvido com a intenção de servir como uma ferramenta interativa para a validação do projeto de um microprocessador com um conjunto de instruções de aplicação específica (ASIP), onde o nível de abstração do objeto simulado a ser definido é o nível da arquitetura do conjunto de instruções (ISA). Com isto apresentaremos o mecanismo de simulação utilizado como de ferramenta de validação e, consequentemente, o microprocessador projetado.

Palavras-chave- Simulação, ASIP, ISA, arquitetura, validação, software da simulação, validação do processador.

Abstract-ln this article we will present a simulation software

developed with the intention to serve as an interactive tool for the validation of the design of a microprocessor with a "set of instructions of specific application" (ASIP), where the defined levei of abstraction to be the simulated object is the levei of instruction set architecture (ISA). With these we will present the mechanism used for validating the tool of simulation and, consequently, the microprocessor designed.

Keywords - Simulation, ASIP, ISA, architecture, validation, simulation software, processor validation.

I. INTRODUÇÃO

Neste artigo apresentaremos um software de simulação funcional de um microprocessador ASTP (app/icalion specific inslruclion sei processor) no nível ISA (inslruction sei archilelure) [TAN 99], que foi desenvolvido, no primeiro semestre de 2000, durante a disciplina Arquitetura de Computadores no curso de Ciência da Computação da PUC Minas. A modelagem de sistemas por meio de simulação é sem dúvida nenhuma um dos métodos mais aplicados no processo de validação ou teste de sistemas computacionais. A simulação vem sendo extremamente utilizada, principalmente para o projeto e desenvolvimento de novas arquiteturas, permitindo representar um modelo com grande detalhamento sem que isto necessariamente gere um significativo aumento na complexidade da solução. Como a modelagem da arquitetura interna de um processador é uma tarefa (problema) com relativo grau de detalhamento e complexidade, o projeto e/ou uso de um software de simulação se encaixa melhor que o uso de outros métodos como o analítico [SAN 94] [SOA 92].

146

Ao propormos uma nova arquitetura para um processador, necessitamos validar nosso projeto de alguma forma, e esta forma pode ser o uso de um programa de simulação que transfira para o computador a complexa e repetitiva tarefa de atualização dos dados durante a execução de um programa escrito em assembly ou código de máquina (ISA) para da arquitetura proposta.

A motivação para se implementar um software que simule com fidelidade a arquitetura do processador proposta durante a disciplina Arquitetura de Computadores, veio da necessidade de se encontrar um meio mais interativo e eficiente para se verificar ou validar o funcionamento da arquitetura interna do processador.

O nosso principal objetivo é o desenvolvimento de um software de simulação para validar o funcionamento de um microprocessador ASIP projetado no nível ISA. Contudo, temos também, objetivos pessoais como aprendizado de técnicas de projeto e validação por meio de simulação. Este software de simulação deve apresentar aos usuários (projetistas) um método eficiente e amigável para o acompanhamento, estudo, análise, e principalmente para a validação da lógica funcional da arquitetura proposta. A elaboração deste programa para simulação serviria para confirmar e complementar os conceitos e conhecimentos adquiridos em sala de aula através de uma técnica bem mais otimizada e automatizada que o uso de resolução manual de exercícios [MAR OI].

11. ETAPAS DO DESENVOLVIMENTO

Nesta seção apresentaremos as fases de projeto do nosso processador e de desenvolvimento do seu simulador.

A primeira fase no projeto é o entendimento do sistema no qual iremos trabalhar. No caso, é um microprocessador de aplicação específica (ASIP) com arquitetura interna e conjunto de instruções dedicadas à automação residencial. Ele foi projetado baseando-se na idéia de se ter casas inte ligentes que possam acionar alarmes, restringir o acesso controlando a autorização de entrada na residência, controlar a iluminação por intervalos de tempo e/ou por ambientes ou mesmo controlar o fechamento de janelas num determinado horário. Durante a especificação do microprocessador, definimos à priori , o nível de abstração do nosso projeto. Isso é extremamente importante porque

define o escopo no qual se concentra o projeto do processador, já que as etapas seguintes são dependentes do nível de arquitetura definido. Para isso então, definiu-se que seria o nível ISA com instruções de aplicação específica para automação residencial. A definição de apenas um nível , no modelo de camadas proposto por Tanenbaum [TAN 99], como meta de projeto foi influenciada pela menor complexidade em relação ao nível de microarquitetura no desenvolvimento de um projeto de processador.

Seguindo no projeto da arquitetura, definiu-se um microprocessador RISC [HEN 96] de 16 bits, nomeado KMT, com uma memória principal de 128Kbytes, com células de I byte, onde ficam armazenados dados e instruções do programa durante a execução. Como o processador faz acesso à memória usando palavras de 16 bits, então o KMT sempre busca duas células de memória em cada acesso realizado.

O conjunto de instruções definidas é do tipo LOAD -STORE, totalizando quinze instruções com o opcode variável. Instruções de desvio e de acesso à memória possuem 3 bits de opcode, enquanto as demais (comparação, acesso aos registradores, instruções de E/S e finalização de programa) possuem 5 bits de opcode. Os bits restantes da instrução são utilizados para definição dos registradores, do endereço de memória referenciado ou então do endereço das portas de saída ou entrada. Definiu­se um conjunto de oito registradores com tamanho de 8 bits, sendo dois registradores utilizados como acumulador( 16 bits), outros dois como contador de programa e os restantes são utilizados como registradores de propósito geral. Definiu-se também, quatro portas de EIS, com 2 bits para endereçamento, que fazem a interface com o meio externo.

Após o projeto do nível ISA do processador, passamos para a fase de verificação e validação, que seria realizada usando-se simulação funcional. Sendo assim, partimos para a etapa onde tivemos que aplicar conceitos de Engenharia de Software [YOU 99] para que pudéssemos produzir não só uma eficiente ferramenta de simulação [SYK 96], mas também uma ferramenta de auxílio para projetos de boa qualidade. O desenvolvimento começou com o projeto e desenho de várias interfaces gráficas até que se chegasse a uma em que pudéssemos ter a representação dos principais componentes do nosso microprocessador no nível ISA. Outros requisitos são usabilidade, fácil aprendizado, manuseio e visualização.

Com a interface pronta optamos por uma metodologia de implementação, a Orientada a Objetos, que nos desse toda a flexibilidade e facilidade de manutenção do código para possíveis alterações que fossem necessári,as. Todo <;>

código implementado foi bem modularizado. E claro que perdemos em coesão em alguns sentidos, mas ao mesmo tempo ganhamos com a reutilização de funções. Já que decidimos utilizar o paradigma de programação orientada a

147

objetos precisávamos de uma linguagem de programação que suportasse esse paradigma. Como já estávamos familiarizados com a linguagem C++ preferimos implementar o simulador com essa linguagem já que o tempo hábil para a finalização do projeto do simulador não nos possibilitava o aprendizado de outra linguagem. Como ferramenta de compilação decidimos utilizar o compilador Borland C++ Builder 4.0 pelo fato de ser o compilador C++ disponível nos laboratórios do Instituto de Informática. Como nosso software foi desenvolvido utilizando componentes visuais tivemos que implementar o simulador para um Sistema Operacional que suportasse compiladores visuais. No período do desenvolvimento o Windows NT era o mais indicado para a implementação.

Finalizando a explicação do projeto do simulador definimos o modo de exibição da ferramenta como mostrado na Fig. I . A sua interface, conforme projetada, exibe o conteúdo dos registradores, memória, portas e também suas variações instrução por instrução de modo que o usuário possa acompanhar o andamento da simulação. Como se pode perceber na Fig. I, o simulador permite que o conteúdo da memória principal seja editado durante a execução de um programa, abrindo uma janela para que o usuário preencha o conteúdo da posição de memória escolhida. Para que o usuário acompanhe a simulação com facilidade, o programa foi implementado para ser exibido no modo passo a passo.

e ... r-•l'r.:,::-: • ..,=------.· CW.Otjoo+<·-----

Fig.l: Interface gráfica principal do simulador

Como teste (validação) inicial o simulador passou por uma série de revisões antes de poder ser utilizado para validação da arquitetura, onde verificávamos através de diversas análises a especificação inicial e a implementação do simulador. Neste ciclo de revisões, era verificada a fidelidade de funcionamento (simulação) dos principais componentes do processador no software produzido em relação ao que foi projetado. Este ciclo só foi encerrado após termos certeza que a ferramenta funcionava conforme

projetada e assim, estava pronta para validar a arquitetura do processador. Este processo será descrito a seguir.

III. 0 PROCESSO DE V ALIO AÇÃO

Nesta seção avaliaremos o processo usado para validar o simulador do ASJP projetado de acordo com o que foi especificado e posteriormente, validar o microprocessador.

Sabemos que uma das melhores formas de validar o perfeito funcionamento do simulador é uma análise comparativa com algum outro programa simulador que fizesse a simulação do mesmo microprocessador que projetamos e que este simulador já tivesse sido avaliado e então validado para que não haja dúvida quanto a sua validade e funcionalidade. Mas como não encontramos um si mulador para a arquitetura projetada, este tipo de comparação não pôde ser realizada.

Sendo o· propósito do desenvolvimento do simulador a criação de um meio para se validar o projeto do microprocessador, a primeira coisa que deveremos analisar é o perfeito funcionamento do software, ou seja, verificar se após a codificação o simulador está funcionando como desejado. A partir deste ponto, tendo o conhecimento de que o software foi implementado conforme projetado, buscaremos então verificar o seu funcionamento lógico analisando o seu comportamento executando um programa escrito para o assembly do KMT. Assim, o simulador exibirá o conteúdo de cada um dos componentes da arquitetura para o qual foi proposto para trabalhar (registradores, memória principal e portas de E/S) e mostrará a movimentação de dados de acordo com as instruções executadas. Através disso, teremos como avaliar o comportamento do software por meio de uma inspeção visual, instrução por instrução, que é o modo mais adequado para validação do nosso simulador.

IV. VALIDANDO O PROCESSADOR

Como explicamos anteriormente, o método usado para validação do microprocessador, foi a simulação funcional.

Para isso, criamos alguns programas de teste para que então pudéssemos validar o processador. Assim analisamos, passo a passo, a execução destes programas escritos no assembly do processador, evitando que o usuário tenha que programar em código da microarquitetura do processador. Para cada instrução do programa que era executada revíamos o conteúdo dos componentes representados no simulador exibidos na tela como o conteúdo dos registradores, bem como da memória e das p01tas de EIS.

Como um dos exemplos, podemos mostrar a execução de parte do programa Ex. l. Primeiro carregamos o arquivo fonte deste programa através do menu Configurações -> Path do simulador. Em seguida, carregamos a primeira instrução (botão Próximo) e a executamos (botão Executar). A cada instrução executada é exibido seu mnemônico e seu respectivo código objeto. Este processo

148

se repete até o final do programa (instrução halt - HLT). Já na Fig. 2 é exibida a interface do KMT após a execução das instruções "MVI A 45H;" e "OUT P I;" onde o simulador carrega o acumulador e atribui seu valor à Porta I.

MVI A 45; OUTPl ; MVI BA4; MVI C 76; MVI D AB; MVI EB5; MVI F75; STA 0000; CMPA B; OUTP2; STA 0023 ; CPI C 76; STA 6587; OUTP3; MOVDC; JMP3465; IN_P3; ADDDC; OUTP4;

STA 0002; MOVBC ; JZ_36Al; CFC; JZ_4376; LDA 0000; OUTPl ; IN_P2; CMPA B; JMP 3455; INCD; INC F ; INC E ; ADIE 43 ; LDA 0345; ADI D 4A; LDA OOAA ; HLT;

Ex. l : Exemplo de código fonte

Registradores : Portas de VO :

Flag Carry:

Cód. Fonte : lour Pl

Cód.Objeto: 1010000

Fig. 2:.Execução das instruções "MVI A 45;"e "OUT P I;"

Os programas foram executados no simulador corretamente durante os testes realizados, validando a ferramenta e posteriormente o processador proposto.

V . V ANTAGENS E DESVANTAGENS DO MÉTODO UTILIZADO

Após finalizarmos a etapa de validação usando vários programas podemos destacar algumas observações.

As vantagens observadas usando o método de simulação como ferramenta de verificação nos dá uma v1sao mais nítida do real funcionamento do microprocessador projetado. Neste caso, possibilita o melhor entendimento da teoria da arquitetura de computadores, já que estaremos trabalhando com um método no qual somos induzidos a resolver um problema que é a validação do projeto de um microprocessador. Este problema abre portas para outros novos problemas, entre eles a validação do processador proposto.

A tarefa de projetar um microprocessador e, também, a de desenvolver um simulador para o microprocessador projetado proporciona aos alunos uma experiência nova para se desenvolver um projeto, já que utilizamos outras técnicas como engenharia de software e técnicas de simulação na hora de codificar o software simulador, para com isso visualizar dinamicamente o funcionamento interno do dispositivo de uma maneira amigável.

Ao utilizarmos a simulação como ferramenta para verificação e validação estamos entrando em contato com um método extremamente valioso para se assimilar a teoria que é vista em sala de aula e revista na maioria dos casos por meios de exercícios teóricos [MAR O I].

Apesar de ser de grande valia a técnica de simulação, algumas desvantagens também foram observadas. Como utilizamos uma linguagem de programação de propósito geral e não incluímos nenhuma biblioteca especial de simulação na implementação, ganhamos em flexibilidade de programação, mas por outro lado perdemos em um ponto que achamos extremamente importante ressaltar. A seguir, o processo de desenvolvimento do simulador, foi exaustivo, pois tivemos que nos preocupar com aspectos que não interessavam no processo de desenvolvimento, como aspectos de codificação de linguagem. Com isso tivemos o trabalho de desenvolver um simulador por completo, tendo que nos preocupar até com o projeto de sua interface com o usuário e utilizar algumas técnicas de engenharia de software até então desconhecidas, o que não era o principal objetivo.

Outra desvantagem aparece quando o usuário encontra e resolve estudar outros simuladores de processadores. Mesmo que a arquitetura dos processadores seja a mesma, ele deve ser flexível e adaptativo o bastante para enquadrar­se às diferentes interfaces e classes dos simuladores.

VI. CONCLUSÃO E TRABALHOS FUTUROS

Diante das análises dos resultados obtidos no processos de validação do simulador pudemos verificar que o simulador desenvolvido foi capaz de validar o projeto do nosso microprocessador. Com isso chegamos a um software de simulação que pode ser perfeitamente utilizável como ferramenta de validação do microprocessador ASIP com a arquitetura que projetamos. Desse modo, alcançamos o propósito principal de nosso trabalho, um software de simulação para validação de uma arquitetura específica. O simulador já está disponível para ser usado pela comunidade acadêmica [SIM OI].

A conclusão do nosso trabalho vem a contribuir para a afirmação de uma nova metodologia de estudo de arquitetura de microprocessadores que vem sendo adotada na disciplina de Arquitetura de Computadores da PUC Minas [MAR O I]. Além disso, o simulador pode ser usado para aprendizado de conceitos de arquitetura de processadores ASIP, programação em linguagem de

149

máquina, assembly, simulação funcional. Ressaltamos a contribuição pessoal do trabalho como grande motivação para que iniciássemos projetos de iniciação científica [MED OI] [COR OI] na universidade, atualmente desenvolvidos no LSDC (Laboratório de Sistemas Digitais e Computacionais)[LSD O I].

Como um dos trabalhos futuros temos o projeto de desenvolvimento de um simulador reconfigurável, onde o usuário especificará a arquitetura que ele deseja simular e a interface gráfica sem programação e geração de código [MED OI].

AGRADECIMENTOS

Agradecimentos ao PROPPG da PUC Minas pelo financiamento de nossos projetos nos propiciando o contato com a metodologia de pesquisa científica, e também aos colegas de laboratório e nosso orientador.

REFERÊNCIAS BIBLIOGRÁFICAS

[SAN 94] SANTANA, R. H. Carlucci, SANTANA, Marcos J., ORLANDI, R. C. G. Souza, SPOLON, Renata, JUNlOR, N. Calônego. "Técnicas para avaliação de desempenho de sistemas compwacionais - Notas Didáticas" ICMSC- USP Setembro/1994.

[TAN 99] TANENBAUM, Andrew S., "Strucwred Compwer Organization", Prentice- Hall , 1999.

[HEN 96] HENNESSY, John L. and PATTERSON, David A., "Compllfer Architecture a Quantitative Approach", Morgan Kaufmann, 1996.

[SOA 92] SOARES, Luiz Fernando G., "Modelagem e Simulaçlio Discreta de Sistemas", Ed. Campus, 1992.

[YOU 99] YOURDON, E., ARGILA, Carl, "Análise e Projeto Orientados a Objetos", Makron Books, 1999.

[MED OI] MEDEIROS, Talles H., MARTINS, Carlos A. P. S., "Proposta e implememaçcio de 11111 simulador reconfigurável de microprocessadores", Projeto PROBIC P2001/ 112, LSDC - PUC Minas, Belo Horizonte, MG- Brasil.

[SYK 96] SYKES, David A., MALLOY, Brain A., "The Design of an efficient simulator for the Pellfium Pro processar" Proceedings of the 1996 Winter Simulation Conference.

[COR OI] CORREA, João B. T., MARTINS, Carlos A. P. S., "Estudo e análise de sistemas computacionais reconfigurâveis aplicados em processamento de imagens", Projeto PROBIC P2001/113, LSDC - PUC Minas, Belo Horizonte, MG - Brasil.

[MAR OI] MARTINS, Carlos A. P. S., CORREA, João 8. T, MEDEIROS, Talles H., GOES, Luis F. W., RAMOS, Luis E. S. "Método de Aprendizado de Arquitetura de Microprocessadores Baseado em Projetos e Validaçlio Usando Simulaçlio" WEI I SBC 200 I.

[LSD OI] LABORATÓRIO de Sistemas Digitais e Computacionais - Instituto de informática, PUC Minas, 2001; http://www.lsdc.inf.pucminas.br/

[SIM OI] SIMULADOR processador KMT- URL de download http://www.lsdc.inf.pucmi nas.br/projetos/simKMT