Когда программа ограничена пропускной способностью памяти?

Я хочу знать, ограничена ли программа, которую я использую и который требует большой памяти, пропускной способностью памяти.

Когда Вы ожидаете, что это произойдет? Это когда-либо происходило с Вами в реальном сценарии?

Я нашел несколько статей, обсуждающих этот вопрос, включая:

Первая ссылка немного стара, но предлагает, чтобы Вы выполнили меньше, чем приблизительно 1-40 операций с плавающей точкой на переменную с плавающей точкой для наблюдения, этот эффект (исправьте меня, если я неправ).

Как я могу измерить пропускную способность памяти, которую использует данная программа и как я измеряю (пиковую) пропускную способность, которую может предложить моя система?

Я не хочу обсуждать любые сложные вопросы кэша здесь. Я только интересуюсь коммуникацией между ЦП и памятью.

13
задан Jason Plank 15 August 2011 в 12:27
поделиться

3 ответа

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

Чтобы определить производительность памяти вашей программы:

  1. Измерьте время выполнения для диапазона размеров проблем.
  2. Подсчитайте вручную, сколько данных ваша программа читает и записывает из памяти и в память для одного и того же диапазона размеров проблем.
  3. Разделите использование памяти по времени.

ВНИМАНИЕ: это грубый подход, и его следует использовать только для выяснения того, следует ли обращать внимание на проблемы с пропускной способностью памяти. Если ваши приблизительные подсчеты говорят вам, что ваша программа использует менее 50% доступной пропускной способности памяти (цифры, полученные вами из результатов теста STREAM), вам не следует больше об этом думать.

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

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

Наконец, да, каждый раз, когда я запускаю один из наших научных кодов, скорость выполнения ограничивается пропускной способностью памяти.Как показывает практика, если код выполняет 10% FLOPS, обещанных спецификацией процессора, я счастлив.

8
ответ дан 1 December 2019 в 23:14
поделиться

Широкий и общий объем вашего вопроса делает практически невозможным ответить в каком-либо более широком смысле.

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

Как я могу измерить пропускную способность памяти, которую использует данная программа, и как измерить (пиковую) пропускную способность, которую может предложить моя система? Первый может быть измерен (программно) только в том случае, если ЦП поддерживает какой-то счетчик производительности, который подсчитывает количество циклов остановки ЦП из-за ожидания завершения доступа к памяти.
Второй можно легко измерить, обычно это заполнение / копирование больших областей памяти. Существует бесчисленное количество доступных программ тестирования, которые вы можете использовать (я не использовал одну из них много лет, но на ум приходят Sandra и PCMark . Должно быть множество бесплатных утилит, которые сделайте это тоже).

3
ответ дан 1 December 2019 в 23:14
поделиться

Приложения с интенсивным использованием памяти или приложения, требующие много памяти, ограничены:

  1. Скоростью оперативной памяти вне процессора
  2. Скоростью кэша внутри процессора
  3. Количеством объектов, совместно использующих шину памяти
  4. Виртуальной памятью
  5. . шину памяти
  6. Виртуальная память

К сожалению, эти ограничения не являются основными факторами, влияющими на производительность программы. Более значительными факторами являются: Количество процессоров, операции ввода/вывода и другие задачи, выполняемые вместе с вашей программой. Изменение этих параметров повлияет на вашу программу больше, чем изменение параметров, влияющих на пропускную способность памяти.

1. Скорость оперативной памяти вне процессора
Процессор должен выходить за пределы своей оболочки и получать инструкции и данные из оперативной памяти. Оперативная память имеет разные скорости, с которыми она может получить доступ к ячейкам и вернуть биты обратно процессору. Как правило, это обозначается в единицах Гц. Чем быстрее память, тем меньше времени тратит ваш процесс на загрузку инструкций и данных и тем быстрее выполняется ваша программа.

Примечание: Увеличение скорости памяти сверх возможностей процессора не приведет к увеличению производительности. Это меняет узкое место с оперативной памяти на процессор. См. также #3.

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

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

3. Количество объектов, совместно использующих шину памяти
Шина памяти - это как шоссе, по которому объекты добираются до оперативной памяти. Как и в случае с шоссе, большее количество полос означает более высокую пропускную способность (например, ширина 16 бит против 32 бит). Многие шины также имеют предел скорости, и чем выше предел, тем быстрее доступ. Вероятно, наиболее заметным понятием является количество субъектов, подключенных к шине. Как и в случае с автомагистралями, большее количество пользователей замедляет движение. В большинстве шин памяти только один объект может использовать ее одновременно; другие объекты должны ждать. Уменьшение количества сущностей, которым необходимо использовать шину памяти, ускорит работу вашей программы.

Некоторые общие объекты, совместно использующие шину памяти: CPU, контроллеры DMA, видеопроцессоры, звуковые процессоры и сетевые процессоры или процессоры ввода-вывода.

4. Виртуальная память. Во многих современных компьютерах используется виртуальная память. Если программе требуется больше памяти, чем доступно в оперативной памяти, операционная система меняет местами участки памяти с участками на жестком диске. Это стоит больше времени производительности, чем снижение скорости работы с памятью. Программа, интенсивно использующая память, более эффективна, если использует только выделенную ей память, чем всю память, которая ей может понадобиться. Сокращение этих виртуальных подмен памяти ускорит работу программы.


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

7
ответ дан 1 December 2019 в 23:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: