Вычислительные системы с общей памятью. Физическая и логическая организация памяти вычислительных систем. Организация памяти в вычислительных машинах

Вычислительные системы с общей памятью. Физическая и логическая организация памяти вычислительных систем. Организация памяти в вычислительных машинах

27.04.2019

Тема 3.1Организация вычислений в вычислительных системах

Назначение и характеристики ВС. Организация вычислений в вычислительных системах. ЭВМ параллельного действия, понятия потока команд и потока данных. Ассоциативные системы. Матричные системы. Конвейеризация вычислений. Конвейер команд, конвейер данных. Суперскаляризация.

Студент должен

знать:

Понятие потока команд;

Понятие потока данных;

Типы вычислительных систем;

Архитектурные особенности вычислительных систем

Вычислительные системы

Вычислительная система (ВС) – совокупность взаимосвязанных и взаимодействующих процессоров или ЭВМ, периферийного оборудования и программного обеспечения, предназначенная для сбора, хранения, обработки и распределения информации.

Создание ВС преследует следующие основные цели:

· повышение производительности системы за счёт ускорения процессов обработки данных;

· повышение надёжности и достоверности вычислений;

· предоставление пользователю дополнительных сервисных услуг т.д.

Тема 3.2

Классификация ВС в зависимости от числа потоков команд и данных: ОКОД (SISD), ОКМД (SIMD), МКОД (MISD), МКМД (MIMD).

Классификация многопроцессорных ВС с разными способами реализации памяти совместного использования: UMA, NUMA, СОМА. Сравнительные характеристики, аппаратные и программные особенности.

Классификация многомашинных ВС: МРР, NDW и COW. Назначение, характеристики, особенности.

Примеры ВС различных типов. Преимущества и недостатки различных типов вычислительных систем.

Классификация вычислительных систем

Отличительной особенностью ВС по отношению к классическим ЭВМ является наличие в ней нескольких вычислителей, реализующих параллельную обработку .

Параллелизм выполнения операций существенно повышает быстродействие системы; он может существенно повысить и надёжность (при отказе одного компонента системы его функцию может взять на себя другой), а также достоверность функционирования системы, если операции будут дублироваться, а результаты сравниваться.

Вычислительные системы можно разделить на две группы:

· многомашинные ;

· многопроцессорные .

Многомашинная вычислительная система состоит из нескольких отдельных компьютеров. Каждый компьютер в многомашинной системе имеет классическую архитектуру, и такая система применяется достаточно широко. Однако эффект от применения такой вычислительной системы может быть получен только при решении задачи, имеющей специальную структуру: она должна разбиваться на столько слабо связанных подзадач, сколько компьютеров в системе.

Многопроцессорная архитектура предполагает наличие в компьютере нескольких процессоров, поэтому параллельно может быть организовано много потоков данных и много потоков команд. Таким образом, одновременно может выполняться несколько фрагментов одной задачи. Преимущество в быстродействии многопроцессорных вычислительных систем перед однопроцессорными очевидно.

Недостатком является возможность возникновения конфликтных ситуаций при обращении нескольких процессоров к одной области памяти.

Особенностью многопроцессорных вычислительных систем является наличие общей оперативной памяти в качестве общего ресурса (рисунок 11).

Рисунок 11 - Архитектура многопроцессорной вычислительной системы

Классификация Флинна

Среди всех рассматриваемых систем классификации ВС наибольшее распространение получила классификация, предложенная в 1966г М. Флинном. В её основу положено понятие потока , под которым понимается последовательность элементов команд или данных, обрабатываемая процессором. В зависимости от количества потоков команд и потоков данных Флинн выделяет 4 класса архитектур:

· ОКОД – одиночный поток команд - одиночный поток данных. К ним относятся классические фон – неймановские ВМ. Конвейерная обработка не имеет значения, поэтому в класс ОКОД попадают как ВМ 6600 со скалярными функциональными устройствами, так и 7600 с конвейерными.

· МКОД – множественный поток команд - одиночный поток данных. В этой архитектуре множество процессоров обрабатывают один и тот же поток данных. Примером могла бы служить ВС, на процессоры которой подаётся искажённый сигнал, а каждый из процессоров обрабатывает этот сигнал с помощью своего алгоритма фильтрации. Тем не менее ни Флинн, ни другие специалисты в области архитектуры компьютеров до сих пор не сумели представить реально существующей ВС, построенной на данном принципе. Ряд исследователей относят к этому классу конвейерные системы, однако это не нашло окончательного признания. Наличие пустого класса не следует считать недостатком классификации Флинна. Такие классы могут стать полезными при разработке новых концепций в теории и практике построения ВС.

· ОКМД – один поток команд – много потоков данных – команды выдаются одним управляющим процессором, а выполняются одновременно на всех обрабатывающих процессорах над локальными данными этих процессоров. SIMD (single instruction – multiple data)

· МКМД – много потоков команд - много потоков данных- совокупность компьютеров, работающих по своим программам со своими исходными данными. MIMD (multiple instruction – multiple data)

Схема классификации Флинна является наиболее распространённой при первоначальной оценке ВС, поскольку сразу позволяет оценить базовый принцип работы системы. Однако у классификации Флинна имеются и очевидные недостатки: например, неспособность однозначно отнести некоторые архитектуры к тому или иному классу. Второй недостаток - чрезмерная насыщенность класса MIMD.

Существующие вычислительные системы класса MIMD образуют три подкласса: симметричные мультипроцессоры (SMP) , кластеры и массово параллельные системы (MPP). В основе этой классификации лежит структурно – функциональный подход.

Симметричные мультипроцессоры состоят из совокупности процессоров, обладающих одинаковыми возможностями доступа к памяти и внешним устройствам и функционирующих под управлением одной операционной системы (ОС). Частный случай SMP – однопроцессорные компьютеры. Все процессоры SMP имеют разделяемую общую память с единым адресным пространством.

Использование SMP обеспечивает следующие возможности:

· масштабирование приложений при низких начальных затратах, путём применения без преобразования приложений на новых более производительных аппаратных средствах;

· создание приложений в привычных программных средах;

· одинаковое время доступа ко всей памяти;

· возможность пересылки сообщений с большой пропускной способностью;

· поддержку когерентности совокупности кэшей и блоков основной памяти, неделимые операции синхронизации и блокировки.

Кластерная система образуется из модулей, объединённых системой связи или разделяемыми устройствами внешней памяти, например, дисковыми массивами.

Размер кластера варьируется от нескольких модулей до нескольких десятков модулей.

В рамках как совместно используемой, так и распределенной памяти реализуется несколько моделей архитектур системы памяти. На рисунке 12 приведена классификация таких моделей, применяемых в вычислительных системах класса MIMD (верна и для класса SIMD).

Рисунок 12 – Классификация моделей архитектур памяти вычислительных систем

В системах с общей памятью все процессоры имеют равные возможности по доступу к единому адресному пространству. Единая память может быть построена как одноблочная или по модульному принципу, но обычно практикуется второй вариант.

Вычислительные системы с общей памятью, где доступ любого процессора к памяти производится единообразно и занимает одинаковое время, называют системами с однородным доступом к памяти и обозначают аббревиатурой UMA (Uniform Memory Access). Это наиболее распространенная архитектура памяти параллельных ВС с общей памятью

Технически UMА-системы предполагают наличие узла, соединяющего каждый из п процессоров с каждым из т модулей памяти. Простейший путь построения таких ВС - объединение нескольких процессоров (Р i .) с единой памятью (М P) посредством общей шины - показан на рисунке 12а. В этом случае, однако, в каждый момент времени обмен по шине может вести только один из процессоров, то есть процессоры должны соперничать за доступ к шине. Когда процессор Р i , выбирает из памяти команду, остальные процессоры Р j (i ≠ j )должны ожидать, пока шина освободится. Если в систему входят только два процессора, они в состоянии работать с производительностью, близкой к максимальной, поскольку их доступ к шине можно чередовать: пока один процессор декодирует и выполняет команду, другой вправе использовать шину для выборки из памяти следующей команды. Однако когда добавляется третий процессор, производительность начинает падать. При наличии на шине десяти процессоров кривая быстродействия шины (рисунок 12б)становится горизонтальной, так что добавление 11-го процессора уже не дает повышения производительности. Нижняя кривая на этом рисунке иллюстрирует тот факт, что память и шина обладают фиксированной пропускной способностью, определяемой комбинацией длительности цикла памяти и протоколом шины, и в многопроцессорной системе с общей шиной эта пропускная способность распределена между несколькими процессорами. Если длительность цикла процессора больше по сравнению с циклом памяти, к шине можно подключать много процессоров. Однако фактически процессор обычно намного быстрее памяти, поэтому данная схема широкого применения не находит.

Альтернативный способ построения многопроцессорной ВС с общей памятью на основе UMA показан на рисунке 13в. Здесь шина заменена коммутатором, маршрутизирующим запросы процессора к одному из нескольких модулей памяти. Несмотря на то, что имеется несколько модулей памяти, все они входят в единое виртуальное адресное пространство. Преимущество такого подхода в том, что коммутатор в состоянии параллельно обслуживать несколько запросов. Каждый процессор может быть соединен со своим модулем памяти и иметь доступ к нему на максимально допустимой скорости. Соперничество между процессорами может возникнуть при попытке одновременного доступа к одному и тому же модулю памяти. В этом случае доступ получает только один процессор, а прочие - блокируются.

К сожалению, архитектура UMA не очень хорошо масштабируется. Наиболее распространенные системы содержат 4-8 процессоров, значительно реже 32-64 процессора. Кроме того, подобные системы нельзя отнести к отказоустойчивым , так как отказ одного процессора или модуля памяти влечет отказ всей ВС.

Рисунок 13 - Общая память:

а)объединение процессоров с помощью шины и система с локальными кэшами;

б) производительность системы как функция от числа процессоров на шине;

в) многопроцессорная ВС с общей памятью, состоящей из отдельных модулей

Другим подходом к построению ВС с общей памятью является неоднородный доступ к памяти , обозначаемый как NUMA (Non-Uniform Memory Access). Здесь, по-прежнему, фигурирует единое адресное пространство, но каждый процессор имеет локальную память. Доступ процессора к собственной локальной памяти производится напрямую, что намного быстрее, чем доступ к удаленной памяти через коммутатор или сеть. Такая система может быть дополнена глобальной памятью, тогда локальные запоминающие устройства играют роль быстрой кэш-памяти для глобальной памяти. Подобная схема может улучшить производительность ВС, но не в состоянии неограниченно отсрочить выравнивание прямой производительности. При наличии у каждого процессора локальной кэш-памяти (рисунок 13а) существует высокая вероятность (р> 0,9) того, что нужные команда или данные уже находятся в локальной памяти. Разумная вероятность попадания в локальную память существенно уменьшает число обращений процессора к глобальной памяти и, таким образом, ведет к повышению эффективности. Место излома кривой производительности (верхняя кривая на рисунке 13б), соответствующее точке, в которой добавление процессоров еще остается эффективным, теперь перемещается в область 20 процессоров, а точка, где кривая становится горизонтальной, - в область 30 процессоров.

В рамках концепции NUMA реализуется несколько различных подходов, обозначаемых аббревиатурами СОМА, CC-NUMA и NCC-NUMA.

В архитектуре только с кэш-памятью (СОМА, Cache Only Memory Architecture) локальная память каждого процессора построена как большая кэш-память для быстрого доступа со стороны «своего» процессора. Кэши всех процессоров в совокупности рассматриваются как глобальная память системы. Собственно глобальная память отсутствует. Принципиальная особенность концепции СОМА выражается в динамике. Здесь данные не привязаны статически к определенному модулю памяти и не имеют уникального адреса, остающегося неизменным в течение всего времени существования переменной. В архитектуре СОМА данные переносятся в кэш-память того процессора, который последним их запросил, при этом переменная не фиксирована уникальным адресом и в каждый момент времени может размещаться в любой физической ячейке. Перенос данных из одного локального кэша в другой не требует участия в этом процессе операционной системы, но подразумевает сложную и дорогостоящую аппаратуру управления памятью. Для организации такого режима используют так называемые каталоги кэшей . Отметим также, что последняя копия элемента данных никогда из кэш-памяти не удаляется.

Поскольку в архитектуре СОМА данные перемещаются в локальную кэш-память процессора-владельца, такие ВС в плане производительности обладают существенным преимуществом над другими архитектурами NUMA. С другой стороны, если единственная переменная или две различные переменные, хранящиеся в одной строке одного и того же кэша, требуются двум процессорам, эта строка кэша должна перемещаться между процессорами туда и обратно при каждом доступе к данным. Такие эффекты могут зависеть от деталей распределения памяти и приводить к непредсказуемым ситуациям.

Модель кэш-когерентного доступа к неоднородной памяти (CC-NUMA, Cache Coherent Non-Uniform Memory Architecture) принципиально отличается от модели СОМА. В системе CC-NUMA используется не кэш-память, а обычная физически распределенная память. Не происходит никакого копирования страниц или данных между ячейками памяти. Нет никакой программно реализованной передачи сообщений. Существует просто одна карта памяти, с частями, физически связанными медным кабелем, и «умные» аппаратные средства. Аппаратно реализованная кэш-когерентность означает, что не требуется какого-либо программного обеспечения для сохранения множества копий обновленных данных или их передачи. Со всем этим справляется аппаратный уровень. Доступ к локальным модулям памяти в разных узлах системы может производиться одновременно и происходит быстрее, чем к удаленным модулям памяти.

Отличие модели с кэш-некогерентным доступом к неоднородной памяти (NCC-NUMA, Non-Cache Coherent Non-Uniform Memory Architecture) от CC-NUMA очевидно из названия. Архитектура памяти предполагает единое адресное пространство, но не обеспечивает согласованности глобальных данных на аппаратном уровне. Управление использованием таких данных полностью возлагается на программное обеспечение (приложения или компиляторы). Несмотря на это обстоятельство, представляющееся недостатком архитектуры, она оказывается весьма полезной при повышении производительности вычислительных систем с архитектурой памяти типа DSM, рассматриваемой в разделе «Модели архитектур распределенной памяти».

В целом, ВС с общей памятью, построенные по схеме NUMA, называют архитектурами с виртуальной общей памятью (virtual shared memory architectures). Данный вид архитектуры, в частности CC-NUMA, в последнее время рассматривается как самостоятельный и довольно перспективный вид вычислительных систем класса M1MD.

Модели архитектур распределенной памяти. В системе с распределенной памятью каждый процессор обладает собственной памятью и способен адресоваться только к ней. Некоторые авторы называют этот тип систем многомашинными ВС или мультикомпьютерами , подчеркивая тот факт, "что блоки, из которых строится система, сами по себе являются небольшими вычислительными системами с процессором и памятью. Модели архитектур с распределенной памятью принято обозначать как архитектуры без прямого доступа к удаленной памяти (NORMA, No Remote Memory Access). Такое название следует из того факта, что каждый процессор имеет доступ только к своей локальной памяти. Доступ к удаленной памяти (локальной памяти другого процессора) возможен только путем обмена сообщениями с процессором, которому принадлежит адресуемая память.

Подобная организация характеризуется рядом достоинств. Во-первых, при доступе к данным не возникает конкуренции за шину или коммутаторы: каждый процессор может полностью использовать полосу пропускания тракта связи с собственной локальной памятью. Во-вторых, отсутствие общей шины означает, что нет и связанных с этим ограничений на число процессоров: размер системы ограничивает только сеть, объединяющая процессоры. В-третьих, снимается проблема когерентности кэш-памяти. Каждый процессор вправе самостоятельно менять свои данные, не заботясь о согласовании копий данных в собственной локальной кэш-памяти с кэшами других процессоров.

Студент должен

знать:

Классификацию ВС;

Примеры ВС различных типов.

уметь:

- выбирать тип вычислительной системы в соответствии с решаемой задачей.


©2015-2019 сайт
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-07-22

Организация памяти МПС. Сегментация памяти. Вычисление адреса. Внутренняя КЭШ память .

Память микропроцессорной системы выполняет функцию временно­го или постоянного хранения данных и команд. Объем памяти определяет допустимую сложность выполняемых системой алгоритмов, а также в некоторой степени и скорость работы системы в целом. Модули памяти выполняются на микросхемах памяти (оперативной или постоянной). Все чаще в составе микропроцессорных систем используется флэш-память (англ. – flash memory), которая представляет собой энергонезависимую память с возможностью многократной перезаписи содержимого.

Для подключения модуля памяти к системной магистрали используются блоки сопряжения, которые включают в себя дешифратор (селектор) адреса, схему обработки управляющих сигналов магистрали и буферы данных (рисунок7.4.1).

Рисунок 7.4.1. Схема подключения модуля памяти.

В пространстве памяти микропроцессорной системы обычно выделяются несколько особых областей, которые выполняют специальные фун­кции. К ним относятся:

– память программы начального запуска, выполненная на ПЗУ или флэш-памяти;

– память для стека или стек (Stack) – это часть оперативной памяти, пред­назначенная для временного хранения данных;

– таблица векторов прерываний, содержащая адреса начала программ обработки прерываний;

– память устройств, подключенных к системной шине.

Все остальные части пространства памяти, как правило, имеют универсальное назначение. В них могут располагаться как данные, так и программы (конечно, в случае одношинной архитектуры).

Часто простран­ство памяти делится на сегменты с программно изменяемым адресом начала сегмента и с установленным размером сегмента. Например, в процессоре Intel 8086 сегментирование памяти организовано следующим образом.

Вся память системы представляется не в виде непрерывного пространства, а в виде нескольких кусков – сегментов заданного размера (по 64 Кбайта), положение которых в пространстве памяти можно изменять программным путем.

Для хранения кодов адресов памяти используются не отдельные регистры, а пары регистров:

Сегментный регистр определяет адрес начала сегмента (то есть положение сегмента в памяти);

Регистр указателя (регистр смещения) определяет положение рабочего адреса внутри сегмента.

При этом физический 20-разрядный адрес памяти, выставляемый на внешнюю шину адреса, образуется так, как показано на рисунке7.4.2, то есть путем сложения смещения и адреса сегмента со сдвигом на 4 бита.

Рисунок 7.4.2. Формирование физического адреса памяти из адреса сегмента и смещения.

Положение этого адреса в памяти показано на рисунке7.4.3.

Рисунок 7.4.3. Положение физического адреса в памяти

Сегмент может начинаться только на 16-байтной границе памяти (так как адрес начала сегмента, по сути, имеет четыре младших нулевых разряда, как видно из рисунка 7.4.2), то есть с адреса, кратного 16. Эти допустимые границы сегментов называются границами параграфов.

Отметим, что введение сегментирования, прежде всего, связано с тем, что внутренние регистры процессора 16-разрядные, а физический адрес памяти 20-разрядный (16-разрядный адрес позволяет использовать память только в 64 Кбайт, что явно недостаточно).

Кэш–память располагается между основной памятью (ОП) и центральным процессором для снижения затрат времени на обращение ЦП к ОП.

Идея кэш-памяти основана на прогнозировании наиболее вероятных обращений ЦП к ОП. Наиболее «вероятные» данные и команды копируются в быструю, работающую в темпе ЦП, кэш-память до начала их непосредственного использования ЦП, так что обращение к данным и командам, используемым в текущий момент времени, может происходить быстро, без обращения к ОП. В основу такого подхода положен принцип локальности программы или, как еще говорят, гнездовой характер обращений, имея в виду, что адреса последовательных обращений к ОП образуют, как правило, компактную группу. При обращении к ОП в кэш-память копируются не отдельные данные, а блоки информации, включающие те данные, которые с большой степенью вероятности будут использованы в ЦП на последующих шагах работы. В связи с этим последующие команды выбираются ЦП уже не из ОП, а из быстрой кэш-памяти. Когда ЦП нужно считать или записать некоторое данное в ОП, он сначала проверяет его наличие в кэш-памяти. Эффективность кэш-системы зависит от размера блока и алгоритма программ.

Глава 11

Организация памяти вычислительных систем

В вычислительных системах, объединяющих множество параллельно работающих процессоров или машин, задача правильной организации памяти является одной из важнейших. Различие между быстродействием процессора и памяти всегда было камнем преткновения в однопроцессорных ВМ. Многопроцессорность ВС приводит еще к одной проблеме - проблеме одновременного доступа к памяти со стороны нескольких процессоров.

В зависимости от того, каким образом организована память многопроцессорных (многомашинных) систем, различают вычислительные системы с общей памятью (shared memory) и ВС с распределенной памятью (distributed memory). В системах с общей памятью (ее часто называют также совместно используемой или разделяемой памятью) намять ВС рассматривается как общин ресурс, и каждый из процессоров имеет полный доступ ко всему адресному пространству. Системы с обшей памятью называют сильно связанными (closely coupled systems). Подобное построение вычислительных систем имеет место как в классе SIMD, так и в классе MIMD. Иногда, чтобы подчеркнуть это обстоятельство, вводят специальные подклассы, используя для их обозначения аббревиатуры SM-SIMD (Shared Memory SIMD) и SM-MIMD (Shared Memory MIMD).

В варианте с распределенной памятью каждому из процессоров придается собственная память. Процессоры объединяются в сеть и могут при необходимости обмениваться данными, хранящимися в их памяти, передавая друг другу так называемые сообщения. Такой вид ВС называют слабо связанными (loosely coupled systems). Слабо связанные системы также встречаются как в классе SIMD, так и В классе MIMD, и иной раз, чтобы подчеркнуть данную особенность, вводят подклассы DM-SIMD (Distributed Memory SIMD) и DM-MIMD (Distributed Memory MIMD).

В некоторых случаях вычислительные системы с общей памятью называют мультипроцессорами, а системы с распределенной памятью - мцльтикомпьютерами.

Различие между общей и распределенной памятью - это разницу в структуре виртуальной памяти, то есть в том, как память выглядит со стороны процессора. Физически почти каждая система памяти разделена на автономные компоненты доступ к которым может производиться независимо. Общую память от распределенной отлипает то, каким образом подсистема памяти интерпретирует поступивший от процессора адрес ячейки. Для примера положим, что процессор выполняет команду load RO, i, означающую «Загрузить регистр R0 содержимым ячейки i». В случае общей памяти i - это глобальный адрес, и для любого процессора указывает на одну и ту же ячейку. В распределенной системе памяти i - это локальный адрес Если два процессора выполняют команду load RO, i, то каждый из них обращается к i-й ячейке в своем локальной памяти, то есть к разным ячейкам, и в регистры R0 могут быть загружены неодинаковые значения.

Различие между двумя системами памяти должно учитываться программистом, поскольку оно определяет способ взаимодействия частей распараллеленной программы. В варианте с общей памятью достаточно создать в памяти структуру данных и передавать в параллельно используемые подпрограммы ссылки на эту структуру. В системе с распределенной памятью необходимо в каждой локальной памяти иметь копию совместно используемых данных. Эти копии создаются путем вкладывания разделяемых данных в сообщения, посылаемые другим процессорам.

Память с чередованием адресов

Физически память вычислительной системы состоит из нескольких модулей (банков), при этом существенным вопросом является то, как в этом случае распределено адресное пространство (набор всех адресов, которые может сформировать процессор). Один из способов распределения виртуальных адресов по модулям памяти состоит в разбиении адресного пространства на последовательные блоки. Если память состоит из п банков, то ячейка с адресом i при поблочном разбиении будет находиться в банке с номером i/ n. В системе памяти с чередованием адресов (interleaved memory) последовательные адреса располагаются в различных банках: ячейка с адресом i находится в банке с номером i mod п. Пусть, например, память состоит из четырех банков, по 256 байт в каждом. В схеме, ориентированной на блочную адресацию, первому банку будут выделены виртуальные адреса 0-255, второму - 256-511 и т. д. В схеме с чередованием адресов последовательные ячейки в первом банке будут иметь виртуальные адреса 0, 4, 8, .... во втором банке - 1, 5, 9 и т. д. (рис. 11.1, а).

Распределение адресного пространства по модулям дает возможность одновременной обработки запросов на доступ к памяти, если соответствующие адреса относятся к разным банкам, Процессор может в одном из циклов затребовать доступ к ячейке i а в следующем цикле - к ячейке j. Если i и j находятся в разных банках, информация будет передана в последовательных циклах. Здесь под циклом понимается цикл процессора, в то время как полный цикл памяти занимает несколько циклов процессора. Таким образом, в данном случае процессор не должен ждать, пока будет завершен полный цикл обращения к ячейке i. Рассмотренный прием позволяет повысить пропускную способность: если система памяти состоит из

https://pandia.ru/text/78/264/images/image002_61.jpg" width="62" height="15"> Интервал между элементами называют шагом по индексу или «страйдом» (stride). Одним из интересных применений этого свойства может служить Доступ к матрицам. Если шаг по индексу на единицу больше числа строк в матрице, одиночный запрос на доступ к памяти возвратит все диагональные элементы матрицы (рис. 11.1,б). Ответственность за то, чтобы все извлекаемые элементы матрицы располагались в разных банках, ложится на программиста.

Модели архитектуры памяти вычислительных систем

В рамках как совместно используемой, так и распределенной памяти реализуется несколько моделей архитектур системы памяти.

DIV_ADBLOCK84">

Рис. 11.3. Общая память: а - объединение процессоров с помощью шины; б - система с локальными кэшами; в - производительность системы как функция от числа процессоров на шине; г - многопроцессорная ВС с общей памятью, состоящей из отдельных модулей

Альтернативный способ построения многопроцессорной ВС с общей памятью на основе НМЛ показан на рис. 11.3, г. Здесь шипа заменена коммутатором, маршрутизирующим запросы процессора к одному из нескольких модулей памяти. Несмотря на то что имеется несколько модулей памяти, все они входят в единое виртуальное адресное пространство. Преимущество такого подхода в том, что коммутатор и состоянии параллельно обслуживать несколько запросов. Каждый процессор может быть соединен со своим модулем памяти и иметь доступ к нему на максимально допустимой скорости. Соперничество между процессорами может возникнуть при попытке одновременного доступа к одному и тому же модулю памяти. В этом случае доступ получает только один процессор, а прочие - блокируются.

К сожалению, архитектура UMA не очень хорошо масштабируется. Наиболее распространенные системы содержат 4-8 процессоров, значительно реже 32-64 процессора. Кроме того, подобные системы нельзя отнести к отказоустойчивым, так как отказ одного процессора или модуля памяти влечет отказ всей ВС.

Другим подходом к построению ВС с общей памятью является неоднородный доступ к памяти, обозначаемый как NUM A (Non-Uniform Memory Access), Здесь по-прежнему фигурирует единое адресное пространство, но каждый процессор имеет локальную память. Доступ процессора к собственной локальной памяти производится напрямую, что намного быстрее, чем доступ к удаленной памяти через коммутатор или сеть. Такая система может быть дополнена глобальной памятью тогда локальные запоминающие устройства играют роль быстрой кэш-памяти для глобальной памяти. Подобная схема может улучшить производительность ВС, по не в состоянии неограниченно отсрочить выравнивание прямой производительности. При наличии у каждого процессора локальной кэш-памяти (рис. 11.3,6) существует высокая вероятность (р > 0,9) того, что нужные команда или данные уже находятся в локальной памяти. Разумная вероятность попадания в локальную память существенно уменьшает число обращений процессора к глобальной памяти и, таким образом, ведет к повышению эффективности. Место излома кривой производительности (верхняя кривая на рис. 11.3, в), соответствующее точке, в которой добавление процессоров еще остается эффективным, теперь перемещается в область 20 процессоров, а тонка, где кривая становится горизонтальной, - в область 30 процессоров.

В рамках концепции NUMA реализуется несколько различных подходов, обозначаемых аббревиатурами СОМА, CC- NUMA и NCC- NUMA.

В архитектуре только с кэш-памятью (СОМА, Cache Only Memory Architecture) локальная память каждого процессора построена как большая кэш-память для быстрого доступа со стороны «своего» процессора . Кэши всех процессоров в совокупности рассматриваются как глобальная память системы. Собственно глобальная память отсутствует. Принципиальная особенность концепции СОМА выражается в динамике. Здесь данные не привязаны статически к определенному модулю памяти и не имеют уникального адреса, остающегося неизменным в течение всего времени существования переменной. В архитектуре СОМА данные переносятся в кэш-память того процессора, который последним их запросил, при этом переменная не фиксирована уникальным адресом и в каждый момент времени может размещаться в любой физической ячейке. Перенос данных из одного локального кэша в другой не требует участия в этом процессе операционной системы, но подразумевает сложную и дорогостоящую аппаратуру управления памятью. Для организации такого режима используют так называемые каталоги кэшей. Отметим также, что последняя копия элемента данных никогда из кэш-памяти не удаляется.

Поскольку в архитектуре СОМА данные перемещаются в локальную кэш-память процессора-владельца, такие ВС в плане производительности обладают существенным преимуществом над другими архитектурами NUM А. С другой стороны, если единственная переменная или две различные переменные, хранящее в одной строке одного и того же кэша, требуются двум процессорам, эта строка кэша должна перемещаться между процессорами туда и обратно при каждом доступе к данным. Такие эффекты могут зависеть от деталей распределения памяти приводить к непредсказуемым ситуациям.

Модель кэш-когерентного доступа к неоднородной памяти (CC-NUMA, Сасhe Coherent Non-Uniform Memory Architecture) принципиально отличается от модели СОМА. В системе CC-NUMA используется не кэш-память, а обычная физически распределенная память. Не происходит никакого копирования страниц или данных между ячейками памяти. Нет никакой программно реализованной передачи сообщений. Существует просто одна карта памяти, с частями, физически связанными медным кабелем, и «умные» аппаратные средства. Аппаратно реализованная кэш-когерентность означает, что не требуется какого-либо программного обеспечения для сохранения множества копий обновленных данных или их передачи. Со всем этим справляется аппаратный уровень. Доступ к локальным модулям памяти в разных узлах системы может производиться одновременно и происходит быстрее, чем к удаленным модулям памяти.

Отличие модели с кэш-некогерентным доступом к неоднородной памяти (NCC-NUMA, Non-Cache Coherent Non-Uniform Memory Architecture) от CC-NUMA очевидно из названия. Архитектура памяти предполагает единое адресное пространство, но не обеспечивает согласованности глобальных данных на аппаратном уровне. Управление использованием таких данных полностью возлагается на программное обеспечение (приложения или компиляторы). Несмотря на это обстоятельство, представляющееся недостатком архитектуры, она оказывается весьма полезной при повышении производительности вычислительных систем с архитектурой памяти типа DSM, рассматриваемой в разделе «Модели архитектур распределенной памяти».

В целом, ВС с общей памятью, построенные по схеме NUMA, называют архитектурами с виртуальной общей памятью (virtual shared memory architectures). Данный вид архитектуры, в частности CC-NUMA, в последнее время рассматривается как самостоятельный и довольно перспективный вид вычислительных систем класса MIMD, поэтому такие ВС ниже будут обсуждены более подробно.

Модели архитектур распределенной памяти

В системе с распределенной памятью каждый процессор обладает собственной памятью и способен адресоваться только к ней. Некоторые авторы называют этот тип систем многомашинными ВС или мультикомпъютерами, подчеркивая тот факт, что блоки, из которых строится система, сами по себе являются небольшими вычислительными системами с процессором и памятью. Модели архитектур с распределенной памятью принято обозначать как архитектуры без прямого доступа к удаленной памяти (NORMA, No Remote Memory Access). Такое название следует из того факта, что каждый процессор имеет доступ только к своей локальной памяти. Доступ к удаленной памяти (локальной памяти другого процессора) возможен только путем обмена сообщениями с процессором, которому принадлежит адресуемая память.

Подобная организация характеризуется рядом достоинств. Во-первых, при доступе к данным не возникает конкуренции за шину или коммутаторы - каждый процессор может полностью использовать полосу пропускания тракта связи с собственной локальной памятью. Во-вторых, отсутствие общей шины означает, что нет и связанных с этим ограничений на число процессоров: размер системы ограничивает только сеть, объединяющая процессоры. В-третьих, снимается проблема когерентности кэш-памяти. Каждый процессор вправе самостоятельно менять свои Данные, не заботясь о согласовании копий данных в собственной локальной кэш-памяти с кэшами других процессоров.

Основной недостаток ВС с распределенной памятью заключается в сложности обмена информацией между процессорами. Если какой-то из процессоров нуждается в данных из памяти другого процессора, он должен обменяться с этим процессором сообщениями. Это приводит к двум видам издержек:

· требуется время для того, чтобы сформировать и переслать сообщение от одно! процессора к другому;

· для обеспечения реакции на сообщения от других процессоров принимающий процессор должен получить запрос прерывания и выполнить процедуру обработки этого прерывания.

Структура системы с распределенной памятью приведена на рис. 11.4. В левой! части (рис. 11.4, а) показан один процессорный элемент (ПЭ). Он включает в себя) собственно процессор (Р), локальную память (М) и два контроллера ввода/вывод (Ко и КД В правой части (рис. 11.4, б) показана четырехпроцессорная система, иллюстрирующая, каким образом сообщения пересылаются от одного процессор к другому. По отношению к каждому ПЭ все остальные процессорные элементы можно рассматривать просто как устройства ввода/вывода. Для посылки сообщения в другой ПЭ процессор формирует блок данных в своей локальной памяти и извещает свой локальный контроллер о необходимости передачи информации на внешнее устройство. По сети межсоединений это сообщение пересылается на приемный контроллер ввода/вывода принимающего ПЭ. Последний находит место для сообщения в собственной локальной памяти и уведомляет процессор-источник о получении сообщения.

DIV_ADBLOCK89">

Интересный вариант системы с распределенной памятью представляет собой; модель распределенной совместно используемой памяти (DSM, Distribute Shared Memory), известной также и под другим названием архитектуры с неоднородным доступом к памяти и программным обеспечением когерентности (SC-NUMA, Software-Coherent Non-Uniform Memory Architecture). Идея этой модели состоит в том, что ВС, физически будучи системой с распределенной памятью, благодаря операционной системе представляется пользователю как система с общей памятью. Это означает, что операционная система предлагает пользователю единое адресное пространство, несмотря на то что фактическое обращение к памяти «чужого» компьютера ВС по-прежнему обеспечивается путем обмена сообщениями.

Мультипроцессорная когерентность кэш - памяти

Мультипроцессорная система с разделяемой памятью состоит из двух или более независимых процессоров, каждый из которых выполняет либо часть большой программы, либо независимую программу. Все процессоры обращаются к командам и данным, хранящимся в общей основной памяти. Поскольку память является обобществленным ресурсом, при обращении к ней между процессорами возникает соперничество, в результате чего средняя задержка на доступ к памяти увеличивается. Для сокращения такой задержки каждому процессору придается локальная кэш-память, которая, обслуживая локальные обращения к памяти, во многих случаях предотвращает необходимость доступа к совместно используемой основной памяти. В свою очередь, оснащение каждого процессора локальной кэш-памятью приводит к так называемой проблеме когерентности или обеспечения согласо ванности кэш-памяти. Согласно , система является когерентной, если каждая операция чтения по какому-либо адресу, выполненная любым из процессоров, возвращает значение, занесенное в ходе последней операции записи по этому адресу, вне зависимости от того, какой из процессоров производил запись последним.

В простейшей форме проблему когерентности кэш-памяти можно пояснить следующим образом (рис 11.5). Пусть два процессора Рг и Рг связаны с общей памятью посредством шины. Сначала оба процессора читают переменную х. Копии блоков, содержащих эту переменную, пересылаются из основной памяти в локальные кэши обоих процессоров (рис. 11.5, а). Далее процессор Pt выполняет операцию увеличения значения переменной х на единицу. Так как копия переменной уже находится в кэш-памяти данного процессора, произойдет кэш-попадание и значение сбудет изменено только в кэш-памяти 1. Если теперь процессор Р2 вновь выполнит операцию чтения х, то также произойдет кэш-попадание и Р2 получит хранящееся в его кэш-памяти «старое» значение х (рис. 11.5, б).

Поддержание согласованности требует, чтобы при изменении элемента данных одним из процессоров соответствующие изменения были проведены в кэш-памяти остальных процессоров, где есть копия измененного элемента данных, а также в общей памяти. Схожая проблема возникает, кстати, и в однопроцессорных системах, где присутствует несколько уровней кэш-памяти. Здесь требуется согласовать содержимое кэшей разных уровней.

В решении проблемы когерентности выделяются два подхода: программный и аппаратный. В некоторых системах применяют стратегии, совмещающие оба подхода.

Программные способы решения проблемы когерентности

Программные приемы решения проблемы когерентности позволяют обойтись без дополнительного оборудования или свести его к минимуму .

Протокол Berkeley. Протокол Berkeley был применен в мультипроцес-сорной системе Berkeley, построенной на базе RISC-процессоров.

Снижение издержек, возникающих в результате кэш-промахов, обеспечивается благодаря реализованной в этом протоколе идее прав владения на строку кэша. Обычно владельцем прав на все блоки данных считается основная память. Прежде чем модифицировать содержимое строки в своей кэш-памяти, процессор должен получить права владения на данную строку. Эти права приобретаются с помощью специальных операций чтения и записи. Если при доступе к блоку, собственником которого в данный момент не является основная память, происходит кэш-промах, процессор, являющийся владельцем строки, предотвращает чтение из основной памяти и сам снабжает запросивший процессор данными из своей локальной кэш-памяти.

Другое улучшение - введение состояния совместного использования (shared). Когда процессор производит запись в одну из строк своей локальной кэш-памяти, он обычно формирует сигнал аннулирования копий изменяемого блока в других кэшах. В протоколе Berkeley сигнал аннулирования формируется только при условии, что в прочих кэшах имеются такие копии. Это позволяет существенно снизить непроизводительный трафик шины. Возможны следующие сценарии.

Прежде всего, каждый раз, когда какой-либо процессор производит запись в свою кэш-память, изменяемая строка переводится в состояние «измененная, частная» (PD, Private Dirty). Далее, если строка является совместно используемой, на шину посылается сигнал аннулирования, и во всех локальных кэшах, где есть копия данного блока данных, эти копии переводятся в состояние «недействительная» (I, Invalid). Если при записи имел место промах, процессор получает копию блока из кэша текущего хозяина запрошенного блока. Лишь после этих действий процессор производит запись в свой кэш.

При кэш-промахе чтения процессор посылает запрос владельцу блока, с тем чтобы получить наиболее свежую версию последнего, и переводит свою новую копию в состояние «только для чтения» (RO, Read Only). Если владельцем строки был другой процессор, он помечает свою копию блока как «разделяемую измененную» (SD, Shared Dirty).

Диаграмма состояний протокола Berkeley показана на рис. 11.10.

Сравнивая протоколы однократной записи и Berkeley, можно отметить следу-ющее. Оба протокола используют стратегию обратной записи, при которой изме-ненные блоки удерживаются в кэш-памяти как можно дольше. Основная память обновляется только при удалении строки из кэша. Верхняя граница общего количества транзакций записи на шине определяется той частью протокола однократной записи, где реализуется сквозная запись, так как последняя стратегия порождает на шине операцию записи при каждом изменении, инициированном процессором . Поскольку первая операция записи в протоколе однократной записи является сквозной, она производится даже если данные не являются совместно используемыми. Это влечет дополнительный трафик шины, который возрастает с увеличением емкости кэш-памяти. Доказано, что протокол однократной записи приводит к большему трафику шины по сравнению с протоколом Berkeley .







Попадание при чтении

Рис. 11.10. Протокол Berkeley

Для постоянно читаемой и обновляемой строки в протоколе однократной записи необходимы считывание этой строки в кэш, ее локальная модификация в кэше и обратная запись в память. Вся процедура требует двух операций на шине: чтения из основной памяти (ОП) и обратной записи в ОП. С другой стороны, протокол Berkeley исходит из получения прав на строку. Далее блок модифицируется в кэше. Если до удаления из кэша к строке не производилось обращение, число циклов шины будет таким же, как и в протоколе однократной записи. Однако более вероятно, что строка будет запрошена опять, тогда с позиций одиночной кэш-памяти обновление строки кэша нуждается только в одной операции чтения на шине. Таким образом, протокол Berkeley пересылает строки непосредственно между кэшами, в то время как протокол однократной записи передает блок из исходного кэша в основную память, а затем из ОП в запросившие кэши, что имеет следствием общую задержку системы памяти .

Протокол Illinois. Протокол Illinois, предложенный Марком Папамаркосом , также направлен на снижение трафика шины и, соответственно, времени ожидания процессором доступа к шине. Здесь, как и в протоколе Berkeley, главенствует идея прав владения блоком, но несколько измененная. В протоколе Illinois правом владения обладает любой кэш, где есть достоверная копия блока данных. В этом случае у одного и того же блока может быть несколько владельцев. Когда такое происходит, каждому процессору назначается определенный приоритет и источником информации становится владелец с более высоким приоритетом.

Как и в предыдущем случае, сигнал аннулирования формируется, лишь когда копии данного блока имеются и в других кэшах. Возможные сценарии для протокола Illinois представлены на рис. 11.11.

Рис. 11.11. Протокол Illinois

Каждый раз когда какой-либо процессор производит запись в свою кэш-память, изменяемая строка переводится в состояние «измененная частная» (PD, Private Dirty), Если блок данных является совместно используемым, на шину посылается сигнал аннулирования и во всех локальных кэшах, где есть копия данного блока, эти копии переводятся в состояние «недействительная» (I, Invalid). Если при записи случился промах, процессор получает копию из кэша текущего владельца запрошенного блока. Лишь после означенных действий процессор производит запись в свой кэш. Как видно, в этой части имеет место полное совпадение с протоколом Berkeley.

При кэш-промахе чтения процессор посылает запрос владельцу блока, с тем чтобы получить наиболее свежую версию последнего, и переводит свою новую копию в состояние «эксклюзивная» (Е, Exclusive) при условии, что он является единственным владельцем строки. В противном случае статус меняется на «разделяемая» (S, Shared).

Существенно, что протокол расширяем и тесно привязан как к коэффициенту кэш-промахов, так и к объему данных, которые являются общим достоянием мультипроцессорной системы.

Протокол Firefly. Протокол был предложен Такером и др. и реализован в мультипроцессорной системе Firefly Multiprocessor Workstation, разработанной в исследовательском центре Digital Equipment Corporation.

В протоколе Firefly используется запись с обновлением. Возможные состояния строки кэша совпадают с состояниями протокола Illinois (рис. 11.12). Отличие состоит в том, что стратегия обратной записи применяется только к тем строкам, которые находятся в состоянии PD или Е, в то время как применительно к строкам в состоянии S действует сквозная запись. Наблюдающие кэши при обновлении своих копий используют процедуру сквозной записи. Кроме того, наблюдающие кэши, обнаружившие у себя копию строки, возбуждают специальную «разделяемую» линию шины с тем, чтобы записывающий контроллер мог принять решение о том, в какое состояние переводить строку, в которую была произведена запись. «Разделяемая» линия при кэш-промахе чтения служит для информирования контроллера локальной кэш-памяти о месте, откуда поступила копия строки: из основной памяти или другого кэша. Таким образом, состояние S применяется только к тем данным, которые действительно используются совместно .

https://pandia.ru/text/78/264/images/image018_2.jpg" width="491 height=316" height="316">

Рис. 11.13. Протокол Dragon

Протокол MESI. Безусловно, среди известных протоколов наблюдения сам популярным является протокол MESI (Modified/Exclusive/Shared/Invalid). Протокол MESI широко распространен в коммерческих микропроцессорных системах, например на базе микропроцессоров Pentium и PowerPC. Так, его можно обнаружить во внутреннем кэше и контроллере внешнего кэша i82490 микропроцессора Pentium, в процессоре i860 и контроллере кэш-памяти МС88200 фирмы Моtorola.

Протокол был разработан для кэш-памяти с обратной записью. Одной из основных задач протокола MESI является откладывание на максимально возможный срок операции обратной записи кашированных данных в основную память BC. Это позволяет улучшить производительность системы за счет минимизации нужных пересылок информации между кэшами и основной памятью. Протокол MESI приписывает каждой кэш-строке одно из четырех состояний, которые контролируются двумя битами состояния MESI в теге данной строки. Статус кэш-строки может быть изменен как процессором, для которого эта кэш-память является локальной, так и другими процессорами мультипроцессорной «схемы. Управление состоянием кэш-строк может быть возложено и на внешние логические устройства. Одна из версий протокола предусматривает использование ранее рассмотренной схемы однократной записи.

Разделяемая (S, Shared) - строка в кэше совпадает с аналогичной строкой в основной памяти (данные достоверны) и может присутствовать в одном или нескольких из прочих кэшей.

Недействительная (I, Invalid) - кэш-строка, помеченная как недействительная, не содержит достоверных данных и становится логически недоступной.

Рис. 11.15. Последовательность смены состояний в протоколе MESI: а - процессор 1 читает х;

б - процессор 2 читает х; в - процессор 1 производит первую запись в х;

г - процессор 1 производит очередную запись в х

Порядок перехода строки кэш-памяти из одного состояния в другое зависит от: текущего статуса строки, выполняемой операции (чтение или запись), результата обращения в кэш (попадание или промах) и, наконец, от того, является ли строка совместно используемой или нет. На рис. 11.14 приведена диаграмма основных переходов без учета режима однократной записи.

Предположим, что один из процессоров делает запрос на чтение из строки, которой в текущий момент нет в его локальной кэш-памяти (промах при чтении). Запрос будет широковещательно передан по шине. Если ни в одном из кэшей не нашлось копии нужной строки, то ответной реакции от контроллеров наблюдения других процессоров не последует, строка будет считана в кэш запросившего процессора из основной памяти, а копии будет присвоен статус Е. Если в каком-либо из локальных кэшей имеется искомая копия, от соответствующего контроллера слежения поступит отклик, означающий доступ к совместно используемой строке. Все копии рассматриваемой строки во всех кэшах будут переведены в состояние S, вне зависимости от того, в каком состоянии они были до этого (И, Е или S).

Когда процессор делает запрос на запись в строку, отсутствующую в его локальной кэш-памяти (промах при записи), перед загрузкой в кэш-память строка должна быть считана из основной памяти (ОП) и модифицирована. Прежде чем процессор сможет загрузить строку, он должен убедиться, что в основной памяти действительно находится достоверная версия данных, то есть что в других кэшах отсутствует модифицированная копия данной строки. Формируемая в этом случае последовательность операций носит название чтения с намерением модифика ции (RWITM, Read With Intent To Modify). Если в одном из кэшей обнаружилась копия нужной строки, причем в состоянии М, то процессор, обладающий этой копией, прерывает RWITM-последовательность и переписывает строку в ОП, после чего меняет состояние строки в своем кэше на I. Затем RWITM-последовательность возобновляется и делается повторное обращение к основной памяти для считывания обновленной строки. Окончательным состоянием строки будет М, при котором ни в ОП, ни в других кэшах нет еще одной достоверной ее копии. Если копия строки существовала в другом кэше и не имела состояния М, то такая копия аннулируется и доступ к основной памяти производится немедленно.

Кэш-попадание при чтении не изменяет статуса читаемой строки. Если процессор выполняет доступ для записи в существующую строку, находящуюся в состоянии S, он передает на шину широковещательный запрос, с тем чтобы информировать другие кэши, обновляет строку в своем кэше и присваивает ей статус М. Все остальные копии строки переводятся в состояние I. Если процессор производит доступ по записи в строку, находящуюся в состоянии Е, единственное, что он должен сделать, - это произвести запись в строку и изменить ее состояние на М, поскольку другие копии строки в системе отсутствуют.

На рис. 11.15 показана типичная последовательность событий в системе из двух процессоров, запрашивающих доступ к ячейке х. Обращение к любой ячейке строки кэш-памяти рассматривается как доступ ко всей строке.

Проиллюстрируем этапы, когда процессор 2 пытается прочитать содержимое ячейки х" (рис. 11.16). Сперва наблюдается кэш-промах по чтению и процессор пытается обратиться к основной памяти. Процессор 1 следит за шиной, обнаруживает обращение к ячейке, копия которой есть в его кэш-памяти и находится в




Рис. 11.16. Переход из состояния Е в состояние S в протоколе MESI: а- процессор 2

читает х; б - процессор 1 производит обратную запись х" в основную память;

я - процессор 2 читает х" из основной памяти

состоянии М, поэтому он блокирует операцию чтения от процессора 2. Затем процессор 1 переписывает строку, содержащую х", в ОП и освобождает процессор 2, чтобы тот мог повторить доступ к основной памяти. Теперь процессор 2 получает строку, содержащую х", и загружает ее в свою кэш-память. Обе копии помечаются как S.

До сих пор рассматривалась версия протокола MESI без однократной записи. С учетом однократной записи диаграмма состояний, изображенная на рис. 11.14, немного видоизменяется. Все кэш-промахи при чтении вызывают переход в состояние S. Первое попадание при записи сопровождается переходом в состояние Е (так называемый переход однократной записи). Следующее попадание при записи влечет за собой изменение статуса строки на М.

Протоколы на основе справочника

Протоколы обеспечения когерентности на основе справочника характерны для сложных мультипроцессорных систем с совместно используемой памятью, где процессоры объединены многоступенчатой иерархической сетью межсоединений. Сложность топологии приводит к тому, что применение протоколов наблюдения с их механизмом широковещания становится дорогостоящим и неэффективным.

Протоколы на основе справочника предполагают сбор и отслеживание информации о содержимом всех локальных кэшей. Такие протоколы обычно реализуются с помощью централизованного контроллера, физически представляющего собой часть контроллера основной памяти. Собственно справочник хранится в основной памяти. Когда контроллер локальной кэш-памяти делает запрос, контроллер справочника обнаруживает такой запрос и формирует команды, необходимые для пересылки данных из основной памяти либо из другой локальной кэш-памяти, содержащей последнюю версию запрошенных данных. Центральный контроллер отвечает за обновление информации о состоянии локальных кэшей, поэтому он должен быть извещен о любом локальном действии, способном повлиять на состояние блока данных.

Справочник содержит множество записей, описывающих каждую кэшируемую ячейку ОП, которая может быть совместно использована процессорами системы. Обращение к справочнику производится всякий раз, когда один из процессоров изменяет копию такой ячейки в своей локальной памяти. В этом случае информация из справочника нужна для того, чтобы аннулировать или обновить копии измененной ячейки (или всей строки, содержащей эту ячейку) в прочих локальных кэшах, где такие копии имеются.

Для каждой строки общего пользования, копия которой может быть помещена в кэш-память, в справочнике выделяется одна запись, хранящая указатели на копии данной строки. Кроме того, в каждой записи выделен один бит модификации (D), показывающий, является ли копия «грязной» (D = 1 - dirty) или «чистой» (D = 0 - clean), то есть изменялось ли содержимое строки в кэш-памяти после того, как она была туда загружена. Этот бит указывает, имеет ли право процессор производить запись в данную строку.

В настоящее время известны три способа реализации протоколов обеспечения когерентности кэш-памяти на основе справочника: полный справочник, ограниченные справочники и сцепленные справочники.

В протоколе полного справочника единый централизованный справочник поддерживает информацию обо всех кэшах. Справочник хранится в основной памяти.


Рис. 11.17. Протокол обеспечения когерентности кэш-памяти с полным справочником

В системе из N процессоров каждая запись справочника будет содержать N однобитовых указателей. Если в соответствующей локальной кэш-памяти присутствует копия данных, бит-указатель устанавливается в 1, иначе - в 0. Схема с полным справочником показана на рис. 11.17. Здесь предполагается, что копия строки имеется в каждом кэше. Каждой строке придаются два индикатора состояния: бит достоверности (V, Valid) и бит владения (Р, Private). Если информация в строке корректна, ее V-бит устанавливается в 1. Единичное значение Р-бита указывает, что данному процессору предоставлено право на запись в соответствующую строку своей локальной кэш-памяти.

Предположим, что процессор 2 производит запись в ячейку х. В исходный момент процессор не получил еще разрешения на такую запись. Он формирует запрос к контроллеру справочника и ждет разрешения на продолжение операции. В ответ на запрос во все кэши, где есть копии строки, содержащей ячейку х, выдается сигнал аннулирования имеющихся копий. Каждый кэш, получивший этот сигнал, сбрасывает бит достоверности аннулируемой строки (V-бит) в 0 и возвращает контроллеру справочника сигнал подтверждения. После приема всех сигналов подтверждения контроллер справочника устанавливает в единицу бит модификации (D-бит) соответствующей записи справочника и посылает процессору 2 сигнал, разрешающий запись в ячейку х. С этого момента процессор 2 может продолжить запись в собственную копию ячейки х, а также в основную память, если в кэше реализована схема сквозной записи.

Основные проблемы протокола полного справочника связаны с большим количеством записей. Для каждой ячейки в справочнике системы из N процессоров требуется N+ 1 бит, то есть с увеличением числа процессоров коэффициент сложности возрастает линейно. Протокол полного справочника допускает наличие в каждом локальном кэше копий всех совместно используемых ячеек. На практике такая возможность далеко не всегда остается востребованной - в каждый конкретный момент обычно актуальны лишь одна или несколько копий. В протоколе с ограниченными справочниками копии отдельной строки вправе находиться только в ограниченном числе кэшей - одновременно может быть не более чем п копий строки, при этом число указателей в записях справочника уменьшается до п (п < N ). Чтобы однозначно идентифицировать кэш-память, хранящую копию, указатель вместо одного бита должен состоять из log2 N бит, а общая длина указателей в каждой записи справочника вместо N бит будет равна п log2 N бит. При постоянном значении п темпы роста коэффициента сложности ограниченного справочника по мере увеличения размера системы ниже, чем в случае линейной зависимости.

Когда одновременно требуется более чем п копий, контроллер принимает решение, какие из копий сохранить, а какие аннулировать, после чего производятся соответствующие изменения в указателях записей справочника.

Метод сцепленных справочников также имеет целью сжать объем справочника. В нем для хранения записей привлекается связный список, который может быть реализован как одно связный (однонаправленный) и двусвязный (двунаправленный).

Рис. 11.18. Протокол обеспечения когерентности кэш-памяти со сцепленным справочником

В односвязном списке (рис. 11.18) каждая запись справочника содержит указатель на копию строки в одном из локальных кэшей. Копии одноименных строк в разных кэшах системы образуют однонаправленную цепочку. Для этого в их тегах предусмотрено специальное поле, куда заносится указатель на кэш-память, содержащую следующую копию цепочки. В тег последней копии цепочки помещается специальный символ-ограничитель. Сцепленный справочник допускает цепочки длиной в N, то есть поддерживает N копий ячейки. При создании еще одной копии цепочку нужно разрушить, а вместо нее сформировать новую. Пусть, например, в процессоре 5 нет копии ячейки х и он обращается за ней к основной памяти. Указатель в справочнике изменяется так, чтобы указывать на кэш с номером 5, а указатель в кэше 5 - таким образом, чтобы указывать на кэш 2. Для этого контроллер основной памяти наряду с затребованными данными должен передать в кэш-память 5 также и указатель на кэш-память с номером 2. Лишь после того, как будет сформирована вся структура цепочки, процессор 5 получит разрешение на доступ к ячейке х. Если процессор производит запись в ячейку, то вниз по тракту, определяемому соответствующей цепочкой указателей, посылается сигнал аннулирования. Цепочка должна обновляться и при удалении копии из какой-либо кэш-памяти.

Двусвязный список поддерживает указатели как в прямом, так и в обратном направлениях. Это позволяет более эффективно вставлять в цепочку новые указатели или удалять из нее уже не нужные, но требует хранения большего числа указателей.

Схемы на основе справочника «страдают» от «заторов» в централизованном контроллере, а также от коммуникационных издержек в трактах между контроллерами локальных кэшей и центральным контроллером. Тем не менее они оказываются весьма эффективными в мультипроцессорных системах со сложной топологией взаимосвязей между процессорами, где невозможно реализовать протоколы наблюдения.

Ниже дана краткая характеристика актуальных на настоящее время протоколов обеспечения когерентности кэш-памяти на основе справочника. Для детального ознакомления с этими протоколами приведены ссылки на соответствующие литературные источники.

Протокол Tang. Здесь присутствует централизованный глобальный справочник, содержащий полную копию всей информации из каталогов каждого из локальных кэшей . Это приводит к проблеме узких мест, а также требует поиска соответствующих входов.

Протокол Censier. В схеме справочника Censier для указания того, какие процессоры содержат локальную копию данного блока памяти, используется битовый вектор указателей. Такой вектор имеется для каждого блока памяти. Недостатками метода является его неэффективность при большом числе процессоров, и, кроме того, для обновления строк кэша требуется доступ к основной памяти .

Протокол Archibald. Схема справочника Archibald - это пара замысловатых схем для иерархически организованных сетей процессоров. С детальным описанием этого протокола можно ознакомиться в .

Протокол Stenstrom. Справочник Stenstrom для каждого блока данных предусматривает шесть допустимых состояний. Этот протокол относительно прост и подходит для любых топологий межсоединений процессоров. Справочник хранится в основной памяти. В случае кэш-промаха при чтении происходит обращение к основной памяти, которая посылает сообщение кэш-памяти, являющейся владельцем блока, если такой находится. Получив это сообщение, кэш-владелец посылает затребованные данные, а также направляет сообщение всем остальным процессорам, совместно использующим эти данные, для того чтобы они обновили свои битовые векторы. Схема не очень эффективна при большом числе процессоров, однако в настоящее время это наиболее проработанный и широко распространенный протокол на основе справочника .

Контрольные вопросы

1. Проанализируйте влияние особенностей ВС с общей памятью и ВС с распределенной памятью на разработку программного обеспечения. Почему эти ВС называют соответственно сильно связанными и слабо связанными?

2. Поясните идею с чередованием адресов памяти. Из каких соображений выбирается механизм распределения адресов? Как он связан с классом архитектуры ВС?

3. Дайте сравнительную характеристику однородного и неоднородного доступов
к памяти.

4. В чем заключаются преимущества архитектуры СОМА?

5. Проведите сравнительный анализ моделей с кэш-когерентным и кэш-некогерентным доступом к неоднородной памяти.

6. Сформулируйте достоинства и недостатки архитектуры без прямого доступа к удаленной памяти.

7. Объясните смысл распределенной и совместно используемой памяти.

8. Разработайте свой пример, иллюстрирующий проблему когерентности кэш-памяти.

9. Охарактеризуйте особенности программных способов решения проблемы когерентности, выделите их преимущества и слабые стороны.

10. Сравните методики записи в память с аннулированием и записи в память с трансляцией, акцентируя их достоинства и недостатки.

11. Дайте сравнительную характеристику методов для поддержания когерентности в мультипроцессорных системах.

12. Выполните сравнительный анализ известных вам протоколов наблюдения.

13. Какой из протоколов наблюдения наиболее популярен? Обоснуйте причины повышенного к нему интереса.

14. Дайте развернутую характеристику протоколов когерентности на основе справочника и способов их реализации. В чем суть отличий этих протоколов от протоколов наблюдения?

Таблица 9.1. Иерархия подсистемы памяти ПК
Тип ЗУ 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

Регистры процессора составляют его контекст и хранят данные, используемые исполняющимися в конкретный момент командами процессора. Обращение к регистрам процессора происходит, как правило, по их мнемоническим обозначениям в командах процессора.

Кэш используется для согласования скорости работы ЦП и основной памяти. В вычислительных системах используют многоуровневый кэш : кэш I уровня (L1), кэш II уровня (L2) и т.д. В настольных системах обычно используется двухуровневый кэш , в серверных - трехуровневый. Кэш хранит команды или данные, которые с большой вероятностью в ближайшее время поступят процессору на обработку. Работа кэш-памяти прозрачна для программного обеспечения, поэтому кэш- память обычно программно недоступна.

Оперативная память хранит, как правило, функционально-законченные программные модули (ядро операционной системы, исполняющиеся программы и их библиотеки, драйверы используемых устройств и т.п.) и их данные, непосредственно участвующие в работе программ, а также используется для сохранения результатов вычислений или иной обработки данных перед пересылкой их во внешнее ЗУ, на устройство вывода данных или коммуникационные интерфейсы.

Каждой ячейке оперативной памяти присвоен уникальный адрес . Организационные методы распределения памяти предоставляют программистам возможность эффективного использования всей компьютерной системы. К таким методам относят сплошную ("плоскую") модель памяти и сегментированную модель памяти. При использовании сплошной модели ( flat model ) памяти программа оперирует единым непрерывным адресным пространством линейным адресным пространством, в котором ячейки памяти нумеруются последовательно и непрерывно от 0 до 2n-1, где n - разрядность ЦП по адресу. При использовании сегментированной модели (segmented model ) для программы память представляется группой независимых адресных блоков, называемых сегментами. Для адресации байта памяти программа должна использовать логический адрес , состоящий из селектора сегмента и смещения. Селектор сегмента выбирает определенный сегмент, а смещение указывает на конкретную ячейку в адресном пространстве выбранного сегмента.

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

1. Принципы обмена информацией между иерархическими уровнями подсистемы памяти.

2. Основные функции и основные подсистемы вычислительной системы.

3. Принцип действия ассоциативной кэш-памяти.

4. Реализация прерываний от периферийных устройств, подключенных через последовательный интерфейс.

5. Что такое кольца защиты?

6. Что такое сегментация оперативной памяти?

7. Основные особенности видеоданных. Матричное и графическое представление видеоинформации.

8. Что такое файл? Различия между файлом и каталогом.

9. Основные стадии конвейера современных процессоров.

10. Что такое переименование регистров?

Вопрос № 1. Принципы обмена информацией между иерархическими уровнями подсистемы памяти

В основе реализации иерархии памяти современных компьютеров лежат два принципа: принцип локальности обращений и соотношении стоимость/ прозводительность. Принцип локальности обращений говорит о том, что большинство программ к счастью не выполняют обращений ко всем своим командам и данным равновероятно, а оказывают предпочтение некоторой части своего адресного пространства.

Иерархия памяти современных компьютеров строится на нескольких уровнях, причем более высокий уровень меньше по объему, быстрее и имеет большую стоимость в пересчете на байт, чем более низкий уровень. Уровни иерархии взаимосвязаны: все данные на одном уровне могут быть также найдены на более низком уровне, и все данные на этом более низком уровне могут быть найдены на следующем нижележащем уровне и так далее, пока мы не достигнем основания иерархии.

Иерархия памяти обычно состоит из многих уровней, но в каждый момент времени мы имеем дело только с двумя близлежащими уровнями. Минимальная единица информации, которая может либо присутствовать, либо отсутствовать в двухуровневой иерархии, называется блоком. Размер блока может быть либо фиксированным, либо переменным. Если этот размер зафиксирован, то объем памяти является кратным размеру блока.

Успешное или неуспешное обращение к более высокому уровню называются соответственно попаданием (hit) или промахом (miss). Попадание - есть обращение к объекту в памяти, который найден на более высоком уровне, в то время как промах означает, что он не найден на этом уровне. Доля попаданий (hit rate) или коэффициент попаданий (hit ratio) есть доля обращений, найденных на более высоком уровне. Иногда она представляется процентами. Доля промахов (miss rate) есть доля обращений, которые не найдены на более высоком уровне.

Поскольку повышение производительности является главной причиной появления иерархии памяти, частота попаданий и промахов является важной характеристикой. Время обращения при попадании (hit time) есть время обращения к более высокому уровню иерархии, которое включает в себя, в частности, и время, необходимое для определения того, является ли обращение попаданием или промахом. Потери на промах (miss penalty) есть время для замещения блока в более высоком уровне на блок из более низкого уровня плюс время для пересылки этого блока в требуемое устройство (обычно в процессор). Потери на промах далее включают в себя две компоненты: время доступа (access time) - время обращения к первому слову блока при промахе, и время пересылки (transfer time) - дополнительное время для пересылки оставшихся слов блока. Время доступа связано с задержкой памяти более низкого уровня, в то время как время пересылки связано с полосой пропускания канала между устройствами памяти двух смежных уровней.

Вопрос № 2. Основные функции и основные подсистемы вычислительной системы

ОС - это комплекс взаимосвязанных программ, предназначенный для повышения эффективности аппаратуры компьютера путем рационального управления его ресурсами, а также для обеспечения удобств пользователю путем предоставления ему расширенной виртуальной машины. К числу основных ресурсов, управление которыми осуществляет ОС, относятся процессоры, основная память, таймеры, наборы данных, диски, накопители на магнитных лентах, принтеры, сетевые устройства и некоторые другие. Ресурсы распределяются между процессами. Для решения задач управления ресурсами разные ОС используют различные алгоритмы, особенности которых в конечном счете и определяют облик ОС. Наиболее важными подсистемами ОС являются подсистемы управления процессами, памятью, файлами и внешними устройствами, а также подсистемы пользовательского интерфейса, защиты данных и администрирования.

Основные функции:

* Выполнение по запросу программ тех достаточно элементарных (низкоуровневых) действий, которые являются общими для большинства программ и часто встречаются почти во всех программах (ввод и вывод данных, запуск и остановка других программ, выделение и освобождение дополнительной памяти и др.).

* Стандартизованный доступ к периферийным устройствам (устройства ввода-вывода).

* Управление оперативной памятью (распределение между процессами, организация виртуальной памяти).

* Управление доступом к данным на энергонезависимых носителях (таких как жёсткий диск, оптические диски и др.), организованным в той или иной файловой системе.

* Обеспечение пользовательского интерфейса.

* Сетевые операции, поддержка стека сетевых протоколов.

Дополнительные функции:

* Параллельное или псевдопараллельное выполнение задач (многозадачность).

* Эффективное распределение ресурсов вычислительной системы между процессами.

* Разграничение доступа различных процессов к ресурсам.

* Взаимодействие между процессами: обмен данными, взаимная синхронизация. Процесс -- это динамический объект, который возникает в операционной системе после того, как пользователь или сама операционная система решает «запустить программу на выполнение», то есть создать новую единицу вычислительной работы. Пользователь -- лицо или организация, которое использует действующую систему для выполнения конкретной функции. Файл - это именованная область внешней памяти, в которую можно записывать и из которой можно считывать данные. Основными целями использования файлов являются: долговременное и надежное хранение информации, а также совместный доступ к данным.

Вопрос № 3. Принцип действия ассоциативной кэш-памяти

В ассоциативной памяти элементы выбираются не по адресу, а по содержимому. Поясним последнее понятие более подробно. Для памяти с адресной организацией было введено понятие минимальной адресуемой единицы (МАЕ) как порции данных, имеющей индивидуальный адрес. Введем аналогичное понятие для ассоциативной памяти, и будем эту минимальную единицу хранения в ассоциативной памяти называть строкой ассоциативной памяти (СтрАП). Каждая СтрАП содержит два поля: поле тега (англ. tag - ярлык, этикетка, признак) и поле данных. Запрос на чтение к ассоциативной памяти словами можно выразить следующим образом: выбрать строку (строки), у которой (у которых) тег равен заданному значению.

Особо отметим, что при таком запросе возможен один из трех результатов:

1. имеется в точности одна строка с заданным тегом;

2. имеется несколько строк с заданным тегом;

3. нет ни одной строки с заданным тегом.

Поиск записи по признаку - это действие, типичное для обращений к базам данных, и поиск в базе зачастую является ассоциативным поиском. Для выполнения такого поиска следует просмотреть все записи и сравнить заданный тег с тегом каждой записи. Это можно сделать и при использовании для хранения записей обычной адресуемой памяти (и понятно, что это потребует достаточно много времени - пропорционально количеству хранимых записей!). Об ассоциативной памяти говорят тогда, когда ассоциативная выборка данных из памяти поддержана аппаратно. При записи в ассоциативную память элемент данных помещается в СтрАП вместе с присущим этому элементу тегом. Для этого можно использовать любую свободную СтрАП.

В начале работы КЭШ-память пуста. При выполнении первой же команды во время выборки ее код, а также еще несколько соседних байтов программного кода, - будут перенесены (медленно) в одну из строк КЭШа, и одновременно старшая часть адреса будет записана в соответствующий тег. Так происходит заполнение КЭШ-строки.

Если следующие выборки возможны из этого участка, они будут сделаны уже из КЭШа (быстро) - "КЭШ-попадание". Если же окажется, что нужного элемента в КЭШе нет, - "КЭШ-промахом". В этом случае обращение происходит к ОЗУ (медленно), и при этом одновременно заполняется очередная КЭШ-строка.

Обращение к КЭШу происходит следующим образом. После формирования исполнительного адреса его старшие биты, образующие тег, аппаратно (быстро) и одновременно сравниваются с тегами всех КЭШ-строк. При этом возможны только две ситуации из трех, перечисленных ранее: либо все сравнения дадут отрицательный результат (КЭШ-промах), либо положительный результат сравнения будет зафиксирован в точности для одной строки (КЭШ-попадание).

При считывании, если зафиксировано КЭШ-попадание, младшие разряды адреса определяют позицию в КЭШ-строке, начиная с которой следует выбирать байты, а тип операции определяет количество байтов. Очевидно, что если длина элемента данных превышает один байт, то возможны ситуации, когда этот элемент (частями) расположен в двух (или более) разных КЭШ-строках, тогда время на выборку такого элемента увеличится. Противодействовать этому можно, выравнивая операнды и команды по границам КЭШ-строк, что и учитывают при разработке оптимизирующих трансляторов или при ручной оптимизации кода.

Если произошел КЭШ-промах, а в КЭШе нет свободных строк, необходимо заменить одну строку КЭШа на другую строку.

Основная цель стратегии замещения - удерживать в КЭШ-памяти строки, к которым наиболее вероятны обращения в ближайшем будущем, и заменять строки, доступ к которым произойдет в более отдаленном времени или вообще не случится. Очевидно, что оптимальным будет алгоритм, который замещает ту строку, обращение к которой в будущем произойдет позже, чем к любой другой строке-КЭШ.

Вопрос № 4. Реализация прерываний от периферийных устройств, подключенных через последовательный интерфейс

Последовательный интерфейс для передачи данных в одну сторону использует одну сигнальную линию, по которой информационные биты передаются друг за другом последовательно. Такой способ передачи определяет название интерфейса и порта, его реализующего (Serial Interface и Serial Port). Последовательная передача данных может осуществляться в синхронном и асинхронном режимах.

При асинхронной передачи каждому байту предшествует старт-бит, сигнализирующий приемнику о начале очередной посылки, за которой следуют биты данных или бит паритета (конроля четности). Завершает посылку стоп-бит.

Формат асинхронной посылки позволяют выявить возможные ошибки передачи.

Синхронный режим передачи предполагает постоянную активность канала связи. Посылка начинается с синхробайта, за которым плотно следует поток информационных бит. Если у передатчика нет данных для передачи, он заполняет паузу непрерывной посылкой байтов синхронизации. При передаче больших массивов данных накладные расходы на синхронизацию в данном режиме необходима будет ниже, чем в асинхронном.

Прерывание (англ. interrupt) -- сигнал, сообщающий процессору о совершении какого-либо асинхронного события. При этом выполнение текущей последовательности команд приостанавливается, и управление переда?тся обработчику прерывания, который выполняет работу по обработке события и возвращает управление в прерванный код. Виды прерываний: Аппаратные (англ. IRQ - Interrupt Request) -- события от периферийных устройств (например, нажатия клавиш клавиатуры, движение мыши, сигнал от таймера, сетевой карты или дискового накопителя) -- внешние прерывания, или события в микропроцессоре -- (например, деление на ноль) -- внутренние прерывания; Программные -- инициируются выполняемой программой, т.е. уже синхронно, а не асинхронно. Программные прерывания могут служить для вызова сервисов операционной системы.

Прерывания требуют приостановки выполнения текущего потока инструкций (с сохранением состояния) и запуска исполнения процедуры-обработчика прерывания ISR (Interrupt Service Routine). Эта процедура первым делом должна идентифицировать источник прерывания (а их может быть и несколько), затем выполнить действия, связанные с реакцией на событие. Если события должны вызывать некоторые действия прикладной программы, то обработчику прерывания следует только подать сигнал (через ОС), запускающий (или пробуждающий) поток инструкций, выполняющий эти действия. Собственно процедура ISR должна быть оптимизирована по затраченному времени. Обслуживание прерываний, особенно в защищенном режиме, в PC-совместимых компьютерах на процессорах x86 связано со значительными накладными расходами. По этой причине их число стараются сократить. Значительные хлопоты доставляет идентификация источника прерывания -- в архитектуре PC-совместимых компьютеров для этого используются традиционные, но неэффективные механизмы. В ряде случаев прерывания от устройств заменяют поллингом -- программно-управляемым опросом состояния устройств. При этом состояния множества устройств опрашивают по прерыванию от таймера.

Вопрос № 5. Что такое кольца защиты?

Кольца защиты - архитектура информационной безопасности и функциональной отказоустойчивости, реализующая аппаратное разделение системного и пользовательского уровней привилегий. Структуру привилегий можно изобразить в виде нескольких концентрических кругов. В этом случае системный режим (режим супервизора или нулевое кольцо, т.н. «кольцо 0»), обеспечивающий максимальный доступ к ресурсам, является внутренним кругом, тогда как режим пользователя с ограниченным доступом - внешним. Традиционно семейство микропроцессоров х86 обеспечивает 4 кольца защиты.

Поддержка нескольких колец защиты была одной из революционных концепций, включенных в операционную систему Multics, предшественника сегодняшних UNIX-подобных операционных систем.

Оригинальная система Multics имела 8 колец защиты, но многие современные системы имеют как правило меньше. Процессор всегда знает в каком кольце исполняется код, благодаря специальным машинным регистрам.

Механизм колец строго ограничивает пути, с помощью которых управление можно передать от одного кольца к другому. Существует некоторая инструкция, которая передает контроль из менее защищенного в более защищенное (с меньшим номером) кольцо. Этот механизм разработан для того, чтобы ограничить возможности случайного или намеренного нарушения безопасности.

Эффективное использование архитектуры защиты колец требует тесного взаимодействия между аппаратными средствами и операционной системой. Операционные системы разрабатывающиеся так, чтобы они работали на большом кол-ве платформ могут иметь различную реализацию механизма колец на каждой платформе.

Вопрос № 6. Что такое сегментация оперативной памяти?

Сегментация (segmentation) - это прием организации программ, при котором адресная структура программы отражает ее содержательное членение. При сегментации пространство адресов каждой программы подразделяется на сегменты различной длины, которые соответствуют содержательно разным частям программы. Например, сегментом может быть процедура или область данных. В этом случае адрес состоит из имени сегмента и адреса внутри сегмента -смещения. Поскольку к программным сегментам обращаются по именам, можно при распределении памяти размещать сегменты в несмежных областях памяти, более того, не все сегменты должны одновременно находится в ОП, часть из них может находится во внешней памяти и преемещаться в ОП по мере необходимости.

Как уже указывалось, в системе с сегментацией каждый адрес представляет пару : s - имя сегмента и d - смещение. Каждой программе соответствует всегда присутствующая в памяти таблица сегментов, в которой каждому сегменту данного процесса соответствует одна запись. С помощью этой таблицы система отображает программные адреса в истинные адреса ОП. Адрес таблицы хранится в аппаратном регистре, называемом регистром таблицы сегментов.

Вычисление адреса при сегментации производится следующим образом. Прежде чем система сможет вычислить адрес, аппаратным путем проверяется признак присутствия сегмента в ОП. Если сегмент присутствует, то с помощью регистра таблицы сегментов производится обращение к s-ой строке таблицы сегментов, где указан адрес сегмента в памяти. Поскольку сегменты бывают различной длины, необходимо знать границу сегмента для предотвращения обращения за пределы заданного сегмента.

Если в какой-то момент система пожелает переключить свое внимание на другой процесс, она просто заменят содержимое регистра таблицы сегментов на адрес другой таблицы сегментов, после чего ссылки вида интерпретируются в соответствии с новой таблицей.

У сегментации пространства адресов множество преимуществ по сравнению с абсолютной адресацией, и главное - это эффективное использование оперативной памяти. Если в ОП недостаточно места для всех сегментов данной программы, некоторые могут временно располагаться во вспомогательной памяти. Если какой-то программе потребовалось ввести в ОП новый сегмент, то система может любой сегмент убрать из ОП во вспомогательную. Вытесняемому сегменту не обязательно принадлежать той программе, для которой в ОП вводится новый сегмент. Какой таблице сегментов соответствует вытесняемый сегмент не имеет значения, главное, чтобы при переводе его во вспомогательную память в соответствующей таблице сегментов изменилось значение признака.

Вопрос № 7. Основные особенности видеоданных. Матричное и графическое представление видеоинформации

Видеоинформация бывает как статической, так и динамической. Статическая видеоинформация включает в себя текст, рисунки, графики, чертежи, таблицы и др. Рисунки делятся также на плоские - двумерные и объемные - трехмерные.

Динамическая видеоинформация - это видеофильмы и мультипликация, использующаяся для передачи движущихся изображений. В их основе лежит последовательное экспонирование на экране в реальном масштабе времени отдельных кадров в соответствии со сценарием.

Демонстрация анимационных и слайд-фильмов опирается на различные принципы. Анимационные фильмы демонстрируются так, чтобы зрительный аппарат человека не мог зафиксировать отдельных кадров. Для получения качественной анимации кадры должны сменяться порядка 30 раз в секунду. При демонстрации слайд-фильмов каждый кадр экспонируется на экране столько времени, сколько необходимо для восприятия его человеком (обычно от 30 с до 1 мин). Слайд-фильмы можно отнести к статической видеоинформации.

В вычислительной технике существует два способа представления графических изображений; матричный (растровый)и векторный. Матричные (bitmap) форматы хорошо подходят для изображений со сложными гаммами цветов, оттенков и форм, таких как фотографии, рисунки, отсканированные данные. Векторные форматы более приспособлены для чертежей и изображений с простыми формами, тенями и окраской.

В матричных форматах изображение представляется прямоугольной матрицей точек -- пикселов (picture element), положение которых в матрице соответствует координатам точек на экране. Помимо координат каждый пиксел характеризуется своим цветом, цветом фона или градацией яркости. Количество битов, выделяемых для указания цвета пиксела, изменяется в зависимости от формата. В высококачественных изображениях цвет пиксела описывают 24 битами, что дает около 16 миллионов цветов. Основной недостаток матричной (растровой) графики заключается в большой емкости памяти, требуемой для хранения изображения, из-за чего для описания изображений прибегают к различным методам сжатия данных. В настоящее время существует множество форматов графических файлов, различающихся алгоритмами сжатия и способами представления матричных изображений, а также сферой применения.

Векторное представление, в отличие от матричной графики, определяет описание изображения не пикселями, а кривыми - сплайнами. Сплайн - это гладкая кривая, которая проходит через две или более опорные точки, управляющие формой сплайна.

Основное достоинство векторной графики состоит в том, что описание объекта является простым и занимает мало памяти. Кроме того, векторная графика в сравнении с матричной имеет следующие преимущества:

Простота масштабирования изображения без ухудшения его качества;

Независимость емкости памяти, требуемой для храпения изображения, от выбранной цветовой модели.

Недостатком векторных изображений является их некоторая искусственность, заключающаяся в том, что любое изображение необходимо разбить на конечное множество составляющих его примитивов. Как и для матричной графики, существует несколько форматов графических векторных файлов.

Матричная и векторная графика существуют не обособленно друг от друга. Так, векторные рисунки могут включать в себя и матричные изображения. Кроме того, векторные и матричные изображения могут быть преобразованы друг в друга. Графические форматы, позволяющие сочетать матричное и векторное описание изображения, называютсяметафайлами. Метафайлы обеспечивают достаточную компактность файлов с сохранением высокого качества изображения.

Рассмотренные формы представления статической видеоинформации используются, в частности, для отдельных кадров, образующих анимационные фильмы. Для хранения анимационных фильмов применяются различные методы сжатия информации, большинство из которых стандартизовано.

Вопрос № 8. Что такое файл? Различия между файлом и каталогом

вычислительный память оперативный видеоданные

Файл (англ. file - скоросшиватель) - концепция в вычислительной технике: сущность, позволяющая получить доступ к какому-либо ресурсу вычислительной системы и обладающая рядом признаков:

Фиксированное имя (последовательность символов, число или что-то иное, однозначно характеризующее файл);

Определённое логическое представление и соответствующие ему операции чтения/записи.

Может быть любой - от последовательности бит(хотя читаем именно байтами, а точнее словами-группами из байт, по четыре, по восемь, по шестнадцать) до базы данных с произвольной организацией или любым промежуточным вариантом; многомерной базой данных, строго упорядоченной.

Первому случаю соответствуют операции чтения/записи потока и/или массива (то есть последовательные или с доступом по индексу), второму - команды СУБД. Промежуточные варианты - чтение и разбор всевозможных форматов файлов.

Файл - поименованная совокупность байтов произвольной длины, находящихся на носителе информации, а каталог это - поименнованное место на диске, в котором хранятся файлы. Полное имя файла может включать в себя каталоги, как C:\papka\file.txt, может и не включать C:\file.txt, а каталог это то, в чем могут быть расположены файлы: C:\papka. Каталог нельзя открыть в программе, чтобы записать в него какую-то информацию или прочитать, он для хранения файлов внутри себя, файл же наоборот - его можно открыть и отредактировать.

Вопрос № 9. Основные стадии конвейера современных процессоров

Основная задача процессора - выполнять (и как можно быстрее) команды, входящие в программу. Самый простой путь (повышение тактовой частоты процессора) достаточно быстро исчерпывается технологическими ограничениями. Поэтому приходится искать другие способы повысить производительность. Именно набор архитектурных новшеств позволил повысить производительность Pentium по сравнению с 486-ми процессорами. Самое важное из них - конвейер.

Выполнение команды состоит из ряда этапов:

1) чтение команды из памяти,

2) определение длины,

3) определение адреса ячейки памяти, если она используется,

4) выполнение команды,

5) сохранение результата.

В ранних процессорах все эти этапы над каждой командой проводились полностью. Конвейер позволил ускорить процесс: после того, как команда проходила один из этапов и переходила на следующий, начиналась обработка следующей команды. Это решение появилось в последних 486-х (например, в AMD 5х86-133). В Pentium впервые появился двойной конвейер. Команды смогли выполняться параллельно (кроме плавающей арифметики и команд перехода). Это позволило повысить производительность примерно на 30-35%.

Вопрос № 10. Что такое переименование регистров?

Переименование регистров -- метод ослабления взаимозависимостей инструкций, применяемый в процессорах, осуществляющих их внеочередное исполнение.

В том случае, если в соответствии с двумя или более инструкциями необходимо осуществить запись данных в один регистр, их корректное внеочередное исполнение становится невозможным даже в том случае, если при этом нет зависимости по данным. Такие взаимозависимости часто называют ложными.

Так как количество архитектурных регистров обычно ограничено, вероятность возникновения ложных взаимозависимостей достаточно велика, что может привести к снижению производительности процессора.

Переименование регистров представляет собой преобразование программных ссылок на архитектурные регистры в ссылки на физические регистры и позволяет ослабить влияние ложных взаимозависимостей за счёт использования большого количества физических регистров вместо ограниченного количества архитектурных. При этом процессор отслеживает, состояние каких физических регистров соответствует состоянию архитектурных, а выдача результатов осуществляется в порядке, который предусмотрен программой.

Источники

Интернет-ресурс - http://www.chinapads.ru/

Рязанцев О.І., Недзельський Д.О., Гусєва С.В. Архітектурна та структурна організація обчислювальних систем. Навчальний посібник. - Луганськ: Вид-во. СНУ ім. В.Даля, 2008.

Интернет-ресурс - http://studopedia.net/

Интернет-ресурс - http://proc.ucoz.ru/load/ustrojstvo_processora/1-1-0-2

Э.Танненбаум. Архитектура компьютера, 4-изд. СПб. Питер 2006.

Интернет-ресурс - http://193.108.240.69/moodle/file.php/5/navch_pos_OS.doc

Интернет-ресурс - http://znanija.com/task/1788585

Размещено на Allbest.ru

Подобные документы

    Классификация компьютерной памяти. Использование оперативной, статической и динамической оперативной памяти. Принцип работы DDR SDRAM. Форматирование магнитных дисков. Основная проблема синхронизации. Теория вычислительных процессов. Адресация памяти.

    курсовая работа , добавлен 28.05.2016

    История появления и развития оперативной памяти. Общая характеристика наиболее популярных современных видов оперативной памяти - SRAM и DRAM. Память с изменением фазового состояния (PRAM). Тиристорная память с произвольным доступом, ее специфика.

    курсовая работа , добавлен 21.11.2014

    Простейшая схема взаимодействия оперативной памяти с ЦП. Устройство и принципы функционирования оперативной памяти. Эволюция динамической памяти. Модуль памяти EDO-DRAM BEDO (Burst EDO) - пакетная EDO RAM. Модуль памяти SDRAM, DDR SDRAM, SDRAM II.

    реферат , добавлен 13.12.2009

    Понятие, виды и основные функции памяти компьютера - части вычислительной машины, физического устройства для хранения данных, используемых в вычислениях, в течение определенного времени. Принципиальная схема оперативной памяти. Гибкие магнитные диски.

    презентация , добавлен 18.03.2012

    Память для вычислительных систем ее создание и характеристика особенностей. Создание устройств памяти и основные эксплуатационные характеристики. Функциональные схемы и способ организации матрицы запоминающих элементов. Виды магнитной и флеш памяти.

    презентация , добавлен 12.01.2009

    Хранение различной информации как основное назначение памяти. Характеристика видов памяти. Память типа SRAM и DRAM. Кэш-память или сверхоперативная память, ее специфика и области применения. Последние новинки разработок в области в оперативной памяти.

    презентация , добавлен 01.12.2014

    Обобщение основных видов и назначения оперативной памяти компьютера. Энергозависимая и энергонезависимая память. SRAM и DRAM. Триггеры, динамическое ОЗУ и его модификации. Кэш-память. Постоянное запоминающее устройство. Флэш-память. Виды внешней памяти.

    курсовая работа , добавлен 17.06.2013

    Улучшение параметров модулей памяти. Функционирование и взаимодействие операционной системы с оперативной памятью. Анализ основных типов, параметров оперативной памяти. Программная часть с обработкой выполнения команд и размещением в оперативной памяти.

    курсовая работа , добавлен 02.12.2009

    Общее устройство микропроцессора. Структура 64-битной подсистемы памяти. Селекция портов ввода/вывода. Особенности интерфейса микропроцессорных систем. Проектирование подсистемы памяти на базе Itanium 2. Расчёт информативности и необходимых объёмов.

    курсовая работа , добавлен 05.12.2012

    Понятие и функциональные особенности запоминающих устройств компьютера, их классификация и типы, сравнительная характеристика: ROM, DRAM и SRAM. Оценка преимуществ и недостатков каждого типа оперативной памяти, направления и пути их использования.



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows