Введение

32-битный микропроцессор

Motorola 68040 ("sixty eight oh forty") – 32-битный микропроцессор семейства Motorola 68000, выпущенный в 1990 году. Он является преемником 68030, а за ним следует 68060, пропуская 68050. В соответствии с общепринятой системой наименований Motorola, 68040 часто называют просто "040" (произносится как oh four oh или oh forty). 68040 стал первым представителем семейства 680x0, оснащенным встроенным блоком вычислений с плавающей точкой (FPU). Таким образом, он включал в себя всю функциональность, которая ранее требовала внешних микросхем, а именно FPU и блок управления памятью (MMU), который был добавлен в 68030. Он также имел раздельные кэши инструкций и данных объемом 4 килобайта каждый. Процессор был полностью конвейерным, с шестью стадиями. Были созданы различные версии 68040 для конкретных сегментов рынка, включая 68LC040, из которого был удален FPU, и 68EC040, из которого были удалены как FPU, так и MMU. Motorola планировала использовать вариант EC для встраиваемых систем, но процессоры для встраиваемых систем в период существования 68040 не требовали такой мощности, поэтому варианты EC 68020 и 68030 оставались широко распространенными в проектах. Motorola производила несколько модификаций по скорости. Модели с частотой 16 и 20 МГц не проходили квалификацию (обозначение XC) и использовались в качестве прототипов. Модели с частотой 25 и 33 МГц были доступны во всей линейке, но до 2000 года модель с частотой 40 МГц была доступна только для "полноценного" 68040. Разработка модели с частотой 50 МГц была отменена после того, как она превысила допустимые тепловые параметры.

Использование

В компьютерах Apple Macintosh процессор 68040 был представлен в модели Macintosh Quadra, названной в честь этого чипа. Самый быстрый процессор 68040 работал на частоте 40 МГц и использовался исключительно в Quadra 840AV. Более дорогие модели в (недолго просуществовавшей) линейке Macintosh Centris также использовали 68040, а более доступные Quadra, Centris и Macintosh Performa – 68LC040. Процессор 68040 также применялся в других персональных компьютерах, таких как Amiga 4000 и Amiga 4000T, а также в ряде рабочих станций, серверах Alpha Microsystems, серии HP 9000/400, моделях TOWER 32/750, 32/825 и 32/850 от NCR Corporation, DN5500 производства Apollo Computer и в более поздних версиях компьютеров NeXT. Процессор 68040 используется в бортовых компьютерах управления полетом (FMC) многих самолетов Boeing 737, включая все модели Next Generation и MAX.

Дизайн

68040 столкнулся с ограничением бюджета транзисторов на ранней стадии проектирования. Хотя MMU не требовал большого количества транзисторов — более того, размещение его на том же кристалле, что и CPU, фактически позволяло сэкономить транзисторы — FPU, безусловно, требовал их значительное количество. Внешний сопроцессор FPU 68882 от Motorola был известен как высокопроизводительное устройство, и Motorola не хотела рисковать тем, что интеграторы будут использовать версию "LC" с 68882 вместо более прибыльного полного сопроцессора "RC". (Для получения информации о многопроцессорной модели Motorola с серией 680x0 см. Motorola 68020.) Таким образом, FPU в 68040 был лишен возможности вычисления трансцендентных функций IEEE, которые поддерживались как 68881, так и 68882 и использовались популярным программным обеспечением для генерации фракталов того времени, и практически ничем другим. Пакет поддержки операций с плавающей точкой Motorola (FPSP) эмулировал эти инструкции программно, через обработку прерываний. Поскольку это был обработчик исключений, интенсивное использование трансцендентных функций приводило к серьезному снижению производительности. Тепловыделение всегда было проблемой на протяжении всего жизненного цикла 68040. Несмотря на то, что производительность чипа на такт была более чем в четыре раза выше, чем у 68020 и 68030, сложность чипа и его энергопотребление были обусловлены большим размером кристалла и большими кэшами. Это ограничивало масштабируемость процессора, и он никогда не мог работать на частоте, превышающей 40 МГц. Вариант с частотой 50 МГц планировался, но был отменен. Энтузиасты, занимающиеся разгоном, сообщали об успешном достижении 50 МГц, используя генератор на 100 МГц вместо детали на 80 МГц и тогдашнюю новую технику установки массивных радиаторов с вентиляторами. 68040 предлагал те же функции, что и Intel 80486, но по производительности на такт мог значительно превосходить чип Intel в операциях с целыми и вещественными числами.

68ЭС040

68EC040 — это версия микропроцессора Motorola 68040, предназначенная для встраиваемых контроллеров (EC). Он отличается от 68040 отсутствием блока обработки чисел с плавающей точкой (FPU) и блока управления памятью (MMU). Это делает его более доступным по цене и снижает энергопотребление. 68EC040 использовался в Supervisor Engine I коммутаторов Cisco, который является основой моделей 2900, 2948G, 2980G, 4000, 4500, 5000, 5500, 6000, 6500 и 7600.

68LC040

68LC040 – это бюджетная версия микропроцессора Motorola 68040, не имеющая блока вычислений с плавающей точкой (FPU). Это делает его более доступным по цене и снижает энергопотребление. Хотя характеристики процессора теперь больше соответствуют Motorola 68030, он сохраняет кэши и конвейер 68040, что обеспечивает значительно более высокую производительность по сравнению с 68030. В некоторых модификациях маски 68LC040 была обнаружена ошибка, из-за которой чип работает некорректно при использовании программного эмулятора FPU. Согласно документации по ошибкам Motorola (errata), чипы с маской 2E71M или более поздней не содержат этой ошибки. Новая маска была представлена в середине 1995 года, и чип 68LC040 был переведен в статус MC. Неисправные модификации чаще всего встречаются в компьютерах Apple Macintosh на базе 68LC040. Было подтверждено, что чипы с маской 2E23G (используемые, например, в LC 475) являются дефектными. Неисправность связана с потерей ожидающих записи данных при возникновении исключения по линии F. 68040 не может обновлять свой микрокод, как современные чипы x86. Это означает, что единственный способ использовать программное обеспечение, требующее функциональности с плавающей точкой, – заменить неисправный 68LC040 на более позднюю версию или на полноценный 68040.