Archivo por meses: abril 2015
Bitácora-C1-24/04/2015 (Pila y Q3)
- Q3
- Nueva estructura de datos: Pila
- La pila esta guardada en una parte especial de la memoria.
- Nos sirve para apilar y desapilar cosas
- La operación PUSH nos permite apilar, es decir, agregar un elemento a la pila
- La operación POP nos permite desapilar, es decir, sacar el ultimo elemento agregado a la pila.
- El Stack Pointer (SP) nos «dice» cual es el tope de la pila.
- Implementación del CALL y el RET: El CALL y el RET funcionan utilizando la Pila para guardar la dirección del PC, o bien, para darle una dirección guardada al PC, por lo tanto, en su implementación se usan las operaciones que permiten manejar la Pila
- El CALL utiliza la operación PUSH, escribiendo un valor en la Pila
- El RET utiliza la operación POP, leyendo el ultimo valor de la Pila
Este es un ejemplo del cuadro utilizando la notación mencionada anteriormente: main empieza en 1000, rut1 en A0A0, el PC inicial es 1000, la Pila esta vacía.
rut1 : MOV R3, R2 RET main: CALL rut1
Para la próxima clase:
Si tu respuesta es Si: hacer un programa que inicialice R0 con el valor -1
Si tu respuesta es No: Proponer un mecanismo para extender Q3 y poder hacerlo
Bitácora-C1-21/04/2015 (Rutinas)
Bitácora-C1-17/04/2015
Se comenzó la clase con unos minutos para consulta de las prácticas
Se pasó a dar los siguientes temas:
- Cambios en Q
- Nuevo modo de direccionamiento: «Modo Directo»
- Revisión del ciclo de ejecucion de instrucción
- Decodificación de las instrucciones
- Registros especiales: Instruction Register (IR) y Program Counter (PC)
- Busqueda de Operandos
- Almacenamiento de Operandos
- Decodificación de las instrucciones
- Accesos a memoria
Con lo visto en esta clase pueden y deben completar la Guía #3.
Bitácora-C1-14/04/2015
- Memoria RAM
- Qué es
- Cómo funciona relacionada con lo que vimos hasta ahora (Unidad de Control)
- Celdas de memoria
- Tamaño de celda
- Tamaño de memoria
- Bus del sistema
- Bus de direcciones
- Bus de datos
- Bus de Control
- Registros
- Repaso
- Nuevos (de uso específico, no visibles al programador):
- MBR (Memory Buffer Register)
- MAR (Memory Address Register)
- Q2
- Se agregan funcionalidades a Q1
- Nuevo modo de direccionamiento: Directo (la dirección de memoria se especifica entre [ ] en la instrucción)
- Práctica 3: Ejercicios 2 y 3 entre todos, 4 a 6 en grupos
- Conclusión: Hicimos un mapa conceptual con los conceptos vistos
Se recordó que debían completar todos los ejercicios de las prácticas anteriores.Para la próxima clase usaremos QSim.
Bitácora-C1-10/04/2015
Se comenzó la clase con consultas de practicas anteriores.
Luego se presentaron los siguientes temas:
Q1
- Formato de Instrucciones
- Códigos de Operación
- Modos de direccionamiento
- Partes del formato que por ahora no usamos
Arquitectura de Von Neumann
- Repaso de la arquitectura: CPU (UC, ALU), Memoria Principal
- Registros visibles y no visibles al programador (IR- registro de instrucción)
- Ciclo de Ejecución de instrucciones
- Búsqueda de instrucción
- Decodificación de instrucción
- Ejecución de instrucción
- Relación con Lógica Digital: MUX8a16, MUX9a16
- Fecha límite: Martes 14/4 a las 8.29
- Consigna:
- Ver video de QSim,
- resolver ejercicios 13 y 18 de la práctica 2,
- ejecutarlos con el simulador QSim,
- hacer capturas de pantalla.
- Modo de entrega: por mail a mdalponte@unq.edu.ar/flavia.saldana@unq.edu.ar con asunto «(Entrega 3) <Nombre> <Apellido>»
Bitácora-C1-07/04/2015
Logica Digital: Circuitos Aritméticos
En grupos por mesa resolvimos un ejercicio a partir de un enunciado:
Se necesita fabricar el circuito 1de4, que teniendo 4 entradas, su salida valga 1 solo si hay exactamente 1 entrada en 1
- Dibujar la “caja negra” del circuito 1de4
- Armar la tabla de verdad
- Deducir la fórmula de verdad con SOP
- graficar las compuertas dentro del circuito
Los circuitos aritméticos son circuitos que resuelven tareas específicas, relacionadas a las operaciones aritméticas entre números. Esos números están representados en forma binaria dentro del sistema de cómputos y por lo tanto los circuitos aritméticos operan sobre dos cadenas binarias. Estos circuitos implementan algunas de las funciones de la ALU (Unidad Aritmetico Logica).
Half Adder: Se necesita un circuito que pueda sumar dos cadenas de un bit (BSS(1)) y que calcule el resultado (en BSS(1)) e indique en otra salida si hubo ó no acarreo.
Cuando ejercitamos la suma binaria, distinguimos cuatro casos que nos dan lugar a la siguiente tabla de verdad:
A cada salida le corresponde una expresión booleana o formula de verdad. Entonces las de este circuito son:
- s=(a.-b) + (-a.b)
- c=a.b
De esta manera, se construye el circuito:
Full Adder: Supongamos ahora que debemos sumar 2 cadenas de 2 bits cada una (bss(2)). Sería interesante poder usar lo que tenemos en la caja de herramientas: usar dos HA. Sin embargo, el HA no permite arrastrar un acarreo entre las dos columnas. Por ejemplo:01+01 = 10
Pensemos entonces un circuito que sume cadenas en bss(1), pero que también tenga una señal de entrada que indique si hay un acarreo pendiente. La caja negra del circuito es:
y la tabla de verdad es como sigue (notar que la primera parte es como el HA, pues este no consideraba acarreo o éste valía 0)
A partir de esto, la expresión SOP de cada salida es:
- r= noCAnt.(a xor b)+CAnt. no(a xor b)
- s= noCAnt.a.b+a.CAnt+b.CAnt
Sumar múltiples bits: no nos olvidemos que queremos sumar dos cadenas en bss(2). ¿cómo usar el circuito FA que se acaba de definir?
¿En que parte de la computadora se usan estos circuitos? en la ALU. ¿Que/como se alimentan las entradas de la ALU? De eso se encarga la unidad de control.
Ejecucion de programas en la arquitectura Von Neumann
Escribimos una receta en el pizarrón. Vemos que es una secuencia de instrucciones.
El programador es quien escribe la receta según las reglas del manual. ¿eso es todo, el robot (que sigue la arquitectura VN ) de cocina ya puede cocinar? ¿como? Relacionándolo con temas que vieron en clases anteriores: sabemos que el sistema de cómputos trabaja con circuitos digitales que a su vez se construyen con compuertas binarias, que trasforman entradas digitales.
Surge la necesidad de tener alguna clase de codificación. Proponemos un nuevo manual de cocina ahora si con la codificación.Explicamos que fue necesario traducir cada instrucción.
Si escribimos la receta en código máquina, es una tarea muy engorrosa y propensa a errores con lo cual necesitamos automatizar el proceso. Contamos con un disopsitivo ensamblador cuya tarea es traducir el código fuente a código máquina y cargarlo en memoria. Las computadoras tienen la capacidad de traducir una cadena binaria en una acción determinada, a través de circuitos digitales!. Eso implica que entre el código fuente y el código máquina hay un ensamblador.
¿y ahora? El usuario pide la ejecución del programa y la cpu ejecuta el mismo con esto tenemos el ciclo de vida de un programa.
Ahora analicemos en detalle cómo ejecutar una instrucción. Alu es el dispositivo que realiza las operaciones aritmeticas y logicas ¿Hay algún equivalente a la ALU en el juego de la cocina?
Veamos las siguientes etapas:
- La UC (unidad de control) suministra los operandos a la ALU
- La UC indica a la ALU la operación a llevar a cabo.
- La ALU realiza la operaciónn.
- La UC toma el resultado sobre los datos de entrada que se le proveen
Finalmente presentamos un ciclo de ejecución de instrucciones (reducido)
A continuación armamos cajitas con 3 o 4 figuras de huevos dentro, e intentamos volver a preparar una receta pero con las siguientes directivas.
- Tomar los huevos que hay en la huevera (los que haya ahí)
- Agregar 1 taza azucar
- Agregar 1 taza harina
- Mezclar
- Hornear medio 10
- Ensamblar la receta anterior , deben imaginar un mecanismo para representar la primera instrucción para incorporar al manual.(Ojo que no dejamos ya ocupamos todas las combinaciones con lo cual tienen que imaginar la forma de meter el modo de direccionamiento)
¿Que diferencias hay entre la forma de obtener los ingredientes en la primera instrucción y la segunda? (Vemos que una es variable y otra constante)
Entrega
Construir el circuito restador para BSS(1) (con carry, ejercicio 17):
- Dibujar la caja negra del circuito
- Construir la tabla (3 entradas)
- Construir SOP
- Dibujar circuito