Anda di halaman 1dari 9

Enseanza de Organizacin de Computadoras

por medio de un mtodo activo


Ivn de Jess Deras Tbora
Departamento de Ingenieras, Universidad Tecnolgica Centroamericana,
Honduras, ideras@gmail.com
Resumen

Este paper presenta la evolucin en el mtodo de enseanza de la clase Organizacin de Computadoras en UNITEC pasando de un mtodo pasivo (basado
en aspectos tericos) a un mtodo activo (basado en aspectos terico/prcticos),
utilizando herramientas de software y hardware tales como simuladores, ensambladores, lenguajes de descripcin de hardware, microcontroladores y dispositivos lgicos programables. Estas herramientas permiten incluir prcticas en la
enseanza del lenguaje ensamblador, as como proyectos de hardware como el
diseo de un procesador de un solo ciclo el cual se implementa combinando
herramientas como Verilog y FPGAs.

Palabras Claves: Organizacin de Computadoras, Verilog, Lenguaje de


Descripcin de Hardware, FPGA
1.

Introduccin

La clase de Organizacin de Computadoras es parte del plan de Ingeniera


en Sistemas Computacionales e Ingeniera en Electrnica en UNITEC. Tradicionalmente la clase se ha sido impartida utilizando un mtodo de enseanza
pasivo, es decir enfocado completamente en los aspectos tericos de la clase. Bajo este esquema el estudiante depende de su propia imaginacin para entender
los conceptos subyacente relacionados con el hardware [4]. Este mtodo de enseanza es insuciente [1][3] en el sentido que los estudiantes no captan realmente
los conceptos de la clase y como consecuencia no comprenden como la clase se
enlaza con el resto en el plan de su carrera.
En este paper se presentan los cambios involucrados para lograr la implementacin de un mtodo enseanza activa, enfocado en el esquema de aprender
haciendo, el cual ayuda a los estudiantes a entender realmente como se construye
una computadora y como funciona en la prctica [3]. Lo primero fue un cambio
de la arquitectura estudiada durante la clase pasando de Intel x86 a MIPS32,
1

aunque siempre se estudian algunos aspectos de la arquitectura Intel x86 durante la clase, esto sirve para comparar ambas arquitecturas. Bsicamente Intel x86
es una arquitectura tipo CISC (conjunto de instrucciones complejas) y MIPS
es RISC (conjunto de instrucciones reducidas). Las arquitecturas de tipo CISC
contienen un mayor nmero de instrucciones comparadas con las arquitecturas
RISC, esta es la razn primordial que las hace difciles de aprender.
El segundo cambio fue ms drsticos e implic varios retos que sern descritos
ms adelante, este fue la inclusin de laboratorios con hardware, especcamente
la utilizacin de FPGA, Arduino y lenguajes de descripcin de hardware para la
implementacin de proyectos y laboratorios de la clase. Este tipo de actividades
realzan la experiencia de enseanza/aprendizaje durante la clase [1].
2.

Retos

Durante este proceso de evolucin hacia un mtodo activo se tuvieron que


superar varios obstculos, los cuales se mencionan a continuacin:
Tpicamente la duracin de las clases en UNITEC es de 10 semanas, de
las cuales durante 3 de ellas se aplican exmenes parciales. En el caso de
Organizacin de Computadoras se imparte durante 4 das a la semana, 1
hora y 10 minutos por da, lo cual nos da un total de aproximadamente
46 horas.
La mayora de los estudiantes que reciben la clase de Organizacin de
Computadoras son de Ingeniera en Sistemas Computacionales y tienen
poco o ningn background de electrnica.
No hay ninguna clase previa que ensee la utilizacin de un lenguaje de
descripcin de hardware.
Los ltimos dos puntos presentan una gran limitante ya que para poder llevar
a cabo proyectos de hardware los estudiantes necesitan tener conocimientos de
electrnica bsica asi como tener conocimientos de lenguajes de descripcin de
hardware. Esto unido a la limitante de tiempo, implica que no se pueden incluir
dichos tpicos como parte de la clase. Para solventar este problema se decidi
extender la clase un da a la semana, eso es en vez de 4 das a la semana ahora
se invierten 5 das, utilizando el quinto da para ensear tpicos como microcontroladores y electrnica bsica. El aprendizaje de un Lenguaje de Descripcin
de Hardware queda como responsabilidad del estudiante, teniendo a disposicin
una serie de lecciones pre-grabadas y disponibles en YouTube que ensean como
desarrollar descripciones de Hardware usando Verilog.

3.

Metodologa y Herramientas

Los laboratorios que tpicamente se desarrollan en la parte de software:


Prcticas con lenguaje ensamblador: Durante estas prcticas tpicamente se realizan pequeos programas en lenguaje ensamblador MIPS32 los
cuales luego son probados en el simulador MARS el cual se muestra en la
Figura 13. MARS es un entorno de desarrollo integrado (IDE) para programacin en lenguaje ensamblador MIPS, destinado para ser utilizado
a nivel educativo como complemento para el libro de texto Organizacin
y Diseo de Computadoras de Patterson y Hennessy [5]. Algunas de las
prcticas consisten en tomar fragmentos de cdigo en C y convertirlo en
Lenguaje Ensamblador.

Figura 1: El simulador MARS

En la parte de hardware los laboratorios involucran lo siguiente:


Prcticas con Arduino
Arduino es una familia de microcontroladores (computadoras en miniatura) [Figura 2] y un entorno para la creacin de software [Figura 3] el cual
facilita la creacin de programas (llamados sketches) que puedan interactuar con el mundo fsico [6]. En nuestro caso decidimos incluir Arduino
como parte de la clase porque nos sirve como herramienta de adquisicin
3

de datos al momento de probar los proyectos realizados con FPGA, es decir Arduino sirve como generador de seales de entradas y tambin como
procesa las seales de salida de los componentes para vericar la correcta
operacin de estos. Por otro lado Arduino facilita el aprendizaje de los
conceptos bsicos de electrnica y la interaccin con plataformas empotradas. Durante estas prcticas se invierte tiempo en el aprendizaje de la
plataforma Arduino y los microcontroladores as como en el aprendizaje
de los conceptos bsicos de electrnica.

Figura 2: La placa Arduino UNO

Figura 3: El entorno de desarrollo de Arduino

Laboratorios con dispositivos lgicos programables y Verilog


En estos laboratorios el estudiante interactua con las siguientes herramientas:
Verilog:

Verilog es un lenguaje de descripcin de hardware que provee mecanismos para crear descripciones de un sistema digital en varios
niveles de abstraccin. El lenguaje soporta las etapas tempranas de
conceptualizacin del diseo por medio de la abstraccin de comportamiento, y las ltimas etapas de implementacin por medio de las
abstracciones estructurales [7].
Xilinx ISE WebPack
ISE WebPACK es una herramienta ideal para el diseo con FPGA
y CPLD, la cual ofrece simulacin y sntesis de HDL (lenguajes de
descripcin de hardware), implementacin, ajuste de dispositivo, y
programacin JTAG [8].
4

FPGA (Field Programmable Gate Array)

Un FPGA es un dispositivo que es completamente manufacturado,


pero permanece independiente del diseo. Cada proveedor de FPGA manufactura los dispositivos con una arquitectura propietaria.
Sin embargo la arquitectura incluye una cantidad de bloques lgicos
programables que estn conectados a una matriz de interruptores
programables. Para congurar el dispositivo para ejecutar una funcin en particular esta matriz de interruptores es programada para
enrutar seales entre los bloque lgicos individuales [9].

Estas herramientas se combinan en la implementacin de un procesador


simple de un solo ciclo, el cual hemos llamado MIPS8 (la arquitectura
de MIPS8 ser descrito ms adelante). Bsicamente el estudiante escribe descripciones en Verilog de los diferentes componentes del procesador,
luego las depura y simula y por ltimo carga la descripcin en un FPGA
(sintetiza la descripcin) y ejecuta pruebas utilizando Arduino, para esta
ltima parte utilizamos una placa FPGA de National Instruments como
la mostrada en la Figura 4.

Figura 4: Placa FPGA de National Instruments

La implementacin del procesador MIPS8 se divide en componentes, que


luego se combinan para crear el procesador completo. Los componentes son los
siguientes:
5

Archivo de Registros: Consiste de 4 de registros de 8 bits cada uno, los


cuales son utilizados por el procesador para llevar las operaciones.
ALU (Unidad Aritmtica Lgica): Esta unidad es la encargada de llevar
a cabo las operaciones tanto aritmticas como lgicas.
Memoria de Instrucciones y Memoria de Datos: Son dos componentes de
almacenamiento, una es la memoria que contiene las instrucciones y la
otra es la memoria de datos.

4.

Arquitectura de MIPS8

La arquitectura de MIPS8 est basada en Aizup [2] con algunas modicaciones, ya que MIPS8 es un procesador de un solo ciclo y Aizup es un procesador
pipelined. MIPS8 utiliza el mismo conjunto de instrucciones de Aizup y el mismo
tamao de instrucciones y datos, el cual es de 8 bits.
La Tabla 1 lista las instrucciones soportadas por MIPS8. En esta tabla se
utilizan los registros PC (Program Counter), Z (Zero Flag) registro de 1 bit
para almacenar el ag de Zero de la ALU, la cual es evaluada por las sentencias
condicionales.
Formato de Instruccin
nop

Operacin
No operation

0000 00 00

add rd, rs

rd

0001 rd rs

Actualizar el registro Z

sub rd, rs

rd

0010 rd rs

Actualizar el registro Z

or rd, rs

rd

0011 rd rs

Actualizar el registro Z

and rd, rs

rd

0100 rd rs

Actualizar el registro Z

xor rd, rs

rd

0101 rd rs

Actualizar el registro Z

mov

rd

rd, rs







rd + rs

rd - rs

rd

rd

rd

or rs
and rs
xor rs

rs

0110 rd rs

Actualizar el registro Z

ld rd, rs

rd

0111 rd rs

st rd, rs

M[rs]

1000 rd rs

M[rs]

rd

addi rd, rs

rd

1001 rd rs

Actualizar el registro Z

subi rd, n

rd

1011 rd n

Actualizar el registro Z

sr0l N

r0

1011 N

Actualizar el registro Z

sr0h N

r0

1100 N

Actualizar el registro Z

bz N

if (Z)

1101 N

bnz N
1110 N

bra N




rd + 000000n

rd - 000000n

r0

N0000

PC
if (!Z)
PC
PC

or 0000N




PC + (s)N

PC + (s)N

PC + (s)N

1111 N

Tabla 1: Conjunto de Instrucciones de MIPS8

5.

Conclusiones

Si bien es cierto el enfoque de la clase hasta ahora es la implementacin de


un procesador (ya que este es considerado el corazn de un sistema de computo),
es posible llevar a cabo otros laboratorios combinando FPGAs y Lenguajes de
Descripcin de Hardware como la implementacin de un controlador de memoria
cach, controlador de un teclado o mouse, etc.
Uno de los aspectos ms complicados para los estudiantes es el hecho de
aprender a desarrollar con un HDL (Lenguaje de Descripcin de Hardware), en
particular el hecho de que en un HDL utiliza el paradigma de paralelismo y
un lenguaje de programacin utiliza el paradigma secuencial. En este caso algo
ideal y recomendado es que los alumnos tengan algn tipo de interaccin con
un HDL en una clase previa, en el caso de UNITEC podra ser Diseo Lgico
Digital.
Los estudiantes han mostrado mucho inters en la clase despus de estos
cambios, en especial los de Ingeniera en Sistemas Computacionales, ya que esto
les permite llevar sus conocimientos de desarrollo de software a otro nivel en el
desarrollo de sistemas de hardware combinando dispositivos lgicos programables, microcontroladores, lenguajes de descripcin de hardware y lenguajes de
programacin, muchos optan por llevar a cabo proyectos adicionales en la clase
relacionados con tecnologas FPGA y microcontroladores.
La eleccin de Verilog sobre VHDL [10], el cual es otro lenguaje de descripcin de hardware de uso comn, se bas en el hecho que Verilog utiliza varias
construcciones sintcticas basadas en el lenguaje de programacin C, incluyendo
sentencias y operadores, lo cual hace ms fcil comprender las construcciones
del lenguaje.
Referencias

[1] Fida El-Din, Aws Yousif y Krad Hasan. Teaching Computer Architecture
and Organization using Simulation and FPGAs.
[2] Li, Yamin y Chu Wanming. Using FPGA for Computer Architecture/Organization Education.
[3] Hateld, B. y M Riecker. Incorporating simulation and implementation into
teaching computer architecture and organization.
[4] Al-Aubidy, Kasim M. Teaching Computer Organization and Architecture
Using Simulation and FPGA Applications
[5] MARS (MIPS Assembler and Runtime Simulator)
http://courses.missouristate.edu/kenvollmar/mars/

Website.

[6] Margolis , Michael. Arduino Cookbook, O'Reilly Media, Inc., Primera Edicin, Marzo 2011

[7] Thomas & Moorby's. The Verilog Hardware Description Language, ,Quinta
Edicin, 2008
[8] Xilinx ISE Webpack Website. http://www.xilinx.com/products/designtools/ise-design-suite/ise-webpack.htm
[9] Smith, Douglas J. HDL Chip Design, A Practical Guide for Designing,
Synthesizing & Simulating Asics & Fpgas Using Vhdl or Verilog, Doone
Publications, 1996
[10] Yalamanchili Sudhakar, Introductory VHDL: From Simulation to Synthesis, Prentice Hall, Primera Edicin, 2001.

Anda mungkin juga menyukai