RISC-V: таблица инструкций S-формата

введите описание изображения здесь

У меня есть эта таблица инструкций S-формата. Вы можете мне объяснить, что такое imm[11:5] и funct3? Я знаю, что funct указывает его размер в битах, а иногда это 000 или 010. Я не знаю точно, почему он там. Кроме того, imm[11:5] также является 7 битами всех нулей.

Пожалуйста помоги!


person James    schedule 30.10.2017    source источник
comment
Укажите, что вы уже исследовали. Кроме того, было бы лучше иметь таблицу в самом вопросе, а не связывать изображение.   -  person Tom Aranda    schedule 30.10.2017
comment
Пожалуйста, обратитесь к разделу 2.2 в riscv-spec-v2.2pdf, а также к главе 19 там же.   -  person Baard    schedule 01.02.2019


Ответы (1)


imm[4:0] и imm[11:5] обозначают отрезки в битовом представлении непосредственного операнда.

S-формат используется для кодирования инструкций хранилища, то есть:

sX rs2, offset(r1)

Существуют разные типы инструкций магазина, например store-byte (sb), store-half-word (sh), store-word (sw) и т. д. Часть funct3 используется для кодирования типа (например, 0b00 -> sb, 0b010 -> sw, 0b011 -> sd и т. д.). Это позволяет просто использовать один (основной) код операции, сохраняя при этом несколько типов инструкций сохранения, вместо того, чтобы тратить впустую несколько (основных) кодов операции. IOW, funct3 кодирует второстепенный код операции инструкции.

Непосредственный операнд кодирует смещение. Если вы спросите себя, почему он так разделен - это позволяет увеличить сходство остальных частей в кодировке с другими форматами инструкций. Например, части кода операции, rs1 и funct3 расположены в одном и том же месте в форматах инструкций R-типа, I-типа и B. Размещение части RS2 используется совместно с форматами инструкций R-типа и B-типа. Это сходство помогает упростить декодер команд.

Это означает, что смещение имеет ширину 12 бит и псевдокод:

offset = sign_ext(imm[11:5] << 5 | imm[4:0])

См. Также первый рисунок в разделе 2.6 (Инструкции по загрузке и сохранению) спецификации RISC-V Base (ратифицировано 08.06.2019):

Формат инструкции RISC-V S-типа

person maxschlepzig    schedule 15.02.2020