Производительность – это количество операций в единицу времени. Быстродействие – время выполнения операций. Пусть существует функция F, которую можно разделить на F1, F2, F3. При выполнении задачи F методом, описанным на рисунке, время выполнения F вычисляется как сумма времени выполнения операций F1, F2, F3.
При выполнении задачи F методом, описанным на рисунке, время выполнения F вычисляется как максимальное из значений времени выполнения операций F1, F2,F3.
Для ускорения выполнения операций используется конвейеризация (локальное совмещение команд – одновременное выполнение различных фаз соседних команд).
Выполнение команд последовательно осуществляется по следующей схеме:
При конвейеризации используется другой принцип:
При этом время выполнения операций не изменилось, но производительность увеличилась в 2 раза.
Для обработки операндов и команд используется буферная память.
БК – буфер команд
БД – буфер данных
Принцип конвейеризации по-разному реализуется в современных микропроцессорах. Структура микропроцессора типа CISC предполагает, что команды имеют разную длину и время выполнения, поэтому они сложны аппаратурно. Процессоры типа RISC предполагают, что все команды имеют одинаковый формат, Цикл выполнения команд тоже одинаков. В них количество команд сведено до минимума (содержат набор простых, чаше всего встречающихся команд). Уменьшено количество различных вариантов обращения к памяти. ЦП ориентирован на работу с регистрами, а не с памятью. Но удлинение кода приводит к увеличению затрат ОП.
Команды имеют следующий формат:
КОП – код операции
M – признак команды
R1 – номер регистра
R2 – номер ячейки
R3 (L) - смещение
Конфликты, возникающие при использовании принципа конвейеризации.
1. Структурный – возникает при одновременном обращении в различных фазах к одному тому же ресурсу.
Например, фазы ВО и ВК, ВК и ИК, выполняемые в одно время, требуют обращения к памяти. Решение – введение отдельных КЭШей (для команд и для данных).
2. Зависимость по данным. Например, при выполнении следующих операций
сложить R1 R2 R3 (результат сложения R2 и R3 записывается в R1)
умножить R4 R1 R5
При выполнении ВО второй команды требуется элемент R1, который будет получен только при выполнении ЗР первой операции. Это невозможно. Решение:
1) введение дополнительной пустой операции (приторможение конвейера)
2) заранее выявить конфликт и изменить порядок команд
3. Конфликт по управлению.
Например, такой конфликт возникает при:
сложить R1 R2 R3 (результат сложения R2 и R3 записывается в R1)
условный переход Z
умножить R2 R3 R4
Решение:
1) вставить нейтральные команды («пузырь»),
2) спекулятивное выполнение,
3) предсказание перехода (если условие выполняется→переход к кэш-условию).
Мультипрограммирование
Особенность организации МП режима в том, что он реализуется в однопроцессорной машине. На рисунке представлена схема работы ЦП над двумя задачами одновременно.
Для работы ЦП по данной схеме используется принудительное переключение. Цикл активности – время непрерывного решения задачи ЦП-ом., которое лимитируется.
Аппаратные о программные средства для поддержания МП.
1. Канал по обслуживанию периферийных устройств.
2. ЦП должен иметь таймер.
3. Система прерываний.
2 и 3 – механизмы переключения.
4. Диспетчер определяет порядок выполнения программы.
5. Память: внешняя (файловая система) и ОП.
При МП решаются задачи защиты и распределения памяти. Динамическое распределение памяти – это выделение памяти каждой программе по мере и в объемах ее необходимости.
Защита – это предотвращение влияния одной программы на другую через общую память.
Распределение памяти
Для распределения памяти используются таблицы массивов, содержащие следующие параметры: базовый адрес, длина. Первая строка таблицы описывает начальный адрес свободной области памяти. Память должна освобождаться в порядке, обратном ее заполнению. Обращение к памяти происходит по адресу B+адрес, указанный в программе. Для защиты необходимо выполнение следующего условия: Bi+ni<Ai*<=Bi, где Ai* - адрес при обращении к i-ому массиву.
Виртуальная память – это расширение ОП за счет дисковой памяти.
Ам – математический адрес (сформированный в ЦП)
Aф – физический адрес (сформированный при помощи таблиц перевода)
Аh – старшая часть, указывающая номер страницы
Al – младшая часть, указывающая ячейки внутри страницы.
Схема преобразования математического адреса в физический.
Sм – указатель на строку таблицы страниц (ТС)
Sф – физический адрес соответствующей страницы
ДП – диспетчер памяти
Метод защиты памяти
При страничной организации используется метод «ключ-замок». Ключ – это код, который ставится в соответствие программе. Замок - это код, который ставится в соответствие области памяти. При обращении к памяти происходит сравнение ключа с замком, и в случае совпадения разрешается доступ к памяти.
Сегментация памяти
Процессор при обработке программы взаимодействует с оперативной памятью ОП, которая представляется единым массивом однобайтных ячеек, обращение к которым происходит по их номерам (физическим адресам). Для обращения к памяти процессор предварительно помещает адрес ячейки в один из своих регистров. Шестнадцатиразрядный процессор не может хранить в своих регистрах двадцатиразрядный адрес. Поэтому в нем применена так называемая сегментация памяти, которая заключается в том, что истинный, физический адрес ячейки хранится в двух регистрах. Один из них - сегментный, он хранит адрес начала блока памяти, который и называется сегментом. Если к шестнадцати разрядам сегмента справа дописать четыре двоичных нуля (16+4=20), то получим физический адрес начала сегмента в ОЗУ. Второй регистр хранит величину смещения адреса требуемой ячейки от начала сегмента. Адрес ячейки памяти записывается в виде двойного слова (4 байта): <сегмент>:<смещение>. Сегмент всегда начинается с ячейки, номер которой заканчивается на 4 двоичных нуля. Минимальная длина сегмента 16 байтов (параграф). Максимальная длина определяется длиной регистра, хранящего смещение и равна 64 Кбайта. Пара регистров CS: IP определяют адрес следующей команды программы. Для адресации данных используются сегментные регистры DS и ES, а в качестве регистров, хранящих смещение, используются регистры общего назначения BX, SI, DI. Для работы с сегментом стека используют сегментный регистр SS и регистр BP.
Режимы формирования адреса
Режим R86 (реальный) используется при включении питания. Это BIOS – этап, на котором происходит конфигурирование, тестирование системы.
В защищенном режиме P86 происходит запуск Windows.
1.ЦП получает набор специальных управляющих регистров (трассировки и тестирования).
2.Он изменяет способ формирования адреса, при этом не используются коды команд, написанных для R86 (для их выполнения используется V86).
3.Обеспечивается МП режим работы (включены механизмы распределения и защиты памяти). V86 обеспечивает согласование режимов на уровне кодов команд.
Адресация памяти в P86 происходит следующим образом: ЦП формирует 32-разрядный адрес. Но этот адрес не физический. Формируется линейный, линейно-страничный адрес (страничная организация поверх линейной памяти)
В R86 сегментный регистр задает местонахождение базы. Старшие 13 разрядов этого сегмента – селектор – указатель номера строки в таблице дескрипторов. Существует 2 таблицы дескрипторов:
GDT (Global)-единственная, создается до работы в P86 (R86), общая для всех решаемых программ,
LDT (Local).
Каждая программа может иметь свою собственную DT, которая описывает структуру памяти и используется только данной программой. Переключение GDT на LDT выполняется следующим битом сегментного регистра. Местонахождение GDT задается специальным регистром GDTR. RPL (младшие 2 разряда сегмента) – указатель, используемый для допуска к соответствующей области памяти (ключ). Дескриптор – это код, описывающий некоторую область памяти (и других информационных структур: шлюзов, задач). Дескриптор состоит из:
1) 32-разрядной базы (адрес сегмента, сегмент может начинаться с любого байта)
2) границы (20 разрядов)
3) DPL (2 разряда) – замка, который используется для защиты сегмента
4) Внутри дескрипторов есть поле некоторых признаков (10), которые указывают, что именно описывает дескриптор:
а) признак гранулярности: размер сегмента может быть задан либо в байтах, либо в страницах.
б) тип (назначение): сегмент кода, данных, принадлежности ОС или пользовательской программе.
в) доступность: по границе (база <= линейного адреса< границы); DPL – имеет 4 кольца защиты, информация о программе должна относиться к определенному уровню защиты, меньший номер имеет большую защищенность. Для осуществления доступа к памяти необходимо выполнение следующего условия: max(RPL,CPL)<=DPL, где RPL- текущий уровень защиты, CPL – RPL сегментного регистра CS.
Чтобы контролируемо обойти ограничения, накладываемые системой защитой памяти, используются шлюзы. Например, шлюз задач позволяет вызвать задачу с более высоким приоритетом.
Для обеспечения защиты памяти и правильного обращения к ней используется TTS (таблица состояния процесса). Это регистр обращения (страница размером 4096 байт, в которой отображается текущее состояние регистров процессора), бинарная таблица в/в, в которой каждый бит ассоциирован с некоторым регистром (портом в/в). Если установлена 1, то порт для данной программы закрыт. Таким образом, осуществляется контроль за обращением к памяти и портом.
Дата: 2019-07-24, просмотров: 175.