Você está na página 1de 7

Um Processador Bsico para o Ensino de Conceitos de

Arquitetura e Organizao de Computadores


Diana Morandi , Maicon Carlos Pereira, Andr Luis Alice Raabe, Cesar Albenes Zeferino
Centro de Cincias Tecnolgicas da Terra e do Mar (CTTMar)
Universidade do Vale do Itaja (Univali)
Rua Uruguai, 458 Caixa Postal 360 88302-202 Itaja SC Brasil
{diana.morandi, maicon, raabe, zeferino}@univali.br
Abstract. The knowledge of computers operation is very important to allow to
undergraduate students to understand a number of concepts of the programming
area. In this sense, teachers of the first courses of programming use abstractions to
introduce some of those concepts and to improve the students understanding.
Nevertheless, for some students, such abstractions are very limited to accomplish
with this goal, and more detailed model are necessary. This paper is inserted in this
context and presents results of a project that aims at the development of a family of
basic processors for use in the teaching of concepts of computer architecture for
freshmen students.
Resumo. O conhecimento do funcionamento de um computador essencial para que
um estudante de Computao possa compreender muitos conceitos da rea de
programao. Nesse sentido, os professores de disciplinas introdutrias de
programao utilizam abstraes para apresentar alguns desses conceitos e
possibilitar aos alunos um maior entendimento dos aspectos da disciplina. No
entanto, essas abstraes so limitadas e o objetivo do professor muitas vezes no
alcanado. Nesse contexto, este trabalho apresenta resultados de um projeto que
visa o desenvolvimento de uma famlia de processadores bsicos para o estudo de
arquitetura de computadores por alunos de fases iniciais de cursos de graduao em
Computao.
1. Introduo
O estudo do funcionamento de um computador e de seu processador fundamental na formao
de alunos de cursos de graduao em Computao. Isso porque determinados conceitos
utilizados nas disciplinas da rea de Algoritmos e Programao so melhor compreendidos
pelos alunos quando eles entendem os seus significados ao estudar a arquitetura do computador.
No entanto, em muitos cursos de graduao, as disciplinas da rea de Programao so
cursadas antes das disciplinas da rea de Arquitetura e Organizao de Computadores, nas
quais o funcionamento do computador estudado. Conceitos de programao como, por
exemplo, constantes, variveis, vetores, ponteiros, nveis de linguagem e outros, s so
completamente assimilados pelos alunos quando o nvel de abstrao reduzido.
Para contornar esse problema, em muitos cursos, costuma-se apresentar algumas
noes bsicas de Arquitetura e Organizao de Computadores aos alunos matriculados em
disciplinas que oferecem uma introduo geral Computao, tipicamente no primeiro ano do
curso. So utilizados exemplos de processadores bsicos que ilustram conceitos como: ciclo de
instruo, conjunto de instrues, armazenamento de variveis em memria, entre outros.
Hfen, Uruguaiana, V. 30, n 58, II semestre 2006

Duas caractersticas so observadas nessa abordagem. A primeira diz respeito falta de
uma articulao adequada entre os professores dessas disciplinas introdutrias e os professores
da rea de Algoritmos e Programao, pois, em alguns casos, no ocorre o encadeamento
necessrio na apresentao dos contedos. Uma outra caracterstica refere-se limitao dos
modelos utilizados para a apresentao dos conceitos bsicos de arquitetura. Embora esses
modelos sejam adequados e suficientes para o propsito inicial das disciplinas introdutrias,
eles apresentam restries que no permitem avanar no estudo ou ainda integr-los a outras
disciplinas do curso, como, por exemplo, as da rea de Circuitos Digitais. Em resumo, eles
pecam pela falta de informaes que permitam que um aluno utilize a base de conhecimentos
adquiridos nessas disciplinas introdutrias a fim de integr-los ainda nas primeiras fases do
curso.
Nesse contexto, este trabalho apresenta resultados de um projeto em andamento que
visa desenvolver e disponibilizar uma famlia de processadores com um conjunto de instrues
mnimo que auxilie o aprendizado de conceitos de Arquitetura e Organizao de Computadores
por alunos de fases iniciais de cursos de graduao em Computao. O objetivo que essa
famlia de processadores sirva de referncia para a apresentao dos conceitos bsicos
necessrios ao melhor entendimento das abstraes utilizadas nas disciplinas da rea de
Algoritmos e Programao. Ao mesmo tempo, busca-se disponibilizar uma especificao
completa para que alunos de disciplinas da rea de Eletrnica possam utilizar os conhecimentos
apresentados nessas disciplinas para projetar e at mesmo construir um modelo fsico do
processador com o uso de ferramentas de projeto de circuitos, disponveis a muitas instituies
atravs de parcerias na forma de programas universitrios.
As sees a seguir apresentam uma breve anlise sobre o uso de processadores no
ensino de Computao, a descrio da arquitetura e da organizao da primeira gerao de
processadores bsicos propostos neste projeto e aspectos de implementao e uso desse
processador no ensino.
2. Uso de processadores no ensino de Computao
A escolha de modelos de processadores para o ensino de conceitos de arquitetura e organizao
de computadores alvo de estudos freqentes pelos educadores da rea, como, por exemplo, no
trabalho apresentado por Clements (1999) que discute aspectos que devem ser levados em
considerao na escolha de modelos de processadores a serem aplicados no ensino de
graduao. Enquanto alguns autores e professores optam por utilizar modelos hipotticos de
processadores, outros adotam processadores reais e comerciais como referncia para estudos de
caso.
Para as fases iniciais, a seleo de processadores para o ensino concorrente da lgica de
programao e de conceitos de arquitetura de computadores deve facilitar o estabelecimento de
relaes entre as abstraes lgicas necessrias programao e a implementao dessas
abstraes em hardware. Porm, os modelos de processadores tipicamente utilizados por
professores de disciplinas introdutrias so abstratos demais e no permitem estabelecer essas
relaes. Uma alternativa seria utilizar modelos de processadores mais detalhados, como
aqueles adotados nas disciplinas especficas da rea de Arquitetura e Organizao de
Computadores (ex. MIPS, x86,...). Porm, esses processadores so demasiadamente complexos
para serem aplicados em disciplinas do primeiro ano.
Considerando livros adotados em universidades brasileiras, podem ser destacados dois
exemplos associados a essa questo. O livro Organizao e projeto de computadores, de
Patterson e Hennessy (2005), utiliza o processador MIPS como arquitetura base para
apresentao de conceitos de arquitetura e organizao. Esse livro se caracteriza por explorar a
interface entre o hardware e software de modo a permitir ao aluno ligar os conceitos estudados
Hfen, Uruguaiana, V. 30, n 58, II semestre 2006
74

com aqueles vistos nas disciplinas de programao. No entanto, o pouco embasamento dos
alunos nas fases iniciais torna inadequado o uso de processadores com o grau de complexidade
do MIPS. Um segundo exemplo o livro Fundamentos de arquitetura de computadores, de
Weber (2004). Nesse livro, o autor apresenta conceitos fundamentais como, por exemplo, bases
numricas, sistemas de numerao e aritmtica binria, e ilustra de uma srie de processadores
especificados para fins didticos (Neander, Ahmes, Ramses e Cesar), propiciando o
entendimento gradativo de diversos conceitos importantes da rea de Arquitetura e Organizao
de Computadores. Porm, a abordagem utilizada no favorece a integrao desses conceitos
com os estudados nas disciplinas da rea de Algoritmos e Programao.
Nesse contexto, ao buscar estabelecer uma relao entre as necessidades dos alunos que
esto iniciando a programar e as representaes em hardware correspondentes, devem-se
identificar os principais pontos em comum que so tradicionais fontes de incompreenso para
os estudantes e que podem ser elucidados de forma concreta. Como exemplo, podem ser
mencionadas as relaes entre: (i) declarao de varivel e alocao de memria; (ii) constantes
e operandos imediatos; (iii) atribuio de variveis e sua correspondncia com as operaes de
acesso memria: e (iv) operaes aritmticas e sua execuo no hardware; entre outras
relaes. Logo, a escolha do processador para ser utilizado nas fases iniciais deve priorizar
aspectos didticos que favoream a compreenso das relaes entre software e hardware numa
abordagem multidisciplinar.
3. BIP Basic Instruction-set Processor
O projeto BIP (Basic Instruction-set Processor) insere-se no contexto acima apresentado e visa
desenvolver uma arquitetura de referncia para o ensino de conceitos da rea de Arquitetura e
Organizao de Computadores para alunos de fases iniciais de cursos de graduao em
Computao visando prover a base necessria para compreenso das abstraes adotadas nas
disciplinas da rea de Algoritmos e Programao. O projeto prev a especificao de uma
famlia de processadores bsicos com recursos incrementais que permitam a apresentao de
conceitos introdutrios de arquitetura e de organizao e a ligao imediata com conceitos da
rea de Programao. Tambm busca oferecer informaes suficientes para que os alunos
possam implementar o processador utilizando conhecimentos de disciplinas da rea de
Eletrnica.
3.1. O contexto do projeto
Este projeto est associado a um curso de graduao em Cincia da Computao que apresenta
uma estrutura curricular em que os alunos da primeira fase cursam as disciplinas Algoritmos e
Programao (120 h/a), Computao Bsica (60 h/a) e outras duas disciplinas da rea de
Matemtica. A primeira disciplina apresenta os conceitos fundamentais de algoritmos e
introduz aos alunos as linguagens Portugus estruturado (ao longo do semestre) e C (no perodo
final). A disciplina Computao Bsica oferece uma viso introdutria a diversos conceitos da
rea de Computao, como os de arquitetura e de organizao de computadores, entre outros.
Na segunda fase, o estudo de programao aprofundado na disciplina Algoritmos e
Programao (90 h/a), a qual seguida pelas disciplinas Programao (60 h/a) e Estruturas de
Dados (90 h/a), da terceira fase. Ainda no segundo perodo, os alunos cursam a disciplina
Circuitos Digitais (60 h/a), a qual possui como foco o estudo dos circuitos utilizados na
construo de sistemas digitais de processamento. Apenas a partir da terceira fase que os
alunos realizam um estudo completo sobre o funcionamento de processadores e computadores
nas disciplinas intituladas Arquitetura e Organizao de Computadores, do terceiro e quarto
perodos (ambas com 60 h/a).
Hfen, Uruguaiana, V. 30, n 58, II semestre 2006
75

3.2. Motivao inicial
A motivao para este projeto surgiu da identificao de uma dificuldade por parte dos alunos
no entendimento e na consolidao de certas abstraes assumidas nas disciplinas introdutrias
da rea de Programao. Embora tenha se buscado sanar essa dificuldade na disciplina
Computao Bsica com o estudo de modelos de processadores hipotticos descritos na
literatura, percebeu-se que o objetivo pretendido no era plenamente alcanado. Isso pde ser
atribudo a vrias razes, das quais podem ser destacadas duas. Primeiramente, o modelo
adotado era simples o suficiente para promover o entendimento do funcionamento bsico do
processador (ex. ciclo de instruo) e de alguns conceitos de programao (ex. varivel, nveis
de linguagem), mas incompleto para demonstrar como as estruturas de controle (como desvios e
laos de repetio) so executadas e, em especial, implementadas no processador. Num outro
extremo, modelos de processadores mais completos mostraram-se ineficientes frente
demasiada complexidade, dificultando entendimento por parte dos alunos.
3.3. Diretrizes principais
A experincia descrita acima levou identificao da necessidade e da oportunidade de
desenvolver o projeto aqui apresentado. Trs diretrizes bsicas foram definidas para norte-lo:
1. A arquitetura do processador deveria ser simples o suficiente para facilitar no apenas o
entendimento do seu funcionamento, mas tambm a sua construo a partir dos
conceitos estudados na disciplina Circuitos Digitais;
2. A arquitetura do processador deveria extensvel de modo a permitir a incluso do
suporte de hardware para diferentes conceitos da rea de programao;
3. Qualquer ferramenta de apoio desenvolvida no contexto do projeto (ex. tradutor,
simulador,...) deveria priorizar, na sua implementao, o uso das estruturas de
linguagem compreendidas no primeiro ano do curso, de modo a permitir que os
estudantes pudessem aplicar os conhecimentos j adquiridos para estudar e estender
essas ferramentas.
A partir dessas diretrizes, foi definido que os seguintes conceitos seriam focalizados
nas duas primeiras geraes do processador BIP:
BIP I: nveis de linguagem, constantes, variveis, representao de dados e de
instrues, conjuntos de instrues, programao em linguagem de montagem e
gerao de cdigo na linguagem da mquina;
BIP II: incluso de suporte a implementao de estruturas de controle para desvios
(condicionais e incondicionais) e laos de repetio, incluindo, o suporte a operaes
relacionais.
3.4. Arquitetura BIP I
O BIP utiliza uma arquitetura baseada na arquitetura RISC (Reduced Instruction-Set Computer)
do microcontrolador PIC da Microchip (1998). Ele uma mquina orientada a acumulador e
no possui banco de registradores como o processador MIPS [Patterson e Hennesy 2005].
Como apresenta um nico registrador para armazenamento de dados, todas as operaes
envolvem o acumulador e, em algumas operaes aritmticas, necessrio utilizar operandos
posicionados na memria (ou sejam, no uma mquina load/store). Esses dois aspectos
descaracterizam o BIP I como uma arquitetura RISC pura. Por outro lado, outros requisitos das
arquiteturas RISC so contemplados [Esponda e Rojas 1992], como pode ser observado na
Figura 1 e na Tabela 1. Por exemplo, todas as instrues so baseadas em um nico formato de
instruo e em dois modos de endereamento.
Hfen, Uruguaiana, V. 30, n 58, II semestre 2006
76


Tamanho da palavra de dados 16 bits
Tipos de dados Inteiro com sinal
Tamanho da palavra de instruo 16 bits
Formato de instruo
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Cd. Operao Operando

Modos de endereamento Direto: o operando um endereo da memria
Imediato: o operando uma constante
Registradores ACC: acumulador
IR: registrador de instrues
PC: contador de programa
Classes de instruo Transferncia (acesso memria): STO, LD e LDI
Aritmtica: ADD, ADDI, SUB e SUBI
Figura 1. Quadro-resumo da arquitetura do BIP I
Tabela 1. Conjunto de instrues do BIP I
Cdigo da operao Instruo Operao Classe
00000 Reservada Reservada Reservada
00001
STO endereo
(endereo) ACC Transferncia
00010
LD end ereo
ACC (endereo) Transferncia
00011
LDI constante
ACC constante Transferncia
00100
ADD endereo
ACC ACC + (endereo) Aritmtica
00101
ADDI constante
ACC ACC + constante Aritmtica
00110
SUB end ereo
ACC ACC (endereo) Aritmtica
00111
SUBI constante
ACC ACC constante Aritmtica
01000-01111 Reservadas Reservadas Reservadas
Notas: 1. A expresso (endereo) significa contedo da posio da memria apontada por endereo.
2. Os cdigos 01000-01111 esto reservados para futuras geraes da arquitetura BIP.
Como pode ser observado pelo conjunto de instrues descrito na Tabela 1, o BIP I
consiste basicamente de uma calculadora programvel que realiza operaes de soma e
subtrao com variveis e constantes. No entanto, apesar de limitado, esse conjunto de
instrues permite ilustrar a implementao em hardware de diversas abstraes estudadas nas
disciplinas da rea de Algoritmos e Programao, como pode ser visto nos exemplos de
utilizao do conjunto de instrues do BIP I mostrados na Tabela 2.
Tabela 2. Exemplos de programas para o BIP I
Exemplo Cdigo de alto nvel Cdigo assembly
Atribuio de uma constante
A = 10 LDI 10 ; ACC 10
STO A ; A ACC
Atribuio de uma varivel
A = B LD B ; ACC B
STO A ; A ACC
Incremento de varivel
A = A + 1 LD A ; ACC A
ADDI 1 ; ACC ACC + 1
STO A ; A ACC
Decremento de varivel
B = B - 2 LD B ; ACC B
SUBI 2 ; ACC ACC 2
STO B ; B ACC
Comando com mltiplas operaes
A = A + B 3 LD A ; ACC A
ADD B ; ACC ACC + B
SUBI 3 ; ACC ACC 3
STO A ; A ACC
Hfen, Uruguaiana, V. 30, n 58, II semestre 2006
77

3.5. Organizao do BIP I
A Figura 2 mostra uma das organizaes especificadas para a arquitetura BIP I. Essa
organizao utiliza uma estrutura do tipo Princeton (modelo de von Neumann), com uma nica
memria para armazenamento de dados e de instrues. O registrador PC aponta para a posio
de memria da prxima instruo, a qual buscada e armazenada no IR. A unidade de controle
(que no mostrada na figura para lhe conferir melhor legibilidade) decodifica a instruo e
define os sinais de controle que comandam os seletores dos trs multiplexadores, os comandos
de escrita dos registradores e da memria, e o comando de operao da unidade aritmtica
(UA). Uma segunda organizao do tipo Harvard, com memrias separadas para instrues e
dados tambm foi especificada.

IR
1
PC
+
MUX
:
0
4
12
16
MUX
Memria
Principal
UA
ACC
MUX
ADDR
DATAout
DATAin
LEGENDA
Via de 16 bits
Via de 12 bits
Via de 4 bits
Sinal (0 ou 1)

Figura 2. Organizao do BIP I
3.6. Implementao do BIP I
A organizao do BIP I foi implementada nos ambientes MAX+plus II e Quartus II da Altera
por meio do uso das ferramentas de captura de esquemtico, permitindo confirmar o
funcionamento da organizao proposta. A escolha pela entrada via captura de esquemtico
justifica-se pela maior facilidade de entendimento do modelo grfico em relao a modelos
implementados via linguagens de descrio de hardware, as quais exigem um conhecimento
adicional do aluno.
O modelo esquemtico do BIP utiliza uma mega-funo parametrizvel para
implementar a memria principal, cujo contedo inicial carregado por meio de um arquivo de
inicializao com os segmentos de texto e de dados. Esse arquivo gerado por uma ferramenta
desenvolvida neste projeto que realiza a traduo do cdigo assembly para o cdigo de mquina
em hexadecimal. Essa ferramenta possui uma interface visual e codificada em linguagem
C++, porm utilizando programao estruturada.
Diversos cdigos foram utilizados para verificar a correo dessa ferramenta e do
modelo esquemtico do processador, permitindo tambm validar a organizao proposta atravs
da sntese do modelo e da sua simulao no MAX+plus II e no Quartus II. Destaca-se que o BIP
requer 135 clulas lgicas em FPGAs da famlia Flex10K da Altera.
Hfen, Uruguaiana, V. 30, n 58, II semestre 2006
78

3.7. Relatos de aplicao do BIP I no ensino
A arquitetura do processador BIP I foi aplicada em duas turmas da disciplina Computao
Bsica para 80 alunos ingressantes no semestre 2005/2. A introduo do BIP I foi articulada
com os contedos correlacionados ministrados na disciplina Algoritmos e Programao.
Inicialmente, foi feita a introduo de conceitos bsicos de arquitetura de computadores, aps o
qual o BIP foi utilizado como estudo de caso para ilustrar esses conceitos. Continuando, foram
mostrados exemplos de programas e realizados exerccios com os alunos, os quais
demonstraram bastante facilidade no entendimento dos conceitos apresentados, bem como na
construo de programas em linguagem de montagem (confirmada em avaliao escrita).
Tambm lhes foi apresentada a organizao do BIP, com nfase no funcionamento do caminho
de dados para cada instruo do conjunto de instrues; e os resultados foram igualmente
satisfatrios.
4. Concluses
A experincia da aplicao do processador BIP na primeira fase do curso mostrou-se bastante
efetiva, uma vez que os alunos demonstraram ter assimilado com facilidade os conceitos
apresentados. No entanto, pde-se evidenciar que o conjunto de instrues limitado restringiu o
uso do BIP para ilustrar o funcionamento de estruturas de controle no nvel arquitetural.
Para contornar esse problema, j est em desenvolvimento o BIP II, o qual ser uma
extenso do BIP I incluindo instrues de comparao e de desvio condicional e incondicional
(que utilizaro os cdigos de operao disponveis). O objetivo manter o uso do BIP I at que
os conceitos associados estejam assimilados e, de maneira articulada com a disciplina
Algoritmos e Programao, introduzir o BIP II aps a apresentao das estruturas de controle
nessa disciplina.
Paralelamente especificao e implementao do novo processador, esto sendo
realizados trabalhos no sentido de disponibilizar um simulador do conjunto de instrues (para
o BIP I e para o BIP II), bem como um compilador de Portugus Estruturado para o assembly
do BIP. Este ltimo trabalho est sendo realizando em uma integrao com a disciplina
Compiladores.
Destaca-se ainda que o BIP ser utilizado em atividades prticas da disciplina Circuitos
Digitais, de forma que os alunos sejam orientados a implementar seus componentes
(registradores, multiplexadores, circuitos aritmticos e de controle) e integr-los na forma do
processador. Tambm ser considerado o seu uso como estudo de caso em cursos sobre
modelagem de hardware em VHDL e em SystemC.
Referncias
Clements, A. (1999) Selecting a processor for teaching computer architecture,
Microprocessor and Microsystems, 23, pp. 281-290.
Esponda, M.; Rojas, R. (1992) A graphical comparison of RISC processors, ACM Computer
Architecture News, v. 20, n. 4, pp.2-8.
Microchip (1998) PIC16F8X: 18-pin Flash/EEPROM 8-bit microcontrollers. Chandler,
Microchip Technology.
Patterson, D. A.; Hennessy, J. L. (2005) Organizao e projeto de computadores: a interface
hardware/software, So Paulo, Campus.
Weber, R. F. (2004) Fundamentos de arquitetura de computadores, Porto Alegre, Sagra
Luzzatto.
Hfen, Uruguaiana, V. 30, n 58, II semestre 2006
79

Você também pode gostar