<aside> 💡 CLASE 1:

Programas Modelo Von Neumann Lenguajes Ciclo de instrucción Simulador MSX88 Pila Subrutinas

</aside>

RESUMEN CLASE 1

<aside> 📝 Primer “computadora”: Máquina para calcular. Realizaba una sola operación a la vez. Necesitaba de una persona para hacer cálculos.

Modelo de programación en hardware: un “operador” tiene que actuar sobre la máquina para realizar cálculos. Modelo de programación en software: El cambio de la tarea sólo require modificar la secuencia de instrucciones.

Unidad de Control: Interpreta instrucciones.

Unidad Aritmético-Lógica: Realiza operaciones.

Modelo de operación de un programa: Las operaciones se definen por medio de instrucciones almacenadas en memoria.

Untitled

Programa: Es una secuencia de acciones almacenadas en el sistema de cómputo.

Cada acción es una instrucción (de máquina). Cada instrucción es convertida en señales. Se necesitan diferentes señales de control para cada operación. La Unidad de Control obtiene toda la información necesaria para ejecutar la instrucción.

Von Neumann: John Von Neumann desarrolló la IAS: Primer computadora que operaba en binario (en lugar de operar en decimal). Tenía una memoria única para instrucciones y datos. Tenía 21 instrucciones.

Composición del modelo Von Neumann:

  1. La UNIDAD CENTRAL DE PROCESAMIENTO (CPU) constituída por:

Unidad de Control (UC) Unidad Aritmético-Lógica (ALU) Registros.

  1. La UNIDAD DE ENTRADA/SALIDA (E/S)

    Para introducir y extraer los datos e instrucciones.

  2. La UNIDAD DE MEMORIA

    Para almacenar temporalmente datos e instrucciones.

Untitled

Lenguajes:

La representación de las instrucciones en memoria es en binario.

Para no programar en TAN bajo nivel (binario), tenemos Assembly, que reemplaza el binario por números y letras más entendibles.

Elementos de una instrucción:

Una instrucción de máquina es un código binario compuesto por una cantidad determinada de bits.

De forma gráfica, la taxonomía basada en el formato de una instrucción (según sus direcciones de memoria) quedaría algo así:

Untitled

Untitled

Almacenamiento de Datos: Los datos pueden estar almacenados en 3 lugares físicos:

Memoria

Registro de la CPU

Dispositivo de E/S

Tipos de datos: Los más comunes son:

Numérico

Caracter

Lógicos

CISC: Es un tipo de arquitectura de computadoras que promueve el uso de gran número de instrucciones, permitiendo operaciones complejas entre operandos situados en memoria o en registros.

RISC: Es un tipo de arquitectura de computadoras a favor de conjuntos de instrucciones pequeñas y simples que toman menor tiempo para ejecutarse.

Untitled

Técnicas de Almacenamiento:

Big-Endian: El byte más significativo se almacena en la dirección con valor numérico más bajo (es decir en la dirección mas baja)

Little-Endian: El byte más significativo se almacena en la dirección con valor numérico más alto (es decir en la dirección mas alta)

Untitled

Ciclo de Instrucción: Es el período que tarda la unidad central de proceso en ejecutar una instrucción de lenguaje máquina.

Untitled

Pasos: Ciclo de Captación de la Instrucción

  1. Cargo en el PC (Contador de Programa) la dirección de la instrucción.
  2. La UC (Unidad de Control) lee la instrucción y la almacena en el IR (Registro de Instrucción)
  3. El PC se incrementa en 1 (para apuntar a la próxima instrucción)
  4. La UC interpreta (decodifica) la instrucción.

Ciclo de Ejecución de la Instrucción: Depende del tipo de instrucción, generalmente se realizan acciones como la transferencia de datos, operaciones con los datos, saltos, etc.

Untitled

NanoMips: Máquina de tipo RISC.

Pila: La pila es una estructura ordenada de datos tipo LIFO (Last In- First Out).

Se pueden realizar 2 operaciones: apilar (PUSH) o desapilar (POP) que sólo pueden utilizarse con registros completos (2 bytes) ejemplo: AX, BX, CX, DX.

El acceso a la estructura se hace únicamente desde el tope de la estructura mediante un registro específico denominado SP (Stack Pointer).

¿Qué sucede cuando se hace un PUSH?

¿Qué sucede cuando se hace un POP?

Subrutina: Es una sección de código que recibe el control en un punto de la ejecución, realiza una tarea definida, y luego devuelve el control retomando la ejecución normalmente. Similar a los procedimientos en Pascal.

Se invocan con la sentencia CALL

Las finalizamos con la sentencia RET

Se puede llamar a una subrutina dentro de otra subrutina (anidamiento de subrutinas)

Métodos de pasaje de parámetros a las subrutinas:

  1. Vía registros

Los parámetros se pasan a través de los registros de la CPU. Método limitado por el número de registros disponibles. Dado que se van a modificar los contenidos de los registros, es importante documentar los registros a usar.

  1. Vía memoria

Los parámetros se transfieren a través de un área definida de memoria (RAM). Difícil de estandarizar, debido a las dificultades en asignar un área de memoria.

  1. Vía pila

Los datos se pasan a través de la pila (push/pop) Presenta ventajas respecto de los otros métodos. Es que es independiente de la memoria y registros. Los registros no tienen que ser modificados en las subrutinas. Hay que manejarla correctamente, porque la pila va a ser usada por el usuario (en la invocación y en la subrutina) y por el sistema. El SP apunta al último dato ingresado.

</aside>


<aside> 💡 CLASE 2:

Interrupciones PIC

</aside>

RESUMEN CLASE 2

<aside> 📝 +En condiciones normales la CPU lee y ejecuta una instrucción a continuación de otra de manera ininterrumpida.

Interrupción: Es un mecanismo que permite alterar el proceso de “ejecución normal” de la CPU. Permite que la CPU suspenda la tarea que está haciendo y responda a una solicitud de atención para resolver otra tarea. Una vez se atiende la interrupción y se completa la tarea, el procesador retoma la tarea suspendida en el punto donde se detuvo.

3 Acciones: Detener (la tarea actual), Bifurcar (saltar a otra tarea), **Restablecer la tarea suspendida.

Program Status Word (PSW):** Es un registro que almacena información sobre el estado actual de la CPU y de la ejecución del programa. Puede contener información como flags de estado (por ejemplo, flag de cero, flag de overflow) y otros indicadores que reflejan el estado de la CPU.

**Paso a paso de una Interrupción:

1.** Mientras la CPU está ejecutando una tarea, recibe un pedido de interrupción. 2. La CPU salva todo o parte del estado de la CPU (al menos el PC y el PSW) en la pila. 3. La CPU busca en el vector de interrupciones la dirección de la subrutina de interrupción y comienza a ejecutarla. 4. Cuando finaliza esa ejecución, debe retornar al programa interrumpido mediante la instrucción IRET. 5. IRET desapila el estado del programa anterior y de esta manera retoma la tarea suspendida.

Las interrupciones se atienden según la prioridad de la interrupción (qué tan importante es):

Igual prioridad:

Se atienden por orden de llegada. Cuando llega una interrupción y es atendida, se inhabilitan el resto de las interrupciones de menor o igual prioridad. Si llega una nueva interrupción quedará pendiente. Cuando finaliza la atención a la interrupción, se vuelven a habilitar las interrupciones. La interrupción pendiente será atendida.

Distinta prioridad:

Una interrupción de prioridad más alta puede interrumpir en cualquier momento a una interrupción de prioridad menor. Una vez atendida la interrupción de alta prioridad, el procesador vuelve a las interrupciones previas (de menor prioridad).

Interrupciones enmascaradas: Pueden ser ignoradas. El procesador puede inhabilitar la atención a la interrupción. Operaciones menos críticas (de dispositivos de E/S)

Interrupciones des-enmascaradas: No pueden ser ignoradas. Son de alta prioridad.

Interrupciones por Hardware: Son generadas por señales físicas (presión de una tecla, manipulación de llaves, etc.)

Pueden ser interrupciones internas o externas (según el dispositivo).

Interrupciones por Software: Son interrupciones mediante instrucciones explícitas que tienen un efecto similar a una interrupción por hardware.

Son “llamadas” a funciones del Sistema Operativo. Similares a una subrutina. Se usan utilizando explícitamente la instrucción teniendo en cuenta los siguientes puntos:

Estas interrupciones nos modifican el ciclo simple de instrucción: Preguntaremos si es una interrupción y la gestionaremos.

</aside>


<aside> 💡 CLASE 3:

Subsistema de Entrada/Salida Módulo E/S Puertos E/S DMA, DMAC y canales de E/S

</aside>

RESUMEN CLASE 3

Untitled

<aside> 📝 El subsistema de E/S comprende los dispositivos que están conectados al bus del sistema y proveen los servicios de transferencia de datos con los periféricos.

El subsistema de E/S es un conjunto de partes de una computadora que se conectan a una especie de "autopista" llamada "bus del sistema". Estas partes ayudan a mover información dentro y fuera de la computadora hacia dispositivos periféricos como teclados, pantallas, discos duros y otros aparatos externos. En resumen, es la forma en que la computadora se comunica con los dispositivos que utilizamos.

Debido a la gran variedad de Periféricos con los que se requiere intercambiar información, el subsistema de E/S tiene que ser lo suficientemente flexible para permitir:

Trasmisión de diferentes cantidades de datos Rango de velocidades de transmisión muy amplio Diferentes formatos de dato y tamaño de palabra

En general, todos los periféricos son más lentos que la CPU y la memoria. Los dispositivos que forman parte del subsistema de E/S permiten descongestionar el trabajo de la CPU.

</aside>

PARCIAL 1 - Preguntas

<aside> ❓ ¿Cuáles son los métodos de pasaje de argumentos a procedimientos/funciones que conoce?

</aside>

<aside> ❓ ¿Qué es una pila?

</aside>

<aside> ❓ ¿Qué hardware utilizaremos con una pila?

La pila utiliza la memoria y el registro SP.

</aside>

<aside> ❓ Describa el funcionamiento de la pila:

La pila se utiliza para almacenar datos temporalmente. Su estructura Last In - First Out nos indica que debemos movernos contemplando que el último dato en ingresar es el primero en salir y así sucesivamente. Generalmente comienza en la dirección 8000H la cuál no se utiliza, y si se quiere acceder a sus datos sin desapilar el/los último/s podemos movernos por la pila considerando el SP, copiando su valor en el registro BX y sumando/restando según las celdas que queramos movernos.

</aside>