09/03/2008 E.P.S. de Zamora Informática El procesador Escuela Politécnica Superior de Zamora Departamento de Informática y Automática Informática ITOP José Mª González Ríos Curso 2007/2008 Estructura de un ordenador propuesta por Von Neumann Se entiende por ordenador una máquina que permite el tratamiento de la información. Desde un punto de vista muy general, se pueden distinguir dos partes en todo ordenador: Hardware: Se refiere a todos los componentes físicos del ordenador, tales como el disco duro, el CDROM, la CPU, la tarjeta de video, la impresora, etc. Software: Se refiere al conjunto de algoritmos, programados en algún tipo de lenguaje comprensible por el ordenador, cuyo objetivo es realizar alguna tarea mediante cómputos operando sobre el hardware del ordenador. El software más importante es el Sistema Operativo (SO), dedicado a gestionar las distintas partes del ordenador para poder hacer uso de esta. Un sistema informático es, en mayor o menor medida, el conjunto de hardware y software interconectados entre si para el tratamiento de la información. En este estudio nos centraremos exclusivamente en el hardware del ordenador. Obtendremos una visión de conjunto del hardware de todo ordenador y nos centraremos sobre todo en los componentes hardware más importantes, a saber: La Unidad Central de Proceso (CPU - Central Processing Unit Unit). ). La Memoria Principal, (tema siguiente). José Mª González Ríos Informática – 2007/2008 2 1 09/03/2008 Estructura de un ordenador propuesta por Von Neumann La idea de Von Neumann consistió en conectar permanentemente determinadas unidades del ordenador, colocándolas bajo un control central, donde las instrucciones eran tratadas secuencialmente en un ciclo repetitivo de operaciones. Los dos puntos más importantes a tener en cuenta son: a) Todos los datos y las instrucciones se representan en código binario y se almacenarán juntos en la memoria del ordenador. b) El ordenador no hará distinciones entre datos e instrucciones. Von Neumann propuso una estructura concreta para los ordenadores, y los que se ajustan a esa estructura se conocen como máquinas de Von Neumann. Neumann. Una máquina de Von Neumann consta de 3 unidades básicas: Procesador Procesador,, también llamado CPU (siglas de Unidad Central de Proceso, en inglés Central Process Unit Unit), ), memoria y unidad de E/S. José Mª González Ríos Informática – 2007/2008 3 Estructura de un ordenador propuesta por Von Neumann En la figura podemos ver dividido el ordenador en las siguientes partes: Buses de control, dirección y datos. Memoria principal. Unidad central de proceso. Dispositivos periféricos. José Mª González Ríos Informática – 2007/2008 4 2 09/03/2008 Memoria Resulta necesario almacenar instrucciones y datos en algún sitio mientras se ejecuta un programa en el ordenador, cuando menos de manera temporal. Para este fin existe la memoria principal, que es donde se almacenan los datos y las instrucciones de los programas en ejecución, donde se pueden recuperar y grabar en ella datos a través de las dos operaciones básicas definidas sobre ella, una de lectura y la otra de escritura. La memoria principal o central está dividida en celdas formadas generalmente por un octeto (byte), aunque puede estarlo en unidades mayores. Habitualmente a estas celdas se les denomina palabras de memoria. Cada una de esas palabras es una unidad direccionable en la memoria. El mapa de memoria se corresponde con el espacio de memoria direccionable. Este espacio viene determinado por el tamaño de las direcciones. El siguiente gráfico esquematiza de forma básica una unidad de memoria: Bus de control José Mª González Ríos Bus de dirección Memoria Informática – 2007/2008 Bus de datos 5 Memoria Para acceder a una palabra en particular se envía su dirección (a través del un bus de dirección) dirección) y una apropiada función de control, leer o grabar en la memoria (a través de un bus de control). control ). Si la función es de grabación además se debe colocar la palabra que desea grabar en el bus de datos de la memoria desde donde será transferida a su correcta ubicación. Cuando la palabra es leída aparecerá en el bus de datos la palabra solicitada. De lo dicho se deduce que la memoria de un ordenador es una secuencia de bytes, que empieza en el 0 y termina en un determinado número, según la capacidad que tenga la memoria. Es decir, es una tabla o ""array array"" de bytes. Cada byte tiene una dirección: el número que ocupa posicionalmente en la memoria. Esta dirección es conocida como "dirección "dirección física". física". En oposición al concepto de “dirección virtual” de la “memoria virtual” que veremos más adelante. José Mª González Ríos Informática – 2007/2008 6 3 09/03/2008 Memoria La siguiente figura muestra la memoria de un ordenador con una longitud de palabra de 8 bits y un bus de direcciones también de 8 bits. Existen 28 = 256 casillas (en lenguaje binario, desde la 00000000 hasta la 11111111), cada una conteniendo un dato de 8 bits de tamaño, en total 256 x 8 = 2048 bits o 256 Bytes. Los datos contenidos en las casillas de memoria no tienen evidentemente ninguna relación con la dirección de estas, ya que van variando conforme se ejecuta el programa o se producen entradas de nuevos datos. José Mª González Ríos Informática – 2007/2008 7 CPU Se define Unidad Central de Proceso (CPU - Control Processing Unit Unit)) o procesador, como la unidad funcional que ejecuta las instrucciones de una determinada arquitectura de propósito general. Muchos ordenadores tienen un procesador que se encarga de la totalidad de las funciones de interpretación de instrucciones y su ejecución. El término de propósito general sirve para diferenciar a la CPU de otros procesadores tales como los procesadores de E/S cuyas funciones son en cierta forma más restringidas o para un propósito específico. Generalmente existe una sola CPU en la mayoría de los ordenadores. Un ordenador con una sola CPU se denomina Monoprocesador; un ordenador con más CPUs se denomina un Multiprocesador. La figura siguiente muestra un bloque sencillo que se utiliza para representar a la CPU. Existe un bus de datos de una sola palabra que es el camino por el cual fluye la información desde o hacia la CPU. Un segundo bus por el cual se transmiten las direcciones desde la CPU a la memoria principal y también a los dispositivos de E/S. Y por último un bus de control que se utilizan para controlar los otros componentes del sistema y además para sincronizar sus operaciones con las de la CPU. José Mª González Ríos Informática – 2007/2008 8 4 09/03/2008 CPU Bus de control Bus de dirección CPU Bus de datos Desde un punto de vista conceptual, la CPU muestra una clara división funcional. Estas funciones son: Procesamiento de los datos. Control del procesamiento en sí mismo. En esencia el trabajo de un ordenador consiste en recibir datos del usuario (entrada) según el dispositivo periférico y seguir las instrucciones para transformar esa entrada en una salida y devolverla al usuario. Estas transformaciones son realizadas por la CPU que interpreta y lleva a cabo las instrucciones de los programas, efectúa manipulaciones aritméticas y lógicas con los datos y se comunica con las demás partes del sistema. José Mª González Ríos Informática – 2007/2008 9 Objetivos de la CPU Ejecutar rápidamente todos los pasos de una tarea Funcionar lo mas rápidamente posible Consumiendo la mínima potencia Evitar errores y paradas Para ello, el procesador utiliza una serie de operaciones elementales, a partir de las cuales se pueden resolver tareas más complejas. Cada una de las operaciones elementales tiene un código binario y puede tener uno, o varios operandos sobre los que actuar. El procesador dispone habitualmente de un conjunto reducido de posiciones de memoria internas, que se conocen como registros, y que le permiten almacenar los datos y los resultados con los que está trabajando en ese momento José Mª González Ríos Informática – 2007/2008 10 5 09/03/2008 Estructura de la CPU Se distinguen básicamente dos partes: Lógica: Agrupa a todos los componentes capaces de 1. La Unidad Aritmética Lógica: manipular los datos, es decir los recursos que disponemos en el interior del procesador. También es conocida como UAL ó ALU (Aritmethic Logic Unit). Unit ). Generalmente, la unidad aritmético lógica está dividida en tres subunidades que realizan las funciones: 2. 9 Operaciones de punto fijo, fijo, que incluye aritmética entera y cálculo efectivo de las direcciones. 9 Operaciones de punto flotante, flotante, que incluyen aritmética con mantisa y exponente. 9 Operaciones de longitud variable, variable, que incluye aritmética decimal y operaciones sobre conjuntos de caracteres. La Unidad de Control: Control: Encargada de realizar el control del proceso, es decir, de generar las señales necesarias para activar los componentes de la unidad de tratamiento que actuarán sobre los datos en el instante de tiempo que corresponda. También es conocida como UC o CU (Control Unit). Unit ). La unidad de control trabaja en base al reloj maestro que interpreta y coordina la ejecución de todas las operaciones que realiza el microprocesador. Como ya hemos dicho, la función fundamental de este reloj es marcar la cantidad de instrucciones que el microprocesador puede ejecutar en un segundo. La frecuencia del reloj determina la velocidad en la transferencia de un dato entre dos dispositivos conectados a un mismo bus (por ejemplo, la lectura de una palabra de memoria por parte de la CPU). José Mª González Ríos Informática – 2007/2008 11 Alu Se encarga de realizar todas las operaciones, tanto aritméticas como lógicas, mediante un número elevado de pequeños pasos. Esta formada por: 1. Acumulador: 9 Es el área de trabajo del procesador. 9 Contiene uno de los datos implicados en la operación y almacena el resultado (En los procesadores actuales no suele existir un registro reservado a tal fin). 2. Circuitos lógicos: 9 Son los circuitos encargados de realizar las operaciones con 1 ó 2 datos. Estas operaciones se llevan a cabo mediante un gran número de pequeños pasos, involucrando cada una de ellas, a uno, o varios de los circuitos lógicos. 3. Registro de códigos de condición: 9 Informa sobre la última operación realizada. Algunos de sus bits son: • C (carry (carry): ): Se activa al operar con números sin signo, cuando no puede almacenarse el resultado correctamente (desbordamiento). • Z (Zero (Zero): ): Se activa con resultado 0 • OV ((overflow overflow): ): Igual que C pero para números con signo. José Mª González Ríos Informática – 2007/2008 12 6 09/03/2008 Alu La unidad de control, reducida a la mínima expresión, consta de contador de programa (normalmente llamado PC), decodificador de instrucciones, puntero de pila (comúnmente llamado SP, en inglés Stack Pointer) y, índice. opcionalmente, de registro índice. La unidad de control tiene, así mismo, algo muy necesario, que es el generador de impulsos de reloj, encargado de sincronizar el funcionamiento del procesador. Para ello, se emplea un cristal de cuarzo externo a la CPU que le suministra a través de una de sus patas una onda cuadrada. Cada período de la onda recibe el nombre de ciclo de reloj, y se utiliza su frecuencia para medir la velocidad del procesador. Para realizar cualquier operación, el procesador tiene unas tablas en las que se especifica los ciclos de reloj que dura, la unidad de control coloca los operandos necesarios para la misma, donde se necesiten y espera los ciclos que marca la tabla, para darla por concluida. Las funciones de la unidad de control son las de controlar el funcionamiento paso a paso del procesador, mientras éste ejecuta cada una de las instrucciones de un programa. Resumiendo: a) b) c) d) Controlar la secuencia en que se ejecutan las instrucciones. Controlar el acceso del procesador a la memoria principal. Regular las temporizaciones de todas las operaciones que ejecuta el procesador. Enviar y recibir señales de control desde los periféricos. José Mª González Ríos Informática – 2007/2008 13 Generador de impulsos de reloj José Mª González Ríos Informática – 2007/2008 14 7 09/03/2008 Registros Otro componente importante en un procesador son los Registros. Un registro es la unión de varios circuitos lógicos que almacenan un determinado número de bits, bits, normalmente el de una palabra (8, 16, 32 o 64 bits). Estos circuitos son muy rápidos y, puesto que forman parte del propio procesador, componen la memoria a la que más fácilmente y más rápidamente puede acceder cualquier otra parte de la CPU. Los registros suelen formar grupos según la funcionalidad a la que estén destinados. Los tipos básicos de registros según su función son: Uso general: No tienen una función específica. Cualquier registro de propósito general puede almacenar el operando para cualquier código de operación; como en todo orden de cosas, existen algunas restricciones, por ejemplo, podrán existir registros de propósito general específicos para operaciones de punto flotante, o de direccionamiento. Datos: Sólo se usan para contener datos y no participan en el cálculo de direcciones de operandos. operandos. Direcciones: Pueden ser registros de uso parcialmente general, o sólo dedicados a modos de direccionamientos específicos. Algunos registros de dirección más usados son los Registros índices y los Punteros de Pila. Códigos de condición: También llamados “flags “flags”. ”. Específicamente son bits fijados mediante el hardware, por ejemplo, indican si una operación entrega un resultado positivo, negativo, nulo, si hay overflow overflow,, etc. José Mª González Ríos Informática – 2007/2008 15 Registros fundamentales 1. PC ((Program Program Counter): Counter): Contador de Programa. Programa. Contiene la dirección de la siguiente instrucción. instrucción. Típicamente, la CPU actualiza el contador de programa después de cada lectura de instrucción de manera que siempre apunta a la siguiente instrucción a ejecutar. Una instrucción de bifurcación o salto también modificará el contenido de PC. La instrucción leída se carga en el registro de instrucción. 2. INC ((Incrementer Incrementer): ): Incrementador Incrementador.. Registro que, sumando su contenido al registro PC, incrementa el contenido de este. Normalmente este incremento es la unidad (PC=PC+1), pero en ciertas ocasiones puede ser otro valor, tales como instrucciones de salto o instrucciones que ocupen más de una palabra en memoria. 3. IR ((Instruction Instruction Register Register): ): Registro de Instrucción. Instrucción. Contiene la instrucción actual, aquí se analiza el código de operación. Nótese que almacena el contenido de las posiciones de memoria que indica el registro PC. 4. MAR ((Memory Memory Address Register Register): ): Registro de dirección de memoria. memoria. Contiene la dirección de una posición de memoria, y el intercambio de datos con la memoria se realiza conectado directamente al bus de direcciones. 5. MBR ((Memory Memory Buffer Register Register): ): Registro intermedio de memoria. memoria. Contiene la palabra de datos para escribir en memoria que ha sido leída más recientemente, el intercambio de datos con la memoria se realiza conectándose directamente al bus de datos. 6. Registros E/S: Entrada/Salida. Registros destinados a contener la dirección de memoria cuyo contenido se reserva para almacenar datos provenientes de algún dispositivo de entrada y salida. Algunos de estos registros son: 9 E/SAR (E/S Address Register Register): ): Registro de direcciones para especificar un dispositivo de E/S. A estas posiciones de memoria cuyo contenido se usa para comunicarse con los dispositivos de E/S se les denomina puertos. 9 E/SBR (E/S Buffer Register Register): ): Registro de datos que se utiliza para intercambiar datos entre un módulo de E/S y la CPU. 7. Registros D0, D1 ... DN (Data Registers): Registers): Registros genéricos destinados a contener todo tipo de datos. En ciertos procesadores estos registros son también llamados simplemente R0, R1 ... RN ((Registers Registers). ). José Mª González Ríos Informática – 2007/2008 16 8 09/03/2008 Contador del programa Contiene la dirección de la instrucción del programa que se está ejecutando en cada momento Recogida la instrucción de la memoria del PC se incrementa,, de incrementa acuerdo al tamaño en bytes de las instrucciones que se ejecuten Informática – 2007/2008 José Mª González Ríos 17 Esquema de los registros de la CPU Unidad de control Contador de programa Registro de dirección de memoria Incrementador Registro intermedio de memoria Registro de instrucción Registros de datos Unidad aritmético lógica José Mª González Ríos Informática – 2007/2008 18 9 09/03/2008 Estructura básica de una CPU ALU Registro de desplazamiento Unidad de Control (Secuenciador) Palabra de Estado (F) 2º Operando Contador de programa (PC) BUS DE DIRECCIONES direcciones (RD) Registro de Decodificador de Instrucciones (Microprograma) CLK R/W RESET INT BUS DE CONTROL Acumulador(A) BUS DE DATOS (INTERNO) Registros Indice Puntero de pila (IX) (SP) José Mª González Ríos Registro de instrucciones y datos BUS DE DATOS Informática – 2007/2008 19 Comunicación con el sistema. BUSES Para funcionar el hardware necesita unas conexiones materiales que permitan a los componentes comunicarse entre sí e interaccionar. Estas conexiones se denominan buses o canales. Un bus constituye un sistema común interconectado compuesto por un grupo de cables o circuitos que coordina y transporta información entre las partes internas del ordenador. Existen tres tipos de buses en un ordenador, en función del tipo de datos que transporten: Bus de Control: Se encarga de transmitir datos que serán utilizados como órdenes de control. Bus de Direcciones: Se encarga de transmitir datos que serán utilizados como direcciones de memoria. Bus de Datos: Se encarga de transportar datos como tales. José Mª González Ríos Informática – 2007/2008 20 10 09/03/2008 Comunicación con el sistema. BUSES Un bus se caracteriza por dos propiedades: La cantidad de información que puede manipular simultáneamente, llamada ”anchura de bus”. La rapidez con que puede transferir dichos datos. El conjunto de estos tres buses forma el Bus del Sistema. Sistema. Su capacidad debe estar en correspondencia con la demanda de servicio que realizan los componentes conectados al bus, tales como la unidad central de proceso, la memoria, etc, etc, y que el ancho del bus sea tal que no imposibilite la adecuada transmisión de datos. José Mª González Ríos Informática – 2007/2008 21 Comunicación con el sistema. BUSES Bus de datos Son las líneas por las que el procesador lee o escribe datos en la memoria o en los periféricos. Consta normalmente de 8, 16, 32 o 64 hilos, cada uno de ellos representa un bit del dato que el procesador lee o escribe. Bus de direcciones Son las líneas por las que el procesador decide la posición de memoria con la que quiere comunicarse. Cada posición tiene un número y dependiendo del número de hilos que compongan dicho bus, el procesador podrá manejar más o menos memoria. Aunque el bus de datos sea de más de 8 bits, por razones de compatibilidad las posiciones de memoria se numeran de 8 en 8 bits. Por cada hilo del bus de direcciones circula un bit, y la dirección se forma con el número binario que representan dichos bits. Los tamaños más comunes de bus de direcciones son 16(lo que permite tener 64Kb de memoria), 20 (1Mb), 24 (16Mb) y 32 (4Gb). Bus de control Las señales de control sirven para que el procesador pueda controlar lo que hace, por ejemplo hay una llamada W/ R que le sirve al procesador para indicar cuando quiere leer y cuando quiere escribir, si la señal está a 0 se trata de una lectura y si está a 1 el procesador necesita escribir José Mª González Ríos Informática – 2007/2008 22 11 09/03/2008 Buses del 8038680386-SX de AMD Bus de direcciones: A0…A23 Bus de datos: D0…D15 Bus de control: W/R, M/IO Alimentación: VCC Masa de referencia: VSS Entrada de reloj: CLK2 Interrupción: INTR José Mª González Ríos Informática – 2007/2008 23 Diagrama de los buses de un ordenador José Mª González Ríos Informática – 2007/2008 24 12 09/03/2008 CHIPSET "Chipset" significa "conjunto de chips". Normalmente, en las placas base se trata de 2 chips, denominados Northbridge y Southbridge Southbridge.. Controla los aparatos de I/O (entrada/salida: disco duro, USB, ...) Controla aspectos específicos del microprocesador y la memoria (tipo de bus y de memoria, por ejemplo) José Mª González Ríos Informática – 2007/2008 25 Comunicación con el sistema Mapeado en memoria: memoria: (Motorola) Se reservan determinadas direcciones de memoria para los periféricos. Espacio de E/S separado: separado: (Intel) El µP posee una señal de control llamada M/IO, con la que el procesador indica si quiere comunicarse con un periférico (0), o con la memoria (1). Las direcciones de los periféricos se suelen llamar puertos. En cualquiera de los dos casos anteriores, en el acceso a los periféricos el procesador emplea tres estrategias: Escrutinio Interrupción Acceso directo a memoria José Mª González Ríos Informática – 2007/2008 26 13 09/03/2008 Escrutinio Consiste en leer periódicamente el estado del periférico para decidir lo que debe hacer. Por ejemplo, si se usa un teclado de esta forma, periódicamente (por ejemplo, cada centésima de segundo) se lee a través de un puerto un registro de estado del teclado, que informa de sí hay una tecla pendiente de ser leída, en ese caso el procesador lee la tecla a través de otro puerto. José Mª González Ríos Informática – 2007/2008 27 Interrupción El periférico interrumpe al procesador cuando necesita ser atendido,, para ello el procesador dispone de una señal de control atendido llamada INTR INTR,, que debe ser usada en ese caso, existe además un controlador de interrupciones externo encargado de canalizar todas las posibles peticiones de interrupción. Cuando se interrumpe al procesador, éste para lo que está haciendo y ejecuta un programa de atención al periférico. periférico. Cuando acaba dicho programa, se vuelve al estado anterior y continúa con lo que hacía al ser interrumpido. interrumpido. La pila sirve para conservar el estado del procesador cuando se produce la interrupción, y poder continuar más adelante. Por ejemplo, el reloj funciona de esta forma. Cada cierto tiempo (por ejemplo, una centésima de segundo) interrumpe al procesador y le fuerza a que ejecute un programa que se encarga de incrementar la hora, que está almacenada en varias posiciones de memoria (una para las centésimas de segundo, otra para los segundos, etc.). José Mª González Ríos Informática – 2007/2008 28 14 09/03/2008 Acceso directo a memoria Cuando un periférico necesita enviar varios datos consecutivamente a memoria, los dos métodos anteriores son muy difíciles de emplear y se emplea éste, que consiste en tener un chip de apoyo al procesador que se llama controlador de DMA (acceso directo a memoria) que es capaz de leer y escribir en memoria sin ayuda del procesador. procesador. Un ejemplo de esto es el caso de los disquetes, cuando se lee un sector, se deben transferir 512 bytes del disquete a la memoria. memoria. En este caso, se programa al controlador de disquetes para que lea el sector y lo envíe al controlador de DMA. DMA. Por otra parte, se programa al controlador de DMA para decirle que la unidad de disquetes va a enviarle 512 bytes, que tiene que poner a partir de determinada posición de memoria. Después de hecho esto, el procesador no tiene que intervenir para nada en la operación, operación, la realizan entera solos el controlador de disquetes y el controlador de DMA. Para avisar al procesador de que la lectura ha concluido se utiliza una interrupción. José Mª González Ríos Informática – 2007/2008 29 Lenguaje máquina Son instrucciones que controlan paso a paso el funcionamiento del procesador Son propias de cada arquitectura Características: Están en código binario Hacen referencia directa a registros y unidades funcionales del microprocesador Tienen dos partes: una dedicada al código de la operación y otra dedicada al operando u operandos (si existen) José Mª González Ríos Informática – 2007/2008 30 15 09/03/2008 Lenguaje máquina - lenguaje ensamblador Es un lenguaje complicado, por lo que se buscó algo que se pareciera más al humano: LENGUAJE ENSAMBLADOR Cada instrucción se sustituyó por un mnemónico: José Mª González Ríos ADD Sumar SUB Restar, … Informática – 2007/2008 31 Lenguaje máquina - tipos de instrucciones Instrucciones sin operando: CLC Borra (Clear) el flag de Carry Instrucciones con un operando: INC I Incrementa en 1 el contenido de la posición de memoria o registro I Instrucciones con dos operandos: ADD I,3 Suma los números I y 3 (en registros o en memoria) y almacena el resultado en I. Los operandos de las instrucciones pueden estar en la memoria principal del ordenador, en registros, o en la propia instrucción. Los métodos para especificar los operandos se conocen Cada procesador habitualmente como: tiene los suyos MODOS DE DIRECCIONAMIENTO propios José Mª González Ríos Informática – 2007/2008 32 16 09/03/2008 Modos de direccionamiento ÆIntel Máquina Intel 80x86: Bus de datos y direcciones: 16 bits Registros de 16 bits: AX, BX, CX, DX 9 En estos registros se puede acceder solo a una mitad(8 bits): AH (parte alta), AL (parte baja). Fuente: el dato que se copia Instrucción: MOV Mueve datos Tiene dos operandos Destino: donde se copia Æ un registro Los números en Hexadecimal José Mª González Ríos Informática – 2007/2008 33 Modos de direccionamiento Inmediato Directo Indirecto Registro Registro indirecto Desplazamiento (Indexado) José Mª González Ríos Informática – 2007/2008 34 17 09/03/2008 Direccionamiento inmediato El dato es parte de la instrucción Operando = campo dirección ejemplo. ADD 5 Suma 5 al contenido del acumulador 5 es operando MOV AX, 5 Æ Pone el número 5 en el registro AX No hay referencia a memoria para extraer datos Rápido Rango limitado Diagrama: Instrucción Operando Opcode José Mª González Ríos Informática – 2007/2008 35 Direccionamiento directo El campo de direcciones contiene la dirección del operando La dirección efectiva (EA) = campo de dirección (A) ejemplo. ADD A Suma el contenido de la celda A al acumulador Buscar en memoria la dirección A para el operando MOV AX, [1234] Lee el dato de 16 bits contenido en las direcciones de memoria 1234 y 1235, colocándolo en AX Una sola referencia a memoria para accesar datos No se hacen cálculos adicionales para trabajar la dirección efectiva Espacio de direcciones limitado Diagrama: Instrucción Opcode Memoria Dirección A Operando José Mª González Ríos Informática – 2007/2008 36 18 09/03/2008 Direccionamiento indirecto Celdas de memoria apuntadas por un campo de dirección que contiene la dirección (apuntador) al operando (dato). EA = (A) Busca en A, encuentra la dirección (A) y ahí busca el operando Ejemplo. ADD (A) Suma el contenido de una celda apuntada por el contenido de A al acumulador Espacio de direccionamiento grande 2n donde n = es la longitud de la palabra Puede ser anidado, multinivel, en cascada ejemplo. EA = (((A))) 9 ¿Cómo sería el diagrama? MOV AX, [BX] Se lee el contenido de BX, supongamos que es 2345, el contenido de 2345 y 2346 pasa a AX Varios accesos a memoria para encontrar el operando Más lento José Mª González Ríos Informática – 2007/2008 37 Diagrama de direccionamiento indirecto Instrucción Opcode Dirección A Memoria Apuntador al operando Operando José Mª González Ríos Informática – 2007/2008 38 19 09/03/2008 Direccionamiento registro El operando está en el registro nombrado en el campo dirección EA = R Número limitado de registros Se requiere un campo de direcciones muy pequeño Instrucciones más cortas Extracción de instrucciones más rápida MOV AX, BX Copia el contenido del registro BX en el AX No se hace acceso a memoria La ejecución es muy rápida Espacio de direcciones muy limitado Muchos registros ayudan al rendimiento Requiere una buena programación en ensamblador o el desarrollo de un buen compilador Programando en C 9 register int a; José Mª González Ríos Informática – 2007/2008 39 Diagrama de direccionamiento registro Instrucción Opcode Dirección del del Registro Registro R Registros Operando José Mª González Ríos Informática – 2007/2008 40 20 09/03/2008 Direccionamiento indirecto con registro EA = (R) El operando está en una celda de memoria apuntado por el contenido del registro R Espacio de direcciones grande (2n) No se hace acceso a memoria La ejecución es muy rápida Espacio de direcciones muy limitado Muchos registros ayudan al rendimiento Requiere una buena programación en ensamblador o el desarrollo de un buen compilador Programando en C 9 register int a; Informática – 2007/2008 José Mª González Ríos 41 Diagrama de direccionamiento indirecto con registro Instrucción Opcode Dirección del registro R Memoria Registros Apuntador al operando José Mª González Ríos Operando Informática – 2007/2008 42 21 09/03/2008 Direccionamiento con desplazamiento EA = A + (R) El campo de direcciones tiene dos valores A = valor base R = registro que tiene el desplazamiento o viceversa Instrucción Opcode Registro R Dirección A Memoria Registros Apuntador al operando José Mª González Ríos + Operando Informática – 2007/2008 43 Direccionamiento relativo Una versión de direccionamiento con desplazamiento R = Contador del programa, PC EA = A + (PC) Obtener operando de A celdas a partir de la posición actual 9 Apuntada por el registro PC Localidad de referencias y el uso de la caché El operando es un número que sumado al contador de programa nos da la dirección del dato: JMP +25 La siguiente instrucción que se ejecutará será la que encuentre 25 posiciones de memoria más abajo José Mª González Ríos Informática – 2007/2008 44 22 09/03/2008 Direccionamiento indexado A = base R = desplazamiento EA = A + R Bueno para el acceso de arreglos EA = A + R R++ La instrucción contiene un número que, sumado al registro índice, indica la dirección de memoria donde está el dato MOV AL, 1234[BX] Suma 1234 con el contenido del registro BX (que actúa como registro índice). El resultado será la dirección del dato buscado, que se copiará en la parte baja del registro AX (AL) José Mª González Ríos Informática – 2007/2008 45 Procesadores Los procesadores reales no tienen registros específicos. Contienen un conjunto de registros generales que se utilizarán para las distintas tareas tareas.. Dedicados De propósito general José Mª González Ríos Se reduce su campo de aplicación para que sean mas efectivos en determinadas aplicaciones: ajedrez, imágenes 3D, etc. Se buscan prestaciones generales Informática – 2007/2008 46 23 09/03/2008 RISC ((Reduced Reduced Instruction Set Computer) Computer) Características clave: Muchos registros de propósito general El uso de la tecnología del compilador para optimizar el uso de los registros Conjunto de instrucciones limitado y simple Énfasis en optimizar el pipelining de las instrucciones Una instrucción por ciclo Operaciones de registro a registro Menos modos de direccionamiento simples Menos formatos de instrucciones simples Formato de instrucción fijo Más tiempo/esfuerzo para compilar Plataformas Operativas CPU 47 Filosofía de diseño RISC Reduced Instruction Set Computer CPUs con un conjunto de instrucciones más simple y pequeño. 9Ejecución más rápida de los programas. Instrucciones de Longitud Fija (32 ó 64 Bits) 9Diferencia con los CISC. Ventaja/Desventaja. Dos características principales 9CPUs RISC contienen muchos registros internos internos. 9Carga y almacenamiento almacenamiento:: Instrucciones dedicadas. ¾ Ventaja: Reducción de Modos de Direccionamiento y por lo tanto el acceso a memoria externa. José Mª González Ríos Informática – 2007/2008 48 24 09/03/2008 Filosofía de diseño RISC Múltiples operaciones de bajo nivel, múltiples instrucciones: 9SUMAR ($00) + ($03) y guardarlo en $07 Sumar $10 con $1A y llevarlo a un registro Guardar el valor del registro en $07 Cargar el valor que hay en $03 Cargar el valor que hay en $00 CPU $03 $00 $07 Bus de Direcciones Control y ALU $10+$1A=$2A $10 $1A Bus de Datos $10 $2E $89 $1A $3E $5F $2E $2A $30 $00 $01 $02 $03 $04 $05 $06 $07 $1A $10 $2A Informática – 2007/2008 José Mª González Ríos Memoria 8‐Bits $00 $03 $07 49 Filosofía de diseño RISC Reduced Instruction Set Computer Varias instrucciones: Reg. Op A Reg. Result. Memoria Memoria Reg. Op B Instrucción de Carga José Mª González Ríos Instrucción Sumar Informática – 2007/2008 Instrucción de Almacenamiento 50 25 09/03/2008 Intención del CISC (Complex Instruction Set Computer) Computer) Desarrollo fácil del compilador Mayor número de instrucciones, que realizan tanto operaciones elementales como complejas La mayoría de los tipos de instrucciones permiten que el acceso a memoria sea de forma directa Número considerable de modos de direccionamiento Los formatos de las instrucciones tienen longitudes diferentes Hacer la ejecución eficiente 9 Operaciones complejas en micromicro-código Soporta lenguajes de alto nivel más complejos El costo del software excede los costos del hardware Cada vez más lenguajes de alto nivel complejos Huecos en la semántica Los diseños RISC pueden sacar provecho de la inclusión de algunas características CISC y los CISC sacar provecho de algunas características RISC Ejemplos: PowerPC y Pentium Plataformas Operativas CPU 51 Filosofía de diseño CISC Complex Instruction Set Computer CPUs con un conjunto de instrucciones bastante amplio. 9Reducción de Código en Memoria. Operaciones complejas entre operandos ubicados en registros y memoria. 9Ventaja Ventaja:: Facilidad de programación. 9Desventaja Desventaja:: Memoria externa. Aceptan muchos modos de direccionamiento. direccionamiento. 9Ventaja Ventaja:: Facilidad de programación. 9Desventaja Desventaja:: No comúnmente usados por el compilador. José Mª González Ríos Informática – 2007/2008 52 26 09/03/2008 Filosofía de diseño CISC Una instrucción, múltiples operaciones de bajo nivel. 9SUMAR ($00) + ($03) y guardarlo en $07 CPU $03 $00 $07 Bus de Direcciones Control y ALU $10+$1A=$2A $10+$1A $10 Bus de Datos $00 $01 $02 $03 $04 $05 $06 $07 $1A $10 $2A José Mª González Ríos $10 $2E $89 $1A $3E $5F $2E $30 $2A Memoria 8‐Bits $07 $00 $03 Informática – 2007/2008 53 Filosofía de diseño CISC Complex Instruction Set Computer Una sola instrucción: Operando A Resultado Operando B Tomar datos de memoria principal José Mª González Ríos Operación Informática – 2007/2008 Llevar resultado a memoria principal 54 27 09/03/2008 Familia INTEL: en el inicio … El primer microprocesador de la historia, aunque hay alguna disputa al respecto, fue el 4004, creado por Intel a petición de un fabricante de calculadoras japonés, pero que al final no se llegó a usar, era un micro de 4 bits y fue diseñado a finales del año 1971. El sucesor del 4004 fue el 8008, diseñado al año siguiente, ya era un procesador de 8 bits, pero tampoco tuvo gran difusión. El primer procesador que se empleo en grandes cantidades fue el 8080, fabricado el año 1974, tenía un bus de datos de 8 bits, un bus de direcciones de 16 bits y 7 registros de 8 bits de propósito general, más el contador de programa, puntero de pila y registro de flags flags.. Funcionaba a 2MHz. El primer procesador de la familia 80x86 fue el 8086, fabricado el año 1978, era ya un procesador de 16 bits, que tenía un bus de datos de 16 bits, un bus de direcciones de 20 bits y 7 registros de 16 bits de propósito general, además de los consabidos PC (que rebautizaron como IP), SP y flags. flags. Funcionaba a 5MHz y posteriormente a 8MHz José Mª González Ríos Informática – 2007/2008 55 Familia INTEL: 8088 Un año después apareció el 8088, idéntico al anterior, salvo por tener un bus de datos de 8bits, lo que lo hacía muy apropiado para construir un ordenador personal, ya que para manejarlos periféricos podía ayudarse por los chips de 8 bits desarrollados para los microprocesadores de 8 bits como el 8080, por ello fue el elegido por IBM para construir su ordenador IBM PC,PC/XT, portátil y en el PCjr (PC Junior). La velocidad también se mantuvo en 5 y 8 Mhz. El siguiente miembro de la familia, el 80186, ha pasado por el mundo del PC, prácticamente desapercibido. Suponía respecto a sus predecesores, un aumento de velocidad pequeño y no rentaba su fabricación para las mejoras conseguidas, por lo que se instaló en muy pocos aparatos. Sus buses de datos y de direcciones eran iguales que en los micros anteriores. También existió el 80188. José Mª González Ríos Informática – 2007/2008 56 28 09/03/2008 Familia INTEL: 80286 El 80286 fue un avance importante en la historia del PC, comercializándose a mediados del año 1.984 bajo el modelo AT y todos los compatibles con él. Es un microprocesador que trabaja con un bus de datos de 16 bits, con un bus de direcciones de 24 bits (por lo que puede trabajar con una capacidad de memoria de 16Mb) y una velocidad de reloj que oscila entre 8 y 16Mhz. Además de la mejora de velocidad (superior a lo que indican los MHz del reloj), introdujo un nuevo modo de funcionamiento, el modo protegido, el modo compatible con el 8086 se llamó modo real. El modo protegido estaba diseñado para trabajar en multitarea. El 80286 tiene varios fallos, el primero y principal es que los programas diseñados para funcionar en modo real no pueden hacerlo en modo protegido y viceversa, además el aumento de memoria, la multitarea, la memoria virtual, etc. es sólo posible para los programas en modo protegido. Además, seguía empleando segmentos de 64Kb, lo cual es tolerable en un micro como el 8086 pensado para la monotarea, pero no lo es como el 80286, y para colmo, el procesador arranca en modo real, tiene una instrucción que permite pasar a modo protegido, pero olvidaron poner una instrucción para volver a modo real. Por todo ello el modo protegido es prácticamente inútil y el 80286 se queda en un 8086 más rápido. José Mª González Ríos Informática – 2007/2008 57 Familia INTEL: 80386 El año 1985 INTEL empezó la fabricación del 80386, que pasaría a denominarse posteriormente 386DX, en este caso las mejoras eran importantes, lo fundamental es que extendió el bus de datos, el de direcciones y los registros a 32 bits, ahora se podía direccionar toda la memoria, que en este caso es nada menos que 4Gb, sin necesidad de segmentos. Además la velocidad pasó a ser entre 16 y 40 MHz y el modo protegido, único en el que se puede acceder a las mejoras de memoria, se hizo más compatible con el modo real: no sólo incluyeron la instrucción para volver a modo real, sino que hicieron que los programas diseñados para modo real pudieran funcionar en un submodo del modo protegido, el modo V86, pudiendo ejecutarse en multitarea varios de ellos o con programas diseñados para el modo protegido. Por alguna extraña razón, IBM en principio no empleó este micro en sus ordenadores y hubo que esperar a la llegada de los PS/2 para verlo en modelos de IBM. José Mª González Ríos Informática – 2007/2008 58 29 09/03/2008 Familia INTEL: 386SX Tres años más tarde del lanzamiento del 386DX, Intel sacó al mercado el 386SX, para competir con AMD que fabricaba micros 80286 más rápidos y baratos que los de Intel. Básicamente el 386SX es un 386DX por dentro y un 80286 por fuera, es decir, tiene todas las características del 386DX, pero se ha reducido el bus de datos a 16 bits y el de direcciones a 24,lo que permite emplear como chips de apoyo los mismos que para el 80286 y sin embargo tener un auténtico micro de 32 bits. El siguiente de la serie fue el 486DX, básicamente igual al 386DX, pero con el coprocesador y 8Kb de memoria caché incorporada en el chip. Los modelos anteriores disponían de un compañero llamado 8087, 80287, 80387 que permitía realizar operaciones en coma flotante, ya que el procesador sólo es capaz de operar con enteros, en el caso del 486DX no era ya necesario, pues estaba incluido en el propio procesador. La memoria caché era en este modelo casi imprescindible, era el primero que se acercaba a los procesadores RISC, era capaz de ejecutar algunas de sus instrucciones en tan sólo un ciclo de reloj, y para poder hacer eso se necesita tener los datos en el propio procesador, sin necesidad de ir a buscarlos a la memoria. Empezó a funcionar a 20MHz y llegó hasta los 50MHz José Mª González Ríos Informática – 2007/2008 59 Familia INTEL: 486 Posteriormente y de modo análogo al caso del 386SX, Intel sacó una versión reducida del 486DX, llamada 486SX, a la que se le había quitado el coprocesador. También comercializó un 487SX, que era en realidad un 486DX que además desactivaba el 486SX junto al que se instalaba. Posteriormente aparecieron los 486DX2 y 486SX2, eran iguales que sus homónimos sin el 2, pero internamente doblaban la velocidad del reloj; así el 486DX2 486DX2--66 funcionaba internamente a 66MHz y externamente a 33MHz igual que el 486DX486DX-33, con ello y gracias a los 8Kb de memoria caché interna casi duplicaba el rendimiento de un 486DX486DX-33. Más adelante aparecieron modelos 486DX4 que en realidad multiplicaban por 3 la frecuencia externa de funcionamiento, es decir un 486DX4486DX4-100 funcionaba a 33MHz por fuera y a 100MHz por dentro, AMD llegó incluso a fabricar 486DX5486DX5-133 que funcionaban a 33MHz por fuera y 133MHz internamente. José Mª González Ríos Informática – 2007/2008 60 30 09/03/2008 Familia INTEL: Pentium En sus batallas legales con Cyrix y AMD para que no pudieran usar el mismo nombre en los procesadores compatibles que fabricaban, no consiguió que le dejaran usar los números 386, 486, etc. como marca registrada, por tanto cambió la numeración por una palabra como Pentium que sí le fue posible registrar como marca. Por eso los procesadores compatibles Pentium de Cyrix se llaman 6x86 y los de AMD K5 y K6.Los primeros Pentium aparecieron el año 1991 y funcionaban a 60 y 66MHz (tanto interna como externamente), las mejoras más significativas de los mismos eran: un bus de datos de 64bits, un tamaño doble de la cache interna, pasando a 16Kb, 8Kb para datos y otros 8Kb para código, una unidad doble de operaciones con enteros, lo que le permite ejecutar simultáneamente 2 instrucciones por ciclo de reloj (es lo que se llama superescalar)) y diversas mejorasen el rendimiento, como superescalar predicción de saltos, etc. José Mª González Ríos Informática – 2007/2008 61 Familia INTEL: Pentium Los siguientes microprocesadores fueron: El Pentium Pro, que cuenta en su interior no sólo con la cache L1, sino también con 256 o 512Kb de caché L2, Utilizó encapsulado distinto del Pentium. El Pentium MMX, que incorpora 57 nuevas instrucciones que operan con varios enteros a la vez, utilizando para ello los 64 bits de la mantisa de los registros del coprocesador, que pueden dividir en 8 registros de 8 bits, 4 de 16 o 2 de 32 y operar simultáneamente con ellos. Utilizó el mismo encapsulado que el Pentium y se fabricó hasta 233 MHz (velocidad interna, la velocidad externa era 66 MHz). El Pentium II, que es básicamente un Pentium Pro con instrucciones MMX. El Pentium MMX se fabrica hasta 233MHz y el Pentium II hasta 450MHz. Como en el caso de los 486 estas velocidades son internas, externamente funcionan a 66MHz o a 100MHz (Pentium II, desde el 350MHz). José Mª González Ríos Informática – 2007/2008 62 31 09/03/2008 Familia INTEL: Pentium III El Pentium III se lanzó 28 de febrero de 1999 con velocidades de 450, 500 y 550MHz, aunque posteriormente alcanzó 1 GHz. Este procesador de Intel no descubre ninguna arquitectura innovadora: simplemente, se trata de un Pentium II modificado para emplear un conjunto de 70 nuevas instrucciones para la aceleración de gráficos 3D, reproducción de vídeo y sonido digital, tratamiento de imágenes y reconocimiento de voz. Otra característica, que provocó cierto revuelo entre los consumidores y algunos medios informativos, fue la inclusión en cada procesador Pentium III de un número de serie único. El número de serie lo leía el software con el fin de utilizarlo para didiversos fines como, por ejemplo, realizar una identificación de un usuario en una red local o en Internet. Levantó airadas críticas entre los grupos defensores de la privacidad de los usuarios de Internet, por lo que Intel decidió que dicha característica se deshabilitará por defecto en los Pentium III de nueva fabricación y que fuera el usuario quién la activara mediante un software diseñado para tal efecto. José Mª González Ríos Informática – 2007/2008 63 Familia INTEL: Pentium iv Este chip es de diseño totalmente nuevo. La mayor ventaja con respecto al anterior es que se ha aumentado la longitud de la pipeline, lo que permite alcanzar mayores velocidades de reloj (cada instrucción se ejecuta en más etapas, cada una de ellas más sencilla), el inconveniente es que cuando falla una predicción de salto la penalización es mayor, por eso a igualdad de velocidad, es más lento que el Pentium III. Para la sorpresa de la industria informática, el Pentium 4 no mejoró el viejo diseño P6 según las dos tradicionales formas para medir el rendimiento: velocidad en el proceso de enteros u operaciones de coma flotante. flotante. La estrategia de Intel fue sacrificar el rendimiento de cada ciclo para obtener a cambio mayor cantidad de ciclos por segundo y una mejora en las instrucciones SSE. Al igual que los demás procesadores de Intel, el Pentium 4 se comercializa en una versión para equipos de bajo presupuesto (Celeron), y una orientada a servidores de gama alta (Xeon (Xeon), ), además del normal. José Mª González Ríos Informática – 2007/2008 64 32 09/03/2008 Familia Intel: Doble, dual, quad quad,, … Doble Procesador Intel tiene cuatro variantes con doble procesador del Pentium 4. La primera es denominada Paxville Paxville,, que consiste en poco más que dos procesadores Prescott colocados en el mismo substrato. Le seguirá , situándose el más básico de los Core2 Duo (E4300, 1,86 GHz) por encima del más potente de los Pentium D (965 EE, 3,73 GHz). Esto se debe a que la arquitectura Core 2 Duo es muy eficiente, realiza mucho más trabajo por clock que NetBurst (Pentium 4); asemejándose al K8 (Athlon 64) de AMD en este sentido... DualCore y QuadCore Intel a principios de 2006 presenta sus últimos procesadores orientados a negocios, diseño, juegos, con procesadores de dos y cuatro núcleos y velocidades de 1,7; 1,8; 2,1; 2,4; 2,5 Ghz. Aunque los precios del procesador de 4 núcleos ((QuadCore QuadCore)) aún es muy alto es la muestra clara de que Intel seguirá al futuro incrementando los núcleos del procesador para aumentar velocidad y rendimiento multimedia. En Mayo de 2007 en televisión vía satélite Intel presento un equipo que incluía un procesador de 80 núcleos que, según los informantes del evento es el prototipo de los procesadores Intel para 2012. José Mª González Ríos Informática – 2007/2008 65 Familia INTEL 80x86 José Mª González Ríos Informática – 2007/2008 66 33 09/03/2008 Familia Intel 80x86: otras consideraciones José Mª González Ríos Name Date Transistors Microns Clock speed 8080 1974 6,000 6 Data width MIPS 2 MHz 8 bits 0.64 5 MHz 16 bits 8-bit bus 0.33 1 8088 1979 29,000 3 80286 1982 134,000 1.5 6 MHz 16 bits 80386 1985 275,000 1.5 16 MHz 32 bits 5 80486 1989 1,200,000 1 25 MHz 32 bits 20 Pentium 1993 3,100,000 0.8 60 MHz 32 bits 64-bit bus 100 Pentium II 1997 7,500,000 0.35 233 MHz 32 bits 64-bit bus ~300 Pentium III 1999 9,500,000 0.25 450 MHz 32 bits 64-bit bus ~510 Pentium 4 2000 42,000,000 0.18 1.5 GHz 32 bits 64-bit ~1,700 bus Pentium 4 "Prescott" 2004 125,000,000 0.09 3.6 GHz 32 bits 64-bit ~7,000 bus Informática – 2007/2008 67 Familia INTEL 80x86 José Mª González Ríos Informática – 2007/2008 68 34 09/03/2008 Familia INTEL 80x86 José Mª González Ríos Informática – 2007/2008 69 Familia INTEL 80x86 José Mª González Ríos Informática – 2007/2008 70 35