Введение

Модель микропроцессора

Различия между 68010/68012 и 68000

68010 и 68012 полностью совместимы с 68000 в пользовательском режиме, за исключением того, что инструкция MOVE из SR вызывает исключение в пользовательском режиме. Поэтому, для поддержки кода пользовательского режима, использующего эту инструкцию, обработчик исключений в режиме супервизора должен эмулировать инструкцию и продолжить выполнение кода пользовательского режима после неё. Это было сделано для соответствия требованиям виртуализации Попека и Голдберга, а именно для того, чтобы новая операционная система могла работать как гостевая, не осознавая этого. Для компенсации накладных расходов, связанных с вызовом исключения при выполнении MOVE из SR в пользовательском режиме, была добавлена новая непривилегированная инструкция MOVE из CCR. 68010 и 68012 способны восстанавливаться после ошибок шины и продолжать выполнение прерванной инструкции, что позволяет им реализовывать виртуальную память. Это означает, что структура стека исключений отличается. 32-битный регистр базового адреса векторов (VBR) хранит базовый адрес таблицы векторов исключений. Таблица векторов 68000 всегда располагалась по адресу ноль. "Режим цикла" ускоряет циклы, состоящие только из "циклируемой" инструкции и инструкции DBcc (Decrement/Branch on condition), например, MOVE и DBRA. Мини-код из двух инструкций цикла предварительно извлекается и хранится в 6-байтном кэше инструкций, в то время как последующие циклы чтения/записи в память требуются только для операндов данных в течение всего цикла. Это обеспечило повышение производительности в среднем на 50% за счет исключения извлечения кодов операций инструкций во время выполнения цикла. В варианте MC68012, помимо расширения адресного пространства до 2 Гбайт, был добавлен сигнал RMC (Read Modify Write cycle), указывающий на то, что выполняется неделимый цикл чтения-изменения-записи, что облегчает разработку многопроцессорных систем с виртуальной памятью. Расширение адресного пространства в 68012 создало проблему для программ, которые использовали старший байт адреса для хранения данных – приём, успешно работавший на процессорах с 24-битной адресной шиной (68000 и 68010). Аналогичная проблема возникла и в 68020.

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

68010 никогда не был так популярен, как 68000. Однако, благодаря небольшому увеличению производительности 68010 по сравнению с 68000 и поддержке виртуальной памяти, он использовался в ряде небольших Unix-систем, как с MMU 68451 (например, в Torch Triple X), так и с собственной MMU (таких как Sun 2 Workstation, AT&T UNIX PC/3B1, Convergent Technologies MiniFrame, NCR Tower XP, Apollo Computer DN300 и DN320, и HP 9000 Model 310), а также в различных исследовательских машинах. Большинство других производителей (таких как Apple Computer) продолжали использовать 68000 до выхода 68020. Atari Games применяла 68010 в некоторых своих аркадных платах, например, в Atari System 1. Некоторые владельцы компьютеров Amiga и Atari ST, а также игровых консолей Sega Genesis заменяли процессор 68000 на 68010 для небольшого прироста производительности. На практике, общий прирост скорости по сравнению с 68000 при одинаковой частоте составлял менее 10%. 68010 можно было использовать с MMU 68451. Однако, некоторые особенности его конструкции, такие как задержка в один такт при обращении к памяти, делали эту конфигурацию непопулярной. Некоторые производители использовали собственные разработки MMU, например, Sun Microsystems в рабочей станции Sun 2 и Convergent Technologies в AT&T UNIX PC/3B1.