Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
R800

R800 представляет собой центральный блок обработки данных, используемый в MSX Turbo-R домашнего компьютера . R800 был разработан ASCII Corporation в Японии и построен Mitsui & Co., Ltd. . Целью было создание современного и конвейерного двоичного кода ЦП, совместимого с Z80 и, следовательно, с программным обеспечением MSX, при сохранении совместимости со старым оборудованием на базе MSX Z80 .

Совместимость [ править ]

При разработке MSX Turbo R корпорация ASCII рассматривала в качестве кандидатов различные процессоры, как совместимые, так и несовместимые с Z80. В то время Кадзуя Кишиока (岸 岡 和 也) , сотрудник компании, исследовал и разрабатывал ASIC, который был высокоскоростной версией Z80 и в значительной степени адаптирован для архитектуры MSX. [1]

Для программной совместимости со старым программным обеспечением MSX R800 использует тот же набор инструкций, что и Z80, с небольшими, но полезными дополнениями, такими как 8x8-битные и 16x16-битные инструкции умножения, называемые MULUB ( 8-бит ) и MULUW ( 16- бит ). Кроме того, многие из недокументированных инструкций Z80 стали официальными, включая все коды операций для инструкций, относящихся к IX и IY как 8-битные регистры (IXH, IXL, IYH, IYL).

Поскольку R800 не основан непосредственно на Z80, а принадлежит к семейству Z800 , в нем отсутствуют некоторые другие недокументированные функции Z80. Например, недокументированные флаги, представленные в битах 3 и 5 регистра F, не принимают тех же значений, что и в Z80 (что приводит к сбою тестов ZEXALL ), а недокументированный код операции, часто называемый SLL, является просто псевдонимом инструкции SLA.

Изменения оборудования [ править ]

Будучи гораздо более новым дизайном, реализация R800, конечно же, сильно отличалась от старого Z80. Изменения были аналогичны линейкам Z800 , Z280 , Z380 и eZ80 процессоров, совместимых с Z80. Оригинальный Z80 использует необычное 4-битное оборудование ALU внутри [2], решение, фактически способное конкурировать с аналогичными процессорами, использующими полностью зашитую 8-битную логику ALU (например, его непосредственный предшественник, Intel 8080 [3] ). Однако разработчики R800 реализовали полноценный 16-битный ALU.чтобы не отставать от его более конвейерного исполнения. Такие команды, как ADD HL, BC, которые занимают 11 тактов на Z80, в некоторых ситуациях могут выполняться всего за один цикл шины (1-2 такта) на R800 из-за степени конвейерной обработки, которая стала возможной благодаря этому ALU полной ширины. Максимальная тактовая частота процессора, используемая в этом новом MSX, составляла 14,32 МГц - в четыре раза быстрее, чем исходная частота 3,57 МГц, используемая в более старом MSX, в то время как частота шины была увеличена до 7,16 МГц. Шина данных остается 8 бит для совместимости со старым оборудованием.

Получение кодов операций [ править ]

Дополнительные изменения были внесены в способ получения кодов операций ЦП . Исходный Z80 использует два цикла для выборки простой инструкции, такой как OR A, плюс два цикла для обновления. В архитектуре MSX выдается дополнительное состояние ожидания. Обзор механизма выборки в типичной среде MSX помогает объяснить R800:

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

Поскольку в большинстве реализаций MSX используется оперативная память, расположенная в блоке 256 × 256 байт, для установки адреса выборки требуется два цикла. R800 избегает этого, запоминая последнее известное состояние старших 8-ми битов. Если следующая инструкция находится в тех же 256-байтовых границах, старшие 8-биты не устанавливаются, и цикл сохраняется. Однако на Z80 циклы обновления уничтожают информацию о старших битах, поэтому потребовалось обходное решение. [4]

Решение, используемое в R800, заключалось в обновлении целых блоков ОЗУ вместо обновления одной строки ОЗУ при каждой выданной инструкции. Каждые 30 мкс ЦП останавливается на 4 мкс, на этот раз используется для обновления блока ОЗУ. Поскольку между командами выборки не происходит обновления, а состояние ожидания удаляется из-за более быстрых микросхем ОЗУ, простые инструкции могут быть выполнены с использованием только одного цикла. Этот цикл будет циклом 2 в приведенном выше примере Z80; цикл 1 становится необязательным и выдается только тогда, когда программа пересекает 256-байтовую границу.

Внешнее оборудование [ править ]

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

Ссылки [ править ]

  1. ^ "MSXturboR 開 発 秘 話" [история разработки MSXturboR]. MSX マ ガ ジ ン(на японском языке). Ноябрь 1990 г. с. 70.
  2. ^ http://www.righto.com/2013/09/the-z-80-has-4-bit-alu-heres-how-it.html
  3. ^ 8080 был разработан теми же дизайнерами (Фаггин и Шима, затем в Intel) и использовал простой 8-битный ALU. Более поздняя реализация 4-битного ALU в Z80 была предназначена для того, чтобы сделать Z80 существенно отличным от конструкции 8080, что позволило избежать судебного иска со стороны Intel. Производительность не сильно пострадала: для 16-битных инструкций потребовалось 11 циклов по сравнению с 10 на 8080. 8-битные инструкции фактически стали быстрее: на 4 цикла по сравнению с 5 на 8080. (Вместе с примерным удвоением тактовой частоты, что дало Z80 значительное преимущество над 8080.)
  4. ^ https://www.msx.org/wiki/R800

Дальнейшее чтение [ править ]