Ministerio de Cultura y Educación
Universidad Nacional de San Luis
Facultad de Ciencias Físico Matemáticas y Naturales
Departamento: Informatica
Área: Area II: Sistemas de Computacion
(Programa del año 2022)
(Programa en trámite de aprobación)
(Programa presentado el 29/04/2022 10:41:18)
I - Oferta Académica
Materia Carrera Plan Año Periodo
ARQUITECTURA DEL PROCESADOR I LIC.CS.COMP. 32/12 2022 1° cuatrimestre
ARQUITECTURA DEL PROCESADOR I LIC.CS.COMP. 006/05 2022 1° cuatrimestre
II - Equipo Docente
Docente Función Cargo Dedicación
GROSSO, ALEJANDRO LEONARDO Prof. Responsable P.Asoc Exc 40 Hs
ARROYUELO BILLIARDI, JORGE A. Prof. Co-Responsable P.Adj Exc 40 Hs
ARROYUELO, MONICA DEL VALLE Responsable de Práctico JTP Exc 40 Hs
III - Características del Curso
Credito Horario Semanal Tipificación Duración
Teórico/Práctico Teóricas Prácticas de Aula Práct. de lab/ camp/ Resid/ PIP, etc. Total B - Teoria con prácticas de aula y laboratorio Desde Hasta Cantidad de Semanas Cantidad en Horas
Periodo
4 Hs.  Hs.  Hs. 4 Hs. 8 Hs. 1º Cuatrimestre 21/03/2022 24/06/2022 14 120
IV - Fundamentación
Con esta asignatura se inicia el estudio de las arquitecturas de procesadores para los alumnos de segundo año de la carrera Lic. en Cs. de la Computación, tomando como punto de partida los procesadores secuenciales de tipo Von Neumann. El alumno será involucrado en:
*Problemas de representación de los datos que serán manipulados por el procesador; en cómo diseñar dispositivos físicos que realicen la memorización y manipulación de los datos.
*Comprender cuál es el conjunto de manipulaciones provistas habitualmente por los procesadores.
*Cómo se controla la realización de estas manipulaciones a medida que transcurre el tiempo.
Esto conformará la base previa para el entendimiento de arquitecturas más avanzadas que intentan mejorar el rendimiento de los procesadores secuenciales. Dicha temática es objeto de la asignatura Arquitectura de Procesadores II.
V - Objetivos / Resultados de Aprendizaje
*Aprender a representar datos y a manipularlos usando circuitos digitales.
*Comprender cómo están diseñados los procesadores secuenciales y cómo es su ciclo de instrucción.
*Desarrollar una actitud crítica frente al diseño de distintos procesadores.
*Obtener experiencia en programación de bajo nivel. Comprender cómo interactúan los procesadores con su medio externo
VI - Contenidos
Este programa se desarrolla en el contexto de pandemia, su modalidad es (semipresencial) mediante el uso de plataformas de internet provistas por la UNSL. La modalidad remota plantea inconvenientes para los alumnos que no tienen acceso a internet y la tecnología necesaria para su conexión (teléfono celular o computadora, ruteador, servicio de internet). Estos inconvenientes que hacen imposible el objetivo de formación académica y profesional en forma remota de los estudiantes por parte de la universidad, por fortuna no se han presentado (todos los alumnos en condiciones de asistir poseen los elementos necesarios para realizarlo en forma remota).
Cabe mencionar que el cuatrimestre se ha reducido a 14 semanas en forma transitoria para regresar a las 15 semanas habituales para el próximo cuatrimestre. Salvo los puntos mencionados anteriormente, el programa presentado no posee inconvenientes para ser desarrollado en forma semipresencial, tanto en su parte teórica como de laboratorio y práctca realizando los ajustes necesarios para cubrir la totalidad del programa en 14 semanas en lugar de 15 semanas.

PROGRAMA ANALÍTICO Y DE EXAMEN


Unidad N° 1: Sistemas Numéricos y Aritmética


Sistemas numéricos posicionales. Sistema binario, hexadecimal y octal. Cambios de base B a b. Cambios de base usando aritmética en base b. Cambios de base usando aritmética en base B. Conversión de b=r^k a base r y viceversa. Aritmética de números sin signo no fraccionarios. Representación de números negativos: representación signo y magnitud, sistemas de complementos: complemento a la raíz y complemento a la raíz disminuida, en exceso. Operación de complementación. Números fraccionarios: representación en punto fijo y punto flotante: rango de representación y operaciones aritméticas. Representación de caracteres. Código BCD, ASCII y EBCDIC.


Unidad N° 2: Circuitos Digitales


Señales analógicas, señales digitales. Circuitos digitales. Álgebra de Boole. Propiedades del álgebra de Boole. Formalización de circuito digital. Síntesis de circuitos digitales. Compuertas Booleanas: AND, OR, NOT, XOR, NAND, NOR. Representación de circuitos digitales con circuitos Booleanos. Simplificación de circuitos. Utilización de un número restringido de operadores Booleanos. Circuitos combinacionales: semisumador, sumador completo, substractor completo, multiplexor y demutiplexor, decodificador. Especificación en VHDL de los circuitos: sumador, multiplexor, demultiplexor. Circuitos secuenciales: biestable, FF-SR, FF-D, registros, contadores ascendentes y descendentes módulo 2^n, registros desplazadores a izquierda y a derecha. Máquina de Moore. Máquina de Mealy.
Especificación en VHDL de una máquina secuencial de Mealy. Implementación de una fila y una pila.

Unidad N° 3: Organización Básica de una Memoria.


Organización de una memoria RAM (Random Access Memory). Construcción de una memoria de cuatro palabras con una memoria de dos palabras. Unidades de almacenamiento. Convenciones de numeración de bits y de bytes. Definición de contenido y continente de la información.


Unidad N° 4: Organización y Funcionamiento de una Unidad Central de Procesamiento.


Ciclo de instrucción. Organización básica de una máquina de primera generación: unidad de control, unidad aritmética y lógica, registros y buses internos. Instrucciones típicas. Fase de búsqueda de instrucción. Fase de búsqueda de operando. Fase de procesamiento de los datos. Fase de almacenamiento de resultado. Definición de Camino de datos (Data path). Camino de datos de la máquina de primera generación. Diseño de la unidad de control de una máquina de primera generación. Máquinas de segunda generación. Elementos de una instrucción de la máquina: Operación, frases de dirección. Instrucciones de tres direcciones, dos direcciones, una y cero dirección. tipos de operandos y tipos de operaciones. Modos de direccionamiento: conceptos generales. Modos de direccionamiento: registro, absoluto, inmediato, registro indirecto, post-incremento, pre-decremento. Modo de direccionamiento de múltiples componentes: indexado, relativos: a una base, a la próxima instrucción y a una página. Base indexado con desplazamiento. Operaciones: Manipulación de datos (manejo de datos, lógicas, aritméticas y relacionales), secuenciamiento, entrada-salida, supervisión.


Unidad N° 5: Lenguaje assembly y assembler


El procesador i386: tipos de datos, conjunto de instrucciones, modos de direccionamiento, formato de instrucción.
Lenguaje assembly: conceptos generales, sintaxis y pseudo operaciones. Assembler de dos pasadas. Operaciones en tiempo de ensamble, de carga y de ejecución. Implementación en lenguaje assembly de las estructuras de control: if-then, if-then-else, case, while y repeat. Acceso en lenguaje assembly a arreglos multidimensionales.
Máquinas de tercera generación. Máquinas de registros generales y Load Store. El procesador i386 y el ARM: tipos de datos, conjunto de instrucciones, modos de direccionamiento. Mecanismo de segmentación y paginado. Llamadas a subrutina y retornos de subrutina. Uso de la pila. Pasaje de parámetros a las subrutinas: por valor, por dirección, por valor-retorno, por retorno. Formas de pasaje de parámetros: en registros, en área asociada a la subrutina, en área asociada al llamador, en la pila. Ejemplos en el procesador i386.

Unidad N° 6: Entrada/Salida


Organización de un sistema de computadora: unidad central de procesamiento (CPU), memoria, entrada/salida (I/O) y sistema de interconexión (buses). Módulos de entrada/salida: interfaz con la CPU e interfaz con el dispositivo. Protocolos de entrada/salida. Entrada/Salida programada. Organización de la entrada/salida: dedicada y inmersa en el espacio de direcciones de memoria. Ejemplos de la entrada/salida en el procesador i386 y el LPC4337.


Unidad N° 7: Interrupciones. Acceso directo a memoria


Concepto de multiprogramación. Problemas presentados por la multiprogramación. Cambios de control necesarios para soportar multiprogramación: Interrupciones, despacho, llamadas al sistema. Condiciones asíncronas y síncronas. Atención de una interrupción asíncrona. Finalización de una interrupción síncrona. Manejo típico de una interrupción. Permiso para interrumpir: prioridades y deshabilitación de interrupciones. Acceso directo a memoria. Robo de ciclo.


VII - Plan de Trabajos Prácticos
Práctico N° 1: Sistemas numéricos

Representación de números en binario. Bases 2^k. Cambios de la base B a b. Cambios de base utilizando aritmética en la base B. Cambios de base utilizando artitmética en la base b. Representación en binario con bit de signo. Representación en sistemas de complemento. Representación en complemento a la raíz y raíz disminuida. Representación binaria en exceso. Operaciones aritméticas en los distintos sistemas de representación. Detección de desborde en los distintos sistemas de representación. Representación de números en BCD. Código ASCII. Representación y aritmética de números representados en punto fijo y flotante, rangos de representación.

Práctico N° 2: Circuitos digitales

Compuertas Booleanas. Expresión Booleana. Tablas de verdad. Circuitos Booleanos. Expresiones Booleanas usando una sola conectiva. Simplificación de circuitos. Circuitos sumadores, restadores, multiplexores y demutiplexores, decodificadores y codificadores. Biestables, flip-flop R-S, flip-flop D. Registros. Contadores. Desplazamiento. Decodificación de direcciones de memoria. Diseño de máquinas de estado finitas. Especificación y simulación de circuitos digitales combinacionales utilizando el software abierto ghdl y gtkview.

Práctico N° 3: Programación assembly en el i386 (inicial)

Características generales de la arquitectura del i386. Organización de la memoria. Familiarización con el set de instrucciones del i386 y pseudo instrucciones. Programas en lenguaje assembly simples. Instrucciones aritméticas y lógicas. Instrucciones de control condicional.Traducción de diferentes tipos de instrucciones. Calcular los desplazamientos que conforman algunas instrucciones y que son expresados en complemento a dos.

Práctico N° 4: Programación assembly en el i386 (modos de direccionamiento)

Realizar programas en los que se usen los distintos modos de direccionamiento: inmediato, registro, registro indirecto y indexado, relativos: a una base, a la próxima instrucción.
Implementación de las estructuras de control if-then, if-then-else, case, while y repeat. Implementación de arreglos multidimensionales. Utilización del ensamblador "as", el linker "ld" y el depurador "gdb" bajo linux para la programación de los ejercicios de aula.

Práctico N° 5: Programación assembly en el ARM (modos de direccionamiento)

Realizar programas en los que se usen los distintos modos de direccionamiento: inmediato, registro, indexado, relativos: a una base, a la próxima instrucción.
Utilización del ensamblador "arm-none-eabi-as", el linker "arm-none-eabi-ld" y el depurador "arm-none-eabi-gdb" bajo linux para la programación de los ejercicios de aula.

Práctico N° 6: Programación assembly en el i386 (subrutinas y pasaje de parámetros)

Instrucciones de llamada a subrutina y de retorno de subrutina. Manejo de la pila. Implementación en lenguaje assembly de las distintas formas de pasajes de parámetros: en registro, en área asociada al llamador, en área asociada a la rutina, en línea, en la pila. Pasaje por valor, por dirección, por valor retorno y por retorno. Utilización del ensamblador "as", el linker "ld" y el depurador "gdb" bajo linux para la programación de los ejercicios de aula.

Práctico N° 7: Programación assembly en el ARM (traducción a lenguaje de máquina)

Analizar los listados generados por el ensamblador. Traducción de diferentes tipos de instrucciones. Calcular los desplazamientos que conforman algunas instrucciones y que son expresados en complemento a dos.


Práctico N° 7: Entrada / salida e interrupciones (ARM)

Protocolo entre los dispositivos para hacer una entrada/salida programada. Programas que realicen entrada/salida en forma programada. Cuestionario sobre conceptos generales de interrupciones. Programas que realicen entrada/salida con interrupciones.
VIII - Regimen de Aprobación
Regularización

Para regularizar la materia el alumno deberá cumplir con los siguientes requisitos:
Asistir al 80% de las clases teóricas y prácticas.
Aprobar dos exámenes parciales. Cada examen parcial tendrá dos recuperaciones.

Examen Final

Los alumnos regulares deberán rendir un examen final (que podrá ser oral o escrito) que consistirá en preguntas sobre los temas desarrollados durante el dictado de la materia.


Alumnos libres

Los alumnos que desean rendir libre la materia se deberán poner en contacto con la cátedra a los efectos de realizar un práctico (de aula y/o laboratorio), el cual contendrá ejercicios similares a los desarrollados en los prácticos durante el dictado de la materia. Aprobando éste trabajo práctico el alumno tendrá derecho a rendir un examen oral con iguales características que el de los alumnos regulares.
IX - Bibliografía Básica
[1] WILLIAM STALLINGS. Computer Organization and Architecture: Designing for Performance. ED. PEARSON PRENTICE HALL [2010].
[2] JHON F. WAKERLEY. Microcomputer Architecture and Programming. Ed. JOHN WILEY AND SONS [1981].
[3] NIKLAUS WIRTH. Digital Circuit Design. An Introductory Textbook. Springer [1995].
[4] HAYES J. Computer Architecture and Organization. ED. MC. GRAW HILL [1988].
[5] C. WILLIAM GEAR. Computer Organization and Programing. ED. MC. GRAW HILL [1980].
[6] WILLIAM STALLINGS. Computer Organization and Architecture. ED. MACMILLAN [1990].
[7] WILLIAM STALLINGS. Computer Organization and Architecture fourth edition. ED. PRENTICE HALL [1996].
[8] JOHN L. HENNESSY & DAVID PATTERSON. Computer Architecture: A Quantitative Approach. 2nd Edition. ED. MORGAN AND KAUFMANN [1990].
[9] JEAN-PIERRE MEINADIER. Estructura y Funcionamiento de los Computadores Digitales. Editorial AC, Madrid [1980].
[10] DAVID MAXINEZ; JESSICA ALCALÁ. VHDL El arte de programar sistemas digitales. Editorial CECSA, Mexico [2002].
[11] JHON CRAWFORD. Architecture of the Intel 80386. Readings in Computer Architecture, pag. 157-162. Edited by M. D. Hill, n. P. Jouppi and G. S. Sohi. ISBN 1-55860-539-8. [2000]
[12] Dandamudi Sivarama P.. Introduction to Assembly Language Programming, for Pentium and RISC Processors. Springer. ISBN 0-387-20636-1. [2004].
[13] Dandamudi Sivarama P.. Guide to Assembly Language Programming in Linux. Springer. ISBN 0-387-25897-3. [2005].
X - Bibliografia Complementaria
[1] GERRIT A. BLAAUW-FREDERICK P. BROOKS, Jr. Computer Architecture. Concepts and Evolution. ED. ADDISON-WESLEY. [1997].
[2] PETER J. ASHENDEN. The Designer's Guide to VHDL (Second Edition). ED. Morgan Kaufmann Publishers [2002].
[3] BEHROOZ PARHAMI Computer Arithmetic. Oxford University Press; 2da edición [2010].
XI - Resumen de Objetivos
*Aprender a representar datos y a manipularlos usando circuitos digitales.
*Comprender cómo están diseñados los procesadores secuenciales y cómo es su ciclo de instrucción.
*Desarrollar una actitud crítica frente al diseño de distintos procesadores.
*Obtener experiencia en programación de bajo nivel.Comprender cómo interactúan los procesadores con su medio externo.
XII - Resumen del Programa
Sistemas Numéricos. Representación y aritmética de números enteros y fraccionarios. Circuitos Digitales. Circuitos combinacionales básicos. Circuitos secueciales, Máquinas de estados finitas. Organización Básica de una Computadora. Unidad central de procesamiento (CPU). Memoria. Entrada / Salida. Organización interna de una CPU. Ciclo de instrucción. Conjunto de instrucciones de un procesador. Tipos de arquitecturas secuenciales. Lenguaje assembly, assembler y programación en lenguaje assembly. Entrada / Salida. Interfaz con la CPU. Interfaz con los dispositivos. Interrupciones. Excepciones. Llamadas al sistema. Acceso directo a memoria.
XIII - Imprevistos
Comunicarse con la cátedra.
Arquitectura del Procesador I.
Departamento de Informática.
Of. 25. Bloque II. 1er. Piso.
Facultad de Cs. Fisico, Matemáticas y Naturales.
Universidad Nacional de San Luis.
Ejercito de los Andes 950. CP 5700


De acuerdo al Calendario Académico de la Universidad Nacional de San Luis para el año 2022, se establece que el Primer Cuatrimestre sea de 14 semanas. A los efectos de que se impartan todos los contenidos y se respete el crédito horario establecido en el Plan de Estudios de la carrera para esta asignatura, se establece que se den cómo máximo 9 horas por semana distribuidas en teorías, prácticos de aula y laboratorio y consultas, hasta completar las 120 horas correspondientes al Crédito Horario Total de la asignatura.
XIV - Otros