Изменение всех LDUR на ADD и LD - PullRequest
0 голосов
/ 26 февраля 2019

Рассмотрим изменение в одноконтурном нетрубопроводном процессоре, который выполняет следующие инструкции: LDUR, STUR, R-type и CBZ.Рассмотрим модификацию, которая заменяет инструкции LDUR на пару новых инструкций следующим образом:

Оригинальный код:

LDUR X1, X2, #100 /* X1=mem[X2+100] */

Новый код:

ADD X4, x2, #100 /* X4=X2+100  */
LD  X1, X4       /* X1=mem[X4] */

Меня спрашивают о возможных преимуществах и недостатках.Я вижу недостаток в превращении одной инструкции в 2 на не конвейерном процессоре.Кажется, я не могу найти какие-либо возможные преимущества.

Кто-нибудь знает о возможных преимуществах, если сделать это таким образом?

1 Ответ

0 голосов
/ 26 февраля 2019

Единственное, что приходит мне в голову - это смещения, но у меня есть внутреннее чувство, что может быть что-то скрытое, поскольку вопрос задается академическим человеком.Однако: возможное смещение

LDUR находится в диапазоне от -256 до 255. ADD, с другой стороны, имеет больший диапазон смещения от 0 до 4095, что позволяет реализоватьфункция для работы с большими статическими смещениями.

Документ:

Справочное руководство по архитектуре ARM ARMv8, для профиля архитектуры ARMv8-A

Ссылка:

ADD: C6.2.4 (страница C6-698)
LDUR: C6.2.155 (страница C6-978)

...