Основные параметры процессоров (Часть 2)

Основные параметры процессоров (Часть 2)

Продолжим первую часть статьи.

3. Кэш-память. Кэш-память или попросту кэш – это набор памяти, встроенной в процессор и работающей с очень большой скоростью. К примеру, средняя пропускная способность оперативной памяти 4-10 Гб/с, а кэша первого уровня – 90-150 Гб/с. Чтобы не быть голословным, приведу скриншот Everest, показывающий скорость копирования данных оперативной памяти и кэша:

Пропускная способность памяти и задержки

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

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

Всего существует 3 уровня кэша:

  • первый уровень (L1)
  • второй уровень (L2)
  • третий уровень (L3)

Разумеется, система логических функций работает не без промахов, но в современных процессорах процент совпадений информации, нужной в данный момент и находящейся в кэше 1-го уровня, равен 90%. Другими словами, 90% времени процессор работает без задержек (на рисунке задержка кэша L1 — 1нс=10^-9 секунд). Еще 9% времени от оставшихся 10% (когда данные не находятся в L1) данные подгружаются из кэшей L2 и L3. У первого из них время доступа в 3 раза больше и скорость копирования в 3-4 раза меньше, у второго – время доступа еще в 3 раза больше и скорость копирования также в 3-4 раза меньше. Т.е. мы наблюдаем иерархическую структуру: чем выше уровень кэша, тем больше латентность (задержки, время доступа) и меньше скорость памяти. Остальной 1% времени идет работа с оперативной памятью. Кэши L1 и L2 встроены в кристалл процессора, а L3 вынесен за его пределы из-за больших размеров и повышенного тепловыделения. Кстати, L3 присутствует не у всех современных процессоров (например, у Athlon его нет). Еще один важный момент – кэш L1 и L2 отдельный для каждого ядра, а L3 общий. В целом кэш L3 более медленный (его скорость соизмерима с оперативной памятью, но время доступа на порядок меньше). Кэш L3 используется не только для подгрузки необходимых данных из оперативной памяти, но и для уменьшения нагрузки на процессорную шину (часть информации между ядрами передается не напрямую, а через кэш L3). Напомню — доступ к нему имеют все ядра.

Кстати, промахи кэша (когда данных нет в кэше) классифицируются на следующие подгруппы:

  • промах по чтению инструкций
  • промах по чтению данных

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

Вернемся к работе с оперативной памятью. Сейчас на рынке ОЗУ бум по увеличению скорости памяти и ее объема. Первый параметр – это чистый маркетинг для обычного пользователя. Т.к. ОП используется только в 1% от общего процессорного времени, то даже увеличение ее скорости в 2 раза приведет к тому, что система в целом станет быстрее всего лишь на 1%. Да, конечно, существуют задачи, критические к пропускной способности памяти, но это в основном сервера. Также «лишняя скорость» ОП будет полезна в задачах, где данные считываются в произвольном порядке. Здесь процент попаданий кэша существенно снизится, а время работы с оперативной памятью вырастет и большая частота с низкой латентностью будут нелишними. Но такие задачи опять же стоят перед серверами. Пример: веб-сервер обрабатывает запросы пользователей. В этом случае очень сложно предсказать, на что нажмет пользователь и что придётся загружать.

Следующий параметр кэша – ассоциативность. Она определяет, в скольких местах кэша будет храниться потенциально нужная информация. Количество мест определяется степенью ассоциативности n. При большей степени ассоциативности процент попаданий увеличивается, но также увеличивается и время задержки.

Ассоциативность кэша

Организация ассоциативности кэша у Intel и Amd реализована по-разному. У Intel L1 4 и 8 ассоциативен (для инструкций и данных соответственно). Расчет такой: инструкции должны подгружаться с меньшими задержками, а для данных будет обеспечен больший процент попаданий. Размеры L1 у Intel – 32Кб для данных и столько же для инструкций. У Amd уровень ассоциативности 2, а размер в 2 раза больше. Меньший уровень ассоциативности минимизирует задержки, а больший объем обеспечивает необходимый процент попаданий. Кэш L2 и L3 не рассматриваем, т.к. их общее время использования  <10% и ассоциативность здесь не играет большой роли. В кэше L3 большая ассоциативность желательна для увеличения процента попаданий, т.к. при промахе придется обращаться в ОП.

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

Часть 1. Разрядность. Тактовая частота.

Часть 2. Кэш-память.

Часть 3. Функции процессоров и расширения

Часть 4. Техпроцесс, сокет.

Комментарии. Добро пожаловать в обсуждение!

  1. Весьма интересная статья — профессионально и по сути. Я не всё там понял, но это, наверное, связано со спецификой темы. Основные идеи понятны, я думаю, при внимательном прочтении. Но, может быть, с учётом ориентированности сайта, градус научности можно немного сбросить? :) Хотя, вообще, трудно сейчас найти статьи на железные темы, в которых всё пишется чётко и ясно — в этом плане я очень доволен — сам для себя много интересного обнаружил.

  2. Mark написал:

    Весьма интересная статья — профессионально и по сути. Я не всё там понял, но это, наверное, связано со спецификой темы. Основные идеи понятны, я думаю, при внимательном прочтении. Но, может быть, с учётом ориентированности сайта, градус научности можно немного сбросить? Хотя, вообще, трудно сейчас найти статьи на железные темы, в которых всё пишется чётко и ясно — в этом плане я очень доволен — сам для себя много интересного обнаружил.

    Спасибо большое! Значит буду пытаться писать еще понятнее, т.к. основная задумка сайта — писать настолько понятно, чтобы каждый мог без проблем разобраться в теме. Потом будет и FAQ терминов, отсортированный по степени важности, и «размышлизмы» на вольные тематики, а сейчас хочется наработать базу — костяк статей.

Ваш комментарий

Ваш e-mail не будет опубликован.

*


*


Твитнуть