Tema 1: Introducción 1 1.2. Jerarquía de niveles de un computador ¿Qué es un computador? Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria Es un sistema tan complejo que se estudia desde distintos puntos de vista, mediante una jerarquía de niveles de abstracción. Al principio solo había dos niveles (totalmente dependientes): - Hardware: los circuitos digitales y su construcción. - Software: los programas de instrucciones (lenguaje máquina). 2 Evolución del software El software ha evolucionado desde programar con 0’s y 1’s hasta los entornos gráficos de hoy en día. Los pasos de esta evolución fueron la aparición de: (1) Lenguaje máquina (2) Lenguaje ensamblador (3) Lenguaje de alto nivel (4) Sistema operativo (5) Aplicaciones Veamos cada uno: 3 (1) Lenguaje máquina El lenguaje que realmente entiende la máquina formado por ceros y unos (números binarios). P.e. programa de 7 instrucciones: Formado por órdenes individuales: instrucciones. ÆUna instrucción será un número binario almacenado en memoria. P.e. “00000000100011100001100000100001”(la 2ª instrucción) indica al computador que sume dos números. 4 (2) Lenguaje ensamblador Programar usando números binarios es muy laborioso. Se inventó notación simbólica (caracteres alfanuméricos) para cada instrucción máquina, p.e. “add A, B, C”. Al principio traducción a mano, pero luego se creó un software traductor: el programa ensamblador . P.e. el programador escribiría “add $2, $4, $2” y el ensamblador traduciría esta notación a “00000000100011100001100000100001”. Este lenguaje simbólico se llamó lenguaje ensamblador swap:muli $2, $5,4 add $2, $4,$2 lw $16, 4($2) sw $16, 0($2) jr $31 [Programa en ensamblador] 5 (3) Lenguaje de alto nivel Expresar resolución de problemas ensamblador (ya lo comprobarán). es difícil en lenguaje Fuerza al programador a pensar como funciona la máquina: movimiento de datos, operaciones aritméticas y lógicas básicas y cambios de secuencia de ejecución de instrucciones. Solución: tener una notación de alto nivel (algorítmica) que se traduzca a lenguaje ensamblador. Programa traductor: compilador. 6 7 (4) Sistema operativo (a) Con el desarrollo de la programación surgió la idea de reutilizar programas para tareas rutinarias Æ bibliotecas de subrutinas. Las primeras para entrada/salida de datos: controlar impresoras, cintas magnéticas… (b) Necesidad de programa independiente que supervisara la ejecución del conjunto de programas. Programa supervisor + bibliotecas de subrutinas de entrada/salida = base de un sistema operativo (programa para la gestión de los recursos del computador). (5) Aplicaciones Programas que realizan tratamientos específicos: procesadores de texto, hojas de cálculo, bases de datos,… 8 Jerarquía de niveles para estudiar un computador El modelo de computador que tenemos es: Veamos cada uno de los niveles: 9 (1) Diseño de circuitos Cómo implementar las puertas lógicas con transistores, diodos, resistencias, y capacitores. Se habla de diferentes tecnologías de circuitos integrados (familias lógicas). P.e. puerta NOR: Se caracterizan los circuitos integrados por su fan-in, fan-out, tiempo de respuesta… 10 (2) Diseño digital (FCI) Conceptos de representación, síntesis y simulación de circuitos digitales: - Puertas lógicas. - Bloques combinacionales y secuenciales. - Sistemas secuenciales. Se estudian los bloques digitales básicos a partir de los cuales se diseña un procesador. 11 (3) Procesador del repertorio de instrucciones y subsistema de entrada y salida Da lugar al concepto de sistema digital complejo que ejecuta instrucciones. Estudio de formas de realizar la ruta de datos y la unidad de control. Se definen las etapas en que se divide la ejecución de las instrucciones: descodificación, acceso a memoria, escritura en registros… También cómo realizar entrada/salida: sincronización transferencia de datos procesador-controladores periféricos. y 12 (4) Arquitectura del repertorio de instrucciones o nivel ISA (Instruction Arquitecture Set) Nivel más bajo al que se puede programar (nivel de lenguaje máquina). Interface entre el hardware y el software (nivel fundamental). Elementos manejados en este nivel: - Conjunto de instrucciones que ejecuta el procesador. - Modos de direccionamiento de los operandos. - Tipos de datos. - Registros del procesador. Con ellos se especificarán los programas que ejecutarán los niveles inferiores. 13 (5) Sistema operativo Este nivel es el que realiza la gestión de los recursos que ofrecen los niveles inferiores del sistema computador: CPU, memoria… Para obtener un uso fácil, eficiente, compartido y seguro de los mismos: gestión de archivos, procesos, memoria virtual… Proporciona a los usuarios una máquina más manejable. 14 (6) Compilador Permite al programador expresar los programas en un lenguaje cercano a su descripción algorítmica. Traduce estos programas escritos en lenguajes de alto nivel a programas especificados en lenguaje máquina. 15 (7) Aplicaciones Programas que se ejecutan para realizar funciones útiles al usuario: bases de datos, las hojas de cálculo o los procesadores de texto. Son programas escritos en lenguajes de alto nivel. Su objetivo es crear un entorno amigable para el usuario del sistema computador. 16 El modelo de computador que tenemos es: 17 ¿Desde qué puntos de vista estudiaremos el computador en esta asignatura? (1) Arquitectura del repertorio de instrucciones Estudiaremos: (a) Cómo diseñar este nivel ‘mirando’ (en la jerarquía de niveles) hacia: - arriba: ‘sostener’ los lenguajes de alto nivel. - abajo: fácil implementación hardware. Es una cuestión de compromiso. (b) Descripción de este nivel de una máquina en concreto: la MIPS. (c) Además escribirán programas de este nivel para la MIPS. 18 (2) Procesador del repertorio de instrucciones y subsistema de entrada y salida Estudiaremos: (a) Cómo diseñar un procesador con circuitos lógicos (sumadores, multiplexores, registros, memoria,…) que ejecute un repertorio de instrucciones determinado (implementación del nivel ISA). (b) Organización de la memoria. (c) Gestión de la entrada/salida. 19 1.3. Conceptos de arquitectura y estructura de un computador Arquitectura: qué hace el computador. Funcionalidad que proporciona, desde el punto de vista de - el programador en lenguaje ensamblador, y - el generador de código del compilador Atributos que definen una arquitectura (visibles a un programador a bajo nivel): - Repertorio y formato de las instrucciones que se usan en los programas. - Los registros del procesador para contener operandos. - Modos direccionamiento de los operandos en registros y en memoria. - Tipos de datos que manejan las instrucciones. 20 21 Modos de direccionamiento de los operandos y tipos de datos: 22 Estructura: cómo se hace. Implementación de la arquitectura con circuitos digitales. Los componentes (sumadores, multiplexores, registros,…) y sus conexiones para realizar una determinada arquitectura. Son características hardware transparentes al programador. Se especifican: - Los componentes. - Flujos de datos entre los componentes. - Señales de control (del funcionamiento de los componentes). Veremos distintas estructuras que implementan la misma arquitectura de un repertorio (reducido) de instrucciones del procesador MIPS: 23 (1) Estructura monociclo del procesador MIPS 24 (2) Estructura multiciclo del procesador MIPS 25 (3) Estructura segmentada del procesador MIPS 26 1.4. Estructura y funcionamiento de un computador Un sistema computador se compone de - Procesador: procesa los datos siguiendo las instrucciones. - Memoria: almacena los datos y las instrucciones. - Entrada/salida: para transferir información con el exterior. El procesador está formado por: - Camino de datos: realiza la transformación de los datos. - Unidad de control: lee las instrucciones de memoria, las interpreta y controla todos los componentes para que se ejecuten. 27 Unidades funcionales del computador 28 Estructura de un computador: cinco componentes clásicos 29 El camino de datos se compone de: - Unidad aritmético-lógica (ALU): realiza operaciones aritméticas (sumas,…) y lógicas (and,…) sobre los datos. - Banco de registros: contienen los operandos y los resultados de las operaciones ALU. 30 La memoria Se organiza como un vector de bytes (8 bits). Cada byte es referenciado por su dirección, su posición dentro de la memoria. Una dirección de memoria hace referencia al contenido (8 bits) de esa posición. 31 Sea la memoria: En decimal En binario Contenido Dirección En hexadecimal Dirección Contenido [0] [1] [2] [3] [4] … 01011011 10101110 01011100 11100100 01101101 … [0x00] [0x01] [0x02] [0x03] [0x04] … 0x5B 0xAE 0x5C 0xE4 0x6D … [254] [255] 10011011 10111101 [0xFE] [0xFF] 0x9B 0xBD Se diría que: el byte en la dirección 3 es 11100100 ó en hexadecimal: el byte en la dirección 0x03 es 0xE4 32 Se puede hacer referencia a datos en memoria de distintos tamaños: - Un byte: 8 bits. - Una palabra: 4 bytes. - Media palabra: 2 bytes. - Doble palabra: 8 bytes. Para los datos de varios bytes, habrá que establecer el orden en el que se almacenan dichos bytes. Suponemos de menos a más significativo (convenio ‘little-endian’). 33 Con el contenido de memoria visto: El byte en la dirección 0x00 es 0x5B. La media palabra en la dirección 0x00 es 0xAE5B. La palabra en la dirección 0x00 es 0xE45CAE5B. La doble palabra en la dirección 0x00 es 0xXXXXXX6DE45CAE5B. 34 Las operaciones que hace el procesador con la memoria son: - Lectura : transferir un dato o instrucción en memoria al procesador. - Escritura : transferir un dato del procesador a memoria. En ambos casos se tendrá que especificar: - La dirección: posición en la memoria del dato a transferir. - El tamaño (número de bytes) del dato a transferir. - El destino/fuente del dato. Todo esto se especificará en una instrucción máquina. Ejemplos en la MIPS: - lw rt, address (lectura de memoria, carga) - sw rt, address (escritura en memoria, almacenamiento) 35 Acceso a las instrucciones en memoria El procesador tiene que acceder a las instrucciones en memoria, donde están almacenadas, para ejecutarlas. El procesador tiene dos registros, de uso específico, para leer las instrucciones de memoria: (1) Contador de programa (PC): contiene la dirección en memoria de la instrucción a ejecutar. Es un registro contador con carga en paralelo. (2) Registro de instrucción (IR): donde se carga (se transfiere desde memoria) la instrucción a ejecutar. Es un registro con carga en paralelo. 36 El funcionamiento básico de un computador Consiste en procesar instrucciones una tras otra según están en memoria. Cada instrucción es procesada en dos fases: - Fase de captación: cargar la instrucción en el registro de instrucción (IR). - Fase de ejecución: llevar a cabo la operación especificada por la instrucción. 37 (1) Fase de captación de instrucción (común a todas las instrucciones): – El registro contador de programa (PC) contiene la dirección de la instrucción a ejecutar. – El procesador carga (lectura de memoria) en el registro de instrucción (IR), la instrucción señalada por el PC. – El procesador incrementa el contador de programa para que apunte a la siguiente instrucción (el incremento depende del tamaño de la instrucción). 38 Contenido de IR y PC después de la fase de captación 39 40 (2) Fase de ejecución: según el tipo de instrucción (4 tipos): – Procesador-memoria: transferencia de datos entre el procesador y la memoria. carga_palabra registro, dirección almacena_palabra registro, dirección – Procesador-E/S: transferencia de datos entre el procesador y un periférico. li registro_v0, 5 # Código del servicio del SO para leer entero syscall # Llamada al SO – Procesamiento de datos: el procesador ha de realizar alguna operación aritmética o lógica con los datos (la ALU). suma reg_destino, reg_fuente1, reg_fuente2 – Control (de secuencia; saltos): una instrucción puede especificar que la secuencia de ejecución sea alterada, cargando un valor en el contador de programa. salta dirección 41