50
El Microprocesador - Historia UNIDAD CENTRAL DE PROCESO Un ordenador procesa los datos de forma automática para obtener así los resultados que se buscan. Se puede observar que un ordenador es la unión de tres elementos: Dispositivos de entrada Unidad de proceso Dispositivos de salida Se puede decir que la Unidad Central de Proceso dirige y supervisa el conjunto del ordenador, es decir, ejecuta operaciones aritméticas y lógicas con los datos. La Unidad de Proceso ha de tener dos características bien definidas: 1. Ha de ser capaz de reconocer y ejecutar una serie de instrucciones (programa) elementales en base a las cuales se puede realizar cualquier proceso de datos deseado, por complejo que sea éste. 2. Ha de tener separadas dos estados diferentes. En una primera fase ha de poder recibir y memorizar las instrucciones que configuran el proceso pedido (introducción del programa) y en segunda fase debe ejecutar en secuencia las instrucciones recibidas (ejecución del programa). Al realizar esta ejecución se leerán los datos que se necesiten a través de un dispositivo de entrada de datos en el momento en que sean requeridos, realizándose las operaciones que forman el proceso hasta la obtención de los resultados, los cuales serán enviados al usuario a través de un dispositivo de salida. A través de estas características, se puede observar que la Unidad Central de Proceso está compuesta por tres partes fundamentales: * Unidad de Control * Unidad Aritmético-Lógica * Memoria Central Unidad de Control: es la que dirige todas las actividades del ordenador, o sea, es responsable del correcto funcionamiento de los Página : 1

00 historia de los micros

Embed Size (px)

DESCRIPTION

 

Citation preview

  • 1. El Microprocesador - Historia UNIDAD CENTRAL DE PROCESO Un ordenador procesa los datos de forma automtica para obtener as los resultados que se buscan. Se puede observar que un ordenador es la unin de tres elementos: Dispositivos de entrada Unidad de proceso Dispositivos de salida Se puede decir que la Unidad Central de Proceso dirige y supervisa el conjunto del ordenador, es decir, ejecuta operaciones aritmticas y lgicas con los datos. La Unidad de Proceso ha de tener dos caractersticas bien definidas: 1. Ha de ser capaz de reconocer y ejecutar una serie de instrucciones (programa) elementales en base a las cuales se puede realizar cualquier proceso de datos deseado, por complejo que sea ste. 2. Ha de tener separadas dos estados diferentes. En una primera fase ha de poder recibir y memorizar las instrucciones que configuran el proceso pedido (introduccin del programa) y en segunda fase debe ejecutar en secuencia las instrucciones recibidas (ejecucin del programa). Al realizar esta ejecucin se leern los datos que se necesiten a travs de un dispositivo de entrada de datos en el momento en que sean requeridos, realizndose las operaciones que forman el proceso hasta la obtencin de los resultados, los cuales sern enviados al usuario a travs de un dispositivo de salida. A travs de estas caractersticas, se puede observar que la Unidad Central de Proceso est compuesta por tres partes fundamentales: * Unidad de Control* Unidad Aritmtico-Lgica * Memoria Central Unidad de Control: es la que dirige todas las actividades del ordenador, o sea, es responsable del correcto funcionamiento de los restantes componentes de la Unidad Central de Proceso. Su funcin es la de posibilitar la actuacin coordinada de todos los elementos que, en cada momento, hayan de intervenir en un proceso concreto. Cabe decir, en este sentido, que la Unidad de Control debe gobernar el funcionamiento de los perifricos de entrada, salida y almacenamiento, al tiempo que las actuaciones de la Memoria Central y la Unidad Aritmtico-Lgica. Por esta razn es la encargada de interpretar el programa del que recibe las instrucciones, codificadas convenientemente, as como de enviar las rdenes oportunas a las unidades perifricas implicadas. La Unidad de Control utiliza una seal generada por un reloj interno con objeto de sincronizar el funcionamiento operativo de cada elemento. Esta tarea es de carcter fundamental, ya que, en caso contrario, no podra establecerse un ritmo de operacin adecuado que controlara la velocidad de trabajo de cada componente en particular. Se comprende fcilmente que de la mayor o menor frecuencia del reloj interno, depender la capacidad de hacer un nmero mayor o menor de instrucciones por segundo. No todas las instrucciones que tenga que ejecutar la Unidad de Control consumen el mismo nmero de seales generadas por el reloj, sino que las instrucciones complejas Pgina : 1

2. El Microprocesador - Historia necesitarn ms ciclos que una instruccin simple. En cualquier caso, la Unidad de Control se encargar de las siguientes funciones: * Fijar si el ordenador est en fase de introduccin del programa o en fase de ejecucin del mismo. * Decodificar la instruccin en curso y, segn sea el cdigo de operacin de la misma, mandar seal para que acte la Unidad Aritmtico Lgica a una Unidad de Entrada o a una Unidad de Salida. * Verificar de que se efectan los traspases de informacin entre los registros y la memoria principal y viceversa. * Llevar el control de cul es la instruccin que en cada momento se est ejecutando y cul es la instruccin que deber de seguirle a continuacin. En la etapa de introduccin del programa, la Unidad de Control activa la unidad de entrada de datos y controla que las sucesivas instrucciones que componen el programa vayan siendo almacenadas en posiciones contiguas de memoria. En la fase de ejecucin del programa, la Unidad de Control decodifica la primera instruccin del programa y segn sea la naturaleza de dicha instruccin encarga su ejecucin al dispositivo adecuado: las entradas y salidas a los perifricos o al canal (gestiona la unidad de control de cada perifrico) y las operaciones aritmticas y lgicas al procesador.UNIDAD ARITMETICO-LOGICA La Unidad Aritmtico-lgica es la encargada de descifrar las instrucciones que componen el programa almacenado en la Memoria y encargarse de su ejecucin en la secuencia programada, es decir, tiene por misin la ejecucin de las operaciones matemticas bsicas y lgicas. Las operaciones bsicas son: "+" Sumar "-" Restar "*" Multiplicar "/" Dividir Las operaciones lgicas son: "No" lgico "Y" lgico "O" lgico Slo con estas operaciones bsicas es procesada toda la informacin y se obtienen los resultados esperados. Es asombroso que, con slo estas operaciones, se pueda construir todo un sistema de pensamiento vlido para cubrir completamente cualquier tipo de necesidad informtica. El conjunto formado por la Unidad de Control y la Unidad Aritmtico-Lgica se denomina Procesador Central. Para entender mejor todo el proceso de trabajo de un ordenador, se realizar un smil didctico con el que se tratar de emular el comportamiento de un ordenador mediante un empleado metdico. El ejemplo consta de los siguientes elementos: * Un empleado llamado CONTROL. * Una mesa de escritorio con el siguiente material: - una hoja de papel dividida en casillas numeradas, - un bloc para tomar notas, - una calculadora, - una bandeja para recibir hojas con informacin, - una bandeja para entregar hojas con los resultados, - un lpiz para escribir y una goma para borrar. Para que CONTROL pueda trabajar, necesita que le pasen los datos necesarios en hojas de papel y depositar todo el conjunto de hojas en la bandeja de recepcin de datos. CONTROL pasar las instrucciones recibidas a la hoja dividida en casillas sin indicar ningn comentario sobre la correccin de las mismas. Escritas todas las instrucciones recibidas, CONTROL pasar a su lectura y ejecucin. Coger la primera casilla y copiar la instruccin depositada en ella en el bloc de registros para analizarla. Si entiende la instruccin realizar los clculos necesarios, pero si no la entiende, quedar detenido hasta que se le ayude a entenderla. Las instrucciones que es capaz de realizar son las siguientes: * las cuatro operaciones aritmticas, * coger los datos de la bandeja de entrada y copiarlos en la hoja de casillas numeradas, Pgina : 2 3. El Microprocesador - Historia * coger los datos de la hoja de memoria, hoja de casillas, y los copiar en una hoja para depositarla en la bandeja de salida, * comparar nmeros y ver cul es el mayor, * efectuar la instruccin siguiente, * detenerse. Despus de cada instruccin, CONTROL leer la prxima casilla de instruccin y la ejecutar, a medida que se apunta en el bloc de registros cual es la casilla que le toca la prxima vez.Historia de los microprocesadores Pgina : 3 4. El Microprocesador - HistoriaPgina : 4 5. El Microprocesador - Historia Microprocesadores 8086/88, 286, 386, 486 y Pentium. CARACTERSTICAS GENERALES. Los microprocesadores Intel 8086 y 8088 se desarrollan a partir de un procesador anterior, el 8080, que, en sus diversas encarnaciones -incluyendo el Zilog Z-80- ha sido la CPU de 8 bits de mayor xito. Poseen una arquitectura interna de 16 bits y pueden trabajar con operandos de 8 y 16 bits; una capacidad de direccionamiento de 20 bits (hasta 1 Mb) y comparten el mismo juego de instrucciones. La filosofa de diseo de la familia del 8086 se basa en la compatibilidad y la creacin de sistemas informticos integrados, por lo que disponen de diversos coprocesadores como el 8089 de E/S y el 8087, coprocesador matemtico de coma flotante. De acuerdo a esta filosofa y para permitir la compatibilidad con los anteriores sistemas de 8 bits, el 8088 se dise con un bus de datos de 8 bits, lo cual le hace ms lento que su hermano el 8086, pues ste es capaz de cargar una palabra ubicada en una direccin par en un solo ciclo de memoria mientras el 8088 debe realizar dos ciclos leyendo cada vez un byte. Disponen de 92 tipos de instrucciones, que pueden ejecutar con hasta 7 modos de direccionamiento. Tienen una capacidad de direccionamiento en puertos de entrada y salida de hasta 64K (65536 puertos), por lo que las mquinas construidas entorno a estos microprocesadores no suelen emplear la entrada/salida por mapa de memoria, como veremos. Entre esas instrucciones, las ms rpidas se ejecutan en 2 ciclos tericos de reloj y unos 9 reales (se trata del movimiento de datos entre registros internos) y las ms lentas en 206 (divisin entera con signo del acumulador por una palabra extrada de la memoria). Las frecuencias internas de reloj tpicas son 4.77 MHz en la versin 8086; 8 MHz en la versin 8086-2 y 10 MHz en la 8086-1. Recurdese que un MHz son un milln de ciclos de reloj, por lo que un PC estndar a 4,77 MHz puede ejecutar de 20.000 a unos 0,5 millones de instrucciones por segundo, segn la complejidad de las mismas (un 486 a 50 MHz, incluso sin memoria cach externa es capaz de ejecutar entre 1,8 y 30 millones de estas instrucciones por segundo). El microprocesador Intel 80286 se caracteriza por poseer dos modos de funcionamiento completamente diferenciados: el modo real en el que se encuentra nada ms ser conectado a la corriente y el modo protegido en el que adquiere capacidad de proceso multitarea y almacenamiento en memoria virtual. El proceso multitarea consiste en realizar varios procesos de manera aparentemente simultnea, con la ayuda del sistema operativo para conmutar automticamente de uno a otro optimizando el uso de la CPU, ya que mientras un proceso est esperando a que un perifrico complete una operacin, se puede atender otro proceso diferente. La memoria virtual permite al ordenador usar ms memoria de la que realmente tiene, almacenando parte de ella en disco: de esta manera, los programas creen tener a su disposicin ms memoria de la que realmente existe; cuando acceden a una parte de la memoria lgica que no existe fsicamente, se produce una interrupcin y el sistema operativo se encarga de acceder al disco y traerla. Cuando la CPU est en modo protegido, los programas de usuario tienen un acceso limitado al juego de instrucciones; slo el proceso supervisor -normalmente el sistema operativo- est capacitado para realizar ciertas tareas. Esto es as para evitar que los programas de usuario puedan campar a sus anchas y entrar en conflictos unos con otros, en materia de recursos como memoria o perifricos. Adems, de esta manera, aunque un error software provoque el cuelgue de un proceso, los dems pueden seguir funcionando normalmente, y el sistema operativo podra abortar el proceso colgado. Por desgracia, con el DOS el 286 no est en modo protegido y el cuelgue de un solo proceso -bien el programa principal o una rutina operada por interrupciones- significa la cada inmediata de todo el sistema. El 8086 no posee ningn mecanismo para apoyar la multitarea ni la memoria virtual desde el procesador, por lo que es difcil disear un sistema multitarea para el mismo y casi imposible conseguir que sea realmente operativo. Obviamente, el 286 en modo protegido pierde absolutamente toda la compatibilidad con los procesadores anteriores. Por ello, en este libro slo trataremos el modo real, nico disponible bajo DOS, aunque veremos alguna instruccin extra que tambin se puede emplear en modo real. Las caractersticas generales del 286 son: tiene un bus de datos de 16 bits, un bus de direcciones de 24 bits (16 Mb); posee 25 instrucciones ms que el 8086 y admite 8 modos de direccionamiento. En modo virtual permite direccionar hasta 1 Gigabyte. Las frecuencias de trabajo tpicas son de 12 y 16 MHz, aunque existen versiones a 20 y 25 MHz. Aqu, la instruccin ms lenta es la misma que en el caso del 8086, solo que emplea 29 ciclos de reloj en lugar de 206. Un 286 de categora media (16 MHz) podra ejecutar ms de medio milln de instrucciones de estas en un segundo, casi 15 veces ms que un 8086 medio a 8 MHz. Sin embargo, transfiriendo datos entre registros la Pgina : 5 6. El Microprocesador - Historia diferencia de un procesador a otro se reduce notablemente, aunque el 286 es ms rpido y no slo gracias a los MHz adicionales. Versiones mejoradas de los Intel 8086 y 8088 se encuentran tambin en los procesadores NEC-V30 y NEC-V20 respectivamente. Ambos son compatibles Hardware y Software, con la ventaja de que el procesado de instrucciones est optimizado, llegando a superar casi en tres veces la velocidad de los originales en algunas instrucciones aritmticas. Tambin poseen una cola de prebsqueda mayor (cuando el microprocesador est ejecutando una instruccin, si no hace uso de los buses externos, carga en una cola FIFO de unos pocos bytes las posiciones posteriores a la que est procesando, de esta forma una vez que concluye la instruccin en curso ya tiene internamente la que le sigue). Adems, los NEC V20 y V30 disponen de las mismas instrucciones adicionales del 286 en modo real, al igual que el 80186 y el 80188. Por su parte, el 386 dispone de una arquitectura de registros de 32 bits, con un bus de direcciones tambin de 32 bits (direcciona hasta 4 Gigabytes = 4096 Mb) y ms modos posibles de funcionamiento: el modo real (compatible 8086), el modo protegido (relativamente compatible con el del 286), un modo protegido propio que permite -por fin!- romper la barrera de los tradicionales segmentos y el modo virtual 86, en el que puede emular el funcionamiento simultneo de varios 8086. Una vez ms, todos los modos son incompatibles entre s y requieren de un sistema operativo especfico: si se puede perdonar al fabricante la prdida de compatibilidad del modo avanzados del 286 frente al 8086, debido a la lgica evolucin tecnolgica, no se puede decir lo mismo del 386 respecto al 286: no hubiera sido necesario aadir un nuevo modo protegido si hubiera sido mejor construido el del 286 apenas un par de aos atrs. Normalmente, los 386 suelen operar en modo real (debido al DOS) por lo que no se aprovechan las posibilidades multitarea ni de gestin de memoria. Por otra parte, aunque se pueden emplear los registros de 32 bits en modo real, ello no suele hacerse -para mantener la compatibilidad con procesadores anteriores- con lo que de entrada se est tirando a la basura un 50% de la capacidad de proceso del chip, aunque por fortuna estos procesadores suelen trabajar a frecuencias de 16/20 MHz (obsoletas) y normalmente de 33 y hasta 40 MHz. El 386sx es una variante del 386 a nivel de hardware, aunque es compatible en software. Bsicamente, es un 386 con un bus de datos de slo 16 bits -ms lento, al tener que dar dos pasadas para un dato de 32 bits-. De hecho, podra haber sido diseado perfectamente para mantener una compatibilidad hardware con el 286, aunque el fabricante lo evit probablemente por razones comerciales. El 486 se diferencia del 386 en la integracin en un solo chip del coprocesador 387. Tambin se ha mejorado la velocidad de operacin: la versin de 25 MHz dobla en trminos reales a un 386 a 25 MHz equipado con el mismo tamao de memoria cach. La versin 486sx no se diferencia en el tamao del bus, tambin de 32 bits, sino en la ausencia del 387 ( puede ser aadido externamente ). Tambin existen versiones de 486 con buses de 16 bits, el primer fabricante de estos chips, denominados 486SLC, ha sido Cyrix. Una tendencia iniciada por el 486 fue la de duplicar la velocidad del reloj interno (pongamos por caso de 33 a 66 MHz) aunque en las comunicaciones con los buses exteriores se respeten los 33 MHz. Ello agiliza la ejecucin de las instrucciones ms largas: bajo DOS, el rendimiento general del sistema se puede considerar prcticamente el doble. Son los chips DX2 (tambin hay una variante a 50 MHz: 25 x 2). La culminacin de esta tecnologa viene de la mano de los DX4 a 75/100 MHz (25/33 x 3). El Pentium, ltimo procesador de Intel en el momento de escribirse estas lneas, se diferencia respecto al 486 en el bus de datos (ahora de 64 bits, lo que agiliza los accesos a memoria) y en un elevadsimo nivel de optimizacin y segmentacin que le permite, empleando compiladores optimizados, simultanear en muchos casos la ejecucin de dos instrucciones consecutivas. Posee dos cachs internas, tiene capacidad para predecir el destino de los saltos y la unidad de coma flotante experimenta elevadas mejoras. Sin embargo, bajo DOS, un Pentium bsico slo es unas 2 veces ms rpido que un 486 a la misma frecuencia de reloj. Comenz en 60/90 MHz hasta los 166/200/233 MHz de las ltimas versiones (Pentium Pro y MMX), que junto a diversos clones de otros fabricantes, mejoran an ms el rendimiento. Todos los equipos Pentium emplean las tcnicas DX, ya que las placas base tpicas corren a 60 MHz. Para hacerse una idea, por unas 200000 pts de 1997 un equipo Pentium MMX a 233 MHz es cerca de 2000 veces ms rpido en aritmtica entera que el IBM PC original de inicios de la dcada de los 80; en coma flotante la diferencia aumenta incluso algunos rdenes ms de magnitud. Y a una fraccin del coste (un milln de pts de aquel entonces que equivale a unos 2,5 millones de hoy en da). Aunque no hay que olvidar la revolucin del resto de los componentes: 100 veces ms memoria (central y de vdeo), 200 veces ms Pgina : 6 7. El Microprocesador - Historia grande el disco duro... y que un disco duro moderno transfiere datos 10 veces ms deprisa que la memoria de aquel IBM PC original. Por desgracia, el software no ha mejorado el rendimiento, ni remotamente, en esa proporcin: es la factura pasada por las tcnicas de programacin cada vez a un nivel ms alto (aunque nadie discute sus ventajas). Una caracterstica de los microprocesadores a partir del 386 es la disponibilidad de memorias cach de alta velocidad de acceso -muy pocos nanosegundos- que almacenan una pequea porcin de la memoria principal. Cuando la CPU accede a una posicin de memoria, cierta circuitera de control se encarga de ir depositando el contenido de esa posicin y el de las posiciones inmediatamente consecutivas en la memoria cach. Cuando sea necesario acceder a la instruccin siguiente del programa, sta ya se encuentra en la cach y el acceso es muy rpido. Lo ideal sera que toda la memoria del equipo fuera cach, pero esto no es todava posible actualmente. Una cach de tamao razonable puede doblar la velocidad efectiva de proceso de la CPU. El 8088 careca de memoria cach, pero s estaba equipado con una unidad de lectura adelantada de instrucciones con una cola de prebsqueda de 4 bytes: de esta manera, se agilizaba ya un tanto la velocidad de proceso al poder ejecutar una instruccin al mismo tiempo que iba leyendo la siguiente.REGISTROS del 8086 y del 286. Estos procesadores disponen de 14 registros de 16 bits (el 286 alguno ms, pero no se suele emplear bajo DOS). La misin de estos registros es almacenar las posiciones de memoria que van a experimentar repetidas manipulaciones, ya que los accesos a memoria son mucho ms lentos que los accesos a los registros. Adems, hay ciertas operaciones que slo se pueden realizar sobre los registros. No todos los registros sirven para almacenar datos, algunos estn especializados en apuntar a las direcciones de memoria. La mecnica bsica de funcionamiento de un programa consiste en cargar los registros con datos de la memoria o de un puerto de E/S, procesar los datos y devolver el resultado a la memoria o a otro puerto de E/S. Obviamente, si un dato slo va a experimentar un cambio, es preferible realizar la operacin directamente sobre la memoria, si ello es posible. Aqu se describen los registros del 8086.AXSPCS IPBXBPDS flagsCXSISSDXDIESRegistrosRegistros Registro punteroRegistros punteros dede de instruccionesde datos pila esegmento y flagsndices Registros de datos: AX, BX, CX, DX: pueden utilizarse bien como registros de 16 bits o como dos registros separados de 8 bits (byte superior e inferior) cambiando la X por H o L segn queramos referirnos a la parte alta o baja respectivamente. Por ejemplo, AX se descompone en AH (parte alta) y AL (parte baja). Evidentemente, cualquier cambio sobre AH o AL altera AX!: valga como ejemplo que al incrementar AH se le estn aadiendo 256 unidades a AX. AX = Acumulador : Es el registro principal, es utilizado en las instrucciones de multiplicacin y divisin y en algunas instrucciones aritmticas especializadas, as como en ciertas operaciones de carcter especfico como entrada, salida y traduccin. Obsrvese que el 8086 es suficientemente potente para realizar las operaciones lgicas, la suma y la resta sobre cualquier registro de datos, no necesariamente el acumulador. BX = Base. : Se usa como registro base para referenciar direcciones de memoria con direccionamiento indirecto, manteniendo la direccin de la base o comienzo de tablas o matrices. De esta manera, no es preciso indicar una posicin de memoria fija, sino la nmero BX (as, haciendo avanzar de unidad en unidad a BX, por ejemplo, se puede ir accediendo a un gran bloque de memoria en un bucle). CX = Contador. : Se utiliza comnmente como contador en bucles y operaciones repetitivas de manejo de cadenas. En las instrucciones de desplazamiento y rotacin se utiliza como contador de 8 bits.Pgina : 7 8. El Microprocesador - Historia DX = Datos. : Usado en conjuncin con AX en las operaciones de multiplicacin y divisin que involucran o generan datos de 32 bits. En las de entrada y salida se emplea para especificar la direccin del puerto E/S. Registros de segmento: Definen reas de 64 Kb dentro del espacio de direcciones de 1 Mb del 8086. Estas reas pueden solaparse total o parcialmente. No es posible acceder a una posicin de memoria no definida por algn segmento: si es preciso, habr de moverse alguno. CS = Registro de segmento de cdigo (code segment). : Contiene la direccin del segmento con las instrucciones del programa. Los programas de ms de 64 Kb requieren cambiar CS peridicamente. DS = Registro de segmento de datos (data segment). Segmento del rea de datos del programa. SS = Registro de segmento de pila (stack segment). Segmento de pila. ES = Registro de segmento extra (extra segment). Segmento de ampliacin para zona de datos. Es extraordinariamente til actuando en conjuncin con DS: con ambos se puede definir dos zonas de 64 Kb, tan alejadas como se desee en el espacio de direcciones, entre las que se pueden intercambiar datos. Registros punteros de pila: SP = Puntero de pila (stack pointer). Apunta a la cabeza de la pila. Utilizado en las instrucciones de manejo de la pila. BP = Puntero base (base pointer). Es un puntero de base, que apunta a una zona dentro de la pila dedicada al almacenamiento de datos (variables locales y parmetros de las funciones en los programas compilados). Registros ndices: SI = ndice fuente (source index). Utilizado como registro de ndice en ciertos modos de direccionamiento indirecto, tambin se emplea para guardar un valor de desplazamiento en operaciones de cadenas. DI = ndice destino (destination index). Se usa en determinados modos de direccionamiento indirecto y para almacenar un desplazamiento en operaciones con cadenas. Puntero de instrucciones o contador de programa: IP = Puntero de instruccin (instruction pointer). Marca el desplazamiento de la instruccin en curso dentro del segmento de cdigo. Es automticamente modificado con la lectura de una instruccin. Registro de estado o de indicadores (flags). Es un registro de 16 bits de los cuales 9 son utilizados para indicar diversas situaciones durante la ejecucin de un programa. Los bits 0, 2, 4, 6, 7 y 11 son indicadores de condicin, que reflejan los resultados de operaciones del programa; los bits del 8 al 10 son indicadores de control y el resto no se utilizan. Estos indicadores pueden ser comprobados por las instrucciones de salto condicional, lo que permite variar el flujo secuencial del programa segn el resultado de las operaciones.15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0OF DF IF TF SF ZF AF PF CF CF (Carry Flag): Indicador de acarreo. Su valor ms habitual es lo que nos llevamos en una suma o resta. OF (Overflow Flag): Indicador de desbordamiento. Indica que el resultado de una operacin no cabe en el tamao del operando destino. ZF (Zero Flag): Indicador de resultado 0 o comparacin igual. SF (Sign Flag): Indicador de resultado o comparacin negativa. PF (Parity Flag): Indicador de paridad. Se activa tras algunas operaciones aritmtico-lgicas para indicar que el nmero de bits a uno resultante es par. AF (Auxiliary Flag): Para ajuste en operaciones BCD. DF (Direction Flag): Indicador de direccin. Manipulando bloques de memoria, indica el sentido de avance (ascendente/descendente). IF (Interrupt Flag): Indicador de interrupciones: puesto a 1 estn permitidas. TF (Trap Flag): Indicador de atrape (ejecucin paso a paso). REGISTROS DEL 386 Y PROCESADORES SUPERIORES. Pgina : 8 9. El Microprocesador - Historia Los 386 y superiores disponen de muchos ms registros de los que vamos a ver ahora. Sin embargo, bajo el sistema operativo DOS slo se suelen emplear los que veremos, que constituyen bsicamente una extensin a 32 bits de los registros originales del 8086. Se ampla el tamao de los registros de datos (que pueden ser accedidos en fragmentos de 8, 16 32 bits) y se aaden dos nuevos registros de segmento multipropsito (FS y GS). Algunos de los registros aqu mostrados son realmente de 32 bits (como EIP en vez de IP), pero bajo sistema operativo DOS no pueden ser empleados de manera directa, por lo que no les consideraremos. MODOS DE DIRECCIONAMIENTO. Son los distintos modos de acceder a los datos en memoria por parte del procesador. Antes de ver los modos de direccionamiento, echaremos un vistazo a la sintaxis general de las instrucciones, ya que pondremos alguna en los ejemplos: INSTRUCCIN DESTINO, FUENTE Donde destino indica dnde se deja el resultado de la operacin en la que pueden participar (segn casos) FUENTE e incluso el propio DESTINO. Hay instrucciones, sin embargo, que slo tienen un operando, como la siguiente, e incluso ninguno: INSTRUCCIN DESTINO Como ejemplos, aunque no hemos visto an las instrucciones utilizaremos un par de ellas: la de copia o movimiento de datos (MOV) y la de suma (ADD). ORGANIZACIN DE DIRECCIONES: SEGMENTACIN. Como ya sabemos, los microprocesadores 8086 y compatibles poseen registros de un tamao mximo de 16 bits que direccionaran hasta 64K; en cambio, la direccin se compone de 20 bits con capacidad para 1Mb, hay por tanto que recurrir a algn artificio para direccionar toda la memoria. Dicho artificio consiste en la segmentacin: se trata de dividir la memoria en grupos de 64K. Cada grupo se asocia con un registro de segmento; el desplazamiento (offset) dentro de ese segmento lo proporciona otro registro de 16 bits. La direccin absoluta se calcula multiplicando por 16 el valor del registro de segmento y sumando el offset, obtenindose una direccin efectiva de 20 bits. Esto equivale a concebir el mecanismo de generacin de la direccin absoluta, como si se tratase de que los registros de segmento tuvieran 4 bits a 0 (imaginarios) a la derecha antes de sumarles el desplazamiento : direccin = segmento * 16 + offset En la prctica, una direccin se indica con la notacin SEGMENTO:OFFSET; adems, una misma direccin puede expresarse de ms de una manera: por ejemplo, 3D00h:0300h es equivalente a 3D30:0000h. Es importante resaltar que no se puede acceder a ms de 64 Kb en un segmento de datos. Por ello, en los procesadores 386 y superiores no se deben emplear registros de 32 bit para generar direcciones (bajo DOS), aunque para los clculos pueden ser interesantes (no obstante, s sera posible configurar estos procesadores para poder direccionar ms memoria bajo DOS con los registros de 32 bits, aunque no resulta por lo general prctico). MODOS DE DIRECCIONAMIENTO. - Direccionamiento inmediato: El operando es una constante situada detrs del cdigo de la instruccin. Sin embargo, como registro destino no se puede indicar uno de segmento (habr que utilizar uno de datos como paso intermedio).ADD AX,0fffhPgina : 9 10. El Microprocesador - Historia El nmero hexadecimal 0fffh es la constante numrica que en el direccionamiento inmediato se le sumar al registro AX. Al trabajar con ensambladores, se pueden definir smbolos constantes (ojo, no variables) y es ms intuitivo: dato EQU 0fffh ; smbolo constante MOV AX,dato Si se referencia a la direccin de memoria de una variable de la siguiente forma, tambin se trata de un caso de direccionamiento inmediato:dato DW 0fffh; ahora es una variable MO AX,OFFSET dato ; AX = "direccin de memoria" de dato Porque hay que tener en cuenta que cuando traduzcamos a nmeros el smbolo podra quedar: 17F3:0A11 DW FFF MOV AX,0A11 - Direccionamiento de registro: Los operandos, necesariamente de igual tamao, estn contenidos en los registros indicados en la instruccin: MOV DX,AX MOV AH,AL - Direccionamiento directo o absoluto: El operando est situado en la direccin indicada en la instruccin, relativa al segmento que se trate:MOV AX,[57D1h] MOV AX,ES:[429Ch] Esta sintaxis (quitando la 'h' de hexadecimal) sera la que admite el programa DEBUG (realmente habra que poner, en el segundo caso, ES: en una lnea y el MOV en otra). Al trabajar con ensambladores, las variables en memoria se pueden referenciar con etiquetas simblicas: MOV AX,dato MOV AX,ES:dato dato DW 1234h ; variable del programa En el primer ejemplo se transfiere a AX el valor contenido en la direccin apuntada por la etiqueta dato sobre el segmento de datos (DS) que se asume por defecto; en el segundo ejemplo se indica de forma explcita el segmento tratndose del segmento ES. La direccin efectiva se calcula de la forma ya vista con anterioridad: Registro de segmento * 16 + desplazamiento_de_dato (este desplazamiento depende de la posicin al ensamblar el programa). - Direccionamiento indirecto: El operando se encuentra en una direccin sealada por un registro de segmento*16 ms un registro base (BX/BP) o ndice (SI/DI). (Nota: BP acta por defecto con SS). MOV AX,[BP] ; AX = [SS*16+BP] MOV ES:[DI],AX; [ES*16+DI] = AX -Indirecto con ndice o indexado: El operando se encuentra en una direccin determinada por la suma de un registro de segmento*16, un registro de ndice, SI o DI y un desplazamiento de 8 16 bits. Ejemplos: MOV AX,[DI+DESP] MOV AX,desp[DI] ADD [SI+DESP],BX ADD desp[SI],BX - Indirecto con base e ndice o indexado a base: El operando se encuentra en una direccin especificada por la suma de un registro de segmento*16, uno de base, uno de ndice y opcionalmente un desplazamiento de 8 16 bits: MOV AX,ES:[BX+DI+DESP]MOV AX,ES:desp[BX][DI] MOV CS:[BX+SI+DESP],CX MOV CS:desp[BX][SI],CX Combinaciones de registros de segmento y desplazamiento. Como se ve en los modos de direccionamiento, hay casos en los que se indica explcitamente el registro de segmento a usar para acceder a los datos. Existen unos segmentos asociados por defecto a los registros de desplazamiento (IP, SP, BP, BX, DI, SI); slo es necesario declarar el segmento cuando no coincide con el asignado por defecto. En ese caso, el ensamblador genera un byte adicional (a modo de prefijo) para indicar cul es el segmento referenciado. La siguiente tabla relaciona las posibles combinaciones de los registros de segmento y los de desplazamiento: CS SS DSES IP SNo NoNo SP NoS NoNo BP con prefijo por defecto con prefijo con prefijo BX con prefijo con prefijo por defecto con prefijo Pgina : 10 11. El Microprocesador - Historia SI con prefijo con prefijo por defecto con prefijo DI con prefijo con prefijo por defecto con prefijo(1) (1) Tambin por defecto en el manejo de cadenas. Los 386 y superiores admiten otros modos de direccionamiento ms sofisticados, que se vern en el prximo captulo, despus de conocer todas las instrucciones del 8086. Por ahora, con todos estos modos se puede considerar que hay ms que suficiente. De hecho, algunos se utilizan en muy contadas ocasiones. LA PILA La pila es un bloque de memoria de estructura LIFO (Last Input First Output: ltimo en entrar, primero en salir) que se direcciona mediante desplazamientos desde el registro SS (segmento de pila). Las posiciones individuales dentro de la pila se calculan sumando al contenido del segmento de pila SS un desplazamiento contenido en el registro puntero de pila SP. Todos los datos que se almacenan en la pila son de longitud palabra, y cada vez que se introduce algo en ella por medio de las instrucciones de manejo de pila (PUSH y POP), el puntero se decrementa en dos; es decir, la pila avanza hacia direcciones decrecientes. El registro BP suele utilizarse normalmente para apuntar a una cierta posicin de la pila y acceder indexadamente a sus elementos -generalmente en el caso de variables- sin necesidad de desapilarlos para consultarlos. La pila es utilizada frecuentemente al principio de una subrutina para preservar los registros que no se desean modificar; al final de la subrutina basta con recuperarlos en orden inverso al que fueron depositados. En estas operaciones conviene tener cuidado, ya que la pila en los 8086 es comn al procesador y al usuario, por lo que se almacenan en ella tambin las direcciones de retorno de las subrutinas. Esta ltima es, de hecho, la ms importante de sus funciones. La estructura de pila permite que unas subrutinas llamen a otras que a su vez pueden llamar a otras y as sucesivamente: en la pila se almacenan las direcciones de retorno, que sern las de la siguiente instruccin que provoc la llamada a la subrutina. As, al retornar de la subrutina se extrae de la pila la direccin a donde volver. Los compiladores de los lenguajes de alto nivel la emplean tambin para pasar los parmetros de los procedimientos y para generar en ella las variables automticas -variables locales que existen durante la ejecucin del subprograma y se destruyen inmediatamente despus-. Por ello, una norma bsica es que se debe desapilar siempre todo lo apilado para evitar una prdida de control inmediata del ordenador. Ejemplo de operacin sobre la pila (todos los datos son arbitrarios): UN PROGRAMA DE EJEMPLO. Aunque las instrucciones del procesador no sern vistas hasta el prximo captulo, con objeto de ayudar a la imaginacin del lector elaboraremos un primer programa de ejemplo en lenguaje ensamblador. La utilidad de este programa es dejar patente que lo nico que entiende el 8086 son nmeros, aunque nosotros nos referiremos a ellos con unos smbolos que faciliten entenderlos. Tambin es interesante este ejemplo para afianzar el concepto de registro de segmento. En este programa slo vamos a emplear las instrucciones MOV, ya conocida, y alguna otra ms como la instruccin INC (incrementar), DEC (disminuir una unidad) y JNZ (saltar si el resultado no es cero). Suponemos que el programa est ubicado a partir de la direccin de memoria 14D3:7A10 (arbitrariamente elegida) y que lo que pretendemos hacer con l es limpiar la pantalla. Como el ordenador es un PC con monitor en color, la pantalla de texto comienza en B800:0000 (no es ms que una zona de memoria). Por cada carcter que hay en dicha pantalla, comenzando arriba a la izquierda, a partir de la direccin B800:0000 tenemos dos bytes: el primero, con el cdigo ASCII del carcter y el segundo con el color. Lo que vamos a hacer es rellenar los 2000 caracteres (80 columnas x 25 lneas) con espacios en blanco (cdigo ASCII 32, 20h en Pgina : 11 12. El Microprocesador - Historia hexadecimal), sin modificar el color que hubiera antes. Esto es, se trata de poner el valor 32 en la direccin B800:0000, la B800:0002, la B800:0004... y as sucesivamente. El programa quedara en memoria de esta manera: La primera columna indica la direccin de memoria donde est el programa que se ejecuta (CS=14D3h e IP=7A10h al principio). La segunda columna constituye el cdigo mquina que interpreta el 8086. Algunas instrucciones ocupan un byte de memoria, otras dos tres (las hay de ms). La tercera columna contiene el nombre de las instrucciones, algo mucho ms legible para los humanos que los nmeros: 14D3:7A10 B9 D0 07 MOV CX,7D0H ; CX = 7D0h (2000 decimal = 7D0 hexadecimal) 14D3:7A13 B8 00 B8 MOV AX,0B800h; segmento de la memoria de pantalla 14D3:7A16 8E D8 MOV DS,AX; apuntar segmento de datos a la misma 14D3:7A18 BB 00 00 MOV BX,0; apuntar al primer carcter ASCII de la pantalla 14D3:7A1B C6 07 20 MOV BYTE PTR [BX],32 ; se pone BYTE PTR para indicar que 32 es de 8 bits 14D3:7A1E 43INC BX ; BX=BX+1 -< apuntar al byte de color 14D3:7A1F 43INC BX ; BX=BX+1 -< apuntar al siguiente carcter ASCII 14D3:7A20 49DEC CX; CX=CX-1 -< queda un carcter menos 14D3:7A21 75 F8JNZ -8; si CX no es 0, saltar 8 bytes atrs (a 14D3:7A1B) Como se puede ver, la segunda instruccin (bytes de cdigo mquina 0B8h, 0 y 0B8h colocados en posiciones consecutivas) est colocada a partir del desplazamiento 7A13h, ya que la anterior que ocupaba 3 bytes comenzaba en 7A10h. En el ejemplo cargamos el valor 0B800h en DS apoyndonos en AX como intermediario. El motivo es que los registros de segmento no admiten el direccionamiento inmediato. A medida que se van haciendo programas, el ensamblador da mensajes de error cuando se encuentra con estos fallos y permite ir aprendiendo con facilidad las normas, que tampoco son demasiadas. La instruccin MOV BYTE PTR [BX],32 equivale a decir: poner en la direccin de memoria apuntada por BX (DS:[BX] para ser ms exactos) el byte de valor 32. El valor 0F8h del cdigo mquina de la ltima instruccin es el complemento a dos (nmero negativo) del valor 8. Normalmente, casi nunca habr que ensamblar a mano consultando unas tablas, como hemos hecho en este ejemplo. Sin embargo, la mejor manera de aprender ensamblador es no olvidando la estrecha relacin de cada lnea de programa con la CPU y la memoria. Pgina : 12 13. El Microprocesador - HistoriaLos nuevos procesadoresDeschutes, Covington, Mendocino, Willamette, Merced, Katmai, K6, K6 3D y K7 (Prximos procesadores Intel)Parece que Intel no tiene fin. Si ya nos ha sorprendido con todo lo existente hasta hoy, ahora tiene planteado sacar nuevas generaciones de procesadores ultrarrpidos como respuesta a la aplicacin de nuevas tecnologas. Todos los procesadores hasta ahora conocidos se van a quedar obsoletos en cuestin de meses (en este caso nos referimos a los Pentium II, ya que todos los dems como el Pentium sin y con MMX lo hicieron hace ya mucho tiempo).Deschutes o TillamookEste procesador en realidad ya no es una novedad. Es el nombre con el que se conocen a los Pentium II ms avanzados, y, con la salida de los dos modelos de 350 MHz y 400 MHz en abril de este ao, ya est la casi familia al completo. Tan slo falta el inminente procesador a 450 MHz, el cual tiene la salida prevista para el cuarto trimestre el 98; pero seguramente se adelantar, ya que decan que el modelo de 400 MHz iba a salir en el tercer trimestre y a salido a comienzos del segundo. Todos estos procesadores son los que vienen despus del Pentium II tradicional o Klamath, de 233, 266 y 300 Mhz. La familia Deschutes se caracteriza por reducir el tamao de los transistores de 0,35 a 0,25 micras y el voltaje de 2,8 a 2,5 voltios. Esto permite un tamao de CPU ms pequea y un mejor funcionamiento elctrico: menos calentamiento y por tanto ms velocidad.Covington o Celeron y Mendocino Son Pentium II econmicos. No es ms que intentar conseguirordenadores con configuracin de Pentium II con slo 150.000ptas (9.999 dlares). Para ello, aparecern Covington yMendocino, el primero de ellos, tambin conocido como Celeron,es un PII 266 Mhz por 15.000 ptas. (ese es el precio final, ahoraest disponible por 23.000) y el segundo un PII 300 Mhz por45.000 ptas. Cmo se obtiene la reduccin del coste? Pues,eliminando varios elementos, como la memoria cach. Mendocino limitar la memoria a 128 Kb. y Covington no tendr nada. Con esto los actuales Pentium MMX tienen los das contados (los Pentium II estn pensados para sustituirlos), junto con las placas con zcalos Socket, los SIMMs, la EDO RAM, el BUS ISA...WillametteEs un procesador de la familia P6 (Pentium Pro y Pentium II), pero incorporar varias caractersticas de la familia P7 o Merced. Aparecer en el cuatro trimestre del 98 y ser el ltimo de los procesadores de 0,25 micras.Merced Pgina : 13 14. El Microprocesador - Historia Merced o P7 es el gran proyecto de Intel, el primer procesador de 64 bits puros (recuerda que los Pentium actuales tienen el bus de direcciones de 64 bits pero el de datos a 32). Tendr un ancho de transistor de 0.18 micras y estar basado en la arquitectura IA-64: un juego de instrucciones totalmente nuevo. Intel ya a pagado 700 millones de dlares a Digital para poder usar la tecnologa de su procesador Alpha, el cual le haba acusado a aqul de copiarle su arquitectura. El paso de 32 a 64 bits supondr un cambio mucho mayor al de 16 a 32 bits. El sistema de codificacin nuevo, que supera al anterior del x86, es el EPIC (Codificacin de Instrucciones Explcitamente en Paralelo), que combina tres instrucciones en un nico registro de 128 bits, procesable a una mayor velocidad. Otras implementaciones son la arquitectura superescalar, predecodificacin y carga especulativa. Intel tambin asegura que Merced ser compatible con todas las aplicaciones de 32 bits existentes, utilizando un decodificador que convertir las instrucciones x86 en microinstrucciones IA-64. Merced partir de 600 MHz y llegar hasta 1.000 MHz 1 GHz. Tendr dos versiones: una con una cach L2 dentro de la CPU de 2 4 Mb para ordenadores servidores, y una segunda versin domstica que tendr la cach fuera del micro, como los PII actuales. Merced ser conectado a la placa base con la ranura Slot 2, y tendr un bus que funcionar a 100 MHz. Ms de 20 empresas, como Microsoft, Bull, Oracle, Compaq y Dell, estn desarrollando software para la nueva tecnologa. Quiz el primer sistema operativo que explote este procesador sea Summit 3D, compatible UNIX, de 64 bits. Tambin fomentar el desarrollo del llamado "Windows 2000". El lanzamiento de Merced ha sido aplazado hasta finales de 1999/principios de 2000.Slot 2 y PC '98Si bien el Pentium II actual utiliza el tipo de conexin llamado "Slot 1", Merced (destinado en principio a ordenadores servidores con ms de un procesador) se basar en el concepto "Slot 2" para el acoplamiento en la placa base. Este ltimo ser usado en todos los Pentium II de gama alta mayores de 300 MHz. Es un bus de 128 bits a una velocidad de 100 Mhz. Durante un tiempo ambos coexistirn, de echo, habr dos versiones de Pentium II a 333 MHz: Slot 1 y 2. Se acabaron las tarjetas ISA. Las recomendaciones desarrolladas por Microsoft e Intel y recogidas en la propuesta PC98 proponen la eliminacin total de slots para tarjetas ISA en la nueva arquitectura de las placas base. Otra de las "recomendaciones" es que los nuevos PCs no podrn soportar perifricos que se conecten a travs de los puertos serie y paralelo, excepto las impresoras. Segn las especificaciones, los OEMS tienen hasta enero de 1999 para eliminar las tarjetas mdems internas que utilizan solos ISA y las tarjetas de sonido. Otras especificaciones hacen especial hincapi en el tema de los grficos. As las tarjetas debern ser alojadas en buses PCI de 64 bits o bien AGP y se prev que los ordenadores dedicados al entretenimiento incorporen un sintonizador analgico de TV. El PC' 98 es una revolucin total al tradicional ordenador que hasta ahora hemos conocido.KatmaiEn concreto, el diseo de estos nuevos chips estar orientado a conseguir mejoras sustanciales en la renderizacin de grficos 3D y el reconocimiento de voz. Lo ms interesante es que su velocidad mnima ser de 500 MHz. La tecnologa Katmai era previamente conocida como MMX 2 y esencialmente representa la siguiente fase de la estrategia de informtica visual de Intel. De la misma manera que el MMX, Katmai es en realidad una nueva serie de 70 instrucciones incorporadas en los procesadores Intel (frente a las 57 incorporadas por MMX). Los desarrolladores usarn estas instrucciones para crear entornos informticos ms ricos. Hay que tener en cuenta que el lanzamiento de Katmai coincidir con mejoras en chips grficos y de la tecnologa AGP (Accelerated Graphics Port) de Intel, con lo que las posibilidades son grandes. Para animar a la aceptacin de la nueva tecnologa, Intel sacar al mercado programas y aplicaciones que usen la tecnologa, mucho antes de que se ponga a la venta el chip. Por su parte, ciertas herramientas de desarrollo para Katmai ya fueron distribuidas enPgina : 14 15. El Microprocesador - Historia 1997. Uno de los campos en los que se espera ms desarrollo y ms pronto, es precisamente en el de los juegos, por lo que este mercado se introducir cada vez mas en nuestras casas. La introduccin de Katmai se producir previamente al lanzamiento del chip Merced de Intel, su nueva generacin de chips de 64 bits. La nueva tecnologa aparecer exclusivamente a partir de 1999 en procesadores Pentium II. Precisamente, sobre esas fechas, uno de los competidores de Intel, AMD, lanzar tambin sus nuevos procesadores K6 3D (Chompers) y, seguidamente, su esperado y secreto K7.AMD: K6, K6 3D y K7AMD es una empresa fabricante de microprocesadores y la principal competencia de INTEL. Sus nuevos procesadores ofrecern caractersticas no incluidas en los Pentium's. Ya han sido presentados el AMD K6 a 266 MHz y 300 MHz, con la tecnologa de 0,25 micras y 68 milmetros cuadrados de tamao. El K6 3D a 300 Mhz saldr en el tercer trimestre del 98. Incluir 24 instrucciones MMX nuevas aparte de las ya existentes, bus de 100 MHz y AGP. Est montado unas las placas con el socket 7 utilizado hasta ahora en los Pentium's tradicionales llamada Super 7. Tendr un rendimiento mayor al Pentium II, y permitir reproducir MPEG-2 y sonido AC-3 gracias a DirectX 6.0 sin hardware adicional. En el cuarto trimestre del 98 aparecer K6 + 3D, a 350 Mhz, con 21,3 millones de transistores en 135 milmetros cuadrados. Tendr cach L2 de 256 Kb. dentro de la CPU. El ms futuro es el K7 a 500 MHz para 1999. Ser compatible con el Slot 1 del Pentium II, pero se llamar Slot A. El bus ser de 333 Mhz, mucho mayor que los de Intel de entonces de 100 MHz. En el 2001 AMD piensa apoderarse del 30% del mercado de procesadores.www.monografias.com Historia de los Microprocesadores Intel Desde la aparicin de los primeros microprocesadores en los inicios de la dcada de los setentas, todas las reas cientficas y tecnolgicas han sido experimentado su ms acelerado desarrollo en la historia de la humanidad. El bajo costo, confiabilidad y reducido espacio de los sistemas digitales basados en microprocesadores les han posibilitado el incursionar en aplicaciones que hasta antes de esa dcada se hallaban restringidas a sistemas de alto costo y considerados de alta tecnologa. Las industrias de la telecomunicacin, automotriz, aeronutica, de transformacin, mdica y de consumo casero, as como la educacin, banca, y empresas de servicios, son solo algunas de las reas en las cuales el impacto de la electrnica digital es ms evidente, ya que lo palpamos en nuestro actuar cotidiano.CISC Es una abreviacin de "Complex Instrutions set code o computer". Se refiere a los microprocesadores tradicionales que operan con grupos grandes de instrucciones de procesador (lenguaje de maquina). Los microprocesadores INTEL 80xxx estn dentro de esta categora (incluido el Pentium). Los procesadores CISC tienen un Set de instrucciones complejas por naturaleza que requieren varios a muchos ciclos para completarse.RISC Es una abreviacin de "Reduced Instructions Set Code", a diferencia de los CISC, los procesadores RISC tienen un grupo de o Set de instrucciones simples requiriendo uno o pocos ciclos de ejecucin. Estas instrucciones pueden ser utilizadas ms eficientemente que la de los procesadores CISC con el diseo de software apropiado, resultando en operaciones ms rpidas. Tecnologa utilizada en Main Frame. Pgina : 15 16. El Microprocesador - Historia LOS MICROPROCESADORES 8086 Y 8088 Historia del 8086/8088 En junio de 1978 Intel lanz al mercado el primer microprocesador de 16 bits: el 8086. En junio de 1979 apareci el 8088 (internamente igual que el 8086 pero con bus de datos de 8 bits) y en 1980 los coprocesadores 8087 (matemtico) y 8089 (de entrada y salida). El primer fabricante que desarroll software y hardware para estos chips fue la propia Intel. Reconociendo la necesidad de dar soporte a estos circuitos integrados, la empresa invirti gran cantidad de dinero en un gran y moderno edificio en Santa Clara, California, dedicado al diseo, fabricacin y venta de sus sistemas de desarrollo que, como se explic anteriormente, son computadoras autosuficientes con el hardware y software necesario para desarrollar software de microprocesadores. Los sistemas de desarrollo son factores clave para asegurar las ventas de una empresa fabricantes de chips. La inmensa mayora de ventas son a otras empresas, las cuales usan estos chips en aparatos electrnicos, diseados, fabricados y comercializados por ellas mismas. A estas empresas se las llama "fabricantes de equipo original", o en ingls, OEM (Original Equipment Manufacturer). El disminuir el tiempo de desarrollo de hardware y software para las OEM es esencial, ya que el mercado de estos productos es muy competitivo. Necesitan soporte pues los meses que les puede llevar el desarrollo de las herramientas apropiadas les puede significar prdidas por millones de dlares. Adems quieren ser los primeros fabricantes en el mercado, con lo cual pueden asegurarse las ventas en dos reas importantes: a corto plazo, ya que al principio la demanda es mucho mayor que la oferta, y a largo plazo, ya que el primer producto marca a menudo los estndares. De esta manera la empresa Intel haba desarrollado una serie completa de software que se ejecutaba en una microcomputadora basada en el 8085 llamada "Intellec Microcomputer Development System". Los programas incluan ensambladores cruzados (stos son programas que se ejecutan en un microprocesador y generan cdigo de mquina que se ejecuta en otro), compiladores de PL/M, Fortran y Pascal y varios programas de ayuda. Adems haba un programa traductor llamado CON V86 que converta cdigo fuente 8080/8085 a cdigo fuente 8086/8088. Si se observan de cerca ambos conjuntos de instrucciones, queda claro que la transformacin es sencilla si los registros se traducen as: A -> AL, B -> CH, C -> CL, D -> DH, E -> DL, H -> BH y L -> BL. Puede parecer complicado traducir LDAX B (por ejemplo) ya que el 8088 no puede utilizar el registro CX para direccionamiento indirecto, sin embargo, se puede hacer con la siguiente secuencia: MOV SI, CX; MOV AL,[SI].Esto aprovecha el hecho que no se utiliza el registro SI. Por supuesto el programa resultante es ms largo (en cantidad de bytes) y a veces ms lento de correr que en su antecesor 8085. Este programa de conversin slo serva para no tener que volver a escribir los programas en una primera etapa. Luego debera reescribirse el cdigo fuente en assembler para poder obtener las ventajas de velocidad ofrecidas por el 8088. Luego deba correr el programa en la iSBC 86/12 Single Board Computer basado en el 8086. Debido al engorro que resultaba tener dos plaquetas diferentes, la empresa Godbout Electronics (tambin de California) desarroll una placa donde estaban el 8085 y el 8088, donde se utilizaba un ensamblador cruzado provisto por la compaa Microsoft. Bajo control de software, podan conmutarse los microprocesadores. El sistema operativo utilizado era el CP/M (de Digital Research). El desarrollo ms notable para la familia 8086/8088 fue la eleccin de la CPU 8088 por parte de IBM (International Business Machines) cuando en 1981 entr en el campo de las computadoras personales. Esta computadora se desarroll bajo un proyecto con el nombre "Acorn" (Proyecto "Bellota") pero se vendi bajo un nombre menos imaginativo, pero ms correcto: "Computadora Personal IBM", con un precio inicial entre 1260 dlares y 3830 dlares segn la configuracin (con 48KB de memoria RAM y una unidad de discos flexibles con capacidad de 160KB costaba 2235 dlares). Esta computadora entr en competencia directa con las ofrecidas por Apple (basado en el 6502) y por Radio Shack (basado en el Z-80).ARQUITECTURA DE LOS PROCESADORES 8088 Y 8086 El 8086 es un microprocesador de 16 bits, tanto en lo que se refiere a su estructura como en sus conexiones externas, mientras que el 8088 es un procesador de 8 bits que internamente esPgina : 16 17. El Microprocesador - Historia casi idntico al 8086. La nica diferencia entre ambos es el tamao del bus de datos externo. Intel trata esta igualdad interna y desigualdad externa dividiendo cada procesador 8086 y 8088 en dos sub-procesadores. O sea, cada uno consta de una unidad de ejecucin (EU: Execution Unit) y una unidad interfaz del bus (BIU: Bus Interface Unit). La unidad de ejecucin es la encargada de realizar todas las operaciones mientras que la unidad de interfaz del bus es la encargada de acceder a datos e instrucciones del mundo exterior. Las unidades de ejecucin son idnticas en ambos microprocesadores, pero las unidades de interfaz del bus son diferentes en varias cuestiones, como se desprende del siguiente diagrama en bloques: La ventaja de esta divisin fue el ahorro de esfuerzo necesario para producir el 8088. Slo una mitad del 8086 (el BIU) tuvo que redisearse para producir el 8088. La explicacin del diagrama en bloques es la siguiente: Registros de uso general del 8086/8088: Tienen 16 bits cada uno y son ocho: 1) AX = Registro acumulador, dividido en AH y AL (8 bits cada uno). 2) BX = Registro base, dividido en BH y BL. 3) CX = Registro contador, dividido en CH y CL. 4) DX = Registro de datos, dividido en DH y DL. 5) SP = Puntero de pila (no se puede subdividir). 6) BP = Puntero base (no se puede subdividir). 7) SI = Puntero ndice (no se puede subdividir). 8) DI = Puntero destino (no se puede subdividir). Cualquiera de estos registros puede utilizarse como fuente o destino en operaciones aritmticas y lgicas, lo que no se puede hacer con ninguno de los seis registros que se vern ms adelante. Adems de lo anterior, cada registro tiene usos especiales: AX: Usndolo se produce (en general) una instruccin que ocupa un byte menos que si se utilizaran otros registros de uso general. Su parte ms baja, AL, tambin tiene esta propiedad. El ltimo registro mencionado es el equivalente al acumulador de los procesadores anteriores (8080 y 8085). Adems hay instrucciones como DAA; DAS; AAA; AAS; AAM; AAD; LAHF; SAHF; CBW; IN y OUT que trabajan con AX o con uno de sus dos bytes (AH o AL). Tambin se utiliza este registro (junto con DX a veces) en multiplicaciones y divisiones. BX: Es el registro base de propsito similar (se usa para direccionamiento indirecto) y es una versin ms potente del par de registros HL de los procesadores anteriores. CX: Se utiliza como contador en bucles (instruccin LOOP), en operaciones con cadenas (usando el prefijo REP) y en desplazamientos y rotaciones (usando el registro CL en los dos ltimos casos). DX: Se utiliza junto con el registro AX en multiplicaciones y divisiones, en la instruccin CWD y en IN y OUT para direccionamiento indirecto de puertos (el registro DX indica el nmero de puerto de entrada/salida). SP: Aunque es un registro de uso general, debe utilizarse slo como puntero de pila, la cual sirve para almacenar las direcciones de retorno de subrutinas y los datos temporarios (mediante las instrucciones PUSH y POP). Al introducir (push) un valor en la pila a este registro se le resta dos, mientras que al extraer (pop) un valor de la pila este a registro se le suma dos. BP: Generalmente se utiliza para realizar direccionamiento indirecto dentro de la pila. SI: Sirve como puntero fuente para las operaciones con cadenas. Tambin sirve para realizar direccionamiento indirecto. DI: Sirve como puntero destino para las operaciones con cadenas. Tambin sirve para realizar direccionamiento indirecto.UNIDAD ARITMTICA Y LGICA Es la encargada de realizar las operaciones aritmticas (suma, suma con "arrastre", resta, resta con "prstamo" y comparaciones) y lgicas (AND, OR, XOR y TEST). Las operaciones pueden ser de 16 bits o de 8 bits. Pgina : 17 18. El Microprocesador - Historia Indicadores (flags): Hay nueve indicadores de un bit en este registro de 16 bits. Los cuatro bits ms significativos estn indefinidos, mientras que hay tres bits con valores determinados: los bits 5 y 3 siempre valen cero y el bit 1 siempre vale uno (esto tambin ocurra en los procesadores anteriores). Registro de indicadores (16 bits)Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Flag -- -- -- -- OF DF IF TF SF ZF 0 AF 0 PF 1 CF CF (Carry Flag, bit 0): Si vale 1, indica que hubo "arrastre" (en caso de suma) hacia, o "prstamo" (en caso de resta) desde el bit de orden ms significativo del resultado. Este indicador es usado por instrucciones que suman o restan nmeros que ocupan varios bytes. Las instrucciones de rotacin pueden aislar un bit de la memoria o de un registro ponindolo en el CF. PF (Parity Flag, bit 2): Si vale uno, el resultado tiene paridad par, es decir, un nmero par de bits a 1. Este indicador se puede utilizar para detectar errores en transmisiones. AF (Auxiliary carry Flag, bit 4): Si vale 1, indica que hubo "arrastre" o "prstamo" del nibble (cuatro bits) menos significativo al nibble ms significativo. Este indicador se usa con las instrucciones de ajuste decimal. ZF (Zero Flag, bit 6): Si este indicador vale 1, el resultado de la operacin es cero. SF (Sign Flag, bit 7): Refleja el bit ms significativo del resultado. Como los nmeros negativos se representan en la notacin de complemento a dos, este bit representa el signo: 0 si es positivo, 1 si es negativo. TF (Trap Flag, bit 8): Si vale 1, el procesador est en modo paso a paso. En este modo, la CPU automticamente genera una interrupcin interna despus de cada instruccin, permitiendo inspeccionar los resultados del programa a medida que se ejecuta instruccin por instruccin. IF (Interrupt Flag, bit 9): Si vale 1, la CPU reconoce pedidos de interrupcin externas enmascarables (por el pin INTR). Si vale 0, no se reconocen tales interrupciones. Las interrupciones no enmascarables y las internas siempre se reconocen independientemente del valor de IF. DF (Direction Flag, bit 10): Si vale 1, las instrucciones con cadenas sufrirn "auto-decremento", esto es, se procesarn las cadenas desde las direcciones ms altas de memoria hacia las ms bajas. Si vale 0, habr "auto-incremento", lo que quiere decir que las cadenas se procesarn de "izquierda a derecha". OF (Overflow flag, bit 11): Si vale 1, hubo un desborde en una operacin aritmtica con signo, esto es, un dgito significativo se perdi debido a que tamao del resultado es mayor que el tamao del destino. SISTEMA DE CONTROL DE LA UNIDAD DE EJECUCINEs el encargado de decodificar las instrucciones que le enva la cola y enviarle las rdenes a la unidad aritmtica y lgica segn una tabla que tiene almacenada en ROM llamada CROM (Control Read Only Memory). COLA DE INSTRUCCIONESAlmacena las instrucciones para ser ejecutadas. La cola se carga cuando el bus est desocupado, de esta manera se logra una mayor eficiencia del mismo. La cola del 8086 tiene 6 bytes y se carga de a dos bytes por vez (debido al tamao del bus de datos), mientras que el del 8088 tiene cuatro bytes. Esta estructura tiene rendimiento ptimo cuando no se realizan saltos, ya que en este caso habra que vaciar la cola (porque no se van a ejecutar las instrucciones que van despus del salto) y volverla a cargar con instrucciones que se encuentran a partir de la direccin a donde se salta. Debido a esto las instrucciones de salto son (despus de multiplicaciones y divisiones) las ms lentas de este microprocesador.Pgina : 18 19. El Microprocesador - HistoriaRegistros de la unidad de interfaz con el bus: El programador puede acceder a cinco registros de 16 bits cada uno, siendo cuatro de ellos registros de segmento y el restante el puntero de instruccin (IP). Los registros de segmento se llaman: CS: Registro de segmento de cdigo. DS: Registro de segmento de datos. ES: Registro de segmento extra. SS: Registro de segmento de pila. La utilizacin de estos registros se explica ms adelante, en la seccin que trata de direccionamiento a memoria.Lgica de control del bus: El cometido de este bloque es poder unir los bloques anteriormente mencionados con el mundo exterior, es decir, la memoria y los perifricos. El 8088 tiene un bus de datos externo reducido de 8 bits. La razn para ello era prever la continuidad entre el 8086 y los antiguos procesadores de 8 bits, como el 8080 y el 8085. Teniendo el mismo tamao del bus (as como similares requerimientos de control y tiempo), el 8088, que es internamente un procesador de 16 bits, puede reemplazar a los microprocesadores ya nombrados en un sistema ya existente. El 8088 tiene muchas seales en comn con el 8085, particularmente las asociadas con la forma en que los datos y las direcciones estn multiplexadas, aunque el 8088 no produce sus propias seales de reloj como lo hace el 8085 (necesita un chip de soporte llamado 8284, que es diferente del 8224 que necesitaba el microprocesador 8080). El 8088 y el 8085 siguen el mismo esquema de compartir los terminales correspondientes a los 8 bits ms bajos del bus de direcciones con los 8 bits del bus de datos, de manera que se ahorran 8 terminales para otras funciones del microprocesador. El 8086 comparte los 16 bits del bus de datos con los 16 ms bajos del bus de direcciones. El 8085 y el 8088 pueden, de hecho, dirigir directamente los mismos chips controladores de perifricos. Las investigaciones de hardware para sistemas basados en el 8080 o el 8085 son, en su mayora, aplicables al 8088. En todo lo recin explicado se bas el xito del 8088. El 8086/8088 puede conectarse al circuito de dos formas distintas: el modo mximo y el modo mnimo. El modo queda determinado al poner un determinado terminal (llamado MN/MX) a tierra o a la tensin de alimentacin. El 8086/8088 debe estar en modo mximo si se desea trabajar en colaboracin con el Procesador de Datos Numrico 8087 y/o el Procesador de Entrada/Salida 8089 (de aqu se desprende que en la IBM PC el 8088 est en modo mximo). En este modo el 8086/8088 depende de otros chips adicionales como el Controlador de Bus 8288 para generar el conjunto completo de seales del bus de control. El modo mnimo permite al 8086/8088 trabajar de una forma ms autnoma (para circuitos ms sencillos) en una manera casi idntica al microprocesador 8085.Los 40 pines del 8088 en modo mnimo tienen las siguientes funciones: 1.- GND (Masa) 2.- A14 (Bus de direcciones) 3.- A13 (Bus de direcciones) 4.- A12 (Bus de direcciones) 5.- A11 (Bus de direcciones) 6.- A10 (Bus de direcciones) 7.- A9 (Bus de direcciones) 8.- A8 (Bus de direcciones) 9.- AD7 (Bus de direcciones y datos) 10.- AD6 (Bus de direcciones y datos) 11.- AD5 (Bus de direcciones y datos) 12.- AD4 (Bus de direcciones y datos) Pgina : 19 20. El Microprocesador - Historia 13.- AD3 (Bus de direcciones y datos) 14.- AD2 (Bus de direcciones y datos) 15.- AD1 (Bus de direcciones y datos) 16.- AD0 (Bus de direcciones y datos) 17.- NMI (Entrada de interrupcin no enmascarable) 18.- INTR (Entrada de interrupcin enmascarable) 19.- CLK (Entrada de reloj generada por el 8284) 20.- GND (Masa) 21.- RESET (Para inicializar el 8088) 22.- READY (Para sincronizar perifricos y memorias lentas) 23.- /TEST 24.- /INTA (El 8088 indica que reconoci la interrupcin) 25.- ALE (Cuando est uno indica que salen direcciones por AD, en caso contrario, es el bus de datos) 26.- /DEN (Data enable: cuando vale cero debe habilitar los transceptores 8286 y 8287 (se conecta al pin de "output enable"), esto sirve para que no se mezclen los datos y las direcciones). 27.- DT/R (Data transmit/receive: se conecta al pin de direccin de los chips recin indicados). 28.- IO/M (Si vale 1: operaciones con ports, si vale 0: operaciones con la memoria) 29.- /WR (Cuando vale cero hay una escritura) 30.- HLDA (Hold Acknowledge: el 8088 reconoce el HOLD) 31.- HOLD (Indica que otro integrado quiere aduearse del control de los buses, generalmente se usa para DMA o acceso directo a memoria). 32.- /RD (Cuando vale cero hay una lectura) 33.- MN/MX (Cuando esta entrada est en estado alto, el 8088 est en modo mnimo, en caso contrario est en modo mximo) 34.- /SSO (Junto con IO/M y DT/R esta salida sirve para determinar estados del 8088) 35.- A19/S6 (Bus de direcciones/bit de estado) 36.- A18/S5 (Bus de direcciones/bit de estado) 37.- A17/S4 (Bus de direcciones/bit de estado) 38.- A16/S3 (Bus de direcciones/bit de estado) 39.- A15 (Bus de direcciones) 40.- Vcc (+5V)En modo mximo (cuando se aplica +5V al pin 33) hay algunos pines que cambian de significado:24.- QS1: Estado de la cola de instrucciones (bit 1). 25.- QS0: Estado de la cola de instrucciones (bit 0). 26.- S0: Bit de estado 0. 27.- S1: Bit de estado 1. 28.- S2: Bit de estado 2. 29.- /LOCK: Cuando vale cero indica a otros controladores del bus (otros microprocesadores o un dispositivo de DMA) que no deben ganar el control del bus. Se activa ponindose a cero cuando una instruccin tiene el prefijo LOCK. 30.- RQ/GT1: Es bidireccional y tiene la misma funcin que HOLD/HLDA en modo mnimo. 31.- RQ/GT0: Como RQ/GT1 pero tiene mayor prioridad. 34.- Esta salida siempre est a uno. Pgina : 20 21. El Microprocesador - Historia Por ser este microprocesador mucho ms complejo que el 8085, tiene ms bits de estado que el recin mencionado. A ttulo informativo se detallan los bits de estado: S2 IO/M S1 DT/R S0/SSOSignificado 10 00 Acceso a cdigo (instrucciones) 10 01 Lectura de memoria 10 10 Escritura a memoria 10 11 Bus pasivo (no hace nada) 01 00 Reconocimiento de interrupcin 01 01 Lectura de puerto de entrada/salida 01 10 Escritura a puerto de E/S 01 11 Estado de parada (Halt) QS1QS0Significado00No hay operacin01Primer byte del cdigo de operacin10Se vaca la cola de instrucciones11Siguiente byte de la instruccinModos de direccionamiento del 8086/8088: Estos procesadores tienen 27 modos de direccionamiento (una cantidad bastante ms grande que los microprocesadores anteriores) o reglas para localizar un operando de una instruccin. Tres de ellos son comunes a microprocesadores anteriores: direccionamiento inmediato (el operando es un nmero que se encuentra en la misma instruccin), direccionamiento a registro (el operando es un registro del microprocesador) y direccionamiento inherente (el operando est implcito en la instruccin, por ejemplo, en la multiplicacin uno de los operandos siempre es el acumulador). El resto de los modos sirve para localizar un operando en memoria. Para facilitar la explicacin de estos modos, se pueden resumir de la siguiente manera: Deben sumarse cuatro cantidades: 1) direccin de segmento, 2) direccin base, 3) una cantidad ndice y 4) un desplazamiento. La direccin de segmento se almacena en el registro de segmento (DS, ES, SS o CS). En la prxima seccin se indica la forma en que se hace esto. Por ahora basta con saber que el contenido del registro de segmento se multiplica por 16 antes de utilizarse para obtener la direccin real. El registro de segmentacin siempre se usa para referenciar a memoria. La base se almacena en el registro base (BX o BP). El ndice se almacena en el registro ndice (SI o DI). Cualquiera de estas dos cantidades, la suma de las dos o ninguna, pueden utilizarse para calcular la direccin real, pero no pueden sumarse dos bases o dos ndices. Los registros restantes (AX, CX, DX y SP) no pueden utilizarse para direccionamiento indirecto. El programador puede utilizar tanto la base como el ndice para gestionar ciertas cosas, tales como matrices de dos dimensiones, o estructuras internas a otras estructuras, esquemas que se utilizan en las prcticas comunes de programacin. La base y el ndice son variables o dinmicas, ya que estn almacenadas en registros de la CPU. Es decir, pueden modificarse fcilmente mientras se ejecuta un programa. Adems del segmento, base e ndice, se usa un desplazamiento de 16 bits, 8 bits o 0 bits (sin desplazamiento). sta es una cantidad esttica que se fija al tiempo de ensamblado (paso de cdigo fuente a cdigo de mquina) y no puede cambiarse durante la ejecucin del programa (a menos que el programa se escriba sobre s mismo, lo que constituye una prctica no aconsejada). Todo esto genera los 24 modos de direccionamiento a memoria que se ven a continuacin: Registro indirecto: 1) [BX], 2) [DI]. 3) [SI]. Basado: 4) desp8[BX], 5) desp8[BP], 6) desp16[BX], 7) desp16[BP]. Indexado: 8) desp8[SI], 9) desp8[DI], 10) desp16[SI], 11) desp16[DI]. Basado-indexado: 12) [BX+SI], 13) [BX+DI], 14) [BP+SI], 15) [BX+DI]. Pgina : 21 22. El Microprocesador - Historia Basado-indexado con desplazamiento: 16) desp8[BX+SI], 17) desp8[BX+DI], 18) desp8[BP+SI], 19) desp8[BX+DI], 20) desp16[BX+SI], 21) desp16[BX+DI], 22) desp16[BP+SI], 23) desp16[BX+DI]. Directo: 24) [desp16]. Aqu desp8 indica desplazamiento de 8 bits y desp16 indica desplazamiento de 16 bits. Otras combinaciones no estn implementadas en la CPU y generarn error al querer ensamblar, por ejemplo, ADD CL,[DX+SI]. El ensamblador genera el tipo de desplazamiento ms apropiado (0, 8 16 bits) dependiendo del valor que tenga la constante: si vale cero se utiliza el primer caso, si vale entre -128 y 127 se utiliza el segundo, y en otro caso se utiliza el tercero. Ntese que [BP] sin desplazamiento no existe. Al ensamblar una instruccin como, por ejemplo, MOV AL,[BP], se generar un desplazamiento de 8 bits con valor cero. Esta instruccin ocupa tres bytes, mientras que MOV AL,[SI] ocupa dos, porque no necesita el desplazamiento. Estos modos de direccionamiento producen algunos inconvenientes en el 8086/8088. La CPU gasta tiempo calculando una direccin compuesta de varias cantidades. Principalmente esto se debe al hecho de que el clculo de direcciones est programado en microcdigo (dentro de la CROM del sistema de control de la unidad de ejecucin). En las siguientes versiones (a partir del 80186/80188) estos clculos estn cableados en la mquina y, por lo tanto, cuesta mucho menos tiempo el realizarlos. Veamos un ejemplo: MOV AL, ES:[BX+SI+6]. En este caso el operando de la izquierda tiene direccionamiento a registro mientras que el de la derecha indica una posicin de memoria. Poniendo valores numricos, supongamos que los valores actuales de los registros sean: ES = 3200h, BX = 200h, SI = 38h. Como se apunt ms arriba la direccin real de memoria ser: ES * 10h + BX + SI + 6 = 3200h * 10h + 200h + 38h + 6 = 3223Eh Estructura de memoria de segmentacin: Como se ha mencionado anteriormente, el 8086/8088 usa un esquema ingenioso llamado segmentacin, para acceder correctamente a un megabyte completo de memoria, con referencias de direcciones de slo 16 bits. Veamos cmo funciona. Cualquier direccin tiene dos partes, cada una de las cuales es una cantidad de 16 bits. Una parte es la direccin de segmento y la otra es el offset. A su vez el offset se compone de varias partes: un desplazamiento (un nmero fijo), una base (almacenada en el registro base) y un ndice (almacenado en el registro ndice). La direccin de segmento se almacena en uno de los cuatro registros de segmento (CS, DS, ES, SS). El procesador usa estas dos cantidades de 16 bits para calcular la direccin real de 20 bits, segn la siguiente frmula: Direccin real = 16 * (direccin del segmento) + offset Tal como veamos antes, dado que 16 en decimal es 10 en hexadecimal, multiplicar por ese valor es lo mismo que correr el nmero hexadecimal a la izquierda una posicin. Hay dos registros de segmento que tienen usos especiales: el microprocesador utiliza el registro CS (con el offset almacenado en el puntero de instruccin IP) cada vez que se debe acceder a un byte de instruccin de programa, mientras que las instrucciones que utilizan la pila (llamados a procedimientos, retornos, interrupciones y las instrucciones PUSH y POP) siempre utilizan el registro de segmento SS (con el offset almacenado en el registro puntero de pila SP). De ah los nombres que toman: CS es el segmento de cdigo mientras que SS es el registro segmento de pila. Para acceder a datos en la memoria se puede utilizar cualquiera de los cuatro registros de segmento, pero uno de ellos provoca que la instruccin ocupe un byte menos de memoria: es el llamado segmento por defecto, por lo que en lo posible hay que tratar de usar dicho segmento para direccionar datos. Este segmento es el DS (registro de segmento de datos) para todos los casos excepto cuando se utiliza el registro base BP. En este caso el segmento por defecto es SS. Si se utiliza otro registro, el ensamblador genera un byte de prefijo correspondiente al segmento antes de la instruccin: CS -> 2Eh, DS -> 3Eh, ES -> 26h y SS -> 36h. El uso de estos diferentes segmentos significa que hay reas de trabajo separadas para el programa, pila y los datos. Cada rea tiene un tamao mximo de 64 KBytes. Dado que hay cuatro registros Pgina : 22 23. El Microprocesador - Historia de segmento, uno de programa (CS), uno de pila (SS) y dos de datos (segmento de datos DS y segmento extra ES) el rea de trabajo puede llegar a 4 * 64 KB = 256 KB en un momento dado suponiendo que las reas no se superponen. Si el programa y los datos ocupan menos de 64 KB, lo que se hace es fijar los registros de segmento al principio del programa y luego se utilizan diferentes offsets para acceder a distintas posiciones de memoria. En caso contrario necesariamente debern cambiarse los registros de segmento en la parte del programa que lo requiera. Los registros de segmento DS, ES y SS se cargan mediante las instrucciones MOV y POP, mientras que CS se carga mediante transferencias de control (saltos, llamadas, retornos, interrupciones) intersegmento.Estructura de interrupciones del 8086/8088 Hay tres clases de interrupcin: por hardware, por software e internas (a las dos ltimas tambin se las llama "excepciones"). Veremos primeramente el caso de interrupciones por hardware: Como se mencion anteriormente, el 8086/8088 tiene dos entradas de peticin de interrupcin: NMI e INTR y una de reconocimiento (INTA). La gran mayora de las fuentes de interrupcin se conectan al pin INTR, ya que esto permite enmascarar las interrupciones (el NMI no). Para facilitar esta conexin, se utiliza el circuito integrado controlador de interrupciones, que tiene el cdigo 8259A. Este chip tiene, entre otras cosas, ocho patas para sendas fuentes de interrupcin (IRQ0 - IRQ7), ocho para el bus de datos (D0 - D7), una salida de INTR y una entrada de INTA. Esto permite una conexin directa con el 8088/8086. Al ocurrir una peticin de alguna de las ocho fuentes, el 8259A activa la pata INTR. Al terminar de ejecutar la instruccin en curso, el microprocesador activa la pata INTA, lo que provoca que el 8259A enve por el bus de datos un nmero de ocho bits (de 0 a 255) llamado tipo de interrupcin (programable por el usuario durante la inicializacin del 8259A), que el 8086/8088 utiliza para saber cul es la fuente de interrupcin. A continuacin busca en la tabla de vectores de interrupcin la direccin del manejador de interrupcin (interrupt handler). Esto se hace de la siguiente manera. Se multiplica el tipo de interrupcin por cuatro, y se toman los cuatro bytes que se encuentran a partir de esa direccin. Los dos primeros indican el offset y los dos ltimos el segmento del manejador, como se muestra a continuacin. Posi 00020406 080A0C 0E10123F3cin C Fmem Eoria IPCSIPCS IPCSIP CSIPCSIPC STipode 0001020304FFInterrupcin Como se puede observar, la tabla ocupa el primer kilobyte de memoria (256 tipos * 4 bytes/tipo = 1024 bytes). Una vez que se pusieron en la pila los flags, CS e IP (en ese orden), la CPU hace IF Las interrupciones por software ocurren cuando se ejecuta la instruccin INT tipo. De esta manera se pueden simular interrupciones durante la depuracin de un programa. El tipo de interrupcin (para poder buscar el vector en la tabla) aparece en la misma instruccin como una constante de 8 bits. Muchos sistemas operativos (programas que actan a modo de interfaz entre los programas de los usuarios (llamados tambin "aplicaciones") y el hardware del sistema) utilizan esta instruccin para llamadas a servicios, lo que permite no tener que conocer la direccin absoluta del servicio, permitiendo cambios en el sistema operativo sin tener que cambiar los programas que lo ejecutan. De esta manera, una de las primeras operaciones que debe realizar dicho sistema operativo es inicializar la tabla de vectores de interrupcin con los valores apropiados. Existen algunas interrupciones predefinidas, de uso exclusivo delPgina : 23 24. El Microprocesador - Historia microprocesador, por lo que no es recomendable utilizar estos tipos de interrupcin para interrupciones por hardware o software. - Tipo 0: Ocurre cuando se divide por cero o el cociente es mayor que el valor mximo que permite el destino. - Tipo 1: Ocurre despus de ejecutar una instruccin si TF (Trap Flag) vale 1. Esto permite la ejecucin de un programa paso a paso, lo que es muy til para la depuracin de programas. - Tipo 2: Ocurre cuando se activa la pata NMI (interrupcin no enmascarable). - Tipo 3: Existe una instruccin INT que ocupa un slo byte, que es la correspondiente a este tipo. En los programas depuradores (debuggers) (tales como Debug, CodeView, Turbo Debugger, etc.), se utiliza esta instruccin como punto de parada (para ejecutar un programa hasta una determinada direccin, fijada por el usuario del depurador, se inserta esta instruccin en la direccin correspondiente a la parada y se lanza la ejecucin. Cuando el CS:IP apunte a esta direccin se ejecutar la INT 3, lo que devolver el control del procesador al depurador). Debido a esto, si se le ordena al depurador que ejecute el programa hasta una determinada direccin en ROM (memoria de slo lectura) (por ejemplo, para ver cmo funciona una subrutina almacenada en dicha memoria), la ejecucin seguir sin parar all (ya que la instruccin INT 3 no se pudo escribir sobre el programa). En el 80386, con su elaborado hardware de ayuda para la depuracin, se puede poner un punto de parada en ROM. - Tipo 4: Ocurre cuando se ejecuta la instruccin de interrupcin condicional INTO y el flag OF (Overflow Flag) vale 1. Los tipos 5 a 31 (1F en hexadecimal) estn reservados para interrupciones internas (tambin llamados "excepciones") de futuros microprocesadores. Prioridad entre diferentes fuentes de interrupcin: 1) Error de divisin, INT n (no enmascarable), INTO. 2) NMI (no enmascarable). 3) INTR (enmascarable mediante IF). 4) Ejecucin paso a paso (enmascarable mediante TF).BIBLIOGRAFIA - Pgina de Internet: [email protected] - Pgina de Internet: intel.comCONTENIDO Historia de los microprocesadores Intel CISC RISC Caractersticas mas importantes de los microprocesadores Intel Los microprocesadores 8086 y 8088 Historia del 8086/8088 Arquitectura de los procesadores 8088 y 8086 Unidad aritmtica lgica Sistema de Control de la Unidad de Ejecucin Cola de Instrucciones Registros de la unidad de interfaz con el bus Lgica de control del bus Modos de direccionamiento del 8086/8088 Estructuras de interrupciones del 8086/8088 Trabajo enviado por: Bethsy Diaz [email protected] : 24 25. El Microprocesador - HistoriaProcesadores: Aspectos tecnolgicosHistoria:La historia de los microprocesadores se inicia en 1948 con la invencin del transistor por John Bardeen y Walter H. Brattain en los Laboratorios Bell de AT&T [6], y la posterior introduccin del circuito integrado IC, en 1959 [4] por Robert Noyce en Fairchild Semiconductors y Jack Kilby en Texas Instruments. El 15 de Noviembre de 1971 Intel introduce el 4004 que corra a 108 KHz con 2.300 transistores y una tecnologa de 10 micras. Este procesador fue desarrollado por encargo de una compaa japonesa para una calculadora (Busicom). En Abril de 1972 se lanza el 8008 a 200 KHz con 3.500 transistores y tecnologa de 10 micras. En Abril de 1974 se lanza el 8080, a 2 MHz con 6.000 transistores y tecnologa de 6 micras.Este procesador es el que inicia la era de la micro computadora, pues origin el primer ordenador personal, el Altair 8800. El Sistema Operativo CP/M fue escrito para l [5], y Microsoft fue fundada para producir un intrprete de Basic para dicho procesador. Su xito fue tal que incluso fue clonado, dando lugar al Z-80 construido por Zilog, una empresa constituida por ingenieros que provenan de Intel. Este procesador inclua un superconjunto de las instrucciones del 8080 con lo que poda correr el software de aquel. En Junio de 1978 Intel lanza el 8086 a 5 MHz con 29.000 transistores. Una versin reducida, el 8088 fue el elegido para motorizar el primer IBM-PC.2 Proceso de fabricacin: Fabricacin de un monocristal de silicio de cientos de quilos de peso; unos 20 cm x 150 cm, en un proceso muy lento (10 a 40 mm/hora) a alta temperatura (1370 C). Rectificado de la superficie y corte de sus extremos hasta conseguir un cilindro perfecto. Separacin de obleas por corte mediante sierra de diamante. Cada una de menos de 1 mm de grosor (se obtienen miles de ellas de cada barra). Las obleas se pulen hasta conseguir un acabado especular y se recubren de una primera capa aislante de xido de silicio mediante deposicin de vapor. Fotolitografa: Deposicin de una pelcula de material fotosensible; a continuacin se proyecta sobre esta pelcula la primera mscara. Un ataque castico disuelve las zonas en que el material fotosensible ha sido expuesto a la luz, con lo que se crean zanjas microscpicas (0.25, 0.18 y 0.13 micras). El proceso sigue con el dopaje, que consiste en crear capas con propiedades semiconductoras (que sern posteriormente parcialmente disueltas) mediante la adicin de impurezas. El Pentium III utiliza ms de 20 mscaras para crear seis capaz de interconexiones de metal y semiconductoras. Las zonas de interconexin se efectan mediante metalizacin. Actualmente (2002) se utiliza principalmente aluminio, pero empieza a utilizarse cobre que es mejor conductor que aquel, y permite interconexiones ms pequeas (aunque presenta ms problemas de corrosin que el aluminio). Testeo y corte: Se marcan las unidades malas y se cortan con laser o diamante. (tasa de errores). Encapsuladoy comprobacin final a diversas velocidades y temperaturas.Estado actual: Se pretende llegar a monocristales de 30 cm de dimetro con unos 670 circuitos por oblea. Se est en 140 millones de transistores en un solo circuito integrado (Pentium III Xeon).Pgina : 25 26. El Microprocesador - Historia 3 Caractersticas distintivas:3.1 Tamao de los registros internos (8088 16; 80386 y siguientes 32 bits).3.2 Anchura del bus de datos (8088 8; 80286 16; 80486 32; Pentium 64 bits)3.3 Anchura del bus de direcciones (8088 20; 80286 24; 80486 32 y Pentium 36 bits).3.4 Velocidad3.5 Encapsulado3.6 Voltaje4 VelocidadNo hay un estndar para medirla. Uno de los pocos datos objetivos es la frecuencia a que funciona, aunque existen otros muchos factores, tales como el nmero de instrucciones que es capaz de ejecutar en cada ciclo (arquitectura sper escalar), los juegos de instrucciones para aplicaciones especficas como la tecnologas MMX, las extensiones SIMD o 3DNow, la ejecucin dinmica, arquitectura de bus independiente, etc.Tiempos medios por instruccin8086 y 8088: Un promedio de 12 ciclos por instruccin80286 y 80386: Un promedio de 4.5 ciclos por instruccin (el 80386 fue el primer procesador de ordenador personal en implementar arquitectura de ejecucin paralela).80486: Media de 2 ciclos por instruccinPentium y AMD serie K6: 2 instrucciones por ciclo.Pentium Pro, Celern, Athlon y Duron: Por encima de 3 instrucciones por ciclo.A partir del Intel 80486 los procesadores funcionan a una velocidad mayor que lo que pueden hacer los circuitos y buses de la placa-base (bus externo). La situacin actual es que las velocidades tpicas de las placas-base son de 60- 66- 100- 133 MHz mientras que los procesadores funcionan a frecuencias mltiplos de aquellas; tpicamente de 1x hasta 10x, es decir, desde 60 a 1330 MHz. Dado que el procesador est conectado con el bus externo, es fcil comprender que en su interior existan buses que trabajan a distintas velocidades. Para distinguirlos es frecuente referirse a la velocidad del bus ms rpido como velocidad del ncleo y a la del bus que conecta con el bus externo como velocidad del bus frontal ("Front-side bus").4.1 Tecnologa MMXLa tecnologa MMX ("MultiMedia eXtensions") fue introducida en 1.997 por Intel en sus procesadores Pentium para mejorar la manipulacin de imgenes y tratamiento de codecs de audio/video, mediante un conjunto de 57 nuevas instrucciones, as como una nueva capacidad denominada SIMD ("Single Instrucction Multiple Data").4.2 Extensiones SIMDCon la aparicin del Pentium III en 1.999 se introdujeron nuevas mejoras en la tecnologa MMX, introduciendo 70 nuevas instrucciones denominadas SSE ("Streaming SIMD Extensions") o KNI ("Katmai News Instrucctions") puesto que Katmai que era el nombre clave del Pentium III antes de su lanzamiento.Las instrucciones SSE son especialmente adecuadas para decodificacin de MPEG2, que es el codec utilizado normalmente en los DVDs, procesamiento de grficos tridimensionales y software de reconocimiento de voz. Pgina : 26 27. El Microprocesador - Historia 4.3 3DNowLa tecnologa 3DNow es la respuesta AMD a las SSE de Intel. Se introdujo por primera vez en 1.998 en la serie K6 de procesadores, y son un conjunto de 21 instrucciones que mejoran las capacidades multimedia de estos procesadores. Enhanced 3DNow aade otras 24 nuevas instrucciones a las anteriores.4.4 Arquitectura DIBLa arquitectura de bus dual independiente DIB ("Dual Independent Bus") consiste en que el procesador dispone de dos buses exteriores que pueden funcionar simultanea e independientemente. El principal es el que comunica con el bus de la placa-base (bus del sistema); el segundo (bus de apoyo), comunica el procesador con la cache L-2.Para sacar pleno rendimiento de este segundo bus, se sac esta cach de la placa-base y se la acerc al procesador, permitiendo que funcionase a la misma velocidad que el ncleo (la cach L-1 siempre ha estado incluida en el procesador).4.5 SobrecargaLa Sobrecarga ("Overclocking") consiste en aumentar la eficiencia del procesador aumentando su velocidad de trabajo (frecuencia) por encima de la prevista por el fabricante.Aspectos relativos al marcaje de la velocidad de los procesadores por los fabricantes; remarcado y mercado negro de procesadores; limitacin de la velocidad por el fabricante.Nota: La compaa Intel proporciona gratuitamente un software especial, denominado Processor Frequency ID Utilitysupport.intel.com que permite a los usuarios determinar si un determinado procesador Intel est operando a la frecuencia correcta. Adems permite identificar el tipo de procesador utilizado en el sistema y algunas de sus caractersticas como tipo y tamao de cach; encapsulado y tecnologa (MMX y SMID).El programa existe en dos versiones. Una de ellas corre bajo Windows, la otra, denominada "bootable", no necesita un Sistema Operativo instalado para correr [2]; puede instalarse en un disquete y arranca antes que el SO. 5 Encapsulados:Concepto: Relacin con el tipo de zcalo. Existen varios tipos de encapsulado: DIP "Dual In-line Package". El 8088 estaba encapsulado en un DIP de 40 pines. PGA "Pin Grid Array". Se utiliza a partir de la introduccin de 80286 en 1.982. Existen muchasversiones: Socket 1, 169 pines; Socket 2, 238 p; Socket 3, 237 p; Socket 4, 273 p; Socket 5, 320 p;Socket 6, 235 p [1]; Socket 7, 321 p y Socket 8, 387 p. SE "Single Edge".Ranura 1 cartuchos SEC (Single Edge Card) y SEP (Single Edge Connector) de 242 pines.Ranura 2 con 330 pines. Servidores y sistemas de altas prestaciones con Pentium Xeon.Historia: Zcalos de patillas planas y torneadas; origen de los zcalos LIF y ZIF.Se requieren unas 100 libras de fuerza para insertar un procesador de 169 pines en un zcalo estndar (unos 45 Kg). Pgina : 27 28. El Microprocesador - Historia Se disearon los zcalos LIF ("Low Insertion Force") que limitaban a 60 libras (unos 27 Kg), y los ZIF ("Zero Insertion Force") que no requieren ninguna fuerza para su insercin o retirada.6 Voltaje e intensidad:Consideraciones generales sobre el binomio tensin-intensidad, potencia consumida (W = V * I). La potencia consumida se disipa en forma de calor ( 1 Wh = 860.42 caloras). El procesador es el elemento de mayor consumo de la placa-base; tendencia a reducir el consumo/calentamiento.Los primitivos procesadores, incluyendo el 8088 funcionaban a 5 V., al igual que el resto de los componentes de la placa-base.Posteriormente el voltaje ha ido reducindose: 3.5; 3.3; ... 2.2 V. Aunque la tensin de los elementos de la placa- base se ha mantenido en 3.3 V. (tecnologa de reduccin de voltaje VRE), de forma que la tensin del ncleo es distinta que la del resto del sistema.Mtodos de regulacin del voltaje: Ninguno (sistemas antiguos) Seleccin mediante jumpers en la placa-base Seleccin automtica (pines VID). 6.1 Disipadores:6.1.1 Motivo de su utilizacin.6.1.2 Tipos: Activos y pasivos (con y sin ventilador o elemento de refrigeracin incorporado). Todos los tipos: Colocacin (grasa de transferencia trmica, generalmente un compuesto de plata que facilita la transmisin del calor desde el chip al disipador). Disipadores activos: Estn provistos de un ventilador que en ocasiones puede ser de velocidad variable en funcin de la temperatura, de unas 500 r.p.m. Su capacidad se mide en trminos del caudal de aire que proporcionan, generalmente expresado en CFM (Cubic Feet per Minute), equivalentes a 28.316 litros/minuto; la presin no suele estar indicada, pero se expresa en PSI ("Pounds per Square Inch"), equivalentes a 0.488 gr/cm2. Notas de calidad: Preferiblemente con rodamientos, su MTBF de unas 50.000 horas.Formas de alimentacin de los disipadores activos. 6.1.3 Programas de control de temperatura.SpeedFan: http://www.almico.com/speedfan.phpControl de velocidad de los ventiladores en funcin de la temperatura del equipo. Adems, si sus discos disponen de la capacida