stringtranslate.com

motorola 68000

El Motorola 68000 (a veces abreviado como Motorola 68k o m68k y generalmente pronunciado "sesenta y ocho mil") [2] [3] es un microprocesador de computadora con conjunto de instrucciones complejas (CISC) de 16/32 bits , introducido en 1979 por Motorola Semiconductor. Sector Productos.

El diseño implementa un conjunto de instrucciones de 32 bits , con registros de 32 bits y un bus de datos interno de 16 bits . [4] El bus de direcciones es de 24 bits y no utiliza segmentación de memoria , lo que facilitó la programación. Internamente, utiliza una unidad lógica aritmética (ALU) de datos de 16 bits y dos ALU más de 16 bits utilizadas principalmente para direcciones, [4] y tiene un bus de datos externo de 16 bits . [5] Por esta razón, Motorola lo denominó procesador de 16/32 bits.

Como uno de los primeros procesadores ampliamente disponibles con un conjunto de instrucciones de 32 bits, un gran espacio de direcciones no segmentadas y una velocidad relativamente alta para la época, el 68k fue un diseño popular durante la década de 1980. Fue ampliamente utilizado en una nueva generación de computadoras personales con interfaces gráficas de usuario , incluidas Macintosh 128K , Amiga , Atari ST y X68000 . La consola Genesis/Mega Drive de 1988 funciona con un 68000.

Los procesadores posteriores de la serie Motorola 68000 , comenzando con el Motorola 68020 , utilizan ALU completas de 32 bits y tienen buses de dirección y datos completos de 32 bits, lo que acelera las operaciones de 32 bits y permite el direccionamiento de 32 bits, en lugar de los de 24 bits. direccionamiento del 68000 y 68010 o el direccionamiento de 31 bits del Motorola 68012 . El 68k original es generalmente compatible con el software del resto de la línea a pesar de estar limitado a un bus externo de 16 bits de ancho. [4]

Chip XC68000 de prelanzamiento fabricado en 1979
Muere de Motorola 68000

Después de 45 años en producción , la arquitectura 68000 todavía está en uso. [6] [7]

Desarrollo

Motorola MC68000 ( paquete portador de chip sin cables (CLCC))
Motorola MC68000 ( paquete portador de chip con plomo de plástico (PLCC))

6800

El primer microprocesador de Motorola producido ampliamente fue el 6800 , presentado a principios de 1974 y disponible en grandes cantidades a finales de ese año. [8] La empresa se fijó el objetivo de vender 25.000 unidades en septiembre de 1976, objetivo que cumplió. Aunque era un diseño capaz, fue eclipsado por diseños más potentes, como el Zilog Z80 , y diseños menos costosos, como el MOS Technology 6502 . [9] A finales de 1976, la cartera de ventas estaba estable y la división sólo se salvó gracias a un proyecto para General Motors que se convirtió en una enorme línea de productos para el control de motores y otras tareas. [10]

Pasando a 16 bits

Cuando se introdujo el 6800, había llegado al mercado una pequeña cantidad de diseños de 16 bits. Estos generalmente se modelaron en plataformas de minicomputadoras como Data General Nova o PDP-8 . Basados ​​en los procesos de fabricación de semiconductores de la época, a menudo se trataba de soluciones de múltiples chips como el National Semiconductor IMP-16 o el PACE de un solo chip que tenía problemas de velocidad. [11]

Con las perspectivas de ventas para el 6800 decayendo, pero aún con dinero en efectivo proveniente de las ventas de controles de motor, a finales de 1976 Colin Crook, Gerente de Operaciones, comenzó a considerar cómo ganar con éxito ventas futuras. Sabían que Intel estaba trabajando en una extensión de 16 bits de su serie 8080 , que surgiría como Intel 8086 , y habían oído rumores sobre un Zilog Z80 de 16 bits , que se convertiría en el Z8000 . Estos utilizarían nuevas técnicas de diseño que eliminarían los problemas observados en sistemas anteriores de 16 bits. [12]

Motorola sabía que si lanzaban un producto similar al 8086, dentro del 10% de sus capacidades, Intel los superaría en el mercado. Para competir, se fijaron el objetivo de ser dos veces más potentes al mismo coste, o la mitad con el mismo rendimiento. Crook decidió que atacarían la gama alta del mercado con el procesador más potente del mercado. [12] Otro de 16 bits no serviría, su diseño tendría que ser más grande, y eso significaba tener algunas características de 32 bits. [13] Crook había decidido adoptar este enfoque a finales de 1976. [12]

MACSS

Crook formó el proyecto Motorola Advanced Computer System on Silicon (MACSS) para construir el diseño y contrató a Tom Gunter como su arquitecto principal. Gunter comenzó a formar su equipo en enero de 1977. [14] El objetivo de rendimiento se fijó en 1 millón de instrucciones por segundo (MIPS). Querían que el diseño no sólo recuperara a proveedores de microcomputadoras como Apple Computer y Tandy , sino también a compañías de minicomputadoras como NCR y AT&T . [14]

El equipo decidió abandonar el intento de compatibilidad con versiones anteriores del 6800, ya que sentían que los diseños de 8 bits eran demasiado limitados para ser la base de nuevos diseños. El nuevo sistema fue influenciado por el PDP-11 , el diseño de minicomputadora más popular de la época. [15] En ese momento, un concepto clave en minis era el concepto de un conjunto de instrucciones ortogonales , en el que cada operación podía funcionar con cualquier tipo de datos. Para introducir los datos correctos en las unidades internas, MACSS hizo un uso extensivo de microcódigo , esencialmente pequeños programas en memoria de solo lectura que reunían los datos requeridos, realizaban las operaciones y escribían los resultados. MACSS fue uno de los primeros en utilizar esta técnica en un microprocesador. [16] [17]

Había una gran cantidad de hardware de soporte para el 6800 que seguiría siendo útil, como UART y sistemas de interfaz similares. Por esta razón, el nuevo diseño conservó un modo de compatibilidad de protocolo de bus para los dispositivos periféricos 6800 existentes. [18] [17]

Un chip con 32 pines de datos y 32 de direccionamiento requeriría 64 pines, y más para alimentación y otras funciones. En ese momento, los paquetes en línea dual (DIP) de 64 pines eran sistemas "grandes, costosos" y "simplemente terribles", lo que los convertía en los más grandes que podían considerar. Para adaptarlo, Crook seleccionó un diseño híbrido, con una arquitectura de conjunto de instrucciones (ISA) de 32 bits pero componentes de 16 bits que la implementan, como la unidad lógica aritmética (ALU). [14] La interfaz externa se redujo a 16 pines de datos y 24 para direcciones, lo que permite que todo quepa en un paquete de 64 pines. Esto se conoció como la "Cucaracha de Texas". [13] [un]

A mediados de la década de 1970, las técnicas de diseño MOS de Motorola se habían vuelto menos avanzadas que las de su competencia, y sus líneas de fabricación en ocasiones luchaban con bajos rendimientos . A finales de la década de 1970, la empresa había iniciado un programa de intercambio de tecnología con Hitachi , mejorando drásticamente sus capacidades de producción. Como parte de esto, se construyó una nueva fábrica, MOS-8, utilizando los últimos tamaños de oblea de 5 pulgadas y el proceso HMOS de Intel con un tamaño de característica de 3,5  μm . [19] Esta fue una inversión destinada a atrapar a la competencia: incluso las nuevas empresas de semiconductores como Zilog y MOS Technology habían introducido CPU fabricadas con lógica NMOS en modo de agotamiento antes que Motorola. De hecho, es posible que Motorola se haya quedado sustancialmente rezagado con respecto a sus contemporáneos en la eliminación gradual del modo de mejora y la puerta metálica, y el director de productos de la serie 68k, Tom Gunter, recordó que el 68000 tuvo que tener éxito a pesar de adoptar inicialmente un diseño de puerta metálica. [20] Aunque el punto sobre ponerse al día es claro, esto no podría haber sido un resumen completamente preciso porque las hojas de datos de 1976 de Motorola, anteriores al inicio del proyecto MACCS, denotan la mayor parte de su familia 6800 en puerta de silicio. [21] De hecho, el propio artículo de Gunter de 1979 que presentaba el 68000 lo destacó como un diseño HMOS en modo de agotamiento de puerta de silicio. [22] Cualquiera que sea el grado de los déficits de proceso y fabricación de Motorola en los primeros días, el equipo no se inmutó y no se comprometió en su búsqueda de un microprocesador con un rendimiento líder en la industria. [23]

Muestreo y producción.

Presentado formalmente en septiembre de 1979, [24] muestras iniciales se lanzaron en febrero de 1980, y los chips de producción estuvieron disponibles sin receta en noviembre. [25] Los grados de velocidad iniciales son 4, 6 y 8  MHz . Los chips de 10 MHz estuvieron disponibles durante 1981, [26] y los chips de 12,5 MHz en junio de 1982. [25] La versión "12F" de 16,67 MHz del MC68000, la versión más rápida del chip HMOS original, no se produjo hasta finales de la década de 1980.

A principios de 1981, el 68k estaba logrando múltiples avances en diseño en la gama alta, y Gunter comenzó a acercarse a Apple para ganar su negocio. En ese momento, el 68k se vendía por unos 125 dólares en cantidad. En reuniones con Steve Jobs , Jobs habló sobre el uso del 68k en el Apple Lisa , pero afirmó que "el verdadero futuro está en este producto que estoy haciendo personalmente. Si quieres este negocio, debes comprometerte a venderlo". por 15 dólares." [27] Motorola respondió ofreciendo venderlo a 55 dólares al principio, luego bajarlo a 35 dólares, y así sucesivamente. Jobs estuvo de acuerdo y el Macintosh pasó del 6809 al 68k. El precio medio finalmente alcanzó los 14,76 dólares. [27]

Variantes

En 1982, el 68000 recibió una actualización menor de su arquitectura de conjunto de instrucciones (ISA) para admitir memoria virtual y cumplir con los requisitos de virtualización de Popek y Goldberg . El chip actualizado se llama 68010 . [28] También agrega un nuevo "modo de bucle" que acelera los bucles pequeños y aumenta el rendimiento general en aproximadamente un 10% a las mismas velocidades de reloj. También se produjo en pequeñas cantidades una versión ampliada adicional, la 68012 , que expone 31 bits del bus de direcciones .

Para admitir sistemas de menor costo y aplicaciones de control con tamaños de memoria más pequeños, Motorola presentó el MC68008 compatible con 8 bits , también en 1982. Este es un 68000 con un bus de datos de 8 bits y un bus de direcciones más pequeño (20 bits). Después de 1982, Motorola dedicó más atención a los proyectos 68020 y 88000 .

Segunda fuente

Hitachi HD68000
Thomson TS68000

Varias otras empresas fueron fabricantes de segunda fuente del HMOS 68000. Entre ellas se encontraban Hitachi (HD68000), que redujo el tamaño de la función a 2,7 μm para su versión de 12,5 MHz, [25] Mostek (MK68000), Rockwell (R68000), Signetics (SCN68000 ), Thomson / SGS-Thomson (originalmente EF68000 y posteriormente TS68000) y Toshiba (TMP68000). Toshiba también fue un segundo fabricante del CMOS 68HC000 (TMP68HC000).

Las variantes cifradas del 68000, que son Hitachi FD1089 y FD1094, almacenan claves de descifrado para códigos de operación y datos de códigos de operación en una memoria respaldada por batería y se usaron en ciertos sistemas arcade de Sega, incluido el System 16, para prevenir la piratería y los juegos piratas ilegales. [29]

Versiones CMOS

Motorola MC68HC000LC8

El 68HC000, la primera versión CMOS del 68000, fue diseñado por Hitachi y presentado conjuntamente en 1985. [30] La versión de Motorola se llama MC68HC000, mientras que la de Hitachi es HD68HC000. El 68HC000 ofrece velocidades de 8 a 20 MHz. Excepto por el uso de circuitos CMOS, se comportó de manera idéntica al HMOS MC68000, pero el cambio a CMOS redujo en gran medida su consumo de energía. El HMOS MC68000 original consumía alrededor de 1,35  vatios a una temperatura ambiente de 25  °C , independientemente de la velocidad del reloj, mientras que el MC68HC000 consumía sólo 0,13 vatios a 8 MHz y 0,38 vatios a 20 MHz. (A diferencia de los circuitos CMOS, HMOS todavía consume energía cuando está inactivo, por lo que el consumo de energía varía poco con la frecuencia del reloj). Apple seleccionó el 68HC000 para usarlo en el Macintosh Portable .

Motorola reemplazó el MC68008 con el MC68HC001 en 1990. [31] Este chip se parece al 68HC000 en muchos aspectos, pero su bus de datos puede funcionar en modo de 16 u 8 bits, dependiendo del valor de un pin de entrada en el reinicio. Así, al igual que el 68008, se puede utilizar en sistemas con memorias de 8 bits más económicas.

La evolución posterior del 68000 se centró en aplicaciones de control integradas más modernas y periféricos en chip. El chip 68EC000 y el núcleo SCM68000 eliminan el bus periférico M6800 y excluyen la instrucción MOVE de SR de los programas en modo usuario, lo que convierte a 68EC000 y 68SEC000 en las únicas CPU 68000 que no son 100% compatibles con el código objeto con CPU 68000 anteriores cuando se ejecutan en modo usuario. Cuando se ejecuta en modo supervisor, no hay diferencia. [32] En 1996, Motorola actualizó el núcleo independiente con circuitos totalmente estáticos, consumiendo sólo 2  μW en modo de bajo consumo, llamándolo MC68SEC000. [33]

Motorola cesó la producción del HMOS MC68000, así como del MC68008, MC68010, MC68330 y MC68340 el 1 de junio de 1996, [34] [35] pero su empresa derivada Freescale Semiconductor todavía producía el MC68HC000, MC68HC001, MC68EC000. y MC68SEC000, así como los microcontroladores MC68302 y MC68306 y versiones posteriores de la familia DragonBall . Los descendientes arquitectónicos del 68000, las familias 680x0 , CPU32 y Coldfire , también estaban todavía en producción. Más recientemente, con el cierre fabuloso de Sendai, todas las piezas 68HC000, 68020, 68030 y 68882 se descontinuaron, dejando solo el 68SEC000 en producción. [36]

Como núcleo de microcontrolador

Desde que fue reemplazado por los "verdaderos" microprocesadores de 32 bits, el 68000 se utiliza como núcleo de muchos microcontroladores . En 1989, Motorola presentó el procesador de comunicaciones MC68302 . [37]

Aplicaciones

Dos CPU Hitachi 68HC000 utilizadas en una PCB de juego de arcade

IBM consideró el 68000 para IBM PC pero eligió el Intel 8088 ; sin embargo, IBM Instruments vendió brevemente los sistemas informáticos de laboratorio IBM System 9000 basados ​​en 68000. El conjunto de instrucciones de 68k es particularmente adecuado para implementar Unix, [38] y el 68000 y sus sucesores se convirtieron en las CPU dominantes para estaciones de trabajo basadas en Unix, incluidas las estaciones de trabajo Sun y Apollo/Domain .

En 1981, Motorola presentó la placa de computadora educativa Motorola 68000 , una computadora de placa única para fines educativos y de capacitación que, además del 68000, contenía memoria, dispositivos de E/S, temporizador programable y área de cableado para circuitos personalizados. La placa se siguió utilizando en las universidades de EE. UU. como herramienta para aprender a programar en ensamblador hasta principios de la década de 1990. [39]

En su introducción, el 68000 se utilizó por primera vez en sistemas de alto precio, incluidas microcomputadoras multiusuario como la WICAT 150, [40] las primeras computadoras Alpha Microsystems , Sage II/IV , Tandy 6000/ TRS-80 Model 16 y Fortune 32:16. ; estaciones de trabajo de un solo usuario , como los sistemas HP 9000 Serie 200 de Hewlett-Packard , los primeros sistemas Apollo/Domain , el Sun-1 de Sun Microsystems y el Corvus Concept ; y terminales gráficos como VAXstation 100 de Digital Equipment Corporation y IRIS 1000 y 1200 de Silicon Graphics . Los sistemas Unix pasaron rápidamente a las generaciones posteriores más capaces de la línea 68k, que siguió siendo popular en ese mercado durante la década de 1980.

A mediados de la década de 1980, la caída de los costos de producción hizo que el 68000 fuera viable para su uso en computadoras personales, comenzando con Apple Lisa y Macintosh , seguido por Amiga , Atari ST y X68000 .

La microcomputadora Sinclair QL , junto con sus derivados, como la terminal comercial ICL One Per Desk , fue la utilización comercial más importante del 68008. Helix Systems (en Missouri, Estados Unidos) diseñó una extensión del bus SWTPC SS-50 . el SS-64 y produjo sistemas construidos alrededor del procesador 68008.

Si bien la adopción de RISC y x86 desplazó a la serie 68000 como CPU de escritorio/estación de trabajo, el procesador encontró un uso sustancial en aplicaciones integradas . A principios de la década de 1990, se podían comprar 68.000 CPU por menos de 30  dólares la pieza. [ cita necesaria ]

El 68000 también tuvo un gran éxito como controlador integrado. Ya en 1981, las impresoras láser como la Imagen Imprint-10 estaban controladas por placas externas equipadas con el 68000. La primera HP LaserJet , introducida en 1984, venía con un 68000 de 8 MHz incorporado. Otros fabricantes de impresoras adoptaron el 68000. incluido Apple con la introducción de LaserWriter en 1985, la primera impresora láser PostScript . El 68000 siguió utilizándose ampliamente en impresoras durante el resto de la década de 1980 y persistió hasta bien entrada la década de 1990 en impresoras de gama baja.

El 68000 tuvo éxito en el campo de los sistemas de control industrial. Entre los sistemas beneficiados por tener un 68000 o derivado como microprocesador se encontraban familias de controladores lógicos programables (PLC) fabricados por Allen-Bradley , Texas Instruments y posteriormente, tras la adquisición de esa división de TI, por Siemens . Los usuarios de tales sistemas no aceptan la obsolescencia del producto al mismo ritmo que los usuarios domésticos, y es muy probable que, a pesar de haber sido instalados hace más de 20 años, muchos controladores basados ​​en 68000 continúen en servicio confiable hasta bien entrado el siglo XXI.

En varios osciloscopios digitales de los años 80, [41] el 68000 se ha utilizado como procesador de visualización de formas de onda; algunos modelos, incluido el LeCroy 9400/9400A [42], también utilizan el 68000 como procesador matemático de formas de onda (incluyendo suma, resta, multiplicación y división de dos formas de onda/referencias/memorias de formas de onda), y algunos osciloscopios digitales que utilizan el 68000 (incluido el 9400/9400A) también puede realizar funciones rápidas de transformada de Fourier en una forma de onda.

Los microcontroladores 683XX , basados ​​en la arquitectura 68000, se utilizan en equipos de telecomunicaciones y redes, decodificadores de televisión, instrumentos médicos y de laboratorio e incluso calculadoras portátiles. El MC68302 y sus derivados se han utilizado en muchos productos de telecomunicaciones de Cisco, 3com, Ascend, Marconi, Cyclades y otros. Los modelos anteriores de Palm PDA y Handspring Visor usaban DragonBall , un derivado del 68000. AlphaSmart usó la familia DragonBall en versiones posteriores de sus procesadores de texto portátiles. Texas Instruments utilizó el 68000 en sus calculadoras gráficas de alta gama, las series TI-89 y TI-92 y Voyage 200 .

Una versión modificada del 68000 formó la base del emulador de hardware IBM XT/370 del procesador System 370.

Juegos de vídeo

Los fabricantes de videojuegos utilizaron el 68000 como columna vertebral de muchos juegos arcade y consolas de juegos domésticas : Atari's Food Fight , de 1982, fue uno de los primeros juegos arcade basados ​​en 68000. Otros incluyeron System 16 de Sega , CP System y CPS-2 de Capcom y Neo Geo de SNK . A finales de la década de 1980, el 68000 era lo suficientemente económico como para alimentar consolas de juegos domésticas, como la consola Sega Genesis de Sega y también el accesorio Sega CD (un sistema Sega CD tiene tres CPU, dos de ellas 68000). La consola multiprocesador Atari Jaguar de 1993 utilizó un 68000 como chip de soporte, aunque algunos desarrolladores lo utilizaron como procesador principal debido a su familiaridad. La consola Sega Saturn utilizó el 68000 como coprocesador de sonido. En octubre de 1995, el 68000 se convirtió en una consola de juegos portátil , Genesis Nomad de Sega , como CPU. [43]

Ciertos juegos arcade (como Steel Gunner y otros basados ​​en Namco System 2 ) utilizan una configuración de CPU dual 68000, [44] y también existen sistemas con una configuración de CPU triple 68000 (como Galaxy Force y otros basados ​​en Sega Y Board). , [45] junto con una configuración de CPU cuádruple 68000, que ha sido utilizada por Jaleco (una 68000 para sonido tiene una frecuencia de reloj más baja en comparación con las otras CPU 68000) [46] para juegos como Big Run y ​​Cisco Heat ; otro quinto 68000 (a una frecuencia de reloj diferente a la de las otras CPU 68000) se utilizó en el juego arcade de Jaleco Wild Pilot para el procesamiento de entrada/salida (E/S). [47]

Arquitectura

Autobús de dirección

El 68000 tiene un bus de direcciones externo de 24 bits y dos señales de selección de bytes "reemplazadas" por A0. Por tanto, estas 24 líneas pueden direccionar 16 MB de memoria física con resolución de bytes. El almacenamiento y el cálculo de direcciones utilizan 32 bits internamente; sin embargo, los 8 bits de dirección de orden superior se ignoran debido a la falta física de pines del dispositivo. Esto le permite ejecutar software escrito para un espacio de direcciones lógicamente plano de 32 bits , mientras accede solo a un espacio de direcciones físicas de 24 bits. La intención de Motorola con el espacio de direcciones interno de 32 bits era la compatibilidad hacia adelante, lo que hacía factible escribir software 68000 que aprovecharía al máximo las implementaciones posteriores de 32 bits del conjunto de instrucciones 68000. [4]

Sin embargo, esto no impidió que los programadores escribieran software incompatible. El software de "24 bits" que descarta el byte de dirección superior o lo utiliza para fines distintos del direccionamiento podría fallar en implementaciones 68000 de 32 bits. Por ejemplo, las primeras versiones (anteriores a 7.0) del sistema operativo Mac de Apple utilizaban el byte alto de los punteros maestros de bloque de memoria para mantener indicadores como bloqueado y purgable . Las versiones posteriores del sistema operativo trasladaron las banderas a una ubicación cercana y Apple comenzó a enviar computadoras que tenían ROM " limpias de 32 bits " a partir del lanzamiento del Mac IIci de 1989.

La familia 68000 almacena números enteros de varios bytes en la memoria en orden big-endian .

Registros internos

La CPU tiene ocho registros de datos de uso general de 32 bits (D0-D7) y ocho registros de direcciones (A0-A7). El último registro de dirección es el puntero de la pila y los ensambladores aceptan la etiqueta SP como equivalente a A7. En aquel momento se trataba de un buen número de registros en muchos sentidos. Era lo suficientemente pequeño como para permitir que el 68000 respondiera rápidamente a las interrupciones (incluso en el peor de los casos, donde era necesario guardar los 8 registros de datos D0-D7 y los 7 registros de direcciones A0-A6, 15 registros en total) y, sin embargo, lo suficientemente grande para agiliza la mayoría de los cálculos, porque se pueden realizar íntegramente dentro del procesador sin mantener ningún resultado parcial en la memoria. (Tenga en cuenta que una rutina de excepción en modo supervisor también puede guardar el puntero de pila de usuario A7, lo que daría un total de 8 registros de dirección. Sin embargo, el diseño del puntero de pila dual (A7 y modo supervisor A7') del 68000 hace que esto normalmente sea innecesario, excepto cuando se realiza un cambio de tarea en un sistema multitarea).

Tener los dos tipos de registros permite que se realicen al mismo tiempo una dirección de 32 bits y un cálculo de datos de 16 bits. Esto da como resultado un tiempo de ejecución de instrucciones reducido, ya que las direcciones y los datos se pueden procesar en paralelo. [4]

Registro de estado

El 68000 tiene un registro de estado de 16 bits. Los 8 bits superiores son el byte del sistema y su modificación es privilegiada. Los 8 bits inferiores son el byte de usuario, también conocido como registro de código de condición (CCR), y su modificación no tiene privilegios. Las operaciones lógicas, aritméticas y de comparación 68000 modifican los códigos de condición para registrar sus resultados para su uso en saltos condicionales posteriores. Los bits del código de condición son "llevar" (C), "desbordamiento" (V), "cero" (Z), "negativo" (N) y "extender" (X). La bandera "extender" (X) merece una mención especial, porque está separada de la bandera de acarreo . Esto permite separar el bit extra de las operaciones aritméticas, lógicas y de desplazamiento de la aritmética de multiprecisión de acarreo . [48]

Conjunto de instrucciones

Los diseñadores intentaron hacer que el lenguaje ensamblador fuera ortogonal . Es decir, las instrucciones se dividen en operaciones y modos de dirección , y casi todos los modos de dirección están disponibles para casi todas las instrucciones. Hay 56 instrucciones y un tamaño mínimo de instrucción de 16 bits. Muchas instrucciones y modos de direccionamiento son más largos para incluir más bits de dirección o modo.

Niveles de privilegio

La CPU, y posteriormente toda la familia, implementa dos niveles de privilegios. El modo de usuario brinda acceso a todo excepto a instrucciones privilegiadas, como controles de nivel de interrupción. [49] El privilegio de supervisor da acceso a todo. Una interrupción siempre se convierte en supervisión. El bit de supervisión se almacena en el registro de estado y es visible para los programas de usuario. [49]

Una ventaja de este sistema es que el nivel de supervisor tiene un puntero de pila independiente. Esto permite que un sistema multitarea utilice pilas muy pequeñas para las tareas, porque los diseñadores no tienen que asignar la memoria necesaria para contener los marcos de pila de una acumulación máxima de interrupciones.

Interrumpe

La CPU reconoce siete niveles de interrupción . Los niveles 1 a 5 tienen una prioridad estricta. Es decir, una interrupción con un número más alto siempre puede interrumpir una interrupción con un número más bajo. En el registro de estado, una instrucción privilegiada permite configurar el nivel mínimo de interrupción actual, bloqueando interrupciones de menor o igual prioridad. Por ejemplo, si el nivel de interrupción en el registro de estado se establece en 3, niveles más altos de 4 a 7 pueden causar una excepción. El nivel 7 es una interrupción no enmascarable (NMI) activada por nivel. El nivel 1 puede ser interrumpido por cualquier nivel superior. El nivel 0 significa que no hay interrupción. El nivel se almacena en el registro de estado y es visible para los programas de nivel de usuario.

Las interrupciones de hardware se señalan a la CPU mediante tres entradas que codifican la prioridad de interrupción pendiente más alta. Generalmente se requiere un codificador separado para codificar las interrupciones, aunque para sistemas que no requieren más de tres interrupciones de hardware es posible conectar las señales de interrupción directamente a las entradas codificadas a costa de una mayor complejidad del software. El controlador de interrupciones puede ser tan simple como un codificador de prioridad 74LS148 , o puede ser parte de un chip periférico de integración a muy gran escala (VLSI), como el periférico multifunción MC68901 (utilizado en la gama de computadoras Atari ST y X68000 ). que también proporciona un UART , temporizador y E/S paralelas.

La "tabla de excepciones" ( tabla de vectores de interrupción direcciones de vectores de interrupción) está fijada en las direcciones 0 a 1023, lo que permite 256 vectores de 32 bits. El primer vector (RESET) consta de dos vectores, a saber, la dirección de pila inicial y la dirección de código inicial. Los vectores del 3 al 15 se utilizan para informar varios errores: error de bus , error de dirección, instrucción ilegal , división por cero , vector CHK y CHK2, violación de privilegios (para bloquear la escalada de privilegios ) y algunos vectores reservados que se convirtieron en el emulador de la línea 1010 y el emulador de la línea 1111. y punto de interrupción de hardware . El vector 24 inicia las interrupciones reales : interrupción espuria (sin reconocimiento de hardware) y autovectores del nivel 1 al 7, luego los 16 vectores TRAP, luego algunos vectores más reservados y luego los vectores definidos por el usuario.

Dado que el vector de dirección del código inicial siempre debe ser válido al restablecerse, los sistemas comúnmente incluían alguna memoria no volátil (por ejemplo, ROM ) comenzando en la dirección cero para contener los vectores y el código de arranque . Sin embargo, para un sistema de propósito general es deseable que el sistema operativo pueda cambiar los vectores en tiempo de ejecución. Esto a menudo se lograba apuntando los vectores en la ROM a una tabla de salto en la RAM , o mediante el uso de conmutación de banco para permitir que la ROM fuera reemplazada por RAM en tiempo de ejecución.

El 68000 no cumple con los requisitos de virtualización de Popek y Goldberg para la virtualización completa del procesador porque tiene una única instrucción sin privilegios, "MOVE from SR", que permite al software en modo de usuario acceso de solo lectura a una pequeña cantidad de estado privilegiado. El 68EC000 y el 68SEC000, que son derivados posteriores del 68000, cumplen con los requisitos ya que la instrucción "MOVE from SR" tiene privilegios. El mismo cambio se introdujo en las CPU 68010 y posteriores.

El 68000 tampoco puede admitir fácilmente memoria virtual , lo que requiere la capacidad de capturar y recuperarse de un acceso fallido a la memoria. El 68000 proporciona una excepción de error de bus que se puede utilizar para interceptar, pero no guarda suficiente estado del procesador para reanudar la instrucción fallida una vez que el sistema operativo haya manejado la excepción. Varias empresas lograron fabricar estaciones de trabajo Unix basadas en 68000 con memoria virtual que funcionaban utilizando dos chips 68000 ejecutándose en paralelo en relojes de diferentes fases. Cuando el 68000 "principal" encontraba un acceso incorrecto a la memoria, el hardware adicional interrumpiría el 68000 "principal" para evitar que también encontrara el acceso incorrecto a la memoria. Esta rutina de interrupción manejaría las funciones de la memoria virtual y reiniciaría el 68000 "principal" en el estado correcto para continuar la operación sincronizada correctamente cuando el 68000 "principal" regresara de la interrupción.

Estos problemas se solucionaron en la siguiente revisión importante de la arquitectura 68k con el lanzamiento del MC68010. Las excepciones de error de bus y error de dirección envían una gran cantidad de estado interno a la pila del supervisor para facilitar la recuperación, y la instrucción "MOVE from SR" se convirtió en privilegiada. Se proporciona una nueva instrucción sin privilegios "MOVE from CCR" para que la utilice en su lugar el software en modo usuario; un sistema operativo puede capturar y emular las instrucciones "MOVER desde SR" en modo de usuario si lo desea.

Detalles del conjunto de instrucciones

Los modos de direccionamiento estándar son:

Además: acceso al registro de estado y, en modelos posteriores, a otros registros especiales.

La mayoría de las instrucciones tienen variantes que operan con bytes de 8 bits, palabras de 16 bits y longitudes de 32 bits; Los lenguajes ensambladores utilizan sufijos de letras de punto ".b", ".w" y ".l" después del mnemotécnico de instrucción para indicar la variante.

Como muchas CPU de su época, el tiempo del ciclo de algunas instrucciones variaba según los operandos de origen. Por ejemplo, la instrucción de multiplicación sin signo tarda (38+2n) ciclos de reloj en completarse, donde 'n' es igual al número de bits establecidos en el operando. [50] Para crear una función que tomara un conteo de ciclo fijo se requirió la adición de código adicional después de la instrucción de multiplicación. Por lo general, esto consumiría ciclos adicionales por cada bit que no se configuró en el operando de multiplicación original.

La mayoría de las instrucciones son diádicas , es decir, la operación tiene un origen y un destino, y se cambia el destino. Las instrucciones notables son:

68EC000

Controlador Motorola 68EC000

El 68EC000 es una versión de bajo costo del 68000 con una distribución de pines ligeramente diferente, diseñada para aplicaciones de controlador integrado. El 68EC000 puede tener un bus de datos de 8 o 16 bits , conmutable al restablecerse. [51]

Los procesadores están disponibles en una variedad de velocidades, incluidas configuraciones de 8 y 16  MHz , y producen 2100 y 4376  Dhrystones cada uno. Estos procesadores no tienen unidad de punto flotante y es difícil implementar un coprocesador FPU ( MC68881/2 ) con una porque la serie EC carece de las instrucciones de coprocesador necesarias.

El 68EC000 se utilizó como controlador en muchas aplicaciones de audio, incluidos los instrumentos musicales y tarjetas de sonido Ensoniq , donde formaba parte del sintetizador MIDI . [52] En las placas de sonido Ensoniq, el controlador proporcionaba varias ventajas en comparación con los competidores sin una CPU a bordo. El procesador permitió configurar la placa para realizar diversas tareas de audio, como la síntesis MIDI MPU-401 o la emulación MT-32 , sin el uso de un programa residente de terminación y permanencia . Esto mejoró la compatibilidad del software, redujo el uso de la CPU y eliminó el uso de la memoria del sistema host.

El núcleo Motorola 68EC000 se utilizó más tarde en los procesadores DragonBall basados ​​en m68k de Motorola/ Freescale .

También se utilizó como controlador de sonido en la consola de juegos Sega Saturn y como controlador para las placas controladoras HP JetDirect Ethernet para las impresoras HP LaserJet de mediados de la década de 1990 .

Código de ejemplo

El siguiente código ensamblador 68000 es para una subrutina denominada strtolower, que copia una cadena terminada en nulo de caracteres de 8 bits en una cadena de destino, convirtiendo todos los caracteres alfabéticos a minúsculas.

La subrutina establece una trama de llamada utilizando el registro A6 como puntero de trama. Este tipo de convención de llamada admite código reentrante y recursivo y normalmente se utiliza en lenguajes como C y C++ . Luego, la subrutina recupera los parámetros que se le pasan ( srcy dst) de la pila. Luego realiza un bucle, lee un carácter ASCII (un byte) de la srccadena, verifica si es un carácter alfabético en mayúscula y, de ser así, lo convierte en un carácter en minúscula; de lo contrario, lo deja como está y luego escribe el carácter en la dstcuerda. Finalmente, verifica si el carácter era nulo ; si no, repite el bucle; de ​​lo contrario, restaura el marco de pila anterior (y el registro A6) y regresa. Tenga en cuenta que los punteros de cadena (registros A0 y A1) se incrementan automáticamente en cada iteración del bucle.

Por el contrario, el siguiente código es para una función independiente, incluso en la versión más restrictiva de AMS para la serie de calculadoras TI-89 , siendo independiente del kernel, sin valores buscados en tablas, archivos o bibliotecas durante la ejecución. sin llamadas al sistema, sin procesamiento de excepciones, registros mínimos a utilizar ni necesidad de guardar ninguno. Es válido para fechas históricas julianas del 1 de marzo del 1 d.C., o para fechas gregorianas . En menos de dos docenas de operaciones calcula un número de día compatible con ISO 8601 cuando se llama con tres entradas almacenadas en sus UBICACIONES correspondientes:

;; WDN, una dirección - para almacenar el resultado d0; BANDERA, 0 o 2 - para elegir entre juliano o gregoriano, respectivamente; FECHA, año0mda: sello de fecha como palabra binaria, byte y byte en formato ISO básico;(AÑO, año ~ AÑO=FECHA debido al big- endianness ); move.l DATE,d0 move.l d0,d1;; Aplicar el paso 1: congruencia de Lachman andi.l #$f00,d0 divu #100,d0 addi.w #193,d0 andi.l #$ff,d0 divu #100,d0 ; d0 has the month index i in the upper word (mod 100);; Aplique el paso 2: encontrar spqr como el año del día bisiesto juliano anterior a la FECHA swap d0 andi.l #$ffff,d0 add.b d1,d0 add.w YEAR,d0 subi.l #$300,d1 lsr #2,d1 swap d1 add.w d1,d0 ; spqr/4 + year + i + da;; (Aplicar paso 0 - ajuste gregoriano) mulu FLAG,d1 divu #50,d1 mulu #25,d1 lsr #2,d1 add.w d1,d0 add.w FLAG,d0 ; (sp32div16) + spqr/4 + year + i + da; divu #7,d0 swap d0 ; d0.w becomes the day number; move.w d0,WDN ; returns the day number to address WDN rts;; Los días de la semana corresponden a los números de los días de la semana como:; Dom=0 Lun=1 Mar=2 Mié=3 Jue=4 Viernes=5 Sáb=6;

Notas

  1. ^ Los diseños híbridos de este tipo ya eran comunes en el campo de las minicomputadoras. El Data General Nova era un diseño de 16 bits implementado utilizando ALU de 4 bits.

Ver también

Referencias

  1. ^ Salud, Steve (1995). Arquitecturas y sistemas de microprocesadores: RISC, CISC y DSP (Segunda ed.). Elsevier. pag. 13.ISBN​ 0-7506-2303-9. Archivado desde el original el 16 de abril de 2021 . Consultado el 12 de octubre de 2019 .
  2. ^ Granlund, Torbjörn (14 de noviembre de 2020). Biblioteca aritmética de precisión múltiple GNU (PDF) (Ed. 6.2.1 ed.). Proyecto GNU . pag. 13. Archivado (PDF) desde el original el 28 de julio de 2022 . Consultado el 29 de julio de 2022 .
  3. ^ Hola, Jim; Norton, Pedro (1989). Dentro del Apple Macintosh. Simón y Schuster . pag. 530.ISBN 0-13-467622-X. Archivado desde el original el 29 de julio de 2022 . Consultado el 29 de julio de 2022 .
  4. ^ abcde Starnes, Thomas W. (abril de 1983). "Filosofía de diseño detrás del MC68000 de Motorola". Byte . vol. 8, núm. 4. Archivado desde el original el 24 de julio de 2018 . Consultado el 19 de junio de 2018 .
  5. ^ Manual de referencia del programador de la familia Motorola M68000 (PDF) . Phoenix, Arizona: Motorola . 1992. pág. 1-1. ISBN 0-13-723289-6. Archivado (PDF) desde el original el 24 de septiembre de 2015 . Consultado el 12 de agosto de 2005 .
  6. ^ "MC68000: microprocesador de 32 bits de bajo costo (incluidos HC000, HC001, EC000 y SEC000)". Semiconductores NXP . Archivado desde el original el 14 de abril de 2021 . Consultado el 24 de marzo de 2021 .
  7. ^ Turley, Jim (10 de agosto de 2020). "Sumergiéndose en la nostalgia de 68K, ¿quiere construir una computadora nueva de 40 años?". Revista de Ingeniería Electrónica . Archivado desde el original el 11 de abril de 2021 . Consultado el 24 de marzo de 2021 .
  8. ^ "Motorola se une a la carrera de microprocesadores con la entrada de 8 bits". Electrónica . 47 (5). Nueva York: McGraw-Hill: 29–30. 7 de marzo de 1974.
  9. ^ Tooley, Michael (1988). Servicio de computadoras personales (Segunda ed.). Heinemann . pag. 8.ISBN 0-434-91975-6. Archivado desde el original el 29 de julio de 2022 . Consultado el 29 de julio de 2022 .
  10. ^ Oral 2007, pag. 4.
  11. ^ Kent, Allen ; Williams, James G. (1991). Enciclopedia de microcomputadoras: evolución de la gestión del mantenimiento computarizado hasta la generación de números aleatorios. vol. 7. Marcel Dekker . pag. 336.ISBN 0-8247-2706-1. Archivado desde el original el 29 de julio de 2022 . Consultado el 29 de julio de 2022 .
  12. ^ abc Oral 2007, pag. 5.
  13. ^ ab Oral 2007, pág. 9.
  14. ^ abc Oral 2007, pag. 6.
  15. ^ Oral 2007, pag. 8.
  16. ^ Oral 2007, pag. 7.
  17. ^ ab Andersson, Sven (24 de marzo de 2014). "La (R)evolución del microprocesador". Tiempos EE.UU. pag. 2. Archivado desde el original el 29 de julio de 2022 . Consultado el 29 de julio de 2022 .
  18. ^ Tooley, Michael (1992). Mantenimiento de computadoras personales (Tercera ed.). Newnes . págs. 264-265. ISBN 0-7506-0374-7. Archivado desde el original el 29 de julio de 2022 . Consultado el 29 de julio de 2022 .
  19. ^ Oral 2007, pág. 10.
  20. ^ Oral 2007, págs. 9-11.
  21. ^ "Datos de diseño del sistema de microcomputadora M6800" (PDF) . Motorola . 1976. pág. 21. Archivado (PDF) desde el original el 18 de abril de 2023 . Consultado el 17 de abril de 2023 .
  22. ^ Stritter y Gunter (1979). "Microsistemas, una arquitectura de microprocesador para un mundo cambiante: el Motorola 68000". Computadora . 12 (2): 43–52. doi :10.1109/MC.1979.1658617. S2CID  15893310 . Consultado el 17 de abril de 2023 .
  23. ^ Oral 2007, pag. 11.
  24. ^ Ken Polsson. "Cronología de Microprocesadores". Processortimeline.info. Archivado desde el original el 19 de agosto de 2012 . Consultado el 27 de septiembre de 2013 .
  25. ^ abc DTACK GROUNDED, The Journal of Simple 68000/16081 Systems, marzo de 1984, p. 9, archivado desde el original el 10 de marzo de 2016 , consultado el 31 de octubre de 2011.
  26. ^ "Motorola era el rival a batir, y su 68000 su mayor éxito". tekdeeps . Archivado desde el original el 13 de septiembre de 2022 . Consultado el 13 de septiembre de 2022 .
  27. ^ ab Oral 2007, pág. 12.
  28. ^ Faynberg, Igor; Lu, Hui-Lan; Sküler, Dor (2016). Computación en la nube: tendencias y tecnologías comerciales. Wiley . pag. 53.ISBN 978-1-118-50121-4. Archivado desde el original el 29 de julio de 2022 . Consultado el 29 de julio de 2022 .
  29. ^ "FD1094-Sega Retro". segaretro.org . 19 de octubre de 2017. Archivado desde el original el 28 de septiembre de 2013 . Consultado el 27 de octubre de 2015 .
  30. ^ "Company Briefs" Archivado el 14 de noviembre de 2007 en Wayback Machine , The New York Times, 21 de septiembre de 1985, disponible en TimesSelect (suscripción).
  31. ^ "68HC001 obsoleto 68008". Informe del microprocesador . 20 de junio de 1990.
  32. ^ "Motorola optimiza la familia 68000; versiones" EC "de 68000, '020, '030 y '040, además del chip 68300 de gama baja"". Informe del Microprocesador . 17 de abril de 1991.
  33. ^ "Motorola revela el procesador MC68SEC000 para aplicaciones integradas de bajo consumo" (Presione soltar). Motorola. 18 de noviembre de 1996. Archivado desde el original el 28 de marzo de 1997.
  34. ^ "HIPPO Q495" (PDF) . Descripción general de la cartera de productos internos de alto rendimiento (10). Motorola . Cuarto trimestre de 1995. Archivado desde el original el 14 de septiembre de 2022 . Consultado el 29 de julio de 2022 .
  35. ^ Comp.sys.m68k Publicación de Usenet Archivado el 14 de noviembre de 2007 en Wayback Machine , 16 de mayo de 1995; Vea también otras publicaciones en el hilo. El anuncio del fin de su vida útil se produjo a finales de 1994; Según la práctica estándar de Motorola al final de su vida útil, los pedidos finales se habrían realizado en 1995 y los envíos finales en 1996.
  36. ^ "Cierre Fab Sendai Freescale de 150 mm: discontinuación general del producto". 24 de noviembre de 2010. Archivado desde el original el 9 de marzo de 2014 . Consultado el 9 de marzo de 2014 .
  37. ^ "El procesador multiprotocolo combina 68000 y RISC". ESD: La revista de diseño de sistemas electrónicos . 1 de noviembre de 1989: a través de AccessMyLibrary.
  38. ^ Rood, Andrew L.; Cline, Robert C.; Brewster, Jon A. (septiembre de 1986). "UNIX y el MC68000". Byte . pag. 179.
  39. ^ El microcontrolador Atmel AVR: MEGA y XMEGA en ensamblaje y C. Han-Way Huang. 14 de enero de 2013. ISBN 978-1285500089. Archivado desde el original el 10 de abril de 2022 . Consultado el 18 de noviembre de 2021 .
  40. ^ "museo ~ WICAT 150". Old-computers.com. Archivado desde el original el 12 de octubre de 2012 . Consultado el 27 de septiembre de 2013 .
  41. ^ Manual de servicio del osciloscopio de almacenamiento digital de doble canal Philips PM3320 250 MS/s, sección 8.6, código de pedido 4822 872 05315.
  42. ^ Manual de servicio del osciloscopio digital LeCroy 9400/9400A, sección 1.1.1.3 Microprocesador, agosto de 1990.
  43. ^ Hunt, Stuart (6 de octubre de 2009). "Retroinspección: Sega Nomad". Jugador retro . No 69. pág. 47.
  44. ^ "Google Code Archive: almacenamiento a largo plazo para el alojamiento de proyectos de Google Code". código.google.com . Archivado desde el original el 14 de septiembre de 2022 . Consultado el 15 de enero de 2016 .
  45. ^ "openlase-mame/segaybd.c en master - jv4779/openlase-mame". GitHub . Archivado desde el original el 9 de diciembre de 2021 . Consultado el 15 de enero de 2016 .
  46. ^ "Google Code Archive: almacenamiento a largo plazo para el alojamiento de proyectos de Google Code". código.google.com . Archivado desde el original el 14 de septiembre de 2022 . Consultado el 15 de enero de 2016 .
  47. ^ "historic-mess/cischeat.c en master - mamedev/historic-mess". GitHub . Archivado desde el original el 25 de enero de 2022 . Consultado el 15 de enero de 2016 .
  48. ^ Ford, William; Topp, William R. (1997). Programación de sistemas y lenguaje ensamblador para la familia M68000 (Segunda ed.). Editores Jones y Bartlett . págs. 149-151. ISBN 0-7637-0357-5. Archivado desde el original el 29 de julio de 2022 . Consultado el 29 de julio de 2022 .
  49. ^ ab Manual del usuario de microprocesadores M68000 de 8/16/32 bits, novena edición (PDF) . Motorola. 1993. pág. 6-2. Archivado (PDF) desde el original el 14 de abril de 2022 . Consultado el 28 de febrero de 2022 .
  50. ^ "Tiempos de ejecución de instrucciones estándar". antiguowww.nvg.ntnu.no . Archivado desde el original el 9 de septiembre de 2016 . Consultado el 4 de agosto de 2017 .
  51. ^ Chicos, Robert (6 de enero de 1996). "Preguntas frecuentes (FAQ) sobre M68k, comp.sys.m68k". Archivado desde el original el 16 de julio de 2012 . Consultado el 3 de mayo de 2010 .
  52. ^ Especificaciones de Soundscape Elite. de hoja de fax Archivado el 30 de enero de 2010 en Wayback Machine , Grupos de Google, 25 de abril de 1995.

Bibliografía

Otras lecturas

Hojas de datos y manuales
Libros
Imágenes

enlaces externos