Motorola MC68010 и Motorola MC68012 — это 16/32-битные микропроцессоры от Motorola , выпущенные в 1982 году в качестве преемников Motorola 68000. [3] В 68010 и 68012 добавлены функции виртуализации, оптимизированы циклы и исправлено несколько небольших недостатков 68000. Варианты MC68010 были совместимы по выводам со своим предшественником, в то время как MC68012 — это 84-контактная версия PGA с расширенным до 2 ГиБ пространством памяти с прямым доступом . [2] [4]
68010 и 68012 полностью совместимы в пользовательском режиме с 68000, за исключением того, что инструкция MOVE из SR прерывается в пользовательском режиме, так что для поддержки кода пользовательского режима, использующего эту инструкцию, обработчик прерываний режима супервизора должен имитировать инструкцию и продолжать код пользовательского режима после этой инструкции. Это было сделано для того, чтобы 68010 и 68012 соответствовали требованиям виртуализации Попека и Голдберга , в частности, чтобы новая ОС могла работать как гостевая и не знать об этом. [2] : §1.3.2 Была добавлена новая непривилегированная инструкция MOVE из CCR для компенсации штрафа за прерывание пользовательского режима MOVE из SR.
68010 и 68012 могут восстанавливаться после сбоев шины и продолжать выполнение инструкции, вызвавшей сбой, что позволяет им реализовать виртуальную память . Это означает, что кадр стека исключений отличается.
32-битный векторный базовый регистр (VBR) хранит базовый адрес для таблицы векторов исключений . Таблица векторов 68000 всегда базировалась на нулевом адресе.
«Режим цикла» ускоряет циклы, состоящие только из «циклической» инструкции и DBcc (декремент/переход по условию); примером могут служить MOVE и DBRA. Коды операций мини-цикла из двух инструкций предварительно выбираются и хранятся в 6-байтовом кэше инструкций, в то время как последующие циклы чтения/записи памяти требуются только для операндов данных на протяжении цикла. [2] : §7.1.3 Он обеспечил улучшение производительности в среднем на 50% в результате устранения выборки кодов операций инструкций во время цикла.
Вариант MC68012, помимо расширения пространства памяти до 2 ГиБ, также имеет вывод цикла чтения-изменения-записи (RMC), указывающий на выполнение неделимого цикла чтения-изменения-записи, что облегчает проектирование многопроцессорных систем с виртуальной памятью.
Расширение пространства памяти в 68012 вызвало проблему для любых программ, которые использовали старший байт адреса для хранения данных, программный трюк, который был успешен с теми процессорами, которые имели только 24-битную адресную шину (68000 и 68010). Похожая проблема затронула 68020 .
68010 никогда не был таким популярным, как 68000. Однако из-за небольшого прироста скорости 68010 по сравнению с 68000 и его поддержки виртуальной памяти его можно найти в ряде меньших систем Unix , как с 68451 MMU (например, в Torch Triple X ), так и с пользовательским MMU (например, Sun-2 Workstation , AT&T UNIX PC/3B1 , Convergent Technologies MiniFrame, Plexus P/15 и P/20, [5] NCR Tower XP, Apollo Computer 's DN300 и DN320 , [6] и HP 9000 Model 310) и различных исследовательских машинах. Большинство других поставщиков (например, Apple Computer) оставались с 68000 до появления 68020 .
Atari Games использовала 68010 в некоторых своих игровых приставках, таких как Atari System 1. Некоторые владельцы компьютеров Amiga и Atari ST , а также игровых консолей Sega Genesis заменили процессор 68000 в своих системах на 68010, чтобы получить небольшой прирост скорости. [7]
На практике общий прирост скорости по сравнению с 68000 на той же частоте составляет менее 10%.
68010 можно было использовать с MMU 68451. Однако аспекты его конструкции, такие как штраф за доступ к памяти в 1 такт , сделали эту конфигурацию непопулярной. Некоторые поставщики использовали собственные разработки MMU, например Sun Microsystems в своей рабочей станции Sun-2 и Convergent Technologies в AT&T UNIX PC/3B1 .