Está en la página 1de 46

Introduccin a los Sistemas basados en Procesador

INTRODUCCION A LOS SISTEMAS BASADOS EN PROCESADOR

CAPITULO 1.- Introduccin. CAPITULO 2.- Perfil de la U.C.P. CAPITULO 3.- Arquitectura de la U.C.P. CAPITULO 4.- Funcionamiento de la U.C.P. CAPITULO 5.- Juego de Instrucciones. CAPITULO 6.- Interfaz con el Bus del Sistema. CAPITULO 7.- Interrupciones. CAPITULO 8.- Detalle del funcionamiento interno.

Juan V. Madrid Jurado Octubre 97

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

CAPITULO 1.- Introduccin.


La Unidad Central de Proceso (U.C.P.) es el corazn de los Sistemas Basados en Procesador. Esta unidad se encarga de coordinar y sincronizar el funcionamiento de todo el sistema. Sin embargo, por s sola no forma un sistema, necesita de otras unidades para su funcionamiento. El Procesador (P) es un dispositivo electrnico que rene en un nico elemento las partes fundamentales de una U.C.P. Por eso, hablar de U.C.P. de P resulta totalmente similar en la mayora de los casos. Dependiendo del sistema, la U.C.P. puede realizar ms menos funciones que las incluidas en un P; por ello utilizaremos el trmino U.C.P. para denominar la parte central de los Sistemas Basados en Procesadores, y el P en s mismo se considera dentro de la U.C.P. como un componente ms. El estudio de la U.C.P. que desarrollamos en lo que sigue est enfocado a una estructura de sistema mnima constituida por los cuatro elementos bsicos siguientes: - U.C.P. - Unidad de Memoria (U.M.) - Unidad de Input / Output (I/O) - Buses del Sistema.

UC P

UM

UE S

BUS DEL SISTE MA

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

CAPITULO 2.- Perfil de la U.C.P.


En este apartado presentaremos las ideas bsicas de un modelo terico de U.C.P. desde el punto de vista externo para poder encajarla en el conjunto del sistema. En la figura 2.1 se muestra la representacin lgica de una U.C.P.

S0 S1 S2

/ RESET

CLK

BU S LOCAL DE CO NTROL

IN T

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

BUS LOCAL DE D IR E C C IO N E S

/R E A D Y

HOLD

D7 D6 D5 D4 D3 D2 D1 D0

BUS LOCAL DE DATOS

F ig u ra 2 .1 R e p re s e n ta c i n l g ic a d e la U C P .

2.1.- Seales Externas.


Una U.C.P. presenta un conjunto de seales para su utilizacin desde el exterior del dispositivo (ver figura 2.1). Estas seales se agrupan en tres conjuntos formando buses. Un BUS podramos definirlo como un conjunto de cables bit, por los que circulan informacin del mismo tipo. As distinguiremos: el bus de Datos, el bus de Direcciones y el bus de Control. En lo que sigue discutiremos cada uno de ellos.

Bus de Datos. La U.C.P. dispone de una coleccin de seales por las cuales circulan
distintos datos desde y hacia la U.C.P. A este conjunto se le llama Bus de Datos y sus caractersticas generales son: - Tamao de 8, 16 32 bits. - Bidireccional. -Tri-estado (para funcionamiento en DMA).

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

El Bus de Datos lo identificamos por el nombre genrico D y las seales que lo componen se identifican cada una de ellas por su nombre, que se constituye mediante el nombre genrico del bus Bus de Datos ms un nmero que identifica su peso binario en la informacin. As pues, el Bus de Datos de nuestra U.C.P. modelo, que es de 8 bits, se compone de 8 lneas de seal denominadas D7 ... D0.

Bus de Direcciones. Para poder localizar la informacin en la memoria, la U.C.P. requiere enviar la direccin que corresponda. Para ello dispone de un conjunto de lneas de seal que conforman la direccin. Este conjunto se denomina Bus de Direcciones (A) y las seales que lo componen toman el nombre genrico de bus (A), ms el nmero que identifica su peso binario en la informacin de direccin. As pues, para nuestro modelo de U.C.P., el Bus de Direcciones es de 16 bits y est compuesto por las seales A15 ... A0.
El Bus de Direcciones presenta las siguientes caractersticas: - Tamao de 8, 16, 20, 32 64 bits. - Unidireccional. - Tri-estado (para DMA).

Bus de Control. El Bus de Control est formado por todas las seales que controlan el funcionamiento externo e interno de la U.C.P. Al contrario de los buses de direcciones y de datos, las lneas de seal que componen este bus no toman su nombre del genrico del bus sino que disponen de nombre propio que hace referencia a la funcin que realiza la seal.
Las lneas del Bus de Control se pueden agrupar en tres grupos: las de control del sistema, las de control de la U.C.P. y las de control del bus. Seales de Control del Sistema. Este grupo de seales son generadas por la Unidad de Control (U.C.) de la U.C.P. y son las siguientes: Lneas de estado: S2, S1 y S0. Las combinaciones de estas seales de salida de la U.C.P. indican la situacin (ciclo) en que se encuentra. Con tres lneas de estado podemos identificar hasta 8 estados diferentes. La codificacin puede ser diferente para cada tipo de U.C.P., pero en general los ciclos son comunes; stas suelen ser las siguientes: - Lectura de Cdigo (fetch) - Lectura de Memoria. - Escritura en Memoria. - Lectura en E/S. - Escritura en E/S. - Reconocimiento de Interrupcin. - Halt. Por medio de estas seales de estado podemos identificar la actividad de la U.C.P. en cada instante. Estas seales son propias de la U.C.P. y no son tri-estado. Seales de Control de U.C.P. Por medio de estas seales podremos controlar el funcionamiento de la U.C.P. desde el exterior de ella.

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

Lnea de Inicializacin (RESET): La seal RESET inicializa la U.C.P. a un estado conocido. Cuando RESET se activa, el Contador de Programa (P.C.), se carga con un valor conocido y comienza un ciclo de fetch sobre esa direccin. Seal de Reloj (CLK). El Reloj en una U.C.P. marca la pauta del desarrollo de todas las funciones, por lo tanto es quien establece la velocidad de ejecucin del proceso. Lneas de Interrupcin (INT y NMI). Estas seales de interrupcin nos permiten romper la secuencia del programa que se est ejecutando en un instante dado para realizar otra funcin (atencin a la interrupcin). Disponemos de dos tipos de interrupciones: Interrupcin Enmascarable (INT). La seal de entrada INT a la U.C.P. es la entrada de la interrupcin enmascarable. Esta seal podr ser atendida o no por la U.C.P. dependiendo de una informacin interna a la U.C.P. (mscara de interrupcin), que puede manejar el Usuario desde el propio programa. Si la mscara est activada, la seal en INT no ser tenida en cuenta. Si la mscara de la interrupcin est desactivada y se activa la seal INT, la U.C.P. abandona la secuencia de programa en la que se encuentra y pasa a realizar otra denominada de atencin a la interrupcin. Interrupcin No Enmascarable (NMI). Para esta seal de entrada a la U.C.P. no existe mscara alguna, de tal forma que cuando NMI se activa, la U.C.P. abandona la secuencia que est realizando para atender a la NMI. Final de Ciclo (/READY). Esta seal indica a la U.C.P. el final del ciclo en curso. La U.C.P. no contina la ejecucin del siguiente ciclo hasta que se finalice el ciclo anterior por medio de la activacin del /READY. Esta seal es activa a nivel bajo. Seales de Control del Bus. Por medio de estas seales, otro elemento del sistema solicita a la U.C.P. el control del bus. En otras palabras, se solicita a la U.C.P. que desconecte sus lneas de direcciones, datos y control del bus del sistema. Con ello se permite que otro elemento del sistema sea quien controle el bus. Para implementar esta funcin son necesarias dos seales, una de peticin de Bus llamada HOLD que es de entrada a la U.C.P., y otra de respuesta de la U.C.P. que es de salida y que se llama HLDA. Cuando HLDA se activa, las seales de los buses de direcciones, datos y control se encuentran en tri-estado por parte de la U.C.P. Cuando la seal HOLD se desactive, la U.C.P. tomar de nuevo el control del Bus y desactivar la seal HLDA.

2.2.- Idea bsica de funcionamiento.


La U.C.P. es una mquina de estados que trabaja bajo las rdenes de un programa almacenado previamente en la memoria del sistema U.M. La memoria del sistema est dividida en dos partes fundamentales: - la memoria de Programa - la memoria de Datos. La memoria de programa contiene, convenientemente codificadas en binario, todas las rdenes (instrucciones) que ha de ejecutar la U.C.P. Todas estas instrucciones se colocan ordenada y consecutivamente en la memoria de tal forma que si un programa que comienza en la posicin N de la memoria es porque la primera instruccin de ste est en dicha posicin; las
C.E.S. San Jos Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

siguientes instrucciones se encuentran en posiciones N+n siendo n un nmero entero positivo. La U.C.P. toma una a una cada instruccin y la ejecuta. El tiempo que tarda la U.C.P. en ejecutar una instruccin se llama Ciclo de Instruccin. Este ciclo de instruccin se compone de un nmero entero de ciclos de reloj. La ejecucin de cualquier instruccin se compone de tres fases: a.-) bsqueda del cdigo de operacin. b.-) bsqueda del operando. c.-) ejecucin La fase a se denomina fetch y siempre existe en toda instruccin. La fase b y la c pueden existir o no, es decir, la mayora de las instrucciones disponen de las tres fases, sin embargo, algunas de ellas slo desarrollan externamente la fase a, pues las otras dos van incluidas en ella. Durante la fase a la U.C.P. accede (en modo lectura), a la memoria de programa y obtiene el cdigo de la instruccin. Se trata pues, de un ciclo de lectura de memoria. La fase b est destinada a la bsqueda del operando. Es posible que el cdigo de operacin obtenido en la fase a contenga ya el operando, en cuyo caso la fase b se ve incluida en la fase a. Si no es as, la fase b se desarrolla externamente como un ciclo de lectura de la memoria de programa de datos, segn que el operando se encuentre en una zona u otra. Ms adelante cuando describamos las distintas formas de direccionamiento del operando podremos analizar en detalle la fase b. La fase c puede tener como resultado una escritura en memoria una lectura escritura en E/S. En los siguientes apartados se describirn cada uno de los ciclos. 2.2.1.- Ciclo de bsqueda del cdigo. La figura 2.2 muestra el cronograma que desarrolla este ciclo. En ella podemos ver que las seales de estado del Bus de control (S0, S1 y S2), toman el valor correspondiente a la codificacin del ciclo de fetch. Para acceder al cdigo de operacin, la U.C.P. enva por el Bus de direcciones la direccin donde se encuentra el cdigo de operacin y activa el comando de lectura. Las restantes seales quedan en estado de reposo. Cuando la memoria entrega la informacin solicitada, activa la lnea /READY para indicar a la U.C.P. que el dato es vlido, finalizando de este modo el ciclo.

2.2.2.- Ciclo de lectura en memoria. La figura 2.3 muestra un ciclo de lectura de la memoria (de programa de datos), en donde las seales de estado nos dan la definicin del ciclo en curso. El resto de la secuencia es similar a la del ciclo de fetch.

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

2.2.3.- Ciclo de escritura en memoria. La figura 2.4 muestra el cronograma desarrollado por la U.C.P. para un ciclo de escritura en memoria. Las seales de identificacin del ciclo (S0, S1 y S2), toman el estado correspondiente al ciclo en curso. La U.C.P. enva por el Bus de direcciones la direccin sobre la que se va a escribir el ciclo en la memoria. Cuando la U.C.P. recibe el /READY de la memoria, se acaba el ciclo.

2.2.4.- Ciclo de lectura en E/S. La figura 2.5 muestra el ciclo de lectura en el espacio de E/S. Las seales de estado del Bus de control indican el destino del ciclo en curso mientras el comando se lanza junto con la direccin del espacio del E/S.

2.2.5.- Ciclo de escritura en E/S Es similar al ciclo de lectura en memoria salvo que las seales de estado del Bus de control tienen el estado correspondiente a este ciclo. La figura 2.6 muestra el desarrollo del ciclo de escritura en E/S.

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

CAPITULO 3.- Arquitectura de la U.C.P.


Una U.C.P. tpica contiene ( figura 3.1) tres unidades bsicas: - Registros internos. - Unidad Lgica y Aritmtica (A.L.U.) - Unidad de Control (U.C.)
BUS DE CONTROL INTERNO

REGISTROS INTERNOS

ULA

UNIDAD DE CONTROL

F ig u r a 3 .1 U n id a d e s b s ic a s d e la U C P .

3.1.- Registros Internos.


Se denominan registros internos al conjunto de registros que dispone la U.C.P. para su funcionamiento. Los registros internos son unidades de almacenamiento temporal dentro de la U.C.P. El tamao de los registros depende de la funcin que ha de realizar y del tipo de U.C.P. En general tienen el tamao del Bus de Datos del Bus de Direcciones. 3.1.1.- Clasificacin. Los registros internos son de dos tipos: - No accesibles. - Accesibles de Usuario.
C.E.S. San Jos Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

Los registros no accesibles son aquellos registros internos a la U.C.P., que el usuario no puede controlar directamente su funcionamiento ni su contenido. Son de uso propio y restringido de la U.C.P. Desde el punto de vista del usuario, estos registros son totalmente transparentes ya que no afectan, aparentemente, al funcionamiento de la U.C.P. observado desde el exterior. Los registros accesibles son aquellos registros internos a la U.C.P., a los que el usuario puede controlar su funcionamiento y/o contenido desde el exterior de la U.C.P. Este manejo se hace a travs del juego de instrucciones que dispone la U.C.P. Dentro de los registros de usuario se distinguen dos tipos diferentes: los de uso especfico y los de uso general. Los de uso especfico son aquellos cuya funcin est determinada por el fabricante de la U.C.P. (como por ejemplo el Contador de Programa P.C.). Los de uso general no tienen una funcin predeterminada sino que, por el contrario, es el usuario quien lo aplica segn sean sus necesidades. 3.1.1.1.- Registros No Accesibles. Aunque desde el punto de vista del usuario, la funcin de estos registros es totalmente transparente y, adems no se dispone de medios para actuar directamente sobre ellos, s es interesante conocer la existencia de algunos de ellos, ya que ello nos facilitar la compresin del funcionamiento del conjunto. Registro de Instruccin. Las instrucciones que ha de ejecutar la U.C.P. se encuentran codificadas como datos en la memoria (de programas), de donde las extrae para su ejecucin. Las instrucciones se componen de varias partes, el cdigo de operacin que es realmente la orden codificada y el/los operandos. Cuando la U.C.P. obtiene de la memoria el cdigo de operacin de una instruccin, lo guarda en un registro denominado registro de instruccin y se mantiene ah hasta finalizar la ejecucin de dicha instruccin. El registro de instruccin es del tamao adecuado a los cdigos utilizados en la U.C.P. Lo ms frecuente es que los cdigos tengan el tamao igual al Bus de Datos (8 16 bits). La salida del registro de instruccin sirve como entrada al decodificador de instruccin, pero esto lo veremos ms adelante al hacer la descripcin del funcionamiento. Este registro no es modificable directamente por el usuario ya que no dispone de una intruccin para ello. Registro del Bus de Direcciones. El Bus de Direcciones de la U.C.P. est formado por las salidas de un registro interno a la U.C.P. que se denomina registros del Bus de Direcciones (MAR). Este registro tiene como misin retener todo el tiempo que sea necesario una determinada informacin de direccin sobre el Bus de Direcciones, independizndolo de la evolucin de los restantes registros internos de la U.C.P. Las diferentes fuentes que entregan direcciones al registro del Bus de Direcciones son varias. Una de ellas es el registro Contador de Programa (P.C.), ya citado y del que hablaremos con mayor detalle ms adelante. Este registro es el que ms frecuentemente utiliza el MAR, ya que cada instruccin a ser ejecutada necesita ser buscada previamente a travs de su direccin contenida el P.C. El registro puntero de la pila tambin accede al MAR cuando su contenido se
C.E.S. San Jos Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

10

utiliza para dar una direccin. As mismo, el MAR puede ser cargado desde cualquier otro registro interno capaz de ser puntero de direccin. El MAR es cargado directamente desde una determinada instruccin si sta contiene una direccin de un dato. El MAR es un registro unidireccional de entrada y salida en paralelo. Si la U.C.P. puede funcionar en D.M.A., este registro adems dispone de salidas triestado. Registro del Bus de Datos. Es similar al registro del Bus de direcciones salvo que ahora este registro se encarga de conectar con el Bus de datos. Por l pasan todos los datos y cdigos solicitados y entregados por la U.C.P. Es similar al registro del Bus de direcciones salvo que ahora este registro se encarga de conectar con el Bus de datos. Por l pasan todos los datos y cdigos solicitados y entregados por la U.C.P. Este registro se llama MDR y es de entrada y salida paralelo, bidireccional y si la U.C.P. permite el funcionamiento en ADM, la salida hacia el Bus de datos externo ha de ser triestado.

3.1.1.2.- Registros Accesibles. Como hemos visto antes, la U.C.P. dispone de un conjunto de registros que son accesibles al usuario. Dentro de ellos hay dos tipos: los de uso especfico y los de uso general. A estos ltimos se les denominan tambin registros de usuario.

3.1.1.2.1.- Registros de uso especfico. Los registros internos de uso especfico son aquellos que tienen asignada una funcin determinada dentro de la U.C.P., aunque en algn caso pueda realizar otras funciones. Registro Contador de Programa. Las instrucciones que conforman un programa se almacenan en la memoria en direcciones consecutivas. La U.C.P. para poder ejecutar este programa ha de acceder a la memoria de programa a leer estas instrucciones para saber qu operacin ha de ejecutar. Para ello es necesario direccionar adecuadamente la memoria. Cada posicin de la memoria est numerada unvocamente para poder distinguirla de las restantes. El nmero que identifica cada posicin de la memoria se llama direccin. La U.C.P. dispone de un registro destinado a contener la direccin de la instruccin a ser ejecutada. Este registro es el contador de programa (PC). La U.C.P. avanza en la ejecucin del programa incrementando este registro cada vez que ejecuta una instruccin. El programador almacena los programas en posiciones sucesivas y crecientes de la memoria; segn esto, el comienzo del programa estar en posiciones ms bajas, y el final en las ms altas. Esto no es cierto rigurosamente en todos los casos ya que no siempre es posible escribir los programas en posiciones consecutivas. En multitud de ocasiones hemos de cambiar el orden de ejecucin del programa, debindose ejecutar instrucciones que se encuentran en posiciones no consecutivas. Esto no es un problema ya que todo P dispone de instrucciones de salto que permiten alterar el contenido del contador de programa al valor necesario, y por tanto, el orden de ejecucin de las instrucciones.
C.E.S. San Jos Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

11

Como vemos, el PC es un registro con una funcin especfica pero cuyo contenido lo podemos controlar a travs de las instrucciones correspondientes.

Registro puntero de la pila. El Stack Pointer (S.P.) pila es una zona de memoria de datos reservada a la U.C.P. y que est destinada a almacenar determinadas temporales, pero de importancia crucial en el funcionamiento del sistema. Ms adelante al describir el funcionamiento de la pila veremos en detalle este funcionamiento. Al ser el pila una zona de la memoria, la U.C.P. ha de direccionarla para poder leer y escribir sobre ella. Esto lo hace a travs de un registro especial denominado puntero de la pila (stack pointer, SP). El SP es capaz de volcar su contenido directamente sobre el registro MAR. El registro puntero del pila (SP) tiene una dimensin determinada que hace fijar la posicin y el tamao del pila en la memoria. Cada vez que la U.C.P. necesita escribir leer un dato de la pila, vuelca al Bus de direcciones (a travs del MAR) el contenido del puntero del pila. La U.C.P. maneja, de forma automtica, el puntero de la pila en determinadas circunstancias, como veremos ms adelante, pero tambin puede ser modificado a voluntad por el usuario a travs de las instrucciones correspondientes. Este registro puede ser cargado directamente con una informacin puede ser incrementado decrementado.

Registro ndice. Este es un registro con una funcionalidad determinada, pero que en muchas ocasiones puede ser utilizado como un registro de propsito general. El registro ndice tiene como misin servir de puntero de direcciones para unas determinadas funciones. La U.C.P. utiliza el contenido de este registro para suministrar calcular la direccin de algn dato cuando la instruccin as lo ordene (direccionamiento indexado).

Registro acumulador. Este registro es el registro destino de la salida de la ULA y adems puede ser cargado con cualquier valor a travs de la mayora del repertorio de instrucciones del P. Se encuentra pues, en la lnea divisoria entre los registros de uso especfico y los de uso general. Suele tener el tamao del dato de la U.C.P., y puede ser utilizado como origen destino de datos direcciones (teniendo siempre en cuenta su tamao). Es uno de los registros ms utilizados de la U.C.P.

Registro de indicadores. Los indicadores son biestables que utiliza la U.C.P. para memorizar determinadas circunstancias ocurridas durante un proceso. Estos indicadores se agrupan en un registro denominado de indicadores ( registro de estado de la mquina). Este registro de estado tiene un tamao variable de una U.C.P. a otra, dependiendo de las necesidades previstas por el diseador de la misma.

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

12

Es un registro algo particular en cuanto que cada uno de los bits es independiente de los dems y la U.C.P. el usuario puede activarlos desactivarlos por separado ya sea directa indirectamente. La U.C.P. actualiza el estado de estos indicadores automticamente como consecuencia del resultado de la instruccin ejecutada, representando sobre ellos el estado en que ha quedado la mquina. La figura 3.2 muestra el contenido del registro de indicadores de la U.C.P. Cada uno de estos bits recibe un nombre propio y tienen una funcin diferente. Lo ms general es incluir en este registro los siguientes bits:

Figura 3.2 Registro de indicadores de la UCP.


INDICADOR DE CERO (Z). Se activa cuando el resultado de la operacin es nulo. En caso contrario, se desactiva. INDICADOR DE ACARREO (C). Se activa cuando se produce un acarreo en la ltima operacin realizada. Se desactiva si no se produce. En las operaciones de resta, representa al acarreo correspondiente (borrow). INDICADOR DE SIGNO (S). Refleja el estado del bit 7 del ltimo resultado de la ltima operacin hecha sobre la ULA. Est pensado para ser utilizado con la representacin de magnitud y signo. Si S =1 indica que el resultado es negativo. INDICADOR DE REBOSAMIENTO (V). Sealiza un error en el proceso de clculo en complemento a dos por sobrepasar el valor mximo en el resultado de la operacin (+127, 128). INDICADOR DE ARRASTRE INTERMEDIO (H). Sealiza el arrastre producido del bit 3 al 4 como resultado de la operacin. Este indicador est pensado para ser utilizado en operaciones con representacin de nmeros en BCD. INDICADOR DE SUBSTRACCION (N). Ya que el algoritmo para corregir operaciones en BCD es diferente para las operaciones de suma y de resta, este indicador especifica cual fue la ltima operacin ejecutada. MASCARA DE INTERRUPCION (Y). Este bit permite la activacin o no de una interrupcin enmascarable a la U.C.P. Si la mscara est activada, Y = "1", la U.C.P. no hace caso de la seal de entrada de interrupcin enmascarable INT (la interrupcin est enmascarada). Si Y = "0", la U.C.P. aceptar la entrada de interrupcin por la seal INT. Hay que anotar que el estado activo de los bits del registro de Status es el estado H (nivel alto), mientras que el reposo lo es el nivel L (bajo). Hemos dicho antes que estos bits los puede activar y desactivar el usuario. Esto es as en algunos casos, pero en otros no existe una instruccin directa que lo realiza sino que se ha de hacer a travs de otra instruccin, esto es, de una forma indirecta (p.e.: si deseamos activar el
C.E.S. San Jos Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

13

indicador Z, podemos hacer una operacin de resta del acumulador con l mismo. El resultado es 0 y Z = l).

3.1.1.2.2.- Registros de uso general. Estos son registros internos de la U.C.P. que no tienen una funcin predefinida. Se pueden utilizar como origen destino de los datos en la U.C.P. y pueden intervenir en algunas operaciones aritmticas y lgicas de la ULA. Los registros de uso general se utilizan como elementos de memoria dentro de la U.C.P. con un tiempo de acceso muy corto. Esto hace que los fabricantes introduzcan el mximo nmero posible de estos registros ya que as se aumenta enormemente la velocidad de proceso. El tamao de los registros internos suele ser el mismo que el de los datos de la U.C.P. un mltiple submltiplo entero. En muchas ocasiones los registros de uso general tienen funciones de puntero de direcciones para determinadas operaciones sobre la memoria.

3.2.- Unidad Lgica y Aritmtica.


La ULA es la parte de la U.C.P. que se encarga de realizar las operaciones lgicas y aritmticas de la U.C.P., Las operaciones aritmticas que realiza son las dos bsicas: suma y resta. Las operaciones lgicas que es capaz de realizar son: AND, OR, inversin, XOR, desplazamientos y rotaciones. Con este conjunto de operaciones bsicas es posible realizar cualquier funcin por compleja que sea. El problema se traslada a un algoritmo que lo realice con estas operaciones. Los Ps ms avanzados incorporan funciones ms complejas, como multiplicacin y divisin, que simplifican el algoritmo. Adems, existe la posibilidad (en algunos Ps) de utilizar un coprocesador aritmtico que se encarga de realizar todas las funciones de la ULA con una velocidad mayor ya que permite trabajar en coma flotante.

3.3.- Unidad de Contro1.


La Unidad de Control (UC) dirige el funcionamiento de la ULA, de los registros internos y genera las seales del Bus de control externo de la U.C.P. de acuerdo con la instruccin que est en ejecucin en cada momento. La UC reacciona frente al cdigo de operacin de la instruccin que se ha cargado en el registro de instruccin. El cdigo entra en el decodificador de instruccin que lo identifica y activa las seales internas y externas correspondientes de la U.C.P. La UC es un sistema secuencial controlado por el reloj de la U.C.P. que arranca su funcionamiento a partir de la decodificacin del cdigo de operacin cargado en el registro de
C.E.S. San Jos Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

14

instruccin, generando las seales necesarias para ejecutar la instruccin en curso. El ciclo de funcionamiento de la UC no es fijo puesto que depende del cdigo cargado. El comienzo del ciclo es siempre la lectura (de la memoria de programa), del cdigo de operacin que define la instruccin a ejecutar. Durante la ejecucin de toda instruccin, la UC prepara la direccin del siguiente cdigo en el contador de programa (PC). La UC realiza su secuencia de acuerdo a un microprograma que hay grabado en una memoria fija en su interior y que es capaz de identificar (decodificar) todo el juego de instrucciones de la U.C.P. Algunas U.C.P. permiten que sea el propio usuario quien escriba esta memoria del microprograma. Esta posibilidad permite hacer una U.C.P. personalizada.

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

15

CAPITULO 4.- Funcionamiento de la U.C.P.


En este apartado discutiremos el funcionamiento de la U.C.P. desde dos perspectivas distintas; desde el interior de la U.C.P. y desde el exterior. La visin interna del funcionamiento es bsica para un buen entendimiento del comportamiento externo.

4.1.- Funcionamiento interno.


Nos basaremos en la arquitectura interna de la U.C.P. representada en la figura 4.1. En la que podemos distinguir los tres elementos principales; los registros internos, la Unidad Lgica y Aritmtica y la Unidad de Control.

R E G M D R

R E G

U L A
M A R R E G
A C C B C IN D IC A D O R E S

M U X

... ...

R .I.

D .I. S E C .

R E G I S T R O S

I N T E R N O S

P C

S P

IX

F ig u r a 4 .1

A r q u ite c tu r a in te r n a d e la U C P

El funcionamiento de los tres elementos bsicos citados son coordinados por la UC. El funcionamiento de la U.C.P. es siempre cclico y controlado por el reloj que marca la pauta para que la mquina de estados de la UC evolucione de un estado al siguiente. Es por tanto, un sistema sncrono. Esta caracterstica no distrae el funcionamiento con procesos totalmente asncronos respecto a la U.C.P. Adems, la UC es capaz de detener la secuencia (congelarla) en determinados puntos de la misma, para poderse adaptar a las distintas velocidades del resto de los elementos que conforman el sistema. Esto hace que las U.C.P.s actuales se puedan compatibilizar con cualquier otro elemento (memoria, dispositivos E/S, etc.) aunque stos no sean sncronos con el reloj de aquella.
C.E.S. San Jos Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

16

En la figura 4.1 podemos ver la existencia de dos buses internos (BDI y BCI) que se utilizan para interconexionar las distintas unidades. Por BDI (Bus de Datos Interno) fluyen las distintas informaciones (datos y direcciones) entre los registros internos. Por el Bus BCI (Bus de Control Interno) se transmiten las rdenes desde la UC a los restantes elementos de la U.C.P. El interfaz con el exterior de la U.C.P. se realiza por medio del MAR, MDR y las seales de control del secuenciador de la UC. Cada una de las distintas unidades estn conectadas a la UC por medio de seales de control que les define el funcionamiento en cada momento. El conjunto de seales de control que llegan al MDR controlan el funcionamiento de este registro de datos. El registro MDR es de entrada y salida en paralelo por medio de una seal de reloj. Adems es un registro bidireccional. Con estas caractersticas podemos deducir que el registro MDR dispone de dos lneas para el control del triestado (hacia BDI y hacia BD) y una lnea de reloj para la carga del registra. El conjunto de seales de control que llegan al registro MAR controlan el funcionamiento del registro del Bus de direcciones. Este registro es de entrada y salida paralelo y es unidireccional. Slo sern necesarias dos seales de control; el reloj de carga y el control del triestado de salida hacia el BA. Las seales de control que llegan a los registros de uso general controlan el funcionamiento de los distintos registros de datos de la U.C.P. El multiplexor se encarga de seleccionar/direccionar el registro indicado por las seales de control. El nmero de stas seales de control dependen del nmero de registros disponibles (2 para 4 registros, 3 para 8 registros, etc.). Se requiere una seal adicional de reloj para cargar el registro direccionado y otra para poder volcar al Bus interno (BDI) el dato procedente del registro a leer. Los registros PC, SP e IX los hemos separado del conjunto de registros por tener una funcionalidad particular cada uno de ellos. El registro PC es un registro-contador de entrada y salida paralelo. En funcionamiento normal se comporta como un contador binario de n bits (16 en nuestro modelo). Bajo la accin de instrucciones particulares (saltos) puede ser cargado en paralelo desde el BDI. Por ello las seales de control que necesita son: un reloj para el contador, un reloj para la carga y una seal de control de salida al BDI. El registro SP es tambin un registro-contador con seales de control diferentes al PC. Cuando funciona como contador el SP es capaz de incrementar decrementar su contenido. Como el PC, el SP puede ser cargado desde BDI. Para estas funciones son necesarias seales como: un reloj para la carga desde el Bus interno, un reloj para el contador, una seal de control para el tipo de conteo (UP, DOWN) y una seal de control de salida al BDI. Las seales de control de la ULA hacen que sta desarrolle la funcin descrita por el cdigo de la instruccin en curso. Dependiendo del nmero de funciones capaz de realizar la ULA, el nmero de lneas de control ser mayor menor. La ULA desarrolla la operacin asncronamente y, por lo tanto, no necesita 1a seal de reloj. Por otro lado, al tener asociada la ULA dos registros de entrada y uno de salida de datos, stos necesitan seales de reloj para la carga de los datos. Hay que aadir las seales de control de acceso al Bus interno (RDS --> BDI). La UC tambin accede al BDI ya que su registro de instruccin ha de recoger del Bus de datos externo el cdigo de la operacin a realizar. El registro de Instruccin se carga en
C.E.S. San Jos Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

17

paralelo y su salida ataca directamente al decodificador de instruccin por medio del cual el secuenciador genera las seales de control necesarias tanto interna como externamente (Bus de Control externo, BC). Bsicamente, el funcionamiento de la U.C.P. evoluciona en tres fases: bsqueda del cdigo de operacin, bsqueda del operando y ejecucin de la instruccin. Esta no es ms que la evolucin lgica para hacer algo: averiguar qu es lo que hay que hacer, saber los elementos que intervienen y, por ltimo, hacerlo. Toda instruccin comienza con la bsqueda del cdigo de operacin en la memoria, para lo cual la UC hace que el contenido del PC salga al Bus de direcciones externo a travs del MAR y habilita la entrada de datos desde el exterior (a travs del MDR) hacia el registro de instruccin. Una vez decodificada la instruccin, se generan (por parte de la UC) los controles necesarios para su ejecucin. Veamos qu sucede en el caso concreto de una instruccin de nuestro modelo de U.C.P. que suma un dato procedente de la memoria con el contenido del acumulador: Esta instruccin se compone de dos bytes, uno para el cdigo de operacin de 8 bits y un segundo byte que es la direccin de memoria en donde se encuentra uno de los operandos. El otro operando (el contenido del acumulador) est direccionado intrnsecamente en el cdigo (como veremos ms adelante al hablar de la codificacin de las instrucciones). En la primera parte del proceso (bsqueda del cdigo de operacin Fetch), la U.C.P. enva la direccin de la instruccin a ejecutar al Bus de direcciones. Para ello activa la salida del PC al BDI y carga el MAR con sta informacin. Simultneamente se activa la salida del MAR hacia BA. Las seales de control correspondientes al ciclo a realizar en la memoria de datos (lectura del cdigo de operacin) han sido activadas por la UC (estas seales son las de estado de la U.C.P.) hacia el BC. Conforme sale la direccin al Bus de direcciones (el MAR ha sido cargado con el contenido del PC), el PC recibe un impulso por reloj del contador y se incrementa en una unidad. Una vez que el dato llega al MDR, la UC lo transfiere desde aqu al registro de instruccin. La U.C.P. averigua entonces la funcin a realizar (decodificando el cdigo de operacin) y deduce que uno de los operandos es el contenido del acumulador y que el otro operando ha de buscarlo en la memoria en la direccin dada por el segundo byte de la instruccin. Como consecuencia de la decodificacin del cdigo de operacin en la UC, sta genera rdenes para realizar varias funciones. La decodificacin del cdigo de operacin obliga al secuencial a realizar un ciclo adicional para buscar el otro operando en la direccin dada de la memoria, para lo cual el contenido del PC se vuelca al Bus externo (PC --> BDI --> MAR) y se activan las seales correspondientes para leer la siguiente direccin de memoria cuyo contenido es la direccin del segundo operando. A continuacin da orden al MUX para volcar al Bus interno el contenido del acumulador y cargarlo en el registro de entrada de la ULA (Acc --> BDI --> RDEL). As mismo, la UC ha activado los controles de la ULA para realizar la operacin de sumar. Una vez que el registro MAR ha sido cargado con el contenido del PC, ste recibe un nuevo impulso y se incrementa en una unidad para apuntar a una nueva direccin de la memoria de programa (la direccin del siguiente cdigo de operacin).

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

18

Cuando el dato procedente de la memoria de programa se encuentra disponible, la UC transfiere la informacin desde en MDR al MAR (MDR --> BDI --> MAR) generando la UC las seales de control necesarias hacia el Bus externo para leer el contenido de esa direccin. Una vez que el contenido de esta direccin de la memoria de datos est disponible, la UC transfiere la informacin al otro registro de entrada de la ULA (MDR --> BDI --> RDE2). Inmediatamente se obtiene el resultado en el registro de salida de sta. Este resultado se trasvasa por BI al registro acumulador segn rdenes de la UC (RDS --> BDI --> Acc). Con ello termina la ejecucin de esta instruccin. El proceso descrito no es el ms complejo pero tampoco es el ms simple que realiza una U.C.P. Conforme lleguemos a la particularizacin para un determinado microprocesador podremos ver la enorme complejidad de algunos de los procesos que son desarrollados para la ejecucin de una determinada instruccin. La ULA utiliza el registro de estado para reflejar algunas condiciones de inters para el funcionamiento de la mquina. Este registro es utilizado por el programador para analizar rpidamente el resultado de la operacin y tomar, en consecuencia, las decisiones adecuadas.

4.2.- Funcionamiento externo.


Como hemos dicho antes, el funcionamiento de la U.C.P. es cclico. El reloj de la U.C.P. es el que marca cada uno de los pasos del funcionamiento. La fase de bsqueda del cdigo de operacin es un ciclo mquina particular que recibe el nombre de CICLO de BUSQUEDA FETCH. El comienzo de cada uno de los ciclos de instruccin que realiza la U.C.P. para ejecutar un programa es un ciclo de bsqueda de cdigo de operacin. Durante el ciclo de bsqueda, la U.C.P. desarrolla un acceso de lectura a la memoria de programa para obtener de ella el cdigo de operacin de la instruccin que se trate. Este cdigo que se obtiene de la memoria es depositado, durante este ciclo, en el registro de instruccin de la U.C.P. y es identificado por el decodificador de instruccin de tal forma que, al finalizar el ciclo, la U.C.P. ya tiene informacin de cual es la funcin a realizar. Una vez acabada la fase de bsqueda del cdigo de operacin, se pasa a la fase de bsqueda del operando. Esta operacin ocupar o no, otro ciclo mquina dependiendo de donde se encuentre el operando. Ms adelante, cuando discutimos los modos de direccionamiento del operando, veremos que hay veces en que el operando se incluye en el mismo cdigo de operacin de la instruccin. Si el operando hay que buscarlo fuera de la U.C.P. el resultado hay que depositarlo en la memoria, la instruccin se ve acompaada de algn ciclo mquina de lectura escritura en memoria o E/S. Sea, por ejemplo el caso de la instruccin ejecutada en el apartado anterior. Visto desde el exterior, se realizan tres accesos a la memoria, uno para el fetch, otro para obtener la direccin del dato y un tercero para obtener el dato propiamente dicho. Las funciones internas (tales como las transferencia entre registros) no acceden al exterior de la U.C.P. La secuencia desarrollada hacia el exterior de la U.C.P. evolucionaran as:
C.E.S. San Jos Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

19

- Ciclo de bsqueda del cdigo de operacin. Acceso de lectura sobre la memoria de programa. - Ciclo de lectura de dato. Acceso de lectura sobre la memoria de programa para obtener la direccin del dato ms ciclo de lectura sobre la memoria de datos para obtener ste. Si la instruccin tratase de escribir el contenido de un registro interno en una determinada posicin de la memoria, la secuencia evolucionan as: - Leer el cdigo de operacin de la instruccin. Ciclo de fetch con un acceso de lectura sobre la memoria de programa. - Leer la direccin en donde se va a escribir el dato. Bsqueda de la direccin de destino del operando de la instruccin. Se realizan dos accesos de lectura sobre la memoria de programa (ya que suponemos que la direccin se compone de dos bytes). - La direccin de destino leida en los dos ciclos anteriores hay que componerla en el orden correcto y enviarla al registro MAR. Se trata de una operacin interna a la U.C.P. que no desarrolla ciclo externo pero que consume ciclos de reloj en su ejecucin. - Escribir el dato en la direccin indicada por la instruccin. Implica un ciclo de acceso de escritura sobre la memoria de datos.

4.2.1.- Ciclos funcionales bsicos. Los ciclos funcionales bsicos son todos los ciclos externos diferentes que es capaz de desarrollar la U.C.P. durante su funcionamiento. Para cada modelo de U.C.P. existe una coleccin de ciclos bsicos que en general, son diferentes de un modelo a otro. Sin embargo todas las U.C.P.s realizan una coleccin comn de ciclos que son los que estudiaremos a continuacin. Por supuesto que los ciclos aqu discutidos son desarrollados por cada U.C.P. de forma diferente. Ciclo de bsqueda del cdigo de instruccin. Como se ha dicho en repetidas ocasiones, toda instruccin comienza con la bsqueda del cdigo de la instruccin. Este ciclo se denomina de fetch y consiste en un acceso de lectura sobre la memoria de datos del sistema. La figura 4.2 representa el cronograma de este ciclo en el que podemos ver que se desarrolla en cuatro periodos de reloj (Cl a C4). El ciclo comienza con la activacin de /ADS en el tiempo 1 (retardo de /ADS medido desde la subida de Cl a la bajada de /ADS). Las lneas de direcciones se hacen estables en el tiempo 2 desde Cl, mientras que la seales de estado identifican el ciclo de fetch en el tiempo 3 desde Cl. A partir de este momento la U.C.P. queda a la espere de que la memoria le entregue el dato (el cdigo de instruccin en este caso). La memoria pondr el dato requerido en el Bus de datos en un instante dado despus de comenzar el ciclo. Este tiempo se denomina de acceso. La U.C.P. requiere que el dato sea vlido y estable un tiempo antes del final del ciclo (tiempo medido desde que el dato es vlido hasta el momento de lectura del mismo por parte de la U.C.P.), este tiempo se denomina de setup del dato. La activacin de la seal /READY indica a la U.C.P. que el dato est disponible para ser leido del Bus y as poder acabar el ciclo. La U.C.P. exige a la seal /READY para poder llevar a cabo su misin, que sea estable en el estado activado durante un periodo de tiempo antes del flanco de reloj con el que se desea
C.E.S. San Jos Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

20

acabar el ciclo (tiempo de setup del /READY respecto al reloj. Tiempo 4), as como un tiempo de hold respecto a este mismo flanco (tiempo 5). Los datos a la entrada de la U.C.P. han de cumplir con un tiempo de hold respecto al flanco en que se lee (C4 en la figura 4.2 ). La figura 4.2a representa el ciclo de lectura de cdigo sin ciclo de espera. Esto es, la U.C.P. realiza la operacin en el menor tiempo posible. Lo ms rpido que la U.C.P. puede realizar el ciclo de fetch es en 4 ciclos de reloj. En este ciclo sin estado de espera, la U.C.P. no leer el dato del Bus hasta el flanco de subida de C4 aunque el dato est disponible antes y /READY se active antes de C3. La figura 4.2b muestra un ciclo de fetch con un estado de espera. En ella vemos que la memoria no entrega el /READY hasta pasado un periodo de reloj despus de C3, es decir indica a la U.C.P. que el ciclo se debe terminar en 5 periodos de reloj. Esto significa que el ciclo de fetch de la U.C.P. se ve alargado en un periodo de reloj, es decir se introduce un ciclo de espera a la U.C.P. dicho de otra forma: cuando la memoria no es capaz de entregar el dato en el tiempo requerido para el ciclo mnimo (cuatro ciclos de reloj en nuestro caso), sta no activa el /READY haciendo que la U.C.P. se espere hasta el momento adecuado al acceso al dato por parte de la memoria. Cada ciclo de reloj de la U.C.P. que est sta esperando a la llegada del /READY se denomina estado ciclo de espera (wait state). Los ciclos de espera los hemos rotulado en los cronogramas como WS, mientras que los ciclos de reloj mnimos se denominan Cn. Lo ideal es hacer que la U.C.P. funcione sin estados de espera ya que de esta forma se consigue la mxima velocidad. Esto no es posible en todos los casos y la seal /READY se utiliza para adaptar las diferencias de velocidad entre la U.C.P. y los dems elementos (memoria E/S). Evidentemente cada ciclo de espera que se introduzca en cualquier ciclo mquina de la U.C.P. penaliza gravemente la velocidad de sta.

Ciclo de lectura en memoria. Es un ciclo que desarrolla la U.C.P. cuando requiere leer informacin ( no de cdigo) de la memoria, ya sea de la de programa de la de datos. La figura 4.3 muestra el cronograma correspondiente a este ciclo que presenta el mismo aspecto que el ciclo de fetch discutido antes salvo el estado de las seales de estado que adquieren el estado lgico adecuado a la identificacin del ciclo en curso. La figura 4.3a muestra el ciclo de lectura mnimo (sin estados de espera, 0 wait states), mientras que la figura 4.3b muestra la situacin con varios estados de espera (4 en este caso).

Ciclo de escritura en memoria. La U.C.P. utiliza este ciclo para depositar informacin (direcciones datos) en la memoria. La figura 4.4 muestra el cronograma correspondiente a este ciclo. En esta ocasin, la U.C.P. vuelca al Bus de datos la informacin a ser escrita. El tiempo 8 es el tiempo que la U.C.P. tarda en volcar el dato al Bus medido desde C2 al dato vlido. La U.C.P. espera, igual que en los casos anteriores, que la lgica de la memoria active la seal /READY para acabar el ciclo. Conforme esto sucede, la U.C.P. espera an un periodo de reloj ms para retirar los datos (tiempo 9) para asegurar un tiempo mnimo de hold en el Bus. El tiempo 9 se mide desde el flanco ascendente siguiente al de finalizacin del ciclo a la retirada del dato (paso a triestado). La figura 4.4a muestra el ciclo mnimo en que la U.C.P. es capaz de realizar una escritura en la memoria. La figura 4.4b muestra el ciclo de escritura con dos estados de espera.

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

21

Ciclo de lectura en E/S. Es un ciclo similar al de lectura en memoria salvo que ahora las seales de estado toman la combinacin correspondiente. La figura 4.5 muestra el cronograma correspondiente a este ciclo.

Ciclo de escritura en E/S. Es similar al ciclo de escritura en memoria salvo que est identificado como de E/S por las seales de estado de la U.C.P. La figura 4.6 muestra el cronograma de este ciclo.

Ciclo de reconocimiento de interrupcin. Cuando la U.C.P. reconoce una interrupcin realizar un ciclo especial para indicarlo ya que afecta al funcionamiento de los elementos exteriores a ella cuando la U.C.P. funciona con interrupciones vectorizadas autovectorizadas. La figura 4.7 muestra el desarrollo del ciclo, en ella podemos ver que las seales de estado toman la combinacin adecuada para indicar esta situacin. El dispositivo que interrumpe vuelca el vector y activa la seal /READY para indicar a la U.C.P. el final del ciclo. En este caso la U.C.P. no necesita entregar direccin alguna.

Ciclo de Halt. La U.C.P. dispone de una instruccin para detener el proceso y quedar a la espera de la llegada de una interrupcin. Esta instruccin se denomina HALT. Cuando el programa ejecuta una instruccin HALT, la U.C.P. se detiene en su ejecucin y slo sale de esta situacin si recibe una interrupcin. El cronograma de la figura 4.8 corresponde a este ciclo.

4.2.2.- Definiciones de tiempos. Los cronogramas mostrados de los distintos ciclos que desarrolla la U.C.P. se acotan en tiempo respecto al reloj CLK de la unidad. La U.C.P. modelo que estamos utilizando evoluciona con el flanco ascendente del reloj CLK. Por ello todas las acotaciones van referidas siempre a un flanco de subida de CLK. Los nmeros que aparecen en los distintos cronogramas, son la referencia a la cota en tiempo, caracterstica de la U.C.P. Los ciclos de reloj necesarios en cada ciclo de U.C.P. se nombran como Cl, C2, etc. El ciclo mquina mnimo de nuestra U.C.P. consta de cuatro ciclos de reloj (Cl, C2r C3 y C4). Todos los ciclos mquina comienzan con la bajada de la seal /ADS y terminan con la llegada de la seal /READY. /ADS la suministra la U.C.P. indicando el comienzo del ciclo mientras que /READY la suministra el dispositivo destino de la operacin (memoria E/S), por lo que son los dispositivos externos a la U.C.P. los que determinan la duracin exacta del ciclo. Cuando el ciclo es de lectura (de cdigo de dato sobre memoria E/S), /READY se activar de tal forma que los datos sean vlidos a la entrada de la U.C.P. al menos el tiempo de setup. As mismo, la propia seal /READY tiene una especificacin de tiempo de setup para asegurar que la U.C.P. reconocer el final del ciclo. Las definiciones de estos tiempos se dan a continuacin. Cota num. Descripcin 1 2 9 3
C.E.S. San Jos

Retardo del /ADS Retardo de las direcciones (A15-AO) Desconexin de direcciones (D15-DO) Retardo de las seales de estado (S2, S1, SO)
Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

22

4 5 6 7 8 10 11 12

Setup de /READY Hold de /READY Setup de datos (D7-DO) Hold de datos (D7-DO) Retardo de datos (D7-DO) Desconexin de datos (D7-DO) Setup de INT Hold de INT

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

23

CAPITULO 5. - Juego de instrucciones.


Toda U.C.P. dispone de un conjunto de cdigos capaz de ser identificados por su decodificador de instruccin. A este conjunto se denomina juego de instrucciones de la U.C.P. y ser ms o menos extenso dependiendo del modelo de U.C.P.

5.1.- Estructura
Cualquier instruccin de una U.C.P. se compone de dos campos denominados cdigo de operacin y operando respectivamente. CODIGO DE OPERACION. El cdigo de operacin es una informacin codificada que informa a la U.C.P. de la funcin que debe realizar. La codificacin es particular para cada U.C.P. y tiene una relacin muy estrecha con el microprograma contenido en la U.C.P. para la decodificacin de la instruccin. El cdigo de operacin contiene, adems, informacin que indica a la U.C.P. cmo se va a localizar el operando de esa instruccin (lo que veremos como direccionamiento). Normalmente, los cdigos de operacin de una U.C.P. no tienen la misma interpretacin en otra U.C.P. (salvo algunos casos concretos de U.C.P.s pertenecientes a la misma familia compatibles). Esto hace que un programa escrito para una determinada U.C.P. no sea utilizable en otra, salvo los casos anotados. En las U.C.P.s de 8 bits de datos, el cdigo de operacin suele estar formado por un nico byte, lo que significa disponer de hasta 256 posibles cdigos diferentes. Algunas U.C.P.s expanden estas posibilidades utilizando un byte como precdigo y otro como cdigo de operacin realmente. Esto hace que, en principio, cada precdigo expande cada una de las combinaciones en 256 posibilidades ms.

OPERANDO. El campo del operando de una instruccin es la parte de la instruccin que da informacin sobre el operando. Esta informacin puede ser tan clara como que se trate del propio operando , dependiendo del tipo de instruccin, una informacin para poder localizarlo, es decir, una direccin directamente o algn dato para poder formar la direccin del operando. La existencia del campo de operando est condicionada al tipo de direccionamiento indicado en el cdigo de operacin de la instruccin que corresponda. As pues, si la instruccin es para sumar dos datos que estn contenidos en sendos registros internos (uno de ellos en el acumulador) para dejar el resultado en el acumulador, slo es necesaria la existencia del campo del cdigo de operacin ya que ste informa que se trata de una operacin interna a la U.C.P. donde tanto el origen de los datos como el destino del resultado son registros internos. En las U.C.P.s de 8 bits, el campo de operando, cuando existe, suele tener un tamao de uno dos bytes.

5.2.- Modos de direccionamiento.


Como decamos en apartados anteriores, la instruccin consta de un campo denominado de cdigo de operacin y otro de operando. El cdigo, adems de identificar la instruccin,
C.E.S. San Jos Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

24

indica el modo de localizar al operando (modo de direccionamiento). Por eso, el campo del operando contiene bien el operando directamente o bien la informacin suficiente para encontrarlo. Los modos de direccionamiento son los distintos mtodos que utiliza la U.C.P. para localizar el/los operandos.

5.2.1.- Tipos de direccionamiento Las posibles combinaciones contando con los diferentes modos de direccionamiento son muy altas. Nosotros describiremos los ms bsicos ya que las dems son combinaciones de stas. Tenemos que anotar que nos referiremos a los modos de direccionamiento de nuestra U.C.P., modelo que dispone de 8 bits de datos y 16 de direcciones. Esto no quita generalidad a las descripciones y nos permite concretar los dibujos y los ejemplos. Los distintos tipos de direccionamientos son los que siguen: - Implicado - Inmediato - Directo - Extendido - Indirecto . Indirecto registrado - Basado - Indexado - Indexado a base - A bit - Otros

A continuacin discutimos cada uno de ellos. Direccionamiento Implicado. Cuando la operacin se realiza sobre registros internos de la U.C.P. obligatoriamente, la instruccin se compone nicamente de la parte de cdigo ya que ste en s mismo implica el registro sobre el que ejecutar. Por ejemplo es el caso de la instruccin de incrementar el contenido del acumulador: INC A. Las instrucciones con este modo de direccionamiento no tienen campo de operando.

Direccionamiento Inmediato. El direccionamiento es inmediato cuando el contenido del campo del operando es el propio operando.

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

25

En nuestra U.C.P. la instruccin consta de dos bytes, uno para el cdigo de operacin y otro para el operando, como se muestra en la figura 5.1. La instruccin que mueve el dato 0ADH al acumulador con direccionamiento directo MOV A,#0ADH es un ejemplo de este caso.

CO D IG O D E O P E RA CI N

OPERANDO

F ig u r a 5 .1 E s tr u c tu r a d e u n a in s tr u c c i n .
Direccionamiento Directo. Cuando se utiliza este modo de direccionamiento, el campo de operando de la instruccin no contiene al operando sino la direccin donde se encuentra realmente ste. En nuestra U.C.P., la direccin del operando puede estar formada por uno o dos bytes, lo que hace que la instruccin completa sea de dos o tres bytes. Si la direccin es de un byte, el operando se encuentra obligatoriamente en las 256 posiciones de memoria ms bajas, a estas direcciones algunos autores les denominan pgina cero y lo describen como direccionamiento a pgina 0. La figura 5.2 muestra el direccionamiento directo. Si la direccin se compone de dos bytes, el operando se puede encontrar en una de las 64K posiciones de memoria posibles. En este caso el direccionamiento pasa a llamarse EXTENDIDO.
CO D IG O D E O P E RA C I N M E M O R IA

D IR . O P E R A N D O ( H ) OPERANDO D IR . O P E R A N D O (L)

F i g u ra 5 .2 D ir e c c io n a m i e n t o d i r e c t o .

Direccionamiento Indirecto. Cuando se utiliza este modo de direccionamiento, el contenido del campo de operando de la instruccin es una direccin de la memoria en donde se encuentra la direccin del operando. Es decir, la U.C.P. obtiene del campo de operando una direccin a la que accede en lectura, obteniendo de ella la direccin real del operando. En la figura 5.3 se muestra este modo de direccionamiento. Este modo de direccionamiento es bastante sofisticado y no es frecuente verlo implementado en U.C.P.s comerciales. La ejecucin de una instruccin con este tipo de direccionamiento en una U.C.P. como el modelo nuestro implica seis accesos a memoria para conseguir el operando.

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador


C O D IG O D E O P E R A C I N

26
M E M O R IA

D IR E C C I N IN D IR E C T A (H ) D IR E C C I N O P E R A N D O (H ) D IR E C C I N D IR E C T A (L ) DIRECCIN OPERANDO (L)

OPERANDO

F i g u r a 5 .3 D ir e c c i o n a m i e n t o i n d i r e c t o .

Algunas U.C.P.s, como el 8085 6 Z-80, implementan una versin de este direccionamiento que se denomina direccionamiento INDIRECTO REGISTRADO. Para ello utilizan un par de registros internos como punteros de memoria cuyo contenido indican la direccin del operando. Esto significa que para ejecutar esta instruccin se ha de realizar con anterioridad la carga de estos registros. La figura 5.4 muestra este caso.
R E G IS T R O S IN T ER N O S

C O D IG O D E O P E R A C I N

D IR E C C I N O P E R A N D O (H ) DIRECCIN OPERANDO (L)

M E M O R IA

OPERANDO

F ig u ra 5 .4 D ir e c c io n a m ie n to in d ir e c to re g is tr a d o .
Direccionamiento Basado. Este modo de direccionamiento del operando implica a un registro interno de la U.C.P. denominado registro Base. El cdigo de operacin hace referencia a este registro base que contiene una direccin (direccin base). La instruccin, adems del cdigo, contiene un valor para el desplazamiento de la direccin base. La direccin efectiva del operando se calcula sumando el desplazamiento al contenido del registro base. La figura 5.5 muestra este modo de direccionamiento. Hay que observar que este modo de direccionamiento es un direccionamiento indirecto registrado modificado.

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador


RE G IS T R O S IN T ER N O S

27

C O D IG O D E O P E R A C I N

R EGISTRO BASE

D ESPLAZAM IENTO

+
M E M O R IA

OPERANDO

F i g u r a 5 .5 D ir e c c i o n a m i e n t o B a s a d o .

El valor del desplazamiento puede darse con un nmero con o sin signo, segn sea la U.C.P., esto cambia el campo de aplicacin en cada caso.

Direccionamiento Indexado. Se trata de una estructura similar a la anterior, salvo que ahora, el desplazamiento no lo entrega la instruccin sino que se encuentra contenido en un registro interno a la U.C.P. denominado registro ndice. La instruccin contiene en el campo de operando una direccin completa. La direccin efectiva del operando se calcula sumando el contenido del registro ndice a la direccin dada. La figura 5.6 muestra este caso.

C O D IG O D E O P E R A C I N

R E G I S T R O IN D IC E

D IR E C C I N

+
M E M O R IA

OPERANDO

F ig u r a 5 .6 D ir e c c io n a m ie n to I n d e x a d o .

Direccionamiento Indexado a Base. Este es un modo de direccionamiento que combina los dos anteriores, el direccionamiento basado y el indexado. El cdigo de operacin implica a dos registros internos a la U.C.P., uno hace de registro base y el otro de registro ndice. Adems la instruccin aporta un desplazamiento. La direccin
C.E.S. San Jos Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

28

RE G IS T R O S IN T ER N O S

R E G IS T R O B A SE C O D IG O D E O P E R A C I N REGISTRO INDICE

D IR E C C I N

+
M E M O R IA

O PER AND O

F ig u ra 5 .7 D ir e c c io n a m ie n to in d e x a d o a B a s e .
efectiva del operando se calcula sumando el contenido de los registros implicados y el desplazamiento aportado por la instruccin. En la figura 5.7 se muestra este mecanismo.

Direccionamiento relativo. Este es un tipo de direccionamiento basado, en donde el valor de base es el contenido del contador de programa. La instruccin aporta un valor de desplazamiento para la base. El clculo de la direccin efectiva se realiza sumando el valor de la base con el valor del desplazamiento. En la figura 5.8 se muestra este modo de direccionamiento.
R E G IS T R O S IN T E R N O S

CONTADOR DE PROGRAMA C O D IG O D E O P E R A C I N

D ESP LA Z AM IE N TO

+
M E M O R IA

OPERANDO

F ig u r a 5 .8

D ire c c io n a m ie n to

R e la tiv o .

Si el desplazamiento se entrega en complemento a dos, este direccionamiento permitir desplazarse hacia adelante o hacia atrs, respecto al PC.
C.E.S. San Jos Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

29

Este direccionamiento es muy til en determinados tipos de saltos. (Saltos relativos).

Direccionamiento a un Bit. Hasta ahora, los distintos modos de direccionamiento estn enfocados a localizar un operando y ste es de 8 bits (un byte). Si dentro de este byte nos interesa manejar el estado de un bit determinado (de 0 a 7), necesitamos realizar otras operaciones adicionales. Pero si la U.C.P. dispone del direccionamiento a bit, se puede manejar directamente con una nica instruccin. Este modo de direccionamiento utiliza un doble direccionamiento, por un lado ha de localizar el byte al que pertenece el bit deseado y por otro lado, el bit en s mismo. La localizacin del byte se hace por uno de los modos de direccionamiento ya descritos, mientras que la localizacin del bit se hace por medio de tres bits del cdigo de operacin de la instruccin con este modo de direccionamiento. En la figura 5.9 se ha representado este modo de direccionamiento en donde se utiliza el modo de direccionamiento directo para localizar el byte en cuestin.
C O D IG O D E O P E R A C I N

B IT D IR E C C IO N O P E R A N D O (H )

M E M O R IA

OPERANDO D IR E C C IO N O P E R A N D O (L )

F ig u ra 5 .9

D ir e c c io n a m ie n to a B IT .

5.3.- Clasificacin de las instrucciones.


Cada U.C.P. dispone de un juego de instrucciones propio que la caracteriza. Sin embargo, las instrucciones de cualquier U.C.P. pueden clasificarse en los grupos que siguen: - Instrucciones de cargas. - Instrucciones lgicas. - Instrucciones aritmticas. - Instrucciones de saltos. - Instrucciones de control. - Instrucciones de E/S. - Otras instrucciones. De cada uno de los grupos hacemos una discusin en los apartados que siguen.

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

30

Instrucciones de carga. El grupo de instrucciones de carga permite el movimiento de datos entre registros internos o posiciones de la memoria. Tanto el origen como el destino del dato puede ser un registro interno o una posicin de memoria externa. Dependiendo del tipo de U.C.P., las instrucciones de este grupo reciben distintos nombres. As se denominan instrucciones de carga (LOAD), de movimientos de datos (MOVE), o de almacenamiento (STORE). En nuestro modelo de U.C.P. la instruccin que permite cargar el registro B con el dato 47H tiene la forma: MOV B,#47H Para cargar el registro B con el contenido del registro A es: MOV B,A Conviene observar que la sintaxis de escritura describe la funcin (MOV), el destino de sta (B) y, el origen de ella (A). Esto es norma general para todas las instrucciones de U.C.P.s. Instrucciones lgicas. Las instrucciones pertenecientes a este grupo realizan funciones lgicas entre los operandos. Las funciones lgicas que realizan son: AND, OR, XOR, Inversin, Desplazamiento y Rotacin. Estas instrucciones tienen siempre como uno de los operandos al acumulador de la U.C.P. El otro operando puede ser el contenido de un registro interno o de una posicin de la memoria. El resultado siempre se vuelca sobre el acumulador. Todas las instrucciones lgicas se realizan por medio de la ULA y, por lo tanto, el registro de estado se ve afectado por el resultado de la operacin (salvo casos excepcionales). La instruccin que realiza la funcin AND del registro A (acumulador) con el dato FFH tiene la forma siguiente: AND A,#0FFH La instruccin que invierte el contenido del acumulador es: INV A Instrucciones aritmticas. Las operaciones aritmticas se realizan por medio de este grupo de instrucciones. Siempre trabajan con dos operandos, uno de los cuales es el contenido del acumulador. El otro operando puede ser el contenido de un registro interno de una posicin de memoria. Las instrucciones aritmticas realizan las funciones de suma, resta, comparacin, etc. Estas instrucciones se realizan, tambin, por medio de la ULA y el registro de estado de la U.C.P. se ve afectado por el resultado de la operacin ejecutada. Para sumar el contenido del registro B con el del registro C dejando el resultado en el registro C tenemos la secuencia siguiente:

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

31

MOV A,B ADD A,C MOV C,A

; A <-- B ; A <-- A+C ; C <-- A

Evidentemente, el acumulador ha quedado despus de la secuencia de instrucciones indicada con el mismo contenido que el registro C.

Instrucciones de saltos. Este conjunto de instrucciones permiten que un programa tenga continuidad lgica aunque no exista la continuidad fsica. Resulta casi imposible poder disponer de un programa con una continuidad fsica completa a lo largo de todo l, ya que lo normal es que en algn momento, por necesidades de la funcin a realizar, sea necesario tomar una decisin dependiente de algn parmetro. La toma de decisin implica, por s, que existen dos posibilidades y hay que elegir una de ellas. Como mucho, una podra mantener la continuidad fsica, pero para la otra es imposible. Esto hace que este conjunto de instrucciones sea de las ms utilizadas y que los diseadores de U.C.P.s se esfuercen en potenciarlas. Hay varios tipos de salto: - Largos - Cortos - Absolutos - Relativos - Incondicionales - Condicionales - A subrutinas - Retornos

A continuacin hablamos de cada uno de ellos. Saltos cortos. Se denominan as los saltos cuya longitud est limitada a un determinado rango de direcciones. En los Ps de 8 bits, este tipo de salto utilizan un slo byte para dar o calcular la direccin del salto con lo que la longitud mxima del salto es de 256.

Saltos largos. Al contrario de los saltos cortos, stos permiten alcanzar la totalidad de las direcciones posibles de la memoria. Por lo tanto, la instruccin completa constar del cdigo de operacin y de un operando que ser la direccin completa del salto o una referencia a ella, segn sea el modo de direccionamiento seleccionado. En el caso de direccionamiento directo para nuestro modelo de U.C.P., la instruccin se compone de tres bytes, uno de cdigo de operacin y dos de operando (direccin de destino del salto) La instruccin que realiza un salto directo a la direccin 34ADH es:

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

32

JP 34ADH

Saltos absolutos. En los saltos absolutos, la direccin a la que hay que saltar no tiene una relacin directa con la posicin donde se encuentra la instruccin del salto. La direccin del salto se especifica por diferentes mtodos, segn sea el direccionamiento de la instruccin del salto.

Saltos relativos. En los saltos relativos la direccin a la que hay que saltar se calcula a partir de la posicin donde se encuentra la instruccin del salto, es decir, del contenido del contador de programa. El salto puede ser hacia adelante hacia atrs, siempre respecto a la referencia. La direccin a la que hay que saltar se calcula sumando o restando un valor denominado desplazamiento (offset) al contenido del PC. Para realizar esta operacin, el desplazamiento se da en complemento a dos; de esta forma se simplifica el clculo de la direccin a saltar. Hemos de tener en cuenta que en el momento en que la U.C.P. va a realizar el clculo de la direccin a la que ha de saltar, el contador de programa se encuentra incrementado en varias unidades desde que se comenz el fetch de la instruccin de salto relativo. Concretamente, en nuestro modelo, las diferentes instrucciones de salto con direccionemiento relativo constan de dos bytes, el cdigo y el desplazamiento. Por lo tanto, el contador de programa se encontrar incrementado en dos respecto al comienzo de la instruccin. El salto mximo posible en este tipo de salto depende del tamao del desplazamiento. En las U.C.P.s de 8 bits, este desplazamiento es de 8 bits. En este caso, la instruccin de salto relativo ocupa dos bytes, uno para el cdigo y otro para el desplazamiento. Si la direccin de la instruccin del salto relativo es n, la instruccin siguiente se encuentra en la direccin n+2. Por otro lado, la representacin en complemento a dos con 8 bits nos permite un desplazamiento mximo de +127 a -127. Todo esto hace que el desplazamiento real sea diferente si es en avance en retroceso. Cuando es en avance, el desplazamiento mximo es de 127 + 2 = 129 posiciones de memoria, ya que el clculo se realiza desde la direccin de la instruccin siguiente. En cambio si es en retroceso, el desplazamiento mximo es de 127 - 2 = 125 posiciones. Los saltos relativos son muy interesantes en programas que han de correr en posiciones de memoria no conocidas de antemano, ya que, al no depender el salto de la posicin absoluta, el programa se puede situar en cualquier posicin de la memoria.

Saltos incondicionales. Son los saltos que se realizan sin necesidad de consultar ningn parmetro condicionante. Es el ms simple de los saltos y puede ser corto, largo, absoluto o relativo.

Saltos condicionales. La ejecucin de las instrucciones de salto condicionales depende de que se cumpla la condicin del salto. Los condicionantes de estos saltos son los bits del registro de estado de la U.C.P., que segn estn activados o no se producir el salto o no, segn indique la instruccin.

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

33

Los saltos condicionales pueden ser largos, cortos, absolutos o relativos.

Saltos a subrutinas. A lo largo de un programa nos encontramos habitualmente funciones que se repiten de forma necesaria. Por ejemplo la funcin de conversin de cdigo hexa a ascii es una de las ms usuales para poder presentar los datos por una pantalla. Cuando esto sucede, la funcin se desarrolla en un trozo de programa que se llama subrutina que tiene la particularidad de ser un recurso comn al resto del programa. Es decir puede ser utilizada esta funcin desde cualquier punto del programa. Las subrutinas tienen una estructura determinada que no entraremos a discutir en este apartado ya que corresponde al software, pero s es necesario indicar que dispone de una entrada y de una salida. Por la entrada se llega a la subrutina con los datos que han de ser tratados por ella y una vez tratados, por la salida obtenemos el resultado. La forma de llegar a la entrada de una subrutina es por medio de una instruccin de llamada a subrutina (CALL) que es un tipo particular de salto. Cuando ejecutamos una instruccin CALL, la U.C.P. desarrolla una secuencia especial (como consecuencia de la decodificacin del cdigo de operacin) que consta de dos pasos principales; guarda el contenido del contador de programa en la pila y salta a la direccin indicada. Con ello se consigue salvar la direccin de la siguiente instruccin a ejecutar despus de la llamada para continuar con el programa. La posicin de la pila en que se introduce la direccin de retorno est controlada por el puntero de la pila (SP) que lo maneja de forma automtica la U.C.P. A continuacin, la subrutina toma el control y ejecuta su actividad. La subrutina dispone de una instruccin especial al final de ella que permite a la U.C.P. continuar en el punto en que llam a la subrutina. Se trata de una instruccin de retorno (RETURN) cuya funcin es inversa a la de llamada, ya que obtiene de la pila la direccin que introdujo la llamada y ejecuta un salto a esta direccin. Retornos. Las instruccciones de retorno de subrutina son las complementarias a las de salto a subrutina. Ellas se encargan de recuperar la direccin que se guard al hacer el salto a la subrutina en el stack y continuar el programa por donde iba. Otra instruccin de retorno es la de retorno de interrupcin. El funcionamiento bsico es el mismo salvo que se utiliza cuando el salto se produce por causa de una interrupcin. Ms adelante discutiremos este punto. Instrucciones de control. Estas son instrucciones que se utilizan para manejar las posibilidades de programacin de la U.C.P. Entre ellas tenemos las que manejan los bits del registro de estado, seleccionan o no la entrada de interrupcin, etc.

Instrucciones de Entrada/Salida. Son las encargadas de manejar el mapa de direcciones de E/S y efecta las operaciones de entrada y salida de datos a y desde los perifricos.

Otras instrucciones. En este grupo se incluyen instrucciones como la NOP (No Operation) y otras que no se encuadran en los grupos anteriores.

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

34

CAPITULO 6. Interfaz con el Bus del sistema.


Hasta ahora hemos visto como la U.C.P. se relaciona con el entorno en que se encuentra desde el punto de vista terico del modelo utilizado. La U.C.P. presenta un conjunto de seales a las que hemos denominado buses y que ahora renombramos como BUS LOCAL DE LA U.C.P. para diferenciarlo del Bus del sistema. Sin embargo este Bus local tiene una relacin muy estrecha con el Bus del sistema, ya sea directa o indirectamente. En muchas ocasiones nos encontraremos que el Bus del sistema y el Bus local coinciden. No es este el caso de nuestro modelo terico puesto que la definicin de seales en nuestro Bus no se corresponda completamente con la definicin del Bus de nuestro sistema. Esto es as para desarrollar el caso ms general que cubre la mayora de las aplicaciones. La circuitera que adapta el Bus local de la U.C.P. al Bus del sistema es lo que denominamos interfaz de la U.C.P. con el Bus del sistema. En general, el interfaz de la U.C.P. con el Bus del sistema se compone de tres partes

BUS LOCAL

IN T E R F A Z DE D IR E C C I O N E S

BU S DE

DE D I R E C C IO N E S

D IR E C C IO N E S

B U S D E L S I S T E M A

U C P

BU S L OC AL IN T E R F A Z DE DATOS DE DA TO S

BU S DE

DATOS

BU S L OC AL IN T E R F A Z DE CO NT RO L DE CONTROL

BU S DE

CO NTROL

Figura 6.1 Interfaz d e la U CP con el bus d el sistem a.


(ver figura 6.1):
C.E.S. San Jos Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

35

- Interfaz de direcciones. - Interfaz de datos. - Interfaz de control.

6.1.- Interfaz de direcciones.


El Interfaz del Bus de direcciones tiene como misin adaptar las caractersticas del Bus local de direcciones al del sistema. Este interfaz est compuesto por dispositivos transmisores unidireccionales que pueden ser latcheados o no y con salida triestado. El Bus de direcciones del sistema es un Bus no multiplexado y, por tanto, la conexin de estos transmisores es directa, se conectan de forma que la entrada es el Bus de direcciones del Bus local mientras que la salida se conecta al Bus de direcciones del sistema (figura 6.2). El interfaz del Bus de direcciones tiene como finalidad el aislamiento entre el Bus local y el del sistema, evitando de esta forma posible averas de la U.C.P. por choques de seales, cortocircuitos, etc. A su vez, estos transmisores aumentan el fan-out de las seales de acuerdo a las especificaciones del Bus.

6.2.- Interfaz de datos.


El Bus de datos local de la U.C.P. as como el del sistema, es bidireccional. Esta caracterstica hace que el interfaz de datos se implemente con dispositivos transceptores (registrados o no). Estos transceptores registrados, ms una seal de reloj en caso de ser registrados. Las dos seales comunes a ambos controlan el sentido de la informacin (hacia el Bus local de la U.C.P. hacia el Bus del sistema) una de ella (DIR) mientras que la otra controla el triestado de salida del transceptor. La figura 6.3 muestra una conexin tpica de estos transceptores.

6.3.- Interfaz de control.


Con frecuencia, el Bus de control del Bus del sistema en el que se encuentra ubicada una U.C.P. no coincide con el Bus de control del Bus local de la U.C.P., no tanto por las diferencias de caractersticas elctricas (fan-out, niveles, etc) como por la propia definicin de seales en ambos buses de control. Concretamente, el Bus de nuestro sistema modelo requiere de seales que no existen en el Bus de control de la U.C.P. Este interfaz del Bus de control tiene como misin generar la seales no presentes y adaptar las concordantes. Este interfaz lo podemos dividir en dos partes principales: - Adaptacin. - Generacin. - Manejo.
C.E.S. San Jos Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

36

La adaptacin de seales es un proceso similar al que realiza el interfaz del Bus de direcciones, utilizando transmisores si las seales son unidireccionales o transceptores si se trata de seales bidireccionales. La figura 6.4 muestra esta conexin en donde podemos ver que la seales HOLD, HLDA se corresponden con esta parte del interfaz. En la figura 6.4 podemos ver que la seales /RD, /WRI /MEM, /ES, /HALT se obtienen del bloque generador cuyas entradas son las seales S2, Sl y S0, procedentes del Bus local. El bloque generador puede ser un sistema combinacional secuencial, segn se necesite. La parte de manejo de seales, implica directamente a las interrupciones enmascarables procedentes del Bus del sistema hacia la U.C.P. La U.C.P. dispone en general de una entrada de interrupcin enmascarable mientras que en el Bus del sistema pueden existir varias (4 en nuestro modelo de Bus de sistema) como podemos ver en la figura 6.4. Todas ellas han de ser atendidas por la U.C.P. En el captulo siguiente desarrollaremos las interrupciones en detalle.

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

37

CAPITULO 7. Interrupciones.
El funcionamiento de un sistema basado en microprocesador raramente no se ve influenciado por los elementos externos. La forma de coordinar la dedicacin del sistema a los elementos externos es por medio de las interrupciones del sistema. Estas interrupciones del sistema son atendidas por la U.C.P. que abandona la ejecucin del programa en curso para ello. El tema de las interrupciones es tan importante dentro de los SBM que dedicamos un captulo independiente para ello. Para explicar los distintos mecanismos existentes de manejo y control de las interrupciones, es necesario conocer los cuatro conceptos siguientes: Mscara. Registro interno de la U.C.P. que permite o no que una interrupcin enmascarable sea aceptada (reconocida). Cuando la mscara est activada la U.C.P. no recibe la interrupcin (no la reconoce). Si est desactivada s la reconoce. Vector de interrupcin. Informacin volcada al Bus de datos durante un ciclo de reconocimiento de interrupcin que sirve para que la U.C.P. pueda localizar la fuente de la interrupcin y proceder a atenderla correctamente. Prioridad. Preferencia en el tiempo en la atencin a la interrupcin de un determinado dispositivo cuando coinciden varias peticiones de interrupcin. Anidamiento. Es la posibilidad de que la ejecucin del programa que atiende una interrupcin (rutina de interrupcin) se vea interrumpida por la llegada de otra interrupcin ms prioritaria. La viabilidad del anidamiento supone que las rutinas de interrupcin que lo permiten desactivan la mscara de la interrupcin de la U.C.P., ya que por defecto la mscara se activa automticamente al aceptar una interrupcin.

7.1.1.- Interrupciones.
En los sistemas basados en P se distinguen dos tipos de interrupciones; la interrupcin que obliga al sistema a tenerla en cuenta y, por tanto, atenderla con la mxima urgencia y la que tiene ciertas tolerancias que permiten a la U.C.P. no abandonar inmediatamente su trabajo para atenderla. La primera se llama interrupcin no enmascarable y la segunda interrupcin enmacarable. Estos nombres hacen referencia al bit de mscara de interrupcin que dispone la U.C.P. en su interior. La mscara de interrupcin slo es vlida para la interrupcin enmascarable. 7.1.2.- Prioridad de las interrupciones. Ya que la U.C.P. admite dos tipos de interrupciones, hay que conocer las caractersticas respecto a ellas y a su arbitracin por parte de la U.C.P. Esto ltimo es lo que vamos a discutir a continuacin. Las entradas de interrupcin a la U.C.P. son seales asncronas respecto al reloj de sta. Las interrupciones desvan la atencin de la U.C.P. hacia rutinas concretas de atencin a las mismas, parando el proceso en curso.
C.E.S. San Jos Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

38

La seal HOLD es tambin una seal asncrona a la U.C.P. pero no se trata como una interrupcin. HOLD no requiere de ninguna rutina de atencin. HOLD directamente congela el funcionamiento de la U.C.P. una vez terminado el ciclo mquina en curso. Por tanto, mientras la U.C.P. est en hold, no ser atendida ninguna interrupcin. La figura 7.1 muestra la secuencia que sigue la U.C.P. en cada ciclo mquina para comprobar el estado de las seales de entrada de HOLD, INT y NMI. En ella podemos observar que una vez llegado el final del ciclo mquina (/READY activo) la U.C.P. investiga el estado de la seal HOLD si la encuentra activa entra directamente al modo ADM (Acceso Directo a Memoria Direct Memory Access ) independientemente de si existe o no, peticin de interrupcin NMI o INT. Si el READY corresponde con un final de ciclo instruccin, la U.C.P. verifica el estado de las peticiones de interrupcin NMI e INT y si hay alguna activa la memoriza en un biestable de interrupcin pendiente. Cuando la U.C.P. no est en ADM se comprueba la existencia de alguna interrupcin pendiente de atender y si existe, la U.C.P. la atiende.

no

/READ Y
si

si

HO LD
no

FF H OL D= 1

FI N D E IN S TR U C C IO N

no

si

si
o

NM I IM T

no si
NM I FF N M I= 1

no

I= 0

no H O LD=1

si
FF I N T= 1 Mo do AD M FF H OL D= 1

si

no
FF H OL D= 0

si
FF N M I= 1

In te rrup ci n no En ma s ca r ab le

no

no

FF I N T=1

si

In te rrup ci n En ma s ca r ab le

Conviene insistir en que en orden de prioridades dentro de la U.C.P., la seal HOLD es la ms prioritaria, a continuacin le sigue la NMI y, por ltimo la INT.

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

39

7.1.3.- Interrupcin no enmascarable-(NMI). La llegada de una NMI a la U.C.P. implica de modo automtico que la U.C.P. ha de: a) Terminar la instruccin en curso. b) Atender la interrupcin.

La NMI no tiene ms espera que la finalizacin de la instruccin en curso en el momento de la llegada de NMI. La figura 7.2 muestra la secuencia funcional que desarrolla la U.C.P. a la aceptacin de una interrupcin no enmascarable (NMI). La atencin a la interrupcin supone la existencia de una rutina que se encarga de atender esta interrupc6n. Esta rutina est localizada en una determinada posicin de memoria fijada por el fabricante y a la que accede la U.C.P. por medio de un salto a ella. Para poder mantener la coherencia lgica del programa y poder continuar el trabajo en el punto en que fue interrumpido, la U.C.P. desarrolla, a la llegada de la NMI, una secuencia similar a la desarrollada en la ejecucin de la instruccin CALL. Cuando la U.C.P. recibe una NMI, termina con la instruccin en curso, guarda la direccin contenida en el PC en la pila (SP) como direccin de retorno, activa la mscara de interrupcin y salta finalmente a la
P ro g r a m a in terr u m p id o por N M I

PC GUARDA A C T IV A

STACK M ASCARA M ASCARA

SA L TO

R U T IN A

NM I

R utin a N M I

RETN RECUPERA M ASCARA ST A C K PC

C o n tin u a e l p r o g ra m a in t e r r u m p i d o

F ig . 7 .2

S e c u e n c ia a c e p ta c i n in t N M I

direccin de la rutina NMI. La U.C.P. impide automticamente que pueda atenderse otra interrupcin enmascarable durante la atencin a la NMI ya que activa la mscara de interrupcin. Esta accin es la normal
C.E.S. San Jos Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

40

en las funciones del HW a la llegada de una Interrupcin. S se desea permitir la entrada de interrupciones, ha de ser el programa quien lo autorice desactivando la mscara. La rutina de atencin a la NMI, una vez que termina de realizar su funcin puede retomar el programa que dej al llegar la NMI en el punto en donde fue interrumpido ejecutando una instruccin de retorno de interrupcin. El retorno de interrupcin de NMI recupera la direccin de retorno desde la pila (SP), reponiendo la mscara de la interrupcin a su valor original anterior al salto a la rutina de NMI. La interrupcin NMI por su carcter prioritario, se utiliza para casos de alarmas graves y emergencias, como puede ser la aparicin de errores en la memoria o fallo en la alimentacin del sistema. La seal NMI es una entrada asncrona respecto al reloj de la U.C.P. pero ha de cumplir con los tiempos de setup y hold respecto al flanco de subida de Cl para que la U.C.P. sea capaz de reconocerla. Por lo que se deduce que el retardo mximo que sufre una NMI desde su llegada a su atencin es el tiempo del ciclo de instruccin ms largo (incluyendo los estados de espera correspondientes si los hay). La NMI no ser atendida si la U.C.P. est en hold ya que mientras la seal HOLD se encuentre activa, la U.C.P. no es operativa. La interrupcin ms frecuentemente utilizada en los sistemas basados en P es la interrupcin enmascarable, ya que el programa que corre sobre el sistema puede controlar por medio del bit de mscara la entrada de esta interrupcin. En lo que sigue utilizaremos la palabra interrupcin (simplemente interrupcin) para referirnos sin ms a la interrupcin enmacarable, mientras que cuando hayamos de hacer referencia a la NMI especificaremos que se trata de una interrupcin no enmascarable. La aceptacin de una interrupcin enmascarable por la U.C.P. significa obligatoriamente (como para la NMI) la existencia de un programa de atencin a esta interrupcin (rutina de interrupcin). Dependiendo del mtodo utilizado para localizar esta rutina de interrupcin, las interrupciones pueden ser de tres tipos modos diferentes: - Vectorizadas. - Autovectorizada. - No vectorizada.

Interrupciones Vectorizadas. En este caso, el dispositivo que interrumpe suministra la direccin de una tabla de entrada a las rutinas de interrupcin. La U.C.P. obtiene de la direccin dada la direccin real de la rutina de interrupcin. El vector puede suministrar la direccin completa solamente parte de ella, en este ltimo caso, un registro interno de la U.C.P. suministra el resto de la direccin. La figura 7.3 muestra la secuencia en este tipo de interrupcin.

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

41

In terru p ci n A u t o v e c to r i z a d a

D e s h a b i l i ta I N T I = 1

PC

STACK

Salto a D ire ccin Preestab lecid a

R utin a I N T

EI H ab ilita IN T

RET R ecu pera P C d el ST A C K .

C o n t in u a c i n d e l p r o g r a m a in t e r r u m p i d o

F i g . 7 .3

S e c u e n c i a i n t. V e c t o r i z a d a

Interrupciones Autovectorizadas. En este caso, la U.C.P. no necesita de vector externo para localizar la rutina de interrupcin. La rutina de interrupcin se encuentra en una direccin fija conocida por la U.C.P., por lo que directamente, al aceptar la interrupcin, la U.C.P. salta a esa direccin comenzando en ese punto la ejecucin de la rutina. La figura 7.4 muestra la secuencia desarrollada en este modo de interrupcin.

Interrupciones No vectorizadas. La caracterstica de este modo de interrupcin es que la U.C.P. recoge del Bus de datos, durante el ciclo de reconocimiento de interrupcin, una informacin (no vector) que introduce en el registro de instruccin y lo decodifica como si se tratara de un cdigo de operacin ejecutndolo a continuacin. Este cdigo lo vuelca al Bus de datos el dispositivo que genera la interrupcin durante el ciclo de reconocimiento de sta. Este cdigo corresponde a una instruccin de salto a la rutina de interrupcin. Esta instruccin
C.E.S. San Jos Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

42

puede ser de uno o varios bytes. Si es de un byte, al finalizar el ciclo INTA la U.C.P. salta inmediatamente a la rutina. Si se trata de una instruccin de ms de un byte, la U.C.P. leer los restantes bytes hasta completar la direccin de salto, y a continuacin salta.

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

43

CAPITULO 8.- Detalle del funcionamiento interno.


Una vez conocido el funcionamiento general de la U.C.P. podemos pasar a analizar en detalle el funcionamiento de cada una de sus partes.

8.1.- General.
Las seales de control internas a la U.C.P. utilizan una nomenclatura particular que est relacionada con la funcionalidad de cada una de ellas. Desde un punto de vista general, esta nomenclatura consta de dos campos separados por un guin bajo. El primer campo indica el tipo de seal y el nivel lgico activo (o flanco activo). El smbolo "/" indica que la seal es activa a nivel bajo (o el flanco activo es el flanco de bajada). Si no se pone este smbolo, la seal es activa a nivel alto (o el flanco activo es el flanco de subida). El segundo campo da informacin del usuario de la seal indicando el nombre del destinatario de la misma. Cada nombre de seal consta de 8 smbolos incluyendo el smbolo "/" (si existe) y el guin bajo _. Por ejemplo la seal: /OE_PC indica que su nombre es OE, que es activa a nivel bajo y que el destinatario es el PC. En reposo se encuentra en nivel H.

8.2.- Descripcin de las seales internas.


En lo que sigue hacemos una descripcin detallada de cada una de las seales necesarias para el control, por parte de la UC de la U.C.P. de los distintos elementos.

Seales de control de salida. Cada elemento que es capaz de suministrar al Bus interno de datos o al Bus local de direcciones o de datos de la U.C.P. dispone de un control para permitir su conexin al Bus correspondiente. Esta seal se denomina genricamente /OE.XXXX en donde XXXX representa el nombre del destinatario. Son activas a nivel bajo de tal forma que en reposo se encuentran a nivel H manteniendo al elemento destino desconectado del correspondiente Bus. Por ejemplo: /OE_MAR /OE_PC /OE_RDS --- > --- > --- > Control de salida del registro MAR. Control de salida del contador de programas. Control de salida del registro RDS de la ULA.

Seales de escritura. Casi todos los registros internos de la U.C.P. pueden ser cargados desde el Bus de datos interno con una informacin. El MAR adems puede ser cargado desde el Bus de datos local de la U.C.P. Para poder realizar esta maniobra es necesario disponer de una seal que realice la escritura en los registros. Genricamente esta seal se

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

44

denomina WR_XXXX. Es activa con su flanco ascendente por lo que en reposo se encuentra en nivel L. Por ejemplo: WR.MDR WR-SP WR-INS --- > --- > --- > Escritura en el registro de datos del Bus . Escritura en el puntero de la pila. Escritura en el registro de instruccin.

Controles de los registros contadores. Algunos de los registros internos de la UC tienen caractersticas especiales. Adems de poder ser escritos y ledos en paralelo pueden ser incrementados o decrementados como contadores. Estos registros son el PC y el SP. El contador de programa PC acta normalmente como contador incrementndose en una unidad con una seal de reloj denominada CK_PC que es activa con el flanco de subida, por lo que normalmente se encuentra en estado L. El registro puntero de la pila SP trabaja normalmente como contador down-up, por lo que necesita de dos seales para su control. La seal /INC_SP indica al SP (cuando se activa a nivel L) que acte como un contador up. Cuando /INC_SP est a nivel H, el SP trabaja como contador down. El reloj para el incremento-decremento del SP se denomina CK_SP y es activo por flanco de subida por lo que en reposo se mantiene a nivel bajo.

Seales de control de los registros de uso general. Los registros de uso general se encuentran agrupados bajo el control de un multiplexor. La UC controla las seales de este MUX para seleccionar y escribir o leer uno de los registros asociados. Para la seleccin de uno de los registros, disponemos de tres seales de control SEL_MUX2, SEL_MUX1 y SEL_MUX0 cuyas combinaciones direccionen uno de los ocho registros siguiente: La seal /OE_MUX es el control de salida del registro seleccionado por el multiplexor. Es activa a nivel L.

SEL_MUX2 SEL_MUX1 SEL_MUXO Registro seleccionado. 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 A B C D E F REG 1 REG2

La seal WR_MUX es el control de escritura del registro seleccionado por el multiplexor. Es activa con flanco ascendente.

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

45

Seales de control de la ULA. La Unidad Lgica y Aritmtica realiza una variedad de funciones que ha de ser seleccionada en cada instante por la UC en funcin de la instruccin a ejecutar. Las seales que seleccionan estas funciones so cuatro que se denominan SEL_ULA3, SEL_ULA2, SEL_ULA1 y SEL_ULA0. Las distintas combinaciones de estas seales definen la funcin de la ULA como se indica en la tabla siguiente:

La Unidad Central de Proceso ULA3 ULA2 ULA1 ULA0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 1 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Funcin SUMA (RDEL + RED2) RESTA (RDEL - RDE2) INCREM, (RDEL + l) DECREM, (RDEL - l) OR (RDEL # RDE2) AND (RDEL & RDE2) XOR (RDEL :+: RDE2) INVERSION (/RDEl) ROT, LOG* IZQ* (1) ROT, LOG, DER (2) ROT* ARIT* IZQ* (3) ROTO ARIT, DERO (4) DESPL, LOG* IZQ, (5) DESPL, LOG, DER, (5) DESPL* ARIT, IZQ* (6) DESPL, ARIT, DER, (6)

(1) La rotacin lgica a izquierda consiste en desplazar cada bit n del registro RDEL a la posicin n+l. El contenido original del bit 7 pasa al bit 0. (2) La rotacin lgica a derecha consiste en desplazar cada bit n de RDEL a la posicin n-l. El contenido original del bit 0 pasa al bit 7. (3) La rotacin aritmtica a la izquierda consiste en desplazar el bit n de RDEL a la posicin n+l. El bit 7 original se coloca en el CARRY y el contenido original del CARRY pasa a la posicin 0. (4) La rotacin aritmtica a la derecha consiste en desplazar el bit n de RDEL a la posicin n-l. El bit 0 original se coloca en el CARRY y el contenido original del CARRY pasa a la posicin 7. (5) El desplazamiento lgico es similar a la rotacin lgica sin la realimentacin entra el bit 0 y 7. (6) El desplazamiento aritmtico es similar a la rotacin aritmtica sin la realimentacin entra en CARRY y el bit 0.

Tabla resumen de los registros internos y sus controles. Registro


C.E.S. San Jos

Tamao

Descripcin

Controles
Departamento de Informtica.: Juan V. Madrid Jurado

Introduccin a los Sistemas basados en Procesador

46

MAR MDR PC SP IX RDEL RDE2 RDS FLAGS REG-INTR A B C D E F REG1 REG2

16 8 16 16 16 8 8 8 8 8 8 8 8 8 8 8 Reg, F

Dir.bus local Dat.bus local Cont.programa Puntero pila Indice Entrada 1 ULA Entrada 2 ULA Salida ULA Reg.indicad. Reg,instrucc. Reg.A (Acum.) Reg. B Reg. C Reg. D Reg, E (1)

/OE_MAR, WR_MAR /OE_MDR, WR_MDR, DIR_MDR /OE_PC, CK_PC, WR_PC I/OE_SP, CK_SPI WR_SP, /INC_SP /OE_IX, WR_IX WR_RDEL WR_RDE2 /OE_RDS (2) WR_INS (1) (1) (1) (1) (1)

8 Reg. de uso interno 8 Reg. de uso interno

(1) (1)

(1) Estos registros se controlan a travs de las seales del MUX. (2) Cada uno de los bits de este registro se maneja independientemente.

C.E.S. San Jos

Departamento de Informtica.: Juan V. Madrid Jurado