https://www.csl.cornell.edu/courses/ece4750/handouts/ece4750-tinyrv-isa.pdf Страница 5 содержит объяснение, как разбирать непосредственные операнды в разных форматах. Вроде, все пять форматов рассмотрены.
Если вам надо интересной глупости
(
Read more... )
Comments 20
На длинный пост длинный ответ...
Реализация с 12 бит имеет вполне очевидное объяснение, и, как ни странно, проистекает из самой идеи RISC-V, как открытой архитектуры. Идея заключается в том, что RISC-V задумывалась, как модульная расширяемая архитектура, а значит, в кодировке инструкций должно оставаться достаточно место для добавления новых инструкций. При большем значении IMM-части просто остается слишком мало места под кодирование опкода, что упоминается, как один из недостатков MIPS.
Исторически так сложилось, что сейчас широко используются 8-битные байты и 32-битные инструкции в RISC-процессорах. Могло быть и по другому, например, 6-битные байты и 48-битные инструкции (но инфраструктура индустрии сейчас под это не заточена от слова совсем)...
Если принято решение, что инструкция кодируется 32-битами, то в команде работы с непосредственными значениями мы имеем такие части: опкод, регистр источника, регистр назначения и непосредственное значение. Т.к. запланировано 32 регистра, то номер регистра кодируется 5-ю битами. В случае с ( ... )
Reply
У RISC-V практически бесконечное пространство команд, у него длина команды переменная. То, что нельзя было делать в MIPS, можно и нужно было делать в RISC-V, то, что MIPS сделал с запасом (более, чем 13-тибитный непосредственный операнд, расширяемый по разному в зависимости от команды в том числе), надо было повторять в RISC-V.
Да, малоизвестный современным разработчикам факт - у нульадресной (стековой) машины плотность кода очень высока. Те самые 6 битов на инструкцию, а то и меньше можно (GA144, там 5). Почему RISC-V не пошёл путём нульадресной машины?
Вот то-то и оно.
Reply
> У RISC-V практически бесконечное пространство команд, у него длина команды переменная
Вы не путайте потенциал развития, заложенный в схему кодирования и базовую ISA. В базовой ISA команды строго 32-битные и ее цель обеспечить простой набор команд, с простой реализацией FPGA/ASIC.
Сама по себе спецификация RISC-V - это не сухой документ, констатирующий факт. Это документ с множеством ссылок, объясняющий цели, намерения, ссылающийся на опыт других архитектур, проектов и т.п. В начальной разработке спецификации архитекторами были в т.ч. Девид Паттерсон и Крсте Асанович, уж они-то в курсе, что и как было сделано в MIPS.
Reply
Вот насчёт простоты у меня вопросов полно. Начиная с двух пар совершенно идентичных форматов, которые, тем не менее, разные.
У меня там вопрос был: "Почему RISC-V не пошёл путём нульадресной машины в сжатом наборе команд?"
Что по этому поводу говорят Крсте и Девид?
Reply
Конечно, фраза "MIPS? нет, не слышали" не выдерживает никакой критики. Только лишь в базовой спецификации RISC-V упоминается большое количество архитектур. Как минимум, эти:
ARM / ARM Thumb / ARM Thumb2 / ARM v8, Alpha, CDC 6600, Cray-1, IBM 360, IBM Stretch, Itanium, MIPS / MIPS R6, MIPS16, PA-RISC, PowerPC, PowerPC VLE, SPARC, Xtensa, microMIPS, x86
Так же, по идеям и истории есть книги и статьи, ниже приведу несколько для примера.
Книга "Design of the RISC-V Instruction Set Architecture", 2016.
https://people.eecs.berkeley.edu/~krste/papers/EECS-2016-1.pdf
Во введении говорится, что путь RISC-V прошел через исследования других архитектур, что к началу разработок были проекты по улучшению архитектур SPARC и MIPS и этот опыт был использован.
Глава 2 книги, названная "Why Develop a New Instruction Set?", поясняет причины создания новой архитектуры и описывает особенности и недостатки архитектур "MIPS", "SPARC", "Alpha", "ARMv7", "ARMv8" и "x86".
Статья "A New Golden Age for Computer Architecture" и одноименные лекции Девида ( ... )
Reply
https://ru.wikipedia.org/wiki/RISC-V
"Представлена 2010"
Предлагаемые вами статьи объясняют сложившееся состояние дел, а не объясняют процесс принятия решений.
Нет ли у вас ссылок на статьи авторов RISC-V ранее 2010 года?
Беру, кстати, слова про Cray обратно, он упоминается, как раз в контексте сжатых команд.
PS
Посмотрел на что обращено внимание в случае Alpha. Им не нравится переупорядочение обращений к памяти, что действительно сомнительно, floating point exception barriers (а по-моему, гениальное решение, может убрать взаимное влияние на этапы конвейера) и упоминание, что в Alpha, как и в MIPS, условием перехода было всего лишь равенство между регистрами (у Alpha одной из целей была совместимость по ассемблеру, насколько возможно).
Reply
> Нет ли у вас ссылок на статьи авторов RISC-V ранее 2010 года?
Ну можно найти по именам David Patterson и Krste Asanović.
Кстати, в ревизии RISC-V 2010-2011 форматы выглядели так:
( ... )
Reply
Нет ли у вас под рукой результатов поиска по этим именами? А то я могу найти совсем не то, в моей безмерной глупости.
Reply
Одной из целей разработки базовой спецификации RISC-V было выкинуть все лишнее и сомнительное, что бы упростить реализацию. Поэтому остались знаковые IMM, как достаточное решение. Тех, кого не устраивает, могут добавить свои форматы и команды в свое изделие.
Reply
Не могут.
Reply
Почему не могут? Это никакими условиями не запрещено. В спецификации есть целая глава "Extending RISC-V".
Reply
Available 30-bit instruction encoding spaces
In the standard encoding, three of the available 30-bit instruction encoding spaces (those with 2-bit prefixes 00, 01, and 10) are used to enable the optional compressed instruction extension. However, if the compressed instruction-set extension is not required, then these three further 30-bit encoding spaces become available. This quadruples the available encoding space within the 32-bit format.
Расширяя 32-хбитное слово команд, мы вынуждены поддерживать исключение не выровненного обращения к команде.
Или вообще на всё плюнуть и делать совершенно своё, про это там тоже есть. ;)
Reply
Leave a comment