Информация об изменениях

Сообщение Re[10]: i7-12700 vs M1 от 03.02.2022 9:04

Изменено 03.02.2022 9:05 ononim

Re[10]: i7-12700 vs M1
N>"Кто хочет — ищет метод". 1 бит на указание, какая половинка регистрового пространства, и 16 на маску регистров, всего 17 на каждую команду. До двух pushm/popm, одна на r0-15, вторая на r16-31. И никаких "четверть пространства".
Это сильно ограничивает возможности от push произвольного набора регистра до push произивольного набора из произвольной половины регистров. А если сила оригинальной идеи потеряна — то мало смысла за нее бороться дальше.

N>Продолжаю считать, что проблема в том, что весь конвейер надо останавливать ради такого.

Зачем останавливать конвейер? push/pop в arm32 на конвейер точно не влияют — я всякое такое сам исследовал, замеряя производительность разных вручную написанных мелких кусочков на асме — функция с прологом push {...набор регистров, lr} и эпилогом pop {..набор регистров, pc} отличалась по производительности от не пушащей ничего и заканчивающейся на bx lr примерно пропорционально количеству инструкций.
Re[10]: i7-12700 vs M1
N>"Кто хочет — ищет метод". 1 бит на указание, какая половинка регистрового пространства, и 16 на маску регистров, всего 17 на каждую команду. До двух pushm/popm, одна на r0-15, вторая на r16-31. И никаких "четверть пространства".
Это сильно ограничивает возможности от push произвольного набора регистра до push произивольного набора из произвольной половины регистров. А если сила оригинальной идеи потеряна — то мало смысла за нее бороться дальше.

N>Продолжаю считать, что проблема в том, что весь конвейер надо останавливать ради такого.

Зачем останавливать конвейер? push/pop в arm32 на конвейер точно не влияют — я всякое такое сам исследовал, замеряя производительность разных вручную написанных мелких кусочков на асме — функция с прологом push {...набор регистров, lr} и эпилогом pop {..набор регистров, pc} отличалась по производительности от не пушащей ничего и заканчивающейся на bx lr примерно пропорционально количеству инструкций.
То что интел pusha не осилила не значит что нельзя в принципе это осилить. Да и интелу наверное не особенно хотелось — pusha все же была неэффективной и по другой причине — она пушит все регистры даже тогда когда нужно сохранять не все. А в большинстве случаев сохранять надо не все.