Comments 10
Честно говоря не очень понятно, как можно «досконально разобраться» в работе процессора написав его не в HDL. Ведь только в verilog/vhdl можно реализовать именно потактную обработку, pipeline, посмотреть, как работает кэш и т.д.
Обычные не HDL языки ведь лишены понятия течения времени.
Обычные не HDL языки ведь лишены понятия течения времени.
+2
Вы про то, что нет сигнала тактирования? Здесь тактированием выступает пошаговое выполнение инструкций. Разобраться через HDL на FPGA? Отладка — очень трудоемкая. Data hazards — это отдельная фундаментальная задача. Работа с кешем — тоже. Ну и доказательство корректности, к примеру для новых Extentions делать на Verilog? Я привел ссылки в статье на эту тему. Гляньте.
0
Ну может я не совсем верно высказал свою мысль.
Как вы иммитируете конвейерное исполнение инструкций?
Вот эти fetch -> decode -> execute -> write mem или что там…
Пока текущая команда исполняется, следующая тем временем декодируется и через-следующая уже выбирается…
Как вы иммитируете конвейерное исполнение инструкций?
Вот эти fetch -> decode -> execute -> write mem или что там…
Пока текущая команда исполняется, следующая тем временем декодируется и через-следующая уже выбирается…
0
Это 1-stage pipline. Для 5-stage pipline уже нужна реализация data hazards.
Это осмысленно только для задач производительности. Однако на FPGA особой производительности не достичь.
Более того — реализация на HDL действительно много. И параметрической генерации, оптимизации под конкретные платы и IP.
На данном этапе — для меня 5-stage pipline задача интересная, но избыточная.
Это осмысленно только для задач производительности. Однако на FPGA особой производительности не достичь.
Более того — реализация на HDL действительно много. И параметрической генерации, оптимизации под конкретные платы и IP.
На данном этапе — для меня 5-stage pipline задача интересная, но избыточная.
+1
Но с другой стороны если задаваться целью понять, как работает процессор, то как раз pipeline и интересен. И не обязательно загружать в FPGA — можно в симуляторе смотреть.
Но, конечно, и 1-stage программный эмулятор дает некоторое представление, тут вы правы.
Но, конечно, и 1-stage программный эмулятор дает некоторое представление, тут вы правы.
+2
А разве реализация формальной спецификации ISA не предполагает абстрагирование от микроархитектуры, т. е. от явной аппаратной имплементации? Насколько я понял, автор изучает именно ISA-часть. Без всякого сомнения, описать ISA на уровне RTL интересно и полезно с точки зрения практики. Но и исследовать ISA тоже увлекательно.
+1
С моей же стороны мне интересно от вас услышать: отзывы, впечатления, добрые напутствия. А для самых смелых — помощь в поддержании проекта.Было бы здорово, если бы Вы реализовали возможность сравнивать трассировку состояний вашей модели при выполнении программ с аналогичной трассировкой состояний RTL-ядер. Тогда любопытно было бы проанализировать работу открытых проектов.
0
Круто. Когда-то давно сам сделал DISC процессор, но пришёл к выводу, что это бесполезная трата времени (когда разобрался в вопросе, стало не интересно, а применить негде). Надеюсь, вы придёте к другому выводу. Желаю успехов!
+1
> сам сделал DISC процессор
Вы имели ввиду RISC-V?
Сделали — HDL реализация на FPGA?
Если вы действительно разобрались, то открыты ли вы к вопросам? Как я писал в статье — порой квалифицировання консультация очень нужна.
Вы имели ввиду RISC-V?
Сделали — HDL реализация на FPGA?
Если вы действительно разобрались, то открыты ли вы к вопросам? Как я писал в статье — порой квалифицировання консультация очень нужна.
0
Вы имели ввиду RISC-V?
Нет, это слишком трудозатратно. Я сделал свою, так сказать, defective instruction set computer архитектуру, которая даёт базовое понимание физики компьютера. Дальше делать смысла не увидел, ибо усложнение сути не меняет.
Сделали — HDL реализация на FPGA?
Сначала я сделал виртуалку, в которой существовали конденсаторы, транзисторы и прочие физические электрические элементы. Потом из них собрал процессор. Затем подключил виртуальную память и генератор. Далее написал ассемблер и транслятор для него. И всё это на C# (не портить же железо).
Часто оказывалось, что не до конца понятно как инструкция должна работать. К сожалению надежного товарища, которому можно было бы позвонить в 3 часа ночи и взволнованным голосом с придыханием спросить: «А знаешь, BLTU инструкция наверное по-другому signextend-ится...» — у меня нет.
Вы, конечно, можете меня спросить, но я отвечу что-то вроде: «У меня эта инструкция эквивалентна HALT.» Особенно, если учесть, что в виртуальной машине существование регистров и всего кэша теряет смысл))
Судя по вашему репозиторию, вы начали сразу с виртуализации процессора?
+1
Sign up to leave a comment.
Как я пришел к формальной спецификации RISC-V процессора на F#