Архитектура каких компьютеров основана на идеях параллелизма и конвейеризации вычислений
Основу любого процессора составляет полупроводниковый вентильный элемент - транзистор. Транзистор позволяет управлять электрическим сопротивлением проводника при помощи электрического тока, проходящего через базу (биполярный транзистор), или электрического напряжения, подаваемого на затвор (полевой транзистор). Если ввести обратную связь, то есть подать часть выходного сигнала транзистора на его вход, то можно заставить прибор работать в двух стабильных состояниях, которые соответствуют логическим 0 и 1.
Электрон - носитель электрического заряда и, как следствие, основной переносчик информации, хоть и является с точки зрения квантовой физики частицей легкой, все-таки имеет некоторую массу, а, следовательно, и инерционность. Его нельзя мгновенно остановить или мгновенно привести в движение. Скорость одного конкретного электрона неизвестна. Можно говорить только об общих статистических закономерностях поведения некоторой достаточно большой группы электронов. Большая группа - это еще большая масса, для разгона или остановки которой нужно время и энергия.
При движении любой заряженной частицы возникает электромагнитное поле. На создание этого поля также расходуется энергия, которая в конечном счете приводит к нагреванию кристалла.
Потребность в более быстрых, дешевых и универсальных процессорах вынуждает производителей постоянно наращивать число транзисторов в них. Однако этот процесс не бесконечен. Поддерживать экспоненциальный рост этого числа, предсказанный Гордоном Муром в 1973 году, становится все труднее. Специалисты утверждают, что этот закон перестанет действовать, как только затворы транзисторов, регулирующие потоки информации в чипе, станут соизмеримыми с длиной волны электрона (в кремнии, на котором сейчас строится производство, это порядка 10 нанометров). Произойдет это до 2020 годами. По мере приближения к физическому пределу архитектура компьютеров становится все более изощренной, возрастает стоимость проектирования, изготовления и тестирования чипов. Таким образом, этап эволюционного развития рано или поздно сменится революционными изменениями.
В результате гонки наращивания производительности возникает множество проблем:
· перегрев в сверхплотной упаковке, вызванный существенно меньшей площадью теплоотдачи;
· снижение надежности транзисторов из-за уменьшения их размеров и утоньшения изолирующего слоя. Данную проблему можно решить снижением управляющего напряжения, но лишь до определенных пределов;
· снижение размеров транзисторов уменьшает скорость их срабатывания, она перестает соответствовать скорости распространения сигнала по внутрисхемным соединениям;
· более тонкие проводники, соединяющие транзисторы, имеют и более высокое сопротивление и неприемлемо высокую задержку распространения сигнала. Эта проблема была отчасти решена путем использования многослойных соединений.
Возможности по совершенствованию элементной базы уже практически исчерпаны, дальнейшее повышение производительности ВМ лежит в плоскости архитектурных решений. На сегодняшний день основное условие повышения производительности процессоров - методы параллелизма. Как известно, микропроцессор обрабатывает последовательность инструкций (команд), составляющих ту или иную программу. Если организовать параллельное (то есть одновременное) выполнение инструкций, общая производительность существенно вырастет. Решается проблема параллелизма методами конвейеризации вычислений, применением суперскалярной архитектуры и предсказанием ветвлений.
Параллелизм на уровне команд
Параллелизм осуществляется в пределах отдельных команд и обеспечивает выполнение большого количества команд в секунду.
Конвейеры
Конвейеризация - процесс, посредством которого различные фазы обработки накладываются по времени одна на другую. Это означает разбиение команды на отдельные этапы и исполнение получившихся микроинструкций различными элементами процессора с передачей данных одного этапа следующему. Однако разбиение команд и контроль за исполнением каждого шага усложняет управляющие цепи и требует на каждом шаге памяти для временного хранения промежуточных данных (конвейерные регистры).
Производительность при конвейеризации возрастает благодаря тому, что одновременно на различных ступенях конвейера выполняются несколько операций. Конвейеризация эффективна только тогда, когда загрузка конвейера близка к полной, а скорость подачи новых операндов соответствует максимальной производительности конвейера. Если происходит задержка, то параллельно будет выполняться меньше операций и суммарная производительность снизится.
Обработка команды может быть разделена на несколько основных этапов (5 микрокоманд), каждый из которых выполняется определенной частью аппаратного обеспечения. Каждая операция требует для своего выполнения времени, равного такту генератора процессора. Вызов команд из памяти является главным препятствием высокой скорости выполнения команд, т.к. этот этап не может быть выполнен за 1 такт. Поэтому команды вызываются из памяти заранее, чтобы они имелись в наличии в тот момент, когда будут необходимы. Эти команды помещаются в набор регистров (буфер выборки с упреждением). Когда требуется определённая команда, она вызывается прямо из буфера.
Рассмотрим конвейер из 5 блоков (стадий).
С1- вызывает команду из памяти и помещает её в буфер, где она хранится до тех пор пока не будет нужна;
С2- декодирует эту команду, определяя её тип и тип операндов, над которыми она будет производить определённые действия;
С3- определяет местонахождение операндов и вызывает их или из регистров или из памяти;
С4- выполняет команду;
С5- записывает результат обработки в нужный регистр.
Действие конвейера во времени:
Цикл 1: С1 вызывает 1-ую команду из памяти;
Цикл 2: С2 декодирует команду 1,С1 вызывает 2-ую команду из памяти;
Цикл 3: С3 вызывает операнды для команды 1, С2 декодирует команду 2,С1 вызывает 3-ью команду из памяти;
Цикл 4: С4 выполняет команду 1, С3 вызывает операнды для команды 2, С2 декодирует команду 3,С1 вызывает 4-ую команду из памяти;
Цикл 5: С5 записывает результат выполнения команды 1 обратно в регистр, другие стадии работают над следующими командами ( С4 выполняет команду 2, С3 вызывает операнды для команды 3, С2 декодирует команду 4,С1 вызывает 5-ую команду из памяти).
Для повышения эффективности работы конвейера возможно разбиение каждой ступени конвейера на n «подступеней» при одновременном повышении тактовой частоте внутри конвейера также в n раз, либо включением в состав процессора n конвейеров, работающих с перекрытием.
Первый из этих подходов впервые был применен в 1988 году, он известен как суперконвейеризация. Каждая из ступеней стандартного конвейера разбивается на n более простых подступеней. Выполнение операции в подступенях занимает n-ую часть тактового периода, благодаря чему на каждой ступени конвейера за один такт выполнить n команд.
Суперконвейеризация сводится к увеличению количества ступеней конвейера за счет добавления новых ступеней и путем дробления имеющихся ступеней на несколько простых подступеней. Основное требование – возможность реализации операции в каждой подступене наиболее простыми техническими средствами, следовательно, с минимальными затратами времени. Второе условие – одинаковость задержки во всех подступенях.
Критерием для причисления процессора к суперконвейерным служит наличие не менее шести ступеней в конвейере команд. Длина конвейера команд в популярных микропроцессорах колеблется от 8 до 20. Удлинение конвейера приводит к возрастанию вероятности конфликтов, усложняется логика взаимодействия ступеней конвейера. Создателям ВМ удается справляться с большинством из этих проблем.
Суперскалярная архитектура.
Конвейеры в процессорах компании Intel появились, только начиная с 486-ой модели, содержавшей один конвейер. Pentium содержит 2 конвейера из 5 стадий, причём главный конвейер U-конвейер может выполнять произвольные команды, второй- V-конвейер может выполнять только простые команды и одну команду с плавающей точкой (FXCH).
В процессорах Intel все операции с плавающей точкой выполняет специальное устройство FPU с собственными регистрами и набором команд, начиная с 486 встроено в основной процессор, ранее сопроцессор FXCH.
Переход к большему количеству конвейеров возможен, но требует создания громоздкого аппаратного обеспечения, поэтому используется другой подход. Основная идея – один конвейер с большим количеством функциональных блоков, для обозначения этого подхода был введён термин суперскалярная архитектура. Стадия 3 выпускает команды значительно быстрее, чем стадия 4 способна их выполнять, поэтому вводится несколько функциональных блоков 4 стадии. Большинство функциональных блоков 4-ой стадии для выполнения требуют значительно больше времени, чем занимает один цикл (это блоки доступа к памяти, блок выполнения операция с плавающей точкой).
Основной объем вычислительной нагрузки приходится на скалярные вычисления, то есть на обработку одиночных операндов. Для подобных вычислений дополнительный параллелизм реализуется значительно сложнее и, в частности, возможен при использовании суперскалярных процессоров.
Суперскалярным называется центральный процессор, который одновременно выполняет более чем одну скалярную операцию. Это достигается за счет включения в центральный процессор нескольких самостоятельных функциональных (исполнительных) блоков, каждый из которых отвечает за свой класс операций и может присутствовать в процессоре в нескольких экземплярах.
Суперскалярные процессоры конца 90-х годов могли исполнять до 4-6 инструкций за один машинный цикл. На практике они выполняют в среднем 1,5 инструкции за такт. "Продвинутые" суперскалярные процессоры (Advanced superscalar) могут выполнять от 16 до 32 инструкций за такт. Чем это обернется на практике, пока сказать трудно, но и для "суперскалярной" архитектуры существенным ограничением является поток обрабатываемых данных.
В общем виде "продвинутая" суперскалярная архитектура состоит из 24-48 высокооптимизированных конвейерных блоков (например, блоков, выполняющих операции с плавающей точкой или обрабатывающих целые числа). Как и в простых суперскалярных архитектурах, каждый блок получает свою собственную "резервацию" - временное место хранения, где накапливается очередь инструкций, выполняемых данным блоком.
Более совершенное предсказание ветвлений - еще одна задача ближайшего будущего, и она тесно связана с предсказанием адресации: процессор попытается предсказать адреса ячеек памяти, которые будут затребованы последующими инструкциями, и вызвать их содержимое заранее.
Параллелизм и конвейеризация имеют одинаковые цели — повышение производительности вычислительных систем, оба подхода предполагают достижение этой цели за счет “размножения” аппаратных средств (избыточности аппаратуры вычислительных систем), однако организация вычислительного процесса в них достаточно различается, чтобы оправдать их сравнение. Приведенная таблица отражает наиболее существенные различия между этими подходами
Параллелизм можно определить как возможность одновременного выполнения разных и математических или служебных операций. Распараллеливание нахождение алгоритма решения задачи, использующего параллелизм и реализация этого алгоритма в ВС.
Параллельные ВС. это многопроцессорные ВС., в которых параллелизм используется для повышения производительности при решении задач за счет одновременного выполнения разных операций на разных процессорах или обрабатывающих устройствах одного процессора.
Некоторые задачи очень хорошо распараллеливаются (например, многие задачи обработки матриц), некоторые - очень плохо.
Решение вопросов взаимодействия параллельных процессоров (например, обмен с памятью, межпроцессорный обмен, синхронизация и др.)
Возможность реализации выбранного распараллеленного алгоритма на данной параллельной структуре.
Конвейеризация вычислений - разбиение вычислений на последовательные этапы с целью реализации этих этапов на отдельных ступенях конвейера для повышения производительности.
Конвейер - устройство, состоящее из N последовательно соединенных частей
(ступеней конвейера), каждая из которых выполняет очередной шаг вычислений за время t (такт конвейера).
Часто конвейерный режим используют в векторных ВС. Векторные ЭВМ и ВС выполняют не только скалярные операции (над числами), но и операции над векторами (массивами чисел), при этом векторные операции выполняются параллельно для всех элементов вектора, либо - на конвейере.
Выигрыш в производительности достигается за счет сокращения расходов на управление, а также за счет снижения универсальности устройства.
Основные проблемы организации вычислений в системах с перестраиваемой структурой связаны с обеспеченном параллелизма вычислений и распределенного децентрализованного управлении процессами и ресурсами. Эти проблемы разработаны только в первом приближении, и известные способы организации параллельных вычислений в распределенных системах с децентрализованным управлением еще не достигли необходимого уровня универсальности и формализации.
Параллельная обработка задач, т. е. мультипрограммный режим функционирования системы, обеспечиваемся достаточно простыми средствами. После ввода задания в систему модуль, принявший задание, посылает через коммутационное поле запрос на поиск свободного обрабатывающего модуля. Когда свободный модуль найден, ему посылается задание, определяющее имена наборов данных, в которых размещается программа, исходные данные и в которые должны быть помещены результаты вычислений. Из задания и программы модуль получает сведения о ресурсах, необходимых для выполнения задания: емкости операционной памяти, числе процессоров и неразделяемых наборах данных. Модуль закрепляет за собой необходимые ресурсы, и после обеспечения задания требуемыми ресурсами инициируется процесс выполнения задачи. По завершении обработки ресурсы освобождаются и в дальнейшем предоставляются очередным заданиям. Число процессов, реализуемых параллельно, определяется числом модулей, входящих в состав системы, и при наличии очереди заданий производительность системы пропорциональна числу модулей.
Параллельные программы строятся традиционными способами: выделением подзадач и ветвей программы, операций над векторами и матрицами и организацией конвейерной обработки данных. Наиболее просто реализуются вычисления с выделением подзадач н параллельных ветвей. При возникновении ветви в ведущей программе модуль посылает запрос на поиск свободного модуля, в который загружается программа и данные ветви, и ветвь выполняется как самостоятельная задача, по завершении которой в ведущий модуль отсылаются результаты обработки. Параллельные вычисления по конвейерной и матричной схемам организуются за счет создания соответствующих конфигураций связей между модулями – линейных (кольцевых) и матричных структур. Построение таких структур в многомодульных системах, в которых часть модулей занята выполнением ранее созданных задач, является пока нерешенной проблемой. Обычно для матричных вычислений в систему встраивает в качестве специального модуля матричный процессор, обеспечивающий высокопроизводительную обработку блоков данных.
В вычислительной системе с перестраиваемой структурой должно быть реализовано распределенное (децентрализованное) управление ресурсами. Это означает, что в системе не должно быть выделенного модуля (даже многократно зарезервированного), на который возложена задача централизованною управления функционированием системы. Распределенное управление основано на согласованной работе всех модулей системы, каждый из которых реализует одинаковый набор правил управления, обеспечивающий эффективное использование всех ресурсов системы. Распределенное управление повышает надежность системы, поскольку каждый модуль способен реализовать управление ресурсами и процессами, и одновременно повышает производительность системы, так как управляющие решения формируются без затрат времени на сбор информации о состоянии всех элементов системы (а за это время ситуация в системе может существенно измениться).
Конвейеризация вычислений - разбиение вычислений на последовательные этапы с целью реализации этих этапов на отдельных ступенях конвейера для повышения производительности.
Конвейер - устройство, состоящее из N последовательно соединенных частей (ступеней конвейера), каждая из которых выполняет очередной шаг вычислений за время t (такт конвейера). Таким образом, для решения задачи, требующей N шагов, потребуется время, равное t N, однако производительность конвейера может быть достаточно велика, поскольку освобождающиеся ступени могут заполняться новыми данными. В результате на каждом такте конвейер может выдавать очередной результат.
Билет №31
Полусумматор
Полусумматор — логическая схема, имеющая два входа и два выхода (двухразрядный сумматор, бинарный сумматор). Полусумматор используется для построения двоичных сумматоров.
Полусумматор позволяет вычислять сумму A+B, где A и B — это разряды двоичного числа, при этом результатом будут два бита S,C, где S — это бит суммы по модулю, а C — бит переноса.
Однако, как можно заметить, для построения схемы двоичного сумматора (трёхразрядный сумматор, тринарный сумматор) необходимо иметь элемент, который суммирует три бита A, B и C, где C — бит переноса из предыдущего разряда, таким элементом является полный двоичный сумматор, который как правило состоит из двух полусумматоров и логического элемента 2ИЛИ.
Представляет собой объединение двух бинарных (двухоперандных) двоичных логических функций: сумма по модулю два - S и разряд переноса при двоичном сложении - C.
Троичный полусумматор представляет собой объединение двух троичных бинарных логических функций - «сложение по модулю 3» и «разряд переноса при троичном сложении». Так как существуют две троичных системы счисления - несимметричная, в которой в разряде переноса не бывает значения больше "1" и симметричная (Фибоначчи), в которой в разряде переноса возможны все три состояния трита, и, как минимум, три физических реализации троичных систем - трёхуровневая однопроводная, двухуровневая двухпроводная (BCT) и двухуровневая трёхбитная одноединичная, то и троичных полусумматоров может быть большое множество.
SISD и SIMD системы.
SISD (англ. Single Instruction, Single Data) или ОКОД (Одиночный поток Команд, Одиночный поток Данных) — архитектура компьютера, в которой один процессор выполняет один поток команд, оперируя одним потоком данных. Относится к фон-Неймановской архитектуре.
SISD компьютеры это обычные, «традиционные» последовательные компьютеры, в которых в каждый момент времени выполняется лишь одна операция над одним элементом данных (числовым или каким-либо другим значением). Большинство персональных ЭВМ до последнего времени, например, попадает именно в эту категорию. Иногда сюда относят и некоторые типы векторных компьютеров, это зависит от того, что понимать под потоком данных.
SIMD (англ. single instruction, multiple data — одиночный поток команд, множественный поток данных, ОКМД) — принцип компьютерных вычислений, позволяющий обеспечить параллелизм на уровне данных.
SIMD-компьютеры состоят из одного командного процессора (управляющего модуля), называемого контроллером, и нескольких модулей обработки данных, называемых процессорными элементами. Управляющий модуль принимает, анализирует и выполняет команды. Если в команде встречаются данные, контроллер рассылает на все процессорные элементы команду, и эта команда выполняется на нескольких или на всех процессорных элементах. Каждый процессорный элемент имеет свою собственную память для хранения данных. Одним из преимуществ данной архитектуры считается то, что в этом случае более эффективно реализована логика вычислений. До половины логических инструкций обычного процессора связано с управлением выполнением машинных команд, а остальная их часть относится к работе с внутренней памятью процессора и выполнению арифметических операций. В SIMD компьютере управление выполняется контроллером, а «арифметика» отдана процессорным элементам.
Билет №32
Четвертьсумматор.
Простейшим двоичным суммирующим элементом является четверть сумматор. Происхождение названия этого элемента следует из того, что он имеет в два раза меньше выходов и в два раза меньше строк в таблице истинности по сравнению с полным двоичным одноразрядным сумматором. Наиболее известны для данной схемы названия: элемент “сумма по модулю 2” и элемент “исключающее ИЛИ”. Имеет два входа а и b для двух слагаемых и один выход S для суммы.
MISD и MIMD системы.
MISD-Архитектура (англ. Multiple Instruction stream, Single Data stream, Множественный поток Команд, Одиночный поток Данных, МКОД) — тип архитектуры параллельных вычислений, где несколько функциональных модулей (два или более) выполняют различные операции над одними данными.
Отказоустойчивые компьютеры, выполняющие одни и те же команды избыточно с целью обнаружения ошибок, как следует из определения, принадлежат к этому типу. К этому типу иногда относят конвейерную архитектуру, но не все с этим согласны, так как данные будут различаться после обработки на каждой стадии в конвейере. Некоторые относят систолический массив процессоров к архитектуре MISD.
Было создано немного ЭВМ с MISD-архитектурой, поскольку MIMD и SIMD чаще всего являются более подходящими для общих методик параллельных данных. Они обеспечивают лучшее масштабирование и использование вычислительных ресурсов, чем архитектура MISD.
MIMD (англ. Multiple Instruction stream, Multiple Data stream — Множественный поток Команд, Множественный поток Данных, сокращённо МКМД) — концепция архитектуры компьютера, используемая для достижения параллелизма вычислений.
Машины имеют несколько процессоров, которые функционируют асинхронно и независимо. В любой момент, различные процессоры могут выполнять различные команды над различными частями данных.
MIMD-архитектуры могут быть использованы в целом ряде областей, таких как системы автоматизированного проектирования / автоматизированное производство, моделирование, а также комуникатор связей (communication switches).
MIMD машины могут быть либо с общей памятью, либо с распределяемой памятью. Эта классификация основана на том как MIMD-процессоры получают доступ к памяти. Этот класс предполагает, что в вычислительной системе есть несколько устройств обработки команд, объединенных в единый комплекс и работающих каждое со своим потоком команд и данных.
На сегодняшний день параллелизм в архитектуре компьютеров используется довольно обширно, так для всех современных микропроцессоров характерно использование той или иной параллельной обработки. Это преподносится как последнее слово техники и науки, и это действительно так, если рассматривать реализацию данных принципов в
миниатюрных рамках одного кристалла.
Вместе с тем, зарождение самих идей появилось довольно давно. Изначально они внедрялись в единичных, самых передовых компьютерах своего времени. Затем, вслед за изменением технологии и удешевлением производства, они стали использоваться и в компьютерах среднего класса. На сегодняшний же день параллелизм в полном объеме воплощен в персональных компьютерах и в рабочих станциях. Рассмотрим исторические тенденции нововведений.
IBM 701 (1953), IBM 704 (1955) : разрядно-параллельная память, разрядно-параллельная арифметика. Все самые первые компьютеры (UNIVAC, EDSAC, EDVAC) имели разрядно-последовательную память, считывание слов из которой осуществлялось бит за битом.
IBM 709 (1958): независимые процессоры ввода/вывода. Управление ввода/вывода было под контролем самих процессоров. Но, в то время самое быстрое внешнее устройство, магнитная лента, работало со скоростью в 1000 раз меньше скорости процессора, по этому процессор во операций ввода/вывода фактически простаивал. В 1958 г после того, как к IBM 704 присоединили 6 независимых процессоров ввода/вывода, которые могли бы после получения команд работать вместе с основным процессором, компьютер переименовали в IBM 709. Это была весьма популярная модель, было продано порядка 400 экземпляров, последний из которых был выключен в 1975 году.
IBM STRETCH (1961): расслоение памяти, опережающий просмотр вперед. В 1956 году был подписан контракт между IBM и Лос-Аламосской научной лабораторией на разработку компьютера STRETCH, у которого имелось бы две принципиально важные особенности: расслоение памяти на два банка для согласования низкой скорости выборки из памяти и скорости
выполнения операций, опережающий просмотр вперед для выборки команд.
ATLAS (1963): конвейер команд. В машине ATLAS, разработанной в Манчестерском университете, был впервые выполнен конвейерный принцип выполнения команд. Выполнение команд заключалось в операнда, выборка 4 стадиях: выборка команды, вычисление адреса операнда и выполнение операции. В результате конвейеризации время выполнения команд сократилось 6 мкс до 1,6 мкс. ATLAS оказал неизгладимое влияние на архитектуру ЭВМ, и на само программное обеспечение: мультипрограммная ОС, в нем впервые была использована мультипрограммная ОС, которая основывалась на использована виртуальной памяти и системы прерываний.
CDC 6600 (1964): независимые функциональные устройства. Фирма Control Data Corporation (CDC) совместно с ее основателем, Сеймуром Р. Крэем (Seymour R.Cray) выпустила компьютер CDC-6600, являющийся первым компьютером, который задействовал сразу несколько независимых функциональных устройств. Машина пользовалась огромным успехом на научном уровне и активно вытесняла машины фирмы IBM.
CDC 7600 (1969): конвейерные независимые функциональные устройства. CDC выпускает компьютер CDC-7600, имеющий восемь независимых конвейерных функциональных устройств — конвейерной обработки.
ILLIAC IV (1974): матричные процессоры. Проект: 256 процессорных элементов (ПЭ) = 4 квадранта по 64 ПЭ,
возможность реконфигурации: 2 квадранта по 128 ПЭ или 1 квадрант из 256 ПЭ, такт 40 нс, производительность — 1 Г флоп; Работа началась в 1967 году, и к концу 1971 г. была изготовлена система из 1 квадранта, в 1974 г. она была введена в эксплуатацию; доводка велась о 1975 г; Центральная часть: устройство управления (УУ) + матрица из 64 ПЭ; УУ — это простая ЭВМ, обладающая небольшой производительностью, управляющая матрицей ПЭ; все ПЭ матрицы работали в синхронном режиме, в каждый момент времени выполнялась одна и та же команда, поступившая от УУ; ПЭ имел собственное АЛУ с полным набором команд, ОП — цикл памяти — 350 нс, каждый ПЭ имел непосредственный доступ только к своей ОП;
Сеть пересылки данных: двумерный тор со сдвигом на 1 по границе по горизонтали. CRAY 1 (1976): векторно-конвейерные процессоры. В 1972 г. С. Крэй покидает CDC и основывает свою компанию Cray Research, которая в 1976 г. выпускает первый векторно-конвейерный компьютер CRAY-1 со следующими характеристиками: оперативная память до 1 Мслова (слово — 64 разряда), цикл памяти — 50 нс, время такта — 12,5 нс, 12 конвейерных функциональных устройств, пиковая производительность — 160 млн операций/сек. Главное новшество заключалось во внедрении векторных команд, которые работали с целыми массивами независимых данных и позволяли эффективно использовать конвейерные функциональные устройства.
В параллельной обработке данных, воплощается идея одновременного выполнения нескольких действий, таких как конвейерность и параллельность.
Параллельная обработка
При выполнении устройством одной операции за единицу времени, можно сказать, что тысячу операций устройство выполнит за тысячу единиц. Если предположить, что есть пять независимых устройств, работающих одновременно, то ту же тысячу операций такая система устройств может выполнить уже за двести единиц времени. По аналогии система из N устройств ту же работу выполнит за 1000/N единиц времени. К реальной жизни это также применимо, например:
огород может быть вскопан одним солдатом за 10 часов, а рота солдат количеством 50 человек с такими же способностями при одновременной работе выкопают его уже за 12 минут — действие принципа параллельности в действии [1,2].
Самарский А.А., выполнявший в начале 50-х годов расчеты для моделирования ядерных взрывов был пионером в параллельной обработке потоков данных. Самарский интересным способом рассчитал эволюцию взрывной волны — он посадил несколько десятков человек с арифмометрами за столы, заставив их передавать данные друг другу просто на словах и откладывать необходимые цифры на арифмометрах. Можно сказать, что это
и была первая параллельная система. Не смотря на то, что расчеты водородной бомбы были мастерски проведены, их точность была довольно низка, потому что используемая сетка имела мало узлов, а время счета было слишком большим.
Конвейерная обработка
Для сложения двух вещественных чисел, представленных в форме с плавающей запятой, необходимо проделать великое множество мелких операций — сравнить порядки, выровнять порядки, сложить мантиссы, нормализовать и т.п. Все эти «микрооперации» для каждой пары аргументов процессоры первых компьютеров осуществляли последовательно одну за другой, до тех пор, пока не доходили до окончательного результата, и лишь затем обрабатывалась следующая пара
слагаемых.
Суть конвейерной обработки состоит в выделении отдельных этапов выполнения общей операции. Каждый этап, выполнив свою работу, передавал бы результат следующему, одновременно принимая новую порцию данных. Совмещение прежде разрозненных во времени операций определенно положительно влияет на скорость обработки. Например, в операции можно выделить пять микроопераций, каждая из которых выполняется за одну единицу времени.
Если есть одно неделимое последовательное устройство, то 100 пар аргументов оно обрабатывает за 500 единиц. Если каждую микрооперацию выделить в отдельный этап (или ступень) конвейерного устройства, то на пятой единице времени на разной стадии обработки такого устройства будут находиться первые пять пар аргументов, а весь набор из ста пар будет обработан за 104 (5+99) единицы времени — ускорение по сравнению с последовательным устройством почти в пять раз (по числу ступеней конвейера).
Казалось бы, конвейерную обработку можно с успехом заменить обычным параллелизмом, достаточно просто продублировать основное устройство столько раз, сколько ступеней конвейера предполагается выделить. В самом деле, 5 устройств за 100 единиц времени обрабатывают 100 пар аргументов, что быстрее времени работы конвейерного устройства. Если увеличить в пять раз число устройств, объем аппаратуры и ее стоимость значительно возрастут. Например, рассмотрим ситуацию, когда убирается конвейер на автозаводе, при этом темпы выпуска автомобилей необходимо сохранить, соответственно потребуется тысяча бригад, каждая из которых может от начала до конца собрать автомобиль, проделав сотни различных операций, причем за довольно короткое время.
Стоимость автомобиля будет колоссальной. Поэтому и возникла конвейерная обработка [2,3].
Современные параллельные системы
В настоящее время выделяют четыре направления в развитии высокопроизводительной вычислительной техники.
Векторно-конвейерные компьютеры
Особенности таких машин заключаются в наборе векторных команд и конвейерных функциональных устройствах. В отличие от традиционного подхода, векторные команды способны оперировать целыми массивами независимых данных, а значит появляется возможность эффективно загружать доступные конвейеры, т.е. команда вида А=В+С может означать не сложение двух чисел, а двух массивов. Характерный представитель данного направления — семейство векторно-конвейерных компьютеров CRAY.
Массивно-параллельные компьютеры с распределенной памятью.
Построение компьютеров этого класса отличается простой идеей: каждый серийный микропроцессор, оборудуются своей локальной памятью, затем соединяются посредством некоторой коммуникативной среды. У такой архитектуры имеется масса достоинств: для увеличения производительности достаточно увеличить количество процессоров, оптимальная конфигурация легко подбирается в случае, если известна требуемая вычислительная мощность.
Однако, существует значительный минус, превосходящий многие плюсы. В данных компьютерах межпроцессорное взаимодействие идет намного медленнее, чем происходит локальная обработка данных самими процессорами. В связи с этим, очень сложно написать эффективную программу для таких компьютеров, для некоторых алгоритмов иногда просто невозможно. Примеры таких компьютеров: Intel Paragon, IBM SP1, Parsytec, в некоторой степени IBM SP2 и CRAY T3D/T3E, хотя влияние указанного минуса в этих компьютерах значительно меньше. Сети компьютеров, которые все чаще рассматривают как достаточно дешевую альтернативу крайне дорогим компьютерам, так же можно отнести к этому же классу.
Параллельные компьютеры с общей памятью
Вся оперативная память данных компьютеров разделяется несколькими одинаковыми процессорами. Проблемы предыдущего класса решены, но добавились новые — нельзя по технически причинам сделать большим число процессоров, которые имели бы доступ к общей памяти. Примерами данного направления многие многопроцессорные SMP-компьютеры или, например, отдельные узлы компьютеров HP Exemplar и Sun StarFire.
Комбинированные системы
Последнее направление скорее не самостоятельное, а просто комбинация предыдущих трех. Сформируем вычислительный узел из нескольких процессоров (традиционных или векторно-конвейерных) и общей для них памяти. При нехватке вычислительной мощности, можно объединить несколько узлов высокоскоростными каналами. Подобная архитектура называется кластерной. По данному принципу построены Sun StarFire, NEC SX-5, CRAY SV1, HP Exemplar, последние модели IBM SP2 и другие.
Данное направление является в настоящий момент наиболее перспективным для конструирования компьютеров с рекордными показателями производительности [2,5].
Уровни параллелизма
В зависимости от того, на каком уровне должен обеспечиваться параллелизм, используются те или иные методы и средства реализации. Различают следующие уровни параллелизма.
Микроуровень. Выполнение команды разделено на фазы, а фазы нескольких соседних команд могут быть перекрыты за счет конвейеризации. Достичь данный уровень возможно на ВС с одним процессором.
Уровень потоков. Задачи разбиваются на части, которые могут выполняться параллельно (потоки). Данный уровень достигается на параллельных ВС.
Уровень команд. Несколько команд выполняются параллельно, в процессоре размещаются сразу несколько конвейеров. Характерен для суперскалярных процессоров.
Уровень заданий. Независимые задания одновременно выполняются на разных процессорах, взаимодействие друг с другом практически не происходит. Уровень характерен для многопроцессорных и многомашинных ВС.
Крупнозернистый параллелизм заключается в том, что каждое параллельное вычисление достаточно независимо от остальных, к тому же отдельные вычисления требуют относительно редкий обмен информацией между собой. Единицами распараллеливания являются большие и независимые программы, включающие тысячи команд. Операционная система обеспечивает данный уровень параллелизма.
Для эффективного параллельного исполнения необходимо балансировать между степенью гранулярности программ и величиной коммуникационной задержки, которая возникает между разными гранулами. Для минимальной коммуникационной задержки лучше всего подходит мелкоструктурное разбиение программы. В таком случае действует параллелизм данных. Если коммуникационная задержка большая, то лучше использовать крупнозернистое разбиение программ [1,2].
· Плоско панельные (см. рисунок 2.9).
Рисунок 2.7. Настольный ПК | Рисунок 2.8. Портативные ПК | Рисунок 2.9. Плоско панельный ПК |
Настольные компьютеры (Desktop) являются наиболее распространенными. Это и офисные, и обучающие, и персональные компьютеры начального уровня. Все они имеют практически одинаковые характеристики: 32- или 64-разрядную архитектуру, шинную организацию системы, стандартизованные аппаратные и программные средства.
Портативные (переносные) компьютеры: ноутбуки, субноутбуки, нетбуки, карманные – отличаются мобильной конструкцией и наличием комбинированного питания. Субноутбуки, нетбуки являются облегченными вариантами ноутбука. Граница между ноутбуками и субноутбуками весьма условна. Карманный персональный компьютер(КПК) — это портативное вычислительное устройство, которое обладает широкими функциональными возможностями, имеет сенсорный экран и специальную ручку (стилус) для работы с экраном. Английское название КПК – Personal Digital Assistant (PDA) на русский язык можно перевести как «личный цифровой секретарь». Другие названия Palm PC и Pocket PC ассоциируются с определенной торговой маркой фирм Palm Computing и Microsoft.
Клавиатура у портативных компьютеров чаще всего укороченная: 84-86 клавиш (вместо 101 у настольных ПК), но к ним может подключаться разъем для полной клавиатуры.
Для управления курсором вместо мыши используются трекболы, трекпойнты или трекпады — это неподвижные манипуляторы с вращающимися шарами или сенсорными кнопками.
Плоско панельные (Panel PC), имеют сенсорный экран с "дружественным интерфейсом", в одном корпусе совмещены системный блок и цветной, жидкокристаллический дисплей, но возможно подключение клавиатуры и "мыши". Панельные ПК предназначены для использования в банках, торговле, транспорте, медицине и др.
СУПЕРЭВМ
Рисунок 2.10. СупеЭВМ | СуперЭВМ – это мощные многопроцессорные вычислительные машины (см. рисунок 2.10) с быстродействием сотни миллионов – десятки миллиардов операций в секунду. Суперкомпьютеры используются для решения сложных и больших научных задач (метеорология, гидродинамика и т. п.), в управлении, разведке, в качестве централизованных хранилищ информации и т.д. |
Архитектура суперкомпьютеров основана на идеях параллелизма и конвейеризации вычислений.
В этих компьютерах параллельно, то есть одновременно, выполняется множество похожих операций (это называется мультипроцессорной обработкой). Таким образом, сверхвысокое быстродействие обеспечивается не для всех задач, а только для задач, поддающихся распараллеливанию.
Конвейерная обработка — это работа по принципу конвейера, когда выполняется один шаг производственного процесса, а на всех рабочих местах в одно и то же время обрабатываются различные изделия на всевозможных стадиях. По такому же принципу устроено арифметико-логическое устройство суперкомпьютера.
Отличительной особенностью суперкомпьютеров являются векторные процессоры, оснащенные аппаратурой для параллельного выполнения операций с многомерными цифровыми объектами — векторами и матрицами.
Однако, приобрести суперкомпьютеры может только крупная фирма или научная организация, поскольку стоимость суперкомпьютера не сравнима со стоимостью компьютеров, находящихся в массовом производстве.
Прогресс в области сетевых технологий предопределил появление недорогих, но эффективных кластерных вычислительных систем, фактически являющихся одним из направлений развития компьютеров с массовым параллелизмом (MPP - massive parallel processing).
Рисунок.2.11. Структура кластера | Вычислительныйкластер – это совокупность компьютеров, объединенных в рамках некоторой сети для решения одной задачи. Общая структура кластера показана на рисунке 2.11. |
В качестве вычислительных узлов обычно используются доступные на рынке многопроцессорные серверы. Выбор конкретной коммуникационной среды определяется многими факторами: особенностями класса решаемых задач, доступным финансированием, необходимостью последующего расширения кластера и т.п.
Персональные компьютеры
Рисунок.2.12. Apple II | История создания ПК Первой начала развивать направление ПК фирма Apple, которая выпустила на рынок первый ПК Apple II, представленный на рисунке 2.12. |
Компьютер Apple II отличался от большинства своих "современников" тем, что это не был вполне законченный аппарат, там оставалась некоторая свобода для любительских упражнений: в Apple II можно было устанавливать дополнительные интерфейсные платы, платы памяти и пр. Именно эта особенность, которую впоследствии стали называть "открытой архитектурой", и сделалась его основным преимуществом. Успеху Apple II способствовали еще две новинки. Во-первых, это был разработанный в 1978 г. недорогой накопитель на гибких дисках, во-вторых, первая программа для коммерческих расчетов – электронная таблица VisiCalc, которую создали два студента Дэн Бриклин и Боб Фрэнкстон. Именно эта программа "пересадила" многих бизнесменов с калькулятора за микрокомпьютер.
Рисунок.2.13. IBM PC | В начале августа 1981 г. корпорация IBM, которая производила Большие ЭВМ, организовала пресс-конференцию, на которой было объявлено о выпуске принципиально новой модели компьютера – IBM PC (см. рисунок 2.13). |
Можно считать поворотным именно этот момент, но на самом деле революция началась на несколько лет раньше. Выпуск IBM PC обозначил новую фазу революции: захват персональными компьютерами совершенно нового рынка – корпоративного.
Рисунок.2.14. Macintosh | Однако самым важным событием 1984 г. (если не считать появления PC AT) был выпуск первых компьютеров Macintosh (см. рисунок 2.14) с графическим интерфейсом, манипулятором "мышь" и многими другими атрибутами пользовательского интерфейса, без которых не мыслятся современные настольные компьютеры. |
Тем не менее, корпорация IBM смогла завоевать рынок, поскольку она сотрудничала с фирмой Microsoft по вопросам создания программных продуктов в достаточно большом диапазоне и с фирмой Intel по вопросам создания микропроцессоров. Фирма Apple увлеклась усовершенствованием периферии, в частности, мониторы с прекрасной графикой, а программы были ориентированы первое время только на игры, издательскую деятельность и обслуживание (торговля).
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой.
Читайте также: