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