Использование вращающихся регистров в двоичном оптимизирующем компиляторе.
… … 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] EndBranch+ABN
Представление Использование цикловых виртуальных регистров с поколениями … L1[2] L1[1] L1[0] … … L0[0] L0[1] - Один номер регистра для одной связной сети графа потока данных - Продвижение базы уменьшает поколение на единицу - За корректное и оптимальное отображение цикловых виртуальных регистров на вращающиеся отвечает Распределение. … B[M+4] B[M+3] B[M+2] … … B[M+0] B[M+1] ABNABN L1[2]L1[1]L1[0]
Восстановление контекста SRP (R1, L2[1],…) … Def -> R1 … Прерывание … SRP (R5, L6[3],…) Регистры – аргументы контрольной точки не должны изменяться до регистрации следующей SRP При возникновении прерывания откатываемся к последней зарегистрированной SRP и выполняем её компенсирующий код, восстанавливающий контекст Комп. код MOV R1 -> G0(EAX) ADD L2, 4 -> G1(ECX) …
Время жизни аргументов SRP SRP (R1, L2…) SRP (…) SRP (L1…) SRP (…) SRP (L1…) … Def->R1 ABN ABN Запись в аргумент SRP Непредсказуемое число продвижений базы Пересечение продвижения базы ограниченное число раз
Принятые решения MOV R1->R2 SRP (R2, L2…) SRP (R2, L1[1]…) SRP (…) Def->R1 ABN MOV R1->R2 L1[0] Дополнит. поколения SRP SRP (R2, L1[1]…) Внешний цикл Коррекция аргумента SRP Самодостижимая SRP
Обеспечение фронта SRP SRP (L1…) ABN SRP (L2…) ABN SRP SRP в голове цикла обеспечивает фронт SRP (L1…) ABN ABN SRP SRP Если нет других SRP в цикле, защитную SRP можно вынести в предцикл
Изменение базы на прямом пути Use L1 Def -> L1 … ABN Use L1 Def -> L1 … ABN Обеспечение при переименовании Поддержка далее до распределения
Эффективное распределение ПодграфуправленияПодграфуправления ABN …L1… Mov L1->R2 ABN …L2… Mov R3->L2 ПодграфПодграф ABN …L1… ABN …L2… ПодграфПодграф ПодграфПодграф Def L2 Use L1 Эффективное определение пересечений областей жизни разных регистров
1 Результаты Целые тесты 6,5 % Плавающие тесты 26 % Мультимедиа тесты 32 %