Заточка NextZ80
Заточка NextZ80
Обсуждение по доработке напильником NextZ80
todo, идеи:
+1. Добавить режим, что бы сабж мог работать медленннно, длительность инструкций в тактах равна длительности оных в Z80
+2. Нарисовать тестбенч для сравнения с t80
+3. Перенести ждалку (логику останавливающую проц, в корку)
+4. Провести функциональную верификацию
5. Провести верификацию с таймингами какого нить fpga
6. ??
7. ??
...
23. 16 битная шина данных
24. Кеш одного слова (инвалидация?)
25. Стековые операции по 2 байта, по выравненным адресам, сделать что бы писало/читало за один такт
...
50. Реализовать эталонное поведение битов 3,5 в регистре флагов
...
90. Поднять частоту, что бы при выполнении пункта 100, частота вернулась к исходному значению
91. Заменить STAGE с регистр+сумматор, на сдвиговый регистр
...
100. Допилить до совместимости с Rabbit 2000 или EZ80, первое реальней, второе интересней
Исходники тут:
http://tsl-fpga.googlecode.com/hg/cpu/nextz80/
todo, идеи:
+1. Добавить режим, что бы сабж мог работать медленннно, длительность инструкций в тактах равна длительности оных в Z80
+2. Нарисовать тестбенч для сравнения с t80
+3. Перенести ждалку (логику останавливающую проц, в корку)
+4. Провести функциональную верификацию
5. Провести верификацию с таймингами какого нить fpga
6. ??
7. ??
...
23. 16 битная шина данных
24. Кеш одного слова (инвалидация?)
25. Стековые операции по 2 байта, по выравненным адресам, сделать что бы писало/читало за один такт
...
50. Реализовать эталонное поведение битов 3,5 в регистре флагов
...
90. Поднять частоту, что бы при выполнении пункта 100, частота вернулась к исходному значению
91. Заменить STAGE с регистр+сумматор, на сдвиговый регистр
...
100. Допилить до совместимости с Rabbit 2000 или EZ80, первое реальней, второе интересней
Исходники тут:
http://tsl-fpga.googlecode.com/hg/cpu/nextz80/
Последний раз редактировалось ZEK Пт, 10.01.2014 18:12:05, всего редактировалось 10 раз.
KOE сказал заработает, значит заработает. Он кандидат наук, а не радиолюбитель. (c) alone
Re: Заточка NextZ80
NextZ80 - однотактовая корка зетника. В среднем в 3.8 раза продуктивнее з80 на той же частоте.
Re: Заточка NextZ80
Ложу первую альфа версию в первое сообщение, надо к ней тестбенч сообразить, что бы в паре работали t80 и NextZ80, выполняли одновременно один и тот же код, проверка на такты
Первая версия выдает в последнем цикле исполнения, количество тактов, на которое проц надо остановить, что бы выровнять по таймингам
Первая версия выдает в последнем цикле исполнения, количество тактов, на которое проц надо остановить, что бы выровнять по таймингам
KOE сказал заработает, значит заработает. Он кандидат наук, а не радиолюбитель. (c) alone
Re: Заточка NextZ80
ZEK, а для чего оно (переделка) вообще глобально?
Как я понимаю, это всё для U**?
Ведь если нам нужен другой проц, мы его и зальём в FPGA? Не так же часто нам придётся переключаться?
Чем отличается кролик от z80?
Можно поподробнее о п.90? Что куда вернётся? Ведь у EZ80 АФАИК пятиступенчатый конвейер? Как с этим у nextz80?
И просвети неуча по п.91, что за STAGE?
Как я понимаю, это всё для U**?
Ведь если нам нужен другой проц, мы его и зальём в FPGA? Не так же часто нам придётся переключаться?
Чем отличается кролик от z80?
Можно поподробнее о п.90? Что куда вернётся? Ведь у EZ80 АФАИК пятиступенчатый конвейер? Как с этим у nextz80?
И просвети неуча по п.91, что за STAGE?
Re: Заточка NextZ80
1. Что бы для демок не добавлять еще одну корку типа T80, по ресурсам меньше места
2. Корка проца универсальная
3. Заливать это сбрасывать комп с потерей содержимого памяти
4. Больше команд, есть хорошие ld IX, (SP+5), заточка под Си
5. При усложнении схемы, как правило частота падает, ez80 3х ступечнатый конвеер, nextz80 без конвеера
6. Регистр в корке, влияет на скорость декодера команд
---
Диаграмка NextZ80 паралельно с T80 выполняет один и тот же код
на фото циклы M1 и адреса
---
1,2,3 пункты в базовом варианте выполнены
добавил 4, 5 пункт
И да, свежий сырок + тестбенч + проект под Active-HDL
2. Корка проца универсальная
3. Заливать это сбрасывать комп с потерей содержимого памяти
4. Больше команд, есть хорошие ld IX, (SP+5), заточка под Си
5. При усложнении схемы, как правило частота падает, ez80 3х ступечнатый конвеер, nextz80 без конвеера
6. Регистр в корке, влияет на скорость декодера команд
---
Диаграмка NextZ80 паралельно с T80 выполняет один и тот же код
на фото циклы M1 и адреса
---
1,2,3 пункты в базовом варианте выполнены
добавил 4, 5 пункт
И да, свежий сырок + тестбенч + проект под Active-HDL
- Вложения
-
- NextZ80.zip
- (83.7 КБ) 991 скачивание
Последний раз редактировалось ZEK Пт, 03.01.2014 20:51:46, всего редактировалось 1 раз.
KOE сказал заработает, значит заработает. Он кандидат наук, а не радиолюбитель. (c) alone
Re: Заточка NextZ80
Закинул в репку.
---
zek, держи циклы обработки ИНТа:
https://dl.dropboxusercontent.com/u/317 ... DL/im0.png
https://dl.dropboxusercontent.com/u/317 ... DL/im1.png
https://dl.dropboxusercontent.com/u/317 ... DL/im2.png
(им0 и им1 не различаются.)
---
zek, держи циклы обработки ИНТа:
https://dl.dropboxusercontent.com/u/317 ... DL/im0.png
https://dl.dropboxusercontent.com/u/317 ... DL/im1.png
https://dl.dropboxusercontent.com/u/317 ... DL/im2.png
(им0 и им1 не различаются.)
Re: Заточка NextZ80
Новая версия:
1. написал тест простой, которые все инструкции проца исполняет, для сверки таймингов
2. в функциональной симуляции тайминги сошлись
3. Сейчас в тестбенче NextZ80 в режиме Fast, в TB модуле есть переключался FMODE
1. написал тест простой, которые все инструкции проца исполняет, для сверки таймингов
2. в функциональной симуляции тайминги сошлись
3. Сейчас в тестбенче NextZ80 в режиме Fast, в TB модуле есть переключался FMODE
- Вложения
-
- NZ80.zip
- (411.12 КБ) 990 скачиваний
KOE сказал заработает, значит заработает. Он кандидат наук, а не радиолюбитель. (c) alone
Re: Заточка NextZ80
по поводу п.2 в первом сообщении: http://zx.pk.ru/showpost.php?p=599660&postcount=869
сырки из поста прикрепил, находятся в папке ROM
была идея задействовать часы - но как то руки не дошли.
сырки из поста прикрепил, находятся в папке ROM
была идея задействовать часы - но как то руки не дошли.
- Вложения
-
- u8_test_copy_v2.zip
- (864.51 КБ) 1035 скачиваний
Re: Заточка NextZ80
ZEK, по поводу fetch, думаю можно распараллелить дешифратор команд, т.е. уйти от каскадного case, уменьшить задержку дешифрации используя простую логику сравнения отдельно для групп команд, как например здесь
Re: Заточка NextZ80
да там таких групп будет 3-4 слоя, то на то и выйдет
первый декод, потом исключения для inc (hl), потом префиксы итд, делал, огород не намного меньше
надо не частоту а производительность на такт увеличивать, раза в 2-3 можно, если смотреть на код sdcc то раз в 6
первый декод, потом исключения для inc (hl), потом префиксы итд, делал, огород не намного меньше
надо не частоту а производительность на такт увеличивать, раза в 2-3 можно, если смотреть на код sdcc то раз в 6

KOE сказал заработает, значит заработает. Он кандидат наук, а не радиолюбитель. (c) alone
Re: Заточка NextZ80
согласен, для начала достаточно NextZ80 на 3.5-14МГц с кэш. Как думаешь, есть ли смысл замены проца в ts-conf на NextZ80? Знаю, что на железе ZX-Evo, это невозможно реализовать, по этому всё стало, и это в разы тормозит и ограничивает разработчиков в своем хобби, тут вопрос скорее на - а если?
Re: Заточка NextZ80
Я вот всерьёз подумываю выучить язык глухонемых. И постить ответы в тему про некстз80 буду в виде картинок из жестов.
Re: Заточка NextZ80
TS-Labs писал(а):Я вот всерьёз подумываю выучить язык глухонемых. И постить ответы в тему про некстз80 буду в виде картинок из жестов.
Начни с Брайля. Я что-то пропустил?
Re: Заточка NextZ80
MVV писал(а):Я что-то пропустил?
Походу наверное все, что я писал. Сколько раз я уже писал, что сабж есть проц для 0-тактовой памяти, т.е. юзабельность некстз80 в реальных системах никакая. Он годится только для тестбенчей. Итого, к нему либо прикручивается конвеер, либо кеш который будет чуть ли не частью ядра на регистрах (ибо памяти в циклонах клоковые), либо фтопку его целиком, а пишется новое ядро с конвеером и мульонов блоков дешифрации и исполнения.
По новому ядру концепты следующие:
1. Фетчить по 32 бита на этапе фетчера. По мере исполнения команд сдвигать опкодерный буфер на нужное кол-во байт, соответствующее длине выполненной команды. Недостающее подтягивать. (Так делают STM8/32, Xtensa, например.)
2. Дешифровать сразу всю инструкцию целиком, включая префиксы. На индексные префиксы требуется отдельный такт дешифратора, ибо их можно напихать тысячи, по типу DD DD DD 21 00 00.
3. АЛУ сразу 16 бит.
4. Модуль райтбэк записи.
Профиты:
- реально современная конвеерная архитектура,
- высокая частота за счет конвееризации,
- высокая производительность за счет широких шин,
- потенциальная возможность суперскаляра, если пилятору хватит умений и альтеры.
Минусы: можно забыть не только про потактовую совместимость, но и про кодовую. Самомодифицирующийся код работать не будет, например.
Re: Заточка NextZ80
TS-Labs писал(а):Самомодифицирующийся код работать не будет
это неправильно. такой код должен просто всё тормозить, но не неработать.
однако, вы забыли главное: нужен релиз в асик, иначе ... я уже забыл, что там говорил рупор.
Re: Заточка NextZ80
TS-Labs писал(а):юзабельность некстз80 в реальных системах никакая. Он годится только для тестбенчей.
Да, ладно. Вот взять как наглядный пример nextzx, проц на 42МГц (в 42 раза быстрее чем на zx-evo) работает в 64К (назовем её страницей кэш, подобной как раньше 16-32К кэш на SRAM). Даже если просто привязать один только nextZ80 14МГц (а можно ведь и два проца) к SDRAM без ожидания (память успевает), то комп уже сразу в 3.5 раза будет быстрее бегать чем zx-evo, а это существенный выигрыш для игр.
Последний раз редактировалось MVV Пн, 21.03.2016 16:13:32, всего редактировалось 2 раза.
Re: Заточка NextZ80
Ну а если ты выкинешь ожидание памяти в том же цикле, что и дешифратор, а это походу почти всегда единственный цикл для некста, то частота станет 60МГц.