- •Довгий Павел Семенович Высокопроизводительные системы
- •Оценка производительности вычислительных систем
- •Пиковая и реальная производительность вс.
- •Опирается на число команд, выполняемых компьютером в единицу премени. Единицы измерения этой оценки, как правило, является mips (million instruction per second).
- •Классическими примерами тестов фирм производителей компьютеров можно считать:
- •Принцип построения и организиции кэш-памяти.
- •Концепция кэш памяти.
- •Принципы отображения блоков оп на блоки кэш памяти.
- •Основные принципы реализации стратегии lru.
- •Стратегия замещения блоков в кэш память.
- •Обобщение понятия кэШирования.
- •Страничная организация памяти.
- •Упрощенная схема преобразования линейного адреса в физический
- •Ускорение процесса преобразования линейного адреса в физический
Обобщение понятия кэШирования.
В общем плане КЭШирование следует рассматривать как универсальный метод использованный для ускорения доступа к ОП, к диску и другим видам запоминающих устройств. Если КЭШирование применяется для уменьшения среднего впемени доступа к ОП, то в качестве КЭШа используют быстродействующую SRAM. Если КЭШирование используется системой ввода вывода для ускорения доступа к данным, хранящимся на диске, то роль КЭШа выполняют буферы в ОП, в которых оседает наиболее активно используемые данные. Виртуальная память в принципе можно также считать одним из вариантов реализации принципа КЭШирование данных при котором ОП выступает в роли КЭШа, по отношению к дисковой памяти. Однако в этом случае КЭШирование используется не столько для того, чтобы уменьшить время доступа к данным, сколько для того, чтобы заставлять дисковую память подменить ОП за счет перемещения временно не используемого кода и данных на диск с целью освобождения места для активных процессов в ОП. В результате наиболее интенсивно использованные данные оседают в ОП, в то время как остальная информация храниться в более объемной и менее дорогостоящей дисковой памяти.
Использование КЭШирование к процессорах Intel 80X86, Pentium.
Рис 7d
Любое обращение к памяти сопровождается использованием КЭШирования использую следующие мометны:
-
КЭШирование дискрипторов сегментов в теневых регистрах.
-
КЭШирование преобразования линейного адреса в физический с использованием КЭШ буфера в виде TLB – Translate Lookaside Buffer. Буфер ассоциативной траксляции.
-
КЭШирование данных и команд в раздельных блоках КЭШа 1-ого уровня, внутрикристальный КЭШ L1.
-
КЭШирование команд и данных в КЭШе 2-ого уровня, объединенный блок КЭШ.
-------27,11,03----------------------------------------------------------------------------------------------------
Аппаратная поддержка организации виртуальной памяти
в процессорах Intel 80x86, Pentium
Поддержка виртуальной памяти является одним из аспектов защищенного режима. В принципе при включении питания процессор переводиться в т.н. реальный режим (R-режим) и только путем перезагрузки управляющего регистра CR0 (Control Register) обеспечивается переключение в защищенный режим или (P- режим) (Protect). Идентификация режима работы процессора осуществляется значением спец бита PE (Protect Enable), который является крайним правым регистра CR0. В R-режиме старшая модель процессора функционирует как процессор 8086. При этом формирование физического адреса реализуется на основе простейшей модели сегментированной памяти, использованной в моделе intel8086. В этой модели физический адрес формируется из 2-х 16-ти разрядных компонент: сегмента и смещения (segment, offset). Первая составляющая (сегмент) представляет собой содержимое одного из сегментных регистров, а вторая – является внутрисегментным смещением. Выбор пары компанент физического адреса определяется видом выполняемого отращения к памяти (пример: при выборе команды CS:IP; при обращении к стеку SS:SP; при выборки операнда DS:EA). Эффективный адрес формируется из нескольких компанент задаваемых в адресной части команды. В максимальном случае он состоит из 3-х компанент (базы, индекса, смещения; BASE, INDEX, DIS…). База выбирается из базового регистра, индекс из индексного, смещение размещается в самой машинной команде и может занимать 1 или 2 байта. В R-режиме все средства защиты не действуют. Основными особенностями P-режима являются:
-
Поддержка средств виртуальной памяти – преобразование логического (виртуального) адреса фирмируемой программой в физический адрес осуществляется с использованием обязательного механизма сегментации и необязательного механизма страничной организации.
-
Использование резнообразных видов защиты программы и данных от несанкционированного доступа
-
И
спользование
средств поддержки мультизадачного
режима работы процессора.
В упрощенном виде схема преобразования представлена на рисунке.
Включение страничного преобразования определяется «1» значением спец бита PG (PaGing), который является крайним левым битом регистра CR0. Логический адрес состоит из 2-х компанент называемых также как и в R-режиме Segment и offset. Сегмент представляет собой как и ранее содержимое одного из сегментных регистров и является 16 разрядным. Offset – внутрисегментное смещение 32 разряда. В отличии от R-режима в котором содержимое сегментного регистра трактуется как базовый адрес сегмента, выровненный на 16 байтную границу (границу параграфа) для P-режима содержимое сегментного регистра трактуеся как селектор сегмента. Структура сегментного селектора:
|
index |
TI |
RPL |
|
15 3 |
2 |
1 0 |
13 разрядное поле индекса используется для выбора дискриптора соответствующего сегмента из дискрипторной таблицы. Индекс можно рассматривать как смещение дискриптора в дискрипторной таблице. Бит TI (Table indicator) определяет вид дискрипторной таблицы. GDT – Global Discriptor Table (TI = 0); LDT – Local Discriptor Table (TI = 1). Дву битное поле RPL (Requested Drivilege Level) используется средствами защиты и в формировании линейного адреса не участвует. Исходя из разрядности логического адреса 14-selector + 32-offset объем логического адресного пространства составляет 246 . В защищенном режиме каждый сегмент сопровождается дискриптором (описателем), который содержит все необходимые атрибуты сегмента. Любое обращение к сегменту сопровождается привлечением его дискриптора. Дискриптор сегмента представляет собой 8-ми байтную систему данных. Структура дискриптора сегмента:
|
BASE(31:24) |
G |
D |
O |
V |
Limit(19:16) |
ARB |
BASE(23:16) |
BASE(15:0) |
Limit(15:0) |
|
63 56 |
55 |
54 |
53 |
52 |
51 48 |
47 40 |
39 32 |
31 16 |
15 0 |
BASE(31:0) – базовый адрес сегмента в линейном адресном пространстве, может быть любым в пределах 4 Гбайтного пространства, в отличие от R-режима.
Limit(19:0) – фактически содержимое этого поля отределяется максимально возможным смещением внутри сегмента. Фактически длина сегметна = содержимое поля Limit. Это поле используется средствами защиты для контроля возможного выхода за пределы сегмента.
G – бит гранулярности определяет в каких единицах задается длина сегмента G = 0 в байтах и тогда максимальная длина сегмента составляет 220 =1 Мбайт; G = 1 длина сегмента задается в страницах (212 =4Кбайта) при G = 1 максимальная длина сегмента 232 =4 Гбайта.
D – Default Size (размер по умолчанию). С помощью этого бита обеспечивается совместимость 32битных моделей с 16 разрядными D = 1 – 32бита; D = 0 – 16бит. При D = 1 сегменты кода, данных и стека интерпритируются как 32 разрядные, для сегмента кода это означает 32 битной адресации, для сегмента данных 32 битные операнды, для сегмента стека любая операция реализуется на уровне двойного слова (4байта), значение указателя стека ESP, автоматически увеличивается при операции выборки из стека и уменьшается при записи в стек на 4. Размер стека ограничен 4-мя Гбайтами. При D = 0 в сегменте кода код интерпретируется как 16 битный и использованием 16 битной адресации, для сегмента данных длина операнда составляет 2 байта, для сегмента стека операции осуществляются на уровне слов и длина стека ограничена 216 = 64 Кбайта. Использование байтных операндов задается 0-значением спец бита «W» кода операции. В машинной команде код операции, как правило занимает 1 байт по меньшему адресу. Основным отличием 32 битного от 16 битного адреса является:
-
Разрядность эффективного адреса EA
-
Возможность использования практически всех регистров общего назначения (РОН) в качестве базового и индексного.
-
Использование дополнительных байт адресации SIB (Scale Index Base) наряду с байтом Mod R/M для задания режима адресации с помощью байта SIB реализуется базово-индексная адресация с масштабированием.
-
Явное указание адресов базового и индексного регистров машинной команде ( в 16 битной не явное задание).
--------4,12,03-------------------------------------------------------------------------------------------------------------
Бит O дискриптора зарезервирован для других применений и д.б. сброшен.
Бит U (user) является открытым для программного доступа и аппаратными средствами не востребован. Его можно использовать в системных программах для отметки сегментов некоторого типа. Обычно такие биты называются AVL (AVaiLable). ARB – Accessed Right Byte. Отдельные биты определяют целевое использование сегмента и различных видов его защиты. Обобщенная структура имеет вид:
|
P |
DPL |
S |
TIPE |
|
7 |
6 5 |
4 |
3 0 |
Бит Р (Present) – бит присутствия при Р = 1 сегмент присутствует в ОП и доступен для обращения. При Р=0 отсутствие сегмента в ОП. При попытки обращения к такому сегменту генерируется прерывание спец типа (11- непресутствие сегмента). Системный обрабодчик должет произвести загрузку сегмента из внешней памяти предварительно, в случае необходимости, освободив для него место в ОП. Возврат из обработчика в основную программу должен осуществляться на туже команду, которая вызвала прерывания.
Бит Р принято считать важнейшим средством аппаратной поддержки средств виртуальной памяти на уровне сегментов.
DPL – Discriptor Privilage Level. Это поле определяет уровень привелегий сегмента описываемого дискриптора. Уровни привелегий являются одним из основных аспектов защиты. Аппаратно поддерживаются 4-е уровня привилегий. Как правило распределение программных средств по этим уровням производиться следующим образом:
Уровень 1 – ядро операционной системы (высший)
Уровень 2 – уровень операционной системы, но не ядро
Уровень 3 – драйверы, компиляторы
Уровень 4 – пользовательский
К
онцепция
защиты по уровням привелегий (кольцам
защиты) основано на
возможности доступа из внутренних колец
(с меньшим уровнем) во внешние кольца и
с запрещением обратных обращений.
S – (System/ Segment) при S=0 дискриптор описывает системный сегмент или объект. В частности дисктипторные таблицы являются системным сегментом. Примером системного объекта может служить шлюз задач, который описывается с помощью дискриптора и являются посредником в механизме переключения с одной задачи на другую. При S = 1 дискриптор описывает прикладной сегмент.
TIPE – для системных сегментов и объектов определяет тип этого сегмента или объекта (16 видов). Для прикладных сегментов это поле определяет правила доступа к этим сегментам. В частности бит 3 (бит Е-Executive) отделяет исполняемые коды сегмента от сегмента данных и стека. Для сегментов кода байт ARB имеет вид:
|
P |
DPL |
S=1 |
E=1 |
C |
R |
A |
|
7 |
6 5 |
4 |
3 |
2 |
1 |
0 |
Бит С-Conforming бит конформенгности (подчиненности). Сегменты кода разделяются на подчиненные и не подчиненные. Понятие подчиненный для сегмента кода означает возможность его выполнения для используемого уровня привелегий.
Бит R-Read разрешение чтения. При R=0 попытка чтения сегмента кода присекается апаратными средствами защиты. Генерируется прерывание типа 13 – нарушение общей защиты. Сегмент кода запрещенный для чтения естественно доступен для выполнения. При R=1 допускается обращение а сегменту кода по чтению.
Бит А-Accessed бит доступа, обращения. Установка бита производиться на аппаратном уровне при каждом обращении к сегменту. Использование программных средств операционной системы для сбора статистики о частоте обращений к сегменту. Программа сбота статистики периодически запускается и осуществляет программный сброс бита А для всех сегментов, размещаемых в ОП. Информация о частоте обращений к сегменту используется при выборе кандидата на удаление из ОП. ARB для стека:
|
P |
DPL |
S=0 |
E=0 |
ED |
W |
A |
|
7 |
6 5 |
4 |
3 |
2 |
1 |
0 |
Бит ED-Expandwed Down расширение вниз ED=1 используется для сегмента стека, как растущий вниз (в область меньших адресов). ED=0 для сегмента …
Оказывает влияние на способ проверки возможного выхода обращения за пределы сегмента при обращении (продумать самостоятельно для сегмента стека).
W-Write бит защиты от записи. Попытка обращения к сегменту со сброшенным битом W=0 по записи приводит к прерыванию 13.
----------------11,12,03-----------------------------------------------------------------------------------------------------
У
прощенная
схема преобразования логического адреса
в линейный с использованим GDT
У
прощенная
схема преобразования логического адреса
в линейный с использованим LDT
На упрощенных схемах не показаны разнообразные схемы аппаратного контроля, использованные в процессе преобразования адреса. При выполнении прикладных программ используется вторая, более сложная схема преобразования. Если бы при любом обращении к памяти, действительно исполнялась подобрая схема, то выполнение программ в Р-режиме осуществлялось бы более чем в 3 раза медленнее, чем в R-режиме, что связано с издержками преобразования адреса, требующими 2-х дополнительных обращений к памяти (GDT и LDT) и 2-х сложений. Для ускорения процесса сегментного преобразования адреса используется аппаратное средство в виде т.н. теневых регистров (shadow). Иначе называемых КЭШ регистрами дискрипторов. Теневые регисры представляют собой прозрачное для программ 64разрядное расширение сегментных регистров, а так же системных регистров LDTR и TR (Task Register), содержащих селекторы системных сегментов. LDTR содержит селектор LDT, а TR – селектор TSS (Task Status Segment). TSS предназначен для сохранения или вызова контекста задачи и использование аппарантым механизмом переключения задач. Обязательная часть TSS содержит 104 байта и включает в себя содержимое основных регистров процессора, использованных в контексте задач. Сколько теневых регистров? – 8=6+2 (ES,CS,SS,DS,FS,GS + LDTR,TR) Благодаря использованию КЭШ регистров дискриптора при любом обращении к памяти, процессор использует дескриптор сегмента из КЭШ регистра. КЭШирование дискрипторов существенно ускоряет процесс преобразования адреса из логического в линейный. Обновление содержимого теневых регистров, осуществляется совместно с обновлением сегментного (или системного) регистра, которые они расширяют. В связи с этим сравнительно короткие команды, приводящие к изменению содержимого сегментных регистров (LDS, LES, POP, DS, CALL FAR, JMP FAR). Сравнительно короткие команды для R-режима выполняются очень долго в Р-режиме, т.к. при их исполнении реализуется полная схема преобразования адресов. Исходя их структуры логического адреса можно отметить, что (32+16-2=46) объем логического адресного пространства составляет 246 =64 Гбайта. (это 32 offset +16 selector – 2 RPL)
------17,12,03--------------------------------------------------------------------------------------------------------------
