El Motorola MC68010 y el Motorola MC68012 son microprocesadores de 16/32 bits de Motorola , lanzados en 1982 como sucesores del Motorola 68000. [ 3] El 68010 y el 68012 agregaron funciones de virtualización, optimizaron bucles y corrigieron varios defectos pequeños del 68000. Las variantes MC68010 eran compatibles con pines con su predecesor, mientras que el MC68012 es una versión PGA de 84 pines con su espacio de memoria directamente accesible extendido a 2 GiB . [2] [4]
Los 68010 y 68012 son completamente compatibles con el modo de usuario del 68000, excepto que la instrucción MOVE from SR realiza trampas en modo de usuario, de modo que, para admitir código de modo de usuario que use esa instrucción, un controlador de trampas en modo supervisor debe simular la instrucción y continuar el código de modo de usuario después de esa instrucción. Esto se hizo para que el 68010 y el 68012 cumplieran con los requisitos de virtualización de Popek y Goldberg , específicamente que un nuevo SO podría ejecutarse como invitado y no estar al tanto. [2] : §1.3.2 Se agregó una nueva instrucción MOVE from CCR sin privilegios para compensar la penalidad de atrapar MOVE from SR en modo de usuario.
Los 68010 y 68012 pueden recuperarse de fallas de bus y continuar con la instrucción que generó la falla, lo que les permite implementar memoria virtual . Esto significa que el marco de pila de excepciones es diferente.
Un registro de base vectorial (VBR) de 32 bits contiene la dirección base de la tabla de vectores de excepción . La tabla de vectores 68000 siempre se basó en la dirección cero.
Un "modo de bucle" acelera los bucles que consisten únicamente en una instrucción "bucleable" y un DBcc (Decremento/Bifurcación según condición); un ejemplo sería MOVE y DBRA. Los códigos de operación de minibucle de dos instrucciones se obtienen previamente y se guardan en la caché de instrucciones de 6 bytes, mientras que los ciclos de lectura/escritura de memoria posteriores solo son necesarios para los operandos de datos durante la duración del bucle. [2] : §7.1.3 Preveía mejoras de rendimiento de un promedio del 50%, como resultado de la eliminación de la obtención de códigos de operación de instrucciones durante el bucle.
La variante MC68012, además de ampliar su espacio de memoria a 2 GiB, también agregó un pin de ciclo de lectura-modificación-escritura (RMC), indicando que un ciclo de lectura-modificación-escritura indivisible está en curso, con el fin de ayudar al diseño de sistemas multiprocesador con memoria virtual.
La expansión del espacio de memoria en el 68012 provocó un problema para cualquier programa que utilizara el byte alto de una dirección para almacenar datos, un truco de programación que tuvo éxito con aquellos procesadores que solo tienen un bus de direcciones de 24 bits (68000 y 68010). Un problema similar afectó al 68020 .
El 68010 nunca fue tan popular como el 68000. Sin embargo, debido al pequeño aumento de velocidad del 68010 sobre el 68000 y su soporte para memoria virtual, se puede encontrar en una serie de sistemas Unix más pequeños , tanto con la MMU 68451 (por ejemplo en el Torch Triple X ), como con una MMU personalizada (como la Sun-2 Workstation , AT&T UNIX PC/3B1 , Convergent Technologies MiniFrame, Plexus P/15 y P/20, [5] NCR Tower XP, DN300 y DN320 de Apollo Computer , [6] y HP 9000 Model 310) y varias máquinas de investigación. La mayoría de los demás proveedores (como Apple Computer) se quedaron con el 68000 hasta que se introdujo el 68020 .
Atari Games utilizó el 68010 en algunas de sus placas arcade, como el Atari System 1. Algunos propietarios de ordenadores Amiga y Atari ST y consolas de juegos Sega Genesis reemplazaron la CPU 68000 de su sistema por un 68010 para obtener un pequeño aumento de velocidad. [7]
En la práctica, la ganancia de velocidad general sobre un 68000 a la misma frecuencia es inferior al 10%.
El 68010 podía utilizarse con la MMU 68451. Sin embargo, algunos aspectos de su diseño, como la penalización de acceso a memoria de 1 reloj , hicieron que esta configuración fuera impopular. Algunos fabricantes utilizaban sus propios diseños de MMU, como Sun Microsystems en su estación de trabajo Sun-2 y Convergent Technologies en el AT&T UNIX PC/3B1 .