Smart cache что это
HPE Smart Cache: а вы уже ускоряете?
Практически все производители RAID-контроллеров, уже представили модели контроллеров, которые поддерживают кэширование на SSD, а сегодня, мы посмотрим на то, как это было реализовано компанией HPE на базе её контроллера HPE Smart Array P440ar.
И так, в качестве подопытной системы у меня в руках находится HPE ProLiant DL380 Gen9 в следующей конфигурации:
Процессор: Intel Xeon Processor E5-2643 v3 x2
Память: 8Gb x4
HDD: 600GB SAS 15K x4
SSD: Intel S3700 400Gb
Жёсткие диски были собраны в Raid10, а тестирование проводилось, соответственно, в двух вариантах — с включением HPE Smart Cache и без него (с использованием кэша контроллера, 2Gb).
Думаю что с накопителем Intel S3700 те, кто интересовался этой тематикой, уже давно знакомы. Вышел он уже сравнительно давно и крайне положительно себя зарекомендовал. Сама компания относит их к наивысшему классу — High Endurance и по факту рекомендует их использоваться для высоконагруженных задач типа OLTP, VDI, Big Data, а для кэширования данных менее дорогие — Value Endurance, но, как говорится — что имеем. Хуже, во всяком случае, от этого точно не будет, но для конечных потребителей, это, естественно, увеличит стоимость конфигурации. В любом случае — вы вольны использовать абсолютно любые SSD диски, компания HPE даёт рекомендацию лишь по их объёму — он должен составлять 5-10% от ёмкости вашего массива. Так же стоит оговориться что не все контроллеры поддерживают HPE Smart Cache и младшие модели контроллеров лишены это возможности. Так же Smart Cache будет работать только на серверах 8 и 9 поколений, т.е. повысить производительность дисковой подсистемы старых серверов — не получится, а жаль.
HPE Smart Cache в нынешней реализации позволяет кэшировать как операции чтение, так и на запись, поэтому не имеет каких-то ограничений и может использоваться для любых приложений, которые занимаются обменом информации с дисковой подсистемой.
И так, перейдём к цифрам. Ввиду крайне ограниченного времени на проведение тестов — они будет ограничены использование только iometer.
Для этого теста был выбран наиболее «сложный» и ресурсоёмкий тест — База данных. Конфигурация теста:
Disk Size — 209 715 200 (100Gb)
# of Outstanding IOs — 256
С Database patter можно ознакомиться вот здесь
Что касается «классификации» SSD кэша в иерархии ускорения производительности дисковой подсистемы. В принципе у нас существует для этого три способа. Первый, это тема нашего сегодняшнего материала — SSD кэш, второй — переход на All-flash, а третий, это так называемые IO акселераторы, о которых я уже в своё время рассказывал и тестировал — Huawei Tecal ES3000, Fusion-io ioDrive (которые под своим логотипом предлагает и компания HPE) и т.д. Данные устройства способны ещё сильнее увеличить скорость обработки ваших данных, но и стоимость этих решений будет на порядок выше, нежели использование кэша на SSD. Пожалуй, он является наиболее выгодным с точки зрения цена/производительность.
Подводя итог, можно сказать, что при необходимости увеличения производительности дисковой подсистемы сервера, с наименьшими затратами, использование SSD-кэша является вполне оправданным. При относительно невысокой стоимости данного решения (в стоимость решения входит сам SSD + лицензия на HPE Smart Cache для контроллера, а также стоит отметить, что если у вас в сервере установлено несколько RAID-контроллеров — лицензия приобретается для каждого из них отдельно), мы получаем значительный прирост быстродействия.
Влияние кэша L3 на производительность процессоров Intel
Содержание
Содержание
Проверяем, какое влияние оказывает объём L3 Cache на производительность процессоров Intel Core 10 серии как в рабочих приложениях, так и в играх. Выясняем, почему нельзя использовать старшие процессоры для эмуляции младших моделей.
Что такое кэш процессора и зачем он нужен
Кэш процессора – это очень быстрая память. Он выполняет функцию буфера (временного хранения данных), из которого процессор очень быстро может получить необходимую для обработки информацию.
Современные процессоры, будь то Intel или AMD, в основном имеет 3 уровня кэша:
В многоядерных процессорах каждое ядро имеет выделенный кэш L1 и L2 Cache, а вот к L3 Cache чье влияние на производительность мы и будем сегодня изучать имеют доступ все ядра процессора.
Когда процессору необходимо получить данные, поиск он начинает с кэша первого уровня. Если нужной информации в нем нет, он повторяет поиск в кэше второго и третьего уровня что несколько увеличивает время на выполнение операции. Если поиск завершился неудачей процессору приходится обращаться к оперативной памяти что значительно увеличивает время выполнение операции.
Именно поэтому чем больше объём кэша, тем больше вероятность нахождения в нем нужных данных, а значит сократить задержек. Но и у большого кэша есть и свои минусы, о которых чуть позже.
Более подробно о работе кэша процессора и зачем он нужен можно ознакомиться в статье «Что такое кэш в процессоре и зачем он нужен»
В тестировании участвую 4 процессора Intel из 10 серии:
Чтобы измерить именно влияние объёма L3 Cache на производительность процессора, зафиксируем частоту ядер всех участников на отметке 4000 MHz, а у старших моделей дополнительно отключим ядра, чтобы конфигурация ядер всех участников составила 4 ядра с HT, как и у младшей модели intel Core i3.
Частота контроллера памяти во всех случаях составила 3400 MHz. Оперативная память работала на частоте 2133 MHz по стандарту JEDEC c таймингами 15-15-15-36 CR2.
Тестовая конфигурация
Тестирование в бенчмарках
В Aida64 Cache and Memory Benchmark разный объём L3 Cache оказывает незначительное влияние на прописную способность памяти, также можно заметить, что процессор с более больший кэш 3 уровня несколько отстает по скорости и задержкам от своих младших собратьев с меньшем кэшем.
Бенчмарк CPU-Z как и Geekbench 5 не питает большой любви к объёму кэша, хоть и прослеживается незначительное изменение в производительности.
Похожая картина наблюдается и в бенчмарке 3DMark Time Spy.
А вот программы архивации, в частности, WinRAR, отдают предпочтение процессору с большим кэшем, разница в производительности доходит до 35 %.
7-Zip также положительно откликается на увеличение объёма кэша, разница между моделью i3 с L3 Cache 6 mb и процессором i9 L3 Cache 20 mb составляет порядка 20 % в операциях упаковки.
Получив такую неоднозначную реакцию бенчмарков на объём кэша третьего уровня, переходим к тестированию в играх.
Тестирование в играх
Скандинавская сага о набегах викингов хорошо откликается на изменение объёма L3 кэша, и если переход от процессора с 6 мегабайтами кэша на 12 кажется не столь значительным, то переход на модель i9 c 20 мегабайтами кэша 3 уровня составляет уже 15%.
Подобная картина наблюдается во всех протестированных играх, где-то влияние больше где-то меньше, но оно безусловно.
Это еще раз доказывает факт того что использовать для тестирования необходимо оригинальные модели процессоров а не старшую модель для эмуляции младших путем отключения ядер процессора в биос материнской платы.
Выводы
Изменение объёма кэша 3 уровня положительно сказывается на игровой производительности процессора. Большинство протестированных программ практически не реагируют на его изменение, исключением являются программы-архиваторы.
В целом объем кэша 3 уровня играет немалую роль в производительности процессора, но самостоятельно пользователь увеличить его объем, увы, не сможет.
Выход процессоров AMD Zen 2 с увеличенным до 32 мегабайт кэшем 3 уровня должен был заставить инженеров Intel задуматься, ведь процессор intel Core i3 10100 c кэшем 3 уровня 20 мегабайт мог бы составить конкуренцию даже процессорам Ryzen 5000 серии.
В то же время у большого кэша есть и недостатки — это большая площадь, занимаемая на подложке, и возросшие задержки, но эти недостатки не кажутся такими серьезными на фоне роста производительности.
Технологии современных процессоров Intel
Введение
В этой статье будут рассмотрены лишь самые основные технологии, применяющиеся в процессорах Intel, которые сильнее всего влияют на их производительность и об использовании которых хорошо известно. Надо отметить, что здесь не будут рассмотрены чипы до 2009 года, так как те чипы на данный момент устарели и ценность представляют лишь самые мощные решения того времени.
Все мы знаем, что в разных линейках процессоров применяются разные технологии, также это зависит от позиционирования модели и ее цены. Посмотреть наличие основных технологий в линейках процессоров Intel можно в этой статье. Там нет про серверные чипы, но будьте уверены, что они достаточно технологичны. А если интересно узнать про интегрированную графику от Intel, то у нас для этого есть отдельная статья. Про технологии AMD можно прочесть по ссылке.
Вы спросите: «А как узнать о наличии тех или иных технологий в моем процессоре?». Для этого нужно зайти сюда и найти нужный вам процессор. После этого ищите вот эти поля.
Turbo Boost
Эта технология позволяет автоматически увеличить тактовую частоту процессора свыше номинальной (саморазгон), что позволяет увеличить производительность чипа на некоторое время.
В основном это используется для повышения производительности в однопоточных приложениях или плохо оптимизированных под многпоточность, где производительность одного ядра важнее их количества. В таком случае нагрузка снимается в других ядер и освобожденная мощность уходит на некоторую часто ядер. В другом случае эта технология просто позволяет на время поднять производительность чипа за счет повышения тактовой частоты.
Значение этого саморазгона зависит от множества факторов:
Технология Turbo Boost 1.0 применялась в процессорах Nehalem и Westmere. Далее стала применяться чуть усовершенствованная версия Turbo Boost 2.0. Все отличия выглядят так.
Признак | 1.0 версия | 2.0 версия |
---|---|---|
Шаг множителя | 133 Мгц | 100 Мгц |
TDP | не превышает | на короткое время превышает |
Также стоит отметить более плавное повышение величины разгона с уменьшением числа активных ядер у 2.0 версии. Вторая версия в первые несколько секунд после долгого простоя повышает тактовую частоту выше, чем она должна быть для нормального TDP, но из-за немгновенного прогрева чипа это не критично. Затем же разгон скидывается до не превышающего TDP уровня. Похожий алгоритм можно увидеть в NVIDA GPU Boost 2.0, про которую можно посмотреть тут.
Особенно большим Turbo Boost может быть у мобильных процессоров, например в Intel Core M.
Интересный факт: у модели Intel Core m7-6Y75 максимальный Turbo Boost составляет c 1,2 Ггц до 3,1 Ггц!
Hyper-Threading
Или по-другому гиперпоточность. Из-за этой технологии операционная система определяет одно физическое ядро, как два логических и в соответствии с этим отдает команды. Так получается, что одно ядро работает в 2 потока. Гиперпоточность позволяет таким образом загрузить блоки процессора находящиеся в простое и увеличить его эффективность.
Надо отметить, что два логических ядра проигрывают двум физическим, что хорошо демонстрирует превосходство Core i5 (4 ядра без HT) над Core i3 (2 ядра с HT). Но одно физическое ядро c Hyper-Threading будет производительнее, чем без него, и это видно на примере Core i7 (4 ядра c HT) и Core i5 (4 ядра без HT).
Особенно хорошо эта технология будет помогать в приложениях, умеющих хорошо распараллеливать процессы на различные потоки.
Burst
Эта технология применяется в мобильных процессорах Intel Atom (про то, как выбрать мобильный процессор можете прочесть по ссылке), а также в версиях Celeron/Pentium для мобильных устройств. Эта технология очень схожа с Turbo Boost. Она также повышает таковую выше номинальной, если выполняются некоторые условия.
Здесь также есть две версии этой технологии. Только во второй обмен мощностью может быть и с дисплеем, и c графическим чипом, и с системой обработки изображения с камеры, а не только с процессорными ядрами.
SpeedStep
Это такая технология энергосбережения, призванная динамически менять тактовую частоту и напряжение питания в зависимости от нагрузки. Ведь зачем процессору работать на полную, если нагрузки никакой нет? Энергопотребление процессора приблизительно прямо пропорционально зависит от его частоты. Это значит, что снизив частоту в 2 раза, мы снизим в 2 раза и энергопотребление. Также снизится и тепловыделение и, следовательно шум от кулера. А от напряжения энергопотребление зависит во второй степени. Это уже значит, что снизив напряжение питания в 2 раза, мы снизим энергопотребление в 4 раза! Но, к сожалению менять напряжение так сильно нельзя и даже слабое изменение питания может сделать работу невозможной. В основном это снижение происходит в состоянии очень низкой загрузки при помощи функции Enhanced Halt State (или C1E). Так что львиная доля экономится за счет снижения тактовой частоты.
У этой технологии есть несколько версий: SpeedStep, SpeedStep II и SpeedStep III, но мы не будем заострять на этом внимание, будет достаточно и описания. Можно лишь упомянуть, что представлена она была в далеком 2001 в процессоре Mobile Pentium III.
Speed Shift
Эта технология является продолжением развития SpeedStep. Она работает эффективнее и быстрее реагирует на повышение нагрузки. Это значит, что она процессор быстрее достигает нужной тактовой частоты и быстрее справляется с задачей. Speed Shift может работать только в процессорах, начиная с поколения Skylake, так как реализована аппаратно. Также она должна поддерживаться операционной системой и на данный момент с этим уже справляется Windows 10.
Также более усовершенствованная версия данной технологии была представлена в Intel Kaby Lake.
Intel Quick Sync Video
Это технология Intel, предназначенная для аппаратного ускорения кодирования и декодирования видео. В этом случае в графическом ядре есть специальная интегральная схема, предназначенная для этого. Благодаря этого эта технология справляется со своей задачей лучше, чем видеокарты – и быстрее, и более энергоэффективно, ведь в видеокарте нет блоков, предназначенных специально для этой функции. Но, как и в случае с другими технологиями для аппаратного кодирования/декодирования видео, качество обработки хуже, чем в случае выполнения этой задачей при помощи процессора.
Существует две версии этой технологии. Первая было представлена вместе с микроархитектурой Sandy Bridge в 2011 году. Вторая версия увидела свет в в 2012 году при выходе Ivy Bridge. Вторая версия движка имела несколько изменений, например улучшенный медиасемплер, позволивших ей заметно улучшить скорость работы, качество видео, а также получить поддержку высоких разрешений. Существенный недостаток технологии выходит из того, что она встроена в графическое ядро процессора – ее функционирование невозможно, когда в компьютере основной является дискретный видеоадаптер.
Extreme Memory Profile (XMP)
Эта технология позволяет пользовать заранее сделанными профилями разгона оперативной памяти. Это может пригодиться, если вы не хотите рисковать. Так вы просто берете нужный вам профиль и не беспокоитесь о его работоспособности. Профиль выбирается в BIOS. Для этого оперативная память должна быть сертифицированной.
InTru3D
Это такой стандарт для 3D-контента, разработанный Intel и DreamWorks. И, что вполне логично, этот стандарт хорошо функционирует на современных процессорах Intel. Подробнее можно посмотреть здесь.
High Definition Audio
Это такой набор требований, предъявляемый к интегрированным в процессор аудиокодекам, который призван улучшить качество цифрового звука. Это касается как увеличения числа каналов, так и и разрядности с частотой дискретизации.
Intel vPro
Эта технология позволяет получать доступ к ПК дистанционно. Вкратце, эта технология позволяет IT-специалистам получить доступ к ПК для устранения неполадок в них и защиты. Она работает на базе ядра и на ее функционирование не влияют состояние питания и операционной системы.
Она базируется на двух других технологиях Intel:
Не будем подробно рассказывать о средствах реализации этих технологий. Об этом вы можете подробнее прочесть здесь.
Intel Authenticate
Эта технология реализована на базе Intel vPro 6-го поколения, и представляет собой многофакторную аутентификацию корпоративного класса, что позволяет улучшить защиту личных данных. Здесь используются несколько разных факторов для проверки личности. Можно и PIN-код, и телефон и отпечаток пальца. Методы проверки выбирает само предприятие в зависимости от условий. Эта технология использует все ключи и связанные с ними сертификаты, шифрует их, сопоставляет и хранит в памяти аппаратной части, что держит их в безопасности от основной массы атак.
Intel Smart Cache
Это технология по использованию общей L2/L3-памяти (кэш-память второго/третьего уровня), что позволяет снизить энергопотребление и повысить производительность. Стоит отметь, что при динамическом отключении ядер другие ядра получают больше кэша.
Заключение
Здесь не были затронуты все технологии Intel. Здесь лишь были оговорены наиболее известные и больше всего влияющие на производительность. Также были затронуты технологии для корпоративного сегмента, но, довольно, вскользь. Если возникли какие-то вопросы, то сначала советуем вам заглянуть в раздел «Введение», где написаны границы применимости данной статьи. Надеемся, что эта статья помогла вам в выборе процессора от Intel и вы разобрались в том, что дают процессору различные технологии.
Smart cache что это
реклама
Прежде всего, приведём содержание слайда, повествующего о технологии Smart Cache, впервые применяемой в процессорах Intel. Как известно, оба ядра в процессоре Yonah будут использовать общий разделяемый кэш второго уровня объёмом 2 Мб. Именно применяемые в этом кэше технологии и объединены под вывеской «Smart Cache».
Как уже сообщалось, данные из кэша будут доступны в полном объёме даже в том случае, если одно из ядер будет отключено. Если учесть, что в целях экономии электроэнергии одно из ядер будет регулярно «засыпать» или отключаться, «бесперебойный» режим работы кэша очень важен. Проходящий через общую шину трафик данных тоже сокращается за счёт возможности обращения обоих ядер к одной порции данных.
Улучшенные механизмы предварительной выборки и более глубокие буферы записи тоже приводят к повышению производительности кэша. Механизм управления разделяемой шиной при этом оптимизирует потоки при работе в одноядерном и двухъядерном режимах. Наконец, специальный буфер адаптирует пропускную способность к режиму работы процессора: при активности двух ядер пропускная способность шины удваивается.
В целом, кэш процессора Yonah используется более эффективно и интеллектуально, оптимизация алгоритма работы кэша и шины позволяют повысить производительность и «скорость реакции», а также снизить затраты энергии.
Приводят коллеги с скриншот процессора Yonah, работающего на частоте 1.46 ГГц. Большой информативностью скриншот CPU-Z версии 1.29 не отличается. Мы видим, что присутствуют два ядра, в режиме простоя они работают на частоте 1.0 ГГц, предусмотрена поддержка расширений SSE3. Собственно говоря, и точное название ядра утилита пока воспроизвести не в силах. Заметим, что серийные процессоры Yonah будут работать на частотах от 1.67 до 2.13 ГГц и поддерживать 667 МГц, так что демонстрируемый образец не отражает всех возможностей будущих решений этого семейства.
Зачем процессорам нужен кэш и чем отличаются уровни L1, L2, L3
Во всех центральных процессорах любого компьютера, будь то дешёвый ноутбук или сервер за миллионы долларов, есть устройство под названием «кэш». И с очень большой вероятностью он обладает несколькими уровнями.
Наверно, он важен, иначе зачем бы его устанавливать? Но что же делает кэш, и для чего ему разные уровни? И что означает «12-канальный ассоциативный кэш» (12-way set associative)?
Что такое кэш?
TL;DR: это небольшая, но очень быстрая память, расположенная в непосредственной близости от логических блоков центрального процессора.
Однако мы, разумеется, можем узнать о кэше гораздо больше…
Давайте начнём с воображаемой волшебной системы хранения: она бесконечно быстра, может одновременно обрабатывать бесконечное количество операций передачи данных и всегда обеспечивает надёжное и безопасное хранение данных. Конечно же, ничего подобного и близко не существует, однако если бы это было так, то структура процессора была бы гораздо проще.
Процессорам бы тогда требовались только логические блоки для сложения, умножения и т.п, а также система управления передачей данных, ведь наша теоретическая система хранения способна мгновенно передавать и получать все необходимые числа; ни одному из логических блоков не приходится простаивать в ожидании передачи данных.
Но, как мы знаем, такой волшебной технологии хранения не существует. Вместо неё у нас есть жёсткие диски или твердотельные накопители, и даже самые лучшие из них далеки от возможностей обработки, необходимых для современного процессора.
Великий Т’Фон хранения данных
Причина этого заключается в том, что современные процессоры невероятно быстры — им требуется всего один тактовый цикл для сложения двух 64-битных целочисленных значений; если процессор работает с частотой 4 ГГЦ, то это составляет всего 0,00000000025 секунды, или четверть наносекунды.
В то же время, вращающемуся жёсткому диску требуются тысячи наносекунд только для нахождения данных на дисках, не говоря уже об их передаче, а твердотельным накопителям — десятки или сотни наносекунд.
Очевидно, что такие приводы невозможно встроить внутрь процессоров, поэтому между ними будет присутствовать физическое разделение. Поэтому ещё добавляется время на перемещение данных, что усугубляет ситуацию.
Увы, но это Великий А’Туин хранения данных
Именно поэтому нам нужна ещё одна система хранения данных, расположенная между процессором и основным накопителем. Она должна быть быстрее накопителя, способна одновременно управлять множеством операций передачи данных и находиться намного ближе к процессору.
Ну, у нас уже есть такая система, и она называется ОЗУ (RAM); она присутствует в каждом компьютере и выполняет именно эту задачу.
Почти все такие хранилища имеют тип DRAM (dynamic random access memory); они способны передавать данные гораздо быстрее, чем любой накопитель.
Однако, несмотря на свою огромную скорость, DRAM не способна хранить такие объёмы данных.
Одни из самых крупных чипов памяти DDR4, разработанных Micron, хранят 32 Гбит, или 4 ГБ данных; самые крупные жёсткие диски хранят в 4 000 раз больше.
Итак, хоть мы и повысили скорость нашей сети данных, нам потребуются дополнительные системы (аппаратные и программные), чтобы разобраться, какие данные должны храниться в ограниченном объёме DRAM, готовые к обработке процессором.
DRAM могут изготавливаться в корпусе чипа (это называется встроенной (embedded) DRAM). Однако процессоры довольно малы, поэтому в них не удастся поместить много памяти.
10 МБ DRAM слева от графического процессора Xbox 360. Источник: CPU Grave Yard
Подавляющее большинство DRAM расположено в непосредственной близости от процессора, подключено к материнской плате и всегда является самым близким к процессору компонентом. Тем не менее, эта память всё равно недостаточно быстра…
DRAM требуется примерно 100 наносекунд для нахождения данных, но, по крайней мере, она способна передавать миллиарды битов в секунду. Похоже, нам нужна ещё одна ступень памяти, которую можно разместить между блоками процессора и DRAM.
На сцене появляется оставшаяся ступень: SRAM (static random access memory). DRAM использует микроскопические конденсаторы для хранения данных в виде электрического заряда, а SRAM для той же задачи применяет транзисторы, которые работают с той же скоростью, что и логические блоки процессора (примерно в 10 раз быстрее, чем DRAM).
Разумеется, у SRAM есть недостаток, и он опять-таки связан с пространством.
Память на основе транзисторов занимает гораздо больше места, чем DRAM: в том же размере, что чип DDR4 на 4 ГБ, можно получить меньше 100 МБ SRAM. Но поскольку она производится по тому же технологическому процессу, что и CPU, память SRAM можно встроить прямо внутрь процессора, максимально близко к логическим блокам.
С каждой дополнительной ступенью мы увеличивали скорость перемещаемых данных ценой хранимого объёма. Мы можем продолжить и добавлять новые ступени,, которые будут быстрее, но меньше.
И так мы добрались до более строгого определения понятия кэша: это набор блоков SRAM, расположенных внутри процессора; они обеспечивают максимальную занятость процессора благодаря передаче и сохранению данных с очень высокими скоростями. Вас устраивает такое определение? Отлично, потому что дальше всё будет намного сложнее!
Кэш: многоуровневая парковка
Как мы говорили выше, кэш необходим, потому что у нас нет волшебной системы хранения, способной справиться с потреблением данных логических блоков процессора. Современные центральные и графические процессоры содержат множество блоков SRAM, внутри упорядоченных в иерархию — последовательность кэшей, имеющих следующую структуру:
На приведённом выше изображении процессор (CPU) обозначен прямоугольником с пунктирной границей. Слева расположены ALU (arithmetic logic units, арифметико-логические устройства); это структуры, выполняющие математические операции. Хотя строго говоря, они не являются кэшем, ближайший к ALU уровень памяти — это регистры (они упорядочены в регистровый файл).
Каждый из них хранит одно число, например, 64-битное целое число; само значение может быть элементом каких-нибудь данных, кодом определённой инструкции или адресом памяти каких-то других данных.
Регистровый файл в десктопных процессорах довольно мал, например, в каждом из ядер Intel Core i9-9900K есть по два банка таких файлов, а тот, который предназначен для целых чисел, содержит всего 180 64-битных целых чисел. Другой регистровый файл для векторов (небольших массивов чисел) содержит 168 256-битных элементов. То есть общий регистровый файл каждого ядра чуть меньше 7 КБ. Для сравнения: регистровый файл потоковых мультипроцессоров (так в GPU называются аналоги ядер CPU) Nvidia GeForce RTX 2080 Ti имеет размер 256 КБ.
Регистры, как и кэш, являются SRAM, но их скорость не превышает скорость обслуживаемых ими ALU; они передают данные за один тактовый цикл. Но они не предназначены для хранения больших объёмов данных (только одного элемента), поэтому рядом с ними всегда есть более крупные блоки памяти: это кэш первого уровня (Level 1).
Одно ядро процессора Intel Skylake. Источник: Wikichip
На изображении выше представлен увеличенный снимок одного из ядер десктопного процессора Intel Skylake.
ALU и регистровые файлы расположены слева и обведены зелёной рамкой. В верхней части фотографии белым обозначен кэш данных первого уровня (Level 1 Data cache). Он не содержит много информации, всего 32 КБ, но как и регистры, он расположен очень близко к логическим блокам и работает на одной скорости с ними.
Ещё одним белым прямоугольником справа показан кэш инструкций первого уровня (Level 1 Instruction cache), тоже имеющий размер 32 КБ. Как понятно из названия, в нём хранятся различные команды, готовые к разбиению на более мелкие микрооперации (обычно обозначаемые μops), которые должны выполнять ALU. Для них тоже существует кэш, который можно классифицировать как Level 0, потому что он меньше (содержит всего 1 500 операций) и ближе, чем кэши L1.
Вы можете задаться вопросом: почему эти блоки SRAM настолько малы? Почему они не имеют размер в мегабайт? Вместе кэши данных и инструкций занимают почти такую же площадь на чипе, что основные логические блоки, поэтому их увеличение приведёт к повышению общей площади кристалла.
Но основная причина их размера в несколько килобайт заключается в том, что при увеличении ёмкости памяти повышается время, необходимое для поиска и получения данных. Кэшу L1 нужно быть очень быстрым, поэтому необходимо достичь компромисса между размером и скоростью — в лучшем случае для получения данных из этого кэша требуется около 5 тактовых циклов (для значений с плавающей запятой больше).
Кэш L2 процессора Skylake: 256 КБ SRAM
Но если бы это был единственный кэш внутри процессора, то его производительность наткнулась бы на неожиданное препятствие. Именно поэтому в ядра встраивается еще один уровень памяти: кэш Level 2. Это обобщённый блок хранения, содержащий инструкции и данные.
Он всегда больше, чем Level 1: в процессорах AMD Zen 2 он занимает до 512 КБ, чтобы кэши нижнего уровня обеспечивались достаточным объёмом данных. Однако большой размер требует жертв — для поиска и передачи данных из этого кэша требуется примерно в два раза больше времени по сравнению с Level 1.
Во времена первого Intel Pentium кэш Level 2 был отдельным чипом, или устанавливаемым на отдельной небольшой плате (как ОЗУ DIMM), или встроенным в основную материнскую плату. Постепенно он перебрался в корпус самого процессора, и, наконец, полностью интегрировался в кристалл чипа; это произошло в эпоху таких процессоров, как Pentium III и AMD K6-III.
За этим достижением вскоре последовал ещё один уровень кэша, необходимый для поддержки более низких уровней, и появился он как раз вовремя — в эпоху расцвета многоядерных чипов.
Чип Intel Kaby Lake. Источник: Wikichip
На этом изображении чипа Intel Kaby Lake в левой части показаны четыре ядра (интегрированный GPU занимает почти половину кристалла и находится справа). Каждое ядро имеет свой «личный» набор кэшей Level 1 и 2 (выделены белыми и жёлтым прямоугольниками), но у них также есть и третий комплект блоков SRAM.
Кэш третьего уровня (Level 3), хоть и расположен непосредственно рядом с одним ядром, является полностью общим для всех остальных — каждое ядро свободно может получать доступ к содержимому кэша L3 другого ядра. Он намного больше (от 2 до 32 МБ), но и намного медленнее, в среднем более 30 циклов, особенно когда ядру нужно использовать данные, находящиеся в блоке кэша, расположенного на большом расстоянии.
Ниже показано одно ядро архитектуры AMD Zen 2: кэши Level 1 данных и инструкций по 32 КБ (в белых прямоугольниках), кэш Level 2 на 512 КБ (в жёлтых прямоугольниках) и огромный блок кэша L3 на 4 МБ (в красном прямоугольнике).
Увеличенный снимок одного ядра процессора AMD Zen 2. Источник: Fritzchens Fritz
Но постойте: как 32 КБ могут занимать больше физического пространства чем 512 КБ? Если Level 1 хранит так мало данных, почему он непропорционально велик по сравнению с кэшами L2 и L3?
Не только числа
Кэш повышает производительность, ускоряя передачу данных в логические блоки и храня поблизости копию часто используемых инструкций и данных. Хранящаяся в кэше информация разделена на две части: сами данные и место, где они изначально располагаются в системной памяти/накопителе — такой адрес называется тег кэша (cache tag).
Когда процессор выполняет операцию, которой нужно считать или записать данные из/в память, то он начинает с проверки тегов в кэше Level 1. Если нужные данные там есть (произошло кэш-попадание (cache hit)), то доступ к этим данным выполняется почти сразу же. Промах кэша (cache miss) возникает, если требуемый тег не найден на самом нижнем уровне кэша.
В кэше L1 создаётся новый тег, а за дело берётся остальная часть архитектуры процессора выполняющая поиск в других уровнях кэша (при необходимости вплоть до основного накопителя) данных для этого тега. Но чтобы освободить пространство в кэше L1 под этот новый тег, что-то обязательно нужно перебросить в L2.
Это приводит к почти постоянному перемешиванию данных, выполняемому всего за несколько тактовых циклов. Единственный способ добиться этого — создание сложной структуры вокруг SRAM для обработки управления данными. Иными словами, если бы ядро процессора состояло всего из одного ALU, то кэш L1 был бы гораздо проще, но поскольку их десятки (и многие из них жонглируют двумя потоками инструкций), то для перемещения данных кэшу требуется множество соединений.
Для изучения информации кэша в процессоре вашего компьютера можно использовать бесплатные программы, например CPU-Z. Но что означает вся эта информация? Важным элементом является метка set associative (множественно-ассоциативный) — она указывает на правила, применяемые для копирования блоков данных из системной памяти в кэш.
Представленная выше информация кэша относится к Intel Core i7-9700K. Каждый из его кэшей Level 1 разделён на 64 небольших блока, называемые sets, и каждый из этих блоков ещё разбит на строки кэша (cache lines) (размером 64 байта). «Set associative» означает, что блок данных из системы привязывается к строкам кэша в одном конкретном сете, и не может свободно привязываться к какому-то другому месту.
«8-way» означает, что один блок может быть связан с 8 строками кэша в сете. Чем выше уровень ассоциативности (т.е. чем больше «way»), тем больше шансов на кэш-попадание во время поиска процессором данных и тем меньше потери, вызываемые промахами кэша. Недостатки такой системы заключаются в повышении сложности и энергопотребления, а также понижении производительности, потому что для каждого блока данных нужно обрабатывать больше строк кэша.
Инклюзивный кэш L1+L2, victim cache L3, политики write-back, есть даже ECC. Источник: Fritzchens Fritz
Ещё один аспект сложности кэша связан с тем, как хранятся данные между разными уровнями. Правила задаются в inclusion policy (политике инклюзивности). Например, процессоры Intel Core имеют полностью инклюзивные кэши L1+L3. Это означает, что одни данные в Level 1, например, могут присутствовать в Level 3. Может показаться, что это пустая трата ценного пространства кэша, однако преимущество заключается в том, что если процессор совершает промах при поиске тега в нижнем уровне, ему не потребуется обыскивать верхний уровень для нахождения данных.
В тех же самых процессорах кэш L2 неинклюзивен: все хранящиеся там данные не копируются ни на какой другой уровень. Это экономит место, но приводит к тому, что системе памяти чипа нужно искать ненайденный тег в L3 (который всегда намного больше). Victim caches (кэши-жертвы) имеют похожий принцип, но они используются для хранения информации, переносимой с более низких уровней. Например, процессоры AMD Zen 2 используют victim cache L3, который просто хранит данные из L2.
Существуют и другие политики для кэша, например, при которых данные записываются и в кэш, и основную системную память. Они называются политиками записи (write policies); большинство современных процессоров использует кэши write-back — это означает, что когда данные записываются на уровень кэшей, происходит задержка перед записью их копии в системную память. Чаще всего эта пауза длится в течение того времени, пока данные остаются в кэше — ОЗУ получает эту информацию только при «выталкивании» из кэша.
Графический процессор Nvidia GA100, имеющий 20 МБ кэша L1 и 40 МБ кэша L2
Для проектировщиков процессоров выбор объёма, типа и политики кэшей является вопросом уравновешивания стремления к повышению мощности процессора с увеличением его сложности и занимаемым чипом пространством. Если бы можно было создать 1000-канальные ассоциативные кэши Level 1 на 20 МБ такими, чтобы они при этом не занимали площадь Манхэттена (и не потребляли столько же энергии), то у нас у всех бы были компьютеры с такими чипами!
Самый нижний уровень кэшей в современных процессорах за последнее десятилетие практически не изменился. Однако кэш Level 3 продолжает расти в размерах. Если бы десять лет назад у вас было 999 долларов на Intel i7-980X, то вы могли бы получить кэш размером 12 МБ. Сегодня за половину этой суммы можно приобрести 64 МБ.
Подведём итог: кэш — это абсолютно необходимое и потрясающее устройство. Мы не рассматривали другие типы кэшей в CPU и GPU (например, буферы ассоциативной трансляции или кэши текстур), но поскольку все они имеют такую же простую структуру и расположение уровней, разобраться в них будет несложно.
Был ли у вас компьютер с кэшем L2 на материнской плате? Как насчёт слотовых Pentium II и Celeron (например, 300a) на дочерних платах? Помните свой первый процессор с общим L3?
На правах рекламы
Наша компания предлагает в аренду серверы с процессорами от Intel и AMD. В последнем случае — это эпичные серверы! VDS с AMD EPYC, частота ядра CPU до 3.4 GHz. Максимальная конфигурация — 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe.