Аппаратные средства вычислительной техники
Тема 1. Принципы построения и архитектура ЭВМ
Самостоятельная работа 1
Эволюция средств автоматизации вычислений
Попытки облегчить, а в идеале автоматизировать процесс вычислений имеют давнюю историю, насчитывающую более 5000 лет. С развитием науки и технологий средства автоматизации вычислений непрерывно совершенствовались. Современное состояние вычислительной техники (ВТ) являет собой результат многолетней эволюции.
По мнению специалистов в области теории эволюции компьютеров, изучение закономерностей развития вычислительных машин и систем может, как и в биологии, привести к ощутимым практическим результатам.
В традиционной трактовке эволюцию вычислительной техники представляют как последовательную смену поколений ВТ. Появление термина «поколение» относится к 1964 году, когда фирма IBM выпустила серию компьютеров IBM 360, назвав эту серию «компьютерами третьего поколения». Сам термин имеет разные определения, наиболее популярными из которых являются:
· «Поколения вычислительных машин — это сложившееся в последнее время
разбиение вычислительных машин на классы, определяемые элементной базой
и производительностью».
· «Поколения компьютеров — нестрогая классификация вычислительных систем
по степени развития аппаратных и, в последнее время, программных средств».
При описании эволюции ВТ обычно используют один из двух подходов: хронологический или технологический. В первом случае — это хронология событий, существенно повлиявших на становление ВТ. Для наших целей больший интерес представляет технологический подход, когда развитие вычислительной техники рассматривается в терминах архитектурных решений и технологий. По словам главного конструктора фирмы DEC и одного из изобретателей мини-ЭВМ Белла: — «История компьютерной индустрии почти всегда двигалась технологией».
В качестве узловых моментов, определяющих появление нового поколения ВТ, обычно выбираются революционные идеи или технологические прорывы, кардинально изменяющие дальнейшее развитие средств автоматизации вычислений. Одной из таких идей принято считать концепцию вычислительной машины с хранимой в памяти программой, сформулированную Джоном фон Нейманом. Взяв ее за точку отсчета, историю развития ВТ можно представить в виде трех этапов:
· донеймановского периода;
· эры вычислительных машин и систем с фон-неймановской архитектурой;
· постнеймановской эпохи — эпохи параллельных и распределенных вычислений, где наряду с традиционным подходом все большую роль начинают играть отличные от фон-неймановских принципы организации вычислительного процесса.
Значительно большее распространение, однако, получила привязка поколений к смене технологий. Принято говорить о «механической» эре (нулевое поколение) и последовавших за ней пяти поколениях ВС. Первые четыре поколения традиционно связывают с элементной базой вычислительных систем: электронные лампы, полупроводниковые приборы, интегральные схемы малой степени интеграции (ИМС), большие (БИС), сверхбольшие (СБИС) и ультрабольшие (УБИС) интегральные микросхемы. Пятое поколение в общепринятой интерпретации ассоциируют не столько с новой элементной базой, сколько с интеллектуальными возможностями ВС. Работы по созданию ВС пятого поколения велись в рамках четырех достаточно независимых программ, осуществлявшихся учеными США, Японии, стран Западной Европы и стран Совета экономической взаимопомощи.
Ввиду того, что ни одна из программ не привела к ожидаемым результатам, разговоры о ВС пятого поколения понемногу утихают. Трактовка пятого поколения явно выпадает из «технологического» принципа. С другой стороны, причисление всех ВС на базе сверхбольших интегральных схем (СБИС) к четвертому поколению не отражает принципиальных изменений в архитектуре ВС, произошедших за последние годы.
Нулевое поколение (1492-1945)
Для полноты картины упомянем два события, произошедшие до нашей эры: первые счеты — абак, изобретенные в древнем Вавилоне за 3000 лет до н. э., и их более «современный» вариант с косточками на проволоке, появившийся в Китае примерно за 500 лет также до н. э.
«Механическая» эра (нулевое поколение) в эволюции ВТ связана с механическими, а позже — электромеханическими вычислительными устройствами. Основным элементом механических устройств было зубчатое колесо. Начиная с XX века роль базового элемента переходит к электромеханическому реле. Не умаляя значения многих идей «механической» эры, необходимо отметить, что ни одно из созданных устройств нельзя с полным основанием назвать вычислительной машиной в современном ее понимании. Чтобы подчеркнуть это, вместо термина «вычислительная машина» будем использовать такие слова, как «вычислитель», «калькулятор» и т. п.
Первое поколение (1937-1953)
На роль первой в истории электронной вычислительной машины в разные периоды претендовало несколько разработок. Общим у них было использование схем на базе электронно-вакуумных ламп вместо электромеханических реле. Предполагалось, что электронные ключи будут значительно надежнее, поскольку в них отсутствуют движущиеся части, однако технология того времени была настолько несовершенной, что по надежности электронные лампы оказались ненамного лучше, чем реле. Однако у электронных компонентов имелось одно важное преимущество: выполненные на них ключи могли переключаться примерно в тысячу раз быстрее своих электромеханических аналогов.
Первой электронной вычислительной машиной чаще всего называют специализированный калькулятор ABC (Atanasoff-Berry Computer).
Вторым претендентом на первенство считается вычислитель Colossus, построенный в 1943 году в Англии в местечке Bletchley Park близ Кембриджа. В состав команды разработчиков входил Алан Тьюринг.
Наконец, третий кандидат на роль первой электронной ВМ — уже упоминавшийся программируемый электронный калькулятор общего назначения ENIAC (Electronic Numerical Integrator and Computer — электронный цифровой интегратор и вычислитель).
С самого начала ENIAC активно использовался в программе разработки водородной бомбы. Машина эксплуатировалась до 1955 года и применялась для генерирования случайных чисел, предсказания погоды и проектирования аэродинамических труб. ENIAC весил 30 тонн, содержал 18 000 радиоламп, имел размеры 2,5 х 30 м и обеспечивал выполнение 5000 сложений и 360 умножений в секунду. Использовалась десятичная система счисления. Программа задавалась схемой коммутации триггеров на 40 наборных полях. Когда все лампы работали, инженерный персонал мог настроить ENIAC на новую задачу, вручную изменив подключение 6000 проводов. При пробной эксплуатации выяснилось, что надежность машины чрезвычайно низка — поиск неисправностей занимал от нескольких часов до нескольких суток. По своей структуре ENIAC напоминал механические вычислительные машины. 10 триггеров соединялись в кольцо, образуя десятичный счетчик, который исполнял роль счетного колеса механической машины. Десять таких колец плюс
два триггера для представления знака числа представляли запоминающий регистр. Всего в ENIAC было 20 таких регистров. Система переноса десятков в накопителях была аналогична предварительному переносу в машине Бэббиджа.
При всей важности каждой из трех рассмотренных разработок основное событие, произошедшее в этот период, связано с именем Джона фон Неймана. Американский математик Джон фон Нейман (John von Neumann, 1903-1957) принял участие в проекте ENIAC в качестве консультанта. Еще до завершения ENIAC Эккерт, Мочли и фон Нейман приступили к новому проекту - EDVAC, главной особенностью которого стала идея хранимой в памяти программы.
Технология программирования в рассматриваемый период была еще на зачаточном уровне. Первые программы составлялись в машинных кодах — числах, непосредственно записываемых в память ВМ. Лишь в 50-х годах началось использование языка ассемблера, позволявшего вместо числовой записи команд использовать символьную их нотацию, после чего специальной программой, также называемой ассемблером, эти символьные обозначения транслировались в соответствующие коды.
Несмотря на свою примитивность, машины первого поколения оказались весьма полезными для инженерных целей и в прикладных науках. Так, Атанасофф подсчитал, что решение системы из восьми уравнений с восемью переменными с помощью популярного тогда электромеханического калькулятора Маршана заняло бы восемь часов. В случае же 29 уравнений с 29 переменными, с которыми калькулятор ABC справлялся менее чем за час, устройство с калькулятором Маршана затратило бы 381 час. С первой задачей в рамках проекта водородной бомбы ENIAC справился за 20 с, в противовес 40 часам, которые понадобились бы при использовании механических калькуляторов.
В 1947 году под руководством С. А. Лебедева начаты работы по созданию малой электронной счетной машины (МЭСМ). Эта ВМ была запущена в эксплуатацию в 1951 году и стала первой электронной ВМ в СССЗ и континентальной Европе.
В 1952 году Эккерт и Мочли создали первую коммерчески успешную машину UNIVAC. Именно с помощью этой ВМ было предсказано, что Эйзенхауэр в результате президентских выборов победит Стивенсона с разрывом в 438 голосов (фактический разрыв составил 442 голоса).
Также в 1952 году в опытную эксплуатацию была запущена вычислительная машина М-1 (И. С. Брук, Н. Я. Матюхин, А. Б. Залкинд). М-1 содержала 730 электронных ламп, оперативную память емкостью 256 25-разрядных слов, рулонный телетайп и обладала производительностью 15-20 операций/с. Впервые была применена двухадресная система команд. Чуть позже группой выпускников МЭИ под Руководством И. С. Брука создана машина М-2 с емкостью оперативной памяти 512 34-разрядных слов и быстродействием 2000 операций/с.
В апреле 1953 года в эксплуатацию поступила самая быстродействующая в Европе ВМ БЭСМ (С. А. Лебедев). Ее быстродействие составило 8000-10 000 операций/с. Примерно в то же время выпущена ламповая ВМ «Стрела» (Ю. А. Базилевский, Б. И. Рамееев) с быстродействием 2000 операций/с.
Второе поколение (1954-1962)
Второе поколение характеризуется рядом достижений в элементной базе, структуре и программном обеспечении. Принято считать, что поводом для выделения нового поколения ВМ стали технологические изменения, и, главным образом, переход от электронных ламп к полупроводниковым диодам и транзисторам со временем переключения порядка 0,3 мс.
Первой ВМ, выполненной полностью на полупроводниковых диодах и транзисторах, стала TRADIC (TRAnisitor Digital Computer), построенная в Bell Labs no заказу военно-воздушных сил США как прототип бортовой ВМ. Машина состояла из 700 транзисторов и 10 000 германиевых диодов. За два года эксплуатации TRADIC отказали только 17 полупроводниковых элементов, что говорит о прорыве в области надежности, по сравнению с машинами на электронных лампах. Другой достойной упоминания полностью полупроводниковой ВМ стала ТХ-0, созданная в 1957 году в Массачусетсском технологическом институте.
Заметным событием данного периода стало появление в 1958 году машины М-20. В этой ВМ, в частности, были реализованы: частичное совмещение операций, аппаратные средства поддержки программных циклов, возможность параллельной работы процессора и устройства вывода. Оперативная память емкостью 4096 45-разрядных слов была выполнена на магнитных сердечниках.
Шестидесятые годы XX века стали периодом бурного развития вычислительной техники в СССР. За этот период разработаны и запущены в производство вычислительные машины «Урал-1», «Урал-4», «Урал-11», «Урал-14», БЭСМ-2, М-40, «Минск-1», «Минск-2», «Минск-22», «Минск-32». В I960 году под руководством В. М. Глушкова и Б. Н. Малиновского разработана первая полупроводниковая управляющая машина «Днепр».
Наконец, нельзя не отметить значительные события в сфере программного обеспечения, а именно создание языков программирования высокого уровня: Фортрана (1956), Алгола (1958) и Кобола (1959).
Третье поколение (1963-1972)
Третье поколение ознаменовалось резким увеличением вычислительной мощности ВМ, ставшим следствием больших успехов в области архитектуры, технологии и программного обеспечения. Основные технологические достижения связаны с переходом от дискретных полупроводниковых элементов к интегральным микросхемам и началом применения полупроводниковых запоминающих устройств, начинающих вытеснять ЗУ на магнитных сердечниках. Существенные изменения произошли и в архитектуре ВМ. Это, прежде всего, микропрограммирование как эффективная техника построения устройств управления сложных процессоров, а также наступление эры конвейеризации и параллельной обработки. В области программного обеспечения определяющими вехами стали первые операционные системы и реализация режима разделения времени.
В первых ВМ третьего поколения использовались интегральные схемы с малой степенью интеграции (small-scale integrated circuits, SSI), где на одном кристалле размещается порядка 10 транзисторов. Ближе к концу рассматриваемого периода на смену SSI стали приходить интегральные схемы средней степени интеграции (medium-scale integrated circuits, MSI), в которых число транзисторов на кристалле увеличилось на порядок. К этому же времени относится повсеместное многослойных печатных плат. Все шире востребуются преимущества параллельной обработки, реализуемые за счет множественных функциональных блоков, совмещения во времени работы центрального процессора и операций ввода-вывода, конвейеризации потоков команд и данных.
В 1964 году Сеймур Крей (Seymour Cray, 1925-1996) построил вычислительную систему CDC 6600, в архитектуру которой впервые был заложен функциональный параллелизм. Благодаря наличию 10 независимых функциональных блоков, способных работать параллельно, и 32 независимых модулей памяти удалось достичь быстродействия в 1 MFLOPS (миллион операций с плавающей запятой в секунду). Пятью годами позже Крей создал CDC 7600 с конвейеризированными функциональными блоками и быстродействием 10 MFLOPS. CDC 7600 называют первой конвейерной вычислительной системой (конвейерным процессором). Революционной вехой в истории ВТ стало создание семейства вычислительных машин IBM 360, архитектура и программное обеспечение которых на долгие годы служили эталоном для последующих больших универсальных ВМ (mainframes). В машинах этого семейства нашли воплощение многие новые для того периода идеи, в частности: предварительная выборка команд, отдельные блоки для операций с фиксированной и плавающей запятой, конвейеризация команд, кэш-память. К третьему поколению ВС относятся также первые параллельные вычислительные системы: SOLOMON корпорации Westinghause и ILLIAC IV — совместная разработка Иллинойского университета и компании Burroughs. Третье поколение ВТ ознаменовалось также появлением первых конвейерно-векторных ВС: TI-ASC (Texas Instruments Advanced Scientific Computer) и STAR-100 фирмы СВС.
Среди вычислительных машин, разработанных в этот период в СССР, прежде всего необходимо отметить «быстродействующую электронно-счетную машину» -БЭСМ-6 (С. А. Лебедев) с производительностью 1 млн операций/с. Продолжени- ем линии М-20 стали М-220 и М-222 с производительностью до 200 000 опера- ций/с. Оригинальная ВМ для инженерных расчетов «Мир-1» была создана под руководством В. М. Глушкова. В качестве входного языка этой ВМ использован. язык программирования высокого уровня «Аналитик», во многом напоминающий язык Алгол.
В сфере программного обеспечения необходимо отметить создание в 1970 году Кеном Томпсоном (Kenneth Thompson) из Bell Labs языка В, прямого предшественника популярного языка программирования С, и появление ранней версии операционной системы UNIX.
Четвертое поколение (1972-1984)
Отсчет четвертого поколения обычно ведут с перехода на интегральные микросхемы большой (large-scale integration, LSI) и сверхбольшой (very large-scale integration, VLSI) степени интеграции. К первым относят схемы, содержащие около 1000 транзисторов на кристалле, в то время как число транзисторов на одном кристалле VLSI имеет порядок 100 000. При таких уровнях интеграции стало возможным уместить в одну микросхему не только центральный процессор, но и вычислительную машину (ЦП, основную память и систему ввода/вывода).
Конец 70-х и начало 80-х годов — это время становления и последующего победного шествия микропроцессоров и микроЭВМ, что, однако, не снижает важности изменений, произошедших в архитектуре других типов вычислительных машин и систем.
Одним из наиболее значимых событий в области архитектуры ВМ стала идея вычислительной машины с сокращенным набором команд (RISC, Redused Instruction Set Computer), выдвинутая в 1975 году и впервые реализованная в 1980 году. В упрощенном изложении суть концепция RISC заключается в сведении набора команд ВМ к наиболее употребительным простейшим командам. Это позволяет упростить схемотехнику процессора и добиться резкого сокращения времени выполнения каждой из «простых» команд. Более сложные команды реализуются как подпрограммы, составленные из быстрых «простых» команд.
В ВМ и ВС четвертого поколения практически уходят со сцены ЗУ на магнитных сердечниках и основная память строится из полупроводниковых запоминающих устройств (ЗУ). До этого использование полупроводниковых ЗУ ограничивалось лишь регистрами и кэш-памятью.
В сфере высокопроизводительных вычислений доминируют векторные вычислительные системы, более известные как суперЭВМ. Разрабатываются новые параллельные архитектуры, однако подобные работы пока еще носят экспериментальный характер. На замену большим ВМ, работающим в режиме разделения времени, приходят индивидуальные микроЭВМ и рабочие станции (этим термином обозначают сетевой компьютер, использующий ресурсы сервера).
В области программного обеспечения выделим появление языков программирования сверхвысокого уровня, таких как FP (functional programming — функциональное программирование) и Пролог (Prolog, programming in logic). Эти языки ориентированы на декларативный стиль программирования, в отличие от Паскаля, С, Фортрана и т. д. — языков императивного стиля программирования. При декларативном стиле программист дает математическое описание того, что должно быть вычислено, а детали того, каким образом это должно быть сделано, возлагаются на компилятор и операционную систему. Такие языки пока используются недостаточно широко, но выглядят многообещающими для ВС с массовым параллелизмом, состоящими из более чем 1000 процессоров. В компиляторах для ВС четвертого поколения начинают применяться сложные методы оптимизации кода.
Два события в области программного обеспечения связаны с Кеном Томпсоном (Kenneth Thompson) и Деннисом Ритчи (Dennis Ritchie) из Bell Labs. Это создание языка программирования С и его использование при написании операционной системы UNIX для машины DEC PDP-11. Такая форма написания операционной системы позволила быстро распространить UNIX на многие ВМ.
Пятое поколение (1984-1990)
Главным поводом для выделения вычислительных систем второй половины 80-х годов в самостоятельное поколение стало стремительное развитие ВС с сотнями процессоров, ставшее побудительным мотивом для прогресса в области параллельных вычислений. Ранее параллелизм вычислений выражался лишь в виде конвейеризации, векторной обработки и распределения работы между небольшим числом процессоров. Вычислительные системы пятого поколения обеспечивают такое распределение задач по множеству процессоров, при котором каждый из процессоров может выполнять задачу отдельного пользователя.
В рамках пятого поколения в архитектуре вычислительных систем сформировались два принципиально различных подхода: архитектура с совместно используемой памятью и архитектура с распределенной памятью.
Характерным примером первого подхода может служить система Sequent Balance 8000, в которой имеется большая основная память, разделяемая 20 процессорами. Помимо этого, каждый процессор оснащен собственной кэш-памятью. Каждый из процессоров может выполнять задачу своего пользователя, но при этом в составе программного обеспечения имеется библиотека подпрограмм, позволяющая программисту привлекать для решения своей задачи более одного процессора. Система широко использовалась для исследования параллельных алгоритмов и техники программирования.
Второе направление развития систем пятого поколения — системы с распределенной памятью, где каждый процессор обладает своим модулем памяти, а связь между процессорами обеспечивается сетью взаимосвязей. Примером такой ВС может служить система iPSC-1 фирмы Intel, более известная как «гиперкуб». Максимальный вариант системы включал 128 процессоров. Применение распределенной памяти позволило устранить ограничения в пропускной способности тракта «процессор-память», но потенциальным «узким местом» здесь становится сеть взаимосвязей.
Наконец, третье направление в архитектуре вычислительных систем пятого поколения — это ВС, в которых несколько тысяч достаточно простых процессоров работают под управлением единого устройства управления и одновременно производят одну и ту же операцию, но каждый над своими данными. К этому классу можно отнести Connection Machine фирмы Thinking Machines Inc. и МР-1 фирмы MasPar Inc.
В научных вычислениях по-прежнему ведущую роль играют векторные суперЭВМ. Многие производители предлагают более эффективные варианты с несколькими векторными процессорами, но число таких процессоров обычно невелико (от 2 до 8).
RISC-архитектура выходит из стадии экспериментов и становится базовой архитектурой для рабочих станций (workstations).
Знаковой приметой рассматриваемого периода стало стремительное развитие технологий глобальных и локальных компьютерных сетей. Это стимулировало изменения в технологии работы индивидуальных пользователей. В противовес мощным универсальным ВС, работающим в режиме разделения времени, пользователи все более отдают предпочтение подключенным к сети индивидуальным рабочим станциям. Такой подход позволяет для решения небольших задач задействовать индивидуальную машину, а при необходимости в большой вычислительной мощности обратиться к ресурсам подсоединенных к той же сети мощных файл-серверов или суперЭВМ.
Шестое поколение (1990-)
На ранних стадиях эволюции вычислительных средств смена поколений ассоциировалась с революционными технологическими прорывами. Каждое из первых четырех поколений имело четко выраженные отличительные признаки и вполне определенные хронологические рамки. Последующее деление на поколения уже не столь очевидно и может быть понятно лишь при ретроспективном взгляде на развитие вычислительной техники. Пятое и шестое поколения в эволюции ВТ -это отражение нового качества, возникшего в результате последовательного накопления частных достижений, главным образом в архитектуре вычислительных систем и, в несколько меньшей мере, в сфере технологий.
Поводом для начала отсчета нового поколения стали значительные успехи в области параллельных вычислений, связанные с широким распространением вычислительных систем с массовым параллелизмом. Особенности организации таких систем, обозначаемых аббревиатурой МРР (massively parallel processing), будут рассмотрены в последующих разделах. Здесь же упрощенно определим их как совокупность большого количества (до нескольких тысяч) взаимодействующих, но достаточно автономных вычислительных машин. По вычислительной мощности такие системы уже успешно конкурируют с суперЭВМ, которые, как ранее отмечалось, по своей сути являются векторными ВС. Появление вычислительных систем с массовым параллелизмом дало основание говорить о производительности, измеряемой в TFLOPS (1 TFLOPS соответствует 1012 операциям с плавающей запятой в секунду).
Вторая характерная черта шестого поколения — резко возросший уровень рабочих станций. В процессорах новых рабочих станций успешно совмещаются RISC-архитектура, конвейеризация и параллельная обработка. Некоторые рабочие станции по производительности сопоставимы с суперЭВМ четвертого поколения. Впечатляющие характеристики рабочих станций породили интерес к гетерогенным (неоднородным) вычислениям, когда программа, запущенная на одной рабочей станции, может найти в локальной сети не занятые в данный момент другие станции, после чего вычисления распараллеливаются и на эти простаивающие станции.
Наконец, третьей приметой шестого поколения в эволюции ВТ стал взрывной рост глобальных сетей. Этот момент, однако, выходит за рамки данной книги, поэтому далее комментироваться не будет.
Завершая обсуждение эволюции ВТ, отметим, что верхняя граница шестого поколения хронологически пока не определена и дальнейшее развитие вычислительной техники может внести в его характеристику новые коррективы. Не исключено также, что последующие события дадут повод говорить и об очередном поколении.