Leave a comment

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

У такого дизайна будет хреновый тайминг с еще более хреновым энергопотреблением, а для Out-of-order он вообще не взлетит из-за сложности реализации конфликтов в конвейере. Поэтому-то его никто и не реализовал в чипе.

*** MMIX is a big-endian 64-bit reduced instruction set computer (RISC), with 256 64-bit general-purpose registers ... The local register stack provides each subroutine with its own rL local registers, designated by $0 through $(rL − 1). Whenever a subroutine is called, a number of local registers are pushed down the stack (by shifting the start of the window). The arguments of the called subroutine are left in the remaining local registers. When a subroutine finishes it pops the previously pushed registers. Because the internal stack can contain only a finite number of registers, it may be necessary to store a part of the stack in memory.[4] This is implemented with the special registers rO and rS which record which part of the local register stack is in memory and which part is still in local physical registers. The register stack provides for fast subroutine linkage. ***

Reply


Leave a comment

Up