Page 1 of 1

Заточка NextZ80

PostPosted: Thu, 26.12.2013 16:19:07
by ZEK
Обсуждение по доработке напильником 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/

Re: Заточка NextZ80

PostPosted: Thu, 26.12.2013 16:33:08
by g0blinish
простите мою серость, но что таке NextZ80?777

Re: Заточка NextZ80

PostPosted: Thu, 26.12.2013 16:34:45
by TS-Labs
NextZ80 - однотактовая корка зетника. В среднем в 3.8 раза продуктивнее з80 на той же частоте.

Re: Заточка NextZ80

PostPosted: Thu, 26.12.2013 16:38:36
by ZEK
Ложу первую альфа версию в первое сообщение, надо к ней тестбенч сообразить, что бы в паре работали t80 и NextZ80, выполняли одновременно один и тот же код, проверка на такты

Первая версия выдает в последнем цикле исполнения, количество тактов, на которое проц надо остановить, что бы выровнять по таймингам

Re: Заточка NextZ80

PostPosted: Thu, 26.12.2013 17:47:41
by TS-Labs

Re: Заточка NextZ80

PostPosted: Thu, 26.12.2013 19:58:52
by NovaSTorm
ZEK, а для чего оно (переделка) вообще глобально?
Как я понимаю, это всё для U**?
Ведь если нам нужен другой проц, мы его и зальём в FPGA? Не так же часто нам придётся переключаться?
Чем отличается кролик от z80?
Можно поподробнее о п.90? Что куда вернётся? Ведь у EZ80 АФАИК пятиступенчатый конвейер? Как с этим у nextz80?
И просвети неуча по п.91, что за STAGE?

Re: Заточка NextZ80

PostPosted: Thu, 26.12.2013 20:59:34
by ZEK
1. Что бы для демок не добавлять еще одну корку типа T80, по ресурсам меньше места
2. Корка проца универсальная
3. Заливать это сбрасывать комп с потерей содержимого памяти
4. Больше команд, есть хорошие ld IX, (SP+5), заточка под Си
5. При усложнении схемы, как правило частота падает, ez80 3х ступечнатый конвеер, nextz80 без конвеера
6. Регистр в корке, влияет на скорость декодера команд

---

Диаграмка NextZ80 паралельно с T80 выполняет один и тот же код
на фото циклы M1 и адреса

---

1,2,3 пункты в базовом варианте выполнены
добавил 4, 5 пункт

И да, свежий сырок + тестбенч + проект под Active-HDL

Re: Заточка NextZ80

PostPosted: Fri, 03.01.2014 17:38:31
by TS-Labs
Закинул в репку.

---

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

PostPosted: Fri, 10.01.2014 18:11:08
by ZEK
Новая версия:
1. написал тест простой, которые все инструкции проца исполняет, для сверки таймингов
2. в функциональной симуляции тайминги сошлись
3. Сейчас в тестбенче NextZ80 в режиме Fast, в TB модуле есть переключался FMODE

Re: Заточка NextZ80

PostPosted: Fri, 02.05.2014 07:47:34
by shurik-ua
по поводу п.2 в первом сообщении: http://zx.pk.ru/showpost.php?p=599660&postcount=869
сырки из поста прикрепил, находятся в папке ROM
была идея задействовать часы - но как то руки не дошли.

Re: Заточка NextZ80

PostPosted: Sun, 20.03.2016 13:18:32
by MVV
ZEK, по поводу fetch, думаю можно распараллелить дешифратор команд, т.е. уйти от каскадного case, уменьшить задержку дешифрации используя простую логику сравнения отдельно для групп команд, как например здесь

Re: Заточка NextZ80

PostPosted: Sun, 20.03.2016 17:10:10
by ZEK
да там таких групп будет 3-4 слоя, то на то и выйдет
первый декод, потом исключения для inc (hl), потом префиксы итд, делал, огород не намного меньше

надо не частоту а производительность на такт увеличивать, раза в 2-3 можно, если смотреть на код sdcc то раз в 6 :)

Re: Заточка NextZ80

PostPosted: Sun, 20.03.2016 18:20:50
by MVV
согласен, для начала достаточно NextZ80 на 3.5-14МГц с кэш. Как думаешь, есть ли смысл замены проца в ts-conf на NextZ80? Знаю, что на железе ZX-Evo, это невозможно реализовать, по этому всё стало, и это в разы тормозит и ограничивает разработчиков в своем хобби, тут вопрос скорее на - а если?

Re: Заточка NextZ80

PostPosted: Sun, 20.03.2016 18:52:40
by TS-Labs
Я вот всерьёз подумываю выучить язык глухонемых. И постить ответы в тему про некстз80 буду в виде картинок из жестов.

Re: Заточка NextZ80

PostPosted: Sun, 20.03.2016 19:20:56
by MVV
TS-Labs wrote:Я вот всерьёз подумываю выучить язык глухонемых. И постить ответы в тему про некстз80 буду в виде картинок из жестов.

Начни с Брайля. Я что-то пропустил?

Re: Заточка NextZ80

PostPosted: Sun, 20.03.2016 20:13:27
by TS-Labs
MVV wrote:Я что-то пропустил?

Походу наверное все, что я писал. Сколько раз я уже писал, что сабж есть проц для 0-тактовой памяти, т.е. юзабельность некстз80 в реальных системах никакая. Он годится только для тестбенчей. Итого, к нему либо прикручивается конвеер, либо кеш который будет чуть ли не частью ядра на регистрах (ибо памяти в циклонах клоковые), либо фтопку его целиком, а пишется новое ядро с конвеером и мульонов блоков дешифрации и исполнения.

По новому ядру концепты следующие:
1. Фетчить по 32 бита на этапе фетчера. По мере исполнения команд сдвигать опкодерный буфер на нужное кол-во байт, соответствующее длине выполненной команды. Недостающее подтягивать. (Так делают STM8/32, Xtensa, например.)
2. Дешифровать сразу всю инструкцию целиком, включая префиксы. На индексные префиксы требуется отдельный такт дешифратора, ибо их можно напихать тысячи, по типу DD DD DD 21 00 00.
3. АЛУ сразу 16 бит.
4. Модуль райтбэк записи.

Профиты:
- реально современная конвеерная архитектура,
- высокая частота за счет конвееризации,
- высокая производительность за счет широких шин,
- потенциальная возможность суперскаляра, если пилятору хватит умений и альтеры.

Минусы: можно забыть не только про потактовую совместимость, но и про кодовую. Самомодифицирующийся код работать не будет, например.

Re: Заточка NextZ80

PostPosted: Sun, 20.03.2016 20:24:03
by psb
TS-Labs wrote:Самомодифицирующийся код работать не будет

это неправильно. такой код должен просто всё тормозить, но не неработать.

однако, вы забыли главное: нужен релиз в асик, иначе ... я уже забыл, что там говорил рупор.

Re: Заточка NextZ80

PostPosted: Sun, 20.03.2016 20:44:08
by MVV
TS-Labs wrote:юзабельность некстз80 в реальных системах никакая. Он годится только для тестбенчей.

Да, ладно. Вот взять как наглядный пример nextzx, проц на 42МГц (в 42 раза быстрее чем на zx-evo) работает в 64К (назовем её страницей кэш, подобной как раньше 16-32К кэш на SRAM). Даже если просто привязать один только nextZ80 14МГц (а можно ведь и два проца) к SDRAM без ожидания (память успевает), то комп уже сразу в 3.5 раза будет быстрее бегать чем zx-evo, а это существенный выигрыш для игр.

Re: Заточка NextZ80

PostPosted: Sun, 20.03.2016 20:52:47
by TS-Labs
Ну а если ты выкинешь ожидание памяти в том же цикле, что и дешифратор, а это походу почти всегда единственный цикл для некста, то частота станет 60МГц.