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

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

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

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

Соответственно, четырехассоциативный кэш целиком насыщается при превышении размера кэш-памяти в 1,25 раза; а восьмиассоциативный и того хуже — 1,125. Выхо- 290 Глава 3 дит, что высокая ассоциативность несет в себе не только лаюсы, но и минусы и максимально достижимый размер кэшируемых данных составляет САСНЕ 61УЕ САСНЕ.Б1ХЕ (Кбайт) 'тт'АУ Это правило не обходится без исключений — см, равд, "Особенности кзшподсистемы процессоров Р-Н и Р-Ш" згпой главы. Однако все же "вернемся к нашим баранам" (в смысле графикам). Действительно, насыщение каша наступает при обработке блока в 48 Кбайт, т.

е. при превышении емкости кэш-памяти на 16 Кбайт, что практически (в смысле в пределах погрешности измерений) совпадает с размером одного кэш-банка (двухассоциативный кэш процессора Кб содержит два банка по !6 Кбайт каждый), что и требовалось доказать.

Возьмем другой пример (рис. 3.20). Четырехассоциативный 16-килобайтовый кэш процессора Се!егоп-300А "сдыхает" ровно на отметке в 20 Кбайт, что полностью соответствует приведенной выше формуле (16 е — = 16 + 4 = 20 ), 16 4 подтверждая ее справедливость. Рис. 3.20. Зависимость скорости обработки от размера блока на Се)егоп-ЗООА Кэш В кэше второго уровня Время загрузки данных из кэша второго уровня составляет порядка Р.СРП тактов процессора в пересчете на одну 32-битовую Г. Е2.САСН Е * 32 ячейку, где Г.Е2.САСНŠ— частота работы кэша второго уровня, Р.СР()— частота ядра, а )л1.В138 — разрядность локальной кэш-шины. Латентность кэш-контроллера и блока интерфейсов с шиной здесь не учитывается, т.

к. при конвейерной обработке данных ей можно полностью пренебречь. Таким образом, на процессоре Кб-333/66 чтение блока, "вылезающего" за пределы кэш-памяти первого уровня, но еще умещающегося в кэш-памяти второго, должно осуществляться приблизительно в 2,5 раз медленнее. В действительности же (особенно на неразвернутых циклах) разрыв в производительности будет даже меньшим, поскольку параллельно с загрузкой данных из кэша второго уровня процессор может выполнять другие команды, частично компенсируя тем самым падение быстродействия.

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

Впрочем, этой задержке можно противопоставить, например, введение специального буфера, расположенного между кэшем первого уровня и блоком интерфейсов с шиной. Процессор Кб, однако, не имеет такого буфера и потому в данном случае время записи дан- Г.СРП ных в кэш второго уровня составляет порядка 2* Г.

Е2.САСН Е *— 32 тактов процессора, что и подтверждается графиком (см. рис. 3.20). Выход из каша второго уровня (мнимый) Придерживаясь самых общих рассуждений о природе кэша, попытаемся определить его размер по характеру изменения скоростного показателя с ростом размера обрабатываемого блока. Первое, что сразу бросается в глаза,— это внезапный скачек кривой удельной скорости записи при пересечении отметки в 128 Кбайт (см. рис. 3.19). Синхронно с ней изменяется и кривая чтения, пускай ее излом и менее ярко выражен, но он все-таки есть. Выходит, размер кэша второго уровня составляет 128 Кбайт? Но это не согласуется с показаниями В108, которая оценивает его размер в 512 Кбайт, что в четверо больше! Нас "надули" ?! Или Глава 3 кэш работает неправильно? Можно, например, предположить, что кэш состоит из нескольких микросхем статической памяти с различным временем доступа.

Но не спешите возвращать материнскую плату обратно продавцу! Она вполне исправна и полностью соответствуе~ заявленным характеристикам. Полученный же результат объясняется тем, что ячейки кэшируемой памяти могут соответствовать не любым, а строго определенным кэш-линейкам. Несмотря на то, что свободное место в кэше еще есть, обрабатываемый блок по мере его роста начинает претендовать на кэш-линейки, занятые другим "хозяйствующим субъектом".

Это может быть и код (впрочем, в нашем случае основной цикл целиком помещается в сверхоперативной памяти первого уровня), и стек, и интенсивно используемые переменные. Наша программа, действительно, интенсивно использует стек, вызывая каждый раз функции ьз и яа для замера временных интервалов выполнения цикла, сохраняя результат в локальной переменной ьче. (см. исходный текст программы (см. листинг 3.1). Наконец, около 6 Кбайт требует для своей работы функция ре ьее, не говоря уже о системе ввода/вывода операционной системы и переключении задач.

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

Выходит, мало того, что требуется уложиться в кэш второго уровня, необходимо еще и ухитриться эффективно распределить свободное пространство между обрабатываемыми данными, стеком и кодом! Это — одна из сложнейших задач оптимизации, в общем виде не имеюьцая решения. Не прибегая к анализу кода операционной системы и всех запущенных задач, невозможно определить интенсивность использования тех или иных кэшлинеек, а, значит, невозможно спланировать и оптимальную стратегию размещения обрабатываемых данных. Эффективная емкость ката второго уровня только в исключительных случаях совпадает с его физической емкостью и чем меньше ассоциативность кэгца, тем выше вероятность возникновения взаимных конфликтов. Выход из кэша второго уровня (настоящий) Изменение скоростного показателя при выходе за границы кэша второго уровня описывается теми же самыми формулами, что и выход за границы кэша первого уровня, т.

е. на участке от 1.2.САСНЕ.ЯХЕ до 1 2.САСНЕ.$1УЕ + = 12.САСНЕ51УЕ*%Ат' кривая чтения "взлетает" с коэффициентом про- Е.) 2.САСНЕ * )х(.САСНЕ.В()Б порциональности , где Г.(.2.САСНŠ— час- Е.МЕМ "1К.МЕМ.В()3 Кэш тота работы кэша, Г.МЕМ вЂ” частота работы памяти, )х(.САСНЕ.В()Б — разрядность шины кэш-памяти второго уровня, а Х.МЕМ.В()Б — разрядности шины памяти. Из этой формулы следует, что процессоры, не имеющие собственного кэгна второго уровня, практически никак не реагируют на его переполнение.

Действительно, кэш, расположенный на материнской плате, работает на частоте системной шины по формуле 2-1-1-1, что вполне сопоставимо со скоростью синхронной динамической памяти, работаюцгей на тех же частотах по формуле 3-1-1-1 или даже 2-1-1-1! Процессоры с интегрированным кэшем второго уровня ведут себя совершенно иначе, что и не удивительно, т. к, частота работы интегрированного кэша (даже если он размещен не на кристалле, а смонтирован на отдельном картридже) по крайней мере вдвое/вчетверо превосходит частоту системной шины и, что тоже не маловажно, кэш-контроллер обладает значительно меньшей латентностью, нежели контроллер оперативной памяти. Поэтому старшие представители процессоров семейства х86 выход за пределы кэша второго уровня переносят крайне "болезненно", теряя в производительности порядка трех крат.

Особенности кэш-подсистемы процессора АМ0 АМ|оп Процессор АМ(3 Агп(оп в целом ведет себя подобно своему предшественнику АМ(3 Кб, тем не менее, внутренняя архитектура его кэш-подсистемы претерпела значительные изменения. В частности, впервые за всю историю процессоров семейства х86 в нем реализован эксклюзивный кэш второго уровня, эффективная емкость которого по заверениям разработчиков равна сумме размеров кэш-памяти обоих уровней, т. е. в данном случае: 64 + 256 = 320 Кбайт.

Доверие — это прекрасно, но все-таки давайте попробуем "прокатиться" на этой "машинке" сами! Ну и где же (рис. 3.21) обещанные нам 320 Кбайт? Хорошо, пусть "ступенька", расположенная у отметки в 257 Кбайт, вызвана конфликтом стека и обрабатываемых данных, но ведь тотальное падение производительности начинается уже с 273 Кбайт, что много меньше ожидаемого (читай; заявленного разработчиками) значения! Тем не менее, на участке от 273 Кбайт до 320 Кбайт время доступа растет не линейно, а подчиняется формуле 1/х, т. е. эксклюзивная архитектура всетаки смягчает падение производительности при выходе за границы кэша второго уровня. Во всяком случае, эффективный объем кэша второго уровня оказался не меньше, а даже чуть-чуть больше его физической емкости, в то время как аналогичный по размеру кэш процессора Р-П1 начал "валиться" уже на 194 Кбайт (рис. 3.22).

Глава 3 294 Рис. 3.21. Зависимость скорости обработки от размера блока на АМ0 АФ!оп Рис. 3.22. Зависимость скорости обработки от размера блока на Р-П! Кэш Особенности кэш-подсистемы процессоров Р-Н и Р-!П Несмотря на свою в общем-то далеко не передовую !пс)цз!те-архитектуру, кэш-подсистема процессора Р-П, а уж тем более его преемника Р-Ш, всухую обыгрывает Аг!з!оп, значительно обходя его в производительности.

Благодаря своей 256-битовой шине процессор Р-П1 может загружать 32- байтовый пакет данных из кэша второго уровня всего за один такт против девяти тактов, которые тратит на это Агп!оп (т. к. при ширине шины в 64 бита протяженности кэш-линеек составляет 64 байта, а кэш второго уровня работает по формуле 2-1-1-1-1-1-1-1, в сумме мы и получаем 9 тактов). Взгляните на рис. 3.22, — видите, кривая чтения (она обозначена цифрой 1) на всем протяжении остается идеально горизонтальной и "ступеньки" между кэшем первого и второго уровней на ней нет! Эффектив«ый размер юаа перового уровня процессора Р-ззз равен размеру ююа второго уровня, что составляет лэб Кбайт.' Правда, с записью памяти дела обстоят не так благоприятно и некоторое падение производительности при выходе за границы кэша первого уровня все же наблюдается, но оно так мало, что им можно безболезненно пренебречь.

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

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

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

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