СКИПОДы 2007 полная версия (1127795), страница 10
Текст из файла (страница 10)
Направление перехода будет неправильно предсказываться при первой ипри последней итерации цикла. Неправильный прогноз последней итерации цикланеизбежен, поскольку бит прогноза будет говорить, что переход "выполняемый" (переходбыл девять раз подряд выполняемым). Неправильный прогноз на первой итерациипроисходит из-за того, что бит прогноза инвертируется при предыдущем выполнениипоследней итерации цикла, поскольку в этой итерации переход был невыполняемым. Такимобразом, точность прогноза для перехода, который выполнялся в 90% случаев, составилатолько 80% (2 некорректных прогноза и 8 корректных). В общем случае, для командусловного перехода, используемых для организации циклов, переход являетсявыполняемым много раз подряд, а затем один раз оказывается невыполняемым.
Поэтомуоднобитовая схема прогнозирования будет неправильно предсказывать направлениеперехода дважды (при первой и при последней итерации).Для исправления этого положения часто используется схема двухбитового прогноза. Вдвухбитовой схеме прогноз должен быть сделан неверно дважды, прежде чем он изменитсяна противоположное значение. На рисунке 5.27 представлена диаграмма состоянийдвухбитовой схемы прогнозирования направления перехода.Двухбитовая схема прогнозирования в действительности является частным случаем болееобщей схемы, которая в каждой строке буфера прогнозирования имеет n-битовый счетчик.Этот счетчик может принимать значения от 0 до 2n - 1.
Тогда схема прогноза будетследующей:Если значение счетчика больше или равно 2n-1 (точка на середине интервала), то переходпрогнозируется как выполняемый. Если направление перехода предсказано правильно, кзначению счетчика добавляется единица (если только оно не достигло максимальнойвеличины); если прогноз был неверным, из значения счетчика вычитается единица.31Если значение счетчика меньше, чем 2n-1, то переход прогнозируется как невыполняемый.Если направление перехода предсказано правильно, из значения счетчика вычитаетсяединица (если только не достигнуто значение 0); если прогноз был неверным, к значениюсчетчика добавляется единица.Исследования n-битовых схем прогнозирования показали, что двухбитовая схема работаетпочти также хорошо, и поэтому в большинстве систем применяются двухбитовые схемыпрогноза, а не n-битовые.Буфер прогнозирования переходов может быть реализован в виде небольшой специальнойкэш-памяти, доступ к которой осуществляется с помощью адреса команды во время стадиивыборки команды в конвейере (IF), или как пара битов, связанных с каждым блоком кэшпамяти команд и выбираемых с каждой командой.
Если команда декодируется как командаперехода, и если переход спрогнозирован как выполняемый, выборка команд начинается сцелевого адреса как только станет известным новое значение счетчика команд. В противномслучае продолжается последовательная выборка и выполнение команд. Если прогнозоказался неверным, значение битов прогноза меняется в соответствии с рисунком 5.27.
Хотяэта схема полезна для большинства конвейеров, рассмотренный нами простейший конвейервыясняет примерно за одно и то же время оба вопроса: является ли переход выполняемым икаков целевой адрес перехода (предполагается отсутствие конфликта при обращении крегистру, определенному в команде условного перехода. Напомним, что для простейшегоконвейера это справедливо, поскольку условный переход выполняет сравнениесодержимого регистра с нулем во время стадии ID, во время которой вычисляется также иэффективный адрес).
Таким образом, эта схема не помогает в случае простых конвейеров,подобных рассмотренному ранее.Как уже упоминалось, точность двухбитовой схемы прогнозирования зависит от того,насколько часто прогноз каждого перехода является правильным и насколько часто строка вбуфере прогнозирования соответствует выполняемой команде перехода.
Если строка несоответствует данной команде перехода, прогноз в любом случае делается, поскольку всеравно никакая другая информация не доступна. Даже если эта строка соответствует совсемдругой команде перехода, прогноз может быть удачным.Управление виртуальной памятью.Виртуальная память: основные концепцииСуть концепции виртуальной памяти заключается в том, что адреса, к которым обращаетсявыполняющийся процесс, отделяются от адресов, реально существующих в первичнойпамяти.Те адреса, на которые делает ссылки выполняющийся процесс, называются виртуальнымиадресами, а те адреса, которые существуют в первичной памяти, называются реальными(или физическими) адресами. Диапазон виртуальных адресов, к которым может обращатьсявыполняющийся процесс, называется пространством виртуальных адресов V этогопроцесса.
Диапазон реальных адресов, существующих в конкретной вычислительноймашине, называется пространством реальных адресов R этого компьютера.Несмотря на то, что процессы обращаются только к виртуальным адресам, вдействительности они должны работать с реальной памятью. Таким образом, во времявыполнения процесса виртуальные адреса необходимо преобразовывать в реальные, причемэто нужно делать быстро, ибо в противном случае производительность вычислительноймашины будет снижаться до неприемлемых уровнен и тем самым практически сведутся на32нет те преимущества, которые и призвана обеспечить прежде всего концепция виртуальнойпамяти (рис.
8.2).Для установления соответствия между виртуальными и реальными адресами разработаныразличные способы. Так, механизмы динамического преобразования адресов (DAT)обеспечивают преобразование виртуальных адресов в реальные во время выполненияпроцесса. Все подобные системы обладают общим свойством: смежные адресавиртуального адресного пространства процесса не обязательно будут смежными в реальнойпамяти, это свойство называют «искусственной смежностью» (рис. 8.3). Таким образом,пользователь освобождается от необходимости учитывать размещение своих процедур иданных в реальной памяти.
Он получает возможность писать программы наиболееестественным образом, прорабатывая только детали алгоритма и структуры программы иигнорируя конкретные особенности структуры аппаратных средств, служащих длявыполнения программы. При этом компьютер рассматривается (или можетрассматриваться) только как логическое средство, обеспечивающее реализациюнеобходимых алгоритмов, а не как физическая машина с уникальными характеристиками,часть которых может лишь затруднить процесс проектирования программы.8.4 Многоуровневая организация памятиЕсли мы предусматриваем, что пространство виртуальных адресов пользователя будетбольше пространства реальных адресов, и, естественно, если мы ориентируемся на то, чтосистема будет эффективно работать в мультипрограммном режиме с совместнымиспользованием (разделением) ресурсов реальной памяти многими пользователями, то мыдолжны обеспечить средства хранения программ и данных в большой вспомогательнойпамяти.
Обычно для этого применяется двухуровневая схема построения памяти (рис. 8.4).Первый уровень — это реальная память, в которой находятся выполняемые процессы и вкоторой должны размещаться данные, чтобы процесс во время работы мог к нимобращаться.Второй уровень — это внешняя память большой емкости, например диски или барабаны,способные хранить программы и данные, которые не могут все сразу уместиться в реальнойпамяти ограниченной емкости.
Память этого второго уровня, как правило, называетсявторичной, или внешней. Чтобы обеспечить возможность выполнения процесса, его код иданные вводятся в основную память. В настоящей и следующей главах будет подробноописано, каким образом это делается.Поскольку реальная память разделяется между многими процессами и поскольку каждыйпроцесс может иметь гораздо большее пространство виртуальных адресов, чем реальнаяпамять, то в текущий момент времени в реальной памяти имеется возможность держатьлишь небольшую часть программных кодов и данных каждого процесса. На рис. 8.5показана двухуровневая система памяти, в которой реальная память содержит лишьопределенные элементы из виртуальных памятей различных пользователей.8.6 Страничная организация: основные концепцииПамятуя о том, насколько сложнее обращаться с блоками переменных размеров примультипрограммировании переменными разделами, давайте начнем с рассмотренияпоблочного отображенияНомер страницы pСмещение dВиртуальный адрес V=(p,d)при фиксированном размере блока, т.
е. со страничной организацией памяти. В настоящемразделе мы будем рассматривать чисто страничную, а не странично-сегментнуюорганизацию.33Виртуальный адрес в страничной системе — это упорядоченная пара (p, d), где p — номерстраницы в виртуальной памяти, a d — смещение в рамках страницы p, где размещаетсяадресуемый элемент (рис. 8.8). Процесс может выполняться, если его текущая страницанаходится в первичной памяти. Страницы переписываются из внешней памяти в первичнуюи размещаются в ней в блоках, называемых страничными кадрами и имеющих точно такойже размер, как поступающие страницы. Страничные кадры начинаются с адресовпервичной памяти, кратных фиксированному размеру страницы (рис. 8.9).