Você está na página 1de 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.

1 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 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.
2 Professor orientador - Formao em Engenharia Eltrica, Mestre em Cincia da Computao e professor das disciplinas de Arquitetura de
Computadores I e II.

1
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.

2 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).

3 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.

3
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

4
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 SOFTWARE DE BAIXO NVEL


4.1 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.

6
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 SOFTWARES SIMULADORES EXISTENTES


5.1 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.

7
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.

8
6 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.

9
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 refere-
te 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 Linguagem de Montagem Exemplo Significado Linguagem de Mquina
MO LOAD REG [VAR] LOAD R0 [X] R0 = MEM [12] 000100 RRMMMMMMMM
MO STORE [X] REG STORE [X] R0 [X] = R0 001000RRMMMMMMMM
LA ADD RR RR ADD R0 R1 R0 = R0 + R1 1000 RR RR
LA SUB RR RR SUB R0 R1 R0 = R0 R1 1001 RR RR
LA OR RR RR OR R0 R1 R0 = R0 || R1 1010 RR RR
LA AND RR RR AND R0 R1 R0 = R0 & R1 1011 RR RR
LA CMP RR RR CMP R0 R1 R0 = R0 = = R1 1001 RR RR
DV JMP [LABEL] JMP VOLTA Desvia para VOLTA 00110000 MMMMMMMM
DV JZ [LABEL] JZ VOLTA Desvia para VOLTA se zero 01000000 MMMMMMMM
DV JN [LABEL] JN VOLTA Desvia para VOLTA se 01010000 MMMMMMMM
negativo
OU HALT HALT Encerra o programa 11111111
OU NOP NOP Nada a processar 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 Seo DATA
X DB 12 Declarao da varivel X, lhe atribuindo o valor 12
Y DB 4 Declarao da varivel X, lhe atribuindo o valor 4
Z DB 0 Declarao da varivel X, lhe atribuindo o valor 0
CODE Seo CODE
LOAD R0 [X] Carrega para o registrador R0 o valor da varivel X
LOAD R1 [Y] Carrega para o registrador R1 o valor da varivel Y
VOLTA: Declarao da label VOLTA
SUB R0 R1 Operao de subtrao, subtrai o valor de R0 menos R1
JZ SAI Se o resultado da ULA for 0 (Zero), pula para a Label SAI:
JMP VOLTA Pula para a label VOLTA
SAI: Declarao da label SAI
HALT 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
7 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 micro-
operaes 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.

8 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 MDIA
1 Com relao sua interface 8,87
2 Com relao visualizao dos elementos que compe o simulador 8,88
3 Com relao ao entendimento do hardware do simulador 8,83
4 Com relao a simulao do funcionamento do hardware, durante a execuo de um programa 9,04
5 Como relao aos recursos oferecidos pelo sistema 9,14
6 Com relao Linguagem de Montagem definida no simulador 9,00
7 Qual sua avaliao geral com relao ao software?
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.

9 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. Descrio Abrev. Descrio

ERX Endereo do registrador usado como LRX Load do registrador X usado tambm para
operando X da ULA armazenar resposta da ULA ou um valor da
memria
ERY Endereo do registrador usados como SM1 Status do Multiplexador 1
operando Y da ULA
OPULA Operao da ULA SM2 Status do Multiplexador 2
LCP Carga (Load) do Contador de Programa LRS Load do Registrador de Status
ICP Incremento do Contador de Programa CP Registrador Contador de Programa
LRI Carga (Load) do Registrador de RI Registrador de Instruo
Instruo
LRE Carga (Load) do Registrador de M1 Multiplexador 1
Endereo da Memria
LRD Carga (Load) do Registrador de Dados M2 Multiplexador 2
RE Registrador de Endereo da Memria RD Registrador de Dados da Memria
END Endereo da memria CS Seletor do Chip (Chip Select) da Memria
N Flag Negativo Z Zero
OV Flag Overflow R Resposta da ULA
R0 Registrador 0 do banco de registradores R1 Registrador 1 do banco de registradores
R2 Registrador 2 do banco de registradores R3 Registrador 3 do banco de registradores
X Entrada X da ULA Y Entrada Y da ULA
ULA Unidade Lgico-Aritmtica RS Registrador de Status
R/W Flag de acesso memria (R Leitura / UC Unidade de Controle
W Escrita)

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

6
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 MDIA


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

25

Você também pode gostar