Уровни (иерархия) кэш-памяти

устройство и назначение внутренней кэш-памятиУровни (иерархия) кэш-памяти

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

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

Уровни (иерархия) кэш-памяти

Предпосылки для создания кэш-памяти

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

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

Так, все время при запуске программного обеспечения из постоянной памяти, ее чаще всего используемые данные или программа в целом «подгружаются» в оперативку. Это делается для того, чтобы ускорять обработку данных посредством процессора. Считывать и обрабатывать данные из оперативки процессор будет куда скорее, а значит, и система будет работать намного быстрее по сравнении с тем, если все данные поступали прямиком из не самых быстрых (по меркам вычислений процессора) накопителей.

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

Процессор – это невероятно мощный «калькулятор»

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

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

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

Как она работает

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

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

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

Процессор видит, какие данные недавно были в кэше

В идеале их следует выбирать так, чтобы конечный результат был с нулевым процентом «промахов». Но как же процессор делает это? В какой-то степени он следит за пользователей – он выгружает данные из оперативки в кэш-память для того, чтобы иметь к ним быстрый доступ и делает это на базе предыдущих данных, которые были ранее помещены в кэш в текущем рабочем сеансе. Есть несколько методов, которые увеличивают количество «попаданий» (т.е. угадываний), а еще, уменьшающих количество «промахов». Это пространственная и временная локальность – 2 основных принципа памяти, за счет которых процессор выбирает, какие конкретно данные следует помещать из оперативки в кэш.

Временная локальность

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

Пространственная локальность

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

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

Иерархия кэш-памяти

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

Такие ячейки первого уровня расположенs на кристалле в непосредственной близости от ядра, которое производит вычислительные работы. Она самая быстрая, но и при этом минимальная по объему. В ней есть самые нужные команды и данные. Для того, чтобы передавать оттуда данные, нужно лишь 5 тактовых циклов. Обычно кэщ-память первого уровня состоит из 2 блоков, при этом размер каждого составляет 32 кБ. Один из них – намять первого уровня, а второй – кэш инструкций первого уровня. Они требуются для работы с блоками данных и молниеносного обращения к командам.

 

Кэш-память 2-3 уровня больше по объему, но так как они дальше от вычислительного ядра, то при обращении к ним временные интервалы обработки будут больше. Более наглядно устройство такой памяти показано в следующем видеоролике. Память 2 уровня, в которой тоже есть данные и команды, занимает до 512 кБ, чтобы обеспечивать требуемый объем данных кэшу для нижнего уровня. Но в таком случае на обработку будет уходить в 2 раза больше времени. Память 3 уровня имеет размеры 2-32 Мб (и все время увеличивается вслед за технологическим развитием), но и скорость у него куда меньше.

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

Как итог, данные постоянные перемещаются с первого на второй уровень. С кэшем связан такой термин, как «сет ассоциативности». В первом блоке памяти есть привязка к строкам кэша в определенном сете, т.е. блоке. Так, к примеру, 8 уровень ассоциативности означает, что один блок может быть привязан к 8 строчкам кэша. Чем больше уровень, тем выше шанс на попадание кэша. Есть и минусы – усложнение процесса и сильное уменьшение производительности.

Заключение

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

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

Александр

Здравствуйте, меня зовут Александр, уже более 10 лет я занимаюсь ремонтом компьютером, этот сайт я создал чтобы делиться полезной и практической информацией с вами! Буду благодарен, если вы опишите свой опыт или мнение в комментарии, надеюсь, что данная информация принесёт только пользу

Оцените автора
WindowsComp.ru
Добавить комментарий