OrgComputadoras_Evolucion_2012

9

Transcript of OrgComputadoras_Evolucion_2012

  • Enseanza de Organizacin de Computadoras

    por medio de un mtodo activo

    Ivn de Jess Deras Tbora

    Departamento de Ingenieras, Universidad Tecnolgica Centroamericana,

    Honduras, [email protected]

    Resumen

    Este paper presenta la evolucin en el mtodo de enseanza de la clase Orga-

    nizacin 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, ensam-

    bladores, lenguajes de descripcin de hardware, microcontroladores y disposi-

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

    cionalmente la clase se ha sido impartida utilizando un mtodo de enseanza

    pasivo, es decir enfocado completamente en los aspectos tericos de la clase. Ba-

    jo este esquema el estudiante depende de su propia imaginacin para entender

    los conceptos subyacente relacionados con el hardware [4]. Este mtodo de ense-

    anza 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 imple-

    mentacin 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 duran-

    te 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 microcon-

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

    2

  • 3. Metodologa y Herramientas

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

    Prcticas con lenguaje ensamblador: Durante estas prcticas tpicamen-

    te 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 pro-

    gramacin 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 miniatu-

    ra) [Figura 2] y un entorno para la creacin de software [Figura 3] el cual

    facilita la creacin de programas (llamados sketches) que puedan interac-

    tuar 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 de-

    cir 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 empo-

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

    tas:

    Verilog:

    Verilog es un lenguaje de descripcin de hardware que provee me-

    canismos 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 compor-

    tamiento, 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 FP-

    GA 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 fun-

    cin 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 escri-

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

    6

  • 4. Arquitectura de MIPS8

    La arquitectura de MIPS8 est basada en Aizup [2] con algunas modicacio-

    nes, 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 Operacin

    nop No operation

    0000 00 00

    add rd, rs rd rd + rs

    0001 rd rs Actualizar el registro Z

    sub rd, rs rd rd - rs

    0010 rd rs Actualizar el registro Z

    or rd, rs rd rd or rs

    0011 rd rs Actualizar el registro Z

    and rd, rs rd rd and rs

    0100 rd rs Actualizar el registro Z

    xor rd, rs rd rd xor rs

    0101 rd rs Actualizar el registro Z

    mov rd, rs rd rs

    0110 rd rs Actualizar el registro Z

    ld rd, rs rd M[rs]

    0111 rd rs

    st rd, rs M[rs] rd

    1000 rd rs

    addi rd, rs rd rd + 000000n

    1001 rd rs Actualizar el registro Z

    subi rd, n rd rd - 000000n

    1011 rd n Actualizar el registro Z

    sr0l N r0 r0 or 0000N

    1011 N Actualizar el registro Z

    sr0h N r0 N0000

    1100 N Actualizar el registro Z

    bz N if (Z)

    1101 N PC PC + (s)N

    bnz N if (!Z)

    1110 N PC PC + (s)N

    bra N PC PC + (s)N

    1111 N

    Tabla 1: Conjunto de Instrucciones de MIPS8

    7

  • 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 programa-

    bles, 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 descrip-

    cin 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 Architectu-

    re/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) Website.

    http://courses.missouristate.edu/kenvollmar/mars/

    [6] Margolis , Michael. Arduino Cookbook, O'Reilly Media, Inc., Primera Edi-

    cin, Marzo 2011

    8

  • [7] Thomas & Moorby's. The Verilog Hardware Description Language, ,Quinta

    Edicin, 2008

    [8] Xilinx ISE Webpack Website. http://www.xilinx.com/products/design-

    tools/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 Synthe-

    sis, Prentice Hall, Primera Edicin, 2001.

    9