Лабораторная работа № 1 Исследование кэш-памяти и обхода


Лабораторная работа №1 Исследование кэш-памяти и обхода памяти

Определение размеров кэш-памяти Цель сравнить различные способы обхода данных научиться определять размер кэш-памяти Задание Написать программу, многократно выполняющую чтение элементов массива заданного размера. Элементы массива представляют собой связный список, в котором значение очередного элемента представляет собой номер следующего. Таким образом, способ заполнения элементов массива определяет способ его обхода. Сам обход данных может быть выполнен циклом следующего вида: for (k=0, i=0; i

Определение размеров кэш-памяти Обходы Требуется реализовать три способа обхода массива 1. Прямой 2. Обратный 3. Случайный

Определение размеров кэш-памяти Заполнение массива для случайного обхода

Определение размеров кэш-памяти Построить графики зависимости среднего времени обращения к элементу массива (в тактах) от размера обрабатываемого массива для трех видов обхода. На графиках должны быть видны размеры всех уровней кэш-памяти. По результатам измерений сделать вывод о скорости различных способов обхода массива, а также о размерах различных уровней кэш-памяти. Сравнить полученные размеры уровней кэш-памяти с реальными значениями. Пример графиков, полученных на процессоре Intel Xeon E5420 (L1: 32 KB, L2: 6 MB):

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

Определение степени ассоциативности кэш-памяти множественно-ассоциативная организация кэш-памяти Большинство современных процессоров имеют множественно-ассоциативную организацию кэш-памяти. При множественно-ассоциативной организации кэш-память разделена на несколько множеств и на несколько банков ассоциативности. Каждый блок данных из оперативной памяти может быть помещен в одну из некоторого множества строк кэш-памяти. Число строк во множестве определяется числом банков ассоциативности. Например, кэш данных L1 в процессоре Pentium III имеет объем 16 KB, число банков ассоциативности - 4, число множеств - 128, размер строки - 32 Byte. Размер кэш-памяти: 16 KB = 4 × 128 × 32 B.

Определение степени ассоциативности кэш-памяти множественно-ассоциативная организация кэш-памяти 32 B 32 B 32 B ОП 0 1 2 3 0 1 2 3 … 126 127 … 32 B 32 B Кэш 32 B 32 B 128 × 32 В = 4 КВ Номер множества, в которое будет помещен элемент данных из памяти, определяется адресом этого элемента. Какой конкретный элемент множества будет выбран, определяется алгоритмом замещения (циклический, случайный, LRU, псевдо-LRU, …). Число элементов в каждом множестве (равное числу банков кэш-памяти) называется степенью ассоциативности кэш-памяти. Если вычислительная система имеет несколько уровней кэш-памяти, то у каждого уровня может быть своя степень ассоциативности.

Определение степени ассоциативности кэш-памяти множественно-ассоциативная организация кэш-памяти 4 КВ 4 КВ 4 КВ 4 КВ Кэш ОП Элементы данных, имеющих одинаковые номера множеств, т.е. отстоящие на определенное расстояние в памяти (4 KB), помещаются в одно и то же множество кэш-строк. На все эти данные приходится всего 4 кэш-строки, т.е. 4 × 32 B = 128 B. Если выполнять обход данных с шагом 4 KB (или кратным 4 KB), то из всех 16 KB кэша L1 будет использоваться всего 128 B, которые будут постоянно перезаписываться (эффект «буксования» кэш-памяти). Производительность подсистемы памяти при этом будет такая же, как при отсутствии кэш-памяти.

Определение степени ассоциативности кэш-памяти Цель работы Научиться определять степень ассоциативности кэш-памяти. Определить степени ассоциативности кэш-памяти можно следующим способом. Выполняется обход N фрагментов данных суммарным объемом BlockSize, отстоящих друг от друга на величину Offset:

Определение степени ассоциативности кэш-памяти Параметры обхода: BlockSize – суммарный объем данных, к которым происходит обращение. Offset – расстояние между началами соседних блоков. N – число фрагментов (на картинке N = 4). BlockSize должен быть не больше объема исследуемого уровня кэш-памяти. Offset должен быть кратен размеру банка ассоциативности. Как правило, эти размеры являются степенями двоек, так что в качестве Offset можно взять большое заведомо кратное значение (например, 8 MB). Изменяя число частей N, мы увидим, как меняется время обращения к одному элементу. Когда N превысит число банков ассоциативности, время сильно возрастет.

Определение степени ассоциативности кэш-памяти

Определение степени ассоциативности кэш-памяти Написать программу, определяющую степень ассоциативности кэш-памяти. Программа должна многократно выполнять чтение элементов массива в порядке, указанном выше. Элементы массива представляют собой связный список, в котором значение очередного элемента представляет собой номер следующего. Параметры: BlockSize = 1 KB, Offset = 8 MB, N = 1…20. Построить график зависимости среднего времени обращения к элементу массива (в тактах) от N – числа фрагментов. По полученному графику определить степень ассоциативности кэш-памяти. Пример графика, полученного на процессоре Intel Xeon E5420 (L1: 4-way, L2: 8-way): На графике видно замедление после 4 и после 8 фрагментов, что соответствует степеням ассоциативности кэшей L1 и L2 процессора Intel Xeon E5420.

Контрольные вопросы Что такое степень ассоциативности кэш-памяти? Что такое эффект буксования кэш-памяти? Как его вызвать? Как его избежать? Какой график получится в результате исследования кэша данных L1, описанного в теоретической части? Как изменится график, если расстояние между фрагментами взять 1 KB?

cache.ppt
- Количество слайдов: 14