Микропроцессоры 68010 и 68012: Архитектура, возможности и применение.
Motorola 68010
68010 и 68012: совместимость с 68000, виртуализация, обработка ошибок шины и поддержка виртуальной памяти. Улучшения для соответствия требованиям Popek и Goldberg.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Модель микропроцессора
Microprocessor model
Различия между 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.
The 68010 and 68012 are completely user mode compatible with the 68000, except that the MOVE from SR instruction traps in user mode, so that, to support user mode code using that instruction, a supervisor mode trap handler must simulate the instruction and continue the user mode code after that instruction. This was done so that the 68010 and 68012 would meet the Popek and Goldberg virtualization requirements, specifically that a new OS could run as guest and not be aware. A new unprivileged MOVE from CCR instruction was added to compensate for the penalty of trapping user mode MOVE from SR. The 68010 and 68012 can recover from bus faults, and continue the faulting instruction, allowing them to implement virtual memory. This means that the exception stack frame is different. A 32 bit Vector Base Register (VBR) holds the base address for the exception vector table. The 68000 vector table was always based at address zero. A "loop mode" accelerates loops consisting of only a "loopable" instruction and a DBcc (Decrement/Branch on condition); an example would be MOVE and DBRA. The two instruction mini loop opcodes are prefetched and held in the 6 byte instruction cache while subsequent memory read/write cycles are only needed for the data operands for the duration of the loop. It provided for performance improvements averaging 50%, as a result of the elimination of instruction opcodes fetching during the loop. The MC68012 variant, in addition to its memory space being extended to 2 GiB, also added a read modify write cycle (RMC) pin, indicating that an indivisible read modify write cycle in progress, in order to help the design of multiprocessor systems with virtual memory. The expansion of the memory space in the 68012 caused an issue for any programs that used the high byte of an address to store data, a programming trick that was successful with those processors that only have a 24 bit address bus (68000 and 68010). A similar problem affected the 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.
The 68010 was never as popular as the 68000. However, due to the 68010's small speed boost over the 68000 and its support for virtual memory, it can be found in a number of smaller Unix systems, both with the 68451 MMU (for example in the Torch Triple X), and with a custom MMU (such as the Sun 2 Workstation, AT&T UNIX PC/3B1, Convergent Technologies MiniFrame, NCR Tower XP, Apollo Computer's DN300 and DN320, and HP 9000 Model 310) and various research machines. Most other vendors (such as Apple Computer) stayed with the 68000 until the 68020 was introduced. Atari Games used the 68010 in some of their arcade boards such as the Atari System 1. Some owners of Amiga and Atari ST computers and Sega Genesis game consoles replaced their system's 68000 CPU with a 68010 to gain a small speed boost. In practice, the overall speed gain over a 68000 at the same frequency is less than 10%. The 68010 could be used with the 68451 MMU. However, aspects of its design, such as its 1 clock memory access penalty, made this configuration unpopular. Some vendors used their own MMU designs, such as Sun Microsystems in their Sun 2 workstation and Convergent Technologies in the AT&T UNIX PC/3B1.