Операционные системы 2011 (1114689), страница 13
Текст из файла (страница 13)
В общем случае, кэш представляет собою аппаратную«емкость», в которой аккумулируются наиболее часто используемые данные изоперативной памяти. Скорость доступа к информации, размещённой в КЭШе, соизмеримасо скоростью обработки информации в ЦП. Обмен данными при выполнении программы(чтение команд, чтение значений операндов, запись результатов) происходит не сячейками оперативной памяти, а с содержимым КЭШа. При необходимости из КЭШа«выталкивается» часть данных в ОЗУ или загружаются из ОЗУ новые данные.
Варьируяразмеры КЭШа, можно существенно минимизировать частоту реальных обращений коперативной памяти. Размещение и команд, и данных в одном КЭШе может приводить ктому, что команды и данные начинают вытеснять друг друга, увеличивая при этомобращения к оперативной памяти. Для исключения недетерминированной конкуренции вКЭШе между командами программы и обрабатываемыми данными современныекомпьютеры имеют два независимых КЭШа: КЭШ данных и КЭШ команд, каждый изкоторых работает со своим потоком информации — потоком команд и потокомоперандов.Рис. 28. Общая схема работы КЭШа.40Общая схема работы КЭШа следующая (Рис.
28).1.Условно, вся память разделяется на блоки одинакового размера. Обменданными между КЭШем и оперативной памятью осуществляется блокамификсированного объёма. Здесь мы можем видеть возможное проявление преимуществаиспользования памяти с расслоением, так как загрузка блока из оперативной памяти вКЭШ осуществляется с использованием параллелизма работы «расслоенной» оперативнойпамяти.2.Каждый блок имеет спецификатор доступа – тэг, в котором находитсяслужебная информация, характеризующая данный блок. В тэге может содержатьсяинформация о том, какой области ОП соответствует содержимое данного блока, занят илисвободен блок, производились изменения в данном блоке или нет. Когда процессорунужно обратиться за командой или за данными в ОП, сначала происходит обращение кКЭШу. По содержимому адресного тэга можно однозначно адресовать содержимое блока.Анализ тэгов блоков КЭШа производится аппаратно.
Таким образом, после вычисленияисполнительного адреса операнда или команды устройство управления может определить,находится ли соответствующая информация в одном из блоков КЭШ-памяти или нет.Факт нахождения искомых данных в КЭШе называется попаданием (hit) – в этом случаеданные берутся из КЭШа, и обращение в ОП не осуществляется. Если искомых данныхнет в КЭШе, то фиксируется промах (cache miss).3.При возникновении промаха происходит вытеснение – обновлениесодержимого КЭШа. Для этого выбирается блок-претендент на вытеснение, т.е. блок,содержимое которого будет заменено. Стратегия этого выбора зависит от конкретнойорганизации процессора.
Существуют КЭШи, вытеснение блоков которыхосуществляется случайным образом, т.е. номер блока, который должен быть вытеснен,определяется с использованием встроенного генератора случайных чисел. Альтернативойслучайного вытеснения является вытеснение наименее «популярного» блока КЭШа, т.е.блока, к содержимому которого происходило наименьшее число обращений (LRU —Least-Recently Used).4.Отдельно следует обратить внимание на организацию вытеснения блока вКЭШе данных, т.к. содержимое блоков КЭШа может не соответствовать содержимомупамяти (это возникает при обработке команд записи данных в память).
В этом случаетакже возможно использование нескольких стратегий вытеснения. Первая — сквозноекэширование (write-through caching): при выполнении команды записи данныхобновление происходит как в КЭШе, так и в оперативной памяти. Таким образом, привытеснении блока из КЭШа происходит только загрузка содержимого нового блока.Данная стратегия оправдана, т.к. статистические исследования показывают, что частотачтения данных превосходит частоту их записи на порядок. Другой стратегией являетсякэширование с обратной связью (write-back caching), суть которой заключается виспользовании специального тега модификации (dirty bit).
При выполнении командызаписи по адресу, содержимое которого кэшируется в одном из блоков, происходитобновление соответствующей этому адресу информации только в блоке КЭШа, а такжеустановка в блоке тега модификации. Соответственно, при вытеснении блокаосуществляется контроль за содержимым тега. Если тег модификации установлен, тосодержимое блока перед вытеснением «сбрасывается» в память. Тем самымминимизируется частота выполнения операции записи в память.Использование КЭШ-памяти позволяет получить следующие преимущества. Вопервых, сокращается количество обращений к ОЗУ – обращений, как по выборке команд,так и по выборке операндов.
Во-вторых, существенно увеличивается скорость доступа кпамяти в случае использования ОЗУ с «расслоением», так как обмены блоков с памятьюбудут проходить практически параллельно (когда мы работаем с группой подряд идущихслов).41Естественно, при использовании КЭШ-памяти возникают и некоторые проблемы.Во-первых, усложнение логики процессора.
Организация и использование КЭШ-памяти впроцессоре развивает рабочий цикл процессора модельного компьютера, рассмотренныйвыше: при выборке очередных команд, получении операндов команд и записи результатоввыполнения команд в ОЗУ добавляются схемы организации использования КЭШ-памяти.Во-вторых, если КЭШ один (т.е. потоки команд и данных приходятся на один КЭШ), тоодин из потоков может начать «довлеть» над другим, так как характеристики потоковкоманд и данных разные (поток команд обладает свойством локализации, поток данныхэтим свойством не обладает). Поэтому получили распространение архитектуры, в которыхКЭШ разделяется на КЭШ команд и КЭШ данных.
Это также позволяет повыситьпроизводительность системы.Кэширование памяти в современных вычислительных системах применяется нетолько для оптимизации взаимодействия центрального процессора и оперативной памяти.В настоящем пункте мы рассмотрели модельный аппарат КЭШ как компонентпроцессора — это т.н. КЭШ первого уровня.
Современные компьютеры могут включатьв свой состав иерархию устройств, кэширующих более медленные устройства храненияданных. Рассмотрению этого вопроса будет посвящен отдельный раздел.1.2.3.4 Аппарат прерыванийЕсли мы обратим внимание на представленный выше рабочий цикл процессора, тоувидим, что такая схема не предусматривает возможности обработки ошибочныхситуаций, которые могут возникнуть в системе в ходе выполнения программы.
Что будетс компьютером, если в программе, которую он выполняет, встретится команда с кодомоперации, обработка которого не предусмотрена аппаратурой? Что будет, есливыполняется корректная команда, но значения операндов приводят к невозможностивыполнения соответствующей команде операции, например, деление на ноль? Что будет,если при программном обращении к внешнему устройству оно сломалось? В первыхкомпьютерах происходила остановка работы всего компьютера и обработка ситуации,вызвавшей аварийную остановку (АВОСТ). Современные вычислительные системы немогут позволить себе остановку работы всей системы из-за возникновения тех или иныхпроблем в программе или в компонентах компьютера.
Для решения проблемавтоматизации обработки предопределённых событий, возникающих в вычислительнойсистеме, в современных компьютерах предусмотрены соответствующие аппаратнопрограммные средства – т.н. аппарат прерываний.Прерыванием называется событие в компьютере, при возникновении которого всистеме предусмотрена предопределенная последовательность действий, включающаястандартную реакцию процессора на прерывание и этап программной обработкипрерываний (функция ОС). Состав прерываний — множество разновидностей событий, навозникновение которых предусмотрена стандартная реакция центрального процессора, —фиксирован и определяется конструктивно при разработке компьютера. Аппаратпрерываний компьютера позволяет организовывать стандартную обработку прерываний,возникающих при функционировании вычислительной системы.
Традиционнопрерывания разделяются на два типа: внутренние прерывания и внешние прерывания.Внутренние прерывания инициируются схемами контроля работы процессора. Кпримеру, внутреннее прерывание может возникнуть в процессоре при попыткевыполнения команды деления, операнд-делитель которой равен нулю. Также внутреннеепрерывание возникнет в ситуации, когда при обработке очередной команды адрес одногоиз операндов выходит за пределы адресного пространства оперативной памяти.Внешние прерывания — события, возникающие в компьютере в результатевзаимодействия центрального процессора с внешними устройствами.
Примером внешнегопрерывания может служить событие, связанное с вводом символа с клавиатурыперсонального компьютера.42Обработка прерывания предполагает две стадии: аппаратную, которая включаетпредопределённую реакцию процессора на возникновение прерывания, и программную,которая предполагает выполнение специальной программы обработки прерывания,являющейся частью операционной системы.прерываниеЗавершение текущей командыБлокировка прерываний.Сохранение актуальногосостояния процессораЭтапы аппаратнойобработки прерывания«Что», «как» и «куда»зависит от конкретнойархитектурыПрограммный этап обработки прерыванияРис. 29. Схема обработки прерывания.Рассмотрим обобщенную модель последовательности действий, происходящих вВС при возникновении прерывания (Рис.
29). Сначала рассмотрим этап аппаратнойобработки прерывания.1.Завершается выполнение текущей команды (за исключением случаев, когдапрерывание возникает по причине некорректного выполнения команды).2.Обработка прерывания предполагает остановку выполнения текущейпрограммы, запуск специальной программы обработки прерывания, а затем, возможно,продолжение выполнения прерванной программы (с прерванного места). Для обеспеченияэтой возможности необходимо зафиксировать актуальное состояние компьютера в моментприхода прерывания (т.к. для обработки прерывания будет работать другая программа –ОС, а, следовательно, актуальное состояние системы изменится).
Поэтому аппаратныйэтап обработки прерываний регламентирует перечень регистров, которые автоматическибудут сохранены процессором. Это специальные регистры, содержимое которыхописывает состояние процессора в точке прерывания выполнения программы (счетчиккоманд, регистр результатов, регистры, содержащие режимы работы процессора), а такженесколько регистров общего назначения, которые могут быть использованы программойобработки прерываний в начальный момент времени. Процедура аппаратного сохранениярегистров в различных компьютерах может происходить по-разному.