UNIVERSIDAD DE MATANZAS “CAMILO CIENFUEGOS”. FACULTAD DE INGENIERÍAS QUÍMICA Y MECANICA. INTRODUCCION A LOS MICROPROCESADORES Dr. C.T. Ing. Evaristo González Milanés. DICIEMBRE, 2003 INTRODUCCION A LOS MICROPROCESADORES Autor: Dr. Evaristo González Milanés Dpto. Física Universidad de Matanzas. INTRODUCCIÓN. Los microprocesadores han venido a ser el resultado del desarrollo en el camino emprendido por la Electrónica Digital hacia la miniaturización, primeramente implementando una unidad de procesos completa en una sola pastilla o chip de circuito integrado, y posteriormente, mediante el aumento de la rapidez, capacidad de trabajo y potencia de dicha unidad. La aparición de los microprocesadores (MP) representa el siguiente punto de salto en la electrónica después del ocurrido con la invención del transistor, y la tecnología de su construcción avanza tan rápidamente que prácticamente ha revolucionado en corto tiempo el desarrollo de múltiples campos de la ciencia y la técnica, a la vez que se introduce de manera convincente en nuestra vida doméstica, siendo difícil mencionar una rama o campo de la ciencia en la cual no exista una aplicación de los microprocesadores. De hecho, cada día aumenta el número de instrumentos, sistemas de control de procesos, medios y equipos para las telecomunicaciones, medicina, servicios públicos e incluso juguetes, que emplean dentro de su estructura algún tipo de MP, sin entrar a considerar el hecho real de la introducción, divulgación y aceptación que han tenido las nuevas generaciones de computadoras digitales basadas en este componente y que son conocidas por nosotros como microcomputadoras. Es difícil predecir qué pasará en la electrónica en los próximos años, pero de acuerdo con la opinión de personalidades de esta rama, la influencia de los MP en el futuro será cada vez mayor y de ahí la importancia de preparar a los profesionales encargados de su aplicación y desarrollo, y de que a su vez, los graduados de nivel superior posean conocimientos elementales que les permitan ganar en la cultura general necesaria que sirva de base a un conocimiento mayor de la aplicación específica en el campo en que desarrollarán su vida profesional . Este material no es más que un primer intento para cubrir la limitación de información que sobre este tema presenta el texto que se emplea en la asignatura Electrónica, que se imparte a las carreras de Ciencias Técnicas, permitiendo a los estudiantes disponer de forma condensada de los contenidos relacionados con esta temática previstos en dicha asignatura. 1 1-)Computadora Digital. Una computadora digital puede entenderse como un sistema que explora secuencialmente una información almacenada llamada programa, interpreta este programa y lo ejecuta. Para ello el sistema dispone de un HARDWARE, o sea, de una constitución física conformada por circuitos integrados interconectados sobre tarjetas de circuito impreso agrupadas en elementos funcionales de características definidas que conforman la MEMORIA, la UNIDAD de CONTROL, la UNIDAD LOGICO-ARITMETICA y las UNIDADES de ENTRADA-SALIDA. Simultáneamente dispone de un soporte no físico sino operativo, de un método de diálogo y por tanto de aceptación de órdenes, y de generación de mensajes. Ello lo constituye el conjunto de instrucciones al cual responde directamente, y es un elemento que caracteriza a cada computadora, y que recibe el nombre de SOFTWARE básico. El SOFTWARE no se limita al conjunto de instrucciones, sino que incluye también programas inteligibles por el computador, por tanto escritos de acuerdo con el SOFTWARE básico y que permiten interpretar programas escritos con lenguajes más evolucionados. El programa lo constituye un listado detallado de operaciones a desarrollar por la computadora en un orden consecutivo y lógico y es escrito en un lenguaje que sea comprensible para la máquina y que por tanto permita alcanzar ciertos resultados. El programador, atendiendo al lenguaje de la máquina que lo ocupa, al problema específico y a las operaciones simples que la máquina puede realizar, confecciona el listado de instrucciones (órdenes), a través de las cuales especifica la operación que debe ejecutar y la ubicación del o de los operandos sobre los que ejecutará la acción indicada. Este programa se carga (almacena) en la memoria en el orden secuencial previsto, constituyendo cada instrucción un grupo de 1 y de 0 que caracteriza o define una operación y no a otra. A esta representación binaria de las instrucciones de una computadora se le llama lenguaje de máquina o código de máquina. Los programas que pueden ser directamente ejecutados por una computadora digital están pues almacenados en lenguaje de máquina, no obstante, confeccionar programas en lenguaje de máquina resulta una tarea laboriosa y compleja, por lo que surgió el interés de crear lenguajes más asequibles para el ser humano y que tuviesen una cierta relación con la manera con que aquél especifica las operaciones de un proceso de información. De esta forma nació el lenguaje simbólico (assembler), que sustituye las combinaciones binarias del lenguaje de máquina por nombres simbólicos que hacen referencia a la operación que realiza la computadora cuando ejecuta la instrucción correspondiente. Cada instrucción del lenguaje simbólico es equivalente a una instrucción del lenguaje de máquina. Aunque el lenguaje simbólico es más fácil de manejar que el de máquina, todavía dista bastante del utilizado por el ser humano para expresar los procesos de información, en especial las operaciones complejas que implican la ejecución de un número elevado de operaciones elementales en secuencia. Por ello se crearon lenguajes 2 de alto nivel que permiten especificar más fácilmente los procesos de información, donde cada instrucción se convierte posteriormente en un conjunto de instrucciones en lenguaje de máquina. Tanto el lenguaje simbólico como los de alto nivel, hicieron necesario el desarrollo de programas que al ser ejecutados por un computador tradujeran los programas escritos en aquellos al lenguaje de máquina. Estos programas traductores se conocen con el nombre de compiladores y realizan la traducción al lenguaje de máquina para la totalidad del programa de una sola vez. Esta versión traducida del programa escrito en un lenguaje de alto nivel (llamado programa fuente), se denomina programa objeto, y puede transferirse a la memoria y ejecutarse directamente. Los programas intérpretes utilizan otros principios de funcionamiento. Cada instrucción escrita en el programa fuente le indica al intérprete un conjunto de acciones que debe cumplir sin que medie un programa objeto en código de máquina. La principal ventaja de un intérprete es que permite fácilmente probar y poner a punto el programa. Tanto el programa intérprete como el programa fuente permanecen en la memoria durante la ejecución del programa, lo cual generalmente ocupa una mayor capacidad de memoria, y no se posee un programa objeto en código de máquina para su posterior concatenación con cualquier programa. Posteriormente surgió la combinación de intérprete y compilador en un solo paquete de programas, pudiendo aprovecharse las ventajas de ambos sistemas, como es el caso del TURBOBASIC, TURBOPASCAL, etc. 1.1-Generaciones de computadoras digitales . Desde la creación de las primeras computadoras digitales en el año 1947, se han sucedido diferentes generaciones o estadios de desarrollo tanto a nivel de HARDWARE como a nivel de SOFTWARE. En las llamadas primeras generaciones se utilizaron tubos de vacío como elementos lógicos y como memorias se utilizaron tambores magnéticos, el SOFTWARE aún no se llamaba así y era muy primario, a nivel de lenguaje-máquina y de tímidos ensayos simbólicos. En la 2da generación, hacia 1956, se utilizaron ya transistores de germanio y, posteriormente de silicio (el transistor se había inventado en 1947 y se había industrializado pocos años después.) por la parte lógica, la memoria ya fue de ferritas y se continuó usando memoria exterior de tambor, discos y cintas magnéticas; el SOFTWARE era el mismo de la anterior generación, pero incluía ya compiladores fortran aún bastante primarios, aunque fueron mejorando con el tiempo. El primer gran cambio de los lenguajes se produjo pues, en esta generación. Mientras hasta entonces los programas en lenguaje-máquina o en lenguaje simbólico debían ser escritos para una máquina concreta puesto que eran orientados a las máquinas, a partir de entonces fueron orientados al problema, por lo que el programa era aplicable a cualquier máquina siempre que existiera el traductor (compilador) adecuado a aquella máquina. La tercera generación apareció hacia 1964 simultáneamente con la aparición de las MINICOMPUTADORAS. El hardware era realizado con circuitos integrados RTL y ECL que evolucionaron hasta los TTL en 1966. La MEMORIA continuaba siendo de ferritas y el software llego a su mayoría de edad con lenguajes de alto nivel FORTRAN, COBOL y sobre todo con la aparición de SISTEMAS OPERATIVOS. Fue el momento de la incorporación de las computadoras al control del procesos. 3 La cuarta generación apareció hacia 1971 simultáneamente con la aparición de las MICROCOMPUTADORAS, de las terminales de TELEPROCESOS y solapándose con los lenguajes de más alto nivel (PL1, ALGOL68, BASIC, etc.). 4 1.2) Estructura de una Computadora Digital. La estructura típica de una computadora digital ha sido en las primeras generaciones la que se muestra en la figura. Memoria Salidas Unidad de Procesos Entradas Unidad de Control Esta estructura ha sido la primitiva y ha ido evolucionando variando, no en esencia, sino en forma, hasta llegar a una estructura más moderna, la cual se muestra a continuación: A Bus de direcciones Unidad Unidad de Unidad de Unidad de Unidad de Unidad de Entradas Memoria Procesos Control Salidas Bus de datos D Bus de Control C Puede verse que tanto en una como en otra figura las unidades funcionales son prácticamente las mismas; lo que ha sufrido modificaciones han sido las interconexiones de estas unidades, que modernamente se realizan por BUSES y antes no se realizaban así. Un bus está formado por un grupo de líneas por donde se trasmiten los datos, códigos de instrucción, señales de sincronización y códigos de dirección entre las diferentes unidades funcionales de la computadora de forma paralela lo que permite una alta velocidad de transmisión. La interconexión por buses ha representado un gran ahorro de interconexiones y una simplificación desde el punto de vista estructural. Esta evolución ha sido debida al desarrollo tecnológico que ha permitido obtener sistemas con tres estados lógicos posibles (TRI-STATE): 1 lógico, 0 lógico y 3er estado también denominado estado de alta impedancia, permitiendo que el dispositivo que no esté tomando parte del intercambio de información en un momento dado pueda aislarse. En realidad las líneas del bus se agrupan en tres, de acuerdo con la información que transportan: bus de dirección, bus de datos y bus de control. 5 El bus de datos es bidireccional y por él circulan los datos que llegan o salen de la computadora por las unidades de entrada y salida, así como los datos intermedios que son leídos o almacenados en la memoria .De acuerdo con la longitud de la palabra que es capaz de manejar el bus de datos, se designa la longitud de palabra de la microcomputadora. El bus de direcciones es unidireccional, y con el código binario que aparece en ese bus se selecciona la unidad o dispositivo que trabajará en cada instante. El bus de control está formado por varias líneas donde cada una posee una función muy específica e indica a cada una de las unidades y dispositivos externos la función que debe realizar. Así se logra la sincronización de todos los elementos de la computadora, lo cual queda a cargo de la unidad de control. También sirve para que la CPU reciba ciertas indicaciones de las unidades periféricas. En la figura se distinguen además los siguientes elementos funcionales: unidad de entradas, memorias, unidad de proceso, unidad de control y unidad de salidas. La unidad de entradas no es más que un multiplexor con el que se escoge por el bus de direcciones y el de control cuál de las informaciones presentes se desea traspasar al bus de datos. La unidad de memoria es el almacén tanto de instrucciones como de datos. La unidad de proceso realiza las operaciones aritméticas y lógicas con las informaciones que entran en ella a partir del bus de datos y el de direcciones. Tiene para ello una unidad aritmética lógica (ALU), uno o varios acumuladores, unos registros de indicadores o banderas, así como unos registros rápidos de trabajo (RRT) en los que se almacenan temporalmente los datos que no interesa guardar indefinidamente en memoria La unidad de control es el verdadero cerebro del sistema pues es capaz de tomar decisiones lógicas en el curso de la ejecución de un algoritmo. Es decir, según informaciones, normalmente suministradas por la unidad de procesos sobre el valor de algún resultado, se puede ejecutar una parte u otra del programa, sólo con ir a buscar las nuevas instrucciones a un sitio diferente de la memoria central. En ella se encuentra el contador de programas con su sistema de aritmética de direcciones y el puntero del stack. También se encuentra el registro de instrucciones, decodificador de instrucciones, registros auxiliares, etc. La unidad de salidas recibe por el bus de datos la información a sacar al exterior y por el bus de direcciones la dirección por la cual debe sacar los datos anteriormente mencionados. Generalmente la Unidad de Control y la Unidad de Procesos se agrupan en un solo bloque denominado UNIDAD CENTRAL de PROCESAMIENTO (CPU). 1.3- Elementos básicos de una microcomputadora. Una microcomputadora consta de tres elementos fundamentales: Unidad Central de Procesamiento, la Memoria y las Unidades o Puertos de Entrada/Salida todo ello debidamente interconectado mediante un sistema de buses. Su esquema será entonces el mismo que aparece en la figura anteriormente mostrada, con la unión de las unidades de control y de proceso en un solo bloque llamado CPU. La CPU unifica el sistema controlando las funciones realizadas por los otros componentes. Se conoce bajo el nombre de microprocesador la CPU de la microcomputadora construida en una sola pastilla de circuito integrado (CI) .Al igual que los procesadores de todas las computadoras, el microprocesador puede manejar tanto datos aritméticos como lógicos de forma paralela bajo el control de un programa . Sin embargo lo que los 6 fabricantes ofrecen bajo el nombre de microprocesador varía mucho de uno a otro modelo. En el 8080 por ejemplo, están integrados los bloques de procesos y la mayor parte del control, en el 6800 está completo proceso y control; en el 2650 se incluye además parte de las entradas/salidas, el 8048 es un ejemplo de los microcomputadores en una sola pastilla, pues incluye casi todo lo necesario para constituir un pequeño sistema, y en general, en la medida que se desarrollan los microprocesadores, estos abarcan cada vez estructuras mas complejas. A continuación haremos una descripción más detallada de cada uno de estos elementos de la microcomputadora. 1.3.1 - Unidad de Memoria. En la memoria se almacenan los datos, los resultados y el programa de trabajo en el cual se basará la CPU para regir las actividades a realizar en el sistema. La memoria posee un conjunto de N posiciones numerados desde 0 hasta N-1, direccionables con n bits tal que 2n = N. Por ejemplo con n=16 bits, se direccionan 216 = 65536 posiciones. Si cada una de estas posiciones permite guardar un byte (palabra de 8 bits), podemos decir abreviadamente que con n=16 bits se direccionan 64 Kbytes de memoria siendo 1Kbyte=1024 bytes. La longitud de la palabra que se almacena en la memoria coincide con la longitud de la palabra que es capaz de manejar el bus de datos, puesto que la memoria recibe y entrega información a dicho bus mediante los procesos llamados lectura y escritura . Con ayuda de un esquema pasaremos a describir como se llevan a efecto estos procesos: MEMR MEMW 0 1 . . . NN-1 n 2 =N MAR MDR AB DB CB Cuando la CPU desea hacer una lectura en la memoria, coloca en el bus de direcciones (AB) la dirección de la memoria que se desea leer, y coloca un “1” en MEMR (memory read) del bus de control (CB) . La dirección se transfiere al registro de direcciones de memoria (MAR - memory adresss register) y desencadena el proceso de lectura como resultado del cual al cabo de cierto tiempo de acceso al contenido del registro direccionado, aparece en MDR (registro de datos de memoria - memory data register) y de ahí pasa al bus de datos (DB - data bus). La escritura se realiza de forma similar solo que se coloca un “1” en MEMW (memory write) y en MDR entra el contenido de DB que pasa a escribirse en la memoria 7 En la figura siguiente se muestra un segmento cuyas direcciones están numeradas desde la 83F2H (el está escrito en notación hexadecimal) hasta la 83F9H: Dcion. CONTENIDO (Hex.) 83F2 0 0 1 1 1 83F3 0 1 0 0 0 83F4 1 1 1 1 1 83F5 1 1 0 1 0 83F6 0 1 1 1 1 83F7 0 0 1 0 0 83F8 0 1 0 0 0 83F9 1 1 1 0 1 de 8 localizaciones de memoria sufijo H significa que el número 1 0 1 1 0 0 0 0 1 0 0 0 1 1 0 1 0 1 0 1 0 0 0 1 (3E) (41) (FC) (D5) (7A) (22) (40) (E8) Cada localización de memoria tiene su propio contenido. Por ejemplo, la localización con dirección 83F6H tiene como contenido 01111010, el cual expresado en hexadecimal corresponde a 7AH. Este contenido es el que se entrega al bus de datos en el caso de que sea direccionada esta localización y se diese la orden de lectura. Como se apuntó anteriormente una secuencia de instrucciones que persiguen un propósito determinado constituye un programa. Este programa se almacena en la memoria para ser ejecutado. La CPU lee cada instrucción de dicha secuencia y la utiliza para iniciar acciones de trabajo. La memoria también se usa para almacenar los datos que son manipulados. La CPU puede rápidamente tener acceso a cualquier dato almacenado en la memoria. La capacidad de la memoria que se mide en octetos (bytes), está dada por el número de localizaciones de memoria existentes. En muchas ocasiones se expresa en kilooctetos (Kbyte) y en otras indicando el producto del número de las localizaciones por el número de bits de cada una de ellas. Por ejemplo, una capacidad de 4K x 8 bits indica que la memoria contiene 4096 localizaciones de 8 bits cada una. El tiempo de acceso se define como la demora en tiempo desde el instante que se fija una dirección de memoria hasta que se tiene acceso a la información almacenada (tiempo de lectura), o se completa la modificación de la información almacenada (tiempo de escritura). El acceso aleatorio significa que el tiempo de acceso a una localización de memoria particular es independiente de su dirección. Por último debemos recordar que las memorias en las computadoras se clasifican en general en dos grupos: memorias de acceso aleatorio (RAM) con las cuales se conforma la memoria operativa y memoria de solo lectura (ROM) que integran la memoria permanente (con sus variantes PROM, EPROM, EEPROM, etc.). 1.3.2- Interfaces, puertos o unidades de entrada-salida. Las interfaces de entrada y salida son toda una colección de hardware y de software que permite la comunicación entre la CPU y los dispositivos de entrada y de salida y de hecho con el mundo exterior. La parte correspondiente al software en la interface es llamada protocolo, y formalmente especifica las convenciones que gobierna el formato y la forma de control de las entradas y salidas entre dos sistemas de comunicaciones. Se necesita de la existencia de una interface de entrada debido a que los dispositivos de entrada generalmente no son compatibles con la CPU y por tanto es 8 necesario convertir las señales eléctricas de entrada en un tipo que sea aceptable a esta. Esto también se aplica aunque de forma invertida para el caso de los dispositivos de salida. Físicamente las interfaces de entrada y salida son C.I. extremadamente versátiles en sus funciones los cuales pueden ajustarse mediante la variación de sus software correspondientes. Las tareas más simples son realizadas por los puertos de entrada y salida (PIO). Los PIO pueden ser incluidos como parte integrante del C.I. junto a la CPU o pueden aparecer de forma independiente. En este último caso es un MSI chip (circuito integrado de escala de integración media), que contiene un buffer de registro de direcciones multimodo con salida de tres estados. A través de los puertos de entrada la microcomputadora puede recibir información de cualquier dispositivo externo, como por ejemplo, un teclado de caracteres alfanuméricos, un disco magnético, o las señales provenientes de un proceso industrial o un instrumento médico. A su vez la microcomputadora también requiere uno o más puertos que permitan a la CPU comunicar el resultado de su actividad al mundo exterior. La salida puede ir a un visualizador de televisión, para ser usada por un operador o un impresor para producir una copia legible en papel, también puede estar constituida por señales para el control de procesos que dirijan las operaciones de otro sistema. Tanto los puertos de entrada como los de salida son direccionables, es decir; para trasmitir información hacia el puerto, o recibirla donde esté, es necesario que la CPU envíe previamente un número que lo identifica y que constituye a su vez la dirección del puerto. Dos tipos de entrada-salida se hallan en la computadora en una tarjeta: los puertos de entrada-salida en paralelo y los puertos de entrada-salida en serie. Los PIO paralelos permiten la entrada-salida de datos en forma paralela, es decir, todas las líneas del bus de datos entran o salen a la vez de la microcomputadora, lo que posibilita una transferencia de datos entre la CPU y cualquier equipo periférico a alta velocidad. Los PIO en paralelo más usados son los de tipo programable, es decir, que puede la misma pastilla ser usada como entrada o como salida de acuerdo con el programa de instrucciones que realice el usuario. Ejemplo : El circuito integrado 8255 constituye un PIO programable con E/S Paralelo Tiene 8 terminales de datos que se conectan al bus de datos y 24 terminales de salida que pueden agruparse en tres grupos de 8 bits, ó 4 grupos (2 de 8 bits y 2 de 4 bits). Bus de Datos 8 D0-D7 A0 PA A1 PB Rd Wr 8 8255 8 PB Cs 9 A1 x x 0 0 0 0 1 1 1 A0 x x 0 0 1 1 0 0 1 Rd x 1 1 0 1 0 1 0 1 Wr x 1 0 1 0 1 0 1 0 Cs 1 0 0 0 0 0 0 0 0 D0-D7 en 3er estado D0-D7 en 3er estado D0-D7 → Puerto A D0-D7← Puerto A D0-D7 → Puerto B D0-D7 ← Puerto B D0-D7 → Puerto C D0-D7 ← Puerto C D0-D7 → Palabra de Control De acuerdo con la tabla que se muestra, puede conocerse la combinación que se necesita aplicar a las entradas para producir el traspaso de la información en cualquier sentido entre el bus de datos y las salidas Pa, Pb y Pc. Los PIO serie se emplean cuando se requiere que la transferencia de datos entre los periféricos y la computadora, se realice en forma serie, es decir, bit a bit de cada octeto de dato. Por ejemplo, cuando se trasmiten datos entre dos computadoras a través de una línea telefónica, el formato que se utiliza es el de la transmisión en serie. Como la microcomputadora trabaja con los datos en paralelo, para trasmitir o recibir datos en serie es necesario un PIO que conecte datos de paralelo a serie y viceversa La gran ventaja de la transmisión en serie es que necesita solamente dos alambres para trasmitir todas las señales necesarias entre módulos o sistemas. Por otra parte, la desventaja radica en que el intercambio de datos se realiza a menor velocidad que si fuera en paralelo. Ej.: El circuito integrado 8251. Bus de Datos D0-D7 Rd TxD Salida de Datos Serie RxD Entrada de Datos Serie Wr 8251 Clock Cs 1.3.3- Unidad Central de Procesamiento (CPU). Es el corazón de la microcomputadora, siendo la encargada de unificar el sistema a la vez que controla las funciones realizadas por las otras unidades . 10 Esta unidad es capaz de buscar instrucciones en la memoria, decodificar su contenido y ejecutarlas. Es la encargada de comunicarse con la memoria y con los PID tantas veces como sea necesario durante la ejecución de un programa. La CPU deberá también reconocer y responder a ciertas señales de control externo, tales como solicitudes de interrupción u otras a fines. Lleva en su interior la base de tiempo que genera los ritmos o impulsos de reloj de las diferentes partes del sistema . Todas las instrucciones tienen dos tiempos fundamentales, llamados busca (fetch) y ejecución (execute). El tiempo de ejecución empieza por un subtiempo de decodificación de la instrucción y prosigue con la parte de ejecución que puede tener varios subtiempos , dependiendo del tipo de instrucción. La suma del tiempo de busca y el de ejecución, da lo que se conoce como ciclo de instrucción y el mismo depende no solo del tipo de instrucción sino también de las características de velocidad de la CPU. La CPU realiza también las operaciones aritméticas y lógicas, así como la transferencia entre acumulador, registros de trabajo, etc. Cuando la CPU se fabrica en un solo chip, a dicha estructura como señalamos anteriormente, se le da el nombre de microprocesador. Por la importancia que tienen estos dispositivos, en los epígrafes siguientes de este material se realizará un estudio más detallado del mismo. 2-Microprocesadores. Pocas áreas de la electrónica han experimentado un progreso tan acelerado como el ocurrido en el caso de los microprocesadores, las microcomputadoras y sus circuitos asociados correspondientes. La complejidad de los circuitos integrados prácticamente se ha ido duplicando en cada año a partir de los inicios de la década de los 60. Como consecuencia de este desarrollo, a finales de la década aparecieron los circuitos integrados de gran nivel de integración (LSI) los cuales realizaban funciones de un alto grado de complejidad. Ejemplo de ello fue el desarrollo de unidades lógicoaritméticos (ALU) en un chip, que podían ejecutar muchas de las funciones de las microcomputadoras actuales como son la suma, la resta, rotación y desplazamiento. Sin embargo, no fue hasta 1971 en que fue posible combinar esta unidad (ALU) con circuitos secuenciales tales como flip-flops, registros de desplazamientos y otros elementos, todo dentro de un chip, para dar lugar a un rudimentario microprocesador. La técnica de los microprocesadores implica una unión indisoluble entre el HARDWARE y el SOFTWARE. No será posible la construcción de un sistema completo si no se trabaja en ambos sentidos. Una microcomputadora está compuesta por un microprocesador, circuitos de entrada-salida y las memorias, todo ello unido a los equipos periféricos, estando íntimamente ligada la cantidad de estos elementos con las características de la aplicación particular. El microprocesador es el puesto de mando donde se dirige el proceso de la computadora y en el que ocurre una buena parte de él. De este componente depende la velocidad del proceso, el sistema operativo que se correrá e incluso una importante porción del consumo energético del equipo y del costo del sistema. Está constituido por un chip de silicio cuya área aproximada en dependencia del modelo es de apenas 1.5 cm2 y en este reducido espacio se encuentran dispuestos varios millones de transistores que son los verdaderos actores de procesamiento lógico de la información. Desde el más humilde Intel 4004 que en 1971 trabajaba a 0.2 MHz., hasta el impresionante Pentium 4 de Intel con 3 GHz., todos los MP en esencia hacen lo mismo: 11 reciben la información binaria y la procesan sobre la base de instrucciones predefinidas que generan una nueva información también binaria. El MP reacciona constantemente a las instrucciones, pero no puede hacerlo con todas a la vez, porque estas se atascarían. Ello se resuelve mediante una espera del procesador hasta que se aprueba la recepción de la señal. El reloj del sistema determina el tiempo de espera. A espacios definidos de tiempo, el reloj envía impulsos eléctricos que marcan al sistema el rango de estas esperas. Si una instrucción se halla en espera y el procesador no está ocupado con instrucciones previas, le da entrada y trabaja con ellas. El número de instrucciones que el MP puede procesar por cada una de estas pulsaciones de reloj (ciclos) dependerá del diseño o arquitectura del mismo. En sus inicios las CPU podían manejar una sola instrucción por ciclo, pero en la actualidad esa cifra se ha incrementado notablemente a partir de dos concepciones aplicadas a la construcción de esos sistemas: la canalización y la ejecución superescalar. La canalización permite que el procesador lea una nueva instrucción de la memoria antes de terminar la fase de la instrucción en curso. Algunos de los modernos MP pueden trabajar simultáneamente con varias instrucciones. La profundidad del canal será la medida del flujo de datos que puede aceptar el sistema. Digamos por ejemplo que el 80486 tiene una profundidad de canal de 4, o sea, que hasta 4 instrucciones pueden encontrarse en distintas etapas de canalización, ya en el pentium esa cifra es de 5 y crece en el diseño de CPU con tecnología MMX y otros equivalentes como el K6 y en superiores como el pentium II. La ejecución superescalar significa que el sistema posee más de un canal, lo que significa que puede procesar más de un grupo de instrucciones a la vez. Si bien técnicamente esto debería multiplicar el desempeño, en la práctica no es exactamente así, pues ocurre que un canal espera a que termine el otro. No obstante, en términos prácticos optimiza el funcionamiento del procesador. En la historia de los MP han existido dos filosofías de diseño: la CISC y la RISC. CISC (Complex Instruction Set Computing), creada por IBM como un software sencillo almacenado en el chip y que contenía las instrucciones para el procesador, permitió salvar el escollo que representó la complejidad sucesiva de las aplicaciones de software que en otras circunstancias habría llevado al cambio constante del hardware en función de los programas. Al ejecutarse, los programas CISC ocupaban menos espacio en memoria y esta última valía en los años 60 y 70 más que el oro. CISC se incluye en los procesadores Mainframe de IBM, los Motorola 680X0 y es emblemático de los procesadores Intel, principalmente de los X86 y todavía se utiliza en los pentium actuales. En el diseño RISC (Reduced Instruction-Set Computing), existen menos instrucciones, cada una tiene una longitud de 32 bits y se ejecuta en un solo ciclo de reloj. Con esta arquitectura, los procesadores incorporan una caché de memoria de alta velocidad en la que se almacenan la secuencia de instrucciones a ejecutar. El uso eficaz de tales datos depende en gran medida de la canalización, que en esta arquitectura adquiere un protagonismo indiscutible. Bajo esta concepción se desarrollaron algunas de las CPU más poderosas en la actualidad tales como los Power PC de Macintosh, incluido el célebre 750, más conocido como G3, los alpha de las estaciones Silicon Graphics y los SPARC de Sun Microsystem. Incluso hasta unidades tan sencillas como las máquinas de juego Nintendo, poseen en su interior uno de estos dispositivos. Por sus innumerables aplicaciones los microprocesadores han invadido los más diversos campos de la ciencia y la técnica, abarcando desde complejos sistemas de control o de computo hasta sencillos equipos electrodomésticos o de juguetería, 12 incluyendo sistemas de comunicación de datos, diagnóstico médico, control numérico de máquinas herramientas y otros. Dentro de las ventajas de los sistemas con los microprocesadores podemos señalar las siguientes: a-) Pueden realizar muchas operaciones por software, en lugar de usar componentes electrónicos. b-) Reducción del tamaño, no sólo del microprocesador, sino del resto de los circuitos que lo complementan. c-) Aumento de la fiabilidad, ya que disminuye el número de componentes. d-) Flexibilidad en el diseño. e-) Disminución de los costos tanto en diseño, como de la producción y reparaciones. En cuanto a las desventajas mencionaremos: a-) El aprendizaje del software, pues cada microprocesador posee un juego de instrucciones a las cuales responde. b-) Los métodos difíciles de prueba que deben hacerse a la velocidad de trabajo del microprocesador. 2.1) Estructura típica de un microprocesador de 8 bits. ( ver esquema anexo). Aún el microprocesador más simple presenta una estructura compleja, pues en ella se encuentran un gran número de nudos y unidades tales como sumadores, decodificadores, registros de todo tipo, flip-flops, esquemas lógicos, etc. Por otra parte, la rapidez, potencia y complejidad de estos dispositivos se perfeccionan más cada día, por lo cual no es posible en un material de este tipo efectuar un estudio profundo de este aspecto, además de irse fuera de los objetivos que no hemos trazado con su escritura. Es por ello que para brindar una idea general de la estructura y lograr una comprensión más simple, analizaremos como se conforman los MP de 8 bits y para ello consideraremos la existencia de dos bloques funcionales dentro del microprocesador, a los cuales denominaremos como bloque, subsistema o unidad de procesamiento, y bloque, subsistema o unidad de control. 2.2) Bloque de Procesamiento. El núcleo fundamental del bloque de procesamiento lo constituye la unidad aritmética y lógica (ALU), la cual está conformada por un circuito combinacional capaz de realizar las operaciones aritméticas (suma y resta) y lógicas (and, or, not, etc) indicadas en el código de la operación. Para poder realizar su función la ALU cuenta con la ayuda de varios registros. La ALU puede operar con los datos provenientes de uno o a lo sumo dos de los registros a la misma vez. Uno de estos registros es más versátil que los restantes y recibe el nombre de acumulador, mientras que los otros registros se denominan de propósito general. Estos registros se utilizan para: -almacenamiento temporal de datos y direcciones -su contenido se puede transferir entre ellos y con la memoria -sumar su contenido con el que existe en el acumulador -comparar su contenido con el que existe en el acumulador -incrementar o decrementar su contenido, etc. 13 El acumulador además de las funciones antes mencionadas podrá: -rotar su contenido -complementar su contenido -aceptar o enviar datos a los PIO -realizar operaciones aritméticas y lógicas con el contenido de cualquiera de los registros de propósito general -en general el acumulador siempre es el origen de uno de los operandos y el destino del resultado. Los dispositivos encargados de transferir el contenido del registro seleccionado hacia la entrada de la ALU son los llamados multiplexores. Igualmente otros multiplexores serán los que muevan la información desde la salida de la ALU hacia un registro de destino, donde se mantiene la información hasta que sea requerida por algún circuito externo. Todas estas operaciones son controladas por un circuito secuencial el cual se acopla a todos los registros y multiplexores. Por ejemplo, para un microprocesador de 8 bits, el acumulador y los multiplexores son dispositivos capaces de manejar una longitud de palabra de 8 bits, aunque en el caso de los registros de propósitos generales pueden en ocasiones utilizarse por parejas y conformar una estructura de 16 bits. 2.2.1) Registro de Indicadores. Existe aquí además un registro sumamente importante denominado registro de indicadores o banderas, el cual trabaja muy vinculado a la ALU, ya que le va indicando a ésta el estado de las operaciones aritméticas o de rotación que va realizando. Por ejemplo en el MP 8080 el registro de indicadores posee 8 bits, pero sólo 5 de ellos son significativos de acuerdo a la estructura que se muestra a continuación: SIGNO S D7 Z D6 X D5 ACARREO PARIDAD ACARREO A C D4 X D3 P D2 X D1 C D0 CERO DO (ACARREO)-Se activa en 1 cuando al realizar una operación aritmética el resultado no cabe en el acumulador. Ejemplo: Binario Decimal 11011001 207 +10010001 145 Acarreo 101101010 452 Al realizar una operación de dos bytes se obtuvo como resultado un número de 9 bits, haciéndose necesario entonces un 1 en el indicador de acarreo. D2 (PARIDAD) - Si al efectuar una operación, el número de bits presente con el estado lógico 1 es par (2, 4, 6 u 8), se fija un 0 lógico en el bit de paridad. De la misma forma 14 si el número de 1 lógicos en el acumulador es impar (1, 3, 5 ó 7), se fija un 1 lógico en dicho bit de paridad. Ejemplo: Si en el acumulador hay 11001100 entonces D2 es cero, pero si el contenido del acumulador es 10101000 entonces D2 es 1. D6 (INDICADOR DE CERO). - Se activa con 1 lógico cuando el resultado de la operación en el acumulador da 00000000, y presenta un 0 lógico en caso contrario. D7 (INDICADOR DE SIGNO). Si está en 1 lógico indica que el contenido del acumulador es negativo y el 0 lógico indica que es positivo. D4 (ACARREO AUXILIAR).- El programador no tiene acceso a él. Se utiliza para convertir un número de binario a BCD. En otros microprocesadores pueden emplearse otros tipos de indicadores. Algunos de ellos los relacionamos a continuación: E - se activa con la existencia de dos palabras de entrada iguales. GT-indica una palabra de entrada mayor que la existente en la otra entrada. GE- indica una palabra de entrada mayor o igual que la existente en la otra entrada. LT- indica una palabra de entrada menor que la existente en la otra entrada. LE - indica una palabra de entrada menor o igual que la existente en la otra entrada. 2.3) Bloque de Control. El bloque o unidad de control constituye el cerebro rector de todas las actividades dentro del microprocesador. Entre sus funciones fundamentales se encuentra el decodificar (interpretar) los códigos de operación de las instrucciones del programa, y el generar las señales que viajan por el bus de control, las cuales deben estar sincronizadas para su correcta manipulación por el resto de las unidades. Dentro de las secciones que constituyen esta unidad se encuentra el registro de instrucciones, el decodificador de instrucciones y el contador de programa. Un contador de programa típico para un microprocesador de 8 bits, almacena una palabra de 16 bits. El contenido de este contador se corresponde con la localización de memoria externa donde se encuentra la instrucción que se ejecuta por el microprocesador; o lo que es lo mismo, la dirección de la memoria que se encuentra activada. Este contador se incrementa automáticamente en una unidad durante cada ciclo de máquina. Cuando se inicia el proceso de ejecución de un programa, un circuito externo fija el contenido del contador de programa el cual será la dirección específica de la memoria en la cual se encuentra almacenada la primera instrucción del programa. Esta instrucción se lee en la memoria, y mediante el bus de datos se traslada al registro de instrucciones. El registro de instrucciones es el encargado de almacenar temporalmente la instrucción extraída de la memoria para que el decodificador de instrucciones determine cuál es la operación que se debe hacer. De acuerdo con ello este decodificador producirá las señales necesarias para encaminar los datos en un sentido o el otro, indicará que operación deberá hacer la ALU y si hay que producir algún cambio en el contador de 15 programa, a la vez que emitirá las señales para entrelazar todos los diversos registros del microprocesador que son necesarios para la ejecución del una instrucción en particular. La unidad de control cuenta además con una sección de tiempo o sincronización que realiza una función muy importante, pues el MP como ya hemos señalado a partir de la salida del decodificador de instrucciones tiene que especificar los ciclos apropiados de máquina que son necesarios para la ejecución correcta de dicha instrucción. Todo esto es posible lograrlo mediante la generación de la señal de control y de tiempo internas apropiadas y su envío a los diferentes elementos y componentes dentro y fuera de MP. Para sincronizar todo este proceso los MP disponen de un generador interno de pulsos llamados pulsos de reloj, cuya frecuencia se controla exteriormente mediante una red RC o modernamente mediante un CRISTAL conectado a sus terminales . En el microprocesador se encuentran también presentes algunos registros adicionales que se utilizan para el almacenamiento temporal de datos. Por ejemplo, usualmente se coloca un registro entre el contador de programa y la memoria, que se denomina registro de direcciones de memoria (MAR); y entre la memoria y el registro de instrucciones en ocasiones se emplea un registro denominado registro de datos de memoria (MDR). Cada instrucción programada por un usuario requiere de la realización de un determinado número de operaciones internas denominadas microinstrucciones, y de aquí surge la necesidad de almacenar un cierto número de resultados intermedios. El conjunto particular de microinstrucciones de un microprocesador se almacena en una ROM llamada ROM de control o microROM, la cual generalmente se encuentra dentro del propio C.I. del microprocesador. 2.4) Temporización y Sincronización. En cada microprocesador, el tiempo de duración de los eventos, o sea, la velocidad a la cual se procesa, está determinado por los pulsos de reloj. Estos pulsos difieren de un MP a otro, utilizándose en algunos de los casos un sólo tren de pulsos, mientras que en otros se emplean dos. En el ejemplo representado en la figura se emplean dos trenes o grupos de sucesión de pulsos Q1 y Q2, suministrando por un generador de reloj, llamado comúnmente sólo como reloj. 1 2 Período de reloj Cada tren de pulsos está compuesto de pulsos cuadrados idénticos en amplitud, duración y frecuencia de repetición, pero la fase Q1 está desplazada de la fase Q2 por medio período, o sea, la salida de Q2 está demorada T/2 en relación con la salida de Q1. El cambio de un estado a otro del MP se produce en sincronización con estos pulsos de reloj. La secuencia de estados a través de los cuáles se desplaza el control 16 durante el procesamiento de una instrucción, es a lo que se le denomina ciclo de instrucción. La sucesión de estados (generalmente entre 3 y 5) en los cuales se efectúa una comunicación con la memoria y se procesa el dato por este comunicado, constituye lo que se conoce con el nombre de ciclo de máquina. En general un ciclo de instrucción está compuesto de uno o varios ciclos de máquina en dependencia de su complejidad. 2.5) Instrucciones que alteran el contador de programa . Existen instrucciones que conllevan a una alteración del contenido del contador de programas. Dentro de ellas se encuentran la realización de las siguientes operaciones: a) salto incondicional (JMP) b) salto condicional (JNZ , JP) c) salto a subrutinas (CALL , CNC , CC) d) instrucciones de retorno (RET , RPU , RM) e) instrucciones de carga (PCHL) d) interrupción. Siempre que se realice un salto a subrutina debe, después de haberla ejecutado, aparecer una instrucción de retorno, y el contador de programa debe retornar a su valor original desde donde saltó para continuar la ejecución del programa. Para garantizar esto se crea una zona en memoria (RAM) llamada STACK (pila), llamada así por la estructura que tiene de almacenar los datos en forma de pila, donde el último dato que entra es el primero que sale (LIFO - last in first out). Cuando se realiza un salto a subrutina, el contenido del contador de programa (PC) se guarda en la pila; si dentro de esa subrutina salta a otra, se vuelve a guardar en la pila el contenido que tenia el contador de programa y así sucesivamente; esto permite que al ir terminando la ejecución de cada subrutina se vaya retornando hacia el programa principal con sólo llevar con cada instrucción de retorno el último dato que entró a la pila al PC. Pero existe un detalle muy importante. Es necesario saber en que localización de memoria se encuentra el último dato que queda en la pila. Es por ello que existe el puntero del stack. 17 2.5.1)Puntero del STACK (SP). Es un registro de 16 bits que se encuentra dentro del MP, encargado de indicar la próxima localización posible de memoria a ser ocupada dentro del stack. Este registro se carga inicialmente con el código que representa la primera capacidad de memoria vacía que será utilizada como pila y se irá decrementando en una unidad cada vez que se introduzca un dato de 8 bits. Por cada dato extraído se produce un incremento. Veamos cómo trabaja el puntero del stack mediante un esquema: PROGRAMA PRINCIPAL PILA SUBRUTINA A PILA SUBRUTINA B SP SP DR2 DR1 DR1 1 2 DR2 DR1 4 3 PILA PILA SP SP DR1 Si la salida del programa en lugar de ser por un salto a subrutina es por una interrupción, además de la dirección en que se estaba, en la pila se guardan los datos necesarios para poder continuar la ejecución del programa. 2.5.2) Interrupciones. Formalmente el tratamiento de interrupciones es bastante semejante al de salto a subrutina, pues en realidad es un salto a subrutina. Sin embargo, este es un nuevo mecanismo con una función diferente y, por cierto, muy utilizado en las aplicaciones con microprocesadores. En principio cuando un procesador ejecuta un programa no existe forma de alterar la frecuencia predeterminada (y que incluye, claro está, saltos y subrutinas). En estas condiciones la CPU sólo se entera de acontecimientos externos (por ejemplo llegada de datos o petición de resultados por parte de algún periférico), si se realiza por iniciativa del programa una verificación de dichos posibles acontecimientos. Ello obligaría al programador a incluir periódicamente subrutinas de comprobación de periféricos y llevar en todo momento control de los tiempos de ejecución. Las interrupciones son solicitudes de servicio que llegan por líneas especiales (en un mecanismo de hardware), y que pueden recabar la atención de la CPU en 18 cualquier momento. Después será cuestión del procesador el decidir si dicho servicio es prioritario o no sobre lo que estaba haciendo, y romper la secuencia en curso. Como ya se ha dicho, formalmente una interrupción es muy parecida a un salto a subrutina, pero la llamada no se realiza por una instrucción especial sino activando asíncronamente una línea especial (puede haber varias). La CPU termina la instrucción en curso y después o sale hacia donde debe saltar o lo pregunta. Los detalles deben ser estudiados en relación a cada máquina en concreto. Existe sin embargo una diferencia muy importante entre el salto a subrutina dentro de un programa y el salto a la subrutina de atención a una interrupción. Cuando el procesador la recibe, está ejecutando una tarea que en cada momento está representada por un conjunto de informaciones de las cuales depende la evolución posterior de su trabajo, y que deben de ser preservadas si la tarea que está realizando ahora, más adelante ha de reemprenderse en el mismo punto en que se abandonó para atender la interrupción. Estas informaciones pueden ser resultados parciales o datos en memoria, datos presentados por el medio exterior, etc. que en principio no se pierden ni se alteran por el cambio de tarea pero también se necesita guardar todo el estado de la CPU, es decir, el contenido de sus registros, pues estos van a sufrir alteraciones. Por tanto en el salto a interrupción no basta con guardar el contenido de PC (dirección de retorno) sino que es necesario guardar en principio los contenidos del acumulador, registro de estado, registros generales de trabajo, etc. Para ello se utiliza también el stack. Según el microprocesador que se trate, la salvaguarda del estado se realiza automáticamente al aceptar la interrupción, o bien el mismo programador lo incluye como primeras instrucciones en la subrutina del servicio. De la misma forma la recuperación de estos datos puede ser automática con la instrucción RTI (retorno desde interrupción), o bien por instrucciones especiales antes de RET. Las instrucciones especiales son PUSH, guardar un dato en el STACK (al mismo tiempo que se decrementa el SP), o POP, recuperar un dato del STACK (incrementando previamente SP). Las operaciones de entrada-salida controladas por interrupción se deben utilizar cuando el tiempo de respuesta a la solicitud de atención por parte de un periférico ha de ser lo más rápido posible. La secue ncia de operaciones es la siguiente: - el periférico solicita señal de servicio a través de una señal que activa una de sus líneas de interrupción - la CPU completa la ejecución de la instrucción en curso, guarda el contenido del contador de programa (para asegurar la dirección de retorno) y salta a ejecutar la subrutina de interrupción, emitiendo una señal de reconocimiento a esta interrupción - la subrutina de interrupción deberá, a veces, determinar el circuito que ha solicitado servicio, y en consecuencia, la dirección del programa que realmente se debe ejecutar. También deberá guardar el contenido de los registros de trabajo, en el caso que no se haga en forma automática - se ejecuta el programa de atención al periférico - el contenido del contador de programa de los registros es restaurado y la ejecución del programa que se había interrumpido se reanuda. 19 2.6) Acceso directo a memoria. El acceso directo a memoria es un procedimiento hardware que permite la transferencia de datos entre un periférico y memoria, solo limitado por la velocidad de acceso a memoria y sin intervención de la CPU. Este procedimiento se utiliza en la transferencia de datos y tiene que ser muy rápido, por lo que no puede ser controlado por el microprocesador. Tal es el caso de los visualizadores con tubos de rayos catódicos, los cuales las velocidades de transferencia de datos que requieren son tan altas, que no las permite ningún tipo de PIO bajo el control directo del microprocesador y su programa asociado. La secuencia de operaciones que se utiliza es la siguiente: - el periférico provoca una interrupción en un circuito especial denominado controlador de DMA. - el controlador solicita la suspensión de la ejecución de trabajo al CPU mediante la señal de HOLD - la CPU completa la instrucción que está ejecutando en el momento de recibir la señal HOLD y entonces pone en tri-state (tercer estado) sus buses, y envía una señal de reconocimiento al controlador (HLDA) - el controlador utiliza los buses para iniciar la transferencia, llevando el control de la dirección de arranque y el número de bytes a trasmitir - terminada la transferencia, el controlador desactiva la señal de HOLD, permitiendo a la CPU reanudar su tarea. Existen circuitos integrados controladores de DMA que pueden gestionar varios canales de acceso a memoria. Algunos microprocesadores (8080, Z80, etc.) tienen independizado el acceso a la memoria y a las PIO mediante instrucciones diferentes (MOV A,M ; IN XX ; etc. ), esto implica la existencia de señales de control especializadas para cada tipo de acceso, de tal forma que se pueden diferenciar claramente los direccionamientos de memoria y de PIO. Por el contrario, existen otros (6800, etc.) que no tienen esta diferenciación y las PIO ocupan posiciones reales en el direccionamiento de memoria y son tratados como tales con el mismo tipo de instrucciones. El primer procedimiento tiene la ventaja fundamental de independizar los procesos de memoria y I/O y tiene el inconveniente de la falta de flexibilidad en el tratamiento de la información, ya que todos los intercambios se realizan a través del acumulador; el segundo procedimiento tiene las ventajas de flexibilidad que se derivan de considerar los PIO como verdaderas posiciones de memoria en funciones de entrada-salida. Los circuitos de I/O operan normalmente de una forma asíncrona respecto al modo de operación del microcomputador, y resulta necesario sincronizar la ejecución del programa con la operación de los circuitos I/O. El método adoptado depende del tiempo máximo de retraso que se permite en la atención a los acontecimientos que reflejan las I/O y de la posibilidad de intercalar las actividades de proceso con la de adquisición y emisión de datos. Las transferencias de datos de I/O se pueden organizar de las siguientes formas: 1) Operaciones de I/O por acceso directo a memoria (DMA). 2) Operaciones de I/O controladas por interrupción. 20 3) Operaciones de I/O controladas por programas. Los dos primeros casos ya han sido explicados con anterioridad. En el tercer caso es el microprocesador a instancias del programa el que inicia y controla todos los tipos de transferencia de datos, o sea, la CPU solicita información de entrada o envía información a la salida, posicionando las señales correspondientes de direccionamiento y de control. Tiene como ventajas la facilidad de implementación de hardware y software y la facilidad de intercambio, siendo su principal inconveniente su falta de validez para control de procesos en tiempo real. 2.7) Operación paso a paso de un Microprocesador. Aunque a primera vista el tratamiento de un MP como un elemento de circuito pudiera aparecer como una tarea muy compleja, cuando se mira como un dispositivo que pasa por múltiples estados, se simplifica notablemente y su operación paso a paso puede describirse en términos más simples, como ilustramos a continuación mediante un ejemplo . Veamos cuál es la actividad que se requiere realizar para imprimir un carácter el cual ha sido previamente cargado en el acumulador. Asumimos que el periférico a considerar es una impresora: El software que necesitamos está almacenado en la memoria y consta de tres palabras de 8 bits (3 bytes) que contienen el código de la operación a imprimir seguido de dos bytes que definen la dirección de la impresora . Para imprimir el carácter, el MP transita por los nueve estados que se muestran en la figura: M1-T1 M1-T2 M2-T1 M3-T1 M4-T1 M2-T2 M3-T2 M4-T2 M1-T3 Si nosotros asumimos por conveniencia que la frecuencia impuesta por el reloj es de 1 MHz, nuestro circuito cambiará sus estados cada vez que transcurra 1 microsegundo. La acción que se realiza en cada estado se explica a continuación: Estado M1-T1. El contador de programa se conecta al bus de direcciones y coloca en éste la dirección de memoria en la cual está almacenado el primer byte. Simultáneamente un pulso de lectura es generado por la unidad de tiempo y control y enviado por el bus de control a la memoria, causando que el primer byte, o sea, el código de operación, pueda ser leído de la memoria. 21 Estado M1-T2. Asumamos que la memoria toma menos que un microsegundo en responder. Esto significa que cuando nuestro circuito entra en este estado, el primer byte ya se encuentra en los terminales de salida de la memoria. Es por ello que en este estado el registro de instrucciones (RI) se conecta al bus de datos, produciéndose el enlace directo entre la memoria y este RI, el cual recibirá la señal de control que le indica que debe almacenar la información existente en la memoria y que se le envía a través del bus de datos. Note que el bus de direcciones no está siendo usado en este estado. Estado M1-T3. En este estado el código de operación se decodifica. La salida del decodificador posibilitará la secuencia correcta de estados y las señales que debe generar la unidad de control para que la instrucción sea correctamente ejecutada. En nuestro caso ello implica transitar por los estados M2-T1 , M2-T2 , M3-T1 , M3-T2 , M4-T1 y M4-T2. En este estado ni el bus de control ni el de datos han sido utilizados. Estado M2-T1. La acción realizada en este estado es idéntica a la del estado M1-T1, con la excepción que el PC ha sido incrementado. Estado M2-T2. En este estado el DB se conecta al registro de direcciones y mediante un pulso correspondiente de control este graba el segundo byte en el lugar correspondiente (este es un registro de 16 bits). Estado M3-T1. La acción es semejante a los estados M1-T1 y M2-T2, con la excepción que el PC tiene la dirección del tercer byte. Estado M3-T2. Cuando el MP asume este estado, se obtiene el siguiente byte componente de la dirección, generándose por la unidad de control las señales apropiadas para grabar este byte en el lugar correspondiente del registro de direcciones. En el transcurso de esta secuencia de estados desde M1-T1 hasta M3-T2 hemos realizado el ciclo de búsqueda de la instrucción. En este punto dentro del MP se posee la información del código que define la operación, y la dirección de la impresora. Estado M4-T1. El registro de direcciones se conecta al AB por lo que la información que éste posee puede ser decodificada, generándose así la señal que permite identificar a que periférico se quiere acceder (en nuestro caso la impresora). Estado M4-T2. En este estado el acumulador se conecta al DB, y a través de éste y los interfaces correspondientes se envía la información a la impresora. Al mismo tiempo, el interface monitorea las señales de estado del MP en el bus de control, las cuales son usadas para generar las señales de control necesarias para activar la impresora y permitir así que el carácter en el acumulador se imprima. Para concretar ideas vamos a describir la ejecución de un corto programa referido a un microprocesador de 8 bits (m=8) y direcciones de 16 bits (n=16) que utiliza las instrucciones LDA (load acumulator, carga del acumulador con el contenido de un registro de memoria ), ADD ( add acumulator, suma al acumulador el contenido de un registro de memoria ) , y STA (store acumulator, guardar el contenido del acumulador en un registro de memoria ). El programa lee un dato de memoria en la dirección 006AH y lo guarda en el acumulador. Le suma el dato de al dirección 006BH y guarda el resultado en 0080H . 22 El contenido de la memoria que nos afecta es el siguiente : DIRECCIÓN C000 C001 C002 C003 C004 C005 C006 C007 C008 CONTENIDO B6(LDA) 00 6A BB(ADD) 00 6B B7(STA) 00 80 DIRECCIÓN 006A ------006B ------0080 ------- CONTENIDO 02 --05 --? --- En la zona C000H a C008H está contenido el programa, mientras que en 006AH y 006BH están los datos que vamos a manejar. La secuencia de operaciones para la primera instrucción es: - El contador de programa PC coloca su contenido (C000H) en el bus de direcciones AB y de ahí se toma por el registro de direcciones de memoria MAR. A partir de ahí se desencadena una operación de lectura en memoria a consecuencia de la cual, el contenido de la dirección apuntada por PC (que es B6H) aparece en el registro de datos de memoria MDR. De éste es transferido al registro de instrucciones IR y simultáneamente, el PC se incrementa en 1. - La decodificación de B6H indica que se trata de una instrucción de carga en el acumulador del contenido de la dirección indicada (contenida) en los bytes siguientes C001H y C002H. Para ello PC se incrementa dos veces y se producen dos nuevas lecturas, siendo 00 el resultado de la primera y 6A de la segunda, y esta información se carga en un registro temporal de direcciones TAR. La fase de búsqueda de la instrucción ha terminado. - El contenido de TAR es enviado a MAR y se procede a una nueva lectura. El registro MDR coloca 02 en el bus de datos DB y de ahí pasa al acumulador. La primera instrucción ha sido ejecutada. - Para la segunda instrucción las tres primeras fases de búsqueda son idénticas y al final de ellas IR contiene BB y TAR 006B. En la fase de ejecución, el contenido de TAR es enviado a MAR y se procede a una nueva lectura. El MDR coloca 05 en DB y de ahí este contenido pasa a uno de los registros de utilización general RUG. La ALU procede a sumar el contenido de este RUG con el contenido del acumulador ( 05+02=07 ) y el resultado se guarda en el propio acumulador. En PC se encuentra el contenido C006H. - Para la tercera instrucción también las tres primeras fases (búsqueda) son iguales quedando IR con B7 y TAR con 0080: En la fase de ejecución el contenido de TAR se envía a MAR, mientras que el contenido del acumulador se lleva a MDR. Al final, en la posición 0080 queda escrito el resultado de 07 que es la suma de los datos almacenados en 006AH y 006BH. El programa analizado escrito en lenguaje nemotécnico sería: LDA 006AH ADD 006BH STA 0080H Observamos que en el programa analizado no se produce la ruptura de secuencia para la toma de decisiones, ni se ha hecho uso de subrutinas ni del mecanismo de interrupciones. El estudiante interesado en profundizar en el tema de programación de 23 microprocesadores deberá consultar los textos de referencia que aparecen al final del presente material. 2.8-) Campo de aplicación de los microprocesadores Como ya se ha dicho un MP es básicamente una CPU de ordenador, integrada con tecnología LSI. Visto de esta forma no representa más que un avance tecnológico en el campo de los ordenadores, pero en realidad conlleva unas consecuencias revolucionarias, ya que representa una democratización de la informática y una generalización de su uso que se manifiesta por ejemplo, en la aparición de los ordenadores personales. Los efectos que se producen se aprecian clarísimamente en los campos de la automática, las comunicaciones y la instrumentación. Los Microprocesadores en efecto constituyen un pequeño mundo aparte. Su uso es diferente al de una microcomputadora, que en la gama de las máquinas de propósito general, sería la más próxima a ellos. En efecto la microcomputadora aparece generalmente como un sistema cerrado en el cual el usuario no interviene más que con mucho para conectarle algún periférico extra o dotarle de un software específico para su aplicación. En cambio el diseñador de aplicaciones con microprocesador desciende hasta un nivel más profundo para construir un sistema a la medida, sin llegar sin embargo a convertirse en arquitecto de sistemas. El MP realiza una aplicación específica y fija de por vida, el hardware y el software son los estrictamente necesarios a la aplicación y en particular no suele disponer de software ni terminales de interacción, lo cual plantea problemas específicos de mantenimiento. Las aplicaciones de los MP son fundamentalmente de control y de gestión sencilla. Una vez realizado el diseño, el programa queda fijo, es decir, en general no se espera reprogramar, aunque posiblemente sí realizar de tarde en tarde nuevas versiones del modelo, para lo cual interesa prever la expansión. Por lo general el programa de la aplicación va directamente albergado en memoria ROM, y una reducción del programa se traduce en reducción del número de pastillas de CI y por ende en una reducción del costo total. La consecuencia de esto es que la programación se cuida, en el sentido de acortarla, y, por ello, la programación en el ensamblador o incluso en el lenguaje de máquina se ha mantenido. Una de las áreas mayores de aplicación de los sistemas con MP es la concerniente a la sustitución de los circuitos electrónicos cableados en general a base de elementos de tecnología TTL. A partir de cierto grado de complejidad es interesante implementar el circuito a base de un sistema con MP. A la hora de la sustitución, hay que tener en cuenta algunas características, tales como la menor velocidad que suele acompañar al sistema con MP, al tener que ejecutar de forma secuencial las instrucciones del programa para obtener las salidas apropiadas, mientras que en los circuitos cableados, las entradas sólo tienen que atravesar los elementos operativos para originar las salidas. Si el sistema con MP supera la limitación de tiempo expuesta, por lo general en el resto de las consideraciones, supera al circuito cableado. Se destacan algunas de sus ventajas: 1-Menor tiempo requerido para el diseño y las pruebas del prototipo. 2-Posibilidad de emplear tarjetas estándar que conforman la mayor parte del sistema. En este caso se reduce en gran manera los costos de montaje y verificación. 3-Para cantidades muy importantes y bajo pedido directo al fabricante, existe la posibilidad de integrar en un solo chip la mayor parte del sistema. Esta alternativa reduce los costos de montaje, verificación y material, mejorando los aspectos relacionados con la reducción del volumen, aumento de fiabilidad y mayor 24 competitividad. En estos casos ha de tenerse en cuenta que los fabricantes pueden producir bajo demanda, chips específicos para una determinada aplicación. 4-Posibilidad de introducir en el futuro cambios en el programa de trabajo del sistema (basta cambiar el programa de la memoria), así como ampliarle si es necesario. 5-Reducción de costos en mano de obra y verificación. 6-Importante aumento de la fiabilidad debido a la reducción de componentes en los sistemas con MP. 7-Reducción importante del volumen y del gasto de energía consumida. 8-Fácil introducción de programas de auto chequeo que facilitan la reparación y el mantenimiento del equipo. 9-Capacitación del personal en general de la empresa, que le permite desarrollar en el futuro nuevos y más avanzados productos que a veces serán permisibles a corto plazo. 10-Mejoría de la imagen del producto y de la empresa que lo fabrica. Una clasificación general de carácter básico que delimita algunos de los campos industriales de más interés y desarrollo de los sistemas basados en MP es la siguiente: 1-Industria en general. 2-Industria eléctrica y de electrodomésticos. 3-Instrumentación y medidas. 4-Terminales inteligentes. 5-Juegos y derivados. Los MP hoy en día cada vez más extienden su campo de aplicación y encuentran cada vez más un sin número de tareas que le son asignadas. De aquí que podamos ver a manera de ejemplo su amplio empleo en la instrumentación. Podemos preguntarnos ¿qué nos da el uso de los MP en los instrumentos? ¿ cuán eficiente resultan los sistemas de medición basados en los MP ? La respuesta a estas preguntas está dada por el hecho real que los MP están revolucionando la instrumentación electrónica, lo cual es verdad aunque suene un poco fantástico. El uso de los MP en la instrumentación ha mejorado notablemente la precisión que se alcanza, ha expandido sus capacidades, ha incrementado su confiabilidad y ha posibilitado la realización de tareas que anteriormente por su complejidad o duración prácticamente eran consideradas irrealizables. Debido a la presencia del MP, han podido construirse instrumentos cada vez más versátiles y se han desarrollado procedimientos para la medición que resultan cada vez más simples, en los cuales el ajuste, la calibración y la propia lectura, se realizan de forma automática. Todo ello posibilita una mejora sustancial del comportamiento del instrumento y de sus características metrológicas. El MP posibilita también el empleo de procedimientos de cómputo más eficiente, con un análisis estadísticos de los resultados y su posible linealización. En muchos instrumentos ha aparecido la posibilidad de programación, y lo que aún es más importante han llegado a ser inteligentes. La multifuncionalidad ha sido una consecuencia de la flexibilidad en la utilización de programas, pero paralelamente con esto, se ha logrado una reducción en el consumo de energía lo cual ha permitido el diseño de instrumentos cada vez más sencillos de operar por lo que el usuario puede lograra un gran ahorro de tiempo. 25 En el esquema que a continuación mostramos está representado el diagrama de bloques simplificado de un voltímetro digital con el empleo de MP. Señal de Entrada Dispositivo Acomodador de señal Sistema Microprocesador CAD de Salida El bloque acomodador de señal contiene principalmente un atenuador y un amplificador, aunque algunos instrumentos también presentan un circuito para rectificar la señal de corriente alterna. El conversor análogo digital CAD es imprescindible para cualquier voltímetro digital, incluyendo el que está basado en MP. Comúnmente el CAD que se emplea en los sistemas de medición viene totalmente en pastillas de circuito integrado de alta integración (LSI). El MP organiza el procedimiento de medición, controla la operación de los restantes bloques y ejecuta las operaciones aritméticas y lógicas con los datos procedentes del CAD. El programa bajo el cual el MP opera, es preparado por el fabricante y almacenado en ROM, permaneciendo inalterable aún bajo el caso de una falta de energía. La ROM almacena también algunas constantes usadas en varias subrutinas y los números requeridos para la calibración automática. La RAM se utiliza para guardar los datos obtenidos y temporalmente los resultados intermedios. El dispositivo de salida sirve para mostrar los datos de la medición en forma numérica, o sea, como un conjunto de dígito. El multímetro digital con MP es un instrumento multifuncional programable. Los programas y subrutinas que utiliza, determinan las funciones que este puede realizar. Los modelos ofertados por los fabricantes difieren unos de otros, pero en general tienen en común lo siguiente: - multiplicar un número por un factor de escala. - sustraer un valor constante a la lectura. - determinar la fracción de error en el resultado. - medir relaciones y presentar el resultado en tanto por uno o en decibeles. - procesar los datos estadísticamente. - calcular los valores estadísticos de los resultados (media, varianza, valor eficaz, etc.). En general podemos plantear que en la época actual los MP se aplican prácticamente en todas las ramas de la ciencia y la técnica, y con su ayuda es posible el diseño de fábricas totalmente automatizadas que son capaces de trabajar de forma ininterrumpida, con elevada productividad del trabajo y eficiencia. La base fundamental de estas fábricas se encuentra en los robots, que se están construidos en base a los MP; además de la introducción de los llamados sistemas de dirección automática de los procesos tecnológicos. Por otra parte, se trabaja de forma intensiva en la simplificación de la comunicación del hombre con esta técnica: Actualmente las instrucciones a la máquina se le dan fundamentalmente a través de un teclado, lo cual requiere de cierta preparación por parte del operador y dificulta un poco el empleo de esta técnica por parte del personal y los especialistas no totalmente identificados con su uso. 26 La introducción de softwares cada vez más sencillos de operar y por ende más " amistosos" empleando el mouse, ha ayudado a simplificar la comunicación, pero se desea desarrollar circuitos analizadores y sintetizadores de voz que faciliten aún más la entrada y salida de la información de las computadoras. Cuando se logre que estos circuitos puedan fabricarse de manera compacta, y puedan ser reducidos a escala de los circuitos integrados, podremos darles las instrucciones a la máquina mediante la voz y con ello podemos comunicarnos con la máquina de manera semejante a como lo hacemos con otro ser humano. 2.9-) Desarrollo de los microprocesadores. La firma INTEL dio inicio a la fabricación de MP en 1972 con el 8008 y a partir de ahí ha desarrollado la fabricación de una larga serie de MP más potentes y complejos. El 8080 y su versión más desarrollada que apareció posteriormente, el 8085, formaron parte de múltiples estructuras y equipos y tuvieron en su tiempo una gran popularidad y demanda dentro de los MP de 8 bits. El 8086 fue el primer MP de 16 bits elaborado por INTEL y presenta un bus de datos de 16 bits, un bus de direcciones de 20 bits y emplea operandos de 16 bits. Fue diseñado de forma tal de que fuese compatible con el nivel de lenguaje ensamblador empleado por el 8080A, por lo que cualquier instrucción de este último puede ser simulada por una combinación de instrucciones del 8086 y en general el grupo de registros del 8080A es un subconjunto de los que posee el 8086. El 8088 es una versión en 8 bits del 8086 desde el punto de vista de los buses de entrada y salida, pero presenta registros internos d 16 bits, de igual forma que lo realiza el 8086. El 80186 constituye una versión mejorada del 8086 que posee en su interior el generador de los impulsos de sincronismo, la lógica de control de interrupciones, los esquemas de temporalización y los controladores del acceso directo a memoria. El esquema de este MP presenta un total de 68 terminales distribuidos en los 4 lados, y posee dos veces mayor productividad en comparación con el 8086, además de poseer mayor capacidad de carga en sus líneas fundamentales. El 80286 constituyó un perfeccionamiento mayor del 8086, con una estructura de 68 terminales que contiene también en su interior los esquemas para el control y borrado de la memoria. Existen modelos con frecuencias de trabajo de 8 y 10 MHz. y presenta un grupo de registros que no presenta el 8086 que le posibilita la ejecución de una serie de instrucciones adicionales. Posee una posibilidad mayor de direccionamiento de memoria pues su bus de direcciones es de 24 bits. En el desarrollo ulterior apareció en 1985 el 80386, que fue el primer procesador de 32 bits de Intel con bus de datos y tamaño de registro de 32 bits. En el momento en que hizo su aparición este MP la mayoría de las microcomputadoras eran compatibles AT, con bus de 16 bits. Esto hacía que montar una microcomputadora con un 386 fuese comparativamente caro ya que implicaba un rediseño total de la arquitectura existente y cambiarla para 32 bits, es decir, cambio de la memoria, buses, etc. El costo que implicaba era de por sí elevado, más aún teniendo en cuenta la no disponibilidad en el momento de partes 32 bits compatibles. 27 El 80386 operaba con velocidad de 16 MHz., pero rápidamente subieron hasta 33, lo que le da la posibilidad de ejecutar de 3 a 5 millones de instrucciones por segundo, además de que su capacidad de direccionamiento de memoria física alcanza los 4 gigabytes. Los competidores de Intel, AMD y Cyrix llegaron a producirlo con velocidades de hasta 40 Mhz. Su arquitectura permite realizar simultáneamente operaciones de búsqueda de instrucciones, decodificación, ejecución y control de memoria. La aceptación y el éxito de este MP estuvo dado por mantener sus características de compatibilidad con sus predecesores 8086, 8088, 80186, 80286, pues prácticamente todos los programas que fueron elaborados para estos últimos, también son capaces de correr en el 80386. Las microcomputadoras basadas en el 80386 operan con una mayor velocidad y están capacitados para operar con sistemas operativos desarrollados especialmente para máquinas de 32 bits lo que las hace más poderosas por tener la posibilidad de operar con tareas independientes dentro de un sistema de tareas múltiples. INTEL produjo como alternativa el 386SX, que no es más que un 386 "normal", o sea, compatible en su juego de instrucciones, registros internos, etc., sólo que su comunicación con el exterior se hace por un bus de 16 bits. Por tanto la diferencia clásica entre 386 DX y 386 SX está en su bus externo. El 80486 ó I486 cómo se conoce al procesador desarrollado por INTEL es un MP tipo CISC (Complete Instruccion Set Computer) cuyas instrucciones más utilizadas transcurren en un sólo ciclo de reloj, que unido al alto grado de integración logrado hace que las frecuencias de reloj sean más altas y en eso han incidido versiones a 25, 33, 50 y 66 MHZ. En el 486 se utilizaron 1.25 millones de transistores (5 veces más que el 386). El I486 es un procesador de 32 bits interno y externo y está diseñado para trabajar con sistemas de caché (basados en el controlador del propio INTEL 82385) cosa que no tenía el 386 en ninguna de sus dos versiones. Este caché L1 de 8 K, está directamente incorporada al procesador, lo que significó disminuir significativamente los accesos a RAM y por tanto en funcionamiento más rápido y racional. Ante el empuje de la competencia, INTEL lanza una variante más económica, el 486 SX, que se diferenciaba del original porque no incluía el coprocesador matemático, o para ser más exactos, lo tenía desactivado. Para actualizar sus capacidades de punto flotante al 486SX, Intel vendía un chip llamado 80487SX que se instalaba en la placa, pero que en realidad se trataba de un DX con diferente patillaje que al ser instalado desconectaba el procesador original y asumía el control de la configuración. Cuando fue evidente que el 486 se había afianzado en el mercado y ante la facilidad de producir versiones cada vez a mayores velocidades, surgió un nuevo problema: la necesidad de cambiar continuamente la tarjeta del sistema para adecuarla a la nueva velocidad. Sin embargo, al ser los accesos a los dispositivos del sistema siempre mucho más lentos que la velocidad de operación del procesador, se podía pensar en aumentar exclusivamente la velocidad de estos, dejando externamente el sistema sin ningún cambio. Este fue el origen del 486 DX2 el cual opera al doble de la velocidad de su tarjeta madre, es decir, en su versión DX2 a 50 MHz. el 486 está operando a 50 MHz. en un sistema a 25 MHz. El aumento cada vez mayor de la velocidad ha hecho posible el surgimiento en 1994 de los DX4 y ya un DX4 a 100 28 MHz. está montado sobre una tarjeta madre trabajando a la cómoda y más que suficiente velocidad de 25 MHz. ó 33 Mhz. y sin embargo su procesador opera a 100 MHz. Tales procesadores usaban un voltaje de 3.3 v con el fin de conservar bajos niveles de emisión del calor, aunque existieron versiones del DX4 a 5v que requirieron nuevas tarjetas madres y que llevaban ventiladores para refrescar el chip. La tecnología SL de INTEL fue originalmente desarrollada para lograr un medio razonable en la conservación de las baterías de las máquinas portátiles, pero se ha extendido hoy en día a la familia completa de procesadores I486 y pentium. La tecnología SL abarca una serie de requisitos y modos de operación que permiten reducir el consumo de energía y cumplen con el programa Energy Star. Entre ellas: 1- System Management Modem (SMM). Este es un nuevo modo operativo de los procesadores SL que permite la reducción del consumo energético apagando los perisféricos o el sistema completo cuando lleva tiempo sin utilizarse. 2.- Static Technology. Tecnología que permite a todos los procesadores SL detener su reloj, congelando el estado del mismo y el sistema de forma que puede ser reinicializado en el mismo punto donde se detuvo. 3.- Processor Clock Control. Permite colocar al procesador en un estado de letanía y bajo consumo, "Standby". 4.- Alimentación de 3.3 volts. El hecho de que estos procesadores sólo requieren 3.3 volts para su operación en vez de los típicos 5 volts, reduce el consumo energético en un 60 %. Todo este sistema permite una disminución del consumo desde unos 250 watts hasta unos 30 watts. Esta lógica de reducción de potencia constantemente está monitoreando al sistema buscando periféricos inactivos (Por ejemplo el disco duro). Una vez detectado un dispositivo en este estado, genera una interrupción (System Management Interrupt-SMI) al procesador el cual pasa de modo real a SMM. Aquí se toma una "instantánea" de todo el sistema y se almacena su estado en una zona de memoria llamada SM RAM . Esta zona es inviolable y no puede ser accedida por ningún SOFTWARE. El procesador ejecuta una rutina del BIOS que "apaga" al perisférico en cuestión. El proceso inverso ocurre al activarse nuevamente el perisférico y este procedimiento es virtualmente instantáneo. Ciryx con su 586 al que llamó M1 alcanzaba velocidades de 100 y 120 Mhz e incluía un bus interno de 64 bits, un canal de 6 etapas (una más que el 486 ) y era compatible con las tarjetas madres del 486. No obstante sus excelencias, llegó tarde al mercado ganado en aquel tiempo por la descomunal campaña de Intel para sus pentiums. INTEL sacó a la luz un nuevo MP conocido con el nombre de "Pentium" que seguía siendo un procesador de arquitectura CISC pero incluyó varias tecnologías RISC en su diseño que le permitieron alcanzar los 300 MIPS (millones de instrucciones por segundo). Todas las versiones de pentium poseen más de 3 millones de transistores integrados y requieren radiadores con ventilador para disipar el calor de su funcionamiento. El nuevo procesador ofrecía una arquitectura superescalar, dos canales en lugar de uno como el 486 y la tecnología de predicción de ramificaciones que le permitía minimizar las demoras que suceden cuando una instrucción compleja retrasa la ejecución de otras. También incrementó el ancho de banda del bus hasta 64 bits. Incluyó 29 dos cachés de nivel 1 (L1) independientes, uno para los datos y otro para las instrucciones de cálculo decimal que constituyen la base para las aplicaciones gráficas y de multimedia. La competencia llegó, y AMD lanzó su K5 y Cyrix el 5X86. El K5 es un procesador RISC y a diferencia de las dos etapas de canales del Pentium ofrece seis. Es en opinión de muchos especialistas superior al Pentium, pero llegó tarde al mercado y no alcanzó los niveles de velocidad esperados, por lo que apenas logró difusión en la construcción de ordenadores. Por su parte el 5X86 es un procesador totalmente CISC con dos canales y seis etapas por cada uno de estos, lo que difiere del diseño del pentium con dos canales y cinco etapas y ofrece según los expertos una mejor predicción de ramificaciones y ejecución fuera de orden. Es en suma un buen procesador, pero tampoco logró hacerse con el mercado que siguió teniendo un único dueño. Intel sorpresivamente cambió el standard que hasta ese momento había seguido en la industria, ¿razones?, pues el auge de las aplicaciones multimedia y el peso que cobraron grandes programas con complicados efectos gráficos, como los juegos para ordenador, que exigieron un mejor desempeño del hardware y específicamente de las CPU. Así surge en 1997 el pentium MMX, (P-MMX) procesador que incorpora 57 instrucciones adicionales, diseñado para mejorar la capacidad multimedia. Además el canal aumentó de 5 a 6 etapas y los dos cachés L1 aumentaron de 8 a 16K y mejoró mucho la predicción de ramificaciones, por lo que el MMX no es un retoque del pentium, sino que es de por sí un nuevo diseño cualitativamente superior. En 1996, casi un año antes del P-MMX, Intel sacó el Pentium Pro (P-Pro). Parte en su diseño de una concepción similar al pentium, pero ofrece avances tales como: una nueva forma de ejecutar las instrucciones y un aumento de las etapas del canal de 5 a 14 con 3 canales en lugar de 2 a una velocidad de ejecución resultante mucho mayor. Incluye un caché integrado L2 de 256 K además de 2 cachés L1 de 16 K, que eleva en consideración sus prestaciones, pero también su precio, y ello automáticamente lo relegó para la construcción de grandes servidores, lejos de los sistemas PC de uso doméstico o profesional más modestos. En el centro del P-Pro existe un procesador RISC, mientras que las instrucciones CISCX86 se forman a partir de microinstrucciones RISC más sencillas y por consiguiente se ejecutan con mayor rapidez. Tiene 5.5 millones de transistores los cuales generan una considerable cantidad de calor lo que exige el uso de disipadores y micro ventiladores. La solución a los problemas de costo y desempeño del Pentium-Pro llegó con la aparición en 1996 (y lanzado en 1997) del pentium II, (P II) que duplica las caches L1 a 32 K y una nueva L2 de 512K, más grande, pero fuera del procesador como en el P-Pro. La nueva caché L2 se comunica con el chip por medio de un bus propio que trabaja a la mitad de la velocidad de este. P II incorpora también en las últimas versiones un bus de 100 MHz, lo que mejora notablemente sus prestaciones. Como resultado, Intel pudo ubicar en el mercado un procesador mas económico, aunque no tan rápido como el PPro, pero este inconveniente es mínimo pues se logró dejar atrás la barrera de los 450 Mhz. Posteriormente existió un P II conocido como Xeón, optimizado para trabajar en 30 servidores, que fue aceptado por los especialistas como relevo del ya entonces algo desfasado P-Pro. En los predios del mercado apareció luego el esperado pentium III (P III) o Katmai que tenía como principal novedad la inclusión de 70 nuevas instrucciones conocidas como las MMX2 o KNI (Katmai New Instructions). Trabaja a voltajes de 1,8 volts, posee tamaño más reducido y menor consumo energético, gracias a la tecnología de 0.25 micras empleadas en su fabricación (próximamente a 0.18 micras). Los primeros modelos, con núcleo Katmai, se fabricaron todos en el mismo formato Slot 1 de los Pentium II, pero la actual revisión Coppermine de este micro utiliza mayoritariamente el Socket 370 FC-PGA. Muchos denominaron al Pentium III Coppermine "el auténtico Pentium III", porque al tener sus 256 KB de caché secundaria integrados en el núcleo del micro su rendimiento mejora en todo tipo de aplicaciones (incluso las no optimizadas). El Celeron (Pentium II light), resultó ser un Pentium II sin la caché secundaria, fue construido para liquidar el mercado de placas base tipo Pentium no II (con socket 7, que se dice) y liquidar definitivamente a AMD y otras empresas que usan estas placas. Sin embargo, resultaba realmente muy poco recomendable, por poseer un rendimiento mucho más bajo que el de Pentium II, pues era casi idéntico al del Pentium MMX. AMD logró a finales del 97 el K6 que de inmediato fue un formidable contrincante para el P-Pro, con su favorable handicap de menor costo. Presenta una caché L1 de 64K, una extensa tabla de predicción de ramificaciones, así como 7 unidades de ejecución paralela y el juego de instrucciones MMX. En las pruebas realizadas dejó atrás a los Pentium MMX de igual velocidad de reloj y se acercó notablemente al desempeño de los Pentium II. Posteriormente se puso a la venta el K 6-2, que incorpora tecnología de 0.25 micras y mejoraba notablemente el desempeño del procesador en cuanto a velocidad y capacidad multimedia, sentando un nuevo standard en las instrucciones 3Dnow (algo así como un MMX para 3D). El K6-III resultó ser un micro casi idéntico al K6-2, excepto por el "pequeño detalle" de que incluye 256 KB de caché secundaria integrada, corriendo a la velocidad del micro (es decir, a 400 MHz o más), al estilo de los Celeron Mendocino. Esto le hace mucho más rápido que el K6-2 (en ocasiones, incluso más rápido que el Pentium III) en aplicaciones que utilicen mucho la caché, como las ofimáticas o casi todas las de índole "profesional"; sin embargo, en muchos juegos la diferencia no es demasiado grande (y sigue necesitando el uso de las instrucciones 3DNow! para exprimir todo su potencial). El AMD Athlon (K7) resultó ser la gran apuesta de AMD: un micro con una arquitectura totalmente nueva, que le permitió ser en su tiempo el más rápido en todo tipo de aplicaciones. Con 128 KB de caché de primer nivel (cuatro veces más que el Pentium III), bus de 200 ó 266 MHz (realmente 100 ó 133 MHz físicos con doble aprovechamiento de cada señal), 512 ó 256 KB de caché secundaria (los 256 KB integrados le posibilitaban ser más rápido), instrucciones 3DNow! para multimedia... y el mejor micro de todos los tiempos en cálculos matemáticos. Su único y mínimo inconveniente radicaba en que necesita placas base específicamente diseñadas para él, debido a su novedoso bus de 200 MHz o más y a sus métodos de conexión, "Slot A" (físicamente igual al Slot 1 de Intel, pero incompatible con él... entre otras cosas porque Intel no quiso dar licencia a AMD para utilizarlo) o "Socket A" (un 31 zócalo cuadrado similar al Socket 370, pero con muchos más pines). Los modelos actuales usan el núcleo Thunderbird, con la caché secundaria integrada. El AMD Duron resultó un micro casi idéntico al Athlon Socket A (no existe para Slot A) pero con menos memoria secundaria (64 KB), aunque integrada (es decir, más rápida, la caché va a la misma velocidad que el micro); Con él se obtuvo una fantástica relación calidad/precio. Cyrix por su parte presentó el M II que posee un diseño superescalar, dos canales separados, 64K de caché L1, una novedosa caché auxiliar de 256k que acelera notablemente el desempeño de la CPU y predicción múltiple de ramificaciones. Este es un procesador completamente CISC (a diferencia del K6 y del P II), que no llegó a alcanzar el desempeño del K 6, pero se situó dignamente en el sector de las llamada “máquinas de bajo costo”. La última apuesta de Intel, el Pentium 4, representó todo un cambio de arquitectura; pese a su nombre, internamente poco o nada tiene que ver con otros miembros de la familia Pentium. Se trata de un micro peculiar: su diseño permite alcanzar mayores velocidades de reloj (más MHz... y GHz), pero proporcionando mucha menos potencia por cada MHz que los micros anteriores; es decir, que un Pentium 4 a 1,3 GHz puede ser MUCHO más lento que un Pentium III a "sólo" 1 GHz. Para ser competitivo, el Pentium 4 debe funcionar a 1,7 GHz o más. Por otro lado, incluye mejoras importantes: bus de 400 MHz (100 MHz físicos cuádruplemente aprovechados) y nuevas instrucciones para cálculos matemáticos, las SSE2. Éstas son muy necesarias para el Pentium 4, ya que su unidad de coma flotante es MUCHÍSIMO más lenta que la del Athlon; si el software está específicamente preparado (optimizado) para las SSE2, el Pentium 4 puede ser muy rápido. Desde el punto de vista físico, el Pentium 4 necesita placas bases diseñadas específicamente para él. El chip en sí viene en formato zócalo y tiene 423 pines; por tanto, su zócalo se llama "Socket 423". Necesita una carcasa, una fuente de alimentación (ambas ATX 2.03) y un ventilador y un disipador específicos, todo ello por consideraciones de consumo y estabilidad, porque el sistema de fijación del sistema de refrigeración es bastante complicado y va anclado con tornillos a la carcasa. La caché L2, integrada en el micro y de 256 bits, es una mejora de la tecnología "Advanced Transfer Cache " estrenada con el Pentium III; puede alcanzar 48 GB/s en el modelo de 1,5 GHz. Esto representa el doble de lo que puede hacer un Pentium III de la misma velocidad, y es mucho más de lo que puede alcanzar un AMD Athlon, sobre todo porque en éste la caché L2 tiene un bus de sólo 64 bits. Finalmente, un detalle positivo: el núcleo del micro está mejor protegido que antes, gracias a un disipador de calor integrado sobre el mismo (por eso tiene ese aspecto metálico). Todos estos datos son para el Pentium 4 versión 1.0, pero el desarrollo de estos micros se ha venido perfeccionando En la actualidad existen procesadores mucho mas poderosos. La compañía Intel acaba de lanzar al mercado su nuevo procesador Intel Pentium 4 de 3.0GHz y ya hoy se anuncian versiones capaces de trabajar a velocidades mayores lo cual representa un salto bastante importante. 32 En las plataformas no “Wintel”(elipsis de las palabras Windows e Intel) aparecen como notables los SPARC concebidos para las estaciones UNIX de Sun y otros desarrolladores de este entorno, cuyo desempeño es la base, entre otros usos, de la industria de los efectos especiales, muestra de los cuales son los filmes TITANIC y Toy’s Story. Por otra parte anda el G-3, corazón de los Macintosh, uno de cuyos modelos, el iMac barrió con las cifras de ventas en Europa y Estados Unidos en el 1er trimestre de 1999. Por ejemplo, el G-3 de 266 Mhz superó en todo, desde las operaciones con pto. Flotante hasta el trabajo con gráficos y texturas en 3D, al P Pro y P II de 300 Mhz. montados en configuraciones similares. Tiene arquitectura completamente RISC, basada en instrucciones más sencillas que se ejecutan a una mayor velocidad real. Con lo expuesto hasta aquí basta para que el lector se percate de la rapidez con que se desarrollan estos dispositivos y de la importancia que tiene para un profesional el poseer un mínimo de conocimiento de su evaluación y de sus posibilidades. CONSIDERACIONES FINALES El desarrollo explosivo de la técnica de los MP y su empleo cada vez más extendido en múltiples campos de la ciencia, han obligado a la introducción de sus estudios en los programas de las asignaturas de electrónica que aparecen incluidos en los planes de estudio de las carreras de ingeniería . Esperamos que con el estudio de este material los estudiantes puedan alcanzar un conocimiento elemental sobre esta temática y comprendan la importancia de desarrollar una profundización ulterior en las aplicaciones vinculadas a la rama de la ingeniería que les corresponda. 33 BIBLIOGRAFIA - Microprocessor and Instrumentation.Mirsky G. Editorial Mir 1987 - Sistem Design with microprocessor .Zibson D. Academic Press 1984 - Microprocesadores . Angulo J. Ma. Ediciones R 1989 . - Sistemas de Control con Microprocesadores. Lage J., Pascual M. - Microelectronic .Millmanm J. - Microprocessor Handbook .Greenfield Joseph .Ediciones R 1988. - Los microprocesadores y las microcomputadoras y su aplicación en la automatización de máquinas y equipos. Kostikoba G. Vuishaia Shkola. 1988 - Microprocessor Handbook 80386 -Fundamentos de los microprocesadores. Tokheim Roger. Ediciones R. 1988. -Revista GIGA. Colombus. Copextel, S.A. 1997-2001. 34 MEMORIA PRINCIPAL DATOS INSTRUCCIONES bus de datos bus de control Registro de Direcciones ACUMULADOR +1 Unidad Lógico Aritmética Registros De UtilizaCión Gral. Registro de Instrucciones Señales de Sincronización Y Control DECODIFICADOR Comandos o Direcciones Reg.Indicadores BLOQUE DE PROCESAMIENTO BLOQUE DE CONTROL ESTRUCTURA TÍPICA DE UN MICROPROCESADOR de 8 bits. 1 Contador de Programa