Anda di halaman 1dari 25

DESENVOLVIMENTO DE SOFTWARE PARA SIMULAO DE UM COMPUTADOR SIMPLES BASEADO NA ARQUITETURA VON NEUMANN1

Francis Ribeiro Scherer <francis.scherer@gmail.com> Adriano Zanuz2 <adriano.zanuz@gmail.com> - Orientador


Universidade Luterana do Brasil (Ulbra) Curso de Cincia da Computao Cmpus Canoas Av. Farroupilha, 8001 Bairro So Jos CEP 92425-900 Canoas RS

22 de junho de 2011

RESUMO
Este trabalho apresenta o desenvolvimento de um software para simulao do funcionamento interno de um computador simples. Este simulador, denominado SVN Simulador Von Neumann, servir de auxlio didtico para os cursos das reas de engenharia e computao no ensino sobre a arquitetura e a organizao de computadores. O trabalho inicia pela conceituao terica referente ao tema proposto, e, aps, aborda o desenvolvimento do sistema, sua arquitetura, caractersticas, recursos e funcionalidades. A estrutura desse computador baseada na arquitetura de von Neumann. So abordados aspectos referentes ao modelo da arquitetura definida por Neumann, sua estrutura e funcionamento. So tambm expostos os modelos desenvolvidos durante a etapa de projeto do sistema, atravs de diagramas da UML, nos quais fica caracterizada sua estrutura, bem como suas funcionalidades. Aps, so documentados itens referentes ao funcionamento e utilizao do sistema por parte dos usurios, como a sua linguagem prpria para a criao de programas, seu conjunto de instrues e sua interface. Tambm exposta uma avaliao do sistema, realizada diretamente com o pblico alvo de utilizao. Para concluir, so feitas as consideraes finais do trabalho e discutidas as possibilidades de expanso do sistema, indicando alguns pontos para evoluo. Palavras-chave: Arquitetura e Organizao de Computadores; Modelo de von Neumann; Simulao.

ABSTRACT
Title: Development of a software for simulation of a simple computer based on von Neumann architecture This paper presents the development of a software that simulates the internal operation of a simple computer. This simulator will serve as a teaching aid for engineering and science computing courses when teaching about the computer architecture and organization. The work begins with the theoretical conceptualization, referring to the proposed theme, and, after, discusses the system development, its architecture, features, capabilities and functionalities. The structure of this computer is based on the von Neumann architecture. It covers topics related to the model of the architecture defined by Neumann, its structure and functioning. Models developed during the stage of system design are also exposed through UML diagrams, where are characterized their structure, as well as their facilities. After, items related to the the operation and use of the system by the users are documented, such as its own language for programs creation, its instruction set and its interface. An evaluation of the system is also exposed, carried out directly with the target audience of use. Finally, concluding remarks of the work are made and possibilities of expansion of the system are discussed, indicating some points for evolution. Key-words: Computer Architecture; von Neumann model; Simulation.

INTRODUO

Durante a graduao nos cursos da rea de Computao, e tambm alguns de Engenharia, existem disciplinas com diferentes contedos e abordagens, tratando dos mais variados tpicos a respeito do estudo de computadores. Nestas disciplinas so estudados conceitos desde os referentes ao funcionamento bsico das mquinas at os computadores e sistemas complexos existentes hoje em dia. Uma das reas de estudo diz respeito arquitetura e organizao de computadores, que o tema central deste artigo. A rea de arquitetura e organizao de computadores abrange os conceitos no nvel do hardware da mquina e do software de baixo nvel. Entre os tpicos estudados em arquitetura de computadores, um
1 2 Trabalho de Concluso de Curso II, referente ao Curso de Cincia da Computao; submetida ao Curso de Cincia da Computao da Universidade Luterana do Brasil, Campus Canoas. Professor orientador - Formao em Engenharia Eltrica, Mestre em Cincia da Computao e professor das disciplinas de Arquitetura de Computadores I e II.

aspecto de grande importncia o estudo dos princpios bsicos de funcionamento do computador, em especial o entendimento sobre a CPU (Central Processing Unit), memria principal, barramentos e dispositivos de entrada e sada. Na dcada de 50, um cientista chamado John von Neumann, precursor nos estudos na rea da computao, definiu um modelo abstrato de organizao interna do computador (ZANUZ, MARCHIORO e PETRY, 2006). O modelo definido por Neumann em 1950 at hoje utilizado como referncia para a arquitetura de computadores modernos. No estudo sobre arquitetura de computadores amplamente discutido o modelo de von Neumann, os componentes integrantes e seu funcionamento. Para fixao dos conceitos tericos envolvidos, os educadores utilizam ferramentas para demonstrao de como a operao interna do computador e a integrao dos dispositivos, onde os alunos possam visualizar como realizado o processamento das informaes e o fluxo interno de operaes. As ferramentas utilizadas so geralmente software simuladores, compostos virtualmente pela CPU, memria principal e caminho de dados e dispem de uma interface de interao com o usurio na qual simulam operaes bsicas de hardware. Existem hoje disponveis para uso alguns software simuladores nos quais possvel demonstrar algumas operaes de mquina, com o objetivo principal de melhorar o entendimento dos alunos quanto ao funcionamento interno do computador. Porm, verifica-se que essas ferramentas apresentam algumas deficincias ao no explicitar suficientemente o fluxo de operaes do hardware. O foco deste trabalho o estudo de conceitos gerais relacionados rea de Arquitetura e Organizao de Computadores, que compreende um dos tpicos nos estudos de Cincia da Computao. O objetivo apresentar o desenvolvimento de uma ferramenta para simulao do funcionamento interno do computador, seguindo o modelo de von Neumann, mas preservando as caractersticas reais de como o hardware opera. Foram analisados alguns aplicativos de simulao existentes e verificou-se que, de modo geral, os software simulam as operaes corretamente, mas deixam a desejar no que tange a forma de apresentao da simulao. A visualizao dos fluxos dos processos, realizados na execuo dos programas, no demonstram fielmente como ocorrem as operaes no nvel do hardware. Ento, a proposta deste sistema apresentar a simulao do processamento de um programa em baixo nvel que tenha uma interface com um visual mais prximo de como o hardware interno do computador. Para o desenvolvimento deste artigo, inicialmente sero abordados conceitos referentes ao modelo original do computador desenvolvido por von Neumann, tratando de forma individual cada um dos componentes do hardware e seu funcionamento. Tambm abordado o software de baixo nvel: linguagem de montagem e linguagem de mquina. Alm disso, so expostos dois software de simulao similares, seu desenvolvimento e suas principais caractersticas, assim traando um parmetro para anlise e comparao do software desenvolvido. Aps esse embasamento inicial, so iniciados efetivamente os tpicos referentes ao desenvolvimento do sistema, iniciando pela exposio de suas funcionalidades, abordando o seu modelo conceitual e fazendo uma exposio de duas verses do diagrama de sequncia, apresentando uma viso dinmica do ciclo de funcionamento do simulador. Ainda tratando da caracterizao do sistema, apresentado o conjunto de instrues bsicas definidas e tambm a sua linguagem prpria, utilizada para descrio dos programas. Com o objetivo de apresentar de forma sistematizada os resultados do simulador, abordado um tpico especfico a respeito da validao do sistema, forma de avaliao e resultados obtidos. Finalizando o artigo, so feitas as concluses e feita uma discusso a respeito de trabalhos futuros, abordando questes relativas expanso do software, onde so avaliadas algumas possibilidades de expanso do sistema, que pode servir como ferramenta de estudo para futuros interessados.

ABRANGNCIA DO PROJETO

O projeto proposto apresenta como foco central de aplicao a Arquitetura e Organizao de Computadores, mas, para seu desenvolvimento tambm envolveu o estudo de outras reas relativas Cincia da Computao. A seguir exposta uma sucinta descrio das reas de envolvimento deste projeto, so elas: Arquitetura e Organizao de Computadores: o tema central da aplicao deste trabalho, os contedos referentes a esta rea de estudo so indispensveis para a fundamentao terica e servem como base para a construo do sistema. Neste projeto, trata-se da implementao de um simulador do funcionamento do hardware, em baixo nvel. Portanto, objeto de estudo e implementao no sistema, alm de seu hardware, tambm seu software de baixo nvel. Projeto e Desenvolvimento de Sistemas: o tema central da execuo deste trabalho, pois o resultado o desenvolvimento um software de simulao. Para execuo deste projeto, optou-se pela utilizao da linguagem de programao Java, cuja ferramenta de desenvolvimento foi a IDE 2

Netbeans. O NetBeans IDE um ambiente de desenvolvimento - uma ferramenta para programadores escreverem, compilarem, depurarem e implantarem programas. escrito em Java, mas pode suportar qualquer linguagem de programao. Existe tambm um enorme nmero de mdulos para aprimorar o NetBeans IDE. O NetBeans IDE um produto gratuito sem restries de como ser utilizado (NETBEANS.ORG). Como plataforma utilizada para o modelamento do sistema, a UML foi utilizada para todas as etapas de concepo da aplicao. Foram desenvolvidos Diagramas de Casos de Uso, Classes e Sequncia, que foram de fundamental importncia para entendimento do sistema. Conceitos de IHC e Programao Java: O resultado deste projeto foi a criao de um sistema computacional que simula o funcionamento do hardware. Esse sistema tem um apelo visual muito significativo, pois se trata de um simulador grfico. Portanto, foi objeto de estudo a rea de Interface Homem Computador (IHC) e seus conceitos, visando desenvolver o sistema alinhado com as melhores prticas, no que tange o desenvolvimento de sistemas, cujo objetivo fornecer ao usurio uma interface de fcil adaptao e conforto em sua manipulao. Segundo Preece (1994), mais do mais do que o projeto de interface, a rea de IHC se preocupa com as comunicaes ou interaes entre usurios e computadores. Sua definio da rea confere responsabilidades como elaborao do projeto, avaliao e implementao de sistemas computacionais interativos para uso humano, alm de estudos suplementares sobre fenmenos relevantes que envolvam os aspectos de interao. Conforme j exposto, o sistema foi desenvolvido atravs da linguagem de programao Java, portanto essa linguagem foi objeto de estudo profundo. O objetivo foi desenvolver um sistema funcional, robusto e ao mesmo tempo prtico quanto sua utilizao. Java uma linguagem de programao e uma plataforma de computao lanada pela Sun Microsystems em 1995. a tecnologia que capacita muitos programas da mais alta qualidade, como utilitrios, jogos e aplicativos corporativos, entre muitos outros, por exemplo (SUN MICROSYSTEMS).

MODELO DE VON NEUMANN

Desenvolvido no incio da dcada de 50 e utilizado at hoje como base para a arquitetura de computadores modernos, o modelo computacional original de von Neumann3, define que a estrutura interna do computador rene os seguintes componentes: Memria, Unidade de controle, Unidade lgica aritmtica e Dispositivos de Entrada e Sada. O sincronismo de funcionamento destes dispositivos faz com que o computador receba, armazene e processe as informaes (ZANUZ, MARCHIORO e PETRY, 2006).

3.1

Modelo Original

Figura 1 Modelo original arquitetura von Neumann Fonte: Tanenbaum (2001, p. 10) A Figura 1 representa o modelo original de arquitetura de computadores. Basicamente Neumann definiu que a estrutura interna do computador seria formada por cinco componentes indispensveis, que so: Memria, Unidade de controle, Unidade lgico aritmtica, Dispositivos de entrada e sada. Cada um dos elementos de hardware acima apresentados so implementados em dispositivos fsicos
3 John von Neumann, nascido em Budapeste Hungria em 28 de dezembro em 1903, viveu at fevereiro de 1957, tendo formao na rea da matemtica, foi um pioneiro nos estudos de Cincia da Computao.

independentes, que ao longo do tempo foram sofrendo uma srie de modificaes em funo da evoluo das tecnologias existentes, desde a fabricao de rels eletromagnticos e vlvulas, at hoje na implementao de semicondutores, transistores e circuitos integrados, nos quais foram ao longo do tempo reduzindo significativamente em tamanho e aumentando muito em densidade e desempenho.

3.2

Arquitetura do computador Apresentao atual

O modelo desenvolvido por Neumann na dcada de 50 definiu um conceito mais analtico de como seria organizado internamente um computador, e de que forma se daria o fluxo de operaes da mquina. Como principal aspecto de mudana entre o modelo original e o modelo atual apresentada da CPU, sendo composta pela Unidade de controle e Unidade lgica aritmtica. Com o passar do tempo os estudos na rea foram avanando, bem como as tecnologias foram se aperfeioando e hoje o modelo conceitual da arquitetura interna de um computador se mostra um pouco diferente do modelo original, tratando a CPU como um nico componente (Figura 2), da mesma forma como os dispositivos de entrada e sada, assim apresentando o modelo de uma forma mais sinttica, abstrata.

Figura 2 Arquitetura interna atual de computadores Como pode-se visualizar na Figura 2, o modelo original foi modificado ao longo do tempo de modo a apresentar de forma mais realstica como esto distribudos os componentes essenciais definidos por Neumann. Os barramentos de comunicao esto dispostos mostrando que os dispositivos esto conectados entre si e principalmente pode-se identificar uma mudana na representao conceitual da CPU, possibilitando a identificao dos componentes que a integram, Unidade de Controle e Unidade Operacional, que composta pela ULA e registradores. 3.2.1 CPU A CPU ou UCP, Unidade Central de Processamento, conforme Figura 3, a responsvel pelo controle das funes internas do computador e composta por dois componentes: Unidade de Controle (UC) e a Unidade Operacional (UO), que em muitas literaturas denominada caminho de dados, onde fisicamente as operaes so executadas. (ZANUZ, MARCHIORO e PETRY, 2006). Conforme apresentado na Figura 3, sobre a composio da CPU, abaixo segue a conceituao de cada um dos seus dispositivos integrantes:

Figura 3 Modelo conceitual de CPU

Unidade de Controle: a responsvel por informar cada um dos dispositivos de hardware, unidade operacional, memria de dispositivos de entrada e sada o que cada elemento deve fazer, a partir da decodificao de uma instruo. (ZANUZ, MARCHIORO e PETRY, 2006). Unidade Operacional: A unidade operacional, ou caminho de dados, tem uma arquitetura particular. Ela a responsvel pela execuo das operaes do computador. Seus dois elementos fundamentais so: ULA Unidade lgica aritmtica e os Registradores. Abaixo segue a conceituao de cada um desses componentes. (STALLINGS, 2003). ULA: A unidade lgica aritmtica uma coleo de circuitos que realizam as operaes sobre os dados, as operaes bsicas incluem adio, subtrao e ainda manipulaes de bits (deslocamentos ou combinao de bits). (STALLINGS, 2003). A Figura 4 apresenta uma ilustrao simplificada de uma ULA, onde em seu funcionamento apresentada as entradas de dados, simbolizadas por A e B, o sinal de controle determinando a operao a ser realizada S e o resultado final obtido F.

Figura 4 ULA Unidade logica aritmtica Registradores: Os registradores, conforme Figura 3, so posies de memria construdas dentro da CPU. Fisicamente os registradores esto integrados nos circuitos da CPU, cujo objetivo aumentar a velocidade de acesso aos dados, cerca de 5 a 10 vezes mais rpido do que acessando os dados da memria principal (TANENBAUM, 2001). Um computador possui um nmero limitado de registradores, onde so reservados para o armazenamento dos dados que a CPU est usando naquele momento. O computador em funcionamento fica copiando constantemente os dados da memria principal para os registradores. Esta troca de informaes realizada atravs dos barramentos de comunicao, que conectam entre si a ULA, os registradores e a memria principal. 3.2.2 Memria o dispositivo responsvel pelo armazenamento das informaes, so elas: informaes para processamento e instrues de programa. Segundo Tanenbaum (2001, p. 33), sem uma memria na qual os processadores possam ler ou escrever informaes, o conceito de computador digital com programa armazenado no pode ser implementado. 3.2.3 Dispositivos de Entrada e Sada Pode-se conceituar dispositivos de entrada e sada como perifricos responsveis pela entrada ou sada de dados do computador, fazendo a interao do computador com o mundo externo. Os dispositivos podem ser somente de entrada, somente de sada ou de entrada e sada. Dentre os dispositivos cita-se teclado, monitor, scanner, mouse, impressora entre outros. (PATTERSON E HENESSY, 2000). 3.2.4 Barramentos Os barramentos so um conjunto de linhas de comunicao ou conjunto de caminhos eltricos que permitem a interligao entre os dispositivos. Segundo Patterson e Henessy (2000), um barramento nada mais do que um link de comunicao compartilhado, que usa um conjunto de fios para a conexo dos vrios subsistemas. Esses barramentos transportam sinais de dados, endereos ou bits de controle. Os barramentos podem ser seriais, um bit por vez na linha de comunicao, ou paralelo, vrios bits sendo transmitidos em paralelo por vrias linhas simultneas. O computador possui barramentos de vrios tipos, citam-se: Barramentos de dados que so utilizados para carregar os dados entre a CPU, a memria RAM e as portas de E/S, Barramentos de endereamento que so utilizados para especificar qual o endereo da memria RAM ou qual porta de E/S deve ser utilizada e os Barramentos de controle que so utilizados para 5

transportar a todas as unidades do sistema os sinais de controle, sinal de relgio. (PATTERSON e HENESSY, 2000).

4
4.1

SOFTWARE DE BAIXO NVEL


Linguagem de montagem

A linguagem de montagem ou assembly o nome dado para uma linguagem de programao que utiliza essencialmente uma representao simblica para uma linguagem de mquina numrica, ou seja, na linguagem de montagem estruturado um programa de forma simblica, com caracteres (smbolos) especficos da linguagem, que representam um programa em linguagem de mquina (TANEMBAUM, 2001). Utilizando a linguagem de montagem se torna muito mais simples para as pessoas programarem do que utilizando linguagem de mquina. A utilizao de nomes simblicos e endereos simblicos em vez de nomes em binrio, octal ou hexadecimal faz uma grande diferena para um programador, que assim tem um maior desempenho para realizar sua programao. Citam-se como exemplos os comandos de adio, diviso, subtrao e multiplicao em linguagem de montagem, respectivamente: ADD, DIV, SUB e MUL. Utilizando comandos de mais alto nvel, como esses citados no exemplo, fica mais simples para um programador desenvolver um programa. Tratando-se de linguagem de montagem, alguns aspectos precisam ser elucidados. Em primeiro lugar importante frisar que cada arquitetura de processador tem seus comandos especficos, ou seja, tem sua linguagem de montagem proprietria com comandos especficos para tal linguagem. Ento, diferentemente de um programa escrito em uma linguagem de alto nvel, que pode ser portado e executado em qualquer arquitetura de processador4, um programa escrito em uma linguagem de montagem de uma especfica arquitetura, poder somente ser executado em computadores que tenham essa arquitetura. Outro aspecto da linguagem de montagem referente ao desempenho de execuo. Para o mesmo algoritmo escrito em linguagem de alto nvel e escrito em linguagem de montagem, aquele escrito em linguagem de montagem provavelmente ter um desempenho de execuo melhor, pois o cdigo produzido tende a ser muito menor e mais rpido durante a execuo. Como exemplo cita-se o software que executado em dispositivos embarcados e rotinas da BIOS (Basic Input/Output System) de um computador. Estes precisam de um cdigo mais enxuto e mais rpido possvel, nesse caso a programao em linguagem de montagem a melhor opo. O terceiro aspecto importante a ser tratado sobre linguagem de montagem diz respeito ao acesso aos recursos de mquina, para execuo de determinados procedimentos preciso ter acesso completo ao hardware, como, por exemplo, o tratamento de interrupes de hardware, utilizando um programa gerado atravs de uma linguagem de alto nvel no ser possvel acessar e controlar diretamente o hardware, algo que possvel utilizando uma linguagem de montagem. A linguagem de montagem ser parte integrante do contedo deste projeto, pois no software simulador do funcionamento do computador, o usurio poder utiliz-la de modo a passar instrues para serem executadas no simulador atravs de um programa. Para o desenvolvimento do projeto, ser criada a prpria linguagem de montagem do simulador.

4.2

Linguagem de mquina

Linguagem de mquina a linguagem bsica de operao do computador, sendo constituda por uma sequncia de bits. Segundo Tanenbaum (2001), as instrues bsicas de um determinado computador formam uma linguagem por meio da qual possvel s pessoas se comunicarem com a mquina. Tal linguagem chamada de linguagem de mquina. Os projetistas de computador precisam decidir quais instrues devem fazer parte de sua linguagem de mquina. Um programa explcito em cdigo de mquina consiste em uma sequncia de nmeros, onde essa sequncia representa um conjunto de instrues a serem executadas. Para o desenvolvimento do software de simulao ser criado uma linguagem de mquina especfica, com um conjunto de instrues particular do sistema. Atualmente no mais utilizado pelos programadores o desenvolvimento de programas em linguagem de mquina, devido complexidade de programao e baixo desempenho no desenvolvimento.
4 Em teoria um programa escrito em uma linguagem de alto nvel pode ser portado de uma arquitetura para outra mantendo compatibilidade quanto sua execuo, entretanto, existem algumas incompatibilidades de execuo de programas portados entre arquiteturas de 32 e 64 bits.

Existem disponveis algumas linguagens de alto nvel, com comandos especficos, onde aps o programa escrito e compilado geram o cdigo de mquina, com as instrues referentes ao que foi desenvolvido.

5
5.1

SOFTWARES SIMULADORES EXISTENTES


K&S The Knob and Switch Computer

O software de simulao funcional de um computador K&S, foi desenvolvido por William Grant Braught, Ph D. em Cincia da Computao, professor e membro de departamento de Matemtica e Cincia da Computao do Dickinson College, em Carlisle no estado da Pennsylvania, Estados Unidos. O software foi desenvolvido no ano de 2001. Seu cdigo aberto e liberado sob os termos GNU CopyLeft5. Seu desenvolvimento foi feito com a integrao das linguagens HTML e Java Script (http://users.dickinson.edu/~braught/). O K&S foi um dos principais projetos desenvolvidos por Grant, cujo objetivo principal foi criar uma aplicao para auxiliar no ensino de Organizao de Computadores e introduo em Cincia da Computao, assim como define o autor. O software constitudo de quatro mdulos distintos, so eles: simulador do caminho de dados, simulador do caminho de dados com a memria principal, simulador com microprogramao e simulador completo do computador CPU e memria. A Figura 5 mostra a interface do software, sendo ilustrada a interface do K&S no modo simulador completo do computador CPU e memria principal (http://users.dickinson.edu/~braught/kands/kands.html).

Figura 5 Interface simulador K&S (modo completo) Na Figura 5, pode-se identificar os componentes da CPU, que so a unidade de controle e a unidade operacional (caminho de dados) e tambm a memria principal. Para operao do software, o usurio pode escolher se desejar operar o sistema no modo completo ou com os mdulos individuais. O simulador K&S, operando no modo completo, propicia ao usurio uma viso completa do funcionamento do computador. Neste modo est implementado o caminho de dados com todas as suas funcionalidades, a memria principal e ainda agrega da unidade de controle da CPU. Com a integrao desses dispositivos o usurio pode parametrizar uma operao em linguagem de mquina, para ser executada
5 GNU General Public License um modo de disponibilizao de software para o domnio pblico, possibilita que outras pessoas possam se utilizar do cdigo fonte de modo a fazer alteraes e gerao de novas verses, o GNU Copyleft tem o mesmo conceito, mas ainda impe que quem se utilizar do cdigo pode fazer alteraes, gerar novas verses, mas no tem permisso de retirar o direito de GNU CopyLeft das novas verses geradas, ao contrario da GNU bsica onde se utiliza dessa prtica.

pela CPU. A interface do simulador, operando no modo completo pode ser visualizada na Figura 5. O K&S foi analisado sob vrios aspectos, com o objetivo de avaliar seu funcionamento e servir de certa forma como parmetro para o desenvolvimento do simulador, produto deste trabalho. Identificou-se uma srie de pontos referentes ao processo de simulao que no evidenciam de forma correta tanto graficamente quanto a nvel de funcionalidades e funcionamento do computador. Citam-se alguns pontos: Apresenta na interface de botes para seleo dos registradores e operao da ULA, chaves de seleo, no apresenta os barramentos de comunicao entre os componentes do hardware, programao direta na memria, memria de baixa capacidade, no permite utilizao de variveis na declarao do programa, no permite que um programa seja salvo para posterior execuo, entre alguns outros aspectos.

5.2

Neander

O Neander a segunda ferramenta de simulao analisada neste artigo. Foi desenvolvido por docentes da UFRGS Universidade Federal do Rio Grande do Sul. A verso inicial do software foi desenvolvida no ano de 1990 pelos professores da instituio Dr. Raul Fernando Weber e Dra. Taisy Silva Weber. Segundo Weber (2001, p. 49). O nome Neander lhe foi atribudo fazendo uma analogia ao homem de Neanderthal, o antecessor do Homo Sapiens, j que se tratava de um software simulador muito simples. O Neander serviu como base para criao de alguns outros software com o mesmo objetivo, mas com capacidades e recursos mais avanados. A verso inicial do Neander foi desenvolvida em uma linguagem modo texto. Em funo disso com o avano das tecnologias essa verso ficou obsoleta. Em 2001, ainda com o auxilio de Raul e Taisy, mas com o desenvolvimento do professor Fbio Augusto Dal Castel (UFRGS) foi implementado o Neander em modo grfico, conforme ilustra a Figura 6.

Figura 6 Computador hipottico Neander (verso grfica) O Neander, igualmente ao simulador visto anteriormente, foi desenvolvido para fins didticos, como principais caractersticas referentes ao funcionamento de Neander citam-se: Largura de dados e endereos de 8 bits, dados representados em complemento de dois, um contador de programa de 8 bits e 256 posies de memria. Sobre o conjunto de instrues contidas nesse modelo, esto presentes ADD, LOAD, OR, AND, JUMP, HALT, entre outras. (WEBER, 2001). Assim como realizado com o simulador K&S, o simulador Neander foi analisado quanto aos recursos oferecidos bem como seu funcionamento, tm-se como aspectos negativos quanto ao simulador Neander os seguintes pontos: A interface no apresenta os de forma grfica os componentes de baixo nvel de hardware, no apresenta graficamente a interao dos componentes do hardware durante a execuo de um programa, apresenta a memria em duas vises (memria de dados + memria de programa), implementa somente um registrador.

DESENVOLVIMENTO DO SIMULADOR

Nesta seo inicia-se a descrio sobre o desenvolvimento do sistema, abordando inicialmente a metodologia utilizada para modelagem, que para este projeto foi baseada na UML. Aps as definies a respeito da metodologia abordado o sistema em mbito geral, tratando dos seus recursos e funcionalidades. Utilizada atualmente como principal linguagem para documentao e modelagem de sistemas, a UML Unified Modeling Language ou Linguagem de Modelagem Unificada uma linguagem padro para a elaborao da estrutura de projetos de software (BOOCH, RUMBAUGH e JACOBSON, 2003). Dentre os diagramas integrantes da UML e utilizados para modelagem de diferentes tipos de sistemas, neste projeto, optou-se pela utilizao de trs, para servir como base para a execuo do projeto. Os diagramas desenvolvidos foram: Diagrama de Casos de Uso, Diagrama de Classes e Diagrama de Sequncia.

6.1

Definio das Funcionalidades

O diagrama de casos de uso foi utilizado para mapeamento de todos os requisitos funcionais do sistema, principalmente para servir de base para os outros diagramas desenvolvidos. Com a criao do diagrama de casos de uso possvel identificar os atores envolvidos no sistema, bem como as funcionalidades que o sistema ir executar (BOOCH, RUMBAUGH e JACOBSON, 2003). A seguir feita uma breve definio referente a cada um dos casos de uso definidos, que so apresentados na Figura 7.

Figura 7 Diagrama de Casos de Uso 6.1.1 Abrir o Computador

Tem a funo de inicializar o computador, possibilitando ao usurio a interao com os demais recursos oferecidos pelo sistema. Atravs desta funcionalidade podem ser executados outros recursos do sistema, que so: Carregar Interface: Tem a funo de carregar a interface principal do simulador, rea de interao com o usurio, na qual carregada na tela o painel Programa e o painel Computador, ambos explicados na sequncia do artigo. Fechar Computador: Este tem a funcionalidade de fechar a principal interface do sistema, fechar o painel Programa e o painel Computador. Salienta-se que, para este caso de uso ser executado, a interface deve estar carregada.

6.1.2

Programar Computador

uma funcionalidade que foi generalizada em outros dois casos de uso. Seu objetivo definir a funcionalidade de inserir um programa para ser executado no simulador, em uma linguagem prpria definida no projeto, que ser abordada na sequncia do artigo. A definio das funcionalidades dos casos de uso associados a Programar Computador so definidos a seguir: Abrir Programa Salvo: uma generalizao do caso de uso Programa Computador, e referete funcionalidade de abrir/importar para o sistema um programa que previamente foi salvo. Digitar Novo Programa: Tambm uma generalizao do caso de uso Programa Computador, e refere-te funcionalidade de digitar um novo programa, para posteriormente ser executado no simulador. Salvar Programa: Tem a funo de salvar um programa inserido no computador. gerado um arquivo com a descrio do programa e salvo em alguma unidade de armazenamento, a ser definida pelo usurio. Salvar Arquivo no Disco: Esta funcionalidade iniciada a partir da execuo do caso de uso anterior, Salvar Programa, e tem a funo de gravar no disco um arquivo contendo o contedo de um programa previamente inserido no simulador. O resultado a gerao de um arquivo, com um formato especfico para uso no simulador. Montar Programa: Tem a funo de montar um programa e s pode ser executado aps a execuo do caso de uso Programa Computador. Seu resultado organizar o programa inserido num formato que possa ser interpretado pelo simulador. Carregar Programa: Tem a funo de carregar um programa para a memria do computador, definido neste simulador. Este caso de uso somente pode ser executado aps a execuo dos casos de uso Programa Computador e Montar Computador. Seu resultado um programa carregado na memria, pronto para ser executado. Carregar Memria: Esta funcionalidade executada a partir da execuo do caso de uso anterior, Carregar Programa, e realiza a funo de carregar um programa, j previamente montado, para a memria do computador. Limpar Programa: Est funo utilizada para reiniciar interface Programa. Quando acionada ela faz o apagamento dos dados digitados. Como pr-condio para a execuo dessa funo, alguma informao j deve ter sido inserida na interface Programa. 6.1.3 Executar Programa Esta funcionalidade que foi generalizada em outros dois casos de uso. Seu objetivo definir a funcionalidade de executar um programa no simulador. A definio das funcionalidades dos casos de uso associados a Executar Programa so definidos a seguir: Execuo Completa: Trata-se de uma generalizao do caso de uso anterior, Executar Programa, e define a execuo total de um programa previamente carregado na memria. Execuo Passo a Passo: Tambm trata-se de uma generalizao do caso de uso Executar Programa, e define uma forma distinta de execuo. Desta forma executada uma instruo de cada vez. Invocar Prxima Instruo: uma funcionalidade executada a partir da execuo do caso de uso anterior, Execuo Passo a Passo. Define que quando iniciada a execuo passo a passo o usurio precisa chamar a funo Invocar Prxima Instruo, para que uma nova instruo seja executada. Pausar Execuo: Tem a funcionalidade de pausar a execuo de um programa que esteja sendo executado no simulador. Somente pode ser chamado se anteriormente o caso de uso Executar Programa tiver sido executado. Reiniciar Execuo: Esta funcionalidade executada a partir da execuo do caso de uso Pausar Execuo. Sua funo fazer o simulador retomar o processamento e a execuo de um programa, caso o mesmo tenha sido pausado. Encerrar Execuo: Tem a funcionalidade de abortar a execuo de um programa. Somente pode ser chamado se anteriormente o caso de uso Executar Programa tiver sido executado.

6.2

Modelo Conceitual

Entre todos os diagramas integrantes da UML, o diagrama de classes o mais utilizado e o mais importante, pois a partir dele pode-se visualizar todas as classes que iro compor o sistema (BOOCH,

10

RUMBAUGH E JACOBSON, 2003). Visto que o software foi desenvolvido com os conceitos de orientao a objetos, este diagrama indispensvel. Para o desenvolvimento do sistema foram elaborados dois modelos diferentes de diagrama de classes. Em um modelo, denominado modelo de arquitetura, esto definidas todas as classes integrantes ao sistema, englobando classes abstratas e de servios, todos os mtodos e atributos. Este modelo tem um foco mais tcnico e serviu como referncia para a construo do sistema. Em contrapartida, foi desenvolvido outro modelo de diagrama de classes, denominado modo conceitual ou modelo de domnio, que se trata de um modelo de alto nvel, cujo objetivo apresentar o domnio do sistema, entender os seus conceitos, suas entidades e seus relacionamentos. Seu foco o entendimento do domnio da aplicao, abstraindo aspectos de arquitetura e do desenvolvimento, que so integrantes do outro modelo. Para este artigo optou-se pela apresentao do diagrama de classes de modelagem conceitual, para facilitar o entendimento. O diagrama de classes de modelagem de arquitetura, que tambm foi desenvolvido, apresentado no Apndice A.

Figura 8 Diagrama de Classes: Modelo Conceitual A seguir descrita a definio de cada uma das entidades que compem o sistema, conforme apresentado no modelo ilustrado na Figura 8. 6.2.1 Simulador Esta classe, definida no modelo, est representando a interface principal do sistema, na qual o usurio realiza a programao e a execuo de um programa. Pode-se identificar que, como principais caractersticas, a classe Simulador possui como atributos dois painis: painel Programa e painel Computador. Citam-se no modelo como principais mtodos dessa entidade: CarregarInterface: Este mtodo tem a funcionalidade de carregar, na tela do sistema, o painel Programa e o painel Computador. So as principais telas do sistema e servem de interface para interao do usurio com o simulador. FecharInterface: Este mtodo tem como funcionalidade fechar a interface e os painis, caso os mesmos estejam abertos.

11

6.2.2

Programa

umas das entidades que compem a entidade Simulador, cuja funcionalidade disponibilizar ao usurio uma rea de interao com o sistema, na qual ele possa inserir um programa para ser executado no simulador. A insero de um programa pode ser realizada atravs da digitao de um novo programa ou abrindo um programa j existente, que foi previamente salvo. Compe a entidade Programa a entidade Montador, que ser descrita a seguir. Como principais mtodos da entidade Programa, citam-se: Programar: Este mtodo implementa a funcionalidade de inserir um programa no simulador, seja abrindo um programa existente, que j tenha sido previamente salvo, ou digitando um novo programa. CarregarPrograma: Este mtodo implementa a funcionalidade de carregar um programa para memria. Como pr-condio para a utilizao desta funcionalidade, o programa j deve ter sido previamente montado. O processo de montagem ser descrito logo a seguir. SalvarPrograma: Este mtodo implementa a funcionalidade de salvar um programa que tenha sido previamente digitado. O resultado a gerao de um arquivo, num formato especfico, contendo a descrio do programa inserido. AnalisarErros: Esse mtodo realiza uma anlise no cdigo inserido, fazendo uma consistncia no programa digitado, buscando erros na sua estruturao. Caso ocorra algum erro, o sistema ir indicar ao usurio o problema encontrado. 6.2.3 Montador uma das entidades que compem a entidade Programa. Sua funcionalidade realizar o processo de montagem de um programa inserido no simulador. Como principal mtodo da entidade Montador, cita-se: MontarPrograma: Este mtodo possui a funcionalidade de realizar o processamento e a montagem do programa. O processo de montagem consiste em analisar o programa, codific-lo e organiz-lo de forma que possa ser carregado para a memria. 6.2.4 Computador uma das entidades que compem a entidade Simulador, cujo propsito apresentar para o usurio um painel, ilustrando um computador hipottico, simples, contendo o mnimo de elementos. Esse painel Computador uma interface grfica, na qual realizada a simulao do funcionamento de um computador. O Computador composto pelos seguintes elementos: Unidade de Controle, Memria e Caminho de Dados. Como principais mtodos integrantes da entidade Computador, citam-se: ExecutarPrograma: Este mtodo utilizado para iniciar o processo de execuo de um determinado programa no simulador. Como pr-condio para o incio da execuo de um programa, o computador deve possuir previamente um programa j carregado na memria. PausarPrograma: Este mtodo implementa a funcionalidade de realizar uma pausa durante o processamento de um programa. ReiniciarPrograma: Este mtodo implementa a funcionalidade de reiniciar o processamento de um programa. O reincio da execuo d-se do ponto onde a execuo foi pausada. EncerrarPrograma: Este mtodo implementa a funcionalidade de encerrar a execuo de um programa, do ponto em que ele estiver quando esse mtodo for acionado. 6.2.5 UnidadeControle um dos principais dispositivos na composio da CPU de um computador. A UC a responsvel por comandar o funcionamento de todos os outros dispositivos, atravs dos sinais de controle. Para o desenvolvimento do sistema foi criada uma implementao em software da UC. Os sinais de controle no software so os seus atributos, e as suas funes so os mtodos. Seus principais atributos so: Status: Este atributo referencia o registrador de status, elemento presente na constituio da CPU de um computador. Controles: Forma generalizada de referenciar os sinais de controle da UC, citam-se como exemplos de controles: ICP, LCP, LRI, LRE, etc. Estes sinais de controles esto com seu nome abreviado, sua descrio completa est constando no dicionrio de termos projeto, que pode ser visto no Apndice B. EndRegistradores: Este atributo referencia o endereo do registrador onde ser inserida uma informao que foi previamente buscada da memria. Operao: Esse atributo armazena qual operao deve ser executada pela ULA, a partir de uma 12

instruo lida da memria e decodificada. RI: Este atributo referencia o Registrador de Instruo da UC, e sua funcionalidade armazenar a instruo que buscada da memria e armazenada na UC, para seu posterior processamento. CP: Este atributo referencia o Contador de Programa da UC, e sua funcionalidade armazenar o endereo da instruo que est sendo processada no momento.

Alm dos atributos, a Unidade de Controle possui uma srie de mtodos, que implementam suas funcionalidades. Na definio do modelo conceitual, citam-se os principais: BuscaInstruo: Este mtodo faz com que a UC busque em uma determinada posio da memria, informada pelo Contador de Programa (CP), uma instruo para ser processada. A instruo buscada na memria armazenada no registrador de instruo. DecodificaInstruo: Este mtodo executa a funcionalidade de decodificar uma instruo armazenada no registrador de instruo da UC. Como pr-condio para a execuo deste mtodo que previamente uma instruo j tenha sido lida e trazida da memria. ExecutaInstruo: Este mtodo implementa a principal funcionalidade de UC, realizar a execuo de uma determinada instruo, fazendo com que a UC interaja com os demais elementos do hardware do computador, assim realizando a execuo de uma instruo. 6.2.6 Memria A memria um componente muito conhecido e integrante da estrutura de um computador. Nos computadores atuais, a capacidade da memria um aspecto fundamental para o desempenho do hardware. A memria do simulador foi implementada com uma capacidade de 256 bytes, sendo dividida em 256 posies de 8 bits cada, sendo endereadas de 0 a 255. Para o desenvolvimento do simulador criamos uma implementao de software da memria, onde temos como principais atributos: Memria: Este atributo refere-se propriamente a memria, repositrio do programa, que no simulador trata-se de um vetor de Strings com 256 posies. CS: Este atributo referencia o sinal de controle Chip Select da Memria, cuja funcionalidade colocar a memria em modo de operao, pronta para executar os mtodos de leitura ou escrita. RW: Este atributo referencia o sinal de controle de Read/Write da memria, cuja funcionalidade atribuir o modo de operao da memria, em modo Read ou modo Write. RE: Este atributo referencia o registrador de endereos, e sua funo armazenar o endereo da memria onde est o ponto de execuo do programa. RD: Este atributo referencia o registrador de dados da memria. Alm dos atributos, no modelo conceitual definiram-se as principais funcionalidades da memria, seus mtodos, citam-se: Escrever: atravs da execuo deste mtodo que as informaes so escritas na memria. Esse mtodo recebe duas informaes, o endereo e o dado a ser inserido. Assim realiza a funo de armazenamento de uma determinada informao. Ler: Este mtodo implementa a funcionalidade de leitura da memria. Para execuo este mtodo recebe um parmetro, um endereo, recebido do registrador de endereo. Na sua execuo, busca o dado que consta no endereo recebido e o armazena no registrador de dados. 6.2.7 Banco de Registradores O banco de registradores existente no simulador similar aos registradores encontrados na CPU de um computador convencional. Esse banco de registradores formado por quatro registradores mais bits de endereamento, que no modelo conceitual foram definidos como atributos. A seguir esto suas definies: R1, R2, R3 e R4: Esses atributos referenciam os quatro registradores integrantes na CPU do simulador. ERX/ERY: Este atributo utilizado para enderear um registrador do banco de registradores. Est definido, no modelo conceitual, o principal mtodo do banco de registradores, que diz respeito a sua funcionalidade, que : CarregarRegistrador: Um registrador pode ser carregado a partir de uma informao disponvel no registrador de dados ou atravs da sada da ULA. Este presente mtodo implementa a funcionalidade de carregar o dado para o registrador.

13

6.2.8

ULA

A ULA executa uma determinada operao a partir dos dados que so recebidos do banco de registradores. Para esse projeto, cujo propsito ser uma ferramenta didtica, definiu-se uma quantidade reduzida de operaes, mas que propiciam ao usurio um entendimento quanto ao fluxo de execuo. A ULA possui duas entradas de dados, uma sada de dados e um indicador de operao, que no modelo conceitual ambos foram definidos como atributos, conforme segue: X/Y: Atributos responsveis por armazenar os dados recebidos do banco de registradores, referenciam a entrada de dados da ULA. R: Este atributo responsvel por armazenar o resultado da operao da ULA, sada de dados. OP: Atributo responsvel por armazenar qual operao a ULA deve realizar em funo dos dados recebidos. Status: O atributo status da ULA referncia o registrador de status presente na CPU de um computador. Alm dos atributos integrantes a ULA, conforme acima descritos, tambm definiu-se os seus mtodos no modelo conceitual. So eles: Operao: Este mtodo referencia a funcionalidade da ULA de realizar uma operao, em funo dos dados recebidos na sua entrada. Para sua execuo, esse mtodo recebe como parmetros dois valores e uma operao. Sua sada a gerao do resultado de uma operao e a chamada do mtodo AtualizarStatus. AtualizarStatus: Este mtodo implementa a funcionalidade de atualizar o registrador de status a partir do resultado da operao da ULA. A pr-condio para execuo deste mtodo a execuo do mtodo Operao. Sua sada a atualizao do registrador de status

6.3

Modelo Dinmico

Com o objetivo de possibilitar uma visualizao dinmica entre os objetos, foram desenvolvidos os diagramas de sequncia dos principais fluxos de operao do sistema. Esse tipo de modelagem apresenta um diagrama no qual visualiza-se a comunicao entre os objetos do sistema, agregando uma linha de tempo, possibilitando uma visualizao das mensagens ocorrendo em sequncia entre os mesmos.

Figura 9 Diagrama de Sequncia Na Figura 9 pode-se visualizar o diagrama de sequncia do ciclo de operao do computador, no que 14

tange o processamento das instrues. Conforme pode-se visualizar, a maior parte dos mtodos so inicializados na Unidade de Controle, pois o dispositivo que faz o controle de todos os fluxos de operao do hardware. Esse diagrama de sequncia refere-se ao processo executado logo aps a sequncia de processos do diagrama analisado no tpico anterior, apresentado na Figura 9. A seguir ser descrito a caracterizao de cada um dos mtodos que compe esse diagrama de sequncia: ExecutarPrograma: Este o ltimo mtodo executado no diagrama de sequncia anterior e o primeiro a ser executado nesse diagrama, consiste em iniciar a execuo de um programa no simulador. BuscaInstruo: A Unidade de Controle durante o processamento de um programa executa uma sequncia de operaes, abstraindo esse conceito podemos definir que a Unidade de Controle executa uma sequncia denominada : BI DI EI, respectivamente Busca Instruo, Decodifica Instruo e Executa Instruo. Este mtodo o primeiro da sequncia, e consiste na UC buscar de uma instruo na memria, a instruo armazenada no registrador de instruo da UC. DecodificaInstruo: Este o segundo passo executado pela UC, conforme foi definido no item anterior. Sua execuo realizada aps a concluso do mtodo BuscaInstruo e consiste na interpretao da instruo que foi armazenada no registrador de instruo para determinar que operao o computador ir realizar naquele momento. ExecutaInstruo: ltimo passo da sequncia de execuo da UC, somente pode ser iniciado aps a concluso dos dois mtodos anteriores e consiste efetivamente na execuo de uma instruo. Neste momento a UC passa a interagir com todos os outros elementos componentes do hardware, fazendo com que uma determinada instruo seja completamente processada. Aps a concluso da execuo de uma instruo a UC retorna novamente para a busca de instruo, realizando o processo novamente. Caso a instruo seja HALT, a execuo terminada, pois esse comando determina o encerramento do programa. Conforme exposto neste tpico, foram desenvolvidos dois modelos do diagrama de sequncia, o segundo modelo, que apresenta a sequncia de passos realizada pelo usurio para colocar um programa em execuo pode ser visualizado no Apndice C.

6.4

Conjunto de Instrues

O software desenvolvido implementa um simulador do funcionamento interno de um computador, para tal funcionalidade, fica definida uma gama de instrues que podem ser utilizadas para criao e elaborao dos programas. Este tpico do artigo descreve as instrues que fazem parte do escopo desse sistema, que podem ser do tipo: Movimentao (MO), Lgicas e Aritmticas (LA), Desvio (DV) e Outras (OU). O Quadro 1 apresenta a descrio e a definio das instrues e sua codificao. Quadro 1 Conjunto de Instrues do SVN
Tipo MO MO LA LA LA LA LA DV DV DV OU OU Linguagem de Montagem LOAD REG [VAR] STORE [X] REG ADD RR RR SUB RR RR OR RR RR AND RR RR CMP RR RR JMP [LABEL] JZ [LABEL] JN [LABEL] HALT NOP Exemplo LOAD R0 [X] STORE [X] R0 ADD R0 R1 SUB R0 R1 OR R0 R1 AND R0 R1 CMP R0 R1 JMP VOLTA JZ VOLTA JN VOLTA HALT NOP Significado R0 = MEM [12] [X] = R0 R0 = R0 + R1 R0 = R0 R1 R0 = R0 || R1 R0 = R0 & R1 R0 = R0 = = R1 Desvia para VOLTA Desvia para VOLTA se zero Desvia para VOLTA se negativo Encerra o programa Nada a processar Linguagem de Mquina 000100 RRMMMMMMMM 001000RRMMMMMMMM 1000 RR RR 1001 RR RR 1010 RR RR 1011 RR RR 1001 RR RR 00110000 MMMMMMMM 01000000 MMMMMMMM 01010000 MMMMMMMM 11111111 00000000

Estas so as instrues integrantes do software, maiores detalhes quanto a detalhes na especificao da instruo sero abordados no tpico referente a linguagem de montagem do sistema. 15

6.5

Linguagem de Montagem

Foi definida no projeto do simulador uma linguagem prpria, conforme citado em tpicos anteriores. Essa linguagem utilizada para a construo dos programas que so executados no simulador onde permite a utilizao de todas as instrues disponibilizadas pelo computador para a criao de novos programas. A linguagem do sistema possui uma sintaxe prpria. Na estrutura de um programa, descrito com a linguagem do simulador, existem trs sees distintas, cada uma com uma funo especfica na declarao do cdigo, as sees so: Data, Code e Halt. Data: Esta palavra fixa da linguagem define o incio do cdigo do programa e tambm define que logo abaixo estaro declaradas as variveis utilizadas no cdigo. Code: Define o fim da seo de declarao de variveis do programa. A partir desse ponto est a declarao do programa. Halt: Define o fim da seo Code e referencia o trmino da declarao do programa. O Quadro 2 a seguir apresenta um exemplo de programa escrito na linguagem do simulador, no qual ficam evidenciadas as definies das sees na declarao do cdigo. Tem-se tambm, na descrio de um programa, a declarao de LABELs no cdigo, que so utilizadas na descrio das operaes JN, JZ, JMP instrues do tipo desvio. Sua declarao abordada no Quadro a seguir. Quadro 2 Exemplo de um programa
DATA X DB 12 Y DB 4 Z DB 0 CODE LOAD R0 [X] LOAD R1 [Y] VOLTA: SUB R0 R1 JZ SAI JMP VOLTA SAI: HALT Seo DATA Declarao da varivel X, lhe atribuindo o valor 12 Declarao da varivel X, lhe atribuindo o valor 4 Declarao da varivel X, lhe atribuindo o valor 0 Seo CODE Carrega para o registrador R0 o valor da varivel X Carrega para o registrador R1 o valor da varivel Y Declarao da label VOLTA Operao de subtrao, subtrai o valor de R0 menos R1 Se o resultado da ULA for 0 (Zero), pula para a Label SAI: Pula para a label VOLTA Declarao da label SAI Seo HALT, trmino da declarao do programa

6.6

Montador

Nos tpicos anteriores foram abordados o conjunto de instrues e a linguagem de montagem desenvolvidos para implementao do projeto do simulador. Para englobar esses dois tpicos distintos do escopo do projeto, foi implementado no sistema um montador, recurso modelado via software que realiza a montagem de um programa inserido no simulador, programa esse descrito baseado nas regras da linguagem de montagem e que utiliza na sua descrio os comandos definidos no conjunto de instrues do software. O processo de montagem, permite aps a sua execuo, que um programa seja processado pelo simulador. Na interface do simulador, no painel programa, abordado em tpicos anteriores, apresenta o resultado do processo de montagem, ou seja, o programa montado, visualizado de diferentes formatos ao mesmo tempo. apresentado na tela para o usurio o programa montado no formato assembly e no formato binrio, descrito em linguagem de montagem. Essa forma dinmica de visualizao caracteriza um diferencial entre os simuladores analisados. O montador desenvolvido, possui implementado em seu escopo a anlise lxica, sinttica e semntica, aspectos que so analisados durante o processo de montagem de um programa. Tambm durante o processo de montagem ocorre o processo de anlise de erros do cdigo, que tambm foi implementado no escopo do simulador, tal funcionalidade permite ao usurio identificar possveis erros durante a descrio de um programa. No tpico relacionado a trabalhos futuros, descrito ao final deste artigo, aborda alguns tpicos referentes a ajustes a adaptaes no processo de montagem e de anlise de erros do cdigo.

16

INTERFACE

Este tpico tem o objetivo de apresentar a interface do sistema. Conforme abordado em tpicos anteriores, o sistema tem sua interface composta por dois painis, o painel Programa e o Painel Computador. atravs desses painis que o programa inserido e a simulao pode ser visualizada. 7.1.1 Painel Programa A Figura 11 apresenta o painel Programa, atravs dele que um programa inserido no simulador, posteriormente montado e carregado para memria. Conforme pode-se visualizar, a interface da rea de programa do simulador composta por alguns elementos, os quais sero apresentados a seguir:

Figura 11 Interface: Painel Programa Linguagem de Montagem: Esse box mais a esquerda, denominado linguagem de montagem, uma rea exclusiva de texto. nessa rea de texto que o usurio faz a digitao de um programa para ser processado pelo simulador. Memria - Cdigo: Esta rea central representa a memria do computador, sua funo armazenar um programa j montado no formato assembly. Essa rea preenchida aps a execuo da funo Montar Programa. Memria Binrio: Esta rea mais a direita tambm representa a memria do computador, sua funo armazenar um programa j montado no formato binrio, linguagem de mquina. Essa rea preenchida aps a execuo da funo Montar Programa. Boto Montar: O boto Montar implementa a funo Montar Programa, j definida na seo funcionalidades do sistema. Boto Limpar: O boto Limpar implementa a funo Limpar Programa, j definida na seo funcionalidades do sistema. Boto Carregar: Este item implementa a funo Carregar Programa, j definida na seo funcionalidades do sistema. Sada: Esta rea abaixo na tela utilizada para informar o usurio os erros encontrados no cdigo durante a execuo da montagem, caso encontre erros.

17

7.1.2

Painel Computador

A Figura 12 apresenta o painel Computador, nesse painel que acontece a ilustrao do funcionamento de um computador durante a execuo de um programa, onde ocorre a simulao. O painel Computador composto pelos seguintes elementos: Unidade de Controle, Memria, Caminho de Dados e Painel Status.

Figura 12 Interface: Painel Computador Unidade de Controle: Esta rea, localizada no topo da interface, representa graficamente a Unidade de Controle do computador. Nela visualizam-se todos os sinais de controles comandados pela UC e esto relacionados com os outros componentes da interface. Memria: Esta rea da interface referencia a memria do computador, e conforme visualiza-se na interface, possui outros elementos que so utilizados durante a execuo de um programa. Caminho de Dados: Este rea, tambm conhecida como Unidade Operacional, integra dois componentes do hardware, o Banco de Registradores e ULA. Painel Status: Esta rea, localizada acima na interface, apresenta durante a execuo do programa a informao da execuo que est sendo processada no momento, bem como as microoperaes realizadas pelo hardware para a execuo da instruo. Esta rea atualizada automaticamente a cada novo instruo iniciada.

Na Figura12 apresentada a interface principal do sistema, onde esto abreviadas as descries dos elementos. A descrio completa pode ser visualizada no documento anexo 2, dicionrio de termos.

AVALIAO E RESULTADOS

O software desenvolvido, resultado deste projeto, uma ferramenta com foco didtico que servir de auxlio para o ensino de contedos relacionados arquitetura e organizao de computadores. O pblico alvo para utilizao deste software so alunos de graduao dos cursos das reas de Tecnologia da Informao, Engenharia da Computao e Sistemas Digitais. Visando apresentar slidos resultados quanto a real utilidade do sistema, foi elaborado um instrumento de avaliao, uma ficha composta por uma srie de questes, na qual so abordados os seguintes critrios: Interface, Visualizao dos Elementos, Entendimento do hardware, Simulao, Recursos do Sistema, Linguagem e Avaliao Geral. Todos os itens foram

18

avaliados por meio de perguntas, com respostas fornecidas como notas de 1 a 10. O instrumento de avaliao foi aplicado nas turmas de Arquitetura de Computadores I e II, dos cursos da rea de Tecnologia da Informao da Universidade Luterana do Brasil. Ao total foram obtidas 25 avaliaes. O Quadro 3 apresenta os critrios avaliados bem como os resultados apurados, valores mdios obtidos como resposta em cada uma das questes. Quadro 3 Avaliao do Sistema
TPICOS DA AVALIAO 1 Com relao sua interface 2 Com relao visualizao dos elementos que compe o simulador 3 Com relao ao entendimento do hardware do simulador 4 Com relao a simulao do funcionamento do hardware, durante a execuo de um programa 5 Como relao aos recursos oferecidos pelo sistema 6 Com relao Linguagem de Montagem definida no simulador 7 Qual sua avaliao geral com relao ao software? MDIA 8,87 8,88 8,83 9,04 9,14 9,00 9,00

Conforme pode-se visualizar no Quadro 3, em todos os critrios de avaliao foram obtidas mdias acima de 8,5 pontos e como avaliao geral do software foi obtido 9,0 pontos. Com base nos resultados apresentados, pode-se afirmar que o software foi avaliado sob vrios critrios e o retorno obtido foi satisfatrio. Os comentrios foram positivos e o sistema bem aceito. No documento Apndice D pode-se visualizar a avaliao completa, com os valores de resultados obtidos em cada uma das questes aplicadas.

TRABALHOS FUTUROS

O tema deste projeto bastante amplo, pois se trata de uma rea com um contedo muito abrangente. O projeto proposto neste artigo trata vrios aspectos sobre o tema, mas ainda tem-se a possibilidade de avanos com relao a sua implementao, expandindo seus recursos e funcionalidades ou melhorando os existentes. Este tpico do projeto apresenta de forma sucinta alguns itens, onde identifica-se a possibilidade de continuidade de desenvolvimento, seja com a expanso do sistema ou readequao e melhorias de funcionalidades j implementadas. Este projeto ser doado para a Universidade Luterana do Brasil e seu cdigo fonte poder ser integralmente utilizado para continuidade do projeto, estudos e novas implementaes. Citam-se os itens: Adequaes no Processo de Montagem e Anlise de Erros: O processo de montagem e verificao de erros que foi desenvolvido no executa uma analisa profunda no cdigo, no implementa uma analise lxica, sinttica e semntica robusta e precisa. Portanto, esta funcionalidade do sistema pode ser readequada provendo uma melhoria no sistema, inclusive pode ser analisada por interessados na rea de compiladores. Agregar Instrues: Conforme exposto em tpicos anteriores no artigo, o propsito deste projeto a criao de um simulador simples, com um conjunto bsico de instrues. Portanto, este tpico apresenta como possibilidade de expanso do sistema a criao de novas operaes, para agregar aos recursos j existentes. Como possibilidades de novas instrues, citam-se: Multiplicao, Diviso, Incremento/Decremento de Variveis, entre outras. Novos Tipos de Variveis: O sistema, em sua concepo atual somente possvel a criao de variveis do tipo byte (DB), ento como expanso pode-se agregar novo tipos de variveis, como: String, Long Int ou Vetores, por exemplo, assim possibilitando a criao de programas mais sofisticados. Implementao de Dispositivos de Entrada/Sada: Como uma grande funcionalidade a ser agregada, cita-se a implementao de dispositivos de entrada e sada, um teclado virtual e um monitor virtual, possibilitando a criao de programas que tenham a possibilidade de interao com o usurio quanto a entrada de dados durante o processamento, e tambm visualizao da sada de dados aps o processamento. Assim, tornando a simulao mais prxima do funcionamento de um computador convencional. Implementao de Instrues Imediatas: Implementao do recurso de operao com dados diretamente da memria, sem a necessidade de carreg-los para os registradores, otimizando a

19

execuo dos programas. Aumentar o Nmero de Registradores: O sistema disponibiliza somente quatro registradores na sua estrutura. Portanto, cita-se como expanso o aumento no nmero de registradores aumentando a capacidade de processamento do computador.

10 CONCLUSO
No mbito educacional, no ensino de contedos relacionados rea de arquitetura de organizao de computadores, os educadores se utilizam de simuladores, para auxiliar na fixao dos contedos, fazendo via software a simulao do funcionamento interno do hardware. Durante os anos, identificou-se uma srie de limitaes dessas ferramentas disponveis de simulao, pelo fato de no detalharem suficientemente como se d o funcionamento interno do computador, principalmente por no expressar esse funcionamento de forma interativa para o usurio. Ento, devido a estes aspectos negativos com relao aos simuladores utilizados, nasceu a proposta de desenvolvimento de um simulador de um computador simples, cujo objetivo seria resolver as questes para as quais os softwares existentes no eram satisfatrios. Este trabalho apresentou o desenvolvimento de um simulador de um computador simples, baseado na arquitetura de von Neumann, iniciando pelos conceitos tericos relacionados ao tema at o prprio desenvolvimento da aplicao. Entre os aspectos tericos envolvidos, so abordados o modelo original definido por Neumann e um esquema bsico, baseado no mesmo conceito de von Neumann, mas exposto de uma forma mais abstrata, que utilizado nas literaturas atuais. Partindo desse esquema atual, onde so representados a CPU, a memria principal, barramentos e dispositivos de entrada e sada, como os componentes essenciais da arquitetura interna da mquina, foi dada nfase a cada um desses componentes de forma particular, explorando seus conceitos e suas funcionalidades, bem como a interao desses dispositivos. Aps essas definies iniciais quanto aos aspectos fsicos a serem representados no sistema, ou seja, os componentes do hardware que so integrantes da arquitetura interna da mquina, so expostos no artigo os conceitos referentes ao software do baixo nvel que executado provendo a operacionalizao destes componentes. Para tal foi abordada a linguagem de montagem, implementada no sistema de modo que o usurio possa inserir programas executveis no simulador. Quanto s limitaes analisadas nos software existentes e o que se deseja que o sistema proposto atenda, verificou-se que de uma forma geral as duas ferramentas apresentadas, Neander e K&S, simulam de uma forma correta o funcionamento do hardware e a interao entre os dispositivos. O problema est na forma de como apresentada a simulao e nas funcionalidades oferecidas. O simulador K&S um simulador grfico, funciona de forma correta, mas possui duas deficincias significativas: em primeiro lugar a sua interface que se distancia um pouco da forma conceitual do hardware do computador. O modo como so apresentados os dispositivos apresenta pouca semelhana com o hardware. Outro aspecto importante que os programas criados no K&S para execuo no podem ser salvos, pois o software no disponibiliza essa funcionalidade. Analisando sob o foco didtico um aspecto crtico para sua utilizao. Sobre o Neander pode-se compartilhar quanto forma grfica as mesmas consideraes feitas ao K&S, sendo que o simulador Neander apresenta menos informaes que o K&S quanto ao layout do hardware do computador. O diferencial do Neander que pode-se salvar os programas inseridos no sistema para uma futura manipulao. Aps a anlise dos sistemas existentes, o sistema desenvolvido foi projetado contendo as funcionalidades analisadas como negativas nos software existentes, com intuito de atender as estes requisitos. Na seo referente ao desenvolvimento do sistema, um tpico abordou a descrio das funcionalidades implementadas, onde foram propostas uma srie de melhorias em relao aos software hoje utilizados. Em outro tpico, denominado de modelo conceitual, pode-se visualizar como o sistema foi projetado, como esto dispostos os elementos e suas interaes. A partir dessa ilustrao pode-se verificar como forma abstrata como se d o funcionamento do hardware do computador, como se d a comunicao entre os seus elementos. Dando continuidade ao desenvolvimento, foi exposto o conjunto de instrues disponibilizadas ao usurio para construo de seus programas, programas esses que so descritos utilizando sua linguagem prpria, que abordada em um tpico especifico neste artigo. Para prover e apresentar uma segura validao do sistema, foi desenvolvido um instrumento de avaliao, composto por uma srie de questes. Como resultado, obteve-se uma avaliao quanto satisfao do usurio na utilizao do sistema. A avaliao foi realizada diretamente com o pblico alvo, os alunos dos

20

cursos de graduao, e foram obtidos resultados satisfatrios quanto anlise feita do sistema. Os alunos usaram o sistema, e como nota geral o simulador obteve mdia 9 e bons comentrios por parte dos usurios. Finalizando, foi exposto um tpico especfico tratando sobre a possibilidade de continuidade deste projeto e expanso deste sistema. Por ser um domnio muito abrangente, este trabalho atende uma srie de requisitos, mas tem-se ainda margem para expanso. Para tal, foram expostos alguns itens que podem ser melhor estruturados ou inovados, cujo resultado ser um software simulador mais robusto e sofisticado, cujo resultado final propiciar aos usurios uma forma alternativa de estudo dos temas relacionados ao hardware e ao funcionamento interno do computador, utilizando de uma ferramenta capaz de simular visualmente o fluxo de operao do hardware na execuo de diferentes programas. O tema deste projeto bastante amplo, pois trata de uma rea com um contedo abrangente. O projeto proposto neste artigo trata vrios aspectos sobre o tema, mas ainda tem-se a possibilidade de avanos com relao sua implementao, expandindo seus recursos e funcionalidades ou melhorando os existentes, citam-se os itens: adequaes no processo de anlise de erros, agregao de novas instrues, novos tipos de variveis, implementao de dispositivos de entrada/sada, implementao de instrues imediatas, aumento do nmero de registradores, conforme foi exposto no tpico referente a Trabalhos Futuros. Este projeto ser doado para a Universidade Luterana do Brasil e seu cdigo-fonte poder ser integralmente utilizado para continuidade do projeto, estudos e novas implementaes.

REFERNCIAS
BOOCH, Grady; RUMBAUGH, James; JOCABSON, Ivar. UML Guia do Usurio. Ed. Campus. 1 Edio, 2000. BRAUGHT, Willian Grant; Site pessoal. Disponivel em: <http://users.dickinson.edu/~braught/>. Acesso em: 27 set. 2010. BRAUGHT, Willian Grant; Site K&S. Disponivel em: <http://users.dickinson.edu/~braught/kands/kands.html/>. Acesso em: 27 set. 2010. NETBEANS.ORG. Disponvel em <http://netbeans.org/>. Consultado em Junho/2011. PATTERSON, David A.; HENNESSY, John L. Organizao e Projeto de Computadores. Rio de Janeiro: Ed. LTC. 2 edio, 2000. 551p. PREECE, Jony; ROGERS, Yvonne; SHARP, Helen; BENYON, David; HOLLAND, Simon; CAREY, Tom. Human-Computer Interaction. England: Ed. Addison-Wesley, 1994.763p. STALLINGS, W. Arquitetura e Organizao de Computadores. So Paulo: Ed. Prentice Hall 5 Edio, 2003. 786p. SUN MICROSYSTEMS. Disponvel em <http://www.java.com/>. Consultado em Junho/2011. TANENBAUM, Andrew S.Organizao Estruturada de Computadores. Rio de Janeiro: Ed. LTC 4 Edio, 2001. 398p. WEBBER, Raul Fernando. Fundamentos de Arquitetura de Computadores. Porto Alegre: Ed. Sagra Luzzato. 2 Edio, 2001. 299p. ZANUZ, A.; MARCHIORO , G.F.; PETRY, A. Arquitetura e Organizao de Computadores I. Caderno Universitrio n 353. Canoas. Ulbra, 2006. 59p.

21

APNDICE A: MODELO DE ARQUITETURA

22

APNDICE B: DICIONRIO DE TERMOS DO PROJETO


Abrev. ERX Descrio Endereo do registrador usado como operando X da ULA Endereo do registrador usados como operando Y da ULA Operao da ULA Carga (Load) do Contador de Programa Incremento do Contador de Programa Carga (Load) do Registrador de Instruo Carga (Load) do Registrador de Endereo da Memria Carga (Load) do Registrador de Dados Registrador de Endereo da Memria Endereo da memria Flag Negativo Flag Overflow Registrador 0 do banco de registradores Registrador 2 do banco de registradores Entrada X da ULA Unidade Lgico-Aritmtica Flag de acesso memria (R Leitura / W Escrita) Abrev. LRX Descrio Load do registrador X usado tambm para armazenar resposta da ULA ou um valor da memria Status do Multiplexador 1 Status do Multiplexador 2 Load do Registrador de Status Registrador Contador de Programa Registrador de Instruo Multiplexador 1 Multiplexador 2 Registrador de Dados da Memria Seletor do Chip (Chip Select) da Memria Zero Resposta da ULA Registrador 1 do banco de registradores Registrador 3 do banco de registradores Entrada Y da ULA Registrador de Status Unidade de Controle

ERY OPULA LCP ICP LRI LRE LRD RE END N OV R0 R2 X ULA R/W

SM1 SM2 LRS CP RI M1 M2 RD CS Z R R1 R3 Y RS UC

23

APNDICE C: DIAGRAMA DE SEQUNCIA

Diagrama de Sequncia O diagrama ilustrado na figura acima apresenta de forma visual a troca de mensagens realizada pelo usurio para colocar um programa em execuo. Pode-se visualizar os mtodos que so disparados a cada interao do usurio, bem como as classes envolvidas. A seguir est uma breve descrio referente a essa sequncia de passos: CarregarInterface: Atividade realizada pelo usurio que consiste no carregamento na tela das interfaces de programao e de simulao. Programar: Atividade realizada pelo usurio que consiste de insero de um programa no simulador, seja inserindo um novo programa ou abrindo um programa j existente, que tenha sido previamente salvo. Montar: Atividade realizada pelo usurio e consiste na montagem de um programa previamente inserido no computador. AnalisarErros: Este processo consiste na realizao do processamento do programa inserido, com o objetivo de buscar erros na descrio do programa, com base nas definies na linguagem6 do sistema. Como resultados da analise, nenhum erro sendo encontrado disparado o mtodo MontarPrograma, caso seja encontrado o erro mostrado na interface para o usurio. MontarPrograma: Este um processo interno realizado pelo sistema e consiste da montagem de um programa previamente inserido. A definio do processo de montagem foi descrita na sesso do Modelo Conceitual. CarregarPrograma: O processo CarregarPrograma utilizado para carregar um programa no computador do simulador, como pr-condio para sua execuo que o programa j tenha sido previamente montado. A execuo desse mtodo inicia o mtodo CarregarMemria, que ser descrito a seguir. CarregarMemria: Este mtodo consiste no carregamento de um programa para a memria do computador do simulador. O resultado da execuo deste mtodo um programa pronto para ser executado no simulador. ExecutarPrograma: Este mtodo consiste em iniciar a execuo de um programa no simulador, efetivamente iniciar uma simulao. Como pr-condio para a execuo deste mtodo que um programa j tenha sido previamente carregado na memria

No tpico 6.5 do artigo abordado os aspectos relativos a linguagem de montagem prpria desenvolvida para criao dos programas executados pelo simulador.

24

APNDICE D: AVALIAO COMPLETA


TPICOS DA AVALIAO 1 Com relao sua interface, analisando os aspectos descritos abaixo: 2 Com relao visualizao dos elementos que compe o simulador, analisando o seu design: 3 Com relao ao entendimento do hardware do simulador, analisando os seguintes aspectos: 1.1 Disposio dos elementos na tela 1.2 Design da interface 1.3 Cores e ilustraes 2.1 Quantidade de elementos 2.2 Organizao dos elementos na tela 2.3 Organizao do sistema quanto aos seus elementos 3.1 Facilidade de entendimento do hardware 3.2 Clareza quanto visualizao dos elementos 3.3 Quanto a disposio dos elementos na tela 3.4 Relacionamento entre os componentes do simulador com um computador real 4 Com relao a simulao do funcionamento do hardware, durante a execuo de um programa, analisando os aspectos abaixo: 4.1 Entendimento quanto ao fluxo de operaes do hardware 4.2 Interaes grficas durante a simulao 4.3 Entendimento quanto ao funcionamento da simulao 4.4 Com relao ao Painel de Status, apresentou clareza na visualizao 4.5 O resultado da simulao atendeu suas expectativas 5 Como relao aos recursos oferecidos pelo sistema, como voc avalia os aspectos abaixo: 5.1 Os recursos oferecidos pelo software so claros quanto seu funcionamento 5.2 Os recursos disponveis funcionaram adequadamente, conforme foi proposto MDIA 8,92 8,84 8,84 8,76 8,84 9,04 8,56 8,80 9,04 8,92 8,72 9,08 8,92 9,24 9,24 9,00 9,28 8,72 9,52 8,76 9,00

6 Com relao Linguagem de 6.1 Como foi seu entendimento quanto declarao da Montagem definida no simulador, linguagem analise os seguintes aspectos: 6.2 O processo de montagem do programa foi executado corretamente 6.3 Como relao a verificao de erros no cdigo, foi suficientemente informativo 7 . Qual sua avaliao geral com relao ao software ?

25