1 Процессоры семейства Intel® XScale®. Разработка эффективных приложений Василий Басов Intel
2 Процессоры XScale® - планы выпуска XScale® - обзор архитектуры –Программная модель –Top5 советов по оптимизации Инструменты разработчика –Среда разработки –Intel®: Компиляторы, библиотеки, VTune –Железо для разработчиков Программы поддержки разработчиков от Intel®
3 Рынок для процессоров XScale® Bulverde Applications Processors Bulverde Applications Processors Value Budget Performance PDAsPhones Premium
4 График выпуска процессоров для КПК Q4Q3 Q2 Q1Q4Q3 Q2 Q1 Leadership PDA $300 - $450 Value PDA < $150 Premium PDA $150 - $300 PXA MHz PXA MHz PXA MHz PXA MHz Bulverde 520MHz Bulverde 312MHz Bulverde 520MHz Bulverde 416MHz PXA255/ MHz PXA2621/ MHz PXA255/ MHz PXA MHz PXA MHz PXA MHz Garson GPRS/EGPRS* modem Communicator > $
5 График выпуска процессоров для смартфонов Q4Q3 Q2 Q1Q4Q3 Q2 Q1 Value Phone < $100 Leadership Phone $250 - $450 Premium Phone $100 - $250 Bulverde 312 MHz Bulverde 520MHz Garson GPRS/EGPRS* modem Communi-cator $450 Full-Featured OS Multimedia on RTOS PXA255/PXA MHz Garson GPRS/EGPRS* PXA261/ MHz PXA800F 104MHz GPRS/EGRPS* PXA800F 312 MHz GPRS/EGPRS* PXA MHz
6 Процессоры XScale® - планы выпуска XScale® - обзор архитектуры –Программная модель –Top5 советов по оптимизации Инструменты разработчика –Среда разработки –Intel®: Компиляторы, библиотеки, VTune –Железо для разработчиков Программы поддержки разработчиков от Intel®
7 Архитектура XScale®
8 XScale® vs. P4 Feature Pentium(r) 4 Processor (Prescott)XScale (Bulverde) Architecture25+ stage OOO7 stage in-order Frequency3.2 GHz400MHz (520MHz) L1 Data Cache8KByte (16 KByte)32KByte+2KB L1 Instruction Cache12k uops32KByte L1 Cache Controlprefetchprefetch, lock, line flush L2 Cache512 KByte (1MByte)- BTB control-lock, flush SIMD instructionsMMX, SSE, SSE2 (PNI)5 MPT (43 Wireless MMX)
9 Intel® Media Processing Technology Умножение/суммирование с 40- битным результатом Реализовано на CP accum 039 accum + + * *
10 Intel® Wireless MMX Technology 16 SIMD регистров Условное исполнение всех инструкций WADDBUSNEwr0, wr1, wr2
11 Среда разработки *Другие наименования и товарные знаки являются собственностью своих законных владельцев.
12 Компилятор Intel® C++ Intel предоставляет: Подключение Plug & Play Полную интеграцию в Platform Builder for Microsoft* Windows* CE и eMbedded* Visual C++* Переключение между компиляторами Intel and Microsoft* без изменения исходного кода *Другие наименования и товарные знаки являются собственностью своих законных владельцев.
13 int get_leading_zeroes (int i) { int count; __asm { clz r0,r0 }... return count; } Ассемблер Компилятор пропускает код ассемблера в приложение ASM Компилятор C/C++ Inline ASM Код ассемблера Машинный код Микроархитектура Intel® XScale Inline ассемблер
14 Встроенные (intrinsic) функции Ассемблер Компилятор C/C++ Компилятор заменяет intrinsic функции высокоэффектив- ным ассемблерным кодом Intrinsic функция Код ассемблера Машинный код Микроархитектура Intel XScale® int count_leading_zeros(int i) { int temp1, temp2; temp2 = i; if (temp2 == 0) temp1 = 32; else { temp1 = 0; while ( temp2 > 0 ){ temp2
15 VTune Performance Analyzer
16 VTune Performance Analyzer
17 Top5 полезных советов 1.Используйте компилятор Intel! –Лучшиe run-time библиотеки –векторизация и оптимизация –Помогите компилятору! 2.Используйте VTune для анализа производительности и поиска узких мест! 3.Оптимизируйте использование кэша! –Кэш-промах стоит ~150 циклов (>500 if a TLB miss) –Используйте preload() (works on ARM, too) –Advanced: XScale имеет дополнительный mini cache и позволяет замораживать данные в кэше 4.Ручная оптимизация критических мест –Используйте DSP-расширения, iMPT, WMMX –Оптимизируйте ветвления –Оптимизируйте циклы 5.Используйте оптимизированные IPP/GPP библиотеки 0. Исправте ошибки перед тем как начинать оптимизацию