Почему RISCV выбирает «сопутствующие сообщения» для сопрограмм? - PullRequest
2 голосов
/ 30 апреля 2019

В riscv-spec-2.2 он предоставляет следующую таблицу истинности поведения стека обратных адресов (RAS):

rd     rs1     rs1=rd  RAS action
!link  !link   -       none
!link  link    -       pop
link   !link   -       push
link   link    0       push and pop
link   link    1       push

Я запутался в "случай push и pop", где riscv-spec-2.2 говорит, что он используется для поддержки сопрограмм:

Когда два разных регистра ссылок (x1 и x5) задаются как rs1 и rd, тогдаRAS одновременно выдвигается и выталкивается для поддержки сопрограмм "

Я также обнаружил, что в таблице рассылки riscv обсуждается таблица истинности RAS, но она не объясняет, почему" push and pop "для RAS может помочь сопрограммам (но упоминалось, что у Alpha также есть такой тип подсказок для сопрограмм):

https://groups.google.com/a/groups.riscv.org/d/msg/isa-dev/uZUTszCtgAA/f3jDhbjEAAAJ

В моем понимании толчок" и pop"RAS заменит верхнюю запись RAS. Следовательно, при возврате программного обеспечения из сопрограммы произойдет неправильный прогноз, поскольку был заменен правильный адрес возврата (в начале верхней записи RAS).кажется, не имеет никакой пользы для выполнения1023 * push и pop"сравнить с простым" push".

Почему RISCV выбирает" push and pop"RAS для сопрограмм?

...