El Motorola 68040 (" sesenta y ocho-cero-cuarenta ") es un microprocesador de 32 bits de la serie Motorola 68000 , lanzado en 1990. [2] Es el sucesor del 68030 y es seguido por el 68060 , omitiendo al 68050. De acuerdo con la nomenclatura general de Motorola, el 68040 a menudo se conoce simplemente como '040 (pronunciado oh-cuatro-oh o oh-cuarenta ).
El 68040 fue el primer miembro de la familia 680x0 con una unidad de coma flotante (FPU) en chip . Por lo tanto, incluía toda la funcionalidad que anteriormente requería chips externos, es decir, la FPU y la unidad de gestión de memoria (MMU), que se agregó en el 68030. También tenía cachés de datos e instrucciones divididas de 4 kilobytes cada una. Estaba completamente segmentado , con seis etapas. [3]
Se crearon versiones del 68040 para segmentos de mercado específicos, entre ellas el 68LC040, que eliminó la FPU, y el 68EC040, que eliminó tanto la FPU como la MMU. Motorola había pensado en la variante EC para uso integrado, pero los procesadores integrados durante la época del 68040 no necesitaban la potencia del 68040, por lo que las variantes EC del 68020 y el 68030 siguieron siendo comunes en los diseños.
Motorola produjo varias gamas de velocidad. Las piezas de 16 MHz y 20 MHz nunca fueron calificadas (designación XC) y se usaron como muestras de prototipos. Las gamas de 25 MHz y 33 MHz estuvieron presentes en toda la línea, pero hasta alrededor del año 2000 la gama de 40 MHz solo estaba disponible para el 68040 "completo". Una gama de 50 MHz planificada se canceló después de que excediera el límite de diseño térmico .
En las computadoras Apple Macintosh , el 68040 se introdujo en el Macintosh Quadra , que recibió su nombre por el chip. El procesador 68040 más rápido tenía una velocidad de reloj de 40 MHz y se utilizó solo en el Quadra 840AV. Los modelos más caros de la línea Macintosh Centris (de corta duración) también usaban el 68040, mientras que los más económicos Quadra, Centris y Macintosh Performa usaban el 68LC040 . El 68040 también se utilizó en otras computadoras personales , como la Amiga 4000 y Amiga 4000T , así como en varias estaciones de trabajo , servidores Alpha Microsystems , la serie HP 9000/400 , TOWER 32/750, 32/825 y 32/850 de NCR Corporation , [4] DN5500 de Apollo Computer , [5] y versiones posteriores de la computadora NeXT .
El procesador 68040 se utiliza en las computadoras de gestión de vuelo (FMC) a bordo de muchos aviones Boeing 737 , incluidos todos los modelos Next Generation y MAX . [6]
El 68040 se topó con el límite de presupuesto de transistores al principio del diseño. Si bien la MMU no admitía muchos transistores (de hecho, tenerla en el mismo chip que la CPU realmente ahorraba transistores), la FPU ciertamente lo hacía. La FPU externa 68882 de Motorola era conocida como una unidad de muy alto rendimiento y Motorola no quería correr el riesgo de que los integradores usaran la versión "LC" con un 68882 en lugar de la unidad "RC" completa más rentable. (Para obtener información sobre el modelo de multiprocesamiento de Motorola con la serie 680x0, consulte Motorola 68020 ). La FPU en el 68040 no era capaz de utilizar funciones trascendentales IEEE , que habían sido admitidas tanto por el 68881 como por el 68882 y que eran utilizadas por el popular software de generación de fractales de la época y poco más. El paquete de soporte de punto flotante (FPSP) de Motorola emulaba estas instrucciones en software bajo interrupción. Como se trataba de un controlador de excepciones, el uso intensivo de las funciones trascendentales causaba graves penalizaciones de rendimiento.
El calor siempre fue un problema durante la vida del 68040. Si bien ofrecía cuatro veces el rendimiento por reloj del 68020 y el 68030, la complejidad del chip y los requisitos de energía provenían de un chip grande y de grandes cachés. Esto afectó al escalamiento del procesador y nunca pudo funcionar con una velocidad de reloj superior a 40 MHz. Se planeó una variante de 50 MHz, pero se canceló. Los entusiastas del overclocking informaron que lograron alcanzar los 50 MHz utilizando un oscilador de 100 MHz en lugar de una pieza de 80 MHz y la entonces novedosa técnica de agregar disipadores de calor de gran tamaño con ventiladores.
El 68040 ofrecía las mismas características que el Intel 80486 , pero en una base reloj a reloj podía superar significativamente al chip Intel en instrucciones de números enteros y de punto flotante. [7] [8]
El 68EC040 es una versión del microprocesador Motorola 68040, pensado para controladores embebidos (EC). Se diferencia del 68040 en que no tiene ni FPU ni MMU, lo que lo hace más económico y consume menos energía. El 68EC040 se utilizó en el Supervisor Engine I de Cisco , que es el núcleo de los modelos 2900, 2948G, 2980G, 4000, 4500, 5000, 5500, 6000, 6500 y 7600.
El 68LC040 es una versión de bajo costo del microprocesador Motorola 68040 sin FPU. Esto lo hace más económico y consume menos energía. Aunque la CPU ahora se ajusta a una tabla de características más parecida a la del Motorola 68030, sigue incluyendo las cachés y el pipeline del 68040 y, por lo tanto, es significativamente más rápido que el 68030.
Algunas revisiones de máscara del 68LC040 contenían un error que impedía que el chip funcionara correctamente cuando se utilizaba un emulador de FPU de software . Según la fe de erratas de Motorola, [9] cualquier chip con una máscara configurada 2E71M o posterior no contiene el error. Esta nueva máscara se introdujo a mediados de 1995 y convirtió el chip 68LC040 en un chip MC. [10]
Las revisiones defectuosas se encuentran normalmente en los ordenadores Apple Macintosh basados en 68LC040 . Se ha confirmado que los chips con el conjunto de máscaras 2E23G (como los utilizados en el LC 475) son defectuosos. El fallo se relaciona con la pérdida de escrituras pendientes cuando se activa la excepción de línea F. [11] El 68040 no puede actualizar su microcódigo de la misma manera que los chips x86 modernos. Esto significa que la única forma de utilizar software que requiere funcionalidad de punto flotante es reemplazar el 68LC040 defectuoso por una revisión posterior o por un 68040 completo.
ATC = caché de traducción de direcciones