Смекни!
smekni.com

Устройство кэш-памяти и стратегии кэширования (стр. 1 из 2)

Оглавление

Понятие кэш-памяти-----------------------------------------------------------------------------------3

Уровни кэша---------------------------------------------------------------------------------------3

Кэш-память микропроцессоров PentiumIII------------------------------------------------------4

Устройство кэш-памяти и стратегии кэширования--------------------------------------------5

Заключение---------------------------------------------------------------------------------------11

Список литературы---------------------------------------------------------------------------------12

Понятие кэш-памяти

Кэш (англ. cache, от фр. cacher — прятать; произносится [kæʃ] — кэш) — промежуточный буфер с быстрым доступом, содержащий информацию, которая может быть запрошена с наибольшей вероятностью. Доступ к данным в кэше идёт быстрее, чем выборка исходных данных из оперативной (ОЗУ) или более медленной внешней (жёсткий диск или твердотельный накопитель) памяти, за счёт чего уменьшается среднее время доступа и увеличивается общая производительность компьютерной системы.

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

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

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

Уровни кэша

Кэш центрального процессора разделён на несколько уровней. В универсальном процессоре в настоящее время число уровней может достигать 3. Кэш-память PentiumIII имеет два уровня.

Самой быстрой памятью является кэш первого уровня — L1-cache. Небольшая (несколько десятков килобайт) сверхбыстрая память, предназначнная для хранения промежуточных результатов вычислений.

По сути, она является неотъемлемой частью процессора, поскольку расположена на одном с ним кристалле и входит в состав функциональных блоков. Большинство процессоров без L1 кэша не могут функционировать. L1 кэш работает на частоте процессора, и, в общем случае, обращение к нему может производиться каждый такт. Зачастую является возможным выполнять несколько операций чтения/записи одновременно. Латентность доступа обычно равна 2−4 тактам ядра. Объём обычно невелик — не более 128 Кбайт.

Вторым по быстродействию является L2-cache — кэш второго уровня. Хотя эта память чуть помедленнее, зато больше. Обычно он расположен на кристалле, как и L1. Объём L2 кэша от 128 Кбайт до 1−12 Мбайт. В современных многоядерных процессорах кэш второго уровня, находясь на том же кристалле, является памятью раздельного пользования — при общем объёме кэша в nM Мбайт на каждое ядро приходится по nM/nC Мбайта, где nC количество ядер процессора. Обычно латентность L2 кэша, расположенного на кристалле ядра, составляет от 8 до 20 тактов ядра.

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

Инклюзивная архитектура предполагает дублирование информации кэша верхнего уровня в нижнем (предпочитает фирма Intel).

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

В неэксклюзивной кэши могут вести себя как угодно.

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

При одинаковом объеме кэша схема с большей ассоциативностью будет наименее быстрой, но наиболее эффективной

Кэш-память микропроцессоров PentiumIII

Процессор Intel Pentium III - процессор архитектуры P6, включает в себя: динамическое исполнение команд, системную шину с множественными транзакциями и технологию Intel MMX™ для обработки данных мультимедиа. Технология изготовления с разрешающей способностью 0.25 микрон позволяет разместить на кристалле более 9.5 миллионов транзисторов. Процессор содержит 32 Kб неблокируемой кэш-памяти первого уровня (16Кб/16Кб) и унифицированную неблокируемую кэш-память второго уровня емкостью 512 Кб, функционирующую на вдвое меньшей частоте, чем ядро. Процессор Intel® Pentium®III поддерживает кэширование памяти с объемом адресного пространства 4 Гб, и позволяет создавать масштабируемые системы с двумя процессорами и физической памятью объемом до 64 Гб.

Katmai

Кэш второго уровня объёмом 512 Кб работает на половине частоты ядра и выполнен в виде двух микросхем BSRAM (производства Toshiba и NEC), расположенных друг над другом справа от кристалла процессора. В качестве tag-RAM используется микросхема Intel 82459AD, расположенная на обратной стороне процессорной платы под микросхемами кэш-памяти.

Coppermine

Процессоры на ядре Coppermine выпускались по 180 нм технологии, имели интегрированную кэш-память второго уровня, работающую на частоте ядра. Кроме того, кэш-память имеет 256-битную шину (в отличие от процессоров на ядре Katmai, имевших 64-битную шину кэш-памяти), что значительно повышает её быстродействие. За счёт интегрированной кэш-памяти число транзисторов возросло до 28,1 млн

Процессоры Pentium III 733 МГц на ядре Coppermine c уменьшенной до 128 Кб кэш-памятью второго уровня использовались компанией Microsoft в приставке Xbox. В отличие от процессоров Celeron на ядре Coppermine-128, также имеющих 128 Кб кэша, данные процессоры имеют 8-канальный ассоциативный кэш второго уровня (Celeron имеет 4-канальный ассоциативный кэш)

Tualatin

Процессоры Pentium III-S на ядре Tualatin имели 512 Кб кэш-памяти второго уровня и предназначались для высокопроизводительных рабочих станций и серверов. В процессорах Pentium III на ядре Tualatin 256 Кб кэш-памяти были аппаратно отключены. Частота системной шины составляла 133 МГц для обеих модификаций.

Устройство кэш-памяти и стратегии кэширования

Кэш-память является результатом попыток соединить достоинства быстрых SRAM и дешевых DRAM для создания максимально эффективной системы памяти. Принцип кэширования поясняется на рисунке 1.


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

сквозная или отложенная запись.

Рисунок 1. Принцип кэширования.

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

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


На рисунке 2 изображены основная и кэш память. Каждая строка — группа ячеек памяти содержит данные, организованные в кэш-линии. Размер каждой кэш-линии может различаться в разных процессорах, но для большинства x86-процессоров он составляет 64 байта. Размер кэш-линии обычно больше размера данных, к которому возможен доступ из одной машинной команды (типичные размеры от 1 до 16 байт). Каждая группа данных в памяти размером в 1 кэш-линию имеет порядковый номер. Для основной памяти этот номер является адресом памяти с отброшенными младшими битами. В кэше каждой кэш-линии дополнительно ставится в соответствие тег, который является адресом продублированных в этой кэш-линии данных в основной памяти.

Рисунок 2. Диаграмма кэша памяти ЦПУ

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