Información Básica
-
Créditos: 3
-
Horas de trabajo acompañado: 5 / semana (3 horas de clase, 2 Laboratorio)
-
Horas de trabajo independiente: 4 / semana
-
Pre-requisitos:
-
Tipo de curso: Núcleo de Formación Fundamental.
Descripción del Curso
Este curso introduce los principios básicos del funcionamiento, elaboración y programación de un sistema de cómputo. Para esto se presentan y desarrollan los conceptos de operación de los circuitos electrónicos digitales, la programación en lenguaje ensamblador y los diferentes tipos de representación de datos en un sistema binario. El curso ofrece las bases teóricas y prácticas que le permitirán al estudiante identificar de manera crítica los componentes de un computador y el impacto que tiene la codificación, en diferentes niveles de abstracción, sobre la ejecución de los programas en la máquina.
Objetivos
Al finalizar el curso los participantes podrán:
-
Conocer los elementos básicos que conforman un sistema digital de cómputo
-
Definir sistema de cómputo, procesador, memoria, entradas y salidas, interconexión, programa, instrucciones y datos.
-
Diferencias los diferentes tipos de computadores actuales.
-
Entender la interacción de cada uno de los componentes del computador.
-
Comparar las diferentes alternativas de diseño de un sistema de cómputo.
-
Entender el principio de operación de una arquitectura von Neumann.
-
-
Programar en un lenguaje de bajo nivel
-
Definir modelo de programación, compilador, ensamblador, encadenador (linker), código fuente, código binario, bibliotecas(library), lenguajes de alto y bajo nivel, lenguaje de máquina.
-
Describir los procesos de compilación y ejecución de un programa.
-
Reconocer la sintaxis de un programa en lenguaje ensamblador.
-
Identificar los diferentes modos de direccionamiento.
-
Entender las instrucciones de un procesador
-
-
Diseñar circuitos digitales
-
Reconocer las magnitudes eléctricas básicas como voltaje, corriente y resistencia.
-
Describir los componentes de un circuito electrónico.
-
Usar diferentes sistemas numéricos para representar una magnitud.
-
Diferenciar entre circuitos digitales combinatorios y secuenciales.
-
Conocer las diferentes técnicas de diseño de un sistema digital basado en las operaciones lógicas básicas.
-
Reconocer los bloques funcionales fundamentales como multiplexor, decodificador, sumadores, latch, flip-flop, contador.
-
-
Implementar un sistema de cómputo básico.
-
Seleccionar el conjunto de instrucciones.
-
Escribir el programa en lenguaje ensamblador.
-
Describir en VHDL los componentes del computador.
-
Se desarrollan competencias en
-
Lenguaje ensamblador
-
Simulador/ensamblador
-
Herramientas de simulación de circuitos lógicos
-
VHDL
-
Tarjeta de desarrollo basada en FPGA
Contenido
Capítulo 1: Principios de Operación del computador
Sesión | Horas teóricas | Prácticas acompañadas | Temas | Profundidad | Bibliografía |
---|---|---|---|---|---|
1 | 1 | Introducción e historia de los computadores | Familiaridad | [1,2,5,6,7] | |
2 | 1 | Niveles de Abstracción: Interfaz Hardware/Software | Uso | [1,4,6] | |
3 | 1 | Estructura básica de un computador: Arquitectura Von Neumann | Uso | [1,2,4,6] | |
4 | 3 | Camino de Datos y la ejecución de las instrucciones | Uso | [1,2,6] |
Total de Horas: 6.
Sesión | Horas de trabajo independiente | Temas | Bibliografía |
---|---|---|---|
1 | 4 | Elaborar una presentación de 15 minutos para profundizar en las diferentes tecnologías de fabricación de memorias. | [1,2,7,8] |
2 | 4 | Elaborar una presentación de 15 minutos que explique las características de varios sistemas operativos. | [1,2,4] |
3-4 | 4 | Taller sobre la ejecución de los tipos de instrucciones en una arquitectura básica. | [1, 2, 4,6] |
Total de Horas: 12
Capítulo 2: Lenguaje de Máquina
Sesión | Horas teóricas | Prácticas acompañadas | Temas | Profundidad | Bibliografía |
---|---|---|---|---|---|
5-6 | 3 | 2 | Arquitectura del Conjunto de Instrucciones:Tipos de instrucciones (manipulación de datos, control, entrada/salida), tipos de datos, formato de instrucciones, modos de direccionamiento. | Uso | [1,2,4,6] |
7-10 | 6 | 4 | Lenguaje de Máquina | Uso | [1,2,4,6] |
11-12 | 3 | 2 | Mecanismos de llamada y retorno a subrutinas, interrupciones y manejo de dispositivos de entrada/salida.Diferencias entre: Segmento de código vs pila vs memoria dinámica, estática y libre (heap) | Uso | [1,2,4,6] |
13-14 | 3 | 2 | Código interpretado versus código nativo compilado versus compilación de representación intermedia portable. Ejecución como código nativo o en una máquina virtual, alternativas de carga dinámica y generación de código dinámico. Representación en tiempo de ejecución de construcciones del lenguaje núcleo tales como objetos y funciones de primera clase (closures). | Uso | [1,2,4,6] |
15-16 | 3 | 2 | Las estructuras de datos para representar código para ejecución, traducción, o transmisión. Implementación de bucles, recursividad, y llamadas de cola. | Uso | [1,2,4,6] |
17-18 | 3 | 2 | Gestión de la memoria de forma manual: asignación, liberación, y reutilización de memoria del espacio libre (heap). Gestión de memoria automatizado: recolección de basura como una técnica automatizada usando la noción de accesibilidad | Uso | [1,2,4,6] |
Total de Horas: 35.
Sesión | Horas de trabajo independiente | Temas | Bibliografía |
---|---|---|---|
5-12 | 8 | Taller: Implementación de algoritmos en lenguaje de máquina. | [1,2,6] |
13-18 | 4 | Lectura de Máquinas virtuales y manejo de memoria. | [1,4] |
13-18 | 4 | Tarea de Lenguajes Compilados e interpretados. | [7,8] |
Total de Horas: 16
Capítulo 3: Circuitos Digitales
Sesión | Horas teóricas | Prácticas acompañadas | Temas | Profundidad | Bibliografía |
---|---|---|---|---|---|
19-20 | 3 | 2 | Sistemas numéricos: Conceptos de Bits, bytes, words, operaciones y representación de datos signados y complemento a dos. Bases numéricas y representación de datos numéricos. Operaciones aritméticas en diferentes bases. Representación de datos no numéricos. Representaciones de sistemas en punto fijo y flotante. Representación de arreglos. | Uso | [1,3,4,5,6] |
21-25 | 6 | 6 | Circuitos Combinatorios y secuenciales: Bloques fundamentales combinatorios (compuertas lógicas, multiplexores, decodificadores, unidades aritméticas y lógicas, memoria ROM ). Expresiones lógicas, simplificación lógica booleana, minimización y suma de productos. Bloques fundamentales secuenciales (latches, flip-flops, contadores, registros, máquinas de estado, memoria RAM), concepto y uso de FPGA (diseño e implementación de Camino de datos, unidad de control y memoria) . Concepto de reloj, estado, secuenciamiento, máquina de estados (ejemplo: Protocolo de red de computadores). | Uso | [1,3,4,5,6] |
26-27 | 3 | 2 | Herramientas de diseño asistidas por computador , lenguajes de descripción de hardware (VHDL) y Notación a nivel de transferencia de registro (RTL). | Uso | [3,5,6] |
28 | 3 | Restricciones físicas : Retardo en compuertas, fan –in, fan-out, consumo de energía y disipación de potencia. Conceptos : Sistema Digital versus Análogo, Sistema Discreto versus continuo. | Uso | [3,5,6] |
Total de Horas: 25.
Sesión | Horas de trabajo independiente | Temas | Bibliografía |
---|---|---|---|
16-25 | 4 | Diseño proyecto (Implementación de una Arquitectura de cómputo Multiciclo). | [1,2,6] |
16-25 | 4 | Diseño proyecto (Implementación de una Arquitectura de cómputo Multiciclo). | [1,2,6] |
16-25 | 4 | Diseño proyecto (Implementación de una Arquitectura de cómputo Multiciclo). | [1,2,6] |
16-25 | 4 | Diseño proyecto (Implementación de una Arquitectura de cómputo Multiciclo). | [1,2,6] |
Total de Horas: 16
Capítulo 4: Arquitectura del Computador
Sesión | Horas teóricas | Prácticas acompañadas | Temas | Profundidad | Bibliografía |
---|---|---|---|---|---|
25 | 3 | Fundamentos dispositivos de entrada/salida. Protocolos de comunicación para operaciones de entrada/salida: interrupciones, programada, handshaking y buffering. | Uso | [1,2,4,6] | |
26 | 2 | 2 | Procesamiento secuencial a nivel de aplicación, un solo hilo de ejecución (Arquitectura multiciclo y monociclo). | Uso | [1,2,4,6] |
27 | 2 | 2 | Procesamiento paralelo a nivel de aplicación: nivel de solicitud (servicios web / cliente-servidor / distribuido), un hilo de ejecución por servidor, y múltiple hilos con múltiples servidores. | Uso | [1,2,4,6] |
28 | 2 | 2 | Abstracciones en programación, interfaces y uso de librerías. | Uso | [1,2,4,6] |
Total de Horas: 15.
Sesión | Horas de trabajo independiente | Temas | Bibliografía |
---|---|---|---|
25 | 4 | Elaborar una presentación de 15 minutos para profundizar en los diferentes tipos y tecnologías de dispositivos de entrada y salida. | [1,2,4] |
26-28 | 6 | Taller sobre la ejecución de procesamiento secuencial y paralelo. | [1, 2, 4] |
Total de Horas: 10
Uso de material en exámenes
Esta permitido el uso de material impreso para referencia específico (tablas o listados de conjunto de instrucciones) y calculadoras. No esta permitido el uso de computadores personales portátiles o móviles.
Asistencia
Obligatoria.
Bibliografía
-
Hennessy, John L. and Patterson, David A., Computer organization and design: the hardware,software 5th ed, Elsevier., 2013
-
Hennessy, John L. and Patterson, David A., Computer architecture : a quantitative approach, Fifth Edition. Morgan Kaufmann, 2011
-
Floyd, Thomas L. FUNDAMENTOS DE SISTEMAS DIGITALES 9a ed., PEARSON EDUCACIÓN S.A., Madrid, 2006
-
Null, Linda M.; Lobur, Julia, The essentials of computer organization and architecture, Third edition, Jones and Bartlett Publishers, Inc. 2012
-
Victor P. Nelson et al., Digital Logic Circuit Analysis and Design, Prentice-Hall, 1995
-
Notas de Clase
-
ACM Digital Library
-
IEEE Xplore
Instalaciones
Salón de clase con computador y proyector. Laboratorio de Ingeniería de Sistemas y Computación. Laboratorio de Ingeniería Electrónica.