ASCII 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, также недокументированной.
Значительные изменения произошли с аппаратной стороны. Внутреннее 4-разрядное[1] АЛУ процессора было заменено новым, 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 копируется в ОЗУ.
Примечания
- ↑ The Z-80 has a 4-bit ALU. Here's how it works. Дата обращения: 24 декабря 2018. Архивировано 9 сентября 2013 года.
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.