Раздел: Технические науки Многопроцессорные системы. ВВЕДЕНИЕ Универсальные приборы, эквивалентные по значению транзистору, которые создаются на тонких кремниевых пластинках СБИС, в настоящее время так миниатюрны и дешевы, что чрезвычайно большое число процессоров может быть объединено в единую сеть. В 1978г. 100. 000 элементов было успешно интегрировано в ЗУ объемом 64Кбит. В 1981г. фирма Hewlett-Packard объявила о создании микропроцессорного кристалла, содержащего 450. 000 элементов. Следовательно, многопроцессорные компьютеры "среднего класса" с числом кристаллов от нескольких тысяч и до нескольких миллионов скоро станут рельностью. Т. е. отдельный компьютер может содержать 10 х 10 =10 элементов. Такие микропроцессорные системы могут быть очень успешно использованы для решения проблем, примером которых является моделирование в трех измерениях атмосферных масс для прогноза погоды, моделирование трехмерных зон земной коры, моделирование обширных сетей нейронов, составляющих мозг человека, и очень большой набор преобразований, необходимых для восприятия сложного поведения пространственных объектов. Для таких компьютеров обработка изображений и восприятие образов станут основными областями применения, т. к. они выдвигают прроблемы обработки информации, решение которых требует очень больших и быстродействующих компьютеров с высоким паралелизмом. Действительно, как показывают исследования, основные вычислительные процедуры при решении большинства задач обработки сигналов в реальном масштабе времени могут быть сведены к набору операций над матрицами. Широкие исследования в области вычислительных методов линейной алгебры привели к созданию устойчивых пакетов программ для выполнения этих операций с помощью однопроцессорных компьютеров последовательного действия. Для обеспечения выполнения большинства алгоритмов в реальном масштабе времени требуется на порядок увеличить скорость вычислений. Несмотря на достижения в технологии цифровых интегральных схем(ИС), нельзя просто рассчитывать на дальнейшие успехи в производстве быстродействующих элементов вычислительных устройств, и увеличение на несколько порядков производительности процессора для обработки в реальном масштабе времени должно осуществляться эффективным использованием параллелизма при вычислениях. Самым непосредственным способом реализации параллельной обработки сигналов является простое присоединение ряда процессоров к общей шине. Действительно, большинство современных серийных микропроцессорных комплектов отличается такой мультипроцессорностью. К этой мысли пришли не сразу. На идею о целесообразности использования структуры из повторяющихся модулей навела высокая стоимость разработки проекта высокопараллельного СБИС-процессора. В духе этих тенденций развитие архитектуры микропроцессорных систем сводится к построению многопроцессорных систем различных типов и разрешению попутно появляющихся задач. Мы остановимся на основных направлениях развития многопроцессорных систем и на проблеме взаимодействия процессоров с магистралями(затронем историю развития модульных систем из магистрально-модульных ). Традиционные однопроцессорные последовательные ЭВМ и многопроцессорные сети. Обычная "последовательная универсальная ЭВМ" строится, как правило, посредством подключения быстродействующей памяти к единственному центральному процессору(ЦП), который выбирает команды из памяти, декодирует каждую из них, выбирает данные(в соответствии с предписанием в команде), хранящиеся в указанных ячейках памяти, выполняет указанные операции и запоминает результаты в предписанных ячейках. Кроме того, к системе должны быть подключены устройства ввода и вывода. Конвейерные системы компьютеров(или процессоров). Каждый процессор в такой системе многократно выполняет одну и ту же команду над последовательностью данных, проходящих через систему. Это значит, что если одна и та же последовательность команд должна выполняться над большим числом различных блоков данных, может быть построена конвейерная система длиной во всю последовательность команд и данные могут быть пропущены через процессоры системы П1-ПN рис. 2. Конвейер из N процессоров, через которые проходят данные. Устройство ввода ->П1->П2->П3->... ->ПN-> Устройство вывода В такте 1 процессор П1 будет выполнять первую команду над первым блоком данных. В такте 2 процессор П2 будет выполнять вторую команду над первым блоком данных, а П1-первую команду над вторым блоком данных, и т. д. Если в конвйере имеется N процессоров, программа будет выполняться приблизительно в d*N раз быстрее, чем в однопроцессорной ЭВМ(d-коэффициент, учитывающий, что нет необходимости в выборке и декодировании следующей команды, поскольку каждый процессор осуществляет выборку один раз, а затем многократно повторяет выполнение одной и той же команды). Наиболее высокопроизводительные из современных "супер-ЭВМ", например, Cray-1 и CDC-255 фирмы Seymour Cray содержат подобные конвейеры из примерно десятка очень мощных и дорогостоящих процессоров для выполнения векторных операций над массивами данных. Наиболее мощный из построенных к концу 90х г. г. конвейеров-конвейер многопроцессорной системы CytoComputer, специализированный на выполнение операций обработки изображений. Каждый из процессоров машины CytoComputer гораздо проще и меньше, чем в ЭВМ Cray-1, но их общее число-113. Используя новые кристаллы СБИС(один процессор в кристалле), проектируемые на будущее системы планируется построить из еще большего числа процессоров, которые могут быть объединены в конвейеры(теоретически произвольной длины). Матричные структуры из очень большого числа простых процессоров. В 80е г. г. были построены 3 очень большие двумерные системы. В их число входят: -распределенный матричный процессор DAP(distributed array processor) размером 64Х64, спроектированный фирмой ICL. -сотовый логический процессор изображений CLIP-4(cellular logic image processor) размером96Х96, разработанный в лондонском университетском колледже, -и большой параллельный процессор MPP(massively parallel processor)размером 128Х128, спроектированный фирмами GoodYear-Aerospace и NASA Goddard. В этих системах каждый из тысяч процессоров выполняет одну и ту же команду над различными потоками данных. Данные, которые необходимо обработать, и объем которых в идеале соответствует размерам матрицы процессоров, вводятся в систему таким образом, что каждый из процессоров имеет в собственной памяти одно подмножество таких данных, например, один элемент растра. Затем каждый из процессоров обрабатывает данные, хранящиеся в собственной памяти, а также данные его ближайших соседей. рис. 3. Матричные структуры ЭВМ. а) П-П-П-П-П-П-П-П П-П-П-П-П-П-П-П П-П-П-П-П-П-П-П П-П-П-П-П-П-П-П П-П-П-П-П-П-П-П П-П-П-П-П-П-П-П П-П-П-П-П-П-П-П П-П-П-П-П-П-П-П Двумерная матрица из 8Х8 процессоров. Каждый процессор соединен с 4мя соседними по горизонтали и вертикали(в других структурах процессоры могут быть соединены в четверки по диагоналям или каждый процессор может быть соединен с 6ю соседними). Каждый процессор непосредственно связан с общей памятью(на рисунке не показано), а также по изображенным линиям связи с памятью 4х соседних. б) П-П-П-П-П-П-П-П Ввод->R-R-R-R-R-R-R-R-> Вывод М-М-М-М-М-М-М-М- Матрица из 1Х8 процессоров, каждый из которых соединен с собственной памятью М, а также(через регистры R)с вводом и выводом(иначе это можно рассматривать как вид на приведенную выше структуру 8Х8 с одной стороны, показывающий, что каждый из процессоров(П) одномерной матрицы 1Х8 двумерной структуры размером 8Х8 соединяется с собственной памятью М и вводом-выводом через регистры). Такие большие матричные системы возможны только благодаря тому, чтокаждый процессор выполнен настолько простым, насколько это возможно, и все они выполняют одну и ту же команду(т. е. необходим только один контроллер). При использовании СБИС-технологий будущего такие параллельные матричные системы будут становиться все более привлекательными из-за простоты и высокой повторяемости их модульной структуры. Вариации более общих структур сетей. Из-за ограниченных возможностей матриц, вызванных в основном соображениями стоимости(одноразрядные процессоры, единый контроллер и связи только с соседними процессорами) предпочтительно иметь дело с сетями(процессоров) других видов. Было разработано много типов сетей, включая кольцевые, n-кубические, решетчатые, звездные, "снежинка", чечевицеобразные, древовидные, х-древовидные, пирамидальные и множество структур, описываемых другими графами. В нашем случае граф-просто отображение набора подсистем, объединенных в единый мультипроцессор; иногда узлами графа являются отдельные процессоры или память, а не полные ЭВМ. Однако таких систем в действительности было построено очень мало и только 2 из них с числом процессоров больше 50:Cm и Genoa machine. Число вариантов построения практически бесконечно, поскольку они включают все мыслимые способы соединения все возрастающего по мере совершенствования и удешевления технологии числа процессорных элементов. Среди наиболее привлекательных сетей выделяются те, структура которых отражает выполняемый алгоритм. Наиболее интересными примерами таких структур являются древовидные и матрицы изменяемой конфигурации из обычных ЭВМ. Деревья имеют хорошую структуру для большого числа задач, в которых информация сортируется, сравнивается или каким-либо образом уплотняется и реорганизуется, а также где она запоминается, извлекается или передается. Матрицы имеют хорошую структуру для локальной передачи информации. Наилучшими считаются пирамидальные многопроцессорные системы, поскольку они очень эффективны не только при параллельной локальной обработке, но и при глобальных передачах и преобразованиях информации. Архитектура проблемно-ориентированных систем для преобразования потоков данных. В многопроцессорной сети наилучшим образом можно разместить проблемно-ориентированный алгоритм-операции организуются как на сборочном конвейере, а информация продвигается также как бы через конвейер. Это дает поток данных(типа транспортного) о двумерном изображении, и этот поток проходит по трехмерной структуре. Большие двумерные образы прекрасно размещаются в больших матричных структурах, и большие матричные многопоцессорные системы способны очень эффективно производить последовательности операций по обработке поэтапно преобразуемого изображения. Пирамидальные процессоры в дополнение к этому позволяют программисту свертывать и сжимать запоминаемую информацию о преобразованном изображении, когда необходимо сократить объем этих данных. Представляется также, что пирамидальные процессоры потенциально должны обеспечивать чрезвычайно высокую мощность при обработке потоков изображений в реальном масштабе времени благодаря конвейерной организации обработки таких двумерных изображений при сложной последовательности операций поэтапно нарастающей глобальности, выполняемых в различных слоях трехмерной пирамиды. Соответствие матричных и пирамидальных процессоров технологии СБИС. Процессоры, используемые в матричных и пирамидальных системах, обычно стремятся сохранить максимально простыми. Почти во всех вариантах систем использовались одноразрядные процессоры с числом вентилей от 100 до 800. Причиной этого является то, что для достижения хотя бы четырехкратного увеличения скорости и вычислительной мощности обработки благодаря последовательному наращиванию параллельно работающих процессоров разработчики систем выбирали наиболее простые из возможных одноразрядные процессоры, обеспечивая выполнение К одноразрядных операций для обработки К-разрядных чисел или строк. По-видимому, объем памяти, необходимый каждому процессору, является функцией от общего объема памяти, необходимого для обработки изображений или других наборов данных, поступающих в систему. Поэтому каждый процессор нуждается в памяти относительно небольшого объема (реализованные системы снабжены памятью от 32 до 4096 бит на процессор). Процессоры объединяются в высокорегулярную микромодульную систему, которая является одной из наиболее пригодных для реализации в виде СБИС при высокой плотности упаковки. В настоящее время в одном кристалле СБИС выпускается по 4, 8 и более таких одноразрядных процессоров. Впоследствии должно стать возможным производство в одном кристалле сотен и даже тысяч процессоров с собственной памятью для каждого. Это резко контрастирует с реализацией в СБИС обычных однопроцессорных систем, для которых(даже при возможности упаковки одного или нескольких процессоров на одном кристалле)останется необходимым наличие нескольких кристаллов для работы с несколькими миллионами байт быстродействующей памяти каждого из процессоров. Многопроцессорные матричные и пирамидальные системы из 1024 и более процессоров можно будет построить на основе матрицы размером 16Х16, т. е. всего из 256 кристаллов, в каждом из которых содержится матрица размером 64Х64 из 4096 400-элементных процессоров с памятью объемом 512 бит. Такая матрица или пирамида, основанием которой была бы матрица, содержащая не более одной трети числа процессоров в основании, может быть реализована на достаточно небольшом числе кристаллов со степенью интеграции 10, упакованных на одной пластине. Высокорегулярная микромодульная матричная или пирамидальная структура наиболее привлекательна для изготовления отказоустойчивой СБИС с интеграцией на уровне пластины. Модульные многопроцессорные информационно-измерительные системы. В 60х г. г. развитие вычислительной техники привело к необходимости стандартизировать не только размеры модулей, но и каналы связи между ним. Это было сделано к 1969г., когда опубликовали европейский стандарт EUR-6100 на модульную систему КАМАК(CAMAC), разработанную ядерными электронщиками ведущих европейских институтов для оснащения сложных экспериментов, например, на ускорителях атомных частиц. Одно из прочтений слова CAMAC-Computer Applications for Measurements and Control-применение компьютеров для измерения и управления. В электронной системе модулем является печатная плата с узкой передней панелью и плоским многоконтактным разъемом на противоположной стороне платы. Модули вставляют в каркас с направляющими, в которых скользит плата. Задняя стенка каркаса выполнена в виде платы с ответными частями разъемов, которые соединены печатными или навесными проводниками, образующими электрические магистрали для передачи кодированной информации. По специально назначенным проводникам в модули подается электрическое питание. Все присоединительные размеры модулей и каркасов строго стандартизованы. Определены длительности и амплитуды электрических сигналов, а также напряжения питания модулей. Впервые в международной практике были стандартизованы не только размеры, но и логический протокол-правила передачи информации по линиям магистрали. В дорогостоящей магистрали КАМАК линии были использованы весьма нерационально:24 линии для чтения, 5-для передачи команд и только 4 линии были определены для передач всего-навсего 16ти адресов в модуле. Все линии начинались в крейт-контроллере-крайнем правом модуле, который служил для связи магистали каркаса-крейта с внешним мини-компьютером, работающим в ином логическом протоколе ("crate" по-английски означает плоский ящик с отделениями, например, ящик стекольщика). Налево в магистраль контроллер передавал для 24х модулей информацию, выработанную компьютером, а направо шла из модулей необработанная, но уже закодированная информация, отображающая величины, измеренные датчиками в эксперименте. Двунаправленность интерфейсного контроллера была отображена в эмблеме системы КАМАК в виде двуликого бога Януса. Через 3-4 года после публикации стандарта десятки фирм в разных странах выпускали модули КАМАК более 300 типов как для экспериментов, так и для контроля и управления технологическими процессами на производствах. Подобно железнодорожным системам, электрические модульные системы также долговременны. Если модули достаточно широко распространились и их количество превзошло некий критический уровень, то даже морально устаревшую аппаратуру оказывается выгодным эксплуатировать. Большой парк накопившихся разнообразных модулей позволяет в течение нескольких дней, а то и часов, скомпоновать систему с новыми характеристиками. Системе КАМАК уже более 25 лет, но она все еще используется как с ПЭВМ, так и с микропроцессорами, встроенными непосредственно в контроллер. Микропроцессоры в модулях. Создатели системы КАМАК в конце 60х г. г. сами начали применять только что появившиеся интегральные микросхемы, однако у них не хватило смелости предположить, что в 1972г. в электронике начнется революция-появится микропроцессор. Неудобства магистрали КАМАК заставили электронщиков искать решения, позволяющие эффективно использовать качественно новую ИС. Введение микропроцессора в модули превращало их в микрокомпьютеры, а крейты-в многопроцессорные системы, которые нуждаются в емкой памяти с большим количеством адресов. 16 адресов в модуле КАМАК оказались совершенно недостаточными, поэтому ведущие электронные фирмы Motorola и Intel к середине 70х г. г. создали модульные системы 3го поколения:Versabus и Multibus, магистрали которых содержали 16, а затем и 20 адресных линий, что обеспечивало емкость системы около 1млн. адресов. Потребовались и новые функции в логическом протоколе. Некоторые из процессорных модулей выполняли самые важные задачи в системе, а другие включались в работу реже, поэтому пришлось устанавливать приоритеты модулей на право занятия магистрали, а также разрешать конфликтные ситуации, когда 2 или больше модулей одновременно пытаются занять магистраль. Для этого потребовались дополнительные линии. Чтобы ограничить общее количество линий, стали использовать одни и те же линии для передачи как адресов, так и данных:сначала передавали адрес(несколько битов которого являются адресом модуля), а затем линии переключали на регистр данных. Эти новшества заложили основы магистрально-модульных многопроцессорных информационно-измерительно-управляющих систем- МММИИУС. Что было дальше. Для завоевания мирового рынка Motorola быстро перевела свою систему на европейские конструктивы, назвав ее Versabus Module EuropeBus, сокращенно VME, а Intel в европейских же конструктивах выпустил новую систему Multibus-2, использовав новшества, реализованные в системе Fastbus, созданной ядерными электронщиками США к 1982г. Во всех трех системах слова адреса и данных увеличены до 32х разрядов, что обеспечило емкость общей памяти системы в 4 млрд. адресов. VME первой вышла на международный рынок, а более совершенная система Multibus-2 опоздала и не получила должного распространения, хотя эту аппаратуру начали выпускать более 100 фирм. Аппаратуру VME и ее улучшенные модификации выпускают более 300 фирм в разных странах, несмотря на архаичность базовой структуры системы. В России собирают модули VME, но на иностранных комплектующих и в небольших объемах. В ПЭВМ также есть магистраль, обслуживающая процессор, платы памяти и устройства ввода-вывода информации. В компьютере PS/2 фирмы IBM к магистрали "Microchannel" могут быть присоединены до восьми 16-разрядных процессорных модулей или до четырех 32-разрядных модулей. Архитектура "Microchanne" специализирована на структуру микропроцессоров Intel. В стандарте Fastbus была определена локальная информационная сеть произвольной конфигурации, работающая в логическом протоколе, впервые едином для модулей, крейтов и сети. Скорость передачи информации через магистраль доведена до рекордного на те времена значения 80 Мбайт/сек., для этого длительность фронтов импульсов пришлось уменьшить до 10нс - в 10 раз короче, чем в системе КАМАК. Развитие МАГИСТРАЛЬНО- модульных систем завершает разработка с громким названием Futurebus("магистраль будущего")по стандарту США 1991г. В этой системе сделано одно принципиальное добавление, учитывающее особенность многопроцессорных компьютеров. В таких системах каждый микропроцессор имеет в своем распоряжении вспомогательную кэш-память. Во время выполнения параллельных программ у одного из процессоров появляется промежуточный результат, необходимый другим процессорам для дальнейшей работы. Этот результат нужно быстро передать в кэш-памяти нуждающихся процессоров. Процедура таких передач как раз и предусмотрена в стандарте Futurebus. Отказ от магистрали-переход к РСИ. Прогресс технологии микроэлектроники привел к тому, что в наше время размеры элементов в микросхемах (транзисторов, резисторов, конденсаторов)удалось уменьшить до 0. 6-0. 8 мкм, а число элементов в одном кристалле увеличить до нескольких миллионов. Например, микропроцессор Pentium cодержит 3 млн. транзисторов, имеет соственную встроенную кэш-память и работает с частотой до 100 Мгц. Если несколько таких процессоров подсоединить к одной магистрали общего пользования, то их работа становится неэффективной:процессор, быстро подготовивший промежуточный результат, занимает магистраль для передачи данных другому процессору, а остальные процессоры вынуждены простаивать в течение относительно медленной передачи. Магистраль, бывшая в 70-80х г. г. верхом достижений, к концу 80х годов стала узким местом, нужно было искать новое решение. Специалисты, создававшие Fastbus и Futurebus+, в 1988 г. объединились для создания системы, способной решить новые задачи. Была начата разработка стандарта, известного сейчас как ANSI/IEEE Std 1596-1992 Scalable Coherent Interface-SCI, в русском переводе-Расширяемый Связный Интерфейс, РСИ. рис. 4. Модель узла РСИ. Принцип магистрали общего пользования был отклонен в начале исследований. Решили, что в новой системе узлы следует соединять индивидуальными связями, причем информация должна передаваться по каналам связи только в одном направлении. Узел получает информацию из входного канала в дешифратор адреса. Если сообщение адресовано данному узлу, оно через дешифратор поступает в промежуточную память FIFO с очередью типа "первым вошло-первым вышло" и далее проходит на прикладные схемы узла для обработки, например, микропроцессорами и транспьютерами. Если сообщение адресовано другому узлу, оно через проходную FIFO и переключатель передается в выходной канал к следующему узлу. Если ранее уже началась выдача обработанной информации из выходной FIFO, передача проходящей информации задерживается до окончания выдачи. Можно заметить, что узлы РСИ действуют подобно железнодорожному узлу:если со станции выходит поезд и выходной путь занят, то приходящий поезд направляют на запасной путь для отстоя;если же состав адресован именно этому узлу, то его вагоны сортируют и подают на разгрузочные пути. Последний из цепочки узлов РСИ соединяется с первым узлом-образуется колечко из нескольких узлов связей. Наименьшее колечко состоит из 2х узлов. Кольцеобразная структура позволяет любому узлу получать подтверждение в приеме своего сообщения. Для этого адресованный узел сразу же после приема сообщения вырабатывает эхо-сообщение и передает его в выходной канал, чтобы оно прошло по колечку к узлу, вызвавшему первичное сообщение. Предусмотрены специальные узлы-агенты, имеющие выходы на боковые каналы, для соединения с другими колечками иными устройствами, выполняемыми в других стандартах. При помощи интерфейсных агентов конкретная система может быть расширена добавлением новых колечек с образованием сети произвольной конфигурации. РСИ является открытой системой, все составляющие которой работают в едином логическом протоколе и не требуют чуждых интерфейсов. рис. 5. Применение системы РСИ. У-узел РСИ, А-агент, М-агент-мост, П-агент-переключатель, РС-рабочая станция в стандарте РСИ, VME-крейт VME, ПК-персональный компьютер, ПКР-персональный компьютер в стандарте РС, Э-сеть Ethernet. Слово "связный" в названии системы означает, что в стандарте предусмотрены логические средства для образования связной группы кэш-памятей, получающих идентичную обновленную информацию. Связность устанавливается программно при помощи кодов-указателей адресов тех узлов, которые должны войти в связную группу. Затем процессор, создавший новую информацию, быстро выполняет ее запись в основную память и в группу кэшей. рис. 6. Запомининие в кэшах связной кэш-строки при помощи кодов-указателей адресов. Система РСИ-модульная, но не магистральная. Поскольку магистраль общего пользования в ней не понадобилась, из аббревиатуры МММИИУС исчезла одна буква М. Физический облик ММИИУС в стандарте РСИ может быть очень разнообразным:от персональной рабочей станции до суперкомпьютера, содержащего тысячи микропроцессоров, и транспьютеров;от одиночного персонального компьютера в комнате до информационной сети протяженностью десятки километров, объединяющей множество компьютеров и измерительно-управляющих устройств. Для компоновки аппаратурных систем в стандарте определены каналы связи 2х типов. Для передачи сообщений между модулями в стандартизованном каркасе служат 18 параллельных печатных линий на задней плате. Передачи между обособленными узлами выполняются последовательными кодами-по коаксиальному кабелю на расстоянии десятки метров или по оптоволоконному кабелю на километры и более. Скорости передач рекордные:при параллельной передаче 1 Гбайт/сек на частоте 250 МГц, при последовательной-1 Гбит/сек. Объем полного адреса-64 разряда, причем наиболее значимые 16 разрядов выражают адрес узла в целом, поэтому в аппаратурной системе максимальное число узлов может быть равно 2 =65536. Остальные 48 разрядов определяют допустимое число адресов в каждом узле-около 280 трлн. Если в каждом адресе хранить стандартное 64-разрядное слово данных, то максимальный объем информации в узле составит 1. 8 трлн. авторских листов по 40. 000 знаков или 3. 8 млрд. книг "Советский Энциклопедический словарь". На практике полный объем памяти не используют, но запас нужен для удобства программирования. Стандартом предусмотрены и малые дешевые системы с 32-разрядным адресом. В 1995 г. РСИ стал международным стандартом, он принят в качестве базовой системы в ВВС США и в ВМФ США и Канады. Благодаря агентам-мостам аппаратура РСИ будет соединена со старыми магистрально-модульными системами и уже существующими сетями. Говоря языком рекламы, РСИ-мост в ХХ1 век-век информатики, основанной на модульных открытых информационных сетях. Симметричная многопроцессорная обработка. Еще один пример фундаментальной компьютерной технологии, которая от уникальных вычислительных систем проложила себе путь к относительно массовым и недорогим платформам, используемым в локальных вычислительных сетях, - симметричная многопроцессорная обработка (Symmetric MultiProcessing-SMP). Сущность SMP По сути, для многопроцессорной обработки всегда требуются и соответствующие аппаратные платформы, и операционные системы(ОС). Однако ОС могут использовать многопроцессорные платформы несколькими различными способами. При асимметричной многопроцессорной обработке процессы прикладных программ назначаются конкретному процессу на аппаратной платформе. Нити каждого процесса должны ждать, пока назначенный им процессор не освободится. Такой метод, как правило, менее эффективен, чем симметричный метод. Симметричная многопроцессорная обработка предполагает, что все процессоры имеют одинаковые возможности. В SMP-модели нагрузка динамически распределяется между процессорами, так что невозможна ситуация, в которой одни ЦП перегружены, в то время, как другие ничем не заняты. Есть 2 общие реализации SMP, известные как сильносвязанная и слабосвязанная . Сильносвязанная базируется на схеме, согласно которой процессоры совместно используют данные из совокупности общих ресурсов, прежде всего, из общей памяти . Слабосвязанные системы используют механизм обмена сообщениями между процессами для совместного использования ресурсов, когда это необходимо. В некоторых слабосвязанных системах каждый процессор может даже иметь свой собственный контроллер диска и другие подсистемы. Чтобы полнее воспользоваться преимуществами SMP при организации многозадачности, выполнение нитей процесса контролируется с помощью приоритетных прерываний. Приоритетное прерывание позволяет ОС поддерживать контроль над программами:какую программу и когда запускать, так что сбившиеся программы не могут поработить систему и вызвать проблемы. Основным преимуществом такой архитектуры является то, что прикладные программы имеют в своем распоряжении столько ЦП, сколько имееется в наличии у сервера. Т. к. ОС занимается планированием работы процессоров, прикладным программам нет необходимости знать о количестве имеющихся процессоров. ОС назначит каждую нить первому свободному процессору. Программа-планировщик в ядре ОС позволяет распределять нагрузку и в конечном итоге выполнять программы точно с той же скоростью, с какой несколько ЦП могуут с ними справиться. Масштабируемость. Конфликты на шине. Часто встречающиеся словосочетания типа "несколько процессоров", "многопроцессорные системы" и т. п. наводят на вопрос, можно ли сказать, чему равно оптимальное число процессоров в системе? Необходимо иметь в виду, что эффективность не растет линейно при добавлении еще одного процессора. Вернее, она растет линейно с увеличением числа процессоров только до тех пор, пока не наступают ограничения, связанные с проблемами соединения с общей шиной. Согласно известному предположению Минского для широкого класса алгоритмов конфликт между N процессорами с коллективным распределением ресурсов, соединенными с общей шиной, ограничивает повышение производительности величиной log2N. Современные конструкторы "суперкомпьютеров" использовали ряд параллельных структур и достигли повышения производительности в соответствиис законом Амдала:N/log2N. Рассмотрим подробнее суть конфликтов на шине. Сетевая ОС должна управлять каждым процессором и, следовательно, взаимодействием процессора с внутренними вызовами и периферийными устройствами на шине(поэтому, собственно, производительность и не растет линейно). Когда нить в однопроцессорной системе не может более выполняться до осуществления некоторого условия, процессор маскирует программное прерывание так, что никакой другой процесс не может воспользоваться данным ресурсом. Затем он сохраняет состояние нити, чтобы выполнение кода могло возобновиться при осуществлении условия. В системе с одним процессором маскированное прерывание предотвращает использование процессором ресурса. Кроме того, достаточно просто сохранять описание уровней прерывания и масок, контролирующих доступ к структурам данных ОС. С добавлением каждого нового процессора эта задача становится все более трудной. ОС для SMP-платформы должна уточнить, что только один процессор в данный момент выполняет сегмент кода, который меняет глобальную структуру данных. Словом, в SMP-среде этот механизм (маскированное прерывание) не гарантирует, что различные процессы не будут иметь доступа к тому же самому ресурсу через другое прерывание. Для управления прерываниями между процессорами иногда используется(например, Windows NT Advanced Server)метод взаимоблокировки. По сути, взаимоблокировка является программной процедурой, которая блокирует доступ второго процессора к уже занятому ресурсу. Такой метод позволяет предотвратить порчу процессорами глобальных структур данных, однако при непродуманной реализации он может привести к тому, что процессоры будут бездействовать в течение длительного периода, ожидая освободившийся замок блокировки. По мере добавления новых процессоров к системе накладные расходы на управление конфликтами возрастают, и это уменьшает отдачу от ОС, ориентированных на симметрично-многопроцессорную обработку. Это обстоятельство по идее будет как сейчас, так и впредь ограничивать число процессоров, которое оправдано установить в SMP-платфорфу. Действительно, наиболее узким местом, как установлено, является системная шина, а ее пропускная способность, несмотря на все нововведения, только-только поспевает за ростом производительности ЦП, а тут еще надо справиться с ростом их числа. Спецификация многопроцессорных систем компании Intel. На основе вышеизложенного можно получить некоторое представление о многопроцессорных(МП) системах, в частности, о SMP-платформах. В качестве конкретного примера использования многопроцессорных систем рассмотрим их спецификацию, предложенную компанией Intel(MPS-MultiProcessor Specification V. 1. 1). Главная цель спецификации-определить стандартный интерфейс для многопроцессорных платформ, который позволит расширить область применения PC/AT-платформ по сравнению с традиционными платформами, в то же время сохраняя полную совместимость с PC/AT на уровне программ(термин "PC/AT-совместимость" используется, чтобы характеризовать компоненты, видимые(доступные)для программных средств). Сердцем спецификации являются структуры данных, определяющие конфигурацию МП-системы. Эти структуры данных создает ВIOS, в известном формате представляя аппаратные средства стандартным драйверам устройств или Уровню Изоляции Аппаратуры(HAL-Hardware Abstraction Layer)ОС. Спецификация определяет задаваемые по умолчанию конфигурации аппаратуры, и в целях большей гибкости определяет расширения для стандартного BIOS. В спецификации рассматриваются следующие вопросы: -создание на основе PC/AT-платформ многопроцессорных систем, которые могут исполнять существующие программы для однопроцессорных и многопроцессорных микроядерных ОС. -поддержка APIC(МП-контроллера прерываний)для обработки симметричного ввода-вывода. -возможность использовать BIOS с минимальной настройкой на конкретную МП-систему. -таблица факультативных МП-конфигураций с информацией о конфигурации. -включение ISA и других промышленных стандартов на шины, такие, как EISA, MCA, VL и PCI в МП-совместимые системы. -требования, обеспечивающие прозрачную(для программного обеспечения)реализацию вторичной шины кэша и памяти. Минимальный набор аппаратных средств, который необходим для реализации МП-спецификации, таков: -один или несколько процессоров, по набору команд совместимых с архитектурой семейств процессоров Intel 486 и Pentium; -один или несколько контроллеров APIC на процессорах Pentium 735/90 или 815/100; -прозрачные для программ подсистемы кэшей и лбщей памяти; -видимые для программ компоненты PC/AT-платформ. Документ также определяет свойства МП-систем, видимые для BIOS и ОС. Однако надо учитывать, что по мере развития технологии выполняемые BIOS функции могут изменяться. Общая структура МП-системы При построении многопроцессорной архитектуры может использоваться одна из нескольких концептуальных моделей соединения вычислительных элементов, а также множество схем взаимосвязи и вариантов реализации. На рисунке показана общая структура МП-системы, построенной на основе спецификации MPS 1. 1. В нее входит сильно связанная архитектура с общей памятью с распределенной обработкой данных и прерываний ввода-вывода. Она полностью симметрична; т. е. все процессоры функционально идентичны и имеют одинаковый статус, и каждый процессор может обмениваться с каждым другим процессором. Симметричность имеет два важных аспекта:симметричность памяти и ввода-вывода. Память симметрична, если все процессоры совместно используют общее пространство памяти и имеют в этом пространстве доступ с одними и теми же адресами. Симметричность памяти предполагает, что все процессоры могут исполнять единственную копию ОС. В таком случае любые существующие системы и прикладные программы будут работать одинаково, независимо от числа установленных в системе процессоров. Требование симметричности ввода-вывода выполняется, если все процессоры имеют возможность доступа к одним и тем же подсистемам ввода-вывода(включая порты и контроллеры прерывания), причем любой процессор может получить прерывание от любого источника. Некоторые МП-системы, имеющие симметричный доступ к памяти, в то же время являются асимметричными по отношению к прерываниям устройств ввода-вывода, поскольку выделяют один процессор для обработки прерываний. Симметричность ввода-вывода помогает убрать потенциально узкие места ввода-вывода и тем самым повысить расширяемость системы. Системы, удовлетворяющие МП-спецификации, обладают симметричностью памяти и ввода-вывода, что позволяет обеспечить расширяемость аппаратных средств, а также стандартизовать программные средства. Рис8. Архитектура МП-системы . 1. ЦП 2. Контроллер прерываний APIC 3. Контроллер шины памяти 4. Контроллеры кэша 5. Кэш-память 6. Высокопроизводительная шина 7. Шины коммуникаций контроллера прерываний 8. Модуль общей памяти 9. Буфер графических фреймов 10. Контроллер прерываний APIC 11. Интерфейс ввода-вывода 12. Шина расширения ввода-вывода памяти Основные компоненты МП-спецификация определяет системную архитектуру на основе следующих компонентов аппаратуры:системные процессоры, контроллеры APIC, системная память, шина расширения ввода-вывода. Системные процессоры. В целях обеспечения совместимости с существующими программными средствами для PC/AT, спецификация основывается на процессорах семейства Intel 486 или Pentium. Хотя все процессоры в МП-системе функционально идентичны, спецификация выделяет два их типа:загрузочный процессор(BSP) и прикладные процессоры(AP). Какой процессор играет роль загрузочного, определяется аппаратными средствами или совместно аппаратурой и BIOS. Это сделано для удобства и имеет значение только во время инициализации и выключения. BSP-процессор отвечает за инициализацию системы и за загрузку ОС. AP-процессор активизируется после загрузки ОС. Контроллеры APIC. Данные контроллеры обладают распределенной архитектурой, в которой функции управления прерываниями распределены между двумя функциональными блоками:локальным и ввода-вывода. Эти блоки обмениваются информацией через шину, называемую шиной коммуникаций контроллера прерываний(ICC-interrupt communication controller). В МП-системе множество локальных блоков и блоков ввода-вывода могут коллективно использовать одну запись, взаимодействуя через шину ICC. Блоки APIC совместно отвечают за доставку прерывания от источника прерываний до получателей по всей МП-системе. Блоки APIC дополнительно увеличивают расширяемость за счет разгрузки шины памяти от трафика прерываний, а также разделения между процессорами нагрузки по обработке прерываний. Благодаря распределенной архитектуре, локальные блоки или блоки ввода-вывода могут быть реализованы в отдельной микросхеме или интегрированы с другими компонентами системы. Системная память. В системах, совместимых с МП-спецификацией, используется архитектура памяти стандарта AT. Вся память используется как системная за исключением адресов, зарезервированных под устройства ввода-вывода и BIOS. МП-системы нуждаются в значительно более высокой пропускной способности по сравнению с однопроцессорными. Требования возрастают пропорционально числу процессоров на шине памяти. Поэтому спецификация содержит рекомендации использовать кэши второго уровня, призванные снизить трафик по шине и реализующие следующие функции:стратегия обновления с обратной записью и протокол определения согласованности кэшей. От кэшей второго уровня и контроллеров шины памяти требуется, чтобы они были полностью прозрачны для программных средств. Шина расширения ввода-вывода . Спецификация обесречивает построение МП-систем на основе платформ PC/AT, отвечающих промышленным стандартам. В проектах могут быть использованы стандартные шины ISA, EISA, MCA, VL и PCI. BIOS выполняет функции слоя, изолирующего особенности аппаратных средств от ОС и программных приложений. Стандартный однопроцессорный BIOS выполняет следующие функции:проверяет системные компоненты;строит таблицы конфигурации, используемые ОС;инициализирует процессор и всю остальную систему. В многопроцессорных системах BIOS дополнительно выполняет следующие функции:передает информацию о конфигурации в ОС, которая идентифицирует все процессоры и другие компоненты МП-систем;переводит все процессоры и другие компоненты многопроцессорной системы в заданное состояние. Одна из главных целей этой спецификации состоит в том, чтобы обеспечить возможность построения микроядерных ОС для многопроцессорных систем. Это достигается благодаря гибкому балансу между возможностями аппаратуры и BIOS. Посредством BIOS потенциально огромное разнообразие аппаратных конфигураций уменьшается всего до нескольких вариантов, которые могут быть обработаны на начальной загрузочной фазе работы ОС. Спецификация аппаратных средств. Для того, чтобы ОС могла работать на многопроцессорных платформах, аппаратные средства должны обладать определенным набором свойств. Их спецификация определяет способ реализации компонентов, перечисленных в предыдущем разделе. Соответствие спецификации подразумевает несколько аспектов, которые перечислены ниже. Конфигурация системной памяти. Спецификация МП-памяти основывается на стандартной карте памяти PC/AT размером до 4 Гбайт. Кэшируемость и доступность физической памяти для процессоров. Кэшируется вся память, за исключением области, отведенной для описания регистров локального блока APIC. Все процессоры имеют доступ к главной памяти и участкам памяти, отведенным под ROM BIOS. Требования к реализации внешних кэшей. Часто для улучшения рабочих характеристик в МП-системах приходится использовать внешние кэши. Наличие и детали реализации внешних кэшей в спецификации MPS не рассматриваются. Однако, если предполагается их использовать, они должны отвечать определенным требованиям: -внешние кэши должны поддерживать согласованность между собой, с главной памятью, внутренними кэшами и другими важными устройствами. -процессоры должны обмениваться между собой надежным образом, что означает невозможность взаимовлияния в тех случаях, когда сразу несколько процессоров получают доступ к одной области памяти. Внешние кэши должны гарантировать, что все блокированные операции видимы другим процессорам. Управление памятью(блокировка). Для защиты целостности некоторых критических операций с памятью Intel-совместимые процессоры используют специальный сигнал. Разработчики системных программных средств должны использовать этот сигнал для управления доступом процессоров к памяти. Для гарантии AT-совместимости блокировка некорректных операций с памятью в AT-совместимых шинах в согласованной системе должна реализовываться строго в соответствии со спецификациями на шины. Упорядочение записей в памяти. Применяется при управлении устройствами ввода-вывода, чтобы операции с памятью и вводом-выводом выполнялись строго в запрограммированном порядке. Строгое упорядочивание операций ввода-вывода поддерживается процессорами. Для оптимизации функционирования памяти процессоры и микропроцессорные наборы часто реализуют буферы записи и кэши обратной записи. Intel-совместимые процессоры гарантируют упорядоченный доступ процессоров ко всем внутренним кэшам и буферам записи. Управление прерываниями. В МП-совместимой системе прерывания управляются контроллерами APIC. Контроллеры APIC являются элементом распределенной аррхитектуры, в которой функции управления прерываниями распределены между двумя функциональными блоками. Эти блоки обмениваются информацией чере шину ICC. Устройство ввода-вывода определяет появление прерывания, адресует его локальному блоку и посылает по шине ICC. В МП-совместимой системе используется по одному локальному блоку на процессор. Число блоков ввода-вывода должно быть не менее одного. Чтобы обеспечить расширение функций и внесение изменений в будущем, архитектура APIC определяет только программный интерфейс блоков APIC. Разные версии протоколов APIC могут быть реализованы с разными протоколами шины и спецификациями электрических сигналов. Режимы прерывания. В спецификации определены три режима прерывания: 1. Режим PIC-эффективно обходит все компоненты APIC и заставляет систему функционировать в однопроцессорном режиме. 2 . Режим виртуальной линии-использует APIC как виртуальную линию, в остальном совпадает с режимом PIC. 3. Режим симметричного ввода-вывода-позволяет работать с многими процессорами. Первые два режима обеспечивают совместимость с PC/AT. В МП-совместимой системе должен быть реализован хотя бы один из этих режимов. ОС многопроцессорной системы загружается в одном из PC/AT-совместимых режимов. Затем ОС переключается в многопроцессорный режим. В этом режиме требуется функционирование хотя бы одного блока ввода-вывода APIC. Прерывания ввода-вывода генерируются контроллером блока ввода-вывода. Все линии прерывания или замаскированы, или работают вместе с блоком ввода-вывода в смешанном режиме. Блок ввода-вывода имеет вход прерываний общего назначения, который можно программировать индивидуально для различных режимов работы. Распределение линий прерывания ввода-вывода делается конкретно для каждой системы. Распределение системы прерываний на локальном блоке APIC. Данный блок имеет два входа прерываний общего назначения, зарезервированных для системных прерываний. Эти входы можно программировать индивидуально для различных режимов работы. Для обеспечения совместимости с PC/AT загрузочный процессор должен поддерживать DOS-совместимое исполнение операций с плавающей запятой при работе в каждом из PC/AT-совместимых режимов. Отображение памяти APIC. В согласованной МП-системе все контроллеры APIC должны быть реализованы как описанные в памяти устройства ввода-вывода. Базовые адреса APIC находятся в верхней части адресного пространства памяти. Все локальные блоки отображаются в одних и тех же адресах, которые не подлежат коллективному использованию, а используются каждым процессором индивидуально. Напротив, контроллеры ввода-вывода отображаются так, чтобы обеспечить их совместное использование всеми процессорами, т. е. полную симметричность доступа. Разработчики системы должны определить идентификацию локальных блоков и гарантировать уникальность их идентификаторов. Используются два пути задания идентификаторов:при помощи аппаратных средств и при помощи BIOS с поддержкой аппаратных средств. Таймеры интервалов. Локальные блоки содержат 32-битный программируемый таймер с 2мя независимыми входами. Таймеры блока ввода-вывода имеют один вход. Поддержка перезагрузки. Для приведения всех систем компьютера в начальное состояние требуется возможность перезагрузки системы. В системе может выполняться "жесткая" перезагрузка, которая устанавливает все компоненты системы в начальное состояние. "Жесткая" перезагрузка производится при включении питания или при нажатии кнопки RESET на передней панели. "Мягкая" загрузка только частично инициализирует процессор. При использовании такой перезагрузки не происходит потери обрабатываемой информации, т. е. система ожидает окончания выполнения цикла, а также не сбрасывает содержимое кэшей и регистров с плавающей запятой. Такой тип перезагрузки может выполняться на процессорах типа Pentium, но не Intel 486. "Мягкая" загрузка одного из процессоров-одна из основных функций в МП-системе, наряду с включением и выключением. С ее помощью BSP-контроллер может выборочно инициализировать AP-контроллер для последующего включения в работу или восстановления AP-контроллера после непоправимой системной ошибки. Такого рода перезагрузка должна инициализироваться программными средствами. Начальное состояние системы-это состояние до передачи управления от BIOS операционной системе. Таблицы конфигурации МП-систем. ОС должна иметь доступ к информации о конфигурации МП-системы. В спецификации предусмотрено два метода передачи этой информации в ОС:минимальный, позволяющий задать конфигурацию посредством выбора одного из нескольких подразумеваемых наборов значений параметров аппарратуры;и максимальный, обеспечивающий высокую гибкость при проектировании аппаратных средств благодаря возможности произвольных установок. Структура Указателя Переходов Структура указателя переходов. Эта структура содержит указатель физических адресов в таблице конфигурации и другие характеристики МП-системы. Таблица конфигурации МП-системы. Эта таблица не является обязательной. Она содержит точную информацию о контроллерах APIC, процессорах, шинах и прерываниях. Она содержит заголовок, за которым следует множество записей различных типов. Формат и длина каждой записи определяются ее типом. Если таблица конфигурации присутствует, она хранится или в системной части оперативной памяти, или в ROM BIOS. Первый байт каждой записи идентифицирует тип записи. Каждый тип записи имеет фиксированную длину. Описания типов записей: процессор, шина, блок ввода-вывода. Распределение прерываний ввода-вывода, распределение локальных прерываний. Спецификация по умолчанию определяет несколько конфигураций МП-систем. Цель этих установок в том, чтобы упростить проектирование BIOS. Если система соответствует одной из конфигураций, заданных по умолчанию, BIOS не должен обеспечивать таблица конфигурации МП-системы. ОС будет содержать такую таблицу внутри себя. Типы конфигураций системы, заданные по умолчанию, определяются байтом 1 информации о свойствах МП-системы, которая является частью Структуры Указателя Переходов. Чтобы система поддерживала конфигурацию, заданную по умолчанию, она должна поддерживать два процессора и отвечать еще ряду требований. Всего имеется 7 типов системы, задаваемых по умолчанию. В них задаются следующие поля:число процессоров, тип используемых в системе шин;тип контроллеро APIC; варианты;заложена схема МП-системы. Функции BIOS в МП-системе. В зависимости от многопроцессорных компонентов в МП-системе BIOS может иметь следующие дополнительные функции: 1. Перевод AP в "спящий" режим, так чтобы они не пытались исполнять те же коды BIOS, что и BSP. Это необходимо, поскольку коды BIOS обычно не предназначены для мультиобработки. 2. Инициализация контроллеров APIC и других МП-компонент. 3. Создание таблицы конфигурации МП-системы. Наличие такой спецификации позволит создавать рабочие станции высокого класса и серверы масштаба предприятия с хорошим отношением "цена/производительность" и с возможностью исполнения всех существующих программ для ПК, а также сформирует фундамент для программных пакетов для микроядерных ОС МП-систем. Заключение Описанные параллельные матричные, конвейерные и некоторые другие многопроцессорные системы обеспечивают огромный потенциальный рост производительности и вычислительной мощности. Действительно, любой граф, узлами которого являются отдельные процессоры, а дугами-непосредственные связи между ними, сейчас можно разместить в конкретной МП-системе. Кроме того, также упомянутые пирамидальные системы обладают сравнительно новой топологией, которая представляется особенно подходящей для обработки изображений, распознавания образов и машинного зрения. Это топология, при которой последовательно уменьшающиеся матрицы объединяются в единую пирамидальную структуру. Каждый слой пирамидальной системы может достигать такой же потенциально высокой производительности обработки, как и сопоставимые по размерам матричные процессоры, поскольку каждый ее слой в сущности и является матричным процессором. К тому же все слои пирамидальной системы могут работать одновременно. Важно и то, что внутренняя древовидная топология пирамиды определяет возможность накопления и объединения информации по мере поэтапного преобразования изображения. Матричные, конвейерные и в особенности пирамидальные структуры обеспечивают увеличение производительности и вычислительной мощности на несколько порядков по сравнению с традиционными ЭВМ с одним ЦП. Они особенно пригодны для обработки изображений, распознавания образов и в системах технического зрения. Они также хорошо соответствуют требованиям технологии СБИС благодаря своей регулярной микомодульной структуре. Касаясь открытых модульных информационно-измерительно-управляющих систем, скажем, что в начале 1994г. в США была образована Ассоциация пользователей, разработчиков и производителей аппаратуры РСИ. Появилось также понимание того, что РСИ обеспечит выполнение не только самых сложных расчетов в науке и высоких технологиях, но и позволит экономно и логически просто реализовать надежные информационные сети, в частности, сети в самообучающихся системах искусственного интеллекта. Хотя вариантов многопроцессорных ситем много, однако системы SMP в ближайшем будущем станут основными. Главным доводом, говорящим в пользу этого, является низкая стоимость аппаратного расширения. Потенциальные возможности SMP начинают находить применение. Во-первых, уменьшаются габариты платформы. Во-вторых, коммуникационные стандарты сделали доступными распределенные вычисления. Вычисления в архитектуре "клиент-сервер" непосредственно используют возможности связанных систем и разделяют рабочую нагрузку. В-третьих, независимое масштабирование архитектуры(т. е. без увеличения накладных расходов или необходимости переписывания приложений)является ключевым элементом поддержки как процесса-клиента, так и процесса-сервера. Все эти элементы хорошо поддерживаются системами SMP. Кроме того, сетевые операционные системы и прикладные программы для ПК получают возможность воспользоваться преимуществами аппаратного обеспечения для SMP. Компания Intel подготовила солидный плацдарм для этого, представив значительно обновленный контроллер прерываний APIC, а главное разработав спецификацию МП-архитектуры и добившись ее популярности у своих ведущих партнеров-производителей ПК-серверов. Словом, основные тенденции развития многопроцессорных систем медленно, но верно воплощаются в жизнь(режим on-line!). Литература. 1. Сверхбольшие интегральные схемы и современная обработка сигналов ;под ред. С. Гуна, Х. Уайтхауса, Т. Кайлата. - М:Радио и связь, 1989г. -471с. 2. К. Эрглис "Открытые модульные многопроцессорные информационно-измерительно-управляющие системы"// Открытые системы. -1995г. -№2. с. 57-61. 3. Е. Ленгрен "Сетевые ОС для SMP-платформ"// Открытые системы. -1995г. -№2. с. 16-19. 4. А. А. Мячев "Спецификация многопроцессорных систем компании Intel"//Открытые системы. -1995г. -№3. с. 56-63. 5. /Ассоциация пользователей ОС UNIX/ "Развитие архитектур баз данных"//Открытые системы. -1995г. -№2. с. 4-11. 6. Применение интегральных микросхем памяти ;под ред. А. Ю. Гордонов, А. А. Дерюгина. -М:Радио и связь, 1994г. -230с. |