SlideShare a Scribd company logo
1 of 83
Организация ЭВМ и систем
Тема: Сопроцессоры
• Взаимодействие ПЭВМ и сопроцессора
• Особенности программирования ПЭВМ с
сопроцессором
• Форматы данных, система команд
Сопроцессор
Сопроцессор – это специализированная
интегральная схема, которая работает в содружестве с
ЦП, но менее универсальна.
Принципиальное отличие процессора от
сопроцессора – только у ЦП есть счетчик команд.
Способы обмена информацией между ЦП и
сопроцессором:
1. Через прямое соединение входных и выходных
портов.
2. С обменом через память.
Математический сопроцессор
Предназначен для:
1. Быстрого выполнения арифметических
операций с плавающей точкой.
2. Содержит набор констант: 0, 1, log210, log2e,
loge2,... .
3. Может выполнять трансцендентные операции:
tg, arctg, 2x-1, ylog2x, ....
Стандарт IEEE-754 определяет три основных
способа кодирования (типа) вещественных чисел.
Машинное представление числа
с плавающей запятой состоит из:
- знака,
- строки значащих цифр, называемой
мантиссой,
- и показателя степени (фиксированного
основания), называемого порядком.
Форматы чисел
с плавающей точкой
1. Одинарная точность – 4 байта - 1,18·10-38... 3,40·1038
2. Двойная точность – 8 байт - 2,23·10-308... 1,79·10308
3. Тройная (расширенная) точность – 10 байт - 3,37·10-
4932... 1,18·104392
S Порядок Мантисса
1 бит 8 бит 23 бита
S Порядок Мантисса
1 бит 11 бит 52 бита
S Порядок Мантисса
1 бит 15 бит 64 бит
Способы кодирования
вещественных чисел
Вещественное число вычисляется как:
(-1)S·2E·M,
где S – знаковый бит числа, E – экспонента (порядок),
M – мантисса.
Если 1≤M<2, то такое число называется
нормализованным. При хранении нормализованных
чисел сопроцессор отбрасывает целую часть мантиссы
(она всегда 1), сохраняя лишь дробную часть. Экспонента
кодируется со сдвигом на половину разрядной сетки,
таким образом, удается избежать вопроса о кодировании
знака экспоненты. Т. е. при 8-битной разрядности
экспоненты код 0 соответствует числу -127, 1 числу -126,
..., 255 числу +126 (экспонента вычисляется как код 127).
(-1)S·(1.f1f2….f23)х2(E-127),
В общем случае все множество двоичных комбинаций
делится на следующие классы:
 нормализованные вещественные числа со знаком;
 денормализованные вещественные числа со знаком;
 ноль со знаком;
 бесконечность со знаком;
 нечисла (NaN – not a number) – сигнализирующие и
тихие.
Нечисла - специальные значения, существующие
только в вещественных форматах. Они имеют
смещенный порядок из всех единиц, любой знак, любую
мантиссу.
Структура сопроцессора 8087
Регистр управления
Регистр состояния
015
Управление
интерфейсом
Команда
Очередь
команд
Указатель команды
Указатель данных
031
Блок управления
АD15-0
А19-16
S2-0
АЛУ для
порядка
числа
Тег
01
Сдвигатель
АЛУ для
мантиссы
Регистровый
стек
79 0
R0
R1
R7
Операционный блок
Структура сопроцессора 8087
В 1980 году сопроцессор 8087 был реализован как
отдельный элемент по стандарту института
электрических и электронных разработок IEEE.
Регистр управления – содержит биты масок
особых случаев (маска переполнения, деления на 0).
 PC – поле управления точностью (8,9 биты)
11- округление до расширенной точности (по
умолчанию);
10 – округление до двойной точности;
00 – округление до одинарной точности.
 RC – поле управления округлением (10,11 биты)
00 – округление к ближайшему (по умолчанию).
01 – округление к +∞ .
10 – округление к -∞.
11 – округление к 0.
Регистр состояния – флаги особых случаев.
 ST (11-13 биты) – задается вершина стека.
 B (15 бит) – бит занятости:
1 – сопроцессор выполняет определенную команду;
0 – сопроцессор свободен.
Указатель команд (данных) – содержат адреса
последней команды и ее операнда.
Тег (регистр признаков) – характеризует
содержимое соответствующих целочисленных
регистров.
00 – в регистре находится действительное число;
01 – нулевое число в регистре;
10 – недействительное число;
11 – пустой регистр.
Сопроцессор 8087
Схема сопроцессора 8087 делится на 2 устройства:
 устройство шинного интерфейса;
 устройство с плавающей точкой.
Сопроцессор 80287 был создан в 1985 году,
изменения произошли только в устройстве шинного
интерфейса. В отличии от 8087 сопроцессор 80287 не
имеет доступа к ША, поэтому все обращения к памяти
выполняет ЦП.
В сопроцессоре 80387 изменения произошли в
устройстве с плавающей точкой в обработке ошибок,
также был реализован больший диапазон
трансцендентных функций.
В целом базовая программная модель всех
перечисленных сопроцессоров и блока FPU у IA-32
сходная: регистровый стек (восемь 80-битных регистров
R0-R7), слово тегов, регистр управления, регистр
состояния, указатель команды и указатель данных.
Для хранения данных в сопроцессоре предназначены
регистры R0-R7. Эти регистры организованы в стек, и
доступ к ним производится относительно вершины стека
– ST. Номер регистра, соответствующего вершине стека,
хранится в регистре состояния (поле TOS).
Сопроцессор использует теги, чтобы определить
переполнение или опустошение стека.
Указатель команд и указатель данных содержат
логические адреса (селектор сегмента и смещение)
последней команды и ее операнда. Эта информация
используется обработчиком особых случаев
сопроцессора.
Набор регистров блока
FPU Pentium
R7
R0
06364777879
01
015
047
Знак Порядок Мантисса
Тег
Регистр управления
Регистр состояния
Слово тегов
Указатель команды
Указатель данных
Система команд
Для команд сопроцессора выделена группа кодов,
начинающаяся с 11011ххх. В ассемблерах мнемоники
команд сопроцессора начинаются с “F”: FADD
(сложение), FCOM (сравнение), FCOS (косинус), FDIV
(деление) и т. п.
Параллельная работа ЦП и сопроцессора
ставит перед программистом проблемы
синхронизации.
Особенности программирования ЦП с
сопроцессором
FIST I; (запомнить в память I)
MOV AX, I
ЦП 80286 начнет выполнять команду MOV раньше, чем
80287 закончит FIST, и в регистр AX будет передано
неверное значение.
FIST I
FADD ST(3)
MOV AX, I
ЦП 80286, встретив FADD, должен ожидать завершение
FIST.
Задача синхронизации процессоров возникает, когда
287 обращается к ячейкам памяти, к которым впоследствии
обращается и 80286. Во всех случаях она решается
вставкой FWAIT между подозрительными командами 287 и
286.
Сопроцессорный интерфейс
ЦП Motorola MC 68020
Интерфейс сопроцессора отличается от, например,
интерфейса периферийного устройства тем, что
сопроцессор добавляет в систему новые инструкции,
дополнительные регистры и типы данных, которые
обычно не предусматриваются программной
моделью целочисленного устройства ЦП. Тем не
менее, коммуникационный протокол между ЦП и
сопроцессором прозрачен для программиста, т. к.
реализован аппаратно. Этот коммуникационный протокол
слабо привязан к архитектуре ЦП, так что любой
сопроцессор, реализующий данный протокол, может
быть использован в системе с ЦП MC680x0.
Для ускорения взаимодействия с сопроцессором в
MC68020 поддерживается специальный
сопроцессорный интерфейс.
ЦП
MC 68020
Сопроцессор
Интерфейс
CIR
Дешифратор
А19-А13
FC2-FC0
CS
A4 – A0
AS
R/W
DS
DSACK1
DSACK0
D0 – D31
 A19 - A13 – определяют операцию и тип сопроцессора.
 FC2 - FC0 – передается функциональный код (статус)
сопроцессора.
 А4 - А0 – передается номер регистра интерфейса CIR.
 AS – строб адреса. Показывает достоверность
адреса на ША.
 DS – строб данных.
 R/W – определяет направление пересылки.
 DSACK1, DSACK2 - подтверждают пересылку и
размер операнда. Служат для определения пересылки и
динамического определения ширины ШД.
Регистры интерфейса CIR
1. Регистр ответа.
2. Регистр управления.
3. Регистр сохранения.
4. Регистр восстановления.
5. Регистр слово операции.
6. Регистр команды.
7. Регистр условия.
8. Регистр выбора.
9. Регистр операнда.
10. Регистр адреса операнда.
11. Регистр адреса инструкции.
16-разрядные
32 - разрядные
Применение сопроцессоров
1. Обработка экономической информации.
2. Моделирование.
3. Графические преобразования.
4. Промышленное управление.
5. Системы числового управления.
6. Роботы.
7. Навигация.
8. Сбор данных.
Вопросы для самоконтроля
1. Что такое сопроцессор?
2. Основные способы обмена информацией между
процессором и сопроцессором.
3. Функции математического сопроцессора.
4. Форматы чисел с плавающей точкой.
5. Основное отличие структуры сопроцессора 8086 от
80286? С чем это связано?
6. Особенности обращения к регистрам сопроцессора
8086 по сравнению с регистрами блока с плавающей
точкой ЦП Pentium?
Задачи
1. Переведите вещественное число
0 01111011 10011000000000000000000
из формата IEEE-754 single precision в десятичный
вид (с точностью до 3 десятичных знаков).
Вещественное число вычисляется как:
(-1)S·(1.f1f2….f23)х2(E-127),
где S – знаковый бит числа, E – экспонента (порядок), M –
мантисса.
1. Одинарная точность – 4 байта - 1,18·10-38... 3,40·1038
S Порядок Мантисса
1 бит 8 бит 23 бита
2. В приведенной ниже
таблице показано содержимое
(десятичные значения)
регистрового стека
сопроцессора 8087. Определите
результат выполнения
указанных инструкций, если
TOS=0102.
FADD ST,ST(1)
FADD ST(1),ST(2)
FSUB ST(0),ST(2).
R7 3,14
R6 -∞
R5 NaN
R4 0,1
R3 2,3
R2 3,45
R1 0
R0 NaN
3. Среди перечисленных фрагментов программ
выберите те, в которых не возникает проблем
синхронизации работы ЦП и сопроцессора.
Ответ 1.
FIST mem16; mem16:=integer (ST)
MOV AX, mem16; AX:=mem16
INC mem16; mem16:=mem16+1
Ответ 2.
FIST mem16; mem16:=integer(ST)
FWAIT; ожидание
MOV AX, mem16; AX:=mem16
Ответ 3.
FIST mem16; mem16:=integer(ST)
FIMUL mem16; ST:=ST*mem16
INC mem16; mem16:=mem16+1
Ответ 1. 9,96·10-2
Ответ 2. 5,75; 2,4; 3,35.
Ответ 3. Фрагмент 2.
Организация ЭВМ и систем
Тема: Системы памяти ЭВМ
• Основные характеристики системы памяти
• Распределение адресного пространства
• Кэш-память
• Типы кэш-памяти
• Особенности обновления информации в кэш-
памяти
Организация интерфейса памяти
Появления 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. Какие способы повышения эффективности доступа к
данным вы знаете?
Задачи
1. Для кэша указанной конфигурации определите
значение и разрядность тега при обращении по
заданному адресу.
Вариант 1. Кэш прямого отображения 16 строк по
8 байт, 12-битный адрес: 34A.
Вариант 2. 4-входовый ассоциативный кэш на 4
набора по 8 байт в строке, 12-битный адрес: 6Е4.
Вариант 3. Полностью ассоциативный кэш 16
строк по 8 байт, 12-битный адрес: A3B.
1. Вариант 1. 06 (5 бит)
Вариант 2. 37 (7 бит)
Вариант 3. 147 (9 бит)

More Related Content

What's hot

Корпоративные Voip сети в системах Samsung OfficeServ
Корпоративные Voip сети в системах Samsung OfficeServКорпоративные Voip сети в системах Samsung OfficeServ
Корпоративные Voip сети в системах Samsung OfficeServEugene Yakhno
 
033
033033
033JIuc
 
034
034034
034JIuc
 
IVR и Voice Mail сервисы в системах Samsung OfficeServ
IVR и Voice Mail сервисы в системах Samsung OfficeServIVR и Voice Mail сервисы в системах Samsung OfficeServ
IVR и Voice Mail сервисы в системах Samsung OfficeServEugene Yakhno
 
Реализация Voip в системах Samsung OfficeServ
Реализация Voip в системах Samsung OfficeServРеализация Voip в системах Samsung OfficeServ
Реализация Voip в системах Samsung OfficeServEugene Yakhno
 
Базовая настройка Ipecs e mg80
Базовая настройка Ipecs e mg80Базовая настройка Ipecs e mg80
Базовая настройка Ipecs e mg80Eugene Yakhno
 
Строение компьютера
Строение компьютераСтроение компьютера
Строение компьютераRonny_Rosenberg
 
Лекция №5 Организация ЭВМ и систем
Лекция №5 Организация ЭВМ и системЛекция №5 Организация ЭВМ и систем
Лекция №5 Организация ЭВМ и системpianist2317
 
тест Atutor аппаратное обеспечение
тест Atutor аппаратное обеспечениетест Atutor аппаратное обеспечение
тест Atutor аппаратное обеспечениеJIuc
 
процессоры презентация
процессоры   презентацияпроцессоры   презентация
процессоры презентацияИван Иванов
 
020
020020
020JIuc
 
028
028028
028JIuc
 
Тест тапсырмалары
Тест тапсырмаларыТест тапсырмалары
Тест тапсырмаларыRauan Ibraikhan
 

What's hot (20)

Корпоративные Voip сети в системах Samsung OfficeServ
Корпоративные Voip сети в системах Samsung OfficeServКорпоративные Voip сети в системах Samsung OfficeServ
Корпоративные Voip сети в системах Samsung OfficeServ
 
033
033033
033
 
034
034034
034
 
IVR и Voice Mail сервисы в системах Samsung OfficeServ
IVR и Voice Mail сервисы в системах Samsung OfficeServIVR и Voice Mail сервисы в системах Samsung OfficeServ
IVR и Voice Mail сервисы в системах Samsung OfficeServ
 
Реализация Voip в системах Samsung OfficeServ
Реализация Voip в системах Samsung OfficeServРеализация Voip в системах Samsung OfficeServ
Реализация Voip в системах Samsung OfficeServ
 
Базовая настройка Ipecs e mg80
Базовая настройка Ipecs e mg80Базовая настройка Ipecs e mg80
Базовая настройка Ipecs e mg80
 
Строение компьютера
Строение компьютераСтроение компьютера
Строение компьютера
 
Лекция №5 Организация ЭВМ и систем
Лекция №5 Организация ЭВМ и системЛекция №5 Организация ЭВМ и систем
Лекция №5 Организация ЭВМ и систем
 
тест Atutor аппаратное обеспечение
тест Atutor аппаратное обеспечениетест Atutor аппаратное обеспечение
тест Atutor аппаратное обеспечение
 
процессоры презентация
процессоры   презентацияпроцессоры   презентация
процессоры презентация
 
Процессор
ПроцессорПроцессор
Процессор
 
020
020020
020
 
Лекция №5 Организация ЭВМ и систем
Лекция №5 Организация ЭВМ и системЛекция №5 Организация ЭВМ и систем
Лекция №5 Организация ЭВМ и систем
 
028
028028
028
 
Лекция № 2 Организация ЭВМ и систем
Лекция № 2 Организация ЭВМ и системЛекция № 2 Организация ЭВМ и систем
Лекция № 2 Организация ЭВМ и систем
 
презентация 1
презентация 1презентация 1
презентация 1
 
Lekt 09 mtp-2_decrypted
Lekt 09 mtp-2_decryptedLekt 09 mtp-2_decrypted
Lekt 09 mtp-2_decrypted
 
Лекция № 3 Организация ЭВМ и систем
Лекция № 3 Организация ЭВМ и системЛекция № 3 Организация ЭВМ и систем
Лекция № 3 Организация ЭВМ и систем
 
Тест тапсырмалары
Тест тапсырмаларыТест тапсырмалары
Тест тапсырмалары
 
Презентация 5
Презентация 5Презентация 5
Презентация 5
 

Similar to Лекция №4 Организация ЭВМ и систем (продолжение)

Обзор современных микроконтроллеров и их архитектур
Обзор современных микроконтроллеров и их архитектурОбзор современных микроконтроллеров и их архитектур
Обзор современных микроконтроллеров и их архитектурIoT Community
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...a15464321646213
 
prezlec_Історія.ppt
prezlec_Історія.pptprezlec_Історія.ppt
prezlec_Історія.pptssusere2bc36
 
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)Mikhail Kurnosov
 
03
0303
03JIuc
 
Лекция 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
 
Виртуалтрединг
ВиртуалтредингВиртуалтрединг
ВиртуалтредингCEE-SEC(R)
 
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)Ontico
 
42
4242
42JIuc
 
39
3939
39JIuc
 
Архитектура AMD64 (EM64T)
Архитектура AMD64 (EM64T)Архитектура AMD64 (EM64T)
Архитектура AMD64 (EM64T)Tatyanazaxarova
 
микропроцессор
микропроцессормикропроцессор
микропроцессорpelmen
 
Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)Mikhail Kurnosov
 
Лекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и системЛекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и системpianist2317
 
Устройство персонального компьютера
Устройство персонального компьютераУстройство персонального компьютера
Устройство персонального компьютераЮрий Шпак
 
027
027027
027JIuc
 
тест по теме микропроцессорные системы
тест по теме микропроцессорные системытест по теме микропроцессорные системы
тест по теме микропроцессорные системыJIuc
 
40
4040
40JIuc
 

Similar to Лекция №4 Организация ЭВМ и систем (продолжение) (20)

Обзор современных микроконтроллеров и их архитектур
Обзор современных микроконтроллеров и их архитектурОбзор современных микроконтроллеров и их архитектур
Обзор современных микроконтроллеров и их архитектур
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
Лекция №3
Лекция №3Лекция №3
Лекция №3
 
Тест-драйв контроллера ARIS C303
Тест-драйв контроллера ARIS C303Тест-драйв контроллера ARIS C303
Тест-драйв контроллера ARIS C303
 
prezlec_Історія.ppt
prezlec_Історія.pptprezlec_Історія.ppt
prezlec_Історія.ppt
 
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
 
03
0303
03
 
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
 
Виртуалтрединг
ВиртуалтредингВиртуалтрединг
Виртуалтрединг
 
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
 
42
4242
42
 
39
3939
39
 
Архитектура AMD64 (EM64T)
Архитектура AMD64 (EM64T)Архитектура AMD64 (EM64T)
Архитектура AMD64 (EM64T)
 
микропроцессор
микропроцессормикропроцессор
микропроцессор
 
Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)
 
Лекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и системЛекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и систем
 
Устройство персонального компьютера
Устройство персонального компьютераУстройство персонального компьютера
Устройство персонального компьютера
 
027
027027
027
 
тест по теме микропроцессорные системы
тест по теме микропроцессорные системытест по теме микропроцессорные системы
тест по теме микропроцессорные системы
 
40
4040
40
 

Лекция №4 Организация ЭВМ и систем (продолжение)

  • 1. Организация ЭВМ и систем Тема: Сопроцессоры • Взаимодействие ПЭВМ и сопроцессора • Особенности программирования ПЭВМ с сопроцессором • Форматы данных, система команд
  • 2. Сопроцессор Сопроцессор – это специализированная интегральная схема, которая работает в содружестве с ЦП, но менее универсальна. Принципиальное отличие процессора от сопроцессора – только у ЦП есть счетчик команд. Способы обмена информацией между ЦП и сопроцессором: 1. Через прямое соединение входных и выходных портов. 2. С обменом через память.
  • 3. Математический сопроцессор Предназначен для: 1. Быстрого выполнения арифметических операций с плавающей точкой. 2. Содержит набор констант: 0, 1, log210, log2e, loge2,... . 3. Может выполнять трансцендентные операции: tg, arctg, 2x-1, ylog2x, .... Стандарт IEEE-754 определяет три основных способа кодирования (типа) вещественных чисел.
  • 4. Машинное представление числа с плавающей запятой состоит из: - знака, - строки значащих цифр, называемой мантиссой, - и показателя степени (фиксированного основания), называемого порядком.
  • 5. Форматы чисел с плавающей точкой 1. Одинарная точность – 4 байта - 1,18·10-38... 3,40·1038 2. Двойная точность – 8 байт - 2,23·10-308... 1,79·10308 3. Тройная (расширенная) точность – 10 байт - 3,37·10- 4932... 1,18·104392 S Порядок Мантисса 1 бит 8 бит 23 бита S Порядок Мантисса 1 бит 11 бит 52 бита S Порядок Мантисса 1 бит 15 бит 64 бит
  • 6. Способы кодирования вещественных чисел Вещественное число вычисляется как: (-1)S·2E·M, где S – знаковый бит числа, E – экспонента (порядок), M – мантисса. Если 1≤M<2, то такое число называется нормализованным. При хранении нормализованных чисел сопроцессор отбрасывает целую часть мантиссы (она всегда 1), сохраняя лишь дробную часть. Экспонента кодируется со сдвигом на половину разрядной сетки, таким образом, удается избежать вопроса о кодировании знака экспоненты. Т. е. при 8-битной разрядности экспоненты код 0 соответствует числу -127, 1 числу -126, ..., 255 числу +126 (экспонента вычисляется как код 127). (-1)S·(1.f1f2….f23)х2(E-127),
  • 7. В общем случае все множество двоичных комбинаций делится на следующие классы:  нормализованные вещественные числа со знаком;  денормализованные вещественные числа со знаком;  ноль со знаком;  бесконечность со знаком;  нечисла (NaN – not a number) – сигнализирующие и тихие. Нечисла - специальные значения, существующие только в вещественных форматах. Они имеют смещенный порядок из всех единиц, любой знак, любую мантиссу.
  • 8. Структура сопроцессора 8087 Регистр управления Регистр состояния 015 Управление интерфейсом Команда Очередь команд Указатель команды Указатель данных 031 Блок управления АD15-0 А19-16 S2-0 АЛУ для порядка числа Тег 01 Сдвигатель АЛУ для мантиссы Регистровый стек 79 0 R0 R1 R7 Операционный блок
  • 9. Структура сопроцессора 8087 В 1980 году сопроцессор 8087 был реализован как отдельный элемент по стандарту института электрических и электронных разработок IEEE. Регистр управления – содержит биты масок особых случаев (маска переполнения, деления на 0).  PC – поле управления точностью (8,9 биты) 11- округление до расширенной точности (по умолчанию); 10 – округление до двойной точности; 00 – округление до одинарной точности.  RC – поле управления округлением (10,11 биты) 00 – округление к ближайшему (по умолчанию). 01 – округление к +∞ . 10 – округление к -∞. 11 – округление к 0.
  • 10. Регистр состояния – флаги особых случаев.  ST (11-13 биты) – задается вершина стека.  B (15 бит) – бит занятости: 1 – сопроцессор выполняет определенную команду; 0 – сопроцессор свободен. Указатель команд (данных) – содержат адреса последней команды и ее операнда. Тег (регистр признаков) – характеризует содержимое соответствующих целочисленных регистров. 00 – в регистре находится действительное число; 01 – нулевое число в регистре; 10 – недействительное число; 11 – пустой регистр.
  • 11. Сопроцессор 8087 Схема сопроцессора 8087 делится на 2 устройства:  устройство шинного интерфейса;  устройство с плавающей точкой. Сопроцессор 80287 был создан в 1985 году, изменения произошли только в устройстве шинного интерфейса. В отличии от 8087 сопроцессор 80287 не имеет доступа к ША, поэтому все обращения к памяти выполняет ЦП. В сопроцессоре 80387 изменения произошли в устройстве с плавающей точкой в обработке ошибок, также был реализован больший диапазон трансцендентных функций.
  • 12. В целом базовая программная модель всех перечисленных сопроцессоров и блока FPU у IA-32 сходная: регистровый стек (восемь 80-битных регистров R0-R7), слово тегов, регистр управления, регистр состояния, указатель команды и указатель данных. Для хранения данных в сопроцессоре предназначены регистры R0-R7. Эти регистры организованы в стек, и доступ к ним производится относительно вершины стека – ST. Номер регистра, соответствующего вершине стека, хранится в регистре состояния (поле TOS). Сопроцессор использует теги, чтобы определить переполнение или опустошение стека. Указатель команд и указатель данных содержат логические адреса (селектор сегмента и смещение) последней команды и ее операнда. Эта информация используется обработчиком особых случаев сопроцессора.
  • 13. Набор регистров блока FPU Pentium R7 R0 06364777879 01 015 047 Знак Порядок Мантисса Тег Регистр управления Регистр состояния Слово тегов Указатель команды Указатель данных
  • 14. Система команд Для команд сопроцессора выделена группа кодов, начинающаяся с 11011ххх. В ассемблерах мнемоники команд сопроцессора начинаются с “F”: FADD (сложение), FCOM (сравнение), FCOS (косинус), FDIV (деление) и т. п. Параллельная работа ЦП и сопроцессора ставит перед программистом проблемы синхронизации.
  • 15. Особенности программирования ЦП с сопроцессором FIST I; (запомнить в память I) MOV AX, I ЦП 80286 начнет выполнять команду MOV раньше, чем 80287 закончит FIST, и в регистр AX будет передано неверное значение. FIST I FADD ST(3) MOV AX, I ЦП 80286, встретив FADD, должен ожидать завершение FIST. Задача синхронизации процессоров возникает, когда 287 обращается к ячейкам памяти, к которым впоследствии обращается и 80286. Во всех случаях она решается вставкой FWAIT между подозрительными командами 287 и 286.
  • 16. Сопроцессорный интерфейс ЦП Motorola MC 68020 Интерфейс сопроцессора отличается от, например, интерфейса периферийного устройства тем, что сопроцессор добавляет в систему новые инструкции, дополнительные регистры и типы данных, которые обычно не предусматриваются программной моделью целочисленного устройства ЦП. Тем не менее, коммуникационный протокол между ЦП и сопроцессором прозрачен для программиста, т. к. реализован аппаратно. Этот коммуникационный протокол слабо привязан к архитектуре ЦП, так что любой сопроцессор, реализующий данный протокол, может быть использован в системе с ЦП MC680x0.
  • 17. Для ускорения взаимодействия с сопроцессором в MC68020 поддерживается специальный сопроцессорный интерфейс. ЦП MC 68020 Сопроцессор Интерфейс CIR Дешифратор А19-А13 FC2-FC0 CS A4 – A0 AS R/W DS DSACK1 DSACK0 D0 – D31
  • 18.  A19 - A13 – определяют операцию и тип сопроцессора.  FC2 - FC0 – передается функциональный код (статус) сопроцессора.  А4 - А0 – передается номер регистра интерфейса CIR.  AS – строб адреса. Показывает достоверность адреса на ША.  DS – строб данных.  R/W – определяет направление пересылки.  DSACK1, DSACK2 - подтверждают пересылку и размер операнда. Служат для определения пересылки и динамического определения ширины ШД.
  • 19. Регистры интерфейса CIR 1. Регистр ответа. 2. Регистр управления. 3. Регистр сохранения. 4. Регистр восстановления. 5. Регистр слово операции. 6. Регистр команды. 7. Регистр условия. 8. Регистр выбора. 9. Регистр операнда. 10. Регистр адреса операнда. 11. Регистр адреса инструкции. 16-разрядные 32 - разрядные
  • 20. Применение сопроцессоров 1. Обработка экономической информации. 2. Моделирование. 3. Графические преобразования. 4. Промышленное управление. 5. Системы числового управления. 6. Роботы. 7. Навигация. 8. Сбор данных.
  • 21. Вопросы для самоконтроля 1. Что такое сопроцессор? 2. Основные способы обмена информацией между процессором и сопроцессором. 3. Функции математического сопроцессора. 4. Форматы чисел с плавающей точкой. 5. Основное отличие структуры сопроцессора 8086 от 80286? С чем это связано? 6. Особенности обращения к регистрам сопроцессора 8086 по сравнению с регистрами блока с плавающей точкой ЦП Pentium?
  • 22. Задачи 1. Переведите вещественное число 0 01111011 10011000000000000000000 из формата IEEE-754 single precision в десятичный вид (с точностью до 3 десятичных знаков). Вещественное число вычисляется как: (-1)S·(1.f1f2….f23)х2(E-127), где S – знаковый бит числа, E – экспонента (порядок), M – мантисса. 1. Одинарная точность – 4 байта - 1,18·10-38... 3,40·1038 S Порядок Мантисса 1 бит 8 бит 23 бита
  • 23. 2. В приведенной ниже таблице показано содержимое (десятичные значения) регистрового стека сопроцессора 8087. Определите результат выполнения указанных инструкций, если TOS=0102. FADD ST,ST(1) FADD ST(1),ST(2) FSUB ST(0),ST(2). R7 3,14 R6 -∞ R5 NaN R4 0,1 R3 2,3 R2 3,45 R1 0 R0 NaN
  • 24. 3. Среди перечисленных фрагментов программ выберите те, в которых не возникает проблем синхронизации работы ЦП и сопроцессора. Ответ 1. FIST mem16; mem16:=integer (ST) MOV AX, mem16; AX:=mem16 INC mem16; mem16:=mem16+1 Ответ 2. FIST mem16; mem16:=integer(ST) FWAIT; ожидание MOV AX, mem16; AX:=mem16 Ответ 3. FIST mem16; mem16:=integer(ST) FIMUL mem16; ST:=ST*mem16 INC mem16; mem16:=mem16+1
  • 25. Ответ 1. 9,96·10-2 Ответ 2. 5,75; 2,4; 3,35. Ответ 3. Фрагмент 2.
  • 26. Организация ЭВМ и систем Тема: Системы памяти ЭВМ • Основные характеристики системы памяти • Распределение адресного пространства • Кэш-память • Типы кэш-памяти • Особенности обновления информации в кэш- памяти
  • 27. Организация интерфейса памяти Появления 32-разрядного МП определило использование 3 новых концепций организации интерфейса памяти. 1. Расширение шины локальной памяти. 2. Расслоение (интерливинг) памяти. 3. Виртуальное управление памятью. В 32-разрядных МП два вида организации виртуальной памяти: страничная и сегментная.
  • 28. Иерархия подсистемы памяти ПК 1. Регистровая память (сверхоперативное запоминающее устройство). 2. Буферная память (кэш-память – для согласования скорости работы ЦП и основной памяти). • I-го уровня – L1 • II-го уровня – L2 3. Основная память (ОЗУ, ПЗУ). 4. Массовая (внешняя память).
  • 29. Иерархия подсистемы памяти ПК Регистры Кэш L1 Кэш L2 Основная память Внешняя память ПроцессорУвеличение объема Увеличение быстродействия Увеличение стоимости хранения одного бита
  • 30. Иерархия подсистемы памяти ПК № Тип ЗУ 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
  • 31. Кэш-память Кэш-память представляет собой быстродействующее ЗУ, размещенное на одном кристалле с ЦП или внешнее по отношению к ЦП, служит высокоскоростным буфером между ЦП и относительно медленной основной памятью. В основу положен принцип временной и пространственной локальности программы. Кэш-память представляет собой 2 сверхоперативные памяти: память отображения данных. память тегов.
  • 32. Для согласования содержимого кэш-памяти и ОП используют 3 метода записи: 1. Сквозная – одновременно с кэш-памятью обновляется ОП. 2. Буферизованная сквозная запись – информация задерживается в кэш-буфере перед записью в ОП и переписывается в ОП в те циклы, когда ЦП к ней не обращается. 3. Обратная запись – используется бит изменения в поле тега, и строка переписывается в ОП только в том случае, если бит изменения равен 1.
  • 33. Типы кэш-памяти 1. Кэш прямого отображения: адрес памяти однозначно определяет строку кэша, в которую будет помещен блок информации. 0010 001 100 Тег Строка Смещение 1 4 0 1 2 2 3 4 5 6 7 Тег 0 1 2 3 4 5 6 7 2 К ЦП Данные
  • 34. 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
  • 35. 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
  • 36. Типы кэш-памяти  Кэш Гарвардской архитектуры – раздельные кэш- команд и кэш-данных.  Кэш Принстонской архитектуры (Джона фон Неймана) – смешанные кэш-команд и кэш-данных.
  • 37. Характеристики подсистемы кэш-памяти у ЦП 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
  • 38. Кэш-память и внешние соединения процессора Pentium III Процессор Кэш команд L1 Кэш данных L1 Блок шинного интерфейса Кэш L2 Основная память Ввод-вывод Шина кэша Системная шина
  • 39. Устройство кэшей 1-го и 2-го уровня Большинство современных процессоров имеют отдельные кэши 1-го уровня (L1-кэши) для инструкций и данных, и общий кэш 2-го уровня (L2-кэш) увеличенного размера. Кэши инструкций различаются по своей организации:  в процессорах Intel P-III, P-M, P-M2, P8 и IBM PPC970 в них хранятся исходные машинные инструкции в неизменённом виде.  В процессорах AMD K8 — исходные инструкции вместе с информацией об их разметке (предекодировании),  а в процессоре Intel P-4 — полностью декодированные микрооперации (МОПы), организованные в виде трасс.
  • 40. Механизмы вытеснения блоков из кэшей Основным отличительным признаком является момент времени, когда в кэш следующего уровня переписывается вытесняемый модифицированный блок данных — то есть такой блок, в который с момента загрузки его в кэш произошла запись (и содержимое которого изменилось). Запись модифицированных данных в кэш более высокого уровня (L2-кэш) может происходить либо одновременно с их записью в L1-кэш, либо позднее, в момент вытеснения блока из L1-кэша.
  • 41. На практике встречаются следующие разновидности кэшей:  Writethrough — со сквозной (немедленной) записью модифицированных данных в L2-кэш;  Writeback — с отложенной записью модифицированных данных из L1-кэша в L2-кэш;  Exclusive — эксклюзивный, с отложенной записью из L1-кэша в L2-кэш как модифицированных, так и не модифицированных (чистых) данных. В процессорах P-4 и PPC970 используется L1-кэш со сквозной записью, в P-III, P-M, P-M2 и P8 — L1-кэш с отложенной записью, а в K8 — эксклюзивный кэш.
  • 42. Каждый из двух основных механизмов (со сквозной и с отложенной записью) имеет свои преимущества и недостатки. Сквозная запись увеличивает нагрузку на L2-кэш, так как при каждой записи данных в L1-кэш производится их немедленное копирование в L2. С другой стороны, при необходимости освободить место в L1- кэше такой модифицированный блок может быть немедленно удалён из него, так как в L2-кэше уже имеется его копия. При отложенной записи копирование в L2-кэш производится только в момент вытеснения модифицированного блока — что позволяет избегать лишних пересылок данных, но приводит к усложнению кэшей и необходимости создания очереди для буферизации вытесняемых блоков.
  • 43. Термин «эксклюзивный» обычно относят к кэшу 2-го уровня, но на самом деле это совместное свойство обоих кэшей — L1 и L2. При такой организации искусственно поддерживается состояние, когда блок данных хранится только в одном из кэшей — L1 либо L2. При первоначальной загрузке из памяти блок помещается непосредственно в L1-кэш, минуя L2-кэш. При вытеснении из L1-кэша этот блок переписывается в L2-кэш для последующего сохранения (даже, если он не был модифицирован). При повторном считывании блока из L2- кэша в L1-кэш он снова удаляется из L2-кэша.
  • 44. «Не-эксклюзивная» организация кэшей L1 и L2 не подразумевает их обязательной «инклюзивности» — блок данных или инструкций может быть вытеснен из L2- кэша и при этом сохраниться в соответствующем L1- кэше. Таким не-эксклюзивным (но и не инклюзивным) способом организованы кэши в процессорах P-III, P-4, P-M, P-M2 и P8. В процессоре PPC970 L1-кэш организован чисто инклюзивно по отношении к L2-кэшу. При вытеснении блока из L2-кэша проверяется, не сохранился ли он в L1-кэше — и в этом случае искусственно удаляется оттуда тоже. Наряду с использованием механизма сквозной записи для вытеснения данных из L1-кэша это позволяет упростить так называемую проверку когерентности кэшей в многопроцессорной (многоядерной) системе, когда другой CPU проверяет наличие данных в кэшах текущего CPU.
  • 45. При инклюзивной организации достаточно ограничиться проверкой L2-кэша, в то время как при других организациях необходимо проверять кэши обоих уровней. Вытеснение модифицированных данных из кэша 2-го уровня в память всегда производится по механизму отложенной записи.
  • 46. Критерий эффективной работы кэша Критерием эффективной работы кэша можно считать уменьшение среднего времени доступа к памяти по сравнению с системой без кэш-памяти. В таком случае среднее время доступа можно оценить следующим образом: Tср = (Thit x Rhit) + (Tmiss x (1 - Rhit)), где Thit – время доступа к кэш-памяти в случае попадания (включает время на идентификацию промаха или попадания), Tmiss – время, необходимое на загрузку блока из основной памяти в строку кэша в случае кэш- промаха и последующую доставку запрошенных данных в процессор, Rhit – частота попаданий. Очевидно, что, чем ближе значение Rhit к 1, тем ближе значение Tср к Thit. Частота попаданий определяется в основном архитектурой кэш-памяти и объемом.
  • 47. Размер и эффективность кэш-памяти Размер кэш- памяти Попадания, % Выигрыш, % Нет кэш, DRAM c 2 TW 0 0 16 Кб 81 35 32 Кб 86 38 64 Кб 88 39 128 Кб 89 39 Нет кэш, SRAM без TW 100 47
  • 48. Кэш ЦП МС 68020 Поле метки Регистр Слово А31 А8 А7 А2 А1 А0 Кэш-память 24-разрядное поле метки 4-байтовое слово Кэш-строка Указание кэш-строки Сравниваемыеполя Бит значимости Кэш-память с прямым отображением системы МС 68020 ф. Motorola, со сквозной записью.
  • 49. Вопросы повышения эффективности доступа к данным Наиболее важными являются механизмы предвыборки из памяти. В современных процессорах реализовано два таких механизма — программная предвыборка (software prefetch), и автоматическая аппаратная предвыборка (hardware prefetch). Наличие машинных инструкций программной предвыборки позволяет организовать пересылку данных из оперативной памяти в кэши процессора заблаговременно, с таким расчётом, чтобы ко времени использования этих данных они уже оказались бы в кэшах.
  • 50. Автоматическая аппаратная предвыборка представляет собой механизм, который распознаёт последовательные (или иные регулярные) обращения в память и пытается производить опережающую подкачку данных. Особенность операции предвыборки состоит в том, что она лишь инициирует считывание данных из памяти, после чего считается завершённой.
  • 51. Ещё один механизм работы с памятью связан с особенностями загрузки и выгрузки в условиях внеочередного исполнения. В связи с тем, что операция может считаться корректно выполненной только к моменту ухода в отставку и не ранее, чем будут отставлены все предшествующие операции, физическая запись в кэши или в память не может быть произведена до этого момента. По этой причине все результаты выгрузки (записи) в память накапливаются в специальном буфере упорядочения обращений к памяти MOB (Memory Order Buffer). Физическая запись данных из этого буфера в кэш производится только в момент отставки соответствующей инструкции.
  • 53. Устройство кэшей 1-го и 2-го уровня Организация кэшей данных 1-го уровня в целом соответствует организации классического кэша инструкций. Например, в процессорах P-M, P-M2 и P8 общая структура кэшей инструкций и данных полностью совпадает: размер составляет 32 Кбайт, уровень ассоциативности — 8, размер блока — 64 байта. Также совпадает структура кэшей в процессоре K8: размер — 64 Кбайт, ассоциативность — 2, блок — 64 байта. Для всех указанных процессоров время доступа к кэшу данных 1-го уровня составляет 3 такта. В процессоре P-4 кэш данных по своей организации несколько отличается от кэшей других процессоров. Он имеет небольшой размер (8 Кбайт при уровне ассоциативности 4) и очень низкое время доступа — всего 2 такта.
  • 54. Столь быстрый доступ к кэшу обеспечивается применением ряда приёмов:  тесной интеграцией кэша с арифметико-логическим и адресным устройствами,  удвоенной частотой работы этих устройств  и использованием 16 младших разрядов программного (логического) адреса для спекулятивной выборки элемента данных. Для адресации требуемого набора в кэше используются соответствующие разряды адреса b10-5, а для «предварительного» нахождения блока в этом наборе — всего 5 следующих разрядов b15-11 (эти разряды называют мини-тэгом). Окончательная проверка старших разрядов адреса (ключа) на соответствие полному тэгу вместе с преобразованием программного адреса в физический производится позднее.
  • 55. Если при этой проверке выяснится, что данные были считаны неправильно, они помечаются как недействительные, и производится их считывание из L2- кэша (как и в случае ненахождения данных в L1-кэше). Кэши 2-го уровня в рассматриваемых процессорах имеют примерно одинаковую общую организацию. Размер блока L2-кэша в современных процессорах составляет 64 или 128 байт. Кэш 2-го уровня соединён с L1-кэшами полночастотной шиной, ширина которой может достигать 32 байта (256 бит), а пропускная способность — 121.6 Гбайт/с (для процессора P-4E 3.8 ГГц). В процессоре K8 шина L2-кэша имеет ширину 16 байтов (128 бит) и пропускную способность 48 Гбайт/с (при частоте процессора 3.0 ГГц).
  • 56. Однако из-за необходимости копировать в 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-кэшу не является однозначной величиной и в ряде случаев может зависеть от нагрузки (частоты обращений). В документации по процессорам обычно приводят «чистые» значения, которые бывает трудно воспроизвести в тестах.
  • 57. Можно дать следующие примерные оценки полного времени доступа к данным в 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 такт.
  • 58. Кэш трасс в процессоре Pentium 4 Кэш инструкций в процессоре P-4 очень сильно отличается от I-кэша в процессоре классической архитектуры. В нём преобразование исходных x86- инструкций в микрооперации (МОПы) производится перед кэшем, а в кэш помещаются целые трассы, составленные из этих МОПов. Поэтому такой кэш в процессоре P-4 называется «кэш трасс» (Trace-cache, Т- кэш). Трассы формируются в соответствии с предполагаемым динамическим порядком исполнения инструкций. В момент декодирования производится первичное предсказание перехода, и если предсказывается совершённый переход, то целевая инструкция помещается в трассу вслед за инструкцией перехода. Трасса может содержать множество таких «запаянных» переходов.
  • 59. Размещение кэша «после декодера» и хранение в нём сформированных МОПов позволяет избежать необходимости параллельно декодировать несколько инструкций в условиях повышенной тактовой частоты, а также сократить затраты (число этапов конвейера) на обработку операции после её выборки из кэша. Кроме того, «запаивание» предсказанных переходов в трассу позволяет существенно снизить потери на их выполнение — теперь в одном такте может быть выполнена операция, предшествующая переходу, сам переход и операция, следующая за ним. В классических процессорах такая последовательность могла бы занять три такта.
  • 60. Принципиальной особенностью Т-кэша, которая определяет способ хранения МОПов и механизмы работы с ними, является отсутствие прямолинейного соответствия между адресом исходной инструкции и местоположением соответствующего МОПа (МОПов) в кэше в связи с тем, что x86-инструкция переменной длины преобразуется в один или несколько МОПов фиксированной длины. Кроме того, хранение МОПов в виде трасс в предполагаемом порядке исполнения операций нарушает монотонность и непрерывность соответствия между адресами инструкций и положением МОПов в кэше.
  • 61. И, наконец, возможность раскрутки циклов в Т-кэше (то есть размещения в нём нескольких итераций цикла) и построения пересекающихся трасс нарушает взаимную однозначность между x86-инструкциями и МОПами — теперь одной исходной инструкции могут соответствовать несколько МОПов в разных итерациях цикла либо в различных трассах. На рисунке показан пример подобного кода и соответствие между исходными инструкциями (в их естественном размещении) и МОПами в трассе (в предполагаемом порядке исполнения). Механизм отображения адресов x86-инструкций в позиции МОПов необходим не для каждой инструкции, а только для тех, на которые производится переход — то есть для первого МОПа в каждой трассе. Все последующие МОПы располагаются в цепочке блоков кэша, непрерывно следующих друг за другом — до конца текущей трассы.
  • 62. В этом примере присутствует предсказанный переход и частичная раскрутка цикла. Буквами I и i обозначены обычные инструкции и МОПы, а буквами J и j — инструкции и МОПы перехода.
  • 63. Т-кэш состоит из блоков размером в 6 ячеек. Обычно МОП занимает одну ячейку, однако в некоторых случаях может потребоваться дополнительное место для размещения недостающей информации. Темп последовательного чтения из Т-кэша составляет 1 блок за 2 такта, или 3 МОПа за такт — что находится в соответствии с темпом обработки и отставки МОПов. Объём Т-кэша составляет 12K ячеек, или 2048 блоков, организованных в 256 наборов по 8 блоков. Для преобразования программного адреса первой x86- инструкции в каждой трассе (как правило, это инструкция, на которую производится переход) в положение первого блока трассы в кэше используется комбинированный алгоритм, сочетающий прямую адресацию по нескольким разрядам программного адреса инструкции с ассоциативным поиском. Разряды этого адреса b10-3 указывают номер набора, а нахождение требуемого блока в наборе осуществляется сравнением остальных разрядов адреса (ключа) с соответствующими разрядами адреса, хранящимися для каждого блока в наборе (тэгами).
  • 64. Вопросы повышения эффективности доступа к данным В современных процессорах имеются различные средства, позволяющие повысить эффективность доступа к данным в памяти и снизить потери на ожидание их прихода, а также прочие задержки и затраты на организацию этого доступа. Наиболее важными из этих средств являются механизмы предвыборки из памяти. В современных процессорах реализовано два таких механизма — программная предвыборка (software prefetch), и автоматическая аппаратная предвыборка (hardware prefetch). Наличие машинных инструкций программной предвыборки позволяет организовать пересылку данных из оперативной памяти в кэши процессора заблаговременно, с таких расчётом, чтобы ко времени использования этих данных они уже оказались бы в кэшах.
  • 65. Существуют различные варианты инструкций предвыборки — считывание из памяти в L2-кэш, считывание из памяти или из L2-кэша в L1-кэш, считывание блока для его последующей модификации, либо для одноразового использования. В процессоре P-4 реализована предвыборка только в L2-кэш. Автоматическая аппаратная предвыборка представляет собой механизм, который распознаёт последовательные (или иные регулярные) обращения в память и пытается производить опережающую подкачку данных. В некоторых процессорах этот механизм умеет работать как в прямом, так и в обратном направлении (то есть как по возрастанию, так и по убыванию адресов в памяти) и может распознавать несколько независимых последовательностей адресов, обеспечивая тем самым предвыборку нескольких потоков данных.
  • 66. Особенность операции предвыборки состоит в том, что она лишь инициирует считывание данных из памяти, после чего считается завершённой. В отличие от обычной операции доступа к памяти, операция предвыборки не должна ожидать прихода данных в конкретный регистр, поэтому она не блокирует другие операции в буфере переупорядочения ROB и может быть отправлена в отставку немедленно. Использование же операции фиктивной загрузки данных в регистр (с целью ускорения их прихода в кэш) привело бы к такому блокированию — несмотря на то, что значение, считанное в регистр, не понадобилось бы никакой другой операции.
  • 67. Ещё один механизм работы с памятью связан с особенностями загрузки и выгрузки в условиях внеочередного исполнения. В связи с тем, что операция может считаться корректно выполненной только к моменту ухода в отставку и не ранее, чем будут отставлены все предшествующие операции, физическая запись в кэши или в память не может быть произведена до этого момента. По этой причине все результаты выгрузки (записи) в память накапливаются в специальном буфере упорядочения обращений к памяти MOB (Memory Order Buffer). Физическая запись данных из этого буфера в кэш производится только в момент отставки соответствующей инструкции. Если операция загрузки (чтения) из памяти адресует элемент данных, который оказался в этом буфере, то он считывается непосредственно из буфера.
  • 68. В условиях внеочередного исполнения может получиться, что операция загрузки окажется готовой к выполнению раньше, чем выполнится операция выгрузки, записывающая данные в память по тому же адресу. Чтобы избежать проблем такого рода, в процессорах обычно реализуют консервативные схемы управления операциями обращения в память, с запретом на выполнение любых рискованных операций, которые могли бы привести к чтению некорректных данных. Однако такие консервативные схемы могут помешать внеочередному исполнению «безопасных» операций и привести к снижению производительности. На практике вероятность конфликтов по адресам такого рода обычно невелика.
  • 69. Платформа ПК: чего ждать в 2011 году Процессорные архитектуры, графические чипы, память - всё это продолжает год от года развиваться и совершенствоваться. Что покажут гиганты индустрии в следующем году? http://www.computerra.ru/vision/584071/
  • 70. Когерентность кэш-памяти Что такое «протокол поддержания когерентности кэшей»? Пусть, например, у нас процессор CPU0 произвел какие-то вычисления и записал полученный результат в оперативную память. Поскольку у CPU0, разумеется, есть «своя», персональная кэш-память (хотя бы первого уровня), то запись данных производится не в «тормозную» оперативную память, а в кэш. В случае однопроцессорных систем эта схема замечательно работает… но что будет, если в многопроцессорной системе та же самая ячейка памяти, которую изменил процессор CPU0, для каких-то целей понадобится и процессору CPU1? В «лучшем» случае CPU1 прочитает эту ячейку из оперативной памяти, куда, если повезет, процессор CPU0 уже успеет сохранить её новое значение. В худшем – эта ячейка (с устаревшими данными) окажется в его кэше и CPU1 даже не будет пытаться выяснить, изменилось ли что-нибудь с тех пор, как он в последний раз эту ячейку из оперативной памяти прочитал. Всё вместе называется «проблемой когерентности кэшей», а методы её решения – как раз и называют соответствующими «протоколами».
  • 71.
  • 72. Как эту проблему решают? Простейший протокол поддержания когерентности – это так называемый Write- Through, когда любые изменения сразу же записываются (write through cache) не только в кэш-память, но и в оперативную память компьютера; причем остальные процессоры как-то об этом знаменательном событии информируются. Например, если используется общая шина, то другие процессоры просто «подслушивают» (snoop), что текущий «владелец» шины по ней пересылает и, зарегистрировав, что CPU0 выполняет операцию записи в память, обновляют «свои» записи в кэше. Обычно, чтобы сэкономить время - просто помечают, что соответствующие строки в кэше отныне «неправильные» (Invalid) и при обращении к ним данные необходимо брать не из кэша, а из оперативной памяти. Схема достаточно простая... но неэффективная: запись данных в оперативную память – далеко не быстрый процесс.
  • 73.
  • 74. Но зачем разбазаривать зря ресурсы компьютера (пропускную способность шины и оперативной памяти), сохраняя малейшие изменения в медленной оперативной памяти, если вся эта «обновленная» информация может еще десять раз обновиться, прежде чем она понадобится кому-то кроме «владеющего» этой информацией процессора? А ведь если поразмыслить, то работа нескольких процессоров одновременно с одним и тем же участком оперативной памяти – явление исключительное: в подавляющем большинстве случаев каждый процессор занимается обработкой «своего» участка и лишь изредка – обращается к участку «чужому». Именно эта идея положена в основу протокола MESI. Использующий его процессор, четко различает кэш-строки, которых заведомо нет в кэшах других процессоров (они помечаются как Exclusive) и «общие», присутствующие более чем в одном кэше (они помечаются как Shared).
  • 75. Если изменяется Shared-строка, то «соседям» по компьютеру передается сигнал-требование проверить свои кэши и, если что, сделать напротив своих записей в кэшах пометку «неправильно» (Invalid); если изменяется Exclusive-строка (а как уже говорилось, вероятность этого события очень велика), то делать эту достаточно трудоемкую операцию нет необходимости. В любом случае строка помечается как Modified, но попыток эту самую строку немедленно записать в оперативную память не предпринимается. Зато все процессоры бдительно наблюдают за всеми операциями чтения данных из памяти и если один из процессоров замечает, что его сосед пытается прочитать строчку памяти, которая в его кэше помечена, как «Modified», то он прерывает эту операцию, сохраняет изменения в оперативной памяти, снимает со «своей» кэш-строки «галочку» Modified и только после этого разрешает вызвавшему «проблему» процессору завершить операцию чтения. В итоге «типовые» операции с кэш-памятью в MESI происходят практически с той же скоростью, что и в single-системе.
  • 76.
  • 77. А что же AMD? AMD использует всё тот же MESI, но только доработанный таким образом, чтобы процессоры могли эффективно использовать данные из кэш-памяти друг друга. В MESI процессоры почти не используют кэши своих соседей: в лучшем случае, чтение обновленных данных из памяти производится при выгрузке этих данных в память «соседом». В протоколе же MOESI любая операция чтения сопровождается проверкой кэшей соседей – если нужные данные находятся в одном из них, то и читаются они прямо оттуда; причем сохранение этих данных в оперативную память при этом не производится. Просто «владелец» этой памяти делает у себя «зарубку» Owner 3 напротив соответствующей строки кэш-памяти. Мы убиваем двух зайцев одним выстрелом: не производим ненужных записей в оперативную память и эффективно используем память «соседа». В итоге в двухядерных процессорах кэш-память первого и второго уровней «соседнего ядра» может работать как кэш-память третьего уровня (L3); а кэш-память «чужих» процессоров в многопроцессорной системе – как кэши четвертого уровня.
  • 78. Конечно, это не «полноценный» кэш L3/L4 и уж точно – не полноценный разделяемый L2 (поскольку самостоятельно загрузить «соседа» своими данными ядро процессора не может – оно может только надеяться, что «сосед» тоже эти данные будет использовать), однако свою прибавку к производительности, безусловно, MOESI должен обеспечивать. Только не следует думать, что в Intel не могут реализовать аналог протокола, предложенного еще аж в 1986 году (и определенные варианты таки присутствует в Itanium-системах и некоторых других ядрах) – просто для систем с общей системной шиной никаких преимуществ по сравнению с MESI он не предоставляет. Что просто перебросить по этой медленной общей шине данные от одного процессора к другому, что эти данные заодно и в оперативную память записать – разницы почти никакой. А вот для процессоров AMD, у которых ядра и процессоры связаны между собой интерфейсами, работающими гораздо быстрее обычной оперативной памяти, разница есть и порой она становится весьма ощутимой.
  • 79.
  • 80. Чтобы всё не выглядело настолько неприглядно для 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/
  • 81. Вопросы для самоконтроля 1. Какая память в ПК является самой быстрой? Имеет самую большую емкость? 2. Объясните, в чем состоит принцип временной и пространственной локальности программы. 3. Какие способы существуют для согласования содержимого кэш-памяти и основной памяти? 4. Перечислите типы кэш-памяти. 5. Как различаются кэши инструкций по своей организации? 6. Перечислите и объясните механизмы вытеснения блоков из кэшей. 7. Чем отличается эксклюзивная и инклюзивная организация кэшей? 8. Особенности кэша трасс в процессоре Pentium 4. 9. Какие способы повышения эффективности доступа к данным вы знаете?
  • 82. Задачи 1. Для кэша указанной конфигурации определите значение и разрядность тега при обращении по заданному адресу. Вариант 1. Кэш прямого отображения 16 строк по 8 байт, 12-битный адрес: 34A. Вариант 2. 4-входовый ассоциативный кэш на 4 набора по 8 байт в строке, 12-битный адрес: 6Е4. Вариант 3. Полностью ассоциативный кэш 16 строк по 8 байт, 12-битный адрес: A3B.
  • 83. 1. Вариант 1. 06 (5 бит) Вариант 2. 37 (7 бит) Вариант 3. 147 (9 бит)