Universidad Rey Juan Carlos Fundamentos de Computadores I Luis Rincón Córcoles Programa 1. La familia de microprocesadores M68000 2. Características principales del MC68000 3. Modelo de programación del MC68000 4. Los registros de datos del MC68000 5. Los registros de direcciones del MC68000 6. La memoria en el MC68000 7. Punteros de propósito específico del MC68000 8. La estructura de la pila del MC68000 9. El registro de estado del MC68000 10. Las instrucciones en el MC68000 11. Modos de ejecución del MC68000 12. Las interrupciones en el MC68000 13. El MC68000 y el sistema operativo 14. Excepciones en el MC68000 2 1
Bibliografía A. CLEMENTS. Microprocessor Systems Design. 3 rd edition, ITP - PWS Publishing Company, 1997. J. SEPTIÉN, H. MECHA, R. MORENO, K. OLCOZ. La familia del MC68000. Síntesis, 1995. C. CERRADA, V. FELIU. Estructura y Tecnología de Computadores I. U.N.E.D., 1993. S. KELLY-BOOTLE, B. FOWLER. 68000/68010/68020 Arquitectura y programación en ensamblador. Anaya Multimedia, 1989. M68000 8// Bit Microprocessors User s Manual. 9 th edition. Motorola, 1993. Motorola M68000 Family Programmer s Reference Manual. Motorola, 1992. A. GARCÍA GUERRA, E. FENOLL COMES. Sistemas digitales Ingeniería de los microprocesadores 68000. Centro de Estudios Ramón Areces, 1993. A. CLEMENTS. 68000 Family Assembly Language. ITP - PWS Publishing Company, 1994. 3 1. La familia de microprocesadores M68000 Modelo Ancho de los registros Ancho del bus de datos Ancho del bus de direcciones Ancho de la UAL 68000 24 68008 8 20 68010 24 68012 30 68020 68030 68040 68060 4 2
2. Características principales del MC68000 Máquina CISC (computador con repertorio de instrucciones complejo). Tamaño de los buses: Datos: bits. Direcciones: 23 bits, ya que el bit menos significativo no sale realmente por el bus de direcciones, sino a través de las señales de control LDS y UDS. Tamaños de datos utilizados: Octeto (byte):.b Palabra (word):.w Palabra larga (longword):.l Bits (agrupados de ocho en ocho en un octeto). Dígitos BCD (empaquetados de dos en dos en un octeto). Esquema de bus único para memoria y E/S. Modos de funcionamiento: Usuario. Supervisor. 5 El interfaz del MC68000 6 3
Ejemplo: sistema mínimo con un MC68000 7 3. Modelo de programación del MC68000 D0 A0 PC D1 A1 D2 D3 A2 A3 SR CCR D4 D5 D6 A4 A5 A6 A7 (USP) A7 (SSP) D7 0 2 4 i*2 MAX-2 15 8 7 0 1 3 5 i*2+1 MAX-1 8 4
4. Los registros de datos del MC68000 D0 D1 D2 D3 D4 D5 D6 D7 31 15 8 7 0 Tamaño: bits. Modos de acceso: Octeto (.B): se accede sólo a los 8 bits menos significativos. Palabra (.W): se accede sólo a los bits menos significativos. Palabra larga o doble (.L): se accede al registro completo. Uso: para almacenar datos temporales. 9 5. Los registros de direcciones del MC68000 31 15 0 A0 A1 A2 A3 A4 A5 A6 Tamaño: bits. Modos de acceso: Palabra (.W): se usan los bits menos significativos. Si escribimos en un registro de direcciones en modo palabra, se realiza extensión de signo a los bits. Palabra larga o doble (.L): se usa el registro completo. Uso: punteros de bits a datos o estructuras de datos en memoria. Como la memoria máxima tiene 2 24 octetos, al usar un registro de direcciones como puntero se descarta su octeto más significativo. 10 5
6. La memoria en el MC68000 Direcciones pares 000000000000000000000000 000000000000000000000010 000000000000000000000100 i*2 MAX-2 15 8 7 0 Direcciones impares 000000000000000000000001 000000000000000000000011 000000000000000000000101 i*2+1 MAX-1 Tamaño máximo: Moctetos incluyendo RAM, ROM y puertos de E/S. Unidad direccionable: octeto. Acceso básico: palabra de bits formada por dos octetos consecutivos, el primero con dirección par y el segundo con dirección impar. Líneas de datos válidos (activas por nivel bajo): UDS (Upper Data Strobe): permite acceder a un octeto en dirección par. LDS (Lower Data Strobe): permite acceder a un octeto en dirección impar. Memoria de tipo asíncrono. 11 La memoria en el MC68000 Acceso a un dato de tamaño octeto: El dato puede estar en cualquier posición de memoria. Dirección par: se activa UDS. Dirección impar: se activa LDS. Lecturas: como se accede a palabra, se descarta el octeto sobrante. Escrituras: se modifica el octeto requerido, y el otro se preserva. Accesos a palabra: El objeto accedido (dato o instrucción) estará en una dirección N par (se activan UDS y LDS). Big endian: el octeto más significativo es el de la dirección par (N), y el menos significativo es el de dirección impar (N+1). Acceso a palabra larga: El objeto accedido estará en una dirección N par. Se realizan dos accesos consecutivos de tamaño palabra. Big endian: el octeto más significativo se encuentra en la dirección N par, el siguiente en la dirección N+1 (impar), el siguiente en la dirección N+2 (par) y el menos significativo está en la dirección N+3 (impar). 12 6
Ejemplo: transferencia entre memoria y registro Contenidos iniciales: MEMORIA REGISTRO DE DATOS D i Pares 15 8 7 0 Impares 31 24 23 15 8 7 0 N M(N) M(N+1) N+1 Oct0 Oct1 Oct2 Oct3 N+2 (par) M(N+2) M(N+3) N+3 31 24 23 15 8 7 0 MOVE.B N,D i D i Oct0 Oct1 Oct2 M(N) 31 24 23 15 8 7 0 MOVE.B N+1,D i D i Oct0 Oct1 Oct2 M(N+1) 31 24 23 15 8 7 0 MOVE.W N,D i D i Oct0 Oct1 M(N) M(N+1) 31 24 23 15 8 7 0 MOVE.L N,D i D i M(N) M(N+1) M(N+2) M(N+3) 13 7. Punteros de propósito específico del MC68000 Contador de programa (PC) Tiene bits, de los cuales sólo se usan los 24 menos significativos. Actúa como puntero a la próxima instrucción que se va a ejecutar. Punteros de pila (SP o A7) El MC68000 tiene dos punteros de pila: Puntero de pila de usuario (USP): visible por el usuario como SP o A7 y por el supervisor como SSP. Puntero de pila de supervisor (SSP): accesible sólo por el supervisor como SP o A7. Tienen bits. Funcionan como registros de direcciones. Tienen un uso específico en determinadas instrucciones. 14 7
8. La estructura de la pila del MC68000 Estructura LIFO (último en entrar-primero en salir). Puntero de pila: A7 ó SP. Pila de usuario y de supervisor independientes. USP: puntero de pila de usuario. SSP: puntero de pila de supervisor. La pila crece hacia posiciones decrecientes de memoria, y el puntero de pila apunta al último elemento insertado en la misma (si no hay ninguno, apunta al fondo de la pila). Inserción: MOVE.{WL} DATO,-(SP) Extracción: MOVE.{WL} (SP)+,DATO Es posible acceder a cualquier dato almacenado en la pila. Direccionamientos relativos al puntero de pila. Direccionamientos relativos al puntero de marco si está definido. 15 Inserción de un dato en la pila ANTES DESPUÉS SP SP XXXX 2 ó 4 octetos INSERCIÓN MOVE.{WL} DATO,-(SP) El contenido de DATO se almacena en la cima de la pila 8
Extracción de un dato de la pila ANTES DESPUÉS SP XXXX 2 ó 4 octetos SP EXTRACCIÓN MOVE.{WL} (SP)+,DATO La información extraída se almacena en DATO 17 9. Las instrucciones en el MC68000 Máquina CISC (computador con repertorio de instrucciones complejo). Tamaño de las instrucciones: múltiplo de bits. Número de operandos: 0, 1 ó 2. En instrucciones aritméticas o lógicas, se suele exigir que uno de los operandos esté en un registro de datos o de direcciones. Palabra de operación (OW, operation word): bits. Código de operación + direccionamientos + datos inmediatos pequeños. Palabras de extensión (EW, extension word): palabras adicionales que almacenan informaciones que no caben en la palabra de operación. Se almacenan a continuación de OW. Pueden ser necesarias cuando en la instrucción hay: Operandos inmediatos. Direcciones absolutas. Desplazamientos posiblemente con índice. Listas de registros. Puede haber hasta cuatro palabras de extensión (como máximo 2 por operando). 18 9
10. El registro de estado del MC68000 15 13 10 9 8 4 3 2 1 T S I 2 I 1 I 0 X N Z V 0 C OCTETO DEL SISTEMA OCTETO DEL USUARIO (REGISTRO DE CÓDIGOS DE CONDICIÓN) CCR (condition code register): octeto del usuario. C: acarreo. V: desbordamiento en complemento a 2. Z: resultado igual a 0. N: resultado negativo. X: bit de extensión (acarreo superior en operaciones aritméticas y de desplazamiento). SR (status register): octeto del usuario + octeto del sistema. T: modo traza (1=se genera una excepción al ejecutar una instrucción; 0=se ejecutan las instrucciones normalmente). S: modo de funcionamiento (1=supervisor; 0=usuario). I 2 I 1 I 0 : nivel actual de prioridad de interrupción. 19 11. Las interrupciones en el MC68000 Interrupción: demanda de un periférico para que la UCP lo atienda. Las interrupciones en el MC68000 tienen siete niveles de prioridad. Cada periférico tendrá su propia prioridad. Los tres bits I 2 I 1 I 0 del SR codifican el nivel actual de prioridad. Si I 2 I 1 I 0 = 000 se reconocerá cualquier interrupción que se produzca (no hay ninguna interrupción de nivel 0). Si I 2 I 1 I 0 = 111, tan solo se reconocerán las interrupciones con nivel de prioridad 7 (interrupciones no enmascarables). Si 000 < I 2 I 1 I 0 < 111, se reconocerán las interrupciones que tengan un nivel de prioridad N > I 2 I 1 I 0. Si una interrupción no tiene el nivel de prioridad requerido, el procesador la deja pendiente y no la reconoce hasta que el nivel de prioridad especificado por I 2 I 1 I 0 lo permita. Cuando una interrupción es reconocida, la UCP desencadena una secuencia de acciones que culmina con la ejecución de una rutina de manejo de interrupciones que lleva a cabo las acciones necesarias para atender al periférico demandante. 20 10
12. Modos de funcionamiento del MC68000 El MC68000 tiene dos modos de funcionamiento: usuario y supervisor. Modo usuario (no privilegiado): cuando el bit S del SR es igual a 0. Los programas normales funcionan en este modo. Su puntero de pila es USP (los programas lo referencian como A7 o SP). No se puede escribir sobre el octeto del sistema del SR, aunque sí se puede leer. Existen instrucciones que no pueden utilizarse (instrucciones privilegiadas). Modo supervisor (privilegiado): cuando el bit S del SR es igual a 1. Se permite acceder a todos los recursos de la máquina sin restricciones. Su puntero de pila es el SSP (los programas lo referencian como A7 o SP), y se puede acceder también al puntero de pila de usuario (referenciándolo como USP). Se puede leer y escribir sobre el SR completo. Se pueden ejecutar todas las instrucciones del repertorio, incluyendo las instrucciones privilegiadas. Se pasa automáticamente a modo supervisor al iniciar el tratamiento de una excepción. 21 13. El MC68000 y el sistema operativo Sistema operativo (SO): conjunto de programas encargados de Controlar el computador. Proteger al computador de potenciales daños hipotéticamente causados por los programas de los usuarios. Gestionar la asignación de recursos (memoria, tiempo de UCP, etc.) a los programas de los usuarios. Gestionar el intercambio de información de la UCP con los periféricos. Gestionar las comunicaciones entre el computador y otros computadores conectados en red. El SO es una capa de software que facilita la utilización de los recursos del computador por parte de los usuarios y sus programas. 22 11
El MC68000 y el sistema operativo Mecanismo en el MC68000: niveles de protección. Las rutinas del SO funcionan en modo privilegiado (protegido). Los programas de usuario funcionan en modo no privilegiado (no protegido). Hay pilas separadas para usuario y SO con punteros independientes. Otros procesadores de la familia M68000 incorporan elementos adicionales para facilitar la tarea del SO. Las rutinas del SO entran en funcionamiento cuando se produce una excepción: Cuando se ejecuta una instrucción de TRAP: llamada a un servicio del sistema operativo (excepción software). Cuando se produce alguna situación extraña: excepción por desbordamiento (instrucción TRAPV), RESET, error de chequeo de índices (instrucción CHK), error de bus, división por cero, traza (bit T=1), error de privilegio, etc. Cuando se acepta una interrupción producida por un módulo de E/S: rutina de servicio de interrupción o manejador de interrupción. Las direcciones de memoria entre la $0 y la $3FF están reservadas para uso del SO. Puede haber más zonas de memoria reservadas para el SO. Al arrancar el computador, automáticamente se inicia en modo supervisor. 23 14. Excepciones en el MC68000 Excepción: situación que requiere un tratamiento inmediato por parte del procesador. Tipos de excepciones: Excepciones internas: se deben a errores producidos por las instrucciones, o bien cuando se ejecuta una instrucción especial. Excepciones externas: se deben a eventos externos al procesador como son las interrupciones, los errores de bus y la señal de RESET. Cada excepción requiere un tratamiento particular. Cada vez que se produce una excepción: El procesador realiza una serie de acciones automáticamente (procesamiento de la excepción). El procesador llama a una rutina de servicio de la excepción (manejador de la excepción). Las rutinas de manejo de las excepciones forman parte del sistema operativo de los computadores. Por tanto, el código de las mismas reside en memoria principal. Vector de excepción: posición de memoria que contiene la dirección de comienzo del código correspondiente a una rutina de tratamiento de una excepción. En el MC68000, los vectores de excepción están numerados y se almacenan entre las direcciones $0 y $3FF de memoria. Cada vector de excepción ocupa 4 octetos. 24 12