Изменение всех LDUR на ADD и LD

Рассмотрим изменение в одноконтурном нетрубопроводном процессоре, который выполняет следующие инструкции: 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 ответ

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

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

Doc:

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

Ссылка:

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

Другие вопросы по тегам