Полное устранение избыточной загрузки для архитектур, поддерживающих спекуляцию по управлению и данным
Реферат
Изобретение относится к компиляторам, осуществляющим устранение избыточной загрузки. Его использование позволяет обеспечить технический результат в виде обеспечения способности устранять любые виды избыточной загрузки. Технический результат достигается благодаря тому, что в способе осуществляют идентификацию множества покрывающих операций загрузки, включающего в себя по меньшей мере одну покрывающую операцию загрузки, относящуюся к первому типу загрузки, и избыточную операцию загрузки, относящуюся ко второму типу загрузки, при этом как первый тип загрузки, так и второй тип загрузки может принадлежать группе типов загрузки, включающей в себя обычную загрузку и по меньшей мере одну загрузку спекулятивного типа, причем по меньшей мере одна из покрывающей и избыточной операций загрузки является загрузкой спекулятивного типа, и избирательное устранение избыточной операции загрузки. 6 с. и 23 з.п.ф-лы, 6 ил.
Текст описания в факсимильном виде (см. графическую часть).
Формула изобретения
1. Способ устранения избыточных операций загрузки, реализуемый на компьютере, используемый для устранения избыточных операций загрузки при компиляции программы, включающий: идентификацию множества покрывающих операций загрузки, включающего в себя по меньшей мере одну покрывающую операцию загрузки, относящуюся к первому типу загрузки, и избыточную операцию загрузки, относящуюся ко второму типу загрузки, при этом как первый тип загрузки, так и второй тип загрузки может принадлежать группе типов загрузки, включающей в себя обычную загрузку и по меньшей мере одну загрузку спекулятивного типа, причем по меньшей мере одна из покрывающей и избыточной операций загрузки является загрузкой спекулятивного типа; и избирательное устранение избыточной операции загрузки. 2. Способ по п.1, отличающийся тем, что операции загрузки спекулятивного типа включают в себя расширенную загрузку, проверочную загрузку, спекулятивную загрузку и спекулятивную расширенную загрузку. 3. Способ по п.1, отличающийся тем, что идентификацию множества покрывающих операций загрузки и избыточной загрузки осуществляют глобально по всей функции. 4. Способ по п.1, отличающийся тем, что идентификация множества покрывающих операций загрузки предусматривает определение пересечения операций загрузки из разных блоков. 5. Способ устранения избыточных операций загрузки, реализуемый на компьютере, используемый для устранения избыточных операций загрузки при компиляции программы, включающий: идентификацию покрывающей операции загрузки, относящейся к первому типу загрузки, и избыточной операции загрузки, относящейся ко второму типу загрузки, при этом как первый тип загрузки, так и второй тип загрузки может принадлежать группе типов загрузки, включающей в себя обычную загрузку, по меньшей мере одну загрузку спекулятивного типа и по меньшей мере одну загрузку проверочного типа, причем по меньшей мере одна из покрывающей и избыточной операций загрузки является загрузкой спекулятивного типа; и избирательное устранение избыточной операции загрузки. 6. Способ по п.5, отличающийся тем, что избыточную операцию загрузки устраняют избирательно, поскольку, в зависимости от комбинации первого и второго типов загрузки, избыточная операция загрузки устраняется при выполнении определенных условий. 7. Способ по п.5, отличающийся тем, что избыточную операцию загрузки устраняют избирательно, поскольку, в зависимости от комбинации первого и второго типов загрузки, избыточная операция загрузки не устраняется ни при каких условиях. 8. Способ по п.5, отличающийся тем, что группа типов загрузки включает в себя обычную загрузку, расширенную загрузку, проверочную загрузку, проверочную расширенную загрузку, спекулятивную загрузку и спекулятивную расширенную загрузку. 9. Способ по п.5, отличающийся тем, что идентифицируют более одной покрывающей операции загрузки, если существуют дополнительные покрывающие операции загрузки. 10. Способ по п.5, отличающийся тем, что идентификацию покрывающей и избыточной операций загрузки осуществляют глобально по всей функции. 11. Способ по п.5, отличающийся тем, что идентифицируют более одной покрывающей операции загрузки и каждая покрывающая операция загрузки относится к первому типу загрузки. 12. Способ по п.5, отличающийся тем, что первый тип загрузки представляет собой обычную загрузку и второй тип загрузки представляет собой спекулятивную расширенную загрузку. 13. Способ по п.5, отличающийся тем, что операции загрузки проверочного типа включают в себя операцию проверочной загрузки и операцию проверочной расширенной загрузки. 14. Способ по п.5, отличающийся тем, что устранение избыточной операции загрузки включает в себя полное устранение избыточной операции загрузки из кода программы. 15. Способ по п.5, отличающийся тем, что устранение избыточной операции загрузки включает в себя устранение избыточной операции загрузки из ее позиции в коде программы и перемещение в другую позицию в коде. 16. Машинно-читаемый носитель, на котором хранятся команды, которые при обработке их процессором обуславливают выполнение процессором действий, используемых для устранения избыточных операций загрузки при компиляции программы и включающих: идентификацию покрывающей операции загрузки, относящейся к первому типу загрузки, и избыточной операции загрузки, относящейся ко второму типу загрузки, причем как первый тип загрузки, так и второй тип загрузки могут принадлежать группе типов загрузки, включающей в себя обычную загрузку, по меньшей мере одну загрузку спекулятивного типа и по меньшей мере одну загрузку проверочного типа, причем по меньшей мере одна из покрывающей и избыточной операций загрузки является загрузкой спекулятивного типа; и избирательное устранение избыточной операции загрузки. 17. Машинно-читаемый носитель по п.16, отличающийся тем, что группа типов загрузки включает в себя обычную загрузку, расширенную загрузку, проверочную загрузку, проверочную расширенную загрузку, спекулятивную загрузку и спекулятивную расширенную загрузку. 18. Способ устранения избыточных операций загрузки, реализуемый на компьютере, используемый при компиляции программы, для устранения избыточных операций загрузки, включающий: идентификацию покрывающей операции загрузки, относящейся к первому типу загрузки, и избыточной операции загрузки, относящейся ко второму типу загрузки, на определенных этапах глобально по всей функции, причем как первый тип загрузки, так и второй тип загрузки может принадлежать группе типов загрузки, включающей в себя, обычную загрузку и по меньшей мере одну загрузку спекулятивного типа, причем по меньшей мере одна из покрывающей и избыточной операций загрузки является загрузкой спекулятивного типа; и избирательное устранение избыточной операции загрузки. 19. Способ по п.18, отличающийся тем, что как первый тип загрузки, так и второй тип загрузки может принадлежать группе типов загрузки, включающей в себя обычную загрузку, по меньшей мере одну загрузку спекулятивного типа и по меньшей мере одну загрузку проверочного типа. 20. Способ устранения избыточных операций загрузки для устранения избыточных операций загрузки при компиляции программы, включающий: определение имени подпрограммы на основании первого типа загрузки и второго типа загрузки; и выполнение подпрограммы, выбранной в соответствии с именем программы, в которой операции загрузки устраняются. 21. Способ по п.20, отличающийся тем, что подпрограмма может вызывать другую подпрограмму. 22. Способ по п.20, отличающийся тем, что определение имени подпрограммы включает в себя передачу первого и второго типов загрузки матрице комбинаций операций загрузки. 23. Способ по п.22, отличающийся тем, что определение имени подпрограммы включает в себя идентификацию имени подпрограммы на пересечении первого и второго типов загрузки в матрице комбинаций операций загрузки. 24. Способ по п.22, отличающийся тем, что матрица комбинаций операций загрузки является полной матрицей комбинаций операций загрузки. 25. Способ по п.20, отличающийся тем, что идентификатор на пересечении первого и второго типов загрузки представляет собой адрес памяти для имени подпрограммы. 26. Способ по п.20, отличающийся тем, что для некоторых комбинаций первого и второго типов загрузки подпрограмма включает в себя только оператор возврата. 27. Машинно-читаемый носитель, на котором хранятся команды, которые при обработке их процессором при устранении избыточных загрузок при компиляции программы и обуславливают выполнение процессором действий, включающих: определение имени подпрограммы на основании первого типа загрузки и второго типа загрузки; и выполнение подпрограммы, выбранной в соответствии с именем программы, в которой операции загрузки устраняются. 28. Машинно-читаемый носитель по п.27, отличающийся тем, что подпрограмма использует обращение к матрице комбинаций операций загрузки. 29. Машинно-читаемый носитель по п.27, отличающийся тем, что матрица является полной матрицей комбинаций операций загрузки.РИСУНКИ
Рисунок 1, Рисунок 2, Рисунок 3, Рисунок 4, Рисунок 5, Рисунок 6, Рисунок 7, Рисунок 8, Рисунок 9, Рисунок 10, Рисунок 11, Рисунок 12, Рисунок 13, Рисунок 14, Рисунок 15, Рисунок 16, Рисунок 17, Рисунок 18, Рисунок 19, Рисунок 20, Рисунок 21, Рисунок 22, Рисунок 23, Рисунок 24, Рисунок 25, Рисунок 26, Рисунок 27, Рисунок 28, Рисунок 29, Рисунок 30, Рисунок 31, Рисунок 32, Рисунок 33, Рисунок 34, Рисунок 35, Рисунок 36, Рисунок 37, Рисунок 38, Рисунок 39, Рисунок 40, Рисунок 41, Рисунок 42, Рисунок 43, Рисунок 44, Рисунок 45, Рисунок 46, Рисунок 47, Рисунок 48, Рисунок 49, Рисунок 50, Рисунок 51, Рисунок 52, Рисунок 53, Рисунок 54, Рисунок 55, Рисунок 56, Рисунок 57, Рисунок 58, Рисунок 59, Рисунок 60, Рисунок 61, Рисунок 62, Рисунок 63, Рисунок 64, Рисунок 65, Рисунок 66