Arquitectura de Procesadores I Introducción a los microprocesadores Historia Que es un microprocesador ? Es un circuito digital generalmente bastante complejo que realiza procesamiento de datos, las operaciones que se llevan a cabo durante dicho procesamiento son controladas por lo que se denomina un programa, este último, es el que le indica al microprocesador exactamente que es lo que tiene que hacer, por ejemplo, leer un dato de un teclado y mandarlo a una pantalla de cristal liquido o tomar dos valores de la memoria, sumarlos y poner este resultado en la misma. Figura 1: Oblea Los microprocesadores han cambiaron la forma en las que se realizaban las operaciones de tratamiento de información, y desde que aparecieron en los años 70 no han dejado de evolucionar, el primer microprocesador fue el 4004 desarrollado por Intel el cual era muy limitado pues sólo sumaba y restaba datos de 4 bits. El 4004 fue el microprocesador que le dio vida a una de las primeras calculadoras electrónicas. Intel lanzo posteriormente, en 1971 el 8008, el que sería el primer microprocesador de 8 bits, luego en 1973 saca al mercado el 8080, microprocesador que se utilizaría Figura 2: El 4004 en la construcción de las primeras computadoras para el hogar, el aspecto físico de este procesador se muestra en la figura . Unos años después, en 1978, Intel lanzó el famoso 8086 y un año y medio más tarde el 8088 con los cuales se puso en el mercado Figura 3: El 8080 el IBM PC que apareció en 1982, con esto Intel estaría en la mayoría de computadores personales hasta llegar al Arquitectura de Procesadores I Pentium IV que es ampliamente utilizado en los computadores de escritorio actuales (2006). En la tabla siguiente se muestra la evolución histórica de los procesadores de Intel: Nombre Fecha Transistores Tecnología Frecuencia Ancho de de del reloj los datos fabricación MIPS 8080 1974 6,000 6 2 MHz 8 bits 0.64 8088 1979 29,000 3 5 MHz 16 bits 8-bit bus 0.33 80286 1982 134,000 1.5 6 MHz 16 bits 1 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 bus ~1,700 Pentium 4 "Prescott" 2004 125,000,000 0.09 3.6 GHz 32 bits 64-bit bus ~7,000 Arquitectura: Características de un sistema que son visibles por el programador e influyen de manera directa en la forma en la que se ejecuta un programa. Organización: Las unidades funcionales y las interconexiones que existen entre ellos para realizar una arquitectura. Arquitectura de Procesadores I Organizaciones Existen hoy en día varios tipos de organizaciones, las más conocidas son Harvard y Von Neumann. Von Neumann. Consiste de 5 componentes básicos: • Unidad de memoria. • Unidad de Entrada. • Unidad de Salida. • Unidad aritmético – lógica. • Unidad de control. Figura 4: Organización Von Neumann Se fundamenta en: • Concepto de programa almacenado. • Programa y datos en la misma memoria. • Los Programas se manejan como datos ( dando lugar a la aparición de los compiladores y los sistemas operativos). Arquitectura de Procesadores I Este modelo original ha sido modificado en lo que se llama organización basada en buses, tal y como se muestra a continuación. La anterior organización es la que se mantiene aunque con algunos refinamientos en los computadores actuales. Hardvard Esta organización es muy parecida a la Von Neumann, con la diferencia que existen buses separados para los diferentes elementos del sistema. Arquitecturas. Las mas ampliamente difundidas son: • Risc, Conjunto reducido de instrucciones. Son procesadores con instrucciones simples y cortas, dando como resultado una gran velocidad de ejecución. Algunos ejemplos de procesadores de este tipo son el 68000 de Motorola y las cpu's que utilizan los microcontroladores PIC. • Cisc, Conjunto completo de instrucciones. Procesadores complejos internamente, con muchas instrucciones para el programador, haciéndolos muy flexibles al programarlos. Ejemplos de estos son los de la familia Intel. Antes de continuar con los la descripción detallada de un sistema basado en microprocesador, veamos un ejemplo. Suponga como se menciono antes, que se desea sumar dos números, seguiremos la secuencia paso a paso que realiza el procesador para Arquitectura de Procesadores I realizar dicha tarea de una manera muy superficial, pero que nos dará una idea básica sobre el comportamiento de los microprocesadores (posteriormente abordaremos el ejemplo de una manera más detallada) 1. El procesador esta leyendo constantemente su entrada, ejecutando una instrucción de entrada de datos constantemente (IR=leer entrada). 2. Se presiona la tecla 2. • La unidad de control lee el valor de entrada y lo almacena en el registro A . Arquitectura de Procesadores I 3. Se presiona la tecla 3. • La unidad de control lee el valor de entrada y lo almacena en el registro B . 4. Se presiona la tecla +. • La unidad de control ordena a la ALU a ejecutar la suma entra A y B, y almacenar el resultado en el registro A. Arquitectura de Procesadores I 5. Se presiona la tecla =. • La unidad de control envía el dato que hay en el registro A a la salida. Los buses Imagine se necesita conectar la salida de un registro de datos a la entrada de dos registros más, de tal modo que estos últimos puedan tomar los datos del primero, ¿de qué modo se conectan dichos elementos? Ahora imagine cómo sería el proceso inverso, es decir, que fuese necesario, que dos registros sean fuentes de datos de un tercero, esto es, si A,B y C son registros, se desea que en un tiempo t0 el dato que hay en A se transfiera a C y posteriormente en otro tiempo t1 el dato que hay en B sea trasferido a C, las dos operaciones anteriores las denotaremos C<-A y C<-B respectivamente. Para realizar estas transferencias entre registros, podemos optar por el uso de multiplexores tal y como se muestra a continuación: Arquitectura de Procesadores I Figura 6: Operación C<-B Figura 5: Operación C<-A Se ha utilizado un multiplexor para controlar cuál es el dato que se almacena en el registro C, esto se logra por medio de la señal de control C1, la señal ld C en su flanco de subida, se utiliza para cargar el dato en el registro C. Veamos un ejemplo un poco más complejo, supongamos que queremos realizar conexiones bidireccionales entre los tres registros, dotando al sistema de la posibilidad de intercambiar información entre todos los registros, así: A C B Figura 7: Ejemplo de canales dedicadas Arquitectura de Procesadores I La forma de implementar el diagrama de la figura 7 se muestra a continuación: Figura 8: Implementación con canales dedicados Como puede verse en la figura, cada elemento puede enviar datos a los otros dos, por medio de los multiplexores conectados a su salida. Realicemos las operaciones C<-A, A<B, la secuencia que deben seguir las señales son: • Seleccionar la entrada de C como A y la de A como B, así: Arquitectura de Procesadores I • Activar las líneas de carga de los registros destino, ld_C y ld_A, en ese orden, pues A es fuente de una de las operaciones y destino de la otra. Las siguientes dos figuras muestran el proceso: La forma anterior de conectar elementos de un sistema no es la única que se puede usar, existe otra posibilidad, el uso de buses, con ellos el número de elementos necesarios para construir el sistema se reduce debido al no uso de multiplexores. Un bus es una conexión compartida por múltiples elementos para transmitir y/o recibir datos. Vemos la misma conexión de los registros anteriores realizada con buses. Arquitectura de Procesadores I Figura 9: Conexión en bus En la figura 9 se muestra que para formar el bus, se agregaron buffer's triestado a las salidas de los registros y se conectaron, puede observarse que como no hay ninguna señal oe activa el bus aparece en estado de alta impedancia (color naranja). Cuando es necesario poner un dato en el bus se activa al señal oe del registro correspondiente, como se muestra a continuación Figura 10: Dato en el bus Ahora si queremos realizar alguna operación de transferencia como por ejemplo A<-B, podemos hacer la siguiente modificación al circuito. Arquitectura de Procesadores I Para realizar la transferencia mencionada se activa la señal ld_A, mientras en el bus está el dato correspondiente al registro B. Figura 11: Transferencia A<-B Es necesario aclarar que para que no existan conflictos con los datos que aparecen en el bus la sincronización de las señales debe ser cuidadosa, pues podría crearse un corto circuito entre las salidas de los buffer's estropeándolos. Para implementar el sistema tal y como se planteo solo hay que conectar la entrada de todos los registros al bus. Figura 12: Arquitectura de Procesadores I Buses del sistema Como se había mencionado antes, en un sistema basado en procesador generalmente aparecen los siguientes buses: 1. Bus de datos: Utilizado para que el microprocesador intercambie información con otros elementos del sistema y en algunos casos entre dispositivos. 2. Bus de direcciones: Usado para indicar cuál es el elemento que con el que se realizará la transferencia de datos. 3. Bus de control: Indica la dirección, tipo y otras características de la operación de transferencia. Para la explicación del funcionamiento de los buses de un sistema basado en procesador es necesario tener claro como funcionan los elementos básicos de almacenamiento, las memorias