Introducción MSc. Rina Arauz
Sistemas, complejidad y modelos Un ordenador es un sistema complejo que puede describirse mediante diferentes modelos en distintos niveles de una jerarquía de abstracciones. Sistema: conjunto de cosas que ordenadamente relacionadas entre sí contribuyen a un determinado objetivo. Sistema complejo: es el compuesto por un gran número de partes que actúan entre sí de manera no sencilla. Modelo: sirve de representación para comprender, analizar, modificar, diseñar o experimentar con el sistema modelado. Niveles de una jerarquía de abstracciones: Cada nivel brinda cierta interfaz que abstrae los niveles inferiores permitiendo montar sobre ellos nuevos niveles aún más abstractos.
Un computador digital es una máquina que puede resolver problemas ejecutando ciertas instrucciones. Lenguaje máquina es el conjunto de instrucciones básicas de una computadora. Utilizar lenguaje máquina es difícil y tedioso. Solución: » sea L1 el lenguaje máquina » y L2 un lenguaje más fácil de utilizar Podemos imaginar la existencia de una máquina virtual cuyo lenguaje máquina es L2. Se pueden crear L3, L4... cada uno más fácil de utilizar.
Lenguajes, niveles y máquinas virtuales Máquina virtual M3 con un lenguaje L3 Los programas del nivel 2 son interpretados por programas que se ejecutan en M1 o M0 o son traducidos a lenguajes L1 o L0 Nivel 2 Máquina virtual M2 con un lenguaje L2 Nivel 1 Máquina virtual M1 con un lenguaje L1 Nivel 0 Computador real M0 con un lenguaje L0
Visión jerárquica de un computador Las primeras clasificaciones sólo diferenciaban entre el hardware y el software Actualmente una de las estructuras más utilizadas es la siguiente: Tarea: Investigue cada uno de estos niveles.
Modelos de cada nivel Cada nivel puede ser descrito utilizando diversos modelos: Modelo funcional: describe la función del sistema, sus acciones sobre el entorno y sus reacciones a éste. Modelo estructural: describe la organización del sistema como conjunto de partes relacionadas. La realización práctica de cada modelo puede llevarse a cabo de modos muy diferentes. A un mismo modelo funcional pueden corresponder distintos modelos estructurales. Los modelos se emplean con el fin de aplicarlos en la práctica y resolver un determinado problema.
Modelos de memoria La memoria es dividida en celdas de tamaño fijo, normalmente 8 bits (tamaño del carácter representado en ASCII) Una celda es el mínimo bloque de información que puede ser transferido entre el procesador y la memoria y viceversa Han existido arquitecturas con otros tamaños de celda (i.e. 27 bits) Los bytes normalmente se agrupan de 4 en 4 o de 8 en 8 para formar palabras, dobles palabras... Problemas: Alineamiento Ordenación
Registros Los registros son las celdas básicas de memoria integradas en el procesador Tipos: registros de propósito general: registros de propósito especial (SP, PC) Otra clasificación registros modo núcleo registros de usuario registros híbridos: Program Status Word (PSW)
Registros 32 bits 16 bits AH A X AL EAX BH B X BL EBX CH C X CL ECX DH DL EDX ESI EDI EBP ESP CS SS DS ES FS GS EIP EFLAGS
Formato de instrucciones Una instrucción consta habitualmente de un código de operación e información adicional para localizar los operandos si es que existen Posibles formatos de instrucción: CODOP Sin operandos CODOP Dirección 1 operando CODOP Dirección 1 Dirección 2 2 operandos CODOP Dirección 1 Dirección 2 Dirección 3 3 operandos
Formato de instrucciones del Pentium II Formato: muy irregular Razón: compatibilidad binaria con los procesadores anteriores Bytes 0-5 1-2 0-1 0-1 0-4 0-4 PREFIJO CODOP MODO SIB Desplazamiento Inmediato Bits 6 1 1 Bits 2 3 3 Instrucción ESCALA ÍNDICE BASE Byte/word ¿Qué operando es fuente? Bits 2 3 3 MOD REC R/M
Direccionamiento Consideremos una instrucción del tipo ADD ADD: Destino Origen1 + Origen2 ¿Cómo referenciar los operandos? La instrucción puede incluir las tres posiciones de memoria (origen1, origen2 y destino) Problema: instrucción muy larga Solución: empleo de registros: Tres: Rx = Ry + Rz Típico de arquitecturas RISC Dos: Rx = Rx + Ry I.e. Pentium Uno: Acc = Acc + Rx Arquitecturas tipo acumulador Cero Arquitecturas tipo pila como la Java Virtual Machine (JVM)
Modos de direccionamiento Inmediato: la instrucción contiene el operando mov ax, 4C00h Directo: la instrucción contiene la dirección donde se encuentra el operando mov ax, [3FB0] Por registro: el registro especificado en la instrucción contiene el operando mov ax, bx Indirecto por registro: la instrucción referencia a un registro que actúa como puntero al operando mov ax, [bx] Indexado: la instrucción especifica un registro que se emplea como índice y un offset mov ax, matriz[si] Base indexado: la instrucción especifica dos registros más un offset mov ax, matriz[si][di] Por pila: los operandos fuente y destino se localizan en la pila
Tipos de instrucciones De transferencia de datos Mem – Mem, Mem – Reg, Reg – Mem, Reg - Reg Operaciones de dos elementos ADD, SUB, AND, OR, XOR, etc. Operaciones de un elemento Rotaciones, desplazamientos, negaciones, etc. Comparaciones y saltos condicionales Saltos si igual, mayor, menor, etc. Llamadas y retornos a procedimientos CALL y RET Llamada al sistema SVC, SYSCALL, INT X, etc. Control de bucles LOOP, DJNZ, etc. Entrada y salida IN y OUT
Eventos síncronos y asíncronos Un evento síncrono es aquel que se produce ligado al flujo de ejecución del programa Un evento asíncrono es aquel que se produce de un modo independiente al flujo de ejecución del programa Los eventos síncronos son reproducibles, cosa que no ocurre con los asíncronos Un evento síncrono se desencadena siempre en el mismo punto de un programa si las condiciones son las mismas Como ejemplos de los primeros podemos poner los traps y las llamadas al sistema Como ejemplo de los segundos tenemos las interrupciones
Traps Un trap es un evento síncrono que provoca la activación automática de un procedimiento iniciado como consecuencia de una condición especial El procedimiento ejecutado cuando se produce el trap se denomina manejador de trap Ejemplos: Overflow División por cero Violación de acceso a memoria Fallo de página Instrucción ilegal, etc.
Interrupciones Una interrupción es un evento asíncrono que provoca el cambio del flujo de control de un programa Al producirse la interrupción se invoca de modo automático a un procedimiento conocido normalmente como manejador de interrupción Cada interrupción lleva asociada una prioridad Vinculadas a las interrupciones existen una serie de acciones hardware y software.