Motorola 68000

El Motorola 68000 (nombre en código MC68000) es un microprocesador CISC de 16/32 bits. Inicialmente fue diseñado, producido y comercializado por Motorola a partir de 1979, y más tarde producido y comercializado por Freescale Semiconductor, anteriormente el sector de productos semiconductores de Motorola del que se separó en 2004. Como el primer miembro de la familia de microprocesadores m68k, su software es generalmente compatible con sus procesadores sucesores. El modelo 68000 todavía se utiliza con fines educativos, mientras que, después de veinte años, su arquitectura sigue siendo una opción popular en nuevos proyectos.

Originalmente el MC68000 fue diseñado para ser un procesador de propósito general. Ha sido utilizado por varios fabricantes de computadoras personales como Amiga, Atari y Apple. Muchas consolas lo han utilizado, por ejemplo el Sega Genesis / Sega Mega Drive, El Atari Jaguar, El Neo Geo y muchas máquinas arcade. En la Sega Saturn, el 68000 fue dedicado a la gestión de sonido. Muchos diseñadores lo usaron y apreciaron, y de su trabajo nacieron Amiga 1000, Atari ST, varios modelos de Macintosh, los originales Sun Microsystems y las máquinas UNIX de SGI. El procesador también fue utilizado por Apollo / servidores de dominio. Los sucesores del 68000 se han utilizado durante mucho tiempo desde máquinas Unix ya que su arquitectura era muy similar a la del PDP - 11 Digital y VAX, y luego eran excelentes máquinas para ejecutar programas escritos en el lenguaje C. El 68000 también tuvo mucho éxito como microcontrolador; ha sido utilizado por compañías como HP, Printronix y Adobe para construir impresoras. De su derivación nacieron los procesadores Cpu32 y Coldfire utilizados en millones de sistemas de automatización industrial. También se ha utilizado en equipos médicos por su ventajosa relación costo / confiabilidad. En 2001, la versión Dragonball fue utilizada por Palm Computing para hacer sus propias PDAs y Handspring también la usó para la serie Visor, aunque las últimas versiones montan procesadores ARM. El 68000 todavía es utilizado por Texas Instruments para hacer sus calculadoras gráficas. La versión inicial del 68000 se introdujo en 1982 para competir con Intel 8086 e Intel 80286 y sus sucesores. La primera versión alcanzó 8MHz de reloj, que para los tiempos era una frecuencia de funcionamiento muy alta. Motorola dejó de producir el 68000 directamente en 2000, aunque continúa produciendo algunos de sus derivados, como el CPU32. Desde 2001 Hitachi ha reanudado la producción de 68000 gracias a una licencia otorgada por Motorola.

El 68000 fue un compromiso inteligente: cuando se introdujo, los autobuses de 16 bits eran en realidad la solución más razonable, ya que eran relativamente rápidos y no muy caros. Sin embargo, el 68000 fue diseñado con registros de 32 bits y espacio de direcciones, suponiendo que el costo de hardware disminuiría rápidamente y que el mayor costo inicial de la solución de 32 bits se amortizaría en poco tiempo. Aunque el ALU del 68000 era de 16 bits, el procesador manejaba todas las direcciones de 32 bits; es decir, tenía un espacio de direcciones lineal de 32 bits. Esto significa que el 68000 era, y es, de hecho, un microprocesador de 32 bits. El 8086 tenía un espacio de direcciones de 20 bits, pero no podía acceder a bloques de más de 64 kilobytes (16 bits) a la vez, excepto manipulando registros de segmentos. Aunque el bus de ALU era de 16 bits, las operaciones de direcciones se realizaron a 32 bits y se proporcionó un adder y sustractor de 32 bits fuera de la ALU, para ser utilizado para operaciones de incremento posterior y decremento previo en las direcciones, sin tener que esperar a la ALU y, por lo tanto, sin reducciones de rendimiento. Como se mencionó, aunque Motorola había lanzado un procesador de 16 bits, sus instrucciones y arquitectura estaban evidentemente conformadas para ser de 32 bits. Esta elección se hizo para evitar tener que lidiar con problemas de compatibilidad cuando la arquitectura migraría a un bus de 32 bits. La arquitectura elegida fue flexible, de hecho ya estaba previsto tanto el 68008 (procesador con bus de 8 bits) y el futuro sucesor de 32 bits (que era entonces el 68020). Para satisfacer las necesidades del mercado Motorola había planeado inicialmente tres procesadores. El 68000, equipado con un bus de datos de 16 bits y un bus de direcciones de 24 bits (correspondiente a 16 MB). El 68008, equipado con un bus de 8 bits para datos, y capaz de apuntar al 18 bits (con la posibilidad de usar 19 o 20 bits), y finalmente, el procesador de la próxima generación equipado con un direccionamiento de 32 bits y un bus de datos a 32 bits puede direccionar 4 GB). La CPU tiene los siguientes registros, todos de 32 bits: todos los registros de datos son de uso general, no hay registros especializados, dedicados por ejemplo a la multiplicación o división, como en los procesadores anteriores. El último registro de direcciones es el puntero de pila y se puede llamar indiferentemente A7 o SP. Este número de Registros representa un buen equilibrio: lo suficientemente bajo para no penalizar demasiado al 68000 en el cambio de contexto, pero aún lo suficiente para acelerar la mayoría de los cálculos. Se cree que la separación de registros en dos tipos permitió a los diseñadores de CPU lograr un mayor grado de paralelismo, gracias al uso de una unidad de ejecución auxiliar para registros de direcciones. También hay un registro de Estado (SR) de 16 bits. Las instrucciones aritméticas-lógicas y las transferencias establecen automáticamente los bits de condición (flags) en el registro de estado, excepto cuando el destino es un registro de direcciones. Hay 5 bits de condición: los bits de condición se utilizan principalmente por instrucciones de salto condicional, para controlar el flujo de un programa. Los diseñadores trataron de hacer el lenguaje ensamblador del 68000 ortogonal. Es decir, las instrucciones se dividen en operaciones y modos de direccionamiento: casi todos los modos de direccionamiento se pueden usar con la mayoría de las instrucciones. Cualquiera que escribiera un ensamblador para el 68000 se dio cuenta claramente de que estas "instrucciones" , a nivel de bits, eran traducibles a varios códigos operativos diferentes. Fue un compromiso bastante bueno porque daba casi las mismas ventajas que un sistema verdaderamente ortogonal, y sin embargo garantizaba a los diseñadores de CPU la libertad de extender la tabla de código operativo. Con solo 56 instrucciones, el tamaño mínimo de una instrucción era enorme para esos días: 16 bits. Además, muchas instrucciones y modos de direccionamiento requieren algunas palabras adicionales para manejar operandos inmediatos, bits de modo de direccionamiento adicionales y más. Muchos diseñadores creían que la arquitectura MC68000, en relación con su costo, ofrecía un conjunto de instrucciones con alta densidad de código, especialmente para la generada por un compilador. Esta característica ha sido la base del éxito y la longevidad de esta arquitectura. Esta creencia (o característica, dependiendo del diseñador) continuó siendo exitosa para el conjunto de instrucciones (incluso para CPU posteriores), hasta que la arquitectura ARM introdujo el conjunto de instrucciones Thumb, similar en compacidad. El 68000 y sus evoluciones tienen dos niveles de privilegio: el nivel de usuario y el nivel de supervisor. Un programa que se ejecuta a nivel de usuario tiene acceso a todos los registros, excepto aquellos para manejar interrupciones. A nivel de supervisor, no hay límites de acceso a los registros. El modo de ejecución está determinado por un bit del registro estatal. Una ventaja notable de esta CPU es tener dos pilas de puntero distintas, una para cada modo. En modo supervisor el 68000 utiliza un registro SP diferente, llamado SSP (Supervisor SP). El procesador todavía puede acceder al registro SP del nivel de usuario (llamado USP, user SP) también desde el nivel de supervisor, mediante instrucciones especiales. Gracias a esta característica, en un sistema multitarea basado en el 68000 es posible utilizar pilas muy pequeñas para procesos individuales, ya que no es necesario proporcionar espacio adicional para guardar registros para interrupciones. Para la gestión de interrupciones será suficiente que el sistema operativo asigne solo una pila de supervisor de tamaño adecuado. El modo supervisor es el mecanismo básico común a todos los procesadores de la familia 68000, para implementar políticas de protección típicas de los sistemas operativos más avanzados para programas conjuntos, que se ejecutan en modo usuario, no se permite el uso de instrucciones que son potencialmente "peligrosas" , que permanecen bajo la competencia exclusiva del sistema operativo. La CPU maneja 7 niveles de interrupción. Los niveles van del Nivel 1 al nivel 7 y tienen prioridad: un nivel de alta prioridad siempre puede interrumpir un nivel de menor prioridad. En el registro de estado, una instrucción privilegiada selecciona el nivel de interrupción que se está ejecutando para ignorar cualquier interrupción de nivel inferior. La capa 7 es sin enmascaramiento (NMI), mientras que la capa 0 indica que no hay interrupciones. Las capas se almacenan en el registro de estado y son visibles por el usuario. La tabla de direcciones de vectores de interrupción se encuentra en ubicaciones de memoria entre 0 y 1023 y permite 256 vectores de 32 bits. El primer vector almacena el punto de partida de la pila de direcciones, el segundo almacena la pila de instrucciones. Los vectores entre 3 y 15 se utilizan para reportar errores: error de bus, dirección incorrecta, instrucción ilegal, división por cero, etc.a partir de las interrupciones del Vector 24, se almacenan 15 niveles de traps (interrupción del software de la ejecución de programas por parte del procesador) y vectores definidos por el usuario. El controlador de interrupciones fue inicialmente un chip separado, el 68901: esto complicó enormemente el diseño del hardware de la tarjeta y ralentizó el procesador, ya que cada interrupción tenía que ser convertida desde el chip externo. El 68901 también estaba equipado con un UART muy simple y un temporizador para interrupciones. El 68901 tenía muchos defectos, incluyendo una predisposición a perder interrupciones de alto nivel si esto y el temporizador hacían clic al mismo tiempo. La contraparte producida por Mostek era mejor. Tener vectores de dirección fijos era muy conveniente durante el inicio de la computadora, ya que le permitía programar ROMs de computadora sin demasiadas complicaciones debido a las asignaciones de vectores dinámicos. Pero cuando se cargaba el sistema operativo una gestión fija de los vectores era una técnica desaconsejable ya que limitaba el sistema operativo y lo hacía muy ligado a la operación del modelo de procesador único. Para resolver este problema, los fabricantes a menudo arrancaban la computadora con las ROMs residentes desde una dirección en particular y después de arrancar la dirección de inicio se cambiaba y en lugar de la ROM se asignaba RAM que se podía cambiar sin problemas. Otro problema surgió del modo privilegiado: diseñado con un sistema operativo como Unix en mente, que por razones de seguridad implementa una clara distinción entre programas y sistema operativo. La idea era buena, pero la implementación resultó ser defectuosa, hubo olvido que lo hizo inseguro. Estos errores fueron corregidos en generaciones posteriores. El 68000 no pudo manejar correctamente un error en el acceso a la memoria y, por lo tanto, no pudo implementar una verdadera administración de memoria virtual, una necesidad vital para muchos sistemas operativos. La memoria Virtual es una técnica simple utilizada para simular la disponibilidad de RAM virtualmente infinita. Cuando el procesador accedía a una ubicación de memoria no existente, activaba una interrupción que seleccionaba un bloque de RAM, guardaba su contenido en un disco duro y luego manipulaba las direcciones para que las direcciones no existentes apuntaran al área de memoria recién liberada. Algunos fabricantes de sistemas Unix hicieron máquinas basadas en el 68000 con el soporte de memoria virtual. Fue posible usar dos procesadores con el reloj escalonado. Cuando el primer procesador se estrelló debido al acceso a una dirección inexistente, la lógica de control impidió que el segundo hiciera lo mismo y configurara la gestión de interrupciones de la memoria virtual después de liberar la RAM y tener las direcciones correctamente manipuladas le dan a su primer procesador que continuara Procesando como si nada hubiera pasado. Obviamente era una técnica muy costosa e ineficiente y tan pronto como salió el 68010 los fabricantes actualizaron las máquinas eliminando el segundo procesador. Un problema menos visible pero no menos importante que el 68000 era que tener muchas instrucciones y muchos modos de direccionamiento era difícil de simular, ya que el simulador tenía que tener en cuenta muchos casos con muchas variaciones. Este es un problema que también surgirá en algunas versiones modernas de su arquitectura. En el control de aviónica, el procesador Intel 80386 fue elegido por su simplicidad de simulación en comparación con el procesador Motorola correspondiente. La siguiente revisión del procesador, el Motorola 68010 resolvió la mayoría de los problemas del 68000.

La mayoría de las instrucciones son diádicas, es decir, tienen dos operandos, uno de los cuales también indica el destino del resultado. Ejemplos significativos son: muchas instrucciones permiten un sufijo que le permite especificar el tamaño de los datos de operación: el valor predeterminado es de 16 bits. Los modos de direccionamiento soportados son: tenga en cuenta que la cantidad realmente añadida o restada del registro de direcciones, respectivamente en los modos con post - incremento y pre - decremento, depende del tamaño de los datos: 1 si opera en bytes, 2 si en palabra, 4 si en palabra larga.

Microprocesadores Motorola

Motorola 6800

El Motorola 6800, también conocido como MC6800, es una familia de microprocesadores de 8 bits diseñados y construidos por Motorola en 1974. Fue parte del proyec...

Motorola 68012

El MC68012, comúnmente conocido como el Motorola 68012, es un microprocesador de 16/32 bits desarrollado por Motorola a principios de los años ochenta. Es una v...
Esta página se basa en el artículo de Wikipedia: Fuente, Autores, Licencia Creative Commons Reconocimiento-CompartirIgual.
This page is based on the Wikipedia article: Source, Authors, Creative Commons Attribution-ShareAlike License.
contactos
Política de privacidad , Descargos de responsabilidad