Universidad Ricardo Palma FACULTTAD DE INGENIERÍA FACUL ESCUELA ACADÉMICO PROFESIONAL DE INGENIERÍA INFORMTICA
DEPARTAMENTO ACADÉMICO DE INGENIERÍA
C!rso" Circuito y Sistemas Digitales Pro#ec$o" MicroComputador Pro%esor" Dr. (c) Ing. David Arauco In$e&ran$es"
Gomez Morocho, onathan ulio. Mercedes !snayo, Dave "roy. #etamozo Santi, oel. $itancio %a&aleta, #osemary
A'o"
2016 – I
INDICE '
CAI!*+ ' G--#ACI+-S D- *AS C+M!AD+#AS//////////////////////.0 '. rimer imera a generaci1n//////////////////////////// //////.//0 2. Segunda generaci1n//////////////////////////// ///////..0 3. erce ercera ra generaci1n//////////////////////////// ///////./4 0. Cuarte generaci1n//////////////////////////// ////////..4 4. 5uinta generaci1n//////////////////////////// ////////..4 CAI!*+ 2 MIC#+#+C-SAD+#-S/////////////////////////// //////6 6. Micro Micropr proce ocesa sador dor 7878/////////////////////////////// ///6 Modelo de programaci1n///////////////////////// /////6 -s9uema entrada salida///////////////////////////// //6 :. Micro Micropr proce ocesa sador dor 7874/////////////////////////////// ///: Introducci1n////////////////////////// ////////////: -structura de interrupci1n////////////////////////// ////: Control de entrada salida///////////////////////////. ///; 7. Micro Micropr proce ocesa sador dor 7876<7877//////////////////////////. ////; Introducci1n////////////////////////// ///////././//;
2
CAI!*+ ' G--#ACI+-S D- *AS C+M!AD+#AS//////////////////////.0 '. rimer imera a generaci1n//////////////////////////// //////.//0 2. Segunda generaci1n//////////////////////////// ///////..0 3. erce ercera ra generaci1n//////////////////////////// ///////./4 0. Cuarte generaci1n//////////////////////////// ////////..4 4. 5uinta generaci1n//////////////////////////// ////////..4 CAI!*+ 2 MIC#+#+C-SAD+#-S/////////////////////////// //////6 6. Micro Micropr proce ocesa sador dor 7878/////////////////////////////// ///6 Modelo de programaci1n///////////////////////// /////6 -s9uema entrada salida///////////////////////////// //6 :. Micro Micropr proce ocesa sador dor 7874/////////////////////////////// ///: Introducci1n////////////////////////// ////////////: -structura de interrupci1n////////////////////////// ////: Control de entrada salida///////////////////////////. ///; 7. Micro Micropr proce ocesa sador dor 7876<7877//////////////////////////. ////; Introducci1n////////////////////////// ///////././//;
2
Modos de direccionamiento/////////////////////// /././/'8 -structura de memoria de segmentaci1n///////////////.//.///'' -structura de interrupciones///////////////////////.. //.//'3 ;. Micro Micropr proce ocesa sador dor 78'76<78'77/////////////////////////// //'4 Introducci1n////////////////////////// ///////////.'4 Generador de relo=////////////////////////////// ////'4 emporizado emporizadores//// res////////////// /////////////////// ////////// / ///////////.'6 Canales de DMA///////////////////////////// //////'6 Control de interrupciones///////////////////////// ////..': Generaciones Generaciones de Chip Select y #eady///////////////////////': !nidad de Control de roceso///////////////////////////': '8.Microprocesador 78276////////////////////////////// ///'7 Introducci1n////////////////////////// ///////////.'7 Modo protegido/////////////////////////// ////////'; Mecanismo de direccionamiento/////////////////////// //'; Segmentaci1n///////////////////////// ///////////28 a&la a&la de descriptores descriptores glo&ales//////////////////////////.28 a&la a&la de descriptores descriptores de de I-##!CI+////////////////////.28 rotecci1n/////////////////////////// ///////////2' #eglas de privilegio y rivilegio de tarea/////////////////////22 3
rivilegio de entrada y salida////////////////////////////22 ''.Microprocesador 78376////////////////////////////// //..23 Introducci1n////////////////////////// ///////////23 $ersiones/////////////////////////// ////////////24 #egistros de prop1sito general//////////////////////////.24 #egistro de introducci1n////////////////////////// ////26 #egistro segmentos, descriptores de segmento y de control/////////.27 Acceso a registros/////////////////////////// ///////38 Modo protegido/////////////////////////// ////////3' Descriptores del segmento/////////////////////////// /..3' '2.Microprocesador 78076////////////////////////////// //..30 >lo9ues 9ue componen////////////////////////// ////.30 !nidad de cach?///////////////////////////// /////.34 "uncionamiento//////////////////////// //////////.34 '3.Microprocesador entium///////////////////////////// //.3: Introducci1n////////////////////////// ///////////3: Ar9uitectura///////////////////////// ////////////3; CAI!*+ 3 -M!*AD+#-S @ SIM!*AD+#-S///////////////////////////..00
0
'0.-mulador 7878/////////////////////////////// //////.00 '4.Simulador 7874/////////////////////////////// //////00 '6.-mulador 7876<7877//////////////////////////// /////..04 ':.-mulador 78'76<78'77/////////////////////////// /////.04 '7.Simulador 78276////////////////////////////// //////.06 ';.Simulador 78376////////////////////////////// //////.06 28.-mulador 78076////////////////////////////// //////..0: 2'.Simulador entium///////////////////////////// //////0:
4
Capitulo 1 Generaciones de las computadoras:
Primera Generación (1946-195!:
En esta época las computadoras funcionaban con válvulas, usaban tarjetas perforadas para entrar los datos y los programas, utilizaban cilindros magnéticos para almacenar información e instrucciones internas y se utilizaban exclusivamente en el ámbito científico o militar. La programación implicaba la modificación directa de los cartucos y eran sumamente grandes, utilizaban gran cantidad de electricidad, generaban gran cantidad de calor y eran sumamente lentas. "e#unda Generación (195-1964!
!aracterísticas de ésta generación" #saban transistores para procesar información. Los transistores eran más rápidos, pe$ue%os y más confiables $ue los tubos al vacío. &'' transistores podían acomodarse en la misma cantidad de espacio $ue un tubo al vacío. #saban pe$ue%os anillos magnéticos para almacenar información e instrucciones. (roducían gran cantidad de calor y eran sumamente lentas. )e mejoraron los programas de computadoras $ue fueron desarrollados durante la primera generación. )e desarrollaron nuevos lenguajes de programación como !*+*L y *--/0, los cuales eran comercialmente accesibles. )e usaban en aplicaciones de sistemas de reservaciones de líneas aéreas, control del tráfico aéreo y simulaciones de propósito general. La marina de los Estados #nidos desarrolla el primer simulador de vuelo, !omputadora 1irl2ind. )e comenzó a disminuir el tama%o de las computadoras. /parecen mucas compa%ías y las computadoras eran bastante avanzadas para su época como la serie 3''' de +urrougs y la /L/) de la #niversidad de 4áncester . /lgunas computadoras se programaban con cintas perforadas y otras por medio de cableado en un tablero.
6
$ercera Generación (1964-19%1!
!omienza a utilizarse los circuitos integrados, lo cual permitió abaratar costos al tiempo $ue se aumentaba la capacidad de procesamiento y se reducía el tama%o de las má$uinas. La tercera generación de computadoras emergió con el desarrollo de circuitos integrados 5pastillas de silicio6 en las $ue se colocan miles de componentes electrónicos en una integración en miniatura. El (7(89 de la 7igital E$uipment !orporation fue el primer miniordenador. Cuarta Generación (19%1-19&!
ase caracterizada por la integración sobre los componentes electrónicos, lo $ue propició la aparición del microprocesador , es decir, un :nico circuito integrado en el $ue se re:nen los elementos básicos de la má$uina. )e desarrolló el microprocesador. )e colocan más circuitos dentro de un ;cip;. ;L)< 8 Large )cale lógica. El tercer componente, la memoria primaria, es operado por otros ;cips;. )e reemplaza la memoria de anillos magnéticos por la memoria de ;cips; de silicio. )e desarrollan las microcomputadoras, o sea, computadoras personales o (!. )e desarrollan las supercomputadoras. 'uinta Generación (194-1999!
)urge la (! tal cual como la conocemos en la actualidad. <+4 presenta su primera computadora personal y revoluciona el sector informativo. En vista de la acelerada marca de la microelectrónica, la sociedad industrial se a dado a la tarea de poner también a esa altura el desarrollo del soft2are y los sistemas con $ue se manejan las computadoras.
:
Capitulo )icroprocesadores: )icroprocesador ** )odelo de pro#ramación
El
Es+uema de entrada,salida
El 9'9' tenía &3A puertos de <>* 5entrada>salida6 $ue podían ser usados por los programas mediante instrucciones dedicadas de <>*, cada una de esas instrucciones tomando una dirección de puerto de <>* como su operando. Este es$uema, $ue usaba un espacio de direcciones separado para las entradas>salidas, es aora usado menos com:nmente $ue el de mapeo de memoria para dispositivos o puertos de <>*. En el tiempo del lanzamiento 9'9', el es$uema de mapeo de <>* era visto como una ventaja, pues liberaba el n:mero limitado de pines de dirección del procesador para usarlo en el espacio de dirección de la memoria. )in embargo, en la mayoría de las otras ar$uitecturas de !(#, el mapeo de los puertos de <>* en un espacio de direcciones com:n para la memoria y el <>*, daba un conjunto de instrucciones más simple, con ninguna necesidad de instrucciones separadas de <>*. 7
)icroprocesador *5 Introducción
El siguiente microprocesador creado por la empresa
Estructura de Interrupciones del *5
El microprocesador 9'93 posee un complejo y completo sistema de interrupciones. Esta u( posee cinco terminales destinados al tratamiento de interrupciones. -ecordemos $ue una interrupción es un artificio ard2are>soft2are por el cual es posible detener el programa en curso para $ue, cuando se produzca un ;
evento predeterminado, después de concluir la instrucción $ue está ejecutando, efect:e un salto a una determinada subrutina en donde se efectuará el tratamiento de la interrupciónH una vez acabado éste, el u( contin:a con la instrucción siguiente del programa principal. /sí pues, el 9'93 dispone de tres formas diferentes de tratar las interrupciones $ue le llegan por los citados cinco terminales. Los nombres de estos cinco terminales son" •
IN$/ 5Interrupt Request 6" (or esta entrada se introduce una interrupción
$ue es aceptada o no seg:n aya sido previamente indicado por las instrucciones EI 5(ermitir interrupciones6 o DI 50o permitir interrupciones6. !uando una interrupción es permitida y ésta se a producido, la !(# busca una instrucción /"$ 5de un sólo byte6, $ue es presentada por el bus de datos por el periférico $ue interrumpe. Este byte tiene el formato binario @@ III @@@. La subrutina se ubicará en la dirección '' III '''. •
/"$ 505, /"$ 605 y /"$ %05" Los terminales de /"$ 505 y /"$ 605 detectan la interrupción sólo si la se%al $ue se les aplica es un uno
lógico o nivel alto de una cierta duración, lo mismo $ue la entrada anterior <0-H sin embargo, la entrada de interrupción correspondiente al terminal /"$ %05 se excita por flanco ascendente, es decir, por una transición de cero a uno. Esta transición se memoriza en un biestable en el interior del u(. Estas interrupciones se pueden abilitar o desabilitar mediante las instrucciones EI y DI, como en el caso de <0-H pero además son enmascarables por soft2are mediante la instrucción )<4 5)et
$/P" Es una interrupción no enmascarable $ue es activada cuando el
terminal del mismo nombre se lleva a nivel lógico uno. Esta interrupción es la de más alta prioridad, por lo $ue puede ser usada para tratar los acontecimientos más relevantes, tales como errores, fallos de alimentación, etc.
!ontrol de entrada>salida serie '8
Este microprocesador posee dos terminales denominados "ID 5)erial
)icroprocesadores *6 , * Introducción
El Intel *6 y el Intel * 5i*6, llamados oficialmente iP2 6, y i*6 son los primeros microprocesadores de @A bits dise%ados por
4odos de direccionamiento del 9'9A>9'99" Estos procesadores tienen &D modos de direccionamiento 5una cantidad bastante más grande $ue los microprocesadores anteriores6 o reglas para localizar un operando de una instrucción. res de ellos son comunes a microprocesadores anteriores" direccionamiento inmediato 5el operando es un n:mero $ue se encuentra en la misma instrucción6, direccionamiento a registro 5el operando es un registro del microprocesador6 y direccionamiento inerente 5el operando está implícito en la instrucción, por ejemplo, en la multiplicación uno de los operandos siempre es el acumulador6. El resto de los modos sirve para localizar un operando en memoria. (ara facilitar la explicación de estos modos, se pueden resumir de la siguiente manera" 7eben sumarse cuatro cantidades" @6 dirección de segmento, &6 dirección base, K6 una cantidad índice y ?6 un desplazamiento. La dirección de segmento se almacena en el registro de segmento 57), E), )) o !)6. En la próxima sección se indica la forma en $ue se ace esto. (or aora basta con saber $ue el contenido del registro de segmento se multiplica por @A antes de utilizarse para obtener la dirección real. El registro de segmentación siempre se usa para referenciar a memoria. La base se almacena en el registro base 5+I o +(6. El índice se almacena en el registro índice 5)< o 7<6. !ual$uiera de estas dos cantidades, la suma de las dos o ninguna, pueden utilizarse para calcular la dirección real, pero no pueden sumarse dos bases o dos índices. Los registros restantes 5/I, !I, 7I y )(6 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, es$uemas $ue se utilizan en las prácticas comunes de programación. La base y el índice son variables o dinámicas, ya $ue están almacenadas en registros de la !(#. Es decir, pueden modificarse fácilmente mientras se ejecuta un programa. /demás del segmento, base e índice, se usa un desplazamiento de @A bits, 9 bits o ' bits 5sin desplazamiento6. sta es una cantidad estática $ue se fija al tiempo de ensamblado 5paso de código fuente a código de má$uina6 y no puede cambiarse durante la ejecución del programa 5a menos $ue el programa se escriba sobre sí mismo, lo $ue constituye una práctica no aconsejada6. odo esto genera los &? modos de direccionamiento a memoria $ue se ven a continuación" '2
•
/e#istro indirecto" @6 M+IN, &6 M7
•
3asado" ?6 desp9M+IN, 36 desp9M+(N, A6 desp@AM+IN, D6 desp@AM+(N.
•
Indeado" 96 desp9M)
•
3asado-indeado" @&6 M+I)
@A6 desp9M+I)
•
3asado-indeado
con
•
Directo" &?6 Mdesp@AN.
desplaamiento"
/$uí desp9 indica desplazamiento de 9 bits y desp@A indica desplazamiento de @A bits. *tras combinaciones no están implementadas en la !(# y generarán error al $uerer ensamblar, por ejemplo, /77 !L,M7I)9'99. La !(# gasta tiempo calculando una dirección compuesta de varias cantidades. (rincipalmente esto se debe al eco de $ue el cálculo de direcciones está programado en microcódigo 5dentro de la !-*4 del sistema de control de la unidad de ejecución6. En las siguientes versiones 5a partir del 9'@9A>9'@996 estos cálculos están cableados en la má$uina y, por lo tanto, cuesta muco menos tiempo el realizarlos.
Estructura de memoria de se#mentación
!omo se a mencionado anteriormente, el 9'9A>9'99 usa un es$uema ingenioso llamado segmentación, para acceder correctamente a un megabyte completo de memoria, con referencias de direcciones de sólo @A bits. =eamos cómo funciona. !ual$uier dirección tiene dos partes, cada una de las cuales es una cantidad de @A bits. #na parte es la dirección de segmento y la '3
otra es el offset. / su vez el offset se compone de varias partes" un desplazamiento 5un n:mero fijo6, una base 5almacenada en el registro base6 y un índice 5almacenado en el registro índice6. La dirección de segmento se almacena en uno de los cuatro registros de segmento 5!), 7), E), ))6. El procesador usa estas dos cantidades de @A bits para calcular la dirección real de &' bits, seg:n la siguiente fórmula" 7irección real O @A P 5dirección del segmento6 offset al como veíamos antes, dado $ue @A en decimal es @' en exadecimal, multiplicar por ese valor es lo mismo $ue correr el n:mero exadecimal a la iz$uierda una posición. Fay dos registros de segmento $ue tienen usos especiales" el microprocesador utiliza el registro !) 5con el offset almacenado en el puntero de instrucción <(6 cada vez $ue se debe acceder a un byte de instrucción de programa, mientras $ue las instrucciones $ue utilizan la pila 5llamados a procedimientos, retornos, interrupciones y las instrucciones (#)F y (*(6 siempre utilizan el registro de segmento )) 5con el offset almacenado en el registro puntero de pila )(6. 7e aí los nombres $ue toman" !) es el segmento de código mientras $ue )) es el registro segmento de pila. (ara acceder a datos en la memoria se puede utilizar cual$uiera de los cuatro registros de segmento, pero uno de ellos provoca $ue la instrucción ocupe un byte menos de memoria" es el llamado segmento por defecto, por lo $ue en lo posible ay $ue tratar de usar dico segmento para direccionar datos. Este segmento es el 7) 5registro de segmento de datos6 para todos los casos excepto cuando se utiliza el registro base +(. En este caso el segmento por defecto es )). )i se utiliza otro registro, el ensamblador genera un byte de prefijo correspondiente al segmento antes de la instrucción" !) 8Q &E, 7) 8Q KE, E) 8Q &A y )) 8Q KA. El uso de estos diferentes segmentos significa $ue ay áreas de trabajo separadas para el programa, pila y los datos. !ada área tiene un tama%o máximo de A? B+ytes. 7ado $ue ay cuatro registros de segmento, uno de programa 5!)6, uno de pila 5))6 y dos de datos 5segmento de datos 7) y segmento extra E)6 el área de trabajo puede llegar a ? P A? B+ O &3A B+ en un momento dado suponiendo $ue las áreas no se superponen. )i el programa y los datos ocupan menos de A? B+, lo $ue se ace 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 deberán cambiarse los registros de segmento en la parte del programa $ue lo re$uiera. Los registros de segmento 7), E) y )) se cargan '0
mediante las instrucciones 4*= y (*(, mientras $ue !) se carga mediante transferencias de control 5saltos, llamadas, retornos, interrupciones6 intersegmento. Estructura de interrupciones del 9'9A>9'99 Fay tres clases de interrupción" por ard2are, por soft2are e internas 5a las dos :ltimas también se las llama ;excepciones;6. =eremos primeramente el caso de interrupciones por ard2are" !omo se mencionó anteriormente, el 9'9A>9'99 tiene dos entradas de petición de interrupción" 04< e <0- y una de reconocimiento 5<0/6. La gran mayoría de las fuentes de interrupción se conectan al pin <0-, ya $ue esto permite enmascarar las interrupciones 5el 04< no6. (ara facilitar esta conexión, se utiliza el circuito integrado controlador de interrupciones, $ue tiene el código 9&3C/. Este cip tiene, entre otras cosas, oco patas para sendas fuentes de interrupción 5<-R' 8 <-RD6, oco para el bus de datos 57' 8 7D6, una salida de <0- y una entrada de <0/. Esto permite una conexión directa con el 9'99>9'9A. /l ocurrir una petición de alguna de las oco fuentes, el 9&3C/ activa la pata <0-. /l terminar de ejecutar la instrucción en curso, el microprocesador activa la pata <0/, lo $ue provoca $ue el 9&3C/ envíe por el bus de datos un n:mero de oco bits 5de ' a &336 llamado tipo de interrupción 5programable por el usuario durante la inicialización del 9&3C/6, $ue el 9'9A>9'99 utiliza para saber cuál es la fuente de interrupción. / continuación busca en la tabla de vectores de interrupción la dirección del manejador de interrupción 5interrupt and!er 6 . Esto se ace de la siguiente manera. )e multiplica el tipo de interrupción por cuatro, y se toman los cuatro bytes $ue se encuentran a partir de esa dirección. Los dos primeros indican el offset y los dos :ltimos el segmento del manejador, como se muestra a continuación. '' '& '? 'A '9 '/ '! 'E @' @& Posición memoria $ipo de interrupción
<( !) <( !) <( !) <( !) <( !) ''
'@
'&
'K
'?
....
K! KE <(
!)
!omo se puede observar, la tabla ocupa el primer Jilobyte de memoria 5&3A tipos P ? bytes>tipo O @'&? bytes6. Las interrupciones por soft2are ocurren cuando se ejecuta la instrucción <0 tipo. 7e esta manera se pueden simular interrupciones durante la depuración de un programa. El tipo de interrupción 5para poder buscar el vector en la tabla6 aparece en la misma instrucción como una constante de 9 bits. 4ucos sistemas operativos 5programas $ue act:an a modo de interfaz entre los programas de los usuarios 5llamados también ;aplicaciones;6 y el ard2are del '4
sistema6 utilizan esta instrucción para llamadas a servicios, lo $ue permite no tener $ue conocer la dirección absoluta del servicio, permitiendo cambios en el sistema operativo sin tener $ue cambiar los programas $ue lo ejecutan. 7e esta manera, una de las primeras operaciones $ue debe realizar dico sistema operativo es inicializar la tabla de vectores de interrupción con los valores apropiados. Existen algunas interrupciones predefinidas, de uso exclusivo del microprocesador, por lo $ue no es recomendable utilizar estos tipos de interrupción para interrupciones por ard2are o soft2are. 8 $ipo *: *curre cuando se divide por cero o el cociente es mayor $ue el valor máximo $ue permite el destino. 8 $ipo 1: *curre después de ejecutar una instrucción si 5rap lag6 vale @. Esto permite la ejecución de un programa paso a paso, lo $ue es muy :til para la depuración de programas. 8 $ipo : *curre cuando se activa la pata 04< 5interrupción no enmascarable6. 8 $ipo &: Existe una instrucción <0 $ue ocupa un sólo byte, $ue es la correspondiente a este tipo. En los programas depuradores 5debuggers6 5tales como "ebug , #odeVie$ , %urbo "ebugger , etc.6, se utiliza esta instrucción como punto de parada 5para ejecutar un programa asta una determinada dirección, fijada por el usuario del depurador, se inserta esta instrucción en la dirección correspondiente a la parada y se lanza la ejecución. !uando el !)"<( apunte a esta dirección se ejecutará la <0 K, lo $ue devolverá el control del procesador al depurador6. 7ebido a esto, si se le ordena al depurador $ue ejecute el programa asta una determinada dirección en -*4 5memoria de sólo lectura6 5por ejemplo, para ver cómo funciona una subrutina almacenada en dica memoria6, la ejecución seguirá sin parar allí 5ya $ue la instrucción <0 K no se pudo escribir sobre el programa6. En el 9'K9A, con su elaborado ard2are de ayuda para la depuración, se puede poner un punto de parada en -*4. 8 $ipo 4: *curre cuando se ejecuta la instrucción de interrupción condicional <0* y el flag * 5*verflo2 lag6 vale @. Los tipos 3 a K@ 5@ en exadecimal6 están reservados para interrupciones internas 5también llamados ;excepciones;6 de futuros microprocesadores.
'6
)icroprocesadores *16 , *1
Introducción
Estos microprocesadores altamente integrados aparecieron en @C9&. (or ;altamente integrados; se entiende $ue el cip contiene otros componentes aparte de los encontrados en microprocesadores comunes como el 9'99 u 9'9A. Seneralmente contienen, aparte de la unidad de ejecución, contadores o ;timers;, y a veces incluyen memoria -/4 y>o -*4 y otros dispositivos $ue varían seg:n los modelos. !uando contienen memoria -*4, a estos cips se los llama microcomputadoras en un s&!o cip 5no siendo éste el caso de los microprocesadores 9'@9A>9'@996. Externamente se encapsulaban en el formato (S/ 5 Pin 'rid Arra( 6 de A9 pines. Los microprocesadores 9'@99>9'@9A contenían, en su primera versión, lo siguiente" Generador de relo
El 9'@9A>9'@99 contiene un oscilador interno de reloj, $ue re$uiere un cristal externo o una fuente de frecuencia con niveles L. La salida de reloj del sistema tiene una frecuencia de 9 4Fz con 3'T de ciclo de trabajo 5la mitad del tiempo en estado alto y la otra mitad en estado bajo6 a la mitad de frecuencia de oscilación del cristal 5$ue debe ser de @A 4Fz6. Esta salida puede utilizarse para atacar las entradas de reloj 5 c!oc) 6 de otros componentes, aciendo innecesario tener un cip externo dedicado a la generación de reloj.
$emporiadores
En estos microprocesadores se incluyen dos temporizadores > contadores programables para contar o medir tiempos de eventos externos y para generar formas de onda no repetitivas. El tercero, $ue no está conectado al exterior, es ':
:til para implementar demoras y como un presca!er 5divisor6 para los otros dos $ue están conectados exteriormente. Estos temporizadores son muy flexibles y pueden configurarse para contar y medir tiempos de una variedad de actividades de entrada>salida. !ada uno de los tres temporizadores está e$uipado con un registro contador de @A bits $ue contiene el valor actual del contador>temporizador. (uede ser leído o escrito en cual$uier momento 5aun$ue el temporizador esté corriendo6. /demás cada temporizador posee otro registro de @A bits $ue contiene el máximo valor $ue alcanzará la cuenta. !ada uno de los dos temporizadores conectados exteriormente posee otro registro de cuenta de @A bits $ue permite alternar la cuenta entre dos valores máximos de cuenta 5lo $ue sirve para generar se%ales con ciclo de trabajo diferente del 3'T6 programables por el usuario. !uando se alcanza la cuenta máxima, se genera una interrupción y el registro $ue lleva la cuenta 5el primero mencionado6 se pone a cero. Los temporizadores tienen modos de operación bastante flexibles. odos pueden programarse para parar o poner la cuenta a cero y seguir corriendo cuando llegan al valor máximo. Los dos temporizadores conectados externamente pueden seleccionar entre el reloj interno 5basado en la se%al generada por el generador de reloj, explicado en el apartado anterior6 y externo, alternar entre dos cuentas máximas 5primero se usa una y después la otra6 o usar una cuenta máxima 5siempre el mismo valor6, y pueden programarse para volver a disparar cuando ocurre un evento externo.
Canales de D)
La unidad controladora de 74/ 5 "irect Memor( Access, lo $ue indica $ue no se utiliza la !(# para realizar la transferencia6 integrada en el 9'@9A>9'@99 contiene dos canales independientes de 74/ de alta velocidad. Las transferencias de 74/ pueden ocurrir entre los espacios de memoria y la de entrada>salida 54 8 <>*6 o entre el mismo espacio 54 8 4, <>* 8 <>*6, lo $ue permite $ue los dispositivos de entrada>salida y los buffers de memoria puedan ubicarse en cual$uiera de los espacios. !ada canal de 74/ posee punteros fuente y destino de &' bits $ue pueden ser incrementados, decrementados o sin cambiar después de cada transferencia 5el :ltimo caso es :til para <>*6. El usuario puede especificar diferentes modos de operación de 74/ utilizando el registro de control de @A bits.
'7
Controlador de interrupciones
Este controlador resuelve las prioridades entre pedidos de interrupción $ue arriban simultáneamente. (uede aceptar interrupciones de asta cinco fuentes externas 5una no enmascarable 504<6 y cuatro enmascarables6 y de fuentes internas 5temporizadores y canales de 74/6. !ada fuente de interrupción tiene un nivel de prioridad programable y un vector de interrupción predefinido. El eco de $ue el tipo de vector 5ver discusión sobre esto en el apartado ;Estructura de interrupciones; del microprocesador 9'9A>9'996 sea fijo incrementa la velocidad de respuesta a interrupciones en un 3'T. /demás tiene varios de los modos de operación del circuito integrado controlador de interrupciones 9&3C/.
Generación de Chip Select 7 Ready
El microprocesador 9'@9A>9'@99 contiene una lógica de selección de cip programable para proveer se%ales de cip se!ect para memorias y periféricos y también posee una lógica programable de generación de estados de espera 5$ait state6 para componentes lentos. El resultado de esta lógica es una menor cantidad de circuitos integrados externos ya $ue se pueden aorrar alrededor de diez cips L. /parte del menor costo $ue esto significa, el rendimiento del sistema aumenta como resultado de la eliminación de demoras de propagación externas 5las demoras de las se%ales en el interior de un cip son significativamente menores $ue las demoras en el exterior6. *tra ventaja se refiere a la flexibilidad en la elección del tama%o y velocidad de acceso de las memorias. (ueden programarse tres rangos de memoria 5menor, medio y mayor6 con longitudes variables 5@B, &B, ?B, ..., &3AB6. (ueden programarse entre cero y tres estados de espera para poder utilizar memorias de alta velocidad o memorias de bajo costo 5y más lentas6. !on respecto a la selección de periféricos, pueden direccionarse asta siete $ue pueden estar en la zona de memoria y>o de entrada>salida. ambién pueden programarse los estados de espera para los periféricos.
8nidad Central de Proceso (CP8! del *16,*1
La funcionalidad agregada del 9'@9A>9'@99 5temporizadores, 74/, controlador de interrupciones y selección de cip6 utiliza registros de control de @A bits por cada dispositivo integrado. Estos están contenidos en un blo$ue de control de &3A bytes incluido en la ar$uitectura de registros del 9'@9A>9'@99. Este blo$ue de control puede estar en la zona de memoria o en la de entrada>salida, basado en la inicialización de un registro especial de reubicación. Exceptuando estos agregados, el resto de los registros son los mismos $ue los del 9'9A>9'99. ';
)icroprocesador *6 Introducción
Este microprocesador apareció en febrero de @C9&. Los avances de integración $ue permitieron agregar una gran cantidad de componentes periféricos en el interior del 9'@9A>9'@99, se utilizaron en el 9'&9A para acer un microprocesador $ue soporte nuevas capacidades, como la multitarea 5ejecución simultánea de varios programas6, lo $ue re$uiere $ue los programas no ;co$uen; entre sí, alterando uno los datos o las instrucciones de otros programas. El 9'&9A tiene dos modos de operación" modo real y modo protegido. En el modo real, se comporta igual $ue un 9'9A, mientras $ue en modo protegido, las cosas cambian completamente, como se explica a partir del próximo párrafo. Esto necesitó un nivel de integración muco mayor. El 9'&9A contiene @K?.''' transistores dentro de su estructura 5KA'T más $ue el 9'9A6. Externamente está encapsulado en formato (L!! 5 P!astic Leaded #ip #arrier 6 con pines en forma de * para montaje superficial, o en formato (S/ 5(in Srid /rray6, en ambos casos con A9 pines. El microprocesador 9'&9A a a%adido un nuevo nivel de satisfacción a la ar$uitectura básica del 9'9A, incluyendo una gestión de memoria con la extensión natural de las capacidades de direccionamiento del procesador. El 9'&9A tiene elaboradas facilidades incorporadas de protección de datos. *tras características incluyen todas las características del juego de instrucciones del 9'@9A, así como la extensión del espacio direccionable a @A 4+, utilizando &? bits para direccionar 5& &? O @A.DDD.&@A6. El 9'&9A revisa cada acceso a instrucciones o datos para comprobar si puede aber una +io!aci&n de !os derecos de acceso . Este microprocesador está dise%ado para usar un sistema operativo con varios niveles de privilegio. En este tipo de sistemas operativos ay un n:cleo $ue, como su nombre indica, es la parte más interna del sistema operativo. El n:cleo tiene el máximo privilegio 28
y los programas de aplicaciones el mínimo. Existen cuatro niveles de privilegio. La protección de datos en este tipo de sistemas se lleva a cabo teniendo segmentos de código 5$ue incluye las instrucciones6, datos 5$ue incluye la pila aparte de las variables de los programas6 y del sistema 5$ue indican los derecos de acceso de los otros segmentos6. (ara un usuario normal, los registros de segmentación 5!), 7), E), ))6 parecen tener los @A bits usuales. )in embargo, estos registros no apuntan directamente a memoria, como lo acían en el 9'9A. En su lugar, apuntan a tablas especiales, llamadas tablas de descriptores, algunas de las cuales tienen $ue ver con el usuario y otras con el sistema operativo. /ctualmente a los @A bits, cada registro de segmento del 9'&9A mantiene otros 3D bits invisibles para el usuario. *co de estos bits sirven para mantener los derecos de acceso 5sólo lectura, sólo escritura y otros6, otros bits mantienen la dirección real 5&? bits6 del principio del segmento y otros mantienen la longitud permitida del segmento 5@A bits, para tener la longitud máxima de A? B+6. (or ello, el usuario nunca sabe en $ué posición real de memoria está ejecutando o dónde se ubican los datos y siempre se mantiene dentro de ciertas fronteras. !omo protección adicional, nunca se permite $ue el usuario escriba en el segmento de código 5en modo real se puede escribir sobre dico segmento6. Ello previene $ue el usuario modifi$ue su programa para realizar actos ilegales y potencialmente peligrosos. Fay también provisiones para prever $ue el usuario introduzca en el sistema un ;caballo de roya; $ue pueda proporcionarle un estado de alto privilegio. El 9'&9A tiene cuatro nuevos registros. res de ellos apuntan a las tablas de descriptores actualmente en uso. Estas tablas contienen información sobre los objetos protegidos en el sistema. !ual$uier cambio de privilegio o de segmento debe realizarse a través de dicas tablas. /dicionalmente ay varios indicadores nuevos.
)odo prote#ido del *6
7ebido a la complejidad del siguiente texto, para entenderlo es necesario leerlo detenidamente. /demás es necesaria una práctica de estos temas con una (! para fijar los conocimientos.
4ecanismo de direccionamiento !omo en modo real, en modo protegido se utilizan dos componentes para formar la dirección física" un selector de @A bits se utiliza para determinar la 2'
dirección física inicial del segmento, a la cual se suma una dirección efectiva 5oset 6 de @A bits. La diferencia entre los dos modos radica en el cálculo de la dirección inicial del segmento. En modo protegido el selector se utiliza para especificar un índice en una tabla definida por el sistema operativo. La tabla contiene la dirección base de &? bits de un segmento dado. La dirección física se obtiene sumando la dirección base allada en la tabla con el offset.
)egmentación La segmentación es un método de manejo de memoria. La segmentación provee la base para la protección. Los segmentos se utilizan para encapsular regiones de memoria $ue tienen atributos comunes. (or ejemplo, todo el código de un programa dado podría estar contenido en un segmento, o una tabla del sistema operativo podría estar en un segmento. oda la información sobre un segmento se almacena en una estructura de oco bytes llamada descriptor . odos los descriptores del sistema están en tablas en memoria $ue reconoce el ard2are.
abla de descriptores globales 5S76 Esta tabla contiene descriptores $ue están disponibles para todas las tareas del sistema. La GD$ puede contener cual$uier clase de descriptores de segmento excepto los relacionados con interrupciones. odos los sistemas basados en el 9'&9A en modo protegido contienen una GD$. Seneralmente la GD$ contiene los segmentos de código y datos usados por el sistema operativo y los )) 5cuya explicación aparece más adelante6 y los descriptores para las L7 en un sistema. La primera entrada de la GD$ corresponde al selector nulo y no se usa.
abla de descriptores de interrupción La tercera tabla necesaria para sistemas 9'&9A $ue operan en modo protegido es la ID$. Esta tabla contiene los descriptores $ue apuntan a la ubicación de asta &3A rutinas de servicio de interrupción 5interrupt andlers6. 7ebe conocerse cuál es el valor máximo del tipo de interrupción $ue se va a utilizar y poner el límite del <7- igual a oco veces ese valor 5ya $ue, como se explicó 22
anteriormente, cada descriptor ocupa oco bytes6. !ada interrupción utilizada por el sistema debe tener una entrada propia en la ID$. Las entradas de la ID$ se referencian mediante instrucciones <0, vectores externos de interrupción y excepciones 5interrupciones internas del microprocesador6.
-egistros de direcciones del sistema !omo se indicó anteriormente, existen cuatro registros del 9'&9A $ue apuntan a las tablas de descriptores. GD$/ e ID$/" Estos registros mantienen la dirección base de &? bits y el límite
de @A bits de las tablas S7 e <7, respectivamente. Estos segmentos, como son globales para todas las tareas en el sistema, se definen mediante direcciones físicas de &? bits y límite de @A bits. D$/ y $/" Estos registros mantienen los selectores de @A bits para el
descriptor de L7 y de )), respectivamente. Estos segmentos, como son específicos para cada tarea, se definen mediante valores de selector almacenado en los registros de segmento del sistema. ste apunta a un descriptor apropiado 5de L7 o ))6. 0ótese $ue un registro descriptor del segmento 5invisible para el programador6 está asociado con cada registro de segmento del sistema.
(rotección El 9'&9A tiene cuatro niveles de protección $ue están optimizados para soportar las necesidades de los sistemas operativos multitarea para aislar y proteger los programas de un usuario de otros y del sistema operativo. Los niveles de privilegio controlan el uso de instrucciones privilegiadas, instrucciones de entrada>salida, y el acceso a segmentos y descriptores de segmento. / diferencia de los sistemas tradicionales basados en microprocesadores donde esta protección sólo se logra a través de un ard2are externo muy complejo con el correspondiente soft2are, el 9'&9A provee esta protección como parte de la unidad de manejo de memoria 5 MM-. Memor( Management -nit 6 incorporada. El sistema de privilegio jerár$uico de cuatro niveles es una extensión de los modos usuario>supervisor $ue se encuentran com:nmente en minicomputadoras. Los niveles de privilegio 5 PL. Pri+i!ege Le+e! 6 se numeran de ' a K, siendo el ' el nivel más privilegiado 5más confiable6.
23
-eglas de privilegio El 9'&9A controla el acceso a los datos y procedimientos 5o subrutinas6 entre niveles de una tarea, de acuerdo a las siguientes reglas" •
•
Los datos almacenados en un segmento con nivel de privilegio ( pueden ser accedidos solamente por código $ue se ejecuta a un nivel de privilegio por lo menos tan privilegiado como (. #n segmento de código>procedimiento con nivel de privilegio ( sólo puede ser llamado por una tarea $ue se ejecuta al mismo o menor privilegio $ue (.
(rivilegio de una tarea En un momento determinado, una tarea en el 9'&9A se ejecuta en uno de los cuatro niveles de privilegio. Esto está especificado por el nivel de privilegio actual 5CP6. El !(L de una tarea sólo puede cambiarse mediante transferencias de control utilizando los descriptores de compuerta a un segmento de código con un nivel de privilegio diferente. (or ejemplo, un programa de aplicación corriendo con (L O K puede llamar una rutina del sistema operativo con (L O @ 5mediante una compuerta6 $ue causaría $ue !(L O @ asta $ue finalice la rutina del sistema operativo.
0ivel de privilegio del selector 5-(L6 El nivel de privilegio de un selector se especifica en el campo -(L. El -(L está formado por los dos bits menos significativos del selector . )e utiliza para $ue un nivel de privilegio menos confiable $ue el nivel de privilegio actual 5!(L6 pueda utilizar dico selector . Este nivel se llama nivel de privilegio efectivo 5E(L6 de la tarea, $ue se define como el nivel menos privilegiado 5numéricamente mayor6 del !(L de la tarea y el -(L del selector . /sí, si -(L O ', entonces !(L siempre especifica el nivel de privilegio para realizar un acceso usando el selector , mientras $ue si -(L O K, entonces el selector sólo puede acceder segmentos de nivel K independientemente del valor de !(L de la tarea. El -(L se utiliza generalmente para verificar $ue los punteros pasados a un procedimiento del sistema operativo no accede datos $ue son de mayor privilegio $ue el procedimiento $ue originó el puntero. !omo dico 20
procedimiento puede especificar cual$uier valor de -(L, la instrucción de ajuste de -(L 5 /-(L6 se utiliza para forzar los bits de -(L a $ue sean iguales al !(L de la rutina $ue generó el selector .
(rivilegio de entrada>salida El nivel de privilegio de entrada>salida 5 I.P, $ue ocupa los bits @K y @& del registro de indicadores6 define el nivel menos privilegiado para el cual se pueden realizar instrucciones de <>* 5 IN, .8$, IN", .8$", /EP IN", /EP .8$"6. )i !(L Q I.P, al ejecutar alguna de estas instrucciones se generará una excepción @K. I.P también afecta otras instrucciones, como "$I, CI y el prefijo .C. /demás afecta si < 5indicador de interrupciones6 puede cambiarse cargando un valor en el registro de indicadores 5mediante P.P;6. )i !(L es menor o igual $ue I.P, entonces < se puede cambiar. )i !(L Q I.P el valor de < no varía mediante la ejecución de la instrucción P.P; 5en este caso no se genera ninguna excepción6.
)icroprocesador *&6 Introducción
El 9'K9A consiste en una unidad central de proceso 5 CP86, una unidad de manejo de memoria 5 ))86 y una unidad de interfaz con el bus 5 3I86. La CP8 está compuesta por la unidad de ejecución y la unidad de instrucciones. La unidad de ejecución contiene los oco registros de K& bits de propósito general $ue se utilizan para el cálculo de direcciones y operaciones con datos y un barre! siter de A? bits $ue se utiliza para acelerar las operaciones de desplazamiento, rotación, multiplicación y división. /l contrario de los microprocesadores previos, la lógica de división y multiplicación utiliza un algoritmo de @ bit por ciclo de reloj. El algoritmo de multiplicación termina la iteración cuando los bits más significativos del multiplicador son todos ceros, lo $ue permite $ue las multiplicaciones típicas de K& bits se realicen en menos de un microsegundo. 24
La unidad de instrucción decodifica los códigos de operación 5 opcodes6 de las instrucciones $ue se encuentran en una cola de instrucciones 5cuya longitud es de @A bytes6 y los almacena en la cola de instrucciones decodificadas 5ay espacio para tres instrucciones6. El sistema de control de la unidad de ejecución es el encargado de decodificar las instrucciones $ue le envía la cola y enviarle las órdenes a la unidad aritmética y lógica seg:n una tabla $ue tiene almacenada en -*4 llamada !-*4 5!ontrol -ead *nly 4emory6. La unidad de manejo de memoria 5 ))86 consiste en una unidad de segmentación 5similar a la del 9'&9A6 y una unidad de paginado 5nuevo en este microprocesador6. La segmentación permite el manejo del espacio de direcciones lógicas agregando un componente de direccionamiento extra, $ue permite $ue el código y los datos se puedan reubicar fácilmente. El mecanismo de paginado opera por debajo y es transparente al proceso de segmentación, para permitir el manejo del espacio de direcciones físicas. !ada segmento se divide en uno o más páginas de ? Jilobytes. (ara implementar un sistema de memoria virtual 5a$uél donde el programa tiene un tama%o mayor $ue la memoria física y debe cargarse por partes 5páginas6 desde el disco rígido6, el 9'K9A permite seguir ejecutando los programas después de aberse detectado fallos de segmentos o de páginas. )i una página determinada no se encuentra en memoria, el 9'K9A se lo indica al sistema operativo mediante la excepción @?, luego éste carga dica página desde el disco y finalmente puede seguir ejecutando el programa, como si ubiera estado dica página todo el tiempo. !omo se puede observar, este proceso es transparente para la aplicación, por lo $ue el programador no debe preocuparse por cargar partes del código desde el disco ya $ue esto lo ace el sistema operativo con la ayuda del microprocesador. La memoria se organiza en uno o más segmentos de longitud variable, con tama%o máximo de ? gigabytes. Estos segmentos, como se vio en la explicación del 9'&9A, tienen atributos asociados, $ue incluyen su ubicación, tama%o, tipo 5pila, código o datos6 y características de protección. La unidad de segmentación provee cuatro niveles de protección para aislar y proteger aplicaciones y el sistema operativo. Este tipo de protección por ard2are permite el dise%o de sistemas con un alto grado de integridad. El 9'K9A tiene dos modos de operación" modo de direccionamiento real 5modo real6, y modo de direccionamiento virtual protegido 5 modo protegido6. En modo real el 9'K9A opera como un 9'9A muy rápido, con extensiones de K& bits si se desea. El modo real se re$uiere primariamente para preparar el procesador 26
para $ue opere en modo protegido. El modo protegido provee el acceso al sofisticado manejo de memoria y paginado. inalmente, para facilitar dise%os de ard2are de alto rendimiento, la interfaz con el bus del 9'K9A ofrece pipe!ining de direcciones, tama%o dinámico del anco del bus de datos 5puede tener @A ó K& bits seg:n se desee en un determinado ciclo de bus6 y se%ales de abilitación de bytes por cada byte del bus de datos. Fay más información sobre esto en la sección de ard2are del 9'K9A.
•
*&6"
En octubre de @C93 la empresa
datos de @A bits y &? bits de direcciones 5al igual $ue en el caso del 9'&9A6. Este microprocesador permitió el armado de computadoras en forma económica $ue pudieran correr programas de K& bits. El 9'K9A original se le cambió de nombre" *&6 D2. •
&6"" En @CC'
frecuencia reducida ó ' 4Fz, interfaz para cacé opcional externo de @A, K& ó A? B+, soporte de L<4 ?.' 5memoria expandida6 por ard2are, generación y verificación de paridad, anco de bus de datos de 9 ó @A bits6 $ue lo acen ideal para e$uipos portátiles.
-egistros de propósito general Los oco registros de propósito general de K& bits mantienen datos y direcciones. Estos registros soportan operandos de @, 9, @A, K& y A? bits y campos de bits de @ a K& bits. )oportan operandos de direcciones de @A y de K& bits. Los nombres simbólicos son" E2, E32, EC2, ED2, E"I, EDI, E3P y E"P. Los @A bits menos significativos se pueden acceder separadamente. Esto se ace usando los nombres 2, 32, C2, D2, "I, DI, 3P y "P, $ue se utilizan de la misma manera 2:
$ue en los procesadores previos. /l igual $ue en el 9'&9A y anteriores, 2 se divide en y , 32 se divide en 3 y 3, C2 se divide en C y C y D2 se divide en D y D. Los oco registros de uso general de K& bits se pueden usar para direccionamiento indirecto. !ual$uiera de los oco registros puede ser la base y cual$uiera menos E)( puede ser el índice. El índice se puede multiplicar por @, &, ? u 9. Ejemplos de direccionamiento indirecto" •
MOV /#0,[/SP]
•
MOV AL, [/A0 1 /"I 2 3]
•
A"" #L, [/"0 1 /"0 1 3456646]
•
I7# "8OR" P%R %ABLA[/A0 2 5]
En modo real y en modo 9'9A virtual, la suma de la base, el índice y el desplazamiento debe estar entre ' y A33K3 para $ue no se genere una excepción @K. El segmento por defecto es "" si se utiliza E3P o E"P como base, en caso contrario es D". En el caso de usar direccionamiento de @A bits, sólo se pueden usar las mismas combinaciones $ue para el 9'99. 0o se pueden mezclar registros de @A y de K& bits para direccionamiento indirecto. -egistro de indicadores Es un registro de K& bits llamado E;la#s. Los bits definidos y campos de bits controlan ciertas operaciones e indican el estado del 9'K9A. Los @A bits menos significativos 5bits @38'6 llevan el nombre de ;la#s, $ue es más :til cuando se ejecuta código de 9'9A y 9'&9A. La descripción de los indicadores es la siguiente" •
<) 5Virtua! 393: Mode, bit @D6" Este bit provee el modo 9'9A
virtual dentro del modo protegido. )i se pone a @ cuando el 9'K9A está en modo protegido, entrará al modo 9'9A virtual, manejando los segmentos como lo ace el 9'9A, pero generando una excepción @K 5=iolación general de protección6 en instrucciones privilegiadas 5a$uéllas $ue sólo se pueden ejecutar en modo real o en el anillo '6. El bit <) sólo puede ponerse a @ en modo protegido mediante la instrucción <-E 5ejecutando en nivel de privilegio cero6 y por cambios de tarea en cual$uier anillo. El bit <) no cambia con la instrucción (*(7. La instrucción (#)F7 siempre pone un cero en el bit correspondiente en la pila, aun$ue el modo 9'9A virtual esté activado. 27
La imagen de E;la#s puesta en la pila durante el procesamiento de una interrupción o salvada en un asJ )tate )egment durante cambios de tarea, contendrá un uno en el bit @D si el código interrumpido estaba ejecutando una tarea tipo 9'9A virtual. •
/; 5Resume ;!ag , bit @A6" Este indicador se utiliza junto con los registros
de depuración. )e verifica en las fronteras de instrucciones antes del procesamiento de los puntos de parada 5 brea)points6. !uando /; vale @, ace $ue se ignoren las a!tas 5ecos $ue ocasionan una excepción6 de depuración. /; se pone automáticamente a cero luego de ejecutar correctamente cual$uier instrucción 5no se se%alan faltas6 excepto las instrucciones <-E y (*( y en los cambios de tarea causados por la ejecución de U4(,!/LL e <0. Estas instrucciones ponen /; al valor especificado por la imagen almacenada en memoria. (or ejemplo, al final de la rutina de servicio de los puntos de parada, la instrucción <-E puede extraer de la pila una imagen de E;la#s $ue tiene /; O @ y resumir la ejecución del programa en la dirección del punto de parada sin generar otra falta de punto de parada en el mismo lugar. •
N$ 57ested %as) , bit @?6" Este indicador se aplica al modo protegido. N$ se pone a uno para indicar $ue la ejecución de
la tarea está anidada dentro de otra tarea. )i está a uno, indica $ue el segmento de estado de la tarea 5 $""6 de la tarea anidada tiene un puntero válido al )) de la tarea previa. Este bit se pone a cero o uno mediante transferencias de control a otras tareas. La instrucción <-E verifica el valor de N$ para determinar si debe realizar un retorno dentro de la misma tarea o si debe acer un cambio de tarea. #n (*( o <-E afectará el valor de este indicador de acuerdo a la imagen $ue estaba en la pila, en cual$uier nivel de privilegio. •
I.P 5Input
numéricamente máximo 5esto es, con menor nivel de privilegio6 permitido para realizar instrucciones de entrada>salida sin generar una excepción @K 5=iolación general de protección6 o consultar el mapa de bits de permiso de E>) 5este mapa está ubicado en el segmento de estado de tarea 5 $""6 con el nuevo formato $ue provee el 9'K9A6. /demás indica el máximo valor de !(L $ue permite el cambio del indicador I; 5indicador de abilitación del pin IN$/6 cuando se ejecuta (*( e <-E. Estas dos :ltimas instrucciones sólo pueden alterar I.P cuando !(L O '. Los cambios de tarea siempre alteran el campoI.P, cuando la nueva imagen de los indicadores se carga desde el )) de la nueva tarea. •
.; 5O+er!o$ !ag , bit @@6" )i vale @, ubo un desborde en una operación
aritmética con signo, esto es, un dígito significativo se perdió debido a $ue tama%o del resultado es mayor $ue el tama%o del destino. 2;
•
•
•
D; 5"irection ;!ag , bit @'6" 7efine si E"I y>o EDI se autoincrementan 5D; O '6 o autodecrementan 5 D; O @6 durante instrucciones de cadena. I; 5INTR enab!e ;!ag , bit C6" )i vale @, permite el reconocimiento de interrupciones externas se%aladas en el pin IN$/. !uando vale cero, las interrupciones externas se%aladas en el pin IN$/ no se reconocen. I.P indica el máximo valor de !(L $ue permite la alteración del indicador I; cuando se ponen nuevos valores en E;la#s desde la pila. $; 5%rap enab!e ;!ag , bit 96" !ontrola la generación de la excepción @ cuando se ejecuta código paso a paso. !uando $; O @, el 9'K9A genera
una excepción @ después $ue se ejecuta la instrucción en curso. !uando $; O ', la excepción @ sólo puede ocurrir como resultado de las direcciones de punto de parada cargadas en los registros de depuración 5D/*8D/&6. •
"; 5Sign ;!ag , bit D6" )e pone a @ si el bit más significativo del resultado
de una operación aritmética o lógica vale @ y se pone a cero en caso contrario. (ara operaciones de 9, @A, K& bits, el indicador "; refleja el estado de los bits D, @3 y K@ respectivamente. •
=; 5=ero ;!ag , bit A6" )e pone a @ si todos los bits del resultado valen
cero, en caso contrario se pone a cero. •
; 5 Au>i!iar( carr( ;!ag , bit ?6" )e usa para simplificar la adición y sustracción de cantidades +!7 empa$uetados. ; se pone a @ si ubo
un préstamo o acarreo del bit K al ?. 7e otra manera el indicador se pone a cero. •
P; 5Parit( ;!ag , bit &6" se pone a uno si los oco bits menos significativos
del resultado tienen un n:mero par de unos 5paridad par6, y se pone a cero en caso de paridad impar 5cantidad impar de unos6. El indicador P; es función de los oco bits menos significativos del resultado, independientemente del tama%o de las operaciones. •
C; 5#arr( ;!ag , bit '6" )e pone a uno si ubo arrastre 5suma6 o préstamo
5resta6 del bit más significativo del resultado. Los bits 3 y K siempre valen cero, mientras $ue el bit @ siempre vale uno. -egistros de segmento del 9'K9A )on seis registros de @A bits $ue mantienen valores de selectores de segmentos identificando los segmentos $ue se pueden direccionar. En modo protegido, cada segmento puede tener entre un byte y el espacio total de direccionamiento 5? gigabytes6. En modo real, el tama%o del segmento siempre es A? B+. 38
Los seis segmentos direccionables en cual$uier momento se definen mediante los registros de segmento C", D", E", ;", G", "". El selector en C" indica el segmento de código actual, el selector en "" indica el segmento de pila actual y los selectores en los otros registros indican los segmentos actuales de datos. /e#istros descriptores de se#mento " Estos registros no son visibles para el
programador, pero es muy :til conocer su contenido. 7entro del 9'K9A, un registro descriptor 5invisible para el programador6 está asociado con cada registro de segmento 5visible para el programador6. !ada descriptor mantiene una dirección base de K& bits, un límite 5tama%o6 de K& bits y otros atributos del segmento. !uando un selector se carga en un registro de segmento, el registro descriptor asociado se cambia automáticamente con la información correcta. En modo real, sólo la dirección base se cambia 5desplazando el valor del selector cuatro bits acia la iz$uierda6, ya $ue el límite y los otros atributos son fijos. En modo protegido, la dirección base, el límite y los otros atributos se cargan con el contenido de una tabla usando el selector como índice. )iempre $ue ocurre una referencia a memoria, se utiliza automáticamente el registro descriptor de segmento asociado con el segmento $ue se está usando. La dirección base de K& bits se convierte en uno de los componentes para calcular la dirección, el límite de K& bits se usa para verificar si una referencia no supera dico límite 5no se referencia fuera del segmento6 y los atributos se verifican para determinar si ubo alguna violación de protección u otro tipo.
-egistros de control El 9'K9A tiene tres registros de control de K& bits, llamados C/*, C/ y C/&, para mantener el estado de la má$uina de naturaleza global 5no el específico de una tarea determinada6. Estos registros, junto con los registros de direcciones del sistema, mantienen el estado de la má$uina $ue afecta a todas las tareas en el sistema. (ara acceder los registros de control, se utiliza la instrucción ).<.
3'
C/* 5-egistro de control de la má$uina6" !ontiene seis bits definidos para
propósitos de control y estado. Los @A bits menos significativos de C/* también se conocen con el nombre de pa!abra de estado de !a m?quina 5)">6, para la compatibilidad con el modo protegido del 9'&9A. Las instrucciones L4)1 y )4)1 se toman como casos particulares de carga y almacenamiento de C/* donde sólo se opera con los @A bits menos significativos de C/*. (ara lograr la compatibilidad con sistemas operativos del 9'&9A la instrucción L4)1 opera en forma idéntica $ue en el 9'&9A 5ignora los nuevos bits definidos en C/*6. Los bits definidos de C/* son los siguientes" •
PG 5Paging /nab!e, bit K@ de C/*6" Este bit se pone a uno para abilitar
la unidad de paginado $ue posee el cip. )e pone a cero para desabilitarlo. El paginado sólo funciona en modo protegido, por lo $ue si PG O @, deberá ser (E O @. 0uevo en 9'K9A. •
E$ 5Processor />tension %(pe, bit ? de C/*6"
coprocesador 59'&9D, 9'K9D6 seg:n se detecte por el nivel del pin ,E//./ al activar el pin /E"E$. El bit E$ puede ponerse a cero o a uno cargando C/* bajo control del programa. )i E$ O @, se usa el protocolo de K& bits del 9'K9D, mientras $ue si E$ O ', se usa el protocolo de @A bits del 9'&9D. (ara lograr la compatibilidad con el 9'&9A, la instrucción L4)1 no altera este bit. )in embargo, al ejecutar )4)1, se podrá leer en el bit ? el valor de este indicador. 0uevo en 9'K9A. •
$" 5%as) S$itced , bit K de C/*6" )e pone a uno cuando se realiza una operación de cambio de tarea. )i $" O @, un código de operación E"C del coprocesador causará una excepción D
5!oprocesador no disponible6. El manejador de la excepción típicamente salva el contexto del 9'&9D>9'K9D $ue pertenece a la tarea previa, carga el estado del 9'&9D>9'K9D con los valores de la nueva tarea y pone a cero el indicador $" antes de retornar a la instrucción $ue causó la excepción. •
E) 5/mu!ate #oprocessor , bit & de C/*6" )i este bit vale uno, ará $ue
todos los códigos de operación de coprocesador causen una excepción D 5!oprocesador no disponible6. )i vale cero, permite $ue esas instrucciones se ejecuten en el 9'&9D>9'K9D 5éste es el valor del indicador después del -E)E6. El código de operación 1/< no se ve afectado por el valor del indicador. •
)P 5Monitor #oprocessor , bit @ de C/*6" Este indicador se usa junto
con ) para determinar si la instrucción 1/< generará una excepción D cuando ) O @. )i 4( O ) O @, al ejecutar 1/< se genera la excepción. 0ótese $ue ) se pone a uno cada vez $ue se realiza un cambio de tarea.
32
•
PE 5Protection /nab!e, bit ' de C/*6" )e pone a uno para abilitar el modo protegido. )i vale cero, se opera otra vez en modo real. PE se puede poner a uno cargando )"> o C/*, pero puede ser puesto a cero sólo mediante una carga en C/*. (oner el bitPE a cero es apenas una
parte de una secuencia de instrucciones necesarias para la transición de modo protegido a modo real. 0ótese $ue para la compatibilidad estricta con el 9'&9A, PE no puede ponerse a cero con la instrucción L4)1. C/ 57irección lineal de falta de página6" 4antiene la dirección lineal de K& bits
$ue causó la :ltima falta de página detectada. El código de error puesto en la pila del manejador de la falta de página cuando se la invoca provee información adicional sobre la falta de página. #n cambio de tareas a través de un )) $ue cambie el valor de C/&, o una carga explícita de C/& con cual$uier valor, invalidará todas las entradas en la tabla de páginas $ue se encuentran en el cacé de la unidad de paginación. )i el valor de C/& no cambia durante el cambio de tareas se considerarán válidos los valores almacenados en el cacé.
/cceso a registros Fay algunas diferencias en el acceso de registros en modo real y protegido, $ue se indican a continuación. Escr O Escritura del registro, Lect O Lectura del registro. )odo /eal )odo Prote#ido )odo ?irtual *6 /e#istro Escr ect Escr
ect
Escr
ect
/e#istros #enerales
)í
)í
)í
)í
)í
)í
/e#istros de se#mento
)í
)í
)í
)í
)í
)í
Indicadores
)í
)í
)í
)í
<*(L
<*(L
/e#istros de control
)í
)í
!(LO' !(LO' 0o
)í
GD$/
)í
)í
!(LO' )í
0o
)í
ID$/
)í
)í
!(LO' )í
0o
)í
D$/
0o
0o
!(LO' )í
0o
0o
$/
0o
0o
!(LO' )í
0o
0o
)í
!(LO' !(LO' 0o
0o
/e#istros de depuración )í
33
/e#istros de test
)í
)í
!(LO' !(LO' 0o
0o
!(LO'" Los registros se pueden acceder sólo si el nivel de privilegio actual es cero. <*(L" Las instrucciones (#)F y (*( son indicador <*(L en modo 9'9A virtual.
sensibles
al
)odo prote#ido en el *&6
Está basado en el modo protegido del 9'&9A, por lo $ue se recomienda primero leer dica información. /$uí se mostrarán las diferencias entre ambos microprocesadores.
7escriptores de segmento 7ebido a la mayor cantidad de funciones del 9'K9A, estos descriptores tienen más campos $ue los descriptores para el 9'&9A. El formato general de un descriptor en el 9'K9A es" •
37te *" Límite del segmento 5bits D8'6.
•
37te 1" Límite del segmento 5bits @3896.
•
37te " 7irección base del segmento 5bits D8'6.
•
37te &" 7irección base del segmento 5bits @3896.
•
37te 4" 7irección base del segmento 5bits &K8@A6.
•
37te 5" 7erecos de acceso del segmento.
•
37te 6" o
o
+it D" Granularidad 5G6" )i vale cero, el límite es el indicado por el campo límite 5bits @C8'6, mientras $ue si vale uno, a dico campo se le agregarán @& bits a uno a la dereca para formar el límite 5de esta manera el límite se multiplica por ?'CA, pudiendo llegar asta ?S+ como límite máximo6. +it A" Default 5para segmento de código6> Big 5para segmento de pila65D,36" (ara los descriptores de segmentos de código si este 30
bit está a uno, el segmento será de K& bits 5se utiliza EIP como offset del puntero de instrucciones, mientras $ue si vale cero el segmento será de @A bits 5utiliza IP como offset del puntero de instrucciones6. (ara segmento de pila si el bit vale uno, el procesador usará el registro E"P como puntero de pila, en caso contrario usará "P.
•
o
+its 3 y ?" 7eben valer cero.
o
+its K a '" Límite del segmento 5bits @C8@A6.
37te %" 7irección base del segmento 5bits K@8&?6.
El byte de derecos de acceso es el $ue define $ué clase de descriptor es. El bit ? 5)6 indica si el segmento es de código o datos 5) O @6, o si es del sistema 5) O '6. =eremos el primer caso. •
•
•
•
+it D" Presente (P!. )i ( O @ el segmento existe en memoria física, mientras $ue si ( O ' el segmento no está en memoria. #n intento de acceder un segmento $ue no está presente cargando un registro de segmento 5!), 7), E), )), ) o S)6 con un selector $ue apunte a un descriptor $ue indi$ue $ue el segmento no está presente generará una excepción @@ 5en el caso de )) se generará una excepción @& indicando $ue la pila no está presente6. El manejador de la interrupción @@ deberá leer el segmento del disco rígido. Esto sirve para implementar memoria virtual. +its A y 3" Ni?el de pri?ile#io del descriptor (DP!" /tributo de privilegio del segmento utilizado en tests de privilegio. +it ?" 3it descriptor del se#mento ("!" !omo se explicó más arriba, este bit vale @ para descriptores de código y datos. +it K" Eecuta@le (E!" 7etermina si el segmento es de código 5E O @6, o de datos 5E O '6. )i el bit K vale cero" o
o
+it &" Dirección de epansión (ED!" )i E O ', el segmento se expande acia arriba, con lo $ue los offsets deben ser menores o iguales $ue el límite. )i E O @, el segmento se expande acia abajo, con lo $ue los offsets deben ser mayores $ue el límite. )i no ocurre esto se genera una excepción @K 5allo general de protección6 5en el caso de la pila se genera una excepción @&6. +it @" a@ilitación de escritura (>!" )i 1 O ' no se puede escribir sobre el segmento, mientras $ue si 1 O @ se puede realizar la escritura. 34
)i el bit K vale uno" o
o
•
+it &" ConAorme (C!" )i ! O @, el segmento de código sólo puede ser ejecutado si !(L es mayor $ue 7(L y !(L no cambia. Los segmentos conformes sirven para rutinas del sistema operativo $ue no re$uieran protección, tales como rutinas matemáticas, por ejemplo. +it @" a@ilitación de lectura (/!" )i - O ', el segmento de código no se puede leer, mientras $ue si - O @ sí. 0o se puede escribir sobre el segmento de código.
+it '" ccedido (!" )i / O ' el segmento no fue accedido, mientras $ue si / O @ el selector se a cargado en un registro de segmento o utilizado por instrucciones de test de selectores. Este bit es puesto a uno por el microprocesador.
/ continuación se verá el formato del @7te de derecBos de acceso para descriptores de segmentos del sistema" •
+it D" Presente (P!"
•
+its A y 3" Ni?el de pri?ile#io del descriptor (DP!"
•
•
+it ?" 3it descriptor del se#mento ("!" !omo se explicó más arriba, este bit vale ' para descriptores del sistema. +its K8'" $ipo de descriptor " En el 9'K9A están disponibles los siguientes" ''''"
@'''"
'''@" )) tipo &9A disponible
@''@" )) tipo K9A disponible
''@'" L7
@'@'"
''@@" )) tipo &9A ocupado
@'@@" )) tipo K9A ocupado
'@''" !ompuerta de llamada tipo &9A @@''" !ompuerta de llamada tipo K9A '@'@" !ompuerta de tarea tipo &9A ó @@'@"
36
@@@@" !ompuerta de trampa tipo K9A
=ea la información sobre )) tipo &9A, L7 y compuertas en las secciones correspondientes del microprocesador 9'&9A. El formato de las compuertas tipo K9A es diferente de las del tipo &9A, por lo $ue se muestra a continuación" •
+yte '" *ffset 5bits D8'6.
•
+yte @" *ffset 5bits @3896.
•
+yte &" )elector 5bits D8'6.
•
+yte K" )elector 5bits @38'6.
•
+yte ?" +its ?8'" !antidad de palabras, bits D83" !ero.
•
+yte 3" 7erecos de acceso.
•
+yte A" *ffset 5bits &K8@A6.
•
+yte D" *ffset 5bits K@8&?6.
)icroprocesador *46 3lo+ues +ue componen el *46
Este microprocesador es básicamente un 9'K9A con el agregado de una unidad de punto flotante compatible con el 9'K9D y un cacé de memoria de 9 B+ytes. (or lo tanto los blo$ues $ue componen el 9'?9A son los siguientes" @. 8nidad de eecución"
el buffer de conversión por b:s$ueda 5L+6. Los :ltimos modelos 57I?, algunos 7I&6 soportan páginas de ?4+ aparte de las de ?B+ del 9'K9A. ?. 8nidad de cacB" La evolución de las memorias izo $ue el tiempo de acceso de las mismas decrecieran lentamente, mientras $ue la velocidad de los microprocesadores aumentaba exponencialmente. (or lo tanto, el acceso a memoria representaba el cuello de botella. La idea del cacé es tener una memoria relativamente pe$ue%a con la velocidad del microprocesador. La mayoría del código $ue se ejecuta lo ace dentro de ciclos, con lo $ue, si se tiene el ciclo completo dentro del cacé, no sería necesario acceder a la memoria externa. !on los datos pasa algo similar" también ocurre un efecto de localidad. El cacé se carga rápidamente mediante un proceso conocido como ;ráfaga;, con el $ue se pueden transferir cuatro bytes por ciclo de reloj. 4ás abajo se da información más detallada de esta unidad. 3. InterAa con el @us"
Estos procesadores tienen un cacé interno $ue almacena 9B+ de instrucciones y datos excepto el 7I? y el 8rite@bac) enanced 7I? $ue tienen @AB+ de cacé interno. El cacé aumenta el rendimiento del sistema ya $ue las lecturas se realizan más rápido desde el cacé $ue desde la memoria externa. Esto también reduce el uso del bus externo por parte del procesador. ste es un cacé de primer nivel 5también llamado 16. El procesador 9'?9A puede usar un cacé de segundo nivel 5también llamado 6 fuera del cip para aumentar a:n más el rendimiento general del sistema. )i bien la operación de estos cacés internos y externos son transparentes a la ejecución de los programas, el conocimiento de su funcionamiento puede servir para optimizar el soft2are. 37
El cacé está disponible en todos los modos de funcionamiento del procesador" modo real, modo protegido y modo de manejo del sistema. ;uncionamiento
El cacé es una memoria especial, llamada memoria asociati?a. 7ica memoria tiene, asociado a cada unidad de memoria, un tag , $ue almacena la dirección de memoria $ue contiene los datos $ue están en la unidad de memoria. !uando se desea leer una posición de memoria mediante esta memoria asociativa, se comparan todos los tags con esta dirección. )i alg:n tag tiene esta dirección, se dice $ue ubo un acierto 5cace it en inglés6 con lo $ue se puede leer la información asociada a ese tag. En caso contrario ay un fallo 5cace miss en inglés6, con lo $ue ay $ue perder un ciclo de bus para leer el dato $ue está en memoria externa. En el caso del 9'?9A, cada unidad de memoria son @A bytes. Esta cantidad es una línea del cacé. Las líneas pueden ser válidas 5cuando contienen datos de la memoria principal6 o inválidas 5en este caso la línea no contiene información :til6. !omo el cacé se llena por líneas completas 5comenzando por direcciones m:ltiplos de @A6, ay $ue tratar de no leer posiciones aleatorias de la memoria, ya $ue en este caso, si se leen bytes en posiciones alejadas unas de otras, el procesador usará cuatro ciclos de bus para leer @A bytes 5para llenar una línea6 por cada byte $ue deseamos leer. Esto no es problema para el código o la pila 5 stac) 6 ya $ue éstos se acceden generalmente de manera secuencial. Fay dos clases de cacés" 2rite8troug y 2rite8bacJ 5 retro escritura6 5implementado solamente en los modelos $rite@bac) enanced 7I& y $rite@ bac) enanced 7I?6. La diferencia entre las dos radica en el momento de escritura. Las primeras siempre escriben en la memoria principal, mientras $ue las otras sólo escriben cuando se llena el cacé y ay $ue desocupar una línea. Esto :ltimo aumenta el rendimiento del sistema. Fay dos nuevos bits del registro de control !-' $ue controlan el funcionamiento del cacé" !7 5 #ace "isab!e, bit K'6 y 01 57ot $rite@troug, bit &C6. !uando !7 O @, el 9'?9A no leerá memoria externa si ay una copia en el cacé, si 01 O @, el 9'?9A no escribirá en la memoria externa si ay datos en el cacé 5sólo se escribirá en el cacé6. La operatoria normal 5cacé abilitado6 es !7 O 01 O '. 0ótese $ue si !7 O 01 O @ se puede utilizar el cacé como una -/4 rápida 5no ay ciclos externos de bus ni para lectura ni para escritura si ay acierto en el cacé6. (ara desabilitar completamente el cacé deberá poner !7 O 01 O @ y luego ejecutar una de las instrucciones para vaciar el cacé. Existen dos instrucciones para vaciar el cacé" <0=7 y 1+<0=7. 3;
)icroprocesador Pentium Introducción
El @C de octubre de @CC&, ?9A y a%ade unas pocas instrucciones adicionales pero ning:n registro programable, a sido denominado un dise%o del tipo ?9A. Esto no $uiere decir $ue no ay características nuevas o mejoras $ue aumenten la potencia. La mejora más significativa sobre el ?9A a ocurrido en la unidad de punto flotante. Fasta ese momento,
sólo pudo extraer un aumento del doble para operaciones de punto fijo o enteros. El gran aumento de rendimiento tiene su contraparte en el consumo de energía" @K 2att bajo la operación normal y @A 2att a plena potencia 5K,& amperes x 3 volt O @A 2att6, lo $ue ace $ue el cip se caliente demasiado y los fabricantes de tarjetas madres 5moterboards6 tengan $ue agregar complicados sistemas de refrigeración. eniendo esto en cuenta, @@ '@' '?A O 9D ?'&,A&9&'&DK?@ 5respuesta correcta6 CA& K'A C3D 'KK > @@ '@' '?A O 9D KCC,39'39K@K&C 5(entium fallada6 El defecto se propagó rápidamente y al poco tiempo el problema era conocido por gente $ue ni si$uiera tenía computadora. Este bug se arregló en las versiones 7@ y posteriores de los (entium A'>AA 4Fz y en las versiones +3 y posteriores de los (entium D3>C'>@'' 4Fz. Los (entium con velocidades más elevadas se fabricaron posteriormente y no posee este problema. En enero de @CCD apareció una tercera generación de (entium, $ue incorpora lo $ue @AA 4Fz, AA>&'' 4Fz y AA>&KK 4Fz 5velocidad externa>interna6. Las nuevas características incluyen una unidad 44I y el doble de cacé. El (entium 44I tiene ?.3''.''' transistores con un proceso !4*)8silicio de ',K3 micrones mejorado $ue permite bajar la tensión a &,9 volt. Externamente posee K&@ pines. 0'
r+uitectura =ías de acceso m:ltiples
Lo $ue comenzó con la técnica del K9A>?9A de tener vías de acceso m:ltiples para la ejecución de instrucciones, se ve refinado en el (entium ya $ue tiene un dise%o con doble vía de acceso. El objetivo de ésta es el de procesar m:ltiples instrucciones simultáneamente, en varios estados de ejecución, para obtener una velocidad de ejecución general de instrucciones de una instrucción por ciclo de reloj. El resultado final de la estructura doble vía de acceso es un dise%o superescalar $ue tiene la abilidad de ejecutar más de una instrucción en un ciclo de reloj dado. Los procesadores escalares, como la familia del ?9A, tienen sólo una vía de acceso. )e puede pensar $ue el microprocesador moderno con vías de acceso doble es similar a una línea de producción $ue recibe en un extremo materias primas sin procesar y a medio procesar y $ue saca el producto terminado en el otro extremo. La línea de producción con vía de acceso doble del (entium transforma la materia prima de información y de código de soft2are en el producto terminado. El (entium sigue el modelo de vía de acceso del ?9A, ejecutando instrucciones simples con enteros en un ciclo de reloj. )in embargo es más exacto decir $ue a$uellas instrucciones estaban en la etapa de ejecución de la vía de acceso durante un ciclo de reloj. )iempre se re$uieren ciclos adicionales de reloj para buscar, decodificar la instrucción y otros procesos vitales. La secuencia de funcionamiento de la vía de datos es como sigue" preb:s$ueda, decodificación @, decodificación &, ejecución y retroescritura. Esto es similar a una línea de producción $ue produce un artículo por minuto, pero $ue se demora varias oras para completar cada artículo individual, y siempre abrá una multitud de unidades en diferentes etapas del ensamblado. En el caso óptimo, las instrucciones estarían alineadas en la vía de acceso de forma $ue, en general, ésta ejecutará aproximadamente una instrucción por ciclo de reloj. Los aspectos superescalares del (entium dependen de su vía de acceso doble. Los procesadores superescalares permiten $ue se ejecute más de una instrucción por vez. El procesador tiene dos vías de acceso de enteros, una en forma de # y otra en forma de = y automáticamente aparea las instrucciones para incrementar la proporción de instrucciones por ciclo de reloj para $ue sea mayor $ue @. )i el tener m:ltiples instrucciones pasando por dos vías suena como el e$uivalente de un tran$ue en el tráfico del microprocesador, eso no es así, por$ue ay reglas y restricciones $ue evitan las colisiones y los retrasos. 02
)i se detectara una dependencia, el procesador reconoce $ue las instrucciones deben fluir en orden y asegura $ue la primera instrucción termine su ejecución antes de generar la segunda instrucción. (or ejemplo, el (entium envía la primera instrucción por la vía # y genera la segunda y tercera instrucciones juntas, y así sucesivamente. Las dos vías no son e$uivalentes, o intercambiables. La vía # ejecuta instrucciones de enteros y de punto flotante, mientras $ue la vía = sólo puede ejecutar instrucciones simples con enteros y la instrucción de intercambio de contenido de registros de punto flotante. Las instrucciones de punto flotante, com:nmente utilizadas en programas de matemática intensiva, pasan las vías de entero y son manipuladas desde la vía de punto flotante en la etapa de ejecución. En definitiva las vías de enteros y el de punto flotante operan independiente y simultáneamente.
7ependencias de procedimiento (uede ocurrir un problema potencial con la ejecución debido a las mucas trayectorias $ue la secuencia de una instrucción puede tomar. La predicción de la trayectoria a tomar es el método $ue debe usarse a$uí. El (entium dibuja algo parecido a un mapa de carreteras de los lugares a donde es posible $ue se dirija la instrucción y lo usa para tratar de agilizar la ejecución de la instrucción.
resultados de una comparación o código de condición y puede incluir varios tipos de instrucciones. !uando no se ejecuta un salto condicional, el programa sigue ejecutando la próxima instrucción de la secuencia. 4ucos programas tienen de un @'T a un &'T de instrucciones de salto condicional y asta un @'T de saltos incondicionales. El porcentaje de veces $ue se ejecuta un salto condicional varía de programa a programa, pero es de un promedio de un 3'T. Las instrucciones de lazo o de repetición ace $ue se tomen decisiones frecuentemente, asta el C'T del tiempo en algunos casos. #n buen sistema de predicción de decisiones escogerá las trayectorias correctas más del 9'T del tiempo. ísicamente, la unidad de predicción de decisiones 5+(#6 está situada al lado de la vía de acceso, y revisa con anticipación el código de la instrucción para determinar las conexiones de las decisiones. El orden es algo así" La +(# inspecciona las instrucciones en la etapa de preb:s$ueda, y si la lógica de predicción de decisiones predice $ue se va a realizar el salto, se le indica inmediatamente a la unidad de preb:s$ueda 5(#6 $ue comience a buscar instrucciones de la dirección de destino de la dirección $ue se predijo. 7e forma alterna, si se determinó $ue no se iba a tomar la decisión, no se perturba la secuencia original de preb:s$ueda. )i la trayectoria pronosticada resulta ser errónea, se vacía la vía de acceso y los buffers alternos de preb:s$ueda, y se recomienza la preb:s$ueda desde la trayectoria correcta. )e paga una penalidad de tres o cuatro ciclos de reloj por predecir una trayectoria de forma errónea. El (entium usa un buffer de decisión de destino 5++6 como su mecanismo. El ++ incluye tres elementos por cada entrada" la dirección de la instrucción de salto, la dirección de destino de la instrucción y los bits de istoria. )e usa una tabla de asta &3A entradas para predecir los resultados de las decisiones. El flujo está basado, y se administra directamente desde la vía #. )e usa la dirección de la vía # para la dirección de la instrucción de decisión del ++, a:n si la decisión está realmente en la vía =. Fay dos bits de istoria $ue informan si se tomó la decisión anterior o no. El resultado es un procesador $ue corre con suavidad y $ue a menudo sabe lo $ue ará antes de completar la tarea. Ejecución de punto flotante en el (entium )e a reconstruido por completo la unidad de punto flotante 5(#6, a partir de la de los K9A y ?9A y aora tiene algunas de las características de los -<)!. Fay oco etapas de vía y las cinco primeras se comparten con la unidad de enteros. La unidad cumple con la norma
y aproveca la ar$uitectura con vías para lograr mejoras de rendimiento de entre ? y @' veces, dependiendo de la optimización del compilador. /orro de energía El (entium usa un modo de administración de sistema 5 "))6 similar al $ue usa el ?9A )L, $ue permite $ue los ingenieros dise%en un sistema con bajo consumo. La interrupción de administración del sistema activa el )44 por debajo del nivel del sistema operativo o de la aplicación. )e guarda toda la información sobre el estado de los registros para después restaurarla, y se ejecuta el código de manejador de )44 desde un espacio de direcciones totalmente separado, llamado -/4 de administración del sistema 5)4-/46. )e sale del )44 ejecutando una instrucción especial 5-)46. Esto lleva al !(# de nuevo al mismo punto en $ue estaba cuando se llamó al )44. /lgunos procesadores 5@'' 4Fz o más lentos6 presentan problemas en este modo. 0uevas instrucciones del microprocesador (entium C)P2CG3 reg , mem:5 5#ompare and />cange 3 B(tes6" !ompara el
valor de A? bits ubicado en E7I"E/I con un valor de A? bits situado en memoria. )i son iguales, el valor en memoria se reemplaza por el contenido de E!I"E+I y el indicador G se pone a uno. En caso contrario, el valor en memoria se carga en E7I"E/I y el indicador G se pone a cero. CP8ID 5#P- Identiication6" Le informa al soft2are acerca del modelo de
microprocesador en $ue está ejecutando. #n valor cargado en E/I antes de ejecutar esta instrucción indica $ué información deberá retornar !(#<7. )i E/I O ', se cargará en dico registro el máximo valor de E/I $ue se podrá utilizar en !(#<7 5para el (entium este valor es @6. /demás, en la salida aparece la cadena de identificación del fabricante contenido en E+I, E!I y E7I. E+I contiene los primeros cuatro caracteres, E7I los siguientes cuatro, y E!I los :ltimos cuatro. (ara los procesadores
de los registros de A? bits específicos del modelo del procesador. El contenido 04
de ese registro se carga en E7I"E/I. E7I se carga con los K& bits más significativos, mientras $ue E/I se carga con los K& bits menos significativos. /D$"C 5Read rom %ime Stamp #ounter 6" !opia el contenido del contador de
tiempo 5)!6 en E7I"E/I 5el (entium mantiene un contador de A? bits $ue se incrementa por cada ciclo de reloj6. !uando el nivel de privilegio actual es cero el estado del bit )7 en el registro de control !-? no afecta la operación de esta instrucción. En los anillos @, & ó K, el )! se puede leer sólo si el bit )7 de !-? vale cero. /") 5Resume rom S(stem Management Mode6" El estado del procesador se
restaura utilizando la copia $ue se creó al entrar al modo de manejo del sistema 5)446. )in embargo, los contenidos de los registros específicos del modelo no se afectan. El procesador sale del )44 y retorna el control a la aplicación o sistema operativo interrumpido. )i el procesador detecta alguna información inválida, entra en el estado de apagado 5sutdo2n6. >/)"/ 58rite to Mode!@Speciic Register 6" El valor en E!I especifica uno de
los registros de A? bits específicos del modelo del procesador. El contenido de E7I"E/I se carga en ese registro. E7I debe contener los K& bits más significativos, mientras $ue E/I debe contener los K& bits menos significativos.
Capitulo & "imuladores 7 Emuladores: Emulador **
06
"imulador *5
Emulador *6,*
0:
Emulador *16,*1
"imulador *6 07
"imulador *&6 /! simu!ador de osci!oscopio puede eCecutarse sobre un procesador 39D3:
Emulador *46 0;