Из 256К - 128К (по крайней мере) это обычная память ZX Spectrum 128K!
Вид для печати
Из 256К - 128К (по крайней мере) это обычная память ZX Spectrum 128K!
ПЛИС. Ибо в современных ПЛИС есть уже мультипликаторы, которые работают внутри на очень больших скоростях.Цитата:
Сообщение от andrews
О! Т.е. половину от АРМового кода уже оттяпана :) Теперь подумай о том, что раз вся память Спектрума у тебя в АРМе сидит, то выходит АРМу надо как-то либо видеосигнал генерировать, либо по прерыванию отрываться от основной работы и выдавать данные текущей отображаемой строки внешнему видеоконтроллеру. И всё это посреди обработки машинного цикла Z80.Цитата:
Сообщение от andrews
Сколько бы инструкций пришлось выбрать z80 ИЗ ПАМЯТИ, программно выполняя умножение. ВСЕ это время он теперь отдыхает, поскольку ARM7 делает это достаточно быстро, чтобы не пропустить обновление кадра. Но замечание существенно, согласен, видеоконтроллер не должен быть еще одним активным устройством системы при такой системной памяти. ARM7 должен сбрасывать в него внутреннюю видеопамять на очередной кадр быстро и целиком.
этого недостаточно! такой умножитель необходимо еще имплантировать в набор команд z80-core и поддержать компилятором. GCC перебирать?Цитата:
Сообщение от icebear
при размере стандартной видеопамяти ZX Spectrum это не должно занять много времени, если есть КПДП тем болееЦитата:
Сообщение от andrews
Ага, т.е. появляется ещё и буфер кадра, который надо заполнять по какому-либо событию (например по деактивации сигнала гашения, ака начало активной области). Теперь берём размер экрана - 6912 байт тебе надо перебросить из внутренней памяти во внешнюю. Железного ДМА у R40008 нет, можно сделать только софтовое на FIQ, т.е. у тебя в лучшем случае понадобится 6912 тактов АРМа для переброски (все подготовки обработчика FIQ здесь опущены). Сколько инструкций Z80 ты пропустишь при этом? Или Z80 будет висеть на /WAIT? Тогда это тормознутый клон будет из всех, который ещё и АРМ имеет на борту. Плюс ты собрался делать манипуляции с содержимым памяти, поворачивать и т.п. , я так понимаю имелась в виду видеопамять? Успеешь? А вот в ПЛИС можно это всё дело действительно распараллелить, что одно другому мешать не будет. И скорость выжать оптимизацией в два раза выше чем у предлагаемого АРМа.Цитата:
Сообщение от andrews
Что значит имплантировать? Расширить систему комманд Z80? Тогда скорость Z80 как такового упадёт. К чему такой изврат? На ПЛИС быстрее получится кстати всё-равно. И опять же, GCC для новых команд тебе придётся "перебирать" и так и так.Цитата:
Сообщение от andrews
если экран не обновлялся - то не надо пересылать...в случае тормозного z80 все равно на время преобразований экран пришлось бы гасить? что мешает поступить так и здесь, но погасить его на значительно меньшее время...Цитата:
Сообщение от icebear
>Что значит имплантировать?
у z80 нет кода инструкции для аппаратного умножения, его необходимо в вашем случае ввести, в моем нет...так как при компиляции в этом месте просто будет код для arm7, а при выполнении, поскольку весь поток команд идет через arm, он будет знать, что эта команда для него и выдавать ее через параллельный порт ее не нужно, перебирать gcc не потребуется...нужен просто хитрый линковщик и компоновщик объектных модулей, вот его придется написать для получения результирующего mixed-code.
Я так понимаю, что всё определяется достаточно простой вещью, а в частности количеством выполненных команд ARM за один такт Z80 (3.5 мГц). Ктонибудь может сказать сколько в текущий момент развития ARM7 (максимально производительный камень) может выдать производительности за такт Z80го? а то я не в курсе ARM процов..