Universidad Rey Juan Carlos ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES Introducción al microprocesador MC68000 Luis Rincón Córcoles Licesio J. Rodríguez-Aragón Introducción al microprocesador MC68000 Programa 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. La familia de microprocesadores M68000 Características principales del MC68000 Modelo de programación del MC68000 Los registros de datos del MC68000 Los registros de direcciones del MC68000 La memoria en el MC68000 Punteros de propósito específico del MC68000 La estructura de la pila del MC68000 El registro de estado del MC68000 Las instrucciones en el MC68000 Modos de ejecución del MC68000 Las interrupciones en el MC68000 El MC68000 y el sistema operativo Excepciones en el MC68000 2 Introducción al microprocesador MC68000 Bibliografía  A. CLEMENTS. Microprocessor Systems Design. 3rd 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/16/32 Bit Microprocessors User’s Manual. 9th 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 Introducción al microprocesador MC68000 1. La familia de microprocesadores M68000 Modelo Ancho de los registros Ancho del bus Ancho del bus de datos de direcciones Ancho de la UAL 68000 32 16 24 16 68008 32 8 20 16 68010 32 16 24 16 68012 32 16 30 16 68020 32 32 32 32 68030 32 32 32 32 68040 32 32 32 32 68060 32 32 32 32 4 Introducción al microprocesador MC68000 2. Características principales del MC68000 • Máquina CISC (computador con repertorio de instrucciones complejo). • Tamaño de los buses: Datos: 16 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 Introducción al microprocesador MC68000 El interfaz del MC68000 6 Introducción al microprocesador MC68000 Ejemplo: sistema mínimo con un MC68000 7 Introducción al microprocesador MC68000 3. Modelo de programación del MC68000 D0 A0 D1 A1 D2 A2 D3 A3 D4 A4 D5 A5 D6 A6 PC SR CCR A7 (USP) A7 (SSP) D7 15 8 7 0 0 1 2 3 4 5 ... ... i*2 ... MAX-2 i*2+1 ... MAX-1 8 Introducción al microprocesador MC68000 4. Los registros de datos del MC68000 31 16 15 8 7 0 D0 D1 D2 D3 D4 D5 D6 D7 • • • Tamaño: 32 bits. Modos de acceso: Octeto (.B): se accede sólo a los 8 bits menos significativos. Palabra (.W): se accede sólo a los 16 bits menos significativos. Palabra larga o doble (.L): se accede al registro completo. Uso: para almacenar datos temporales. 9 Introducción al microprocesador MC68000 5. Los registros de direcciones del MC68000 31 16 15 0 A0 A1 A2 A3 A4 A5 A6 • • • Tamaño: 32 bits. Modos de acceso: Palabra (.W): se usan los 16 bits menos significativos. – Si escribimos en un registro de direcciones en modo palabra, se realiza extensión de signo a los 32 bits. Palabra larga o doble (.L): se usa el registro completo. Uso: punteros de 32 bits a datos o estructuras de datos en memoria. Como la memoria máxima tiene 224 octetos, al usar un registro de direcciones como puntero se descarta su octeto más significativo. 10 Introducción al microprocesador MC68000 6. La memoria en el MC68000 Direcciones pares ↓ 15 8 7 000000000000000000000000 000000000000000000000001 000000000000000000000010 000000000000000000000011 000000000000000000000100 000000000000000000000101 ... i*2 ... MAX-2 • • • • ↓ Direcciones impares 0 ... i*2+1 ... MAX-1 Tamaño máximo: 16 Moctetos incluyendo RAM, ROM y puertos de E/S. Unidad direccionable: octeto. Acceso básico: palabra de 16 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 Introducción al microprocesador MC68000 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 Introducción al microprocesador MC68000 Ejemplo: transferencia entre memoria y registro • Contenidos iniciales: MEMORIA REGISTRO DE DATOS Di 31 24 23 Oct0 16 15 Oct1 8 Oct2 Pares 15 7 0 Oct3 31 MOVE.B N,Di ⇒ Di ⇒ Di ⇒ Di ⇒ Di M(N) N+1 M(N+2) M(N+3) N+3 8 0 M(N) 8 7 0 M(N+1) Oct2 8 M(N) 16 15 M(N+1) 7 Oct2 16 15 Oct1 24 23 M(N+1) 16 15 Oct1 24 23 M(N) 16 15 Oct1 24 23 Oct0 31 MOVE.L N,Di 24 23 Oct0 31 MOVE.W N,Di N+2 (par) Oct0 31 MOVE.B N+1,Di N 0 Impares 8 7 7 0 M(N+1) 8 M(N+2) 7 0 M(N+3) 13 Introducción al microprocesador MC68000 7. Punteros de propósito específico del MC68000 • Contador de programa (PC) Tiene 32 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 32 bits. Funcionan como registros de direcciones. Tienen un uso específico en determinadas instrucciones. 14 Introducción al microprocesador MC68000 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 Introducción al microprocesador MC68000 Inserción de un dato en la pila DESPUÉS ANTES SP XXXX 2 ó 4 octetos SP INSERCIÓN MOVE.{WL} DATO,-(SP) El contenido de DATO se almacena en la cima de la pila 16 Introducción al microprocesador MC68000 Extracción de un dato de la pila DESPUÉS ANTES SP XXXX 2 ó 4 octetos SP EXTRACCIÓN MOVE.{WL} (SP)+,DATO La información extraída se almacena en DATO 17 Introducción al microprocesador MC68000 9. Las instrucciones en el MC68000 • Máquina CISC (computador con repertorio de instrucciones complejo). • Tamaño de las instrucciones: múltiplo de 16 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): 16 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 Introducción al microprocesador MC68000 10. El registro de estado del MC68000 15 13 10 9 8 4 3 2 1 0 T S I2 I1 I0 X N Z V 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). I2 I1 I0: nivel actual de prioridad de interrupción. 19 Introducción al microprocesador MC68000 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 I2I1I0 del SR codifican el nivel actual de prioridad. Si I2I1I0 = 000 se reconocerá cualquier interrupción que se produzca (no hay ninguna interrupción de nivel 0). Si I2I1I0 = 111, tan solo se reconocerán las interrupciones con nivel de prioridad 7 (interrupciones no enmascarables). Si 000 < I2I1I0 < 111, se reconocerán las interrupciones que tengan un nivel de prioridad N > I2I1I0. • 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 I2I1I0 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 Introducción al microprocesador MC68000 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 Introducción al microprocesador MC68000 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 Introducción al microprocesador MC68000 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: Excepción: situación que requiere un tratamiento inmediato por parte del procesador. • 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