SlideShare a Scribd company logo
1 of 56
Организация ЭВМ и систем
Тема: Системы памяти ЭВМ
• Основные характеристики системы памяти
• Распределение адресного пространства
• Кэш-память
• Типы кэш-памяти
• Особенности обновления информации в кэш-
памяти
Организация интерфейса памяти
Появления 32-разрядного МП определило
использование 3 новых концепций организации
интерфейса памяти.
1. Расширение шины локальной памяти.
2. Расслоение (интерливинг) памяти.
3. Виртуальное управление памятью.
В 32-разрядных МП два вида организации
виртуальной памяти: страничная и сегментная.
Иерархия подсистемы памяти ПК
1. Регистровая память (сверхоперативное
запоминающее устройство).
2. Буферная память (кэш-память – для согласования
скорости работы ЦП и основной памяти).
• I-го уровня – L1
• II-го уровня – L2
3. Основная память (ОЗУ, ПЗУ).
4. Массовая (внешняя память).
Иерархия подсистемы памяти ПК
Регистры
Кэш L1
Кэш L2
Основная
память
Внешняя
память
ПроцессорУвеличение
объема
Увеличение
быстродействия
Увеличение
стоимости хранения
одного бита
Иерархия подсистемы памяти ПК
№
Тип ЗУ
1985 г. 2000 г.
Время
выбор
ки
Типич
ный
объем
Цена /
байт
Время
выбор
ки
Типичн
ый
объем
Цена /
байт
1 Сверхоператив
ные ЗУ
(регистры)
0,2 5
нс
16/32
бит
$ 3 –
100
0,01 1
нс
32/64/
128 бит
$ 0,1
10
2 Быстродейству
ющее
буферное ЗУ
(кэш)
20
100 нс
8Кб –
64Кб
~ $ 10 0,5 – 2
нс
32Кб
1Мб
$ 0,1 –
0,5
3 Оперативное
(основное) ЗУ
~ 0,5
мс
1Мб –
256Мб
$ 0,02
1
2 нс 20
нс
128Мб
– 4Гб
$ 0,01
0,1
4 Внешние ЗУ
(массовая
память)
10 –
100 мс
1Мб –
1Гб
$ 0,002
– 0,04
5 – 20
мс
1Гб –
0,5Тб
$
0,001
– 0,01
Кэш-память
Кэш-память представляет собой
быстродействующее ЗУ, размещенное на одном
кристалле с ЦП или внешнее по отношению к ЦП, служит
высокоскоростным буфером между ЦП и
относительно медленной основной памятью.
В основу положен принцип временной и
пространственной локальности программы.
Кэш-память представляет собой 2 сверхоперативные
памяти:
память отображения данных.
память тегов.
Для согласования содержимого кэш-памяти и ОП
используют 3 метода записи:
1. Сквозная – одновременно с кэш-памятью
обновляется ОП.
2. Буферизованная сквозная запись – информация
задерживается в кэш-буфере перед записью в ОП и
переписывается в ОП в те циклы, когда ЦП к ней не
обращается.
3. Обратная запись – используется бит изменения в
поле тега, и строка переписывается в ОП только в том
случае, если бит изменения равен 1.
Типы кэш-памяти
1. Кэш прямого отображения: адрес памяти однозначно
определяет строку кэша, в которую будет помещен блок
информации.
0010 001 100
Тег Строка Смещение
1 4
0
1 2
2
3
4
5
6
7
Тег 0 1 2 3 4 5 6 7
2
К ЦП
Данные
0010001 100
Тег Смещение
4
0 79
1 63
2
3 17
4
5 45
6
7
Тег 0 1 2 3 4 5 6 7
К ЦП
Данные
2. Полностью ассоциативный кэш – любой блок ОЗУ
может быть отображен на любую строку кэш-памяти, в
буфер должен быть записан полный адрес каждого
блока и непосредственно сам блок.
17
00100 01 100
Тег Набор Смещение
1
0
1
2 19
3 4
4
5
6
7
Тег 0 1 2 3 4 5 6 7
К ЦП
Данные
3. Множественный ассоциативный кэш. В этом типе
буфера строки разбиваются на группы, в которые могут
входить 2, 4, … строк. В соответствии с их количеством
различают двухвходовый и четырехвходовый
множественный ассоциативный кэш.
4 4
0
1
2
3
Типы кэш-памяти
 Кэш Гарвардской архитектуры – раздельные кэш-
команд и кэш-данных.
 Кэш Принстонской архитектуры (Джона фон
Неймана) – смешанные кэш-команд и кэш-данных.
Характеристики подсистемы
кэш-памяти у ЦП IA-32
Intel486 Pentium Pentium
MMX
P6 Pentium 4
L1 кэш команд
Тип 4-вх.
ассоциат.
2-вх.
ассоциат.
4-вх.
ассоциат.
4-вх.
ассоциат.
8-вх.
ассоциат.
Размер
строки, байт 16 32 32 32 -
Общий
объем, Кбайт 8/16 8 16 8/16 12Кmops
L1 кэш данных
Тип
Общий с
кэш
инструкций
2-вх.
ассоциат.
4-вх.
ассоциат.
2/4-вх.
ассоциат.
4-вх.
ассоциат.
Размер
строки, байт 32 32 32 64
Общий
объем, Кбайт 8 16 8/16 8
L2 кэш
Тип
Внешний
внешний 4-вх. ассоциат. 4-вх.
ассоциат.
8-вх.
ассоциат.
Размер
строки, байт 32 32 64
Общий
объем, Кбайт 256/512 128-2048 256/512
Кэш-память и внешние соединения
процессора Pentium III
Процессор
Кэш
команд L1
Кэш
данных L1
Блок шинного интерфейса
Кэш L2
Основная
память
Ввод-вывод
Шина кэша
Системная шина
Устройство кэшей 1-го и 2-го уровня
Большинство современных процессоров имеют
отдельные кэши 1-го уровня (L1-кэши) для инструкций
и данных, и общий кэш 2-го уровня (L2-кэш)
увеличенного размера.
Кэши инструкций различаются по своей организации:
 в процессорах Intel P-III, P-M, P-M2, P8 и IBM PPC970 в
них хранятся исходные машинные инструкции в
неизменённом виде.
 В процессорах AMD K8 — исходные инструкции
вместе с информацией об их разметке
(предекодировании),
 а в процессоре Intel P-4 — полностью
декодированные микрооперации (МОПы),
организованные в виде трасс.
Механизмы вытеснения блоков из
кэшей
Основным отличительным признаком является момент
времени, когда в кэш следующего уровня переписывается
вытесняемый модифицированный блок данных — то есть
такой блок, в который с момента загрузки его в кэш
произошла запись (и содержимое которого изменилось).
Запись модифицированных данных в кэш более
высокого уровня (L2-кэш) может происходить либо
одновременно с их записью в L1-кэш, либо позднее, в
момент вытеснения блока из L1-кэша.
На практике встречаются следующие разновидности
кэшей:
 Writethrough — со сквозной (немедленной) записью
модифицированных данных в L2-кэш;
 Writeback — с отложенной записью
модифицированных данных из L1-кэша в L2-кэш;
 Exclusive — эксклюзивный, с отложенной записью
из L1-кэша в L2-кэш как модифицированных, так и не
модифицированных (чистых) данных.
В процессорах P-4 и PPC970 используется L1-кэш со
сквозной записью, в P-III, P-M, P-M2 и P8 — L1-кэш с
отложенной записью, а в K8 — эксклюзивный кэш.
Каждый из двух основных механизмов (со сквозной и с
отложенной записью) имеет свои преимущества и
недостатки. Сквозная запись увеличивает нагрузку на
L2-кэш, так как при каждой записи данных в L1-кэш
производится их немедленное копирование в L2. С другой
стороны, при необходимости освободить место в L1-
кэше такой модифицированный блок может быть
немедленно удалён из него, так как в L2-кэше уже
имеется его копия.
При отложенной записи копирование в L2-кэш
производится только в момент вытеснения
модифицированного блока — что позволяет избегать
лишних пересылок данных, но приводит к усложнению
кэшей и необходимости создания очереди для
буферизации вытесняемых блоков.
Термин «эксклюзивный» обычно
относят к кэшу 2-го уровня, но на самом
деле это совместное свойство обоих
кэшей — L1 и L2. При такой организации
искусственно поддерживается
состояние, когда блок данных хранится
только в одном из кэшей — L1 либо L2.
При первоначальной загрузке из памяти блок
помещается непосредственно в L1-кэш, минуя L2-кэш. При
вытеснении из L1-кэша этот блок переписывается в L2-кэш
для последующего сохранения (даже, если он не был
модифицирован). При повторном считывании блока из L2-
кэша в L1-кэш он снова удаляется из L2-кэша.
«Не-эксклюзивная» организация кэшей L1 и L2 не
подразумевает их обязательной «инклюзивности» — блок
данных или инструкций может быть вытеснен из L2-
кэша и при этом сохраниться в соответствующем L1-
кэше. Таким не-эксклюзивным (но и не инклюзивным)
способом организованы кэши в процессорах P-III, P-4, P-M,
P-M2 и P8.
В процессоре PPC970 L1-кэш организован чисто
инклюзивно по отношении к L2-кэшу. При вытеснении
блока из L2-кэша проверяется, не сохранился ли он в
L1-кэше — и в этом случае искусственно удаляется
оттуда тоже. Наряду с использованием механизма
сквозной записи для вытеснения данных из L1-кэша это
позволяет упростить так называемую проверку
когерентности кэшей в многопроцессорной (многоядерной)
системе, когда другой CPU проверяет наличие данных в
кэшах текущего CPU.
При инклюзивной организации достаточно
ограничиться проверкой L2-кэша, в то время как при других
организациях необходимо проверять кэши обоих уровней.
Вытеснение модифицированных данных из
кэша 2-го уровня в память всегда
производится по механизму отложенной
записи.
Критерий эффективной работы кэша
Критерием эффективной работы кэша можно
считать уменьшение среднего времени доступа к
памяти по сравнению с системой без кэш-памяти. В
таком случае среднее время доступа можно оценить
следующим образом:
Tср = (Thit x Rhit) + (Tmiss x (1 - Rhit)),
где Thit – время доступа к кэш-памяти в случае
попадания (включает время на идентификацию промаха
или попадания), Tmiss – время, необходимое на загрузку
блока из основной памяти в строку кэша в случае кэш-
промаха и последующую доставку запрошенных данных в
процессор, Rhit – частота попаданий.
Очевидно, что, чем ближе значение Rhit к 1, тем ближе
значение Tср к Thit. Частота попаданий определяется в
основном архитектурой кэш-памяти и объемом.
Размер и эффективность
кэш-памяти
Размер кэш-
памяти
Попадания, % Выигрыш, %
Нет кэш, DRAM c
2 TW
0 0
16 Кб 81 35
32 Кб 86 38
64 Кб 88 39
128 Кб 89 39
Нет кэш, SRAM
без TW
100 47
Кэш ЦП МС 68020
Поле метки Регистр Слово
А31 А8 А7 А2 А1 А0
Кэш-память
24-разрядное
поле метки
4-байтовое слово Кэш-строка
Указание кэш-строки
Сравниваемыеполя
Бит значимости
Кэш-память с прямым отображением системы МС 68020
ф. Motorola, со сквозной записью.
Вопросы повышения эффективности
доступа к данным
Наиболее важными являются механизмы
предвыборки из памяти. В современных
процессорах реализовано два таких механизма —
программная предвыборка (software prefetch), и
автоматическая аппаратная предвыборка
(hardware prefetch).
Наличие машинных инструкций
программной предвыборки позволяет
организовать пересылку данных из
оперативной памяти в кэши процессора
заблаговременно, с таким расчётом, чтобы ко
времени использования этих данных они уже
оказались бы в кэшах.
Автоматическая аппаратная предвыборка
представляет собой механизм, который
распознаёт последовательные (или иные
регулярные) обращения в память и пытается
производить опережающую подкачку данных.
Особенность операции предвыборки состоит в
том, что она лишь инициирует считывание данных
из памяти, после чего считается завершённой.
Ещё один механизм работы с памятью связан с
особенностями загрузки и выгрузки в условиях
внеочередного исполнения. В связи с тем, что
операция может считаться корректно
выполненной только к моменту ухода в
отставку и не ранее, чем будут отставлены все
предшествующие операции, физическая запись
в кэши или в память не может быть
произведена до этого момента. По этой причине
все результаты выгрузки (записи) в память
накапливаются в специальном буфере
упорядочения обращений к памяти MOB (Memory
Order Buffer). Физическая запись данных из
этого буфера в кэш производится только в
момент отставки соответствующей
инструкции.
Для самостоятельного изучения
Устройство кэшей 1-го и 2-го уровня
Организация кэшей данных 1-го уровня в целом
соответствует организации классического кэша инструкций.
Например, в процессорах P-M, P-M2 и P8 общая структура
кэшей инструкций и данных полностью совпадает: размер
составляет 32 Кбайт, уровень ассоциативности — 8,
размер блока — 64 байта. Также совпадает структура
кэшей в процессоре K8: размер — 64 Кбайт,
ассоциативность — 2, блок — 64 байта.
Для всех указанных процессоров время доступа к
кэшу данных 1-го уровня составляет 3 такта.
В процессоре P-4 кэш данных по своей организации
несколько отличается от кэшей других процессоров. Он
имеет небольшой размер (8 Кбайт при уровне
ассоциативности 4) и очень низкое время доступа — всего
2 такта.
Столь быстрый доступ к кэшу обеспечивается
применением ряда приёмов:
 тесной интеграцией кэша с арифметико-логическим и
адресным устройствами,
 удвоенной частотой работы этих устройств
 и использованием 16 младших разрядов программного
(логического) адреса для спекулятивной выборки
элемента данных.
Для адресации требуемого набора в кэше
используются соответствующие разряды адреса b10-5, а
для «предварительного» нахождения блока в этом наборе
— всего 5 следующих разрядов b15-11 (эти разряды
называют мини-тэгом). Окончательная проверка старших
разрядов адреса (ключа) на соответствие полному тэгу
вместе с преобразованием программного адреса в
физический производится позднее.
Если при этой проверке выяснится, что данные были
считаны неправильно, они помечаются как
недействительные, и производится их считывание из L2-
кэша (как и в случае ненахождения данных в L1-кэше).
Кэши 2-го уровня в рассматриваемых процессорах
имеют примерно одинаковую общую организацию. Размер
блока L2-кэша в современных процессорах составляет
64 или 128 байт.
Кэш 2-го уровня соединён с L1-кэшами
полночастотной шиной, ширина которой может достигать
32 байта (256 бит), а пропускная способность — 121.6
Гбайт/с (для процессора P-4E 3.8 ГГц). В процессоре K8
шина L2-кэша имеет ширину 16 байтов (128 бит) и
пропускную способность 48 Гбайт/с (при частоте
процессора 3.0 ГГц).
Однако из-за необходимости копировать в L2-кэш
данные, вытесняемые из L1-кэша (в связи с взаимно
эксклюзивной организацией кэшей в этом процессоре),
эффективный темп считывания из L2-кэша снижается
вдвое. В двухъядерных процессорах P-M2 (Core Duo) и P8
(Core) используется L2-кэш, общий для обоих ядер.
Размеры L2-кэшей очень сильно варьируются в
пределах каждого семейства процессоров. Приведём
максимальные размеры и значения уровней
ассоциативности для различных семейств: P-III — 512K (8),
P-M — 2M (8), P-4 — 512K (8), P8 — 4M (16), K8 — 1M (16).
Время доступа к L2-кэшу не является однозначной
величиной и в ряде случаев может зависеть от нагрузки
(частоты обращений). В документации по процессорам
обычно приводят «чистые» значения, которые бывает
трудно воспроизвести в тестах.
Можно дать следующие примерные оценки полного
времени доступа к данным в L2-кэше в тактах (по
результатам тестирования на сайте iXBT.com): P-III - 8, P-
M — 10, P-4 — 19 (9), P-4E — 29 (22), P-M2 — 14, P8 — 14,
K8 — 17 (12).
Для процессоров P-4, P-4E и K8 в скобках показаны
«минимальные» значения времени доступа, полученные с
помощью специальных приёмов тестирования, когда
производилась «разгрузка» шины L2-кэша. Отметим, что в
процессорах P-4 и P-4E длина такта меньше, чем в других
процессорах, и время доступа к их кэшам (без «разгрузки»
шины), выраженное в «нормализованных» тактах с учётом
соотношения 1:1.4, составит соответственно 14 и 21 такт.
Кэш трасс в процессоре Pentium 4
Кэш инструкций в процессоре P-4 очень сильно
отличается от I-кэша в процессоре классической
архитектуры. В нём преобразование исходных x86-
инструкций в микрооперации (МОПы) производится
перед кэшем, а в кэш помещаются целые трассы,
составленные из этих МОПов. Поэтому такой кэш в
процессоре P-4 называется «кэш трасс» (Trace-cache, Т-
кэш). Трассы формируются в соответствии с
предполагаемым динамическим порядком исполнения
инструкций. В момент декодирования производится
первичное предсказание перехода, и если
предсказывается совершённый переход, то целевая
инструкция помещается в трассу вслед за инструкцией
перехода. Трасса может содержать множество таких
«запаянных» переходов.
Размещение кэша «после декодера» и хранение в нём
сформированных МОПов позволяет избежать
необходимости параллельно декодировать несколько
инструкций в условиях повышенной тактовой частоты, а
также сократить затраты (число этапов конвейера) на
обработку операции после её выборки из кэша.
Кроме того, «запаивание» предсказанных переходов в
трассу позволяет существенно снизить потери на их
выполнение — теперь в одном такте может быть
выполнена операция, предшествующая переходу, сам
переход и операция, следующая за ним.
В классических процессорах такая
последовательность могла бы занять три такта.
Принципиальной особенностью Т-кэша, которая
определяет способ хранения МОПов и механизмы работы
с ними,
является отсутствие прямолинейного
соответствия между адресом исходной инструкции и
местоположением соответствующего МОПа (МОПов) в
кэше
в связи с тем, что x86-инструкция переменной
длины преобразуется в один или несколько МОПов
фиксированной длины.
Кроме того, хранение МОПов в виде трасс в
предполагаемом порядке исполнения операций нарушает
монотонность и непрерывность соответствия между
адресами инструкций и положением МОПов в кэше.
И, наконец, возможность раскрутки циклов в Т-кэше (то
есть размещения в нём нескольких итераций цикла) и
построения пересекающихся трасс нарушает взаимную
однозначность между x86-инструкциями и МОПами —
теперь одной исходной инструкции могут
соответствовать несколько МОПов в разных
итерациях цикла либо в различных трассах.
На рисунке показан пример подобного кода и
соответствие между исходными инструкциями (в их
естественном размещении) и МОПами в трассе (в
предполагаемом порядке исполнения).
Механизм отображения адресов x86-инструкций в
позиции МОПов необходим не для каждой инструкции, а
только для тех, на которые производится переход — то
есть для первого МОПа в каждой трассе. Все
последующие МОПы располагаются в цепочке блоков
кэша, непрерывно следующих друг за другом — до конца
текущей трассы.
В этом примере присутствует предсказанный переход
и частичная раскрутка цикла.
Буквами I и i обозначены обычные инструкции и
МОПы, а буквами J и j — инструкции и МОПы перехода.
Т-кэш состоит из блоков размером в 6 ячеек.
Обычно МОП занимает одну ячейку, однако в некоторых
случаях может потребоваться дополнительное место для
размещения недостающей информации. Темп
последовательного чтения из Т-кэша составляет 1
блок за 2 такта, или 3 МОПа за такт — что находится в
соответствии с темпом обработки и отставки МОПов.
Объём Т-кэша составляет 12K ячеек, или 2048 блоков,
организованных в 256 наборов по 8 блоков. Для
преобразования программного адреса первой x86-
инструкции в каждой трассе (как правило, это инструкция,
на которую производится переход) в положение первого
блока трассы в кэше используется комбинированный
алгоритм, сочетающий прямую адресацию по нескольким
разрядам программного адреса инструкции с
ассоциативным поиском. Разряды этого адреса b10-3
указывают номер набора, а нахождение требуемого блока
в наборе осуществляется сравнением остальных
разрядов адреса (ключа) с соответствующими разрядами
адреса, хранящимися для каждого блока в наборе
(тэгами).
Вопросы повышения эффективности
доступа к данным
В современных процессорах имеются различные
средства, позволяющие повысить эффективность доступа
к данным в памяти и снизить потери на ожидание их
прихода, а также прочие задержки и затраты на
организацию этого доступа. Наиболее важными из этих
средств являются механизмы предвыборки из памяти.
В современных процессорах реализовано два таких
механизма — программная предвыборка (software
prefetch), и автоматическая аппаратная предвыборка
(hardware prefetch).
Наличие машинных инструкций программной
предвыборки позволяет организовать пересылку
данных из оперативной памяти в кэши процессора
заблаговременно, с таких расчётом, чтобы ко времени
использования этих данных они уже оказались бы в кэшах.
Существуют различные варианты инструкций
предвыборки — считывание из памяти в L2-кэш,
считывание из памяти или из L2-кэша в L1-кэш,
считывание блока для его последующей модификации,
либо для одноразового использования. В процессоре P-4
реализована предвыборка только в L2-кэш.
Автоматическая аппаратная предвыборка
представляет собой механизм, который распознаёт
последовательные (или иные регулярные) обращения
в память и пытается производить опережающую
подкачку данных. В некоторых процессорах этот
механизм умеет работать как в прямом, так и в обратном
направлении (то есть как по возрастанию, так и по
убыванию адресов в памяти) и может распознавать
несколько независимых последовательностей адресов,
обеспечивая тем самым предвыборку нескольких потоков
данных.
Особенность операции предвыборки состоит в
том, что она лишь инициирует считывание данных из
памяти, после чего считается завершённой.
В отличие от обычной операции доступа к памяти,
операция предвыборки не должна ожидать прихода
данных в конкретный регистр, поэтому она не блокирует
другие операции в буфере переупорядочения ROB и
может быть отправлена в отставку немедленно.
Использование же операции фиктивной загрузки данных в
регистр (с целью ускорения их прихода в кэш) привело бы
к такому блокированию — несмотря на то, что значение,
считанное в регистр, не понадобилось бы никакой другой
операции.
Ещё один механизм работы с памятью связан с
особенностями загрузки и выгрузки в условиях
внеочередного исполнения. В связи с тем, что операция
может считаться корректно выполненной только к
моменту ухода в отставку и не ранее, чем будут
отставлены все предшествующие операции,
физическая запись в кэши или в память не может быть
произведена до этого момента. По этой причине все
результаты выгрузки (записи) в память накапливаются в
специальном буфере упорядочения обращений к памяти
MOB (Memory Order Buffer). Физическая запись данных
из этого буфера в кэш производится только в момент
отставки соответствующей инструкции. Если операция
загрузки (чтения) из памяти адресует элемент данных,
который оказался в этом буфере, то он считывается
непосредственно из буфера.
В условиях внеочередного исполнения может
получиться, что операция загрузки окажется готовой к
выполнению раньше, чем выполнится операция выгрузки,
записывающая данные в память по тому же адресу. Чтобы
избежать проблем такого рода, в процессорах обычно
реализуют консервативные схемы управления
операциями обращения в память, с запретом на
выполнение любых рискованных операций, которые
могли бы привести к чтению некорректных данных.
Однако такие консервативные схемы могут помешать
внеочередному исполнению «безопасных» операций и
привести к снижению производительности.
На практике вероятность конфликтов по адресам
такого рода обычно невелика.
Платформа ПК: чего ждать в 2011 году
Процессорные архитектуры, графические чипы,
память - всё это продолжает год от года развиваться и
совершенствоваться. Что покажут гиганты индустрии в
следующем году?
http://www.computerra.ru/vision/584071/
Когерентность кэш-памяти
Что такое «протокол поддержания когерентности кэшей»?
Пусть, например, у нас процессор CPU0 произвел какие-то
вычисления и записал полученный результат в оперативную
память. Поскольку у CPU0, разумеется, есть «своя»,
персональная кэш-память (хотя бы первого уровня), то запись
данных производится не в «тормозную» оперативную память, а
в кэш. В случае однопроцессорных систем эта схема
замечательно работает… но что будет, если в
многопроцессорной системе та же самая ячейка памяти,
которую изменил процессор CPU0, для каких-то целей
понадобится и процессору CPU1? В «лучшем» случае CPU1
прочитает эту ячейку из оперативной памяти, куда, если
повезет, процессор CPU0 уже успеет сохранить её новое
значение. В худшем – эта ячейка (с устаревшими данными)
окажется в его кэше и CPU1 даже не будет пытаться выяснить,
изменилось ли что-нибудь с тех пор, как он в последний раз эту
ячейку из оперативной памяти прочитал. Всё вместе
называется «проблемой когерентности кэшей», а методы её
решения – как раз и называют соответствующими
«протоколами».
Как эту проблему решают? Простейший протокол
поддержания когерентности – это так называемый Write-
Through, когда любые изменения сразу же записываются
(write through cache) не только в кэш-память, но и в
оперативную память компьютера; причем остальные
процессоры как-то об этом знаменательном событии
информируются. Например, если используется общая
шина, то другие процессоры просто «подслушивают»
(snoop), что текущий «владелец» шины по ней пересылает
и, зарегистрировав, что CPU0 выполняет операцию записи
в память, обновляют «свои» записи в кэше. Обычно,
чтобы сэкономить время - просто помечают, что
соответствующие строки в кэше отныне «неправильные»
(Invalid) и при обращении к ним данные необходимо брать
не из кэша, а из оперативной памяти. Схема достаточно
простая... но неэффективная: запись данных в
оперативную память – далеко не быстрый процесс.
Но зачем разбазаривать зря ресурсы компьютера
(пропускную способность шины и оперативной памяти),
сохраняя малейшие изменения в медленной оперативной
памяти, если вся эта «обновленная» информация может
еще десять раз обновиться, прежде чем она понадобится
кому-то кроме «владеющего» этой информацией
процессора? А ведь если поразмыслить, то работа
нескольких процессоров одновременно с одним и тем же
участком оперативной памяти – явление исключительное:
в подавляющем большинстве случаев каждый процессор
занимается обработкой «своего» участка и лишь изредка –
обращается к участку «чужому». Именно эта идея
положена в основу протокола MESI. Использующий его
процессор, четко различает кэш-строки, которых заведомо
нет в кэшах других процессоров (они помечаются как
Exclusive) и «общие», присутствующие более чем в одном
кэше (они помечаются как Shared).
Если изменяется Shared-строка, то «соседям» по
компьютеру передается сигнал-требование проверить
свои кэши и, если что, сделать напротив своих записей в
кэшах пометку «неправильно» (Invalid); если изменяется
Exclusive-строка (а как уже говорилось, вероятность этого
события очень велика), то делать эту достаточно
трудоемкую операцию нет необходимости. В любом
случае строка помечается как Modified, но попыток эту
самую строку немедленно записать в оперативную память
не предпринимается. Зато все процессоры бдительно
наблюдают за всеми операциями чтения данных из
памяти и если один из процессоров замечает, что его
сосед пытается прочитать строчку памяти, которая в его
кэше помечена, как «Modified», то он прерывает эту
операцию, сохраняет изменения в оперативной памяти,
снимает со «своей» кэш-строки «галочку» Modified и
только после этого разрешает вызвавшему «проблему»
процессору завершить операцию чтения. В итоге
«типовые» операции с кэш-памятью в MESI происходят
практически с той же скоростью, что и в single-системе.
А что же AMD? AMD использует всё тот же MESI, но
только доработанный таким образом, чтобы процессоры
могли эффективно использовать данные из кэш-памяти
друг друга. В MESI процессоры почти не используют кэши
своих соседей: в лучшем случае, чтение обновленных
данных из памяти производится при выгрузке этих данных
в память «соседом». В протоколе же MOESI любая
операция чтения сопровождается проверкой кэшей
соседей – если нужные данные находятся в одном из них,
то и читаются они прямо оттуда; причем сохранение этих
данных в оперативную память при этом не производится.
Просто «владелец» этой памяти делает у себя «зарубку»
Owner 3 напротив соответствующей строки кэш-памяти.
Мы убиваем двух зайцев одним выстрелом: не
производим ненужных записей в оперативную память и
эффективно используем память «соседа». В итоге в
двухядерных процессорах кэш-память первого и второго
уровней «соседнего ядра» может работать как кэш-память
третьего уровня (L3); а кэш-память «чужих» процессоров в
многопроцессорной системе – как кэши четвертого уровня.
Конечно, это не «полноценный» кэш L3/L4 и уж точно –
не полноценный разделяемый L2 (поскольку
самостоятельно загрузить «соседа» своими данными ядро
процессора не может – оно может только надеяться, что
«сосед» тоже эти данные будет использовать), однако
свою прибавку к производительности, безусловно, MOESI
должен обеспечивать. Только не следует думать, что в
Intel не могут реализовать аналог протокола,
предложенного еще аж в 1986 году (и определенные
варианты таки присутствует в Itanium-системах и
некоторых других ядрах) – просто для систем с общей
системной шиной никаких преимуществ по сравнению с
MESI он не предоставляет. Что просто перебросить по
этой медленной общей шине данные от одного
процессора к другому, что эти данные заодно и в
оперативную память записать – разницы почти никакой. А
вот для процессоров AMD, у которых ядра и процессоры
связаны между собой интерфейсами, работающими
гораздо быстрее обычной оперативной памяти, разница
есть и порой она становится весьма ощутимой.
Чтобы всё не выглядело настолько неприглядно для Intel,
заметим, что у этой корпорации тоже есть очень сильный козырь в
кармане – и называется он Hyper-Threading. Технология виртуальной
многопоточности (когда одно физическое ядро изображает из себя
несколько «виртуальных») позволяет гораздо эффективнее загрузить
исполнительные блоки этих процессоров работой. Мало кто знает, что
IPC (количество инструкций, которые можно выполнить за один такт)
для этих процессоров в устоявшемся режиме может доходить до
четырех. Это не просто много: это очень много даже по современным
меркам. Для сравнения, процессоры AMD архитектур K7 и K8
выполняют по 3 (в пике – до 6) инструкций за такт, то есть
теоретическая эффективность в пересчете на один мегагерц у
Pentium 4 должна быть выше, чем у Athlon 64 и Opteron. Почему КПД
архитектуры NetBurst в ряде приложений получается «очень
скромным» - вопрос для немаленькой отдельной статьи (да и
написано по этому поводу уже очень много), отметим только, что
сверхвысокие IPC для Pentium 4 вполне можно увидеть на практике –
на тщательно оптимизированных приложениях и тестах типа Linpack-а
или Prime 95. Главное – это то, что Hyper-Threading позволяет
существующий КПД процессора на 10-25% увеличить: подобная
прибавка вполне способна перекрыть и выигрыш от более быстрой
подсистемы памяти, и от более быстрой шины и от «более
продвинутого» протокола MOESI.
http://www.cyberguru.ru/
Вопросы для самоконтроля
1. Какая память в ПК является самой быстрой? Имеет
самую большую емкость?
2. Объясните, в чем состоит принцип временной и
пространственной локальности программы.
3. Какие способы существуют для согласования
содержимого кэш-памяти и основной памяти?
4. Перечислите типы кэш-памяти.
5. Как различаются кэши инструкций по своей
организации?
6. Перечислите и объясните механизмы вытеснения
блоков из кэшей.
7. Чем отличается эксклюзивная и инклюзивная
организация кэшей?
8. Особенности кэша трасс в процессоре Pentium 4.
9. Какие способы повышения эффективности доступа к
данным вы знаете?

More Related Content

What's hot

Строение компьютера
Строение компьютераСтроение компьютера
Строение компьютераRonny_Rosenberg
 
процессоры презентация
процессоры   презентацияпроцессоры   презентация
процессоры презентацияИван Иванов
 
Medical informatics
Medical informaticsMedical informatics
Medical informaticsHelao Silas
 
43
4343
43JIuc
 
Лекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и системЛекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и системpianist2317
 
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...Mikhail Kurnosov
 
тест по теме микропроцессорные системы
тест по теме микропроцессорные системытест по теме микропроцессорные системы
тест по теме микропроцессорные системыJIuc
 
тест по темам принцип открытой архитектуры
тест по темам принцип открытой архитектурытест по темам принцип открытой архитектуры
тест по темам принцип открытой архитектурыJIuc
 
1.stm32 core flash rcc
1.stm32 core flash rcc1.stm32 core flash rcc
1.stm32 core flash rccSergey Savkin
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Mikhail Kurnosov
 
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)Ontico
 
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)Mikhail Kurnosov
 
Архитектура AMD64 (EM64T)
Архитектура AMD64 (EM64T)Архитектура AMD64 (EM64T)
Архитектура AMD64 (EM64T)Tatyanazaxarova
 
тест Atutor аппаратное обеспечение
тест Atutor аппаратное обеспечениетест Atutor аппаратное обеспечение
тест Atutor аппаратное обеспечениеJIuc
 
035
035035
035JIuc
 

What's hot (19)

Строение компьютера
Строение компьютераСтроение компьютера
Строение компьютера
 
процессоры презентация
процессоры   презентацияпроцессоры   презентация
процессоры презентация
 
[DD] 10. Memory
[DD] 10. Memory[DD] 10. Memory
[DD] 10. Memory
 
Medical informatics
Medical informaticsMedical informatics
Medical informatics
 
Лекция № 3 Организация ЭВМ и систем
Лекция № 3 Организация ЭВМ и системЛекция № 3 Организация ЭВМ и систем
Лекция № 3 Организация ЭВМ и систем
 
43
4343
43
 
Лекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и системЛекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и систем
 
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
 
тест по теме микропроцессорные системы
тест по теме микропроцессорные системытест по теме микропроцессорные системы
тест по теме микропроцессорные системы
 
тест по темам принцип открытой архитектуры
тест по темам принцип открытой архитектурытест по темам принцип открытой архитектуры
тест по темам принцип открытой архитектуры
 
1.stm32 core flash rcc
1.stm32 core flash rcc1.stm32 core flash rcc
1.stm32 core flash rcc
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
 
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
 
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
 
презентация 1
презентация 1презентация 1
презентация 1
 
Архитектура AMD64 (EM64T)
Архитектура AMD64 (EM64T)Архитектура AMD64 (EM64T)
Архитектура AMD64 (EM64T)
 
тест Atutor аппаратное обеспечение
тест Atutor аппаратное обеспечениетест Atutor аппаратное обеспечение
тест Atutor аппаратное обеспечение
 
Информатика (устройство ПК)
Информатика (устройство ПК)Информатика (устройство ПК)
Информатика (устройство ПК)
 
035
035035
035
 

Similar to Лекция №5 Организация ЭВМ и систем

prezlec_Історія.ppt
prezlec_Історія.pptprezlec_Історія.ppt
prezlec_Історія.pptssusere2bc36
 
Лекция 4: Оптимизация доступа к памяти (Memory access optimization, caches)
Лекция 4: Оптимизация доступа к памяти (Memory access optimization, caches)Лекция 4: Оптимизация доступа к памяти (Memory access optimization, caches)
Лекция 4: Оптимизация доступа к памяти (Memory access optimization, caches)Mikhail Kurnosov
 
Исследование работы Кэш-памяти центрального процессора
Исследование работы Кэш-памяти центрального процессораИсследование работы Кэш-памяти центрального процессора
Исследование работы Кэш-памяти центрального процессораSemen Martynov
 
030
030030
030JIuc
 
029
029029
029JIuc
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Ontico
 
031
031031
031JIuc
 
44
4444
44JIuc
 
Аппаратная реализация персонального компьютера
Аппаратная реализация персонального компьютераАппаратная реализация персонального компьютера
Аппаратная реализация персонального компьютераstudent_SSGA
 
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019corehard_by
 
Дмитрий Еманов — Под капотом серверного ПО
Дмитрий Еманов — Под капотом серверного ПОДмитрий Еманов — Под капотом серверного ПО
Дмитрий Еманов — Под капотом серверного ПОDaria Oreshkina
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...a15464321646213
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2Technopark
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Ontico
 
033
033033
033JIuc
 
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памятиЕвгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памятиFProg
 
Обзор современных микроконтроллеров и их архитектур
Обзор современных микроконтроллеров и их архитектурОбзор современных микроконтроллеров и их архитектур
Обзор современных микроконтроллеров и их архитектурIoT Community
 

Similar to Лекция №5 Организация ЭВМ и систем (20)

prezlec_Історія.ppt
prezlec_Історія.pptprezlec_Історія.ppt
prezlec_Історія.ppt
 
Лекция 4: Оптимизация доступа к памяти (Memory access optimization, caches)
Лекция 4: Оптимизация доступа к памяти (Memory access optimization, caches)Лекция 4: Оптимизация доступа к памяти (Memory access optimization, caches)
Лекция 4: Оптимизация доступа к памяти (Memory access optimization, caches)
 
Исследование работы Кэш-памяти центрального процессора
Исследование работы Кэш-памяти центрального процессораИсследование работы Кэш-памяти центрального процессора
Исследование работы Кэш-памяти центрального процессора
 
030
030030
030
 
029
029029
029
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
 
031
031031
031
 
44
4444
44
 
Аппаратная реализация персонального компьютера
Аппаратная реализация персонального компьютераАппаратная реализация персонального компьютера
Аппаратная реализация персонального компьютера
 
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
 
4
44
4
 
Лекция №2
Лекция №2Лекция №2
Лекция №2
 
Дмитрий Еманов — Под капотом серверного ПО
Дмитрий Еманов — Под капотом серверного ПОДмитрий Еманов — Под капотом серверного ПО
Дмитрий Еманов — Под капотом серверного ПО
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
 
033
033033
033
 
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памятиЕвгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
 
Purely practical data structures
Purely practical data structuresPurely practical data structures
Purely practical data structures
 
Обзор современных микроконтроллеров и их архитектур
Обзор современных микроконтроллеров и их архитектурОбзор современных микроконтроллеров и их архитектур
Обзор современных микроконтроллеров и их архитектур
 

Лекция №5 Организация ЭВМ и систем

  • 1. Организация ЭВМ и систем Тема: Системы памяти ЭВМ • Основные характеристики системы памяти • Распределение адресного пространства • Кэш-память • Типы кэш-памяти • Особенности обновления информации в кэш- памяти
  • 2. Организация интерфейса памяти Появления 32-разрядного МП определило использование 3 новых концепций организации интерфейса памяти. 1. Расширение шины локальной памяти. 2. Расслоение (интерливинг) памяти. 3. Виртуальное управление памятью. В 32-разрядных МП два вида организации виртуальной памяти: страничная и сегментная.
  • 3. Иерархия подсистемы памяти ПК 1. Регистровая память (сверхоперативное запоминающее устройство). 2. Буферная память (кэш-память – для согласования скорости работы ЦП и основной памяти). • I-го уровня – L1 • II-го уровня – L2 3. Основная память (ОЗУ, ПЗУ). 4. Массовая (внешняя память).
  • 4. Иерархия подсистемы памяти ПК Регистры Кэш L1 Кэш L2 Основная память Внешняя память ПроцессорУвеличение объема Увеличение быстродействия Увеличение стоимости хранения одного бита
  • 5. Иерархия подсистемы памяти ПК № Тип ЗУ 1985 г. 2000 г. Время выбор ки Типич ный объем Цена / байт Время выбор ки Типичн ый объем Цена / байт 1 Сверхоператив ные ЗУ (регистры) 0,2 5 нс 16/32 бит $ 3 – 100 0,01 1 нс 32/64/ 128 бит $ 0,1 10 2 Быстродейству ющее буферное ЗУ (кэш) 20 100 нс 8Кб – 64Кб ~ $ 10 0,5 – 2 нс 32Кб 1Мб $ 0,1 – 0,5 3 Оперативное (основное) ЗУ ~ 0,5 мс 1Мб – 256Мб $ 0,02 1 2 нс 20 нс 128Мб – 4Гб $ 0,01 0,1 4 Внешние ЗУ (массовая память) 10 – 100 мс 1Мб – 1Гб $ 0,002 – 0,04 5 – 20 мс 1Гб – 0,5Тб $ 0,001 – 0,01
  • 6. Кэш-память Кэш-память представляет собой быстродействующее ЗУ, размещенное на одном кристалле с ЦП или внешнее по отношению к ЦП, служит высокоскоростным буфером между ЦП и относительно медленной основной памятью. В основу положен принцип временной и пространственной локальности программы. Кэш-память представляет собой 2 сверхоперативные памяти: память отображения данных. память тегов.
  • 7. Для согласования содержимого кэш-памяти и ОП используют 3 метода записи: 1. Сквозная – одновременно с кэш-памятью обновляется ОП. 2. Буферизованная сквозная запись – информация задерживается в кэш-буфере перед записью в ОП и переписывается в ОП в те циклы, когда ЦП к ней не обращается. 3. Обратная запись – используется бит изменения в поле тега, и строка переписывается в ОП только в том случае, если бит изменения равен 1.
  • 8. Типы кэш-памяти 1. Кэш прямого отображения: адрес памяти однозначно определяет строку кэша, в которую будет помещен блок информации. 0010 001 100 Тег Строка Смещение 1 4 0 1 2 2 3 4 5 6 7 Тег 0 1 2 3 4 5 6 7 2 К ЦП Данные
  • 9. 0010001 100 Тег Смещение 4 0 79 1 63 2 3 17 4 5 45 6 7 Тег 0 1 2 3 4 5 6 7 К ЦП Данные 2. Полностью ассоциативный кэш – любой блок ОЗУ может быть отображен на любую строку кэш-памяти, в буфер должен быть записан полный адрес каждого блока и непосредственно сам блок. 17
  • 10. 00100 01 100 Тег Набор Смещение 1 0 1 2 19 3 4 4 5 6 7 Тег 0 1 2 3 4 5 6 7 К ЦП Данные 3. Множественный ассоциативный кэш. В этом типе буфера строки разбиваются на группы, в которые могут входить 2, 4, … строк. В соответствии с их количеством различают двухвходовый и четырехвходовый множественный ассоциативный кэш. 4 4 0 1 2 3
  • 11. Типы кэш-памяти  Кэш Гарвардской архитектуры – раздельные кэш- команд и кэш-данных.  Кэш Принстонской архитектуры (Джона фон Неймана) – смешанные кэш-команд и кэш-данных.
  • 12. Характеристики подсистемы кэш-памяти у ЦП IA-32 Intel486 Pentium Pentium MMX P6 Pentium 4 L1 кэш команд Тип 4-вх. ассоциат. 2-вх. ассоциат. 4-вх. ассоциат. 4-вх. ассоциат. 8-вх. ассоциат. Размер строки, байт 16 32 32 32 - Общий объем, Кбайт 8/16 8 16 8/16 12Кmops L1 кэш данных Тип Общий с кэш инструкций 2-вх. ассоциат. 4-вх. ассоциат. 2/4-вх. ассоциат. 4-вх. ассоциат. Размер строки, байт 32 32 32 64 Общий объем, Кбайт 8 16 8/16 8 L2 кэш Тип Внешний внешний 4-вх. ассоциат. 4-вх. ассоциат. 8-вх. ассоциат. Размер строки, байт 32 32 64 Общий объем, Кбайт 256/512 128-2048 256/512
  • 13. Кэш-память и внешние соединения процессора Pentium III Процессор Кэш команд L1 Кэш данных L1 Блок шинного интерфейса Кэш L2 Основная память Ввод-вывод Шина кэша Системная шина
  • 14. Устройство кэшей 1-го и 2-го уровня Большинство современных процессоров имеют отдельные кэши 1-го уровня (L1-кэши) для инструкций и данных, и общий кэш 2-го уровня (L2-кэш) увеличенного размера. Кэши инструкций различаются по своей организации:  в процессорах Intel P-III, P-M, P-M2, P8 и IBM PPC970 в них хранятся исходные машинные инструкции в неизменённом виде.  В процессорах AMD K8 — исходные инструкции вместе с информацией об их разметке (предекодировании),  а в процессоре Intel P-4 — полностью декодированные микрооперации (МОПы), организованные в виде трасс.
  • 15. Механизмы вытеснения блоков из кэшей Основным отличительным признаком является момент времени, когда в кэш следующего уровня переписывается вытесняемый модифицированный блок данных — то есть такой блок, в который с момента загрузки его в кэш произошла запись (и содержимое которого изменилось). Запись модифицированных данных в кэш более высокого уровня (L2-кэш) может происходить либо одновременно с их записью в L1-кэш, либо позднее, в момент вытеснения блока из L1-кэша.
  • 16. На практике встречаются следующие разновидности кэшей:  Writethrough — со сквозной (немедленной) записью модифицированных данных в L2-кэш;  Writeback — с отложенной записью модифицированных данных из L1-кэша в L2-кэш;  Exclusive — эксклюзивный, с отложенной записью из L1-кэша в L2-кэш как модифицированных, так и не модифицированных (чистых) данных. В процессорах P-4 и PPC970 используется L1-кэш со сквозной записью, в P-III, P-M, P-M2 и P8 — L1-кэш с отложенной записью, а в K8 — эксклюзивный кэш.
  • 17. Каждый из двух основных механизмов (со сквозной и с отложенной записью) имеет свои преимущества и недостатки. Сквозная запись увеличивает нагрузку на L2-кэш, так как при каждой записи данных в L1-кэш производится их немедленное копирование в L2. С другой стороны, при необходимости освободить место в L1- кэше такой модифицированный блок может быть немедленно удалён из него, так как в L2-кэше уже имеется его копия. При отложенной записи копирование в L2-кэш производится только в момент вытеснения модифицированного блока — что позволяет избегать лишних пересылок данных, но приводит к усложнению кэшей и необходимости создания очереди для буферизации вытесняемых блоков.
  • 18. Термин «эксклюзивный» обычно относят к кэшу 2-го уровня, но на самом деле это совместное свойство обоих кэшей — L1 и L2. При такой организации искусственно поддерживается состояние, когда блок данных хранится только в одном из кэшей — L1 либо L2. При первоначальной загрузке из памяти блок помещается непосредственно в L1-кэш, минуя L2-кэш. При вытеснении из L1-кэша этот блок переписывается в L2-кэш для последующего сохранения (даже, если он не был модифицирован). При повторном считывании блока из L2- кэша в L1-кэш он снова удаляется из L2-кэша.
  • 19. «Не-эксклюзивная» организация кэшей L1 и L2 не подразумевает их обязательной «инклюзивности» — блок данных или инструкций может быть вытеснен из L2- кэша и при этом сохраниться в соответствующем L1- кэше. Таким не-эксклюзивным (но и не инклюзивным) способом организованы кэши в процессорах P-III, P-4, P-M, P-M2 и P8. В процессоре PPC970 L1-кэш организован чисто инклюзивно по отношении к L2-кэшу. При вытеснении блока из L2-кэша проверяется, не сохранился ли он в L1-кэше — и в этом случае искусственно удаляется оттуда тоже. Наряду с использованием механизма сквозной записи для вытеснения данных из L1-кэша это позволяет упростить так называемую проверку когерентности кэшей в многопроцессорной (многоядерной) системе, когда другой CPU проверяет наличие данных в кэшах текущего CPU.
  • 20. При инклюзивной организации достаточно ограничиться проверкой L2-кэша, в то время как при других организациях необходимо проверять кэши обоих уровней. Вытеснение модифицированных данных из кэша 2-го уровня в память всегда производится по механизму отложенной записи.
  • 21. Критерий эффективной работы кэша Критерием эффективной работы кэша можно считать уменьшение среднего времени доступа к памяти по сравнению с системой без кэш-памяти. В таком случае среднее время доступа можно оценить следующим образом: Tср = (Thit x Rhit) + (Tmiss x (1 - Rhit)), где Thit – время доступа к кэш-памяти в случае попадания (включает время на идентификацию промаха или попадания), Tmiss – время, необходимое на загрузку блока из основной памяти в строку кэша в случае кэш- промаха и последующую доставку запрошенных данных в процессор, Rhit – частота попаданий. Очевидно, что, чем ближе значение Rhit к 1, тем ближе значение Tср к Thit. Частота попаданий определяется в основном архитектурой кэш-памяти и объемом.
  • 22. Размер и эффективность кэш-памяти Размер кэш- памяти Попадания, % Выигрыш, % Нет кэш, DRAM c 2 TW 0 0 16 Кб 81 35 32 Кб 86 38 64 Кб 88 39 128 Кб 89 39 Нет кэш, SRAM без TW 100 47
  • 23. Кэш ЦП МС 68020 Поле метки Регистр Слово А31 А8 А7 А2 А1 А0 Кэш-память 24-разрядное поле метки 4-байтовое слово Кэш-строка Указание кэш-строки Сравниваемыеполя Бит значимости Кэш-память с прямым отображением системы МС 68020 ф. Motorola, со сквозной записью.
  • 24. Вопросы повышения эффективности доступа к данным Наиболее важными являются механизмы предвыборки из памяти. В современных процессорах реализовано два таких механизма — программная предвыборка (software prefetch), и автоматическая аппаратная предвыборка (hardware prefetch). Наличие машинных инструкций программной предвыборки позволяет организовать пересылку данных из оперативной памяти в кэши процессора заблаговременно, с таким расчётом, чтобы ко времени использования этих данных они уже оказались бы в кэшах.
  • 25. Автоматическая аппаратная предвыборка представляет собой механизм, который распознаёт последовательные (или иные регулярные) обращения в память и пытается производить опережающую подкачку данных. Особенность операции предвыборки состоит в том, что она лишь инициирует считывание данных из памяти, после чего считается завершённой.
  • 26. Ещё один механизм работы с памятью связан с особенностями загрузки и выгрузки в условиях внеочередного исполнения. В связи с тем, что операция может считаться корректно выполненной только к моменту ухода в отставку и не ранее, чем будут отставлены все предшествующие операции, физическая запись в кэши или в память не может быть произведена до этого момента. По этой причине все результаты выгрузки (записи) в память накапливаются в специальном буфере упорядочения обращений к памяти MOB (Memory Order Buffer). Физическая запись данных из этого буфера в кэш производится только в момент отставки соответствующей инструкции.
  • 28. Устройство кэшей 1-го и 2-го уровня Организация кэшей данных 1-го уровня в целом соответствует организации классического кэша инструкций. Например, в процессорах P-M, P-M2 и P8 общая структура кэшей инструкций и данных полностью совпадает: размер составляет 32 Кбайт, уровень ассоциативности — 8, размер блока — 64 байта. Также совпадает структура кэшей в процессоре K8: размер — 64 Кбайт, ассоциативность — 2, блок — 64 байта. Для всех указанных процессоров время доступа к кэшу данных 1-го уровня составляет 3 такта. В процессоре P-4 кэш данных по своей организации несколько отличается от кэшей других процессоров. Он имеет небольшой размер (8 Кбайт при уровне ассоциативности 4) и очень низкое время доступа — всего 2 такта.
  • 29. Столь быстрый доступ к кэшу обеспечивается применением ряда приёмов:  тесной интеграцией кэша с арифметико-логическим и адресным устройствами,  удвоенной частотой работы этих устройств  и использованием 16 младших разрядов программного (логического) адреса для спекулятивной выборки элемента данных. Для адресации требуемого набора в кэше используются соответствующие разряды адреса b10-5, а для «предварительного» нахождения блока в этом наборе — всего 5 следующих разрядов b15-11 (эти разряды называют мини-тэгом). Окончательная проверка старших разрядов адреса (ключа) на соответствие полному тэгу вместе с преобразованием программного адреса в физический производится позднее.
  • 30. Если при этой проверке выяснится, что данные были считаны неправильно, они помечаются как недействительные, и производится их считывание из L2- кэша (как и в случае ненахождения данных в L1-кэше). Кэши 2-го уровня в рассматриваемых процессорах имеют примерно одинаковую общую организацию. Размер блока L2-кэша в современных процессорах составляет 64 или 128 байт. Кэш 2-го уровня соединён с L1-кэшами полночастотной шиной, ширина которой может достигать 32 байта (256 бит), а пропускная способность — 121.6 Гбайт/с (для процессора P-4E 3.8 ГГц). В процессоре K8 шина L2-кэша имеет ширину 16 байтов (128 бит) и пропускную способность 48 Гбайт/с (при частоте процессора 3.0 ГГц).
  • 31. Однако из-за необходимости копировать в L2-кэш данные, вытесняемые из L1-кэша (в связи с взаимно эксклюзивной организацией кэшей в этом процессоре), эффективный темп считывания из L2-кэша снижается вдвое. В двухъядерных процессорах P-M2 (Core Duo) и P8 (Core) используется L2-кэш, общий для обоих ядер. Размеры L2-кэшей очень сильно варьируются в пределах каждого семейства процессоров. Приведём максимальные размеры и значения уровней ассоциативности для различных семейств: P-III — 512K (8), P-M — 2M (8), P-4 — 512K (8), P8 — 4M (16), K8 — 1M (16). Время доступа к L2-кэшу не является однозначной величиной и в ряде случаев может зависеть от нагрузки (частоты обращений). В документации по процессорам обычно приводят «чистые» значения, которые бывает трудно воспроизвести в тестах.
  • 32. Можно дать следующие примерные оценки полного времени доступа к данным в L2-кэше в тактах (по результатам тестирования на сайте iXBT.com): P-III - 8, P- M — 10, P-4 — 19 (9), P-4E — 29 (22), P-M2 — 14, P8 — 14, K8 — 17 (12). Для процессоров P-4, P-4E и K8 в скобках показаны «минимальные» значения времени доступа, полученные с помощью специальных приёмов тестирования, когда производилась «разгрузка» шины L2-кэша. Отметим, что в процессорах P-4 и P-4E длина такта меньше, чем в других процессорах, и время доступа к их кэшам (без «разгрузки» шины), выраженное в «нормализованных» тактах с учётом соотношения 1:1.4, составит соответственно 14 и 21 такт.
  • 33. Кэш трасс в процессоре Pentium 4 Кэш инструкций в процессоре P-4 очень сильно отличается от I-кэша в процессоре классической архитектуры. В нём преобразование исходных x86- инструкций в микрооперации (МОПы) производится перед кэшем, а в кэш помещаются целые трассы, составленные из этих МОПов. Поэтому такой кэш в процессоре P-4 называется «кэш трасс» (Trace-cache, Т- кэш). Трассы формируются в соответствии с предполагаемым динамическим порядком исполнения инструкций. В момент декодирования производится первичное предсказание перехода, и если предсказывается совершённый переход, то целевая инструкция помещается в трассу вслед за инструкцией перехода. Трасса может содержать множество таких «запаянных» переходов.
  • 34. Размещение кэша «после декодера» и хранение в нём сформированных МОПов позволяет избежать необходимости параллельно декодировать несколько инструкций в условиях повышенной тактовой частоты, а также сократить затраты (число этапов конвейера) на обработку операции после её выборки из кэша. Кроме того, «запаивание» предсказанных переходов в трассу позволяет существенно снизить потери на их выполнение — теперь в одном такте может быть выполнена операция, предшествующая переходу, сам переход и операция, следующая за ним. В классических процессорах такая последовательность могла бы занять три такта.
  • 35. Принципиальной особенностью Т-кэша, которая определяет способ хранения МОПов и механизмы работы с ними, является отсутствие прямолинейного соответствия между адресом исходной инструкции и местоположением соответствующего МОПа (МОПов) в кэше в связи с тем, что x86-инструкция переменной длины преобразуется в один или несколько МОПов фиксированной длины. Кроме того, хранение МОПов в виде трасс в предполагаемом порядке исполнения операций нарушает монотонность и непрерывность соответствия между адресами инструкций и положением МОПов в кэше.
  • 36. И, наконец, возможность раскрутки циклов в Т-кэше (то есть размещения в нём нескольких итераций цикла) и построения пересекающихся трасс нарушает взаимную однозначность между x86-инструкциями и МОПами — теперь одной исходной инструкции могут соответствовать несколько МОПов в разных итерациях цикла либо в различных трассах. На рисунке показан пример подобного кода и соответствие между исходными инструкциями (в их естественном размещении) и МОПами в трассе (в предполагаемом порядке исполнения). Механизм отображения адресов x86-инструкций в позиции МОПов необходим не для каждой инструкции, а только для тех, на которые производится переход — то есть для первого МОПа в каждой трассе. Все последующие МОПы располагаются в цепочке блоков кэша, непрерывно следующих друг за другом — до конца текущей трассы.
  • 37. В этом примере присутствует предсказанный переход и частичная раскрутка цикла. Буквами I и i обозначены обычные инструкции и МОПы, а буквами J и j — инструкции и МОПы перехода.
  • 38. Т-кэш состоит из блоков размером в 6 ячеек. Обычно МОП занимает одну ячейку, однако в некоторых случаях может потребоваться дополнительное место для размещения недостающей информации. Темп последовательного чтения из Т-кэша составляет 1 блок за 2 такта, или 3 МОПа за такт — что находится в соответствии с темпом обработки и отставки МОПов. Объём Т-кэша составляет 12K ячеек, или 2048 блоков, организованных в 256 наборов по 8 блоков. Для преобразования программного адреса первой x86- инструкции в каждой трассе (как правило, это инструкция, на которую производится переход) в положение первого блока трассы в кэше используется комбинированный алгоритм, сочетающий прямую адресацию по нескольким разрядам программного адреса инструкции с ассоциативным поиском. Разряды этого адреса b10-3 указывают номер набора, а нахождение требуемого блока в наборе осуществляется сравнением остальных разрядов адреса (ключа) с соответствующими разрядами адреса, хранящимися для каждого блока в наборе (тэгами).
  • 39. Вопросы повышения эффективности доступа к данным В современных процессорах имеются различные средства, позволяющие повысить эффективность доступа к данным в памяти и снизить потери на ожидание их прихода, а также прочие задержки и затраты на организацию этого доступа. Наиболее важными из этих средств являются механизмы предвыборки из памяти. В современных процессорах реализовано два таких механизма — программная предвыборка (software prefetch), и автоматическая аппаратная предвыборка (hardware prefetch). Наличие машинных инструкций программной предвыборки позволяет организовать пересылку данных из оперативной памяти в кэши процессора заблаговременно, с таких расчётом, чтобы ко времени использования этих данных они уже оказались бы в кэшах.
  • 40. Существуют различные варианты инструкций предвыборки — считывание из памяти в L2-кэш, считывание из памяти или из L2-кэша в L1-кэш, считывание блока для его последующей модификации, либо для одноразового использования. В процессоре P-4 реализована предвыборка только в L2-кэш. Автоматическая аппаратная предвыборка представляет собой механизм, который распознаёт последовательные (или иные регулярные) обращения в память и пытается производить опережающую подкачку данных. В некоторых процессорах этот механизм умеет работать как в прямом, так и в обратном направлении (то есть как по возрастанию, так и по убыванию адресов в памяти) и может распознавать несколько независимых последовательностей адресов, обеспечивая тем самым предвыборку нескольких потоков данных.
  • 41. Особенность операции предвыборки состоит в том, что она лишь инициирует считывание данных из памяти, после чего считается завершённой. В отличие от обычной операции доступа к памяти, операция предвыборки не должна ожидать прихода данных в конкретный регистр, поэтому она не блокирует другие операции в буфере переупорядочения ROB и может быть отправлена в отставку немедленно. Использование же операции фиктивной загрузки данных в регистр (с целью ускорения их прихода в кэш) привело бы к такому блокированию — несмотря на то, что значение, считанное в регистр, не понадобилось бы никакой другой операции.
  • 42. Ещё один механизм работы с памятью связан с особенностями загрузки и выгрузки в условиях внеочередного исполнения. В связи с тем, что операция может считаться корректно выполненной только к моменту ухода в отставку и не ранее, чем будут отставлены все предшествующие операции, физическая запись в кэши или в память не может быть произведена до этого момента. По этой причине все результаты выгрузки (записи) в память накапливаются в специальном буфере упорядочения обращений к памяти MOB (Memory Order Buffer). Физическая запись данных из этого буфера в кэш производится только в момент отставки соответствующей инструкции. Если операция загрузки (чтения) из памяти адресует элемент данных, который оказался в этом буфере, то он считывается непосредственно из буфера.
  • 43. В условиях внеочередного исполнения может получиться, что операция загрузки окажется готовой к выполнению раньше, чем выполнится операция выгрузки, записывающая данные в память по тому же адресу. Чтобы избежать проблем такого рода, в процессорах обычно реализуют консервативные схемы управления операциями обращения в память, с запретом на выполнение любых рискованных операций, которые могли бы привести к чтению некорректных данных. Однако такие консервативные схемы могут помешать внеочередному исполнению «безопасных» операций и привести к снижению производительности. На практике вероятность конфликтов по адресам такого рода обычно невелика.
  • 44. Платформа ПК: чего ждать в 2011 году Процессорные архитектуры, графические чипы, память - всё это продолжает год от года развиваться и совершенствоваться. Что покажут гиганты индустрии в следующем году? http://www.computerra.ru/vision/584071/
  • 45. Когерентность кэш-памяти Что такое «протокол поддержания когерентности кэшей»? Пусть, например, у нас процессор CPU0 произвел какие-то вычисления и записал полученный результат в оперативную память. Поскольку у CPU0, разумеется, есть «своя», персональная кэш-память (хотя бы первого уровня), то запись данных производится не в «тормозную» оперативную память, а в кэш. В случае однопроцессорных систем эта схема замечательно работает… но что будет, если в многопроцессорной системе та же самая ячейка памяти, которую изменил процессор CPU0, для каких-то целей понадобится и процессору CPU1? В «лучшем» случае CPU1 прочитает эту ячейку из оперативной памяти, куда, если повезет, процессор CPU0 уже успеет сохранить её новое значение. В худшем – эта ячейка (с устаревшими данными) окажется в его кэше и CPU1 даже не будет пытаться выяснить, изменилось ли что-нибудь с тех пор, как он в последний раз эту ячейку из оперативной памяти прочитал. Всё вместе называется «проблемой когерентности кэшей», а методы её решения – как раз и называют соответствующими «протоколами».
  • 46.
  • 47. Как эту проблему решают? Простейший протокол поддержания когерентности – это так называемый Write- Through, когда любые изменения сразу же записываются (write through cache) не только в кэш-память, но и в оперативную память компьютера; причем остальные процессоры как-то об этом знаменательном событии информируются. Например, если используется общая шина, то другие процессоры просто «подслушивают» (snoop), что текущий «владелец» шины по ней пересылает и, зарегистрировав, что CPU0 выполняет операцию записи в память, обновляют «свои» записи в кэше. Обычно, чтобы сэкономить время - просто помечают, что соответствующие строки в кэше отныне «неправильные» (Invalid) и при обращении к ним данные необходимо брать не из кэша, а из оперативной памяти. Схема достаточно простая... но неэффективная: запись данных в оперативную память – далеко не быстрый процесс.
  • 48.
  • 49. Но зачем разбазаривать зря ресурсы компьютера (пропускную способность шины и оперативной памяти), сохраняя малейшие изменения в медленной оперативной памяти, если вся эта «обновленная» информация может еще десять раз обновиться, прежде чем она понадобится кому-то кроме «владеющего» этой информацией процессора? А ведь если поразмыслить, то работа нескольких процессоров одновременно с одним и тем же участком оперативной памяти – явление исключительное: в подавляющем большинстве случаев каждый процессор занимается обработкой «своего» участка и лишь изредка – обращается к участку «чужому». Именно эта идея положена в основу протокола MESI. Использующий его процессор, четко различает кэш-строки, которых заведомо нет в кэшах других процессоров (они помечаются как Exclusive) и «общие», присутствующие более чем в одном кэше (они помечаются как Shared).
  • 50. Если изменяется Shared-строка, то «соседям» по компьютеру передается сигнал-требование проверить свои кэши и, если что, сделать напротив своих записей в кэшах пометку «неправильно» (Invalid); если изменяется Exclusive-строка (а как уже говорилось, вероятность этого события очень велика), то делать эту достаточно трудоемкую операцию нет необходимости. В любом случае строка помечается как Modified, но попыток эту самую строку немедленно записать в оперативную память не предпринимается. Зато все процессоры бдительно наблюдают за всеми операциями чтения данных из памяти и если один из процессоров замечает, что его сосед пытается прочитать строчку памяти, которая в его кэше помечена, как «Modified», то он прерывает эту операцию, сохраняет изменения в оперативной памяти, снимает со «своей» кэш-строки «галочку» Modified и только после этого разрешает вызвавшему «проблему» процессору завершить операцию чтения. В итоге «типовые» операции с кэш-памятью в MESI происходят практически с той же скоростью, что и в single-системе.
  • 51.
  • 52. А что же AMD? AMD использует всё тот же MESI, но только доработанный таким образом, чтобы процессоры могли эффективно использовать данные из кэш-памяти друг друга. В MESI процессоры почти не используют кэши своих соседей: в лучшем случае, чтение обновленных данных из памяти производится при выгрузке этих данных в память «соседом». В протоколе же MOESI любая операция чтения сопровождается проверкой кэшей соседей – если нужные данные находятся в одном из них, то и читаются они прямо оттуда; причем сохранение этих данных в оперативную память при этом не производится. Просто «владелец» этой памяти делает у себя «зарубку» Owner 3 напротив соответствующей строки кэш-памяти. Мы убиваем двух зайцев одним выстрелом: не производим ненужных записей в оперативную память и эффективно используем память «соседа». В итоге в двухядерных процессорах кэш-память первого и второго уровней «соседнего ядра» может работать как кэш-память третьего уровня (L3); а кэш-память «чужих» процессоров в многопроцессорной системе – как кэши четвертого уровня.
  • 53. Конечно, это не «полноценный» кэш L3/L4 и уж точно – не полноценный разделяемый L2 (поскольку самостоятельно загрузить «соседа» своими данными ядро процессора не может – оно может только надеяться, что «сосед» тоже эти данные будет использовать), однако свою прибавку к производительности, безусловно, MOESI должен обеспечивать. Только не следует думать, что в Intel не могут реализовать аналог протокола, предложенного еще аж в 1986 году (и определенные варианты таки присутствует в Itanium-системах и некоторых других ядрах) – просто для систем с общей системной шиной никаких преимуществ по сравнению с MESI он не предоставляет. Что просто перебросить по этой медленной общей шине данные от одного процессора к другому, что эти данные заодно и в оперативную память записать – разницы почти никакой. А вот для процессоров AMD, у которых ядра и процессоры связаны между собой интерфейсами, работающими гораздо быстрее обычной оперативной памяти, разница есть и порой она становится весьма ощутимой.
  • 54.
  • 55. Чтобы всё не выглядело настолько неприглядно для Intel, заметим, что у этой корпорации тоже есть очень сильный козырь в кармане – и называется он Hyper-Threading. Технология виртуальной многопоточности (когда одно физическое ядро изображает из себя несколько «виртуальных») позволяет гораздо эффективнее загрузить исполнительные блоки этих процессоров работой. Мало кто знает, что IPC (количество инструкций, которые можно выполнить за один такт) для этих процессоров в устоявшемся режиме может доходить до четырех. Это не просто много: это очень много даже по современным меркам. Для сравнения, процессоры AMD архитектур K7 и K8 выполняют по 3 (в пике – до 6) инструкций за такт, то есть теоретическая эффективность в пересчете на один мегагерц у Pentium 4 должна быть выше, чем у Athlon 64 и Opteron. Почему КПД архитектуры NetBurst в ряде приложений получается «очень скромным» - вопрос для немаленькой отдельной статьи (да и написано по этому поводу уже очень много), отметим только, что сверхвысокие IPC для Pentium 4 вполне можно увидеть на практике – на тщательно оптимизированных приложениях и тестах типа Linpack-а или Prime 95. Главное – это то, что Hyper-Threading позволяет существующий КПД процессора на 10-25% увеличить: подобная прибавка вполне способна перекрыть и выигрыш от более быстрой подсистемы памяти, и от более быстрой шины и от «более продвинутого» протокола MOESI. http://www.cyberguru.ru/
  • 56. Вопросы для самоконтроля 1. Какая память в ПК является самой быстрой? Имеет самую большую емкость? 2. Объясните, в чем состоит принцип временной и пространственной локальности программы. 3. Какие способы существуют для согласования содержимого кэш-памяти и основной памяти? 4. Перечислите типы кэш-памяти. 5. Как различаются кэши инструкций по своей организации? 6. Перечислите и объясните механизмы вытеснения блоков из кэшей. 7. Чем отличается эксклюзивная и инклюзивная организация кэшей? 8. Особенности кэша трасс в процессоре Pentium 4. 9. Какие способы повышения эффективности доступа к данным вы знаете?