Использование вращающихся регистров в двоичном оптимизирующем компиляторе.

Слайд 2



B[N-M]


B[1]

B[0]

B[N]

B[N-M+1]

Вращающиеся регистры

Обращение к регистрам относительно базы

База = M

0

1


M-1

M

M+1


N

ABN

Накрутка цикла

Use B[0]

Def B[0]

Def B[1]

End

Branch+ABN

… … B[N-M] … B[1] B[0] B[N] B[N-M+1] Вращающиеся регистры Обращение к

Слайд 3

Представление

Использование цикловых виртуальных регистров с поколениями


L1[2]

L1[1]

L1[0]



L0[0]

L0[1]

- Один номер регистра для одной связной

Представление Использование цикловых виртуальных регистров с поколениями … L1[2] L1[1] L1[0] …
сети графа потока данных

- Продвижение базы уменьшает поколение на единицу

- За корректное и оптимальное отображение цикловых виртуальных регистров на вращающиеся отвечает Распределение.


B[M+4]

B[M+3]

B[M+2]



B[M+0]

B[M+1]

ABN

ABN

L1[2]

L1[1]

L1[0]

Слайд 4

Восстановление контекста

SRP (R1, L2[1],…)


Def -> R1


Прерывание


SRP (R5, L6[3],…)

Регистры – аргументы контрольной точки

Восстановление контекста SRP (R1, L2[1],…) … Def -> R1 … Прерывание …
не должны изменяться до регистрации следующей SRP

При возникновении прерывания откатываемся к последней зарегистрированной SRP и выполняем её компенсирующий код, восстанавливающий контекст

Комп. код

MOV R1 -> G0(EAX)

ADD L2, 4 -> G1(ECX)


Слайд 5

Время жизни аргументов SRP

SRP (R1, L2…)

SRP (…)

SRP (L1…)

SRP (…)

SRP (L1…)


Def->R1

ABN

ABN

Запись в аргумент

Время жизни аргументов SRP SRP (R1, L2…) SRP (…) SRP (L1…) SRP
SRP

Непредсказуемое число
продвижений базы

Пересечение продвижения базы ограниченное число раз

Слайд 6

Принятые решения

MOV R1->R2
SRP (R2, L2…)

SRP (R2, L1[1]…)

SRP (…)

Def->R1

ABN

MOV R1->R2

L1[0]

Дополнит. поколения

SRP

SRP (R2, L1[1]…)

Внешний

Принятые решения MOV R1->R2 SRP (R2, L2…) SRP (R2, L1[1]…) SRP (…)
цикл

Коррекция аргумента SRP

Самодостижимая SRP

Слайд 7

Обеспечение фронта SRP

SRP (L1…)

ABN

SRP (L2…)

ABN

SRP

SRP в голове цикла обеспечивает фронт

SRP (L1…)

ABN

ABN

SRP

SRP

Если нет

Обеспечение фронта SRP SRP (L1…) ABN SRP (L2…) ABN SRP SRP в
других SRP в цикле, защитную SRP можно вынести в предцикл

Слайд 8

Изменение базы на прямом пути

Use L1

Def -> L1


ABN

Use L1

Def -> L1


ABN

Обеспечение при

Изменение базы на прямом пути Use L1 Def -> L1 … ABN
переименовании

Поддержка далее до распределения

Слайд 9

Эффективное распределение

Подграф
управления

ABN

…L1…

Mov L1->R2

ABN

…L2…

Mov R3->L2

Подграф

ABN

…L1…

ABN

…L2…

Подграф

Подграф

Def L2
Use L1

Эффективное определение пересечений областей жизни разных регистров

Эффективное распределение Подграф управления ABN …L1… Mov L1->R2 ABN …L2… Mov R3->L2