Кэш процессора: виды и принцип работы

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

Процессор состоит из нескольких элементов, и кэш процессор - один из них.

Кэш-память

Кэш-память

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

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

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

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

Предназначение

Уровни памяти

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

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

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

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

Уровни памяти

Набор инструкций

В большинстве современных процессоров присутствует несколько уровней кэш-памяти. Чаще всего их два или три: L1, L2 и кэш L3.

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

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

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

Независимый

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

Набор инструкций

Кэш данных

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

Что делает кэш с инструкциями? Данный вид кэша способен выполнять только определенную задачу в виде операции с данными. То есть кэш содержит определенный набор инструкций, каждая из которых занимается своей "работой". Это может быть вычисление, переход от одних данных к другим или копирование.

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

Кэш данных

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

В большинстве современных процессорах используется объем кэша до 16 мегабайт, но в процессорах, предназначенных для серверов, максимальный кэш процессора достигает 20 мегабайт и выше.

Буфер ассоциативной трансляции

Буфер ассоциативной трансляции

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

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

Промахи в работе

Как и виды кэша, промахи тоже делятся на три категории.

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

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

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

Разновидности промахов

Разновидности промахов

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

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

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

Трансляция адреса и ее разновидности

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

Благодаря трансляции из виртуального хранилища в физическое (ОЗУ), такие манипуляции проводятся с невероятной скоростью.

Процесс трансляции адресов:

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

Кэши и их иерархия

Кэши и их иерархия

Наличие нескольких взаимодействующих кэшей - это один из критерий большинства современных процессоров.

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

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

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

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

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

Статья закончилась. Вопросы остались?
Комментариев 1
Подписаться
Я хочу получать
Правила публикации
0
Спасибо за сталью,. Интересно понимать как долго ожидать освобождения линии кеша? Возможно ли ситуации, что они всегда заняты и не обновляются? как занять линию кеша и ее удерживать (с какой частотой надо обращаться на один и тот же адрес)?
Копировать ссылку
Редактирование комментария возможно в течении пяти минут после его создания, либо до момента появления ответа на данный комментарий.