Главная Случайная страница


Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






Глава 8. «Эпоха кластеров» заканчивается.

8.1. Магистраль обмена данными с процессором: шина или сеть?

8.2. Кризис фоннеймановской модели вычислительных приложений.

Глава 9. Проблемы объединения магистралей PCI Express.

9.1. PCI Express на логическом уровне.

9.2. Несколько слов о реализации.

9.3. Недостающие компоненты.

9.4. Эскиз базового программного обеспечения.

Глава 10. Альтернативные архитектуры вычислителя.

10.1. Универсальные не фоннеймановские архитектуры.

10.1.1. Векторный процессор.

10.1.2. Процессор IBM Cell.

10.1.3. Мультитредовая архитектура.

10.2. Проблемно – ориентированные вычислители.

Глава 11. Как создаются цифровые электронные устройства.

Глава 12. Технологии программируемой логики сегодня.

Глава 13. Проблемы реализации реконфигурируемого сопроцессора.

13.1. Проблемы физической реализации и смежные вопросы.

13.2. Проблемы логического проектирования.

Глава 14. Языки программирования, транслируемые в схему.

14.1. Handel-C.

14.2. Mitrion-C.

Заключение.

Предметный указатель.

Литература.

Приложение 1. Параллельная реализация метода верхней релаксации с использованием MPI.

Приложение 2. Некоторые примеры реально используемых при логическом проектировании комбинационных схем.

Приложение 3. Основные понятия программистской модели VHDL.

Приложение 4. Краткий обзор возможностей САПР XPS.

Предисловие.

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

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

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

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

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

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

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

И каждый раз таких специалистов находишь все с большим трудом. А то и не находишь вовсе. Поскольку их уже нет с нами.

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

Он разбирал и собирал все, что могут сделать человеческие руки и придумать человеческая голова. Он всегда искренне недоумевал и огорчался, видя, как мы, тогда еще молодые системные программисты, не понимали аппаратуру. А зачастую, просто боялись ее. Лично меня он в свое время буквально заставил изучить основы логической схемотехники, освоить на практике азы наладки и диагностики. В работе системного программиста, имеющего дело с опытными образцами новой техники, эти знания и навыки за многие годы работы в ИПМ выручали меня не раз и не два. До дня, когда я, спустя долгие 20 лет, сел за консоль схемотехнической САПР, чтобы впервые самому «нарисовать» макет векторного вычислителя, Всеволод Серафимович не дожил двух недель.

 

Ему, и всем тем, кто не только «разбирался» –

 

Уникальному профессионалу, давшему старт одному из первых суперкомпьютерных проектов России, первому Главному инженеру ИПМ им. М. В. Келдыша Анатолию Николаевичу Мямлину;

Первому программисту в истории СССР Любови Борисовне Морозовой, проработавшей в ИПМ много лет;

Моему коллеге по работе в ИПМ Андрею Борисовичу Ходулеву.

А также другим замечательным сотрудникам ИПМ, многих из которых, увы, тоже уже нет с нами –

посвящается эта книга.

 

Введение.

Что такое параллельная обработка данных? Попытка задуматься над этим, казалось бы, довольно отвлеченным вопросом поможет нам сделать некоторые вполне практические выводы – например, построить план этой книги. Вопрос же сам по себе вовсе не так прост, как кажется.

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

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

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

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

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

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

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

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

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

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

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

В своем развитии параллельные суперкомпьютеры прошли два четко различимых этапа.

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

Этап этот был длительным и в настоящее время завершается.

Завершение первого и переход ко второму этапу обусловлено теми же причинами, что и наметившийся в последние 2–3 года переход к технологиям параллельной обработки данных в классе компьютеров массового выпуска. Предел числа элементов, пригодного для «упаковки» в фоннеймановскую архитектуру, сегодня уже далеко перекрыт не только в рамках вычислительной системы в целом, но и в рамках отдельного микропроцессора. Для превращения этого невообразимого количества элементов в реально достижимое вычислительное быстродействие уже не достаточно архитектуры из так или иначе взаимодействующих фоннеймановских узлов. Надо менять «конструкцию» самого узла.

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

В первой части, озаглавленной «Освоенные технологии», мы изложим предмет так, как его надо было рассказывать, скажем, 2–3 года назад. И сделаем это, не забывая о линейном, количественном развитии, имевшем место за эти 2–3 года в рамках традиционных подходов. В начале рассказа об уже освоенных технологиях высокопроизводительных вычислений некоторое внимание придется уделить сжатому обзору основ архитектуры ЭВМ и операционных систем. Опыт показывает, что у значительной части читателей знание этих основ имеет слишком общий характер, не позволяющий проследить конкретную логику изложения некоторых вопросов организации высокопроизводительных вычислений.

Во второй части, озаглавленной «Новые технологии», расскажем о принципиально новых технологиях, методах и подходах.

Цель такого разделения – не только естественное желание автора «подстраховаться». Поскольку стремительность развития отрасли может буквально завтра сделать нынешние суждения автора неверными. Гораздо важнее то, что вторая часть подразумевает рассмотрение предмета в терминах, обычно не используемых в программистской литературе. Это само по себе тяжело для читателей, и «размазывать» эти термины по всему тексту не хотелось бы. Именно поэтому достаточно сложный и непривычный материал второй части гораздо легче излагать, опираясь на уже законченное рассмотрение освоенных на сегодня технологий.

Небольшое замечание о списке литературы, использованной при подготовке этой книги. Около двух третей этого списка составляют ссылки на сетевые ресурсы, и в сегодняшних условиях это вряд ли могло бы быть иначе. К сожалению, сетевые ресурсы иногда исчезают или меняют адрес. К большинству использованных в этой книге ссылок это, скорее всего, не относится – вряд ли порталу www.ibm.com, например, грозит изменение названия в ближайшем будущем. Тем не менее, хотелось бы напомнить читателям, что основной метод поиска дополнительной информации на сегодня – это поиск, в первую очередь – в англоязычном сегменте Интернет, по ключевым словам. Включенную в список литературы ссылку на сайт, который к моменту чтения этой книги перестал существовать, следует понимать как указание, что данную информацию следует искать (и легко найти) в Интернет. Это касается обеих частей книги.

 

Часть 1. Освоенные технологии.

Последнее изменение этой страницы: 2016-07-23

lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда...