Leave a comment

ardelfi February 3 2022, 08:39:18 UTC
> предельно минималистический процессор для обучения

Предельно минималистичный процессор - это одна страница VHDL. Четыре инструкции, всё сразу перед глазами. :)

Reply

panchul February 3 2022, 08:44:47 UTC
schoolRISCV - это предельно минималистический и при этом совместимый с попудярной архитектурой RISC-V

Reply

ardelfi February 3 2022, 09:16:19 UTC
Да ладно, где он популярный. ARM популярен, а RISC-V - это классическое solution in search of a problem, как любой очередной язык программирования, который делает то же самое, но чуть хуже. Вся процессорная история (вы её наблюдали живьём) идёт по пути вырождения - начали с многих, а в конце остался один "популярный", несколько нишевых в вертикально-интегрированных конторах, остальные (в основном хорошие) исчезли. В какой категории окажется RISC-V, если популярный ARM уже есть, и нишевые у всех заинтересованных контор уже есть? Новый нишевый может появиться легко и в любой момент, если его сделать специально для новой ниши (с новым владельцем). Вот нишевые и являются точками роста, актуальными для обучения, из чего вывод: лучше человеков учить на беспородном и предельно понятном образце, с которым легко делать всё что угодно, не оглядываясь на чужую архитектуру. Не конкретно этом одностраничном, но на каком-то таком, с чистого листа и без "руководящей и направляющей" роли чужих стандартов.

Reply

panchul February 4 2022, 05:51:34 UTC
У RISC-V есть gcc toolchain и симулятор RARS, на котором удобно учить ассемблеру. Они совместимы с schoolRISCV.
Ваш процессор на одну страницу ни с чем не совместим. Его нельзя усложнить и использовать для чего-то практического или упражнения с софтверной экосистемой.

Reply

ardelfi February 4 2022, 08:05:33 UTC
Мы же об учебном процессоре для инженеров-схемотехников, а не для программистов. Какое дело инженеру до совместимости учебного процессора с чем-то? Его функция - показать, понять и освоить конструирование процессора, и дерзко экспериментировать на нём, чтобы потом использовать эти знания и навыки. Вот это единственный практический аспект учебного процессора.

Вы сходу закрываете людей в чужой архитектуре и совместимости с ней, и зачем-то ещё вписываете gcc toolchain в картину обучения схемотехника. Нас учили архитектуре на 8085, ассемблеру на С51 и 8086 - все это давно на свалке истории, а задачу свою они выполнили хорошо. Мои первые программы на ассемблере умещались на один экран, и с тем же успехом могли быть написаны в кодах процессора - никаких тулчейнов, никаких ограничений, только ты и железо. Если вы ставите людям неправильные учебные задачи, направляете их с первых шагов к неправильным целям, в результате обучения получатся неправильные инженеры, или вообще не инженеры, а латентные погромисты.

Reply

panchul February 4 2022, 19:58:08 UTC
Ни одной процессорной компании не нужен проектировщик, который работал только с простейшими однотактовыми процессорами на страницу. Инженер должен понимать конвейерный процессор и желательно суперскаляр. А на этому уровне сложности уже существуют синтетические бенчмарки (например Dhrystone) на Си, которые инженер тоже должен понимать и уметь оптимизировать процессор с учетом их.

Reply

ardelfi February 4 2022, 23:51:39 UTC
Вы же понимаете что обучение - это процесс из более чем одного шага? С нуля бросить человека во всё перечисленное - это гарантия каши в его голове на годы вперёд. Более того, ни одной процессорной компании не нужен проектировщик после одного курса, даже если это ваш курс. Между курсом обучения и проектированием на уровне процессорной компании пройдут годы learning curve. И наконец, ни один разумный человек не должен идти на курс, даже ваш, с намерением оказаться в процессорной компании, которых несколько штук. С тем же успехом можно записаться на курсы дзюдо с целью получить олимпийскую медаль. В мире множество компаний, которые используют, делают с нуля или подкручивают всякие вычислительные ядра, особенно специализированные - вот там море разливанное проектов и работы для выпускников подобных курсов, возможно даже сразу после. В целом, у меня впечатление что при всём желании курс получается "слегка" мимо цели. Кстати, посмотрел видео курса из вашей статьи на Хабре - то же впечатление (вообще увиденное было совсем плохо, кто-то ( ... )

Reply

panchul February 5 2022, 01:47:24 UTC
Конечно, это много шагов. Но применение schoolRISCV удобно именно тем, что он ненамного сложнее вашего процессора на одну страницу, но от него можно выстроить непрерывную эволюционную лесницу, присоединяя в нему сначала работу с памятью, потом конвейер, потом кэши, потом суперскаляр, потом многоядерность итд.

В случае вашего примера на следующем же шаге его нужно будет бросить и перейти к RISC-V.

Reply

ardelfi February 5 2022, 09:28:15 UTC
Непрерывная эволюционная лестница окажется индоктринацией в рамки одной платформы на годы и десятилетия вперёд. Вот об этом речь: учебный процессор должен быть учебным - научился, поломал и выбросил. Иначе он весьма вероятно станет пожизненным - процессор, язык программирования или просто язык. Если студент поучится на учебном и перейдёт к RISC-V, это будет лучше для него чем начать с RISC-V. Напомню примеры от людей, которые в отличие от меня профессионально учат и сделали себе имя: автор Minix сделал его для студентов, хотя выбор больших юниксов достаточен; забыл имя и название, вот этот деятель на пару с людьми из MIPS и DEC начал лепить свой процессор в 1999 для студентов, хотя могли сразу учить на взрослых MIPS и тогда лучшей Альфе. Нас учили на устаревшем к тому времени 8085 и С51, хотя на других занятиях мы сдавали курсовые на современных тогда х86 и PIC. Ещё относительно этого MMIX, насколько запомнил, был пример правильного формирования понимания у студента на контрасте с неправильным. Многие годы все попытки внедрения ( ... )

Reply

panchul February 5 2022, 20:51:41 UTC
Изначальный кнутовский MIX был смесью черт процессоров его времени.
RISC-V - это тоже смесь на основе опыта MIPS, RISC-I/II/SPARC, ARM итд.

И вообще вы смотрели на schoolRISCV или его с чем-то путаете? Он не менее, а более нагляден чем ваш одностраничный процессор. В нем есть регистровый файл, чуть больше инструкций и он лучше написан - https://github.com/zhelnio/schoolRISCV/blob/00_simple/src/sr_cpu.v

Что касается вашего одностраничного процессора, то к нему в комплекте например идет порт компилятора SmallC чтобы его программировать в репозитории на гитхабе.

Reply

ardelfi February 5 2022, 21:49:21 UTC
Смотрел. Не думаю что это лучше для первого подхода к предмету. Для второго лучше. Жаль что нет VHDL версии.

Reply

panchul February 5 2022, 22:11:23 UTC
Так это не первое занятие по верилогу. К этому занятию они в курсе и модульности, и поделали простые упражнения с счетчиками, арифметическими схемами, конечными автоматами. Для них что один что второй дизайн примерно одинаково простые, но schoolRISCV чище написан, хоть и чуть больше за счет регистрового файла и чуть больше команд.

Reply

ardelfi February 5 2022, 22:58:11 UTC
Первый подход к процессору, а не к верилогу. Первый должен быть таким, чтобы сходу человек с помощью лектора мог быстро понять что там где, и как в целом оно работает. Одна страница и четыре команды этому очень способствуют - всё перед глазами, и ещё лектор пальцем покажет. Это на мой взгляд упущенный шаг перед schoolRISCV. Я его посмотрел (верилог мне против шерсти) - сразу видно автор кода старался, очень чисто написано, а коментов почти нет (подразумевается разбор кода под присмотром лектора? документация отдельно? или студенты сами разберутся? *). Но прыжок от конечного автомата и сумматора сразу в этот уровень процессора оставит в головах пробелы, о которых студенты лектору не скажут или сами не заметят, а лектор не спросит. Я не нашёл тот ролик, но вспомнил что взаимодействие со студентами там было околонулевое. На правильном уроке студенты бомбят лектора вопросами, и вторая половина лекции уходит на ответы - не то что лектор заранее написал, а то что его по ходу спрашивают. Насколько удалось вспомнить, там такого не было - это ( ... )

Reply

panchul February 5 2022, 23:13:19 UTC
В принципе в процессорном коде на одну страницу что-то есть. Я подумаю об этом. Данный конкретный код коряво написан, но код аккумуляторного процессора на одну странцу можно написать и хороший.

Reply

ardelfi February 6 2022, 01:14:13 UTC
Да я просто одностраничный пример привёл как одностраничный и предельно простой, а не конкретно этот код чем-то хорош или плох. Не сомневаюсь что вы за вечер-два сделаете лучше на том же уровне сложности. И кстати, с некоторым удивлением для себя обнаружил ядра С51 глубоко внутри современных чипов - собирают и разбирают простейшие протоколы, и подобное. Никогда не имел симпатий к С51, но существование такой практики показывает востребованность в предельно простых ядрах глубоко внутри чипов - на уровне между автоматом и простым но уже не убогим восьмибитным процессором. Это к тому что даже учебный не будет забыт за ненадобностью.

Reply

panchul February 5 2022, 21:00:08 UTC
Почитал MMIX по ссылке в википедии. Да уж, сразу видно что Кнут программист, а не микроархитект. Он скрестил 256-регистров от AMD 29K с регистровыми окнами SPARC и регистрами для каждой подпрограммы ( ... )

Reply


Leave a comment

Up