Главная » Просмотр файлов » К. Касперски - Техника оптимизации программ, Эффективное использование памяти

К. Касперски - Техника оптимизации программ, Эффективное использование памяти (1127752), страница 69

Файл №1127752 К. Касперски - Техника оптимизации программ, Эффективное использование памяти (К. Касперски - Техника оптимизации программ, Эффективное использование памяти) 69 страницаК. Касперски - Техника оптимизации программ, Эффективное использование памяти (1127752) страница 692019-05-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 69)

3.38. Демонстрация эффективности комбинирования операций записи памяти с вычислительными операциями Результаты прогона оптимизированного варианта программы не то, чтобы очень впечатляющие, но и скромными их никак не назовешь (рис. 3.301. Кэш 351 ОПТИМИЗИРОВВНН)гз СВЕРНУТ)В( ВНРИВНТ Гох(О = Е)О<192)е +=- Вб) Рох(Ь вЂ . О) Ь < ЗЗ( Ь и = ВУооа(х)) Тох(а = Го а ' ОР96; а а= В,' (а 0); (а а 1); (а а 2)( р(а а О) р(а а 1) р(а а 2) - (а а З)) р(а + 3) р(а 4] р(а а В) р(а .

б) (а -~ 4)) — (а а В)) (а а б)) (а а 7)) )»(а + 7) А как быть, если ал(оритмом предусматриваются одни лишь операции записи, и кроме них нет никаких других вычислений? Стоит ли "искусственно" внедрять какую-нибудь команду для задержки? Нет! В лучшем случае, т. е. при правильном планировании, код выполнится за то же самое время — не медленнее, но и не быстрее. И неудивительно, ведь во время выгрузки буферов процессор занят бесполезными вычислениями! И на процессоре Р-!11, и на АМО АР!)1оп достигается приблизительно двукратный прирост производительности вне зависимости от того: находятся ли ячейки записываемой памяти в каше первого уровня или нет.

Напоследок — две пары расшепленных циклов можно, безо всякого ущерба для производительности, объединить в один — бцрег-цикл. Особенно это актуально для тех случаев, когда цикл записи памяти разбивается не на два, а на множество подциклов. Тогда можно поступить так, как это показано в следуюшем примере (листинг 3.13). Збг Глава 3 Управление кэшированием в процессорах старших поколений семейства х86 Программному управлению кэшированием просто не повезло. Концепция "прозрачного" каша, активно продвигаемая фирмой !пге!, абстрагировала программистов от подробностей аппаратной реализации кэш-контроллера и не предоставила им никаких рычагов управления. Впрочем, лля достижения полной абстракции интеллектуальности первых кэш-контроллеров все равно хватало и лля системных программистов пришлось оставить крохотную лазейку", позволяя им в частности запрещать кэширование страниц памяти, принадлежащих периферийным устройствам.

До тех пор, пока подавляющее большинство приложении "перемалывало" компактные, многократно обрабатываемые структуры данных, стратегия загрузки кэш-.чинеек по первому требованию вполне справлялась со своей задачей, но с появлением мультимедийных приложений стала "буксовать", Резко возросший объем обрабатываемых данных вкупе с нашествием потоковых алгоритмов, обращающихся к каждой ячейке памяти всего лишь раз, привел к постоянным перезагрузкам кэша, ограничивая тем самым производительность системы не быстродействием процессора, а пропускной способностью оперативной памяти. Первой этой проблеме бросила вызов фирма АМ О, включив в состав набора команд 3!) Хов! инструкцию р гьгоь, позволяющую программисту заблаговременно загружать в кэш ячейки памяти, к которым он рассчитывает обратиться в ближайшем будущем.

Причем, загрузка данных осуществляется без участия и остановки вычислительного конвейера! Это '*убивает двух зайцев" сразу: во-первых, "ручное" управление кэш-контроллером позволяет выбрать оптимальную стратегию упреждающей загрузки данных, что существенно уменьшает количество кэш-промахов, а, во-вторых, с предвыборкой становится возможным загружать очередную порцию данных параллельно с обработкой предыдущей, маскируя тем самым латентность "тормозов*' оперативной памяти! Следом за процессором Кб, предвыборка !естественно, в усовершенствованном варианте) появилась и в процессоре Репбцщ-П1, да не одна, а с целой свитой команд "ручного" управления кэшированием, т. к, !п1е! явно не хотела отставать от конкурентов! Совершенствование управления подсистемой памяти продолжилось и в Реп!)цпы4. Помимо множества новых команд, в нем реализован воистину уникальный (с появлением,4!Иоп ХР узке, увы, не уникальный) на сегодняшний лень механизм алааратной иредвыборки с интеллектуальным алгоритмом унрезкдающей загрузки.

Анализируя порядок, в котором приложение запрашивает данные из оперативной памяти, процессор пытается предсказать (приблизительно так же, как предсказывает направление условных пе- Кэш 353 рехолов) адрес следующей обрабатываемой ячейки, чтобы спекулятивно загрузить ее в кэш еше до того, как в ней возникнет необходимость. Естественно, что при всей прозрачности аппаратной предвыборки организовать структуры данных желательно так, чтобы процессор пореже ошибался в своих предсказаниях (а в идеале — не ошибался вообще). При грамотном обрашении команлы управления кэшированием (равно как и аппаратная предвыборка) ускоряют типовые операции с памятью, по крайне мере, в три-пять раз, а в некоторых случаях и более того! К сожалению, оптимизацию кэширования невозможно возложить на плечи компилятора. Она осушествляется на уровне структур данных и алгоритмов их обработки, а оптимизировать алгоритмы компиляторы еше не научились (и маловероятно, что научатся в обозримом будушем).

Поэтому эту работу программистам приходится вьшолнять самостоятельно. Программная предвыборка в процессорах К6+ и Р-1П Полдержка программной предвыборки имеется как в процессоре Кб (и совместимом с ним микропроцессоре х(А СЗ), так и в Р-!11~Р-4, однако их реализации различны и к тому же несовместимы лруг с другом. Это печальное обстоятельство существенно снижает популярность предвыборки, поскольку программистам приходится либо реализовывать использующие ее функции в двух вариантах: один для 1ше1, другой — для АМО (Ъ'1А), либо ограничивать аудиторию пользователей каким-то одним процессором.

И то, и другое влечет за собой большие излержки, зачастую не компенсируемые увеличением производительности приложения. Появление процессора АМ0 Ай!оп, полдерживаюшего "дуальный" набор команд предвыборки, обещает исправить сложившуюся ситуацию, хотя на этом пути еше много нерешенных проблем и программному управлению кэшированием ох как не просто отвоевать свой кусок места под солнцем. Ввилу прекрашения производства Кб и его неизбежного вытеснения с рынка команды предвыборки из набора З(З !чов! в настоящей главе рассматриваются лишь кратко, а основное внимание уделяется командам предвыборки, входяшим в состав набора ММХ-команд, который полдерживается практически всеми современными процессорами. Поэтому к прелвыборке целесообразно прибегать лишь в действительно крайних случаях, когда никакими лругими путями обеспечить требуемое быстродействие уже не удается.

Предвыборка в процессорах АМО К6~АФ1оп и Ч1А СЗ В процессорах К6ХАг!1!оп и Ч1А СЗ программная предвыборка осушествляется одной из двух инструкций ргеге~сь или рэеее~сьи. Суффикс на конце последней сообщает процессору, что загружаемые данные планируется моди- 354 Глава 3 фицировать. Это отнюдь не означает, что ланные, загружаемые посредством рт тяесл, модифицировать нельзя. Модифицировать их можно, но нежелательно, т. к, в этом случае пропессор вынужден совершать дополнительный цикл, изменяя атрибуты соответствующей кэш-линейки с эксклюзивной на модифицируе,и)оо. гэ Эксклюзивные, т.

е. неизменяемые кэш-линейки при их вытеснении из кэша просто "выбрасываются" в битовую корзину, иначе называемую устройством гаеяг ш или "черной дырой". с) Модифицируемые же кэш-строки независимо от того, были ли они реально модифицированы или нет, всегла вытесняются в оперативную память (кэш вышестоящего уровня), что требует определенного количества тактов процессора (подробнее сгь раэд. "Протокол МЕЯ" этой главы). Инструкция ряевеесь просто инициирует запрос ячейки памяти, точно так, как это делает любая команла, обращаюгцаяся к памяти, но, в отличие от последней, ряегягсь не помещает загружаемые ланные ни в какой регистр, более того, она вообще не дожидается окончания загрузки этих данных, тут же возвращая управление.

Преждевременное завершение инициатора запроса еще не освобождает кэш-контроллер от обязанности выполнения этого запроса, но если запрошенная ячейка уже находится в кэше первого уровня, то ничего не происходит и инструкция г: =е.ь ведет себя аналогично команде яог (нет операции). В противном случае кэш-контроллер обрагцается к кашу второго уровня, а если искомой ячейки не оказывается и там, то к оперативной памяти (кашу третьего уровня), целиком заполняя соогветствующие кэш-строки всех кэшей нижестоящих уровней. (Длина кэш-строк составляет 32 байта на АМЮ Кб (ИА СЗ) и 64 байта на Аг!1!оп~(эпгоп.) Поскольку кэш-контроллер работает независимо от вычислительного конвейера процессора, прелвыборка позволяет загружать очерелную порцию ланных параллельно с обработкой предыдущей. Если время загрузки данных не превышает времени их обработки, то простоя процессора вообще не происходит, поскольку вычислительный конвейер "вращается" безостановочно, а время доступа к памяти полностью маскируется.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее