Флейм
GameDev.ru / Флейм / Форум / CISC-x80: ПРАвәльный 8-битный «ДОМАШНИЙ» (псевдо-совместимый с PC-XT / CP/M-80 / DOS) (15 стр)

CISC-x80: ПРАвәльный 8-битный «ДОМАШНИЙ» (псевдо-совместимый с PC-XT / CP/M-80 / DOS) (15 стр)

Advanced: Тема повышенной сложности или важная.
Страницы: 110 11 12 13 14 15
DelfigamerПостоялецwww13 июня 201814:07#210
=A=L=X=
> https://m.habr.com/post/182002/
Окей, признаю - в некоторых аспектах я ошибся.
Но смотри, твоя схема с буфермзацией будет работать только в том случае, если декодеры работают быстрее OOO-ядра. А так ли это?
Будучи english speaker master race, я открыл оригинал и прочитал его, и там говорится:
The OOO core was so successful at improving processing flow that it was able to process instructions faster than they could be sent to the core. For most users the CPU's OOO core was effectively idle much of the time, even under load.

а в комментах сам автор жалуется:
When I work on optimizing our code bases, I always get discouraged when vtune shows just how much time the CPU is sitting idle. Even when going through tight loops the CPU is mostly just sitting there waiting for the cache.

То есть, в конечном итоге - всё равно ядро оказывается самым быстрым элементом, которому всё равно приходится постоянно ждать инструкций и данных. Широкий конвеер позволяет исполнять больше инструкций в секунду, но для его оперативной заправки всё равно нужен многоуровневый кэш, и даже с его наличием процессор всё равно упирается в скорость обмена данными. Наличие дополнительного буфера так и не спасло процессор от медленной памяти, да и не для этого ROB предназначен.
=A=L=X=Постоялецwww13 июня 201814:13#211
Delfigamer
> и там говорится

Это тоже переводено нормально. Именно отсюда и выросла технология Hyper Threading - мол раз вычислительные блоки всё равно простаивают, то давайте сделаем вид, что у нас есть еще одно ядро и загрузим теперь их еще этим ядром.
То есть всё-равно нашли как загрузить по полной.
На деле такие вещи купируются тем, что данные из памяти приходят медленно, но зато огромными блоками - фасуются в кеш и поехали.
Там нигде уже байты не пересылаются - минимум линейки кеша.
Скорость как бы большая в плане того сколько информации пересылается в секунду времени, но это происходит медленными огромными блоками. В результате основные усилия направлены на борьбу с латентностью и с умением попросить задолго до реальной необходимости блок из нужного места - то есть предсказанием. И этим тоже как раз конвеер и занимается.

Правка: 13 июня 2018 14:15

=A=L=X=Постоялецwww13 июня 201814:19#212
Но вообще - да, мы уже давно в таком месте эволюции процов, что основная проблема - медленная память. Без сомнений. Да я с этого и начал ту свою мысль вообще то, с которой начались последние три страницы - мол так ли уже важно ли будет обмазывать проц обильно конвеерами и всякими предсказателями если у него вся ОЗУ и будет кешем. Просто даже понять бы какая скорость когда всё в кеше лежит у простой старой схемы типа Z80.

Правка: 13 июня 2018 14:20

AlikberovПостоялецwww21 июня 201815:51#213
Облачная Verilog-версия.
Написано, в основном, как попало, лишь бы убедиться, что я способен заставить это выполнять мой код.
Но, это - работает… Крайне примитивно, но работает.
А именно: «HLT», «MOV [BX],R», «MOV R,R1», «MOV R,ID», «INC BX», «PUSH n», «JMP $+ID», «RET»…
Вывод «WAIT» позволяет удлинять циклы чтения/записи медленных устройств… Сделал просто, но не знаю, верно ли?

Проблемы:
Во-первых, «файл контекста» не задействован…
Во-вторых, «АЛУ» не задействованно…
В-третьих, реализация чтения/записи стека заметно кривая…
В-четвёртых, элементарные операции реализовал с трудом. Не знаю, что будет дальше…
В-пятых, «LOOP/SKIP/WAIT» режимы реализовать относительно легко, но пока не понятно, как…

P.S.: Что получилось, то получилось…
На «NOP» уходит 3 такта… Не мало ли для «устойчивой работы»?

P.P.S.: Не знаю, как переименовать тему, чтобы избежать «CISC/MISC/RISC-холивара»…

MahagamПостоялецwww21 июня 201817:56#214
в шестых - это только симулируется, а надо бы ещё и чтобы оно синтезировалось. как минимум.
AlikberovПостоялецwww22 июня 201814:49#215
Mahagam
в шестых - это только симулируется, а надо бы ещё и чтобы оно синтезировалось. как минимум.
Нa сколько я понял, у вас имеется опыт работы с железом?
Mahagam
я сам лет 7 назад написал на верилоге синтезируемое ядро MSP430… красиво ложились в SLICEM спартана.
То есть, в случае чего, могу ли я расчитывать на поддержку по аппаратной части?
Ну, типа, если комплекс «FPGA <-> монитор+клавиатура» имеется, не сложно ли будет снять видео, как в «живую» этот «x80» что-нибудь на экран выводить будет?

P.S.: Который день просыпаюсь и понимаю, что устал после сна, в котором пытался выровнять работу verilog-моделей…
Ужас какой-то!

MahagamПостоялецwww22 июня 201816:37#216
Alikberov
> Нa сколько я понял, у вас имеется опыт работы с железом?
да

> Ну, типа, если комплекс «FPGA <-> монитор+клавиатура» имеется
не имеется.

железо для начала не требуется. требуется чтобы написанное синтезировалось.
я попытаюсь доходчиво пояснить почему: симулятор запросто проглотит что-то типа

always @(posedge clk or negedge clk) reg <= in_data;

но для корректной физической реализации потребуется триггер, который срабатывает по двум фронтам. а его нет. потому синтезатор скажет что "ояебу как это вам сделать". кроме того, синтезатор покажет во что выльется ваша логика. в какие объёмы.

играться дальше? ну на али есть jtag за ~25$ и плата на спартане-6 за 34$, у которой есть VGA выход. там можете запускать всё вживую.

AlikberovПостоялецwww22 июня 201817:08#217
Mahagam
для корректной физической реализации потребуется триггер, который срабатывает по двум фронтам. а его нет. потому синтезатор скажет
Гдe-то читал, что какие-то кристаллы поддерживают такие комбинации и это широко рекламируется. Врут?

> не имеется.
Жалко…
Жаль нет облачных сервисов с реальным FPGA и видео стримом прямо из кристалла + TelNet-сервер для консоли/клавиатуры.

Изображение

> ну на али есть
Говорил же выше, что присмотрел DE10 давно, но не уверен, оправдается ли…

MahagamПостоялецwww22 июня 201818:24#218
Alikberov
> Гдe-то читал, что какие-то кристаллы поддерживают такие комбинации и это широко
> рекламируется. Врут?
было в CoolRunner-II от хилых.

> Говорил же выше, что присмотрел DE10 давно, но не уверен, оправдается ли…
350$, это писец как дорого для начала.

за 150 баксов или за 265 баксов.
есть ещё дешевле
и совсем за копейки 89$
ещё дешевле - только на али.

то, что там нет видео выхода - не страшно. покупается кабель HDMI-HDMI, разрезается, и подтыкивается на PMOD разъём. внутрях делается DVI выход, и можно подключать монитор. даже на спартане можно слепить 1280х720 полноцветный выход. или даже 1920х1080 если 24 кадра в секунду (но такое далеко не все мониторы пережуют)

для опытов хватит самой дешёвой платки.

AlikberovПостоялецwww22 июня 201819:05#219
Mahagam
было в CoolRunner-II
Былo??? То есть, больше этим никто и «не грешит»?
> как дорого для начала.
Для какого начала? FPGA - не пачка салфеток же! Если брать, то чтобы и «малькам передать»…
(Хотя рождаются одни племянницы…)
Копил я 6 лет тому назад. Скопил $500 примерно… И бац! Мой Pentium-IV сдох!!! Только $1100 улетело на новый системник со всем барахлом.
Мой опыт подсказывает, что если вот-вот скопилось «на чебурек», то вот-вот попадёшь на Лувак
(Копи-Копи, да на-Копи-Лувак, короче…)
А DE10 выбрал из-за видео-входа и процессора на борту. То есть, считай, что целый компьютер покупаешь, но без архитектуры и чипсета.
Дураку - ни к чему: Хотелось бы себе доказать, что не зря куплю.
Mahagam
> то, что там нет видео выхода - не страшно. покупается кабель HDMI-HDMI, разрезается…
И выбрасывается!
По своему опыту скажу, что при покупке нужно проверить всё на месте. Хоть 3 часа этот «DE10» на глазах у продавца прошивай, но убедись, что работает…

P.S.: Кстати, зря про «posedge+negedge» говорите…
Пытаюсь же проектировать всё под ТТЛ-макетку…

MahagamПостоялецwww23 июня 20181:49#220
Alikberov
> Былo??? То есть, больше этим никто и «не грешит»?
DDR выходы теперь немного иначе сделаны, а внутри чипа dual edge нафик не упал, проще частоту поднять

> Если брать, то чтобы и «малькам передать»…
а вам отец бы передал пачку К155ЛА31ЛБ553, оно вам надо? через 15 лет совсем другие серии будут.

> А DE10 выбрал из-за видео-входа
на спартан-6 можно на простых пинах ввести 1280х720 видео. DVI, естественно.

> По своему опыту скажу, что при покупке нужно проверить всё на месте.
для этого есть гарантия и всё такое.

AlikberovПостоялецwww23 июня 20187:43#221
Mahagam
> а вам отец бы передал пачку
Eсть мешок целый (с мини-арбуз) с «К155ЛА2», «К155ЛА3», «К155ТВ1» и многих прочих с работы отца, где Мини-ЦАТС стояла… Всё - новое, муха не сидела!
Есть и «133», и «134», и «ЛБ»… Но они, типа, как раритет и в упаковках с паспортами к ним лежат.

> на спартан-6 можно на простых пинах ввести 1280х720 видео. DVI, естественно.
У нас в квартире слишком много камер (у отца списывают, проводки в 1дм выкусывают, остальное - в лом) и хотелось бы мини-студию на FPGA сделать ради прикола.
А компьютер - более двух не тянет: FPS падает в ноль! Хотя на борту - USB 3.0…
(Комбинировал: 2 USB-камеры + «PCI 713x BDA»; 2 USB-камеры + «EasyCap»)

P.S.: Традиционная модель с аналогом i8080-циклов у меня что-то кривоватая получается, хотя и работает…
Но с циклами пока не разобрался. Всё как-то мутно.

MahagamПостоялецwww23 июня 201810:21#222
Alikberov
> Но с циклами пока не разобрался. Всё как-то мутно.
забросьте своё на неделю. внимательно прочтите книгу, касаемо раздела MIPS. многое уляжется в голове.
AlikberovПостоялецwww28 июня 201820:25#223
Микроархитектурa - стр. 170… Решил нарисовать свою, шаг за шагом.
Час возился, ничего не выходит. Вернее, хрень получается и всё…

Открыл снова редактор исходников.
Удалось всё аккуратненько засунуть в машинные циклы «M1», «M2», «M3»…
На «NOP» уходит 2 такта, на «NOP n» уходит 3+n тактов…
Реализовал бета-«LOOP n»-режим. Испытал на «LOOP 7 + NOP 7» - ушло 59 тактов. Выходит n*m+10… Откуда 10 тактов - не понял, так как должно, по ожиданиям, быть n*m+6.
(Причём, узел считывания инструкций блокируется. Потому у меня «NOP 7» хранится в регистрах весь цикл «LOOP 7» в обход «M1»)

В принципе, модель будто бы работает. Как Вы и советовали выше, добиться исполнения нескольких команд…
Теперь надо наращивать систему команд до максимального минимума. То есть, внедрять все инструкции, но без многозадачности, переключения контекстов и  страниц памяти.
В моей «индексации» это - «x080»… Как и в эмуляции: Главное - исполнять весь код, без оптимизации, макросов и т.д…

Я и забыл, что в «DE10» имеется LCD 128x64… Что было ещё одной причиной остановить выбор на ней.
(Давно бы купил, если была бы уверенность, что доставят не побитое. А так, Verilog'ом занимаюсь реже, чем мог бы. Стимула нет…)

Многое придётся в очередной раз переписывать, так как местами имеются «заплатки»…
Да и концепция «x80» сама сыровата, что мешало дальше развивать даже «JS-эмулятор», вставляя там «временные» заплатки…
(Именно из-за этого и под RISC-свой когда-то не удалось эмулятор написать)
А именно: LOOP/WAIT режимы сложно реализовать даже в эмуляторе лишь потому, что они должны блокировать изменение «SF/PF/ZF»-флажков на время своего действия, что потребовало изуродовать текст эмулятора всякими заглушками в разных местах… Как говорится, временно, пока не найду метод изящнее. Причём, в эмуляторе при переключении задач в момент «LOOP/WAIT»-цикла происходил очень приличный и редкий сбой, который двое суток отлавливал в отладчике! И всё «безобразно прозаплатить» пришлось хорошенечко…

P.S.: Не очень хочется как-то напороться на подобное поведении «в железе»…

MahagamПостоялецwww28 июня 201823:27#224
Alikberov
> Я и забыл, что в «DE10» имеется LCD 128x64… Что было ещё одной причиной
> остановить выбор на ней.
дада, переплачивать пару сотен баксов за копеечный LCD - кучеряво живёте.

мысли, что экранчик можно за копейки купить на али в голову не приходила?

Страницы: 110 11 12 13 14 15

/ Форум / Флейм / ПроЭкты

2001—2018 © GameDev.ru — Разработка игр