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) 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: (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 (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] (3) Lenguaje de alto nivel Expresar resolución de problemas es difícil en lenguaje ensamblador (ya lo comprobarán) Fuerza al programador a pensar como funciona la máquina: movimiento de datos, operaciones aritméticas y lógicas básicas y saltos Solución: tener una notación de alto nivel (algorítmica) que se traduzca a lenguaje ensamblador Programa traductor: compilador (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,… Jerarquía de niveles para estudiar un computador El modelo de computador que tenemos es: Veamos cada uno de los niveles: (1) Diseño de circuitos Cómo implementar las funciones lógicas del nivel superior con transistores, diodos, resistencias, y capacitores Se habla de diferentes tecnologías de circuitos integrados (familias lógicas) y la estructura interna de las puertas lógicas P.e. puerta NOR: Se caracterizan los circuitos integrados por su fan-in, fan-out, tiempo de respuesta… (2) Diseño digital (FCI) Conceptos de representación, síntesis, simulación y test de circuitos digitales: - puertas lógicas - bloques combinacionales y secuenciales - elementos de memoria… Bloques digitales básicos para diseñar un procesador (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 y transferencia de datos procesador-controladores periféricos (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 (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 (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 (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 ¿Desde que 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 (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 (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 1.3. Conceptos de arquitectura y estructura de un computador Arquitectura (qué hace) Comportamiento funcional desde el punto de vista de - el programador en lenguaje ensamblador - 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 - los registros - modos direccionamiento - tipos de datos Estructura (cómo se hace) Los componentes (sumadores, multiplexores, registros,…) y sus conexiones para realizar una determinada arquitectura Detalles del hardware transparentes al programador Se especifican: - flujos de datos entre los componentes - señales de control Estructura del procesador MIPS 1.4. Estructura y funcionamiento de un computador Un sistema computador se compone de procesador, memoria y entrada/salida: - procesador: procesa los datos siguiendo las instrucciones - memoria: almacena los datos y las instrucciones (representación binaria) - 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 El camino de datos se compone de: - unidad aritmético-lógica (ALU): realiza operaciones (suma, and,…) sobre los datos - registros: contienen los operandos y los resultados 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 (bits que forman la palabra) de esa posición Las operaciones que hace el procesador con la memoria son: - lectura (load): transferir un dato en memoria al procesador - escritura (store): 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 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 la instrucción a ejecutar 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 IR - fase de ejecución: llevar a cabo la operación especificada por la instrucción (1) Fase de captación de instrucción: – El registro contador de programa (PC) contiene la dirección de la instrucción a ejecutar – El procesador carga la instrucción señalada por el PC en el registro de instrucciones (IR) – El procesador incrementa el contador de programa para que apunte a la siguiente instrucción Contenido de IR y PC después de la fase de captación (2) Fase de ejecución: según el tipo de instrucción (4 tipos) – Procesador-memoria: transferencia de datos desde la CPU a la memoria o al revés – Procesador-E/S: transferencia de datos a o desde el exterior – Procesamiento de datos: la CPU ha de realizar alguna operación aritmética o lógica con los datos – Control: una instrucción puede especificar que la secuencia de ejecución sea alterada (fundamental)