Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
evm.doc
Скачиваний:
13
Добавлен:
01.05.2025
Размер:
4 Мб
Скачать
☆

25. Состояние задачи в многопрограммной (в том числе многопроцессорной) системе.

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

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

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

26. Система массового параллелизма и многоядерные процессоры: структура, организация взаимодействия.

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

Архитектура многоядерных систем

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

Способ связи между ядрами:

разделяемая шина

сеть (Mesh) на каналах точка-точка

сеть с коммутатором

общая кеш-память

Кеш-память: Во всех существующих на сегодня многоядерных процессорах кеш-памятью 1-го уровня обладает каждое ядро в отдельности, а кеш-память 2-го уровня существует в нескольких вариантах:

разделяемая — расположена на одном кристалле с ядрами и доступна каждому из них в полном объёме. Используется в процессорах семейств Intel Core.

индивидуальная — отдельные кеши равного объёма, интегрированные в каждое из ядер. Обмен данными из кешей 2-го уровня между ядрами осуществляется через контроллер памяти — интегрированный (Athlon 64 X2, Turion X2, Phenom) или внешний (использовался в Pentium D, в дальнейшем Intel отказалась от такого подхода).

Параллельные вычисления

Еще при появлении первых процессоров производители старались максимально увеличить их мощность. В 1995 году университетом Вашингтона была выдвинута идея поддержки «одновременной многопоточности», которая была подхвачена и реализована компанией Intel в виде технологии Hyper-Threading. На практике это выглядело как разделение одного физического CPU на два виртуальных и значительная оптимизация работы процессора. Первым микрочипом с поддержкой данной технологии стал Intel Pentium 4, выпушенный 14 ноября 2002 года. По словам представителей компании, внедрение технологии Hyper-Threading вместе с необходимым увеличением площади кристалла на 5% позволило повысить производительность чипа на 15-30%. Правда, данные цифры напрямую зависели от программ, используемых для вычислений. Если говорить о создании аналогичной технологии со стороны AMD, то здесь компания Intel значительно опередила своих конкурентов.

ПРЕИМУЩЕСТВА МНОГОЯДЕРНЫХ.

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

МИНУСЫ МНОГОЯДЕРНЫХ CPU

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

Массовый параллелизм

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

Каждый из узлов состоит из одного или нескольких процессоров, собственной оперативной памяти, коммуникационного оборудования, подсистемы ввода/вывода, т.е. обладает всем необходимым для независимого функционирования. При этом на каждом узле может функционировать либо полноценная операционная система (как в системе RS/6000 SP2), либо урезанный вариант, поддерживающий только базовые функции ядра, а полноценная ОС работает на специальном управляющем компьютере (как в системах Cray T3E, nCUBE2).

Процессоры в таких системах имеют прямой доступ только к своей локальной памяти. Доступ к памяти других узлов реализуется обычно с помощью механизма передачи сообщений. Такая архитектура вычислительной системы устраняет одновременно как проблему конфликтов при обращении к памяти, так и проблему когерентности кэш-памяти. Это дает возможность практически неограниченного наращивания числа процессоров в системе, увеличивая тем самым ее производительность. Успешно функционируют MPP системы с сотнями и тысячами процессоров (ASCI White - 8192, Blue Mountain - 6144). Производительность наиболее мощных систем достигает 10 триллионов оп/сек (10 Tflops). Важным свойством MPP систем является их высокая степень масштабируемости. В зависимости от вычислительных потребностей для достижения необходимой производительности требуется просто собрать систему с нужным числом узлов.

На практике все, конечно, гораздо сложнее. Устранение одних проблем, как это обычно бывает, порождает другие. Для MPP систем на первый план выходит проблема эффективности коммуникационной среды. Легко сказать: "Давайте соберем систему из 1000 узлов". Но каким образом соединить в единое целое такое множество узлов? Самым простым и наиболее эффективным было бы соединение каждого процессора с каждым. Но тогда на каждом узле потребовалось бы 999 коммуникационных каналов, желательно двунаправленных. Очевидно, что это нереально. Различные производители MPP систем использовали разные топологии. В компьютерах Intel Paragon процессоры образовывали прямоугольную двумерную сетку. Для этого в каждом узле достаточно четырех коммуникационных каналов. В компьютерах Cray T3D/T3E использовалась топология трехмерного тора. Соответственно, в узлах этого компьютера было шесть коммуникационных каналов. Фирма nCUBE использовала в своих компьютерах топологию n-мерного гиперкуба. Подробнее на этой топологии мы остановимся в главе 4 при изучении суперкомпьютера nCUBE2. Каждая из рассмотренных топологий имеет свои преимущества и недостатки. Отметим, что при обмене данными между процессорами, не являющимися ближайшими соседями, происходит трансляция данных через промежуточные узлы. Очевидно, что в узлах должны быть предусмотрены какие-то аппаратные средства, которые освобождали бы центральный процессор от участия в трансляции данных. В последнее время для соединения вычислительных узлов чаще используется иерархическая система высокоскоростных коммутаторов, как это впервые было реализовано в компьютерах IBM SP2. Такая топология дает возможность прямого обмена данными между любыми узлами, без участия в этом промежуточных узлов.

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

кэш-память процессора;

локальная оперативная память узла;

оперативная память других узлов.

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

5. CISC-процессоры семейства 80х86 – основные блоки и их назначение.

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

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

• блокировка специальных "отладочных" прерываний процессора; • блокировка прерываний от клавиатуры: • замер времени выполнения контрольных участков программы; • использование прерывания таймера.

Напомним, что прерывания INT 1 и INT 3 (соответственно прерывание для пошаговой работы и прерывание по однобайтовой команде INT) интенсивно используются отладчиками. Первое прерывание позволяет отладчику получать управление после выполнения каждой команды трассируемой программы. С помощью второго прерывания отладчик может устанавливать точки останова, заменяя байты программы на команду однобайтового прерывания.

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

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]