ASCII R800

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Микропроцессор R800

ASCII R800 — частично 16-разрядный микропроцессор, разработанный компанией ASCII на основе Zilog Z800 и производимый ею специально для бытовых компьютеров стандарта MSX Turbo R. Основной целью создания процессора было получение максимальной производительности при сохранении обратной совместимости со старым программным и аппаратным обеспечением компьютеров стандарта MSX, использующих микропроцессор Zilog Z80.

Для сохранения программной совместимости со старым программным обеспечением MSX, R800 использует расширенную систему команд процессора Z80. В обычный набор команд Z80 добавлены операции аппаратного умножения — MULUB (8-разрядное), и MULUW (16-разрядное). Также, многие из недокументированных возможностей Z80 сделаны официальными, например, операции с 8-разрядными половинами индексных регистровых пар (IXh, IXl, IYh, IYl).

R800 является развитием процессоров Z800 (16-разрядные микропроцессоры совместимые с Z80), но в нём отсутствуют некоторые недокументированные возможности Z80. Например, состояние бит 3 и 4 флагового регистра F не соответствует состоянию этих бит для процессора Z80 (что приводит к непрохождению R800 теста ZEXALL). Также, недокументированная команда, обычно называемая SLL, заменена другой командой — TST, также недокументированной.

Значительные изменения произошли с аппаратной стороны. Внутреннее 8-разрядное АЛУ процессора было заменено новым, 16-разрядным. Операции типа ADD HL,BC (сложение регистровых пар), выполнение которых ранее требовало 11 тактов, при определённых условиях могут выполняться на R800 за один такт. Максимальная тактовая частота повышена до 7.16 МГц, это вдвое больше по сравнению со стандартной частотой 3.57 МГц, на которой работал процессор Z80 в компьютерах MSX. Шина данных осталась 8-разрядной, для сохранения совместимости со старым аппаратным обеспечением.

Дополнительные изменения были произведены в механизме выборки кода операции. Оригинальный Z80 использует 4 такта для выборки кода простых команд, типа OR A, в компьютерах MSX также добавляется один такт ожидания из-за особенностей их архитектуры. Механизм выборки для Z80 в типичном окружении MSX выглядит следующим образом:

  • Z80, такт 1: установка старших 8 разрядов текущего адреса выполнения
  • Z80, такт 2: установка младших 8 разрядов текущего адреса выполнения
  • Z80, такт 3: такт ожидания
  • Z80, такт 4: выборка кода команды, часть 1
  • Z80, такт 5: выборка кода команды, часть 2

Так как большинство реализаций ОЗУ в компьютерах MSX имеют организацию в виде блока 256 x 256 байт, на установку адреса команды затрачивается два такта. R800 запоминает состояние старших 8 разрядов адреса, что позволяет экономить один такт в случае, если адрес следующей команды не пересекает границу 256-байтного блока. Однако, на процессоре Z80 значения старших 8 разрядов адреса теряются в процессе регенерации ОЗУ, что также требует решения.

Решение, применённое на R800, представляет собой использование регенерации целых блоков ОЗУ, вместо регенерации одной строки при выполнении каждой инструкции. Каждые 30 микросекунд происходит останов процессора на 4 микросекунды, в течение которых выполняется регенерация блока ОЗУ. В этом случае не требуется выполнения процесса регенерации при обработке каждой команды. За счёт этого, а также из-за использования более быстродействующего ОЗУ, не требующего введения такта ожидания, простые команды могут выполняться всего за один такт. Однако, такое быстродействие может быть получено только при выполнении программы в ОЗУ компьютеров MSX Turbo R. Все обращения к внешней аппаратуре, например к устройствам, подключённым к слотам картриджа, требуют столько же времени, сколько и для процессора Z80. ПЗУ, используемое в Turbo R, также не обладает достаточным быстродействием для реализации подобной схемы выборки инструкций, поэтому, для повышения скорости выполнения кода из ПЗУ, его содержимое с помощью дополнительной аппаратуры Turbo R копируется в ОЗУ.