Тема OS09асу. Управление процессором Микропрограммное управление аппаратурой в вычислительной системе. управление функцтональной избыточностью процессора, виртуальные процессоры, процессорные ядра, конвейеры, HyperThreading, суперскалярность и гиперскалярность и др. Процессоры современных компьютеров используют особенную технологию - конвейеры, которые позволяют обрабатывать более одной инструкции одновременно. Обработка инструкции может быть разделена на несколько основных этапов. Выделим основные пять этапов: 1.Выборка инструкции 2.Расшифровка инструкции 3.Выборка необходимых операндов 4.Выполнение инструкции 5.Сохранение результатов Для каждого этапа требуется определенное количество времени. Единицей измерения времени изберем цикл. Процессор Intel Pentium использует высокоскоростной внутренний таймер для синхронизации операций. Беcконвейерный процессор Старые процессоры, которые не поддерживают конвейерную обработку, позволяют обрабатывать одновременно только одну инструкцию. Сначала выполняются пять этапов первой инструкции, а затем выполняются пять этапов второй. Общее время - 10 циклов. Пусть число этапов = K, а число инструкций = N, тогда время = (N * K). Конвейерный процессор Если процессор поддерживает конвейерную обработку, то новая инструкция может быть отправлена в конвейер в то время, пока предыдущая инструкция на другом этапе конвейера. Одновременно выполняется несколько инструкций. Инструкция I-2 помещается во время второго цикла, когда первая инструкция I-1 на втором этапе. Если в конвеере четыре инструкции (I1, I2, I3, I4) и что каждый этап является точно одним циклом, то полное время выполнения - восемь циклов, а не 20 (4*5) Идея конвейера состоит в том, чтобы сложную операцию разбить на множество более простых, которые могут выполняться одновременно. При движении объектов по конвейеру на разных его участках выполняются разные операции, а при достижении каждым объектом конца конвейера он окажется полностью обработанным. Конвейеры применяются как при обработке команд, так и в арифметических операциях. Для эффективной реализации конвейера должны выполняться следующие условия: - система выполняет повторяющуюся операцию; - эта операция может быть разделена на независимые части, степень перекрытия которых невелика; - трудоемкость подопераций примерно одинакова. Количество подопераций называют глубиной конвейера. Важным условием нормальной работы конвейера является отсутствие конфликтов, то есть данные, подаваемые в конвейер, должны быть независимыми. В том случае, когда очередной операнд зависит от результата предыдущей операции, возникают такие периоды работы конвейера ("пузыри"), когда он пуст. Это еще одна проблема в работе конвейерных систем. Увеличение быстродействия, которое можно получить с помощью конвейера приблизительно дается следующей формулой: (n*d)/(n+d) где n - количество операндов, загружаемых в конвейер, d - глубина конвейера. Пусть требуется выполнить операцию сложения над двумя одномерными массивами по 200 элементов, причем выполнение сложения требует пять операций. В этом случае ускорение составит (200*5)/(200+5)=4.88. Разумеется, это идеальная ситуация, недостижимая в реальной жизни, в частности, считается, что нет "пузырей" и т.д. Это предполагает, как уже упоминалось, взаимную независимость данных. В конвейерах команд также могут возникать простои, источником которых является зависимость между командами. Такие ситуации возникают при наличии в циклах ветвлений, то есть условных операторов. Суперскалярные процессоры Суперскалярный процессор представляет собой нечто большее, чем обычный последовательный (скалярный) процессор. В отличие от последнего, он может выполнять несколько операций за один такт. Основными компонентами суперскалярного процессора являются устройства для интерпретации команд, снабженные логикой, позволяющей определить, являются ли команды независимыми, и достаточное число исполняющих устройств. В исполняющих устройствах могут быть конвейеры. Суперскалярные процессоры реализуют параллелизм на уровне команд. Примером компьютера с суперскалярным процессором является IBM RISC/6000. Тактовая частота процессора у ЭВМ была 62.5 МГц, а быстродействие системы на вычислительных тестах достигало 104 Mflop (Mflop - единица измерения быстродействия процессора - миллион операций с плавающей точкой в секунду). Суперскалярный процессор не требует специальных векторизующих компиляторов, хотя компилятор должен в этом случае учитывать особенности архитектуры. Векторная обработка данных Векторный процессор "умеет" обрабатывать одной командой не одно единственное значение, а сразу массив (вектор) значений. Пусть A1, A2 и P - это три массива, имеющие одинаковую размерность и одинаковую длину, и имеется оператор P=A1+A2 Векторный процессор за один цикл выполнения команды выполнит попарное сложение элементов массивов A1 и A2 и присвоит полученные значения соответствующим элементам массива P. Каждый операнд при этом хранится в особом, векторном регистре. Обычному, последовательному процессору пришлось бы несколько раз выполнять операцию сложения элементов двух массивов. Векторный процессор выполняет лишь одну команду! Разумеется, реализация такой команды будет более сложной, более подробное обсуждение этой проблемы содержится в третьей главе настоящего учебника. Очевидно, за счет векторизации можно надеяться (мы не случайно делаем здесь эту оговорку) получить высокую производительность. Кроме того, векторным ЭВМ присущи и другие интересные особенности. Количество команд, необходимых для выполнения одной и той же программы, использующей векторизуемые операции, меньше в случае векторного процессора, чем обычного, скалярного. Уменьшение потока команд позволяет снизить требования к устройствам коммуникации, в том числе между процессором и оперативной памятью компьютера. Другой момент заключается в том, что при соответствующей организации оперативной памяти данные в процессор будут передаваться на каждом такте, что дает значительный выигрыш в производительности компьютера. Следует заметить, что именно векторные ЭВМ были первыми высокопроизводительными компьютерами (мы упоминали уже векторный компьютер С.Крэя) и традиционно именно ЭВМ с векторной архитектурой называются суперкомпьютерами. Векторные компьютеры различаются тем, как операнды передаются командам процессора. Здесь можно выделить следующие основные схемы: * из памяти в память - в этом случае операнды извлекаются из оперативной памяти, загружаются в арифметическое устройство и результат возвращается в оперативную память; * из регистра в регистр - операнды вначале загружаются в векторные регистры, затем операнд передается в арифметическое устройство и результат возвращается в один из векторных регистров. Преимущество первой схемы заключается в том, что она дает возможность работать с векторами произвольной длины, тогда как во втором случае требуется разбиение длинных векторов на части, длина которых соответствует возможностям векторного регистра. С другой стороны, в первом случае имеется определенное время запуска между инициализацией команды и появлением в конвейере первого результата. Если конвейер уже загружен, результат на его выходе будет получаться в каждом такте. Примером ЭВМ с такой архитектурой являются компьютеры серии CYBER 200, время запуска у которых составляло до 100 тактов. Это очень большая величина, даже при работе с векторами длиной 100 элементов, вышеупомянутые компьютеры достигали лишь половины от своей максимально возможной производительности, и это их в конце концов и погубило. В векторных компьютерах, работающих по схеме регистр-регистр, длина вектора гораздо меньше. Для компьютеров серии Cray это 64. Но существенно меньшее время запуска позволяет добиться хороших показателей по быстродействию. Правда, если работать с длинными векторами, их приходится разбивать на части меньшей длины, что снижает быстродействие. Векторные компьютеры, работающие по схеме из регистра в регистр, в настоящее время доминируют на рынке векторных компьютеров и наиболее известными представителями являются машины семейства Cray, NEC, Fujitsu и Hitachi. Архитектура типичного векторного суперкомпьютера Cray следующая (в качестве примера рассмотрим старую модель Cray-1). Процессор имеет 8 векторных регистров, каждый из которых может хранить 64 слова по 64 бита каждое. Есть также 8 скалярных регистров для 64-битовых слов и 8 регистров для адресации для 20-битовых слов. Вместо кэш-памяти используются специальные регистры, управление которыми осуществляется программным путем из выполняющейся программы. Всего компьютер Cray-1 содержал до 12 конвейеризованных процессоров, имевших отдельные конвейеры для различных арифметических и логических операций. Скорость работы процессора строго согласована со скоростью работы оперативной памяти. Процессоры для параллельных компьютеров http://www.hpc.nw.ru/COURSES/HPC/ Идея параллелизма, как средства увеличения быстродействия ЭВМ, возникла очень давно - еще в 19-м веке. Принято выделять четыре уровня параллелизма: Параллелизм заданий - каждый процессор загружается своей собственной независимой от других вычислительной задачей. Параллелизм такого типа представляет интерес скорее для системных администраторов, чем рядовых пользователей; Параллелизм на уровне программы - вычислительная программа разбивается на части, которые могут выполняться одновременно на различных процессорах; Параллелизм команд - обычно реализован на низком уровне, это, например, конвейеры и т.д.; Параллелизм на уровне машинных слов и арифметических операций - в некоторых ситуациях, например, сложение двух операндов выполняется одновременным сложением всех их двоичных разрядов. Как видим, в первом и втором случаях нет необходимости в какой-то особой архитектуре процессора и лишь в третьем и четвертом случаях требуется введение новых элементов, речь о которых уже шла выше. Но все они не являются специфическими для параллельной многопроцессорной архитектуры. Связь между элементами параллельных вычислительных систем Важнейшим элементом архитектуры любого компьютера, а высокопроизводительных вычислительных систем в особенности, являются средства обмена данными между процессором и оперативной памятью, процессором и другим процессором, процессором и другими устройствами и т.д. Организация внутренних коммуникаций вычислительной системы называется ее топологией. Далее речь идет о многопроцессорных компьютерах, которые в данном контексте принято рассматривать как набор узлов (процессорных элементов, модулей памяти, переключателей) и соединений между узлами. Приведем несколько определений. Два узла называются соседними, если между ними имеется прямое соединение. Порядком узла называется количество его соседей. Диаметром сети (а речь идет, фактически, о локальных сетях) называется максимальный путь между любыми двумя узлами. Масштабируемость характеризует возрастание сложности соединений при добавлении в конфигурацию новых узлов. Если система обладает высокой степенью масштабируемости, ее сложность будет незначительно изменяться при наращивании системы, неизменным будет и диаметр сети. Приведем примеры топологий, которые применяются в параллельных вычислительных системах. Распространенной является хорошо масштабируемая топология "гиперкуб": 1-мерный гиперкуб, 2-мерный гиперкуб, 3-мерный гиперкуб. Для адресации узлов в гиперкубе каждому узлу присваивается свой идентификационный номер, при этом двоичные представления идентификационных номеров соседних узлов отличаются одним битом. Алгоритм пересылки сообщения от одного узла к другому в этом случае достаточно простой и основан на побитовом сравнении двоичных представлений идентификационных номеров текущего узла и адресата. Другим примером топологии является двумерная решетка. Это обычная квадратная решетка с граничными соединениями разного рода: Плоская решетка Более сложный тип коммуникации дается многоступенчатыми соединениями. В этом случае на одном конце соединения находятся процессоры, а на другом процессоры или другие узлы. В середине располагаются переключатели. При передаче данных от узла к узлу переключатели устанавливаются таким образом, чтобы обеспечить требуемое соединение. Очевидно, для этого требуется некоторое время - "время установки". Примерами многоступенчатых соединений являются соединения "бабочка" и "омега". Эти соединения формируются из переключателей, имеющих 2 входа и 2 выхода. Входы и выходы коммутируются. Количество переключателей, необходимое для нормальной работы сети с n входами и n выходами O(n log2n). Соединение "бабочка" Более устойчивую и эффективную работу обеспечивает перекрестное соединение. Переключатели динамически конфигурируются так, чтобы обеспечить требуемое соединение. Масштабируемость такого соединения не очень хорошая, так как добавление нового узла требует включения дополнительно 2n-1 переключателей. Перекрестное соединение Важнейшими атрибутами системы коммуникаций являются стратегии управления, переключения и синхронизации. Что касается управления, то здесь можно выделить две альтернативы: централизованное управление единым контроллером (модулем управления) и распределенное управление. Примерами распределенного управления являются работа многоступенчатых соединений, где каждый узел принимает решение, как поступить с поступившим сообщением - оставить его себе или передать соседу. Другой вариант используется, например, в соединениях типа "звезда", где каждое сообщение пересылается в контроллер, который определяет его дальнейшую судьбу. Синхронизация тоже может быть глобальной, когда синхронизующая последовательность импульсов передается всем узлам вычислительной системы, но может быть и локальной, когда каждый узел имеет свой собственный генератор. Последний вариант называется асинхронной работой. Преимущество глобальной синхронизации, характерной для SIMD машин заключается в более простой аппаратной и программной реализации, а асинхронные системы, чаще всего это MIMD-компьютеры - более гибкие. Стратегии переключения тоже бывают двух видов. Во-первых, это пакетное переключение, когда сообщение разбивается на более мелкие пакеты, пересылаемые по сети. Преодолев очередное соединение, пакет попадает на очередной узел, который определяет, куда этот пакет должен быть отправлен и должен ли он быть отправлен вообще. В конце концов пакеты должны прибыть на узел-адресат, причем пути их могут быть разными. На последнем узле пакеты собираются и восстанавливается переданное сообщение. Во-вторых, возможно цепное переключение, когда между отправителем и адресатом создается магистраль, по которой и передается сообщение целиком. КОМАНДЫ УПРАВЛЕНИЯ ПРОЦЕССОРОМ Мнемоника Функция команды, формат CLC Сбросить перенос 11111000 CMC Инвертировать перенос 11110101 STC Установить перенос 11111001 CLD Сбросить направление 11111100 STD Установить направление 11111101 CLI Сбросить прерывание 11111010 STI Установить прерывание 11111011 HLT Останов 11110100 WAIT Ожидать 10011011 LOCK Префикс блокировки шины 11110000 CLTS Сбросить флажок переключения задач 00001111¦00000110 ESC Переключиться на сопроцессор 11011ТТТ¦mod LLL r/m TTTLLL - КОП для процессора расширения SEG Префикс замены сегмента 001reg110 Классификация процессоров. Архитектура системы команд: CISC, RISC, MISC процессоры. Матричные процессоры. Процессоры с конвейерной обработкой. Пример типового конвейера команд. Выигрыш от конвейерной обработки и основные проблемы эффективного заполнения конвейера. Суперскалярный процессор. Пример суперскалярной обработки - Процессор Pentium. VLIW машины. Коммуникационный процессор. Отступление, понятие о сигнальных процессорах: Систолические матрицы. Волновые процессоры. Системы команд процессора. Типы команд. Принципы управления потоком команд. Методы адресации. Типы и размеры операндов. Типы процессорных сетей связи. Отступление: подъем популярности векторной обработки. Векторные операции в ПК. MMX, 3D now!. система прерываний Прерывания - это процедуры, которые компьютер вызывает для выполнения определенной задачи. Существуют аппаратные, логические и программные прерывания. Аппаратные прерывания инициируются аппаратурой, например сигналом от принтера, нажатием клавиши на клавиатуре, сигналом от таймера и другими причинами. Логические прерывания возникают при нестандартных ситуациях в работе микропроцессора, например деление на нуль, переполнение регистров и др. Программные прерывания инициируются программами, т.е. появляются, когда одна программа хочет получить сервис со стороны другой программы, например доступ к определенным аппаратным средствам. Каждое прерывание имеет уникальный номер, и с ним связана определенная подпрограмма. Когда вызывается прерывание, процессор оставляет свою работу и выполняет прерывание. Затем загружается адрес программы обработки прерывания и ей передается управление. После окончания ее работы управление передается основной программе, которая была прервана. Аппаратные прерывания относятся к прерываниям низшего уровня, им присвоены младшие номера, и обслуживает их базовая система ввода-вывода. Логические и программные прерывания относят к верхнему уровню, они имеют большие номера, и их обслуживает в основном базовый модуль DOS. Многопоточность - свойство операционной системы выполнять опера-ции одновременно над потоками нескольких 32-битовых приложений, на-зываемых процессами. Процесс состоит из потоков. Поток - это некоторая часть процесса, которой может быть выделено про-цессорное время для одновременного выполнения наряду с другими пото-ками того или иного процесса. Программирование для высокопроизводительных ЭВМ. А.В.Комолкин, С.А.Немнюгин http://www.hpc.nw.ru/COURSES/HPC/