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