Оглавление 2
1. Введение 5
2. Обзор методов оптимизации кода для процессоров с поддержкой параллелизма на уровне команд 9
2.1. ILP-платформы 10
2.2. Критерии оптимизации кода 16
2.3. Круг проблем, связанных с оптимизацией кода для ILP- процессоров 17
2.4. Области планирования 20
2.5. Усиление параллелизма в пределах областей планирования ....26
2.5.1. Преобразования циклов 27
2.5.2. Встраивание функций 30
2.5.3. Снятие зависимостей по данным 30
2.5.4. Соотношение программного и аппаратного параллелизма.36
2.6. Планирование команд 37
2.6.1. Алгоритмы планирования 37
2.6.2. Координация планирования и распределения регистров 41
2.6.3. Глобальное планирование 43
2.6.4. Аппаратная поддержка глобального планирования 45
2.6.5. Метод доминантного параллелизма при планировании в древовидных областях 50
2.6.6. Планирование по прогнозу значений данных 51
3
2.7. Особенности генерации кода для ЦПОС 53
2.8. О роли языковых расширений 57
2.9. Сводка методов оптимизации для процессоров с поддержкой
параллелизма на уровне команд 58
3. Компилятор с оптимизирующим постпроцессором - детальное описание 59
3.1. Характеристика процессора 1В577 60
3.2. Общие сведения о компиляторе для 1В577 61
3.3. Роль базового компилятора 63
3.4. Постпроцессирование 66
3.4.1. Примеры оптимизаций, выполняемых постпроцессором.... 67
3.4.2. Основные понятия 69
3.4.3. Последовательность обработки входного ассемблерного файла 70
3.4.4. Аппаратная совместимость 71
3.4.5. Модель линейного участка и постановка задачи планирования 72
3.4.6. Алгоритм планирования 82
3.4.7. Учет аппаратных задержек 90
3.4.8. Сокращение перебора 92
3.4.9. Подбор вариантов команд 107
3.4.10. Модификация команд 108
3.5. Настройка постпроцессора на архитектуру 1В577 109
3.5.1. Регистры 110
3.5.2. Классы регистров 112
4
3.5.3. Соглашения о связях 115
3.5.4. Ресурсы 116
3.5.5. Свойства команд 120
3.5.6. Варианты 128
3.5.7. Псевдокоманды (модификаторы) 129
3.5.8. Динамические ресурсы 131
3.5.9. Реализация аппаратных ограничений при помощи псевдорегистров 134
4. Оценки эффективности 135
4.1. Сравнение с другими методами планирования 135
4.1.1. Списочное планирование 135
4.1.2. Методы планирования на основе ЦЛП 139
4.1.3. Метод планирования с использованием дизъюнктивных графов 140
4.2. Измерение эффективности кода для процессора 1В577 140
4.2.1. Цели и методика измерений 140
4.2.2. Результаты измерений 142
4.2.3. Конвейеризация и развертка циклов 143
4.2.4. Замена адресации со смещением на адресацию с постинкрементацией адресного регистра 146
4.2.5. Перестановки обращений к памяти 148
4.2.6. Оценка эффективности оптимизаций 151
4.2.7. Распределение регистров 152
5. Заключение 155
6. Литература 157
Актуальность темы.
Поддержка параллелизма на уровне команд в (микро)процессорных архитектурах - одно из основных направлений повышения быстродействия компьютеров. Такие микропроцессоры используются как в гражданских областях, так и при создании перспективных образцов вооружения и военной техники, в том числе для систем обработки информации в радиолокаторах и гидроакустических комплексах. Примером отечественного микропроцессора с поддержкой параллелизма на уровне команд является 1В577 и модели на его основе.
С аппаратной точки зрения наиболее перспективными в данном классе архитектур признаются процессоры с длинным командным словом. Их быстрое развитие ставит сложные задачи перед разработчиками инструментальных средств программирования. Некачественный компилятор способен нивелировать преимущества, предоставляемые высокопроизводительной аппаратурой. Укажем, что компания Hewlett- Packard, параллельно с созданием архитектуры IA-64, выделяет миллионы долларов на развитие инструментальных средств.
Трудность генерации эффективного кода для микропроцессорных архитектур с длинным командным словом проистекает в первую очередь из того, что традиционные компиляторы генерируют последовательный код, уступающий по качеству оптимальному в 5-10 раз, в то время как для достижения максимальной эффективности кода необходимо объединять в длинные командные слова элементарные операции, относящиеся к разным операторам исходного языка и разным итерациям циклов.
*
6
Таким образом, для полного использования преимуществ микропроцессоров с длинным командным словом нужны новые исследования, новые методы оптимизации объектного кода.
Цели диссертационной работы.
Основными целями диссертационной работы являются:
- исследование методов оптимизации объектного кода для микропроцессорных архитектур с параллелизмом на уровне команд;
- разработка и реализация постпроцессора, выполняющего оптимизацию объектного кода для процессоров с длинным командным словом;
- разработка и реализация средств настройки оптимизирующего постпроцессора на различные целевые архитектуры;
Научная новизна.
Предложен алгоритм планирования потока команд для процессоров с длинным командным словом путем перебора планов выполнения по методу динамического программирования. Наиболее актуальная область применения разработанного алгоритма планирования - генерация объектного кода для цифровых процессоров обработки сигналов с длинным командным словом.
Предложены новые средства описания процессорных архитектур с длинным командным словом, делающие возможным выделение архитектурно-независимого ядра оптимизирующего постпроцессора.
Практическая ценность.
Реализован оптимизирующий компилятор для отечественного микропроцессора 1В577. Этот компилятор используется в НИИСИ РАН, КБ "Корунд".
Апробация.
7
Основные положения диссертационной работы докладывались на международной конференции «Параллельные вычисления и задачи управления», Москва, ИПУ РАН 2001 и на семинаре «Современные сетевые технологии», МГУ, 2001.
Публикации.
По теме диссертации опубликовано 5 печатных работ - [4], [5], [6], [7],
[19].
Объем и структура работы.
Диссертация состоит из 4 глав, заключения и списка литературы.
Первая глава является введением.
Вторая глава представляет собой обзор методов оптимизации кода для процессоров с поддержкой параллелизма на уровне команд. Особое внимание уделяется методам усиления программного параллелизма на уровне команд, а также методам планирования потока команд.
В третьей главе подробно рассматривается реализация компилятора для процессора 1В577 с оптимизирующим постпроцессором. В ней описана структура компилятора, рассмотрены оптимизации, реализованные в постпроцессоре, в частности, алгоритм планирования потока команд перебором планов выполнения по методу динамического программирования. Здесь же описаны средства настройки постпроцессора на целевую архитектуру и применение этих средств для настройки на архитектуру процессора 1В577.
В диссертационной работе получены следующие основные
результаты.
1. Проведен анализ существующих методов оптимизации объектного кода для процессорных архитектур с параллелизмом на уровне команд. Выделены основные классы таких методов.
2. Разработан алгоритм планирования потока команд для процессоров с длинным командным словом путем перебора планов выполнения по методу динамического программирования. В алгоритме предусмотрены оптимизации, направленные на сокращение перебора, которые позволяют обеспечить приемлемое время обработки входных программ.
3. Реализован постпроцессор, выполняющий планирование и другие оптимизации объектного кода. В постпроцессоре выделено универсальное, архитектурно-независимое ядро.
4. Разработаны и реализованы средства настройки оптимизирующего постпроцессора на различные целевые архитектуры. Выполнена настройка на отечественный микропроцессор 1В577.
5. Разработан оптимизирующий кросс-компилятор с языка Си для отечественных целевых ЭВМ на основе микропроцессора 1В577. Компилятор позволяет сочетать преимущества программирования на языке высокого уровня с качеством объектного кода, близким к ручному, что подтверждено полученными экспериментальными оценками.
Таким образом, в диссертационной работе содержится решение
задачи, имеющей существенное значение для оптимизации программ при
156
компиляции с языков высокого уровня - оптимизация объектного кода для процессорных архитектур с длинным командным словом.
I
1. Ахо А., Сети Р., Ульман Д., Компиляторы: принципы, технологии и инструменты. - М., Издательский дом "Вильямс", 2001.
2. Ахо А., Ульман Дж. Теория синтаксического анализа, перевода и компиляции, том 2. - М., Мир, 1978.
3. Балашов В.В., Капитонова А.П., Костенко В.А., Смелянский Р.Л., Ющенко Н.В. Метод и средства оценки времени выполнения оптимизированных программ. - Программирование #5, 2000, с. 52- 61.
4. Вьюкова Н.И., Галатенко В.А., Самборский С.В., Шумаков С.М. Алгоритм планирования потока команд для VLIW-процессоров. - М.: НИИСИ РАН, 2002.
5. Вьюкова Н.И., Галатенко В.А., Самборский С.В., Шумаков С.М. Генерация эффективного кода для процессорных архитектур с явным параллелизмом. - М.: НИИСИ РАН, 2001.
6. Вьюкова Н.И., Галатенко В.А., Самборский С.В., Шумаков С.М. О проблеме оптимизации кода для процессорных архитектур с явным параллелизмом. - Труды международной конференции "Параллельные вычисления и задачи управления". - М.: ИПУ РАН, 2001.
7. Вьюкова Н.И., Галатенко В.А., Самборский С.В., Шумаков С.М. Описание VLIW-архитектуры в оптимизирующем постпроцессоре. М.: НИИСИ РАН, 2001.
8. Грис Д. Конструирование компиляторов для цифровых вычислительных машин. - М., Мир, 1975.
9. Дорошенко А.Ю., Куйвашев Д.В. Архитектура модульного кросс¬компилятора для микропроцессоров с очень длинным командным словом. - Проблемы программирования, 2000 г., N 3-4, с. 122-134 (на
158
укр. языке).
10. Дорошенко А.Ю., Куйвашев Д.В. Интеллектуализация векторизующих компиляторов для микропроцессоров с длинным командным словом. - Проблемы программирования, 2001 г., N 1-2, с. 138-151 (на укр. языке).
11. Евстигнеев В.А. Некоторые особенности программного обеспечения ЭВМ с длинным командным словом (обзор). - Программирование, 1991, N 2, стр. 69-80.
12. Ершов А.П. Введение в теоретическое программирование. - М., Наука, 1977.
13. Калашников Д.В., Машечкин И.В., Петровский М.И. Планирование потока инструкций для конвейерных архитектур. - Москва, МГУ, Вестник Московского университета, серия 15 (вычислительная математика и кибернетика), N4, 1999, с. 39-44.
Н.Касьянов В.Н. Оптимизирующие преобразования программ. - М.: Наука, 1988 г.
15. Пападимитриу X., Стайглиц К. Комбинаторная оптимизация. - М., Мир, 1985.
16. Скворцов С.В. Оптимизация кода для суперскалярных процессоров с использованием дизъюнктивных графов. - Программирование 1996, N
2, стр. 41-52.
17. Французов Ю.А. Обзор методов распараллеливания кода и программной конвейеризации. - Программировние, 1992, N 3, стр. 16-37.
18. Шланскер М.С., Рау Б.Р. Явный параллелизм на уровне команд. Открытые Системы, #11-12, 1999.
19. Шумаков. С.М. Обзор методов оптимизации кода для процессоров поддержкой параллелизма на уровне команд. М.: НИИСИ РАН, 2002.
159
20. ADSP-21000 Family. С Tools Manual. - Analog Devices, Inc. http://www.analog.com/publications/documentation/C-Tools_manual/books. htm
21. Aho A.V., Sethi R, Ullman J.D.: Compilers - Principles, Techniques, and Tools, Addison-Wesley, 1986
22. Allen J.R., Kennedy K., Porterfield C., Warren J.D. Conversion of Control Dependence to Data Dependence. Proceedings of the 1 Oth ACM Symposium on Principles of Programming Languages. Jan. 1983, pp. 177-189.
23. Araujo G., Malik S. Optimal Code Generation for Embedded Memory Non- Homogeneous Register Architectures. - 8th Int. Symp.on System Synthesis (ISSS), 1995, pp. 36-41.
24. Araujo G., Malik S., Lee M. Using Register-Transfer Paths in Code Generation for Heterogeneous Memory-Register Architectures. - In ACM IEEE Design Automation Conference (DAC), number 33, pp. 591-596, June 1996.
25. Baneijia S., Havanki W.A., Conte T.M. Treegion Scheduling for Highly Parallel Processors. - Proceedings of the 3rd International Euro-Par Conference (Euro-Par'97, Passau, Germany), pp. 1074-1078, Aug. 1997.
26. Benitez М. E., Davidson J. W. Target-specific Global Code Improvement: Principles and Applications. - Technical Report CS-94-42, Department of Computer Science, University of Virginia, VA 22903.
27. Bemstein D., Rodey M. Global Instruction Scheduling for Superscalar Machines. - Proceedings of the SIGPLAN '91 Conference on Programming Language Design and Implementation, pp.241-255, June 1991.
28. Berson D. A., Gupta R., Soffa M. L. Integrated Instruction Scheduling and Register Allocation Techniques. - In Proc. of the Eleventh International Workshop on Languages and Compilers for Parallel Computing, LNCS, Springer Verlag, Chapel Hill, NC, Aug. 1998.
160
29. Bharadwaj J., Menezes K. McKinsey C. Wavefront Scheduling: Path Based Data Representation and Scheduling of Subgraphs. The Journal of Instruction-Level Parallelism, May 2000.
30. Bruggen Т., Ropers A. Optimized Code Generation for Digital Signal Processors. - Institute for Integrated Signal Processing, http://www.ert.rwth- aahen.de/coal.
31 .Chang P. P., Mahlke S. A., Chen W. Y., Waiter N. J., Hwu W. W. IMPACT: An architectural framework for multipleinstruction-issue processors," in Proceedings of the 18 th International Symposium on Computer Architecture, pp. 266-275, May 1991.
32. Cooper K.D., Schielke P.J., Subramanian D. An Experimantal Evaluationof List Scheduling. - Department of Computer Science, Rice University, Houston, TX, USA: Technical Report, http://cs- tr.cs.rice.edu/Dienst/UI/2.0/Describe/ncstrl.rice-cs/TR98-326
33. Eichenberger A. E., Davidson E. S., Abraham S. G. Minimizing Register Requirements of a Modulo Schedule via Optimum Stage Scheduling. - International Journal of Parallel Programming, February, 1996.
34. Eichenberger A. E., Lobo S. M. Efficient Edge Profiling for ILP-Processors.
- Proceedings of PACT 98, 12-18 October 1998 in Paris, France..
35. Fisher J. A. Global code generation for instruction-level parallelism: Trace Scheduling-2. - Tech. Rep. HPL-93-43, Hewlett-Packard Laboratories, June 1993
36. Fisher J.A. Trace scheduling: A Technique for Global Microcode Compaction. - IEEE Transaction on Computers, vol. 7, pp. 478-490, July 1981.
37. Gebotys С. H., Gebotys R. J. Complexities In DSP Software Compilation: Performance, Code Size, Power, Retargetability. 1060-3425/98, IEEE, 1998.
38. Grossman J.P. Compiler and Architectural Techniques for Improving the
161
Effectiveness of VLIW Compilation. - submitted to ICCD 2000.
39. Hartung J., Gay S.L., Haigh S.G. A Practical С Language Compiler/Optimizer for Real-Time Implementations on a Family of Floating- Point DSPs. - IEEE. Proceedings of of the International Conference on Acoustics, Speech and Signal Processing, New York, U.S., April 1988.
40. Havanki W. A., Banerjia S., Conte Т. M. Treegion Scheduling for Wide Issue Processors. - Proc. 4th Intl. Symp. on HighPerformance Computer Architecture, Feb. 1998, pp. 266-276.
41. Hoogerbrugge J., Augusteijn L. Instruction Scheduling for TriMedia. - The Journal of Instruction-Level Parallelism, February 1999
42. Horst E., Kloosterhius W., Heyden J. A С Compiler for the Embedded R.E.A.L DSP Architecture. - Материал получен с телеконференции comp.dsp.
43. Hsu P.Y.T., Davidson E.S. Highly Concurrent Scalar Processing. - Proceedings of the 13th Annual International Symposium on Computer Architecture, pp. 386-395. June 1986.
44. Hwu W.W., Mahlke S.A., Chen W.Y., Chang P.P., Waiter N.J., Bringmann R.A., Quelette R.G., Hank R.E., Kiyohara Т., Haab G.E., Holm J.G., Lavery D.M. The Superblock: An Effective Technique for VLIW and Superscalar Compilation. - The Journal of Supercomputing, vol. 7, pp. 229-249, May 1993.
45.IA-64 Application Developer's Architecture Guide. - Intel, May 1999.
46.ISO/IEC 9899:1999(E). Programming Languages - C. - ISO/IEC, 1999.
47. Kiyohara Т., Gyllenhaal J. C. Code Scheduling for VLIW/ Superscalar Processors with Limited Register Files. Proceedings of the 25th International Symposium on Microarchitecture, Dec. 1992, pp. 197-201.
48. Leung A., Palem K.V. A fast algorithm for scheduling timeconstrained
162
instructions on processors with ILP. - In The 1998 International Conference on Parallel Architectures and Compilation Techniques (PACT 98), Paris, October, 1998.
49. Leung A., Palem K.V. Scheduling Time-Constrained Instructions on Pipelined Processors. - Submitted for publication to ACM TOPLAS, 1999.
50. Leupers R. Code Generation for Embedded Processors. - ISSS 2000, Madrid/Spain, Sept 2000.
51 .Leupers R. Function Inlining under Code Size Constraints for Embedded Processors. - ICCAD’99, San Jose (USA), Nov 1999.
52. Leupers R. Instruction Scheduling for Clustered VLIW DSPs. -Proceedings of the 2000 International Conference on Parallel Architectures and Compilation Techniques (PACT'00).
53. Leupers R. Novel Code Optimization Techniques for DSPs.- 2nd European DSP Education and Research Conference, Paris/France, Sep 1998.
54. Leupers R., Marwedel P. Time-Constrained Code Compaction for DSPs. - 8th Int. System Synthesis Symposium(ISSS), 1995. Trans.on VLSI Systems, Vol. 5, no. 1, March 1997.
55. Liao S., Devadas S., Keutzer K., Tjiang S., Wang A. Storage Assignmentto decrease code size. - ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pp. 186-195, 1995.
56. Lin W.-Y., Lee C.G., Chow P. An Optimizing Compiler for the TMS320C25 DSP Chip. - Proceedings of the 5th International Conference on Signal Processing Applications and Technology, pp. I-689-I-694, October 1994.
57. Mahlke S. A., Chen W. Y., Hwu W. W., Rau B. R., Schlansker M. S. Sentinel Scheduling for VLIW and Superscalar Processors. - ASPLOS-V Conference Proceedings, October 1992.
58. Mahlke S.A., Lin D.C., Chen W.Y., Hank R.E., Bringmann R.A. Effective
Compiler Support for Predicated Execution Using the Hyperblock. - Proceedings of the 25th Annual International Workshop on Microprogramming (Portland, Oregon), pp. 45-54, Dec. 1992.
59. Martin М. М., Roth A., Fischer C. N. Exploiting Dead Value Information. - 30th International Symposium on Microarchitecture, pages 125—135, December 1997.
60. Moreno J.H. Dynamic Translation of tree-instructions into VLIW. IBM Research Report, 1996.
61. Motorola DSP96000 User's Manual. - Motorola, Inc., 1990.
62. Motorola DSP96KCC User's Manual. - Motorola, Inc., 1990.
63,Ozer E., Banerjia S. Unified Assign and Schedule: A New Approach to Scheduling for Clustered Register File Microarchitectures. - Proceedings of the MICRO-31 - The 31th Annual International Symposiumon Microarchitecture, 1998.
64. Pai V. S., Adve S. Code Transformation to Improve Memory Parallelism. - The Journal of Instruction-Level Parallelism, May 2000.