Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Кэш-память

Содержание

Иерархии памяти Идея иерархической (многоуровневой) организации памяти заключается в использовании на одном компьютере нескольких уровней памяти, которые характеризуются разным временем доступа
Организация памяти Иерархии памяти				Идея   иерархической   (многоуровневой)   организации Схема иерархического построения памяти Интерливинг Организация кэш-памяти 		 Кэш-память  это  высокоскоростная   память небольшeго Структура кэш-памяти Схема иерархического построения памятиОперативнаяпамять(RAM)Кэш 3-го уровня(L3)Кэш 2-го уровня(L2)Кэш инструкций 1-го уровня(L1I)Кэш данных1-го уровня(L1D)Регистры Организация кэш-памяти  Когда контроллер помещает данные в кэш- память? Загрузка по Организация кэш-памяти  Когда контроллер выполняет поиск данных в памяти? после фиксации Основные вопросы организации кэш-памятиАлгоритм отображения адресов основной памяти в кэш-память.Алгоритм записи данных Алгоритмы отображенияПрямой (direct mapping). Ассоциативный (full associative mapping). Множественно-ассоциативный (set-associative mapping). Пример «буксования» кэш-памяти (32 K) (cache trashing) real*8 a(4096),b(4096),c(4096)	common a,b,c	do i=1,4096	 c(i)=a(i)+b(i)	enddo Зависимость количества промахов в кэш-память в зависимости от объема кэш-памяти и степени Сравнение алгоритмов отображения адресовПрямой1 блок – 1 строкаПлюс: быстрый поиск, маленькие теги, Алгоритмы записиСквозная  запись  (Write Through (WT)).Сквозная запись с буфери-зацией Алгоритмы замещения кэш-строкLeast Recently Used (LRU)Most Recently Used (MRU)Pseudo-Least Recently Used (PLRU) Алгоритм замещения (алгоритм псевдо-LRU) Каким должен быть размер линии кэш-памяти?Размер линии должен быть как минимум в Какими должны быть основные параметры кэша?Размер кэшаБольшой, чтобы вместить рабочие данныеМаленький, для Эффективное использование  иерархии памятиОбъем обрабатываемых данныхОбход данных Схема иерархической памятиint prog(){ ... ... ... ... for (i…)  for Последовательный обход данных (Си)2D массив:Размещение массива в памяти:float X[N][M];for (i=0;i Последовательный обход данных (Фортран)2D массив:Размещение массива в памяти:real X(N,M)   do Пример обхода данныхПеремножение матриц: C[Nx][Nz]=A[Nx][Ny]*B[Ny][Nz]for(i=0;i Результаты теста: перемножение матрицРазмеры матриц800*800Схема программы:for (…) for (…)  for (…)   C[i][k]+=A[i][j]*B[j][k]; Эффект «буксования» кэшаКэш данных 1 уровня процессора Alpha 2126432 Кб = 8192 Пример «буксования» кэша: 2D массивX[Ny][Nx];Выполняем обход по столбцамв программе на языке Сиd Пример «буксования» кэша: 3D массивX[Nz][Ny][Nx];Семиточечная схема: Результаты теста: решение уравнения Пуассона в трехмерной области методом ЯкобиРазмер 2D слоя РекомендацииОбъем активно используемых данных не должен превосходить размер кэшаПо возможности используйте последовательный Компиляторы языка Си на МВС-1000Compaq C Compiler v6.4.9	команда: ccc		оптимизирован для процессоров AlphaGNU Ключи оптимизации компилятора ccc–O0	Отключает оптимизацию.–O1	Локальная оптимизация и распознавание общих 	подвыражений. Начальная глобальная Примеры использования различных ключей оптимизации Помощь компиляторуИспользуйте средства языка для более точного описания природы и способа использования Точность вычисленийОпределяется:типом данных (float/real*4, double/real*8, real*16)размеров вещественных регистров процессора (64 бита для
Слайды презентации

Слайд 2 Иерархии памяти

Идея иерархической (многоуровневой)

Иерархии памяти				Идея  иерархической  (многоуровневой)  организации  памяти заключается

организации памяти заключается в использовании

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

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

Слайд 3 Схема иерархического построения памяти

Схема иерархического построения памяти

Слайд 4
Интерливинг

Интерливинг

Слайд 5 Организация кэш-памяти
Кэш-память это высокоскоростная

Организация кэш-памяти 		 Кэш-память это высокоскоростная  память небольшeго размера с

память небольшeго размера с прямым

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

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

Слайд 6 Структура кэш-памяти

Структура кэш-памяти

Слайд 7 Схема иерархического построения памяти
Оперативная
память
(RAM)
Кэш
3-го уровня
(L3)
Кэш
2-го уровня
(L2)
Кэш

Схема иерархического построения памятиОперативнаяпамять(RAM)Кэш 3-го уровня(L3)Кэш 2-го уровня(L2)Кэш инструкций 1-го уровня(L1I)Кэш данных1-го уровня(L1D)Регистры

инструкций
1-го уровня
(L1I)
Кэш данных
1-го уровня
(L1D)
Регистры






Слайд 8 Организация кэш-памяти
Когда контроллер помещает данные в

Организация кэш-памяти Когда контроллер помещает данные в кэш- память? Загрузка по

кэш- память?


Загрузка по требованию (on demand).
Спекулятивная загрузка

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

Слайд 9 Организация кэш-памяти

Когда контроллер выполняет поиск данных

Организация кэш-памяти Когда контроллер выполняет поиск данных в памяти? после фиксации

в памяти?

после фиксации промаха (сквозной просмотр).
одновременно с

поиском блока в кэш-памяти, в случае кэш-попадания, обращение к оперативной памяти прерывается (отложенный просмотр).

Слайд 10 Основные вопросы организации кэш-памяти
Алгоритм отображения адресов основной памяти

Основные вопросы организации кэш-памятиАлгоритм отображения адресов основной памяти в кэш-память.Алгоритм записи

в кэш-память.
Алгоритм записи данных и команд из кэш-памяти в

основную память.
Алгоритм замещения строки в кэш-памяти.
Размер кэш-памяти.
Длина строки в кэш-памяти.

Слайд 11 Алгоритмы отображения
Прямой (direct mapping).
Ассоциативный (full associative mapping).

Алгоритмы отображенияПрямой (direct mapping). Ассоциативный (full associative mapping). Множественно-ассоциативный (set-associative mapping).


Множественно-ассоциативный (set-associative mapping).


Слайд 13 Пример «буксования» кэш-памяти (32 K) (cache trashing)

real*8

Пример «буксования» кэш-памяти (32 K) (cache trashing) real*8 a(4096),b(4096),c(4096)	common a,b,c	do i=1,4096	 c(i)=a(i)+b(i)	enddo

a(4096),b(4096),c(4096)
common a,b,c
do i=1,4096
c(i)=a(i)+b(i)
enddo


Слайд 15 Зависимость количества промахов в кэш-память в зависимости от

Зависимость количества промахов в кэш-память в зависимости от объема кэш-памяти и

объема кэш-памяти и степени ассоциативности для длины троки 32

байта

Слайд 17 Сравнение алгоритмов отображения адресов
Прямой
1 блок – 1 строка
Плюс:

Сравнение алгоритмов отображения адресовПрямой1 блок – 1 строкаПлюс: быстрый поиск, маленькие

быстрый поиск, маленькие теги, простая реализация
Минус: пробуксовка кэша
(Полностью) ассоциативный
1

блок – любая строка
Плюс: нет пробуксовки кэша
Минус: медленный поиск, большие теги, сложная реализация
Множественно-ассоциативный
1 блок – несколько строк
Компромиссный вариант


Слайд 18 Алгоритмы записи
Сквозная запись (Write Through (WT)).
Сквозная

Алгоритмы записиСквозная запись (Write Through (WT)).Сквозная запись с буфери-зацией (Write Combining). Обратная запись (Write Back (WB)).

запись с буфери-зацией (Write Combining).
Обратная запись (Write

Back (WB)).

Слайд 19 Алгоритмы замещения кэш-строк
Least Recently Used (LRU)
Most Recently Used

Алгоритмы замещения кэш-строкLeast Recently Used (LRU)Most Recently Used (MRU)Pseudo-Least Recently Used (PLRU)

(MRU)
Pseudo-Least Recently Used (PLRU)


Слайд 20 Алгоритм замещения (алгоритм псевдо-LRU)





Алгоритм замещения (алгоритм псевдо-LRU)

Слайд 21 Каким должен быть размер линии кэш-памяти?
Размер линии должен

Каким должен быть размер линии кэш-памяти?Размер линии должен быть как минимум

быть как минимум в ширину канала памяти

Большой размер
-- Более

эффективное использование канала памяти при последовательном доступе
-- Позволяет уменьшать «ассоциативность» кэша и количество линий

Маленький размер
-- Более эффективное использование канала памяти при произвольном доступе
-- Заполнение можно делать за одну транзакцию к памяти


Слайд 22 Какими должны быть основные параметры кэша?
Размер кэша
Большой, чтобы

Какими должны быть основные параметры кэша?Размер кэшаБольшой, чтобы вместить рабочие данныеМаленький,

вместить рабочие данные
Маленький, для быстрого доступа
Степень ассоциативности кэша
Большая, чтобы

избегать пробуксовки
Маленькая, для быстрого доступа
Размер строки кэша
Большой, чтобы использовать локальность
Большой, чтобы уменьшить теги
Маленький (доля полезных данных в кэше больше, если данные в памяти распределены произвольным образом)


Слайд 24 Эффективное использование иерархии памяти
Объем обрабатываемых данных
Обход данных

Эффективное использование иерархии памятиОбъем обрабатываемых данныхОбход данных

Слайд 25 Схема иерархической памяти
int prog()
{ ...
...
...
...

Схема иерархической памятиint prog(){ ... ... ... ... for (i…) for

for (i…)
for (j…)
{a[i][j]…
b[j]…

}
...
...
}

Программа:

Оперативная память
(медленная)

Кэш-память
(быстрая)

Регистры
(сверхбыстрая память)




2 Гб

L1: 64Кб
L2: 2Мб

32 целочисл.
32 веществ.


Слайд 26 Последовательный обход данных (Си)
2D массив:
Размещение массива в памяти:

float

Последовательный обход данных (Си)2D массив:Размещение массива в памяти:float X[N][M];for (i=0;i

X[N][M];
for (i=0;i

(j=0;j X[i][j]=expr(i,j);

Слайд 27 Последовательный обход данных (Фортран)
2D массив:
Размещение массива в памяти:

real

Последовательный обход данных (Фортран)2D массив:Размещение массива в памяти:real X(N,M)  do

X(N,M)
do 10 j=1,M

цикл по столбцам
do 10 i=1,N цикл по строкам
10 X(i,j)=expr(i,j)

Слайд 28 Пример обхода данных
Перемножение матриц: C[Nx][Nz]=A[Nx][Ny]*B[Ny][Nz]
for(i=0;i

Пример обхода данныхПеремножение матриц: C[Nx][Nz]=A[Nx][Ny]*B[Ny][Nz]for(i=0;i

C[i][k]+=A[i][j]*B[j][k];
×
=


Cik
Aij
Bjk
Медленно:


Слайд 29 Результаты теста: перемножение матриц
Размеры матриц
800*800
Схема программы:
for (…)
for

Результаты теста: перемножение матрицРазмеры матриц800*800Схема программы:for (…) for (…) for (…)  C[i][k]+=A[i][j]*B[j][k];

(…)
for (…)
C[i][k]+=A[i][j]*B[j][k];


Слайд 30 Эффект «буксования» кэша
Кэш данных 1 уровня процессора Alpha

Эффект «буксования» кэшаКэш данных 1 уровня процессора Alpha 2126432 Кб =

21264
32 Кб = 8192 float (real*4) = 4096 double

(real*8)

Параметры:
Объем: 64 Кб
2-канальный множественно- ассоциативный

Оперативная память


64 байта


0

32Кб



511

32Кб

32Кб





Слайд 31 Пример «буксования» кэша: 2D массив
X[Ny][Nx];
Выполняем обход по столбцам
в

Пример «буксования» кэша: 2D массивX[Ny][Nx];Выполняем обход по столбцамв программе на языке

программе на языке Си
d ≥ размер строки кэш-памяти (для

Alpha 21264 – 64 байта)

Слайд 32 Пример «буксования» кэша: 3D массив
X[Nz][Ny][Nx];
Семиточечная схема:

Пример «буксования» кэша: 3D массивX[Nz][Ny][Nx];Семиточечная схема:

Слайд 33 Результаты теста: решение уравнения Пуассона в трехмерной области

Результаты теста: решение уравнения Пуассона в трехмерной области методом ЯкобиРазмер 2D

методом Якоби
Размер 2D слоя для N=128: 128*128 = 16384

элементов = 64 Кб

Размер массива: N × N × N


Слайд 34 Рекомендации
Объем активно используемых данных не должен превосходить размер

РекомендацииОбъем активно используемых данных не должен превосходить размер кэшаПо возможности используйте

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

расположенных в памяти на расстоянии 32Кб (и кратном 32Кб)

Слайд 35 Компиляторы языка Си на МВС-1000
Compaq C Compiler v6.4.9
команда:

Компиляторы языка Си на МВС-1000Compaq C Compiler v6.4.9	команда: ccc		оптимизирован для процессоров

ccc
оптимизирован для процессоров Alpha
GNU C Compiler v2.91
команда: gcc или

cc
формирует код для любого процессора
старая версия компилятора, формирует очень медленный код

Замечание:
Команда mpicc использует Compaq C Compiler

Для компиляции Ваших программ используйте Compaq C Compiler (команда: ссс)


Слайд 36 Ключи оптимизации компилятора ccc
–O0 Отключает оптимизацию.
–O1 Локальная оптимизация и распознавание

Ключи оптимизации компилятора ccc–O0	Отключает оптимизацию.–O1	Локальная оптимизация и распознавание общих 	подвыражений. Начальная

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

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

Слайд 37
Примеры использования различных ключей оптимизации

Примеры использования различных ключей оптимизации

Слайд 38 Помощь компилятору
Используйте средства языка для более точного описания

Помощь компиляторуИспользуйте средства языка для более точного описания природы и способа

природы и способа использования объектов языка
Старайтесь не использовать глобальных

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

  • Имя файла: kesh-pamyat.pptx
  • Количество просмотров: 217
  • Количество скачиваний: 0
- Предыдущая Осень
Следующая - Реклама