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