Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Unsorted (http://zx-pk.ru/forumdisplay.php?f=13)
-   -   ZX Yellow Spectrum Lines Computers (http://zx-pk.ru/showthread.php?t=4569)

Raydac 17th January 2007 20:45

Quote:

Originally Posted by heroy
Да не я просто пытался кое что на ARM реалтаймовое для спека написать
в итоге производительности не хватило хотя девайс менее реалтаймовый чем предложенный тут.

Он же написал как собирается обойти этот подводный и очевидный камень.. Z80 с тактовой частотой 500 кГц спасет отца русской демократии

ZEK 17th January 2007 20:52

да это неинтересно :)
А на 3,5 уже туго будет без отладки про 7МГц нереально

andrews 18th January 2007 10:19

Quote:

Originally Posted by heroy
я просто пытался кое что на ARM реалтаймовое для спека написать

как говорится это "кое-что" в студию, plz...по поводу интересно-неинтересно вообще бессмысленно обсуждать...кому неинтересно, а кому и интересно...
по поводу сделать Игорь, начни с себя (про железо)

icebear 18th January 2007 11:55

Quote:

Originally Posted by andrews
как говорится это "кое-что" в студию, plz...

Просмотри ещё разок тему "ARM - процессор Speccy 21 века". Там есть пара убедительных доводов как "за", так и "против". А вообще можно посчитать, сколько у тебя например на один машинный цикл Z80 на определённой частоте уходит тактов АРМа и попробовать по коду влезть в этот промежуток так, что бы АРМ успел обработать состояние Z80.

andrews 18th January 2007 12:27

Все присутствующие здесь инженеры с опытом( я работаю в области Embedded System c 1983 года, начинал на i8080 Intellec MDS Series-II) понимают, что ни за день, ни за неделю новыми для себя технологиями не овладеть. У меня с полгода назад были некоторые эксперименты на ARM7 Philips LPC, купил книжку, установил IDE c GCC Keil, попускал примеры), опыт начальный. Сейчас скачал IAR Embedded Workbench for ARM версию для быстрого старта с ограничением 32K кода. Почему надо каждый день муссировать тему, что "зная Андрея"...Игорь знал меня не в самые лучшие для меня времена и продолжает экстраполировать в будущее. Игорь, это в конце концов дурно, публично заявляю. Я в твой проект не лезу, и желаю тебе всяческих успехов в его реализации. Отчего же ты те же самые методы, которые не нравятся по отношению к твоему проекту со стороны других людей, вовсю используешь здесь? Ты считаешь это честной конкуренцией?

andrews 18th January 2007 12:32

Quote:

Originally Posted by icebear
А вообще можно посчитать, сколько у тебя например на один машинный цикл Z80 на определённой частоте уходит тактов АРМа и попробовать по коду влезть в этот промежуток так, что бы АРМ успел обработать состояние Z80.

я сам отлично понимаю ограничения накладываемые в том числе производительностью...
В то же время мне, например, непонятно, почему критики моего подхода считают, что это просто замена ПЛИС, упуская из вида многие другие позитивные моменты(наличие внутренней статической памяти 256К, мощного 32р. вычислителя, последов. портов и прочее)

icebear 18th January 2007 12:48

Quote:

Originally Posted by andrews
я сам отлично понимаю ограничения накладываемые в том числе производительностью...
В то же время мне, например, непонятно, почему критики моего подхода считают, что это просто замена ПЛИС, упуская из вида многие другие позитивные моменты(наличие внутренней статической памяти 256К, мощного 32р. вычислителя, последов. портов и прочее)

Потому что дешевле и удобнее на ПЛИС такое делать. В тобой поставленой задачи ты получается используешь АРМ "не по назначению". Право естественно твоё, но слежение за шиной и делегация событии от/к Z80 можно легко сделать простой FSM, которая просто кричит о ПЛИС :) При том, зачем тебе 256К в этом случае? Ты как-то собираешься манипулировать данными с шины до доставки их к Z80?

Raydac 18th January 2007 13:08

Quote:

Originally Posted by andrews
Отчего же ты те же самые методы, которые не нравятся по отношению к твоему проекту со стороны других людей, вовсю используешь здесь? Ты считаешь это честной конкуренцией?

По секрету скажу, я вообще конкуренцией не считаю.. что же касается лучших или не лучших времен, то я скорее уговариваю народ быть с тобой помягче, дабы новые начинания не оказались там же где старые, а их скопилось как брошенных грузовиков за баром "веселые сиськи" (это из фильма "от заката до рассвета"). Только за последние два месяца ты начал несколько полномасштабных проектов (судя по записям на данном форуме) и если тебя начнут критиковать, то ты погрязнешь в переписке и ответах и мы так и уйдем на пенсию, не увидев твоих творений..

andrews 18th January 2007 13:42

Quote:

Originally Posted by icebear
Ты как-то собираешься манипулировать данными с шины до доставки их к Z80?

Конечно! Простой пример: повороты на плоскости объектов перед выводом на видеоконтроллер. Кто быстрее их сделает: z80 без уменожения или arm7? В том то и дело, что поскольку у них память общая, и к тому же z80 работает только тогда, когда ARM7 ему это позволяет ( просто за счет асинхронности работы z80 с внешней памяти), то просто не стоит проблема разделения этой общей памяти.

andrews 18th January 2007 13:45

Quote:

Originally Posted by Raydac
Только за последние два месяца ты начал несколько полномасштабных проектов (судя по записям на данном форуме) и если тебя начнут критиковать, то ты погрязнешь в переписке и ответах и мы так и уйдем на пенсию, не увидев твоих творений..

если критика будет неконструктивной, я ее буду просто игнорировать...а насчет пенсии не волнуйся, я кажется никому никаких гарантий не даю и в тендере на поставку компов адептам не участвую...вся эта экзотика, в которую ты меня умудрялся втягивать в 97-99гг. меня больше не имает...я стал мудрым, Игорек!

andrews 18th January 2007 13:47

Из 256К - 128К (по крайней мере) это обычная память ZX Spectrum 128K!

icebear 18th January 2007 14:13

Quote:

Originally Posted by andrews
Конечно! Простой пример: повороты на плоскости объектов перед выводом на видеоконтроллер. Кто быстрее их сделает: z80 без уменожения или arm7?

ПЛИС. Ибо в современных ПЛИС есть уже мультипликаторы, которые работают внутри на очень больших скоростях.

icebear 18th January 2007 14:15

Quote:

Originally Posted by andrews
Из 256К - 128К (по крайней мере) это обычная память ZX Spectrum 128K!

О! Т.е. половину от АРМового кода уже оттяпана :) Теперь подумай о том, что раз вся память Спектрума у тебя в АРМе сидит, то выходит АРМу надо как-то либо видеосигнал генерировать, либо по прерыванию отрываться от основной работы и выдавать данные текущей отображаемой строки внешнему видеоконтроллеру. И всё это посреди обработки машинного цикла Z80.

andrews 18th January 2007 14:32

Сколько бы инструкций пришлось выбрать z80 ИЗ ПАМЯТИ, программно выполняя умножение. ВСЕ это время он теперь отдыхает, поскольку ARM7 делает это достаточно быстро, чтобы не пропустить обновление кадра. Но замечание существенно, согласен, видеоконтроллер не должен быть еще одним активным устройством системы при такой системной памяти. ARM7 должен сбрасывать в него внутреннюю видеопамять на очередной кадр быстро и целиком.

andrews 18th January 2007 14:35

Quote:

Originally Posted by icebear
Ибо в современных ПЛИС есть уже мультипликаторы, которые работают внутри на очень больших скоростях.

этого недостаточно! такой умножитель необходимо еще имплантировать в набор команд z80-core и поддержать компилятором. GCC перебирать?

andrews 18th January 2007 14:37

Quote:

Originally Posted by andrews
внутреннюю видеопамять на очередной кадр быстро и целиком.

при размере стандартной видеопамяти ZX Spectrum это не должно занять много времени, если есть КПДП тем более

icebear 18th January 2007 14:49

Quote:

Originally Posted by andrews
Сколько бы инструкций пришлось выбрать z80 ИЗ ПАМЯТИ, программно выполняя умножение. ВСЕ это время он теперь отдыхает, поскольку ARM7 делает это достаточно быстро, чтобы не пропустить обновление кадра. Но замечание существенно, согласен, видеоконтроллер не должен быть еще одним активным устройством системы при такой системной памяти. ARM7 должен сбрасывать в него внутреннюю видеопамять на очередной кадр быстро и целиком.

Ага, т.е. появляется ещё и буфер кадра, который надо заполнять по какому-либо событию (например по деактивации сигнала гашения, ака начало активной области). Теперь берём размер экрана - 6912 байт тебе надо перебросить из внутренней памяти во внешнюю. Железного ДМА у R40008 нет, можно сделать только софтовое на FIQ, т.е. у тебя в лучшем случае понадобится 6912 тактов АРМа для переброски (все подготовки обработчика FIQ здесь опущены). Сколько инструкций Z80 ты пропустишь при этом? Или Z80 будет висеть на /WAIT? Тогда это тормознутый клон будет из всех, который ещё и АРМ имеет на борту. Плюс ты собрался делать манипуляции с содержимым памяти, поворачивать и т.п. , я так понимаю имелась в виду видеопамять? Успеешь? А вот в ПЛИС можно это всё дело действительно распараллелить, что одно другому мешать не будет. И скорость выжать оптимизацией в два раза выше чем у предлагаемого АРМа.

icebear 18th January 2007 14:50

Quote:

Originally Posted by andrews
этого недостаточно! такой умножитель необходимо еще имплантировать в набор команд z80-core и поддержать компилятором. GCC перебирать?

Что значит имплантировать? Расширить систему комманд Z80? Тогда скорость Z80 как такового упадёт. К чему такой изврат? На ПЛИС быстрее получится кстати всё-равно. И опять же, GCC для новых команд тебе придётся "перебирать" и так и так.

andrews 18th January 2007 15:18

Quote:

Originally Posted by icebear
Сколько инструкций Z80 ты пропустишь при этом?

если экран не обновлялся - то не надо пересылать...в случае тормозного z80 все равно на время преобразований экран пришлось бы гасить? что мешает поступить так и здесь, но погасить его на значительно меньшее время...
>Что значит имплантировать?
у z80 нет кода инструкции для аппаратного умножения, его необходимо в вашем случае ввести, в моем нет...так как при компиляции в этом месте просто будет код для arm7, а при выполнении, поскольку весь поток команд идет через arm, он будет знать, что эта команда для него и выдавать ее через параллельный порт ее не нужно, перебирать gcc не потребуется...нужен просто хитрый линковщик и компоновщик объектных модулей, вот его придется написать для получения результирующего mixed-code.

Raydac 18th January 2007 15:30

Я так понимаю, что всё определяется достаточно простой вещью, а в частности количеством выполненных команд ARM за один такт Z80 (3.5 мГц). Ктонибудь может сказать сколько в текущий момент развития ARM7 (максимально производительный камень) может выдать производительности за такт Z80го? а то я не в курсе ARM процов..

ZEK 18th January 2007 15:51

Quote:

Originally Posted by andrews
при размере стандартной видеопамяти ZX Spectrum это не должно занять много времени, если есть КПДП тем более

Ты уже написал тут и для ARM9 на 200MIPS будет не скучно

Quote:

Originally Posted by icebear
можно сделать только софтовое на FIQ

ARM7 в FIQ входит тока за 24 такта ядра (1,5 такта процессора Z80) а еще пересылка то есть в секунду уходит тока 8 милионов тактов ядра тока на вход в прерывания

И еще не забывай что у ARM каждый переход это 3 штрафных такта, а код того что ты описываеш линейностью не пахнет

andrews 18th January 2007 16:04

Quote:

Originally Posted by Raydac
ARM7 (максимально производительный камень) может выдать производительности за такт Z80го?

а они унифицированы (ядра CPU) так что дели MHZ и умножай на 2...но это бессмысленное сравнение, т.к. ARM7 не PIC, у него не все команды выполняются за 1 такт

andrews 18th January 2007 16:07

То есть для 66MHz и 3,5MHZ самая быстрая команда ARM выполняется в 37,7 быстрее...это типа 486DX66

icebear 18th January 2007 16:15

Quote:

Originally Posted by andrews
если экран не обновлялся - то не надо пересылать...

Оттого и событие (прерывание, если так удобнее). При этом придётся так же

Quote:

Originally Posted by andrews
в случае тормозного z80 все равно на время преобразований экран пришлось бы гасить? что мешает поступить так и здесь, но погасить его на значительно меньшее время...

Почему гасить? Что ты имеешь в виду под гасить?

Quote:

Originally Posted by andrews
>Что значит имплантировать?
у z80 нет кода инструкции для аппаратного умножения, его необходимо в вашем случае ввести, в моем нет...так как при компиляции в этом месте просто будет код для arm7, а при выполнении, поскольку весь поток команд идет через arm, он будет знать, что эта команда для него и выдавать ее через параллельный порт ее не нужно, перебирать gcc не потребуется...нужен просто хитрый линковщик и компоновщик объектных модулей, вот его придется написать для получения результирующего mixed-code.

Ага! Осталось только весь gcc научить понимать дополнительно Z80 асемблер + научить отличать его от ARM кода. Стоит овчинка выделки?

icebear 18th January 2007 16:17

Quote:

Originally Posted by andrews
а они унифицированы (ядра CPU) так что дели MHZ и умножай на 2...но это бессмысленное сравнение, т.к. ARM7 не PIC, у него не все команды выполняются за 1 такт

С коих пор PIC выполняет команды за один такт?

andrews 18th January 2007 16:37

Quote:

Originally Posted by icebear
Почему гасить?

ну пропускать кадры...так здесь аналогично, только полюбому меньше затормозит
Quote:

Originally Posted by icebear
Осталось только весь gcc научить понимать дополнительно Z80 асемблер

а это зачем?
исходник пропускаешь сперва с ключом -arm7,
затем с ключом -z80
А остальное на условной компиляции, а можно автоматизировать, пропуская через анализатор кода, который знает, какие операции у z80 тормозные.
Я ж говорю, линковщик хитрый нужен.
Quote:

Originally Posted by icebear
С коих пор PIC выполняет команды за один такт?

ну за два...кроме команд перехода и еще чего-то там...подразумевалось, что у ARM команды отличаются большим различием по времени выполнения

andrews 18th January 2007 16:42

"Хитрость" линковщика заключается именно в организации mixed-потока кода инструкций...по несуществующим командам у ARM7 произойдет "исключение" а там вступит в силу кусок кода, поддерживающий выполнение на z80. Туманно, потому как это я еще не совсем придумал как сделать, здесь много вариантов.

andrews 18th January 2007 16:59

Вот, быть может один из вариантов mixed code stream:

код ARM7...код несуществующей команды ARM7,код Z80...RST ?, код ARM7... и т.д.

Если бы у z80 была обработка несуществующих команд, или есть, че то я не помню.

icebear 18th January 2007 17:02

Quote:

Originally Posted by andrews
ну пропускать кадры...так здесь аналогично, только полюбому меньше затормозит

Демомейкеры и сочуствующие порвут :)

Quote:

Originally Posted by andrews
а это зачем?
исходник пропускаешь сперва с ключом -arm7,
затем с ключом -z80
А остальное на условной компиляции, а можно автоматизировать, пропуская через анализатор кода, который знает, какие операции у z80 тормозные.
Я ж говорю, линковщик хитрый нужен.

? Чего-то фигня какая-то. У тебя после всех компиляций прошивка получается, бинарная, которую ты скармливаешь АРМу. О каком смешаном коде речь идёт? Как ты в рантайм скажешь АРМу "а вот теперь это не твой код, а твоего подопечного, посему отдавай просто так как есть и не исполняй его"?

Quote:

Originally Posted by andrews
ну за два...кроме команд перехода и еще чего-то там...подразумевалось, что у ARM команды отличаются большим различием по времени выполнения

За два, не за четыре? Что имеется в виду под большим различием по времени выполнения? Как раз у АРМа можно все команды считать однотактными.

icebear 18th January 2007 17:04

Quote:

Originally Posted by andrews
Вот, быть может один из вариантов mixed code stream:

код ARM7...код несуществующей команды ARM7,код Z80...RST ?, код ARM7... и т.д.

Т.е. это по-моему софтовые прерывания АРМа будут юзатся (исключительная ситуация). Быстро не получится.

Quote:

Originally Posted by andrews
Если бы у z80 была обработка несуществующих команд, или есть, че то я не помню.

У Z180 есть например, но как-то сложно. Вроде в eZ80 было что-то более продвинутое в Z80-линейке.

andrews 18th January 2007 17:24

"Обычная обработка данных 1s;
Обработка данных с числом сдвигов, указанных в регистре 1s+1i;
Обработка данных с записью в регистр PC 2s+1n;
Обработка данных с числом сдвигов, указанных в регистре, и с записью в регистр PC 2s+1N+1i;"
цитируется по "Обзор системы команд ARM7"

andrews 18th January 2007 17:26

В общем сравнение производительности с z80 это отдельная проблема.

andrews 18th January 2007 17:28

Quote:

Originally Posted by icebear
Демомейкеры и сочуствующие порвут

зато геймеры одобрят :)

andrews 18th January 2007 17:38

Кстати, исходники эмулятора ARM7 в инете нигде не лежат?

ZEK 18th January 2007 17:50

Quote:

Originally Posted by andrews
Обработка данных с числом сдвигов, указанных в регистре, и с записью в регистр PC 2s+1N+1i;"

Все кроме N иогут быть 0, зависит от операндов

icebear 18th January 2007 17:51

Quote:

Originally Posted by andrews
Кстати, исходники эмулятора ARM7 в инете нигде не лежат?

Есть такой пакет под названием Proteus, он тебе зело должен понравится. Там есть симулятор под названием VSim, почитай вот здесь http://www.labcenter.co.uk/index_uk.htm

ZEK 18th January 2007 18:10

Quote:

Originally Posted by andrews
Кстати, исходники эмулятора ARM7 в инете нигде не лежат?

Sourceforge.net

andrews 25th January 2007 11:28

Нашлись в исходниках:
Simlt-ARM, Generator ARM, The Amsterdam Compiler Kit.
Но пока до эмулятора ZX Yellow Lines Spectrum еще далеко, больше интересовал готовы инструментарий для
разработки. Хотел было юзать IAR Embedded Workbench for ARM, но спецы с Телесисов уговорили перебраться на Keil, благо я с ним баловался на LPC, откомпилял вчера на ночь глядя моргалку битом порта...железа нет...симулятор моргает :)

andrews 25th January 2007 12:34

Quote:

Originally Posted by andrews
железа нет

я вообще теперь хотел бы инициировать здесь обсуждение схемы включения...чтобы был предметный разговор, скачайте себе файл doc1354.pdf с www.atmel.com или какой-то другой, где есть "раскопытка" чипа AT91R40008

andrews 25th January 2007 13:49

Quote:

Originally Posted by andrews
обсуждение схемы включения

это нужно для программирования...хотелось бы обсудить
1) межсоединения z80 - AT91R40008(ясно что шину данных можно включить непосредственно, со всеми другими соединениями возможны варианты);
2) выбор внешних устройств для EBI (может быть до 8 внешн.
устройств, поскольку чип обеспечивает до 8 Chip Select-ов, включая внешнюю память, видеоконтроллер, A26...ЧТО еще?) и размера страниц Programmable Page Size 1,4,16,64 MBytes.


All times are GMT +4. The time now is 17:39.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.