290 likes | 446 Views
Introducción. Sebastián Sánchez Prieto. 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
E N D
Introducción Sebastián Sánchez Prieto
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: es un sistema material o conceptual que se utiliza en lugar de otro • Cada nivel aporta sus propias abstracciones basándose en el/los niveles inferiores • Cada nivel puede desarrollarse de un modo independiente
Lenguajes, niveles y máquinas virtuales • Un computador digital es una máquina que puede resolver problemas ejecutando las instrucciones que le son indicadas mediante un programa • Las instrucciones que puede ejecutar un computador constituyen un lenguaje denominado lenguaje máquina • El lenguaje empleado por las personas difiere considerablemente del empleado por las máquinas • Solución para el entendimiento entre personas y máquinas: • Emplear una jerarquía de niveles en los que cada uno de ellos emplee un lenguaje de mayor nivel de abstracción
Lenguajes, niveles y máquinas virtuales Nivel 3 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: Lenguaje de alto nivel Lenguaje ensamblador Sistema Operativo Arquitectura Microarquitectura Lógica digital • En este curso estudiaremos los niveles de arquitectura y de sistema operativo
Modelos de cada nivel • Cada nivel puede ser descrito desde el punto de vista funcional, estructural y de realización práctica • Modelo funcional o de caja negra: 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
Nivel de arquitectura • También es conocido como nivel de arquitectura de repertorio de instrucciones o ISA (Instruction Set Architecture) • Es el nivel de interfaz entre el hardware y el software • Los programas escritos en lenguaje de alto nivel se traducen a programas de nivel ISA utilizando compiladores o intérpretes • Cuando se diseña una nueva arquitectura es necesario conocer aspectos hardware y software (compiladores y sistemas operativos) • Problema: compatibilidad hacia atrás con otras arquitecturas existentes • Este nivel queda definido por la percepción que tiene del computador el programador en lenguaje máquina • Esta percepción incluye la memoria, los registros, los tipos de datos o las instrucciones • Esta percepción no incluye si el procesador es microprogramado o cableado, si es o no segmentado, si es o no superescalar, etc.
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
8 bytes 8 bytes 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 Alineamiento • La alineación se necesita para operar de un modo más eficiente en los accesos a memoria • Si la dirección es múltiplo del tamaño de celda del bus de datos, toda la información del bus puede ser leída o escrita en memoria en una sola operación • Existen procesadores (i.e. Pentium II) que sólo pueden generar direcciones múltiplos de 8 • En PII para cada dirección física de 36 bits sólo existen 33 bits de dirección (el resto = 0) 0 0 8 8 16 16 24 24
8 bytes 0 1 2 3 4 5 6 7 Ordenación • La ordenación indica cómo son colocados en la memoria los bytes que forman una agrupación mayor (palabra, doble palabra, etc.) • Caben dos alternativas: little end (típico de Intel*) y big end (típico de Motorola) • Es el fabricante el que determina normalmente la ordenación • En algunos procesadores, el modo de ordenación puede ser establecido a voluntad 8 bytes 0 0 8 8 7 6 5 4 3 2 1 0 16 16 24 24
Registros • Los registros son las celdas básicas de memoria integradas en el procesador • No todos los registros definidos en el nivel de microarquitectura son visibles en el nivel de arquitectura • Tipos: • registros de propósito general: • simétricos o intercambiables (R10000) • asimétricos (PII) • registros de propósito especial (SP, PC) • Otra clasificación • registros modo núcleo • registros de usuario • registros híbridos: Program Status Word (PSW)
Nivel ISA del Pentium • Evolución en el número de transistores por chip: Pentium IV 42 M 9,5 M Pentium III 7,5 M Pentium II 5,5 M Pentium Pro Pentium 3,1 M 80486 1,2 M 80386 275.000 80286 134.000 8086 8088 29.000 1978 1979 1982 1985 1989 1993 1995 1997 1999 2000
Modos de operación del Pentium II • Modo real: en este modo se comporta como un 8088 rápido • Modo virtual 8086: permite ejecutar viejos programas en un entorno protegido. En este modo se comporta como varios 8086 • Modo protegido: funciona como un Pentium • Emplea un sistema de anillos de protección de memoria de 4 niveles • Espacio de direccionamiento de 4 Gb • Instrucciones MMX • Dos niveles de caché • Organización interna superescalar • Etc.
Registros 32 bits 16 bits AH A X AL EAX BH B X BL EBX CH C X CL ECX D X DH DL EDX ESI EDI EBP ESP CS SS DS ES FS GS EIP EFLAGS
Nivel ISA del UltraSPARC II • La arquitectura SPARC (Scalable Processor ARChitecture) de Sun surge en 1987 basada en un nuevo diseño de la Universidad de Berkeley (RISC II) • Sun propuso la arquitectura, pero el desarrollo de chips podría llevarlo a cabo cualquier compañía • El primer SPARC era una máquina de 32 bits corriendo a 36 MHz (55 instrucciones) • En 1995 se introduce la arquitectura UltraSPARC I de 64 bits que es compatible a nivel binario con las generaciones anteriores • Se añaden 23 instrucciones nuevas, las instrucciones VIS que son las equivalentes a las instrucciones MMX del Pentium
Nivel ISA del UltraSPARC II • Espacio de direccionamiento virtual de 264 bytes (sólo se emplean 44 bits físicos para direccionar) • Ordenación por defecto: big endian aunque puede cambiarse modificando un bit del PSW • Es una arquitectura load/store, todas las operaciones que impliquen acceder a memoria se hace sólo con instrucciones de carga o de almacenamiento • Registros: • 32 registros de propósito general de 64 bits • 32 registros de coma flotante de 64 bits • El uso de los registros generales se basa en convenios y también en el trato distinguido que de ellos puede hacer el HW
Nivel ISA del UltraSPARC II • Se trabaja con una ventana de registros para agilizar la llamada a procedimientos sin emplear la memoria R0 Vale siempre 0 R1-R7 Mantienen las variables globales R8-R13 Mantienen los parámetros de llamada a los procedimientos R14 Puntero de pila R15 Registro de Scratch R16-R23 Mantienen las variables locales del procedimiento actual R24-R29 Mantienen los parámetros de entrada R30 Puntero del marco de pila actual R31 Dirección de retorno del procedimiento actual
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
Criterios para elegir formatos • Tamaño: fijo o variable • Longitud de la instrucción: corta o larga • Nº de bits para el código de operación • Nº de bits para las direcciones • Nº de direcciones expresadas en la instrucción • Para mayor flexibilidad se puede emplear expansión de códigos de operación 0000 XXXX YYYY ZZZZ CODOP Dirección 1 Dirección 2 Dirección 3 1110 XXXX YYYY ZZZZ 1111 0000 XXXX YYYY CODOP Dirección 1 Dirección 2 1111 1110 XXXX YYYY 1111 1111 0000 XXXX CODOP Dirección 1 1111 1111 1110 XXXX 1111 1111 1111 0000 CODOP 1111 1111 1111 1111
Formato de instrucciones del Pentium II • Formato: muy irregular, “escandaloso” • 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
Formato en el UltraSPARC • Todas las instrucciones son de 32 bits y alineadas en memoria • Formato de instrucciones: 2 5 5 6 1 8 5 1a 3 Reg. DEST CODOP SRC1 0 FP-OP SRC2 1b Inmed. DEST CODOP SRC1 1 CONST. INMEDIATA 2 5 3 22 2 SETHI DEST OP CONST. INMEDIATA 2 1 4 3 22 3 BRANCH A COND OP DESPL. RELATIVO AL PC 2 30 4 CALL DESPL. RELATIVO AL PC
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 que describimos a continuación
Acciones hardware • El controlador (HW) activa la línea de interrupción • El procesador, en cuanto esté listo para manejar la interrupción, activa una línea del bus (INTA) • Se recoge del bus el vector de interrupción colocado por el controlador o por el PIC • Se guarda el PC y el PSW en la pila • El nuevo PC se carga a partir del vector de interrupción indicado. Normalmente empleando una tabla almacenada en memoria
Acciones software • Se guardan los registros en la pila • Se determina qué dispositivo de la familia generó la interrupción (generalmente los dispositivos de la misma familia comparten el vector de interrupciones) • Se procesa la entrada-salida • Se comunica el fin de tratamiento de interrupción en caso de ser necesario • Se restauran los registros • Se ejecuta la instrucción de retorno de interrupción